pax_global_header00006660000000000000000000000064131510055400014504gustar00rootroot0000000000000052 comment=42e1abfa34057afbdac7c30120001e077876d10f libengine-gost-openssl1.1-1.1.0.1/000077500000000000000000000000001315100554000164515ustar00rootroot00000000000000libengine-gost-openssl1.1-1.1.0.1/CMakeLists.txt000066400000000000000000000062651315100554000212220ustar00rootroot00000000000000cmake_minimum_required(VERSION 2.8) project(ccgost C) if (CMAKE_C_COMPILER_ID MATCHES "Clang") message(STATUS "Using Clang and adding -Qunused-arguments flag") set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Qunused-arguments") endif() set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c98 -O3 -Werror -Qunused-arguments -Wno-unused-function -Wno-missing-braces -Wall") set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -O2 -Werror -Wall -Wno-unused-parameter -Wno-unused-function -Wno-missing-braces -ggdb") include (TestBigEndian) TEST_BIG_ENDIAN(IS_BIG_ENDIAN) if(IS_BIG_ENDIAN) message(STATUS "BIG_ENDIAN") else() message(STATUS "LITTLE_ENDIAN") set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c98 -O3 -Werror -Wall") set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -DL_ENDIAN") endif() set(BIN_DIRECTORY bin) set(OUTPUT_DIRECTORY ${CMAKE_SOURCE_DIR}/${BIN_DIRECTORY}) #set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${OUTPUT_DIRECTORY}) set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${OUTPUT_DIRECTORY}) set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${OUTPUT_DIRECTORY}) set(GOST_89_SOURCE_FILES gost89.c gost89.h ) set(GOST_HASH_SOURCE_FILES gosthash.c gosthash.h ) set(GOST_HASH_2012_SOURCE_FILES gosthash2012.c gosthash2012.h gosthash2012_const.h gosthash2012_precalc.h gosthash2012_ref.h gosthash2012_sse2.h ) set(GOST_GRASSHOPPER_SOURCE_FILES gost_grasshopper.h gost_grasshopper_core.h gost_grasshopper_core.c gost_grasshopper_defines.h gost_grasshopper_defines.c gost_grasshopper_math.h gost_grasshopper_galois_precompiled.c gost_grasshopper_precompiled.c gost_grasshopper_cipher.h gost_grasshopper_cipher.c gost_grasshopper_mac.h gost_grasshopper_mac.c ) set(GOST_CORE_SOURCE_FILES e_gost_err.c e_gost_err.h gost_asn1.c gost_crypt.c gost_ctl.c gost_eng.c gost_keywrap.c gost_keywrap.h gost_lcl.h gost_params.c ) set(GOST_EC_SOURCE_FILES gost_ec_keyx.c gost_ec_sign.c ) set(GOST_LIB_SOURCE_FILES ${GOST_EC_SOURCE_FILES} ${GOST_89_SOURCE_FILES} ${GOST_HASH_SOURCE_FILES} ${GOST_GRASSHOPPER_SOURCE_FILES} ${GOST_HASH_2012_SOURCE_FILES}) set(GOST_ENGINE_SOURCE_FILES ${GOST_CORE_SOURCE_FILES} gost_ameth.c gost_md.c gost_md2012.c gost_pmeth.c) add_library(gost STATIC ${GOST_LIB_SOURCE_FILES}) set_target_properties(gost PROPERTIES POSITION_INDEPENDENT_CODE ON) add_library(gost_engine MODULE ${GOST_ENGINE_SOURCE_FILES}) set_target_properties(gost_engine PROPERTIES PREFIX "" OUTPUT_NAME "gost") target_link_libraries(gost_engine crypto gost) set(GOST_12_SUM_SOURCE_FILES gost12sum.c ) add_executable(gost12sum ${GOST_12_SUM_SOURCE_FILES}) target_link_libraries(gost12sum gost) set(GOST_SUM_SOURCE_FILES gostsum.c ) add_executable(gostsum ${GOST_SUM_SOURCE_FILES}) target_link_libraries(gostsum gost) set(GOST_SUM_12_SOURCE_FILES gostsum12.c ) #add_executable(gostsum12 ${GOST_SUM_12_SOURCE_FILES}) # #target_link_libraries(gostsum12 gost) libengine-gost-openssl1.1-1.1.0.1/CMake_ReadMe.md000066400000000000000000000010051315100554000211640ustar00rootroot00000000000000## CMake Config Configuring with `cmake` is can very simply be done like this: ~~~ bash cmake . ~~~ If you want to build against a specific OpenSSL installation (if you have more than one, or your own private install, or...), you can use the `cmake` variable `CMAKE_C_FLAGS`: ~~~ bash cmake -DCMAKE_C_FLAGS='-I/PATH/TO/OPENSSL/include -L/PATH/TO/OPENSSL/lib' . ~~~ Build example: ~~~ bash mkdir build cd build cmake -DCMAKE_C_FLAGS='-I/PATH/TO/OPENSSL/include -L/PATH/TO/OPENSSL/lib' .. make -j 8 cd ../bin ~~~ libengine-gost-openssl1.1-1.1.0.1/README.gost000066400000000000000000000307501315100554000203110ustar00rootroot00000000000000GOST ENGINE This engine provides implementation of Russian cryptography standard. This is also an example of adding new cryptoalgorithms into OpenSSL without changing its core. If OpenSSL is compiled with dynamic engine support, new algorithms can be added even without recompilation of OpenSSL and applications which use it. ALGORITHMS SUPPORTED GOST R 34.10-2001 and GOST R 34.10-2012 - digital signature algorithms. Also support key exchange based on public keys. See RFC 4357 for details of VKO key exchange algorithm. These algorithms use 256 bit private keys. Public keys are 1024 bit for 94 and 512 bit for 2001 (which is elliptic-curve based). Key exchange algorithms (VKO R 34.10) are supported on these keys too. GOST R 34.11-2012 Message digest algorithm. 256- and 512-bit hash values. GOST 28147-89 - Symmetric cipher with 256-bit key. Various modes are defined in the standard, but only CFB and CNT modes are implemented in the engine. To make statistical analysis more difficult, key meshing is supported (see RFC 4357). GOST 28147-89 MAC mode. Message authentication code. While most MAC algorithms out there are based on hash functions using HMAC algorithm, this algoritm is based on symmetric cipher. It has 256-bit symmetric key and only 32 bits of MAC value (while HMAC has same key size and value size). Really, this algorithm supports from 8 to 64 bits of the MAC value It is implemented as combination of EVP_PKEY type and EVP_MD type. GOST R 34.13–2015 - Symmetric cypher Grasshopper ("Kuznechik") USAGE OF THESE ALGORITHMS This engine is designed to allow usage of this algorithms in the high-level openssl functions, such as PKI, S/MIME and TLS. See RFC 4490 for S/MIME with GOST algorithms and RFC 4491 for PKI. TLS support is implemented according IETF draft-chudov-cryptopro-cptls-03.txt and is compatible with CryptoPro CSP 3.0 and 3.6 as well as with MagPro CSP. GOST ciphersuites implemented in CryptoPro CSP 2.0 are not supported because they use ciphersuite numbers used now by AES ciphersuites. To use the engine you have to load it via openssl configuration file. Applications should read openssl configuration file or provide their own means to load engines. Also, applications which operate with private keys, should use generic EVP_PKEY API instead of using RSA or other algorithm-specific API. CONFIGURATION FILE Configuration file should include following statement in the global section, i.e. before first bracketed section header (see config(5) for details) openssl_conf = openssl_def where openssl_def is name of the section in configuration file which describes global defaults. This section should contain following statement: [openssl_def] engines = engine_section which points to the section which describes list of the engines to be loaded. This section should contain: [engine_section] gost = gost_section And section which describes configuration of the engine should contain [gost_section] engine_id = gost dynamic_path = /usr/lib/ssl/engines/libgost.so default_algorithms = ALL CRYPT_PARAMS = id-Gost28147-89-CryptoPro-A-ParamSet Where engine_id parameter specifies name of engine (should be "gost"). dynamic_path is a location of the loadable shared library implementing the engine. If the engine is compiled statically or is located in the OpenSSL engines directory, this line can be omitted. default_algorithms parameter specifies that all algorithms, provided by engine, should be used. The CRYPT_PARAMS parameter is engine-specific. It allows the user to choose between different parameter sets of symmetric cipher algorithm. RFC 4357 specifies several parameters for the GOST 28147-89 algorithm, but OpenSSL doesn't provide user interface to choose one when encrypting. So use engine configuration parameter instead. Value of this parameter can be either short name, defined in OpenSSL obj_dat.h header file or numeric representation of OID, defined in RFC 4357. USAGE WITH COMMAND LINE openssl UTILITY 1. Generation of private key openssl genpkey -algorithm gost2001 -pkeyopt paramset:A -out seckey.pem Use -algorithm option to specify algorithm. Use -pkeyopt option to pass paramset to algorithm. The following paramsets are supported by gost94: 0,A,B,C,D,XA,XB,XC gost2001: 0,A,B,C,XA,XB You can also use numeric representation of OID as to destinate paramset. Paramsets starting with X are intended to use for key exchange keys. Paramsets without X are for digital signature keys. Paramset for both algorithms 0 is the test paramset which should be used only for test purposes. There are no algorithm-specific things with generation of certificate request once you have a private key. 2. Generation of certificate request along with private/public keypar openssl req -newkey gost2001 -pkeyopt paramset:A Syntax of -pkeyopt parameter is identical with genpkey command. You can also use oldstyle syntax -newkey gost2001:paramfile, but in this case you should create parameter file first. It can be created with openssl genpkey -genparam -algorithm gost2001 -pkeyopt paramset:A\ -out paramfile. 3. S/MIME operations If you want to send encrypted mail using GOST algorithms, don't forget to specify -gost89 as encryption algorithm for OpenSSL smime command. While OpenSSL is clever enough to find out that GOST R 34.11-94 digest must be used for digital signing with GOST private key, it have no way to derive symmetric encryption algorithm from key exchange keys. 4. TLS operations OpenSSL supports all four ciphersuites defined in the IETF draft. Once you've loaded GOST key and certificate into your TLS server, ciphersuites which use GOST 28147-89 encryption are enabled. Ciphersuites with NULL encryption should be enabled explicitely if needed. GOST2001-GOST89-GOST89 Uses GOST R 34.10-2001 for auth and key exchange GOST 28147-89 for encryption and GOST 28147-89 MAC GOST94-GOST89-GOST89 Uses GOST R 34.10-94 for auth and key exchange GOST 28147-89 for encryption and GOST 28147-89 MAC GOST2001-NULL-GOST94 Uses GOST R 34.10-2001 for auth and key exchange, no encryption and HMAC, based on GOST R 34.11-94 GOST94-NULL-GOST94 Uses GOST R 34.10-94 for auth and key exchange, no encryption and HMAC, based on GOST R 34.11-94 Gost 94 and gost 2001 keys can be used simultaneously in the TLS server. RSA, DSA and EC keys can be used simultaneously with GOST keys, if server implementation supports loading more than two private key/certificate pairs. In this case ciphersuites which use any of loaded keys would be supported and clients can negotiate ones they wish. This allows creation of TLS servers which use GOST ciphersuites for Russian clients and RSA/DSA ciphersuites for foreign clients. 5. Calculation of digests and symmetric encryption OpenSSL provides specific commands (like sha1, aes etc) for calculation of digests and symmetric encryption. Since such commands cannot be added dynamically, no such commands are provided for GOST algorithms. Use generic commands 'dgst' and 'enc'. Calculation of GOST R 34.11-94 message digest openssl dgst -md_gost94 datafile Note that GOST R 34.11-94 specifies that digest value should be interpreted as little-endian number, but OpenSSL outputs just hex dump of digest value. So, to obtain correct digest value, such as produced by gostsum utility included in the engine distribution, bytes of output should be reversed. Calculation of HMAC based on GOST R 34.11-94 openssl dgst -md_gost94 -mac hmac -macopt key:<32 bytes of key> datafile (or use hexkey if key contain NUL bytes) Calculation of GOST 28147 MAC openssl dgst -mac gost-mac -macopt key:<32 bytes of key> datafile Note absence of an option that specifies digest algorithm. gost-mac algorithm supports only one digest (which is actually part of implementation of this mac) and OpenSSL is clever enough to find out this. Following mac options are supported: key:(32 bytes of key) hexkey:(64 hexadecimal digits of key) Engine support calculation of mac with size different from default 32 bits. You can set mac size to any value from 1 to 8 bytes using -sigopt size:(number from 1 to 8 - mac size in bytes) (dgst command uses different EVP_PKEY_CTX for initialization and for finalization of MAC. Option of first are set via -macopt, and for second via -sigopt. Key should be set during initialization and size during finalization. If you use API functions EVP_DigestSignInit/EVP_DigestSignFinal, you can set both options at the same time). Encryption with GOST 28147 CFB mode openssl enc -gost89 -out encrypted-file -in plain-text-file -k Encryption with GOST 28147 CNT mode openssl enc -gost89-cnt -out encrypted-file -in plain-text-file -k Encryption with GOST 28147 CBC mode openssl enc -gost89-cbc -out encrypted-file -in plain-text-file -k 6. Encrypting private keys and PKCS12 To produce PKCS12 files compatible with MagPro CSP, you need to use GOST algorithm for encryption of PKCS12 file and also GOST R 34.11-94 hash to derive key from password. openssl pksc12 -export -inkey gost.pem -in gost_cert.pem -keypbe gost89\ -certpbe gost89 -macalg md_gost94 7. Testing speed of symmetric ciphers. To test performance of GOST symmetric ciphers you should use -evp switch of the openssl speed command. Engine-provided ciphers couldn't be accessed by cipher-specific functions, only via generic evp interface openssl speed -evp gost89 openssl speed -evp gost89-cnt openssl speed -evp gost89-cbc PROGRAMMING INTERFACES DETAILS Applications never should access engine directly. They only use provided EVP_PKEY API. But there are some details, which should be taken into account. EVP provides two kinds of API for key exchange: 1. EVP_PKEY_encrypt/EVP_PKEY_decrypt functions, intended to use with RSA-like public key encryption algorithms 2. EVP_PKEY_derive, intended to use with Diffie-Hellman-like shared key computing algorithms. Although VKO R 34.10 algorithms, described in the RFC 4357 are definitely second case, engine provides BOTH API for GOST R 34.10 keys. EVP_PKEY_derive just invokes appropriate VKO algorithm and computes 256 bit shared key. VKO R 34.10-2001 requires 64 bits of random user key material (UKM). This UKM should be transmitted to other party, so it is not generated inside derive function. It should be set by EVP_PKEY_CTX_ctrl function using EVP_PKEY_CTRL_SET_IV command after call of EVP_PKEY_derive_init, but before EVP_PKEY_derive. unsigned char ukm[8]; RAND_bytes(ukm,8); EVP_PKEY_CTX_ctrl(ctx, -1, EVP_PKEY_OP_DERIVE, 8, ukm) EVP_PKEY_encrypt encrypts provided session key with VKO shared key and packs it into GOST key transport structure, described in the RFC 4490. It typically uses ephemeral key pair to compute shared key and packs its public part along with encrypted key. So, for most cases use of EVP_PKEY_encrypt/EVP_PKEY_decrypt with GOST keys is almost same as with RSA. However, if peerkey field in the EVP_PKEY_CTX structure is set (using EVP_PKEY_derive_set_peerkey function) to EVP_PKEY structure which has private key and uses same parameters as the public key from which this EVP_PKEY_CTX is created, EVP_PKEY_encrypt will use this private key to compute shared key and set ephemeral key in the GOST_key_transport structure to NULL. In this case pkey and peerkey fields in the EVP_PKEY_CTX are used upside-down. If EVP_PKEY_decrypt encounters GOST_key_transport structure with NULL public key field, it tries to use peerkey field from the context to compute shared key. In this case peerkey field should really contain peer public key. Encrypt operation supports EVP_PKEY_CTRL_SET_IV operation as well. It can be used when some specific restriction on UKM are imposed by higher level protocol. For instance, description of GOST ciphersuites requires UKM to be derived from shared secret. If UKM is not set by this control command, encrypt operation would generate random UKM. This sources include implementation of GOST 28147-89 and GOST R 34.11-94 which are completely indepentent from OpenSSL and can be used separately (files gost89.c, gost89.h, gosthash.c, gosthash.h) Utility gostsum (file gostsum.c) is provided as example of such separate usage. This is program, simular to md5sum and sha1sum utilities, but calculates GOST R 34.11-94 hash. Makefile doesn't include rule for compiling gostsum. Use command $(CC) -o gostsum gostsum.c gost89.c gosthash.c where $(CC) is name of your C compiler. Implementations of GOST R 34.10-xx, including VKO algorithms heavily depends on OpenSSL BIGNUM and Elliptic Curve libraries. libengine-gost-openssl1.1-1.1.0.1/README.md000066400000000000000000000001261315100554000177270ustar00rootroot00000000000000# engine A reference implementation of the Russian GOST crypto algorithms for OpenSSL libengine-gost-openssl1.1-1.1.0.1/e_gost_err.c000066400000000000000000000214601315100554000207500ustar00rootroot00000000000000/* e_gost_err.c */ /* ==================================================================== * Copyright (c) 1999-2016 The OpenSSL Project. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * * 3. All advertising materials mentioning features or use of this * software must display the following acknowledgment: * "This product includes software developed by the OpenSSL Project * for use in the OpenSSL Toolkit. (http://www.OpenSSL.org/)" * * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to * endorse or promote products derived from this software without * prior written permission. For written permission, please contact * openssl-core@OpenSSL.org. * * 5. Products derived from this software may not be called "OpenSSL" * nor may "OpenSSL" appear in their names without prior written * permission of the OpenSSL Project. * * 6. Redistributions of any form whatsoever must retain the following * acknowledgment: * "This product includes software developed by the OpenSSL Project * for use in the OpenSSL Toolkit (http://www.OpenSSL.org/)" * * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED * OF THE POSSIBILITY OF SUCH DAMAGE. * ==================================================================== * * This product includes cryptographic software written by Eric Young * (eay@cryptsoft.com). This product includes software written by Tim * Hudson (tjh@cryptsoft.com). * */ /* * NOTE: this file was auto generated by the mkerr.pl script: any changes * made to it will be overwritten when the script next updates this file, * only reason strings will be preserved. */ #include #include #include "e_gost_err.h" /* BEGIN ERROR CODES */ #ifndef OPENSSL_NO_ERR # define ERR_FUNC(func) ERR_PACK(0,func,0) # define ERR_REASON(reason) ERR_PACK(0,0,reason) static ERR_STRING_DATA GOST_str_functs[] = { {ERR_FUNC(GOST_F_DECODE_GOST_ALGOR_PARAMS), "DECODE_GOST_ALGOR_PARAMS"}, {ERR_FUNC(GOST_F_ENCODE_GOST_ALGOR_PARAMS), "ENCODE_GOST_ALGOR_PARAMS"}, {ERR_FUNC(GOST_F_FILL_GOST_EC_PARAMS), "FILL_GOST_EC_PARAMS"}, {ERR_FUNC(GOST_F_GET_ENCRYPTION_PARAMS), "GET_ENCRYPTION_PARAMS"}, {ERR_FUNC(GOST_F_GOST89_GET_ASN1_PARAMETERS), "GOST89_GET_ASN1_PARAMETERS"}, {ERR_FUNC(GOST_F_GOST89_SET_ASN1_PARAMETERS), "GOST89_SET_ASN1_PARAMETERS"}, {ERR_FUNC(GOST_F_GOST_CIPHER_CTL), "GOST_CIPHER_CTL"}, {ERR_FUNC(GOST_F_GOST_EC_COMPUTE_PUBLIC), "GOST_EC_COMPUTE_PUBLIC"}, {ERR_FUNC(GOST_F_GOST_EC_KEYGEN), "GOST_EC_KEYGEN"}, {ERR_FUNC(GOST_F_GOST_EC_SIGN), "GOST_EC_SIGN"}, {ERR_FUNC(GOST_F_GOST_EC_VERIFY), "GOST_EC_VERIFY"}, {ERR_FUNC(GOST_F_GOST_IMIT_CTRL), "GOST_IMIT_CTRL"}, {ERR_FUNC(GOST_F_GOST_IMIT_FINAL), "GOST_IMIT_FINAL"}, {ERR_FUNC(GOST_F_GOST_IMIT_UPDATE), "GOST_IMIT_UPDATE"}, {ERR_FUNC(GOST_F_PARAM_COPY_GOST_EC), "PARAM_COPY_GOST_EC"}, {ERR_FUNC(GOST_F_PKEY_GOST01_PARAMGEN), "PKEY_GOST01_PARAMGEN"}, {ERR_FUNC(GOST_F_PKEY_GOST12_PARAMGEN), "PKEY_GOST12_PARAMGEN"}, {ERR_FUNC(GOST_F_PKEY_GOST_CTRL), "PKEY_GOST_CTRL"}, {ERR_FUNC(GOST_F_PKEY_GOST_ECCP_DECRYPT), "PKEY_GOST_ECCP_DECRYPT"}, {ERR_FUNC(GOST_F_PKEY_GOST_ECCP_ENCRYPT), "PKEY_GOST_ECCP_ENCRYPT"}, {ERR_FUNC(GOST_F_PKEY_GOST_EC_CTRL_STR_256), "PKEY_GOST_EC_CTRL_STR_256"}, {ERR_FUNC(GOST_F_PKEY_GOST_EC_CTRL_STR_512), "PKEY_GOST_EC_CTRL_STR_512"}, {ERR_FUNC(GOST_F_PKEY_GOST_EC_DERIVE), "PKEY_GOST_EC_DERIVE"}, {ERR_FUNC(GOST_F_PKEY_GOST_MAC_CTRL), "PKEY_GOST_MAC_CTRL"}, {ERR_FUNC(GOST_F_PKEY_GOST_MAC_CTRL_STR), "PKEY_GOST_MAC_CTRL_STR"}, {ERR_FUNC(GOST_F_PKEY_GOST_MAC_KEYGEN), "PKEY_GOST_MAC_KEYGEN"}, {ERR_FUNC(GOST_F_PKEY_GOST_MAC_SIGNCTX_INIT), "PKEY_GOST_MAC_SIGNCTX_INIT"}, {ERR_FUNC(GOST_F_PRINT_GOST_EC_PUB), "PRINT_GOST_EC_PUB"}, {ERR_FUNC(GOST_F_PRIV_DECODE_GOST), "PRIV_DECODE_GOST"}, {ERR_FUNC(GOST_F_PUB_DECODE_GOST_EC), "PUB_DECODE_GOST_EC"}, {ERR_FUNC(GOST_F_PUB_ENCODE_GOST_EC), "PUB_ENCODE_GOST_EC"}, {ERR_FUNC(GOST_F_UNPACK_CP_SIGNATURE), "UNPACK_CP_SIGNATURE"}, {ERR_FUNC(GOST_F_VKO_COMPUTE_KEY), "VKO_COMPUTE_KEY"}, {0, NULL} }; static ERR_STRING_DATA GOST_str_reasons[] = { {ERR_REASON(GOST_R_BAD_KEY_PARAMETERS_FORMAT), "bad key parameters format"}, {ERR_REASON(GOST_R_BAD_PKEY_PARAMETERS_FORMAT), "bad pkey parameters format"}, {ERR_REASON(GOST_R_CANNOT_PACK_EPHEMERAL_KEY), "cannot pack ephemeral key"}, {ERR_REASON(GOST_R_CTRL_CALL_FAILED), "ctrl call failed"}, {ERR_REASON(GOST_R_ERROR_COMPUTING_SHARED_KEY), "error computing shared key"}, {ERR_REASON(GOST_R_ERROR_PARSING_KEY_TRANSPORT_INFO), "error parsing key transport info"}, {ERR_REASON(GOST_R_ERROR_POINT_MUL), "error point mul"}, {ERR_REASON(GOST_R_INCOMPATIBLE_ALGORITHMS), "incompatible algorithms"}, {ERR_REASON(GOST_R_INCOMPATIBLE_PEER_KEY), "incompatible peer key"}, {ERR_REASON(GOST_R_INVALID_CIPHER_PARAMS), "invalid cipher params"}, {ERR_REASON(GOST_R_INVALID_CIPHER_PARAM_OID), "invalid cipher param oid"}, {ERR_REASON(GOST_R_INVALID_DIGEST_TYPE), "invalid digest type"}, {ERR_REASON(GOST_R_INVALID_IV_LENGTH), "invalid iv length"}, {ERR_REASON(GOST_R_INVALID_MAC_KEY_LENGTH), "invalid mac key length"}, {ERR_REASON(GOST_R_INVALID_MAC_KEY_SIZE), "invalid mac key size"}, {ERR_REASON(GOST_R_INVALID_MAC_PARAMS), "invalid mac params"}, {ERR_REASON(GOST_R_INVALID_MAC_SIZE), "invalid mac size"}, {ERR_REASON(GOST_R_INVALID_PARAMSET), "invalid paramset"}, {ERR_REASON(GOST_R_KEY_IS_NOT_INITIALIZED), "key is not initialized"}, {ERR_REASON(GOST_R_KEY_PARAMETERS_MISSING), "key parameters missing"}, {ERR_REASON(GOST_R_MAC_KEY_NOT_SET), "mac key not set"}, {ERR_REASON(GOST_R_NO_PARAMETERS_SET), "no parameters set"}, {ERR_REASON(GOST_R_NO_PEER_KEY), "no peer key"}, {ERR_REASON(GOST_R_NO_PRIVATE_PART_OF_NON_EPHEMERAL_KEYPAIR), "no private part of non ephemeral keypair"}, {ERR_REASON(GOST_R_PUBLIC_KEY_UNDEFINED), "public key undefined"}, {ERR_REASON(GOST_R_RNG_ERROR), "rng error"}, {ERR_REASON(GOST_R_SIGNATURE_MISMATCH), "signature mismatch"}, {ERR_REASON(GOST_R_SIGNATURE_PARTS_GREATER_THAN_Q), "signature parts greater than q"}, {ERR_REASON(GOST_R_UKM_NOT_SET), "ukm not set"}, {ERR_REASON(GOST_R_UNSUPPORTED_CIPHER_CTL_COMMAND), "unsupported cipher ctl command"}, {ERR_REASON(GOST_R_UNSUPPORTED_PARAMETER_SET), "unsupported parameter set"}, {0, NULL} }; #endif #ifdef GOST_LIB_NAME static ERR_STRING_DATA GOST_lib_name[] = { {0, GOST_LIB_NAME}, {0, NULL} }; #endif static int GOST_lib_error_code = 0; static int GOST_error_init = 1; void ERR_load_GOST_strings(void) { if (GOST_lib_error_code == 0) GOST_lib_error_code = ERR_get_next_error_library(); if (GOST_error_init) { GOST_error_init = 0; #ifndef OPENSSL_NO_ERR ERR_load_strings(GOST_lib_error_code, GOST_str_functs); ERR_load_strings(GOST_lib_error_code, GOST_str_reasons); #endif #ifdef GOST_LIB_NAME GOST_lib_name->error = ERR_PACK(GOST_lib_error_code, 0, 0); ERR_load_strings(0, GOST_lib_name); #endif } } void ERR_unload_GOST_strings(void) { if (GOST_error_init == 0) { #ifndef OPENSSL_NO_ERR ERR_unload_strings(GOST_lib_error_code, GOST_str_functs); ERR_unload_strings(GOST_lib_error_code, GOST_str_reasons); #endif #ifdef GOST_LIB_NAME ERR_unload_strings(0, GOST_lib_name); #endif GOST_error_init = 1; } } void ERR_GOST_error(int function, int reason, char *file, int line) { if (GOST_lib_error_code == 0) GOST_lib_error_code = ERR_get_next_error_library(); ERR_PUT_error(GOST_lib_error_code, function, reason, file, line); } libengine-gost-openssl1.1-1.1.0.1/e_gost_err.h000066400000000000000000000160671315100554000207640ustar00rootroot00000000000000/* ==================================================================== * Copyright (c) 2001-2015 The OpenSSL Project. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * * 3. All advertising materials mentioning features or use of this * software must display the following acknowledgment: * "This product includes software developed by the OpenSSL Project * for use in the OpenSSL Toolkit. (http://www.openssl.org/)" * * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to * endorse or promote products derived from this software without * prior written permission. For written permission, please contact * openssl-core@openssl.org. * * 5. Products derived from this software may not be called "OpenSSL" * nor may "OpenSSL" appear in their names without prior written * permission of the OpenSSL Project. * * 6. Redistributions of any form whatsoever must retain the following * acknowledgment: * "This product includes software developed by the OpenSSL Project * for use in the OpenSSL Toolkit (http://www.openssl.org/)" * * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED * OF THE POSSIBILITY OF SUCH DAMAGE. * ==================================================================== * * This product includes cryptographic software written by Eric Young * (eay@cryptsoft.com). This product includes software written by Tim * Hudson (tjh@cryptsoft.com). * */ #ifndef HEADER_GOST_ERR_H # define HEADER_GOST_ERR_H # ifdef __cplusplus extern "C" { # endif /* BEGIN ERROR CODES */ /* * The following lines are auto generated by the script mkerr.pl. Any changes * made after this point may be overwritten when the script is next run. */ void ERR_load_GOST_strings(void); void ERR_unload_GOST_strings(void); void ERR_GOST_error(int function, int reason, char *file, int line); # define GOSTerr(f,r) ERR_GOST_error((f),(r),__FILE__,__LINE__) /* Error codes for the GOST functions. */ /* Function codes. */ # define GOST_F_DECODE_GOST_ALGOR_PARAMS 100 # define GOST_F_ENCODE_GOST_ALGOR_PARAMS 101 # define GOST_F_FILL_GOST_EC_PARAMS 102 # define GOST_F_GET_ENCRYPTION_PARAMS 103 # define GOST_F_GOST89_GET_ASN1_PARAMETERS 104 # define GOST_F_GOST89_SET_ASN1_PARAMETERS 105 # define GOST_F_GOST_CIPHER_CTL 106 # define GOST_F_GOST_EC_COMPUTE_PUBLIC 107 # define GOST_F_GOST_EC_KEYGEN 108 # define GOST_F_GOST_EC_SIGN 109 # define GOST_F_GOST_EC_VERIFY 110 # define GOST_F_GOST_IMIT_CTRL 111 # define GOST_F_GOST_IMIT_FINAL 112 # define GOST_F_GOST_IMIT_UPDATE 113 # define GOST_F_PARAM_COPY_GOST_EC 114 # define GOST_F_PKEY_GOST01_PARAMGEN 115 # define GOST_F_PKEY_GOST12_PARAMGEN 116 # define GOST_F_PKEY_GOST_CTRL 117 # define GOST_F_PKEY_GOST_ECCP_DECRYPT 118 # define GOST_F_PKEY_GOST_ECCP_ENCRYPT 119 # define GOST_F_PKEY_GOST_EC_CTRL_STR_256 120 # define GOST_F_PKEY_GOST_EC_CTRL_STR_512 121 # define GOST_F_PKEY_GOST_EC_DERIVE 122 # define GOST_F_PKEY_GOST_MAC_CTRL 123 # define GOST_F_PKEY_GOST_MAC_CTRL_STR 124 # define GOST_F_PKEY_GOST_MAC_KEYGEN 125 # define GOST_F_PKEY_GOST_MAC_SIGNCTX_INIT 132 # define GOST_F_PRINT_GOST_EC_PUB 126 # define GOST_F_PRIV_DECODE_GOST 127 # define GOST_F_PUB_DECODE_GOST_EC 128 # define GOST_F_PUB_ENCODE_GOST_EC 129 # define GOST_F_UNPACK_CP_SIGNATURE 130 # define GOST_F_VKO_COMPUTE_KEY 131 /* Reason codes. */ # define GOST_R_BAD_KEY_PARAMETERS_FORMAT 100 # define GOST_R_BAD_PKEY_PARAMETERS_FORMAT 101 # define GOST_R_CANNOT_PACK_EPHEMERAL_KEY 102 # define GOST_R_CTRL_CALL_FAILED 103 # define GOST_R_ERROR_COMPUTING_SHARED_KEY 104 # define GOST_R_ERROR_PARSING_KEY_TRANSPORT_INFO 105 # define GOST_R_ERROR_POINT_MUL 106 # define GOST_R_INCOMPATIBLE_ALGORITHMS 107 # define GOST_R_INCOMPATIBLE_PEER_KEY 108 # define GOST_R_INVALID_CIPHER_PARAMS 109 # define GOST_R_INVALID_CIPHER_PARAM_OID 110 # define GOST_R_INVALID_DIGEST_TYPE 111 # define GOST_R_INVALID_IV_LENGTH 112 # define GOST_R_INVALID_MAC_KEY_LENGTH 113 # define GOST_R_INVALID_MAC_KEY_SIZE 128 # define GOST_R_INVALID_MAC_PARAMS 130 # define GOST_R_INVALID_MAC_SIZE 129 # define GOST_R_INVALID_PARAMSET 114 # define GOST_R_KEY_IS_NOT_INITIALIZED 115 # define GOST_R_KEY_PARAMETERS_MISSING 116 # define GOST_R_MAC_KEY_NOT_SET 117 # define GOST_R_NO_PARAMETERS_SET 118 # define GOST_R_NO_PEER_KEY 119 # define GOST_R_NO_PRIVATE_PART_OF_NON_EPHEMERAL_KEYPAIR 120 # define GOST_R_PUBLIC_KEY_UNDEFINED 121 # define GOST_R_RNG_ERROR 122 # define GOST_R_SIGNATURE_MISMATCH 123 # define GOST_R_SIGNATURE_PARTS_GREATER_THAN_Q 124 # define GOST_R_UKM_NOT_SET 125 # define GOST_R_UNSUPPORTED_CIPHER_CTL_COMMAND 126 # define GOST_R_UNSUPPORTED_PARAMETER_SET 127 # ifdef __cplusplus } # endif #endif libengine-gost-openssl1.1-1.1.0.1/e_gost_err.proto000066400000000000000000000053141315100554000216710ustar00rootroot00000000000000/* ==================================================================== * Copyright (c) 2001-2005 The OpenSSL Project. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * * 3. All advertising materials mentioning features or use of this * software must display the following acknowledgment: * "This product includes software developed by the OpenSSL Project * for use in the OpenSSL Toolkit. (http://www.openssl.org/)" * * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to * endorse or promote products derived from this software without * prior written permission. For written permission, please contact * openssl-core@openssl.org. * * 5. Products derived from this software may not be called "OpenSSL" * nor may "OpenSSL" appear in their names without prior written * permission of the OpenSSL Project. * * 6. Redistributions of any form whatsoever must retain the following * acknowledgment: * "This product includes software developed by the OpenSSL Project * for use in the OpenSSL Toolkit (http://www.openssl.org/)" * * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED * OF THE POSSIBILITY OF SUCH DAMAGE. * ==================================================================== * * This product includes cryptographic software written by Eric Young * (eay@cryptsoft.com). This product includes software written by Tim * Hudson (tjh@cryptsoft.com). * */ #ifndef HEADER_GOST_ERR_H #define HEADER_GOST_ERR_H #define GOST_LIB_NAME "GOST engine" #ifdef __cplusplus extern "C" { #endif libengine-gost-openssl1.1-1.1.0.1/gost.ec000066400000000000000000000002331315100554000177340ustar00rootroot00000000000000L GOST e_gost_err.h e_gost_err.c L NONE asymm.h NONE L NONE md.h NONE L NONE crypt.h NONE L NONE gostkeyx.h NONE libengine-gost-openssl1.1-1.1.0.1/gost12sum.1000066400000000000000000000041611315100554000204010ustar00rootroot00000000000000.\" Hey, Emacs! This is an -*- nroff -*- source file. .TH GOST12SUM 1 "02 Aug 2016" "Openssl" "Debian GNU/Linux" .SH NAME gost12sum \- generates or checks GOST R34.11-2012 message digests .SH SYNOPSIS .B gost12sum [\-bvl] [\-c [file]] | [file...] .SH DESCRIPTION .B gost12sum generates or checks GOST hash sums. The algorithm to generate the is reasonably fast and strong enough for most cases. Exact specification of the algorithm is in .I GOST R34.11-2012. Normally .B gost12sum generates checksums of all files given to it as a parameter and prints the checksums followed by the filenames. If, however, .B \-c is specified, only one filename parameter is allowed. This file should contain checksums and filenames to which these checksums refer to, and the files listed in that file are checked against the checksums listed there. See option .B \-c for more information. .SS OPTIONS .TP .B \-b Use binary mode. In unix environment, only difference between this and the normal mode is an asterisk preceding the filename in the output. .TP .B \-c Check gost hashes of all files listed in .I file against the checksum listed in the same file. The actual format of that file is the same as output of .B md5sum. That is, each line in the file describes a file. A line looks like: .B So, for example, if a file was created and its message digest calculated like so: .B echo foo > hash\-test\-file; gost12sum hash\-test\-file .B gost12sum would report: 3d4a51ee7713e6467442facefe06f153a303e7bdefbe7f9bdf2edb4ae9c866ff hash\-test\-file When invoked with \-c option .B gost12sum normally works silently unless error found. Use \-v if you want to see list of successfully checked files .TP .B \-v Be more verbose. Print filenames when checking (with \-c). .TP .B -l Use long (512-bit) hash instead of short (256-bit). .SH BUGS This manpage is not quite accurate and has formatting inconsistent with other manpages. .B gost12sum does not accept standard options like .BR \-\-help . .SH AUTHOR .B gost12sum utility written by Cryptocom LTD This manual page is written by Victor Wagner for Debian GNU/Linux libengine-gost-openssl1.1-1.1.0.1/gost12sum.c000066400000000000000000000173131315100554000204660ustar00rootroot00000000000000/********************************************************************** * gostsum12.c * * Copyright (c) 2005-2014 Cryptocom LTD * * This file is distributed under same license as OpenSSL * * * * Implementation of GOST R 34.11-2012 hash function as * * command line utility more or less interface * * compatible with md5sum and sha1sum * * Doesn't need OpenSSL * **********************************************************************/ #include #include #include #include #include #ifdef _WIN32 # include #endif #include #include "gosthash2012.h" #define BUF_SIZE 262144 #define gost_hash_ctx gost2012_hash_ctx #define GOST34112012Init init_gost2012_hash_ctx #define GOST34112012Update gost2012_hash_block #define GOST34112012Final gost2012_finish_hash #define MAX_HASH_SIZE 128 typedef unsigned char byte; int hashsize = 256; int hash_file(gost_hash_ctx * ctx, char *filename, char *sum, int mode); int hash_stream(gost_hash_ctx * ctx, int fd, char *sum); int get_line(FILE *f, char *hash, char *filename, int verbose); void help() { fprintf(stderr, "Calculates GOST R 34.11-2012 hash function\n\n"); fprintf(stderr, "gostsum12 [-bvl] [-c [file]]| [files]|-x\n" "\t-c check message digests (default is generate)\n" "\t-v verbose, print file names when checking\n" "\t-b read files in binary mode\n" "\t-l use 512 bit hash (default 256 bit)\n" "\t-x read filenames from stdin rather than from arguments \n" "The input for -c should be the list of message digests and file names\n" "that is printed on stdout by this program when it generates digests.\n"); exit(3); } #ifndef O_BINARY # define O_BINARY 0 #endif int start_hash12(gost_hash_ctx * ctx) { GOST34112012Init(ctx, hashsize); return 1; } int hash12_block(gost_hash_ctx * ctx, const byte * block, size_t length) { GOST34112012Update(ctx, block, length); return 1; } int finish_hash12(gost_hash_ctx * ctx, byte * hashval) { GOST34112012Final(ctx, hashval); return 1; } int main(int argc, char **argv) { int c, i; int verbose = 0; int errors = 0; int open_mode = O_RDONLY; FILE *check_file = NULL; int filenames_from_stdin = 0; gost_hash_ctx ctx; while ((c = getopt(argc, argv, "bxlvc::")) != -1) { switch (c) { case 'b': open_mode = open_mode | O_BINARY; break; case 'v': verbose = 1; break; case 'l': hashsize = 512; break; case 'x': filenames_from_stdin = 1; break; case 'c': if (optarg) { check_file = fopen(optarg, "r"); if (!check_file) { perror(optarg); exit(2); } } else { check_file = stdin; } break; default: fprintf(stderr, "invalid option %c", optopt); help(); } } if (check_file) { char inhash[MAX_HASH_SIZE + 1], calcsum[MAX_HASH_SIZE + 1], filename[PATH_MAX]; int failcount = 0, count = 0;; if (check_file == stdin && optind < argc) { check_file = fopen(argv[optind], "r"); if (!check_file) { perror(argv[optind]); exit(2); } } while (get_line(check_file, inhash, filename, verbose)) { count++; if (!hash_file(&ctx, filename, calcsum, open_mode)) { errors++; continue; } if (!strncmp(calcsum, inhash, hashsize / 4 + 1)) { if (verbose) { fprintf(stderr, "%s\tOK\n", filename); } } else { if (verbose) { fprintf(stderr, "%s\tFAILED\n", filename); } else { fprintf(stderr, "%s: GOST hash sum check failed for '%s'\n", argv[0], filename); } failcount++; } } if (errors) { fprintf(stderr, "%s: WARNING %d of %d file(s) cannot be processed\n", argv[0], errors, count); } if (failcount) { fprintf(stderr, "%s: WARNING %d of %d file(s) failed GOST hash sum check\n", argv[0], failcount, count - errors); } exit((failcount || errors) ? 1 : 0); } else if (filenames_from_stdin) { char sum[65]; char filename[PATH_MAX + 1], *end; while (!feof(stdin)) { if (!fgets(filename, PATH_MAX, stdin)) break; for (end = filename; *end; end++) ; end--; for (; *end == '\n' || *end == '\r'; end--) *end = 0; if (!hash_file(&ctx, filename, sum, open_mode)) { errors++; } else { printf("%s %s\n", sum, filename); } } } else if (optind == argc) { char sum[65]; #ifdef _WIN32 if (open_mode & O_BINARY) { _setmode(fileno(stdin), O_BINARY); } #endif if (!hash_stream(&ctx, fileno(stdin), sum)) { perror("stdin"); exit(1); } printf("%s -\n", sum); exit(0); } else { for (i = optind; i < argc; i++) { char sum[65]; if (!hash_file(&ctx, argv[i], sum, open_mode)) { errors++; } else { printf("%s %s\n", sum, argv[i]); } } } exit(errors ? 1 : 0); } int hash_file(gost_hash_ctx * ctx, char *filename, char *sum, int mode) { int fd; if ((fd = open(filename, mode)) < 0) { perror(filename); return 0; } if (!hash_stream(ctx, fd, sum)) { perror(filename); return 0; } close(fd); return 1; } int hash_stream(gost_hash_ctx * ctx, int fd, char *sum) { unsigned char buffer[BUF_SIZE]; ssize_t bytes; size_t i; start_hash12(ctx); while ((bytes = read(fd, buffer, BUF_SIZE)) > 0) { hash12_block(ctx, buffer, bytes); } if (bytes < 0) { return 0; } finish_hash12(ctx, buffer); for (i = 0; i < (hashsize / 8); i++) { sprintf(sum + 2 * i, "%02x", buffer[i]); } return 1; } int get_line(FILE *f, char *hash, char *filename, int verbose) { int i, len; int hashstrlen = hashsize / 4; while (!feof(f)) { if (!fgets(filename, PATH_MAX, f)) return 0; len = strlen(filename); if (len < hashstrlen + 2) { goto nextline; } if (filename[hashstrlen] != ' ') { goto nextline; } for (i = 0; i < hashstrlen; i++) { if (filename[i] < '0' || (filename[i] > '9' && filename[i] < 'A') || (filename[i] > 'F' && filename[i] < 'a') || filename[i] > 'f') { goto nextline; } } memcpy(hash, filename, hashstrlen); hash[hashstrlen] = 0; while (filename[--len] == '\n' || filename[len] == '\r') filename[len] = 0; memmove(filename, filename + hashstrlen + 1, len - hashstrlen + 1); return 1; nextline: if (verbose) printf("%s\n", filename); } return 0; } libengine-gost-openssl1.1-1.1.0.1/gost89.c000066400000000000000000000437451315100554000177670ustar00rootroot00000000000000/********************************************************************** * gost89.c * * Copyright (c) 2005-2006 Cryptocom LTD * * This file is distributed under the same license as OpenSSL * * * * Implementation of GOST 28147-89 encryption algorithm * * No OpenSSL libraries required to compile and use * * this code * **********************************************************************/ #include #include "gost89.h" /*- Substitution blocks from RFC 4357 Note: our implementation of gost 28147-89 algorithm uses S-box matrix rotated 90 degrees counterclockwise, relative to examples given in RFC. */ /* Substitution blocks from test examples for GOST R 34.11-94*/ gost_subst_block GostR3411_94_TestParamSet = { {0X1, 0XF, 0XD, 0X0, 0X5, 0X7, 0XA, 0X4, 0X9, 0X2, 0X3, 0XE, 0X6, 0XB, 0X8, 0XC} , {0XD, 0XB, 0X4, 0X1, 0X3, 0XF, 0X5, 0X9, 0X0, 0XA, 0XE, 0X7, 0X6, 0X8, 0X2, 0XC} , {0X4, 0XB, 0XA, 0X0, 0X7, 0X2, 0X1, 0XD, 0X3, 0X6, 0X8, 0X5, 0X9, 0XC, 0XF, 0XE} , {0X6, 0XC, 0X7, 0X1, 0X5, 0XF, 0XD, 0X8, 0X4, 0XA, 0X9, 0XE, 0X0, 0X3, 0XB, 0X2} , {0X7, 0XD, 0XA, 0X1, 0X0, 0X8, 0X9, 0XF, 0XE, 0X4, 0X6, 0XC, 0XB, 0X2, 0X5, 0X3} , {0X5, 0X8, 0X1, 0XD, 0XA, 0X3, 0X4, 0X2, 0XE, 0XF, 0XC, 0X7, 0X6, 0X0, 0X9, 0XB} , {0XE, 0XB, 0X4, 0XC, 0X6, 0XD, 0XF, 0XA, 0X2, 0X3, 0X8, 0X1, 0X0, 0X7, 0X5, 0X9} , {0X4, 0XA, 0X9, 0X2, 0XD, 0X8, 0X0, 0XE, 0X6, 0XB, 0X1, 0XC, 0X7, 0XF, 0X5, 0X3} }; /* Substitution blocks for hash function 1.2.643.2.9.1.6.1 */ gost_subst_block GostR3411_94_CryptoProParamSet = { {0x1, 0x3, 0xA, 0x9, 0x5, 0xB, 0x4, 0xF, 0x8, 0x6, 0x7, 0xE, 0xD, 0x0, 0x2, 0xC} , {0xD, 0xE, 0x4, 0x1, 0x7, 0x0, 0x5, 0xA, 0x3, 0xC, 0x8, 0xF, 0x6, 0x2, 0x9, 0xB} , {0x7, 0x6, 0x2, 0x4, 0xD, 0x9, 0xF, 0x0, 0xA, 0x1, 0x5, 0xB, 0x8, 0xE, 0xC, 0x3} , {0x7, 0x6, 0x4, 0xB, 0x9, 0xC, 0x2, 0xA, 0x1, 0x8, 0x0, 0xE, 0xF, 0xD, 0x3, 0x5} , {0x4, 0xA, 0x7, 0xC, 0x0, 0xF, 0x2, 0x8, 0xE, 0x1, 0x6, 0x5, 0xD, 0xB, 0x9, 0x3} , {0x7, 0xF, 0xC, 0xE, 0x9, 0x4, 0x1, 0x0, 0x3, 0xB, 0x5, 0x2, 0x6, 0xA, 0x8, 0xD} , {0x5, 0xF, 0x4, 0x0, 0x2, 0xD, 0xB, 0x9, 0x1, 0x7, 0x6, 0x3, 0xC, 0xE, 0xA, 0x8} , {0xA, 0x4, 0x5, 0x6, 0x8, 0x1, 0x3, 0x7, 0xD, 0xC, 0xE, 0x0, 0x9, 0x2, 0xB, 0xF} }; /* Test paramset from GOST 28147 */ gost_subst_block Gost28147_TestParamSet = { {0xC, 0x6, 0x5, 0x2, 0xB, 0x0, 0x9, 0xD, 0x3, 0xE, 0x7, 0xA, 0xF, 0x4, 0x1, 0x8} , {0x9, 0xB, 0xC, 0x0, 0x3, 0x6, 0x7, 0x5, 0x4, 0x8, 0xE, 0xF, 0x1, 0xA, 0x2, 0xD} , {0x8, 0xF, 0x6, 0xB, 0x1, 0x9, 0xC, 0x5, 0xD, 0x3, 0x7, 0xA, 0x0, 0xE, 0x2, 0x4} , {0x3, 0xE, 0x5, 0x9, 0x6, 0x8, 0x0, 0xD, 0xA, 0xB, 0x7, 0xC, 0x2, 0x1, 0xF, 0x4} , {0xE, 0x9, 0xB, 0x2, 0x5, 0xF, 0x7, 0x1, 0x0, 0xD, 0xC, 0x6, 0xA, 0x4, 0x3, 0x8} , {0xD, 0x8, 0xE, 0xC, 0x7, 0x3, 0x9, 0xA, 0x1, 0x5, 0x2, 0x4, 0x6, 0xF, 0x0, 0xB} , {0xC, 0x9, 0xF, 0xE, 0x8, 0x1, 0x3, 0xA, 0x2, 0x7, 0x4, 0xD, 0x6, 0x0, 0xB, 0x5} , {0x4, 0x2, 0xF, 0x5, 0x9, 0x1, 0x0, 0x8, 0xE, 0x3, 0xB, 0xC, 0xD, 0x7, 0xA, 0x6} }; /* 1.2.643.2.2.31.1 */ gost_subst_block Gost28147_CryptoProParamSetA = { {0xB, 0xA, 0xF, 0x5, 0x0, 0xC, 0xE, 0x8, 0x6, 0x2, 0x3, 0x9, 0x1, 0x7, 0xD, 0x4} , {0x1, 0xD, 0x2, 0x9, 0x7, 0xA, 0x6, 0x0, 0x8, 0xC, 0x4, 0x5, 0xF, 0x3, 0xB, 0xE} , {0x3, 0xA, 0xD, 0xC, 0x1, 0x2, 0x0, 0xB, 0x7, 0x5, 0x9, 0x4, 0x8, 0xF, 0xE, 0x6} , {0xB, 0x5, 0x1, 0x9, 0x8, 0xD, 0xF, 0x0, 0xE, 0x4, 0x2, 0x3, 0xC, 0x7, 0xA, 0x6} , {0xE, 0x7, 0xA, 0xC, 0xD, 0x1, 0x3, 0x9, 0x0, 0x2, 0xB, 0x4, 0xF, 0x8, 0x5, 0x6} , {0xE, 0x4, 0x6, 0x2, 0xB, 0x3, 0xD, 0x8, 0xC, 0xF, 0x5, 0xA, 0x0, 0x7, 0x1, 0x9} , {0x3, 0x7, 0xE, 0x9, 0x8, 0xA, 0xF, 0x0, 0x5, 0x2, 0x6, 0xC, 0xB, 0x4, 0xD, 0x1} , {0x9, 0x6, 0x3, 0x2, 0x8, 0xB, 0x1, 0x7, 0xA, 0x4, 0xE, 0xF, 0xC, 0x0, 0xD, 0x5} }; /* 1.2.643.2.2.31.2 */ gost_subst_block Gost28147_CryptoProParamSetB = { {0x0, 0x4, 0xB, 0xE, 0x8, 0x3, 0x7, 0x1, 0xA, 0x2, 0x9, 0x6, 0xF, 0xD, 0x5, 0xC} , {0x5, 0x2, 0xA, 0xB, 0x9, 0x1, 0xC, 0x3, 0x7, 0x4, 0xD, 0x0, 0x6, 0xF, 0x8, 0xE} , {0x8, 0x3, 0x2, 0x6, 0x4, 0xD, 0xE, 0xB, 0xC, 0x1, 0x7, 0xF, 0xA, 0x0, 0x9, 0x5} , {0x2, 0x7, 0xC, 0xF, 0x9, 0x5, 0xA, 0xB, 0x1, 0x4, 0x0, 0xD, 0x6, 0x8, 0xE, 0x3} , {0x7, 0x5, 0x0, 0xD, 0xB, 0x6, 0x1, 0x2, 0x3, 0xA, 0xC, 0xF, 0x4, 0xE, 0x9, 0x8} , {0xE, 0xC, 0x0, 0xA, 0x9, 0x2, 0xD, 0xB, 0x7, 0x5, 0x8, 0xF, 0x3, 0x6, 0x1, 0x4} , {0x0, 0x1, 0x2, 0xA, 0x4, 0xD, 0x5, 0xC, 0x9, 0x7, 0x3, 0xF, 0xB, 0x8, 0x6, 0xE} , {0x8, 0x4, 0xB, 0x1, 0x3, 0x5, 0x0, 0x9, 0x2, 0xE, 0xA, 0xC, 0xD, 0x6, 0x7, 0xF} }; /* 1.2.643.2.2.31.3 */ gost_subst_block Gost28147_CryptoProParamSetC = { {0x7, 0x4, 0x0, 0x5, 0xA, 0x2, 0xF, 0xE, 0xC, 0x6, 0x1, 0xB, 0xD, 0x9, 0x3, 0x8} , {0xA, 0x9, 0x6, 0x8, 0xD, 0xE, 0x2, 0x0, 0xF, 0x3, 0x5, 0xB, 0x4, 0x1, 0xC, 0x7} , {0xC, 0x9, 0xB, 0x1, 0x8, 0xE, 0x2, 0x4, 0x7, 0x3, 0x6, 0x5, 0xA, 0x0, 0xF, 0xD} , {0x8, 0xD, 0xB, 0x0, 0x4, 0x5, 0x1, 0x2, 0x9, 0x3, 0xC, 0xE, 0x6, 0xF, 0xA, 0x7} , {0x3, 0x6, 0x0, 0x1, 0x5, 0xD, 0xA, 0x8, 0xB, 0x2, 0x9, 0x7, 0xE, 0xF, 0xC, 0x4} , {0x8, 0x2, 0x5, 0x0, 0x4, 0x9, 0xF, 0xA, 0x3, 0x7, 0xC, 0xD, 0x6, 0xE, 0x1, 0xB} , {0x0, 0x1, 0x7, 0xD, 0xB, 0x4, 0x5, 0x2, 0x8, 0xE, 0xF, 0xC, 0x9, 0xA, 0x6, 0x3} , {0x1, 0xB, 0xC, 0x2, 0x9, 0xD, 0x0, 0xF, 0x4, 0x5, 0x8, 0xE, 0xA, 0x7, 0x6, 0x3} }; /* 1.2.643.2.2.31.4 */ gost_subst_block Gost28147_CryptoProParamSetD = { {0x1, 0xA, 0x6, 0x8, 0xF, 0xB, 0x0, 0x4, 0xC, 0x3, 0x5, 0x9, 0x7, 0xD, 0x2, 0xE} , {0x3, 0x0, 0x6, 0xF, 0x1, 0xE, 0x9, 0x2, 0xD, 0x8, 0xC, 0x4, 0xB, 0xA, 0x5, 0x7} , {0x8, 0x0, 0xF, 0x3, 0x2, 0x5, 0xE, 0xB, 0x1, 0xA, 0x4, 0x7, 0xC, 0x9, 0xD, 0x6} , {0x0, 0xC, 0x8, 0x9, 0xD, 0x2, 0xA, 0xB, 0x7, 0x3, 0x6, 0x5, 0x4, 0xE, 0xF, 0x1} , {0x1, 0x5, 0xE, 0xC, 0xA, 0x7, 0x0, 0xD, 0x6, 0x2, 0xB, 0x4, 0x9, 0x3, 0xF, 0x8} , {0x1, 0xC, 0xB, 0x0, 0xF, 0xE, 0x6, 0x5, 0xA, 0xD, 0x4, 0x8, 0x9, 0x3, 0x7, 0x2} , {0xB, 0x6, 0x3, 0x4, 0xC, 0xF, 0xE, 0x2, 0x7, 0xD, 0x8, 0x0, 0x5, 0xA, 0x9, 0x1} , {0xF, 0xC, 0x2, 0xA, 0x6, 0x4, 0x5, 0x0, 0x7, 0x9, 0xE, 0xD, 0x1, 0xB, 0x8, 0x3} }; /* 1.2.643.7.1.2.5.1.1 */ gost_subst_block Gost28147_TC26ParamSetZ = { {0x1, 0x7, 0xe, 0xd, 0x0, 0x5, 0x8, 0x3, 0x4, 0xf, 0xa, 0x6, 0x9, 0xc, 0xb, 0x2} , {0x8, 0xe, 0x2, 0x5, 0x6, 0x9, 0x1, 0xc, 0xf, 0x4, 0xb, 0x0, 0xd, 0xa, 0x3, 0x7} , {0x5, 0xd, 0xf, 0x6, 0x9, 0x2, 0xc, 0xa, 0xb, 0x7, 0x8, 0x1, 0x4, 0x3, 0xe, 0x0} , {0x7, 0xf, 0x5, 0xa, 0x8, 0x1, 0x6, 0xd, 0x0, 0x9, 0x3, 0xe, 0xb, 0x4, 0x2, 0xc} , {0xc, 0x8, 0x2, 0x1, 0xd, 0x4, 0xf, 0x6, 0x7, 0x0, 0xa, 0x5, 0x3, 0xe, 0x9, 0xb} , {0xb, 0x3, 0x5, 0x8, 0x2, 0xf, 0xa, 0xd, 0xe, 0x1, 0x7, 0x4, 0xc, 0x9, 0x6, 0x0} , {0x6, 0x8, 0x2, 0x3, 0x9, 0xa, 0x5, 0xc, 0x1, 0xe, 0x4, 0x7, 0xb, 0xd, 0x0, 0xf} , {0xc, 0x4, 0x6, 0x2, 0xa, 0x5, 0xb, 0x9, 0xe, 0x8, 0xd, 0x7, 0x0, 0x3, 0xf, 0x1} }; const byte CryptoProKeyMeshingKey[] = { 0x69, 0x00, 0x72, 0x22, 0x64, 0xC9, 0x04, 0x23, 0x8D, 0x3A, 0xDB, 0x96, 0x46, 0xE9, 0x2A, 0xC4, 0x18, 0xFE, 0xAC, 0x94, 0x00, 0xED, 0x07, 0x12, 0xC0, 0x86, 0xDC, 0xC2, 0xEF, 0x4C, 0xA9, 0x2B }; /* Initialization of gost_ctx subst blocks*/ static void kboxinit(gost_ctx * c, const gost_subst_block * b) { int i; for (i = 0; i < 256; i++) { c->k87[i] = (word32) (b->k8[i >> 4] << 4 | b->k7[i & 15]) << 24; c->k65[i] = (b->k6[i >> 4] << 4 | b->k5[i & 15]) << 16; c->k43[i] = (b->k4[i >> 4] << 4 | b->k3[i & 15]) << 8; c->k21[i] = b->k2[i >> 4] << 4 | b->k1[i & 15]; } } /* Part of GOST 28147 algorithm moved into separate function */ static word32 f(gost_ctx * c, word32 x) { x = c->k87[x >> 24 & 255] | c->k65[x >> 16 & 255] | c->k43[x >> 8 & 255] | c->k21[x & 255]; /* Rotate left 11 bits */ return x << 11 | x >> (32 - 11); } /* Low-level encryption routine - encrypts one 64 bit block*/ void gostcrypt(gost_ctx * c, const byte * in, byte * out) { register word32 n1, n2; /* As named in the GOST */ n1 = in[0] | (in[1] << 8) | (in[2] << 16) | ((word32) in[3] << 24); n2 = in[4] | (in[5] << 8) | (in[6] << 16) | ((word32) in[7] << 24); /* Instead of swapping halves, swap names each round */ n2 ^= f(c, n1 + c->k[0]); n1 ^= f(c, n2 + c->k[1]); n2 ^= f(c, n1 + c->k[2]); n1 ^= f(c, n2 + c->k[3]); n2 ^= f(c, n1 + c->k[4]); n1 ^= f(c, n2 + c->k[5]); n2 ^= f(c, n1 + c->k[6]); n1 ^= f(c, n2 + c->k[7]); n2 ^= f(c, n1 + c->k[0]); n1 ^= f(c, n2 + c->k[1]); n2 ^= f(c, n1 + c->k[2]); n1 ^= f(c, n2 + c->k[3]); n2 ^= f(c, n1 + c->k[4]); n1 ^= f(c, n2 + c->k[5]); n2 ^= f(c, n1 + c->k[6]); n1 ^= f(c, n2 + c->k[7]); n2 ^= f(c, n1 + c->k[0]); n1 ^= f(c, n2 + c->k[1]); n2 ^= f(c, n1 + c->k[2]); n1 ^= f(c, n2 + c->k[3]); n2 ^= f(c, n1 + c->k[4]); n1 ^= f(c, n2 + c->k[5]); n2 ^= f(c, n1 + c->k[6]); n1 ^= f(c, n2 + c->k[7]); n2 ^= f(c, n1 + c->k[7]); n1 ^= f(c, n2 + c->k[6]); n2 ^= f(c, n1 + c->k[5]); n1 ^= f(c, n2 + c->k[4]); n2 ^= f(c, n1 + c->k[3]); n1 ^= f(c, n2 + c->k[2]); n2 ^= f(c, n1 + c->k[1]); n1 ^= f(c, n2 + c->k[0]); out[0] = (byte) (n2 & 0xff); out[1] = (byte) ((n2 >> 8) & 0xff); out[2] = (byte) ((n2 >> 16) & 0xff); out[3] = (byte) (n2 >> 24); out[4] = (byte) (n1 & 0xff); out[5] = (byte) ((n1 >> 8) & 0xff); out[6] = (byte) ((n1 >> 16) & 0xff); out[7] = (byte) (n1 >> 24); } /* Low-level decryption routine. Decrypts one 64-bit block */ void gostdecrypt(gost_ctx * c, const byte * in, byte * out) { register word32 n1, n2; /* As named in the GOST */ n1 = in[0] | (in[1] << 8) | (in[2] << 16) | ((word32) in[3] << 24); n2 = in[4] | (in[5] << 8) | (in[6] << 16) | ((word32) in[7] << 24); n2 ^= f(c, n1 + c->k[0]); n1 ^= f(c, n2 + c->k[1]); n2 ^= f(c, n1 + c->k[2]); n1 ^= f(c, n2 + c->k[3]); n2 ^= f(c, n1 + c->k[4]); n1 ^= f(c, n2 + c->k[5]); n2 ^= f(c, n1 + c->k[6]); n1 ^= f(c, n2 + c->k[7]); n2 ^= f(c, n1 + c->k[7]); n1 ^= f(c, n2 + c->k[6]); n2 ^= f(c, n1 + c->k[5]); n1 ^= f(c, n2 + c->k[4]); n2 ^= f(c, n1 + c->k[3]); n1 ^= f(c, n2 + c->k[2]); n2 ^= f(c, n1 + c->k[1]); n1 ^= f(c, n2 + c->k[0]); n2 ^= f(c, n1 + c->k[7]); n1 ^= f(c, n2 + c->k[6]); n2 ^= f(c, n1 + c->k[5]); n1 ^= f(c, n2 + c->k[4]); n2 ^= f(c, n1 + c->k[3]); n1 ^= f(c, n2 + c->k[2]); n2 ^= f(c, n1 + c->k[1]); n1 ^= f(c, n2 + c->k[0]); n2 ^= f(c, n1 + c->k[7]); n1 ^= f(c, n2 + c->k[6]); n2 ^= f(c, n1 + c->k[5]); n1 ^= f(c, n2 + c->k[4]); n2 ^= f(c, n1 + c->k[3]); n1 ^= f(c, n2 + c->k[2]); n2 ^= f(c, n1 + c->k[1]); n1 ^= f(c, n2 + c->k[0]); out[0] = (byte) (n2 & 0xff); out[1] = (byte) ((n2 >> 8) & 0xff); out[2] = (byte) ((n2 >> 16) & 0xff); out[3] = (byte) (n2 >> 24); out[4] = (byte) (n1 & 0xff); out[5] = (byte) ((n1 >> 8) & 0xff); out[6] = (byte) ((n1 >> 16) & 0xff); out[7] = (byte) (n1 >> 24); } /* Encrypts several blocks in ECB mode */ void gost_enc(gost_ctx * c, const byte * clear, byte * cipher, int blocks) { int i; for (i = 0; i < blocks; i++) { gostcrypt(c, clear, cipher); clear += 8; cipher += 8; } } /* Decrypts several blocks in ECB mode */ void gost_dec(gost_ctx * c, const byte * cipher, byte * clear, int blocks) { int i; for (i = 0; i < blocks; i++) { gostdecrypt(c, cipher, clear); clear += 8; cipher += 8; } } /* Encrypts several full blocks in CFB mode using 8byte IV */ void gost_enc_cfb(gost_ctx * ctx, const byte * iv, const byte * clear, byte * cipher, int blocks) { byte cur_iv[8]; byte gamma[8]; int i, j; const byte *in; byte *out; memcpy(cur_iv, iv, 8); for (i = 0, in = clear, out = cipher; i < blocks; i++, in += 8, out += 8) { gostcrypt(ctx, cur_iv, gamma); for (j = 0; j < 8; j++) { cur_iv[j] = out[j] = in[j] ^ gamma[j]; } } } /* Decrypts several full blocks in CFB mode using 8byte IV */ void gost_dec_cfb(gost_ctx * ctx, const byte * iv, const byte * cipher, byte * clear, int blocks) { byte cur_iv[8]; byte gamma[8]; int i, j; const byte *in; byte *out; memcpy(cur_iv, iv, 8); for (i = 0, in = cipher, out = clear; i < blocks; i++, in += 8, out += 8) { gostcrypt(ctx, cur_iv, gamma); for (j = 0; j < 8; j++) { out[j] = (cur_iv[j] = in[j]) ^ gamma[j]; } } } /* Encrypts one block using specified key */ void gost_enc_with_key(gost_ctx * c, byte * key, byte * inblock, byte * outblock) { gost_key(c, key); gostcrypt(c, inblock, outblock); } /* Set 256 bit key into context */ void gost_key(gost_ctx * c, const byte * k) { int i, j; for (i = 0, j = 0; i < 8; i++, j += 4) { c->k[i] = k[j] | (k[j + 1] << 8) | (k[j + 2] << 16) | ((word32) k[j + 3] << 24); } } /* Retrieve 256-bit key from context */ void gost_get_key(gost_ctx * c, byte * k) { int i, j; for (i = 0, j = 0; i < 8; i++, j += 4) { k[j] = (byte) (c->k[i] & 0xFF); k[j + 1] = (byte) ((c->k[i] >> 8) & 0xFF); k[j + 2] = (byte) ((c->k[i] >> 16) & 0xFF); k[j + 3] = (byte) ((c->k[i] >> 24) & 0xFF); } } /* Initalize context. Provides default value for subst_block */ void gost_init(gost_ctx * c, const gost_subst_block * b) { if (!b) { b = &GostR3411_94_TestParamSet; } kboxinit(c, b); } /* Cleans up key from context */ void gost_destroy(gost_ctx * c) { int i; for (i = 0; i < 8; i++) c->k[i] = 0; } /* * Compute GOST 28147 mac block Parameters gost_ctx *c - context initalized * with substitution blocks and key buffer - 8-byte mac state buffer block * 8-byte block to process. */ void mac_block(gost_ctx * c, byte * buffer, const byte * block) { register word32 n1, n2; /* As named in the GOST */ int i; for (i = 0; i < 8; i++) { buffer[i] ^= block[i]; } n1 = buffer[0] | (buffer[1] << 8) | (buffer[2] << 16) | ((word32) buffer[3] << 24); n2 = buffer[4] | (buffer[5] << 8) | (buffer[6] << 16) | ((word32) buffer[7] << 24); /* Instead of swapping halves, swap names each round */ n2 ^= f(c, n1 + c->k[0]); n1 ^= f(c, n2 + c->k[1]); n2 ^= f(c, n1 + c->k[2]); n1 ^= f(c, n2 + c->k[3]); n2 ^= f(c, n1 + c->k[4]); n1 ^= f(c, n2 + c->k[5]); n2 ^= f(c, n1 + c->k[6]); n1 ^= f(c, n2 + c->k[7]); n2 ^= f(c, n1 + c->k[0]); n1 ^= f(c, n2 + c->k[1]); n2 ^= f(c, n1 + c->k[2]); n1 ^= f(c, n2 + c->k[3]); n2 ^= f(c, n1 + c->k[4]); n1 ^= f(c, n2 + c->k[5]); n2 ^= f(c, n1 + c->k[6]); n1 ^= f(c, n2 + c->k[7]); buffer[0] = (byte) (n1 & 0xff); buffer[1] = (byte) ((n1 >> 8) & 0xff); buffer[2] = (byte) ((n1 >> 16) & 0xff); buffer[3] = (byte) (n1 >> 24); buffer[4] = (byte) (n2 & 0xff); buffer[5] = (byte) ((n2 >> 8) & 0xff); buffer[6] = (byte) ((n2 >> 16) & 0xff); buffer[7] = (byte) (n2 >> 24); } /* Get mac with specified number of bits from MAC state buffer */ void get_mac(byte * buffer, int nbits, byte * out) { int nbytes = nbits >> 3; int rembits = nbits & 7; int mask = rembits ? ((1 < rembits) - 1) : 0; int i; for (i = 0; i < nbytes; i++) out[i] = buffer[i]; if (rembits) out[i] = buffer[i] & mask; } /* * Compute mac of specified length (in bits) from data. Context should be * initialized with key and subst blocks */ int gost_mac(gost_ctx * ctx, int mac_len, const unsigned char *data, unsigned int data_len, unsigned char *mac) { byte buffer[8] = { 0, 0, 0, 0, 0, 0, 0, 0 }; byte buf2[8]; unsigned int i; for (i = 0; i + 8 <= data_len; i += 8) mac_block(ctx, buffer, data + i); if (i < data_len) { memset(buf2, 0, 8); memcpy(buf2, data + i, data_len - i); mac_block(ctx, buffer, buf2); i += 8; } if (i == 8) { memset(buf2, 0, 8); mac_block(ctx, buffer, buf2); } get_mac(buffer, mac_len, mac); return 1; } /* Compute MAC with non-zero IV. Used in some RFC 4357 algorithms */ int gost_mac_iv(gost_ctx * ctx, int mac_len, const unsigned char *iv, const unsigned char *data, unsigned int data_len, unsigned char *mac) { byte buffer[8]; byte buf2[8]; unsigned int i; memcpy(buffer, iv, 8); for (i = 0; i + 8 <= data_len; i += 8) mac_block(ctx, buffer, data + i); if (i < data_len) { memset(buf2, 0, 8); memcpy(buf2, data + i, data_len - i); mac_block(ctx, buffer, buf2); i += 8; } if (i == 8) { memset(buf2, 0, 8); mac_block(ctx, buffer, buf2); } get_mac(buffer, mac_len, mac); return 1; } /* Implements key meshing algorithm by modifing ctx and IV in place */ void cryptopro_key_meshing(gost_ctx * ctx, unsigned char *iv) { unsigned char newkey[32], newiv[8]; /* Set static keymeshing key */ /* "Decrypt" key with keymeshing key */ gost_dec(ctx, CryptoProKeyMeshingKey, newkey, 4); /* set new key */ gost_key(ctx, newkey); /* Encrypt iv with new key */ gostcrypt(ctx, iv, newiv); memcpy(iv, newiv, 8); } libengine-gost-openssl1.1-1.1.0.1/gost89.h000066400000000000000000000101301315100554000177520ustar00rootroot00000000000000/********************************************************************** * gost89.h * * Copyright (c) 2005-2006 Cryptocom LTD * * This file is distributed under the same license as OpenSSL * * * * Declarations for GOST 28147-89 encryption algorithm * * No OpenSSL libraries required to compile and use * * this code * **********************************************************************/ #ifndef GOST89_H # define GOST89_H /* Typedef for unsigned 32-bit integer */ # if __LONG_MAX__ > 2147483647L typedef unsigned int u4; # else typedef unsigned long u4; # endif /* Typedef for unsigned 8-bit integer */ typedef unsigned char byte; /* Internal representation of GOST substitution blocks */ typedef struct { byte k8[16]; byte k7[16]; byte k6[16]; byte k5[16]; byte k4[16]; byte k3[16]; byte k2[16]; byte k1[16]; } gost_subst_block; /* Cipher context includes key and preprocessed substitution block */ typedef struct { u4 k[8]; /* Constant s-boxes -- set up in gost_init(). */ u4 k87[256], k65[256], k43[256], k21[256]; } gost_ctx; /* * Note: encrypt and decrypt expect full blocks--padding blocks is caller's * responsibility. All bulk encryption is done in ECB mode by these calls. * Other modes may be added easily enough. */ /* Encrypt several full blocks in ECB mode */ void gost_enc(gost_ctx * ctx, const byte * clear, byte * cipher, int blocks); /* Decrypt several full blocks in ECB mode */ void gost_dec(gost_ctx * ctx, const byte * cipher, byte * clear, int blocks); /* Encrypts several full blocks in CFB mode using 8byte IV */ void gost_enc_cfb(gost_ctx * ctx, const byte * iv, const byte * clear, byte * cipher, int blocks); /* Decrypts several full blocks in CFB mode using 8byte IV */ void gost_dec_cfb(gost_ctx * ctx, const byte * iv, const byte * cipher, byte * clear, int blocks); /* Encrypt one block */ void gostcrypt(gost_ctx * c, const byte * in, byte * out); /* Decrypt one block */ void gostdecrypt(gost_ctx * c, const byte * in, byte * out); /* Set key into context */ void gost_key(gost_ctx * ctx, const byte * key); /* Get key from context */ void gost_get_key(gost_ctx * ctx, byte * key); /* Set S-blocks into context */ void gost_init(gost_ctx * ctx, const gost_subst_block * subst_block); /* Clean up context */ void gost_destroy(gost_ctx * ctx); /* Intermediate function used for calculate hash */ void gost_enc_with_key(gost_ctx *, byte * key, byte * inblock, byte * outblock); /* Compute MAC of given length in bits from data */ int gost_mac(gost_ctx * ctx, int hmac_len, const unsigned char *data, unsigned int data_len, unsigned char *hmac); /* * Compute MAC of given length in bits from data, using non-zero 8-byte IV * (non-standard, for use in CryptoPro key transport only */ int gost_mac_iv(gost_ctx * ctx, int hmac_len, const unsigned char *iv, const unsigned char *data, unsigned int data_len, unsigned char *hmac); /* Perform one step of MAC calculation like gostcrypt */ void mac_block(gost_ctx * c, byte * buffer, const byte * block); /* Extracts MAC value from mac state buffer */ void get_mac(byte * buffer, int nbits, byte * out); /* Implements cryptopro key meshing algorithm. Expect IV to be 8-byte size*/ void cryptopro_key_meshing(gost_ctx * ctx, unsigned char *iv); /* Parameter sets specified in RFC 4357 */ extern gost_subst_block GostR3411_94_TestParamSet; extern gost_subst_block GostR3411_94_CryptoProParamSet; extern gost_subst_block Gost28147_TestParamSet; extern gost_subst_block Gost28147_CryptoProParamSetA; extern gost_subst_block Gost28147_CryptoProParamSetB; extern gost_subst_block Gost28147_CryptoProParamSetC; extern gost_subst_block Gost28147_CryptoProParamSetD; extern gost_subst_block Gost28147_TC26ParamSetZ; extern const byte CryptoProKeyMeshingKey[]; typedef unsigned int word32; #endif libengine-gost-openssl1.1-1.1.0.1/gost_ameth.c000066400000000000000000000652721315100554000207630ustar00rootroot00000000000000/********************************************************************** * gost_ameth.c * * Copyright (c) 2005-2006 Cryptocom LTD * * This file is distributed under the same license as OpenSSL * * * * Implementation of RFC 4490/4491 ASN1 method * * for OpenSSL * * Requires OpenSSL 0.9.9 for compilation * **********************************************************************/ #include #include #include #include #include #include #ifndef OPENSSL_NO_CMS # include #endif #include "gost_lcl.h" #include "e_gost_err.h" /* * Pack bignum into byte buffer of given size, filling all leading bytes by * zeros */ int store_bignum(const BIGNUM *bn, unsigned char *buf, int len) { int bytes = BN_num_bytes(bn); if (bytes > len) return 0; memset(buf, 0, len); BN_bn2bin(bn, buf + len - bytes); return 1; } static int pkey_bits_gost(const EVP_PKEY *pk) { if (!pk) return -1; switch (EVP_PKEY_base_id(pk)) { case NID_id_GostR3410_2001: case NID_id_GostR3410_2012_256: return 256; case NID_id_GostR3410_2012_512: return 512; } return -1; } static ASN1_STRING *encode_gost_algor_params(const EVP_PKEY *key) { ASN1_STRING *params = ASN1_STRING_new(); GOST_KEY_PARAMS *gkp = GOST_KEY_PARAMS_new(); int pkey_param_nid = NID_undef; void *key_ptr = EVP_PKEY_get0((EVP_PKEY *)key); int result = 0; if (!params || !gkp) { GOSTerr(GOST_F_ENCODE_GOST_ALGOR_PARAMS, ERR_R_MALLOC_FAILURE); goto err; } switch (EVP_PKEY_base_id(key)) { case NID_id_GostR3410_2012_256: pkey_param_nid = EC_GROUP_get_curve_name(EC_KEY_get0_group(key_ptr)); gkp->hash_params = OBJ_nid2obj(NID_id_GostR3411_2012_256); break; case NID_id_GostR3410_2012_512: pkey_param_nid = EC_GROUP_get_curve_name(EC_KEY_get0_group(key_ptr)); gkp->hash_params = OBJ_nid2obj(NID_id_GostR3411_2012_512); break; case NID_id_GostR3410_2001: pkey_param_nid = EC_GROUP_get_curve_name(EC_KEY_get0_group(key_ptr)); gkp->hash_params = OBJ_nid2obj(NID_id_GostR3411_94_CryptoProParamSet); break; } if (pkey_param_nid == NID_undef) { GOSTerr(GOST_F_ENCODE_GOST_ALGOR_PARAMS, GOST_R_INVALID_PARAMSET); goto err; } gkp->key_params = OBJ_nid2obj(pkey_param_nid); /* * gkp->cipher_params = OBJ_nid2obj(cipher_param_nid); */ params->length = i2d_GOST_KEY_PARAMS(gkp, ¶ms->data); if (params->length <= 0) { GOSTerr(GOST_F_ENCODE_GOST_ALGOR_PARAMS, ERR_R_MALLOC_FAILURE); goto err; } params->type = V_ASN1_SEQUENCE; result = 1; err: if (gkp) GOST_KEY_PARAMS_free(gkp); if (result == 0) { /* if error */ if (params) ASN1_STRING_free(params); return NULL; } return params; } static int gost_decode_nid_params(EVP_PKEY *pkey, int pkey_nid, int param_nid) { void *key_ptr = EVP_PKEY_get0(pkey); switch (pkey_nid) { case NID_id_GostR3410_2012_256: case NID_id_GostR3410_2012_512: case NID_id_GostR3410_2001: if (!key_ptr) { key_ptr = EC_KEY_new(); if (!EVP_PKEY_assign(pkey, pkey_nid, key_ptr)) { EC_KEY_free(key_ptr); break; } } return fill_GOST_EC_params(key_ptr, param_nid); } return 0; } /* * Parses GOST algorithm parameters from X509_ALGOR and modifies pkey setting * NID and parameters */ static int decode_gost_algor_params(EVP_PKEY *pkey, const X509_ALGOR *palg) { const ASN1_OBJECT *palg_obj = NULL; int ptype = V_ASN1_UNDEF; int pkey_nid = NID_undef, param_nid = NID_undef; ASN1_STRING *pval = NULL; const unsigned char *p; GOST_KEY_PARAMS *gkp = NULL; if (!pkey || !palg) return 0; X509_ALGOR_get0(&palg_obj, &ptype, (const void **)&pval, palg); if (ptype != V_ASN1_SEQUENCE) { GOSTerr(GOST_F_DECODE_GOST_ALGOR_PARAMS, GOST_R_BAD_KEY_PARAMETERS_FORMAT); return 0; } p = pval->data; pkey_nid = OBJ_obj2nid(palg_obj); gkp = d2i_GOST_KEY_PARAMS(NULL, &p, pval->length); if (!gkp) { GOSTerr(GOST_F_DECODE_GOST_ALGOR_PARAMS, GOST_R_BAD_PKEY_PARAMETERS_FORMAT); return 0; } param_nid = OBJ_obj2nid(gkp->key_params); GOST_KEY_PARAMS_free(gkp); if (!EVP_PKEY_set_type(pkey, pkey_nid)) { GOSTerr(GOST_F_DECODE_GOST_ALGOR_PARAMS, ERR_R_INTERNAL_ERROR); return 0; } return gost_decode_nid_params(pkey, pkey_nid, param_nid); } static int gost_set_priv_key(EVP_PKEY *pkey, BIGNUM *priv) { switch (EVP_PKEY_base_id(pkey)) { case NID_id_GostR3410_2012_512: case NID_id_GostR3410_2012_256: case NID_id_GostR3410_2001: { EC_KEY *ec = EVP_PKEY_get0(pkey); if (!ec) { ec = EC_KEY_new(); EVP_PKEY_assign(pkey, EVP_PKEY_base_id(pkey), ec); } if (!EC_KEY_set_private_key(ec, priv)) return 0; if (!EVP_PKEY_missing_parameters(pkey)) gost_ec_compute_public(ec); break; } default: return 0; } return 1; } BIGNUM *gost_get0_priv_key(const EVP_PKEY *pkey) { switch (EVP_PKEY_base_id(pkey)) { case NID_id_GostR3410_2012_512: case NID_id_GostR3410_2012_256: case NID_id_GostR3410_2001: { EC_KEY *ec = EVP_PKEY_get0((EVP_PKEY *)pkey); if (ec) return (BIGNUM *)EC_KEY_get0_private_key(ec); break; } } return NULL; } /* * Control function */ static int pkey_ctrl_gost(EVP_PKEY *pkey, int op, long arg1, void *arg2) { int nid = EVP_PKEY_base_id(pkey), md_nid = NID_undef; X509_ALGOR *alg1 = NULL, *alg2 = NULL; switch (nid) { case NID_id_GostR3410_2012_512: md_nid = NID_id_GostR3411_2012_512; break; case NID_id_GostR3410_2012_256: md_nid = NID_id_GostR3411_2012_256; break; case NID_id_GostR3410_2001: case NID_id_GostR3410_94: md_nid = NID_id_GostR3411_94; break; default: return -1; } switch (op) { case ASN1_PKEY_CTRL_PKCS7_SIGN: if (arg1 == 0) { PKCS7_SIGNER_INFO_get0_algs((PKCS7_SIGNER_INFO *)arg2, NULL, &alg1, &alg2); X509_ALGOR_set0(alg1, OBJ_nid2obj(md_nid), V_ASN1_NULL, 0); X509_ALGOR_set0(alg2, OBJ_nid2obj(nid), V_ASN1_NULL, 0); } return 1; #ifndef OPENSSL_NO_CMS case ASN1_PKEY_CTRL_CMS_SIGN: if (arg1 == 0) { CMS_SignerInfo_get0_algs((CMS_SignerInfo *)arg2, NULL, NULL, &alg1, &alg2); X509_ALGOR_set0(alg1, OBJ_nid2obj(md_nid), V_ASN1_NULL, 0); X509_ALGOR_set0(alg2, OBJ_nid2obj(nid), V_ASN1_NULL, 0); } return 1; #endif case ASN1_PKEY_CTRL_PKCS7_ENCRYPT: if (arg1 == 0) { ASN1_STRING *params = encode_gost_algor_params(pkey); if (!params) { return -1; } PKCS7_RECIP_INFO_get0_alg((PKCS7_RECIP_INFO *)arg2, &alg1); X509_ALGOR_set0(alg1, OBJ_nid2obj(EVP_PKEY_id(pkey)), V_ASN1_SEQUENCE, params); } return 1; #ifndef OPENSSL_NO_CMS case ASN1_PKEY_CTRL_CMS_ENVELOPE: if (arg1 == 0) { ASN1_STRING *params = encode_gost_algor_params(pkey); if (!params) { return -1; } CMS_RecipientInfo_ktri_get0_algs((CMS_RecipientInfo *)arg2, NULL, NULL, &alg1); X509_ALGOR_set0(alg1, OBJ_nid2obj(EVP_PKEY_id(pkey)), V_ASN1_SEQUENCE, params); } return 1; #endif case ASN1_PKEY_CTRL_DEFAULT_MD_NID: *(int *)arg2 = md_nid; return 2; } return -2; } /* --------------------- free functions * ------------------------------*/ static void pkey_free_gost_ec(EVP_PKEY *key) { EC_KEY_free((EC_KEY *)EVP_PKEY_get0(key)); } /* ------------------ private key functions -----------------------------*/ static BIGNUM *unmask_priv_key(EVP_PKEY *pk, const unsigned char *buf, int len, int num_masks) { BIGNUM *pknum_masked = NULL, *q = NULL; const EC_KEY *key_ptr = (pk) ? EVP_PKEY_get0(pk) : NULL; const EC_GROUP *group = (key_ptr) ? EC_KEY_get0_group(key_ptr) : NULL; pknum_masked = hashsum2bn(buf, len); if (!pknum_masked) return NULL; if (num_masks > 0) { /* * XXX Remove sign by gost94 */ const unsigned char *p = buf + num_masks * len; q = BN_new(); if (!q || !group || EC_GROUP_get_order(group, q, NULL) <= 0) { BN_free(pknum_masked); pknum_masked = NULL; goto end; } for (; p != buf; p -= len) { BIGNUM *mask = hashsum2bn(p, len); BN_CTX *ctx = BN_CTX_new(); BN_mod_mul(pknum_masked, pknum_masked, mask, q, ctx); BN_CTX_free(ctx); BN_free(mask); } } end: if (q) BN_free(q); return pknum_masked; } static int priv_decode_gost(EVP_PKEY *pk, const PKCS8_PRIV_KEY_INFO *p8inf) { const unsigned char *pkey_buf = NULL, *p = NULL; int priv_len = 0; BIGNUM *pk_num = NULL; int ret = 0; const X509_ALGOR *palg = NULL; const ASN1_OBJECT *palg_obj = NULL; ASN1_INTEGER *priv_key = NULL; int expected_key_len = 32; if (!PKCS8_pkey_get0(&palg_obj, &pkey_buf, &priv_len, &palg, p8inf)) return 0; p = pkey_buf; if (!decode_gost_algor_params(pk, palg)) { return 0; } expected_key_len = pkey_bits_gost(pk) > 0 ? pkey_bits_gost(pk) / 8 : 0; if (expected_key_len == 0) { GOSTerr(GOST_F_PRIV_DECODE_GOST, EVP_R_DECODE_ERROR); return 0; } if (priv_len % expected_key_len == 0) { /* Key is not wrapped but masked */ pk_num = unmask_priv_key(pk, pkey_buf, expected_key_len, priv_len / expected_key_len - 1); } else if (V_ASN1_OCTET_STRING == *p) { /* New format - Little endian octet string */ ASN1_OCTET_STRING *s = d2i_ASN1_OCTET_STRING(NULL, &p, priv_len); if (!s || ((s->length != 32) && (s->length != 64))) { ASN1_STRING_free(s); GOSTerr(GOST_F_PRIV_DECODE_GOST, EVP_R_DECODE_ERROR); return 0; } pk_num = hashsum2bn(s->data, s->length); ASN1_STRING_free(s); } else if (V_ASN1_INTEGER == *p) { priv_key = d2i_ASN1_INTEGER(NULL, &p, priv_len); if (!priv_key) { GOSTerr(GOST_F_PRIV_DECODE_GOST, EVP_R_DECODE_ERROR); return 0; } pk_num = ASN1_INTEGER_to_BN(priv_key, NULL); ASN1_INTEGER_free(priv_key); } else if ((V_ASN1_SEQUENCE | V_ASN1_CONSTRUCTED) == *p) { MASKED_GOST_KEY *mgk = NULL; mgk = d2i_MASKED_GOST_KEY(NULL, &p, priv_len); if (!mgk) { GOSTerr(GOST_F_PRIV_DECODE_GOST, EVP_R_DECODE_ERROR); return 0; } priv_len = mgk->masked_priv_key->length; if (priv_len % expected_key_len) { MASKED_GOST_KEY_free(mgk); GOSTerr(GOST_F_PRIV_DECODE_GOST, EVP_R_DECODE_ERROR); return 0; } pk_num = unmask_priv_key(pk, mgk->masked_priv_key->data, expected_key_len, priv_len / expected_key_len - 1); MASKED_GOST_KEY_free(mgk); } else { GOSTerr(GOST_F_PRIV_DECODE_GOST, EVP_R_DECODE_ERROR); return 0; } if (pk_num == NULL) { GOSTerr(GOST_F_PRIV_DECODE_GOST, EVP_R_DECODE_ERROR); return 0; } ret = gost_set_priv_key(pk, pk_num); BN_free(pk_num); return ret; } /* ----------------------------------------------------------------------*/ static int priv_encode_gost(PKCS8_PRIV_KEY_INFO *p8, const EVP_PKEY *pk) { ASN1_OBJECT *algobj = OBJ_nid2obj(EVP_PKEY_base_id(pk)); ASN1_STRING *params = encode_gost_algor_params(pk); unsigned char /**priv_buf = NULL,*/ *buf = NULL; int key_len = pkey_bits_gost(pk), /*priv_len = 0,*/ i = 0; /*ASN1_STRING *octet = NULL;*/ if (!params) { return 0; } key_len = (key_len < 0) ? 0 : key_len / 8; if (key_len == 0 || !(buf = OPENSSL_malloc(key_len))) { return 0; } if (!store_bignum(gost_get0_priv_key(pk), buf, key_len)) { OPENSSL_free(buf); return 0; } /* Convert buf to Little-endian */ for (i = 0; i < key_len / 2; i++) { unsigned char tmp = buf[i]; buf[i] = buf[key_len - 1 - i]; buf[key_len - 1 - i] = tmp; } /* octet = ASN1_STRING_new(); ASN1_OCTET_STRING_set(octet, buf, key_len); priv_len = i2d_ASN1_OCTET_STRING(octet, &priv_buf); ASN1_STRING_free(octet); OPENSSL_free(buf); return PKCS8_pkey_set0(p8, algobj, 0, V_ASN1_SEQUENCE, params, priv_buf, priv_len); */ return PKCS8_pkey_set0(p8, algobj, 0, V_ASN1_SEQUENCE, params, buf, key_len); } /* --------- printing keys --------------------------------*/ static int print_gost_priv(BIO *out, const EVP_PKEY *pkey, int indent) { BIGNUM *key; if (!BIO_indent(out, indent, 128)) return 0; BIO_printf(out, "Private key: "); key = gost_get0_priv_key(pkey); if (!key) BIO_printf(out, ""); else BN_print(out, key); BIO_printf(out, "\n"); return 1; } static int print_gost_ec_pub(BIO *out, const EVP_PKEY *pkey, int indent) { BN_CTX *ctx; BIGNUM *X, *Y; const EC_POINT *pubkey; const EC_GROUP *group; EC_KEY *key = (EC_KEY *)EVP_PKEY_get0((EVP_PKEY *)pkey); int ok = 0; ctx = BN_CTX_new(); if (!ctx) { GOSTerr(GOST_F_PRINT_GOST_EC_PUB, ERR_R_MALLOC_FAILURE); return 0; } BN_CTX_start(ctx); X = BN_CTX_get(ctx); Y = BN_CTX_get(ctx); pubkey = (key) ? EC_KEY_get0_public_key(key) : NULL; group = (key) ? EC_KEY_get0_group(key) : NULL; if (!pubkey || !group) goto err; if (!EC_POINT_get_affine_coordinates_GFp(group, pubkey, X, Y, ctx)) { GOSTerr(GOST_F_PRINT_GOST_EC_PUB, ERR_R_EC_LIB); goto err; } if (!BIO_indent(out, indent, 128)) goto err; BIO_printf(out, "Public key:\n"); if (!BIO_indent(out, indent + 3, 128)) goto err; BIO_printf(out, "X:"); BN_print(out, X); BIO_printf(out, "\n"); if (!BIO_indent(out, indent + 3, 128)) goto err; BIO_printf(out, "Y:"); BN_print(out, Y); BIO_printf(out, "\n"); ok = 1; err: BN_CTX_end(ctx); BN_CTX_free(ctx); return ok; } static int print_gost_ec_param(BIO *out, const EVP_PKEY *pkey, int indent) { EC_KEY *ec = EVP_PKEY_get0((EVP_PKEY *)pkey); const EC_GROUP *group = (ec) ? EC_KEY_get0_group(ec) : NULL; int param_nid; if (!group) return 0; param_nid = EC_GROUP_get_curve_name(group); if (!BIO_indent(out, indent, 128)) return 0; BIO_printf(out, "Parameter set: %s\n", OBJ_nid2ln(param_nid)); return 1; } static int print_gost_ec(BIO *out, const EVP_PKEY *pkey, int indent, ASN1_PCTX *pctx, int type) { if (type == 2) { if (print_gost_priv(out, pkey, indent) == 0) return 0; } if (type >= 1) { if (print_gost_ec_pub(out, pkey, indent) == 0) return 0; } return print_gost_ec_param(out, pkey, indent); } static int param_print_gost_ec(BIO *out, const EVP_PKEY *pkey, int indent, ASN1_PCTX *pctx) { return print_gost_ec(out, pkey, indent, pctx, 0); } static int pub_print_gost_ec(BIO *out, const EVP_PKEY *pkey, int indent, ASN1_PCTX *pctx) { return print_gost_ec(out, pkey, indent, pctx, 1); } static int priv_print_gost_ec(BIO *out, const EVP_PKEY *pkey, int indent, ASN1_PCTX *pctx) { return print_gost_ec(out, pkey, indent, pctx, 2); } /* ---------------------------------------------------------------------*/ static int param_missing_gost_ec(const EVP_PKEY *pk) { const EC_KEY *ec = EVP_PKEY_get0((EVP_PKEY *)pk); if (!ec) return 1; if (!EC_KEY_get0_group(ec)) return 1; return 0; } static int param_copy_gost_ec(EVP_PKEY *to, const EVP_PKEY *from) { EC_KEY *eto = EVP_PKEY_get0(to); const EC_KEY *efrom = EVP_PKEY_get0((EVP_PKEY *)from); if (EVP_PKEY_base_id(from) != EVP_PKEY_base_id(to)) { GOSTerr(GOST_F_PARAM_COPY_GOST_EC, GOST_R_INCOMPATIBLE_ALGORITHMS); return 0; } if (!efrom) { GOSTerr(GOST_F_PARAM_COPY_GOST_EC, GOST_R_KEY_PARAMETERS_MISSING); return 0; } if (!eto) { eto = EC_KEY_new(); if (!eto) { GOSTerr(GOST_F_PARAM_COPY_GOST_EC, ERR_R_MALLOC_FAILURE); return 0; } if (!EVP_PKEY_assign(to, EVP_PKEY_base_id(from), eto)) { GOSTerr(GOST_F_PARAM_COPY_GOST_EC, ERR_R_INTERNAL_ERROR); EC_KEY_free(eto); return 0; } } if (!EC_KEY_set_group(eto, EC_KEY_get0_group(efrom))) { GOSTerr(GOST_F_PARAM_COPY_GOST_EC, ERR_R_INTERNAL_ERROR); return 0; } if (EC_KEY_get0_private_key(eto)) { return gost_ec_compute_public(eto); } return 1; } static int param_cmp_gost_ec(const EVP_PKEY *a, const EVP_PKEY *b) { const EC_GROUP *group_a, *group_b; EC_KEY *ec_a = EVP_PKEY_get0((EVP_PKEY *)a); EC_KEY *ec_b = EVP_PKEY_get0((EVP_PKEY *)b); if (!ec_a || !ec_b) return 0; group_a = EC_KEY_get0_group(ec_a); group_b = EC_KEY_get0_group(ec_b); if (!group_a || !group_b) return 0; if (EC_GROUP_get_curve_name(group_a) == EC_GROUP_get_curve_name(group_b)) { return 1; } return 0; } /* ---------- Public key functions * --------------------------------------*/ static int pub_decode_gost_ec(EVP_PKEY *pk, X509_PUBKEY *pub) { X509_ALGOR *palg = NULL; const unsigned char *pubkey_buf = NULL; unsigned char *databuf; ASN1_OBJECT *palgobj = NULL; int pub_len; EC_POINT *pub_key; BIGNUM *X, *Y; ASN1_OCTET_STRING *octet = NULL; size_t len; const EC_GROUP *group; if (!X509_PUBKEY_get0_param(&palgobj, &pubkey_buf, &pub_len, &palg, pub)) return 0; EVP_PKEY_assign(pk, OBJ_obj2nid(palgobj), NULL); if (!decode_gost_algor_params(pk, palg)) return 0; group = EC_KEY_get0_group(EVP_PKEY_get0(pk)); octet = d2i_ASN1_OCTET_STRING(NULL, &pubkey_buf, pub_len); if (!octet) { GOSTerr(GOST_F_PUB_DECODE_GOST_EC, ERR_R_MALLOC_FAILURE); return 0; } databuf = OPENSSL_malloc(octet->length); if (databuf == NULL) { GOSTerr(GOST_F_PUB_DECODE_GOST_EC, ERR_R_MALLOC_FAILURE); ASN1_OCTET_STRING_free(octet); return 0; } BUF_reverse(databuf, octet->data, octet->length); len = octet->length / 2; ASN1_OCTET_STRING_free(octet); Y = BN_bin2bn(databuf, len, NULL); X = BN_bin2bn(databuf + len, len, NULL); OPENSSL_free(databuf); pub_key = EC_POINT_new(group); if (!EC_POINT_set_affine_coordinates_GFp(group, pub_key, X, Y, NULL)) { GOSTerr(GOST_F_PUB_DECODE_GOST_EC, ERR_R_EC_LIB); EC_POINT_free(pub_key); BN_free(X); BN_free(Y); return 0; } BN_free(X); BN_free(Y); if (!EC_KEY_set_public_key(EVP_PKEY_get0(pk), pub_key)) { GOSTerr(GOST_F_PUB_DECODE_GOST_EC, ERR_R_EC_LIB); EC_POINT_free(pub_key); return 0; } EC_POINT_free(pub_key); return 1; } static int pub_encode_gost_ec(X509_PUBKEY *pub, const EVP_PKEY *pk) { ASN1_OBJECT *algobj = NULL; ASN1_OCTET_STRING *octet = NULL; void *pval = NULL; unsigned char *buf = NULL, *databuf = NULL; int data_len, ret = -1; const EC_POINT *pub_key; BIGNUM *X = NULL, *Y = NULL, *order = NULL; const EC_KEY *ec = EVP_PKEY_get0((EVP_PKEY *)pk); int ptype = V_ASN1_UNDEF; algobj = OBJ_nid2obj(EVP_PKEY_base_id(pk)); ASN1_STRING *params = encode_gost_algor_params(pk); pval = params; ptype = V_ASN1_SEQUENCE; order = BN_new(); if (!order) { GOSTerr(GOST_F_PUB_ENCODE_GOST_EC, ERR_R_MALLOC_FAILURE); goto err; } EC_GROUP_get_order(EC_KEY_get0_group(ec), order, NULL); pub_key = EC_KEY_get0_public_key(ec); if (!pub_key) { GOSTerr(GOST_F_PUB_ENCODE_GOST_EC, GOST_R_PUBLIC_KEY_UNDEFINED); goto err; } X = BN_new(); Y = BN_new(); if (!X || !Y) { GOSTerr(GOST_F_PUB_ENCODE_GOST_EC, ERR_R_MALLOC_FAILURE); goto err; } if (!EC_POINT_get_affine_coordinates_GFp(EC_KEY_get0_group(ec), pub_key, X, Y, NULL)) { GOSTerr(GOST_F_PUB_ENCODE_GOST_EC, ERR_R_INTERNAL_ERROR); goto err; } data_len = 2 * BN_num_bytes(order); databuf = OPENSSL_zalloc(data_len); if (databuf == NULL) { GOSTerr(GOST_F_PUB_ENCODE_GOST_EC, ERR_R_MALLOC_FAILURE); goto err; } store_bignum(X, databuf + data_len / 2, data_len / 2); store_bignum(Y, databuf, data_len / 2); BUF_reverse(databuf, NULL, data_len); octet = ASN1_OCTET_STRING_new(); if (octet == NULL) { GOSTerr(GOST_F_PUB_ENCODE_GOST_EC, ERR_R_MALLOC_FAILURE); goto err; } if (0 == ASN1_STRING_set(octet, databuf, data_len)) { GOSTerr(GOST_F_PUB_ENCODE_GOST_EC, ERR_R_MALLOC_FAILURE); goto err; } ret = i2d_ASN1_OCTET_STRING(octet, &buf); ASN1_BIT_STRING_free(octet); err: if (X) BN_free(X); if (Y) BN_free(Y); if (order) BN_free(order); if (databuf) OPENSSL_free(databuf); if (ret < 0) return 0; return X509_PUBKEY_set0_param(pub, algobj, ptype, pval, buf, ret); } static int pub_cmp_gost_ec(const EVP_PKEY *a, const EVP_PKEY *b) { const EC_KEY *ea = EVP_PKEY_get0((EVP_PKEY *)a); const EC_KEY *eb = EVP_PKEY_get0((EVP_PKEY *)b); const EC_POINT *ka, *kb; if (!ea || !eb) return 0; ka = EC_KEY_get0_public_key(ea); kb = EC_KEY_get0_public_key(eb); if (!ka || !kb) return 0; return (0 == EC_POINT_cmp(EC_KEY_get0_group(ea), ka, kb, NULL)); } static int pkey_size_gost(const EVP_PKEY *pk) { if (!pk) return -1; switch (EVP_PKEY_base_id(pk)) { case NID_id_GostR3410_94: case NID_id_GostR3410_2001: case NID_id_GostR3410_2012_256: return 64; case NID_id_GostR3410_2012_512: return 128; } return -1; } /* ---------------------- ASN1 METHOD for GOST MAC -------------------*/ static void mackey_free_gost(EVP_PKEY *pk) { OPENSSL_free(EVP_PKEY_get0(pk)); } static int mac_ctrl_gost(EVP_PKEY *pkey, int op, long arg1, void *arg2) { switch (op) { case ASN1_PKEY_CTRL_DEFAULT_MD_NID: if (arg2) { *(int *)arg2 = NID_id_Gost28147_89_MAC; return 2; } } return -2; } static int mac_ctrl_gost_12(EVP_PKEY *pkey, int op, long arg1, void *arg2) { switch (op) { case ASN1_PKEY_CTRL_DEFAULT_MD_NID: if (arg2) { *(int *)arg2 = NID_gost_mac_12; return 2; } } return -2; } static int gost2001_param_encode(const EVP_PKEY *pkey, unsigned char **pder) { int nid = EC_GROUP_get_curve_name(EC_KEY_get0_group (EVP_PKEY_get0((EVP_PKEY *)pkey))); return i2d_ASN1_OBJECT(OBJ_nid2obj(nid), pder); } static int gost2001_param_decode(EVP_PKEY *pkey, const unsigned char **pder, int derlen) { ASN1_OBJECT *obj = NULL; int nid; if (d2i_ASN1_OBJECT(&obj, pder, derlen) == NULL) { return 0; } nid = OBJ_obj2nid(obj); ASN1_OBJECT_free(obj); return gost_decode_nid_params(pkey, NID_id_GostR3410_2001, nid); } /* ----------------------------------------------------------------------*/ int register_ameth_gost(int nid, EVP_PKEY_ASN1_METHOD **ameth, const char *pemstr, const char *info) { *ameth = EVP_PKEY_asn1_new(nid, ASN1_PKEY_SIGPARAM_NULL, pemstr, info); if (!*ameth) return 0; switch (nid) { case NID_id_GostR3410_2001: EVP_PKEY_asn1_set_free(*ameth, pkey_free_gost_ec); EVP_PKEY_asn1_set_private(*ameth, priv_decode_gost, priv_encode_gost, priv_print_gost_ec); EVP_PKEY_asn1_set_param(*ameth, gost2001_param_decode, gost2001_param_encode, param_missing_gost_ec, param_copy_gost_ec, param_cmp_gost_ec, param_print_gost_ec); EVP_PKEY_asn1_set_public(*ameth, pub_decode_gost_ec, pub_encode_gost_ec, pub_cmp_gost_ec, pub_print_gost_ec, pkey_size_gost, pkey_bits_gost); EVP_PKEY_asn1_set_ctrl(*ameth, pkey_ctrl_gost); #if OPENSSL_VERSION_NUMBER >= 0x10100000L EVP_PKEY_asn1_set_security_bits(*ameth, pkey_bits_gost); #endif break; case NID_id_GostR3410_2012_256: case NID_id_GostR3410_2012_512: EVP_PKEY_asn1_set_free(*ameth, pkey_free_gost_ec); EVP_PKEY_asn1_set_private(*ameth, priv_decode_gost, priv_encode_gost, priv_print_gost_ec); EVP_PKEY_asn1_set_param(*ameth, NULL, NULL, param_missing_gost_ec, param_copy_gost_ec, param_cmp_gost_ec, NULL); EVP_PKEY_asn1_set_public(*ameth, pub_decode_gost_ec, pub_encode_gost_ec, pub_cmp_gost_ec, pub_print_gost_ec, pkey_size_gost, pkey_bits_gost); EVP_PKEY_asn1_set_ctrl(*ameth, pkey_ctrl_gost); #if OPENSSL_VERSION_NUMBER >= 0x10100000L EVP_PKEY_asn1_set_security_bits(*ameth, pkey_bits_gost); #endif break; case NID_id_Gost28147_89_MAC: EVP_PKEY_asn1_set_free(*ameth, mackey_free_gost); EVP_PKEY_asn1_set_ctrl(*ameth, mac_ctrl_gost); break; case NID_gost_mac_12: EVP_PKEY_asn1_set_free(*ameth, mackey_free_gost); EVP_PKEY_asn1_set_ctrl(*ameth, mac_ctrl_gost_12); break; } return 1; } libengine-gost-openssl1.1-1.1.0.1/gost_asn1.c000066400000000000000000000052251315100554000205170ustar00rootroot00000000000000/********************************************************************** * gost_keytrans.c * * Copyright (c) 2005-2006 Cryptocom LTD * * This file is distributed under the same license as OpenSSL * * * * ASN1 structure definition for GOST key transport * * Requires OpenSSL 0.9.9 for compilation * **********************************************************************/ #include #include #include #include "gost_lcl.h" ASN1_NDEF_SEQUENCE(GOST_KEY_TRANSPORT) = { ASN1_SIMPLE(GOST_KEY_TRANSPORT, key_info, GOST_KEY_INFO), ASN1_IMP(GOST_KEY_TRANSPORT, key_agreement_info, GOST_KEY_AGREEMENT_INFO, 0) } ASN1_NDEF_SEQUENCE_END(GOST_KEY_TRANSPORT) IMPLEMENT_ASN1_FUNCTIONS(GOST_KEY_TRANSPORT) ASN1_NDEF_SEQUENCE(GOST_KEY_INFO) = { ASN1_SIMPLE(GOST_KEY_INFO, encrypted_key, ASN1_OCTET_STRING), ASN1_SIMPLE(GOST_KEY_INFO, imit, ASN1_OCTET_STRING) } ASN1_NDEF_SEQUENCE_END(GOST_KEY_INFO) IMPLEMENT_ASN1_FUNCTIONS(GOST_KEY_INFO) ASN1_NDEF_SEQUENCE(GOST_KEY_AGREEMENT_INFO) = { ASN1_SIMPLE(GOST_KEY_AGREEMENT_INFO, cipher, ASN1_OBJECT), ASN1_IMP_OPT(GOST_KEY_AGREEMENT_INFO, ephem_key, X509_PUBKEY, 0), ASN1_SIMPLE(GOST_KEY_AGREEMENT_INFO, eph_iv, ASN1_OCTET_STRING) } ASN1_NDEF_SEQUENCE_END(GOST_KEY_AGREEMENT_INFO) IMPLEMENT_ASN1_FUNCTIONS(GOST_KEY_AGREEMENT_INFO) ASN1_NDEF_SEQUENCE(GOST_KEY_PARAMS) = { ASN1_SIMPLE(GOST_KEY_PARAMS, key_params, ASN1_OBJECT), ASN1_SIMPLE(GOST_KEY_PARAMS, hash_params, ASN1_OBJECT), ASN1_OPT(GOST_KEY_PARAMS, cipher_params, ASN1_OBJECT),} ASN1_NDEF_SEQUENCE_END(GOST_KEY_PARAMS) IMPLEMENT_ASN1_FUNCTIONS(GOST_KEY_PARAMS) ASN1_NDEF_SEQUENCE(GOST_CIPHER_PARAMS) = { ASN1_SIMPLE(GOST_CIPHER_PARAMS, iv, ASN1_OCTET_STRING), ASN1_SIMPLE(GOST_CIPHER_PARAMS, enc_param_set, ASN1_OBJECT), } ASN1_NDEF_SEQUENCE_END(GOST_CIPHER_PARAMS) IMPLEMENT_ASN1_FUNCTIONS(GOST_CIPHER_PARAMS) ASN1_NDEF_SEQUENCE(GOST_CLIENT_KEY_EXCHANGE_PARAMS) = { /* FIXME incomplete */ ASN1_SIMPLE(GOST_CLIENT_KEY_EXCHANGE_PARAMS, gkt, GOST_KEY_TRANSPORT) } ASN1_NDEF_SEQUENCE_END(GOST_CLIENT_KEY_EXCHANGE_PARAMS) IMPLEMENT_ASN1_FUNCTIONS(GOST_CLIENT_KEY_EXCHANGE_PARAMS) ASN1_NDEF_SEQUENCE(MASKED_GOST_KEY) = { ASN1_SIMPLE(MASKED_GOST_KEY, masked_priv_key, ASN1_OCTET_STRING), ASN1_SIMPLE(MASKED_GOST_KEY, public_key, ASN1_OCTET_STRING) } ASN1_NDEF_SEQUENCE_END(MASKED_GOST_KEY) IMPLEMENT_ASN1_FUNCTIONS(MASKED_GOST_KEY) libengine-gost-openssl1.1-1.1.0.1/gost_crypt.c000066400000000000000000001061021315100554000210120ustar00rootroot00000000000000/********************************************************************** * gost_crypt.c * * Copyright (c) 2005-2006 Cryptocom LTD * * This file is distributed under the same license as OpenSSL * * * * OpenSSL interface to GOST 28147-89 cipher functions * * Requires OpenSSL 0.9.9 for compilation * **********************************************************************/ #include #include "gost89.h" #include #include #include "e_gost_err.h" #include "gost_lcl.h" #if !defined(CCGOST_DEBUG) && !defined(DEBUG) # ifndef NDEBUG # define NDEBUG # endif #endif #include static int gost_cipher_init(EVP_CIPHER_CTX *ctx, const unsigned char *key, const unsigned char *iv, int enc); static int gost_cipher_init_cbc(EVP_CIPHER_CTX *ctx, const unsigned char *key, const unsigned char *iv, int enc); static int gost_cipher_init_cpa(EVP_CIPHER_CTX *ctx, const unsigned char *key, const unsigned char *iv, int enc); static int gost_cipher_init_cp_12(EVP_CIPHER_CTX *ctx, const unsigned char *key, const unsigned char *iv, int enc); /* Handles block of data in CFB mode */ static int gost_cipher_do_cfb(EVP_CIPHER_CTX *ctx, unsigned char *out, const unsigned char *in, size_t inl); /* Handles block of data in CBC mode */ static int gost_cipher_do_cbc(EVP_CIPHER_CTX *ctx, unsigned char *out, const unsigned char *in, size_t inl); /* Handles block of data in CNT mode */ static int gost_cipher_do_cnt(EVP_CIPHER_CTX *ctx, unsigned char *out, const unsigned char *in, size_t inl); /* Cleanup function */ static int gost_cipher_cleanup(EVP_CIPHER_CTX *); /* set/get cipher parameters */ static int gost89_set_asn1_parameters(EVP_CIPHER_CTX *ctx, ASN1_TYPE *params); static int gost89_get_asn1_parameters(EVP_CIPHER_CTX *ctx, ASN1_TYPE *params); /* Control function */ static int gost_cipher_ctl(EVP_CIPHER_CTX *ctx, int type, int arg, void *ptr); static EVP_CIPHER *_hidden_Gost28147_89_cipher = NULL; const EVP_CIPHER *cipher_gost(void) { if (_hidden_Gost28147_89_cipher == NULL && ((_hidden_Gost28147_89_cipher = EVP_CIPHER_meth_new(NID_id_Gost28147_89, 1 /* block_size */ , 32 /* key_size */ )) == NULL || !EVP_CIPHER_meth_set_iv_length(_hidden_Gost28147_89_cipher, 8) || !EVP_CIPHER_meth_set_flags(_hidden_Gost28147_89_cipher, EVP_CIPH_CFB_MODE | EVP_CIPH_NO_PADDING | EVP_CIPH_CUSTOM_IV | EVP_CIPH_RAND_KEY | EVP_CIPH_ALWAYS_CALL_INIT) || !EVP_CIPHER_meth_set_init(_hidden_Gost28147_89_cipher, gost_cipher_init) || !EVP_CIPHER_meth_set_do_cipher(_hidden_Gost28147_89_cipher, gost_cipher_do_cfb) || !EVP_CIPHER_meth_set_cleanup(_hidden_Gost28147_89_cipher, gost_cipher_cleanup) || !EVP_CIPHER_meth_set_impl_ctx_size(_hidden_Gost28147_89_cipher, sizeof(struct ossl_gost_cipher_ctx)) || !EVP_CIPHER_meth_set_set_asn1_params(_hidden_Gost28147_89_cipher, gost89_set_asn1_parameters) || !EVP_CIPHER_meth_set_get_asn1_params(_hidden_Gost28147_89_cipher, gost89_get_asn1_parameters) || !EVP_CIPHER_meth_set_ctrl(_hidden_Gost28147_89_cipher, gost_cipher_ctl))) { EVP_CIPHER_meth_free(_hidden_Gost28147_89_cipher); _hidden_Gost28147_89_cipher = NULL; } return _hidden_Gost28147_89_cipher; } static EVP_CIPHER *_hidden_Gost28147_89_cbc = NULL; const EVP_CIPHER *cipher_gost_cbc(void) { if (_hidden_Gost28147_89_cbc == NULL && ((_hidden_Gost28147_89_cbc = EVP_CIPHER_meth_new(NID_gost89_cbc, 8 /* block_size */ , 32 /* key_size */ )) == NULL || !EVP_CIPHER_meth_set_iv_length(_hidden_Gost28147_89_cbc, 8) || !EVP_CIPHER_meth_set_flags(_hidden_Gost28147_89_cbc, EVP_CIPH_CBC_MODE | EVP_CIPH_CUSTOM_IV | EVP_CIPH_RAND_KEY | EVP_CIPH_ALWAYS_CALL_INIT) || !EVP_CIPHER_meth_set_init(_hidden_Gost28147_89_cbc, gost_cipher_init_cbc) || !EVP_CIPHER_meth_set_do_cipher(_hidden_Gost28147_89_cbc, gost_cipher_do_cbc) || !EVP_CIPHER_meth_set_cleanup(_hidden_Gost28147_89_cbc, gost_cipher_cleanup) || !EVP_CIPHER_meth_set_impl_ctx_size(_hidden_Gost28147_89_cbc, sizeof(struct ossl_gost_cipher_ctx)) || !EVP_CIPHER_meth_set_set_asn1_params(_hidden_Gost28147_89_cbc, gost89_set_asn1_parameters) || !EVP_CIPHER_meth_set_get_asn1_params(_hidden_Gost28147_89_cbc, gost89_get_asn1_parameters) || !EVP_CIPHER_meth_set_ctrl(_hidden_Gost28147_89_cbc, gost_cipher_ctl))) { EVP_CIPHER_meth_free(_hidden_Gost28147_89_cbc); _hidden_Gost28147_89_cbc = NULL; } return _hidden_Gost28147_89_cbc; } static EVP_CIPHER *_hidden_gost89_cnt = NULL; const EVP_CIPHER *cipher_gost_cpacnt(void) { if (_hidden_gost89_cnt == NULL && ((_hidden_gost89_cnt = EVP_CIPHER_meth_new(NID_gost89_cnt, 1 /* block_size */ , 32 /* key_size */ )) == NULL || !EVP_CIPHER_meth_set_iv_length(_hidden_gost89_cnt, 8) || !EVP_CIPHER_meth_set_flags(_hidden_gost89_cnt, EVP_CIPH_OFB_MODE | EVP_CIPH_NO_PADDING | EVP_CIPH_CUSTOM_IV | EVP_CIPH_RAND_KEY | EVP_CIPH_ALWAYS_CALL_INIT) || !EVP_CIPHER_meth_set_init(_hidden_gost89_cnt, gost_cipher_init_cpa) || !EVP_CIPHER_meth_set_do_cipher(_hidden_gost89_cnt, gost_cipher_do_cnt) || !EVP_CIPHER_meth_set_cleanup(_hidden_gost89_cnt, gost_cipher_cleanup) || !EVP_CIPHER_meth_set_impl_ctx_size(_hidden_gost89_cnt, sizeof(struct ossl_gost_cipher_ctx)) || !EVP_CIPHER_meth_set_set_asn1_params(_hidden_gost89_cnt, gost89_set_asn1_parameters) || !EVP_CIPHER_meth_set_get_asn1_params(_hidden_gost89_cnt, gost89_get_asn1_parameters) || !EVP_CIPHER_meth_set_ctrl(_hidden_gost89_cnt, gost_cipher_ctl))) { EVP_CIPHER_meth_free(_hidden_gost89_cnt); _hidden_gost89_cnt = NULL; } return _hidden_gost89_cnt; } static EVP_CIPHER *_hidden_gost89_cnt_12 = NULL; const EVP_CIPHER *cipher_gost_cpcnt_12(void) { if (_hidden_gost89_cnt_12 == NULL && ((_hidden_gost89_cnt_12 = EVP_CIPHER_meth_new(NID_gost89_cnt_12, 1 /* block_size */ , 32 /* key_size */ )) == NULL || !EVP_CIPHER_meth_set_iv_length(_hidden_gost89_cnt_12, 8) || !EVP_CIPHER_meth_set_flags(_hidden_gost89_cnt_12, EVP_CIPH_OFB_MODE | EVP_CIPH_NO_PADDING | EVP_CIPH_CUSTOM_IV | EVP_CIPH_RAND_KEY | EVP_CIPH_ALWAYS_CALL_INIT) || !EVP_CIPHER_meth_set_init(_hidden_gost89_cnt_12, gost_cipher_init_cp_12) || !EVP_CIPHER_meth_set_do_cipher(_hidden_gost89_cnt_12, gost_cipher_do_cnt) || !EVP_CIPHER_meth_set_cleanup(_hidden_gost89_cnt_12, gost_cipher_cleanup) || !EVP_CIPHER_meth_set_impl_ctx_size(_hidden_gost89_cnt_12, sizeof(struct ossl_gost_cipher_ctx)) || !EVP_CIPHER_meth_set_set_asn1_params(_hidden_gost89_cnt_12, gost89_set_asn1_parameters) || !EVP_CIPHER_meth_set_get_asn1_params(_hidden_gost89_cnt_12, gost89_get_asn1_parameters) || !EVP_CIPHER_meth_set_ctrl(_hidden_gost89_cnt_12, gost_cipher_ctl))) { EVP_CIPHER_meth_free(_hidden_gost89_cnt_12); _hidden_gost89_cnt_12 = NULL; } return _hidden_gost89_cnt_12; } void cipher_gost_destroy(void) { EVP_CIPHER_meth_free(_hidden_Gost28147_89_cipher); _hidden_Gost28147_89_cipher = NULL; EVP_CIPHER_meth_free(_hidden_gost89_cnt); _hidden_gost89_cnt = NULL; EVP_CIPHER_meth_free(_hidden_Gost28147_89_cbc); _hidden_Gost28147_89_cbc = NULL; EVP_CIPHER_meth_free(_hidden_gost89_cnt_12); _hidden_gost89_cnt_12 = NULL; } /* Implementation of GOST 28147-89 in MAC (imitovstavka) mode */ /* Init functions which set specific parameters */ static int gost_imit_init_cpa(EVP_MD_CTX *ctx); static int gost_imit_init_cp_12(EVP_MD_CTX *ctx); /* process block of data */ static int gost_imit_update(EVP_MD_CTX *ctx, const void *data, size_t count); /* Return computed value */ static int gost_imit_final(EVP_MD_CTX *ctx, unsigned char *md); /* Copies context */ static int gost_imit_copy(EVP_MD_CTX *to, const EVP_MD_CTX *from); static int gost_imit_cleanup(EVP_MD_CTX *ctx); /* Control function, knows how to set MAC key.*/ static int gost_imit_ctrl(EVP_MD_CTX *ctx, int type, int arg, void *ptr); static EVP_MD *_hidden_Gost28147_89_MAC_md = NULL; static EVP_MD *_hidden_Gost28147_89_12_MAC_md = NULL; EVP_MD *imit_gost_cpa(void) { if (_hidden_Gost28147_89_MAC_md == NULL) { EVP_MD *md; if ((md = EVP_MD_meth_new(NID_id_Gost28147_89_MAC, NID_undef)) == NULL || !EVP_MD_meth_set_result_size(md, 4) || !EVP_MD_meth_set_input_blocksize(md, 8) || !EVP_MD_meth_set_app_datasize(md, sizeof(struct ossl_gost_imit_ctx)) || !EVP_MD_meth_set_flags(md, 0) || !EVP_MD_meth_set_init(md, gost_imit_init_cpa) || !EVP_MD_meth_set_update(md, gost_imit_update) || !EVP_MD_meth_set_final(md, gost_imit_final) || !EVP_MD_meth_set_copy(md, gost_imit_copy) || !EVP_MD_meth_set_cleanup(md, gost_imit_cleanup) || !EVP_MD_meth_set_ctrl(md, gost_imit_ctrl)) { EVP_MD_meth_free(md); md = NULL; } _hidden_Gost28147_89_MAC_md = md; } return _hidden_Gost28147_89_MAC_md; } void imit_gost_cpa_destroy(void) { EVP_MD_meth_free(_hidden_Gost28147_89_MAC_md); _hidden_Gost28147_89_MAC_md = NULL; } EVP_MD *imit_gost_cp_12(void) { if (_hidden_Gost28147_89_12_MAC_md == NULL) { EVP_MD *md; if ((md = EVP_MD_meth_new(NID_gost_mac_12, NID_undef)) == NULL || !EVP_MD_meth_set_result_size(md, 4) || !EVP_MD_meth_set_input_blocksize(md, 8) || !EVP_MD_meth_set_app_datasize(md, sizeof(struct ossl_gost_imit_ctx)) || !EVP_MD_meth_set_flags(md, 0) || !EVP_MD_meth_set_init(md, gost_imit_init_cp_12) || !EVP_MD_meth_set_update(md, gost_imit_update) || !EVP_MD_meth_set_final(md, gost_imit_final) || !EVP_MD_meth_set_copy(md, gost_imit_copy) || !EVP_MD_meth_set_cleanup(md, gost_imit_cleanup) || !EVP_MD_meth_set_ctrl(md, gost_imit_ctrl)) { EVP_MD_meth_free(md); md = NULL; } _hidden_Gost28147_89_12_MAC_md = md; } return _hidden_Gost28147_89_12_MAC_md; } void imit_gost_cp_12_destroy(void) { EVP_MD_meth_free(_hidden_Gost28147_89_12_MAC_md); _hidden_Gost28147_89_12_MAC_md = NULL; } /* * Correspondence between gost parameter OIDs and substitution blocks * NID field is filed by register_gost_NID function in engine.c * upon engine initialization */ struct gost_cipher_info gost_cipher_list[] = { /*- NID *//* * Subst block *//* * Key meshing */ /* * {NID_id_GostR3411_94_CryptoProParamSet,&GostR3411_94_CryptoProParamSet,0}, */ {NID_id_Gost28147_89_CryptoPro_A_ParamSet, &Gost28147_CryptoProParamSetA, 1}, {NID_id_Gost28147_89_CryptoPro_B_ParamSet, &Gost28147_CryptoProParamSetB, 1}, {NID_id_Gost28147_89_CryptoPro_C_ParamSet, &Gost28147_CryptoProParamSetC, 1}, {NID_id_Gost28147_89_CryptoPro_D_ParamSet, &Gost28147_CryptoProParamSetD, 1}, {NID_id_tc26_gost_28147_param_Z, &Gost28147_TC26ParamSetZ, 1}, {NID_id_Gost28147_89_TestParamSet, &Gost28147_TestParamSet, 1}, {NID_undef, NULL, 0} }; /* * get encryption parameters from crypto network settings FIXME For now we * use environment var CRYPT_PARAMS as place to store these settings. * Actually, it is better to use engine control command, read from * configuration file to set them */ const struct gost_cipher_info *get_encryption_params(ASN1_OBJECT *obj) { int nid; struct gost_cipher_info *param; if (!obj) { const char *params = get_gost_engine_param(GOST_PARAM_CRYPT_PARAMS); if (!params || !strlen(params)) { int i; for (i = 0; gost_cipher_list[i].nid != NID_undef; i++) if (gost_cipher_list[i].nid == NID_id_tc26_gost_28147_param_Z) return &gost_cipher_list[i]; return &gost_cipher_list[0]; } nid = OBJ_txt2nid(params); if (nid == NID_undef) { GOSTerr(GOST_F_GET_ENCRYPTION_PARAMS, GOST_R_INVALID_CIPHER_PARAM_OID); return NULL; } } else { nid = OBJ_obj2nid(obj); } for (param = gost_cipher_list; param->sblock != NULL && param->nid != nid; param++) ; if (!param->sblock) { GOSTerr(GOST_F_GET_ENCRYPTION_PARAMS, GOST_R_INVALID_CIPHER_PARAMS); return NULL; } return param; } /* Sets cipher param from paramset NID. */ static int gost_cipher_set_param(struct ossl_gost_cipher_ctx *c, int nid) { const struct gost_cipher_info *param; param = get_encryption_params((nid == NID_undef ? NULL : OBJ_nid2obj(nid))); if (!param) return 0; c->paramNID = param->nid; c->key_meshing = param->key_meshing; c->count = 0; gost_init(&(c->cctx), param->sblock); return 1; } /* Initializes EVP_CIPHER_CTX by paramset NID */ static int gost_cipher_init_param(EVP_CIPHER_CTX *ctx, const unsigned char *key, const unsigned char *iv, int enc, int paramNID, int mode) { struct ossl_gost_cipher_ctx *c = EVP_CIPHER_CTX_get_cipher_data(ctx); if (EVP_CIPHER_CTX_get_app_data(ctx) == NULL) { if (!gost_cipher_set_param(c, paramNID)) return 0; EVP_CIPHER_CTX_set_app_data(ctx, EVP_CIPHER_CTX_get_cipher_data(ctx)); } if (key) gost_key(&(c->cctx), key); if (iv) { memcpy((unsigned char *)EVP_CIPHER_CTX_original_iv(ctx), iv, EVP_CIPHER_CTX_iv_length(ctx)); } memcpy(EVP_CIPHER_CTX_iv_noconst(ctx), EVP_CIPHER_CTX_original_iv(ctx), EVP_CIPHER_CTX_iv_length(ctx)); return 1; } static int gost_cipher_init_cnt(EVP_CIPHER_CTX *ctx, const unsigned char *key, const unsigned char *iv, gost_subst_block * block) { struct ossl_gost_cipher_ctx *c = EVP_CIPHER_CTX_get_cipher_data(ctx); gost_init(&(c->cctx), block); c->key_meshing = 1; c->count = 0; if (key) gost_key(&(c->cctx), key); if (iv) { memcpy((unsigned char *)EVP_CIPHER_CTX_original_iv(ctx), iv, EVP_CIPHER_CTX_iv_length(ctx)); } memcpy(EVP_CIPHER_CTX_iv_noconst(ctx), EVP_CIPHER_CTX_original_iv(ctx), EVP_CIPHER_CTX_iv_length(ctx)); return 1; } static int gost_cipher_init_cpa(EVP_CIPHER_CTX *ctx, const unsigned char *key, const unsigned char *iv, int enc) { return gost_cipher_init_cnt(ctx, key, iv, &Gost28147_CryptoProParamSetA); } static int gost_cipher_init_cp_12(EVP_CIPHER_CTX *ctx, const unsigned char *key, const unsigned char *iv, int enc) { return gost_cipher_init_cnt(ctx, key, iv, &Gost28147_TC26ParamSetZ); } /* Initializes EVP_CIPHER_CTX with default values */ int gost_cipher_init(EVP_CIPHER_CTX *ctx, const unsigned char *key, const unsigned char *iv, int enc) { return gost_cipher_init_param(ctx, key, iv, enc, NID_undef, EVP_CIPH_CFB_MODE); } /* Initializes EVP_CIPHER_CTX with default values */ int gost_cipher_init_cbc(EVP_CIPHER_CTX *ctx, const unsigned char *key, const unsigned char *iv, int enc) { return gost_cipher_init_param(ctx, key, iv, enc, NID_undef, EVP_CIPH_CBC_MODE); } /* * Wrapper around gostcrypt function from gost89.c which perform key meshing * when nesseccary */ static void gost_crypt_mesh(void *ctx, unsigned char *iv, unsigned char *buf) { struct ossl_gost_cipher_ctx *c = ctx; assert(c->count % 8 == 0 && c->count <= 1024); if (c->key_meshing && c->count == 1024) { cryptopro_key_meshing(&(c->cctx), iv); } gostcrypt(&(c->cctx), iv, buf); c->count = c->count % 1024 + 8; } static void gost_cnt_next(void *ctx, unsigned char *iv, unsigned char *buf) { struct ossl_gost_cipher_ctx *c = ctx; word32 g, go; unsigned char buf1[8]; assert(c->count % 8 == 0 && c->count <= 1024); if (c->key_meshing && c->count == 1024) { cryptopro_key_meshing(&(c->cctx), iv); } if (c->count == 0) { gostcrypt(&(c->cctx), iv, buf1); } else { memcpy(buf1, iv, 8); } g = buf1[0] | (buf1[1] << 8) | (buf1[2] << 16) | ((word32) buf1[3] << 24); g += 0x01010101; buf1[0] = (unsigned char)(g & 0xff); buf1[1] = (unsigned char)((g >> 8) & 0xff); buf1[2] = (unsigned char)((g >> 16) & 0xff); buf1[3] = (unsigned char)((g >> 24) & 0xff); g = buf1[4] | (buf1[5] << 8) | (buf1[6] << 16) | ((word32) buf1[7] << 24); go = g; g += 0x01010104; if (go > g) /* overflow */ g++; buf1[4] = (unsigned char)(g & 0xff); buf1[5] = (unsigned char)((g >> 8) & 0xff); buf1[6] = (unsigned char)((g >> 16) & 0xff); buf1[7] = (unsigned char)((g >> 24) & 0xff); memcpy(iv, buf1, 8); gostcrypt(&(c->cctx), buf1, buf); c->count = c->count % 1024 + 8; } /* GOST encryptoon in CBC mode */ int gost_cipher_do_cbc(EVP_CIPHER_CTX *ctx, unsigned char *out, const unsigned char *in, size_t inl) { unsigned char b[8]; const unsigned char *in_ptr = in; unsigned char *out_ptr = out; int i; struct ossl_gost_cipher_ctx *c = EVP_CIPHER_CTX_get_cipher_data(ctx); unsigned char *iv = EVP_CIPHER_CTX_iv_noconst(ctx); if (EVP_CIPHER_CTX_encrypting(ctx)) { while (inl > 0) { for (i = 0; i < 8; i++) { b[i] = iv[i] ^ in_ptr[i]; } gostcrypt(&(c->cctx), b, out_ptr); memcpy(iv, out_ptr, 8); out_ptr += 8; in_ptr += 8; inl -= 8; } } else { while (inl > 0) { gostdecrypt(&(c->cctx), in_ptr, b); for (i = 0; i < 8; i++) { out_ptr[i] = iv[i] ^ b[i]; } memcpy(iv, in_ptr, 8); out_ptr += 8; in_ptr += 8; inl -= 8; } } return 1; } /* GOST encryption in CFB mode */ int gost_cipher_do_cfb(EVP_CIPHER_CTX *ctx, unsigned char *out, const unsigned char *in, size_t inl) { const unsigned char *in_ptr = in; unsigned char *out_ptr = out; size_t i = 0; size_t j = 0; unsigned char *buf = EVP_CIPHER_CTX_buf_noconst(ctx); unsigned char *iv = EVP_CIPHER_CTX_iv_noconst(ctx); /* process partial block if any */ if (EVP_CIPHER_CTX_num(ctx)) { for (j = EVP_CIPHER_CTX_num(ctx), i = 0; j < 8 && i < inl; j++, i++, in_ptr++, out_ptr++) { if (!EVP_CIPHER_CTX_encrypting(ctx)) buf[j + 8] = *in_ptr; *out_ptr = buf[j] ^ (*in_ptr); if (EVP_CIPHER_CTX_encrypting(ctx)) buf[j + 8] = *out_ptr; } if (j == 8) { memcpy(iv, buf + 8, 8); EVP_CIPHER_CTX_set_num(ctx, 0); } else { EVP_CIPHER_CTX_set_num(ctx, j); return 1; } } for (; i + 8 < inl; i += 8, in_ptr += 8, out_ptr += 8) { /* * block cipher current iv */ gost_crypt_mesh(EVP_CIPHER_CTX_get_cipher_data(ctx), iv, buf); /* * xor next block of input text with it and output it */ /* * output this block */ if (!EVP_CIPHER_CTX_encrypting(ctx)) memcpy(iv, in_ptr, 8); for (j = 0; j < 8; j++) { out_ptr[j] = buf[j] ^ in_ptr[j]; } /* Encrypt */ /* Next iv is next block of cipher text */ if (EVP_CIPHER_CTX_encrypting(ctx)) memcpy(iv, out_ptr, 8); } /* Process rest of buffer */ if (i < inl) { gost_crypt_mesh(EVP_CIPHER_CTX_get_cipher_data(ctx), iv, buf); if (!EVP_CIPHER_CTX_encrypting(ctx)) memcpy(buf + 8, in_ptr, inl - i); for (j = 0; i < inl; j++, i++) { out_ptr[j] = buf[j] ^ in_ptr[j]; } EVP_CIPHER_CTX_set_num(ctx, j); if (EVP_CIPHER_CTX_encrypting(ctx)) memcpy(buf + 8, out_ptr, j); } else { EVP_CIPHER_CTX_set_num(ctx, 0); } return 1; } static int gost_cipher_do_cnt(EVP_CIPHER_CTX *ctx, unsigned char *out, const unsigned char *in, size_t inl) { const unsigned char *in_ptr = in; unsigned char *out_ptr = out; size_t i = 0; size_t j; unsigned char *buf = EVP_CIPHER_CTX_buf_noconst(ctx); unsigned char *iv = EVP_CIPHER_CTX_iv_noconst(ctx); /* process partial block if any */ if (EVP_CIPHER_CTX_num(ctx)) { for (j = EVP_CIPHER_CTX_num(ctx), i = 0; j < 8 && i < inl; j++, i++, in_ptr++, out_ptr++) { *out_ptr = buf[j] ^ (*in_ptr); } if (j == 8) { EVP_CIPHER_CTX_set_num(ctx, 0); } else { EVP_CIPHER_CTX_set_num(ctx, j); return 1; } } for (; i + 8 < inl; i += 8, in_ptr += 8, out_ptr += 8) { /* * block cipher current iv */ /* Encrypt */ gost_cnt_next(EVP_CIPHER_CTX_get_cipher_data(ctx), iv, buf); /* * xor next block of input text with it and output it */ /* * output this block */ for (j = 0; j < 8; j++) { out_ptr[j] = buf[j] ^ in_ptr[j]; } } /* Process rest of buffer */ if (i < inl) { gost_cnt_next(EVP_CIPHER_CTX_get_cipher_data(ctx), iv, buf); for (j = 0; i < inl; j++, i++) { out_ptr[j] = buf[j] ^ in_ptr[j]; } EVP_CIPHER_CTX_set_num(ctx, j); } else { EVP_CIPHER_CTX_set_num(ctx, 0); } return 1; } /* Cleaning up of EVP_CIPHER_CTX */ int gost_cipher_cleanup(EVP_CIPHER_CTX *ctx) { gost_destroy(& ((struct ossl_gost_cipher_ctx *) EVP_CIPHER_CTX_get_cipher_data(ctx))->cctx); EVP_CIPHER_CTX_set_app_data(ctx, NULL); return 1; } /* Control function for gost cipher */ int gost_cipher_ctl(EVP_CIPHER_CTX *ctx, int type, int arg, void *ptr) { switch (type) { #if 0 case EVP_CTRL_INIT: { struct ossl_gost_cipher_ctx *c = EVP_CIPHER_CTX_get_cipher_data(ctx); if (c == NULL) { return -1; } return gost_cipher_set_param(c, arg); } #endif case EVP_CTRL_RAND_KEY: { if (RAND_bytes ((unsigned char *)ptr, EVP_CIPHER_CTX_key_length(ctx)) <= 0) { GOSTerr(GOST_F_GOST_CIPHER_CTL, GOST_R_RNG_ERROR); return -1; } break; } case EVP_CTRL_PBE_PRF_NID: if (ptr) { const char *params = get_gost_engine_param(GOST_PARAM_PBE_PARAMS); int nid = NID_id_tc26_hmac_gost_3411_2012_512; if (params) { if (!strcmp("md_gost12_256", params)) nid = NID_id_tc26_hmac_gost_3411_2012_256; else if (!strcmp("md_gost12_512", params)) nid = NID_id_tc26_hmac_gost_3411_2012_512; else if (!strcmp("md_gost94", params)) nid = NID_id_HMACGostR3411_94; } *((int *)ptr) = nid; return 1; } else { return 0; } case EVP_CTRL_SET_SBOX: if (ptr) { struct ossl_gost_cipher_ctx *c = EVP_CIPHER_CTX_get_cipher_data(ctx); int nid; int cur_meshing; int ret; if (c == NULL) { return -1; } if (c->count != 0) { return -1; } nid = OBJ_txt2nid(ptr); if (nid == NID_undef) { return 0; } cur_meshing = c->key_meshing; ret = gost_cipher_set_param(c, nid); c->key_meshing = cur_meshing; return ret; } else { return 0; } case EVP_CTRL_KEY_MESH: { struct ossl_gost_cipher_ctx *c = EVP_CIPHER_CTX_get_cipher_data(ctx); if (c == NULL) { return -1; } if (c->count != 0) { return -1; } c->key_meshing = arg; return 1; } default: GOSTerr(GOST_F_GOST_CIPHER_CTL, GOST_R_UNSUPPORTED_CIPHER_CTL_COMMAND); return -1; } return 1; } /* Set cipher parameters from ASN1 structure */ int gost89_set_asn1_parameters(EVP_CIPHER_CTX *ctx, ASN1_TYPE *params) { int len = 0; unsigned char *buf = NULL; unsigned char *p = NULL; struct ossl_gost_cipher_ctx *c = EVP_CIPHER_CTX_get_cipher_data(ctx); GOST_CIPHER_PARAMS *gcp = GOST_CIPHER_PARAMS_new(); ASN1_OCTET_STRING *os = NULL; if (!gcp) { GOSTerr(GOST_F_GOST89_SET_ASN1_PARAMETERS, ERR_R_MALLOC_FAILURE); return 0; } if (!ASN1_OCTET_STRING_set (gcp->iv, EVP_CIPHER_CTX_iv(ctx), EVP_CIPHER_CTX_iv_length(ctx))) { GOST_CIPHER_PARAMS_free(gcp); GOSTerr(GOST_F_GOST89_SET_ASN1_PARAMETERS, ERR_R_MALLOC_FAILURE); return 0; } ASN1_OBJECT_free(gcp->enc_param_set); gcp->enc_param_set = OBJ_nid2obj(c->paramNID); len = i2d_GOST_CIPHER_PARAMS(gcp, NULL); p = buf = OPENSSL_malloc(len); if (!buf) { GOST_CIPHER_PARAMS_free(gcp); GOSTerr(GOST_F_GOST89_SET_ASN1_PARAMETERS, ERR_R_MALLOC_FAILURE); return 0; } i2d_GOST_CIPHER_PARAMS(gcp, &p); GOST_CIPHER_PARAMS_free(gcp); os = ASN1_OCTET_STRING_new(); if (!os || !ASN1_OCTET_STRING_set(os, buf, len)) { OPENSSL_free(buf); GOSTerr(GOST_F_GOST89_SET_ASN1_PARAMETERS, ERR_R_MALLOC_FAILURE); return 0; } OPENSSL_free(buf); ASN1_TYPE_set(params, V_ASN1_SEQUENCE, os); return 1; } /* Store parameters into ASN1 structure */ int gost89_get_asn1_parameters(EVP_CIPHER_CTX *ctx, ASN1_TYPE *params) { int ret = -1; int len; GOST_CIPHER_PARAMS *gcp = NULL; unsigned char *p; struct ossl_gost_cipher_ctx *c = EVP_CIPHER_CTX_get_cipher_data(ctx); int nid; if (ASN1_TYPE_get(params) != V_ASN1_SEQUENCE) { return ret; } p = params->value.sequence->data; gcp = d2i_GOST_CIPHER_PARAMS(NULL, (const unsigned char **)&p, params->value.sequence->length); len = gcp->iv->length; if (len != EVP_CIPHER_CTX_iv_length(ctx)) { GOST_CIPHER_PARAMS_free(gcp); GOSTerr(GOST_F_GOST89_GET_ASN1_PARAMETERS, GOST_R_INVALID_IV_LENGTH); return -1; } nid = OBJ_obj2nid(gcp->enc_param_set); if (nid == NID_undef) { GOST_CIPHER_PARAMS_free(gcp); GOSTerr(GOST_F_GOST89_GET_ASN1_PARAMETERS, GOST_R_INVALID_CIPHER_PARAM_OID); return -1; } if (!gost_cipher_set_param(c, nid)) { GOST_CIPHER_PARAMS_free(gcp); return -1; } /*XXX missing non-const accessor */ memcpy((unsigned char *)EVP_CIPHER_CTX_original_iv(ctx), gcp->iv->data, EVP_CIPHER_CTX_iv_length(ctx)); GOST_CIPHER_PARAMS_free(gcp); return 1; } static int gost_imit_init(EVP_MD_CTX *ctx, gost_subst_block * block) { struct ossl_gost_imit_ctx *c = EVP_MD_CTX_md_data(ctx); memset(c->buffer, 0, sizeof(c->buffer)); memset(c->partial_block, 0, sizeof(c->partial_block)); c->count = 0; c->bytes_left = 0; c->key_meshing = 1; c->dgst_size = 4; gost_init(&(c->cctx), block); return 1; } static int gost_imit_init_cpa(EVP_MD_CTX *ctx) { return gost_imit_init(ctx, &Gost28147_CryptoProParamSetA); } static int gost_imit_init_cp_12(EVP_MD_CTX *ctx) { return gost_imit_init(ctx, &Gost28147_TC26ParamSetZ); } static void mac_block_mesh(struct ossl_gost_imit_ctx *c, const unsigned char *data) { unsigned char buffer[8]; /* * We are using local buffer for iv because CryptoPro doesn't interpret * internal state of MAC algorithm as iv during keymeshing (but does * initialize internal state from iv in key transport */ assert(c->count % 8 == 0 && c->count <= 1024); if (c->key_meshing && c->count == 1024) { cryptopro_key_meshing(&(c->cctx), buffer); } mac_block(&(c->cctx), c->buffer, data); c->count = c->count % 1024 + 8; } int gost_imit_update(EVP_MD_CTX *ctx, const void *data, size_t count) { struct ossl_gost_imit_ctx *c = EVP_MD_CTX_md_data(ctx); const unsigned char *p = data; size_t bytes = count, i; if (!(c->key_set)) { GOSTerr(GOST_F_GOST_IMIT_UPDATE, GOST_R_MAC_KEY_NOT_SET); return 0; } if (c->bytes_left) { for (i = c->bytes_left; i < 8 && bytes > 0; bytes--, i++, p++) { c->partial_block[i] = *p; } if (i == 8) { mac_block_mesh(c, c->partial_block); } else { c->bytes_left = i; return 1; } } while (bytes > 8) { mac_block_mesh(c, p); p += 8; bytes -= 8; } if (bytes > 0) { memcpy(c->partial_block, p, bytes); } c->bytes_left = bytes; return 1; } int gost_imit_final(EVP_MD_CTX *ctx, unsigned char *md) { struct ossl_gost_imit_ctx *c = EVP_MD_CTX_md_data(ctx); if (!c->key_set) { GOSTerr(GOST_F_GOST_IMIT_FINAL, GOST_R_MAC_KEY_NOT_SET); return 0; } if (c->count == 0 && c->bytes_left) { unsigned char buffer[8]; memset(buffer, 0, 8); gost_imit_update(ctx, buffer, 8); } if (c->bytes_left) { int i; for (i = c->bytes_left; i < 8; i++) { c->partial_block[i] = 0; } mac_block_mesh(c, c->partial_block); } get_mac(c->buffer, 8 * c->dgst_size, md); return 1; } int gost_imit_ctrl(EVP_MD_CTX *ctx, int type, int arg, void *ptr) { switch (type) { case EVP_MD_CTRL_KEY_LEN: *((unsigned int *)(ptr)) = 32; return 1; case EVP_MD_CTRL_SET_KEY: { struct ossl_gost_imit_ctx *gost_imit_ctx = EVP_MD_CTX_md_data(ctx); if (EVP_MD_meth_get_init(EVP_MD_CTX_md(ctx)) (ctx) <= 0) { GOSTerr(GOST_F_GOST_IMIT_CTRL, GOST_R_MAC_KEY_NOT_SET); return 0; } EVP_MD_CTX_set_flags(ctx, EVP_MD_CTX_FLAG_NO_INIT); if (arg == 0) { struct gost_mac_key *key = (struct gost_mac_key *)ptr; if (key->mac_param_nid != NID_undef) { const struct gost_cipher_info *param = get_encryption_params(OBJ_nid2obj (key->mac_param_nid)); if (param == NULL) { GOSTerr(GOST_F_GOST_IMIT_CTRL, GOST_R_INVALID_MAC_PARAMS); return 0; } gost_init(&(gost_imit_ctx->cctx), param->sblock); } gost_key(&(gost_imit_ctx->cctx), key->key); gost_imit_ctx->key_set = 1; return 1; } else if (arg == 32) { gost_key(&(gost_imit_ctx->cctx), ptr); gost_imit_ctx->key_set = 1; return 1; } GOSTerr(GOST_F_GOST_IMIT_CTRL, GOST_R_INVALID_MAC_KEY_SIZE); return 0; } case EVP_MD_CTRL_MAC_LEN: { struct ossl_gost_imit_ctx *c = EVP_MD_CTX_md_data(ctx); if (arg < 1 || arg > 8) { GOSTerr(GOST_F_GOST_IMIT_CTRL, GOST_R_INVALID_MAC_SIZE); return 0; } c->dgst_size = arg; return 1; } default: return 0; } } int gost_imit_copy(EVP_MD_CTX *to, const EVP_MD_CTX *from) { if (EVP_MD_CTX_md_data(to) && EVP_MD_CTX_md_data(from)) { memcpy(EVP_MD_CTX_md_data(to), EVP_MD_CTX_md_data(from), sizeof(struct ossl_gost_imit_ctx)); } return 1; } /* Clean up imit ctx */ int gost_imit_cleanup(EVP_MD_CTX *ctx) { memset(EVP_MD_CTX_md_data(ctx), 0, sizeof(struct ossl_gost_imit_ctx)); return 1; } libengine-gost-openssl1.1-1.1.0.1/gost_ctl.c000066400000000000000000000046041315100554000204370ustar00rootroot00000000000000/********************************************************************** * gost_ctl.c * * Copyright (c) 2005-2006 Cryptocom LTD * * This file is distributed under the same license as OpenSSL * * * * Implementation of control commands for GOST engine * * OpenSSL 0.9.9 libraries required * **********************************************************************/ #include #include #include #include #include #include #include "gost_lcl.h" static char *gost_params[GOST_PARAM_MAX + 1] = { NULL }; static const char *gost_envnames[] = { "CRYPT_PARAMS", "GOST_PBE_HMAC" }; const ENGINE_CMD_DEFN gost_cmds[] = { {GOST_CTRL_CRYPT_PARAMS, "CRYPT_PARAMS", "OID of default GOST 28147-89 parameters", ENGINE_CMD_FLAG_STRING}, {GOST_CTRL_PBE_PARAMS, "PBE_PARAMS", "Shortname of default digest alg for PBE", ENGINE_CMD_FLAG_STRING}, {0, NULL, NULL, 0} }; void gost_param_free() { int i; for (i = 0; i <= GOST_PARAM_MAX; i++) { OPENSSL_free(gost_params[i]); gost_params[i] = NULL; } } int gost_control_func(ENGINE *e, int cmd, long i, void *p, void (*f) (void)) { int param = cmd - ENGINE_CMD_BASE; int ret = 0; if (param < 0 || param > GOST_PARAM_MAX) return -1; ret = gost_set_default_param(param, p); return ret; } const char *get_gost_engine_param(int param) { char *tmp; if (param < 0 || param > GOST_PARAM_MAX) return NULL; if (gost_params[param] != NULL) { return gost_params[param]; } tmp = getenv(gost_envnames[param]); if (tmp) { OPENSSL_free(gost_params[param]); gost_params[param] = BUF_strdup(tmp); return gost_params[param]; } return NULL; } int gost_set_default_param(int param, const char *value) { const char *tmp; if (param < 0 || param > GOST_PARAM_MAX) return 0; tmp = getenv(gost_envnames[param]); /* * if there is value in the environment, use it, else -passed string * */ if (!tmp) tmp = value; OPENSSL_free(gost_params[param]); gost_params[param] = BUF_strdup(tmp); return 1; } libengine-gost-openssl1.1-1.1.0.1/gost_ec_keyx.c000066400000000000000000000264721315100554000213130ustar00rootroot00000000000000/********************************************************************** * gost_ec_keyx.c * * Copyright (c) 2005-2013 Cryptocom LTD * * This file is distributed under the same license as OpenSSL * * * * VK0 34.10-2001 key exchange and GOST R 34.10-2001 * * based PKCS7/SMIME support * * Requires OpenSSL 0.9.9 for compilation * **********************************************************************/ #include #include #include #include #include #include "gost89.h" #include "e_gost_err.h" #include "gost_keywrap.h" #include "gost_lcl.h" /* Implementation of CryptoPro VKO 34.10-2001/2012 algorithm */ static int VKO_compute_key(unsigned char *shared_key, size_t shared_key_size, const EC_POINT *pub_key, EC_KEY *priv_key, const unsigned char *ukm, int dgst_nid) { unsigned char *databuf = NULL; BIGNUM *UKM = NULL, *p = NULL, *order = NULL, *X = NULL, *Y = NULL; const BIGNUM *key = EC_KEY_get0_private_key(priv_key); EC_POINT *pnt = EC_POINT_new(EC_KEY_get0_group(priv_key)); BN_CTX *ctx = BN_CTX_new(); EVP_MD_CTX *mdctx = NULL; const EVP_MD *md = NULL; int effective_dgst_nid = (dgst_nid == NID_id_GostR3411_2012_512) ? NID_id_GostR3411_2012_256 : dgst_nid; int buf_len = (dgst_nid == NID_id_GostR3411_2012_512) ? 128 : 64, half_len = buf_len >> 1; int ret = 0; if (!ctx) { GOSTerr(GOST_F_VKO_COMPUTE_KEY, ERR_R_MALLOC_FAILURE); return 0; } BN_CTX_start(ctx); databuf = OPENSSL_zalloc(buf_len); if (!databuf) { GOSTerr(GOST_F_VKO_COMPUTE_KEY, ERR_R_MALLOC_FAILURE); goto err; } md = EVP_get_digestbynid(effective_dgst_nid); if (!md) { GOSTerr(GOST_F_VKO_COMPUTE_KEY, GOST_R_INVALID_DIGEST_TYPE); goto err; } UKM = hashsum2bn(ukm, 8); p = BN_CTX_get(ctx); order = BN_CTX_get(ctx); X = BN_CTX_get(ctx); Y = BN_CTX_get(ctx); EC_GROUP_get_order(EC_KEY_get0_group(priv_key), order, ctx); BN_mod_mul(p, key, UKM, order, ctx); if (!EC_POINT_mul (EC_KEY_get0_group(priv_key), pnt, NULL, pub_key, p, ctx)) { GOSTerr(GOST_F_VKO_COMPUTE_KEY, GOST_R_ERROR_POINT_MUL); goto err; } EC_POINT_get_affine_coordinates_GFp(EC_KEY_get0_group(priv_key), pnt, X, Y, ctx); /* * Serialize elliptic curve point same way as we do it when saving key */ store_bignum(Y, databuf, half_len); store_bignum(X, databuf + half_len, half_len); /* And reverse byte order of whole buffer */ BUF_reverse(databuf, NULL, buf_len); mdctx = EVP_MD_CTX_new(); if (!mdctx) { GOSTerr(GOST_F_VKO_COMPUTE_KEY, ERR_R_MALLOC_FAILURE); goto err; } EVP_MD_CTX_init(mdctx); EVP_DigestInit_ex(mdctx, md, NULL); EVP_DigestUpdate(mdctx, databuf, buf_len); EVP_DigestFinal_ex(mdctx, shared_key, NULL); ret = 32; err: BN_free(UKM); BN_CTX_end(ctx); BN_CTX_free(ctx); EC_POINT_free(pnt); EVP_MD_CTX_free(mdctx); OPENSSL_free(databuf); return ret; } /* * EVP_PKEY_METHOD callback derive. * Implements VKO R 34.10-2001/2012 algorithms */ int pkey_gost_ec_derive(EVP_PKEY_CTX *ctx, unsigned char *key, size_t *keylen) { /* * Public key of peer in the ctx field peerkey * Our private key in the ctx pkey * ukm is in the algorithm specific context data */ EVP_PKEY *my_key = EVP_PKEY_CTX_get0_pkey(ctx); EVP_PKEY *peer_key = EVP_PKEY_CTX_get0_peerkey(ctx); struct gost_pmeth_data *data = EVP_PKEY_CTX_get_data(ctx); int dgst_nid = NID_undef; if (!data || !data->shared_ukm) { GOSTerr(GOST_F_PKEY_GOST_EC_DERIVE, GOST_R_UKM_NOT_SET); return 0; } if (key == NULL) { *keylen = 32; return 1; } EVP_PKEY_get_default_digest_nid(my_key, &dgst_nid); *keylen = VKO_compute_key(key, 32, EC_KEY_get0_public_key(EVP_PKEY_get0(peer_key)), (EC_KEY *)EVP_PKEY_get0(my_key), data->shared_ukm, dgst_nid); return (*keylen) ? 1 : 0; } /* * Generates ephemeral key based on pubk algorithm computes shared key using * VKO and returns filled up GOST_KEY_TRANSPORT structure */ /* * EVP_PKEY_METHOD callback encrypt * Implementation of GOST2001 key transport, cryptopo variation */ int pkey_GOST_ECcp_encrypt(EVP_PKEY_CTX *pctx, unsigned char *out, size_t *out_len, const unsigned char *key, size_t key_len) { GOST_KEY_TRANSPORT *gkt = NULL; EVP_PKEY *pubk = EVP_PKEY_CTX_get0_pkey(pctx); struct gost_pmeth_data *data = EVP_PKEY_CTX_get_data(pctx); int pkey_nid = EVP_PKEY_base_id(pubk); ASN1_OBJECT *crypt_params_obj = (pkey_nid == NID_id_GostR3410_2001) ? OBJ_nid2obj(NID_id_Gost28147_89_CryptoPro_A_ParamSet) : OBJ_nid2obj(NID_id_tc26_gost_28147_param_Z); const struct gost_cipher_info *param = get_encryption_params(crypt_params_obj); unsigned char ukm[8], shared_key[32], crypted_key[44]; int ret = 0; int key_is_ephemeral = 1; gost_ctx cctx; EVP_PKEY *sec_key = EVP_PKEY_CTX_get0_peerkey(pctx); if (data->shared_ukm) { memcpy(ukm, data->shared_ukm, 8); } else if (out) { if (RAND_bytes(ukm, 8) <= 0) { GOSTerr(GOST_F_PKEY_GOST_ECCP_ENCRYPT, GOST_R_RNG_ERROR); return 0; } } /* Check for private key in the peer_key of context */ if (sec_key) { key_is_ephemeral = 0; if (!gost_get0_priv_key(sec_key)) { GOSTerr(GOST_F_PKEY_GOST_ECCP_ENCRYPT, GOST_R_NO_PRIVATE_PART_OF_NON_EPHEMERAL_KEYPAIR); goto err; } } else { key_is_ephemeral = 1; if (out) { sec_key = EVP_PKEY_new(); if (! EVP_PKEY_assign(sec_key, EVP_PKEY_base_id(pubk), EC_KEY_new()) || ! EVP_PKEY_copy_parameters(sec_key, pubk) || ! gost_ec_keygen(EVP_PKEY_get0(sec_key))) { GOSTerr(GOST_F_PKEY_GOST_ECCP_ENCRYPT, GOST_R_ERROR_COMPUTING_SHARED_KEY); goto err; } } } if (!get_gost_engine_param(GOST_PARAM_CRYPT_PARAMS) && param == gost_cipher_list) { param = gost_cipher_list; } if (out) { int dgst_nid = NID_undef; EVP_PKEY_get_default_digest_nid(pubk, &dgst_nid); if (!VKO_compute_key(shared_key, 32, EC_KEY_get0_public_key(EVP_PKEY_get0(pubk)), EVP_PKEY_get0(sec_key), ukm, dgst_nid)) { GOSTerr(GOST_F_PKEY_GOST_ECCP_ENCRYPT, GOST_R_ERROR_COMPUTING_SHARED_KEY); goto err; } gost_init(&cctx, param->sblock); keyWrapCryptoPro(&cctx, shared_key, ukm, key, crypted_key); } gkt = GOST_KEY_TRANSPORT_new(); if (!gkt) { goto err; } if (!ASN1_OCTET_STRING_set(gkt->key_agreement_info->eph_iv, ukm, 8)) { goto err; } if (!ASN1_OCTET_STRING_set(gkt->key_info->imit, crypted_key + 40, 4)) { goto err; } if (!ASN1_OCTET_STRING_set (gkt->key_info->encrypted_key, crypted_key + 8, 32)) { goto err; } if (key_is_ephemeral) { if (!X509_PUBKEY_set (&gkt->key_agreement_info->ephem_key, out ? sec_key : pubk)) { GOSTerr(GOST_F_PKEY_GOST_ECCP_ENCRYPT, GOST_R_CANNOT_PACK_EPHEMERAL_KEY); goto err; } } ASN1_OBJECT_free(gkt->key_agreement_info->cipher); gkt->key_agreement_info->cipher = OBJ_nid2obj(param->nid); if (key_is_ephemeral) EVP_PKEY_free(sec_key); if (!key_is_ephemeral) { /* Set control "public key from client certificate used" */ if (EVP_PKEY_CTX_ctrl(pctx, -1, -1, EVP_PKEY_CTRL_PEER_KEY, 3, NULL) <= 0) { GOSTerr(GOST_F_PKEY_GOST_ECCP_ENCRYPT, GOST_R_CTRL_CALL_FAILED); goto err; } } if ((*out_len = i2d_GOST_KEY_TRANSPORT(gkt, out ? &out : NULL)) > 0) ret = 1; GOST_KEY_TRANSPORT_free(gkt); return ret; err: if (key_is_ephemeral) EVP_PKEY_free(sec_key); GOST_KEY_TRANSPORT_free(gkt); return -1; } /* * EVP_PKEY_METHOD callback decrypt * Implementation of GOST2001 key transport, cryptopo variation */ int pkey_GOST_ECcp_decrypt(EVP_PKEY_CTX *pctx, unsigned char *key, size_t *key_len, const unsigned char *in, size_t in_len) { const unsigned char *p = in; EVP_PKEY *priv = EVP_PKEY_CTX_get0_pkey(pctx); GOST_KEY_TRANSPORT *gkt = NULL; int ret = 0; unsigned char wrappedKey[44]; unsigned char sharedKey[32]; gost_ctx ctx; const struct gost_cipher_info *param = NULL; EVP_PKEY *eph_key = NULL, *peerkey = NULL; int dgst_nid = NID_undef; if (!key) { *key_len = 32; return 1; } gkt = d2i_GOST_KEY_TRANSPORT(NULL, (const unsigned char **)&p, in_len); if (!gkt) { GOSTerr(GOST_F_PKEY_GOST_ECCP_DECRYPT, GOST_R_ERROR_PARSING_KEY_TRANSPORT_INFO); return -1; } /* If key transport structure contains public key, use it */ eph_key = X509_PUBKEY_get(gkt->key_agreement_info->ephem_key); if (eph_key) { if (EVP_PKEY_derive_set_peer(pctx, eph_key) <= 0) { GOSTerr(GOST_F_PKEY_GOST_ECCP_DECRYPT, GOST_R_INCOMPATIBLE_PEER_KEY); goto err; } } else { /* Set control "public key from client certificate used" */ if (EVP_PKEY_CTX_ctrl(pctx, -1, -1, EVP_PKEY_CTRL_PEER_KEY, 3, NULL) <= 0) { GOSTerr(GOST_F_PKEY_GOST_ECCP_DECRYPT, GOST_R_CTRL_CALL_FAILED); goto err; } } peerkey = EVP_PKEY_CTX_get0_peerkey(pctx); if (!peerkey) { GOSTerr(GOST_F_PKEY_GOST_ECCP_DECRYPT, GOST_R_NO_PEER_KEY); goto err; } param = get_encryption_params(gkt->key_agreement_info->cipher); if (!param) { goto err; } gost_init(&ctx, param->sblock); OPENSSL_assert(gkt->key_agreement_info->eph_iv->length == 8); memcpy(wrappedKey, gkt->key_agreement_info->eph_iv->data, 8); OPENSSL_assert(gkt->key_info->encrypted_key->length == 32); memcpy(wrappedKey + 8, gkt->key_info->encrypted_key->data, 32); OPENSSL_assert(gkt->key_info->imit->length == 4); memcpy(wrappedKey + 40, gkt->key_info->imit->data, 4); EVP_PKEY_get_default_digest_nid(priv, &dgst_nid); if (!VKO_compute_key(sharedKey, 32, EC_KEY_get0_public_key(EVP_PKEY_get0(peerkey)), EVP_PKEY_get0(priv), wrappedKey, dgst_nid)) { GOSTerr(GOST_F_PKEY_GOST_ECCP_DECRYPT, GOST_R_ERROR_COMPUTING_SHARED_KEY); goto err; } if (!keyUnwrapCryptoPro(&ctx, sharedKey, wrappedKey, key)) { GOSTerr(GOST_F_PKEY_GOST_ECCP_DECRYPT, GOST_R_ERROR_COMPUTING_SHARED_KEY); goto err; } ret = 1; err: EVP_PKEY_free(eph_key); GOST_KEY_TRANSPORT_free(gkt); return ret; } libengine-gost-openssl1.1-1.1.0.1/gost_ec_sign.c000066400000000000000000000336211315100554000212650ustar00rootroot00000000000000/********************************************************************** * gost_ec_sign.c * * Copyright (c) 2005-2013 Cryptocom LTD * * This file is distributed under the same license as OpenSSL * * * * Implementation of GOST R 34.10-2001 * * Requires OpenSSL 1.0.0+ for compilation * **********************************************************************/ #include "gost_lcl.h" #include #include #include #include #include "e_gost_err.h" #ifdef DEBUG_SIGN extern void dump_signature(const char *message, const unsigned char *buffer, size_t len); void dump_dsa_sig(const char *message, DSA_SIG *sig); #else # define dump_signature(a,b,c) # define dump_dsa_sig(a,b) #endif /* Convert little-endian byte array into bignum */ BIGNUM *hashsum2bn(const unsigned char *dgst, int len) { unsigned char buf[64]; int i; if (len > sizeof(buf)) return NULL; for (i = 0; i < len; i++) { buf[len - i - 1] = dgst[i]; } return BN_bin2bn(buf, len, NULL); } static R3410_ec_params *gost_nid2params(int nid) { R3410_ec_params *params; /* Search nid in 2012 paramset */ params = R3410_2012_512_paramset; while (params->nid != NID_undef) { if (params->nid == nid) return params; params++; } /* Search nid in 2001 paramset */ params = R3410_2001_paramset; while (params->nid != NID_undef) { if (params->nid == nid) return params; params++; } return NULL; } /* * Fills EC_KEY structure hidden in the app_data field of DSA structure * with parameter information, extracted from parameter array in * params.c file. * * Also fils DSA->q field with copy of EC_GROUP order field to make * DSA_size function work */ int fill_GOST_EC_params(EC_KEY *eckey, int nid) { R3410_ec_params *params = gost_nid2params(nid); EC_GROUP *grp = NULL; EC_POINT *P = NULL; BIGNUM *p = NULL, *q = NULL, *a = NULL, *b = NULL, *x = NULL, *y = NULL; BN_CTX *ctx; int ok = 0; if (!eckey || !params) { GOSTerr(GOST_F_FILL_GOST_EC_PARAMS, GOST_R_UNSUPPORTED_PARAMETER_SET); return 0; } if (!(ctx = BN_CTX_new())) { GOSTerr(GOST_F_FILL_GOST_EC_PARAMS, ERR_R_MALLOC_FAILURE); return 0; } BN_CTX_start(ctx); p = BN_CTX_get(ctx); a = BN_CTX_get(ctx); b = BN_CTX_get(ctx); x = BN_CTX_get(ctx); y = BN_CTX_get(ctx); q = BN_CTX_get(ctx); if (!p || !a || !b || !x || !y || !q) { GOSTerr(GOST_F_FILL_GOST_EC_PARAMS, ERR_R_MALLOC_FAILURE); goto end; } if (!BN_hex2bn(&p, params->p) || !BN_hex2bn(&a, params->a) || !BN_hex2bn(&b, params->b)) { GOSTerr(GOST_F_FILL_GOST_EC_PARAMS, ERR_R_INTERNAL_ERROR); goto end; } grp = EC_GROUP_new_curve_GFp(p, a, b, ctx); if (!grp) { GOSTerr(GOST_F_FILL_GOST_EC_PARAMS, ERR_R_MALLOC_FAILURE); goto end; } P = EC_POINT_new(grp); if (!P) { GOSTerr(GOST_F_FILL_GOST_EC_PARAMS, ERR_R_MALLOC_FAILURE); goto end; } if (!BN_hex2bn(&x, params->x) || !BN_hex2bn(&y, params->y) || !EC_POINT_set_affine_coordinates_GFp(grp, P, x, y, ctx) || !BN_hex2bn(&q, params->q)) { GOSTerr(GOST_F_FILL_GOST_EC_PARAMS, ERR_R_INTERNAL_ERROR); goto end; } if (!EC_GROUP_set_generator(grp, P, q, NULL)) { GOSTerr(GOST_F_FILL_GOST_EC_PARAMS, ERR_R_INTERNAL_ERROR); goto end; } EC_GROUP_set_curve_name(grp, params->nid); if (!EC_KEY_set_group(eckey, grp)) { GOSTerr(GOST_F_FILL_GOST_EC_PARAMS, ERR_R_INTERNAL_ERROR); goto end; } ok = 1; end: if (P) EC_POINT_free(P); if (grp) EC_GROUP_free(grp); BN_CTX_end(ctx); BN_CTX_free(ctx); return ok; } /* * Computes gost_ec signature as DSA_SIG structure * */ DSA_SIG *gost_ec_sign(const unsigned char *dgst, int dlen, EC_KEY *eckey) { DSA_SIG *newsig = NULL, *ret = NULL; BIGNUM *md = NULL; BIGNUM *order = NULL; const EC_GROUP *group; const BIGNUM *priv_key; BIGNUM *r = NULL, *s = NULL, *X = NULL, *tmp = NULL, *tmp2 = NULL, *k = NULL, *e = NULL; BIGNUM *new_r = NULL, *new_s = NULL; EC_POINT *C = NULL; BN_CTX *ctx; OPENSSL_assert(dgst != NULL && eckey != NULL); if (!(ctx = BN_CTX_new())) { GOSTerr(GOST_F_GOST_EC_SIGN, ERR_R_MALLOC_FAILURE); return NULL; } BN_CTX_start(ctx); OPENSSL_assert(dlen == 32 || dlen == 64); md = hashsum2bn(dgst, dlen); newsig = DSA_SIG_new(); if (!newsig || !md) { GOSTerr(GOST_F_GOST_EC_SIGN, ERR_R_MALLOC_FAILURE); goto err; } group = EC_KEY_get0_group(eckey); if (!group) { GOSTerr(GOST_F_GOST_EC_SIGN, ERR_R_INTERNAL_ERROR); goto err; } order = BN_CTX_get(ctx); if (!order || !EC_GROUP_get_order(group, order, ctx)) { GOSTerr(GOST_F_GOST_EC_SIGN, ERR_R_INTERNAL_ERROR); goto err; } priv_key = EC_KEY_get0_private_key(eckey); if (!priv_key) { GOSTerr(GOST_F_GOST_EC_SIGN, ERR_R_INTERNAL_ERROR); goto err; } e = BN_CTX_get(ctx); if (!e || !BN_mod(e, md, order, ctx)) { GOSTerr(GOST_F_GOST_EC_SIGN, ERR_R_INTERNAL_ERROR); goto err; } #ifdef DEBUG_SIGN fprintf(stderr, "digest as bignum="); BN_print_fp(stderr, md); fprintf(stderr, "\ndigest mod q="); BN_print_fp(stderr, e); fprintf(stderr, "\n"); #endif if (BN_is_zero(e)) { BN_one(e); } k = BN_CTX_get(ctx); C = EC_POINT_new(group); if (!k || !C) { GOSTerr(GOST_F_GOST_EC_SIGN, ERR_R_MALLOC_FAILURE); goto err; } do { do { if (!BN_rand_range(k, order)) { GOSTerr(GOST_F_GOST_EC_SIGN, GOST_R_RNG_ERROR); goto err; } /* * To avoid timing information leaking the length of k, * compute C*k using an equivalent scalar of fixed bit-length */ if (!BN_add(k, k, order) || (BN_num_bits(k) <= BN_num_bits(order) && !BN_add(k, k, order))) { goto err; } if (!EC_POINT_mul(group, C, k, NULL, NULL, ctx)) { GOSTerr(GOST_F_GOST_EC_SIGN, ERR_R_EC_LIB); goto err; } if (!X) X = BN_CTX_get(ctx); if (!r) r = BN_CTX_get(ctx); if (!X || !r) { GOSTerr(GOST_F_GOST_EC_SIGN, ERR_R_MALLOC_FAILURE); goto err; } if (!EC_POINT_get_affine_coordinates_GFp(group, C, X, NULL, ctx)) { GOSTerr(GOST_F_GOST_EC_SIGN, ERR_R_EC_LIB); goto err; } if (!BN_nnmod(r, X, order, ctx)) { GOSTerr(GOST_F_GOST_EC_SIGN, ERR_R_INTERNAL_ERROR); goto err; } } while (BN_is_zero(r)); /* s = (r*priv_key+k*e) mod order */ if (!tmp) tmp = BN_CTX_get(ctx); if (!tmp2) tmp2 = BN_CTX_get(ctx); if (!s) s = BN_CTX_get(ctx); if (!tmp || !tmp2 || !s) { GOSTerr(GOST_F_GOST_EC_SIGN, ERR_R_MALLOC_FAILURE); goto err; } if (!BN_mod_mul(tmp, priv_key, r, order, ctx) || !BN_mod_mul(tmp2, k, e, order, ctx) || !BN_mod_add(s, tmp, tmp2, order, ctx)) { GOSTerr(GOST_F_GOST_EC_SIGN, ERR_R_INTERNAL_ERROR); goto err; } } while (BN_is_zero(s)); new_s = BN_dup(s); new_r = BN_dup(r); if (!new_s || !new_r) { GOSTerr(GOST_F_GOST_EC_SIGN, ERR_R_MALLOC_FAILURE); goto err; } DSA_SIG_set0(newsig, new_r, new_s); ret = newsig; err: BN_CTX_end(ctx); BN_CTX_free(ctx); if (C) EC_POINT_free(C); if (md) BN_free(md); if (!ret && newsig) { DSA_SIG_free(newsig); } return ret; } /* * Verifies gost ec signature * */ int gost_ec_verify(const unsigned char *dgst, int dgst_len, DSA_SIG *sig, EC_KEY *ec) { BN_CTX *ctx; const EC_GROUP *group = (ec) ? EC_KEY_get0_group(ec) : NULL; BIGNUM *order; BIGNUM *md = NULL, *e = NULL, *R = NULL, *v = NULL, *z1 = NULL, *z2 = NULL; const BIGNUM *sig_s = NULL, *sig_r = NULL; BIGNUM *X = NULL, *tmp = NULL; EC_POINT *C = NULL; const EC_POINT *pub_key = NULL; int ok = 0; OPENSSL_assert(dgst != NULL && sig != NULL && group != NULL); if (!(ctx = BN_CTX_new())) { GOSTerr(GOST_F_GOST_EC_VERIFY, ERR_R_MALLOC_FAILURE); return 0; } BN_CTX_start(ctx); order = BN_CTX_get(ctx); e = BN_CTX_get(ctx); z1 = BN_CTX_get(ctx); z2 = BN_CTX_get(ctx); tmp = BN_CTX_get(ctx); X = BN_CTX_get(ctx); R = BN_CTX_get(ctx); v = BN_CTX_get(ctx); if (!order || !e || !z1 || !z2 || !tmp || !X || !R || !v) { GOSTerr(GOST_F_GOST_EC_VERIFY, ERR_R_MALLOC_FAILURE); goto err; } pub_key = EC_KEY_get0_public_key(ec); if (!pub_key || !EC_GROUP_get_order(group, order, ctx)) { GOSTerr(GOST_F_GOST_EC_VERIFY, ERR_R_INTERNAL_ERROR); goto err; } DSA_SIG_get0(sig, &sig_r, &sig_s); if (BN_is_zero(sig_s) || BN_is_zero(sig_r) || (BN_cmp(sig_s, order) >= 1) || (BN_cmp(sig_r, order) >= 1)) { GOSTerr(GOST_F_GOST_EC_VERIFY, GOST_R_SIGNATURE_PARTS_GREATER_THAN_Q); goto err; } OPENSSL_assert(dgst_len == 32 || dgst_len == 64); md = hashsum2bn(dgst, dgst_len); if (!md || !BN_mod(e, md, order, ctx)) { GOSTerr(GOST_F_GOST_EC_VERIFY, ERR_R_INTERNAL_ERROR); goto err; } #ifdef DEBUG_SIGN fprintf(stderr, "digest as bignum: "); BN_print_fp(stderr, md); fprintf(stderr, "\ndigest mod q: "); BN_print_fp(stderr, e); #endif if (BN_is_zero(e) && !BN_one(e)) { GOSTerr(GOST_F_GOST_EC_VERIFY, ERR_R_INTERNAL_ERROR); goto err; } v = BN_mod_inverse(v, e, order, ctx); if (!v || !BN_mod_mul(z1, sig_s, v, order, ctx) || !BN_sub(tmp, order, sig_r) || !BN_mod_mul(z2, tmp, v, order, ctx)) { GOSTerr(GOST_F_GOST_EC_VERIFY, ERR_R_INTERNAL_ERROR); goto err; } #ifdef DEBUG_SIGN fprintf(stderr, "\nInverted digest value: "); BN_print_fp(stderr, v); fprintf(stderr, "\nz1: "); BN_print_fp(stderr, z1); fprintf(stderr, "\nz2: "); BN_print_fp(stderr, z2); #endif C = EC_POINT_new(group); if (!C) { GOSTerr(GOST_F_GOST_EC_VERIFY, ERR_R_MALLOC_FAILURE); goto err; } if (!EC_POINT_mul(group, C, z1, pub_key, z2, ctx)) { GOSTerr(GOST_F_GOST_EC_VERIFY, ERR_R_EC_LIB); goto err; } if (!EC_POINT_get_affine_coordinates_GFp(group, C, X, NULL, ctx)) { GOSTerr(GOST_F_GOST_EC_VERIFY, ERR_R_EC_LIB); goto err; } if (!BN_mod(R, X, order, ctx)) { GOSTerr(GOST_F_GOST_EC_VERIFY, ERR_R_INTERNAL_ERROR); goto err; } #ifdef DEBUG_SIGN fprintf(stderr, "\nX="); BN_print_fp(stderr, X); fprintf(stderr, "\nX mod q="); BN_print_fp(stderr, R); fprintf(stderr, "\n"); #endif if (BN_cmp(R, sig_r) != 0) { GOSTerr(GOST_F_GOST_EC_VERIFY, GOST_R_SIGNATURE_MISMATCH); } else { ok = 1; } err: if (C) EC_POINT_free(C); BN_CTX_end(ctx); BN_CTX_free(ctx); if (md) BN_free(md); return ok; } /* * Computes GOST R 34.10-2001 public key * or GOST R 34.10-2012 public key * */ int gost_ec_compute_public(EC_KEY *ec) { const EC_GROUP *group = (ec) ? EC_KEY_get0_group(ec) : NULL; EC_POINT *pub_key = NULL; const BIGNUM *priv_key = NULL; BN_CTX *ctx = NULL; int ok = 0; if (!group) { GOSTerr(GOST_F_GOST_EC_COMPUTE_PUBLIC, GOST_R_KEY_IS_NOT_INITIALIZED); return 0; } ctx = BN_CTX_new(); if (!ctx) { GOSTerr(GOST_F_GOST_EC_COMPUTE_PUBLIC, ERR_R_MALLOC_FAILURE); return 0; } BN_CTX_start(ctx); priv_key = EC_KEY_get0_private_key(ec); if (!priv_key) { GOSTerr(GOST_F_GOST_EC_COMPUTE_PUBLIC, ERR_R_EC_LIB); goto err; } pub_key = EC_POINT_new(group); if (!pub_key) { GOSTerr(GOST_F_GOST_EC_COMPUTE_PUBLIC, ERR_R_MALLOC_FAILURE); goto err; } if (!EC_POINT_mul(group, pub_key, priv_key, NULL, NULL, ctx)) { GOSTerr(GOST_F_GOST_EC_COMPUTE_PUBLIC, ERR_R_EC_LIB); goto err; } if (!EC_KEY_set_public_key(ec, pub_key)) { GOSTerr(GOST_F_GOST_EC_COMPUTE_PUBLIC, ERR_R_EC_LIB); goto err; } ok = 1; err: if (pub_key) EC_POINT_free(pub_key); BN_CTX_end(ctx); BN_CTX_free(ctx); return ok; } /* * * Generates GOST R 34.10-2001 * or GOST R 34.10-2012 keypair * */ int gost_ec_keygen(EC_KEY *ec) { BIGNUM *order = NULL, *d = NULL; const EC_GROUP *group = (ec) ? EC_KEY_get0_group(ec) : NULL; int ok = 0; if (!group) { GOSTerr(GOST_F_GOST_EC_KEYGEN, ERR_R_INTERNAL_ERROR); return 0; } order = BN_new(); d = BN_new(); if (!order || !d) { GOSTerr(GOST_F_GOST_EC_KEYGEN, ERR_R_MALLOC_FAILURE); goto end; } if (!EC_GROUP_get_order(group, order, NULL)) { GOSTerr(GOST_F_GOST_EC_KEYGEN, ERR_R_INTERNAL_ERROR); goto end; } do { if (!BN_rand_range(d, order)) { GOSTerr(GOST_F_GOST_EC_KEYGEN, GOST_R_RNG_ERROR); goto end; } } while (BN_is_zero(d)); if (!EC_KEY_set_private_key(ec, d)) { GOSTerr(GOST_F_GOST_EC_KEYGEN, ERR_R_INTERNAL_ERROR); goto end; } ok = 1; end: if (d) BN_free(d); if (order) BN_free(order); return (ok) ? gost_ec_compute_public(ec) : 0; } libengine-gost-openssl1.1-1.1.0.1/gost_eng.c000066400000000000000000000276751315100554000204430ustar00rootroot00000000000000/********************************************************************** * gost_eng.c * * Copyright (c) 2005-2006 Cryptocom LTD * * This file is distributed under the same license as OpenSSL * * * * Main file of GOST engine * * for OpenSSL * * Requires OpenSSL 0.9.9 for compilation * **********************************************************************/ #include #include #include #include #include #include #include "e_gost_err.h" #include "gost_lcl.h" #include "gost_grasshopper_cipher.h" static const char* engine_gost_id = "gost"; static const char* engine_gost_name = "Reference implementation of GOST engine"; /* Symmetric cipher and digest function registrar */ static int gost_ciphers(ENGINE* e, const EVP_CIPHER** cipher, const int** nids, int nid); static int gost_digests(ENGINE* e, const EVP_MD** digest, const int** nids, int ind); static int gost_pkey_meths(ENGINE* e, EVP_PKEY_METHOD** pmeth, const int** nids, int nid); static int gost_pkey_asn1_meths(ENGINE* e, EVP_PKEY_ASN1_METHOD** ameth, const int** nids, int nid); static int gost_cipher_nids[] = { NID_id_Gost28147_89, NID_gost89_cnt, NID_gost89_cnt_12, NID_gost89_cbc, NID_grasshopper_ecb, NID_grasshopper_cbc, NID_grasshopper_cfb, NID_grasshopper_ofb, NID_grasshopper_ctr, 0 }; static int gost_digest_nids(const int** nids) { static int digest_nids[6] = {0, 0, 0, 0, 0, 0}; static int pos = 0; static int init = 0; if (!init) { const EVP_MD* md; if ((md = digest_gost()) != NULL) digest_nids[pos++] = EVP_MD_type(md); if ((md = imit_gost_cpa()) != NULL) digest_nids[pos++] = EVP_MD_type(md); if ((md = digest_gost2012_256()) != NULL) digest_nids[pos++] = EVP_MD_type(md); if ((md = digest_gost2012_512()) != NULL) digest_nids[pos++] = EVP_MD_type(md); if ((md = imit_gost_cp_12()) != NULL) digest_nids[pos++] = EVP_MD_type(md); digest_nids[pos] = 0; init = 1; } *nids = digest_nids; return pos; } static int gost_pkey_meth_nids[] = { NID_id_GostR3410_2001, NID_id_Gost28147_89_MAC, NID_id_GostR3410_2012_256, NID_id_GostR3410_2012_512, NID_gost_mac_12, 0 }; static EVP_PKEY_METHOD* pmeth_GostR3410_2001 = NULL, * pmeth_GostR3410_2012_256 = NULL, * pmeth_GostR3410_2012_512 = NULL, * pmeth_Gost28147_MAC = NULL, * pmeth_Gost28147_MAC_12 = NULL; static EVP_PKEY_ASN1_METHOD* ameth_GostR3410_2001 = NULL, * ameth_GostR3410_2012_256 = NULL, * ameth_GostR3410_2012_512 = NULL, * ameth_Gost28147_MAC = NULL, * ameth_Gost28147_MAC_12 = NULL; static int gost_engine_init(ENGINE* e) { return 1; } static int gost_engine_finish(ENGINE* e) { return 1; } static int gost_engine_destroy(ENGINE* e) { digest_gost_destroy(); digest_gost2012_256_destroy(); digest_gost2012_512_destroy(); imit_gost_cpa_destroy(); imit_gost_cp_12_destroy(); cipher_gost_destroy(); gost_param_free(); pmeth_GostR3410_2001 = NULL; pmeth_Gost28147_MAC = NULL; pmeth_GostR3410_2012_256 = NULL; pmeth_GostR3410_2012_512 = NULL; pmeth_Gost28147_MAC_12 = NULL; ameth_GostR3410_2001 = NULL; ameth_Gost28147_MAC = NULL; ameth_GostR3410_2012_256 = NULL; ameth_GostR3410_2012_512 = NULL; ameth_Gost28147_MAC_12 = NULL; ERR_unload_GOST_strings(); return 1; } static int bind_gost(ENGINE* e, const char* id) { int ret = 0; if (id != NULL && strcmp(id, engine_gost_id) != 0) return 0; if (ameth_GostR3410_2001) { printf("GOST engine already loaded\n"); goto end; } if (!ENGINE_set_id(e, engine_gost_id)) { printf("ENGINE_set_id failed\n"); goto end; } if (!ENGINE_set_name(e, engine_gost_name)) { printf("ENGINE_set_name failed\n"); goto end; } if (!ENGINE_set_digests(e, gost_digests)) { printf("ENGINE_set_digests failed\n"); goto end; } if (!ENGINE_set_ciphers(e, gost_ciphers)) { printf("ENGINE_set_ciphers failed\n"); goto end; } if (!ENGINE_set_pkey_meths(e, gost_pkey_meths)) { printf("ENGINE_set_pkey_meths failed\n"); goto end; } if (!ENGINE_set_pkey_asn1_meths(e, gost_pkey_asn1_meths)) { printf("ENGINE_set_pkey_asn1_meths failed\n"); goto end; } /* Control function and commands */ if (!ENGINE_set_cmd_defns(e, gost_cmds)) { fprintf(stderr, "ENGINE_set_cmd_defns failed\n"); goto end; } if (!ENGINE_set_ctrl_function(e, gost_control_func)) { fprintf(stderr, "ENGINE_set_ctrl_func failed\n"); goto end; } if (!ENGINE_set_destroy_function(e, gost_engine_destroy) || !ENGINE_set_init_function(e, gost_engine_init) || !ENGINE_set_finish_function(e, gost_engine_finish)) { goto end; } if (!register_ameth_gost (NID_id_GostR3410_2001, &ameth_GostR3410_2001, "GOST2001", "GOST R 34.10-2001")) goto end; if (!register_ameth_gost (NID_id_GostR3410_2012_256, &ameth_GostR3410_2012_256, "GOST2012_256", "GOST R 34.10-2012 with 256 bit key")) goto end; if (!register_ameth_gost (NID_id_GostR3410_2012_512, &ameth_GostR3410_2012_512, "GOST2012_512", "GOST R 34.10-2012 with 512 bit key")) goto end; if (!register_ameth_gost(NID_id_Gost28147_89_MAC, &ameth_Gost28147_MAC, "GOST-MAC", "GOST 28147-89 MAC")) goto end; if (!register_ameth_gost(NID_gost_mac_12, &ameth_Gost28147_MAC_12, "GOST-MAC-12", "GOST 28147-89 MAC with 2012 params")) goto end; if (!register_pmeth_gost(NID_id_GostR3410_2001, &pmeth_GostR3410_2001, 0)) goto end; if (!register_pmeth_gost (NID_id_GostR3410_2012_256, &pmeth_GostR3410_2012_256, 0)) goto end; if (!register_pmeth_gost (NID_id_GostR3410_2012_512, &pmeth_GostR3410_2012_512, 0)) goto end; if (!register_pmeth_gost (NID_id_Gost28147_89_MAC, &pmeth_Gost28147_MAC, 0)) goto end; if (!register_pmeth_gost(NID_gost_mac_12, &pmeth_Gost28147_MAC_12, 0)) goto end; if (!ENGINE_register_ciphers(e) || !ENGINE_register_digests(e) || !ENGINE_register_pkey_meths(e) /* These two actually should go in LIST_ADD command */ || !EVP_add_cipher(cipher_gost()) || !EVP_add_cipher(cipher_gost_cbc()) || !EVP_add_cipher(cipher_gost_cpacnt()) || !EVP_add_cipher(cipher_gost_cpcnt_12()) || !EVP_add_cipher(cipher_gost_grasshopper_ecb()) || !EVP_add_cipher(cipher_gost_grasshopper_cbc()) || !EVP_add_cipher(cipher_gost_grasshopper_cfb()) || !EVP_add_cipher(cipher_gost_grasshopper_ofb()) || !EVP_add_cipher(cipher_gost_grasshopper_ctr()) || !EVP_add_digest(digest_gost()) || !EVP_add_digest(digest_gost2012_512()) || !EVP_add_digest(digest_gost2012_256()) || !EVP_add_digest(imit_gost_cpa()) || !EVP_add_digest(imit_gost_cp_12()) ) { goto end; } ENGINE_register_all_complete(); ERR_load_GOST_strings(); ret = 1; end: return ret; } #ifndef OPENSSL_NO_DYNAMIC_ENGINE IMPLEMENT_DYNAMIC_BIND_FN(bind_gost) IMPLEMENT_DYNAMIC_CHECK_FN() #endif /* ndef OPENSSL_NO_DYNAMIC_ENGINE */ static int gost_digests(ENGINE* e, const EVP_MD** digest, const int** nids, int nid) { int ok = 1; if (digest == NULL) { return gost_digest_nids(nids); } if (nid == NID_id_GostR3411_94) { *digest = digest_gost(); } else if (nid == NID_id_Gost28147_89_MAC) { *digest = imit_gost_cpa(); } else if (nid == NID_id_GostR3411_2012_256) { *digest = digest_gost2012_256(); } else if (nid == NID_id_GostR3411_2012_512) { *digest = digest_gost2012_512(); } else if (nid == NID_gost_mac_12) { *digest = imit_gost_cp_12(); } else { ok = 0; *digest = NULL; } return ok; } static int gost_ciphers(ENGINE* e, const EVP_CIPHER** cipher, const int** nids, int nid) { int ok = 1; if (cipher == NULL) { *nids = gost_cipher_nids; return sizeof(gost_cipher_nids) / sizeof(gost_cipher_nids[0]) - 1; } if (nid == NID_id_Gost28147_89) { *cipher = cipher_gost(); } else if (nid == NID_gost89_cnt) { *cipher = cipher_gost_cpacnt(); } else if (nid == NID_gost89_cnt_12) { *cipher = cipher_gost_cpcnt_12(); } else if (nid == NID_gost89_cbc) { *cipher = cipher_gost_cbc(); } else if (nid == NID_grasshopper_ecb) { *cipher = cipher_gost_grasshopper_ecb(); } else if (nid == NID_grasshopper_cbc) { *cipher = cipher_gost_grasshopper_cbc(); } else if (nid == NID_grasshopper_cfb) { *cipher = cipher_gost_grasshopper_cfb(); } else if (nid == NID_grasshopper_ofb) { *cipher = cipher_gost_grasshopper_ofb(); } else if (nid == NID_grasshopper_ctr) { *cipher = cipher_gost_grasshopper_ctr(); } else { ok = 0; *cipher = NULL; } return ok; } static int gost_pkey_meths(ENGINE* e, EVP_PKEY_METHOD** pmeth, const int** nids, int nid) { if (pmeth == NULL) { *nids = gost_pkey_meth_nids; return sizeof(gost_pkey_meth_nids) / sizeof(gost_pkey_meth_nids[0]) - 1; } switch (nid) { case NID_id_GostR3410_2001: *pmeth = pmeth_GostR3410_2001; return 1; case NID_id_GostR3410_2012_256: *pmeth = pmeth_GostR3410_2012_256; return 1; case NID_id_GostR3410_2012_512: *pmeth = pmeth_GostR3410_2012_512; return 1; case NID_id_Gost28147_89_MAC: *pmeth = pmeth_Gost28147_MAC; return 1; case NID_gost_mac_12: *pmeth = pmeth_Gost28147_MAC_12; return 1; default:; } *pmeth = NULL; return 0; } static int gost_pkey_asn1_meths(ENGINE* e, EVP_PKEY_ASN1_METHOD** ameth, const int** nids, int nid) { if (ameth == NULL) { *nids = gost_pkey_meth_nids; return sizeof(gost_pkey_meth_nids) / sizeof(gost_pkey_meth_nids[0]) - 1; } switch (nid) { case NID_id_GostR3410_2001: *ameth = ameth_GostR3410_2001; return 1; case NID_id_GostR3410_2012_256: *ameth = ameth_GostR3410_2012_256; return 1; case NID_id_GostR3410_2012_512: *ameth = ameth_GostR3410_2012_512; return 1; case NID_id_Gost28147_89_MAC: *ameth = ameth_Gost28147_MAC; return 1; case NID_gost_mac_12: *ameth = ameth_Gost28147_MAC_12; return 1; default:; } *ameth = NULL; return 0; } #ifdef OPENSSL_NO_DYNAMIC_ENGINE static ENGINE* engine_gost(void) { ENGINE* ret = ENGINE_new(); if (!ret) return NULL; if (!bind_gost(ret, engine_gost_id)) { ENGINE_free(ret); return NULL; } return ret; } void ENGINE_load_gost(void) { ENGINE* toadd; if (pmeth_GostR3410_2001) return; toadd = engine_gost(); if (!toadd) return; ENGINE_add(toadd); ENGINE_free(toadd); ERR_clear_error(); } #endif libengine-gost-openssl1.1-1.1.0.1/gost_grasshopper.h000066400000000000000000000006471315100554000222220ustar00rootroot00000000000000/* * Maxim Tishkov 2016 * This file is distributed under the same license as OpenSSL */ #ifndef GOST_GRASSHOPPER_H #define GOST_GRASSHOPPER_H #if defined(__cplusplus) extern "C" { #endif #include "gost_grasshopper_defines.h" #include "gost_grasshopper_math.h" #include "gost_grasshopper_cipher.h" #include "gost_grasshopper_precompiled.h" #include "gost_grasshopper_core.h" #if defined(__cplusplus) } #endif #endif libengine-gost-openssl1.1-1.1.0.1/gost_grasshopper_cipher.c000066400000000000000000000566371315100554000235610ustar00rootroot00000000000000/* * Maxim Tishkov 2016 * This file is distributed under the same license as OpenSSL */ #if defined(__cplusplus) extern "C" { #endif #include "gost_grasshopper_cipher.h" #include "gost_grasshopper_defines.h" #include "gost_grasshopper_math.h" #include "gost_grasshopper_core.h" #include #include #include #include #include "e_gost_err.h" enum GRASSHOPPER_CIPHER_TYPE { GRASSHOPPER_CIPHER_ECB = 0, GRASSHOPPER_CIPHER_CBC, GRASSHOPPER_CIPHER_OFB, GRASSHOPPER_CIPHER_CFB, GRASSHOPPER_CIPHER_CTR }; static EVP_CIPHER* gost_grasshopper_ciphers[5] = { [GRASSHOPPER_CIPHER_ECB] = NULL, [GRASSHOPPER_CIPHER_CBC] = NULL, [GRASSHOPPER_CIPHER_OFB] = NULL, [GRASSHOPPER_CIPHER_CFB] = NULL, [GRASSHOPPER_CIPHER_CTR] = NULL }; static GRASSHOPPER_INLINE void gost_grasshopper_cipher_destroy_ofb(gost_grasshopper_cipher_ctx* c); static GRASSHOPPER_INLINE void gost_grasshopper_cipher_destroy_ctr(gost_grasshopper_cipher_ctx* c); struct GRASSHOPPER_CIPHER_PARAMS { int nid; grasshopper_init_cipher_func init_cipher; grasshopper_do_cipher_func do_cipher; grasshopper_destroy_cipher_func destroy_cipher; int block_size; int ctx_size; int iv_size; bool padding; }; static struct GRASSHOPPER_CIPHER_PARAMS gost_cipher_params[5] = { [GRASSHOPPER_CIPHER_ECB] = { NID_grasshopper_ecb, gost_grasshopper_cipher_init_ecb, gost_grasshopper_cipher_do_ecb, NULL, 16, sizeof(gost_grasshopper_cipher_ctx), 0, true }, [GRASSHOPPER_CIPHER_CBC] = { NID_grasshopper_cbc, gost_grasshopper_cipher_init_cbc, gost_grasshopper_cipher_do_cbc, NULL, 16, sizeof(gost_grasshopper_cipher_ctx), 16, true }, [GRASSHOPPER_CIPHER_OFB] = { NID_grasshopper_ofb, gost_grasshopper_cipher_init_ofb, gost_grasshopper_cipher_do_ofb, gost_grasshopper_cipher_destroy_ofb, 1, sizeof(gost_grasshopper_cipher_ctx_ofb), 16, false }, [GRASSHOPPER_CIPHER_CFB] = { NID_grasshopper_cfb, gost_grasshopper_cipher_init_cfb, gost_grasshopper_cipher_do_cfb, NULL, 1, sizeof(gost_grasshopper_cipher_ctx), 16, false }, [GRASSHOPPER_CIPHER_CTR] = { NID_grasshopper_ctr, gost_grasshopper_cipher_init_ctr, gost_grasshopper_cipher_do_ctr, gost_grasshopper_cipher_destroy_ctr, 1, sizeof(gost_grasshopper_cipher_ctx_ctr), 8, false }, }; /* Set 256 bit key into context */ GRASSHOPPER_INLINE void gost_grasshopper_cipher_key(gost_grasshopper_cipher_ctx* c, const uint8_t* k) { int i; for (i = 0; i < 2; i++) { grasshopper_copy128(&c->key.k.k[i], (const grasshopper_w128_t*) (k + i * 16)); } grasshopper_set_encrypt_key(&c->encrypt_round_keys, &c->key); grasshopper_set_decrypt_key(&c->decrypt_round_keys, &c->key); } /* Cleans up key from context */ GRASSHOPPER_INLINE void gost_grasshopper_cipher_destroy(gost_grasshopper_cipher_ctx* c) { int i; for (i = 0; i < 2; i++) { grasshopper_zero128(&c->key.k.k[i]); } for (i = 0; i < GRASSHOPPER_ROUND_KEYS_COUNT; i++) { grasshopper_zero128(&c->encrypt_round_keys.k[i]); } for (i = 0; i < GRASSHOPPER_ROUND_KEYS_COUNT; i++) { grasshopper_zero128(&c->decrypt_round_keys.k[i]); } grasshopper_zero128(&c->buffer); } static GRASSHOPPER_INLINE void gost_grasshopper_cipher_destroy_ofb(gost_grasshopper_cipher_ctx* c) { gost_grasshopper_cipher_ctx_ofb* ctx = (gost_grasshopper_cipher_ctx_ofb*) c; grasshopper_zero128(&ctx->buffer1); } static GRASSHOPPER_INLINE void gost_grasshopper_cipher_destroy_ctr(gost_grasshopper_cipher_ctx* c) { gost_grasshopper_cipher_ctx_ctr* ctx = (gost_grasshopper_cipher_ctx_ctr*) c; grasshopper_zero128(&ctx->iv_buffer); grasshopper_zero128(&ctx->partial_buffer); ctx->counter = 0; } int gost_grasshopper_cipher_init(EVP_CIPHER_CTX* ctx, const unsigned char* key, const unsigned char* iv, int enc) { gost_grasshopper_cipher_ctx* c = EVP_CIPHER_CTX_get_cipher_data(ctx); if (EVP_CIPHER_CTX_get_app_data(ctx) == NULL) { EVP_CIPHER_CTX_set_app_data(ctx, EVP_CIPHER_CTX_get_cipher_data(ctx)); } if (key != NULL) { gost_grasshopper_cipher_key(c, key); } if (iv != NULL) { memcpy((unsigned char*) EVP_CIPHER_CTX_original_iv(ctx), iv, EVP_CIPHER_CTX_iv_length(ctx)); } memcpy(EVP_CIPHER_CTX_iv_noconst(ctx), EVP_CIPHER_CTX_original_iv(ctx), EVP_CIPHER_CTX_iv_length(ctx)); grasshopper_zero128(&c->buffer); return 1; } GRASSHOPPER_INLINE int gost_grasshopper_cipher_init_ecb(EVP_CIPHER_CTX* ctx, const unsigned char* key, const unsigned char* iv, int enc) { gost_grasshopper_cipher_ctx* c = EVP_CIPHER_CTX_get_cipher_data(ctx); c->type = GRASSHOPPER_CIPHER_ECB; return gost_grasshopper_cipher_init(ctx, key, iv, enc); } GRASSHOPPER_INLINE int gost_grasshopper_cipher_init_cbc(EVP_CIPHER_CTX* ctx, const unsigned char* key, const unsigned char* iv, int enc) { gost_grasshopper_cipher_ctx* c = EVP_CIPHER_CTX_get_cipher_data(ctx); c->type = GRASSHOPPER_CIPHER_CBC; return gost_grasshopper_cipher_init(ctx, key, iv, enc); } GRASSHOPPER_INLINE int gost_grasshopper_cipher_init_ofb(EVP_CIPHER_CTX* ctx, const unsigned char* key, const unsigned char* iv, int enc) { gost_grasshopper_cipher_ctx_ofb* c = EVP_CIPHER_CTX_get_cipher_data(ctx); c->c.type = GRASSHOPPER_CIPHER_OFB; grasshopper_zero128(&c->buffer1); return gost_grasshopper_cipher_init(ctx, key, iv, enc); } GRASSHOPPER_INLINE int gost_grasshopper_cipher_init_cfb(EVP_CIPHER_CTX* ctx, const unsigned char* key, const unsigned char* iv, int enc) { gost_grasshopper_cipher_ctx* c = EVP_CIPHER_CTX_get_cipher_data(ctx); c->type = GRASSHOPPER_CIPHER_CFB; return gost_grasshopper_cipher_init(ctx, key, iv, enc); } GRASSHOPPER_INLINE int gost_grasshopper_cipher_init_ctr(EVP_CIPHER_CTX* ctx, const unsigned char* key, const unsigned char* iv, int enc) { gost_grasshopper_cipher_ctx_ctr* c = EVP_CIPHER_CTX_get_cipher_data(ctx); c->c.type = GRASSHOPPER_CIPHER_CTR; grasshopper_zero128(&c->iv_buffer); grasshopper_zero128(&c->partial_buffer); c->counter = 0; return gost_grasshopper_cipher_init(ctx, key, iv, enc); } GRASSHOPPER_INLINE int gost_grasshopper_cipher_do(EVP_CIPHER_CTX* ctx, unsigned char* out, const unsigned char* in, size_t inl) { gost_grasshopper_cipher_ctx* c = (gost_grasshopper_cipher_ctx*) EVP_CIPHER_CTX_get_cipher_data(ctx); struct GRASSHOPPER_CIPHER_PARAMS* params = &gost_cipher_params[c->type]; return params->do_cipher(ctx, out, in, inl); } int gost_grasshopper_cipher_do_ecb(EVP_CIPHER_CTX* ctx, unsigned char* out, const unsigned char* in, size_t inl) { gost_grasshopper_cipher_ctx* c = (gost_grasshopper_cipher_ctx*) EVP_CIPHER_CTX_get_cipher_data(ctx); bool encrypting = (bool) EVP_CIPHER_CTX_encrypting(ctx); const unsigned char* current_in = in; unsigned char* current_out = out; size_t blocks = inl / GRASSHOPPER_BLOCK_SIZE; size_t i; for (i = 0; i < blocks; i++, current_in += GRASSHOPPER_BLOCK_SIZE, current_out += GRASSHOPPER_BLOCK_SIZE) { if (encrypting) { grasshopper_encrypt_block(&c->encrypt_round_keys, (grasshopper_w128_t*) current_in, (grasshopper_w128_t*) current_out, &c->buffer); } else { grasshopper_decrypt_block(&c->decrypt_round_keys, (grasshopper_w128_t*) current_in, (grasshopper_w128_t*) current_out, &c->buffer); } } return 1; } int gost_grasshopper_cipher_do_cbc(EVP_CIPHER_CTX* ctx, unsigned char* out, const unsigned char* in, size_t inl) { gost_grasshopper_cipher_ctx* c = (gost_grasshopper_cipher_ctx*) EVP_CIPHER_CTX_get_cipher_data(ctx); unsigned char* iv = EVP_CIPHER_CTX_iv_noconst(ctx); bool encrypting = (bool) EVP_CIPHER_CTX_encrypting(ctx); const unsigned char* current_in = in; unsigned char* current_out = out; grasshopper_w128_t* currentInputBlock; grasshopper_w128_t* currentOutputBlock; size_t blocks = inl / GRASSHOPPER_BLOCK_SIZE; size_t i; grasshopper_w128_t* currentBlock; currentBlock = (grasshopper_w128_t*) iv; for (i = 0; i < blocks; i++, current_in += GRASSHOPPER_BLOCK_SIZE, current_out += GRASSHOPPER_BLOCK_SIZE) { currentInputBlock = (grasshopper_w128_t*) current_in; currentOutputBlock = (grasshopper_w128_t*) current_out; if (encrypting) { grasshopper_append128(currentBlock, currentInputBlock); grasshopper_encrypt_block(&c->encrypt_round_keys, currentBlock, currentOutputBlock, &c->buffer); grasshopper_copy128(currentBlock, currentOutputBlock); } else { grasshopper_decrypt_block(&c->decrypt_round_keys, currentInputBlock, currentOutputBlock, &c->buffer); grasshopper_append128(currentOutputBlock, currentBlock); grasshopper_copy128(currentBlock, currentInputBlock); } } return 1; } int gost_grasshopper_cipher_do_ctr(EVP_CIPHER_CTX* ctx, unsigned char* out, const unsigned char* in, size_t inl) { gost_grasshopper_cipher_ctx_ctr* c = (gost_grasshopper_cipher_ctx_ctr*) EVP_CIPHER_CTX_get_cipher_data(ctx); unsigned char* iv = EVP_CIPHER_CTX_iv_noconst(ctx); const unsigned char* current_in = in; unsigned char* current_out = out; size_t blocks = inl / GRASSHOPPER_BLOCK_SIZE; grasshopper_w128_t* currentInputBlock; grasshopper_w128_t* currentOutputBlock; size_t lasted; size_t i; memcpy(&c->iv_buffer, iv, 8); // full parts for (i = 0; i < blocks; i++) { currentInputBlock = (grasshopper_w128_t*) current_in; currentOutputBlock = (grasshopper_w128_t*) current_out; memcpy(c->iv_buffer.b + 8, &c->counter, 8); grasshopper_encrypt_block(&c->c.encrypt_round_keys, &c->iv_buffer, currentOutputBlock, &c->c.buffer); grasshopper_append128(currentOutputBlock, currentInputBlock); c->counter += 1; current_in += GRASSHOPPER_BLOCK_SIZE; current_out += GRASSHOPPER_BLOCK_SIZE; } // last part lasted = inl - blocks * GRASSHOPPER_BLOCK_SIZE; if (lasted > 0) { currentInputBlock = (grasshopper_w128_t*) current_in; currentOutputBlock = (grasshopper_w128_t*) current_out; memcpy(c->iv_buffer.b + 8, &c->counter, 8); grasshopper_encrypt_block(&c->c.encrypt_round_keys, &c->iv_buffer, &c->partial_buffer, &c->c.buffer); for (i = 0; i < lasted; i++) { currentOutputBlock->b[i] = c->partial_buffer.b[i] ^ currentInputBlock->b[i]; } c->counter += 1; } return 1; } static void gost_grasshopper_cnt_next(gost_grasshopper_cipher_ctx_ofb* ctx, grasshopper_w128_t* iv, grasshopper_w128_t* buf) { memcpy(&ctx->buffer1, iv, 16); ctx->g = ctx->buffer1.b[0] | (ctx->buffer1.b[1] << 8) | (ctx->buffer1.b[2] << 16) | ((uint32_t) ctx->buffer1.b[3] << 24); ctx->g += 0x01010101; ctx->buffer1.b[0] = (unsigned char) (ctx->g & 0xff); ctx->buffer1.b[1] = (unsigned char) ((ctx->g >> 8) & 0xff); ctx->buffer1.b[2] = (unsigned char) ((ctx->g >> 16) & 0xff); ctx->buffer1.b[3] = (unsigned char) ((ctx->g >> 24) & 0xff); ctx->g = ctx->buffer1.b[4] | (ctx->buffer1.b[5] << 8) | (ctx->buffer1.b[6] << 16) | ((uint32_t) ctx->buffer1.b[7] << 24); ctx->go = ctx->g; ctx->g += 0x01010104; if (ctx->go > ctx->g) { /* overflow */ ctx->g++; } ctx->buffer1.b[4] = (unsigned char) (ctx->g & 0xff); ctx->buffer1.b[5] = (unsigned char) ((ctx->g >> 8) & 0xff); ctx->buffer1.b[6] = (unsigned char) ((ctx->g >> 16) & 0xff); ctx->buffer1.b[7] = (unsigned char) ((ctx->g >> 24) & 0xff); ctx->g = ctx->buffer1.b[8] | (ctx->buffer1.b[9] << 8) | (ctx->buffer1.b[10] << 16) | ((uint32_t) ctx->buffer1.b[11] << 24); ctx->go = ctx->g; ctx->g += 0x01010107; if (ctx->go > ctx->g) { /* overflow */ ctx->g++; } ctx->buffer1.b[8] = (unsigned char) (ctx->g & 0xff); ctx->buffer1.b[9] = (unsigned char) ((ctx->g >> 8) & 0xff); ctx->buffer1.b[10] = (unsigned char) ((ctx->g >> 16) & 0xff); ctx->buffer1.b[11] = (unsigned char) ((ctx->g >> 24) & 0xff); ctx->g = ctx->buffer1.b[12] | (ctx->buffer1.b[13] << 8) | (ctx->buffer1.b[14] << 16) | ((uint32_t) ctx->buffer1.b[15] << 24); ctx->go = ctx->g; ctx->g += 0x01010110; if (ctx->go > ctx->g) { /* overflow */ ctx->g++; } ctx->buffer1.b[12] = (unsigned char) (ctx->g & 0xff); ctx->buffer1.b[13] = (unsigned char) ((ctx->g >> 8) & 0xff); ctx->buffer1.b[14] = (unsigned char) ((ctx->g >> 16) & 0xff); ctx->buffer1.b[15] = (unsigned char) ((ctx->g >> 24) & 0xff); memcpy(iv, &ctx->buffer1, 16); grasshopper_encrypt_block(&ctx->c.encrypt_round_keys, &ctx->buffer1, buf, &ctx->c.buffer); } int gost_grasshopper_cipher_do_ofb(EVP_CIPHER_CTX* ctx, unsigned char* out, const unsigned char* in, size_t inl) { gost_grasshopper_cipher_ctx_ofb* c = (gost_grasshopper_cipher_ctx_ofb*) EVP_CIPHER_CTX_get_cipher_data(ctx); const unsigned char* in_ptr = in; unsigned char* out_ptr = out; unsigned char* buf = EVP_CIPHER_CTX_buf_noconst(ctx); unsigned char* iv = EVP_CIPHER_CTX_iv_noconst(ctx); int num = EVP_CIPHER_CTX_num(ctx); size_t i = 0; size_t j; /* process partial block if any */ if (num > 0) { for (j = (size_t) num, i = 0; j < GRASSHOPPER_BLOCK_SIZE && i < inl; j++, i++, in_ptr++, out_ptr++) { *out_ptr = buf[j] ^ (*in_ptr); } if (j == GRASSHOPPER_BLOCK_SIZE) { EVP_CIPHER_CTX_set_num(ctx, 0); } else { EVP_CIPHER_CTX_set_num(ctx, (int) j); return 1; } } for (; i + GRASSHOPPER_BLOCK_SIZE < inl; i += GRASSHOPPER_BLOCK_SIZE, in_ptr += GRASSHOPPER_BLOCK_SIZE, out_ptr += GRASSHOPPER_BLOCK_SIZE) { /* * block cipher current iv */ /* Encrypt */ gost_grasshopper_cnt_next(c, (grasshopper_w128_t*) iv, (grasshopper_w128_t*) buf); /* * xor next block of input text with it and output it */ /* * output this block */ for (j = 0; j < GRASSHOPPER_BLOCK_SIZE; j++) { out_ptr[j] = buf[j] ^ in_ptr[j]; } } /* Process rest of buffer */ if (i < inl) { gost_grasshopper_cnt_next(c, (grasshopper_w128_t*) iv, (grasshopper_w128_t*) buf); for (j = 0; i < inl; j++, i++) { out_ptr[j] = buf[j] ^ in_ptr[j]; } EVP_CIPHER_CTX_set_num(ctx, (int) j); } else { EVP_CIPHER_CTX_set_num(ctx, 0); } return 1; } int gost_grasshopper_cipher_do_cfb(EVP_CIPHER_CTX* ctx, unsigned char* out, const unsigned char* in, size_t inl) { gost_grasshopper_cipher_ctx* c = (gost_grasshopper_cipher_ctx*) EVP_CIPHER_CTX_get_cipher_data(ctx); const unsigned char* in_ptr = in; unsigned char* out_ptr = out; unsigned char* buf = EVP_CIPHER_CTX_buf_noconst(ctx); unsigned char* iv = EVP_CIPHER_CTX_iv_noconst(ctx); bool encrypting = (bool) EVP_CIPHER_CTX_encrypting(ctx); int num = EVP_CIPHER_CTX_num(ctx); size_t i = 0; size_t j = 0; /* process partial block if any */ if (num > 0) { for (j = (size_t) num, i = 0; j < GRASSHOPPER_BLOCK_SIZE && i < inl; j++, i++, in_ptr++, out_ptr++) { if (!encrypting) { buf[j + GRASSHOPPER_BLOCK_SIZE] = *in_ptr; } *out_ptr = buf[j] ^ (*in_ptr); if (encrypting) { buf[j + GRASSHOPPER_BLOCK_SIZE] = *out_ptr; } } if (j == GRASSHOPPER_BLOCK_SIZE) { memcpy(iv, buf + GRASSHOPPER_BLOCK_SIZE, GRASSHOPPER_BLOCK_SIZE); EVP_CIPHER_CTX_set_num(ctx, 0); } else { EVP_CIPHER_CTX_set_num(ctx, (int) j); return 1; } } for (; i + GRASSHOPPER_BLOCK_SIZE < inl; i += GRASSHOPPER_BLOCK_SIZE, in_ptr += GRASSHOPPER_BLOCK_SIZE, out_ptr += GRASSHOPPER_BLOCK_SIZE) { /* * block cipher current iv */ grasshopper_encrypt_block(&c->encrypt_round_keys, (grasshopper_w128_t*) iv, (grasshopper_w128_t*) buf, &c->buffer); /* * xor next block of input text with it and output it */ /* * output this block */ if (!encrypting) { memcpy(iv, in_ptr, GRASSHOPPER_BLOCK_SIZE); } for (j = 0; j < GRASSHOPPER_BLOCK_SIZE; j++) { out_ptr[j] = buf[j] ^ in_ptr[j]; } /* Encrypt */ /* Next iv is next block of cipher text */ if (encrypting) { memcpy(iv, out_ptr, GRASSHOPPER_BLOCK_SIZE); } } /* Process rest of buffer */ if (i < inl) { grasshopper_encrypt_block(&c->encrypt_round_keys, (grasshopper_w128_t*) iv, (grasshopper_w128_t*) buf, &c->buffer); if (!encrypting) { memcpy(buf + GRASSHOPPER_BLOCK_SIZE, in_ptr, inl - i); } for (j = 0; i < inl; j++, i++) { out_ptr[j] = buf[j] ^ in_ptr[j]; } EVP_CIPHER_CTX_set_num(ctx, (int) j); if (encrypting) { memcpy(buf + GRASSHOPPER_BLOCK_SIZE, out_ptr, j); } } else { EVP_CIPHER_CTX_set_num(ctx, 0); } return 1; } int gost_grasshopper_cipher_cleanup(EVP_CIPHER_CTX* ctx) { gost_grasshopper_cipher_ctx* c = (gost_grasshopper_cipher_ctx*) EVP_CIPHER_CTX_get_cipher_data(ctx); struct GRASSHOPPER_CIPHER_PARAMS* params = &gost_cipher_params[c->type]; gost_grasshopper_cipher_destroy(c); if (params->destroy_cipher != NULL) { params->destroy_cipher(c); } EVP_CIPHER_CTX_set_app_data(ctx, NULL); return 1; } int gost_grasshopper_set_asn1_parameters(EVP_CIPHER_CTX* ctx, ASN1_TYPE* params) { int len = 0; unsigned char* buf = NULL; ASN1_OCTET_STRING* os = NULL; os = ASN1_OCTET_STRING_new(); if (!os || !ASN1_OCTET_STRING_set(os, buf, len)) { OPENSSL_free(buf); GOSTerr(GOST_F_GOST89_SET_ASN1_PARAMETERS, ERR_R_MALLOC_FAILURE); return 0; } OPENSSL_free(buf); ASN1_TYPE_set(params, V_ASN1_SEQUENCE, os); return 1; } GRASSHOPPER_INLINE int gost_grasshopper_get_asn1_parameters(EVP_CIPHER_CTX* ctx, ASN1_TYPE* params) { int ret = -1; if (ASN1_TYPE_get(params) != V_ASN1_SEQUENCE) { return ret; } return 1; } int gost_grasshopper_cipher_ctl(EVP_CIPHER_CTX* ctx, int type, int arg, void* ptr) { switch (type) { case EVP_CTRL_RAND_KEY: { if (RAND_bytes((unsigned char*) ptr, EVP_CIPHER_CTX_key_length(ctx)) <= 0) { GOSTerr(GOST_F_GOST_CIPHER_CTL, GOST_R_RNG_ERROR); return -1; } break; } default: GOSTerr(GOST_F_GOST_CIPHER_CTL, GOST_R_UNSUPPORTED_CIPHER_CTL_COMMAND); return -1; } return 1; } GRASSHOPPER_INLINE EVP_CIPHER* cipher_gost_grasshopper_create(int cipher_type, int block_size) { return EVP_CIPHER_meth_new(cipher_type, block_size /* block_size */, GRASSHOPPER_KEY_SIZE /* key_size */); } const int cipher_gost_grasshopper_setup(EVP_CIPHER* cipher, uint8_t mode, int iv_size, bool padding) { return EVP_CIPHER_meth_set_iv_length(cipher, iv_size) && EVP_CIPHER_meth_set_flags(cipher, (unsigned long) ( mode | ((!padding) ? EVP_CIPH_NO_PADDING : 0) | ((iv_size > 0) ? EVP_CIPH_CUSTOM_IV : 0) | EVP_CIPH_RAND_KEY | EVP_CIPH_ALWAYS_CALL_INIT) ) && EVP_CIPHER_meth_set_cleanup(cipher, gost_grasshopper_cipher_cleanup) && EVP_CIPHER_meth_set_set_asn1_params(cipher, gost_grasshopper_set_asn1_parameters) && EVP_CIPHER_meth_set_get_asn1_params(cipher, gost_grasshopper_get_asn1_parameters) && EVP_CIPHER_meth_set_ctrl(cipher, gost_grasshopper_cipher_ctl) && EVP_CIPHER_meth_set_do_cipher(cipher, gost_grasshopper_cipher_do); } const GRASSHOPPER_INLINE EVP_CIPHER* cipher_gost_grasshopper(uint8_t mode, uint8_t num) { EVP_CIPHER** cipher; struct GRASSHOPPER_CIPHER_PARAMS* params; cipher = &gost_grasshopper_ciphers[num]; if (*cipher == NULL) { params = &gost_cipher_params[num]; int nid = params->nid; grasshopper_init_cipher_func init_cipher = params->init_cipher; int block_size = params->block_size; int ctx_size = params->ctx_size; int iv_size = params->iv_size; bool padding = params->padding; *cipher = cipher_gost_grasshopper_create(nid, block_size); if (*cipher == NULL) { return NULL; } if (!cipher_gost_grasshopper_setup(*cipher, mode, iv_size, padding) || !EVP_CIPHER_meth_set_init(*cipher, init_cipher) || !EVP_CIPHER_meth_set_impl_ctx_size(*cipher, ctx_size)) { EVP_CIPHER_meth_free(*cipher); *cipher = NULL; } } return *cipher; } const GRASSHOPPER_INLINE EVP_CIPHER* cipher_gost_grasshopper_ecb() { return cipher_gost_grasshopper(EVP_CIPH_ECB_MODE, GRASSHOPPER_CIPHER_ECB); } const GRASSHOPPER_INLINE EVP_CIPHER* cipher_gost_grasshopper_cbc() { return cipher_gost_grasshopper(EVP_CIPH_CBC_MODE, GRASSHOPPER_CIPHER_CBC); } const GRASSHOPPER_INLINE EVP_CIPHER* cipher_gost_grasshopper_ofb() { return cipher_gost_grasshopper(EVP_CIPH_OFB_MODE, GRASSHOPPER_CIPHER_OFB); } const GRASSHOPPER_INLINE EVP_CIPHER* cipher_gost_grasshopper_cfb() { return cipher_gost_grasshopper(EVP_CIPH_CFB_MODE, GRASSHOPPER_CIPHER_CFB); } const GRASSHOPPER_INLINE EVP_CIPHER* cipher_gost_grasshopper_ctr() { return cipher_gost_grasshopper(EVP_CIPH_CTR_MODE, GRASSHOPPER_CIPHER_CTR); } #if defined(__cplusplus) } #endif libengine-gost-openssl1.1-1.1.0.1/gost_grasshopper_cipher.h000066400000000000000000000076101315100554000235510ustar00rootroot00000000000000/* * Maxim Tishkov 2016 * This file is distributed under the same license as OpenSSL */ #ifndef GOST_GRASSHOPPER_CIPHER_H #define GOST_GRASSHOPPER_CIPHER_H #if defined(__cplusplus) extern "C" { #endif #include "gost_grasshopper_defines.h" #include // not thread safe // because of buffers typedef struct { uint8_t type; grasshopper_key_t key; grasshopper_round_keys_t encrypt_round_keys; grasshopper_round_keys_t decrypt_round_keys; grasshopper_w128_t buffer; } gost_grasshopper_cipher_ctx; typedef struct { gost_grasshopper_cipher_ctx c; grasshopper_w128_t buffer1; uint32_t g; uint32_t go; } gost_grasshopper_cipher_ctx_ofb; typedef struct { gost_grasshopper_cipher_ctx c; grasshopper_w128_t iv_buffer; grasshopper_w128_t partial_buffer; uint64_t counter; } gost_grasshopper_cipher_ctx_ctr; typedef int (* grasshopper_init_cipher_func)(EVP_CIPHER_CTX* ctx, const unsigned char* key, const unsigned char* iv, int enc); typedef int (* grasshopper_do_cipher_func)(EVP_CIPHER_CTX* ctx, unsigned char* out, const unsigned char* in, size_t inl); typedef void (* grasshopper_destroy_cipher_func)(gost_grasshopper_cipher_ctx* c); void gost_grasshopper_cipher_key(gost_grasshopper_cipher_ctx* c, const uint8_t* k); void gost_grasshopper_cipher_destroy(gost_grasshopper_cipher_ctx* c); int gost_grasshopper_cipher_init_ecb(EVP_CIPHER_CTX* ctx, const unsigned char* key, const unsigned char* iv, int enc); int gost_grasshopper_cipher_init_cbc(EVP_CIPHER_CTX* ctx, const unsigned char* key, const unsigned char* iv, int enc); int gost_grasshopper_cipher_init_ofb(EVP_CIPHER_CTX* ctx, const unsigned char* key, const unsigned char* iv, int enc); int gost_grasshopper_cipher_init_cfb(EVP_CIPHER_CTX* ctx, const unsigned char* key, const unsigned char* iv, int enc); int gost_grasshopper_cipher_init_ctr(EVP_CIPHER_CTX* ctx, const unsigned char* key, const unsigned char* iv, int enc); int gost_grasshopper_cipher_init(EVP_CIPHER_CTX* ctx, const unsigned char* key, const unsigned char* iv, int enc); int gost_grasshopper_cipher_do(EVP_CIPHER_CTX* ctx, unsigned char* out, const unsigned char* in, size_t inl); int gost_grasshopper_cipher_do_ecb(EVP_CIPHER_CTX* ctx, unsigned char* out, const unsigned char* in, size_t inl); int gost_grasshopper_cipher_do_cbc(EVP_CIPHER_CTX* ctx, unsigned char* out, const unsigned char* in, size_t inl); int gost_grasshopper_cipher_do_ofb(EVP_CIPHER_CTX* ctx, unsigned char* out, const unsigned char* in, size_t inl); int gost_grasshopper_cipher_do_cfb(EVP_CIPHER_CTX* ctx, unsigned char* out, const unsigned char* in, size_t inl); int gost_grasshopper_cipher_do_ctr(EVP_CIPHER_CTX* ctx, unsigned char* out, const unsigned char* in, size_t inl); int gost_grasshopper_cipher_cleanup(EVP_CIPHER_CTX* ctx); int gost_grasshopper_set_asn1_parameters(EVP_CIPHER_CTX* ctx, ASN1_TYPE* params); int gost_grasshopper_get_asn1_parameters(EVP_CIPHER_CTX* ctx, ASN1_TYPE* params); int gost_grasshopper_cipher_ctl(EVP_CIPHER_CTX* ctx, int type, int arg, void* ptr); EVP_CIPHER* cipher_gost_grasshopper_create(int cipher_type, int block_size); const int cipher_gost_grasshopper_setup(EVP_CIPHER* cipher, uint8_t mode, int iv_size, bool padding); const EVP_CIPHER* cipher_gost_grasshopper(uint8_t mode, uint8_t num); extern const EVP_CIPHER* cipher_gost_grasshopper_ecb(); extern const EVP_CIPHER* cipher_gost_grasshopper_cbc(); extern const EVP_CIPHER* cipher_gost_grasshopper_ofb(); extern const EVP_CIPHER* cipher_gost_grasshopper_cfb(); extern const EVP_CIPHER* cipher_gost_grasshopper_ctr(); #if defined(__cplusplus) } #endif #endif libengine-gost-openssl1.1-1.1.0.1/gost_grasshopper_core.c000066400000000000000000000103051315100554000232150ustar00rootroot00000000000000/* * Maxim Tishkov 2016 * This file is distributed under the same license as OpenSSL */ #if defined(__cplusplus) extern "C" { #endif #include "gost_grasshopper_core.h" #include "gost_grasshopper_math.h" #include "gost_grasshopper_precompiled.h" #include "gost_grasshopper_defines.h" static GRASSHOPPER_INLINE void grasshopper_l(grasshopper_w128_t* w) { uint8_t x; unsigned int j; int i; // 16 rounds for (j = 0; j < sizeof(grasshopper_lvec) / sizeof(grasshopper_lvec[0]); j++) { // An LFSR with 16 elements from GF(2^8) x = w->b[15]; // since lvec[15] = 1 for (i = 14; i >= 0; i--) { w->b[i + 1] = w->b[i]; x ^= grasshopper_galois_mul(w->b[i], grasshopper_lvec[i]); } w->b[0] = x; } } static GRASSHOPPER_INLINE void grasshopper_l_inv(grasshopper_w128_t* w) { uint8_t x; unsigned int j; int i; // 16 rounds for (j = 0; j < sizeof(grasshopper_lvec) / sizeof(grasshopper_lvec[0]); j++) { x = w->b[0]; for (i = 0; i < 15; i++) { w->b[i] = w->b[i + 1]; x ^= grasshopper_galois_mul(w->b[i], grasshopper_lvec[i]); } w->b[15] = x; } } // key setup void grasshopper_set_encrypt_key(grasshopper_round_keys_t* subkeys, const grasshopper_key_t* key) { grasshopper_w128_t c, x, y, z; int i; for (i = 0; i < 16; i++) { // this will be have to changed for little-endian systems x.b[i] = key->k.b[i]; y.b[i] = key->k.b[i + 16]; } grasshopper_copy128(&subkeys->k[0], &x); grasshopper_copy128(&subkeys->k[1], &y); for (i = 1; i <= 32; i++) { // C Value grasshopper_zero128(&c); c.b[15] = (uint8_t) i; // load round in lsb grasshopper_l(&c); grasshopper_plus128(&z, &x, &c); grasshopper_convert128(&z, grasshopper_pi); grasshopper_l(&z); grasshopper_append128(&z, &y); grasshopper_copy128(&y, &x); grasshopper_copy128(&x, &z); if ((i & 7) == 0) { int k = i >> 2; grasshopper_copy128(&subkeys->k[k], &x); grasshopper_copy128(&subkeys->k[k + 1], &y); } } // security++ grasshopper_zero128(&c); grasshopper_zero128(&x); grasshopper_zero128(&y); grasshopper_zero128(&z); } void grasshopper_set_decrypt_key(grasshopper_round_keys_t* subkeys, const grasshopper_key_t* key) { int i; grasshopper_set_encrypt_key(subkeys, key); for (i = 1; i < 10; i++) { grasshopper_l_inv(&subkeys->k[i]); } } void grasshopper_encrypt_block(grasshopper_round_keys_t* subkeys, grasshopper_w128_t* source, grasshopper_w128_t* target, grasshopper_w128_t* buffer) { int i; grasshopper_copy128(target, source); for (i = 0; i < 9; i++) { grasshopper_append128(target, &subkeys->k[i]); grasshopper_append128multi(buffer, target, grasshopper_pil_enc128); } grasshopper_append128(target, &subkeys->k[9]); } void grasshopper_encrypt_block2(grasshopper_round_keys_t* subkeys, grasshopper_w128_t* source, grasshopper_w128_t* target) { grasshopper_w128_t buffer; grasshopper_encrypt_block(subkeys, source, target, &buffer); grasshopper_zero128(&buffer); } void grasshopper_decrypt_block(grasshopper_round_keys_t* subkeys, grasshopper_w128_t* source, grasshopper_w128_t* target, grasshopper_w128_t* buffer) { int i; grasshopper_copy128(target, source); grasshopper_append128multi(buffer, target, grasshopper_l_dec128); for (i = 9; i > 1; i--) { grasshopper_append128(target, &subkeys->k[i]); grasshopper_append128multi(buffer, target, grasshopper_pil_dec128); } grasshopper_append128(target, &subkeys->k[1]); grasshopper_convert128(target, grasshopper_pi_inv); grasshopper_append128(target, &subkeys->k[0]); } void grasshopper_decrypt_block2(grasshopper_round_keys_t* subkeys, grasshopper_w128_t* source, grasshopper_w128_t* target) { grasshopper_w128_t buffer; grasshopper_decrypt_block(subkeys, source, target, &buffer); grasshopper_zero128(&buffer); } #if defined(__cplusplus) } #endif libengine-gost-openssl1.1-1.1.0.1/gost_grasshopper_core.h000066400000000000000000000023031315100554000232210ustar00rootroot00000000000000/* * Maxim Tishkov 2016 * This file is distributed under the same license as OpenSSL */ #ifndef GOST_GRASSHOPPER_CORE_H #define GOST_GRASSHOPPER_CORE_H #if defined(__cplusplus) extern "C" { #endif #include "gost_grasshopper_defines.h" static void grasshopper_l(grasshopper_w128_t* w); static void grasshopper_l_inv(grasshopper_w128_t* w); // key setup extern void grasshopper_set_encrypt_key(grasshopper_round_keys_t* subkeys, const grasshopper_key_t* key); extern void grasshopper_set_decrypt_key(grasshopper_round_keys_t* subkeys, const grasshopper_key_t* key); // single-block ecp ops extern void grasshopper_encrypt_block(grasshopper_round_keys_t* subkeys, grasshopper_w128_t* source, grasshopper_w128_t* target, grasshopper_w128_t* buffer); extern void grasshopper_decrypt_block(grasshopper_round_keys_t* subkeys, grasshopper_w128_t* source, grasshopper_w128_t* target, grasshopper_w128_t* buffer); extern void grasshopper_encrypt_block2(grasshopper_round_keys_t* subkeys, grasshopper_w128_t* source, grasshopper_w128_t* target); extern void grasshopper_decrypt_block2(grasshopper_round_keys_t* subkeys, grasshopper_w128_t* source, grasshopper_w128_t* target); #if defined(__cplusplus) } #endif #endif libengine-gost-openssl1.1-1.1.0.1/gost_grasshopper_defines.c000066400000000000000000000115411315100554000237050ustar00rootroot00000000000000/* * Maxim Tishkov 2016 * This file is distributed under the same license as OpenSSL */ #if defined(__cplusplus) extern "C" { #endif #include "gost_grasshopper_defines.h" // The S-Box from section 5.1.1 const uint8_t grasshopper_pi[0x100] = { 0xFC, 0xEE, 0xDD, 0x11, 0xCF, 0x6E, 0x31, 0x16, // 00..07 0xFB, 0xC4, 0xFA, 0xDA, 0x23, 0xC5, 0x04, 0x4D, // 08..0F 0xE9, 0x77, 0xF0, 0xDB, 0x93, 0x2E, 0x99, 0xBA, // 10..17 0x17, 0x36, 0xF1, 0xBB, 0x14, 0xCD, 0x5F, 0xC1, // 18..1F 0xF9, 0x18, 0x65, 0x5A, 0xE2, 0x5C, 0xEF, 0x21, // 20..27 0x81, 0x1C, 0x3C, 0x42, 0x8B, 0x01, 0x8E, 0x4F, // 28..2F 0x05, 0x84, 0x02, 0xAE, 0xE3, 0x6A, 0x8F, 0xA0, // 30..37 0x06, 0x0B, 0xED, 0x98, 0x7F, 0xD4, 0xD3, 0x1F, // 38..3F 0xEB, 0x34, 0x2C, 0x51, 0xEA, 0xC8, 0x48, 0xAB, // 40..47 0xF2, 0x2A, 0x68, 0xA2, 0xFD, 0x3A, 0xCE, 0xCC, // 48..4F 0xB5, 0x70, 0x0E, 0x56, 0x08, 0x0C, 0x76, 0x12, // 50..57 0xBF, 0x72, 0x13, 0x47, 0x9C, 0xB7, 0x5D, 0x87, // 58..5F 0x15, 0xA1, 0x96, 0x29, 0x10, 0x7B, 0x9A, 0xC7, // 60..67 0xF3, 0x91, 0x78, 0x6F, 0x9D, 0x9E, 0xB2, 0xB1, // 68..6F 0x32, 0x75, 0x19, 0x3D, 0xFF, 0x35, 0x8A, 0x7E, // 70..77 0x6D, 0x54, 0xC6, 0x80, 0xC3, 0xBD, 0x0D, 0x57, // 78..7F 0xDF, 0xF5, 0x24, 0xA9, 0x3E, 0xA8, 0x43, 0xC9, // 80..87 0xD7, 0x79, 0xD6, 0xF6, 0x7C, 0x22, 0xB9, 0x03, // 88..8F 0xE0, 0x0F, 0xEC, 0xDE, 0x7A, 0x94, 0xB0, 0xBC, // 90..97 0xDC, 0xE8, 0x28, 0x50, 0x4E, 0x33, 0x0A, 0x4A, // 98..9F 0xA7, 0x97, 0x60, 0x73, 0x1E, 0x00, 0x62, 0x44, // A0..A7 0x1A, 0xB8, 0x38, 0x82, 0x64, 0x9F, 0x26, 0x41, // A8..AF 0xAD, 0x45, 0x46, 0x92, 0x27, 0x5E, 0x55, 0x2F, // B0..B7 0x8C, 0xA3, 0xA5, 0x7D, 0x69, 0xD5, 0x95, 0x3B, // B8..BF 0x07, 0x58, 0xB3, 0x40, 0x86, 0xAC, 0x1D, 0xF7, // C0..C7 0x30, 0x37, 0x6B, 0xE4, 0x88, 0xD9, 0xE7, 0x89, // C8..CF 0xE1, 0x1B, 0x83, 0x49, 0x4C, 0x3F, 0xF8, 0xFE, // D0..D7 0x8D, 0x53, 0xAA, 0x90, 0xCA, 0xD8, 0x85, 0x61, // D8..DF 0x20, 0x71, 0x67, 0xA4, 0x2D, 0x2B, 0x09, 0x5B, // E0..E7 0xCB, 0x9B, 0x25, 0xD0, 0xBE, 0xE5, 0x6C, 0x52, // E8..EF 0x59, 0xA6, 0x74, 0xD2, 0xE6, 0xF4, 0xB4, 0xC0, // F0..F7 0xD1, 0x66, 0xAF, 0xC2, 0x39, 0x4B, 0x63, 0xB6, // F8..FF }; // Inverse S-Box const uint8_t grasshopper_pi_inv[0x100] = { 0xA5, 0x2D, 0x32, 0x8F, 0x0E, 0x30, 0x38, 0xC0, // 00..07 0x54, 0xE6, 0x9E, 0x39, 0x55, 0x7E, 0x52, 0x91, // 08..0F 0x64, 0x03, 0x57, 0x5A, 0x1C, 0x60, 0x07, 0x18, // 10..17 0x21, 0x72, 0xA8, 0xD1, 0x29, 0xC6, 0xA4, 0x3F, // 18..1F 0xE0, 0x27, 0x8D, 0x0C, 0x82, 0xEA, 0xAE, 0xB4, // 20..27 0x9A, 0x63, 0x49, 0xE5, 0x42, 0xE4, 0x15, 0xB7, // 28..2F 0xC8, 0x06, 0x70, 0x9D, 0x41, 0x75, 0x19, 0xC9, // 30..37 0xAA, 0xFC, 0x4D, 0xBF, 0x2A, 0x73, 0x84, 0xD5, // 38..3F 0xC3, 0xAF, 0x2B, 0x86, 0xA7, 0xB1, 0xB2, 0x5B, // 40..47 0x46, 0xD3, 0x9F, 0xFD, 0xD4, 0x0F, 0x9C, 0x2F, // 48..4F 0x9B, 0x43, 0xEF, 0xD9, 0x79, 0xB6, 0x53, 0x7F, // 50..57 0xC1, 0xF0, 0x23, 0xE7, 0x25, 0x5E, 0xB5, 0x1E, // 58..5F 0xA2, 0xDF, 0xA6, 0xFE, 0xAC, 0x22, 0xF9, 0xE2, // 60..67 0x4A, 0xBC, 0x35, 0xCA, 0xEE, 0x78, 0x05, 0x6B, // 68..6F 0x51, 0xE1, 0x59, 0xA3, 0xF2, 0x71, 0x56, 0x11, // 70..77 0x6A, 0x89, 0x94, 0x65, 0x8C, 0xBB, 0x77, 0x3C, // 78..7F 0x7B, 0x28, 0xAB, 0xD2, 0x31, 0xDE, 0xC4, 0x5F, // 80..87 0xCC, 0xCF, 0x76, 0x2C, 0xB8, 0xD8, 0x2E, 0x36, // 88..8F 0xDB, 0x69, 0xB3, 0x14, 0x95, 0xBE, 0x62, 0xA1, // 90..97 0x3B, 0x16, 0x66, 0xE9, 0x5C, 0x6C, 0x6D, 0xAD, // 98..9F 0x37, 0x61, 0x4B, 0xB9, 0xE3, 0xBA, 0xF1, 0xA0, // A0..A7 0x85, 0x83, 0xDA, 0x47, 0xC5, 0xB0, 0x33, 0xFA, // A8..AF 0x96, 0x6F, 0x6E, 0xC2, 0xF6, 0x50, 0xFF, 0x5D, // B0..B7 0xA9, 0x8E, 0x17, 0x1B, 0x97, 0x7D, 0xEC, 0x58, // B8..BF 0xF7, 0x1F, 0xFB, 0x7C, 0x09, 0x0D, 0x7A, 0x67, // C0..C7 0x45, 0x87, 0xDC, 0xE8, 0x4F, 0x1D, 0x4E, 0x04, // C8..CF 0xEB, 0xF8, 0xF3, 0x3E, 0x3D, 0xBD, 0x8A, 0x88, // D0..D7 0xDD, 0xCD, 0x0B, 0x13, 0x98, 0x02, 0x93, 0x80, // D8..DF 0x90, 0xD0, 0x24, 0x34, 0xCB, 0xED, 0xF4, 0xCE, // E0..E7 0x99, 0x10, 0x44, 0x40, 0x92, 0x3A, 0x01, 0x26, // E8..EF 0x12, 0x1A, 0x48, 0x68, 0xF5, 0x81, 0x8B, 0xC7, // F0..F7 0xD6, 0x20, 0x0A, 0x08, 0x00, 0x4C, 0xD7, 0x74 // F8..FF }; // Linear vector from sect 5.1.2 const uint8_t grasshopper_lvec[16] = { 0x94, 0x20, 0x85, 0x10, 0xC2, 0xC0, 0x01, 0xFB, 0x01, 0xC0, 0xC2, 0x10, 0x85, 0x20, 0x94, 0x01 }; #if defined(__cplusplus) } #endif libengine-gost-openssl1.1-1.1.0.1/gost_grasshopper_defines.h000066400000000000000000000025331315100554000237130ustar00rootroot00000000000000/* * Maxim Tishkov 2016 * This file is distributed under the same license as OpenSSL */ #ifndef GOST_GRASSHOPPER_DEFINES_H #define GOST_GRASSHOPPER_DEFINES_H #if defined(__cplusplus) extern "C" { #endif #include #include # if !defined(inline) && !defined(__cplusplus) # if defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L # define GRASSHOPPER_INLINE inline # elif defined(__GNUC__) && __GNUC__ >= 2 # define GRASSHOPPER_INLINE __inline__ # elif defined(_MSC_VER) # define GRASSHOPPER_INLINE __inline # else # define GRASSHOPPER_INLINE # endif # else # define GRASSHOPPER_INLINE inline # endif typedef union { uint8_t b[16]; uint64_t q[2]; uint32_t d[4]; uint16_t w[8]; } grasshopper_w128_t; typedef union { uint8_t b[32]; uint64_t q[4]; uint32_t d[8]; uint16_t w[16]; grasshopper_w128_t k[2]; } grasshopper_w256_t; typedef struct { grasshopper_w256_t k; } grasshopper_key_t; #define GRASSHOPPER_ROUND_KEYS_COUNT 10 typedef struct { grasshopper_w128_t k[GRASSHOPPER_ROUND_KEYS_COUNT]; } grasshopper_round_keys_t; extern const uint8_t grasshopper_pi[0x100]; extern const uint8_t grasshopper_pi_inv[0x100]; extern const uint8_t grasshopper_lvec[16]; #define GRASSHOPPER_BLOCK_SIZE (128/8) #define GRASSHOPPER_KEY_SIZE (256/8) #if defined(__cplusplus) } #endif #endif libengine-gost-openssl1.1-1.1.0.1/gost_grasshopper_galois_precompiled.c000066400000000000000000000051011315100554000261240ustar00rootroot00000000000000/* * Maxim Tishkov 2016 * This file is distributed under the same license as OpenSSL */ #include "gost_grasshopper_precompiled.h" #include "gost_grasshopper_defines.h" uint8_t grasshopper_galois_alpha_to[256] = { 1, 2, 4, 8, 16, 32, 64, 128, 195, 69, 138, 215, 109, 218, 119, 238, 31, 62, 124, 248, 51, 102, 204, 91, 182, 175, 157, 249, 49, 98, 196, 75, 150, 239, 29, 58, 116, 232, 19, 38, 76, 152, 243, 37, 74, 148, 235, 21, 42, 84, 168, 147, 229, 9, 18, 36, 72, 144, 227, 5, 10, 20, 40, 80, 160, 131, 197, 73, 146, 231, 13, 26, 52, 104, 208, 99, 198, 79, 158, 255, 61, 122, 244, 43, 86, 172, 155, 245, 41, 82, 164, 139, 213, 105, 210, 103, 206, 95, 190, 191, 189, 185, 177, 161, 129, 193, 65, 130, 199, 77, 154, 247, 45, 90, 180, 171, 149, 233, 17, 34, 68, 136, 211, 101, 202, 87, 174, 159, 253, 57, 114, 228, 11, 22, 44, 88, 176, 163, 133, 201, 81, 162, 135, 205, 89, 178, 167, 141, 217, 113, 226, 7, 14, 28, 56, 112, 224, 3, 6, 12, 24, 48, 96, 192, 67, 134, 207, 93, 186, 183, 173, 153, 241, 33, 66, 132, 203, 85, 170, 151, 237, 25, 50, 100, 200, 83, 166, 143, 221, 121, 242, 39, 78, 156, 251, 53, 106, 212, 107, 214, 111, 222, 127, 254, 63, 126, 252, 59, 118, 236, 27, 54, 108, 216, 115, 230, 15, 30, 60, 120, 240, 35, 70, 140, 219, 117, 234, 23, 46, 92, 184, 179, 165, 137, 209, 97, 194, 71, 142, 223, 125, 250, 55, 110, 220, 123, 246, 47, 94, 188, 187, 181, 169, 145, 225, 1, }; uint8_t grasshopper_galois_index_of[256] = { 255, 0, 1, 157, 2, 59, 158, 151, 3, 53, 60, 132, 159, 70, 152, 216, 4, 118, 54, 38, 61, 47, 133, 227, 160, 181, 71, 210, 153, 34, 217, 16, 5, 173, 119, 221, 55, 43, 39, 191, 62, 88, 48, 83, 134, 112, 228, 247, 161, 28, 182, 20, 72, 195, 211, 242, 154, 129, 35, 207, 218, 80, 17, 204, 6, 106, 174, 164, 120, 9, 222, 237, 56, 67, 44, 31, 40, 109, 192, 77, 63, 140, 89, 185, 49, 177, 84, 125, 135, 144, 113, 23, 229, 167, 248, 97, 162, 235, 29, 75, 183, 123, 21, 95, 73, 93, 196, 198, 212, 12, 243, 200, 155, 149, 130, 214, 36, 225, 208, 14, 219, 189, 81, 245, 18, 240, 205, 202, 7, 104, 107, 65, 175, 138, 165, 142, 121, 233, 10, 91, 223, 147, 238, 187, 57, 253, 68, 51, 45, 116, 32, 179, 41, 171, 110, 86, 193, 26, 78, 127, 64, 103, 141, 137, 90, 232, 186, 146, 50, 252, 178, 115, 85, 170, 126, 25, 136, 102, 145, 231, 114, 251, 24, 169, 230, 101, 168, 250, 249, 100, 98, 99, 163, 105, 236, 8, 30, 66, 76, 108, 184, 139, 124, 176, 22, 143, 96, 166, 74, 234, 94, 122, 197, 92, 199, 11, 213, 148, 13, 224, 244, 188, 201, 239, 156, 254, 150, 58, 131, 52, 215, 69, 37, 117, 226, 46, 209, 180, 15, 33, 220, 172, 190, 42, 82, 87, 246, 111, 19, 27, 241, 194, 206, 128, 203, 79, }; libengine-gost-openssl1.1-1.1.0.1/gost_grasshopper_mac.c000066400000000000000000000003221315100554000230230ustar00rootroot00000000000000/* * Maxim Tishkov 2016 * This file is distributed under the same license as OpenSSL */ #if defined(__cplusplus) extern "C" { #endif #include "gost_grasshopper_mac.h" #if defined(__cplusplus) } #endif libengine-gost-openssl1.1-1.1.0.1/gost_grasshopper_mac.h000066400000000000000000000003651315100554000230370ustar00rootroot00000000000000/* * Maxim Tishkov 2016 * This file is distributed under the same license as OpenSSL */ #ifndef GOST_GRASSHOPPER_MAC_H #define GOST_GRASSHOPPER_MAC_H #if defined(__cplusplus) extern "C" { #endif #if defined(__cplusplus) } #endif #endif libengine-gost-openssl1.1-1.1.0.1/gost_grasshopper_math.h000066400000000000000000000110341315100554000232230ustar00rootroot00000000000000/* * Maxim Tishkov 2016 * This file is distributed under the same license as OpenSSL */ #ifndef GOST_GRASSHOPPER_MATH_H #define GOST_GRASSHOPPER_MATH_H #if defined(__cplusplus) extern "C" { #endif #include "gost_grasshopper_defines.h" #if defined(__SSE__) || defined(__SSE2__) || defined(__SSE2_MATH__) || defined(__SSE3__) || defined(__SSE_MATH__) \ || defined(__SSE4_1__)|| defined(__SSE4_2__)|| defined(__SSSE3__) #define GRASSHOPPER_SSE_SUPPORTED #endif #define GRASSHOPPER_MIN_BITS 8 #define GRASSHOPPER_MAX_BITS 128 #if UINTPTR_MAX == 0xff #define GRASSHOPPER_BITS 8 #elif UINTPTR_MAX == 0xffff #define GRASSHOPPER_BITS 16 #elif UINTPTR_MAX == 0xffffffff #define GRASSHOPPER_BITS 32 #elif UINTPTR_MAX == 0xffffffffffffffff #define GRASSHOPPER_BITS 64 #endif #define GRASSHOPPER_BIT_PARTS_8 (GRASSHOPPER_MAX_BITS / 8) #define GRASSHOPPER_BIT_PARTS_16 (GRASSHOPPER_MAX_BITS / 16) #define GRASSHOPPER_BIT_PARTS_32 (GRASSHOPPER_MAX_BITS / 32) #define GRASSHOPPER_BIT_PARTS_64 (GRASSHOPPER_MAX_BITS / 64) #define GRASSHOPPER_BIT_PARTS (GRASSHOPPER_MAX_BITS / GRASSHOPPER_BITS) #define GRASSHOPPER_MAX_BIT_PARTS (GRASSHOPPER_MAX_BITS / GRASSHOPPER_MIN_BITS) #define GRASSHOPPER_ACCESS_128_VALUE_8(key, part) ((key).b[(part)]) #define GRASSHOPPER_ACCESS_128_VALUE_16(key, part) ((key).w[(part)]) #define GRASSHOPPER_ACCESS_128_VALUE_32(key, part) ((key).d[(part)]) #define GRASSHOPPER_ACCESS_128_VALUE_64(key, part) ((key).q[(part)]) #if(GRASSHOPPER_BITS == 8) #define GRASSHOPPER_ACCESS_128_VALUE GRASSHOPPER_ACCESS_128_VALUE_8 #elif(GRASSHOPPER_BITS == 16) #define GRASSHOPPER_ACCESS_128_VALUE GRASSHOPPER_ACCESS_128_VALUE_16 #elif(GRASSHOPPER_BITS == 32) #define GRASSHOPPER_ACCESS_128_VALUE GRASSHOPPER_ACCESS_128_VALUE_32 #elif(GRASSHOPPER_BITS == 64) #define GRASSHOPPER_ACCESS_128_VALUE GRASSHOPPER_ACCESS_128_VALUE_64 #endif static GRASSHOPPER_INLINE void grasshopper_zero128(grasshopper_w128_t* x) { #if(GRASSHOPPER_BITS == 8 || GRASSHOPPER_BITS == 16) memset(&x, 0, sizeof(x)); #else int i; for (i = 0; i < GRASSHOPPER_BIT_PARTS; i++) { GRASSHOPPER_ACCESS_128_VALUE(*x, i) = 0; } #endif } static GRASSHOPPER_INLINE void grasshopper_copy128(grasshopper_w128_t* to, const grasshopper_w128_t* from) { #if(GRASSHOPPER_BITS == 8 || GRASSHOPPER_BITS == 16) __builtin_memcpy(&to, &from, sizeof(w128_t)); #else int i; for (i = 0; i < GRASSHOPPER_BIT_PARTS; i++) { GRASSHOPPER_ACCESS_128_VALUE(*to, i) = GRASSHOPPER_ACCESS_128_VALUE(*from, i); } #endif } static GRASSHOPPER_INLINE void grasshopper_append128(grasshopper_w128_t* x, const grasshopper_w128_t* y) { int i; for (i = 0; i < GRASSHOPPER_BIT_PARTS; i++) { GRASSHOPPER_ACCESS_128_VALUE(*x, i) ^= GRASSHOPPER_ACCESS_128_VALUE(*y, i); } } static GRASSHOPPER_INLINE void grasshopper_plus128(grasshopper_w128_t* result, const grasshopper_w128_t* x, const grasshopper_w128_t* y) { grasshopper_copy128(result, x); grasshopper_append128(result, y); } // result & x must be different static GRASSHOPPER_INLINE void grasshopper_plus128multi(grasshopper_w128_t* result, const grasshopper_w128_t* x, const grasshopper_w128_t array[][256]) { int i; grasshopper_zero128(result); for (i = 0; i < GRASSHOPPER_MAX_BIT_PARTS; i++) { grasshopper_append128(result, &array[i][GRASSHOPPER_ACCESS_128_VALUE_8(*x, i)]); } } static GRASSHOPPER_INLINE void grasshopper_append128multi(grasshopper_w128_t* result, grasshopper_w128_t* x, const grasshopper_w128_t array[][256]) { grasshopper_plus128multi(result, x, array); grasshopper_copy128(x, result); } static GRASSHOPPER_INLINE void grasshopper_convert128(grasshopper_w128_t* x, const uint8_t* array) { int i; for (i = 0; i < GRASSHOPPER_MAX_BIT_PARTS; i++) { GRASSHOPPER_ACCESS_128_VALUE_8(*x, i) = array[GRASSHOPPER_ACCESS_128_VALUE_8(*x, i)]; } } #define GRASSHOPPER_GALOIS_POWER 8 #define GRASSHOPPER_GALOIS_FIELD_SIZE ((1 << GRASSHOPPER_GALOIS_POWER) - 1) extern uint8_t grasshopper_galois_alpha_to[256]; extern uint8_t grasshopper_galois_index_of[256]; static GRASSHOPPER_INLINE uint8_t grasshopper_galois_mul(uint8_t x, uint8_t y) { if (__builtin_expect(x != 0 && y != 0, 1)) { return grasshopper_galois_alpha_to[(grasshopper_galois_index_of[x] + grasshopper_galois_index_of[y]) % GRASSHOPPER_GALOIS_FIELD_SIZE]; } else { return 0; } } #if defined(__cplusplus) } #endif #endif libengine-gost-openssl1.1-1.1.0.1/gost_grasshopper_precompiled.c000066400000000000000000035243031315100554000246030ustar00rootroot00000000000000/* * Maxim Tishkov 2016 * This file is distributed under the same license as OpenSSL */ #include "gost_grasshopper_precompiled.h" #include "gost_grasshopper_defines.h" #include "gost_grasshopper_math.h" const grasshopper_w128_t grasshopper_pil_enc128[GRASSHOPPER_MAX_BIT_PARTS][256] = { { { 233, 251, 213, 12, 122, 192, 128, 150, 25, 17, 135, 147, 27, 201, 174, 181, }, { 25, 8, 224, 140, 178, 23, 26, 206, 123, 50, 252, 171, 248, 254, 242, 10, }, { 191, 203, 208, 162, 80, 178, 220, 119, 192, 189, 202, 239, 78, 136, 199, 137, }, { 98, 65, 16, 26, 94, 99, 66, 214, 105, 196, 18, 60, 211, 147, 19, 192, }, { 79, 56, 229, 34, 152, 101, 70, 47, 162, 158, 177, 215, 173, 191, 155, 54, }, { 56, 179, 57, 106, 17, 111, 74, 231, 60, 112, 151, 41, 47, 203, 192, 239, }, { 251, 31, 183, 194, 6, 125, 86, 77, 8, 53, 120, 253, 150, 15, 254, 104, }, { 74, 136, 248, 155, 195, 164, 121, 115, 199, 148, 231, 137, 163, 197, 9, 170, }, { 193, 50, 61, 141, 231, 7, 187, 51, 183, 65, 114, 38, 107, 159, 180, 223, }, { 106, 124, 153, 142, 24, 55, 155, 247, 32, 212, 35, 114, 29, 60, 126, 99, }, { 14, 92, 159, 251, 149, 107, 243, 73, 15, 28, 85, 155, 123, 66, 48, 75, }, { 151, 2, 56, 35, 205, 117, 231, 210, 110, 237, 63, 90, 62, 222, 221, 227, }, { 11, 236, 130, 66, 206, 170, 204, 21, 106, 22, 3, 197, 117, 56, 162, 215, }, { 165, 18, 59, 248, 106, 91, 211, 141, 152, 137, 4, 207, 13, 225, 250, 247, }, { 186, 123, 205, 27, 11, 115, 227, 43, 165, 183, 156, 177, 64, 242, 85, 21, }, { 51, 95, 187, 40, 223, 197, 134, 242, 86, 102, 148, 236, 90, 243, 98, 56, }, { 49, 193, 8, 13, 47, 208, 33, 107, 213, 98, 9, 30, 136, 168, 232, 96, }, { 237, 4, 112, 70, 89, 234, 13, 103, 220, 25, 126, 180, 124, 127, 121, 5, }, { 228, 118, 65, 33, 103, 85, 102, 235, 53, 11, 224, 131, 219, 28, 81, 138, }, { 88, 108, 154, 85, 191, 25, 175, 168, 214, 176, 24, 231, 46, 3, 89, 119, }, { 30, 38, 78, 16, 25, 195, 130, 11, 157, 60, 55, 7, 36, 223, 234, 206, }, { 201, 15, 180, 25, 161, 83, 98, 18, 254, 81, 67, 104, 165, 48, 217, 124, }, { 244, 12, 144, 202, 235, 253, 23, 169, 167, 43, 130, 31, 132, 129, 139, 15, }, { 255, 224, 18, 136, 37, 87, 219, 188, 205, 61, 129, 218, 241, 185, 41, 216, }, { 133, 230, 90, 237, 177, 200, 49, 9, 127, 201, 192, 52, 179, 24, 141, 62, }, { 211, 214, 95, 67, 155, 186, 109, 232, 166, 101, 141, 72, 230, 89, 228, 2, }, { 43, 24, 227, 87, 21, 57, 46, 145, 141, 86, 199, 62, 203, 193, 213, 30, }, { 48, 142, 176, 254, 87, 59, 147, 198, 117, 96, 166, 103, 225, 100, 173, 76, }, { 23, 84, 127, 119, 39, 124, 233, 135, 116, 46, 169, 48, 131, 188, 194, 65, }, { 18, 228, 98, 206, 124, 189, 214, 219, 17, 36, 255, 110, 141, 198, 80, 221, }, { 195, 172, 142, 168, 23, 18, 28, 170, 52, 69, 239, 212, 185, 196, 62, 135, }, { 31, 105, 246, 227, 97, 40, 48, 166, 61, 62, 152, 126, 77, 19, 175, 226, }, { 156, 238, 186, 97, 3, 223, 43, 199, 4, 251, 60, 159, 75, 230, 127, 52, }, { 26, 217, 235, 90, 58, 233, 15, 250, 88, 52, 206, 32, 67, 105, 61, 126, }, { 29, 247, 69, 198, 145, 61, 151, 63, 190, 58, 5, 140, 159, 72, 37, 186, }, { 182, 185, 225, 197, 110, 13, 183, 251, 41, 175, 84, 216, 233, 235, 239, 6, }, { 20, 133, 116, 161, 175, 130, 252, 179, 87, 40, 155, 187, 56, 43, 13, 53, }, { 81, 30, 171, 50, 129, 166, 196, 36, 63, 162, 134, 208, 137, 96, 113, 248, }, { 214, 102, 66, 250, 192, 123, 82, 180, 195, 111, 219, 22, 232, 35, 118, 158, }, { 86, 48, 5, 174, 42, 114, 92, 225, 217, 172, 77, 124, 85, 65, 105, 60, }, { 238, 213, 123, 144, 209, 20, 24, 83, 255, 31, 76, 63, 199, 232, 182, 113, }, { 160, 162, 38, 65, 49, 154, 236, 209, 253, 131, 82, 145, 3, 155, 104, 107, }, { 57, 252, 129, 153, 105, 132, 248, 74, 156, 114, 56, 80, 70, 7, 133, 195, }, { 172, 96, 10, 159, 84, 228, 184, 1, 113, 155, 154, 248, 170, 130, 210, 120, }, { 4, 255, 165, 74, 35, 42, 141, 241, 197, 8, 249, 39, 103, 182, 215, 176, }, { 207, 110, 162, 118, 114, 108, 72, 122, 184, 93, 39, 189, 16, 221, 132, 148, }, { 113, 234, 202, 39, 90, 53, 38, 160, 216, 226, 66, 43, 55, 153, 6, 49, }, { 110, 131, 60, 196, 59, 29, 22, 6, 229, 220, 218, 85, 122, 138, 169, 211, }, { 117, 21, 111, 109, 121, 31, 171, 81, 29, 234, 187, 12, 80, 47, 209, 129, }, { 155, 192, 20, 253, 168, 11, 179, 2, 226, 245, 247, 51, 151, 199, 103, 240, }, { 93, 220, 135, 236, 228, 216, 144, 244, 179, 186, 78, 185, 32, 121, 203, 235, }, { 232, 180, 109, 255, 2, 43, 50, 59, 185, 19, 40, 234, 114, 5, 235, 153, }, { 219, 235, 214, 215, 221, 238, 180, 201, 239, 117, 188, 6, 40, 246, 137, 161, }, { 130, 200, 244, 113, 26, 28, 169, 204, 153, 199, 11, 152, 111, 57, 149, 250, }, { 190, 132, 104, 81, 40, 89, 110, 218, 96, 191, 101, 150, 39, 68, 130, 165, }, { 184, 229, 126, 62, 251, 102, 68, 178, 38, 179, 1, 67, 146, 169, 223, 77, }, { 231, 167, 74, 247, 239, 171, 115, 223, 22, 13, 210, 8, 96, 139, 158, 254, }, { 37, 68, 124, 172, 128, 82, 221, 216, 130, 74, 146, 165, 176, 131, 229, 85, }, { 139, 186, 197, 22, 36, 163, 194, 64, 112, 213, 149, 175, 200, 90, 189, 117, }, { 59, 98, 50, 188, 153, 145, 95, 211, 31, 118, 165, 162, 148, 92, 15, 155, }, { 90, 242, 41, 112, 79, 12, 8, 49, 85, 180, 133, 21, 252, 88, 211, 47, }, { 199, 83, 43, 226, 52, 56, 145, 91, 241, 77, 22, 243, 222, 114, 233, 55, }, { 239, 154, 195, 99, 169, 255, 170, 254, 95, 29, 227, 70, 174, 36, 243, 93, }, { 50, 16, 3, 219, 167, 46, 52, 95, 246, 100, 59, 149, 51, 63, 39, 20, }, { 108, 29, 143, 225, 203, 8, 177, 159, 102, 216, 71, 167, 168, 209, 35, 139, }, { 142, 10, 216, 175, 127, 98, 253, 28, 21, 223, 195, 241, 198, 32, 47, 233, }, { 148, 211, 51, 245, 69, 139, 242, 230, 77, 235, 13, 209, 133, 73, 18, 151, }, { 147, 253, 157, 105, 238, 95, 106, 35, 171, 229, 198, 125, 89, 104, 10, 83, }, { 163, 115, 45, 151, 185, 100, 249, 229, 222, 133, 96, 26, 184, 12, 167, 31, }, { 103, 241, 13, 163, 5, 162, 125, 138, 12, 206, 68, 98, 221, 233, 129, 92, }, { 70, 74, 212, 69, 166, 218, 45, 163, 75, 140, 47, 224, 10, 220, 179, 185, }, { 157, 161, 2, 146, 123, 52, 153, 106, 164, 249, 147, 230, 34, 42, 58, 24, }, { 185, 170, 198, 205, 131, 141, 246, 31, 134, 177, 174, 58, 251, 101, 154, 97, }, { 115, 116, 121, 2, 170, 32, 129, 57, 91, 230, 223, 217, 229, 194, 140, 105, }, { 223, 20, 115, 157, 254, 196, 57, 56, 42, 125, 69, 33, 79, 64, 94, 17, }, { 229, 57, 249, 210, 31, 190, 212, 70, 149, 9, 79, 250, 178, 208, 20, 166, }, { 38, 149, 119, 122, 8, 172, 200, 236, 161, 76, 160, 46, 11, 20, 42, 33, }, { 222, 91, 203, 110, 134, 47, 139, 149, 138, 127, 234, 88, 38, 140, 27, 61, }, { 128, 86, 71, 84, 234, 9, 14, 85, 26, 195, 150, 106, 189, 98, 31, 162, }, { 221, 138, 192, 184, 14, 209, 158, 161, 169, 121, 216, 211, 157, 27, 212, 73, }, { 96, 223, 163, 63, 174, 118, 229, 79, 234, 192, 143, 206, 1, 200, 153, 152, }, { 197, 205, 152, 199, 196, 45, 54, 194, 114, 73, 139, 1, 12, 41, 99, 111, }, { 80, 81, 19, 193, 249, 77, 118, 137, 159, 160, 41, 169, 224, 172, 52, 212, }, { 187, 52, 117, 232, 115, 152, 81, 134, 5, 181, 51, 200, 41, 62, 16, 57, }, { 183, 246, 89, 54, 22, 230, 5, 86, 137, 173, 251, 161, 128, 39, 170, 42, }, { 13, 141, 148, 45, 29, 149, 230, 125, 44, 26, 103, 16, 192, 213, 255, 63, }, { 34, 106, 210, 48, 43, 134, 69, 29, 100, 68, 89, 9, 108, 162, 253, 145, }, { 240, 243, 53, 128, 200, 215, 154, 88, 98, 35, 123, 56, 227, 55, 92, 191, }, { 138, 245, 125, 229, 92, 72, 112, 237, 208, 215, 58, 214, 161, 150, 248, 89, }, { 152, 17, 31, 43, 32, 245, 166, 54, 193, 243, 197, 184, 44, 80, 168, 132, }, { 63, 157, 151, 246, 186, 187, 210, 34, 218, 126, 92, 133, 243, 234, 216, 43, }, { 217, 117, 101, 242, 45, 251, 19, 80, 108, 113, 33, 244, 250, 173, 3, 249, }, { 129, 25, 255, 167, 146, 226, 188, 248, 186, 193, 57, 19, 212, 174, 90, 142, }, { 61, 3, 36, 211, 74, 174, 117, 187, 89, 122, 193, 119, 33, 177, 82, 115, }, { 158, 112, 9, 68, 243, 202, 140, 94, 135, 255, 161, 109, 153, 189, 245, 108, }, { 9, 114, 49, 103, 62, 191, 107, 140, 233, 18, 158, 55, 167, 99, 40, 143, }, { 216, 58, 221, 1, 85, 16, 161, 253, 204, 115, 142, 141, 147, 97, 70, 213, }, { 119, 139, 220, 72, 137, 10, 12, 200, 158, 238, 38, 254, 130, 116, 91, 217, }, { 107, 51, 33, 125, 96, 220, 41, 90, 128, 214, 140, 11, 116, 240, 59, 79, }, { 225, 198, 92, 152, 60, 148, 89, 183, 80, 1, 182, 221, 213, 102, 195, 22, }, { 173, 47, 178, 108, 44, 15, 10, 172, 209, 153, 53, 129, 195, 78, 151, 84, }, { 224, 137, 228, 107, 68, 127, 235, 26, 240, 3, 25, 164, 188, 170, 134, 58, }, { 102, 190, 181, 80, 125, 73, 207, 39, 172, 204, 235, 27, 180, 37, 196, 112, }, { 248, 206, 188, 20, 142, 131, 67, 121, 43, 51, 74, 118, 45, 152, 49, 28, }, { 118, 196, 100, 187, 241, 225, 190, 101, 62, 236, 137, 135, 235, 184, 30, 245, }, { 67, 250, 201, 252, 253, 27, 18, 255, 46, 134, 121, 190, 4, 166, 33, 37, }, { 114, 59, 193, 241, 210, 203, 51, 148, 251, 228, 112, 160, 140, 14, 201, 69, }, { 247, 221, 155, 28, 99, 3, 2, 157, 132, 45, 176, 148, 63, 22, 68, 123, }, { 78, 119, 93, 209, 224, 142, 244, 130, 2, 156, 30, 174, 196, 115, 222, 26, }, { 220, 197, 120, 75, 118, 58, 44, 12, 9, 123, 119, 170, 244, 215, 145, 101, }, { 72, 22, 75, 190, 51, 177, 222, 234, 68, 144, 122, 123, 113, 158, 131, 242, }, { 218, 164, 110, 36, 165, 5, 6, 100, 79, 119, 19, 127, 65, 58, 204, 141, }, { 105, 173, 146, 88, 144, 201, 142, 195, 3, 210, 17, 249, 166, 171, 177, 23, }, { 176, 216, 247, 170, 189, 50, 157, 147, 111, 163, 48, 13, 92, 6, 178, 238, }, { 213, 183, 73, 44, 72, 133, 71, 128, 224, 105, 233, 157, 83, 180, 185, 234, }, { 246, 146, 35, 239, 27, 232, 176, 48, 36, 47, 31, 237, 86, 218, 1, 87, }, { 123, 73, 240, 150, 236, 116, 88, 24, 18, 246, 238, 151, 43, 109, 225, 202, }, { 65, 100, 122, 217, 13, 14, 181, 102, 173, 130, 228, 76, 214, 253, 171, 125, }, { 203, 145, 7, 60, 81, 70, 197, 139, 125, 85, 222, 154, 119, 107, 83, 36, }, { 149, 156, 139, 6, 61, 96, 64, 75, 237, 233, 162, 168, 236, 133, 87, 187, }, { 170, 1, 28, 240, 135, 219, 146, 105, 55, 151, 254, 45, 31, 111, 143, 144, }, { 230, 232, 242, 4, 151, 64, 193, 114, 182, 15, 125, 113, 9, 71, 219, 210, }, { 55, 160, 30, 98, 252, 239, 11, 3, 147, 110, 109, 203, 61, 69, 181, 136, }, { 33, 187, 217, 230, 163, 120, 80, 41, 71, 66, 107, 130, 215, 53, 50, 229, }, { 66, 181, 113, 15, 133, 240, 160, 82, 142, 132, 214, 199, 109, 106, 100, 9, }, { 215, 41, 250, 9, 184, 144, 224, 25, 99, 109, 116, 111, 129, 239, 51, 178, }, { 194, 227, 54, 91, 111, 249, 174, 7, 148, 71, 64, 173, 208, 8, 123, 171, }, { 116, 90, 215, 158, 1, 244, 25, 252, 189, 232, 20, 117, 57, 227, 148, 173, }, { 226, 23, 87, 78, 180, 106, 76, 131, 115, 7, 132, 86, 110, 241, 12, 98, }, { 145, 99, 46, 76, 30, 74, 205, 186, 40, 225, 91, 143, 139, 51, 128, 11, }, { 35, 37, 106, 195, 83, 109, 247, 176, 196, 70, 246, 112, 5, 110, 184, 189, }, { 192, 125, 133, 126, 159, 236, 9, 158, 23, 67, 221, 95, 2, 83, 241, 243, }, { 100, 32, 6, 117, 141, 92, 104, 190, 47, 200, 118, 233, 102, 126, 78, 40, }, { 15, 19, 39, 8, 237, 128, 65, 228, 175, 30, 250, 226, 18, 142, 117, 103, }, { 99, 14, 168, 233, 38, 136, 240, 123, 201, 198, 189, 69, 186, 95, 86, 236, }, { 168, 159, 175, 213, 119, 206, 53, 240, 180, 147, 99, 223, 205, 52, 5, 200, }, { 85, 225, 14, 120, 162, 140, 73, 213, 250, 170, 127, 247, 238, 214, 166, 72, }, { 189, 85, 99, 135, 160, 167, 123, 238, 67, 185, 87, 29, 156, 211, 77, 209, }, { 154, 143, 172, 14, 208, 224, 1, 175, 66, 247, 88, 74, 254, 11, 34, 220, }, { 3, 209, 11, 214, 136, 254, 21, 52, 35, 6, 50, 139, 187, 151, 207, 116, }, { 200, 64, 12, 234, 217, 184, 208, 191, 94, 83, 236, 17, 204, 252, 156, 80, }, { 196, 130, 32, 52, 188, 198, 132, 111, 210, 75, 36, 120, 101, 229, 38, 67, }, { 109, 82, 55, 18, 179, 227, 3, 50, 198, 218, 232, 222, 193, 29, 102, 167, }, { 146, 178, 37, 154, 150, 180, 216, 142, 11, 231, 105, 4, 48, 164, 79, 127, }, { 73, 89, 243, 77, 75, 90, 108, 71, 228, 146, 213, 2, 24, 82, 198, 222, }, { 159, 63, 177, 183, 139, 33, 62, 243, 39, 253, 14, 20, 240, 113, 176, 64, }, { 68, 212, 103, 96, 86, 207, 138, 58, 200, 136, 178, 18, 216, 135, 57, 225, }, { 45, 121, 245, 56, 198, 6, 4, 249, 203, 90, 163, 235, 126, 44, 136, 246, }, { 47, 231, 70, 29, 54, 19, 163, 96, 72, 94, 62, 25, 172, 119, 2, 174, }, { 54, 239, 166, 145, 132, 4, 185, 174, 51, 108, 194, 178, 84, 137, 240, 164, }, { 21, 202, 204, 82, 215, 105, 78, 30, 247, 42, 52, 194, 81, 231, 72, 25, }, { 24, 71, 88, 127, 202, 252, 168, 99, 219, 48, 83, 210, 145, 50, 183, 38, }, { 112, 165, 114, 212, 34, 222, 148, 13, 120, 224, 237, 82, 94, 85, 67, 29, }, { 254, 175, 170, 123, 93, 188, 105, 17, 109, 63, 46, 163, 152, 117, 108, 244, }, { 46, 168, 254, 238, 78, 248, 17, 205, 232, 92, 145, 96, 197, 187, 71, 130, }, { 92, 147, 63, 31, 156, 51, 34, 89, 19, 184, 225, 192, 73, 181, 142, 199, }, { 161, 237, 158, 178, 73, 113, 94, 124, 93, 129, 253, 232, 106, 87, 45, 71, }, { 166, 195, 48, 46, 226, 165, 198, 185, 187, 143, 54, 68, 182, 118, 53, 131, }, { 234, 42, 222, 218, 242, 62, 149, 162, 58, 23, 181, 24, 160, 94, 97, 193, }, { 27, 150, 83, 169, 66, 2, 189, 87, 248, 54, 97, 89, 42, 165, 120, 82, }, { 144, 44, 150, 191, 102, 161, 127, 23, 136, 227, 244, 246, 226, 255, 197, 39, }, { 164, 93, 131, 11, 18, 176, 97, 32, 56, 139, 171, 182, 100, 45, 191, 219, }, { 104, 226, 42, 171, 232, 34, 60, 110, 163, 208, 190, 128, 207, 103, 244, 59, }, { 87, 127, 189, 93, 82, 153, 238, 76, 121, 174, 226, 5, 60, 141, 44, 16, }, { 253, 126, 161, 173, 213, 66, 124, 37, 78, 57, 28, 40, 35, 226, 163, 128, }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, { 53, 62, 173, 71, 12, 250, 172, 154, 16, 106, 240, 57, 239, 30, 63, 208, }, { 75, 199, 64, 104, 187, 79, 203, 222, 103, 150, 72, 240, 202, 9, 76, 134, }, { 71, 5, 108, 182, 222, 49, 159, 14, 235, 142, 128, 153, 99, 16, 246, 149, }, { 162, 60, 149, 100, 193, 143, 75, 72, 126, 135, 207, 99, 209, 192, 226, 51, }, { 131, 135, 76, 130, 98, 247, 27, 97, 57, 197, 164, 225, 6, 245, 208, 214, }, { 124, 103, 94, 10, 71, 160, 192, 221, 244, 248, 37, 59, 247, 76, 249, 14, }, { 210, 153, 231, 176, 227, 81, 223, 69, 6, 103, 34, 49, 143, 149, 161, 46, }, { 19, 171, 218, 61, 4, 86, 100, 118, 177, 38, 80, 23, 228, 10, 21, 241, }, { 126, 249, 237, 47, 183, 181, 103, 68, 119, 252, 184, 201, 37, 23, 115, 86, }, { 62, 210, 47, 5, 194, 80, 96, 143, 122, 124, 243, 252, 154, 38, 157, 7, }, { 122, 6, 72, 101, 148, 159, 234, 181, 178, 244, 65, 238, 66, 161, 164, 230, }, { 132, 169, 226, 30, 201, 35, 131, 164, 223, 203, 111, 77, 218, 212, 200, 18, }, { 22, 27, 199, 132, 95, 151, 91, 42, 212, 44, 6, 73, 234, 112, 135, 109, }, { 209, 72, 236, 102, 107, 175, 202, 113, 37, 97, 16, 186, 52, 2, 110, 90, }, { 177, 151, 79, 89, 197, 217, 47, 62, 207, 161, 159, 116, 53, 202, 247, 194, }, { 12, 194, 44, 222, 101, 126, 84, 208, 140, 24, 200, 105, 169, 25, 186, 19, }, { 41, 134, 80, 114, 229, 44, 137, 8, 14, 82, 90, 204, 25, 154, 95, 70, }, { 6, 97, 22, 111, 211, 63, 42, 104, 70, 12, 100, 213, 181, 237, 93, 232, }, { 44, 54, 77, 203, 190, 237, 182, 84, 107, 88, 12, 146, 23, 224, 205, 218, }, { 42, 87, 91, 164, 109, 210, 156, 60, 45, 84, 104, 71, 162, 13, 144, 50, }, { 205, 240, 17, 83, 130, 121, 239, 227, 59, 89, 186, 79, 194, 134, 14, 204, }, { 7, 46, 174, 156, 171, 212, 152, 197, 230, 14, 203, 172, 220, 33, 24, 196, }, { 16, 122, 209, 235, 140, 168, 113, 66, 146, 32, 98, 156, 95, 157, 218, 133, }, { 8, 61, 137, 148, 70, 84, 217, 33, 73, 16, 49, 78, 206, 175, 109, 163, }, { 249, 129, 4, 231, 246, 104, 241, 212, 139, 49, 229, 15, 68, 84, 116, 48, }, { 17, 53, 105, 24, 244, 67, 195, 239, 50, 34, 205, 229, 54, 81, 159, 169, }, { 40, 201, 232, 129, 157, 199, 59, 165, 174, 80, 245, 181, 112, 86, 26, 106, }, { 235, 101, 102, 41, 138, 213, 39, 15, 154, 21, 26, 97, 201, 146, 36, 237, }, { 135, 120, 233, 200, 65, 221, 150, 144, 252, 205, 93, 198, 97, 67, 7, 102, }, { 241, 188, 141, 115, 176, 60, 40, 245, 194, 33, 212, 65, 138, 251, 25, 147, }, { 198, 28, 147, 17, 76, 211, 35, 246, 81, 79, 185, 138, 183, 190, 172, 27, }, { 181, 104, 234, 19, 230, 243, 162, 207, 10, 169, 102, 83, 82, 124, 32, 114, }, { 111, 204, 132, 55, 67, 246, 164, 171, 69, 222, 117, 44, 19, 70, 236, 255, }, { 204, 191, 169, 160, 250, 146, 93, 78, 155, 91, 21, 54, 171, 74, 75, 224, }, { 52, 113, 21, 180, 116, 17, 30, 55, 176, 104, 95, 64, 134, 210, 122, 252, }, { 28, 184, 253, 53, 233, 214, 37, 146, 30, 56, 170, 245, 246, 132, 96, 150, }, { 77, 166, 86, 7, 104, 112, 225, 182, 33, 154, 44, 37, 127, 228, 17, 110, }, { 243, 34, 62, 86, 64, 41, 143, 108, 65, 37, 73, 179, 88, 160, 147, 203, }, { 150, 77, 128, 208, 181, 158, 85, 127, 206, 239, 144, 35, 87, 18, 152, 207, }, { 5, 176, 29, 185, 91, 193, 63, 92, 101, 10, 86, 94, 14, 122, 146, 156, }, { 97, 144, 27, 204, 214, 157, 87, 226, 74, 194, 32, 183, 104, 4, 220, 180, }, { 89, 35, 34, 166, 199, 242, 29, 5, 118, 178, 183, 158, 71, 207, 28, 91, }, { 134, 55, 81, 59, 57, 54, 36, 61, 92, 207, 242, 191, 8, 143, 66, 74, }, { 136, 107, 206, 192, 172, 93, 215, 116, 83, 211, 167, 36, 115, 205, 114, 1, }, { 179, 9, 252, 124, 53, 204, 136, 167, 76, 165, 2, 134, 231, 145, 125, 154, }, { 137, 36, 118, 51, 212, 182, 101, 217, 243, 209, 8, 93, 26, 1, 55, 45, }, { 252, 49, 25, 94, 173, 169, 206, 136, 238, 59, 179, 81, 74, 46, 230, 172, }, { 171, 78, 164, 3, 255, 48, 32, 196, 151, 149, 81, 84, 118, 163, 202, 188, }, { 83, 128, 24, 23, 113, 179, 99, 189, 188, 166, 27, 34, 91, 59, 251, 160, }, { 180, 39, 82, 224, 158, 24, 16, 98, 170, 171, 201, 42, 59, 176, 101, 94, }, { 227, 88, 239, 189, 204, 129, 254, 46, 211, 5, 43, 47, 7, 61, 73, 78, }, { 206, 33, 26, 133, 10, 135, 250, 215, 24, 95, 136, 196, 121, 17, 193, 184, }, { 82, 207, 160, 228, 9, 88, 209, 16, 28, 164, 180, 91, 50, 247, 190, 140, }, { 140, 148, 107, 138, 143, 119, 90, 133, 150, 219, 94, 3, 20, 123, 165, 177, }, { 58, 45, 138, 79, 225, 122, 237, 126, 191, 116, 10, 219, 253, 144, 74, 183, }, { 202, 222, 191, 207, 41, 173, 119, 38, 221, 87, 113, 227, 30, 167, 22, 8, }, { 84, 174, 182, 139, 218, 103, 251, 120, 90, 168, 208, 142, 135, 26, 227, 100, }, { 167, 140, 136, 221, 154, 78, 116, 20, 27, 141, 153, 61, 223, 186, 112, 175, }, { 153, 94, 167, 216, 88, 30, 20, 155, 97, 241, 106, 193, 69, 156, 237, 168, }, { 10, 163, 58, 177, 182, 65, 126, 184, 202, 20, 172, 188, 28, 244, 231, 251, }, { 64, 43, 194, 42, 117, 229, 7, 203, 13, 128, 75, 53, 191, 49, 238, 81, }, { 2, 158, 179, 37, 240, 21, 167, 153, 131, 4, 157, 242, 210, 91, 138, 88, }, { 91, 189, 145, 131, 55, 231, 186, 156, 245, 182, 42, 108, 149, 148, 150, 3, }, { 188, 26, 219, 116, 216, 76, 201, 67, 227, 187, 248, 100, 245, 31, 8, 253, }, { 120, 152, 251, 64, 100, 138, 77, 44, 49, 240, 220, 28, 144, 250, 46, 190, }, { 121, 215, 67, 179, 28, 97, 255, 129, 145, 242, 115, 101, 249, 54, 107, 146, }, { 245, 67, 40, 57, 147, 22, 165, 4, 7, 41, 45, 102, 237, 77, 206, 35, }, { 169, 208, 23, 38, 15, 37, 135, 93, 20, 145, 204, 166, 164, 248, 64, 228, }, { 236, 75, 200, 181, 33, 1, 191, 202, 124, 27, 209, 205, 21, 179, 60, 41, }, { 125, 40, 230, 249, 63, 75, 114, 112, 84, 250, 138, 66, 158, 128, 188, 34, }, { 69, 155, 223, 147, 46, 36, 56, 151, 104, 138, 29, 107, 177, 75, 124, 205, }, { 60, 76, 156, 32, 50, 69, 199, 22, 249, 120, 110, 14, 72, 125, 23, 95, }, { 101, 111, 190, 134, 245, 183, 218, 19, 143, 202, 217, 144, 15, 178, 11, 4, }, { 1, 79, 184, 243, 120, 235, 178, 173, 160, 2, 175, 121, 105, 204, 69, 44, }, { 36, 11, 196, 95, 248, 185, 111, 117, 34, 72, 61, 220, 217, 79, 160, 121, }, { 95, 66, 52, 201, 20, 205, 55, 109, 48, 190, 211, 75, 242, 34, 65, 179, }, { 127, 182, 85, 220, 207, 94, 213, 233, 215, 254, 23, 176, 76, 219, 54, 122, }, { 32, 244, 97, 21, 219, 147, 226, 132, 231, 64, 196, 251, 190, 249, 119, 201, }, { 174, 254, 185, 186, 164, 241, 31, 152, 242, 159, 7, 10, 120, 217, 88, 32, }, { 94, 13, 140, 58, 108, 38, 133, 192, 144, 188, 124, 50, 155, 238, 4, 159, }, { 175, 177, 1, 73, 220, 26, 173, 53, 82, 157, 168, 115, 17, 21, 29, 12, }, { 208, 7, 84, 149, 19, 68, 120, 220, 133, 99, 191, 195, 93, 206, 43, 118, }, { 178, 70, 68, 143, 77, 39, 58, 10, 236, 167, 173, 255, 142, 93, 56, 182, }, { 143, 69, 96, 92, 7, 137, 79, 177, 181, 221, 108, 136, 175, 236, 106, 197, }, { 39, 218, 207, 137, 112, 71, 122, 65, 1, 78, 15, 87, 98, 216, 111, 13, }, { 141, 219, 211, 121, 247, 156, 232, 40, 54, 217, 241, 122, 125, 183, 224, 157, }, { 76, 233, 238, 244, 16, 155, 83, 27, 129, 152, 131, 92, 22, 40, 84, 66, }, { 212, 248, 241, 223, 48, 110, 245, 45, 64, 107, 70, 228, 58, 120, 252, 198, }, { 250, 80, 15, 49, 126, 150, 228, 224, 168, 55, 215, 132, 255, 195, 187, 68, }, { 242, 109, 134, 165, 56, 194, 61, 193, 225, 39, 230, 202, 49, 108, 214, 231, }, }, { { 47, 54, 88, 234, 162, 12, 37, 207, 124, 217, 158, 73, 146, 211, 80, 54, }, { 72, 51, 214, 58, 126, 140, 130, 184, 244, 108, 135, 228, 11, 166, 159, 51, }, { 92, 156, 233, 118, 101, 162, 175, 217, 1, 114, 10, 84, 168, 129, 148, 156, }, { 12, 101, 21, 133, 9, 26, 27, 158, 83, 10, 123, 209, 97, 29, 184, 101, }, { 59, 153, 103, 166, 185, 34, 8, 174, 137, 199, 19, 249, 49, 244, 91, 153, }, { 98, 94, 241, 195, 170, 106, 61, 254, 36, 83, 171, 129, 193, 12, 189, 94, }, { 231, 239, 108, 42, 60, 194, 68, 110, 103, 117, 112, 89, 178, 214, 81, 239, }, { 66, 133, 40, 28, 146, 155, 117, 105, 111, 99, 32, 188, 187, 84, 123, 133, }, { 97, 214, 101, 115, 57, 141, 75, 56, 64, 176, 197, 36, 72, 154, 147, 214, }, { 26, 58, 115, 168, 240, 142, 211, 123, 95, 23, 3, 167, 141, 222, 135, 58, }, { 249, 246, 173, 64, 203, 251, 158, 222, 9, 100, 90, 177, 161, 3, 190, 246, }, { 18, 124, 212, 239, 254, 35, 193, 46, 61, 27, 81, 57, 114, 200, 87, 124, }, { 128, 234, 226, 250, 224, 66, 227, 25, 239, 192, 105, 244, 43, 163, 158, 234, }, { 130, 26, 187, 155, 2, 248, 6, 157, 22, 195, 156, 50, 100, 71, 170, 26, }, { 37, 128, 166, 204, 78, 27, 210, 30, 231, 214, 57, 17, 34, 33, 180, 128, }, { 226, 180, 19, 57, 74, 40, 222, 231, 203, 147, 194, 117, 234, 175, 35, 180, }, { 6, 211, 235, 163, 229, 13, 236, 79, 200, 5, 220, 137, 209, 239, 92, 211, }, { 36, 248, 107, 29, 63, 70, 65, 92, 122, 54, 162, 114, 228, 83, 174, 248, }, { 64, 117, 113, 125, 112, 33, 144, 237, 150, 96, 213, 122, 244, 176, 79, 117, }, { 138, 92, 28, 220, 12, 85, 20, 200, 116, 207, 206, 172, 155, 81, 122, 92, }, { 213, 72, 97, 26, 250, 16, 205, 215, 17, 94, 170, 93, 186, 70, 192, 72, }, { 119, 137, 3, 94, 192, 25, 131, 221, 76, 173, 189, 82, 164, 89, 172, 137, }, { 108, 203, 189, 39, 65, 202, 195, 228, 142, 90, 37, 150, 239, 245, 49, 203, }, { 236, 33, 95, 221, 161, 136, 32, 253, 97, 154, 76, 98, 196, 86, 175, 33, }, { 218, 165, 224, 47, 96, 237, 160, 143, 38, 183, 191, 41, 82, 205, 86, 165, }, { 169, 15, 81, 179, 167, 67, 42, 153, 91, 28, 43, 52, 104, 159, 146, 15, }, { 216, 85, 185, 78, 130, 87, 69, 11, 223, 180, 74, 239, 29, 41, 98, 85, }, { 116, 1, 151, 238, 83, 254, 245, 27, 40, 78, 211, 247, 45, 207, 130, 1, }, { 177, 197, 123, 122, 181, 119, 28, 102, 253, 8, 221, 85, 170, 165, 33, 197, }, { 200, 217, 52, 192, 158, 206, 97, 161, 27, 172, 238, 16, 32, 5, 1, 217, }, { 133, 177, 157, 233, 150, 168, 121, 144, 67, 38, 219, 216, 115, 218, 236, 177, }, { 167, 154, 29, 87, 76, 227, 212, 131, 241, 21, 165, 35, 70, 102, 30, 154, }, { 146, 150, 54, 21, 30, 97, 34, 55, 210, 219, 56, 205, 89, 107, 201, 150, }, { 222, 134, 82, 237, 103, 90, 169, 68, 23, 177, 150, 102, 204, 198, 62, 134, }, { 67, 253, 229, 205, 227, 198, 230, 43, 242, 131, 187, 223, 125, 38, 97, 253, }, { 56, 17, 243, 22, 42, 197, 126, 104, 237, 36, 125, 92, 184, 98, 117, 17, }, { 39, 112, 255, 173, 172, 161, 55, 154, 30, 213, 204, 215, 109, 197, 128, 112, }, { 238, 209, 6, 188, 67, 50, 197, 121, 152, 153, 185, 164, 139, 178, 155, 209, }, { 208, 19, 30, 9, 140, 250, 87, 94, 189, 184, 24, 113, 226, 63, 178, 19, }, { 115, 170, 177, 156, 199, 174, 138, 22, 125, 171, 148, 29, 58, 82, 196, 170, }, { 178, 77, 239, 202, 38, 144, 106, 160, 153, 235, 179, 240, 35, 51, 15, 77, }, { 251, 6, 244, 33, 41, 65, 123, 90, 240, 103, 175, 119, 238, 231, 138, 6, }, { 16, 140, 141, 142, 28, 153, 36, 170, 196, 24, 164, 255, 61, 44, 99, 140, }, { 230, 151, 161, 251, 77, 159, 215, 44, 250, 149, 235, 58, 116, 164, 75, 151, }, { 11, 206, 51, 247, 157, 74, 100, 147, 6, 239, 60, 59, 118, 128, 254, 206, }, { 152, 32, 200, 51, 242, 118, 213, 230, 73, 212, 159, 149, 233, 153, 45, 32, }, { 182, 110, 93, 8, 33, 39, 99, 107, 168, 237, 154, 191, 189, 56, 103, 110, }, { 17, 244, 64, 95, 109, 196, 183, 232, 89, 248, 63, 156, 251, 94, 121, 244, }, { 189, 160, 110, 255, 188, 109, 7, 248, 174, 2, 166, 132, 203, 184, 153, 160, }, { 15, 237, 129, 53, 154, 253, 109, 88, 55, 233, 21, 116, 232, 139, 150, 237, }, { 243, 64, 83, 102, 39, 236, 105, 15, 146, 107, 253, 233, 17, 241, 90, 64, }, { 93, 228, 36, 167, 20, 255, 60, 155, 156, 146, 145, 55, 110, 243, 142, 228, }, { 191, 80, 55, 158, 94, 215, 226, 124, 87, 1, 83, 66, 132, 92, 173, 80, }, { 71, 222, 87, 15, 228, 113, 239, 224, 195, 133, 146, 144, 227, 45, 9, 222, }, { 46, 78, 149, 59, 211, 81, 182, 141, 225, 57, 5, 42, 84, 161, 74, 78, }, { 193, 231, 94, 86, 225, 62, 224, 182, 228, 64, 39, 237, 25, 97, 203, 231, }, { 214, 192, 245, 170, 105, 247, 187, 17, 117, 189, 196, 248, 51, 208, 238, 192, }, { 33, 163, 20, 14, 73, 172, 219, 213, 214, 208, 16, 94, 188, 42, 220, 163, }, { 35, 83, 77, 111, 171, 22, 62, 81, 47, 211, 229, 152, 243, 206, 232, 83, }, { 244, 235, 117, 20, 179, 188, 22, 2, 199, 142, 186, 3, 6, 108, 28, 235, }, { 110, 59, 228, 70, 163, 112, 38, 96, 119, 89, 208, 80, 160, 17, 5, 59, }, { 142, 127, 174, 30, 11, 226, 29, 3, 69, 201, 231, 227, 5, 90, 18, 127, }, { 192, 159, 147, 135, 144, 99, 115, 244, 121, 160, 188, 142, 223, 19, 209, 159, }, { 144, 102, 111, 116, 252, 219, 199, 179, 43, 216, 205, 11, 22, 143, 253, 102, }, { 245, 147, 184, 197, 194, 225, 133, 64, 90, 110, 33, 96, 192, 30, 6, 147, }, { 90, 79, 2, 213, 128, 175, 67, 150, 201, 119, 214, 221, 121, 110, 200, 79, }, { 132, 201, 80, 56, 231, 245, 234, 210, 222, 198, 64, 187, 181, 168, 246, 201, }, { 25, 178, 231, 24, 99, 105, 165, 189, 59, 244, 109, 2, 4, 72, 169, 178, }, { 109, 179, 112, 246, 48, 151, 80, 166, 19, 186, 190, 245, 41, 135, 43, 179, }, { 117, 121, 90, 63, 34, 163, 102, 89, 181, 174, 72, 148, 235, 189, 152, 121, }, { 95, 20, 125, 198, 246, 69, 217, 31, 101, 145, 100, 241, 33, 23, 186, 20, }, { 224, 68, 74, 88, 168, 146, 59, 99, 50, 144, 55, 179, 165, 75, 23, 68, }, { 179, 53, 34, 27, 87, 205, 249, 226, 4, 11, 40, 147, 229, 65, 21, 53, }, { 82, 9, 165, 146, 142, 2, 81, 195, 171, 123, 132, 67, 134, 120, 24, 9, }, { 180, 158, 4, 105, 195, 157, 134, 239, 81, 238, 111, 121, 242, 220, 83, 158, }, { 50, 167, 13, 48, 198, 210, 137, 185, 118, 43, 218, 4, 8, 144, 145, 167, }, { 183, 22, 144, 217, 80, 122, 240, 41, 53, 13, 1, 220, 123, 74, 125, 22, }, { 198, 76, 120, 36, 117, 110, 159, 187, 177, 165, 96, 7, 14, 252, 141, 76, }, { 163, 185, 175, 149, 75, 84, 221, 72, 192, 19, 140, 108, 216, 109, 118, 185, }, { 80, 249, 252, 243, 108, 184, 180, 71, 82, 120, 113, 133, 201, 156, 44, 249, }, { 232, 2, 237, 31, 166, 63, 41, 54, 80, 156, 101, 45, 90, 93, 199, 2, }, { 106, 24, 86, 132, 164, 199, 47, 171, 70, 95, 249, 31, 62, 26, 109, 24, }, { 156, 3, 122, 241, 245, 193, 220, 45, 120, 210, 182, 218, 119, 146, 69, 3, }, { 87, 82, 218, 129, 248, 232, 203, 74, 7, 157, 54, 111, 222, 1, 106, 82, }, { 74, 195, 143, 91, 156, 54, 103, 60, 13, 111, 114, 34, 68, 66, 171, 195, }, { 111, 67, 41, 151, 210, 45, 181, 34, 234, 185, 75, 51, 102, 99, 31, 67, }, { 188, 216, 163, 46, 205, 48, 148, 186, 51, 226, 61, 231, 13, 202, 131, 216, }, { 103, 5, 142, 208, 220, 128, 167, 119, 136, 181, 25, 173, 153, 117, 207, 5, }, { 81, 129, 49, 34, 29, 229, 39, 5, 207, 152, 234, 230, 15, 238, 54, 129, }, { 153, 88, 5, 226, 131, 43, 70, 164, 212, 52, 4, 246, 47, 235, 55, 88, }, { 255, 37, 70, 227, 46, 246, 114, 145, 193, 97, 134, 56, 112, 236, 226, 37, }, { 91, 55, 207, 4, 241, 242, 208, 212, 84, 151, 77, 190, 191, 28, 210, 55, }, { 209, 107, 211, 216, 253, 167, 196, 28, 32, 88, 131, 18, 36, 77, 168, 107, }, { 27, 66, 190, 121, 129, 211, 64, 57, 194, 247, 152, 196, 75, 172, 157, 66, }, { 118, 241, 206, 143, 177, 68, 16, 159, 209, 77, 38, 49, 98, 43, 182, 241, }, { 100, 141, 26, 96, 79, 103, 209, 177, 236, 86, 119, 8, 16, 227, 225, 141, }, { 41, 229, 179, 73, 71, 1, 201, 128, 180, 220, 66, 192, 67, 60, 12, 229, }, { 89, 199, 150, 101, 19, 72, 53, 80, 173, 148, 184, 120, 240, 248, 230, 199, }, { 104, 232, 15, 229, 70, 125, 202, 47, 191, 92, 12, 217, 113, 254, 89, 232, }, { 57, 105, 62, 199, 91, 152, 237, 42, 112, 196, 230, 63, 126, 16, 111, 105, }, { 148, 69, 221, 182, 251, 108, 206, 120, 26, 222, 228, 68, 136, 132, 149, 69, }, { 75, 187, 66, 138, 237, 107, 244, 126, 144, 143, 233, 65, 130, 48, 177, 187, }, { 7, 171, 38, 114, 148, 80, 127, 13, 85, 229, 71, 234, 23, 157, 70, 171, }, { 113, 90, 232, 253, 37, 20, 111, 146, 132, 168, 97, 219, 117, 182, 240, 90, }, { 43, 21, 234, 40, 165, 187, 44, 4, 77, 223, 183, 6, 12, 216, 56, 21, }, { 38, 8, 50, 124, 221, 252, 164, 216, 131, 53, 87, 180, 171, 183, 154, 8, }, { 32, 219, 217, 223, 56, 241, 72, 151, 75, 48, 139, 61, 122, 88, 198, 219, }, { 250, 126, 57, 240, 88, 28, 232, 24, 109, 135, 52, 20, 40, 149, 144, 126, }, { 73, 75, 27, 235, 15, 209, 17, 250, 105, 140, 28, 135, 205, 212, 133, 75, }, { 34, 43, 128, 190, 218, 75, 173, 19, 178, 51, 126, 251, 53, 188, 242, 43, }, { 166, 226, 208, 134, 61, 190, 71, 193, 108, 245, 62, 64, 128, 20, 4, 226, }, { 205, 130, 75, 211, 232, 36, 251, 40, 183, 74, 92, 60, 120, 124, 115, 130, }, { 140, 143, 247, 127, 233, 88, 248, 135, 188, 202, 18, 37, 74, 190, 38, 143, }, { 215, 184, 56, 123, 24, 170, 40, 83, 232, 93, 95, 155, 245, 162, 244, 184, }, { 70, 166, 154, 222, 149, 44, 124, 162, 94, 101, 9, 243, 37, 95, 19, 166, }, { 136, 172, 69, 189, 238, 239, 241, 76, 141, 204, 59, 106, 212, 181, 78, 172, }, { 68, 86, 195, 191, 119, 150, 153, 38, 167, 102, 252, 53, 106, 187, 39, 86, }, { 194, 111, 202, 230, 114, 217, 150, 112, 128, 163, 73, 72, 144, 247, 229, 111, }, { 147, 238, 251, 196, 111, 60, 177, 117, 79, 59, 163, 174, 159, 25, 211, 238, }, { 246, 27, 44, 117, 81, 6, 243, 134, 62, 141, 79, 197, 73, 136, 40, 27, }, { 9, 62, 106, 150, 127, 240, 129, 23, 255, 236, 201, 253, 57, 100, 202, 62, }, { 164, 18, 137, 231, 223, 4, 162, 69, 149, 246, 203, 134, 207, 240, 48, 18, }, { 233, 122, 32, 206, 215, 98, 186, 116, 205, 124, 254, 78, 156, 47, 221, 122, }, { 42, 109, 39, 249, 212, 230, 191, 70, 208, 63, 44, 101, 202, 170, 34, 109, }, { 84, 218, 78, 49, 107, 15, 189, 140, 99, 126, 88, 202, 87, 151, 68, 218, }, { 162, 193, 98, 68, 58, 9, 78, 10, 93, 243, 23, 15, 30, 31, 108, 193, }, { 247, 99, 225, 164, 32, 91, 96, 196, 163, 109, 212, 166, 143, 250, 50, 99, }, { 207, 114, 18, 178, 10, 158, 30, 172, 78, 73, 169, 250, 55, 152, 71, 114, }, { 175, 220, 186, 16, 66, 78, 198, 214, 147, 25, 247, 189, 185, 112, 206, 220, }, { 253, 213, 31, 130, 204, 76, 151, 21, 56, 98, 115, 254, 63, 8, 214, 213, }, { 206, 10, 223, 99, 123, 195, 141, 238, 211, 169, 50, 153, 241, 234, 93, 10, }, { 19, 4, 25, 62, 143, 126, 82, 108, 160, 251, 202, 90, 180, 186, 77, 4, }, { 227, 204, 222, 232, 59, 117, 77, 165, 86, 115, 89, 22, 44, 221, 57, 204, }, { 139, 36, 209, 13, 125, 8, 135, 138, 233, 47, 85, 207, 93, 35, 96, 36, }, { 126, 183, 105, 200, 191, 233, 2, 202, 179, 65, 116, 175, 157, 61, 102, 183, }, { 237, 89, 146, 12, 208, 213, 179, 191, 252, 122, 215, 1, 2, 36, 181, 89, }, { 229, 31, 53, 75, 222, 120, 161, 234, 158, 118, 133, 159, 253, 50, 101, 31, }, { 184, 251, 17, 236, 202, 135, 157, 113, 2, 228, 20, 168, 147, 193, 235, 251, }, { 125, 63, 253, 120, 44, 14, 116, 12, 215, 162, 26, 10, 20, 171, 72, 63, }, { 150, 181, 132, 215, 25, 214, 43, 252, 227, 221, 17, 130, 199, 96, 161, 181, }, { 5, 91, 127, 19, 118, 234, 154, 137, 172, 230, 178, 44, 88, 121, 114, 91, }, { 24, 202, 42, 201, 18, 52, 54, 255, 166, 20, 246, 97, 194, 58, 179, 202, }, { 135, 65, 196, 136, 116, 18, 156, 20, 186, 37, 46, 30, 60, 62, 216, 65, }, { 107, 96, 155, 85, 213, 154, 188, 233, 219, 191, 98, 124, 248, 104, 119, 96, }, { 212, 48, 172, 203, 139, 77, 94, 149, 140, 190, 49, 62, 124, 52, 218, 48, }, { 4, 35, 178, 194, 7, 183, 9, 203, 49, 6, 41, 79, 158, 11, 104, 35, }, { 187, 115, 133, 92, 89, 96, 235, 183, 102, 7, 122, 13, 26, 87, 197, 115, }, { 55, 252, 114, 35, 176, 56, 19, 48, 218, 205, 104, 40, 80, 233, 227, 252, }, { 211, 155, 138, 185, 31, 29, 33, 152, 217, 91, 118, 212, 107, 169, 156, 155, }, { 155, 168, 92, 131, 97, 145, 163, 32, 45, 55, 241, 48, 96, 15, 3, 168, }, { 85, 162, 131, 224, 26, 82, 46, 206, 254, 158, 195, 169, 145, 229, 94, 162, }, { 58, 225, 170, 119, 200, 127, 155, 236, 20, 39, 136, 154, 247, 134, 65, 225, }, { 196, 188, 33, 69, 151, 212, 122, 63, 72, 166, 149, 193, 65, 24, 185, 188, }, { 158, 243, 35, 144, 23, 123, 57, 169, 129, 209, 67, 28, 56, 118, 113, 243, }, { 161, 73, 246, 244, 169, 238, 56, 204, 57, 16, 121, 170, 151, 137, 66, 73, }, { 129, 146, 47, 43, 145, 31, 112, 91, 114, 32, 242, 151, 237, 209, 132, 146, }, { 137, 212, 136, 108, 159, 178, 98, 14, 16, 44, 160, 9, 18, 199, 84, 212, }, { 20, 175, 63, 76, 27, 46, 45, 97, 245, 30, 141, 176, 163, 39, 11, 175, }, { 185, 131, 220, 61, 187, 218, 14, 51, 159, 4, 143, 203, 85, 179, 241, 131, }, { 172, 84, 46, 160, 209, 169, 176, 16, 247, 250, 153, 24, 48, 230, 224, 84, }, { 143, 7, 99, 207, 122, 191, 142, 65, 216, 41, 124, 128, 195, 40, 8, 7, }, { 240, 200, 199, 214, 180, 11, 31, 201, 246, 136, 147, 76, 152, 103, 116, 200, }, { 254, 93, 139, 50, 95, 171, 225, 211, 92, 129, 29, 91, 182, 158, 248, 93, }, { 1, 120, 205, 209, 113, 93, 147, 66, 157, 224, 155, 99, 198, 114, 26, 120, }, { 8, 70, 167, 71, 14, 173, 18, 85, 98, 12, 82, 158, 255, 22, 208, 70, }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, { 13, 29, 216, 84, 120, 71, 136, 220, 206, 234, 224, 178, 167, 111, 162, 29, }, { 48, 87, 84, 81, 36, 104, 108, 61, 143, 40, 47, 194, 71, 116, 165, 87, }, { 45, 198, 1, 139, 64, 182, 192, 75, 133, 218, 107, 143, 221, 55, 100, 198, }, { 31, 97, 12, 187, 134, 100, 73, 242, 243, 241, 177, 139, 213, 167, 245, 97, }, { 53, 12, 43, 66, 82, 130, 246, 180, 35, 206, 157, 238, 31, 13, 215, 12, }, { 217, 45, 116, 159, 243, 10, 214, 73, 66, 84, 209, 140, 219, 91, 120, 45, }, { 219, 221, 45, 254, 17, 176, 51, 205, 187, 87, 36, 74, 148, 191, 76, 221, }, { 186, 11, 72, 141, 40, 61, 120, 245, 251, 231, 225, 110, 220, 37, 223, 11, }, { 61, 74, 140, 5, 92, 47, 228, 225, 65, 194, 207, 112, 224, 27, 7, 74, }, { 141, 247, 58, 174, 152, 5, 107, 197, 33, 42, 137, 70, 140, 204, 60, 247, }, { 54, 132, 191, 242, 193, 101, 128, 114, 71, 45, 243, 75, 150, 155, 249, 132, }, { 168, 119, 156, 98, 214, 30, 185, 219, 198, 252, 176, 87, 174, 237, 136, 119, }, { 195, 23, 7, 55, 3, 132, 5, 50, 29, 67, 210, 43, 86, 133, 255, 23, }, { 77, 104, 169, 41, 8, 102, 24, 49, 88, 138, 53, 200, 83, 223, 237, 104, }, { 165, 106, 68, 54, 174, 89, 49, 7, 8, 22, 80, 229, 9, 130, 42, 106, }, { 29, 145, 85, 218, 100, 222, 172, 118, 10, 242, 68, 77, 154, 67, 193, 145, }, { 60, 50, 65, 212, 45, 114, 119, 163, 220, 34, 84, 19, 38, 105, 29, 50, }, { 239, 169, 203, 109, 50, 111, 86, 59, 5, 121, 34, 199, 77, 192, 129, 169, }, { 69, 46, 14, 110, 6, 203, 10, 100, 58, 134, 103, 86, 172, 201, 61, 46, }, { 170, 135, 197, 3, 52, 164, 92, 95, 63, 255, 69, 145, 225, 9, 188, 135, }, { 124, 71, 48, 169, 93, 83, 231, 78, 74, 66, 129, 105, 210, 217, 82, 71, }, { 157, 123, 183, 32, 132, 156, 79, 111, 229, 50, 45, 185, 177, 224, 95, 123, }, { 44, 190, 204, 90, 49, 235, 83, 9, 24, 58, 240, 236, 27, 69, 126, 190, }, { 22, 95, 102, 45, 249, 148, 200, 229, 12, 29, 120, 118, 236, 195, 63, 95, }, { 3, 136, 148, 176, 147, 231, 118, 198, 100, 227, 110, 165, 137, 150, 46, 136, }, { 94, 108, 176, 23, 135, 24, 74, 93, 248, 113, 255, 146, 231, 101, 160, 108, }, { 78, 224, 61, 153, 155, 129, 110, 247, 60, 105, 91, 109, 218, 73, 195, 224, }, { 203, 81, 160, 112, 13, 41, 23, 103, 127, 79, 128, 181, 169, 147, 47, 81, }, { 62, 194, 24, 181, 207, 200, 146, 39, 37, 33, 161, 213, 105, 141, 41, 194, }, { 21, 215, 242, 157, 106, 115, 190, 35, 104, 254, 22, 211, 101, 85, 17, 215, }, { 252, 173, 210, 83, 189, 17, 4, 87, 165, 130, 232, 157, 249, 122, 204, 173, }, { 174, 164, 119, 193, 51, 19, 85, 148, 14, 249, 108, 222, 127, 2, 212, 164, }, { 99, 38, 60, 18, 219, 55, 174, 188, 185, 179, 48, 226, 7, 126, 167, 38, }, { 14, 149, 76, 228, 235, 160, 254, 26, 170, 9, 142, 23, 46, 249, 140, 149, }, { 127, 207, 164, 25, 206, 180, 145, 136, 46, 161, 239, 204, 91, 79, 124, 207, }, { 49, 47, 153, 128, 85, 53, 255, 127, 18, 200, 180, 161, 129, 6, 191, 47, }, { 223, 254, 159, 60, 22, 7, 58, 6, 138, 81, 13, 5, 10, 180, 36, 254, }, { 241, 176, 10, 7, 197, 86, 140, 139, 107, 104, 8, 47, 94, 21, 110, 176, }, { 96, 174, 168, 162, 72, 208, 216, 122, 221, 80, 94, 71, 142, 232, 137, 174, }, { 121, 28, 79, 186, 43, 185, 125, 199, 230, 164, 51, 69, 138, 160, 32, 28, }, { 154, 208, 145, 82, 16, 204, 48, 98, 176, 215, 106, 83, 166, 125, 25, 208, }, { 248, 142, 96, 145, 186, 166, 13, 156, 148, 132, 193, 210, 103, 113, 164, 142, }, { 76, 16, 100, 248, 121, 59, 139, 115, 197, 106, 174, 171, 149, 173, 247, 16, }, { 181, 230, 201, 184, 178, 192, 21, 173, 204, 14, 244, 26, 52, 174, 73, 230, }, { 65, 13, 188, 172, 1, 124, 3, 175, 11, 128, 78, 25, 50, 194, 85, 13, }, { 199, 52, 181, 245, 4, 51, 12, 249, 44, 69, 251, 100, 200, 142, 151, 52, }, { 122, 148, 219, 10, 184, 94, 11, 1, 130, 71, 93, 224, 3, 54, 14, 148, }, { 123, 236, 22, 219, 201, 3, 152, 67, 31, 167, 198, 131, 197, 68, 20, 236, }, { 10, 182, 254, 38, 236, 23, 247, 209, 155, 15, 167, 88, 176, 242, 228, 182, }, { 220, 118, 11, 140, 133, 224, 76, 192, 238, 178, 99, 160, 131, 34, 10, 118, }, { 221, 14, 198, 93, 244, 189, 223, 130, 115, 82, 248, 195, 69, 80, 16, 14, }, { 234, 242, 180, 126, 68, 133, 204, 178, 169, 159, 144, 235, 21, 185, 243, 242, }, { 120, 100, 130, 107, 90, 228, 238, 133, 123, 68, 168, 38, 76, 210, 58, 100, }, { 190, 40, 250, 79, 47, 138, 113, 62, 202, 225, 200, 33, 66, 46, 183, 40, }, { 134, 57, 9, 89, 5, 79, 15, 86, 39, 197, 181, 125, 250, 76, 194, 57, }, { 225, 60, 135, 137, 217, 207, 168, 33, 175, 112, 172, 208, 99, 57, 13, 60, }, { 151, 205, 73, 6, 104, 139, 184, 190, 126, 61, 138, 225, 1, 18, 187, 205, }, { 102, 125, 67, 1, 173, 221, 52, 53, 21, 85, 130, 206, 95, 7, 213, 125, }, { 235, 138, 121, 175, 53, 216, 95, 240, 52, 127, 11, 136, 211, 203, 233, 138, }, { 242, 56, 158, 183, 86, 177, 250, 77, 15, 139, 102, 138, 215, 131, 64, 56, }, { 176, 189, 182, 171, 196, 42, 143, 36, 96, 232, 70, 54, 108, 215, 59, 189, }, { 228, 103, 248, 154, 175, 37, 50, 168, 3, 150, 30, 252, 59, 64, 127, 103, }, { 28, 233, 152, 11, 21, 131, 63, 52, 151, 18, 223, 46, 92, 49, 219, 233, }, { 202, 41, 109, 161, 124, 116, 132, 37, 226, 175, 27, 214, 111, 225, 53, 41, }, { 210, 227, 71, 104, 110, 64, 178, 218, 68, 187, 237, 183, 173, 219, 134, 227, }, { 160, 49, 59, 37, 216, 179, 171, 142, 164, 240, 226, 201, 81, 251, 88, 49, }, { 30, 25, 193, 106, 247, 57, 218, 176, 110, 17, 42, 232, 19, 213, 239, 25, }, { 159, 139, 238, 65, 102, 38, 170, 235, 28, 49, 216, 127, 254, 4, 107, 139, }, { 86, 42, 23, 80, 137, 181, 88, 8, 154, 125, 173, 12, 24, 115, 112, 42, }, { 171, 255, 8, 210, 69, 249, 207, 29, 162, 31, 222, 242, 39, 123, 166, 255, }, { 201, 161, 249, 17, 239, 147, 242, 227, 134, 76, 117, 115, 230, 119, 27, 161, }, { 105, 144, 194, 52, 55, 32, 89, 109, 34, 188, 151, 186, 183, 140, 67, 144, }, { 145, 30, 162, 165, 141, 134, 84, 241, 182, 56, 86, 104, 208, 253, 231, 30, }, { 114, 210, 124, 77, 182, 243, 25, 84, 224, 75, 15, 126, 252, 32, 222, 210, }, { 83, 113, 104, 67, 255, 95, 194, 129, 54, 155, 31, 32, 64, 10, 2, 113, }, { 23, 39, 171, 252, 136, 201, 91, 167, 145, 253, 227, 21, 42, 177, 37, 39, }, { 79, 152, 240, 72, 234, 220, 253, 181, 161, 137, 192, 14, 28, 59, 217, 152, }, { 88, 191, 91, 180, 98, 21, 166, 18, 48, 116, 35, 27, 54, 138, 252, 191, }, { 2, 240, 89, 97, 226, 186, 229, 132, 249, 3, 245, 198, 79, 228, 52, 240, }, { 101, 245, 215, 177, 62, 58, 66, 243, 113, 182, 236, 107, 214, 145, 251, 245, }, { 112, 34, 37, 44, 84, 73, 252, 208, 25, 72, 250, 184, 179, 196, 234, 34, }, { 63, 186, 213, 100, 190, 149, 1, 101, 184, 193, 58, 182, 175, 255, 51, 186, }, { 51, 223, 192, 225, 183, 143, 26, 251, 235, 203, 65, 103, 206, 226, 139, 223, }, { 40, 157, 126, 152, 54, 92, 90, 194, 41, 60, 217, 163, 133, 78, 22, 157, }, { 197, 196, 236, 148, 230, 137, 233, 125, 213, 70, 14, 162, 135, 106, 163, 196, }, { 204, 250, 134, 2, 153, 121, 104, 106, 42, 170, 199, 95, 190, 14, 105, 250, }, { 173, 44, 227, 113, 160, 244, 35, 82, 106, 26, 2, 123, 246, 148, 250, 44, }, { 52, 116, 230, 147, 35, 223, 101, 246, 190, 46, 6, 141, 217, 127, 205, 116, }, { 149, 61, 16, 103, 138, 49, 93, 58, 135, 62, 127, 39, 78, 246, 143, 61, }, { 131, 98, 118, 74, 115, 165, 149, 223, 139, 35, 7, 81, 162, 53, 176, 98, }, }, { { 55, 249, 105, 27, 113, 24, 97, 205, 105, 25, 84, 214, 175, 203, 55, 82, }, { 147, 139, 3, 248, 216, 219, 74, 59, 3, 123, 90, 195, 82, 125, 147, 28, }, { 219, 69, 99, 78, 228, 135, 30, 87, 99, 192, 75, 25, 128, 6, 219, 26, }, { 56, 251, 32, 211, 20, 52, 141, 36, 32, 105, 15, 247, 78, 41, 56, 2, }, { 127, 55, 9, 173, 77, 68, 53, 161, 9, 162, 69, 12, 125, 176, 127, 84, }, { 182, 160, 114, 47, 166, 212, 62, 237, 114, 60, 155, 194, 40, 216, 182, 174, }, { 160, 129, 173, 150, 234, 71, 144, 240, 173, 8, 174, 102, 177, 145, 160, 207, }, { 183, 236, 51, 163, 198, 245, 96, 13, 51, 199, 179, 174, 59, 161, 183, 31, }, { 184, 238, 122, 107, 163, 217, 140, 228, 122, 183, 232, 143, 218, 67, 184, 79, }, { 197, 65, 241, 29, 46, 223, 5, 70, 241, 32, 253, 91, 129, 1, 197, 186, }, { 204, 40, 253, 123, 200, 53, 238, 170, 253, 15, 86, 209, 10, 54, 204, 202, }, { 84, 82, 112, 62, 54, 70, 243, 126, 112, 110, 247, 64, 245, 142, 84, 7, }, { 4, 243, 199, 117, 67, 132, 187, 6, 199, 106, 160, 115, 76, 39, 4, 129, }, { 177, 135, 118, 13, 69, 51, 103, 8, 118, 152, 67, 5, 81, 116, 177, 63, }, { 19, 158, 89, 64, 111, 54, 75, 251, 89, 165, 189, 187, 198, 23, 19, 81, }, { 178, 83, 181, 90, 229, 80, 133, 235, 181, 86, 59, 177, 100, 255, 178, 47, }, { 28, 156, 16, 136, 10, 26, 167, 18, 16, 213, 230, 154, 39, 245, 28, 1, }, { 168, 164, 224, 124, 108, 140, 37, 252, 224, 220, 45, 128, 41, 223, 168, 14, }, { 2, 152, 130, 219, 192, 66, 188, 3, 130, 53, 80, 216, 38, 242, 2, 161, }, { 32, 148, 247, 46, 93, 170, 145, 48, 247, 214, 73, 30, 37, 251, 32, 130, }, { 245, 159, 156, 36, 188, 32, 61, 110, 156, 157, 113, 74, 87, 102, 245, 121, }, { 69, 84, 171, 165, 153, 50, 4, 134, 171, 254, 26, 35, 21, 107, 69, 247, }, { 59, 47, 227, 132, 180, 87, 111, 199, 227, 167, 119, 67, 123, 162, 59, 18, }, { 63, 220, 36, 241, 247, 211, 212, 193, 36, 205, 215, 48, 55, 133, 63, 147, }, { 195, 42, 180, 179, 173, 25, 2, 67, 180, 127, 13, 240, 235, 212, 195, 154, }, { 47, 150, 190, 230, 56, 134, 125, 217, 190, 166, 18, 63, 196, 25, 47, 210, }, { 118, 94, 5, 203, 171, 174, 222, 77, 5, 141, 238, 134, 246, 135, 118, 36, }, { 75, 26, 163, 225, 156, 63, 182, 143, 163, 117, 105, 110, 231, 240, 75, 22, }, { 95, 163, 254, 131, 16, 238, 164, 145, 254, 116, 12, 18, 88, 75, 95, 214, }, { 151, 120, 196, 141, 155, 95, 241, 61, 196, 17, 250, 176, 30, 90, 151, 157, }, { 22, 33, 223, 185, 76, 147, 174, 29, 223, 52, 53, 164, 153, 73, 22, 97, }, { 162, 25, 47, 77, 42, 5, 44, 243, 47, 61, 254, 190, 151, 99, 162, 110, }, { 80, 161, 183, 75, 117, 194, 72, 120, 183, 4, 87, 51, 185, 169, 80, 134, }, { 106, 194, 21, 67, 161, 180, 121, 95, 21, 88, 8, 28, 209, 114, 106, 37, }, { 12, 214, 138, 159, 197, 79, 14, 10, 138, 190, 35, 149, 212, 105, 12, 64, }, { 113, 121, 1, 233, 72, 73, 135, 168, 1, 41, 54, 65, 143, 43, 113, 181, }, { 166, 234, 232, 56, 105, 129, 151, 245, 232, 87, 94, 205, 219, 68, 166, 239, }, { 138, 168, 149, 137, 241, 100, 8, 207, 149, 63, 52, 70, 42, 214, 138, 45, }, { 231, 77, 132, 232, 179, 55, 40, 117, 132, 195, 228, 157, 130, 8, 231, 153, }, { 236, 188, 10, 85, 149, 159, 127, 154, 10, 217, 31, 207, 47, 205, 236, 72, }, { 81, 237, 246, 199, 21, 227, 22, 152, 246, 255, 127, 95, 170, 208, 81, 55, }, { 121, 92, 76, 3, 206, 130, 50, 164, 76, 253, 181, 167, 23, 101, 121, 116, }, { 225, 38, 193, 70, 48, 241, 47, 112, 193, 156, 20, 54, 232, 221, 225, 185, }, { 27, 187, 20, 170, 233, 253, 254, 247, 20, 113, 62, 93, 94, 89, 27, 144, }, { 159, 93, 137, 103, 29, 148, 68, 49, 137, 197, 121, 86, 134, 20, 159, 92, }, { 116, 198, 135, 16, 107, 236, 98, 78, 135, 184, 190, 94, 208, 117, 116, 133, }, { 248, 5, 87, 55, 25, 78, 109, 132, 87, 216, 122, 179, 144, 118, 248, 136, }, { 90, 28, 120, 122, 51, 75, 65, 119, 120, 229, 132, 13, 7, 21, 90, 230, }, { 103, 88, 222, 80, 4, 218, 41, 181, 222, 29, 3, 229, 22, 98, 103, 212, }, { 54, 181, 40, 151, 17, 57, 63, 45, 40, 226, 124, 186, 188, 178, 54, 227, }, { 232, 79, 205, 32, 214, 27, 196, 156, 205, 179, 191, 188, 99, 234, 232, 201, }, { 96, 127, 218, 114, 231, 61, 112, 80, 218, 185, 219, 34, 111, 206, 96, 69, }, { 210, 44, 111, 40, 2, 109, 245, 187, 111, 239, 224, 147, 11, 49, 210, 106, }, { 165, 62, 43, 111, 201, 226, 117, 22, 43, 153, 38, 121, 238, 207, 165, 255, }, { 140, 195, 208, 39, 114, 162, 15, 202, 208, 96, 196, 237, 64, 3, 140, 13, }, { 189, 81, 252, 146, 128, 124, 105, 2, 252, 38, 96, 144, 133, 29, 189, 127, }, { 251, 209, 148, 96, 185, 45, 143, 103, 148, 22, 2, 7, 165, 253, 251, 152, }, { 186, 118, 248, 176, 99, 155, 48, 231, 248, 130, 184, 87, 252, 177, 186, 238, }, { 15, 2, 73, 200, 101, 44, 236, 233, 73, 112, 91, 33, 225, 226, 15, 80, }, { 79, 233, 100, 148, 223, 187, 13, 137, 100, 31, 201, 29, 171, 215, 79, 151, }, { 142, 91, 82, 252, 178, 224, 179, 201, 82, 85, 148, 53, 102, 241, 142, 172, }, { 137, 124, 86, 222, 81, 7, 234, 44, 86, 241, 76, 242, 31, 93, 137, 61, }, { 6, 107, 69, 174, 131, 198, 7, 5, 69, 95, 240, 171, 106, 213, 6, 32, }, { 229, 213, 6, 51, 115, 117, 148, 118, 6, 246, 180, 69, 164, 250, 229, 56, }, { 244, 211, 221, 168, 220, 1, 99, 142, 221, 102, 89, 38, 68, 31, 244, 200, }, { 199, 217, 115, 198, 238, 157, 185, 69, 115, 21, 173, 131, 167, 243, 199, 27, }, { 173, 27, 102, 133, 79, 41, 192, 26, 102, 77, 165, 159, 118, 129, 173, 62, }, { 203, 15, 249, 89, 43, 210, 183, 79, 249, 171, 142, 22, 115, 154, 203, 91, }, { 128, 21, 90, 184, 183, 237, 1, 192, 90, 222, 231, 120, 148, 106, 128, 77, }, { 240, 32, 26, 221, 159, 133, 216, 136, 26, 12, 249, 85, 8, 56, 240, 73, }, { 213, 11, 107, 10, 225, 138, 172, 94, 107, 75, 56, 84, 114, 157, 213, 251, }, { 7, 39, 4, 34, 227, 231, 89, 229, 4, 164, 216, 199, 121, 172, 7, 145, }, { 234, 215, 79, 251, 22, 89, 120, 159, 79, 134, 239, 100, 69, 24, 234, 104, }, { 86, 202, 242, 229, 246, 4, 79, 125, 242, 91, 167, 152, 211, 124, 86, 166, }, { 77, 113, 230, 79, 31, 249, 177, 138, 230, 42, 153, 197, 141, 37, 77, 54, }, { 85, 30, 49, 178, 86, 103, 173, 158, 49, 149, 223, 44, 230, 247, 85, 182, }, { 67, 63, 238, 11, 26, 244, 3, 131, 238, 161, 234, 136, 127, 190, 67, 215, }, { 26, 247, 85, 38, 137, 220, 160, 23, 85, 138, 22, 49, 77, 32, 26, 33, }, { 11, 241, 142, 189, 38, 168, 87, 239, 142, 26, 251, 82, 173, 197, 11, 209, }, { 227, 190, 67, 157, 240, 179, 147, 115, 67, 169, 68, 238, 206, 47, 227, 24, }, { 150, 52, 133, 1, 251, 126, 175, 221, 133, 234, 210, 220, 13, 35, 150, 44, }, { 39, 179, 243, 12, 190, 77, 200, 213, 243, 114, 145, 217, 92, 87, 39, 19, }, { 221, 46, 38, 224, 103, 65, 25, 82, 38, 159, 187, 178, 234, 211, 221, 58, }, { 68, 24, 234, 41, 249, 19, 90, 102, 234, 5, 50, 79, 6, 18, 68, 70, }, { 38, 255, 178, 128, 222, 108, 150, 53, 178, 137, 185, 181, 79, 46, 38, 162, }, { 53, 97, 235, 192, 177, 90, 221, 206, 235, 44, 4, 14, 137, 57, 53, 243, }, { 220, 98, 103, 108, 7, 96, 71, 178, 103, 100, 147, 222, 249, 170, 220, 139, }, { 164, 114, 106, 227, 169, 195, 43, 246, 106, 98, 14, 21, 253, 182, 164, 78, }, { 88, 132, 250, 161, 243, 9, 253, 116, 250, 208, 212, 213, 33, 231, 88, 71, }, { 207, 252, 62, 44, 104, 86, 12, 73, 62, 193, 46, 101, 63, 189, 207, 218, }, { 208, 180, 237, 243, 194, 47, 73, 184, 237, 218, 176, 75, 45, 195, 208, 203, }, { 124, 227, 202, 250, 237, 39, 215, 66, 202, 108, 61, 184, 72, 59, 124, 68, }, { 92, 119, 61, 212, 176, 141, 70, 114, 61, 186, 116, 166, 109, 192, 92, 198, }, { 126, 123, 72, 33, 45, 101, 107, 65, 72, 89, 109, 96, 110, 201, 126, 229, }, { 254, 110, 18, 153, 154, 136, 106, 129, 18, 135, 138, 24, 250, 163, 254, 168, }, { 170, 60, 98, 167, 172, 206, 153, 255, 98, 233, 125, 88, 15, 45, 170, 175, }, { 43, 101, 121, 147, 123, 2, 198, 223, 121, 204, 178, 76, 136, 62, 43, 83, }, { 201, 151, 123, 130, 235, 144, 11, 76, 123, 158, 222, 206, 85, 104, 201, 250, }, { 146, 199, 66, 116, 184, 250, 20, 219, 66, 128, 114, 175, 65, 4, 146, 173, }, { 202, 67, 184, 213, 75, 243, 233, 175, 184, 80, 166, 122, 96, 227, 202, 234, }, { 76, 61, 167, 195, 127, 216, 239, 106, 167, 209, 177, 169, 158, 92, 76, 135, }, { 157, 197, 11, 188, 221, 214, 248, 50, 11, 240, 41, 142, 160, 230, 157, 253, }, { 167, 166, 169, 180, 9, 160, 201, 21, 169, 172, 118, 161, 200, 61, 167, 94, }, { 89, 200, 187, 45, 147, 40, 163, 148, 187, 43, 252, 185, 50, 158, 89, 246, }, { 158, 17, 200, 235, 125, 181, 26, 209, 200, 62, 81, 58, 149, 109, 158, 237, }, { 29, 208, 81, 4, 106, 59, 249, 242, 81, 46, 206, 246, 52, 140, 29, 176, }, { 1, 76, 65, 140, 96, 33, 94, 224, 65, 251, 40, 108, 19, 121, 1, 177, }, { 194, 102, 245, 63, 205, 56, 92, 163, 245, 132, 37, 156, 248, 173, 194, 43, }, { 40, 177, 186, 196, 219, 97, 36, 60, 186, 2, 202, 248, 189, 181, 40, 67, }, { 180, 56, 240, 244, 102, 150, 130, 238, 240, 9, 203, 26, 14, 42, 180, 15, }, { 25, 35, 150, 113, 41, 191, 66, 244, 150, 68, 110, 133, 120, 171, 25, 49, }, { 133, 170, 220, 65, 148, 72, 228, 38, 220, 79, 111, 103, 203, 52, 133, 125, }, { 60, 8, 231, 166, 87, 176, 54, 34, 231, 3, 175, 132, 2, 14, 60, 131, }, { 64, 235, 45, 92, 186, 151, 225, 96, 45, 111, 146, 60, 74, 53, 64, 199, }, { 30, 4, 146, 83, 202, 88, 27, 17, 146, 224, 182, 66, 1, 7, 30, 160, }, { 149, 224, 70, 86, 91, 29, 77, 62, 70, 36, 170, 104, 56, 168, 149, 60, }, { 171, 112, 35, 43, 204, 239, 199, 31, 35, 18, 85, 52, 28, 84, 171, 30, }, { 179, 31, 244, 214, 133, 113, 219, 11, 244, 173, 19, 221, 119, 134, 179, 158, }, { 235, 155, 14, 119, 118, 120, 38, 127, 14, 125, 199, 8, 86, 97, 235, 217, }, { 250, 157, 213, 236, 217, 12, 209, 135, 213, 237, 42, 107, 182, 132, 250, 41, }, { 42, 41, 56, 31, 27, 35, 152, 63, 56, 55, 154, 32, 155, 71, 42, 226, }, { 172, 87, 39, 9, 47, 8, 158, 250, 39, 182, 141, 243, 101, 248, 172, 143, }, { 45, 14, 60, 61, 248, 196, 193, 218, 60, 147, 66, 231, 226, 235, 45, 115, }, { 37, 43, 113, 215, 126, 15, 116, 214, 113, 71, 193, 1, 122, 165, 37, 178, }, { 74, 86, 226, 109, 252, 30, 232, 111, 226, 142, 65, 2, 244, 137, 74, 167, }, { 176, 203, 55, 129, 37, 18, 57, 232, 55, 99, 107, 105, 66, 13, 176, 142, }, { 65, 167, 108, 208, 218, 182, 191, 128, 108, 148, 186, 80, 89, 76, 65, 118, }, { 48, 222, 109, 57, 146, 255, 56, 40, 109, 189, 140, 17, 214, 103, 48, 195, }, { 51, 10, 174, 110, 50, 156, 218, 203, 174, 115, 244, 165, 227, 236, 51, 211, }, { 101, 192, 92, 139, 196, 152, 149, 182, 92, 40, 83, 61, 48, 144, 101, 117, }, { 139, 228, 212, 5, 145, 69, 86, 47, 212, 196, 28, 42, 57, 175, 139, 156, }, { 239, 104, 201, 2, 53, 252, 157, 121, 201, 23, 103, 123, 26, 70, 239, 88, }, { 9, 105, 12, 102, 230, 234, 235, 236, 12, 47, 171, 138, 139, 55, 9, 112, }, { 155, 174, 78, 18, 94, 16, 255, 55, 78, 175, 217, 37, 202, 51, 155, 221, }, { 111, 125, 147, 186, 130, 17, 156, 185, 147, 201, 128, 3, 142, 44, 111, 21, }, { 132, 230, 157, 205, 244, 105, 186, 198, 157, 180, 71, 11, 216, 77, 132, 204, }, { 21, 245, 28, 238, 236, 240, 76, 254, 28, 250, 77, 16, 172, 194, 21, 113, }, { 117, 138, 198, 156, 11, 205, 60, 174, 198, 67, 150, 50, 195, 12, 117, 52, }, { 97, 51, 155, 254, 135, 28, 46, 176, 155, 66, 243, 78, 124, 183, 97, 244, }, { 249, 73, 22, 187, 121, 111, 51, 100, 22, 35, 82, 223, 131, 15, 249, 57, }, { 18, 210, 24, 204, 15, 23, 21, 27, 24, 94, 149, 215, 213, 110, 18, 224, }, { 112, 53, 64, 101, 40, 104, 217, 72, 64, 210, 30, 45, 156, 82, 112, 4, }, { 163, 85, 110, 193, 74, 36, 114, 19, 110, 198, 214, 210, 132, 26, 163, 223, }, { 156, 137, 74, 48, 189, 247, 166, 210, 74, 11, 1, 226, 179, 159, 156, 76, }, { 78, 165, 37, 24, 191, 154, 83, 105, 37, 228, 225, 113, 184, 174, 78, 38, }, { 169, 232, 161, 240, 12, 173, 123, 28, 161, 39, 5, 236, 58, 166, 169, 191, }, { 123, 196, 206, 216, 14, 192, 142, 167, 206, 200, 229, 127, 49, 151, 123, 213, }, { 71, 204, 41, 126, 89, 112, 184, 133, 41, 203, 74, 251, 51, 153, 71, 86, }, { 233, 3, 140, 172, 182, 58, 154, 124, 140, 72, 151, 208, 112, 147, 233, 120, }, { 122, 136, 143, 84, 110, 225, 208, 71, 143, 51, 205, 19, 34, 238, 122, 100, }, { 241, 108, 91, 81, 255, 164, 134, 104, 91, 247, 209, 57, 27, 65, 241, 248, }, { 196, 13, 176, 145, 78, 254, 91, 166, 176, 219, 213, 55, 146, 120, 196, 11, }, { 175, 131, 228, 94, 143, 107, 124, 25, 228, 120, 245, 71, 80, 115, 175, 159, }, { 104, 90, 151, 152, 97, 246, 197, 92, 151, 109, 88, 196, 247, 128, 104, 132, }, { 190, 133, 63, 197, 32, 31, 139, 225, 63, 232, 24, 36, 176, 150, 190, 111, }, { 191, 201, 126, 73, 64, 62, 213, 1, 126, 19, 48, 72, 163, 239, 191, 222, }, { 46, 218, 255, 106, 88, 167, 35, 57, 255, 93, 58, 83, 215, 96, 46, 99, }, { 72, 206, 96, 182, 60, 92, 84, 108, 96, 187, 17, 218, 210, 123, 72, 6, }, { 206, 176, 127, 160, 8, 119, 82, 169, 127, 58, 6, 9, 44, 196, 206, 107, }, { 61, 68, 166, 42, 55, 145, 104, 194, 166, 248, 135, 232, 17, 119, 61, 50, }, { 50, 70, 239, 226, 82, 189, 132, 43, 239, 136, 220, 201, 240, 149, 50, 98, }, { 230, 1, 197, 100, 211, 22, 118, 149, 197, 56, 204, 241, 145, 113, 230, 40, }, { 107, 142, 84, 207, 193, 149, 39, 191, 84, 163, 32, 112, 194, 11, 107, 148, }, { 187, 58, 185, 60, 3, 186, 110, 7, 185, 121, 144, 59, 239, 200, 187, 95, }, { 145, 19, 129, 35, 24, 153, 246, 56, 129, 78, 10, 27, 116, 143, 145, 189, }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, { 131, 193, 153, 239, 23, 142, 227, 35, 153, 16, 159, 204, 161, 225, 131, 93, }, { 224, 106, 128, 202, 80, 208, 113, 144, 128, 103, 60, 90, 251, 164, 224, 8, }, { 130, 141, 216, 99, 119, 175, 189, 195, 216, 235, 183, 160, 178, 152, 130, 236, }, { 215, 147, 233, 209, 33, 200, 16, 93, 233, 126, 104, 140, 84, 111, 215, 90, }, { 242, 184, 152, 6, 95, 199, 100, 139, 152, 57, 169, 141, 46, 202, 242, 232, }, { 205, 100, 188, 247, 168, 20, 176, 74, 188, 244, 126, 189, 25, 79, 205, 123, }, { 120, 16, 13, 143, 174, 163, 108, 68, 13, 6, 157, 203, 4, 28, 120, 197, }, { 192, 254, 119, 228, 13, 122, 224, 160, 119, 177, 117, 68, 222, 95, 192, 138, }, { 99, 171, 25, 37, 71, 94, 146, 179, 25, 119, 163, 150, 90, 69, 99, 85, }, { 135, 50, 94, 154, 84, 10, 88, 37, 94, 122, 63, 191, 237, 198, 135, 220, }, { 252, 246, 144, 66, 90, 202, 214, 130, 144, 178, 218, 192, 220, 81, 252, 9, }, { 148, 172, 7, 218, 59, 60, 19, 222, 7, 223, 130, 4, 43, 209, 148, 141, }, { 8, 37, 77, 234, 134, 203, 181, 12, 77, 212, 131, 230, 152, 78, 8, 193, }, { 129, 89, 27, 52, 215, 204, 95, 32, 27, 37, 207, 20, 135, 19, 129, 252, }, { 23, 109, 158, 53, 44, 178, 240, 253, 158, 207, 29, 200, 138, 48, 23, 208, }, { 98, 231, 88, 169, 39, 127, 204, 83, 88, 140, 139, 250, 73, 60, 98, 228, }, { 216, 145, 160, 25, 68, 228, 252, 180, 160, 14, 51, 173, 181, 141, 216, 10, }, { 49, 146, 44, 181, 242, 222, 102, 200, 44, 70, 164, 125, 197, 30, 49, 114, }, { 16, 74, 154, 23, 207, 85, 169, 24, 154, 107, 197, 15, 243, 156, 16, 65, }, { 33, 216, 182, 162, 61, 139, 207, 208, 182, 45, 97, 114, 54, 130, 33, 51, }, { 218, 9, 34, 194, 132, 166, 64, 183, 34, 59, 99, 117, 147, 127, 218, 171, }, { 102, 20, 159, 220, 100, 251, 119, 85, 159, 230, 43, 137, 5, 27, 102, 101, }, { 57, 183, 97, 95, 116, 21, 211, 196, 97, 146, 39, 155, 93, 80, 57, 179, }, { 253, 186, 209, 206, 58, 235, 136, 98, 209, 73, 242, 172, 207, 40, 253, 184, }, { 14, 78, 8, 68, 5, 13, 178, 9, 8, 139, 115, 77, 242, 155, 14, 225, }, { 110, 49, 210, 54, 226, 48, 194, 89, 210, 50, 168, 111, 157, 85, 110, 164, }, { 143, 23, 19, 112, 210, 193, 237, 41, 19, 174, 188, 89, 117, 136, 143, 29, }, { 153, 54, 204, 201, 158, 82, 67, 52, 204, 154, 137, 253, 236, 193, 153, 124, }, { 109, 229, 17, 97, 66, 83, 32, 186, 17, 252, 208, 219, 168, 222, 109, 180, }, { 243, 244, 217, 138, 63, 230, 58, 107, 217, 194, 129, 225, 61, 179, 243, 89, }, { 222, 250, 229, 183, 199, 34, 251, 177, 229, 81, 195, 6, 223, 88, 222, 42, }, { 136, 48, 23, 82, 49, 38, 180, 204, 23, 10, 100, 158, 12, 36, 136, 140, }, { 13, 154, 203, 19, 165, 110, 80, 234, 203, 69, 11, 249, 199, 16, 13, 241, }, { 141, 143, 145, 171, 18, 131, 81, 42, 145, 155, 236, 129, 83, 122, 141, 188, }, { 212, 71, 42, 134, 129, 171, 242, 190, 42, 176, 16, 56, 97, 228, 212, 74, }, { 91, 80, 57, 246, 83, 106, 31, 151, 57, 30, 172, 97, 20, 108, 91, 87, }, { 209, 248, 172, 127, 162, 14, 23, 88, 172, 33, 152, 39, 62, 186, 209, 122, }, { 93, 59, 124, 88, 208, 172, 24, 146, 124, 65, 92, 202, 126, 185, 93, 119, }, { 3, 212, 195, 87, 160, 99, 226, 227, 195, 206, 120, 180, 53, 139, 3, 16, }, { 200, 219, 58, 14, 139, 177, 85, 172, 58, 101, 246, 162, 70, 17, 200, 75, }, { 193, 178, 54, 104, 109, 91, 190, 64, 54, 74, 93, 40, 205, 38, 193, 59, }, { 119, 18, 68, 71, 203, 143, 128, 173, 68, 118, 198, 234, 229, 254, 119, 149, }, { 58, 99, 162, 8, 212, 118, 49, 39, 162, 92, 95, 47, 104, 219, 58, 163, }, { 246, 75, 95, 115, 28, 67, 223, 141, 95, 83, 9, 254, 98, 237, 246, 105, }, { 185, 162, 59, 231, 195, 248, 210, 4, 59, 76, 192, 227, 201, 58, 185, 254, }, { 161, 205, 236, 26, 138, 102, 206, 16, 236, 243, 134, 10, 162, 232, 161, 126, }, { 198, 149, 50, 74, 142, 188, 231, 165, 50, 238, 133, 239, 180, 138, 198, 170, }, { 125, 175, 139, 118, 141, 6, 137, 162, 139, 151, 21, 212, 91, 66, 125, 245, }, { 36, 103, 48, 91, 30, 46, 42, 54, 48, 188, 233, 109, 105, 220, 36, 3, }, { 223, 182, 164, 59, 167, 3, 165, 81, 164, 170, 235, 106, 204, 33, 223, 155, }, { 100, 140, 29, 7, 164, 185, 203, 86, 29, 211, 123, 81, 35, 233, 100, 196, }, { 35, 64, 52, 121, 253, 201, 115, 211, 52, 24, 49, 170, 16, 112, 35, 146, }, { 115, 225, 131, 50, 136, 11, 59, 171, 131, 28, 102, 153, 169, 217, 115, 20, }, { 105, 22, 214, 20, 1, 215, 155, 188, 214, 150, 112, 168, 228, 249, 105, 53, }, { 24, 111, 215, 253, 73, 158, 28, 20, 215, 191, 70, 233, 107, 210, 24, 128, }, { 188, 29, 189, 30, 224, 93, 55, 226, 189, 221, 72, 252, 150, 100, 188, 206, }, { 66, 115, 175, 135, 122, 213, 93, 99, 175, 90, 194, 228, 108, 199, 66, 102, }, { 31, 72, 211, 223, 170, 121, 69, 241, 211, 27, 158, 46, 18, 126, 31, 17, }, { 152, 122, 141, 69, 254, 115, 29, 212, 141, 97, 161, 145, 255, 184, 152, 205, }, { 83, 117, 116, 28, 213, 161, 170, 155, 116, 202, 47, 135, 140, 34, 83, 150, }, { 228, 153, 71, 191, 19, 84, 202, 150, 71, 13, 156, 41, 183, 131, 228, 137, }, { 174, 207, 165, 210, 239, 74, 34, 249, 165, 131, 221, 43, 67, 10, 174, 46, }, { 217, 221, 225, 149, 36, 197, 162, 84, 225, 245, 27, 193, 166, 244, 217, 187, }, { 34, 12, 117, 245, 157, 232, 45, 51, 117, 227, 25, 198, 3, 9, 34, 35, }, { 82, 57, 53, 144, 181, 128, 244, 123, 53, 49, 7, 235, 159, 91, 82, 39, }, { 5, 191, 134, 249, 35, 165, 229, 230, 134, 145, 136, 31, 95, 94, 5, 48, }, { 108, 169, 80, 237, 34, 114, 126, 90, 80, 7, 248, 183, 187, 167, 108, 5, }, { 211, 96, 46, 164, 98, 76, 171, 91, 46, 20, 200, 255, 24, 72, 211, 219, }, { 255, 34, 83, 21, 250, 169, 52, 97, 83, 124, 162, 116, 233, 218, 255, 25, }, { 154, 226, 15, 158, 62, 49, 161, 215, 15, 84, 241, 73, 217, 74, 154, 108, }, { 44, 66, 125, 177, 152, 229, 159, 58, 125, 104, 106, 139, 241, 146, 44, 194, }, { 41, 253, 251, 72, 187, 64, 122, 220, 251, 249, 226, 148, 174, 204, 41, 242, }, { 94, 239, 191, 15, 112, 207, 250, 113, 191, 143, 36, 126, 75, 50, 94, 103, }, { 87, 134, 179, 105, 150, 37, 17, 157, 179, 160, 143, 244, 192, 5, 87, 23, }, { 237, 240, 75, 217, 245, 190, 33, 122, 75, 34, 55, 163, 60, 180, 237, 249, }, { 70, 128, 104, 242, 57, 81, 230, 101, 104, 48, 98, 151, 32, 224, 70, 231, }, { 52, 45, 170, 76, 209, 123, 131, 46, 170, 215, 44, 98, 154, 64, 52, 66, }, { 114, 173, 194, 190, 232, 42, 101, 75, 194, 231, 78, 245, 186, 160, 114, 165, }, { 181, 116, 177, 120, 6, 183, 220, 14, 177, 242, 227, 118, 29, 83, 181, 190, }, { 17, 6, 219, 155, 175, 116, 247, 248, 219, 144, 237, 99, 224, 229, 17, 240, }, { 226, 242, 2, 17, 144, 146, 205, 147, 2, 82, 108, 130, 221, 86, 226, 169, }, { 214, 223, 168, 93, 65, 233, 78, 189, 168, 133, 64, 224, 71, 22, 214, 235, }, { 238, 36, 136, 142, 85, 221, 195, 153, 136, 236, 79, 23, 9, 63, 238, 233, }, { 144, 95, 192, 175, 120, 184, 168, 216, 192, 181, 34, 119, 103, 246, 144, 12, }, { 20, 185, 93, 98, 140, 209, 18, 30, 93, 1, 101, 124, 191, 187, 20, 192, }, { 62, 144, 101, 125, 151, 242, 138, 33, 101, 54, 255, 92, 36, 252, 62, 34, }, { 134, 126, 31, 22, 52, 43, 6, 197, 31, 129, 23, 211, 254, 191, 134, 109, }, { 73, 130, 33, 58, 92, 125, 10, 140, 33, 64, 57, 182, 193, 2, 73, 183, }, { 247, 7, 30, 255, 124, 98, 129, 109, 30, 168, 33, 146, 113, 148, 247, 216, }, { 10, 189, 207, 49, 70, 137, 9, 15, 207, 225, 211, 62, 190, 188, 10, 96, }, }, { { 168, 120, 65, 154, 99, 154, 170, 204, 109, 107, 182, 45, 191, 99, 142, 27, }, { 180, 49, 173, 66, 201, 66, 55, 155, 198, 128, 41, 203, 192, 201, 21, 248, }, { 150, 222, 41, 213, 144, 213, 24, 16, 188, 237, 64, 210, 122, 144, 240, 78, }, { 30, 228, 124, 204, 55, 204, 164, 121, 151, 154, 39, 182, 215, 55, 226, 211, }, { 138, 151, 197, 13, 58, 13, 133, 71, 23, 6, 223, 52, 5, 58, 107, 173, }, { 245, 2, 205, 141, 45, 141, 230, 5, 84, 97, 20, 113, 176, 45, 51, 47, }, { 159, 152, 100, 143, 14, 143, 1, 191, 82, 51, 185, 121, 203, 14, 10, 150, }, { 165, 167, 239, 232, 4, 232, 193, 63, 251, 87, 252, 38, 157, 4, 134, 163, }, { 19, 59, 210, 190, 80, 190, 207, 138, 1, 166, 109, 189, 245, 80, 234, 107, }, { 57, 37, 83, 121, 56, 121, 4, 185, 139, 204, 161, 39, 170, 56, 40, 29, }, { 172, 225, 162, 178, 154, 178, 216, 144, 21, 137, 5, 141, 44, 154, 124, 123, }, { 45, 157, 186, 241, 163, 241, 125, 86, 208, 32, 155, 66, 48, 163, 148, 62, }, { 131, 209, 136, 87, 164, 87, 156, 232, 249, 216, 38, 159, 180, 164, 145, 117, }, { 134, 255, 35, 117, 242, 117, 19, 163, 159, 227, 201, 23, 115, 242, 190, 13, }, { 185, 238, 3, 48, 174, 48, 92, 104, 80, 188, 99, 192, 226, 174, 29, 64, }, { 118, 211, 69, 218, 137, 218, 122, 237, 173, 185, 50, 238, 4, 137, 162, 90, }, { 15, 114, 62, 102, 250, 102, 82, 221, 170, 77, 242, 91, 138, 250, 113, 136, }, { 90, 249, 183, 33, 133, 33, 250, 172, 99, 64, 245, 132, 96, 133, 235, 124, }, { 160, 137, 68, 202, 82, 202, 78, 116, 157, 108, 19, 174, 90, 82, 169, 219, }, { 146, 71, 202, 253, 105, 253, 106, 76, 196, 15, 243, 114, 233, 105, 2, 46, }, { 226, 160, 252, 27, 132, 27, 91, 211, 45, 37, 202, 108, 214, 132, 43, 36, }, { 52, 250, 253, 11, 95, 11, 111, 74, 29, 240, 235, 44, 136, 95, 32, 165, }, { 238, 200, 26, 99, 76, 99, 205, 55, 165, 192, 220, 79, 160, 76, 254, 132, }, { 109, 25, 146, 52, 232, 52, 81, 223, 92, 24, 250, 208, 20, 232, 111, 241, }, { 26, 125, 159, 228, 206, 228, 214, 37, 239, 120, 148, 22, 68, 206, 16, 179, }, { 36, 219, 247, 171, 61, 171, 100, 249, 62, 254, 98, 233, 129, 61, 110, 230, }, { 31, 83, 52, 198, 152, 198, 89, 110, 137, 67, 123, 158, 131, 152, 63, 203, }, { 210, 195, 226, 56, 34, 56, 70, 197, 72, 55, 146, 224, 205, 34, 249, 225, }, { 24, 208, 15, 240, 83, 240, 239, 11, 211, 9, 44, 70, 236, 83, 105, 131, }, { 55, 224, 37, 21, 109, 21, 171, 115, 63, 88, 15, 84, 116, 109, 132, 141, }, { 106, 154, 169, 2, 35, 2, 231, 186, 6, 82, 173, 8, 123, 35, 57, 185, }, { 63, 17, 32, 69, 92, 69, 79, 203, 207, 95, 170, 215, 145, 92, 163, 77, }, { 174, 76, 50, 166, 7, 166, 225, 190, 41, 248, 189, 221, 132, 7, 5, 75, }, { 16, 33, 10, 160, 98, 160, 11, 179, 35, 14, 137, 197, 9, 98, 78, 67, }, { 70, 176, 91, 249, 47, 249, 103, 251, 200, 171, 106, 98, 31, 47, 112, 159, }, { 108, 174, 218, 62, 71, 62, 172, 200, 66, 193, 166, 248, 64, 71, 178, 233, }, { 188, 192, 168, 18, 248, 18, 211, 35, 54, 135, 140, 72, 37, 248, 50, 56, }, { 104, 55, 57, 22, 190, 22, 222, 148, 58, 35, 21, 88, 211, 190, 64, 137, }, { 11, 235, 221, 78, 3, 78, 32, 129, 210, 175, 65, 251, 25, 3, 131, 232, }, { 62, 166, 104, 79, 243, 79, 178, 220, 209, 134, 246, 255, 197, 243, 126, 85, }, { 254, 233, 16, 195, 46, 195, 198, 132, 134, 206, 85, 138, 169, 46, 176, 199, }, { 169, 207, 9, 144, 204, 144, 87, 219, 115, 178, 234, 5, 235, 204, 83, 3, }, { 40, 179, 17, 211, 245, 211, 242, 29, 182, 27, 116, 202, 247, 245, 187, 70, }, { 124, 143, 208, 158, 37, 158, 167, 123, 97, 207, 47, 61, 73, 37, 252, 170, }, { 242, 129, 246, 187, 230, 187, 80, 96, 14, 43, 67, 169, 223, 230, 101, 103, }, { 191, 218, 112, 12, 202, 12, 23, 26, 20, 47, 104, 48, 217, 202, 150, 16, }, { 244, 181, 133, 135, 130, 135, 27, 18, 74, 184, 72, 89, 228, 130, 238, 55, }, { 203, 164, 165, 194, 222, 194, 84, 217, 133, 231, 226, 142, 117, 222, 77, 122, }, { 6, 52, 115, 60, 100, 60, 75, 114, 68, 147, 11, 240, 59, 100, 139, 80, }, { 248, 221, 99, 255, 74, 255, 141, 246, 194, 93, 94, 122, 146, 74, 59, 151, }, { 189, 119, 224, 24, 87, 24, 46, 52, 40, 94, 208, 96, 113, 87, 239, 32, }, { 117, 201, 157, 196, 187, 196, 190, 212, 143, 17, 214, 150, 248, 187, 6, 114, }, { 3, 26, 216, 30, 50, 30, 196, 57, 34, 168, 228, 120, 252, 50, 164, 40, }, { 76, 236, 206, 189, 131, 189, 186, 109, 4, 221, 119, 177, 82, 131, 46, 111, }, { 75, 111, 245, 139, 72, 139, 12, 8, 94, 151, 32, 105, 61, 72, 120, 39, }, { 192, 79, 120, 140, 221, 140, 116, 88, 87, 72, 163, 117, 108, 221, 206, 146, }, { 4, 153, 227, 40, 249, 40, 114, 92, 120, 226, 179, 160, 147, 249, 242, 96, }, { 179, 178, 150, 116, 2, 116, 129, 254, 156, 202, 126, 19, 175, 2, 67, 176, }, { 182, 156, 61, 86, 84, 86, 14, 181, 250, 241, 145, 155, 104, 84, 108, 200, }, { 81, 18, 106, 111, 134, 111, 218, 45, 177, 239, 180, 127, 121, 134, 104, 148, }, { 235, 230, 177, 65, 26, 65, 66, 124, 195, 251, 51, 199, 103, 26, 209, 252, }, { 152, 27, 95, 185, 197, 185, 183, 218, 8, 121, 238, 161, 164, 197, 92, 222, }, { 35, 88, 204, 157, 246, 157, 210, 156, 100, 180, 53, 49, 238, 246, 56, 174, }, { 171, 98, 153, 132, 81, 132, 110, 245, 79, 195, 82, 85, 67, 81, 42, 51, }, { 178, 5, 222, 126, 173, 126, 124, 233, 130, 19, 34, 59, 251, 173, 158, 168, }, { 153, 172, 23, 179, 106, 179, 74, 205, 22, 160, 178, 137, 240, 106, 129, 198, }, { 137, 141, 29, 19, 8, 19, 65, 126, 53, 174, 59, 76, 249, 8, 207, 133, }, { 223, 28, 76, 74, 69, 74, 45, 54, 222, 11, 216, 235, 239, 69, 241, 89, }, { 13, 223, 174, 114, 103, 114, 107, 243, 150, 60, 74, 11, 34, 103, 8, 184, }, { 49, 212, 86, 41, 9, 41, 224, 1, 123, 203, 4, 164, 79, 9, 15, 221, }, { 112, 231, 54, 230, 237, 230, 49, 159, 233, 42, 57, 30, 63, 237, 41, 10, }, { 115, 253, 238, 248, 223, 248, 245, 166, 203, 130, 221, 102, 195, 223, 141, 34, }, { 29, 254, 164, 210, 5, 210, 96, 64, 181, 50, 195, 206, 43, 5, 70, 251, }, { 141, 20, 254, 59, 241, 59, 51, 34, 77, 76, 136, 236, 106, 241, 61, 229, }, { 241, 155, 46, 165, 212, 165, 148, 89, 44, 131, 167, 209, 35, 212, 193, 79, }, { 125, 56, 152, 148, 138, 148, 90, 108, 127, 22, 115, 21, 29, 138, 33, 178, }, { 23, 162, 49, 150, 169, 150, 189, 214, 121, 68, 222, 29, 102, 169, 24, 11, }, { 44, 42, 242, 251, 12, 251, 128, 65, 206, 249, 199, 106, 100, 12, 73, 38, }, { 53, 77, 181, 1, 240, 1, 146, 93, 3, 41, 183, 4, 220, 240, 253, 189, }, { 136, 58, 85, 25, 167, 25, 188, 105, 43, 119, 103, 100, 173, 167, 18, 157, }, { 103, 69, 7, 112, 68, 112, 140, 73, 144, 110, 231, 3, 89, 68, 49, 1, }, { 225, 186, 36, 5, 182, 5, 159, 234, 15, 141, 46, 20, 42, 182, 143, 12, }, { 181, 134, 229, 72, 102, 72, 202, 140, 216, 89, 117, 227, 148, 102, 200, 224, }, { 100, 95, 223, 110, 118, 110, 72, 112, 178, 198, 3, 123, 165, 118, 149, 41, }, { 177, 31, 6, 96, 159, 96, 184, 208, 160, 187, 198, 67, 7, 159, 58, 128, }, { 8, 241, 5, 80, 49, 80, 228, 184, 240, 7, 165, 131, 229, 49, 39, 192, }, { 229, 35, 199, 45, 79, 45, 237, 182, 119, 111, 157, 180, 185, 79, 125, 108, }, { 28, 73, 236, 216, 170, 216, 157, 87, 171, 235, 159, 230, 127, 170, 155, 227, }, { 107, 45, 225, 8, 140, 8, 26, 173, 24, 139, 241, 32, 47, 140, 228, 161, }, { 92, 205, 196, 29, 225, 29, 177, 222, 39, 211, 254, 116, 91, 225, 96, 44, }, { 163, 147, 156, 212, 96, 212, 138, 77, 191, 196, 247, 214, 166, 96, 13, 243, }, { 122, 187, 163, 162, 65, 162, 236, 9, 37, 92, 36, 205, 114, 65, 119, 250, }, { 232, 252, 105, 95, 40, 95, 134, 69, 225, 83, 215, 191, 155, 40, 117, 212, }, { 218, 50, 231, 104, 19, 104, 162, 125, 184, 48, 55, 99, 40, 19, 222, 33, }, { 215, 237, 73, 26, 116, 26, 201, 142, 46, 12, 125, 104, 10, 116, 214, 153, }, { 250, 112, 243, 235, 215, 235, 180, 216, 254, 44, 230, 42, 58, 215, 66, 167, }, { 167, 10, 127, 252, 153, 252, 248, 17, 199, 38, 68, 118, 53, 153, 255, 147, }, { 127, 149, 8, 128, 23, 128, 99, 66, 67, 103, 203, 69, 181, 23, 88, 130, }, { 228, 148, 143, 39, 224, 39, 16, 161, 105, 182, 193, 156, 237, 224, 160, 116, }, { 143, 185, 110, 47, 108, 47, 10, 12, 113, 61, 48, 188, 194, 108, 68, 213, }, { 161, 62, 12, 192, 253, 192, 179, 99, 131, 181, 79, 134, 14, 253, 116, 195, }, { 82, 8, 178, 113, 180, 113, 30, 20, 147, 71, 80, 7, 133, 180, 204, 188, }, { 236, 101, 138, 119, 209, 119, 244, 25, 153, 177, 100, 31, 8, 209, 135, 180, }, { 59, 136, 195, 109, 165, 109, 61, 151, 183, 189, 25, 119, 2, 165, 81, 45, }, { 162, 36, 212, 222, 207, 222, 119, 90, 161, 29, 171, 254, 242, 207, 208, 235, }, { 95, 215, 28, 3, 211, 3, 117, 231, 5, 123, 26, 12, 167, 211, 196, 4, }, { 80, 165, 34, 101, 41, 101, 39, 58, 175, 54, 232, 87, 45, 41, 181, 140, }, { 74, 216, 189, 129, 231, 129, 241, 31, 64, 78, 124, 65, 105, 231, 165, 63, }, { 87, 38, 25, 83, 226, 83, 145, 95, 245, 124, 191, 143, 66, 226, 227, 196, }, { 85, 139, 137, 71, 127, 71, 168, 113, 201, 13, 7, 223, 234, 127, 154, 244, }, { 220, 6, 148, 84, 119, 84, 233, 15, 252, 163, 60, 147, 19, 119, 85, 113, }, { 222, 171, 4, 64, 234, 64, 208, 33, 192, 210, 132, 195, 187, 234, 44, 65, }, { 157, 53, 244, 155, 147, 155, 56, 145, 110, 66, 1, 41, 99, 147, 115, 166, }, { 231, 142, 87, 57, 210, 57, 212, 152, 75, 30, 37, 228, 17, 210, 4, 92, }, { 175, 251, 122, 172, 168, 172, 28, 169, 55, 33, 225, 245, 208, 168, 216, 83, }, { 151, 105, 97, 223, 63, 223, 229, 7, 162, 52, 28, 250, 46, 63, 45, 86, }, { 170, 213, 209, 142, 254, 142, 147, 226, 81, 26, 14, 125, 23, 254, 247, 43, }, { 38, 118, 103, 191, 160, 191, 93, 215, 2, 143, 218, 185, 41, 160, 23, 214, }, { 77, 91, 134, 183, 44, 183, 71, 122, 26, 4, 43, 153, 6, 44, 243, 119, }, { 84, 60, 193, 77, 208, 77, 85, 102, 215, 212, 91, 247, 190, 208, 71, 236, }, { 247, 175, 93, 153, 176, 153, 223, 43, 104, 16, 172, 33, 24, 176, 74, 31, }, { 217, 40, 63, 118, 33, 118, 102, 68, 154, 152, 211, 27, 212, 33, 122, 9, }, { 132, 82, 179, 97, 111, 97, 42, 141, 163, 146, 113, 71, 219, 111, 199, 61, }, { 65, 51, 96, 207, 228, 207, 209, 158, 146, 225, 61, 186, 112, 228, 38, 215, }, { 130, 102, 192, 93, 11, 93, 97, 255, 231, 1, 122, 183, 224, 11, 76, 109, }, { 214, 90, 1, 16, 219, 16, 52, 153, 48, 213, 33, 64, 94, 219, 11, 129, }, { 183, 43, 117, 92, 251, 92, 243, 162, 228, 40, 205, 179, 60, 251, 177, 208, }, { 219, 133, 175, 98, 188, 98, 95, 106, 166, 233, 107, 75, 124, 188, 3, 57, }, { 43, 169, 201, 205, 199, 205, 54, 36, 148, 179, 144, 178, 11, 199, 31, 110, }, { 166, 189, 55, 246, 54, 246, 5, 6, 217, 255, 24, 94, 97, 54, 34, 139, }, { 56, 146, 27, 115, 151, 115, 249, 174, 149, 21, 253, 15, 254, 151, 245, 5, }, { 206, 138, 14, 224, 136, 224, 219, 146, 227, 220, 13, 6, 178, 136, 98, 2, }, { 149, 196, 241, 203, 162, 203, 220, 41, 158, 69, 164, 170, 134, 162, 84, 102, }, { 113, 80, 126, 236, 66, 236, 204, 136, 247, 243, 101, 54, 107, 66, 244, 18, }, { 195, 85, 160, 146, 239, 146, 176, 97, 117, 224, 71, 13, 144, 239, 106, 186, }, { 142, 14, 38, 37, 195, 37, 247, 27, 111, 228, 108, 148, 150, 195, 153, 205, }, { 154, 182, 207, 173, 88, 173, 142, 244, 52, 8, 86, 241, 12, 88, 37, 238, }, { 239, 127, 82, 105, 227, 105, 48, 32, 187, 25, 128, 103, 244, 227, 35, 156, }, { 37, 108, 191, 161, 146, 161, 153, 238, 32, 39, 62, 193, 213, 146, 179, 254, }, { 164, 16, 167, 226, 171, 226, 60, 40, 229, 142, 160, 14, 201, 171, 91, 187, }, { 233, 75, 33, 85, 135, 85, 123, 82, 255, 138, 139, 151, 207, 135, 168, 204, }, { 60, 11, 248, 91, 110, 91, 139, 242, 237, 247, 78, 175, 109, 110, 7, 101, }, { 111, 180, 2, 32, 117, 32, 104, 241, 96, 105, 66, 128, 188, 117, 22, 193, }, { 2, 173, 144, 20, 157, 20, 57, 46, 60, 113, 184, 80, 168, 157, 121, 48, }, { 1, 183, 72, 10, 175, 10, 253, 23, 30, 217, 92, 40, 84, 175, 221, 24, }, { 10, 92, 149, 68, 172, 68, 221, 150, 204, 118, 29, 211, 77, 172, 94, 240, }, { 9, 70, 77, 90, 158, 90, 25, 175, 238, 222, 249, 171, 177, 158, 250, 216, }, { 148, 115, 185, 193, 13, 193, 33, 62, 128, 156, 248, 130, 210, 13, 137, 126, }, { 237, 210, 194, 125, 126, 125, 9, 14, 135, 104, 56, 55, 92, 126, 90, 172, }, { 89, 227, 111, 63, 183, 63, 62, 149, 65, 232, 17, 252, 156, 183, 79, 84, }, { 97, 113, 116, 76, 32, 76, 199, 59, 212, 253, 236, 243, 98, 32, 186, 81, }, { 105, 128, 113, 28, 17, 28, 35, 131, 36, 250, 73, 112, 135, 17, 157, 145, }, { 41, 4, 89, 217, 90, 217, 15, 10, 168, 194, 40, 226, 163, 90, 102, 94, }, { 176, 168, 78, 106, 48, 106, 69, 199, 190, 98, 154, 107, 83, 48, 231, 152, }, { 48, 99, 30, 35, 166, 35, 29, 22, 101, 18, 88, 140, 27, 166, 210, 197, }, { 96, 198, 60, 70, 143, 70, 58, 44, 202, 36, 176, 219, 54, 143, 103, 73, }, { 116, 126, 213, 206, 20, 206, 67, 195, 145, 200, 138, 190, 172, 20, 219, 106, }, { 34, 239, 132, 151, 89, 151, 47, 139, 122, 109, 105, 25, 186, 89, 229, 182, }, { 12, 104, 230, 120, 200, 120, 150, 228, 136, 229, 22, 35, 118, 200, 213, 160, }, { 205, 144, 214, 254, 186, 254, 31, 171, 193, 116, 233, 126, 78, 186, 198, 42, }, { 123, 12, 235, 168, 238, 168, 17, 30, 59, 133, 120, 229, 38, 238, 170, 226, }, { 91, 78, 255, 43, 42, 43, 7, 187, 125, 153, 169, 172, 52, 42, 54, 100, }, { 64, 132, 40, 197, 75, 197, 44, 137, 140, 56, 97, 146, 36, 75, 251, 207, }, { 227, 23, 180, 17, 43, 17, 166, 196, 51, 252, 150, 68, 130, 43, 246, 60, }, { 20, 184, 233, 136, 155, 136, 121, 239, 91, 236, 58, 101, 154, 155, 188, 35, }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, { 253, 243, 200, 221, 28, 221, 2, 189, 164, 102, 177, 242, 85, 28, 20, 239, }, { 120, 22, 51, 182, 220, 182, 213, 39, 25, 45, 156, 157, 218, 220, 14, 202, }, { 173, 86, 234, 184, 53, 184, 37, 135, 11, 80, 89, 165, 120, 53, 161, 99, }, { 208, 110, 114, 44, 191, 44, 127, 235, 116, 70, 42, 176, 101, 191, 128, 209, }, { 145, 93, 18, 227, 91, 227, 174, 117, 230, 167, 23, 10, 21, 91, 166, 6, }, { 252, 68, 128, 215, 179, 215, 255, 170, 186, 191, 237, 218, 1, 179, 201, 247, }, { 249, 106, 43, 245, 229, 245, 112, 225, 220, 132, 2, 82, 198, 229, 230, 143, }, { 234, 81, 249, 75, 181, 75, 191, 107, 221, 34, 111, 239, 51, 181, 12, 228, }, { 133, 229, 251, 107, 192, 107, 215, 154, 189, 75, 45, 111, 143, 192, 26, 37, }, { 126, 34, 64, 138, 184, 138, 158, 85, 93, 190, 151, 109, 225, 184, 133, 154, }, { 119, 100, 13, 208, 38, 208, 135, 250, 179, 96, 110, 198, 80, 38, 127, 66, }, { 199, 204, 67, 186, 22, 186, 194, 61, 13, 2, 244, 173, 3, 22, 152, 218, }, { 197, 97, 211, 174, 139, 174, 251, 19, 49, 115, 76, 253, 171, 139, 225, 234, }, { 93, 122, 140, 23, 78, 23, 76, 201, 57, 10, 162, 92, 15, 78, 189, 52, }, { 58, 63, 139, 103, 10, 103, 192, 128, 169, 100, 69, 95, 86, 10, 140, 53, }, { 213, 64, 217, 14, 233, 14, 240, 160, 18, 125, 197, 56, 162, 233, 175, 169, }, { 102, 242, 79, 122, 235, 122, 113, 94, 142, 183, 187, 43, 13, 235, 236, 25, }, { 139, 32, 141, 7, 149, 7, 120, 80, 9, 223, 131, 28, 81, 149, 182, 181, }, { 73, 194, 101, 159, 213, 159, 53, 38, 98, 230, 152, 57, 149, 213, 1, 23, }, { 194, 226, 232, 152, 64, 152, 77, 118, 107, 57, 27, 37, 196, 64, 183, 162, }, { 198, 123, 11, 176, 185, 176, 63, 42, 19, 219, 168, 133, 87, 185, 69, 194, }, { 86, 145, 81, 89, 77, 89, 108, 72, 235, 165, 227, 167, 22, 77, 62, 220, }, { 78, 65, 94, 169, 30, 169, 131, 67, 56, 172, 207, 225, 250, 30, 87, 95, }, { 39, 193, 47, 181, 15, 181, 160, 192, 28, 86, 134, 145, 125, 15, 202, 206, }, { 230, 57, 31, 51, 125, 51, 41, 143, 85, 199, 121, 204, 69, 125, 217, 68, }, { 147, 240, 130, 247, 198, 247, 151, 91, 218, 214, 175, 90, 189, 198, 223, 54, }, { 187, 67, 147, 36, 51, 36, 101, 70, 108, 205, 219, 144, 74, 51, 100, 112, }, { 209, 217, 58, 38, 16, 38, 130, 252, 106, 159, 118, 152, 49, 16, 93, 201, }, { 99, 220, 228, 88, 189, 88, 254, 21, 232, 140, 84, 163, 202, 189, 195, 97, }, { 193, 248, 48, 134, 114, 134, 137, 79, 73, 145, 255, 93, 56, 114, 19, 138, }, { 69, 170, 131, 231, 29, 231, 163, 194, 234, 3, 142, 26, 227, 29, 212, 183, }, { 200, 190, 125, 220, 236, 220, 144, 224, 167, 79, 6, 246, 137, 236, 233, 82, }, { 22, 21, 121, 156, 6, 156, 64, 193, 103, 157, 130, 53, 50, 6, 197, 19, }, { 27, 202, 215, 238, 97, 238, 43, 50, 241, 161, 200, 62, 16, 97, 205, 171, }, { 32, 66, 20, 131, 196, 131, 22, 165, 70, 28, 209, 73, 18, 196, 156, 134, }, { 155, 1, 135, 167, 247, 167, 115, 227, 42, 209, 10, 217, 88, 247, 248, 246, }, { 243, 54, 190, 177, 73, 177, 173, 119, 16, 242, 31, 129, 139, 73, 184, 127, }, { 184, 89, 75, 58, 1, 58, 161, 127, 78, 101, 63, 232, 182, 1, 192, 88, }, { 240, 44, 102, 175, 123, 175, 105, 78, 50, 90, 251, 249, 119, 123, 28, 87, }, { 47, 48, 42, 229, 62, 229, 68, 120, 236, 81, 35, 18, 152, 62, 237, 14, }, { 186, 244, 219, 46, 156, 46, 152, 81, 114, 20, 135, 184, 30, 156, 185, 104, }, { 79, 246, 22, 163, 177, 163, 126, 84, 38, 117, 147, 201, 174, 177, 138, 71, }, { 190, 109, 56, 6, 101, 6, 234, 13, 10, 246, 52, 24, 141, 101, 75, 8, }, { 18, 140, 154, 180, 255, 180, 50, 157, 31, 127, 49, 149, 161, 255, 55, 115, }, { 67, 158, 240, 219, 121, 219, 232, 176, 174, 144, 133, 234, 216, 121, 95, 231, }, { 207, 61, 70, 234, 39, 234, 38, 133, 253, 5, 81, 46, 230, 39, 191, 26, }, { 201, 9, 53, 214, 67, 214, 109, 247, 185, 150, 90, 222, 221, 67, 52, 74, }, { 42, 30, 129, 199, 104, 199, 203, 51, 138, 106, 204, 154, 95, 104, 194, 118, }, { 17, 150, 66, 170, 205, 170, 246, 164, 61, 215, 213, 237, 93, 205, 147, 91, }, { 21, 15, 161, 130, 52, 130, 132, 248, 69, 53, 102, 77, 206, 52, 97, 59, }, { 246, 24, 21, 147, 31, 147, 34, 60, 118, 201, 240, 9, 76, 31, 151, 7, }, { 98, 107, 172, 82, 18, 82, 3, 2, 246, 85, 8, 139, 158, 18, 30, 121, }, { 204, 39, 158, 244, 21, 244, 226, 188, 223, 173, 181, 86, 26, 21, 27, 50, }, { 224, 13, 108, 15, 25, 15, 98, 253, 17, 84, 114, 60, 126, 25, 82, 20, }, { 140, 163, 182, 49, 94, 49, 206, 53, 83, 149, 212, 196, 62, 94, 224, 253, }, { 144, 234, 90, 233, 244, 233, 83, 98, 248, 126, 75, 34, 65, 244, 123, 30, }, { 71, 7, 19, 243, 128, 243, 154, 236, 214, 114, 54, 74, 75, 128, 173, 135, }, { 255, 94, 88, 201, 129, 201, 59, 147, 152, 23, 9, 162, 253, 129, 109, 223, }, { 129, 124, 24, 67, 57, 67, 165, 198, 197, 169, 158, 207, 28, 57, 232, 69, }, { 94, 96, 84, 9, 124, 9, 136, 240, 27, 162, 70, 36, 243, 124, 25, 28, }, { 251, 199, 187, 225, 120, 225, 73, 207, 224, 245, 186, 2, 110, 120, 159, 191, }, { 121, 161, 123, 188, 115, 188, 40, 48, 7, 244, 192, 181, 142, 115, 211, 210, }, { 54, 87, 109, 31, 194, 31, 86, 100, 33, 129, 83, 124, 32, 194, 89, 149, }, { 50, 206, 142, 55, 59, 55, 36, 56, 89, 99, 224, 220, 179, 59, 171, 245, }, { 14, 197, 118, 108, 85, 108, 175, 202, 180, 148, 174, 115, 222, 85, 172, 144, }, { 211, 116, 170, 50, 141, 50, 187, 210, 86, 238, 206, 200, 153, 141, 36, 249, }, { 51, 121, 198, 61, 148, 61, 217, 47, 71, 186, 188, 244, 231, 148, 118, 237, }, { 83, 191, 250, 123, 27, 123, 227, 3, 141, 158, 12, 47, 209, 27, 17, 164, }, { 135, 72, 107, 127, 93, 127, 238, 180, 129, 58, 149, 63, 39, 93, 99, 21, }, { 33, 245, 92, 137, 107, 137, 235, 178, 88, 197, 141, 97, 70, 107, 65, 158, }, { 212, 247, 145, 4, 70, 4, 13, 183, 12, 164, 153, 16, 246, 70, 114, 177, }, { 7, 131, 59, 54, 203, 54, 182, 101, 90, 74, 87, 216, 111, 203, 86, 72, }, { 72, 117, 45, 149, 122, 149, 200, 49, 124, 63, 196, 17, 193, 122, 220, 15, }, { 221, 177, 220, 94, 216, 94, 20, 24, 226, 122, 96, 187, 71, 216, 136, 105, }, { 110, 3, 74, 42, 218, 42, 149, 230, 126, 176, 30, 168, 232, 218, 203, 217, }, { 196, 214, 155, 164, 36, 164, 6, 4, 47, 170, 16, 213, 255, 36, 60, 242, }, { 88, 84, 39, 53, 24, 53, 195, 130, 95, 49, 77, 212, 200, 24, 146, 76, }, { 156, 130, 188, 145, 60, 145, 197, 134, 112, 155, 93, 1, 55, 60, 174, 190, }, { 5, 46, 171, 34, 86, 34, 143, 75, 102, 59, 239, 136, 199, 86, 47, 120, }, { 25, 103, 71, 250, 252, 250, 18, 28, 205, 208, 112, 110, 184, 252, 180, 155, }, { 216, 159, 119, 124, 142, 124, 155, 83, 132, 65, 143, 51, 128, 142, 167, 17, }, { 128, 203, 80, 73, 150, 73, 88, 209, 219, 112, 194, 231, 72, 150, 53, 93, }, { 158, 47, 44, 133, 161, 133, 252, 168, 76, 234, 229, 81, 159, 161, 215, 142, }, { 68, 29, 203, 237, 178, 237, 94, 213, 244, 218, 210, 50, 183, 178, 9, 175, }, { 202, 19, 237, 200, 113, 200, 169, 206, 155, 62, 190, 166, 33, 113, 144, 98, }, { 61, 188, 176, 81, 193, 81, 118, 229, 243, 46, 18, 135, 57, 193, 218, 125, }, { 46, 135, 98, 239, 145, 239, 185, 111, 242, 136, 127, 58, 204, 145, 48, 22, }, { 114, 74, 166, 242, 112, 242, 8, 177, 213, 91, 129, 78, 151, 112, 80, 58, }, { 66, 41, 184, 209, 214, 209, 21, 167, 176, 73, 217, 194, 140, 214, 130, 255, }, { 101, 232, 151, 100, 217, 100, 181, 103, 172, 31, 95, 83, 241, 217, 72, 49, }, }, { { 4, 195, 182, 129, 54, 62, 77, 222, 159, 190, 204, 146, 94, 114, 17, 143, }, { 197, 52, 41, 186, 51, 122, 33, 138, 39, 96, 155, 11, 144, 251, 50, 181, }, { 223, 123, 64, 155, 156, 225, 139, 100, 77, 61, 16, 168, 184, 45, 189, 183, }, { 183, 132, 39, 31, 101, 200, 102, 90, 38, 138, 121, 97, 24, 243, 196, 191, }, { 30, 140, 223, 160, 153, 165, 231, 48, 245, 227, 71, 49, 118, 164, 158, 141, }, { 38, 148, 20, 162, 94, 18, 167, 142, 67, 88, 5, 193, 196, 93, 112, 219, }, { 255, 172, 185, 25, 239, 210, 166, 91, 63, 132, 191, 178, 13, 59, 53, 69, }, { 200, 242, 252, 75, 133, 214, 116, 253, 18, 175, 63, 187, 132, 144, 148, 180, }, { 123, 181, 109, 213, 214, 32, 95, 121, 171, 155, 138, 72, 194, 17, 65, 132, }, { 122, 245, 161, 100, 58, 206, 221, 175, 252, 85, 185, 141, 52, 236, 212, 215, }, { 232, 37, 5, 201, 246, 229, 89, 194, 96, 22, 144, 161, 49, 134, 28, 70, }, { 160, 13, 155, 207, 124, 255, 153, 195, 121, 24, 86, 114, 36, 78, 237, 188, }, { 62, 91, 38, 34, 234, 150, 202, 15, 135, 90, 232, 43, 195, 178, 22, 127, }, { 233, 101, 201, 120, 26, 11, 219, 20, 55, 216, 163, 100, 199, 123, 137, 21, }, { 9, 5, 99, 112, 128, 146, 24, 169, 170, 113, 104, 34, 74, 25, 183, 142, }, { 24, 207, 50, 128, 180, 132, 109, 129, 196, 2, 237, 234, 7, 239, 102, 164, }, { 186, 66, 242, 238, 211, 100, 51, 45, 19, 69, 221, 209, 12, 152, 98, 190, }, { 131, 26, 245, 93, 248, 61, 241, 69, 242, 48, 172, 228, 72, 156, 25, 187, }, { 31, 204, 19, 17, 117, 75, 101, 230, 162, 45, 116, 244, 128, 89, 11, 222, }, { 51, 157, 243, 211, 92, 58, 159, 120, 178, 149, 76, 155, 215, 217, 176, 126, }, { 177, 199, 202, 63, 72, 233, 236, 235, 23, 107, 211, 186, 105, 184, 60, 150, }, { 182, 196, 235, 174, 137, 38, 228, 140, 113, 68, 74, 164, 238, 14, 81, 236, }, { 70, 46, 220, 231, 203, 71, 208, 207, 213, 80, 55, 239, 216, 103, 43, 14, }, { 120, 117, 250, 197, 33, 209, 26, 192, 82, 10, 223, 196, 27, 213, 61, 113, }, { 91, 98, 148, 87, 165, 19, 114, 70, 217, 34, 37, 82, 119, 7, 201, 118, }, { 128, 218, 98, 77, 15, 204, 180, 252, 11, 161, 249, 104, 145, 88, 101, 78, }, { 140, 92, 123, 13, 85, 142, 99, 93, 105, 160, 110, 29, 115, 206, 86, 28, }, { 235, 229, 146, 217, 1, 20, 28, 123, 153, 135, 197, 45, 232, 66, 96, 179, }, { 45, 17, 44, 115, 197, 159, 120, 72, 71, 118, 11, 170, 161, 125, 46, 243, }, { 251, 111, 15, 152, 217, 236, 235, 133, 160, 58, 115, 32, 83, 73, 36, 202, }, { 217, 56, 173, 187, 177, 192, 1, 213, 124, 220, 186, 115, 201, 102, 69, 158, }, { 224, 96, 170, 8, 154, 153, 195, 189, 157, 169, 203, 70, 141, 98, 62, 155, }, { 158, 86, 189, 237, 150, 105, 83, 204, 254, 66, 190, 89, 231, 252, 251, 195, }, { 54, 30, 137, 227, 134, 234, 80, 112, 122, 229, 179, 204, 127, 86, 52, 162, }, { 66, 237, 106, 102, 253, 121, 157, 17, 74, 238, 251, 125, 134, 21, 58, 129, }, { 67, 173, 166, 215, 17, 151, 31, 199, 29, 32, 200, 184, 112, 232, 175, 210, }, { 222, 59, 140, 42, 112, 15, 9, 178, 26, 243, 35, 109, 78, 208, 40, 228, }, { 175, 75, 21, 159, 209, 76, 11, 219, 226, 136, 148, 139, 31, 28, 162, 27, }, { 86, 164, 65, 166, 19, 191, 39, 49, 236, 237, 129, 226, 99, 108, 111, 119, }, { 219, 184, 246, 26, 170, 223, 198, 186, 210, 131, 220, 58, 230, 95, 172, 56, }, { 112, 48, 85, 4, 77, 173, 128, 191, 175, 181, 132, 35, 167, 49, 31, 172, }, { 63, 27, 234, 147, 6, 120, 72, 217, 208, 148, 219, 238, 53, 79, 131, 44, }, { 119, 51, 116, 149, 140, 98, 136, 216, 201, 154, 29, 61, 32, 135, 114, 214, }, { 117, 179, 47, 52, 151, 125, 79, 183, 103, 197, 123, 116, 15, 190, 155, 112, }, { 135, 217, 67, 220, 206, 3, 188, 155, 109, 142, 96, 118, 22, 238, 8, 52, }, { 147, 144, 104, 28, 32, 197, 6, 187, 203, 141, 26, 233, 243, 151, 93, 194, }, { 29, 76, 72, 176, 110, 84, 162, 137, 12, 114, 18, 189, 175, 96, 226, 120, }, { 253, 44, 226, 184, 244, 205, 97, 52, 145, 219, 217, 251, 34, 2, 220, 227, }, { 154, 149, 11, 108, 160, 87, 30, 18, 97, 252, 114, 203, 185, 142, 234, 76, }, { 234, 165, 94, 104, 237, 250, 158, 173, 206, 73, 246, 232, 30, 191, 245, 224, }, { 229, 227, 208, 56, 64, 73, 12, 181, 85, 217, 52, 17, 37, 237, 186, 71, }, { 85, 100, 214, 182, 228, 78, 98, 136, 21, 124, 212, 110, 186, 168, 19, 130, }, { 77, 171, 228, 54, 80, 202, 15, 9, 209, 126, 57, 132, 189, 71, 117, 38, }, { 47, 145, 119, 210, 222, 128, 191, 39, 233, 41, 109, 227, 142, 68, 199, 85, }, { 142, 220, 32, 172, 78, 145, 164, 50, 199, 255, 8, 84, 92, 247, 191, 186, }, { 171, 136, 163, 30, 231, 114, 70, 5, 125, 54, 88, 25, 65, 110, 179, 148, }, { 236, 230, 179, 72, 192, 219, 20, 28, 255, 168, 92, 51, 111, 244, 13, 201, }, { 100, 121, 126, 196, 163, 107, 58, 159, 9, 182, 254, 188, 66, 72, 74, 90, }, { 179, 71, 145, 158, 83, 246, 43, 132, 185, 52, 181, 243, 70, 129, 213, 48, }, { 213, 190, 180, 251, 235, 130, 214, 116, 30, 221, 45, 6, 43, 240, 118, 204, }, { 145, 16, 51, 189, 59, 218, 193, 212, 101, 210, 124, 160, 220, 174, 180, 100, }, { 94, 225, 238, 103, 127, 195, 189, 78, 17, 82, 218, 5, 223, 136, 77, 170, }, { 33, 151, 53, 51, 159, 221, 175, 233, 37, 119, 156, 223, 67, 235, 29, 161, }, { 73, 104, 82, 183, 102, 244, 66, 215, 78, 192, 245, 22, 227, 53, 100, 169, }, { 95, 161, 34, 214, 147, 45, 63, 152, 70, 156, 233, 192, 41, 117, 216, 249, }, { 101, 57, 178, 117, 79, 133, 184, 73, 94, 120, 205, 121, 180, 181, 223, 9, }, { 83, 39, 59, 150, 201, 111, 232, 57, 36, 157, 126, 181, 203, 227, 235, 171, }, { 39, 212, 216, 19, 178, 252, 37, 88, 20, 150, 54, 4, 50, 160, 229, 136, }, { 204, 49, 74, 202, 179, 232, 57, 35, 141, 17, 243, 41, 218, 226, 133, 59, }, { 97, 250, 4, 244, 121, 187, 245, 151, 193, 198, 1, 235, 234, 199, 206, 134, }, { 130, 90, 57, 236, 20, 211, 115, 147, 165, 254, 159, 33, 190, 97, 140, 232, }, { 207, 241, 221, 218, 68, 25, 124, 154, 116, 128, 166, 165, 3, 38, 249, 206, }, { 250, 47, 195, 41, 53, 2, 105, 83, 247, 244, 64, 229, 165, 180, 177, 153, }, { 191, 193, 136, 222, 9, 180, 252, 37, 219, 53, 34, 134, 164, 23, 230, 98, }, { 202, 114, 167, 234, 158, 201, 179, 146, 188, 240, 89, 242, 171, 169, 125, 18, }, { 78, 107, 115, 38, 167, 59, 74, 176, 40, 239, 108, 8, 100, 131, 9, 211, }, { 151, 83, 222, 157, 22, 251, 75, 101, 84, 51, 214, 123, 173, 229, 76, 77, }, { 155, 213, 199, 221, 76, 185, 156, 196, 54, 50, 65, 14, 79, 115, 127, 31, }, { 141, 28, 183, 188, 185, 96, 225, 139, 62, 110, 93, 216, 133, 51, 195, 79, }, { 104, 255, 103, 132, 249, 41, 237, 62, 107, 183, 105, 201, 160, 222, 121, 8, }, { 21, 9, 231, 113, 2, 40, 56, 246, 241, 205, 73, 90, 19, 132, 192, 165, }, { 252, 108, 46, 9, 24, 35, 227, 226, 198, 21, 234, 62, 212, 255, 73, 176, }, { 254, 236, 117, 168, 3, 60, 36, 141, 104, 74, 140, 119, 251, 198, 160, 22, }, { 88, 162, 3, 71, 82, 226, 55, 255, 32, 179, 112, 222, 174, 195, 181, 131, }, { 18, 10, 198, 224, 195, 231, 48, 145, 151, 226, 208, 68, 148, 50, 173, 223, }, { 27, 15, 165, 144, 67, 117, 40, 56, 61, 147, 184, 102, 222, 43, 26, 81, }, { 16, 138, 157, 65, 216, 248, 247, 254, 57, 189, 182, 13, 187, 11, 68, 121, }, { 193, 247, 159, 59, 5, 68, 108, 84, 184, 222, 87, 153, 206, 137, 35, 58, }, { 226, 224, 241, 169, 129, 134, 4, 210, 51, 246, 173, 15, 162, 91, 215, 61, }, { 25, 143, 254, 49, 88, 106, 239, 87, 147, 204, 222, 47, 241, 18, 243, 247, }, { 82, 103, 247, 39, 37, 129, 106, 239, 115, 83, 77, 112, 61, 30, 126, 248, }, { 239, 38, 36, 88, 55, 42, 81, 165, 6, 57, 9, 191, 182, 48, 113, 60, }, { 220, 187, 215, 139, 107, 16, 206, 221, 180, 172, 69, 36, 97, 233, 193, 66, }, { 240, 234, 55, 73, 66, 97, 52, 67, 164, 20, 125, 75, 54, 105, 122, 226, }, { 60, 219, 125, 131, 241, 137, 13, 96, 41, 5, 142, 98, 236, 139, 255, 217, }, { 156, 214, 230, 76, 141, 118, 148, 163, 80, 29, 216, 16, 200, 197, 18, 101, }, { 190, 129, 68, 111, 229, 90, 126, 243, 140, 251, 17, 67, 82, 234, 115, 49, }, { 56, 24, 203, 2, 199, 183, 64, 190, 182, 187, 66, 240, 178, 249, 238, 86, }, { 43, 82, 193, 83, 232, 190, 242, 249, 118, 151, 161, 113, 208, 54, 214, 218, }, { 201, 178, 48, 250, 105, 56, 246, 43, 69, 97, 12, 126, 114, 109, 1, 231, }, { 36, 20, 79, 3, 69, 13, 96, 225, 237, 7, 99, 136, 235, 100, 153, 125, }, { 152, 21, 80, 205, 187, 72, 217, 125, 207, 163, 20, 130, 150, 183, 3, 234, }, { 48, 93, 100, 195, 171, 203, 218, 193, 75, 4, 25, 23, 14, 29, 204, 139, }, { 12, 134, 25, 64, 90, 66, 215, 161, 98, 1, 151, 117, 226, 150, 51, 82, }, { 105, 191, 171, 53, 21, 199, 111, 232, 60, 121, 90, 12, 86, 35, 236, 91, }, { 84, 36, 26, 7, 8, 160, 224, 94, 66, 178, 231, 171, 76, 85, 134, 209, }, { 238, 102, 232, 233, 219, 196, 211, 115, 81, 247, 58, 122, 64, 205, 228, 111, }, { 181, 4, 124, 190, 126, 215, 161, 53, 136, 213, 31, 40, 55, 202, 45, 25, }, { 79, 43, 191, 151, 75, 213, 200, 102, 127, 33, 95, 205, 146, 126, 156, 128, }, { 57, 88, 7, 179, 43, 89, 194, 104, 225, 117, 113, 53, 68, 4, 123, 5, }, { 106, 127, 60, 37, 226, 54, 42, 81, 197, 232, 15, 128, 143, 231, 144, 174, }, { 28, 12, 132, 1, 130, 186, 32, 95, 91, 188, 33, 120, 89, 157, 119, 43, }, { 137, 223, 1, 61, 143, 94, 172, 85, 161, 208, 145, 74, 219, 65, 210, 192, }, { 102, 249, 37, 101, 184, 116, 253, 240, 167, 233, 152, 245, 109, 113, 163, 252, }, { 165, 142, 225, 255, 166, 47, 86, 203, 177, 104, 169, 37, 140, 193, 105, 96, }, { 228, 163, 28, 137, 172, 167, 142, 99, 2, 23, 7, 212, 211, 16, 47, 20, }, { 114, 176, 14, 165, 86, 178, 71, 208, 1, 234, 226, 106, 136, 8, 246, 10, }, { 246, 169, 218, 105, 111, 64, 190, 242, 149, 245, 215, 144, 71, 34, 130, 203, }, { 20, 73, 43, 192, 238, 198, 186, 32, 166, 3, 122, 159, 229, 121, 85, 246, }, { 2, 128, 91, 161, 27, 31, 199, 111, 174, 95, 102, 73, 47, 57, 233, 166, }, { 80, 231, 172, 134, 62, 158, 173, 128, 221, 12, 43, 57, 18, 39, 151, 94, }, { 189, 65, 211, 127, 18, 171, 59, 74, 117, 106, 68, 207, 139, 46, 15, 196, }, { 159, 22, 113, 92, 122, 135, 209, 26, 169, 140, 141, 156, 17, 1, 110, 144, }, { 227, 160, 61, 24, 109, 104, 134, 4, 100, 56, 158, 202, 84, 166, 66, 110, }, { 5, 131, 122, 48, 218, 208, 207, 8, 200, 112, 255, 87, 168, 143, 132, 220, }, { 7, 3, 33, 145, 193, 207, 8, 103, 102, 47, 153, 30, 135, 182, 109, 122, }, { 136, 159, 205, 140, 99, 176, 46, 131, 246, 30, 162, 143, 45, 188, 71, 147, }, { 203, 50, 107, 91, 114, 39, 49, 68, 235, 62, 106, 55, 93, 84, 232, 65, }, { 58, 152, 144, 163, 220, 168, 135, 209, 24, 228, 36, 185, 157, 192, 7, 240, }, { 133, 89, 24, 125, 213, 28, 123, 244, 195, 209, 6, 63, 57, 215, 225, 146, }, { 65, 45, 253, 118, 10, 136, 216, 168, 179, 127, 174, 241, 95, 209, 70, 116, }, { 42, 18, 13, 226, 4, 80, 112, 47, 33, 89, 146, 180, 38, 203, 67, 137, }, { 146, 208, 164, 173, 204, 43, 132, 109, 156, 67, 41, 44, 5, 106, 200, 145, }, { 185, 130, 101, 254, 36, 149, 118, 148, 234, 212, 136, 93, 213, 92, 30, 75, }, { 230, 35, 71, 40, 183, 184, 73, 12, 172, 72, 97, 157, 252, 41, 198, 178, }, { 242, 106, 108, 232, 89, 126, 243, 44, 10, 75, 27, 2, 25, 80, 147, 68, }, { 40, 146, 86, 67, 31, 79, 183, 64, 143, 6, 244, 253, 9, 242, 170, 47, }, { 125, 246, 128, 245, 251, 1, 213, 200, 154, 122, 32, 147, 179, 90, 185, 173, }, { 187, 2, 62, 95, 63, 138, 177, 251, 68, 139, 238, 20, 250, 101, 247, 237, }, { 243, 42, 160, 89, 181, 144, 113, 250, 93, 133, 40, 199, 239, 173, 6, 23, }, { 231, 99, 139, 153, 91, 86, 203, 218, 251, 134, 82, 88, 10, 212, 83, 225, }, { 173, 203, 78, 62, 202, 83, 204, 180, 76, 215, 242, 194, 48, 37, 75, 189, }, { 14, 6, 66, 225, 65, 93, 16, 206, 204, 94, 241, 60, 205, 175, 218, 244, }, { 118, 115, 184, 36, 96, 140, 10, 14, 158, 84, 46, 248, 214, 122, 231, 133, }, { 59, 216, 92, 18, 48, 70, 5, 7, 79, 42, 23, 124, 107, 61, 146, 163, }, { 109, 124, 29, 180, 35, 249, 34, 54, 163, 199, 150, 158, 8, 81, 253, 212, }, { 32, 215, 249, 130, 115, 51, 45, 63, 114, 185, 175, 26, 181, 22, 136, 242, }, { 169, 8, 248, 191, 252, 109, 129, 106, 211, 105, 62, 80, 110, 87, 90, 50, }, { 11, 133, 56, 209, 155, 141, 223, 198, 4, 46, 14, 107, 101, 32, 94, 40, }, { 206, 177, 17, 107, 168, 247, 254, 76, 35, 78, 149, 96, 245, 219, 108, 157, }, { 143, 156, 236, 29, 162, 127, 38, 228, 144, 49, 59, 145, 170, 10, 42, 233, }, { 148, 147, 73, 141, 225, 10, 14, 220, 173, 162, 131, 247, 116, 33, 48, 184, }, { 76, 235, 40, 135, 188, 36, 141, 223, 134, 176, 10, 65, 75, 186, 224, 117, }, { 41, 210, 154, 242, 243, 161, 53, 150, 216, 200, 199, 56, 255, 15, 63, 124, }, { 90, 34, 88, 230, 73, 253, 240, 144, 142, 236, 22, 151, 129, 250, 92, 37, }, { 180, 68, 176, 15, 146, 57, 35, 227, 223, 27, 44, 237, 193, 55, 184, 74, }, { 110, 188, 138, 164, 212, 8, 103, 143, 90, 86, 195, 18, 209, 149, 129, 33, }, { 26, 79, 105, 33, 175, 155, 170, 238, 106, 93, 139, 163, 40, 214, 143, 2, }, { 247, 233, 22, 216, 131, 174, 60, 36, 194, 59, 228, 85, 177, 223, 23, 152, }, { 103, 185, 233, 212, 84, 154, 127, 38, 240, 39, 171, 48, 155, 140, 54, 175, }, { 212, 254, 120, 74, 7, 108, 84, 162, 73, 19, 30, 195, 221, 13, 227, 159, }, { 184, 194, 169, 79, 200, 123, 244, 66, 189, 26, 187, 152, 35, 161, 139, 24, }, { 216, 120, 97, 10, 93, 46, 131, 3, 43, 18, 137, 182, 63, 155, 208, 205, }, { 138, 31, 150, 45, 120, 175, 233, 236, 88, 65, 196, 198, 2, 133, 174, 53, }, { 218, 248, 58, 171, 70, 49, 68, 108, 133, 77, 239, 255, 16, 162, 57, 107, }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, { 61, 155, 177, 50, 29, 103, 143, 182, 126, 203, 189, 167, 26, 118, 106, 138, }, { 153, 85, 156, 124, 87, 166, 91, 171, 152, 109, 39, 71, 96, 74, 150, 185, }, { 211, 253, 89, 219, 198, 163, 92, 197, 47, 60, 135, 221, 90, 187, 142, 229, }, { 157, 150, 42, 253, 97, 152, 22, 117, 7, 211, 235, 213, 62, 56, 135, 54, }, { 126, 54, 23, 229, 12, 240, 144, 113, 99, 235, 117, 31, 106, 158, 197, 88, }, { 6, 67, 237, 32, 45, 33, 138, 177, 49, 225, 170, 219, 113, 75, 248, 41, }, { 209, 125, 2, 122, 221, 188, 155, 170, 129, 99, 225, 148, 117, 130, 103, 67, }, { 170, 200, 111, 175, 11, 156, 196, 211, 42, 248, 107, 220, 183, 147, 38, 199, }, { 164, 206, 45, 78, 74, 193, 212, 29, 230, 166, 154, 224, 122, 60, 252, 51, }, { 3, 192, 151, 16, 247, 241, 69, 185, 249, 145, 85, 140, 217, 196, 124, 245, }, { 35, 23, 110, 146, 132, 194, 104, 134, 139, 40, 250, 150, 108, 210, 244, 7, }, { 10, 197, 244, 96, 119, 99, 93, 16, 83, 224, 61, 174, 147, 221, 203, 123, }, { 124, 182, 76, 68, 23, 239, 87, 30, 205, 180, 19, 86, 69, 167, 44, 254, }, { 34, 87, 162, 35, 104, 44, 234, 80, 220, 230, 201, 83, 154, 47, 97, 84, }, { 55, 94, 69, 82, 106, 4, 210, 166, 45, 43, 128, 9, 137, 171, 161, 241, }, { 74, 168, 197, 167, 145, 5, 7, 110, 183, 81, 160, 154, 58, 241, 24, 92, }, { 46, 209, 187, 99, 50, 110, 61, 241, 190, 231, 94, 38, 120, 185, 82, 6, }, { 37, 84, 131, 178, 169, 227, 226, 55, 186, 201, 80, 77, 29, 153, 12, 46, }, { 248, 175, 152, 136, 46, 29, 174, 60, 89, 171, 38, 172, 138, 141, 88, 63, }, { 221, 251, 27, 58, 135, 254, 76, 11, 227, 98, 118, 225, 151, 20, 84, 17, }, { 49, 29, 168, 114, 71, 37, 88, 23, 28, 202, 42, 210, 248, 224, 89, 216, }, { 116, 243, 227, 133, 123, 147, 205, 97, 48, 11, 72, 177, 249, 67, 14, 35, }, { 89, 226, 207, 246, 190, 12, 181, 41, 119, 125, 67, 27, 88, 62, 32, 208, }, { 205, 113, 134, 123, 95, 6, 187, 245, 218, 223, 192, 236, 44, 31, 16, 104, }, { 93, 33, 121, 119, 136, 50, 248, 247, 232, 195, 143, 137, 6, 76, 49, 95, }, { 8, 69, 175, 193, 108, 124, 154, 127, 253, 191, 91, 231, 188, 228, 34, 221, }, { 127, 118, 219, 84, 224, 30, 18, 167, 52, 37, 70, 218, 156, 99, 80, 11, }, { 166, 78, 118, 239, 81, 222, 19, 114, 72, 249, 252, 169, 85, 5, 21, 149, }, { 249, 239, 84, 57, 194, 243, 44, 234, 14, 101, 21, 105, 124, 112, 205, 108, }, { 144, 80, 255, 12, 215, 52, 67, 2, 50, 28, 79, 101, 42, 83, 33, 55, }, { 15, 70, 142, 80, 173, 179, 146, 24, 155, 144, 194, 249, 59, 82, 79, 167, }, { 176, 135, 6, 142, 164, 7, 110, 61, 64, 165, 224, 127, 159, 69, 169, 197, }, { 172, 139, 130, 143, 38, 189, 78, 98, 27, 25, 193, 7, 198, 216, 222, 238, }, { 96, 186, 200, 69, 149, 85, 119, 65, 150, 8, 50, 46, 28, 58, 91, 213, }, { 108, 60, 209, 5, 207, 23, 160, 224, 244, 9, 165, 91, 254, 172, 104, 135, }, { 19, 74, 10, 81, 47, 9, 178, 71, 192, 44, 227, 129, 98, 207, 56, 140, }, { 188, 1, 31, 206, 254, 69, 185, 156, 34, 164, 119, 10, 125, 211, 154, 151, }, { 50, 221, 63, 98, 176, 212, 29, 174, 229, 91, 127, 94, 33, 36, 37, 45, }, { 241, 170, 251, 248, 174, 143, 182, 149, 243, 218, 78, 142, 192, 148, 239, 177, }, { 214, 126, 35, 235, 28, 115, 147, 205, 231, 76, 120, 138, 242, 52, 10, 57, }, { 68, 174, 135, 70, 208, 88, 23, 160, 123, 15, 81, 166, 247, 94, 194, 168, }, { 98, 58, 147, 228, 142, 74, 176, 46, 56, 87, 84, 103, 51, 3, 178, 115, }, { 168, 72, 52, 14, 16, 131, 3, 188, 132, 167, 13, 149, 152, 170, 207, 97, }, { 64, 109, 49, 199, 230, 102, 90, 126, 228, 177, 157, 52, 169, 44, 211, 39, }, { 149, 211, 133, 60, 13, 228, 140, 10, 250, 108, 176, 50, 130, 220, 165, 235, }, { 17, 202, 81, 240, 52, 22, 117, 40, 110, 115, 133, 200, 77, 246, 209, 42, }, { 139, 95, 90, 156, 148, 65, 107, 58, 15, 143, 247, 3, 244, 120, 59, 102, }, { 1, 64, 204, 177, 236, 238, 130, 214, 87, 206, 51, 197, 246, 253, 149, 83, }, { 13, 198, 213, 241, 182, 172, 85, 119, 53, 207, 164, 176, 20, 107, 166, 1, }, { 225, 32, 102, 185, 118, 119, 65, 107, 202, 103, 248, 131, 123, 159, 171, 200, }, { 107, 63, 240, 148, 14, 216, 168, 135, 146, 38, 60, 69, 121, 26, 5, 253, }, { 194, 55, 8, 43, 242, 181, 41, 237, 65, 79, 2, 21, 23, 77, 95, 207, }, { 92, 97, 181, 198, 100, 220, 122, 33, 191, 13, 188, 76, 240, 177, 164, 12, }, { 199, 180, 114, 27, 40, 101, 230, 229, 137, 63, 253, 66, 191, 194, 219, 19, }, { 132, 25, 212, 204, 57, 242, 249, 34, 148, 31, 53, 250, 207, 42, 116, 193, }, { 69, 238, 75, 247, 60, 182, 149, 118, 44, 193, 98, 99, 1, 163, 87, 251, }, { 121, 53, 54, 116, 205, 63, 152, 22, 5, 196, 236, 1, 237, 40, 168, 34, }, { 75, 232, 9, 22, 125, 235, 133, 184, 224, 159, 147, 95, 204, 12, 141, 15, }, { 72, 40, 158, 6, 138, 26, 192, 1, 25, 14, 198, 211, 21, 200, 241, 250, }, { 111, 252, 70, 21, 56, 230, 229, 89, 13, 152, 240, 215, 39, 104, 20, 114, }, { 167, 14, 186, 94, 189, 48, 145, 164, 31, 55, 207, 108, 163, 248, 128, 198, }, { 162, 141, 192, 110, 103, 224, 94, 172, 215, 71, 48, 59, 11, 119, 4, 26, }, { 192, 183, 83, 138, 233, 170, 238, 130, 239, 16, 100, 92, 56, 116, 182, 105, }, { 44, 81, 224, 194, 41, 113, 250, 158, 16, 184, 56, 111, 87, 128, 187, 160, }, { 129, 154, 174, 252, 227, 34, 54, 42, 92, 111, 202, 173, 103, 165, 240, 29, }, { 208, 61, 206, 203, 49, 82, 25, 124, 214, 173, 210, 81, 131, 127, 242, 16, }, { 23, 137, 188, 208, 25, 55, 255, 153, 95, 146, 47, 19, 60, 189, 41, 3, }, { 163, 205, 12, 223, 139, 14, 220, 122, 128, 137, 3, 254, 253, 138, 145, 73, }, { 210, 189, 149, 106, 42, 77, 222, 19, 120, 242, 180, 24, 172, 70, 27, 182, }, { 87, 228, 141, 23, 255, 81, 165, 231, 187, 35, 178, 39, 149, 145, 250, 36, }, { 113, 112, 153, 181, 161, 67, 2, 105, 248, 123, 183, 230, 81, 204, 138, 255, }, { 161, 77, 87, 126, 144, 17, 27, 21, 46, 214, 101, 183, 210, 179, 120, 239, }, { 195, 119, 196, 154, 30, 91, 171, 59, 22, 129, 49, 208, 225, 176, 202, 156, }, { 81, 167, 96, 55, 210, 112, 47, 86, 138, 194, 24, 252, 228, 218, 2, 13, }, { 53, 222, 30, 243, 113, 27, 21, 201, 131, 116, 230, 64, 166, 146, 72, 87, }, { 71, 110, 16, 86, 39, 169, 82, 25, 130, 158, 4, 42, 46, 154, 190, 93, }, { 245, 105, 77, 121, 152, 177, 251, 75, 108, 100, 130, 28, 158, 230, 254, 62, }, { 178, 7, 93, 47, 191, 24, 169, 82, 238, 250, 134, 54, 176, 124, 64, 99, }, { 215, 62, 239, 90, 240, 157, 17, 27, 176, 130, 75, 79, 4, 201, 159, 106, }, { 22, 201, 112, 97, 245, 217, 125, 79, 8, 92, 28, 214, 202, 64, 188, 80, }, { 134, 153, 143, 109, 34, 237, 62, 77, 58, 64, 83, 179, 224, 19, 157, 103, }, { 115, 240, 194, 20, 186, 92, 197, 6, 86, 36, 209, 175, 126, 245, 99, 89, }, { 196, 116, 229, 11, 223, 148, 163, 92, 112, 174, 168, 206, 102, 6, 167, 230, }, { 52, 158, 210, 66, 157, 245, 151, 31, 212, 186, 213, 133, 80, 111, 221, 4, }, { 198, 244, 190, 170, 196, 139, 100, 51, 222, 241, 206, 135, 73, 63, 78, 64, }, { 150, 19, 18, 44, 250, 21, 201, 179, 3, 253, 229, 190, 91, 24, 217, 30, }, { 237, 166, 127, 249, 44, 53, 150, 202, 168, 102, 111, 246, 153, 9, 152, 154, }, { 244, 41, 129, 200, 116, 95, 121, 157, 59, 170, 177, 217, 104, 27, 107, 109, }, { 174, 11, 217, 46, 61, 162, 137, 13, 181, 70, 167, 78, 233, 225, 55, 72, }, { 99, 122, 95, 85, 98, 164, 50, 248, 111, 153, 103, 162, 197, 254, 39, 32, }, }, { { 121, 128, 171, 231, 169, 111, 80, 151, 190, 32, 219, 90, 181, 26, 240, 180, }, { 145, 26, 151, 22, 20, 69, 159, 110, 96, 231, 239, 85, 10, 88, 98, 170, }, { 153, 220, 95, 147, 209, 50, 148, 48, 61, 55, 252, 103, 137, 9, 127, 206, }, { 185, 66, 249, 194, 67, 45, 184, 139, 138, 241, 176, 175, 192, 142, 11, 157, }, { 113, 70, 99, 98, 108, 24, 91, 201, 227, 240, 200, 104, 54, 75, 237, 208, }, { 234, 74, 14, 65, 29, 71, 189, 15, 88, 243, 64, 226, 239, 199, 4, 7, }, { 215, 86, 78, 167, 208, 204, 81, 2, 132, 244, 235, 242, 104, 217, 243, 39, }, { 149, 121, 243, 181, 151, 159, 123, 65, 175, 143, 7, 76, 170, 145, 141, 152, }, { 85, 187, 161, 144, 125, 221, 147, 93, 155, 94, 108, 185, 223, 5, 118, 177, }, { 218, 155, 251, 217, 198, 182, 135, 8, 85, 86, 42, 78, 99, 226, 74, 156, }, { 219, 243, 226, 129, 150, 97, 190, 115, 22, 76, 16, 217, 75, 65, 1, 113, }, { 181, 231, 85, 228, 5, 128, 87, 250, 24, 73, 75, 132, 227, 22, 249, 203, }, { 63, 204, 114, 86, 109, 230, 158, 251, 90, 51, 223, 253, 215, 155, 97, 57, }, { 84, 211, 184, 200, 45, 10, 170, 38, 216, 68, 86, 46, 247, 166, 61, 92, }, { 125, 227, 207, 68, 42, 181, 180, 184, 113, 72, 51, 67, 21, 211, 31, 134, }, { 213, 134, 124, 23, 112, 161, 35, 244, 2, 192, 159, 31, 56, 92, 101, 62, }, { 189, 33, 157, 97, 192, 247, 92, 164, 69, 153, 88, 182, 96, 71, 228, 175, }, { 169, 13, 170, 11, 10, 195, 174, 55, 48, 146, 150, 203, 5, 44, 49, 85, }, { 254, 102, 57, 43, 215, 115, 79, 156, 45, 248, 142, 159, 138, 172, 209, 253, }, { 59, 175, 22, 245, 238, 60, 122, 212, 149, 91, 55, 228, 119, 82, 142, 11, }, { 29, 130, 230, 183, 95, 148, 192, 182, 107, 193, 231, 216, 206, 153, 131, 115, }, { 54, 98, 163, 139, 248, 70, 172, 222, 68, 249, 246, 88, 124, 105, 55, 176, }, { 56, 23, 61, 29, 30, 134, 49, 89, 80, 117, 121, 158, 15, 116, 83, 255, }, { 7, 219, 79, 75, 115, 96, 175, 162, 10, 70, 166, 99, 216, 239, 50, 198, }, { 27, 49, 176, 164, 124, 35, 86, 111, 34, 157, 123, 44, 62, 213, 250, 88, }, { 251, 109, 68, 208, 4, 126, 146, 200, 161, 138, 92, 17, 2, 198, 117, 34, }, { 112, 46, 122, 58, 60, 207, 98, 178, 160, 234, 242, 255, 30, 232, 166, 61, }, { 137, 147, 12, 90, 152, 220, 130, 140, 135, 84, 218, 3, 76, 171, 69, 6, }, { 74, 233, 117, 151, 130, 36, 33, 29, 118, 171, 255, 140, 65, 25, 99, 219, }, { 174, 214, 229, 64, 121, 163, 1, 149, 58, 212, 48, 168, 221, 195, 3, 147, }, { 61, 28, 64, 230, 205, 139, 236, 13, 220, 7, 171, 16, 135, 30, 247, 32, }, { 41, 48, 119, 140, 7, 191, 30, 158, 169, 12, 101, 109, 226, 117, 34, 218, }, { 138, 43, 39, 178, 104, 102, 201, 1, 66, 122, 148, 121, 52, 141, 152, 242, }, { 205, 15, 231, 91, 252, 56, 62, 22, 229, 115, 170, 73, 126, 175, 66, 146, }, { 65, 151, 150, 250, 183, 233, 97, 206, 238, 85, 162, 196, 186, 110, 163, 75, }, { 206, 183, 204, 179, 12, 130, 117, 155, 32, 93, 228, 51, 6, 137, 159, 102, }, { 22, 252, 5, 218, 106, 89, 128, 101, 243, 63, 186, 144, 53, 238, 67, 227, }, { 108, 196, 133, 213, 51, 140, 155, 127, 136, 49, 47, 176, 248, 210, 110, 163, }, { 31, 82, 212, 7, 255, 249, 178, 64, 237, 245, 147, 53, 158, 28, 21, 106, }, { 224, 92, 244, 116, 120, 93, 196, 167, 131, 23, 39, 61, 60, 19, 143, 122, }, { 245, 24, 218, 70, 226, 190, 15, 79, 181, 6, 211, 215, 113, 219, 17, 109, }, { 176, 236, 40, 31, 214, 141, 138, 174, 148, 59, 153, 10, 107, 124, 93, 20, }, { 222, 248, 159, 122, 69, 108, 99, 39, 154, 62, 194, 87, 195, 43, 165, 174, }, { 3, 184, 43, 232, 240, 186, 75, 141, 197, 46, 78, 122, 120, 38, 221, 244, }, { 208, 141, 1, 236, 163, 172, 254, 160, 142, 178, 77, 145, 176, 54, 193, 225, }, { 142, 72, 67, 17, 235, 188, 45, 46, 141, 18, 124, 96, 148, 68, 119, 192, }, { 35, 38, 141, 185, 98, 165, 103, 54, 114, 232, 2, 178, 49, 161, 169, 167, }, { 10, 22, 250, 53, 101, 26, 121, 168, 219, 228, 103, 223, 211, 212, 139, 125, }, { 243, 171, 140, 85, 193, 9, 153, 150, 252, 90, 79, 35, 129, 151, 104, 70, }, { 6, 179, 86, 19, 35, 183, 150, 217, 73, 92, 156, 244, 240, 76, 121, 43, }, { 223, 144, 134, 34, 21, 187, 90, 92, 217, 36, 248, 192, 235, 136, 238, 67, }, { 77, 50, 58, 220, 241, 68, 142, 191, 124, 237, 89, 239, 153, 246, 81, 29, }, { 152, 180, 70, 203, 129, 229, 173, 75, 126, 45, 198, 240, 161, 170, 52, 35, }, { 151, 169, 193, 5, 55, 242, 9, 183, 41, 187, 115, 161, 250, 20, 27, 129, }, { 173, 110, 206, 168, 137, 25, 74, 24, 255, 250, 126, 210, 165, 229, 222, 103, }, { 21, 68, 46, 50, 154, 227, 203, 232, 54, 17, 244, 234, 77, 200, 158, 23, }, { 162, 115, 73, 102, 63, 14, 238, 228, 168, 108, 203, 131, 254, 91, 241, 197, }, { 171, 221, 152, 187, 170, 174, 220, 193, 182, 166, 226, 38, 85, 169, 167, 76, }, { 192, 194, 82, 37, 234, 66, 232, 28, 52, 209, 107, 245, 117, 148, 251, 41, }, { 182, 95, 126, 12, 245, 58, 28, 119, 221, 103, 5, 254, 155, 48, 36, 63, }, { 83, 8, 247, 131, 94, 106, 5, 132, 210, 2, 240, 77, 47, 73, 15, 154, }, { 237, 145, 65, 10, 110, 39, 18, 173, 82, 181, 230, 129, 55, 40, 54, 193, }, { 193, 170, 75, 125, 186, 149, 209, 103, 119, 203, 81, 98, 93, 55, 176, 196, }, { 225, 52, 237, 44, 40, 138, 253, 220, 192, 13, 29, 170, 20, 176, 196, 151, }, { 98, 177, 27, 67, 213, 76, 6, 248, 156, 189, 160, 118, 139, 207, 10, 236, }, { 36, 253, 194, 242, 17, 197, 200, 148, 120, 174, 164, 209, 233, 78, 155, 97, }, { 233, 242, 37, 169, 237, 253, 246, 130, 157, 221, 14, 152, 151, 225, 217, 243, }, { 101, 106, 84, 8, 166, 44, 169, 90, 150, 251, 6, 21, 83, 32, 56, 42, }, { 236, 249, 88, 82, 62, 240, 43, 214, 17, 175, 220, 22, 31, 139, 125, 44, }, { 93, 125, 105, 21, 184, 170, 152, 3, 198, 142, 127, 139, 92, 84, 107, 213, }, { 38, 45, 240, 66, 177, 168, 186, 98, 254, 154, 208, 60, 185, 203, 13, 120, }, { 190, 153, 182, 137, 48, 77, 23, 41, 128, 183, 22, 204, 24, 97, 57, 91, }, { 33, 246, 191, 9, 194, 200, 21, 192, 244, 220, 118, 95, 97, 36, 63, 190, }, { 75, 129, 108, 207, 210, 243, 24, 102, 53, 177, 197, 27, 105, 186, 40, 54, }, { 72, 57, 71, 39, 34, 73, 83, 235, 240, 159, 139, 97, 17, 156, 245, 194, }, { 202, 212, 168, 16, 143, 88, 145, 180, 239, 53, 12, 42, 166, 64, 112, 84, }, { 247, 200, 232, 246, 66, 211, 125, 185, 51, 50, 167, 58, 33, 94, 135, 116, }, { 124, 139, 214, 28, 122, 98, 141, 195, 50, 82, 9, 212, 61, 112, 84, 107, }, { 255, 14, 32, 115, 135, 164, 118, 231, 110, 226, 180, 8, 162, 15, 154, 16, }, { 32, 158, 166, 81, 146, 31, 44, 187, 183, 198, 76, 200, 73, 135, 116, 83, }, { 209, 229, 24, 180, 243, 123, 199, 219, 205, 168, 119, 6, 152, 149, 138, 12, }, { 133, 54, 160, 124, 222, 113, 109, 253, 21, 236, 33, 40, 111, 51, 183, 80, }, { 88, 118, 20, 238, 107, 167, 69, 87, 74, 252, 173, 5, 212, 62, 207, 10, }, { 73, 81, 94, 127, 114, 158, 106, 144, 179, 133, 177, 246, 57, 63, 190, 47, }, { 250, 5, 93, 136, 84, 169, 171, 179, 226, 144, 102, 134, 42, 101, 62, 207, }, { 135, 230, 146, 204, 126, 28, 31, 11, 147, 216, 85, 197, 63, 182, 33, 73, }, { 39, 69, 233, 26, 225, 127, 131, 25, 189, 128, 234, 171, 145, 104, 70, 149, }, { 232, 154, 60, 241, 189, 42, 207, 249, 222, 199, 52, 15, 191, 66, 146, 30, }, { 244, 112, 195, 30, 178, 105, 54, 52, 246, 28, 233, 64, 89, 120, 90, 128, }, { 90, 166, 38, 94, 203, 202, 55, 161, 204, 200, 217, 232, 132, 187, 89, 19, }, { 102, 210, 127, 224, 86, 150, 226, 215, 83, 213, 72, 111, 43, 6, 229, 222, }, { 240, 19, 167, 189, 49, 179, 210, 27, 57, 116, 1, 89, 249, 177, 181, 178, }, { 203, 188, 177, 72, 223, 143, 168, 207, 172, 47, 54, 189, 142, 227, 59, 185, }, { 14, 117, 158, 150, 230, 192, 157, 135, 20, 140, 143, 198, 115, 29, 100, 79, }, { 226, 140, 198, 196, 216, 48, 182, 81, 5, 35, 83, 208, 108, 150, 25, 99, }, { 87, 107, 147, 32, 221, 176, 225, 171, 29, 106, 24, 84, 143, 128, 224, 168, }, { 196, 161, 54, 134, 105, 152, 12, 51, 251, 185, 131, 236, 213, 93, 20, 27, }, { 155, 12, 109, 35, 113, 95, 230, 198, 187, 3, 136, 138, 217, 140, 233, 215, }, { 238, 41, 106, 226, 158, 157, 89, 32, 151, 155, 168, 251, 79, 14, 235, 53, }, { 26, 89, 169, 252, 44, 244, 111, 20, 97, 135, 65, 187, 22, 118, 177, 181, }, { 55, 10, 186, 211, 168, 145, 149, 165, 7, 227, 204, 207, 84, 202, 124, 93, }, { 46, 235, 56, 199, 116, 223, 177, 60, 163, 74, 195, 14, 58, 154, 16, 28, }, { 105, 207, 248, 46, 224, 129, 70, 43, 4, 67, 253, 62, 112, 184, 202, 124, }, { 139, 67, 62, 234, 56, 177, 240, 122, 1, 96, 174, 238, 28, 46, 211, 31, }, { 175, 190, 252, 24, 41, 116, 56, 238, 121, 206, 10, 63, 245, 96, 72, 126, }, { 194, 18, 96, 149, 74, 47, 154, 234, 178, 229, 31, 24, 37, 17, 109, 48, }, { 127, 51, 253, 244, 138, 216, 198, 78, 247, 124, 71, 174, 69, 86, 137, 159, }, { 100, 2, 77, 80, 246, 251, 144, 33, 213, 225, 60, 130, 123, 131, 115, 199, }, { 69, 244, 242, 89, 52, 51, 133, 225, 33, 61, 74, 221, 26, 167, 76, 121, }, { 20, 44, 55, 106, 202, 52, 242, 147, 117, 11, 206, 125, 101, 107, 213, 250, }, { 253, 222, 18, 195, 39, 201, 4, 17, 232, 214, 192, 229, 242, 138, 12, 9, }, { 172, 6, 215, 240, 217, 206, 115, 99, 188, 224, 68, 69, 141, 70, 149, 138, }, { 134, 142, 139, 148, 46, 203, 38, 112, 208, 194, 111, 82, 23, 21, 106, 164, }, { 118, 157, 44, 41, 31, 120, 244, 107, 233, 182, 110, 11, 238, 164, 223, 22, }, { 67, 71, 164, 74, 23, 132, 19, 56, 104, 97, 214, 41, 234, 235, 53, 82, }, { 80, 176, 220, 107, 174, 208, 78, 9, 23, 44, 190, 55, 87, 111, 210, 110, }, { 40, 88, 110, 212, 87, 104, 39, 229, 234, 22, 95, 250, 202, 214, 105, 55, }, { 170, 181, 129, 227, 250, 121, 229, 186, 245, 188, 216, 177, 125, 10, 236, 161, }, { 94, 197, 66, 253, 72, 16, 211, 142, 3, 160, 49, 241, 36, 114, 182, 33, }, { 221, 64, 180, 146, 181, 214, 40, 170, 95, 16, 140, 45, 187, 13, 120, 90, }, { 187, 146, 203, 114, 227, 64, 202, 125, 12, 197, 196, 66, 144, 11, 157, 132, }, { 150, 193, 216, 93, 103, 37, 48, 204, 106, 161, 73, 54, 210, 183, 80, 108, }, { 5, 11, 125, 251, 211, 13, 221, 84, 140, 114, 210, 142, 136, 106, 164, 223, }, { 123, 80, 153, 87, 9, 2, 34, 97, 56, 20, 175, 183, 229, 159, 102, 173, }, { 246, 160, 241, 174, 18, 4, 68, 194, 112, 40, 157, 173, 9, 253, 204, 153, }, { 43, 224, 69, 60, 167, 210, 108, 104, 47, 56, 17, 128, 178, 240, 180, 195, }, { 9, 174, 209, 221, 149, 160, 50, 37, 30, 202, 41, 165, 171, 242, 86, 137, }, { 199, 25, 29, 110, 153, 34, 71, 190, 62, 151, 205, 150, 173, 123, 201, 239, }, { 70, 76, 217, 177, 196, 137, 206, 108, 228, 19, 4, 167, 98, 129, 145, 141, }, { 13, 205, 181, 126, 22, 122, 214, 10, 209, 162, 193, 188, 11, 59, 185, 187, }, { 19, 247, 120, 33, 185, 84, 93, 49, 127, 77, 104, 30, 189, 132, 231, 60, }, { 97, 9, 48, 171, 37, 246, 77, 117, 89, 147, 238, 12, 243, 233, 215, 24, }, { 1, 104, 25, 88, 80, 215, 57, 123, 67, 26, 58, 151, 40, 163, 75, 237, }, { 239, 65, 115, 186, 206, 74, 96, 91, 212, 129, 146, 108, 103, 173, 160, 216, }, { 141, 240, 104, 249, 27, 6, 102, 163, 72, 60, 50, 26, 236, 98, 170, 52, }, { 211, 53, 42, 4, 83, 22, 181, 45, 75, 156, 3, 235, 200, 16, 28, 21, }, { 188, 73, 132, 57, 144, 32, 101, 223, 6, 131, 98, 33, 72, 228, 175, 66, }, { 241, 123, 190, 229, 97, 100, 235, 96, 122, 110, 59, 206, 209, 18, 254, 95, }, { 50, 1, 199, 40, 123, 156, 72, 241, 139, 145, 30, 65, 220, 160, 216, 130, }, { 92, 21, 112, 77, 232, 125, 161, 120, 133, 148, 69, 28, 116, 247, 32, 56, }, { 2, 208, 50, 176, 160, 109, 114, 246, 134, 52, 116, 237, 80, 133, 150, 25, }, { 177, 132, 49, 71, 134, 90, 179, 213, 215, 33, 163, 157, 67, 223, 22, 249, }, { 86, 3, 138, 120, 141, 103, 216, 208, 94, 112, 34, 195, 167, 35, 171, 69, }, { 81, 216, 197, 51, 254, 7, 119, 114, 84, 54, 132, 160, 127, 204, 153, 131, }, { 201, 108, 131, 248, 127, 226, 218, 57, 42, 27, 66, 80, 222, 102, 173, 160, }, { 214, 62, 87, 255, 128, 27, 104, 121, 199, 238, 209, 101, 64, 122, 184, 202, }, { 78, 138, 17, 52, 1, 254, 197, 50, 185, 195, 23, 149, 225, 208, 140, 233, }, { 200, 4, 154, 160, 47, 53, 227, 66, 105, 1, 120, 199, 246, 197, 230, 77, }, { 160, 163, 123, 214, 159, 99, 156, 18, 46, 88, 191, 110, 174, 222, 103, 220, }, { 49, 185, 236, 192, 139, 38, 3, 124, 78, 191, 80, 59, 164, 134, 5, 118, }, { 34, 78, 148, 225, 50, 114, 94, 77, 49, 242, 56, 37, 25, 2, 226, 74, }, { 165, 168, 6, 45, 76, 110, 65, 70, 162, 42, 109, 224, 38, 180, 195, 3, }, { 23, 148, 28, 130, 58, 142, 185, 30, 176, 37, 128, 7, 29, 77, 8, 14, }, { 51, 105, 222, 112, 43, 75, 113, 138, 200, 139, 36, 214, 244, 3, 147, 111, }, { 148, 17, 234, 237, 199, 72, 66, 58, 236, 149, 61, 219, 130, 50, 198, 117, }, { 235, 34, 23, 25, 77, 144, 132, 116, 27, 233, 122, 117, 199, 100, 79, 234, }, { 132, 94, 185, 36, 142, 166, 84, 134, 86, 246, 27, 191, 71, 144, 252, 189, }, { 8, 198, 200, 133, 197, 119, 11, 94, 93, 208, 19, 50, 131, 81, 29, 100, }, { 37, 149, 219, 170, 65, 18, 241, 239, 59, 180, 158, 70, 193, 237, 208, 140, }, { 249, 189, 118, 96, 164, 19, 224, 62, 39, 190, 40, 252, 82, 67, 227, 59, }, { 57, 127, 36, 69, 78, 81, 8, 34, 19, 111, 67, 9, 39, 215, 24, 18, }, { 96, 97, 41, 243, 117, 33, 116, 14, 26, 137, 212, 155, 219, 74, 156, 245, }, { 178, 60, 26, 175, 118, 224, 248, 88, 18, 15, 237, 231, 59, 249, 203, 13, }, { 212, 238, 101, 79, 32, 118, 26, 143, 65, 218, 165, 136, 16, 255, 46, 211, }, { 111, 124, 174, 61, 195, 54, 208, 242, 77, 31, 97, 202, 128, 244, 179, 87, }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, { 109, 172, 156, 141, 99, 91, 162, 4, 203, 43, 21, 39, 208, 113, 37, 78, }, { 161, 203, 98, 142, 207, 180, 165, 105, 109, 66, 133, 249, 134, 125, 44, 49, }, { 18, 159, 97, 121, 233, 131, 100, 74, 60, 87, 82, 137, 149, 39, 172, 209, }, { 216, 75, 201, 105, 102, 219, 245, 254, 211, 98, 94, 163, 51, 103, 220, 133, }, { 163, 27, 80, 62, 111, 217, 215, 159, 235, 118, 241, 20, 214, 248, 186, 40, }, { 164, 192, 31, 117, 28, 185, 120, 61, 225, 48, 87, 119, 14, 23, 136, 238, }, { 207, 223, 213, 235, 92, 85, 76, 224, 99, 71, 222, 164, 46, 42, 212, 139, }, { 154, 100, 116, 123, 33, 136, 223, 189, 248, 25, 178, 29, 241, 47, 162, 58, }, { 204, 103, 254, 3, 172, 239, 7, 109, 166, 105, 144, 222, 86, 12, 9, 127, }, { 82, 96, 238, 219, 14, 189, 60, 255, 145, 24, 202, 218, 7, 234, 68, 119, }, { 28, 234, 255, 239, 15, 67, 249, 205, 40, 219, 221, 79, 230, 58, 200, 158, }, { 47, 131, 33, 159, 36, 8, 136, 71, 224, 80, 249, 153, 18, 57, 91, 241, }, { 126, 91, 228, 172, 218, 15, 255, 53, 180, 102, 125, 57, 109, 245, 194, 114, }, { 147, 202, 165, 166, 180, 40, 237, 152, 230, 211, 155, 184, 90, 221, 244, 179, }, { 66, 47, 189, 18, 71, 83, 42, 67, 43, 123, 236, 190, 194, 72, 126, 191, }, { 179, 84, 3, 247, 38, 55, 193, 35, 81, 21, 215, 112, 19, 90, 128, 224, }, { 24, 137, 155, 76, 140, 153, 29, 226, 231, 179, 53, 86, 70, 243, 39, 172, }, { 184, 42, 224, 154, 19, 250, 129, 240, 201, 235, 138, 56, 232, 45, 64, 112, }, { 252, 182, 11, 155, 119, 30, 61, 106, 171, 204, 250, 114, 218, 41, 71, 228, }, { 68, 156, 235, 1, 100, 228, 188, 154, 98, 39, 112, 74, 50, 4, 7, 148, }, { 230, 239, 162, 103, 91, 234, 82, 126, 202, 75, 187, 201, 204, 95, 246, 81, }, { 140, 152, 113, 161, 75, 209, 95, 216, 11, 38, 8, 141, 196, 193, 225, 217, }, { 198, 113, 4, 54, 201, 245, 126, 197, 125, 141, 247, 1, 133, 216, 130, 2, }, { 99, 217, 2, 27, 133, 155, 63, 131, 223, 167, 154, 225, 163, 108, 65, 1, }, { 191, 241, 175, 209, 96, 154, 46, 82, 195, 173, 44, 91, 48, 194, 114, 182, }, { 242, 195, 149, 13, 145, 222, 160, 237, 191, 64, 117, 180, 169, 52, 35, 171, }, { 44, 59, 10, 119, 212, 178, 195, 202, 37, 126, 183, 227, 106, 31, 134, 5, }, { 17, 39, 74, 145, 25, 57, 47, 199, 249, 121, 28, 243, 237, 1, 113, 37, }, { 115, 150, 81, 210, 204, 117, 41, 63, 101, 196, 188, 133, 102, 206, 123, 201, }, { 220, 40, 173, 202, 229, 1, 17, 209, 28, 10, 182, 186, 147, 174, 51, 183, }, { 217, 35, 208, 49, 54, 12, 204, 133, 144, 120, 100, 52, 27, 196, 151, 104, }, { 146, 162, 188, 254, 228, 255, 212, 227, 165, 201, 161, 47, 114, 126, 191, 94, }, { 62, 164, 107, 14, 61, 49, 167, 128, 25, 41, 229, 106, 255, 56, 42, 212, }, { 210, 93, 51, 92, 3, 193, 140, 86, 8, 134, 57, 124, 224, 179, 87, 248, }, { 89, 30, 13, 182, 59, 112, 124, 44, 9, 230, 151, 146, 252, 157, 132, 231, }, { 117, 37, 7, 193, 239, 194, 191, 230, 44, 152, 32, 113, 150, 130, 2, 226, }, { 25, 225, 130, 20, 220, 78, 36, 153, 164, 169, 15, 193, 110, 80, 108, 65, }, { 180, 143, 76, 188, 85, 87, 110, 129, 91, 83, 113, 19, 203, 181, 178, 38, }, { 129, 85, 196, 223, 93, 171, 137, 210, 218, 132, 201, 49, 207, 250, 88, 98, }, { 228, 63, 144, 215, 251, 135, 32, 136, 76, 127, 207, 36, 156, 218, 96, 72, }, { 229, 87, 137, 143, 171, 80, 25, 243, 15, 101, 245, 179, 180, 121, 43, 165, }, { 15, 29, 135, 206, 182, 23, 164, 252, 87, 150, 181, 81, 91, 190, 47, 162, }, { 71, 36, 192, 233, 148, 94, 247, 23, 167, 9, 62, 48, 74, 34, 218, 96, }, { 156, 215, 34, 104, 2, 63, 73, 100, 177, 69, 46, 233, 1, 99, 219, 17, }, { 42, 136, 92, 100, 247, 5, 85, 19, 108, 34, 43, 23, 154, 83, 255, 46, }, { 168, 101, 179, 83, 90, 20, 151, 76, 115, 136, 172, 92, 45, 143, 122, 184, }, { 91, 206, 63, 6, 155, 29, 14, 218, 143, 210, 227, 127, 172, 24, 18, 254, }, { 143, 32, 90, 73, 187, 107, 20, 85, 206, 8, 70, 247, 188, 231, 60, 45, }, { 4, 99, 100, 163, 131, 218, 228, 47, 207, 104, 232, 25, 160, 201, 239, 50, }, { 166, 16, 45, 197, 188, 212, 10, 203, 103, 4, 35, 154, 94, 146, 30, 247, }, { 114, 254, 72, 138, 156, 162, 16, 68, 38, 222, 134, 18, 78, 109, 48, 36, }, { 186, 250, 210, 42, 179, 151, 243, 6, 79, 223, 254, 213, 184, 168, 214, 105, }, { 48, 209, 245, 152, 219, 241, 58, 7, 13, 165, 106, 172, 140, 37, 78, 155, }, { 76, 90, 35, 132, 161, 147, 183, 196, 63, 247, 99, 120, 177, 85, 26, 240, }, { 130, 237, 239, 55, 173, 17, 194, 95, 31, 170, 135, 75, 183, 220, 133, 150, }, { 106, 119, 211, 198, 16, 59, 13, 166, 193, 109, 179, 68, 8, 158, 23, 136, }, { 136, 251, 21, 2, 200, 11, 187, 247, 196, 78, 224, 148, 100, 8, 14, 235, }, { 60, 116, 89, 190, 157, 92, 213, 118, 159, 29, 145, 135, 175, 189, 188, 205, }, { 110, 20, 183, 101, 147, 225, 233, 137, 14, 5, 91, 93, 168, 87, 248, 186, }, { 11, 126, 227, 109, 53, 205, 64, 211, 152, 254, 93, 72, 251, 119, 192, 144, }, { 158, 7, 16, 216, 162, 82, 59, 146, 55, 113, 90, 4, 81, 230, 77, 8, }, { 104, 167, 225, 118, 176, 86, 127, 80, 71, 89, 199, 169, 88, 27, 129, 145, }, { 103, 186, 102, 184, 6, 65, 219, 172, 16, 207, 114, 248, 3, 165, 174, 51, }, { 197, 201, 47, 222, 57, 79, 53, 72, 184, 163, 185, 123, 253, 254, 95, 246, }, { 116, 77, 30, 153, 191, 21, 134, 157, 111, 130, 26, 230, 190, 33, 73, 15, }, { 64, 255, 143, 162, 231, 62, 88, 181, 173, 79, 152, 83, 146, 205, 232, 166, }, { 12, 165, 172, 38, 70, 173, 239, 113, 146, 184, 251, 43, 35, 152, 242, 86, }, { 231, 135, 187, 63, 11, 61, 107, 5, 137, 81, 129, 94, 228, 252, 189, 188, }, { 157, 191, 59, 48, 82, 232, 112, 31, 242, 95, 20, 126, 41, 192, 144, 252, }, { 144, 114, 142, 78, 68, 146, 166, 21, 35, 253, 213, 194, 34, 251, 41, 71, }, { 122, 56, 128, 15, 89, 213, 27, 26, 123, 14, 149, 32, 205, 60, 45, 64, }, { 58, 199, 15, 173, 190, 235, 67, 175, 214, 65, 13, 115, 95, 241, 197, 230, }, { 53, 218, 136, 99, 8, 252, 231, 83, 129, 215, 184, 34, 4, 79, 234, 68, }, { 52, 178, 145, 59, 88, 43, 222, 40, 194, 205, 130, 181, 44, 236, 161, 169, }, { 159, 111, 9, 128, 242, 133, 2, 233, 116, 107, 96, 147, 121, 69, 6, 229, }, { 183, 55, 103, 84, 165, 237, 37, 12, 158, 125, 63, 105, 179, 147, 111, 210, }, { 248, 213, 111, 56, 244, 196, 217, 69, 100, 164, 18, 107, 122, 224, 168, 214, }, { 79, 226, 8, 108, 81, 41, 252, 73, 250, 217, 45, 2, 201, 115, 199, 4, }, { 107, 31, 202, 158, 64, 236, 52, 221, 130, 119, 137, 211, 32, 61, 92, 101, }, { 131, 133, 246, 111, 253, 198, 251, 36, 92, 176, 189, 220, 159, 127, 206, 123, }, { 95, 173, 91, 165, 24, 199, 234, 245, 64, 186, 11, 102, 12, 209, 253, 204, }, { 167, 120, 52, 157, 236, 3, 51, 176, 36, 30, 25, 13, 118, 49, 85, 26, }, { 30, 58, 205, 95, 175, 46, 139, 59, 174, 239, 169, 162, 182, 191, 94, 135, }, { 16, 79, 83, 201, 73, 238, 22, 188, 186, 99, 38, 100, 197, 162, 58, 200, }, { 195, 122, 121, 205, 26, 248, 163, 145, 241, 255, 37, 143, 13, 178, 38, 221, }, { 120, 232, 178, 191, 249, 184, 105, 236, 253, 58, 225, 205, 157, 185, 187, 89, }, { 45, 83, 19, 47, 132, 101, 250, 177, 102, 100, 141, 116, 66, 188, 205, 232, }, { 119, 245, 53, 113, 79, 175, 205, 16, 170, 172, 84, 156, 198, 7, 148, 251, }, { 227, 228, 223, 156, 136, 231, 143, 42, 70, 57, 105, 71, 68, 53, 82, 142, }, { 128, 61, 221, 135, 13, 124, 176, 169, 153, 158, 243, 166, 231, 89, 19, 143, }, }, { { 162, 200, 129, 226, 59, 179, 194, 101, 197, 35, 136, 168, 75, 160, 7, 252, }, { 126, 94, 186, 115, 31, 76, 148, 143, 114, 196, 83, 180, 103, 253, 230, 238, }, { 101, 207, 155, 11, 121, 216, 60, 193, 42, 254, 161, 150, 218, 235, 22, 221, }, { 9, 206, 31, 40, 34, 205, 217, 58, 137, 22, 239, 30, 107, 179, 80, 17, }, { 185, 89, 160, 154, 93, 39, 106, 43, 157, 25, 122, 138, 246, 182, 247, 207, }, { 170, 35, 162, 143, 220, 218, 124, 24, 161, 8, 6, 245, 146, 185, 221, 110, }, { 60, 64, 25, 23, 98, 9, 227, 111, 205, 37, 107, 159, 199, 162, 46, 49, }, { 146, 247, 75, 79, 44, 6, 192, 168, 94, 217, 42, 165, 216, 246, 158, 22, }, { 57, 241, 213, 133, 53, 120, 219, 247, 18, 236, 77, 19, 248, 229, 201, 251, }, { 240, 195, 100, 92, 75, 36, 10, 127, 178, 148, 111, 57, 154, 205, 184, 196, }, { 203, 120, 201, 83, 55, 215, 31, 6, 185, 2, 224, 172, 197, 191, 166, 250, }, { 254, 246, 207, 108, 119, 19, 37, 83, 253, 49, 100, 45, 105, 174, 216, 218, }, { 224, 214, 34, 134, 70, 246, 181, 133, 122, 194, 176, 131, 235, 255, 207, 35, }, { 2, 74, 120, 138, 73, 139, 206, 142, 25, 122, 194, 134, 167, 151, 215, 197, }, { 78, 97, 112, 222, 8, 249, 150, 66, 233, 62, 241, 185, 244, 171, 127, 4, }, { 74, 245, 128, 9, 154, 44, 201, 157, 219, 202, 182, 118, 121, 70, 18, 77, }, { 229, 103, 238, 20, 17, 135, 141, 29, 165, 11, 150, 15, 212, 184, 40, 233, }, { 63, 47, 93, 216, 238, 38, 74, 166, 57, 98, 200, 90, 210, 159, 115, 119, }, { 112, 107, 17, 67, 35, 123, 187, 163, 61, 97, 88, 160, 148, 158, 134, 240, }, { 12, 127, 211, 186, 117, 188, 225, 162, 86, 223, 201, 146, 84, 244, 183, 219, }, { 250, 98, 63, 187, 229, 198, 122, 140, 207, 197, 35, 226, 228, 67, 181, 147, }, { 192, 252, 174, 241, 92, 145, 8, 178, 41, 110, 205, 52, 9, 155, 33, 46, }, { 65, 113, 231, 171, 241, 106, 222, 41, 75, 166, 155, 238, 181, 98, 149, 153, }, { 161, 167, 197, 45, 183, 156, 107, 172, 49, 100, 43, 109, 94, 157, 90, 186, }, { 96, 126, 87, 153, 46, 169, 4, 89, 245, 55, 135, 26, 229, 172, 241, 23, }, { 167, 121, 77, 112, 108, 194, 250, 253, 26, 234, 174, 36, 116, 231, 224, 54, }, { 130, 226, 13, 149, 33, 212, 127, 82, 150, 143, 245, 31, 169, 196, 233, 241, }, { 83, 46, 217, 251, 181, 51, 175, 93, 154, 138, 134, 210, 99, 199, 53, 187, }, { 181, 38, 115, 32, 40, 155, 139, 137, 203, 198, 179, 24, 162, 66, 64, 20, }, { 158, 136, 152, 245, 89, 186, 33, 10, 8, 6, 227, 55, 140, 2, 41, 205, }, { 150, 99, 187, 152, 190, 211, 159, 119, 108, 45, 109, 106, 85, 27, 243, 95, }, { 76, 43, 8, 84, 65, 114, 88, 204, 240, 68, 51, 63, 83, 60, 168, 193, }, { 30, 32, 237, 234, 49, 229, 144, 214, 135, 243, 212, 174, 130, 81, 23, 249, }, { 103, 133, 227, 129, 48, 83, 242, 79, 51, 132, 99, 16, 125, 124, 193, 24, }, { 227, 185, 102, 73, 202, 217, 28, 76, 142, 133, 19, 70, 254, 194, 146, 101, }, { 42, 139, 215, 144, 180, 133, 205, 196, 46, 253, 49, 108, 156, 234, 227, 90, }, { 172, 253, 42, 210, 7, 132, 237, 73, 138, 134, 131, 188, 184, 195, 103, 226, }, { 67, 59, 159, 33, 184, 225, 16, 167, 82, 220, 89, 104, 18, 245, 66, 92, }, { 140, 215, 166, 165, 29, 227, 80, 126, 217, 42, 254, 11, 90, 167, 137, 239, }, { 199, 7, 26, 233, 66, 107, 254, 164, 239, 221, 41, 62, 145, 75, 17, 33, }, { 38, 244, 4, 42, 193, 57, 44, 102, 120, 34, 248, 254, 200, 30, 84, 129, }, { 41, 228, 147, 95, 56, 170, 100, 13, 218, 186, 146, 169, 137, 215, 190, 28, }, { 28, 106, 149, 96, 120, 110, 94, 88, 158, 137, 22, 40, 37, 198, 192, 60, }, { 77, 14, 52, 17, 132, 214, 63, 139, 29, 121, 82, 124, 225, 150, 34, 66, }, { 157, 231, 220, 58, 213, 149, 136, 195, 252, 65, 64, 242, 153, 63, 116, 139, }, { 242, 137, 28, 214, 2, 175, 196, 241, 171, 238, 173, 191, 61, 90, 111, 1, }, { 33, 15, 176, 50, 223, 195, 218, 112, 190, 145, 28, 244, 80, 206, 100, 142, }, { 109, 36, 184, 102, 158, 177, 130, 188, 78, 213, 47, 203, 3, 242, 204, 79, }, { 188, 232, 108, 8, 10, 86, 82, 179, 66, 208, 92, 6, 201, 241, 16, 5, }, { 154, 28, 104, 34, 203, 111, 126, 213, 58, 242, 164, 248, 1, 239, 68, 132, }, { 39, 209, 56, 111, 4, 157, 75, 33, 149, 31, 153, 189, 122, 180, 222, 2, }, { 20, 129, 182, 13, 159, 7, 224, 37, 250, 162, 152, 117, 252, 223, 26, 174, }, { 94, 116, 54, 4, 5, 43, 41, 184, 33, 104, 46, 3, 133, 153, 8, 227, }, { 228, 66, 210, 81, 212, 35, 234, 90, 72, 54, 247, 76, 102, 18, 162, 106, }, { 211, 134, 172, 228, 221, 108, 30, 129, 21, 127, 177, 75, 109, 148, 11, 143, }, { 225, 243, 30, 195, 131, 82, 210, 194, 151, 255, 209, 192, 89, 85, 69, 160, }, { 105, 176, 72, 177, 12, 100, 221, 99, 124, 33, 104, 4, 142, 31, 161, 6, }, { 73, 154, 196, 198, 22, 3, 96, 84, 47, 141, 21, 179, 108, 123, 79, 11, }, { 171, 6, 158, 202, 25, 126, 27, 95, 76, 53, 103, 182, 32, 19, 87, 237, }, { 179, 248, 251, 125, 243, 197, 26, 216, 224, 72, 54, 81, 136, 56, 250, 152, }, { 163, 237, 189, 167, 254, 23, 165, 34, 40, 30, 233, 235, 249, 10, 141, 127, }, { 11, 132, 103, 162, 107, 70, 23, 180, 144, 108, 45, 152, 204, 36, 135, 212, }, { 144, 189, 51, 197, 101, 141, 14, 38, 71, 163, 232, 35, 127, 97, 73, 211, }, { 252, 188, 183, 230, 62, 152, 235, 221, 228, 75, 166, 171, 206, 57, 15, 31, }, { 194, 182, 214, 123, 21, 26, 198, 60, 48, 20, 15, 178, 174, 12, 246, 235, }, { 128, 168, 117, 31, 104, 95, 177, 220, 143, 245, 55, 153, 14, 83, 62, 52, }, { 231, 45, 150, 158, 88, 12, 67, 147, 188, 113, 84, 137, 115, 47, 255, 44, }, { 99, 17, 19, 86, 162, 134, 173, 144, 1, 112, 36, 223, 240, 145, 172, 81, }, { 48, 63, 202, 173, 23, 181, 2, 205, 155, 250, 162, 13, 147, 86, 153, 234, }, { 34, 96, 244, 253, 83, 236, 115, 185, 74, 214, 191, 49, 69, 243, 57, 200, }, { 246, 29, 236, 1, 144, 122, 155, 46, 153, 26, 234, 112, 176, 183, 2, 72, }, { 168, 105, 218, 5, 149, 81, 178, 150, 184, 114, 196, 115, 53, 46, 10, 171, }, { 87, 186, 41, 44, 39, 230, 240, 130, 168, 126, 193, 29, 238, 42, 88, 242, }, { 142, 157, 222, 47, 84, 104, 158, 240, 192, 80, 60, 141, 253, 48, 94, 42, }, { 195, 147, 234, 62, 208, 190, 161, 123, 221, 41, 110, 241, 28, 166, 124, 104, }, { 198, 34, 38, 172, 135, 207, 153, 227, 2, 224, 72, 125, 35, 225, 155, 162, }, { 80, 65, 157, 52, 57, 28, 6, 148, 110, 205, 37, 23, 118, 250, 104, 253, }, { 117, 218, 221, 209, 116, 10, 131, 59, 226, 168, 126, 44, 171, 217, 97, 58, }, { 75, 208, 188, 76, 95, 136, 174, 218, 54, 247, 215, 53, 203, 236, 152, 206, }, { 108, 1, 132, 35, 91, 21, 229, 251, 163, 232, 78, 136, 177, 88, 70, 204, }, { 166, 92, 113, 53, 169, 102, 157, 186, 247, 215, 207, 103, 198, 77, 106, 181, }, { 164, 22, 9, 191, 224, 237, 83, 52, 238, 173, 13, 225, 97, 218, 189, 112, }, { 245, 114, 168, 206, 28, 85, 50, 231, 109, 93, 73, 181, 165, 138, 95, 14, }, { 248, 40, 71, 49, 172, 77, 180, 2, 214, 191, 225, 100, 67, 212, 98, 86, }, { 156, 194, 224, 127, 16, 49, 239, 132, 17, 124, 33, 177, 43, 149, 254, 8, }, { 210, 163, 144, 161, 24, 200, 121, 198, 248, 66, 208, 8, 223, 62, 129, 12, }, { 205, 166, 65, 14, 236, 137, 142, 87, 146, 140, 101, 229, 239, 197, 28, 118, }, { 220, 150, 59, 145, 36, 255, 86, 234, 183, 231, 219, 28, 44, 93, 225, 18, }, { 29, 79, 169, 37, 189, 202, 57, 31, 115, 180, 119, 107, 151, 108, 74, 191, }, { 131, 199, 49, 208, 228, 112, 24, 21, 123, 178, 148, 92, 27, 110, 99, 114, }, { 46, 31, 39, 71, 38, 80, 146, 27, 28, 9, 118, 163, 17, 7, 142, 19, }, { 241, 230, 88, 25, 142, 128, 109, 56, 95, 169, 14, 122, 40, 103, 50, 71, }, { 253, 153, 139, 163, 251, 60, 140, 154, 9, 118, 199, 232, 124, 147, 133, 156, }, { 129, 141, 73, 90, 173, 251, 214, 155, 98, 200, 86, 218, 188, 249, 180, 183, }, { 177, 178, 131, 247, 186, 78, 212, 86, 249, 50, 244, 215, 47, 175, 45, 93, }, { 79, 68, 76, 155, 205, 93, 241, 5, 4, 3, 144, 250, 70, 1, 245, 135, }, { 71, 175, 111, 246, 42, 52, 79, 120, 96, 40, 30, 167, 159, 24, 47, 21, }, { 19, 122, 2, 21, 129, 253, 22, 51, 60, 17, 124, 127, 100, 15, 42, 161, }, { 70, 138, 83, 179, 239, 144, 40, 63, 141, 21, 127, 228, 45, 178, 165, 150, }, { 91, 197, 250, 150, 82, 90, 17, 32, 254, 161, 8, 143, 186, 222, 239, 41, }, { 251, 71, 3, 254, 32, 98, 29, 203, 34, 248, 66, 161, 86, 233, 63, 16, }, { 237, 140, 205, 121, 246, 238, 51, 96, 193, 32, 24, 82, 13, 161, 242, 123, }, { 148, 41, 195, 18, 247, 88, 81, 249, 117, 87, 175, 236, 242, 140, 36, 154, }, { 37, 155, 64, 229, 77, 22, 133, 175, 140, 101, 91, 59, 221, 35, 9, 199, }, { 165, 51, 53, 250, 37, 73, 52, 115, 3, 144, 108, 162, 211, 112, 55, 243, }, { 221, 179, 7, 212, 225, 91, 49, 173, 90, 218, 186, 95, 158, 247, 107, 145, }, { 56, 212, 233, 192, 240, 220, 188, 176, 255, 209, 44, 80, 74, 79, 67, 120, }, { 88, 170, 190, 89, 222, 117, 184, 233, 10, 230, 171, 74, 175, 227, 178, 111, }, { 15, 16, 151, 117, 249, 147, 72, 107, 162, 152, 106, 87, 65, 201, 234, 157, }, { 218, 72, 179, 204, 255, 161, 199, 187, 156, 105, 94, 85, 6, 39, 91, 158, }, { 61, 101, 37, 82, 167, 173, 132, 40, 32, 24, 10, 220, 117, 8, 164, 178, }, { 232, 61, 1, 235, 161, 159, 11, 248, 30, 233, 62, 222, 50, 230, 21, 177, }, { 233, 24, 61, 174, 100, 59, 108, 191, 243, 212, 95, 157, 128, 76, 159, 50, }, { 24, 254, 101, 183, 234, 187, 1, 135, 172, 125, 81, 231, 168, 43, 173, 117, }, { 149, 12, 255, 87, 50, 252, 54, 190, 152, 106, 206, 175, 64, 38, 174, 25, }, { 238, 227, 137, 182, 122, 193, 154, 169, 53, 103, 187, 151, 24, 156, 175, 61, }, { 119, 144, 165, 91, 61, 129, 77, 181, 251, 210, 188, 170, 12, 78, 182, 255, }, { 114, 33, 105, 201, 106, 240, 117, 45, 36, 27, 154, 38, 51, 9, 81, 53, }, { 111, 110, 192, 236, 215, 58, 76, 50, 87, 175, 237, 77, 164, 101, 27, 138, }, { 81, 100, 161, 113, 252, 184, 97, 211, 131, 240, 68, 84, 196, 80, 226, 126, }, { 127, 123, 134, 54, 218, 232, 243, 200, 159, 249, 50, 247, 213, 87, 108, 109, }, { 223, 249, 127, 94, 168, 208, 255, 35, 67, 160, 120, 217, 57, 96, 188, 84, }, { 215, 18, 92, 51, 79, 185, 65, 94, 39, 139, 246, 132, 224, 121, 102, 198, }, { 212, 125, 24, 252, 195, 150, 232, 151, 211, 204, 85, 65, 245, 68, 59, 128, }, { 107, 250, 48, 59, 69, 239, 19, 237, 101, 91, 170, 130, 41, 136, 118, 195, }, { 58, 158, 145, 74, 185, 87, 114, 62, 230, 171, 238, 214, 237, 216, 148, 189, }, { 32, 42, 140, 119, 26, 103, 189, 55, 83, 172, 125, 183, 226, 100, 238, 13, }, { 10, 161, 91, 231, 174, 226, 112, 243, 125, 81, 76, 219, 126, 142, 13, 87, }, { 66, 30, 163, 100, 125, 69, 119, 224, 191, 225, 56, 43, 160, 95, 200, 223, }, { 204, 131, 125, 75, 41, 45, 233, 16, 127, 177, 4, 166, 93, 111, 150, 245, }, { 123, 239, 118, 225, 72, 61, 172, 23, 173, 13, 117, 56, 88, 186, 1, 36, }, { 143, 184, 226, 106, 145, 204, 249, 183, 45, 109, 93, 206, 79, 154, 212, 169, }, { 59, 187, 173, 15, 124, 243, 21, 121, 11, 150, 143, 149, 95, 114, 30, 62, }, { 125, 49, 254, 188, 147, 99, 61, 70, 134, 131, 240, 113, 114, 192, 187, 168, }, { 191, 135, 40, 199, 134, 121, 251, 122, 182, 151, 255, 195, 220, 204, 77, 67, }, { 208, 233, 232, 43, 81, 67, 183, 72, 225, 56, 18, 142, 120, 169, 86, 201, }, { 222, 220, 67, 27, 109, 116, 152, 100, 174, 157, 25, 154, 139, 202, 54, 215, }, { 202, 93, 245, 22, 242, 115, 120, 65, 84, 63, 129, 239, 119, 21, 44, 121, }, { 44, 85, 95, 205, 111, 219, 92, 149, 5, 115, 180, 37, 182, 144, 89, 214, }, { 25, 219, 89, 242, 47, 31, 102, 192, 65, 64, 48, 164, 26, 129, 39, 246, }, { 118, 181, 153, 30, 248, 37, 42, 242, 22, 239, 221, 233, 190, 228, 60, 124, }, { 18, 95, 62, 80, 68, 89, 113, 116, 209, 44, 29, 60, 214, 165, 160, 34, }, { 116, 255, 225, 148, 177, 174, 228, 124, 15, 149, 31, 111, 25, 115, 235, 185, }, { 213, 88, 36, 185, 6, 50, 143, 208, 62, 241, 52, 2, 71, 238, 177, 3, }, { 139, 44, 18, 189, 3, 25, 166, 104, 31, 153, 26, 1, 194, 119, 185, 224, }, { 7, 251, 180, 24, 30, 250, 246, 22, 198, 179, 228, 10, 152, 208, 48, 15, }, { 89, 143, 130, 28, 27, 209, 223, 174, 231, 219, 202, 9, 29, 73, 56, 236, }, { 176, 151, 191, 178, 127, 234, 179, 17, 20, 15, 149, 148, 157, 5, 167, 222, }, { 31, 5, 209, 175, 244, 65, 247, 145, 106, 206, 181, 237, 48, 251, 157, 122, }, { 97, 91, 107, 220, 235, 13, 99, 30, 24, 10, 230, 89, 87, 6, 123, 148, }, { 26, 180, 29, 61, 163, 48, 207, 9, 181, 7, 147, 97, 15, 188, 122, 176, }, { 200, 23, 141, 156, 187, 248, 182, 207, 77, 69, 67, 105, 208, 130, 251, 188, }, { 151, 70, 135, 221, 123, 119, 248, 48, 129, 16, 12, 41, 231, 177, 121, 220, }, { 23, 238, 242, 194, 19, 40, 73, 236, 14, 229, 59, 176, 233, 226, 71, 232, }, { 169, 76, 230, 64, 80, 245, 213, 209, 85, 79, 165, 48, 135, 132, 128, 40, }, { 145, 152, 15, 128, 160, 41, 105, 97, 170, 158, 137, 96, 205, 203, 195, 80, }, { 159, 173, 164, 176, 156, 30, 70, 77, 229, 59, 130, 116, 62, 168, 163, 78, }, { 27, 145, 33, 120, 102, 148, 168, 78, 88, 58, 242, 34, 189, 22, 240, 51, }, { 187, 19, 216, 16, 20, 172, 164, 165, 132, 99, 184, 12, 81, 33, 32, 10, }, { 209, 204, 212, 110, 148, 231, 208, 15, 12, 5, 115, 205, 202, 3, 220, 74, }, { 122, 202, 74, 164, 141, 153, 203, 80, 64, 48, 20, 123, 234, 16, 139, 167, }, { 180, 3, 79, 101, 237, 63, 236, 206, 38, 251, 210, 91, 16, 232, 202, 151, }, { 95, 81, 10, 65, 192, 143, 78, 255, 204, 85, 79, 64, 55, 51, 130, 96, }, { 113, 78, 45, 6, 230, 223, 220, 228, 208, 92, 57, 227, 38, 52, 12, 115, }, { 14, 53, 171, 48, 60, 55, 47, 44, 79, 165, 11, 20, 243, 99, 96, 30, }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, { 120, 128, 50, 46, 196, 18, 5, 222, 89, 74, 214, 253, 77, 135, 92, 98, }, { 36, 190, 124, 160, 136, 178, 226, 232, 97, 88, 58, 120, 111, 137, 131, 68, }, { 64, 84, 219, 238, 52, 206, 185, 110, 166, 155, 250, 173, 7, 200, 31, 26, }, { 134, 118, 253, 66, 179, 1, 32, 141, 164, 123, 178, 208, 36, 41, 132, 184, }, { 82, 11, 229, 190, 112, 151, 200, 26, 119, 183, 231, 145, 209, 109, 191, 56, }, { 243, 172, 32, 147, 199, 11, 163, 182, 70, 211, 204, 252, 143, 240, 229, 130, }, { 17, 48, 122, 159, 200, 118, 216, 189, 37, 107, 190, 249, 195, 152, 253, 100, }, { 40, 193, 175, 26, 253, 14, 3, 74, 55, 135, 243, 234, 59, 125, 52, 159, }, { 92, 62, 78, 142, 76, 160, 231, 54, 56, 18, 236, 133, 34, 14, 223, 38, }, { 152, 86, 16, 168, 130, 228, 176, 91, 35, 136, 102, 126, 166, 120, 147, 65, }, { 193, 217, 146, 180, 153, 53, 111, 245, 196, 83, 172, 119, 187, 49, 171, 173, }, { 214, 55, 96, 118, 138, 29, 38, 25, 202, 182, 151, 199, 82, 211, 236, 69, }, { 3, 111, 68, 207, 140, 47, 169, 201, 244, 71, 163, 197, 21, 61, 93, 70, }, { 8, 235, 35, 109, 231, 105, 190, 125, 100, 43, 142, 93, 217, 25, 218, 146, }, { 174, 183, 82, 88, 78, 15, 35, 199, 147, 252, 65, 58, 31, 84, 176, 39, }, { 100, 234, 167, 78, 188, 124, 91, 134, 199, 195, 192, 213, 104, 65, 156, 94, }, { 45, 112, 99, 136, 170, 127, 59, 210, 232, 78, 213, 102, 4, 58, 211, 85, }, { 50, 117, 178, 39, 94, 62, 204, 67, 130, 128, 96, 139, 52, 193, 78, 47, }, { 6, 222, 136, 93, 219, 94, 145, 81, 43, 142, 133, 73, 42, 122, 186, 140, }, { 52, 171, 58, 122, 133, 96, 93, 18, 169, 14, 229, 194, 30, 187, 244, 163, }, { 93, 27, 114, 203, 137, 4, 128, 113, 213, 47, 141, 198, 144, 164, 85, 165, }, { 132, 60, 133, 200, 250, 138, 238, 3, 189, 1, 112, 86, 131, 190, 83, 125, }, { 49, 26, 246, 232, 210, 17, 101, 138, 118, 199, 195, 78, 33, 252, 19, 105, }, { 249, 13, 123, 116, 105, 233, 211, 69, 59, 130, 128, 39, 241, 126, 232, 213, }, { 147, 210, 119, 10, 233, 162, 167, 239, 179, 228, 75, 230, 106, 92, 20, 149, }, { 135, 83, 193, 7, 118, 165, 71, 202, 73, 70, 211, 147, 150, 131, 14, 59, }, { 155, 57, 84, 103, 14, 203, 25, 146, 215, 207, 197, 187, 179, 69, 206, 7, }, { 13, 90, 239, 255, 176, 24, 134, 229, 187, 226, 168, 209, 230, 94, 61, 88, }, { 207, 236, 57, 132, 165, 2, 64, 217, 139, 246, 167, 99, 72, 82, 203, 179, }, { 106, 223, 12, 126, 128, 75, 116, 170, 136, 102, 203, 193, 155, 34, 252, 64, }, { 189, 205, 80, 77, 207, 242, 53, 244, 175, 237, 61, 69, 123, 91, 154, 134, }, { 51, 80, 142, 98, 155, 154, 171, 4, 111, 189, 1, 200, 134, 107, 196, 172, }, { 219, 109, 143, 137, 58, 5, 160, 252, 113, 84, 63, 22, 180, 141, 209, 29, }, { 235, 82, 69, 36, 45, 176, 162, 49, 234, 174, 157, 27, 39, 219, 72, 247, }, { 206, 201, 5, 193, 96, 166, 39, 158, 102, 203, 198, 32, 250, 248, 65, 48, }, { 85, 240, 81, 166, 110, 109, 62, 12, 177, 4, 3, 155, 73, 189, 143, 55, }, { 22, 203, 206, 135, 214, 140, 46, 171, 227, 216, 90, 243, 91, 72, 205, 107, }, { 197, 77, 98, 99, 11, 224, 48, 42, 246, 167, 235, 184, 54, 220, 198, 228, }, { 72, 191, 248, 131, 211, 167, 7, 19, 194, 176, 116, 240, 222, 209, 197, 136, }, { 43, 174, 235, 213, 113, 33, 170, 131, 195, 192, 80, 47, 46, 64, 105, 217, }, { 16, 21, 70, 218, 13, 210, 191, 250, 200, 86, 223, 186, 113, 50, 119, 231, }, { 186, 54, 228, 85, 209, 8, 195, 226, 105, 94, 217, 79, 227, 139, 170, 137, }, { 121, 165, 14, 107, 1, 182, 98, 153, 180, 119, 183, 190, 255, 45, 214, 225, }, { 178, 221, 199, 56, 54, 97, 125, 159, 13, 117, 87, 18, 58, 146, 112, 27, }, { 1, 37, 60, 69, 197, 164, 103, 71, 237, 61, 97, 67, 178, 170, 138, 131, }, { 4, 148, 240, 215, 146, 213, 95, 223, 50, 244, 71, 207, 141, 237, 109, 73, }, { 184, 124, 156, 223, 152, 131, 13, 108, 112, 36, 27, 201, 68, 28, 125, 76, }, { 201, 50, 177, 217, 126, 92, 209, 136, 160, 120, 34, 42, 98, 40, 113, 63, }, { 236, 169, 241, 60, 51, 74, 84, 39, 44, 29, 121, 17, 191, 11, 120, 248, }, { 133, 25, 185, 141, 63, 46, 137, 68, 80, 60, 17, 21, 49, 20, 217, 254, }, { 244, 87, 148, 139, 217, 241, 85, 160, 128, 96, 40, 246, 23, 32, 213, 141, }, { 68, 192, 43, 57, 166, 27, 230, 177, 148, 111, 189, 98, 138, 37, 114, 83, }, { 90, 224, 198, 211, 151, 254, 118, 103, 19, 156, 105, 204, 8, 116, 101, 170, }, { 47, 58, 27, 2, 227, 244, 245, 92, 241, 52, 23, 224, 163, 173, 4, 144, }, { 5, 177, 204, 146, 87, 113, 56, 152, 223, 201, 38, 140, 63, 71, 231, 202, }, { 217, 39, 247, 3, 115, 142, 110, 114, 104, 46, 253, 144, 19, 26, 6, 216, }, { 104, 149, 116, 244, 201, 192, 186, 36, 145, 28, 9, 71, 60, 181, 43, 133, }, { 173, 216, 22, 151, 194, 32, 138, 14, 103, 187, 226, 255, 10, 105, 237, 97, }, { 53, 142, 6, 63, 64, 196, 58, 85, 68, 51, 132, 129, 172, 17, 126, 32, }, { 86, 159, 21, 105, 226, 66, 151, 197, 69, 67, 160, 94, 92, 128, 210, 113, }, { 196, 104, 94, 38, 206, 68, 87, 109, 27, 154, 138, 251, 132, 118, 76, 103, }, { 175, 146, 110, 29, 139, 171, 68, 128, 126, 193, 32, 121, 173, 254, 58, 164, }, { 21, 164, 138, 72, 90, 163, 135, 98, 23, 159, 249, 54, 78, 117, 144, 45, }, { 124, 20, 194, 249, 86, 199, 90, 1, 107, 190, 145, 50, 192, 106, 49, 43, }, { 110, 75, 252, 169, 18, 158, 43, 117, 186, 146, 140, 14, 22, 207, 145, 9, }, { 216, 2, 203, 70, 182, 42, 9, 53, 133, 19, 156, 211, 161, 176, 140, 91, }, { 247, 56, 208, 68, 85, 222, 252, 105, 116, 39, 139, 51, 2, 29, 136, 203, }, { 102, 160, 223, 196, 245, 247, 149, 8, 222, 185, 2, 83, 207, 214, 75, 155, }, { 137, 102, 106, 55, 74, 146, 104, 230, 6, 227, 216, 135, 101, 224, 110, 37, }, { 69, 229, 23, 124, 99, 191, 129, 246, 121, 82, 220, 33, 56, 143, 248, 208, }, { 239, 198, 181, 243, 191, 101, 253, 238, 216, 90, 218, 212, 170, 54, 37, 190, }, { 55, 196, 126, 181, 9, 79, 244, 219, 93, 73, 70, 7, 11, 134, 169, 229, }, { 141, 242, 154, 224, 216, 71, 55, 57, 52, 23, 159, 72, 232, 13, 3, 108, }, { 182, 73, 55, 239, 164, 180, 34, 64, 63, 129, 16, 221, 183, 127, 29, 82, }, { 255, 211, 243, 41, 178, 183, 66, 20, 16, 12, 5, 110, 219, 4, 82, 89, }, { 136, 67, 86, 114, 143, 54, 15, 161, 235, 222, 185, 196, 215, 74, 228, 166, }, { 234, 119, 121, 97, 232, 20, 197, 118, 7, 147, 252, 88, 149, 113, 194, 116, }, { 98, 52, 47, 19, 103, 34, 202, 215, 236, 77, 69, 156, 66, 59, 38, 210, }, { 226, 156, 90, 12, 15, 125, 123, 11, 99, 184, 114, 5, 76, 104, 24, 230, }, { 62, 10, 97, 157, 43, 130, 45, 225, 212, 95, 169, 25, 96, 53, 249, 244, }, { 84, 213, 109, 227, 171, 201, 89, 75, 92, 57, 98, 216, 251, 23, 5, 180, }, { 190, 162, 20, 130, 67, 221, 156, 61, 91, 170, 158, 128, 110, 102, 199, 192, }, { 183, 108, 11, 170, 97, 16, 69, 7, 210, 188, 113, 158, 5, 213, 151, 209, }, { 54, 225, 66, 240, 204, 235, 147, 156, 176, 116, 39, 68, 185, 44, 35, 102, }, { 230, 8, 170, 219, 157, 168, 36, 212, 81, 76, 53, 202, 193, 133, 117, 175, }, { 153, 115, 44, 237, 71, 64, 215, 28, 206, 181, 7, 61, 20, 210, 25, 194, }, { 160, 130, 249, 104, 114, 56, 12, 235, 220, 89, 74, 46, 236, 55, 208, 57, }, { 35, 69, 200, 184, 150, 72, 20, 254, 167, 235, 222, 114, 247, 89, 179, 75, }, { 138, 9, 46, 248, 198, 189, 193, 47, 242, 164, 123, 66, 112, 221, 51, 99, }, { 115, 4, 85, 140, 175, 84, 18, 106, 201, 38, 251, 101, 129, 163, 219, 182, }, }, { { 94, 89, 29, 141, 152, 251, 51, 84, 124, 212, 164, 27, 179, 130, 14, 178, }, { 144, 118, 190, 54, 193, 8, 86, 90, 244, 64, 56, 248, 76, 153, 15, 236, }, { 184, 174, 31, 57, 91, 203, 4, 75, 1, 151, 52, 78, 216, 82, 44, 159, }, { 24, 72, 222, 5, 118, 65, 143, 15, 83, 77, 4, 211, 205, 248, 160, 144, }, { 118, 129, 188, 130, 2, 56, 97, 69, 137, 3, 168, 173, 39, 73, 45, 193, }, { 196, 25, 26, 200, 158, 179, 144, 155, 36, 209, 159, 47, 218, 89, 121, 50, }, { 13, 35, 247, 219, 17, 31, 95, 174, 103, 248, 93, 150, 9, 200, 92, 70, }, { 132, 26, 15, 208, 140, 136, 127, 179, 111, 202, 62, 163, 6, 29, 255, 52, }, { 194, 11, 204, 88, 98, 50, 195, 232, 64, 83, 158, 107, 120, 103, 81, 22, }, { 52, 140, 90, 234, 68, 124, 191, 253, 95, 102, 183, 29, 36, 166, 179, 219, }, { 49, 151, 231, 50, 198, 92, 36, 86, 9, 165, 87, 123, 215, 135, 143, 237, }, { 36, 252, 206, 236, 161, 2, 244, 247, 61, 16, 14, 62, 19, 183, 115, 59, }, { 195, 12, 84, 96, 72, 236, 58, 160, 239, 108, 193, 117, 246, 211, 93, 24, }, { 199, 16, 113, 128, 224, 18, 88, 67, 22, 144, 126, 13, 139, 70, 109, 32, }, { 74, 53, 172, 107, 213, 123, 26, 189, 231, 94, 162, 64, 249, 6, 254, 106, }, { 7, 21, 78, 168, 214, 95, 170, 59, 203, 189, 94, 90, 44, 138, 36, 42, }, { 12, 36, 111, 227, 59, 193, 166, 230, 200, 199, 2, 136, 135, 124, 80, 72, }, { 72, 59, 95, 27, 129, 4, 43, 45, 122, 32, 28, 124, 38, 173, 230, 118, }, { 128, 6, 42, 48, 36, 118, 29, 80, 150, 54, 129, 219, 123, 136, 207, 12, }, { 215, 96, 229, 134, 5, 108, 19, 73, 116, 230, 199, 46, 188, 87, 173, 192, }, { 105, 220, 44, 47, 162, 38, 68, 113, 17, 243, 242, 36, 198, 59, 169, 123, }, { 238, 207, 72, 183, 80, 15, 243, 26, 76, 120, 45, 165, 145, 57, 66, 93, }, { 216, 77, 225, 45, 64, 12, 125, 119, 142, 96, 36, 132, 106, 52, 233, 154, }, { 27, 65, 181, 77, 8, 224, 71, 215, 97, 12, 229, 241, 156, 231, 180, 130, }, { 119, 134, 36, 186, 40, 230, 152, 13, 38, 60, 247, 179, 169, 253, 33, 207, }, { 145, 113, 38, 14, 235, 214, 175, 18, 91, 127, 103, 230, 194, 45, 3, 226, }, { 115, 154, 1, 90, 128, 24, 250, 238, 223, 192, 72, 203, 212, 104, 17, 247, }, { 232, 221, 158, 39, 172, 142, 160, 105, 40, 250, 44, 225, 51, 7, 106, 121, }, { 161, 225, 89, 4, 7, 84, 114, 12, 253, 229, 111, 131, 155, 30, 128, 1, }, { 83, 122, 234, 86, 137, 228, 108, 250, 27, 44, 249, 141, 186, 74, 82, 244, }, { 201, 58, 237, 19, 143, 172, 207, 53, 67, 41, 194, 185, 211, 145, 37, 116, }, { 141, 37, 221, 235, 53, 105, 66, 254, 241, 206, 220, 77, 114, 64, 147, 74, }, { 231, 240, 154, 140, 233, 238, 206, 87, 210, 124, 207, 75, 229, 100, 46, 35, }, { 127, 190, 110, 185, 187, 217, 92, 8, 23, 7, 74, 67, 83, 20, 65, 191, }, { 134, 20, 252, 160, 216, 247, 78, 35, 242, 180, 128, 159, 217, 182, 231, 40, }, { 112, 147, 106, 18, 254, 185, 50, 54, 237, 129, 169, 233, 133, 119, 5, 229, }, { 78, 41, 137, 139, 125, 133, 120, 94, 30, 162, 29, 56, 132, 147, 206, 82, }, { 31, 93, 144, 173, 160, 30, 37, 52, 152, 240, 90, 137, 225, 114, 132, 186, }, { 99, 234, 149, 92, 101, 102, 177, 228, 189, 182, 241, 232, 227, 121, 209, 23, }, { 230, 247, 2, 180, 195, 48, 55, 31, 125, 67, 144, 85, 107, 208, 34, 45, }, { 167, 243, 143, 148, 251, 213, 33, 127, 153, 103, 110, 199, 57, 32, 168, 37, }, { 53, 139, 194, 210, 110, 162, 70, 181, 240, 89, 232, 3, 170, 18, 191, 213, }, { 32, 224, 235, 12, 9, 252, 150, 20, 196, 236, 177, 70, 110, 34, 67, 3, }, { 15, 45, 4, 171, 69, 96, 110, 62, 250, 134, 227, 170, 214, 99, 68, 90, }, { 22, 98, 66, 150, 25, 255, 24, 121, 6, 244, 184, 103, 149, 47, 232, 196, }, { 243, 156, 43, 106, 164, 110, 231, 190, 73, 246, 201, 16, 175, 224, 222, 251, }, { 175, 203, 197, 151, 104, 234, 229, 122, 168, 92, 211, 55, 195, 201, 200, 85, }, { 34, 238, 24, 124, 93, 131, 167, 132, 89, 146, 15, 122, 177, 137, 91, 31, }, { 185, 169, 135, 1, 113, 21, 253, 3, 174, 168, 107, 80, 86, 230, 32, 145, }, { 30, 90, 8, 149, 138, 192, 220, 124, 55, 207, 5, 151, 111, 198, 136, 180, }, { 37, 251, 86, 212, 139, 220, 13, 191, 146, 47, 81, 32, 157, 3, 127, 53, }, { 186, 160, 236, 73, 15, 180, 53, 219, 156, 233, 138, 114, 7, 249, 52, 131, }, { 189, 181, 162, 225, 217, 235, 159, 224, 87, 84, 212, 40, 43, 115, 16, 169, }, { 142, 44, 182, 163, 75, 200, 138, 38, 195, 143, 61, 111, 35, 95, 135, 88, }, { 92, 87, 238, 253, 204, 132, 2, 196, 225, 170, 26, 39, 108, 41, 22, 174, }, { 65, 4, 141, 32, 56, 229, 22, 96, 228, 36, 254, 146, 82, 240, 138, 8, }, { 111, 206, 250, 191, 94, 167, 23, 2, 117, 113, 243, 96, 100, 5, 129, 95, }, { 66, 13, 230, 104, 70, 68, 222, 184, 214, 101, 31, 176, 3, 239, 158, 26, }, { 70, 17, 195, 136, 238, 186, 188, 91, 47, 153, 160, 200, 126, 122, 174, 34, }, { 43, 209, 202, 71, 228, 98, 154, 201, 199, 150, 237, 148, 197, 212, 55, 97, }, { 220, 81, 196, 205, 232, 242, 31, 148, 119, 156, 155, 252, 23, 161, 217, 162, }, { 223, 88, 175, 133, 150, 83, 215, 76, 69, 221, 122, 222, 70, 190, 205, 176, }, { 67, 10, 126, 80, 108, 154, 39, 240, 121, 90, 64, 174, 141, 91, 146, 20, }, { 227, 236, 191, 108, 65, 16, 172, 180, 43, 128, 112, 51, 152, 241, 30, 27, }, { 41, 223, 57, 55, 176, 29, 171, 89, 90, 232, 83, 168, 26, 127, 47, 125, }, { 180, 138, 112, 218, 96, 10, 162, 173, 201, 80, 54, 198, 95, 46, 124, 215, }, { 203, 52, 30, 99, 219, 211, 254, 165, 222, 87, 124, 133, 12, 58, 61, 104, }, { 50, 158, 140, 122, 184, 253, 236, 142, 59, 228, 182, 89, 134, 152, 155, 255, }, { 218, 67, 18, 93, 20, 115, 76, 231, 19, 30, 154, 184, 181, 159, 241, 134, }, { 234, 211, 109, 87, 248, 241, 145, 249, 181, 132, 146, 221, 236, 172, 114, 101, }, { 190, 188, 201, 169, 167, 74, 87, 56, 101, 21, 53, 10, 122, 108, 4, 187, }, { 3, 9, 107, 72, 126, 161, 200, 216, 50, 65, 225, 34, 81, 31, 20, 18, }, { 165, 253, 124, 228, 175, 170, 16, 239, 4, 25, 208, 251, 230, 139, 176, 57, }, { 164, 250, 228, 220, 133, 116, 233, 167, 171, 38, 143, 229, 104, 63, 188, 55, }, { 171, 215, 224, 119, 192, 20, 135, 153, 81, 160, 108, 79, 190, 92, 248, 109, }, { 100, 255, 219, 244, 179, 57, 27, 223, 118, 11, 175, 178, 207, 243, 245, 61, }, { 173, 197, 54, 231, 60, 149, 212, 234, 53, 34, 109, 11, 28, 98, 208, 73, }, { 79, 46, 17, 179, 87, 91, 129, 22, 177, 157, 66, 38, 10, 39, 194, 92, }, { 133, 29, 151, 232, 166, 86, 134, 251, 192, 245, 97, 189, 136, 169, 243, 58, }, { 160, 230, 193, 60, 45, 138, 139, 68, 82, 218, 48, 157, 21, 170, 140, 15, }, { 19, 121, 255, 78, 155, 223, 131, 210, 80, 55, 88, 1, 102, 14, 212, 242, }, { 212, 105, 142, 206, 123, 205, 219, 145, 70, 167, 38, 12, 237, 72, 185, 210, }, { 251, 164, 97, 105, 55, 81, 35, 187, 120, 205, 116, 224, 85, 9, 190, 139, }, { 174, 204, 93, 175, 66, 52, 28, 50, 7, 99, 140, 41, 77, 125, 196, 91, }, { 148, 106, 155, 214, 105, 246, 52, 185, 13, 188, 135, 128, 49, 12, 63, 212, }, { 222, 95, 55, 189, 188, 141, 46, 4, 234, 226, 37, 192, 200, 10, 193, 190, }, { 187, 167, 116, 113, 37, 106, 204, 147, 51, 214, 213, 108, 137, 77, 56, 141, }, { 206, 47, 163, 187, 89, 243, 101, 14, 136, 148, 156, 227, 255, 27, 1, 94, }, { 162, 232, 50, 76, 121, 245, 186, 212, 207, 164, 142, 161, 202, 1, 148, 19, }, { 241, 146, 216, 26, 240, 17, 214, 46, 212, 136, 119, 44, 112, 75, 198, 231, }, { 61, 179, 136, 209, 253, 157, 130, 176, 193, 98, 85, 243, 80, 251, 223, 165, }, { 182, 132, 131, 170, 52, 117, 147, 61, 84, 46, 136, 250, 128, 133, 100, 203, }, { 97, 228, 102, 44, 49, 25, 128, 116, 32, 200, 79, 212, 60, 210, 201, 11, }, { 54, 130, 169, 154, 16, 3, 142, 109, 194, 24, 9, 33, 251, 13, 171, 199, }, { 236, 193, 187, 199, 4, 112, 194, 138, 209, 6, 147, 153, 78, 146, 90, 65, }, { 200, 61, 117, 43, 165, 114, 54, 125, 236, 22, 157, 167, 93, 37, 41, 122, }, { 82, 125, 114, 110, 163, 58, 149, 178, 180, 19, 166, 147, 52, 254, 94, 250, }, { 178, 152, 166, 74, 156, 139, 241, 222, 173, 210, 55, 130, 253, 16, 84, 243, }, { 208, 117, 171, 46, 211, 51, 185, 114, 191, 91, 153, 116, 144, 221, 137, 234, }, { 114, 157, 153, 98, 170, 198, 3, 166, 112, 255, 23, 213, 90, 220, 29, 249, }, { 235, 212, 245, 111, 210, 47, 104, 177, 26, 187, 205, 195, 98, 24, 126, 107, }, { 150, 100, 104, 166, 61, 137, 5, 41, 144, 194, 57, 188, 238, 167, 39, 200, }, { 14, 42, 156, 147, 111, 190, 151, 118, 85, 185, 188, 180, 88, 215, 72, 84, }, { 226, 235, 39, 84, 107, 206, 85, 252, 132, 191, 47, 45, 22, 69, 18, 21, }, { 86, 97, 87, 142, 11, 196, 247, 81, 77, 239, 25, 235, 73, 107, 110, 194, }, { 76, 39, 122, 251, 41, 250, 73, 206, 131, 220, 163, 4, 91, 56, 214, 78, }, { 64, 3, 21, 24, 18, 59, 239, 40, 75, 27, 161, 140, 220, 68, 134, 6, }, { 55, 133, 49, 162, 58, 221, 119, 37, 109, 39, 86, 63, 117, 185, 167, 201, }, { 146, 120, 77, 70, 149, 119, 103, 202, 105, 62, 134, 196, 147, 50, 23, 240, }, { 68, 31, 48, 248, 186, 197, 141, 203, 178, 231, 30, 244, 161, 209, 182, 62, }, { 143, 43, 46, 155, 97, 22, 115, 110, 108, 176, 98, 113, 173, 235, 139, 86, }, { 89, 76, 83, 37, 78, 164, 153, 111, 183, 105, 250, 65, 159, 8, 42, 152, }, { 219, 68, 138, 101, 62, 173, 181, 175, 188, 33, 197, 166, 59, 43, 253, 136, }, { 109, 192, 9, 207, 10, 216, 38, 146, 232, 15, 77, 92, 187, 174, 153, 67, }, { 140, 34, 69, 211, 31, 183, 187, 182, 94, 241, 131, 83, 252, 244, 159, 68, }, { 211, 124, 192, 102, 173, 146, 113, 170, 141, 26, 120, 86, 193, 194, 157, 248, }, { 136, 62, 96, 51, 183, 73, 217, 85, 167, 13, 60, 43, 129, 97, 175, 124, }, { 71, 22, 91, 176, 196, 100, 69, 19, 128, 166, 255, 214, 240, 206, 162, 44, }, { 229, 254, 105, 252, 189, 145, 255, 199, 79, 2, 113, 119, 58, 207, 54, 63, }, { 47, 205, 239, 167, 76, 156, 248, 42, 62, 106, 82, 236, 184, 65, 7, 89, }, { 18, 126, 103, 118, 177, 1, 122, 154, 255, 8, 7, 31, 232, 186, 216, 252, }, { 139, 55, 11, 123, 201, 232, 17, 141, 149, 76, 221, 9, 208, 126, 187, 110, }, { 17, 119, 12, 62, 207, 160, 178, 66, 205, 73, 230, 61, 185, 165, 204, 238, }, { 84, 111, 164, 254, 95, 187, 198, 193, 208, 145, 167, 215, 150, 192, 118, 222, }, { 168, 222, 139, 63, 190, 181, 79, 65, 99, 225, 141, 109, 239, 67, 236, 127, }, { 135, 19, 100, 152, 242, 41, 183, 107, 93, 139, 223, 129, 87, 2, 235, 38, }, { 45, 195, 28, 215, 24, 227, 201, 186, 163, 20, 236, 208, 103, 234, 31, 69, }, { 93, 80, 118, 197, 230, 90, 251, 140, 78, 149, 69, 57, 226, 157, 26, 160, }, { 157, 85, 73, 237, 208, 23, 9, 244, 147, 184, 101, 110, 69, 81, 83, 170, }, { 57, 175, 173, 49, 85, 99, 224, 83, 56, 158, 234, 139, 45, 110, 239, 157, }, { 95, 94, 133, 181, 178, 37, 202, 28, 211, 235, 251, 5, 61, 54, 2, 188, }, { 38, 242, 61, 156, 245, 125, 197, 103, 160, 110, 176, 2, 204, 28, 107, 39, }, { 5, 27, 189, 216, 130, 32, 155, 171, 86, 195, 224, 102, 243, 33, 60, 54, }, { 213, 110, 22, 246, 81, 19, 34, 217, 233, 152, 121, 18, 99, 252, 181, 220, }, { 252, 177, 47, 193, 225, 14, 137, 128, 179, 112, 42, 186, 121, 131, 154, 161, }, { 25, 79, 70, 61, 92, 159, 118, 71, 252, 114, 91, 205, 67, 76, 172, 158, }, { 9, 63, 210, 59, 185, 225, 61, 77, 158, 4, 226, 238, 116, 93, 108, 126, }, { 179, 159, 62, 114, 182, 85, 8, 150, 2, 237, 104, 156, 115, 164, 88, 253, }, { 250, 163, 249, 81, 29, 143, 218, 243, 215, 242, 43, 254, 219, 189, 178, 133, }, { 239, 200, 208, 143, 122, 209, 10, 82, 227, 71, 114, 187, 31, 141, 78, 83, }, { 10, 54, 185, 115, 199, 64, 245, 149, 172, 69, 3, 204, 37, 66, 120, 108, }, { 48, 144, 127, 10, 236, 130, 221, 30, 166, 154, 8, 101, 89, 51, 131, 227, }, { 205, 38, 200, 243, 39, 82, 173, 214, 186, 213, 125, 193, 174, 4, 21, 76, }, { 214, 103, 125, 190, 47, 178, 234, 1, 219, 217, 152, 48, 50, 227, 161, 206, }, { 107, 210, 223, 95, 246, 89, 117, 225, 140, 141, 76, 24, 25, 144, 177, 103, }, { 8, 56, 74, 3, 147, 63, 196, 5, 49, 59, 189, 240, 250, 233, 96, 112, }, { 181, 141, 232, 226, 74, 212, 91, 229, 102, 111, 105, 216, 209, 154, 112, 217, }, { 110, 201, 98, 135, 116, 121, 238, 74, 218, 78, 172, 126, 234, 177, 141, 81, }, { 101, 248, 67, 204, 153, 231, 226, 151, 217, 52, 240, 172, 65, 71, 249, 51, }, { 245, 142, 253, 250, 88, 239, 180, 205, 45, 116, 200, 84, 13, 222, 246, 223, }, { 170, 208, 120, 79, 234, 202, 126, 209, 254, 159, 51, 81, 48, 232, 244, 99, }, { 116, 143, 79, 242, 86, 71, 80, 213, 20, 125, 22, 145, 248, 226, 53, 221, }, { 75, 50, 52, 83, 255, 165, 227, 245, 72, 97, 253, 94, 119, 178, 242, 100, }, { 255, 184, 68, 137, 159, 175, 65, 88, 129, 49, 203, 152, 40, 156, 142, 179, }, { 129, 1, 178, 8, 14, 168, 228, 24, 57, 9, 222, 197, 245, 60, 195, 2, }, { 193, 2, 167, 16, 28, 147, 11, 48, 114, 18, 127, 73, 41, 120, 69, 4, }, { 209, 114, 51, 22, 249, 237, 64, 58, 16, 100, 198, 106, 30, 105, 133, 228, }, { 40, 216, 161, 15, 154, 195, 82, 17, 245, 215, 12, 182, 148, 203, 35, 115, }, { 177, 145, 205, 2, 226, 42, 57, 6, 159, 147, 214, 160, 172, 15, 64, 225, }, { 155, 71, 159, 125, 44, 150, 90, 135, 247, 58, 100, 42, 231, 111, 123, 142, }, { 221, 86, 92, 245, 194, 44, 230, 220, 216, 163, 196, 226, 153, 21, 213, 172, }, { 35, 233, 128, 68, 119, 93, 94, 204, 246, 173, 80, 100, 63, 61, 87, 17, }, { 63, 189, 123, 161, 169, 226, 179, 32, 92, 28, 235, 207, 143, 80, 199, 185, }, { 2, 14, 243, 112, 84, 127, 49, 144, 157, 126, 190, 60, 223, 171, 24, 28, }, { 16, 112, 148, 6, 229, 126, 75, 10, 98, 118, 185, 35, 55, 17, 192, 224, }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, { 26, 70, 45, 117, 34, 62, 190, 159, 206, 51, 186, 239, 18, 83, 184, 140, }, { 96, 227, 254, 20, 27, 199, 121, 60, 143, 247, 16, 202, 178, 102, 197, 5, }, { 90, 69, 56, 109, 48, 5, 81, 183, 133, 40, 27, 99, 206, 23, 62, 138, }, { 62, 186, 227, 153, 131, 60, 74, 104, 243, 35, 180, 209, 1, 228, 203, 183, }, { 106, 213, 71, 103, 220, 135, 140, 169, 35, 178, 19, 6, 151, 36, 189, 105, }, { 113, 148, 242, 42, 212, 103, 203, 126, 66, 190, 246, 247, 11, 195, 9, 235, }, { 117, 136, 215, 202, 124, 153, 169, 157, 187, 66, 73, 143, 118, 86, 57, 211, }, { 183, 131, 27, 146, 30, 171, 106, 117, 251, 17, 215, 228, 14, 49, 104, 197, }, { 122, 165, 211, 97, 57, 249, 199, 163, 65, 196, 170, 37, 160, 53, 125, 137, }, { 217, 74, 121, 21, 106, 210, 132, 63, 33, 95, 123, 154, 228, 128, 229, 148, }, { 108, 199, 145, 247, 32, 6, 223, 218, 71, 48, 18, 66, 53, 26, 149, 77, }, { 147, 127, 213, 126, 191, 169, 158, 130, 198, 1, 217, 218, 29, 134, 27, 254, }, { 69, 24, 168, 192, 144, 27, 116, 131, 29, 216, 65, 234, 47, 101, 186, 48, }, { 154, 64, 7, 69, 6, 72, 163, 207, 88, 5, 59, 52, 105, 219, 119, 128, }, { 137, 57, 248, 11, 157, 151, 32, 29, 8, 50, 99, 53, 15, 213, 163, 114, }, { 58, 166, 198, 121, 43, 194, 40, 139, 10, 223, 11, 169, 124, 113, 251, 143, }, { 120, 171, 32, 17, 109, 134, 246, 51, 220, 186, 20, 25, 127, 158, 101, 149, }, { 29, 83, 99, 221, 244, 97, 20, 164, 5, 142, 228, 181, 62, 217, 156, 166, }, { 138, 48, 147, 67, 227, 54, 232, 197, 58, 115, 130, 23, 94, 202, 183, 96, }, { 151, 99, 240, 158, 23, 87, 252, 97, 63, 253, 102, 162, 96, 19, 43, 198, }, { 248, 173, 10, 33, 73, 240, 235, 99, 74, 140, 149, 194, 4, 22, 170, 153, }, { 249, 170, 146, 25, 99, 46, 18, 43, 229, 179, 202, 220, 138, 162, 166, 151, }, { 88, 75, 203, 29, 100, 122, 96, 39, 24, 86, 165, 95, 17, 188, 38, 150, }, { 44, 196, 132, 239, 50, 61, 48, 242, 12, 43, 179, 206, 233, 94, 19, 75, }, { 6, 18, 214, 144, 252, 129, 83, 115, 100, 130, 1, 68, 162, 62, 40, 36, }, { 188, 178, 58, 217, 243, 53, 102, 168, 248, 107, 139, 54, 165, 199, 28, 167, }, { 156, 82, 209, 213, 250, 201, 240, 188, 60, 135, 58, 112, 203, 229, 95, 164, }, { 85, 104, 60, 198, 117, 101, 63, 137, 127, 174, 248, 201, 24, 116, 122, 208, }, { 124, 183, 5, 241, 197, 120, 148, 208, 37, 70, 171, 97, 2, 11, 85, 173, }, { 42, 214, 82, 127, 206, 188, 99, 129, 104, 169, 178, 138, 75, 96, 59, 111, }, { 59, 161, 94, 65, 1, 28, 209, 195, 165, 224, 84, 183, 242, 197, 247, 129, }, { 159, 91, 186, 157, 132, 104, 56, 100, 14, 198, 219, 82, 154, 250, 75, 182, }, { 198, 23, 233, 184, 202, 204, 161, 11, 185, 175, 33, 19, 5, 242, 97, 46, }, { 28, 84, 251, 229, 222, 191, 237, 236, 170, 177, 187, 171, 176, 109, 144, 168, }, { 254, 191, 220, 177, 181, 113, 184, 16, 46, 14, 148, 134, 166, 40, 130, 189, }, { 98, 237, 13, 100, 79, 184, 72, 172, 18, 137, 174, 246, 109, 205, 221, 25, }, { 125, 176, 157, 201, 239, 166, 109, 152, 138, 121, 244, 127, 140, 191, 89, 163, }, { 33, 231, 115, 52, 35, 34, 111, 92, 107, 211, 238, 88, 224, 150, 79, 13, }, { 192, 5, 63, 40, 54, 77, 242, 120, 221, 45, 32, 87, 167, 204, 73, 10, }, { 242, 155, 179, 82, 142, 176, 30, 246, 230, 201, 150, 14, 33, 84, 210, 245, }, { 247, 128, 14, 138, 12, 144, 133, 93, 176, 10, 118, 104, 210, 117, 238, 195, }, { 51, 153, 20, 66, 146, 35, 21, 198, 148, 219, 233, 71, 8, 44, 151, 241, }, { 152, 78, 244, 53, 82, 55, 146, 95, 197, 123, 133, 8, 182, 112, 111, 156, }, { 169, 217, 19, 7, 148, 107, 182, 9, 204, 222, 210, 115, 97, 247, 224, 113, }, { 130, 8, 217, 64, 112, 9, 44, 192, 11, 72, 63, 231, 164, 35, 215, 16, }, { 77, 32, 226, 195, 3, 36, 176, 134, 44, 227, 252, 26, 213, 140, 218, 64, }, { 244, 137, 101, 194, 114, 49, 77, 133, 130, 75, 151, 74, 131, 106, 250, 209, }, { 246, 135, 150, 178, 38, 78, 124, 21, 31, 53, 41, 118, 92, 193, 226, 205, }, { 20, 108, 177, 230, 77, 128, 41, 233, 155, 138, 6, 91, 74, 132, 240, 216, }, { 123, 162, 75, 89, 19, 39, 62, 235, 238, 251, 245, 59, 46, 129, 113, 135, }, { 121, 172, 184, 41, 71, 88, 15, 123, 115, 133, 75, 7, 241, 42, 105, 155, }, { 23, 101, 218, 174, 51, 33, 225, 49, 169, 203, 231, 121, 27, 155, 228, 202, }, { 240, 149, 64, 34, 218, 207, 47, 102, 123, 183, 40, 50, 254, 255, 202, 233, }, { 191, 187, 81, 145, 141, 148, 174, 112, 202, 42, 106, 20, 244, 216, 8, 181, }, { 207, 40, 59, 131, 115, 45, 156, 70, 39, 171, 195, 253, 113, 175, 13, 80, }, { 1, 7, 152, 56, 42, 222, 249, 72, 175, 63, 95, 30, 142, 180, 12, 14, }, { 237, 198, 35, 255, 46, 174, 59, 194, 126, 57, 204, 135, 192, 38, 86, 79, }, { 204, 33, 80, 203, 13, 140, 84, 158, 21, 234, 34, 223, 32, 176, 25, 66, }, { 21, 107, 41, 222, 103, 94, 208, 161, 52, 181, 89, 69, 196, 48, 252, 214, }, { 39, 245, 165, 164, 223, 163, 60, 47, 15, 81, 239, 28, 66, 168, 103, 41, }, { 163, 239, 170, 116, 83, 43, 67, 156, 96, 155, 209, 191, 68, 181, 152, 29, }, { 11, 49, 33, 75, 237, 158, 12, 221, 3, 122, 92, 210, 171, 246, 116, 98, }, { 56, 168, 53, 9, 127, 189, 25, 27, 151, 161, 181, 149, 163, 218, 227, 147, }, { 87, 102, 207, 182, 33, 26, 14, 25, 226, 208, 70, 245, 199, 223, 98, 204, }, { 103, 246, 176, 188, 205, 152, 211, 7, 68, 74, 78, 144, 158, 236, 225, 47, }, { 131, 15, 65, 120, 90, 215, 213, 136, 164, 119, 96, 249, 42, 151, 219, 30, }, { 60, 180, 16, 233, 215, 67, 123, 248, 110, 93, 10, 237, 222, 79, 211, 171, }, { 253, 182, 183, 249, 203, 208, 112, 200, 28, 79, 117, 164, 247, 55, 150, 175, }, { 172, 194, 174, 223, 22, 75, 45, 162, 154, 29, 50, 21, 146, 214, 220, 71, }, { 149, 109, 3, 238, 67, 40, 205, 241, 162, 131, 216, 158, 191, 184, 51, 218, }, { 81, 116, 25, 38, 221, 155, 93, 106, 134, 82, 71, 177, 101, 225, 74, 232, }, { 210, 123, 88, 94, 135, 76, 136, 226, 34, 37, 39, 72, 79, 118, 145, 246, }, { 225, 226, 76, 28, 21, 111, 157, 36, 182, 254, 206, 15, 71, 90, 6, 7, }, { 228, 249, 241, 196, 151, 79, 6, 143, 224, 61, 46, 105, 180, 123, 58, 49, }, { 166, 244, 23, 172, 209, 11, 216, 55, 54, 88, 49, 217, 183, 148, 164, 43, }, { 46, 202, 119, 159, 102, 66, 1, 98, 145, 85, 13, 242, 54, 245, 11, 87, }, { 158, 92, 34, 165, 174, 182, 193, 44, 161, 249, 132, 76, 20, 78, 71, 184, }, { 176, 150, 85, 58, 200, 244, 192, 78, 48, 172, 137, 190, 34, 187, 76, 239, }, { 4, 28, 37, 224, 168, 254, 98, 227, 249, 252, 191, 120, 125, 149, 48, 56, }, { 202, 51, 134, 91, 241, 13, 7, 237, 113, 104, 35, 155, 130, 142, 49, 102, }, { 224, 229, 212, 36, 63, 177, 100, 108, 25, 193, 145, 17, 201, 238, 10, 9, }, { 126, 185, 246, 129, 145, 7, 165, 64, 184, 56, 21, 93, 221, 160, 77, 177, }, { 102, 241, 40, 132, 231, 70, 42, 79, 235, 117, 17, 142, 16, 88, 237, 33, }, { 80, 115, 129, 30, 247, 69, 164, 34, 41, 109, 24, 175, 235, 85, 70, 230, }, { 73, 60, 199, 35, 171, 218, 210, 101, 213, 31, 67, 98, 168, 25, 234, 120, }, { 91, 66, 160, 85, 26, 219, 168, 255, 42, 23, 68, 125, 64, 163, 50, 132, }, { 153, 73, 108, 13, 120, 233, 107, 23, 106, 68, 218, 22, 56, 196, 99, 146, }, { 104, 219, 180, 23, 136, 248, 189, 57, 190, 204, 173, 58, 72, 143, 165, 117, }, { 233, 218, 6, 31, 134, 80, 89, 33, 135, 197, 115, 255, 189, 179, 102, 119, }, { 197, 30, 130, 240, 180, 109, 105, 211, 139, 238, 192, 49, 84, 237, 117, 60, }, }, { { 215, 72, 18, 163, 190, 41, 37, 217, 16, 236, 174, 223, 106, 45, 1, 252, }, { 99, 68, 17, 222, 96, 14, 130, 108, 146, 124, 242, 42, 32, 203, 160, 238, }, { 94, 19, 116, 34, 61, 13, 175, 114, 250, 39, 199, 35, 170, 210, 71, 221, }, { 170, 140, 35, 84, 138, 1, 27, 10, 153, 136, 19, 7, 199, 182, 93, 17, }, { 234, 31, 119, 95, 227, 42, 8, 199, 120, 183, 155, 214, 224, 52, 230, 207, }, { 42, 105, 139, 66, 88, 87, 61, 83, 152, 246, 192, 102, 137, 113, 232, 110, }, { 41, 22, 228, 115, 132, 134, 68, 117, 122, 75, 254, 20, 124, 121, 79, 49, }, { 156, 142, 194, 160, 175, 238, 117, 99, 166, 176, 9, 207, 101, 38, 50, 22, }, { 225, 74, 243, 87, 155, 198, 75, 176, 47, 212, 180, 23, 200, 189, 110, 251, }, { 164, 88, 22, 15, 85, 93, 211, 23, 43, 239, 126, 80, 51, 39, 255, 196, }, { 235, 139, 82, 241, 22, 101, 158, 100, 38, 220, 48, 248, 179, 141, 58, 250, }, { 104, 17, 149, 214, 24, 226, 193, 27, 197, 31, 221, 235, 8, 66, 40, 218, }, { 157, 26, 231, 14, 90, 161, 227, 192, 248, 219, 162, 225, 54, 159, 238, 35, }, { 174, 153, 183, 169, 216, 254, 6, 195, 34, 231, 250, 191, 72, 23, 171, 197, }, { 40, 130, 193, 221, 113, 201, 210, 214, 36, 32, 85, 58, 47, 192, 147, 4, }, { 183, 115, 108, 76, 2, 246, 222, 147, 96, 45, 98, 135, 191, 238, 6, 77, }, { 85, 70, 240, 42, 69, 225, 236, 5, 173, 68, 232, 226, 130, 91, 207, 233, }, { 208, 34, 233, 111, 48, 7, 65, 54, 73, 62, 121, 21, 16, 132, 80, 119, }, { 175, 13, 146, 7, 45, 177, 144, 96, 124, 140, 81, 145, 27, 174, 119, 240, }, { 98, 208, 52, 112, 149, 65, 20, 207, 204, 23, 89, 4, 115, 114, 124, 219, }, { 247, 224, 56, 71, 107, 221, 205, 94, 129, 18, 234, 86, 152, 108, 189, 147, }, { 239, 158, 198, 12, 68, 154, 131, 173, 157, 179, 217, 64, 60, 44, 204, 46, }, { 179, 102, 248, 177, 80, 9, 195, 90, 219, 66, 139, 63, 48, 79, 240, 153, }, { 46, 124, 31, 191, 10, 168, 32, 154, 35, 153, 41, 222, 6, 208, 30, 186, }, { 150, 79, 99, 6, 34, 77, 160, 183, 175, 184, 141, 32, 30, 22, 102, 23, }, { 31, 20, 5, 135, 161, 105, 42, 28, 69, 115, 228, 220, 222, 233, 32, 54, }, { 165, 204, 51, 161, 160, 18, 69, 180, 117, 132, 213, 126, 96, 158, 35, 241, }, { 36, 189, 190, 25, 135, 11, 245, 78, 42, 145, 173, 49, 125, 224, 74, 187, }, { 136, 207, 67, 47, 118, 107, 28, 8, 180, 160, 194, 210, 147, 70, 154, 20, }, { 254, 94, 246, 208, 58, 175, 97, 172, 106, 167, 80, 203, 22, 84, 78, 205, }, { 3, 127, 111, 49, 220, 209, 121, 38, 226, 189, 62, 114, 245, 8, 167, 95, }, { 134, 27, 118, 116, 169, 55, 212, 21, 6, 199, 175, 133, 103, 215, 56, 193, }, { 245, 11, 114, 216, 66, 67, 34, 219, 61, 196, 127, 10, 62, 221, 198, 249, }, { 240, 138, 195, 139, 229, 243, 169, 177, 216, 192, 61, 156, 226, 197, 236, 24, }, { 100, 46, 234, 18, 238, 32, 230, 131, 203, 174, 37, 224, 90, 98, 241, 101, }, { 33, 60, 15, 74, 32, 187, 126, 36, 207, 149, 239, 167, 161, 248, 96, 90, }, { 27, 1, 145, 122, 243, 150, 55, 213, 254, 28, 13, 100, 81, 72, 214, 226, }, { 29, 255, 79, 24, 136, 247, 197, 153, 249, 165, 113, 128, 120, 88, 91, 92, }, { 105, 133, 176, 120, 237, 173, 87, 184, 155, 116, 118, 197, 91, 251, 244, 239, }, { 137, 91, 102, 129, 131, 36, 138, 171, 234, 203, 105, 252, 192, 255, 70, 33, }, { 67, 236, 59, 58, 181, 250, 106, 235, 3, 130, 182, 163, 210, 138, 28, 129, }, { 216, 8, 2, 86, 148, 58, 123, 103, 252, 224, 104, 166, 205, 5, 127, 28, }, { 91, 146, 197, 113, 154, 189, 36, 24, 31, 35, 133, 181, 118, 202, 109, 60, }, { 209, 182, 204, 193, 197, 72, 215, 149, 23, 85, 210, 59, 67, 61, 140, 66, }, { 7, 106, 251, 204, 142, 46, 100, 239, 89, 210, 215, 202, 122, 169, 81, 139, }, { 10, 193, 161, 166, 141, 163, 213, 212, 9, 8, 132, 239, 123, 48, 84, 1, }, { 37, 41, 155, 183, 114, 68, 99, 237, 116, 250, 6, 31, 46, 89, 150, 142, }, { 163, 50, 237, 195, 219, 115, 183, 248, 114, 61, 169, 154, 73, 142, 174, 79, }, { 34, 67, 96, 123, 252, 106, 7, 2, 45, 40, 209, 213, 84, 240, 199, 5, }, { 97, 175, 91, 65, 73, 144, 109, 233, 46, 170, 103, 118, 134, 122, 219, 132, }, { 20, 65, 129, 143, 217, 133, 105, 107, 18, 16, 203, 29, 246, 96, 168, 2, }, { 166, 179, 92, 144, 124, 195, 60, 146, 151, 57, 235, 12, 149, 150, 132, 174, }, { 17, 192, 48, 220, 126, 53, 226, 1, 247, 20, 137, 139, 42, 120, 130, 227, }, { 2, 235, 74, 159, 41, 158, 239, 133, 188, 214, 149, 92, 166, 177, 123, 106, }, { 47, 232, 58, 17, 255, 231, 182, 57, 125, 242, 130, 240, 85, 105, 194, 143, }, { 202, 183, 93, 187, 54, 222, 224, 64, 233, 73, 223, 95, 18, 117, 90, 160, }, { 60, 195, 64, 82, 168, 76, 187, 189, 54, 48, 158, 39, 217, 160, 59, 6, }, { 78, 71, 97, 80, 182, 119, 219, 208, 83, 88, 229, 134, 211, 19, 25, 11, }, { 125, 196, 49, 247, 52, 40, 62, 211, 137, 100, 189, 216, 173, 155, 92, 237, }, { 185, 167, 89, 23, 221, 170, 22, 142, 210, 74, 15, 208, 75, 127, 164, 152, }, { 128, 229, 168, 22, 210, 86, 38, 89, 1, 126, 211, 97, 78, 199, 181, 127, }, { 4, 21, 148, 253, 82, 255, 29, 201, 187, 111, 233, 184, 143, 161, 246, 212, }, { 50, 23, 117, 9, 119, 16, 115, 160, 132, 87, 243, 112, 45, 49, 153, 211, }, { 198, 136, 34, 127, 192, 28, 199, 216, 231, 248, 39, 84, 64, 85, 131, 31, }, { 65, 7, 113, 165, 156, 100, 133, 110, 191, 84, 35, 255, 116, 59, 103, 235, }, { 11, 85, 132, 8, 120, 236, 67, 119, 87, 99, 47, 193, 40, 137, 136, 52, }, { 251, 223, 71, 131, 157, 31, 234, 198, 143, 163, 18, 93, 202, 76, 100, 44, }, { 111, 123, 110, 26, 150, 204, 165, 244, 156, 205, 10, 33, 114, 235, 121, 81, }, { 75, 198, 208, 3, 17, 199, 80, 186, 182, 92, 167, 16, 15, 11, 51, 234, }, { 220, 29, 150, 171, 198, 197, 102, 174, 71, 143, 129, 30, 66, 164, 137, 200, }, { 149, 48, 12, 55, 254, 156, 217, 145, 77, 5, 179, 82, 235, 30, 193, 72, }, { 132, 240, 60, 235, 128, 169, 59, 144, 186, 17, 58, 217, 193, 102, 67, 171, }, { 187, 76, 19, 136, 244, 52, 249, 11, 110, 156, 154, 140, 237, 206, 223, 242, }, { 199, 28, 7, 209, 53, 83, 81, 123, 185, 147, 140, 122, 19, 236, 95, 42, }, { 22, 170, 203, 16, 240, 27, 134, 238, 174, 198, 94, 65, 80, 209, 211, 104, }, { 222, 246, 220, 52, 239, 91, 137, 43, 251, 89, 20, 66, 228, 21, 242, 162, }, { 221, 137, 179, 5, 51, 138, 240, 13, 25, 228, 42, 48, 17, 29, 85, 253, }, { 103, 81, 133, 35, 50, 241, 159, 165, 41, 19, 27, 146, 175, 106, 86, 58, }, { 224, 222, 214, 249, 110, 137, 221, 19, 113, 191, 31, 57, 155, 4, 178, 206, }, { 244, 159, 87, 118, 183, 12, 180, 120, 99, 175, 212, 36, 109, 100, 26, 204, }, { 72, 185, 191, 50, 205, 22, 41, 156, 84, 225, 153, 98, 250, 3, 148, 181, }, { 230, 32, 8, 155, 21, 232, 47, 95, 118, 6, 99, 221, 178, 20, 63, 112, }, { 108, 4, 1, 43, 74, 29, 220, 210, 126, 112, 52, 83, 135, 227, 222, 14, }, { 89, 121, 143, 238, 179, 35, 203, 157, 163, 245, 16, 233, 208, 123, 22, 86, }, { 80, 199, 65, 121, 226, 81, 103, 111, 72, 64, 170, 116, 94, 67, 229, 8, }, { 120, 69, 128, 164, 147, 152, 181, 185, 108, 96, 255, 78, 113, 131, 118, 12, }, { 218, 227, 72, 201, 189, 164, 148, 226, 64, 54, 253, 250, 107, 180, 4, 118, }, { 180, 12, 3, 125, 222, 39, 167, 181, 130, 144, 92, 245, 74, 230, 161, 18, }, { 12, 63, 127, 196, 246, 194, 39, 152, 14, 177, 248, 11, 82, 32, 217, 191, }, { 242, 97, 137, 20, 204, 109, 70, 52, 100, 22, 168, 192, 68, 116, 151, 114, }, { 190, 205, 162, 219, 83, 132, 114, 97, 139, 152, 216, 26, 49, 214, 245, 19, }, { 243, 245, 172, 186, 57, 34, 208, 151, 58, 125, 3, 238, 23, 205, 75, 71, }, { 145, 37, 152, 202, 172, 99, 196, 88, 246, 106, 90, 234, 100, 191, 55, 156, }, { 92, 248, 62, 189, 20, 147, 64, 247, 70, 241, 82, 127, 12, 99, 60, 183, }, { 23, 62, 238, 190, 5, 84, 16, 77, 240, 173, 245, 111, 3, 104, 15, 93, }, { 127, 47, 123, 104, 29, 182, 209, 86, 53, 178, 40, 132, 11, 42, 39, 135, }, { 130, 14, 226, 137, 251, 200, 201, 220, 189, 168, 70, 61, 232, 118, 206, 21, }, { 192, 118, 252, 29, 187, 125, 53, 148, 224, 65, 91, 176, 105, 69, 14, 161, }, { 213, 163, 88, 60, 151, 183, 202, 92, 172, 58, 59, 131, 204, 156, 122, 150, }, { 217, 156, 39, 248, 97, 117, 237, 196, 162, 139, 195, 136, 158, 188, 163, 41, }, { 160, 77, 130, 242, 7, 162, 206, 222, 144, 128, 151, 232, 188, 134, 9, 16, }, { 168, 103, 105, 203, 163, 159, 244, 143, 37, 94, 134, 91, 97, 7, 38, 123, }, { 173, 230, 216, 152, 4, 47, 127, 229, 192, 90, 196, 205, 189, 31, 12, 154, }, { 186, 216, 54, 38, 1, 123, 111, 168, 48, 247, 49, 162, 190, 119, 3, 199, }, { 177, 141, 178, 46, 121, 151, 44, 223, 103, 148, 30, 99, 150, 254, 139, 243, }, { 227, 161, 185, 200, 178, 88, 164, 53, 147, 2, 33, 75, 110, 12, 21, 145, }, { 182, 231, 73, 226, 247, 185, 72, 48, 62, 70, 201, 169, 236, 87, 218, 120, }, { 32, 168, 42, 228, 213, 244, 232, 135, 145, 254, 68, 137, 242, 65, 188, 111, }, { 155, 228, 57, 108, 33, 192, 17, 140, 255, 98, 222, 5, 31, 143, 99, 157, }, { 133, 100, 25, 69, 117, 230, 173, 51, 228, 122, 145, 247, 146, 223, 159, 158, }, { 126, 187, 94, 198, 232, 249, 71, 245, 107, 217, 131, 170, 88, 147, 251, 178, }, { 96, 59, 126, 239, 188, 223, 251, 74, 112, 193, 204, 88, 213, 195, 7, 177, }, { 55, 150, 196, 90, 208, 160, 248, 202, 97, 83, 177, 230, 241, 41, 179, 50, }, { 196, 99, 104, 224, 233, 130, 40, 93, 91, 46, 178, 8, 230, 228, 248, 117, }, { 250, 75, 98, 45, 104, 80, 124, 101, 209, 200, 185, 115, 153, 245, 184, 25, }, { 81, 83, 100, 215, 23, 30, 241, 204, 22, 43, 1, 90, 13, 250, 57, 61, }, { 201, 200, 50, 138, 234, 15, 153, 102, 11, 244, 225, 45, 231, 125, 253, 255, }, { 1, 148, 37, 174, 245, 79, 150, 163, 94, 107, 171, 46, 83, 185, 220, 53, }, { 13, 171, 90, 106, 3, 141, 177, 59, 80, 218, 83, 37, 1, 153, 5, 138, }, { 138, 36, 9, 176, 95, 245, 243, 141, 8, 118, 87, 142, 53, 247, 225, 126, }, { 52, 233, 171, 107, 12, 113, 129, 236, 131, 238, 143, 148, 4, 33, 20, 109, }, { 77, 56, 14, 97, 106, 166, 162, 246, 177, 229, 219, 244, 38, 27, 190, 84, }, { 176, 25, 151, 128, 140, 216, 186, 124, 57, 255, 181, 77, 197, 71, 87, 198, }, { 73, 45, 154, 156, 56, 89, 191, 63, 10, 138, 50, 76, 169, 186, 72, 128, }, { 146, 90, 247, 251, 112, 178, 189, 126, 20, 215, 100, 152, 145, 183, 144, 195, }, { 24, 126, 254, 75, 47, 71, 78, 243, 28, 161, 51, 22, 164, 64, 113, 189, }, { 114, 132, 33, 2, 30, 59, 96, 109, 101, 104, 123, 161, 10, 179, 34, 13, }, { 83, 184, 46, 72, 62, 128, 30, 73, 170, 253, 148, 6, 171, 75, 66, 87, }, { 74, 82, 245, 173, 228, 136, 198, 25, 232, 55, 12, 62, 92, 178, 239, 223, }, { 141, 78, 242, 124, 209, 219, 151, 98, 81, 164, 128, 68, 79, 94, 176, 245, }, { 171, 24, 6, 250, 127, 78, 141, 169, 199, 227, 184, 41, 148, 15, 129, 36, }, { 144, 177, 189, 100, 89, 44, 82, 251, 168, 1, 241, 196, 55, 6, 235, 169, }, { 79, 211, 68, 254, 67, 56, 77, 115, 13, 51, 78, 168, 128, 170, 197, 62, }, { 154, 112, 28, 194, 212, 143, 135, 47, 161, 9, 117, 43, 76, 54, 191, 168, }, { 219, 119, 109, 103, 72, 235, 2, 65, 30, 93, 86, 212, 56, 13, 216, 67, }, { 214, 220, 55, 13, 75, 102, 179, 122, 78, 135, 5, 241, 57, 148, 221, 201, }, { 26, 149, 180, 212, 6, 217, 161, 118, 160, 119, 166, 74, 2, 241, 10, 215, }, { 188, 38, 232, 68, 122, 26, 157, 228, 55, 78, 77, 70, 151, 103, 142, 121, }, { 16, 84, 21, 114, 139, 122, 116, 162, 169, 127, 34, 165, 121, 193, 94, 214, }, { 147, 206, 210, 85, 133, 253, 43, 221, 74, 188, 207, 182, 194, 14, 76, 246, }, { 158, 101, 136, 63, 134, 112, 154, 230, 26, 102, 156, 147, 195, 151, 73, 124, }, { 151, 219, 70, 168, 215, 2, 54, 20, 241, 211, 38, 14, 77, 175, 186, 34, }, { 48, 252, 63, 150, 94, 142, 156, 37, 56, 129, 102, 44, 139, 128, 226, 185, }, { 30, 128, 32, 41, 84, 38, 188, 191, 27, 24, 79, 242, 141, 80, 252, 3, }, { 15, 64, 16, 245, 42, 19, 94, 190, 236, 12, 198, 121, 167, 40, 126, 224, }, { 102, 197, 160, 141, 199, 190, 9, 6, 119, 120, 176, 188, 252, 211, 138, 15, }, { 119, 5, 144, 81, 185, 139, 235, 7, 128, 108, 57, 55, 214, 171, 8, 236, }, { 64, 147, 84, 11, 105, 43, 19, 205, 225, 63, 136, 209, 39, 130, 187, 222, }, { 162, 166, 200, 109, 46, 60, 33, 91, 44, 86, 2, 180, 26, 55, 114, 122, }, { 193, 226, 217, 179, 78, 50, 163, 55, 190, 42, 240, 158, 58, 252, 210, 148, }, { 106, 250, 223, 73, 49, 124, 46, 158, 121, 201, 72, 183, 174, 243, 83, 176, }, { 18, 191, 95, 237, 162, 228, 155, 39, 21, 169, 183, 249, 223, 112, 37, 188, }, { 84, 210, 213, 132, 176, 174, 122, 166, 243, 47, 67, 204, 209, 226, 19, 220, }, { 95, 135, 81, 140, 200, 66, 57, 209, 164, 76, 108, 13, 249, 107, 155, 232, }, { 211, 93, 134, 94, 236, 214, 56, 16, 171, 131, 71, 103, 229, 140, 247, 40, }, { 101, 186, 207, 188, 27, 111, 112, 32, 149, 197, 142, 206, 9, 219, 45, 80, }, { 169, 243, 76, 101, 86, 208, 98, 44, 123, 53, 45, 117, 50, 190, 250, 78, }, { 61, 87, 101, 252, 93, 3, 45, 30, 104, 91, 53, 9, 138, 25, 231, 51, }, { 68, 134, 192, 246, 59, 212, 14, 4, 90, 80, 97, 105, 168, 35, 77, 10, }, { 129, 113, 141, 184, 39, 25, 176, 250, 95, 21, 120, 79, 29, 126, 105, 74, }, { 252, 181, 188, 79, 19, 49, 142, 41, 214, 113, 197, 151, 176, 229, 53, 167, }, { 223, 98, 249, 154, 26, 20, 31, 136, 165, 50, 191, 108, 183, 172, 46, 151, }, { 70, 109, 138, 105, 18, 74, 225, 129, 230, 134, 244, 53, 14, 146, 54, 96, }, { 248, 160, 40, 178, 65, 206, 147, 224, 109, 30, 44, 47, 63, 68, 195, 115, }, { 204, 73, 131, 217, 77, 191, 18, 12, 238, 240, 163, 187, 59, 101, 215, 30, }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, { 82, 44, 11, 230, 203, 207, 136, 234, 244, 150, 63, 40, 248, 242, 158, 98, }, { 237, 117, 140, 147, 109, 4, 108, 40, 33, 101, 76, 28, 154, 157, 183, 68, }, { 228, 203, 66, 4, 60, 118, 192, 218, 202, 208, 246, 129, 20, 165, 68, 26, }, { 58, 61, 158, 48, 211, 45, 73, 241, 49, 137, 226, 195, 240, 176, 182, 184, }, { 115, 16, 4, 172, 235, 116, 246, 206, 59, 3, 208, 143, 89, 10, 254, 56, }, { 93, 108, 27, 19, 225, 220, 214, 84, 24, 154, 249, 81, 95, 218, 224, 130, }, { 110, 239, 75, 180, 99, 131, 51, 87, 194, 166, 161, 15, 33, 82, 165, 100, }, { 143, 165, 184, 227, 248, 69, 120, 231, 237, 114, 21, 24, 233, 239, 203, 159, }, { 191, 89, 135, 117, 166, 203, 228, 194, 213, 243, 115, 52, 98, 111, 41, 38, }, { 207, 54, 236, 232, 145, 110, 107, 42, 12, 77, 157, 201, 206, 109, 112, 65, }, { 184, 51, 124, 185, 40, 229, 128, 45, 140, 33, 164, 254, 24, 198, 120, 173, }, { 231, 180, 45, 53, 224, 167, 185, 252, 40, 109, 200, 243, 225, 173, 227, 69, }, { 249, 52, 13, 28, 180, 129, 5, 67, 51, 117, 135, 1, 108, 253, 31, 70, }, { 253, 33, 153, 225, 230, 126, 24, 138, 136, 26, 110, 185, 227, 92, 233, 146, }, { 181, 152, 38, 211, 43, 104, 49, 22, 220, 251, 247, 219, 25, 95, 125, 39, }, { 9, 190, 206, 151, 81, 114, 172, 242, 235, 181, 186, 157, 142, 56, 243, 94, }, { 71, 249, 175, 199, 231, 5, 119, 34, 184, 237, 95, 27, 93, 43, 234, 85, }, { 229, 95, 103, 170, 201, 57, 86, 121, 148, 187, 93, 175, 71, 28, 152, 47, }, { 49, 104, 26, 56, 171, 193, 10, 134, 102, 234, 205, 2, 216, 57, 62, 140, }, { 212, 55, 125, 146, 98, 248, 92, 255, 242, 81, 144, 173, 159, 37, 166, 163, }, { 232, 244, 61, 192, 202, 180, 231, 66, 196, 97, 14, 138, 70, 133, 157, 165, }, { 148, 164, 41, 153, 11, 211, 79, 50, 19, 110, 24, 124, 184, 167, 29, 125, }, { 28, 107, 106, 182, 125, 184, 83, 58, 167, 206, 218, 174, 43, 225, 135, 105, }, { 14, 212, 53, 91, 223, 92, 200, 29, 178, 103, 109, 87, 244, 145, 162, 213, }, { 203, 35, 120, 21, 195, 145, 118, 227, 183, 34, 116, 113, 65, 204, 134, 149, }, { 109, 144, 36, 133, 191, 82, 74, 113, 32, 27, 159, 125, 212, 90, 2, 59, }, { 54, 2, 225, 244, 37, 239, 110, 105, 63, 56, 26, 200, 162, 144, 111, 7, }, { 53, 125, 142, 197, 249, 62, 23, 79, 221, 133, 36, 186, 87, 152, 200, 88, }, { 116, 122, 255, 96, 101, 90, 146, 33, 98, 209, 7, 69, 35, 163, 175, 179, }, { 197, 247, 77, 78, 28, 205, 190, 254, 5, 69, 25, 38, 181, 93, 36, 64, }, { 117, 238, 218, 206, 144, 21, 4, 130, 60, 186, 172, 107, 112, 26, 115, 134, }, { 178, 242, 221, 31, 165, 70, 85, 249, 133, 41, 32, 17, 99, 246, 44, 172, }, { 210, 201, 163, 240, 25, 153, 174, 179, 245, 232, 236, 73, 182, 53, 43, 29, }, { 153, 15, 115, 243, 8, 94, 254, 9, 67, 180, 75, 89, 185, 62, 24, 247, }, { 35, 215, 69, 213, 9, 37, 145, 161, 115, 67, 122, 251, 7, 73, 27, 48, }, { 21, 213, 164, 33, 44, 202, 255, 200, 76, 123, 96, 51, 165, 217, 116, 55, }, { 8, 42, 235, 57, 164, 61, 58, 81, 181, 222, 17, 179, 221, 129, 47, 107, }, { 39, 194, 209, 40, 91, 218, 140, 104, 200, 44, 147, 67, 136, 232, 237, 228, }, { 25, 234, 219, 229, 218, 8, 216, 80, 66, 202, 152, 56, 247, 249, 173, 136, }, { 118, 145, 181, 255, 76, 196, 125, 164, 222, 7, 146, 25, 133, 18, 212, 217, }, { 57, 66, 241, 1, 15, 252, 48, 215, 211, 52, 220, 177, 5, 184, 17, 231, }, { 19, 43, 122, 67, 87, 171, 13, 132, 75, 194, 28, 215, 140, 201, 249, 137, }, { 5, 129, 177, 83, 167, 176, 139, 106, 229, 4, 66, 150, 220, 24, 42, 225, }, { 238, 10, 227, 162, 177, 213, 21, 14, 195, 216, 114, 110, 111, 149, 16, 27, }, { 87, 173, 186, 181, 108, 127, 3, 128, 17, 146, 125, 190, 36, 234, 180, 131, }, { 159, 241, 173, 145, 115, 63, 12, 69, 68, 13, 55, 189, 144, 46, 149, 73, }, { 189, 178, 205, 234, 143, 85, 11, 71, 105, 37, 230, 104, 196, 222, 82, 76, }, { 69, 18, 229, 88, 206, 155, 152, 167, 4, 59, 202, 71, 251, 154, 145, 63, }, { 255, 202, 211, 126, 207, 224, 247, 15, 52, 204, 251, 229, 69, 237, 146, 248, }, { 195, 9, 147, 44, 103, 172, 76, 178, 2, 252, 101, 194, 156, 77, 169, 254, }, { 59, 169, 187, 158, 38, 98, 223, 82, 111, 226, 73, 237, 163, 9, 106, 141, }, { 123, 58, 239, 149, 79, 73, 204, 159, 142, 221, 193, 60, 132, 139, 209, 83, }, { 142, 49, 157, 77, 13, 10, 238, 68, 179, 25, 190, 54, 186, 86, 23, 170, }, { 233, 96, 24, 110, 63, 251, 113, 225, 154, 10, 165, 164, 21, 60, 65, 144, }, { 200, 92, 23, 36, 31, 64, 15, 197, 85, 159, 74, 3, 180, 196, 33, 202, }, { 124, 80, 20, 89, 193, 103, 168, 112, 215, 15, 22, 246, 254, 34, 128, 216, }, { 107, 110, 250, 231, 196, 51, 184, 61, 39, 162, 227, 153, 253, 74, 143, 133, }, { 76, 172, 43, 207, 159, 233, 52, 85, 239, 142, 112, 218, 117, 162, 98, 97, }, { 131, 154, 199, 39, 14, 135, 95, 127, 227, 195, 237, 19, 187, 207, 18, 32, }, { 236, 225, 169, 61, 152, 75, 250, 139, 127, 14, 231, 50, 201, 36, 107, 113, }, { 112, 111, 107, 157, 55, 165, 143, 232, 217, 190, 238, 253, 172, 2, 89, 103, }, { 226, 53, 156, 102, 71, 23, 50, 150, 205, 105, 138, 101, 61, 181, 201, 164, }, { 241, 30, 230, 37, 16, 188, 63, 18, 134, 171, 150, 178, 177, 124, 48, 45, }, { 205, 221, 166, 119, 184, 240, 132, 175, 176, 155, 8, 149, 104, 220, 11, 43, }, { 90, 6, 224, 223, 111, 242, 178, 187, 65, 72, 46, 155, 37, 115, 177, 9, }, { 43, 253, 174, 236, 173, 24, 171, 240, 198, 157, 107, 72, 218, 200, 52, 91, }, { 194, 157, 182, 130, 146, 227, 218, 17, 92, 151, 206, 236, 207, 244, 117, 203, }, { 167, 39, 121, 62, 137, 140, 170, 49, 201, 82, 64, 34, 198, 47, 88, 155, }, { 161, 217, 167, 92, 242, 237, 88, 125, 206, 235, 60, 198, 239, 63, 213, 37, }, { 44, 151, 85, 32, 35, 54, 207, 31, 159, 79, 188, 130, 160, 97, 101, 208, }, { 6, 254, 222, 98, 123, 97, 242, 76, 7, 185, 124, 228, 41, 16, 141, 190, }, { 45, 3, 112, 142, 214, 121, 89, 188, 193, 36, 23, 172, 243, 216, 185, 229, }, { 62, 40, 10, 205, 129, 210, 84, 56, 138, 230, 11, 123, 127, 17, 64, 108, }, { 113, 251, 78, 51, 194, 234, 25, 75, 135, 213, 69, 211, 255, 187, 133, 82, }, { 63, 188, 47, 99, 116, 157, 194, 155, 212, 141, 160, 85, 44, 168, 156, 89, }, { 246, 116, 29, 233, 158, 146, 91, 253, 223, 121, 65, 120, 203, 213, 97, 166, }, { 206, 162, 201, 70, 100, 33, 253, 137, 82, 38, 54, 231, 157, 212, 172, 116, }, { 56, 214, 212, 175, 250, 179, 166, 116, 141, 95, 119, 159, 86, 1, 205, 210, }, { 51, 131, 80, 167, 130, 95, 229, 3, 218, 60, 88, 94, 126, 136, 69, 230, }, { 135, 143, 83, 218, 92, 120, 66, 182, 88, 172, 4, 171, 52, 110, 228, 244, }, { 66, 120, 30, 148, 64, 181, 252, 72, 93, 233, 29, 141, 129, 51, 192, 180, }, { 140, 218, 215, 210, 36, 148, 1, 193, 15, 207, 43, 106, 28, 231, 108, 192, }, { 38, 86, 244, 134, 174, 149, 26, 203, 150, 71, 56, 109, 219, 81, 49, 209, }, { 122, 174, 202, 59, 186, 6, 90, 60, 208, 182, 106, 18, 215, 50, 13, 102, }, { 172, 114, 253, 54, 241, 96, 233, 70, 158, 49, 111, 227, 238, 166, 208, 175, }, { 152, 155, 86, 93, 253, 17, 104, 170, 29, 223, 224, 119, 234, 135, 196, 194, }, { 121, 209, 165, 10, 102, 215, 35, 26, 50, 11, 84, 96, 34, 58, 170, 57, }, { 139, 176, 44, 30, 170, 186, 101, 46, 86, 29, 252, 160, 102, 78, 61, 75, }, { 88, 237, 170, 64, 70, 108, 93, 62, 253, 158, 187, 199, 131, 194, 202, 99, }, { 86, 57, 159, 27, 153, 48, 149, 35, 79, 249, 214, 144, 119, 83, 104, 182, }, }, { { 168, 44, 157, 30, 217, 126, 169, 179, 192, 1, 107, 61, 196, 163, 131, 180, }, { 180, 107, 164, 157, 108, 119, 20, 76, 23, 160, 128, 89, 210, 222, 57, 170, }, { 150, 149, 195, 214, 114, 143, 209, 216, 178, 71, 237, 40, 109, 34, 21, 206, }, { 30, 235, 156, 57, 10, 233, 67, 205, 99, 93, 154, 47, 212, 84, 165, 157, }, { 138, 210, 250, 85, 199, 134, 108, 39, 101, 230, 6, 76, 123, 95, 175, 208, }, { 245, 153, 80, 225, 83, 55, 29, 218, 111, 232, 97, 233, 73, 66, 177, 7, }, { 159, 54, 161, 38, 117, 249, 208, 9, 125, 79, 51, 3, 130, 115, 135, 39, }, { 165, 20, 118, 89, 99, 11, 151, 6, 164, 50, 87, 128, 108, 160, 47, 152, }, { 19, 211, 119, 126, 176, 156, 125, 120, 7, 110, 166, 146, 124, 87, 9, 177, }, { 57, 216, 193, 152, 23, 98, 198, 36, 55, 255, 204, 12, 77, 15, 89, 156, }, { 172, 183, 20, 169, 100, 125, 150, 215, 107, 58, 137, 171, 131, 241, 189, 113, }, { 45, 106, 41, 182, 27, 109, 5, 19, 117, 40, 32, 135, 213, 214, 159, 203, }, { 131, 113, 152, 165, 192, 240, 109, 246, 170, 238, 216, 103, 148, 14, 61, 57, }, { 134, 188, 162, 79, 195, 131, 45, 139, 91, 171, 227, 53, 178, 169, 237, 92, }, { 185, 83, 79, 218, 214, 2, 42, 249, 115, 147, 188, 228, 122, 221, 149, 134, }, { 118, 232, 200, 68, 147, 199, 112, 44, 197, 6, 185, 142, 221, 76, 140, 62, }, { 15, 148, 78, 253, 5, 149, 192, 135, 208, 207, 77, 246, 106, 42, 179, 175, }, { 90, 212, 82, 175, 54, 218, 10, 38, 234, 80, 64, 205, 105, 111, 253, 85, }, { 160, 217, 76, 179, 96, 120, 215, 123, 85, 119, 108, 210, 74, 7, 255, 253, }, { 146, 14, 74, 97, 207, 140, 238, 188, 25, 124, 15, 190, 42, 112, 43, 11, }, { 226, 209, 174, 40, 94, 168, 95, 198, 195, 189, 37, 237, 114, 71, 134, 115, }, { 52, 224, 42, 223, 173, 23, 248, 145, 83, 204, 240, 177, 229, 12, 245, 176, }, { 238, 191, 246, 50, 90, 173, 30, 106, 253, 240, 192, 148, 187, 177, 196, 255, }, { 109, 206, 110, 151, 154, 93, 115, 156, 87, 30, 24, 243, 47, 191, 249, 198, }, { 26, 112, 21, 142, 183, 234, 124, 169, 200, 102, 120, 185, 147, 6, 155, 88, }, { 36, 201, 75, 70, 28, 27, 4, 194, 186, 32, 254, 172, 58, 135, 13, 34, }, { 31, 189, 47, 100, 180, 153, 60, 212, 57, 35, 67, 235, 181, 161, 75, 61, }, { 210, 170, 13, 64, 78, 188, 152, 51, 59, 74, 55, 202, 208, 25, 77, 6, }, { 24, 220, 176, 52, 8, 10, 130, 155, 124, 154, 9, 242, 81, 47, 132, 219, }, { 55, 26, 60, 56, 172, 135, 121, 186, 189, 78, 88, 62, 70, 208, 4, 147, }, { 106, 175, 241, 199, 38, 206, 205, 211, 18, 167, 82, 234, 203, 49, 54, 32, }, { 63, 239, 237, 149, 21, 129, 7, 114, 40, 56, 95, 209, 200, 116, 120, 218, }, { 174, 27, 177, 19, 219, 157, 104, 229, 223, 198, 248, 224, 65, 216, 162, 242, }, { 16, 41, 97, 153, 177, 12, 252, 83, 233, 236, 14, 29, 223, 139, 248, 146, }, { 70, 147, 107, 44, 131, 211, 183, 217, 61, 241, 171, 169, 127, 18, 71, 75, }, { 108, 152, 221, 202, 36, 45, 12, 133, 13, 96, 193, 55, 78, 74, 23, 102, }, { 188, 158, 117, 48, 213, 113, 106, 132, 130, 214, 135, 182, 92, 122, 69, 227, }, { 104, 3, 84, 125, 153, 46, 51, 225, 166, 91, 35, 161, 9, 24, 41, 163, }, { 11, 15, 199, 74, 184, 150, 255, 227, 123, 244, 175, 96, 45, 120, 141, 106, }, { 62, 185, 94, 200, 171, 241, 120, 107, 114, 70, 134, 21, 169, 129, 150, 122, }, { 254, 150, 151, 171, 235, 161, 226, 57, 20, 28, 206, 137, 100, 58, 60, 109, }, { 169, 122, 46, 67, 103, 14, 214, 170, 154, 127, 178, 249, 165, 86, 109, 20, }, { 40, 167, 19, 92, 24, 30, 69, 110, 132, 109, 27, 213, 243, 113, 79, 174, }, { 124, 177, 188, 83, 149, 33, 240, 214, 228, 140, 207, 42, 145, 193, 239, 244, }, { 242, 248, 207, 177, 239, 164, 163, 149, 42, 81, 43, 240, 173, 204, 126, 225, }, { 191, 100, 99, 215, 212, 225, 235, 175, 108, 84, 47, 57, 255, 166, 180, 192, }, { 244, 207, 227, 188, 237, 71, 98, 195, 53, 150, 184, 45, 40, 183, 95, 167, }, { 203, 32, 14, 41, 248, 198, 101, 177, 29, 174, 231, 252, 224, 195, 39, 125, }, { 6, 55, 44, 13, 2, 227, 193, 86, 31, 199, 147, 221, 133, 123, 33, 70, }, { 248, 161, 187, 166, 233, 66, 35, 111, 11, 219, 93, 84, 225, 65, 29, 43, }, { 189, 200, 198, 109, 107, 1, 21, 157, 216, 168, 94, 114, 61, 143, 171, 67, }, { 117, 18, 222, 163, 146, 87, 241, 7, 43, 132, 17, 1, 126, 144, 125, 29, }, { 3, 250, 22, 231, 1, 144, 129, 43, 238, 130, 168, 143, 163, 220, 241, 35, }, { 76, 202, 31, 59, 133, 53, 55, 35, 28, 123, 221, 13, 51, 159, 36, 129, }, { 75, 171, 128, 107, 57, 166, 137, 108, 89, 194, 151, 20, 215, 17, 235, 103, }, { 192, 47, 201, 99, 64, 80, 154, 82, 102, 90, 72, 156, 205, 187, 170, 23, }, { 4, 155, 137, 183, 189, 3, 63, 100, 171, 59, 226, 150, 71, 82, 62, 197, }, { 179, 10, 59, 205, 208, 228, 170, 3, 82, 25, 202, 64, 54, 80, 246, 76, }, { 182, 199, 1, 39, 211, 151, 234, 126, 163, 92, 241, 18, 16, 247, 38, 41, }, { 81, 219, 149, 229, 142, 76, 245, 197, 145, 164, 239, 173, 68, 23, 112, 63, }, { 235, 114, 204, 216, 89, 222, 94, 23, 12, 181, 251, 198, 157, 22, 20, 154, }, { 152, 87, 62, 118, 201, 106, 110, 70, 56, 246, 121, 26, 102, 253, 72, 193, }, { 35, 168, 212, 22, 160, 136, 186, 141, 255, 153, 180, 181, 222, 9, 194, 196, }, { 171, 214, 139, 249, 216, 238, 40, 152, 46, 131, 195, 178, 103, 127, 114, 151, }, { 178, 92, 136, 144, 110, 148, 213, 26, 8, 103, 19, 132, 87, 165, 24, 236, }, { 153, 1, 141, 43, 119, 26, 17, 95, 98, 136, 160, 222, 7, 8, 166, 97, }, { 137, 40, 236, 178, 198, 22, 237, 12, 139, 100, 174, 195, 216, 131, 94, 243, }, { 223, 146, 230, 7, 244, 201, 166, 134, 95, 121, 11, 119, 120, 26, 225, 42, }, { 13, 56, 235, 71, 186, 117, 62, 181, 100, 51, 60, 189, 168, 3, 172, 44, }, { 49, 45, 16, 53, 174, 100, 184, 236, 162, 137, 203, 227, 195, 171, 37, 213, }, { 112, 223, 228, 73, 145, 36, 177, 122, 218, 193, 42, 83, 88, 55, 173, 120, }, { 115, 37, 242, 174, 144, 180, 48, 81, 52, 67, 130, 220, 251, 235, 92, 91, }, { 29, 17, 138, 222, 11, 121, 194, 230, 141, 223, 50, 160, 119, 136, 84, 190, }, { 141, 179, 101, 5, 123, 21, 210, 104, 32, 95, 76, 85, 159, 209, 96, 54, }, { 241, 2, 217, 86, 238, 52, 34, 190, 196, 211, 131, 127, 14, 16, 143, 194, }, { 125, 231, 15, 14, 43, 81, 143, 207, 190, 242, 22, 238, 240, 52, 1, 84, }, { 23, 72, 254, 201, 13, 159, 66, 28, 172, 85, 68, 4, 59, 5, 55, 116, }, { 44, 60, 154, 235, 165, 29, 122, 10, 47, 86, 249, 67, 180, 35, 113, 107, }, { 53, 182, 153, 130, 19, 103, 135, 136, 9, 178, 41, 117, 132, 249, 27, 16, }, { 136, 126, 95, 239, 120, 102, 146, 21, 209, 26, 119, 7, 185, 118, 176, 83, }, { 103, 151, 26, 128, 156, 187, 243, 102, 118, 148, 110, 87, 99, 50, 154, 12, }, { 225, 43, 184, 207, 95, 56, 222, 237, 45, 63, 141, 98, 209, 155, 119, 80, }, { 181, 61, 23, 192, 210, 7, 107, 85, 77, 222, 89, 157, 179, 43, 215, 10, }, { 100, 109, 12, 103, 157, 43, 114, 77, 152, 22, 198, 216, 192, 238, 107, 47, }, { 177, 166, 158, 119, 111, 4, 84, 49, 230, 229, 187, 11, 244, 121, 233, 207, }, { 8, 245, 209, 173, 185, 6, 126, 200, 149, 118, 7, 239, 142, 164, 124, 73, }, { 229, 176, 49, 120, 226, 59, 225, 137, 134, 4, 111, 244, 150, 201, 73, 149, }, { 28, 71, 57, 131, 181, 9, 189, 255, 215, 161, 235, 100, 22, 125, 186, 30, }, { 107, 249, 66, 154, 152, 190, 178, 202, 72, 217, 139, 46, 170, 196, 216, 128, }, { 92, 227, 126, 162, 52, 57, 203, 112, 245, 151, 211, 16, 236, 20, 220, 19, }, { 163, 35, 90, 84, 97, 232, 86, 80, 187, 245, 196, 93, 233, 219, 14, 222, }, { 122, 134, 144, 94, 151, 194, 49, 128, 251, 75, 92, 247, 20, 186, 206, 178, }, { 232, 136, 218, 63, 88, 78, 223, 60, 226, 55, 83, 73, 62, 202, 229, 185, }, { 218, 95, 220, 237, 247, 186, 230, 251, 174, 60, 48, 37, 94, 189, 49, 79, }, { 215, 103, 55, 170, 77, 207, 216, 78, 202, 15, 12, 152, 246, 190, 157, 99, }, { 250, 13, 30, 28, 86, 162, 221, 93, 191, 39, 44, 31, 35, 104, 2, 168, }, { 167, 184, 211, 227, 220, 235, 105, 52, 16, 206, 38, 203, 174, 137, 48, 27, }, { 127, 75, 170, 180, 148, 177, 113, 253, 10, 14, 103, 165, 50, 29, 30, 215, }, { 228, 230, 130, 37, 92, 75, 158, 144, 220, 122, 182, 48, 247, 60, 167, 53, }, { 143, 31, 192, 191, 196, 245, 44, 90, 148, 163, 61, 30, 93, 248, 127, 181, }, { 161, 143, 255, 238, 222, 8, 168, 98, 15, 9, 181, 22, 43, 242, 17, 93, }, { 82, 33, 131, 2, 143, 220, 116, 238, 127, 38, 71, 34, 231, 203, 129, 28, }, { 236, 19, 83, 136, 229, 77, 224, 88, 73, 12, 177, 223, 121, 152, 219, 124, }, { 59, 116, 100, 34, 168, 130, 56, 22, 131, 3, 189, 71, 143, 38, 70, 31, }, { 162, 117, 233, 9, 223, 152, 41, 73, 225, 139, 29, 153, 136, 46, 224, 126, }, { 95, 25, 104, 69, 53, 169, 74, 91, 27, 21, 123, 159, 79, 200, 45, 48, }, { 80, 141, 38, 184, 48, 60, 138, 220, 203, 218, 54, 105, 37, 226, 158, 159, }, { 74, 253, 51, 54, 135, 214, 246, 117, 3, 188, 78, 208, 182, 228, 5, 199, }, { 87, 236, 185, 232, 140, 175, 52, 147, 142, 99, 124, 112, 193, 108, 81, 121, }, { 85, 64, 28, 82, 51, 79, 202, 161, 58, 159, 13, 59, 3, 69, 78, 250, }, { 220, 104, 240, 224, 245, 89, 39, 173, 177, 251, 163, 248, 219, 198, 16, 9, }, { 222, 196, 85, 90, 74, 185, 217, 159, 5, 7, 210, 179, 25, 239, 15, 138, }, { 157, 154, 4, 156, 202, 25, 46, 59, 201, 179, 66, 72, 64, 90, 152, 164, }, { 231, 28, 148, 194, 93, 219, 31, 187, 50, 248, 30, 191, 84, 224, 86, 22, }, { 175, 77, 2, 78, 101, 237, 23, 252, 133, 184, 33, 36, 32, 45, 76, 82, }, { 151, 195, 112, 139, 204, 255, 174, 193, 232, 57, 52, 236, 12, 215, 251, 110, }, { 170, 128, 56, 164, 102, 158, 87, 129, 116, 253, 26, 118, 6, 138, 156, 55, }, { 38, 101, 238, 252, 163, 251, 250, 240, 14, 220, 143, 231, 248, 174, 18, 161, }, { 77, 156, 172, 102, 59, 69, 72, 58, 70, 5, 4, 201, 82, 106, 202, 33, }, { 84, 22, 175, 15, 141, 63, 181, 184, 96, 225, 212, 255, 98, 176, 160, 90, }, { 247, 53, 245, 91, 236, 215, 227, 232, 219, 20, 16, 162, 139, 107, 174, 132, }, { 217, 165, 202, 10, 246, 42, 103, 208, 64, 190, 152, 170, 253, 97, 192, 108, }, { 132, 16, 7, 245, 124, 99, 211, 185, 239, 87, 146, 126, 112, 128, 242, 223, }, { 65, 242, 244, 124, 63, 64, 9, 150, 120, 72, 225, 176, 155, 156, 136, 173, }, { 130, 39, 43, 248, 126, 128, 18, 239, 240, 144, 1, 163, 245, 251, 211, 153, }, { 214, 49, 132, 247, 243, 191, 167, 87, 144, 113, 213, 92, 151, 75, 115, 195, }, { 183, 145, 178, 122, 109, 231, 149, 103, 249, 34, 40, 214, 113, 2, 200, 137, }, { 219, 9, 111, 176, 73, 202, 153, 226, 244, 66, 233, 225, 63, 72, 223, 239, }, { 43, 93, 5, 187, 25, 142, 196, 69, 106, 239, 179, 90, 80, 173, 190, 141, }, { 166, 238, 96, 190, 98, 155, 22, 45, 74, 176, 255, 15, 207, 124, 222, 187, }, { 56, 142, 114, 197, 169, 18, 185, 61, 109, 129, 21, 200, 44, 250, 183, 60, }, { 206, 237, 52, 195, 251, 181, 37, 204, 236, 235, 220, 174, 198, 100, 247, 24, }, { 149, 111, 213, 49, 115, 31, 80, 243, 92, 197, 69, 167, 206, 254, 228, 237, }, { 113, 137, 87, 20, 47, 84, 206, 99, 128, 191, 243, 151, 57, 194, 67, 216, }, { 195, 213, 223, 132, 65, 192, 27, 121, 136, 216, 224, 19, 110, 103, 91, 52, }, { 142, 73, 115, 226, 122, 133, 83, 67, 206, 221, 228, 218, 60, 13, 145, 21, }, { 154, 251, 155, 204, 118, 138, 144, 116, 140, 10, 8, 81, 164, 212, 87, 66, }, { 239, 233, 69, 111, 228, 221, 97, 115, 167, 142, 25, 80, 218, 68, 42, 95, }, { 37, 159, 248, 27, 162, 107, 123, 219, 224, 94, 39, 104, 91, 114, 227, 130, }, { 164, 66, 197, 4, 221, 123, 232, 31, 254, 76, 142, 68, 13, 85, 193, 56, }, { 233, 222, 105, 98, 230, 62, 160, 37, 184, 73, 138, 141, 95, 63, 11, 25, }, { 60, 21, 251, 114, 20, 17, 134, 89, 198, 186, 247, 94, 107, 168, 137, 249, }, { 111, 98, 203, 45, 37, 189, 141, 174, 227, 226, 105, 184, 237, 150, 230, 69, }, { 2, 172, 165, 186, 191, 224, 254, 50, 180, 252, 113, 75, 194, 41, 31, 131, }, { 1, 86, 179, 93, 190, 112, 127, 25, 90, 126, 217, 196, 97, 245, 238, 160, }, { 10, 89, 116, 23, 6, 230, 128, 250, 33, 138, 118, 164, 76, 141, 99, 202, }, { 9, 163, 98, 240, 7, 118, 1, 209, 207, 8, 222, 43, 239, 81, 146, 233, }, { 148, 57, 102, 108, 205, 111, 47, 234, 6, 187, 156, 99, 175, 11, 10, 77, }, { 237, 69, 224, 213, 91, 61, 159, 65, 19, 114, 104, 27, 24, 109, 53, 220, }, { 89, 46, 68, 72, 55, 74, 139, 13, 4, 210, 232, 66, 202, 179, 12, 118, }, { 97, 160, 54, 141, 158, 88, 50, 48, 105, 83, 253, 138, 230, 73, 187, 74, }, { 105, 85, 231, 32, 39, 94, 76, 248, 252, 37, 250, 101, 104, 237, 199, 3, }, { 41, 241, 160, 1, 166, 110, 58, 119, 222, 19, 194, 17, 146, 132, 161, 14, }, { 176, 240, 45, 42, 209, 116, 43, 40, 188, 155, 98, 207, 149, 140, 7, 111, }, { 48, 123, 163, 104, 16, 20, 199, 245, 248, 247, 18, 39, 162, 94, 203, 117, }, { 96, 246, 133, 208, 32, 40, 77, 41, 51, 45, 36, 78, 135, 188, 85, 234, }, { 116, 68, 109, 254, 44, 39, 142, 30, 113, 250, 200, 197, 31, 101, 147, 189, }, { 34, 254, 103, 75, 30, 248, 197, 148, 165, 231, 109, 113, 191, 252, 44, 100, }, { 12, 110, 88, 26, 4, 5, 65, 172, 62, 77, 229, 121, 201, 246, 66, 140, }, { 205, 23, 34, 36, 250, 37, 164, 231, 2, 105, 116, 33, 101, 184, 6, 59, }, { 123, 208, 35, 3, 41, 178, 78, 153, 161, 53, 133, 51, 117, 79, 32, 18, }, { 91, 130, 225, 242, 136, 170, 117, 63, 176, 46, 153, 9, 8, 154, 19, 245, }, { 64, 164, 71, 33, 129, 48, 118, 143, 34, 54, 56, 116, 250, 105, 102, 13, }, { 227, 135, 29, 117, 224, 216, 32, 223, 153, 195, 252, 41, 19, 178, 104, 211, }, { 20, 178, 232, 46, 12, 15, 195, 55, 66, 215, 236, 139, 152, 217, 198, 87, }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, { 253, 108, 129, 76, 234, 49, 99, 18, 250, 158, 102, 6, 199, 230, 205, 78, }, { 120, 42, 53, 228, 40, 34, 207, 178, 79, 183, 45, 188, 214, 147, 209, 49, }, { 173, 225, 167, 244, 218, 13, 233, 206, 49, 68, 80, 111, 226, 4, 83, 209, }, { 208, 6, 168, 250, 241, 92, 102, 1, 143, 182, 70, 129, 18, 48, 82, 133, }, { 145, 244, 92, 134, 206, 28, 111, 151, 247, 254, 167, 49, 137, 172, 218, 40, }, { 252, 58, 50, 17, 84, 65, 28, 11, 160, 224, 191, 194, 166, 19, 35, 238, }, { 249, 247, 8, 251, 87, 50, 92, 118, 81, 165, 132, 144, 128, 180, 243, 139, }, { 234, 36, 127, 133, 231, 174, 33, 14, 86, 203, 34, 2, 252, 227, 250, 58, }, { 133, 70, 180, 168, 194, 19, 172, 160, 181, 41, 75, 186, 17, 117, 28, 127, }, { 126, 29, 25, 233, 42, 193, 14, 228, 80, 112, 190, 97, 83, 232, 240, 119, }, { 119, 190, 123, 25, 45, 183, 15, 53, 159, 120, 96, 74, 188, 185, 98, 158, }, { 199, 78, 86, 51, 252, 195, 36, 29, 35, 227, 2, 133, 41, 53, 101, 241, }, { 197, 226, 243, 137, 67, 35, 218, 47, 151, 31, 115, 206, 235, 28, 122, 114, }, { 93, 181, 205, 255, 138, 73, 180, 105, 175, 233, 10, 212, 141, 225, 50, 179, }, { 58, 34, 215, 127, 22, 242, 71, 15, 217, 125, 100, 131, 238, 211, 168, 191, }, { 213, 203, 146, 16, 242, 47, 38, 124, 126, 243, 125, 211, 52, 151, 130, 224, }, { 102, 193, 169, 221, 34, 203, 140, 127, 44, 234, 183, 147, 2, 199, 116, 172, }, { 139, 132, 73, 8, 121, 246, 19, 62, 63, 152, 223, 136, 26, 170, 65, 112, }, { 73, 7, 37, 209, 134, 70, 119, 94, 237, 62, 230, 95, 21, 56, 244, 228, }, { 194, 131, 108, 217, 255, 176, 100, 96, 210, 166, 57, 215, 15, 146, 181, 148, }, { 198, 24, 229, 110, 66, 179, 91, 4, 121, 157, 219, 65, 72, 192, 139, 81, }, { 86, 186, 10, 181, 50, 223, 75, 138, 212, 29, 165, 180, 160, 153, 191, 217, }, { 78, 102, 186, 129, 58, 213, 201, 17, 168, 135, 172, 70, 241, 182, 59, 2, }, { 39, 51, 93, 161, 29, 139, 133, 233, 84, 162, 86, 35, 153, 91, 252, 1, }, { 230, 74, 39, 159, 227, 171, 96, 162, 104, 134, 199, 123, 53, 21, 184, 182, }, { 147, 88, 249, 60, 113, 252, 145, 165, 67, 2, 214, 122, 75, 133, 197, 171, }, { 187, 255, 234, 96, 105, 226, 212, 203, 199, 111, 205, 175, 184, 244, 138, 5, }, { 209, 80, 27, 167, 79, 44, 25, 24, 213, 200, 159, 69, 115, 197, 188, 37, }, { 99, 12, 147, 55, 33, 184, 204, 2, 221, 175, 140, 193, 36, 96, 164, 201, }, { 193, 121, 122, 62, 254, 32, 229, 75, 60, 36, 145, 88, 172, 78, 68, 183, }, { 69, 105, 125, 203, 130, 67, 54, 242, 211, 115, 3, 38, 220, 206, 182, 104, }, { 200, 218, 24, 206, 249, 86, 228, 154, 243, 44, 79, 115, 67, 31, 214, 94, }, { 22, 30, 77, 148, 179, 239, 61, 5, 246, 43, 157, 192, 90, 240, 217, 212, }, { 27, 38, 166, 211, 9, 154, 3, 176, 146, 24, 161, 125, 242, 243, 117, 248, }, { 32, 82, 194, 241, 161, 24, 59, 166, 17, 27, 28, 58, 125, 213, 51, 231, }, { 155, 173, 40, 145, 200, 250, 239, 109, 214, 116, 209, 149, 197, 33, 185, 226, }, { 243, 174, 124, 236, 81, 212, 220, 140, 112, 47, 242, 52, 204, 57, 144, 65, }, { 184, 5, 252, 135, 104, 114, 85, 224, 41, 237, 101, 32, 27, 40, 123, 38, }, { 240, 84, 106, 11, 80, 68, 93, 167, 158, 173, 90, 187, 111, 229, 97, 98, }, { 47, 198, 140, 12, 164, 141, 251, 33, 193, 212, 81, 204, 23, 255, 128, 72, }, { 186, 169, 89, 61, 215, 146, 171, 210, 157, 17, 20, 107, 217, 1, 100, 165, }, { 79, 48, 9, 220, 132, 165, 182, 8, 242, 249, 117, 130, 144, 67, 213, 162, }, { 190, 50, 208, 138, 106, 145, 148, 182, 54, 42, 246, 253, 158, 83, 90, 96, }, { 18, 133, 196, 35, 14, 236, 2, 97, 93, 16, 127, 86, 29, 162, 231, 17, }, { 67, 94, 81, 198, 128, 160, 247, 164, 204, 180, 144, 251, 89, 181, 151, 46, }, { 207, 187, 135, 158, 69, 197, 90, 213, 182, 149, 5, 106, 167, 145, 25, 184, }, { 201, 140, 171, 147, 71, 38, 155, 131, 169, 82, 150, 183, 34, 234, 56, 254, }, { 42, 11, 182, 230, 167, 254, 187, 92, 48, 145, 106, 158, 49, 88, 80, 45, }, { 17, 127, 210, 196, 15, 124, 131, 74, 179, 146, 215, 217, 190, 126, 22, 50, }, { 21, 228, 91, 115, 178, 127, 188, 46, 24, 169, 53, 79, 249, 44, 40, 247, }, { 246, 99, 70, 6, 82, 167, 156, 241, 129, 106, 201, 102, 234, 158, 64, 36, }, { 98, 90, 32, 106, 159, 200, 179, 27, 135, 209, 85, 5, 69, 149, 74, 105, }, { 204, 65, 145, 121, 68, 85, 219, 254, 88, 23, 173, 229, 4, 77, 232, 155, }, { 224, 125, 11, 146, 225, 72, 161, 244, 119, 65, 84, 166, 176, 110, 153, 240, }, { 140, 229, 214, 88, 197, 101, 173, 113, 122, 33, 149, 145, 254, 36, 142, 150, }, { 144, 162, 239, 219, 112, 108, 16, 142, 173, 128, 126, 245, 232, 89, 52, 136, }, { 71, 197, 216, 113, 61, 163, 200, 192, 103, 143, 114, 109, 30, 231, 169, 235, }, { 255, 192, 36, 246, 85, 209, 157, 32, 78, 98, 23, 77, 5, 207, 210, 205, }, { 129, 221, 61, 31, 127, 16, 147, 196, 30, 18, 169, 44, 86, 39, 34, 186, }, { 94, 79, 219, 24, 139, 217, 53, 66, 65, 107, 162, 91, 46, 61, 195, 144, }, { 251, 91, 173, 65, 232, 210, 162, 68, 229, 89, 245, 219, 66, 157, 236, 8, }, { 121, 124, 134, 185, 150, 82, 176, 171, 21, 201, 244, 120, 183, 102, 63, 145, }, { 54, 76, 143, 101, 18, 247, 6, 163, 231, 48, 129, 250, 39, 37, 234, 51, }, { 50, 215, 6, 210, 175, 244, 57, 199, 76, 11, 99, 108, 96, 119, 212, 246, }, { 14, 194, 253, 160, 187, 229, 191, 158, 138, 177, 148, 50, 11, 223, 93, 15, }, { 211, 252, 190, 29, 240, 204, 231, 42, 97, 52, 238, 14, 177, 236, 163, 166, }, { 51, 129, 181, 143, 17, 132, 70, 222, 22, 117, 186, 168, 1, 130, 58, 86, }, { 83, 119, 48, 95, 49, 172, 11, 247, 37, 88, 158, 230, 134, 62, 111, 188, }, { 135, 234, 17, 18, 125, 243, 82, 146, 1, 213, 58, 241, 211, 92, 3, 252, }, { 33, 4, 113, 172, 31, 104, 68, 191, 75, 101, 197, 254, 28, 32, 221, 71, }, { 212, 157, 33, 77, 76, 95, 89, 101, 36, 141, 164, 23, 85, 98, 108, 64, }, { 7, 97, 159, 80, 188, 147, 190, 79, 69, 185, 74, 25, 228, 142, 207, 230, }, { 72, 81, 150, 140, 56, 54, 8, 71, 183, 64, 63, 155, 116, 205, 26, 68, }, { 221, 62, 67, 189, 75, 41, 88, 180, 235, 133, 122, 60, 186, 51, 254, 169, }, { 110, 52, 120, 112, 155, 205, 242, 183, 185, 156, 176, 124, 140, 99, 8, 229, }, { 196, 180, 64, 212, 253, 83, 165, 54, 205, 97, 170, 10, 138, 233, 148, 210, }, { 88, 120, 247, 21, 137, 58, 244, 20, 94, 172, 49, 134, 171, 70, 226, 214, }, { 156, 204, 183, 193, 116, 105, 81, 34, 147, 205, 155, 140, 33, 175, 118, 4, }, { 5, 205, 58, 234, 3, 115, 64, 125, 241, 69, 59, 82, 38, 167, 208, 101, }, { 25, 138, 3, 105, 182, 122, 253, 130, 38, 228, 208, 54, 48, 218, 106, 123, }, { 216, 243, 121, 87, 72, 90, 24, 201, 26, 192, 65, 110, 156, 148, 46, 204, }, { 128, 139, 142, 66, 193, 96, 236, 221, 68, 108, 112, 232, 55, 210, 204, 26, }, { 158, 96, 18, 123, 203, 137, 175, 16, 39, 49, 234, 199, 227, 134, 105, 135, }, { 68, 63, 206, 150, 60, 51, 73, 235, 137, 13, 218, 226, 189, 59, 88, 200, }, { 202, 118, 189, 116, 70, 182, 26, 168, 71, 208, 62, 56, 129, 54, 201, 221, }, { 61, 67, 72, 47, 170, 97, 249, 64, 156, 196, 46, 154, 10, 93, 103, 89, }, { 46, 144, 63, 81, 26, 253, 132, 56, 155, 170, 136, 8, 118, 10, 110, 232, }, { 114, 115, 65, 243, 46, 196, 79, 72, 110, 61, 91, 24, 154, 30, 178, 251, }, { 66, 8, 226, 155, 62, 208, 136, 189, 150, 202, 73, 63, 56, 64, 121, 142, }, { 101, 59, 191, 58, 35, 91, 13, 84, 194, 104, 31, 28, 161, 27, 133, 143, }, }, { { 212, 25, 45, 212, 194, 195, 211, 156, 225, 93, 169, 24, 44, 209, 190, 143, }, { 64, 123, 203, 64, 148, 52, 166, 4, 80, 179, 20, 219, 107, 37, 96, 181, }, { 151, 192, 210, 151, 60, 123, 129, 132, 194, 113, 209, 135, 149, 15, 61, 183, }, { 77, 105, 182, 77, 217, 132, 29, 193, 207, 255, 67, 52, 235, 167, 138, 191, }, { 3, 162, 52, 3, 106, 140, 244, 28, 115, 159, 108, 68, 210, 251, 227, 141, }, { 209, 60, 113, 209, 124, 148, 12, 184, 116, 63, 29, 212, 153, 31, 88, 219, }, { 248, 8, 121, 248, 227, 172, 214, 238, 198, 220, 208, 71, 54, 72, 132, 69, }, { 202, 199, 38, 202, 192, 242, 84, 68, 25, 210, 151, 245, 20, 48, 175, 180, }, { 83, 183, 189, 83, 219, 181, 154, 25, 55, 112, 125, 217, 211, 70, 155, 132, }, { 102, 32, 39, 102, 10, 245, 222, 62, 158, 246, 198, 223, 216, 227, 85, 215, }, { 165, 15, 141, 165, 31, 37, 3, 46, 29, 127, 150, 53, 183, 119, 22, 70, }, { 16, 110, 66, 16, 37, 13, 200, 1, 20, 92, 5, 70, 106, 152, 24, 188, }, { 108, 106, 159, 108, 181, 91, 163, 118, 119, 50, 109, 132, 113, 188, 90, 127, }, { 144, 152, 23, 144, 206, 101, 71, 9, 180, 249, 45, 51, 188, 210, 216, 21, }, { 94, 165, 192, 94, 150, 5, 33, 220, 168, 60, 42, 54, 83, 196, 113, 142, }, { 189, 86, 238, 189, 201, 207, 175, 206, 3, 13, 112, 80, 232, 163, 2, 164, }, { 199, 213, 91, 199, 141, 66, 239, 129, 134, 158, 192, 26, 148, 178, 69, 190, }, { 32, 220, 132, 32, 74, 26, 83, 2, 40, 184, 10, 140, 212, 243, 48, 187, }, { 54, 53, 174, 54, 187, 204, 176, 59, 218, 25, 215, 66, 217, 94, 45, 222, }, { 230, 214, 114, 230, 225, 157, 81, 54, 62, 83, 238, 170, 14, 169, 149, 126, }, { 243, 157, 108, 243, 122, 199, 70, 19, 191, 109, 95, 32, 209, 255, 107, 150, }, { 120, 254, 44, 120, 8, 196, 89, 230, 102, 121, 248, 50, 224, 2, 68, 236, }, { 96, 167, 79, 96, 222, 46, 245, 6, 120, 11, 30, 87, 191, 214, 80, 14, }, { 12, 205, 208, 12, 107, 117, 86, 112, 15, 57, 115, 211, 206, 106, 10, 113, }, { 60, 127, 22, 60, 4, 98, 205, 115, 51, 221, 124, 25, 112, 1, 34, 118, }, { 127, 166, 233, 127, 250, 218, 159, 107, 16, 241, 4, 134, 201, 223, 161, 78, }, { 192, 141, 158, 192, 127, 92, 41, 12, 240, 22, 60, 174, 189, 111, 160, 28, }, { 250, 117, 224, 250, 175, 229, 207, 71, 37, 54, 152, 63, 170, 91, 135, 179, }, { 229, 116, 70, 229, 139, 17, 165, 42, 77, 204, 130, 238, 220, 82, 118, 243, }, { 44, 17, 84, 44, 33, 111, 5, 114, 39, 129, 121, 95, 26, 153, 58, 202, }, { 41, 52, 8, 41, 159, 56, 218, 86, 178, 227, 205, 147, 175, 87, 220, 158, }, { 206, 61, 215, 206, 88, 96, 102, 213, 28, 197, 7, 5, 239, 22, 169, 155, }, { 124, 4, 221, 124, 144, 86, 107, 119, 99, 110, 104, 194, 27, 36, 66, 195, }, { 7, 88, 197, 7, 242, 30, 198, 141, 118, 136, 252, 180, 41, 221, 229, 162, }, { 180, 190, 98, 180, 28, 237, 38, 154, 153, 86, 183, 79, 147, 7, 238, 129, }, { 129, 41, 248, 129, 205, 173, 98, 189, 48, 208, 12, 73, 152, 162, 32, 210, }, { 162, 87, 72, 162, 237, 59, 197, 163, 107, 247, 106, 129, 158, 170, 243, 228, }, { 240, 63, 88, 240, 16, 75, 178, 15, 204, 242, 51, 100, 3, 4, 136, 27, }, { 182, 195, 251, 182, 80, 164, 63, 51, 122, 188, 255, 55, 15, 20, 237, 119, }, { 67, 217, 255, 67, 254, 184, 82, 24, 35, 44, 120, 159, 185, 222, 131, 56, }, { 103, 255, 138, 103, 44, 48, 51, 139, 14, 131, 226, 227, 150, 11, 181, 172, }, { 89, 253, 5, 89, 100, 27, 231, 81, 222, 180, 214, 130, 122, 25, 148, 44, }, { 236, 156, 202, 236, 94, 51, 44, 126, 215, 151, 69, 241, 167, 246, 154, 214, }, { 134, 113, 61, 134, 63, 179, 164, 48, 70, 88, 240, 253, 177, 127, 197, 112, }, { 244, 197, 169, 244, 136, 217, 128, 158, 201, 229, 163, 148, 248, 34, 142, 52, }, { 246, 184, 48, 246, 196, 144, 153, 55, 42, 15, 235, 236, 100, 49, 141, 194, }, { 92, 216, 89, 92, 218, 76, 56, 117, 75, 214, 98, 78, 207, 215, 114, 120, }, { 146, 229, 142, 146, 130, 44, 94, 160, 87, 19, 101, 75, 32, 193, 219, 227, }, { 168, 29, 240, 168, 82, 149, 184, 235, 130, 51, 193, 218, 55, 245, 252, 76, }, { 207, 226, 122, 207, 126, 165, 139, 96, 140, 176, 35, 57, 161, 254, 73, 224, }, { 47, 179, 96, 47, 75, 227, 241, 110, 84, 30, 21, 27, 200, 98, 217, 71, }, { 233, 185, 150, 233, 224, 100, 243, 90, 66, 245, 241, 61, 18, 56, 124, 130, }, { 84, 239, 120, 84, 41, 171, 92, 148, 65, 248, 129, 109, 250, 155, 126, 38, }, { 143, 153, 177, 143, 234, 145, 45, 100, 220, 3, 55, 226, 202, 219, 41, 85, }, { 170, 96, 105, 170, 30, 220, 161, 66, 97, 217, 137, 162, 171, 230, 255, 186, }, { 36, 38, 117, 36, 210, 136, 97, 147, 45, 175, 154, 124, 47, 213, 54, 148, }, { 113, 22, 160, 113, 221, 230, 208, 178, 252, 34, 63, 45, 155, 166, 168, 201, }, { 101, 130, 19, 101, 96, 121, 42, 34, 237, 105, 170, 155, 10, 24, 182, 90, }, { 153, 112, 155, 153, 27, 71, 206, 93, 46, 162, 234, 44, 199, 118, 52, 48, }, { 150, 31, 127, 150, 26, 190, 108, 49, 82, 4, 245, 187, 219, 231, 221, 204, }, { 156, 85, 199, 156, 165, 16, 17, 121, 187, 192, 94, 224, 114, 184, 210, 100, }, { 221, 241, 161, 221, 23, 225, 90, 200, 123, 6, 110, 7, 87, 117, 82, 170, }, { 90, 95, 49, 90, 14, 151, 19, 77, 173, 43, 186, 198, 168, 226, 119, 161, }, { 128, 246, 85, 128, 235, 104, 143, 8, 160, 165, 40, 117, 214, 74, 192, 169, }, { 232, 102, 59, 232, 198, 161, 30, 239, 210, 128, 213, 1, 92, 208, 156, 249, }, { 80, 21, 137, 80, 177, 57, 110, 5, 68, 239, 17, 157, 1, 189, 120, 9, }, { 87, 77, 76, 87, 67, 39, 168, 136, 50, 103, 237, 41, 40, 96, 157, 171, }, { 228, 171, 235, 228, 173, 212, 72, 159, 221, 185, 166, 210, 146, 186, 150, 136, }, { 30, 222, 11, 30, 2, 49, 135, 216, 248, 143, 62, 237, 56, 225, 17, 59, }, { 132, 12, 164, 132, 115, 250, 189, 153, 165, 178, 184, 133, 45, 108, 198, 134, }, { 21, 75, 30, 21, 155, 90, 23, 37, 129, 62, 177, 138, 223, 86, 254, 232, }, { 65, 164, 102, 65, 178, 241, 75, 177, 192, 198, 48, 231, 37, 205, 128, 206, }, { 25, 134, 206, 25, 240, 47, 65, 85, 142, 7, 194, 89, 17, 60, 244, 153, }, { 38, 91, 236, 38, 158, 193, 120, 58, 206, 69, 210, 4, 179, 198, 53, 98, }, { 160, 42, 209, 160, 161, 114, 220, 10, 136, 29, 34, 249, 2, 185, 240, 18, }, { 11, 149, 21, 11, 153, 107, 144, 253, 121, 177, 143, 103, 231, 183, 239, 211, }, { 34, 161, 29, 34, 6, 83, 74, 171, 203, 82, 66, 244, 72, 224, 51, 77, }, { 157, 138, 106, 157, 131, 213, 252, 204, 43, 181, 122, 220, 60, 80, 50, 31, }, { 245, 26, 4, 245, 174, 28, 109, 43, 89, 144, 135, 168, 182, 202, 110, 79, }, { 218, 169, 100, 218, 229, 255, 156, 69, 13, 142, 146, 179, 126, 168, 183, 8, }, { 55, 234, 3, 55, 157, 9, 93, 142, 74, 108, 243, 126, 151, 182, 205, 165, }, { 167, 114, 20, 167, 83, 108, 26, 135, 254, 149, 222, 77, 43, 100, 21, 176, }, { 205, 159, 227, 205, 50, 236, 146, 201, 111, 90, 107, 65, 61, 237, 74, 22, }, { 99, 5, 123, 99, 180, 162, 1, 26, 11, 148, 114, 19, 109, 45, 179, 131, }, { 188, 137, 67, 188, 239, 10, 66, 123, 147, 120, 84, 108, 166, 75, 226, 223, }, { 226, 44, 131, 226, 121, 15, 99, 167, 59, 68, 126, 90, 245, 143, 147, 81, }, { 214, 100, 180, 214, 142, 138, 202, 53, 2, 183, 225, 96, 176, 194, 189, 121, }, { 148, 98, 230, 148, 86, 247, 117, 152, 177, 238, 189, 195, 71, 244, 222, 58, }, { 164, 208, 32, 164, 57, 224, 238, 155, 141, 10, 178, 9, 249, 159, 246, 61, }, { 136, 193, 116, 136, 24, 143, 235, 233, 170, 139, 203, 86, 227, 6, 204, 247, }, { 98, 218, 214, 98, 146, 103, 236, 175, 155, 225, 86, 47, 35, 197, 83, 248, }, { 46, 108, 205, 46, 109, 38, 28, 219, 196, 107, 49, 39, 134, 138, 57, 60, }, { 200, 186, 191, 200, 140, 187, 77, 237, 250, 56, 223, 141, 136, 35, 172, 66, }, { 24, 89, 99, 24, 214, 234, 172, 224, 30, 114, 230, 101, 95, 212, 20, 226, }, { 6, 135, 104, 6, 212, 219, 43, 56, 230, 253, 216, 136, 103, 53, 5, 217, }, { 22, 233, 42, 22, 241, 214, 227, 57, 242, 161, 221, 206, 13, 173, 29, 101, }, { 19, 204, 118, 19, 79, 129, 60, 29, 103, 195, 105, 2, 184, 99, 251, 49, }, { 210, 158, 69, 210, 22, 24, 248, 164, 7, 160, 113, 144, 75, 228, 187, 86, }, { 91, 128, 156, 91, 40, 82, 254, 248, 61, 94, 158, 250, 230, 10, 151, 218, }, { 255, 80, 188, 255, 17, 178, 16, 99, 176, 84, 44, 243, 31, 149, 97, 231, }, { 187, 209, 134, 187, 29, 20, 132, 246, 229, 240, 168, 216, 143, 150, 7, 125, }, { 194, 240, 7, 194, 51, 21, 48, 165, 19, 252, 116, 214, 33, 124, 163, 234, }, { 185, 172, 31, 185, 81, 93, 157, 95, 6, 26, 224, 160, 19, 133, 4, 139, }, { 191, 43, 119, 191, 133, 134, 182, 103, 224, 231, 56, 40, 116, 176, 1, 82, }, { 239, 62, 254, 239, 52, 191, 216, 98, 164, 8, 41, 181, 117, 13, 121, 91, }, { 220, 46, 12, 220, 49, 36, 183, 125, 235, 115, 74, 59, 25, 157, 178, 209, }, { 27, 251, 87, 27, 188, 102, 88, 252, 109, 237, 138, 33, 141, 47, 247, 111, }, { 39, 132, 65, 39, 184, 4, 149, 143, 94, 48, 246, 56, 253, 46, 213, 25, }, { 62, 2, 143, 62, 72, 43, 212, 218, 208, 55, 52, 97, 236, 18, 33, 128, }, { 231, 9, 223, 231, 199, 88, 188, 131, 174, 38, 202, 150, 64, 65, 117, 5, }, { 176, 68, 147, 176, 132, 127, 20, 11, 156, 65, 39, 191, 104, 33, 232, 174, }, { 105, 79, 195, 105, 11, 12, 124, 82, 226, 80, 217, 72, 196, 114, 188, 43, }, { 33, 3, 41, 33, 108, 223, 190, 183, 184, 205, 46, 176, 154, 27, 208, 192, }, { 15, 111, 228, 15, 1, 249, 162, 108, 124, 166, 31, 151, 28, 145, 233, 252, }, { 241, 224, 245, 241, 54, 142, 95, 186, 92, 135, 23, 88, 77, 236, 104, 96, }, { 26, 36, 250, 26, 154, 163, 181, 73, 253, 152, 174, 29, 195, 199, 23, 20, }, { 13, 18, 125, 13, 77, 176, 187, 197, 159, 76, 87, 239, 128, 130, 234, 10, }, { 166, 173, 185, 166, 117, 169, 247, 50, 110, 224, 250, 113, 101, 140, 245, 203, }, { 2, 125, 153, 2, 76, 73, 25, 169, 227, 234, 72, 120, 156, 19, 3, 246, }, { 106, 237, 247, 106, 97, 128, 136, 78, 145, 207, 181, 12, 22, 137, 95, 166, }, { 8, 55, 33, 8, 243, 231, 100, 225, 10, 46, 227, 35, 53, 76, 12, 94, }, { 76, 182, 27, 76, 255, 65, 240, 116, 95, 138, 103, 8, 165, 79, 106, 196, }, { 73, 147, 71, 73, 65, 22, 47, 80, 202, 232, 211, 196, 16, 129, 140, 144, }, { 145, 71, 186, 145, 232, 160, 170, 188, 36, 140, 9, 15, 242, 58, 56, 110, }, { 225, 142, 183, 225, 19, 131, 151, 187, 72, 219, 18, 30, 39, 116, 112, 220, }, { 139, 99, 64, 139, 114, 3, 31, 245, 217, 20, 167, 18, 49, 253, 47, 122, }, { 20, 148, 179, 20, 189, 159, 250, 144, 17, 75, 149, 182, 145, 190, 30, 147, }, { 149, 189, 75, 149, 112, 50, 152, 45, 33, 155, 153, 255, 9, 28, 62, 65, }, { 184, 115, 178, 184, 119, 152, 112, 234, 150, 111, 196, 156, 93, 109, 228, 240, }, { 158, 40, 94, 158, 233, 89, 8, 208, 88, 42, 22, 152, 238, 171, 209, 146, }, { 235, 196, 15, 235, 172, 45, 234, 243, 161, 31, 185, 69, 142, 43, 127, 116, }, { 110, 23, 6, 110, 249, 18, 186, 223, 148, 216, 37, 252, 237, 175, 89, 137, }, { 195, 47, 170, 195, 21, 208, 221, 16, 131, 137, 80, 234, 111, 148, 67, 145, }, { 152, 175, 54, 152, 61, 130, 35, 232, 190, 215, 206, 16, 137, 158, 212, 75, }, { 112, 201, 13, 112, 251, 35, 61, 7, 108, 87, 27, 17, 213, 78, 72, 178, }, { 114, 180, 148, 114, 183, 106, 36, 174, 143, 189, 83, 105, 73, 93, 75, 68, }, { 4, 250, 241, 4, 152, 146, 50, 145, 5, 23, 144, 240, 251, 38, 6, 47, }, { 237, 67, 103, 237, 120, 246, 193, 203, 71, 226, 97, 205, 233, 30, 122, 173, }, { 242, 66, 193, 242, 92, 2, 171, 166, 47, 24, 123, 28, 159, 23, 139, 237, }, { 71, 35, 14, 71, 102, 42, 96, 137, 38, 59, 232, 111, 66, 248, 133, 23, }, { 69, 94, 151, 69, 42, 99, 121, 32, 197, 209, 160, 23, 222, 235, 134, 225, }, { 154, 210, 175, 154, 113, 203, 58, 65, 93, 61, 134, 104, 21, 141, 215, 189, }, { 213, 198, 128, 213, 228, 6, 62, 41, 113, 40, 141, 36, 98, 57, 94, 244, }, { 217, 11, 80, 217, 143, 115, 104, 89, 126, 17, 254, 247, 172, 83, 84, 133, }, { 141, 228, 40, 141, 166, 216, 52, 205, 63, 233, 127, 154, 86, 200, 42, 163, }, { 59, 39, 211, 59, 246, 124, 11, 254, 69, 85, 128, 173, 89, 220, 199, 212, }, { 111, 200, 171, 111, 223, 215, 87, 106, 4, 173, 1, 192, 163, 71, 185, 242, }, { 78, 203, 130, 78, 179, 8, 233, 221, 188, 96, 47, 112, 57, 92, 105, 50, }, { 52, 72, 55, 52, 247, 133, 169, 146, 57, 243, 159, 58, 69, 77, 46, 40, }, { 116, 51, 252, 116, 99, 177, 15, 150, 105, 64, 139, 225, 46, 104, 78, 157, }, { 159, 247, 243, 159, 207, 156, 229, 101, 200, 95, 50, 164, 160, 67, 49, 233, }, { 125, 219, 112, 125, 182, 147, 134, 194, 243, 27, 76, 254, 85, 204, 162, 184, }, { 97, 120, 226, 97, 248, 235, 24, 179, 232, 126, 58, 107, 241, 62, 176, 117, }, { 49, 109, 107, 49, 73, 210, 118, 182, 172, 145, 43, 246, 240, 131, 200, 124, }, { 9, 232, 140, 9, 213, 34, 137, 84, 154, 91, 199, 31, 123, 164, 236, 37, }, { 18, 19, 219, 18, 105, 68, 209, 168, 247, 182, 77, 62, 246, 139, 27, 74, }, { 100, 93, 190, 100, 70, 188, 199, 151, 125, 28, 142, 167, 68, 240, 86, 33, }, { 215, 187, 25, 215, 168, 79, 39, 128, 146, 194, 197, 92, 254, 42, 93, 2, }, { 147, 58, 35, 147, 164, 233, 179, 21, 199, 102, 65, 119, 110, 41, 59, 152, }, { 58, 248, 126, 58, 208, 185, 230, 75, 213, 32, 164, 145, 23, 52, 39, 175, }, { 163, 136, 229, 163, 203, 254, 40, 22, 251, 130, 78, 189, 208, 66, 19, 159, }, { 173, 56, 172, 173, 236, 194, 103, 207, 23, 81, 117, 22, 130, 59, 26, 24, }, { 28, 163, 146, 28, 78, 120, 158, 113, 27, 101, 118, 149, 164, 242, 18, 205, }, { 126, 121, 68, 126, 220, 31, 114, 222, 128, 132, 32, 186, 135, 55, 65, 53, }, { 118, 78, 101, 118, 47, 248, 22, 63, 138, 170, 195, 153, 178, 123, 77, 107, }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, { 51, 16, 242, 51, 5, 155, 111, 31, 79, 123, 99, 142, 108, 144, 203, 138, }, { 247, 103, 157, 247, 226, 85, 116, 130, 186, 122, 207, 208, 42, 217, 109, 185, }, { 40, 235, 165, 40, 185, 253, 55, 227, 34, 150, 233, 175, 225, 191, 60, 229, }, { 35, 126, 176, 35, 32, 150, 167, 30, 91, 39, 102, 200, 6, 8, 211, 54, }, { 178, 57, 10, 178, 200, 54, 13, 162, 127, 171, 111, 199, 244, 50, 235, 88, }, { 190, 244, 218, 190, 163, 67, 91, 210, 112, 146, 28, 20, 58, 88, 225, 41, }, { 66, 6, 82, 66, 216, 125, 191, 173, 179, 89, 92, 163, 247, 54, 99, 67, }, { 17, 177, 239, 17, 3, 200, 37, 180, 132, 41, 33, 122, 36, 112, 248, 199, }, { 196, 119, 111, 196, 231, 206, 27, 157, 245, 1, 172, 94, 70, 73, 166, 51, }, { 95, 122, 109, 95, 176, 192, 204, 105, 56, 73, 14, 10, 29, 44, 145, 245, }, { 48, 178, 198, 48, 111, 23, 155, 3, 60, 228, 15, 202, 190, 107, 40, 7, }, { 1, 223, 173, 1, 38, 197, 237, 181, 144, 117, 36, 60, 78, 232, 224, 123, }, { 216, 212, 253, 216, 169, 182, 133, 236, 238, 100, 218, 203, 226, 187, 180, 254, }, { 5, 37, 92, 5, 190, 87, 223, 36, 149, 98, 180, 204, 181, 206, 230, 84, }, { 50, 207, 95, 50, 35, 94, 130, 170, 223, 14, 71, 178, 34, 120, 43, 241, }, { 223, 140, 56, 223, 91, 168, 67, 97, 152, 236, 38, 127, 203, 102, 81, 92, }, { 186, 14, 43, 186, 59, 209, 105, 67, 117, 133, 140, 228, 193, 126, 231, 6, }, { 142, 70, 28, 142, 204, 84, 192, 209, 76, 118, 19, 222, 132, 51, 201, 46, }, { 115, 107, 57, 115, 145, 175, 201, 27, 31, 200, 119, 85, 7, 181, 171, 63, }, { 253, 45, 37, 253, 93, 251, 9, 202, 83, 190, 100, 139, 131, 134, 98, 17, }, { 140, 59, 133, 140, 128, 29, 217, 120, 175, 156, 91, 166, 24, 32, 202, 216, }, { 179, 230, 167, 179, 238, 243, 224, 23, 239, 222, 75, 251, 186, 218, 11, 35, }, { 86, 146, 225, 86, 101, 226, 69, 61, 162, 18, 201, 21, 102, 136, 125, 208, }, { 43, 73, 145, 43, 211, 113, 195, 255, 81, 9, 133, 235, 51, 68, 223, 104, }, { 130, 139, 204, 130, 167, 33, 150, 161, 67, 79, 96, 13, 74, 89, 195, 95, }, { 107, 50, 90, 107, 71, 69, 101, 251, 1, 186, 145, 48, 88, 97, 191, 221, }, { 135, 174, 144, 135, 25, 118, 73, 133, 214, 45, 212, 193, 255, 151, 37, 11, }, { 174, 154, 152, 174, 134, 78, 147, 211, 100, 206, 25, 82, 80, 192, 249, 149, }, { 70, 252, 163, 70, 64, 239, 141, 60, 182, 78, 204, 83, 12, 16, 101, 108, }, { 169, 194, 93, 169, 116, 80, 85, 94, 18, 70, 229, 230, 121, 29, 28, 55, }, { 224, 81, 26, 224, 53, 70, 122, 14, 216, 174, 54, 34, 105, 156, 144, 167, }, { 198, 10, 246, 198, 171, 135, 2, 52, 22, 235, 228, 38, 218, 90, 165, 197, }, { 175, 69, 53, 175, 160, 139, 126, 102, 244, 187, 61, 110, 30, 40, 25, 238, }, { 177, 155, 62, 177, 162, 186, 249, 190, 12, 52, 3, 131, 38, 201, 8, 213, }, { 14, 176, 73, 14, 39, 60, 79, 217, 236, 211, 59, 171, 82, 121, 9, 135, }, { 137, 30, 217, 137, 62, 74, 6, 92, 58, 254, 239, 106, 173, 238, 44, 140, }, { 121, 33, 129, 121, 46, 1, 180, 83, 246, 12, 220, 14, 174, 234, 164, 151, }, { 211, 65, 232, 211, 48, 221, 21, 17, 151, 213, 85, 172, 5, 12, 91, 45, }, { 45, 206, 249, 45, 7, 170, 232, 199, 183, 244, 93, 99, 84, 113, 218, 177, }, { 201, 101, 18, 201, 170, 126, 160, 88, 106, 77, 251, 177, 198, 203, 76, 57, }, { 10, 74, 184, 10, 191, 174, 125, 72, 233, 196, 171, 91, 169, 95, 15, 168, }, { 219, 118, 201, 219, 195, 58, 113, 240, 157, 251, 182, 143, 48, 64, 87, 115, }, { 123, 92, 24, 123, 98, 72, 173, 250, 21, 230, 148, 118, 50, 249, 167, 97, }, { 222, 83, 149, 222, 125, 109, 174, 212, 8, 153, 2, 67, 133, 142, 177, 39, }, { 72, 76, 234, 72, 103, 211, 194, 229, 90, 157, 247, 248, 94, 105, 108, 235, }, { 227, 243, 46, 227, 95, 202, 142, 18, 171, 49, 90, 102, 187, 103, 115, 42, }, { 75, 238, 222, 75, 13, 95, 54, 249, 41, 2, 155, 188, 140, 146, 143, 102, }, { 53, 151, 154, 53, 209, 64, 68, 39, 169, 134, 187, 6, 11, 165, 206, 83, }, { 138, 188, 237, 138, 84, 198, 242, 64, 73, 97, 131, 46, 127, 21, 207, 1, }, { 251, 170, 77, 251, 137, 32, 34, 242, 181, 67, 188, 3, 228, 179, 103, 200, }, { 133, 211, 9, 133, 85, 63, 80, 44, 53, 199, 156, 185, 99, 132, 38, 253, }, { 203, 24, 139, 203, 230, 55, 185, 241, 137, 167, 179, 201, 90, 216, 79, 207, }, { 183, 28, 86, 183, 118, 97, 210, 134, 234, 201, 219, 11, 65, 252, 13, 12, }, { 42, 150, 60, 42, 245, 180, 46, 74, 193, 124, 161, 215, 125, 172, 63, 19, }, { 171, 191, 196, 171, 56, 25, 76, 247, 241, 172, 173, 158, 229, 14, 31, 193, }, { 63, 221, 34, 63, 110, 238, 57, 111, 64, 66, 16, 93, 162, 250, 193, 251, }, { 57, 90, 74, 57, 186, 53, 18, 87, 166, 191, 200, 213, 197, 207, 196, 34, }, { 234, 27, 162, 234, 138, 232, 7, 70, 49, 106, 157, 121, 192, 195, 159, 15, }, { 181, 97, 207, 181, 58, 40, 203, 47, 9, 35, 147, 115, 221, 239, 14, 250, }, { 81, 202, 36, 81, 151, 252, 131, 176, 212, 154, 53, 161, 79, 85, 152, 114, }, { 155, 13, 2, 155, 87, 14, 215, 244, 205, 72, 162, 84, 91, 101, 55, 198, }, { 122, 131, 181, 122, 68, 141, 64, 79, 133, 147, 176, 74, 124, 17, 71, 26, }, { 161, 245, 124, 161, 135, 183, 49, 191, 24, 104, 6, 197, 76, 81, 16, 105, }, { 208, 227, 220, 208, 90, 81, 225, 13, 228, 74, 57, 232, 215, 247, 184, 160, }, { 74, 49, 115, 74, 43, 154, 219, 76, 185, 119, 191, 128, 194, 122, 111, 29, }, { 119, 145, 200, 119, 9, 61, 251, 138, 26, 223, 231, 165, 252, 147, 173, 16, }, { 93, 7, 244, 93, 252, 137, 213, 192, 219, 163, 70, 114, 129, 63, 146, 3, }, { 79, 20, 47, 79, 149, 205, 4, 104, 44, 21, 11, 76, 119, 180, 137, 73, }, { 29, 124, 63, 29, 104, 189, 115, 196, 139, 16, 82, 169, 234, 26, 242, 182, }, { 131, 84, 97, 131, 129, 228, 123, 20, 211, 58, 68, 49, 4, 177, 35, 36, }, { 82, 104, 16, 82, 253, 112, 119, 172, 167, 5, 89, 229, 157, 174, 123, 255, }, { 37, 249, 216, 37, 244, 77, 140, 38, 189, 218, 190, 64, 97, 61, 214, 239, }, { 254, 143, 17, 254, 55, 119, 253, 214, 32, 33, 8, 207, 81, 125, 129, 156, }, { 61, 160, 187, 61, 34, 167, 32, 198, 163, 168, 88, 37, 62, 233, 194, 13, }, { 88, 34, 168, 88, 66, 222, 10, 228, 78, 193, 242, 190, 52, 241, 116, 87, }, { 85, 48, 213, 85, 15, 110, 177, 33, 209, 141, 165, 81, 180, 115, 158, 93, }, { 249, 215, 212, 249, 197, 105, 59, 91, 86, 169, 244, 123, 120, 160, 100, 62, }, { 172, 231, 1, 172, 202, 7, 138, 122, 135, 36, 81, 42, 204, 211, 250, 99, }, { 252, 242, 136, 252, 123, 62, 228, 127, 195, 203, 64, 183, 205, 110, 130, 106, }, { 104, 144, 110, 104, 45, 201, 145, 231, 114, 37, 253, 116, 138, 154, 92, 80, }, { 193, 82, 51, 193, 89, 153, 196, 185, 96, 99, 24, 146, 243, 135, 64, 103, }, { 56, 133, 231, 56, 156, 240, 255, 226, 54, 202, 236, 233, 139, 39, 36, 89, }, { 117, 236, 81, 117, 69, 116, 226, 35, 249, 53, 175, 221, 96, 128, 174, 230, }, { 109, 181, 50, 109, 147, 158, 78, 195, 231, 71, 73, 184, 63, 84, 186, 4, }, { 31, 1, 166, 31, 36, 244, 106, 109, 104, 250, 26, 209, 118, 9, 241, 64, }, { 23, 54, 135, 23, 215, 19, 14, 140, 98, 212, 249, 242, 67, 69, 253, 30, }, { 68, 129, 58, 68, 12, 166, 148, 149, 85, 164, 132, 43, 144, 3, 102, 154, }, { 204, 64, 78, 204, 20, 41, 127, 124, 255, 47, 79, 125, 115, 5, 170, 109, }, { 197, 168, 194, 197, 193, 11, 246, 40, 101, 116, 136, 98, 8, 161, 70, 72, }, { 238, 225, 83, 238, 18, 122, 53, 215, 52, 125, 13, 137, 59, 229, 153, 32, }, }, { { 254, 80, 113, 124, 252, 155, 173, 9, 252, 94, 56, 63, 63, 104, 83, 27, }, { 109, 159, 216, 244, 238, 226, 209, 233, 238, 144, 60, 218, 218, 163, 188, 248, }, { 83, 148, 228, 1, 221, 146, 14, 58, 221, 184, 176, 166, 166, 36, 93, 78, }, { 171, 184, 20, 83, 17, 145, 244, 240, 17, 24, 197, 149, 149, 125, 95, 211, }, { 192, 91, 77, 137, 207, 235, 114, 218, 207, 118, 180, 67, 67, 239, 178, 173, }, { 125, 189, 166, 36, 110, 101, 59, 164, 110, 196, 39, 250, 250, 154, 70, 47, }, { 175, 81, 234, 103, 49, 192, 47, 114, 49, 13, 179, 157, 157, 226, 128, 150, }, { 114, 123, 198, 111, 22, 218, 95, 97, 22, 132, 122, 228, 228, 1, 45, 163, }, { 39, 147, 163, 64, 251, 208, 6, 152, 251, 194, 135, 78, 78, 20, 33, 107, }, { 249, 135, 46, 95, 196, 134, 188, 11, 196, 52, 137, 49, 49, 14, 69, 29, }, { 142, 190, 200, 9, 250, 136, 126, 41, 250, 49, 121, 223, 223, 199, 240, 123, }, { 138, 87, 54, 61, 218, 217, 165, 171, 218, 36, 15, 215, 215, 88, 47, 62, }, { 60, 158, 67, 239, 35, 185, 83, 146, 35, 195, 183, 120, 120, 41, 111, 117, }, { 80, 170, 69, 22, 197, 222, 196, 186, 197, 199, 119, 160, 160, 221, 148, 13, }, { 225, 180, 111, 231, 4, 163, 35, 129, 4, 74, 126, 1, 1, 202, 194, 64, }, { 65, 35, 229, 203, 77, 220, 104, 54, 77, 7, 144, 130, 130, 179, 41, 90, }, { 180, 92, 10, 200, 233, 169, 122, 120, 233, 12, 131, 171, 171, 223, 206, 136, }, { 215, 174, 108, 122, 119, 113, 137, 149, 119, 72, 30, 109, 109, 176, 94, 124, }, { 30, 79, 192, 150, 240, 189, 200, 73, 240, 128, 186, 60, 60, 245, 214, 219, }, { 35, 122, 93, 116, 219, 129, 221, 26, 219, 215, 241, 70, 70, 139, 254, 46, }, { 42, 192, 188, 17, 147, 166, 238, 28, 147, 105, 225, 84, 84, 33, 196, 36, }, { 117, 172, 153, 76, 46, 199, 78, 99, 46, 238, 203, 234, 234, 103, 59, 165, }, { 186, 49, 180, 142, 153, 147, 88, 124, 153, 216, 34, 183, 183, 19, 226, 132, }, { 134, 175, 247, 97, 186, 42, 11, 238, 186, 27, 149, 207, 207, 58, 141, 241, }, { 219, 86, 173, 38, 23, 130, 39, 208, 23, 119, 132, 117, 117, 210, 252, 179, }, { 118, 146, 56, 91, 54, 139, 132, 227, 54, 145, 12, 236, 236, 158, 242, 230, }, { 183, 98, 171, 223, 241, 229, 176, 248, 241, 115, 68, 173, 173, 38, 7, 203, }, { 47, 130, 156, 40, 187, 114, 115, 95, 187, 232, 107, 94, 94, 233, 92, 225, }, { 227, 33, 16, 253, 20, 106, 175, 192, 20, 161, 69, 5, 5, 100, 76, 131, }, { 81, 1, 155, 27, 205, 91, 130, 123, 205, 83, 139, 162, 162, 138, 211, 141, }, { 210, 236, 76, 67, 95, 165, 20, 214, 95, 201, 148, 103, 103, 120, 198, 185, }, { 177, 30, 42, 241, 193, 125, 231, 59, 193, 141, 9, 161, 161, 23, 86, 77, }, { 182, 201, 117, 210, 249, 96, 246, 57, 249, 231, 184, 175, 175, 113, 64, 75, }, { 3, 62, 161, 23, 24, 76, 202, 128, 24, 127, 199, 6, 6, 249, 201, 67, }, { 68, 97, 197, 242, 101, 8, 245, 117, 101, 134, 26, 136, 136, 123, 177, 159, }, { 154, 117, 72, 237, 90, 94, 79, 230, 90, 112, 20, 247, 247, 97, 213, 233, }, { 141, 128, 105, 30, 226, 196, 180, 169, 226, 78, 190, 217, 217, 62, 57, 56, }, { 234, 155, 241, 152, 92, 77, 156, 198, 92, 31, 85, 23, 23, 206, 118, 137, }, { 196, 178, 179, 189, 239, 186, 169, 88, 239, 99, 194, 75, 75, 112, 109, 232, }, { 173, 196, 149, 125, 33, 9, 163, 51, 33, 230, 136, 153, 153, 76, 14, 85, }, { 185, 15, 21, 153, 129, 223, 146, 252, 129, 167, 229, 177, 177, 234, 43, 199, }, { 226, 138, 206, 240, 28, 239, 233, 1, 28, 53, 185, 7, 7, 51, 11, 3, }, { 230, 99, 48, 196, 60, 190, 50, 131, 60, 32, 207, 15, 15, 172, 212, 70, }, { 153, 75, 233, 250, 66, 18, 133, 102, 66, 15, 211, 241, 241, 152, 28, 170, }, { 41, 254, 29, 6, 139, 234, 36, 156, 139, 22, 38, 82, 82, 216, 13, 103, }, { 169, 45, 107, 73, 1, 88, 120, 177, 1, 243, 254, 145, 145, 211, 209, 16, }, { 97, 103, 25, 168, 142, 17, 127, 172, 142, 175, 166, 194, 194, 193, 30, 55, }, { 208, 121, 51, 89, 79, 108, 152, 151, 79, 34, 175, 99, 99, 214, 72, 122, }, { 72, 153, 4, 174, 5, 251, 91, 48, 5, 185, 128, 144, 144, 25, 19, 80, }, { 241, 150, 17, 55, 132, 36, 201, 204, 132, 30, 101, 33, 33, 243, 56, 151, }, { 145, 90, 214, 146, 2, 176, 240, 161, 2, 37, 63, 225, 225, 101, 97, 32, }, { 101, 142, 231, 156, 174, 64, 164, 46, 174, 186, 208, 202, 202, 94, 193, 114, }, { 36, 173, 2, 87, 227, 156, 204, 24, 227, 189, 64, 72, 72, 237, 232, 40, }, { 156, 9, 201, 195, 106, 198, 24, 37, 106, 142, 89, 251, 251, 80, 132, 111, }, { 200, 74, 114, 225, 143, 73, 7, 29, 143, 92, 88, 83, 83, 18, 207, 39, }, { 20, 203, 128, 228, 160, 214, 49, 207, 160, 65, 109, 40, 40, 166, 37, 146, }, { 112, 238, 185, 117, 6, 19, 211, 32, 6, 111, 65, 224, 224, 175, 163, 96, }, { 57, 220, 99, 214, 11, 109, 206, 209, 11, 66, 61, 114, 114, 225, 247, 176, }, { 85, 232, 101, 47, 237, 10, 89, 249, 237, 70, 253, 170, 170, 21, 12, 200, }, { 19, 28, 223, 199, 152, 203, 32, 205, 152, 43, 220, 38, 38, 192, 51, 148, }, { 214, 5, 178, 119, 127, 244, 207, 84, 127, 220, 226, 111, 111, 231, 25, 252, }, { 251, 18, 81, 69, 212, 79, 48, 74, 212, 223, 178, 53, 53, 160, 203, 222, }, { 34, 209, 131, 121, 211, 4, 155, 219, 211, 67, 13, 68, 68, 220, 185, 174, }, { 218, 253, 115, 43, 31, 7, 97, 17, 31, 227, 120, 119, 119, 133, 187, 51, }, { 37, 6, 220, 90, 235, 25, 138, 217, 235, 41, 188, 74, 74, 186, 175, 168, }, { 231, 200, 238, 201, 52, 59, 116, 66, 52, 180, 51, 13, 13, 251, 147, 198, }, { 228, 246, 79, 222, 44, 119, 190, 194, 44, 203, 244, 11, 11, 2, 90, 133, }, { 163, 169, 43, 59, 81, 51, 129, 55, 81, 50, 41, 133, 133, 128, 34, 89, }, { 140, 43, 183, 19, 234, 65, 242, 104, 234, 218, 66, 219, 219, 105, 126, 184, }, { 25, 152, 159, 181, 200, 160, 217, 75, 200, 234, 11, 50, 50, 147, 192, 221, }, { 9, 186, 225, 101, 72, 39, 51, 6, 72, 190, 16, 18, 18, 170, 58, 10, }, { 45, 23, 227, 50, 171, 187, 255, 30, 171, 3, 80, 90, 90, 71, 210, 34, }, { 143, 21, 22, 4, 242, 13, 56, 232, 242, 165, 133, 221, 221, 144, 183, 251, }, { 148, 24, 246, 171, 42, 100, 109, 226, 42, 164, 181, 235, 235, 173, 249, 229, }, { 13, 83, 31, 81, 104, 118, 232, 132, 104, 171, 102, 26, 26, 53, 229, 79, }, { 133, 145, 86, 118, 162, 102, 193, 110, 162, 100, 82, 201, 201, 195, 68, 178, }, { 87, 125, 26, 53, 253, 195, 213, 184, 253, 173, 198, 174, 174, 187, 130, 11, }, { 150, 141, 137, 177, 58, 173, 225, 163, 58, 79, 142, 239, 239, 3, 119, 38, }, { 105, 118, 38, 192, 206, 179, 10, 107, 206, 133, 74, 210, 210, 60, 99, 189, }, { 248, 44, 240, 82, 204, 3, 250, 202, 204, 160, 117, 51, 51, 89, 2, 157, }, { 94, 199, 251, 80, 181, 228, 230, 190, 181, 19, 214, 188, 188, 17, 184, 1, }, { 14, 109, 190, 70, 112, 58, 34, 4, 112, 212, 161, 28, 28, 204, 44, 12, }, { 113, 69, 103, 120, 14, 150, 149, 225, 14, 251, 189, 226, 226, 248, 228, 224, }, { 122, 106, 249, 7, 86, 120, 42, 166, 86, 174, 150, 244, 244, 252, 80, 41, }, { 1, 171, 222, 13, 8, 133, 70, 193, 8, 148, 252, 2, 2, 87, 71, 128, }, { 224, 31, 177, 234, 12, 38, 101, 64, 12, 222, 130, 3, 3, 157, 133, 192, }, { 126, 131, 7, 51, 118, 41, 241, 36, 118, 187, 224, 252, 252, 99, 143, 108, }, { 147, 207, 169, 136, 18, 121, 124, 224, 18, 206, 4, 229, 229, 203, 239, 227, }, { 206, 54, 243, 207, 191, 209, 80, 222, 191, 162, 21, 95, 95, 35, 158, 161, }, { 159, 55, 104, 212, 114, 138, 210, 165, 114, 241, 158, 253, 253, 169, 77, 44, }, { 58, 226, 194, 193, 19, 33, 4, 81, 19, 61, 250, 116, 116, 24, 62, 243, }, { 209, 210, 237, 84, 71, 233, 222, 86, 71, 182, 83, 97, 97, 129, 15, 250, }, { 242, 168, 176, 32, 156, 104, 3, 76, 156, 97, 162, 39, 39, 10, 241, 212, }, { 207, 157, 45, 194, 183, 84, 22, 31, 183, 54, 233, 93, 93, 116, 217, 33, }, { 67, 182, 154, 209, 93, 21, 228, 119, 93, 236, 171, 134, 134, 29, 167, 153, }, { 201, 225, 172, 236, 135, 204, 65, 220, 135, 200, 164, 81, 81, 69, 136, 167, }, { 74, 12, 123, 180, 21, 50, 215, 113, 21, 82, 187, 148, 148, 183, 157, 147, }, { 189, 230, 235, 173, 161, 142, 73, 126, 161, 178, 147, 185, 185, 117, 244, 130, }, { 98, 89, 184, 191, 150, 93, 181, 44, 150, 208, 97, 196, 196, 56, 215, 116, }, { 172, 111, 75, 112, 41, 140, 229, 242, 41, 114, 116, 155, 155, 27, 73, 213, }, { 2, 149, 127, 26, 16, 201, 140, 65, 16, 235, 59, 4, 4, 174, 142, 195, }, { 55, 177, 221, 144, 123, 87, 236, 213, 123, 150, 156, 110, 110, 45, 219, 188, }, { 130, 70, 9, 85, 154, 123, 208, 108, 154, 14, 227, 199, 199, 165, 82, 180, }, { 193, 240, 147, 132, 199, 110, 52, 27, 199, 226, 72, 65, 65, 184, 245, 45, }, { 38, 56, 125, 77, 243, 85, 64, 89, 243, 86, 123, 76, 76, 67, 102, 235, }, { 187, 154, 106, 131, 145, 22, 30, 189, 145, 76, 222, 181, 181, 68, 165, 4, }, { 15, 198, 96, 75, 120, 191, 100, 197, 120, 64, 93, 30, 30, 155, 107, 140, }, { 212, 144, 205, 109, 111, 61, 67, 21, 111, 55, 217, 107, 107, 73, 151, 63, }, { 91, 133, 219, 105, 157, 48, 123, 253, 157, 146, 92, 182, 182, 217, 32, 196, }, { 99, 242, 102, 178, 158, 216, 243, 237, 158, 68, 157, 198, 198, 111, 144, 244, }, { 135, 4, 41, 108, 178, 175, 77, 47, 178, 143, 105, 205, 205, 109, 202, 113, }, { 191, 115, 148, 183, 177, 71, 197, 63, 177, 89, 168, 189, 189, 219, 122, 65, }, { 151, 38, 87, 188, 50, 40, 167, 98, 50, 219, 114, 237, 237, 84, 48, 166, }, { 70, 244, 186, 232, 117, 193, 121, 52, 117, 109, 33, 140, 140, 213, 63, 92, }, { 170, 19, 202, 94, 25, 20, 178, 49, 25, 140, 57, 151, 151, 42, 24, 83, }, { 79, 78, 91, 141, 61, 230, 74, 50, 61, 211, 49, 158, 158, 127, 5, 86, }, { 198, 39, 204, 167, 255, 115, 37, 25, 255, 136, 249, 79, 79, 222, 227, 43, }, { 78, 229, 133, 128, 53, 99, 12, 243, 53, 71, 205, 156, 156, 40, 66, 214, }, { 128, 211, 118, 79, 138, 178, 92, 45, 138, 229, 216, 195, 195, 11, 220, 119, }, { 127, 40, 217, 62, 126, 172, 183, 229, 126, 47, 28, 254, 254, 52, 200, 236, }, { 69, 202, 27, 255, 109, 141, 179, 180, 109, 18, 230, 138, 138, 44, 246, 31, }, { 235, 48, 47, 149, 84, 200, 218, 7, 84, 139, 169, 21, 21, 153, 49, 9, }, { 104, 221, 248, 205, 198, 54, 76, 170, 198, 17, 182, 208, 208, 107, 36, 61, }, { 16, 34, 126, 208, 128, 135, 234, 77, 128, 84, 27, 32, 32, 57, 250, 215, }, { 32, 68, 252, 99, 195, 205, 23, 154, 195, 168, 54, 64, 64, 114, 55, 109, }, { 95, 108, 37, 93, 189, 97, 160, 127, 189, 135, 42, 190, 190, 70, 255, 129, }, { 73, 50, 218, 163, 13, 126, 29, 241, 13, 45, 124, 146, 146, 78, 84, 208, }, { 211, 71, 146, 78, 87, 32, 82, 23, 87, 93, 104, 101, 101, 47, 129, 57, }, { 194, 206, 50, 147, 223, 34, 254, 155, 223, 157, 143, 71, 71, 65, 60, 110, }, { 86, 214, 196, 56, 245, 70, 147, 121, 245, 57, 58, 172, 172, 236, 197, 139, }, { 229, 93, 145, 211, 36, 242, 248, 3, 36, 95, 8, 9, 9, 85, 29, 5, }, { 188, 77, 53, 160, 169, 11, 15, 191, 169, 38, 111, 187, 187, 34, 179, 2, }, { 119, 57, 230, 86, 62, 14, 194, 34, 62, 5, 240, 238, 238, 201, 181, 102, }, { 21, 96, 94, 233, 168, 83, 119, 14, 168, 213, 145, 42, 42, 241, 98, 18, }, { 48, 102, 130, 179, 67, 74, 253, 215, 67, 252, 45, 96, 96, 75, 205, 186, }, { 176, 181, 244, 252, 201, 248, 161, 250, 201, 25, 245, 163, 163, 64, 17, 205, }, { 195, 101, 236, 158, 215, 167, 184, 90, 215, 9, 115, 69, 69, 22, 123, 238, }, { 166, 235, 11, 2, 121, 231, 28, 116, 121, 179, 163, 143, 143, 72, 186, 156, }, { 106, 72, 135, 215, 214, 255, 192, 235, 214, 250, 141, 212, 212, 197, 170, 254, }, { 110, 161, 121, 227, 246, 174, 27, 105, 246, 239, 251, 220, 220, 90, 117, 187, }, { 238, 114, 15, 172, 124, 28, 71, 68, 124, 10, 35, 31, 31, 81, 169, 204, }, { 149, 179, 40, 166, 34, 225, 43, 35, 34, 48, 73, 233, 233, 250, 190, 101, }, { 190, 216, 74, 186, 185, 194, 131, 254, 185, 205, 84, 191, 191, 140, 61, 193, }, { 56, 119, 189, 219, 3, 232, 136, 16, 3, 214, 193, 112, 112, 182, 176, 48, }, { 28, 218, 191, 140, 224, 116, 68, 8, 224, 107, 129, 56, 56, 91, 88, 24, }, { 216, 104, 12, 49, 15, 206, 237, 80, 15, 8, 67, 115, 115, 43, 53, 240, }, { 252, 197, 14, 102, 236, 82, 33, 72, 236, 181, 3, 59, 59, 198, 221, 216, }, { 107, 227, 89, 218, 222, 122, 134, 42, 222, 110, 113, 214, 214, 146, 237, 126, }, { 158, 156, 182, 217, 122, 15, 148, 100, 122, 101, 98, 255, 255, 254, 10, 172, }, { 243, 3, 110, 45, 148, 237, 69, 141, 148, 245, 94, 37, 37, 93, 182, 84, }, { 22, 94, 255, 254, 176, 31, 189, 142, 176, 170, 86, 44, 44, 8, 171, 81, }, { 246, 65, 78, 20, 188, 57, 216, 206, 188, 116, 212, 47, 47, 149, 46, 145, }, { 250, 185, 143, 72, 220, 202, 118, 139, 220, 75, 78, 55, 55, 247, 140, 94, }, { 29, 113, 97, 129, 232, 241, 2, 201, 232, 255, 125, 58, 58, 12, 31, 152, }, { 5, 66, 32, 57, 40, 212, 157, 67, 40, 129, 138, 10, 10, 200, 152, 197, }, { 10, 132, 64, 114, 80, 107, 249, 134, 80, 193, 215, 20, 20, 83, 243, 73, }, { 121, 84, 88, 16, 78, 52, 224, 38, 78, 209, 81, 242, 242, 5, 153, 106, }, { 62, 11, 60, 245, 51, 112, 223, 211, 51, 40, 140, 124, 124, 135, 225, 182, }, { 144, 241, 8, 159, 10, 53, 182, 96, 10, 177, 195, 227, 227, 50, 38, 160, }, { 152, 224, 55, 247, 74, 151, 195, 167, 74, 155, 47, 243, 243, 207, 91, 42, }, { 205, 8, 82, 216, 167, 157, 154, 94, 167, 221, 210, 89, 89, 218, 87, 226, }, { 203, 116, 211, 246, 151, 5, 205, 157, 151, 35, 159, 85, 85, 235, 6, 100, }, { 12, 248, 193, 92, 96, 243, 174, 69, 96, 63, 154, 24, 24, 98, 162, 207, }, { 54, 26, 3, 157, 115, 210, 170, 20, 115, 2, 96, 108, 108, 122, 156, 60, }, { 115, 208, 24, 98, 30, 95, 25, 160, 30, 16, 134, 230, 230, 86, 106, 35, }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, { 157, 162, 23, 206, 98, 67, 94, 228, 98, 26, 165, 249, 249, 7, 195, 239, }, { 233, 165, 80, 143, 68, 1, 86, 70, 68, 96, 146, 17, 17, 55, 191, 202, }, { 146, 100, 119, 133, 26, 252, 58, 33, 26, 90, 248, 231, 231, 156, 168, 99, }, { 23, 245, 33, 243, 184, 154, 251, 79, 184, 62, 170, 46, 46, 95, 236, 209, }, { 7, 215, 95, 35, 56, 29, 17, 2, 56, 106, 177, 14, 14, 102, 22, 6, }, { 129, 120, 168, 66, 130, 55, 26, 236, 130, 113, 36, 193, 193, 92, 155, 247, }, { 237, 76, 174, 187, 100, 80, 141, 196, 100, 117, 228, 25, 25, 168, 96, 143, }, { 202, 223, 13, 251, 159, 128, 139, 92, 159, 183, 99, 87, 87, 188, 65, 228, }, { 116, 7, 71, 65, 38, 66, 8, 162, 38, 122, 55, 232, 232, 48, 124, 37, }, { 161, 60, 84, 33, 65, 250, 13, 118, 65, 217, 18, 129, 129, 46, 172, 154, }, { 93, 249, 90, 71, 173, 168, 44, 62, 173, 108, 17, 186, 186, 232, 113, 66, }, { 64, 136, 59, 198, 69, 89, 46, 247, 69, 147, 108, 128, 128, 228, 110, 218, }, { 120, 255, 134, 29, 70, 177, 166, 231, 70, 69, 173, 240, 240, 82, 222, 234, }, { 131, 237, 215, 88, 146, 254, 150, 173, 146, 154, 31, 197, 197, 242, 21, 52, }, { 221, 42, 44, 8, 39, 26, 112, 19, 39, 137, 201, 121, 121, 227, 173, 53, }, { 123, 193, 39, 10, 94, 253, 108, 103, 94, 58, 106, 246, 246, 171, 23, 169, }, { 66, 29, 68, 220, 85, 144, 162, 182, 85, 120, 87, 132, 132, 74, 224, 25, }, { 220, 129, 242, 5, 47, 159, 54, 210, 47, 29, 53, 123, 123, 180, 234, 181, }, { 240, 61, 207, 58, 140, 161, 143, 13, 140, 138, 153, 35, 35, 164, 127, 23, }, { 44, 188, 61, 63, 163, 62, 185, 223, 163, 151, 172, 88, 88, 16, 149, 162, }, { 92, 82, 132, 74, 165, 45, 106, 255, 165, 248, 237, 184, 184, 191, 54, 194, }, { 71, 95, 100, 229, 125, 68, 63, 245, 125, 249, 221, 142, 142, 130, 120, 220, }, { 164, 126, 116, 24, 105, 46, 144, 53, 105, 88, 152, 139, 139, 230, 52, 95, }, { 82, 63, 58, 12, 213, 23, 72, 251, 213, 44, 76, 164, 164, 115, 26, 206, }, { 90, 46, 5, 100, 149, 181, 61, 60, 149, 6, 160, 180, 180, 142, 103, 68, }, { 63, 160, 226, 248, 59, 245, 153, 18, 59, 188, 112, 126, 126, 208, 166, 54, }, { 217, 195, 210, 60, 7, 75, 171, 145, 7, 156, 191, 113, 113, 124, 114, 112, }, { 11, 47, 158, 127, 88, 238, 191, 71, 88, 85, 43, 22, 22, 4, 180, 201, }, { 46, 41, 66, 37, 179, 247, 53, 158, 179, 124, 151, 92, 92, 190, 27, 97, }, { 8, 17, 63, 104, 64, 162, 117, 199, 64, 42, 236, 16, 16, 253, 125, 138, }, { 96, 204, 199, 165, 134, 148, 57, 109, 134, 59, 90, 192, 192, 150, 89, 183, }, { 244, 212, 49, 14, 172, 240, 84, 143, 172, 159, 239, 43, 43, 59, 160, 82, }, { 75, 167, 165, 185, 29, 183, 145, 176, 29, 198, 71, 150, 150, 224, 218, 19, }, { 199, 140, 18, 170, 247, 246, 99, 216, 247, 28, 5, 77, 77, 137, 164, 171, }, { 6, 124, 129, 46, 48, 152, 87, 195, 48, 254, 77, 12, 12, 49, 81, 134, }, { 223, 191, 83, 18, 55, 211, 252, 82, 55, 98, 242, 125, 125, 77, 35, 246, }, { 53, 36, 162, 138, 107, 158, 96, 148, 107, 125, 167, 106, 106, 131, 85, 127, }, { 253, 110, 208, 107, 228, 215, 103, 137, 228, 33, 255, 57, 57, 145, 154, 88, }, { 17, 137, 160, 221, 136, 2, 172, 140, 136, 192, 231, 34, 34, 110, 189, 87, }, { 178, 32, 139, 230, 217, 49, 45, 187, 217, 242, 206, 167, 167, 238, 159, 14, }, { 197, 25, 109, 176, 231, 63, 239, 153, 231, 247, 62, 73, 73, 39, 42, 104, }, { 184, 164, 203, 148, 137, 90, 212, 61, 137, 51, 25, 179, 179, 189, 108, 71, }, { 181, 247, 212, 197, 225, 44, 60, 185, 225, 152, 127, 169, 169, 136, 137, 8, }, { 59, 73, 28, 204, 27, 164, 66, 144, 27, 169, 6, 118, 118, 79, 121, 115, }, { 40, 85, 195, 11, 131, 111, 98, 93, 131, 130, 218, 80, 80, 143, 74, 231, }, { 160, 151, 138, 44, 73, 127, 75, 183, 73, 77, 238, 131, 131, 121, 235, 26, }, { 232, 14, 142, 130, 76, 132, 16, 135, 76, 244, 110, 19, 19, 96, 248, 74, }, { 222, 20, 141, 31, 63, 86, 186, 147, 63, 246, 14, 127, 127, 26, 100, 118, }, { 31, 228, 30, 155, 248, 56, 142, 136, 248, 20, 70, 62, 62, 162, 145, 91, }, { 111, 10, 167, 238, 254, 43, 93, 168, 254, 123, 7, 222, 222, 13, 50, 59, }, { 89, 16, 164, 115, 141, 249, 247, 188, 141, 121, 103, 178, 178, 119, 174, 7, }, { 50, 243, 253, 169, 83, 131, 113, 150, 83, 23, 22, 100, 100, 229, 67, 121, }, { 132, 58, 136, 123, 170, 227, 135, 175, 170, 240, 174, 203, 203, 148, 3, 50, }, { 18, 183, 1, 202, 144, 78, 102, 12, 144, 191, 32, 36, 36, 151, 116, 20, }, { 136, 194, 73, 39, 202, 16, 41, 234, 202, 207, 52, 211, 211, 246, 161, 253, }, { 27, 13, 224, 175, 216, 105, 85, 10, 216, 1, 48, 54, 54, 61, 78, 30, }, { 88, 187, 122, 126, 133, 124, 177, 125, 133, 237, 155, 176, 176, 32, 233, 135, }, { 165, 213, 170, 21, 97, 171, 214, 244, 97, 204, 100, 137, 137, 177, 115, 223, }, { 4, 233, 254, 52, 32, 81, 219, 130, 32, 21, 118, 8, 8, 159, 223, 69, }, { 167, 64, 213, 15, 113, 98, 90, 181, 113, 39, 95, 141, 141, 31, 253, 28, }, { 213, 59, 19, 96, 103, 184, 5, 212, 103, 163, 37, 105, 105, 30, 208, 191, }, { 245, 127, 239, 3, 164, 117, 18, 78, 164, 11, 19, 41, 41, 108, 231, 210, }, { 77, 219, 36, 151, 45, 47, 198, 115, 45, 56, 10, 154, 154, 209, 139, 149, }, { 61, 53, 157, 226, 43, 60, 21, 83, 43, 87, 75, 122, 122, 126, 40, 245, }, { 168, 134, 181, 68, 9, 221, 62, 112, 9, 103, 2, 147, 147, 132, 150, 144, }, { 51, 88, 35, 164, 91, 6, 55, 87, 91, 131, 234, 102, 102, 178, 4, 249, }, { 33, 239, 34, 110, 203, 72, 81, 91, 203, 60, 202, 66, 66, 37, 112, 237, }, { 43, 107, 98, 28, 155, 35, 168, 221, 155, 253, 29, 86, 86, 118, 131, 164, }, { 76, 112, 250, 154, 37, 170, 128, 178, 37, 172, 246, 152, 152, 134, 204, 21, }, { 26, 166, 62, 162, 208, 236, 19, 203, 208, 149, 204, 52, 52, 106, 9, 158, }, { 103, 27, 152, 134, 190, 137, 40, 111, 190, 81, 235, 206, 206, 240, 79, 177, }, { 84, 67, 187, 34, 229, 143, 31, 56, 229, 210, 1, 168, 168, 66, 75, 72, }, { 236, 231, 112, 182, 108, 213, 203, 5, 108, 225, 24, 27, 27, 255, 39, 15, }, { 155, 222, 150, 224, 82, 219, 9, 39, 82, 228, 232, 245, 245, 54, 146, 105, }, { 162, 2, 245, 54, 89, 182, 199, 246, 89, 166, 213, 135, 135, 215, 101, 217, }, { 100, 37, 57, 145, 166, 197, 226, 239, 166, 46, 44, 200, 200, 9, 134, 242, }, { 239, 217, 209, 161, 116, 153, 1, 133, 116, 158, 223, 29, 29, 6, 238, 76, }, { 139, 252, 232, 48, 210, 92, 227, 106, 210, 176, 243, 213, 213, 15, 104, 190, }, { 108, 52, 6, 249, 230, 103, 151, 40, 230, 4, 192, 216, 216, 244, 251, 120, }, { 255, 251, 175, 113, 244, 30, 235, 200, 244, 202, 196, 61, 61, 63, 20, 155, }, { 247, 234, 144, 25, 180, 188, 158, 15, 180, 224, 40, 45, 45, 194, 105, 17, }, { 24, 51, 65, 184, 192, 37, 159, 138, 192, 126, 247, 48, 48, 196, 135, 93, }, { 179, 139, 85, 235, 209, 180, 107, 122, 209, 102, 50, 165, 165, 185, 216, 142, }, { 124, 22, 120, 41, 102, 224, 125, 101, 102, 80, 219, 248, 248, 205, 1, 175, }, { 204, 163, 140, 213, 175, 24, 220, 159, 175, 73, 46, 91, 91, 141, 16, 98, }, { 137, 105, 151, 42, 194, 149, 111, 43, 194, 91, 200, 209, 209, 161, 230, 125, }, { 174, 250, 52, 106, 57, 69, 105, 179, 57, 153, 79, 159, 159, 181, 199, 22, }, { 49, 205, 92, 190, 75, 207, 187, 22, 75, 104, 209, 98, 98, 28, 138, 58, }, { 52, 143, 124, 135, 99, 27, 38, 85, 99, 233, 91, 104, 104, 212, 18, 255, }, { 102, 176, 70, 139, 182, 12, 110, 174, 182, 197, 23, 204, 204, 167, 8, 49, }, }, { { 85, 149, 158, 177, 208, 161, 76, 217, 90, 47, 249, 28, 76, 242, 26, 82, }, { 250, 237, 135, 207, 133, 93, 129, 108, 85, 72, 139, 30, 129, 225, 88, 28, }, { 12, 190, 10, 86, 72, 172, 204, 114, 103, 92, 69, 88, 204, 241, 9, 26, }, { 82, 49, 123, 119, 250, 238, 59, 10, 175, 12, 251, 131, 59, 177, 142, 2, }, { 163, 198, 19, 40, 29, 80, 1, 199, 104, 59, 55, 90, 1, 226, 75, 84, }, { 115, 28, 171, 201, 247, 81, 79, 83, 226, 98, 160, 242, 79, 23, 199, 174, }, { 225, 156, 112, 151, 7, 237, 233, 117, 242, 231, 129, 184, 233, 109, 217, 207, }, { 129, 37, 32, 98, 2, 196, 70, 99, 76, 66, 236, 61, 70, 233, 145, 31, }, { 134, 129, 197, 164, 40, 139, 49, 176, 185, 97, 238, 162, 49, 170, 5, 79, }, { 2, 53, 3, 25, 28, 50, 34, 23, 78, 26, 65, 165, 34, 119, 226, 186, }, { 108, 7, 90, 163, 77, 133, 99, 100, 217, 249, 40, 221, 99, 117, 65, 202, }, { 223, 170, 81, 67, 176, 134, 177, 27, 132, 18, 82, 230, 177, 169, 22, 7, }, { 78, 228, 105, 233, 82, 17, 36, 192, 253, 128, 243, 186, 36, 126, 155, 129, }, { 232, 179, 156, 30, 121, 60, 112, 195, 46, 130, 135, 218, 112, 168, 166, 63, }, { 46, 93, 57, 28, 87, 56, 139, 214, 67, 37, 158, 63, 139, 250, 211, 81, }, { 61, 248, 194, 32, 165, 64, 107, 147, 31, 226, 83, 72, 107, 105, 92, 47, }, { 41, 249, 220, 218, 125, 119, 252, 5, 182, 6, 156, 160, 252, 185, 71, 1, }, { 125, 151, 162, 134, 163, 207, 161, 54, 203, 36, 164, 15, 161, 145, 44, 14, }, { 39, 114, 213, 149, 41, 233, 18, 96, 159, 64, 152, 93, 18, 63, 172, 161, }, { 53, 44, 206, 68, 213, 136, 227, 207, 228, 138, 148, 153, 227, 118, 82, 130, }, { 204, 15, 170, 127, 66, 254, 81, 94, 216, 213, 159, 145, 81, 58, 153, 121, }, { 214, 133, 189, 202, 206, 87, 40, 173, 88, 119, 84, 132, 40, 108, 105, 247, }, { 135, 122, 37, 73, 38, 146, 32, 90, 158, 108, 47, 17, 32, 112, 116, 18, }, { 201, 158, 76, 160, 116, 131, 4, 154, 99, 236, 220, 171, 4, 14, 239, 147, }, { 107, 163, 191, 101, 103, 202, 20, 183, 44, 218, 42, 66, 20, 54, 213, 154, }, { 50, 136, 43, 130, 255, 199, 148, 28, 17, 169, 150, 6, 148, 53, 198, 210, }, { 205, 244, 74, 146, 76, 231, 64, 180, 255, 216, 94, 34, 64, 224, 232, 36, }, { 35, 24, 211, 167, 17, 141, 86, 78, 3, 116, 26, 212, 86, 209, 171, 22, }, { 150, 234, 221, 108, 200, 216, 226, 8, 140, 177, 163, 195, 226, 148, 25, 214, }, { 180, 9, 238, 38, 215, 76, 165, 172, 168, 200, 120, 164, 165, 159, 195, 157, }, { 146, 128, 219, 94, 240, 188, 166, 38, 16, 133, 33, 74, 166, 122, 30, 97, }, { 198, 238, 165, 2, 46, 4, 251, 21, 109, 167, 25, 229, 251, 82, 117, 110, }, { 145, 78, 56, 170, 226, 151, 149, 219, 121, 146, 161, 92, 149, 215, 141, 134, }, { 228, 13, 150, 72, 49, 144, 188, 177, 73, 222, 194, 130, 188, 89, 175, 37, }, { 210, 239, 187, 248, 246, 51, 108, 131, 196, 67, 214, 13, 108, 130, 110, 64, }, { 86, 91, 125, 69, 194, 138, 127, 36, 51, 56, 121, 10, 127, 95, 137, 181, }, { 136, 10, 204, 235, 124, 21, 223, 213, 144, 39, 234, 95, 223, 44, 238, 239, }, { 111, 201, 185, 87, 95, 174, 80, 153, 176, 238, 168, 203, 80, 216, 210, 45, }, { 16, 107, 24, 200, 224, 83, 211, 184, 53, 208, 77, 97, 211, 62, 28, 153, }, { 89, 43, 148, 231, 152, 13, 128, 171, 61, 115, 188, 68, 128, 3, 19, 72, }, { 99, 119, 179, 1, 23, 2, 156, 235, 215, 178, 237, 147, 156, 41, 219, 55, }, { 202, 80, 175, 84, 102, 168, 55, 103, 10, 251, 92, 189, 55, 163, 124, 116, }, { 121, 253, 164, 180, 155, 171, 229, 24, 87, 16, 38, 134, 229, 127, 43, 185, }, { 178, 86, 235, 13, 243, 26, 195, 149, 122, 230, 187, 136, 195, 6, 38, 144, }, { 40, 2, 60, 55, 115, 110, 237, 239, 145, 11, 93, 19, 237, 99, 54, 92, }, { 234, 134, 159, 7, 101, 14, 82, 212, 96, 152, 198, 127, 82, 223, 68, 133, }, { 236, 217, 154, 44, 65, 88, 52, 237, 178, 182, 5, 83, 52, 70, 161, 136, }, { 42, 55, 63, 46, 111, 92, 207, 248, 223, 17, 28, 182, 207, 20, 212, 230, }, { 196, 219, 166, 27, 50, 54, 217, 2, 35, 189, 88, 64, 217, 37, 151, 212, }, { 167, 172, 21, 26, 37, 52, 69, 233, 244, 15, 181, 211, 69, 12, 76, 227, }, { 23, 207, 253, 14, 202, 28, 164, 107, 192, 243, 79, 254, 164, 125, 136, 201, }, { 95, 116, 145, 204, 188, 91, 230, 146, 239, 93, 127, 104, 230, 154, 246, 69, }, { 98, 140, 83, 236, 25, 27, 141, 1, 240, 191, 44, 32, 141, 243, 170, 106, }, { 93, 65, 146, 213, 160, 105, 196, 133, 161, 71, 62, 205, 196, 237, 20, 255, }, { 6, 95, 5, 43, 36, 86, 102, 57, 210, 46, 195, 44, 102, 153, 229, 13, }, { 58, 92, 39, 230, 143, 15, 28, 64, 234, 193, 81, 215, 28, 42, 200, 127, }, { 57, 146, 196, 18, 157, 36, 47, 189, 131, 214, 209, 193, 47, 135, 91, 152, }, { 161, 243, 16, 49, 1, 98, 35, 208, 38, 33, 118, 255, 35, 149, 169, 238, }, { 7, 164, 229, 198, 42, 79, 119, 211, 245, 35, 2, 159, 119, 67, 148, 80, }, { 109, 252, 186, 78, 67, 156, 114, 142, 254, 244, 233, 110, 114, 175, 48, 151, }, { 33, 45, 208, 190, 13, 191, 116, 89, 77, 110, 91, 113, 116, 166, 73, 172, }, { 186, 130, 231, 105, 131, 210, 75, 201, 129, 142, 124, 89, 75, 25, 40, 61, }, { 105, 150, 188, 124, 123, 248, 54, 160, 98, 192, 107, 231, 54, 65, 55, 32, }, { 55, 25, 205, 93, 201, 186, 193, 216, 170, 144, 213, 60, 193, 1, 176, 56, }, { 62, 54, 33, 212, 183, 107, 88, 110, 118, 245, 211, 94, 88, 196, 207, 200, }, { 37, 71, 214, 140, 53, 219, 48, 119, 209, 90, 217, 248, 48, 72, 78, 27, }, { 193, 74, 64, 196, 4, 75, 140, 198, 152, 132, 27, 122, 140, 17, 225, 62, }, { 247, 168, 109, 116, 195, 232, 92, 244, 21, 25, 15, 245, 92, 202, 32, 91, }, { 212, 176, 190, 211, 210, 101, 10, 186, 22, 109, 21, 33, 10, 27, 139, 77, }, { 112, 210, 72, 61, 229, 122, 124, 174, 139, 117, 32, 228, 124, 186, 84, 73, }, { 249, 35, 100, 59, 151, 118, 178, 145, 60, 95, 11, 8, 178, 76, 203, 251, }, { 155, 175, 55, 215, 142, 109, 63, 144, 204, 224, 39, 40, 63, 191, 97, 145, }, { 48, 189, 40, 155, 227, 245, 182, 11, 95, 179, 215, 163, 182, 66, 36, 104, }, { 248, 216, 132, 214, 153, 111, 163, 123, 27, 82, 202, 187, 163, 150, 186, 166, }, { 74, 142, 111, 219, 106, 117, 96, 238, 97, 180, 113, 51, 96, 144, 156, 54, }, { 45, 147, 218, 232, 69, 19, 184, 43, 42, 50, 30, 41, 184, 87, 64, 182, }, { 191, 19, 1, 182, 181, 175, 30, 13, 58, 183, 63, 99, 30, 45, 94, 215, }, { 64, 111, 96, 166, 6, 143, 202, 165, 212, 198, 247, 71, 202, 248, 112, 33, }, { 73, 64, 140, 47, 120, 94, 83, 19, 8, 163, 241, 37, 83, 61, 15, 209, }, { 94, 143, 113, 33, 178, 66, 247, 120, 200, 80, 190, 219, 247, 64, 135, 24, }, { 70, 48, 101, 141, 34, 217, 172, 156, 6, 232, 52, 107, 172, 97, 149, 44, }, { 174, 131, 249, 147, 91, 229, 220, 95, 40, 106, 179, 177, 220, 201, 51, 19, }, { 101, 40, 182, 42, 51, 84, 250, 210, 5, 156, 46, 191, 250, 176, 62, 58, }, { 36, 188, 54, 97, 59, 194, 33, 157, 246, 87, 24, 75, 33, 146, 63, 70, }, { 92, 186, 114, 56, 174, 112, 213, 111, 134, 74, 255, 126, 213, 55, 101, 162, }, { 114, 231, 75, 36, 249, 72, 94, 185, 197, 111, 97, 65, 94, 205, 182, 243, }, { 151, 17, 61, 129, 198, 193, 243, 226, 171, 188, 98, 112, 243, 78, 104, 139, }, { 175, 120, 25, 126, 85, 252, 205, 181, 15, 103, 114, 2, 205, 19, 66, 78, }, { 13, 69, 234, 187, 70, 181, 221, 152, 64, 81, 132, 235, 221, 43, 120, 71, }, { 185, 76, 4, 157, 145, 249, 120, 52, 232, 153, 252, 79, 120, 180, 187, 218, }, { 69, 254, 134, 121, 48, 242, 159, 97, 111, 255, 180, 125, 159, 204, 6, 203, }, { 118, 141, 77, 22, 193, 44, 26, 151, 89, 91, 227, 200, 26, 35, 177, 68, }, { 67, 161, 131, 82, 20, 164, 249, 88, 189, 209, 119, 81, 249, 85, 227, 198, }, { 81, 255, 152, 131, 232, 197, 8, 247, 198, 27, 123, 149, 8, 28, 29, 229, }, { 133, 79, 38, 80, 58, 160, 2, 77, 208, 118, 110, 180, 2, 7, 150, 168, }, { 90, 229, 119, 19, 138, 38, 179, 86, 84, 100, 60, 82, 179, 174, 128, 175, }, { 124, 108, 66, 107, 173, 214, 176, 220, 236, 41, 101, 188, 176, 75, 93, 83, }, { 208, 218, 184, 225, 234, 1, 78, 148, 138, 89, 151, 168, 78, 245, 140, 250, }, { 8, 212, 12, 100, 112, 200, 136, 92, 251, 104, 199, 209, 136, 31, 14, 173, }, { 5, 145, 230, 223, 54, 125, 85, 196, 187, 57, 67, 58, 85, 52, 118, 234, }, { 184, 183, 228, 112, 159, 224, 105, 222, 207, 148, 61, 252, 105, 110, 202, 135, }, { 15, 112, 233, 162, 90, 135, 255, 143, 14, 75, 197, 78, 255, 92, 154, 253, }, { 122, 51, 71, 64, 137, 128, 214, 229, 62, 7, 166, 144, 214, 210, 184, 94, }, { 255, 124, 97, 16, 179, 32, 212, 168, 238, 113, 200, 36, 212, 213, 46, 246, }, { 218, 59, 183, 156, 134, 251, 228, 223, 63, 43, 17, 220, 228, 157, 96, 237, }, { 219, 192, 87, 113, 136, 226, 245, 53, 24, 38, 208, 111, 245, 71, 17, 176, }, { 242, 57, 139, 171, 245, 149, 9, 48, 174, 32, 76, 207, 9, 254, 86, 177, }, { 153, 154, 52, 206, 146, 95, 29, 135, 130, 250, 102, 141, 29, 200, 131, 43, }, { 169, 39, 28, 85, 113, 170, 171, 140, 221, 73, 177, 46, 171, 138, 167, 67, }, { 84, 110, 126, 92, 222, 184, 93, 51, 125, 34, 56, 175, 93, 40, 107, 15, }, { 149, 36, 62, 152, 218, 243, 209, 245, 229, 166, 35, 213, 209, 57, 138, 49, }, { 104, 109, 92, 145, 117, 225, 39, 74, 69, 205, 170, 84, 39, 155, 70, 125, }, { 28, 213, 18, 158, 168, 255, 31, 202, 82, 140, 8, 57, 31, 207, 21, 131, }, { 106, 88, 95, 136, 105, 211, 5, 93, 11, 215, 235, 241, 5, 236, 164, 199, }, { 14, 139, 9, 79, 84, 158, 238, 101, 41, 70, 4, 253, 238, 134, 235, 160, }, { 147, 123, 59, 179, 254, 165, 183, 204, 55, 136, 224, 249, 183, 160, 111, 60, }, { 168, 220, 252, 184, 127, 179, 186, 102, 250, 68, 112, 157, 186, 80, 214, 30, }, { 207, 193, 73, 139, 80, 213, 98, 163, 177, 194, 31, 135, 98, 151, 10, 158, }, { 194, 132, 163, 48, 22, 96, 191, 59, 241, 147, 155, 108, 191, 188, 114, 217, }, { 203, 171, 79, 185, 104, 177, 38, 141, 45, 246, 157, 14, 38, 121, 13, 41, }, { 142, 85, 201, 192, 88, 67, 185, 236, 66, 9, 41, 115, 185, 181, 11, 226, }, { 51, 115, 203, 111, 241, 222, 133, 246, 54, 164, 87, 181, 133, 239, 183, 143, }, { 21, 250, 254, 23, 214, 46, 134, 124, 142, 233, 14, 91, 134, 10, 106, 115, }, { 137, 241, 44, 6, 114, 12, 206, 63, 183, 42, 43, 236, 206, 246, 159, 178, }, { 209, 33, 88, 12, 228, 24, 95, 126, 173, 84, 86, 27, 95, 47, 253, 167, }, { 26, 138, 23, 181, 140, 169, 121, 243, 128, 162, 203, 21, 121, 86, 240, 142, }, { 152, 97, 212, 35, 156, 70, 12, 109, 165, 247, 167, 62, 12, 18, 242, 118, }, { 206, 58, 169, 102, 94, 204, 115, 73, 150, 207, 222, 52, 115, 77, 123, 195, }, { 27, 113, 247, 88, 130, 176, 104, 25, 167, 175, 10, 166, 104, 140, 129, 211, }, { 227, 169, 115, 142, 27, 223, 203, 98, 188, 253, 192, 29, 203, 26, 59, 117, }, { 157, 240, 50, 252, 170, 59, 89, 169, 30, 206, 228, 4, 89, 38, 132, 156, }, { 140, 96, 202, 217, 68, 113, 155, 251, 12, 19, 104, 214, 155, 194, 233, 88, }, { 110, 50, 89, 186, 81, 183, 65, 115, 151, 227, 105, 120, 65, 2, 163, 112, }, { 102, 230, 85, 222, 33, 127, 201, 47, 108, 139, 174, 169, 201, 29, 173, 221, }, { 88, 208, 116, 10, 150, 20, 145, 65, 26, 126, 125, 247, 145, 217, 98, 21, }, { 154, 84, 215, 58, 128, 116, 46, 122, 235, 237, 230, 155, 46, 101, 16, 204, }, { 71, 203, 133, 96, 44, 192, 189, 118, 33, 229, 245, 216, 189, 187, 228, 113, }, { 24, 191, 20, 172, 144, 155, 91, 228, 206, 184, 138, 176, 91, 33, 18, 52, }, { 173, 77, 26, 103, 73, 206, 239, 162, 65, 125, 51, 167, 239, 100, 160, 244, }, { 30, 224, 17, 135, 180, 205, 61, 221, 28, 150, 73, 156, 61, 184, 247, 57, }, { 220, 100, 178, 183, 162, 173, 130, 230, 237, 5, 210, 240, 130, 4, 133, 224, }, { 164, 98, 246, 238, 55, 31, 118, 20, 157, 24, 53, 197, 118, 161, 223, 4, }, { 52, 215, 46, 169, 219, 145, 242, 37, 195, 135, 85, 42, 242, 172, 35, 223, }, { 253, 73, 98, 9, 175, 18, 246, 191, 160, 107, 137, 129, 246, 162, 204, 76, }, { 159, 197, 49, 229, 182, 9, 123, 190, 80, 212, 165, 161, 123, 81, 102, 38, }, { 143, 174, 41, 45, 86, 90, 168, 6, 101, 4, 232, 192, 168, 111, 122, 191, }, { 237, 34, 122, 193, 79, 65, 37, 7, 149, 187, 196, 224, 37, 156, 208, 213, }, { 241, 247, 104, 95, 231, 190, 58, 205, 199, 55, 204, 217, 58, 83, 197, 86, }, { 229, 246, 118, 165, 63, 137, 173, 91, 110, 211, 3, 49, 173, 131, 222, 120, }, { 31, 27, 241, 106, 186, 212, 44, 55, 59, 155, 136, 47, 44, 98, 134, 100, }, { 130, 235, 195, 150, 16, 239, 117, 158, 37, 85, 108, 43, 117, 68, 2, 248, }, { 240, 12, 136, 178, 233, 167, 43, 39, 224, 58, 13, 106, 43, 137, 180, 11, }, { 230, 56, 149, 81, 45, 162, 158, 166, 7, 196, 131, 39, 158, 46, 77, 159, }, { 195, 127, 67, 221, 24, 121, 174, 209, 214, 158, 90, 223, 174, 102, 3, 132, }, { 239, 23, 121, 216, 83, 115, 7, 16, 219, 161, 133, 69, 7, 235, 50, 111, }, { 29, 46, 242, 115, 166, 230, 14, 32, 117, 129, 201, 138, 14, 21, 100, 222, }, { 192, 177, 160, 41, 10, 82, 157, 44, 191, 137, 218, 201, 157, 203, 144, 99, }, { 246, 83, 141, 153, 205, 241, 77, 30, 50, 20, 206, 70, 77, 16, 81, 6, }, { 75, 117, 143, 54, 100, 108, 113, 4, 70, 185, 176, 128, 113, 74, 237, 107, }, { 238, 236, 153, 53, 93, 106, 22, 250, 252, 172, 68, 246, 22, 49, 67, 50, }, { 233, 72, 124, 243, 119, 37, 97, 41, 9, 143, 70, 105, 97, 114, 215, 98, }, { 226, 82, 147, 99, 21, 198, 218, 136, 155, 240, 1, 174, 218, 192, 74, 40, }, { 22, 52, 29, 227, 196, 5, 181, 129, 231, 254, 142, 77, 181, 167, 249, 148, }, { 83, 202, 155, 154, 244, 247, 42, 224, 136, 1, 58, 48, 42, 107, 255, 95, }, { 221, 159, 82, 90, 172, 180, 147, 12, 202, 8, 19, 67, 147, 222, 244, 189, }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, { 1, 251, 224, 237, 14, 25, 17, 234, 39, 13, 193, 179, 17, 218, 113, 93, }, { 139, 196, 47, 31, 110, 62, 236, 40, 249, 48, 106, 73, 236, 129, 125, 8, }, { 243, 194, 107, 70, 251, 140, 24, 218, 137, 45, 141, 124, 24, 36, 39, 236, }, { 222, 81, 177, 174, 190, 159, 160, 241, 163, 31, 147, 85, 160, 115, 103, 90, }, { 87, 160, 157, 168, 204, 147, 110, 206, 20, 53, 184, 185, 110, 133, 248, 232, }, { 158, 62, 209, 8, 184, 16, 106, 84, 119, 217, 100, 18, 106, 139, 23, 123, }, { 56, 105, 36, 255, 147, 61, 62, 87, 164, 219, 16, 114, 62, 93, 42, 197, }, { 190, 232, 225, 91, 187, 182, 15, 231, 29, 186, 254, 208, 15, 247, 47, 138, }, { 138, 63, 207, 242, 96, 39, 253, 194, 222, 61, 171, 250, 253, 91, 12, 85, }, { 79, 31, 137, 4, 92, 8, 53, 42, 218, 141, 50, 9, 53, 164, 234, 220, }, { 162, 61, 243, 197, 19, 73, 16, 45, 79, 54, 246, 233, 16, 56, 58, 9, }, { 97, 66, 176, 24, 11, 48, 190, 252, 153, 168, 172, 54, 190, 94, 57, 141, }, { 156, 11, 210, 17, 164, 34, 72, 67, 57, 195, 37, 183, 72, 252, 245, 193, }, { 38, 137, 53, 120, 39, 240, 3, 138, 184, 77, 89, 238, 3, 229, 221, 252, }, { 96, 185, 80, 245, 5, 41, 175, 22, 190, 165, 109, 133, 175, 132, 72, 208, }, { 120, 6, 68, 89, 149, 178, 244, 242, 112, 29, 231, 53, 244, 165, 90, 228, }, { 217, 245, 84, 104, 148, 208, 215, 34, 86, 60, 145, 202, 215, 48, 243, 10, }, { 60, 3, 34, 205, 171, 89, 122, 121, 56, 239, 146, 251, 122, 179, 45, 114, }, { 251, 22, 103, 34, 139, 68, 144, 134, 114, 69, 74, 173, 144, 59, 41, 65, }, { 199, 21, 69, 239, 32, 29, 234, 255, 74, 170, 216, 86, 234, 136, 4, 51, }, { 254, 135, 129, 253, 189, 57, 197, 66, 201, 124, 9, 151, 197, 15, 95, 171, }, { 54, 226, 45, 176, 199, 163, 208, 50, 141, 157, 20, 143, 208, 219, 193, 101, }, { 160, 8, 240, 220, 15, 123, 50, 58, 1, 44, 183, 76, 50, 79, 216, 179, }, { 80, 4, 120, 110, 230, 220, 25, 29, 225, 22, 186, 38, 25, 198, 108, 184, }, { 245, 157, 110, 109, 223, 218, 126, 227, 91, 3, 78, 80, 126, 189, 194, 225, }, { 170, 233, 255, 161, 99, 129, 152, 113, 180, 94, 49, 56, 152, 39, 52, 164, }, { 211, 20, 91, 21, 248, 42, 125, 105, 227, 78, 23, 190, 125, 88, 31, 29, }, { 65, 148, 128, 75, 8, 150, 219, 79, 243, 203, 54, 244, 219, 34, 1, 124, }, { 127, 162, 161, 159, 191, 253, 131, 33, 133, 62, 229, 170, 131, 230, 206, 180, }, { 165, 153, 22, 3, 57, 6, 103, 254, 186, 21, 244, 118, 103, 123, 174, 89, }, { 176, 99, 232, 20, 239, 40, 225, 130, 52, 252, 250, 45, 225, 113, 196, 42, }, { 72, 187, 108, 194, 118, 71, 66, 249, 47, 174, 48, 150, 66, 231, 126, 140, }, { 32, 214, 48, 83, 3, 166, 101, 179, 106, 99, 154, 194, 101, 124, 56, 241, }, { 244, 102, 142, 128, 209, 195, 111, 9, 124, 14, 143, 227, 111, 103, 179, 188, }, { 11, 26, 239, 144, 98, 227, 187, 161, 146, 127, 71, 199, 187, 178, 157, 74, }, { 216, 14, 180, 133, 154, 201, 198, 200, 113, 49, 80, 121, 198, 234, 130, 87, }, { 183, 199, 13, 210, 197, 103, 150, 81, 193, 223, 248, 178, 150, 50, 80, 122, }, { 177, 152, 8, 249, 225, 49, 240, 104, 19, 241, 59, 158, 240, 171, 181, 119, }, { 213, 75, 94, 62, 220, 124, 27, 80, 49, 96, 212, 146, 27, 193, 250, 16, }, { 34, 227, 51, 74, 31, 148, 71, 164, 36, 121, 219, 103, 71, 11, 218, 75, }, { 76, 209, 106, 240, 78, 35, 6, 215, 179, 154, 178, 31, 6, 9, 121, 59, }, { 63, 205, 193, 57, 185, 114, 73, 132, 81, 248, 18, 237, 73, 30, 190, 149, }, { 117, 67, 174, 226, 211, 7, 41, 106, 48, 76, 99, 222, 41, 142, 34, 163, }, { 25, 68, 244, 65, 158, 130, 74, 14, 233, 181, 75, 3, 74, 251, 99, 105, }, { 116, 184, 78, 15, 221, 30, 56, 128, 23, 65, 162, 109, 56, 84, 83, 254, }, { 19, 165, 251, 60, 242, 120, 224, 69, 92, 199, 205, 119, 224, 147, 143, 126, }, { 215, 126, 93, 39, 192, 78, 57, 71, 127, 122, 149, 55, 57, 182, 24, 170, }, { 132, 180, 198, 189, 52, 185, 19, 167, 247, 123, 175, 7, 19, 221, 231, 245, }, { 123, 200, 167, 173, 135, 153, 199, 15, 25, 10, 103, 35, 199, 8, 201, 3, }, { 66, 90, 99, 191, 26, 189, 232, 178, 154, 220, 182, 226, 232, 143, 146, 155, }, { 17, 144, 248, 37, 238, 74, 194, 82, 18, 221, 140, 210, 194, 228, 109, 196, }, { 224, 103, 144, 122, 9, 244, 248, 159, 213, 234, 64, 11, 248, 183, 168, 146, }, { 113, 41, 168, 208, 235, 99, 109, 68, 172, 120, 225, 87, 109, 96, 37, 20, }, { 49, 70, 200, 118, 237, 236, 167, 225, 120, 190, 22, 16, 167, 152, 85, 53, }, { 103, 29, 181, 51, 47, 102, 216, 197, 75, 134, 111, 26, 216, 199, 220, 128, }, { 200, 101, 172, 77, 122, 154, 21, 112, 68, 225, 29, 24, 21, 212, 158, 206, }, { 77, 42, 138, 29, 64, 58, 23, 61, 148, 151, 115, 172, 23, 211, 8, 102, }, { 252, 178, 130, 228, 161, 11, 231, 85, 135, 102, 72, 50, 231, 120, 189, 17, }, { 179, 173, 11, 224, 253, 3, 210, 127, 93, 235, 122, 59, 210, 220, 87, 205, }, { 68, 5, 102, 148, 62, 235, 142, 139, 72, 242, 117, 206, 142, 22, 119, 150, }, { 197, 32, 70, 246, 60, 47, 200, 232, 4, 176, 153, 243, 200, 255, 230, 137, }, { 20, 1, 30, 250, 216, 55, 151, 150, 169, 228, 207, 232, 151, 208, 27, 46, }, { 43, 204, 223, 195, 97, 69, 222, 18, 248, 28, 221, 5, 222, 206, 165, 187, }, { 18, 94, 27, 209, 252, 97, 241, 175, 123, 202, 12, 196, 241, 73, 254, 35, }, { 182, 60, 237, 63, 203, 126, 135, 187, 230, 210, 57, 1, 135, 232, 33, 39, }, { 188, 221, 226, 66, 167, 132, 45, 240, 83, 160, 191, 117, 45, 128, 205, 48, }, { 141, 155, 42, 52, 74, 104, 138, 17, 43, 30, 169, 101, 138, 24, 152, 5, }, { 144, 181, 216, 71, 236, 142, 132, 49, 94, 159, 96, 239, 132, 13, 252, 219, }, { 119, 118, 173, 251, 207, 53, 11, 125, 126, 86, 34, 123, 11, 249, 192, 25, }, { 148, 223, 222, 117, 212, 234, 192, 31, 194, 171, 226, 102, 192, 227, 251, 108, }, { 231, 195, 117, 188, 35, 187, 143, 76, 32, 201, 66, 148, 143, 244, 60, 194, }, { 91, 30, 151, 254, 132, 63, 162, 188, 115, 105, 253, 225, 162, 116, 241, 242, }, { 100, 211, 86, 199, 61, 77, 235, 56, 34, 145, 239, 12, 235, 106, 79, 103, }, { 10, 225, 15, 125, 108, 250, 170, 75, 181, 114, 134, 116, 170, 104, 236, 23, }, { 171, 18, 31, 76, 109, 152, 137, 155, 147, 83, 240, 139, 137, 253, 69, 249, }, { 3, 206, 227, 244, 18, 43, 51, 253, 105, 23, 128, 22, 51, 173, 147, 231, }, { 128, 222, 192, 143, 12, 221, 87, 137, 107, 79, 45, 142, 87, 51, 224, 66, }, { 131, 16, 35, 123, 30, 246, 100, 116, 2, 88, 173, 152, 100, 158, 115, 165, }, { 166, 87, 245, 247, 43, 45, 84, 3, 211, 2, 116, 96, 84, 214, 61, 190, }, { 9, 47, 236, 137, 126, 209, 153, 182, 220, 101, 6, 98, 153, 197, 127, 240, }, { 172, 182, 250, 138, 71, 215, 254, 72, 102, 112, 242, 20, 254, 190, 209, 169, }, { 44, 104, 58, 5, 75, 10, 169, 193, 13, 63, 223, 154, 169, 141, 49, 235, }, { 126, 89, 65, 114, 177, 228, 146, 203, 162, 51, 36, 25, 146, 60, 191, 233, }, { 47, 166, 217, 241, 89, 33, 154, 60, 100, 40, 95, 140, 154, 32, 162, 12, }, { 181, 242, 14, 203, 217, 85, 180, 70, 143, 197, 185, 23, 180, 69, 178, 192, }, { 59, 167, 199, 11, 129, 22, 13, 170, 205, 204, 144, 100, 13, 240, 185, 34, }, { 189, 38, 2, 175, 169, 157, 60, 26, 116, 173, 126, 198, 60, 90, 188, 109, }, { 4, 106, 6, 50, 56, 100, 68, 46, 156, 52, 130, 137, 68, 238, 7, 183, }, { 235, 125, 127, 234, 107, 23, 67, 62, 71, 149, 7, 204, 67, 5, 53, 216, }, { 187, 121, 7, 132, 141, 203, 90, 35, 166, 131, 189, 234, 90, 195, 89, 96, }, }, { { 121, 26, 45, 109, 201, 59, 19, 225, 121, 88, 128, 128, 117, 128, 183, 54, }, { 145, 88, 203, 198, 254, 31, 177, 80, 145, 214, 26, 26, 29, 26, 137, 51, }, { 153, 9, 210, 188, 136, 121, 51, 194, 153, 233, 220, 220, 59, 220, 7, 156, }, { 185, 142, 182, 151, 147, 34, 126, 207, 185, 21, 66, 66, 163, 66, 122, 101, }, { 113, 75, 52, 23, 191, 93, 145, 115, 113, 103, 70, 70, 83, 70, 57, 153, }, { 234, 199, 113, 84, 203, 220, 99, 116, 234, 241, 74, 74, 128, 74, 252, 94, }, { 215, 217, 121, 82, 15, 98, 171, 198, 215, 108, 86, 86, 21, 86, 246, 239, }, { 149, 145, 38, 251, 197, 44, 240, 25, 149, 40, 121, 121, 14, 121, 206, 133, }, { 85, 5, 189, 1, 159, 53, 157, 55, 85, 101, 187, 187, 216, 187, 3, 214, }, { 218, 226, 39, 139, 60, 75, 233, 158, 218, 115, 155, 155, 84, 155, 94, 58, }, { 219, 65, 141, 21, 66, 55, 104, 29, 219, 173, 243, 243, 32, 243, 63, 246, }, { 181, 22, 66, 208, 222, 119, 189, 20, 181, 212, 231, 231, 150, 231, 179, 124, }, { 63, 155, 159, 249, 56, 70, 9, 119, 63, 226, 204, 204, 125, 204, 200, 234, }, { 84, 166, 23, 159, 225, 73, 28, 180, 84, 187, 211, 211, 172, 211, 98, 26, }, { 125, 211, 192, 80, 242, 8, 82, 168, 125, 166, 227, 227, 102, 227, 240, 128, }, { 213, 92, 238, 173, 243, 154, 106, 3, 213, 19, 134, 134, 253, 134, 52, 180, }, { 189, 71, 91, 170, 168, 17, 63, 134, 189, 235, 33, 33, 176, 33, 61, 211, }, { 169, 44, 132, 99, 127, 238, 185, 40, 169, 107, 13, 13, 239, 13, 165, 248, }, { 254, 172, 174, 157, 28, 35, 229, 218, 254, 113, 102, 102, 223, 102, 100, 117, }, { 59, 82, 114, 196, 3, 117, 72, 62, 59, 28, 175, 175, 110, 175, 143, 92, }, { 29, 153, 108, 45, 223, 229, 133, 191, 29, 97, 130, 130, 13, 130, 119, 72, }, { 54, 105, 44, 29, 48, 92, 10, 102, 54, 3, 98, 98, 47, 98, 39, 137, }, { 56, 116, 79, 165, 129, 241, 8, 120, 56, 189, 23, 23, 242, 23, 44, 203, }, { 7, 239, 208, 92, 185, 183, 1, 15, 7, 95, 219, 219, 143, 219, 228, 33, }, { 27, 213, 22, 239, 24, 46, 5, 51, 27, 224, 49, 49, 246, 49, 242, 165, }, { 251, 198, 233, 62, 89, 108, 37, 16, 251, 81, 109, 109, 184, 109, 66, 15, }, { 112, 232, 158, 137, 193, 33, 16, 240, 112, 185, 46, 46, 39, 46, 88, 85, }, { 137, 171, 224, 72, 100, 181, 244, 37, 137, 151, 147, 147, 119, 147, 216, 1, }, { 74, 25, 70, 211, 188, 40, 217, 77, 74, 123, 233, 233, 61, 233, 182, 197, }, { 174, 195, 84, 63, 198, 89, 184, 39, 174, 52, 214, 214, 96, 214, 65, 217, }, { 61, 30, 8, 6, 196, 190, 200, 178, 61, 157, 28, 28, 149, 28, 10, 177, }, { 41, 117, 215, 207, 19, 65, 78, 28, 41, 29, 48, 48, 202, 48, 146, 154, }, { 138, 141, 221, 41, 230, 49, 180, 99, 138, 54, 43, 43, 235, 43, 123, 150, }, { 205, 175, 197, 35, 105, 48, 47, 118, 205, 82, 15, 15, 151, 15, 101, 134, }, { 65, 110, 98, 200, 72, 202, 27, 153, 65, 229, 151, 151, 135, 151, 155, 253, }, { 206, 137, 248, 66, 235, 180, 111, 48, 206, 243, 183, 183, 11, 183, 198, 17, }, { 22, 238, 72, 54, 43, 7, 71, 107, 22, 255, 252, 252, 183, 252, 90, 112, }, { 108, 210, 88, 58, 96, 184, 20, 204, 108, 6, 196, 196, 94, 196, 78, 209, }, { 31, 28, 251, 210, 35, 29, 68, 122, 31, 30, 82, 82, 229, 82, 181, 19, }, { 224, 19, 255, 209, 65, 66, 32, 35, 224, 177, 92, 92, 78, 92, 176, 170, }, { 245, 219, 138, 134, 232, 193, 39, 14, 245, 239, 24, 24, 101, 24, 73, 77, }, { 176, 124, 5, 115, 155, 56, 125, 222, 176, 244, 236, 236, 241, 236, 149, 6, }, { 222, 43, 202, 182, 7, 120, 168, 215, 222, 141, 248, 248, 71, 248, 25, 140, }, { 3, 38, 61, 97, 130, 132, 64, 70, 3, 161, 184, 184, 156, 184, 163, 151, }, { 208, 54, 169, 14, 182, 213, 170, 201, 208, 51, 141, 141, 154, 141, 18, 206, }, { 142, 68, 48, 20, 221, 2, 245, 42, 142, 200, 72, 72, 248, 72, 60, 32, }, { 35, 161, 89, 74, 153, 223, 13, 75, 35, 93, 38, 38, 4, 38, 222, 110, }, { 10, 212, 142, 133, 138, 158, 67, 87, 10, 64, 22, 22, 206, 22, 76, 244, }, { 243, 151, 240, 68, 47, 10, 167, 130, 243, 110, 171, 171, 158, 171, 204, 160, }, { 6, 76, 122, 194, 199, 203, 128, 140, 6, 129, 179, 179, 251, 179, 133, 237, }, { 223, 136, 96, 40, 121, 4, 41, 84, 223, 83, 144, 144, 51, 144, 120, 64, }, { 77, 246, 150, 143, 5, 159, 216, 66, 77, 36, 50, 50, 178, 50, 82, 228, }, { 152, 170, 120, 34, 246, 5, 178, 65, 152, 55, 180, 180, 79, 180, 102, 80, }, { 151, 20, 177, 4, 57, 212, 49, 220, 151, 87, 169, 169, 230, 169, 12, 222, }, { 173, 229, 105, 94, 68, 221, 248, 97, 173, 149, 110, 110, 252, 110, 226, 78, }, { 21, 200, 117, 87, 169, 131, 7, 45, 21, 94, 68, 68, 43, 68, 249, 231, }, { 162, 91, 160, 120, 139, 12, 123, 252, 162, 245, 115, 115, 85, 115, 136, 192, }, { 171, 169, 19, 156, 131, 22, 120, 237, 171, 20, 221, 221, 7, 221, 103, 163, }, { 192, 148, 155, 250, 90, 25, 109, 46, 192, 77, 194, 194, 214, 194, 205, 83, }, { 182, 48, 127, 177, 92, 243, 253, 82, 182, 117, 95, 95, 10, 95, 16, 235, }, { 83, 73, 199, 195, 88, 254, 29, 187, 83, 228, 8, 8, 35, 8, 134, 59, }, { 237, 40, 161, 8, 114, 107, 98, 123, 237, 174, 145, 145, 15, 145, 24, 127, }, { 193, 55, 49, 100, 36, 101, 236, 173, 193, 147, 170, 170, 162, 170, 172, 159, }, { 225, 176, 85, 79, 63, 62, 161, 160, 225, 111, 52, 52, 58, 52, 209, 102, }, { 98, 207, 59, 130, 209, 21, 22, 210, 98, 184, 177, 177, 131, 177, 69, 147, }, { 36, 78, 137, 22, 32, 104, 12, 68, 36, 2, 253, 253, 139, 253, 58, 79, }, { 233, 225, 76, 53, 73, 88, 35, 50, 233, 80, 242, 242, 28, 242, 95, 201, }, { 101, 32, 235, 222, 104, 162, 23, 221, 101, 231, 106, 106, 12, 106, 161, 178, }, { 236, 139, 11, 150, 12, 23, 227, 248, 236, 112, 249, 249, 123, 249, 121, 179, }, { 93, 84, 164, 123, 233, 83, 31, 165, 93, 90, 125, 125, 254, 125, 141, 121, }, { 38, 203, 30, 233, 220, 144, 205, 129, 38, 125, 45, 45, 99, 45, 248, 20, }, { 190, 97, 102, 203, 42, 149, 127, 192, 190, 74, 153, 153, 44, 153, 158, 68, }, { 33, 36, 206, 181, 101, 39, 204, 142, 33, 34, 246, 246, 236, 246, 28, 53, }, { 75, 186, 236, 77, 194, 84, 88, 206, 75, 165, 129, 129, 73, 129, 215, 9, }, { 72, 156, 209, 44, 64, 208, 24, 136, 72, 4, 57, 57, 213, 57, 116, 158, }, { 202, 64, 21, 127, 208, 135, 46, 121, 202, 13, 212, 212, 24, 212, 129, 167, }, { 247, 94, 29, 121, 20, 57, 230, 203, 247, 144, 200, 200, 141, 200, 139, 22, }, { 124, 112, 106, 206, 140, 116, 211, 43, 124, 120, 139, 139, 18, 139, 145, 76, }, { 255, 15, 4, 3, 98, 95, 100, 89, 255, 175, 14, 14, 171, 14, 5, 185, }, { 32, 135, 100, 43, 27, 91, 77, 13, 32, 252, 158, 158, 152, 158, 125, 249, }, { 209, 149, 3, 144, 200, 169, 43, 74, 209, 237, 229, 229, 238, 229, 115, 2, }, { 133, 51, 20, 15, 41, 224, 55, 254, 133, 86, 54, 54, 66, 54, 17, 24, }, { 88, 62, 227, 216, 172, 28, 223, 111, 88, 122, 118, 118, 153, 118, 171, 3, }, { 73, 63, 123, 178, 62, 172, 153, 11, 73, 218, 81, 81, 161, 81, 21, 82, }, { 250, 101, 67, 160, 39, 16, 164, 147, 250, 143, 5, 5, 204, 5, 35, 195, }, { 135, 182, 131, 240, 213, 24, 246, 59, 135, 41, 230, 230, 170, 230, 211, 67, }, { 39, 104, 180, 119, 162, 236, 76, 2, 39, 163, 69, 69, 23, 69, 153, 216, }, { 232, 66, 230, 171, 55, 36, 162, 177, 232, 142, 154, 154, 104, 154, 62, 5, }, { 244, 120, 32, 24, 150, 189, 166, 141, 244, 49, 112, 112, 17, 112, 40, 129, }, { 90, 187, 116, 39, 80, 228, 30, 170, 90, 5, 166, 166, 113, 166, 105, 88, }, { 102, 6, 214, 191, 234, 38, 87, 155, 102, 70, 210, 210, 144, 210, 2, 37, }, { 240, 177, 205, 37, 173, 142, 231, 196, 240, 207, 19, 19, 2, 19, 111, 55, }, { 203, 227, 191, 225, 174, 251, 175, 250, 203, 211, 188, 188, 108, 188, 224, 107, }, { 14, 29, 99, 184, 177, 173, 2, 30, 14, 190, 117, 117, 221, 117, 11, 66, }, { 226, 150, 104, 46, 189, 186, 225, 230, 226, 206, 140, 140, 166, 140, 114, 241, }, { 87, 128, 42, 254, 99, 205, 92, 242, 87, 26, 107, 107, 48, 107, 193, 141, }, { 196, 93, 118, 199, 97, 42, 44, 103, 196, 179, 161, 161, 197, 161, 138, 229, }, { 155, 140, 69, 67, 116, 129, 242, 7, 155, 150, 12, 12, 211, 12, 197, 199, }, { 238, 14, 156, 105, 240, 239, 34, 61, 238, 15, 41, 41, 147, 41, 187, 232, }, { 26, 118, 188, 113, 102, 82, 132, 176, 26, 62, 89, 89, 130, 89, 147, 105, }, { 55, 202, 134, 131, 78, 32, 139, 229, 55, 221, 10, 10, 91, 10, 70, 69, }, { 46, 154, 7, 147, 170, 246, 79, 19, 46, 66, 235, 235, 69, 235, 118, 187, }, { 105, 184, 31, 153, 37, 247, 212, 6, 105, 38, 207, 207, 57, 207, 104, 171, }, { 139, 46, 119, 183, 152, 77, 53, 224, 139, 232, 67, 67, 159, 67, 26, 90, }, { 175, 96, 254, 161, 184, 37, 57, 164, 175, 234, 190, 190, 20, 190, 32, 21, }, { 194, 17, 12, 5, 166, 225, 172, 235, 194, 50, 18, 18, 62, 18, 15, 8, }, { 127, 86, 87, 175, 14, 240, 147, 109, 127, 217, 51, 51, 142, 51, 50, 219, }, { 100, 131, 65, 64, 22, 222, 150, 94, 100, 57, 2, 2, 120, 2, 192, 126, }, { 69, 167, 143, 245, 115, 249, 90, 208, 69, 27, 244, 244, 148, 244, 220, 75, }, { 20, 107, 223, 201, 215, 255, 134, 174, 20, 128, 44, 44, 95, 44, 152, 43, }, { 253, 138, 147, 252, 158, 167, 165, 156, 253, 208, 222, 222, 67, 222, 199, 226, }, { 172, 70, 195, 192, 58, 161, 121, 226, 172, 75, 6, 6, 136, 6, 131, 130, }, { 134, 21, 41, 110, 171, 100, 119, 184, 134, 247, 142, 142, 222, 142, 178, 143, }, { 118, 164, 228, 75, 6, 234, 144, 124, 118, 56, 157, 157, 220, 157, 221, 184, }, { 67, 235, 245, 55, 180, 50, 218, 92, 67, 154, 71, 71, 111, 71, 89, 166, }, { 80, 111, 250, 162, 218, 122, 93, 253, 80, 69, 176, 176, 191, 176, 37, 172, }, { 40, 214, 125, 81, 109, 61, 207, 159, 40, 195, 88, 88, 190, 88, 243, 86, }, { 170, 10, 185, 2, 253, 106, 249, 110, 170, 202, 181, 181, 115, 181, 6, 111, }, { 94, 114, 153, 26, 107, 215, 95, 227, 94, 251, 197, 197, 98, 197, 46, 238, }, { 221, 13, 247, 215, 133, 252, 232, 145, 221, 44, 64, 64, 219, 64, 186, 27, }, { 187, 11, 33, 104, 111, 218, 191, 10, 187, 106, 146, 146, 75, 146, 184, 62, }, { 150, 183, 27, 154, 71, 168, 176, 95, 150, 137, 193, 193, 146, 193, 109, 18, }, { 5, 106, 71, 163, 69, 79, 192, 202, 5, 32, 11, 11, 103, 11, 38, 122, }, { 123, 159, 186, 146, 53, 195, 210, 36, 123, 39, 80, 80, 157, 80, 117, 109, }, { 246, 253, 183, 231, 106, 69, 103, 72, 246, 78, 160, 160, 249, 160, 234, 218, }, { 43, 240, 64, 48, 239, 185, 143, 217, 43, 98, 224, 224, 34, 224, 80, 193, }, { 9, 242, 179, 228, 8, 26, 3, 17, 9, 225, 174, 174, 82, 174, 239, 99, }, { 199, 123, 75, 166, 227, 174, 108, 33, 199, 18, 25, 25, 89, 25, 41, 114, }, { 70, 129, 178, 148, 241, 125, 26, 150, 70, 186, 76, 76, 8, 76, 127, 220, }, { 13, 59, 94, 217, 51, 41, 66, 88, 13, 31, 205, 205, 65, 205, 168, 213, }, { 19, 132, 15, 149, 110, 72, 135, 161, 19, 223, 247, 247, 208, 247, 124, 10, }, { 97, 233, 6, 227, 83, 145, 86, 148, 97, 25, 9, 9, 31, 9, 230, 4, }, { 1, 163, 170, 158, 126, 124, 129, 131, 1, 222, 104, 104, 116, 104, 97, 204, }, { 239, 173, 54, 247, 142, 147, 163, 190, 239, 209, 65, 65, 231, 65, 218, 36, }, { 141, 98, 13, 117, 95, 134, 181, 108, 141, 105, 240, 240, 100, 240, 159, 183, }, { 211, 16, 148, 111, 52, 81, 234, 143, 211, 146, 53, 53, 6, 53, 177, 89, }, { 188, 228, 241, 52, 214, 109, 190, 5, 188, 53, 73, 73, 196, 73, 92, 31, }, { 241, 18, 103, 187, 211, 242, 102, 71, 241, 17, 123, 123, 118, 123, 14, 251, }, { 50, 160, 193, 32, 11, 111, 75, 47, 50, 253, 1, 1, 60, 1, 96, 63, }, { 92, 247, 14, 229, 151, 47, 158, 38, 92, 132, 21, 21, 138, 21, 236, 181, }, { 2, 133, 151, 255, 252, 248, 193, 197, 2, 127, 208, 208, 232, 208, 194, 91, }, { 177, 223, 175, 237, 229, 68, 252, 93, 177, 42, 132, 132, 133, 132, 244, 202, }, { 86, 35, 128, 96, 29, 177, 221, 113, 86, 196, 3, 3, 68, 3, 160, 65, }, { 81, 204, 80, 60, 164, 6, 220, 126, 81, 155, 216, 216, 203, 216, 68, 96, }, { 201, 102, 40, 30, 82, 3, 110, 63, 201, 172, 108, 108, 132, 108, 34, 48, }, { 214, 122, 211, 204, 113, 30, 42, 69, 214, 178, 62, 62, 97, 62, 151, 35, }, { 78, 208, 171, 238, 135, 27, 152, 4, 78, 133, 138, 138, 46, 138, 241, 115, }, { 200, 197, 130, 128, 44, 127, 239, 188, 200, 114, 4, 4, 240, 4, 67, 252, }, { 160, 222, 55, 135, 119, 244, 186, 57, 160, 138, 163, 163, 189, 163, 74, 155, }, { 49, 134, 252, 65, 137, 235, 11, 105, 49, 92, 185, 185, 160, 185, 195, 168, }, { 34, 2, 243, 212, 231, 163, 140, 200, 34, 131, 78, 78, 112, 78, 191, 162, }, { 165, 180, 112, 36, 50, 187, 122, 243, 165, 170, 168, 168, 218, 168, 108, 225, }, { 23, 77, 226, 168, 85, 123, 198, 232, 23, 33, 148, 148, 195, 148, 59, 188, }, { 51, 3, 107, 190, 117, 19, 202, 172, 51, 35, 105, 105, 72, 105, 1, 243, }, { 148, 50, 140, 101, 187, 80, 113, 154, 148, 246, 17, 17, 122, 17, 175, 73, }, { 235, 100, 219, 202, 181, 160, 226, 247, 235, 47, 34, 34, 244, 34, 157, 146, }, { 132, 144, 190, 145, 87, 156, 182, 125, 132, 136, 94, 94, 54, 94, 112, 212, }, { 8, 81, 25, 122, 118, 102, 130, 146, 8, 63, 198, 198, 38, 198, 142, 175, }, { 37, 237, 35, 136, 94, 20, 141, 199, 37, 220, 149, 149, 255, 149, 91, 131, }, { 249, 67, 126, 193, 165, 148, 228, 213, 249, 46, 189, 189, 80, 189, 128, 84, }, { 57, 215, 229, 59, 255, 141, 137, 251, 57, 99, 127, 127, 134, 127, 77, 7, }, { 96, 74, 172, 125, 45, 237, 215, 23, 96, 199, 97, 97, 107, 97, 135, 200, }, { 178, 249, 146, 140, 103, 192, 188, 27, 178, 139, 60, 60, 25, 60, 87, 93, }, { 212, 255, 68, 51, 141, 230, 235, 128, 212, 205, 238, 238, 137, 238, 85, 120, }, { 111, 244, 101, 91, 226, 60, 84, 138, 111, 167, 124, 124, 194, 124, 237, 70, }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, { 109, 113, 242, 164, 30, 196, 149, 79, 109, 216, 172, 172, 42, 172, 47, 29, }, { 161, 125, 157, 25, 9, 136, 59, 186, 161, 84, 203, 203, 201, 203, 43, 87, }, { 18, 39, 165, 11, 16, 52, 6, 34, 18, 1, 159, 159, 164, 159, 29, 198, }, { 216, 103, 176, 116, 192, 179, 40, 91, 216, 12, 75, 75, 188, 75, 156, 97, }, { 163, 248, 10, 230, 245, 112, 250, 127, 163, 43, 27, 27, 33, 27, 233, 12, }, { 164, 23, 218, 186, 76, 199, 251, 112, 164, 116, 192, 192, 174, 192, 13, 45, }, { 207, 42, 82, 220, 149, 200, 238, 179, 207, 45, 223, 223, 127, 223, 167, 221, }, { 154, 47, 239, 221, 10, 253, 115, 132, 154, 72, 100, 100, 167, 100, 164, 11, }, { 204, 12, 111, 189, 23, 76, 174, 245, 204, 140, 103, 103, 227, 103, 4, 74, }, { 82, 234, 109, 93, 38, 130, 156, 56, 82, 58, 96, 96, 87, 96, 231, 247, }, { 28, 58, 198, 179, 161, 153, 4, 60, 28, 191, 234, 234, 121, 234, 22, 132, }, { 47, 57, 173, 13, 212, 138, 206, 144, 47, 156, 131, 131, 49, 131, 23, 119, }, { 126, 245, 253, 49, 112, 140, 18, 238, 126, 7, 91, 91, 250, 91, 83, 23, }, { 147, 221, 92, 57, 2, 231, 112, 149, 147, 169, 202, 202, 245, 202, 75, 104, }, { 66, 72, 95, 169, 202, 78, 91, 223, 66, 68, 47, 47, 27, 47, 56, 106, }, { 179, 90, 56, 18, 25, 188, 61, 152, 179, 85, 84, 84, 109, 84, 54, 145, }, { 24, 243, 43, 142, 154, 170, 69, 117, 24, 65, 137, 137, 106, 137, 81, 50, }, { 184, 45, 28, 9, 237, 94, 255, 76, 184, 203, 42, 42, 215, 42, 27, 169, }, { 252, 41, 57, 98, 224, 219, 36, 31, 252, 14, 182, 182, 55, 182, 166, 46, }, { 68, 4, 37, 107, 13, 133, 219, 83, 68, 197, 156, 156, 224, 156, 189, 135, }, { 230, 95, 133, 19, 134, 137, 160, 175, 230, 48, 239, 239, 181, 239, 53, 71, }, { 140, 193, 167, 235, 33, 250, 52, 239, 140, 183, 152, 152, 16, 152, 254, 123, }, { 198, 216, 225, 56, 157, 210, 237, 162, 198, 204, 113, 113, 45, 113, 72, 190, }, { 99, 108, 145, 28, 175, 105, 151, 81, 99, 102, 217, 217, 247, 217, 36, 95, }, { 191, 194, 204, 85, 84, 233, 254, 67, 191, 148, 241, 241, 88, 241, 255, 136, }, { 242, 52, 90, 218, 81, 118, 38, 1, 242, 176, 195, 195, 234, 195, 173, 108, }, { 44, 31, 144, 108, 86, 14, 142, 214, 44, 61, 59, 59, 173, 59, 180, 224, }, { 17, 1, 152, 106, 146, 176, 70, 100, 17, 160, 39, 39, 56, 39, 190, 81, }, { 115, 206, 163, 232, 67, 165, 80, 182, 115, 24, 150, 150, 187, 150, 251, 194, }, { 220, 174, 93, 73, 251, 128, 105, 18, 220, 242, 40, 40, 175, 40, 219, 215, }, { 217, 196, 26, 234, 190, 207, 169, 216, 217, 210, 35, 35, 200, 35, 253, 173, }, { 146, 126, 246, 167, 124, 155, 241, 22, 146, 119, 162, 162, 129, 162, 42, 164, }, { 62, 56, 53, 103, 70, 58, 136, 244, 62, 60, 164, 164, 9, 164, 169, 38, }, { 210, 179, 62, 241, 74, 45, 107, 12, 210, 76, 93, 93, 114, 93, 208, 149, }, { 89, 157, 73, 70, 210, 96, 94, 236, 89, 164, 30, 30, 237, 30, 202, 207, }, { 117, 130, 217, 42, 132, 110, 208, 58, 117, 153, 37, 37, 64, 37, 126, 47, }, { 25, 80, 129, 16, 228, 214, 196, 246, 25, 159, 225, 225, 30, 225, 48, 254, }, { 180, 181, 232, 78, 160, 11, 60, 151, 180, 10, 143, 143, 226, 143, 210, 176, }, { 129, 250, 249, 50, 18, 211, 118, 183, 129, 168, 85, 85, 81, 85, 86, 174, }, { 228, 218, 18, 236, 122, 113, 97, 106, 228, 79, 63, 63, 93, 63, 247, 28, }, { 229, 121, 184, 114, 4, 13, 224, 233, 229, 145, 87, 87, 41, 87, 150, 208, }, { 15, 190, 201, 38, 207, 209, 131, 157, 15, 96, 29, 29, 169, 29, 106, 142, }, { 71, 34, 24, 10, 143, 1, 155, 21, 71, 100, 36, 36, 124, 36, 30, 16, }, { 156, 99, 149, 31, 205, 54, 243, 8, 156, 201, 215, 215, 92, 215, 33, 230, }, { 42, 83, 234, 174, 145, 197, 14, 90, 42, 188, 136, 136, 86, 136, 49, 13, }, { 168, 143, 46, 253, 1, 146, 56, 171, 168, 181, 101, 101, 155, 101, 196, 52, }, { 91, 24, 222, 185, 46, 152, 159, 41, 91, 219, 206, 206, 5, 206, 8, 148, }, { 143, 231, 154, 138, 163, 126, 116, 169, 143, 22, 32, 32, 140, 32, 93, 236, }, { 4, 201, 237, 61, 59, 51, 65, 73, 4, 254, 99, 99, 19, 99, 71, 182, }, { 166, 146, 77, 69, 176, 63, 58, 181, 166, 11, 16, 16, 70, 16, 207, 118, }, { 114, 109, 9, 118, 61, 217, 209, 53, 114, 198, 254, 254, 207, 254, 154, 14, }, { 186, 168, 139, 246, 17, 166, 62, 137, 186, 180, 250, 250, 63, 250, 217, 242, }, { 48, 37, 86, 223, 247, 151, 138, 234, 48, 130, 209, 209, 212, 209, 162, 100, }, { 76, 85, 60, 17, 123, 227, 89, 193, 76, 250, 90, 90, 198, 90, 51, 40, }, { 130, 220, 196, 83, 144, 87, 54, 241, 130, 9, 237, 237, 205, 237, 245, 57, }, { 106, 158, 34, 248, 167, 115, 148, 64, 106, 135, 119, 119, 165, 119, 203, 60, }, { 136, 8, 74, 214, 26, 201, 117, 166, 136, 73, 251, 251, 3, 251, 185, 205, }, { 60, 189, 162, 152, 186, 194, 73, 49, 60, 67, 116, 116, 225, 116, 107, 125, }, { 110, 87, 207, 197, 156, 64, 213, 9, 110, 121, 20, 20, 182, 20, 140, 138, }, { 11, 119, 36, 27, 244, 226, 194, 212, 11, 158, 126, 126, 186, 126, 45, 56, }, { 158, 230, 2, 224, 49, 206, 50, 205, 158, 182, 7, 7, 180, 7, 227, 189, }, { 104, 27, 181, 7, 91, 139, 85, 133, 104, 248, 167, 167, 77, 167, 9, 103, }, { 103, 165, 124, 33, 148, 90, 214, 24, 103, 152, 186, 186, 228, 186, 99, 233, }, { 197, 254, 220, 89, 31, 86, 173, 228, 197, 109, 201, 201, 177, 201, 235, 41, }, { 116, 33, 115, 180, 250, 18, 81, 185, 116, 71, 77, 77, 52, 77, 31, 227, }, { 64, 205, 200, 86, 54, 182, 154, 26, 64, 59, 255, 255, 243, 255, 250, 49, }, { 12, 152, 244, 71, 77, 85, 195, 219, 12, 193, 165, 165, 53, 165, 201, 25, }, { 231, 252, 47, 141, 248, 245, 33, 44, 231, 238, 135, 135, 193, 135, 84, 139, }, { 157, 192, 63, 129, 179, 74, 114, 139, 157, 23, 191, 191, 40, 191, 64, 42, }, { 144, 251, 97, 88, 128, 99, 48, 211, 144, 8, 114, 114, 105, 114, 232, 255, }, { 122, 60, 16, 12, 75, 191, 83, 167, 122, 249, 56, 56, 233, 56, 20, 161, }, { 58, 241, 216, 90, 125, 9, 201, 189, 58, 194, 199, 199, 26, 199, 238, 144, }, { 53, 79, 17, 124, 178, 216, 74, 32, 53, 162, 218, 218, 179, 218, 132, 30, }, { 52, 236, 187, 226, 204, 164, 203, 163, 52, 124, 178, 178, 199, 178, 229, 210, }, { 159, 69, 168, 126, 79, 178, 179, 78, 159, 104, 111, 111, 192, 111, 130, 113, }, { 183, 147, 213, 47, 34, 143, 124, 209, 183, 171, 55, 55, 126, 55, 113, 39, }, { 248, 224, 212, 95, 219, 232, 101, 86, 248, 240, 213, 213, 36, 213, 225, 152, }, { 79, 115, 1, 112, 249, 103, 25, 135, 79, 91, 226, 226, 90, 226, 144, 191, }, { 107, 61, 136, 102, 217, 15, 21, 195, 107, 89, 31, 31, 209, 31, 170, 240, }, { 131, 127, 110, 205, 238, 43, 183, 114, 131, 215, 133, 133, 185, 133, 148, 245, }, { 95, 209, 51, 132, 21, 171, 222, 96, 95, 37, 173, 173, 22, 173, 79, 34, }, { 167, 49, 231, 219, 206, 67, 187, 54, 167, 213, 120, 120, 50, 120, 174, 186, }, { 30, 191, 81, 76, 93, 97, 197, 249, 30, 192, 58, 58, 145, 58, 212, 223, }, { 16, 162, 50, 244, 236, 204, 199, 231, 16, 126, 79, 79, 76, 79, 223, 157, }, { 195, 178, 166, 155, 216, 157, 45, 104, 195, 236, 122, 122, 74, 122, 110, 196, }, { 120, 185, 135, 243, 183, 71, 146, 98, 120, 134, 232, 232, 1, 232, 214, 250, }, { 45, 188, 58, 242, 40, 114, 15, 85, 45, 227, 83, 83, 217, 83, 213, 44, }, { 119, 7, 78, 213, 120, 150, 17, 255, 119, 230, 245, 245, 168, 245, 188, 116, }, { 227, 53, 194, 176, 195, 198, 96, 101, 227, 16, 228, 228, 210, 228, 19, 61, }, { 128, 89, 83, 172, 108, 175, 247, 52, 128, 118, 61, 61, 37, 61, 55, 98, }, }, { { 10, 175, 69, 110, 246, 115, 86, 251, 71, 28, 213, 200, 102, 44, 100, 181, }, { 202, 82, 104, 229, 36, 91, 217, 8, 235, 30, 224, 94, 172, 107, 47, 10, }, { 243, 128, 246, 117, 46, 106, 197, 203, 120, 88, 208, 207, 8, 149, 134, 137, }, { 23, 78, 203, 112, 6, 174, 181, 65, 113, 131, 16, 206, 221, 235, 103, 192, }, { 51, 125, 219, 254, 252, 66, 74, 56, 212, 90, 229, 89, 194, 210, 205, 54, }, { 95, 40, 235, 175, 49, 181, 136, 179, 248, 242, 57, 35, 227, 153, 240, 239, }, { 163, 177, 155, 131, 146, 116, 48, 31, 5, 184, 183, 64, 190, 54, 32, 104, }, { 55, 59, 39, 173, 33, 162, 215, 136, 67, 61, 248, 247, 254, 20, 154, 170, }, { 42, 218, 169, 179, 209, 127, 52, 50, 117, 162, 61, 241, 69, 211, 153, 223, }, { 201, 129, 41, 73, 13, 19, 192, 124, 20, 165, 153, 195, 189, 216, 128, 99, }, { 103, 10, 74, 91, 157, 188, 34, 92, 62, 221, 159, 120, 72, 183, 60, 75, }, { 211, 245, 26, 168, 9, 102, 167, 2, 74, 230, 56, 246, 43, 106, 123, 227, }, { 99, 76, 182, 8, 64, 92, 191, 236, 169, 186, 130, 214, 116, 113, 107, 215, }, { 132, 81, 202, 161, 65, 208, 214, 18, 95, 218, 59, 74, 176, 188, 37, 247, }, { 247, 198, 10, 38, 243, 138, 88, 123, 239, 63, 205, 97, 52, 83, 209, 21, }, { 60, 100, 93, 167, 113, 233, 55, 95, 81, 72, 187, 245, 151, 232, 155, 56, }, { 234, 39, 132, 56, 3, 87, 187, 193, 217, 160, 8, 103, 143, 148, 210, 96, }, { 101, 41, 52, 147, 18, 204, 141, 4, 148, 15, 112, 47, 86, 212, 246, 5, }, { 208, 38, 91, 4, 32, 46, 190, 118, 181, 93, 65, 107, 58, 217, 212, 138, }, { 158, 37, 249, 64, 69, 165, 177, 108, 1, 153, 154, 127, 38, 14, 222, 119, }, { 24, 87, 77, 41, 139, 5, 200, 38, 244, 145, 78, 98, 136, 209, 49, 206, }, { 244, 21, 75, 138, 218, 194, 65, 15, 16, 132, 180, 252, 37, 224, 126, 124, }, { 175, 123, 92, 118, 54, 151, 84, 12, 127, 17, 144, 113, 250, 191, 217, 15, }, { 204, 55, 234, 126, 118, 203, 235, 224, 214, 171, 18, 167, 142, 206, 178, 216, }, { 122, 235, 196, 69, 109, 97, 193, 230, 8, 66, 90, 126, 243, 112, 63, 62, }, { 131, 196, 119, 94, 181, 120, 82, 214, 55, 6, 95, 121, 157, 201, 221, 2, }, { 157, 246, 184, 236, 108, 237, 168, 24, 254, 34, 227, 226, 55, 189, 113, 30, }, { 129, 231, 9, 150, 58, 8, 253, 142, 157, 212, 176, 46, 131, 170, 23, 76, }, { 173, 88, 34, 190, 185, 231, 251, 84, 213, 195, 127, 38, 228, 220, 19, 65, }, { 169, 30, 222, 237, 100, 7, 102, 228, 66, 164, 98, 136, 216, 26, 68, 221, }, { 252, 153, 112, 44, 163, 193, 184, 172, 253, 74, 142, 99, 93, 175, 208, 135, }, { 115, 151, 192, 135, 178, 90, 142, 105, 176, 229, 246, 43, 132, 239, 244, 226, }, { 176, 185, 172, 160, 73, 58, 24, 238, 227, 92, 186, 32, 95, 27, 16, 52, }, { 119, 209, 60, 212, 111, 186, 19, 217, 39, 130, 235, 133, 184, 41, 163, 126, }, { 165, 212, 25, 24, 192, 228, 2, 247, 56, 13, 69, 185, 156, 147, 189, 186, }, { 70, 143, 153, 226, 28, 136, 246, 185, 89, 10, 225, 139, 100, 152, 164, 6, }, { 16, 219, 118, 143, 242, 6, 49, 133, 25, 95, 116, 253, 240, 158, 159, 53, }, { 43, 42, 150, 215, 119, 71, 130, 30, 32, 203, 171, 59, 74, 3, 252, 248, }, { 135, 130, 139, 13, 104, 152, 207, 102, 160, 97, 66, 215, 161, 15, 138, 158, }, { 249, 47, 179, 27, 216, 25, 147, 48, 63, 68, 5, 7, 110, 185, 226, 60, }, { 216, 170, 96, 162, 89, 45, 71, 213, 88, 147, 123, 244, 66, 150, 122, 113, }, { 128, 23, 54, 242, 156, 48, 75, 162, 200, 189, 38, 228, 140, 122, 114, 107, }, { 52, 232, 102, 1, 8, 234, 206, 252, 188, 134, 129, 106, 239, 167, 53, 195, }, { 49, 94, 165, 54, 115, 50, 229, 96, 126, 136, 10, 14, 220, 177, 7, 120, }, { 111, 134, 113, 253, 228, 191, 219, 255, 211, 19, 165, 231, 48, 248, 146, 176, }, { 77, 208, 227, 232, 76, 195, 22, 110, 75, 127, 162, 137, 13, 100, 165, 148, }, { 213, 144, 152, 51, 91, 246, 149, 234, 119, 83, 202, 15, 9, 207, 230, 49, }, { 166, 7, 88, 180, 233, 172, 27, 131, 199, 182, 60, 36, 141, 32, 18, 211, }, { 186, 22, 233, 206, 191, 73, 78, 21, 164, 64, 111, 232, 57, 55, 116, 129, }, { 98, 188, 137, 108, 230, 100, 9, 192, 252, 211, 20, 28, 123, 161, 14, 240, }, { 154, 99, 5, 19, 152, 69, 44, 220, 150, 254, 135, 209, 26, 200, 137, 235, }, { 97, 111, 200, 192, 207, 44, 16, 180, 3, 104, 109, 129, 106, 18, 161, 153, }, { 93, 11, 149, 103, 190, 197, 39, 235, 82, 32, 214, 116, 253, 250, 58, 161, }, { 168, 238, 225, 137, 194, 63, 208, 200, 23, 205, 244, 66, 215, 202, 33, 250, }, { 152, 64, 123, 219, 23, 53, 131, 132, 60, 44, 104, 134, 4, 171, 67, 165, }, { 33, 133, 211, 185, 129, 52, 212, 229, 103, 215, 126, 243, 44, 47, 152, 77, }, { 109, 165, 15, 53, 107, 207, 116, 167, 121, 193, 74, 176, 46, 155, 88, 254, }, { 250, 252, 242, 183, 241, 81, 138, 68, 192, 255, 124, 154, 127, 10, 77, 85, }, { 29, 225, 142, 30, 240, 221, 227, 186, 54, 159, 197, 6, 187, 199, 3, 117, }, { 226, 171, 191, 158, 122, 84, 66, 98, 52, 110, 50, 248, 247, 219, 124, 155, }, { 72, 102, 32, 223, 55, 27, 61, 242, 137, 113, 41, 237, 62, 114, 151, 47, }, { 147, 31, 1, 209, 71, 126, 99, 83, 46, 89, 43, 132, 109, 87, 66, 55, }, { 179, 106, 237, 12, 96, 114, 1, 154, 28, 231, 195, 189, 78, 168, 191, 93, }, { 87, 164, 208, 9, 72, 182, 113, 16, 21, 60, 3, 188, 155, 214, 94, 20, }, { 112, 68, 129, 43, 155, 18, 151, 29, 79, 94, 143, 182, 149, 92, 91, 139, }, { 25, 167, 114, 77, 45, 61, 126, 10, 161, 248, 216, 168, 135, 1, 84, 233, }, { 110, 118, 78, 153, 66, 135, 109, 211, 134, 122, 51, 45, 63, 40, 247, 151, }, { 188, 115, 107, 85, 237, 217, 124, 253, 153, 245, 157, 17, 27, 146, 233, 83, }, { 61, 148, 98, 195, 215, 209, 129, 115, 4, 33, 45, 63, 152, 56, 254, 31, }, { 19, 8, 55, 35, 219, 78, 40, 241, 230, 228, 13, 96, 225, 45, 48, 92, }, { 134, 114, 180, 105, 206, 160, 121, 74, 245, 8, 212, 29, 174, 223, 239, 185, }, { 219, 121, 33, 14, 112, 101, 94, 161, 167, 40, 2, 105, 83, 37, 213, 24, }, { 74, 69, 94, 23, 184, 107, 146, 170, 35, 163, 198, 186, 32, 17, 93, 97, }, { 3, 211, 65, 172, 41, 72, 25, 116, 255, 187, 121, 157, 17, 179, 175, 105, }, { 50, 141, 228, 154, 90, 122, 252, 20, 129, 51, 115, 147, 205, 2, 168, 17, }, { 187, 230, 214, 170, 25, 113, 248, 57, 241, 41, 249, 34, 54, 231, 17, 166, }, { 71, 127, 166, 134, 186, 176, 64, 149, 12, 99, 119, 65, 107, 72, 193, 33, }, { 89, 77, 105, 52, 99, 37, 186, 91, 197, 71, 203, 218, 193, 60, 109, 61, }, { 126, 173, 56, 22, 176, 129, 92, 86, 159, 37, 71, 208, 207, 182, 104, 162, }, { 228, 206, 61, 5, 40, 196, 112, 138, 9, 219, 192, 1, 213, 126, 225, 73, }, { 193, 13, 18, 239, 116, 16, 57, 223, 249, 107, 163, 92, 197, 151, 46, 152, }, { 69, 92, 216, 78, 53, 192, 239, 205, 166, 177, 152, 22, 117, 43, 11, 111, }, { 64, 234, 27, 121, 78, 24, 196, 81, 100, 191, 19, 114, 70, 61, 57, 212, }, { 156, 6, 135, 136, 202, 213, 30, 52, 171, 75, 117, 40, 56, 109, 20, 57, }, { 45, 79, 20, 76, 37, 215, 176, 246, 29, 126, 89, 194, 104, 166, 97, 42, }, { 218, 137, 30, 106, 214, 93, 232, 141, 242, 65, 148, 163, 92, 245, 176, 63, }, { 40, 249, 215, 123, 94, 15, 155, 106, 223, 112, 210, 166, 91, 176, 83, 145, }, { 192, 253, 45, 139, 210, 40, 143, 243, 172, 2, 53, 150, 202, 71, 75, 191, }, { 118, 33, 3, 176, 201, 130, 165, 245, 114, 235, 125, 79, 183, 249, 198, 89, }, { 223, 63, 221, 93, 173, 133, 195, 17, 48, 79, 31, 199, 111, 227, 130, 132, }, { 141, 45, 206, 99, 158, 235, 153, 157, 231, 125, 151, 31, 199, 35, 238, 43, }, { 139, 72, 76, 248, 204, 123, 171, 117, 218, 200, 101, 230, 229, 134, 115, 249, }, { 21, 109, 181, 184, 137, 222, 26, 25, 219, 81, 255, 153, 195, 136, 173, 142, }, { 91, 110, 23, 252, 236, 85, 21, 3, 111, 149, 36, 141, 223, 95, 167, 115, }, { 102, 250, 117, 63, 59, 132, 148, 112, 107, 180, 9, 178, 71, 103, 89, 108, }, { 181, 15, 111, 151, 50, 226, 51, 114, 33, 82, 49, 68, 108, 13, 34, 143, }, { 224, 136, 193, 86, 245, 36, 237, 58, 158, 188, 221, 175, 233, 184, 182, 213, }, { 108, 85, 48, 81, 205, 247, 194, 139, 44, 168, 220, 122, 33, 75, 61, 217, }, { 162, 65, 164, 231, 52, 76, 134, 51, 80, 209, 33, 138, 177, 230, 69, 79, }, { 212, 96, 167, 87, 253, 206, 35, 198, 34, 58, 92, 197, 6, 31, 131, 22, }, { 90, 158, 40, 152, 74, 109, 163, 47, 58, 252, 178, 71, 208, 143, 194, 84, }, { 191, 160, 42, 249, 196, 145, 101, 137, 102, 78, 228, 140, 10, 33, 70, 58, }, { 120, 200, 186, 141, 226, 17, 110, 190, 162, 144, 181, 41, 237, 19, 245, 112, }, { 30, 50, 207, 178, 217, 149, 250, 206, 201, 36, 188, 155, 170, 116, 172, 28, }, { 7, 149, 189, 255, 244, 168, 132, 196, 104, 220, 100, 51, 45, 117, 248, 245, }, { 130, 52, 72, 58, 19, 64, 228, 250, 98, 111, 201, 179, 146, 25, 184, 37, }, { 104, 19, 204, 2, 16, 23, 95, 59, 187, 207, 193, 212, 29, 141, 106, 69, }, { 18, 248, 8, 71, 125, 118, 158, 221, 179, 141, 155, 170, 238, 253, 85, 123, }, { 88, 189, 86, 80, 197, 29, 12, 119, 144, 46, 93, 16, 206, 236, 8, 26, }, { 143, 14, 176, 171, 17, 155, 54, 197, 77, 175, 120, 72, 217, 64, 36, 101, }, { 225, 120, 254, 50, 83, 28, 91, 22, 203, 213, 75, 101, 230, 104, 211, 242, }, { 54, 203, 24, 201, 135, 154, 97, 164, 22, 84, 110, 61, 241, 196, 255, 141, }, { 116, 2, 125, 120, 70, 242, 10, 173, 216, 57, 146, 24, 169, 154, 12, 23, }, { 255, 74, 49, 128, 138, 137, 161, 216, 2, 241, 247, 254, 76, 28, 127, 238, }, { 58, 1, 223, 60, 35, 121, 5, 183, 108, 253, 73, 12, 181, 77, 6, 234, }, { 121, 56, 133, 233, 68, 41, 216, 146, 247, 249, 35, 227, 226, 195, 144, 87, }, { 221, 28, 163, 149, 34, 245, 108, 73, 154, 157, 240, 144, 113, 128, 72, 202, }, { 84, 119, 145, 165, 97, 254, 104, 100, 234, 135, 122, 33, 138, 101, 241, 125, }, { 34, 86, 146, 21, 168, 124, 205, 145, 152, 108, 7, 110, 61, 156, 55, 36, }, { 5, 182, 195, 55, 123, 216, 43, 156, 194, 14, 139, 100, 51, 22, 50, 187, }, { 136, 155, 13, 84, 229, 51, 178, 1, 37, 115, 28, 123, 244, 53, 220, 144, }, { 6, 101, 130, 155, 82, 144, 50, 232, 61, 181, 242, 249, 34, 165, 157, 210, }, { 83, 226, 44, 90, 149, 86, 236, 160, 130, 91, 30, 18, 167, 16, 9, 136, }, { 149, 122, 131, 74, 21, 238, 81, 187, 19, 236, 217, 125, 79, 242, 223, 229, }, { 233, 244, 197, 148, 42, 31, 162, 181, 38, 27, 113, 250, 158, 39, 125, 9, }, { 236, 66, 6, 163, 81, 199, 137, 41, 228, 21, 250, 158, 173, 49, 79, 178, }, { 151, 89, 253, 130, 154, 158, 254, 227, 185, 62, 54, 42, 81, 145, 21, 171, }, { 209, 214, 100, 96, 134, 22, 8, 90, 224, 52, 215, 161, 53, 9, 177, 173, }, { 105, 227, 243, 102, 182, 47, 233, 23, 238, 166, 87, 30, 18, 93, 15, 98, }, { 106, 48, 178, 202, 159, 103, 240, 99, 17, 29, 46, 131, 3, 238, 160, 11, }, { 67, 57, 90, 213, 103, 80, 221, 37, 155, 4, 106, 239, 87, 142, 150, 189, }, { 65, 26, 36, 29, 232, 32, 114, 125, 49, 214, 133, 184, 73, 237, 92, 243, }, { 174, 139, 99, 18, 144, 175, 226, 32, 42, 120, 6, 187, 245, 111, 188, 40, }, { 12, 202, 199, 245, 164, 227, 100, 19, 122, 169, 39, 49, 68, 137, 249, 103, }, { 124, 142, 70, 222, 63, 241, 243, 14, 53, 247, 168, 135, 209, 213, 162, 236, }, { 94, 216, 212, 203, 151, 141, 62, 159, 173, 155, 175, 233, 236, 73, 149, 200, }, { 68, 172, 231, 42, 147, 248, 89, 225, 243, 216, 14, 220, 122, 251, 110, 72, }, { 37, 195, 47, 234, 92, 212, 73, 85, 240, 176, 99, 93, 16, 233, 207, 209, }, { 9, 124, 4, 194, 223, 59, 79, 143, 184, 167, 172, 85, 119, 159, 203, 220, }, { 189, 131, 84, 49, 75, 225, 202, 209, 204, 156, 11, 219, 20, 66, 140, 116, }, { 159, 213, 198, 36, 227, 157, 7, 64, 84, 240, 12, 181, 41, 222, 187, 80, }, { 46, 156, 85, 224, 12, 159, 169, 130, 226, 197, 32, 95, 121, 21, 206, 67, }, { 27, 132, 12, 133, 162, 77, 209, 82, 11, 42, 55, 255, 153, 98, 158, 167, }, { 215, 179, 230, 251, 212, 134, 58, 178, 221, 129, 37, 88, 23, 172, 44, 127, }, { 138, 184, 115, 156, 106, 67, 29, 89, 143, 161, 243, 44, 234, 86, 22, 222, }, { 13, 58, 248, 145, 2, 219, 210, 63, 47, 192, 177, 251, 75, 89, 156, 64, }, { 80, 49, 109, 246, 188, 30, 245, 212, 125, 224, 103, 143, 182, 163, 166, 225, }, { 36, 51, 16, 142, 250, 236, 255, 121, 165, 217, 245, 151, 31, 57, 170, 246, }, { 242, 112, 201, 17, 136, 82, 115, 231, 45, 49, 70, 5, 7, 69, 227, 174, }, { 56, 34, 161, 244, 172, 9, 170, 239, 198, 47, 166, 91, 171, 46, 204, 164, }, { 123, 27, 251, 33, 203, 89, 119, 202, 93, 43, 204, 180, 252, 160, 90, 25, }, { 161, 146, 229, 75, 29, 4, 159, 71, 175, 106, 88, 23, 160, 85, 234, 38, }, { 190, 80, 21, 157, 98, 169, 211, 165, 51, 39, 114, 70, 5, 241, 35, 29, }, { 167, 247, 103, 208, 79, 148, 173, 175, 146, 223, 170, 238, 130, 240, 119, 244, }, { 153, 176, 68, 191, 177, 13, 53, 168, 105, 69, 254, 76, 11, 123, 38, 130, }, { 241, 163, 136, 189, 161, 26, 106, 147, 210, 138, 63, 152, 22, 246, 76, 199, }, { 235, 215, 187, 92, 165, 111, 13, 237, 140, 201, 158, 173, 128, 68, 183, 71, }, { 57, 210, 158, 144, 10, 49, 28, 195, 147, 70, 48, 145, 164, 254, 169, 131, }, { 183, 44, 17, 95, 189, 146, 156, 42, 139, 128, 222, 19, 114, 110, 232, 193, }, { 28, 17, 177, 122, 86, 229, 85, 150, 99, 246, 83, 204, 180, 23, 102, 82, }, { 1, 240, 63, 100, 166, 56, 182, 44, 85, 105, 150, 202, 15, 208, 101, 39, }, { 239, 145, 71, 15, 120, 143, 144, 93, 27, 174, 131, 3, 188, 130, 224, 219, }, { 31, 194, 240, 214, 127, 173, 76, 226, 156, 77, 42, 81, 165, 164, 201, 59, }, { 146, 239, 62, 181, 225, 70, 213, 127, 123, 48, 189, 78, 98, 135, 39, 16, }, { 26, 116, 51, 225, 4, 117, 103, 126, 94, 67, 161, 53, 150, 178, 251, 128, }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, { 133, 161, 245, 197, 231, 232, 96, 62, 10, 179, 173, 128, 191, 108, 64, 208, }, { 92, 251, 170, 3, 24, 253, 145, 199, 7, 73, 64, 190, 242, 42, 95, 134, }, { 237, 178, 57, 199, 247, 255, 63, 5, 177, 124, 108, 84, 162, 225, 42, 149, }, { 86, 84, 239, 109, 238, 142, 199, 60, 64, 85, 149, 118, 148, 6, 59, 51, }, { 195, 46, 108, 39, 251, 96, 150, 135, 83, 185, 76, 11, 219, 244, 228, 214, }, { 15, 25, 134, 89, 141, 171, 125, 103, 133, 18, 94, 172, 85, 58, 86, 14, }, { 232, 4, 250, 240, 140, 39, 20, 153, 115, 114, 231, 48, 145, 247, 24, 46, }, { 194, 222, 83, 67, 93, 88, 32, 171, 6, 208, 218, 193, 212, 36, 129, 241, }, { 217, 90, 95, 198, 255, 21, 241, 249, 13, 250, 237, 62, 77, 70, 31, 86, }, { 230, 237, 67, 205, 167, 180, 223, 210, 163, 9, 47, 86, 203, 29, 43, 7, }, { 182, 220, 46, 59, 27, 170, 42, 6, 222, 233, 72, 217, 125, 190, 141, 230, }, { 17, 43, 73, 235, 84, 62, 135, 169, 76, 54, 226, 55, 255, 78, 250, 18, }, { 198, 152, 175, 16, 128, 184, 189, 27, 145, 183, 199, 111, 232, 226, 214, 109, }, { 85, 135, 174, 193, 199, 198, 222, 72, 191, 238, 236, 235, 133, 181, 148, 90, }, { 148, 138, 188, 46, 179, 214, 231, 151, 70, 133, 79, 183, 64, 34, 186, 194, }, { 177, 73, 147, 196, 239, 2, 174, 194, 182, 53, 44, 234, 80, 203, 117, 19, }, { 75, 181, 97, 115, 30, 83, 36, 134, 118, 202, 80, 112, 47, 193, 56, 70, }, { 185, 197, 168, 98, 150, 1, 87, 97, 91, 251, 22, 117, 40, 132, 219, 232, }, { 79, 243, 157, 32, 195, 179, 185, 54, 225, 173, 77, 222, 19, 7, 111, 218, }, { 246, 54, 53, 66, 85, 178, 238, 87, 186, 86, 91, 171, 59, 131, 180, 50, }, { 155, 147, 58, 119, 62, 125, 154, 240, 195, 151, 17, 27, 21, 24, 236, 204, }, { 210, 5, 37, 204, 175, 94, 17, 46, 31, 143, 174, 60, 36, 186, 30, 196, }, { 127, 93, 7, 114, 22, 185, 234, 122, 202, 76, 209, 26, 192, 102, 13, 133, }, { 222, 207, 226, 57, 11, 189, 117, 61, 101, 38, 137, 13, 96, 51, 231, 163, }, { 117, 242, 66, 28, 224, 202, 188, 129, 141, 80, 4, 210, 166, 74, 105, 48, }, { 20, 157, 138, 220, 47, 230, 172, 53, 142, 56, 105, 83, 204, 88, 200, 169, }, { 32, 117, 236, 221, 39, 12, 98, 201, 50, 190, 232, 57, 35, 255, 253, 106, }, { 220, 236, 156, 241, 132, 205, 218, 101, 207, 244, 102, 90, 126, 80, 45, 237, }, { 172, 168, 29, 218, 31, 223, 77, 120, 128, 170, 233, 236, 235, 12, 118, 102, }, { 171, 61, 160, 37, 235, 119, 201, 188, 232, 118, 141, 223, 198, 121, 142, 147, }, { 248, 223, 140, 127, 126, 33, 37, 28, 106, 45, 147, 205, 97, 105, 135, 27, }, { 251, 12, 205, 211, 87, 105, 60, 104, 149, 150, 234, 80, 112, 218, 40, 114, }, { 205, 199, 213, 26, 208, 243, 93, 204, 131, 194, 132, 109, 129, 30, 215, 255, }, { 240, 83, 183, 217, 7, 34, 220, 191, 135, 227, 169, 82, 25, 38, 41, 224, }, { 238, 97, 120, 107, 222, 183, 38, 113, 78, 199, 21, 201, 179, 82, 133, 252, }, { 206, 20, 148, 182, 249, 187, 68, 184, 124, 121, 253, 240, 144, 173, 120, 150, }, { 229, 62, 2, 97, 142, 252, 198, 166, 92, 178, 86, 203, 218, 174, 132, 110, }, { 125, 126, 121, 186, 153, 201, 69, 34, 96, 158, 62, 77, 222, 5, 199, 203, }, { 184, 53, 151, 6, 48, 57, 225, 77, 14, 146, 128, 191, 39, 84, 190, 207, }, { 4, 70, 252, 83, 221, 224, 157, 176, 151, 103, 29, 174, 60, 198, 87, 156, }, { 170, 205, 159, 65, 77, 79, 127, 144, 189, 31, 27, 21, 201, 169, 235, 180, }, { 245, 229, 116, 238, 124, 250, 247, 35, 69, 237, 34, 54, 42, 48, 27, 91, }, { 199, 104, 144, 116, 38, 128, 11, 55, 196, 222, 81, 165, 231, 50, 179, 74, }, { 160, 98, 218, 47, 187, 60, 41, 107, 250, 3, 206, 221, 175, 133, 143, 1, }, { 66, 201, 101, 177, 193, 104, 107, 9, 206, 109, 252, 37, 88, 94, 243, 154, }, { 203, 162, 87, 129, 130, 99, 111, 36, 190, 119, 118, 148, 163, 187, 74, 45, }, { 113, 180, 190, 79, 61, 42, 33, 49, 26, 55, 25, 124, 154, 140, 62, 172, }, { 227, 91, 128, 250, 220, 108, 244, 78, 97, 7, 164, 50, 248, 11, 25, 188, }, { 253, 105, 79, 72, 5, 249, 14, 128, 168, 35, 24, 169, 82, 127, 181, 160, }, { 144, 204, 64, 125, 110, 54, 122, 39, 209, 226, 82, 25, 124, 228, 237, 94, }, { 2, 35, 126, 200, 143, 112, 175, 88, 170, 210, 239, 87, 30, 99, 202, 78, }, { 38, 16, 110, 70, 117, 156, 80, 33, 15, 11, 26, 192, 1, 90, 96, 184, }, { 150, 169, 194, 230, 60, 166, 72, 207, 236, 87, 160, 224, 94, 65, 112, 140, }, { 207, 228, 171, 210, 95, 131, 242, 148, 41, 16, 107, 58, 159, 125, 29, 177, }, { 137, 107, 50, 48, 67, 11, 4, 45, 112, 26, 138, 177, 251, 229, 185, 183, }, { 73, 150, 31, 187, 145, 35, 139, 222, 220, 24, 191, 39, 49, 162, 242, 8, }, { 47, 108, 106, 132, 170, 167, 31, 174, 183, 172, 182, 149, 118, 197, 171, 100, }, { 82, 18, 19, 62, 51, 110, 90, 140, 215, 50, 136, 216, 168, 192, 108, 175, }, { 180, 255, 80, 243, 148, 218, 133, 94, 116, 59, 167, 142, 99, 221, 71, 168, }, { 8, 140, 59, 166, 121, 3, 249, 163, 237, 206, 58, 159, 120, 79, 174, 251, }, { 63, 183, 28, 11, 88, 161, 46, 43, 174, 243, 194, 104, 134, 91, 52, 81, }, { 214, 67, 217, 159, 114, 190, 140, 158, 136, 232, 179, 146, 24, 124, 73, 88, }, { 35, 166, 173, 113, 14, 68, 123, 189, 205, 5, 145, 164, 50, 76, 82, 3, }, { 78, 3, 162, 68, 101, 139, 15, 26, 180, 196, 219, 20, 28, 215, 10, 253, }, { 96, 159, 247, 164, 105, 20, 166, 152, 86, 1, 251, 75, 101, 194, 196, 190, }, { 11, 95, 122, 10, 80, 75, 224, 215, 18, 117, 67, 2, 105, 252, 1, 146, }, { 196, 187, 209, 216, 15, 200, 18, 67, 59, 101, 40, 56, 246, 129, 28, 35, }, { 53, 24, 89, 101, 174, 210, 120, 208, 233, 239, 23, 160, 224, 119, 80, 228, }, { 14, 233, 185, 61, 43, 147, 203, 75, 208, 123, 200, 102, 90, 234, 51, 41, }, { 100, 217, 11, 247, 180, 244, 59, 40, 193, 102, 230, 229, 89, 4, 147, 34, }, { 59, 241, 224, 88, 133, 65, 179, 155, 57, 148, 223, 198, 186, 157, 99, 205, }, { 48, 174, 154, 82, 213, 10, 83, 76, 43, 225, 156, 196, 211, 97, 98, 95, }, { 197, 75, 238, 188, 169, 240, 164, 111, 110, 12, 190, 242, 249, 81, 121, 4, }, { 107, 192, 141, 174, 57, 95, 70, 79, 68, 116, 184, 73, 12, 62, 197, 44, }, { 145, 60, 127, 25, 200, 14, 204, 11, 132, 139, 196, 211, 115, 52, 136, 121, }, { 76, 32, 220, 140, 234, 251, 160, 66, 30, 22, 52, 67, 2, 180, 192, 179, }, { 178, 154, 210, 104, 198, 74, 183, 182, 73, 142, 85, 119, 65, 120, 218, 122, }, { 254, 186, 14, 228, 44, 177, 23, 244, 87, 152, 97, 52, 67, 204, 26, 201, }, { 231, 29, 124, 169, 1, 140, 105, 254, 246, 96, 185, 156, 196, 205, 78, 32, }, { 39, 224, 81, 34, 211, 164, 230, 13, 90, 98, 140, 10, 14, 138, 5, 159, }, { 140, 221, 241, 7, 56, 211, 47, 177, 178, 20, 1, 213, 200, 243, 139, 12, }, { 62, 71, 35, 111, 254, 153, 152, 7, 251, 154, 84, 162, 137, 139, 81, 118, }, { 41, 9, 232, 31, 248, 55, 45, 70, 138, 25, 68, 108, 84, 96, 54, 182, }, { 114, 103, 255, 227, 20, 98, 56, 69, 229, 140, 96, 225, 139, 63, 145, 197, }, { 44, 191, 43, 40, 131, 239, 6, 218, 72, 23, 207, 8, 103, 118, 4, 13, }, { 164, 36, 38, 124, 102, 220, 180, 219, 109, 100, 211, 115, 147, 67, 216, 157, }, { 142, 254, 143, 207, 183, 163, 128, 233, 24, 198, 238, 130, 214, 144, 65, 66, }, { 81, 193, 82, 146, 26, 38, 67, 248, 40, 137, 241, 69, 185, 115, 195, 198, }, { 200, 113, 22, 45, 171, 43, 118, 80, 65, 204, 15, 9, 178, 8, 229, 68, }, { 22, 190, 244, 20, 160, 150, 3, 109, 36, 234, 134, 4, 210, 59, 2, 231, }, }, { { 251, 213, 12, 122, 192, 128, 150, 25, 17, 135, 147, 27, 201, 174, 181, 252, }, { 8, 224, 140, 178, 23, 26, 206, 123, 50, 252, 171, 248, 254, 242, 10, 238, }, { 203, 208, 162, 80, 178, 220, 119, 192, 189, 202, 239, 78, 136, 199, 137, 221, }, { 65, 16, 26, 94, 99, 66, 214, 105, 196, 18, 60, 211, 147, 19, 192, 17, }, { 56, 229, 34, 152, 101, 70, 47, 162, 158, 177, 215, 173, 191, 155, 54, 207, }, { 179, 57, 106, 17, 111, 74, 231, 60, 112, 151, 41, 47, 203, 192, 239, 110, }, { 31, 183, 194, 6, 125, 86, 77, 8, 53, 120, 253, 150, 15, 254, 104, 49, }, { 136, 248, 155, 195, 164, 121, 115, 199, 148, 231, 137, 163, 197, 9, 170, 22, }, { 50, 61, 141, 231, 7, 187, 51, 183, 65, 114, 38, 107, 159, 180, 223, 251, }, { 124, 153, 142, 24, 55, 155, 247, 32, 212, 35, 114, 29, 60, 126, 99, 196, }, { 92, 159, 251, 149, 107, 243, 73, 15, 28, 85, 155, 123, 66, 48, 75, 250, }, { 2, 56, 35, 205, 117, 231, 210, 110, 237, 63, 90, 62, 222, 221, 227, 218, }, { 236, 130, 66, 206, 170, 204, 21, 106, 22, 3, 197, 117, 56, 162, 215, 35, }, { 18, 59, 248, 106, 91, 211, 141, 152, 137, 4, 207, 13, 225, 250, 247, 197, }, { 123, 205, 27, 11, 115, 227, 43, 165, 183, 156, 177, 64, 242, 85, 21, 4, }, { 95, 187, 40, 223, 197, 134, 242, 86, 102, 148, 236, 90, 243, 98, 56, 77, }, { 193, 8, 13, 47, 208, 33, 107, 213, 98, 9, 30, 136, 168, 232, 96, 233, }, { 4, 112, 70, 89, 234, 13, 103, 220, 25, 126, 180, 124, 127, 121, 5, 119, }, { 118, 65, 33, 103, 85, 102, 235, 53, 11, 224, 131, 219, 28, 81, 138, 240, }, { 108, 154, 85, 191, 25, 175, 168, 214, 176, 24, 231, 46, 3, 89, 119, 219, }, { 38, 78, 16, 25, 195, 130, 11, 157, 60, 55, 7, 36, 223, 234, 206, 147, }, { 15, 180, 25, 161, 83, 98, 18, 254, 81, 67, 104, 165, 48, 217, 124, 46, }, { 12, 144, 202, 235, 253, 23, 169, 167, 43, 130, 31, 132, 129, 139, 15, 153, }, { 224, 18, 136, 37, 87, 219, 188, 205, 61, 129, 218, 241, 185, 41, 216, 186, }, { 230, 90, 237, 177, 200, 49, 9, 127, 201, 192, 52, 179, 24, 141, 62, 23, }, { 214, 95, 67, 155, 186, 109, 232, 166, 101, 141, 72, 230, 89, 228, 2, 54, }, { 24, 227, 87, 21, 57, 46, 145, 141, 86, 199, 62, 203, 193, 213, 30, 241, }, { 142, 176, 254, 87, 59, 147, 198, 117, 96, 166, 103, 225, 100, 173, 76, 187, }, { 84, 127, 119, 39, 124, 233, 135, 116, 46, 169, 48, 131, 188, 194, 65, 20, }, { 228, 98, 206, 124, 189, 214, 219, 17, 36, 255, 110, 141, 198, 80, 221, 205, }, { 172, 142, 168, 23, 18, 28, 170, 52, 69, 239, 212, 185, 196, 62, 135, 95, }, { 105, 246, 227, 97, 40, 48, 166, 61, 62, 152, 126, 77, 19, 175, 226, 193, }, { 238, 186, 97, 3, 223, 43, 199, 4, 251, 60, 159, 75, 230, 127, 52, 249, }, { 217, 235, 90, 58, 233, 15, 250, 88, 52, 206, 32, 67, 105, 61, 126, 24, }, { 247, 69, 198, 145, 61, 151, 63, 190, 58, 5, 140, 159, 72, 37, 186, 101, }, { 185, 225, 197, 110, 13, 183, 251, 41, 175, 84, 216, 233, 235, 239, 6, 90, }, { 133, 116, 161, 175, 130, 252, 179, 87, 40, 155, 187, 56, 43, 13, 53, 226, }, { 30, 171, 50, 129, 166, 196, 36, 63, 162, 134, 208, 137, 96, 113, 248, 92, }, { 102, 66, 250, 192, 123, 82, 180, 195, 111, 219, 22, 232, 35, 118, 158, 239, }, { 48, 5, 174, 42, 114, 92, 225, 217, 172, 77, 124, 85, 65, 105, 60, 33, }, { 213, 123, 144, 209, 20, 24, 83, 255, 31, 76, 63, 199, 232, 182, 113, 129, }, { 162, 38, 65, 49, 154, 236, 209, 253, 131, 82, 145, 3, 155, 104, 107, 28, }, { 252, 129, 153, 105, 132, 248, 74, 156, 114, 56, 80, 70, 7, 133, 195, 60, }, { 96, 10, 159, 84, 228, 184, 1, 113, 155, 154, 248, 170, 130, 210, 120, 66, }, { 255, 165, 74, 35, 42, 141, 241, 197, 8, 249, 39, 103, 182, 215, 176, 139, }, { 110, 162, 118, 114, 108, 72, 122, 184, 93, 39, 189, 16, 221, 132, 148, 1, }, { 234, 202, 39, 90, 53, 38, 160, 216, 226, 66, 43, 55, 153, 6, 49, 142, }, { 131, 60, 196, 59, 29, 22, 6, 229, 220, 218, 85, 122, 138, 169, 211, 79, }, { 21, 111, 109, 121, 31, 171, 81, 29, 234, 187, 12, 80, 47, 209, 129, 5, }, { 192, 20, 253, 168, 11, 179, 2, 226, 245, 247, 51, 151, 199, 103, 240, 132, }, { 220, 135, 236, 228, 216, 144, 244, 179, 186, 78, 185, 32, 121, 203, 235, 2, }, { 180, 109, 255, 2, 43, 50, 59, 185, 19, 40, 234, 114, 5, 235, 153, 174, }, { 235, 214, 215, 221, 238, 180, 201, 239, 117, 188, 6, 40, 246, 137, 161, 227, }, { 200, 244, 113, 26, 28, 169, 204, 153, 199, 11, 152, 111, 57, 149, 250, 106, }, { 132, 104, 81, 40, 89, 110, 218, 96, 191, 101, 150, 39, 68, 130, 165, 143, }, { 229, 126, 62, 251, 102, 68, 178, 38, 179, 1, 67, 146, 169, 223, 77, 160, }, { 167, 74, 247, 239, 171, 115, 223, 22, 13, 210, 8, 96, 139, 158, 254, 6, }, { 68, 124, 172, 128, 82, 221, 216, 130, 74, 146, 165, 176, 131, 229, 85, 11, }, { 186, 197, 22, 36, 163, 194, 64, 112, 213, 149, 175, 200, 90, 189, 117, 237, }, { 98, 50, 188, 153, 145, 95, 211, 31, 118, 165, 162, 148, 92, 15, 155, 152, }, { 242, 41, 112, 79, 12, 8, 49, 85, 180, 133, 21, 252, 88, 211, 47, 127, }, { 83, 43, 226, 52, 56, 145, 91, 241, 77, 22, 243, 222, 114, 233, 55, 212, }, { 154, 195, 99, 169, 255, 170, 254, 95, 29, 227, 70, 174, 36, 243, 93, 211, }, { 16, 3, 219, 167, 46, 52, 95, 246, 100, 59, 149, 51, 63, 39, 20, 31, }, { 29, 143, 225, 203, 8, 177, 159, 102, 216, 71, 167, 168, 209, 35, 139, 235, }, { 10, 216, 175, 127, 98, 253, 28, 21, 223, 195, 241, 198, 32, 47, 233, 52, }, { 211, 51, 245, 69, 139, 242, 230, 77, 235, 13, 209, 133, 73, 18, 151, 44, }, { 253, 157, 105, 238, 95, 106, 35, 171, 229, 198, 125, 89, 104, 10, 83, 81, }, { 115, 45, 151, 185, 100, 249, 229, 222, 133, 96, 26, 184, 12, 167, 31, 234, }, { 241, 13, 163, 5, 162, 125, 138, 12, 206, 68, 98, 221, 233, 129, 92, 200, }, { 74, 212, 69, 166, 218, 45, 163, 75, 140, 47, 224, 10, 220, 179, 185, 72, }, { 161, 2, 146, 123, 52, 153, 106, 164, 249, 147, 230, 34, 42, 58, 24, 171, }, { 170, 198, 205, 131, 141, 246, 31, 134, 177, 174, 58, 251, 101, 154, 97, 242, }, { 116, 121, 2, 170, 32, 129, 57, 91, 230, 223, 217, 229, 194, 140, 105, 42, }, { 20, 115, 157, 254, 196, 57, 56, 42, 125, 69, 33, 79, 64, 94, 17, 104, }, { 57, 249, 210, 31, 190, 212, 70, 149, 9, 79, 250, 178, 208, 20, 166, 162, }, { 149, 119, 122, 8, 172, 200, 236, 161, 76, 160, 46, 11, 20, 42, 33, 253, }, { 91, 203, 110, 134, 47, 139, 149, 138, 127, 234, 88, 38, 140, 27, 61, 58, }, { 86, 71, 84, 234, 9, 14, 85, 26, 195, 150, 106, 189, 98, 31, 162, 206, }, { 138, 192, 184, 14, 209, 158, 161, 169, 121, 216, 211, 157, 27, 212, 73, 204, }, { 223, 163, 63, 174, 118, 229, 79, 234, 192, 143, 206, 1, 200, 153, 152, 181, }, { 205, 152, 199, 196, 45, 54, 194, 114, 73, 139, 1, 12, 41, 99, 111, 112, }, { 81, 19, 193, 249, 77, 118, 137, 159, 160, 41, 169, 224, 172, 52, 212, 14, }, { 52, 117, 232, 115, 152, 81, 134, 5, 181, 51, 200, 41, 62, 16, 57, 86, }, { 246, 89, 54, 22, 230, 5, 86, 137, 173, 251, 161, 128, 39, 170, 42, 8, }, { 141, 148, 45, 29, 149, 230, 125, 44, 26, 103, 16, 192, 213, 255, 63, 12, }, { 106, 210, 48, 43, 134, 69, 29, 100, 68, 89, 9, 108, 162, 253, 145, 118, }, { 243, 53, 128, 200, 215, 154, 88, 98, 35, 123, 56, 227, 55, 92, 191, 18, }, { 245, 125, 229, 92, 72, 112, 237, 208, 215, 58, 214, 161, 150, 248, 89, 191, }, { 17, 31, 43, 32, 245, 166, 54, 193, 243, 197, 184, 44, 80, 168, 132, 114, }, { 157, 151, 246, 186, 187, 210, 34, 218, 126, 92, 133, 243, 234, 216, 43, 19, }, { 117, 101, 242, 45, 251, 19, 80, 108, 113, 33, 244, 250, 173, 3, 249, 71, }, { 25, 255, 167, 146, 226, 188, 248, 186, 193, 57, 19, 212, 174, 90, 142, 156, }, { 3, 36, 211, 74, 174, 117, 187, 89, 122, 193, 119, 33, 177, 82, 115, 183, }, { 112, 9, 68, 243, 202, 140, 94, 135, 255, 161, 109, 153, 189, 245, 108, 93, }, { 114, 49, 103, 62, 191, 107, 140, 233, 18, 158, 55, 167, 99, 40, 143, 135, }, { 58, 221, 1, 85, 16, 161, 253, 204, 115, 142, 141, 147, 97, 70, 213, 21, }, { 139, 220, 72, 137, 10, 12, 200, 158, 238, 38, 254, 130, 116, 91, 217, 161, }, { 51, 33, 125, 96, 220, 41, 90, 128, 214, 140, 11, 116, 240, 59, 79, 150, }, { 198, 92, 152, 60, 148, 89, 183, 80, 1, 182, 221, 213, 102, 195, 22, 41, }, { 47, 178, 108, 44, 15, 10, 172, 209, 153, 53, 129, 195, 78, 151, 84, 16, }, { 137, 228, 107, 68, 127, 235, 26, 240, 3, 25, 164, 188, 170, 134, 58, 123, }, { 190, 181, 80, 125, 73, 207, 39, 172, 204, 235, 27, 180, 37, 196, 112, 154, }, { 206, 188, 20, 142, 131, 67, 121, 43, 51, 74, 118, 45, 152, 49, 28, 199, }, { 196, 100, 187, 241, 225, 190, 101, 62, 236, 137, 135, 235, 184, 30, 245, 243, }, { 250, 201, 252, 253, 27, 18, 255, 46, 134, 121, 190, 4, 166, 33, 37, 145, }, { 59, 193, 241, 210, 203, 51, 148, 251, 228, 112, 160, 140, 14, 201, 69, 120, }, { 221, 155, 28, 99, 3, 2, 157, 132, 45, 176, 148, 63, 22, 68, 123, 111, }, { 119, 93, 209, 224, 142, 244, 130, 2, 156, 30, 174, 196, 115, 222, 26, 157, }, { 197, 120, 75, 118, 58, 44, 12, 9, 123, 119, 170, 244, 215, 145, 101, 158, }, { 22, 75, 190, 51, 177, 222, 234, 68, 144, 122, 123, 113, 158, 131, 242, 178, }, { 164, 110, 36, 165, 5, 6, 100, 79, 119, 19, 127, 65, 58, 204, 141, 177, }, { 173, 146, 88, 144, 201, 142, 195, 3, 210, 17, 249, 166, 171, 177, 23, 50, }, { 216, 247, 170, 189, 50, 157, 147, 111, 163, 48, 13, 92, 6, 178, 238, 117, }, { 183, 73, 44, 72, 133, 71, 128, 224, 105, 233, 157, 83, 180, 185, 234, 25, }, { 146, 35, 239, 27, 232, 176, 48, 36, 47, 31, 237, 86, 218, 1, 87, 61, }, { 73, 240, 150, 236, 116, 88, 24, 18, 246, 238, 151, 43, 109, 225, 202, 255, }, { 100, 122, 217, 13, 14, 181, 102, 173, 130, 228, 76, 214, 253, 171, 125, 53, }, { 145, 7, 60, 81, 70, 197, 139, 125, 85, 222, 154, 119, 107, 83, 36, 138, }, { 156, 139, 6, 61, 96, 64, 75, 237, 233, 162, 168, 236, 133, 87, 187, 126, }, { 1, 28, 240, 135, 219, 146, 105, 55, 151, 254, 45, 31, 111, 143, 144, 109, }, { 232, 242, 4, 151, 64, 193, 114, 182, 15, 125, 113, 9, 71, 219, 210, 84, }, { 160, 30, 98, 252, 239, 11, 3, 147, 110, 109, 203, 61, 69, 181, 136, 198, }, { 187, 217, 230, 163, 120, 80, 41, 71, 66, 107, 130, 215, 53, 50, 229, 128, }, { 181, 113, 15, 133, 240, 160, 82, 142, 132, 214, 199, 109, 106, 100, 9, 195, }, { 41, 250, 9, 184, 144, 224, 25, 99, 109, 116, 111, 129, 239, 51, 178, 189, }, { 227, 54, 91, 111, 249, 174, 7, 148, 71, 64, 173, 208, 8, 123, 171, 13, }, { 90, 215, 158, 1, 244, 25, 252, 189, 232, 20, 117, 57, 227, 148, 173, 87, }, { 23, 87, 78, 180, 106, 76, 131, 115, 7, 132, 86, 110, 241, 12, 98, 223, }, { 99, 46, 76, 30, 74, 205, 186, 40, 225, 91, 143, 139, 51, 128, 11, 245, }, { 37, 106, 195, 83, 109, 247, 176, 196, 70, 246, 112, 5, 110, 184, 189, 36, }, { 125, 133, 126, 159, 236, 9, 158, 23, 67, 221, 95, 2, 83, 241, 243, 169, }, { 32, 6, 117, 141, 92, 104, 190, 47, 200, 118, 233, 102, 126, 78, 40, 62, }, { 19, 39, 8, 237, 128, 65, 228, 175, 30, 250, 226, 18, 142, 117, 103, 168, }, { 14, 168, 233, 38, 136, 240, 123, 201, 198, 189, 69, 186, 95, 86, 236, 67, }, { 159, 175, 213, 119, 206, 53, 240, 180, 147, 99, 223, 205, 52, 5, 200, 201, }, { 225, 14, 120, 162, 140, 73, 213, 250, 170, 127, 247, 238, 214, 166, 72, 215, }, { 85, 99, 135, 160, 167, 123, 238, 67, 185, 87, 29, 156, 211, 77, 209, 121, }, { 143, 172, 14, 208, 224, 1, 175, 66, 247, 88, 74, 254, 11, 34, 220, 214, }, { 209, 11, 214, 136, 254, 21, 52, 35, 6, 50, 139, 187, 151, 207, 116, 246, }, { 64, 12, 234, 217, 184, 208, 191, 94, 83, 236, 17, 204, 252, 156, 80, 124, }, { 130, 32, 52, 188, 198, 132, 111, 210, 75, 36, 120, 101, 229, 38, 67, 34, }, { 82, 55, 18, 179, 227, 3, 50, 198, 218, 232, 222, 193, 29, 102, 167, 185, }, { 178, 37, 154, 150, 180, 216, 142, 11, 231, 105, 4, 48, 164, 79, 127, 3, }, { 89, 243, 77, 75, 90, 108, 71, 228, 146, 213, 2, 24, 82, 198, 222, 224, }, { 63, 177, 183, 139, 33, 62, 243, 39, 253, 14, 20, 240, 113, 176, 64, 15, }, { 212, 103, 96, 86, 207, 138, 58, 200, 136, 178, 18, 216, 135, 57, 225, 236, }, { 121, 245, 56, 198, 6, 4, 249, 203, 90, 163, 235, 126, 44, 136, 246, 222, }, { 231, 70, 29, 54, 19, 163, 96, 72, 94, 62, 25, 172, 119, 2, 174, 122, }, { 239, 166, 145, 132, 4, 185, 174, 51, 108, 194, 178, 84, 137, 240, 164, 148, }, { 202, 204, 82, 215, 105, 78, 30, 247, 42, 52, 194, 81, 231, 72, 25, 176, }, { 71, 88, 127, 202, 252, 168, 99, 219, 48, 83, 210, 145, 50, 183, 38, 188, }, { 165, 114, 212, 34, 222, 148, 13, 120, 224, 237, 82, 94, 85, 67, 29, 220, }, { 175, 170, 123, 93, 188, 105, 17, 109, 63, 46, 163, 152, 117, 108, 244, 232, }, { 168, 254, 238, 78, 248, 17, 205, 232, 92, 145, 96, 197, 187, 71, 130, 40, }, { 147, 63, 31, 156, 51, 34, 89, 19, 184, 225, 192, 73, 181, 142, 199, 80, }, { 237, 158, 178, 73, 113, 94, 124, 93, 129, 253, 232, 106, 87, 45, 71, 78, }, { 195, 48, 46, 226, 165, 198, 185, 187, 143, 54, 68, 182, 118, 53, 131, 51, }, { 42, 222, 218, 242, 62, 149, 162, 58, 23, 181, 24, 160, 94, 97, 193, 10, }, { 150, 83, 169, 66, 2, 189, 87, 248, 54, 97, 89, 42, 165, 120, 82, 74, }, { 44, 150, 191, 102, 161, 127, 23, 136, 227, 244, 246, 226, 255, 197, 39, 167, }, { 93, 131, 11, 18, 176, 97, 32, 56, 139, 171, 182, 100, 45, 191, 219, 151, }, { 226, 42, 171, 232, 34, 60, 110, 163, 208, 190, 128, 207, 103, 244, 59, 96, }, { 127, 189, 93, 82, 153, 238, 76, 121, 174, 226, 5, 60, 141, 44, 16, 115, }, { 126, 161, 173, 213, 66, 124, 37, 78, 57, 28, 40, 35, 226, 163, 128, 30, }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, { 62, 173, 71, 12, 250, 172, 154, 16, 106, 240, 57, 239, 30, 63, 208, 98, }, { 199, 64, 104, 187, 79, 203, 222, 103, 150, 72, 240, 202, 9, 76, 134, 68, }, { 5, 108, 182, 222, 49, 159, 14, 235, 142, 128, 153, 99, 16, 246, 149, 26, }, { 60, 149, 100, 193, 143, 75, 72, 126, 135, 207, 99, 209, 192, 226, 51, 184, }, { 135, 76, 130, 98, 247, 27, 97, 57, 197, 164, 225, 6, 245, 208, 214, 56, }, { 103, 94, 10, 71, 160, 192, 221, 244, 248, 37, 59, 247, 76, 249, 14, 130, }, { 153, 231, 176, 227, 81, 223, 69, 6, 103, 34, 49, 143, 149, 161, 46, 100, }, { 171, 218, 61, 4, 86, 100, 118, 177, 38, 80, 23, 228, 10, 21, 241, 159, }, { 249, 237, 47, 183, 181, 103, 68, 119, 252, 184, 201, 37, 23, 115, 86, 38, }, { 210, 47, 5, 194, 80, 96, 143, 122, 124, 243, 252, 154, 38, 157, 7, 65, }, { 6, 72, 101, 148, 159, 234, 181, 178, 244, 65, 238, 66, 161, 164, 230, 173, }, { 169, 226, 30, 201, 35, 131, 164, 223, 203, 111, 77, 218, 212, 200, 18, 69, }, { 27, 199, 132, 95, 151, 91, 42, 212, 44, 6, 73, 234, 112, 135, 109, 70, }, { 72, 236, 102, 107, 175, 202, 113, 37, 97, 16, 186, 52, 2, 110, 90, 146, }, { 151, 79, 89, 197, 217, 47, 62, 207, 161, 159, 116, 53, 202, 247, 194, 39, }, { 194, 44, 222, 101, 126, 84, 208, 140, 24, 200, 105, 169, 25, 186, 19, 94, }, { 134, 80, 114, 229, 44, 137, 8, 14, 82, 90, 204, 25, 154, 95, 70, 85, }, { 97, 22, 111, 211, 63, 42, 104, 70, 12, 100, 213, 181, 237, 93, 232, 47, }, { 54, 77, 203, 190, 237, 182, 84, 107, 88, 12, 146, 23, 224, 205, 218, 140, }, { 87, 91, 164, 109, 210, 156, 60, 45, 84, 104, 71, 162, 13, 144, 50, 163, }, { 240, 17, 83, 130, 121, 239, 227, 59, 89, 186, 79, 194, 134, 14, 204, 165, }, { 46, 174, 156, 171, 212, 152, 197, 230, 14, 203, 172, 220, 33, 24, 196, 125, }, { 122, 209, 235, 140, 168, 113, 66, 146, 32, 98, 156, 95, 157, 218, 133, 105, }, { 61, 137, 148, 70, 84, 217, 33, 73, 16, 49, 78, 206, 175, 109, 163, 213, }, { 129, 4, 231, 246, 104, 241, 212, 139, 49, 229, 15, 68, 84, 116, 48, 149, }, { 53, 105, 24, 244, 67, 195, 239, 50, 34, 205, 229, 54, 81, 159, 169, 59, }, { 201, 232, 129, 157, 199, 59, 165, 174, 80, 245, 181, 112, 86, 26, 106, 7, }, { 101, 102, 41, 138, 213, 39, 15, 154, 21, 26, 97, 201, 146, 36, 237, 88, }, { 120, 233, 200, 65, 221, 150, 144, 252, 205, 93, 198, 97, 67, 7, 102, 179, }, { 188, 141, 115, 176, 60, 40, 245, 194, 33, 212, 65, 138, 251, 25, 147, 64, }, { 28, 147, 17, 76, 211, 35, 246, 81, 79, 185, 138, 183, 190, 172, 27, 134, }, { 104, 234, 19, 230, 243, 162, 207, 10, 169, 102, 83, 82, 124, 32, 114, 172, }, { 204, 132, 55, 67, 246, 164, 171, 69, 222, 117, 44, 19, 70, 236, 255, 29, }, { 191, 169, 160, 250, 146, 93, 78, 155, 91, 21, 54, 171, 74, 75, 224, 247, }, { 113, 21, 180, 116, 17, 30, 55, 176, 104, 95, 64, 134, 210, 122, 252, 48, }, { 184, 253, 53, 233, 214, 37, 146, 30, 56, 170, 245, 246, 132, 96, 150, 55, }, { 166, 86, 7, 104, 112, 225, 182, 33, 154, 44, 37, 127, 228, 17, 110, 107, }, { 34, 62, 86, 64, 41, 143, 108, 65, 37, 73, 179, 88, 160, 147, 203, 228, }, { 77, 128, 208, 181, 158, 85, 127, 206, 239, 144, 35, 87, 18, 152, 207, 136, }, { 176, 29, 185, 91, 193, 63, 92, 101, 10, 86, 94, 14, 122, 146, 156, 217, }, { 144, 27, 204, 214, 157, 87, 226, 74, 194, 32, 183, 104, 4, 220, 180, 231, }, { 35, 34, 166, 199, 242, 29, 5, 118, 178, 183, 158, 71, 207, 28, 91, 137, }, { 55, 81, 59, 57, 54, 36, 61, 92, 207, 242, 191, 8, 143, 66, 74, 225, }, { 107, 206, 192, 172, 93, 215, 116, 83, 211, 167, 36, 115, 205, 114, 1, 27, }, { 9, 252, 124, 53, 204, 136, 167, 76, 165, 2, 134, 231, 145, 125, 154, 131, }, { 36, 118, 51, 212, 182, 101, 217, 243, 209, 8, 93, 26, 1, 55, 45, 73, }, { 49, 25, 94, 173, 169, 206, 136, 238, 59, 179, 81, 74, 46, 230, 172, 76, }, { 78, 164, 3, 255, 48, 32, 196, 151, 149, 81, 84, 118, 163, 202, 188, 63, }, { 128, 24, 23, 113, 179, 99, 189, 188, 166, 27, 34, 91, 59, 251, 160, 248, }, { 39, 82, 224, 158, 24, 16, 98, 170, 171, 201, 42, 59, 176, 101, 94, 254, }, { 88, 239, 189, 204, 129, 254, 46, 211, 5, 43, 47, 7, 61, 73, 78, 141, }, { 33, 26, 133, 10, 135, 250, 215, 24, 95, 136, 196, 121, 17, 193, 184, 83, }, { 207, 160, 228, 9, 88, 209, 16, 28, 164, 180, 91, 50, 247, 190, 140, 170, }, { 148, 107, 138, 143, 119, 90, 133, 150, 219, 94, 3, 20, 123, 165, 177, 144, }, { 45, 138, 79, 225, 122, 237, 126, 191, 116, 10, 219, 253, 144, 74, 183, 202, }, { 222, 191, 207, 41, 173, 119, 38, 221, 87, 113, 227, 30, 167, 22, 8, 216, }, { 174, 182, 139, 218, 103, 251, 120, 90, 168, 208, 142, 135, 26, 227, 100, 133, }, { 140, 136, 221, 154, 78, 116, 20, 27, 141, 153, 61, 223, 186, 112, 175, 97, }, { 94, 167, 216, 88, 30, 20, 155, 97, 241, 106, 193, 69, 156, 237, 168, 32, }, { 163, 58, 177, 182, 65, 126, 184, 202, 20, 172, 188, 28, 244, 231, 251, 113, }, { 43, 194, 42, 117, 229, 7, 203, 13, 128, 75, 53, 191, 49, 238, 81, 103, }, { 158, 179, 37, 240, 21, 167, 153, 131, 4, 157, 242, 210, 91, 138, 88, 164, }, { 189, 145, 131, 55, 231, 186, 156, 245, 182, 42, 108, 149, 148, 150, 3, 45, }, { 26, 219, 116, 216, 76, 201, 67, 227, 187, 248, 100, 245, 31, 8, 253, 43, }, { 152, 251, 64, 100, 138, 77, 44, 49, 240, 220, 28, 144, 250, 46, 190, 9, }, { 215, 67, 179, 28, 97, 255, 129, 145, 242, 115, 101, 249, 54, 107, 146, 91, }, { 67, 40, 57, 147, 22, 165, 4, 7, 41, 45, 102, 237, 77, 206, 35, 203, }, { 208, 23, 38, 15, 37, 135, 93, 20, 145, 204, 166, 164, 248, 64, 228, 155, }, { 75, 200, 181, 33, 1, 191, 202, 124, 27, 209, 205, 21, 179, 60, 41, 37, }, { 40, 230, 249, 63, 75, 114, 112, 84, 250, 138, 66, 158, 128, 188, 34, 208, }, { 155, 223, 147, 46, 36, 56, 151, 104, 138, 29, 107, 177, 75, 124, 205, 190, }, { 76, 156, 32, 50, 69, 199, 22, 249, 120, 110, 14, 72, 125, 23, 95, 229, }, { 111, 190, 134, 245, 183, 218, 19, 143, 202, 217, 144, 15, 178, 11, 4, 108, }, { 79, 184, 243, 120, 235, 178, 173, 160, 2, 175, 121, 105, 204, 69, 44, 82, }, { 11, 196, 95, 248, 185, 111, 117, 34, 72, 61, 220, 217, 79, 160, 121, 89, }, { 66, 52, 201, 20, 205, 55, 109, 48, 190, 211, 75, 242, 34, 65, 179, 166, }, { 182, 85, 220, 207, 94, 213, 233, 215, 254, 23, 176, 76, 219, 54, 122, 116, }, { 244, 97, 21, 219, 147, 226, 132, 231, 64, 196, 251, 190, 249, 119, 201, 210, }, { 254, 185, 186, 164, 241, 31, 152, 242, 159, 7, 10, 120, 217, 88, 32, 230, }, { 13, 140, 58, 108, 38, 133, 192, 144, 188, 124, 50, 155, 238, 4, 159, 244, }, { 177, 1, 73, 220, 26, 173, 53, 82, 157, 168, 115, 17, 21, 29, 12, 180, }, { 7, 84, 149, 19, 68, 120, 220, 133, 99, 191, 195, 93, 206, 43, 118, 192, }, { 70, 68, 143, 77, 39, 58, 10, 236, 167, 173, 255, 142, 93, 56, 182, 209, }, { 69, 96, 92, 7, 137, 79, 177, 181, 221, 108, 136, 175, 236, 106, 197, 102, }, { 218, 207, 137, 112, 71, 122, 65, 1, 78, 15, 87, 98, 216, 111, 13, 175, }, { 219, 211, 121, 247, 156, 232, 40, 54, 217, 241, 122, 125, 183, 224, 157, 194, }, { 233, 238, 244, 16, 155, 83, 27, 129, 152, 131, 92, 22, 40, 84, 66, 57, }, { 248, 241, 223, 48, 110, 245, 45, 64, 107, 70, 228, 58, 120, 252, 198, 75, }, { 80, 15, 49, 126, 150, 228, 224, 168, 55, 215, 132, 255, 195, 187, 68, 99, }, { 109, 134, 165, 56, 194, 61, 193, 225, 39, 230, 202, 49, 108, 214, 231, 182, }, }, }; const grasshopper_w128_t grasshopper_pil_dec128[GRASSHOPPER_MAX_BIT_PARTS][256] = { { { 165, 204, 14, 134, 194, 79, 186, 89, 59, 227, 239, 121, 130, 83, 17, 240, }, { 45, 3, 150, 148, 149, 108, 42, 182, 245, 156, 186, 231, 55, 131, 145, 189, }, { 50, 23, 177, 171, 166, 249, 17, 210, 3, 195, 142, 201, 144, 88, 146, 173, }, { 143, 165, 130, 68, 39, 150, 101, 191, 96, 218, 110, 89, 40, 81, 104, 132, }, { 14, 212, 52, 172, 224, 169, 41, 160, 159, 137, 118, 77, 249, 193, 19, 81, }, { 48, 252, 122, 210, 134, 64, 95, 104, 176, 55, 30, 17, 116, 180, 21, 113, }, { 56, 214, 208, 245, 6, 225, 164, 197, 57, 97, 27, 247, 98, 130, 76, 135, }, { 192, 118, 43, 206, 93, 195, 191, 99, 133, 220, 120, 68, 19, 149, 84, 7, }, { 84, 210, 219, 71, 9, 113, 125, 15, 182, 114, 193, 64, 151, 4, 242, 232, }, { 230, 32, 88, 217, 120, 10, 7, 159, 242, 152, 31, 241, 164, 186, 185, 254, }, { 158, 101, 145, 215, 244, 170, 119, 123, 9, 12, 44, 58, 118, 75, 120, 197, }, { 57, 66, 84, 40, 22, 92, 131, 152, 129, 27, 83, 155, 16, 244, 238, 233, }, { 85, 70, 95, 154, 25, 204, 90, 82, 14, 8, 137, 44, 229, 114, 80, 134, }, { 126, 187, 87, 133, 236, 168, 162, 233, 237, 75, 64, 96, 61, 6, 139, 156, }, { 82, 44, 69, 204, 105, 121, 175, 2, 160, 173, 178, 235, 120, 243, 184, 79, }, { 145, 37, 33, 166, 4, 190, 121, 134, 46, 255, 18, 27, 253, 252, 201, 250, }, { 100, 46, 161, 149, 143, 49, 34, 103, 6, 69, 223, 81, 227, 176, 231, 153, }, { 3, 127, 79, 164, 48, 4, 105, 231, 11, 142, 216, 180, 150, 154, 37, 178, }, { 87, 173, 148, 227, 57, 117, 20, 232, 189, 252, 25, 244, 1, 158, 215, 90, }, { 90, 6, 239, 235, 233, 216, 84, 175, 41, 251, 183, 13, 110, 197, 225, 185, }, { 28, 107, 104, 155, 3, 145, 82, 131, 253, 209, 236, 154, 49, 65, 38, 162, }, { 96, 59, 244, 103, 207, 128, 190, 208, 163, 110, 60, 34, 232, 171, 42, 226, }, { 7, 106, 26, 86, 112, 181, 245, 80, 174, 165, 59, 199, 157, 129, 232, 201, }, { 24, 126, 61, 105, 67, 32, 206, 52, 88, 250, 15, 233, 58, 90, 235, 217, }, { 33, 60, 105, 65, 85, 124, 77, 172, 217, 225, 92, 114, 42, 174, 5, 48, }, { 114, 132, 168, 80, 44, 184, 197, 243, 193, 54, 166, 245, 32, 43, 31, 17, }, { 168, 103, 117, 142, 18, 226, 250, 30, 175, 228, 65, 128, 237, 8, 39, 19, }, { 209, 182, 56, 93, 142, 255, 173, 167, 236, 10, 58, 39, 77, 143, 68, 70, }, { 41, 22, 195, 102, 213, 221, 182, 1, 80, 183, 89, 148, 60, 152, 92, 198, }, { 198, 136, 181, 69, 61, 203, 109, 110, 147, 3, 11, 239, 252, 98, 30, 160, }, { 164, 88, 138, 91, 210, 242, 157, 4, 131, 153, 167, 21, 240, 37, 179, 158, }, { 63, 188, 202, 163, 118, 84, 81, 149, 151, 196, 32, 48, 255, 3, 164, 78, }, { 224, 222, 198, 82, 24, 2, 213, 146, 228, 71, 108, 90, 75, 77, 243, 89, }, { 39, 194, 247, 202, 53, 116, 159, 161, 207, 62, 47, 217, 197, 89, 79, 151, }, { 141, 78, 73, 61, 7, 47, 43, 5, 211, 46, 254, 129, 204, 189, 239, 88, }, { 12, 63, 255, 213, 192, 16, 103, 26, 44, 125, 230, 149, 29, 45, 148, 141, }, { 130, 14, 249, 76, 247, 59, 37, 248, 244, 221, 192, 160, 71, 10, 94, 103, }, { 234, 31, 167, 12, 184, 26, 96, 133, 222, 229, 249, 100, 185, 151, 45, 115, }, { 174, 153, 235, 5, 114, 234, 40, 19, 185, 59, 50, 43, 2, 255, 109, 180, }, { 180, 12, 29, 21, 17, 115, 168, 157, 82, 53, 173, 26, 220, 73, 1, 177, }, { 154, 112, 196, 37, 180, 27, 235, 204, 172, 39, 207, 73, 125, 80, 181, 190, }, { 99, 68, 187, 195, 255, 132, 215, 55, 168, 224, 228, 150, 126, 49, 15, 80, }, { 73, 45, 55, 1, 26, 93, 8, 209, 243, 217, 101, 182, 212, 51, 118, 36, }, { 229, 95, 23, 125, 72, 14, 110, 120, 249, 22, 199, 69, 50, 32, 156, 76, }, { 66, 120, 210, 130, 170, 248, 154, 155, 113, 1, 184, 228, 84, 159, 10, 96, }, { 228, 203, 147, 160, 88, 179, 73, 37, 65, 108, 143, 41, 64, 86, 62, 34, }, { 21, 213, 70, 97, 147, 141, 142, 115, 204, 253, 161, 16, 85, 1, 221, 58, }, { 183, 115, 82, 177, 33, 119, 193, 122, 89, 187, 117, 174, 74, 211, 36, 3, }, { 200, 92, 129, 233, 221, 98, 68, 206, 12, 138, 125, 162, 5, 163, 13, 241, }, { 6, 254, 158, 139, 96, 8, 210, 13, 22, 223, 115, 171, 239, 247, 74, 167, }, { 112, 111, 99, 41, 12, 1, 139, 73, 114, 194, 54, 45, 196, 199, 152, 205, }, { 157, 26, 222, 115, 196, 174, 30, 156, 2, 130, 244, 142, 224, 209, 93, 119, }, { 65, 7, 157, 38, 154, 252, 243, 124, 122, 143, 96, 80, 194, 5, 47, 210, }, { 117, 238, 178, 6, 92, 13, 48, 163, 111, 147, 157, 50, 189, 170, 247, 216, }, { 25, 234, 185, 180, 83, 157, 233, 105, 224, 128, 71, 133, 72, 44, 73, 183, }, { 201, 200, 5, 52, 205, 223, 99, 147, 180, 240, 53, 206, 119, 213, 175, 159, }, { 170, 140, 190, 247, 50, 91, 180, 164, 28, 16, 209, 88, 9, 228, 160, 207, }, { 252, 181, 174, 201, 27, 147, 135, 17, 25, 150, 128, 192, 122, 12, 213, 251, }, { 77, 56, 98, 243, 90, 236, 148, 102, 86, 242, 134, 197, 223, 40, 187, 95, }, { 191, 89, 248, 150, 161, 214, 58, 215, 208, 237, 112, 72, 92, 229, 125, 245, }, { 42, 105, 140, 194, 229, 217, 223, 230, 91, 57, 129, 32, 170, 2, 121, 116, }, { 115, 16, 44, 141, 60, 5, 226, 174, 121, 76, 238, 153, 82, 93, 189, 127, }, { 132, 240, 103, 199, 151, 51, 247, 245, 226, 2, 179, 11, 168, 253, 20, 192, }, { 213, 163, 109, 175, 206, 78, 49, 16, 73, 33, 217, 84, 70, 148, 137, 61, }, { 195, 9, 100, 106, 109, 199, 214, 132, 142, 82, 160, 240, 133, 15, 113, 181, }, { 175, 13, 111, 216, 98, 87, 15, 78, 1, 65, 122, 71, 112, 137, 207, 218, }, { 43, 253, 8, 31, 245, 100, 248, 187, 227, 67, 201, 76, 216, 116, 219, 26, }, { 134, 27, 172, 190, 183, 138, 185, 79, 81, 246, 35, 211, 76, 17, 147, 28, }, { 167, 39, 197, 255, 226, 246, 244, 227, 136, 23, 127, 161, 102, 191, 150, 44, }, { 177, 141, 204, 58, 65, 127, 19, 119, 79, 100, 6, 5, 165, 36, 110, 164, }, { 178, 242, 131, 158, 113, 123, 122, 144, 68, 234, 222, 177, 51, 190, 75, 22, }, { 91, 146, 107, 54, 249, 101, 115, 242, 145, 129, 255, 97, 28, 179, 67, 215, }, { 70, 109, 135, 112, 234, 73, 6, 44, 212, 42, 91, 151, 95, 132, 199, 27, }, { 211, 93, 243, 36, 174, 70, 227, 29, 95, 254, 170, 255, 169, 99, 195, 154, }, { 159, 241, 21, 10, 228, 23, 80, 38, 177, 118, 100, 86, 4, 61, 218, 171, }, { 253, 33, 42, 20, 11, 46, 160, 76, 161, 236, 200, 172, 8, 122, 119, 149, }, { 212, 55, 233, 114, 222, 243, 22, 77, 241, 91, 145, 56, 52, 226, 43, 83, }, { 15, 64, 176, 113, 240, 20, 14, 253, 39, 243, 62, 33, 139, 183, 177, 63, }, { 156, 142, 90, 174, 212, 19, 57, 193, 186, 248, 188, 226, 146, 167, 255, 25, }, { 47, 232, 93, 237, 181, 213, 100, 12, 70, 104, 42, 63, 211, 111, 22, 97, }, { 155, 228, 64, 248, 164, 166, 204, 145, 20, 93, 135, 37, 15, 38, 23, 208, }, { 67, 236, 86, 95, 186, 69, 189, 198, 201, 123, 240, 136, 38, 233, 168, 14, }, { 239, 158, 118, 35, 232, 22, 219, 111, 195, 180, 82, 123, 192, 250, 66, 102, }, { 217, 156, 146, 122, 14, 94, 86, 10, 101, 92, 63, 193, 91, 185, 29, 176, }, { 121, 209, 77, 211, 156, 29, 87, 185, 67, 238, 123, 167, 160, 135, 99, 85, }, { 182, 231, 214, 108, 49, 202, 230, 39, 225, 193, 61, 194, 56, 165, 134, 109, }, { 83, 184, 193, 17, 121, 196, 136, 95, 24, 215, 250, 135, 10, 133, 26, 33, }, { 127, 47, 211, 88, 252, 21, 133, 180, 85, 49, 8, 12, 79, 112, 41, 242, }, { 193, 226, 175, 19, 77, 126, 152, 62, 61, 166, 48, 40, 97, 227, 246, 105, }, { 240, 138, 81, 28, 219, 131, 224, 11, 53, 235, 102, 85, 103, 33, 65, 118, }, { 35, 215, 162, 56, 117, 197, 3, 22, 106, 21, 204, 170, 206, 66, 130, 236, }, { 231, 180, 220, 4, 104, 183, 32, 194, 74, 226, 87, 157, 214, 204, 27, 144, }, { 37, 41, 60, 179, 21, 205, 209, 27, 124, 202, 191, 1, 33, 181, 200, 75, }, { 94, 19, 186, 25, 169, 105, 200, 24, 140, 208, 84, 126, 101, 222, 44, 194, }, { 181, 152, 153, 200, 1, 206, 143, 192, 234, 79, 229, 118, 174, 63, 163, 223, }, { 30, 128, 163, 226, 35, 40, 28, 57, 78, 37, 124, 66, 213, 173, 161, 126, }, { 162, 166, 20, 208, 178, 250, 79, 9, 149, 70, 212, 190, 31, 210, 249, 57, }, { 223, 98, 12, 241, 110, 86, 132, 7, 115, 131, 76, 106, 180, 78, 87, 23, }, { 166, 179, 65, 34, 242, 75, 211, 190, 48, 109, 55, 205, 20, 201, 52, 66, }, { 254, 94, 101, 176, 59, 42, 201, 171, 170, 98, 16, 24, 158, 224, 82, 39, }, { 172, 114, 32, 124, 82, 83, 102, 169, 10, 207, 162, 243, 230, 19, 234, 104, }, { 34, 67, 38, 229, 101, 120, 36, 75, 210, 111, 132, 198, 188, 52, 32, 130, }, { 249, 52, 127, 230, 75, 159, 60, 251, 4, 199, 43, 223, 3, 97, 186, 238, }, { 226, 53, 13, 43, 56, 187, 155, 40, 87, 179, 252, 130, 175, 161, 116, 133, }, { 74, 82, 120, 165, 42, 89, 97, 54, 248, 87, 189, 2, 66, 169, 83, 150, }, { 188, 38, 183, 50, 145, 210, 83, 48, 219, 99, 168, 252, 202, 127, 88, 71, }, { 53, 125, 171, 253, 214, 76, 228, 130, 173, 102, 181, 14, 13, 217, 122, 100, }, { 202, 183, 74, 144, 253, 219, 10, 116, 191, 126, 237, 122, 225, 79, 138, 45, }, { 238, 10, 242, 254, 248, 171, 252, 50, 123, 206, 26, 23, 178, 140, 224, 8, }, { 120, 69, 201, 14, 140, 160, 112, 228, 251, 148, 51, 203, 210, 241, 193, 59, }, { 5, 129, 209, 47, 80, 12, 187, 234, 29, 81, 171, 31, 121, 109, 111, 21, }, { 107, 110, 17, 228, 127, 37, 44, 154, 33, 182, 225, 112, 104, 7, 86, 166, }, { 81, 83, 10, 104, 89, 125, 198, 229, 171, 35, 106, 95, 238, 105, 157, 253, }, { 225, 74, 66, 143, 8, 191, 242, 207, 92, 61, 36, 54, 57, 59, 81, 55, }, { 89, 121, 160, 79, 217, 220, 61, 72, 34, 117, 111, 185, 248, 95, 196, 11, }, { 163, 50, 144, 13, 162, 71, 104, 84, 45, 60, 156, 210, 109, 164, 91, 87, }, { 242, 97, 154, 101, 251, 58, 174, 177, 134, 31, 246, 141, 131, 205, 198, 170, }, { 113, 251, 231, 244, 28, 188, 172, 20, 202, 184, 126, 65, 182, 177, 58, 163, }, { 86, 57, 16, 62, 41, 200, 51, 181, 5, 134, 81, 152, 115, 232, 117, 52, }, { 17, 192, 19, 147, 211, 60, 18, 196, 105, 214, 66, 99, 94, 26, 16, 65, }, { 106, 250, 149, 57, 111, 152, 11, 199, 153, 204, 169, 28, 26, 113, 244, 200, }, { 137, 91, 28, 207, 71, 158, 183, 178, 118, 5, 29, 242, 199, 166, 34, 35, }, { 148, 164, 240, 137, 84, 178, 194, 108, 51, 174, 185, 4, 132, 145, 166, 239, }, { 101, 186, 37, 72, 159, 140, 5, 58, 190, 63, 151, 61, 145, 198, 69, 247, }, { 140, 218, 205, 224, 23, 146, 12, 88, 107, 84, 182, 237, 190, 203, 77, 54, }, { 187, 76, 173, 100, 225, 103, 166, 96, 117, 198, 147, 59, 87, 254, 176, 142, }, { 119, 5, 121, 127, 124, 180, 126, 25, 220, 103, 13, 234, 89, 70, 112, 4, }, { 60, 195, 133, 7, 70, 80, 56, 114, 156, 74, 248, 132, 105, 153, 129, 252, }, { 123, 58, 134, 170, 188, 164, 25, 3, 240, 26, 235, 127, 68, 107, 228, 137, }, { 40, 130, 71, 187, 197, 96, 145, 92, 232, 205, 17, 248, 78, 238, 254, 168, }, { 171, 24, 58, 42, 34, 230, 147, 249, 164, 106, 153, 52, 123, 146, 2, 161, }, { 210, 201, 119, 249, 190, 251, 196, 64, 231, 132, 226, 147, 219, 21, 97, 244, }, { 49, 104, 254, 15, 150, 253, 120, 53, 8, 77, 86, 125, 6, 194, 183, 31, }, { 222, 246, 136, 44, 126, 235, 163, 90, 203, 249, 4, 6, 198, 56, 245, 121, }, { 196, 99, 126, 60, 29, 114, 35, 212, 32, 247, 155, 55, 24, 142, 153, 124, }, { 95, 135, 62, 196, 185, 212, 239, 69, 52, 170, 28, 18, 23, 168, 142, 172, }, { 204, 73, 212, 27, 157, 211, 216, 121, 169, 161, 158, 209, 14, 184, 192, 138, }, { 207, 54, 155, 191, 173, 215, 177, 158, 162, 47, 70, 101, 152, 34, 229, 56, }, { 118, 145, 253, 162, 108, 9, 89, 68, 100, 29, 69, 134, 43, 48, 210, 106, }, { 44, 151, 18, 73, 133, 209, 13, 235, 77, 230, 242, 139, 69, 245, 51, 211, }, { 184, 51, 226, 192, 209, 99, 207, 135, 126, 72, 75, 143, 193, 100, 149, 60, }, { 216, 8, 22, 167, 30, 227, 113, 87, 221, 38, 119, 173, 41, 207, 191, 222, }, { 46, 124, 217, 48, 165, 104, 67, 81, 254, 18, 98, 83, 161, 25, 180, 15, }, { 54, 2, 228, 89, 230, 72, 141, 101, 166, 232, 109, 186, 155, 67, 95, 214, }, { 219, 119, 89, 3, 46, 231, 24, 176, 214, 168, 175, 25, 191, 85, 154, 108, }, { 105, 133, 218, 157, 95, 156, 98, 32, 146, 66, 113, 168, 140, 235, 209, 122, }, { 179, 102, 7, 67, 97, 198, 93, 205, 252, 144, 150, 221, 65, 200, 233, 120, }, { 20, 65, 194, 188, 131, 48, 169, 46, 116, 135, 233, 124, 39, 119, 127, 84, }, { 149, 48, 116, 84, 68, 15, 229, 49, 139, 212, 241, 104, 246, 231, 4, 129, }, { 190, 205, 124, 75, 177, 107, 29, 138, 104, 151, 56, 36, 46, 147, 223, 155, }, { 98, 208, 63, 30, 239, 57, 240, 106, 16, 154, 172, 250, 12, 71, 173, 62, }, { 161, 217, 91, 116, 130, 254, 38, 238, 158, 200, 12, 10, 137, 72, 220, 139, }, { 59, 169, 159, 81, 54, 229, 205, 34, 50, 239, 195, 67, 244, 24, 105, 53, }, { 22, 170, 9, 197, 163, 137, 231, 148, 199, 115, 121, 164, 195, 155, 248, 136, }, { 102, 197, 106, 236, 175, 136, 108, 221, 181, 177, 79, 137, 7, 92, 96, 69, }, { 233, 96, 232, 168, 136, 30, 9, 98, 213, 107, 33, 208, 47, 13, 8, 193, }, { 92, 248, 113, 96, 137, 208, 134, 162, 63, 36, 196, 166, 129, 50, 171, 30, }, { 108, 4, 11, 178, 15, 144, 217, 202, 143, 19, 218, 183, 245, 134, 190, 111, }, { 109, 144, 143, 111, 31, 45, 254, 151, 55, 105, 146, 219, 135, 240, 28, 1, }, { 173, 230, 164, 161, 66, 238, 65, 244, 178, 181, 234, 159, 148, 101, 72, 6, }, { 55, 150, 96, 132, 246, 245, 170, 56, 30, 146, 37, 214, 233, 53, 253, 184, }, { 97, 175, 112, 186, 223, 61, 153, 141, 27, 20, 116, 78, 154, 221, 136, 140, }, { 75, 198, 252, 120, 58, 228, 70, 107, 64, 45, 245, 110, 48, 223, 241, 248, }, { 185, 167, 102, 29, 193, 222, 232, 218, 198, 50, 3, 227, 179, 18, 55, 82, }, { 227, 161, 137, 246, 40, 6, 188, 117, 239, 201, 180, 238, 221, 215, 214, 235, }, { 186, 216, 41, 185, 241, 218, 129, 61, 205, 188, 219, 87, 37, 136, 18, 224, }, { 241, 30, 213, 193, 203, 62, 199, 86, 141, 145, 46, 57, 21, 87, 227, 24, }, { 160, 77, 223, 169, 146, 67, 1, 179, 38, 178, 68, 102, 251, 62, 126, 229, }, { 133, 100, 227, 26, 135, 142, 208, 168, 90, 120, 251, 103, 218, 139, 182, 174, }, { 131, 154, 125, 145, 231, 134, 2, 165, 76, 167, 136, 204, 53, 124, 252, 9, }, { 218, 227, 221, 222, 62, 90, 63, 237, 110, 210, 231, 117, 205, 35, 56, 2, }, { 71, 249, 3, 173, 250, 244, 33, 113, 108, 80, 19, 251, 45, 242, 101, 117, }, { 197, 247, 250, 225, 13, 207, 4, 137, 152, 141, 211, 91, 106, 248, 59, 18, }, { 176, 25, 72, 231, 81, 194, 52, 42, 247, 30, 78, 105, 215, 82, 204, 202, }, { 51, 131, 53, 118, 182, 68, 54, 143, 187, 185, 198, 165, 226, 46, 48, 195, }, { 250, 75, 48, 66, 123, 155, 85, 28, 15, 73, 243, 107, 149, 251, 159, 92, }, { 150, 79, 59, 240, 116, 11, 140, 214, 128, 90, 41, 220, 96, 125, 33, 51, }, { 111, 123, 68, 22, 63, 148, 176, 45, 132, 157, 2, 3, 99, 28, 155, 221, }, { 110, 239, 192, 203, 47, 41, 151, 112, 60, 231, 74, 111, 17, 106, 57, 179, }, { 194, 157, 224, 183, 125, 122, 241, 217, 54, 40, 232, 156, 247, 121, 211, 219, }, { 246, 116, 207, 151, 187, 139, 50, 6, 35, 52, 21, 254, 136, 214, 11, 209, }, { 80, 199, 142, 181, 73, 192, 225, 184, 19, 89, 34, 51, 156, 31, 63, 147, }, { 255, 202, 225, 109, 43, 151, 238, 246, 18, 24, 88, 116, 236, 150, 240, 73, }, { 93, 108, 245, 189, 153, 109, 161, 255, 135, 94, 140, 202, 243, 68, 9, 112, }, { 169, 243, 241, 83, 2, 95, 221, 67, 23, 158, 9, 236, 159, 126, 133, 125, }, { 142, 49, 6, 153, 55, 43, 66, 226, 216, 160, 38, 53, 90, 39, 202, 234, }, { 23, 62, 141, 24, 179, 52, 192, 201, 127, 9, 49, 200, 177, 237, 90, 230, }, { 27, 1, 114, 205, 115, 36, 167, 211, 83, 116, 215, 93, 172, 192, 206, 107, }, { 151, 219, 191, 45, 100, 182, 171, 139, 56, 32, 97, 176, 18, 11, 131, 93, }, { 125, 196, 24, 33, 220, 172, 203, 14, 230, 197, 152, 212, 171, 156, 174, 46, }, { 236, 225, 57, 135, 216, 18, 178, 136, 200, 58, 138, 207, 86, 96, 103, 212, }, { 88, 237, 36, 146, 201, 97, 26, 21, 154, 15, 39, 213, 138, 41, 102, 101, }, { 247, 224, 75, 74, 171, 54, 21, 91, 155, 78, 93, 146, 250, 160, 169, 191, }, { 31, 20, 39, 63, 51, 149, 59, 100, 246, 95, 52, 46, 167, 219, 3, 16, }, { 251, 223, 180, 159, 107, 38, 114, 65, 183, 51, 187, 7, 231, 141, 61, 50, }, { 124, 80, 156, 252, 204, 17, 236, 83, 94, 191, 208, 184, 217, 234, 12, 64, }, { 9, 190, 46, 250, 144, 28, 220, 240, 49, 44, 77, 138, 100, 64, 251, 152, }, { 13, 171, 123, 8, 208, 173, 64, 71, 148, 7, 174, 249, 111, 91, 54, 227, }, { 122, 174, 2, 119, 172, 25, 62, 94, 72, 96, 163, 19, 54, 29, 70, 231, }, { 103, 81, 238, 49, 191, 53, 75, 128, 13, 203, 7, 229, 117, 42, 194, 43, }, { 69, 18, 200, 212, 218, 77, 111, 203, 223, 164, 131, 35, 201, 30, 226, 169, }, { 135, 143, 40, 99, 167, 55, 158, 18, 233, 140, 107, 191, 62, 103, 49, 114, }, { 220, 29, 67, 85, 94, 82, 237, 224, 120, 13, 148, 222, 34, 212, 114, 165, }, { 232, 244, 108, 117, 152, 163, 46, 63, 109, 17, 105, 188, 93, 123, 170, 175, }, { 79, 211, 169, 138, 122, 85, 218, 220, 229, 6, 22, 29, 59, 196, 60, 131, }, { 29, 255, 236, 70, 19, 44, 117, 222, 69, 171, 164, 246, 67, 55, 132, 204, }, { 78, 71, 45, 87, 106, 232, 253, 129, 93, 124, 94, 113, 73, 178, 158, 237, }, { 4, 21, 85, 242, 64, 177, 156, 183, 165, 43, 227, 115, 11, 27, 205, 123, }, { 235, 139, 35, 209, 168, 167, 71, 216, 102, 159, 177, 8, 203, 225, 143, 29, }, { 248, 160, 251, 59, 91, 34, 27, 166, 188, 189, 99, 179, 113, 23, 24, 128, }, { 243, 245, 30, 184, 235, 135, 137, 236, 62, 101, 190, 225, 241, 187, 100, 196, }, { 62, 40, 78, 126, 102, 233, 118, 200, 47, 190, 104, 92, 141, 117, 6, 32, }, { 61, 87, 1, 218, 86, 237, 31, 47, 36, 48, 176, 232, 27, 239, 35, 146, }, { 189, 178, 51, 239, 129, 111, 116, 109, 99, 25, 224, 144, 184, 9, 250, 41, }, { 138, 36, 83, 107, 119, 154, 222, 85, 125, 139, 197, 70, 81, 60, 7, 145, }, { 136, 207, 152, 18, 87, 35, 144, 239, 206, 127, 85, 158, 181, 208, 128, 77, }, { 221, 137, 199, 136, 78, 239, 202, 189, 192, 119, 220, 178, 80, 162, 208, 203, }, { 205, 221, 80, 198, 141, 110, 255, 36, 17, 219, 214, 189, 124, 206, 98, 228, }, { 11, 85, 229, 131, 176, 165, 146, 74, 130, 216, 221, 82, 128, 172, 124, 68, }, { 19, 43, 216, 234, 243, 133, 92, 126, 218, 34, 210, 187, 186, 246, 151, 157, }, { 152, 155, 15, 92, 148, 162, 165, 118, 31, 211, 95, 145, 153, 188, 50, 98, }, { 2, 235, 203, 121, 32, 185, 78, 186, 179, 244, 144, 216, 228, 236, 135, 220, }, { 147, 206, 234, 223, 36, 7, 55, 60, 157, 11, 130, 195, 25, 16, 78, 38, }, { 128, 229, 50, 53, 215, 130, 107, 66, 71, 41, 80, 120, 163, 230, 217, 187, }, { 144, 177, 165, 123, 20, 3, 94, 219, 150, 133, 90, 119, 143, 138, 107, 148, }, { 208, 34, 188, 128, 158, 66, 138, 250, 84, 112, 114, 75, 63, 249, 230, 40, }, { 36, 189, 184, 110, 5, 112, 246, 70, 196, 176, 247, 109, 83, 195, 106, 37, }, { 52, 233, 47, 32, 198, 241, 195, 223, 21, 28, 253, 98, 127, 175, 216, 10, }, { 203, 35, 206, 77, 237, 102, 45, 41, 7, 4, 165, 22, 147, 57, 40, 67, }, { 237, 117, 189, 90, 200, 175, 149, 213, 112, 64, 194, 163, 36, 22, 197, 186, }, { 244, 159, 4, 238, 155, 50, 124, 188, 144, 192, 133, 38, 108, 58, 140, 13, }, { 206, 162, 31, 98, 189, 106, 150, 195, 26, 85, 14, 9, 234, 84, 71, 86, }, { 153, 15, 139, 129, 132, 31, 130, 43, 167, 169, 23, 253, 235, 202, 144, 12, }, { 16, 84, 151, 78, 195, 129, 53, 153, 209, 172, 10, 15, 44, 108, 178, 47, }, { 68, 134, 76, 9, 202, 240, 72, 150, 103, 222, 203, 79, 187, 104, 64, 199, }, { 64, 147, 25, 251, 138, 65, 212, 33, 194, 245, 40, 60, 176, 115, 141, 188, }, { 146, 90, 110, 2, 52, 186, 16, 97, 37, 113, 202, 175, 107, 102, 236, 72, }, { 58, 61, 27, 140, 38, 88, 234, 127, 138, 149, 139, 47, 134, 110, 203, 91, }, { 1, 148, 132, 221, 16, 189, 39, 93, 184, 122, 72, 108, 114, 118, 162, 110, }, { 38, 86, 115, 23, 37, 201, 184, 252, 119, 68, 103, 181, 183, 47, 237, 249, }, { 18, 191, 92, 55, 227, 56, 123, 35, 98, 88, 154, 215, 200, 128, 53, 243, }, { 26, 149, 246, 16, 99, 153, 128, 142, 235, 14, 159, 49, 222, 182, 108, 5, }, { 72, 185, 179, 220, 10, 224, 47, 140, 75, 163, 45, 218, 166, 69, 212, 74, }, { 104, 17, 94, 64, 79, 33, 69, 125, 42, 56, 57, 196, 254, 157, 115, 20, }, { 245, 11, 128, 51, 139, 143, 91, 225, 40, 186, 205, 74, 30, 76, 46, 99, }, { 129, 113, 182, 232, 199, 63, 76, 31, 255, 83, 24, 20, 209, 144, 123, 213, }, { 139, 176, 215, 182, 103, 39, 249, 8, 197, 241, 141, 42, 35, 74, 165, 255, }, { 199, 28, 49, 152, 45, 118, 74, 51, 43, 121, 67, 131, 142, 20, 188, 206, }, { 214, 220, 34, 11, 254, 74, 88, 247, 66, 175, 1, 224, 208, 14, 172, 143, }, { 32, 168, 237, 156, 69, 193, 106, 241, 97, 155, 20, 30, 88, 216, 167, 94, }, { 10, 193, 97, 94, 160, 24, 181, 23, 58, 162, 149, 62, 242, 218, 222, 42, }, { 8, 42, 170, 39, 128, 161, 251, 173, 137, 86, 5, 230, 22, 54, 89, 246, }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, { 76, 172, 230, 46, 74, 81, 179, 59, 238, 136, 206, 169, 173, 94, 25, 49, }, { 215, 72, 166, 214, 238, 247, 127, 170, 250, 213, 73, 140, 162, 120, 14, 225, }, { 116, 122, 54, 219, 76, 176, 23, 254, 215, 233, 213, 94, 207, 220, 85, 182, }, }, { { 204, 236, 24, 21, 27, 17, 151, 195, 240, 154, 125, 62, 119, 58, 147, 155, }, { 3, 82, 76, 50, 164, 145, 5, 205, 189, 123, 68, 14, 113, 173, 166, 35, }, { 23, 12, 154, 169, 24, 146, 57, 216, 173, 10, 242, 70, 120, 125, 2, 116, }, { 165, 67, 171, 4, 134, 104, 44, 60, 132, 131, 53, 23, 219, 123, 64, 152, }, { 212, 57, 61, 70, 114, 19, 191, 100, 81, 196, 24, 78, 121, 27, 234, 64, }, { 252, 133, 82, 179, 201, 21, 199, 78, 113, 38, 183, 222, 107, 120, 97, 238, }, { 214, 228, 244, 219, 11, 76, 185, 83, 135, 150, 96, 251, 39, 108, 46, 195, }, { 118, 81, 139, 137, 162, 84, 154, 251, 7, 152, 153, 254, 111, 35, 71, 62, }, { 210, 157, 165, 34, 249, 242, 181, 61, 232, 50, 144, 82, 155, 130, 101, 6, }, { 32, 78, 205, 196, 156, 185, 96, 246, 254, 105, 140, 1, 169, 124, 29, 231, }, { 101, 36, 64, 217, 72, 120, 175, 77, 197, 54, 155, 17, 171, 176, 14, 143, }, { 66, 65, 144, 214, 130, 238, 198, 24, 233, 128, 163, 183, 207, 143, 254, 142, }, { 70, 56, 193, 47, 112, 80, 202, 118, 134, 36, 83, 30, 115, 97, 181, 75, }, { 187, 50, 22, 51, 100, 139, 14, 194, 156, 43, 216, 123, 55, 195, 182, 5, }, { 44, 197, 62, 12, 73, 184, 116, 68, 79, 70, 95, 57, 174, 141, 192, 107, }, { 37, 184, 25, 146, 179, 201, 111, 98, 250, 228, 64, 19, 58, 72, 52, 130, }, { 46, 24, 247, 145, 48, 231, 114, 115, 153, 20, 39, 140, 240, 250, 4, 232, }, { 127, 44, 172, 23, 88, 37, 129, 221, 178, 58, 134, 212, 251, 230, 179, 215, }, { 173, 177, 9, 53, 161, 215, 52, 224, 90, 8, 22, 134, 96, 100, 214, 209, }, { 6, 164, 152, 100, 139, 225, 10, 89, 185, 246, 136, 28, 226, 153, 143, 70, }, { 107, 114, 122, 140, 228, 38, 189, 200, 162, 75, 48, 156, 242, 54, 23, 128, }, { 59, 201, 164, 165, 81, 42, 77, 156, 226, 76, 173, 127, 214, 240, 194, 31, }, { 106, 253, 255, 35, 57, 232, 190, 50, 201, 98, 12, 39, 221, 236, 117, 32, }, { 126, 163, 41, 184, 133, 235, 130, 39, 217, 19, 186, 111, 212, 60, 209, 119, }, { 60, 226, 185, 110, 7, 5, 68, 63, 48, 147, 25, 216, 27, 179, 47, 249, }, { 132, 130, 227, 111, 199, 31, 79, 48, 17, 195, 133, 173, 93, 221, 63, 223, }, { 103, 249, 137, 68, 49, 39, 169, 122, 19, 100, 227, 164, 245, 199, 202, 12, }, { 182, 54, 96, 84, 108, 68, 25, 138, 70, 45, 55, 248, 31, 232, 9, 41, }, { 22, 131, 31, 6, 197, 92, 58, 34, 198, 35, 206, 253, 87, 167, 96, 212, }, { 136, 9, 16, 167, 18, 30, 91, 130, 160, 236, 86, 149, 90, 44, 226, 83, }, { 88, 73, 124, 24, 146, 179, 232, 136, 158, 140, 190, 114, 159, 217, 67, 214, }, { 188, 25, 11, 248, 50, 164, 7, 97, 78, 244, 108, 220, 250, 128, 91, 227, }, { 222, 22, 86, 234, 44, 243, 161, 143, 89, 29, 67, 106, 156, 115, 184, 138, }, { 194, 186, 34, 64, 183, 79, 133, 70, 151, 231, 214, 179, 46, 188, 138, 148, }, { 78, 202, 99, 30, 87, 239, 210, 170, 88, 175, 112, 143, 200, 126, 35, 2, }, { 63, 176, 245, 92, 163, 148, 65, 242, 141, 232, 93, 214, 106, 30, 137, 218, }, { 14, 86, 58, 85, 172, 94, 18, 133, 103, 125, 171, 141, 89, 134, 25, 15, }, { 31, 254, 56, 152, 63, 45, 33, 4, 115, 129, 209, 215, 195, 98, 148, 61, }, { 153, 161, 18, 106, 129, 109, 104, 3, 180, 16, 44, 207, 192, 200, 111, 97, }, { 12, 139, 243, 200, 213, 1, 20, 178, 177, 47, 211, 56, 7, 241, 221, 140, }, { 112, 245, 19, 237, 41, 181, 144, 162, 190, 110, 17, 226, 141, 186, 200, 120, }, { 68, 229, 8, 178, 9, 15, 204, 65, 80, 118, 43, 171, 45, 22, 113, 200, }, { 45, 74, 187, 163, 148, 118, 119, 190, 36, 111, 99, 130, 129, 87, 162, 203, }, { 95, 98, 97, 211, 196, 156, 225, 43, 76, 83, 10, 213, 82, 154, 174, 48, }, { 120, 7, 177, 220, 14, 10, 136, 126, 96, 229, 50, 115, 54, 165, 94, 49, }, { 203, 199, 5, 222, 77, 62, 158, 96, 34, 69, 201, 153, 186, 121, 126, 125, }, { 213, 182, 184, 233, 175, 221, 188, 158, 58, 237, 36, 245, 86, 193, 136, 224, }, { 115, 167, 95, 223, 141, 36, 149, 111, 3, 21, 85, 236, 252, 23, 110, 91, }, { 92, 48, 45, 225, 96, 13, 228, 230, 241, 40, 78, 219, 35, 55, 8, 19, }, { 254, 88, 155, 46, 176, 74, 193, 121, 167, 116, 207, 107, 53, 15, 165, 109, }, { 111, 11, 43, 117, 22, 152, 177, 166, 205, 239, 192, 53, 78, 216, 92, 69, }, { 26, 8, 236, 206, 16, 93, 46, 144, 119, 12, 29, 197, 80, 86, 189, 88, }, { 7, 43, 29, 203, 86, 47, 9, 163, 210, 223, 180, 167, 205, 67, 237, 230, }, { 238, 127, 28, 76, 254, 247, 241, 2, 216, 161, 137, 138, 128, 49, 74, 255, }, { 234, 6, 77, 181, 12, 73, 253, 108, 183, 5, 121, 35, 60, 223, 1, 58, }, { 200, 149, 73, 236, 233, 175, 155, 173, 159, 62, 141, 151, 203, 212, 216, 94, }, { 140, 112, 65, 94, 224, 160, 87, 236, 207, 72, 166, 60, 230, 194, 169, 150, }, { 181, 100, 44, 102, 200, 213, 28, 71, 251, 86, 115, 246, 110, 69, 175, 10, }, { 56, 155, 232, 151, 245, 187, 72, 81, 95, 55, 233, 113, 167, 93, 100, 60, }, { 89, 198, 249, 183, 79, 125, 235, 114, 245, 165, 130, 201, 176, 3, 33, 118, }, { 105, 175, 179, 17, 157, 121, 187, 255, 116, 25, 72, 41, 172, 65, 211, 3, }, { 16, 39, 135, 98, 78, 189, 48, 123, 127, 213, 70, 225, 181, 62, 239, 146, }, { 240, 14, 161, 123, 28, 20, 211, 252, 192, 9, 100, 230, 108, 137, 188, 98, }, { 163, 231, 51, 96, 13, 137, 38, 101, 61, 117, 189, 11, 57, 226, 207, 222, }, { 9, 125, 39, 158, 250, 113, 27, 38, 181, 162, 31, 42, 148, 197, 244, 233, }, { 13, 4, 118, 103, 8, 207, 23, 72, 218, 6, 239, 131, 40, 43, 191, 44, }, { 253, 10, 215, 28, 20, 219, 196, 180, 26, 15, 139, 101, 68, 162, 3, 78, }, { 27, 135, 105, 97, 205, 147, 45, 106, 28, 37, 33, 126, 127, 140, 223, 248, }, { 39, 101, 208, 15, 202, 150, 105, 85, 44, 182, 56, 166, 100, 63, 240, 1, }, { 141, 255, 196, 241, 61, 110, 84, 22, 164, 97, 154, 135, 201, 24, 203, 54, }, { 242, 211, 104, 230, 101, 75, 213, 203, 22, 91, 28, 83, 50, 254, 120, 225, }, { 146, 1, 252, 105, 2, 67, 117, 18, 215, 224, 75, 80, 10, 122, 95, 11, }, { 109, 214, 226, 232, 111, 199, 183, 145, 27, 189, 184, 128, 16, 175, 152, 198, }, { 93, 191, 168, 78, 189, 195, 231, 28, 154, 1, 114, 96, 12, 237, 106, 179, }, { 241, 129, 36, 212, 193, 218, 208, 6, 171, 32, 88, 93, 67, 83, 222, 194, }, { 33, 193, 72, 107, 65, 119, 99, 12, 149, 64, 176, 186, 134, 166, 127, 71, }, { 55, 66, 87, 109, 132, 43, 89, 46, 83, 99, 126, 71, 209, 1, 31, 147, }, { 64, 156, 89, 75, 251, 177, 192, 47, 63, 210, 219, 2, 145, 248, 58, 13, }, { 142, 173, 136, 195, 153, 255, 81, 219, 25, 26, 222, 137, 184, 181, 109, 21, }, { 232, 219, 132, 40, 117, 22, 251, 91, 97, 87, 1, 150, 98, 168, 197, 185, }, { 228, 80, 119, 224, 160, 23, 239, 233, 208, 120, 210, 174, 101, 89, 24, 53, }, { 236, 162, 213, 209, 135, 168, 247, 53, 14, 243, 241, 63, 222, 70, 142, 124, }, { 158, 138, 15, 161, 215, 66, 97, 160, 102, 207, 152, 104, 13, 139, 130, 135, }, { 156, 87, 198, 60, 174, 29, 103, 151, 176, 157, 224, 221, 83, 252, 70, 4, }, { 209, 207, 233, 16, 93, 99, 176, 240, 85, 73, 212, 92, 234, 47, 195, 37, }, { 231, 2, 59, 210, 4, 134, 234, 36, 109, 3, 150, 160, 20, 244, 190, 22, }, { 184, 96, 90, 1, 192, 26, 11, 15, 33, 80, 156, 117, 70, 110, 16, 38, }, { 47, 151, 114, 62, 237, 41, 113, 137, 242, 61, 27, 55, 223, 32, 102, 72, }, { 226, 244, 239, 132, 43, 246, 229, 176, 105, 142, 90, 178, 135, 192, 151, 115, }, { 138, 212, 217, 58, 107, 65, 93, 181, 118, 190, 46, 32, 4, 91, 38, 208, }, { 215, 107, 113, 116, 214, 130, 186, 169, 236, 191, 92, 64, 8, 182, 76, 99, }, { 180, 235, 169, 201, 21, 27, 31, 189, 144, 127, 79, 77, 65, 159, 205, 170, }, { 41, 51, 234, 90, 102, 200, 123, 208, 75, 203, 147, 43, 61, 185, 233, 14, }, { 19, 117, 203, 80, 234, 44, 53, 182, 194, 174, 2, 239, 196, 147, 73, 177, }, { 152, 46, 151, 197, 92, 163, 107, 249, 223, 57, 16, 116, 239, 18, 13, 193, }, { 128, 251, 178, 150, 53, 161, 67, 94, 126, 103, 117, 4, 225, 51, 116, 26, }, { 166, 17, 231, 54, 34, 249, 41, 241, 57, 248, 113, 25, 170, 214, 230, 187, }, { 98, 15, 93, 18, 30, 87, 166, 238, 23, 233, 47, 182, 102, 243, 227, 105, }, { 179, 192, 180, 2, 67, 52, 22, 30, 66, 160, 251, 234, 140, 220, 32, 76, }, { 94, 237, 228, 124, 25, 82, 226, 209, 39, 122, 54, 110, 125, 64, 204, 144, }, { 114, 40, 218, 112, 80, 234, 150, 149, 104, 60, 105, 87, 211, 205, 12, 251, }, { 67, 206, 21, 121, 95, 32, 197, 226, 130, 169, 159, 12, 224, 85, 156, 46, }, { 52, 16, 27, 95, 32, 186, 92, 227, 238, 24, 58, 73, 160, 172, 185, 176, }, { 53, 159, 158, 240, 253, 116, 95, 25, 133, 49, 6, 242, 143, 118, 219, 16, }, { 82, 102, 23, 180, 204, 83, 246, 99, 150, 85, 229, 86, 122, 177, 17, 28, }, { 38, 234, 85, 160, 23, 88, 106, 175, 71, 159, 4, 29, 75, 229, 146, 161, }, { 125, 241, 101, 138, 33, 122, 135, 234, 100, 104, 254, 97, 165, 145, 119, 84, }, { 183, 185, 229, 251, 177, 138, 26, 112, 45, 4, 11, 67, 48, 50, 107, 137, }, { 10, 47, 107, 172, 94, 224, 30, 235, 8, 217, 91, 36, 229, 104, 82, 202, }, { 69, 106, 141, 29, 212, 193, 207, 187, 59, 95, 23, 16, 2, 204, 19, 104, }, { 129, 116, 55, 57, 232, 111, 64, 164, 21, 78, 73, 191, 206, 233, 22, 186, }, { 110, 132, 174, 218, 203, 86, 178, 92, 166, 198, 252, 142, 97, 2, 62, 229, }, { 83, 233, 146, 27, 17, 157, 245, 153, 253, 124, 217, 237, 85, 107, 115, 188, }, { 74, 179, 50, 231, 165, 81, 222, 196, 55, 11, 128, 38, 116, 144, 104, 199, }, { 121, 136, 52, 115, 211, 196, 139, 132, 11, 204, 14, 200, 25, 127, 60, 145, }, { 50, 180, 131, 59, 171, 91, 86, 186, 87, 238, 178, 85, 66, 53, 54, 246, }, { 97, 93, 17, 32, 186, 198, 163, 35, 170, 146, 107, 184, 23, 94, 69, 74, }, { 251, 174, 79, 120, 159, 58, 206, 237, 163, 249, 3, 121, 166, 59, 140, 8, }, { 57, 20, 109, 56, 40, 117, 75, 171, 52, 30, 213, 202, 136, 135, 6, 156, }, { 192, 103, 235, 221, 206, 16, 131, 113, 65, 181, 174, 6, 112, 203, 78, 23, }, { 250, 33, 202, 215, 66, 244, 205, 23, 200, 208, 63, 194, 137, 225, 238, 168, }, { 91, 27, 48, 42, 54, 34, 237, 69, 35, 247, 250, 124, 238, 116, 229, 245, }, { 164, 204, 46, 171, 91, 166, 47, 198, 239, 170, 9, 172, 244, 161, 34, 56, }, { 186, 189, 147, 156, 185, 69, 13, 56, 247, 2, 228, 192, 24, 25, 212, 165, }, { 218, 111, 7, 19, 222, 77, 173, 225, 54, 185, 179, 195, 32, 157, 243, 79, }, { 76, 23, 170, 131, 46, 176, 212, 157, 142, 253, 8, 58, 150, 9, 231, 129, }, { 5, 246, 212, 86, 47, 112, 15, 148, 4, 141, 204, 18, 147, 52, 41, 101, }, { 195, 53, 167, 239, 106, 129, 134, 188, 252, 206, 234, 8, 1, 102, 232, 52, }, { 58, 70, 33, 10, 140, 228, 78, 102, 137, 101, 145, 196, 249, 42, 160, 191, }, { 130, 38, 123, 11, 76, 254, 69, 105, 168, 53, 13, 177, 191, 68, 176, 153, }, { 24, 213, 37, 83, 105, 2, 40, 167, 161, 94, 101, 112, 14, 33, 121, 219, }, { 201, 26, 204, 67, 52, 97, 152, 87, 244, 23, 177, 44, 228, 14, 186, 254, }, { 104, 32, 54, 190, 64, 183, 184, 5, 31, 48, 116, 146, 131, 155, 177, 163, }, { 246, 170, 57, 31, 151, 245, 217, 165, 121, 255, 236, 250, 142, 16, 51, 36, }, { 99, 128, 216, 189, 195, 153, 165, 20, 124, 192, 19, 13, 73, 41, 129, 201, }, { 135, 208, 175, 93, 99, 142, 74, 253, 172, 184, 193, 163, 44, 112, 153, 252, }, { 73, 225, 126, 213, 1, 192, 219, 9, 138, 112, 196, 40, 5, 61, 206, 228, }, { 54, 205, 210, 194, 89, 229, 90, 212, 56, 74, 66, 252, 254, 219, 125, 51, }, { 145, 83, 176, 91, 166, 210, 112, 223, 106, 155, 15, 94, 123, 215, 249, 40, }, { 151, 247, 40, 63, 45, 51, 122, 134, 211, 109, 135, 66, 153, 78, 118, 110, }, { 51, 59, 6, 148, 118, 149, 85, 64, 60, 199, 142, 238, 109, 239, 84, 86, }, { 8, 242, 162, 49, 39, 191, 24, 220, 222, 139, 35, 145, 187, 31, 150, 73, }, { 124, 126, 224, 37, 252, 180, 132, 16, 15, 65, 194, 218, 138, 75, 21, 244, }, { 2, 221, 201, 157, 121, 95, 6, 55, 214, 82, 120, 181, 94, 119, 196, 131, }, { 119, 222, 14, 38, 127, 154, 153, 1, 108, 177, 165, 69, 64, 249, 37, 158, }, { 133, 13, 102, 192, 26, 209, 76, 202, 122, 234, 185, 22, 114, 7, 93, 127, }, { 102, 118, 12, 235, 236, 233, 170, 128, 120, 77, 223, 31, 218, 29, 168, 172, }, { 65, 19, 220, 228, 38, 127, 195, 213, 84, 251, 231, 185, 190, 34, 88, 173, }, { 48, 105, 74, 166, 210, 4, 80, 141, 129, 188, 202, 224, 28, 66, 242, 117, }, { 205, 99, 157, 186, 198, 223, 148, 57, 155, 179, 65, 133, 88, 224, 241, 59, }, { 208, 64, 108, 191, 128, 173, 179, 10, 62, 96, 232, 231, 197, 245, 161, 133, }, { 217, 61, 75, 33, 122, 220, 168, 44, 139, 194, 247, 205, 81, 48, 85, 108, }, { 169, 200, 88, 204, 83, 105, 56, 142, 53, 172, 230, 47, 220, 138, 157, 20, }, { 170, 154, 20, 254, 247, 248, 61, 67, 136, 215, 162, 33, 173, 39, 59, 55, }, { 197, 145, 63, 139, 225, 96, 140, 229, 69, 56, 98, 20, 227, 255, 103, 114, }, { 96, 210, 148, 143, 103, 8, 160, 217, 193, 187, 87, 3, 56, 132, 39, 234, }, { 248, 252, 3, 74, 59, 171, 203, 32, 30, 130, 71, 119, 215, 150, 42, 43, }, { 4, 121, 81, 249, 242, 190, 12, 110, 111, 164, 240, 169, 188, 238, 75, 197, }, { 144, 220, 53, 244, 123, 28, 115, 37, 1, 178, 51, 229, 84, 13, 155, 136, }, { 230, 141, 190, 125, 217, 72, 233, 222, 6, 42, 170, 27, 59, 46, 220, 182, }, { 150, 120, 173, 144, 240, 253, 121, 124, 184, 68, 187, 249, 182, 148, 20, 206, }, { 175, 108, 192, 168, 216, 136, 50, 215, 140, 90, 110, 51, 62, 19, 18, 82, }, { 198, 195, 115, 185, 69, 241, 137, 40, 248, 67, 38, 26, 146, 82, 193, 81, }, { 167, 158, 98, 153, 255, 55, 42, 11, 82, 209, 77, 162, 133, 12, 132, 27, }, { 161, 58, 250, 253, 116, 214, 32, 82, 235, 39, 197, 190, 103, 149, 11, 93, }, { 216, 178, 206, 142, 167, 18, 171, 214, 224, 235, 203, 118, 126, 234, 55, 204, }, { 30, 113, 189, 55, 226, 227, 34, 254, 24, 168, 237, 108, 236, 184, 246, 157, }, { 77, 152, 47, 44, 243, 126, 215, 103, 229, 212, 52, 129, 185, 211, 133, 33, }, { 100, 171, 197, 118, 149, 182, 172, 183, 174, 31, 167, 170, 132, 106, 108, 47, }, { 154, 243, 94, 88, 37, 252, 109, 206, 9, 107, 104, 193, 177, 101, 201, 66, }, { 227, 123, 106, 43, 246, 56, 230, 74, 2, 167, 102, 9, 168, 26, 245, 211, }, { 249, 115, 134, 229, 230, 101, 200, 218, 117, 171, 123, 204, 248, 76, 72, 139, }, { 247, 37, 188, 176, 74, 59, 218, 95, 18, 214, 208, 65, 161, 202, 81, 132, }, { 25, 90, 160, 252, 180, 204, 43, 93, 202, 119, 89, 203, 33, 251, 27, 123, }, { 131, 169, 254, 164, 145, 48, 70, 147, 195, 28, 49, 10, 144, 158, 210, 57, }, { 75, 60, 183, 72, 120, 159, 221, 62, 92, 34, 188, 157, 91, 74, 10, 103, }, { 79, 69, 230, 177, 138, 33, 209, 80, 51, 134, 76, 52, 231, 164, 65, 162, }, { 123, 85, 253, 238, 170, 155, 141, 179, 221, 158, 118, 125, 71, 8, 248, 18, }, { 239, 240, 153, 227, 35, 57, 242, 248, 179, 136, 181, 49, 175, 235, 40, 95, }, { 157, 216, 67, 147, 115, 211, 100, 109, 219, 180, 220, 102, 124, 38, 36, 164, }, { 116, 140, 66, 20, 219, 11, 156, 204, 209, 202, 225, 75, 49, 84, 131, 189, }, { 199, 76, 246, 22, 152, 63, 138, 210, 147, 106, 26, 161, 189, 136, 163, 241, }, { 202, 72, 128, 113, 144, 240, 157, 154, 73, 108, 245, 34, 149, 163, 28, 221, }, { 108, 89, 103, 71, 178, 9, 180, 107, 112, 148, 132, 59, 63, 117, 250, 102, }, { 243, 92, 237, 73, 184, 133, 214, 49, 125, 114, 32, 232, 29, 36, 26, 65, }, { 49, 230, 207, 9, 15, 202, 83, 119, 234, 149, 246, 91, 51, 152, 144, 213, }, { 62, 63, 112, 243, 126, 90, 66, 8, 230, 193, 97, 109, 69, 196, 235, 122, }, { 1, 143, 133, 175, 221, 206, 3, 250, 107, 41, 60, 187, 47, 218, 98, 160, }, { 219, 224, 130, 188, 3, 131, 174, 27, 93, 144, 143, 120, 15, 71, 145, 239, }, { 196, 30, 186, 36, 60, 174, 143, 31, 46, 17, 94, 175, 204, 37, 5, 210, }, { 225, 166, 163, 182, 143, 103, 224, 125, 212, 245, 30, 188, 246, 109, 49, 80, }, { 237, 45, 80, 126, 90, 102, 244, 207, 101, 218, 205, 132, 241, 156, 236, 220, }, { 224, 41, 38, 25, 82, 169, 227, 135, 191, 220, 34, 7, 217, 183, 83, 240, }, { 20, 94, 214, 155, 188, 3, 60, 21, 16, 113, 182, 72, 9, 208, 164, 87, }, { 223, 153, 211, 69, 241, 61, 162, 117, 50, 52, 127, 209, 179, 169, 218, 42, }, { 80, 187, 222, 41, 181, 12, 240, 84, 64, 7, 157, 227, 36, 198, 213, 159, }, { 190, 196, 194, 101, 75, 251, 1, 86, 152, 166, 20, 105, 164, 247, 159, 96, }, { 171, 21, 145, 81, 42, 54, 62, 185, 227, 254, 158, 154, 130, 253, 89, 151, }, { 174, 227, 69, 7, 5, 70, 49, 45, 231, 115, 82, 136, 17, 201, 112, 242, }, { 81, 52, 91, 134, 104, 194, 243, 174, 43, 46, 161, 88, 11, 28, 183, 63, }, { 18, 250, 78, 255, 55, 226, 54, 76, 169, 135, 62, 84, 235, 73, 43, 17, }, { 143, 34, 13, 108, 68, 49, 82, 33, 114, 51, 226, 50, 151, 111, 15, 181, }, { 29, 35, 241, 5, 70, 114, 39, 51, 165, 211, 169, 98, 157, 21, 80, 190, }, { 244, 119, 240, 130, 238, 170, 223, 146, 175, 173, 148, 79, 208, 103, 247, 167, }, { 211, 18, 32, 141, 36, 60, 182, 199, 131, 27, 172, 233, 180, 88, 7, 166, }, { 255, 215, 30, 129, 109, 132, 194, 131, 204, 93, 243, 208, 26, 213, 199, 205, }, { 71, 183, 68, 128, 173, 158, 201, 140, 237, 13, 111, 165, 92, 187, 215, 235, }, { 21, 209, 83, 52, 97, 205, 63, 239, 123, 88, 138, 243, 38, 10, 198, 247, }, { 139, 91, 92, 149, 182, 143, 94, 79, 29, 151, 18, 155, 43, 129, 68, 112, }, { 160, 181, 127, 82, 169, 24, 35, 168, 128, 14, 249, 5, 72, 79, 105, 253, }, { 245, 248, 117, 45, 51, 100, 220, 104, 196, 132, 168, 244, 255, 189, 149, 7, }, { 40, 188, 111, 245, 187, 6, 120, 42, 32, 226, 175, 144, 18, 99, 139, 174, }, { 87, 144, 195, 226, 227, 35, 249, 247, 146, 216, 41, 68, 233, 133, 56, 121, }, { 178, 79, 49, 173, 158, 250, 21, 228, 41, 137, 199, 81, 163, 6, 66, 236, }, { 36, 55, 156, 61, 110, 7, 108, 152, 145, 205, 124, 168, 21, 146, 86, 34, }, { 207, 190, 84, 39, 191, 128, 146, 14, 77, 225, 57, 48, 6, 151, 53, 184, }, { 137, 134, 149, 8, 207, 208, 88, 120, 203, 197, 106, 46, 117, 246, 128, 243, }, { 221, 68, 26, 216, 136, 98, 164, 66, 228, 102, 7, 100, 237, 222, 30, 169, }, { 85, 77, 10, 127, 154, 124, 255, 192, 68, 138, 81, 241, 183, 242, 252, 250, }, { 43, 238, 35, 199, 31, 151, 125, 231, 157, 153, 235, 158, 99, 206, 45, 141, }, { 155, 124, 219, 247, 248, 50, 110, 52, 98, 66, 84, 122, 158, 191, 171, 226, }, { 235, 137, 200, 26, 209, 135, 254, 150, 220, 44, 69, 152, 19, 5, 99, 154, }, { 206, 49, 209, 136, 98, 78, 145, 244, 38, 200, 5, 139, 41, 77, 87, 24, }, { 229, 223, 242, 79, 125, 217, 236, 19, 187, 81, 238, 21, 74, 131, 122, 149, }, { 177, 29, 125, 159, 58, 107, 16, 41, 148, 242, 131, 95, 210, 171, 228, 207, }, { 34, 147, 4, 89, 229, 230, 102, 193, 40, 59, 244, 180, 247, 11, 217, 100, }, { 189, 150, 142, 87, 239, 106, 4, 155, 37, 221, 80, 103, 213, 90, 57, 67, }, { 233, 84, 1, 135, 168, 216, 248, 161, 10, 126, 61, 45, 77, 114, 167, 25, }, { 35, 28, 129, 246, 56, 40, 101, 59, 67, 18, 200, 15, 216, 209, 187, 196, }, { 117, 3, 199, 187, 6, 197, 159, 54, 186, 227, 221, 240, 30, 142, 225, 29, }, { 159, 5, 138, 14, 10, 140, 98, 90, 13, 230, 164, 211, 34, 81, 224, 39, }, { 162, 104, 182, 207, 208, 71, 37, 159, 86, 92, 129, 176, 22, 56, 173, 126, }, { 15, 217, 191, 250, 113, 144, 17, 127, 12, 84, 151, 54, 118, 92, 123, 175, }, { 84, 194, 143, 208, 71, 178, 252, 58, 47, 163, 109, 74, 152, 40, 158, 90, }, { 134, 95, 42, 242, 190, 64, 73, 7, 199, 145, 253, 24, 3, 170, 251, 92, }, { 147, 142, 121, 198, 223, 141, 118, 232, 188, 201, 119, 235, 37, 160, 61, 171, }, { 90, 148, 181, 133, 235, 236, 238, 191, 72, 222, 198, 199, 193, 174, 135, 85, }, { 61, 109, 60, 193, 218, 203, 71, 197, 91, 186, 37, 99, 52, 105, 77, 89, }, { 148, 165, 100, 13, 137, 162, 127, 75, 110, 22, 195, 76, 232, 227, 208, 77, }, { 86, 31, 70, 77, 62, 237, 250, 13, 249, 241, 21, 255, 198, 95, 90, 217, }, { 191, 75, 71, 202, 150, 53, 2, 172, 243, 143, 40, 210, 139, 45, 253, 192, }, { 149, 42, 225, 162, 84, 108, 124, 177, 5, 63, 255, 247, 199, 57, 178, 237, }, { 185, 239, 223, 174, 29, 212, 8, 245, 74, 121, 160, 206, 105, 180, 114, 134, }, { 17, 168, 2, 205, 147, 115, 51, 129, 20, 252, 122, 90, 154, 228, 141, 50, }, { 11, 160, 238, 3, 131, 46, 29, 17, 99, 240, 103, 159, 202, 178, 48, 106, }, { 113, 122, 150, 66, 244, 123, 147, 88, 213, 71, 45, 89, 162, 96, 170, 216, }, { 176, 146, 248, 48, 231, 165, 19, 211, 255, 219, 191, 228, 253, 113, 134, 111, }, { 28, 172, 116, 170, 155, 188, 36, 201, 206, 250, 149, 217, 178, 207, 50, 30, }, { 220, 203, 159, 119, 85, 172, 167, 184, 143, 79, 59, 223, 194, 4, 124, 9, }, { 168, 71, 221, 99, 142, 167, 59, 116, 94, 133, 218, 148, 243, 80, 255, 180, }, { 193, 232, 110, 114, 19, 222, 128, 139, 42, 156, 146, 189, 95, 17, 44, 183, }, { 42, 97, 166, 104, 194, 89, 126, 29, 246, 176, 215, 37, 76, 20, 79, 45, }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, { 172, 62, 140, 154, 124, 25, 55, 26, 49, 33, 42, 61, 79, 190, 180, 113, }, { 72, 110, 251, 122, 220, 14, 216, 243, 225, 89, 248, 147, 42, 231, 172, 68, }, { 122, 218, 120, 65, 119, 85, 142, 73, 182, 183, 74, 198, 104, 210, 154, 178, }, }, { { 71, 53, 239, 181, 239, 239, 48, 230, 175, 160, 137, 134, 19, 133, 95, 230, }, { 233, 99, 186, 228, 186, 186, 152, 103, 24, 214, 90, 148, 33, 124, 165, 103, }, { 143, 178, 142, 222, 142, 142, 247, 134, 184, 119, 100, 171, 110, 41, 21, 134, }, { 78, 226, 110, 252, 110, 110, 149, 173, 97, 248, 221, 68, 94, 105, 229, 173, }, { 3, 171, 118, 153, 118, 118, 122, 88, 111, 223, 28, 172, 216, 227, 62, 88, }, { 207, 202, 30, 237, 30, 30, 164, 89, 236, 94, 96, 210, 70, 73, 157, 89, }, { 12, 233, 27, 33, 27, 27, 43, 163, 127, 250, 112, 245, 230, 10, 248, 163, }, { 186, 174, 120, 50, 120, 120, 213, 167, 54, 187, 67, 206, 219, 231, 49, 167, }, { 18, 109, 193, 146, 193, 193, 137, 150, 95, 176, 168, 71, 154, 27, 183, 150, }, { 240, 170, 31, 209, 31, 31, 89, 107, 195, 21, 15, 217, 102, 136, 61, 107, }, { 43, 152, 44, 95, 44, 44, 128, 20, 174, 134, 255, 215, 201, 223, 107, 20, }, { 44, 213, 83, 217, 83, 83, 227, 45, 85, 15, 114, 40, 242, 58, 188, 45, }, { 50, 81, 137, 106, 137, 137, 65, 24, 117, 69, 170, 154, 142, 43, 243, 24, }, { 27, 186, 64, 219, 64, 64, 44, 221, 145, 232, 252, 133, 215, 247, 13, 221, }, { 210, 229, 178, 199, 178, 178, 124, 52, 163, 203, 164, 204, 226, 187, 236, 52, }, { 8, 15, 18, 62, 18, 18, 50, 194, 235, 172, 225, 166, 5, 12, 17, 194, }, { 221, 167, 223, 127, 223, 223, 45, 207, 179, 238, 200, 149, 220, 82, 42, 207, }, { 96, 68, 216, 203, 216, 216, 155, 81, 126, 220, 6, 164, 60, 80, 204, 81, }, { 114, 41, 25, 89, 25, 25, 18, 199, 33, 108, 174, 227, 166, 75, 123, 199, }, { 17, 198, 183, 11, 183, 183, 243, 206, 48, 111, 180, 235, 66, 248, 137, 206, }, { 6, 149, 236, 241, 236, 236, 244, 176, 222, 125, 56, 155, 115, 5, 124, 176, }, { 93, 87, 60, 25, 60, 60, 139, 178, 27, 188, 192, 103, 140, 146, 249, 178, }, { 224, 180, 59, 173, 59, 59, 61, 44, 214, 142, 14, 86, 108, 144, 31, 44, }, { 134, 101, 15, 151, 15, 15, 82, 205, 118, 47, 48, 105, 35, 197, 175, 205, }, { 170, 176, 92, 78, 92, 92, 177, 224, 35, 32, 66, 65, 209, 255, 19, 224, }, { 88, 105, 166, 113, 166, 166, 5, 90, 170, 30, 228, 80, 39, 116, 187, 90, }, { 36, 218, 65, 231, 65, 65, 209, 239, 190, 163, 147, 142, 247, 54, 173, 239, }, { 223, 212, 58, 145, 58, 58, 192, 30, 249, 197, 97, 93, 76, 81, 191, 30, }, { 105, 147, 89, 130, 89, 89, 62, 26, 176, 132, 82, 102, 113, 188, 118, 26, }, { 122, 38, 11, 103, 11, 11, 32, 5, 202, 192, 79, 69, 163, 71, 106, 5, }, { 103, 9, 167, 77, 167, 167, 248, 104, 133, 85, 139, 91, 7, 181, 27, 104, }, { 236, 93, 32, 140, 32, 32, 22, 143, 169, 116, 126, 163, 138, 154, 231, 143, }, { 48, 34, 108, 132, 108, 108, 172, 201, 63, 110, 3, 82, 30, 40, 102, 201, }, { 106, 56, 47, 27, 47, 47, 68, 66, 223, 91, 78, 202, 169, 95, 72, 66, }, { 14, 154, 254, 207, 254, 254, 198, 114, 53, 209, 217, 61, 118, 9, 109, 114, }, { 67, 211, 230, 170, 230, 230, 41, 135, 59, 246, 24, 213, 240, 131, 182, 135, }, { 45, 13, 192, 174, 192, 192, 116, 164, 112, 251, 199, 76, 186, 218, 23, 164, }, { 179, 121, 249, 123, 249, 249, 112, 236, 248, 227, 23, 12, 150, 11, 139, 236, }, { 228, 82, 50, 178, 50, 50, 36, 77, 66, 216, 159, 5, 143, 150, 246, 77, }, { 34, 79, 173, 22, 173, 173, 37, 95, 96, 222, 171, 21, 132, 51, 209, 95, }, { 171, 104, 207, 57, 207, 207, 38, 105, 6, 212, 247, 37, 153, 31, 184, 105, }, { 61, 19, 228, 210, 228, 228, 16, 227, 101, 96, 198, 195, 176, 194, 53, 227, }, { 52, 196, 101, 155, 101, 101, 181, 168, 171, 56, 146, 1, 253, 46, 143, 168, }, { 144, 238, 199, 26, 199, 199, 194, 58, 189, 201, 9, 125, 90, 216, 241, 58, }, { 151, 163, 184, 156, 184, 184, 161, 3, 70, 64, 132, 130, 97, 61, 38, 3, }, { 176, 210, 143, 226, 143, 143, 10, 180, 151, 60, 11, 160, 78, 232, 181, 180, }, { 229, 138, 161, 197, 161, 161, 179, 196, 103, 44, 42, 97, 199, 118, 93, 196, }, { 66, 11, 117, 221, 117, 117, 190, 14, 30, 2, 173, 177, 184, 99, 29, 14, }, { 121, 141, 125, 254, 125, 125, 90, 93, 165, 31, 83, 233, 123, 164, 84, 93, }, { 192, 136, 115, 85, 115, 115, 245, 162, 252, 123, 12, 139, 120, 160, 91, 162, }, { 24, 17, 54, 66, 54, 54, 86, 133, 254, 55, 224, 41, 15, 20, 51, 133, }, { 75, 220, 244, 148, 244, 244, 27, 69, 208, 90, 249, 115, 245, 143, 167, 69, }, { 247, 231, 96, 87, 96, 96, 58, 82, 56, 156, 130, 38, 93, 109, 234, 82, }, { 184, 221, 157, 220, 157, 157, 56, 118, 124, 144, 234, 6, 75, 228, 164, 118, }, { 166, 89, 71, 111, 71, 71, 154, 67, 92, 218, 50, 180, 55, 245, 235, 67, }, { 89, 177, 53, 6, 53, 53, 146, 211, 143, 234, 81, 52, 111, 148, 16, 211, }, { 100, 162, 209, 212, 209, 209, 130, 48, 234, 138, 151, 247, 223, 86, 37, 48, }, { 54, 183, 128, 117, 128, 128, 88, 121, 225, 19, 59, 201, 109, 45, 26, 121, }, { 180, 52, 134, 253, 134, 134, 19, 213, 3, 106, 154, 243, 173, 238, 92, 213, }, { 129, 40, 112, 17, 112, 112, 49, 244, 141, 166, 189, 150, 24, 32, 120, 244, }, { 9, 215, 129, 73, 129, 129, 165, 75, 206, 88, 84, 194, 77, 236, 186, 75, }, { 120, 85, 238, 137, 238, 238, 205, 212, 128, 235, 230, 141, 51, 68, 255, 212, }, { 237, 133, 179, 251, 179, 179, 129, 6, 140, 128, 203, 199, 194, 122, 76, 6, }, { 95, 36, 217, 247, 217, 217, 102, 99, 81, 151, 105, 175, 28, 145, 108, 99, }, { 218, 234, 160, 249, 160, 160, 78, 246, 72, 103, 69, 106, 231, 183, 253, 246, }, { 196, 110, 122, 74, 122, 122, 236, 195, 104, 45, 157, 216, 155, 166, 178, 195, }, { 41, 235, 201, 177, 201, 201, 109, 197, 228, 173, 86, 31, 89, 220, 254, 197, }, { 173, 253, 35, 200, 35, 35, 210, 217, 216, 169, 207, 190, 234, 26, 196, 217, }, { 7, 77, 127, 134, 127, 127, 99, 57, 251, 137, 141, 255, 59, 229, 215, 57, }, { 130, 131, 6, 136, 6, 6, 75, 172, 226, 121, 161, 58, 192, 195, 70, 172, }, { 226, 199, 222, 67, 222, 222, 208, 253, 156, 165, 167, 158, 252, 147, 138, 253, }, { 49, 250, 255, 243, 255, 255, 59, 64, 26, 154, 182, 54, 86, 200, 205, 64, }, { 23, 83, 91, 250, 91, 91, 7, 126, 238, 18, 140, 112, 49, 253, 245, 126, }, { 159, 172, 170, 162, 170, 170, 147, 193, 173, 236, 101, 36, 100, 49, 55, 193, }, { 11, 164, 100, 167, 100, 100, 72, 154, 132, 115, 253, 10, 221, 239, 47, 154, }, { 22, 139, 200, 141, 200, 200, 144, 247, 203, 230, 57, 20, 121, 29, 94, 247, }, { 127, 24, 145, 15, 145, 145, 174, 237, 123, 98, 107, 114, 8, 161, 40, 237, }, { 35, 151, 62, 97, 62, 62, 178, 214, 69, 42, 30, 113, 204, 211, 122, 214, }, { 107, 224, 188, 108, 188, 188, 211, 203, 250, 175, 251, 174, 225, 191, 227, 203, }, { 169, 27, 42, 215, 42, 42, 203, 184, 76, 255, 94, 237, 9, 28, 45, 184, }, { 139, 84, 135, 193, 135, 135, 238, 231, 44, 33, 245, 248, 141, 47, 252, 231, }, { 183, 159, 240, 100, 240, 240, 105, 141, 108, 181, 134, 95, 117, 13, 98, 141, }, { 19, 181, 82, 229, 82, 82, 30, 31, 122, 68, 29, 35, 210, 251, 28, 31, }, { 28, 247, 63, 93, 63, 63, 79, 228, 106, 97, 113, 122, 236, 18, 218, 228, }, { 251, 14, 123, 118, 123, 123, 17, 241, 71, 102, 242, 211, 187, 103, 18, 241, }, { 98, 55, 61, 37, 61, 61, 118, 128, 52, 247, 175, 108, 172, 83, 89, 128, }, { 242, 217, 250, 63, 250, 250, 180, 186, 137, 62, 166, 17, 246, 139, 168, 186, }, { 59, 134, 8, 35, 8, 8, 228, 83, 187, 29, 254, 88, 195, 199, 73, 83, }, { 154, 146, 48, 202, 48, 48, 29, 41, 28, 78, 65, 19, 207, 215, 117, 41, }, { 117, 100, 102, 223, 102, 102, 113, 254, 218, 229, 35, 28, 157, 174, 172, 254, }, { 234, 200, 204, 125, 204, 204, 226, 63, 119, 9, 70, 56, 249, 159, 155, 63, }, { 208, 150, 87, 41, 87, 87, 145, 229, 233, 224, 13, 4, 114, 184, 121, 229, }, { 42, 64, 191, 40, 191, 191, 23, 157, 139, 114, 74, 179, 129, 63, 192, 157, }, { 145, 54, 84, 109, 84, 84, 85, 179, 152, 61, 188, 25, 18, 56, 90, 179, }, { 2, 115, 229, 238, 229, 229, 237, 209, 74, 43, 169, 200, 144, 3, 149, 209, }, { 70, 237, 124, 194, 124, 124, 167, 111, 138, 84, 60, 226, 91, 101, 244, 111, }, { 167, 129, 212, 24, 212, 212, 13, 202, 121, 46, 135, 208, 127, 21, 64, 202, }, { 220, 127, 76, 8, 76, 76, 186, 70, 150, 26, 125, 241, 148, 178, 129, 70, }, { 39, 113, 55, 126, 55, 55, 171, 183, 209, 124, 143, 34, 47, 213, 147, 183, }, { 118, 207, 16, 70, 16, 16, 11, 166, 181, 58, 63, 176, 69, 77, 146, 166, }, { 164, 42, 162, 129, 162, 162, 119, 146, 22, 241, 155, 124, 167, 246, 126, 146, }, { 202, 244, 132, 133, 132, 132, 42, 177, 93, 252, 68, 229, 237, 175, 223, 177, }, { 150, 123, 43, 235, 43, 43, 54, 138, 99, 180, 49, 230, 41, 221, 141, 138, }, { 112, 90, 252, 183, 252, 252, 255, 22, 107, 71, 7, 43, 54, 72, 238, 22, }, { 84, 128, 189, 80, 189, 189, 46, 249, 213, 228, 148, 165, 193, 126, 67, 249, }, { 225, 108, 168, 218, 168, 168, 170, 165, 243, 122, 187, 50, 36, 112, 180, 165, }, { 111, 6, 181, 115, 181, 181, 202, 170, 110, 249, 106, 253, 2, 185, 10, 170, }, { 57, 245, 237, 205, 237, 237, 9, 130, 241, 54, 87, 144, 83, 196, 220, 130, }, { 51, 137, 26, 29, 26, 26, 214, 145, 80, 177, 31, 254, 198, 203, 88, 145, }, { 219, 50, 51, 142, 51, 51, 217, 127, 109, 147, 240, 14, 175, 87, 86, 127, }, { 160, 204, 171, 158, 171, 171, 110, 243, 130, 167, 10, 47, 68, 240, 151, 243, }, { 254, 48, 225, 30, 225, 225, 159, 25, 246, 196, 214, 228, 16, 129, 80, 25, }, { 178, 161, 106, 12, 106, 106, 231, 101, 221, 23, 162, 104, 222, 235, 32, 101, }, { 16, 30, 36, 124, 36, 36, 100, 71, 21, 155, 1, 143, 10, 24, 34, 71, }, { 113, 130, 111, 192, 111, 111, 104, 159, 78, 179, 178, 79, 126, 168, 69, 159, }, { 135, 189, 156, 224, 156, 156, 197, 68, 83, 219, 133, 13, 107, 37, 4, 68, }, { 53, 28, 246, 236, 246, 246, 34, 33, 142, 204, 39, 101, 181, 206, 36, 33, }, { 56, 45, 126, 186, 126, 126, 158, 11, 212, 194, 226, 244, 27, 36, 119, 11, }, { 82, 21, 81, 161, 81, 81, 218, 73, 11, 153, 172, 62, 178, 123, 63, 73, }, { 101, 122, 66, 163, 66, 66, 21, 185, 207, 126, 34, 147, 151, 182, 142, 185, }, { 222, 12, 169, 230, 169, 169, 87, 151, 220, 49, 212, 57, 4, 177, 20, 151, }, { 142, 106, 29, 169, 29, 29, 96, 15, 157, 131, 209, 207, 38, 201, 190, 15, }, { 168, 195, 185, 160, 185, 185, 92, 49, 105, 11, 235, 137, 65, 252, 134, 49, }, { 253, 155, 151, 135, 151, 151, 229, 65, 153, 27, 202, 72, 200, 98, 110, 65, }, { 46, 166, 182, 55, 182, 182, 14, 252, 31, 36, 219, 224, 98, 57, 41, 252, }, { 1, 216, 147, 119, 147, 147, 151, 137, 37, 244, 181, 100, 72, 224, 171, 137, }, { 248, 165, 13, 239, 13, 13, 107, 169, 40, 185, 238, 127, 99, 132, 44, 169, }, { 140, 25, 248, 71, 248, 248, 141, 222, 215, 168, 120, 7, 182, 202, 43, 222, }, { 187, 118, 235, 69, 235, 235, 66, 46, 19, 79, 246, 170, 147, 7, 154, 46, }, { 73, 175, 17, 122, 17, 17, 246, 148, 154, 113, 80, 187, 101, 140, 50, 148, }, { 68, 158, 153, 44, 153, 153, 74, 190, 192, 127, 149, 42, 203, 102, 97, 190, }, { 191, 144, 226, 90, 226, 226, 91, 79, 135, 25, 103, 249, 112, 1, 115, 79, }, { 239, 246, 86, 21, 86, 86, 108, 215, 198, 171, 98, 15, 82, 121, 217, 215, }, { 252, 67, 4, 240, 4, 4, 114, 200, 188, 239, 127, 44, 128, 130, 197, 200, }, { 58, 94, 155, 84, 155, 155, 115, 218, 158, 233, 75, 60, 139, 39, 226, 218, }, { 177, 10, 28, 149, 28, 28, 157, 61, 178, 200, 190, 196, 6, 8, 30, 61, }, { 249, 125, 158, 152, 158, 158, 252, 32, 13, 77, 91, 27, 43, 100, 135, 32, }, { 153, 57, 70, 83, 70, 70, 103, 113, 115, 145, 93, 191, 23, 52, 75, 113, }, { 216, 153, 69, 23, 69, 69, 163, 39, 2, 76, 236, 162, 119, 180, 104, 39, }, { 201, 95, 242, 28, 242, 242, 80, 233, 50, 35, 88, 73, 53, 76, 225, 233, }, { 97, 156, 75, 188, 75, 75, 12, 216, 91, 40, 179, 192, 116, 176, 103, 216, }, { 60, 203, 119, 165, 119, 119, 135, 106, 64, 148, 115, 167, 248, 34, 158, 106, }, { 137, 39, 98, 47, 98, 98, 3, 54, 102, 10, 92, 48, 29, 44, 105, 54, }, { 15, 66, 109, 184, 109, 109, 81, 251, 16, 37, 108, 89, 62, 233, 198, 251, }, { 92, 143, 175, 110, 175, 175, 28, 59, 62, 72, 117, 3, 196, 114, 82, 59, }, { 190, 72, 113, 45, 113, 113, 204, 198, 162, 237, 210, 157, 56, 225, 216, 198, }, { 194, 251, 150, 187, 150, 150, 24, 115, 182, 80, 165, 67, 232, 163, 206, 115, }, { 197, 182, 233, 61, 233, 233, 123, 74, 77, 217, 40, 188, 211, 70, 25, 74, }, { 136, 255, 241, 88, 241, 241, 148, 191, 67, 254, 233, 84, 85, 204, 194, 191, }, { 161, 20, 56, 233, 56, 56, 249, 122, 167, 83, 191, 75, 12, 16, 60, 122, }, { 29, 47, 172, 42, 172, 172, 216, 109, 79, 149, 196, 30, 164, 242, 113, 109, }, { 199, 197, 12, 211, 12, 12, 150, 155, 7, 242, 129, 116, 67, 69, 140, 155, }, { 108, 173, 195, 234, 195, 195, 176, 242, 1, 38, 118, 81, 218, 90, 52, 242, }, { 133, 206, 121, 14, 121, 121, 40, 149, 25, 240, 44, 197, 251, 38, 145, 149, }, { 157, 223, 79, 76, 79, 79, 126, 16, 231, 199, 204, 236, 244, 50, 162, 16, }, { 211, 61, 33, 176, 33, 33, 235, 189, 134, 63, 17, 168, 170, 91, 71, 189, }, { 209, 78, 196, 94, 196, 196, 6, 108, 204, 20, 184, 96, 58, 88, 210, 108, }, { 30, 132, 218, 179, 218, 218, 162, 53, 32, 74, 216, 178, 124, 17, 79, 53, }, { 62, 184, 146, 75, 146, 146, 106, 187, 10, 191, 218, 111, 104, 33, 11, 187, }, { 132, 22, 234, 121, 234, 234, 191, 28, 60, 4, 153, 161, 179, 198, 58, 28, }, { 47, 126, 37, 64, 37, 37, 153, 117, 58, 208, 110, 132, 42, 217, 130, 117, }, { 125, 107, 116, 225, 116, 116, 67, 60, 49, 73, 194, 186, 152, 162, 189, 60, }, { 116, 188, 245, 168, 245, 245, 230, 119, 255, 17, 150, 120, 213, 78, 7, 119, }, { 65, 160, 3, 68, 3, 3, 196, 86, 113, 221, 177, 29, 96, 128, 35, 86, }, { 80, 102, 180, 79, 180, 180, 55, 152, 65, 178, 5, 246, 34, 120, 170, 152, }, { 33, 228, 219, 143, 219, 219, 95, 7, 15, 1, 183, 185, 92, 208, 239, 7, }, { 85, 88, 46, 39, 46, 46, 185, 112, 240, 16, 33, 193, 137, 158, 232, 112, }, { 231, 249, 68, 43, 68, 68, 94, 21, 45, 7, 131, 169, 87, 117, 200, 21, }, { 205, 185, 251, 3, 251, 251, 73, 136, 166, 117, 201, 26, 214, 74, 8, 136, }, { 13, 49, 136, 86, 136, 136, 188, 42, 90, 14, 197, 145, 174, 234, 83, 42, }, { 124, 179, 231, 150, 231, 231, 212, 181, 20, 189, 119, 222, 208, 66, 22, 181, }, { 55, 111, 19, 2, 19, 19, 207, 240, 196, 231, 142, 173, 37, 205, 177, 240, }, { 26, 98, 211, 172, 211, 211, 187, 84, 180, 28, 73, 225, 159, 23, 166, 84, }, { 162, 191, 78, 112, 78, 78, 131, 34, 200, 140, 163, 231, 212, 243, 2, 34, }, { 175, 142, 198, 38, 198, 198, 63, 8, 146, 130, 102, 118, 122, 25, 81, 8, }, { 246, 63, 243, 32, 243, 243, 173, 219, 29, 104, 55, 66, 21, 141, 65, 219, }, { 232, 187, 41, 147, 41, 41, 15, 238, 61, 34, 239, 240, 105, 156, 14, 238, }, { 126, 192, 2, 120, 2, 2, 57, 100, 94, 150, 222, 22, 64, 65, 131, 100, }, { 94, 252, 74, 128, 74, 74, 241, 234, 116, 99, 220, 203, 84, 113, 199, 234, }, { 250, 214, 232, 1, 232, 232, 134, 120, 98, 146, 71, 183, 243, 135, 185, 120, }, { 181, 236, 21, 138, 21, 21, 132, 92, 38, 158, 47, 151, 229, 14, 247, 92, }, { 146, 157, 34, 244, 34, 34, 47, 235, 247, 226, 160, 181, 202, 219, 100, 235, }, { 86, 243, 88, 190, 88, 88, 195, 40, 159, 207, 61, 109, 81, 125, 214, 40, }, { 241, 114, 140, 166, 140, 140, 206, 226, 230, 225, 186, 189, 46, 104, 150, 226, }, { 4, 230, 9, 31, 9, 9, 25, 97, 148, 86, 145, 83, 227, 6, 233, 97, }, { 110, 222, 38, 4, 38, 38, 93, 35, 75, 13, 223, 153, 74, 89, 161, 35, }, { 165, 242, 49, 246, 49, 49, 224, 27, 51, 5, 46, 24, 239, 22, 213, 27, }, { 230, 33, 215, 92, 215, 215, 201, 156, 8, 243, 54, 205, 31, 149, 99, 156, }, { 200, 135, 97, 107, 97, 97, 199, 96, 23, 215, 237, 45, 125, 172, 74, 96, }, { 123, 254, 152, 16, 152, 152, 183, 140, 239, 52, 250, 33, 235, 167, 193, 140, }, { 115, 241, 138, 46, 138, 138, 133, 78, 4, 152, 27, 135, 238, 171, 208, 78, }, { 81, 190, 39, 56, 39, 39, 160, 17, 100, 70, 176, 146, 106, 152, 1, 17, }, { 149, 208, 93, 114, 93, 93, 76, 210, 12, 107, 45, 74, 241, 62, 179, 210, }, { 102, 209, 52, 58, 52, 52, 111, 225, 160, 161, 62, 63, 79, 85, 176, 225, }, { 214, 3, 187, 216, 187, 187, 101, 85, 55, 157, 53, 159, 1, 189, 5, 85, }, { 91, 194, 208, 232, 208, 208, 127, 2, 197, 193, 248, 252, 255, 151, 133, 2, }, { 227, 31, 77, 52, 77, 77, 71, 116, 185, 81, 18, 250, 180, 115, 33, 116, }, { 99, 239, 174, 82, 174, 174, 225, 9, 17, 3, 26, 8, 228, 179, 242, 9, }, { 155, 74, 163, 189, 163, 163, 138, 160, 57, 186, 244, 119, 135, 55, 222, 160, }, { 189, 227, 7, 180, 7, 7, 182, 158, 205, 50, 206, 49, 224, 2, 230, 158, }, { 119, 23, 131, 49, 131, 131, 156, 47, 144, 206, 138, 212, 13, 173, 57, 47, }, { 141, 193, 107, 48, 107, 107, 26, 87, 242, 92, 205, 99, 254, 42, 128, 87, }, { 188, 59, 148, 195, 148, 148, 33, 23, 232, 198, 123, 85, 168, 226, 77, 23, }, { 243, 1, 105, 72, 105, 105, 35, 51, 172, 202, 19, 117, 190, 107, 3, 51, }, { 244, 76, 22, 206, 22, 22, 64, 10, 87, 67, 158, 138, 133, 142, 212, 10, }, { 38, 169, 164, 9, 164, 164, 60, 62, 244, 136, 58, 70, 103, 53, 56, 62, }, { 212, 112, 94, 54, 94, 94, 136, 132, 125, 182, 156, 87, 145, 190, 144, 132, }, { 128, 240, 227, 102, 227, 227, 166, 125, 168, 82, 8, 242, 80, 192, 211, 125, }, { 147, 69, 177, 131, 177, 177, 184, 98, 210, 22, 21, 209, 130, 59, 207, 98, }, { 182, 71, 99, 19, 99, 99, 254, 4, 73, 65, 51, 59, 61, 237, 201, 4, }, { 21, 32, 190, 20, 190, 190, 234, 175, 164, 57, 37, 184, 161, 254, 96, 175, }, { 204, 97, 104, 116, 104, 104, 222, 1, 131, 129, 124, 126, 158, 170, 163, 1, }, { 172, 37, 176, 191, 176, 176, 69, 80, 253, 93, 122, 218, 162, 250, 111, 80, }, { 193, 80, 224, 34, 224, 224, 98, 43, 217, 143, 185, 239, 48, 64, 240, 43, }, { 238, 46, 197, 98, 197, 197, 251, 94, 227, 95, 215, 107, 26, 153, 114, 94, }, { 174, 86, 85, 81, 85, 85, 168, 129, 183, 118, 211, 18, 50, 249, 250, 129, }, { 156, 7, 220, 59, 220, 220, 233, 153, 194, 51, 121, 136, 188, 210, 9, 153, }, { 217, 65, 214, 96, 214, 214, 52, 174, 39, 184, 89, 198, 63, 84, 195, 174, }, { 163, 103, 221, 7, 221, 221, 20, 171, 237, 120, 22, 131, 156, 19, 169, 171, }, { 37, 2, 210, 144, 210, 210, 70, 102, 155, 87, 38, 234, 191, 214, 6, 102, }, { 235, 16, 95, 10, 95, 95, 117, 182, 82, 253, 243, 92, 177, 127, 48, 182, }, { 64, 120, 144, 51, 144, 144, 83, 223, 84, 41, 4, 121, 40, 96, 136, 223, }, { 72, 119, 130, 13, 130, 130, 97, 29, 191, 133, 229, 223, 45, 108, 153, 29, }, { 109, 117, 80, 157, 80, 80, 39, 123, 36, 210, 195, 53, 146, 186, 159, 123, }, { 40, 51, 90, 198, 90, 90, 250, 76, 193, 89, 227, 123, 17, 60, 85, 76, }, { 255, 232, 114, 105, 114, 114, 8, 144, 211, 48, 99, 128, 88, 97, 251, 144, }, { 10, 124, 247, 208, 247, 247, 223, 19, 161, 135, 72, 110, 149, 15, 132, 19, }, { 79, 58, 253, 139, 253, 253, 2, 36, 68, 12, 104, 32, 22, 137, 78, 36, }, { 25, 201, 165, 53, 165, 165, 193, 12, 219, 195, 85, 77, 71, 244, 152, 12, }, { 83, 205, 194, 214, 194, 194, 77, 192, 46, 109, 25, 90, 250, 155, 148, 192, }, { 245, 148, 133, 185, 133, 133, 215, 131, 114, 183, 43, 238, 205, 110, 127, 131, }, { 185, 5, 14, 171, 14, 14, 175, 255, 89, 100, 95, 98, 3, 4, 15, 255, }, { 203, 44, 23, 242, 23, 23, 189, 56, 120, 8, 241, 129, 165, 79, 116, 56, }, { 69, 70, 10, 91, 10, 10, 221, 55, 229, 139, 32, 78, 131, 134, 202, 55, }, { 87, 43, 203, 201, 203, 203, 84, 161, 186, 59, 136, 9, 25, 157, 125, 161, }, { 215, 219, 40, 175, 40, 40, 242, 220, 18, 105, 128, 251, 73, 93, 174, 220, }, { 104, 75, 202, 245, 202, 202, 169, 147, 149, 112, 231, 2, 57, 92, 221, 147, }, { 76, 145, 139, 18, 139, 139, 120, 124, 43, 211, 116, 140, 206, 106, 112, 124, }, { 32, 60, 72, 248, 72, 72, 200, 142, 42, 245, 2, 221, 20, 48, 68, 142, }, { 74, 4, 103, 227, 103, 103, 140, 204, 245, 174, 76, 23, 189, 111, 12, 204, }, { 5, 62, 154, 104, 154, 154, 142, 232, 177, 162, 36, 55, 171, 230, 66, 232, }, { 198, 29, 159, 164, 159, 159, 1, 18, 34, 6, 52, 16, 11, 165, 39, 18, }, { 20, 248, 45, 99, 45, 45, 125, 38, 129, 205, 144, 220, 233, 30, 203, 38, }, { 158, 116, 57, 213, 57, 57, 4, 72, 136, 24, 208, 64, 44, 209, 156, 72, }, { 213, 168, 205, 65, 205, 205, 31, 13, 88, 66, 41, 51, 217, 94, 59, 13, }, { 77, 73, 24, 101, 24, 24, 239, 245, 14, 39, 193, 232, 134, 138, 219, 245, }, { 206, 18, 141, 154, 141, 141, 51, 208, 201, 170, 213, 182, 14, 169, 54, 208, }, { 90, 26, 67, 159, 67, 67, 232, 139, 224, 53, 77, 152, 183, 119, 46, 139, }, { 63, 96, 1, 60, 1, 1, 253, 50, 47, 75, 111, 11, 32, 193, 160, 50, }, { 138, 140, 20, 182, 20, 20, 121, 110, 9, 213, 64, 156, 197, 207, 87, 110, }, { 131, 91, 149, 255, 149, 149, 220, 37, 199, 141, 20, 94, 136, 35, 237, 37, }, { 195, 35, 5, 204, 5, 5, 143, 250, 147, 164, 16, 39, 160, 67, 101, 250, }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, { 148, 8, 206, 5, 206, 206, 219, 91, 41, 159, 152, 46, 185, 222, 24, 91, }, { 31, 92, 73, 196, 73, 73, 53, 188, 5, 190, 109, 214, 52, 241, 228, 188, }, { 152, 225, 213, 36, 213, 213, 240, 248, 86, 101, 232, 219, 95, 212, 224, 248, }, }, { { 171, 95, 15, 197, 151, 9, 124, 201, 66, 197, 57, 189, 253, 129, 135, 254, }, { 187, 165, 206, 222, 5, 221, 28, 248, 18, 222, 69, 97, 195, 223, 204, 43, }, { 131, 21, 207, 31, 57, 8, 140, 82, 202, 31, 255, 168, 158, 18, 213, 28, }, { 13, 229, 153, 102, 44, 195, 46, 210, 57, 102, 86, 36, 43, 5, 95, 6, }, { 58, 62, 176, 250, 191, 46, 156, 5, 210, 250, 84, 51, 42, 182, 40, 101, }, { 74, 157, 178, 187, 199, 71, 127, 146, 161, 187, 227, 98, 144, 239, 26, 11, }, { 232, 248, 133, 110, 185, 184, 53, 20, 206, 110, 147, 204, 168, 157, 160, 87, }, { 235, 49, 141, 169, 154, 223, 63, 13, 193, 169, 10, 75, 5, 58, 104, 44, }, { 143, 183, 239, 133, 181, 87, 164, 54, 246, 133, 222, 241, 111, 203, 115, 51, }, { 190, 61, 214, 84, 96, 116, 2, 211, 3, 84, 45, 43, 247, 245, 87, 166, }, { 15, 107, 40, 93, 175, 56, 34, 125, 51, 93, 184, 222, 92, 126, 110, 84, }, { 109, 188, 90, 60, 198, 126, 173, 116, 26, 60, 157, 169, 175, 2, 38, 189, }, { 10, 243, 48, 215, 202, 145, 60, 86, 34, 215, 208, 148, 104, 84, 245, 217, }, { 41, 13, 121, 38, 14, 157, 246, 45, 141, 38, 177, 104, 185, 79, 171, 203, }, { 23, 236, 104, 170, 116, 134, 114, 181, 75, 170, 250, 108, 125, 15, 225, 10, }, { 176, 17, 71, 245, 111, 208, 38, 24, 53, 245, 226, 136, 113, 87, 192, 219, }, { 197, 42, 93, 62, 114, 16, 219, 164, 87, 62, 61, 147, 255, 36, 105, 56, }, { 76, 204, 162, 246, 129, 137, 107, 160, 191, 246, 18, 175, 9, 98, 73, 253, }, { 195, 123, 77, 115, 52, 222, 207, 150, 73, 115, 204, 94, 102, 169, 58, 206, }, { 181, 137, 95, 127, 10, 121, 56, 51, 36, 127, 138, 194, 69, 125, 91, 86, }, { 116, 124, 163, 55, 189, 92, 251, 10, 103, 55, 168, 102, 84, 175, 80, 202, }, { 148, 249, 167, 181, 77, 142, 254, 231, 129, 181, 5, 196, 227, 29, 52, 22, }, { 29, 31, 88, 125, 190, 23, 78, 227, 105, 125, 42, 248, 21, 91, 20, 211, }, { 37, 175, 89, 188, 130, 194, 222, 73, 177, 188, 144, 49, 72, 150, 13, 228, }, { 72, 19, 3, 128, 68, 188, 115, 61, 171, 128, 13, 152, 231, 148, 43, 89, }, { 218, 187, 180, 120, 79, 252, 153, 232, 52, 120, 249, 145, 157, 4, 76, 185, }, { 221, 173, 29, 201, 169, 174, 139, 108, 47, 201, 127, 33, 222, 85, 230, 102, }, { 233, 191, 60, 146, 25, 36, 51, 162, 203, 146, 228, 177, 114, 65, 89, 126, }, { 234, 118, 52, 85, 58, 67, 57, 187, 196, 85, 125, 54, 223, 230, 145, 5, }, { 115, 106, 10, 134, 91, 14, 233, 142, 124, 134, 46, 214, 23, 254, 250, 21, }, { 46, 27, 208, 151, 232, 207, 228, 169, 150, 151, 55, 216, 250, 30, 1, 20, }, { 245, 231, 221, 19, 7, 175, 123, 247, 167, 19, 185, 52, 189, 198, 180, 132, }, { 38, 102, 81, 123, 161, 165, 212, 80, 190, 123, 9, 182, 229, 49, 197, 159, }, { 208, 72, 132, 175, 133, 109, 165, 190, 22, 175, 41, 5, 245, 80, 185, 96, }, { 196, 109, 228, 194, 210, 140, 221, 18, 82, 194, 74, 238, 37, 248, 144, 17, }, { 243, 182, 205, 94, 65, 97, 111, 197, 185, 94, 72, 249, 36, 75, 231, 114, }, { 123, 23, 139, 106, 18, 100, 217, 119, 84, 106, 16, 184, 8, 209, 62, 158, }, { 77, 139, 27, 10, 33, 21, 109, 22, 186, 10, 101, 210, 211, 190, 176, 212, }, { 69, 246, 154, 230, 104, 127, 93, 239, 146, 230, 91, 188, 204, 145, 116, 95, }, { 169, 209, 190, 254, 20, 242, 112, 102, 72, 254, 215, 71, 138, 250, 182, 172, }, { 94, 184, 210, 214, 144, 166, 7, 62, 229, 214, 128, 137, 64, 71, 51, 122, }, { 216, 53, 5, 67, 204, 7, 149, 71, 62, 67, 23, 107, 234, 127, 125, 235, }, { 126, 143, 147, 224, 119, 205, 199, 92, 69, 224, 120, 242, 60, 251, 165, 19, }, { 242, 241, 116, 162, 225, 253, 105, 115, 188, 162, 63, 132, 254, 151, 30, 91, }, { 144, 38, 6, 195, 136, 187, 230, 122, 149, 195, 26, 243, 13, 235, 86, 178, }, { 119, 181, 171, 240, 158, 59, 241, 19, 104, 240, 49, 225, 249, 8, 152, 177, }, { 83, 93, 75, 176, 188, 101, 41, 236, 220, 176, 214, 173, 107, 66, 108, 124, }, { 229, 29, 28, 8, 149, 123, 27, 198, 247, 8, 197, 232, 131, 152, 255, 81, }, { 73, 84, 186, 124, 228, 32, 117, 139, 174, 124, 122, 229, 61, 72, 210, 112, }, { 152, 91, 135, 47, 193, 209, 214, 131, 189, 47, 36, 157, 18, 196, 146, 57, }, { 19, 51, 201, 220, 177, 179, 106, 40, 95, 220, 229, 91, 147, 249, 131, 174, }, { 67, 167, 138, 171, 46, 177, 73, 221, 140, 171, 170, 113, 85, 28, 39, 169, }, { 220, 234, 164, 53, 9, 50, 141, 218, 42, 53, 8, 92, 4, 137, 31, 79, }, { 199, 164, 236, 5, 241, 235, 215, 11, 93, 5, 211, 105, 136, 95, 88, 106, }, { 160, 235, 134, 238, 253, 4, 70, 41, 101, 238, 158, 84, 79, 9, 139, 14, }, { 204, 16, 101, 46, 155, 230, 237, 235, 122, 46, 116, 128, 58, 215, 84, 154, }, { 20, 37, 96, 109, 87, 225, 120, 172, 68, 109, 99, 235, 208, 168, 41, 113, }, { 82, 26, 242, 76, 28, 249, 47, 90, 217, 76, 161, 208, 177, 158, 149, 85, }, { 47, 92, 105, 107, 72, 83, 226, 31, 147, 107, 64, 165, 32, 194, 248, 61, }, { 71, 120, 43, 221, 235, 132, 81, 64, 152, 221, 181, 70, 187, 234, 69, 13, }, { 166, 186, 150, 163, 187, 202, 82, 27, 123, 163, 111, 153, 214, 132, 216, 248, }, { 95, 255, 107, 42, 48, 58, 1, 136, 224, 42, 247, 244, 154, 155, 202, 83, }, { 227, 76, 12, 69, 211, 181, 15, 244, 233, 69, 52, 37, 26, 21, 172, 167, }, { 184, 108, 198, 25, 38, 186, 22, 225, 29, 25, 220, 230, 110, 120, 4, 80, }, { 167, 253, 47, 95, 27, 86, 84, 173, 126, 95, 24, 228, 12, 88, 33, 209, }, { 192, 178, 69, 180, 23, 185, 197, 143, 70, 180, 85, 217, 203, 14, 242, 181, }, { 35, 254, 73, 241, 196, 12, 202, 123, 175, 241, 97, 252, 209, 27, 94, 18, }, { 42, 196, 113, 225, 45, 250, 252, 52, 130, 225, 40, 239, 20, 232, 99, 176, }, { 98, 215, 114, 97, 105, 70, 143, 9, 41, 97, 37, 119, 243, 124, 72, 233, }, { 125, 70, 155, 39, 84, 170, 205, 69, 74, 39, 225, 117, 145, 92, 109, 104, }, { 49, 138, 57, 209, 213, 35, 166, 229, 245, 209, 243, 218, 152, 62, 36, 149, }, { 48, 205, 128, 45, 117, 191, 160, 83, 240, 45, 132, 167, 66, 226, 221, 188, }, { 193, 245, 252, 72, 183, 37, 195, 57, 67, 72, 34, 164, 17, 210, 11, 156, }, { 32, 55, 65, 54, 231, 107, 192, 98, 160, 54, 248, 123, 124, 188, 150, 105, }, { 138, 47, 247, 15, 208, 254, 186, 29, 231, 15, 182, 187, 91, 225, 232, 190, }, { 215, 94, 45, 30, 99, 63, 183, 58, 13, 30, 175, 181, 182, 1, 19, 191, }, { 61, 40, 25, 75, 89, 124, 142, 129, 201, 75, 210, 131, 105, 231, 130, 186, }, { 191, 122, 111, 168, 192, 232, 4, 101, 6, 168, 90, 86, 45, 41, 174, 143, }, { 198, 227, 85, 249, 81, 119, 209, 189, 88, 249, 164, 20, 82, 131, 161, 67, }, { 114, 45, 179, 122, 251, 146, 239, 56, 121, 122, 89, 171, 205, 34, 3, 60, }, { 219, 252, 13, 132, 239, 96, 159, 94, 49, 132, 142, 236, 71, 216, 181, 144, }, { 21, 98, 217, 145, 247, 125, 126, 26, 65, 145, 20, 150, 10, 116, 208, 88, }, { 153, 28, 62, 211, 97, 77, 208, 53, 184, 211, 83, 224, 200, 24, 107, 16, }, { 75, 218, 11, 71, 103, 219, 121, 36, 164, 71, 148, 31, 74, 51, 227, 34, }, { 52, 18, 33, 91, 176, 138, 184, 206, 228, 91, 155, 144, 172, 20, 191, 24, }, { 96, 89, 195, 90, 234, 189, 131, 166, 35, 90, 203, 141, 132, 7, 121, 187, }, { 146, 168, 183, 248, 11, 64, 234, 213, 159, 248, 244, 9, 122, 144, 103, 224, }, { 172, 73, 166, 116, 113, 91, 110, 77, 89, 116, 191, 13, 190, 208, 45, 33, }, { 110, 117, 82, 251, 229, 25, 167, 109, 21, 251, 4, 46, 2, 165, 238, 198, }, { 161, 172, 63, 18, 93, 152, 64, 159, 96, 18, 233, 41, 149, 213, 114, 39, }, { 129, 155, 126, 36, 186, 243, 128, 253, 192, 36, 17, 82, 233, 105, 228, 78, }, { 59, 121, 9, 6, 31, 178, 154, 179, 215, 6, 35, 78, 240, 106, 209, 76, }, { 25, 192, 249, 11, 123, 34, 86, 126, 125, 11, 53, 207, 251, 173, 118, 119, }, { 228, 90, 165, 244, 53, 231, 29, 112, 242, 244, 178, 149, 89, 68, 6, 120, }, { 44, 149, 97, 172, 107, 52, 232, 6, 156, 172, 217, 34, 141, 101, 48, 70, }, { 189, 244, 222, 147, 67, 19, 8, 202, 12, 147, 180, 172, 90, 82, 159, 221, }, { 182, 64, 87, 184, 41, 30, 50, 42, 43, 184, 19, 69, 232, 218, 147, 45, }, { 211, 129, 140, 104, 166, 10, 175, 167, 25, 104, 176, 130, 88, 247, 113, 27, }, { 231, 147, 173, 51, 22, 128, 23, 105, 253, 51, 43, 18, 244, 227, 206, 3, }, { 155, 146, 143, 232, 226, 182, 220, 154, 178, 232, 189, 26, 191, 99, 90, 66, }, { 140, 126, 231, 66, 150, 48, 174, 47, 249, 66, 71, 118, 194, 108, 187, 72, }, { 4, 223, 161, 118, 197, 53, 24, 157, 20, 118, 31, 55, 238, 246, 98, 164, }, { 134, 141, 215, 149, 92, 161, 146, 121, 219, 149, 151, 226, 170, 56, 78, 145, }, { 239, 238, 44, 223, 95, 234, 39, 144, 213, 223, 21, 124, 235, 204, 10, 136, }, { 50, 67, 49, 22, 246, 68, 172, 252, 250, 22, 106, 93, 53, 153, 236, 238, }, { 11, 180, 137, 43, 106, 13, 58, 224, 39, 43, 167, 233, 178, 136, 12, 240, }, { 158, 10, 151, 98, 135, 31, 194, 177, 163, 98, 213, 80, 139, 73, 193, 207, }, { 128, 220, 199, 216, 26, 111, 134, 75, 197, 216, 102, 47, 51, 181, 29, 103, }, { 28, 88, 225, 129, 30, 139, 72, 85, 108, 129, 93, 133, 207, 135, 237, 250, }, { 177, 86, 254, 9, 207, 76, 32, 174, 48, 9, 149, 245, 171, 139, 57, 242, }, { 212, 151, 37, 217, 64, 88, 189, 35, 2, 217, 54, 50, 27, 166, 219, 196, }, { 122, 80, 50, 150, 178, 248, 223, 193, 81, 150, 103, 197, 210, 13, 199, 183, }, { 91, 32, 202, 92, 245, 15, 25, 21, 244, 92, 232, 195, 116, 109, 168, 247, }, { 163, 34, 142, 41, 222, 99, 76, 48, 106, 41, 7, 211, 226, 174, 67, 117, }, { 249, 69, 253, 137, 139, 240, 83, 147, 155, 137, 152, 109, 76, 31, 18, 171, }, { 51, 4, 136, 234, 86, 216, 170, 74, 255, 234, 29, 32, 239, 69, 21, 199, }, { 104, 36, 66, 182, 163, 215, 179, 95, 11, 182, 245, 227, 155, 40, 189, 48, }, { 150, 119, 22, 142, 206, 117, 242, 72, 139, 142, 235, 62, 148, 102, 5, 68, }, { 70, 63, 146, 33, 75, 24, 87, 246, 157, 33, 194, 59, 97, 54, 188, 36, }, { 2, 142, 177, 59, 131, 251, 12, 175, 10, 59, 238, 250, 119, 123, 49, 82, }, { 255, 20, 237, 196, 205, 62, 71, 161, 133, 196, 105, 160, 213, 146, 65, 93, }, { 149, 190, 30, 73, 237, 18, 248, 81, 132, 73, 114, 185, 57, 193, 205, 63, }, { 100, 134, 98, 44, 47, 136, 155, 59, 55, 44, 212, 186, 106, 241, 27, 31, }, { 64, 110, 130, 108, 13, 214, 67, 196, 131, 108, 51, 246, 248, 187, 239, 210, }, { 65, 41, 59, 144, 173, 74, 69, 114, 134, 144, 68, 139, 34, 103, 22, 251, }, { 22, 171, 209, 86, 212, 26, 116, 3, 78, 86, 141, 17, 167, 211, 24, 35, }, { 14, 44, 145, 161, 15, 164, 36, 203, 54, 161, 207, 163, 134, 162, 151, 125, }, { 185, 43, 127, 229, 134, 38, 16, 87, 24, 229, 171, 155, 180, 164, 253, 121, }, { 253, 154, 92, 255, 78, 197, 75, 14, 143, 255, 135, 90, 162, 233, 112, 15, }, { 111, 50, 235, 7, 69, 133, 161, 219, 16, 7, 115, 83, 216, 121, 23, 239, }, { 145, 97, 191, 63, 40, 39, 224, 204, 144, 63, 109, 142, 215, 55, 175, 155, }, { 165, 115, 158, 100, 152, 173, 88, 2, 116, 100, 246, 30, 123, 35, 16, 131, }, { 207, 217, 109, 233, 184, 129, 231, 242, 117, 233, 237, 7, 151, 112, 156, 225, }, { 86, 197, 83, 58, 217, 204, 55, 199, 205, 58, 190, 231, 95, 104, 247, 241, }, { 186, 226, 119, 34, 165, 65, 26, 78, 23, 34, 50, 28, 25, 3, 53, 2, }, { 97, 30, 122, 166, 74, 33, 133, 16, 38, 166, 188, 240, 94, 219, 128, 146, }, { 24, 135, 64, 247, 219, 190, 80, 200, 120, 247, 66, 178, 33, 113, 143, 94, }, { 84, 75, 226, 1, 90, 55, 59, 104, 199, 1, 80, 29, 40, 19, 198, 163, }, { 139, 104, 78, 243, 112, 98, 188, 171, 226, 243, 193, 198, 129, 61, 17, 151, }, { 62, 225, 17, 140, 122, 27, 132, 152, 198, 140, 75, 4, 196, 64, 74, 193, }, { 90, 103, 115, 160, 85, 147, 31, 163, 241, 160, 159, 190, 174, 177, 81, 222, }, { 206, 158, 212, 21, 24, 29, 225, 68, 112, 21, 154, 122, 77, 172, 101, 200, }, { 247, 105, 108, 40, 132, 84, 119, 88, 173, 40, 87, 206, 202, 189, 133, 214, }, { 210, 198, 53, 148, 6, 150, 169, 17, 28, 148, 199, 255, 130, 43, 136, 50, }, { 130, 82, 118, 227, 153, 148, 138, 228, 207, 227, 136, 213, 68, 206, 44, 53, }, { 179, 216, 79, 50, 76, 183, 44, 1, 58, 50, 123, 15, 220, 240, 8, 160, }, { 180, 206, 230, 131, 170, 229, 62, 133, 33, 131, 253, 191, 159, 161, 162, 127, }, { 214, 25, 148, 226, 195, 163, 177, 140, 8, 226, 216, 200, 108, 221, 234, 150, }, { 225, 194, 189, 126, 80, 78, 3, 91, 227, 126, 218, 223, 109, 110, 157, 245, }, { 194, 60, 244, 143, 148, 66, 201, 32, 76, 143, 187, 35, 188, 117, 195, 231, }, { 93, 113, 218, 17, 179, 193, 13, 39, 234, 17, 25, 14, 237, 224, 251, 1, }, { 250, 140, 245, 78, 168, 151, 89, 138, 148, 78, 1, 234, 225, 184, 218, 208, }, { 164, 52, 39, 152, 56, 49, 94, 180, 113, 152, 129, 99, 161, 255, 233, 170, }, { 31, 145, 233, 70, 61, 236, 66, 76, 99, 70, 196, 2, 98, 32, 37, 129, }, { 12, 162, 32, 154, 140, 95, 40, 100, 60, 154, 33, 89, 241, 217, 166, 47, }, { 1, 71, 185, 252, 160, 156, 6, 182, 5, 252, 119, 125, 218, 220, 249, 41, }, { 45, 210, 216, 80, 203, 168, 238, 176, 153, 80, 174, 95, 87, 185, 201, 111, }, { 103, 79, 106, 235, 12, 239, 145, 34, 56, 235, 77, 61, 199, 86, 211, 100, }, { 226, 11, 181, 185, 115, 41, 9, 66, 236, 185, 67, 88, 192, 201, 85, 142, }, { 9, 58, 56, 16, 233, 246, 54, 79, 45, 16, 73, 19, 197, 243, 61, 162, }, { 87, 130, 234, 198, 121, 80, 49, 113, 200, 198, 201, 154, 133, 180, 14, 216, }, { 17, 189, 120, 231, 50, 72, 102, 135, 85, 231, 11, 161, 228, 130, 178, 252, }, { 183, 7, 238, 68, 137, 130, 52, 156, 46, 68, 100, 56, 50, 6, 106, 4, }, { 223, 35, 172, 242, 42, 85, 135, 195, 37, 242, 145, 219, 169, 46, 215, 52, }, { 106, 170, 243, 141, 32, 44, 191, 240, 1, 141, 27, 25, 236, 83, 140, 98, }, { 147, 239, 14, 4, 171, 220, 236, 99, 154, 4, 131, 116, 160, 76, 158, 201, }, { 36, 232, 224, 64, 34, 94, 216, 255, 180, 64, 231, 76, 146, 74, 244, 205, }, { 127, 200, 42, 28, 215, 81, 193, 234, 64, 28, 15, 143, 230, 39, 92, 58, }, { 102, 8, 211, 23, 172, 115, 151, 148, 61, 23, 58, 64, 29, 138, 42, 77, }, { 254, 83, 84, 56, 109, 162, 65, 23, 128, 56, 30, 221, 15, 78, 184, 116, }, { 7, 22, 169, 177, 230, 82, 18, 132, 27, 177, 134, 176, 67, 81, 170, 223, }, { 68, 177, 35, 26, 200, 227, 91, 89, 151, 26, 44, 193, 22, 77, 141, 118, }, { 63, 166, 168, 112, 218, 135, 130, 46, 195, 112, 60, 121, 30, 156, 179, 232, }, { 248, 2, 68, 117, 43, 108, 85, 37, 158, 117, 239, 16, 150, 195, 235, 130, }, { 6, 81, 16, 77, 70, 206, 20, 50, 30, 77, 241, 205, 153, 141, 83, 246, }, { 202, 65, 117, 99, 221, 40, 249, 217, 100, 99, 133, 77, 163, 90, 7, 108, }, { 173, 14, 31, 136, 209, 199, 104, 251, 92, 136, 200, 112, 100, 12, 212, 8, }, { 43, 131, 200, 29, 141, 102, 250, 130, 135, 29, 95, 146, 206, 52, 154, 153, }, { 174, 199, 23, 79, 242, 160, 98, 226, 83, 79, 81, 247, 201, 171, 28, 115, }, { 34, 185, 240, 13, 100, 144, 204, 205, 170, 13, 22, 129, 11, 199, 167, 59, }, { 57, 247, 184, 61, 156, 73, 150, 28, 221, 61, 205, 180, 135, 17, 224, 30, }, { 222, 100, 21, 14, 138, 201, 129, 117, 32, 14, 230, 166, 115, 242, 46, 29, }, { 30, 214, 80, 186, 157, 112, 68, 250, 102, 186, 179, 127, 184, 252, 220, 168, }, { 168, 150, 7, 2, 180, 110, 118, 208, 77, 2, 160, 58, 80, 38, 79, 133, }, { 88, 233, 194, 155, 214, 104, 19, 12, 251, 155, 113, 68, 217, 202, 96, 140, }, { 136, 161, 70, 52, 83, 5, 182, 178, 237, 52, 88, 65, 44, 154, 217, 236, }, { 154, 213, 54, 20, 66, 42, 218, 44, 183, 20, 202, 103, 101, 191, 163, 107, }, { 105, 99, 251, 74, 3, 75, 181, 233, 14, 74, 130, 158, 65, 244, 68, 25, }, { 40, 74, 192, 218, 174, 1, 240, 155, 136, 218, 198, 21, 99, 147, 82, 226, }, { 101, 193, 219, 208, 143, 20, 157, 141, 50, 208, 163, 199, 176, 45, 226, 54, }, { 213, 208, 156, 37, 224, 196, 187, 149, 7, 37, 65, 79, 193, 122, 34, 237, }, { 124, 1, 34, 219, 244, 54, 203, 243, 79, 219, 150, 8, 75, 128, 148, 65, }, { 188, 179, 103, 111, 227, 143, 14, 124, 9, 111, 195, 209, 128, 142, 102, 244, }, { 56, 176, 1, 193, 60, 213, 144, 170, 216, 193, 186, 201, 93, 205, 25, 55, }, { 79, 5, 170, 49, 162, 238, 97, 185, 176, 49, 139, 40, 164, 197, 129, 134, }, { 224, 133, 4, 130, 240, 210, 5, 237, 230, 130, 173, 162, 183, 178, 100, 220, }, { 39, 33, 232, 135, 1, 57, 210, 230, 187, 135, 126, 203, 63, 237, 60, 182, }, { 118, 242, 18, 12, 62, 167, 247, 165, 109, 12, 70, 156, 35, 212, 97, 152, }, { 120, 222, 131, 173, 49, 3, 211, 110, 91, 173, 137, 63, 165, 118, 246, 229, }, { 137, 230, 255, 200, 243, 153, 176, 4, 232, 200, 47, 60, 246, 70, 32, 197, }, { 141, 57, 94, 190, 54, 172, 168, 153, 252, 190, 48, 11, 24, 176, 66, 97, }, { 175, 128, 174, 179, 82, 60, 100, 84, 86, 179, 38, 138, 19, 119, 229, 90, }, { 159, 77, 46, 158, 39, 131, 196, 7, 166, 158, 162, 45, 81, 149, 56, 230, }, { 132, 3, 102, 174, 223, 90, 158, 214, 209, 174, 121, 24, 221, 67, 127, 195, }, { 230, 212, 20, 207, 182, 28, 17, 223, 248, 207, 92, 111, 46, 63, 55, 42, }, { 241, 56, 124, 101, 194, 154, 99, 106, 179, 101, 166, 3, 83, 48, 214, 32, }, { 99, 144, 203, 157, 201, 218, 137, 191, 44, 157, 82, 10, 41, 160, 177, 192, }, { 81, 211, 250, 139, 63, 158, 37, 67, 214, 139, 56, 87, 28, 57, 93, 46, }, { 200, 207, 196, 88, 94, 211, 245, 118, 110, 88, 107, 183, 212, 33, 54, 62, }, { 3, 201, 8, 199, 35, 103, 10, 25, 15, 199, 153, 135, 173, 167, 200, 123, }, { 237, 96, 157, 228, 220, 17, 43, 63, 223, 228, 251, 134, 156, 183, 59, 218, }, { 112, 163, 2, 65, 120, 105, 227, 151, 115, 65, 183, 81, 186, 89, 50, 110, }, { 60, 111, 160, 183, 249, 224, 136, 55, 204, 183, 165, 254, 179, 59, 123, 147, }, { 142, 240, 86, 121, 21, 203, 162, 128, 243, 121, 169, 140, 181, 23, 138, 26, }, { 217, 114, 188, 191, 108, 155, 147, 241, 59, 191, 96, 22, 48, 163, 132, 194, }, { 16, 250, 193, 27, 146, 212, 96, 49, 80, 27, 124, 220, 62, 94, 75, 213, }, { 26, 9, 241, 204, 88, 69, 92, 103, 114, 204, 172, 72, 86, 10, 190, 12, }, { 157, 195, 159, 165, 164, 120, 200, 168, 172, 165, 76, 215, 38, 238, 9, 180, }, { 238, 169, 149, 35, 255, 118, 33, 38, 208, 35, 98, 1, 49, 16, 243, 161, }, { 203, 6, 204, 159, 125, 180, 255, 111, 97, 159, 242, 48, 121, 134, 254, 69, }, { 151, 48, 175, 114, 110, 233, 244, 254, 142, 114, 156, 67, 78, 186, 252, 109, }, { 201, 136, 125, 164, 254, 79, 243, 192, 107, 164, 28, 202, 14, 253, 207, 23, }, { 121, 153, 58, 81, 145, 159, 213, 216, 94, 81, 254, 66, 127, 170, 15, 204, }, { 178, 159, 246, 206, 236, 43, 42, 183, 63, 206, 12, 114, 6, 44, 241, 137, }, { 53, 85, 152, 167, 16, 22, 190, 120, 225, 167, 236, 237, 118, 200, 70, 49, }, { 108, 251, 227, 192, 102, 226, 171, 194, 31, 192, 234, 212, 117, 222, 223, 148, }, { 156, 132, 38, 89, 4, 228, 206, 30, 169, 89, 59, 170, 252, 50, 240, 157, }, { 27, 78, 72, 48, 248, 217, 90, 209, 119, 48, 219, 53, 140, 214, 71, 37, }, { 5, 152, 24, 138, 101, 169, 30, 43, 17, 138, 104, 74, 52, 42, 155, 141, }, { 80, 148, 67, 119, 159, 2, 35, 245, 211, 119, 79, 42, 198, 229, 164, 7, }, { 240, 127, 197, 153, 98, 6, 101, 220, 182, 153, 209, 126, 137, 236, 47, 9, }, { 209, 15, 61, 83, 37, 241, 163, 8, 19, 83, 94, 120, 47, 140, 64, 73, }, { 18, 116, 112, 32, 17, 47, 108, 158, 90, 32, 146, 38, 73, 37, 122, 135, }, { 135, 202, 110, 105, 252, 61, 148, 207, 222, 105, 224, 159, 112, 228, 183, 184, }, { 8, 125, 129, 236, 73, 106, 48, 249, 40, 236, 62, 110, 31, 47, 196, 139, }, { 89, 174, 123, 103, 118, 244, 21, 186, 254, 103, 6, 57, 3, 22, 153, 165, }, { 252, 221, 229, 3, 238, 89, 77, 184, 138, 3, 240, 39, 120, 53, 137, 38, }, { 33, 112, 248, 202, 71, 247, 198, 212, 165, 202, 143, 6, 166, 96, 111, 64, }, { 133, 68, 223, 82, 127, 198, 152, 96, 212, 82, 14, 101, 7, 159, 134, 234, }, { 85, 12, 91, 253, 250, 171, 61, 222, 194, 253, 39, 96, 242, 207, 63, 138, }, { 78, 66, 19, 205, 2, 114, 103, 15, 181, 205, 252, 85, 126, 25, 120, 175, }, { 236, 39, 36, 24, 124, 141, 45, 137, 218, 24, 140, 251, 70, 107, 194, 243, }, { 251, 203, 76, 178, 8, 11, 95, 60, 145, 178, 118, 151, 59, 100, 35, 249, }, { 54, 156, 144, 96, 51, 113, 180, 97, 238, 96, 117, 106, 219, 111, 142, 74, }, { 117, 59, 26, 203, 29, 192, 253, 188, 98, 203, 223, 27, 142, 115, 169, 227, }, { 55, 219, 41, 156, 147, 237, 178, 215, 235, 156, 2, 23, 1, 179, 119, 99, }, { 92, 54, 99, 237, 19, 93, 11, 145, 239, 237, 110, 115, 55, 60, 2, 40, }, { 246, 46, 213, 212, 36, 200, 113, 238, 168, 212, 32, 179, 16, 97, 124, 255, }, { 244, 160, 100, 239, 167, 51, 125, 65, 162, 239, 206, 73, 103, 26, 77, 173, }, { 205, 87, 220, 210, 59, 122, 235, 93, 127, 210, 3, 253, 224, 11, 173, 179, }, { 107, 237, 74, 113, 128, 176, 185, 70, 4, 113, 108, 100, 54, 143, 117, 75, }, { 162, 101, 55, 213, 126, 255, 74, 134, 111, 213, 112, 174, 56, 114, 186, 92, }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, { 170, 24, 182, 57, 55, 149, 122, 127, 71, 57, 78, 192, 39, 93, 126, 215, }, { 113, 228, 187, 189, 216, 245, 229, 33, 118, 189, 192, 44, 96, 133, 203, 71, }, { 66, 224, 51, 87, 142, 45, 79, 107, 137, 87, 221, 12, 143, 192, 222, 128, }, }, { { 194, 54, 191, 184, 184, 237, 248, 165, 255, 106, 45, 165, 74, 132, 82, 92, }, { 149, 139, 209, 154, 154, 10, 56, 45, 115, 198, 47, 45, 151, 36, 219, 77, }, { 166, 48, 84, 237, 237, 114, 219, 50, 98, 167, 40, 50, 188, 87, 38, 151, }, { 39, 207, 18, 83, 83, 88, 92, 143, 29, 7, 73, 143, 225, 114, 74, 200, }, { 224, 228, 248, 226, 226, 189, 251, 14, 225, 149, 150, 14, 120, 103, 69, 113, }, { 134, 81, 49, 12, 12, 77, 254, 48, 195, 87, 152, 48, 46, 129, 124, 6, }, { 6, 22, 102, 14, 14, 177, 106, 56, 2, 17, 29, 56, 35, 95, 215, 7, }, { 93, 135, 196, 48, 48, 247, 126, 192, 138, 159, 37, 192, 184, 65, 51, 24, }, { 9, 49, 153, 21, 21, 169, 139, 84, 7, 218, 200, 84, 149, 47, 48, 235, }, { 120, 251, 244, 216, 216, 192, 4, 230, 40, 151, 103, 230, 249, 6, 52, 108, }, { 244, 144, 111, 198, 198, 157, 68, 158, 237, 243, 216, 158, 178, 102, 242, 99, }, { 22, 199, 181, 159, 159, 79, 153, 57, 179, 105, 69, 57, 106, 52, 250, 174, }, { 25, 224, 74, 132, 132, 87, 120, 85, 182, 162, 144, 85, 220, 68, 29, 66, }, { 236, 200, 52, 254, 254, 28, 47, 126, 229, 183, 172, 126, 62, 217, 40, 127, }, { 105, 146, 54, 245, 245, 232, 228, 82, 39, 9, 219, 82, 224, 150, 222, 155, }, { 4, 165, 68, 181, 181, 222, 76, 145, 189, 30, 22, 145, 131, 106, 154, 187, }, { 143, 96, 168, 25, 25, 228, 117, 100, 196, 141, 80, 100, 187, 174, 76, 237, }, { 48, 176, 182, 112, 112, 193, 214, 3, 16, 136, 232, 3, 219, 189, 119, 56, }, { 57, 129, 47, 101, 101, 104, 93, 87, 23, 82, 32, 87, 78, 146, 71, 211, }, { 233, 213, 97, 247, 247, 20, 112, 90, 230, 79, 94, 90, 237, 72, 117, 154, }, { 3, 11, 51, 7, 7, 185, 53, 28, 1, 233, 239, 28, 240, 206, 138, 226, }, { 207, 162, 98, 24, 24, 154, 63, 96, 69, 174, 243, 96, 92, 193, 248, 12, }, { 112, 114, 124, 113, 113, 191, 156, 7, 145, 171, 75, 7, 60, 210, 195, 217, }, { 67, 201, 249, 6, 6, 199, 127, 24, 128, 202, 76, 24, 23, 161, 62, 3, }, { 85, 14, 76, 153, 153, 136, 230, 33, 51, 163, 9, 33, 125, 149, 196, 173, }, { 44, 77, 169, 253, 253, 158, 241, 114, 165, 210, 138, 114, 212, 104, 55, 159, }, { 18, 98, 241, 42, 42, 145, 213, 168, 14, 119, 83, 168, 233, 94, 96, 21, }, { 142, 216, 185, 165, 165, 50, 102, 209, 122, 107, 180, 209, 235, 85, 139, 179, }, { 213, 73, 27, 155, 155, 116, 114, 41, 242, 229, 140, 41, 112, 75, 111, 172, }, { 61, 36, 107, 208, 208, 182, 17, 198, 170, 76, 54, 198, 205, 248, 221, 104, }, { 210, 231, 108, 41, 41, 19, 11, 164, 78, 18, 117, 164, 3, 239, 127, 245, }, { 118, 100, 26, 127, 127, 14, 246, 63, 147, 186, 86, 63, 31, 141, 20, 222, }, { 24, 88, 91, 56, 56, 129, 107, 224, 8, 68, 116, 224, 140, 191, 218, 28, }, { 53, 173, 227, 121, 121, 201, 137, 39, 19, 112, 26, 39, 8, 44, 42, 221, }, { 7, 174, 119, 178, 178, 103, 121, 141, 188, 247, 249, 141, 115, 164, 16, 89, }, { 192, 133, 157, 3, 3, 130, 222, 12, 64, 101, 38, 12, 234, 177, 31, 224, }, { 247, 155, 92, 193, 193, 36, 113, 130, 236, 26, 55, 130, 66, 168, 120, 129, }, { 184, 126, 105, 219, 219, 66, 218, 234, 104, 242, 65, 234, 19, 183, 43, 140, }, { 114, 193, 94, 202, 202, 208, 186, 174, 46, 164, 64, 174, 156, 231, 142, 101, }, { 17, 105, 194, 45, 45, 40, 224, 180, 15, 158, 188, 180, 25, 144, 234, 247, }, { 180, 82, 165, 199, 199, 227, 14, 154, 108, 208, 123, 154, 85, 9, 70, 130, }, { 255, 18, 212, 104, 104, 91, 233, 99, 85, 38, 27, 99, 135, 124, 143, 52, }, { 26, 235, 121, 131, 131, 238, 77, 73, 183, 75, 127, 73, 44, 138, 151, 160, }, { 72, 75, 66, 168, 168, 1, 210, 229, 56, 31, 143, 229, 34, 187, 67, 84, }, { 170, 28, 152, 241, 241, 211, 15, 66, 102, 133, 18, 66, 250, 233, 75, 153, }, { 88, 154, 145, 57, 57, 255, 33, 228, 137, 103, 215, 228, 107, 208, 110, 253, }, { 147, 157, 183, 148, 148, 187, 82, 21, 113, 215, 50, 21, 180, 123, 12, 74, }, { 33, 217, 116, 93, 93, 233, 54, 183, 31, 22, 84, 183, 194, 45, 157, 207, }, { 221, 192, 147, 50, 50, 11, 234, 200, 75, 217, 160, 200, 181, 159, 152, 25, }, { 96, 163, 175, 224, 224, 65, 111, 6, 32, 211, 19, 6, 117, 185, 238, 112, }, { 12, 44, 204, 28, 28, 161, 212, 112, 4, 34, 58, 112, 70, 190, 109, 14, }, { 196, 32, 217, 182, 182, 92, 146, 157, 253, 123, 48, 157, 105, 219, 133, 91, }, { 154, 172, 46, 129, 129, 18, 217, 65, 118, 13, 250, 65, 33, 84, 60, 161, }, { 92, 63, 213, 140, 140, 33, 109, 117, 52, 121, 193, 117, 232, 186, 244, 70, }, { 83, 24, 42, 151, 151, 57, 140, 25, 49, 178, 20, 25, 94, 202, 19, 170, }, { 205, 17, 64, 163, 163, 245, 25, 201, 250, 161, 248, 201, 252, 244, 181, 176, }, { 50, 3, 148, 203, 203, 174, 240, 170, 175, 135, 227, 170, 123, 136, 58, 132, }, { 27, 83, 104, 63, 63, 56, 94, 252, 9, 173, 155, 252, 124, 113, 80, 254, }, { 90, 41, 179, 130, 130, 144, 7, 77, 54, 104, 220, 77, 203, 229, 35, 65, }, { 161, 158, 35, 95, 95, 21, 162, 191, 222, 80, 209, 191, 207, 243, 54, 206, }, { 229, 249, 173, 235, 235, 181, 164, 42, 226, 109, 100, 42, 171, 246, 24, 148, }, { 60, 156, 122, 108, 108, 96, 2, 115, 20, 170, 210, 115, 157, 3, 26, 54, }, { 151, 56, 243, 33, 33, 101, 30, 132, 204, 201, 36, 132, 55, 17, 150, 241, }, { 206, 26, 115, 164, 164, 76, 44, 213, 251, 72, 23, 213, 12, 58, 63, 82, }, { 109, 55, 114, 64, 64, 54, 168, 195, 154, 23, 205, 195, 99, 252, 68, 32, }, { 98, 16, 141, 91, 91, 46, 73, 175, 159, 220, 24, 175, 213, 140, 163, 204, }, { 245, 40, 126, 122, 122, 75, 87, 43, 83, 21, 60, 43, 226, 157, 53, 61, }, { 183, 89, 150, 192, 192, 90, 59, 134, 109, 57, 148, 134, 165, 199, 204, 96, }, { 226, 87, 218, 89, 89, 210, 221, 167, 94, 154, 157, 167, 216, 82, 8, 205, }, { 65, 122, 219, 189, 189, 168, 89, 177, 63, 197, 71, 177, 183, 148, 115, 191, }, { 113, 202, 109, 205, 205, 105, 143, 178, 47, 77, 175, 178, 108, 41, 4, 135, }, { 249, 4, 178, 102, 102, 234, 131, 91, 87, 55, 6, 91, 164, 35, 88, 51, }, { 234, 222, 82, 240, 240, 173, 69, 70, 231, 166, 177, 70, 29, 134, 255, 120, }, { 174, 185, 220, 68, 68, 13, 67, 211, 219, 155, 4, 211, 121, 131, 209, 34, }, { 228, 65, 188, 87, 87, 99, 183, 159, 92, 139, 128, 159, 251, 13, 223, 202, }, { 11, 130, 187, 174, 174, 198, 173, 253, 184, 213, 195, 253, 53, 26, 125, 87, }, { 222, 203, 160, 53, 53, 178, 223, 212, 74, 48, 79, 212, 69, 81, 18, 251, }, { 240, 53, 43, 115, 115, 67, 8, 15, 80, 237, 206, 15, 49, 12, 104, 216, }, { 212, 241, 10, 39, 39, 162, 97, 156, 76, 3, 104, 156, 32, 176, 168, 242, }, { 181, 234, 180, 123, 123, 53, 29, 47, 210, 54, 159, 47, 5, 242, 129, 220, }, { 164, 131, 118, 86, 86, 29, 253, 155, 221, 168, 35, 155, 28, 98, 107, 43, }, { 186, 205, 75, 96, 96, 45, 252, 67, 215, 253, 74, 67, 179, 130, 102, 48, }, { 232, 109, 112, 75, 75, 194, 99, 239, 88, 169, 186, 239, 189, 179, 178, 196, }, { 14, 159, 238, 167, 167, 206, 242, 217, 187, 45, 49, 217, 230, 139, 32, 178, }, { 156, 186, 72, 143, 143, 163, 179, 121, 116, 28, 231, 121, 2, 11, 235, 166, }, { 49, 8, 167, 204, 204, 23, 197, 182, 174, 110, 12, 182, 139, 70, 176, 102, }, { 121, 67, 229, 100, 100, 22, 23, 83, 150, 113, 131, 83, 169, 253, 243, 50, }, { 252, 25, 231, 111, 111, 226, 220, 127, 84, 207, 244, 127, 119, 178, 5, 214, }, { 77, 86, 23, 161, 161, 9, 141, 193, 59, 231, 125, 193, 241, 42, 30, 177, }, { 219, 214, 245, 60, 60, 186, 128, 240, 73, 200, 189, 240, 150, 192, 79, 30, }, { 117, 111, 41, 120, 120, 183, 195, 35, 146, 83, 185, 35, 239, 67, 158, 60, }, { 104, 42, 39, 73, 73, 62, 247, 231, 153, 239, 63, 231, 176, 109, 25, 197, }, { 21, 204, 134, 152, 152, 246, 172, 37, 178, 128, 170, 37, 154, 250, 112, 76, }, { 169, 23, 171, 246, 246, 106, 58, 94, 103, 108, 253, 94, 10, 39, 193, 123, }, { 1, 184, 17, 188, 188, 214, 19, 181, 190, 230, 228, 181, 80, 251, 199, 94, }, { 35, 106, 86, 230, 230, 134, 16, 30, 160, 25, 95, 30, 98, 24, 208, 115, }, { 178, 68, 195, 201, 201, 82, 100, 162, 110, 193, 102, 162, 118, 86, 145, 133, }, { 110, 60, 65, 71, 71, 143, 157, 223, 155, 254, 34, 223, 147, 50, 206, 194, }, { 242, 134, 9, 200, 200, 44, 46, 166, 239, 226, 197, 166, 145, 57, 37, 100, }, { 59, 50, 13, 222, 222, 7, 123, 254, 168, 93, 43, 254, 238, 167, 10, 111, }, { 82, 160, 59, 43, 43, 239, 159, 172, 143, 84, 240, 172, 14, 49, 212, 244, }, { 101, 190, 250, 233, 233, 73, 48, 34, 35, 43, 225, 34, 166, 40, 179, 149, }, { 75, 64, 113, 175, 175, 184, 231, 249, 57, 246, 96, 249, 210, 117, 201, 182, }, { 56, 57, 62, 217, 217, 190, 78, 226, 169, 180, 196, 226, 30, 105, 128, 141, }, { 42, 91, 207, 243, 243, 47, 155, 74, 167, 195, 151, 74, 247, 55, 224, 152, }, { 145, 46, 149, 47, 47, 212, 116, 188, 206, 216, 57, 188, 20, 78, 65, 246, }, { 214, 66, 40, 156, 156, 205, 71, 53, 243, 12, 99, 53, 128, 133, 229, 78, }, { 253, 161, 246, 211, 211, 52, 207, 202, 234, 41, 16, 202, 39, 73, 194, 136, }, { 248, 188, 163, 218, 218, 60, 144, 238, 233, 209, 226, 238, 244, 216, 159, 109, }, { 140, 107, 155, 30, 30, 93, 64, 120, 197, 100, 191, 120, 75, 96, 198, 15, }, { 80, 19, 25, 144, 144, 128, 185, 5, 48, 91, 251, 5, 174, 4, 153, 72, }, { 127, 85, 131, 106, 106, 167, 125, 107, 148, 96, 158, 107, 138, 162, 36, 53, }, { 89, 34, 128, 133, 133, 41, 50, 81, 55, 129, 51, 81, 59, 43, 169, 163, }, { 8, 137, 136, 169, 169, 127, 152, 225, 185, 60, 44, 225, 197, 212, 247, 181, }, { 217, 101, 215, 135, 135, 213, 166, 89, 246, 199, 182, 89, 54, 245, 2, 162, }, { 162, 149, 16, 88, 88, 172, 151, 163, 223, 185, 62, 163, 63, 61, 188, 44, }, { 251, 183, 144, 221, 221, 133, 165, 242, 232, 56, 13, 242, 4, 22, 21, 143, }, { 28, 253, 31, 141, 141, 95, 39, 113, 181, 90, 98, 113, 15, 213, 64, 167, }, { 41, 80, 252, 244, 244, 150, 174, 86, 166, 42, 120, 86, 7, 249, 106, 122, }, { 211, 95, 125, 149, 149, 197, 24, 17, 240, 244, 145, 17, 83, 20, 184, 171, }, { 111, 132, 80, 251, 251, 89, 142, 106, 37, 24, 198, 106, 195, 201, 9, 156, }, { 71, 108, 189, 179, 179, 25, 51, 137, 61, 212, 90, 137, 148, 203, 164, 184, }, { 84, 182, 93, 37, 37, 94, 245, 148, 141, 69, 237, 148, 45, 110, 3, 243, }, { 159, 177, 123, 136, 136, 26, 134, 101, 117, 245, 8, 101, 242, 197, 97, 68, }, { 23, 127, 164, 35, 35, 153, 138, 140, 13, 143, 161, 140, 58, 207, 61, 240, }, { 225, 92, 233, 94, 94, 107, 232, 187, 95, 115, 114, 187, 40, 156, 130, 47, }, { 124, 94, 176, 109, 109, 30, 72, 119, 149, 137, 113, 119, 122, 108, 174, 215, }, { 70, 212, 172, 15, 15, 207, 32, 60, 131, 50, 190, 60, 196, 48, 99, 230, }, { 188, 219, 45, 110, 110, 156, 150, 123, 213, 236, 87, 123, 144, 221, 177, 55, }, { 197, 152, 200, 10, 10, 138, 129, 40, 67, 157, 212, 40, 57, 32, 66, 5, }, { 34, 210, 71, 90, 90, 80, 3, 171, 30, 255, 187, 171, 50, 227, 23, 45, }, { 190, 104, 15, 213, 213, 243, 176, 210, 106, 227, 92, 210, 48, 232, 252, 139, }, { 150, 128, 226, 157, 157, 179, 13, 49, 114, 47, 192, 49, 103, 234, 81, 175, }, { 126, 237, 146, 214, 214, 113, 110, 222, 42, 134, 122, 222, 218, 89, 227, 107, }, { 29, 69, 14, 49, 49, 137, 52, 196, 11, 188, 134, 196, 95, 46, 135, 249, }, { 185, 198, 120, 103, 103, 148, 201, 95, 214, 20, 165, 95, 67, 76, 236, 210, }, { 157, 2, 89, 51, 51, 117, 160, 204, 202, 250, 3, 204, 82, 240, 44, 248, }, { 173, 178, 239, 67, 67, 180, 118, 207, 218, 114, 235, 207, 137, 77, 91, 192, }, { 108, 143, 99, 252, 252, 224, 187, 118, 36, 241, 41, 118, 51, 7, 131, 126, }, { 133, 90, 2, 11, 11, 244, 203, 44, 194, 190, 119, 44, 222, 79, 246, 228, }, { 209, 236, 95, 46, 46, 170, 62, 184, 79, 251, 154, 184, 243, 33, 245, 23, }, { 30, 78, 61, 54, 54, 48, 1, 216, 10, 85, 105, 216, 175, 224, 13, 27, }, { 165, 59, 103, 234, 234, 203, 238, 46, 99, 78, 199, 46, 76, 153, 172, 117, }, { 230, 242, 158, 236, 236, 12, 145, 54, 227, 132, 139, 54, 91, 56, 146, 118, }, { 46, 254, 139, 70, 70, 241, 215, 219, 26, 221, 129, 219, 116, 93, 122, 35, }, { 95, 52, 230, 139, 139, 152, 88, 105, 53, 144, 46, 105, 24, 116, 126, 164, }, { 97, 27, 190, 92, 92, 151, 124, 179, 158, 53, 247, 179, 37, 66, 41, 46, }, { 131, 76, 100, 5, 5, 69, 161, 20, 192, 175, 106, 20, 253, 16, 33, 227, }, { 68, 103, 142, 180, 180, 160, 6, 149, 60, 61, 181, 149, 100, 5, 46, 90, }, { 177, 79, 240, 206, 206, 235, 81, 190, 111, 40, 137, 190, 134, 152, 27, 103, }, { 239, 195, 7, 249, 249, 165, 26, 98, 228, 94, 67, 98, 206, 23, 162, 157, }, { 130, 244, 117, 185, 185, 147, 178, 161, 126, 73, 142, 161, 173, 235, 230, 189, }, { 54, 166, 208, 126, 126, 112, 188, 59, 18, 153, 245, 59, 248, 226, 160, 63, }, { 163, 45, 1, 228, 228, 122, 132, 22, 97, 95, 218, 22, 111, 198, 123, 114, }, { 175, 1, 205, 248, 248, 219, 80, 102, 101, 125, 224, 102, 41, 120, 22, 124, }, { 136, 206, 223, 171, 171, 131, 12, 233, 120, 122, 169, 233, 200, 10, 92, 180, }, { 137, 118, 206, 23, 23, 85, 31, 92, 198, 156, 77, 92, 152, 241, 155, 234, }, { 15, 39, 255, 27, 27, 24, 225, 108, 5, 203, 213, 108, 182, 112, 231, 236, }, { 31, 246, 44, 138, 138, 230, 18, 109, 180, 179, 141, 109, 255, 27, 202, 69, }, { 66, 113, 232, 186, 186, 17, 108, 173, 62, 44, 168, 173, 71, 90, 249, 93, }, { 246, 35, 77, 125, 125, 242, 98, 55, 82, 252, 211, 55, 18, 83, 191, 223, }, { 223, 115, 177, 137, 137, 100, 204, 97, 244, 214, 171, 97, 21, 170, 213, 165, }, { 58, 138, 28, 98, 98, 209, 104, 75, 22, 187, 207, 75, 190, 92, 205, 49, }, { 193, 61, 140, 191, 191, 84, 205, 185, 254, 131, 194, 185, 186, 74, 216, 190, }, { 40, 232, 237, 72, 72, 64, 189, 227, 24, 204, 156, 227, 87, 2, 173, 36, }, { 241, 141, 58, 207, 207, 149, 27, 186, 238, 11, 42, 186, 97, 247, 175, 134, }, { 203, 7, 38, 173, 173, 68, 115, 241, 248, 176, 229, 241, 223, 171, 98, 183, }, { 146, 37, 166, 40, 40, 109, 65, 160, 207, 49, 214, 160, 228, 128, 203, 20, }, { 135, 233, 32, 176, 176, 155, 237, 133, 125, 177, 124, 133, 126, 122, 187, 88, }, { 231, 74, 143, 80, 80, 218, 130, 131, 93, 98, 111, 131, 11, 195, 85, 40, }, { 62, 47, 88, 215, 215, 15, 36, 218, 171, 165, 217, 218, 61, 54, 87, 138, }, { 250, 15, 129, 97, 97, 83, 182, 71, 86, 222, 233, 71, 84, 237, 210, 209, }, { 13, 148, 221, 160, 160, 119, 199, 197, 186, 196, 222, 197, 22, 69, 170, 80, }, { 81, 171, 8, 44, 44, 86, 170, 176, 142, 189, 31, 176, 254, 255, 94, 22, }, { 182, 225, 135, 124, 124, 140, 40, 51, 211, 223, 112, 51, 245, 60, 11, 62, }, { 123, 240, 199, 223, 223, 121, 49, 250, 41, 126, 136, 250, 9, 200, 190, 142, }, { 116, 215, 56, 196, 196, 97, 208, 150, 44, 181, 93, 150, 191, 184, 89, 98, }, { 63, 151, 73, 107, 107, 217, 55, 111, 21, 67, 61, 111, 109, 205, 144, 212, }, { 47, 70, 154, 250, 250, 39, 196, 110, 164, 59, 101, 110, 36, 166, 189, 125, }, { 125, 230, 161, 209, 209, 200, 91, 194, 43, 111, 149, 194, 42, 151, 105, 137, }, { 187, 117, 90, 220, 220, 251, 239, 246, 105, 27, 174, 246, 227, 121, 161, 110, }, { 73, 243, 83, 20, 20, 215, 193, 80, 134, 249, 107, 80, 114, 64, 132, 10, }, { 43, 227, 222, 79, 79, 249, 136, 255, 25, 37, 115, 255, 167, 204, 39, 198, }, { 153, 167, 29, 134, 134, 171, 236, 93, 119, 228, 21, 93, 209, 154, 182, 67, }, { 2, 179, 34, 187, 187, 111, 38, 169, 191, 15, 11, 169, 160, 53, 77, 188, }, { 55, 30, 193, 194, 194, 166, 175, 142, 172, 127, 17, 142, 168, 25, 103, 97, }, { 179, 252, 210, 117, 117, 132, 119, 23, 208, 39, 130, 23, 38, 173, 86, 219, }, { 115, 121, 79, 118, 118, 6, 169, 27, 144, 66, 164, 27, 204, 28, 73, 59, }, { 100, 6, 235, 85, 85, 159, 35, 151, 157, 205, 5, 151, 246, 211, 116, 203, }, { 220, 120, 130, 142, 142, 221, 249, 125, 245, 63, 68, 125, 229, 100, 95, 71, }, { 216, 221, 198, 59, 59, 3, 181, 236, 72, 33, 82, 236, 102, 14, 197, 252, }, { 201, 180, 4, 22, 22, 43, 85, 88, 71, 191, 238, 88, 127, 158, 47, 11, }, { 171, 164, 137, 77, 77, 5, 28, 247, 216, 99, 246, 247, 170, 18, 140, 199, }, { 51, 187, 133, 119, 119, 120, 227, 31, 17, 97, 7, 31, 43, 115, 253, 218, }, { 107, 33, 20, 78, 78, 135, 194, 251, 152, 6, 208, 251, 64, 163, 147, 39, }, { 204, 169, 81, 31, 31, 35, 10, 124, 68, 71, 28, 124, 172, 15, 114, 238, }, { 144, 150, 132, 147, 147, 2, 103, 9, 112, 62, 221, 9, 68, 181, 134, 168, }, { 208, 84, 78, 146, 146, 124, 45, 13, 241, 29, 126, 13, 163, 218, 50, 73, }, { 172, 10, 254, 255, 255, 98, 101, 122, 100, 148, 15, 122, 217, 182, 156, 158, }, { 191, 208, 30, 105, 105, 37, 163, 103, 212, 5, 184, 103, 96, 19, 59, 213, }, { 218, 110, 228, 128, 128, 108, 147, 69, 247, 46, 89, 69, 198, 59, 136, 64, }, { 167, 136, 69, 81, 81, 164, 200, 135, 220, 65, 204, 135, 236, 172, 225, 201, }, { 94, 140, 247, 55, 55, 78, 75, 220, 139, 118, 202, 220, 72, 143, 185, 250, }, { 152, 31, 12, 58, 58, 125, 255, 232, 201, 2, 241, 232, 129, 97, 113, 29, }, { 122, 72, 214, 99, 99, 175, 34, 79, 151, 152, 108, 79, 89, 51, 121, 208, }, { 19, 218, 224, 150, 150, 71, 198, 29, 176, 145, 183, 29, 185, 165, 167, 75, }, { 106, 153, 5, 242, 242, 81, 209, 78, 38, 224, 52, 78, 16, 88, 84, 121, }, { 64, 194, 202, 1, 1, 126, 74, 4, 129, 35, 163, 4, 231, 111, 180, 225, }, { 168, 175, 186, 74, 74, 188, 41, 235, 217, 138, 25, 235, 90, 220, 6, 37, }, { 91, 145, 162, 62, 62, 70, 20, 248, 136, 142, 56, 248, 155, 30, 228, 31, }, { 235, 102, 67, 76, 76, 123, 86, 243, 89, 64, 85, 243, 77, 125, 56, 38, }, { 102, 181, 201, 238, 238, 240, 5, 62, 34, 194, 14, 62, 86, 230, 57, 119, }, { 86, 5, 127, 158, 158, 49, 211, 61, 50, 74, 230, 61, 141, 91, 78, 79, }, { 129, 255, 70, 190, 190, 42, 135, 189, 127, 160, 97, 189, 93, 37, 108, 95, }, { 119, 220, 11, 195, 195, 216, 229, 138, 45, 92, 178, 138, 79, 118, 211, 128, }, { 87, 189, 110, 34, 34, 231, 192, 136, 140, 172, 2, 136, 221, 160, 137, 17, }, { 78, 93, 36, 166, 166, 176, 184, 221, 58, 14, 146, 221, 1, 228, 148, 83, }, { 141, 211, 138, 162, 162, 139, 83, 205, 123, 130, 91, 205, 27, 155, 1, 81, }, { 176, 247, 225, 114, 114, 61, 66, 11, 209, 206, 109, 11, 214, 99, 220, 57, }, { 243, 62, 24, 116, 116, 250, 61, 19, 81, 4, 33, 19, 193, 194, 226, 58, }, { 148, 51, 192, 38, 38, 220, 43, 152, 205, 32, 203, 152, 199, 223, 28, 19, }, { 32, 97, 101, 225, 225, 63, 37, 2, 161, 240, 176, 2, 146, 214, 90, 145, }, { 36, 196, 33, 84, 84, 225, 105, 147, 28, 238, 166, 147, 17, 188, 192, 42, }, { 215, 250, 57, 32, 32, 27, 84, 128, 77, 234, 135, 128, 208, 126, 34, 16, }, { 20, 116, 151, 36, 36, 32, 191, 144, 12, 102, 78, 144, 202, 1, 183, 18, }, { 158, 9, 106, 52, 52, 204, 149, 208, 203, 19, 236, 208, 162, 62, 166, 26, }, { 5, 29, 85, 9, 9, 8, 95, 36, 3, 248, 242, 36, 211, 145, 93, 229, }, { 198, 147, 251, 13, 13, 51, 180, 52, 66, 116, 59, 52, 201, 238, 200, 231, }, { 237, 112, 37, 66, 66, 202, 60, 203, 91, 81, 72, 203, 110, 34, 239, 33, }, { 200, 12, 21, 170, 170, 253, 70, 237, 249, 89, 10, 237, 47, 101, 232, 85, }, { 155, 20, 63, 61, 61, 196, 202, 244, 200, 235, 30, 244, 113, 175, 251, 255, }, { 189, 99, 60, 210, 210, 74, 133, 206, 107, 10, 179, 206, 192, 38, 118, 105, }, { 132, 226, 19, 183, 183, 34, 216, 153, 124, 88, 147, 153, 142, 180, 49, 186, }, { 195, 142, 174, 4, 4, 59, 235, 16, 65, 140, 201, 16, 26, 127, 149, 2, }, { 202, 191, 55, 17, 17, 146, 96, 68, 70, 86, 1, 68, 143, 80, 165, 233, }, { 138, 125, 253, 16, 16, 236, 42, 64, 199, 117, 162, 64, 104, 63, 17, 8, }, { 52, 21, 242, 197, 197, 31, 154, 146, 173, 150, 254, 146, 88, 215, 237, 131, }, { 38, 119, 3, 239, 239, 142, 79, 58, 163, 225, 173, 58, 177, 137, 141, 150, }, { 16, 209, 211, 145, 145, 254, 243, 1, 177, 120, 88, 1, 73, 107, 45, 169, }, { 37, 124, 48, 232, 232, 55, 122, 38, 162, 8, 66, 38, 65, 71, 7, 116, }, { 227, 239, 203, 229, 229, 4, 206, 18, 224, 124, 121, 18, 136, 169, 207, 147, }, { 99, 168, 156, 231, 231, 248, 90, 26, 33, 58, 252, 26, 133, 119, 100, 146, }, { 10, 58, 170, 18, 18, 16, 190, 72, 6, 51, 39, 72, 101, 225, 186, 9, }, { 79, 229, 53, 26, 26, 102, 171, 104, 132, 232, 118, 104, 81, 31, 83, 13, }, { 139, 197, 236, 172, 172, 58, 57, 245, 121, 147, 70, 245, 56, 196, 214, 86, }, { 199, 43, 234, 177, 177, 229, 167, 129, 252, 146, 223, 129, 153, 21, 15, 185, }, { 103, 13, 216, 82, 82, 38, 22, 139, 156, 36, 234, 139, 6, 29, 254, 41, }, { 45, 245, 184, 65, 65, 72, 226, 199, 27, 52, 110, 199, 132, 147, 240, 193, }, { 254, 170, 197, 212, 212, 141, 250, 214, 235, 192, 255, 214, 215, 135, 72, 106, }, { 69, 223, 159, 8, 8, 118, 21, 32, 130, 219, 81, 32, 52, 254, 233, 4, }, { 160, 38, 50, 227, 227, 195, 177, 10, 96, 182, 53, 10, 159, 8, 241, 144, }, { 128, 71, 87, 2, 2, 252, 148, 8, 193, 70, 133, 8, 13, 222, 171, 1, }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, { 74, 248, 96, 19, 19, 110, 244, 76, 135, 16, 132, 76, 130, 142, 14, 232, }, { 238, 123, 22, 69, 69, 115, 9, 215, 90, 184, 167, 215, 158, 236, 101, 195, }, { 76, 238, 6, 29, 29, 223, 158, 116, 133, 1, 153, 116, 161, 209, 217, 239, }, }, { { 216, 202, 32, 24, 166, 91, 156, 175, 120, 217, 29, 128, 140, 133, 59, 140, }, { 105, 16, 81, 76, 197, 6, 104, 24, 191, 49, 183, 135, 161, 124, 245, 161, }, { 192, 208, 27, 154, 176, 46, 205, 184, 183, 190, 223, 108, 33, 41, 3, 33, }, { 186, 255, 230, 171, 162, 137, 217, 97, 66, 161, 220, 30, 170, 105, 96, 170, }, { 22, 74, 237, 61, 65, 107, 90, 111, 201, 146, 236, 50, 205, 227, 159, 205, }, { 135, 9, 121, 82, 171, 59, 211, 236, 217, 79, 60, 39, 14, 73, 176, 14, }, { 88, 235, 50, 244, 199, 111, 171, 127, 162, 13, 54, 200, 178, 10, 57, 178, }, { 89, 36, 39, 139, 233, 236, 202, 54, 226, 255, 240, 156, 56, 231, 133, 56, }, { 196, 106, 79, 165, 8, 103, 138, 95, 116, 240, 65, 255, 76, 27, 182, 76, }, { 106, 130, 110, 205, 183, 64, 203, 195, 127, 228, 62, 123, 252, 136, 242, 252, }, { 5, 117, 65, 64, 150, 202, 38, 174, 131, 188, 88, 199, 231, 223, 9, 231, }, { 154, 102, 3, 144, 43, 132, 164, 85, 149, 148, 166, 12, 68, 58, 129, 68, }, { 6, 231, 126, 193, 228, 140, 133, 117, 67, 105, 209, 59, 186, 43, 14, 186, }, { 166, 95, 137, 22, 12, 181, 207, 145, 78, 136, 128, 97, 106, 247, 237, 106, }, { 13, 194, 233, 62, 37, 88, 168, 163, 198, 32, 167, 34, 61, 187, 160, 61, }, { 209, 178, 157, 25, 59, 74, 115, 235, 125, 183, 36, 49, 220, 12, 46, 220, }, { 67, 99, 54, 247, 163, 92, 89, 179, 173, 191, 125, 216, 66, 82, 6, 66, }, { 133, 84, 83, 172, 247, 254, 17, 126, 89, 104, 115, 143, 217, 80, 11, 217, }, { 65, 62, 28, 9, 255, 153, 155, 33, 45, 152, 50, 112, 149, 75, 189, 149, }, { 210, 32, 162, 152, 73, 12, 208, 48, 189, 98, 173, 205, 129, 248, 41, 129, }, { 44, 148, 25, 122, 130, 214, 180, 222, 81, 231, 27, 100, 89, 5, 253, 89, }, { 205, 18, 242, 164, 149, 118, 101, 27, 113, 158, 120, 78, 28, 146, 163, 28, }, { 11, 37, 151, 255, 193, 212, 45, 214, 133, 73, 118, 25, 135, 144, 174, 135, }, { 162, 229, 221, 41, 180, 252, 136, 118, 141, 198, 30, 242, 7, 197, 88, 7, }, { 56, 131, 222, 185, 159, 120, 44, 35, 24, 82, 184, 254, 67, 255, 217, 67, }, { 247, 204, 6, 227, 86, 203, 139, 170, 233, 235, 143, 24, 136, 116, 193, 136, }, { 75, 212, 158, 137, 16, 206, 215, 190, 232, 35, 130, 61, 152, 54, 175, 152, }, { 230, 174, 128, 96, 221, 175, 53, 249, 35, 226, 116, 69, 117, 81, 236, 117, }, { 231, 97, 149, 31, 243, 44, 84, 176, 99, 16, 178, 17, 255, 188, 80, 255, }, { 144, 140, 129, 16, 196, 211, 232, 202, 80, 47, 22, 65, 73, 71, 147, 73, }, { 26, 71, 17, 124, 74, 176, 147, 133, 79, 64, 141, 68, 122, 181, 131, 122, }, { 83, 206, 165, 11, 6, 187, 134, 169, 39, 68, 64, 209, 53, 154, 151, 53, }, { 163, 42, 200, 86, 154, 127, 233, 63, 205, 52, 216, 166, 141, 40, 228, 141, }, { 241, 43, 120, 34, 178, 71, 14, 223, 170, 130, 94, 35, 50, 95, 207, 50, }, { 253, 38, 132, 99, 185, 156, 199, 53, 44, 80, 63, 85, 133, 9, 211, 133, }, { 81, 147, 143, 245, 90, 126, 68, 59, 167, 99, 15, 121, 226, 131, 44, 226, }, { 41, 225, 88, 58, 20, 28, 146, 112, 210, 91, 67, 163, 190, 218, 244, 190, }, { 59, 17, 225, 56, 237, 62, 143, 248, 216, 135, 49, 2, 30, 11, 222, 30, }, { 130, 124, 56, 18, 61, 241, 245, 66, 90, 243, 100, 224, 233, 150, 185, 233, }, { 103, 64, 135, 243, 146, 24, 99, 96, 185, 196, 153, 89, 193, 51, 82, 193, }, { 139, 4, 133, 19, 160, 224, 26, 6, 95, 157, 93, 81, 185, 31, 172, 185, }, { 72, 70, 161, 8, 98, 136, 116, 101, 40, 246, 11, 193, 197, 194, 168, 197, }, { 42, 115, 103, 187, 102, 90, 49, 171, 18, 142, 202, 95, 227, 46, 243, 227, }, { 239, 214, 61, 97, 64, 190, 218, 189, 38, 140, 77, 244, 37, 216, 249, 37, }, { 112, 197, 127, 177, 253, 240, 88, 70, 48, 164, 179, 63, 134, 61, 113, 134, }, { 45, 91, 12, 5, 172, 85, 213, 151, 17, 21, 221, 48, 211, 232, 65, 211, }, { 49, 251, 99, 184, 2, 105, 195, 103, 29, 60, 129, 79, 19, 118, 204, 19, }, { 226, 20, 212, 95, 101, 230, 114, 30, 224, 172, 234, 214, 24, 99, 89, 24, }, { 134, 198, 108, 45, 133, 184, 178, 165, 153, 189, 250, 115, 132, 164, 12, 132, }, { 201, 168, 166, 155, 45, 63, 34, 252, 178, 208, 230, 221, 113, 160, 22, 113, }, { 176, 21, 100, 43, 77, 222, 149, 254, 135, 26, 108, 83, 167, 20, 114, 167, }, { 128, 33, 18, 236, 97, 52, 55, 208, 218, 212, 43, 72, 62, 143, 2, 62, }, { 245, 145, 44, 29, 10, 14, 73, 56, 105, 204, 192, 176, 95, 109, 122, 95, }, { 252, 233, 145, 28, 151, 31, 166, 124, 108, 162, 249, 1, 15, 228, 111, 15, }, { 96, 104, 236, 77, 88, 23, 135, 92, 186, 95, 142, 54, 241, 245, 224, 241, }, { 68, 75, 93, 73, 105, 83, 189, 143, 174, 36, 106, 183, 114, 148, 180, 114, }, { 12, 13, 252, 65, 11, 219, 201, 234, 134, 210, 97, 118, 183, 86, 28, 183, }, { 143, 190, 209, 44, 24, 169, 93, 225, 156, 211, 195, 194, 212, 45, 25, 212, }, { 164, 2, 163, 232, 80, 112, 13, 3, 206, 175, 207, 201, 189, 238, 86, 189, }, { 61, 246, 159, 249, 9, 178, 10, 141, 155, 238, 224, 57, 164, 32, 208, 164, }, { 98, 53, 198, 179, 4, 210, 69, 206, 58, 120, 193, 158, 38, 236, 91, 38, }, { 53, 65, 55, 135, 186, 32, 132, 128, 222, 114, 31, 220, 126, 68, 121, 126, }, { 224, 73, 254, 161, 57, 35, 176, 140, 96, 139, 165, 126, 207, 122, 226, 207, }, { 104, 223, 68, 51, 235, 133, 9, 81, 255, 195, 113, 211, 43, 145, 73, 43, }, { 220, 112, 116, 39, 30, 18, 219, 72, 187, 151, 131, 19, 225, 183, 142, 225, }, { 64, 241, 9, 118, 209, 26, 250, 104, 109, 106, 244, 36, 31, 166, 1, 31, }, { 160, 184, 247, 215, 232, 57, 74, 228, 13, 225, 81, 90, 208, 220, 227, 208, }, { 167, 144, 156, 105, 34, 54, 174, 216, 14, 122, 70, 53, 224, 26, 81, 224, }, { 159, 19, 66, 208, 189, 78, 130, 251, 22, 40, 254, 203, 163, 229, 136, 163, }, { 43, 188, 114, 196, 72, 217, 80, 226, 82, 124, 12, 11, 105, 195, 79, 105, }, { 174, 232, 33, 104, 191, 39, 65, 156, 11, 20, 127, 132, 176, 147, 68, 176, }, { 16, 173, 147, 252, 165, 231, 223, 26, 138, 251, 61, 9, 119, 200, 145, 119, }, { 254, 180, 187, 226, 203, 218, 100, 238, 236, 133, 182, 169, 216, 253, 212, 216, }, { 161, 119, 226, 168, 198, 186, 43, 173, 77, 19, 151, 14, 90, 49, 95, 90, }, { 199, 248, 112, 36, 122, 33, 41, 132, 180, 37, 200, 3, 17, 239, 177, 17, }, { 77, 51, 224, 72, 244, 66, 82, 203, 171, 74, 83, 6, 34, 29, 161, 34, }, { 170, 82, 117, 87, 7, 110, 6, 123, 200, 90, 225, 23, 221, 161, 241, 221, }, { 212, 199, 220, 89, 173, 128, 85, 69, 254, 11, 124, 246, 59, 211, 39, 59, }, { 66, 172, 35, 136, 141, 223, 56, 250, 237, 77, 187, 140, 200, 191, 186, 200, }, { 46, 201, 51, 132, 222, 19, 118, 76, 209, 192, 84, 204, 142, 28, 70, 142, }, { 73, 137, 180, 119, 76, 11, 21, 44, 104, 4, 205, 149, 79, 47, 20, 79, }, { 178, 72, 78, 213, 17, 27, 87, 108, 7, 61, 35, 251, 112, 13, 201, 112, }, { 119, 237, 20, 15, 55, 255, 188, 122, 51, 63, 164, 80, 182, 251, 195, 182, }, { 57, 76, 203, 198, 177, 251, 77, 106, 88, 160, 126, 170, 201, 18, 101, 201, }, { 173, 122, 30, 233, 205, 97, 226, 71, 203, 193, 246, 120, 237, 103, 67, 237, }, { 32, 153, 229, 59, 137, 13, 125, 52, 215, 53, 122, 18, 238, 83, 225, 238, }, { 207, 79, 216, 90, 201, 179, 167, 137, 241, 185, 55, 230, 203, 139, 24, 203, }, { 100, 210, 184, 114, 224, 94, 192, 187, 121, 17, 16, 165, 156, 199, 85, 156, }, { 155, 169, 22, 239, 5, 7, 197, 28, 213, 102, 96, 88, 206, 215, 61, 206, }, { 222, 45, 94, 217, 66, 215, 25, 218, 59, 176, 204, 187, 54, 174, 53, 54, }, { 127, 90, 188, 113, 132, 109, 50, 119, 118, 163, 91, 181, 108, 159, 106, 108, }, { 168, 15, 95, 169, 91, 171, 196, 233, 72, 125, 174, 191, 10, 184, 74, 10, }, { 182, 242, 26, 234, 169, 82, 16, 139, 196, 115, 189, 104, 29, 63, 124, 29, }, { 92, 81, 102, 203, 127, 38, 236, 152, 97, 67, 168, 91, 223, 56, 140, 223, }, { 165, 205, 182, 151, 126, 243, 108, 74, 142, 93, 9, 157, 55, 3, 234, 55, }, { 107, 77, 123, 178, 153, 195, 170, 138, 63, 22, 248, 47, 118, 101, 78, 118, }, { 211, 239, 183, 231, 103, 143, 177, 121, 253, 144, 107, 153, 11, 21, 149, 11, }, { 240, 228, 109, 93, 156, 196, 111, 150, 234, 112, 152, 119, 184, 178, 115, 184, }, { 93, 158, 115, 180, 81, 165, 141, 209, 33, 177, 110, 15, 85, 213, 48, 85, }, { 200, 103, 179, 228, 3, 188, 67, 181, 242, 34, 32, 137, 251, 77, 170, 251, }, { 197, 165, 90, 218, 38, 228, 235, 22, 52, 2, 135, 171, 198, 246, 10, 198, }, { 189, 215, 141, 21, 104, 134, 61, 93, 65, 58, 203, 113, 154, 175, 210, 154, }, { 195, 66, 36, 27, 194, 104, 110, 99, 119, 107, 86, 144, 124, 221, 4, 124, }, { 228, 243, 170, 158, 129, 106, 247, 107, 163, 197, 59, 237, 162, 72, 87, 162, }, { 175, 39, 52, 23, 145, 164, 32, 213, 75, 230, 185, 208, 58, 126, 248, 58, }, { 184, 162, 204, 85, 254, 76, 27, 243, 194, 134, 147, 182, 125, 112, 219, 125, }, { 203, 245, 140, 101, 113, 250, 224, 110, 50, 247, 169, 117, 166, 185, 173, 166, }, { 193, 31, 14, 229, 158, 173, 172, 241, 247, 76, 25, 56, 171, 196, 191, 171, }, { 181, 96, 37, 107, 219, 20, 179, 80, 4, 166, 52, 148, 64, 203, 123, 64, }, { 111, 247, 47, 141, 33, 138, 237, 109, 252, 88, 102, 188, 27, 87, 251, 27, }, { 76, 252, 245, 55, 218, 193, 51, 130, 235, 184, 149, 82, 168, 240, 29, 168, }, { 151, 164, 234, 174, 14, 220, 12, 246, 83, 180, 1, 46, 121, 129, 33, 121, }, { 136, 150, 186, 146, 210, 166, 185, 221, 159, 72, 212, 173, 228, 235, 171, 228, }, { 97, 167, 249, 50, 118, 148, 230, 21, 250, 173, 72, 98, 123, 24, 92, 123, }, { 87, 116, 241, 52, 190, 242, 193, 78, 228, 10, 222, 66, 88, 168, 34, 88, }, { 17, 98, 134, 131, 139, 100, 190, 83, 202, 9, 251, 93, 253, 37, 45, 253, }, { 153, 244, 60, 17, 89, 194, 7, 142, 85, 65, 47, 240, 25, 206, 134, 25, }, { 114, 152, 85, 79, 161, 53, 154, 212, 176, 131, 252, 151, 81, 36, 202, 81, }, { 131, 179, 45, 109, 19, 114, 148, 11, 26, 1, 162, 180, 99, 123, 5, 99, }, { 191, 138, 167, 235, 52, 67, 255, 207, 193, 29, 132, 217, 77, 182, 105, 77, }, { 85, 41, 219, 202, 226, 55, 3, 220, 100, 45, 145, 234, 143, 177, 153, 143, }, { 115, 87, 64, 48, 143, 182, 251, 157, 240, 113, 58, 195, 219, 201, 118, 219, }, { 157, 78, 104, 46, 225, 139, 64, 105, 150, 15, 177, 99, 116, 252, 51, 116, }, { 129, 238, 7, 147, 79, 183, 86, 153, 154, 38, 237, 28, 180, 98, 190, 180, }, { 63, 171, 181, 7, 85, 119, 200, 31, 27, 201, 175, 145, 115, 57, 107, 115, }, { 179, 135, 91, 170, 63, 152, 54, 37, 71, 207, 229, 175, 250, 224, 117, 250, }, { 187, 48, 243, 212, 140, 10, 184, 40, 2, 83, 26, 74, 32, 132, 220, 32, }, { 214, 154, 246, 167, 241, 69, 151, 215, 126, 44, 51, 94, 236, 202, 156, 236, }, { 234, 163, 124, 33, 214, 116, 252, 19, 165, 48, 21, 51, 194, 7, 240, 194, }, { 37, 236, 164, 123, 31, 199, 91, 154, 84, 137, 34, 213, 9, 140, 232, 9, }, { 206, 128, 205, 37, 231, 48, 198, 192, 177, 75, 241, 178, 65, 102, 164, 65, }, { 99, 250, 211, 204, 42, 81, 36, 135, 122, 138, 7, 202, 172, 1, 231, 172, }, { 69, 132, 72, 54, 71, 208, 220, 198, 238, 214, 172, 227, 248, 121, 8, 248, }, { 50, 105, 92, 57, 112, 47, 96, 188, 221, 233, 8, 179, 78, 130, 203, 78, }, { 215, 85, 227, 216, 223, 198, 246, 158, 62, 222, 245, 10, 102, 39, 32, 102, }, { 158, 220, 87, 175, 147, 205, 227, 178, 86, 218, 56, 159, 41, 8, 52, 41, }, { 8, 183, 168, 126, 179, 146, 142, 13, 69, 156, 255, 229, 218, 100, 169, 218, }, { 141, 227, 251, 210, 68, 108, 159, 115, 28, 244, 140, 106, 3, 52, 162, 3, }, { 121, 189, 194, 176, 96, 225, 183, 2, 53, 202, 138, 142, 214, 180, 100, 214, }, { 171, 157, 96, 40, 41, 237, 103, 50, 136, 168, 39, 67, 87, 76, 77, 87, }, { 54, 211, 8, 6, 200, 102, 39, 91, 30, 167, 150, 32, 35, 176, 126, 35, }, { 251, 193, 250, 162, 93, 16, 66, 64, 111, 57, 238, 110, 63, 34, 221, 63, }, { 236, 68, 2, 224, 50, 248, 121, 102, 230, 89, 196, 8, 120, 44, 254, 120, }, { 78, 161, 223, 201, 134, 4, 241, 16, 107, 159, 218, 250, 127, 233, 166, 127, }, { 126, 149, 169, 14, 170, 238, 83, 62, 54, 81, 157, 225, 230, 114, 214, 230, }, { 208, 125, 136, 102, 21, 201, 18, 162, 61, 69, 226, 101, 86, 225, 146, 86, }, { 108, 101, 16, 12, 83, 204, 78, 182, 60, 141, 239, 64, 70, 163, 252, 70, }, { 243, 118, 82, 220, 238, 130, 204, 77, 42, 165, 17, 139, 229, 70, 116, 229, }, { 95, 195, 89, 74, 13, 96, 79, 67, 161, 150, 33, 167, 130, 204, 139, 130, }, { 255, 123, 174, 157, 229, 89, 5, 167, 172, 119, 112, 253, 82, 16, 104, 82, }, { 138, 203, 144, 108, 142, 99, 123, 79, 31, 111, 155, 5, 51, 242, 16, 51, }, { 86, 187, 228, 75, 144, 113, 160, 7, 164, 248, 24, 22, 210, 69, 158, 210, }, { 221, 191, 97, 88, 48, 145, 186, 1, 251, 101, 69, 71, 107, 90, 50, 107, }, { 180, 175, 48, 20, 245, 151, 210, 25, 68, 84, 242, 192, 202, 38, 199, 202, }, { 4, 186, 84, 63, 184, 73, 71, 231, 195, 78, 158, 147, 109, 50, 181, 109, }, { 190, 69, 178, 148, 26, 192, 158, 134, 129, 239, 66, 141, 199, 91, 213, 199, }, { 27, 136, 4, 3, 100, 51, 242, 204, 15, 178, 75, 16, 240, 88, 63, 240, }, { 156, 129, 125, 81, 207, 8, 33, 32, 214, 253, 119, 55, 254, 17, 143, 254, }, { 94, 12, 76, 53, 35, 227, 46, 10, 225, 100, 231, 243, 8, 33, 55, 8, }, { 7, 40, 107, 190, 202, 15, 228, 60, 3, 155, 23, 111, 48, 198, 178, 48, }, { 140, 44, 238, 173, 106, 239, 254, 58, 92, 6, 74, 62, 137, 217, 30, 137, }, { 15, 159, 195, 192, 121, 157, 106, 49, 70, 7, 232, 138, 234, 162, 27, 234, }, { 109, 170, 5, 115, 125, 79, 47, 255, 124, 127, 41, 20, 204, 78, 64, 204, }, { 244, 94, 57, 98, 36, 141, 40, 113, 41, 62, 6, 228, 213, 128, 198, 213, }, { 38, 126, 155, 250, 109, 129, 248, 65, 148, 92, 171, 41, 84, 120, 239, 84, }, { 113, 10, 106, 206, 211, 115, 57, 15, 112, 86, 117, 107, 12, 208, 205, 12, }, { 28, 160, 111, 189, 174, 60, 22, 240, 12, 41, 92, 127, 192, 158, 141, 192, }, { 148, 54, 213, 47, 124, 154, 175, 45, 147, 97, 136, 210, 36, 117, 38, 36, }, { 34, 196, 207, 197, 213, 200, 191, 166, 87, 18, 53, 186, 57, 74, 90, 57, }, { 235, 108, 105, 94, 248, 247, 157, 90, 229, 194, 211, 103, 72, 234, 76, 72, }, { 188, 24, 152, 106, 70, 5, 92, 20, 1, 200, 13, 37, 16, 66, 110, 16, }, { 60, 57, 138, 134, 39, 49, 107, 196, 219, 28, 38, 109, 46, 205, 108, 46, }, { 21, 216, 210, 188, 51, 45, 249, 180, 9, 71, 101, 206, 144, 23, 152, 144, }, { 233, 49, 67, 160, 164, 50, 95, 200, 101, 229, 156, 207, 159, 243, 247, 159, }, { 2, 93, 42, 254, 92, 197, 194, 146, 128, 39, 79, 168, 215, 25, 187, 215, }, { 70, 22, 119, 183, 53, 150, 127, 29, 46, 3, 37, 31, 165, 141, 15, 165, }, { 218, 151, 10, 230, 250, 158, 94, 61, 248, 254, 82, 40, 91, 156, 128, 91, }, { 25, 213, 46, 253, 56, 246, 48, 94, 143, 149, 4, 184, 39, 65, 132, 39, }, { 219, 88, 31, 153, 212, 29, 63, 116, 184, 12, 148, 124, 209, 113, 60, 209, }, { 30, 253, 69, 67, 242, 249, 212, 98, 140, 14, 19, 215, 23, 135, 54, 23, }, { 23, 133, 248, 66, 111, 232, 59, 38, 137, 96, 42, 102, 71, 14, 35, 71, }, { 74, 27, 139, 246, 62, 77, 182, 247, 168, 209, 68, 105, 18, 219, 19, 18, }, { 10, 234, 130, 128, 239, 87, 76, 159, 197, 187, 176, 77, 13, 125, 18, 13, }, { 217, 5, 53, 103, 136, 216, 253, 230, 56, 43, 219, 212, 6, 104, 135, 6, }, { 137, 89, 175, 237, 252, 37, 216, 148, 223, 186, 18, 249, 110, 6, 23, 110, }, { 120, 114, 215, 207, 78, 98, 214, 75, 117, 56, 76, 218, 92, 89, 216, 92, }, { 118, 34, 1, 112, 25, 124, 221, 51, 115, 205, 98, 4, 60, 22, 127, 60, }, { 39, 177, 142, 133, 67, 2, 153, 8, 212, 174, 109, 125, 222, 149, 83, 222, }, { 24, 26, 59, 130, 22, 117, 81, 23, 207, 103, 194, 236, 173, 172, 56, 173, }, { 35, 11, 218, 186, 251, 75, 222, 239, 23, 224, 243, 238, 179, 167, 230, 179, }, { 242, 185, 71, 163, 192, 1, 173, 4, 106, 87, 215, 223, 111, 171, 200, 111, }, { 149, 249, 192, 80, 82, 25, 206, 100, 211, 147, 78, 134, 174, 152, 154, 174, }, { 213, 8, 201, 38, 131, 3, 52, 12, 190, 249, 186, 162, 177, 62, 155, 177, }, { 169, 192, 74, 214, 117, 40, 165, 160, 8, 143, 104, 235, 128, 85, 246, 128, }, { 132, 155, 70, 211, 217, 125, 112, 55, 25, 154, 181, 219, 83, 189, 183, 83, }, { 225, 134, 235, 222, 23, 160, 209, 197, 32, 121, 99, 42, 69, 151, 94, 69, }, { 29, 111, 122, 194, 128, 191, 119, 185, 76, 219, 154, 43, 74, 115, 49, 74, }, { 147, 30, 190, 145, 182, 149, 75, 17, 144, 250, 159, 189, 20, 179, 148, 20, }, { 40, 46, 77, 69, 58, 159, 243, 57, 146, 169, 133, 247, 52, 55, 72, 52, }, { 198, 55, 101, 91, 84, 162, 72, 205, 244, 215, 14, 87, 155, 2, 13, 155, }, { 123, 224, 232, 78, 60, 36, 117, 144, 181, 237, 197, 38, 1, 173, 223, 1, }, { 101, 29, 173, 13, 206, 221, 161, 242, 57, 227, 214, 241, 22, 42, 233, 22, }, { 117, 176, 62, 241, 107, 58, 126, 232, 179, 24, 235, 248, 97, 226, 120, 97, }, { 124, 200, 131, 240, 246, 43, 145, 172, 182, 118, 210, 73, 49, 107, 109, 49, }, { 227, 219, 193, 32, 75, 101, 19, 87, 160, 94, 44, 130, 146, 142, 229, 146, }, { 238, 25, 40, 30, 110, 61, 187, 244, 102, 126, 139, 160, 175, 53, 69, 175, }, { 33, 86, 240, 68, 167, 142, 28, 125, 151, 199, 188, 70, 100, 190, 93, 100, }, { 142, 113, 196, 83, 54, 42, 60, 168, 220, 33, 5, 150, 94, 192, 165, 94, }, { 249, 156, 208, 92, 1, 213, 128, 210, 239, 30, 161, 198, 232, 59, 102, 232, }, { 1, 207, 21, 127, 46, 131, 97, 73, 64, 242, 198, 84, 138, 237, 188, 138, }, { 91, 121, 13, 117, 181, 41, 8, 164, 98, 216, 191, 52, 239, 254, 62, 239, }, { 145, 67, 148, 111, 234, 80, 137, 131, 16, 221, 208, 21, 195, 170, 47, 195, }, { 20, 23, 199, 195, 29, 174, 152, 253, 73, 181, 163, 154, 26, 250, 36, 26, }, { 122, 47, 253, 49, 18, 167, 20, 217, 245, 31, 3, 114, 139, 64, 99, 139, }, { 246, 3, 19, 156, 120, 72, 234, 227, 169, 25, 73, 76, 2, 153, 125, 2, }, { 177, 218, 113, 84, 99, 93, 244, 183, 199, 232, 170, 7, 45, 249, 206, 45, }, { 183, 61, 15, 149, 135, 209, 113, 194, 132, 129, 123, 60, 151, 210, 192, 151, }, { 202, 58, 153, 26, 95, 121, 129, 39, 114, 5, 111, 33, 44, 84, 17, 44, }, { 90, 182, 24, 10, 155, 170, 105, 237, 34, 42, 121, 96, 101, 19, 130, 101, }, { 248, 83, 197, 35, 47, 86, 225, 155, 175, 236, 103, 146, 98, 214, 218, 98, }, { 204, 221, 231, 219, 187, 245, 4, 82, 49, 108, 190, 26, 150, 127, 31, 150, }, { 71, 217, 98, 200, 27, 21, 30, 84, 110, 241, 227, 75, 47, 96, 179, 47, }, { 150, 107, 255, 209, 32, 95, 109, 191, 19, 70, 199, 122, 243, 108, 157, 243, }, { 110, 56, 58, 242, 15, 9, 140, 36, 188, 170, 160, 232, 145, 186, 71, 145, }, { 19, 63, 172, 125, 215, 161, 124, 193, 74, 46, 180, 245, 42, 60, 150, 42, }, { 36, 35, 177, 4, 49, 68, 58, 211, 20, 123, 228, 129, 131, 97, 84, 131, }, { 116, 127, 43, 142, 69, 185, 31, 161, 243, 234, 45, 172, 235, 15, 196, 235, }, { 9, 120, 189, 1, 157, 17, 239, 68, 5, 110, 57, 177, 80, 137, 21, 80, }, { 3, 146, 63, 129, 114, 70, 163, 219, 192, 213, 137, 252, 93, 244, 7, 93, }, { 48, 52, 118, 199, 44, 234, 162, 46, 93, 206, 71, 27, 153, 155, 112, 153, }, { 80, 92, 154, 138, 116, 253, 37, 114, 231, 145, 201, 45, 104, 110, 144, 104, }, { 79, 110, 202, 182, 168, 135, 144, 89, 43, 109, 28, 174, 245, 4, 26, 245, }, { 14, 80, 214, 191, 87, 30, 11, 120, 6, 245, 46, 222, 96, 79, 167, 96, }, { 125, 7, 150, 143, 216, 168, 240, 229, 246, 132, 20, 29, 187, 134, 209, 187, }, { 185, 109, 217, 42, 208, 207, 122, 186, 130, 116, 85, 226, 247, 157, 103, 247, }, { 55, 28, 29, 121, 230, 229, 70, 18, 94, 85, 80, 116, 169, 93, 194, 169, }, { 84, 230, 206, 181, 204, 180, 98, 149, 36, 223, 87, 190, 5, 92, 37, 5, }, { 31, 50, 80, 60, 220, 122, 181, 43, 204, 252, 213, 131, 157, 106, 138, 157, }, { 194, 141, 49, 100, 236, 235, 15, 42, 55, 153, 144, 196, 246, 48, 184, 246, }, { 51, 166, 73, 70, 94, 172, 1, 245, 157, 27, 206, 231, 196, 111, 119, 196, }, { 58, 222, 244, 71, 195, 189, 238, 177, 152, 117, 247, 86, 148, 230, 98, 148, }, { 229, 60, 191, 225, 175, 233, 150, 34, 227, 55, 253, 185, 40, 165, 235, 40, }, { 232, 254, 86, 223, 138, 177, 62, 129, 37, 23, 90, 155, 21, 30, 75, 21, }, { 18, 240, 185, 2, 249, 34, 29, 136, 10, 220, 114, 161, 160, 209, 42, 160, }, { 146, 209, 171, 238, 152, 22, 42, 88, 208, 8, 89, 233, 158, 94, 40, 158, }, { 172, 181, 11, 150, 227, 226, 131, 14, 139, 51, 48, 44, 103, 138, 255, 103, }, { 52, 142, 34, 248, 148, 163, 229, 201, 158, 128, 217, 136, 244, 169, 197, 244, }, { 82, 1, 176, 116, 40, 56, 231, 224, 103, 182, 134, 133, 191, 119, 43, 191, }, { 237, 139, 23, 159, 28, 123, 24, 47, 166, 171, 2, 92, 242, 193, 66, 242, }, { 250, 14, 239, 221, 115, 147, 35, 9, 47, 203, 40, 58, 181, 207, 97, 181, }, { 152, 59, 41, 110, 119, 65, 102, 199, 21, 179, 233, 164, 147, 35, 58, 147, }, { 223, 226, 75, 166, 108, 84, 120, 147, 123, 66, 10, 239, 188, 67, 137, 188, }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, { 102, 143, 146, 140, 188, 155, 2, 41, 249, 54, 95, 13, 75, 222, 238, 75, }, { 47, 6, 38, 251, 240, 144, 23, 5, 145, 50, 146, 152, 4, 241, 250, 4, }, { 62, 100, 160, 120, 123, 244, 169, 86, 91, 59, 105, 197, 249, 212, 215, 249, }, }, { { 81, 139, 192, 72, 65, 219, 157, 121, 4, 91, 179, 66, 110, 229, 24, 198, }, { 51, 234, 37, 39, 250, 129, 48, 231, 163, 6, 247, 18, 101, 143, 76, 54, }, { 164, 152, 90, 64, 72, 66, 179, 201, 59, 46, 25, 202, 156, 4, 154, 157, }, { 103, 235, 17, 215, 20, 151, 194, 89, 108, 137, 166, 57, 107, 128, 171, 75, }, { 10, 215, 43, 179, 157, 89, 222, 77, 85, 107, 7, 210, 192, 23, 61, 181, }, { 231, 51, 213, 125, 58, 28, 27, 17, 166, 59, 24, 161, 241, 194, 82, 32, }, { 40, 218, 172, 137, 49, 167, 254, 247, 151, 111, 28, 206, 134, 92, 244, 145, }, { 26, 204, 210, 55, 232, 112, 108, 68, 221, 236, 96, 193, 66, 142, 139, 128, }, { 108, 192, 97, 253, 170, 152, 190, 64, 208, 103, 42, 246, 10, 202, 165, 217, }, { 101, 208, 167, 38, 82, 59, 69, 241, 125, 64, 115, 3, 234, 58, 205, 5, }, { 250, 78, 69, 3, 59, 13, 159, 58, 161, 202, 79, 51, 82, 28, 64, 85, }, { 232, 110, 10, 118, 8, 136, 170, 155, 56, 132, 253, 26, 81, 63, 144, 46, }, { 172, 116, 199, 2, 147, 183, 234, 44, 127, 140, 203, 34, 221, 169, 193, 102, }, { 90, 160, 176, 98, 255, 212, 225, 96, 184, 181, 63, 141, 15, 175, 22, 84, }, { 169, 254, 51, 186, 60, 122, 133, 235, 180, 88, 41, 75, 189, 67, 62, 221, }, { 48, 45, 200, 79, 159, 123, 21, 27, 91, 74, 169, 53, 69, 104, 25, 95, }, { 139, 243, 180, 128, 144, 132, 165, 81, 118, 92, 50, 87, 251, 8, 247, 249, }, { 131, 31, 41, 194, 75, 113, 252, 180, 50, 254, 224, 191, 186, 165, 172, 2, }, { 239, 223, 72, 63, 225, 233, 66, 244, 226, 153, 202, 73, 176, 111, 9, 219, }, { 102, 23, 74, 78, 55, 193, 96, 13, 133, 12, 45, 36, 202, 221, 152, 108, }, { 20, 109, 86, 165, 249, 178, 127, 154, 170, 214, 14, 103, 67, 46, 122, 169, }, { 13, 102, 105, 250, 116, 56, 54, 34, 143, 118, 48, 129, 33, 71, 164, 64, }, { 5, 138, 244, 184, 175, 205, 111, 199, 203, 212, 226, 105, 96, 234, 255, 187, }, { 146, 248, 139, 223, 29, 14, 236, 233, 83, 252, 12, 177, 153, 97, 41, 16, }, { 122, 150, 129, 169, 21, 134, 70, 114, 107, 120, 241, 171, 200, 94, 185, 62, }, { 19, 220, 20, 236, 16, 211, 151, 245, 112, 203, 57, 52, 162, 126, 227, 92, }, { 216, 67, 194, 57, 151, 243, 191, 128, 99, 206, 84, 47, 20, 87, 137, 113, }, { 135, 105, 134, 227, 199, 234, 49, 39, 16, 175, 137, 203, 123, 18, 96, 158, }, { 181, 127, 248, 93, 30, 61, 163, 148, 90, 44, 245, 196, 191, 192, 31, 143, }, { 223, 242, 128, 112, 126, 146, 87, 239, 185, 211, 99, 124, 245, 7, 16, 132, }, { 145, 63, 102, 183, 120, 244, 201, 21, 171, 176, 82, 150, 185, 134, 124, 121, }, { 45, 80, 88, 49, 158, 106, 145, 48, 92, 187, 254, 167, 230, 182, 11, 42, }, { 160, 238, 245, 97, 196, 217, 126, 90, 25, 127, 112, 190, 93, 179, 86, 1, }, { 191, 168, 211, 238, 131, 100, 125, 217, 15, 71, 242, 22, 127, 215, 34, 58, }, { 36, 64, 158, 234, 102, 201, 106, 129, 241, 156, 167, 82, 6, 70, 99, 246, }, { 73, 124, 164, 142, 239, 7, 118, 149, 200, 126, 6, 185, 173, 209, 245, 8, }, { 238, 35, 19, 166, 194, 191, 224, 160, 11, 28, 65, 84, 17, 50, 58, 252, }, { 44, 172, 3, 168, 189, 60, 51, 100, 181, 62, 117, 186, 71, 235, 56, 13, }, { 29, 125, 144, 126, 1, 17, 132, 43, 7, 241, 87, 146, 163, 222, 18, 117, }, { 204, 46, 148, 156, 110, 65, 192, 26, 201, 24, 90, 72, 87, 121, 243, 216, }, { 124, 219, 152, 121, 223, 177, 12, 73, 88, 224, 77, 229, 136, 83, 19, 236, }, { 142, 121, 64, 56, 63, 73, 202, 150, 189, 136, 208, 62, 155, 226, 8, 66, }, { 184, 25, 145, 167, 106, 5, 149, 182, 213, 90, 197, 69, 158, 135, 187, 207, }, { 230, 207, 142, 228, 25, 74, 185, 69, 79, 190, 147, 188, 80, 159, 97, 7, }, { 244, 239, 193, 145, 42, 207, 140, 228, 214, 240, 33, 149, 83, 188, 177, 124, }, { 38, 123, 40, 27, 32, 101, 237, 41, 224, 85, 114, 104, 135, 252, 5, 184, }, { 27, 48, 137, 174, 203, 38, 206, 16, 52, 105, 235, 220, 227, 211, 184, 167, }, { 79, 49, 189, 94, 37, 48, 60, 174, 251, 230, 186, 247, 237, 220, 95, 218, }, { 213, 37, 171, 195, 227, 203, 137, 162, 236, 184, 100, 174, 53, 16, 45, 49, }, { 197, 62, 82, 71, 150, 226, 59, 171, 100, 63, 3, 189, 183, 137, 155, 4, }, { 80, 119, 155, 209, 98, 141, 63, 45, 237, 222, 56, 95, 207, 184, 43, 225, }, { 121, 81, 108, 193, 112, 124, 99, 142, 147, 52, 175, 140, 232, 185, 236, 87, }, { 119, 240, 232, 83, 97, 190, 112, 80, 228, 14, 193, 42, 233, 25, 29, 126, }, { 22, 86, 224, 84, 191, 30, 248, 50, 187, 31, 219, 93, 194, 148, 28, 231, }, { 82, 76, 45, 32, 36, 33, 184, 133, 252, 23, 237, 101, 78, 2, 77, 175, }, { 21, 145, 13, 60, 218, 228, 221, 206, 67, 83, 133, 122, 226, 115, 73, 142, }, { 155, 232, 77, 4, 229, 173, 23, 88, 254, 219, 85, 68, 121, 145, 65, 204, }, { 180, 131, 163, 196, 61, 107, 1, 192, 179, 169, 126, 217, 30, 157, 44, 168, }, { 62, 140, 76, 221, 142, 185, 6, 197, 44, 112, 199, 147, 68, 200, 232, 118, }, { 128, 216, 196, 170, 46, 139, 217, 72, 202, 178, 190, 152, 154, 66, 249, 107, }, { 54, 96, 209, 159, 85, 76, 95, 32, 104, 210, 21, 123, 5, 101, 179, 141, }, { 211, 104, 178, 19, 41, 252, 195, 153, 223, 32, 216, 224, 117, 29, 135, 227, }, { 43, 29, 65, 225, 84, 93, 219, 11, 111, 35, 66, 233, 166, 187, 161, 248, }, { 1, 252, 91, 153, 35, 86, 162, 84, 233, 133, 139, 29, 161, 93, 51, 39, }, { 153, 211, 251, 245, 163, 1, 144, 240, 239, 18, 128, 126, 248, 43, 39, 130, }, { 221, 201, 54, 129, 56, 62, 208, 71, 168, 26, 182, 70, 116, 189, 118, 202, }, { 246, 212, 119, 96, 108, 99, 11, 76, 199, 57, 244, 175, 210, 6, 215, 50, }, { 104, 182, 206, 220, 38, 3, 115, 211, 242, 54, 67, 130, 203, 125, 105, 69, }, { 18, 32, 79, 117, 51, 133, 53, 161, 153, 78, 178, 41, 3, 35, 208, 123, }, { 138, 15, 239, 25, 179, 210, 7, 5, 159, 217, 185, 74, 90, 85, 196, 222, }, { 9, 16, 198, 219, 248, 163, 251, 177, 173, 39, 89, 245, 224, 240, 104, 220, }, { 166, 163, 236, 177, 14, 238, 52, 97, 42, 231, 204, 240, 29, 190, 252, 211, }, { 114, 122, 28, 235, 206, 115, 31, 151, 47, 218, 35, 67, 137, 243, 226, 197, }, { 196, 194, 9, 222, 181, 180, 153, 255, 141, 186, 136, 160, 22, 212, 168, 35, }, { 58, 250, 227, 252, 2, 34, 203, 86, 14, 33, 174, 231, 133, 127, 36, 234, }, { 116, 55, 5, 59, 4, 68, 85, 172, 28, 66, 159, 13, 201, 254, 72, 23, }, { 193, 72, 253, 102, 26, 121, 246, 56, 70, 110, 106, 201, 118, 62, 87, 152, }, { 202, 99, 141, 76, 164, 118, 138, 33, 250, 128, 230, 6, 23, 116, 89, 10, }, { 185, 229, 202, 62, 73, 83, 55, 226, 60, 223, 78, 88, 63, 218, 136, 232, }, { 112, 65, 170, 26, 136, 223, 152, 63, 62, 19, 246, 121, 8, 73, 132, 139, }, { 188, 111, 62, 134, 230, 158, 88, 37, 247, 11, 172, 49, 95, 48, 119, 83, }, { 52, 91, 103, 110, 19, 224, 216, 136, 121, 27, 192, 65, 132, 223, 213, 195, }, { 106, 141, 120, 45, 96, 175, 244, 123, 227, 255, 150, 184, 74, 199, 15, 11, }, { 72, 128, 255, 23, 204, 81, 212, 193, 33, 251, 141, 164, 12, 140, 198, 47, }, { 95, 42, 68, 218, 80, 25, 142, 167, 115, 97, 221, 228, 111, 69, 233, 239, }, { 143, 133, 27, 161, 28, 31, 104, 194, 84, 13, 91, 35, 58, 191, 59, 101, }, { 105, 74, 149, 69, 5, 85, 209, 135, 27, 179, 200, 159, 106, 32, 90, 98, }, { 154, 20, 22, 157, 198, 251, 181, 12, 23, 94, 222, 89, 216, 204, 114, 235, }, { 218, 120, 116, 200, 209, 95, 56, 40, 114, 7, 129, 21, 149, 237, 239, 63, }, { 253, 255, 7, 74, 210, 108, 119, 85, 123, 215, 120, 96, 179, 76, 217, 160, }, { 57, 61, 14, 148, 103, 216, 238, 170, 246, 109, 240, 192, 165, 152, 113, 131, }, { 165, 100, 1, 217, 107, 20, 17, 157, 210, 171, 146, 215, 61, 89, 169, 186, }, { 252, 3, 92, 211, 241, 58, 213, 1, 146, 82, 243, 125, 18, 17, 234, 135, }, { 224, 130, 151, 52, 211, 125, 243, 126, 124, 38, 47, 242, 16, 146, 203, 213, }, { 12, 154, 50, 99, 87, 110, 148, 118, 102, 243, 187, 156, 128, 26, 151, 103, }, { 87, 198, 217, 152, 139, 236, 215, 66, 55, 195, 15, 12, 46, 232, 178, 20, }, { 84, 1, 52, 240, 238, 22, 242, 190, 207, 143, 81, 43, 14, 15, 231, 125, }, { 141, 190, 173, 80, 90, 179, 239, 106, 69, 196, 142, 25, 187, 5, 93, 43, }, { 210, 148, 233, 138, 10, 170, 97, 205, 54, 165, 83, 253, 212, 64, 180, 196, }, { 247, 40, 44, 249, 79, 53, 169, 24, 46, 188, 127, 178, 115, 91, 228, 21, }, { 94, 214, 31, 67, 115, 79, 44, 243, 154, 228, 86, 249, 206, 24, 218, 200, }, { 249, 137, 168, 107, 94, 247, 186, 198, 89, 134, 17, 20, 114, 251, 21, 60, }, { 242, 162, 216, 65, 224, 248, 198, 223, 229, 104, 157, 219, 19, 177, 27, 174, }, { 227, 69, 122, 92, 182, 135, 214, 130, 132, 106, 113, 213, 48, 117, 158, 188, }, { 59, 6, 184, 101, 33, 116, 105, 2, 231, 164, 37, 250, 36, 34, 23, 205, }, { 3, 199, 237, 104, 101, 250, 37, 252, 248, 76, 94, 39, 32, 231, 85, 105, }, { 161, 18, 174, 248, 231, 143, 220, 14, 240, 250, 251, 163, 252, 238, 101, 38, }, { 150, 142, 36, 254, 145, 149, 33, 122, 113, 173, 101, 197, 88, 214, 229, 140, }, { 170, 57, 222, 210, 89, 128, 160, 23, 76, 20, 119, 108, 157, 164, 107, 180, }, { 159, 158, 226, 37, 105, 54, 218, 203, 220, 138, 60, 48, 184, 38, 141, 80, }, { 70, 33, 123, 133, 221, 147, 199, 31, 86, 193, 227, 2, 13, 44, 55, 6, }, { 65, 144, 57, 204, 52, 242, 47, 112, 140, 220, 212, 81, 236, 124, 174, 243, }, { 42, 225, 26, 120, 119, 11, 121, 95, 134, 166, 201, 244, 7, 230, 146, 223, }, { 96, 90, 83, 158, 253, 246, 42, 54, 182, 148, 145, 106, 138, 208, 50, 190, }, { 229, 8, 99, 140, 124, 176, 156, 185, 183, 242, 205, 155, 112, 120, 52, 110, }, { 148, 181, 146, 15, 215, 57, 166, 210, 96, 100, 176, 255, 217, 108, 131, 194, }, { 190, 84, 136, 119, 160, 50, 223, 141, 230, 194, 121, 11, 222, 138, 17, 29, }, { 144, 195, 61, 46, 91, 162, 107, 65, 66, 53, 217, 139, 24, 219, 79, 94, }, { 47, 107, 238, 192, 216, 198, 22, 152, 77, 114, 43, 157, 103, 12, 109, 100, }, { 157, 165, 84, 212, 47, 154, 93, 99, 205, 67, 233, 10, 57, 156, 235, 30, }, { 129, 36, 159, 51, 13, 221, 123, 28, 35, 55, 53, 133, 59, 31, 202, 76, }, { 162, 213, 67, 144, 130, 117, 249, 242, 8, 182, 165, 132, 220, 9, 48, 79, }, { 118, 12, 179, 202, 66, 232, 210, 4, 13, 139, 74, 55, 72, 68, 46, 89, }, { 75, 71, 18, 127, 169, 171, 241, 61, 217, 183, 211, 131, 44, 107, 147, 70, }, { 228, 244, 56, 21, 95, 230, 62, 237, 94, 119, 70, 134, 209, 37, 7, 73, }, { 6, 77, 25, 208, 202, 55, 74, 59, 51, 152, 188, 78, 64, 13, 170, 210, }, { 85, 253, 111, 105, 205, 64, 80, 234, 38, 10, 218, 54, 175, 82, 212, 90, }, { 174, 79, 113, 243, 213, 27, 109, 132, 110, 69, 30, 24, 92, 19, 167, 40, }, { 28, 129, 203, 231, 34, 71, 38, 127, 238, 116, 220, 143, 2, 131, 33, 82, }, { 117, 203, 94, 162, 39, 18, 247, 248, 245, 199, 20, 16, 104, 163, 123, 48, }, { 91, 92, 235, 251, 220, 130, 67, 52, 81, 48, 180, 144, 174, 242, 37, 115, }, { 4, 118, 175, 33, 140, 155, 205, 147, 34, 81, 105, 116, 193, 183, 204, 156, }, { 39, 135, 115, 130, 3, 51, 79, 125, 9, 208, 249, 117, 38, 161, 54, 159, }, { 77, 10, 11, 175, 99, 156, 187, 6, 234, 47, 111, 205, 108, 102, 57, 148, }, { 156, 89, 15, 77, 12, 204, 255, 55, 36, 198, 98, 23, 152, 193, 216, 57, }, { 32, 54, 49, 203, 234, 82, 167, 18, 211, 205, 206, 38, 199, 241, 175, 106, }, { 83, 176, 118, 185, 7, 119, 26, 209, 21, 146, 102, 120, 239, 95, 126, 136, }, { 208, 175, 95, 123, 76, 6, 230, 101, 39, 108, 134, 199, 85, 250, 210, 138, }, { 149, 73, 201, 150, 244, 111, 4, 134, 137, 225, 59, 226, 120, 49, 176, 229, }, { 243, 94, 131, 216, 195, 174, 100, 139, 12, 237, 22, 198, 178, 236, 40, 137, }, { 133, 82, 48, 18, 129, 70, 182, 143, 1, 102, 92, 241, 250, 168, 6, 208, }, { 136, 52, 89, 232, 245, 126, 128, 173, 142, 16, 108, 112, 219, 239, 162, 144, }, { 176, 245, 12, 229, 177, 240, 204, 83, 145, 248, 23, 173, 223, 42, 224, 52, }, { 34, 13, 135, 58, 172, 254, 32, 186, 194, 4, 27, 28, 70, 75, 201, 36, }, { 11, 43, 112, 42, 190, 15, 124, 25, 188, 238, 140, 207, 97, 74, 14, 146, }, { 2, 59, 182, 241, 70, 172, 135, 168, 17, 201, 213, 58, 129, 186, 102, 78, }, { 201, 164, 96, 36, 193, 140, 175, 221, 2, 204, 184, 33, 55, 147, 12, 99, }, { 219, 132, 47, 81, 242, 9, 154, 124, 155, 130, 10, 8, 52, 176, 220, 24, }, { 182, 184, 21, 53, 123, 199, 134, 104, 162, 96, 171, 227, 159, 39, 74, 230, }, { 64, 108, 98, 85, 23, 164, 141, 36, 101, 89, 95, 76, 77, 33, 157, 212, }, { 78, 205, 230, 199, 6, 102, 158, 250, 18, 99, 49, 234, 76, 129, 108, 253, }, { 215, 30, 29, 50, 165, 103, 14, 10, 253, 113, 177, 148, 180, 170, 75, 127, }, { 171, 197, 133, 75, 122, 214, 2, 67, 165, 145, 252, 113, 60, 249, 88, 147, }, { 152, 47, 160, 108, 128, 87, 50, 164, 6, 151, 11, 99, 89, 118, 20, 165, }, { 200, 88, 59, 189, 226, 218, 13, 137, 235, 73, 51, 60, 150, 206, 63, 68, }, { 175, 179, 42, 106, 246, 77, 207, 208, 135, 192, 149, 5, 253, 78, 148, 15, }, { 163, 41, 24, 9, 161, 35, 91, 166, 225, 51, 46, 153, 125, 84, 3, 104, }, { 68, 26, 205, 116, 155, 63, 64, 183, 71, 8, 54, 56, 140, 150, 81, 72, }, { 132, 174, 107, 139, 162, 16, 20, 219, 232, 227, 215, 236, 91, 245, 53, 247, }, { 158, 98, 185, 188, 74, 96, 120, 159, 53, 15, 183, 45, 25, 123, 190, 119, }, { 226, 185, 33, 197, 149, 209, 116, 214, 109, 239, 250, 200, 145, 40, 173, 155, }, { 205, 210, 207, 5, 77, 23, 98, 78, 32, 157, 209, 85, 246, 36, 192, 255, }, { 251, 178, 30, 154, 24, 91, 61, 110, 72, 79, 196, 46, 243, 65, 115, 114, }, { 69, 230, 150, 237, 184, 105, 226, 227, 174, 141, 189, 37, 45, 203, 98, 111, }, { 35, 241, 220, 163, 143, 168, 130, 238, 43, 129, 144, 1, 231, 22, 250, 3, }, { 198, 249, 191, 47, 243, 24, 30, 87, 156, 115, 93, 154, 151, 110, 206, 109, }, { 61, 75, 161, 181, 235, 67, 35, 57, 212, 60, 153, 180, 100, 47, 189, 31, }, { 23, 170, 187, 205, 156, 72, 90, 102, 82, 154, 80, 64, 99, 201, 47, 192, }, { 235, 169, 231, 30, 109, 114, 143, 103, 192, 200, 163, 61, 113, 216, 197, 71, }, { 46, 151, 181, 89, 251, 144, 180, 204, 164, 247, 160, 128, 198, 81, 94, 67, }, { 203, 159, 214, 213, 135, 32, 40, 117, 19, 5, 109, 27, 182, 41, 106, 45, }, { 178, 206, 186, 20, 247, 92, 75, 251, 128, 49, 194, 151, 94, 144, 134, 122, }, { 92, 237, 169, 178, 53, 227, 171, 91, 139, 45, 131, 195, 79, 162, 188, 134, }, { 74, 187, 73, 230, 138, 253, 83, 105, 48, 50, 88, 158, 141, 54, 160, 97, }, { 100, 44, 252, 191, 113, 109, 231, 165, 148, 197, 248, 30, 75, 103, 254, 34, }, { 113, 189, 241, 131, 171, 137, 58, 107, 215, 150, 125, 100, 169, 20, 183, 172, }, { 53, 167, 60, 247, 48, 182, 122, 220, 144, 158, 75, 92, 37, 130, 230, 228, }, { 199, 5, 228, 182, 208, 78, 188, 3, 117, 246, 214, 135, 54, 51, 253, 74, }, { 7, 177, 66, 73, 233, 97, 232, 111, 218, 29, 55, 83, 225, 80, 153, 245, }, { 89, 103, 93, 10, 154, 46, 196, 156, 64, 249, 97, 170, 47, 72, 67, 61, }, { 56, 193, 85, 13, 68, 142, 76, 254, 31, 232, 123, 221, 4, 197, 66, 164, }, { 234, 85, 188, 135, 78, 36, 45, 51, 41, 77, 40, 32, 208, 133, 246, 96, }, { 55, 156, 138, 6, 118, 26, 253, 116, 129, 87, 158, 102, 164, 56, 128, 170, }, { 99, 157, 190, 246, 152, 12, 15, 202, 78, 216, 207, 77, 170, 55, 103, 215, }, { 24, 247, 100, 198, 174, 220, 235, 236, 204, 37, 181, 251, 195, 52, 237, 206, }, { 167, 95, 183, 40, 45, 184, 150, 53, 195, 98, 71, 237, 188, 227, 207, 244, }, { 88, 155, 6, 147, 185, 120, 102, 200, 169, 124, 234, 183, 142, 21, 112, 26, }, { 17, 231, 162, 29, 86, 127, 16, 93, 97, 2, 236, 14, 35, 196, 133, 18, }, { 245, 19, 154, 8, 9, 153, 46, 176, 63, 117, 170, 136, 242, 225, 130, 91, }, { 217, 191, 153, 160, 180, 165, 29, 212, 138, 75, 223, 50, 181, 10, 186, 86, }, { 233, 146, 81, 239, 43, 222, 8, 207, 209, 1, 118, 7, 240, 98, 163, 9, }, { 37, 188, 197, 115, 69, 159, 200, 213, 24, 25, 44, 79, 167, 27, 80, 209, }, { 248, 117, 243, 242, 125, 161, 24, 146, 176, 3, 154, 9, 211, 166, 38, 27, }, { 151, 114, 127, 103, 178, 195, 131, 46, 152, 40, 238, 216, 249, 139, 214, 171, }, { 177, 9, 87, 124, 146, 166, 110, 7, 120, 125, 156, 176, 126, 119, 211, 19, }, { 25, 11, 63, 95, 141, 138, 73, 184, 37, 160, 62, 230, 98, 105, 222, 233, }, { 15, 93, 223, 11, 50, 148, 177, 138, 158, 191, 229, 187, 160, 253, 194, 14, }, { 137, 200, 2, 113, 214, 40, 34, 249, 103, 149, 231, 109, 122, 178, 145, 183, }, { 220, 53, 109, 24, 27, 104, 114, 19, 65, 159, 61, 91, 213, 224, 69, 237, }, { 8, 236, 157, 66, 219, 245, 89, 229, 68, 162, 210, 232, 65, 173, 91, 251, }, { 241, 101, 53, 41, 133, 2, 227, 35, 29, 36, 195, 252, 51, 86, 78, 199, }, { 168, 2, 104, 35, 31, 44, 39, 191, 93, 221, 162, 86, 28, 30, 13, 250, }, { 14, 161, 132, 146, 17, 194, 19, 222, 119, 58, 110, 166, 1, 160, 241, 41, }, { 111, 7, 140, 149, 207, 98, 155, 188, 40, 43, 116, 209, 42, 45, 240, 176, }, { 125, 39, 195, 224, 252, 231, 174, 29, 177, 101, 198, 248, 41, 14, 32, 203, }, { 212, 217, 240, 90, 192, 157, 43, 246, 5, 61, 239, 179, 148, 77, 30, 22, }, { 189, 147, 101, 31, 197, 200, 250, 113, 30, 142, 39, 44, 254, 109, 68, 116, }, { 134, 149, 221, 122, 228, 188, 147, 115, 249, 42, 2, 214, 218, 79, 83, 185, }, { 236, 24, 165, 87, 132, 19, 103, 8, 26, 213, 148, 110, 144, 136, 92, 178, }, { 50, 22, 126, 190, 217, 215, 146, 179, 74, 131, 124, 15, 196, 210, 127, 17, }, { 126, 224, 46, 136, 153, 29, 139, 225, 73, 41, 152, 223, 9, 233, 117, 162, }, { 237, 228, 254, 206, 167, 69, 197, 92, 243, 80, 31, 115, 49, 213, 111, 149, }, { 110, 251, 215, 12, 236, 52, 57, 232, 193, 174, 255, 204, 139, 112, 195, 151, }, { 195, 115, 75, 151, 92, 213, 113, 144, 87, 167, 191, 243, 247, 132, 49, 214, }, { 33, 202, 106, 82, 201, 4, 5, 70, 58, 72, 69, 59, 102, 172, 156, 77, }, { 98, 97, 229, 111, 187, 90, 173, 158, 167, 93, 68, 80, 11, 106, 84, 240, }, { 206, 21, 34, 109, 40, 237, 71, 178, 216, 209, 143, 114, 214, 195, 149, 150, }, { 147, 4, 208, 70, 62, 88, 78, 189, 186, 121, 135, 172, 56, 60, 26, 55, }, { 76, 246, 80, 54, 64, 202, 25, 82, 3, 170, 228, 208, 205, 59, 10, 179, }, { 222, 14, 219, 233, 93, 196, 245, 187, 80, 86, 232, 97, 84, 90, 35, 163, }, { 63, 112, 23, 68, 173, 239, 164, 145, 197, 245, 76, 142, 229, 149, 219, 81, }, { 67, 171, 143, 61, 114, 94, 168, 216, 157, 21, 1, 107, 109, 198, 200, 189, }, { 115, 134, 71, 114, 237, 37, 189, 195, 198, 95, 168, 94, 40, 174, 209, 226, }, { 173, 136, 156, 155, 176, 225, 72, 120, 150, 9, 64, 63, 124, 244, 242, 65, }, { 240, 153, 110, 176, 166, 84, 65, 119, 244, 161, 72, 225, 146, 11, 125, 224, }, { 71, 221, 32, 28, 254, 197, 101, 75, 191, 68, 104, 31, 172, 113, 4, 33, }, { 60, 183, 250, 44, 200, 21, 129, 109, 61, 185, 18, 169, 197, 114, 142, 56, }, { 97, 166, 8, 7, 222, 160, 136, 98, 95, 17, 26, 119, 43, 141, 1, 153, }, { 86, 58, 130, 1, 168, 186, 117, 22, 222, 70, 132, 17, 143, 181, 129, 51, }, { 41, 38, 247, 16, 18, 241, 92, 163, 126, 234, 151, 211, 39, 1, 199, 182, }, { 123, 106, 218, 48, 54, 208, 228, 38, 130, 253, 122, 182, 105, 3, 138, 25, }, { 16, 27, 249, 132, 117, 41, 178, 9, 136, 135, 103, 19, 130, 153, 182, 53, }, { 255, 196, 177, 187, 148, 192, 240, 253, 106, 30, 173, 90, 50, 246, 191, 238, }, { 93, 17, 242, 43, 22, 181, 9, 15, 98, 168, 8, 222, 238, 255, 143, 161, }, { 49, 209, 147, 214, 188, 45, 183, 79, 178, 207, 34, 40, 228, 53, 42, 120, }, { 183, 68, 78, 172, 88, 145, 36, 60, 75, 229, 32, 254, 62, 122, 121, 193, }, { 179, 50, 225, 141, 212, 10, 233, 175, 105, 180, 73, 138, 255, 205, 181, 93, }, { 107, 113, 35, 180, 67, 249, 86, 47, 10, 122, 29, 165, 235, 154, 60, 44, }, { 192, 180, 166, 255, 57, 47, 84, 108, 175, 235, 225, 212, 215, 99, 100, 191, }, { 127, 28, 117, 17, 186, 75, 41, 181, 160, 172, 19, 194, 168, 180, 70, 133, }, { 30, 186, 125, 22, 100, 235, 161, 215, 255, 189, 9, 181, 131, 57, 71, 28, }, { 209, 83, 4, 226, 111, 80, 68, 49, 206, 233, 13, 218, 244, 167, 225, 173, }, { 120, 173, 55, 88, 83, 42, 193, 218, 122, 177, 36, 145, 73, 228, 223, 112, }, { 194, 143, 16, 14, 127, 131, 211, 196, 190, 34, 52, 238, 86, 217, 2, 241, }, { 187, 222, 124, 207, 15, 255, 176, 74, 45, 22, 155, 98, 190, 96, 238, 166, }, { 109, 60, 58, 100, 137, 206, 28, 20, 57, 226, 161, 235, 171, 151, 150, 254, }, { 225, 126, 204, 173, 240, 43, 81, 42, 149, 163, 164, 239, 177, 207, 248, 242, }, { 31, 70, 38, 143, 71, 189, 3, 131, 22, 56, 130, 168, 34, 100, 116, 59, }, { 130, 227, 114, 91, 104, 39, 94, 224, 219, 123, 107, 162, 27, 248, 159, 37, }, { 186, 34, 39, 86, 44, 169, 18, 30, 196, 147, 16, 127, 31, 61, 221, 129, }, { 140, 66, 246, 201, 121, 229, 77, 62, 172, 65, 5, 4, 26, 88, 110, 12, }, { 207, 233, 121, 244, 11, 187, 229, 230, 49, 84, 4, 111, 119, 158, 166, 177, }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, { 254, 56, 234, 34, 183, 150, 82, 169, 131, 155, 38, 71, 147, 171, 140, 201, }, { 66, 87, 212, 164, 81, 8, 10, 140, 116, 144, 138, 118, 204, 155, 251, 154, }, { 214, 226, 70, 171, 134, 49, 172, 94, 20, 244, 58, 137, 21, 247, 120, 88, }, }, { { 165, 157, 133, 70, 138, 14, 97, 196, 66, 231, 180, 202, 192, 61, 244, 232, }, { 45, 48, 124, 177, 178, 150, 171, 134, 18, 63, 188, 16, 37, 230, 30, 241, }, { 50, 179, 41, 241, 230, 177, 83, 97, 202, 248, 160, 208, 90, 196, 150, 55, }, { 143, 194, 105, 85, 240, 130, 242, 125, 57, 182, 231, 255, 17, 58, 232, 47, }, { 14, 222, 227, 135, 83, 52, 112, 126, 210, 220, 29, 74, 43, 1, 4, 108, }, { 48, 27, 73, 7, 251, 122, 67, 115, 161, 145, 37, 9, 213, 69, 215, 35, }, { 56, 254, 10, 89, 143, 208, 3, 59, 206, 246, 116, 235, 172, 4, 16, 115, }, { 192, 108, 231, 28, 106, 43, 207, 15, 193, 1, 148, 36, 210, 215, 218, 140, }, { 84, 190, 27, 38, 244, 219, 229, 177, 246, 162, 166, 106, 97, 14, 56, 77, }, { 230, 69, 136, 126, 94, 88, 60, 218, 3, 229, 95, 130, 167, 80, 131, 51, }, { 158, 159, 223, 146, 247, 145, 122, 228, 51, 173, 230, 117, 69, 25, 100, 133, }, { 57, 170, 58, 34, 96, 84, 11, 50, 26, 35, 215, 102, 10, 165, 209, 121, }, { 85, 234, 43, 93, 27, 95, 237, 184, 34, 119, 5, 231, 199, 175, 249, 71, }, { 126, 225, 247, 53, 142, 87, 118, 8, 141, 243, 245, 95, 176, 9, 36, 138, }, { 82, 133, 187, 255, 211, 69, 213, 135, 75, 25, 234, 194, 51, 78, 251, 113, }, { 145, 21, 12, 110, 75, 33, 2, 147, 53, 164, 88, 178, 200, 185, 161, 227, }, { 100, 165, 82, 33, 15, 161, 166, 194, 87, 51, 131, 99, 180, 75, 239, 110, }, { 3, 252, 80, 141, 242, 79, 24, 27, 191, 188, 38, 84, 41, 32, 128, 30, }, { 87, 66, 75, 171, 6, 148, 253, 170, 73, 30, 128, 62, 72, 46, 184, 83, }, { 90, 96, 248, 161, 167, 239, 149, 207, 36, 126, 187, 32, 74, 15, 60, 33, }, { 28, 127, 5, 205, 166, 104, 224, 252, 103, 123, 58, 148, 86, 2, 8, 216, }, { 96, 54, 146, 14, 53, 244, 134, 230, 129, 225, 74, 18, 105, 138, 109, 70, }, { 7, 111, 144, 162, 200, 26, 56, 63, 105, 110, 239, 37, 244, 225, 2, 54, }, { 24, 236, 197, 226, 156, 61, 192, 216, 177, 169, 243, 229, 139, 195, 138, 240, }, { 33, 70, 255, 192, 252, 105, 203, 234, 171, 138, 36, 131, 129, 102, 91, 137, }, { 114, 151, 116, 68, 192, 168, 22, 100, 52, 70, 109, 204, 20, 137, 97, 242, }, { 168, 191, 54, 76, 43, 117, 9, 161, 47, 135, 143, 212, 194, 28, 112, 154, }, { 209, 49, 81, 219, 109, 56, 71, 150, 203, 26, 149, 174, 134, 244, 86, 38, }, { 41, 163, 188, 158, 136, 195, 139, 162, 196, 237, 117, 97, 248, 39, 156, 217, }, { 198, 87, 71, 197, 77, 181, 255, 57, 124, 186, 216, 140, 128, 151, 25, 176, }, { 164, 201, 181, 61, 101, 138, 105, 205, 150, 50, 23, 71, 102, 156, 53, 226, }, { 63, 145, 154, 251, 71, 202, 59, 4, 167, 152, 155, 206, 88, 229, 18, 69, }, { 224, 126, 40, 167, 121, 198, 12, 236, 190, 94, 19, 42, 245, 16, 64, 15, }, { 39, 125, 95, 25, 219, 247, 251, 220, 22, 49, 104, 43, 211, 38, 152, 181, }, { 141, 106, 9, 163, 237, 73, 226, 111, 82, 223, 98, 38, 158, 187, 169, 59, }, { 12, 118, 131, 113, 78, 255, 96, 108, 185, 181, 152, 147, 164, 128, 69, 120, }, { 130, 224, 218, 95, 81, 249, 154, 24, 84, 214, 220, 225, 19, 27, 108, 93, }, { 234, 51, 11, 15, 16, 167, 92, 182, 186, 80, 199, 17, 3, 208, 198, 75, }, { 174, 132, 150, 149, 12, 235, 57, 151, 146, 60, 195, 124, 144, 92, 179, 166, }, { 180, 192, 51, 129, 141, 29, 233, 93, 72, 252, 181, 64, 148, 30, 120, 66, }, { 154, 12, 31, 189, 205, 196, 90, 192, 229, 127, 47, 4, 152, 216, 230, 173, }, { 99, 202, 194, 131, 199, 187, 158, 253, 62, 93, 108, 70, 64, 170, 237, 88, }, { 73, 149, 46, 144, 189, 55, 13, 68, 69, 12, 63, 115, 145, 173, 241, 159, }, { 229, 185, 216, 243, 172, 23, 36, 193, 188, 89, 121, 214, 142, 112, 3, 45, }, { 66, 140, 61, 67, 59, 210, 85, 23, 149, 215, 72, 197, 193, 204, 182, 209, }, { 228, 237, 232, 136, 67, 147, 44, 200, 104, 140, 218, 91, 40, 209, 194, 39, }, { 21, 206, 118, 232, 61, 70, 168, 189, 220, 201, 200, 251, 137, 226, 14, 130, }, { 183, 60, 99, 12, 127, 82, 241, 70, 247, 64, 147, 20, 189, 62, 248, 92, }, { 200, 137, 164, 66, 30, 129, 143, 71, 174, 102, 197, 198, 171, 150, 29, 220, }, { 6, 59, 160, 217, 39, 158, 48, 54, 189, 187, 76, 168, 82, 64, 195, 60, }, { 112, 63, 20, 178, 221, 99, 6, 118, 95, 47, 232, 21, 155, 8, 32, 230, }, { 157, 99, 143, 31, 5, 222, 98, 255, 140, 17, 192, 33, 108, 57, 228, 155, }, { 65, 112, 109, 206, 201, 157, 77, 12, 42, 107, 110, 145, 232, 236, 54, 207, }, { 117, 248, 228, 230, 8, 178, 46, 91, 93, 40, 130, 233, 224, 104, 99, 196, }, { 25, 184, 245, 153, 115, 185, 200, 209, 101, 124, 80, 104, 45, 98, 75, 250, }, { 201, 221, 148, 57, 241, 5, 135, 78, 122, 179, 102, 75, 13, 55, 220, 214, }, { 170, 23, 86, 186, 54, 190, 25, 179, 68, 238, 10, 13, 77, 157, 49, 142, }, { 252, 1, 45, 106, 223, 174, 236, 16, 217, 37, 41, 190, 163, 18, 72, 215, }, { 77, 6, 238, 191, 135, 98, 45, 96, 147, 222, 246, 2, 76, 108, 115, 183, }, { 191, 217, 32, 82, 11, 248, 177, 14, 152, 39, 194, 246, 196, 127, 63, 12, }, { 42, 95, 236, 19, 122, 140, 147, 185, 123, 81, 83, 53, 209, 7, 28, 199, }, { 115, 195, 68, 63, 47, 44, 30, 109, 224, 147, 206, 65, 178, 40, 160, 248, }, { 132, 219, 122, 134, 118, 103, 170, 46, 233, 109, 144, 73, 65, 91, 175, 97, }, { 213, 162, 145, 244, 87, 109, 103, 178, 29, 200, 92, 223, 91, 53, 212, 14, }, { 195, 144, 183, 145, 152, 100, 215, 20, 126, 189, 178, 112, 251, 247, 90, 146, }, { 175, 208, 166, 238, 227, 111, 49, 158, 70, 233, 96, 241, 54, 253, 114, 172, }, { 43, 11, 220, 104, 149, 8, 155, 176, 175, 132, 240, 184, 119, 166, 221, 205, }, { 134, 115, 26, 112, 107, 172, 186, 60, 130, 4, 21, 144, 206, 218, 238, 117, }, { 167, 53, 229, 176, 151, 197, 113, 214, 41, 142, 49, 19, 79, 188, 181, 252, }, { 177, 7, 195, 213, 88, 204, 193, 112, 74, 251, 223, 188, 239, 126, 59, 96, }, { 178, 251, 147, 88, 170, 131, 217, 107, 245, 71, 249, 232, 198, 94, 187, 126, }, { 91, 52, 200, 218, 72, 107, 157, 198, 240, 171, 24, 173, 236, 174, 253, 43, }, { 70, 31, 253, 108, 1, 135, 117, 51, 67, 5, 129, 180, 28, 13, 52, 249, }, { 211, 153, 49, 45, 112, 243, 87, 132, 160, 115, 16, 119, 9, 117, 23, 50, }, { 159, 203, 239, 233, 24, 21, 114, 237, 231, 120, 69, 248, 227, 184, 165, 143, }, { 253, 85, 29, 17, 48, 42, 228, 25, 13, 240, 138, 51, 5, 179, 137, 221, }, { 212, 246, 161, 143, 184, 233, 111, 187, 201, 29, 255, 82, 253, 148, 21, 4, }, { 15, 138, 211, 252, 188, 176, 120, 119, 6, 9, 190, 199, 141, 160, 197, 102, }, { 156, 55, 191, 100, 234, 90, 106, 246, 88, 196, 99, 172, 202, 152, 37, 145, }, { 47, 152, 28, 71, 175, 93, 187, 148, 121, 86, 57, 201, 170, 103, 95, 229, }, { 155, 88, 47, 198, 34, 64, 82, 201, 49, 170, 140, 137, 62, 121, 39, 167, }, { 67, 216, 13, 56, 212, 86, 93, 30, 65, 2, 235, 72, 103, 109, 119, 219, }, { 239, 244, 251, 91, 197, 118, 116, 155, 184, 87, 173, 237, 120, 176, 133, 105, }, { 217, 212, 18, 133, 25, 146, 7, 222, 164, 125, 196, 76, 255, 181, 145, 118, }, { 121, 142, 103, 151, 70, 77, 78, 55, 228, 157, 26, 122, 68, 232, 38, 188, }, { 182, 104, 83, 119, 144, 214, 249, 79, 35, 149, 48, 153, 27, 159, 57, 86, }, { 83, 209, 139, 132, 60, 193, 221, 142, 159, 204, 73, 79, 149, 239, 58, 123, }, { 127, 181, 199, 78, 97, 211, 126, 1, 89, 38, 86, 210, 22, 168, 229, 128, }, { 193, 56, 215, 103, 133, 175, 199, 6, 21, 212, 55, 169, 116, 118, 27, 134, }, { 240, 119, 174, 27, 145, 81, 140, 124, 96, 144, 177, 45, 7, 146, 13, 175, }, { 35, 238, 159, 54, 225, 162, 219, 248, 192, 227, 161, 90, 14, 231, 26, 157, }, { 231, 17, 184, 5, 177, 220, 52, 211, 215, 48, 252, 15, 1, 241, 66, 57, }, { 37, 213, 63, 239, 198, 60, 235, 206, 125, 88, 237, 242, 92, 167, 217, 161, }, { 94, 243, 56, 142, 157, 186, 181, 235, 242, 172, 114, 81, 151, 206, 190, 9, }, { 181, 148, 3, 250, 98, 153, 225, 84, 156, 41, 22, 205, 50, 191, 185, 72, }, { 30, 215, 101, 59, 187, 163, 240, 238, 12, 18, 191, 77, 217, 131, 73, 204, }, { 162, 242, 21, 228, 66, 20, 89, 251, 43, 137, 91, 239, 52, 220, 246, 222, }, { 223, 239, 178, 92, 62, 12, 55, 232, 25, 198, 136, 228, 173, 245, 82, 74, }, { 166, 97, 213, 203, 120, 65, 121, 223, 253, 91, 146, 158, 233, 29, 116, 246, }, { 254, 169, 77, 156, 194, 101, 252, 2, 178, 76, 172, 103, 44, 147, 9, 195, }, { 172, 44, 246, 99, 17, 32, 41, 133, 249, 85, 70, 165, 31, 221, 242, 178, }, { 34, 186, 175, 77, 14, 38, 211, 241, 20, 54, 2, 215, 168, 70, 219, 151, }, { 249, 198, 221, 62, 10, 127, 196, 61, 219, 34, 67, 66, 216, 114, 11, 245, }, { 226, 214, 72, 81, 100, 13, 28, 254, 213, 55, 150, 243, 122, 145, 1, 27, }, { 74, 105, 126, 29, 79, 120, 21, 95, 250, 176, 25, 39, 184, 141, 113, 129, }, { 188, 37, 112, 223, 249, 183, 169, 21, 39, 155, 228, 162, 237, 95, 191, 18, }, { 53, 220, 185, 83, 46, 171, 107, 94, 163, 150, 79, 245, 174, 37, 148, 1, }, { 202, 33, 196, 180, 3, 74, 159, 85, 197, 15, 64, 31, 36, 23, 92, 200, }, { 238, 160, 203, 32, 42, 242, 124, 146, 108, 130, 14, 96, 222, 17, 68, 99, }, { 120, 218, 87, 236, 169, 201, 70, 62, 48, 72, 185, 247, 226, 73, 231, 182, }, { 5, 199, 240, 84, 213, 209, 40, 45, 2, 7, 106, 252, 123, 96, 67, 34, }, { 107, 47, 129, 221, 179, 17, 222, 181, 81, 58, 61, 164, 57, 235, 42, 8, }, { 81, 121, 235, 114, 33, 10, 205, 156, 244, 165, 204, 150, 26, 110, 123, 111, }, { 225, 42, 24, 220, 150, 66, 4, 229, 106, 139, 176, 167, 83, 177, 129, 5, }, { 89, 156, 168, 44, 85, 160, 141, 212, 155, 194, 157, 116, 99, 47, 188, 63, }, { 163, 166, 37, 159, 173, 144, 81, 242, 255, 92, 248, 98, 146, 125, 55, 212, }, { 242, 223, 206, 237, 140, 154, 156, 110, 11, 249, 52, 244, 136, 19, 76, 187, }, { 113, 107, 36, 201, 50, 231, 14, 127, 139, 250, 75, 152, 61, 169, 225, 236, }, { 86, 22, 123, 208, 233, 16, 245, 163, 157, 203, 35, 179, 238, 143, 121, 89, }, { 17, 93, 182, 199, 7, 19, 136, 153, 10, 27, 1, 138, 84, 35, 140, 170, }, { 106, 123, 177, 166, 92, 149, 214, 188, 133, 239, 158, 41, 159, 74, 235, 2, }, { 137, 249, 201, 140, 215, 28, 194, 75, 132, 13, 171, 87, 67, 122, 43, 19, }, { 148, 210, 252, 58, 158, 240, 42, 190, 55, 163, 50, 78, 179, 217, 226, 193, }, { 101, 241, 98, 90, 224, 37, 174, 203, 131, 230, 32, 238, 18, 234, 46, 100, }, { 140, 62, 57, 216, 2, 205, 234, 102, 134, 10, 193, 171, 56, 26, 104, 49, }, { 187, 74, 224, 125, 49, 173, 145, 42, 78, 245, 11, 135, 25, 190, 189, 36, }, { 119, 80, 132, 16, 21, 121, 62, 73, 54, 65, 7, 48, 111, 233, 34, 208, }, { 60, 109, 202, 118, 181, 133, 35, 31, 24, 36, 189, 154, 113, 197, 146, 91, }, { 123, 38, 7, 97, 91, 134, 94, 37, 143, 244, 159, 163, 203, 105, 103, 168, }, { 40, 247, 140, 229, 103, 71, 131, 171, 16, 56, 214, 236, 94, 134, 93, 211, }, { 171, 67, 102, 193, 217, 58, 17, 186, 144, 59, 169, 128, 235, 60, 240, 132, }, { 210, 205, 1, 86, 159, 119, 95, 141, 116, 166, 179, 250, 175, 212, 214, 56, }, { 49, 79, 121, 124, 20, 254, 75, 122, 117, 68, 134, 132, 115, 228, 22, 41, }, { 222, 187, 130, 39, 209, 136, 63, 225, 205, 19, 43, 105, 11, 84, 147, 64, }, { 196, 255, 39, 51, 80, 126, 239, 43, 23, 211, 93, 85, 15, 22, 88, 164, }, { 95, 167, 8, 245, 114, 62, 189, 226, 38, 121, 209, 220, 49, 111, 127, 3, }, { 204, 26, 100, 109, 36, 212, 175, 99, 120, 180, 12, 183, 118, 87, 159, 244, }, { 207, 230, 52, 224, 214, 155, 183, 120, 199, 8, 42, 227, 95, 119, 31, 234, }, { 118, 4, 180, 107, 250, 253, 54, 64, 226, 148, 164, 189, 201, 72, 227, 218, }, { 44, 100, 76, 202, 93, 18, 163, 143, 198, 234, 31, 157, 131, 71, 223, 251, }, { 184, 182, 176, 240, 195, 226, 137, 49, 241, 73, 45, 211, 48, 158, 61, 58, }, { 216, 128, 34, 254, 246, 22, 15, 215, 112, 168, 103, 193, 89, 20, 80, 124, }, { 46, 204, 44, 60, 64, 217, 179, 157, 173, 131, 154, 68, 12, 198, 158, 239, }, { 54, 32, 233, 222, 220, 228, 115, 69, 28, 42, 105, 161, 135, 5, 20, 31, }, { 219, 124, 114, 115, 4, 89, 23, 204, 207, 20, 65, 149, 112, 52, 208, 98, }, { 105, 135, 225, 43, 174, 218, 206, 167, 58, 83, 184, 125, 182, 106, 107, 28, }, { 179, 175, 163, 35, 69, 7, 209, 98, 33, 146, 90, 101, 96, 255, 122, 116, }, { 20, 154, 70, 147, 210, 194, 160, 180, 8, 28, 107, 118, 47, 67, 207, 136, }, { 149, 134, 204, 65, 113, 116, 34, 183, 227, 118, 145, 195, 21, 120, 35, 203, }, { 190, 141, 16, 41, 228, 124, 185, 7, 76, 242, 97, 123, 98, 222, 254, 6, }, { 98, 158, 242, 248, 40, 63, 150, 244, 234, 136, 207, 203, 230, 11, 44, 82, }, { 161, 14, 69, 105, 176, 91, 65, 224, 148, 53, 125, 187, 29, 252, 118, 192, }, { 59, 2, 90, 212, 125, 159, 27, 32, 113, 74, 82, 191, 133, 36, 144, 109, }, { 22, 50, 38, 101, 207, 9, 176, 166, 99, 117, 238, 175, 160, 194, 142, 156, }, { 102, 13, 50, 215, 18, 106, 182, 208, 60, 90, 6, 186, 59, 202, 174, 122, }, { 233, 207, 91, 130, 226, 232, 68, 173, 5, 236, 225, 69, 42, 240, 70, 85, }, { 92, 91, 88, 120, 128, 113, 165, 249, 153, 197, 247, 136, 24, 79, 255, 29, }, { 108, 64, 17, 127, 123, 11, 230, 138, 56, 84, 210, 129, 205, 10, 40, 62, }, { 109, 20, 33, 4, 148, 143, 238, 131, 236, 129, 113, 12, 107, 171, 233, 52, }, { 173, 120, 198, 24, 254, 164, 33, 140, 45, 128, 229, 40, 185, 124, 51, 184, }, { 55, 116, 217, 165, 51, 96, 123, 76, 200, 255, 202, 44, 33, 164, 213, 21, }, { 97, 98, 162, 117, 218, 112, 142, 239, 85, 52, 233, 159, 207, 43, 172, 76, }, { 75, 61, 78, 102, 160, 252, 29, 86, 46, 101, 186, 170, 30, 44, 176, 139, }, { 185, 226, 128, 139, 44, 102, 129, 56, 37, 156, 142, 94, 150, 63, 252, 48, }, { 227, 130, 120, 42, 139, 137, 20, 247, 1, 226, 53, 126, 220, 48, 192, 17, }, { 186, 30, 208, 6, 222, 41, 153, 35, 154, 32, 168, 10, 191, 31, 124, 46, }, { 241, 35, 158, 96, 126, 213, 132, 117, 180, 69, 18, 160, 161, 51, 204, 165, }, { 160, 90, 117, 18, 95, 223, 73, 233, 64, 224, 222, 54, 187, 93, 183, 202, }, { 133, 143, 74, 253, 153, 227, 162, 39, 61, 184, 51, 196, 231, 250, 110, 107, }, { 131, 180, 234, 36, 190, 125, 146, 17, 128, 3, 127, 108, 181, 186, 173, 87, }, { 218, 40, 66, 8, 235, 221, 31, 197, 27, 193, 226, 24, 214, 149, 17, 104, }, { 71, 75, 205, 23, 238, 3, 125, 58, 151, 208, 34, 57, 186, 172, 245, 243, }, { 197, 171, 23, 72, 191, 250, 231, 34, 195, 6, 254, 216, 169, 183, 153, 174, }, { 176, 83, 243, 174, 183, 72, 201, 121, 158, 46, 124, 49, 73, 223, 250, 106, }, { 51, 231, 25, 138, 9, 53, 91, 104, 30, 45, 3, 93, 252, 101, 87, 61, }, { 250, 58, 141, 179, 248, 48, 220, 38, 100, 158, 101, 22, 241, 82, 139, 235, }, { 150, 122, 156, 204, 131, 59, 58, 172, 92, 202, 183, 151, 60, 88, 163, 213, }, { 111, 188, 65, 242, 137, 68, 254, 145, 135, 232, 244, 213, 228, 42, 168, 32, }, { 110, 232, 113, 137, 102, 192, 246, 152, 83, 61, 87, 88, 66, 139, 105, 42, }, { 194, 196, 135, 234, 119, 224, 223, 29, 170, 104, 17, 253, 93, 86, 155, 152, }, { 246, 76, 14, 194, 182, 207, 188, 74, 221, 43, 253, 133, 85, 210, 206, 147, }, { 80, 45, 219, 9, 206, 142, 197, 149, 32, 112, 111, 27, 188, 207, 186, 101, }, { 255, 253, 125, 231, 45, 225, 244, 11, 102, 153, 15, 234, 138, 50, 200, 201, }, { 93, 15, 104, 3, 111, 245, 173, 240, 77, 16, 84, 5, 190, 238, 62, 23, }, { 169, 235, 6, 55, 196, 241, 1, 168, 251, 82, 44, 89, 100, 189, 177, 144, }, { 142, 150, 89, 46, 31, 6, 250, 116, 237, 99, 68, 114, 183, 155, 41, 37, }, { 23, 102, 22, 30, 32, 141, 184, 175, 183, 160, 77, 34, 6, 99, 79, 150, }, { 27, 16, 149, 111, 110, 114, 216, 195, 14, 21, 213, 177, 162, 227, 10, 238, }, { 151, 46, 172, 183, 108, 191, 50, 165, 136, 31, 20, 26, 154, 249, 98, 223, }, { 125, 29, 167, 184, 124, 24, 110, 19, 50, 79, 211, 11, 153, 41, 164, 148, }, { 236, 8, 171, 214, 55, 57, 108, 128, 7, 235, 139, 185, 81, 144, 5, 119, }, { 88, 200, 152, 87, 186, 36, 133, 221, 79, 23, 62, 249, 197, 142, 125, 53, }, { 247, 24, 62, 185, 89, 75, 180, 67, 9, 254, 94, 8, 243, 115, 15, 153, }, { 31, 131, 85, 64, 84, 39, 248, 231, 216, 199, 28, 192, 127, 34, 136, 198, }, { 251, 110, 189, 200, 23, 180, 212, 47, 176, 75, 198, 155, 87, 243, 74, 225, }, { 124, 73, 151, 195, 147, 156, 102, 26, 230, 154, 112, 134, 63, 136, 101, 158, }, { 9, 177, 115, 37, 155, 46, 72, 65, 187, 178, 242, 111, 223, 224, 6, 90, }, { 13, 34, 179, 10, 161, 123, 104, 101, 109, 96, 59, 30, 2, 33, 132, 114, }, { 122, 114, 55, 26, 180, 2, 86, 44, 91, 33, 60, 46, 109, 200, 166, 162, }, { 103, 89, 2, 172, 253, 238, 190, 217, 232, 143, 165, 55, 157, 107, 111, 112, }, { 69, 227, 173, 225, 243, 200, 109, 40, 252, 185, 167, 224, 53, 45, 180, 231, }, { 135, 39, 42, 11, 132, 40, 178, 53, 86, 209, 182, 29, 104, 123, 47, 127, }, { 220, 19, 226, 209, 204, 67, 47, 243, 166, 122, 174, 176, 132, 213, 210, 84, }, { 232, 155, 107, 249, 13, 108, 76, 164, 209, 57, 66, 200, 140, 81, 135, 95, }, { 79, 174, 142, 73, 154, 169, 61, 114, 248, 183, 115, 219, 195, 237, 50, 163, }, { 29, 43, 53, 182, 73, 236, 232, 245, 179, 174, 153, 25, 240, 163, 201, 210, }, { 78, 250, 190, 50, 117, 45, 53, 123, 44, 98, 208, 86, 101, 76, 243, 169, }, { 4, 147, 192, 47, 58, 85, 32, 36, 214, 210, 201, 113, 221, 193, 130, 40, }, { 235, 103, 59, 116, 255, 35, 84, 191, 110, 133, 100, 156, 165, 113, 7, 65, }, { 248, 146, 237, 69, 229, 251, 204, 52, 15, 247, 224, 207, 126, 211, 202, 255, }, { 243, 139, 254, 150, 99, 30, 148, 103, 223, 44, 151, 121, 46, 178, 141, 177, }, { 62, 197, 170, 128, 168, 78, 51, 13, 115, 77, 56, 67, 254, 68, 211, 79, }, { 61, 57, 250, 13, 90, 1, 43, 22, 204, 241, 30, 23, 215, 100, 83, 81, }, { 189, 113, 64, 164, 22, 51, 161, 28, 243, 78, 71, 47, 75, 254, 126, 24, }, { 138, 5, 153, 1, 37, 83, 218, 80, 59, 177, 141, 3, 106, 90, 171, 13, }, { 136, 173, 249, 247, 56, 152, 202, 66, 80, 216, 8, 218, 229, 219, 234, 25, }, { 221, 71, 210, 170, 35, 199, 39, 250, 114, 175, 13, 61, 34, 116, 19, 94, }, { 205, 78, 84, 22, 203, 80, 167, 106, 172, 97, 175, 58, 208, 246, 94, 254, }, { 11, 25, 19, 211, 134, 229, 88, 83, 208, 219, 119, 182, 80, 97, 71, 78, }, { 19, 245, 214, 49, 26, 216, 152, 139, 97, 114, 132, 83, 219, 162, 205, 190, }, { 152, 164, 127, 75, 208, 15, 74, 210, 142, 22, 170, 221, 23, 89, 167, 185, }, { 2, 168, 96, 246, 29, 203, 16, 18, 107, 105, 133, 217, 143, 129, 65, 20, }, { 147, 189, 108, 152, 86, 234, 18, 129, 94, 205, 221, 107, 71, 56, 224, 247, }, { 128, 72, 186, 169, 76, 50, 138, 10, 63, 191, 89, 56, 156, 154, 45, 73, }, { 144, 65, 60, 21, 164, 165, 10, 154, 225, 113, 251, 63, 110, 24, 96, 233, }, { 208, 101, 97, 160, 130, 188, 79, 159, 31, 207, 54, 35, 32, 85, 151, 44, }, { 36, 129, 15, 148, 41, 184, 227, 199, 169, 141, 78, 127, 250, 6, 24, 171, }, { 52, 136, 137, 40, 193, 47, 99, 87, 119, 67, 236, 120, 8, 132, 85, 11, }, { 203, 117, 244, 207, 236, 206, 151, 92, 17, 218, 227, 146, 130, 182, 157, 194, }, { 237, 92, 155, 173, 216, 189, 100, 137, 211, 62, 40, 52, 247, 49, 196, 125, }, { 244, 228, 110, 52, 171, 4, 172, 88, 182, 66, 120, 92, 218, 83, 143, 135, }, { 206, 178, 4, 155, 57, 31, 191, 113, 19, 221, 137, 110, 249, 214, 222, 224, }, { 153, 240, 79, 48, 63, 139, 66, 219, 90, 195, 9, 80, 177, 248, 102, 179, }, { 16, 9, 134, 188, 232, 151, 128, 144, 222, 206, 162, 7, 242, 130, 77, 160, }, { 68, 183, 157, 154, 28, 76, 101, 33, 40, 108, 4, 109, 147, 140, 117, 237, }, { 64, 36, 93, 181, 38, 25, 69, 5, 254, 190, 205, 28, 78, 77, 247, 197, }, { 146, 233, 92, 227, 185, 110, 26, 136, 138, 24, 126, 230, 225, 153, 33, 253, }, { 58, 86, 106, 175, 146, 27, 19, 41, 165, 159, 241, 50, 35, 133, 81, 103, }, { 1, 84, 48, 123, 239, 132, 8, 9, 212, 213, 163, 141, 166, 161, 193, 10, }, { 38, 41, 111, 98, 52, 115, 243, 213, 194, 228, 203, 166, 117, 135, 89, 191, }, { 18, 161, 230, 74, 245, 92, 144, 130, 181, 167, 39, 222, 125, 3, 12, 180, }, { 26, 68, 165, 20, 129, 246, 208, 202, 218, 192, 118, 60, 4, 66, 203, 228, }, { 72, 193, 30, 235, 82, 179, 5, 77, 145, 217, 156, 254, 55, 12, 48, 149, }, { 104, 211, 209, 80, 65, 94, 198, 174, 238, 134, 27, 240, 16, 203, 170, 22, }, { 245, 176, 94, 79, 68, 128, 164, 81, 98, 151, 219, 209, 124, 242, 78, 141, }, { 129, 28, 138, 210, 163, 182, 130, 3, 235, 106, 250, 181, 58, 59, 236, 67, }, { 139, 81, 169, 122, 202, 215, 210, 89, 239, 100, 46, 142, 204, 251, 106, 7, }, { 199, 3, 119, 190, 162, 49, 247, 48, 168, 111, 123, 1, 38, 54, 216, 186, }, { 214, 94, 193, 121, 165, 34, 127, 169, 162, 116, 122, 139, 114, 21, 84, 16, }, { 32, 18, 207, 187, 19, 237, 195, 227, 127, 95, 135, 14, 39, 199, 154, 131, }, { 10, 77, 35, 168, 105, 97, 80, 90, 4, 14, 212, 59, 246, 192, 134, 68, }, { 8, 229, 67, 94, 116, 170, 64, 72, 111, 103, 81, 226, 121, 65, 199, 80, }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, { 76, 82, 222, 196, 104, 230, 37, 105, 71, 11, 85, 143, 234, 205, 178, 189, }, { 215, 10, 241, 2, 74, 166, 119, 160, 118, 161, 217, 6, 212, 180, 149, 26, }, { 116, 172, 212, 157, 231, 54, 38, 82, 137, 253, 33, 100, 70, 201, 162, 206, }, }, { { 153, 170, 22, 4, 194, 149, 140, 74, 99, 235, 240, 73, 33, 10, 173, 248, }, { 147, 227, 218, 163, 149, 181, 161, 151, 27, 25, 189, 127, 9, 53, 168, 56, }, { 136, 253, 43, 59, 166, 197, 33, 188, 175, 181, 173, 62, 101, 138, 68, 219, }, { 174, 22, 41, 108, 39, 26, 170, 225, 196, 2, 132, 204, 253, 238, 87, 92, }, { 139, 190, 9, 85, 224, 116, 205, 120, 187, 35, 81, 55, 105, 97, 164, 251, }, { 189, 130, 40, 166, 134, 148, 14, 46, 16, 184, 113, 181, 177, 220, 191, 254, }, { 105, 189, 36, 151, 6, 19, 178, 35, 169, 140, 135, 220, 103, 71, 213, 106, }, { 177, 77, 160, 221, 93, 21, 56, 184, 64, 165, 7, 145, 129, 246, 185, 126, }, { 110, 187, 126, 208, 9, 221, 76, 149, 141, 17, 232, 201, 123, 11, 55, 139, }, { 56, 48, 149, 125, 120, 191, 252, 249, 227, 98, 254, 168, 224, 37, 28, 4, }, { 62, 182, 209, 161, 244, 30, 231, 178, 203, 141, 197, 186, 248, 48, 31, 68, }, { 146, 99, 196, 56, 22, 218, 68, 106, 23, 107, 233, 120, 13, 108, 73, 153, }, { 149, 101, 158, 127, 25, 20, 186, 220, 51, 246, 134, 109, 17, 32, 171, 120, }, { 89, 7, 65, 184, 236, 82, 106, 62, 42, 248, 156, 76, 167, 239, 205, 47, }, { 49, 58, 123, 180, 105, 46, 61, 224, 143, 6, 79, 151, 196, 241, 249, 228, }, { 78, 214, 56, 91, 4, 163, 220, 131, 206, 73, 250, 41, 251, 122, 39, 76, }, { 211, 57, 86, 118, 143, 73, 66, 187, 157, 169, 153, 124, 202, 215, 136, 117, }, { 206, 161, 227, 50, 48, 152, 217, 219, 1, 234, 178, 47, 190, 125, 103, 214, }, { 160, 26, 157, 226, 57, 69, 149, 78, 140, 251, 90, 230, 197, 118, 80, 93, }, { 229, 5, 119, 133, 233, 169, 129, 237, 54, 50, 185, 254, 18, 106, 147, 112, }, { 213, 191, 18, 170, 3, 232, 89, 240, 181, 70, 162, 110, 210, 194, 139, 53, }, { 185, 199, 80, 143, 207, 235, 28, 92, 32, 179, 226, 169, 161, 123, 189, 63, }, { 164, 95, 229, 203, 112, 58, 135, 60, 188, 240, 201, 250, 213, 209, 82, 156, }, { 191, 65, 20, 83, 67, 74, 7, 23, 8, 92, 217, 187, 185, 110, 190, 127, }, { 45, 34, 208, 107, 85, 144, 67, 125, 31, 55, 48, 195, 180, 2, 247, 230, }, { 231, 198, 75, 112, 44, 119, 136, 212, 46, 214, 17, 240, 26, 216, 146, 241, }, { 220, 181, 252, 99, 18, 121, 152, 233, 217, 34, 19, 81, 246, 22, 110, 213, }, { 33, 237, 88, 16, 142, 17, 117, 235, 79, 42, 70, 231, 132, 40, 241, 102, }, { 249, 29, 220, 90, 213, 23, 255, 112, 166, 3, 198, 170, 98, 153, 157, 114, }, { 238, 204, 165, 185, 61, 230, 73, 205, 66, 178, 160, 207, 62, 12, 119, 17, }, { 98, 116, 246, 171, 210, 92, 122, 3, 221, 12, 158, 237, 75, 33, 49, 11, }, { 205, 226, 193, 92, 118, 41, 53, 31, 21, 124, 78, 38, 178, 150, 135, 246, }, { 103, 177, 144, 25, 24, 76, 141, 140, 225, 117, 89, 246, 95, 223, 210, 107, }, { 114, 163, 213, 15, 53, 99, 50, 8, 29, 32, 151, 157, 11, 248, 57, 137, }, { 155, 105, 42, 241, 7, 75, 133, 115, 123, 15, 88, 71, 41, 184, 172, 121, }, { 190, 193, 10, 200, 192, 37, 226, 234, 4, 46, 141, 188, 189, 55, 95, 222, }, { 235, 9, 195, 11, 247, 246, 190, 66, 126, 203, 103, 212, 42, 242, 148, 113, }, { 134, 241, 159, 181, 184, 154, 30, 19, 231, 76, 115, 20, 93, 18, 67, 218, }, { 131, 52, 249, 7, 114, 138, 233, 156, 219, 53, 180, 15, 73, 236, 160, 186, }, { 9, 10, 238, 201, 17, 145, 193, 25, 108, 100, 177, 63, 36, 212, 229, 224, }, { 84, 72, 215, 88, 180, 188, 185, 85, 118, 151, 190, 111, 147, 156, 42, 14, }, { 119, 102, 179, 189, 255, 115, 197, 135, 33, 89, 80, 134, 31, 6, 218, 233, }, { 64, 218, 140, 213, 26, 252, 227, 44, 134, 176, 36, 3, 195, 226, 32, 77, }, { 246, 145, 118, 79, 72, 39, 37, 34, 226, 136, 76, 135, 94, 88, 123, 210, }, { 90, 68, 99, 214, 170, 227, 134, 250, 62, 110, 96, 69, 171, 4, 45, 15, }, { 13, 79, 150, 224, 88, 238, 211, 107, 92, 111, 34, 35, 52, 115, 231, 33, }, { 250, 94, 254, 52, 147, 166, 19, 180, 178, 149, 58, 163, 110, 114, 125, 82, }, { 199, 171, 13, 251, 33, 9, 24, 194, 109, 142, 3, 16, 154, 169, 130, 54, }, { 101, 114, 172, 236, 221, 146, 132, 181, 249, 145, 241, 248, 87, 109, 211, 234, }, { 95, 129, 5, 100, 96, 243, 113, 117, 2, 23, 167, 94, 191, 250, 206, 111, }, { 210, 185, 72, 237, 12, 38, 167, 70, 145, 219, 205, 123, 206, 142, 105, 212, }, { 240, 23, 50, 147, 196, 134, 62, 105, 202, 103, 119, 149, 70, 77, 120, 146, }, { 148, 229, 128, 228, 154, 123, 95, 33, 63, 132, 210, 106, 21, 121, 74, 217, }, { 67, 153, 174, 187, 92, 77, 15, 232, 146, 38, 216, 10, 207, 9, 192, 109, }, { 68, 159, 244, 252, 83, 131, 241, 94, 182, 187, 183, 31, 211, 69, 34, 140, }, { 158, 172, 76, 67, 205, 91, 114, 252, 71, 118, 159, 92, 61, 70, 79, 25, }, { 233, 202, 255, 254, 50, 40, 183, 123, 102, 47, 207, 218, 34, 64, 149, 240, }, { 178, 14, 130, 179, 27, 164, 212, 124, 84, 51, 251, 152, 141, 29, 89, 94, }, { 42, 36, 138, 44, 90, 94, 189, 203, 59, 170, 95, 214, 168, 78, 21, 7, }, { 19, 148, 1, 202, 161, 142, 164, 207, 212, 186, 245, 121, 76, 50, 232, 162, }, { 55, 188, 63, 104, 229, 143, 38, 171, 167, 233, 116, 133, 220, 228, 250, 164, }, { 28, 24, 171, 223, 60, 190, 126, 157, 144, 49, 127, 84, 112, 243, 14, 2, }, { 180, 136, 198, 111, 151, 5, 207, 55, 124, 220, 192, 138, 149, 8, 90, 30, }, { 75, 19, 94, 233, 206, 179, 43, 12, 242, 48, 61, 50, 239, 132, 196, 44, }, { 127, 236, 67, 239, 109, 141, 225, 99, 65, 79, 181, 190, 63, 139, 222, 168, }, { 120, 234, 25, 168, 98, 67, 31, 213, 101, 210, 218, 171, 35, 199, 60, 73, }, { 204, 98, 223, 199, 245, 70, 208, 226, 25, 14, 26, 33, 182, 207, 102, 87, }, { 129, 247, 197, 242, 183, 84, 224, 165, 195, 209, 28, 1, 65, 94, 161, 59, }, { 172, 213, 21, 153, 226, 196, 163, 216, 220, 230, 44, 194, 245, 92, 86, 221, }, { 152, 42, 8, 159, 65, 250, 105, 183, 111, 153, 164, 78, 37, 83, 76, 89, }, { 86, 139, 235, 173, 113, 98, 176, 108, 110, 115, 22, 97, 155, 46, 43, 143, }, { 30, 219, 151, 42, 249, 96, 119, 164, 136, 213, 215, 90, 120, 65, 15, 131, }, { 48, 186, 101, 47, 234, 65, 216, 29, 131, 116, 27, 144, 192, 168, 24, 69, }, { 20, 146, 91, 141, 174, 64, 90, 121, 240, 39, 154, 108, 80, 126, 10, 67, }, { 197, 104, 49, 14, 228, 215, 17, 251, 117, 106, 171, 30, 146, 27, 131, 183, }, { 73, 208, 98, 28, 11, 109, 34, 53, 234, 212, 149, 60, 231, 54, 197, 173, }, { 176, 205, 190, 70, 222, 122, 221, 69, 76, 215, 83, 150, 133, 175, 88, 223, }, { 112, 96, 233, 250, 240, 189, 59, 49, 5, 196, 63, 147, 3, 74, 56, 8, }, { 11, 201, 210, 60, 212, 79, 200, 32, 116, 128, 25, 49, 44, 102, 228, 97, }, { 166, 156, 217, 62, 181, 228, 142, 5, 164, 20, 97, 244, 221, 99, 83, 29, }, { 175, 150, 55, 247, 164, 117, 79, 28, 200, 112, 208, 203, 249, 183, 182, 253, }, { 161, 154, 131, 121, 186, 42, 112, 179, 128, 137, 14, 225, 193, 47, 177, 252, }, { 23, 209, 121, 227, 232, 241, 182, 189, 228, 177, 102, 101, 92, 149, 234, 99, }, { 245, 210, 84, 33, 14, 150, 201, 230, 246, 30, 176, 142, 82, 179, 155, 242, }, { 253, 88, 164, 115, 156, 104, 237, 2, 150, 8, 85, 182, 114, 62, 159, 179, }, { 60, 117, 237, 84, 49, 192, 238, 139, 211, 105, 109, 180, 240, 130, 30, 197, }, { 202, 228, 155, 27, 121, 231, 203, 169, 49, 225, 33, 51, 174, 218, 101, 23, }, { 162, 217, 161, 23, 252, 155, 156, 119, 148, 31, 242, 232, 205, 196, 81, 220, }, { 74, 147, 64, 114, 77, 220, 206, 241, 254, 66, 105, 53, 235, 221, 37, 141, }, { 12, 207, 136, 123, 219, 129, 54, 150, 80, 29, 118, 36, 48, 42, 6, 128, }, { 24, 93, 211, 246, 117, 193, 108, 239, 160, 58, 236, 72, 96, 84, 12, 195, }, { 195, 238, 117, 210, 104, 118, 10, 176, 93, 133, 144, 12, 138, 14, 128, 247, }, { 71, 220, 214, 146, 21, 50, 29, 154, 162, 45, 75, 22, 223, 174, 194, 172, }, { 143, 251, 113, 124, 169, 11, 223, 10, 139, 40, 194, 43, 121, 198, 166, 58, }, { 242, 212, 14, 102, 1, 88, 55, 80, 210, 131, 223, 155, 78, 255, 121, 19, }, { 224, 192, 17, 55, 35, 185, 118, 98, 10, 75, 126, 229, 6, 148, 112, 16, }, { 61, 245, 243, 207, 178, 175, 11, 118, 223, 27, 57, 179, 244, 219, 255, 100, }, { 170, 83, 81, 69, 110, 101, 184, 147, 244, 9, 23, 208, 237, 73, 85, 157, }, { 87, 11, 245, 54, 242, 13, 85, 145, 98, 1, 66, 102, 159, 119, 202, 46, }, { 135, 113, 129, 46, 59, 245, 251, 238, 235, 62, 39, 19, 89, 75, 162, 123, }, { 182, 75, 250, 154, 82, 219, 198, 14, 100, 56, 104, 132, 157, 186, 91, 159, }, { 227, 131, 51, 89, 101, 8, 154, 166, 30, 221, 130, 236, 10, 127, 144, 48, }, { 35, 46, 100, 229, 75, 207, 124, 210, 87, 206, 238, 233, 140, 154, 240, 231, }, { 82, 206, 147, 132, 56, 29, 162, 30, 94, 120, 133, 125, 139, 137, 41, 78, }, { 142, 123, 111, 231, 42, 100, 58, 247, 135, 90, 150, 44, 125, 159, 71, 155, }, { 221, 53, 226, 248, 145, 22, 125, 20, 213, 80, 71, 86, 242, 79, 143, 116, }, { 44, 162, 206, 240, 214, 255, 166, 128, 19, 69, 100, 196, 176, 91, 22, 71, }, { 80, 13, 175, 113, 253, 195, 171, 39, 70, 156, 45, 115, 131, 59, 40, 207, }, { 236, 15, 153, 76, 248, 56, 64, 244, 90, 86, 8, 193, 54, 190, 118, 144, }, { 6, 134, 68, 220, 140, 161, 27, 75, 40, 239, 59, 18, 24, 21, 3, 64, }, { 145, 32, 230, 86, 80, 107, 168, 174, 3, 253, 21, 113, 1, 135, 169, 185, }, { 163, 89, 191, 140, 127, 244, 121, 138, 152, 109, 166, 239, 201, 157, 176, 125, }, { 255, 155, 152, 134, 89, 182, 228, 59, 142, 236, 253, 184, 122, 140, 158, 50, }, { 156, 111, 112, 182, 8, 133, 123, 197, 95, 146, 55, 82, 53, 244, 78, 152, }, { 43, 164, 148, 183, 217, 49, 88, 54, 55, 216, 11, 209, 172, 23, 244, 166, }, { 198, 43, 19, 96, 162, 102, 253, 63, 97, 252, 87, 23, 158, 240, 99, 151, }, { 57, 176, 139, 230, 251, 208, 25, 4, 239, 16, 170, 175, 228, 124, 253, 165, }, { 41, 103, 168, 66, 28, 239, 81, 15, 47, 60, 163, 223, 164, 165, 245, 39, }, { 91, 196, 125, 77, 41, 140, 99, 7, 50, 28, 52, 66, 175, 93, 204, 174, }, { 144, 160, 248, 205, 211, 4, 77, 83, 15, 143, 65, 118, 5, 222, 72, 24, }, { 88, 135, 95, 35, 111, 61, 143, 195, 38, 138, 200, 75, 163, 182, 44, 142, }, { 241, 151, 44, 8, 71, 233, 219, 148, 198, 21, 35, 146, 66, 20, 153, 51, }, { 223, 246, 222, 13, 84, 200, 116, 45, 205, 180, 239, 88, 250, 253, 142, 245, }, { 40, 231, 182, 217, 159, 128, 180, 242, 35, 78, 247, 216, 160, 252, 20, 134, }, { 96, 183, 202, 94, 23, 130, 115, 58, 197, 232, 54, 227, 67, 147, 48, 138, }, { 121, 106, 7, 51, 225, 44, 250, 40, 105, 160, 142, 172, 39, 158, 221, 232, }, { 118, 230, 173, 38, 124, 28, 32, 122, 45, 43, 4, 129, 27, 95, 59, 72, }, { 3, 67, 34, 110, 70, 177, 236, 196, 20, 150, 252, 9, 12, 235, 224, 32, }, { 200, 39, 167, 238, 188, 57, 194, 144, 41, 5, 137, 61, 166, 104, 100, 150, }, { 2, 195, 60, 245, 197, 222, 9, 57, 24, 228, 168, 14, 8, 178, 1, 129, }, { 18, 20, 31, 81, 34, 225, 65, 50, 216, 200, 161, 126, 72, 107, 9, 3, }, { 239, 76, 187, 34, 190, 137, 172, 48, 78, 192, 244, 200, 58, 85, 150, 176, }, { 70, 92, 200, 9, 150, 93, 248, 103, 174, 95, 31, 17, 219, 247, 35, 13, }, { 81, 141, 177, 234, 126, 172, 78, 218, 74, 238, 121, 116, 135, 98, 201, 110, }, { 219, 179, 166, 36, 29, 183, 102, 95, 253, 191, 124, 68, 234, 90, 140, 52, }, { 116, 37, 145, 211, 185, 194, 41, 67, 53, 207, 172, 143, 19, 237, 58, 201, }, { 15, 140, 170, 21, 157, 48, 218, 82, 68, 139, 138, 45, 60, 193, 230, 160, }, { 193, 45, 73, 39, 173, 168, 3, 137, 69, 97, 56, 2, 130, 188, 129, 118, }, { 141, 56, 77, 137, 108, 213, 214, 51, 147, 204, 106, 37, 113, 116, 167, 187, }, { 104, 61, 58, 12, 133, 124, 87, 222, 165, 254, 211, 219, 99, 30, 52, 203, }, { 183, 203, 228, 1, 209, 180, 35, 243, 104, 74, 60, 131, 153, 227, 186, 62, }, { 14, 12, 180, 142, 30, 95, 63, 175, 72, 249, 222, 42, 56, 152, 7, 1, }, { 93, 66, 57, 145, 165, 45, 120, 76, 26, 243, 15, 80, 183, 72, 207, 238, }, { 226, 3, 45, 194, 230, 103, 127, 91, 18, 175, 214, 235, 14, 38, 113, 145, }, { 192, 173, 87, 188, 46, 199, 230, 116, 73, 19, 108, 5, 134, 229, 96, 215, }, { 150, 38, 188, 17, 95, 165, 86, 24, 39, 96, 122, 100, 29, 203, 75, 88, }, { 173, 85, 11, 2, 97, 171, 70, 37, 208, 148, 120, 197, 241, 5, 183, 124, }, { 1, 128, 30, 155, 131, 111, 229, 253, 12, 114, 84, 7, 4, 89, 225, 161, }, { 36, 40, 62, 162, 68, 1, 130, 100, 115, 83, 129, 252, 144, 214, 18, 6, }, { 232, 74, 225, 101, 177, 71, 82, 134, 106, 93, 155, 221, 38, 25, 116, 81, }, { 140, 184, 83, 18, 239, 186, 51, 206, 159, 190, 62, 34, 117, 45, 70, 26, }, { 243, 84, 16, 253, 130, 55, 210, 173, 222, 241, 139, 156, 74, 166, 152, 178, }, { 167, 28, 199, 165, 54, 139, 107, 248, 168, 102, 53, 243, 217, 58, 178, 188, }, { 52, 255, 29, 6, 163, 62, 202, 111, 179, 127, 136, 140, 208, 15, 26, 132, }, { 230, 70, 85, 235, 175, 24, 109, 41, 34, 164, 69, 247, 30, 129, 115, 80, }, { 72, 80, 124, 135, 136, 2, 199, 200, 230, 166, 193, 59, 227, 111, 36, 12, }, { 186, 132, 114, 225, 137, 90, 240, 152, 52, 37, 30, 160, 173, 144, 93, 31, }, { 7, 6, 90, 71, 15, 206, 254, 182, 36, 157, 111, 21, 28, 76, 226, 225, }, { 252, 216, 186, 232, 31, 7, 8, 255, 154, 122, 1, 177, 118, 103, 126, 18, }, { 77, 149, 26, 53, 66, 18, 48, 71, 218, 223, 6, 32, 247, 145, 199, 108, }, { 25, 221, 205, 109, 246, 174, 137, 18, 172, 72, 184, 79, 100, 13, 237, 98, }, { 66, 25, 176, 32, 223, 34, 234, 21, 158, 84, 140, 13, 203, 80, 33, 204, }, { 117, 165, 143, 72, 58, 173, 204, 190, 57, 189, 248, 136, 23, 180, 219, 104, }, { 76, 21, 4, 174, 193, 125, 213, 186, 214, 173, 82, 39, 243, 200, 38, 205, }, { 169, 16, 115, 43, 40, 212, 84, 87, 224, 159, 235, 217, 225, 162, 181, 189, }, { 130, 180, 231, 156, 241, 229, 12, 97, 215, 71, 224, 8, 77, 181, 65, 27, }, { 247, 17, 104, 212, 203, 72, 192, 223, 238, 250, 24, 128, 90, 1, 154, 115, }, { 8, 138, 240, 82, 146, 254, 36, 228, 96, 22, 229, 56, 32, 141, 4, 65, }, { 79, 86, 38, 192, 135, 204, 57, 126, 194, 59, 174, 46, 255, 35, 198, 237, }, { 16, 215, 35, 164, 231, 63, 72, 11, 192, 44, 9, 112, 64, 217, 8, 130, }, { 59, 115, 183, 19, 62, 14, 16, 61, 247, 244, 2, 161, 236, 206, 252, 36, }, { 203, 100, 133, 128, 250, 136, 46, 84, 61, 147, 117, 52, 170, 131, 132, 182, }, { 32, 109, 70, 139, 13, 126, 144, 22, 67, 88, 18, 224, 128, 113, 16, 199, }, { 99, 244, 232, 48, 81, 51, 159, 254, 209, 126, 202, 234, 79, 120, 208, 170, }, { 115, 35, 203, 148, 182, 12, 215, 245, 17, 82, 195, 154, 15, 161, 216, 40, }, { 237, 143, 135, 215, 123, 87, 165, 9, 86, 36, 92, 198, 50, 231, 151, 49, }, { 234, 137, 221, 144, 116, 153, 91, 191, 114, 185, 51, 211, 46, 171, 117, 208, }, { 201, 167, 185, 117, 63, 86, 39, 109, 37, 119, 221, 58, 162, 49, 133, 55, }, { 50, 121, 89, 218, 47, 159, 209, 36, 155, 144, 179, 158, 200, 26, 25, 196, }, { 132, 50, 163, 64, 125, 68, 23, 42, 255, 168, 219, 26, 85, 160, 66, 91, }, { 83, 78, 141, 31, 187, 114, 71, 227, 82, 10, 209, 122, 143, 208, 200, 239, }, { 4, 69, 120, 41, 73, 127, 18, 114, 48, 11, 147, 28, 16, 167, 2, 193, }, { 124, 175, 97, 129, 43, 60, 13, 167, 85, 217, 73, 183, 51, 96, 62, 136, }, { 65, 90, 146, 78, 153, 147, 6, 209, 138, 194, 112, 4, 199, 187, 193, 236, }, { 39, 107, 28, 204, 2, 176, 110, 160, 103, 197, 125, 245, 156, 61, 242, 38, }, { 85, 200, 201, 195, 55, 211, 92, 168, 122, 229, 234, 104, 151, 197, 203, 175, }, { 207, 33, 253, 169, 179, 247, 60, 38, 13, 152, 230, 40, 186, 36, 134, 119, }, { 113, 224, 247, 97, 115, 210, 222, 204, 9, 182, 107, 148, 7, 19, 217, 169, }, { 17, 87, 61, 63, 100, 80, 173, 246, 204, 94, 93, 119, 68, 128, 233, 35, }, { 151, 166, 162, 138, 220, 202, 179, 229, 43, 18, 46, 99, 25, 146, 170, 249, }, { 217, 112, 154, 209, 216, 105, 111, 102, 229, 91, 212, 74, 226, 232, 141, 181, }, { 208, 122, 116, 24, 201, 248, 174, 127, 137, 63, 101, 117, 198, 60, 104, 85, }, { 168, 144, 109, 176, 171, 187, 177, 170, 236, 237, 191, 222, 229, 251, 84, 28, }, { 27, 30, 241, 152, 51, 112, 128, 43, 180, 172, 16, 65, 108, 191, 236, 227, }, { 22, 81, 103, 120, 107, 158, 83, 64, 232, 195, 50, 98, 88, 204, 11, 194, }, { 108, 120, 66, 37, 204, 3, 69, 172, 149, 245, 64, 199, 115, 185, 54, 10, }, { 47, 225, 236, 158, 144, 78, 74, 68, 7, 211, 152, 205, 188, 176, 246, 103, }, { 69, 31, 234, 103, 208, 236, 20, 163, 186, 201, 227, 24, 215, 28, 195, 45, }, { 51, 249, 71, 65, 172, 240, 52, 217, 151, 226, 231, 153, 204, 67, 248, 101, }, { 29, 152, 181, 68, 191, 209, 155, 96, 156, 67, 43, 83, 116, 170, 239, 163, }, { 254, 27, 134, 29, 218, 217, 1, 198, 130, 158, 169, 191, 126, 213, 127, 147, }, { 122, 41, 37, 93, 167, 157, 22, 236, 125, 54, 114, 165, 43, 117, 61, 200, }, { 100, 242, 178, 119, 94, 253, 97, 72, 245, 227, 165, 255, 83, 52, 50, 75, }, { 179, 142, 156, 40, 152, 203, 49, 129, 88, 65, 175, 159, 137, 68, 184, 255, }, { 31, 91, 137, 177, 122, 15, 146, 89, 132, 167, 131, 93, 124, 24, 238, 34, }, { 46, 97, 242, 5, 19, 33, 175, 185, 11, 161, 204, 202, 184, 233, 23, 198, }, { 228, 133, 105, 30, 106, 198, 100, 16, 58, 64, 237, 249, 22, 51, 114, 209, }, { 106, 254, 6, 249, 64, 162, 94, 231, 189, 26, 123, 213, 107, 172, 53, 74, }, { 125, 47, 127, 26, 168, 83, 232, 90, 89, 171, 29, 176, 55, 57, 223, 41, }, { 216, 240, 132, 74, 91, 6, 138, 155, 233, 41, 128, 77, 230, 177, 108, 20, }, { 194, 110, 107, 73, 235, 25, 239, 77, 81, 247, 196, 11, 142, 87, 97, 86, }, { 54, 60, 33, 243, 102, 224, 195, 86, 171, 155, 32, 130, 216, 189, 27, 5, }, { 248, 157, 194, 193, 86, 120, 26, 141, 170, 113, 146, 173, 102, 192, 124, 211, }, { 38, 235, 2, 87, 129, 223, 139, 93, 107, 183, 41, 242, 152, 100, 19, 135, }, { 63, 54, 207, 58, 119, 113, 2, 79, 199, 255, 145, 189, 252, 105, 254, 229, }, { 10, 73, 204, 167, 87, 32, 45, 221, 120, 242, 77, 54, 40, 63, 5, 192, }, { 159, 44, 82, 216, 78, 52, 151, 1, 75, 4, 203, 91, 57, 31, 174, 184, }, { 244, 82, 74, 186, 141, 249, 44, 27, 250, 108, 228, 137, 86, 234, 122, 83, }, { 26, 158, 239, 3, 176, 31, 101, 214, 184, 222, 68, 70, 104, 230, 13, 66, }, { 165, 223, 251, 80, 243, 85, 98, 193, 176, 130, 157, 253, 209, 136, 179, 61, }, { 97, 55, 212, 197, 148, 237, 150, 199, 201, 154, 98, 228, 71, 202, 209, 43, }, { 53, 127, 3, 157, 32, 81, 47, 146, 191, 13, 220, 139, 212, 86, 251, 37, }, { 123, 169, 59, 198, 36, 242, 243, 17, 113, 68, 38, 162, 47, 44, 220, 105, }, { 222, 118, 192, 150, 215, 167, 145, 208, 193, 198, 187, 95, 254, 164, 111, 84, }, { 181, 8, 216, 244, 20, 106, 42, 202, 112, 174, 148, 141, 145, 81, 187, 191, }, { 218, 51, 184, 191, 158, 216, 131, 162, 241, 205, 40, 67, 238, 3, 109, 149, }, { 188, 2, 54, 61, 5, 251, 235, 211, 28, 202, 37, 178, 181, 133, 94, 95, }, { 215, 124, 46, 95, 198, 54, 80, 201, 173, 162, 10, 96, 218, 112, 138, 180, }, { 171, 211, 79, 222, 237, 10, 93, 110, 248, 123, 67, 215, 233, 16, 180, 60, }, { 34, 174, 122, 126, 200, 160, 153, 47, 91, 188, 186, 238, 136, 195, 17, 70, }, { 102, 49, 142, 130, 155, 35, 104, 113, 237, 7, 13, 241, 91, 134, 51, 202, }, { 58, 243, 169, 136, 189, 97, 245, 192, 251, 134, 86, 166, 232, 151, 29, 133, }, { 154, 233, 52, 106, 132, 36, 96, 142, 119, 125, 12, 64, 45, 225, 77, 216, }, { 107, 126, 24, 98, 195, 205, 187, 26, 177, 104, 47, 210, 111, 245, 212, 235, }, { 5, 197, 102, 178, 202, 16, 247, 143, 60, 121, 199, 27, 20, 254, 227, 96, }, { 111, 59, 96, 75, 138, 178, 169, 104, 129, 99, 188, 206, 127, 82, 214, 42, }, { 128, 119, 219, 105, 52, 59, 5, 88, 207, 163, 72, 6, 69, 7, 64, 154, }, { 92, 194, 39, 10, 38, 66, 157, 177, 22, 129, 91, 87, 179, 17, 46, 79, }, { 251, 222, 224, 175, 16, 201, 246, 73, 190, 231, 110, 164, 106, 43, 156, 243, }, { 137, 125, 53, 160, 37, 170, 196, 65, 163, 199, 249, 57, 97, 211, 165, 122, }, { 94, 1, 27, 255, 227, 156, 148, 136, 14, 101, 243, 89, 187, 163, 47, 206, }, { 138, 62, 23, 206, 99, 27, 40, 133, 183, 81, 5, 48, 109, 56, 69, 90, }, { 187, 4, 108, 122, 10, 53, 21, 101, 56, 87, 74, 167, 169, 201, 188, 190, }, { 109, 248, 92, 190, 79, 108, 160, 81, 153, 135, 20, 192, 119, 224, 215, 171, }, { 157, 239, 110, 45, 139, 234, 158, 56, 83, 224, 99, 85, 49, 173, 175, 57, }, { 37, 168, 32, 57, 199, 110, 103, 153, 127, 33, 213, 251, 148, 143, 243, 167, }, { 196, 232, 47, 149, 103, 184, 244, 6, 121, 24, 255, 25, 150, 66, 98, 22, }, { 21, 18, 69, 22, 45, 47, 191, 132, 252, 85, 206, 107, 84, 39, 235, 226, }, { 133, 178, 189, 219, 254, 43, 242, 215, 243, 218, 143, 29, 81, 249, 163, 250, }, { 214, 252, 48, 196, 69, 89, 181, 52, 161, 208, 94, 103, 222, 41, 107, 21, }, { 225, 64, 15, 172, 160, 214, 147, 159, 6, 57, 42, 226, 2, 205, 145, 177, }, { 212, 63, 12, 49, 128, 135, 188, 13, 185, 52, 246, 105, 214, 155, 106, 148, }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, { 209, 250, 106, 131, 74, 151, 75, 130, 133, 77, 49, 114, 194, 101, 137, 244, }, { 126, 108, 93, 116, 238, 226, 4, 158, 77, 61, 225, 185, 59, 210, 63, 9, }, { 184, 71, 78, 20, 76, 132, 249, 161, 44, 193, 182, 174, 165, 34, 92, 158, }, }, { { 165, 85, 164, 144, 198, 141, 47, 213, 113, 128, 4, 137, 203, 114, 27, 93, }, { 45, 144, 117, 78, 54, 249, 159, 23, 98, 135, 163, 90, 72, 138, 164, 21, }, { 50, 159, 76, 128, 157, 95, 212, 243, 191, 108, 59, 100, 174, 61, 24, 233, }, { 143, 11, 148, 109, 75, 177, 127, 21, 129, 30, 108, 221, 228, 172, 134, 211, }, { 14, 95, 138, 165, 181, 73, 93, 109, 231, 50, 85, 28, 206, 168, 114, 245, }, { 48, 65, 248, 250, 32, 198, 203, 102, 158, 39, 166, 96, 193, 5, 201, 206, }, { 56, 191, 109, 209, 145, 231, 183, 119, 26, 200, 151, 112, 190, 229, 11, 82, }, { 192, 199, 102, 110, 128, 158, 170, 91, 61, 156, 221, 67, 130, 20, 162, 190, }, { 84, 188, 96, 57, 217, 120, 160, 67, 35, 255, 208, 168, 94, 127, 249, 223, }, { 230, 24, 104, 76, 5, 114, 184, 99, 11, 123, 125, 15, 12, 90, 156, 226, }, { 158, 91, 39, 6, 85, 94, 105, 156, 187, 199, 161, 255, 204, 179, 72, 218, }, { 57, 208, 55, 236, 46, 74, 89, 220, 235, 12, 56, 114, 104, 249, 130, 160, }, { 85, 211, 58, 4, 102, 213, 78, 232, 210, 59, 127, 170, 136, 99, 112, 45, }, { 126, 226, 80, 196, 84, 68, 240, 131, 211, 97, 184, 252, 113, 161, 100, 81, }, { 82, 29, 127, 183, 221, 16, 129, 63, 64, 34, 180, 164, 239, 55, 73, 182, }, { 145, 107, 247, 158, 95, 186, 218, 90, 173, 49, 91, 225, 212, 7, 179, 221, }, { 100, 253, 152, 195, 249, 190, 107, 37, 189, 216, 118, 200, 159, 122, 48, 17, }, { 3, 177, 238, 71, 2, 52, 241, 62, 208, 143, 50, 6, 185, 36, 88, 213, }, { 87, 13, 142, 126, 219, 76, 81, 125, 243, 112, 226, 174, 231, 91, 161, 10, }, { 90, 227, 234, 156, 108, 49, 253, 46, 196, 205, 133, 180, 144, 215, 139, 42, }, { 28, 190, 215, 137, 169, 146, 186, 218, 13, 100, 170, 56, 95, 147, 228, 41, }, { 96, 130, 51, 55, 64, 79, 85, 204, 255, 78, 143, 192, 65, 10, 81, 95, }, { 7, 206, 69, 179, 187, 197, 207, 215, 146, 25, 203, 14, 103, 84, 57, 155, }, { 24, 193, 124, 125, 16, 99, 132, 51, 79, 242, 83, 48, 129, 227, 133, 103, }, { 33, 17, 75, 145, 62, 41, 221, 239, 164, 254, 107, 66, 233, 26, 7, 199, }, { 114, 99, 110, 27, 92, 148, 178, 123, 21, 24, 112, 228, 208, 49, 199, 131, }, { 168, 187, 192, 114, 113, 240, 131, 134, 70, 61, 99, 147, 188, 254, 49, 125, }, { 209, 151, 213, 5, 158, 113, 188, 210, 7, 69, 16, 97, 170, 11, 108, 183, }, { 41, 239, 222, 186, 143, 8, 161, 254, 32, 17, 90, 82, 150, 250, 197, 91, }, { 198, 102, 121, 224, 132, 246, 139, 39, 94, 65, 185, 79, 51, 92, 18, 215, }, { 164, 58, 254, 173, 121, 32, 193, 126, 128, 68, 171, 139, 29, 110, 146, 175, }, { 63, 113, 40, 98, 42, 34, 120, 160, 136, 209, 92, 126, 217, 177, 50, 201, }, { 224, 185, 119, 194, 1, 26, 153, 31, 104, 166, 25, 3, 189, 18, 44, 139, }, { 39, 176, 84, 31, 58, 65, 252, 147, 199, 35, 15, 78, 88, 82, 183, 174, }, { 141, 213, 32, 23, 246, 40, 96, 128, 160, 85, 241, 217, 139, 148, 87, 244, }, { 12, 129, 62, 223, 8, 208, 66, 248, 198, 121, 200, 24, 161, 144, 163, 210, }, { 130, 229, 240, 143, 252, 204, 211, 70, 182, 163, 11, 199, 147, 32, 172, 243, }, { 234, 153, 86, 147, 13, 162, 250, 155, 205, 2, 181, 23, 173, 202, 63, 48, }, { 174, 26, 223, 252, 117, 152, 162, 250, 37, 224, 7, 159, 13, 182, 129, 20, }, { 180, 5, 23, 251, 216, 98, 57, 92, 75, 89, 201, 171, 227, 109, 213, 84, }, { 154, 36, 140, 242, 236, 175, 87, 117, 249, 81, 88, 247, 18, 195, 41, 148, }, { 99, 51, 221, 112, 66, 123, 164, 242, 47, 193, 189, 198, 248, 46, 9, 138, }, { 73, 109, 237, 141, 207, 71, 244, 50, 223, 95, 213, 146, 215, 240, 148, 4, }, { 229, 169, 134, 11, 7, 70, 73, 93, 219, 244, 79, 9, 181, 126, 196, 55, }, { 66, 34, 150, 225, 124, 82, 121, 29, 139, 63, 214, 132, 17, 52, 14, 77, }, { 228, 198, 220, 54, 184, 235, 167, 246, 42, 48, 224, 11, 99, 98, 77, 197, }, { 21, 47, 24, 159, 167, 30, 40, 96, 120, 79, 52, 42, 246, 111, 175, 71, }, { 183, 180, 249, 188, 218, 86, 200, 98, 155, 214, 251, 173, 90, 73, 141, 129, }, { 200, 57, 243, 69, 49, 191, 214, 74, 185, 115, 236, 83, 253, 244, 96, 34, }, { 6, 161, 31, 142, 4, 104, 33, 124, 99, 221, 100, 12, 177, 72, 176, 105, }, { 112, 189, 218, 97, 225, 13, 173, 238, 52, 83, 237, 224, 191, 9, 22, 164, }, { 157, 234, 201, 65, 87, 106, 152, 162, 107, 72, 147, 249, 117, 151, 16, 15, }, { 65, 147, 120, 166, 126, 102, 136, 35, 91, 176, 228, 130, 168, 16, 86, 152, }, { 117, 173, 43, 168, 231, 81, 125, 172, 135, 1, 187, 234, 183, 101, 254, 24, }, { 25, 174, 38, 64, 175, 206, 106, 152, 190, 54, 252, 50, 87, 255, 12, 149, }, { 201, 86, 169, 120, 142, 18, 56, 225, 72, 183, 67, 81, 43, 232, 233, 208, }, { 170, 101, 116, 8, 204, 105, 156, 19, 103, 118, 254, 151, 211, 198, 224, 90, }, { 252, 7, 160, 75, 168, 136, 35, 197, 101, 194, 179, 59, 226, 129, 200, 162, }, { 77, 18, 70, 121, 118, 182, 202, 219, 157, 201, 44, 154, 9, 128, 245, 74, }, { 191, 74, 108, 151, 107, 119, 180, 115, 31, 57, 202, 189, 37, 169, 79, 29, }, { 42, 94, 48, 253, 141, 60, 80, 192, 240, 158, 104, 84, 47, 222, 157, 142, }, { 115, 12, 52, 38, 227, 57, 92, 208, 228, 220, 223, 230, 6, 45, 78, 113, }, { 132, 68, 239, 1, 248, 164, 242, 58, 213, 126, 111, 203, 34, 104, 28, 154, }, { 213, 232, 126, 241, 39, 128, 130, 59, 69, 211, 233, 105, 116, 123, 13, 249, }, { 195, 118, 136, 41, 130, 170, 91, 101, 237, 19, 239, 69, 59, 48, 250, 107, }, { 175, 117, 133, 193, 202, 53, 76, 81, 212, 36, 168, 157, 219, 170, 8, 230, }, { 43, 49, 106, 192, 50, 145, 190, 107, 1, 90, 199, 86, 249, 194, 20, 124, }, { 134, 154, 91, 123, 69, 61, 237, 175, 244, 53, 242, 207, 77, 80, 205, 189, }, { 167, 139, 16, 234, 123, 20, 48, 64, 80, 203, 153, 141, 164, 74, 202, 122, }, { 177, 21, 230, 50, 222, 62, 233, 30, 248, 11, 159, 161, 235, 1, 61, 232, }, { 178, 164, 8, 117, 220, 10, 24, 32, 40, 132, 173, 167, 82, 37, 101, 61, }, { 91, 140, 176, 161, 211, 156, 19, 133, 53, 9, 42, 182, 70, 203, 2, 216, }, { 70, 93, 61, 21, 197, 163, 71, 244, 201, 169, 47, 140, 207, 68, 111, 3, }, { 211, 73, 97, 127, 35, 232, 163, 71, 38, 14, 141, 101, 197, 51, 189, 144, }, { 159, 52, 125, 59, 234, 243, 135, 55, 74, 3, 14, 253, 26, 175, 193, 40, }, { 253, 104, 250, 118, 23, 37, 205, 110, 148, 6, 28, 57, 52, 157, 65, 80, }, { 212, 135, 36, 204, 152, 45, 108, 144, 180, 23, 70, 107, 162, 103, 132, 11, }, { 15, 48, 208, 152, 10, 228, 179, 198, 22, 246, 250, 30, 24, 180, 251, 7, }, { 156, 133, 147, 124, 232, 199, 118, 9, 154, 140, 60, 251, 163, 139, 153, 253, }, { 47, 78, 193, 52, 139, 96, 128, 130, 67, 204, 62, 94, 39, 178, 117, 50, }, { 155, 75, 214, 207, 83, 2, 185, 222, 8, 149, 247, 245, 196, 223, 160, 102, }, { 67, 77, 204, 220, 195, 255, 151, 182, 122, 251, 121, 134, 199, 40, 135, 191, }, { 239, 137, 167, 90, 11, 254, 42, 217, 126, 80, 227, 29, 165, 166, 215, 140, }, { 217, 105, 64, 46, 47, 80, 192, 195, 131, 170, 33, 113, 213, 235, 174, 43, }, { 121, 44, 21, 119, 239, 129, 63, 84, 65, 120, 115, 242, 22, 245, 93, 202, }, { 182, 219, 163, 129, 101, 251, 38, 201, 106, 18, 84, 175, 140, 85, 4, 115, }, { 83, 114, 37, 138, 98, 189, 111, 148, 177, 230, 27, 166, 57, 43, 192, 68, }, { 127, 141, 10, 249, 235, 233, 30, 40, 34, 165, 23, 254, 167, 189, 237, 163, }, { 193, 168, 60, 83, 63, 51, 68, 240, 204, 88, 114, 65, 84, 8, 43, 76, }, { 240, 134, 158, 148, 160, 88, 97, 61, 163, 187, 123, 35, 67, 17, 107, 112, }, { 35, 207, 255, 235, 131, 176, 194, 122, 133, 181, 246, 70, 134, 34, 214, 224, }, { 231, 119, 50, 113, 186, 223, 86, 200, 250, 191, 210, 13, 218, 70, 21, 16, }, { 37, 110, 224, 101, 135, 216, 227, 6, 230, 104, 146, 74, 55, 106, 102, 137, }, { 94, 156, 65, 104, 213, 192, 195, 199, 134, 91, 124, 188, 78, 167, 234, 100, }, { 181, 106, 77, 198, 103, 207, 215, 247, 186, 157, 102, 169, 53, 113, 92, 166, }, { 30, 96, 99, 243, 20, 11, 165, 79, 44, 47, 55, 60, 48, 171, 53, 14, }, { 162, 155, 225, 35, 125, 72, 224, 2, 227, 153, 207, 135, 172, 38, 34, 198, }, { 223, 200, 95, 160, 43, 56, 225, 191, 224, 119, 69, 125, 100, 163, 30, 66, }, { 166, 228, 74, 215, 196, 185, 222, 235, 161, 15, 54, 143, 114, 86, 67, 136, }, { 254, 217, 20, 49, 21, 17, 60, 80, 68, 137, 46, 63, 141, 185, 25, 133, }, { 172, 196, 107, 134, 200, 1, 189, 111, 4, 171, 154, 155, 98, 142, 80, 51, }, { 34, 160, 165, 214, 60, 29, 44, 209, 116, 113, 89, 68, 80, 62, 95, 18, }, { 249, 23, 81, 130, 174, 212, 243, 135, 214, 144, 229, 49, 234, 237, 32, 30, }, { 226, 103, 195, 184, 188, 131, 134, 138, 73, 237, 132, 7, 210, 42, 253, 172, }, { 74, 220, 3, 202, 205, 115, 5, 12, 15, 208, 231, 148, 110, 212, 204, 209, }, { 188, 251, 130, 208, 105, 67, 69, 77, 207, 182, 248, 187, 156, 141, 23, 200, }, { 53, 81, 9, 51, 38, 154, 27, 36, 45, 117, 240, 106, 201, 105, 33, 114, }, { 202, 231, 71, 63, 140, 38, 201, 223, 152, 56, 113, 87, 146, 204, 177, 5, }, { 238, 230, 253, 103, 180, 83, 196, 114, 143, 148, 76, 31, 115, 186, 94, 126, }, { 120, 67, 79, 74, 80, 44, 209, 255, 176, 188, 220, 240, 192, 233, 212, 56, }, { 5, 16, 241, 201, 6, 92, 208, 66, 179, 82, 86, 10, 8, 108, 232, 188, }, { 107, 205, 72, 91, 243, 90, 216, 227, 171, 46, 140, 214, 135, 206, 203, 22, }, { 81, 172, 145, 240, 223, 36, 112, 1, 144, 173, 134, 162, 86, 19, 17, 99, }, { 225, 214, 45, 255, 190, 183, 119, 180, 153, 98, 182, 1, 107, 14, 165, 121, }, { 89, 82, 4, 219, 110, 5, 12, 16, 20, 66, 183, 178, 41, 243, 211, 255, }, { 163, 244, 187, 30, 194, 229, 14, 169, 18, 93, 96, 133, 122, 58, 171, 52, }, { 242, 88, 42, 238, 29, 193, 126, 168, 130, 240, 230, 39, 44, 41, 186, 87, }, { 113, 210, 128, 92, 94, 160, 67, 69, 197, 151, 66, 226, 105, 21, 159, 86, }, { 86, 98, 212, 67, 100, 225, 191, 214, 2, 180, 77, 172, 49, 71, 40, 248, }, { 17, 80, 179, 107, 30, 239, 22, 137, 58, 217, 205, 34, 40, 31, 206, 9, }, { 106, 162, 18, 102, 76, 247, 54, 72, 90, 234, 35, 212, 81, 210, 66, 228, }, { 137, 170, 139, 227, 79, 217, 94, 105, 226, 195, 8, 209, 85, 228, 54, 186, }, { 148, 123, 6, 87, 89, 230, 10, 24, 30, 99, 13, 235, 220, 107, 91, 97, }, { 101, 146, 194, 254, 70, 19, 133, 142, 76, 28, 217, 202, 73, 102, 185, 227, }, { 140, 186, 122, 42, 73, 133, 142, 43, 81, 145, 94, 219, 93, 136, 222, 6, }, { 187, 53, 199, 99, 210, 134, 138, 154, 93, 175, 51, 181, 251, 217, 46, 83, }, { 119, 115, 159, 210, 90, 200, 98, 57, 166, 74, 38, 238, 216, 93, 47, 63, }, { 60, 192, 198, 37, 40, 22, 137, 158, 88, 94, 110, 120, 96, 149, 106, 28, }, { 123, 242, 161, 13, 82, 24, 32, 193, 96, 51, 238, 246, 121, 205, 140, 237, }, { 40, 128, 132, 135, 48, 165, 79, 85, 209, 213, 245, 80, 64, 230, 76, 169, }, { 171, 10, 46, 53, 115, 196, 114, 184, 150, 178, 81, 149, 5, 218, 105, 168, }, { 210, 38, 59, 66, 156, 69, 77, 236, 215, 202, 34, 103, 19, 47, 52, 98, }, { 49, 46, 162, 199, 159, 107, 37, 205, 111, 227, 9, 98, 23, 25, 64, 60, }, { 222, 167, 5, 157, 148, 149, 15, 20, 17, 179, 234, 127, 178, 191, 151, 176, }, { 196, 184, 205, 154, 57, 111, 148, 178, 127, 10, 36, 75, 92, 100, 195, 240, }, { 95, 243, 27, 85, 106, 109, 45, 108, 119, 159, 211, 190, 152, 187, 99, 150, }, { 204, 70, 88, 177, 136, 78, 232, 163, 251, 229, 21, 91, 35, 132, 1, 108, }, { 207, 247, 182, 246, 138, 122, 25, 157, 43, 106, 39, 93, 154, 160, 89, 185, }, { 118, 28, 197, 239, 229, 101, 140, 146, 87, 142, 137, 236, 14, 65, 166, 205, }, { 44, 255, 47, 115, 137, 84, 113, 188, 147, 67, 12, 88, 158, 150, 45, 231, }, { 184, 132, 41, 36, 208, 178, 123, 164, 141, 32, 1, 179, 66, 253, 118, 134, }, { 216, 6, 26, 19, 144, 253, 46, 104, 114, 110, 142, 115, 3, 247, 39, 217, }, { 46, 33, 155, 9, 52, 205, 110, 41, 178, 8, 145, 92, 241, 174, 252, 192, }, { 54, 224, 231, 116, 36, 174, 234, 26, 253, 250, 194, 108, 112, 77, 121, 167, }, { 219, 183, 244, 84, 146, 201, 223, 86, 162, 225, 188, 117, 186, 211, 127, 12, }, { 105, 19, 252, 33, 78, 195, 199, 118, 138, 101, 17, 210, 232, 246, 26, 49, }, { 179, 203, 82, 72, 99, 167, 246, 139, 217, 64, 2, 165, 132, 57, 236, 207, }, { 20, 64, 66, 162, 24, 179, 198, 203, 137, 139, 155, 40, 32, 115, 38, 181, }, { 149, 20, 92, 106, 230, 75, 228, 179, 239, 167, 162, 233, 10, 119, 210, 147, }, { 190, 37, 54, 170, 212, 218, 90, 216, 238, 253, 101, 191, 243, 181, 198, 239, }, { 98, 92, 135, 77, 253, 214, 74, 89, 222, 5, 18, 196, 46, 50, 128, 120, }, { 161, 42, 15, 100, 127, 124, 17, 60, 51, 22, 253, 129, 21, 2, 122, 19, }, { 59, 14, 131, 150, 147, 211, 70, 73, 202, 71, 165, 118, 7, 193, 83, 135, }, { 22, 158, 246, 216, 165, 42, 217, 94, 168, 192, 6, 44, 79, 75, 247, 146, }, { 102, 35, 44, 185, 68, 39, 116, 176, 156, 147, 235, 204, 240, 66, 225, 54, }, { 233, 40, 184, 212, 15, 150, 11, 165, 29, 141, 135, 17, 20, 238, 103, 229, }, { 92, 66, 245, 18, 104, 89, 220, 82, 167, 16, 225, 184, 33, 159, 59, 67, }, { 108, 3, 13, 232, 72, 159, 23, 52, 57, 55, 71, 216, 224, 154, 242, 141, }, { 109, 108, 87, 213, 247, 50, 249, 159, 200, 243, 232, 218, 54, 134, 123, 127, }, { 173, 171, 49, 187, 119, 172, 83, 196, 245, 111, 53, 153, 180, 146, 217, 193, }, { 55, 143, 189, 73, 155, 3, 4, 177, 12, 62, 109, 110, 166, 81, 240, 85, }, { 97, 237, 105, 10, 255, 226, 187, 103, 14, 138, 32, 194, 151, 22, 216, 173, }, { 75, 179, 89, 247, 114, 222, 235, 167, 254, 20, 72, 150, 184, 200, 69, 35, }, { 185, 235, 115, 25, 111, 31, 149, 15, 124, 228, 174, 177, 148, 225, 255, 116, }, { 227, 8, 153, 133, 3, 46, 104, 33, 184, 41, 43, 5, 4, 54, 116, 94, }, { 186, 90, 157, 94, 109, 43, 100, 49, 172, 107, 156, 183, 45, 197, 167, 161, }, { 241, 233, 196, 169, 31, 245, 143, 150, 82, 127, 212, 33, 149, 13, 226, 130, }, { 160, 69, 85, 89, 192, 209, 255, 151, 194, 210, 82, 131, 195, 30, 243, 225, }, { 133, 43, 181, 60, 71, 9, 28, 145, 36, 186, 192, 201, 244, 116, 149, 104, }, { 131, 138, 170, 178, 67, 97, 61, 237, 71, 103, 164, 197, 69, 60, 37, 1, }, { 218, 216, 174, 105, 45, 100, 49, 253, 83, 37, 19, 119, 108, 207, 246, 254, }, { 71, 50, 103, 40, 122, 14, 169, 95, 56, 109, 128, 142, 25, 88, 230, 241, }, { 197, 215, 151, 167, 134, 194, 122, 25, 142, 206, 139, 73, 138, 120, 74, 2, }, { 176, 122, 188, 15, 97, 147, 7, 181, 9, 207, 48, 163, 61, 29, 180, 26, }, { 51, 240, 22, 189, 34, 242, 58, 88, 78, 168, 148, 102, 120, 33, 145, 27, }, { 250, 166, 191, 197, 172, 224, 2, 185, 6, 31, 215, 55, 83, 201, 120, 203, }, { 150, 165, 178, 45, 228, 127, 21, 141, 63, 40, 144, 239, 179, 83, 138, 70, }, { 111, 178, 227, 175, 74, 171, 230, 10, 233, 184, 117, 222, 89, 190, 170, 88, }, { 110, 221, 185, 146, 245, 6, 8, 161, 24, 124, 218, 220, 143, 162, 35, 170, }, { 194, 25, 210, 20, 61, 7, 181, 206, 28, 215, 64, 71, 237, 44, 115, 153, }, { 246, 39, 129, 26, 164, 48, 64, 65, 192, 102, 31, 47, 242, 89, 219, 25, }, { 80, 195, 203, 205, 96, 137, 158, 170, 97, 105, 41, 160, 128, 15, 152, 145, }, { 255, 182, 78, 12, 170, 188, 210, 251, 181, 77, 129, 61, 91, 165, 144, 119, }, { 93, 45, 175, 47, 215, 244, 50, 249, 86, 212, 78, 186, 247, 131, 178, 177, }, { 169, 212, 154, 79, 206, 93, 109, 45, 183, 249, 204, 145, 106, 226, 184, 143, }, { 142, 100, 206, 80, 244, 28, 145, 190, 112, 218, 195, 223, 50, 176, 15, 33, }, { 23, 241, 172, 229, 26, 135, 55, 245, 89, 4, 169, 46, 153, 87, 126, 96, }, { 27, 112, 146, 58, 18, 87, 117, 13, 159, 125, 97, 54, 56, 199, 221, 178, }, { 151, 202, 232, 16, 91, 210, 251, 38, 206, 236, 63, 237, 101, 79, 3, 180, }, { 125, 83, 190, 131, 86, 112, 1, 189, 3, 238, 138, 250, 200, 133, 60, 132, }, { 236, 56, 73, 29, 9, 202, 219, 231, 174, 223, 209, 27, 28, 130, 143, 89, }, { 88, 61, 94, 230, 209, 168, 226, 187, 229, 134, 24, 176, 255, 239, 90, 13, }, { 247, 72, 219, 39, 27, 157, 174, 234, 49, 162, 176, 45, 36, 69, 82, 235, }, { 31, 15, 57, 206, 171, 166, 75, 228, 221, 235, 152, 62, 230, 183, 188, 252, }, { 251, 201, 229, 248, 19, 77, 236, 18, 247, 219, 120, 53, 133, 213, 241, 57, }, { 124, 60, 228, 190, 233, 221, 239, 22, 242, 42, 37, 248, 30, 153, 181, 118, }, { 9, 145, 207, 22, 14, 140, 146, 186, 117, 43, 158, 18, 169, 252, 75, 110, }, { 13, 238, 100, 226, 183, 125, 172, 83, 55, 189, 103, 26, 119, 140, 42, 32, }, { 122, 157, 251, 48, 237, 181, 206, 106, 145, 247, 65, 244, 175, 209, 5, 31, }, { 103, 76, 118, 132, 251, 138, 154, 27, 109, 87, 68, 206, 38, 94, 104, 196, }, { 69, 236, 211, 82, 199, 151, 182, 202, 25, 38, 29, 138, 118, 96, 55, 214, }, { 135, 245, 1, 70, 250, 144, 3, 4, 5, 241, 93, 205, 155, 76, 68, 79, }, { 220, 121, 177, 231, 41, 12, 16, 129, 48, 248, 119, 123, 221, 135, 70, 151, }, { 232, 71, 226, 233, 176, 59, 229, 14, 236, 73, 40, 19, 194, 242, 238, 23, }, { 79, 204, 242, 3, 203, 47, 213, 78, 188, 130, 177, 158, 102, 184, 36, 109, }, { 29, 209, 141, 180, 22, 63, 84, 113, 252, 160, 5, 58, 137, 143, 109, 219, }, { 78, 163, 168, 62, 116, 130, 59, 229, 77, 70, 30, 156, 176, 164, 173, 159, }, { 4, 127, 171, 244, 185, 241, 62, 233, 66, 150, 249, 8, 222, 112, 97, 78, }, { 235, 246, 12, 174, 178, 15, 20, 48, 60, 198, 26, 21, 123, 214, 182, 194, }, { 248, 120, 11, 191, 17, 121, 29, 44, 39, 84, 74, 51, 60, 241, 169, 236, }, { 243, 55, 112, 211, 162, 108, 144, 3, 115, 52, 73, 37, 250, 53, 51, 165, }, { 62, 30, 114, 95, 149, 143, 150, 11, 121, 21, 243, 124, 15, 173, 187, 59, }, { 61, 175, 156, 24, 151, 187, 103, 53, 169, 154, 193, 122, 182, 137, 227, 238, }, { 189, 148, 216, 237, 214, 238, 171, 230, 62, 114, 87, 185, 74, 145, 158, 58, }, { 138, 27, 101, 164, 77, 237, 175, 87, 50, 76, 58, 215, 236, 192, 110, 111, }, { 136, 197, 209, 222, 240, 116, 176, 194, 19, 7, 167, 211, 131, 248, 191, 72, }, { 221, 22, 235, 218, 150, 161, 254, 42, 193, 60, 216, 121, 11, 155, 207, 101, }, { 205, 41, 2, 140, 55, 227, 6, 8, 10, 33, 186, 89, 245, 152, 136, 158, }, { 11, 79, 123, 108, 179, 21, 141, 47, 84, 96, 3, 22, 198, 196, 154, 73, }, { 19, 142, 7, 17, 163, 118, 9, 28, 27, 146, 80, 38, 71, 39, 31, 46, }, { 152, 250, 56, 136, 81, 54, 72, 224, 216, 26, 197, 243, 125, 251, 248, 179, }, { 2, 222, 180, 122, 189, 153, 31, 149, 33, 75, 157, 4, 111, 56, 209, 39, }, { 147, 181, 67, 228, 226, 35, 197, 207, 140, 122, 198, 229, 187, 63, 98, 250, }, { 128, 59, 68, 245, 65, 85, 204, 211, 151, 232, 150, 195, 252, 24, 125, 212, }, { 144, 4, 173, 163, 224, 23, 52, 241, 92, 245, 244, 227, 2, 27, 58, 47, }, { 208, 248, 143, 56, 33, 220, 82, 121, 246, 129, 191, 99, 124, 23, 229, 69, }, { 36, 1, 186, 88, 56, 117, 13, 173, 23, 172, 61, 72, 225, 118, 239, 123, }, { 52, 62, 83, 14, 153, 55, 245, 143, 220, 177, 95, 104, 31, 117, 168, 128, }, { 203, 136, 29, 2, 51, 139, 39, 116, 105, 252, 222, 85, 68, 208, 56, 247, }, { 237, 87, 19, 32, 182, 103, 53, 76, 95, 27, 126, 25, 202, 158, 6, 171, }, { 244, 249, 53, 96, 25, 169, 95, 212, 225, 45, 130, 43, 157, 97, 10, 62, }, { 206, 152, 236, 203, 53, 215, 247, 54, 218, 174, 136, 95, 76, 188, 208, 75, }, { 153, 149, 98, 181, 238, 155, 166, 75, 41, 222, 106, 241, 171, 231, 113, 65, }, { 16, 63, 233, 86, 161, 66, 248, 34, 203, 29, 98, 32, 254, 3, 71, 251, }, { 68, 131, 137, 111, 120, 58, 88, 97, 232, 226, 178, 136, 160, 124, 190, 36, }, { 64, 252, 34, 155, 193, 203, 102, 136, 170, 116, 75, 128, 126, 12, 223, 106, }, { 146, 218, 25, 217, 93, 142, 43, 100, 125, 190, 105, 231, 109, 35, 235, 8, }, { 58, 97, 217, 171, 44, 126, 168, 226, 59, 131, 10, 116, 209, 221, 218, 117, }, { 1, 111, 90, 61, 191, 173, 238, 171, 241, 196, 175, 2, 214, 28, 137, 242, }, { 38, 223, 14, 34, 133, 236, 18, 56, 54, 231, 160, 76, 142, 78, 62, 92, }, { 18, 225, 93, 44, 28, 219, 231, 183, 234, 86, 255, 36, 145, 59, 150, 220, }, { 26, 31, 200, 7, 173, 250, 155, 166, 110, 185, 206, 52, 238, 219, 84, 64, }, { 72, 2, 183, 176, 112, 234, 26, 153, 46, 155, 122, 144, 1, 236, 29, 246, }, { 104, 124, 166, 28, 241, 110, 41, 221, 123, 161, 190, 208, 62, 234, 147, 195, }, { 245, 150, 111, 93, 166, 4, 177, 127, 16, 233, 45, 41, 75, 125, 131, 204, }, { 129, 84, 30, 200, 254, 248, 34, 120, 102, 44, 57, 193, 42, 4, 244, 38, }, { 139, 116, 63, 153, 242, 64, 65, 252, 195, 136, 149, 213, 58, 220, 231, 157, }, { 199, 9, 35, 221, 59, 91, 101, 140, 175, 133, 22, 77, 229, 64, 155, 37, }, { 214, 89, 144, 182, 37, 180, 115, 5, 149, 92, 219, 111, 205, 95, 85, 44, }, { 32, 126, 17, 172, 129, 132, 51, 68, 85, 58, 196, 64, 63, 6, 142, 53, }, { 10, 32, 33, 81, 12, 184, 99, 132, 165, 164, 172, 20, 16, 216, 19, 187, }, { 8, 254, 149, 43, 177, 33, 124, 17, 132, 239, 49, 16, 127, 224, 194, 156, }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, { 76, 125, 28, 68, 201, 27, 36, 112, 108, 13, 131, 152, 223, 156, 124, 184, }, { 215, 54, 202, 139, 154, 25, 157, 174, 100, 152, 116, 109, 27, 67, 220, 222, }, { 116, 194, 113, 149, 88, 252, 147, 7, 118, 197, 20, 232, 97, 121, 119, 234, }, }, { { 81, 246, 95, 204, 201, 187, 75, 202, 126, 82, 234, 91, 103, 162, 239, 230, }, { 51, 174, 165, 3, 248, 114, 207, 16, 172, 219, 65, 6, 184, 102, 186, 103, }, { 164, 106, 21, 23, 82, 111, 194, 208, 112, 38, 203, 46, 148, 139, 142, 134, }, { 103, 222, 229, 165, 210, 126, 250, 255, 24, 74, 25, 137, 168, 206, 110, 173, }, { 10, 207, 62, 212, 5, 173, 252, 74, 87, 69, 167, 107, 238, 20, 118, 88, }, { 231, 132, 157, 252, 146, 151, 230, 9, 44, 124, 112, 59, 182, 13, 30, 89, }, { 40, 186, 248, 214, 20, 241, 118, 235, 159, 215, 217, 111, 62, 80, 27, 163, }, { 26, 85, 49, 118, 13, 25, 30, 36, 176, 51, 3, 236, 157, 52, 120, 167, }, { 108, 80, 183, 210, 54, 73, 161, 106, 204, 48, 37, 103, 93, 216, 193, 150, }, { 101, 92, 61, 32, 211, 137, 119, 130, 221, 52, 236, 64, 158, 202, 31, 107, }, { 250, 213, 107, 101, 125, 206, 11, 117, 147, 242, 52, 202, 106, 55, 44, 20, }, { 232, 205, 188, 66, 116, 141, 100, 102, 177, 250, 101, 132, 47, 19, 83, 45, }, { 172, 39, 243, 70, 86, 53, 179, 231, 226, 29, 153, 140, 76, 155, 137, 24, }, { 90, 120, 13, 187, 45, 140, 16, 95, 170, 40, 214, 181, 146, 180, 64, 221, }, { 169, 161, 236, 44, 181, 130, 205, 194, 40, 222, 43, 88, 59, 145, 178, 52, }, { 48, 109, 17, 37, 24, 31, 229, 178, 234, 154, 47, 74, 149, 96, 18, 194, }, { 139, 212, 42, 46, 164, 222, 71, 99, 224, 76, 85, 92, 235, 213, 223, 207, }, { 131, 153, 204, 127, 160, 132, 54, 84, 114, 119, 7, 254, 51, 197, 216, 81, }, { 239, 201, 123, 173, 150, 205, 151, 62, 190, 71, 34, 153, 110, 29, 25, 199, }, { 102, 159, 137, 6, 51, 228, 93, 32, 155, 117, 130, 12, 179, 204, 183, 206, }, { 20, 93, 124, 107, 10, 153, 59, 148, 174, 138, 141, 214, 31, 40, 236, 176, }, { 13, 203, 249, 59, 231, 237, 15, 18, 88, 248, 224, 118, 175, 26, 60, 178, }, { 5, 134, 31, 106, 227, 183, 126, 37, 202, 195, 178, 212, 119, 10, 59, 44, }, { 146, 66, 175, 126, 73, 170, 115, 229, 22, 62, 56, 252, 91, 231, 15, 205, }, { 122, 143, 19, 60, 61, 39, 23, 131, 167, 196, 93, 120, 116, 244, 92, 224, }, { 19, 89, 187, 132, 232, 217, 200, 204, 161, 55, 202, 203, 94, 38, 166, 90, }, { 216, 160, 173, 103, 108, 146, 129, 212, 91, 96, 74, 206, 186, 115, 65, 239, }, { 135, 94, 191, 182, 162, 169, 239, 174, 59, 139, 46, 175, 95, 205, 58, 30, }, { 181, 177, 118, 22, 187, 65, 135, 97, 20, 111, 244, 44, 252, 169, 89, 26, }, { 223, 164, 106, 136, 142, 210, 114, 140, 84, 221, 13, 211, 251, 125, 11, 5, }, { 145, 129, 27, 88, 169, 199, 89, 71, 80, 127, 86, 176, 118, 225, 167, 104, }, { 45, 60, 231, 188, 247, 70, 8, 206, 85, 20, 107, 187, 73, 90, 32, 143, }, { 160, 173, 102, 222, 80, 66, 27, 42, 57, 218, 226, 127, 248, 131, 108, 201, }, { 191, 126, 72, 194, 190, 236, 123, 43, 67, 42, 83, 71, 18, 189, 47, 66, }, { 36, 48, 109, 78, 18, 134, 222, 38, 68, 16, 162, 156, 138, 72, 254, 114, }, { 73, 33, 182, 63, 197, 85, 216, 147, 11, 31, 28, 126, 204, 146, 230, 135, }, { 238, 136, 23, 14, 119, 87, 48, 225, 61, 120, 185, 28, 117, 31, 192, 164, }, { 44, 125, 139, 31, 22, 220, 175, 17, 214, 43, 240, 62, 82, 88, 249, 236, }, { 29, 81, 246, 153, 239, 89, 237, 124, 191, 142, 68, 241, 220, 58, 50, 77, }, { 204, 253, 209, 12, 102, 11, 186, 64, 245, 234, 199, 24, 165, 91, 173, 95, }, { 124, 202, 184, 112, 62, 253, 67, 4, 43, 70, 129, 224, 46, 248, 207, 105, }, { 142, 82, 53, 68, 71, 105, 57, 70, 42, 143, 231, 136, 156, 223, 228, 227, }, { 184, 122, 143, 45, 92, 172, 136, 115, 76, 151, 20, 90, 83, 179, 101, 168, }, { 230, 197, 241, 95, 115, 13, 65, 214, 175, 67, 235, 190, 173, 15, 199, 58, }, { 244, 221, 38, 120, 122, 78, 46, 197, 141, 75, 186, 240, 232, 43, 184, 3, }, { 38, 178, 181, 203, 19, 113, 83, 91, 129, 110, 87, 85, 188, 76, 143, 180, }, { 27, 20, 93, 213, 236, 131, 185, 251, 51, 12, 152, 105, 134, 54, 161, 196, }, { 79, 100, 29, 115, 198, 143, 140, 20, 135, 157, 192, 230, 150, 158, 117, 14, }, { 213, 107, 84, 92, 139, 127, 142, 198, 3, 152, 170, 184, 21, 105, 125, 93, }, { 197, 241, 91, 254, 131, 203, 108, 168, 228, 238, 14, 63, 102, 73, 115, 162, }, { 80, 183, 51, 111, 40, 33, 236, 21, 253, 109, 113, 222, 124, 160, 54, 133, }, { 121, 76, 167, 26, 221, 74, 61, 33, 225, 133, 51, 52, 89, 242, 244, 69, }, { 119, 68, 234, 7, 218, 202, 24, 145, 255, 60, 189, 14, 219, 238, 96, 82, }, { 22, 223, 164, 238, 11, 110, 182, 233, 107, 244, 120, 31, 41, 44, 157, 118, }, { 82, 53, 235, 234, 41, 214, 97, 104, 56, 19, 132, 23, 74, 164, 71, 67, }, { 21, 28, 16, 200, 235, 3, 156, 75, 45, 181, 22, 83, 4, 42, 53, 211, }, { 155, 78, 37, 140, 172, 106, 165, 13, 7, 58, 241, 219, 152, 245, 209, 48, }, { 180, 240, 26, 181, 90, 219, 32, 190, 151, 80, 111, 169, 231, 171, 128, 121, }, { 62, 101, 92, 56, 31, 159, 192, 2, 244, 35, 161, 112, 23, 124, 134, 213, }, { 128, 90, 120, 89, 64, 233, 28, 246, 52, 54, 105, 178, 30, 195, 112, 244, }, { 54, 40, 186, 105, 27, 197, 177, 53, 102, 24, 243, 210, 207, 108, 129, 75, }, { 211, 46, 255, 16, 136, 165, 218, 65, 143, 26, 118, 32, 79, 101, 238, 212, }, { 43, 121, 76, 240, 244, 156, 92, 73, 217, 150, 183, 35, 19, 86, 179, 6, }, { 1, 65, 108, 163, 225, 154, 167, 223, 131, 63, 155, 133, 27, 2, 217, 99, }, { 153, 204, 253, 9, 173, 157, 40, 112, 194, 68, 4, 18, 174, 241, 160, 246, }, { 221, 38, 178, 13, 143, 37, 255, 241, 145, 163, 248, 26, 205, 121, 122, 195, }, { 246, 95, 254, 253, 123, 185, 163, 184, 72, 53, 79, 57, 222, 47, 201, 197, }, { 104, 151, 196, 27, 52, 100, 120, 144, 133, 204, 12, 54, 49, 208, 35, 217, }, { 18, 24, 215, 39, 9, 67, 111, 19, 34, 8, 81, 78, 69, 36, 127, 57, }, { 138, 149, 70, 141, 69, 68, 224, 188, 99, 115, 206, 217, 240, 215, 6, 172, }, { 9, 12, 138, 242, 229, 192, 214, 232, 17, 4, 201, 39, 195, 18, 222, 253, }, { 166, 232, 205, 146, 83, 152, 79, 173, 181, 88, 62, 231, 162, 143, 255, 64, }, { 114, 194, 245, 109, 57, 125, 102, 180, 53, 255, 15, 218, 172, 228, 91, 126, }, { 196, 176, 55, 93, 98, 81, 203, 119, 103, 209, 149, 186, 125, 75, 170, 193, }, { 58, 162, 47, 241, 29, 178, 25, 248, 189, 223, 136, 33, 123, 116, 100, 154, }, { 116, 135, 94, 33, 58, 167, 50, 51, 185, 125, 211, 66, 246, 232, 200, 247, }, { 193, 54, 40, 55, 129, 230, 181, 82, 173, 18, 39, 110, 10, 65, 145, 237, }, { 202, 184, 122, 64, 101, 209, 238, 199, 121, 104, 27, 128, 255, 87, 62, 214, }, { 185, 59, 227, 142, 189, 54, 47, 172, 207, 168, 143, 223, 72, 177, 188, 203, }, { 112, 64, 45, 232, 56, 138, 235, 201, 240, 129, 250, 19, 154, 224, 42, 184, }, { 188, 189, 252, 228, 94, 129, 81, 137, 5, 107, 61, 11, 63, 187, 135, 231, }, { 52, 170, 98, 236, 26, 50, 60, 72, 163, 102, 6, 27, 249, 104, 240, 141, }, { 106, 21, 28, 158, 53, 147, 245, 237, 64, 178, 249, 255, 7, 212, 82, 31, }, { 72, 96, 218, 156, 36, 207, 127, 76, 136, 32, 135, 251, 215, 144, 63, 228, }, { 95, 254, 18, 209, 206, 59, 110, 122, 96, 235, 100, 97, 229, 190, 123, 241, }, { 143, 19, 89, 231, 166, 243, 158, 153, 169, 176, 124, 13, 135, 221, 61, 128, }, { 105, 214, 168, 184, 213, 254, 223, 79, 6, 243, 151, 179, 42, 210, 250, 186, }, { 154, 15, 73, 47, 77, 240, 2, 210, 132, 5, 106, 94, 131, 247, 8, 83, }, { 218, 34, 117, 226, 109, 101, 12, 169, 158, 30, 191, 7, 140, 119, 48, 41, }, { 253, 209, 172, 138, 159, 142, 248, 45, 156, 79, 115, 215, 43, 57, 102, 254, }, { 57, 97, 155, 215, 253, 223, 51, 90, 251, 158, 230, 109, 86, 114, 204, 63, }, { 165, 43, 121, 180, 179, 245, 101, 15, 243, 25, 80, 171, 143, 137, 87, 229, }, { 252, 144, 192, 41, 126, 20, 95, 242, 31, 112, 232, 82, 48, 59, 191, 157, }, { 224, 128, 90, 19, 112, 215, 21, 81, 35, 193, 55, 38, 247, 3, 84, 179, }, { 12, 138, 149, 152, 6, 119, 168, 205, 219, 199, 123, 243, 180, 24, 229, 209, }, { 87, 179, 244, 128, 202, 97, 31, 77, 242, 208, 54, 195, 61, 174, 124, 111, }, { 84, 112, 64, 166, 42, 12, 53, 239, 180, 145, 88, 143, 16, 168, 212, 202, }, { 141, 145, 129, 98, 167, 4, 19, 228, 108, 206, 137, 196, 177, 217, 76, 70, }, { 210, 111, 147, 179, 105, 63, 125, 158, 12, 37, 237, 165, 84, 103, 55, 183, }, { 247, 30, 146, 94, 154, 35, 4, 103, 203, 10, 212, 188, 197, 45, 16, 166, }, { 94, 191, 126, 114, 47, 161, 201, 165, 227, 212, 255, 228, 254, 188, 162, 146, }, { 249, 22, 223, 67, 157, 163, 33, 215, 213, 179, 90, 134, 71, 49, 132, 177, }, { 242, 152, 141, 52, 121, 148, 122, 66, 1, 201, 102, 104, 178, 39, 43, 138, }, { 227, 67, 238, 53, 144, 186, 63, 243, 101, 128, 89, 106, 218, 5, 252, 22, }, { 59, 227, 67, 82, 252, 40, 190, 39, 62, 224, 19, 164, 96, 118, 189, 249, }, { 3, 195, 180, 38, 224, 109, 42, 162, 70, 65, 110, 76, 45, 6, 168, 165, }, { 161, 236, 10, 125, 177, 216, 188, 245, 186, 229, 121, 250, 227, 129, 181, 170, }, { 150, 133, 220, 183, 75, 135, 170, 31, 95, 194, 17, 173, 55, 239, 237, 130, }, { 170, 98, 88, 10, 85, 239, 231, 96, 110, 159, 69, 20, 22, 151, 26, 145, }, { 159, 137, 86, 69, 174, 71, 124, 247, 78, 198, 216, 138, 244, 253, 51, 127, }, { 70, 104, 151, 129, 35, 79, 90, 252, 150, 153, 9, 193, 85, 140, 171, 243, }, { 65, 108, 80, 110, 193, 15, 169, 164, 153, 36, 78, 220, 20, 130, 225, 25, }, { 42, 56, 32, 83, 21, 6, 251, 150, 90, 169, 44, 166, 8, 84, 106, 101, }, { 96, 218, 34, 74, 48, 62, 9, 167, 23, 247, 94, 148, 233, 192, 36, 71, }, { 229, 6, 69, 121, 147, 96, 107, 116, 233, 2, 133, 242, 128, 9, 111, 159, }, { 148, 7, 4, 50, 74, 112, 39, 98, 154, 188, 228, 100, 1, 235, 156, 68, }, { 190, 63, 36, 97, 95, 118, 220, 244, 192, 21, 200, 194, 9, 191, 246, 33, }, { 144, 192, 119, 251, 72, 93, 254, 152, 211, 64, 205, 53, 109, 227, 126, 11, }, { 47, 190, 63, 57, 246, 177, 133, 179, 144, 106, 158, 114, 127, 94, 81, 73, }, { 157, 11, 142, 192, 175, 176, 241, 138, 139, 184, 45, 67, 194, 249, 66, 185, }, { 129, 27, 20, 250, 161, 115, 187, 41, 183, 9, 242, 55, 5, 193, 169, 151, }, { 162, 47, 190, 91, 81, 181, 150, 87, 252, 164, 23, 182, 206, 135, 29, 15, }, { 118, 5, 134, 164, 59, 80, 191, 78, 124, 3, 38, 139, 192, 236, 185, 49, }, { 75, 163, 110, 186, 196, 162, 85, 238, 206, 97, 233, 183, 250, 150, 151, 65, }, { 228, 71, 41, 218, 114, 250, 204, 171, 106, 61, 30, 119, 155, 11, 182, 252, }, { 6, 69, 171, 76, 3, 218, 84, 135, 140, 130, 220, 152, 90, 12, 147, 137, }, { 85, 49, 44, 5, 203, 150, 146, 48, 55, 174, 195, 10, 11, 170, 13, 169, }, { 174, 165, 43, 195, 87, 194, 62, 154, 39, 99, 108, 69, 122, 159, 248, 222, }, { 28, 16, 154, 58, 14, 195, 74, 163, 60, 177, 223, 116, 199, 56, 235, 46, }, { 117, 198, 50, 130, 219, 61, 149, 236, 58, 66, 72, 199, 237, 234, 17, 148, }, { 91, 57, 97, 24, 204, 22, 183, 128, 41, 23, 77, 48, 137, 182, 153, 190, }, { 4, 199, 115, 201, 2, 45, 217, 250, 73, 252, 41, 81, 108, 8, 226, 79, }, { 39, 243, 217, 104, 242, 235, 244, 132, 2, 81, 204, 208, 167, 78, 86, 215, }, { 77, 230, 197, 246, 199, 120, 1, 105, 66, 227, 53, 47, 160, 154, 4, 200, }, { 156, 74, 226, 99, 78, 42, 86, 85, 8, 135, 182, 198, 217, 251, 155, 218, }, { 32, 247, 30, 135, 16, 171, 7, 220, 13, 236, 139, 205, 230, 64, 28, 61, }, { 83, 116, 135, 73, 200, 76, 198, 183, 187, 44, 31, 146, 81, 166, 158, 32, }, { 208, 237, 75, 54, 104, 200, 240, 227, 201, 91, 24, 108, 98, 99, 70, 113, }, { 149, 70, 104, 145, 171, 234, 128, 189, 25, 131, 127, 225, 26, 233, 69, 39, }, { 243, 217, 225, 151, 152, 14, 221, 157, 130, 246, 253, 237, 169, 37, 242, 233, }, { 133, 220, 103, 51, 163, 94, 98, 211, 254, 245, 219, 102, 105, 201, 75, 216, }, { 136, 23, 158, 8, 68, 179, 109, 193, 166, 13, 59, 16, 198, 211, 119, 106, }, { 176, 55, 105, 124, 88, 246, 249, 68, 222, 172, 70, 248, 139, 163, 98, 54, }, { 34, 117, 198, 2, 17, 92, 138, 161, 200, 146, 126, 4, 208, 68, 109, 251, }, { 11, 142, 82, 119, 228, 55, 91, 149, 212, 122, 60, 238, 245, 22, 175, 59, }, { 2, 130, 216, 133, 1, 247, 141, 125, 197, 126, 245, 201, 54, 4, 113, 198, }, { 201, 123, 206, 102, 133, 188, 196, 101, 63, 41, 117, 204, 210, 81, 150, 115, }, { 219, 99, 25, 65, 140, 255, 171, 118, 29, 33, 36, 130, 151, 117, 233, 74, }, { 182, 114, 194, 48, 91, 44, 173, 195, 82, 46, 154, 96, 209, 175, 241, 191, }, { 64, 45, 60, 205, 32, 149, 14, 123, 26, 27, 213, 89, 15, 128, 56, 122, }, { 78, 37, 113, 208, 39, 21, 43, 203, 4, 162, 91, 99, 141, 156, 172, 109, }, { 215, 233, 140, 217, 138, 136, 3, 187, 198, 230, 95, 113, 35, 109, 12, 155, }, { 171, 35, 52, 169, 180, 117, 64, 191, 237, 160, 222, 145, 13, 149, 195, 242, }, { 152, 141, 145, 170, 76, 7, 143, 175, 65, 123, 159, 151, 181, 243, 121, 149, }, { 200, 58, 162, 197, 100, 38, 99, 186, 188, 22, 238, 73, 201, 83, 79, 16, }, { 175, 228, 71, 96, 182, 88, 153, 69, 164, 92, 247, 192, 97, 157, 33, 189, }, { 163, 110, 210, 248, 176, 47, 49, 136, 127, 155, 140, 51, 213, 133, 196, 108, }, { 68, 234, 79, 4, 34, 184, 215, 129, 83, 231, 252, 8, 99, 136, 218, 53, }, { 132, 157, 11, 144, 66, 196, 197, 12, 125, 202, 64, 227, 114, 203, 146, 187, }, { 158, 200, 58, 230, 79, 221, 219, 40, 205, 249, 67, 15, 239, 255, 234, 28, }, { 226, 2, 130, 150, 113, 32, 152, 44, 230, 191, 194, 239, 193, 7, 37, 117, }, { 205, 188, 189, 175, 135, 145, 29, 159, 118, 213, 92, 157, 190, 89, 116, 60, }, { 251, 148, 7, 198, 156, 84, 172, 170, 16, 205, 175, 79, 113, 53, 245, 119, }, { 69, 171, 35, 167, 195, 34, 112, 94, 208, 216, 103, 141, 120, 138, 3, 86, }, { 35, 52, 170, 161, 240, 198, 45, 126, 75, 173, 229, 129, 203, 70, 180, 152, }, { 198, 50, 239, 216, 99, 166, 70, 10, 162, 175, 96, 115, 75, 79, 219, 7, }, { 61, 166, 232, 30, 255, 242, 234, 160, 178, 98, 207, 60, 58, 122, 46, 112, }, { 23, 158, 200, 77, 234, 244, 17, 54, 232, 203, 227, 154, 50, 46, 68, 21, }, { 235, 14, 8, 100, 148, 224, 78, 196, 247, 187, 11, 200, 2, 21, 251, 136, }, { 46, 255, 83, 154, 23, 43, 34, 108, 19, 85, 5, 247, 100, 92, 136, 42, }, { 203, 249, 22, 227, 132, 75, 73, 24, 250, 87, 128, 5, 228, 85, 231, 181, }, { 178, 181, 177, 249, 89, 1, 116, 57, 27, 210, 179, 49, 189, 167, 19, 240, }, { 92, 61, 166, 247, 46, 86, 68, 216, 38, 170, 10, 45, 200, 184, 211, 84, }, { 74, 226, 2, 25, 37, 56, 242, 49, 77, 94, 114, 50, 225, 148, 78, 34, }, { 100, 29, 81, 131, 50, 19, 208, 93, 94, 11, 119, 197, 133, 200, 198, 8, }, { 113, 1, 65, 75, 217, 16, 76, 22, 115, 190, 97, 150, 129, 226, 243, 219, }, { 53, 235, 14, 79, 251, 168, 155, 151, 32, 89, 157, 158, 226, 106, 41, 238, }, { 199, 115, 131, 123, 130, 60, 225, 213, 33, 144, 251, 246, 80, 77, 2, 100, }, { 7, 4, 199, 239, 226, 64, 243, 88, 15, 189, 71, 29, 65, 14, 74, 234, }, { 89, 187, 185, 157, 205, 225, 58, 253, 236, 105, 184, 249, 191, 178, 232, 120, }, { 56, 32, 247, 116, 28, 69, 148, 133, 120, 161, 125, 232, 77, 112, 21, 92, }, { 234, 79, 100, 199, 117, 122, 233, 27, 116, 132, 144, 77, 25, 23, 34, 235, }, { 55, 105, 214, 202, 250, 95, 22, 234, 229, 39, 104, 87, 212, 110, 88, 40, }, { 99, 25, 150, 108, 208, 83, 35, 5, 81, 182, 48, 216, 196, 198, 140, 226, }, { 24, 215, 233, 243, 12, 238, 147, 89, 117, 77, 246, 37, 171, 48, 9, 97, }, { 167, 169, 161, 49, 178, 2, 232, 114, 54, 103, 165, 98, 185, 141, 38, 35, }, { 88, 250, 213, 62, 44, 123, 157, 34, 111, 86, 35, 124, 164, 176, 49, 27, }, { 17, 219, 99, 1, 233, 46, 69, 177, 100, 73, 63, 2, 104, 34, 215, 156, }, { 245, 156, 74, 219, 155, 212, 137, 26, 14, 116, 33, 117, 243, 41, 97, 96, }, { 217, 225, 193, 196, 141, 8, 38, 11, 216, 95, 209, 75, 161, 113, 152, 140, }, { 233, 140, 208, 225, 149, 23, 195, 185, 50, 197, 254, 1, 52, 17, 138, 78, }, { 37, 113, 1, 237, 243, 28, 121, 249, 199, 47, 57, 25, 145, 74, 39, 17, }, { 248, 87, 179, 224, 124, 57, 134, 8, 86, 140, 193, 3, 92, 51, 93, 210, }, { 151, 196, 176, 20, 170, 29, 13, 192, 220, 253, 138, 40, 44, 237, 52, 225, }, { 177, 118, 5, 223, 185, 108, 94, 155, 93, 147, 221, 125, 144, 161, 187, 85, }, { 25, 150, 133, 80, 237, 116, 52, 134, 246, 114, 109, 160, 176, 50, 208, 2, }, { 15, 73, 33, 190, 230, 26, 130, 111, 157, 134, 21, 191, 153, 30, 77, 116, }, { 137, 86, 242, 171, 165, 41, 202, 30, 37, 50, 160, 149, 221, 209, 174, 9, }, { 220, 103, 222, 174, 110, 191, 88, 46, 18, 156, 99, 159, 214, 123, 163, 160, }, { 8, 77, 230, 81, 4, 90, 113, 55, 146, 59, 82, 162, 216, 16, 7, 158, }, { 241, 91, 57, 18, 153, 249, 80, 224, 71, 136, 8, 36, 159, 33, 131, 47, }, { 168, 224, 128, 143, 84, 24, 106, 29, 171, 225, 176, 221, 32, 147, 107, 87, }, { 14, 8, 77, 29, 7, 128, 37, 176, 30, 185, 142, 58, 130, 28, 148, 23, }, { 111, 147, 3, 244, 214, 36, 139, 200, 138, 113, 75, 43, 112, 222, 105, 51, }, { 125, 139, 212, 211, 223, 103, 228, 219, 168, 121, 26, 101, 53, 250, 22, 10, }, { 212, 42, 56, 255, 106, 229, 41, 25, 128, 167, 49, 61, 14, 107, 164, 62, }, { 189, 252, 144, 71, 191, 27, 246, 86, 134, 84, 166, 142, 36, 185, 94, 132, }, { 134, 31, 211, 21, 67, 51, 72, 113, 184, 180, 181, 42, 68, 207, 227, 125, }, { 236, 10, 207, 139, 118, 160, 189, 156, 248, 6, 76, 213, 67, 27, 177, 98, }, { 50, 239, 201, 160, 25, 232, 104, 207, 47, 228, 218, 131, 163, 100, 99, 4, }, { 126, 72, 96, 245, 63, 10, 206, 121, 238, 56, 116, 41, 24, 252, 190, 175, }, { 237, 75, 163, 40, 151, 58, 26, 67, 123, 57, 215, 80, 88, 25, 104, 1, }, { 110, 210, 111, 87, 55, 190, 44, 23, 9, 78, 208, 174, 107, 220, 176, 80, }, { 195, 180, 240, 178, 128, 17, 56, 47, 104, 108, 210, 167, 60, 69, 224, 43, }, { 33, 182, 114, 36, 241, 49, 160, 3, 142, 211, 16, 72, 253, 66, 197, 94, }, { 98, 88, 250, 207, 49, 201, 132, 218, 210, 137, 171, 93, 223, 196, 85, 129, }, { 206, 127, 9, 137, 103, 252, 55, 61, 48, 148, 50, 209, 147, 95, 220, 153, }, { 147, 3, 195, 221, 168, 48, 212, 58, 149, 1, 163, 121, 64, 229, 214, 174, }, { 76, 167, 169, 85, 38, 226, 166, 182, 193, 220, 174, 170, 187, 152, 221, 171, }, { 222, 229, 6, 43, 111, 72, 213, 83, 215, 226, 150, 86, 224, 127, 210, 102, }, { 63, 36, 48, 155, 254, 5, 103, 221, 119, 28, 58, 245, 12, 126, 95, 182, }, { 67, 238, 136, 235, 192, 248, 36, 217, 92, 90, 187, 21, 34, 134, 144, 223, }, { 115, 131, 153, 206, 216, 231, 193, 107, 182, 192, 148, 95, 183, 230, 130, 29, }, { 173, 102, 159, 229, 183, 175, 20, 56, 97, 34, 2, 9, 87, 153, 80, 123, }, { 240, 26, 85, 177, 120, 99, 247, 63, 196, 183, 147, 161, 132, 35, 90, 76, }, { 71, 41, 251, 34, 194, 213, 253, 35, 21, 166, 146, 68, 78, 142, 114, 144, }, { 60, 231, 132, 189, 30, 104, 77, 127, 49, 93, 84, 185, 33, 120, 247, 19, }, { 97, 155, 78, 233, 209, 164, 174, 120, 148, 200, 197, 17, 242, 194, 253, 36, }, { 86, 242, 152, 35, 43, 251, 184, 146, 113, 239, 173, 70, 38, 172, 165, 12, }, { 41, 251, 148, 117, 245, 107, 209, 52, 28, 232, 66, 234, 37, 82, 194, 192, }, { 123, 206, 127, 159, 220, 189, 176, 92, 36, 251, 198, 253, 111, 246, 133, 131, }, { 16, 154, 15, 162, 8, 180, 226, 110, 231, 118, 164, 135, 115, 32, 14, 255, }, { 255, 83, 116, 15, 158, 121, 117, 80, 89, 49, 134, 30, 29, 61, 23, 56, }, { 93, 124, 202, 84, 207, 204, 227, 7, 165, 149, 145, 168, 211, 186, 10, 55, }, { 49, 44, 125, 134, 249, 133, 66, 109, 105, 165, 180, 207, 142, 98, 203, 161, }, { 183, 51, 174, 147, 186, 182, 10, 28, 209, 17, 1, 229, 202, 173, 40, 220, }, { 179, 244, 221, 90, 184, 155, 211, 230, 152, 237, 40, 180, 166, 165, 202, 147, }, { 107, 84, 112, 61, 212, 9, 82, 50, 195, 141, 98, 122, 28, 214, 139, 124, }, { 192, 119, 68, 148, 96, 124, 18, 141, 46, 45, 188, 235, 17, 67, 72, 142, }, { 127, 9, 12, 86, 222, 144, 105, 166, 109, 7, 239, 172, 3, 254, 103, 204, }, { 30, 146, 66, 191, 15, 52, 199, 222, 249, 207, 42, 189, 241, 60, 154, 232, }, { 209, 172, 39, 149, 137, 82, 87, 60, 74, 100, 131, 233, 121, 97, 159, 18, }, { 120, 13, 203, 185, 60, 208, 154, 254, 98, 186, 168, 177, 66, 240, 45, 38, }, { 194, 245, 156, 17, 97, 139, 159, 240, 235, 83, 73, 34, 39, 71, 57, 72, }, { 187, 185, 59, 11, 188, 193, 162, 209, 10, 214, 122, 22, 126, 181, 205, 13, }, { 109, 17, 219, 113, 215, 211, 6, 181, 79, 15, 190, 226, 70, 218, 24, 245, }, { 225, 193, 54, 176, 145, 77, 178, 142, 160, 254, 172, 163, 236, 1, 141, 208, }, { 31, 211, 46, 28, 238, 174, 96, 1, 122, 240, 177, 56, 234, 62, 67, 139, }, { 130, 216, 160, 220, 65, 30, 145, 139, 241, 72, 156, 123, 40, 199, 1, 50, }, { 186, 248, 87, 168, 93, 91, 5, 14, 137, 233, 225, 147, 101, 183, 20, 110, }, { 140, 208, 237, 193, 70, 158, 180, 59, 239, 241, 18, 65, 170, 219, 149, 37, }, { 207, 62, 101, 42, 134, 102, 144, 226, 179, 171, 169, 84, 136, 93, 5, 250, }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, { 254, 18, 24, 172, 127, 227, 210, 143, 218, 14, 29, 155, 6, 63, 206, 91, }, { 66, 175, 228, 72, 33, 98, 131, 6, 223, 101, 32, 144, 57, 132, 73, 188, }, { 214, 168, 224, 122, 107, 18, 164, 100, 69, 217, 196, 244, 56, 111, 213, 248, }, }, { { 216, 89, 224, 248, 210, 42, 202, 28, 23, 88, 37, 71, 114, 168, 29, 49, }, { 105, 182, 116, 56, 92, 100, 16, 239, 130, 238, 170, 233, 138, 83, 183, 192, }, { 192, 210, 65, 219, 74, 145, 208, 161, 85, 172, 94, 143, 61, 1, 223, 137, }, { 186, 191, 247, 92, 84, 8, 255, 199, 50, 164, 145, 78, 172, 32, 220, 142, }, { 22, 160, 198, 251, 119, 140, 74, 104, 141, 36, 60, 3, 168, 117, 236, 254, }, { 135, 104, 172, 254, 91, 165, 9, 244, 224, 160, 23, 207, 5, 209, 60, 108, }, { 88, 197, 158, 106, 31, 117, 235, 99, 113, 144, 240, 12, 229, 23, 54, 126, }, { 89, 99, 245, 126, 175, 209, 36, 86, 6, 197, 92, 186, 20, 194, 240, 115, }, { 196, 15, 46, 139, 207, 68, 106, 117, 74, 59, 171, 18, 127, 211, 65, 189, }, { 106, 159, 201, 4, 79, 75, 130, 176, 27, 17, 157, 240, 90, 239, 62, 215, }, { 5, 123, 4, 68, 53, 113, 117, 225, 104, 194, 89, 43, 179, 7, 88, 57, }, { 154, 152, 9, 153, 246, 111, 102, 168, 202, 150, 53, 44, 249, 127, 166, 237, }, { 6, 82, 185, 120, 38, 94, 231, 190, 241, 61, 110, 50, 99, 187, 209, 46, }, { 166, 233, 57, 47, 73, 102, 95, 174, 111, 199, 31, 27, 161, 91, 128, 2, }, { 13, 2, 218, 228, 252, 24, 194, 138, 86, 47, 112, 210, 55, 96, 167, 81, }, { 209, 134, 85, 76, 171, 231, 178, 66, 94, 224, 160, 8, 7, 26, 36, 84, }, { 67, 103, 130, 117, 148, 225, 99, 129, 170, 155, 188, 221, 122, 2, 125, 209, }, { 133, 231, 122, 214, 248, 46, 84, 158, 14, 10, 140, 96, 36, 184, 115, 118, }, { 65, 232, 84, 93, 55, 106, 62, 235, 68, 49, 39, 114, 91, 107, 50, 203, }, { 210, 175, 232, 112, 184, 200, 32, 29, 199, 31, 151, 17, 215, 166, 173, 67, }, { 44, 131, 79, 53, 238, 219, 148, 208, 217, 72, 120, 6, 147, 234, 27, 63, }, { 205, 208, 155, 63, 182, 137, 18, 43, 3, 131, 46, 93, 10, 97, 120, 216, }, { 11, 80, 99, 156, 218, 70, 37, 52, 167, 18, 30, 224, 84, 219, 118, 127, }, { 162, 52, 86, 127, 204, 179, 229, 122, 112, 80, 234, 134, 227, 137, 30, 54, }, { 56, 172, 95, 230, 58, 220, 131, 210, 186, 198, 223, 170, 26, 246, 184, 219, }, { 247, 243, 18, 241, 47, 222, 204, 147, 87, 239, 106, 88, 49, 254, 143, 25, }, { 75, 30, 92, 213, 93, 136, 212, 234, 148, 118, 149, 36, 254, 101, 130, 185, }, { 230, 167, 6, 102, 206, 168, 174, 112, 92, 163, 148, 223, 11, 229, 116, 196, }, { 231, 1, 109, 114, 126, 12, 97, 69, 43, 246, 56, 105, 250, 48, 178, 201, }, { 144, 110, 1, 17, 156, 141, 140, 169, 26, 209, 135, 122, 92, 113, 22, 159, }, { 26, 4, 119, 11, 59, 48, 71, 215, 172, 94, 224, 103, 110, 192, 141, 162, }, { 83, 149, 253, 246, 197, 51, 206, 87, 214, 130, 238, 236, 177, 204, 64, 1, }, { 163, 146, 61, 107, 124, 23, 42, 79, 7, 5, 70, 48, 18, 92, 216, 59, }, { 241, 161, 171, 137, 9, 128, 43, 45, 166, 210, 4, 106, 82, 69, 94, 55, }, { 253, 5, 26, 121, 69, 60, 38, 146, 135, 168, 216, 14, 148, 240, 63, 107, }, { 81, 26, 43, 222, 102, 184, 147, 61, 56, 40, 117, 67, 144, 165, 15, 27, }, { 41, 248, 75, 113, 219, 170, 225, 49, 177, 138, 33, 45, 32, 237, 67, 6, }, { 59, 133, 226, 218, 41, 243, 17, 141, 35, 57, 232, 179, 202, 74, 49, 204, }, { 130, 19, 168, 186, 110, 212, 124, 21, 136, 98, 78, 228, 182, 214, 100, 85, }, { 103, 157, 19, 224, 179, 83, 64, 58, 77, 62, 237, 34, 109, 143, 153, 134, }, { 139, 204, 29, 14, 23, 25, 4, 75, 193, 218, 203, 171, 195, 100, 93, 48, }, { 72, 55, 225, 233, 78, 167, 70, 181, 13, 137, 162, 61, 46, 217, 11, 174, }, { 42, 209, 246, 77, 200, 133, 115, 110, 40, 117, 22, 52, 240, 81, 202, 17, }, { 239, 120, 179, 210, 183, 101, 214, 46, 21, 27, 17, 144, 126, 87, 77, 161, }, { 112, 155, 190, 15, 116, 123, 197, 103, 183, 79, 125, 151, 52, 47, 179, 117, }, { 45, 37, 36, 33, 94, 127, 91, 229, 174, 29, 212, 176, 98, 63, 221, 50, }, { 49, 115, 234, 82, 67, 17, 251, 140, 243, 126, 90, 229, 111, 68, 129, 190, }, { 226, 122, 105, 54, 75, 125, 20, 164, 67, 52, 97, 66, 73, 55, 234, 240, }, { 134, 206, 199, 234, 235, 1, 198, 193, 151, 245, 187, 121, 244, 4, 250, 97, }, { 201, 13, 244, 111, 51, 92, 168, 255, 28, 20, 219, 192, 72, 179, 230, 236, }, { 176, 73, 255, 212, 62, 234, 21, 198, 226, 227, 35, 24, 9, 46, 108, 252, }, { 128, 156, 126, 146, 205, 95, 33, 127, 102, 200, 213, 75, 151, 191, 43, 79, }, { 245, 124, 196, 217, 140, 85, 145, 249, 185, 69, 241, 247, 16, 151, 192, 3, }, { 252, 163, 113, 109, 245, 152, 233, 167, 240, 253, 116, 184, 101, 37, 249, 102, }, { 96, 105, 193, 140, 37, 169, 104, 177, 203, 86, 47, 166, 255, 225, 142, 165, }, { 68, 147, 80, 25, 2, 27, 75, 10, 44, 243, 126, 89, 232, 108, 106, 242, }, { 12, 164, 177, 240, 76, 188, 13, 191, 33, 122, 220, 100, 198, 181, 97, 92, }, { 143, 17, 114, 94, 146, 204, 190, 159, 222, 77, 62, 54, 129, 182, 195, 4, }, { 164, 102, 239, 7, 234, 237, 2, 196, 129, 109, 132, 180, 128, 50, 207, 24, }, { 61, 215, 91, 162, 15, 173, 246, 51, 210, 4, 134, 129, 169, 241, 224, 226, }, { 98, 230, 23, 164, 134, 34, 53, 219, 37, 252, 180, 9, 222, 136, 193, 191, }, { 53, 174, 133, 2, 198, 196, 65, 88, 236, 233, 175, 120, 45, 150, 31, 138, }, { 224, 245, 191, 30, 232, 246, 73, 206, 173, 158, 250, 237, 104, 94, 165, 234, }, { 104, 16, 31, 44, 236, 192, 223, 218, 245, 187, 6, 95, 123, 134, 113, 205, }, { 220, 132, 143, 168, 87, 255, 112, 200, 8, 207, 208, 218, 48, 122, 131, 5, }, { 64, 78, 63, 73, 135, 206, 241, 222, 51, 100, 139, 196, 170, 190, 244, 198, }, { 160, 187, 128, 87, 111, 56, 184, 16, 158, 250, 113, 41, 194, 224, 81, 44, }, { 167, 79, 82, 59, 249, 194, 144, 155, 24, 146, 179, 173, 80, 142, 70, 15, }, { 159, 227, 13, 221, 195, 30, 19, 73, 162, 84, 108, 7, 74, 120, 254, 212, }, { 43, 119, 157, 89, 120, 33, 188, 91, 95, 32, 186, 130, 1, 132, 12, 28, }, { 174, 144, 231, 143, 128, 15, 232, 197, 81, 42, 54, 226, 37, 60, 127, 106, }, { 16, 242, 127, 131, 81, 210, 173, 214, 124, 25, 82, 49, 203, 206, 61, 208, }, { 254, 44, 167, 69, 86, 19, 180, 205, 30, 87, 239, 23, 68, 76, 182, 124, }, { 161, 29, 235, 67, 223, 156, 119, 37, 233, 175, 221, 159, 51, 53, 151, 33, }, { 199, 38, 147, 183, 220, 107, 248, 42, 211, 196, 156, 11, 175, 111, 200, 170, }, { 77, 76, 229, 173, 123, 214, 51, 84, 101, 75, 251, 22, 157, 222, 83, 151, }, { 170, 77, 136, 223, 5, 218, 82, 17, 78, 189, 195, 127, 103, 238, 225, 94, }, { 212, 253, 81, 8, 158, 150, 199, 163, 54, 34, 249, 35, 180, 29, 124, 109, }, { 66, 193, 233, 97, 36, 69, 172, 180, 221, 206, 16, 107, 139, 215, 187, 220, }, { 46, 12, 153, 29, 77, 80, 201, 186, 55, 226, 227, 169, 178, 131, 84, 37, }, { 73, 145, 138, 253, 254, 3, 137, 128, 122, 220, 14, 139, 223, 12, 205, 163, }, { 178, 198, 41, 252, 157, 97, 72, 172, 12, 73, 184, 183, 40, 71, 35, 230, }, { 119, 111, 108, 99, 226, 129, 237, 236, 49, 39, 191, 19, 166, 65, 164, 86, }, { 57, 10, 52, 242, 138, 120, 76, 231, 205, 147, 115, 28, 235, 35, 126, 214, }, { 173, 185, 90, 179, 147, 32, 122, 154, 200, 213, 1, 251, 245, 128, 246, 125, }, { 32, 39, 254, 197, 162, 103, 153, 111, 248, 50, 164, 98, 85, 95, 122, 99, }, { 207, 95, 77, 23, 21, 2, 79, 65, 237, 41, 181, 242, 43, 8, 55, 194, }, { 100, 180, 174, 220, 160, 124, 210, 101, 212, 193, 218, 59, 189, 51, 16, 145, }, { 155, 62, 98, 141, 70, 203, 169, 157, 189, 195, 153, 154, 8, 170, 96, 224, }, { 222, 11, 89, 128, 244, 116, 45, 162, 230, 101, 75, 117, 17, 19, 204, 31, }, { 127, 22, 178, 195, 43, 232, 90, 135, 15, 202, 150, 234, 34, 38, 91, 62, }, { 168, 194, 94, 247, 166, 81, 15, 123, 160, 23, 88, 208, 70, 135, 174, 68, }, { 182, 27, 70, 172, 24, 180, 242, 120, 19, 222, 77, 42, 106, 149, 189, 210, }, { 92, 24, 241, 58, 154, 160, 81, 183, 110, 7, 5, 145, 167, 197, 168, 74, }, { 165, 192, 132, 19, 90, 73, 205, 241, 246, 56, 40, 2, 113, 231, 9, 21, }, { 107, 57, 162, 16, 255, 239, 77, 133, 108, 68, 49, 70, 171, 58, 248, 218, }, { 211, 9, 131, 100, 8, 108, 239, 40, 176, 74, 59, 167, 38, 115, 107, 78, }, { 240, 7, 192, 157, 185, 36, 228, 24, 209, 135, 168, 220, 163, 144, 152, 58, }, { 93, 190, 154, 46, 42, 4, 158, 130, 25, 82, 169, 39, 86, 16, 110, 71, }, { 200, 171, 159, 123, 131, 248, 103, 202, 107, 65, 119, 118, 185, 102, 32, 225, }, { 197, 169, 69, 159, 127, 224, 165, 64, 61, 110, 7, 164, 142, 6, 135, 176, }, { 189, 75, 37, 48, 194, 242, 215, 76, 180, 204, 83, 202, 62, 78, 203, 173, }, { 195, 251, 252, 231, 89, 190, 66, 254, 204, 83, 105, 150, 237, 189, 86, 158, }, { 228, 40, 208, 78, 109, 35, 243, 26, 178, 9, 15, 112, 42, 140, 59, 222, }, { 175, 54, 140, 155, 48, 171, 39, 240, 38, 127, 154, 84, 212, 233, 185, 103, }, { 184, 48, 33, 116, 247, 131, 162, 173, 220, 14, 10, 225, 141, 73, 147, 148, }, { 203, 130, 34, 71, 144, 215, 245, 149, 242, 190, 64, 111, 105, 218, 169, 246, }, { 193, 116, 42, 207, 250, 53, 31, 148, 34, 249, 242, 57, 204, 212, 25, 132, }, { 181, 50, 251, 144, 11, 155, 96, 39, 138, 33, 122, 51, 186, 41, 52, 197, }, { 111, 228, 205, 64, 122, 58, 247, 81, 115, 211, 196, 219, 233, 232, 102, 238, }, { 76, 234, 142, 185, 203, 114, 252, 97, 18, 30, 87, 160, 108, 11, 149, 154, }, { 151, 154, 211, 125, 10, 119, 164, 34, 156, 185, 69, 254, 206, 31, 1, 188, }, { 136, 229, 160, 50, 4, 54, 150, 20, 88, 37, 252, 178, 19, 216, 212, 39, }, { 97, 207, 170, 152, 149, 13, 167, 132, 188, 3, 131, 16, 14, 52, 72, 168, }, { 87, 72, 146, 166, 64, 230, 116, 131, 201, 21, 27, 113, 243, 30, 222, 53, }, { 17, 84, 20, 151, 225, 118, 98, 227, 11, 76, 254, 135, 58, 27, 251, 221, }, { 153, 177, 180, 165, 229, 64, 244, 247, 83, 105, 2, 53, 41, 195, 47, 250, }, { 114, 20, 104, 39, 215, 240, 152, 13, 89, 229, 230, 56, 21, 70, 252, 111, }, { 131, 181, 195, 174, 222, 112, 179, 32, 255, 55, 226, 82, 71, 3, 162, 88, }, { 191, 196, 243, 24, 97, 121, 138, 38, 90, 102, 200, 101, 31, 39, 132, 183, }, { 85, 199, 68, 142, 227, 109, 41, 233, 39, 191, 128, 222, 210, 119, 145, 47, }, { 115, 178, 3, 51, 103, 84, 87, 56, 46, 176, 74, 142, 228, 147, 58, 98, }, { 157, 108, 219, 245, 96, 149, 78, 35, 76, 254, 247, 168, 107, 17, 177, 206, }, { 129, 58, 21, 134, 125, 251, 238, 74, 17, 157, 121, 253, 102, 106, 237, 66, }, { 63, 88, 141, 138, 172, 38, 171, 89, 60, 174, 29, 46, 136, 152, 175, 248, }, { 179, 96, 66, 232, 45, 197, 135, 153, 123, 28, 20, 1, 217, 146, 229, 235, }, { 187, 25, 156, 72, 228, 172, 48, 242, 69, 241, 61, 248, 93, 245, 26, 131, }, { 214, 114, 135, 32, 61, 29, 154, 201, 216, 136, 98, 140, 149, 116, 51, 119, }, { 234, 3, 183, 150, 130, 20, 163, 207, 125, 217, 72, 187, 205, 80, 21, 152, }, { 37, 92, 250, 129, 151, 22, 236, 142, 144, 240, 253, 73, 230, 88, 34, 90, }, { 206, 249, 38, 3, 165, 166, 128, 116, 154, 124, 25, 68, 218, 221, 241, 207, }, { 99, 64, 124, 176, 54, 134, 250, 238, 82, 169, 24, 191, 47, 93, 7, 178, }, { 69, 53, 59, 13, 178, 191, 132, 63, 91, 166, 210, 239, 25, 185, 172, 255, }, { 50, 90, 87, 110, 80, 62, 105, 211, 106, 129, 109, 252, 191, 248, 8, 169, }, { 215, 212, 236, 52, 141, 185, 85, 252, 175, 221, 206, 58, 100, 161, 245, 122, }, { 158, 69, 102, 201, 115, 186, 220, 124, 213, 1, 192, 177, 187, 173, 56, 217, }, { 8, 121, 222, 160, 201, 105, 183, 107, 62, 237, 41, 249, 132, 103, 255, 104, }, { 141, 158, 164, 118, 49, 71, 227, 245, 48, 231, 165, 153, 160, 223, 140, 30, }, { 121, 68, 11, 187, 13, 182, 189, 57, 254, 247, 248, 216, 65, 157, 138, 16, }, { 171, 235, 227, 203, 181, 126, 157, 36, 57, 232, 111, 201, 150, 59, 39, 83, }, { 54, 135, 56, 62, 213, 235, 211, 7, 117, 22, 152, 97, 253, 42, 150, 157, }, { 251, 87, 163, 1, 99, 98, 193, 44, 118, 149, 182, 60, 247, 75, 238, 69, }, { 236, 81, 14, 238, 164, 74, 68, 113, 140, 228, 38, 137, 174, 235, 196, 182, }, { 78, 101, 88, 145, 104, 249, 161, 11, 252, 180, 204, 15, 77, 98, 218, 128, }, { 126, 176, 217, 215, 155, 76, 149, 178, 120, 159, 58, 92, 211, 243, 157, 51, }, { 208, 32, 62, 88, 27, 67, 125, 119, 41, 181, 12, 190, 246, 207, 226, 89, }, { 108, 205, 112, 124, 105, 21, 101, 14, 234, 44, 243, 194, 57, 84, 239, 249, }, { 243, 46, 125, 161, 170, 11, 118, 71, 72, 120, 159, 197, 115, 44, 17, 45, }, { 95, 49, 76, 6, 137, 143, 195, 232, 247, 248, 50, 136, 119, 121, 33, 93, }, { 255, 138, 204, 81, 230, 183, 123, 248, 105, 2, 67, 161, 181, 153, 112, 113, }, { 138, 106, 118, 26, 167, 189, 203, 126, 182, 143, 103, 29, 50, 177, 155, 61, }, { 86, 238, 249, 178, 240, 66, 187, 182, 190, 64, 183, 199, 2, 203, 24, 56, }, { 221, 34, 228, 188, 231, 91, 191, 253, 127, 154, 124, 108, 193, 175, 69, 8, }, { 180, 148, 144, 132, 187, 63, 175, 18, 253, 116, 214, 133, 75, 252, 242, 200, }, { 4, 221, 111, 80, 133, 213, 186, 212, 31, 151, 245, 157, 66, 210, 158, 52, }, { 190, 98, 152, 12, 209, 221, 69, 19, 45, 51, 100, 211, 238, 242, 66, 186, }, { 27, 162, 28, 31, 139, 148, 136, 226, 219, 11, 76, 209, 159, 21, 75, 175, }, { 156, 202, 176, 225, 208, 49, 129, 22, 59, 171, 91, 30, 154, 196, 119, 195, }, { 94, 151, 39, 18, 57, 43, 12, 221, 128, 173, 158, 62, 134, 172, 231, 80, }, { 7, 244, 210, 108, 150, 250, 40, 139, 134, 104, 194, 132, 146, 110, 23, 35, }, { 140, 56, 207, 98, 129, 227, 44, 192, 71, 178, 9, 47, 81, 10, 74, 19, }, { 15, 141, 12, 204, 95, 147, 159, 224, 184, 133, 235, 125, 22, 9, 232, 75, }, { 109, 107, 27, 104, 217, 177, 170, 59, 157, 121, 95, 116, 200, 129, 41, 244, }, { 244, 218, 175, 205, 60, 241, 94, 204, 206, 16, 93, 65, 225, 66, 6, 14, }, { 38, 117, 71, 189, 132, 57, 126, 209, 9, 15, 202, 80, 54, 228, 171, 77, }, { 113, 61, 213, 27, 196, 223, 10, 82, 192, 26, 209, 33, 197, 250, 117, 120, }, { 28, 86, 206, 115, 29, 110, 160, 105, 93, 99, 142, 85, 13, 123, 92, 140, }, { 148, 179, 110, 65, 25, 88, 54, 125, 5, 70, 114, 231, 30, 163, 136, 171, }, { 34, 168, 40, 237, 1, 236, 196, 5, 22, 152, 63, 205, 116, 54, 53, 121, }, { 235, 165, 220, 130, 50, 176, 108, 250, 10, 140, 228, 13, 60, 133, 211, 149, }, { 188, 237, 78, 36, 114, 86, 24, 121, 195, 153, 255, 124, 207, 155, 13, 160, }, { 60, 113, 48, 182, 191, 9, 57, 6, 165, 81, 42, 55, 88, 36, 38, 239, }, { 21, 137, 123, 199, 100, 163, 216, 55, 20, 219, 11, 26, 120, 201, 101, 233, }, { 233, 42, 10, 170, 145, 59, 49, 144, 228, 38, 127, 162, 29, 236, 156, 143, }, { 2, 143, 214, 40, 163, 139, 93, 106, 238, 170, 155, 175, 33, 105, 79, 26, }, { 70, 28, 134, 49, 161, 144, 22, 96, 194, 89, 229, 246, 201, 5, 37, 232, }, { 218, 214, 54, 208, 113, 161, 151, 118, 249, 242, 190, 232, 83, 193, 82, 43, }, { 25, 45, 202, 55, 40, 31, 213, 136, 53, 161, 215, 126, 190, 124, 4, 181, }, { 219, 112, 93, 196, 193, 5, 88, 67, 142, 167, 18, 94, 162, 20, 148, 38, }, { 30, 217, 24, 91, 190, 229, 253, 3, 179, 201, 21, 250, 44, 18, 19, 150, }, { 23, 6, 173, 239, 199, 40, 133, 93, 250, 113, 144, 181, 89, 160, 42, 243, }, { 74, 184, 55, 193, 237, 44, 27, 223, 227, 35, 57, 146, 15, 176, 68, 180, }, { 10, 246, 8, 136, 106, 226, 234, 1, 208, 71, 178, 86, 165, 14, 176, 114, }, { 217, 255, 139, 236, 98, 142, 5, 41, 96, 13, 137, 241, 131, 125, 219, 60, }, { 137, 67, 203, 38, 180, 146, 89, 33, 47, 112, 80, 4, 226, 13, 18, 42, }, { 120, 226, 96, 175, 189, 18, 114, 12, 137, 162, 84, 110, 176, 72, 76, 29, }, { 118, 201, 7, 119, 82, 37, 34, 217, 70, 114, 19, 165, 87, 148, 98, 91, }, { 39, 211, 44, 169, 52, 157, 177, 228, 126, 90, 102, 230, 199, 49, 109, 64, }, { 24, 139, 161, 35, 152, 187, 26, 189, 66, 244, 123, 200, 79, 169, 194, 184, }, { 35, 14, 67, 249, 177, 72, 11, 48, 97, 205, 147, 123, 133, 227, 243, 116, }, { 242, 136, 22, 181, 26, 175, 185, 114, 63, 45, 51, 115, 130, 249, 215, 32, }, { 149, 21, 5, 85, 169, 252, 249, 72, 114, 19, 222, 81, 239, 118, 78, 166, }, { 213, 91, 58, 28, 46, 50, 8, 150, 65, 119, 85, 149, 69, 200, 186, 96, }, { 169, 100, 53, 227, 22, 245, 192, 78, 215, 66, 244, 102, 183, 82, 104, 73, }, { 132, 65, 17, 194, 72, 138, 155, 171, 121, 95, 32, 214, 213, 109, 181, 123, }, { 225, 83, 212, 10, 88, 82, 134, 251, 218, 203, 86, 91, 153, 139, 99, 231, }, { 29, 240, 165, 103, 173, 202, 111, 92, 42, 54, 34, 227, 252, 174, 154, 129, }, { 147, 71, 188, 45, 143, 162, 30, 246, 131, 46, 176, 99, 140, 205, 159, 136, }, { 40, 94, 32, 101, 107, 14, 46, 4, 198, 223, 141, 155, 209, 56, 133, 11, }, { 198, 128, 248, 163, 108, 207, 55, 31, 164, 145, 48, 189, 94, 186, 14, 167, }, { 123, 203, 221, 147, 174, 61, 224, 83, 16, 93, 99, 119, 96, 244, 197, 10, }, { 101, 18, 197, 200, 16, 216, 29, 80, 163, 148, 118, 141, 76, 230, 214, 156, }, { 117, 224, 186, 75, 65, 10, 176, 134, 223, 141, 36, 188, 135, 40, 235, 76, }, { 124, 63, 15, 255, 56, 199, 200, 216, 150, 53, 161, 243, 242, 154, 210, 41, }, { 227, 220, 2, 34, 251, 217, 219, 145, 52, 97, 205, 244, 184, 226, 44, 253, }, { 238, 222, 216, 198, 7, 193, 25, 27, 98, 78, 189, 38, 143, 130, 139, 172, }, { 33, 129, 149, 209, 18, 195, 86, 90, 143, 103, 8, 212, 164, 138, 188, 110, }, { 142, 183, 25, 74, 34, 104, 113, 170, 169, 24, 146, 128, 112, 99, 5, 9, }, { 249, 216, 117, 41, 192, 233, 156, 70, 152, 63, 45, 147, 214, 34, 161, 95, }, { 1, 166, 107, 20, 176, 164, 207, 53, 119, 85, 172, 182, 241, 213, 198, 13, }, { 91, 236, 35, 86, 12, 90, 121, 60, 232, 111, 199, 21, 53, 171, 191, 105, }, { 145, 200, 106, 5, 44, 41, 67, 156, 109, 132, 43, 204, 173, 164, 208, 146, }, { 20, 47, 16, 211, 212, 7, 23, 2, 99, 142, 167, 172, 137, 28, 163, 228, }, { 122, 109, 182, 135, 30, 153, 47, 102, 103, 8, 207, 193, 145, 33, 3, 7, }, { 246, 85, 121, 229, 159, 122, 3, 166, 32, 186, 198, 238, 192, 43, 73, 20, }, { 177, 239, 148, 192, 142, 78, 218, 243, 149, 182, 143, 174, 248, 251, 170, 241, }, { 183, 189, 45, 184, 168, 16, 61, 77, 100, 139, 225, 156, 155, 64, 123, 223, }, { 202, 36, 73, 83, 32, 115, 58, 160, 133, 235, 236, 217, 152, 15, 111, 251, }, { 90, 74, 72, 66, 188, 254, 182, 9, 159, 58, 107, 163, 196, 126, 121, 100, }, { 248, 126, 30, 61, 112, 77, 83, 115, 239, 106, 129, 37, 39, 247, 103, 82, }, { 204, 118, 240, 43, 6, 45, 221, 30, 116, 214, 130, 235, 251, 180, 190, 213, }, { 71, 186, 237, 37, 17, 52, 217, 85, 181, 12, 73, 64, 56, 208, 227, 229, }, { 150, 60, 184, 105, 186, 211, 107, 23, 235, 236, 233, 72, 63, 202, 199, 177, }, { 110, 66, 166, 84, 202, 158, 56, 100, 4, 134, 104, 109, 24, 61, 160, 227, }, { 19, 219, 194, 191, 66, 253, 63, 137, 229, 230, 101, 40, 27, 114, 180, 199, }, { 36, 250, 145, 149, 39, 178, 35, 187, 231, 165, 81, 255, 23, 141, 228, 87, }, { 116, 70, 209, 95, 241, 174, 127, 179, 168, 216, 136, 10, 118, 253, 45, 65, }, { 9, 223, 181, 180, 121, 205, 120, 94, 73, 184, 133, 79, 117, 178, 57, 101, }, { 3, 41, 189, 60, 19, 47, 146, 95, 153, 255, 55, 25, 208, 188, 137, 23, }, { 48, 213, 129, 70, 243, 181, 52, 185, 132, 43, 246, 83, 158, 145, 71, 179, }, { 80, 188, 64, 202, 214, 28, 92, 8, 79, 125, 217, 245, 97, 112, 201, 22, }, { 79, 195, 51, 133, 216, 93, 110, 62, 139, 225, 96, 185, 188, 183, 28, 141, }, { 14, 43, 103, 216, 239, 55, 80, 213, 207, 208, 71, 203, 231, 220, 46, 70, }, { 125, 153, 100, 235, 136, 99, 7, 237, 225, 96, 13, 69, 3, 79, 20, 36, }, { 185, 150, 74, 96, 71, 39, 109, 152, 171, 91, 166, 87, 124, 156, 85, 153, }, { 55, 33, 83, 42, 101, 79, 28, 50, 2, 67, 52, 215, 12, 255, 80, 144, }, { 84, 97, 47, 154, 83, 201, 230, 220, 80, 234, 44, 104, 35, 162, 87, 34, }, { 31, 127, 115, 79, 14, 65, 50, 54, 196, 156, 185, 76, 221, 199, 213, 155, }, { 194, 93, 151, 243, 233, 26, 141, 203, 187, 6, 197, 32, 28, 104, 144, 147, }, { 51, 252, 60, 122, 224, 154, 166, 230, 29, 212, 193, 74, 78, 45, 206, 164, }, { 58, 35, 137, 206, 153, 87, 222, 184, 84, 108, 68, 5, 59, 159, 247, 193, }, { 229, 142, 187, 90, 221, 135, 60, 47, 197, 92, 163, 198, 219, 89, 253, 211, }, { 232, 140, 97, 190, 33, 159, 254, 165, 147, 115, 211, 20, 236, 57, 90, 130, }, { 18, 125, 169, 171, 242, 89, 240, 188, 146, 179, 201, 158, 234, 167, 114, 202, }, { 146, 225, 215, 57, 63, 6, 209, 195, 244, 123, 28, 213, 125, 24, 89, 133, }, { 172, 31, 49, 167, 35, 132, 181, 175, 191, 128, 173, 77, 4, 85, 48, 112, }, { 52, 8, 238, 22, 118, 96, 142, 109, 155, 188, 3, 206, 220, 67, 217, 135, }, { 82, 51, 150, 226, 117, 151, 1, 98, 161, 215, 66, 90, 64, 25, 134, 12, }, { 237, 247, 101, 250, 20, 238, 139, 68, 251, 177, 138, 63, 95, 62, 2, 187, }, { 250, 241, 200, 21, 211, 198, 14, 25, 1, 192, 26, 138, 6, 158, 40, 72, }, { 152, 23, 223, 177, 85, 228, 59, 194, 36, 60, 174, 131, 216, 22, 233, 247, }, { 223, 173, 50, 148, 68, 208, 226, 151, 145, 48, 231, 195, 224, 198, 10, 18, }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, { 102, 59, 120, 244, 3, 247, 143, 15, 58, 107, 65, 148, 156, 90, 95, 139, }, { 47, 170, 242, 9, 253, 244, 6, 143, 64, 183, 79, 31, 67, 86, 146, 40, }, { 62, 254, 230, 158, 28, 130, 100, 108, 75, 251, 177, 152, 121, 77, 105, 245, }, }, { { 194, 69, 185, 87, 133, 168, 219, 19, 42, 63, 176, 185, 176, 11, 123, 198, }, { 149, 89, 194, 32, 124, 83, 129, 33, 100, 86, 31, 194, 31, 109, 87, 54, }, { 166, 115, 147, 99, 41, 1, 66, 110, 145, 56, 155, 147, 155, 244, 53, 157, }, { 39, 120, 72, 61, 105, 32, 151, 94, 8, 12, 139, 72, 139, 245, 111, 75, }, { 224, 200, 102, 148, 227, 117, 89, 216, 140, 202, 72, 102, 72, 229, 134, 181, }, { 134, 156, 196, 18, 73, 209, 28, 70, 165, 22, 131, 196, 131, 20, 66, 32, }, { 6, 166, 91, 21, 10, 23, 167, 230, 117, 174, 227, 91, 227, 18, 93, 145, }, { 93, 53, 150, 72, 231, 194, 112, 219, 209, 88, 73, 150, 73, 80, 203, 128, }, { 9, 122, 33, 212, 27, 211, 152, 154, 68, 102, 118, 33, 118, 63, 40, 217, }, { 120, 47, 86, 199, 136, 239, 59, 102, 75, 143, 34, 86, 34, 171, 46, 5, }, { 244, 154, 127, 234, 223, 7, 13, 201, 113, 168, 71, 127, 71, 137, 139, 85, }, { 22, 48, 145, 204, 58, 127, 136, 242, 111, 185, 239, 145, 239, 98, 135, 46, }, { 25, 236, 235, 13, 43, 187, 183, 142, 94, 113, 122, 235, 122, 79, 242, 102, }, { 236, 71, 208, 190, 247, 91, 212, 215, 102, 85, 77, 208, 77, 193, 60, 84, }, { 105, 136, 216, 71, 187, 96, 122, 226, 24, 20, 94, 216, 94, 220, 177, 221, }, { 4, 196, 211, 167, 12, 26, 123, 5, 231, 117, 3, 211, 3, 28, 215, 95, }, { 143, 230, 229, 198, 82, 2, 132, 220, 225, 112, 245, 229, 245, 43, 106, 249, }, { 48, 121, 157, 168, 80, 184, 113, 60, 46, 57, 20, 157, 20, 144, 173, 2, }, { 57, 3, 188, 124, 75, 107, 233, 166, 106, 95, 98, 188, 98, 175, 133, 219, }, { 233, 178, 71, 64, 248, 166, 193, 66, 200, 172, 62, 71, 62, 218, 174, 108, }, { 3, 83, 204, 235, 5, 234, 178, 115, 219, 87, 144, 204, 144, 9, 207, 169, }, { 207, 251, 75, 36, 146, 97, 56, 140, 137, 44, 197, 75, 197, 40, 132, 64, }, { 112, 100, 51, 74, 144, 219, 205, 108, 70, 101, 36, 51, 36, 147, 67, 187, }, { 67, 78, 98, 9, 197, 137, 14, 35, 179, 11, 160, 98, 160, 10, 33, 16, }, { 85, 126, 243, 197, 255, 246, 134, 209, 220, 178, 79, 243, 79, 104, 166, 62, }, { 44, 96, 225, 91, 116, 254, 211, 39, 222, 177, 29, 225, 29, 196, 205, 92, }, { 18, 244, 66, 107, 54, 101, 243, 247, 136, 204, 236, 66, 236, 126, 80, 113, }, { 142, 215, 161, 159, 81, 229, 234, 76, 168, 252, 133, 161, 133, 44, 47, 158, }, { 213, 68, 108, 194, 188, 48, 61, 113, 12, 10, 47, 108, 47, 110, 185, 143, }, { 61, 199, 111, 219, 71, 113, 146, 163, 141, 42, 97, 111, 97, 179, 82, 132, }, { 210, 211, 115, 142, 181, 192, 244, 7, 48, 40, 188, 115, 188, 123, 161, 121, }, { 118, 194, 104, 95, 154, 204, 106, 138, 51, 203, 199, 104, 199, 129, 30, 42, }, { 24, 221, 175, 84, 40, 92, 217, 30, 23, 253, 10, 175, 10, 72, 183, 1, }, { 53, 140, 10, 86, 95, 69, 100, 169, 128, 192, 103, 10, 103, 139, 63, 58, }, { 7, 151, 31, 76, 9, 240, 201, 118, 60, 34, 147, 31, 147, 21, 24, 246, }, { 192, 39, 49, 229, 131, 165, 7, 240, 184, 228, 80, 49, 80, 5, 241, 8, }, { 247, 201, 179, 1, 218, 237, 191, 186, 170, 255, 215, 179, 215, 128, 68, 252, }, { 184, 8, 103, 34, 11, 74, 60, 150, 243, 107, 114, 103, 114, 174, 223, 13, }, { 114, 6, 187, 248, 150, 214, 17, 143, 212, 190, 196, 187, 196, 157, 201, 117, }, { 17, 167, 142, 128, 51, 143, 65, 132, 83, 155, 124, 142, 124, 119, 159, 216, }, { 180, 135, 209, 8, 31, 100, 177, 153, 25, 244, 119, 209, 119, 138, 101, 236, }, { 255, 130, 214, 140, 194, 217, 73, 176, 167, 21, 209, 214, 209, 184, 41, 66, }, { 26, 191, 39, 230, 46, 81, 5, 253, 133, 38, 234, 39, 234, 70, 61, 207, }, { 72, 86, 203, 111, 216, 87, 74, 90, 101, 182, 54, 203, 54, 59, 131, 7, }, { 170, 252, 37, 73, 61, 47, 207, 97, 123, 167, 158, 37, 158, 208, 143, 124, }, { 88, 192, 1, 182, 232, 63, 101, 78, 127, 161, 58, 1, 58, 75, 89, 184, }, { 147, 255, 153, 53, 118, 68, 38, 199, 17, 248, 252, 153, 252, 127, 10, 167, }, { 33, 222, 19, 40, 99, 55, 48, 184, 125, 162, 104, 19, 104, 231, 50, 218, }, { 221, 15, 9, 79, 164, 4, 203, 123, 1, 224, 41, 9, 41, 86, 212, 49, }, { 96, 242, 249, 147, 160, 179, 226, 120, 92, 114, 40, 249, 40, 227, 153, 4, }, { 12, 143, 182, 42, 20, 46, 141, 15, 234, 159, 5, 182, 5, 36, 186, 225, }, { 196, 227, 226, 66, 143, 191, 124, 245, 95, 145, 83, 226, 83, 25, 38, 87, }, { 154, 133, 184, 225, 109, 151, 190, 93, 85, 158, 138, 184, 138, 64, 34, 126, }, { 92, 4, 210, 17, 228, 37, 30, 75, 152, 212, 57, 210, 57, 87, 142, 231, }, { 83, 216, 168, 208, 245, 225, 33, 55, 169, 28, 172, 168, 172, 122, 251, 175, }, { 205, 153, 195, 150, 148, 108, 228, 111, 27, 247, 37, 195, 37, 38, 14, 142, }, { 50, 27, 21, 26, 86, 181, 173, 223, 188, 226, 244, 21, 244, 158, 39, 204, }, { 27, 142, 99, 191, 45, 182, 107, 109, 204, 170, 154, 99, 154, 65, 120, 168, }, { 90, 162, 137, 4, 238, 50, 185, 173, 237, 122, 218, 137, 218, 69, 211, 118, }, { 161, 228, 140, 47, 32, 241, 139, 24, 173, 26, 8, 140, 8, 225, 45, 107, }, { 229, 61, 241, 106, 236, 136, 76, 77, 34, 51, 59, 241, 59, 254, 20, 141, }, { 60, 246, 43, 130, 68, 150, 252, 51, 196, 166, 17, 43, 17, 180, 23, 227, }, { 151, 59, 74, 146, 122, 94, 93, 194, 246, 141, 255, 74, 255, 99, 221, 248, }, { 206, 202, 15, 125, 145, 134, 86, 28, 192, 160, 181, 15, 181, 47, 193, 39, }, { 109, 76, 11, 224, 183, 122, 1, 231, 255, 97, 93, 11, 93, 192, 102, 130, }, { 98, 144, 113, 33, 166, 190, 62, 155, 206, 169, 200, 113, 200, 237, 19, 202, }, { 245, 171, 59, 179, 220, 224, 99, 89, 56, 36, 55, 59, 55, 142, 206, 50, }, { 183, 212, 29, 227, 26, 142, 3, 234, 194, 163, 231, 29, 231, 131, 170, 69, }, { 226, 170, 238, 38, 229, 120, 133, 59, 30, 17, 168, 238, 168, 235, 12, 123, }, { 65, 44, 234, 187, 195, 132, 210, 192, 33, 208, 64, 234, 64, 4, 171, 222, }, { 113, 85, 119, 19, 147, 60, 163, 252, 15, 233, 84, 119, 84, 148, 6, 220, }, { 249, 36, 141, 153, 200, 206, 238, 86, 210, 187, 50, 141, 50, 170, 116, 211, }, { 234, 225, 139, 171, 253, 76, 115, 49, 19, 251, 174, 139, 174, 211, 97, 197, }, { 174, 56, 246, 238, 49, 53, 180, 100, 156, 210, 157, 246, 157, 204, 88, 35, }, { 228, 12, 181, 51, 239, 111, 34, 221, 107, 191, 75, 181, 75, 249, 81, 234, }, { 11, 24, 169, 102, 29, 222, 68, 121, 214, 189, 150, 169, 150, 49, 162, 23, }, { 222, 92, 197, 164, 161, 238, 121, 8, 218, 183, 185, 197, 185, 95, 27, 152, }, { 240, 94, 172, 77, 211, 29, 118, 204, 150, 221, 68, 172, 68, 149, 92, 10, }, { 212, 117, 40, 155, 191, 215, 83, 225, 69, 134, 95, 40, 95, 105, 252, 232, }, { 181, 182, 149, 81, 28, 131, 223, 9, 80, 120, 7, 149, 7, 141, 32, 139, }, { 164, 17, 27, 209, 47, 12, 158, 141, 3, 227, 123, 27, 123, 250, 191, 83, }, { 186, 106, 239, 144, 13, 71, 224, 117, 97, 176, 146, 239, 146, 160, 85, 195, }, { 232, 131, 3, 25, 251, 65, 175, 210, 129, 32, 78, 3, 78, 221, 235, 11, }, { 14, 237, 62, 152, 18, 35, 81, 236, 120, 68, 229, 62, 229, 42, 48, 47, }, { 156, 35, 227, 244, 103, 128, 25, 187, 32, 48, 105, 227, 105, 82, 127, 239, }, { 49, 72, 217, 241, 83, 95, 31, 172, 103, 181, 100, 217, 100, 151, 232, 101, }, { 121, 30, 18, 158, 139, 8, 85, 246, 2, 3, 82, 18, 82, 172, 107, 98, }, { 252, 209, 26, 103, 199, 51, 251, 195, 124, 66, 65, 26, 65, 177, 230, 235, }, { 77, 163, 92, 145, 215, 170, 95, 207, 203, 79, 69, 92, 69, 32, 17, 63, }, { 219, 169, 82, 90, 174, 19, 108, 157, 116, 78, 202, 82, 202, 68, 137, 160, }, { 117, 145, 164, 180, 159, 38, 216, 249, 232, 156, 87, 164, 87, 136, 209, 131, }, { 104, 185, 156, 30, 184, 135, 20, 114, 81, 152, 46, 156, 46, 219, 244, 186, }, { 21, 99, 93, 39, 63, 149, 58, 129, 180, 238, 127, 93, 127, 107, 72, 135, }, { 169, 175, 233, 162, 56, 197, 125, 18, 160, 240, 14, 233, 14, 217, 64, 213, }, { 1, 49, 68, 89, 3, 231, 110, 144, 73, 140, 112, 68, 112, 7, 69, 103, }, { 35, 188, 155, 154, 101, 58, 236, 91, 239, 121, 136, 155, 136, 233, 184, 20, }, { 178, 33, 138, 29, 21, 115, 22, 127, 108, 90, 148, 138, 148, 152, 56, 125, }, { 110, 31, 199, 11, 178, 144, 179, 148, 36, 54, 205, 199, 205, 201, 169, 43, }, { 242, 60, 36, 255, 213, 16, 170, 47, 4, 6, 164, 36, 164, 155, 214, 196, }, { 59, 97, 52, 206, 77, 102, 53, 69, 248, 132, 130, 52, 130, 161, 15, 21, }, { 82, 233, 236, 137, 246, 6, 79, 167, 224, 144, 220, 236, 220, 125, 190, 200, }, { 101, 7, 110, 109, 175, 78, 247, 237, 242, 139, 91, 110, 91, 248, 11, 60, }, { 75, 5, 7, 132, 221, 189, 248, 41, 190, 225, 166, 7, 166, 50, 76, 174, }, { 56, 50, 248, 37, 72, 140, 135, 54, 35, 211, 18, 248, 18, 168, 192, 188, }, { 42, 198, 186, 78, 126, 233, 116, 193, 171, 31, 254, 186, 254, 214, 144, 205, }, { 145, 157, 17, 135, 112, 73, 250, 36, 131, 35, 28, 17, 28, 113, 128, 105, }, { 214, 23, 160, 41, 185, 218, 143, 2, 215, 93, 191, 160, 191, 103, 118, 38, }, { 253, 224, 94, 62, 196, 212, 149, 83, 53, 206, 49, 94, 49, 182, 163, 140, }, { 248, 21, 201, 192, 203, 41, 128, 198, 155, 55, 66, 201, 66, 173, 49, 180, }, { 140, 181, 41, 45, 87, 232, 54, 175, 58, 39, 101, 41, 101, 34, 165, 80, }, { 80, 139, 100, 59, 240, 11, 147, 68, 114, 75, 60, 100, 60, 115, 52, 6, }, { 127, 184, 73, 139, 129, 31, 242, 16, 119, 173, 177, 73, 177, 190, 54, 243, }, { 89, 241, 69, 239, 235, 216, 11, 222, 54, 45, 74, 69, 74, 76, 28, 223, }, { 8, 75, 101, 141, 24, 52, 246, 10, 13, 234, 6, 101, 6, 56, 109, 190, }, { 217, 203, 218, 232, 168, 30, 176, 126, 230, 149, 42, 218, 42, 74, 3, 110, }, { 162, 183, 64, 196, 37, 27, 57, 107, 118, 77, 152, 64, 152, 232, 226, 194, }, { 251, 70, 5, 43, 206, 195, 50, 181, 64, 96, 210, 5, 210, 164, 254, 29, }, { 28, 25, 124, 243, 36, 70, 162, 27, 240, 136, 9, 124, 9, 84, 96, 94, }, { 41, 149, 118, 165, 123, 3, 198, 178, 112, 72, 110, 118, 110, 223, 95, 100, }, { 211, 226, 55, 215, 182, 39, 154, 151, 121, 164, 204, 55, 204, 124, 228, 30, }, { 111, 46, 131, 82, 177, 119, 221, 4, 109, 186, 189, 131, 189, 206, 236, 76, }, { 71, 138, 177, 174, 201, 147, 117, 38, 84, 126, 163, 177, 163, 22, 246, 79, }, { 84, 79, 183, 156, 252, 17, 232, 65, 149, 62, 63, 183, 63, 111, 227, 89, }, { 159, 112, 47, 31, 98, 106, 171, 200, 251, 103, 249, 47, 249, 91, 176, 70, }, { 23, 1, 213, 149, 57, 152, 230, 98, 38, 53, 159, 213, 159, 101, 194, 73, }, { 225, 249, 34, 205, 224, 146, 55, 72, 197, 70, 56, 34, 56, 226, 195, 210, }, { 124, 235, 133, 96, 132, 245, 64, 99, 172, 250, 33, 133, 33, 183, 249, 90, }, { 70, 187, 245, 247, 202, 116, 27, 182, 29, 242, 211, 245, 211, 17, 179, 40, }, { 188, 204, 180, 133, 7, 80, 71, 147, 20, 30, 113, 180, 113, 178, 8, 82, }, { 197, 210, 166, 27, 140, 88, 18, 101, 22, 29, 35, 166, 35, 30, 99, 48, }, { 34, 141, 223, 195, 102, 221, 130, 203, 166, 245, 248, 223, 248, 238, 253, 115, }, { 190, 174, 60, 55, 1, 93, 155, 112, 134, 197, 145, 60, 145, 188, 130, 156, }, { 150, 10, 14, 203, 121, 185, 51, 82, 191, 1, 143, 14, 143, 100, 152, 159, }, { 126, 137, 13, 210, 130, 248, 156, 128, 62, 33, 193, 13, 193, 185, 115, 148, }, { 29, 40, 56, 170, 39, 161, 204, 139, 185, 4, 121, 56, 121, 83, 37, 57, }, { 185, 57, 35, 123, 8, 173, 82, 6, 186, 231, 2, 35, 2, 169, 154, 106, }, { 157, 18, 167, 173, 100, 103, 119, 43, 105, 188, 25, 167, 25, 85, 58, 136, }, { 173, 107, 58, 5, 52, 223, 6, 23, 71, 133, 13, 58, 13, 197, 151, 138, }, { 108, 125, 79, 185, 180, 157, 111, 119, 182, 237, 45, 79, 45, 199, 35, 229, }, { 133, 207, 8, 249, 76, 59, 174, 53, 126, 65, 19, 8, 19, 29, 141, 137, }, { 209, 128, 191, 101, 176, 42, 70, 116, 235, 127, 44, 191, 44, 114, 110, 208, }, { 30, 123, 244, 65, 34, 75, 126, 248, 98, 83, 233, 244, 233, 90, 234, 144, }, { 165, 32, 95, 136, 44, 235, 240, 29, 74, 111, 11, 95, 11, 253, 250, 52, }, { 230, 110, 61, 129, 233, 98, 254, 62, 249, 100, 171, 61, 171, 247, 219, 36, }, { 46, 2, 105, 233, 114, 243, 15, 196, 76, 106, 253, 105, 253, 202, 71, 146, }, { 95, 87, 30, 250, 225, 207, 172, 56, 67, 131, 169, 30, 169, 94, 65, 78, }, { 97, 195, 189, 202, 163, 84, 140, 232, 21, 254, 88, 189, 88, 228, 220, 99, }, { 131, 105, 83, 236, 70, 44, 9, 211, 11, 239, 240, 83, 240, 15, 208, 24, }, { 68, 217, 125, 69, 204, 121, 199, 85, 143, 41, 51, 125, 51, 31, 57, 230, }, { 177, 114, 70, 246, 16, 153, 164, 12, 183, 13, 4, 70, 4, 145, 247, 212, }, { 239, 20, 28, 85, 242, 177, 102, 164, 189, 2, 221, 28, 221, 200, 243, 253, }, { 130, 88, 23, 181, 69, 203, 103, 67, 66, 99, 128, 23, 128, 8, 149, 127, }, { 54, 223, 198, 189, 90, 175, 214, 218, 91, 151, 247, 198, 247, 130, 240, 147, }, { 163, 134, 4, 157, 38, 252, 87, 251, 63, 193, 232, 4, 232, 239, 167, 165, }, { 175, 9, 178, 183, 50, 210, 218, 244, 213, 94, 237, 178, 237, 203, 29, 68, }, { 136, 113, 250, 138, 91, 242, 77, 170, 221, 82, 102, 250, 102, 62, 114, 15, }, { 137, 64, 190, 211, 88, 21, 35, 58, 148, 222, 22, 190, 22, 57, 55, 104, }, { 15, 220, 122, 193, 17, 196, 63, 124, 49, 200, 149, 122, 149, 45, 117, 72, }, { 31, 74, 176, 24, 33, 172, 16, 104, 43, 223, 153, 176, 153, 93, 175, 247, }, { 66, 127, 38, 80, 198, 110, 96, 179, 250, 135, 208, 38, 208, 13, 100, 119, }, { 246, 248, 247, 88, 217, 10, 209, 42, 227, 115, 167, 247, 167, 135, 1, 155, }, { 223, 109, 129, 253, 162, 9, 23, 152, 147, 59, 201, 129, 201, 88, 94, 255, }, { 58, 80, 112, 151, 78, 129, 91, 213, 177, 8, 242, 112, 242, 166, 74, 114, }, { 193, 22, 117, 188, 128, 66, 105, 96, 241, 104, 32, 117, 32, 2, 180, 111, }, { 40, 164, 50, 252, 120, 228, 168, 34, 57, 196, 30, 50, 30, 216, 26, 3, }, { 241, 111, 232, 20, 208, 250, 24, 92, 223, 81, 52, 232, 52, 146, 25, 109, }, { 203, 63, 152, 131, 158, 123, 67, 137, 110, 89, 198, 152, 198, 52, 83, 31, }, { 146, 206, 221, 108, 117, 163, 72, 87, 88, 116, 140, 221, 140, 120, 79, 192, }, { 135, 173, 128, 75, 74, 54, 114, 214, 236, 154, 243, 128, 243, 19, 7, 71, }, { 231, 95, 121, 216, 234, 133, 144, 174, 176, 232, 219, 121, 219, 240, 158, 67, }, { 62, 148, 163, 48, 66, 155, 32, 208, 86, 125, 241, 163, 241, 186, 157, 45, }, { 250, 119, 65, 114, 205, 36, 92, 37, 9, 236, 162, 65, 162, 163, 187, 122, }, { 13, 190, 242, 115, 23, 201, 227, 159, 163, 19, 117, 242, 117, 35, 255, 134, }, { 81, 186, 32, 98, 243, 236, 253, 212, 59, 199, 76, 32, 76, 116, 113, 97, }, { 182, 229, 89, 186, 25, 105, 109, 122, 139, 47, 151, 89, 151, 132, 239, 34, }, { 123, 124, 154, 44, 141, 5, 137, 21, 144, 216, 178, 154, 178, 162, 225, 172, }, { 116, 160, 224, 237, 156, 193, 182, 105, 161, 16, 39, 224, 39, 143, 148, 228, }, { 63, 165, 231, 105, 65, 124, 78, 64, 31, 241, 129, 231, 129, 189, 216, 74, }, { 47, 51, 45, 176, 113, 20, 97, 84, 5, 230, 141, 45, 141, 205, 2, 245, }, { 125, 218, 193, 57, 135, 18, 46, 243, 229, 118, 81, 193, 81, 176, 188, 61, }, { 187, 91, 171, 201, 14, 160, 142, 229, 40, 60, 226, 171, 226, 167, 16, 164, }, { 73, 103, 143, 54, 219, 176, 36, 202, 44, 58, 70, 143, 70, 60, 198, 96, }, { 43, 247, 254, 23, 125, 14, 26, 81, 226, 147, 142, 254, 142, 209, 213, 170, }, { 153, 214, 116, 10, 104, 125, 12, 46, 142, 201, 26, 116, 26, 73, 237, 215, }, { 2, 98, 136, 178, 6, 13, 220, 227, 146, 219, 224, 136, 224, 14, 138, 206, }, { 55, 238, 130, 228, 89, 72, 184, 74, 18, 27, 135, 130, 135, 133, 181, 244, }, { 179, 16, 206, 68, 22, 148, 120, 239, 37, 214, 228, 206, 228, 159, 125, 26, }, { 115, 55, 255, 161, 149, 49, 127, 31, 157, 50, 180, 255, 180, 154, 140, 18, }, { 100, 54, 42, 52, 172, 169, 153, 125, 187, 7, 43, 42, 43, 255, 78, 91, }, { 220, 62, 77, 22, 167, 227, 165, 235, 72, 108, 89, 77, 89, 81, 145, 86, }, { 216, 250, 158, 177, 171, 249, 222, 238, 175, 25, 90, 158, 90, 77, 70, 9, }, { 201, 93, 16, 49, 152, 118, 159, 106, 252, 130, 38, 16, 38, 58, 217, 209, }, { 171, 205, 97, 16, 62, 200, 161, 241, 50, 43, 238, 97, 238, 215, 202, 27, }, { 51, 42, 81, 67, 85, 82, 195, 79, 245, 110, 132, 81, 132, 153, 98, 171, }, { 107, 234, 80, 245, 189, 109, 166, 1, 138, 207, 190, 80, 190, 210, 59, 19, }, { 204, 168, 135, 207, 151, 139, 138, 255, 82, 123, 85, 135, 85, 33, 75, 233, }, { 144, 172, 85, 222, 115, 174, 148, 180, 202, 175, 108, 85, 108, 118, 197, 14, }, { 208, 177, 251, 60, 179, 205, 40, 228, 162, 243, 92, 251, 92, 117, 43, 183, }, { 172, 90, 126, 92, 55, 56, 104, 135, 14, 9, 125, 126, 125, 194, 210, 237, }, { 191, 159, 120, 110, 2, 186, 245, 224, 207, 73, 225, 120, 225, 187, 199, 251, }, { 218, 152, 22, 3, 173, 244, 2, 13, 61, 194, 186, 22, 186, 67, 204, 199, }, { 167, 66, 215, 58, 42, 230, 44, 254, 216, 180, 235, 215, 235, 243, 112, 250, }, { 94, 102, 90, 163, 226, 40, 194, 168, 10, 15, 217, 90, 217, 89, 4, 41, }, { 152, 231, 48, 83, 107, 154, 98, 190, 199, 69, 106, 48, 106, 78, 168, 176, }, { 122, 77, 222, 117, 142, 226, 231, 133, 217, 84, 194, 222, 194, 165, 164, 203, }, { 19, 197, 6, 50, 53, 130, 157, 103, 193, 64, 156, 6, 156, 121, 21, 22, }, { 106, 219, 20, 172, 190, 138, 200, 145, 195, 67, 206, 20, 206, 213, 126, 116, }, { 64, 29, 174, 226, 192, 99, 188, 80, 104, 92, 48, 174, 48, 3, 238, 185, }, { 168, 158, 173, 251, 59, 34, 19, 130, 233, 124, 126, 173, 126, 222, 5, 178, }, { 91, 147, 205, 93, 237, 213, 215, 61, 164, 246, 170, 205, 170, 66, 150, 17, }, { 235, 208, 207, 242, 254, 171, 29, 161, 90, 119, 222, 207, 222, 212, 36, 162, }, { 102, 84, 162, 134, 170, 164, 69, 158, 41, 220, 203, 162, 203, 241, 196, 149, }, { 86, 45, 63, 46, 250, 28, 52, 162, 7, 229, 223, 63, 223, 97, 105, 151, }, { 129, 11, 219, 94, 64, 33, 213, 48, 153, 52, 16, 219, 16, 1, 90, 214, }, { 119, 243, 44, 6, 153, 43, 4, 26, 122, 71, 183, 44, 183, 134, 91, 77, }, { 87, 28, 123, 119, 249, 251, 90, 50, 78, 105, 175, 123, 175, 102, 44, 240, }, { 78, 240, 144, 122, 210, 64, 237, 188, 16, 24, 213, 144, 213, 41, 222, 150, }, { 141, 132, 109, 116, 84, 15, 88, 63, 115, 171, 21, 109, 21, 37, 224, 55, }, { 176, 67, 2, 175, 19, 126, 202, 156, 254, 129, 116, 2, 116, 150, 178, 179, }, { 243, 13, 96, 166, 214, 247, 196, 191, 77, 138, 212, 96, 212, 156, 147, 163, }, { 148, 104, 134, 121, 127, 180, 239, 177, 45, 218, 111, 134, 111, 106, 18, 81, }, { 32, 239, 87, 113, 96, 208, 94, 40, 52, 46, 24, 87, 24, 224, 119, 189, }, { 36, 43, 132, 214, 108, 202, 37, 45, 211, 91, 27, 132, 27, 252, 160, 226, }, { 215, 38, 228, 112, 186, 61, 225, 146, 158, 209, 207, 228, 207, 96, 51, 65, }, { 20, 82, 25, 126, 60, 114, 84, 17, 253, 98, 15, 25, 15, 108, 13, 224, }, { 158, 65, 107, 70, 97, 141, 197, 88, 178, 235, 137, 107, 137, 92, 245, 33, }, { 5, 245, 151, 254, 15, 253, 21, 149, 174, 249, 115, 151, 115, 27, 146, 56, }, { 198, 129, 106, 240, 137, 178, 160, 22, 205, 74, 179, 106, 179, 23, 172, 153, }, { 237, 118, 148, 231, 244, 188, 186, 71, 47, 217, 61, 148, 61, 198, 121, 51, }, { 200, 108, 84, 104, 155, 145, 241, 250, 181, 14, 86, 84, 86, 61, 156, 182, }, { 155, 180, 252, 184, 110, 112, 208, 205, 28, 18, 250, 252, 250, 71, 103, 25, }, { 189, 253, 240, 220, 4, 183, 41, 3, 93, 146, 1, 240, 1, 181, 77, 53, }, { 132, 254, 76, 160, 79, 220, 192, 165, 55, 205, 99, 76, 99, 26, 200, 238, }, { 195, 116, 253, 14, 134, 79, 181, 131, 99, 179, 192, 253, 192, 12, 62, 161, }, { 202, 14, 220, 218, 157, 156, 45, 25, 39, 213, 182, 220, 182, 51, 22, 120, }, { 138, 19, 114, 56, 93, 255, 145, 73, 79, 137, 134, 114, 134, 48, 248, 193, }, { 52, 189, 78, 15, 92, 162, 10, 57, 201, 76, 23, 78, 23, 140, 122, 93, }, { 38, 73, 12, 100, 106, 199, 249, 206, 65, 128, 251, 12, 251, 242, 42, 44, }, { 16, 150, 202, 217, 48, 104, 47, 20, 26, 23, 12, 202, 12, 112, 218, 191, }, { 37, 26, 192, 143, 111, 45, 75, 189, 154, 215, 107, 192, 107, 251, 229, 133, }, { 227, 155, 170, 127, 230, 159, 235, 171, 87, 157, 216, 170, 216, 236, 73, 28, }, { 99, 161, 53, 120, 165, 89, 80, 11, 135, 37, 184, 53, 184, 234, 86, 173, }, { 10, 41, 237, 63, 30, 57, 42, 233, 159, 49, 230, 237, 230, 54, 231, 112, }, { 79, 193, 212, 35, 209, 167, 131, 44, 89, 148, 165, 212, 165, 46, 155, 241, }, { 139, 34, 54, 97, 94, 24, 255, 217, 6, 5, 246, 54, 246, 55, 189, 166, }, { 199, 176, 46, 169, 138, 85, 206, 134, 132, 198, 195, 46, 195, 16, 233, 254, }, { 103, 101, 230, 223, 169, 67, 43, 14, 96, 80, 187, 230, 187, 246, 129, 242, }, { 45, 81, 165, 2, 119, 25, 189, 183, 151, 61, 109, 165, 109, 195, 136, 59, }, { 254, 179, 146, 213, 193, 62, 39, 32, 238, 153, 161, 146, 161, 191, 108, 37, }, { 69, 232, 57, 28, 207, 158, 169, 197, 198, 165, 67, 57, 67, 24, 124, 129, }, { 160, 213, 200, 118, 35, 22, 229, 136, 228, 150, 120, 200, 120, 230, 104, 12, }, { 128, 58, 159, 7, 67, 198, 187, 160, 208, 184, 96, 159, 96, 6, 31, 177, }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, { 74, 52, 67, 221, 222, 90, 150, 185, 247, 109, 214, 67, 214, 53, 9, 201, }, { 238, 37, 88, 12, 241, 86, 8, 52, 244, 142, 173, 88, 173, 207, 182, 154, }, { 76, 146, 24, 200, 212, 77, 49, 95, 130, 195, 53, 24, 53, 39, 84, 88, }, }, { { 171, 218, 127, 147, 117, 99, 59, 34, 183, 64, 166, 132, 194, 34, 9, 218, }, { 187, 217, 244, 166, 193, 27, 245, 225, 84, 162, 197, 36, 149, 225, 221, 217, }, { 131, 60, 14, 2, 132, 175, 3, 231, 34, 54, 176, 87, 166, 231, 8, 60, }, { 13, 140, 3, 64, 237, 196, 96, 208, 202, 15, 162, 114, 39, 208, 195, 140, }, { 58, 221, 211, 234, 178, 187, 159, 38, 82, 25, 65, 103, 224, 38, 46, 221, }, { 74, 212, 228, 97, 56, 16, 176, 42, 190, 242, 171, 129, 134, 42, 71, 212, }, { 232, 242, 202, 46, 141, 169, 57, 152, 139, 100, 199, 95, 6, 152, 184, 242, }, { 235, 214, 22, 71, 224, 64, 133, 168, 189, 78, 233, 65, 93, 168, 223, 214, }, { 143, 172, 248, 101, 243, 141, 182, 39, 250, 158, 8, 47, 9, 39, 87, 172, }, { 190, 181, 83, 29, 118, 227, 242, 177, 14, 220, 183, 6, 120, 177, 116, 181, }, { 15, 180, 42, 14, 26, 203, 9, 240, 238, 130, 150, 102, 244, 240, 56, 180, }, { 109, 134, 191, 254, 211, 23, 129, 31, 197, 6, 43, 52, 22, 31, 126, 134, }, { 10, 216, 141, 181, 173, 51, 14, 160, 180, 252, 228, 68, 25, 160, 145, 216, }, { 41, 250, 132, 182, 107, 42, 237, 213, 135, 209, 12, 217, 236, 213, 157, 250, }, { 23, 87, 5, 192, 244, 143, 160, 179, 157, 17, 37, 150, 105, 179, 134, 87, }, { 176, 29, 140, 52, 246, 206, 46, 81, 242, 249, 59, 106, 4, 81, 208, 29, }, { 197, 120, 28, 4, 203, 157, 6, 13, 68, 108, 163, 174, 143, 13, 16, 120, }, { 76, 156, 159, 179, 226, 1, 11, 74, 210, 166, 247, 189, 48, 74, 137, 156, }, { 195, 48, 103, 214, 17, 140, 189, 109, 40, 56, 255, 146, 57, 109, 222, 48, }, { 181, 113, 43, 143, 65, 54, 41, 1, 168, 135, 73, 72, 233, 1, 121, 113, }, { 116, 121, 101, 23, 167, 181, 253, 76, 164, 50, 130, 206, 3, 76, 92, 121, }, { 148, 107, 11, 194, 112, 32, 163, 84, 191, 39, 149, 193, 207, 84, 142, 107, }, { 29, 143, 136, 117, 89, 188, 174, 19, 41, 237, 193, 210, 112, 19, 23, 143, }, { 37, 106, 114, 209, 28, 8, 88, 21, 95, 121, 180, 161, 67, 21, 194, 106, }, { 72, 236, 205, 47, 207, 31, 217, 10, 154, 127, 159, 149, 85, 10, 188, 236, }, { 218, 207, 189, 63, 101, 46, 193, 62, 73, 12, 86, 104, 44, 62, 252, 207, }, { 221, 155, 51, 202, 37, 217, 175, 78, 55, 255, 16, 94, 18, 78, 174, 155, }, { 233, 238, 63, 9, 23, 79, 236, 136, 153, 195, 221, 85, 142, 136, 36, 238, }, { 234, 202, 227, 96, 122, 166, 80, 184, 175, 233, 243, 75, 213, 184, 67, 202, }, { 115, 45, 235, 226, 231, 66, 147, 60, 218, 193, 196, 248, 61, 60, 14, 45, }, { 46, 174, 10, 67, 43, 221, 131, 165, 249, 34, 74, 239, 210, 165, 207, 174, }, { 245, 125, 66, 91, 212, 21, 151, 139, 162, 137, 6, 141, 118, 139, 175, 125, }, { 38, 78, 174, 184, 113, 225, 228, 37, 105, 83, 154, 191, 24, 37, 165, 78, }, { 208, 23, 48, 138, 200, 29, 207, 158, 253, 240, 178, 44, 53, 158, 109, 23, }, { 196, 100, 233, 35, 81, 123, 211, 29, 86, 203, 185, 164, 7, 29, 140, 100, }, { 243, 53, 57, 137, 14, 4, 44, 235, 206, 221, 90, 177, 192, 235, 97, 53, }, { 123, 205, 79, 25, 189, 126, 244, 188, 74, 176, 20, 168, 247, 188, 100, 205, }, { 77, 128, 106, 148, 120, 231, 222, 90, 192, 1, 237, 183, 184, 90, 21, 128, }, { 69, 96, 206, 111, 34, 219, 185, 218, 80, 112, 61, 231, 114, 218, 127, 96, }, { 169, 226, 86, 221, 130, 108, 82, 2, 147, 205, 146, 144, 17, 2, 242, 226, }, { 94, 167, 61, 200, 161, 118, 172, 169, 21, 201, 160, 9, 180, 169, 166, 167, }, { 216, 247, 148, 113, 146, 33, 168, 30, 109, 129, 98, 124, 255, 30, 7, 247, }, { 126, 161, 232, 162, 10, 134, 243, 236, 16, 206, 102, 138, 26, 236, 205, 161, }, { 242, 41, 204, 174, 148, 226, 249, 251, 220, 122, 64, 187, 72, 251, 253, 41, }, { 144, 27, 89, 94, 93, 62, 113, 20, 247, 254, 253, 233, 170, 20, 187, 27, }, { 119, 93, 185, 126, 202, 92, 65, 124, 146, 24, 172, 208, 88, 124, 59, 93, }, { 83, 43, 62, 136, 76, 178, 204, 121, 223, 198, 2, 123, 147, 121, 101, 43, }, { 229, 126, 201, 110, 96, 109, 89, 72, 65, 107, 101, 45, 33, 72, 123, 126, }, { 73, 240, 56, 8, 85, 249, 12, 26, 136, 216, 133, 159, 221, 26, 32, 240, }, { 152, 251, 253, 165, 7, 2, 22, 148, 103, 143, 45, 185, 96, 148, 209, 251, }, { 19, 39, 87, 92, 217, 145, 114, 243, 213, 200, 77, 190, 12, 243, 179, 39, }, { 67, 40, 181, 189, 248, 202, 2, 186, 60, 36, 97, 219, 196, 186, 177, 40, }, { 220, 135, 198, 237, 191, 63, 122, 94, 37, 88, 10, 84, 154, 94, 50, 135, }, { 199, 64, 53, 74, 60, 146, 111, 45, 96, 225, 151, 186, 92, 45, 235, 64, }, { 160, 30, 7, 1, 66, 182, 224, 146, 17, 27, 88, 202, 83, 146, 4, 30, }, { 204, 132, 77, 216, 11, 71, 180, 157, 198, 186, 105, 244, 205, 157, 230, 132, }, { 20, 115, 217, 169, 153, 102, 28, 131, 171, 59, 11, 136, 50, 131, 225, 115, }, { 82, 55, 203, 175, 214, 84, 25, 105, 205, 97, 24, 113, 27, 105, 249, 55, }, { 47, 178, 255, 100, 177, 59, 86, 181, 235, 133, 80, 229, 90, 181, 83, 178, }, { 71, 88, 231, 33, 213, 212, 208, 250, 116, 253, 9, 243, 161, 250, 132, 88, }, { 166, 86, 124, 211, 152, 167, 91, 242, 125, 79, 4, 246, 229, 242, 202, 86, }, { 95, 187, 200, 239, 59, 144, 121, 185, 7, 110, 186, 3, 60, 185, 58, 187, }, { 227, 54, 178, 188, 186, 124, 226, 40, 45, 63, 57, 17, 151, 40, 181, 54, }, { 184, 253, 40, 207, 172, 242, 73, 209, 98, 136, 235, 58, 206, 209, 186, 253, }, { 167, 74, 137, 244, 2, 65, 142, 226, 111, 232, 30, 252, 109, 226, 86, 74, }, { 192, 20, 187, 191, 124, 101, 1, 93, 30, 18, 209, 140, 98, 93, 185, 20, }, { 35, 34, 9, 3, 198, 25, 227, 117, 51, 45, 232, 157, 245, 117, 12, 34, }, { 42, 222, 88, 223, 6, 195, 81, 229, 177, 251, 34, 199, 183, 229, 250, 222, }, { 98, 50, 149, 240, 201, 220, 136, 239, 43, 132, 189, 82, 226, 239, 70, 50, }, { 125, 133, 52, 203, 103, 111, 79, 220, 38, 228, 72, 148, 65, 220, 170, 133, }, { 49, 25, 171, 120, 133, 110, 68, 150, 244, 66, 191, 41, 113, 150, 35, 25, }, { 48, 5, 94, 95, 31, 136, 145, 134, 230, 229, 165, 35, 249, 134, 191, 5, }, { 193, 8, 78, 152, 230, 131, 212, 77, 12, 181, 203, 134, 234, 77, 37, 8, }, { 32, 6, 213, 106, 171, 240, 95, 69, 5, 7, 198, 131, 174, 69, 107, 6, }, { 138, 192, 95, 222, 68, 117, 177, 119, 160, 224, 122, 13, 228, 119, 254, 192, }, { 215, 67, 190, 127, 136, 234, 161, 238, 131, 3, 244, 26, 11, 238, 63, 67, }, { 61, 137, 93, 31, 242, 76, 241, 86, 44, 234, 7, 81, 222, 86, 124, 137, }, { 191, 169, 166, 58, 236, 5, 39, 161, 28, 123, 173, 12, 240, 161, 232, 169, }, { 198, 92, 192, 109, 166, 116, 186, 61, 114, 70, 141, 176, 212, 61, 119, 92, }, { 114, 49, 30, 197, 125, 164, 70, 44, 200, 102, 222, 242, 181, 44, 146, 49, }, { 219, 211, 72, 24, 255, 200, 20, 46, 91, 171, 76, 98, 164, 46, 96, 211, }, { 21, 111, 44, 142, 3, 128, 201, 147, 185, 156, 17, 130, 186, 147, 125, 111, }, { 153, 231, 8, 130, 157, 228, 195, 132, 117, 40, 55, 179, 232, 132, 77, 231, }, { 75, 200, 17, 70, 162, 246, 101, 58, 172, 85, 177, 139, 14, 58, 219, 200, }, { 52, 117, 12, 195, 50, 150, 67, 198, 174, 60, 205, 11, 156, 198, 138, 117, }, { 96, 10, 188, 190, 62, 211, 225, 207, 15, 9, 137, 70, 49, 207, 189, 10, }, { 146, 35, 112, 16, 170, 49, 24, 52, 211, 115, 201, 253, 121, 52, 64, 35, }, { 172, 142, 241, 102, 53, 148, 85, 82, 201, 179, 224, 178, 252, 82, 91, 142, }, { 110, 162, 99, 151, 190, 254, 61, 47, 243, 44, 5, 42, 77, 47, 25, 162, }, { 161, 2, 242, 38, 216, 80, 53, 130, 3, 188, 66, 192, 219, 130, 152, 2, }, { 129, 4, 39, 76, 115, 160, 106, 199, 6, 187, 132, 67, 117, 199, 243, 4, }, { 59, 193, 38, 205, 40, 93, 74, 54, 64, 190, 91, 109, 104, 54, 178, 193, }, { 25, 255, 218, 233, 116, 162, 124, 83, 97, 52, 169, 250, 21, 83, 34, 255, }, { 228, 98, 60, 73, 250, 139, 140, 88, 83, 204, 127, 39, 169, 88, 231, 98, }, { 44, 150, 35, 13, 220, 210, 234, 133, 221, 175, 126, 251, 1, 133, 52, 150, }, { 189, 145, 143, 116, 27, 10, 78, 129, 56, 246, 153, 24, 35, 129, 19, 145, }, { 182, 85, 247, 230, 44, 223, 149, 49, 158, 173, 103, 86, 178, 49, 30, 85, }, { 211, 51, 236, 227, 165, 244, 115, 174, 203, 218, 156, 50, 110, 174, 10, 51, }, { 231, 70, 224, 32, 151, 98, 48, 104, 101, 230, 81, 57, 242, 104, 128, 70, }, { 155, 223, 33, 204, 106, 235, 170, 164, 81, 165, 3, 167, 59, 164, 182, 223, }, { 140, 136, 36, 12, 158, 100, 10, 23, 204, 180, 38, 49, 82, 23, 48, 136, }, { 4, 112, 82, 156, 45, 30, 210, 64, 72, 217, 104, 40, 101, 64, 53, 112, }, { 134, 80, 169, 185, 51, 87, 4, 183, 120, 72, 194, 117, 75, 183, 161, 80, }, { 239, 166, 68, 219, 205, 94, 87, 232, 245, 151, 129, 105, 56, 232, 234, 166, }, { 50, 61, 119, 17, 232, 135, 248, 166, 194, 104, 145, 55, 42, 166, 68, 61, }, { 11, 196, 120, 146, 55, 213, 219, 176, 166, 91, 254, 78, 145, 176, 13, 196, }, { 158, 179, 134, 119, 221, 19, 173, 244, 11, 219, 113, 133, 214, 244, 31, 179, }, { 128, 24, 210, 107, 233, 70, 191, 215, 20, 28, 158, 73, 253, 215, 111, 24, }, { 28, 147, 125, 82, 195, 90, 123, 3, 59, 74, 219, 216, 248, 3, 139, 147, }, { 177, 1, 121, 19, 108, 40, 251, 65, 224, 94, 33, 96, 140, 65, 76, 1, }, { 212, 103, 98, 22, 229, 3, 29, 222, 181, 41, 218, 4, 80, 222, 88, 103, }, { 122, 209, 186, 62, 39, 152, 33, 172, 88, 23, 14, 162, 127, 172, 248, 209, }, { 91, 203, 154, 115, 22, 142, 171, 249, 79, 183, 210, 43, 89, 249, 15, 203, }, { 163, 58, 219, 104, 47, 95, 92, 162, 39, 49, 118, 212, 8, 162, 99, 58, }, { 249, 237, 180, 60, 163, 55, 34, 75, 122, 33, 190, 245, 217, 75, 240, 237, }, { 51, 33, 130, 54, 114, 97, 45, 182, 208, 207, 139, 61, 162, 182, 216, 33, }, { 104, 234, 24, 69, 100, 239, 134, 79, 159, 120, 89, 22, 251, 79, 215, 234, }, { 150, 83, 34, 140, 135, 47, 202, 116, 155, 170, 161, 213, 28, 116, 117, 83, }, { 70, 68, 18, 6, 79, 50, 5, 234, 102, 90, 19, 249, 41, 234, 24, 68, }, { 2, 56, 41, 78, 247, 15, 105, 32, 36, 141, 52, 20, 211, 32, 251, 56, }, { 255, 165, 207, 238, 121, 38, 153, 43, 22, 117, 226, 201, 111, 43, 62, 165, }, { 149, 119, 254, 229, 234, 198, 118, 68, 173, 128, 143, 203, 71, 68, 18, 119, }, { 100, 122, 238, 34, 19, 205, 51, 143, 71, 208, 225, 110, 84, 143, 136, 122, }, { 64, 12, 105, 212, 149, 35, 190, 138, 10, 14, 79, 197, 159, 138, 214, 12, }, { 65, 16, 156, 243, 15, 197, 107, 154, 24, 169, 85, 207, 23, 154, 74, 16, }, { 22, 75, 240, 231, 110, 105, 117, 163, 143, 182, 63, 156, 225, 163, 26, 75, }, { 14, 168, 223, 41, 128, 45, 220, 224, 252, 37, 140, 108, 124, 224, 164, 168, }, { 185, 225, 221, 232, 54, 20, 156, 193, 112, 47, 241, 48, 70, 193, 38, 225, }, { 253, 157, 230, 160, 142, 41, 240, 11, 50, 248, 214, 221, 188, 11, 197, 157, }, { 111, 190, 150, 176, 36, 24, 232, 63, 225, 139, 31, 32, 197, 63, 133, 190, }, { 145, 7, 172, 121, 199, 216, 164, 4, 229, 89, 231, 227, 34, 4, 39, 7, }, { 165, 114, 160, 186, 245, 78, 231, 194, 75, 101, 42, 232, 190, 194, 173, 114, }, { 207, 160, 145, 177, 102, 174, 8, 173, 240, 144, 71, 234, 150, 173, 129, 160, }, { 86, 71, 153, 51, 251, 74, 203, 41, 133, 184, 112, 89, 126, 41, 204, 71, }, { 186, 197, 1, 129, 91, 253, 32, 241, 70, 5, 223, 46, 29, 241, 65, 197, }, { 97, 22, 73, 153, 164, 53, 52, 223, 29, 174, 147, 76, 185, 223, 33, 22, }, { 24, 227, 47, 206, 238, 68, 169, 67, 115, 147, 179, 240, 157, 67, 190, 227, }, { 84, 127, 176, 125, 12, 69, 162, 9, 161, 53, 68, 77, 173, 9, 55, 127, }, { 139, 220, 170, 249, 222, 147, 100, 103, 178, 71, 96, 7, 108, 103, 98, 220, }, { 62, 173, 129, 118, 159, 165, 77, 102, 26, 192, 41, 79, 133, 102, 27, 173, }, { 90, 215, 111, 84, 140, 104, 126, 233, 93, 16, 200, 33, 209, 233, 147, 215, }, { 206, 188, 100, 150, 252, 72, 221, 189, 226, 55, 93, 224, 30, 189, 29, 188, }, { 247, 69, 107, 21, 35, 26, 254, 171, 134, 4, 50, 153, 165, 171, 84, 69, }, { 210, 47, 25, 196, 63, 18, 166, 190, 217, 125, 134, 56, 230, 190, 150, 47, }, { 130, 32, 251, 37, 30, 73, 214, 247, 48, 145, 170, 93, 46, 247, 148, 32, }, { 179, 57, 80, 93, 155, 39, 146, 97, 196, 211, 21, 116, 95, 97, 183, 57, }, { 180, 109, 222, 168, 219, 208, 252, 17, 186, 32, 83, 66, 97, 17, 229, 109, }, { 214, 95, 75, 88, 18, 12, 116, 254, 145, 164, 238, 16, 131, 254, 163, 95, }, { 225, 14, 155, 242, 77, 115, 139, 8, 9, 178, 13, 5, 68, 8, 78, 14, }, { 194, 44, 146, 241, 139, 106, 104, 125, 58, 159, 229, 152, 177, 125, 66, 44, }, { 93, 131, 225, 161, 204, 159, 16, 153, 35, 227, 142, 23, 239, 153, 193, 131, }, { 250, 201, 104, 85, 206, 222, 158, 123, 76, 11, 144, 235, 130, 123, 151, 201, }, { 164, 110, 85, 157, 111, 168, 50, 210, 89, 194, 48, 226, 54, 210, 49, 110, }, { 31, 183, 161, 59, 174, 179, 199, 51, 13, 96, 245, 198, 163, 51, 236, 183, }, { 12, 144, 246, 103, 119, 34, 181, 192, 216, 168, 184, 120, 175, 192, 95, 144, }, { 1, 28, 245, 39, 154, 230, 213, 16, 18, 167, 26, 10, 136, 16, 156, 28, }, { 45, 138, 214, 42, 70, 52, 63, 149, 207, 8, 100, 241, 137, 149, 168, 138, }, { 103, 94, 50, 75, 126, 36, 143, 191, 113, 250, 207, 112, 15, 191, 239, 94, }, { 226, 42, 71, 155, 32, 154, 55, 56, 63, 152, 35, 27, 31, 56, 41, 42, }, { 9, 252, 81, 220, 192, 218, 178, 144, 130, 214, 202, 90, 66, 144, 246, 252, }, { 87, 91, 108, 20, 97, 172, 30, 57, 151, 31, 106, 83, 246, 57, 80, 91, }, { 17, 31, 126, 18, 46, 158, 27, 211, 241, 69, 121, 170, 223, 211, 72, 31, }, { 183, 73, 2, 193, 182, 57, 64, 33, 140, 10, 125, 92, 58, 33, 130, 73, }, { 223, 163, 26, 132, 210, 214, 198, 110, 19, 114, 36, 74, 193, 110, 85, 163, }, { 106, 210, 49, 11, 147, 224, 239, 111, 187, 245, 109, 2, 40, 111, 44, 210, }, { 147, 63, 133, 55, 48, 215, 205, 36, 193, 212, 211, 247, 241, 36, 220, 63, }, { 36, 118, 135, 246, 134, 238, 141, 5, 77, 222, 174, 171, 203, 5, 94, 118, }, { 127, 189, 29, 133, 144, 96, 38, 252, 2, 105, 124, 128, 146, 252, 81, 189, }, { 102, 66, 199, 108, 228, 194, 90, 175, 99, 93, 213, 122, 135, 175, 115, 66, }, { 254, 185, 58, 201, 227, 192, 76, 59, 4, 210, 248, 195, 231, 59, 162, 185, }, { 7, 84, 142, 245, 64, 247, 110, 112, 126, 243, 70, 54, 62, 112, 82, 84, }, { 68, 124, 59, 72, 184, 61, 108, 202, 66, 215, 39, 237, 250, 202, 227, 124, }, { 63, 177, 116, 81, 5, 67, 152, 118, 8, 103, 51, 69, 13, 118, 135, 177, }, { 248, 241, 65, 27, 57, 209, 247, 91, 104, 134, 164, 255, 81, 91, 108, 241, }, { 6, 72, 123, 210, 218, 17, 187, 96, 108, 84, 92, 60, 182, 96, 206, 72, }, { 202, 204, 54, 10, 209, 86, 15, 253, 170, 238, 53, 200, 123, 253, 40, 204, }, { 173, 146, 4, 65, 175, 114, 128, 66, 219, 20, 250, 184, 116, 66, 199, 146, }, { 43, 194, 173, 248, 156, 37, 132, 245, 163, 92, 56, 205, 63, 245, 102, 194, }, { 174, 182, 216, 40, 194, 155, 60, 114, 237, 62, 212, 166, 47, 114, 160, 182, }, { 34, 62, 252, 36, 92, 255, 54, 101, 33, 138, 242, 151, 125, 101, 144, 62, }, { 57, 249, 15, 131, 223, 82, 35, 22, 100, 51, 111, 121, 187, 22, 73, 249, }, { 222, 191, 239, 163, 72, 48, 19, 126, 1, 213, 62, 64, 73, 126, 201, 191, }, { 30, 171, 84, 28, 52, 85, 18, 35, 31, 199, 239, 204, 43, 35, 112, 171, }, { 168, 254, 163, 250, 24, 138, 135, 18, 129, 106, 136, 154, 153, 18, 110, 254, }, { 88, 239, 70, 26, 123, 103, 23, 201, 121, 157, 252, 53, 2, 201, 104, 239, }, { 136, 248, 118, 144, 179, 122, 216, 87, 132, 109, 78, 25, 55, 87, 5, 248, }, { 154, 195, 212, 235, 240, 13, 127, 180, 67, 2, 25, 173, 179, 180, 42, 195, }, { 105, 246, 237, 98, 254, 9, 83, 95, 141, 223, 67, 28, 115, 95, 75, 246, }, { 40, 230, 113, 145, 241, 204, 56, 197, 149, 118, 22, 211, 100, 197, 1, 230, }, { 101, 102, 27, 5, 137, 43, 230, 159, 85, 119, 251, 100, 220, 159, 20, 102, }, { 213, 123, 151, 49, 127, 229, 200, 206, 167, 142, 192, 14, 216, 206, 196, 123, }, { 124, 153, 193, 236, 253, 137, 154, 204, 52, 67, 82, 158, 201, 204, 54, 153, }, { 188, 141, 122, 83, 129, 236, 155, 145, 42, 81, 131, 18, 171, 145, 143, 141, }, { 56, 229, 250, 164, 69, 180, 246, 6, 118, 148, 117, 115, 51, 6, 213, 229, }, { 79, 184, 67, 218, 143, 232, 183, 122, 228, 140, 217, 163, 107, 122, 238, 184, }, { 224, 18, 110, 213, 215, 149, 94, 24, 27, 21, 23, 15, 204, 24, 210, 18, }, { 39, 82, 91, 159, 235, 7, 49, 53, 123, 244, 128, 181, 144, 53, 57, 82, }, { 118, 65, 76, 89, 80, 186, 148, 108, 128, 191, 182, 218, 208, 108, 167, 65, }, { 120, 233, 147, 112, 208, 151, 72, 140, 124, 154, 58, 182, 172, 140, 3, 233, }, { 137, 228, 131, 183, 41, 156, 13, 71, 150, 202, 84, 19, 191, 71, 153, 228, }, { 141, 148, 209, 43, 4, 130, 223, 7, 222, 19, 60, 59, 218, 7, 172, 148, }, { 175, 170, 45, 15, 88, 125, 233, 98, 255, 153, 206, 172, 167, 98, 60, 170, }, { 159, 175, 115, 80, 71, 245, 120, 228, 25, 124, 107, 143, 94, 228, 131, 175, }, { 132, 104, 128, 247, 196, 88, 109, 151, 92, 197, 246, 97, 152, 151, 90, 104, }, { 230, 90, 21, 7, 13, 132, 229, 120, 119, 65, 75, 51, 122, 120, 28, 90, }, { 241, 13, 16, 199, 249, 11, 69, 203, 234, 80, 110, 165, 19, 203, 154, 13, }, { 99, 46, 96, 215, 83, 58, 93, 255, 57, 35, 167, 88, 106, 255, 218, 46, }, { 81, 19, 23, 198, 187, 189, 165, 89, 251, 75, 54, 111, 64, 89, 158, 19, }, { 200, 244, 31, 68, 38, 89, 102, 221, 142, 99, 1, 220, 168, 221, 211, 244, }, { 3, 36, 220, 105, 109, 233, 188, 48, 54, 42, 46, 30, 91, 48, 103, 36, }, { 237, 158, 109, 149, 58, 81, 62, 200, 209, 26, 181, 125, 235, 200, 17, 158, }, { 112, 9, 55, 139, 138, 171, 47, 12, 236, 235, 234, 230, 102, 12, 105, 9, }, { 60, 149, 168, 56, 104, 170, 36, 70, 62, 77, 29, 91, 86, 70, 224, 149, }, { 142, 176, 13, 66, 105, 107, 99, 55, 232, 57, 18, 37, 129, 55, 203, 176, }, { 217, 235, 97, 86, 8, 199, 125, 14, 127, 38, 120, 118, 119, 14, 155, 235, }, { 16, 3, 139, 53, 180, 120, 206, 195, 227, 226, 99, 160, 87, 195, 212, 3, }, { 26, 219, 6, 128, 25, 75, 192, 99, 87, 30, 135, 228, 78, 99, 69, 219, }, { 157, 151, 90, 30, 176, 250, 17, 196, 61, 241, 95, 155, 141, 196, 120, 151, }, { 238, 186, 177, 252, 87, 184, 130, 248, 231, 48, 155, 99, 176, 248, 118, 186, }, { 203, 208, 195, 45, 75, 176, 218, 237, 184, 73, 47, 194, 243, 237, 180, 208, }, { 151, 79, 215, 171, 29, 201, 31, 100, 137, 13, 187, 223, 148, 100, 233, 79, }, { 201, 232, 234, 99, 188, 191, 179, 205, 156, 196, 27, 214, 32, 205, 79, 232, }, { 121, 245, 102, 87, 74, 113, 157, 156, 110, 61, 32, 188, 36, 156, 159, 245, }, { 178, 37, 165, 122, 1, 193, 71, 113, 214, 116, 15, 126, 215, 113, 43, 37, }, { 53, 105, 249, 228, 168, 112, 150, 214, 188, 155, 215, 1, 20, 214, 22, 105, }, { 108, 154, 74, 217, 73, 241, 84, 15, 215, 161, 49, 62, 158, 15, 226, 154, }, { 156, 139, 175, 57, 42, 28, 196, 212, 47, 86, 69, 145, 5, 212, 228, 139, }, { 27, 199, 243, 167, 131, 173, 21, 115, 69, 185, 157, 238, 198, 115, 217, 199, }, { 5, 108, 167, 187, 183, 248, 7, 80, 90, 126, 114, 34, 237, 80, 169, 108, }, { 80, 15, 226, 225, 33, 91, 112, 73, 233, 236, 44, 101, 200, 73, 2, 15, }, { 240, 17, 229, 224, 99, 237, 144, 219, 248, 247, 116, 175, 155, 219, 6, 17, }, { 209, 11, 197, 173, 82, 251, 26, 142, 239, 87, 168, 38, 189, 142, 241, 11, }, { 18, 59, 162, 123, 67, 119, 167, 227, 199, 111, 87, 180, 132, 227, 47, 59, }, { 135, 76, 92, 158, 169, 177, 209, 167, 106, 239, 216, 127, 195, 167, 61, 76, }, { 8, 224, 164, 251, 90, 60, 103, 128, 144, 113, 208, 80, 202, 128, 106, 224, }, { 89, 243, 179, 61, 225, 129, 194, 217, 107, 58, 230, 63, 138, 217, 244, 243, }, { 252, 129, 19, 135, 20, 207, 37, 27, 32, 95, 204, 215, 52, 27, 89, 129, }, { 33, 26, 32, 77, 49, 22, 138, 85, 23, 160, 220, 137, 38, 85, 247, 26, }, { 133, 116, 117, 208, 94, 190, 184, 135, 78, 98, 236, 107, 16, 135, 198, 116, }, { 85, 99, 69, 90, 150, 163, 119, 25, 179, 146, 94, 71, 37, 25, 171, 99, }, { 78, 164, 182, 253, 21, 14, 98, 106, 246, 43, 195, 169, 227, 106, 114, 164, }, { 236, 130, 152, 178, 160, 183, 235, 216, 195, 189, 175, 119, 99, 216, 141, 130, }, { 251, 213, 157, 114, 84, 56, 75, 107, 94, 172, 138, 225, 10, 107, 11, 213, }, { 54, 77, 37, 141, 197, 153, 42, 230, 138, 177, 249, 31, 79, 230, 113, 77, }, { 117, 101, 144, 48, 61, 83, 40, 92, 182, 149, 152, 196, 139, 92, 192, 101, }, { 55, 81, 208, 170, 95, 127, 255, 246, 152, 22, 227, 21, 199, 246, 237, 81, }, { 92, 159, 20, 134, 86, 121, 197, 137, 49, 68, 148, 29, 103, 137, 93, 159, }, { 246, 89, 158, 50, 185, 252, 43, 187, 148, 163, 40, 147, 45, 187, 200, 89, }, { 244, 97, 183, 124, 78, 243, 66, 155, 176, 46, 28, 135, 254, 155, 51, 97, }, { 205, 152, 184, 255, 145, 161, 97, 141, 212, 29, 115, 254, 69, 141, 122, 152, }, { 107, 206, 196, 44, 9, 6, 58, 127, 169, 82, 119, 8, 160, 127, 176, 206, }, { 162, 38, 46, 79, 181, 185, 137, 178, 53, 150, 108, 222, 128, 178, 255, 38, }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, { 170, 198, 138, 180, 239, 133, 238, 50, 165, 231, 188, 142, 74, 50, 149, 198, }, { 113, 21, 194, 172, 16, 77, 250, 28, 254, 76, 240, 236, 238, 28, 245, 21, }, { 66, 52, 64, 154, 98, 44, 215, 170, 46, 131, 123, 209, 76, 170, 45, 52, }, }, { { 71, 82, 217, 210, 105, 129, 66, 74, 78, 231, 83, 93, 169, 48, 71, 124, }, { 233, 219, 49, 92, 46, 223, 18, 151, 52, 63, 131, 21, 11, 152, 233, 28, }, { 143, 38, 190, 74, 37, 18, 202, 188, 135, 248, 88, 233, 127, 247, 143, 140, }, { 78, 74, 161, 84, 42, 5, 57, 225, 141, 182, 81, 211, 59, 149, 78, 46, }, { 3, 69, 146, 119, 218, 182, 210, 120, 45, 220, 193, 245, 241, 122, 3, 156, }, { 207, 124, 79, 91, 204, 239, 161, 46, 136, 145, 180, 206, 25, 164, 207, 127, }, { 12, 215, 13, 31, 238, 157, 206, 35, 180, 246, 130, 82, 66, 43, 12, 53, }, { 186, 51, 255, 175, 182, 58, 193, 184, 101, 1, 149, 190, 100, 213, 186, 63, }, { 18, 48, 240, 207, 134, 203, 246, 149, 69, 162, 4, 223, 231, 137, 18, 164, }, { 240, 52, 228, 79, 198, 245, 3, 249, 132, 229, 186, 226, 97, 89, 240, 2, }, { 43, 242, 188, 53, 251, 126, 51, 178, 19, 173, 75, 218, 190, 128, 43, 34, }, { 44, 250, 148, 246, 123, 2, 26, 106, 82, 35, 244, 160, 113, 227, 44, 173, }, { 50, 29, 105, 38, 19, 84, 34, 220, 163, 119, 114, 45, 212, 65, 50, 60, }, { 27, 40, 136, 73, 197, 79, 141, 62, 134, 243, 6, 81, 117, 44, 27, 246, }, { 210, 222, 32, 252, 126, 15, 75, 224, 84, 25, 243, 182, 77, 124, 210, 114, }, { 8, 154, 183, 171, 180, 87, 53, 131, 216, 164, 252, 221, 124, 50, 8, 38, }, { 221, 76, 191, 148, 74, 36, 87, 187, 205, 51, 176, 17, 254, 45, 221, 219, }, { 96, 119, 104, 248, 124, 98, 191, 219, 233, 188, 154, 213, 85, 155, 96, 107, }, { 114, 71, 152, 55, 250, 169, 73, 78, 172, 30, 158, 10, 178, 18, 114, 207, }, { 17, 117, 98, 184, 92, 125, 36, 237, 104, 126, 197, 42, 22, 243, 17, 56, }, { 6, 138, 231, 238, 119, 175, 103, 240, 90, 123, 65, 41, 33, 244, 6, 251, }, { 93, 248, 158, 182, 91, 29, 129, 92, 211, 225, 171, 95, 50, 139, 93, 254, }, { 224, 195, 73, 218, 109, 91, 105, 60, 247, 110, 129, 155, 153, 61, 224, 78, }, { 134, 62, 198, 204, 102, 150, 177, 23, 68, 169, 90, 103, 237, 82, 134, 222, }, { 170, 196, 82, 58, 29, 148, 171, 125, 22, 138, 174, 199, 156, 177, 170, 115, }, { 88, 55, 235, 47, 246, 4, 52, 212, 164, 70, 43, 131, 226, 5, 88, 153, }, { 36, 96, 35, 93, 207, 85, 47, 233, 138, 135, 8, 125, 13, 209, 36, 139, }, { 223, 139, 226, 206, 103, 65, 203, 235, 251, 26, 143, 183, 225, 192, 223, 51, }, { 105, 111, 16, 126, 63, 230, 196, 112, 42, 237, 152, 91, 199, 62, 105, 57, }, { 122, 221, 47, 156, 78, 254, 124, 205, 116, 186, 98, 215, 206, 32, 122, 233, }, { 103, 127, 64, 59, 252, 30, 150, 3, 168, 50, 37, 175, 154, 248, 103, 228, }, { 236, 20, 68, 197, 131, 198, 167, 31, 67, 152, 3, 201, 219, 22, 236, 123, }, { 48, 218, 52, 124, 62, 49, 190, 140, 149, 94, 77, 139, 203, 172, 48, 212, }, { 106, 42, 130, 9, 229, 80, 22, 8, 7, 49, 89, 174, 54, 68, 106, 165, }, { 14, 16, 80, 69, 195, 248, 82, 115, 130, 223, 189, 244, 93, 198, 14, 221, }, { 67, 31, 99, 102, 51, 75, 185, 234, 34, 181, 45, 210, 151, 41, 67, 111, }, { 45, 120, 91, 219, 140, 209, 84, 66, 73, 214, 10, 243, 159, 116, 45, 217, }, { 179, 43, 135, 41, 245, 190, 186, 19, 166, 80, 151, 48, 246, 112, 179, 109, }, { 228, 142, 243, 110, 55, 145, 146, 156, 155, 60, 255, 20, 167, 36, 228, 93, }, { 34, 234, 196, 179, 184, 250, 72, 25, 208, 252, 73, 84, 44, 37, 34, 112, }, { 171, 70, 157, 23, 234, 71, 229, 85, 13, 127, 80, 148, 114, 38, 171, 7, }, { 61, 143, 246, 78, 39, 127, 62, 135, 58, 93, 49, 138, 103, 16, 61, 149, }, { 52, 151, 142, 200, 100, 251, 69, 44, 249, 12, 51, 4, 245, 181, 52, 199, }, { 144, 67, 140, 183, 186, 151, 188, 34, 109, 89, 32, 55, 52, 194, 144, 105, }, { 151, 75, 164, 116, 58, 235, 149, 250, 44, 215, 159, 77, 251, 161, 151, 230, }, { 176, 110, 21, 94, 47, 8, 104, 107, 139, 140, 86, 197, 7, 10, 176, 241, }, { 229, 12, 60, 67, 192, 66, 220, 180, 128, 201, 1, 71, 73, 179, 229, 41, }, { 66, 157, 172, 75, 196, 152, 247, 194, 57, 64, 211, 129, 121, 190, 66, 27, }, { 121, 152, 189, 235, 148, 72, 174, 181, 89, 102, 163, 34, 63, 90, 121, 117, }, { 192, 238, 208, 51, 248, 196, 189, 117, 17, 187, 247, 105, 170, 245, 192, 214, }, { 24, 109, 26, 62, 31, 249, 95, 70, 171, 47, 199, 164, 132, 86, 24, 106, }, { 75, 133, 212, 205, 135, 28, 140, 105, 250, 17, 209, 15, 235, 27, 75, 73, }, { 247, 60, 204, 140, 70, 137, 42, 33, 197, 107, 5, 152, 174, 58, 247, 141, }, { 184, 244, 162, 245, 155, 95, 93, 232, 83, 40, 170, 24, 123, 56, 184, 215, }, { 166, 19, 95, 37, 243, 9, 101, 94, 162, 124, 44, 149, 222, 154, 166, 70, }, { 89, 181, 36, 2, 1, 215, 122, 252, 191, 179, 213, 208, 12, 146, 89, 237, }, { 100, 58, 210, 76, 38, 168, 68, 123, 133, 238, 228, 90, 107, 130, 100, 120, }, { 54, 80, 211, 146, 73, 158, 217, 124, 207, 37, 12, 162, 234, 88, 54, 47, }, { 180, 35, 175, 234, 117, 194, 147, 203, 231, 222, 40, 74, 57, 19, 180, 226, }, { 129, 54, 238, 15, 230, 234, 152, 207, 5, 39, 229, 29, 34, 49, 129, 81, }, { 9, 24, 120, 134, 67, 132, 123, 171, 195, 81, 2, 142, 146, 165, 9, 82, }, { 120, 26, 114, 198, 99, 155, 224, 157, 66, 147, 93, 113, 209, 205, 120, 1, }, { 237, 150, 139, 232, 116, 21, 233, 55, 88, 109, 253, 154, 53, 129, 237, 15, }, { 95, 63, 195, 236, 118, 120, 29, 12, 229, 200, 148, 249, 45, 102, 95, 22, }, { 218, 68, 151, 87, 202, 88, 126, 99, 140, 189, 15, 107, 49, 78, 218, 84, }, { 196, 163, 106, 135, 162, 14, 70, 213, 125, 233, 137, 230, 148, 236, 196, 197, }, { 41, 53, 225, 111, 214, 27, 175, 226, 37, 132, 116, 124, 161, 109, 41, 202, }, { 173, 204, 122, 249, 157, 232, 130, 165, 87, 4, 17, 189, 83, 210, 173, 252, }, { 7, 8, 40, 195, 128, 124, 41, 216, 65, 142, 191, 122, 207, 99, 7, 143, }, { 130, 115, 124, 120, 60, 92, 74, 183, 40, 251, 36, 232, 211, 75, 130, 205, }, { 226, 4, 20, 128, 64, 62, 245, 108, 193, 71, 190, 61, 134, 208, 226, 166, }, { 49, 88, 251, 81, 201, 226, 240, 164, 142, 171, 179, 216, 37, 59, 49, 160, }, { 23, 255, 133, 86, 43, 210, 67, 29, 50, 5, 132, 3, 55, 7, 23, 195, }, { 159, 209, 19, 223, 142, 188, 160, 121, 244, 115, 99, 144, 135, 147, 159, 192, }, { 11, 223, 37, 220, 110, 225, 231, 251, 245, 120, 61, 40, 141, 72, 11, 186, }, { 22, 125, 74, 123, 220, 1, 13, 53, 41, 240, 122, 80, 217, 144, 22, 183, }, { 127, 18, 90, 5, 227, 231, 201, 69, 3, 29, 226, 11, 30, 174, 127, 142, }, { 35, 104, 11, 158, 79, 41, 6, 49, 203, 9, 183, 7, 194, 178, 35, 4, }, { 107, 168, 77, 36, 18, 131, 88, 32, 28, 196, 167, 253, 216, 211, 107, 209, }, { 169, 129, 192, 77, 199, 34, 121, 5, 59, 86, 111, 50, 109, 203, 169, 239, }, { 139, 107, 4, 254, 127, 216, 49, 28, 235, 170, 38, 102, 65, 238, 139, 159, }, { 183, 102, 61, 157, 175, 116, 65, 179, 202, 2, 233, 191, 200, 105, 183, 126, }, { 19, 178, 63, 226, 113, 24, 184, 189, 94, 87, 250, 140, 9, 30, 19, 208, }, { 28, 32, 160, 138, 69, 51, 164, 230, 199, 125, 185, 43, 186, 79, 28, 121, }, { 251, 235, 193, 147, 168, 20, 228, 2, 113, 157, 135, 202, 236, 17, 251, 184, }, { 98, 176, 53, 162, 81, 7, 35, 139, 223, 149, 165, 115, 74, 118, 98, 131, }, { 242, 243, 185, 21, 235, 144, 159, 169, 178, 204, 133, 68, 126, 180, 242, 234, }, { 59, 5, 17, 160, 80, 208, 89, 119, 96, 38, 112, 163, 70, 228, 59, 110, }, { 154, 30, 102, 70, 35, 165, 21, 241, 131, 212, 227, 76, 87, 29, 154, 167, }, { 117, 79, 176, 244, 122, 213, 96, 150, 237, 144, 33, 112, 125, 113, 117, 64, }, { 234, 158, 163, 43, 244, 105, 192, 239, 25, 227, 66, 224, 250, 226, 234, 128, }, { 208, 25, 125, 166, 83, 106, 215, 176, 98, 48, 204, 16, 82, 145, 208, 154, }, { 42, 112, 115, 24, 12, 173, 125, 154, 8, 88, 181, 137, 80, 23, 42, 86, }, { 145, 193, 67, 154, 77, 68, 242, 10, 118, 172, 222, 100, 218, 85, 145, 29, }, { 2, 199, 93, 90, 45, 101, 156, 80, 54, 41, 63, 166, 31, 237, 2, 232, }, { 70, 208, 22, 255, 158, 82, 12, 98, 85, 18, 173, 14, 71, 167, 70, 8, }, { 167, 145, 144, 8, 4, 218, 43, 118, 185, 137, 210, 198, 48, 13, 167, 50, }, { 220, 206, 112, 185, 189, 247, 25, 147, 214, 198, 78, 66, 16, 186, 220, 175, }, { 39, 37, 177, 42, 21, 227, 253, 145, 167, 91, 201, 136, 252, 171, 39, 23, }, { 118, 10, 34, 131, 160, 99, 178, 238, 192, 76, 224, 133, 140, 11, 118, 220, }, { 164, 212, 2, 127, 222, 108, 249, 14, 148, 85, 19, 51, 193, 119, 164, 174, }, { 202, 179, 58, 194, 97, 246, 20, 166, 255, 54, 52, 18, 201, 42, 202, 24, }, { 150, 201, 107, 89, 205, 56, 219, 210, 55, 34, 97, 30, 21, 54, 150, 146, }, { 112, 128, 197, 109, 215, 204, 213, 30, 154, 55, 161, 172, 173, 255, 112, 39, }, { 84, 224, 230, 48, 24, 153, 250, 247, 16, 176, 169, 209, 160, 46, 84, 172, }, { 225, 65, 134, 247, 154, 136, 39, 20, 236, 155, 127, 200, 119, 170, 225, 58, }, { 111, 229, 247, 144, 72, 73, 163, 128, 112, 150, 217, 114, 230, 202, 111, 194, }, { 57, 194, 76, 250, 125, 181, 197, 39, 86, 15, 79, 5, 89, 9, 57, 134, }, { 51, 159, 166, 11, 228, 135, 108, 244, 184, 130, 140, 126, 58, 214, 51, 72, }, { 219, 198, 88, 122, 61, 139, 48, 75, 151, 72, 241, 56, 223, 217, 219, 32, }, { 160, 153, 184, 203, 132, 166, 2, 174, 248, 7, 109, 188, 255, 110, 160, 189, }, { 254, 36, 180, 10, 5, 13, 81, 138, 6, 58, 7, 22, 60, 159, 254, 223, }, { 178, 169, 72, 4, 2, 109, 244, 59, 189, 165, 105, 99, 24, 231, 178, 25, }, { 16, 247, 173, 149, 171, 174, 106, 197, 115, 139, 59, 121, 248, 100, 16, 76, }, { 113, 2, 10, 64, 32, 31, 155, 54, 129, 194, 95, 255, 67, 104, 113, 83, }, { 135, 188, 9, 225, 145, 69, 255, 63, 95, 92, 164, 52, 3, 197, 135, 170, }, { 53, 21, 65, 229, 147, 40, 11, 4, 226, 249, 205, 87, 27, 34, 53, 179, }, { 56, 64, 131, 215, 138, 102, 139, 15, 77, 250, 177, 86, 183, 158, 56, 242, }, { 82, 106, 1, 222, 111, 54, 157, 7, 74, 203, 232, 248, 129, 218, 82, 87, }, { 101, 184, 29, 97, 209, 123, 10, 83, 158, 27, 26, 9, 133, 21, 101, 12, }, { 222, 9, 45, 227, 144, 146, 133, 195, 224, 239, 113, 228, 15, 87, 222, 71, }, { 142, 164, 113, 103, 210, 193, 132, 148, 156, 13, 166, 186, 145, 96, 142, 248, }, { 168, 3, 15, 96, 48, 241, 55, 45, 32, 163, 145, 97, 131, 92, 168, 155, }, { 253, 97, 38, 125, 223, 187, 131, 242, 43, 230, 198, 227, 205, 229, 253, 67, }, { 46, 61, 201, 172, 86, 103, 134, 58, 100, 10, 203, 6, 110, 14, 46, 69, }, { 1, 130, 207, 45, 247, 211, 78, 40, 27, 245, 254, 83, 238, 151, 1, 116, }, { 248, 174, 83, 228, 114, 162, 54, 122, 92, 65, 70, 63, 29, 107, 248, 36, }, { 140, 99, 44, 61, 255, 164, 24, 196, 170, 36, 153, 28, 142, 141, 140, 16, }, { 187, 177, 48, 130, 65, 233, 143, 144, 126, 244, 107, 237, 138, 66, 187, 75, }, { 73, 66, 137, 151, 170, 121, 16, 57, 204, 56, 238, 169, 244, 246, 73, 161, }, { 68, 23, 75, 165, 179, 55, 144, 50, 99, 59, 146, 168, 88, 74, 68, 224, }, { 191, 252, 138, 54, 27, 35, 116, 48, 18, 166, 21, 98, 180, 91, 191, 88, }, { 239, 81, 214, 178, 89, 112, 117, 103, 110, 68, 194, 60, 42, 108, 239, 231, }, { 252, 227, 233, 80, 40, 104, 205, 218, 48, 19, 56, 176, 35, 114, 252, 55, }, { 58, 135, 222, 141, 167, 3, 23, 95, 123, 211, 142, 240, 168, 115, 58, 26, }, { 177, 236, 218, 115, 216, 219, 38, 67, 144, 121, 168, 150, 233, 157, 177, 133, }, { 249, 44, 156, 201, 133, 113, 120, 82, 71, 180, 184, 108, 243, 252, 249, 80, }, { 153, 91, 244, 49, 249, 19, 199, 137, 174, 8, 34, 185, 166, 103, 153, 59, }, { 216, 131, 202, 13, 231, 61, 226, 51, 186, 148, 48, 205, 46, 163, 216, 188, }, { 201, 246, 168, 181, 187, 64, 198, 222, 210, 234, 245, 231, 56, 80, 201, 132, }, { 97, 245, 167, 213, 139, 177, 241, 243, 242, 73, 100, 134, 187, 12, 97, 31, }, { 60, 13, 57, 99, 208, 172, 112, 175, 33, 168, 207, 217, 137, 135, 60, 225, }, { 137, 172, 89, 164, 82, 189, 173, 76, 221, 131, 25, 192, 94, 3, 137, 119, }, { 15, 146, 159, 104, 52, 43, 28, 91, 153, 42, 67, 167, 179, 81, 15, 169, }, { 92, 122, 81, 155, 172, 206, 207, 116, 200, 20, 85, 12, 220, 28, 92, 138, }, { 190, 126, 69, 27, 236, 240, 58, 24, 9, 83, 235, 49, 90, 204, 190, 44, }, { 194, 41, 141, 105, 213, 161, 33, 37, 39, 146, 200, 207, 181, 24, 194, 62, }, { 197, 33, 165, 170, 85, 221, 8, 253, 102, 28, 119, 181, 122, 123, 197, 177, }, { 136, 46, 150, 137, 165, 110, 227, 100, 198, 118, 231, 147, 176, 148, 136, 3, }, { 161, 27, 119, 230, 115, 117, 76, 134, 227, 242, 147, 239, 17, 249, 161, 201, }, { 29, 162, 111, 167, 178, 224, 234, 206, 220, 136, 71, 120, 84, 216, 29, 13, }, { 199, 230, 248, 240, 120, 184, 148, 173, 80, 53, 72, 19, 101, 150, 199, 89, }, { 108, 160, 101, 231, 146, 255, 113, 248, 93, 74, 24, 135, 23, 176, 108, 94, }, { 133, 123, 84, 187, 188, 32, 99, 111, 105, 117, 155, 146, 28, 40, 133, 66, }, { 157, 22, 78, 133, 163, 217, 60, 41, 194, 90, 92, 54, 152, 126, 157, 40, }, { 211, 92, 239, 209, 137, 220, 5, 200, 79, 236, 13, 229, 163, 235, 211, 6, }, { 209, 155, 178, 139, 164, 185, 153, 152, 121, 197, 50, 67, 188, 6, 209, 238, }, { 30, 231, 253, 208, 104, 86, 56, 182, 241, 84, 134, 141, 165, 162, 30, 145, }, { 62, 202, 100, 57, 253, 201, 236, 255, 23, 129, 240, 127, 150, 106, 62, 9, }, { 132, 249, 155, 150, 75, 243, 45, 71, 114, 128, 101, 193, 242, 191, 132, 54, }, { 47, 191, 6, 129, 161, 180, 200, 18, 127, 255, 53, 85, 128, 153, 47, 49, }, { 125, 213, 7, 95, 206, 130, 85, 21, 53, 52, 221, 173, 1, 67, 125, 102, }, { 116, 205, 127, 217, 141, 6, 46, 190, 246, 101, 223, 35, 147, 230, 116, 52, }, { 65, 216, 62, 60, 30, 46, 37, 186, 20, 156, 18, 116, 136, 196, 65, 135, }, { 80, 173, 92, 132, 66, 83, 1, 87, 124, 226, 215, 94, 158, 55, 80, 191, }, { 33, 175, 86, 196, 98, 76, 154, 97, 253, 32, 136, 161, 221, 95, 33, 236, }, { 85, 98, 41, 29, 239, 74, 180, 223, 11, 69, 87, 130, 78, 185, 85, 216, }, { 231, 203, 97, 25, 237, 39, 64, 228, 182, 224, 62, 225, 86, 94, 231, 193, }, { 205, 187, 18, 1, 225, 138, 61, 126, 190, 184, 139, 104, 6, 73, 205, 151, }, { 13, 85, 194, 50, 25, 78, 128, 11, 175, 3, 124, 1, 172, 188, 13, 65, }, { 124, 87, 200, 114, 57, 81, 27, 61, 46, 193, 35, 254, 239, 212, 124, 18, }, { 55, 210, 28, 191, 190, 77, 151, 84, 212, 208, 242, 241, 4, 207, 55, 91, }, { 26, 170, 71, 100, 50, 156, 195, 22, 157, 6, 248, 2, 155, 187, 26, 130, }, { 162, 94, 229, 145, 169, 195, 158, 254, 206, 46, 82, 26, 224, 131, 162, 85, }, { 175, 11, 39, 163, 176, 141, 30, 245, 97, 45, 46, 27, 76, 63, 175, 20, }, { 246, 190, 3, 161, 177, 90, 100, 9, 222, 158, 251, 203, 64, 173, 246, 249, }, { 232, 89, 254, 113, 217, 12, 92, 191, 47, 202, 125, 70, 229, 15, 232, 104, }, { 126, 144, 149, 40, 20, 52, 135, 109, 24, 232, 28, 88, 240, 57, 126, 250, }, { 94, 189, 12, 193, 129, 171, 83, 36, 254, 61, 106, 170, 195, 241, 94, 98, }, { 250, 105, 14, 190, 95, 199, 170, 42, 106, 104, 121, 153, 2, 134, 250, 204, }, { 181, 161, 96, 199, 130, 17, 221, 227, 252, 43, 214, 25, 215, 132, 181, 150, }, { 146, 132, 209, 237, 151, 242, 32, 114, 91, 112, 31, 145, 43, 47, 146, 129, }, { 86, 39, 187, 106, 53, 252, 102, 167, 38, 153, 150, 119, 191, 195, 86, 68, }, { 241, 182, 43, 98, 49, 38, 77, 209, 159, 16, 68, 177, 143, 206, 241, 118, }, { 4, 77, 186, 180, 90, 202, 251, 160, 108, 82, 126, 143, 62, 25, 4, 19, }, { 110, 103, 56, 189, 191, 154, 237, 168, 107, 99, 39, 33, 8, 93, 110, 182, }, { 165, 86, 205, 82, 41, 191, 183, 38, 143, 160, 237, 96, 47, 224, 165, 218, }, { 230, 73, 174, 52, 26, 244, 14, 204, 173, 21, 192, 178, 184, 201, 230, 181, }, { 200, 116, 103, 152, 76, 147, 136, 246, 201, 31, 11, 180, 214, 199, 200, 240, }, { 123, 95, 224, 177, 185, 45, 50, 229, 111, 79, 156, 132, 32, 183, 123, 157, }, { 115, 197, 87, 26, 13, 122, 7, 102, 183, 235, 96, 89, 92, 133, 115, 187, }, { 81, 47, 147, 169, 181, 128, 79, 127, 103, 23, 41, 13, 112, 160, 81, 203, }, { 149, 140, 249, 46, 23, 142, 9, 170, 26, 254, 160, 235, 228, 76, 149, 14, }, { 102, 253, 143, 22, 11, 205, 216, 43, 179, 199, 219, 252, 116, 111, 102, 144, }, { 214, 147, 154, 72, 36, 197, 176, 64, 56, 75, 141, 57, 115, 101, 214, 97, }, { 91, 114, 121, 88, 44, 178, 230, 172, 137, 154, 234, 118, 19, 127, 91, 5, }, { 227, 134, 219, 173, 183, 237, 187, 68, 218, 178, 64, 110, 104, 71, 227, 210, }, { 99, 50, 250, 143, 166, 212, 109, 163, 196, 96, 91, 32, 164, 225, 99, 247, }, { 155, 156, 169, 107, 212, 118, 91, 217, 152, 33, 29, 31, 185, 138, 155, 211, }, { 189, 59, 215, 108, 54, 70, 232, 96, 36, 143, 42, 196, 171, 182, 189, 176, }, { 119, 136, 237, 174, 87, 176, 252, 198, 219, 185, 30, 214, 98, 156, 119, 168, }, { 141, 225, 227, 16, 8, 119, 86, 236, 177, 209, 103, 79, 96, 26, 141, 100, }, { 188, 185, 24, 65, 193, 149, 166, 72, 63, 122, 212, 151, 69, 33, 188, 196, }, { 243, 113, 118, 56, 28, 67, 209, 129, 169, 57, 123, 23, 144, 35, 243, 158, }, { 244, 121, 94, 251, 156, 63, 248, 89, 232, 183, 196, 109, 95, 64, 244, 17, }, { 38, 167, 126, 7, 226, 48, 179, 185, 188, 174, 55, 219, 18, 60, 38, 99, }, { 212, 84, 199, 18, 9, 160, 44, 16, 14, 98, 178, 159, 108, 136, 212, 137, }, { 128, 180, 33, 34, 17, 57, 214, 231, 30, 210, 27, 78, 204, 166, 128, 37, }, { 147, 6, 30, 192, 96, 33, 110, 90, 64, 133, 225, 194, 197, 184, 147, 245, }, { 182, 228, 242, 176, 88, 167, 15, 155, 209, 247, 23, 236, 38, 254, 182, 10, }, { 21, 56, 216, 12, 6, 183, 223, 77, 4, 44, 187, 165, 40, 234, 21, 43, }, { 204, 57, 221, 44, 22, 89, 115, 86, 165, 77, 117, 59, 232, 222, 204, 227, }, { 172, 78, 181, 212, 106, 59, 204, 141, 76, 241, 239, 238, 189, 69, 172, 136, }, { 193, 108, 31, 30, 15, 23, 243, 93, 10, 78, 9, 58, 68, 98, 193, 162, }, { 238, 211, 25, 159, 174, 163, 59, 79, 117, 177, 60, 111, 196, 251, 238, 147, }, { 174, 137, 232, 142, 71, 94, 80, 221, 122, 216, 208, 72, 162, 168, 174, 96, }, { 156, 148, 129, 168, 84, 10, 114, 1, 217, 175, 162, 101, 118, 233, 156, 92, }, { 217, 1, 5, 32, 16, 238, 172, 27, 161, 97, 206, 158, 192, 52, 217, 200, }, { 163, 220, 42, 188, 94, 16, 208, 214, 213, 219, 172, 73, 14, 20, 163, 33, }, { 37, 226, 236, 112, 56, 134, 97, 193, 145, 114, 246, 46, 227, 70, 37, 255, }, { 235, 28, 108, 6, 3, 186, 142, 199, 2, 22, 188, 179, 20, 117, 235, 244, }, { 64, 90, 241, 17, 233, 253, 107, 146, 15, 105, 236, 39, 102, 83, 64, 243, }, { 72, 192, 70, 186, 93, 170, 94, 17, 215, 205, 16, 250, 26, 97, 72, 213, }, { 109, 34, 170, 202, 101, 44, 63, 208, 70, 191, 230, 212, 249, 39, 109, 42, }, { 40, 183, 46, 66, 33, 200, 225, 202, 62, 113, 138, 47, 79, 250, 40, 190, }, { 255, 166, 123, 39, 242, 222, 31, 162, 29, 207, 249, 69, 210, 8, 255, 171, }, { 10, 93, 234, 241, 153, 50, 169, 211, 238, 141, 195, 123, 99, 223, 10, 206, }, { 79, 200, 110, 121, 221, 214, 119, 201, 150, 67, 175, 128, 213, 2, 79, 90, }, { 25, 239, 213, 19, 232, 42, 17, 110, 176, 218, 57, 247, 106, 193, 25, 30, }, { 83, 232, 206, 243, 152, 229, 211, 47, 81, 62, 22, 171, 111, 77, 83, 35, }, { 245, 251, 145, 214, 107, 236, 182, 113, 243, 66, 58, 62, 177, 215, 245, 101, }, { 185, 118, 109, 216, 108, 140, 19, 192, 72, 221, 84, 75, 149, 175, 185, 163, }, { 203, 49, 245, 239, 150, 37, 90, 142, 228, 195, 202, 65, 39, 189, 203, 108, }, { 69, 149, 132, 136, 68, 228, 222, 26, 120, 206, 108, 251, 182, 221, 69, 148, }, { 87, 165, 116, 71, 194, 47, 40, 143, 61, 108, 104, 36, 81, 84, 87, 48, }, { 215, 17, 85, 101, 211, 22, 254, 104, 35, 190, 115, 106, 157, 242, 215, 21, }, { 104, 237, 223, 83, 200, 53, 138, 88, 49, 24, 102, 8, 41, 169, 104, 77, }, { 76, 141, 252, 14, 7, 96, 165, 177, 187, 159, 110, 117, 36, 120, 76, 198, }, { 32, 45, 153, 233, 149, 159, 212, 73, 230, 213, 118, 242, 51, 200, 32, 152, }, { 74, 7, 27, 224, 112, 207, 194, 65, 225, 228, 47, 92, 5, 140, 74, 61, }, { 5, 207, 117, 153, 173, 25, 181, 136, 119, 167, 128, 220, 208, 142, 5, 103, }, { 198, 100, 55, 221, 143, 107, 218, 133, 75, 192, 182, 64, 139, 1, 198, 45, }, { 20, 186, 23, 33, 241, 100, 145, 101, 31, 217, 69, 246, 198, 125, 20, 95, }, { 158, 83, 220, 242, 121, 111, 238, 81, 239, 134, 157, 195, 105, 4, 158, 180, }, { 213, 214, 8, 63, 254, 115, 98, 56, 21, 151, 76, 204, 130, 31, 213, 253, }, { 77, 15, 51, 35, 240, 179, 235, 153, 160, 106, 144, 38, 202, 239, 77, 178, }, { 206, 254, 128, 118, 59, 60, 239, 6, 147, 100, 74, 157, 247, 51, 206, 11, }, { 90, 240, 182, 117, 219, 97, 168, 132, 146, 111, 20, 37, 253, 232, 90, 113, }, { 63, 72, 171, 20, 10, 26, 162, 215, 12, 116, 14, 44, 120, 253, 63, 125, }, { 138, 233, 203, 211, 136, 11, 127, 52, 240, 95, 216, 53, 175, 121, 138, 235, }, { 131, 241, 179, 85, 203, 143, 4, 159, 51, 14, 218, 187, 61, 220, 131, 185, }, { 195, 171, 66, 68, 34, 114, 111, 13, 60, 103, 54, 156, 91, 143, 195, 74, }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, { 148, 14, 54, 3, 224, 93, 71, 130, 1, 11, 94, 184, 10, 219, 148, 122, }, { 31, 101, 50, 253, 159, 133, 118, 158, 234, 161, 120, 222, 75, 53, 31, 229, }, { 152, 217, 59, 28, 14, 192, 137, 161, 181, 253, 220, 234, 72, 240, 152, 79, }, }, { { 204, 14, 134, 194, 79, 186, 89, 59, 227, 239, 121, 130, 83, 17, 240, 205, }, { 3, 150, 148, 149, 108, 42, 182, 245, 156, 186, 231, 55, 131, 145, 189, 91, }, { 23, 177, 171, 166, 249, 17, 210, 3, 195, 142, 201, 144, 88, 146, 173, 105, }, { 165, 130, 68, 39, 150, 101, 191, 96, 218, 110, 89, 40, 81, 104, 132, 190, }, { 212, 52, 172, 224, 169, 41, 160, 159, 137, 118, 77, 249, 193, 19, 81, 80, }, { 252, 122, 210, 134, 64, 95, 104, 176, 55, 30, 17, 116, 180, 21, 113, 52, }, { 214, 208, 245, 6, 225, 164, 197, 57, 97, 27, 247, 98, 130, 76, 135, 131, }, { 118, 43, 206, 93, 195, 191, 99, 133, 220, 120, 68, 19, 149, 84, 7, 208, }, { 210, 219, 71, 9, 113, 125, 15, 182, 114, 193, 64, 151, 4, 242, 232, 230, }, { 32, 88, 217, 120, 10, 7, 159, 242, 152, 31, 241, 164, 186, 185, 254, 174, }, { 101, 145, 215, 244, 170, 119, 123, 9, 12, 44, 58, 118, 75, 120, 197, 220, }, { 66, 84, 40, 22, 92, 131, 152, 129, 27, 83, 155, 16, 244, 238, 233, 76, }, { 70, 95, 154, 25, 204, 90, 82, 14, 8, 137, 44, 229, 114, 80, 134, 41, }, { 187, 87, 133, 236, 168, 162, 233, 237, 75, 64, 96, 61, 6, 139, 156, 149, }, { 44, 69, 204, 105, 121, 175, 2, 160, 173, 178, 235, 120, 243, 184, 79, 1, }, { 37, 33, 166, 4, 190, 121, 134, 46, 255, 18, 27, 253, 252, 201, 250, 67, }, { 46, 161, 149, 143, 49, 34, 103, 6, 69, 223, 81, 227, 176, 231, 153, 210, }, { 127, 79, 164, 48, 4, 105, 231, 11, 142, 216, 180, 150, 154, 37, 178, 146, }, { 173, 148, 227, 57, 117, 20, 232, 189, 252, 25, 244, 1, 158, 215, 90, 116, }, { 6, 239, 235, 233, 216, 84, 175, 41, 251, 183, 13, 110, 197, 225, 185, 182, }, { 107, 104, 155, 3, 145, 82, 131, 253, 209, 236, 154, 49, 65, 38, 162, 160, }, { 59, 244, 103, 207, 128, 190, 208, 163, 110, 60, 34, 232, 171, 42, 226, 104, }, { 106, 26, 86, 112, 181, 245, 80, 174, 165, 59, 199, 157, 129, 232, 201, 40, }, { 126, 61, 105, 67, 32, 206, 52, 88, 250, 15, 233, 58, 90, 235, 217, 26, }, { 60, 105, 65, 85, 124, 77, 172, 217, 225, 92, 114, 42, 174, 5, 48, 86, }, { 132, 168, 80, 44, 184, 197, 243, 193, 54, 166, 245, 32, 43, 31, 17, 152, }, { 103, 117, 142, 18, 226, 250, 30, 175, 228, 65, 128, 237, 8, 39, 19, 15, }, { 182, 56, 93, 142, 255, 173, 167, 236, 10, 58, 39, 77, 143, 68, 70, 178, }, { 22, 195, 102, 213, 221, 182, 1, 80, 183, 89, 148, 60, 152, 92, 198, 225, }, { 136, 181, 69, 61, 203, 109, 110, 147, 3, 11, 239, 252, 98, 30, 160, 55, }, { 88, 138, 91, 210, 242, 157, 4, 131, 153, 167, 21, 240, 37, 179, 158, 2, }, { 188, 202, 163, 118, 84, 81, 149, 151, 196, 32, 48, 255, 3, 164, 78, 171, }, { 222, 198, 82, 24, 2, 213, 146, 228, 71, 108, 90, 75, 77, 243, 89, 73, }, { 194, 247, 202, 53, 116, 159, 161, 207, 62, 47, 217, 197, 89, 79, 151, 177, }, { 78, 73, 61, 7, 47, 43, 5, 211, 46, 254, 129, 204, 189, 239, 88, 227, }, { 63, 255, 213, 192, 16, 103, 26, 44, 125, 230, 149, 29, 45, 148, 141, 13, }, { 14, 249, 76, 247, 59, 37, 248, 244, 221, 192, 160, 71, 10, 94, 103, 124, }, { 31, 167, 12, 184, 26, 96, 133, 222, 229, 249, 100, 185, 151, 45, 115, 163, }, { 153, 235, 5, 114, 234, 40, 19, 185, 59, 50, 43, 2, 255, 109, 180, 232, }, { 12, 29, 21, 17, 115, 168, 157, 82, 53, 173, 26, 220, 73, 1, 177, 175, }, { 112, 196, 37, 180, 27, 235, 204, 172, 39, 207, 73, 125, 80, 181, 190, 102, }, { 68, 187, 195, 255, 132, 215, 55, 168, 224, 228, 150, 126, 49, 15, 80, 250, }, { 45, 55, 1, 26, 93, 8, 209, 243, 217, 101, 182, 212, 51, 118, 36, 137, }, { 95, 23, 125, 72, 14, 110, 120, 249, 22, 199, 69, 50, 32, 156, 76, 60, }, { 120, 210, 130, 170, 248, 154, 155, 113, 1, 184, 228, 84, 159, 10, 96, 172, }, { 203, 147, 160, 88, 179, 73, 37, 65, 108, 143, 41, 64, 86, 62, 34, 243, }, { 213, 70, 97, 147, 141, 142, 115, 204, 253, 161, 16, 85, 1, 221, 58, 216, }, { 115, 82, 177, 33, 119, 193, 122, 89, 187, 117, 174, 74, 211, 36, 3, 61, }, { 92, 129, 233, 221, 98, 68, 206, 12, 138, 125, 162, 5, 163, 13, 241, 103, }, { 254, 158, 139, 96, 8, 210, 13, 22, 223, 115, 171, 239, 247, 74, 167, 231, }, { 111, 99, 41, 12, 1, 139, 73, 114, 194, 54, 45, 196, 199, 152, 205, 197, }, { 26, 222, 115, 196, 174, 30, 156, 2, 130, 244, 142, 224, 209, 93, 119, 78, }, { 7, 157, 38, 154, 252, 243, 124, 122, 143, 96, 80, 194, 5, 47, 210, 62, }, { 238, 178, 6, 92, 13, 48, 163, 111, 147, 157, 50, 189, 170, 247, 216, 176, }, { 234, 185, 180, 83, 157, 233, 105, 224, 128, 71, 133, 72, 44, 73, 183, 213, }, { 200, 5, 52, 205, 223, 99, 147, 180, 240, 53, 206, 119, 213, 175, 159, 168, }, { 140, 190, 247, 50, 91, 180, 164, 28, 16, 209, 88, 9, 228, 160, 207, 82, }, { 181, 174, 201, 27, 147, 135, 17, 25, 150, 128, 192, 122, 12, 213, 251, 233, }, { 56, 98, 243, 90, 236, 148, 102, 86, 242, 134, 197, 223, 40, 187, 95, 51, }, { 89, 248, 150, 161, 214, 58, 215, 208, 237, 112, 72, 92, 229, 125, 245, 138, }, { 105, 140, 194, 229, 217, 223, 230, 91, 57, 129, 32, 170, 2, 121, 116, 115, }, { 16, 44, 141, 60, 5, 226, 174, 121, 76, 238, 153, 82, 93, 189, 127, 87, }, { 240, 103, 199, 151, 51, 247, 245, 226, 2, 179, 11, 168, 253, 20, 192, 155, }, { 163, 109, 175, 206, 78, 49, 16, 73, 33, 217, 84, 70, 148, 137, 61, 8, }, { 9, 100, 106, 109, 199, 214, 132, 142, 82, 160, 240, 133, 15, 113, 181, 66, }, { 13, 111, 216, 98, 87, 15, 78, 1, 65, 122, 71, 112, 137, 207, 218, 39, }, { 253, 8, 31, 245, 100, 248, 187, 227, 67, 201, 76, 216, 116, 219, 26, 188, }, { 27, 172, 190, 183, 138, 185, 79, 81, 246, 35, 211, 76, 17, 147, 28, 198, }, { 39, 197, 255, 226, 246, 244, 227, 136, 23, 127, 161, 102, 191, 150, 44, 144, }, { 141, 204, 58, 65, 127, 19, 119, 79, 100, 6, 5, 165, 36, 110, 164, 218, }, { 242, 131, 158, 113, 123, 122, 144, 68, 234, 222, 177, 51, 190, 75, 22, 72, }, { 146, 107, 54, 249, 101, 115, 242, 145, 129, 255, 97, 28, 179, 67, 215, 121, }, { 109, 135, 112, 234, 73, 6, 44, 212, 42, 91, 151, 95, 132, 199, 27, 22, }, { 93, 243, 36, 174, 70, 227, 29, 95, 254, 170, 255, 169, 99, 195, 154, 239, }, { 241, 21, 10, 228, 23, 80, 38, 177, 118, 100, 86, 4, 61, 218, 171, 19, }, { 33, 42, 20, 11, 46, 160, 76, 161, 236, 200, 172, 8, 122, 119, 149, 38, }, { 55, 233, 114, 222, 243, 22, 77, 241, 91, 145, 56, 52, 226, 43, 83, 199, }, { 64, 176, 113, 240, 20, 14, 253, 39, 243, 62, 33, 139, 183, 177, 63, 159, }, { 142, 90, 174, 212, 19, 57, 193, 186, 248, 188, 226, 146, 167, 255, 25, 129, }, { 232, 93, 237, 181, 213, 100, 12, 70, 104, 42, 63, 211, 111, 22, 97, 6, }, { 228, 64, 248, 164, 166, 204, 145, 20, 93, 135, 37, 15, 38, 23, 208, 169, }, { 236, 86, 95, 186, 69, 189, 198, 201, 123, 240, 136, 38, 233, 168, 14, 99, }, { 158, 118, 35, 232, 22, 219, 111, 195, 180, 82, 123, 192, 250, 66, 102, 214, }, { 156, 146, 122, 14, 94, 86, 10, 101, 92, 63, 193, 91, 185, 29, 176, 5, }, { 209, 77, 211, 156, 29, 87, 185, 67, 238, 123, 167, 160, 135, 99, 85, 189, }, { 231, 214, 108, 49, 202, 230, 39, 225, 193, 61, 194, 56, 165, 134, 109, 242, }, { 184, 193, 17, 121, 196, 136, 95, 24, 215, 250, 135, 10, 133, 26, 33, 206, }, { 47, 211, 88, 252, 21, 133, 180, 85, 49, 8, 12, 79, 112, 41, 242, 90, }, { 226, 175, 19, 77, 126, 152, 62, 61, 166, 48, 40, 97, 227, 246, 105, 31, }, { 138, 81, 28, 219, 131, 224, 11, 53, 235, 102, 85, 103, 33, 65, 118, 228, }, { 215, 162, 56, 117, 197, 3, 22, 106, 21, 204, 170, 206, 66, 130, 236, 11, }, { 180, 220, 4, 104, 183, 32, 194, 74, 226, 87, 157, 214, 204, 27, 144, 97, }, { 41, 60, 179, 21, 205, 209, 27, 124, 202, 191, 1, 33, 181, 200, 75, 236, }, { 19, 186, 25, 169, 105, 200, 24, 140, 208, 84, 126, 101, 222, 44, 194, 12, }, { 152, 153, 200, 1, 206, 143, 192, 234, 79, 229, 118, 174, 63, 163, 223, 96, }, { 128, 163, 226, 35, 40, 28, 57, 78, 37, 124, 66, 213, 173, 161, 126, 253, }, { 166, 20, 208, 178, 250, 79, 9, 149, 70, 212, 190, 31, 210, 249, 57, 229, }, { 98, 12, 241, 110, 86, 132, 7, 115, 131, 76, 106, 180, 78, 87, 23, 226, }, { 179, 65, 34, 242, 75, 211, 190, 48, 109, 55, 205, 20, 201, 52, 66, 95, }, { 94, 101, 176, 59, 42, 201, 171, 170, 98, 16, 24, 158, 224, 82, 39, 180, }, { 114, 32, 124, 82, 83, 102, 169, 10, 207, 162, 243, 230, 19, 234, 104, 181, }, { 67, 38, 229, 101, 120, 36, 75, 210, 111, 132, 198, 188, 52, 32, 130, 196, }, { 52, 127, 230, 75, 159, 60, 251, 4, 199, 43, 223, 3, 97, 186, 238, 156, }, { 53, 13, 43, 56, 187, 155, 40, 87, 179, 252, 130, 175, 161, 116, 133, 20, }, { 82, 120, 165, 42, 89, 97, 54, 248, 87, 189, 2, 66, 169, 83, 150, 27, }, { 38, 183, 50, 145, 210, 83, 48, 219, 99, 168, 252, 202, 127, 88, 71, 24, }, { 125, 171, 253, 214, 76, 228, 130, 173, 102, 181, 14, 13, 217, 122, 100, 65, }, { 183, 74, 144, 253, 219, 10, 116, 191, 126, 237, 122, 225, 79, 138, 45, 58, }, { 10, 242, 254, 248, 171, 252, 50, 123, 206, 26, 23, 178, 140, 224, 8, 25, }, { 69, 201, 14, 140, 160, 112, 228, 251, 148, 51, 203, 210, 241, 193, 59, 114, }, { 129, 209, 47, 80, 12, 187, 234, 29, 81, 171, 31, 121, 109, 111, 21, 117, }, { 110, 17, 228, 127, 37, 44, 154, 33, 182, 225, 112, 104, 7, 86, 166, 77, }, { 83, 10, 104, 89, 125, 198, 229, 171, 35, 106, 95, 238, 105, 157, 253, 147, }, { 74, 66, 143, 8, 191, 242, 207, 92, 61, 36, 54, 57, 59, 81, 55, 134, }, { 121, 160, 79, 217, 220, 61, 72, 34, 117, 111, 185, 248, 95, 196, 11, 36, }, { 50, 144, 13, 162, 71, 104, 84, 45, 60, 156, 210, 109, 164, 91, 87, 42, }, { 97, 154, 101, 251, 58, 174, 177, 134, 31, 246, 141, 131, 205, 198, 170, 185, }, { 251, 231, 244, 28, 188, 172, 20, 202, 184, 126, 65, 182, 177, 58, 163, 10, }, { 57, 16, 62, 41, 200, 51, 181, 5, 134, 81, 152, 115, 232, 117, 52, 187, }, { 192, 19, 147, 211, 60, 18, 196, 105, 214, 66, 99, 94, 26, 16, 65, 98, }, { 250, 149, 57, 111, 152, 11, 199, 153, 204, 169, 28, 26, 113, 244, 200, 130, }, { 91, 28, 207, 71, 158, 183, 178, 118, 5, 29, 242, 199, 166, 34, 35, 89, }, { 164, 240, 137, 84, 178, 194, 108, 51, 174, 185, 4, 132, 145, 166, 239, 54, }, { 186, 37, 72, 159, 140, 5, 58, 190, 63, 151, 61, 145, 198, 69, 247, 29, }, { 218, 205, 224, 23, 146, 12, 88, 107, 84, 182, 237, 190, 203, 77, 54, 44, }, { 76, 173, 100, 225, 103, 166, 96, 117, 198, 147, 59, 87, 254, 176, 142, 48, }, { 5, 121, 127, 124, 180, 126, 25, 220, 103, 13, 234, 89, 70, 112, 4, 237, }, { 195, 133, 7, 70, 80, 56, 114, 156, 74, 248, 132, 105, 153, 129, 252, 57, }, { 58, 134, 170, 188, 164, 25, 3, 240, 26, 235, 127, 68, 107, 228, 137, 224, }, { 130, 71, 187, 197, 96, 145, 92, 232, 205, 17, 248, 78, 238, 254, 168, 46, }, { 24, 58, 42, 34, 230, 147, 249, 164, 106, 153, 52, 123, 146, 2, 161, 157, }, { 201, 119, 249, 190, 251, 196, 64, 231, 132, 226, 147, 219, 21, 97, 244, 32, }, { 104, 254, 15, 150, 253, 120, 53, 8, 77, 86, 125, 6, 194, 183, 31, 251, }, { 246, 136, 44, 126, 235, 163, 90, 203, 249, 4, 6, 198, 56, 245, 121, 45, }, { 99, 126, 60, 29, 114, 35, 212, 32, 247, 155, 55, 24, 142, 153, 124, 106, }, { 135, 62, 196, 185, 212, 239, 69, 52, 170, 28, 18, 23, 168, 142, 172, 195, }, { 73, 212, 27, 157, 211, 216, 121, 169, 161, 158, 209, 14, 184, 192, 138, 221, }, { 54, 155, 191, 173, 215, 177, 158, 162, 47, 70, 101, 152, 34, 229, 56, 79, }, { 145, 253, 162, 108, 9, 89, 68, 100, 29, 69, 134, 43, 48, 210, 106, 34, }, { 151, 18, 73, 133, 209, 13, 235, 77, 230, 242, 139, 69, 245, 51, 211, 148, }, { 51, 226, 192, 209, 99, 207, 135, 126, 72, 75, 143, 193, 100, 149, 60, 162, }, { 8, 22, 167, 30, 227, 113, 87, 221, 38, 119, 173, 41, 207, 191, 222, 202, }, { 124, 217, 48, 165, 104, 67, 81, 254, 18, 98, 83, 161, 25, 180, 15, 201, }, { 2, 228, 89, 230, 72, 141, 101, 166, 232, 109, 186, 155, 67, 95, 214, 211, }, { 119, 89, 3, 46, 231, 24, 176, 214, 168, 175, 25, 191, 85, 154, 108, 88, }, { 133, 218, 157, 95, 156, 98, 32, 146, 66, 113, 168, 140, 235, 209, 122, 16, }, { 102, 7, 67, 97, 198, 93, 205, 252, 144, 150, 221, 65, 200, 233, 120, 135, }, { 65, 194, 188, 131, 48, 169, 46, 116, 135, 233, 124, 39, 119, 127, 84, 23, }, { 48, 116, 84, 68, 15, 229, 49, 139, 212, 241, 104, 246, 231, 4, 129, 249, }, { 205, 124, 75, 177, 107, 29, 138, 104, 151, 56, 36, 46, 147, 223, 155, 69, }, { 208, 63, 30, 239, 57, 240, 106, 16, 154, 172, 250, 12, 71, 173, 62, 53, }, { 217, 91, 116, 130, 254, 38, 238, 158, 200, 12, 10, 137, 72, 220, 139, 119, }, { 169, 159, 81, 54, 229, 205, 34, 50, 239, 195, 67, 244, 24, 105, 53, 17, }, { 170, 9, 197, 163, 137, 231, 148, 199, 115, 121, 164, 195, 155, 248, 136, 74, }, { 197, 106, 236, 175, 136, 108, 221, 181, 177, 79, 137, 7, 92, 96, 69, 143, }, { 96, 232, 168, 136, 30, 9, 98, 213, 107, 33, 208, 47, 13, 8, 193, 49, }, { 248, 113, 96, 137, 208, 134, 162, 63, 36, 196, 166, 129, 50, 171, 30, 81, }, { 4, 11, 178, 15, 144, 217, 202, 143, 19, 218, 183, 245, 134, 190, 111, 101, }, { 144, 143, 111, 31, 45, 254, 151, 55, 105, 146, 219, 135, 240, 28, 1, 170, }, { 230, 164, 161, 66, 238, 65, 244, 178, 181, 234, 159, 148, 101, 72, 6, 122, }, { 150, 96, 132, 246, 245, 170, 56, 30, 146, 37, 214, 233, 53, 253, 184, 28, }, { 175, 112, 186, 223, 61, 153, 141, 27, 20, 116, 78, 154, 221, 136, 140, 167, }, { 198, 252, 120, 58, 228, 70, 107, 64, 45, 245, 110, 48, 223, 241, 248, 212, }, { 167, 102, 29, 193, 222, 232, 218, 198, 50, 3, 227, 179, 18, 55, 82, 109, }, { 161, 137, 246, 40, 6, 188, 117, 239, 201, 180, 238, 221, 215, 214, 235, 219, }, { 216, 41, 185, 241, 218, 129, 61, 205, 188, 219, 87, 37, 136, 18, 224, 255, }, { 30, 213, 193, 203, 62, 199, 86, 141, 145, 46, 57, 21, 87, 227, 24, 43, }, { 77, 223, 169, 146, 67, 1, 179, 38, 178, 68, 102, 251, 62, 126, 229, 184, }, { 100, 227, 26, 135, 142, 208, 168, 90, 120, 251, 103, 218, 139, 182, 174, 84, }, { 154, 125, 145, 231, 134, 2, 165, 76, 167, 136, 204, 53, 124, 252, 9, 179, }, { 227, 221, 222, 62, 90, 63, 237, 110, 210, 231, 117, 205, 35, 56, 2, 151, }, { 249, 3, 173, 250, 244, 33, 113, 108, 80, 19, 251, 45, 242, 101, 117, 217, }, { 247, 250, 225, 13, 207, 4, 137, 152, 141, 211, 91, 106, 248, 59, 18, 165, }, { 25, 72, 231, 81, 194, 52, 42, 247, 30, 78, 105, 215, 82, 204, 202, 21, }, { 131, 53, 118, 182, 68, 54, 143, 187, 185, 198, 165, 226, 46, 48, 195, 166, }, { 75, 48, 66, 123, 155, 85, 28, 15, 73, 243, 107, 149, 251, 159, 92, 14, }, { 79, 59, 240, 116, 11, 140, 214, 128, 90, 41, 220, 96, 125, 33, 51, 107, }, { 123, 68, 22, 63, 148, 176, 45, 132, 157, 2, 3, 99, 28, 155, 221, 247, }, { 239, 192, 203, 47, 41, 151, 112, 60, 231, 74, 111, 17, 106, 57, 179, 56, }, { 157, 224, 183, 125, 122, 241, 217, 54, 40, 232, 156, 247, 121, 211, 219, 141, }, { 116, 207, 151, 187, 139, 50, 6, 35, 52, 21, 254, 136, 214, 11, 209, 3, }, { 199, 142, 181, 73, 192, 225, 184, 19, 89, 34, 51, 156, 31, 63, 147, 92, }, { 202, 225, 109, 43, 151, 238, 246, 18, 24, 88, 116, 236, 150, 240, 73, 123, }, { 108, 245, 189, 153, 109, 161, 255, 135, 94, 140, 202, 243, 68, 9, 112, 158, }, { 243, 241, 83, 2, 95, 221, 67, 23, 158, 9, 236, 159, 126, 133, 125, 192, }, { 49, 6, 153, 55, 43, 66, 226, 216, 160, 38, 53, 90, 39, 202, 234, 113, }, { 62, 141, 24, 179, 52, 192, 201, 127, 9, 49, 200, 177, 237, 90, 230, 133, }, { 1, 114, 205, 115, 36, 167, 211, 83, 116, 215, 93, 172, 192, 206, 107, 136, }, { 219, 191, 45, 100, 182, 171, 139, 56, 32, 97, 176, 18, 11, 131, 93, 164, }, { 196, 24, 33, 220, 172, 203, 14, 230, 197, 152, 212, 171, 156, 174, 46, 7, }, { 225, 57, 135, 216, 18, 178, 136, 200, 58, 138, 207, 86, 96, 103, 212, 68, }, { 237, 36, 146, 201, 97, 26, 21, 154, 15, 39, 213, 138, 41, 102, 101, 235, }, { 224, 75, 74, 171, 54, 21, 91, 155, 78, 93, 146, 250, 160, 169, 191, 204, }, { 20, 39, 63, 51, 149, 59, 100, 246, 95, 52, 46, 167, 219, 3, 16, 50, }, { 223, 180, 159, 107, 38, 114, 65, 183, 51, 187, 7, 231, 141, 61, 50, 193, }, { 80, 156, 252, 204, 17, 236, 83, 94, 191, 208, 184, 217, 234, 12, 64, 200, }, { 190, 46, 250, 144, 28, 220, 240, 49, 44, 77, 138, 100, 64, 251, 152, 120, }, { 171, 123, 8, 208, 173, 64, 71, 148, 7, 174, 249, 111, 91, 54, 227, 194, }, { 174, 2, 119, 172, 25, 62, 94, 72, 96, 163, 19, 54, 29, 70, 231, 47, }, { 81, 238, 49, 191, 53, 75, 128, 13, 203, 7, 229, 117, 42, 194, 43, 64, }, { 18, 200, 212, 218, 77, 111, 203, 223, 164, 131, 35, 201, 30, 226, 169, 132, }, { 143, 40, 99, 167, 55, 158, 18, 233, 140, 107, 191, 62, 103, 49, 114, 9, }, { 29, 67, 85, 94, 82, 237, 224, 120, 13, 148, 222, 34, 212, 114, 165, 112, }, { 244, 108, 117, 152, 163, 46, 63, 109, 17, 105, 188, 93, 123, 170, 175, 254, }, { 211, 169, 138, 122, 85, 218, 220, 229, 6, 22, 29, 59, 196, 60, 131, 110, }, { 255, 236, 70, 19, 44, 117, 222, 69, 171, 164, 246, 67, 55, 132, 204, 111, }, { 71, 45, 87, 106, 232, 253, 129, 93, 124, 94, 113, 73, 178, 158, 237, 161, }, { 21, 85, 242, 64, 177, 156, 183, 165, 43, 227, 115, 11, 27, 205, 123, 186, }, { 139, 35, 209, 168, 167, 71, 216, 102, 159, 177, 8, 203, 225, 143, 29, 108, }, { 160, 251, 59, 91, 34, 27, 166, 188, 189, 99, 179, 113, 23, 24, 128, 83, }, { 245, 30, 184, 235, 135, 137, 236, 62, 101, 190, 225, 241, 187, 100, 196, 118, }, { 40, 78, 126, 102, 233, 118, 200, 47, 190, 104, 92, 141, 117, 6, 32, 100, }, { 87, 1, 218, 86, 237, 31, 47, 36, 48, 176, 232, 27, 239, 35, 146, 246, }, { 178, 51, 239, 129, 111, 116, 109, 99, 25, 224, 144, 184, 9, 250, 41, 215, }, { 36, 83, 107, 119, 154, 222, 85, 125, 139, 197, 70, 81, 60, 7, 145, 203, }, { 207, 152, 18, 87, 35, 144, 239, 206, 127, 85, 158, 181, 208, 128, 77, 150, }, { 137, 199, 136, 78, 239, 202, 189, 192, 119, 220, 178, 80, 162, 208, 203, 191, }, { 221, 80, 198, 141, 110, 255, 36, 17, 219, 214, 189, 124, 206, 98, 228, 18, }, { 85, 229, 131, 176, 165, 146, 74, 130, 216, 221, 82, 128, 172, 124, 68, 37, }, { 43, 216, 234, 243, 133, 92, 126, 218, 34, 210, 187, 186, 246, 151, 157, 63, }, { 155, 15, 92, 148, 162, 165, 118, 31, 211, 95, 145, 153, 188, 50, 98, 59, }, { 235, 203, 121, 32, 185, 78, 186, 179, 244, 144, 216, 228, 236, 135, 220, 93, }, { 206, 234, 223, 36, 7, 55, 60, 157, 11, 130, 195, 25, 16, 78, 38, 30, }, { 229, 50, 53, 215, 130, 107, 66, 71, 41, 80, 120, 163, 230, 217, 187, 33, }, { 177, 165, 123, 20, 3, 94, 219, 150, 133, 90, 119, 143, 138, 107, 148, 140, }, { 34, 188, 128, 158, 66, 138, 250, 84, 112, 114, 75, 63, 249, 230, 40, 125, }, { 189, 184, 110, 5, 112, 246, 70, 196, 176, 247, 109, 83, 195, 106, 37, 35, }, { 233, 47, 32, 198, 241, 195, 223, 21, 28, 253, 98, 127, 175, 216, 10, 142, }, { 35, 206, 77, 237, 102, 45, 41, 7, 4, 165, 22, 147, 57, 40, 67, 245, }, { 117, 189, 90, 200, 175, 149, 213, 112, 64, 194, 163, 36, 22, 197, 186, 139, }, { 159, 4, 238, 155, 50, 124, 188, 144, 192, 133, 38, 108, 58, 140, 13, 94, }, { 162, 31, 98, 189, 106, 150, 195, 26, 85, 14, 9, 234, 84, 71, 86, 128, }, { 15, 139, 129, 132, 31, 130, 43, 167, 169, 23, 253, 235, 202, 144, 12, 244, }, { 84, 151, 78, 195, 129, 53, 153, 209, 172, 10, 15, 44, 108, 178, 47, 173, }, { 134, 76, 9, 202, 240, 72, 150, 103, 222, 203, 79, 187, 104, 64, 199, 75, }, { 147, 25, 251, 138, 65, 212, 33, 194, 245, 40, 60, 176, 115, 141, 188, 241, }, { 90, 110, 2, 52, 186, 16, 97, 37, 113, 202, 175, 107, 102, 236, 72, 209, }, { 61, 27, 140, 38, 88, 234, 127, 138, 149, 139, 47, 134, 110, 203, 91, 222, }, { 148, 132, 221, 16, 189, 39, 93, 184, 122, 72, 108, 114, 118, 162, 110, 207, }, { 86, 115, 23, 37, 201, 184, 252, 119, 68, 103, 181, 183, 47, 237, 249, 126, }, { 191, 92, 55, 227, 56, 123, 35, 98, 88, 154, 215, 200, 128, 53, 243, 240, }, { 149, 246, 16, 99, 153, 128, 142, 235, 14, 159, 49, 222, 182, 108, 5, 71, }, { 185, 179, 220, 10, 224, 47, 140, 75, 163, 45, 218, 166, 69, 212, 74, 70, }, { 17, 94, 64, 79, 33, 69, 125, 42, 56, 57, 196, 254, 157, 115, 20, 223, }, { 11, 128, 51, 139, 143, 91, 225, 40, 186, 205, 74, 30, 76, 46, 99, 145, }, { 113, 182, 232, 199, 63, 76, 31, 255, 83, 24, 20, 209, 144, 123, 213, 238, }, { 176, 215, 182, 103, 39, 249, 8, 197, 241, 141, 42, 35, 74, 165, 255, 4, }, { 28, 49, 152, 45, 118, 74, 51, 43, 121, 67, 131, 142, 20, 188, 206, 248, }, { 220, 34, 11, 254, 74, 88, 247, 66, 175, 1, 224, 208, 14, 172, 143, 154, }, { 168, 237, 156, 69, 193, 106, 241, 97, 155, 20, 30, 88, 216, 167, 94, 153, }, { 193, 97, 94, 160, 24, 181, 23, 58, 162, 149, 62, 242, 218, 222, 42, 234, }, { 42, 170, 39, 128, 161, 251, 173, 137, 86, 5, 230, 22, 54, 89, 246, 183, }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, { 172, 230, 46, 74, 81, 179, 59, 238, 136, 206, 169, 173, 94, 25, 49, 252, }, { 72, 166, 214, 238, 247, 127, 170, 250, 213, 73, 140, 162, 120, 14, 225, 85, }, { 122, 54, 219, 76, 176, 23, 254, 215, 233, 213, 94, 207, 220, 85, 182, 127, }, }, }; const grasshopper_w128_t grasshopper_l_dec128[GRASSHOPPER_MAX_BIT_PARTS][256] = { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, { 1, 148, 132, 221, 16, 189, 39, 93, 184, 122, 72, 108, 114, 118, 162, 110, }, { 2, 235, 203, 121, 32, 185, 78, 186, 179, 244, 144, 216, 228, 236, 135, 220, }, { 3, 127, 79, 164, 48, 4, 105, 231, 11, 142, 216, 180, 150, 154, 37, 178, }, { 4, 21, 85, 242, 64, 177, 156, 183, 165, 43, 227, 115, 11, 27, 205, 123, }, { 5, 129, 209, 47, 80, 12, 187, 234, 29, 81, 171, 31, 121, 109, 111, 21, }, { 6, 254, 158, 139, 96, 8, 210, 13, 22, 223, 115, 171, 239, 247, 74, 167, }, { 7, 106, 26, 86, 112, 181, 245, 80, 174, 165, 59, 199, 157, 129, 232, 201, }, { 8, 42, 170, 39, 128, 161, 251, 173, 137, 86, 5, 230, 22, 54, 89, 246, }, { 9, 190, 46, 250, 144, 28, 220, 240, 49, 44, 77, 138, 100, 64, 251, 152, }, { 10, 193, 97, 94, 160, 24, 181, 23, 58, 162, 149, 62, 242, 218, 222, 42, }, { 11, 85, 229, 131, 176, 165, 146, 74, 130, 216, 221, 82, 128, 172, 124, 68, }, { 12, 63, 255, 213, 192, 16, 103, 26, 44, 125, 230, 149, 29, 45, 148, 141, }, { 13, 171, 123, 8, 208, 173, 64, 71, 148, 7, 174, 249, 111, 91, 54, 227, }, { 14, 212, 52, 172, 224, 169, 41, 160, 159, 137, 118, 77, 249, 193, 19, 81, }, { 15, 64, 176, 113, 240, 20, 14, 253, 39, 243, 62, 33, 139, 183, 177, 63, }, { 16, 84, 151, 78, 195, 129, 53, 153, 209, 172, 10, 15, 44, 108, 178, 47, }, { 17, 192, 19, 147, 211, 60, 18, 196, 105, 214, 66, 99, 94, 26, 16, 65, }, { 18, 191, 92, 55, 227, 56, 123, 35, 98, 88, 154, 215, 200, 128, 53, 243, }, { 19, 43, 216, 234, 243, 133, 92, 126, 218, 34, 210, 187, 186, 246, 151, 157, }, { 20, 65, 194, 188, 131, 48, 169, 46, 116, 135, 233, 124, 39, 119, 127, 84, }, { 21, 213, 70, 97, 147, 141, 142, 115, 204, 253, 161, 16, 85, 1, 221, 58, }, { 22, 170, 9, 197, 163, 137, 231, 148, 199, 115, 121, 164, 195, 155, 248, 136, }, { 23, 62, 141, 24, 179, 52, 192, 201, 127, 9, 49, 200, 177, 237, 90, 230, }, { 24, 126, 61, 105, 67, 32, 206, 52, 88, 250, 15, 233, 58, 90, 235, 217, }, { 25, 234, 185, 180, 83, 157, 233, 105, 224, 128, 71, 133, 72, 44, 73, 183, }, { 26, 149, 246, 16, 99, 153, 128, 142, 235, 14, 159, 49, 222, 182, 108, 5, }, { 27, 1, 114, 205, 115, 36, 167, 211, 83, 116, 215, 93, 172, 192, 206, 107, }, { 28, 107, 104, 155, 3, 145, 82, 131, 253, 209, 236, 154, 49, 65, 38, 162, }, { 29, 255, 236, 70, 19, 44, 117, 222, 69, 171, 164, 246, 67, 55, 132, 204, }, { 30, 128, 163, 226, 35, 40, 28, 57, 78, 37, 124, 66, 213, 173, 161, 126, }, { 31, 20, 39, 63, 51, 149, 59, 100, 246, 95, 52, 46, 167, 219, 3, 16, }, { 32, 168, 237, 156, 69, 193, 106, 241, 97, 155, 20, 30, 88, 216, 167, 94, }, { 33, 60, 105, 65, 85, 124, 77, 172, 217, 225, 92, 114, 42, 174, 5, 48, }, { 34, 67, 38, 229, 101, 120, 36, 75, 210, 111, 132, 198, 188, 52, 32, 130, }, { 35, 215, 162, 56, 117, 197, 3, 22, 106, 21, 204, 170, 206, 66, 130, 236, }, { 36, 189, 184, 110, 5, 112, 246, 70, 196, 176, 247, 109, 83, 195, 106, 37, }, { 37, 41, 60, 179, 21, 205, 209, 27, 124, 202, 191, 1, 33, 181, 200, 75, }, { 38, 86, 115, 23, 37, 201, 184, 252, 119, 68, 103, 181, 183, 47, 237, 249, }, { 39, 194, 247, 202, 53, 116, 159, 161, 207, 62, 47, 217, 197, 89, 79, 151, }, { 40, 130, 71, 187, 197, 96, 145, 92, 232, 205, 17, 248, 78, 238, 254, 168, }, { 41, 22, 195, 102, 213, 221, 182, 1, 80, 183, 89, 148, 60, 152, 92, 198, }, { 42, 105, 140, 194, 229, 217, 223, 230, 91, 57, 129, 32, 170, 2, 121, 116, }, { 43, 253, 8, 31, 245, 100, 248, 187, 227, 67, 201, 76, 216, 116, 219, 26, }, { 44, 151, 18, 73, 133, 209, 13, 235, 77, 230, 242, 139, 69, 245, 51, 211, }, { 45, 3, 150, 148, 149, 108, 42, 182, 245, 156, 186, 231, 55, 131, 145, 189, }, { 46, 124, 217, 48, 165, 104, 67, 81, 254, 18, 98, 83, 161, 25, 180, 15, }, { 47, 232, 93, 237, 181, 213, 100, 12, 70, 104, 42, 63, 211, 111, 22, 97, }, { 48, 252, 122, 210, 134, 64, 95, 104, 176, 55, 30, 17, 116, 180, 21, 113, }, { 49, 104, 254, 15, 150, 253, 120, 53, 8, 77, 86, 125, 6, 194, 183, 31, }, { 50, 23, 177, 171, 166, 249, 17, 210, 3, 195, 142, 201, 144, 88, 146, 173, }, { 51, 131, 53, 118, 182, 68, 54, 143, 187, 185, 198, 165, 226, 46, 48, 195, }, { 52, 233, 47, 32, 198, 241, 195, 223, 21, 28, 253, 98, 127, 175, 216, 10, }, { 53, 125, 171, 253, 214, 76, 228, 130, 173, 102, 181, 14, 13, 217, 122, 100, }, { 54, 2, 228, 89, 230, 72, 141, 101, 166, 232, 109, 186, 155, 67, 95, 214, }, { 55, 150, 96, 132, 246, 245, 170, 56, 30, 146, 37, 214, 233, 53, 253, 184, }, { 56, 214, 208, 245, 6, 225, 164, 197, 57, 97, 27, 247, 98, 130, 76, 135, }, { 57, 66, 84, 40, 22, 92, 131, 152, 129, 27, 83, 155, 16, 244, 238, 233, }, { 58, 61, 27, 140, 38, 88, 234, 127, 138, 149, 139, 47, 134, 110, 203, 91, }, { 59, 169, 159, 81, 54, 229, 205, 34, 50, 239, 195, 67, 244, 24, 105, 53, }, { 60, 195, 133, 7, 70, 80, 56, 114, 156, 74, 248, 132, 105, 153, 129, 252, }, { 61, 87, 1, 218, 86, 237, 31, 47, 36, 48, 176, 232, 27, 239, 35, 146, }, { 62, 40, 78, 126, 102, 233, 118, 200, 47, 190, 104, 92, 141, 117, 6, 32, }, { 63, 188, 202, 163, 118, 84, 81, 149, 151, 196, 32, 48, 255, 3, 164, 78, }, { 64, 147, 25, 251, 138, 65, 212, 33, 194, 245, 40, 60, 176, 115, 141, 188, }, { 65, 7, 157, 38, 154, 252, 243, 124, 122, 143, 96, 80, 194, 5, 47, 210, }, { 66, 120, 210, 130, 170, 248, 154, 155, 113, 1, 184, 228, 84, 159, 10, 96, }, { 67, 236, 86, 95, 186, 69, 189, 198, 201, 123, 240, 136, 38, 233, 168, 14, }, { 68, 134, 76, 9, 202, 240, 72, 150, 103, 222, 203, 79, 187, 104, 64, 199, }, { 69, 18, 200, 212, 218, 77, 111, 203, 223, 164, 131, 35, 201, 30, 226, 169, }, { 70, 109, 135, 112, 234, 73, 6, 44, 212, 42, 91, 151, 95, 132, 199, 27, }, { 71, 249, 3, 173, 250, 244, 33, 113, 108, 80, 19, 251, 45, 242, 101, 117, }, { 72, 185, 179, 220, 10, 224, 47, 140, 75, 163, 45, 218, 166, 69, 212, 74, }, { 73, 45, 55, 1, 26, 93, 8, 209, 243, 217, 101, 182, 212, 51, 118, 36, }, { 74, 82, 120, 165, 42, 89, 97, 54, 248, 87, 189, 2, 66, 169, 83, 150, }, { 75, 198, 252, 120, 58, 228, 70, 107, 64, 45, 245, 110, 48, 223, 241, 248, }, { 76, 172, 230, 46, 74, 81, 179, 59, 238, 136, 206, 169, 173, 94, 25, 49, }, { 77, 56, 98, 243, 90, 236, 148, 102, 86, 242, 134, 197, 223, 40, 187, 95, }, { 78, 71, 45, 87, 106, 232, 253, 129, 93, 124, 94, 113, 73, 178, 158, 237, }, { 79, 211, 169, 138, 122, 85, 218, 220, 229, 6, 22, 29, 59, 196, 60, 131, }, { 80, 199, 142, 181, 73, 192, 225, 184, 19, 89, 34, 51, 156, 31, 63, 147, }, { 81, 83, 10, 104, 89, 125, 198, 229, 171, 35, 106, 95, 238, 105, 157, 253, }, { 82, 44, 69, 204, 105, 121, 175, 2, 160, 173, 178, 235, 120, 243, 184, 79, }, { 83, 184, 193, 17, 121, 196, 136, 95, 24, 215, 250, 135, 10, 133, 26, 33, }, { 84, 210, 219, 71, 9, 113, 125, 15, 182, 114, 193, 64, 151, 4, 242, 232, }, { 85, 70, 95, 154, 25, 204, 90, 82, 14, 8, 137, 44, 229, 114, 80, 134, }, { 86, 57, 16, 62, 41, 200, 51, 181, 5, 134, 81, 152, 115, 232, 117, 52, }, { 87, 173, 148, 227, 57, 117, 20, 232, 189, 252, 25, 244, 1, 158, 215, 90, }, { 88, 237, 36, 146, 201, 97, 26, 21, 154, 15, 39, 213, 138, 41, 102, 101, }, { 89, 121, 160, 79, 217, 220, 61, 72, 34, 117, 111, 185, 248, 95, 196, 11, }, { 90, 6, 239, 235, 233, 216, 84, 175, 41, 251, 183, 13, 110, 197, 225, 185, }, { 91, 146, 107, 54, 249, 101, 115, 242, 145, 129, 255, 97, 28, 179, 67, 215, }, { 92, 248, 113, 96, 137, 208, 134, 162, 63, 36, 196, 166, 129, 50, 171, 30, }, { 93, 108, 245, 189, 153, 109, 161, 255, 135, 94, 140, 202, 243, 68, 9, 112, }, { 94, 19, 186, 25, 169, 105, 200, 24, 140, 208, 84, 126, 101, 222, 44, 194, }, { 95, 135, 62, 196, 185, 212, 239, 69, 52, 170, 28, 18, 23, 168, 142, 172, }, { 96, 59, 244, 103, 207, 128, 190, 208, 163, 110, 60, 34, 232, 171, 42, 226, }, { 97, 175, 112, 186, 223, 61, 153, 141, 27, 20, 116, 78, 154, 221, 136, 140, }, { 98, 208, 63, 30, 239, 57, 240, 106, 16, 154, 172, 250, 12, 71, 173, 62, }, { 99, 68, 187, 195, 255, 132, 215, 55, 168, 224, 228, 150, 126, 49, 15, 80, }, { 100, 46, 161, 149, 143, 49, 34, 103, 6, 69, 223, 81, 227, 176, 231, 153, }, { 101, 186, 37, 72, 159, 140, 5, 58, 190, 63, 151, 61, 145, 198, 69, 247, }, { 102, 197, 106, 236, 175, 136, 108, 221, 181, 177, 79, 137, 7, 92, 96, 69, }, { 103, 81, 238, 49, 191, 53, 75, 128, 13, 203, 7, 229, 117, 42, 194, 43, }, { 104, 17, 94, 64, 79, 33, 69, 125, 42, 56, 57, 196, 254, 157, 115, 20, }, { 105, 133, 218, 157, 95, 156, 98, 32, 146, 66, 113, 168, 140, 235, 209, 122, }, { 106, 250, 149, 57, 111, 152, 11, 199, 153, 204, 169, 28, 26, 113, 244, 200, }, { 107, 110, 17, 228, 127, 37, 44, 154, 33, 182, 225, 112, 104, 7, 86, 166, }, { 108, 4, 11, 178, 15, 144, 217, 202, 143, 19, 218, 183, 245, 134, 190, 111, }, { 109, 144, 143, 111, 31, 45, 254, 151, 55, 105, 146, 219, 135, 240, 28, 1, }, { 110, 239, 192, 203, 47, 41, 151, 112, 60, 231, 74, 111, 17, 106, 57, 179, }, { 111, 123, 68, 22, 63, 148, 176, 45, 132, 157, 2, 3, 99, 28, 155, 221, }, { 112, 111, 99, 41, 12, 1, 139, 73, 114, 194, 54, 45, 196, 199, 152, 205, }, { 113, 251, 231, 244, 28, 188, 172, 20, 202, 184, 126, 65, 182, 177, 58, 163, }, { 114, 132, 168, 80, 44, 184, 197, 243, 193, 54, 166, 245, 32, 43, 31, 17, }, { 115, 16, 44, 141, 60, 5, 226, 174, 121, 76, 238, 153, 82, 93, 189, 127, }, { 116, 122, 54, 219, 76, 176, 23, 254, 215, 233, 213, 94, 207, 220, 85, 182, }, { 117, 238, 178, 6, 92, 13, 48, 163, 111, 147, 157, 50, 189, 170, 247, 216, }, { 118, 145, 253, 162, 108, 9, 89, 68, 100, 29, 69, 134, 43, 48, 210, 106, }, { 119, 5, 121, 127, 124, 180, 126, 25, 220, 103, 13, 234, 89, 70, 112, 4, }, { 120, 69, 201, 14, 140, 160, 112, 228, 251, 148, 51, 203, 210, 241, 193, 59, }, { 121, 209, 77, 211, 156, 29, 87, 185, 67, 238, 123, 167, 160, 135, 99, 85, }, { 122, 174, 2, 119, 172, 25, 62, 94, 72, 96, 163, 19, 54, 29, 70, 231, }, { 123, 58, 134, 170, 188, 164, 25, 3, 240, 26, 235, 127, 68, 107, 228, 137, }, { 124, 80, 156, 252, 204, 17, 236, 83, 94, 191, 208, 184, 217, 234, 12, 64, }, { 125, 196, 24, 33, 220, 172, 203, 14, 230, 197, 152, 212, 171, 156, 174, 46, }, { 126, 187, 87, 133, 236, 168, 162, 233, 237, 75, 64, 96, 61, 6, 139, 156, }, { 127, 47, 211, 88, 252, 21, 133, 180, 85, 49, 8, 12, 79, 112, 41, 242, }, { 128, 229, 50, 53, 215, 130, 107, 66, 71, 41, 80, 120, 163, 230, 217, 187, }, { 129, 113, 182, 232, 199, 63, 76, 31, 255, 83, 24, 20, 209, 144, 123, 213, }, { 130, 14, 249, 76, 247, 59, 37, 248, 244, 221, 192, 160, 71, 10, 94, 103, }, { 131, 154, 125, 145, 231, 134, 2, 165, 76, 167, 136, 204, 53, 124, 252, 9, }, { 132, 240, 103, 199, 151, 51, 247, 245, 226, 2, 179, 11, 168, 253, 20, 192, }, { 133, 100, 227, 26, 135, 142, 208, 168, 90, 120, 251, 103, 218, 139, 182, 174, }, { 134, 27, 172, 190, 183, 138, 185, 79, 81, 246, 35, 211, 76, 17, 147, 28, }, { 135, 143, 40, 99, 167, 55, 158, 18, 233, 140, 107, 191, 62, 103, 49, 114, }, { 136, 207, 152, 18, 87, 35, 144, 239, 206, 127, 85, 158, 181, 208, 128, 77, }, { 137, 91, 28, 207, 71, 158, 183, 178, 118, 5, 29, 242, 199, 166, 34, 35, }, { 138, 36, 83, 107, 119, 154, 222, 85, 125, 139, 197, 70, 81, 60, 7, 145, }, { 139, 176, 215, 182, 103, 39, 249, 8, 197, 241, 141, 42, 35, 74, 165, 255, }, { 140, 218, 205, 224, 23, 146, 12, 88, 107, 84, 182, 237, 190, 203, 77, 54, }, { 141, 78, 73, 61, 7, 47, 43, 5, 211, 46, 254, 129, 204, 189, 239, 88, }, { 142, 49, 6, 153, 55, 43, 66, 226, 216, 160, 38, 53, 90, 39, 202, 234, }, { 143, 165, 130, 68, 39, 150, 101, 191, 96, 218, 110, 89, 40, 81, 104, 132, }, { 144, 177, 165, 123, 20, 3, 94, 219, 150, 133, 90, 119, 143, 138, 107, 148, }, { 145, 37, 33, 166, 4, 190, 121, 134, 46, 255, 18, 27, 253, 252, 201, 250, }, { 146, 90, 110, 2, 52, 186, 16, 97, 37, 113, 202, 175, 107, 102, 236, 72, }, { 147, 206, 234, 223, 36, 7, 55, 60, 157, 11, 130, 195, 25, 16, 78, 38, }, { 148, 164, 240, 137, 84, 178, 194, 108, 51, 174, 185, 4, 132, 145, 166, 239, }, { 149, 48, 116, 84, 68, 15, 229, 49, 139, 212, 241, 104, 246, 231, 4, 129, }, { 150, 79, 59, 240, 116, 11, 140, 214, 128, 90, 41, 220, 96, 125, 33, 51, }, { 151, 219, 191, 45, 100, 182, 171, 139, 56, 32, 97, 176, 18, 11, 131, 93, }, { 152, 155, 15, 92, 148, 162, 165, 118, 31, 211, 95, 145, 153, 188, 50, 98, }, { 153, 15, 139, 129, 132, 31, 130, 43, 167, 169, 23, 253, 235, 202, 144, 12, }, { 154, 112, 196, 37, 180, 27, 235, 204, 172, 39, 207, 73, 125, 80, 181, 190, }, { 155, 228, 64, 248, 164, 166, 204, 145, 20, 93, 135, 37, 15, 38, 23, 208, }, { 156, 142, 90, 174, 212, 19, 57, 193, 186, 248, 188, 226, 146, 167, 255, 25, }, { 157, 26, 222, 115, 196, 174, 30, 156, 2, 130, 244, 142, 224, 209, 93, 119, }, { 158, 101, 145, 215, 244, 170, 119, 123, 9, 12, 44, 58, 118, 75, 120, 197, }, { 159, 241, 21, 10, 228, 23, 80, 38, 177, 118, 100, 86, 4, 61, 218, 171, }, { 160, 77, 223, 169, 146, 67, 1, 179, 38, 178, 68, 102, 251, 62, 126, 229, }, { 161, 217, 91, 116, 130, 254, 38, 238, 158, 200, 12, 10, 137, 72, 220, 139, }, { 162, 166, 20, 208, 178, 250, 79, 9, 149, 70, 212, 190, 31, 210, 249, 57, }, { 163, 50, 144, 13, 162, 71, 104, 84, 45, 60, 156, 210, 109, 164, 91, 87, }, { 164, 88, 138, 91, 210, 242, 157, 4, 131, 153, 167, 21, 240, 37, 179, 158, }, { 165, 204, 14, 134, 194, 79, 186, 89, 59, 227, 239, 121, 130, 83, 17, 240, }, { 166, 179, 65, 34, 242, 75, 211, 190, 48, 109, 55, 205, 20, 201, 52, 66, }, { 167, 39, 197, 255, 226, 246, 244, 227, 136, 23, 127, 161, 102, 191, 150, 44, }, { 168, 103, 117, 142, 18, 226, 250, 30, 175, 228, 65, 128, 237, 8, 39, 19, }, { 169, 243, 241, 83, 2, 95, 221, 67, 23, 158, 9, 236, 159, 126, 133, 125, }, { 170, 140, 190, 247, 50, 91, 180, 164, 28, 16, 209, 88, 9, 228, 160, 207, }, { 171, 24, 58, 42, 34, 230, 147, 249, 164, 106, 153, 52, 123, 146, 2, 161, }, { 172, 114, 32, 124, 82, 83, 102, 169, 10, 207, 162, 243, 230, 19, 234, 104, }, { 173, 230, 164, 161, 66, 238, 65, 244, 178, 181, 234, 159, 148, 101, 72, 6, }, { 174, 153, 235, 5, 114, 234, 40, 19, 185, 59, 50, 43, 2, 255, 109, 180, }, { 175, 13, 111, 216, 98, 87, 15, 78, 1, 65, 122, 71, 112, 137, 207, 218, }, { 176, 25, 72, 231, 81, 194, 52, 42, 247, 30, 78, 105, 215, 82, 204, 202, }, { 177, 141, 204, 58, 65, 127, 19, 119, 79, 100, 6, 5, 165, 36, 110, 164, }, { 178, 242, 131, 158, 113, 123, 122, 144, 68, 234, 222, 177, 51, 190, 75, 22, }, { 179, 102, 7, 67, 97, 198, 93, 205, 252, 144, 150, 221, 65, 200, 233, 120, }, { 180, 12, 29, 21, 17, 115, 168, 157, 82, 53, 173, 26, 220, 73, 1, 177, }, { 181, 152, 153, 200, 1, 206, 143, 192, 234, 79, 229, 118, 174, 63, 163, 223, }, { 182, 231, 214, 108, 49, 202, 230, 39, 225, 193, 61, 194, 56, 165, 134, 109, }, { 183, 115, 82, 177, 33, 119, 193, 122, 89, 187, 117, 174, 74, 211, 36, 3, }, { 184, 51, 226, 192, 209, 99, 207, 135, 126, 72, 75, 143, 193, 100, 149, 60, }, { 185, 167, 102, 29, 193, 222, 232, 218, 198, 50, 3, 227, 179, 18, 55, 82, }, { 186, 216, 41, 185, 241, 218, 129, 61, 205, 188, 219, 87, 37, 136, 18, 224, }, { 187, 76, 173, 100, 225, 103, 166, 96, 117, 198, 147, 59, 87, 254, 176, 142, }, { 188, 38, 183, 50, 145, 210, 83, 48, 219, 99, 168, 252, 202, 127, 88, 71, }, { 189, 178, 51, 239, 129, 111, 116, 109, 99, 25, 224, 144, 184, 9, 250, 41, }, { 190, 205, 124, 75, 177, 107, 29, 138, 104, 151, 56, 36, 46, 147, 223, 155, }, { 191, 89, 248, 150, 161, 214, 58, 215, 208, 237, 112, 72, 92, 229, 125, 245, }, { 192, 118, 43, 206, 93, 195, 191, 99, 133, 220, 120, 68, 19, 149, 84, 7, }, { 193, 226, 175, 19, 77, 126, 152, 62, 61, 166, 48, 40, 97, 227, 246, 105, }, { 194, 157, 224, 183, 125, 122, 241, 217, 54, 40, 232, 156, 247, 121, 211, 219, }, { 195, 9, 100, 106, 109, 199, 214, 132, 142, 82, 160, 240, 133, 15, 113, 181, }, { 196, 99, 126, 60, 29, 114, 35, 212, 32, 247, 155, 55, 24, 142, 153, 124, }, { 197, 247, 250, 225, 13, 207, 4, 137, 152, 141, 211, 91, 106, 248, 59, 18, }, { 198, 136, 181, 69, 61, 203, 109, 110, 147, 3, 11, 239, 252, 98, 30, 160, }, { 199, 28, 49, 152, 45, 118, 74, 51, 43, 121, 67, 131, 142, 20, 188, 206, }, { 200, 92, 129, 233, 221, 98, 68, 206, 12, 138, 125, 162, 5, 163, 13, 241, }, { 201, 200, 5, 52, 205, 223, 99, 147, 180, 240, 53, 206, 119, 213, 175, 159, }, { 202, 183, 74, 144, 253, 219, 10, 116, 191, 126, 237, 122, 225, 79, 138, 45, }, { 203, 35, 206, 77, 237, 102, 45, 41, 7, 4, 165, 22, 147, 57, 40, 67, }, { 204, 73, 212, 27, 157, 211, 216, 121, 169, 161, 158, 209, 14, 184, 192, 138, }, { 205, 221, 80, 198, 141, 110, 255, 36, 17, 219, 214, 189, 124, 206, 98, 228, }, { 206, 162, 31, 98, 189, 106, 150, 195, 26, 85, 14, 9, 234, 84, 71, 86, }, { 207, 54, 155, 191, 173, 215, 177, 158, 162, 47, 70, 101, 152, 34, 229, 56, }, { 208, 34, 188, 128, 158, 66, 138, 250, 84, 112, 114, 75, 63, 249, 230, 40, }, { 209, 182, 56, 93, 142, 255, 173, 167, 236, 10, 58, 39, 77, 143, 68, 70, }, { 210, 201, 119, 249, 190, 251, 196, 64, 231, 132, 226, 147, 219, 21, 97, 244, }, { 211, 93, 243, 36, 174, 70, 227, 29, 95, 254, 170, 255, 169, 99, 195, 154, }, { 212, 55, 233, 114, 222, 243, 22, 77, 241, 91, 145, 56, 52, 226, 43, 83, }, { 213, 163, 109, 175, 206, 78, 49, 16, 73, 33, 217, 84, 70, 148, 137, 61, }, { 214, 220, 34, 11, 254, 74, 88, 247, 66, 175, 1, 224, 208, 14, 172, 143, }, { 215, 72, 166, 214, 238, 247, 127, 170, 250, 213, 73, 140, 162, 120, 14, 225, }, { 216, 8, 22, 167, 30, 227, 113, 87, 221, 38, 119, 173, 41, 207, 191, 222, }, { 217, 156, 146, 122, 14, 94, 86, 10, 101, 92, 63, 193, 91, 185, 29, 176, }, { 218, 227, 221, 222, 62, 90, 63, 237, 110, 210, 231, 117, 205, 35, 56, 2, }, { 219, 119, 89, 3, 46, 231, 24, 176, 214, 168, 175, 25, 191, 85, 154, 108, }, { 220, 29, 67, 85, 94, 82, 237, 224, 120, 13, 148, 222, 34, 212, 114, 165, }, { 221, 137, 199, 136, 78, 239, 202, 189, 192, 119, 220, 178, 80, 162, 208, 203, }, { 222, 246, 136, 44, 126, 235, 163, 90, 203, 249, 4, 6, 198, 56, 245, 121, }, { 223, 98, 12, 241, 110, 86, 132, 7, 115, 131, 76, 106, 180, 78, 87, 23, }, { 224, 222, 198, 82, 24, 2, 213, 146, 228, 71, 108, 90, 75, 77, 243, 89, }, { 225, 74, 66, 143, 8, 191, 242, 207, 92, 61, 36, 54, 57, 59, 81, 55, }, { 226, 53, 13, 43, 56, 187, 155, 40, 87, 179, 252, 130, 175, 161, 116, 133, }, { 227, 161, 137, 246, 40, 6, 188, 117, 239, 201, 180, 238, 221, 215, 214, 235, }, { 228, 203, 147, 160, 88, 179, 73, 37, 65, 108, 143, 41, 64, 86, 62, 34, }, { 229, 95, 23, 125, 72, 14, 110, 120, 249, 22, 199, 69, 50, 32, 156, 76, }, { 230, 32, 88, 217, 120, 10, 7, 159, 242, 152, 31, 241, 164, 186, 185, 254, }, { 231, 180, 220, 4, 104, 183, 32, 194, 74, 226, 87, 157, 214, 204, 27, 144, }, { 232, 244, 108, 117, 152, 163, 46, 63, 109, 17, 105, 188, 93, 123, 170, 175, }, { 233, 96, 232, 168, 136, 30, 9, 98, 213, 107, 33, 208, 47, 13, 8, 193, }, { 234, 31, 167, 12, 184, 26, 96, 133, 222, 229, 249, 100, 185, 151, 45, 115, }, { 235, 139, 35, 209, 168, 167, 71, 216, 102, 159, 177, 8, 203, 225, 143, 29, }, { 236, 225, 57, 135, 216, 18, 178, 136, 200, 58, 138, 207, 86, 96, 103, 212, }, { 237, 117, 189, 90, 200, 175, 149, 213, 112, 64, 194, 163, 36, 22, 197, 186, }, { 238, 10, 242, 254, 248, 171, 252, 50, 123, 206, 26, 23, 178, 140, 224, 8, }, { 239, 158, 118, 35, 232, 22, 219, 111, 195, 180, 82, 123, 192, 250, 66, 102, }, { 240, 138, 81, 28, 219, 131, 224, 11, 53, 235, 102, 85, 103, 33, 65, 118, }, { 241, 30, 213, 193, 203, 62, 199, 86, 141, 145, 46, 57, 21, 87, 227, 24, }, { 242, 97, 154, 101, 251, 58, 174, 177, 134, 31, 246, 141, 131, 205, 198, 170, }, { 243, 245, 30, 184, 235, 135, 137, 236, 62, 101, 190, 225, 241, 187, 100, 196, }, { 244, 159, 4, 238, 155, 50, 124, 188, 144, 192, 133, 38, 108, 58, 140, 13, }, { 245, 11, 128, 51, 139, 143, 91, 225, 40, 186, 205, 74, 30, 76, 46, 99, }, { 246, 116, 207, 151, 187, 139, 50, 6, 35, 52, 21, 254, 136, 214, 11, 209, }, { 247, 224, 75, 74, 171, 54, 21, 91, 155, 78, 93, 146, 250, 160, 169, 191, }, { 248, 160, 251, 59, 91, 34, 27, 166, 188, 189, 99, 179, 113, 23, 24, 128, }, { 249, 52, 127, 230, 75, 159, 60, 251, 4, 199, 43, 223, 3, 97, 186, 238, }, { 250, 75, 48, 66, 123, 155, 85, 28, 15, 73, 243, 107, 149, 251, 159, 92, }, { 251, 223, 180, 159, 107, 38, 114, 65, 183, 51, 187, 7, 231, 141, 61, 50, }, { 252, 181, 174, 201, 27, 147, 135, 17, 25, 150, 128, 192, 122, 12, 213, 251, }, { 253, 33, 42, 20, 11, 46, 160, 76, 161, 236, 200, 172, 8, 122, 119, 149, }, { 254, 94, 101, 176, 59, 42, 201, 171, 170, 98, 16, 24, 158, 224, 82, 39, }, { 255, 202, 225, 109, 43, 151, 238, 246, 18, 24, 88, 116, 236, 150, 240, 73, }, }, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, { 148, 165, 100, 13, 137, 162, 127, 75, 110, 22, 195, 76, 232, 227, 208, 77, }, { 235, 137, 200, 26, 209, 135, 254, 150, 220, 44, 69, 152, 19, 5, 99, 154, }, { 127, 44, 172, 23, 88, 37, 129, 221, 178, 58, 134, 212, 251, 230, 179, 215, }, { 21, 209, 83, 52, 97, 205, 63, 239, 123, 88, 138, 243, 38, 10, 198, 247, }, { 129, 116, 55, 57, 232, 111, 64, 164, 21, 78, 73, 191, 206, 233, 22, 186, }, { 254, 88, 155, 46, 176, 74, 193, 121, 167, 116, 207, 107, 53, 15, 165, 109, }, { 106, 253, 255, 35, 57, 232, 190, 50, 201, 98, 12, 39, 221, 236, 117, 32, }, { 42, 97, 166, 104, 194, 89, 126, 29, 246, 176, 215, 37, 76, 20, 79, 45, }, { 190, 196, 194, 101, 75, 251, 1, 86, 152, 166, 20, 105, 164, 247, 159, 96, }, { 193, 232, 110, 114, 19, 222, 128, 139, 42, 156, 146, 189, 95, 17, 44, 183, }, { 85, 77, 10, 127, 154, 124, 255, 192, 68, 138, 81, 241, 183, 242, 252, 250, }, { 63, 176, 245, 92, 163, 148, 65, 242, 141, 232, 93, 214, 106, 30, 137, 218, }, { 171, 21, 145, 81, 42, 54, 62, 185, 227, 254, 158, 154, 130, 253, 89, 151, }, { 212, 57, 61, 70, 114, 19, 191, 100, 81, 196, 24, 78, 121, 27, 234, 64, }, { 64, 156, 89, 75, 251, 177, 192, 47, 63, 210, 219, 2, 145, 248, 58, 13, }, { 84, 194, 143, 208, 71, 178, 252, 58, 47, 163, 109, 74, 152, 40, 158, 90, }, { 192, 103, 235, 221, 206, 16, 131, 113, 65, 181, 174, 6, 112, 203, 78, 23, }, { 191, 75, 71, 202, 150, 53, 2, 172, 243, 143, 40, 210, 139, 45, 253, 192, }, { 43, 238, 35, 199, 31, 151, 125, 231, 157, 153, 235, 158, 99, 206, 45, 141, }, { 65, 19, 220, 228, 38, 127, 195, 213, 84, 251, 231, 185, 190, 34, 88, 173, }, { 213, 182, 184, 233, 175, 221, 188, 158, 58, 237, 36, 245, 86, 193, 136, 224, }, { 170, 154, 20, 254, 247, 248, 61, 67, 136, 215, 162, 33, 173, 39, 59, 55, }, { 62, 63, 112, 243, 126, 90, 66, 8, 230, 193, 97, 109, 69, 196, 235, 122, }, { 126, 163, 41, 184, 133, 235, 130, 39, 217, 19, 186, 111, 212, 60, 209, 119, }, { 234, 6, 77, 181, 12, 73, 253, 108, 183, 5, 121, 35, 60, 223, 1, 58, }, { 149, 42, 225, 162, 84, 108, 124, 177, 5, 63, 255, 247, 199, 57, 178, 237, }, { 1, 143, 133, 175, 221, 206, 3, 250, 107, 41, 60, 187, 47, 218, 98, 160, }, { 107, 114, 122, 140, 228, 38, 189, 200, 162, 75, 48, 156, 242, 54, 23, 128, }, { 255, 215, 30, 129, 109, 132, 194, 131, 204, 93, 243, 208, 26, 213, 199, 205, }, { 128, 251, 178, 150, 53, 161, 67, 94, 126, 103, 117, 4, 225, 51, 116, 26, }, { 20, 94, 214, 155, 188, 3, 60, 21, 16, 113, 182, 72, 9, 208, 164, 87, }, { 168, 71, 221, 99, 142, 167, 59, 116, 94, 133, 218, 148, 243, 80, 255, 180, }, { 60, 226, 185, 110, 7, 5, 68, 63, 48, 147, 25, 216, 27, 179, 47, 249, }, { 67, 206, 21, 121, 95, 32, 197, 226, 130, 169, 159, 12, 224, 85, 156, 46, }, { 215, 107, 113, 116, 214, 130, 186, 169, 236, 191, 92, 64, 8, 182, 76, 99, }, { 189, 150, 142, 87, 239, 106, 4, 155, 37, 221, 80, 103, 213, 90, 57, 67, }, { 41, 51, 234, 90, 102, 200, 123, 208, 75, 203, 147, 43, 61, 185, 233, 14, }, { 86, 31, 70, 77, 62, 237, 250, 13, 249, 241, 21, 255, 198, 95, 90, 217, }, { 194, 186, 34, 64, 183, 79, 133, 70, 151, 231, 214, 179, 46, 188, 138, 148, }, { 130, 38, 123, 11, 76, 254, 69, 105, 168, 53, 13, 177, 191, 68, 176, 153, }, { 22, 131, 31, 6, 197, 92, 58, 34, 198, 35, 206, 253, 87, 167, 96, 212, }, { 105, 175, 179, 17, 157, 121, 187, 255, 116, 25, 72, 41, 172, 65, 211, 3, }, { 253, 10, 215, 28, 20, 219, 196, 180, 26, 15, 139, 101, 68, 162, 3, 78, }, { 151, 247, 40, 63, 45, 51, 122, 134, 211, 109, 135, 66, 153, 78, 118, 110, }, { 3, 82, 76, 50, 164, 145, 5, 205, 189, 123, 68, 14, 113, 173, 166, 35, }, { 124, 126, 224, 37, 252, 180, 132, 16, 15, 65, 194, 218, 138, 75, 21, 244, }, { 232, 219, 132, 40, 117, 22, 251, 91, 97, 87, 1, 150, 98, 168, 197, 185, }, { 252, 133, 82, 179, 201, 21, 199, 78, 113, 38, 183, 222, 107, 120, 97, 238, }, { 104, 32, 54, 190, 64, 183, 184, 5, 31, 48, 116, 146, 131, 155, 177, 163, }, { 23, 12, 154, 169, 24, 146, 57, 216, 173, 10, 242, 70, 120, 125, 2, 116, }, { 131, 169, 254, 164, 145, 48, 70, 147, 195, 28, 49, 10, 144, 158, 210, 57, }, { 233, 84, 1, 135, 168, 216, 248, 161, 10, 126, 61, 45, 77, 114, 167, 25, }, { 125, 241, 101, 138, 33, 122, 135, 234, 100, 104, 254, 97, 165, 145, 119, 84, }, { 2, 221, 201, 157, 121, 95, 6, 55, 214, 82, 120, 181, 94, 119, 196, 131, }, { 150, 120, 173, 144, 240, 253, 121, 124, 184, 68, 187, 249, 182, 148, 20, 206, }, { 214, 228, 244, 219, 11, 76, 185, 83, 135, 150, 96, 251, 39, 108, 46, 195, }, { 66, 65, 144, 214, 130, 238, 198, 24, 233, 128, 163, 183, 207, 143, 254, 142, }, { 61, 109, 60, 193, 218, 203, 71, 197, 91, 186, 37, 99, 52, 105, 77, 89, }, { 169, 200, 88, 204, 83, 105, 56, 142, 53, 172, 230, 47, 220, 138, 157, 20, }, { 195, 53, 167, 239, 106, 129, 134, 188, 252, 206, 234, 8, 1, 102, 232, 52, }, { 87, 144, 195, 226, 227, 35, 249, 247, 146, 216, 41, 68, 233, 133, 56, 121, }, { 40, 188, 111, 245, 187, 6, 120, 42, 32, 226, 175, 144, 18, 99, 139, 174, }, { 188, 25, 11, 248, 50, 164, 7, 97, 78, 244, 108, 220, 250, 128, 91, 227, }, { 147, 142, 121, 198, 223, 141, 118, 232, 188, 201, 119, 235, 37, 160, 61, 171, }, { 7, 43, 29, 203, 86, 47, 9, 163, 210, 223, 180, 167, 205, 67, 237, 230, }, { 120, 7, 177, 220, 14, 10, 136, 126, 96, 229, 50, 115, 54, 165, 94, 49, }, { 236, 162, 213, 209, 135, 168, 247, 53, 14, 243, 241, 63, 222, 70, 142, 124, }, { 134, 95, 42, 242, 190, 64, 73, 7, 199, 145, 253, 24, 3, 170, 251, 92, }, { 18, 250, 78, 255, 55, 226, 54, 76, 169, 135, 62, 84, 235, 73, 43, 17, }, { 109, 214, 226, 232, 111, 199, 183, 145, 27, 189, 184, 128, 16, 175, 152, 198, }, { 249, 115, 134, 229, 230, 101, 200, 218, 117, 171, 123, 204, 248, 76, 72, 139, }, { 185, 239, 223, 174, 29, 212, 8, 245, 74, 121, 160, 206, 105, 180, 114, 134, }, { 45, 74, 187, 163, 148, 118, 119, 190, 36, 111, 99, 130, 129, 87, 162, 203, }, { 82, 102, 23, 180, 204, 83, 246, 99, 150, 85, 229, 86, 122, 177, 17, 28, }, { 198, 195, 115, 185, 69, 241, 137, 40, 248, 67, 38, 26, 146, 82, 193, 81, }, { 172, 62, 140, 154, 124, 25, 55, 26, 49, 33, 42, 61, 79, 190, 180, 113, }, { 56, 155, 232, 151, 245, 187, 72, 81, 95, 55, 233, 113, 167, 93, 100, 60, }, { 71, 183, 68, 128, 173, 158, 201, 140, 237, 13, 111, 165, 92, 187, 215, 235, }, { 211, 18, 32, 141, 36, 60, 182, 199, 131, 27, 172, 233, 180, 88, 7, 166, }, { 199, 76, 246, 22, 152, 63, 138, 210, 147, 106, 26, 161, 189, 136, 163, 241, }, { 83, 233, 146, 27, 17, 157, 245, 153, 253, 124, 217, 237, 85, 107, 115, 188, }, { 44, 197, 62, 12, 73, 184, 116, 68, 79, 70, 95, 57, 174, 141, 192, 107, }, { 184, 96, 90, 1, 192, 26, 11, 15, 33, 80, 156, 117, 70, 110, 16, 38, }, { 210, 157, 165, 34, 249, 242, 181, 61, 232, 50, 144, 82, 155, 130, 101, 6, }, { 70, 56, 193, 47, 112, 80, 202, 118, 134, 36, 83, 30, 115, 97, 181, 75, }, { 57, 20, 109, 56, 40, 117, 75, 171, 52, 30, 213, 202, 136, 135, 6, 156, }, { 173, 177, 9, 53, 161, 215, 52, 224, 90, 8, 22, 134, 96, 100, 214, 209, }, { 237, 45, 80, 126, 90, 102, 244, 207, 101, 218, 205, 132, 241, 156, 236, 220, }, { 121, 136, 52, 115, 211, 196, 139, 132, 11, 204, 14, 200, 25, 127, 60, 145, }, { 6, 164, 152, 100, 139, 225, 10, 89, 185, 246, 136, 28, 226, 153, 143, 70, }, { 146, 1, 252, 105, 2, 67, 117, 18, 215, 224, 75, 80, 10, 122, 95, 11, }, { 248, 252, 3, 74, 59, 171, 203, 32, 30, 130, 71, 119, 215, 150, 42, 43, }, { 108, 89, 103, 71, 178, 9, 180, 107, 112, 148, 132, 59, 63, 117, 250, 102, }, { 19, 117, 203, 80, 234, 44, 53, 182, 194, 174, 2, 239, 196, 147, 73, 177, }, { 135, 208, 175, 93, 99, 142, 74, 253, 172, 184, 193, 163, 44, 112, 153, 252, }, { 59, 201, 164, 165, 81, 42, 77, 156, 226, 76, 173, 127, 214, 240, 194, 31, }, { 175, 108, 192, 168, 216, 136, 50, 215, 140, 90, 110, 51, 62, 19, 18, 82, }, { 208, 64, 108, 191, 128, 173, 179, 10, 62, 96, 232, 231, 197, 245, 161, 133, }, { 68, 229, 8, 178, 9, 15, 204, 65, 80, 118, 43, 171, 45, 22, 113, 200, }, { 46, 24, 247, 145, 48, 231, 114, 115, 153, 20, 39, 140, 240, 250, 4, 232, }, { 186, 189, 147, 156, 185, 69, 13, 56, 247, 2, 228, 192, 24, 25, 212, 165, }, { 197, 145, 63, 139, 225, 96, 140, 229, 69, 56, 98, 20, 227, 255, 103, 114, }, { 81, 52, 91, 134, 104, 194, 243, 174, 43, 46, 161, 88, 11, 28, 183, 63, }, { 17, 168, 2, 205, 147, 115, 51, 129, 20, 252, 122, 90, 154, 228, 141, 50, }, { 133, 13, 102, 192, 26, 209, 76, 202, 122, 234, 185, 22, 114, 7, 93, 127, }, { 250, 33, 202, 215, 66, 244, 205, 23, 200, 208, 63, 194, 137, 225, 238, 168, }, { 110, 132, 174, 218, 203, 86, 178, 92, 166, 198, 252, 142, 97, 2, 62, 229, }, { 4, 121, 81, 249, 242, 190, 12, 110, 111, 164, 240, 169, 188, 238, 75, 197, }, { 144, 220, 53, 244, 123, 28, 115, 37, 1, 178, 51, 229, 84, 13, 155, 136, }, { 239, 240, 153, 227, 35, 57, 242, 248, 179, 136, 181, 49, 175, 235, 40, 95, }, { 123, 85, 253, 238, 170, 155, 141, 179, 221, 158, 118, 125, 71, 8, 248, 18, }, { 111, 11, 43, 117, 22, 152, 177, 166, 205, 239, 192, 53, 78, 216, 92, 69, }, { 251, 174, 79, 120, 159, 58, 206, 237, 163, 249, 3, 121, 166, 59, 140, 8, }, { 132, 130, 227, 111, 199, 31, 79, 48, 17, 195, 133, 173, 93, 221, 63, 223, }, { 16, 39, 135, 98, 78, 189, 48, 123, 127, 213, 70, 225, 181, 62, 239, 146, }, { 122, 218, 120, 65, 119, 85, 142, 73, 182, 183, 74, 198, 104, 210, 154, 178, }, { 238, 127, 28, 76, 254, 247, 241, 2, 216, 161, 137, 138, 128, 49, 74, 255, }, { 145, 83, 176, 91, 166, 210, 112, 223, 106, 155, 15, 94, 123, 215, 249, 40, }, { 5, 246, 212, 86, 47, 112, 15, 148, 4, 141, 204, 18, 147, 52, 41, 101, }, { 69, 106, 141, 29, 212, 193, 207, 187, 59, 95, 23, 16, 2, 204, 19, 104, }, { 209, 207, 233, 16, 93, 99, 176, 240, 85, 73, 212, 92, 234, 47, 195, 37, }, { 174, 227, 69, 7, 5, 70, 49, 45, 231, 115, 82, 136, 17, 201, 112, 242, }, { 58, 70, 33, 10, 140, 228, 78, 102, 137, 101, 145, 196, 249, 42, 160, 191, }, { 80, 187, 222, 41, 181, 12, 240, 84, 64, 7, 157, 227, 36, 198, 213, 159, }, { 196, 30, 186, 36, 60, 174, 143, 31, 46, 17, 94, 175, 204, 37, 5, 210, }, { 187, 50, 22, 51, 100, 139, 14, 194, 156, 43, 216, 123, 55, 195, 182, 5, }, { 47, 151, 114, 62, 237, 41, 113, 137, 242, 61, 27, 55, 223, 32, 102, 72, }, { 229, 223, 242, 79, 125, 217, 236, 19, 187, 81, 238, 21, 74, 131, 122, 149, }, { 113, 122, 150, 66, 244, 123, 147, 88, 213, 71, 45, 89, 162, 96, 170, 216, }, { 14, 86, 58, 85, 172, 94, 18, 133, 103, 125, 171, 141, 89, 134, 25, 15, }, { 154, 243, 94, 88, 37, 252, 109, 206, 9, 107, 104, 193, 177, 101, 201, 66, }, { 240, 14, 161, 123, 28, 20, 211, 252, 192, 9, 100, 230, 108, 137, 188, 98, }, { 100, 171, 197, 118, 149, 182, 172, 183, 174, 31, 167, 170, 132, 106, 108, 47, }, { 27, 135, 105, 97, 205, 147, 45, 106, 28, 37, 33, 126, 127, 140, 223, 248, }, { 143, 34, 13, 108, 68, 49, 82, 33, 114, 51, 226, 50, 151, 111, 15, 181, }, { 207, 190, 84, 39, 191, 128, 146, 14, 77, 225, 57, 48, 6, 151, 53, 184, }, { 91, 27, 48, 42, 54, 34, 237, 69, 35, 247, 250, 124, 238, 116, 229, 245, }, { 36, 55, 156, 61, 110, 7, 108, 152, 145, 205, 124, 168, 21, 146, 86, 34, }, { 176, 146, 248, 48, 231, 165, 19, 211, 255, 219, 191, 228, 253, 113, 134, 111, }, { 218, 111, 7, 19, 222, 77, 173, 225, 54, 185, 179, 195, 32, 157, 243, 79, }, { 78, 202, 99, 30, 87, 239, 210, 170, 88, 175, 112, 143, 200, 126, 35, 2, }, { 49, 230, 207, 9, 15, 202, 83, 119, 234, 149, 246, 91, 51, 152, 144, 213, }, { 165, 67, 171, 4, 134, 104, 44, 60, 132, 131, 53, 23, 219, 123, 64, 152, }, { 177, 29, 125, 159, 58, 107, 16, 41, 148, 242, 131, 95, 210, 171, 228, 207, }, { 37, 184, 25, 146, 179, 201, 111, 98, 250, 228, 64, 19, 58, 72, 52, 130, }, { 90, 148, 181, 133, 235, 236, 238, 191, 72, 222, 198, 199, 193, 174, 135, 85, }, { 206, 49, 209, 136, 98, 78, 145, 244, 38, 200, 5, 139, 41, 77, 87, 24, }, { 164, 204, 46, 171, 91, 166, 47, 198, 239, 170, 9, 172, 244, 161, 34, 56, }, { 48, 105, 74, 166, 210, 4, 80, 141, 129, 188, 202, 224, 28, 66, 242, 117, }, { 79, 69, 230, 177, 138, 33, 209, 80, 51, 134, 76, 52, 231, 164, 65, 162, }, { 219, 224, 130, 188, 3, 131, 174, 27, 93, 144, 143, 120, 15, 71, 145, 239, }, { 155, 124, 219, 247, 248, 50, 110, 52, 98, 66, 84, 122, 158, 191, 171, 226, }, { 15, 217, 191, 250, 113, 144, 17, 127, 12, 84, 151, 54, 118, 92, 123, 175, }, { 112, 245, 19, 237, 41, 181, 144, 162, 190, 110, 17, 226, 141, 186, 200, 120, }, { 228, 80, 119, 224, 160, 23, 239, 233, 208, 120, 210, 174, 101, 89, 24, 53, }, { 142, 173, 136, 195, 153, 255, 81, 219, 25, 26, 222, 137, 184, 181, 109, 21, }, { 26, 8, 236, 206, 16, 93, 46, 144, 119, 12, 29, 197, 80, 86, 189, 88, }, { 101, 36, 64, 217, 72, 120, 175, 77, 197, 54, 155, 17, 171, 176, 14, 143, }, { 241, 129, 36, 212, 193, 218, 208, 6, 171, 32, 88, 93, 67, 83, 222, 194, }, { 77, 152, 47, 44, 243, 126, 215, 103, 229, 212, 52, 129, 185, 211, 133, 33, }, { 217, 61, 75, 33, 122, 220, 168, 44, 139, 194, 247, 205, 81, 48, 85, 108, }, { 166, 17, 231, 54, 34, 249, 41, 241, 57, 248, 113, 25, 170, 214, 230, 187, }, { 50, 180, 131, 59, 171, 91, 86, 186, 87, 238, 178, 85, 66, 53, 54, 246, }, { 88, 73, 124, 24, 146, 179, 232, 136, 158, 140, 190, 114, 159, 217, 67, 214, }, { 204, 236, 24, 21, 27, 17, 151, 195, 240, 154, 125, 62, 119, 58, 147, 155, }, { 179, 192, 180, 2, 67, 52, 22, 30, 66, 160, 251, 234, 140, 220, 32, 76, }, { 39, 101, 208, 15, 202, 150, 105, 85, 44, 182, 56, 166, 100, 63, 240, 1, }, { 103, 249, 137, 68, 49, 39, 169, 122, 19, 100, 227, 164, 245, 199, 202, 12, }, { 243, 92, 237, 73, 184, 133, 214, 49, 125, 114, 32, 232, 29, 36, 26, 65, }, { 140, 112, 65, 94, 224, 160, 87, 236, 207, 72, 166, 60, 230, 194, 169, 150, }, { 24, 213, 37, 83, 105, 2, 40, 167, 161, 94, 101, 112, 14, 33, 121, 219, }, { 114, 40, 218, 112, 80, 234, 150, 149, 104, 60, 105, 87, 211, 205, 12, 251, }, { 230, 141, 190, 125, 217, 72, 233, 222, 6, 42, 170, 27, 59, 46, 220, 182, }, { 153, 161, 18, 106, 129, 109, 104, 3, 180, 16, 44, 207, 192, 200, 111, 97, }, { 13, 4, 118, 103, 8, 207, 23, 72, 218, 6, 239, 131, 40, 43, 191, 44, }, { 25, 90, 160, 252, 180, 204, 43, 93, 202, 119, 89, 203, 33, 251, 27, 123, }, { 141, 255, 196, 241, 61, 110, 84, 22, 164, 97, 154, 135, 201, 24, 203, 54, }, { 242, 211, 104, 230, 101, 75, 213, 203, 22, 91, 28, 83, 50, 254, 120, 225, }, { 102, 118, 12, 235, 236, 233, 170, 128, 120, 77, 223, 31, 218, 29, 168, 172, }, { 12, 139, 243, 200, 213, 1, 20, 178, 177, 47, 211, 56, 7, 241, 221, 140, }, { 152, 46, 151, 197, 92, 163, 107, 249, 223, 57, 16, 116, 239, 18, 13, 193, }, { 231, 2, 59, 210, 4, 134, 234, 36, 109, 3, 150, 160, 20, 244, 190, 22, }, { 115, 167, 95, 223, 141, 36, 149, 111, 3, 21, 85, 236, 252, 23, 110, 91, }, { 51, 59, 6, 148, 118, 149, 85, 64, 60, 199, 142, 238, 109, 239, 84, 86, }, { 167, 158, 98, 153, 255, 55, 42, 11, 82, 209, 77, 162, 133, 12, 132, 27, }, { 216, 178, 206, 142, 167, 18, 171, 214, 224, 235, 203, 118, 126, 234, 55, 204, }, { 76, 23, 170, 131, 46, 176, 212, 157, 142, 253, 8, 58, 150, 9, 231, 129, }, { 38, 234, 85, 160, 23, 88, 106, 175, 71, 159, 4, 29, 75, 229, 146, 161, }, { 178, 79, 49, 173, 158, 250, 21, 228, 41, 137, 199, 81, 163, 6, 66, 236, }, { 205, 99, 157, 186, 198, 223, 148, 57, 155, 179, 65, 133, 88, 224, 241, 59, }, { 89, 198, 249, 183, 79, 125, 235, 114, 245, 165, 130, 201, 176, 3, 33, 118, }, { 118, 81, 139, 137, 162, 84, 154, 251, 7, 152, 153, 254, 111, 35, 71, 62, }, { 226, 244, 239, 132, 43, 246, 229, 176, 105, 142, 90, 178, 135, 192, 151, 115, }, { 157, 216, 67, 147, 115, 211, 100, 109, 219, 180, 220, 102, 124, 38, 36, 164, }, { 9, 125, 39, 158, 250, 113, 27, 38, 181, 162, 31, 42, 148, 197, 244, 233, }, { 99, 128, 216, 189, 195, 153, 165, 20, 124, 192, 19, 13, 73, 41, 129, 201, }, { 247, 37, 188, 176, 74, 59, 218, 95, 18, 214, 208, 65, 161, 202, 81, 132, }, { 136, 9, 16, 167, 18, 30, 91, 130, 160, 236, 86, 149, 90, 44, 226, 83, }, { 28, 172, 116, 170, 155, 188, 36, 201, 206, 250, 149, 217, 178, 207, 50, 30, }, { 92, 48, 45, 225, 96, 13, 228, 230, 241, 40, 78, 219, 35, 55, 8, 19, }, { 200, 149, 73, 236, 233, 175, 155, 173, 159, 62, 141, 151, 203, 212, 216, 94, }, { 183, 185, 229, 251, 177, 138, 26, 112, 45, 4, 11, 67, 48, 50, 107, 137, }, { 35, 28, 129, 246, 56, 40, 101, 59, 67, 18, 200, 15, 216, 209, 187, 196, }, { 73, 225, 126, 213, 1, 192, 219, 9, 138, 112, 196, 40, 5, 61, 206, 228, }, { 221, 68, 26, 216, 136, 98, 164, 66, 228, 102, 7, 100, 237, 222, 30, 169, }, { 162, 104, 182, 207, 208, 71, 37, 159, 86, 92, 129, 176, 22, 56, 173, 126, }, { 54, 205, 210, 194, 89, 229, 90, 212, 56, 74, 66, 252, 254, 219, 125, 51, }, { 34, 147, 4, 89, 229, 230, 102, 193, 40, 59, 244, 180, 247, 11, 217, 100, }, { 182, 54, 96, 84, 108, 68, 25, 138, 70, 45, 55, 248, 31, 232, 9, 41, }, { 201, 26, 204, 67, 52, 97, 152, 87, 244, 23, 177, 44, 228, 14, 186, 254, }, { 93, 191, 168, 78, 189, 195, 231, 28, 154, 1, 114, 96, 12, 237, 106, 179, }, { 55, 66, 87, 109, 132, 43, 89, 46, 83, 99, 126, 71, 209, 1, 31, 147, }, { 163, 231, 51, 96, 13, 137, 38, 101, 61, 117, 189, 11, 57, 226, 207, 222, }, { 220, 203, 159, 119, 85, 172, 167, 184, 143, 79, 59, 223, 194, 4, 124, 9, }, { 72, 110, 251, 122, 220, 14, 216, 243, 225, 89, 248, 147, 42, 231, 172, 68, }, { 8, 242, 162, 49, 39, 191, 24, 220, 222, 139, 35, 145, 187, 31, 150, 73, }, { 156, 87, 198, 60, 174, 29, 103, 151, 176, 157, 224, 221, 83, 252, 70, 4, }, { 227, 123, 106, 43, 246, 56, 230, 74, 2, 167, 102, 9, 168, 26, 245, 211, }, { 119, 222, 14, 38, 127, 154, 153, 1, 108, 177, 165, 69, 64, 249, 37, 158, }, { 29, 35, 241, 5, 70, 114, 39, 51, 165, 211, 169, 98, 157, 21, 80, 190, }, { 137, 134, 149, 8, 207, 208, 88, 120, 203, 197, 106, 46, 117, 246, 128, 243, }, { 246, 170, 57, 31, 151, 245, 217, 165, 121, 255, 236, 250, 142, 16, 51, 36, }, { 98, 15, 93, 18, 30, 87, 166, 238, 23, 233, 47, 182, 102, 243, 227, 105, }, { 222, 22, 86, 234, 44, 243, 161, 143, 89, 29, 67, 106, 156, 115, 184, 138, }, { 74, 179, 50, 231, 165, 81, 222, 196, 55, 11, 128, 38, 116, 144, 104, 199, }, { 53, 159, 158, 240, 253, 116, 95, 25, 133, 49, 6, 242, 143, 118, 219, 16, }, { 161, 58, 250, 253, 116, 214, 32, 82, 235, 39, 197, 190, 103, 149, 11, 93, }, { 203, 199, 5, 222, 77, 62, 158, 96, 34, 69, 201, 153, 186, 121, 126, 125, }, { 95, 98, 97, 211, 196, 156, 225, 43, 76, 83, 10, 213, 82, 154, 174, 48, }, { 32, 78, 205, 196, 156, 185, 96, 246, 254, 105, 140, 1, 169, 124, 29, 231, }, { 180, 235, 169, 201, 21, 27, 31, 189, 144, 127, 79, 77, 65, 159, 205, 170, }, { 244, 119, 240, 130, 238, 170, 223, 146, 175, 173, 148, 79, 208, 103, 247, 167, }, { 96, 210, 148, 143, 103, 8, 160, 217, 193, 187, 87, 3, 56, 132, 39, 234, }, { 31, 254, 56, 152, 63, 45, 33, 4, 115, 129, 209, 215, 195, 98, 148, 61, }, { 139, 91, 92, 149, 182, 143, 94, 79, 29, 151, 18, 155, 43, 129, 68, 112, }, { 225, 166, 163, 182, 143, 103, 224, 125, 212, 245, 30, 188, 246, 109, 49, 80, }, { 117, 3, 199, 187, 6, 197, 159, 54, 186, 227, 221, 240, 30, 142, 225, 29, }, { 10, 47, 107, 172, 94, 224, 30, 235, 8, 217, 91, 36, 229, 104, 82, 202, }, { 158, 138, 15, 161, 215, 66, 97, 160, 102, 207, 152, 104, 13, 139, 130, 135, }, { 138, 212, 217, 58, 107, 65, 93, 181, 118, 190, 46, 32, 4, 91, 38, 208, }, { 30, 113, 189, 55, 226, 227, 34, 254, 24, 168, 237, 108, 236, 184, 246, 157, }, { 97, 93, 17, 32, 186, 198, 163, 35, 170, 146, 107, 184, 23, 94, 69, 74, }, { 245, 248, 117, 45, 51, 100, 220, 104, 196, 132, 168, 244, 255, 189, 149, 7, }, { 159, 5, 138, 14, 10, 140, 98, 90, 13, 230, 164, 211, 34, 81, 224, 39, }, { 11, 160, 238, 3, 131, 46, 29, 17, 99, 240, 103, 159, 202, 178, 48, 106, }, { 116, 140, 66, 20, 219, 11, 156, 204, 209, 202, 225, 75, 49, 84, 131, 189, }, { 224, 41, 38, 25, 82, 169, 227, 135, 191, 220, 34, 7, 217, 183, 83, 240, }, { 160, 181, 127, 82, 169, 24, 35, 168, 128, 14, 249, 5, 72, 79, 105, 253, }, { 52, 16, 27, 95, 32, 186, 92, 227, 238, 24, 58, 73, 160, 172, 185, 176, }, { 75, 60, 183, 72, 120, 159, 221, 62, 92, 34, 188, 157, 91, 74, 10, 103, }, { 223, 153, 211, 69, 241, 61, 162, 117, 50, 52, 127, 209, 179, 169, 218, 42, }, { 181, 100, 44, 102, 200, 213, 28, 71, 251, 86, 115, 246, 110, 69, 175, 10, }, { 33, 193, 72, 107, 65, 119, 99, 12, 149, 64, 176, 186, 134, 166, 127, 71, }, { 94, 237, 228, 124, 25, 82, 226, 209, 39, 122, 54, 110, 125, 64, 204, 144, }, { 202, 72, 128, 113, 144, 240, 157, 154, 73, 108, 245, 34, 149, 163, 28, 221, }, }, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, { 32, 60, 72, 248, 72, 72, 200, 142, 42, 245, 2, 221, 20, 48, 68, 142, }, { 64, 120, 144, 51, 144, 144, 83, 223, 84, 41, 4, 121, 40, 96, 136, 223, }, { 96, 68, 216, 203, 216, 216, 155, 81, 126, 220, 6, 164, 60, 80, 204, 81, }, { 128, 240, 227, 102, 227, 227, 166, 125, 168, 82, 8, 242, 80, 192, 211, 125, }, { 160, 204, 171, 158, 171, 171, 110, 243, 130, 167, 10, 47, 68, 240, 151, 243, }, { 192, 136, 115, 85, 115, 115, 245, 162, 252, 123, 12, 139, 120, 160, 91, 162, }, { 224, 180, 59, 173, 59, 59, 61, 44, 214, 142, 14, 86, 108, 144, 31, 44, }, { 195, 35, 5, 204, 5, 5, 143, 250, 147, 164, 16, 39, 160, 67, 101, 250, }, { 227, 31, 77, 52, 77, 77, 71, 116, 185, 81, 18, 250, 180, 115, 33, 116, }, { 131, 91, 149, 255, 149, 149, 220, 37, 199, 141, 20, 94, 136, 35, 237, 37, }, { 163, 103, 221, 7, 221, 221, 20, 171, 237, 120, 22, 131, 156, 19, 169, 171, }, { 67, 211, 230, 170, 230, 230, 41, 135, 59, 246, 24, 213, 240, 131, 182, 135, }, { 99, 239, 174, 82, 174, 174, 225, 9, 17, 3, 26, 8, 228, 179, 242, 9, }, { 3, 171, 118, 153, 118, 118, 122, 88, 111, 223, 28, 172, 216, 227, 62, 88, }, { 35, 151, 62, 97, 62, 62, 178, 214, 69, 42, 30, 113, 204, 211, 122, 214, }, { 69, 70, 10, 91, 10, 10, 221, 55, 229, 139, 32, 78, 131, 134, 202, 55, }, { 101, 122, 66, 163, 66, 66, 21, 185, 207, 126, 34, 147, 151, 182, 142, 185, }, { 5, 62, 154, 104, 154, 154, 142, 232, 177, 162, 36, 55, 171, 230, 66, 232, }, { 37, 2, 210, 144, 210, 210, 70, 102, 155, 87, 38, 234, 191, 214, 6, 102, }, { 197, 182, 233, 61, 233, 233, 123, 74, 77, 217, 40, 188, 211, 70, 25, 74, }, { 229, 138, 161, 197, 161, 161, 179, 196, 103, 44, 42, 97, 199, 118, 93, 196, }, { 133, 206, 121, 14, 121, 121, 40, 149, 25, 240, 44, 197, 251, 38, 145, 149, }, { 165, 242, 49, 246, 49, 49, 224, 27, 51, 5, 46, 24, 239, 22, 213, 27, }, { 134, 101, 15, 151, 15, 15, 82, 205, 118, 47, 48, 105, 35, 197, 175, 205, }, { 166, 89, 71, 111, 71, 71, 154, 67, 92, 218, 50, 180, 55, 245, 235, 67, }, { 198, 29, 159, 164, 159, 159, 1, 18, 34, 6, 52, 16, 11, 165, 39, 18, }, { 230, 33, 215, 92, 215, 215, 201, 156, 8, 243, 54, 205, 31, 149, 99, 156, }, { 6, 149, 236, 241, 236, 236, 244, 176, 222, 125, 56, 155, 115, 5, 124, 176, }, { 38, 169, 164, 9, 164, 164, 60, 62, 244, 136, 58, 70, 103, 53, 56, 62, }, { 70, 237, 124, 194, 124, 124, 167, 111, 138, 84, 60, 226, 91, 101, 244, 111, }, { 102, 209, 52, 58, 52, 52, 111, 225, 160, 161, 62, 63, 79, 85, 176, 225, }, { 138, 140, 20, 182, 20, 20, 121, 110, 9, 213, 64, 156, 197, 207, 87, 110, }, { 170, 176, 92, 78, 92, 92, 177, 224, 35, 32, 66, 65, 209, 255, 19, 224, }, { 202, 244, 132, 133, 132, 132, 42, 177, 93, 252, 68, 229, 237, 175, 223, 177, }, { 234, 200, 204, 125, 204, 204, 226, 63, 119, 9, 70, 56, 249, 159, 155, 63, }, { 10, 124, 247, 208, 247, 247, 223, 19, 161, 135, 72, 110, 149, 15, 132, 19, }, { 42, 64, 191, 40, 191, 191, 23, 157, 139, 114, 74, 179, 129, 63, 192, 157, }, { 74, 4, 103, 227, 103, 103, 140, 204, 245, 174, 76, 23, 189, 111, 12, 204, }, { 106, 56, 47, 27, 47, 47, 68, 66, 223, 91, 78, 202, 169, 95, 72, 66, }, { 73, 175, 17, 122, 17, 17, 246, 148, 154, 113, 80, 187, 101, 140, 50, 148, }, { 105, 147, 89, 130, 89, 89, 62, 26, 176, 132, 82, 102, 113, 188, 118, 26, }, { 9, 215, 129, 73, 129, 129, 165, 75, 206, 88, 84, 194, 77, 236, 186, 75, }, { 41, 235, 201, 177, 201, 201, 109, 197, 228, 173, 86, 31, 89, 220, 254, 197, }, { 201, 95, 242, 28, 242, 242, 80, 233, 50, 35, 88, 73, 53, 76, 225, 233, }, { 233, 99, 186, 228, 186, 186, 152, 103, 24, 214, 90, 148, 33, 124, 165, 103, }, { 137, 39, 98, 47, 98, 98, 3, 54, 102, 10, 92, 48, 29, 44, 105, 54, }, { 169, 27, 42, 215, 42, 42, 203, 184, 76, 255, 94, 237, 9, 28, 45, 184, }, { 207, 202, 30, 237, 30, 30, 164, 89, 236, 94, 96, 210, 70, 73, 157, 89, }, { 239, 246, 86, 21, 86, 86, 108, 215, 198, 171, 98, 15, 82, 121, 217, 215, }, { 143, 178, 142, 222, 142, 142, 247, 134, 184, 119, 100, 171, 110, 41, 21, 134, }, { 175, 142, 198, 38, 198, 198, 63, 8, 146, 130, 102, 118, 122, 25, 81, 8, }, { 79, 58, 253, 139, 253, 253, 2, 36, 68, 12, 104, 32, 22, 137, 78, 36, }, { 111, 6, 181, 115, 181, 181, 202, 170, 110, 249, 106, 253, 2, 185, 10, 170, }, { 15, 66, 109, 184, 109, 109, 81, 251, 16, 37, 108, 89, 62, 233, 198, 251, }, { 47, 126, 37, 64, 37, 37, 153, 117, 58, 208, 110, 132, 42, 217, 130, 117, }, { 12, 233, 27, 33, 27, 27, 43, 163, 127, 250, 112, 245, 230, 10, 248, 163, }, { 44, 213, 83, 217, 83, 83, 227, 45, 85, 15, 114, 40, 242, 58, 188, 45, }, { 76, 145, 139, 18, 139, 139, 120, 124, 43, 211, 116, 140, 206, 106, 112, 124, }, { 108, 173, 195, 234, 195, 195, 176, 242, 1, 38, 118, 81, 218, 90, 52, 242, }, { 140, 25, 248, 71, 248, 248, 141, 222, 215, 168, 120, 7, 182, 202, 43, 222, }, { 172, 37, 176, 191, 176, 176, 69, 80, 253, 93, 122, 218, 162, 250, 111, 80, }, { 204, 97, 104, 116, 104, 104, 222, 1, 131, 129, 124, 126, 158, 170, 163, 1, }, { 236, 93, 32, 140, 32, 32, 22, 143, 169, 116, 126, 163, 138, 154, 231, 143, }, { 215, 219, 40, 175, 40, 40, 242, 220, 18, 105, 128, 251, 73, 93, 174, 220, }, { 247, 231, 96, 87, 96, 96, 58, 82, 56, 156, 130, 38, 93, 109, 234, 82, }, { 151, 163, 184, 156, 184, 184, 161, 3, 70, 64, 132, 130, 97, 61, 38, 3, }, { 183, 159, 240, 100, 240, 240, 105, 141, 108, 181, 134, 95, 117, 13, 98, 141, }, { 87, 43, 203, 201, 203, 203, 84, 161, 186, 59, 136, 9, 25, 157, 125, 161, }, { 119, 23, 131, 49, 131, 131, 156, 47, 144, 206, 138, 212, 13, 173, 57, 47, }, { 23, 83, 91, 250, 91, 91, 7, 126, 238, 18, 140, 112, 49, 253, 245, 126, }, { 55, 111, 19, 2, 19, 19, 207, 240, 196, 231, 142, 173, 37, 205, 177, 240, }, { 20, 248, 45, 99, 45, 45, 125, 38, 129, 205, 144, 220, 233, 30, 203, 38, }, { 52, 196, 101, 155, 101, 101, 181, 168, 171, 56, 146, 1, 253, 46, 143, 168, }, { 84, 128, 189, 80, 189, 189, 46, 249, 213, 228, 148, 165, 193, 126, 67, 249, }, { 116, 188, 245, 168, 245, 245, 230, 119, 255, 17, 150, 120, 213, 78, 7, 119, }, { 148, 8, 206, 5, 206, 206, 219, 91, 41, 159, 152, 46, 185, 222, 24, 91, }, { 180, 52, 134, 253, 134, 134, 19, 213, 3, 106, 154, 243, 173, 238, 92, 213, }, { 212, 112, 94, 54, 94, 94, 136, 132, 125, 182, 156, 87, 145, 190, 144, 132, }, { 244, 76, 22, 206, 22, 22, 64, 10, 87, 67, 158, 138, 133, 142, 212, 10, }, { 146, 157, 34, 244, 34, 34, 47, 235, 247, 226, 160, 181, 202, 219, 100, 235, }, { 178, 161, 106, 12, 106, 106, 231, 101, 221, 23, 162, 104, 222, 235, 32, 101, }, { 210, 229, 178, 199, 178, 178, 124, 52, 163, 203, 164, 204, 226, 187, 236, 52, }, { 242, 217, 250, 63, 250, 250, 180, 186, 137, 62, 166, 17, 246, 139, 168, 186, }, { 18, 109, 193, 146, 193, 193, 137, 150, 95, 176, 168, 71, 154, 27, 183, 150, }, { 50, 81, 137, 106, 137, 137, 65, 24, 117, 69, 170, 154, 142, 43, 243, 24, }, { 82, 21, 81, 161, 81, 81, 218, 73, 11, 153, 172, 62, 178, 123, 63, 73, }, { 114, 41, 25, 89, 25, 25, 18, 199, 33, 108, 174, 227, 166, 75, 123, 199, }, { 81, 190, 39, 56, 39, 39, 160, 17, 100, 70, 176, 146, 106, 152, 1, 17, }, { 113, 130, 111, 192, 111, 111, 104, 159, 78, 179, 178, 79, 126, 168, 69, 159, }, { 17, 198, 183, 11, 183, 183, 243, 206, 48, 111, 180, 235, 66, 248, 137, 206, }, { 49, 250, 255, 243, 255, 255, 59, 64, 26, 154, 182, 54, 86, 200, 205, 64, }, { 209, 78, 196, 94, 196, 196, 6, 108, 204, 20, 184, 96, 58, 88, 210, 108, }, { 241, 114, 140, 166, 140, 140, 206, 226, 230, 225, 186, 189, 46, 104, 150, 226, }, { 145, 54, 84, 109, 84, 84, 85, 179, 152, 61, 188, 25, 18, 56, 90, 179, }, { 177, 10, 28, 149, 28, 28, 157, 61, 178, 200, 190, 196, 6, 8, 30, 61, }, { 93, 87, 60, 25, 60, 60, 139, 178, 27, 188, 192, 103, 140, 146, 249, 178, }, { 125, 107, 116, 225, 116, 116, 67, 60, 49, 73, 194, 186, 152, 162, 189, 60, }, { 29, 47, 172, 42, 172, 172, 216, 109, 79, 149, 196, 30, 164, 242, 113, 109, }, { 61, 19, 228, 210, 228, 228, 16, 227, 101, 96, 198, 195, 176, 194, 53, 227, }, { 221, 167, 223, 127, 223, 223, 45, 207, 179, 238, 200, 149, 220, 82, 42, 207, }, { 253, 155, 151, 135, 151, 151, 229, 65, 153, 27, 202, 72, 200, 98, 110, 65, }, { 157, 223, 79, 76, 79, 79, 126, 16, 231, 199, 204, 236, 244, 50, 162, 16, }, { 189, 227, 7, 180, 7, 7, 182, 158, 205, 50, 206, 49, 224, 2, 230, 158, }, { 158, 116, 57, 213, 57, 57, 4, 72, 136, 24, 208, 64, 44, 209, 156, 72, }, { 190, 72, 113, 45, 113, 113, 204, 198, 162, 237, 210, 157, 56, 225, 216, 198, }, { 222, 12, 169, 230, 169, 169, 87, 151, 220, 49, 212, 57, 4, 177, 20, 151, }, { 254, 48, 225, 30, 225, 225, 159, 25, 246, 196, 214, 228, 16, 129, 80, 25, }, { 30, 132, 218, 179, 218, 218, 162, 53, 32, 74, 216, 178, 124, 17, 79, 53, }, { 62, 184, 146, 75, 146, 146, 106, 187, 10, 191, 218, 111, 104, 33, 11, 187, }, { 94, 252, 74, 128, 74, 74, 241, 234, 116, 99, 220, 203, 84, 113, 199, 234, }, { 126, 192, 2, 120, 2, 2, 57, 100, 94, 150, 222, 22, 64, 65, 131, 100, }, { 24, 17, 54, 66, 54, 54, 86, 133, 254, 55, 224, 41, 15, 20, 51, 133, }, { 56, 45, 126, 186, 126, 126, 158, 11, 212, 194, 226, 244, 27, 36, 119, 11, }, { 88, 105, 166, 113, 166, 166, 5, 90, 170, 30, 228, 80, 39, 116, 187, 90, }, { 120, 85, 238, 137, 238, 238, 205, 212, 128, 235, 230, 141, 51, 68, 255, 212, }, { 152, 225, 213, 36, 213, 213, 240, 248, 86, 101, 232, 219, 95, 212, 224, 248, }, { 184, 221, 157, 220, 157, 157, 56, 118, 124, 144, 234, 6, 75, 228, 164, 118, }, { 216, 153, 69, 23, 69, 69, 163, 39, 2, 76, 236, 162, 119, 180, 104, 39, }, { 248, 165, 13, 239, 13, 13, 107, 169, 40, 185, 238, 127, 99, 132, 44, 169, }, { 219, 50, 51, 142, 51, 51, 217, 127, 109, 147, 240, 14, 175, 87, 86, 127, }, { 251, 14, 123, 118, 123, 123, 17, 241, 71, 102, 242, 211, 187, 103, 18, 241, }, { 155, 74, 163, 189, 163, 163, 138, 160, 57, 186, 244, 119, 135, 55, 222, 160, }, { 187, 118, 235, 69, 235, 235, 66, 46, 19, 79, 246, 170, 147, 7, 154, 46, }, { 91, 194, 208, 232, 208, 208, 127, 2, 197, 193, 248, 252, 255, 151, 133, 2, }, { 123, 254, 152, 16, 152, 152, 183, 140, 239, 52, 250, 33, 235, 167, 193, 140, }, { 27, 186, 64, 219, 64, 64, 44, 221, 145, 232, 252, 133, 215, 247, 13, 221, }, { 59, 134, 8, 35, 8, 8, 228, 83, 187, 29, 254, 88, 195, 199, 73, 83, }, { 109, 117, 80, 157, 80, 80, 39, 123, 36, 210, 195, 53, 146, 186, 159, 123, }, { 77, 73, 24, 101, 24, 24, 239, 245, 14, 39, 193, 232, 134, 138, 219, 245, }, { 45, 13, 192, 174, 192, 192, 116, 164, 112, 251, 199, 76, 186, 218, 23, 164, }, { 13, 49, 136, 86, 136, 136, 188, 42, 90, 14, 197, 145, 174, 234, 83, 42, }, { 237, 133, 179, 251, 179, 179, 129, 6, 140, 128, 203, 199, 194, 122, 76, 6, }, { 205, 185, 251, 3, 251, 251, 73, 136, 166, 117, 201, 26, 214, 74, 8, 136, }, { 173, 253, 35, 200, 35, 35, 210, 217, 216, 169, 207, 190, 234, 26, 196, 217, }, { 141, 193, 107, 48, 107, 107, 26, 87, 242, 92, 205, 99, 254, 42, 128, 87, }, { 174, 86, 85, 81, 85, 85, 168, 129, 183, 118, 211, 18, 50, 249, 250, 129, }, { 142, 106, 29, 169, 29, 29, 96, 15, 157, 131, 209, 207, 38, 201, 190, 15, }, { 238, 46, 197, 98, 197, 197, 251, 94, 227, 95, 215, 107, 26, 153, 114, 94, }, { 206, 18, 141, 154, 141, 141, 51, 208, 201, 170, 213, 182, 14, 169, 54, 208, }, { 46, 166, 182, 55, 182, 182, 14, 252, 31, 36, 219, 224, 98, 57, 41, 252, }, { 14, 154, 254, 207, 254, 254, 198, 114, 53, 209, 217, 61, 118, 9, 109, 114, }, { 110, 222, 38, 4, 38, 38, 93, 35, 75, 13, 223, 153, 74, 89, 161, 35, }, { 78, 226, 110, 252, 110, 110, 149, 173, 97, 248, 221, 68, 94, 105, 229, 173, }, { 40, 51, 90, 198, 90, 90, 250, 76, 193, 89, 227, 123, 17, 60, 85, 76, }, { 8, 15, 18, 62, 18, 18, 50, 194, 235, 172, 225, 166, 5, 12, 17, 194, }, { 104, 75, 202, 245, 202, 202, 169, 147, 149, 112, 231, 2, 57, 92, 221, 147, }, { 72, 119, 130, 13, 130, 130, 97, 29, 191, 133, 229, 223, 45, 108, 153, 29, }, { 168, 195, 185, 160, 185, 185, 92, 49, 105, 11, 235, 137, 65, 252, 134, 49, }, { 136, 255, 241, 88, 241, 241, 148, 191, 67, 254, 233, 84, 85, 204, 194, 191, }, { 232, 187, 41, 147, 41, 41, 15, 238, 61, 34, 239, 240, 105, 156, 14, 238, }, { 200, 135, 97, 107, 97, 97, 199, 96, 23, 215, 237, 45, 125, 172, 74, 96, }, { 235, 16, 95, 10, 95, 95, 117, 182, 82, 253, 243, 92, 177, 127, 48, 182, }, { 203, 44, 23, 242, 23, 23, 189, 56, 120, 8, 241, 129, 165, 79, 116, 56, }, { 171, 104, 207, 57, 207, 207, 38, 105, 6, 212, 247, 37, 153, 31, 184, 105, }, { 139, 84, 135, 193, 135, 135, 238, 231, 44, 33, 245, 248, 141, 47, 252, 231, }, { 107, 224, 188, 108, 188, 188, 211, 203, 250, 175, 251, 174, 225, 191, 227, 203, }, { 75, 220, 244, 148, 244, 244, 27, 69, 208, 90, 249, 115, 245, 143, 167, 69, }, { 43, 152, 44, 95, 44, 44, 128, 20, 174, 134, 255, 215, 201, 223, 107, 20, }, { 11, 164, 100, 167, 100, 100, 72, 154, 132, 115, 253, 10, 221, 239, 47, 154, }, { 231, 249, 68, 43, 68, 68, 94, 21, 45, 7, 131, 169, 87, 117, 200, 21, }, { 199, 197, 12, 211, 12, 12, 150, 155, 7, 242, 129, 116, 67, 69, 140, 155, }, { 167, 129, 212, 24, 212, 212, 13, 202, 121, 46, 135, 208, 127, 21, 64, 202, }, { 135, 189, 156, 224, 156, 156, 197, 68, 83, 219, 133, 13, 107, 37, 4, 68, }, { 103, 9, 167, 77, 167, 167, 248, 104, 133, 85, 139, 91, 7, 181, 27, 104, }, { 71, 53, 239, 181, 239, 239, 48, 230, 175, 160, 137, 134, 19, 133, 95, 230, }, { 39, 113, 55, 126, 55, 55, 171, 183, 209, 124, 143, 34, 47, 213, 147, 183, }, { 7, 77, 127, 134, 127, 127, 99, 57, 251, 137, 141, 255, 59, 229, 215, 57, }, { 36, 218, 65, 231, 65, 65, 209, 239, 190, 163, 147, 142, 247, 54, 173, 239, }, { 4, 230, 9, 31, 9, 9, 25, 97, 148, 86, 145, 83, 227, 6, 233, 97, }, { 100, 162, 209, 212, 209, 209, 130, 48, 234, 138, 151, 247, 223, 86, 37, 48, }, { 68, 158, 153, 44, 153, 153, 74, 190, 192, 127, 149, 42, 203, 102, 97, 190, }, { 164, 42, 162, 129, 162, 162, 119, 146, 22, 241, 155, 124, 167, 246, 126, 146, }, { 132, 22, 234, 121, 234, 234, 191, 28, 60, 4, 153, 161, 179, 198, 58, 28, }, { 228, 82, 50, 178, 50, 50, 36, 77, 66, 216, 159, 5, 143, 150, 246, 77, }, { 196, 110, 122, 74, 122, 122, 236, 195, 104, 45, 157, 216, 155, 166, 178, 195, }, { 162, 191, 78, 112, 78, 78, 131, 34, 200, 140, 163, 231, 212, 243, 2, 34, }, { 130, 131, 6, 136, 6, 6, 75, 172, 226, 121, 161, 58, 192, 195, 70, 172, }, { 226, 199, 222, 67, 222, 222, 208, 253, 156, 165, 167, 158, 252, 147, 138, 253, }, { 194, 251, 150, 187, 150, 150, 24, 115, 182, 80, 165, 67, 232, 163, 206, 115, }, { 34, 79, 173, 22, 173, 173, 37, 95, 96, 222, 171, 21, 132, 51, 209, 95, }, { 2, 115, 229, 238, 229, 229, 237, 209, 74, 43, 169, 200, 144, 3, 149, 209, }, { 98, 55, 61, 37, 61, 61, 118, 128, 52, 247, 175, 108, 172, 83, 89, 128, }, { 66, 11, 117, 221, 117, 117, 190, 14, 30, 2, 173, 177, 184, 99, 29, 14, }, { 97, 156, 75, 188, 75, 75, 12, 216, 91, 40, 179, 192, 116, 176, 103, 216, }, { 65, 160, 3, 68, 3, 3, 196, 86, 113, 221, 177, 29, 96, 128, 35, 86, }, { 33, 228, 219, 143, 219, 219, 95, 7, 15, 1, 183, 185, 92, 208, 239, 7, }, { 1, 216, 147, 119, 147, 147, 151, 137, 37, 244, 181, 100, 72, 224, 171, 137, }, { 225, 108, 168, 218, 168, 168, 170, 165, 243, 122, 187, 50, 36, 112, 180, 165, }, { 193, 80, 224, 34, 224, 224, 98, 43, 217, 143, 185, 239, 48, 64, 240, 43, }, { 161, 20, 56, 233, 56, 56, 249, 122, 167, 83, 191, 75, 12, 16, 60, 122, }, { 129, 40, 112, 17, 112, 112, 49, 244, 141, 166, 189, 150, 24, 32, 120, 244, }, { 186, 174, 120, 50, 120, 120, 213, 167, 54, 187, 67, 206, 219, 231, 49, 167, }, { 154, 146, 48, 202, 48, 48, 29, 41, 28, 78, 65, 19, 207, 215, 117, 41, }, { 250, 214, 232, 1, 232, 232, 134, 120, 98, 146, 71, 183, 243, 135, 185, 120, }, { 218, 234, 160, 249, 160, 160, 78, 246, 72, 103, 69, 106, 231, 183, 253, 246, }, { 58, 94, 155, 84, 155, 155, 115, 218, 158, 233, 75, 60, 139, 39, 226, 218, }, { 26, 98, 211, 172, 211, 211, 187, 84, 180, 28, 73, 225, 159, 23, 166, 84, }, { 122, 38, 11, 103, 11, 11, 32, 5, 202, 192, 79, 69, 163, 71, 106, 5, }, { 90, 26, 67, 159, 67, 67, 232, 139, 224, 53, 77, 152, 183, 119, 46, 139, }, { 121, 141, 125, 254, 125, 125, 90, 93, 165, 31, 83, 233, 123, 164, 84, 93, }, { 89, 177, 53, 6, 53, 53, 146, 211, 143, 234, 81, 52, 111, 148, 16, 211, }, { 57, 245, 237, 205, 237, 237, 9, 130, 241, 54, 87, 144, 83, 196, 220, 130, }, { 25, 201, 165, 53, 165, 165, 193, 12, 219, 195, 85, 77, 71, 244, 152, 12, }, { 249, 125, 158, 152, 158, 158, 252, 32, 13, 77, 91, 27, 43, 100, 135, 32, }, { 217, 65, 214, 96, 214, 214, 52, 174, 39, 184, 89, 198, 63, 84, 195, 174, }, { 185, 5, 14, 171, 14, 14, 175, 255, 89, 100, 95, 98, 3, 4, 15, 255, }, { 153, 57, 70, 83, 70, 70, 103, 113, 115, 145, 93, 191, 23, 52, 75, 113, }, { 255, 232, 114, 105, 114, 114, 8, 144, 211, 48, 99, 128, 88, 97, 251, 144, }, { 223, 212, 58, 145, 58, 58, 192, 30, 249, 197, 97, 93, 76, 81, 191, 30, }, { 191, 144, 226, 90, 226, 226, 91, 79, 135, 25, 103, 249, 112, 1, 115, 79, }, { 159, 172, 170, 162, 170, 170, 147, 193, 173, 236, 101, 36, 100, 49, 55, 193, }, { 127, 24, 145, 15, 145, 145, 174, 237, 123, 98, 107, 114, 8, 161, 40, 237, }, { 95, 36, 217, 247, 217, 217, 102, 99, 81, 151, 105, 175, 28, 145, 108, 99, }, { 63, 96, 1, 60, 1, 1, 253, 50, 47, 75, 111, 11, 32, 193, 160, 50, }, { 31, 92, 73, 196, 73, 73, 53, 188, 5, 190, 109, 214, 52, 241, 228, 188, }, { 60, 203, 119, 165, 119, 119, 135, 106, 64, 148, 115, 167, 248, 34, 158, 106, }, { 28, 247, 63, 93, 63, 63, 79, 228, 106, 97, 113, 122, 236, 18, 218, 228, }, { 124, 179, 231, 150, 231, 231, 212, 181, 20, 189, 119, 222, 208, 66, 22, 181, }, { 92, 143, 175, 110, 175, 175, 28, 59, 62, 72, 117, 3, 196, 114, 82, 59, }, { 188, 59, 148, 195, 148, 148, 33, 23, 232, 198, 123, 85, 168, 226, 77, 23, }, { 156, 7, 220, 59, 220, 220, 233, 153, 194, 51, 121, 136, 188, 210, 9, 153, }, { 252, 67, 4, 240, 4, 4, 114, 200, 188, 239, 127, 44, 128, 130, 197, 200, }, { 220, 127, 76, 8, 76, 76, 186, 70, 150, 26, 125, 241, 148, 178, 129, 70, }, { 48, 34, 108, 132, 108, 108, 172, 201, 63, 110, 3, 82, 30, 40, 102, 201, }, { 16, 30, 36, 124, 36, 36, 100, 71, 21, 155, 1, 143, 10, 24, 34, 71, }, { 112, 90, 252, 183, 252, 252, 255, 22, 107, 71, 7, 43, 54, 72, 238, 22, }, { 80, 102, 180, 79, 180, 180, 55, 152, 65, 178, 5, 246, 34, 120, 170, 152, }, { 176, 210, 143, 226, 143, 143, 10, 180, 151, 60, 11, 160, 78, 232, 181, 180, }, { 144, 238, 199, 26, 199, 199, 194, 58, 189, 201, 9, 125, 90, 216, 241, 58, }, { 240, 170, 31, 209, 31, 31, 89, 107, 195, 21, 15, 217, 102, 136, 61, 107, }, { 208, 150, 87, 41, 87, 87, 145, 229, 233, 224, 13, 4, 114, 184, 121, 229, }, { 243, 1, 105, 72, 105, 105, 35, 51, 172, 202, 19, 117, 190, 107, 3, 51, }, { 211, 61, 33, 176, 33, 33, 235, 189, 134, 63, 17, 168, 170, 91, 71, 189, }, { 179, 121, 249, 123, 249, 249, 112, 236, 248, 227, 23, 12, 150, 11, 139, 236, }, { 147, 69, 177, 131, 177, 177, 184, 98, 210, 22, 21, 209, 130, 59, 207, 98, }, { 115, 241, 138, 46, 138, 138, 133, 78, 4, 152, 27, 135, 238, 171, 208, 78, }, { 83, 205, 194, 214, 194, 194, 77, 192, 46, 109, 25, 90, 250, 155, 148, 192, }, { 51, 137, 26, 29, 26, 26, 214, 145, 80, 177, 31, 254, 198, 203, 88, 145, }, { 19, 181, 82, 229, 82, 82, 30, 31, 122, 68, 29, 35, 210, 251, 28, 31, }, { 117, 100, 102, 223, 102, 102, 113, 254, 218, 229, 35, 28, 157, 174, 172, 254, }, { 85, 88, 46, 39, 46, 46, 185, 112, 240, 16, 33, 193, 137, 158, 232, 112, }, { 53, 28, 246, 236, 246, 246, 34, 33, 142, 204, 39, 101, 181, 206, 36, 33, }, { 21, 32, 190, 20, 190, 190, 234, 175, 164, 57, 37, 184, 161, 254, 96, 175, }, { 245, 148, 133, 185, 133, 133, 215, 131, 114, 183, 43, 238, 205, 110, 127, 131, }, { 213, 168, 205, 65, 205, 205, 31, 13, 88, 66, 41, 51, 217, 94, 59, 13, }, { 181, 236, 21, 138, 21, 21, 132, 92, 38, 158, 47, 151, 229, 14, 247, 92, }, { 149, 208, 93, 114, 93, 93, 76, 210, 12, 107, 45, 74, 241, 62, 179, 210, }, { 182, 71, 99, 19, 99, 99, 254, 4, 73, 65, 51, 59, 61, 237, 201, 4, }, { 150, 123, 43, 235, 43, 43, 54, 138, 99, 180, 49, 230, 41, 221, 141, 138, }, { 246, 63, 243, 32, 243, 243, 173, 219, 29, 104, 55, 66, 21, 141, 65, 219, }, { 214, 3, 187, 216, 187, 187, 101, 85, 55, 157, 53, 159, 1, 189, 5, 85, }, { 54, 183, 128, 117, 128, 128, 88, 121, 225, 19, 59, 201, 109, 45, 26, 121, }, { 22, 139, 200, 141, 200, 200, 144, 247, 203, 230, 57, 20, 121, 29, 94, 247, }, { 118, 207, 16, 70, 16, 16, 11, 166, 181, 58, 63, 176, 69, 77, 146, 166, }, { 86, 243, 88, 190, 88, 88, 195, 40, 159, 207, 61, 109, 81, 125, 214, 40, }, }, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, { 133, 68, 223, 82, 127, 198, 152, 96, 212, 82, 14, 101, 7, 159, 134, 234, }, { 201, 136, 125, 164, 254, 79, 243, 192, 107, 164, 28, 202, 14, 253, 207, 23, }, { 76, 204, 162, 246, 129, 137, 107, 160, 191, 246, 18, 175, 9, 98, 73, 253, }, { 81, 211, 250, 139, 63, 158, 37, 67, 214, 139, 56, 87, 28, 57, 93, 46, }, { 212, 151, 37, 217, 64, 88, 189, 35, 2, 217, 54, 50, 27, 166, 219, 196, }, { 152, 91, 135, 47, 193, 209, 214, 131, 189, 47, 36, 157, 18, 196, 146, 57, }, { 29, 31, 88, 125, 190, 23, 78, 227, 105, 125, 42, 248, 21, 91, 20, 211, }, { 162, 101, 55, 213, 126, 255, 74, 134, 111, 213, 112, 174, 56, 114, 186, 92, }, { 39, 33, 232, 135, 1, 57, 210, 230, 187, 135, 126, 203, 63, 237, 60, 182, }, { 107, 237, 74, 113, 128, 176, 185, 70, 4, 113, 108, 100, 54, 143, 117, 75, }, { 238, 169, 149, 35, 255, 118, 33, 38, 208, 35, 98, 1, 49, 16, 243, 161, }, { 243, 182, 205, 94, 65, 97, 111, 197, 185, 94, 72, 249, 36, 75, 231, 114, }, { 118, 242, 18, 12, 62, 167, 247, 165, 109, 12, 70, 156, 35, 212, 97, 152, }, { 58, 62, 176, 250, 191, 46, 156, 5, 210, 250, 84, 51, 42, 182, 40, 101, }, { 191, 122, 111, 168, 192, 232, 4, 101, 6, 168, 90, 86, 45, 41, 174, 143, }, { 135, 202, 110, 105, 252, 61, 148, 207, 222, 105, 224, 159, 112, 228, 183, 184, }, { 2, 142, 177, 59, 131, 251, 12, 175, 10, 59, 238, 250, 119, 123, 49, 82, }, { 78, 66, 19, 205, 2, 114, 103, 15, 181, 205, 252, 85, 126, 25, 120, 175, }, { 203, 6, 204, 159, 125, 180, 255, 111, 97, 159, 242, 48, 121, 134, 254, 69, }, { 214, 25, 148, 226, 195, 163, 177, 140, 8, 226, 216, 200, 108, 221, 234, 150, }, { 83, 93, 75, 176, 188, 101, 41, 236, 220, 176, 214, 173, 107, 66, 108, 124, }, { 31, 145, 233, 70, 61, 236, 66, 76, 99, 70, 196, 2, 98, 32, 37, 129, }, { 154, 213, 54, 20, 66, 42, 218, 44, 183, 20, 202, 103, 101, 191, 163, 107, }, { 37, 175, 89, 188, 130, 194, 222, 73, 177, 188, 144, 49, 72, 150, 13, 228, }, { 160, 235, 134, 238, 253, 4, 70, 41, 101, 238, 158, 84, 79, 9, 139, 14, }, { 236, 39, 36, 24, 124, 141, 45, 137, 218, 24, 140, 251, 70, 107, 194, 243, }, { 105, 99, 251, 74, 3, 75, 181, 233, 14, 74, 130, 158, 65, 244, 68, 25, }, { 116, 124, 163, 55, 189, 92, 251, 10, 103, 55, 168, 102, 84, 175, 80, 202, }, { 241, 56, 124, 101, 194, 154, 99, 106, 179, 101, 166, 3, 83, 48, 214, 32, }, { 189, 244, 222, 147, 67, 19, 8, 202, 12, 147, 180, 172, 90, 82, 159, 221, }, { 56, 176, 1, 193, 60, 213, 144, 170, 216, 193, 186, 201, 93, 205, 25, 55, }, { 205, 87, 220, 210, 59, 122, 235, 93, 127, 210, 3, 253, 224, 11, 173, 179, }, { 72, 19, 3, 128, 68, 188, 115, 61, 171, 128, 13, 152, 231, 148, 43, 89, }, { 4, 223, 161, 118, 197, 53, 24, 157, 20, 118, 31, 55, 238, 246, 98, 164, }, { 129, 155, 126, 36, 186, 243, 128, 253, 192, 36, 17, 82, 233, 105, 228, 78, }, { 156, 132, 38, 89, 4, 228, 206, 30, 169, 89, 59, 170, 252, 50, 240, 157, }, { 25, 192, 249, 11, 123, 34, 86, 126, 125, 11, 53, 207, 251, 173, 118, 119, }, { 85, 12, 91, 253, 250, 171, 61, 222, 194, 253, 39, 96, 242, 207, 63, 138, }, { 208, 72, 132, 175, 133, 109, 165, 190, 22, 175, 41, 5, 245, 80, 185, 96, }, { 111, 50, 235, 7, 69, 133, 161, 219, 16, 7, 115, 83, 216, 121, 23, 239, }, { 234, 118, 52, 85, 58, 67, 57, 187, 196, 85, 125, 54, 223, 230, 145, 5, }, { 166, 186, 150, 163, 187, 202, 82, 27, 123, 163, 111, 153, 214, 132, 216, 248, }, { 35, 254, 73, 241, 196, 12, 202, 123, 175, 241, 97, 252, 209, 27, 94, 18, }, { 62, 225, 17, 140, 122, 27, 132, 152, 198, 140, 75, 4, 196, 64, 74, 193, }, { 187, 165, 206, 222, 5, 221, 28, 248, 18, 222, 69, 97, 195, 223, 204, 43, }, { 247, 105, 108, 40, 132, 84, 119, 88, 173, 40, 87, 206, 202, 189, 133, 214, }, { 114, 45, 179, 122, 251, 146, 239, 56, 121, 122, 89, 171, 205, 34, 3, 60, }, { 74, 157, 178, 187, 199, 71, 127, 146, 161, 187, 227, 98, 144, 239, 26, 11, }, { 207, 217, 109, 233, 184, 129, 231, 242, 117, 233, 237, 7, 151, 112, 156, 225, }, { 131, 21, 207, 31, 57, 8, 140, 82, 202, 31, 255, 168, 158, 18, 213, 28, }, { 6, 81, 16, 77, 70, 206, 20, 50, 30, 77, 241, 205, 153, 141, 83, 246, }, { 27, 78, 72, 48, 248, 217, 90, 209, 119, 48, 219, 53, 140, 214, 71, 37, }, { 158, 10, 151, 98, 135, 31, 194, 177, 163, 98, 213, 80, 139, 73, 193, 207, }, { 210, 198, 53, 148, 6, 150, 169, 17, 28, 148, 199, 255, 130, 43, 136, 50, }, { 87, 130, 234, 198, 121, 80, 49, 113, 200, 198, 201, 154, 133, 180, 14, 216, }, { 232, 248, 133, 110, 185, 184, 53, 20, 206, 110, 147, 204, 168, 157, 160, 87, }, { 109, 188, 90, 60, 198, 126, 173, 116, 26, 60, 157, 169, 175, 2, 38, 189, }, { 33, 112, 248, 202, 71, 247, 198, 212, 165, 202, 143, 6, 166, 96, 111, 64, }, { 164, 52, 39, 152, 56, 49, 94, 180, 113, 152, 129, 99, 161, 255, 233, 170, }, { 185, 43, 127, 229, 134, 38, 16, 87, 24, 229, 171, 155, 180, 164, 253, 121, }, { 60, 111, 160, 183, 249, 224, 136, 55, 204, 183, 165, 254, 179, 59, 123, 147, }, { 112, 163, 2, 65, 120, 105, 227, 151, 115, 65, 183, 81, 186, 89, 50, 110, }, { 245, 231, 221, 19, 7, 175, 123, 247, 167, 19, 185, 52, 189, 198, 180, 132, }, { 89, 174, 123, 103, 118, 244, 21, 186, 254, 103, 6, 57, 3, 22, 153, 165, }, { 220, 234, 164, 53, 9, 50, 141, 218, 42, 53, 8, 92, 4, 137, 31, 79, }, { 144, 38, 6, 195, 136, 187, 230, 122, 149, 195, 26, 243, 13, 235, 86, 178, }, { 21, 98, 217, 145, 247, 125, 126, 26, 65, 145, 20, 150, 10, 116, 208, 88, }, { 8, 125, 129, 236, 73, 106, 48, 249, 40, 236, 62, 110, 31, 47, 196, 139, }, { 141, 57, 94, 190, 54, 172, 168, 153, 252, 190, 48, 11, 24, 176, 66, 97, }, { 193, 245, 252, 72, 183, 37, 195, 57, 67, 72, 34, 164, 17, 210, 11, 156, }, { 68, 177, 35, 26, 200, 227, 91, 89, 151, 26, 44, 193, 22, 77, 141, 118, }, { 251, 203, 76, 178, 8, 11, 95, 60, 145, 178, 118, 151, 59, 100, 35, 249, }, { 126, 143, 147, 224, 119, 205, 199, 92, 69, 224, 120, 242, 60, 251, 165, 19, }, { 50, 67, 49, 22, 246, 68, 172, 252, 250, 22, 106, 93, 53, 153, 236, 238, }, { 183, 7, 238, 68, 137, 130, 52, 156, 46, 68, 100, 56, 50, 6, 106, 4, }, { 170, 24, 182, 57, 55, 149, 122, 127, 71, 57, 78, 192, 39, 93, 126, 215, }, { 47, 92, 105, 107, 72, 83, 226, 31, 147, 107, 64, 165, 32, 194, 248, 61, }, { 99, 144, 203, 157, 201, 218, 137, 191, 44, 157, 82, 10, 41, 160, 177, 192, }, { 230, 212, 20, 207, 182, 28, 17, 223, 248, 207, 92, 111, 46, 63, 55, 42, }, { 222, 100, 21, 14, 138, 201, 129, 117, 32, 14, 230, 166, 115, 242, 46, 29, }, { 91, 32, 202, 92, 245, 15, 25, 21, 244, 92, 232, 195, 116, 109, 168, 247, }, { 23, 236, 104, 170, 116, 134, 114, 181, 75, 170, 250, 108, 125, 15, 225, 10, }, { 146, 168, 183, 248, 11, 64, 234, 213, 159, 248, 244, 9, 122, 144, 103, 224, }, { 143, 183, 239, 133, 181, 87, 164, 54, 246, 133, 222, 241, 111, 203, 115, 51, }, { 10, 243, 48, 215, 202, 145, 60, 86, 34, 215, 208, 148, 104, 84, 245, 217, }, { 70, 63, 146, 33, 75, 24, 87, 246, 157, 33, 194, 59, 97, 54, 188, 36, }, { 195, 123, 77, 115, 52, 222, 207, 150, 73, 115, 204, 94, 102, 169, 58, 206, }, { 124, 1, 34, 219, 244, 54, 203, 243, 79, 219, 150, 8, 75, 128, 148, 65, }, { 249, 69, 253, 137, 139, 240, 83, 147, 155, 137, 152, 109, 76, 31, 18, 171, }, { 181, 137, 95, 127, 10, 121, 56, 51, 36, 127, 138, 194, 69, 125, 91, 86, }, { 48, 205, 128, 45, 117, 191, 160, 83, 240, 45, 132, 167, 66, 226, 221, 188, }, { 45, 210, 216, 80, 203, 168, 238, 176, 153, 80, 174, 95, 87, 185, 201, 111, }, { 168, 150, 7, 2, 180, 110, 118, 208, 77, 2, 160, 58, 80, 38, 79, 133, }, { 228, 90, 165, 244, 53, 231, 29, 112, 242, 244, 178, 149, 89, 68, 6, 120, }, { 97, 30, 122, 166, 74, 33, 133, 16, 38, 166, 188, 240, 94, 219, 128, 146, }, { 148, 249, 167, 181, 77, 142, 254, 231, 129, 181, 5, 196, 227, 29, 52, 22, }, { 17, 189, 120, 231, 50, 72, 102, 135, 85, 231, 11, 161, 228, 130, 178, 252, }, { 93, 113, 218, 17, 179, 193, 13, 39, 234, 17, 25, 14, 237, 224, 251, 1, }, { 216, 53, 5, 67, 204, 7, 149, 71, 62, 67, 23, 107, 234, 127, 125, 235, }, { 197, 42, 93, 62, 114, 16, 219, 164, 87, 62, 61, 147, 255, 36, 105, 56, }, { 64, 110, 130, 108, 13, 214, 67, 196, 131, 108, 51, 246, 248, 187, 239, 210, }, { 12, 162, 32, 154, 140, 95, 40, 100, 60, 154, 33, 89, 241, 217, 166, 47, }, { 137, 230, 255, 200, 243, 153, 176, 4, 232, 200, 47, 60, 246, 70, 32, 197, }, { 54, 156, 144, 96, 51, 113, 180, 97, 238, 96, 117, 106, 219, 111, 142, 74, }, { 179, 216, 79, 50, 76, 183, 44, 1, 58, 50, 123, 15, 220, 240, 8, 160, }, { 255, 20, 237, 196, 205, 62, 71, 161, 133, 196, 105, 160, 213, 146, 65, 93, }, { 122, 80, 50, 150, 178, 248, 223, 193, 81, 150, 103, 197, 210, 13, 199, 183, }, { 103, 79, 106, 235, 12, 239, 145, 34, 56, 235, 77, 61, 199, 86, 211, 100, }, { 226, 11, 181, 185, 115, 41, 9, 66, 236, 185, 67, 88, 192, 201, 85, 142, }, { 174, 199, 23, 79, 242, 160, 98, 226, 83, 79, 81, 247, 201, 171, 28, 115, }, { 43, 131, 200, 29, 141, 102, 250, 130, 135, 29, 95, 146, 206, 52, 154, 153, }, { 19, 51, 201, 220, 177, 179, 106, 40, 95, 220, 229, 91, 147, 249, 131, 174, }, { 150, 119, 22, 142, 206, 117, 242, 72, 139, 142, 235, 62, 148, 102, 5, 68, }, { 218, 187, 180, 120, 79, 252, 153, 232, 52, 120, 249, 145, 157, 4, 76, 185, }, { 95, 255, 107, 42, 48, 58, 1, 136, 224, 42, 247, 244, 154, 155, 202, 83, }, { 66, 224, 51, 87, 142, 45, 79, 107, 137, 87, 221, 12, 143, 192, 222, 128, }, { 199, 164, 236, 5, 241, 235, 215, 11, 93, 5, 211, 105, 136, 95, 88, 106, }, { 139, 104, 78, 243, 112, 98, 188, 171, 226, 243, 193, 198, 129, 61, 17, 151, }, { 14, 44, 145, 161, 15, 164, 36, 203, 54, 161, 207, 163, 134, 162, 151, 125, }, { 177, 86, 254, 9, 207, 76, 32, 174, 48, 9, 149, 245, 171, 139, 57, 242, }, { 52, 18, 33, 91, 176, 138, 184, 206, 228, 91, 155, 144, 172, 20, 191, 24, }, { 120, 222, 131, 173, 49, 3, 211, 110, 91, 173, 137, 63, 165, 118, 246, 229, }, { 253, 154, 92, 255, 78, 197, 75, 14, 143, 255, 135, 90, 162, 233, 112, 15, }, { 224, 133, 4, 130, 240, 210, 5, 237, 230, 130, 173, 162, 183, 178, 100, 220, }, { 101, 193, 219, 208, 143, 20, 157, 141, 50, 208, 163, 199, 176, 45, 226, 54, }, { 41, 13, 121, 38, 14, 157, 246, 45, 141, 38, 177, 104, 185, 79, 171, 203, }, { 172, 73, 166, 116, 113, 91, 110, 77, 89, 116, 191, 13, 190, 208, 45, 33, }, { 178, 159, 246, 206, 236, 43, 42, 183, 63, 206, 12, 114, 6, 44, 241, 137, }, { 55, 219, 41, 156, 147, 237, 178, 215, 235, 156, 2, 23, 1, 179, 119, 99, }, { 123, 23, 139, 106, 18, 100, 217, 119, 84, 106, 16, 184, 8, 209, 62, 158, }, { 254, 83, 84, 56, 109, 162, 65, 23, 128, 56, 30, 221, 15, 78, 184, 116, }, { 227, 76, 12, 69, 211, 181, 15, 244, 233, 69, 52, 37, 26, 21, 172, 167, }, { 102, 8, 211, 23, 172, 115, 151, 148, 61, 23, 58, 64, 29, 138, 42, 77, }, { 42, 196, 113, 225, 45, 250, 252, 52, 130, 225, 40, 239, 20, 232, 99, 176, }, { 175, 128, 174, 179, 82, 60, 100, 84, 86, 179, 38, 138, 19, 119, 229, 90, }, { 16, 250, 193, 27, 146, 212, 96, 49, 80, 27, 124, 220, 62, 94, 75, 213, }, { 149, 190, 30, 73, 237, 18, 248, 81, 132, 73, 114, 185, 57, 193, 205, 63, }, { 217, 114, 188, 191, 108, 155, 147, 241, 59, 191, 96, 22, 48, 163, 132, 194, }, { 92, 54, 99, 237, 19, 93, 11, 145, 239, 237, 110, 115, 55, 60, 2, 40, }, { 65, 41, 59, 144, 173, 74, 69, 114, 134, 144, 68, 139, 34, 103, 22, 251, }, { 196, 109, 228, 194, 210, 140, 221, 18, 82, 194, 74, 238, 37, 248, 144, 17, }, { 136, 161, 70, 52, 83, 5, 182, 178, 237, 52, 88, 65, 44, 154, 217, 236, }, { 13, 229, 153, 102, 44, 195, 46, 210, 57, 102, 86, 36, 43, 5, 95, 6, }, { 53, 85, 152, 167, 16, 22, 190, 120, 225, 167, 236, 237, 118, 200, 70, 49, }, { 176, 17, 71, 245, 111, 208, 38, 24, 53, 245, 226, 136, 113, 87, 192, 219, }, { 252, 221, 229, 3, 238, 89, 77, 184, 138, 3, 240, 39, 120, 53, 137, 38, }, { 121, 153, 58, 81, 145, 159, 213, 216, 94, 81, 254, 66, 127, 170, 15, 204, }, { 100, 134, 98, 44, 47, 136, 155, 59, 55, 44, 212, 186, 106, 241, 27, 31, }, { 225, 194, 189, 126, 80, 78, 3, 91, 227, 126, 218, 223, 109, 110, 157, 245, }, { 173, 14, 31, 136, 209, 199, 104, 251, 92, 136, 200, 112, 100, 12, 212, 8, }, { 40, 74, 192, 218, 174, 1, 240, 155, 136, 218, 198, 21, 99, 147, 82, 226, }, { 151, 48, 175, 114, 110, 233, 244, 254, 142, 114, 156, 67, 78, 186, 252, 109, }, { 18, 116, 112, 32, 17, 47, 108, 158, 90, 32, 146, 38, 73, 37, 122, 135, }, { 94, 184, 210, 214, 144, 166, 7, 62, 229, 214, 128, 137, 64, 71, 51, 122, }, { 219, 252, 13, 132, 239, 96, 159, 94, 49, 132, 142, 236, 71, 216, 181, 144, }, { 198, 227, 85, 249, 81, 119, 209, 189, 88, 249, 164, 20, 82, 131, 161, 67, }, { 67, 167, 138, 171, 46, 177, 73, 221, 140, 171, 170, 113, 85, 28, 39, 169, }, { 15, 107, 40, 93, 175, 56, 34, 125, 51, 93, 184, 222, 92, 126, 110, 84, }, { 138, 47, 247, 15, 208, 254, 186, 29, 231, 15, 182, 187, 91, 225, 232, 190, }, { 127, 200, 42, 28, 215, 81, 193, 234, 64, 28, 15, 143, 230, 39, 92, 58, }, { 250, 140, 245, 78, 168, 151, 89, 138, 148, 78, 1, 234, 225, 184, 218, 208, }, { 182, 64, 87, 184, 41, 30, 50, 42, 43, 184, 19, 69, 232, 218, 147, 45, }, { 51, 4, 136, 234, 86, 216, 170, 74, 255, 234, 29, 32, 239, 69, 21, 199, }, { 46, 27, 208, 151, 232, 207, 228, 169, 150, 151, 55, 216, 250, 30, 1, 20, }, { 171, 95, 15, 197, 151, 9, 124, 201, 66, 197, 57, 189, 253, 129, 135, 254, }, { 231, 147, 173, 51, 22, 128, 23, 105, 253, 51, 43, 18, 244, 227, 206, 3, }, { 98, 215, 114, 97, 105, 70, 143, 9, 41, 97, 37, 119, 243, 124, 72, 233, }, { 221, 173, 29, 201, 169, 174, 139, 108, 47, 201, 127, 33, 222, 85, 230, 102, }, { 88, 233, 194, 155, 214, 104, 19, 12, 251, 155, 113, 68, 217, 202, 96, 140, }, { 20, 37, 96, 109, 87, 225, 120, 172, 68, 109, 99, 235, 208, 168, 41, 113, }, { 145, 97, 191, 63, 40, 39, 224, 204, 144, 63, 109, 142, 215, 55, 175, 155, }, { 140, 126, 231, 66, 150, 48, 174, 47, 249, 66, 71, 118, 194, 108, 187, 72, }, { 9, 58, 56, 16, 233, 246, 54, 79, 45, 16, 73, 19, 197, 243, 61, 162, }, { 69, 246, 154, 230, 104, 127, 93, 239, 146, 230, 91, 188, 204, 145, 116, 95, }, { 192, 178, 69, 180, 23, 185, 197, 143, 70, 180, 85, 217, 203, 14, 242, 181, }, { 248, 2, 68, 117, 43, 108, 85, 37, 158, 117, 239, 16, 150, 195, 235, 130, }, { 125, 70, 155, 39, 84, 170, 205, 69, 74, 39, 225, 117, 145, 92, 109, 104, }, { 49, 138, 57, 209, 213, 35, 166, 229, 245, 209, 243, 218, 152, 62, 36, 149, }, { 180, 206, 230, 131, 170, 229, 62, 133, 33, 131, 253, 191, 159, 161, 162, 127, }, { 169, 209, 190, 254, 20, 242, 112, 102, 72, 254, 215, 71, 138, 250, 182, 172, }, { 44, 149, 97, 172, 107, 52, 232, 6, 156, 172, 217, 34, 141, 101, 48, 70, }, { 96, 89, 195, 90, 234, 189, 131, 166, 35, 90, 203, 141, 132, 7, 121, 187, }, { 229, 29, 28, 8, 149, 123, 27, 198, 247, 8, 197, 232, 131, 152, 255, 81, }, { 90, 103, 115, 160, 85, 147, 31, 163, 241, 160, 159, 190, 174, 177, 81, 222, }, { 223, 35, 172, 242, 42, 85, 135, 195, 37, 242, 145, 219, 169, 46, 215, 52, }, { 147, 239, 14, 4, 171, 220, 236, 99, 154, 4, 131, 116, 160, 76, 158, 201, }, { 22, 171, 209, 86, 212, 26, 116, 3, 78, 86, 141, 17, 167, 211, 24, 35, }, { 11, 180, 137, 43, 106, 13, 58, 224, 39, 43, 167, 233, 178, 136, 12, 240, }, { 142, 240, 86, 121, 21, 203, 162, 128, 243, 121, 169, 140, 181, 23, 138, 26, }, { 194, 60, 244, 143, 148, 66, 201, 32, 76, 143, 187, 35, 188, 117, 195, 231, }, { 71, 120, 43, 221, 235, 132, 81, 64, 152, 221, 181, 70, 187, 234, 69, 13, }, { 235, 49, 141, 169, 154, 223, 63, 13, 193, 169, 10, 75, 5, 58, 104, 44, }, { 110, 117, 82, 251, 229, 25, 167, 109, 21, 251, 4, 46, 2, 165, 238, 198, }, { 34, 185, 240, 13, 100, 144, 204, 205, 170, 13, 22, 129, 11, 199, 167, 59, }, { 167, 253, 47, 95, 27, 86, 84, 173, 126, 95, 24, 228, 12, 88, 33, 209, }, { 186, 226, 119, 34, 165, 65, 26, 78, 23, 34, 50, 28, 25, 3, 53, 2, }, { 63, 166, 168, 112, 218, 135, 130, 46, 195, 112, 60, 121, 30, 156, 179, 232, }, { 115, 106, 10, 134, 91, 14, 233, 142, 124, 134, 46, 214, 23, 254, 250, 21, }, { 246, 46, 213, 212, 36, 200, 113, 238, 168, 212, 32, 179, 16, 97, 124, 255, }, { 73, 84, 186, 124, 228, 32, 117, 139, 174, 124, 122, 229, 61, 72, 210, 112, }, { 204, 16, 101, 46, 155, 230, 237, 235, 122, 46, 116, 128, 58, 215, 84, 154, }, { 128, 220, 199, 216, 26, 111, 134, 75, 197, 216, 102, 47, 51, 181, 29, 103, }, { 5, 152, 24, 138, 101, 169, 30, 43, 17, 138, 104, 74, 52, 42, 155, 141, }, { 24, 135, 64, 247, 219, 190, 80, 200, 120, 247, 66, 178, 33, 113, 143, 94, }, { 157, 195, 159, 165, 164, 120, 200, 168, 172, 165, 76, 215, 38, 238, 9, 180, }, { 209, 15, 61, 83, 37, 241, 163, 8, 19, 83, 94, 120, 47, 140, 64, 73, }, { 84, 75, 226, 1, 90, 55, 59, 104, 199, 1, 80, 29, 40, 19, 198, 163, }, { 108, 251, 227, 192, 102, 226, 171, 194, 31, 192, 234, 212, 117, 222, 223, 148, }, { 233, 191, 60, 146, 25, 36, 51, 162, 203, 146, 228, 177, 114, 65, 89, 126, }, { 165, 115, 158, 100, 152, 173, 88, 2, 116, 100, 246, 30, 123, 35, 16, 131, }, { 32, 55, 65, 54, 231, 107, 192, 98, 160, 54, 248, 123, 124, 188, 150, 105, }, { 61, 40, 25, 75, 89, 124, 142, 129, 201, 75, 210, 131, 105, 231, 130, 186, }, { 184, 108, 198, 25, 38, 186, 22, 225, 29, 25, 220, 230, 110, 120, 4, 80, }, { 244, 160, 100, 239, 167, 51, 125, 65, 162, 239, 206, 73, 103, 26, 77, 173, }, { 113, 228, 187, 189, 216, 245, 229, 33, 118, 189, 192, 44, 96, 133, 203, 71, }, { 206, 158, 212, 21, 24, 29, 225, 68, 112, 21, 154, 122, 77, 172, 101, 200, }, { 75, 218, 11, 71, 103, 219, 121, 36, 164, 71, 148, 31, 74, 51, 227, 34, }, { 7, 22, 169, 177, 230, 82, 18, 132, 27, 177, 134, 176, 67, 81, 170, 223, }, { 130, 82, 118, 227, 153, 148, 138, 228, 207, 227, 136, 213, 68, 206, 44, 53, }, { 159, 77, 46, 158, 39, 131, 196, 7, 166, 158, 162, 45, 81, 149, 56, 230, }, { 26, 9, 241, 204, 88, 69, 92, 103, 114, 204, 172, 72, 86, 10, 190, 12, }, { 86, 197, 83, 58, 217, 204, 55, 199, 205, 58, 190, 231, 95, 104, 247, 241, }, { 211, 129, 140, 104, 166, 10, 175, 167, 25, 104, 176, 130, 88, 247, 113, 27, }, { 38, 102, 81, 123, 161, 165, 212, 80, 190, 123, 9, 182, 229, 49, 197, 159, }, { 163, 34, 142, 41, 222, 99, 76, 48, 106, 41, 7, 211, 226, 174, 67, 117, }, { 239, 238, 44, 223, 95, 234, 39, 144, 213, 223, 21, 124, 235, 204, 10, 136, }, { 106, 170, 243, 141, 32, 44, 191, 240, 1, 141, 27, 25, 236, 83, 140, 98, }, { 119, 181, 171, 240, 158, 59, 241, 19, 104, 240, 49, 225, 249, 8, 152, 177, }, { 242, 241, 116, 162, 225, 253, 105, 115, 188, 162, 63, 132, 254, 151, 30, 91, }, { 190, 61, 214, 84, 96, 116, 2, 211, 3, 84, 45, 43, 247, 245, 87, 166, }, { 59, 121, 9, 6, 31, 178, 154, 179, 215, 6, 35, 78, 240, 106, 209, 76, }, { 132, 3, 102, 174, 223, 90, 158, 214, 209, 174, 121, 24, 221, 67, 127, 195, }, { 1, 71, 185, 252, 160, 156, 6, 182, 5, 252, 119, 125, 218, 220, 249, 41, }, { 77, 139, 27, 10, 33, 21, 109, 22, 186, 10, 101, 210, 211, 190, 176, 212, }, { 200, 207, 196, 88, 94, 211, 245, 118, 110, 88, 107, 183, 212, 33, 54, 62, }, { 213, 208, 156, 37, 224, 196, 187, 149, 7, 37, 65, 79, 193, 122, 34, 237, }, { 80, 148, 67, 119, 159, 2, 35, 245, 211, 119, 79, 42, 198, 229, 164, 7, }, { 28, 88, 225, 129, 30, 139, 72, 85, 108, 129, 93, 133, 207, 135, 237, 250, }, { 153, 28, 62, 211, 97, 77, 208, 53, 184, 211, 83, 224, 200, 24, 107, 16, }, { 161, 172, 63, 18, 93, 152, 64, 159, 96, 18, 233, 41, 149, 213, 114, 39, }, { 36, 232, 224, 64, 34, 94, 216, 255, 180, 64, 231, 76, 146, 74, 244, 205, }, { 104, 36, 66, 182, 163, 215, 179, 95, 11, 182, 245, 227, 155, 40, 189, 48, }, { 237, 96, 157, 228, 220, 17, 43, 63, 223, 228, 251, 134, 156, 183, 59, 218, }, { 240, 127, 197, 153, 98, 6, 101, 220, 182, 153, 209, 126, 137, 236, 47, 9, }, { 117, 59, 26, 203, 29, 192, 253, 188, 98, 203, 223, 27, 142, 115, 169, 227, }, { 57, 247, 184, 61, 156, 73, 150, 28, 221, 61, 205, 180, 135, 17, 224, 30, }, { 188, 179, 103, 111, 227, 143, 14, 124, 9, 111, 195, 209, 128, 142, 102, 244, }, { 3, 201, 8, 199, 35, 103, 10, 25, 15, 199, 153, 135, 173, 167, 200, 123, }, { 134, 141, 215, 149, 92, 161, 146, 121, 219, 149, 151, 226, 170, 56, 78, 145, }, { 202, 65, 117, 99, 221, 40, 249, 217, 100, 99, 133, 77, 163, 90, 7, 108, }, { 79, 5, 170, 49, 162, 238, 97, 185, 176, 49, 139, 40, 164, 197, 129, 134, }, { 82, 26, 242, 76, 28, 249, 47, 90, 217, 76, 161, 208, 177, 158, 149, 85, }, { 215, 94, 45, 30, 99, 63, 183, 58, 13, 30, 175, 181, 182, 1, 19, 191, }, { 155, 146, 143, 232, 226, 182, 220, 154, 178, 232, 189, 26, 191, 99, 90, 66, }, { 30, 214, 80, 186, 157, 112, 68, 250, 102, 186, 179, 127, 184, 252, 220, 168, }, }, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, { 16, 209, 211, 145, 145, 254, 243, 1, 177, 120, 88, 1, 73, 107, 45, 169, }, { 32, 97, 101, 225, 225, 63, 37, 2, 161, 240, 176, 2, 146, 214, 90, 145, }, { 48, 176, 182, 112, 112, 193, 214, 3, 16, 136, 232, 3, 219, 189, 119, 56, }, { 64, 194, 202, 1, 1, 126, 74, 4, 129, 35, 163, 4, 231, 111, 180, 225, }, { 80, 19, 25, 144, 144, 128, 185, 5, 48, 91, 251, 5, 174, 4, 153, 72, }, { 96, 163, 175, 224, 224, 65, 111, 6, 32, 211, 19, 6, 117, 185, 238, 112, }, { 112, 114, 124, 113, 113, 191, 156, 7, 145, 171, 75, 7, 60, 210, 195, 217, }, { 128, 71, 87, 2, 2, 252, 148, 8, 193, 70, 133, 8, 13, 222, 171, 1, }, { 144, 150, 132, 147, 147, 2, 103, 9, 112, 62, 221, 9, 68, 181, 134, 168, }, { 160, 38, 50, 227, 227, 195, 177, 10, 96, 182, 53, 10, 159, 8, 241, 144, }, { 176, 247, 225, 114, 114, 61, 66, 11, 209, 206, 109, 11, 214, 99, 220, 57, }, { 192, 133, 157, 3, 3, 130, 222, 12, 64, 101, 38, 12, 234, 177, 31, 224, }, { 208, 84, 78, 146, 146, 124, 45, 13, 241, 29, 126, 13, 163, 218, 50, 73, }, { 224, 228, 248, 226, 226, 189, 251, 14, 225, 149, 150, 14, 120, 103, 69, 113, }, { 240, 53, 43, 115, 115, 67, 8, 15, 80, 237, 206, 15, 49, 12, 104, 216, }, { 195, 142, 174, 4, 4, 59, 235, 16, 65, 140, 201, 16, 26, 127, 149, 2, }, { 211, 95, 125, 149, 149, 197, 24, 17, 240, 244, 145, 17, 83, 20, 184, 171, }, { 227, 239, 203, 229, 229, 4, 206, 18, 224, 124, 121, 18, 136, 169, 207, 147, }, { 243, 62, 24, 116, 116, 250, 61, 19, 81, 4, 33, 19, 193, 194, 226, 58, }, { 131, 76, 100, 5, 5, 69, 161, 20, 192, 175, 106, 20, 253, 16, 33, 227, }, { 147, 157, 183, 148, 148, 187, 82, 21, 113, 215, 50, 21, 180, 123, 12, 74, }, { 163, 45, 1, 228, 228, 122, 132, 22, 97, 95, 218, 22, 111, 198, 123, 114, }, { 179, 252, 210, 117, 117, 132, 119, 23, 208, 39, 130, 23, 38, 173, 86, 219, }, { 67, 201, 249, 6, 6, 199, 127, 24, 128, 202, 76, 24, 23, 161, 62, 3, }, { 83, 24, 42, 151, 151, 57, 140, 25, 49, 178, 20, 25, 94, 202, 19, 170, }, { 99, 168, 156, 231, 231, 248, 90, 26, 33, 58, 252, 26, 133, 119, 100, 146, }, { 115, 121, 79, 118, 118, 6, 169, 27, 144, 66, 164, 27, 204, 28, 73, 59, }, { 3, 11, 51, 7, 7, 185, 53, 28, 1, 233, 239, 28, 240, 206, 138, 226, }, { 19, 218, 224, 150, 150, 71, 198, 29, 176, 145, 183, 29, 185, 165, 167, 75, }, { 35, 106, 86, 230, 230, 134, 16, 30, 160, 25, 95, 30, 98, 24, 208, 115, }, { 51, 187, 133, 119, 119, 120, 227, 31, 17, 97, 7, 31, 43, 115, 253, 218, }, { 69, 223, 159, 8, 8, 118, 21, 32, 130, 219, 81, 32, 52, 254, 233, 4, }, { 85, 14, 76, 153, 153, 136, 230, 33, 51, 163, 9, 33, 125, 149, 196, 173, }, { 101, 190, 250, 233, 233, 73, 48, 34, 35, 43, 225, 34, 166, 40, 179, 149, }, { 117, 111, 41, 120, 120, 183, 195, 35, 146, 83, 185, 35, 239, 67, 158, 60, }, { 5, 29, 85, 9, 9, 8, 95, 36, 3, 248, 242, 36, 211, 145, 93, 229, }, { 21, 204, 134, 152, 152, 246, 172, 37, 178, 128, 170, 37, 154, 250, 112, 76, }, { 37, 124, 48, 232, 232, 55, 122, 38, 162, 8, 66, 38, 65, 71, 7, 116, }, { 53, 173, 227, 121, 121, 201, 137, 39, 19, 112, 26, 39, 8, 44, 42, 221, }, { 197, 152, 200, 10, 10, 138, 129, 40, 67, 157, 212, 40, 57, 32, 66, 5, }, { 213, 73, 27, 155, 155, 116, 114, 41, 242, 229, 140, 41, 112, 75, 111, 172, }, { 229, 249, 173, 235, 235, 181, 164, 42, 226, 109, 100, 42, 171, 246, 24, 148, }, { 245, 40, 126, 122, 122, 75, 87, 43, 83, 21, 60, 43, 226, 157, 53, 61, }, { 133, 90, 2, 11, 11, 244, 203, 44, 194, 190, 119, 44, 222, 79, 246, 228, }, { 149, 139, 209, 154, 154, 10, 56, 45, 115, 198, 47, 45, 151, 36, 219, 77, }, { 165, 59, 103, 234, 234, 203, 238, 46, 99, 78, 199, 46, 76, 153, 172, 117, }, { 181, 234, 180, 123, 123, 53, 29, 47, 210, 54, 159, 47, 5, 242, 129, 220, }, { 134, 81, 49, 12, 12, 77, 254, 48, 195, 87, 152, 48, 46, 129, 124, 6, }, { 150, 128, 226, 157, 157, 179, 13, 49, 114, 47, 192, 49, 103, 234, 81, 175, }, { 166, 48, 84, 237, 237, 114, 219, 50, 98, 167, 40, 50, 188, 87, 38, 151, }, { 182, 225, 135, 124, 124, 140, 40, 51, 211, 223, 112, 51, 245, 60, 11, 62, }, { 198, 147, 251, 13, 13, 51, 180, 52, 66, 116, 59, 52, 201, 238, 200, 231, }, { 214, 66, 40, 156, 156, 205, 71, 53, 243, 12, 99, 53, 128, 133, 229, 78, }, { 230, 242, 158, 236, 236, 12, 145, 54, 227, 132, 139, 54, 91, 56, 146, 118, }, { 246, 35, 77, 125, 125, 242, 98, 55, 82, 252, 211, 55, 18, 83, 191, 223, }, { 6, 22, 102, 14, 14, 177, 106, 56, 2, 17, 29, 56, 35, 95, 215, 7, }, { 22, 199, 181, 159, 159, 79, 153, 57, 179, 105, 69, 57, 106, 52, 250, 174, }, { 38, 119, 3, 239, 239, 142, 79, 58, 163, 225, 173, 58, 177, 137, 141, 150, }, { 54, 166, 208, 126, 126, 112, 188, 59, 18, 153, 245, 59, 248, 226, 160, 63, }, { 70, 212, 172, 15, 15, 207, 32, 60, 131, 50, 190, 60, 196, 48, 99, 230, }, { 86, 5, 127, 158, 158, 49, 211, 61, 50, 74, 230, 61, 141, 91, 78, 79, }, { 102, 181, 201, 238, 238, 240, 5, 62, 34, 194, 14, 62, 86, 230, 57, 119, }, { 118, 100, 26, 127, 127, 14, 246, 63, 147, 186, 86, 63, 31, 141, 20, 222, }, { 138, 125, 253, 16, 16, 236, 42, 64, 199, 117, 162, 64, 104, 63, 17, 8, }, { 154, 172, 46, 129, 129, 18, 217, 65, 118, 13, 250, 65, 33, 84, 60, 161, }, { 170, 28, 152, 241, 241, 211, 15, 66, 102, 133, 18, 66, 250, 233, 75, 153, }, { 186, 205, 75, 96, 96, 45, 252, 67, 215, 253, 74, 67, 179, 130, 102, 48, }, { 202, 191, 55, 17, 17, 146, 96, 68, 70, 86, 1, 68, 143, 80, 165, 233, }, { 218, 110, 228, 128, 128, 108, 147, 69, 247, 46, 89, 69, 198, 59, 136, 64, }, { 234, 222, 82, 240, 240, 173, 69, 70, 231, 166, 177, 70, 29, 134, 255, 120, }, { 250, 15, 129, 97, 97, 83, 182, 71, 86, 222, 233, 71, 84, 237, 210, 209, }, { 10, 58, 170, 18, 18, 16, 190, 72, 6, 51, 39, 72, 101, 225, 186, 9, }, { 26, 235, 121, 131, 131, 238, 77, 73, 183, 75, 127, 73, 44, 138, 151, 160, }, { 42, 91, 207, 243, 243, 47, 155, 74, 167, 195, 151, 74, 247, 55, 224, 152, }, { 58, 138, 28, 98, 98, 209, 104, 75, 22, 187, 207, 75, 190, 92, 205, 49, }, { 74, 248, 96, 19, 19, 110, 244, 76, 135, 16, 132, 76, 130, 142, 14, 232, }, { 90, 41, 179, 130, 130, 144, 7, 77, 54, 104, 220, 77, 203, 229, 35, 65, }, { 106, 153, 5, 242, 242, 81, 209, 78, 38, 224, 52, 78, 16, 88, 84, 121, }, { 122, 72, 214, 99, 99, 175, 34, 79, 151, 152, 108, 79, 89, 51, 121, 208, }, { 73, 243, 83, 20, 20, 215, 193, 80, 134, 249, 107, 80, 114, 64, 132, 10, }, { 89, 34, 128, 133, 133, 41, 50, 81, 55, 129, 51, 81, 59, 43, 169, 163, }, { 105, 146, 54, 245, 245, 232, 228, 82, 39, 9, 219, 82, 224, 150, 222, 155, }, { 121, 67, 229, 100, 100, 22, 23, 83, 150, 113, 131, 83, 169, 253, 243, 50, }, { 9, 49, 153, 21, 21, 169, 139, 84, 7, 218, 200, 84, 149, 47, 48, 235, }, { 25, 224, 74, 132, 132, 87, 120, 85, 182, 162, 144, 85, 220, 68, 29, 66, }, { 41, 80, 252, 244, 244, 150, 174, 86, 166, 42, 120, 86, 7, 249, 106, 122, }, { 57, 129, 47, 101, 101, 104, 93, 87, 23, 82, 32, 87, 78, 146, 71, 211, }, { 201, 180, 4, 22, 22, 43, 85, 88, 71, 191, 238, 88, 127, 158, 47, 11, }, { 217, 101, 215, 135, 135, 213, 166, 89, 246, 199, 182, 89, 54, 245, 2, 162, }, { 233, 213, 97, 247, 247, 20, 112, 90, 230, 79, 94, 90, 237, 72, 117, 154, }, { 249, 4, 178, 102, 102, 234, 131, 91, 87, 55, 6, 91, 164, 35, 88, 51, }, { 137, 118, 206, 23, 23, 85, 31, 92, 198, 156, 77, 92, 152, 241, 155, 234, }, { 153, 167, 29, 134, 134, 171, 236, 93, 119, 228, 21, 93, 209, 154, 182, 67, }, { 169, 23, 171, 246, 246, 106, 58, 94, 103, 108, 253, 94, 10, 39, 193, 123, }, { 185, 198, 120, 103, 103, 148, 201, 95, 214, 20, 165, 95, 67, 76, 236, 210, }, { 207, 162, 98, 24, 24, 154, 63, 96, 69, 174, 243, 96, 92, 193, 248, 12, }, { 223, 115, 177, 137, 137, 100, 204, 97, 244, 214, 171, 97, 21, 170, 213, 165, }, { 239, 195, 7, 249, 249, 165, 26, 98, 228, 94, 67, 98, 206, 23, 162, 157, }, { 255, 18, 212, 104, 104, 91, 233, 99, 85, 38, 27, 99, 135, 124, 143, 52, }, { 143, 96, 168, 25, 25, 228, 117, 100, 196, 141, 80, 100, 187, 174, 76, 237, }, { 159, 177, 123, 136, 136, 26, 134, 101, 117, 245, 8, 101, 242, 197, 97, 68, }, { 175, 1, 205, 248, 248, 219, 80, 102, 101, 125, 224, 102, 41, 120, 22, 124, }, { 191, 208, 30, 105, 105, 37, 163, 103, 212, 5, 184, 103, 96, 19, 59, 213, }, { 79, 229, 53, 26, 26, 102, 171, 104, 132, 232, 118, 104, 81, 31, 83, 13, }, { 95, 52, 230, 139, 139, 152, 88, 105, 53, 144, 46, 105, 24, 116, 126, 164, }, { 111, 132, 80, 251, 251, 89, 142, 106, 37, 24, 198, 106, 195, 201, 9, 156, }, { 127, 85, 131, 106, 106, 167, 125, 107, 148, 96, 158, 107, 138, 162, 36, 53, }, { 15, 39, 255, 27, 27, 24, 225, 108, 5, 203, 213, 108, 182, 112, 231, 236, }, { 31, 246, 44, 138, 138, 230, 18, 109, 180, 179, 141, 109, 255, 27, 202, 69, }, { 47, 70, 154, 250, 250, 39, 196, 110, 164, 59, 101, 110, 36, 166, 189, 125, }, { 63, 151, 73, 107, 107, 217, 55, 111, 21, 67, 61, 111, 109, 205, 144, 212, }, { 12, 44, 204, 28, 28, 161, 212, 112, 4, 34, 58, 112, 70, 190, 109, 14, }, { 28, 253, 31, 141, 141, 95, 39, 113, 181, 90, 98, 113, 15, 213, 64, 167, }, { 44, 77, 169, 253, 253, 158, 241, 114, 165, 210, 138, 114, 212, 104, 55, 159, }, { 60, 156, 122, 108, 108, 96, 2, 115, 20, 170, 210, 115, 157, 3, 26, 54, }, { 76, 238, 6, 29, 29, 223, 158, 116, 133, 1, 153, 116, 161, 209, 217, 239, }, { 92, 63, 213, 140, 140, 33, 109, 117, 52, 121, 193, 117, 232, 186, 244, 70, }, { 108, 143, 99, 252, 252, 224, 187, 118, 36, 241, 41, 118, 51, 7, 131, 126, }, { 124, 94, 176, 109, 109, 30, 72, 119, 149, 137, 113, 119, 122, 108, 174, 215, }, { 140, 107, 155, 30, 30, 93, 64, 120, 197, 100, 191, 120, 75, 96, 198, 15, }, { 156, 186, 72, 143, 143, 163, 179, 121, 116, 28, 231, 121, 2, 11, 235, 166, }, { 172, 10, 254, 255, 255, 98, 101, 122, 100, 148, 15, 122, 217, 182, 156, 158, }, { 188, 219, 45, 110, 110, 156, 150, 123, 213, 236, 87, 123, 144, 221, 177, 55, }, { 204, 169, 81, 31, 31, 35, 10, 124, 68, 71, 28, 124, 172, 15, 114, 238, }, { 220, 120, 130, 142, 142, 221, 249, 125, 245, 63, 68, 125, 229, 100, 95, 71, }, { 236, 200, 52, 254, 254, 28, 47, 126, 229, 183, 172, 126, 62, 217, 40, 127, }, { 252, 25, 231, 111, 111, 226, 220, 127, 84, 207, 244, 127, 119, 178, 5, 214, }, { 215, 250, 57, 32, 32, 27, 84, 128, 77, 234, 135, 128, 208, 126, 34, 16, }, { 199, 43, 234, 177, 177, 229, 167, 129, 252, 146, 223, 129, 153, 21, 15, 185, }, { 247, 155, 92, 193, 193, 36, 113, 130, 236, 26, 55, 130, 66, 168, 120, 129, }, { 231, 74, 143, 80, 80, 218, 130, 131, 93, 98, 111, 131, 11, 195, 85, 40, }, { 151, 56, 243, 33, 33, 101, 30, 132, 204, 201, 36, 132, 55, 17, 150, 241, }, { 135, 233, 32, 176, 176, 155, 237, 133, 125, 177, 124, 133, 126, 122, 187, 88, }, { 183, 89, 150, 192, 192, 90, 59, 134, 109, 57, 148, 134, 165, 199, 204, 96, }, { 167, 136, 69, 81, 81, 164, 200, 135, 220, 65, 204, 135, 236, 172, 225, 201, }, { 87, 189, 110, 34, 34, 231, 192, 136, 140, 172, 2, 136, 221, 160, 137, 17, }, { 71, 108, 189, 179, 179, 25, 51, 137, 61, 212, 90, 137, 148, 203, 164, 184, }, { 119, 220, 11, 195, 195, 216, 229, 138, 45, 92, 178, 138, 79, 118, 211, 128, }, { 103, 13, 216, 82, 82, 38, 22, 139, 156, 36, 234, 139, 6, 29, 254, 41, }, { 23, 127, 164, 35, 35, 153, 138, 140, 13, 143, 161, 140, 58, 207, 61, 240, }, { 7, 174, 119, 178, 178, 103, 121, 141, 188, 247, 249, 141, 115, 164, 16, 89, }, { 55, 30, 193, 194, 194, 166, 175, 142, 172, 127, 17, 142, 168, 25, 103, 97, }, { 39, 207, 18, 83, 83, 88, 92, 143, 29, 7, 73, 143, 225, 114, 74, 200, }, { 20, 116, 151, 36, 36, 32, 191, 144, 12, 102, 78, 144, 202, 1, 183, 18, }, { 4, 165, 68, 181, 181, 222, 76, 145, 189, 30, 22, 145, 131, 106, 154, 187, }, { 52, 21, 242, 197, 197, 31, 154, 146, 173, 150, 254, 146, 88, 215, 237, 131, }, { 36, 196, 33, 84, 84, 225, 105, 147, 28, 238, 166, 147, 17, 188, 192, 42, }, { 84, 182, 93, 37, 37, 94, 245, 148, 141, 69, 237, 148, 45, 110, 3, 243, }, { 68, 103, 142, 180, 180, 160, 6, 149, 60, 61, 181, 149, 100, 5, 46, 90, }, { 116, 215, 56, 196, 196, 97, 208, 150, 44, 181, 93, 150, 191, 184, 89, 98, }, { 100, 6, 235, 85, 85, 159, 35, 151, 157, 205, 5, 151, 246, 211, 116, 203, }, { 148, 51, 192, 38, 38, 220, 43, 152, 205, 32, 203, 152, 199, 223, 28, 19, }, { 132, 226, 19, 183, 183, 34, 216, 153, 124, 88, 147, 153, 142, 180, 49, 186, }, { 180, 82, 165, 199, 199, 227, 14, 154, 108, 208, 123, 154, 85, 9, 70, 130, }, { 164, 131, 118, 86, 86, 29, 253, 155, 221, 168, 35, 155, 28, 98, 107, 43, }, { 212, 241, 10, 39, 39, 162, 97, 156, 76, 3, 104, 156, 32, 176, 168, 242, }, { 196, 32, 217, 182, 182, 92, 146, 157, 253, 123, 48, 157, 105, 219, 133, 91, }, { 244, 144, 111, 198, 198, 157, 68, 158, 237, 243, 216, 158, 178, 102, 242, 99, }, { 228, 65, 188, 87, 87, 99, 183, 159, 92, 139, 128, 159, 251, 13, 223, 202, }, { 146, 37, 166, 40, 40, 109, 65, 160, 207, 49, 214, 160, 228, 128, 203, 20, }, { 130, 244, 117, 185, 185, 147, 178, 161, 126, 73, 142, 161, 173, 235, 230, 189, }, { 178, 68, 195, 201, 201, 82, 100, 162, 110, 193, 102, 162, 118, 86, 145, 133, }, { 162, 149, 16, 88, 88, 172, 151, 163, 223, 185, 62, 163, 63, 61, 188, 44, }, { 210, 231, 108, 41, 41, 19, 11, 164, 78, 18, 117, 164, 3, 239, 127, 245, }, { 194, 54, 191, 184, 184, 237, 248, 165, 255, 106, 45, 165, 74, 132, 82, 92, }, { 242, 134, 9, 200, 200, 44, 46, 166, 239, 226, 197, 166, 145, 57, 37, 100, }, { 226, 87, 218, 89, 89, 210, 221, 167, 94, 154, 157, 167, 216, 82, 8, 205, }, { 18, 98, 241, 42, 42, 145, 213, 168, 14, 119, 83, 168, 233, 94, 96, 21, }, { 2, 179, 34, 187, 187, 111, 38, 169, 191, 15, 11, 169, 160, 53, 77, 188, }, { 50, 3, 148, 203, 203, 174, 240, 170, 175, 135, 227, 170, 123, 136, 58, 132, }, { 34, 210, 71, 90, 90, 80, 3, 171, 30, 255, 187, 171, 50, 227, 23, 45, }, { 82, 160, 59, 43, 43, 239, 159, 172, 143, 84, 240, 172, 14, 49, 212, 244, }, { 66, 113, 232, 186, 186, 17, 108, 173, 62, 44, 168, 173, 71, 90, 249, 93, }, { 114, 193, 94, 202, 202, 208, 186, 174, 46, 164, 64, 174, 156, 231, 142, 101, }, { 98, 16, 141, 91, 91, 46, 73, 175, 159, 220, 24, 175, 213, 140, 163, 204, }, { 81, 171, 8, 44, 44, 86, 170, 176, 142, 189, 31, 176, 254, 255, 94, 22, }, { 65, 122, 219, 189, 189, 168, 89, 177, 63, 197, 71, 177, 183, 148, 115, 191, }, { 113, 202, 109, 205, 205, 105, 143, 178, 47, 77, 175, 178, 108, 41, 4, 135, }, { 97, 27, 190, 92, 92, 151, 124, 179, 158, 53, 247, 179, 37, 66, 41, 46, }, { 17, 105, 194, 45, 45, 40, 224, 180, 15, 158, 188, 180, 25, 144, 234, 247, }, { 1, 184, 17, 188, 188, 214, 19, 181, 190, 230, 228, 181, 80, 251, 199, 94, }, { 49, 8, 167, 204, 204, 23, 197, 182, 174, 110, 12, 182, 139, 70, 176, 102, }, { 33, 217, 116, 93, 93, 233, 54, 183, 31, 22, 84, 183, 194, 45, 157, 207, }, { 209, 236, 95, 46, 46, 170, 62, 184, 79, 251, 154, 184, 243, 33, 245, 23, }, { 193, 61, 140, 191, 191, 84, 205, 185, 254, 131, 194, 185, 186, 74, 216, 190, }, { 241, 141, 58, 207, 207, 149, 27, 186, 238, 11, 42, 186, 97, 247, 175, 134, }, { 225, 92, 233, 94, 94, 107, 232, 187, 95, 115, 114, 187, 40, 156, 130, 47, }, { 145, 46, 149, 47, 47, 212, 116, 188, 206, 216, 57, 188, 20, 78, 65, 246, }, { 129, 255, 70, 190, 190, 42, 135, 189, 127, 160, 97, 189, 93, 37, 108, 95, }, { 177, 79, 240, 206, 206, 235, 81, 190, 111, 40, 137, 190, 134, 152, 27, 103, }, { 161, 158, 35, 95, 95, 21, 162, 191, 222, 80, 209, 191, 207, 243, 54, 206, }, { 93, 135, 196, 48, 48, 247, 126, 192, 138, 159, 37, 192, 184, 65, 51, 24, }, { 77, 86, 23, 161, 161, 9, 141, 193, 59, 231, 125, 193, 241, 42, 30, 177, }, { 125, 230, 161, 209, 209, 200, 91, 194, 43, 111, 149, 194, 42, 151, 105, 137, }, { 109, 55, 114, 64, 64, 54, 168, 195, 154, 23, 205, 195, 99, 252, 68, 32, }, { 29, 69, 14, 49, 49, 137, 52, 196, 11, 188, 134, 196, 95, 46, 135, 249, }, { 13, 148, 221, 160, 160, 119, 199, 197, 186, 196, 222, 197, 22, 69, 170, 80, }, { 61, 36, 107, 208, 208, 182, 17, 198, 170, 76, 54, 198, 205, 248, 221, 104, }, { 45, 245, 184, 65, 65, 72, 226, 199, 27, 52, 110, 199, 132, 147, 240, 193, }, { 221, 192, 147, 50, 50, 11, 234, 200, 75, 217, 160, 200, 181, 159, 152, 25, }, { 205, 17, 64, 163, 163, 245, 25, 201, 250, 161, 248, 201, 252, 244, 181, 176, }, { 253, 161, 246, 211, 211, 52, 207, 202, 234, 41, 16, 202, 39, 73, 194, 136, }, { 237, 112, 37, 66, 66, 202, 60, 203, 91, 81, 72, 203, 110, 34, 239, 33, }, { 157, 2, 89, 51, 51, 117, 160, 204, 202, 250, 3, 204, 82, 240, 44, 248, }, { 141, 211, 138, 162, 162, 139, 83, 205, 123, 130, 91, 205, 27, 155, 1, 81, }, { 189, 99, 60, 210, 210, 74, 133, 206, 107, 10, 179, 206, 192, 38, 118, 105, }, { 173, 178, 239, 67, 67, 180, 118, 207, 218, 114, 235, 207, 137, 77, 91, 192, }, { 158, 9, 106, 52, 52, 204, 149, 208, 203, 19, 236, 208, 162, 62, 166, 26, }, { 142, 216, 185, 165, 165, 50, 102, 209, 122, 107, 180, 209, 235, 85, 139, 179, }, { 190, 104, 15, 213, 213, 243, 176, 210, 106, 227, 92, 210, 48, 232, 252, 139, }, { 174, 185, 220, 68, 68, 13, 67, 211, 219, 155, 4, 211, 121, 131, 209, 34, }, { 222, 203, 160, 53, 53, 178, 223, 212, 74, 48, 79, 212, 69, 81, 18, 251, }, { 206, 26, 115, 164, 164, 76, 44, 213, 251, 72, 23, 213, 12, 58, 63, 82, }, { 254, 170, 197, 212, 212, 141, 250, 214, 235, 192, 255, 214, 215, 135, 72, 106, }, { 238, 123, 22, 69, 69, 115, 9, 215, 90, 184, 167, 215, 158, 236, 101, 195, }, { 30, 78, 61, 54, 54, 48, 1, 216, 10, 85, 105, 216, 175, 224, 13, 27, }, { 14, 159, 238, 167, 167, 206, 242, 217, 187, 45, 49, 217, 230, 139, 32, 178, }, { 62, 47, 88, 215, 215, 15, 36, 218, 171, 165, 217, 218, 61, 54, 87, 138, }, { 46, 254, 139, 70, 70, 241, 215, 219, 26, 221, 129, 219, 116, 93, 122, 35, }, { 94, 140, 247, 55, 55, 78, 75, 220, 139, 118, 202, 220, 72, 143, 185, 250, }, { 78, 93, 36, 166, 166, 176, 184, 221, 58, 14, 146, 221, 1, 228, 148, 83, }, { 126, 237, 146, 214, 214, 113, 110, 222, 42, 134, 122, 222, 218, 89, 227, 107, }, { 110, 60, 65, 71, 71, 143, 157, 223, 155, 254, 34, 223, 147, 50, 206, 194, }, { 24, 88, 91, 56, 56, 129, 107, 224, 8, 68, 116, 224, 140, 191, 218, 28, }, { 8, 137, 136, 169, 169, 127, 152, 225, 185, 60, 44, 225, 197, 212, 247, 181, }, { 56, 57, 62, 217, 217, 190, 78, 226, 169, 180, 196, 226, 30, 105, 128, 141, }, { 40, 232, 237, 72, 72, 64, 189, 227, 24, 204, 156, 227, 87, 2, 173, 36, }, { 88, 154, 145, 57, 57, 255, 33, 228, 137, 103, 215, 228, 107, 208, 110, 253, }, { 72, 75, 66, 168, 168, 1, 210, 229, 56, 31, 143, 229, 34, 187, 67, 84, }, { 120, 251, 244, 216, 216, 192, 4, 230, 40, 151, 103, 230, 249, 6, 52, 108, }, { 104, 42, 39, 73, 73, 62, 247, 231, 153, 239, 63, 231, 176, 109, 25, 197, }, { 152, 31, 12, 58, 58, 125, 255, 232, 201, 2, 241, 232, 129, 97, 113, 29, }, { 136, 206, 223, 171, 171, 131, 12, 233, 120, 122, 169, 233, 200, 10, 92, 180, }, { 184, 126, 105, 219, 219, 66, 218, 234, 104, 242, 65, 234, 19, 183, 43, 140, }, { 168, 175, 186, 74, 74, 188, 41, 235, 217, 138, 25, 235, 90, 220, 6, 37, }, { 216, 221, 198, 59, 59, 3, 181, 236, 72, 33, 82, 236, 102, 14, 197, 252, }, { 200, 12, 21, 170, 170, 253, 70, 237, 249, 89, 10, 237, 47, 101, 232, 85, }, { 248, 188, 163, 218, 218, 60, 144, 238, 233, 209, 226, 238, 244, 216, 159, 109, }, { 232, 109, 112, 75, 75, 194, 99, 239, 88, 169, 186, 239, 189, 179, 178, 196, }, { 219, 214, 245, 60, 60, 186, 128, 240, 73, 200, 189, 240, 150, 192, 79, 30, }, { 203, 7, 38, 173, 173, 68, 115, 241, 248, 176, 229, 241, 223, 171, 98, 183, }, { 251, 183, 144, 221, 221, 133, 165, 242, 232, 56, 13, 242, 4, 22, 21, 143, }, { 235, 102, 67, 76, 76, 123, 86, 243, 89, 64, 85, 243, 77, 125, 56, 38, }, { 155, 20, 63, 61, 61, 196, 202, 244, 200, 235, 30, 244, 113, 175, 251, 255, }, { 139, 197, 236, 172, 172, 58, 57, 245, 121, 147, 70, 245, 56, 196, 214, 86, }, { 187, 117, 90, 220, 220, 251, 239, 246, 105, 27, 174, 246, 227, 121, 161, 110, }, { 171, 164, 137, 77, 77, 5, 28, 247, 216, 99, 246, 247, 170, 18, 140, 199, }, { 91, 145, 162, 62, 62, 70, 20, 248, 136, 142, 56, 248, 155, 30, 228, 31, }, { 75, 64, 113, 175, 175, 184, 231, 249, 57, 246, 96, 249, 210, 117, 201, 182, }, { 123, 240, 199, 223, 223, 121, 49, 250, 41, 126, 136, 250, 9, 200, 190, 142, }, { 107, 33, 20, 78, 78, 135, 194, 251, 152, 6, 208, 251, 64, 163, 147, 39, }, { 27, 83, 104, 63, 63, 56, 94, 252, 9, 173, 155, 252, 124, 113, 80, 254, }, { 11, 130, 187, 174, 174, 198, 173, 253, 184, 213, 195, 253, 53, 26, 125, 87, }, { 59, 50, 13, 222, 222, 7, 123, 254, 168, 93, 43, 254, 238, 167, 10, 111, }, { 43, 227, 222, 79, 79, 249, 136, 255, 25, 37, 115, 255, 167, 204, 39, 198, }, }, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, { 194, 141, 49, 100, 236, 235, 15, 42, 55, 153, 144, 196, 246, 48, 184, 246, }, { 71, 217, 98, 200, 27, 21, 30, 84, 110, 241, 227, 75, 47, 96, 179, 47, }, { 133, 84, 83, 172, 247, 254, 17, 126, 89, 104, 115, 143, 217, 80, 11, 217, }, { 142, 113, 196, 83, 54, 42, 60, 168, 220, 33, 5, 150, 94, 192, 165, 94, }, { 76, 252, 245, 55, 218, 193, 51, 130, 235, 184, 149, 82, 168, 240, 29, 168, }, { 201, 168, 166, 155, 45, 63, 34, 252, 178, 208, 230, 221, 113, 160, 22, 113, }, { 11, 37, 151, 255, 193, 212, 45, 214, 133, 73, 118, 25, 135, 144, 174, 135, }, { 223, 226, 75, 166, 108, 84, 120, 147, 123, 66, 10, 239, 188, 67, 137, 188, }, { 29, 111, 122, 194, 128, 191, 119, 185, 76, 219, 154, 43, 74, 115, 49, 74, }, { 152, 59, 41, 110, 119, 65, 102, 199, 21, 179, 233, 164, 147, 35, 58, 147, }, { 90, 182, 24, 10, 155, 170, 105, 237, 34, 42, 121, 96, 101, 19, 130, 101, }, { 81, 147, 143, 245, 90, 126, 68, 59, 167, 99, 15, 121, 226, 131, 44, 226, }, { 147, 30, 190, 145, 182, 149, 75, 17, 144, 250, 159, 189, 20, 179, 148, 20, }, { 22, 74, 237, 61, 65, 107, 90, 111, 201, 146, 236, 50, 205, 227, 159, 205, }, { 212, 199, 220, 89, 173, 128, 85, 69, 254, 11, 124, 246, 59, 211, 39, 59, }, { 125, 7, 150, 143, 216, 168, 240, 229, 246, 132, 20, 29, 187, 134, 209, 187, }, { 191, 138, 167, 235, 52, 67, 255, 207, 193, 29, 132, 217, 77, 182, 105, 77, }, { 58, 222, 244, 71, 195, 189, 238, 177, 152, 117, 247, 86, 148, 230, 98, 148, }, { 248, 83, 197, 35, 47, 86, 225, 155, 175, 236, 103, 146, 98, 214, 218, 98, }, { 243, 118, 82, 220, 238, 130, 204, 77, 42, 165, 17, 139, 229, 70, 116, 229, }, { 49, 251, 99, 184, 2, 105, 195, 103, 29, 60, 129, 79, 19, 118, 204, 19, }, { 180, 175, 48, 20, 245, 151, 210, 25, 68, 84, 242, 192, 202, 38, 199, 202, }, { 118, 34, 1, 112, 25, 124, 221, 51, 115, 205, 98, 4, 60, 22, 127, 60, }, { 162, 229, 221, 41, 180, 252, 136, 118, 141, 198, 30, 242, 7, 197, 88, 7, }, { 96, 104, 236, 77, 88, 23, 135, 92, 186, 95, 142, 54, 241, 245, 224, 241, }, { 229, 60, 191, 225, 175, 233, 150, 34, 227, 55, 253, 185, 40, 165, 235, 40, }, { 39, 177, 142, 133, 67, 2, 153, 8, 212, 174, 109, 125, 222, 149, 83, 222, }, { 44, 148, 25, 122, 130, 214, 180, 222, 81, 231, 27, 100, 89, 5, 253, 89, }, { 238, 25, 40, 30, 110, 61, 187, 244, 102, 126, 139, 160, 175, 53, 69, 175, }, { 107, 77, 123, 178, 153, 195, 170, 138, 63, 22, 248, 47, 118, 101, 78, 118, }, { 169, 192, 74, 214, 117, 40, 165, 160, 8, 143, 104, 235, 128, 85, 246, 128, }, { 250, 14, 239, 221, 115, 147, 35, 9, 47, 203, 40, 58, 181, 207, 97, 181, }, { 56, 131, 222, 185, 159, 120, 44, 35, 24, 82, 184, 254, 67, 255, 217, 67, }, { 189, 215, 141, 21, 104, 134, 61, 93, 65, 58, 203, 113, 154, 175, 210, 154, }, { 127, 90, 188, 113, 132, 109, 50, 119, 118, 163, 91, 181, 108, 159, 106, 108, }, { 116, 127, 43, 142, 69, 185, 31, 161, 243, 234, 45, 172, 235, 15, 196, 235, }, { 182, 242, 26, 234, 169, 82, 16, 139, 196, 115, 189, 104, 29, 63, 124, 29, }, { 51, 166, 73, 70, 94, 172, 1, 245, 157, 27, 206, 231, 196, 111, 119, 196, }, { 241, 43, 120, 34, 178, 71, 14, 223, 170, 130, 94, 35, 50, 95, 207, 50, }, { 37, 236, 164, 123, 31, 199, 91, 154, 84, 137, 34, 213, 9, 140, 232, 9, }, { 231, 97, 149, 31, 243, 44, 84, 176, 99, 16, 178, 17, 255, 188, 80, 255, }, { 98, 53, 198, 179, 4, 210, 69, 206, 58, 120, 193, 158, 38, 236, 91, 38, }, { 160, 184, 247, 215, 232, 57, 74, 228, 13, 225, 81, 90, 208, 220, 227, 208, }, { 171, 157, 96, 40, 41, 237, 103, 50, 136, 168, 39, 67, 87, 76, 77, 87, }, { 105, 16, 81, 76, 197, 6, 104, 24, 191, 49, 183, 135, 161, 124, 245, 161, }, { 236, 68, 2, 224, 50, 248, 121, 102, 230, 89, 196, 8, 120, 44, 254, 120, }, { 46, 201, 51, 132, 222, 19, 118, 76, 209, 192, 84, 204, 142, 28, 70, 142, }, { 135, 9, 121, 82, 171, 59, 211, 236, 217, 79, 60, 39, 14, 73, 176, 14, }, { 69, 132, 72, 54, 71, 208, 220, 198, 238, 214, 172, 227, 248, 121, 8, 248, }, { 192, 208, 27, 154, 176, 46, 205, 184, 183, 190, 223, 108, 33, 41, 3, 33, }, { 2, 93, 42, 254, 92, 197, 194, 146, 128, 39, 79, 168, 215, 25, 187, 215, }, { 9, 120, 189, 1, 157, 17, 239, 68, 5, 110, 57, 177, 80, 137, 21, 80, }, { 203, 245, 140, 101, 113, 250, 224, 110, 50, 247, 169, 117, 166, 185, 173, 166, }, { 78, 161, 223, 201, 134, 4, 241, 16, 107, 159, 218, 250, 127, 233, 166, 127, }, { 140, 44, 238, 173, 106, 239, 254, 58, 92, 6, 74, 62, 137, 217, 30, 137, }, { 88, 235, 50, 244, 199, 111, 171, 127, 162, 13, 54, 200, 178, 10, 57, 178, }, { 154, 102, 3, 144, 43, 132, 164, 85, 149, 148, 166, 12, 68, 58, 129, 68, }, { 31, 50, 80, 60, 220, 122, 181, 43, 204, 252, 213, 131, 157, 106, 138, 157, }, { 221, 191, 97, 88, 48, 145, 186, 1, 251, 101, 69, 71, 107, 90, 50, 107, }, { 214, 154, 246, 167, 241, 69, 151, 215, 126, 44, 51, 94, 236, 202, 156, 236, }, { 20, 23, 199, 195, 29, 174, 152, 253, 73, 181, 163, 154, 26, 250, 36, 26, }, { 145, 67, 148, 111, 234, 80, 137, 131, 16, 221, 208, 21, 195, 170, 47, 195, }, { 83, 206, 165, 11, 6, 187, 134, 169, 39, 68, 64, 209, 53, 154, 151, 53, }, { 55, 28, 29, 121, 230, 229, 70, 18, 94, 85, 80, 116, 169, 93, 194, 169, }, { 245, 145, 44, 29, 10, 14, 73, 56, 105, 204, 192, 176, 95, 109, 122, 95, }, { 112, 197, 127, 177, 253, 240, 88, 70, 48, 164, 179, 63, 134, 61, 113, 134, }, { 178, 72, 78, 213, 17, 27, 87, 108, 7, 61, 35, 251, 112, 13, 201, 112, }, { 185, 109, 217, 42, 208, 207, 122, 186, 130, 116, 85, 226, 247, 157, 103, 247, }, { 123, 224, 232, 78, 60, 36, 117, 144, 181, 237, 197, 38, 1, 173, 223, 1, }, { 254, 180, 187, 226, 203, 218, 100, 238, 236, 133, 182, 169, 216, 253, 212, 216, }, { 60, 57, 138, 134, 39, 49, 107, 196, 219, 28, 38, 109, 46, 205, 108, 46, }, { 232, 254, 86, 223, 138, 177, 62, 129, 37, 23, 90, 155, 21, 30, 75, 21, }, { 42, 115, 103, 187, 102, 90, 49, 171, 18, 142, 202, 95, 227, 46, 243, 227, }, { 175, 39, 52, 23, 145, 164, 32, 213, 75, 230, 185, 208, 58, 126, 248, 58, }, { 109, 170, 5, 115, 125, 79, 47, 255, 124, 127, 41, 20, 204, 78, 64, 204, }, { 102, 143, 146, 140, 188, 155, 2, 41, 249, 54, 95, 13, 75, 222, 238, 75, }, { 164, 2, 163, 232, 80, 112, 13, 3, 206, 175, 207, 201, 189, 238, 86, 189, }, { 33, 86, 240, 68, 167, 142, 28, 125, 151, 199, 188, 70, 100, 190, 93, 100, }, { 227, 219, 193, 32, 75, 101, 19, 87, 160, 94, 44, 130, 146, 142, 229, 146, }, { 74, 27, 139, 246, 62, 77, 182, 247, 168, 209, 68, 105, 18, 219, 19, 18, }, { 136, 150, 186, 146, 210, 166, 185, 221, 159, 72, 212, 173, 228, 235, 171, 228, }, { 13, 194, 233, 62, 37, 88, 168, 163, 198, 32, 167, 34, 61, 187, 160, 61, }, { 207, 79, 216, 90, 201, 179, 167, 137, 241, 185, 55, 230, 203, 139, 24, 203, }, { 196, 106, 79, 165, 8, 103, 138, 95, 116, 240, 65, 255, 76, 27, 182, 76, }, { 6, 231, 126, 193, 228, 140, 133, 117, 67, 105, 209, 59, 186, 43, 14, 186, }, { 131, 179, 45, 109, 19, 114, 148, 11, 26, 1, 162, 180, 99, 123, 5, 99, }, { 65, 62, 28, 9, 255, 153, 155, 33, 45, 152, 50, 112, 149, 75, 189, 149, }, { 149, 249, 192, 80, 82, 25, 206, 100, 211, 147, 78, 134, 174, 152, 154, 174, }, { 87, 116, 241, 52, 190, 242, 193, 78, 228, 10, 222, 66, 88, 168, 34, 88, }, { 210, 32, 162, 152, 73, 12, 208, 48, 189, 98, 173, 205, 129, 248, 41, 129, }, { 16, 173, 147, 252, 165, 231, 223, 26, 138, 251, 61, 9, 119, 200, 145, 119, }, { 27, 136, 4, 3, 100, 51, 242, 204, 15, 178, 75, 16, 240, 88, 63, 240, }, { 217, 5, 53, 103, 136, 216, 253, 230, 56, 43, 219, 212, 6, 104, 135, 6, }, { 92, 81, 102, 203, 127, 38, 236, 152, 97, 67, 168, 91, 223, 56, 140, 223, }, { 158, 220, 87, 175, 147, 205, 227, 178, 86, 218, 56, 159, 41, 8, 52, 41, }, { 205, 18, 242, 164, 149, 118, 101, 27, 113, 158, 120, 78, 28, 146, 163, 28, }, { 15, 159, 195, 192, 121, 157, 106, 49, 70, 7, 232, 138, 234, 162, 27, 234, }, { 138, 203, 144, 108, 142, 99, 123, 79, 31, 111, 155, 5, 51, 242, 16, 51, }, { 72, 70, 161, 8, 98, 136, 116, 101, 40, 246, 11, 193, 197, 194, 168, 197, }, { 67, 99, 54, 247, 163, 92, 89, 179, 173, 191, 125, 216, 66, 82, 6, 66, }, { 129, 238, 7, 147, 79, 183, 86, 153, 154, 38, 237, 28, 180, 98, 190, 180, }, { 4, 186, 84, 63, 184, 73, 71, 231, 195, 78, 158, 147, 109, 50, 181, 109, }, { 198, 55, 101, 91, 84, 162, 72, 205, 244, 215, 14, 87, 155, 2, 13, 155, }, { 18, 240, 185, 2, 249, 34, 29, 136, 10, 220, 114, 161, 160, 209, 42, 160, }, { 208, 125, 136, 102, 21, 201, 18, 162, 61, 69, 226, 101, 86, 225, 146, 86, }, { 85, 41, 219, 202, 226, 55, 3, 220, 100, 45, 145, 234, 143, 177, 153, 143, }, { 151, 164, 234, 174, 14, 220, 12, 246, 83, 180, 1, 46, 121, 129, 33, 121, }, { 156, 129, 125, 81, 207, 8, 33, 32, 214, 253, 119, 55, 254, 17, 143, 254, }, { 94, 12, 76, 53, 35, 227, 46, 10, 225, 100, 231, 243, 8, 33, 55, 8, }, { 219, 88, 31, 153, 212, 29, 63, 116, 184, 12, 148, 124, 209, 113, 60, 209, }, { 25, 213, 46, 253, 56, 246, 48, 94, 143, 149, 4, 184, 39, 65, 132, 39, }, { 176, 21, 100, 43, 77, 222, 149, 254, 135, 26, 108, 83, 167, 20, 114, 167, }, { 114, 152, 85, 79, 161, 53, 154, 212, 176, 131, 252, 151, 81, 36, 202, 81, }, { 247, 204, 6, 227, 86, 203, 139, 170, 233, 235, 143, 24, 136, 116, 193, 136, }, { 53, 65, 55, 135, 186, 32, 132, 128, 222, 114, 31, 220, 126, 68, 121, 126, }, { 62, 100, 160, 120, 123, 244, 169, 86, 91, 59, 105, 197, 249, 212, 215, 249, }, { 252, 233, 145, 28, 151, 31, 166, 124, 108, 162, 249, 1, 15, 228, 111, 15, }, { 121, 189, 194, 176, 96, 225, 183, 2, 53, 202, 138, 142, 214, 180, 100, 214, }, { 187, 48, 243, 212, 140, 10, 184, 40, 2, 83, 26, 74, 32, 132, 220, 32, }, { 111, 247, 47, 141, 33, 138, 237, 109, 252, 88, 102, 188, 27, 87, 251, 27, }, { 173, 122, 30, 233, 205, 97, 226, 71, 203, 193, 246, 120, 237, 103, 67, 237, }, { 40, 46, 77, 69, 58, 159, 243, 57, 146, 169, 133, 247, 52, 55, 72, 52, }, { 234, 163, 124, 33, 214, 116, 252, 19, 165, 48, 21, 51, 194, 7, 240, 194, }, { 225, 134, 235, 222, 23, 160, 209, 197, 32, 121, 99, 42, 69, 151, 94, 69, }, { 35, 11, 218, 186, 251, 75, 222, 239, 23, 224, 243, 238, 179, 167, 230, 179, }, { 166, 95, 137, 22, 12, 181, 207, 145, 78, 136, 128, 97, 106, 247, 237, 106, }, { 100, 210, 184, 114, 224, 94, 192, 187, 121, 17, 16, 165, 156, 199, 85, 156, }, { 110, 56, 58, 242, 15, 9, 140, 36, 188, 170, 160, 232, 145, 186, 71, 145, }, { 172, 181, 11, 150, 227, 226, 131, 14, 139, 51, 48, 44, 103, 138, 255, 103, }, { 41, 225, 88, 58, 20, 28, 146, 112, 210, 91, 67, 163, 190, 218, 244, 190, }, { 235, 108, 105, 94, 248, 247, 157, 90, 229, 194, 211, 103, 72, 234, 76, 72, }, { 224, 73, 254, 161, 57, 35, 176, 140, 96, 139, 165, 126, 207, 122, 226, 207, }, { 34, 196, 207, 197, 213, 200, 191, 166, 87, 18, 53, 186, 57, 74, 90, 57, }, { 167, 144, 156, 105, 34, 54, 174, 216, 14, 122, 70, 53, 224, 26, 81, 224, }, { 101, 29, 173, 13, 206, 221, 161, 242, 57, 227, 214, 241, 22, 42, 233, 22, }, { 177, 218, 113, 84, 99, 93, 244, 183, 199, 232, 170, 7, 45, 249, 206, 45, }, { 115, 87, 64, 48, 143, 182, 251, 157, 240, 113, 58, 195, 219, 201, 118, 219, }, { 246, 3, 19, 156, 120, 72, 234, 227, 169, 25, 73, 76, 2, 153, 125, 2, }, { 52, 142, 34, 248, 148, 163, 229, 201, 158, 128, 217, 136, 244, 169, 197, 244, }, { 63, 171, 181, 7, 85, 119, 200, 31, 27, 201, 175, 145, 115, 57, 107, 115, }, { 253, 38, 132, 99, 185, 156, 199, 53, 44, 80, 63, 85, 133, 9, 211, 133, }, { 120, 114, 215, 207, 78, 98, 214, 75, 117, 56, 76, 218, 92, 89, 216, 92, }, { 186, 255, 230, 171, 162, 137, 217, 97, 66, 161, 220, 30, 170, 105, 96, 170, }, { 19, 63, 172, 125, 215, 161, 124, 193, 74, 46, 180, 245, 42, 60, 150, 42, }, { 209, 178, 157, 25, 59, 74, 115, 235, 125, 183, 36, 49, 220, 12, 46, 220, }, { 84, 230, 206, 181, 204, 180, 98, 149, 36, 223, 87, 190, 5, 92, 37, 5, }, { 150, 107, 255, 209, 32, 95, 109, 191, 19, 70, 199, 122, 243, 108, 157, 243, }, { 157, 78, 104, 46, 225, 139, 64, 105, 150, 15, 177, 99, 116, 252, 51, 116, }, { 95, 195, 89, 74, 13, 96, 79, 67, 161, 150, 33, 167, 130, 204, 139, 130, }, { 218, 151, 10, 230, 250, 158, 94, 61, 248, 254, 82, 40, 91, 156, 128, 91, }, { 24, 26, 59, 130, 22, 117, 81, 23, 207, 103, 194, 236, 173, 172, 56, 173, }, { 204, 221, 231, 219, 187, 245, 4, 82, 49, 108, 190, 26, 150, 127, 31, 150, }, { 14, 80, 214, 191, 87, 30, 11, 120, 6, 245, 46, 222, 96, 79, 167, 96, }, { 139, 4, 133, 19, 160, 224, 26, 6, 95, 157, 93, 81, 185, 31, 172, 185, }, { 73, 137, 180, 119, 76, 11, 21, 44, 104, 4, 205, 149, 79, 47, 20, 79, }, { 66, 172, 35, 136, 141, 223, 56, 250, 237, 77, 187, 140, 200, 191, 186, 200, }, { 128, 33, 18, 236, 97, 52, 55, 208, 218, 212, 43, 72, 62, 143, 2, 62, }, { 5, 117, 65, 64, 150, 202, 38, 174, 131, 188, 88, 199, 231, 223, 9, 231, }, { 199, 248, 112, 36, 122, 33, 41, 132, 180, 37, 200, 3, 17, 239, 177, 17, }, { 148, 54, 213, 47, 124, 154, 175, 45, 147, 97, 136, 210, 36, 117, 38, 36, }, { 86, 187, 228, 75, 144, 113, 160, 7, 164, 248, 24, 22, 210, 69, 158, 210, }, { 211, 239, 183, 231, 103, 143, 177, 121, 253, 144, 107, 153, 11, 21, 149, 11, }, { 17, 98, 134, 131, 139, 100, 190, 83, 202, 9, 251, 93, 253, 37, 45, 253, }, { 26, 71, 17, 124, 74, 176, 147, 133, 79, 64, 141, 68, 122, 181, 131, 122, }, { 216, 202, 32, 24, 166, 91, 156, 175, 120, 217, 29, 128, 140, 133, 59, 140, }, { 93, 158, 115, 180, 81, 165, 141, 209, 33, 177, 110, 15, 85, 213, 48, 85, }, { 159, 19, 66, 208, 189, 78, 130, 251, 22, 40, 254, 203, 163, 229, 136, 163, }, { 75, 212, 158, 137, 16, 206, 215, 190, 232, 35, 130, 61, 152, 54, 175, 152, }, { 137, 89, 175, 237, 252, 37, 216, 148, 223, 186, 18, 249, 110, 6, 23, 110, }, { 12, 13, 252, 65, 11, 219, 201, 234, 134, 210, 97, 118, 183, 86, 28, 183, }, { 206, 128, 205, 37, 231, 48, 198, 192, 177, 75, 241, 178, 65, 102, 164, 65, }, { 197, 165, 90, 218, 38, 228, 235, 22, 52, 2, 135, 171, 198, 246, 10, 198, }, { 7, 40, 107, 190, 202, 15, 228, 60, 3, 155, 23, 111, 48, 198, 178, 48, }, { 130, 124, 56, 18, 61, 241, 245, 66, 90, 243, 100, 224, 233, 150, 185, 233, }, { 64, 241, 9, 118, 209, 26, 250, 104, 109, 106, 244, 36, 31, 166, 1, 31, }, { 233, 49, 67, 160, 164, 50, 95, 200, 101, 229, 156, 207, 159, 243, 247, 159, }, { 43, 188, 114, 196, 72, 217, 80, 226, 82, 124, 12, 11, 105, 195, 79, 105, }, { 174, 232, 33, 104, 191, 39, 65, 156, 11, 20, 127, 132, 176, 147, 68, 176, }, { 108, 101, 16, 12, 83, 204, 78, 182, 60, 141, 239, 64, 70, 163, 252, 70, }, { 103, 64, 135, 243, 146, 24, 99, 96, 185, 196, 153, 89, 193, 51, 82, 193, }, { 165, 205, 182, 151, 126, 243, 108, 74, 142, 93, 9, 157, 55, 3, 234, 55, }, { 32, 153, 229, 59, 137, 13, 125, 52, 215, 53, 122, 18, 238, 83, 225, 238, }, { 226, 20, 212, 95, 101, 230, 114, 30, 224, 172, 234, 214, 24, 99, 89, 24, }, { 54, 211, 8, 6, 200, 102, 39, 91, 30, 167, 150, 32, 35, 176, 126, 35, }, { 244, 94, 57, 98, 36, 141, 40, 113, 41, 62, 6, 228, 213, 128, 198, 213, }, { 113, 10, 106, 206, 211, 115, 57, 15, 112, 86, 117, 107, 12, 208, 205, 12, }, { 179, 135, 91, 170, 63, 152, 54, 37, 71, 207, 229, 175, 250, 224, 117, 250, }, { 184, 162, 204, 85, 254, 76, 27, 243, 194, 134, 147, 182, 125, 112, 219, 125, }, { 122, 47, 253, 49, 18, 167, 20, 217, 245, 31, 3, 114, 139, 64, 99, 139, }, { 255, 123, 174, 157, 229, 89, 5, 167, 172, 119, 112, 253, 82, 16, 104, 82, }, { 61, 246, 159, 249, 9, 178, 10, 141, 155, 238, 224, 57, 164, 32, 208, 164, }, { 89, 36, 39, 139, 233, 236, 202, 54, 226, 255, 240, 156, 56, 231, 133, 56, }, { 155, 169, 22, 239, 5, 7, 197, 28, 213, 102, 96, 88, 206, 215, 61, 206, }, { 30, 253, 69, 67, 242, 249, 212, 98, 140, 14, 19, 215, 23, 135, 54, 23, }, { 220, 112, 116, 39, 30, 18, 219, 72, 187, 151, 131, 19, 225, 183, 142, 225, }, { 215, 85, 227, 216, 223, 198, 246, 158, 62, 222, 245, 10, 102, 39, 32, 102, }, { 21, 216, 210, 188, 51, 45, 249, 180, 9, 71, 101, 206, 144, 23, 152, 144, }, { 144, 140, 129, 16, 196, 211, 232, 202, 80, 47, 22, 65, 73, 71, 147, 73, }, { 82, 1, 176, 116, 40, 56, 231, 224, 103, 182, 134, 133, 191, 119, 43, 191, }, { 134, 198, 108, 45, 133, 184, 178, 165, 153, 189, 250, 115, 132, 164, 12, 132, }, { 68, 75, 93, 73, 105, 83, 189, 143, 174, 36, 106, 183, 114, 148, 180, 114, }, { 193, 31, 14, 229, 158, 173, 172, 241, 247, 76, 25, 56, 171, 196, 191, 171, }, { 3, 146, 63, 129, 114, 70, 163, 219, 192, 213, 137, 252, 93, 244, 7, 93, }, { 8, 183, 168, 126, 179, 146, 142, 13, 69, 156, 255, 229, 218, 100, 169, 218, }, { 202, 58, 153, 26, 95, 121, 129, 39, 114, 5, 111, 33, 44, 84, 17, 44, }, { 79, 110, 202, 182, 168, 135, 144, 89, 43, 109, 28, 174, 245, 4, 26, 245, }, { 141, 227, 251, 210, 68, 108, 159, 115, 28, 244, 140, 106, 3, 52, 162, 3, }, { 36, 35, 177, 4, 49, 68, 58, 211, 20, 123, 228, 129, 131, 97, 84, 131, }, { 230, 174, 128, 96, 221, 175, 53, 249, 35, 226, 116, 69, 117, 81, 236, 117, }, { 99, 250, 211, 204, 42, 81, 36, 135, 122, 138, 7, 202, 172, 1, 231, 172, }, { 161, 119, 226, 168, 198, 186, 43, 173, 77, 19, 151, 14, 90, 49, 95, 90, }, { 170, 82, 117, 87, 7, 110, 6, 123, 200, 90, 225, 23, 221, 161, 241, 221, }, { 104, 223, 68, 51, 235, 133, 9, 81, 255, 195, 113, 211, 43, 145, 73, 43, }, { 237, 139, 23, 159, 28, 123, 24, 47, 166, 171, 2, 92, 242, 193, 66, 242, }, { 47, 6, 38, 251, 240, 144, 23, 5, 145, 50, 146, 152, 4, 241, 250, 4, }, { 251, 193, 250, 162, 93, 16, 66, 64, 111, 57, 238, 110, 63, 34, 221, 63, }, { 57, 76, 203, 198, 177, 251, 77, 106, 88, 160, 126, 170, 201, 18, 101, 201, }, { 188, 24, 152, 106, 70, 5, 92, 20, 1, 200, 13, 37, 16, 66, 110, 16, }, { 126, 149, 169, 14, 170, 238, 83, 62, 54, 81, 157, 225, 230, 114, 214, 230, }, { 117, 176, 62, 241, 107, 58, 126, 232, 179, 24, 235, 248, 97, 226, 120, 97, }, { 183, 61, 15, 149, 135, 209, 113, 194, 132, 129, 123, 60, 151, 210, 192, 151, }, { 50, 105, 92, 57, 112, 47, 96, 188, 221, 233, 8, 179, 78, 130, 203, 78, }, { 240, 228, 109, 93, 156, 196, 111, 150, 234, 112, 152, 119, 184, 178, 115, 184, }, { 163, 42, 200, 86, 154, 127, 233, 63, 205, 52, 216, 166, 141, 40, 228, 141, }, { 97, 167, 249, 50, 118, 148, 230, 21, 250, 173, 72, 98, 123, 24, 92, 123, }, { 228, 243, 170, 158, 129, 106, 247, 107, 163, 197, 59, 237, 162, 72, 87, 162, }, { 38, 126, 155, 250, 109, 129, 248, 65, 148, 92, 171, 41, 84, 120, 239, 84, }, { 45, 91, 12, 5, 172, 85, 213, 151, 17, 21, 221, 48, 211, 232, 65, 211, }, { 239, 214, 61, 97, 64, 190, 218, 189, 38, 140, 77, 244, 37, 216, 249, 37, }, { 106, 130, 110, 205, 183, 64, 203, 195, 127, 228, 62, 123, 252, 136, 242, 252, }, { 168, 15, 95, 169, 91, 171, 196, 233, 72, 125, 174, 191, 10, 184, 74, 10, }, { 124, 200, 131, 240, 246, 43, 145, 172, 182, 118, 210, 73, 49, 107, 109, 49, }, { 190, 69, 178, 148, 26, 192, 158, 134, 129, 239, 66, 141, 199, 91, 213, 199, }, { 59, 17, 225, 56, 237, 62, 143, 248, 216, 135, 49, 2, 30, 11, 222, 30, }, { 249, 156, 208, 92, 1, 213, 128, 210, 239, 30, 161, 198, 232, 59, 102, 232, }, { 242, 185, 71, 163, 192, 1, 173, 4, 106, 87, 215, 223, 111, 171, 200, 111, }, { 48, 52, 118, 199, 44, 234, 162, 46, 93, 206, 71, 27, 153, 155, 112, 153, }, { 181, 96, 37, 107, 219, 20, 179, 80, 4, 166, 52, 148, 64, 203, 123, 64, }, { 119, 237, 20, 15, 55, 255, 188, 122, 51, 63, 164, 80, 182, 251, 195, 182, }, { 222, 45, 94, 217, 66, 215, 25, 218, 59, 176, 204, 187, 54, 174, 53, 54, }, { 28, 160, 111, 189, 174, 60, 22, 240, 12, 41, 92, 127, 192, 158, 141, 192, }, { 153, 244, 60, 17, 89, 194, 7, 142, 85, 65, 47, 240, 25, 206, 134, 25, }, { 91, 121, 13, 117, 181, 41, 8, 164, 98, 216, 191, 52, 239, 254, 62, 239, }, { 80, 92, 154, 138, 116, 253, 37, 114, 231, 145, 201, 45, 104, 110, 144, 104, }, { 146, 209, 171, 238, 152, 22, 42, 88, 208, 8, 89, 233, 158, 94, 40, 158, }, { 23, 133, 248, 66, 111, 232, 59, 38, 137, 96, 42, 102, 71, 14, 35, 71, }, { 213, 8, 201, 38, 131, 3, 52, 12, 190, 249, 186, 162, 177, 62, 155, 177, }, { 1, 207, 21, 127, 46, 131, 97, 73, 64, 242, 198, 84, 138, 237, 188, 138, }, { 195, 66, 36, 27, 194, 104, 110, 99, 119, 107, 86, 144, 124, 221, 4, 124, }, { 70, 22, 119, 183, 53, 150, 127, 29, 46, 3, 37, 31, 165, 141, 15, 165, }, { 132, 155, 70, 211, 217, 125, 112, 55, 25, 154, 181, 219, 83, 189, 183, 83, }, { 143, 190, 209, 44, 24, 169, 93, 225, 156, 211, 195, 194, 212, 45, 25, 212, }, { 77, 51, 224, 72, 244, 66, 82, 203, 171, 74, 83, 6, 34, 29, 161, 34, }, { 200, 103, 179, 228, 3, 188, 67, 181, 242, 34, 32, 137, 251, 77, 170, 251, }, { 10, 234, 130, 128, 239, 87, 76, 159, 197, 187, 176, 77, 13, 125, 18, 13, }, }, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, { 192, 180, 166, 255, 57, 47, 84, 108, 175, 235, 225, 212, 215, 99, 100, 191, }, { 67, 171, 143, 61, 114, 94, 168, 216, 157, 21, 1, 107, 109, 198, 200, 189, }, { 131, 31, 41, 194, 75, 113, 252, 180, 50, 254, 224, 191, 186, 165, 172, 2, }, { 134, 149, 221, 122, 228, 188, 147, 115, 249, 42, 2, 214, 218, 79, 83, 185, }, { 70, 33, 123, 133, 221, 147, 199, 31, 86, 193, 227, 2, 13, 44, 55, 6, }, { 197, 62, 82, 71, 150, 226, 59, 171, 100, 63, 3, 189, 183, 137, 155, 4, }, { 5, 138, 244, 184, 175, 205, 111, 199, 203, 212, 226, 105, 96, 234, 255, 187, }, { 207, 233, 121, 244, 11, 187, 229, 230, 49, 84, 4, 111, 119, 158, 166, 177, }, { 15, 93, 223, 11, 50, 148, 177, 138, 158, 191, 229, 187, 160, 253, 194, 14, }, { 140, 66, 246, 201, 121, 229, 77, 62, 172, 65, 5, 4, 26, 88, 110, 12, }, { 76, 246, 80, 54, 64, 202, 25, 82, 3, 170, 228, 208, 205, 59, 10, 179, }, { 73, 124, 164, 142, 239, 7, 118, 149, 200, 126, 6, 185, 173, 209, 245, 8, }, { 137, 200, 2, 113, 214, 40, 34, 249, 103, 149, 231, 109, 122, 178, 145, 183, }, { 10, 215, 43, 179, 157, 89, 222, 77, 85, 107, 7, 210, 192, 23, 61, 181, }, { 202, 99, 141, 76, 164, 118, 138, 33, 250, 128, 230, 6, 23, 116, 89, 10, }, { 93, 17, 242, 43, 22, 181, 9, 15, 98, 168, 8, 222, 238, 255, 143, 161, }, { 157, 165, 84, 212, 47, 154, 93, 99, 205, 67, 233, 10, 57, 156, 235, 30, }, { 30, 186, 125, 22, 100, 235, 161, 215, 255, 189, 9, 181, 131, 57, 71, 28, }, { 222, 14, 219, 233, 93, 196, 245, 187, 80, 86, 232, 97, 84, 90, 35, 163, }, { 219, 132, 47, 81, 242, 9, 154, 124, 155, 130, 10, 8, 52, 176, 220, 24, }, { 27, 48, 137, 174, 203, 38, 206, 16, 52, 105, 235, 220, 227, 211, 184, 167, }, { 152, 47, 160, 108, 128, 87, 50, 164, 6, 151, 11, 99, 89, 118, 20, 165, }, { 88, 155, 6, 147, 185, 120, 102, 200, 169, 124, 234, 183, 142, 21, 112, 26, }, { 146, 248, 139, 223, 29, 14, 236, 233, 83, 252, 12, 177, 153, 97, 41, 16, }, { 82, 76, 45, 32, 36, 33, 184, 133, 252, 23, 237, 101, 78, 2, 77, 175, }, { 209, 83, 4, 226, 111, 80, 68, 49, 206, 233, 13, 218, 244, 167, 225, 173, }, { 17, 231, 162, 29, 86, 127, 16, 93, 97, 2, 236, 14, 35, 196, 133, 18, }, { 20, 109, 86, 165, 249, 178, 127, 154, 170, 214, 14, 103, 67, 46, 122, 169, }, { 212, 217, 240, 90, 192, 157, 43, 246, 5, 61, 239, 179, 148, 77, 30, 22, }, { 87, 198, 217, 152, 139, 236, 215, 66, 55, 195, 15, 12, 46, 232, 178, 20, }, { 151, 114, 127, 103, 178, 195, 131, 46, 152, 40, 238, 216, 249, 139, 214, 171, }, { 186, 34, 39, 86, 44, 169, 18, 30, 196, 147, 16, 127, 31, 61, 221, 129, }, { 122, 150, 129, 169, 21, 134, 70, 114, 107, 120, 241, 171, 200, 94, 185, 62, }, { 249, 137, 168, 107, 94, 247, 186, 198, 89, 134, 17, 20, 114, 251, 21, 60, }, { 57, 61, 14, 148, 103, 216, 238, 170, 246, 109, 240, 192, 165, 152, 113, 131, }, { 60, 183, 250, 44, 200, 21, 129, 109, 61, 185, 18, 169, 197, 114, 142, 56, }, { 252, 3, 92, 211, 241, 58, 213, 1, 146, 82, 243, 125, 18, 17, 234, 135, }, { 127, 28, 117, 17, 186, 75, 41, 181, 160, 172, 19, 194, 168, 180, 70, 133, }, { 191, 168, 211, 238, 131, 100, 125, 217, 15, 71, 242, 22, 127, 215, 34, 58, }, { 117, 203, 94, 162, 39, 18, 247, 248, 245, 199, 20, 16, 104, 163, 123, 48, }, { 181, 127, 248, 93, 30, 61, 163, 148, 90, 44, 245, 196, 191, 192, 31, 143, }, { 54, 96, 209, 159, 85, 76, 95, 32, 104, 210, 21, 123, 5, 101, 179, 141, }, { 246, 212, 119, 96, 108, 99, 11, 76, 199, 57, 244, 175, 210, 6, 215, 50, }, { 243, 94, 131, 216, 195, 174, 100, 139, 12, 237, 22, 198, 178, 236, 40, 137, }, { 51, 234, 37, 39, 250, 129, 48, 231, 163, 6, 247, 18, 101, 143, 76, 54, }, { 176, 245, 12, 229, 177, 240, 204, 83, 145, 248, 23, 173, 223, 42, 224, 52, }, { 112, 65, 170, 26, 136, 223, 152, 63, 62, 19, 246, 121, 8, 73, 132, 139, }, { 231, 51, 213, 125, 58, 28, 27, 17, 166, 59, 24, 161, 241, 194, 82, 32, }, { 39, 135, 115, 130, 3, 51, 79, 125, 9, 208, 249, 117, 38, 161, 54, 159, }, { 164, 152, 90, 64, 72, 66, 179, 201, 59, 46, 25, 202, 156, 4, 154, 157, }, { 100, 44, 252, 191, 113, 109, 231, 165, 148, 197, 248, 30, 75, 103, 254, 34, }, { 97, 166, 8, 7, 222, 160, 136, 98, 95, 17, 26, 119, 43, 141, 1, 153, }, { 161, 18, 174, 248, 231, 143, 220, 14, 240, 250, 251, 163, 252, 238, 101, 38, }, { 34, 13, 135, 58, 172, 254, 32, 186, 194, 4, 27, 28, 70, 75, 201, 36, }, { 226, 185, 33, 197, 149, 209, 116, 214, 109, 239, 250, 200, 145, 40, 173, 155, }, { 40, 218, 172, 137, 49, 167, 254, 247, 151, 111, 28, 206, 134, 92, 244, 145, }, { 232, 110, 10, 118, 8, 136, 170, 155, 56, 132, 253, 26, 81, 63, 144, 46, }, { 107, 113, 35, 180, 67, 249, 86, 47, 10, 122, 29, 165, 235, 154, 60, 44, }, { 171, 197, 133, 75, 122, 214, 2, 67, 165, 145, 252, 113, 60, 249, 88, 147, }, { 174, 79, 113, 243, 213, 27, 109, 132, 110, 69, 30, 24, 92, 19, 167, 40, }, { 110, 251, 215, 12, 236, 52, 57, 232, 193, 174, 255, 204, 139, 112, 195, 151, }, { 237, 228, 254, 206, 167, 69, 197, 92, 243, 80, 31, 115, 49, 213, 111, 149, }, { 45, 80, 88, 49, 158, 106, 145, 48, 92, 187, 254, 167, 230, 182, 11, 42, }, { 183, 68, 78, 172, 88, 145, 36, 60, 75, 229, 32, 254, 62, 122, 121, 193, }, { 119, 240, 232, 83, 97, 190, 112, 80, 228, 14, 193, 42, 233, 25, 29, 126, }, { 244, 239, 193, 145, 42, 207, 140, 228, 214, 240, 33, 149, 83, 188, 177, 124, }, { 52, 91, 103, 110, 19, 224, 216, 136, 121, 27, 192, 65, 132, 223, 213, 195, }, { 49, 209, 147, 214, 188, 45, 183, 79, 178, 207, 34, 40, 228, 53, 42, 120, }, { 241, 101, 53, 41, 133, 2, 227, 35, 29, 36, 195, 252, 51, 86, 78, 199, }, { 114, 122, 28, 235, 206, 115, 31, 151, 47, 218, 35, 67, 137, 243, 226, 197, }, { 178, 206, 186, 20, 247, 92, 75, 251, 128, 49, 194, 151, 94, 144, 134, 122, }, { 120, 173, 55, 88, 83, 42, 193, 218, 122, 177, 36, 145, 73, 228, 223, 112, }, { 184, 25, 145, 167, 106, 5, 149, 182, 213, 90, 197, 69, 158, 135, 187, 207, }, { 59, 6, 184, 101, 33, 116, 105, 2, 231, 164, 37, 250, 36, 34, 23, 205, }, { 251, 178, 30, 154, 24, 91, 61, 110, 72, 79, 196, 46, 243, 65, 115, 114, }, { 254, 56, 234, 34, 183, 150, 82, 169, 131, 155, 38, 71, 147, 171, 140, 201, }, { 62, 140, 76, 221, 142, 185, 6, 197, 44, 112, 199, 147, 68, 200, 232, 118, }, { 189, 147, 101, 31, 197, 200, 250, 113, 30, 142, 39, 44, 254, 109, 68, 116, }, { 125, 39, 195, 224, 252, 231, 174, 29, 177, 101, 198, 248, 41, 14, 32, 203, }, { 234, 85, 188, 135, 78, 36, 45, 51, 41, 77, 40, 32, 208, 133, 246, 96, }, { 42, 225, 26, 120, 119, 11, 121, 95, 134, 166, 201, 244, 7, 230, 146, 223, }, { 169, 254, 51, 186, 60, 122, 133, 235, 180, 88, 41, 75, 189, 67, 62, 221, }, { 105, 74, 149, 69, 5, 85, 209, 135, 27, 179, 200, 159, 106, 32, 90, 98, }, { 108, 192, 97, 253, 170, 152, 190, 64, 208, 103, 42, 246, 10, 202, 165, 217, }, { 172, 116, 199, 2, 147, 183, 234, 44, 127, 140, 203, 34, 221, 169, 193, 102, }, { 47, 107, 238, 192, 216, 198, 22, 152, 77, 114, 43, 157, 103, 12, 109, 100, }, { 239, 223, 72, 63, 225, 233, 66, 244, 226, 153, 202, 73, 176, 111, 9, 219, }, { 37, 188, 197, 115, 69, 159, 200, 213, 24, 25, 44, 79, 167, 27, 80, 209, }, { 229, 8, 99, 140, 124, 176, 156, 185, 183, 242, 205, 155, 112, 120, 52, 110, }, { 102, 23, 74, 78, 55, 193, 96, 13, 133, 12, 45, 36, 202, 221, 152, 108, }, { 166, 163, 236, 177, 14, 238, 52, 97, 42, 231, 204, 240, 29, 190, 252, 211, }, { 163, 41, 24, 9, 161, 35, 91, 166, 225, 51, 46, 153, 125, 84, 3, 104, }, { 99, 157, 190, 246, 152, 12, 15, 202, 78, 216, 207, 77, 170, 55, 103, 215, }, { 224, 130, 151, 52, 211, 125, 243, 126, 124, 38, 47, 242, 16, 146, 203, 213, }, { 32, 54, 49, 203, 234, 82, 167, 18, 211, 205, 206, 38, 199, 241, 175, 106, }, { 13, 102, 105, 250, 116, 56, 54, 34, 143, 118, 48, 129, 33, 71, 164, 64, }, { 205, 210, 207, 5, 77, 23, 98, 78, 32, 157, 209, 85, 246, 36, 192, 255, }, { 78, 205, 230, 199, 6, 102, 158, 250, 18, 99, 49, 234, 76, 129, 108, 253, }, { 142, 121, 64, 56, 63, 73, 202, 150, 189, 136, 208, 62, 155, 226, 8, 66, }, { 139, 243, 180, 128, 144, 132, 165, 81, 118, 92, 50, 87, 251, 8, 247, 249, }, { 75, 71, 18, 127, 169, 171, 241, 61, 217, 183, 211, 131, 44, 107, 147, 70, }, { 200, 88, 59, 189, 226, 218, 13, 137, 235, 73, 51, 60, 150, 206, 63, 68, }, { 8, 236, 157, 66, 219, 245, 89, 229, 68, 162, 210, 232, 65, 173, 91, 251, }, { 194, 143, 16, 14, 127, 131, 211, 196, 190, 34, 52, 238, 86, 217, 2, 241, }, { 2, 59, 182, 241, 70, 172, 135, 168, 17, 201, 213, 58, 129, 186, 102, 78, }, { 129, 36, 159, 51, 13, 221, 123, 28, 35, 55, 53, 133, 59, 31, 202, 76, }, { 65, 144, 57, 204, 52, 242, 47, 112, 140, 220, 212, 81, 236, 124, 174, 243, }, { 68, 26, 205, 116, 155, 63, 64, 183, 71, 8, 54, 56, 140, 150, 81, 72, }, { 132, 174, 107, 139, 162, 16, 20, 219, 232, 227, 215, 236, 91, 245, 53, 247, }, { 7, 177, 66, 73, 233, 97, 232, 111, 218, 29, 55, 83, 225, 80, 153, 245, }, { 199, 5, 228, 182, 208, 78, 188, 3, 117, 246, 214, 135, 54, 51, 253, 74, }, { 80, 119, 155, 209, 98, 141, 63, 45, 237, 222, 56, 95, 207, 184, 43, 225, }, { 144, 195, 61, 46, 91, 162, 107, 65, 66, 53, 217, 139, 24, 219, 79, 94, }, { 19, 220, 20, 236, 16, 211, 151, 245, 112, 203, 57, 52, 162, 126, 227, 92, }, { 211, 104, 178, 19, 41, 252, 195, 153, 223, 32, 216, 224, 117, 29, 135, 227, }, { 214, 226, 70, 171, 134, 49, 172, 94, 20, 244, 58, 137, 21, 247, 120, 88, }, { 22, 86, 224, 84, 191, 30, 248, 50, 187, 31, 219, 93, 194, 148, 28, 231, }, { 149, 73, 201, 150, 244, 111, 4, 134, 137, 225, 59, 226, 120, 49, 176, 229, }, { 85, 253, 111, 105, 205, 64, 80, 234, 38, 10, 218, 54, 175, 82, 212, 90, }, { 159, 158, 226, 37, 105, 54, 218, 203, 220, 138, 60, 48, 184, 38, 141, 80, }, { 95, 42, 68, 218, 80, 25, 142, 167, 115, 97, 221, 228, 111, 69, 233, 239, }, { 220, 53, 109, 24, 27, 104, 114, 19, 65, 159, 61, 91, 213, 224, 69, 237, }, { 28, 129, 203, 231, 34, 71, 38, 127, 238, 116, 220, 143, 2, 131, 33, 82, }, { 25, 11, 63, 95, 141, 138, 73, 184, 37, 160, 62, 230, 98, 105, 222, 233, }, { 217, 191, 153, 160, 180, 165, 29, 212, 138, 75, 223, 50, 181, 10, 186, 86, }, { 90, 160, 176, 98, 255, 212, 225, 96, 184, 181, 63, 141, 15, 175, 22, 84, }, { 154, 20, 22, 157, 198, 251, 181, 12, 23, 94, 222, 89, 216, 204, 114, 235, }, { 173, 136, 156, 155, 176, 225, 72, 120, 150, 9, 64, 63, 124, 244, 242, 65, }, { 109, 60, 58, 100, 137, 206, 28, 20, 57, 226, 161, 235, 171, 151, 150, 254, }, { 238, 35, 19, 166, 194, 191, 224, 160, 11, 28, 65, 84, 17, 50, 58, 252, }, { 46, 151, 181, 89, 251, 144, 180, 204, 164, 247, 160, 128, 198, 81, 94, 67, }, { 43, 29, 65, 225, 84, 93, 219, 11, 111, 35, 66, 233, 166, 187, 161, 248, }, { 235, 169, 231, 30, 109, 114, 143, 103, 192, 200, 163, 61, 113, 216, 197, 71, }, { 104, 182, 206, 220, 38, 3, 115, 211, 242, 54, 67, 130, 203, 125, 105, 69, }, { 168, 2, 104, 35, 31, 44, 39, 191, 93, 221, 162, 86, 28, 30, 13, 250, }, { 98, 97, 229, 111, 187, 90, 173, 158, 167, 93, 68, 80, 11, 106, 84, 240, }, { 162, 213, 67, 144, 130, 117, 249, 242, 8, 182, 165, 132, 220, 9, 48, 79, }, { 33, 202, 106, 82, 201, 4, 5, 70, 58, 72, 69, 59, 102, 172, 156, 77, }, { 225, 126, 204, 173, 240, 43, 81, 42, 149, 163, 164, 239, 177, 207, 248, 242, }, { 228, 244, 56, 21, 95, 230, 62, 237, 94, 119, 70, 134, 209, 37, 7, 73, }, { 36, 64, 158, 234, 102, 201, 106, 129, 241, 156, 167, 82, 6, 70, 99, 246, }, { 167, 95, 183, 40, 45, 184, 150, 53, 195, 98, 71, 237, 188, 227, 207, 244, }, { 103, 235, 17, 215, 20, 151, 194, 89, 108, 137, 166, 57, 107, 128, 171, 75, }, { 240, 153, 110, 176, 166, 84, 65, 119, 244, 161, 72, 225, 146, 11, 125, 224, }, { 48, 45, 200, 79, 159, 123, 21, 27, 91, 74, 169, 53, 69, 104, 25, 95, }, { 179, 50, 225, 141, 212, 10, 233, 175, 105, 180, 73, 138, 255, 205, 181, 93, }, { 115, 134, 71, 114, 237, 37, 189, 195, 198, 95, 168, 94, 40, 174, 209, 226, }, { 118, 12, 179, 202, 66, 232, 210, 4, 13, 139, 74, 55, 72, 68, 46, 89, }, { 182, 184, 21, 53, 123, 199, 134, 104, 162, 96, 171, 227, 159, 39, 74, 230, }, { 53, 167, 60, 247, 48, 182, 122, 220, 144, 158, 75, 92, 37, 130, 230, 228, }, { 245, 19, 154, 8, 9, 153, 46, 176, 63, 117, 170, 136, 242, 225, 130, 91, }, { 63, 112, 23, 68, 173, 239, 164, 145, 197, 245, 76, 142, 229, 149, 219, 81, }, { 255, 196, 177, 187, 148, 192, 240, 253, 106, 30, 173, 90, 50, 246, 191, 238, }, { 124, 219, 152, 121, 223, 177, 12, 73, 88, 224, 77, 229, 136, 83, 19, 236, }, { 188, 111, 62, 134, 230, 158, 88, 37, 247, 11, 172, 49, 95, 48, 119, 83, }, { 185, 229, 202, 62, 73, 83, 55, 226, 60, 223, 78, 88, 63, 218, 136, 232, }, { 121, 81, 108, 193, 112, 124, 99, 142, 147, 52, 175, 140, 232, 185, 236, 87, }, { 250, 78, 69, 3, 59, 13, 159, 58, 161, 202, 79, 51, 82, 28, 64, 85, }, { 58, 250, 227, 252, 2, 34, 203, 86, 14, 33, 174, 231, 133, 127, 36, 234, }, { 23, 170, 187, 205, 156, 72, 90, 102, 82, 154, 80, 64, 99, 201, 47, 192, }, { 215, 30, 29, 50, 165, 103, 14, 10, 253, 113, 177, 148, 180, 170, 75, 127, }, { 84, 1, 52, 240, 238, 22, 242, 190, 207, 143, 81, 43, 14, 15, 231, 125, }, { 148, 181, 146, 15, 215, 57, 166, 210, 96, 100, 176, 255, 217, 108, 131, 194, }, { 145, 63, 102, 183, 120, 244, 201, 21, 171, 176, 82, 150, 185, 134, 124, 121, }, { 81, 139, 192, 72, 65, 219, 157, 121, 4, 91, 179, 66, 110, 229, 24, 198, }, { 210, 148, 233, 138, 10, 170, 97, 205, 54, 165, 83, 253, 212, 64, 180, 196, }, { 18, 32, 79, 117, 51, 133, 53, 161, 153, 78, 178, 41, 3, 35, 208, 123, }, { 216, 67, 194, 57, 151, 243, 191, 128, 99, 206, 84, 47, 20, 87, 137, 113, }, { 24, 247, 100, 198, 174, 220, 235, 236, 204, 37, 181, 251, 195, 52, 237, 206, }, { 155, 232, 77, 4, 229, 173, 23, 88, 254, 219, 85, 68, 121, 145, 65, 204, }, { 91, 92, 235, 251, 220, 130, 67, 52, 81, 48, 180, 144, 174, 242, 37, 115, }, { 94, 214, 31, 67, 115, 79, 44, 243, 154, 228, 86, 249, 206, 24, 218, 200, }, { 158, 98, 185, 188, 74, 96, 120, 159, 53, 15, 183, 45, 25, 123, 190, 119, }, { 29, 125, 144, 126, 1, 17, 132, 43, 7, 241, 87, 146, 163, 222, 18, 117, }, { 221, 201, 54, 129, 56, 62, 208, 71, 168, 26, 182, 70, 116, 189, 118, 202, }, { 74, 187, 73, 230, 138, 253, 83, 105, 48, 50, 88, 158, 141, 54, 160, 97, }, { 138, 15, 239, 25, 179, 210, 7, 5, 159, 217, 185, 74, 90, 85, 196, 222, }, { 9, 16, 198, 219, 248, 163, 251, 177, 173, 39, 89, 245, 224, 240, 104, 220, }, { 201, 164, 96, 36, 193, 140, 175, 221, 2, 204, 184, 33, 55, 147, 12, 99, }, { 204, 46, 148, 156, 110, 65, 192, 26, 201, 24, 90, 72, 87, 121, 243, 216, }, { 12, 154, 50, 99, 87, 110, 148, 118, 102, 243, 187, 156, 128, 26, 151, 103, }, { 143, 133, 27, 161, 28, 31, 104, 194, 84, 13, 91, 35, 58, 191, 59, 101, }, { 79, 49, 189, 94, 37, 48, 60, 174, 251, 230, 186, 247, 237, 220, 95, 218, }, { 133, 82, 48, 18, 129, 70, 182, 143, 1, 102, 92, 241, 250, 168, 6, 208, }, { 69, 230, 150, 237, 184, 105, 226, 227, 174, 141, 189, 37, 45, 203, 98, 111, }, { 198, 249, 191, 47, 243, 24, 30, 87, 156, 115, 93, 154, 151, 110, 206, 109, }, { 6, 77, 25, 208, 202, 55, 74, 59, 51, 152, 188, 78, 64, 13, 170, 210, }, { 3, 199, 237, 104, 101, 250, 37, 252, 248, 76, 94, 39, 32, 231, 85, 105, }, { 195, 115, 75, 151, 92, 213, 113, 144, 87, 167, 191, 243, 247, 132, 49, 214, }, { 64, 108, 98, 85, 23, 164, 141, 36, 101, 89, 95, 76, 77, 33, 157, 212, }, { 128, 216, 196, 170, 46, 139, 217, 72, 202, 178, 190, 152, 154, 66, 249, 107, }, { 26, 204, 210, 55, 232, 112, 108, 68, 221, 236, 96, 193, 66, 142, 139, 128, }, { 218, 120, 116, 200, 209, 95, 56, 40, 114, 7, 129, 21, 149, 237, 239, 63, }, { 89, 103, 93, 10, 154, 46, 196, 156, 64, 249, 97, 170, 47, 72, 67, 61, }, { 153, 211, 251, 245, 163, 1, 144, 240, 239, 18, 128, 126, 248, 43, 39, 130, }, { 156, 89, 15, 77, 12, 204, 255, 55, 36, 198, 98, 23, 152, 193, 216, 57, }, { 92, 237, 169, 178, 53, 227, 171, 91, 139, 45, 131, 195, 79, 162, 188, 134, }, { 223, 242, 128, 112, 126, 146, 87, 239, 185, 211, 99, 124, 245, 7, 16, 132, }, { 31, 70, 38, 143, 71, 189, 3, 131, 22, 56, 130, 168, 34, 100, 116, 59, }, { 213, 37, 171, 195, 227, 203, 137, 162, 236, 184, 100, 174, 53, 16, 45, 49, }, { 21, 145, 13, 60, 218, 228, 221, 206, 67, 83, 133, 122, 226, 115, 73, 142, }, { 150, 142, 36, 254, 145, 149, 33, 122, 113, 173, 101, 197, 88, 214, 229, 140, }, { 86, 58, 130, 1, 168, 186, 117, 22, 222, 70, 132, 17, 143, 181, 129, 51, }, { 83, 176, 118, 185, 7, 119, 26, 209, 21, 146, 102, 120, 239, 95, 126, 136, }, { 147, 4, 208, 70, 62, 88, 78, 189, 186, 121, 135, 172, 56, 60, 26, 55, }, { 16, 27, 249, 132, 117, 41, 178, 9, 136, 135, 103, 19, 130, 153, 182, 53, }, { 208, 175, 95, 123, 76, 6, 230, 101, 39, 108, 134, 199, 85, 250, 210, 138, }, { 71, 221, 32, 28, 254, 197, 101, 75, 191, 68, 104, 31, 172, 113, 4, 33, }, { 135, 105, 134, 227, 199, 234, 49, 39, 16, 175, 137, 203, 123, 18, 96, 158, }, { 4, 118, 175, 33, 140, 155, 205, 147, 34, 81, 105, 116, 193, 183, 204, 156, }, { 196, 194, 9, 222, 181, 180, 153, 255, 141, 186, 136, 160, 22, 212, 168, 35, }, { 193, 72, 253, 102, 26, 121, 246, 56, 70, 110, 106, 201, 118, 62, 87, 152, }, { 1, 252, 91, 153, 35, 86, 162, 84, 233, 133, 139, 29, 161, 93, 51, 39, }, { 130, 227, 114, 91, 104, 39, 94, 224, 219, 123, 107, 162, 27, 248, 159, 37, }, { 66, 87, 212, 164, 81, 8, 10, 140, 116, 144, 138, 118, 204, 155, 251, 154, }, { 136, 52, 89, 232, 245, 126, 128, 173, 142, 16, 108, 112, 219, 239, 162, 144, }, { 72, 128, 255, 23, 204, 81, 212, 193, 33, 251, 141, 164, 12, 140, 198, 47, }, { 203, 159, 214, 213, 135, 32, 40, 117, 19, 5, 109, 27, 182, 41, 106, 45, }, { 11, 43, 112, 42, 190, 15, 124, 25, 188, 238, 140, 207, 97, 74, 14, 146, }, { 14, 161, 132, 146, 17, 194, 19, 222, 119, 58, 110, 166, 1, 160, 241, 41, }, { 206, 21, 34, 109, 40, 237, 71, 178, 216, 209, 143, 114, 214, 195, 149, 150, }, { 77, 10, 11, 175, 99, 156, 187, 6, 234, 47, 111, 205, 108, 102, 57, 148, }, { 141, 190, 173, 80, 90, 179, 239, 106, 69, 196, 142, 25, 187, 5, 93, 43, }, { 160, 238, 245, 97, 196, 217, 126, 90, 25, 127, 112, 190, 93, 179, 86, 1, }, { 96, 90, 83, 158, 253, 246, 42, 54, 182, 148, 145, 106, 138, 208, 50, 190, }, { 227, 69, 122, 92, 182, 135, 214, 130, 132, 106, 113, 213, 48, 117, 158, 188, }, { 35, 241, 220, 163, 143, 168, 130, 238, 43, 129, 144, 1, 231, 22, 250, 3, }, { 38, 123, 40, 27, 32, 101, 237, 41, 224, 85, 114, 104, 135, 252, 5, 184, }, { 230, 207, 142, 228, 25, 74, 185, 69, 79, 190, 147, 188, 80, 159, 97, 7, }, { 101, 208, 167, 38, 82, 59, 69, 241, 125, 64, 115, 3, 234, 58, 205, 5, }, { 165, 100, 1, 217, 107, 20, 17, 157, 210, 171, 146, 215, 61, 89, 169, 186, }, { 111, 7, 140, 149, 207, 98, 155, 188, 40, 43, 116, 209, 42, 45, 240, 176, }, { 175, 179, 42, 106, 246, 77, 207, 208, 135, 192, 149, 5, 253, 78, 148, 15, }, { 44, 172, 3, 168, 189, 60, 51, 100, 181, 62, 117, 186, 71, 235, 56, 13, }, { 236, 24, 165, 87, 132, 19, 103, 8, 26, 213, 148, 110, 144, 136, 92, 178, }, { 233, 146, 81, 239, 43, 222, 8, 207, 209, 1, 118, 7, 240, 98, 163, 9, }, { 41, 38, 247, 16, 18, 241, 92, 163, 126, 234, 151, 211, 39, 1, 199, 182, }, { 170, 57, 222, 210, 89, 128, 160, 23, 76, 20, 119, 108, 157, 164, 107, 180, }, { 106, 141, 120, 45, 96, 175, 244, 123, 227, 255, 150, 184, 74, 199, 15, 11, }, { 253, 255, 7, 74, 210, 108, 119, 85, 123, 215, 120, 96, 179, 76, 217, 160, }, { 61, 75, 161, 181, 235, 67, 35, 57, 212, 60, 153, 180, 100, 47, 189, 31, }, { 190, 84, 136, 119, 160, 50, 223, 141, 230, 194, 121, 11, 222, 138, 17, 29, }, { 126, 224, 46, 136, 153, 29, 139, 225, 73, 41, 152, 223, 9, 233, 117, 162, }, { 123, 106, 218, 48, 54, 208, 228, 38, 130, 253, 122, 182, 105, 3, 138, 25, }, { 187, 222, 124, 207, 15, 255, 176, 74, 45, 22, 155, 98, 190, 96, 238, 166, }, { 56, 193, 85, 13, 68, 142, 76, 254, 31, 232, 123, 221, 4, 197, 66, 164, }, { 248, 117, 243, 242, 125, 161, 24, 146, 176, 3, 154, 9, 211, 166, 38, 27, }, { 50, 22, 126, 190, 217, 215, 146, 179, 74, 131, 124, 15, 196, 210, 127, 17, }, { 242, 162, 216, 65, 224, 248, 198, 223, 229, 104, 157, 219, 19, 177, 27, 174, }, { 113, 189, 241, 131, 171, 137, 58, 107, 215, 150, 125, 100, 169, 20, 183, 172, }, { 177, 9, 87, 124, 146, 166, 110, 7, 120, 125, 156, 176, 126, 119, 211, 19, }, { 180, 131, 163, 196, 61, 107, 1, 192, 179, 169, 126, 217, 30, 157, 44, 168, }, { 116, 55, 5, 59, 4, 68, 85, 172, 28, 66, 159, 13, 201, 254, 72, 23, }, { 247, 40, 44, 249, 79, 53, 169, 24, 46, 188, 127, 178, 115, 91, 228, 21, }, { 55, 156, 138, 6, 118, 26, 253, 116, 129, 87, 158, 102, 164, 56, 128, 170, }, }, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, { 1, 84, 48, 123, 239, 132, 8, 9, 212, 213, 163, 141, 166, 161, 193, 10, }, { 2, 168, 96, 246, 29, 203, 16, 18, 107, 105, 133, 217, 143, 129, 65, 20, }, { 3, 252, 80, 141, 242, 79, 24, 27, 191, 188, 38, 84, 41, 32, 128, 30, }, { 4, 147, 192, 47, 58, 85, 32, 36, 214, 210, 201, 113, 221, 193, 130, 40, }, { 5, 199, 240, 84, 213, 209, 40, 45, 2, 7, 106, 252, 123, 96, 67, 34, }, { 6, 59, 160, 217, 39, 158, 48, 54, 189, 187, 76, 168, 82, 64, 195, 60, }, { 7, 111, 144, 162, 200, 26, 56, 63, 105, 110, 239, 37, 244, 225, 2, 54, }, { 8, 229, 67, 94, 116, 170, 64, 72, 111, 103, 81, 226, 121, 65, 199, 80, }, { 9, 177, 115, 37, 155, 46, 72, 65, 187, 178, 242, 111, 223, 224, 6, 90, }, { 10, 77, 35, 168, 105, 97, 80, 90, 4, 14, 212, 59, 246, 192, 134, 68, }, { 11, 25, 19, 211, 134, 229, 88, 83, 208, 219, 119, 182, 80, 97, 71, 78, }, { 12, 118, 131, 113, 78, 255, 96, 108, 185, 181, 152, 147, 164, 128, 69, 120, }, { 13, 34, 179, 10, 161, 123, 104, 101, 109, 96, 59, 30, 2, 33, 132, 114, }, { 14, 222, 227, 135, 83, 52, 112, 126, 210, 220, 29, 74, 43, 1, 4, 108, }, { 15, 138, 211, 252, 188, 176, 120, 119, 6, 9, 190, 199, 141, 160, 197, 102, }, { 16, 9, 134, 188, 232, 151, 128, 144, 222, 206, 162, 7, 242, 130, 77, 160, }, { 17, 93, 182, 199, 7, 19, 136, 153, 10, 27, 1, 138, 84, 35, 140, 170, }, { 18, 161, 230, 74, 245, 92, 144, 130, 181, 167, 39, 222, 125, 3, 12, 180, }, { 19, 245, 214, 49, 26, 216, 152, 139, 97, 114, 132, 83, 219, 162, 205, 190, }, { 20, 154, 70, 147, 210, 194, 160, 180, 8, 28, 107, 118, 47, 67, 207, 136, }, { 21, 206, 118, 232, 61, 70, 168, 189, 220, 201, 200, 251, 137, 226, 14, 130, }, { 22, 50, 38, 101, 207, 9, 176, 166, 99, 117, 238, 175, 160, 194, 142, 156, }, { 23, 102, 22, 30, 32, 141, 184, 175, 183, 160, 77, 34, 6, 99, 79, 150, }, { 24, 236, 197, 226, 156, 61, 192, 216, 177, 169, 243, 229, 139, 195, 138, 240, }, { 25, 184, 245, 153, 115, 185, 200, 209, 101, 124, 80, 104, 45, 98, 75, 250, }, { 26, 68, 165, 20, 129, 246, 208, 202, 218, 192, 118, 60, 4, 66, 203, 228, }, { 27, 16, 149, 111, 110, 114, 216, 195, 14, 21, 213, 177, 162, 227, 10, 238, }, { 28, 127, 5, 205, 166, 104, 224, 252, 103, 123, 58, 148, 86, 2, 8, 216, }, { 29, 43, 53, 182, 73, 236, 232, 245, 179, 174, 153, 25, 240, 163, 201, 210, }, { 30, 215, 101, 59, 187, 163, 240, 238, 12, 18, 191, 77, 217, 131, 73, 204, }, { 31, 131, 85, 64, 84, 39, 248, 231, 216, 199, 28, 192, 127, 34, 136, 198, }, { 32, 18, 207, 187, 19, 237, 195, 227, 127, 95, 135, 14, 39, 199, 154, 131, }, { 33, 70, 255, 192, 252, 105, 203, 234, 171, 138, 36, 131, 129, 102, 91, 137, }, { 34, 186, 175, 77, 14, 38, 211, 241, 20, 54, 2, 215, 168, 70, 219, 151, }, { 35, 238, 159, 54, 225, 162, 219, 248, 192, 227, 161, 90, 14, 231, 26, 157, }, { 36, 129, 15, 148, 41, 184, 227, 199, 169, 141, 78, 127, 250, 6, 24, 171, }, { 37, 213, 63, 239, 198, 60, 235, 206, 125, 88, 237, 242, 92, 167, 217, 161, }, { 38, 41, 111, 98, 52, 115, 243, 213, 194, 228, 203, 166, 117, 135, 89, 191, }, { 39, 125, 95, 25, 219, 247, 251, 220, 22, 49, 104, 43, 211, 38, 152, 181, }, { 40, 247, 140, 229, 103, 71, 131, 171, 16, 56, 214, 236, 94, 134, 93, 211, }, { 41, 163, 188, 158, 136, 195, 139, 162, 196, 237, 117, 97, 248, 39, 156, 217, }, { 42, 95, 236, 19, 122, 140, 147, 185, 123, 81, 83, 53, 209, 7, 28, 199, }, { 43, 11, 220, 104, 149, 8, 155, 176, 175, 132, 240, 184, 119, 166, 221, 205, }, { 44, 100, 76, 202, 93, 18, 163, 143, 198, 234, 31, 157, 131, 71, 223, 251, }, { 45, 48, 124, 177, 178, 150, 171, 134, 18, 63, 188, 16, 37, 230, 30, 241, }, { 46, 204, 44, 60, 64, 217, 179, 157, 173, 131, 154, 68, 12, 198, 158, 239, }, { 47, 152, 28, 71, 175, 93, 187, 148, 121, 86, 57, 201, 170, 103, 95, 229, }, { 48, 27, 73, 7, 251, 122, 67, 115, 161, 145, 37, 9, 213, 69, 215, 35, }, { 49, 79, 121, 124, 20, 254, 75, 122, 117, 68, 134, 132, 115, 228, 22, 41, }, { 50, 179, 41, 241, 230, 177, 83, 97, 202, 248, 160, 208, 90, 196, 150, 55, }, { 51, 231, 25, 138, 9, 53, 91, 104, 30, 45, 3, 93, 252, 101, 87, 61, }, { 52, 136, 137, 40, 193, 47, 99, 87, 119, 67, 236, 120, 8, 132, 85, 11, }, { 53, 220, 185, 83, 46, 171, 107, 94, 163, 150, 79, 245, 174, 37, 148, 1, }, { 54, 32, 233, 222, 220, 228, 115, 69, 28, 42, 105, 161, 135, 5, 20, 31, }, { 55, 116, 217, 165, 51, 96, 123, 76, 200, 255, 202, 44, 33, 164, 213, 21, }, { 56, 254, 10, 89, 143, 208, 3, 59, 206, 246, 116, 235, 172, 4, 16, 115, }, { 57, 170, 58, 34, 96, 84, 11, 50, 26, 35, 215, 102, 10, 165, 209, 121, }, { 58, 86, 106, 175, 146, 27, 19, 41, 165, 159, 241, 50, 35, 133, 81, 103, }, { 59, 2, 90, 212, 125, 159, 27, 32, 113, 74, 82, 191, 133, 36, 144, 109, }, { 60, 109, 202, 118, 181, 133, 35, 31, 24, 36, 189, 154, 113, 197, 146, 91, }, { 61, 57, 250, 13, 90, 1, 43, 22, 204, 241, 30, 23, 215, 100, 83, 81, }, { 62, 197, 170, 128, 168, 78, 51, 13, 115, 77, 56, 67, 254, 68, 211, 79, }, { 63, 145, 154, 251, 71, 202, 59, 4, 167, 152, 155, 206, 88, 229, 18, 69, }, { 64, 36, 93, 181, 38, 25, 69, 5, 254, 190, 205, 28, 78, 77, 247, 197, }, { 65, 112, 109, 206, 201, 157, 77, 12, 42, 107, 110, 145, 232, 236, 54, 207, }, { 66, 140, 61, 67, 59, 210, 85, 23, 149, 215, 72, 197, 193, 204, 182, 209, }, { 67, 216, 13, 56, 212, 86, 93, 30, 65, 2, 235, 72, 103, 109, 119, 219, }, { 68, 183, 157, 154, 28, 76, 101, 33, 40, 108, 4, 109, 147, 140, 117, 237, }, { 69, 227, 173, 225, 243, 200, 109, 40, 252, 185, 167, 224, 53, 45, 180, 231, }, { 70, 31, 253, 108, 1, 135, 117, 51, 67, 5, 129, 180, 28, 13, 52, 249, }, { 71, 75, 205, 23, 238, 3, 125, 58, 151, 208, 34, 57, 186, 172, 245, 243, }, { 72, 193, 30, 235, 82, 179, 5, 77, 145, 217, 156, 254, 55, 12, 48, 149, }, { 73, 149, 46, 144, 189, 55, 13, 68, 69, 12, 63, 115, 145, 173, 241, 159, }, { 74, 105, 126, 29, 79, 120, 21, 95, 250, 176, 25, 39, 184, 141, 113, 129, }, { 75, 61, 78, 102, 160, 252, 29, 86, 46, 101, 186, 170, 30, 44, 176, 139, }, { 76, 82, 222, 196, 104, 230, 37, 105, 71, 11, 85, 143, 234, 205, 178, 189, }, { 77, 6, 238, 191, 135, 98, 45, 96, 147, 222, 246, 2, 76, 108, 115, 183, }, { 78, 250, 190, 50, 117, 45, 53, 123, 44, 98, 208, 86, 101, 76, 243, 169, }, { 79, 174, 142, 73, 154, 169, 61, 114, 248, 183, 115, 219, 195, 237, 50, 163, }, { 80, 45, 219, 9, 206, 142, 197, 149, 32, 112, 111, 27, 188, 207, 186, 101, }, { 81, 121, 235, 114, 33, 10, 205, 156, 244, 165, 204, 150, 26, 110, 123, 111, }, { 82, 133, 187, 255, 211, 69, 213, 135, 75, 25, 234, 194, 51, 78, 251, 113, }, { 83, 209, 139, 132, 60, 193, 221, 142, 159, 204, 73, 79, 149, 239, 58, 123, }, { 84, 190, 27, 38, 244, 219, 229, 177, 246, 162, 166, 106, 97, 14, 56, 77, }, { 85, 234, 43, 93, 27, 95, 237, 184, 34, 119, 5, 231, 199, 175, 249, 71, }, { 86, 22, 123, 208, 233, 16, 245, 163, 157, 203, 35, 179, 238, 143, 121, 89, }, { 87, 66, 75, 171, 6, 148, 253, 170, 73, 30, 128, 62, 72, 46, 184, 83, }, { 88, 200, 152, 87, 186, 36, 133, 221, 79, 23, 62, 249, 197, 142, 125, 53, }, { 89, 156, 168, 44, 85, 160, 141, 212, 155, 194, 157, 116, 99, 47, 188, 63, }, { 90, 96, 248, 161, 167, 239, 149, 207, 36, 126, 187, 32, 74, 15, 60, 33, }, { 91, 52, 200, 218, 72, 107, 157, 198, 240, 171, 24, 173, 236, 174, 253, 43, }, { 92, 91, 88, 120, 128, 113, 165, 249, 153, 197, 247, 136, 24, 79, 255, 29, }, { 93, 15, 104, 3, 111, 245, 173, 240, 77, 16, 84, 5, 190, 238, 62, 23, }, { 94, 243, 56, 142, 157, 186, 181, 235, 242, 172, 114, 81, 151, 206, 190, 9, }, { 95, 167, 8, 245, 114, 62, 189, 226, 38, 121, 209, 220, 49, 111, 127, 3, }, { 96, 54, 146, 14, 53, 244, 134, 230, 129, 225, 74, 18, 105, 138, 109, 70, }, { 97, 98, 162, 117, 218, 112, 142, 239, 85, 52, 233, 159, 207, 43, 172, 76, }, { 98, 158, 242, 248, 40, 63, 150, 244, 234, 136, 207, 203, 230, 11, 44, 82, }, { 99, 202, 194, 131, 199, 187, 158, 253, 62, 93, 108, 70, 64, 170, 237, 88, }, { 100, 165, 82, 33, 15, 161, 166, 194, 87, 51, 131, 99, 180, 75, 239, 110, }, { 101, 241, 98, 90, 224, 37, 174, 203, 131, 230, 32, 238, 18, 234, 46, 100, }, { 102, 13, 50, 215, 18, 106, 182, 208, 60, 90, 6, 186, 59, 202, 174, 122, }, { 103, 89, 2, 172, 253, 238, 190, 217, 232, 143, 165, 55, 157, 107, 111, 112, }, { 104, 211, 209, 80, 65, 94, 198, 174, 238, 134, 27, 240, 16, 203, 170, 22, }, { 105, 135, 225, 43, 174, 218, 206, 167, 58, 83, 184, 125, 182, 106, 107, 28, }, { 106, 123, 177, 166, 92, 149, 214, 188, 133, 239, 158, 41, 159, 74, 235, 2, }, { 107, 47, 129, 221, 179, 17, 222, 181, 81, 58, 61, 164, 57, 235, 42, 8, }, { 108, 64, 17, 127, 123, 11, 230, 138, 56, 84, 210, 129, 205, 10, 40, 62, }, { 109, 20, 33, 4, 148, 143, 238, 131, 236, 129, 113, 12, 107, 171, 233, 52, }, { 110, 232, 113, 137, 102, 192, 246, 152, 83, 61, 87, 88, 66, 139, 105, 42, }, { 111, 188, 65, 242, 137, 68, 254, 145, 135, 232, 244, 213, 228, 42, 168, 32, }, { 112, 63, 20, 178, 221, 99, 6, 118, 95, 47, 232, 21, 155, 8, 32, 230, }, { 113, 107, 36, 201, 50, 231, 14, 127, 139, 250, 75, 152, 61, 169, 225, 236, }, { 114, 151, 116, 68, 192, 168, 22, 100, 52, 70, 109, 204, 20, 137, 97, 242, }, { 115, 195, 68, 63, 47, 44, 30, 109, 224, 147, 206, 65, 178, 40, 160, 248, }, { 116, 172, 212, 157, 231, 54, 38, 82, 137, 253, 33, 100, 70, 201, 162, 206, }, { 117, 248, 228, 230, 8, 178, 46, 91, 93, 40, 130, 233, 224, 104, 99, 196, }, { 118, 4, 180, 107, 250, 253, 54, 64, 226, 148, 164, 189, 201, 72, 227, 218, }, { 119, 80, 132, 16, 21, 121, 62, 73, 54, 65, 7, 48, 111, 233, 34, 208, }, { 120, 218, 87, 236, 169, 201, 70, 62, 48, 72, 185, 247, 226, 73, 231, 182, }, { 121, 142, 103, 151, 70, 77, 78, 55, 228, 157, 26, 122, 68, 232, 38, 188, }, { 122, 114, 55, 26, 180, 2, 86, 44, 91, 33, 60, 46, 109, 200, 166, 162, }, { 123, 38, 7, 97, 91, 134, 94, 37, 143, 244, 159, 163, 203, 105, 103, 168, }, { 124, 73, 151, 195, 147, 156, 102, 26, 230, 154, 112, 134, 63, 136, 101, 158, }, { 125, 29, 167, 184, 124, 24, 110, 19, 50, 79, 211, 11, 153, 41, 164, 148, }, { 126, 225, 247, 53, 142, 87, 118, 8, 141, 243, 245, 95, 176, 9, 36, 138, }, { 127, 181, 199, 78, 97, 211, 126, 1, 89, 38, 86, 210, 22, 168, 229, 128, }, { 128, 72, 186, 169, 76, 50, 138, 10, 63, 191, 89, 56, 156, 154, 45, 73, }, { 129, 28, 138, 210, 163, 182, 130, 3, 235, 106, 250, 181, 58, 59, 236, 67, }, { 130, 224, 218, 95, 81, 249, 154, 24, 84, 214, 220, 225, 19, 27, 108, 93, }, { 131, 180, 234, 36, 190, 125, 146, 17, 128, 3, 127, 108, 181, 186, 173, 87, }, { 132, 219, 122, 134, 118, 103, 170, 46, 233, 109, 144, 73, 65, 91, 175, 97, }, { 133, 143, 74, 253, 153, 227, 162, 39, 61, 184, 51, 196, 231, 250, 110, 107, }, { 134, 115, 26, 112, 107, 172, 186, 60, 130, 4, 21, 144, 206, 218, 238, 117, }, { 135, 39, 42, 11, 132, 40, 178, 53, 86, 209, 182, 29, 104, 123, 47, 127, }, { 136, 173, 249, 247, 56, 152, 202, 66, 80, 216, 8, 218, 229, 219, 234, 25, }, { 137, 249, 201, 140, 215, 28, 194, 75, 132, 13, 171, 87, 67, 122, 43, 19, }, { 138, 5, 153, 1, 37, 83, 218, 80, 59, 177, 141, 3, 106, 90, 171, 13, }, { 139, 81, 169, 122, 202, 215, 210, 89, 239, 100, 46, 142, 204, 251, 106, 7, }, { 140, 62, 57, 216, 2, 205, 234, 102, 134, 10, 193, 171, 56, 26, 104, 49, }, { 141, 106, 9, 163, 237, 73, 226, 111, 82, 223, 98, 38, 158, 187, 169, 59, }, { 142, 150, 89, 46, 31, 6, 250, 116, 237, 99, 68, 114, 183, 155, 41, 37, }, { 143, 194, 105, 85, 240, 130, 242, 125, 57, 182, 231, 255, 17, 58, 232, 47, }, { 144, 65, 60, 21, 164, 165, 10, 154, 225, 113, 251, 63, 110, 24, 96, 233, }, { 145, 21, 12, 110, 75, 33, 2, 147, 53, 164, 88, 178, 200, 185, 161, 227, }, { 146, 233, 92, 227, 185, 110, 26, 136, 138, 24, 126, 230, 225, 153, 33, 253, }, { 147, 189, 108, 152, 86, 234, 18, 129, 94, 205, 221, 107, 71, 56, 224, 247, }, { 148, 210, 252, 58, 158, 240, 42, 190, 55, 163, 50, 78, 179, 217, 226, 193, }, { 149, 134, 204, 65, 113, 116, 34, 183, 227, 118, 145, 195, 21, 120, 35, 203, }, { 150, 122, 156, 204, 131, 59, 58, 172, 92, 202, 183, 151, 60, 88, 163, 213, }, { 151, 46, 172, 183, 108, 191, 50, 165, 136, 31, 20, 26, 154, 249, 98, 223, }, { 152, 164, 127, 75, 208, 15, 74, 210, 142, 22, 170, 221, 23, 89, 167, 185, }, { 153, 240, 79, 48, 63, 139, 66, 219, 90, 195, 9, 80, 177, 248, 102, 179, }, { 154, 12, 31, 189, 205, 196, 90, 192, 229, 127, 47, 4, 152, 216, 230, 173, }, { 155, 88, 47, 198, 34, 64, 82, 201, 49, 170, 140, 137, 62, 121, 39, 167, }, { 156, 55, 191, 100, 234, 90, 106, 246, 88, 196, 99, 172, 202, 152, 37, 145, }, { 157, 99, 143, 31, 5, 222, 98, 255, 140, 17, 192, 33, 108, 57, 228, 155, }, { 158, 159, 223, 146, 247, 145, 122, 228, 51, 173, 230, 117, 69, 25, 100, 133, }, { 159, 203, 239, 233, 24, 21, 114, 237, 231, 120, 69, 248, 227, 184, 165, 143, }, { 160, 90, 117, 18, 95, 223, 73, 233, 64, 224, 222, 54, 187, 93, 183, 202, }, { 161, 14, 69, 105, 176, 91, 65, 224, 148, 53, 125, 187, 29, 252, 118, 192, }, { 162, 242, 21, 228, 66, 20, 89, 251, 43, 137, 91, 239, 52, 220, 246, 222, }, { 163, 166, 37, 159, 173, 144, 81, 242, 255, 92, 248, 98, 146, 125, 55, 212, }, { 164, 201, 181, 61, 101, 138, 105, 205, 150, 50, 23, 71, 102, 156, 53, 226, }, { 165, 157, 133, 70, 138, 14, 97, 196, 66, 231, 180, 202, 192, 61, 244, 232, }, { 166, 97, 213, 203, 120, 65, 121, 223, 253, 91, 146, 158, 233, 29, 116, 246, }, { 167, 53, 229, 176, 151, 197, 113, 214, 41, 142, 49, 19, 79, 188, 181, 252, }, { 168, 191, 54, 76, 43, 117, 9, 161, 47, 135, 143, 212, 194, 28, 112, 154, }, { 169, 235, 6, 55, 196, 241, 1, 168, 251, 82, 44, 89, 100, 189, 177, 144, }, { 170, 23, 86, 186, 54, 190, 25, 179, 68, 238, 10, 13, 77, 157, 49, 142, }, { 171, 67, 102, 193, 217, 58, 17, 186, 144, 59, 169, 128, 235, 60, 240, 132, }, { 172, 44, 246, 99, 17, 32, 41, 133, 249, 85, 70, 165, 31, 221, 242, 178, }, { 173, 120, 198, 24, 254, 164, 33, 140, 45, 128, 229, 40, 185, 124, 51, 184, }, { 174, 132, 150, 149, 12, 235, 57, 151, 146, 60, 195, 124, 144, 92, 179, 166, }, { 175, 208, 166, 238, 227, 111, 49, 158, 70, 233, 96, 241, 54, 253, 114, 172, }, { 176, 83, 243, 174, 183, 72, 201, 121, 158, 46, 124, 49, 73, 223, 250, 106, }, { 177, 7, 195, 213, 88, 204, 193, 112, 74, 251, 223, 188, 239, 126, 59, 96, }, { 178, 251, 147, 88, 170, 131, 217, 107, 245, 71, 249, 232, 198, 94, 187, 126, }, { 179, 175, 163, 35, 69, 7, 209, 98, 33, 146, 90, 101, 96, 255, 122, 116, }, { 180, 192, 51, 129, 141, 29, 233, 93, 72, 252, 181, 64, 148, 30, 120, 66, }, { 181, 148, 3, 250, 98, 153, 225, 84, 156, 41, 22, 205, 50, 191, 185, 72, }, { 182, 104, 83, 119, 144, 214, 249, 79, 35, 149, 48, 153, 27, 159, 57, 86, }, { 183, 60, 99, 12, 127, 82, 241, 70, 247, 64, 147, 20, 189, 62, 248, 92, }, { 184, 182, 176, 240, 195, 226, 137, 49, 241, 73, 45, 211, 48, 158, 61, 58, }, { 185, 226, 128, 139, 44, 102, 129, 56, 37, 156, 142, 94, 150, 63, 252, 48, }, { 186, 30, 208, 6, 222, 41, 153, 35, 154, 32, 168, 10, 191, 31, 124, 46, }, { 187, 74, 224, 125, 49, 173, 145, 42, 78, 245, 11, 135, 25, 190, 189, 36, }, { 188, 37, 112, 223, 249, 183, 169, 21, 39, 155, 228, 162, 237, 95, 191, 18, }, { 189, 113, 64, 164, 22, 51, 161, 28, 243, 78, 71, 47, 75, 254, 126, 24, }, { 190, 141, 16, 41, 228, 124, 185, 7, 76, 242, 97, 123, 98, 222, 254, 6, }, { 191, 217, 32, 82, 11, 248, 177, 14, 152, 39, 194, 246, 196, 127, 63, 12, }, { 192, 108, 231, 28, 106, 43, 207, 15, 193, 1, 148, 36, 210, 215, 218, 140, }, { 193, 56, 215, 103, 133, 175, 199, 6, 21, 212, 55, 169, 116, 118, 27, 134, }, { 194, 196, 135, 234, 119, 224, 223, 29, 170, 104, 17, 253, 93, 86, 155, 152, }, { 195, 144, 183, 145, 152, 100, 215, 20, 126, 189, 178, 112, 251, 247, 90, 146, }, { 196, 255, 39, 51, 80, 126, 239, 43, 23, 211, 93, 85, 15, 22, 88, 164, }, { 197, 171, 23, 72, 191, 250, 231, 34, 195, 6, 254, 216, 169, 183, 153, 174, }, { 198, 87, 71, 197, 77, 181, 255, 57, 124, 186, 216, 140, 128, 151, 25, 176, }, { 199, 3, 119, 190, 162, 49, 247, 48, 168, 111, 123, 1, 38, 54, 216, 186, }, { 200, 137, 164, 66, 30, 129, 143, 71, 174, 102, 197, 198, 171, 150, 29, 220, }, { 201, 221, 148, 57, 241, 5, 135, 78, 122, 179, 102, 75, 13, 55, 220, 214, }, { 202, 33, 196, 180, 3, 74, 159, 85, 197, 15, 64, 31, 36, 23, 92, 200, }, { 203, 117, 244, 207, 236, 206, 151, 92, 17, 218, 227, 146, 130, 182, 157, 194, }, { 204, 26, 100, 109, 36, 212, 175, 99, 120, 180, 12, 183, 118, 87, 159, 244, }, { 205, 78, 84, 22, 203, 80, 167, 106, 172, 97, 175, 58, 208, 246, 94, 254, }, { 206, 178, 4, 155, 57, 31, 191, 113, 19, 221, 137, 110, 249, 214, 222, 224, }, { 207, 230, 52, 224, 214, 155, 183, 120, 199, 8, 42, 227, 95, 119, 31, 234, }, { 208, 101, 97, 160, 130, 188, 79, 159, 31, 207, 54, 35, 32, 85, 151, 44, }, { 209, 49, 81, 219, 109, 56, 71, 150, 203, 26, 149, 174, 134, 244, 86, 38, }, { 210, 205, 1, 86, 159, 119, 95, 141, 116, 166, 179, 250, 175, 212, 214, 56, }, { 211, 153, 49, 45, 112, 243, 87, 132, 160, 115, 16, 119, 9, 117, 23, 50, }, { 212, 246, 161, 143, 184, 233, 111, 187, 201, 29, 255, 82, 253, 148, 21, 4, }, { 213, 162, 145, 244, 87, 109, 103, 178, 29, 200, 92, 223, 91, 53, 212, 14, }, { 214, 94, 193, 121, 165, 34, 127, 169, 162, 116, 122, 139, 114, 21, 84, 16, }, { 215, 10, 241, 2, 74, 166, 119, 160, 118, 161, 217, 6, 212, 180, 149, 26, }, { 216, 128, 34, 254, 246, 22, 15, 215, 112, 168, 103, 193, 89, 20, 80, 124, }, { 217, 212, 18, 133, 25, 146, 7, 222, 164, 125, 196, 76, 255, 181, 145, 118, }, { 218, 40, 66, 8, 235, 221, 31, 197, 27, 193, 226, 24, 214, 149, 17, 104, }, { 219, 124, 114, 115, 4, 89, 23, 204, 207, 20, 65, 149, 112, 52, 208, 98, }, { 220, 19, 226, 209, 204, 67, 47, 243, 166, 122, 174, 176, 132, 213, 210, 84, }, { 221, 71, 210, 170, 35, 199, 39, 250, 114, 175, 13, 61, 34, 116, 19, 94, }, { 222, 187, 130, 39, 209, 136, 63, 225, 205, 19, 43, 105, 11, 84, 147, 64, }, { 223, 239, 178, 92, 62, 12, 55, 232, 25, 198, 136, 228, 173, 245, 82, 74, }, { 224, 126, 40, 167, 121, 198, 12, 236, 190, 94, 19, 42, 245, 16, 64, 15, }, { 225, 42, 24, 220, 150, 66, 4, 229, 106, 139, 176, 167, 83, 177, 129, 5, }, { 226, 214, 72, 81, 100, 13, 28, 254, 213, 55, 150, 243, 122, 145, 1, 27, }, { 227, 130, 120, 42, 139, 137, 20, 247, 1, 226, 53, 126, 220, 48, 192, 17, }, { 228, 237, 232, 136, 67, 147, 44, 200, 104, 140, 218, 91, 40, 209, 194, 39, }, { 229, 185, 216, 243, 172, 23, 36, 193, 188, 89, 121, 214, 142, 112, 3, 45, }, { 230, 69, 136, 126, 94, 88, 60, 218, 3, 229, 95, 130, 167, 80, 131, 51, }, { 231, 17, 184, 5, 177, 220, 52, 211, 215, 48, 252, 15, 1, 241, 66, 57, }, { 232, 155, 107, 249, 13, 108, 76, 164, 209, 57, 66, 200, 140, 81, 135, 95, }, { 233, 207, 91, 130, 226, 232, 68, 173, 5, 236, 225, 69, 42, 240, 70, 85, }, { 234, 51, 11, 15, 16, 167, 92, 182, 186, 80, 199, 17, 3, 208, 198, 75, }, { 235, 103, 59, 116, 255, 35, 84, 191, 110, 133, 100, 156, 165, 113, 7, 65, }, { 236, 8, 171, 214, 55, 57, 108, 128, 7, 235, 139, 185, 81, 144, 5, 119, }, { 237, 92, 155, 173, 216, 189, 100, 137, 211, 62, 40, 52, 247, 49, 196, 125, }, { 238, 160, 203, 32, 42, 242, 124, 146, 108, 130, 14, 96, 222, 17, 68, 99, }, { 239, 244, 251, 91, 197, 118, 116, 155, 184, 87, 173, 237, 120, 176, 133, 105, }, { 240, 119, 174, 27, 145, 81, 140, 124, 96, 144, 177, 45, 7, 146, 13, 175, }, { 241, 35, 158, 96, 126, 213, 132, 117, 180, 69, 18, 160, 161, 51, 204, 165, }, { 242, 223, 206, 237, 140, 154, 156, 110, 11, 249, 52, 244, 136, 19, 76, 187, }, { 243, 139, 254, 150, 99, 30, 148, 103, 223, 44, 151, 121, 46, 178, 141, 177, }, { 244, 228, 110, 52, 171, 4, 172, 88, 182, 66, 120, 92, 218, 83, 143, 135, }, { 245, 176, 94, 79, 68, 128, 164, 81, 98, 151, 219, 209, 124, 242, 78, 141, }, { 246, 76, 14, 194, 182, 207, 188, 74, 221, 43, 253, 133, 85, 210, 206, 147, }, { 247, 24, 62, 185, 89, 75, 180, 67, 9, 254, 94, 8, 243, 115, 15, 153, }, { 248, 146, 237, 69, 229, 251, 204, 52, 15, 247, 224, 207, 126, 211, 202, 255, }, { 249, 198, 221, 62, 10, 127, 196, 61, 219, 34, 67, 66, 216, 114, 11, 245, }, { 250, 58, 141, 179, 248, 48, 220, 38, 100, 158, 101, 22, 241, 82, 139, 235, }, { 251, 110, 189, 200, 23, 180, 212, 47, 176, 75, 198, 155, 87, 243, 74, 225, }, { 252, 1, 45, 106, 223, 174, 236, 16, 217, 37, 41, 190, 163, 18, 72, 215, }, { 253, 85, 29, 17, 48, 42, 228, 25, 13, 240, 138, 51, 5, 179, 137, 221, }, { 254, 169, 77, 156, 194, 101, 252, 2, 178, 76, 172, 103, 44, 147, 9, 195, }, { 255, 253, 125, 231, 45, 225, 244, 11, 102, 153, 15, 234, 138, 50, 200, 201, }, }, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, { 251, 222, 224, 175, 16, 201, 246, 73, 190, 231, 110, 164, 106, 43, 156, 243, }, { 53, 127, 3, 157, 32, 81, 47, 146, 191, 13, 220, 139, 212, 86, 251, 37, }, { 206, 161, 227, 50, 48, 152, 217, 219, 1, 234, 178, 47, 190, 125, 103, 214, }, { 106, 254, 6, 249, 64, 162, 94, 231, 189, 26, 123, 213, 107, 172, 53, 74, }, { 145, 32, 230, 86, 80, 107, 168, 174, 3, 253, 21, 113, 1, 135, 169, 185, }, { 95, 129, 5, 100, 96, 243, 113, 117, 2, 23, 167, 94, 191, 250, 206, 111, }, { 164, 95, 229, 203, 112, 58, 135, 60, 188, 240, 201, 250, 213, 209, 82, 156, }, { 212, 63, 12, 49, 128, 135, 188, 13, 185, 52, 246, 105, 214, 155, 106, 148, }, { 47, 225, 236, 158, 144, 78, 74, 68, 7, 211, 152, 205, 188, 176, 246, 103, }, { 225, 64, 15, 172, 160, 214, 147, 159, 6, 57, 42, 226, 2, 205, 145, 177, }, { 26, 158, 239, 3, 176, 31, 101, 214, 184, 222, 68, 70, 104, 230, 13, 66, }, { 190, 193, 10, 200, 192, 37, 226, 234, 4, 46, 141, 188, 189, 55, 95, 222, }, { 69, 31, 234, 103, 208, 236, 20, 163, 186, 201, 227, 24, 215, 28, 195, 45, }, { 139, 190, 9, 85, 224, 116, 205, 120, 187, 35, 81, 55, 105, 97, 164, 251, }, { 112, 96, 233, 250, 240, 189, 59, 49, 5, 196, 63, 147, 3, 74, 56, 8, }, { 107, 126, 24, 98, 195, 205, 187, 26, 177, 104, 47, 210, 111, 245, 212, 235, }, { 144, 160, 248, 205, 211, 4, 77, 83, 15, 143, 65, 118, 5, 222, 72, 24, }, { 94, 1, 27, 255, 227, 156, 148, 136, 14, 101, 243, 89, 187, 163, 47, 206, }, { 165, 223, 251, 80, 243, 85, 98, 193, 176, 130, 157, 253, 209, 136, 179, 61, }, { 1, 128, 30, 155, 131, 111, 229, 253, 12, 114, 84, 7, 4, 89, 225, 161, }, { 250, 94, 254, 52, 147, 166, 19, 180, 178, 149, 58, 163, 110, 114, 125, 82, }, { 52, 255, 29, 6, 163, 62, 202, 111, 179, 127, 136, 140, 208, 15, 26, 132, }, { 207, 33, 253, 169, 179, 247, 60, 38, 13, 152, 230, 40, 186, 36, 134, 119, }, { 191, 65, 20, 83, 67, 74, 7, 23, 8, 92, 217, 187, 185, 110, 190, 127, }, { 68, 159, 244, 252, 83, 131, 241, 94, 182, 187, 183, 31, 211, 69, 34, 140, }, { 138, 62, 23, 206, 99, 27, 40, 133, 183, 81, 5, 48, 109, 56, 69, 90, }, { 113, 224, 247, 97, 115, 210, 222, 204, 9, 182, 107, 148, 7, 19, 217, 169, }, { 213, 191, 18, 170, 3, 232, 89, 240, 181, 70, 162, 110, 210, 194, 139, 53, }, { 46, 97, 242, 5, 19, 33, 175, 185, 11, 161, 204, 202, 184, 233, 23, 198, }, { 224, 192, 17, 55, 35, 185, 118, 98, 10, 75, 126, 229, 6, 148, 112, 16, }, { 27, 30, 241, 152, 51, 112, 128, 43, 180, 172, 16, 65, 108, 191, 236, 227, }, { 214, 252, 48, 196, 69, 89, 181, 52, 161, 208, 94, 103, 222, 41, 107, 21, }, { 45, 34, 208, 107, 85, 144, 67, 125, 31, 55, 48, 195, 180, 2, 247, 230, }, { 227, 131, 51, 89, 101, 8, 154, 166, 30, 221, 130, 236, 10, 127, 144, 48, }, { 24, 93, 211, 246, 117, 193, 108, 239, 160, 58, 236, 72, 96, 84, 12, 195, }, { 188, 2, 54, 61, 5, 251, 235, 211, 28, 202, 37, 178, 181, 133, 94, 95, }, { 71, 220, 214, 146, 21, 50, 29, 154, 162, 45, 75, 22, 223, 174, 194, 172, }, { 137, 125, 53, 160, 37, 170, 196, 65, 163, 199, 249, 57, 97, 211, 165, 122, }, { 114, 163, 213, 15, 53, 99, 50, 8, 29, 32, 151, 157, 11, 248, 57, 137, }, { 2, 195, 60, 245, 197, 222, 9, 57, 24, 228, 168, 14, 8, 178, 1, 129, }, { 249, 29, 220, 90, 213, 23, 255, 112, 166, 3, 198, 170, 98, 153, 157, 114, }, { 55, 188, 63, 104, 229, 143, 38, 171, 167, 233, 116, 133, 220, 228, 250, 164, }, { 204, 98, 223, 199, 245, 70, 208, 226, 25, 14, 26, 33, 182, 207, 102, 87, }, { 104, 61, 58, 12, 133, 124, 87, 222, 165, 254, 211, 219, 99, 30, 52, 203, }, { 147, 227, 218, 163, 149, 181, 161, 151, 27, 25, 189, 127, 9, 53, 168, 56, }, { 93, 66, 57, 145, 165, 45, 120, 76, 26, 243, 15, 80, 183, 72, 207, 238, }, { 166, 156, 217, 62, 181, 228, 142, 5, 164, 20, 97, 244, 221, 99, 83, 29, }, { 189, 130, 40, 166, 134, 148, 14, 46, 16, 184, 113, 181, 177, 220, 191, 254, }, { 70, 92, 200, 9, 150, 93, 248, 103, 174, 95, 31, 17, 219, 247, 35, 13, }, { 136, 253, 43, 59, 166, 197, 33, 188, 175, 181, 173, 62, 101, 138, 68, 219, }, { 115, 35, 203, 148, 182, 12, 215, 245, 17, 82, 195, 154, 15, 161, 216, 40, }, { 215, 124, 46, 95, 198, 54, 80, 201, 173, 162, 10, 96, 218, 112, 138, 180, }, { 44, 162, 206, 240, 214, 255, 166, 128, 19, 69, 100, 196, 176, 91, 22, 71, }, { 226, 3, 45, 194, 230, 103, 127, 91, 18, 175, 214, 235, 14, 38, 113, 145, }, { 25, 221, 205, 109, 246, 174, 137, 18, 172, 72, 184, 79, 100, 13, 237, 98, }, { 105, 189, 36, 151, 6, 19, 178, 35, 169, 140, 135, 220, 103, 71, 213, 106, }, { 146, 99, 196, 56, 22, 218, 68, 106, 23, 107, 233, 120, 13, 108, 73, 153, }, { 92, 194, 39, 10, 38, 66, 157, 177, 22, 129, 91, 87, 179, 17, 46, 79, }, { 167, 28, 199, 165, 54, 139, 107, 248, 168, 102, 53, 243, 217, 58, 178, 188, }, { 3, 67, 34, 110, 70, 177, 236, 196, 20, 150, 252, 9, 12, 235, 224, 32, }, { 248, 157, 194, 193, 86, 120, 26, 141, 170, 113, 146, 173, 102, 192, 124, 211, }, { 54, 60, 33, 243, 102, 224, 195, 86, 171, 155, 32, 130, 216, 189, 27, 5, }, { 205, 226, 193, 92, 118, 41, 53, 31, 21, 124, 78, 38, 178, 150, 135, 246, }, { 111, 59, 96, 75, 138, 178, 169, 104, 129, 99, 188, 206, 127, 82, 214, 42, }, { 148, 229, 128, 228, 154, 123, 95, 33, 63, 132, 210, 106, 21, 121, 74, 217, }, { 90, 68, 99, 214, 170, 227, 134, 250, 62, 110, 96, 69, 171, 4, 45, 15, }, { 161, 154, 131, 121, 186, 42, 112, 179, 128, 137, 14, 225, 193, 47, 177, 252, }, { 5, 197, 102, 178, 202, 16, 247, 143, 60, 121, 199, 27, 20, 254, 227, 96, }, { 254, 27, 134, 29, 218, 217, 1, 198, 130, 158, 169, 191, 126, 213, 127, 147, }, { 48, 186, 101, 47, 234, 65, 216, 29, 131, 116, 27, 144, 192, 168, 24, 69, }, { 203, 100, 133, 128, 250, 136, 46, 84, 61, 147, 117, 52, 170, 131, 132, 182, }, { 187, 4, 108, 122, 10, 53, 21, 101, 56, 87, 74, 167, 169, 201, 188, 190, }, { 64, 218, 140, 213, 26, 252, 227, 44, 134, 176, 36, 3, 195, 226, 32, 77, }, { 142, 123, 111, 231, 42, 100, 58, 247, 135, 90, 150, 44, 125, 159, 71, 155, }, { 117, 165, 143, 72, 58, 173, 204, 190, 57, 189, 248, 136, 23, 180, 219, 104, }, { 209, 250, 106, 131, 74, 151, 75, 130, 133, 77, 49, 114, 194, 101, 137, 244, }, { 42, 36, 138, 44, 90, 94, 189, 203, 59, 170, 95, 214, 168, 78, 21, 7, }, { 228, 133, 105, 30, 106, 198, 100, 16, 58, 64, 237, 249, 22, 51, 114, 209, }, { 31, 91, 137, 177, 122, 15, 146, 89, 132, 167, 131, 93, 124, 24, 238, 34, }, { 4, 69, 120, 41, 73, 127, 18, 114, 48, 11, 147, 28, 16, 167, 2, 193, }, { 255, 155, 152, 134, 89, 182, 228, 59, 142, 236, 253, 184, 122, 140, 158, 50, }, { 49, 58, 123, 180, 105, 46, 61, 224, 143, 6, 79, 151, 196, 241, 249, 228, }, { 202, 228, 155, 27, 121, 231, 203, 169, 49, 225, 33, 51, 174, 218, 101, 23, }, { 110, 187, 126, 208, 9, 221, 76, 149, 141, 17, 232, 201, 123, 11, 55, 139, }, { 149, 101, 158, 127, 25, 20, 186, 220, 51, 246, 134, 109, 17, 32, 171, 120, }, { 91, 196, 125, 77, 41, 140, 99, 7, 50, 28, 52, 66, 175, 93, 204, 174, }, { 160, 26, 157, 226, 57, 69, 149, 78, 140, 251, 90, 230, 197, 118, 80, 93, }, { 208, 122, 116, 24, 201, 248, 174, 127, 137, 63, 101, 117, 198, 60, 104, 85, }, { 43, 164, 148, 183, 217, 49, 88, 54, 55, 216, 11, 209, 172, 23, 244, 166, }, { 229, 5, 119, 133, 233, 169, 129, 237, 54, 50, 185, 254, 18, 106, 147, 112, }, { 30, 219, 151, 42, 249, 96, 119, 164, 136, 213, 215, 90, 120, 65, 15, 131, }, { 186, 132, 114, 225, 137, 90, 240, 152, 52, 37, 30, 160, 173, 144, 93, 31, }, { 65, 90, 146, 78, 153, 147, 6, 209, 138, 194, 112, 4, 199, 187, 193, 236, }, { 143, 251, 113, 124, 169, 11, 223, 10, 139, 40, 194, 43, 121, 198, 166, 58, }, { 116, 37, 145, 211, 185, 194, 41, 67, 53, 207, 172, 143, 19, 237, 58, 201, }, { 185, 199, 80, 143, 207, 235, 28, 92, 32, 179, 226, 169, 161, 123, 189, 63, }, { 66, 25, 176, 32, 223, 34, 234, 21, 158, 84, 140, 13, 203, 80, 33, 204, }, { 140, 184, 83, 18, 239, 186, 51, 206, 159, 190, 62, 34, 117, 45, 70, 26, }, { 119, 102, 179, 189, 255, 115, 197, 135, 33, 89, 80, 134, 31, 6, 218, 233, }, { 211, 57, 86, 118, 143, 73, 66, 187, 157, 169, 153, 124, 202, 215, 136, 117, }, { 40, 231, 182, 217, 159, 128, 180, 242, 35, 78, 247, 216, 160, 252, 20, 134, }, { 230, 70, 85, 235, 175, 24, 109, 41, 34, 164, 69, 247, 30, 129, 115, 80, }, { 29, 152, 181, 68, 191, 209, 155, 96, 156, 67, 43, 83, 116, 170, 239, 163, }, { 109, 248, 92, 190, 79, 108, 160, 81, 153, 135, 20, 192, 119, 224, 215, 171, }, { 150, 38, 188, 17, 95, 165, 86, 24, 39, 96, 122, 100, 29, 203, 75, 88, }, { 88, 135, 95, 35, 111, 61, 143, 195, 38, 138, 200, 75, 163, 182, 44, 142, }, { 163, 89, 191, 140, 127, 244, 121, 138, 152, 109, 166, 239, 201, 157, 176, 125, }, { 7, 6, 90, 71, 15, 206, 254, 182, 36, 157, 111, 21, 28, 76, 226, 225, }, { 252, 216, 186, 232, 31, 7, 8, 255, 154, 122, 1, 177, 118, 103, 126, 18, }, { 50, 121, 89, 218, 47, 159, 209, 36, 155, 144, 179, 158, 200, 26, 25, 196, }, { 201, 167, 185, 117, 63, 86, 39, 109, 37, 119, 221, 58, 162, 49, 133, 55, }, { 210, 185, 72, 237, 12, 38, 167, 70, 145, 219, 205, 123, 206, 142, 105, 212, }, { 41, 103, 168, 66, 28, 239, 81, 15, 47, 60, 163, 223, 164, 165, 245, 39, }, { 231, 198, 75, 112, 44, 119, 136, 212, 46, 214, 17, 240, 26, 216, 146, 241, }, { 28, 24, 171, 223, 60, 190, 126, 157, 144, 49, 127, 84, 112, 243, 14, 2, }, { 184, 71, 78, 20, 76, 132, 249, 161, 44, 193, 182, 174, 165, 34, 92, 158, }, { 67, 153, 174, 187, 92, 77, 15, 232, 146, 38, 216, 10, 207, 9, 192, 109, }, { 141, 56, 77, 137, 108, 213, 214, 51, 147, 204, 106, 37, 113, 116, 167, 187, }, { 118, 230, 173, 38, 124, 28, 32, 122, 45, 43, 4, 129, 27, 95, 59, 72, }, { 6, 134, 68, 220, 140, 161, 27, 75, 40, 239, 59, 18, 24, 21, 3, 64, }, { 253, 88, 164, 115, 156, 104, 237, 2, 150, 8, 85, 182, 114, 62, 159, 179, }, { 51, 249, 71, 65, 172, 240, 52, 217, 151, 226, 231, 153, 204, 67, 248, 101, }, { 200, 39, 167, 238, 188, 57, 194, 144, 41, 5, 137, 61, 166, 104, 100, 150, }, { 108, 120, 66, 37, 204, 3, 69, 172, 149, 245, 64, 199, 115, 185, 54, 10, }, { 151, 166, 162, 138, 220, 202, 179, 229, 43, 18, 46, 99, 25, 146, 170, 249, }, { 89, 7, 65, 184, 236, 82, 106, 62, 42, 248, 156, 76, 167, 239, 205, 47, }, { 162, 217, 161, 23, 252, 155, 156, 119, 148, 31, 242, 232, 205, 196, 81, 220, }, { 222, 118, 192, 150, 215, 167, 145, 208, 193, 198, 187, 95, 254, 164, 111, 84, }, { 37, 168, 32, 57, 199, 110, 103, 153, 127, 33, 213, 251, 148, 143, 243, 167, }, { 235, 9, 195, 11, 247, 246, 190, 66, 126, 203, 103, 212, 42, 242, 148, 113, }, { 16, 215, 35, 164, 231, 63, 72, 11, 192, 44, 9, 112, 64, 217, 8, 130, }, { 180, 136, 198, 111, 151, 5, 207, 55, 124, 220, 192, 138, 149, 8, 90, 30, }, { 79, 86, 38, 192, 135, 204, 57, 126, 194, 59, 174, 46, 255, 35, 198, 237, }, { 129, 247, 197, 242, 183, 84, 224, 165, 195, 209, 28, 1, 65, 94, 161, 59, }, { 122, 41, 37, 93, 167, 157, 22, 236, 125, 54, 114, 165, 43, 117, 61, 200, }, { 10, 73, 204, 167, 87, 32, 45, 221, 120, 242, 77, 54, 40, 63, 5, 192, }, { 241, 151, 44, 8, 71, 233, 219, 148, 198, 21, 35, 146, 66, 20, 153, 51, }, { 63, 54, 207, 58, 119, 113, 2, 79, 199, 255, 145, 189, 252, 105, 254, 229, }, { 196, 232, 47, 149, 103, 184, 244, 6, 121, 24, 255, 25, 150, 66, 98, 22, }, { 96, 183, 202, 94, 23, 130, 115, 58, 197, 232, 54, 227, 67, 147, 48, 138, }, { 155, 105, 42, 241, 7, 75, 133, 115, 123, 15, 88, 71, 41, 184, 172, 121, }, { 85, 200, 201, 195, 55, 211, 92, 168, 122, 229, 234, 104, 151, 197, 203, 175, }, { 174, 22, 41, 108, 39, 26, 170, 225, 196, 2, 132, 204, 253, 238, 87, 92, }, { 181, 8, 216, 244, 20, 106, 42, 202, 112, 174, 148, 141, 145, 81, 187, 191, }, { 78, 214, 56, 91, 4, 163, 220, 131, 206, 73, 250, 41, 251, 122, 39, 76, }, { 128, 119, 219, 105, 52, 59, 5, 88, 207, 163, 72, 6, 69, 7, 64, 154, }, { 123, 169, 59, 198, 36, 242, 243, 17, 113, 68, 38, 162, 47, 44, 220, 105, }, { 223, 246, 222, 13, 84, 200, 116, 45, 205, 180, 239, 88, 250, 253, 142, 245, }, { 36, 40, 62, 162, 68, 1, 130, 100, 115, 83, 129, 252, 144, 214, 18, 6, }, { 234, 137, 221, 144, 116, 153, 91, 191, 114, 185, 51, 211, 46, 171, 117, 208, }, { 17, 87, 61, 63, 100, 80, 173, 246, 204, 94, 93, 119, 68, 128, 233, 35, }, { 97, 55, 212, 197, 148, 237, 150, 199, 201, 154, 98, 228, 71, 202, 209, 43, }, { 154, 233, 52, 106, 132, 36, 96, 142, 119, 125, 12, 64, 45, 225, 77, 216, }, { 84, 72, 215, 88, 180, 188, 185, 85, 118, 151, 190, 111, 147, 156, 42, 14, }, { 175, 150, 55, 247, 164, 117, 79, 28, 200, 112, 208, 203, 249, 183, 182, 253, }, { 11, 201, 210, 60, 212, 79, 200, 32, 116, 128, 25, 49, 44, 102, 228, 97, }, { 240, 23, 50, 147, 196, 134, 62, 105, 202, 103, 119, 149, 70, 77, 120, 146, }, { 62, 182, 209, 161, 244, 30, 231, 178, 203, 141, 197, 186, 248, 48, 31, 68, }, { 197, 104, 49, 14, 228, 215, 17, 251, 117, 106, 171, 30, 146, 27, 131, 183, }, { 8, 138, 240, 82, 146, 254, 36, 228, 96, 22, 229, 56, 32, 141, 4, 65, }, { 243, 84, 16, 253, 130, 55, 210, 173, 222, 241, 139, 156, 74, 166, 152, 178, }, { 61, 245, 243, 207, 178, 175, 11, 118, 223, 27, 57, 179, 244, 219, 255, 100, }, { 198, 43, 19, 96, 162, 102, 253, 63, 97, 252, 87, 23, 158, 240, 99, 151, }, { 98, 116, 246, 171, 210, 92, 122, 3, 221, 12, 158, 237, 75, 33, 49, 11, }, { 153, 170, 22, 4, 194, 149, 140, 74, 99, 235, 240, 73, 33, 10, 173, 248, }, { 87, 11, 245, 54, 242, 13, 85, 145, 98, 1, 66, 102, 159, 119, 202, 46, }, { 172, 213, 21, 153, 226, 196, 163, 216, 220, 230, 44, 194, 245, 92, 86, 221, }, { 220, 181, 252, 99, 18, 121, 152, 233, 217, 34, 19, 81, 246, 22, 110, 213, }, { 39, 107, 28, 204, 2, 176, 110, 160, 103, 197, 125, 245, 156, 61, 242, 38, }, { 233, 202, 255, 254, 50, 40, 183, 123, 102, 47, 207, 218, 34, 64, 149, 240, }, { 18, 20, 31, 81, 34, 225, 65, 50, 216, 200, 161, 126, 72, 107, 9, 3, }, { 182, 75, 250, 154, 82, 219, 198, 14, 100, 56, 104, 132, 157, 186, 91, 159, }, { 77, 149, 26, 53, 66, 18, 48, 71, 218, 223, 6, 32, 247, 145, 199, 108, }, { 131, 52, 249, 7, 114, 138, 233, 156, 219, 53, 180, 15, 73, 236, 160, 186, }, { 120, 234, 25, 168, 98, 67, 31, 213, 101, 210, 218, 171, 35, 199, 60, 73, }, { 99, 244, 232, 48, 81, 51, 159, 254, 209, 126, 202, 234, 79, 120, 208, 170, }, { 152, 42, 8, 159, 65, 250, 105, 183, 111, 153, 164, 78, 37, 83, 76, 89, }, { 86, 139, 235, 173, 113, 98, 176, 108, 110, 115, 22, 97, 155, 46, 43, 143, }, { 173, 85, 11, 2, 97, 171, 70, 37, 208, 148, 120, 197, 241, 5, 183, 124, }, { 9, 10, 238, 201, 17, 145, 193, 25, 108, 100, 177, 63, 36, 212, 229, 224, }, { 242, 212, 14, 102, 1, 88, 55, 80, 210, 131, 223, 155, 78, 255, 121, 19, }, { 60, 117, 237, 84, 49, 192, 238, 139, 211, 105, 109, 180, 240, 130, 30, 197, }, { 199, 171, 13, 251, 33, 9, 24, 194, 109, 142, 3, 16, 154, 169, 130, 54, }, { 183, 203, 228, 1, 209, 180, 35, 243, 104, 74, 60, 131, 153, 227, 186, 62, }, { 76, 21, 4, 174, 193, 125, 213, 186, 214, 173, 82, 39, 243, 200, 38, 205, }, { 130, 180, 231, 156, 241, 229, 12, 97, 215, 71, 224, 8, 77, 181, 65, 27, }, { 121, 106, 7, 51, 225, 44, 250, 40, 105, 160, 142, 172, 39, 158, 221, 232, }, { 221, 53, 226, 248, 145, 22, 125, 20, 213, 80, 71, 86, 242, 79, 143, 116, }, { 38, 235, 2, 87, 129, 223, 139, 93, 107, 183, 41, 242, 152, 100, 19, 135, }, { 232, 74, 225, 101, 177, 71, 82, 134, 106, 93, 155, 221, 38, 25, 116, 81, }, { 19, 148, 1, 202, 161, 142, 164, 207, 212, 186, 245, 121, 76, 50, 232, 162, }, { 177, 77, 160, 221, 93, 21, 56, 184, 64, 165, 7, 145, 129, 246, 185, 126, }, { 74, 147, 64, 114, 77, 220, 206, 241, 254, 66, 105, 53, 235, 221, 37, 141, }, { 132, 50, 163, 64, 125, 68, 23, 42, 255, 168, 219, 26, 85, 160, 66, 91, }, { 127, 236, 67, 239, 109, 141, 225, 99, 65, 79, 181, 190, 63, 139, 222, 168, }, { 219, 179, 166, 36, 29, 183, 102, 95, 253, 191, 124, 68, 234, 90, 140, 52, }, { 32, 109, 70, 139, 13, 126, 144, 22, 67, 88, 18, 224, 128, 113, 16, 199, }, { 238, 204, 165, 185, 61, 230, 73, 205, 66, 178, 160, 207, 62, 12, 119, 17, }, { 21, 18, 69, 22, 45, 47, 191, 132, 252, 85, 206, 107, 84, 39, 235, 226, }, { 101, 114, 172, 236, 221, 146, 132, 181, 249, 145, 241, 248, 87, 109, 211, 234, }, { 158, 172, 76, 67, 205, 91, 114, 252, 71, 118, 159, 92, 61, 70, 79, 25, }, { 80, 13, 175, 113, 253, 195, 171, 39, 70, 156, 45, 115, 131, 59, 40, 207, }, { 171, 211, 79, 222, 237, 10, 93, 110, 248, 123, 67, 215, 233, 16, 180, 60, }, { 15, 140, 170, 21, 157, 48, 218, 82, 68, 139, 138, 45, 60, 193, 230, 160, }, { 244, 82, 74, 186, 141, 249, 44, 27, 250, 108, 228, 137, 86, 234, 122, 83, }, { 58, 243, 169, 136, 189, 97, 245, 192, 251, 134, 86, 166, 232, 151, 29, 133, }, { 193, 45, 73, 39, 173, 168, 3, 137, 69, 97, 56, 2, 130, 188, 129, 118, }, { 218, 51, 184, 191, 158, 216, 131, 162, 241, 205, 40, 67, 238, 3, 109, 149, }, { 33, 237, 88, 16, 142, 17, 117, 235, 79, 42, 70, 231, 132, 40, 241, 102, }, { 239, 76, 187, 34, 190, 137, 172, 48, 78, 192, 244, 200, 58, 85, 150, 176, }, { 20, 146, 91, 141, 174, 64, 90, 121, 240, 39, 154, 108, 80, 126, 10, 67, }, { 176, 205, 190, 70, 222, 122, 221, 69, 76, 215, 83, 150, 133, 175, 88, 223, }, { 75, 19, 94, 233, 206, 179, 43, 12, 242, 48, 61, 50, 239, 132, 196, 44, }, { 133, 178, 189, 219, 254, 43, 242, 215, 243, 218, 143, 29, 81, 249, 163, 250, }, { 126, 108, 93, 116, 238, 226, 4, 158, 77, 61, 225, 185, 59, 210, 63, 9, }, { 14, 12, 180, 142, 30, 95, 63, 175, 72, 249, 222, 42, 56, 152, 7, 1, }, { 245, 210, 84, 33, 14, 150, 201, 230, 246, 30, 176, 142, 82, 179, 155, 242, }, { 59, 115, 183, 19, 62, 14, 16, 61, 247, 244, 2, 161, 236, 206, 252, 36, }, { 192, 173, 87, 188, 46, 199, 230, 116, 73, 19, 108, 5, 134, 229, 96, 215, }, { 100, 242, 178, 119, 94, 253, 97, 72, 245, 227, 165, 255, 83, 52, 50, 75, }, { 159, 44, 82, 216, 78, 52, 151, 1, 75, 4, 203, 91, 57, 31, 174, 184, }, { 81, 141, 177, 234, 126, 172, 78, 218, 74, 238, 121, 116, 135, 98, 201, 110, }, { 170, 83, 81, 69, 110, 101, 184, 147, 244, 9, 23, 208, 237, 73, 85, 157, }, { 103, 177, 144, 25, 24, 76, 141, 140, 225, 117, 89, 246, 95, 223, 210, 107, }, { 156, 111, 112, 182, 8, 133, 123, 197, 95, 146, 55, 82, 53, 244, 78, 152, }, { 82, 206, 147, 132, 56, 29, 162, 30, 94, 120, 133, 125, 139, 137, 41, 78, }, { 169, 16, 115, 43, 40, 212, 84, 87, 224, 159, 235, 217, 225, 162, 181, 189, }, { 13, 79, 150, 224, 88, 238, 211, 107, 92, 111, 34, 35, 52, 115, 231, 33, }, { 246, 145, 118, 79, 72, 39, 37, 34, 226, 136, 76, 135, 94, 88, 123, 210, }, { 56, 48, 149, 125, 120, 191, 252, 249, 227, 98, 254, 168, 224, 37, 28, 4, }, { 195, 238, 117, 210, 104, 118, 10, 176, 93, 133, 144, 12, 138, 14, 128, 247, }, { 179, 142, 156, 40, 152, 203, 49, 129, 88, 65, 175, 159, 137, 68, 184, 255, }, { 72, 80, 124, 135, 136, 2, 199, 200, 230, 166, 193, 59, 227, 111, 36, 12, }, { 134, 241, 159, 181, 184, 154, 30, 19, 231, 76, 115, 20, 93, 18, 67, 218, }, { 125, 47, 127, 26, 168, 83, 232, 90, 89, 171, 29, 176, 55, 57, 223, 41, }, { 217, 112, 154, 209, 216, 105, 111, 102, 229, 91, 212, 74, 226, 232, 141, 181, }, { 34, 174, 122, 126, 200, 160, 153, 47, 91, 188, 186, 238, 136, 195, 17, 70, }, { 236, 15, 153, 76, 248, 56, 64, 244, 90, 86, 8, 193, 54, 190, 118, 144, }, { 23, 209, 121, 227, 232, 241, 182, 189, 228, 177, 102, 101, 92, 149, 234, 99, }, { 12, 207, 136, 123, 219, 129, 54, 150, 80, 29, 118, 36, 48, 42, 6, 128, }, { 247, 17, 104, 212, 203, 72, 192, 223, 238, 250, 24, 128, 90, 1, 154, 115, }, { 57, 176, 139, 230, 251, 208, 25, 4, 239, 16, 170, 175, 228, 124, 253, 165, }, { 194, 110, 107, 73, 235, 25, 239, 77, 81, 247, 196, 11, 142, 87, 97, 86, }, { 102, 49, 142, 130, 155, 35, 104, 113, 237, 7, 13, 241, 91, 134, 51, 202, }, { 157, 239, 110, 45, 139, 234, 158, 56, 83, 224, 99, 85, 49, 173, 175, 57, }, { 83, 78, 141, 31, 187, 114, 71, 227, 82, 10, 209, 122, 143, 208, 200, 239, }, { 168, 144, 109, 176, 171, 187, 177, 170, 236, 237, 191, 222, 229, 251, 84, 28, }, { 216, 240, 132, 74, 91, 6, 138, 155, 233, 41, 128, 77, 230, 177, 108, 20, }, { 35, 46, 100, 229, 75, 207, 124, 210, 87, 206, 238, 233, 140, 154, 240, 231, }, { 237, 143, 135, 215, 123, 87, 165, 9, 86, 36, 92, 198, 50, 231, 151, 49, }, { 22, 81, 103, 120, 107, 158, 83, 64, 232, 195, 50, 98, 88, 204, 11, 194, }, { 178, 14, 130, 179, 27, 164, 212, 124, 84, 51, 251, 152, 141, 29, 89, 94, }, { 73, 208, 98, 28, 11, 109, 34, 53, 234, 212, 149, 60, 231, 54, 197, 173, }, { 135, 113, 129, 46, 59, 245, 251, 238, 235, 62, 39, 19, 89, 75, 162, 123, }, { 124, 175, 97, 129, 43, 60, 13, 167, 85, 217, 73, 183, 51, 96, 62, 136, }, }, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, { 1, 111, 90, 61, 191, 173, 238, 171, 241, 196, 175, 2, 214, 28, 137, 242, }, { 2, 222, 180, 122, 189, 153, 31, 149, 33, 75, 157, 4, 111, 56, 209, 39, }, { 3, 177, 238, 71, 2, 52, 241, 62, 208, 143, 50, 6, 185, 36, 88, 213, }, { 4, 127, 171, 244, 185, 241, 62, 233, 66, 150, 249, 8, 222, 112, 97, 78, }, { 5, 16, 241, 201, 6, 92, 208, 66, 179, 82, 86, 10, 8, 108, 232, 188, }, { 6, 161, 31, 142, 4, 104, 33, 124, 99, 221, 100, 12, 177, 72, 176, 105, }, { 7, 206, 69, 179, 187, 197, 207, 215, 146, 25, 203, 14, 103, 84, 57, 155, }, { 8, 254, 149, 43, 177, 33, 124, 17, 132, 239, 49, 16, 127, 224, 194, 156, }, { 9, 145, 207, 22, 14, 140, 146, 186, 117, 43, 158, 18, 169, 252, 75, 110, }, { 10, 32, 33, 81, 12, 184, 99, 132, 165, 164, 172, 20, 16, 216, 19, 187, }, { 11, 79, 123, 108, 179, 21, 141, 47, 84, 96, 3, 22, 198, 196, 154, 73, }, { 12, 129, 62, 223, 8, 208, 66, 248, 198, 121, 200, 24, 161, 144, 163, 210, }, { 13, 238, 100, 226, 183, 125, 172, 83, 55, 189, 103, 26, 119, 140, 42, 32, }, { 14, 95, 138, 165, 181, 73, 93, 109, 231, 50, 85, 28, 206, 168, 114, 245, }, { 15, 48, 208, 152, 10, 228, 179, 198, 22, 246, 250, 30, 24, 180, 251, 7, }, { 16, 63, 233, 86, 161, 66, 248, 34, 203, 29, 98, 32, 254, 3, 71, 251, }, { 17, 80, 179, 107, 30, 239, 22, 137, 58, 217, 205, 34, 40, 31, 206, 9, }, { 18, 225, 93, 44, 28, 219, 231, 183, 234, 86, 255, 36, 145, 59, 150, 220, }, { 19, 142, 7, 17, 163, 118, 9, 28, 27, 146, 80, 38, 71, 39, 31, 46, }, { 20, 64, 66, 162, 24, 179, 198, 203, 137, 139, 155, 40, 32, 115, 38, 181, }, { 21, 47, 24, 159, 167, 30, 40, 96, 120, 79, 52, 42, 246, 111, 175, 71, }, { 22, 158, 246, 216, 165, 42, 217, 94, 168, 192, 6, 44, 79, 75, 247, 146, }, { 23, 241, 172, 229, 26, 135, 55, 245, 89, 4, 169, 46, 153, 87, 126, 96, }, { 24, 193, 124, 125, 16, 99, 132, 51, 79, 242, 83, 48, 129, 227, 133, 103, }, { 25, 174, 38, 64, 175, 206, 106, 152, 190, 54, 252, 50, 87, 255, 12, 149, }, { 26, 31, 200, 7, 173, 250, 155, 166, 110, 185, 206, 52, 238, 219, 84, 64, }, { 27, 112, 146, 58, 18, 87, 117, 13, 159, 125, 97, 54, 56, 199, 221, 178, }, { 28, 190, 215, 137, 169, 146, 186, 218, 13, 100, 170, 56, 95, 147, 228, 41, }, { 29, 209, 141, 180, 22, 63, 84, 113, 252, 160, 5, 58, 137, 143, 109, 219, }, { 30, 96, 99, 243, 20, 11, 165, 79, 44, 47, 55, 60, 48, 171, 53, 14, }, { 31, 15, 57, 206, 171, 166, 75, 228, 221, 235, 152, 62, 230, 183, 188, 252, }, { 32, 126, 17, 172, 129, 132, 51, 68, 85, 58, 196, 64, 63, 6, 142, 53, }, { 33, 17, 75, 145, 62, 41, 221, 239, 164, 254, 107, 66, 233, 26, 7, 199, }, { 34, 160, 165, 214, 60, 29, 44, 209, 116, 113, 89, 68, 80, 62, 95, 18, }, { 35, 207, 255, 235, 131, 176, 194, 122, 133, 181, 246, 70, 134, 34, 214, 224, }, { 36, 1, 186, 88, 56, 117, 13, 173, 23, 172, 61, 72, 225, 118, 239, 123, }, { 37, 110, 224, 101, 135, 216, 227, 6, 230, 104, 146, 74, 55, 106, 102, 137, }, { 38, 223, 14, 34, 133, 236, 18, 56, 54, 231, 160, 76, 142, 78, 62, 92, }, { 39, 176, 84, 31, 58, 65, 252, 147, 199, 35, 15, 78, 88, 82, 183, 174, }, { 40, 128, 132, 135, 48, 165, 79, 85, 209, 213, 245, 80, 64, 230, 76, 169, }, { 41, 239, 222, 186, 143, 8, 161, 254, 32, 17, 90, 82, 150, 250, 197, 91, }, { 42, 94, 48, 253, 141, 60, 80, 192, 240, 158, 104, 84, 47, 222, 157, 142, }, { 43, 49, 106, 192, 50, 145, 190, 107, 1, 90, 199, 86, 249, 194, 20, 124, }, { 44, 255, 47, 115, 137, 84, 113, 188, 147, 67, 12, 88, 158, 150, 45, 231, }, { 45, 144, 117, 78, 54, 249, 159, 23, 98, 135, 163, 90, 72, 138, 164, 21, }, { 46, 33, 155, 9, 52, 205, 110, 41, 178, 8, 145, 92, 241, 174, 252, 192, }, { 47, 78, 193, 52, 139, 96, 128, 130, 67, 204, 62, 94, 39, 178, 117, 50, }, { 48, 65, 248, 250, 32, 198, 203, 102, 158, 39, 166, 96, 193, 5, 201, 206, }, { 49, 46, 162, 199, 159, 107, 37, 205, 111, 227, 9, 98, 23, 25, 64, 60, }, { 50, 159, 76, 128, 157, 95, 212, 243, 191, 108, 59, 100, 174, 61, 24, 233, }, { 51, 240, 22, 189, 34, 242, 58, 88, 78, 168, 148, 102, 120, 33, 145, 27, }, { 52, 62, 83, 14, 153, 55, 245, 143, 220, 177, 95, 104, 31, 117, 168, 128, }, { 53, 81, 9, 51, 38, 154, 27, 36, 45, 117, 240, 106, 201, 105, 33, 114, }, { 54, 224, 231, 116, 36, 174, 234, 26, 253, 250, 194, 108, 112, 77, 121, 167, }, { 55, 143, 189, 73, 155, 3, 4, 177, 12, 62, 109, 110, 166, 81, 240, 85, }, { 56, 191, 109, 209, 145, 231, 183, 119, 26, 200, 151, 112, 190, 229, 11, 82, }, { 57, 208, 55, 236, 46, 74, 89, 220, 235, 12, 56, 114, 104, 249, 130, 160, }, { 58, 97, 217, 171, 44, 126, 168, 226, 59, 131, 10, 116, 209, 221, 218, 117, }, { 59, 14, 131, 150, 147, 211, 70, 73, 202, 71, 165, 118, 7, 193, 83, 135, }, { 60, 192, 198, 37, 40, 22, 137, 158, 88, 94, 110, 120, 96, 149, 106, 28, }, { 61, 175, 156, 24, 151, 187, 103, 53, 169, 154, 193, 122, 182, 137, 227, 238, }, { 62, 30, 114, 95, 149, 143, 150, 11, 121, 21, 243, 124, 15, 173, 187, 59, }, { 63, 113, 40, 98, 42, 34, 120, 160, 136, 209, 92, 126, 217, 177, 50, 201, }, { 64, 252, 34, 155, 193, 203, 102, 136, 170, 116, 75, 128, 126, 12, 223, 106, }, { 65, 147, 120, 166, 126, 102, 136, 35, 91, 176, 228, 130, 168, 16, 86, 152, }, { 66, 34, 150, 225, 124, 82, 121, 29, 139, 63, 214, 132, 17, 52, 14, 77, }, { 67, 77, 204, 220, 195, 255, 151, 182, 122, 251, 121, 134, 199, 40, 135, 191, }, { 68, 131, 137, 111, 120, 58, 88, 97, 232, 226, 178, 136, 160, 124, 190, 36, }, { 69, 236, 211, 82, 199, 151, 182, 202, 25, 38, 29, 138, 118, 96, 55, 214, }, { 70, 93, 61, 21, 197, 163, 71, 244, 201, 169, 47, 140, 207, 68, 111, 3, }, { 71, 50, 103, 40, 122, 14, 169, 95, 56, 109, 128, 142, 25, 88, 230, 241, }, { 72, 2, 183, 176, 112, 234, 26, 153, 46, 155, 122, 144, 1, 236, 29, 246, }, { 73, 109, 237, 141, 207, 71, 244, 50, 223, 95, 213, 146, 215, 240, 148, 4, }, { 74, 220, 3, 202, 205, 115, 5, 12, 15, 208, 231, 148, 110, 212, 204, 209, }, { 75, 179, 89, 247, 114, 222, 235, 167, 254, 20, 72, 150, 184, 200, 69, 35, }, { 76, 125, 28, 68, 201, 27, 36, 112, 108, 13, 131, 152, 223, 156, 124, 184, }, { 77, 18, 70, 121, 118, 182, 202, 219, 157, 201, 44, 154, 9, 128, 245, 74, }, { 78, 163, 168, 62, 116, 130, 59, 229, 77, 70, 30, 156, 176, 164, 173, 159, }, { 79, 204, 242, 3, 203, 47, 213, 78, 188, 130, 177, 158, 102, 184, 36, 109, }, { 80, 195, 203, 205, 96, 137, 158, 170, 97, 105, 41, 160, 128, 15, 152, 145, }, { 81, 172, 145, 240, 223, 36, 112, 1, 144, 173, 134, 162, 86, 19, 17, 99, }, { 82, 29, 127, 183, 221, 16, 129, 63, 64, 34, 180, 164, 239, 55, 73, 182, }, { 83, 114, 37, 138, 98, 189, 111, 148, 177, 230, 27, 166, 57, 43, 192, 68, }, { 84, 188, 96, 57, 217, 120, 160, 67, 35, 255, 208, 168, 94, 127, 249, 223, }, { 85, 211, 58, 4, 102, 213, 78, 232, 210, 59, 127, 170, 136, 99, 112, 45, }, { 86, 98, 212, 67, 100, 225, 191, 214, 2, 180, 77, 172, 49, 71, 40, 248, }, { 87, 13, 142, 126, 219, 76, 81, 125, 243, 112, 226, 174, 231, 91, 161, 10, }, { 88, 61, 94, 230, 209, 168, 226, 187, 229, 134, 24, 176, 255, 239, 90, 13, }, { 89, 82, 4, 219, 110, 5, 12, 16, 20, 66, 183, 178, 41, 243, 211, 255, }, { 90, 227, 234, 156, 108, 49, 253, 46, 196, 205, 133, 180, 144, 215, 139, 42, }, { 91, 140, 176, 161, 211, 156, 19, 133, 53, 9, 42, 182, 70, 203, 2, 216, }, { 92, 66, 245, 18, 104, 89, 220, 82, 167, 16, 225, 184, 33, 159, 59, 67, }, { 93, 45, 175, 47, 215, 244, 50, 249, 86, 212, 78, 186, 247, 131, 178, 177, }, { 94, 156, 65, 104, 213, 192, 195, 199, 134, 91, 124, 188, 78, 167, 234, 100, }, { 95, 243, 27, 85, 106, 109, 45, 108, 119, 159, 211, 190, 152, 187, 99, 150, }, { 96, 130, 51, 55, 64, 79, 85, 204, 255, 78, 143, 192, 65, 10, 81, 95, }, { 97, 237, 105, 10, 255, 226, 187, 103, 14, 138, 32, 194, 151, 22, 216, 173, }, { 98, 92, 135, 77, 253, 214, 74, 89, 222, 5, 18, 196, 46, 50, 128, 120, }, { 99, 51, 221, 112, 66, 123, 164, 242, 47, 193, 189, 198, 248, 46, 9, 138, }, { 100, 253, 152, 195, 249, 190, 107, 37, 189, 216, 118, 200, 159, 122, 48, 17, }, { 101, 146, 194, 254, 70, 19, 133, 142, 76, 28, 217, 202, 73, 102, 185, 227, }, { 102, 35, 44, 185, 68, 39, 116, 176, 156, 147, 235, 204, 240, 66, 225, 54, }, { 103, 76, 118, 132, 251, 138, 154, 27, 109, 87, 68, 206, 38, 94, 104, 196, }, { 104, 124, 166, 28, 241, 110, 41, 221, 123, 161, 190, 208, 62, 234, 147, 195, }, { 105, 19, 252, 33, 78, 195, 199, 118, 138, 101, 17, 210, 232, 246, 26, 49, }, { 106, 162, 18, 102, 76, 247, 54, 72, 90, 234, 35, 212, 81, 210, 66, 228, }, { 107, 205, 72, 91, 243, 90, 216, 227, 171, 46, 140, 214, 135, 206, 203, 22, }, { 108, 3, 13, 232, 72, 159, 23, 52, 57, 55, 71, 216, 224, 154, 242, 141, }, { 109, 108, 87, 213, 247, 50, 249, 159, 200, 243, 232, 218, 54, 134, 123, 127, }, { 110, 221, 185, 146, 245, 6, 8, 161, 24, 124, 218, 220, 143, 162, 35, 170, }, { 111, 178, 227, 175, 74, 171, 230, 10, 233, 184, 117, 222, 89, 190, 170, 88, }, { 112, 189, 218, 97, 225, 13, 173, 238, 52, 83, 237, 224, 191, 9, 22, 164, }, { 113, 210, 128, 92, 94, 160, 67, 69, 197, 151, 66, 226, 105, 21, 159, 86, }, { 114, 99, 110, 27, 92, 148, 178, 123, 21, 24, 112, 228, 208, 49, 199, 131, }, { 115, 12, 52, 38, 227, 57, 92, 208, 228, 220, 223, 230, 6, 45, 78, 113, }, { 116, 194, 113, 149, 88, 252, 147, 7, 118, 197, 20, 232, 97, 121, 119, 234, }, { 117, 173, 43, 168, 231, 81, 125, 172, 135, 1, 187, 234, 183, 101, 254, 24, }, { 118, 28, 197, 239, 229, 101, 140, 146, 87, 142, 137, 236, 14, 65, 166, 205, }, { 119, 115, 159, 210, 90, 200, 98, 57, 166, 74, 38, 238, 216, 93, 47, 63, }, { 120, 67, 79, 74, 80, 44, 209, 255, 176, 188, 220, 240, 192, 233, 212, 56, }, { 121, 44, 21, 119, 239, 129, 63, 84, 65, 120, 115, 242, 22, 245, 93, 202, }, { 122, 157, 251, 48, 237, 181, 206, 106, 145, 247, 65, 244, 175, 209, 5, 31, }, { 123, 242, 161, 13, 82, 24, 32, 193, 96, 51, 238, 246, 121, 205, 140, 237, }, { 124, 60, 228, 190, 233, 221, 239, 22, 242, 42, 37, 248, 30, 153, 181, 118, }, { 125, 83, 190, 131, 86, 112, 1, 189, 3, 238, 138, 250, 200, 133, 60, 132, }, { 126, 226, 80, 196, 84, 68, 240, 131, 211, 97, 184, 252, 113, 161, 100, 81, }, { 127, 141, 10, 249, 235, 233, 30, 40, 34, 165, 23, 254, 167, 189, 237, 163, }, { 128, 59, 68, 245, 65, 85, 204, 211, 151, 232, 150, 195, 252, 24, 125, 212, }, { 129, 84, 30, 200, 254, 248, 34, 120, 102, 44, 57, 193, 42, 4, 244, 38, }, { 130, 229, 240, 143, 252, 204, 211, 70, 182, 163, 11, 199, 147, 32, 172, 243, }, { 131, 138, 170, 178, 67, 97, 61, 237, 71, 103, 164, 197, 69, 60, 37, 1, }, { 132, 68, 239, 1, 248, 164, 242, 58, 213, 126, 111, 203, 34, 104, 28, 154, }, { 133, 43, 181, 60, 71, 9, 28, 145, 36, 186, 192, 201, 244, 116, 149, 104, }, { 134, 154, 91, 123, 69, 61, 237, 175, 244, 53, 242, 207, 77, 80, 205, 189, }, { 135, 245, 1, 70, 250, 144, 3, 4, 5, 241, 93, 205, 155, 76, 68, 79, }, { 136, 197, 209, 222, 240, 116, 176, 194, 19, 7, 167, 211, 131, 248, 191, 72, }, { 137, 170, 139, 227, 79, 217, 94, 105, 226, 195, 8, 209, 85, 228, 54, 186, }, { 138, 27, 101, 164, 77, 237, 175, 87, 50, 76, 58, 215, 236, 192, 110, 111, }, { 139, 116, 63, 153, 242, 64, 65, 252, 195, 136, 149, 213, 58, 220, 231, 157, }, { 140, 186, 122, 42, 73, 133, 142, 43, 81, 145, 94, 219, 93, 136, 222, 6, }, { 141, 213, 32, 23, 246, 40, 96, 128, 160, 85, 241, 217, 139, 148, 87, 244, }, { 142, 100, 206, 80, 244, 28, 145, 190, 112, 218, 195, 223, 50, 176, 15, 33, }, { 143, 11, 148, 109, 75, 177, 127, 21, 129, 30, 108, 221, 228, 172, 134, 211, }, { 144, 4, 173, 163, 224, 23, 52, 241, 92, 245, 244, 227, 2, 27, 58, 47, }, { 145, 107, 247, 158, 95, 186, 218, 90, 173, 49, 91, 225, 212, 7, 179, 221, }, { 146, 218, 25, 217, 93, 142, 43, 100, 125, 190, 105, 231, 109, 35, 235, 8, }, { 147, 181, 67, 228, 226, 35, 197, 207, 140, 122, 198, 229, 187, 63, 98, 250, }, { 148, 123, 6, 87, 89, 230, 10, 24, 30, 99, 13, 235, 220, 107, 91, 97, }, { 149, 20, 92, 106, 230, 75, 228, 179, 239, 167, 162, 233, 10, 119, 210, 147, }, { 150, 165, 178, 45, 228, 127, 21, 141, 63, 40, 144, 239, 179, 83, 138, 70, }, { 151, 202, 232, 16, 91, 210, 251, 38, 206, 236, 63, 237, 101, 79, 3, 180, }, { 152, 250, 56, 136, 81, 54, 72, 224, 216, 26, 197, 243, 125, 251, 248, 179, }, { 153, 149, 98, 181, 238, 155, 166, 75, 41, 222, 106, 241, 171, 231, 113, 65, }, { 154, 36, 140, 242, 236, 175, 87, 117, 249, 81, 88, 247, 18, 195, 41, 148, }, { 155, 75, 214, 207, 83, 2, 185, 222, 8, 149, 247, 245, 196, 223, 160, 102, }, { 156, 133, 147, 124, 232, 199, 118, 9, 154, 140, 60, 251, 163, 139, 153, 253, }, { 157, 234, 201, 65, 87, 106, 152, 162, 107, 72, 147, 249, 117, 151, 16, 15, }, { 158, 91, 39, 6, 85, 94, 105, 156, 187, 199, 161, 255, 204, 179, 72, 218, }, { 159, 52, 125, 59, 234, 243, 135, 55, 74, 3, 14, 253, 26, 175, 193, 40, }, { 160, 69, 85, 89, 192, 209, 255, 151, 194, 210, 82, 131, 195, 30, 243, 225, }, { 161, 42, 15, 100, 127, 124, 17, 60, 51, 22, 253, 129, 21, 2, 122, 19, }, { 162, 155, 225, 35, 125, 72, 224, 2, 227, 153, 207, 135, 172, 38, 34, 198, }, { 163, 244, 187, 30, 194, 229, 14, 169, 18, 93, 96, 133, 122, 58, 171, 52, }, { 164, 58, 254, 173, 121, 32, 193, 126, 128, 68, 171, 139, 29, 110, 146, 175, }, { 165, 85, 164, 144, 198, 141, 47, 213, 113, 128, 4, 137, 203, 114, 27, 93, }, { 166, 228, 74, 215, 196, 185, 222, 235, 161, 15, 54, 143, 114, 86, 67, 136, }, { 167, 139, 16, 234, 123, 20, 48, 64, 80, 203, 153, 141, 164, 74, 202, 122, }, { 168, 187, 192, 114, 113, 240, 131, 134, 70, 61, 99, 147, 188, 254, 49, 125, }, { 169, 212, 154, 79, 206, 93, 109, 45, 183, 249, 204, 145, 106, 226, 184, 143, }, { 170, 101, 116, 8, 204, 105, 156, 19, 103, 118, 254, 151, 211, 198, 224, 90, }, { 171, 10, 46, 53, 115, 196, 114, 184, 150, 178, 81, 149, 5, 218, 105, 168, }, { 172, 196, 107, 134, 200, 1, 189, 111, 4, 171, 154, 155, 98, 142, 80, 51, }, { 173, 171, 49, 187, 119, 172, 83, 196, 245, 111, 53, 153, 180, 146, 217, 193, }, { 174, 26, 223, 252, 117, 152, 162, 250, 37, 224, 7, 159, 13, 182, 129, 20, }, { 175, 117, 133, 193, 202, 53, 76, 81, 212, 36, 168, 157, 219, 170, 8, 230, }, { 176, 122, 188, 15, 97, 147, 7, 181, 9, 207, 48, 163, 61, 29, 180, 26, }, { 177, 21, 230, 50, 222, 62, 233, 30, 248, 11, 159, 161, 235, 1, 61, 232, }, { 178, 164, 8, 117, 220, 10, 24, 32, 40, 132, 173, 167, 82, 37, 101, 61, }, { 179, 203, 82, 72, 99, 167, 246, 139, 217, 64, 2, 165, 132, 57, 236, 207, }, { 180, 5, 23, 251, 216, 98, 57, 92, 75, 89, 201, 171, 227, 109, 213, 84, }, { 181, 106, 77, 198, 103, 207, 215, 247, 186, 157, 102, 169, 53, 113, 92, 166, }, { 182, 219, 163, 129, 101, 251, 38, 201, 106, 18, 84, 175, 140, 85, 4, 115, }, { 183, 180, 249, 188, 218, 86, 200, 98, 155, 214, 251, 173, 90, 73, 141, 129, }, { 184, 132, 41, 36, 208, 178, 123, 164, 141, 32, 1, 179, 66, 253, 118, 134, }, { 185, 235, 115, 25, 111, 31, 149, 15, 124, 228, 174, 177, 148, 225, 255, 116, }, { 186, 90, 157, 94, 109, 43, 100, 49, 172, 107, 156, 183, 45, 197, 167, 161, }, { 187, 53, 199, 99, 210, 134, 138, 154, 93, 175, 51, 181, 251, 217, 46, 83, }, { 188, 251, 130, 208, 105, 67, 69, 77, 207, 182, 248, 187, 156, 141, 23, 200, }, { 189, 148, 216, 237, 214, 238, 171, 230, 62, 114, 87, 185, 74, 145, 158, 58, }, { 190, 37, 54, 170, 212, 218, 90, 216, 238, 253, 101, 191, 243, 181, 198, 239, }, { 191, 74, 108, 151, 107, 119, 180, 115, 31, 57, 202, 189, 37, 169, 79, 29, }, { 192, 199, 102, 110, 128, 158, 170, 91, 61, 156, 221, 67, 130, 20, 162, 190, }, { 193, 168, 60, 83, 63, 51, 68, 240, 204, 88, 114, 65, 84, 8, 43, 76, }, { 194, 25, 210, 20, 61, 7, 181, 206, 28, 215, 64, 71, 237, 44, 115, 153, }, { 195, 118, 136, 41, 130, 170, 91, 101, 237, 19, 239, 69, 59, 48, 250, 107, }, { 196, 184, 205, 154, 57, 111, 148, 178, 127, 10, 36, 75, 92, 100, 195, 240, }, { 197, 215, 151, 167, 134, 194, 122, 25, 142, 206, 139, 73, 138, 120, 74, 2, }, { 198, 102, 121, 224, 132, 246, 139, 39, 94, 65, 185, 79, 51, 92, 18, 215, }, { 199, 9, 35, 221, 59, 91, 101, 140, 175, 133, 22, 77, 229, 64, 155, 37, }, { 200, 57, 243, 69, 49, 191, 214, 74, 185, 115, 236, 83, 253, 244, 96, 34, }, { 201, 86, 169, 120, 142, 18, 56, 225, 72, 183, 67, 81, 43, 232, 233, 208, }, { 202, 231, 71, 63, 140, 38, 201, 223, 152, 56, 113, 87, 146, 204, 177, 5, }, { 203, 136, 29, 2, 51, 139, 39, 116, 105, 252, 222, 85, 68, 208, 56, 247, }, { 204, 70, 88, 177, 136, 78, 232, 163, 251, 229, 21, 91, 35, 132, 1, 108, }, { 205, 41, 2, 140, 55, 227, 6, 8, 10, 33, 186, 89, 245, 152, 136, 158, }, { 206, 152, 236, 203, 53, 215, 247, 54, 218, 174, 136, 95, 76, 188, 208, 75, }, { 207, 247, 182, 246, 138, 122, 25, 157, 43, 106, 39, 93, 154, 160, 89, 185, }, { 208, 248, 143, 56, 33, 220, 82, 121, 246, 129, 191, 99, 124, 23, 229, 69, }, { 209, 151, 213, 5, 158, 113, 188, 210, 7, 69, 16, 97, 170, 11, 108, 183, }, { 210, 38, 59, 66, 156, 69, 77, 236, 215, 202, 34, 103, 19, 47, 52, 98, }, { 211, 73, 97, 127, 35, 232, 163, 71, 38, 14, 141, 101, 197, 51, 189, 144, }, { 212, 135, 36, 204, 152, 45, 108, 144, 180, 23, 70, 107, 162, 103, 132, 11, }, { 213, 232, 126, 241, 39, 128, 130, 59, 69, 211, 233, 105, 116, 123, 13, 249, }, { 214, 89, 144, 182, 37, 180, 115, 5, 149, 92, 219, 111, 205, 95, 85, 44, }, { 215, 54, 202, 139, 154, 25, 157, 174, 100, 152, 116, 109, 27, 67, 220, 222, }, { 216, 6, 26, 19, 144, 253, 46, 104, 114, 110, 142, 115, 3, 247, 39, 217, }, { 217, 105, 64, 46, 47, 80, 192, 195, 131, 170, 33, 113, 213, 235, 174, 43, }, { 218, 216, 174, 105, 45, 100, 49, 253, 83, 37, 19, 119, 108, 207, 246, 254, }, { 219, 183, 244, 84, 146, 201, 223, 86, 162, 225, 188, 117, 186, 211, 127, 12, }, { 220, 121, 177, 231, 41, 12, 16, 129, 48, 248, 119, 123, 221, 135, 70, 151, }, { 221, 22, 235, 218, 150, 161, 254, 42, 193, 60, 216, 121, 11, 155, 207, 101, }, { 222, 167, 5, 157, 148, 149, 15, 20, 17, 179, 234, 127, 178, 191, 151, 176, }, { 223, 200, 95, 160, 43, 56, 225, 191, 224, 119, 69, 125, 100, 163, 30, 66, }, { 224, 185, 119, 194, 1, 26, 153, 31, 104, 166, 25, 3, 189, 18, 44, 139, }, { 225, 214, 45, 255, 190, 183, 119, 180, 153, 98, 182, 1, 107, 14, 165, 121, }, { 226, 103, 195, 184, 188, 131, 134, 138, 73, 237, 132, 7, 210, 42, 253, 172, }, { 227, 8, 153, 133, 3, 46, 104, 33, 184, 41, 43, 5, 4, 54, 116, 94, }, { 228, 198, 220, 54, 184, 235, 167, 246, 42, 48, 224, 11, 99, 98, 77, 197, }, { 229, 169, 134, 11, 7, 70, 73, 93, 219, 244, 79, 9, 181, 126, 196, 55, }, { 230, 24, 104, 76, 5, 114, 184, 99, 11, 123, 125, 15, 12, 90, 156, 226, }, { 231, 119, 50, 113, 186, 223, 86, 200, 250, 191, 210, 13, 218, 70, 21, 16, }, { 232, 71, 226, 233, 176, 59, 229, 14, 236, 73, 40, 19, 194, 242, 238, 23, }, { 233, 40, 184, 212, 15, 150, 11, 165, 29, 141, 135, 17, 20, 238, 103, 229, }, { 234, 153, 86, 147, 13, 162, 250, 155, 205, 2, 181, 23, 173, 202, 63, 48, }, { 235, 246, 12, 174, 178, 15, 20, 48, 60, 198, 26, 21, 123, 214, 182, 194, }, { 236, 56, 73, 29, 9, 202, 219, 231, 174, 223, 209, 27, 28, 130, 143, 89, }, { 237, 87, 19, 32, 182, 103, 53, 76, 95, 27, 126, 25, 202, 158, 6, 171, }, { 238, 230, 253, 103, 180, 83, 196, 114, 143, 148, 76, 31, 115, 186, 94, 126, }, { 239, 137, 167, 90, 11, 254, 42, 217, 126, 80, 227, 29, 165, 166, 215, 140, }, { 240, 134, 158, 148, 160, 88, 97, 61, 163, 187, 123, 35, 67, 17, 107, 112, }, { 241, 233, 196, 169, 31, 245, 143, 150, 82, 127, 212, 33, 149, 13, 226, 130, }, { 242, 88, 42, 238, 29, 193, 126, 168, 130, 240, 230, 39, 44, 41, 186, 87, }, { 243, 55, 112, 211, 162, 108, 144, 3, 115, 52, 73, 37, 250, 53, 51, 165, }, { 244, 249, 53, 96, 25, 169, 95, 212, 225, 45, 130, 43, 157, 97, 10, 62, }, { 245, 150, 111, 93, 166, 4, 177, 127, 16, 233, 45, 41, 75, 125, 131, 204, }, { 246, 39, 129, 26, 164, 48, 64, 65, 192, 102, 31, 47, 242, 89, 219, 25, }, { 247, 72, 219, 39, 27, 157, 174, 234, 49, 162, 176, 45, 36, 69, 82, 235, }, { 248, 120, 11, 191, 17, 121, 29, 44, 39, 84, 74, 51, 60, 241, 169, 236, }, { 249, 23, 81, 130, 174, 212, 243, 135, 214, 144, 229, 49, 234, 237, 32, 30, }, { 250, 166, 191, 197, 172, 224, 2, 185, 6, 31, 215, 55, 83, 201, 120, 203, }, { 251, 201, 229, 248, 19, 77, 236, 18, 247, 219, 120, 53, 133, 213, 241, 57, }, { 252, 7, 160, 75, 168, 136, 35, 197, 101, 194, 179, 59, 226, 129, 200, 162, }, { 253, 104, 250, 118, 23, 37, 205, 110, 148, 6, 28, 57, 52, 157, 65, 80, }, { 254, 217, 20, 49, 21, 17, 60, 80, 68, 137, 46, 63, 141, 185, 25, 133, }, { 255, 182, 78, 12, 170, 188, 210, 251, 181, 77, 129, 61, 91, 165, 144, 119, }, }, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, { 192, 119, 68, 148, 96, 124, 18, 141, 46, 45, 188, 235, 17, 67, 72, 142, }, { 67, 238, 136, 235, 192, 248, 36, 217, 92, 90, 187, 21, 34, 134, 144, 223, }, { 131, 153, 204, 127, 160, 132, 54, 84, 114, 119, 7, 254, 51, 197, 216, 81, }, { 134, 31, 211, 21, 67, 51, 72, 113, 184, 180, 181, 42, 68, 207, 227, 125, }, { 70, 104, 151, 129, 35, 79, 90, 252, 150, 153, 9, 193, 85, 140, 171, 243, }, { 197, 241, 91, 254, 131, 203, 108, 168, 228, 238, 14, 63, 102, 73, 115, 162, }, { 5, 134, 31, 106, 227, 183, 126, 37, 202, 195, 178, 212, 119, 10, 59, 44, }, { 207, 62, 101, 42, 134, 102, 144, 226, 179, 171, 169, 84, 136, 93, 5, 250, }, { 15, 73, 33, 190, 230, 26, 130, 111, 157, 134, 21, 191, 153, 30, 77, 116, }, { 140, 208, 237, 193, 70, 158, 180, 59, 239, 241, 18, 65, 170, 219, 149, 37, }, { 76, 167, 169, 85, 38, 226, 166, 182, 193, 220, 174, 170, 187, 152, 221, 171, }, { 73, 33, 182, 63, 197, 85, 216, 147, 11, 31, 28, 126, 204, 146, 230, 135, }, { 137, 86, 242, 171, 165, 41, 202, 30, 37, 50, 160, 149, 221, 209, 174, 9, }, { 10, 207, 62, 212, 5, 173, 252, 74, 87, 69, 167, 107, 238, 20, 118, 88, }, { 202, 184, 122, 64, 101, 209, 238, 199, 121, 104, 27, 128, 255, 87, 62, 214, }, { 93, 124, 202, 84, 207, 204, 227, 7, 165, 149, 145, 168, 211, 186, 10, 55, }, { 157, 11, 142, 192, 175, 176, 241, 138, 139, 184, 45, 67, 194, 249, 66, 185, }, { 30, 146, 66, 191, 15, 52, 199, 222, 249, 207, 42, 189, 241, 60, 154, 232, }, { 222, 229, 6, 43, 111, 72, 213, 83, 215, 226, 150, 86, 224, 127, 210, 102, }, { 219, 99, 25, 65, 140, 255, 171, 118, 29, 33, 36, 130, 151, 117, 233, 74, }, { 27, 20, 93, 213, 236, 131, 185, 251, 51, 12, 152, 105, 134, 54, 161, 196, }, { 152, 141, 145, 170, 76, 7, 143, 175, 65, 123, 159, 151, 181, 243, 121, 149, }, { 88, 250, 213, 62, 44, 123, 157, 34, 111, 86, 35, 124, 164, 176, 49, 27, }, { 146, 66, 175, 126, 73, 170, 115, 229, 22, 62, 56, 252, 91, 231, 15, 205, }, { 82, 53, 235, 234, 41, 214, 97, 104, 56, 19, 132, 23, 74, 164, 71, 67, }, { 209, 172, 39, 149, 137, 82, 87, 60, 74, 100, 131, 233, 121, 97, 159, 18, }, { 17, 219, 99, 1, 233, 46, 69, 177, 100, 73, 63, 2, 104, 34, 215, 156, }, { 20, 93, 124, 107, 10, 153, 59, 148, 174, 138, 141, 214, 31, 40, 236, 176, }, { 212, 42, 56, 255, 106, 229, 41, 25, 128, 167, 49, 61, 14, 107, 164, 62, }, { 87, 179, 244, 128, 202, 97, 31, 77, 242, 208, 54, 195, 61, 174, 124, 111, }, { 151, 196, 176, 20, 170, 29, 13, 192, 220, 253, 138, 40, 44, 237, 52, 225, }, { 186, 248, 87, 168, 93, 91, 5, 14, 137, 233, 225, 147, 101, 183, 20, 110, }, { 122, 143, 19, 60, 61, 39, 23, 131, 167, 196, 93, 120, 116, 244, 92, 224, }, { 249, 22, 223, 67, 157, 163, 33, 215, 213, 179, 90, 134, 71, 49, 132, 177, }, { 57, 97, 155, 215, 253, 223, 51, 90, 251, 158, 230, 109, 86, 114, 204, 63, }, { 60, 231, 132, 189, 30, 104, 77, 127, 49, 93, 84, 185, 33, 120, 247, 19, }, { 252, 144, 192, 41, 126, 20, 95, 242, 31, 112, 232, 82, 48, 59, 191, 157, }, { 127, 9, 12, 86, 222, 144, 105, 166, 109, 7, 239, 172, 3, 254, 103, 204, }, { 191, 126, 72, 194, 190, 236, 123, 43, 67, 42, 83, 71, 18, 189, 47, 66, }, { 117, 198, 50, 130, 219, 61, 149, 236, 58, 66, 72, 199, 237, 234, 17, 148, }, { 181, 177, 118, 22, 187, 65, 135, 97, 20, 111, 244, 44, 252, 169, 89, 26, }, { 54, 40, 186, 105, 27, 197, 177, 53, 102, 24, 243, 210, 207, 108, 129, 75, }, { 246, 95, 254, 253, 123, 185, 163, 184, 72, 53, 79, 57, 222, 47, 201, 197, }, { 243, 217, 225, 151, 152, 14, 221, 157, 130, 246, 253, 237, 169, 37, 242, 233, }, { 51, 174, 165, 3, 248, 114, 207, 16, 172, 219, 65, 6, 184, 102, 186, 103, }, { 176, 55, 105, 124, 88, 246, 249, 68, 222, 172, 70, 248, 139, 163, 98, 54, }, { 112, 64, 45, 232, 56, 138, 235, 201, 240, 129, 250, 19, 154, 224, 42, 184, }, { 231, 132, 157, 252, 146, 151, 230, 9, 44, 124, 112, 59, 182, 13, 30, 89, }, { 39, 243, 217, 104, 242, 235, 244, 132, 2, 81, 204, 208, 167, 78, 86, 215, }, { 164, 106, 21, 23, 82, 111, 194, 208, 112, 38, 203, 46, 148, 139, 142, 134, }, { 100, 29, 81, 131, 50, 19, 208, 93, 94, 11, 119, 197, 133, 200, 198, 8, }, { 97, 155, 78, 233, 209, 164, 174, 120, 148, 200, 197, 17, 242, 194, 253, 36, }, { 161, 236, 10, 125, 177, 216, 188, 245, 186, 229, 121, 250, 227, 129, 181, 170, }, { 34, 117, 198, 2, 17, 92, 138, 161, 200, 146, 126, 4, 208, 68, 109, 251, }, { 226, 2, 130, 150, 113, 32, 152, 44, 230, 191, 194, 239, 193, 7, 37, 117, }, { 40, 186, 248, 214, 20, 241, 118, 235, 159, 215, 217, 111, 62, 80, 27, 163, }, { 232, 205, 188, 66, 116, 141, 100, 102, 177, 250, 101, 132, 47, 19, 83, 45, }, { 107, 84, 112, 61, 212, 9, 82, 50, 195, 141, 98, 122, 28, 214, 139, 124, }, { 171, 35, 52, 169, 180, 117, 64, 191, 237, 160, 222, 145, 13, 149, 195, 242, }, { 174, 165, 43, 195, 87, 194, 62, 154, 39, 99, 108, 69, 122, 159, 248, 222, }, { 110, 210, 111, 87, 55, 190, 44, 23, 9, 78, 208, 174, 107, 220, 176, 80, }, { 237, 75, 163, 40, 151, 58, 26, 67, 123, 57, 215, 80, 88, 25, 104, 1, }, { 45, 60, 231, 188, 247, 70, 8, 206, 85, 20, 107, 187, 73, 90, 32, 143, }, { 183, 51, 174, 147, 186, 182, 10, 28, 209, 17, 1, 229, 202, 173, 40, 220, }, { 119, 68, 234, 7, 218, 202, 24, 145, 255, 60, 189, 14, 219, 238, 96, 82, }, { 244, 221, 38, 120, 122, 78, 46, 197, 141, 75, 186, 240, 232, 43, 184, 3, }, { 52, 170, 98, 236, 26, 50, 60, 72, 163, 102, 6, 27, 249, 104, 240, 141, }, { 49, 44, 125, 134, 249, 133, 66, 109, 105, 165, 180, 207, 142, 98, 203, 161, }, { 241, 91, 57, 18, 153, 249, 80, 224, 71, 136, 8, 36, 159, 33, 131, 47, }, { 114, 194, 245, 109, 57, 125, 102, 180, 53, 255, 15, 218, 172, 228, 91, 126, }, { 178, 181, 177, 249, 89, 1, 116, 57, 27, 210, 179, 49, 189, 167, 19, 240, }, { 120, 13, 203, 185, 60, 208, 154, 254, 98, 186, 168, 177, 66, 240, 45, 38, }, { 184, 122, 143, 45, 92, 172, 136, 115, 76, 151, 20, 90, 83, 179, 101, 168, }, { 59, 227, 67, 82, 252, 40, 190, 39, 62, 224, 19, 164, 96, 118, 189, 249, }, { 251, 148, 7, 198, 156, 84, 172, 170, 16, 205, 175, 79, 113, 53, 245, 119, }, { 254, 18, 24, 172, 127, 227, 210, 143, 218, 14, 29, 155, 6, 63, 206, 91, }, { 62, 101, 92, 56, 31, 159, 192, 2, 244, 35, 161, 112, 23, 124, 134, 213, }, { 189, 252, 144, 71, 191, 27, 246, 86, 134, 84, 166, 142, 36, 185, 94, 132, }, { 125, 139, 212, 211, 223, 103, 228, 219, 168, 121, 26, 101, 53, 250, 22, 10, }, { 234, 79, 100, 199, 117, 122, 233, 27, 116, 132, 144, 77, 25, 23, 34, 235, }, { 42, 56, 32, 83, 21, 6, 251, 150, 90, 169, 44, 166, 8, 84, 106, 101, }, { 169, 161, 236, 44, 181, 130, 205, 194, 40, 222, 43, 88, 59, 145, 178, 52, }, { 105, 214, 168, 184, 213, 254, 223, 79, 6, 243, 151, 179, 42, 210, 250, 186, }, { 108, 80, 183, 210, 54, 73, 161, 106, 204, 48, 37, 103, 93, 216, 193, 150, }, { 172, 39, 243, 70, 86, 53, 179, 231, 226, 29, 153, 140, 76, 155, 137, 24, }, { 47, 190, 63, 57, 246, 177, 133, 179, 144, 106, 158, 114, 127, 94, 81, 73, }, { 239, 201, 123, 173, 150, 205, 151, 62, 190, 71, 34, 153, 110, 29, 25, 199, }, { 37, 113, 1, 237, 243, 28, 121, 249, 199, 47, 57, 25, 145, 74, 39, 17, }, { 229, 6, 69, 121, 147, 96, 107, 116, 233, 2, 133, 242, 128, 9, 111, 159, }, { 102, 159, 137, 6, 51, 228, 93, 32, 155, 117, 130, 12, 179, 204, 183, 206, }, { 166, 232, 205, 146, 83, 152, 79, 173, 181, 88, 62, 231, 162, 143, 255, 64, }, { 163, 110, 210, 248, 176, 47, 49, 136, 127, 155, 140, 51, 213, 133, 196, 108, }, { 99, 25, 150, 108, 208, 83, 35, 5, 81, 182, 48, 216, 196, 198, 140, 226, }, { 224, 128, 90, 19, 112, 215, 21, 81, 35, 193, 55, 38, 247, 3, 84, 179, }, { 32, 247, 30, 135, 16, 171, 7, 220, 13, 236, 139, 205, 230, 64, 28, 61, }, { 13, 203, 249, 59, 231, 237, 15, 18, 88, 248, 224, 118, 175, 26, 60, 178, }, { 205, 188, 189, 175, 135, 145, 29, 159, 118, 213, 92, 157, 190, 89, 116, 60, }, { 78, 37, 113, 208, 39, 21, 43, 203, 4, 162, 91, 99, 141, 156, 172, 109, }, { 142, 82, 53, 68, 71, 105, 57, 70, 42, 143, 231, 136, 156, 223, 228, 227, }, { 139, 212, 42, 46, 164, 222, 71, 99, 224, 76, 85, 92, 235, 213, 223, 207, }, { 75, 163, 110, 186, 196, 162, 85, 238, 206, 97, 233, 183, 250, 150, 151, 65, }, { 200, 58, 162, 197, 100, 38, 99, 186, 188, 22, 238, 73, 201, 83, 79, 16, }, { 8, 77, 230, 81, 4, 90, 113, 55, 146, 59, 82, 162, 216, 16, 7, 158, }, { 194, 245, 156, 17, 97, 139, 159, 240, 235, 83, 73, 34, 39, 71, 57, 72, }, { 2, 130, 216, 133, 1, 247, 141, 125, 197, 126, 245, 201, 54, 4, 113, 198, }, { 129, 27, 20, 250, 161, 115, 187, 41, 183, 9, 242, 55, 5, 193, 169, 151, }, { 65, 108, 80, 110, 193, 15, 169, 164, 153, 36, 78, 220, 20, 130, 225, 25, }, { 68, 234, 79, 4, 34, 184, 215, 129, 83, 231, 252, 8, 99, 136, 218, 53, }, { 132, 157, 11, 144, 66, 196, 197, 12, 125, 202, 64, 227, 114, 203, 146, 187, }, { 7, 4, 199, 239, 226, 64, 243, 88, 15, 189, 71, 29, 65, 14, 74, 234, }, { 199, 115, 131, 123, 130, 60, 225, 213, 33, 144, 251, 246, 80, 77, 2, 100, }, { 80, 183, 51, 111, 40, 33, 236, 21, 253, 109, 113, 222, 124, 160, 54, 133, }, { 144, 192, 119, 251, 72, 93, 254, 152, 211, 64, 205, 53, 109, 227, 126, 11, }, { 19, 89, 187, 132, 232, 217, 200, 204, 161, 55, 202, 203, 94, 38, 166, 90, }, { 211, 46, 255, 16, 136, 165, 218, 65, 143, 26, 118, 32, 79, 101, 238, 212, }, { 214, 168, 224, 122, 107, 18, 164, 100, 69, 217, 196, 244, 56, 111, 213, 248, }, { 22, 223, 164, 238, 11, 110, 182, 233, 107, 244, 120, 31, 41, 44, 157, 118, }, { 149, 70, 104, 145, 171, 234, 128, 189, 25, 131, 127, 225, 26, 233, 69, 39, }, { 85, 49, 44, 5, 203, 150, 146, 48, 55, 174, 195, 10, 11, 170, 13, 169, }, { 159, 137, 86, 69, 174, 71, 124, 247, 78, 198, 216, 138, 244, 253, 51, 127, }, { 95, 254, 18, 209, 206, 59, 110, 122, 96, 235, 100, 97, 229, 190, 123, 241, }, { 220, 103, 222, 174, 110, 191, 88, 46, 18, 156, 99, 159, 214, 123, 163, 160, }, { 28, 16, 154, 58, 14, 195, 74, 163, 60, 177, 223, 116, 199, 56, 235, 46, }, { 25, 150, 133, 80, 237, 116, 52, 134, 246, 114, 109, 160, 176, 50, 208, 2, }, { 217, 225, 193, 196, 141, 8, 38, 11, 216, 95, 209, 75, 161, 113, 152, 140, }, { 90, 120, 13, 187, 45, 140, 16, 95, 170, 40, 214, 181, 146, 180, 64, 221, }, { 154, 15, 73, 47, 77, 240, 2, 210, 132, 5, 106, 94, 131, 247, 8, 83, }, { 173, 102, 159, 229, 183, 175, 20, 56, 97, 34, 2, 9, 87, 153, 80, 123, }, { 109, 17, 219, 113, 215, 211, 6, 181, 79, 15, 190, 226, 70, 218, 24, 245, }, { 238, 136, 23, 14, 119, 87, 48, 225, 61, 120, 185, 28, 117, 31, 192, 164, }, { 46, 255, 83, 154, 23, 43, 34, 108, 19, 85, 5, 247, 100, 92, 136, 42, }, { 43, 121, 76, 240, 244, 156, 92, 73, 217, 150, 183, 35, 19, 86, 179, 6, }, { 235, 14, 8, 100, 148, 224, 78, 196, 247, 187, 11, 200, 2, 21, 251, 136, }, { 104, 151, 196, 27, 52, 100, 120, 144, 133, 204, 12, 54, 49, 208, 35, 217, }, { 168, 224, 128, 143, 84, 24, 106, 29, 171, 225, 176, 221, 32, 147, 107, 87, }, { 98, 88, 250, 207, 49, 201, 132, 218, 210, 137, 171, 93, 223, 196, 85, 129, }, { 162, 47, 190, 91, 81, 181, 150, 87, 252, 164, 23, 182, 206, 135, 29, 15, }, { 33, 182, 114, 36, 241, 49, 160, 3, 142, 211, 16, 72, 253, 66, 197, 94, }, { 225, 193, 54, 176, 145, 77, 178, 142, 160, 254, 172, 163, 236, 1, 141, 208, }, { 228, 71, 41, 218, 114, 250, 204, 171, 106, 61, 30, 119, 155, 11, 182, 252, }, { 36, 48, 109, 78, 18, 134, 222, 38, 68, 16, 162, 156, 138, 72, 254, 114, }, { 167, 169, 161, 49, 178, 2, 232, 114, 54, 103, 165, 98, 185, 141, 38, 35, }, { 103, 222, 229, 165, 210, 126, 250, 255, 24, 74, 25, 137, 168, 206, 110, 173, }, { 240, 26, 85, 177, 120, 99, 247, 63, 196, 183, 147, 161, 132, 35, 90, 76, }, { 48, 109, 17, 37, 24, 31, 229, 178, 234, 154, 47, 74, 149, 96, 18, 194, }, { 179, 244, 221, 90, 184, 155, 211, 230, 152, 237, 40, 180, 166, 165, 202, 147, }, { 115, 131, 153, 206, 216, 231, 193, 107, 182, 192, 148, 95, 183, 230, 130, 29, }, { 118, 5, 134, 164, 59, 80, 191, 78, 124, 3, 38, 139, 192, 236, 185, 49, }, { 182, 114, 194, 48, 91, 44, 173, 195, 82, 46, 154, 96, 209, 175, 241, 191, }, { 53, 235, 14, 79, 251, 168, 155, 151, 32, 89, 157, 158, 226, 106, 41, 238, }, { 245, 156, 74, 219, 155, 212, 137, 26, 14, 116, 33, 117, 243, 41, 97, 96, }, { 63, 36, 48, 155, 254, 5, 103, 221, 119, 28, 58, 245, 12, 126, 95, 182, }, { 255, 83, 116, 15, 158, 121, 117, 80, 89, 49, 134, 30, 29, 61, 23, 56, }, { 124, 202, 184, 112, 62, 253, 67, 4, 43, 70, 129, 224, 46, 248, 207, 105, }, { 188, 189, 252, 228, 94, 129, 81, 137, 5, 107, 61, 11, 63, 187, 135, 231, }, { 185, 59, 227, 142, 189, 54, 47, 172, 207, 168, 143, 223, 72, 177, 188, 203, }, { 121, 76, 167, 26, 221, 74, 61, 33, 225, 133, 51, 52, 89, 242, 244, 69, }, { 250, 213, 107, 101, 125, 206, 11, 117, 147, 242, 52, 202, 106, 55, 44, 20, }, { 58, 162, 47, 241, 29, 178, 25, 248, 189, 223, 136, 33, 123, 116, 100, 154, }, { 23, 158, 200, 77, 234, 244, 17, 54, 232, 203, 227, 154, 50, 46, 68, 21, }, { 215, 233, 140, 217, 138, 136, 3, 187, 198, 230, 95, 113, 35, 109, 12, 155, }, { 84, 112, 64, 166, 42, 12, 53, 239, 180, 145, 88, 143, 16, 168, 212, 202, }, { 148, 7, 4, 50, 74, 112, 39, 98, 154, 188, 228, 100, 1, 235, 156, 68, }, { 145, 129, 27, 88, 169, 199, 89, 71, 80, 127, 86, 176, 118, 225, 167, 104, }, { 81, 246, 95, 204, 201, 187, 75, 202, 126, 82, 234, 91, 103, 162, 239, 230, }, { 210, 111, 147, 179, 105, 63, 125, 158, 12, 37, 237, 165, 84, 103, 55, 183, }, { 18, 24, 215, 39, 9, 67, 111, 19, 34, 8, 81, 78, 69, 36, 127, 57, }, { 216, 160, 173, 103, 108, 146, 129, 212, 91, 96, 74, 206, 186, 115, 65, 239, }, { 24, 215, 233, 243, 12, 238, 147, 89, 117, 77, 246, 37, 171, 48, 9, 97, }, { 155, 78, 37, 140, 172, 106, 165, 13, 7, 58, 241, 219, 152, 245, 209, 48, }, { 91, 57, 97, 24, 204, 22, 183, 128, 41, 23, 77, 48, 137, 182, 153, 190, }, { 94, 191, 126, 114, 47, 161, 201, 165, 227, 212, 255, 228, 254, 188, 162, 146, }, { 158, 200, 58, 230, 79, 221, 219, 40, 205, 249, 67, 15, 239, 255, 234, 28, }, { 29, 81, 246, 153, 239, 89, 237, 124, 191, 142, 68, 241, 220, 58, 50, 77, }, { 221, 38, 178, 13, 143, 37, 255, 241, 145, 163, 248, 26, 205, 121, 122, 195, }, { 74, 226, 2, 25, 37, 56, 242, 49, 77, 94, 114, 50, 225, 148, 78, 34, }, { 138, 149, 70, 141, 69, 68, 224, 188, 99, 115, 206, 217, 240, 215, 6, 172, }, { 9, 12, 138, 242, 229, 192, 214, 232, 17, 4, 201, 39, 195, 18, 222, 253, }, { 201, 123, 206, 102, 133, 188, 196, 101, 63, 41, 117, 204, 210, 81, 150, 115, }, { 204, 253, 209, 12, 102, 11, 186, 64, 245, 234, 199, 24, 165, 91, 173, 95, }, { 12, 138, 149, 152, 6, 119, 168, 205, 219, 199, 123, 243, 180, 24, 229, 209, }, { 143, 19, 89, 231, 166, 243, 158, 153, 169, 176, 124, 13, 135, 221, 61, 128, }, { 79, 100, 29, 115, 198, 143, 140, 20, 135, 157, 192, 230, 150, 158, 117, 14, }, { 133, 220, 103, 51, 163, 94, 98, 211, 254, 245, 219, 102, 105, 201, 75, 216, }, { 69, 171, 35, 167, 195, 34, 112, 94, 208, 216, 103, 141, 120, 138, 3, 86, }, { 198, 50, 239, 216, 99, 166, 70, 10, 162, 175, 96, 115, 75, 79, 219, 7, }, { 6, 69, 171, 76, 3, 218, 84, 135, 140, 130, 220, 152, 90, 12, 147, 137, }, { 3, 195, 180, 38, 224, 109, 42, 162, 70, 65, 110, 76, 45, 6, 168, 165, }, { 195, 180, 240, 178, 128, 17, 56, 47, 104, 108, 210, 167, 60, 69, 224, 43, }, { 64, 45, 60, 205, 32, 149, 14, 123, 26, 27, 213, 89, 15, 128, 56, 122, }, { 128, 90, 120, 89, 64, 233, 28, 246, 52, 54, 105, 178, 30, 195, 112, 244, }, { 26, 85, 49, 118, 13, 25, 30, 36, 176, 51, 3, 236, 157, 52, 120, 167, }, { 218, 34, 117, 226, 109, 101, 12, 169, 158, 30, 191, 7, 140, 119, 48, 41, }, { 89, 187, 185, 157, 205, 225, 58, 253, 236, 105, 184, 249, 191, 178, 232, 120, }, { 153, 204, 253, 9, 173, 157, 40, 112, 194, 68, 4, 18, 174, 241, 160, 246, }, { 156, 74, 226, 99, 78, 42, 86, 85, 8, 135, 182, 198, 217, 251, 155, 218, }, { 92, 61, 166, 247, 46, 86, 68, 216, 38, 170, 10, 45, 200, 184, 211, 84, }, { 223, 164, 106, 136, 142, 210, 114, 140, 84, 221, 13, 211, 251, 125, 11, 5, }, { 31, 211, 46, 28, 238, 174, 96, 1, 122, 240, 177, 56, 234, 62, 67, 139, }, { 213, 107, 84, 92, 139, 127, 142, 198, 3, 152, 170, 184, 21, 105, 125, 93, }, { 21, 28, 16, 200, 235, 3, 156, 75, 45, 181, 22, 83, 4, 42, 53, 211, }, { 150, 133, 220, 183, 75, 135, 170, 31, 95, 194, 17, 173, 55, 239, 237, 130, }, { 86, 242, 152, 35, 43, 251, 184, 146, 113, 239, 173, 70, 38, 172, 165, 12, }, { 83, 116, 135, 73, 200, 76, 198, 183, 187, 44, 31, 146, 81, 166, 158, 32, }, { 147, 3, 195, 221, 168, 48, 212, 58, 149, 1, 163, 121, 64, 229, 214, 174, }, { 16, 154, 15, 162, 8, 180, 226, 110, 231, 118, 164, 135, 115, 32, 14, 255, }, { 208, 237, 75, 54, 104, 200, 240, 227, 201, 91, 24, 108, 98, 99, 70, 113, }, { 71, 41, 251, 34, 194, 213, 253, 35, 21, 166, 146, 68, 78, 142, 114, 144, }, { 135, 94, 191, 182, 162, 169, 239, 174, 59, 139, 46, 175, 95, 205, 58, 30, }, { 4, 199, 115, 201, 2, 45, 217, 250, 73, 252, 41, 81, 108, 8, 226, 79, }, { 196, 176, 55, 93, 98, 81, 203, 119, 103, 209, 149, 186, 125, 75, 170, 193, }, { 193, 54, 40, 55, 129, 230, 181, 82, 173, 18, 39, 110, 10, 65, 145, 237, }, { 1, 65, 108, 163, 225, 154, 167, 223, 131, 63, 155, 133, 27, 2, 217, 99, }, { 130, 216, 160, 220, 65, 30, 145, 139, 241, 72, 156, 123, 40, 199, 1, 50, }, { 66, 175, 228, 72, 33, 98, 131, 6, 223, 101, 32, 144, 57, 132, 73, 188, }, { 136, 23, 158, 8, 68, 179, 109, 193, 166, 13, 59, 16, 198, 211, 119, 106, }, { 72, 96, 218, 156, 36, 207, 127, 76, 136, 32, 135, 251, 215, 144, 63, 228, }, { 203, 249, 22, 227, 132, 75, 73, 24, 250, 87, 128, 5, 228, 85, 231, 181, }, { 11, 142, 82, 119, 228, 55, 91, 149, 212, 122, 60, 238, 245, 22, 175, 59, }, { 14, 8, 77, 29, 7, 128, 37, 176, 30, 185, 142, 58, 130, 28, 148, 23, }, { 206, 127, 9, 137, 103, 252, 55, 61, 48, 148, 50, 209, 147, 95, 220, 153, }, { 77, 230, 197, 246, 199, 120, 1, 105, 66, 227, 53, 47, 160, 154, 4, 200, }, { 141, 145, 129, 98, 167, 4, 19, 228, 108, 206, 137, 196, 177, 217, 76, 70, }, { 160, 173, 102, 222, 80, 66, 27, 42, 57, 218, 226, 127, 248, 131, 108, 201, }, { 96, 218, 34, 74, 48, 62, 9, 167, 23, 247, 94, 148, 233, 192, 36, 71, }, { 227, 67, 238, 53, 144, 186, 63, 243, 101, 128, 89, 106, 218, 5, 252, 22, }, { 35, 52, 170, 161, 240, 198, 45, 126, 75, 173, 229, 129, 203, 70, 180, 152, }, { 38, 178, 181, 203, 19, 113, 83, 91, 129, 110, 87, 85, 188, 76, 143, 180, }, { 230, 197, 241, 95, 115, 13, 65, 214, 175, 67, 235, 190, 173, 15, 199, 58, }, { 101, 92, 61, 32, 211, 137, 119, 130, 221, 52, 236, 64, 158, 202, 31, 107, }, { 165, 43, 121, 180, 179, 245, 101, 15, 243, 25, 80, 171, 143, 137, 87, 229, }, { 111, 147, 3, 244, 214, 36, 139, 200, 138, 113, 75, 43, 112, 222, 105, 51, }, { 175, 228, 71, 96, 182, 88, 153, 69, 164, 92, 247, 192, 97, 157, 33, 189, }, { 44, 125, 139, 31, 22, 220, 175, 17, 214, 43, 240, 62, 82, 88, 249, 236, }, { 236, 10, 207, 139, 118, 160, 189, 156, 248, 6, 76, 213, 67, 27, 177, 98, }, { 233, 140, 208, 225, 149, 23, 195, 185, 50, 197, 254, 1, 52, 17, 138, 78, }, { 41, 251, 148, 117, 245, 107, 209, 52, 28, 232, 66, 234, 37, 82, 194, 192, }, { 170, 98, 88, 10, 85, 239, 231, 96, 110, 159, 69, 20, 22, 151, 26, 145, }, { 106, 21, 28, 158, 53, 147, 245, 237, 64, 178, 249, 255, 7, 212, 82, 31, }, { 253, 209, 172, 138, 159, 142, 248, 45, 156, 79, 115, 215, 43, 57, 102, 254, }, { 61, 166, 232, 30, 255, 242, 234, 160, 178, 98, 207, 60, 58, 122, 46, 112, }, { 190, 63, 36, 97, 95, 118, 220, 244, 192, 21, 200, 194, 9, 191, 246, 33, }, { 126, 72, 96, 245, 63, 10, 206, 121, 238, 56, 116, 41, 24, 252, 190, 175, }, { 123, 206, 127, 159, 220, 189, 176, 92, 36, 251, 198, 253, 111, 246, 133, 131, }, { 187, 185, 59, 11, 188, 193, 162, 209, 10, 214, 122, 22, 126, 181, 205, 13, }, { 56, 32, 247, 116, 28, 69, 148, 133, 120, 161, 125, 232, 77, 112, 21, 92, }, { 248, 87, 179, 224, 124, 57, 134, 8, 86, 140, 193, 3, 92, 51, 93, 210, }, { 50, 239, 201, 160, 25, 232, 104, 207, 47, 228, 218, 131, 163, 100, 99, 4, }, { 242, 152, 141, 52, 121, 148, 122, 66, 1, 201, 102, 104, 178, 39, 43, 138, }, { 113, 1, 65, 75, 217, 16, 76, 22, 115, 190, 97, 150, 129, 226, 243, 219, }, { 177, 118, 5, 223, 185, 108, 94, 155, 93, 147, 221, 125, 144, 161, 187, 85, }, { 180, 240, 26, 181, 90, 219, 32, 190, 151, 80, 111, 169, 231, 171, 128, 121, }, { 116, 135, 94, 33, 58, 167, 50, 51, 185, 125, 211, 66, 246, 232, 200, 247, }, { 247, 30, 146, 94, 154, 35, 4, 103, 203, 10, 212, 188, 197, 45, 16, 166, }, { 55, 105, 214, 202, 250, 95, 22, 234, 229, 39, 104, 87, 212, 110, 88, 40, }, }, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, { 194, 93, 151, 243, 233, 26, 141, 203, 187, 6, 197, 32, 28, 104, 144, 147, }, { 71, 186, 237, 37, 17, 52, 217, 85, 181, 12, 73, 64, 56, 208, 227, 229, }, { 133, 231, 122, 214, 248, 46, 84, 158, 14, 10, 140, 96, 36, 184, 115, 118, }, { 142, 183, 25, 74, 34, 104, 113, 170, 169, 24, 146, 128, 112, 99, 5, 9, }, { 76, 234, 142, 185, 203, 114, 252, 97, 18, 30, 87, 160, 108, 11, 149, 154, }, { 201, 13, 244, 111, 51, 92, 168, 255, 28, 20, 219, 192, 72, 179, 230, 236, }, { 11, 80, 99, 156, 218, 70, 37, 52, 167, 18, 30, 224, 84, 219, 118, 127, }, { 223, 173, 50, 148, 68, 208, 226, 151, 145, 48, 231, 195, 224, 198, 10, 18, }, { 29, 240, 165, 103, 173, 202, 111, 92, 42, 54, 34, 227, 252, 174, 154, 129, }, { 152, 23, 223, 177, 85, 228, 59, 194, 36, 60, 174, 131, 216, 22, 233, 247, }, { 90, 74, 72, 66, 188, 254, 182, 9, 159, 58, 107, 163, 196, 126, 121, 100, }, { 81, 26, 43, 222, 102, 184, 147, 61, 56, 40, 117, 67, 144, 165, 15, 27, }, { 147, 71, 188, 45, 143, 162, 30, 246, 131, 46, 176, 99, 140, 205, 159, 136, }, { 22, 160, 198, 251, 119, 140, 74, 104, 141, 36, 60, 3, 168, 117, 236, 254, }, { 212, 253, 81, 8, 158, 150, 199, 163, 54, 34, 249, 35, 180, 29, 124, 109, }, { 125, 153, 100, 235, 136, 99, 7, 237, 225, 96, 13, 69, 3, 79, 20, 36, }, { 191, 196, 243, 24, 97, 121, 138, 38, 90, 102, 200, 101, 31, 39, 132, 183, }, { 58, 35, 137, 206, 153, 87, 222, 184, 84, 108, 68, 5, 59, 159, 247, 193, }, { 248, 126, 30, 61, 112, 77, 83, 115, 239, 106, 129, 37, 39, 247, 103, 82, }, { 243, 46, 125, 161, 170, 11, 118, 71, 72, 120, 159, 197, 115, 44, 17, 45, }, { 49, 115, 234, 82, 67, 17, 251, 140, 243, 126, 90, 229, 111, 68, 129, 190, }, { 180, 148, 144, 132, 187, 63, 175, 18, 253, 116, 214, 133, 75, 252, 242, 200, }, { 118, 201, 7, 119, 82, 37, 34, 217, 70, 114, 19, 165, 87, 148, 98, 91, }, { 162, 52, 86, 127, 204, 179, 229, 122, 112, 80, 234, 134, 227, 137, 30, 54, }, { 96, 105, 193, 140, 37, 169, 104, 177, 203, 86, 47, 166, 255, 225, 142, 165, }, { 229, 142, 187, 90, 221, 135, 60, 47, 197, 92, 163, 198, 219, 89, 253, 211, }, { 39, 211, 44, 169, 52, 157, 177, 228, 126, 90, 102, 230, 199, 49, 109, 64, }, { 44, 131, 79, 53, 238, 219, 148, 208, 217, 72, 120, 6, 147, 234, 27, 63, }, { 238, 222, 216, 198, 7, 193, 25, 27, 98, 78, 189, 38, 143, 130, 139, 172, }, { 107, 57, 162, 16, 255, 239, 77, 133, 108, 68, 49, 70, 171, 58, 248, 218, }, { 169, 100, 53, 227, 22, 245, 192, 78, 215, 66, 244, 102, 183, 82, 104, 73, }, { 250, 241, 200, 21, 211, 198, 14, 25, 1, 192, 26, 138, 6, 158, 40, 72, }, { 56, 172, 95, 230, 58, 220, 131, 210, 186, 198, 223, 170, 26, 246, 184, 219, }, { 189, 75, 37, 48, 194, 242, 215, 76, 180, 204, 83, 202, 62, 78, 203, 173, }, { 127, 22, 178, 195, 43, 232, 90, 135, 15, 202, 150, 234, 34, 38, 91, 62, }, { 116, 70, 209, 95, 241, 174, 127, 179, 168, 216, 136, 10, 118, 253, 45, 65, }, { 182, 27, 70, 172, 24, 180, 242, 120, 19, 222, 77, 42, 106, 149, 189, 210, }, { 51, 252, 60, 122, 224, 154, 166, 230, 29, 212, 193, 74, 78, 45, 206, 164, }, { 241, 161, 171, 137, 9, 128, 43, 45, 166, 210, 4, 106, 82, 69, 94, 55, }, { 37, 92, 250, 129, 151, 22, 236, 142, 144, 240, 253, 73, 230, 88, 34, 90, }, { 231, 1, 109, 114, 126, 12, 97, 69, 43, 246, 56, 105, 250, 48, 178, 201, }, { 98, 230, 23, 164, 134, 34, 53, 219, 37, 252, 180, 9, 222, 136, 193, 191, }, { 160, 187, 128, 87, 111, 56, 184, 16, 158, 250, 113, 41, 194, 224, 81, 44, }, { 171, 235, 227, 203, 181, 126, 157, 36, 57, 232, 111, 201, 150, 59, 39, 83, }, { 105, 182, 116, 56, 92, 100, 16, 239, 130, 238, 170, 233, 138, 83, 183, 192, }, { 236, 81, 14, 238, 164, 74, 68, 113, 140, 228, 38, 137, 174, 235, 196, 182, }, { 46, 12, 153, 29, 77, 80, 201, 186, 55, 226, 227, 169, 178, 131, 84, 37, }, { 135, 104, 172, 254, 91, 165, 9, 244, 224, 160, 23, 207, 5, 209, 60, 108, }, { 69, 53, 59, 13, 178, 191, 132, 63, 91, 166, 210, 239, 25, 185, 172, 255, }, { 192, 210, 65, 219, 74, 145, 208, 161, 85, 172, 94, 143, 61, 1, 223, 137, }, { 2, 143, 214, 40, 163, 139, 93, 106, 238, 170, 155, 175, 33, 105, 79, 26, }, { 9, 223, 181, 180, 121, 205, 120, 94, 73, 184, 133, 79, 117, 178, 57, 101, }, { 203, 130, 34, 71, 144, 215, 245, 149, 242, 190, 64, 111, 105, 218, 169, 246, }, { 78, 101, 88, 145, 104, 249, 161, 11, 252, 180, 204, 15, 77, 98, 218, 128, }, { 140, 56, 207, 98, 129, 227, 44, 192, 71, 178, 9, 47, 81, 10, 74, 19, }, { 88, 197, 158, 106, 31, 117, 235, 99, 113, 144, 240, 12, 229, 23, 54, 126, }, { 154, 152, 9, 153, 246, 111, 102, 168, 202, 150, 53, 44, 249, 127, 166, 237, }, { 31, 127, 115, 79, 14, 65, 50, 54, 196, 156, 185, 76, 221, 199, 213, 155, }, { 221, 34, 228, 188, 231, 91, 191, 253, 127, 154, 124, 108, 193, 175, 69, 8, }, { 214, 114, 135, 32, 61, 29, 154, 201, 216, 136, 98, 140, 149, 116, 51, 119, }, { 20, 47, 16, 211, 212, 7, 23, 2, 99, 142, 167, 172, 137, 28, 163, 228, }, { 145, 200, 106, 5, 44, 41, 67, 156, 109, 132, 43, 204, 173, 164, 208, 146, }, { 83, 149, 253, 246, 197, 51, 206, 87, 214, 130, 238, 236, 177, 204, 64, 1, }, { 55, 33, 83, 42, 101, 79, 28, 50, 2, 67, 52, 215, 12, 255, 80, 144, }, { 245, 124, 196, 217, 140, 85, 145, 249, 185, 69, 241, 247, 16, 151, 192, 3, }, { 112, 155, 190, 15, 116, 123, 197, 103, 183, 79, 125, 151, 52, 47, 179, 117, }, { 178, 198, 41, 252, 157, 97, 72, 172, 12, 73, 184, 183, 40, 71, 35, 230, }, { 185, 150, 74, 96, 71, 39, 109, 152, 171, 91, 166, 87, 124, 156, 85, 153, }, { 123, 203, 221, 147, 174, 61, 224, 83, 16, 93, 99, 119, 96, 244, 197, 10, }, { 254, 44, 167, 69, 86, 19, 180, 205, 30, 87, 239, 23, 68, 76, 182, 124, }, { 60, 113, 48, 182, 191, 9, 57, 6, 165, 81, 42, 55, 88, 36, 38, 239, }, { 232, 140, 97, 190, 33, 159, 254, 165, 147, 115, 211, 20, 236, 57, 90, 130, }, { 42, 209, 246, 77, 200, 133, 115, 110, 40, 117, 22, 52, 240, 81, 202, 17, }, { 175, 54, 140, 155, 48, 171, 39, 240, 38, 127, 154, 84, 212, 233, 185, 103, }, { 109, 107, 27, 104, 217, 177, 170, 59, 157, 121, 95, 116, 200, 129, 41, 244, }, { 102, 59, 120, 244, 3, 247, 143, 15, 58, 107, 65, 148, 156, 90, 95, 139, }, { 164, 102, 239, 7, 234, 237, 2, 196, 129, 109, 132, 180, 128, 50, 207, 24, }, { 33, 129, 149, 209, 18, 195, 86, 90, 143, 103, 8, 212, 164, 138, 188, 110, }, { 227, 220, 2, 34, 251, 217, 219, 145, 52, 97, 205, 244, 184, 226, 44, 253, }, { 74, 184, 55, 193, 237, 44, 27, 223, 227, 35, 57, 146, 15, 176, 68, 180, }, { 136, 229, 160, 50, 4, 54, 150, 20, 88, 37, 252, 178, 19, 216, 212, 39, }, { 13, 2, 218, 228, 252, 24, 194, 138, 86, 47, 112, 210, 55, 96, 167, 81, }, { 207, 95, 77, 23, 21, 2, 79, 65, 237, 41, 181, 242, 43, 8, 55, 194, }, { 196, 15, 46, 139, 207, 68, 106, 117, 74, 59, 171, 18, 127, 211, 65, 189, }, { 6, 82, 185, 120, 38, 94, 231, 190, 241, 61, 110, 50, 99, 187, 209, 46, }, { 131, 181, 195, 174, 222, 112, 179, 32, 255, 55, 226, 82, 71, 3, 162, 88, }, { 65, 232, 84, 93, 55, 106, 62, 235, 68, 49, 39, 114, 91, 107, 50, 203, }, { 149, 21, 5, 85, 169, 252, 249, 72, 114, 19, 222, 81, 239, 118, 78, 166, }, { 87, 72, 146, 166, 64, 230, 116, 131, 201, 21, 27, 113, 243, 30, 222, 53, }, { 210, 175, 232, 112, 184, 200, 32, 29, 199, 31, 151, 17, 215, 166, 173, 67, }, { 16, 242, 127, 131, 81, 210, 173, 214, 124, 25, 82, 49, 203, 206, 61, 208, }, { 27, 162, 28, 31, 139, 148, 136, 226, 219, 11, 76, 209, 159, 21, 75, 175, }, { 217, 255, 139, 236, 98, 142, 5, 41, 96, 13, 137, 241, 131, 125, 219, 60, }, { 92, 24, 241, 58, 154, 160, 81, 183, 110, 7, 5, 145, 167, 197, 168, 74, }, { 158, 69, 102, 201, 115, 186, 220, 124, 213, 1, 192, 177, 187, 173, 56, 217, }, { 205, 208, 155, 63, 182, 137, 18, 43, 3, 131, 46, 93, 10, 97, 120, 216, }, { 15, 141, 12, 204, 95, 147, 159, 224, 184, 133, 235, 125, 22, 9, 232, 75, }, { 138, 106, 118, 26, 167, 189, 203, 126, 182, 143, 103, 29, 50, 177, 155, 61, }, { 72, 55, 225, 233, 78, 167, 70, 181, 13, 137, 162, 61, 46, 217, 11, 174, }, { 67, 103, 130, 117, 148, 225, 99, 129, 170, 155, 188, 221, 122, 2, 125, 209, }, { 129, 58, 21, 134, 125, 251, 238, 74, 17, 157, 121, 253, 102, 106, 237, 66, }, { 4, 221, 111, 80, 133, 213, 186, 212, 31, 151, 245, 157, 66, 210, 158, 52, }, { 198, 128, 248, 163, 108, 207, 55, 31, 164, 145, 48, 189, 94, 186, 14, 167, }, { 18, 125, 169, 171, 242, 89, 240, 188, 146, 179, 201, 158, 234, 167, 114, 202, }, { 208, 32, 62, 88, 27, 67, 125, 119, 41, 181, 12, 190, 246, 207, 226, 89, }, { 85, 199, 68, 142, 227, 109, 41, 233, 39, 191, 128, 222, 210, 119, 145, 47, }, { 151, 154, 211, 125, 10, 119, 164, 34, 156, 185, 69, 254, 206, 31, 1, 188, }, { 156, 202, 176, 225, 208, 49, 129, 22, 59, 171, 91, 30, 154, 196, 119, 195, }, { 94, 151, 39, 18, 57, 43, 12, 221, 128, 173, 158, 62, 134, 172, 231, 80, }, { 219, 112, 93, 196, 193, 5, 88, 67, 142, 167, 18, 94, 162, 20, 148, 38, }, { 25, 45, 202, 55, 40, 31, 213, 136, 53, 161, 215, 126, 190, 124, 4, 181, }, { 176, 73, 255, 212, 62, 234, 21, 198, 226, 227, 35, 24, 9, 46, 108, 252, }, { 114, 20, 104, 39, 215, 240, 152, 13, 89, 229, 230, 56, 21, 70, 252, 111, }, { 247, 243, 18, 241, 47, 222, 204, 147, 87, 239, 106, 88, 49, 254, 143, 25, }, { 53, 174, 133, 2, 198, 196, 65, 88, 236, 233, 175, 120, 45, 150, 31, 138, }, { 62, 254, 230, 158, 28, 130, 100, 108, 75, 251, 177, 152, 121, 77, 105, 245, }, { 252, 163, 113, 109, 245, 152, 233, 167, 240, 253, 116, 184, 101, 37, 249, 102, }, { 121, 68, 11, 187, 13, 182, 189, 57, 254, 247, 248, 216, 65, 157, 138, 16, }, { 187, 25, 156, 72, 228, 172, 48, 242, 69, 241, 61, 248, 93, 245, 26, 131, }, { 111, 228, 205, 64, 122, 58, 247, 81, 115, 211, 196, 219, 233, 232, 102, 238, }, { 173, 185, 90, 179, 147, 32, 122, 154, 200, 213, 1, 251, 245, 128, 246, 125, }, { 40, 94, 32, 101, 107, 14, 46, 4, 198, 223, 141, 155, 209, 56, 133, 11, }, { 234, 3, 183, 150, 130, 20, 163, 207, 125, 217, 72, 187, 205, 80, 21, 152, }, { 225, 83, 212, 10, 88, 82, 134, 251, 218, 203, 86, 91, 153, 139, 99, 231, }, { 35, 14, 67, 249, 177, 72, 11, 48, 97, 205, 147, 123, 133, 227, 243, 116, }, { 166, 233, 57, 47, 73, 102, 95, 174, 111, 199, 31, 27, 161, 91, 128, 2, }, { 100, 180, 174, 220, 160, 124, 210, 101, 212, 193, 218, 59, 189, 51, 16, 145, }, { 110, 66, 166, 84, 202, 158, 56, 100, 4, 134, 104, 109, 24, 61, 160, 227, }, { 172, 31, 49, 167, 35, 132, 181, 175, 191, 128, 173, 77, 4, 85, 48, 112, }, { 41, 248, 75, 113, 219, 170, 225, 49, 177, 138, 33, 45, 32, 237, 67, 6, }, { 235, 165, 220, 130, 50, 176, 108, 250, 10, 140, 228, 13, 60, 133, 211, 149, }, { 224, 245, 191, 30, 232, 246, 73, 206, 173, 158, 250, 237, 104, 94, 165, 234, }, { 34, 168, 40, 237, 1, 236, 196, 5, 22, 152, 63, 205, 116, 54, 53, 121, }, { 167, 79, 82, 59, 249, 194, 144, 155, 24, 146, 179, 173, 80, 142, 70, 15, }, { 101, 18, 197, 200, 16, 216, 29, 80, 163, 148, 118, 141, 76, 230, 214, 156, }, { 177, 239, 148, 192, 142, 78, 218, 243, 149, 182, 143, 174, 248, 251, 170, 241, }, { 115, 178, 3, 51, 103, 84, 87, 56, 46, 176, 74, 142, 228, 147, 58, 98, }, { 246, 85, 121, 229, 159, 122, 3, 166, 32, 186, 198, 238, 192, 43, 73, 20, }, { 52, 8, 238, 22, 118, 96, 142, 109, 155, 188, 3, 206, 220, 67, 217, 135, }, { 63, 88, 141, 138, 172, 38, 171, 89, 60, 174, 29, 46, 136, 152, 175, 248, }, { 253, 5, 26, 121, 69, 60, 38, 146, 135, 168, 216, 14, 148, 240, 63, 107, }, { 120, 226, 96, 175, 189, 18, 114, 12, 137, 162, 84, 110, 176, 72, 76, 29, }, { 186, 191, 247, 92, 84, 8, 255, 199, 50, 164, 145, 78, 172, 32, 220, 142, }, { 19, 219, 194, 191, 66, 253, 63, 137, 229, 230, 101, 40, 27, 114, 180, 199, }, { 209, 134, 85, 76, 171, 231, 178, 66, 94, 224, 160, 8, 7, 26, 36, 84, }, { 84, 97, 47, 154, 83, 201, 230, 220, 80, 234, 44, 104, 35, 162, 87, 34, }, { 150, 60, 184, 105, 186, 211, 107, 23, 235, 236, 233, 72, 63, 202, 199, 177, }, { 157, 108, 219, 245, 96, 149, 78, 35, 76, 254, 247, 168, 107, 17, 177, 206, }, { 95, 49, 76, 6, 137, 143, 195, 232, 247, 248, 50, 136, 119, 121, 33, 93, }, { 218, 214, 54, 208, 113, 161, 151, 118, 249, 242, 190, 232, 83, 193, 82, 43, }, { 24, 139, 161, 35, 152, 187, 26, 189, 66, 244, 123, 200, 79, 169, 194, 184, }, { 204, 118, 240, 43, 6, 45, 221, 30, 116, 214, 130, 235, 251, 180, 190, 213, }, { 14, 43, 103, 216, 239, 55, 80, 213, 207, 208, 71, 203, 231, 220, 46, 70, }, { 139, 204, 29, 14, 23, 25, 4, 75, 193, 218, 203, 171, 195, 100, 93, 48, }, { 73, 145, 138, 253, 254, 3, 137, 128, 122, 220, 14, 139, 223, 12, 205, 163, }, { 66, 193, 233, 97, 36, 69, 172, 180, 221, 206, 16, 107, 139, 215, 187, 220, }, { 128, 156, 126, 146, 205, 95, 33, 127, 102, 200, 213, 75, 151, 191, 43, 79, }, { 5, 123, 4, 68, 53, 113, 117, 225, 104, 194, 89, 43, 179, 7, 88, 57, }, { 199, 38, 147, 183, 220, 107, 248, 42, 211, 196, 156, 11, 175, 111, 200, 170, }, { 148, 179, 110, 65, 25, 88, 54, 125, 5, 70, 114, 231, 30, 163, 136, 171, }, { 86, 238, 249, 178, 240, 66, 187, 182, 190, 64, 183, 199, 2, 203, 24, 56, }, { 211, 9, 131, 100, 8, 108, 239, 40, 176, 74, 59, 167, 38, 115, 107, 78, }, { 17, 84, 20, 151, 225, 118, 98, 227, 11, 76, 254, 135, 58, 27, 251, 221, }, { 26, 4, 119, 11, 59, 48, 71, 215, 172, 94, 224, 103, 110, 192, 141, 162, }, { 216, 89, 224, 248, 210, 42, 202, 28, 23, 88, 37, 71, 114, 168, 29, 49, }, { 93, 190, 154, 46, 42, 4, 158, 130, 25, 82, 169, 39, 86, 16, 110, 71, }, { 159, 227, 13, 221, 195, 30, 19, 73, 162, 84, 108, 7, 74, 120, 254, 212, }, { 75, 30, 92, 213, 93, 136, 212, 234, 148, 118, 149, 36, 254, 101, 130, 185, }, { 137, 67, 203, 38, 180, 146, 89, 33, 47, 112, 80, 4, 226, 13, 18, 42, }, { 12, 164, 177, 240, 76, 188, 13, 191, 33, 122, 220, 100, 198, 181, 97, 92, }, { 206, 249, 38, 3, 165, 166, 128, 116, 154, 124, 25, 68, 218, 221, 241, 207, }, { 197, 169, 69, 159, 127, 224, 165, 64, 61, 110, 7, 164, 142, 6, 135, 176, }, { 7, 244, 210, 108, 150, 250, 40, 139, 134, 104, 194, 132, 146, 110, 23, 35, }, { 130, 19, 168, 186, 110, 212, 124, 21, 136, 98, 78, 228, 182, 214, 100, 85, }, { 64, 78, 63, 73, 135, 206, 241, 222, 51, 100, 139, 196, 170, 190, 244, 198, }, { 233, 42, 10, 170, 145, 59, 49, 144, 228, 38, 127, 162, 29, 236, 156, 143, }, { 43, 119, 157, 89, 120, 33, 188, 91, 95, 32, 186, 130, 1, 132, 12, 28, }, { 174, 144, 231, 143, 128, 15, 232, 197, 81, 42, 54, 226, 37, 60, 127, 106, }, { 108, 205, 112, 124, 105, 21, 101, 14, 234, 44, 243, 194, 57, 84, 239, 249, }, { 103, 157, 19, 224, 179, 83, 64, 58, 77, 62, 237, 34, 109, 143, 153, 134, }, { 165, 192, 132, 19, 90, 73, 205, 241, 246, 56, 40, 2, 113, 231, 9, 21, }, { 32, 39, 254, 197, 162, 103, 153, 111, 248, 50, 164, 98, 85, 95, 122, 99, }, { 226, 122, 105, 54, 75, 125, 20, 164, 67, 52, 97, 66, 73, 55, 234, 240, }, { 54, 135, 56, 62, 213, 235, 211, 7, 117, 22, 152, 97, 253, 42, 150, 157, }, { 244, 218, 175, 205, 60, 241, 94, 204, 206, 16, 93, 65, 225, 66, 6, 14, }, { 113, 61, 213, 27, 196, 223, 10, 82, 192, 26, 209, 33, 197, 250, 117, 120, }, { 179, 96, 66, 232, 45, 197, 135, 153, 123, 28, 20, 1, 217, 146, 229, 235, }, { 184, 48, 33, 116, 247, 131, 162, 173, 220, 14, 10, 225, 141, 73, 147, 148, }, { 122, 109, 182, 135, 30, 153, 47, 102, 103, 8, 207, 193, 145, 33, 3, 7, }, { 255, 138, 204, 81, 230, 183, 123, 248, 105, 2, 67, 161, 181, 153, 112, 113, }, { 61, 215, 91, 162, 15, 173, 246, 51, 210, 4, 134, 129, 169, 241, 224, 226, }, { 89, 99, 245, 126, 175, 209, 36, 86, 6, 197, 92, 186, 20, 194, 240, 115, }, { 155, 62, 98, 141, 70, 203, 169, 157, 189, 195, 153, 154, 8, 170, 96, 224, }, { 30, 217, 24, 91, 190, 229, 253, 3, 179, 201, 21, 250, 44, 18, 19, 150, }, { 220, 132, 143, 168, 87, 255, 112, 200, 8, 207, 208, 218, 48, 122, 131, 5, }, { 215, 212, 236, 52, 141, 185, 85, 252, 175, 221, 206, 58, 100, 161, 245, 122, }, { 21, 137, 123, 199, 100, 163, 216, 55, 20, 219, 11, 26, 120, 201, 101, 233, }, { 144, 110, 1, 17, 156, 141, 140, 169, 26, 209, 135, 122, 92, 113, 22, 159, }, { 82, 51, 150, 226, 117, 151, 1, 98, 161, 215, 66, 90, 64, 25, 134, 12, }, { 134, 206, 199, 234, 235, 1, 198, 193, 151, 245, 187, 121, 244, 4, 250, 97, }, { 68, 147, 80, 25, 2, 27, 75, 10, 44, 243, 126, 89, 232, 108, 106, 242, }, { 193, 116, 42, 207, 250, 53, 31, 148, 34, 249, 242, 57, 204, 212, 25, 132, }, { 3, 41, 189, 60, 19, 47, 146, 95, 153, 255, 55, 25, 208, 188, 137, 23, }, { 8, 121, 222, 160, 201, 105, 183, 107, 62, 237, 41, 249, 132, 103, 255, 104, }, { 202, 36, 73, 83, 32, 115, 58, 160, 133, 235, 236, 217, 152, 15, 111, 251, }, { 79, 195, 51, 133, 216, 93, 110, 62, 139, 225, 96, 185, 188, 183, 28, 141, }, { 141, 158, 164, 118, 49, 71, 227, 245, 48, 231, 165, 153, 160, 223, 140, 30, }, { 36, 250, 145, 149, 39, 178, 35, 187, 231, 165, 81, 255, 23, 141, 228, 87, }, { 230, 167, 6, 102, 206, 168, 174, 112, 92, 163, 148, 223, 11, 229, 116, 196, }, { 99, 64, 124, 176, 54, 134, 250, 238, 82, 169, 24, 191, 47, 93, 7, 178, }, { 161, 29, 235, 67, 223, 156, 119, 37, 233, 175, 221, 159, 51, 53, 151, 33, }, { 170, 77, 136, 223, 5, 218, 82, 17, 78, 189, 195, 127, 103, 238, 225, 94, }, { 104, 16, 31, 44, 236, 192, 223, 218, 245, 187, 6, 95, 123, 134, 113, 205, }, { 237, 247, 101, 250, 20, 238, 139, 68, 251, 177, 138, 63, 95, 62, 2, 187, }, { 47, 170, 242, 9, 253, 244, 6, 143, 64, 183, 79, 31, 67, 86, 146, 40, }, { 251, 87, 163, 1, 99, 98, 193, 44, 118, 149, 182, 60, 247, 75, 238, 69, }, { 57, 10, 52, 242, 138, 120, 76, 231, 205, 147, 115, 28, 235, 35, 126, 214, }, { 188, 237, 78, 36, 114, 86, 24, 121, 195, 153, 255, 124, 207, 155, 13, 160, }, { 126, 176, 217, 215, 155, 76, 149, 178, 120, 159, 58, 92, 211, 243, 157, 51, }, { 117, 224, 186, 75, 65, 10, 176, 134, 223, 141, 36, 188, 135, 40, 235, 76, }, { 183, 189, 45, 184, 168, 16, 61, 77, 100, 139, 225, 156, 155, 64, 123, 223, }, { 50, 90, 87, 110, 80, 62, 105, 211, 106, 129, 109, 252, 191, 248, 8, 169, }, { 240, 7, 192, 157, 185, 36, 228, 24, 209, 135, 168, 220, 163, 144, 152, 58, }, { 163, 146, 61, 107, 124, 23, 42, 79, 7, 5, 70, 48, 18, 92, 216, 59, }, { 97, 207, 170, 152, 149, 13, 167, 132, 188, 3, 131, 16, 14, 52, 72, 168, }, { 228, 40, 208, 78, 109, 35, 243, 26, 178, 9, 15, 112, 42, 140, 59, 222, }, { 38, 117, 71, 189, 132, 57, 126, 209, 9, 15, 202, 80, 54, 228, 171, 77, }, { 45, 37, 36, 33, 94, 127, 91, 229, 174, 29, 212, 176, 98, 63, 221, 50, }, { 239, 120, 179, 210, 183, 101, 214, 46, 21, 27, 17, 144, 126, 87, 77, 161, }, { 106, 159, 201, 4, 79, 75, 130, 176, 27, 17, 157, 240, 90, 239, 62, 215, }, { 168, 194, 94, 247, 166, 81, 15, 123, 160, 23, 88, 208, 70, 135, 174, 68, }, { 124, 63, 15, 255, 56, 199, 200, 216, 150, 53, 161, 243, 242, 154, 210, 41, }, { 190, 98, 152, 12, 209, 221, 69, 19, 45, 51, 100, 211, 238, 242, 66, 186, }, { 59, 133, 226, 218, 41, 243, 17, 141, 35, 57, 232, 179, 202, 74, 49, 204, }, { 249, 216, 117, 41, 192, 233, 156, 70, 152, 63, 45, 147, 214, 34, 161, 95, }, { 242, 136, 22, 181, 26, 175, 185, 114, 63, 45, 51, 115, 130, 249, 215, 32, }, { 48, 213, 129, 70, 243, 181, 52, 185, 132, 43, 246, 83, 158, 145, 71, 179, }, { 181, 50, 251, 144, 11, 155, 96, 39, 138, 33, 122, 51, 186, 41, 52, 197, }, { 119, 111, 108, 99, 226, 129, 237, 236, 49, 39, 191, 19, 166, 65, 164, 86, }, { 222, 11, 89, 128, 244, 116, 45, 162, 230, 101, 75, 117, 17, 19, 204, 31, }, { 28, 86, 206, 115, 29, 110, 160, 105, 93, 99, 142, 85, 13, 123, 92, 140, }, { 153, 177, 180, 165, 229, 64, 244, 247, 83, 105, 2, 53, 41, 195, 47, 250, }, { 91, 236, 35, 86, 12, 90, 121, 60, 232, 111, 199, 21, 53, 171, 191, 105, }, { 80, 188, 64, 202, 214, 28, 92, 8, 79, 125, 217, 245, 97, 112, 201, 22, }, { 146, 225, 215, 57, 63, 6, 209, 195, 244, 123, 28, 213, 125, 24, 89, 133, }, { 23, 6, 173, 239, 199, 40, 133, 93, 250, 113, 144, 181, 89, 160, 42, 243, }, { 213, 91, 58, 28, 46, 50, 8, 150, 65, 119, 85, 149, 69, 200, 186, 96, }, { 1, 166, 107, 20, 176, 164, 207, 53, 119, 85, 172, 182, 241, 213, 198, 13, }, { 195, 251, 252, 231, 89, 190, 66, 254, 204, 83, 105, 150, 237, 189, 86, 158, }, { 70, 28, 134, 49, 161, 144, 22, 96, 194, 89, 229, 246, 201, 5, 37, 232, }, { 132, 65, 17, 194, 72, 138, 155, 171, 121, 95, 32, 214, 213, 109, 181, 123, }, { 143, 17, 114, 94, 146, 204, 190, 159, 222, 77, 62, 54, 129, 182, 195, 4, }, { 77, 76, 229, 173, 123, 214, 51, 84, 101, 75, 251, 22, 157, 222, 83, 151, }, { 200, 171, 159, 123, 131, 248, 103, 202, 107, 65, 119, 118, 185, 102, 32, 225, }, { 10, 246, 8, 136, 106, 226, 234, 1, 208, 71, 178, 86, 165, 14, 176, 114, }, }, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, { 16, 150, 202, 217, 48, 104, 47, 20, 26, 23, 12, 202, 12, 112, 218, 191, }, { 32, 239, 87, 113, 96, 208, 94, 40, 52, 46, 24, 87, 24, 224, 119, 189, }, { 48, 121, 157, 168, 80, 184, 113, 60, 46, 57, 20, 157, 20, 144, 173, 2, }, { 64, 29, 174, 226, 192, 99, 188, 80, 104, 92, 48, 174, 48, 3, 238, 185, }, { 80, 139, 100, 59, 240, 11, 147, 68, 114, 75, 60, 100, 60, 115, 52, 6, }, { 96, 242, 249, 147, 160, 179, 226, 120, 92, 114, 40, 249, 40, 227, 153, 4, }, { 112, 100, 51, 74, 144, 219, 205, 108, 70, 101, 36, 51, 36, 147, 67, 187, }, { 128, 58, 159, 7, 67, 198, 187, 160, 208, 184, 96, 159, 96, 6, 31, 177, }, { 144, 172, 85, 222, 115, 174, 148, 180, 202, 175, 108, 85, 108, 118, 197, 14, }, { 160, 213, 200, 118, 35, 22, 229, 136, 228, 150, 120, 200, 120, 230, 104, 12, }, { 176, 67, 2, 175, 19, 126, 202, 156, 254, 129, 116, 2, 116, 150, 178, 179, }, { 192, 39, 49, 229, 131, 165, 7, 240, 184, 228, 80, 49, 80, 5, 241, 8, }, { 208, 177, 251, 60, 179, 205, 40, 228, 162, 243, 92, 251, 92, 117, 43, 183, }, { 224, 200, 102, 148, 227, 117, 89, 216, 140, 202, 72, 102, 72, 229, 134, 181, }, { 240, 94, 172, 77, 211, 29, 118, 204, 150, 221, 68, 172, 68, 149, 92, 10, }, { 195, 116, 253, 14, 134, 79, 181, 131, 99, 179, 192, 253, 192, 12, 62, 161, }, { 211, 226, 55, 215, 182, 39, 154, 151, 121, 164, 204, 55, 204, 124, 228, 30, }, { 227, 155, 170, 127, 230, 159, 235, 171, 87, 157, 216, 170, 216, 236, 73, 28, }, { 243, 13, 96, 166, 214, 247, 196, 191, 77, 138, 212, 96, 212, 156, 147, 163, }, { 131, 105, 83, 236, 70, 44, 9, 211, 11, 239, 240, 83, 240, 15, 208, 24, }, { 147, 255, 153, 53, 118, 68, 38, 199, 17, 248, 252, 153, 252, 127, 10, 167, }, { 163, 134, 4, 157, 38, 252, 87, 251, 63, 193, 232, 4, 232, 239, 167, 165, }, { 179, 16, 206, 68, 22, 148, 120, 239, 37, 214, 228, 206, 228, 159, 125, 26, }, { 67, 78, 98, 9, 197, 137, 14, 35, 179, 11, 160, 98, 160, 10, 33, 16, }, { 83, 216, 168, 208, 245, 225, 33, 55, 169, 28, 172, 168, 172, 122, 251, 175, }, { 99, 161, 53, 120, 165, 89, 80, 11, 135, 37, 184, 53, 184, 234, 86, 173, }, { 115, 55, 255, 161, 149, 49, 127, 31, 157, 50, 180, 255, 180, 154, 140, 18, }, { 3, 83, 204, 235, 5, 234, 178, 115, 219, 87, 144, 204, 144, 9, 207, 169, }, { 19, 197, 6, 50, 53, 130, 157, 103, 193, 64, 156, 6, 156, 121, 21, 22, }, { 35, 188, 155, 154, 101, 58, 236, 91, 239, 121, 136, 155, 136, 233, 184, 20, }, { 51, 42, 81, 67, 85, 82, 195, 79, 245, 110, 132, 81, 132, 153, 98, 171, }, { 69, 232, 57, 28, 207, 158, 169, 197, 198, 165, 67, 57, 67, 24, 124, 129, }, { 85, 126, 243, 197, 255, 246, 134, 209, 220, 178, 79, 243, 79, 104, 166, 62, }, { 101, 7, 110, 109, 175, 78, 247, 237, 242, 139, 91, 110, 91, 248, 11, 60, }, { 117, 145, 164, 180, 159, 38, 216, 249, 232, 156, 87, 164, 87, 136, 209, 131, }, { 5, 245, 151, 254, 15, 253, 21, 149, 174, 249, 115, 151, 115, 27, 146, 56, }, { 21, 99, 93, 39, 63, 149, 58, 129, 180, 238, 127, 93, 127, 107, 72, 135, }, { 37, 26, 192, 143, 111, 45, 75, 189, 154, 215, 107, 192, 107, 251, 229, 133, }, { 53, 140, 10, 86, 95, 69, 100, 169, 128, 192, 103, 10, 103, 139, 63, 58, }, { 197, 210, 166, 27, 140, 88, 18, 101, 22, 29, 35, 166, 35, 30, 99, 48, }, { 213, 68, 108, 194, 188, 48, 61, 113, 12, 10, 47, 108, 47, 110, 185, 143, }, { 229, 61, 241, 106, 236, 136, 76, 77, 34, 51, 59, 241, 59, 254, 20, 141, }, { 245, 171, 59, 179, 220, 224, 99, 89, 56, 36, 55, 59, 55, 142, 206, 50, }, { 133, 207, 8, 249, 76, 59, 174, 53, 126, 65, 19, 8, 19, 29, 141, 137, }, { 149, 89, 194, 32, 124, 83, 129, 33, 100, 86, 31, 194, 31, 109, 87, 54, }, { 165, 32, 95, 136, 44, 235, 240, 29, 74, 111, 11, 95, 11, 253, 250, 52, }, { 181, 182, 149, 81, 28, 131, 223, 9, 80, 120, 7, 149, 7, 141, 32, 139, }, { 134, 156, 196, 18, 73, 209, 28, 70, 165, 22, 131, 196, 131, 20, 66, 32, }, { 150, 10, 14, 203, 121, 185, 51, 82, 191, 1, 143, 14, 143, 100, 152, 159, }, { 166, 115, 147, 99, 41, 1, 66, 110, 145, 56, 155, 147, 155, 244, 53, 157, }, { 182, 229, 89, 186, 25, 105, 109, 122, 139, 47, 151, 89, 151, 132, 239, 34, }, { 198, 129, 106, 240, 137, 178, 160, 22, 205, 74, 179, 106, 179, 23, 172, 153, }, { 214, 23, 160, 41, 185, 218, 143, 2, 215, 93, 191, 160, 191, 103, 118, 38, }, { 230, 110, 61, 129, 233, 98, 254, 62, 249, 100, 171, 61, 171, 247, 219, 36, }, { 246, 248, 247, 88, 217, 10, 209, 42, 227, 115, 167, 247, 167, 135, 1, 155, }, { 6, 166, 91, 21, 10, 23, 167, 230, 117, 174, 227, 91, 227, 18, 93, 145, }, { 22, 48, 145, 204, 58, 127, 136, 242, 111, 185, 239, 145, 239, 98, 135, 46, }, { 38, 73, 12, 100, 106, 199, 249, 206, 65, 128, 251, 12, 251, 242, 42, 44, }, { 54, 223, 198, 189, 90, 175, 214, 218, 91, 151, 247, 198, 247, 130, 240, 147, }, { 70, 187, 245, 247, 202, 116, 27, 182, 29, 242, 211, 245, 211, 17, 179, 40, }, { 86, 45, 63, 46, 250, 28, 52, 162, 7, 229, 223, 63, 223, 97, 105, 151, }, { 102, 84, 162, 134, 170, 164, 69, 158, 41, 220, 203, 162, 203, 241, 196, 149, }, { 118, 194, 104, 95, 154, 204, 106, 138, 51, 203, 199, 104, 199, 129, 30, 42, }, { 138, 19, 114, 56, 93, 255, 145, 73, 79, 137, 134, 114, 134, 48, 248, 193, }, { 154, 133, 184, 225, 109, 151, 190, 93, 85, 158, 138, 184, 138, 64, 34, 126, }, { 170, 252, 37, 73, 61, 47, 207, 97, 123, 167, 158, 37, 158, 208, 143, 124, }, { 186, 106, 239, 144, 13, 71, 224, 117, 97, 176, 146, 239, 146, 160, 85, 195, }, { 202, 14, 220, 218, 157, 156, 45, 25, 39, 213, 182, 220, 182, 51, 22, 120, }, { 218, 152, 22, 3, 173, 244, 2, 13, 61, 194, 186, 22, 186, 67, 204, 199, }, { 234, 225, 139, 171, 253, 76, 115, 49, 19, 251, 174, 139, 174, 211, 97, 197, }, { 250, 119, 65, 114, 205, 36, 92, 37, 9, 236, 162, 65, 162, 163, 187, 122, }, { 10, 41, 237, 63, 30, 57, 42, 233, 159, 49, 230, 237, 230, 54, 231, 112, }, { 26, 191, 39, 230, 46, 81, 5, 253, 133, 38, 234, 39, 234, 70, 61, 207, }, { 42, 198, 186, 78, 126, 233, 116, 193, 171, 31, 254, 186, 254, 214, 144, 205, }, { 58, 80, 112, 151, 78, 129, 91, 213, 177, 8, 242, 112, 242, 166, 74, 114, }, { 74, 52, 67, 221, 222, 90, 150, 185, 247, 109, 214, 67, 214, 53, 9, 201, }, { 90, 162, 137, 4, 238, 50, 185, 173, 237, 122, 218, 137, 218, 69, 211, 118, }, { 106, 219, 20, 172, 190, 138, 200, 145, 195, 67, 206, 20, 206, 213, 126, 116, }, { 122, 77, 222, 117, 142, 226, 231, 133, 217, 84, 194, 222, 194, 165, 164, 203, }, { 73, 103, 143, 54, 219, 176, 36, 202, 44, 58, 70, 143, 70, 60, 198, 96, }, { 89, 241, 69, 239, 235, 216, 11, 222, 54, 45, 74, 69, 74, 76, 28, 223, }, { 105, 136, 216, 71, 187, 96, 122, 226, 24, 20, 94, 216, 94, 220, 177, 221, }, { 121, 30, 18, 158, 139, 8, 85, 246, 2, 3, 82, 18, 82, 172, 107, 98, }, { 9, 122, 33, 212, 27, 211, 152, 154, 68, 102, 118, 33, 118, 63, 40, 217, }, { 25, 236, 235, 13, 43, 187, 183, 142, 94, 113, 122, 235, 122, 79, 242, 102, }, { 41, 149, 118, 165, 123, 3, 198, 178, 112, 72, 110, 118, 110, 223, 95, 100, }, { 57, 3, 188, 124, 75, 107, 233, 166, 106, 95, 98, 188, 98, 175, 133, 219, }, { 201, 93, 16, 49, 152, 118, 159, 106, 252, 130, 38, 16, 38, 58, 217, 209, }, { 217, 203, 218, 232, 168, 30, 176, 126, 230, 149, 42, 218, 42, 74, 3, 110, }, { 233, 178, 71, 64, 248, 166, 193, 66, 200, 172, 62, 71, 62, 218, 174, 108, }, { 249, 36, 141, 153, 200, 206, 238, 86, 210, 187, 50, 141, 50, 170, 116, 211, }, { 137, 64, 190, 211, 88, 21, 35, 58, 148, 222, 22, 190, 22, 57, 55, 104, }, { 153, 214, 116, 10, 104, 125, 12, 46, 142, 201, 26, 116, 26, 73, 237, 215, }, { 169, 175, 233, 162, 56, 197, 125, 18, 160, 240, 14, 233, 14, 217, 64, 213, }, { 185, 57, 35, 123, 8, 173, 82, 6, 186, 231, 2, 35, 2, 169, 154, 106, }, { 207, 251, 75, 36, 146, 97, 56, 140, 137, 44, 197, 75, 197, 40, 132, 64, }, { 223, 109, 129, 253, 162, 9, 23, 152, 147, 59, 201, 129, 201, 88, 94, 255, }, { 239, 20, 28, 85, 242, 177, 102, 164, 189, 2, 221, 28, 221, 200, 243, 253, }, { 255, 130, 214, 140, 194, 217, 73, 176, 167, 21, 209, 214, 209, 184, 41, 66, }, { 143, 230, 229, 198, 82, 2, 132, 220, 225, 112, 245, 229, 245, 43, 106, 249, }, { 159, 112, 47, 31, 98, 106, 171, 200, 251, 103, 249, 47, 249, 91, 176, 70, }, { 175, 9, 178, 183, 50, 210, 218, 244, 213, 94, 237, 178, 237, 203, 29, 68, }, { 191, 159, 120, 110, 2, 186, 245, 224, 207, 73, 225, 120, 225, 187, 199, 251, }, { 79, 193, 212, 35, 209, 167, 131, 44, 89, 148, 165, 212, 165, 46, 155, 241, }, { 95, 87, 30, 250, 225, 207, 172, 56, 67, 131, 169, 30, 169, 94, 65, 78, }, { 111, 46, 131, 82, 177, 119, 221, 4, 109, 186, 189, 131, 189, 206, 236, 76, }, { 127, 184, 73, 139, 129, 31, 242, 16, 119, 173, 177, 73, 177, 190, 54, 243, }, { 15, 220, 122, 193, 17, 196, 63, 124, 49, 200, 149, 122, 149, 45, 117, 72, }, { 31, 74, 176, 24, 33, 172, 16, 104, 43, 223, 153, 176, 153, 93, 175, 247, }, { 47, 51, 45, 176, 113, 20, 97, 84, 5, 230, 141, 45, 141, 205, 2, 245, }, { 63, 165, 231, 105, 65, 124, 78, 64, 31, 241, 129, 231, 129, 189, 216, 74, }, { 12, 143, 182, 42, 20, 46, 141, 15, 234, 159, 5, 182, 5, 36, 186, 225, }, { 28, 25, 124, 243, 36, 70, 162, 27, 240, 136, 9, 124, 9, 84, 96, 94, }, { 44, 96, 225, 91, 116, 254, 211, 39, 222, 177, 29, 225, 29, 196, 205, 92, }, { 60, 246, 43, 130, 68, 150, 252, 51, 196, 166, 17, 43, 17, 180, 23, 227, }, { 76, 146, 24, 200, 212, 77, 49, 95, 130, 195, 53, 24, 53, 39, 84, 88, }, { 92, 4, 210, 17, 228, 37, 30, 75, 152, 212, 57, 210, 57, 87, 142, 231, }, { 108, 125, 79, 185, 180, 157, 111, 119, 182, 237, 45, 79, 45, 199, 35, 229, }, { 124, 235, 133, 96, 132, 245, 64, 99, 172, 250, 33, 133, 33, 183, 249, 90, }, { 140, 181, 41, 45, 87, 232, 54, 175, 58, 39, 101, 41, 101, 34, 165, 80, }, { 156, 35, 227, 244, 103, 128, 25, 187, 32, 48, 105, 227, 105, 82, 127, 239, }, { 172, 90, 126, 92, 55, 56, 104, 135, 14, 9, 125, 126, 125, 194, 210, 237, }, { 188, 204, 180, 133, 7, 80, 71, 147, 20, 30, 113, 180, 113, 178, 8, 82, }, { 204, 168, 135, 207, 151, 139, 138, 255, 82, 123, 85, 135, 85, 33, 75, 233, }, { 220, 62, 77, 22, 167, 227, 165, 235, 72, 108, 89, 77, 89, 81, 145, 86, }, { 236, 71, 208, 190, 247, 91, 212, 215, 102, 85, 77, 208, 77, 193, 60, 84, }, { 252, 209, 26, 103, 199, 51, 251, 195, 124, 66, 65, 26, 65, 177, 230, 235, }, { 215, 38, 228, 112, 186, 61, 225, 146, 158, 209, 207, 228, 207, 96, 51, 65, }, { 199, 176, 46, 169, 138, 85, 206, 134, 132, 198, 195, 46, 195, 16, 233, 254, }, { 247, 201, 179, 1, 218, 237, 191, 186, 170, 255, 215, 179, 215, 128, 68, 252, }, { 231, 95, 121, 216, 234, 133, 144, 174, 176, 232, 219, 121, 219, 240, 158, 67, }, { 151, 59, 74, 146, 122, 94, 93, 194, 246, 141, 255, 74, 255, 99, 221, 248, }, { 135, 173, 128, 75, 74, 54, 114, 214, 236, 154, 243, 128, 243, 19, 7, 71, }, { 183, 212, 29, 227, 26, 142, 3, 234, 194, 163, 231, 29, 231, 131, 170, 69, }, { 167, 66, 215, 58, 42, 230, 44, 254, 216, 180, 235, 215, 235, 243, 112, 250, }, { 87, 28, 123, 119, 249, 251, 90, 50, 78, 105, 175, 123, 175, 102, 44, 240, }, { 71, 138, 177, 174, 201, 147, 117, 38, 84, 126, 163, 177, 163, 22, 246, 79, }, { 119, 243, 44, 6, 153, 43, 4, 26, 122, 71, 183, 44, 183, 134, 91, 77, }, { 103, 101, 230, 223, 169, 67, 43, 14, 96, 80, 187, 230, 187, 246, 129, 242, }, { 23, 1, 213, 149, 57, 152, 230, 98, 38, 53, 159, 213, 159, 101, 194, 73, }, { 7, 151, 31, 76, 9, 240, 201, 118, 60, 34, 147, 31, 147, 21, 24, 246, }, { 55, 238, 130, 228, 89, 72, 184, 74, 18, 27, 135, 130, 135, 133, 181, 244, }, { 39, 120, 72, 61, 105, 32, 151, 94, 8, 12, 139, 72, 139, 245, 111, 75, }, { 20, 82, 25, 126, 60, 114, 84, 17, 253, 98, 15, 25, 15, 108, 13, 224, }, { 4, 196, 211, 167, 12, 26, 123, 5, 231, 117, 3, 211, 3, 28, 215, 95, }, { 52, 189, 78, 15, 92, 162, 10, 57, 201, 76, 23, 78, 23, 140, 122, 93, }, { 36, 43, 132, 214, 108, 202, 37, 45, 211, 91, 27, 132, 27, 252, 160, 226, }, { 84, 79, 183, 156, 252, 17, 232, 65, 149, 62, 63, 183, 63, 111, 227, 89, }, { 68, 217, 125, 69, 204, 121, 199, 85, 143, 41, 51, 125, 51, 31, 57, 230, }, { 116, 160, 224, 237, 156, 193, 182, 105, 161, 16, 39, 224, 39, 143, 148, 228, }, { 100, 54, 42, 52, 172, 169, 153, 125, 187, 7, 43, 42, 43, 255, 78, 91, }, { 148, 104, 134, 121, 127, 180, 239, 177, 45, 218, 111, 134, 111, 106, 18, 81, }, { 132, 254, 76, 160, 79, 220, 192, 165, 55, 205, 99, 76, 99, 26, 200, 238, }, { 180, 135, 209, 8, 31, 100, 177, 153, 25, 244, 119, 209, 119, 138, 101, 236, }, { 164, 17, 27, 209, 47, 12, 158, 141, 3, 227, 123, 27, 123, 250, 191, 83, }, { 212, 117, 40, 155, 191, 215, 83, 225, 69, 134, 95, 40, 95, 105, 252, 232, }, { 196, 227, 226, 66, 143, 191, 124, 245, 95, 145, 83, 226, 83, 25, 38, 87, }, { 244, 154, 127, 234, 223, 7, 13, 201, 113, 168, 71, 127, 71, 137, 139, 85, }, { 228, 12, 181, 51, 239, 111, 34, 221, 107, 191, 75, 181, 75, 249, 81, 234, }, { 146, 206, 221, 108, 117, 163, 72, 87, 88, 116, 140, 221, 140, 120, 79, 192, }, { 130, 88, 23, 181, 69, 203, 103, 67, 66, 99, 128, 23, 128, 8, 149, 127, }, { 178, 33, 138, 29, 21, 115, 22, 127, 108, 90, 148, 138, 148, 152, 56, 125, }, { 162, 183, 64, 196, 37, 27, 57, 107, 118, 77, 152, 64, 152, 232, 226, 194, }, { 210, 211, 115, 142, 181, 192, 244, 7, 48, 40, 188, 115, 188, 123, 161, 121, }, { 194, 69, 185, 87, 133, 168, 219, 19, 42, 63, 176, 185, 176, 11, 123, 198, }, { 242, 60, 36, 255, 213, 16, 170, 47, 4, 6, 164, 36, 164, 155, 214, 196, }, { 226, 170, 238, 38, 229, 120, 133, 59, 30, 17, 168, 238, 168, 235, 12, 123, }, { 18, 244, 66, 107, 54, 101, 243, 247, 136, 204, 236, 66, 236, 126, 80, 113, }, { 2, 98, 136, 178, 6, 13, 220, 227, 146, 219, 224, 136, 224, 14, 138, 206, }, { 50, 27, 21, 26, 86, 181, 173, 223, 188, 226, 244, 21, 244, 158, 39, 204, }, { 34, 141, 223, 195, 102, 221, 130, 203, 166, 245, 248, 223, 248, 238, 253, 115, }, { 82, 233, 236, 137, 246, 6, 79, 167, 224, 144, 220, 236, 220, 125, 190, 200, }, { 66, 127, 38, 80, 198, 110, 96, 179, 250, 135, 208, 38, 208, 13, 100, 119, }, { 114, 6, 187, 248, 150, 214, 17, 143, 212, 190, 196, 187, 196, 157, 201, 117, }, { 98, 144, 113, 33, 166, 190, 62, 155, 206, 169, 200, 113, 200, 237, 19, 202, }, { 81, 186, 32, 98, 243, 236, 253, 212, 59, 199, 76, 32, 76, 116, 113, 97, }, { 65, 44, 234, 187, 195, 132, 210, 192, 33, 208, 64, 234, 64, 4, 171, 222, }, { 113, 85, 119, 19, 147, 60, 163, 252, 15, 233, 84, 119, 84, 148, 6, 220, }, { 97, 195, 189, 202, 163, 84, 140, 232, 21, 254, 88, 189, 88, 228, 220, 99, }, { 17, 167, 142, 128, 51, 143, 65, 132, 83, 155, 124, 142, 124, 119, 159, 216, }, { 1, 49, 68, 89, 3, 231, 110, 144, 73, 140, 112, 68, 112, 7, 69, 103, }, { 49, 72, 217, 241, 83, 95, 31, 172, 103, 181, 100, 217, 100, 151, 232, 101, }, { 33, 222, 19, 40, 99, 55, 48, 184, 125, 162, 104, 19, 104, 231, 50, 218, }, { 209, 128, 191, 101, 176, 42, 70, 116, 235, 127, 44, 191, 44, 114, 110, 208, }, { 193, 22, 117, 188, 128, 66, 105, 96, 241, 104, 32, 117, 32, 2, 180, 111, }, { 241, 111, 232, 20, 208, 250, 24, 92, 223, 81, 52, 232, 52, 146, 25, 109, }, { 225, 249, 34, 205, 224, 146, 55, 72, 197, 70, 56, 34, 56, 226, 195, 210, }, { 145, 157, 17, 135, 112, 73, 250, 36, 131, 35, 28, 17, 28, 113, 128, 105, }, { 129, 11, 219, 94, 64, 33, 213, 48, 153, 52, 16, 219, 16, 1, 90, 214, }, { 177, 114, 70, 246, 16, 153, 164, 12, 183, 13, 4, 70, 4, 145, 247, 212, }, { 161, 228, 140, 47, 32, 241, 139, 24, 173, 26, 8, 140, 8, 225, 45, 107, }, { 93, 53, 150, 72, 231, 194, 112, 219, 209, 88, 73, 150, 73, 80, 203, 128, }, { 77, 163, 92, 145, 215, 170, 95, 207, 203, 79, 69, 92, 69, 32, 17, 63, }, { 125, 218, 193, 57, 135, 18, 46, 243, 229, 118, 81, 193, 81, 176, 188, 61, }, { 109, 76, 11, 224, 183, 122, 1, 231, 255, 97, 93, 11, 93, 192, 102, 130, }, { 29, 40, 56, 170, 39, 161, 204, 139, 185, 4, 121, 56, 121, 83, 37, 57, }, { 13, 190, 242, 115, 23, 201, 227, 159, 163, 19, 117, 242, 117, 35, 255, 134, }, { 61, 199, 111, 219, 71, 113, 146, 163, 141, 42, 97, 111, 97, 179, 82, 132, }, { 45, 81, 165, 2, 119, 25, 189, 183, 151, 61, 109, 165, 109, 195, 136, 59, }, { 221, 15, 9, 79, 164, 4, 203, 123, 1, 224, 41, 9, 41, 86, 212, 49, }, { 205, 153, 195, 150, 148, 108, 228, 111, 27, 247, 37, 195, 37, 38, 14, 142, }, { 253, 224, 94, 62, 196, 212, 149, 83, 53, 206, 49, 94, 49, 182, 163, 140, }, { 237, 118, 148, 231, 244, 188, 186, 71, 47, 217, 61, 148, 61, 198, 121, 51, }, { 157, 18, 167, 173, 100, 103, 119, 43, 105, 188, 25, 167, 25, 85, 58, 136, }, { 141, 132, 109, 116, 84, 15, 88, 63, 115, 171, 21, 109, 21, 37, 224, 55, }, { 189, 253, 240, 220, 4, 183, 41, 3, 93, 146, 1, 240, 1, 181, 77, 53, }, { 173, 107, 58, 5, 52, 223, 6, 23, 71, 133, 13, 58, 13, 197, 151, 138, }, { 158, 65, 107, 70, 97, 141, 197, 88, 178, 235, 137, 107, 137, 92, 245, 33, }, { 142, 215, 161, 159, 81, 229, 234, 76, 168, 252, 133, 161, 133, 44, 47, 158, }, { 190, 174, 60, 55, 1, 93, 155, 112, 134, 197, 145, 60, 145, 188, 130, 156, }, { 174, 56, 246, 238, 49, 53, 180, 100, 156, 210, 157, 246, 157, 204, 88, 35, }, { 222, 92, 197, 164, 161, 238, 121, 8, 218, 183, 185, 197, 185, 95, 27, 152, }, { 206, 202, 15, 125, 145, 134, 86, 28, 192, 160, 181, 15, 181, 47, 193, 39, }, { 254, 179, 146, 213, 193, 62, 39, 32, 238, 153, 161, 146, 161, 191, 108, 37, }, { 238, 37, 88, 12, 241, 86, 8, 52, 244, 142, 173, 88, 173, 207, 182, 154, }, { 30, 123, 244, 65, 34, 75, 126, 248, 98, 83, 233, 244, 233, 90, 234, 144, }, { 14, 237, 62, 152, 18, 35, 81, 236, 120, 68, 229, 62, 229, 42, 48, 47, }, { 62, 148, 163, 48, 66, 155, 32, 208, 86, 125, 241, 163, 241, 186, 157, 45, }, { 46, 2, 105, 233, 114, 243, 15, 196, 76, 106, 253, 105, 253, 202, 71, 146, }, { 94, 102, 90, 163, 226, 40, 194, 168, 10, 15, 217, 90, 217, 89, 4, 41, }, { 78, 240, 144, 122, 210, 64, 237, 188, 16, 24, 213, 144, 213, 41, 222, 150, }, { 126, 137, 13, 210, 130, 248, 156, 128, 62, 33, 193, 13, 193, 185, 115, 148, }, { 110, 31, 199, 11, 178, 144, 179, 148, 36, 54, 205, 199, 205, 201, 169, 43, }, { 24, 221, 175, 84, 40, 92, 217, 30, 23, 253, 10, 175, 10, 72, 183, 1, }, { 8, 75, 101, 141, 24, 52, 246, 10, 13, 234, 6, 101, 6, 56, 109, 190, }, { 56, 50, 248, 37, 72, 140, 135, 54, 35, 211, 18, 248, 18, 168, 192, 188, }, { 40, 164, 50, 252, 120, 228, 168, 34, 57, 196, 30, 50, 30, 216, 26, 3, }, { 88, 192, 1, 182, 232, 63, 101, 78, 127, 161, 58, 1, 58, 75, 89, 184, }, { 72, 86, 203, 111, 216, 87, 74, 90, 101, 182, 54, 203, 54, 59, 131, 7, }, { 120, 47, 86, 199, 136, 239, 59, 102, 75, 143, 34, 86, 34, 171, 46, 5, }, { 104, 185, 156, 30, 184, 135, 20, 114, 81, 152, 46, 156, 46, 219, 244, 186, }, { 152, 231, 48, 83, 107, 154, 98, 190, 199, 69, 106, 48, 106, 78, 168, 176, }, { 136, 113, 250, 138, 91, 242, 77, 170, 221, 82, 102, 250, 102, 62, 114, 15, }, { 184, 8, 103, 34, 11, 74, 60, 150, 243, 107, 114, 103, 114, 174, 223, 13, }, { 168, 158, 173, 251, 59, 34, 19, 130, 233, 124, 126, 173, 126, 222, 5, 178, }, { 216, 250, 158, 177, 171, 249, 222, 238, 175, 25, 90, 158, 90, 77, 70, 9, }, { 200, 108, 84, 104, 155, 145, 241, 250, 181, 14, 86, 84, 86, 61, 156, 182, }, { 248, 21, 201, 192, 203, 41, 128, 198, 155, 55, 66, 201, 66, 173, 49, 180, }, { 232, 131, 3, 25, 251, 65, 175, 210, 129, 32, 78, 3, 78, 221, 235, 11, }, { 219, 169, 82, 90, 174, 19, 108, 157, 116, 78, 202, 82, 202, 68, 137, 160, }, { 203, 63, 152, 131, 158, 123, 67, 137, 110, 89, 198, 152, 198, 52, 83, 31, }, { 251, 70, 5, 43, 206, 195, 50, 181, 64, 96, 210, 5, 210, 164, 254, 29, }, { 235, 208, 207, 242, 254, 171, 29, 161, 90, 119, 222, 207, 222, 212, 36, 162, }, { 155, 180, 252, 184, 110, 112, 208, 205, 28, 18, 250, 252, 250, 71, 103, 25, }, { 139, 34, 54, 97, 94, 24, 255, 217, 6, 5, 246, 54, 246, 55, 189, 166, }, { 187, 91, 171, 201, 14, 160, 142, 229, 40, 60, 226, 171, 226, 167, 16, 164, }, { 171, 205, 97, 16, 62, 200, 161, 241, 50, 43, 238, 97, 238, 215, 202, 27, }, { 91, 147, 205, 93, 237, 213, 215, 61, 164, 246, 170, 205, 170, 66, 150, 17, }, { 75, 5, 7, 132, 221, 189, 248, 41, 190, 225, 166, 7, 166, 50, 76, 174, }, { 123, 124, 154, 44, 141, 5, 137, 21, 144, 216, 178, 154, 178, 162, 225, 172, }, { 107, 234, 80, 245, 189, 109, 166, 1, 138, 207, 190, 80, 190, 210, 59, 19, }, { 27, 142, 99, 191, 45, 182, 107, 109, 204, 170, 154, 99, 154, 65, 120, 168, }, { 11, 24, 169, 102, 29, 222, 68, 121, 214, 189, 150, 169, 150, 49, 162, 23, }, { 59, 97, 52, 206, 77, 102, 53, 69, 248, 132, 130, 52, 130, 161, 15, 21, }, { 43, 247, 254, 23, 125, 14, 26, 81, 226, 147, 142, 254, 142, 209, 213, 170, }, }, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, { 133, 116, 117, 208, 94, 190, 184, 135, 78, 98, 236, 107, 16, 135, 198, 116, }, { 201, 232, 234, 99, 188, 191, 179, 205, 156, 196, 27, 214, 32, 205, 79, 232, }, { 76, 156, 159, 179, 226, 1, 11, 74, 210, 166, 247, 189, 48, 74, 137, 156, }, { 81, 19, 23, 198, 187, 189, 165, 89, 251, 75, 54, 111, 64, 89, 158, 19, }, { 212, 103, 98, 22, 229, 3, 29, 222, 181, 41, 218, 4, 80, 222, 88, 103, }, { 152, 251, 253, 165, 7, 2, 22, 148, 103, 143, 45, 185, 96, 148, 209, 251, }, { 29, 143, 136, 117, 89, 188, 174, 19, 41, 237, 193, 210, 112, 19, 23, 143, }, { 162, 38, 46, 79, 181, 185, 137, 178, 53, 150, 108, 222, 128, 178, 255, 38, }, { 39, 82, 91, 159, 235, 7, 49, 53, 123, 244, 128, 181, 144, 53, 57, 82, }, { 107, 206, 196, 44, 9, 6, 58, 127, 169, 82, 119, 8, 160, 127, 176, 206, }, { 238, 186, 177, 252, 87, 184, 130, 248, 231, 48, 155, 99, 176, 248, 118, 186, }, { 243, 53, 57, 137, 14, 4, 44, 235, 206, 221, 90, 177, 192, 235, 97, 53, }, { 118, 65, 76, 89, 80, 186, 148, 108, 128, 191, 182, 218, 208, 108, 167, 65, }, { 58, 221, 211, 234, 178, 187, 159, 38, 82, 25, 65, 103, 224, 38, 46, 221, }, { 191, 169, 166, 58, 236, 5, 39, 161, 28, 123, 173, 12, 240, 161, 232, 169, }, { 135, 76, 92, 158, 169, 177, 209, 167, 106, 239, 216, 127, 195, 167, 61, 76, }, { 2, 56, 41, 78, 247, 15, 105, 32, 36, 141, 52, 20, 211, 32, 251, 56, }, { 78, 164, 182, 253, 21, 14, 98, 106, 246, 43, 195, 169, 227, 106, 114, 164, }, { 203, 208, 195, 45, 75, 176, 218, 237, 184, 73, 47, 194, 243, 237, 180, 208, }, { 214, 95, 75, 88, 18, 12, 116, 254, 145, 164, 238, 16, 131, 254, 163, 95, }, { 83, 43, 62, 136, 76, 178, 204, 121, 223, 198, 2, 123, 147, 121, 101, 43, }, { 31, 183, 161, 59, 174, 179, 199, 51, 13, 96, 245, 198, 163, 51, 236, 183, }, { 154, 195, 212, 235, 240, 13, 127, 180, 67, 2, 25, 173, 179, 180, 42, 195, }, { 37, 106, 114, 209, 28, 8, 88, 21, 95, 121, 180, 161, 67, 21, 194, 106, }, { 160, 30, 7, 1, 66, 182, 224, 146, 17, 27, 88, 202, 83, 146, 4, 30, }, { 236, 130, 152, 178, 160, 183, 235, 216, 195, 189, 175, 119, 99, 216, 141, 130, }, { 105, 246, 237, 98, 254, 9, 83, 95, 141, 223, 67, 28, 115, 95, 75, 246, }, { 116, 121, 101, 23, 167, 181, 253, 76, 164, 50, 130, 206, 3, 76, 92, 121, }, { 241, 13, 16, 199, 249, 11, 69, 203, 234, 80, 110, 165, 19, 203, 154, 13, }, { 189, 145, 143, 116, 27, 10, 78, 129, 56, 246, 153, 24, 35, 129, 19, 145, }, { 56, 229, 250, 164, 69, 180, 246, 6, 118, 148, 117, 115, 51, 6, 213, 229, }, { 205, 152, 184, 255, 145, 161, 97, 141, 212, 29, 115, 254, 69, 141, 122, 152, }, { 72, 236, 205, 47, 207, 31, 217, 10, 154, 127, 159, 149, 85, 10, 188, 236, }, { 4, 112, 82, 156, 45, 30, 210, 64, 72, 217, 104, 40, 101, 64, 53, 112, }, { 129, 4, 39, 76, 115, 160, 106, 199, 6, 187, 132, 67, 117, 199, 243, 4, }, { 156, 139, 175, 57, 42, 28, 196, 212, 47, 86, 69, 145, 5, 212, 228, 139, }, { 25, 255, 218, 233, 116, 162, 124, 83, 97, 52, 169, 250, 21, 83, 34, 255, }, { 85, 99, 69, 90, 150, 163, 119, 25, 179, 146, 94, 71, 37, 25, 171, 99, }, { 208, 23, 48, 138, 200, 29, 207, 158, 253, 240, 178, 44, 53, 158, 109, 23, }, { 111, 190, 150, 176, 36, 24, 232, 63, 225, 139, 31, 32, 197, 63, 133, 190, }, { 234, 202, 227, 96, 122, 166, 80, 184, 175, 233, 243, 75, 213, 184, 67, 202, }, { 166, 86, 124, 211, 152, 167, 91, 242, 125, 79, 4, 246, 229, 242, 202, 86, }, { 35, 34, 9, 3, 198, 25, 227, 117, 51, 45, 232, 157, 245, 117, 12, 34, }, { 62, 173, 129, 118, 159, 165, 77, 102, 26, 192, 41, 79, 133, 102, 27, 173, }, { 187, 217, 244, 166, 193, 27, 245, 225, 84, 162, 197, 36, 149, 225, 221, 217, }, { 247, 69, 107, 21, 35, 26, 254, 171, 134, 4, 50, 153, 165, 171, 84, 69, }, { 114, 49, 30, 197, 125, 164, 70, 44, 200, 102, 222, 242, 181, 44, 146, 49, }, { 74, 212, 228, 97, 56, 16, 176, 42, 190, 242, 171, 129, 134, 42, 71, 212, }, { 207, 160, 145, 177, 102, 174, 8, 173, 240, 144, 71, 234, 150, 173, 129, 160, }, { 131, 60, 14, 2, 132, 175, 3, 231, 34, 54, 176, 87, 166, 231, 8, 60, }, { 6, 72, 123, 210, 218, 17, 187, 96, 108, 84, 92, 60, 182, 96, 206, 72, }, { 27, 199, 243, 167, 131, 173, 21, 115, 69, 185, 157, 238, 198, 115, 217, 199, }, { 158, 179, 134, 119, 221, 19, 173, 244, 11, 219, 113, 133, 214, 244, 31, 179, }, { 210, 47, 25, 196, 63, 18, 166, 190, 217, 125, 134, 56, 230, 190, 150, 47, }, { 87, 91, 108, 20, 97, 172, 30, 57, 151, 31, 106, 83, 246, 57, 80, 91, }, { 232, 242, 202, 46, 141, 169, 57, 152, 139, 100, 199, 95, 6, 152, 184, 242, }, { 109, 134, 191, 254, 211, 23, 129, 31, 197, 6, 43, 52, 22, 31, 126, 134, }, { 33, 26, 32, 77, 49, 22, 138, 85, 23, 160, 220, 137, 38, 85, 247, 26, }, { 164, 110, 85, 157, 111, 168, 50, 210, 89, 194, 48, 226, 54, 210, 49, 110, }, { 185, 225, 221, 232, 54, 20, 156, 193, 112, 47, 241, 48, 70, 193, 38, 225, }, { 60, 149, 168, 56, 104, 170, 36, 70, 62, 77, 29, 91, 86, 70, 224, 149, }, { 112, 9, 55, 139, 138, 171, 47, 12, 236, 235, 234, 230, 102, 12, 105, 9, }, { 245, 125, 66, 91, 212, 21, 151, 139, 162, 137, 6, 141, 118, 139, 175, 125, }, { 89, 243, 179, 61, 225, 129, 194, 217, 107, 58, 230, 63, 138, 217, 244, 243, }, { 220, 135, 198, 237, 191, 63, 122, 94, 37, 88, 10, 84, 154, 94, 50, 135, }, { 144, 27, 89, 94, 93, 62, 113, 20, 247, 254, 253, 233, 170, 20, 187, 27, }, { 21, 111, 44, 142, 3, 128, 201, 147, 185, 156, 17, 130, 186, 147, 125, 111, }, { 8, 224, 164, 251, 90, 60, 103, 128, 144, 113, 208, 80, 202, 128, 106, 224, }, { 141, 148, 209, 43, 4, 130, 223, 7, 222, 19, 60, 59, 218, 7, 172, 148, }, { 193, 8, 78, 152, 230, 131, 212, 77, 12, 181, 203, 134, 234, 77, 37, 8, }, { 68, 124, 59, 72, 184, 61, 108, 202, 66, 215, 39, 237, 250, 202, 227, 124, }, { 251, 213, 157, 114, 84, 56, 75, 107, 94, 172, 138, 225, 10, 107, 11, 213, }, { 126, 161, 232, 162, 10, 134, 243, 236, 16, 206, 102, 138, 26, 236, 205, 161, }, { 50, 61, 119, 17, 232, 135, 248, 166, 194, 104, 145, 55, 42, 166, 68, 61, }, { 183, 73, 2, 193, 182, 57, 64, 33, 140, 10, 125, 92, 58, 33, 130, 73, }, { 170, 198, 138, 180, 239, 133, 238, 50, 165, 231, 188, 142, 74, 50, 149, 198, }, { 47, 178, 255, 100, 177, 59, 86, 181, 235, 133, 80, 229, 90, 181, 83, 178, }, { 99, 46, 96, 215, 83, 58, 93, 255, 57, 35, 167, 88, 106, 255, 218, 46, }, { 230, 90, 21, 7, 13, 132, 229, 120, 119, 65, 75, 51, 122, 120, 28, 90, }, { 222, 191, 239, 163, 72, 48, 19, 126, 1, 213, 62, 64, 73, 126, 201, 191, }, { 91, 203, 154, 115, 22, 142, 171, 249, 79, 183, 210, 43, 89, 249, 15, 203, }, { 23, 87, 5, 192, 244, 143, 160, 179, 157, 17, 37, 150, 105, 179, 134, 87, }, { 146, 35, 112, 16, 170, 49, 24, 52, 211, 115, 201, 253, 121, 52, 64, 35, }, { 143, 172, 248, 101, 243, 141, 182, 39, 250, 158, 8, 47, 9, 39, 87, 172, }, { 10, 216, 141, 181, 173, 51, 14, 160, 180, 252, 228, 68, 25, 160, 145, 216, }, { 70, 68, 18, 6, 79, 50, 5, 234, 102, 90, 19, 249, 41, 234, 24, 68, }, { 195, 48, 103, 214, 17, 140, 189, 109, 40, 56, 255, 146, 57, 109, 222, 48, }, { 124, 153, 193, 236, 253, 137, 154, 204, 52, 67, 82, 158, 201, 204, 54, 153, }, { 249, 237, 180, 60, 163, 55, 34, 75, 122, 33, 190, 245, 217, 75, 240, 237, }, { 181, 113, 43, 143, 65, 54, 41, 1, 168, 135, 73, 72, 233, 1, 121, 113, }, { 48, 5, 94, 95, 31, 136, 145, 134, 230, 229, 165, 35, 249, 134, 191, 5, }, { 45, 138, 214, 42, 70, 52, 63, 149, 207, 8, 100, 241, 137, 149, 168, 138, }, { 168, 254, 163, 250, 24, 138, 135, 18, 129, 106, 136, 154, 153, 18, 110, 254, }, { 228, 98, 60, 73, 250, 139, 140, 88, 83, 204, 127, 39, 169, 88, 231, 98, }, { 97, 22, 73, 153, 164, 53, 52, 223, 29, 174, 147, 76, 185, 223, 33, 22, }, { 148, 107, 11, 194, 112, 32, 163, 84, 191, 39, 149, 193, 207, 84, 142, 107, }, { 17, 31, 126, 18, 46, 158, 27, 211, 241, 69, 121, 170, 223, 211, 72, 31, }, { 93, 131, 225, 161, 204, 159, 16, 153, 35, 227, 142, 23, 239, 153, 193, 131, }, { 216, 247, 148, 113, 146, 33, 168, 30, 109, 129, 98, 124, 255, 30, 7, 247, }, { 197, 120, 28, 4, 203, 157, 6, 13, 68, 108, 163, 174, 143, 13, 16, 120, }, { 64, 12, 105, 212, 149, 35, 190, 138, 10, 14, 79, 197, 159, 138, 214, 12, }, { 12, 144, 246, 103, 119, 34, 181, 192, 216, 168, 184, 120, 175, 192, 95, 144, }, { 137, 228, 131, 183, 41, 156, 13, 71, 150, 202, 84, 19, 191, 71, 153, 228, }, { 54, 77, 37, 141, 197, 153, 42, 230, 138, 177, 249, 31, 79, 230, 113, 77, }, { 179, 57, 80, 93, 155, 39, 146, 97, 196, 211, 21, 116, 95, 97, 183, 57, }, { 255, 165, 207, 238, 121, 38, 153, 43, 22, 117, 226, 201, 111, 43, 62, 165, }, { 122, 209, 186, 62, 39, 152, 33, 172, 88, 23, 14, 162, 127, 172, 248, 209, }, { 103, 94, 50, 75, 126, 36, 143, 191, 113, 250, 207, 112, 15, 191, 239, 94, }, { 226, 42, 71, 155, 32, 154, 55, 56, 63, 152, 35, 27, 31, 56, 41, 42, }, { 174, 182, 216, 40, 194, 155, 60, 114, 237, 62, 212, 166, 47, 114, 160, 182, }, { 43, 194, 173, 248, 156, 37, 132, 245, 163, 92, 56, 205, 63, 245, 102, 194, }, { 19, 39, 87, 92, 217, 145, 114, 243, 213, 200, 77, 190, 12, 243, 179, 39, }, { 150, 83, 34, 140, 135, 47, 202, 116, 155, 170, 161, 213, 28, 116, 117, 83, }, { 218, 207, 189, 63, 101, 46, 193, 62, 73, 12, 86, 104, 44, 62, 252, 207, }, { 95, 187, 200, 239, 59, 144, 121, 185, 7, 110, 186, 3, 60, 185, 58, 187, }, { 66, 52, 64, 154, 98, 44, 215, 170, 46, 131, 123, 209, 76, 170, 45, 52, }, { 199, 64, 53, 74, 60, 146, 111, 45, 96, 225, 151, 186, 92, 45, 235, 64, }, { 139, 220, 170, 249, 222, 147, 100, 103, 178, 71, 96, 7, 108, 103, 98, 220, }, { 14, 168, 223, 41, 128, 45, 220, 224, 252, 37, 140, 108, 124, 224, 164, 168, }, { 177, 1, 121, 19, 108, 40, 251, 65, 224, 94, 33, 96, 140, 65, 76, 1, }, { 52, 117, 12, 195, 50, 150, 67, 198, 174, 60, 205, 11, 156, 198, 138, 117, }, { 120, 233, 147, 112, 208, 151, 72, 140, 124, 154, 58, 182, 172, 140, 3, 233, }, { 253, 157, 230, 160, 142, 41, 240, 11, 50, 248, 214, 221, 188, 11, 197, 157, }, { 224, 18, 110, 213, 215, 149, 94, 24, 27, 21, 23, 15, 204, 24, 210, 18, }, { 101, 102, 27, 5, 137, 43, 230, 159, 85, 119, 251, 100, 220, 159, 20, 102, }, { 41, 250, 132, 182, 107, 42, 237, 213, 135, 209, 12, 217, 236, 213, 157, 250, }, { 172, 142, 241, 102, 53, 148, 85, 82, 201, 179, 224, 178, 252, 82, 91, 142, }, { 178, 37, 165, 122, 1, 193, 71, 113, 214, 116, 15, 126, 215, 113, 43, 37, }, { 55, 81, 208, 170, 95, 127, 255, 246, 152, 22, 227, 21, 199, 246, 237, 81, }, { 123, 205, 79, 25, 189, 126, 244, 188, 74, 176, 20, 168, 247, 188, 100, 205, }, { 254, 185, 58, 201, 227, 192, 76, 59, 4, 210, 248, 195, 231, 59, 162, 185, }, { 227, 54, 178, 188, 186, 124, 226, 40, 45, 63, 57, 17, 151, 40, 181, 54, }, { 102, 66, 199, 108, 228, 194, 90, 175, 99, 93, 213, 122, 135, 175, 115, 66, }, { 42, 222, 88, 223, 6, 195, 81, 229, 177, 251, 34, 199, 183, 229, 250, 222, }, { 175, 170, 45, 15, 88, 125, 233, 98, 255, 153, 206, 172, 167, 98, 60, 170, }, { 16, 3, 139, 53, 180, 120, 206, 195, 227, 226, 99, 160, 87, 195, 212, 3, }, { 149, 119, 254, 229, 234, 198, 118, 68, 173, 128, 143, 203, 71, 68, 18, 119, }, { 217, 235, 97, 86, 8, 199, 125, 14, 127, 38, 120, 118, 119, 14, 155, 235, }, { 92, 159, 20, 134, 86, 121, 197, 137, 49, 68, 148, 29, 103, 137, 93, 159, }, { 65, 16, 156, 243, 15, 197, 107, 154, 24, 169, 85, 207, 23, 154, 74, 16, }, { 196, 100, 233, 35, 81, 123, 211, 29, 86, 203, 185, 164, 7, 29, 140, 100, }, { 136, 248, 118, 144, 179, 122, 216, 87, 132, 109, 78, 25, 55, 87, 5, 248, }, { 13, 140, 3, 64, 237, 196, 96, 208, 202, 15, 162, 114, 39, 208, 195, 140, }, { 53, 105, 249, 228, 168, 112, 150, 214, 188, 155, 215, 1, 20, 214, 22, 105, }, { 176, 29, 140, 52, 246, 206, 46, 81, 242, 249, 59, 106, 4, 81, 208, 29, }, { 252, 129, 19, 135, 20, 207, 37, 27, 32, 95, 204, 215, 52, 27, 89, 129, }, { 121, 245, 102, 87, 74, 113, 157, 156, 110, 61, 32, 188, 36, 156, 159, 245, }, { 100, 122, 238, 34, 19, 205, 51, 143, 71, 208, 225, 110, 84, 143, 136, 122, }, { 225, 14, 155, 242, 77, 115, 139, 8, 9, 178, 13, 5, 68, 8, 78, 14, }, { 173, 146, 4, 65, 175, 114, 128, 66, 219, 20, 250, 184, 116, 66, 199, 146, }, { 40, 230, 113, 145, 241, 204, 56, 197, 149, 118, 22, 211, 100, 197, 1, 230, }, { 151, 79, 215, 171, 29, 201, 31, 100, 137, 13, 187, 223, 148, 100, 233, 79, }, { 18, 59, 162, 123, 67, 119, 167, 227, 199, 111, 87, 180, 132, 227, 47, 59, }, { 94, 167, 61, 200, 161, 118, 172, 169, 21, 201, 160, 9, 180, 169, 166, 167, }, { 219, 211, 72, 24, 255, 200, 20, 46, 91, 171, 76, 98, 164, 46, 96, 211, }, { 198, 92, 192, 109, 166, 116, 186, 61, 114, 70, 141, 176, 212, 61, 119, 92, }, { 67, 40, 181, 189, 248, 202, 2, 186, 60, 36, 97, 219, 196, 186, 177, 40, }, { 15, 180, 42, 14, 26, 203, 9, 240, 238, 130, 150, 102, 244, 240, 56, 180, }, { 138, 192, 95, 222, 68, 117, 177, 119, 160, 224, 122, 13, 228, 119, 254, 192, }, { 127, 189, 29, 133, 144, 96, 38, 252, 2, 105, 124, 128, 146, 252, 81, 189, }, { 250, 201, 104, 85, 206, 222, 158, 123, 76, 11, 144, 235, 130, 123, 151, 201, }, { 182, 85, 247, 230, 44, 223, 149, 49, 158, 173, 103, 86, 178, 49, 30, 85, }, { 51, 33, 130, 54, 114, 97, 45, 182, 208, 207, 139, 61, 162, 182, 216, 33, }, { 46, 174, 10, 67, 43, 221, 131, 165, 249, 34, 74, 239, 210, 165, 207, 174, }, { 171, 218, 127, 147, 117, 99, 59, 34, 183, 64, 166, 132, 194, 34, 9, 218, }, { 231, 70, 224, 32, 151, 98, 48, 104, 101, 230, 81, 57, 242, 104, 128, 70, }, { 98, 50, 149, 240, 201, 220, 136, 239, 43, 132, 189, 82, 226, 239, 70, 50, }, { 221, 155, 51, 202, 37, 217, 175, 78, 55, 255, 16, 94, 18, 78, 174, 155, }, { 88, 239, 70, 26, 123, 103, 23, 201, 121, 157, 252, 53, 2, 201, 104, 239, }, { 20, 115, 217, 169, 153, 102, 28, 131, 171, 59, 11, 136, 50, 131, 225, 115, }, { 145, 7, 172, 121, 199, 216, 164, 4, 229, 89, 231, 227, 34, 4, 39, 7, }, { 140, 136, 36, 12, 158, 100, 10, 23, 204, 180, 38, 49, 82, 23, 48, 136, }, { 9, 252, 81, 220, 192, 218, 178, 144, 130, 214, 202, 90, 66, 144, 246, 252, }, { 69, 96, 206, 111, 34, 219, 185, 218, 80, 112, 61, 231, 114, 218, 127, 96, }, { 192, 20, 187, 191, 124, 101, 1, 93, 30, 18, 209, 140, 98, 93, 185, 20, }, { 248, 241, 65, 27, 57, 209, 247, 91, 104, 134, 164, 255, 81, 91, 108, 241, }, { 125, 133, 52, 203, 103, 111, 79, 220, 38, 228, 72, 148, 65, 220, 170, 133, }, { 49, 25, 171, 120, 133, 110, 68, 150, 244, 66, 191, 41, 113, 150, 35, 25, }, { 180, 109, 222, 168, 219, 208, 252, 17, 186, 32, 83, 66, 97, 17, 229, 109, }, { 169, 226, 86, 221, 130, 108, 82, 2, 147, 205, 146, 144, 17, 2, 242, 226, }, { 44, 150, 35, 13, 220, 210, 234, 133, 221, 175, 126, 251, 1, 133, 52, 150, }, { 96, 10, 188, 190, 62, 211, 225, 207, 15, 9, 137, 70, 49, 207, 189, 10, }, { 229, 126, 201, 110, 96, 109, 89, 72, 65, 107, 101, 45, 33, 72, 123, 126, }, { 90, 215, 111, 84, 140, 104, 126, 233, 93, 16, 200, 33, 209, 233, 147, 215, }, { 223, 163, 26, 132, 210, 214, 198, 110, 19, 114, 36, 74, 193, 110, 85, 163, }, { 147, 63, 133, 55, 48, 215, 205, 36, 193, 212, 211, 247, 241, 36, 220, 63, }, { 22, 75, 240, 231, 110, 105, 117, 163, 143, 182, 63, 156, 225, 163, 26, 75, }, { 11, 196, 120, 146, 55, 213, 219, 176, 166, 91, 254, 78, 145, 176, 13, 196, }, { 142, 176, 13, 66, 105, 107, 99, 55, 232, 57, 18, 37, 129, 55, 203, 176, }, { 194, 44, 146, 241, 139, 106, 104, 125, 58, 159, 229, 152, 177, 125, 66, 44, }, { 71, 88, 231, 33, 213, 212, 208, 250, 116, 253, 9, 243, 161, 250, 132, 88, }, { 235, 214, 22, 71, 224, 64, 133, 168, 189, 78, 233, 65, 93, 168, 223, 214, }, { 110, 162, 99, 151, 190, 254, 61, 47, 243, 44, 5, 42, 77, 47, 25, 162, }, { 34, 62, 252, 36, 92, 255, 54, 101, 33, 138, 242, 151, 125, 101, 144, 62, }, { 167, 74, 137, 244, 2, 65, 142, 226, 111, 232, 30, 252, 109, 226, 86, 74, }, { 186, 197, 1, 129, 91, 253, 32, 241, 70, 5, 223, 46, 29, 241, 65, 197, }, { 63, 177, 116, 81, 5, 67, 152, 118, 8, 103, 51, 69, 13, 118, 135, 177, }, { 115, 45, 235, 226, 231, 66, 147, 60, 218, 193, 196, 248, 61, 60, 14, 45, }, { 246, 89, 158, 50, 185, 252, 43, 187, 148, 163, 40, 147, 45, 187, 200, 89, }, { 73, 240, 56, 8, 85, 249, 12, 26, 136, 216, 133, 159, 221, 26, 32, 240, }, { 204, 132, 77, 216, 11, 71, 180, 157, 198, 186, 105, 244, 205, 157, 230, 132, }, { 128, 24, 210, 107, 233, 70, 191, 215, 20, 28, 158, 73, 253, 215, 111, 24, }, { 5, 108, 167, 187, 183, 248, 7, 80, 90, 126, 114, 34, 237, 80, 169, 108, }, { 24, 227, 47, 206, 238, 68, 169, 67, 115, 147, 179, 240, 157, 67, 190, 227, }, { 157, 151, 90, 30, 176, 250, 17, 196, 61, 241, 95, 155, 141, 196, 120, 151, }, { 209, 11, 197, 173, 82, 251, 26, 142, 239, 87, 168, 38, 189, 142, 241, 11, }, { 84, 127, 176, 125, 12, 69, 162, 9, 161, 53, 68, 77, 173, 9, 55, 127, }, { 108, 154, 74, 217, 73, 241, 84, 15, 215, 161, 49, 62, 158, 15, 226, 154, }, { 233, 238, 63, 9, 23, 79, 236, 136, 153, 195, 221, 85, 142, 136, 36, 238, }, { 165, 114, 160, 186, 245, 78, 231, 194, 75, 101, 42, 232, 190, 194, 173, 114, }, { 32, 6, 213, 106, 171, 240, 95, 69, 5, 7, 198, 131, 174, 69, 107, 6, }, { 61, 137, 93, 31, 242, 76, 241, 86, 44, 234, 7, 81, 222, 86, 124, 137, }, { 184, 253, 40, 207, 172, 242, 73, 209, 98, 136, 235, 58, 206, 209, 186, 253, }, { 244, 97, 183, 124, 78, 243, 66, 155, 176, 46, 28, 135, 254, 155, 51, 97, }, { 113, 21, 194, 172, 16, 77, 250, 28, 254, 76, 240, 236, 238, 28, 245, 21, }, { 206, 188, 100, 150, 252, 72, 221, 189, 226, 55, 93, 224, 30, 189, 29, 188, }, { 75, 200, 17, 70, 162, 246, 101, 58, 172, 85, 177, 139, 14, 58, 219, 200, }, { 7, 84, 142, 245, 64, 247, 110, 112, 126, 243, 70, 54, 62, 112, 82, 84, }, { 130, 32, 251, 37, 30, 73, 214, 247, 48, 145, 170, 93, 46, 247, 148, 32, }, { 159, 175, 115, 80, 71, 245, 120, 228, 25, 124, 107, 143, 94, 228, 131, 175, }, { 26, 219, 6, 128, 25, 75, 192, 99, 87, 30, 135, 228, 78, 99, 69, 219, }, { 86, 71, 153, 51, 251, 74, 203, 41, 133, 184, 112, 89, 126, 41, 204, 71, }, { 211, 51, 236, 227, 165, 244, 115, 174, 203, 218, 156, 50, 110, 174, 10, 51, }, { 38, 78, 174, 184, 113, 225, 228, 37, 105, 83, 154, 191, 24, 37, 165, 78, }, { 163, 58, 219, 104, 47, 95, 92, 162, 39, 49, 118, 212, 8, 162, 99, 58, }, { 239, 166, 68, 219, 205, 94, 87, 232, 245, 151, 129, 105, 56, 232, 234, 166, }, { 106, 210, 49, 11, 147, 224, 239, 111, 187, 245, 109, 2, 40, 111, 44, 210, }, { 119, 93, 185, 126, 202, 92, 65, 124, 146, 24, 172, 208, 88, 124, 59, 93, }, { 242, 41, 204, 174, 148, 226, 249, 251, 220, 122, 64, 187, 72, 251, 253, 41, }, { 190, 181, 83, 29, 118, 227, 242, 177, 14, 220, 183, 6, 120, 177, 116, 181, }, { 59, 193, 38, 205, 40, 93, 74, 54, 64, 190, 91, 109, 104, 54, 178, 193, }, { 132, 104, 128, 247, 196, 88, 109, 151, 92, 197, 246, 97, 152, 151, 90, 104, }, { 1, 28, 245, 39, 154, 230, 213, 16, 18, 167, 26, 10, 136, 16, 156, 28, }, { 77, 128, 106, 148, 120, 231, 222, 90, 192, 1, 237, 183, 184, 90, 21, 128, }, { 200, 244, 31, 68, 38, 89, 102, 221, 142, 99, 1, 220, 168, 221, 211, 244, }, { 213, 123, 151, 49, 127, 229, 200, 206, 167, 142, 192, 14, 216, 206, 196, 123, }, { 80, 15, 226, 225, 33, 91, 112, 73, 233, 236, 44, 101, 200, 73, 2, 15, }, { 28, 147, 125, 82, 195, 90, 123, 3, 59, 74, 219, 216, 248, 3, 139, 147, }, { 153, 231, 8, 130, 157, 228, 195, 132, 117, 40, 55, 179, 232, 132, 77, 231, }, { 161, 2, 242, 38, 216, 80, 53, 130, 3, 188, 66, 192, 219, 130, 152, 2, }, { 36, 118, 135, 246, 134, 238, 141, 5, 77, 222, 174, 171, 203, 5, 94, 118, }, { 104, 234, 24, 69, 100, 239, 134, 79, 159, 120, 89, 22, 251, 79, 215, 234, }, { 237, 158, 109, 149, 58, 81, 62, 200, 209, 26, 181, 125, 235, 200, 17, 158, }, { 240, 17, 229, 224, 99, 237, 144, 219, 248, 247, 116, 175, 155, 219, 6, 17, }, { 117, 101, 144, 48, 61, 83, 40, 92, 182, 149, 152, 196, 139, 92, 192, 101, }, { 57, 249, 15, 131, 223, 82, 35, 22, 100, 51, 111, 121, 187, 22, 73, 249, }, { 188, 141, 122, 83, 129, 236, 155, 145, 42, 81, 131, 18, 171, 145, 143, 141, }, { 3, 36, 220, 105, 109, 233, 188, 48, 54, 42, 46, 30, 91, 48, 103, 36, }, { 134, 80, 169, 185, 51, 87, 4, 183, 120, 72, 194, 117, 75, 183, 161, 80, }, { 202, 204, 54, 10, 209, 86, 15, 253, 170, 238, 53, 200, 123, 253, 40, 204, }, { 79, 184, 67, 218, 143, 232, 183, 122, 228, 140, 217, 163, 107, 122, 238, 184, }, { 82, 55, 203, 175, 214, 84, 25, 105, 205, 97, 24, 113, 27, 105, 249, 55, }, { 215, 67, 190, 127, 136, 234, 161, 238, 131, 3, 244, 26, 11, 238, 63, 67, }, { 155, 223, 33, 204, 106, 235, 170, 164, 81, 165, 3, 167, 59, 164, 182, 223, }, { 30, 171, 84, 28, 52, 85, 18, 35, 31, 199, 239, 204, 43, 35, 112, 171, }, }, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, { 32, 45, 153, 233, 149, 159, 212, 73, 230, 213, 118, 242, 51, 200, 32, 152, }, { 64, 90, 241, 17, 233, 253, 107, 146, 15, 105, 236, 39, 102, 83, 64, 243, }, { 96, 119, 104, 248, 124, 98, 191, 219, 233, 188, 154, 213, 85, 155, 96, 107, }, { 128, 180, 33, 34, 17, 57, 214, 231, 30, 210, 27, 78, 204, 166, 128, 37, }, { 160, 153, 184, 203, 132, 166, 2, 174, 248, 7, 109, 188, 255, 110, 160, 189, }, { 192, 238, 208, 51, 248, 196, 189, 117, 17, 187, 247, 105, 170, 245, 192, 214, }, { 224, 195, 73, 218, 109, 91, 105, 60, 247, 110, 129, 155, 153, 61, 224, 78, }, { 195, 171, 66, 68, 34, 114, 111, 13, 60, 103, 54, 156, 91, 143, 195, 74, }, { 227, 134, 219, 173, 183, 237, 187, 68, 218, 178, 64, 110, 104, 71, 227, 210, }, { 131, 241, 179, 85, 203, 143, 4, 159, 51, 14, 218, 187, 61, 220, 131, 185, }, { 163, 220, 42, 188, 94, 16, 208, 214, 213, 219, 172, 73, 14, 20, 163, 33, }, { 67, 31, 99, 102, 51, 75, 185, 234, 34, 181, 45, 210, 151, 41, 67, 111, }, { 99, 50, 250, 143, 166, 212, 109, 163, 196, 96, 91, 32, 164, 225, 99, 247, }, { 3, 69, 146, 119, 218, 182, 210, 120, 45, 220, 193, 245, 241, 122, 3, 156, }, { 35, 104, 11, 158, 79, 41, 6, 49, 203, 9, 183, 7, 194, 178, 35, 4, }, { 69, 149, 132, 136, 68, 228, 222, 26, 120, 206, 108, 251, 182, 221, 69, 148, }, { 101, 184, 29, 97, 209, 123, 10, 83, 158, 27, 26, 9, 133, 21, 101, 12, }, { 5, 207, 117, 153, 173, 25, 181, 136, 119, 167, 128, 220, 208, 142, 5, 103, }, { 37, 226, 236, 112, 56, 134, 97, 193, 145, 114, 246, 46, 227, 70, 37, 255, }, { 197, 33, 165, 170, 85, 221, 8, 253, 102, 28, 119, 181, 122, 123, 197, 177, }, { 229, 12, 60, 67, 192, 66, 220, 180, 128, 201, 1, 71, 73, 179, 229, 41, }, { 133, 123, 84, 187, 188, 32, 99, 111, 105, 117, 155, 146, 28, 40, 133, 66, }, { 165, 86, 205, 82, 41, 191, 183, 38, 143, 160, 237, 96, 47, 224, 165, 218, }, { 134, 62, 198, 204, 102, 150, 177, 23, 68, 169, 90, 103, 237, 82, 134, 222, }, { 166, 19, 95, 37, 243, 9, 101, 94, 162, 124, 44, 149, 222, 154, 166, 70, }, { 198, 100, 55, 221, 143, 107, 218, 133, 75, 192, 182, 64, 139, 1, 198, 45, }, { 230, 73, 174, 52, 26, 244, 14, 204, 173, 21, 192, 178, 184, 201, 230, 181, }, { 6, 138, 231, 238, 119, 175, 103, 240, 90, 123, 65, 41, 33, 244, 6, 251, }, { 38, 167, 126, 7, 226, 48, 179, 185, 188, 174, 55, 219, 18, 60, 38, 99, }, { 70, 208, 22, 255, 158, 82, 12, 98, 85, 18, 173, 14, 71, 167, 70, 8, }, { 102, 253, 143, 22, 11, 205, 216, 43, 179, 199, 219, 252, 116, 111, 102, 144, }, { 138, 233, 203, 211, 136, 11, 127, 52, 240, 95, 216, 53, 175, 121, 138, 235, }, { 170, 196, 82, 58, 29, 148, 171, 125, 22, 138, 174, 199, 156, 177, 170, 115, }, { 202, 179, 58, 194, 97, 246, 20, 166, 255, 54, 52, 18, 201, 42, 202, 24, }, { 234, 158, 163, 43, 244, 105, 192, 239, 25, 227, 66, 224, 250, 226, 234, 128, }, { 10, 93, 234, 241, 153, 50, 169, 211, 238, 141, 195, 123, 99, 223, 10, 206, }, { 42, 112, 115, 24, 12, 173, 125, 154, 8, 88, 181, 137, 80, 23, 42, 86, }, { 74, 7, 27, 224, 112, 207, 194, 65, 225, 228, 47, 92, 5, 140, 74, 61, }, { 106, 42, 130, 9, 229, 80, 22, 8, 7, 49, 89, 174, 54, 68, 106, 165, }, { 73, 66, 137, 151, 170, 121, 16, 57, 204, 56, 238, 169, 244, 246, 73, 161, }, { 105, 111, 16, 126, 63, 230, 196, 112, 42, 237, 152, 91, 199, 62, 105, 57, }, { 9, 24, 120, 134, 67, 132, 123, 171, 195, 81, 2, 142, 146, 165, 9, 82, }, { 41, 53, 225, 111, 214, 27, 175, 226, 37, 132, 116, 124, 161, 109, 41, 202, }, { 201, 246, 168, 181, 187, 64, 198, 222, 210, 234, 245, 231, 56, 80, 201, 132, }, { 233, 219, 49, 92, 46, 223, 18, 151, 52, 63, 131, 21, 11, 152, 233, 28, }, { 137, 172, 89, 164, 82, 189, 173, 76, 221, 131, 25, 192, 94, 3, 137, 119, }, { 169, 129, 192, 77, 199, 34, 121, 5, 59, 86, 111, 50, 109, 203, 169, 239, }, { 207, 124, 79, 91, 204, 239, 161, 46, 136, 145, 180, 206, 25, 164, 207, 127, }, { 239, 81, 214, 178, 89, 112, 117, 103, 110, 68, 194, 60, 42, 108, 239, 231, }, { 143, 38, 190, 74, 37, 18, 202, 188, 135, 248, 88, 233, 127, 247, 143, 140, }, { 175, 11, 39, 163, 176, 141, 30, 245, 97, 45, 46, 27, 76, 63, 175, 20, }, { 79, 200, 110, 121, 221, 214, 119, 201, 150, 67, 175, 128, 213, 2, 79, 90, }, { 111, 229, 247, 144, 72, 73, 163, 128, 112, 150, 217, 114, 230, 202, 111, 194, }, { 15, 146, 159, 104, 52, 43, 28, 91, 153, 42, 67, 167, 179, 81, 15, 169, }, { 47, 191, 6, 129, 161, 180, 200, 18, 127, 255, 53, 85, 128, 153, 47, 49, }, { 12, 215, 13, 31, 238, 157, 206, 35, 180, 246, 130, 82, 66, 43, 12, 53, }, { 44, 250, 148, 246, 123, 2, 26, 106, 82, 35, 244, 160, 113, 227, 44, 173, }, { 76, 141, 252, 14, 7, 96, 165, 177, 187, 159, 110, 117, 36, 120, 76, 198, }, { 108, 160, 101, 231, 146, 255, 113, 248, 93, 74, 24, 135, 23, 176, 108, 94, }, { 140, 99, 44, 61, 255, 164, 24, 196, 170, 36, 153, 28, 142, 141, 140, 16, }, { 172, 78, 181, 212, 106, 59, 204, 141, 76, 241, 239, 238, 189, 69, 172, 136, }, { 204, 57, 221, 44, 22, 89, 115, 86, 165, 77, 117, 59, 232, 222, 204, 227, }, { 236, 20, 68, 197, 131, 198, 167, 31, 67, 152, 3, 201, 219, 22, 236, 123, }, { 215, 17, 85, 101, 211, 22, 254, 104, 35, 190, 115, 106, 157, 242, 215, 21, }, { 247, 60, 204, 140, 70, 137, 42, 33, 197, 107, 5, 152, 174, 58, 247, 141, }, { 151, 75, 164, 116, 58, 235, 149, 250, 44, 215, 159, 77, 251, 161, 151, 230, }, { 183, 102, 61, 157, 175, 116, 65, 179, 202, 2, 233, 191, 200, 105, 183, 126, }, { 87, 165, 116, 71, 194, 47, 40, 143, 61, 108, 104, 36, 81, 84, 87, 48, }, { 119, 136, 237, 174, 87, 176, 252, 198, 219, 185, 30, 214, 98, 156, 119, 168, }, { 23, 255, 133, 86, 43, 210, 67, 29, 50, 5, 132, 3, 55, 7, 23, 195, }, { 55, 210, 28, 191, 190, 77, 151, 84, 212, 208, 242, 241, 4, 207, 55, 91, }, { 20, 186, 23, 33, 241, 100, 145, 101, 31, 217, 69, 246, 198, 125, 20, 95, }, { 52, 151, 142, 200, 100, 251, 69, 44, 249, 12, 51, 4, 245, 181, 52, 199, }, { 84, 224, 230, 48, 24, 153, 250, 247, 16, 176, 169, 209, 160, 46, 84, 172, }, { 116, 205, 127, 217, 141, 6, 46, 190, 246, 101, 223, 35, 147, 230, 116, 52, }, { 148, 14, 54, 3, 224, 93, 71, 130, 1, 11, 94, 184, 10, 219, 148, 122, }, { 180, 35, 175, 234, 117, 194, 147, 203, 231, 222, 40, 74, 57, 19, 180, 226, }, { 212, 84, 199, 18, 9, 160, 44, 16, 14, 98, 178, 159, 108, 136, 212, 137, }, { 244, 121, 94, 251, 156, 63, 248, 89, 232, 183, 196, 109, 95, 64, 244, 17, }, { 146, 132, 209, 237, 151, 242, 32, 114, 91, 112, 31, 145, 43, 47, 146, 129, }, { 178, 169, 72, 4, 2, 109, 244, 59, 189, 165, 105, 99, 24, 231, 178, 25, }, { 210, 222, 32, 252, 126, 15, 75, 224, 84, 25, 243, 182, 77, 124, 210, 114, }, { 242, 243, 185, 21, 235, 144, 159, 169, 178, 204, 133, 68, 126, 180, 242, 234, }, { 18, 48, 240, 207, 134, 203, 246, 149, 69, 162, 4, 223, 231, 137, 18, 164, }, { 50, 29, 105, 38, 19, 84, 34, 220, 163, 119, 114, 45, 212, 65, 50, 60, }, { 82, 106, 1, 222, 111, 54, 157, 7, 74, 203, 232, 248, 129, 218, 82, 87, }, { 114, 71, 152, 55, 250, 169, 73, 78, 172, 30, 158, 10, 178, 18, 114, 207, }, { 81, 47, 147, 169, 181, 128, 79, 127, 103, 23, 41, 13, 112, 160, 81, 203, }, { 113, 2, 10, 64, 32, 31, 155, 54, 129, 194, 95, 255, 67, 104, 113, 83, }, { 17, 117, 98, 184, 92, 125, 36, 237, 104, 126, 197, 42, 22, 243, 17, 56, }, { 49, 88, 251, 81, 201, 226, 240, 164, 142, 171, 179, 216, 37, 59, 49, 160, }, { 209, 155, 178, 139, 164, 185, 153, 152, 121, 197, 50, 67, 188, 6, 209, 238, }, { 241, 182, 43, 98, 49, 38, 77, 209, 159, 16, 68, 177, 143, 206, 241, 118, }, { 145, 193, 67, 154, 77, 68, 242, 10, 118, 172, 222, 100, 218, 85, 145, 29, }, { 177, 236, 218, 115, 216, 219, 38, 67, 144, 121, 168, 150, 233, 157, 177, 133, }, { 93, 248, 158, 182, 91, 29, 129, 92, 211, 225, 171, 95, 50, 139, 93, 254, }, { 125, 213, 7, 95, 206, 130, 85, 21, 53, 52, 221, 173, 1, 67, 125, 102, }, { 29, 162, 111, 167, 178, 224, 234, 206, 220, 136, 71, 120, 84, 216, 29, 13, }, { 61, 143, 246, 78, 39, 127, 62, 135, 58, 93, 49, 138, 103, 16, 61, 149, }, { 221, 76, 191, 148, 74, 36, 87, 187, 205, 51, 176, 17, 254, 45, 221, 219, }, { 253, 97, 38, 125, 223, 187, 131, 242, 43, 230, 198, 227, 205, 229, 253, 67, }, { 157, 22, 78, 133, 163, 217, 60, 41, 194, 90, 92, 54, 152, 126, 157, 40, }, { 189, 59, 215, 108, 54, 70, 232, 96, 36, 143, 42, 196, 171, 182, 189, 176, }, { 158, 83, 220, 242, 121, 111, 238, 81, 239, 134, 157, 195, 105, 4, 158, 180, }, { 190, 126, 69, 27, 236, 240, 58, 24, 9, 83, 235, 49, 90, 204, 190, 44, }, { 222, 9, 45, 227, 144, 146, 133, 195, 224, 239, 113, 228, 15, 87, 222, 71, }, { 254, 36, 180, 10, 5, 13, 81, 138, 6, 58, 7, 22, 60, 159, 254, 223, }, { 30, 231, 253, 208, 104, 86, 56, 182, 241, 84, 134, 141, 165, 162, 30, 145, }, { 62, 202, 100, 57, 253, 201, 236, 255, 23, 129, 240, 127, 150, 106, 62, 9, }, { 94, 189, 12, 193, 129, 171, 83, 36, 254, 61, 106, 170, 195, 241, 94, 98, }, { 126, 144, 149, 40, 20, 52, 135, 109, 24, 232, 28, 88, 240, 57, 126, 250, }, { 24, 109, 26, 62, 31, 249, 95, 70, 171, 47, 199, 164, 132, 86, 24, 106, }, { 56, 64, 131, 215, 138, 102, 139, 15, 77, 250, 177, 86, 183, 158, 56, 242, }, { 88, 55, 235, 47, 246, 4, 52, 212, 164, 70, 43, 131, 226, 5, 88, 153, }, { 120, 26, 114, 198, 99, 155, 224, 157, 66, 147, 93, 113, 209, 205, 120, 1, }, { 152, 217, 59, 28, 14, 192, 137, 161, 181, 253, 220, 234, 72, 240, 152, 79, }, { 184, 244, 162, 245, 155, 95, 93, 232, 83, 40, 170, 24, 123, 56, 184, 215, }, { 216, 131, 202, 13, 231, 61, 226, 51, 186, 148, 48, 205, 46, 163, 216, 188, }, { 248, 174, 83, 228, 114, 162, 54, 122, 92, 65, 70, 63, 29, 107, 248, 36, }, { 219, 198, 88, 122, 61, 139, 48, 75, 151, 72, 241, 56, 223, 217, 219, 32, }, { 251, 235, 193, 147, 168, 20, 228, 2, 113, 157, 135, 202, 236, 17, 251, 184, }, { 155, 156, 169, 107, 212, 118, 91, 217, 152, 33, 29, 31, 185, 138, 155, 211, }, { 187, 177, 48, 130, 65, 233, 143, 144, 126, 244, 107, 237, 138, 66, 187, 75, }, { 91, 114, 121, 88, 44, 178, 230, 172, 137, 154, 234, 118, 19, 127, 91, 5, }, { 123, 95, 224, 177, 185, 45, 50, 229, 111, 79, 156, 132, 32, 183, 123, 157, }, { 27, 40, 136, 73, 197, 79, 141, 62, 134, 243, 6, 81, 117, 44, 27, 246, }, { 59, 5, 17, 160, 80, 208, 89, 119, 96, 38, 112, 163, 70, 228, 59, 110, }, { 109, 34, 170, 202, 101, 44, 63, 208, 70, 191, 230, 212, 249, 39, 109, 42, }, { 77, 15, 51, 35, 240, 179, 235, 153, 160, 106, 144, 38, 202, 239, 77, 178, }, { 45, 120, 91, 219, 140, 209, 84, 66, 73, 214, 10, 243, 159, 116, 45, 217, }, { 13, 85, 194, 50, 25, 78, 128, 11, 175, 3, 124, 1, 172, 188, 13, 65, }, { 237, 150, 139, 232, 116, 21, 233, 55, 88, 109, 253, 154, 53, 129, 237, 15, }, { 205, 187, 18, 1, 225, 138, 61, 126, 190, 184, 139, 104, 6, 73, 205, 151, }, { 173, 204, 122, 249, 157, 232, 130, 165, 87, 4, 17, 189, 83, 210, 173, 252, }, { 141, 225, 227, 16, 8, 119, 86, 236, 177, 209, 103, 79, 96, 26, 141, 100, }, { 174, 137, 232, 142, 71, 94, 80, 221, 122, 216, 208, 72, 162, 168, 174, 96, }, { 142, 164, 113, 103, 210, 193, 132, 148, 156, 13, 166, 186, 145, 96, 142, 248, }, { 238, 211, 25, 159, 174, 163, 59, 79, 117, 177, 60, 111, 196, 251, 238, 147, }, { 206, 254, 128, 118, 59, 60, 239, 6, 147, 100, 74, 157, 247, 51, 206, 11, }, { 46, 61, 201, 172, 86, 103, 134, 58, 100, 10, 203, 6, 110, 14, 46, 69, }, { 14, 16, 80, 69, 195, 248, 82, 115, 130, 223, 189, 244, 93, 198, 14, 221, }, { 110, 103, 56, 189, 191, 154, 237, 168, 107, 99, 39, 33, 8, 93, 110, 182, }, { 78, 74, 161, 84, 42, 5, 57, 225, 141, 182, 81, 211, 59, 149, 78, 46, }, { 40, 183, 46, 66, 33, 200, 225, 202, 62, 113, 138, 47, 79, 250, 40, 190, }, { 8, 154, 183, 171, 180, 87, 53, 131, 216, 164, 252, 221, 124, 50, 8, 38, }, { 104, 237, 223, 83, 200, 53, 138, 88, 49, 24, 102, 8, 41, 169, 104, 77, }, { 72, 192, 70, 186, 93, 170, 94, 17, 215, 205, 16, 250, 26, 97, 72, 213, }, { 168, 3, 15, 96, 48, 241, 55, 45, 32, 163, 145, 97, 131, 92, 168, 155, }, { 136, 46, 150, 137, 165, 110, 227, 100, 198, 118, 231, 147, 176, 148, 136, 3, }, { 232, 89, 254, 113, 217, 12, 92, 191, 47, 202, 125, 70, 229, 15, 232, 104, }, { 200, 116, 103, 152, 76, 147, 136, 246, 201, 31, 11, 180, 214, 199, 200, 240, }, { 235, 28, 108, 6, 3, 186, 142, 199, 2, 22, 188, 179, 20, 117, 235, 244, }, { 203, 49, 245, 239, 150, 37, 90, 142, 228, 195, 202, 65, 39, 189, 203, 108, }, { 171, 70, 157, 23, 234, 71, 229, 85, 13, 127, 80, 148, 114, 38, 171, 7, }, { 139, 107, 4, 254, 127, 216, 49, 28, 235, 170, 38, 102, 65, 238, 139, 159, }, { 107, 168, 77, 36, 18, 131, 88, 32, 28, 196, 167, 253, 216, 211, 107, 209, }, { 75, 133, 212, 205, 135, 28, 140, 105, 250, 17, 209, 15, 235, 27, 75, 73, }, { 43, 242, 188, 53, 251, 126, 51, 178, 19, 173, 75, 218, 190, 128, 43, 34, }, { 11, 223, 37, 220, 110, 225, 231, 251, 245, 120, 61, 40, 141, 72, 11, 186, }, { 231, 203, 97, 25, 237, 39, 64, 228, 182, 224, 62, 225, 86, 94, 231, 193, }, { 199, 230, 248, 240, 120, 184, 148, 173, 80, 53, 72, 19, 101, 150, 199, 89, }, { 167, 145, 144, 8, 4, 218, 43, 118, 185, 137, 210, 198, 48, 13, 167, 50, }, { 135, 188, 9, 225, 145, 69, 255, 63, 95, 92, 164, 52, 3, 197, 135, 170, }, { 103, 127, 64, 59, 252, 30, 150, 3, 168, 50, 37, 175, 154, 248, 103, 228, }, { 71, 82, 217, 210, 105, 129, 66, 74, 78, 231, 83, 93, 169, 48, 71, 124, }, { 39, 37, 177, 42, 21, 227, 253, 145, 167, 91, 201, 136, 252, 171, 39, 23, }, { 7, 8, 40, 195, 128, 124, 41, 216, 65, 142, 191, 122, 207, 99, 7, 143, }, { 36, 96, 35, 93, 207, 85, 47, 233, 138, 135, 8, 125, 13, 209, 36, 139, }, { 4, 77, 186, 180, 90, 202, 251, 160, 108, 82, 126, 143, 62, 25, 4, 19, }, { 100, 58, 210, 76, 38, 168, 68, 123, 133, 238, 228, 90, 107, 130, 100, 120, }, { 68, 23, 75, 165, 179, 55, 144, 50, 99, 59, 146, 168, 88, 74, 68, 224, }, { 164, 212, 2, 127, 222, 108, 249, 14, 148, 85, 19, 51, 193, 119, 164, 174, }, { 132, 249, 155, 150, 75, 243, 45, 71, 114, 128, 101, 193, 242, 191, 132, 54, }, { 228, 142, 243, 110, 55, 145, 146, 156, 155, 60, 255, 20, 167, 36, 228, 93, }, { 196, 163, 106, 135, 162, 14, 70, 213, 125, 233, 137, 230, 148, 236, 196, 197, }, { 162, 94, 229, 145, 169, 195, 158, 254, 206, 46, 82, 26, 224, 131, 162, 85, }, { 130, 115, 124, 120, 60, 92, 74, 183, 40, 251, 36, 232, 211, 75, 130, 205, }, { 226, 4, 20, 128, 64, 62, 245, 108, 193, 71, 190, 61, 134, 208, 226, 166, }, { 194, 41, 141, 105, 213, 161, 33, 37, 39, 146, 200, 207, 181, 24, 194, 62, }, { 34, 234, 196, 179, 184, 250, 72, 25, 208, 252, 73, 84, 44, 37, 34, 112, }, { 2, 199, 93, 90, 45, 101, 156, 80, 54, 41, 63, 166, 31, 237, 2, 232, }, { 98, 176, 53, 162, 81, 7, 35, 139, 223, 149, 165, 115, 74, 118, 98, 131, }, { 66, 157, 172, 75, 196, 152, 247, 194, 57, 64, 211, 129, 121, 190, 66, 27, }, { 97, 245, 167, 213, 139, 177, 241, 243, 242, 73, 100, 134, 187, 12, 97, 31, }, { 65, 216, 62, 60, 30, 46, 37, 186, 20, 156, 18, 116, 136, 196, 65, 135, }, { 33, 175, 86, 196, 98, 76, 154, 97, 253, 32, 136, 161, 221, 95, 33, 236, }, { 1, 130, 207, 45, 247, 211, 78, 40, 27, 245, 254, 83, 238, 151, 1, 116, }, { 225, 65, 134, 247, 154, 136, 39, 20, 236, 155, 127, 200, 119, 170, 225, 58, }, { 193, 108, 31, 30, 15, 23, 243, 93, 10, 78, 9, 58, 68, 98, 193, 162, }, { 161, 27, 119, 230, 115, 117, 76, 134, 227, 242, 147, 239, 17, 249, 161, 201, }, { 129, 54, 238, 15, 230, 234, 152, 207, 5, 39, 229, 29, 34, 49, 129, 81, }, { 186, 51, 255, 175, 182, 58, 193, 184, 101, 1, 149, 190, 100, 213, 186, 63, }, { 154, 30, 102, 70, 35, 165, 21, 241, 131, 212, 227, 76, 87, 29, 154, 167, }, { 250, 105, 14, 190, 95, 199, 170, 42, 106, 104, 121, 153, 2, 134, 250, 204, }, { 218, 68, 151, 87, 202, 88, 126, 99, 140, 189, 15, 107, 49, 78, 218, 84, }, { 58, 135, 222, 141, 167, 3, 23, 95, 123, 211, 142, 240, 168, 115, 58, 26, }, { 26, 170, 71, 100, 50, 156, 195, 22, 157, 6, 248, 2, 155, 187, 26, 130, }, { 122, 221, 47, 156, 78, 254, 124, 205, 116, 186, 98, 215, 206, 32, 122, 233, }, { 90, 240, 182, 117, 219, 97, 168, 132, 146, 111, 20, 37, 253, 232, 90, 113, }, { 121, 152, 189, 235, 148, 72, 174, 181, 89, 102, 163, 34, 63, 90, 121, 117, }, { 89, 181, 36, 2, 1, 215, 122, 252, 191, 179, 213, 208, 12, 146, 89, 237, }, { 57, 194, 76, 250, 125, 181, 197, 39, 86, 15, 79, 5, 89, 9, 57, 134, }, { 25, 239, 213, 19, 232, 42, 17, 110, 176, 218, 57, 247, 106, 193, 25, 30, }, { 249, 44, 156, 201, 133, 113, 120, 82, 71, 180, 184, 108, 243, 252, 249, 80, }, { 217, 1, 5, 32, 16, 238, 172, 27, 161, 97, 206, 158, 192, 52, 217, 200, }, { 185, 118, 109, 216, 108, 140, 19, 192, 72, 221, 84, 75, 149, 175, 185, 163, }, { 153, 91, 244, 49, 249, 19, 199, 137, 174, 8, 34, 185, 166, 103, 153, 59, }, { 255, 166, 123, 39, 242, 222, 31, 162, 29, 207, 249, 69, 210, 8, 255, 171, }, { 223, 139, 226, 206, 103, 65, 203, 235, 251, 26, 143, 183, 225, 192, 223, 51, }, { 191, 252, 138, 54, 27, 35, 116, 48, 18, 166, 21, 98, 180, 91, 191, 88, }, { 159, 209, 19, 223, 142, 188, 160, 121, 244, 115, 99, 144, 135, 147, 159, 192, }, { 127, 18, 90, 5, 227, 231, 201, 69, 3, 29, 226, 11, 30, 174, 127, 142, }, { 95, 63, 195, 236, 118, 120, 29, 12, 229, 200, 148, 249, 45, 102, 95, 22, }, { 63, 72, 171, 20, 10, 26, 162, 215, 12, 116, 14, 44, 120, 253, 63, 125, }, { 31, 101, 50, 253, 159, 133, 118, 158, 234, 161, 120, 222, 75, 53, 31, 229, }, { 60, 13, 57, 99, 208, 172, 112, 175, 33, 168, 207, 217, 137, 135, 60, 225, }, { 28, 32, 160, 138, 69, 51, 164, 230, 199, 125, 185, 43, 186, 79, 28, 121, }, { 124, 87, 200, 114, 57, 81, 27, 61, 46, 193, 35, 254, 239, 212, 124, 18, }, { 92, 122, 81, 155, 172, 206, 207, 116, 200, 20, 85, 12, 220, 28, 92, 138, }, { 188, 185, 24, 65, 193, 149, 166, 72, 63, 122, 212, 151, 69, 33, 188, 196, }, { 156, 148, 129, 168, 84, 10, 114, 1, 217, 175, 162, 101, 118, 233, 156, 92, }, { 252, 227, 233, 80, 40, 104, 205, 218, 48, 19, 56, 176, 35, 114, 252, 55, }, { 220, 206, 112, 185, 189, 247, 25, 147, 214, 198, 78, 66, 16, 186, 220, 175, }, { 48, 218, 52, 124, 62, 49, 190, 140, 149, 94, 77, 139, 203, 172, 48, 212, }, { 16, 247, 173, 149, 171, 174, 106, 197, 115, 139, 59, 121, 248, 100, 16, 76, }, { 112, 128, 197, 109, 215, 204, 213, 30, 154, 55, 161, 172, 173, 255, 112, 39, }, { 80, 173, 92, 132, 66, 83, 1, 87, 124, 226, 215, 94, 158, 55, 80, 191, }, { 176, 110, 21, 94, 47, 8, 104, 107, 139, 140, 86, 197, 7, 10, 176, 241, }, { 144, 67, 140, 183, 186, 151, 188, 34, 109, 89, 32, 55, 52, 194, 144, 105, }, { 240, 52, 228, 79, 198, 245, 3, 249, 132, 229, 186, 226, 97, 89, 240, 2, }, { 208, 25, 125, 166, 83, 106, 215, 176, 98, 48, 204, 16, 82, 145, 208, 154, }, { 243, 113, 118, 56, 28, 67, 209, 129, 169, 57, 123, 23, 144, 35, 243, 158, }, { 211, 92, 239, 209, 137, 220, 5, 200, 79, 236, 13, 229, 163, 235, 211, 6, }, { 179, 43, 135, 41, 245, 190, 186, 19, 166, 80, 151, 48, 246, 112, 179, 109, }, { 147, 6, 30, 192, 96, 33, 110, 90, 64, 133, 225, 194, 197, 184, 147, 245, }, { 115, 197, 87, 26, 13, 122, 7, 102, 183, 235, 96, 89, 92, 133, 115, 187, }, { 83, 232, 206, 243, 152, 229, 211, 47, 81, 62, 22, 171, 111, 77, 83, 35, }, { 51, 159, 166, 11, 228, 135, 108, 244, 184, 130, 140, 126, 58, 214, 51, 72, }, { 19, 178, 63, 226, 113, 24, 184, 189, 94, 87, 250, 140, 9, 30, 19, 208, }, { 117, 79, 176, 244, 122, 213, 96, 150, 237, 144, 33, 112, 125, 113, 117, 64, }, { 85, 98, 41, 29, 239, 74, 180, 223, 11, 69, 87, 130, 78, 185, 85, 216, }, { 53, 21, 65, 229, 147, 40, 11, 4, 226, 249, 205, 87, 27, 34, 53, 179, }, { 21, 56, 216, 12, 6, 183, 223, 77, 4, 44, 187, 165, 40, 234, 21, 43, }, { 245, 251, 145, 214, 107, 236, 182, 113, 243, 66, 58, 62, 177, 215, 245, 101, }, { 213, 214, 8, 63, 254, 115, 98, 56, 21, 151, 76, 204, 130, 31, 213, 253, }, { 181, 161, 96, 199, 130, 17, 221, 227, 252, 43, 214, 25, 215, 132, 181, 150, }, { 149, 140, 249, 46, 23, 142, 9, 170, 26, 254, 160, 235, 228, 76, 149, 14, }, { 182, 228, 242, 176, 88, 167, 15, 155, 209, 247, 23, 236, 38, 254, 182, 10, }, { 150, 201, 107, 89, 205, 56, 219, 210, 55, 34, 97, 30, 21, 54, 150, 146, }, { 246, 190, 3, 161, 177, 90, 100, 9, 222, 158, 251, 203, 64, 173, 246, 249, }, { 214, 147, 154, 72, 36, 197, 176, 64, 56, 75, 141, 57, 115, 101, 214, 97, }, { 54, 80, 211, 146, 73, 158, 217, 124, 207, 37, 12, 162, 234, 88, 54, 47, }, { 22, 125, 74, 123, 220, 1, 13, 53, 41, 240, 122, 80, 217, 144, 22, 183, }, { 118, 10, 34, 131, 160, 99, 178, 238, 192, 76, 224, 133, 140, 11, 118, 220, }, { 86, 39, 187, 106, 53, 252, 102, 167, 38, 153, 150, 119, 191, 195, 86, 68, }, }, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, { 148, 132, 221, 16, 189, 39, 93, 184, 122, 72, 108, 114, 118, 162, 110, 207, }, { 235, 203, 121, 32, 185, 78, 186, 179, 244, 144, 216, 228, 236, 135, 220, 93, }, { 127, 79, 164, 48, 4, 105, 231, 11, 142, 216, 180, 150, 154, 37, 178, 146, }, { 21, 85, 242, 64, 177, 156, 183, 165, 43, 227, 115, 11, 27, 205, 123, 186, }, { 129, 209, 47, 80, 12, 187, 234, 29, 81, 171, 31, 121, 109, 111, 21, 117, }, { 254, 158, 139, 96, 8, 210, 13, 22, 223, 115, 171, 239, 247, 74, 167, 231, }, { 106, 26, 86, 112, 181, 245, 80, 174, 165, 59, 199, 157, 129, 232, 201, 40, }, { 42, 170, 39, 128, 161, 251, 173, 137, 86, 5, 230, 22, 54, 89, 246, 183, }, { 190, 46, 250, 144, 28, 220, 240, 49, 44, 77, 138, 100, 64, 251, 152, 120, }, { 193, 97, 94, 160, 24, 181, 23, 58, 162, 149, 62, 242, 218, 222, 42, 234, }, { 85, 229, 131, 176, 165, 146, 74, 130, 216, 221, 82, 128, 172, 124, 68, 37, }, { 63, 255, 213, 192, 16, 103, 26, 44, 125, 230, 149, 29, 45, 148, 141, 13, }, { 171, 123, 8, 208, 173, 64, 71, 148, 7, 174, 249, 111, 91, 54, 227, 194, }, { 212, 52, 172, 224, 169, 41, 160, 159, 137, 118, 77, 249, 193, 19, 81, 80, }, { 64, 176, 113, 240, 20, 14, 253, 39, 243, 62, 33, 139, 183, 177, 63, 159, }, { 84, 151, 78, 195, 129, 53, 153, 209, 172, 10, 15, 44, 108, 178, 47, 173, }, { 192, 19, 147, 211, 60, 18, 196, 105, 214, 66, 99, 94, 26, 16, 65, 98, }, { 191, 92, 55, 227, 56, 123, 35, 98, 88, 154, 215, 200, 128, 53, 243, 240, }, { 43, 216, 234, 243, 133, 92, 126, 218, 34, 210, 187, 186, 246, 151, 157, 63, }, { 65, 194, 188, 131, 48, 169, 46, 116, 135, 233, 124, 39, 119, 127, 84, 23, }, { 213, 70, 97, 147, 141, 142, 115, 204, 253, 161, 16, 85, 1, 221, 58, 216, }, { 170, 9, 197, 163, 137, 231, 148, 199, 115, 121, 164, 195, 155, 248, 136, 74, }, { 62, 141, 24, 179, 52, 192, 201, 127, 9, 49, 200, 177, 237, 90, 230, 133, }, { 126, 61, 105, 67, 32, 206, 52, 88, 250, 15, 233, 58, 90, 235, 217, 26, }, { 234, 185, 180, 83, 157, 233, 105, 224, 128, 71, 133, 72, 44, 73, 183, 213, }, { 149, 246, 16, 99, 153, 128, 142, 235, 14, 159, 49, 222, 182, 108, 5, 71, }, { 1, 114, 205, 115, 36, 167, 211, 83, 116, 215, 93, 172, 192, 206, 107, 136, }, { 107, 104, 155, 3, 145, 82, 131, 253, 209, 236, 154, 49, 65, 38, 162, 160, }, { 255, 236, 70, 19, 44, 117, 222, 69, 171, 164, 246, 67, 55, 132, 204, 111, }, { 128, 163, 226, 35, 40, 28, 57, 78, 37, 124, 66, 213, 173, 161, 126, 253, }, { 20, 39, 63, 51, 149, 59, 100, 246, 95, 52, 46, 167, 219, 3, 16, 50, }, { 168, 237, 156, 69, 193, 106, 241, 97, 155, 20, 30, 88, 216, 167, 94, 153, }, { 60, 105, 65, 85, 124, 77, 172, 217, 225, 92, 114, 42, 174, 5, 48, 86, }, { 67, 38, 229, 101, 120, 36, 75, 210, 111, 132, 198, 188, 52, 32, 130, 196, }, { 215, 162, 56, 117, 197, 3, 22, 106, 21, 204, 170, 206, 66, 130, 236, 11, }, { 189, 184, 110, 5, 112, 246, 70, 196, 176, 247, 109, 83, 195, 106, 37, 35, }, { 41, 60, 179, 21, 205, 209, 27, 124, 202, 191, 1, 33, 181, 200, 75, 236, }, { 86, 115, 23, 37, 201, 184, 252, 119, 68, 103, 181, 183, 47, 237, 249, 126, }, { 194, 247, 202, 53, 116, 159, 161, 207, 62, 47, 217, 197, 89, 79, 151, 177, }, { 130, 71, 187, 197, 96, 145, 92, 232, 205, 17, 248, 78, 238, 254, 168, 46, }, { 22, 195, 102, 213, 221, 182, 1, 80, 183, 89, 148, 60, 152, 92, 198, 225, }, { 105, 140, 194, 229, 217, 223, 230, 91, 57, 129, 32, 170, 2, 121, 116, 115, }, { 253, 8, 31, 245, 100, 248, 187, 227, 67, 201, 76, 216, 116, 219, 26, 188, }, { 151, 18, 73, 133, 209, 13, 235, 77, 230, 242, 139, 69, 245, 51, 211, 148, }, { 3, 150, 148, 149, 108, 42, 182, 245, 156, 186, 231, 55, 131, 145, 189, 91, }, { 124, 217, 48, 165, 104, 67, 81, 254, 18, 98, 83, 161, 25, 180, 15, 201, }, { 232, 93, 237, 181, 213, 100, 12, 70, 104, 42, 63, 211, 111, 22, 97, 6, }, { 252, 122, 210, 134, 64, 95, 104, 176, 55, 30, 17, 116, 180, 21, 113, 52, }, { 104, 254, 15, 150, 253, 120, 53, 8, 77, 86, 125, 6, 194, 183, 31, 251, }, { 23, 177, 171, 166, 249, 17, 210, 3, 195, 142, 201, 144, 88, 146, 173, 105, }, { 131, 53, 118, 182, 68, 54, 143, 187, 185, 198, 165, 226, 46, 48, 195, 166, }, { 233, 47, 32, 198, 241, 195, 223, 21, 28, 253, 98, 127, 175, 216, 10, 142, }, { 125, 171, 253, 214, 76, 228, 130, 173, 102, 181, 14, 13, 217, 122, 100, 65, }, { 2, 228, 89, 230, 72, 141, 101, 166, 232, 109, 186, 155, 67, 95, 214, 211, }, { 150, 96, 132, 246, 245, 170, 56, 30, 146, 37, 214, 233, 53, 253, 184, 28, }, { 214, 208, 245, 6, 225, 164, 197, 57, 97, 27, 247, 98, 130, 76, 135, 131, }, { 66, 84, 40, 22, 92, 131, 152, 129, 27, 83, 155, 16, 244, 238, 233, 76, }, { 61, 27, 140, 38, 88, 234, 127, 138, 149, 139, 47, 134, 110, 203, 91, 222, }, { 169, 159, 81, 54, 229, 205, 34, 50, 239, 195, 67, 244, 24, 105, 53, 17, }, { 195, 133, 7, 70, 80, 56, 114, 156, 74, 248, 132, 105, 153, 129, 252, 57, }, { 87, 1, 218, 86, 237, 31, 47, 36, 48, 176, 232, 27, 239, 35, 146, 246, }, { 40, 78, 126, 102, 233, 118, 200, 47, 190, 104, 92, 141, 117, 6, 32, 100, }, { 188, 202, 163, 118, 84, 81, 149, 151, 196, 32, 48, 255, 3, 164, 78, 171, }, { 147, 25, 251, 138, 65, 212, 33, 194, 245, 40, 60, 176, 115, 141, 188, 241, }, { 7, 157, 38, 154, 252, 243, 124, 122, 143, 96, 80, 194, 5, 47, 210, 62, }, { 120, 210, 130, 170, 248, 154, 155, 113, 1, 184, 228, 84, 159, 10, 96, 172, }, { 236, 86, 95, 186, 69, 189, 198, 201, 123, 240, 136, 38, 233, 168, 14, 99, }, { 134, 76, 9, 202, 240, 72, 150, 103, 222, 203, 79, 187, 104, 64, 199, 75, }, { 18, 200, 212, 218, 77, 111, 203, 223, 164, 131, 35, 201, 30, 226, 169, 132, }, { 109, 135, 112, 234, 73, 6, 44, 212, 42, 91, 151, 95, 132, 199, 27, 22, }, { 249, 3, 173, 250, 244, 33, 113, 108, 80, 19, 251, 45, 242, 101, 117, 217, }, { 185, 179, 220, 10, 224, 47, 140, 75, 163, 45, 218, 166, 69, 212, 74, 70, }, { 45, 55, 1, 26, 93, 8, 209, 243, 217, 101, 182, 212, 51, 118, 36, 137, }, { 82, 120, 165, 42, 89, 97, 54, 248, 87, 189, 2, 66, 169, 83, 150, 27, }, { 198, 252, 120, 58, 228, 70, 107, 64, 45, 245, 110, 48, 223, 241, 248, 212, }, { 172, 230, 46, 74, 81, 179, 59, 238, 136, 206, 169, 173, 94, 25, 49, 252, }, { 56, 98, 243, 90, 236, 148, 102, 86, 242, 134, 197, 223, 40, 187, 95, 51, }, { 71, 45, 87, 106, 232, 253, 129, 93, 124, 94, 113, 73, 178, 158, 237, 161, }, { 211, 169, 138, 122, 85, 218, 220, 229, 6, 22, 29, 59, 196, 60, 131, 110, }, { 199, 142, 181, 73, 192, 225, 184, 19, 89, 34, 51, 156, 31, 63, 147, 92, }, { 83, 10, 104, 89, 125, 198, 229, 171, 35, 106, 95, 238, 105, 157, 253, 147, }, { 44, 69, 204, 105, 121, 175, 2, 160, 173, 178, 235, 120, 243, 184, 79, 1, }, { 184, 193, 17, 121, 196, 136, 95, 24, 215, 250, 135, 10, 133, 26, 33, 206, }, { 210, 219, 71, 9, 113, 125, 15, 182, 114, 193, 64, 151, 4, 242, 232, 230, }, { 70, 95, 154, 25, 204, 90, 82, 14, 8, 137, 44, 229, 114, 80, 134, 41, }, { 57, 16, 62, 41, 200, 51, 181, 5, 134, 81, 152, 115, 232, 117, 52, 187, }, { 173, 148, 227, 57, 117, 20, 232, 189, 252, 25, 244, 1, 158, 215, 90, 116, }, { 237, 36, 146, 201, 97, 26, 21, 154, 15, 39, 213, 138, 41, 102, 101, 235, }, { 121, 160, 79, 217, 220, 61, 72, 34, 117, 111, 185, 248, 95, 196, 11, 36, }, { 6, 239, 235, 233, 216, 84, 175, 41, 251, 183, 13, 110, 197, 225, 185, 182, }, { 146, 107, 54, 249, 101, 115, 242, 145, 129, 255, 97, 28, 179, 67, 215, 121, }, { 248, 113, 96, 137, 208, 134, 162, 63, 36, 196, 166, 129, 50, 171, 30, 81, }, { 108, 245, 189, 153, 109, 161, 255, 135, 94, 140, 202, 243, 68, 9, 112, 158, }, { 19, 186, 25, 169, 105, 200, 24, 140, 208, 84, 126, 101, 222, 44, 194, 12, }, { 135, 62, 196, 185, 212, 239, 69, 52, 170, 28, 18, 23, 168, 142, 172, 195, }, { 59, 244, 103, 207, 128, 190, 208, 163, 110, 60, 34, 232, 171, 42, 226, 104, }, { 175, 112, 186, 223, 61, 153, 141, 27, 20, 116, 78, 154, 221, 136, 140, 167, }, { 208, 63, 30, 239, 57, 240, 106, 16, 154, 172, 250, 12, 71, 173, 62, 53, }, { 68, 187, 195, 255, 132, 215, 55, 168, 224, 228, 150, 126, 49, 15, 80, 250, }, { 46, 161, 149, 143, 49, 34, 103, 6, 69, 223, 81, 227, 176, 231, 153, 210, }, { 186, 37, 72, 159, 140, 5, 58, 190, 63, 151, 61, 145, 198, 69, 247, 29, }, { 197, 106, 236, 175, 136, 108, 221, 181, 177, 79, 137, 7, 92, 96, 69, 143, }, { 81, 238, 49, 191, 53, 75, 128, 13, 203, 7, 229, 117, 42, 194, 43, 64, }, { 17, 94, 64, 79, 33, 69, 125, 42, 56, 57, 196, 254, 157, 115, 20, 223, }, { 133, 218, 157, 95, 156, 98, 32, 146, 66, 113, 168, 140, 235, 209, 122, 16, }, { 250, 149, 57, 111, 152, 11, 199, 153, 204, 169, 28, 26, 113, 244, 200, 130, }, { 110, 17, 228, 127, 37, 44, 154, 33, 182, 225, 112, 104, 7, 86, 166, 77, }, { 4, 11, 178, 15, 144, 217, 202, 143, 19, 218, 183, 245, 134, 190, 111, 101, }, { 144, 143, 111, 31, 45, 254, 151, 55, 105, 146, 219, 135, 240, 28, 1, 170, }, { 239, 192, 203, 47, 41, 151, 112, 60, 231, 74, 111, 17, 106, 57, 179, 56, }, { 123, 68, 22, 63, 148, 176, 45, 132, 157, 2, 3, 99, 28, 155, 221, 247, }, { 111, 99, 41, 12, 1, 139, 73, 114, 194, 54, 45, 196, 199, 152, 205, 197, }, { 251, 231, 244, 28, 188, 172, 20, 202, 184, 126, 65, 182, 177, 58, 163, 10, }, { 132, 168, 80, 44, 184, 197, 243, 193, 54, 166, 245, 32, 43, 31, 17, 152, }, { 16, 44, 141, 60, 5, 226, 174, 121, 76, 238, 153, 82, 93, 189, 127, 87, }, { 122, 54, 219, 76, 176, 23, 254, 215, 233, 213, 94, 207, 220, 85, 182, 127, }, { 238, 178, 6, 92, 13, 48, 163, 111, 147, 157, 50, 189, 170, 247, 216, 176, }, { 145, 253, 162, 108, 9, 89, 68, 100, 29, 69, 134, 43, 48, 210, 106, 34, }, { 5, 121, 127, 124, 180, 126, 25, 220, 103, 13, 234, 89, 70, 112, 4, 237, }, { 69, 201, 14, 140, 160, 112, 228, 251, 148, 51, 203, 210, 241, 193, 59, 114, }, { 209, 77, 211, 156, 29, 87, 185, 67, 238, 123, 167, 160, 135, 99, 85, 189, }, { 174, 2, 119, 172, 25, 62, 94, 72, 96, 163, 19, 54, 29, 70, 231, 47, }, { 58, 134, 170, 188, 164, 25, 3, 240, 26, 235, 127, 68, 107, 228, 137, 224, }, { 80, 156, 252, 204, 17, 236, 83, 94, 191, 208, 184, 217, 234, 12, 64, 200, }, { 196, 24, 33, 220, 172, 203, 14, 230, 197, 152, 212, 171, 156, 174, 46, 7, }, { 187, 87, 133, 236, 168, 162, 233, 237, 75, 64, 96, 61, 6, 139, 156, 149, }, { 47, 211, 88, 252, 21, 133, 180, 85, 49, 8, 12, 79, 112, 41, 242, 90, }, { 229, 50, 53, 215, 130, 107, 66, 71, 41, 80, 120, 163, 230, 217, 187, 33, }, { 113, 182, 232, 199, 63, 76, 31, 255, 83, 24, 20, 209, 144, 123, 213, 238, }, { 14, 249, 76, 247, 59, 37, 248, 244, 221, 192, 160, 71, 10, 94, 103, 124, }, { 154, 125, 145, 231, 134, 2, 165, 76, 167, 136, 204, 53, 124, 252, 9, 179, }, { 240, 103, 199, 151, 51, 247, 245, 226, 2, 179, 11, 168, 253, 20, 192, 155, }, { 100, 227, 26, 135, 142, 208, 168, 90, 120, 251, 103, 218, 139, 182, 174, 84, }, { 27, 172, 190, 183, 138, 185, 79, 81, 246, 35, 211, 76, 17, 147, 28, 198, }, { 143, 40, 99, 167, 55, 158, 18, 233, 140, 107, 191, 62, 103, 49, 114, 9, }, { 207, 152, 18, 87, 35, 144, 239, 206, 127, 85, 158, 181, 208, 128, 77, 150, }, { 91, 28, 207, 71, 158, 183, 178, 118, 5, 29, 242, 199, 166, 34, 35, 89, }, { 36, 83, 107, 119, 154, 222, 85, 125, 139, 197, 70, 81, 60, 7, 145, 203, }, { 176, 215, 182, 103, 39, 249, 8, 197, 241, 141, 42, 35, 74, 165, 255, 4, }, { 218, 205, 224, 23, 146, 12, 88, 107, 84, 182, 237, 190, 203, 77, 54, 44, }, { 78, 73, 61, 7, 47, 43, 5, 211, 46, 254, 129, 204, 189, 239, 88, 227, }, { 49, 6, 153, 55, 43, 66, 226, 216, 160, 38, 53, 90, 39, 202, 234, 113, }, { 165, 130, 68, 39, 150, 101, 191, 96, 218, 110, 89, 40, 81, 104, 132, 190, }, { 177, 165, 123, 20, 3, 94, 219, 150, 133, 90, 119, 143, 138, 107, 148, 140, }, { 37, 33, 166, 4, 190, 121, 134, 46, 255, 18, 27, 253, 252, 201, 250, 67, }, { 90, 110, 2, 52, 186, 16, 97, 37, 113, 202, 175, 107, 102, 236, 72, 209, }, { 206, 234, 223, 36, 7, 55, 60, 157, 11, 130, 195, 25, 16, 78, 38, 30, }, { 164, 240, 137, 84, 178, 194, 108, 51, 174, 185, 4, 132, 145, 166, 239, 54, }, { 48, 116, 84, 68, 15, 229, 49, 139, 212, 241, 104, 246, 231, 4, 129, 249, }, { 79, 59, 240, 116, 11, 140, 214, 128, 90, 41, 220, 96, 125, 33, 51, 107, }, { 219, 191, 45, 100, 182, 171, 139, 56, 32, 97, 176, 18, 11, 131, 93, 164, }, { 155, 15, 92, 148, 162, 165, 118, 31, 211, 95, 145, 153, 188, 50, 98, 59, }, { 15, 139, 129, 132, 31, 130, 43, 167, 169, 23, 253, 235, 202, 144, 12, 244, }, { 112, 196, 37, 180, 27, 235, 204, 172, 39, 207, 73, 125, 80, 181, 190, 102, }, { 228, 64, 248, 164, 166, 204, 145, 20, 93, 135, 37, 15, 38, 23, 208, 169, }, { 142, 90, 174, 212, 19, 57, 193, 186, 248, 188, 226, 146, 167, 255, 25, 129, }, { 26, 222, 115, 196, 174, 30, 156, 2, 130, 244, 142, 224, 209, 93, 119, 78, }, { 101, 145, 215, 244, 170, 119, 123, 9, 12, 44, 58, 118, 75, 120, 197, 220, }, { 241, 21, 10, 228, 23, 80, 38, 177, 118, 100, 86, 4, 61, 218, 171, 19, }, { 77, 223, 169, 146, 67, 1, 179, 38, 178, 68, 102, 251, 62, 126, 229, 184, }, { 217, 91, 116, 130, 254, 38, 238, 158, 200, 12, 10, 137, 72, 220, 139, 119, }, { 166, 20, 208, 178, 250, 79, 9, 149, 70, 212, 190, 31, 210, 249, 57, 229, }, { 50, 144, 13, 162, 71, 104, 84, 45, 60, 156, 210, 109, 164, 91, 87, 42, }, { 88, 138, 91, 210, 242, 157, 4, 131, 153, 167, 21, 240, 37, 179, 158, 2, }, { 204, 14, 134, 194, 79, 186, 89, 59, 227, 239, 121, 130, 83, 17, 240, 205, }, { 179, 65, 34, 242, 75, 211, 190, 48, 109, 55, 205, 20, 201, 52, 66, 95, }, { 39, 197, 255, 226, 246, 244, 227, 136, 23, 127, 161, 102, 191, 150, 44, 144, }, { 103, 117, 142, 18, 226, 250, 30, 175, 228, 65, 128, 237, 8, 39, 19, 15, }, { 243, 241, 83, 2, 95, 221, 67, 23, 158, 9, 236, 159, 126, 133, 125, 192, }, { 140, 190, 247, 50, 91, 180, 164, 28, 16, 209, 88, 9, 228, 160, 207, 82, }, { 24, 58, 42, 34, 230, 147, 249, 164, 106, 153, 52, 123, 146, 2, 161, 157, }, { 114, 32, 124, 82, 83, 102, 169, 10, 207, 162, 243, 230, 19, 234, 104, 181, }, { 230, 164, 161, 66, 238, 65, 244, 178, 181, 234, 159, 148, 101, 72, 6, 122, }, { 153, 235, 5, 114, 234, 40, 19, 185, 59, 50, 43, 2, 255, 109, 180, 232, }, { 13, 111, 216, 98, 87, 15, 78, 1, 65, 122, 71, 112, 137, 207, 218, 39, }, { 25, 72, 231, 81, 194, 52, 42, 247, 30, 78, 105, 215, 82, 204, 202, 21, }, { 141, 204, 58, 65, 127, 19, 119, 79, 100, 6, 5, 165, 36, 110, 164, 218, }, { 242, 131, 158, 113, 123, 122, 144, 68, 234, 222, 177, 51, 190, 75, 22, 72, }, { 102, 7, 67, 97, 198, 93, 205, 252, 144, 150, 221, 65, 200, 233, 120, 135, }, { 12, 29, 21, 17, 115, 168, 157, 82, 53, 173, 26, 220, 73, 1, 177, 175, }, { 152, 153, 200, 1, 206, 143, 192, 234, 79, 229, 118, 174, 63, 163, 223, 96, }, { 231, 214, 108, 49, 202, 230, 39, 225, 193, 61, 194, 56, 165, 134, 109, 242, }, { 115, 82, 177, 33, 119, 193, 122, 89, 187, 117, 174, 74, 211, 36, 3, 61, }, { 51, 226, 192, 209, 99, 207, 135, 126, 72, 75, 143, 193, 100, 149, 60, 162, }, { 167, 102, 29, 193, 222, 232, 218, 198, 50, 3, 227, 179, 18, 55, 82, 109, }, { 216, 41, 185, 241, 218, 129, 61, 205, 188, 219, 87, 37, 136, 18, 224, 255, }, { 76, 173, 100, 225, 103, 166, 96, 117, 198, 147, 59, 87, 254, 176, 142, 48, }, { 38, 183, 50, 145, 210, 83, 48, 219, 99, 168, 252, 202, 127, 88, 71, 24, }, { 178, 51, 239, 129, 111, 116, 109, 99, 25, 224, 144, 184, 9, 250, 41, 215, }, { 205, 124, 75, 177, 107, 29, 138, 104, 151, 56, 36, 46, 147, 223, 155, 69, }, { 89, 248, 150, 161, 214, 58, 215, 208, 237, 112, 72, 92, 229, 125, 245, 138, }, { 118, 43, 206, 93, 195, 191, 99, 133, 220, 120, 68, 19, 149, 84, 7, 208, }, { 226, 175, 19, 77, 126, 152, 62, 61, 166, 48, 40, 97, 227, 246, 105, 31, }, { 157, 224, 183, 125, 122, 241, 217, 54, 40, 232, 156, 247, 121, 211, 219, 141, }, { 9, 100, 106, 109, 199, 214, 132, 142, 82, 160, 240, 133, 15, 113, 181, 66, }, { 99, 126, 60, 29, 114, 35, 212, 32, 247, 155, 55, 24, 142, 153, 124, 106, }, { 247, 250, 225, 13, 207, 4, 137, 152, 141, 211, 91, 106, 248, 59, 18, 165, }, { 136, 181, 69, 61, 203, 109, 110, 147, 3, 11, 239, 252, 98, 30, 160, 55, }, { 28, 49, 152, 45, 118, 74, 51, 43, 121, 67, 131, 142, 20, 188, 206, 248, }, { 92, 129, 233, 221, 98, 68, 206, 12, 138, 125, 162, 5, 163, 13, 241, 103, }, { 200, 5, 52, 205, 223, 99, 147, 180, 240, 53, 206, 119, 213, 175, 159, 168, }, { 183, 74, 144, 253, 219, 10, 116, 191, 126, 237, 122, 225, 79, 138, 45, 58, }, { 35, 206, 77, 237, 102, 45, 41, 7, 4, 165, 22, 147, 57, 40, 67, 245, }, { 73, 212, 27, 157, 211, 216, 121, 169, 161, 158, 209, 14, 184, 192, 138, 221, }, { 221, 80, 198, 141, 110, 255, 36, 17, 219, 214, 189, 124, 206, 98, 228, 18, }, { 162, 31, 98, 189, 106, 150, 195, 26, 85, 14, 9, 234, 84, 71, 86, 128, }, { 54, 155, 191, 173, 215, 177, 158, 162, 47, 70, 101, 152, 34, 229, 56, 79, }, { 34, 188, 128, 158, 66, 138, 250, 84, 112, 114, 75, 63, 249, 230, 40, 125, }, { 182, 56, 93, 142, 255, 173, 167, 236, 10, 58, 39, 77, 143, 68, 70, 178, }, { 201, 119, 249, 190, 251, 196, 64, 231, 132, 226, 147, 219, 21, 97, 244, 32, }, { 93, 243, 36, 174, 70, 227, 29, 95, 254, 170, 255, 169, 99, 195, 154, 239, }, { 55, 233, 114, 222, 243, 22, 77, 241, 91, 145, 56, 52, 226, 43, 83, 199, }, { 163, 109, 175, 206, 78, 49, 16, 73, 33, 217, 84, 70, 148, 137, 61, 8, }, { 220, 34, 11, 254, 74, 88, 247, 66, 175, 1, 224, 208, 14, 172, 143, 154, }, { 72, 166, 214, 238, 247, 127, 170, 250, 213, 73, 140, 162, 120, 14, 225, 85, }, { 8, 22, 167, 30, 227, 113, 87, 221, 38, 119, 173, 41, 207, 191, 222, 202, }, { 156, 146, 122, 14, 94, 86, 10, 101, 92, 63, 193, 91, 185, 29, 176, 5, }, { 227, 221, 222, 62, 90, 63, 237, 110, 210, 231, 117, 205, 35, 56, 2, 151, }, { 119, 89, 3, 46, 231, 24, 176, 214, 168, 175, 25, 191, 85, 154, 108, 88, }, { 29, 67, 85, 94, 82, 237, 224, 120, 13, 148, 222, 34, 212, 114, 165, 112, }, { 137, 199, 136, 78, 239, 202, 189, 192, 119, 220, 178, 80, 162, 208, 203, 191, }, { 246, 136, 44, 126, 235, 163, 90, 203, 249, 4, 6, 198, 56, 245, 121, 45, }, { 98, 12, 241, 110, 86, 132, 7, 115, 131, 76, 106, 180, 78, 87, 23, 226, }, { 222, 198, 82, 24, 2, 213, 146, 228, 71, 108, 90, 75, 77, 243, 89, 73, }, { 74, 66, 143, 8, 191, 242, 207, 92, 61, 36, 54, 57, 59, 81, 55, 134, }, { 53, 13, 43, 56, 187, 155, 40, 87, 179, 252, 130, 175, 161, 116, 133, 20, }, { 161, 137, 246, 40, 6, 188, 117, 239, 201, 180, 238, 221, 215, 214, 235, 219, }, { 203, 147, 160, 88, 179, 73, 37, 65, 108, 143, 41, 64, 86, 62, 34, 243, }, { 95, 23, 125, 72, 14, 110, 120, 249, 22, 199, 69, 50, 32, 156, 76, 60, }, { 32, 88, 217, 120, 10, 7, 159, 242, 152, 31, 241, 164, 186, 185, 254, 174, }, { 180, 220, 4, 104, 183, 32, 194, 74, 226, 87, 157, 214, 204, 27, 144, 97, }, { 244, 108, 117, 152, 163, 46, 63, 109, 17, 105, 188, 93, 123, 170, 175, 254, }, { 96, 232, 168, 136, 30, 9, 98, 213, 107, 33, 208, 47, 13, 8, 193, 49, }, { 31, 167, 12, 184, 26, 96, 133, 222, 229, 249, 100, 185, 151, 45, 115, 163, }, { 139, 35, 209, 168, 167, 71, 216, 102, 159, 177, 8, 203, 225, 143, 29, 108, }, { 225, 57, 135, 216, 18, 178, 136, 200, 58, 138, 207, 86, 96, 103, 212, 68, }, { 117, 189, 90, 200, 175, 149, 213, 112, 64, 194, 163, 36, 22, 197, 186, 139, }, { 10, 242, 254, 248, 171, 252, 50, 123, 206, 26, 23, 178, 140, 224, 8, 25, }, { 158, 118, 35, 232, 22, 219, 111, 195, 180, 82, 123, 192, 250, 66, 102, 214, }, { 138, 81, 28, 219, 131, 224, 11, 53, 235, 102, 85, 103, 33, 65, 118, 228, }, { 30, 213, 193, 203, 62, 199, 86, 141, 145, 46, 57, 21, 87, 227, 24, 43, }, { 97, 154, 101, 251, 58, 174, 177, 134, 31, 246, 141, 131, 205, 198, 170, 185, }, { 245, 30, 184, 235, 135, 137, 236, 62, 101, 190, 225, 241, 187, 100, 196, 118, }, { 159, 4, 238, 155, 50, 124, 188, 144, 192, 133, 38, 108, 58, 140, 13, 94, }, { 11, 128, 51, 139, 143, 91, 225, 40, 186, 205, 74, 30, 76, 46, 99, 145, }, { 116, 207, 151, 187, 139, 50, 6, 35, 52, 21, 254, 136, 214, 11, 209, 3, }, { 224, 75, 74, 171, 54, 21, 91, 155, 78, 93, 146, 250, 160, 169, 191, 204, }, { 160, 251, 59, 91, 34, 27, 166, 188, 189, 99, 179, 113, 23, 24, 128, 83, }, { 52, 127, 230, 75, 159, 60, 251, 4, 199, 43, 223, 3, 97, 186, 238, 156, }, { 75, 48, 66, 123, 155, 85, 28, 15, 73, 243, 107, 149, 251, 159, 92, 14, }, { 223, 180, 159, 107, 38, 114, 65, 183, 51, 187, 7, 231, 141, 61, 50, 193, }, { 181, 174, 201, 27, 147, 135, 17, 25, 150, 128, 192, 122, 12, 213, 251, 233, }, { 33, 42, 20, 11, 46, 160, 76, 161, 236, 200, 172, 8, 122, 119, 149, 38, }, { 94, 101, 176, 59, 42, 201, 171, 170, 98, 16, 24, 158, 224, 82, 39, 180, }, { 202, 225, 109, 43, 151, 238, 246, 18, 24, 88, 116, 236, 150, 240, 73, 123, }, }, }; libengine-gost-openssl1.1-1.1.0.1/gost_grasshopper_precompiled.h000066400000000000000000000010051315100554000245720ustar00rootroot00000000000000/* * Maxim Tishkov 2016 * This file is distributed under the same license as OpenSSL */ #ifndef GOST_GRASSHOPPER_PRECOMPILED_H #define GOST_GRASSHOPPER_PRECOMPILED_H #include "gost_grasshopper_defines.h" #include "gost_grasshopper_math.h" extern const grasshopper_w128_t grasshopper_pil_enc128[GRASSHOPPER_MAX_BIT_PARTS][256]; extern const grasshopper_w128_t grasshopper_l_dec128[GRASSHOPPER_MAX_BIT_PARTS][256]; extern const grasshopper_w128_t grasshopper_pil_dec128[GRASSHOPPER_MAX_BIT_PARTS][256]; #endif libengine-gost-openssl1.1-1.1.0.1/gost_keywrap.c000066400000000000000000000076311315100554000213420ustar00rootroot00000000000000/********************************************************************** * keywrap.c * * Copyright (c) 2005-2006 Cryptocom LTD * * This file is distributed under the same license as OpenSSL * * * * Implementation of CryptoPro key wrap algorithm, as defined in * * RFC 4357 p 6.3 and 6.4 * * Doesn't need OpenSSL * **********************************************************************/ #include #include "gost89.h" #include "gost_keywrap.h" /*- * Diversifies key using random UserKey Material * Implements RFC 4357 p 6.5 key diversification algorithm * * inputKey - 32byte key to be diversified * ukm - 8byte user key material * outputKey - 32byte buffer to store diversified key * */ void keyDiversifyCryptoPro(gost_ctx * ctx, const unsigned char *inputKey, const unsigned char *ukm, unsigned char *outputKey) { u4 k, s1, s2; int i, j, mask; unsigned char S[8]; memcpy(outputKey, inputKey, 32); for (i = 0; i < 8; i++) { /* Make array of integers from key */ /* Compute IV S */ s1 = 0, s2 = 0; for (j = 0, mask = 1; j < 8; j++, mask <<= 1) { k = ((u4) outputKey[4 * j]) | (outputKey[4 * j + 1] << 8) | (outputKey[4 * j + 2] << 16) | (outputKey[4 * j + 3] << 24); if (mask & ukm[i]) { s1 += k; } else { s2 += k; } } S[0] = (unsigned char)(s1 & 0xff); S[1] = (unsigned char)((s1 >> 8) & 0xff); S[2] = (unsigned char)((s1 >> 16) & 0xff); S[3] = (unsigned char)((s1 >> 24) & 0xff); S[4] = (unsigned char)(s2 & 0xff); S[5] = (unsigned char)((s2 >> 8) & 0xff); S[6] = (unsigned char)((s2 >> 16) & 0xff); S[7] = (unsigned char)((s2 >> 24) & 0xff); gost_key(ctx, outputKey); gost_enc_cfb(ctx, S, outputKey, outputKey, 4); } } /*- * Wraps key using RFC 4357 6.3 * ctx - gost encryption context, initialized with some S-boxes * keyExchangeKey (KEK) 32-byte (256-bit) shared key * ukm - 8 byte (64 bit) user key material, * sessionKey - 32-byte (256-bit) key to be wrapped * wrappedKey - 44-byte buffer to store wrapped key */ int keyWrapCryptoPro(gost_ctx * ctx, const unsigned char *keyExchangeKey, const unsigned char *ukm, const unsigned char *sessionKey, unsigned char *wrappedKey) { unsigned char kek_ukm[32]; keyDiversifyCryptoPro(ctx, keyExchangeKey, ukm, kek_ukm); gost_key(ctx, kek_ukm); memcpy(wrappedKey, ukm, 8); gost_enc(ctx, sessionKey, wrappedKey + 8, 4); gost_mac_iv(ctx, 32, ukm, sessionKey, 32, wrappedKey + 40); return 1; } /*- * Unwraps key using RFC 4357 6.4 * ctx - gost encryption context, initialized with some S-boxes * keyExchangeKey 32-byte shared key * wrappedKey 44 byte key to be unwrapped (concatenation of 8-byte UKM, * 32 byte encrypted key and 4 byte MAC * * sessionKEy - 32byte buffer to store sessionKey in * Returns 1 if key is decrypted successfully, and 0 if MAC doesn't match */ int keyUnwrapCryptoPro(gost_ctx * ctx, const unsigned char *keyExchangeKey, const unsigned char *wrappedKey, unsigned char *sessionKey) { unsigned char kek_ukm[32], cek_mac[4]; keyDiversifyCryptoPro(ctx, keyExchangeKey, wrappedKey /* First 8 bytes of wrapped Key is ukm */ , kek_ukm); gost_key(ctx, kek_ukm); gost_dec(ctx, wrappedKey + 8, sessionKey, 4); gost_mac_iv(ctx, 32, wrappedKey, sessionKey, 32, cek_mac); if (memcmp(cek_mac, wrappedKey + 40, 4)) { return 0; } return 1; } libengine-gost-openssl1.1-1.1.0.1/gost_keywrap.h000066400000000000000000000044561315100554000213510ustar00rootroot00000000000000/********************************************************************** * gost_keywrap.h * * Copyright (c) 2005-2006 Cryptocom LTD * * This file is distributed under the same license as OpenSSL * * * * Implementation of CryptoPro key wrap algorithm, as defined in * * RFC 4357 p 6.3 and 6.4 * * Doesn't need OpenSSL * **********************************************************************/ #ifndef GOST_KEYWRAP_H # define GOST_KEYWRAP_H # include # include "gost89.h" /*- * Diversifies key using random UserKey Material * Implements RFC 4357 p 6.5 key diversification algorithm * * inputKey - 32byte key to be diversified * ukm - 8byte user key material * outputKey - 32byte buffer to store diversified key * */ void keyDiversifyCryptoPro(gost_ctx * ctx, const unsigned char *inputKey, const unsigned char *ukm, unsigned char *outputKey); /*- * Wraps key using RFC 4357 6.3 * ctx - gost encryption context, initialized with some S-boxes * keyExchangeKey (KEK) 32-byte (256-bit) shared key * ukm - 8 byte (64 bit) user key material, * sessionKey - 32-byte (256-bit) key to be wrapped * wrappedKey - 44-byte buffer to store wrapped key */ int keyWrapCryptoPro(gost_ctx * ctx, const unsigned char *keyExchangeKey, const unsigned char *ukm, const unsigned char *sessionKey, unsigned char *wrappedKey); /*- * Unwraps key using RFC 4357 6.4 * ctx - gost encryption context, initialized with some S-boxes * keyExchangeKey 32-byte shared key * wrappedKey 44 byte key to be unwrapped (concatenation of 8-byte UKM, * 32 byte encrypted key and 4 byte MAC * * sessionKEy - 32byte buffer to store sessionKey in * Returns 1 if key is decrypted successfully, and 0 if MAC doesn't match */ int keyUnwrapCryptoPro(gost_ctx * ctx, const unsigned char *keyExchangeKey, const unsigned char *wrappedKey, unsigned char *sessionKey); #endif libengine-gost-openssl1.1-1.1.0.1/gost_lcl.h000066400000000000000000000211731315100554000204340ustar00rootroot00000000000000#ifndef GOST_TOOLS_H # define GOST_TOOLS_H /********************************************************************** * gost_lcl.h * * Copyright (c) 2006 Cryptocom LTD * * This file is distributed under the same license as OpenSSL * * * * Internal declarations used in GOST engine * * OpenSSL 0.9.9 libraries required to compile and use * * this code * **********************************************************************/ # include # include # include # include # include # include # include # include "gost89.h" # include "gosthash.h" /* Control commands */ # define GOST_PARAM_CRYPT_PARAMS 0 # define GOST_PARAM_PBE_PARAMS 1 # define GOST_PARAM_MAX 1 # define GOST_CTRL_CRYPT_PARAMS (ENGINE_CMD_BASE+GOST_PARAM_CRYPT_PARAMS) # define GOST_CTRL_PBE_PARAMS (ENGINE_CMD_BASE+GOST_PARAM_PBE_PARAMS) typedef struct R3410_ec { int nid; char *a; char *b; char *p; char *q; char *x; char *y; } R3410_ec_params; extern R3410_ec_params R3410_2001_paramset[], *R3410_2012_256_paramset, R3410_2012_512_paramset[]; extern const ENGINE_CMD_DEFN gost_cmds[]; int gost_control_func(ENGINE *e, int cmd, long i, void *p, void (*f) (void)); const char *get_gost_engine_param(int param); int gost_set_default_param(int param, const char *value); void gost_param_free(void); /* method registration */ int register_ameth_gost(int nid, EVP_PKEY_ASN1_METHOD **ameth, const char *pemstr, const char *info); int register_pmeth_gost(int id, EVP_PKEY_METHOD **pmeth, int flags); /* Gost-specific pmeth control-function parameters */ /* For GOST R34.10 parameters */ # define param_ctrl_string "paramset" # define EVP_PKEY_CTRL_GOST_PARAMSET (EVP_PKEY_ALG_CTRL+1) /* For GOST 28147 MAC */ # define key_ctrl_string "key" # define hexkey_ctrl_string "hexkey" # define maclen_ctrl_string "size" # define EVP_PKEY_CTRL_GOST_MAC_HEXKEY (EVP_PKEY_ALG_CTRL+3) # define EVP_PKEY_CTRL_MAC_LEN (EVP_PKEY_ALG_CTRL+5) /* Pmeth internal representation */ struct gost_pmeth_data { int sign_param_nid; /* Should be set whenever parameters are * filled */ EVP_MD *md; unsigned char *shared_ukm; int peer_key_used; }; struct gost_mac_pmeth_data { short int key_set; short int mac_size; int mac_param_nid; EVP_MD *md; unsigned char key[32]; }; struct gost_mac_key { int mac_param_nid; unsigned char key[32]; short int mac_size; }; /* GOST-specific ASN1 structures */ typedef struct { ASN1_OCTET_STRING *encrypted_key; ASN1_OCTET_STRING *imit; } GOST_KEY_INFO; DECLARE_ASN1_FUNCTIONS(GOST_KEY_INFO) typedef struct { ASN1_OBJECT *cipher; X509_PUBKEY *ephem_key; ASN1_OCTET_STRING *eph_iv; } GOST_KEY_AGREEMENT_INFO; DECLARE_ASN1_FUNCTIONS(GOST_KEY_AGREEMENT_INFO) typedef struct { GOST_KEY_INFO *key_info; GOST_KEY_AGREEMENT_INFO *key_agreement_info; } GOST_KEY_TRANSPORT; DECLARE_ASN1_FUNCTIONS(GOST_KEY_TRANSPORT) typedef struct { /* FIXME incomplete */ GOST_KEY_TRANSPORT *gkt; } GOST_CLIENT_KEY_EXCHANGE_PARAMS; /* * Hacks to shorten symbols to 31 characters or less, or OpenVMS. This mimics * what's done in symhacks.h, but since this is a very local header file, I * prefered to put this hack directly here. -- Richard Levitte */ # ifdef OPENSSL_SYS_VMS # undef GOST_CLIENT_KEY_EXCHANGE_PARAMS_it # define GOST_CLIENT_KEY_EXCHANGE_PARAMS_it GOST_CLIENT_KEY_EXC_PARAMS_it # undef GOST_CLIENT_KEY_EXCHANGE_PARAMS_new # define GOST_CLIENT_KEY_EXCHANGE_PARAMS_new GOST_CLIENT_KEY_EXC_PARAMS_new # undef GOST_CLIENT_KEY_EXCHANGE_PARAMS_free # define GOST_CLIENT_KEY_EXCHANGE_PARAMS_free GOST_CLIENT_KEY_EXC_PARAMS_free # undef d2i_GOST_CLIENT_KEY_EXCHANGE_PARAMS # define d2i_GOST_CLIENT_KEY_EXCHANGE_PARAMS d2i_GOST_CLIENT_KEY_EXC_PARAMS # undef i2d_GOST_CLIENT_KEY_EXCHANGE_PARAMS # define i2d_GOST_CLIENT_KEY_EXCHANGE_PARAMS i2d_GOST_CLIENT_KEY_EXC_PARAMS # endif /* End of hack */ DECLARE_ASN1_FUNCTIONS(GOST_CLIENT_KEY_EXCHANGE_PARAMS) typedef struct { ASN1_OBJECT *key_params; ASN1_OBJECT *hash_params; ASN1_OBJECT *cipher_params; } GOST_KEY_PARAMS; DECLARE_ASN1_FUNCTIONS(GOST_KEY_PARAMS) typedef struct { ASN1_OCTET_STRING *iv; ASN1_OBJECT *enc_param_set; } GOST_CIPHER_PARAMS; DECLARE_ASN1_FUNCTIONS(GOST_CIPHER_PARAMS) typedef struct { ASN1_OCTET_STRING *masked_priv_key; ASN1_OCTET_STRING *public_key; } MASKED_GOST_KEY; DECLARE_ASN1_FUNCTIONS(MASKED_GOST_KEY) /*============== Message digest and cipher related structures ==========*/ /* * Structure used as EVP_MD_CTX-md_data. It allows to avoid storing * in the md-data pointers to dynamically allocated memory. I * cannot invent better way to avoid memory leaks, because openssl * insist on invoking Init on Final-ed digests, and there is no * reliable way to find out whether pointer in the passed md_data is * valid or not. */ struct ossl_gost_digest_ctx { gost_hash_ctx dctx; gost_ctx cctx; }; /* EVP_MD structure for GOST R 34.11 */ EVP_MD *digest_gost(void); void digest_gost_destroy(void); /* EVP MD structure for GOST R 34.11-2012 algorithms */ EVP_MD *digest_gost2012_256(void); EVP_MD *digest_gost2012_512(void); void digest_gost2012_256_destroy(void); void digest_gost2012_512_destroy(void); /* EVP_MD structure for GOST 28147 in MAC mode */ EVP_MD *imit_gost_cpa(void); void imit_gost_cpa_destroy(void); EVP_MD *imit_gost_cp_12(void); void imit_gost_cp_12_destroy(void); /* Cipher context used for EVP_CIPHER operation */ struct ossl_gost_cipher_ctx { int paramNID; unsigned int count; int key_meshing; gost_ctx cctx; }; /* Structure to map parameter NID to S-block */ struct gost_cipher_info { int nid; gost_subst_block *sblock; int key_meshing; }; /* Context for MAC */ struct ossl_gost_imit_ctx { gost_ctx cctx; unsigned char buffer[8]; unsigned char partial_block[8]; unsigned int count; int key_meshing; int bytes_left; int key_set; int dgst_size; }; /* Table which maps parameter NID to S-blocks */ extern struct gost_cipher_info gost_cipher_list[]; /* Find encryption params from ASN1_OBJECT */ const struct gost_cipher_info *get_encryption_params(ASN1_OBJECT *obj); /* Implementation of GOST 28147-89 cipher in CFB and CNT modes */ const EVP_CIPHER *cipher_gost(); const EVP_CIPHER *cipher_gost_cbc(); const EVP_CIPHER *cipher_gost_cpacnt(); const EVP_CIPHER *cipher_gost_cpcnt_12(); void cipher_gost_destroy(); # define EVP_MD_CTRL_KEY_LEN (EVP_MD_CTRL_ALG_CTRL+3) # define EVP_MD_CTRL_SET_KEY (EVP_MD_CTRL_ALG_CTRL+4) # define EVP_MD_CTRL_MAC_LEN (EVP_MD_CTRL_ALG_CTRL+5) /* EVP_PKEY_METHOD key encryption callbacks */ /* From gost_ec_keyx.c */ int pkey_GOST_ECcp_encrypt(EVP_PKEY_CTX *ctx, unsigned char *out, size_t *outlen, const unsigned char *key, size_t key_len); int pkey_GOST_ECcp_decrypt(EVP_PKEY_CTX *ctx, unsigned char *out, size_t *outlen, const unsigned char *in, size_t in_len); /* derive functions */ /* From gost_ec_keyx.c */ int pkey_gost_ec_derive(EVP_PKEY_CTX *ctx, unsigned char *key, size_t *keylen); int fill_GOST_EC_params(EC_KEY *eckey, int nid); int gost_sign_keygen(DSA *dsa); int gost_ec_keygen(EC_KEY *ec); DSA_SIG *gost_ec_sign(const unsigned char *dgst, int dlen, EC_KEY *eckey); int gost_do_verify(const unsigned char *dgst, int dgst_len, DSA_SIG *sig, DSA *dsa); int gost_ec_verify(const unsigned char *dgst, int dgst_len, DSA_SIG *sig, EC_KEY *ec); int gost_ec_compute_public(EC_KEY *ec); /*============== miscellaneous functions============================= */ /* from gost_sign.c */ /* Convert GOST R 34.11 hash sum to bignum according to standard */ BIGNUM *hashsum2bn(const unsigned char *dgst, int len); /* * Store bignum in byte array of given length, prepending by zeros if * nesseccary */ int store_bignum(const BIGNUM *bn, unsigned char *buf, int len); /* Pack GOST R 34.10 signature according to CryptoPro rules */ int pack_sign_cp(DSA_SIG *s, int order, unsigned char *sig, size_t *siglen); /* from ameth.c */ /* Get private key as BIGNUM from both 34.10-2001 keys*/ /* Returns pointer into EVP_PKEY structure */ BIGNUM *gost_get0_priv_key(const EVP_PKEY *pkey); #endif libengine-gost-openssl1.1-1.1.0.1/gost_md.c000066400000000000000000000063221315100554000202540ustar00rootroot00000000000000/********************************************************************** * md_gost.c * * Copyright (c) 2005-2006 Cryptocom LTD * * This file is distributed under the same license as OpenSSL * * * * OpenSSL interface to GOST R 34.11-94 hash functions * * Requires OpenSSL 0.9.9 for compilation * **********************************************************************/ #include #include "gost_lcl.h" #include "gosthash.h" #include "e_gost_err.h" /* implementation of GOST 34.11 hash function See gost_md.c*/ static int gost_digest_init(EVP_MD_CTX *ctx); static int gost_digest_update(EVP_MD_CTX *ctx, const void *data, size_t count); static int gost_digest_final(EVP_MD_CTX *ctx, unsigned char *md); static int gost_digest_copy(EVP_MD_CTX *to, const EVP_MD_CTX *from); static int gost_digest_cleanup(EVP_MD_CTX *ctx); static EVP_MD *_hidden_GostR3411_94_md = NULL; EVP_MD *digest_gost(void) { if (_hidden_GostR3411_94_md == NULL) { EVP_MD *md; if ((md = EVP_MD_meth_new(NID_id_GostR3411_94, NID_undef)) == NULL || !EVP_MD_meth_set_result_size(md, 32) || !EVP_MD_meth_set_input_blocksize(md, 32) || !EVP_MD_meth_set_app_datasize(md, sizeof(struct ossl_gost_digest_ctx)) || !EVP_MD_meth_set_init(md, gost_digest_init) || !EVP_MD_meth_set_update(md, gost_digest_update) || !EVP_MD_meth_set_final(md, gost_digest_final) || !EVP_MD_meth_set_copy(md, gost_digest_copy) || !EVP_MD_meth_set_cleanup(md, gost_digest_cleanup)) { EVP_MD_meth_free(md); md = NULL; } _hidden_GostR3411_94_md = md; } return _hidden_GostR3411_94_md; } void digest_gost_destroy(void) { EVP_MD_meth_free(_hidden_GostR3411_94_md); _hidden_GostR3411_94_md = NULL; } int gost_digest_init(EVP_MD_CTX *ctx) { struct ossl_gost_digest_ctx *c = EVP_MD_CTX_md_data(ctx); memset(&(c->dctx), 0, sizeof(gost_hash_ctx)); gost_init(&(c->cctx), &GostR3411_94_CryptoProParamSet); c->dctx.cipher_ctx = &(c->cctx); return 1; } int gost_digest_update(EVP_MD_CTX *ctx, const void *data, size_t count) { return hash_block((gost_hash_ctx *) EVP_MD_CTX_md_data(ctx), data, count); } int gost_digest_final(EVP_MD_CTX *ctx, unsigned char *md) { return finish_hash((gost_hash_ctx *) EVP_MD_CTX_md_data(ctx), md); } int gost_digest_copy(EVP_MD_CTX *to, const EVP_MD_CTX *from) { struct ossl_gost_digest_ctx *md_ctx = EVP_MD_CTX_md_data(to); if (EVP_MD_CTX_md_data(to) && EVP_MD_CTX_md_data(from)) { memcpy(EVP_MD_CTX_md_data(to), EVP_MD_CTX_md_data(from), sizeof(struct ossl_gost_digest_ctx)); md_ctx->dctx.cipher_ctx = &(md_ctx->cctx); } return 1; } int gost_digest_cleanup(EVP_MD_CTX *ctx) { if (EVP_MD_CTX_md_data(ctx)) memset(EVP_MD_CTX_md_data(ctx), 0, sizeof(struct ossl_gost_digest_ctx)); return 1; } libengine-gost-openssl1.1-1.1.0.1/gost_md2012.c000066400000000000000000000131251315100554000205600ustar00rootroot00000000000000/********************************************************************** * gost_md2012.c * * Copyright (c) 2013 Cryptocom LTD. * * This file is distributed under the same license as OpenSSL * * * * GOST R 34.11-2012 interface to OpenSSL engine. * * * * Author: Alexey Degtyarev * * * **********************************************************************/ #include #include "gosthash2012.h" static int gost_digest_init512(EVP_MD_CTX *ctx); static int gost_digest_init256(EVP_MD_CTX *ctx); static int gost_digest_update(EVP_MD_CTX *ctx, const void *data, size_t count); static int gost_digest_final(EVP_MD_CTX *ctx, unsigned char *md); static int gost_digest_copy(EVP_MD_CTX *to, const EVP_MD_CTX *from); static int gost_digest_cleanup(EVP_MD_CTX *ctx); static int gost_digest_ctrl_256(EVP_MD_CTX *ctx, int type, int arg, void *ptr); static int gost_digest_ctrl_512(EVP_MD_CTX *ctx, int type, int arg, void *ptr); const char micalg_256[] = "gostr3411-2012-256"; const char micalg_512[] = "gostr3411-2012-512"; static EVP_MD *_hidden_GostR3411_2012_256_md = NULL; static EVP_MD *_hidden_GostR3411_2012_512_md = NULL; EVP_MD *digest_gost2012_256(void) { if (_hidden_GostR3411_2012_256_md == NULL) { EVP_MD *md; if ((md = EVP_MD_meth_new(NID_id_GostR3411_2012_256, NID_undef)) == NULL || !EVP_MD_meth_set_result_size(md, 32) || !EVP_MD_meth_set_input_blocksize(md, 64) || !EVP_MD_meth_set_app_datasize(md, sizeof(gost2012_hash_ctx)) || !EVP_MD_meth_set_init(md, gost_digest_init256) || !EVP_MD_meth_set_update(md, gost_digest_update) || !EVP_MD_meth_set_final(md, gost_digest_final) || !EVP_MD_meth_set_copy(md, gost_digest_copy) || !EVP_MD_meth_set_ctrl(md, gost_digest_ctrl_256) || !EVP_MD_meth_set_cleanup(md, gost_digest_cleanup)) { EVP_MD_meth_free(md); md = NULL; } _hidden_GostR3411_2012_256_md = md; } return _hidden_GostR3411_2012_256_md; } void digest_gost2012_256_destroy(void) { EVP_MD_meth_free(_hidden_GostR3411_2012_256_md); _hidden_GostR3411_2012_256_md = NULL; } EVP_MD *digest_gost2012_512(void) { if (_hidden_GostR3411_2012_512_md == NULL) { EVP_MD *md; if ((md = EVP_MD_meth_new(NID_id_GostR3411_2012_512, NID_undef)) == NULL || !EVP_MD_meth_set_result_size(md, 64) || !EVP_MD_meth_set_input_blocksize(md, 64) || !EVP_MD_meth_set_app_datasize(md, sizeof(gost2012_hash_ctx)) || !EVP_MD_meth_set_init(md, gost_digest_init512) || !EVP_MD_meth_set_update(md, gost_digest_update) || !EVP_MD_meth_set_final(md, gost_digest_final) || !EVP_MD_meth_set_copy(md, gost_digest_copy) || !EVP_MD_meth_set_ctrl(md, gost_digest_ctrl_512) || !EVP_MD_meth_set_cleanup(md, gost_digest_cleanup)) { EVP_MD_meth_free(md); md = NULL; } _hidden_GostR3411_2012_512_md = md; } return _hidden_GostR3411_2012_512_md; } void digest_gost2012_512_destroy(void) { EVP_MD_meth_free(_hidden_GostR3411_2012_512_md); _hidden_GostR3411_2012_512_md = NULL; } static int gost_digest_init512(EVP_MD_CTX *ctx) { init_gost2012_hash_ctx((gost2012_hash_ctx *) EVP_MD_CTX_md_data(ctx), 512); return 1; } static int gost_digest_init256(EVP_MD_CTX *ctx) { init_gost2012_hash_ctx((gost2012_hash_ctx *) EVP_MD_CTX_md_data(ctx), 256); return 1; } static int gost_digest_update(EVP_MD_CTX *ctx, const void *data, size_t count) { gost2012_hash_block((gost2012_hash_ctx *) EVP_MD_CTX_md_data(ctx), data, count); return 1; } static int gost_digest_final(EVP_MD_CTX *ctx, unsigned char *md) { gost2012_finish_hash((gost2012_hash_ctx *) EVP_MD_CTX_md_data(ctx), md); return 1; } static int gost_digest_copy(EVP_MD_CTX *to, const EVP_MD_CTX *from) { if (EVP_MD_CTX_md_data(to) && EVP_MD_CTX_md_data(from)) memcpy(EVP_MD_CTX_md_data(to), EVP_MD_CTX_md_data(from), sizeof(gost2012_hash_ctx)); return 1; } static int gost_digest_cleanup(EVP_MD_CTX *ctx) { if (EVP_MD_CTX_md_data(ctx)) memset(EVP_MD_CTX_md_data(ctx), 0x00, sizeof(gost2012_hash_ctx)); return 1; } static int gost_digest_ctrl_256(EVP_MD_CTX *ctx, int type, int arg, void *ptr) { switch (type) { case EVP_MD_CTRL_MICALG: { *((char **)ptr) = OPENSSL_malloc(strlen(micalg_256) + 1); if (*((char **)ptr) != NULL) { strcpy(*((char **)ptr), micalg_256); return 1; } return 0; } default: return 0; } } static int gost_digest_ctrl_512(EVP_MD_CTX *ctx, int type, int arg, void *ptr) { switch (type) { case EVP_MD_CTRL_MICALG: { *((char **)ptr) = OPENSSL_malloc(strlen(micalg_512) + 1); if (*((char **)ptr) != NULL) { strcpy(*((char **)ptr), micalg_512); return 1; } return 0; } return 1; default: return 0; } } libengine-gost-openssl1.1-1.1.0.1/gost_params.c000066400000000000000000000122121315100554000211320ustar00rootroot00000000000000/********************************************************************** * params.c * * Copyright (c) 2005-2013 Cryptocom LTD * * This file is distributed under the same license as OpenSSL * * * * Definitions of GOST R 34.10 parameter sets, defined in RFC 4357 * * OpenSSL 1.0.0+ libraries required to compile and use * * this code * **********************************************************************/ #include "gost_lcl.h" #include /* Parameters of GOST 34.10 */ R3410_ec_params R3410_2001_paramset[] = { /* 1.2.643.2.2.35.0 */ {NID_id_GostR3410_2001_TestParamSet, "7", "5FBFF498AA938CE739B8E022FBAFEF40563F6E6A3472FC2A514C0CE9DAE23B7E", "8000000000000000000000000000000000000000000000000000000000000431", "8000000000000000000000000000000150FE8A1892976154C59CFC193ACCF5B3", "2", "08E2A8A0E65147D4BD6316030E16D19C85C97F0A9CA267122B96ABBCEA7E8FC8"} , /* * 1.2.643.2.2.35.1 */ {NID_id_GostR3410_2001_CryptoPro_A_ParamSet, "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD94", "a6", "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD97", "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6C611070995AD10045841B09B761B893", "1", "8D91E471E0989CDA27DF505A453F2B7635294F2DDF23E3B122ACC99C9E9F1E14"} , /* * 1.2.643.2.2.35.2 */ {NID_id_GostR3410_2001_CryptoPro_B_ParamSet, "8000000000000000000000000000000000000000000000000000000000000C96", "3E1AF419A269A5F866A7D3C25C3DF80AE979259373FF2B182F49D4CE7E1BBC8B", "8000000000000000000000000000000000000000000000000000000000000C99", "800000000000000000000000000000015F700CFFF1A624E5E497161BCC8A198F", "1", "3FA8124359F96680B83D1C3EB2C070E5C545C9858D03ECFB744BF8D717717EFC"} , /* * 1.2.643.2.2.35.3 */ {NID_id_GostR3410_2001_CryptoPro_C_ParamSet, "9B9F605F5A858107AB1EC85E6B41C8AACF846E86789051D37998F7B9022D7598", "805a", "9B9F605F5A858107AB1EC85E6B41C8AACF846E86789051D37998F7B9022D759B", "9B9F605F5A858107AB1EC85E6B41C8AA582CA3511EDDFB74F02F3A6598980BB9", "0", "41ECE55743711A8C3CBF3783CD08C0EE4D4DC440D4641A8F366E550DFDB3BB67"} , /* * 1.2.643.2.2.36.0 */ {NID_id_GostR3410_2001_CryptoPro_XchA_ParamSet, "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD94", "a6", "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD97", "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6C611070995AD10045841B09B761B893", "1", "8D91E471E0989CDA27DF505A453F2B7635294F2DDF23E3B122ACC99C9E9F1E14"} , /* * 1.2.643.2.2.36.1 */ {NID_id_GostR3410_2001_CryptoPro_XchB_ParamSet, "9B9F605F5A858107AB1EC85E6B41C8AACF846E86789051D37998F7B9022D7598", "805a", "9B9F605F5A858107AB1EC85E6B41C8AACF846E86789051D37998F7B9022D759B", "9B9F605F5A858107AB1EC85E6B41C8AA582CA3511EDDFB74F02F3A6598980BB9", "0", "41ECE55743711A8C3CBF3783CD08C0EE4D4DC440D4641A8F366E550DFDB3BB67"} , {NID_undef, NULL, NULL, NULL, NULL, NULL, NULL} }; /* Parameters of GOST 34.10-2012 */ R3410_ec_params *R3410_2012_256_paramset = R3410_2001_paramset; R3410_ec_params R3410_2012_512_paramset[] = { {NID_id_tc26_gost_3410_2012_512_paramSetA, /* a */ "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDC4", /* b */ "E8C2505DEDFC86DDC1BD0B2B6667F1DA34B82574761CB0E879BD081CFD0B6265" "EE3CB090F30D27614CB4574010DA90DD862EF9D4EBEE4761503190785A71C760", /* p */ "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDC7", /* q */ "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" "27E69532F48D89116FF22B8D4E0560609B4B38ABFAD2B85DCACDB1411F10B275", /* x */ "3", /* y */ "7503CFE87A836AE3A61B8816E25450E6CE5E1C93ACF1ABC1778064FDCBEFA921DF16" "26BE4FD036E93D75E6A50E3A41E98028FE5FC235F5B889A589CB5215F2A4"} , {NID_id_tc26_gost_3410_2012_512_paramSetB, /* a */ "8000000000000000000000000000000000000000000000000000000000000000" "000000000000000000000000000000000000000000000000000000000000006C", /* b */ "687D1B459DC841457E3E06CF6F5E2517B97C7D614AF138BCBF85DC806C4B289F" "3E965D2DB1416D217F8B276FAD1AB69C50F78BEE1FA3106EFB8CCBC7C5140116", /* p */ "8000000000000000000000000000000000000000000000000000000000000000" "000000000000000000000000000000000000000000000000000000000000006F", /* q */ "8000000000000000000000000000000000000000000000000000000000000001" "49A1EC142565A545ACFDB77BD9D40CFA8B996712101BEA0EC6346C54374F25BD", /* x */ "2", /* y */ "1A8F7EDA389B094C2C071E3647A8940F3C123B697578C213BE6DD9E6C8EC7335" "DCB228FD1EDF4A39152CBCAAF8C0398828041055F94CEEEC7E21340780FE41BD"} , {NID_undef, NULL, NULL, NULL, NULL, NULL, NULL} }; libengine-gost-openssl1.1-1.1.0.1/gost_pmeth.c000066400000000000000000000621351315100554000207750ustar00rootroot00000000000000/********************************************************************** * gost_pmeth.c * * Copyright (c) 2005-2013 Cryptocom LTD * * This file is distributed under the same license as OpenSSL * * * * Implementation of RFC 4357 (GOST R 34.10) Publick key method * * for OpenSSL * * Requires OpenSSL 1.0.0+ for compilation * **********************************************************************/ #include #include #include #include #include /* For string_to_hex */ #include #include #include #include "gost_lcl.h" #include "e_gost_err.h" /* -----init, cleanup, copy - uniform for all algs --------------*/ /* Allocates new gost_pmeth_data structure and assigns it as data */ static int pkey_gost_init(EVP_PKEY_CTX *ctx) { struct gost_pmeth_data *data; EVP_PKEY *pkey = EVP_PKEY_CTX_get0_pkey(ctx); data = OPENSSL_malloc(sizeof(*data)); if (!data) return 0; memset(data, 0, sizeof(*data)); if (pkey && EVP_PKEY_get0(pkey)) { switch (EVP_PKEY_base_id(pkey)) { case NID_id_GostR3410_2001: case NID_id_GostR3410_2012_256: case NID_id_GostR3410_2012_512: { const EC_GROUP *group = EC_KEY_get0_group(EVP_PKEY_get0((EVP_PKEY *)pkey)); if (group != NULL) { data->sign_param_nid = EC_GROUP_get_curve_name(group); break; } /* else */ } default: OPENSSL_free(data); return 0; } } EVP_PKEY_CTX_set_data(ctx, data); return 1; } /* Copies contents of gost_pmeth_data structure */ static int pkey_gost_copy(EVP_PKEY_CTX *dst, EVP_PKEY_CTX *src) { struct gost_pmeth_data *dst_data, *src_data; if (!pkey_gost_init(dst)) { return 0; } src_data = EVP_PKEY_CTX_get_data(src); dst_data = EVP_PKEY_CTX_get_data(dst); if (!src_data || !dst_data) return 0; *dst_data = *src_data; if (src_data->shared_ukm) { dst_data->shared_ukm = NULL; } return 1; } /* Frees up gost_pmeth_data structure */ static void pkey_gost_cleanup(EVP_PKEY_CTX *ctx) { struct gost_pmeth_data *data = EVP_PKEY_CTX_get_data(ctx); if (!data) return; OPENSSL_free(data->shared_ukm); OPENSSL_free(data); } /* --------------------- control functions ------------------------------*/ static int pkey_gost_ctrl(EVP_PKEY_CTX *ctx, int type, int p1, void *p2) { struct gost_pmeth_data *pctx = (struct gost_pmeth_data *)EVP_PKEY_CTX_get_data(ctx); if (pctx == NULL) return 0; switch (type) { case EVP_PKEY_CTRL_MD: { EVP_PKEY *key = EVP_PKEY_CTX_get0_pkey(ctx); int pkey_nid = (key == NULL) ? NID_undef : EVP_PKEY_base_id(key); OPENSSL_assert(p2 != NULL); switch (EVP_MD_type((const EVP_MD *)p2)) { case NID_id_GostR3411_94: if (pkey_nid == NID_id_GostR3410_2001 || pkey_nid == NID_id_GostR3410_94) { pctx->md = (EVP_MD *)p2; return 1; } break; case NID_id_GostR3411_2012_256: if (pkey_nid == NID_id_GostR3410_2012_256) { pctx->md = (EVP_MD *)p2; return 1; } break; case NID_id_GostR3411_2012_512: if (pkey_nid == NID_id_GostR3410_2012_512) { pctx->md = (EVP_MD *)p2; return 1; } break; } GOSTerr(GOST_F_PKEY_GOST_CTRL, GOST_R_INVALID_DIGEST_TYPE); return 0; } case EVP_PKEY_CTRL_GET_MD: *(const EVP_MD **)p2 = pctx->md; return 1; case EVP_PKEY_CTRL_PKCS7_ENCRYPT: case EVP_PKEY_CTRL_PKCS7_DECRYPT: case EVP_PKEY_CTRL_PKCS7_SIGN: case EVP_PKEY_CTRL_DIGESTINIT: #ifndef OPENSSL_NO_CMS case EVP_PKEY_CTRL_CMS_ENCRYPT: case EVP_PKEY_CTRL_CMS_DECRYPT: case EVP_PKEY_CTRL_CMS_SIGN: #endif return 1; case EVP_PKEY_CTRL_GOST_PARAMSET: pctx->sign_param_nid = (int)p1; return 1; case EVP_PKEY_CTRL_SET_IV: OPENSSL_assert(p2 != NULL); pctx->shared_ukm = OPENSSL_malloc((int)p1); if (pctx->shared_ukm == NULL) { GOSTerr(GOST_F_PKEY_GOST_CTRL, ERR_R_MALLOC_FAILURE); return 0; } memcpy(pctx->shared_ukm, p2, (int)p1); return 1; case EVP_PKEY_CTRL_PEER_KEY: if (p1 == 0 || p1 == 1) /* call from EVP_PKEY_derive_set_peer */ return 1; if (p1 == 2) /* TLS: peer key used? */ return pctx->peer_key_used; if (p1 == 3) /* TLS: peer key used! */ return (pctx->peer_key_used = 1); break; } GOSTerr(GOST_F_PKEY_GOST_CTRL, GOST_R_CTRL_CALL_FAILED); return -2; } static int pkey_gost_ec_ctrl_str_256(EVP_PKEY_CTX *ctx, const char *type, const char *value) { int param_nid = 0; if (strcmp(type, param_ctrl_string) == 0) { if (!value) { return 0; } if (strlen(value) == 1) { switch (toupper((unsigned char)value[0])) { case 'A': param_nid = NID_id_GostR3410_2001_CryptoPro_A_ParamSet; break; case 'B': param_nid = NID_id_GostR3410_2001_CryptoPro_B_ParamSet; break; case 'C': param_nid = NID_id_GostR3410_2001_CryptoPro_C_ParamSet; break; case '0': param_nid = NID_id_GostR3410_2001_TestParamSet; break; default: return 0; } } else if ((strlen(value) == 2) && (toupper((unsigned char)value[0]) == 'X')) { switch (toupper((unsigned char)value[1])) { case 'A': param_nid = NID_id_GostR3410_2001_CryptoPro_XchA_ParamSet; break; case 'B': param_nid = NID_id_GostR3410_2001_CryptoPro_XchB_ParamSet; break; default: return 0; } } else { R3410_ec_params *p = R3410_2001_paramset; param_nid = OBJ_txt2nid(value); if (param_nid == NID_undef) { return 0; } for (; p->nid != NID_undef; p++) { if (p->nid == param_nid) break; } if (p->nid == NID_undef) { GOSTerr(GOST_F_PKEY_GOST_EC_CTRL_STR_256, GOST_R_INVALID_PARAMSET); return 0; } } return pkey_gost_ctrl(ctx, EVP_PKEY_CTRL_GOST_PARAMSET, param_nid, NULL); } return -2; } static int pkey_gost_ec_ctrl_str_512(EVP_PKEY_CTX *ctx, const char *type, const char *value) { int param_nid = NID_undef; if (strcmp(type, param_ctrl_string)) return -2; if (!value) return 0; if (strlen(value) == 1) { switch (toupper((unsigned char)value[0])) { case 'A': param_nid = NID_id_tc26_gost_3410_2012_512_paramSetA; break; case 'B': param_nid = NID_id_tc26_gost_3410_2012_512_paramSetB; break; default: return 0; } } else { R3410_ec_params *p = R3410_2012_512_paramset; param_nid = OBJ_txt2nid(value); if (param_nid == NID_undef) return 0; while (p->nid != NID_undef && p->nid != param_nid) p++; if (p->nid == NID_undef) { GOSTerr(GOST_F_PKEY_GOST_EC_CTRL_STR_512, GOST_R_INVALID_PARAMSET); return 0; } } return pkey_gost_ctrl(ctx, EVP_PKEY_CTRL_GOST_PARAMSET, param_nid, NULL); } /* --------------------- key generation --------------------------------*/ static int pkey_gost_paramgen_init(EVP_PKEY_CTX *ctx) { return 1; } static int pkey_gost2001_paramgen(EVP_PKEY_CTX *ctx, EVP_PKEY *pkey) { struct gost_pmeth_data *data = EVP_PKEY_CTX_get_data(ctx); EC_KEY *ec = NULL; if (!data || data->sign_param_nid == NID_undef) { GOSTerr(GOST_F_PKEY_GOST01_PARAMGEN, GOST_R_NO_PARAMETERS_SET); return 0; } ec = EC_KEY_new(); if (!fill_GOST_EC_params(ec, data->sign_param_nid) || !EVP_PKEY_assign(pkey, NID_id_GostR3410_2001, ec)) { EC_KEY_free(ec); return 0; } return 1; } static int pkey_gost2012_paramgen(EVP_PKEY_CTX *ctx, EVP_PKEY *pkey) { struct gost_pmeth_data *data = EVP_PKEY_CTX_get_data(ctx); EC_KEY *ec; int result = 0; if (!data || data->sign_param_nid == NID_undef) { GOSTerr(GOST_F_PKEY_GOST12_PARAMGEN, GOST_R_NO_PARAMETERS_SET); return 0; } ec = EC_KEY_new(); if (!fill_GOST_EC_params(ec, data->sign_param_nid)) { EC_KEY_free(ec); return 0; } switch (data->sign_param_nid) { case NID_id_tc26_gost_3410_2012_512_paramSetA: case NID_id_tc26_gost_3410_2012_512_paramSetB: result = (EVP_PKEY_assign(pkey, NID_id_GostR3410_2012_512, ec)) ? 1 : 0; break; case NID_id_GostR3410_2001_CryptoPro_A_ParamSet: case NID_id_GostR3410_2001_CryptoPro_B_ParamSet: case NID_id_GostR3410_2001_CryptoPro_C_ParamSet: case NID_id_GostR3410_2001_CryptoPro_XchA_ParamSet: case NID_id_GostR3410_2001_CryptoPro_XchB_ParamSet: case NID_id_GostR3410_2001_TestParamSet: result = (EVP_PKEY_assign(pkey, NID_id_GostR3410_2012_256, ec)) ? 1 : 0; break; default: result = 0; break; } if (result == 0) EC_KEY_free(ec); return result; } /* ----------- keygen callbacks --------------------------------------*/ /* Generates GOST_R3410 2001 key and assigns it using specified type */ static int pkey_gost2001cp_keygen(EVP_PKEY_CTX *ctx, EVP_PKEY *pkey) { EC_KEY *ec; if (!pkey_gost2001_paramgen(ctx, pkey)) return 0; ec = EVP_PKEY_get0(pkey); gost_ec_keygen(ec); return 1; } /* Generates GOST_R3410 2012 key and assigns it using specified type */ static int pkey_gost2012cp_keygen(EVP_PKEY_CTX *ctx, EVP_PKEY *pkey) { if (!pkey_gost2012_paramgen(ctx, pkey)) return 0; gost_ec_keygen(EVP_PKEY_get0(pkey)); return 1; } /* ----------- sign callbacks --------------------------------------*/ /* * Packs signature according to Cryptopro rules * and frees up DSA_SIG structure */ int pack_sign_cp(DSA_SIG *s, int order, unsigned char *sig, size_t *siglen) { const BIGNUM *sig_r = NULL, *sig_s = NULL; DSA_SIG_get0(s, &sig_r, &sig_s); *siglen = 2 * order; memset(sig, 0, *siglen); store_bignum(sig_s, sig, order); store_bignum(sig_r, sig + order, order); DSA_SIG_free(s); return 1; } static int pkey_gost_ec_cp_sign(EVP_PKEY_CTX *ctx, unsigned char *sig, size_t *siglen, const unsigned char *tbs, size_t tbs_len) { DSA_SIG *unpacked_sig = NULL; EVP_PKEY *pkey = EVP_PKEY_CTX_get0_pkey(ctx); int order = 0; if (!siglen) return 0; if (!pkey) return 0; switch (EVP_PKEY_base_id(pkey)) { case NID_id_GostR3410_2001: case NID_id_GostR3410_2012_256: order = 64; break; case NID_id_GostR3410_2012_512: order = 128; break; default: return 0; } if (!sig) { *siglen = order; return 1; } unpacked_sig = gost_ec_sign(tbs, tbs_len, EVP_PKEY_get0(pkey)); if (!unpacked_sig) { return 0; } return pack_sign_cp(unpacked_sig, order / 2, sig, siglen); } /* ------------------- verify callbacks ---------------------------*/ /* Unpack signature according to cryptopro rules */ DSA_SIG *unpack_cp_signature(const unsigned char *sigbuf, size_t siglen) { DSA_SIG *sig; BIGNUM *r = NULL, *s = NULL; sig = DSA_SIG_new(); if (sig == NULL) { GOSTerr(GOST_F_UNPACK_CP_SIGNATURE, ERR_R_MALLOC_FAILURE); return NULL; } s = BN_bin2bn(sigbuf, siglen / 2, NULL); r = BN_bin2bn(sigbuf + siglen / 2, siglen / 2, NULL); DSA_SIG_set0(sig, r, s); return sig; } static int pkey_gost_ec_cp_verify(EVP_PKEY_CTX *ctx, const unsigned char *sig, size_t siglen, const unsigned char *tbs, size_t tbs_len) { int ok = 0; EVP_PKEY *pub_key = EVP_PKEY_CTX_get0_pkey(ctx); DSA_SIG *s = (sig) ? unpack_cp_signature(sig, siglen) : NULL; if (!s) return 0; #ifdef DEBUG_SIGN fprintf(stderr, "R="); BN_print_fp(stderr, s->r); fprintf(stderr, "\nS="); BN_print_fp(stderr, s->s); fprintf(stderr, "\n"); #endif if (pub_key) ok = gost_ec_verify(tbs, tbs_len, s, EVP_PKEY_get0(pub_key)); DSA_SIG_free(s); return ok; } /* ------------- encrypt init -------------------------------------*/ /* Generates ephermeral key */ static int pkey_gost_encrypt_init(EVP_PKEY_CTX *ctx) { return 1; } /* --------------- Derive init ------------------------------------*/ static int pkey_gost_derive_init(EVP_PKEY_CTX *ctx) { return 1; } /* -------- PKEY_METHOD for GOST MAC algorithm --------------------*/ static int pkey_gost_mac_init(EVP_PKEY_CTX *ctx) { struct gost_mac_pmeth_data *data = OPENSSL_malloc(sizeof(*data)); EVP_PKEY *pkey = EVP_PKEY_CTX_get0_pkey(ctx); if (!data) return 0; memset(data, 0, sizeof(*data)); data->mac_size = 4; data->mac_param_nid = NID_undef; if (pkey) { struct gost_mac_key *key = EVP_PKEY_get0(pkey); if (key) { data->mac_param_nid = key->mac_param_nid; data->mac_size = key->mac_size; } } EVP_PKEY_CTX_set_data(ctx, data); return 1; } static void pkey_gost_mac_cleanup(EVP_PKEY_CTX *ctx) { struct gost_mac_pmeth_data *data = EVP_PKEY_CTX_get_data(ctx); if (data) OPENSSL_free(data); } static int pkey_gost_mac_copy(EVP_PKEY_CTX *dst, EVP_PKEY_CTX *src) { struct gost_mac_pmeth_data *dst_data, *src_data; if (!pkey_gost_mac_init(dst)) { return 0; } src_data = EVP_PKEY_CTX_get_data(src); dst_data = EVP_PKEY_CTX_get_data(dst); if (!src_data || !dst_data) return 0; *dst_data = *src_data; return 1; } static int pkey_gost_mac_ctrl(EVP_PKEY_CTX *ctx, int type, int p1, void *p2) { struct gost_mac_pmeth_data *data = (struct gost_mac_pmeth_data *)EVP_PKEY_CTX_get_data(ctx); switch (type) { case EVP_PKEY_CTRL_MD: { int nid = EVP_MD_type((const EVP_MD *)p2); if (nid != NID_id_Gost28147_89_MAC && nid != NID_gost_mac_12) { GOSTerr(GOST_F_PKEY_GOST_MAC_CTRL, GOST_R_INVALID_DIGEST_TYPE); return 0; } data->md = (EVP_MD *)p2; return 1; } case EVP_PKEY_CTRL_GET_MD: *(const EVP_MD **)p2 = data->md; return 1; case EVP_PKEY_CTRL_PKCS7_ENCRYPT: case EVP_PKEY_CTRL_PKCS7_DECRYPT: case EVP_PKEY_CTRL_PKCS7_SIGN: return 1; case EVP_PKEY_CTRL_SET_MAC_KEY: if (p1 != 32) { GOSTerr(GOST_F_PKEY_GOST_MAC_CTRL, GOST_R_INVALID_MAC_KEY_LENGTH); return 0; } memcpy(data->key, p2, 32); data->key_set = 1; return 1; case EVP_PKEY_CTRL_GOST_PARAMSET: { struct gost_cipher_info *param = p2; data->mac_param_nid = param->nid; return 1; } case EVP_PKEY_CTRL_DIGESTINIT: { EVP_MD_CTX *mctx = p2; struct gost_mac_key *key; if (!data->key_set) { EVP_PKEY *pkey = EVP_PKEY_CTX_get0_pkey(ctx); if (!pkey) { GOSTerr(GOST_F_PKEY_GOST_MAC_CTRL, GOST_R_MAC_KEY_NOT_SET); return 0; } key = EVP_PKEY_get0(pkey); if (!key) { GOSTerr(GOST_F_PKEY_GOST_MAC_CTRL, GOST_R_MAC_KEY_NOT_SET); return 0; } return EVP_MD_meth_get_ctrl(EVP_MD_CTX_md(mctx)) (mctx, EVP_MD_CTRL_SET_KEY, 0, key); } else { return EVP_MD_meth_get_ctrl(EVP_MD_CTX_md(mctx)) (mctx, EVP_MD_CTRL_SET_KEY, 32, &(data->key)); } } case EVP_PKEY_CTRL_MAC_LEN: { if (p1 < 1 || p1 > 8) { GOSTerr(GOST_F_PKEY_GOST_MAC_CTRL, GOST_R_INVALID_MAC_SIZE); return 0; } data->mac_size = p1; return 1; } } return -2; } static int pkey_gost_mac_ctrl_str(EVP_PKEY_CTX *ctx, const char *type, const char *value) { if (strcmp(type, key_ctrl_string) == 0) { if (strlen(value) != 32) { GOSTerr(GOST_F_PKEY_GOST_MAC_CTRL_STR, GOST_R_INVALID_MAC_KEY_LENGTH); return 0; } return pkey_gost_mac_ctrl(ctx, EVP_PKEY_CTRL_SET_MAC_KEY, 32, (char *)value); } if (strcmp(type, hexkey_ctrl_string) == 0) { long keylen; int ret; unsigned char *keybuf = string_to_hex(value, &keylen); if (!keybuf || keylen != 32) { GOSTerr(GOST_F_PKEY_GOST_MAC_CTRL_STR, GOST_R_INVALID_MAC_KEY_LENGTH); OPENSSL_free(keybuf); return 0; } ret = pkey_gost_mac_ctrl(ctx, EVP_PKEY_CTRL_SET_MAC_KEY, 32, keybuf); OPENSSL_free(keybuf); return ret; } if (!strcmp(type, maclen_ctrl_string)) { char *endptr; long size = strtol(value, &endptr, 10); if (*endptr != '\0') { GOSTerr(GOST_F_PKEY_GOST_MAC_CTRL_STR, GOST_R_INVALID_MAC_SIZE); return 0; } return pkey_gost_mac_ctrl(ctx, EVP_PKEY_CTRL_MAC_LEN, size, NULL); } if (strcmp(type, param_ctrl_string) == 0) { ASN1_OBJECT *obj = OBJ_txt2obj(value, 0); const struct gost_cipher_info *param = NULL; if (obj == NULL) { GOSTerr(GOST_F_PKEY_GOST_MAC_CTRL_STR, GOST_R_INVALID_MAC_PARAMS); return 0; } param = get_encryption_params(obj); ASN1_OBJECT_free(obj); if (param == NULL) { GOSTerr(GOST_F_PKEY_GOST_MAC_CTRL_STR, GOST_R_INVALID_MAC_PARAMS); return 0; } return pkey_gost_mac_ctrl(ctx, EVP_PKEY_CTRL_GOST_PARAMSET, 0, (void *)param); } return -2; } static int pkey_gost_mac_keygen_base(EVP_PKEY_CTX *ctx, EVP_PKEY *pkey, int mac_nid) { struct gost_mac_pmeth_data *data = EVP_PKEY_CTX_get_data(ctx); struct gost_mac_key *keydata; if (!data || !data->key_set) { GOSTerr(GOST_F_PKEY_GOST_MAC_KEYGEN, GOST_R_MAC_KEY_NOT_SET); return 0; } keydata = OPENSSL_malloc(sizeof(struct gost_mac_key)); if (keydata == NULL) return 0; memcpy(keydata->key, data->key, 32); keydata->mac_param_nid = data->mac_param_nid; keydata->mac_size = data->mac_size; EVP_PKEY_assign(pkey, mac_nid, keydata); return 1; } static int pkey_gost_mac_keygen_12(EVP_PKEY_CTX *ctx, EVP_PKEY *pkey) { return pkey_gost_mac_keygen_base(ctx, pkey, NID_gost_mac_12); } static int pkey_gost_mac_keygen(EVP_PKEY_CTX *ctx, EVP_PKEY *pkey) { return pkey_gost_mac_keygen_base(ctx, pkey, NID_id_Gost28147_89_MAC); } static int pkey_gost_mac_signctx_init(EVP_PKEY_CTX *ctx, EVP_MD_CTX *mctx) { struct gost_mac_pmeth_data *data = EVP_PKEY_CTX_get_data(ctx); if (data == NULL) { pkey_gost_mac_init(ctx); } data = EVP_PKEY_CTX_get_data(ctx); if (!data) { GOSTerr(GOST_F_PKEY_GOST_MAC_SIGNCTX_INIT, GOST_R_MAC_KEY_NOT_SET); return 0; } return 1; } static int pkey_gost_mac_signctx(EVP_PKEY_CTX *ctx, unsigned char *sig, size_t *siglen, EVP_MD_CTX *mctx) { unsigned int tmpsiglen; int ret; struct gost_mac_pmeth_data *data = EVP_PKEY_CTX_get_data(ctx); if (!siglen) return 0; tmpsiglen = *siglen; /* for platforms where sizeof(int) != * sizeof(size_t) */ if (!sig) { *siglen = data->mac_size; return 1; } EVP_MD_meth_get_ctrl(EVP_MD_CTX_md(mctx)) (mctx, EVP_MD_CTRL_MAC_LEN, data->mac_size, NULL); ret = EVP_DigestFinal_ex(mctx, sig, &tmpsiglen); *siglen = data->mac_size; return ret; } /* ----------------------------------------------------------------*/ int register_pmeth_gost(int id, EVP_PKEY_METHOD **pmeth, int flags) { *pmeth = EVP_PKEY_meth_new(id, flags); if (!*pmeth) return 0; switch (id) { case NID_id_GostR3410_2001: EVP_PKEY_meth_set_ctrl(*pmeth, pkey_gost_ctrl, pkey_gost_ec_ctrl_str_256); EVP_PKEY_meth_set_sign(*pmeth, NULL, pkey_gost_ec_cp_sign); EVP_PKEY_meth_set_verify(*pmeth, NULL, pkey_gost_ec_cp_verify); EVP_PKEY_meth_set_keygen(*pmeth, NULL, pkey_gost2001cp_keygen); EVP_PKEY_meth_set_encrypt(*pmeth, pkey_gost_encrypt_init, pkey_GOST_ECcp_encrypt); EVP_PKEY_meth_set_decrypt(*pmeth, NULL, pkey_GOST_ECcp_decrypt); EVP_PKEY_meth_set_derive(*pmeth, pkey_gost_derive_init, pkey_gost_ec_derive); EVP_PKEY_meth_set_paramgen(*pmeth, pkey_gost_paramgen_init, pkey_gost2001_paramgen); break; case NID_id_GostR3410_2012_256: EVP_PKEY_meth_set_ctrl(*pmeth, pkey_gost_ctrl, pkey_gost_ec_ctrl_str_256); EVP_PKEY_meth_set_sign(*pmeth, NULL, pkey_gost_ec_cp_sign); EVP_PKEY_meth_set_verify(*pmeth, NULL, pkey_gost_ec_cp_verify); EVP_PKEY_meth_set_keygen(*pmeth, NULL, pkey_gost2012cp_keygen); EVP_PKEY_meth_set_encrypt(*pmeth, pkey_gost_encrypt_init, pkey_GOST_ECcp_encrypt); EVP_PKEY_meth_set_decrypt(*pmeth, NULL, pkey_GOST_ECcp_decrypt); EVP_PKEY_meth_set_derive(*pmeth, pkey_gost_derive_init, pkey_gost_ec_derive); EVP_PKEY_meth_set_paramgen(*pmeth, pkey_gost_paramgen_init, pkey_gost2012_paramgen); break; case NID_id_GostR3410_2012_512: EVP_PKEY_meth_set_ctrl(*pmeth, pkey_gost_ctrl, pkey_gost_ec_ctrl_str_512); EVP_PKEY_meth_set_sign(*pmeth, NULL, pkey_gost_ec_cp_sign); EVP_PKEY_meth_set_verify(*pmeth, NULL, pkey_gost_ec_cp_verify); EVP_PKEY_meth_set_keygen(*pmeth, NULL, pkey_gost2012cp_keygen); EVP_PKEY_meth_set_encrypt(*pmeth, pkey_gost_encrypt_init, pkey_GOST_ECcp_encrypt); EVP_PKEY_meth_set_decrypt(*pmeth, NULL, pkey_GOST_ECcp_decrypt); EVP_PKEY_meth_set_derive(*pmeth, pkey_gost_derive_init, pkey_gost_ec_derive); EVP_PKEY_meth_set_paramgen(*pmeth, pkey_gost_paramgen_init, pkey_gost2012_paramgen); break; case NID_id_Gost28147_89_MAC: EVP_PKEY_meth_set_ctrl(*pmeth, pkey_gost_mac_ctrl, pkey_gost_mac_ctrl_str); EVP_PKEY_meth_set_signctx(*pmeth, pkey_gost_mac_signctx_init, pkey_gost_mac_signctx); EVP_PKEY_meth_set_keygen(*pmeth, NULL, pkey_gost_mac_keygen); EVP_PKEY_meth_set_init(*pmeth, pkey_gost_mac_init); EVP_PKEY_meth_set_cleanup(*pmeth, pkey_gost_mac_cleanup); EVP_PKEY_meth_set_copy(*pmeth, pkey_gost_mac_copy); return 1; case NID_gost_mac_12: EVP_PKEY_meth_set_ctrl(*pmeth, pkey_gost_mac_ctrl, pkey_gost_mac_ctrl_str); EVP_PKEY_meth_set_signctx(*pmeth, pkey_gost_mac_signctx_init, pkey_gost_mac_signctx); EVP_PKEY_meth_set_keygen(*pmeth, NULL, pkey_gost_mac_keygen_12); EVP_PKEY_meth_set_init(*pmeth, pkey_gost_mac_init); EVP_PKEY_meth_set_cleanup(*pmeth, pkey_gost_mac_cleanup); EVP_PKEY_meth_set_copy(*pmeth, pkey_gost_mac_copy); return 1; default: /* Unsupported method */ return 0; } EVP_PKEY_meth_set_init(*pmeth, pkey_gost_init); EVP_PKEY_meth_set_cleanup(*pmeth, pkey_gost_cleanup); EVP_PKEY_meth_set_copy(*pmeth, pkey_gost_copy); /* * FIXME derive etc... */ return 1; } libengine-gost-openssl1.1-1.1.0.1/gosthash.c000066400000000000000000000155231315100554000204430ustar00rootroot00000000000000/********************************************************************** * gosthash.c * * Copyright (c) 2005-2006 Cryptocom LTD * * This file is distributed under the same license as OpenSSL * * * * Implementation of GOST R 34.11-94 hash function * * uses on gost89.c and gost89.h Doesn't need OpenSSL * **********************************************************************/ #include #include "gost89.h" #include "gosthash.h" /* * Use OPENSSL_malloc for memory allocation if compiled with * -DOPENSSL_BUILD, and libc malloc otherwise */ #ifndef MYALLOC # ifdef OPENSSL_BUILD # include # define MYALLOC(size) OPENSSL_malloc(size) # define MYFREE(ptr) OPENSSL_free(ptr) # else # define MYALLOC(size) malloc(size) # define MYFREE(ptr) free(ptr) # endif #endif /* * Following functions are various bit meshing routines used in GOST R * 34.11-94 algorithms */ static void swap_bytes(byte * w, byte * k) { int i, j; for (i = 0; i < 4; i++) for (j = 0; j < 8; j++) k[i + 4 * j] = w[8 * i + j]; } /* was A_A */ static void circle_xor8(const byte * w, byte * k) { byte buf[8]; int i; memcpy(buf, w, 8); memmove(k, w + 8, 24); for (i = 0; i < 8; i++) k[i + 24] = buf[i] ^ k[i]; } /* was R_R */ static void transform_3(byte * data) { unsigned short int acc; acc = (data[0] ^ data[2] ^ data[4] ^ data[6] ^ data[24] ^ data[30]) | ((data[1] ^ data[3] ^ data[5] ^ data[7] ^ data[25] ^ data[31]) << 8); memmove(data, data + 2, 30); data[30] = acc & 0xff; data[31] = acc >> 8; } /* Adds blocks of N bytes modulo 2**(8*n). Returns carry*/ static int add_blocks(int n, byte * left, const byte * right) { int i; int carry = 0; int sum; for (i = 0; i < n; i++) { sum = (int)left[i] + (int)right[i] + carry; left[i] = sum & 0xff; carry = sum >> 8; } return carry; } /* Xor two sequences of bytes */ static void xor_blocks(byte * result, const byte * a, const byte * b, size_t len) { size_t i; for (i = 0; i < len; i++) result[i] = a[i] ^ b[i]; } /* * Calculate H(i+1) = Hash(Hi,Mi) * Where H and M are 32 bytes long */ static int hash_step(gost_ctx * c, byte * H, const byte * M) { byte U[32], W[32], V[32], S[32], Key[32]; int i; /* Compute first key */ xor_blocks(W, H, M, 32); swap_bytes(W, Key); /* Encrypt first 8 bytes of H with first key */ gost_enc_with_key(c, Key, H, S); /* Compute second key */ circle_xor8(H, U); circle_xor8(M, V); circle_xor8(V, V); xor_blocks(W, U, V, 32); swap_bytes(W, Key); /* encrypt second 8 bytes of H with second key */ gost_enc_with_key(c, Key, H + 8, S + 8); /* compute third key */ circle_xor8(U, U); U[31] = ~U[31]; U[29] = ~U[29]; U[28] = ~U[28]; U[24] = ~U[24]; U[23] = ~U[23]; U[20] = ~U[20]; U[18] = ~U[18]; U[17] = ~U[17]; U[14] = ~U[14]; U[12] = ~U[12]; U[10] = ~U[10]; U[8] = ~U[8]; U[7] = ~U[7]; U[5] = ~U[5]; U[3] = ~U[3]; U[1] = ~U[1]; circle_xor8(V, V); circle_xor8(V, V); xor_blocks(W, U, V, 32); swap_bytes(W, Key); /* encrypt third 8 bytes of H with third key */ gost_enc_with_key(c, Key, H + 16, S + 16); /* Compute fourth key */ circle_xor8(U, U); circle_xor8(V, V); circle_xor8(V, V); xor_blocks(W, U, V, 32); swap_bytes(W, Key); /* Encrypt last 8 bytes with fourth key */ gost_enc_with_key(c, Key, H + 24, S + 24); for (i = 0; i < 12; i++) transform_3(S); xor_blocks(S, S, M, 32); transform_3(S); xor_blocks(S, S, H, 32); for (i = 0; i < 61; i++) transform_3(S); memcpy(H, S, 32); return 1; } /* * Initialize gost_hash ctx - cleans up temporary structures and set up * substitution blocks */ int init_gost_hash_ctx(gost_hash_ctx * ctx, const gost_subst_block * subst_block) { memset(ctx, 0, sizeof(*ctx)); ctx->cipher_ctx = (gost_ctx *) MYALLOC(sizeof(gost_ctx)); if (!ctx->cipher_ctx) { return 0; } gost_init(ctx->cipher_ctx, subst_block); return 1; } /* * Free cipher CTX if it is dynamically allocated. Do not use * if cipher ctx is statically allocated as in OpenSSL implementation of * GOST hash algroritm * */ void done_gost_hash_ctx(gost_hash_ctx * ctx) { /* * No need to use gost_destroy, because cipher keys are not really secret * when hashing */ MYFREE(ctx->cipher_ctx); } /* * reset state of hash context to begin hashing new message */ int start_hash(gost_hash_ctx * ctx) { if (!ctx->cipher_ctx) return 0; memset(&(ctx->H), 0, 32); memset(&(ctx->S), 0, 32); ctx->len = 0L; ctx->left = 0; return 1; } /* * Hash block of arbitrary length * * */ int hash_block(gost_hash_ctx * ctx, const byte * block, size_t length) { if (ctx->left) { /* * There are some bytes from previous step */ unsigned int add_bytes = 32 - ctx->left; if (add_bytes > length) { add_bytes = length; } memcpy(&(ctx->remainder[ctx->left]), block, add_bytes); ctx->left += add_bytes; if (ctx->left < 32) { return 1; } block += add_bytes; length -= add_bytes; hash_step(ctx->cipher_ctx, ctx->H, ctx->remainder); add_blocks(32, ctx->S, ctx->remainder); ctx->len += 32; ctx->left = 0; } while (length >= 32) { hash_step(ctx->cipher_ctx, ctx->H, block); add_blocks(32, ctx->S, block); ctx->len += 32; block += 32; length -= 32; } if (length) { memcpy(ctx->remainder, block, ctx->left = length); } return 1; } /* * Compute hash value from current state of ctx * state of hash ctx becomes invalid and cannot be used for further * hashing. */ int finish_hash(gost_hash_ctx * ctx, byte * hashval) { byte buf[32]; byte H[32]; byte S[32]; ghosthash_len fin_len = ctx->len; byte *bptr; memcpy(H, ctx->H, 32); memcpy(S, ctx->S, 32); if (ctx->left) { memset(buf, 0, 32); memcpy(buf, ctx->remainder, ctx->left); hash_step(ctx->cipher_ctx, H, buf); add_blocks(32, S, buf); fin_len += ctx->left; } memset(buf, 0, 32); if (fin_len == 0) hash_step(ctx->cipher_ctx, H, buf); bptr = buf; fin_len <<= 3; /* Hash length in BITS!! */ while (fin_len > 0) { *(bptr++) = (byte) (fin_len & 0xFF); fin_len >>= 8; }; hash_step(ctx->cipher_ctx, H, buf); hash_step(ctx->cipher_ctx, H, S); memcpy(hashval, H, 32); return 1; } libengine-gost-openssl1.1-1.1.0.1/gosthash.h000066400000000000000000000032221315100554000204410ustar00rootroot00000000000000/********************************************************************** * gosthash.h * * Copyright (c) 2005-2006 Cryptocom LTD * * This file is distributed under the same license as OpenSSL * * * * Declaration of GOST R 34.11-94 hash functions * * uses and gost89.h Doesn't need OpenSSL * **********************************************************************/ #ifndef GOSTHASH_H # define GOSTHASH_H # include "gost89.h" # include # if (defined(_WIN32) || defined(_WIN64)) && !defined(__MINGW32__) typedef __int64 ghosthash_len; # elif defined(__arch64__) typedef long ghosthash_len; # else typedef long long ghosthash_len; # endif typedef struct gost_hash_ctx { ghosthash_len len; gost_ctx *cipher_ctx; int left; byte H[32]; byte S[32]; byte remainder[32]; } gost_hash_ctx; /* Initalizes gost hash ctx, including creation of gost cipher ctx */ int init_gost_hash_ctx(gost_hash_ctx * ctx, const gost_subst_block * subst_block); void done_gost_hash_ctx(gost_hash_ctx * ctx); /* * Cleans up all fields, except cipher ctx preparing ctx for computing of new * hash value */ int start_hash(gost_hash_ctx * ctx); /* Hashes block of data */ int hash_block(gost_hash_ctx * ctx, const byte * block, size_t length); /* * Finalizes computation of hash and fills buffer (which should be at least * 32 bytes long) with value of computed hash. */ int finish_hash(gost_hash_ctx * ctx, byte * hashval); #endif libengine-gost-openssl1.1-1.1.0.1/gosthash2012.c000066400000000000000000000127431315100554000207510ustar00rootroot00000000000000/* * GOST R 34.11-2012 core functions. * * Copyright (c) 2013 Cryptocom LTD. * This file is distributed under the same license as OpenSSL. * * Author: Alexey Degtyarev * */ #include "gosthash2012.h" #if defined(_WIN32) || defined(_WINDOWS) # define INLINE __inline #else # define INLINE inline #endif #define BSWAP64(x) \ (((x & 0xFF00000000000000ULL) >> 56) | \ ((x & 0x00FF000000000000ULL) >> 40) | \ ((x & 0x0000FF0000000000ULL) >> 24) | \ ((x & 0x000000FF00000000ULL) >> 8) | \ ((x & 0x00000000FF000000ULL) << 8) | \ ((x & 0x0000000000FF0000ULL) << 24) | \ ((x & 0x000000000000FF00ULL) << 40) | \ ((x & 0x00000000000000FFULL) << 56)) /* * Initialize gost2012 hash context structure */ void init_gost2012_hash_ctx(gost2012_hash_ctx * CTX, const unsigned int digest_size) { memset(CTX, 0, sizeof(gost2012_hash_ctx)); CTX->digest_size = digest_size; if (digest_size == 256) memset(&CTX->h, 0x01, sizeof(uint512_u)); else memset(&CTX->h, 0x00, sizeof(uint512_u)); } static INLINE void pad(gost2012_hash_ctx * CTX) { unsigned char buf[64]; if (CTX->bufsize > 63) return; memset(&buf, 0x00, sizeof buf); memcpy(&buf, CTX->buffer, CTX->bufsize); buf[CTX->bufsize] = 0x01; memcpy(CTX->buffer, &buf, sizeof buf); } static INLINE void add512(const union uint512_u *x, const union uint512_u *y, union uint512_u *r) { #ifndef __GOST3411_BIG_ENDIAN__ unsigned int CF, OF; unsigned int i; CF = 0; for (i = 0; i < 8; i++) { r->QWORD[i] = x->QWORD[i] + y->QWORD[i]; if (r->QWORD[i] < y->QWORD[i] || r->QWORD[i] < x->QWORD[i]) OF = 1; else OF = 0; r->QWORD[i] += CF; CF = OF; } #else const unsigned char *xp, *yp; unsigned char *rp; unsigned int i; int buf; xp = (const unsigned char *)&x[0]; yp = (const unsigned char *)&y[0]; rp = (unsigned char *)&r[0]; buf = 0; for (i = 0; i < 64; i++) { buf = xp[i] + yp[i] + (buf >> 8); rp[i] = (unsigned char)buf & 0xFF; } #endif } static void g(union uint512_u *h, const union uint512_u *N, const unsigned char *m) { #ifdef __GOST3411_HAS_SSE2__ __m128i xmm0, xmm2, xmm4, xmm6; /* XMMR0-quadruple */ __m128i xmm1, xmm3, xmm5, xmm7; /* XMMR1-quadruple */ unsigned int i; LOAD(N, xmm0, xmm2, xmm4, xmm6); XLPS128M(h, xmm0, xmm2, xmm4, xmm6); LOAD(m, xmm1, xmm3, xmm5, xmm7); XLPS128R(xmm0, xmm2, xmm4, xmm6, xmm1, xmm3, xmm5, xmm7); for (i = 0; i < 11; i++) ROUND128(i, xmm0, xmm2, xmm4, xmm6, xmm1, xmm3, xmm5, xmm7); XLPS128M((&C[11]), xmm0, xmm2, xmm4, xmm6); X128R(xmm0, xmm2, xmm4, xmm6, xmm1, xmm3, xmm5, xmm7); X128M(h, xmm0, xmm2, xmm4, xmm6); X128M(m, xmm0, xmm2, xmm4, xmm6); UNLOAD(h, xmm0, xmm2, xmm4, xmm6); /* Restore the Floating-point status on the CPU */ _mm_empty(); #else union uint512_u Ki, data; unsigned int i; XLPS(h, N, (&data)); /* Starting E() */ Ki = data; XLPS((&Ki), ((const union uint512_u *)&m[0]), (&data)); for (i = 0; i < 11; i++) ROUND(i, (&Ki), (&data)); XLPS((&Ki), (&C[11]), (&Ki)); X((&Ki), (&data), (&data)); /* E() done */ X((&data), h, (&data)); X((&data), ((const union uint512_u *)&m[0]), h); #endif } static INLINE void stage2(gost2012_hash_ctx * CTX, const unsigned char *data) { g(&(CTX->h), &(CTX->N), data); add512(&(CTX->N), &buffer512, &(CTX->N)); add512(&(CTX->Sigma), (const union uint512_u *)data, &(CTX->Sigma)); } static INLINE void stage3(gost2012_hash_ctx * CTX) { ALIGN(16) union uint512_u buf; memset(&buf, 0x00, sizeof buf); memcpy(&buf, &(CTX->buffer), CTX->bufsize); memcpy(&(CTX->buffer), &buf, sizeof(uint512_u)); memset(&buf, 0x00, sizeof buf); #ifndef __GOST3411_BIG_ENDIAN__ buf.QWORD[0] = CTX->bufsize << 3; #else buf.QWORD[0] = BSWAP64(CTX->bufsize << 3); #endif pad(CTX); g(&(CTX->h), &(CTX->N), (const unsigned char *)&(CTX->buffer)); add512(&(CTX->N), &buf, &(CTX->N)); add512(&(CTX->Sigma), (const union uint512_u *)&CTX->buffer[0], &(CTX->Sigma)); g(&(CTX->h), &buffer0, (const unsigned char *)&(CTX->N)); g(&(CTX->h), &buffer0, (const unsigned char *)&(CTX->Sigma)); memcpy(&(CTX->hash), &(CTX->h), sizeof(uint512_u)); } /* * Hash block of arbitrary length * */ void gost2012_hash_block(gost2012_hash_ctx * CTX, const unsigned char *data, size_t len) { size_t chunksize; while (len > 63 && CTX->bufsize == 0) { stage2(CTX, data); data += 64; len -= 64; } while (len) { chunksize = 64 - CTX->bufsize; if (chunksize > len) chunksize = len; memcpy(&CTX->buffer[CTX->bufsize], data, chunksize); CTX->bufsize += chunksize; len -= chunksize; data += chunksize; if (CTX->bufsize == 64) { stage2(CTX, CTX->buffer); CTX->bufsize = 0; } } } /* * Compute hash value from current state of ctx * state of hash ctx becomes invalid and cannot be used for further * hashing. */ void gost2012_finish_hash(gost2012_hash_ctx * CTX, unsigned char *digest) { stage3(CTX); CTX->bufsize = 0; if (CTX->digest_size == 256) memcpy(digest, &(CTX->hash.QWORD[4]), 32); else memcpy(digest, &(CTX->hash.QWORD[0]), 64); } libengine-gost-openssl1.1-1.1.0.1/gosthash2012.h000066400000000000000000000027731315100554000207600ustar00rootroot00000000000000/* * GOST R 34.11-2012 core functions definitions. * * Copyright (c) 2013 Cryptocom LTD. * This file is distributed under the same license as OpenSSL. * * Author: Alexey Degtyarev * */ #include #ifdef OPENSSL_IA32_SSE2 # ifdef __MMX__ # ifdef __SSE2__ # define __GOST3411_HAS_SSE2__ # endif # endif #endif #ifdef __GOST3411_HAS_SSE2__ # if (__GNUC__ < 4) || (__GNUC__ == 4 && __GNUC_MINOR__ < 2) # undef __GOST3411_HAS_SSE2__ # endif #endif #ifndef L_ENDIAN # define __GOST3411_BIG_ENDIAN__ #endif #if defined __GOST3411_HAS_SSE2__ # include "gosthash2012_sse2.h" #else # include "gosthash2012_ref.h" #endif #ifdef _MSC_VER # define ALIGN(x) __declspec(align(x)) #else # define ALIGN(x) __attribute__ ((__aligned__(x))) #endif ALIGN(16) typedef union uint512_u { unsigned long long QWORD[8]; } uint512_u; #include "gosthash2012_const.h" #include "gosthash2012_precalc.h" /* GOST R 34.11-2012 hash context */ ALIGN(16) typedef struct gost2012_hash_ctx { ALIGN(16) unsigned char buffer[64]; union uint512_u hash; union uint512_u h; union uint512_u N; union uint512_u Sigma; size_t bufsize; unsigned int digest_size; } gost2012_hash_ctx; void init_gost2012_hash_ctx(gost2012_hash_ctx * CTX, const unsigned int digest_size); void gost2012_hash_block(gost2012_hash_ctx * CTX, const unsigned char *data, size_t len); void gost2012_finish_hash(gost2012_hash_ctx * CTX, unsigned char *digest); libengine-gost-openssl1.1-1.1.0.1/gosthash2012_const.h000066400000000000000000000263651315100554000221710ustar00rootroot00000000000000/* * GOST R 34.11-2012 constants. * * Copyright (c) 2013 Cryptocom LTD. * This file is distributed under the same license as OpenSSL. * * Author: Alexey Degtyarev * */ ALIGN(16) static const union uint512_u buffer0 = { {0x0ULL, 0x0ULL, 0x0ULL, 0x0ULL, 0x0ULL, 0x0ULL, 0x0ULL, 0x0ULL} }; #ifndef __GOST3411_BIG_ENDIAN__ ALIGN(16) static const union uint512_u buffer512 = { {0x0000000000000200ULL, 0x0ULL, 0x0ULL, 0x0ULL, 0x0ULL, 0x0ULL, 0x0ULL, 0x0ULL} }; #else ALIGN(16) static const union uint512_u buffer512 = { {0x0002000000000000ULL, 0x0ULL, 0x0ULL, 0x0ULL, 0x0ULL, 0x0ULL, 0x0ULL, 0x0ULL} }; #endif #ifndef __GOST3411_BIG_ENDIAN__ ALIGN(16) static const union uint512_u C[12] = { {{ 0xdd806559f2a64507ULL, 0x05767436cc744d23ULL, 0xa2422a08a460d315ULL, 0x4b7ce09192676901ULL, 0x714eb88d7585c4fcULL, 0x2f6a76432e45d016ULL, 0xebcb2f81c0657c1fULL, 0xb1085bda1ecadae9ULL}}, {{ 0xe679047021b19bb7ULL, 0x55dda21bd7cbcd56ULL, 0x5cb561c2db0aa7caULL, 0x9ab5176b12d69958ULL, 0x61d55e0f16b50131ULL, 0xf3feea720a232b98ULL, 0x4fe39d460f70b5d7ULL, 0x6fa3b58aa99d2f1aULL}}, {{ 0x991e96f50aba0ab2ULL, 0xc2b6f443867adb31ULL, 0xc1c93a376062db09ULL, 0xd3e20fe490359eb1ULL, 0xf2ea7514b1297b7bULL, 0x06f15e5f529c1f8bULL, 0x0a39fc286a3d8435ULL, 0xf574dcac2bce2fc7ULL}}, {{ 0x220cbebc84e3d12eULL, 0x3453eaa193e837f1ULL, 0xd8b71333935203beULL, 0xa9d72c82ed03d675ULL, 0x9d721cad685e353fULL, 0x488e857e335c3c7dULL, 0xf948e1a05d71e4ddULL, 0xef1fdfb3e81566d2ULL}}, {{ 0x601758fd7c6cfe57ULL, 0x7a56a27ea9ea63f5ULL, 0xdfff00b723271a16ULL, 0xbfcd1747253af5a3ULL, 0x359e35d7800fffbdULL, 0x7f151c1f1686104aULL, 0x9a3f410c6ca92363ULL, 0x4bea6bacad474799ULL}}, {{ 0xfa68407a46647d6eULL, 0xbf71c57236904f35ULL, 0x0af21f66c2bec6b6ULL, 0xcffaa6b71c9ab7b4ULL, 0x187f9ab49af08ec6ULL, 0x2d66c4f95142a46cULL, 0x6fa4c33b7a3039c0ULL, 0xae4faeae1d3ad3d9ULL}}, {{ 0x8886564d3a14d493ULL, 0x3517454ca23c4af3ULL, 0x06476983284a0504ULL, 0x0992abc52d822c37ULL, 0xd3473e33197a93c9ULL, 0x399ec6c7e6bf87c9ULL, 0x51ac86febf240954ULL, 0xf4c70e16eeaac5ecULL}}, {{ 0xa47f0dd4bf02e71eULL, 0x36acc2355951a8d9ULL, 0x69d18d2bd1a5c42fULL, 0xf4892bcb929b0690ULL, 0x89b4443b4ddbc49aULL, 0x4eb7f8719c36de1eULL, 0x03e7aa020c6e4141ULL, 0x9b1f5b424d93c9a7ULL}}, {{ 0x7261445183235adbULL, 0x0e38dc92cb1f2a60ULL, 0x7b2b8a9aa6079c54ULL, 0x800a440bdbb2ceb1ULL, 0x3cd955b7e00d0984ULL, 0x3a7d3a1b25894224ULL, 0x944c9ad8ec165fdeULL, 0x378f5a541631229bULL}}, {{ 0x74b4c7fb98459cedULL, 0x3698fad1153bb6c3ULL, 0x7a1e6c303b7652f4ULL, 0x9fe76702af69334bULL, 0x1fffe18a1b336103ULL, 0x8941e71cff8a78dbULL, 0x382ae548b2e4f3f3ULL, 0xabbedea680056f52ULL}}, {{ 0x6bcaa4cd81f32d1bULL, 0xdea2594ac06fd85dULL, 0xefbacd1d7d476e98ULL, 0x8a1d71efea48b9caULL, 0x2001802114846679ULL, 0xd8fa6bbbebab0761ULL, 0x3002c6cd635afe94ULL, 0x7bcd9ed0efc889fbULL}}, {{ 0x48bc924af11bd720ULL, 0xfaf417d5d9b21b99ULL, 0xe71da4aa88e12852ULL, 0x5d80ef9d1891cc86ULL, 0xf82012d430219f9bULL, 0xcda43c32bcdf1d77ULL, 0xd21380b00449b17aULL, 0x378ee767f11631baULL}} }; #else ALIGN(16) static const union uint512_u C[12] = { {{ 0x0745a6f2596580ddULL, 0x234d74cc36747605ULL, 0x15d360a4082a42a2ULL, 0x0169679291e07c4bULL, 0xfcc485758db84e71ULL, 0x16d0452e43766a2fULL, 0x1f7c65c0812fcbebULL, 0xe9daca1eda5b08b1ULL}}, {{ 0xb79bb121700479e6ULL, 0x56cdcbd71ba2dd55ULL, 0xcaa70adbc261b55cULL, 0x5899d6126b17b59aULL, 0x3101b5160f5ed561ULL, 0x982b230a72eafef3ULL, 0xd7b5700f469de34fULL, 0x1a2f9da98ab5a36fULL}}, {{ 0xb20aba0af5961e99ULL, 0x31db7a8643f4b6c2ULL, 0x09db6260373ac9c1ULL, 0xb19e3590e40fe2d3ULL, 0x7b7b29b11475eaf2ULL, 0x8b1f9c525f5ef106ULL, 0x35843d6a28fc390aULL, 0xc72fce2bacdc74f5ULL}}, {{ 0x2ed1e384bcbe0c22ULL, 0xf137e893a1ea5334ULL, 0xbe0352933313b7d8ULL, 0x75d603ed822cd7a9ULL, 0x3f355e68ad1c729dULL, 0x7d3c5c337e858e48ULL, 0xdde4715da0e148f9ULL, 0xd26615e8b3df1fefULL}}, {{ 0x57fe6c7cfd581760ULL, 0xf563eaa97ea2567aULL, 0x161a2723b700ffdfULL, 0xa3f53a254717cdbfULL, 0xbdff0f80d7359e35ULL, 0x4a1086161f1c157fULL, 0x6323a96c0c413f9aULL, 0x994747adac6bea4bULL}}, {{ 0x6e7d64467a4068faULL, 0x354f903672c571bfULL, 0xb6c6bec2661ff20aULL, 0xb4b79a1cb7a6facfULL, 0xc68ef09ab49a7f18ULL, 0x6ca44251f9c4662dULL, 0xc039307a3bc3a46fULL, 0xd9d33a1daeae4faeULL}}, {{ 0x93d4143a4d568688ULL, 0xf34a3ca24c451735ULL, 0x04054a2883694706ULL, 0x372c822dc5ab9209ULL, 0xc9937a19333e47d3ULL, 0xc987bfe6c7c69e39ULL, 0x540924bffe86ac51ULL, 0xecc5aaee160ec7f4ULL}}, {{ 0x1ee702bfd40d7fa4ULL, 0xd9a8515935c2ac36ULL, 0x2fc4a5d12b8dd169ULL, 0x90069b92cb2b89f4ULL, 0x9ac4db4d3b44b489ULL, 0x1ede369c71f8b74eULL, 0x41416e0c02aae703ULL, 0xa7c9934d425b1f9bULL}}, {{ 0xdb5a238351446172ULL, 0x602a1fcb92dc380eULL, 0x549c07a69a8a2b7bULL, 0xb1ceb2db0b440a80ULL, 0x84090de0b755d93cULL, 0x244289251b3a7d3aULL, 0xde5f16ecd89a4c94ULL, 0x9b223116545a8f37ULL}}, {{ 0xed9c4598fbc7b474ULL, 0xc3b63b15d1fa9836ULL, 0xf452763b306c1e7aULL, 0x4b3369af0267e79fULL, 0x0361331b8ae1ff1fULL, 0xdb788aff1ce74189ULL, 0xf3f3e4b248e52a38ULL, 0x526f0580a6debeabULL}}, {{ 0x1b2df381cda4ca6bULL, 0x5dd86fc04a59a2deULL, 0x986e477d1dcdbaefULL, 0xcab948eaef711d8aULL, 0x7966841421800120ULL, 0x6107abebbb6bfad8ULL, 0x94fe5a63cdc60230ULL, 0xfb89c8efd09ecd7bULL}}, {{ 0x20d71bf14a92bc48ULL, 0x991bb2d9d517f4faULL, 0x5228e188aaa41de7ULL, 0x86cc91189def805dULL, 0x9b9f2130d41220f8ULL, 0x771ddfbc323ca4cdULL, 0x7ab14904b08013d2ULL, 0xba3116f167e78e37ULL}} }; #endif #ifndef __GOST3411_BIG_ENDIAN__ static const unsigned long long A[64] = { 0x8e20faa72ba0b470ULL, 0x47107ddd9b505a38ULL, 0xad08b0e0c3282d1cULL, 0xd8045870ef14980eULL, 0x6c022c38f90a4c07ULL, 0x3601161cf205268dULL, 0x1b8e0b0e798c13c8ULL, 0x83478b07b2468764ULL, 0xa011d380818e8f40ULL, 0x5086e740ce47c920ULL, 0x2843fd2067adea10ULL, 0x14aff010bdd87508ULL, 0x0ad97808d06cb404ULL, 0x05e23c0468365a02ULL, 0x8c711e02341b2d01ULL, 0x46b60f011a83988eULL, 0x90dab52a387ae76fULL, 0x486dd4151c3dfdb9ULL, 0x24b86a840e90f0d2ULL, 0x125c354207487869ULL, 0x092e94218d243cbaULL, 0x8a174a9ec8121e5dULL, 0x4585254f64090fa0ULL, 0xaccc9ca9328a8950ULL, 0x9d4df05d5f661451ULL, 0xc0a878a0a1330aa6ULL, 0x60543c50de970553ULL, 0x302a1e286fc58ca7ULL, 0x18150f14b9ec46ddULL, 0x0c84890ad27623e0ULL, 0x0642ca05693b9f70ULL, 0x0321658cba93c138ULL, 0x86275df09ce8aaa8ULL, 0x439da0784e745554ULL, 0xafc0503c273aa42aULL, 0xd960281e9d1d5215ULL, 0xe230140fc0802984ULL, 0x71180a8960409a42ULL, 0xb60c05ca30204d21ULL, 0x5b068c651810a89eULL, 0x456c34887a3805b9ULL, 0xac361a443d1c8cd2ULL, 0x561b0d22900e4669ULL, 0x2b838811480723baULL, 0x9bcf4486248d9f5dULL, 0xc3e9224312c8c1a0ULL, 0xeffa11af0964ee50ULL, 0xf97d86d98a327728ULL, 0xe4fa2054a80b329cULL, 0x727d102a548b194eULL, 0x39b008152acb8227ULL, 0x9258048415eb419dULL, 0x492c024284fbaec0ULL, 0xaa16012142f35760ULL, 0x550b8e9e21f7a530ULL, 0xa48b474f9ef5dc18ULL, 0x70a6a56e2440598eULL, 0x3853dc371220a247ULL, 0x1ca76e95091051adULL, 0x0edd37c48a08a6d8ULL, 0x07e095624504536cULL, 0x8d70c431ac02a736ULL, 0xc83862965601dd1bULL, 0x641c314b2b8ee083ULL }; #else static const unsigned long long A[64] = { 0x70b4a02ba7fa208eULL, 0x385a509bdd7d1047ULL, 0x1c2d28c3e0b008adULL, 0x0e9814ef705804d8ULL, 0x074c0af9382c026cULL, 0x8d2605f21c160136ULL, 0xc8138c790e0b8e1bULL, 0x648746b2078b4783ULL, 0x408f8e8180d311a0ULL, 0x20c947ce40e78650ULL, 0x10eaad6720fd4328ULL, 0x0875d8bd10f0af14ULL, 0x04b46cd00878d90aULL, 0x025a3668043ce205ULL, 0x012d1b34021e718cULL, 0x8e98831a010fb646ULL, 0x6fe77a382ab5da90ULL, 0xb9fd3d1c15d46d48ULL, 0xd2f0900e846ab824ULL, 0x6978480742355c12ULL, 0xba3c248d21942e09ULL, 0x5d1e12c89e4a178aULL, 0xa00f09644f258545ULL, 0x50898a32a99cccacULL, 0x5114665f5df04d9dULL, 0xa60a33a1a078a8c0ULL, 0x530597de503c5460ULL, 0xa78cc56f281e2a30ULL, 0xdd46ecb9140f1518ULL, 0xe02376d20a89840cULL, 0x709f3b6905ca4206ULL, 0x38c193ba8c652103ULL, 0xa8aae89cf05d2786ULL, 0x5455744e78a09d43ULL, 0x2aa43a273c50c0afULL, 0x15521d9d1e2860d9ULL, 0x842980c00f1430e2ULL, 0x429a4060890a1871ULL, 0x214d2030ca050cb6ULL, 0x9ea81018658c065bULL, 0xb905387a88346c45ULL, 0xd28c1c3d441a36acULL, 0x69460e90220d1b56ULL, 0xba2307481188832bULL, 0x5d9f8d248644cf9bULL, 0xa0c1c8124322e9c3ULL, 0x50ee6409af11faefULL, 0x2877328ad9867df9ULL, 0x9c320ba85420fae4ULL, 0x4e198b542a107d72ULL, 0x2782cb2a1508b039ULL, 0x9d41eb1584045892ULL, 0xc0aefb8442022c49ULL, 0x6057f342210116aaULL, 0x30a5f7219e8e0b55ULL, 0x18dcf59e4f478ba4ULL, 0x8e5940246ea5a670ULL, 0x47a2201237dc5338ULL, 0xad511009956ea71cULL, 0xd8a6088ac437dd0eULL, 0x6c5304456295e007ULL, 0x36a702ac31c4708dULL, 0x1bdd0156966238c8ULL, 0x83e08e2b4b311c64ULL }; #endif static const unsigned char Tau[64] = { 0, 8, 16, 24, 32, 40, 48, 56, 1, 9, 17, 25, 33, 41, 49, 57, 2, 10, 18, 26, 34, 42, 50, 58, 3, 11, 19, 27, 35, 43, 51, 59, 4, 12, 20, 28, 36, 44, 52, 60, 5, 13, 21, 29, 37, 45, 53, 61, 6, 14, 22, 30, 38, 46, 54, 62, 7, 15, 23, 31, 39, 47, 55, 63 }; static const unsigned char Pi[256] = { 252, 238, 221, 17, 207, 110, 49, 22, 251, 196, 250, 218, 35, 197, 4, 77, 233, 119, 240, 219, 147, 46, 153, 186, 23, 54, 241, 187, 20, 205, 95, 193, 249, 24, 101, 90, 226, 92, 239, 33, 129, 28, 60, 66, 139, 1, 142, 79, 5, 132, 2, 174, 227, 106, 143, 160, 6, 11, 237, 152, 127, 212, 211, 31, 235, 52, 44, 81, 234, 200, 72, 171, 242, 42, 104, 162, 253, 58, 206, 204, 181, 112, 14, 86, 8, 12, 118, 18, 191, 114, 19, 71, 156, 183, 93, 135, 21, 161, 150, 41, 16, 123, 154, 199, 243, 145, 120, 111, 157, 158, 178, 177, 50, 117, 25, 61, 255, 53, 138, 126, 109, 84, 198, 128, 195, 189, 13, 87, 223, 245, 36, 169, 62, 168, 67, 201, 215, 121, 214, 246, 124, 34, 185, 3, 224, 15, 236, 222, 122, 148, 176, 188, 220, 232, 40, 80, 78, 51, 10, 74, 167, 151, 96, 115, 30, 0, 98, 68, 26, 184, 56, 130, 100, 159, 38, 65, 173, 69, 70, 146, 39, 94, 85, 47, 140, 163, 165, 125, 105, 213, 149, 59, 7, 88, 179, 64, 134, 172, 29, 247, 48, 55, 107, 228, 136, 217, 231, 137, 225, 27, 131, 73, 76, 63, 248, 254, 141, 83, 170, 144, 202, 216, 133, 97, 32, 113, 103, 164, 45, 43, 9, 91, 203, 155, 37, 208, 190, 229, 108, 82, 89, 166, 116, 210, 230, 244, 180, 192, 209, 102, 175, 194, 57, 75, 99, 182 }; libengine-gost-openssl1.1-1.1.0.1/gosthash2012_precalc.h000066400000000000000000003063151315100554000224500ustar00rootroot00000000000000/* * Precalculation of matrix A multiplication. * * Copyright (c) 2013 Cryptocom LTD. * This file is distributed under the same license as OpenSSL. * * Author: Alexey Degtyarev * */ #ifndef __GOST3411_BIG_ENDIAN__ ALIGN(16) static const unsigned long long Ax[8][256] = { { 0xd01f715b5c7ef8e6ULL, 0x16fa240980778325ULL, 0xa8a42e857ee049c8ULL, 0x6ac1068fa186465bULL, 0x6e417bd7a2e9320bULL, 0x665c8167a437daabULL, 0x7666681aa89617f6ULL, 0x4b959163700bdcf5ULL, 0xf14be6b78df36248ULL, 0xc585bd689a625cffULL, 0x9557d7fca67d82cbULL, 0x89f0b969af6dd366ULL, 0xb0833d48749f6c35ULL, 0xa1998c23b1ecbc7cULL, 0x8d70c431ac02a736ULL, 0xd6dfbc2fd0a8b69eULL, 0x37aeb3e551fa198bULL, 0x0b7d128a40b5cf9cULL, 0x5a8f2008b5780cbcULL, 0xedec882284e333e5ULL, 0xd25fc177d3c7c2ceULL, 0x5e0f5d50b61778ecULL, 0x1d873683c0c24cb9ULL, 0xad040bcbb45d208cULL, 0x2f89a0285b853c76ULL, 0x5732fff6791b8d58ULL, 0x3e9311439ef6ec3fULL, 0xc9183a809fd3c00fULL, 0x83adf3f5260a01eeULL, 0xa6791941f4e8ef10ULL, 0x103ae97d0ca1cd5dULL, 0x2ce948121dee1b4aULL, 0x39738421dbf2bf53ULL, 0x093da2a6cf0cf5b4ULL, 0xcd9847d89cbcb45fULL, 0xf9561c078b2d8ae8ULL, 0x9c6a755a6971777fULL, 0xbc1ebaa0712ef0c5ULL, 0x72e61542abf963a6ULL, 0x78bb5fde229eb12eULL, 0x14ba94250fceb90dULL, 0x844d6697630e5282ULL, 0x98ea08026a1e032fULL, 0xf06bbea144217f5cULL, 0xdb6263d11ccb377aULL, 0x641c314b2b8ee083ULL, 0x320e96ab9b4770cfULL, 0x1ee7deb986a96b85ULL, 0xe96cf57a878c47b5ULL, 0xfdd6615f8842feb8ULL, 0xc83862965601dd1bULL, 0x2ea9f83e92572162ULL, 0xf876441142ff97fcULL, 0xeb2c455608357d9dULL, 0x5612a7e0b0c9904cULL, 0x6c01cbfb2d500823ULL, 0x4548a6a7fa037a2dULL, 0xabc4c6bf388b6ef4ULL, 0xbade77d4fdf8bebdULL, 0x799b07c8eb4cac3aULL, 0x0c9d87e805b19cf0ULL, 0xcb588aac106afa27ULL, 0xea0c1d40c1e76089ULL, 0x2869354a1e816f1aULL, 0xff96d17307fbc490ULL, 0x9f0a9d602f1a5043ULL, 0x96373fc6e016a5f7ULL, 0x5292dab8b3a6e41cULL, 0x9b8ae0382c752413ULL, 0x4f15ec3b7364a8a5ULL, 0x3fb349555724f12bULL, 0xc7c50d4415db66d7ULL, 0x92b7429ee379d1a7ULL, 0xd37f99611a15dfdaULL, 0x231427c05e34a086ULL, 0xa439a96d7b51d538ULL, 0xb403401077f01865ULL, 0xdda2aea5901d7902ULL, 0x0a5d4a9c8967d288ULL, 0xc265280adf660f93ULL, 0x8bb0094520d4e94eULL, 0x2a29856691385532ULL, 0x42a833c5bf072941ULL, 0x73c64d54622b7eb2ULL, 0x07e095624504536cULL, 0x8a905153e906f45aULL, 0x6f6123c16b3b2f1fULL, 0xc6e55552dc097bc3ULL, 0x4468feb133d16739ULL, 0xe211e7f0c7398829ULL, 0xa2f96419f7879b40ULL, 0x19074bdbc3ad38e9ULL, 0xf4ebc3f9474e0b0cULL, 0x43886bd376d53455ULL, 0xd8028beb5aa01046ULL, 0x51f23282f5cdc320ULL, 0xe7b1c2be0d84e16dULL, 0x081dfab006dee8a0ULL, 0x3b33340d544b857bULL, 0x7f5bcabc679ae242ULL, 0x0edd37c48a08a6d8ULL, 0x81ed43d9a9b33bc6ULL, 0xb1a3655ebd4d7121ULL, 0x69a1eeb5e7ed6167ULL, 0xf6ab73d5c8f73124ULL, 0x1a67a3e185c61fd5ULL, 0x2dc91004d43c065eULL, 0x0240b02c8fb93a28ULL, 0x90f7f2b26cc0eb8fULL, 0x3cd3a16f114fd617ULL, 0xaae49ea9f15973e0ULL, 0x06c0cd748cd64e78ULL, 0xda423bc7d5192a6eULL, 0xc345701c16b41287ULL, 0x6d2193ede4821537ULL, 0xfcf639494190e3acULL, 0x7c3b228621f1c57eULL, 0xfb16ac2b0494b0c0ULL, 0xbf7e529a3745d7f9ULL, 0x6881b6a32e3f7c73ULL, 0xca78d2bad9b8e733ULL, 0xbbfe2fc2342aa3a9ULL, 0x0dbddffecc6381e4ULL, 0x70a6a56e2440598eULL, 0xe4d12a844befc651ULL, 0x8c509c2765d0ba22ULL, 0xee8c6018c28814d9ULL, 0x17da7c1f49a59e31ULL, 0x609c4c1328e194d3ULL, 0xb3e3d57232f44b09ULL, 0x91d7aaa4a512f69bULL, 0x0ffd6fd243dabbccULL, 0x50d26a943c1fde34ULL, 0x6be15e9968545b4fULL, 0x94778fea6faf9fdfULL, 0x2b09dd7058ea4826ULL, 0x677cd9716de5c7bfULL, 0x49d5214fffb2e6ddULL, 0x0360e83a466b273cULL, 0x1fc786af4f7b7691ULL, 0xa0b9d435783ea168ULL, 0xd49f0c035f118cb6ULL, 0x01205816c9d21d14ULL, 0xac2453dd7d8f3d98ULL, 0x545217cc3f70aa64ULL, 0x26b4028e9489c9c2ULL, 0xdec2469fd6765e3eULL, 0x04807d58036f7450ULL, 0xe5f17292823ddb45ULL, 0xf30b569b024a5860ULL, 0x62dcfc3fa758aefbULL, 0xe84cad6c4e5e5aa1ULL, 0xccb81fce556ea94bULL, 0x53b282ae7a74f908ULL, 0x1b47fbf74c1402c1ULL, 0x368eebf39828049fULL, 0x7afbeff2ad278b06ULL, 0xbe5e0a8cfe97caedULL, 0xcfd8f7f413058e77ULL, 0xf78b2bc301252c30ULL, 0x4d555c17fcdd928dULL, 0x5f2f05467fc565f8ULL, 0x24f4b2a21b30f3eaULL, 0x860dd6bbecb768aaULL, 0x4c750401350f8f99ULL, 0x0000000000000000ULL, 0xecccd0344d312ef1ULL, 0xb5231806be220571ULL, 0xc105c030990d28afULL, 0x653c695de25cfd97ULL, 0x159acc33c61ca419ULL, 0xb89ec7f872418495ULL, 0xa9847693b73254dcULL, 0x58cf90243ac13694ULL, 0x59efc832f3132b80ULL, 0x5c4fed7c39ae42c4ULL, 0x828dabe3efd81cfaULL, 0xd13f294d95ace5f2ULL, 0x7d1b7a90e823d86aULL, 0xb643f03cf849224dULL, 0x3df3f979d89dcb03ULL, 0x7426d836272f2ddeULL, 0xdfe21e891fa4432aULL, 0x3a136c1b9d99986fULL, 0xfa36f43dcd46add4ULL, 0xc025982650df35bbULL, 0x856d3e81aadc4f96ULL, 0xc4a5e57e53b041ebULL, 0x4708168b75ba4005ULL, 0xaf44bbe73be41aa4ULL, 0x971767d029c4b8e3ULL, 0xb9be9feebb939981ULL, 0x215497ecd18d9aaeULL, 0x316e7e91dd2c57f3ULL, 0xcef8afe2dad79363ULL, 0x3853dc371220a247ULL, 0x35ee03c9de4323a3ULL, 0xe6919aa8c456fc79ULL, 0xe05157dc4880b201ULL, 0x7bdbb7e464f59612ULL, 0x127a59518318f775ULL, 0x332ecebd52956ddbULL, 0x8f30741d23bb9d1eULL, 0xd922d3fd93720d52ULL, 0x7746300c61440ae2ULL, 0x25d4eab4d2e2eefeULL, 0x75068020eefd30caULL, 0x135a01474acaea61ULL, 0x304e268714fe4ae7ULL, 0xa519f17bb283c82cULL, 0xdc82f6b359cf6416ULL, 0x5baf781e7caa11a8ULL, 0xb2c38d64fb26561dULL, 0x34ce5bdf17913eb7ULL, 0x5d6fb56af07c5fd0ULL, 0x182713cd0a7f25fdULL, 0x9e2ac576e6c84d57ULL, 0x9aaab82ee5a73907ULL, 0xa3d93c0f3e558654ULL, 0x7e7b92aaae48ff56ULL, 0x872d8ead256575beULL, 0x41c8dbfff96c0e7dULL, 0x99ca5014a3cc1e3bULL, 0x40e883e930be1369ULL, 0x1ca76e95091051adULL, 0x4e35b42dbab6b5b1ULL, 0x05a0254ecabd6944ULL, 0xe1710fca8152af15ULL, 0xf22b0e8dcb984574ULL, 0xb763a82a319b3f59ULL, 0x63fca4296e8ab3efULL, 0x9d4a2d4ca0a36a6bULL, 0xe331bfe60eeb953dULL, 0xd5bf541596c391a2ULL, 0xf5cb9bef8e9c1618ULL, 0x46284e9dbc685d11ULL, 0x2074cffa185f87baULL, 0xbd3ee2b6b8fcedd1ULL, 0xae64e3f1f23607b0ULL, 0xfeb68965ce29d984ULL, 0x55724fdaf6a2b770ULL, 0x29496d5cd753720eULL, 0xa75941573d3af204ULL, 0x8e102c0bea69800aULL, 0x111ab16bc573d049ULL, 0xd7ffe439197aab8aULL, 0xefac380e0b5a09cdULL, 0x48f579593660fbc9ULL, 0x22347fd697e6bd92ULL, 0x61bc1405e13389c7ULL, 0x4ab5c975b9d9c1e1ULL, 0x80cd1bcf606126d2ULL, 0x7186fd78ed92449aULL, 0x93971a882aabccb3ULL, 0x88d0e17f66bfce72ULL, 0x27945a985d5bd4d6ULL}, { 0xde553f8c05a811c8ULL, 0x1906b59631b4f565ULL, 0x436e70d6b1964ff7ULL, 0x36d343cb8b1e9d85ULL, 0x843dfacc858aab5aULL, 0xfdfc95c299bfc7f9ULL, 0x0f634bdea1d51fa2ULL, 0x6d458b3b76efb3cdULL, 0x85c3f77cf8593f80ULL, 0x3c91315fbe737cb2ULL, 0x2148b03366ace398ULL, 0x18f8b8264c6761bfULL, 0xc830c1c495c9fb0fULL, 0x981a76102086a0aaULL, 0xaa16012142f35760ULL, 0x35cc54060c763cf6ULL, 0x42907d66cc45db2dULL, 0x8203d44b965af4bcULL, 0x3d6f3cefc3a0e868ULL, 0xbc73ff69d292bda7ULL, 0x8722ed0102e20a29ULL, 0x8f8185e8cd34deb7ULL, 0x9b0561dda7ee01d9ULL, 0x5335a0193227fad6ULL, 0xc9cecc74e81a6fd5ULL, 0x54f5832e5c2431eaULL, 0x99e47ba05d553470ULL, 0xf7bee756acd226ceULL, 0x384e05a5571816fdULL, 0xd1367452a47d0e6aULL, 0xf29fde1c386ad85bULL, 0x320c77316275f7caULL, 0xd0c879e2d9ae9ab0ULL, 0xdb7406c69110ef5dULL, 0x45505e51a2461011ULL, 0xfc029872e46c5323ULL, 0xfa3cb6f5f7bc0cc5ULL, 0x031f17cd8768a173ULL, 0xbd8df2d9af41297dULL, 0x9d3b4f5ab43e5e3fULL, 0x4071671b36feee84ULL, 0x716207e7d3e3b83dULL, 0x48d20ff2f9283a1aULL, 0x27769eb4757cbc7eULL, 0x5c56ebc793f2e574ULL, 0xa48b474f9ef5dc18ULL, 0x52cbada94ff46e0cULL, 0x60c7da982d8199c6ULL, 0x0e9d466edc068b78ULL, 0x4eec2175eaf865fcULL, 0x550b8e9e21f7a530ULL, 0x6b7ba5bc653fec2bULL, 0x5eb7f1ba6949d0ddULL, 0x57ea94e3db4c9099ULL, 0xf640eae6d101b214ULL, 0xdd4a284182c0b0bbULL, 0xff1d8fbf6304f250ULL, 0xb8accb933bf9d7e8ULL, 0xe8867c478eb68c4dULL, 0x3f8e2692391bddc1ULL, 0xcb2fd60912a15a7cULL, 0xaec935dbab983d2fULL, 0xf55ffd2b56691367ULL, 0x80e2ce366ce1c115ULL, 0x179bf3f8edb27e1dULL, 0x01fe0db07dd394daULL, 0xda8a0b76ecc37b87ULL, 0x44ae53e1df9584cbULL, 0xb310b4b77347a205ULL, 0xdfab323c787b8512ULL, 0x3b511268d070b78eULL, 0x65e6e3d2b9396753ULL, 0x6864b271e2574d58ULL, 0x259784c98fc789d7ULL, 0x02e11a7dfabb35a9ULL, 0x8841a6dfa337158bULL, 0x7ade78c39b5dcdd0ULL, 0xb7cf804d9a2cc84aULL, 0x20b6bd831b7f7742ULL, 0x75bd331d3a88d272ULL, 0x418f6aab4b2d7a5eULL, 0xd9951cbb6babdaf4ULL, 0xb6318dfde7ff5c90ULL, 0x1f389b112264aa83ULL, 0x492c024284fbaec0ULL, 0xe33a0363c608f9a0ULL, 0x2688930408af28a4ULL, 0xc7538a1a341ce4adULL, 0x5da8e677ee2171aeULL, 0x8c9e92254a5c7fc4ULL, 0x63d8cd55aae938b5ULL, 0x29ebd8daa97a3706ULL, 0x959827b37be88aa1ULL, 0x1484e4356adadf6eULL, 0xa7945082199d7d6bULL, 0xbf6ce8a455fa1cd4ULL, 0x9cc542eac9edcae5ULL, 0x79c16f0e1c356ca3ULL, 0x89bfab6fdee48151ULL, 0xd4174d1830c5f0ffULL, 0x9258048415eb419dULL, 0x6139d72850520d1cULL, 0x6a85a80c18ec78f1ULL, 0xcd11f88e0171059aULL, 0xcceff53e7ca29140ULL, 0xd229639f2315af19ULL, 0x90b91ef9ef507434ULL, 0x5977d28d074a1be1ULL, 0x311360fce51d56b9ULL, 0xc093a92d5a1f2f91ULL, 0x1a19a25bb6dc5416ULL, 0xeb996b8a09de2d3eULL, 0xfee3820f1ed7668aULL, 0xd7085ad5b7ad518cULL, 0x7fff41890fe53345ULL, 0xec5948bd67dde602ULL, 0x2fd5f65dbaaa68e0ULL, 0xa5754affe32648c2ULL, 0xf8ddac880d07396cULL, 0x6fa491468c548664ULL, 0x0c7c5c1326bdbed1ULL, 0x4a33158f03930fb3ULL, 0x699abfc19f84d982ULL, 0xe4fa2054a80b329cULL, 0x6707f9af438252faULL, 0x08a368e9cfd6d49eULL, 0x47b1442c58fd25b8ULL, 0xbbb3dc5ebc91769bULL, 0x1665fe489061eac7ULL, 0x33f27a811fa66310ULL, 0x93a609346838d547ULL, 0x30ed6d4c98cec263ULL, 0x1dd9816cd8df9f2aULL, 0x94662a03063b1e7bULL, 0x83fdd9fbeb896066ULL, 0x7b207573e68e590aULL, 0x5f49fc0a149a4407ULL, 0x343259b671a5a82cULL, 0xfbc2bb458a6f981fULL, 0xc272b350a0a41a38ULL, 0x3aaf1fd8ada32354ULL, 0x6cbb868b0b3c2717ULL, 0xa2b569c88d2583feULL, 0xf180c9d1bf027928ULL, 0xaf37386bd64ba9f5ULL, 0x12bacab2790a8088ULL, 0x4c0d3b0810435055ULL, 0xb2eeb9070e9436dfULL, 0xc5b29067cea7d104ULL, 0xdcb425f1ff132461ULL, 0x4f122cc5972bf126ULL, 0xac282fa651230886ULL, 0xe7e537992f6393efULL, 0xe61b3a2952b00735ULL, 0x709c0a57ae302ce7ULL, 0xe02514ae416058d3ULL, 0xc44c9dd7b37445deULL, 0x5a68c5408022ba92ULL, 0x1c278cdca50c0bf0ULL, 0x6e5a9cf6f18712beULL, 0x86dce0b17f319ef3ULL, 0x2d34ec2040115d49ULL, 0x4bcd183f7e409b69ULL, 0x2815d56ad4a9a3dcULL, 0x24698979f2141d0dULL, 0x0000000000000000ULL, 0x1ec696a15fb73e59ULL, 0xd86b110b16784e2eULL, 0x8e7f8858b0e74a6dULL, 0x063e2e8713d05fe6ULL, 0xe2c40ed3bbdb6d7aULL, 0xb1f1aeca89fc97acULL, 0xe1db191e3cb3cc09ULL, 0x6418ee62c4eaf389ULL, 0xc6ad87aa49cf7077ULL, 0xd6f65765ca7ec556ULL, 0x9afb6c6dda3d9503ULL, 0x7ce05644888d9236ULL, 0x8d609f95378feb1eULL, 0x23a9aa4e9c17d631ULL, 0x6226c0e5d73aac6fULL, 0x56149953a69f0443ULL, 0xeeb852c09d66d3abULL, 0x2b0ac2a753c102afULL, 0x07c023376e03cb3cULL, 0x2ccae1903dc2c993ULL, 0xd3d76e2f5ec63bc3ULL, 0x9e2458973356ff4cULL, 0xa66a5d32644ee9b1ULL, 0x0a427294356de137ULL, 0x783f62be61e6f879ULL, 0x1344c70204d91452ULL, 0x5b96c8f0fdf12e48ULL, 0xa90916ecc59bf613ULL, 0xbe92e5142829880eULL, 0x727d102a548b194eULL, 0x1be7afebcb0fc0ccULL, 0x3e702b2244c8491bULL, 0xd5e940a84d166425ULL, 0x66f9f41f3e51c620ULL, 0xabe80c913f20c3baULL, 0xf07ec461c2d1edf2ULL, 0xf361d3ac45b94c81ULL, 0x0521394a94b8fe95ULL, 0xadd622162cf09c5cULL, 0xe97871f7f3651897ULL, 0xf4a1f09b2bba87bdULL, 0x095d6559b2054044ULL, 0x0bbc7f2448be75edULL, 0x2af4cf172e129675ULL, 0x157ae98517094bb4ULL, 0x9fda55274e856b96ULL, 0x914713499283e0eeULL, 0xb952c623462a4332ULL, 0x74433ead475b46a8ULL, 0x8b5eb112245fb4f8ULL, 0xa34b6478f0f61724ULL, 0x11a5dd7ffe6221fbULL, 0xc16da49d27ccbb4bULL, 0x76a224d0bde07301ULL, 0x8aa0bca2598c2022ULL, 0x4df336b86d90c48fULL, 0xea67663a740db9e4ULL, 0xef465f70e0b54771ULL, 0x39b008152acb8227ULL, 0x7d1e5bf4f55e06ecULL, 0x105bd0cf83b1b521ULL, 0x775c2960c033e7dbULL, 0x7e014c397236a79fULL, 0x811cc386113255cfULL, 0xeda7450d1a0e72d8ULL, 0x5889df3d7a998f3bULL, 0x2e2bfbedc779fc3aULL, 0xce0eef438619a4e9ULL, 0x372d4e7bf6cd095fULL, 0x04df34fae96b6a4fULL, 0xf923a13870d4adb6ULL, 0xa1aa7e050a4d228dULL, 0xa8f71b5cb84862c9ULL, 0xb52e9a306097fde3ULL, 0x0d8251a35b6e2a0bULL, 0x2257a7fee1c442ebULL, 0x73831d9a29588d94ULL, 0x51d4ba64c89ccf7fULL, 0x502ab7d4b54f5ba5ULL, 0x97793dce8153bf08ULL, 0xe5042de4d5d8a646ULL, 0x9687307efc802bd2ULL, 0xa05473b5779eb657ULL, 0xb4d097801d446939ULL, 0xcff0e2f3fbca3033ULL, 0xc38cbee0dd778ee2ULL, 0x464f499c252eb162ULL, 0xcad1dbb96f72cea6ULL, 0xba4dd1eec142e241ULL, 0xb00fa37af42f0376ULL}, { 0xcce4cd3aa968b245ULL, 0x089d5484e80b7fafULL, 0x638246c1b3548304ULL, 0xd2fe0ec8c2355492ULL, 0xa7fbdf7ff2374eeeULL, 0x4df1600c92337a16ULL, 0x84e503ea523b12fbULL, 0x0790bbfd53ab0c4aULL, 0x198a780f38f6ea9dULL, 0x2ab30c8f55ec48cbULL, 0xe0f7fed6b2c49db5ULL, 0xb6ecf3f422cadbdcULL, 0x409c9a541358df11ULL, 0xd3ce8a56dfde3fe3ULL, 0xc3e9224312c8c1a0ULL, 0x0d6dfa58816ba507ULL, 0xddf3e1b179952777ULL, 0x04c02a42748bb1d9ULL, 0x94c2abff9f2decb8ULL, 0x4f91752da8f8acf4ULL, 0x78682befb169bf7bULL, 0xe1c77a48af2ff6c4ULL, 0x0c5d7ec69c80ce76ULL, 0x4cc1e4928fd81167ULL, 0xfeed3d24d9997b62ULL, 0x518bb6dfc3a54a23ULL, 0x6dbf2d26151f9b90ULL, 0xb5bc624b05ea664fULL, 0xe86aaa525acfe21aULL, 0x4801ced0fb53a0beULL, 0xc91463e6c00868edULL, 0x1027a815cd16fe43ULL, 0xf67069a0319204cdULL, 0xb04ccc976c8abce7ULL, 0xc0b9b3fc35e87c33ULL, 0xf380c77c58f2de65ULL, 0x50bb3241de4e2152ULL, 0xdf93f490435ef195ULL, 0xf1e0d25d62390887ULL, 0xaf668bfb1a3c3141ULL, 0xbc11b251f00a7291ULL, 0x73a5eed47e427d47ULL, 0x25bee3f6ee4c3b2eULL, 0x43cc0beb34786282ULL, 0xc824e778dde3039cULL, 0xf97d86d98a327728ULL, 0xf2b043e24519b514ULL, 0xe297ebf7880f4b57ULL, 0x3a94a49a98fab688ULL, 0x868516cb68f0c419ULL, 0xeffa11af0964ee50ULL, 0xa4ab4ec0d517f37dULL, 0xa9c6b498547c567aULL, 0x8e18424f80fbbbb6ULL, 0x0bcdc53bcf2bc23cULL, 0x137739aaea3643d0ULL, 0x2c1333ec1bac2ff0ULL, 0x8d48d3f0a7db0625ULL, 0x1e1ac3f26b5de6d7ULL, 0xf520f81f16b2b95eULL, 0x9f0f6ec450062e84ULL, 0x0130849e1deb6b71ULL, 0xd45e31ab8c7533a9ULL, 0x652279a2fd14e43fULL, 0x3209f01e70f1c927ULL, 0xbe71a770cac1a473ULL, 0x0e3d6be7a64b1894ULL, 0x7ec8148cff29d840ULL, 0xcb7476c7fac3be0fULL, 0x72956a4a63a91636ULL, 0x37f95ec21991138fULL, 0x9e3fea5a4ded45f5ULL, 0x7b38ba50964902e8ULL, 0x222e580bbde73764ULL, 0x61e253e0899f55e6ULL, 0xfc8d2805e352ad80ULL, 0x35994be3235ac56dULL, 0x09add01af5e014deULL, 0x5e8659a6780539c6ULL, 0xb17c48097161d796ULL, 0x026015213acbd6e2ULL, 0xd1ae9f77e515e901ULL, 0xb7dc776a3f21b0adULL, 0xaba6a1b96eb78098ULL, 0x9bcf4486248d9f5dULL, 0x582666c536455efdULL, 0xfdbdac9bfeb9c6f1ULL, 0xc47999be4163cdeaULL, 0x765540081722a7efULL, 0x3e548ed8ec710751ULL, 0x3d041f67cb51bac2ULL, 0x7958af71ac82d40aULL, 0x36c9da5c047a78feULL, 0xed9a048e33af38b2ULL, 0x26ee7249c96c86bdULL, 0x900281bdeba65d61ULL, 0x11172c8bd0fd9532ULL, 0xea0abf73600434f8ULL, 0x42fc8f75299309f3ULL, 0x34a9cf7d3eb1ae1cULL, 0x2b838811480723baULL, 0x5ce64c8742ceef24ULL, 0x1adae9b01fd6570eULL, 0x3c349bf9d6bad1b3ULL, 0x82453c891c7b75c0ULL, 0x97923a40b80d512bULL, 0x4a61dbf1c198765cULL, 0xb48ce6d518010d3eULL, 0xcfb45c858e480fd6ULL, 0xd933cbf30d1e96aeULL, 0xd70ea014ab558e3aULL, 0xc189376228031742ULL, 0x9262949cd16d8b83ULL, 0xeb3a3bed7def5f89ULL, 0x49314a4ee6b8cbcfULL, 0xdcc3652f647e4c06ULL, 0xda635a4c2a3e2b3dULL, 0x470c21a940f3d35bULL, 0x315961a157d174b4ULL, 0x6672e81dda3459acULL, 0x5b76f77a1165e36eULL, 0x445cb01667d36ec8ULL, 0xc5491d205c88a69bULL, 0x456c34887a3805b9ULL, 0xffddb9bac4721013ULL, 0x99af51a71e4649bfULL, 0xa15be01cbc7729d5ULL, 0x52db2760e485f7b0ULL, 0x8c78576eba306d54ULL, 0xae560f6507d75a30ULL, 0x95f22f6182c687c9ULL, 0x71c5fbf54489aba5ULL, 0xca44f259e728d57eULL, 0x88b87d2ccebbdc8dULL, 0xbab18d32be4a15aaULL, 0x8be8ec93e99b611eULL, 0x17b713e89ebdf209ULL, 0xb31c5d284baa0174ULL, 0xeeca9531148f8521ULL, 0xb8d198138481c348ULL, 0x8988f9b2d350b7fcULL, 0xb9e11c8d996aa839ULL, 0x5a4673e40c8e881fULL, 0x1687977683569978ULL, 0xbf4123eed72acf02ULL, 0x4ea1f1b3b513c785ULL, 0xe767452be16f91ffULL, 0x7505d1b730021a7cULL, 0xa59bca5ec8fc980cULL, 0xad069eda20f7e7a3ULL, 0x38f4b1bba231606aULL, 0x60d2d77e94743e97ULL, 0x9affc0183966f42cULL, 0x248e6768f3a7505fULL, 0xcdd449a4b483d934ULL, 0x87b59255751baf68ULL, 0x1bea6d2e023d3c7fULL, 0x6b1f12455b5ffcabULL, 0x743555292de9710dULL, 0xd8034f6d10f5fddfULL, 0xc6198c9f7ba81b08ULL, 0xbb8109aca3a17edbULL, 0xfa2d1766ad12cabbULL, 0xc729080166437079ULL, 0x9c5fff7b77269317ULL, 0x0000000000000000ULL, 0x15d706c9a47624ebULL, 0x6fdf38072fd44d72ULL, 0x5fb6dd3865ee52b7ULL, 0xa33bf53d86bcff37ULL, 0xe657c1b5fc84fa8eULL, 0xaa962527735cebe9ULL, 0x39c43525bfda0b1bULL, 0x204e4d2a872ce186ULL, 0x7a083ece8ba26999ULL, 0x554b9c9db72efbfaULL, 0xb22cd9b656416a05ULL, 0x96a2bedea5e63a5aULL, 0x802529a826b0a322ULL, 0x8115ad363b5bc853ULL, 0x8375b81701901eb1ULL, 0x3069e53f4a3a1fc5ULL, 0xbd2136cfede119e0ULL, 0x18bafc91251d81ecULL, 0x1d4a524d4c7d5b44ULL, 0x05f0aedc6960daa8ULL, 0x29e39d3072ccf558ULL, 0x70f57f6b5962c0d4ULL, 0x989fd53903ad22ceULL, 0xf84d024797d91c59ULL, 0x547b1803aac5908bULL, 0xf0d056c37fd263f6ULL, 0xd56eb535919e58d8ULL, 0x1c7ad6d351963035ULL, 0x2e7326cd2167f912ULL, 0xac361a443d1c8cd2ULL, 0x697f076461942a49ULL, 0x4b515f6fdc731d2dULL, 0x8ad8680df4700a6fULL, 0x41ac1eca0eb3b460ULL, 0x7d988533d80965d3ULL, 0xa8f6300649973d0bULL, 0x7765c4960ac9cc9eULL, 0x7ca801adc5e20ea2ULL, 0xdea3700e5eb59ae4ULL, 0xa06b6482a19c42a4ULL, 0x6a2f96db46b497daULL, 0x27def6d7d487edccULL, 0x463ca5375d18b82aULL, 0xa6cb5be1efdc259fULL, 0x53eba3fef96e9cc1ULL, 0xce84d81b93a364a7ULL, 0xf4107c810b59d22fULL, 0x333974806d1aa256ULL, 0x0f0def79bba073e5ULL, 0x231edc95a00c5c15ULL, 0xe437d494c64f2c6cULL, 0x91320523f64d3610ULL, 0x67426c83c7df32ddULL, 0x6eefbc99323f2603ULL, 0x9d6f7be56acdf866ULL, 0x5916e25b2bae358cULL, 0x7ff89012e2c2b331ULL, 0x035091bf2720bd93ULL, 0x561b0d22900e4669ULL, 0x28d319ae6f279e29ULL, 0x2f43a2533c8c9263ULL, 0xd09e1be9f8fe8270ULL, 0xf740ed3e2c796fbcULL, 0xdb53ded237d5404cULL, 0x62b2c25faebfe875ULL, 0x0afd41a5d2c0a94dULL, 0x6412fd3ce0ff8f4eULL, 0xe3a76f6995e42026ULL, 0x6c8fa9b808f4f0e1ULL, 0xc2d9a6dd0f23aad1ULL, 0x8f28c6d19d10d0c7ULL, 0x85d587744fd0798aULL, 0xa20b71a39b579446ULL, 0x684f83fa7c7f4138ULL, 0xe507500adba4471dULL, 0x3f640a46f19a6c20ULL, 0x1247bd34f7dd28a1ULL, 0x2d23b77206474481ULL, 0x93521002cc86e0f2ULL, 0x572b89bc8de52d18ULL, 0xfb1d93f8b0f9a1caULL, 0xe95a2ecc4724896bULL, 0x3ba420048511ddf9ULL, 0xd63e248ab6bee54bULL, 0x5dd6c8195f258455ULL, 0x06a03f634e40673bULL, 0x1f2a476c76b68da6ULL, 0x217ec9b49ac78af7ULL, 0xecaa80102e4453c3ULL, 0x14e78257b99d4f9aULL}, { 0x20329b2cc87bba05ULL, 0x4f5eb6f86546a531ULL, 0xd4f44775f751b6b1ULL, 0x8266a47b850dfa8bULL, 0xbb986aa15a6ca985ULL, 0xc979eb08f9ae0f99ULL, 0x2da6f447a2375ea1ULL, 0x1e74275dcd7d8576ULL, 0xbc20180a800bc5f8ULL, 0xb4a2f701b2dc65beULL, 0xe726946f981b6d66ULL, 0x48e6c453bf21c94cULL, 0x42cad9930f0a4195ULL, 0xefa47b64aacccd20ULL, 0x71180a8960409a42ULL, 0x8bb3329bf6a44e0cULL, 0xd34c35de2d36daccULL, 0xa92f5b7cbc23dc96ULL, 0xb31a85aa68bb09c3ULL, 0x13e04836a73161d2ULL, 0xb24dfc4129c51d02ULL, 0x8ae44b70b7da5acdULL, 0xe671ed84d96579a7ULL, 0xa4bb3417d66f3832ULL, 0x4572ab38d56d2de8ULL, 0xb1b47761ea47215cULL, 0xe81c09cf70aba15dULL, 0xffbdb872ce7f90acULL, 0xa8782297fd5dc857ULL, 0x0d946f6b6a4ce4a4ULL, 0xe4df1f4f5b995138ULL, 0x9ebc71edca8c5762ULL, 0x0a2c1dc0b02b88d9ULL, 0x3b503c115d9d7b91ULL, 0xc64376a8111ec3a2ULL, 0xcec199a323c963e4ULL, 0xdc76a87ec58616f7ULL, 0x09d596e073a9b487ULL, 0x14583a9d7d560dafULL, 0xf4c6dc593f2a0cb4ULL, 0xdd21d19584f80236ULL, 0x4a4836983ddde1d3ULL, 0xe58866a41ae745f9ULL, 0xf591a5b27e541875ULL, 0x891dc05074586693ULL, 0x5b068c651810a89eULL, 0xa30346bc0c08544fULL, 0x3dbf3751c684032dULL, 0x2a1e86ec785032dcULL, 0xf73f5779fca830eaULL, 0xb60c05ca30204d21ULL, 0x0cc316802b32f065ULL, 0x8770241bdd96be69ULL, 0xb861e18199ee95dbULL, 0xf805cad91418fcd1ULL, 0x29e70dccbbd20e82ULL, 0xc7140f435060d763ULL, 0x0f3a9da0e8b0cc3bULL, 0xa2543f574d76408eULL, 0xbd7761e1c175d139ULL, 0x4b1f4f737ca3f512ULL, 0x6dc2df1f2fc137abULL, 0xf1d05c3967b14856ULL, 0xa742bf3715ed046cULL, 0x654030141d1697edULL, 0x07b872abda676c7dULL, 0x3ce84eba87fa17ecULL, 0xc1fb0403cb79afdfULL, 0x3e46bc7105063f73ULL, 0x278ae987121cd678ULL, 0xa1adb4778ef47cd0ULL, 0x26dd906c5362c2b9ULL, 0x05168060589b44e2ULL, 0xfbfc41f9d79ac08fULL, 0x0e6de44ba9ced8faULL, 0x9feb08068bf243a3ULL, 0x7b341749d06b129bULL, 0x229c69e74a87929aULL, 0xe09ee6c4427c011bULL, 0x5692e30e725c4c3aULL, 0xda99a33e5e9f6e4bULL, 0x353dd85af453a36bULL, 0x25241b4c90e0fee7ULL, 0x5de987258309d022ULL, 0xe230140fc0802984ULL, 0x93281e86a0c0b3c6ULL, 0xf229d719a4337408ULL, 0x6f6c2dd4ad3d1f34ULL, 0x8ea5b2fbae3f0aeeULL, 0x8331dd90c473ee4aULL, 0x346aa1b1b52db7aaULL, 0xdf8f235e06042aa9ULL, 0xcc6f6b68a1354b7bULL, 0x6c95a6f46ebf236aULL, 0x52d31a856bb91c19ULL, 0x1a35ded6d498d555ULL, 0xf37eaef2e54d60c9ULL, 0x72e181a9a3c2a61cULL, 0x98537aad51952fdeULL, 0x16f6c856ffaa2530ULL, 0xd960281e9d1d5215ULL, 0x3a0745fa1ce36f50ULL, 0x0b7b642bf1559c18ULL, 0x59a87eae9aec8001ULL, 0x5e100c05408bec7cULL, 0x0441f98b19e55023ULL, 0xd70dcc5534d38aefULL, 0x927f676de1bea707ULL, 0x9769e70db925e3e5ULL, 0x7a636ea29115065aULL, 0x468b201816ef11b6ULL, 0xab81a9b73edff409ULL, 0xc0ac7de88a07bb1eULL, 0x1f235eb68c0391b7ULL, 0x6056b074458dd30fULL, 0xbe8eeac102f7ed67ULL, 0xcd381283e04b5fbaULL, 0x5cbefecec277c4e3ULL, 0xd21b4c356c48ce0dULL, 0x1019c31664b35d8cULL, 0x247362a7d19eea26ULL, 0xebe582efb3299d03ULL, 0x02aef2cb82fc289fULL, 0x86275df09ce8aaa8ULL, 0x28b07427faac1a43ULL, 0x38a9b7319e1f47cfULL, 0xc82e92e3b8d01b58ULL, 0x06ef0b409b1978bcULL, 0x62f842bfc771fb90ULL, 0x9904034610eb3b1fULL, 0xded85ab5477a3e68ULL, 0x90d195a663428f98ULL, 0x5384636e2ac708d8ULL, 0xcbd719c37b522706ULL, 0xae9729d76644b0ebULL, 0x7c8c65e20a0c7ee6ULL, 0x80c856b007f1d214ULL, 0x8c0b40302cc32271ULL, 0xdbcedad51fe17a8aULL, 0x740e8ae938dbdea0ULL, 0xa615c6dc549310adULL, 0x19cc55f6171ae90bULL, 0x49b1bdb8fe5fdd8dULL, 0xed0a89af2830e5bfULL, 0x6a7aadb4f5a65bd6ULL, 0x7e22972988f05679ULL, 0xf952b3325566e810ULL, 0x39fecedadf61530eULL, 0x6101c99f04f3c7ceULL, 0x2e5f7f6761b562ffULL, 0xf08725d226cf5c97ULL, 0x63af3b54860fef51ULL, 0x8ff2cb10ef411e2fULL, 0x884ab9bb35267252ULL, 0x4df04433e7ba8daeULL, 0x9afd8866d3690741ULL, 0x66b9bb34de94abb3ULL, 0x9baaf18d92171380ULL, 0x543c11c5f0a064a5ULL, 0x17a1b1bdbed431f1ULL, 0xb5f58eeaf3a2717fULL, 0xc355f6c849858740ULL, 0xec5df044694ef17eULL, 0xd83751f5dc6346d4ULL, 0xfc4433520dfdacf2ULL, 0x0000000000000000ULL, 0x5a51f58e596ebc5fULL, 0x3285aaf12e34cf16ULL, 0x8d5c39db6dbd36b0ULL, 0x12b731dde64f7513ULL, 0x94906c2d7aa7dfbbULL, 0x302b583aacc8e789ULL, 0x9d45facd090e6b3cULL, 0x2165e2c78905aec4ULL, 0x68d45f7f775a7349ULL, 0x189b2c1d5664fdcaULL, 0xe1c99f2f030215daULL, 0x6983269436246788ULL, 0x8489af3b1e148237ULL, 0xe94b702431d5b59cULL, 0x33d2d31a6f4adbd7ULL, 0xbfd9932a4389f9a6ULL, 0xb0e30e8aab39359dULL, 0xd1e2c715afcaf253ULL, 0x150f43763c28196eULL, 0xc4ed846393e2eb3dULL, 0x03f98b20c3823c5eULL, 0xfd134ab94c83b833ULL, 0x556b682eb1de7064ULL, 0x36c4537a37d19f35ULL, 0x7559f30279a5ca61ULL, 0x799ae58252973a04ULL, 0x9c12832648707ffdULL, 0x78cd9c6913e92ec5ULL, 0x1d8dac7d0effb928ULL, 0x439da0784e745554ULL, 0x413352b3cc887dcbULL, 0xbacf134a1b12bd44ULL, 0x114ebafd25cd494dULL, 0x2f08068c20cb763eULL, 0x76a07822ba27f63fULL, 0xeab2fb04f25789c2ULL, 0xe3676de481fe3d45ULL, 0x1b62a73d95e6c194ULL, 0x641749ff5c68832cULL, 0xa5ec4dfc97112cf3ULL, 0xf6682e92bdd6242bULL, 0x3f11c59a44782bb2ULL, 0x317c21d1edb6f348ULL, 0xd65ab5be75ad9e2eULL, 0x6b2dd45fb4d84f17ULL, 0xfaab381296e4d44eULL, 0xd0b5befeeeb4e692ULL, 0x0882ef0b32d7a046ULL, 0x512a91a5a83b2047ULL, 0x963e9ee6f85bf724ULL, 0x4e09cf132438b1f0ULL, 0x77f701c9fb59e2feULL, 0x7ddb1c094b726a27ULL, 0x5f4775ee01f5f8bdULL, 0x9186ec4d223c9b59ULL, 0xfeeac1998f01846dULL, 0xac39db1ce4b89874ULL, 0xb75b7c21715e59e0ULL, 0xafc0503c273aa42aULL, 0x6e3b543fec430bf5ULL, 0x704f7362213e8e83ULL, 0x58ff0745db9294c0ULL, 0x67eec2df9feabf72ULL, 0xa0facd9ccf8a6811ULL, 0xb936986ad890811aULL, 0x95c715c63bd9cb7aULL, 0xca8060283a2c33c7ULL, 0x507de84ee9453486ULL, 0x85ded6d05f6a96f6ULL, 0x1cdad5964f81ade9ULL, 0xd5a33e9eb62fa270ULL, 0x40642b588df6690aULL, 0x7f75eec2c98e42b8ULL, 0x2cf18dace3494a60ULL, 0x23cb100c0bf9865bULL, 0xeef3028febb2d9e1ULL, 0x4425d2d394133929ULL, 0xaad6d05c7fa1e0c8ULL, 0xad6ea2f7a5c68cb5ULL, 0xc2028f2308fb9381ULL, 0x819f2f5b468fc6d5ULL, 0xc5bafd88d29cfffcULL, 0x47dc59f357910577ULL, 0x2b49ff07392e261dULL, 0x57c59ae5332258fbULL, 0x73b6f842e2bcb2ddULL, 0xcf96e04862b77725ULL, 0x4ca73dd8a6c4996fULL, 0x015779eb417e14c1ULL, 0x37932a9176af8bf4ULL}, { 0x190a2c9b249df23eULL, 0x2f62f8b62263e1e9ULL, 0x7a7f754740993655ULL, 0x330b7ba4d5564d9fULL, 0x4c17a16a46672582ULL, 0xb22f08eb7d05f5b8ULL, 0x535f47f40bc148ccULL, 0x3aec5d27d4883037ULL, 0x10ed0a1825438f96ULL, 0x516101f72c233d17ULL, 0x13cc6f949fd04eaeULL, 0x739853c441474bfdULL, 0x653793d90d3f5b1bULL, 0x5240647b96b0fc2fULL, 0x0c84890ad27623e0ULL, 0xd7189b32703aaea3ULL, 0x2685de3523bd9c41ULL, 0x99317c5b11bffefaULL, 0x0d9baa854f079703ULL, 0x70b93648fbd48ac5ULL, 0xa80441fce30bc6beULL, 0x7287704bdc36ff1eULL, 0xb65384ed33dc1f13ULL, 0xd36417343ee34408ULL, 0x39cd38ab6e1bf10fULL, 0x5ab861770a1f3564ULL, 0x0ebacf09f594563bULL, 0xd04572b884708530ULL, 0x3cae9722bdb3af47ULL, 0x4a556b6f2f5cbaf2ULL, 0xe1704f1f76c4bd74ULL, 0x5ec4ed7144c6dfcfULL, 0x16afc01d4c7810e6ULL, 0x283f113cd629ca7aULL, 0xaf59a8761741ed2dULL, 0xeed5a3991e215facULL, 0x3bf37ea849f984d4ULL, 0xe413e096a56ce33cULL, 0x2c439d3a98f020d1ULL, 0x637559dc6404c46bULL, 0x9e6c95d1e5f5d569ULL, 0x24bb9836045fe99aULL, 0x44efa466dac8ecc9ULL, 0xc6eab2a5c80895d6ULL, 0x803b50c035220cc4ULL, 0x0321658cba93c138ULL, 0x8f9ebc465dc7ee1cULL, 0xd15a5137190131d3ULL, 0x0fa5ec8668e5e2d8ULL, 0x91c979578d1037b1ULL, 0x0642ca05693b9f70ULL, 0xefca80168350eb4fULL, 0x38d21b24f36a45ecULL, 0xbeab81e1af73d658ULL, 0x8cbfd9cae7542f24ULL, 0xfd19cc0d81f11102ULL, 0x0ac6430fbb4dbc90ULL, 0x1d76a09d6a441895ULL, 0x2a01573ff1cbbfa1ULL, 0xb572e161894fde2bULL, 0x8124734fa853b827ULL, 0x614b1fdf43e6b1b0ULL, 0x68ac395c4238cc18ULL, 0x21d837bfd7f7b7d2ULL, 0x20c714304a860331ULL, 0x5cfaab726324aa14ULL, 0x74c5ba4eb50d606eULL, 0xf3a3030474654739ULL, 0x23e671bcf015c209ULL, 0x45f087e947b9582aULL, 0xd8bd77b418df4c7bULL, 0xe06f6c90ebb50997ULL, 0x0bd96080263c0873ULL, 0x7e03f9410e40dcfeULL, 0xb8e94be4c6484928ULL, 0xfb5b0608e8ca8e72ULL, 0x1a2b49179e0e3306ULL, 0x4e29e76961855059ULL, 0x4f36c4e6fcf4e4baULL, 0x49740ee395cf7bcaULL, 0xc2963ea386d17f7dULL, 0x90d65ad810618352ULL, 0x12d34c1b02a1fa4dULL, 0xfa44258775bb3a91ULL, 0x18150f14b9ec46ddULL, 0x1491861e6b9a653dULL, 0x9a1019d7ab2c3fc2ULL, 0x3668d42d06fe13d7ULL, 0xdcc1fbb25606a6d0ULL, 0x969490dd795a1c22ULL, 0x3549b1a1bc6dd2efULL, 0xc94f5e23a0ed770eULL, 0xb9f6686b5b39fdcbULL, 0xc4d4f4a6efeae00dULL, 0xe732851a1fff2204ULL, 0x94aad6de5eb869f9ULL, 0x3f8ff2ae07206e7fULL, 0xfe38a9813b62d03aULL, 0xa7a1ad7a8bee2466ULL, 0x7b6056c8dde882b6ULL, 0x302a1e286fc58ca7ULL, 0x8da0fa457a259bc7ULL, 0xb3302b64e074415bULL, 0x5402ae7eff8b635fULL, 0x08f8050c9cafc94bULL, 0xae468bf98a3059ceULL, 0x88c355cca98dc58fULL, 0xb10e6d67c7963480ULL, 0xbad70de7e1aa3cf3ULL, 0xbfb4a26e320262bbULL, 0xcb711820870f02d5ULL, 0xce12b7a954a75c9dULL, 0x563ce87dd8691684ULL, 0x9f73b65e7884618aULL, 0x2b1e74b06cba0b42ULL, 0x47cec1ea605b2df1ULL, 0x1c698312f735ac76ULL, 0x5fdbcefed9b76b2cULL, 0x831a354c8fb1cdfcULL, 0x820516c312c0791fULL, 0xb74ca762aeadabf0ULL, 0xfc06ef821c80a5e1ULL, 0x5723cbf24518a267ULL, 0x9d4df05d5f661451ULL, 0x588627742dfd40bfULL, 0xda8331b73f3d39a0ULL, 0x17b0e392d109a405ULL, 0xf965400bcf28fba9ULL, 0x7c3dbf4229a2a925ULL, 0x023e460327e275dbULL, 0x6cd0b55a0ce126b3ULL, 0xe62da695828e96e7ULL, 0x42ad6e63b3f373b9ULL, 0xe50cc319381d57dfULL, 0xc5cbd729729b54eeULL, 0x46d1e265fd2a9912ULL, 0x6428b056904eeff8ULL, 0x8be23040131e04b7ULL, 0x6709d5da2add2ec0ULL, 0x075de98af44a2b93ULL, 0x8447dcc67bfbe66fULL, 0x6616f655b7ac9a23ULL, 0xd607b8bded4b1a40ULL, 0x0563af89d3a85e48ULL, 0x3db1b4ad20c21ba4ULL, 0x11f22997b8323b75ULL, 0x292032b34b587e99ULL, 0x7f1cdace9331681dULL, 0x8e819fc9c0b65affULL, 0xa1e3677fe2d5bb16ULL, 0xcd33d225ee349da5ULL, 0xd9a2543b85aef898ULL, 0x795e10cbfa0af76dULL, 0x25a4bbb9992e5d79ULL, 0x78413344677b438eULL, 0xf0826688cef68601ULL, 0xd27b34bba392f0ebULL, 0x551d8df162fad7bcULL, 0x1e57c511d0d7d9adULL, 0xdeffbdb171e4d30bULL, 0xf4feea8e802f6caaULL, 0xa480c8f6317de55eULL, 0xa0fc44f07fa40ff5ULL, 0x95b5f551c3c9dd1aULL, 0x22f952336d6476eaULL, 0x0000000000000000ULL, 0xa6be8ef5169f9085ULL, 0xcc2cf1aa73452946ULL, 0x2e7ddb39bf12550aULL, 0xd526dd3157d8db78ULL, 0x486b2d6c08becf29ULL, 0x9b0f3a58365d8b21ULL, 0xac78cdfaadd22c15ULL, 0xbc95c7e28891a383ULL, 0x6a927f5f65dab9c3ULL, 0xc3891d2c1ba0cb9eULL, 0xeaa92f9f50f8b507ULL, 0xcf0d9426c9d6e87eULL, 0xca6e3baf1a7eb636ULL, 0xab25247059980786ULL, 0x69b31ad3df4978fbULL, 0xe2512a93cc577c4cULL, 0xff278a0ea61364d9ULL, 0x71a615c766a53e26ULL, 0x89dc764334fc716cULL, 0xf87a638452594f4aULL, 0xf2bc208be914f3daULL, 0x8766b94ac1682757ULL, 0xbbc82e687cdb8810ULL, 0x626a7a53f9757088ULL, 0xa2c202f358467a2eULL, 0x4d0882e5db169161ULL, 0x09e7268301de7da8ULL, 0xe897699c771ac0dcULL, 0xc8507dac3d9cc3edULL, 0xc0a878a0a1330aa6ULL, 0x978bb352e42ba8c1ULL, 0xe9884a13ea6b743fULL, 0x279afdbabecc28a2ULL, 0x047c8c064ed9eaabULL, 0x507e2278b15289f4ULL, 0x599904fbb08cf45cULL, 0xbd8ae46d15e01760ULL, 0x31353da7f2b43844ULL, 0x8558ff49e68a528cULL, 0x76fbfc4d92ef15b5ULL, 0x3456922e211c660cULL, 0x86799ac55c1993b4ULL, 0x3e90d1219a51da9cULL, 0x2d5cbeb505819432ULL, 0x982e5fd48cce4a19ULL, 0xdb9c1238a24c8d43ULL, 0xd439febecaa96f9bULL, 0x418c0bef0960b281ULL, 0x158ea591f6ebd1deULL, 0x1f48e69e4da66d4eULL, 0x8afd13cf8e6fb054ULL, 0xf5e1c9011d5ed849ULL, 0xe34e091c5126c8afULL, 0xad67ee7530a398f6ULL, 0x43b24dec2e82c75aULL, 0x75da99c1287cd48dULL, 0x92e81cdb3783f689ULL, 0xa3dd217cc537cecdULL, 0x60543c50de970553ULL, 0x93f73f54aaf2426aULL, 0xa91b62737e7a725dULL, 0xf19d4507538732e2ULL, 0x77e4dfc20f9ea156ULL, 0x7d229ccdb4d31dc6ULL, 0x1b346a98037f87e5ULL, 0xedf4c615a4b29e94ULL, 0x4093286094110662ULL, 0xb0114ee85ae78063ULL, 0x6ff1d0d6b672e78bULL, 0x6dcf96d591909250ULL, 0xdfe09e3eec9567e8ULL, 0x3214582b4827f97cULL, 0xb46dc2ee143e6ac8ULL, 0xf6c0ac8da7cd1971ULL, 0xebb60c10cd8901e4ULL, 0xf7df8f023abcad92ULL, 0x9c52d3d2c217a0b2ULL, 0x6b8d5cd0f8ab0d20ULL, 0x3777f7a29b8fa734ULL, 0x011f238f9d71b4e3ULL, 0xc1b75b2f3c42be45ULL, 0x5de588fdfe551ef7ULL, 0x6eeef3592b035368ULL, 0xaa3a07ffc4e9b365ULL, 0xecebe59a39c32a77ULL, 0x5ba742f8976e8187ULL, 0x4b4a48e0b22d0e11ULL, 0xddded83dcb771233ULL, 0xa59feb79ac0c51bdULL, 0xc7f5912a55792135ULL}, { 0x6d6ae04668a9b08aULL, 0x3ab3f04b0be8c743ULL, 0xe51e166b54b3c908ULL, 0xbe90a9eb35c2f139ULL, 0xb2c7066637f2bec1ULL, 0xaa6945613392202cULL, 0x9a28c36f3b5201ebULL, 0xddce5a93ab536994ULL, 0x0e34133ef6382827ULL, 0x52a02ba1ec55048bULL, 0xa2f88f97c4b2a177ULL, 0x8640e513ca2251a5ULL, 0xcdf1d36258137622ULL, 0xfe6cb708dedf8ddbULL, 0x8a174a9ec8121e5dULL, 0x679896036b81560eULL, 0x59ed033395795feeULL, 0x1dd778ab8b74edafULL, 0xee533ef92d9f926dULL, 0x2a8c79baf8a8d8f5ULL, 0x6bcf398e69b119f6ULL, 0xe20491742fafdd95ULL, 0x276488e0809c2aecULL, 0xea955b82d88f5cceULL, 0x7102c63a99d9e0c4ULL, 0xf9763017a5c39946ULL, 0x429fa2501f151b3dULL, 0x4659c72bea05d59eULL, 0x984b7fdccf5a6634ULL, 0xf742232953fbb161ULL, 0x3041860e08c021c7ULL, 0x747bfd9616cd9386ULL, 0x4bb1367192312787ULL, 0x1b72a1638a6c44d3ULL, 0x4a0e68a6e8359a66ULL, 0x169a5039f258b6caULL, 0xb98a2ef44edee5a4ULL, 0xd9083fe85e43a737ULL, 0x967f6ce239624e13ULL, 0x8874f62d3c1a7982ULL, 0x3c1629830af06e3fULL, 0x9165ebfd427e5a8eULL, 0xb5dd81794ceeaa5cULL, 0x0de8f15a7834f219ULL, 0x70bd98ede3dd5d25ULL, 0xaccc9ca9328a8950ULL, 0x56664eda1945ca28ULL, 0x221db34c0f8859aeULL, 0x26dbd637fa98970dULL, 0x1acdffb4f068f932ULL, 0x4585254f64090fa0ULL, 0x72de245e17d53afaULL, 0x1546b25d7c546cf4ULL, 0x207e0ffffb803e71ULL, 0xfaaad2732bcf4378ULL, 0xb462dfae36ea17bdULL, 0xcf926fd1ac1b11fdULL, 0xe0672dc7dba7ba4aULL, 0xd3fa49ad5d6b41b3ULL, 0x8ba81449b216a3bcULL, 0x14f9ec8a0650d115ULL, 0x40fc1ee3eb1d7ce2ULL, 0x23a2ed9b758ce44fULL, 0x782c521b14fddc7eULL, 0x1c68267cf170504eULL, 0xbcf31558c1ca96e6ULL, 0xa781b43b4ba6d235ULL, 0xf6fd7dfe29ff0c80ULL, 0xb0a4bad5c3fad91eULL, 0xd199f51ea963266cULL, 0x414340349119c103ULL, 0x5405f269ed4dadf7ULL, 0xabd61bb649969dcdULL, 0x6813dbeae7bdc3c8ULL, 0x65fb2ab09f8931d1ULL, 0xf1e7fae152e3181dULL, 0xc1a67cef5a2339daULL, 0x7a4feea8e0f5bba1ULL, 0x1e0b9acf05783791ULL, 0x5b8ebf8061713831ULL, 0x80e53cdbcb3af8d9ULL, 0x7e898bd315e57502ULL, 0xc6bcfbf0213f2d47ULL, 0x95a38e86b76e942dULL, 0x092e94218d243cbaULL, 0x8339debf453622e7ULL, 0xb11be402b9fe64ffULL, 0x57d9100d634177c9ULL, 0xcc4e8db52217cbc3ULL, 0x3b0cae9c71ec7aa2ULL, 0xfb158ca451cbfe99ULL, 0x2b33276d82ac6514ULL, 0x01bf5ed77a04bde1ULL, 0xc5601994af33f779ULL, 0x75c4a3416cc92e67ULL, 0xf3844652a6eb7fc2ULL, 0x3487e375fdd0ef64ULL, 0x18ae430704609eedULL, 0x4d14efb993298efbULL, 0x815a620cb13e4538ULL, 0x125c354207487869ULL, 0x9eeea614ce42cf48ULL, 0xce2d3106d61fac1cULL, 0xbbe99247bad6827bULL, 0x071a871f7b1c149dULL, 0x2e4a1cc10db81656ULL, 0x77a71ff298c149b8ULL, 0x06a5d9c80118a97cULL, 0xad73c27e488e34b1ULL, 0x443a7b981e0db241ULL, 0xe3bbcfa355ab6074ULL, 0x0af276450328e684ULL, 0x73617a896dd1871bULL, 0x58525de4ef7de20fULL, 0xb7be3dcab8e6cd83ULL, 0x19111dd07e64230cULL, 0x842359a03e2a367aULL, 0x103f89f1f3401fb6ULL, 0xdc710444d157d475ULL, 0xb835702334da5845ULL, 0x4320fc876511a6dcULL, 0xd026abc9d3679b8dULL, 0x17250eee885c0b2bULL, 0x90dab52a387ae76fULL, 0x31fed8d972c49c26ULL, 0x89cba8fa461ec463ULL, 0x2ff5421677bcabb7ULL, 0x396f122f85e41d7dULL, 0xa09b332430bac6a8ULL, 0xc888e8ced7070560ULL, 0xaeaf201ac682ee8fULL, 0x1180d7268944a257ULL, 0xf058a43628e7a5fcULL, 0xbd4c4b8fbbce2b07ULL, 0xa1246df34abe7b49ULL, 0x7d5569b79be9af3cULL, 0xa9b5a705bd9efa12ULL, 0xdb6b835baa4bc0e8ULL, 0x05793bac8f147342ULL, 0x21c1512881848390ULL, 0xfdb0556c50d357e5ULL, 0x613d4fcb6a99ff72ULL, 0x03dce2648e0cda3eULL, 0xe949b9e6568386f0ULL, 0xfc0f0bbb2ad7ea04ULL, 0x6a70675913b5a417ULL, 0x7f36d5046fe1c8e3ULL, 0x0c57af8d02304ff8ULL, 0x32223abdfcc84618ULL, 0x0891caf6f720815bULL, 0xa63eeaec31a26fd4ULL, 0x2507345374944d33ULL, 0x49d28ac266394058ULL, 0xf5219f9aa7f3d6beULL, 0x2d96fea583b4cc68ULL, 0x5a31e1571b7585d0ULL, 0x8ed12fe53d02d0feULL, 0xdfade6205f5b0e4bULL, 0x4cabb16ee92d331aULL, 0x04c6657bf510cea3ULL, 0xd73c2cd6a87b8f10ULL, 0xe1d87310a1a307abULL, 0x6cd5be9112ad0d6bULL, 0x97c032354366f3f2ULL, 0xd4e0ceb22677552eULL, 0x0000000000000000ULL, 0x29509bde76a402cbULL, 0xc27a9e8bd42fe3e4ULL, 0x5ef7842cee654b73ULL, 0xaf107ecdbc86536eULL, 0x3fcacbe784fcb401ULL, 0xd55f90655c73e8cfULL, 0xe6c2f40fdabf1336ULL, 0xe8f6e7312c873b11ULL, 0xeb2a0555a28be12fULL, 0xe4a148bc2eb774e9ULL, 0x9b979db84156bc0aULL, 0x6eb60222e6a56ab4ULL, 0x87ffbbc4b026ec44ULL, 0xc703a5275b3b90a6ULL, 0x47e699fc9001687fULL, 0x9c8d1aa73a4aa897ULL, 0x7cea3760e1ed12ddULL, 0x4ec80ddd1d2554c5ULL, 0x13e36b957d4cc588ULL, 0x5d2b66486069914dULL, 0x92b90999cc7280b0ULL, 0x517cc9c56259deb5ULL, 0xc937b619ad03b881ULL, 0xec30824ad997f5b2ULL, 0xa45d565fc5aa080bULL, 0xd6837201d27f32f1ULL, 0x635ef3789e9198adULL, 0x531f75769651b96aULL, 0x4f77530a6721e924ULL, 0x486dd4151c3dfdb9ULL, 0x5f48dafb9461f692ULL, 0x375b011173dc355aULL, 0x3da9775470f4d3deULL, 0x8d0dcd81b30e0ac0ULL, 0x36e45fc609d888bbULL, 0x55baacbe97491016ULL, 0x8cb29356c90ab721ULL, 0x76184125e2c5f459ULL, 0x99f4210bb55edbd5ULL, 0x6f095cf59ca1d755ULL, 0x9f51f8c3b44672a9ULL, 0x3538bda287d45285ULL, 0x50c39712185d6354ULL, 0xf23b1885dcefc223ULL, 0x79930ccc6ef9619fULL, 0xed8fdc9da3934853ULL, 0xcb540aaa590bdf5eULL, 0x5c94389f1a6d2cacULL, 0xe77daad8a0bbaed7ULL, 0x28efc5090ca0bf2aULL, 0xbf2ff73c4fc64cd8ULL, 0xb37858b14df60320ULL, 0xf8c96ec0dfc724a7ULL, 0x828680683f329f06ULL, 0x941cd051cd6a29ccULL, 0xc3c5c05cae2b5e05ULL, 0xb601631dc2e27062ULL, 0xc01922382027843bULL, 0x24b86a840e90f0d2ULL, 0xd245177a276ffc52ULL, 0x0f8b4de98c3c95c6ULL, 0x3e759530fef809e0ULL, 0x0b4d2892792c5b65ULL, 0xc4df4743d5374a98ULL, 0xa5e20888bfaeb5eaULL, 0xba56cc90c0d23f9aULL, 0x38d04cf8ffe0a09cULL, 0x62e1adafe495254cULL, 0x0263bcb3f40867dfULL, 0xcaeb547d230f62bfULL, 0x6082111c109d4293ULL, 0xdad4dd8cd04f7d09ULL, 0xefec602e579b2f8cULL, 0x1fb4c4187f7c8a70ULL, 0xffd3e9dfa4db303aULL, 0x7bf0b07f9af10640ULL, 0xf49ec14dddf76b5fULL, 0x8f6e713247066d1fULL, 0x339d646a86ccfbf9ULL, 0x64447467e58d8c30ULL, 0x2c29a072f9b07189ULL, 0xd8b7613f24471ad6ULL, 0x6627c8d41185ebefULL, 0xa347d140beb61c96ULL, 0xde12b8f7255fb3aaULL, 0x9d324470404e1576ULL, 0x9306574eb6763d51ULL, 0xa80af9d2c79a47f3ULL, 0x859c0777442e8b9bULL, 0x69ac853d9db97e29ULL}, { 0xc3407dfc2de6377eULL, 0x5b9e93eea4256f77ULL, 0xadb58fdd50c845e0ULL, 0x5219ff11a75bed86ULL, 0x356b61cfd90b1de9ULL, 0xfb8f406e25abe037ULL, 0x7a5a0231c0f60796ULL, 0x9d3cd216e1f5020bULL, 0x0c6550fb6b48d8f3ULL, 0xf57508c427ff1c62ULL, 0x4ad35ffa71cb407dULL, 0x6290a2da1666aa6dULL, 0xe284ec2349355f9fULL, 0xb3c307c53d7c84ecULL, 0x05e23c0468365a02ULL, 0x190bac4d6c9ebfa8ULL, 0x94bbbee9e28b80faULL, 0xa34fc777529cb9b5ULL, 0xcc7b39f095bcd978ULL, 0x2426addb0ce532e3ULL, 0x7e79329312ce4fc7ULL, 0xab09a72eebec2917ULL, 0xf8d15499f6b9d6c2ULL, 0x1a55b8babf8c895dULL, 0xdb8add17fb769a85ULL, 0xb57f2f368658e81bULL, 0x8acd36f18f3f41f6ULL, 0x5ce3b7bba50f11d3ULL, 0x114dcc14d5ee2f0aULL, 0xb91a7fcded1030e8ULL, 0x81d5425fe55de7a1ULL, 0xb6213bc1554adeeeULL, 0x80144ef95f53f5f2ULL, 0x1e7688186db4c10cULL, 0x3b912965db5fe1bcULL, 0xc281715a97e8252dULL, 0x54a5d7e21c7f8171ULL, 0x4b12535ccbc5522eULL, 0x1d289cefbea6f7f9ULL, 0x6ef5f2217d2e729eULL, 0xe6a7dc819b0d17ceULL, 0x1b94b41c05829b0eULL, 0x33d7493c622f711eULL, 0xdcf7f942fa5ce421ULL, 0x600fba8b7f7a8ecbULL, 0x46b60f011a83988eULL, 0x235b898e0dcf4c47ULL, 0x957ab24f588592a9ULL, 0x4354330572b5c28cULL, 0xa5f3ef84e9b8d542ULL, 0x8c711e02341b2d01ULL, 0x0b1874ae6a62a657ULL, 0x1213d8e306fc19ffULL, 0xfe6d7c6a4d9dba35ULL, 0x65ed868f174cd4c9ULL, 0x88522ea0e6236550ULL, 0x899322065c2d7703ULL, 0xc01e690bfef4018bULL, 0x915982ed8abddaf8ULL, 0xbe675b98ec3a4e4cULL, 0xa996bf7f82f00db1ULL, 0xe1daf8d49a27696aULL, 0x2effd5d3dc8986e7ULL, 0xd153a51f2b1a2e81ULL, 0x18caa0ebd690adfbULL, 0x390e3134b243c51aULL, 0x2778b92cdff70416ULL, 0x029f1851691c24a6ULL, 0x5e7cafeacc133575ULL, 0xfa4e4cc89fa5f264ULL, 0x5a5f9f481e2b7d24ULL, 0x484c47ab18d764dbULL, 0x400a27f2a1a7f479ULL, 0xaeeb9b2a83da7315ULL, 0x721c626879869734ULL, 0x042330a2d2384851ULL, 0x85f672fd3765aff0ULL, 0xba446b3a3e02061dULL, 0x73dd6ecec3888567ULL, 0xffac70ccf793a866ULL, 0xdfa9edb5294ed2d4ULL, 0x6c6aea7014325638ULL, 0x834a5a0e8c41c307ULL, 0xcdba35562fb2cb2bULL, 0x0ad97808d06cb404ULL, 0x0f3b440cb85aee06ULL, 0xe5f9c876481f213bULL, 0x98deee1289c35809ULL, 0x59018bbfcd394bd1ULL, 0xe01bf47220297b39ULL, 0xde68e1139340c087ULL, 0x9fa3ca4788e926adULL, 0xbb85679c840c144eULL, 0x53d8f3b71d55ffd5ULL, 0x0da45c5dd146caa0ULL, 0x6f34fe87c72060cdULL, 0x57fbc315cf6db784ULL, 0xcee421a1fca0fddeULL, 0x3d2d0196607b8d4bULL, 0x642c8a29ad42c69aULL, 0x14aff010bdd87508ULL, 0xac74837beac657b3ULL, 0x3216459ad821634dULL, 0x3fb219c70967a9edULL, 0x06bc28f3bb246cf7ULL, 0xf2082c9126d562c6ULL, 0x66b39278c45ee23cULL, 0xbd394f6f3f2878b9ULL, 0xfd33689d9e8f8cc0ULL, 0x37f4799eb017394fULL, 0x108cc0b26fe03d59ULL, 0xda4bd1b1417888d6ULL, 0xb09d1332ee6eb219ULL, 0x2f3ed975668794b4ULL, 0x58c0871977375982ULL, 0x7561463d78ace990ULL, 0x09876cff037e82f1ULL, 0x7fb83e35a8c05d94ULL, 0x26b9b58a65f91645ULL, 0xef20b07e9873953fULL, 0x3148516d0b3355b8ULL, 0x41cb2b541ba9e62aULL, 0x790416c613e43163ULL, 0xa011d380818e8f40ULL, 0x3a5025c36151f3efULL, 0xd57095bdf92266d0ULL, 0x498d4b0da2d97688ULL, 0x8b0c3a57353153a5ULL, 0x21c491df64d368e1ULL, 0x8f2f0af5e7091bf4ULL, 0x2da1c1240f9bb012ULL, 0xc43d59a92ccc49daULL, 0xbfa6573e56345c1fULL, 0x828b56a8364fd154ULL, 0x9a41f643e0df7cafULL, 0xbcf843c985266aeaULL, 0x2b1de9d7b4bfdce5ULL, 0x20059d79dedd7ab2ULL, 0x6dabe6d6ae3c446bULL, 0x45e81bf6c991ae7bULL, 0x6351ae7cac68b83eULL, 0xa432e32253b6c711ULL, 0xd092a9b991143cd2ULL, 0xcac711032e98b58fULL, 0xd8d4c9e02864ac70ULL, 0xc5fc550f96c25b89ULL, 0xd7ef8dec903e4276ULL, 0x67729ede7e50f06fULL, 0xeac28c7af045cf3dULL, 0xb15c1f945460a04aULL, 0x9cfddeb05bfb1058ULL, 0x93c69abce3a1fe5eULL, 0xeb0380dc4a4bdd6eULL, 0xd20db1e8f8081874ULL, 0x229a8528b7c15e14ULL, 0x44291750739fbc28ULL, 0xd3ccbd4e42060a27ULL, 0xf62b1c33f4ed2a97ULL, 0x86a8660ae4779905ULL, 0xd62e814a2a305025ULL, 0x477703a7a08d8addULL, 0x7b9b0e977af815c5ULL, 0x78c51a60a9ea2330ULL, 0xa6adfb733aaae3b7ULL, 0x97e5aa1e3199b60fULL, 0x0000000000000000ULL, 0xf4b404629df10e31ULL, 0x5564db44a6719322ULL, 0x9207961a59afec0dULL, 0x9624a6b88b97a45cULL, 0x363575380a192b1cULL, 0x2c60cd82b595a241ULL, 0x7d272664c1dc7932ULL, 0x7142769faa94a1c1ULL, 0xa1d0df263b809d13ULL, 0x1630e841d4c451aeULL, 0xc1df65ad44fa13d8ULL, 0x13d2d445bcf20bacULL, 0xd915c546926abe23ULL, 0x38cf3d92084dd749ULL, 0xe766d0272103059dULL, 0xc7634d5effde7f2fULL, 0x077d2455012a7ea4ULL, 0xedbfa82ff16fb199ULL, 0xaf2a978c39d46146ULL, 0x42953fa3c8bbd0dfULL, 0xcb061da59496a7dcULL, 0x25e7a17db6eb20b0ULL, 0x34aa6d6963050fbaULL, 0xa76cf7d580a4f1e4ULL, 0xf7ea10954ee338c4ULL, 0xfcf2643b24819e93ULL, 0xcf252d0746aeef8dULL, 0x4ef06f58a3f3082cULL, 0x563acfb37563a5d7ULL, 0x5086e740ce47c920ULL, 0x2982f186dda3f843ULL, 0x87696aac5e798b56ULL, 0x5d22bb1d1f010380ULL, 0x035e14f7d31236f5ULL, 0x3cec0d30da759f18ULL, 0xf3c920379cdb7095ULL, 0xb8db736b571e22bbULL, 0xdd36f5e44052f672ULL, 0xaac8ab8851e23b44ULL, 0xa857b3d938fe1fe2ULL, 0x17f1e4e76eca43fdULL, 0xec7ea4894b61a3caULL, 0x9e62c6e132e734feULL, 0xd4b1991b432c7483ULL, 0x6ad6c283af163acfULL, 0x1ce9904904a8e5aaULL, 0x5fbda34c761d2726ULL, 0xf910583f4cb7c491ULL, 0xc6a241f845d06d7cULL, 0x4f3163fe19fd1a7fULL, 0xe99c988d2357f9c8ULL, 0x8eee06535d0709a7ULL, 0x0efa48aa0254fc55ULL, 0xb4be23903c56fa48ULL, 0x763f52caabbedf65ULL, 0xeee1bcd8227d876cULL, 0xe345e085f33b4dccULL, 0x3e731561b369bbbeULL, 0x2843fd2067adea10ULL, 0x2adce5710eb1ceb6ULL, 0xb7e03767ef44ccbdULL, 0x8db012a48e153f52ULL, 0x61ceb62dc5749c98ULL, 0xe85d942b9959eb9bULL, 0x4c6f7709caef2c8aULL, 0x84377e5b8d6bbda3ULL, 0x30895dcbb13d47ebULL, 0x74a04a9bc2a2fbc3ULL, 0x6b17ce251518289cULL, 0xe438c4d0f2113368ULL, 0x1fb784bed7bad35fULL, 0x9b80fae55ad16efcULL, 0x77fe5e6c11b0cd36ULL, 0xc858095247849129ULL, 0x08466059b97090a2ULL, 0x01c10ca6ba0e1253ULL, 0x6988d6747c040c3aULL, 0x6849dad2c60a1e69ULL, 0x5147ebe67449db73ULL, 0xc99905f4fd8a837aULL, 0x991fe2b433cd4a5aULL, 0xf09734c04fc94660ULL, 0xa28ecbd1e892abe6ULL, 0xf1563866f5c75433ULL, 0x4dae7baf70e13ed9ULL, 0x7ce62ac27bd26b61ULL, 0x70837a39109ab392ULL, 0x90988e4b30b3c8abULL, 0xb2020b63877296bfULL, 0x156efcb607d6675bULL}, { 0xe63f55ce97c331d0ULL, 0x25b506b0015bba16ULL, 0xc8706e29e6ad9ba8ULL, 0x5b43d3775d521f6aULL, 0x0bfa3d577035106eULL, 0xab95fc172afb0e66ULL, 0xf64b63979e7a3276ULL, 0xf58b4562649dad4bULL, 0x48f7c3dbae0c83f1ULL, 0xff31916642f5c8c5ULL, 0xcbb048dc1c4a0495ULL, 0x66b8f83cdf622989ULL, 0x35c130e908e2b9b0ULL, 0x7c761a61f0b34fa1ULL, 0x3601161cf205268dULL, 0x9e54ccfe2219b7d6ULL, 0x8b7d90a538940837ULL, 0x9cd403588ea35d0bULL, 0xbc3c6fea9ccc5b5aULL, 0xe5ff733b6d24aeedULL, 0xceed22de0f7eb8d2ULL, 0xec8581cab1ab545eULL, 0xb96105e88ff8e71dULL, 0x8ca03501871a5eadULL, 0x76ccce65d6db2a2fULL, 0x5883f582a7b58057ULL, 0x3f7be4ed2e8adc3eULL, 0x0fe7be06355cd9c9ULL, 0xee054e6c1d11be83ULL, 0x1074365909b903a6ULL, 0x5dde9f80b4813c10ULL, 0x4a770c7d02b6692cULL, 0x5379c8d5d7809039ULL, 0xb4067448161ed409ULL, 0x5f5e5026183bd6cdULL, 0xe898029bf4c29df9ULL, 0x7fb63c940a54d09cULL, 0xc5171f897f4ba8bcULL, 0xa6f28db7b31d3d72ULL, 0x2e4f3be7716eaa78ULL, 0x0d6771a099e63314ULL, 0x82076254e41bf284ULL, 0x2f0fd2b42733df98ULL, 0x5c9e76d3e2dc49f0ULL, 0x7aeb569619606cdbULL, 0x83478b07b2468764ULL, 0xcfadcb8d5923cd32ULL, 0x85dac7f05b95a41eULL, 0xb5469d1b4043a1e9ULL, 0xb821ecbbd9a592fdULL, 0x1b8e0b0e798c13c8ULL, 0x62a57b6d9a0be02eULL, 0xfcf1b793b81257f8ULL, 0x9d94ea0bd8fe28ebULL, 0x4cea408aeb654a56ULL, 0x23284a47e888996cULL, 0x2d8f1d128b893545ULL, 0xf4cbac3132c0d8abULL, 0xbd7c86b9ca912ebaULL, 0x3a268eef3dbe6079ULL, 0xf0d62f6077a9110cULL, 0x2735c916ade150cbULL, 0x89fd5f03942ee2eaULL, 0x1acee25d2fd16628ULL, 0x90f39bab41181bffULL, 0x430dfe8cde39939fULL, 0xf70b8ac4c8274796ULL, 0x1c53aeaac6024552ULL, 0x13b410acf35e9c9bULL, 0xa532ab4249faa24fULL, 0x2b1251e5625a163fULL, 0xd7e3e676da4841c7ULL, 0xa7b264e4e5404892ULL, 0xda8497d643ae72d3ULL, 0x861ae105a1723b23ULL, 0x38a6414991048aa4ULL, 0x6578dec92585b6b4ULL, 0x0280cfa6acbaeaddULL, 0x88bdb650c273970aULL, 0x9333bd5ebbff84c2ULL, 0x4e6a8f2c47dfa08bULL, 0x321c954db76cef2aULL, 0x418d312a72837942ULL, 0xb29b38bfffcdf773ULL, 0x6c022c38f90a4c07ULL, 0x5a033a240b0f6a8aULL, 0x1f93885f3ce5da6fULL, 0xc38a537e96988bc6ULL, 0x39e6a81ac759ff44ULL, 0x29929e43cee0fce2ULL, 0x40cdd87924de0ca2ULL, 0xe9d8ebc8a29fe819ULL, 0x0c2798f3cfbb46f4ULL, 0x55e484223e53b343ULL, 0x4650948ecd0d2fd8ULL, 0x20e86cb2126f0651ULL, 0x6d42c56baf5739e7ULL, 0xa06fc1405ace1e08ULL, 0x7babbfc54f3d193bULL, 0x424d17df8864e67fULL, 0xd8045870ef14980eULL, 0xc6d7397c85ac3781ULL, 0x21a885e1443273b1ULL, 0x67f8116f893f5c69ULL, 0x24f5efe35706cff6ULL, 0xd56329d076f2ab1aULL, 0x5e1eb9754e66a32dULL, 0x28d2771098bd8902ULL, 0x8f6013f47dfdc190ULL, 0x17a993fdb637553cULL, 0xe0a219397e1012aaULL, 0x786b9930b5da8606ULL, 0x6e82e39e55b0a6daULL, 0x875a0856f72f4ec3ULL, 0x3741ff4fa458536dULL, 0xac4859b3957558fcULL, 0x7ef6d5c75c09a57cULL, 0xc04a758b6c7f14fbULL, 0xf9acdd91ab26ebbfULL, 0x7391a467c5ef9668ULL, 0x335c7c1ee1319acaULL, 0xa91533b18641e4bbULL, 0xe4bf9a683b79db0dULL, 0x8e20faa72ba0b470ULL, 0x51f907737b3a7ae4ULL, 0x2268a314bed5ec8cULL, 0xd944b123b949edeeULL, 0x31dcb3b84d8b7017ULL, 0xd3fe65279f218860ULL, 0x097af2f1dc8ffab3ULL, 0x9b09a6fc312d0b91ULL, 0xcc6ded78a3c4520fULL, 0x3481d9ba5ebfcc50ULL, 0x4f2a667f1182d56bULL, 0xdfd9fdd4509ace94ULL, 0x26752045fbbc252bULL, 0xbffc491f662bc467ULL, 0xdd593272fc202449ULL, 0x3cbbc218d46d4303ULL, 0x91b372f817456e1fULL, 0x681faf69bc6385a0ULL, 0xb686bbeebaa43ed4ULL, 0x1469b5084cd0ca01ULL, 0x98c98009cbca94acULL, 0x6438379a73d8c354ULL, 0xc2caba2dc0c5fe26ULL, 0x3e3b0dbe78d7a9deULL, 0x50b9ee202d670f04ULL, 0x4590b27b37eab0e5ULL, 0x6025b4cb36b10af3ULL, 0xfb2c1237079c0162ULL, 0xa12f28130c936be8ULL, 0x4b37e52e54eb1cccULL, 0x083a1ba28ad28f53ULL, 0xc10a9cd83a22611bULL, 0x9f1425ad7444c236ULL, 0x069d4cf7e9d3237aULL, 0xedc56899e7f621beULL, 0x778c273680865fcfULL, 0x309c5aeb1bd605f7ULL, 0x8de0dc52d1472b4dULL, 0xf8ec34c2fd7b9e5fULL, 0xea18cd3d58787724ULL, 0xaad515447ca67b86ULL, 0x9989695a9d97e14cULL, 0x0000000000000000ULL, 0xf196c63321f464ecULL, 0x71116bc169557cb5ULL, 0xaf887f466f92c7c1ULL, 0x972e3e0ffe964d65ULL, 0x190ec4a8d536f915ULL, 0x95aef1a9522ca7b8ULL, 0xdc19db21aa7d51a9ULL, 0x94ee18fa0471d258ULL, 0x8087adf248a11859ULL, 0xc457f6da2916dd5cULL, 0xfa6cfb6451c17482ULL, 0xf256e0c6db13fbd1ULL, 0x6a9f60cf10d96f7dULL, 0x4daaa9d9bd383fb6ULL, 0x03c026f5fae79f3dULL, 0xde99148706c7bb74ULL, 0x2a52b8b6340763dfULL, 0x6fc20acd03edd33aULL, 0xd423c08320afdefaULL, 0xbbe1ca4e23420dc0ULL, 0x966ed75ca8cb3885ULL, 0xeb58246e0e2502c4ULL, 0x055d6a021334bc47ULL, 0xa47242111fa7d7afULL, 0xe3623fcc84f78d97ULL, 0x81c744a11efc6db9ULL, 0xaec8961539cfb221ULL, 0xf31609958d4e8e31ULL, 0x63e5923ecc5695ceULL, 0x47107ddd9b505a38ULL, 0xa3afe7b5a0298135ULL, 0x792b7063e387f3e6ULL, 0x0140e953565d75e0ULL, 0x12f4f9ffa503e97bULL, 0x750ce8902c3cb512ULL, 0xdbc47e8515f30733ULL, 0x1ed3610c6ab8af8fULL, 0x5239218681dde5d9ULL, 0xe222d69fd2aaf877ULL, 0xfe71783514a8bd25ULL, 0xcaf0a18f4a177175ULL, 0x61655d9860ec7f13ULL, 0xe77fbc9dc19e4430ULL, 0x2ccff441ddd440a5ULL, 0x16e97aaee06a20dcULL, 0xa855dae2d01c915bULL, 0x1d1347f9905f30b2ULL, 0xb7c652bdecf94b34ULL, 0xd03e43d265c6175dULL, 0xfdb15ec0ee4f2218ULL, 0x57644b8492e9599eULL, 0x07dda5a4bf8e569aULL, 0x54a46d71680ec6a3ULL, 0x5624a2d7c4b42c7eULL, 0xbebca04c3076b187ULL, 0x7d36f332a6ee3a41ULL, 0x3b6667bc6be31599ULL, 0x695f463aea3ef040ULL, 0xad08b0e0c3282d1cULL, 0xb15b1e4a052a684eULL, 0x44d05b2861b7c505ULL, 0x15295c5b1a8dbfe1ULL, 0x744c01c37a61c0f2ULL, 0x59c31cd1f1e8f5b7ULL, 0xef45a73f4b4ccb63ULL, 0x6bdf899c46841a9dULL, 0x3dfb2b4b823036e3ULL, 0xa2ef0ee6f674f4d5ULL, 0x184e2dfb836b8cf5ULL, 0x1134df0a5fe47646ULL, 0xbaa1231d751f7820ULL, 0xd17eaa81339b62bdULL, 0xb01bf71953771daeULL, 0x849a2ea30dc8d1feULL, 0x705182923f080955ULL, 0x0ea757556301ac29ULL, 0x041d83514569c9a7ULL, 0x0abad4042668658eULL, 0x49b72a88f851f611ULL, 0x8a3d79f66ec97dd7ULL, 0xcd2d042bf59927efULL, 0xc930877ab0f0ee48ULL, 0x9273540deda2f122ULL, 0xc797d02fd3f14261ULL, 0xe1e2f06a284d674aULL, 0xd2be8c74c97cfd80ULL, 0x9a494faf67707e71ULL, 0xb3dbd1eca9908293ULL, 0x72d14d3493b2e388ULL, 0xd6a30f258c153427ULL} }; #else ALIGN(16) static const unsigned long long Ax[8][256] = { { 0xe6f87e5c5b711fd0ULL, 0x258377800924fa16ULL, 0xc849e07e852ea4a8ULL, 0x5b4686a18f06c16aULL, 0x0b32e9a2d77b416eULL, 0xabda37a467815c66ULL, 0xf61796a81a686676ULL, 0xf5dc0b706391954bULL, 0x4862f38db7e64bf1ULL, 0xff5c629a68bd85c5ULL, 0xcb827da6fcd75795ULL, 0x66d36daf69b9f089ULL, 0x356c9f74483d83b0ULL, 0x7cbcecb1238c99a1ULL, 0x36a702ac31c4708dULL, 0x9eb6a8d02fbcdfd6ULL, 0x8b19fa51e5b3ae37ULL, 0x9ccfb5408a127d0bULL, 0xbc0c78b508208f5aULL, 0xe533e3842288ecedULL, 0xcec2c7d377c15fd2ULL, 0xec7817b6505d0f5eULL, 0xb94cc2c08336871dULL, 0x8c205db4cb0b04adULL, 0x763c855b28a0892fULL, 0x588d1b79f6ff3257ULL, 0x3fecf69e4311933eULL, 0x0fc0d39f803a18c9ULL, 0xee010a26f5f3ad83ULL, 0x10efe8f4411979a6ULL, 0x5dcda10c7de93a10ULL, 0x4a1bee1d1248e92cULL, 0x53bff2db21847339ULL, 0xb4f50ccfa6a23d09ULL, 0x5fb4bc9cd84798cdULL, 0xe88a2d8b071c56f9ULL, 0x7f7771695a756a9cULL, 0xc5f02e71a0ba1ebcULL, 0xa663f9ab4215e672ULL, 0x2eb19e22de5fbb78ULL, 0x0db9ce0f2594ba14ULL, 0x82520e6397664d84ULL, 0x2f031e6a0208ea98ULL, 0x5c7f2144a1be6bf0ULL, 0x7a37cb1cd16362dbULL, 0x83e08e2b4b311c64ULL, 0xcf70479bab960e32ULL, 0x856ba986b9dee71eULL, 0xb5478c877af56ce9ULL, 0xb8fe42885f61d6fdULL, 0x1bdd0156966238c8ULL, 0x622157923ef8a92eULL, 0xfc97ff42114476f8ULL, 0x9d7d350856452cebULL, 0x4c90c9b0e0a71256ULL, 0x2308502dfbcb016cULL, 0x2d7a03faa7a64845ULL, 0xf46e8b38bfc6c4abULL, 0xbdbef8fdd477debaULL, 0x3aac4cebc8079b79ULL, 0xf09cb105e8879d0cULL, 0x27fa6a10ac8a58cbULL, 0x8960e7c1401d0ceaULL, 0x1a6f811e4a356928ULL, 0x90c4fb0773d196ffULL, 0x43501a2f609d0a9fULL, 0xf7a516e0c63f3796ULL, 0x1ce4a6b3b8da9252ULL, 0x1324752c38e08a9bULL, 0xa5a864733bec154fULL, 0x2bf124575549b33fULL, 0xd766db15440dc5c7ULL, 0xa7d179e39e42b792ULL, 0xdadf151a61997fd3ULL, 0x86a0345ec0271423ULL, 0x38d5517b6da939a4ULL, 0x6518f077104003b4ULL, 0x02791d90a5aea2ddULL, 0x88d267899c4a5d0aULL, 0x930f66df0a2865c2ULL, 0x4ee9d4204509b08bULL, 0x325538916685292aULL, 0x412907bfc533a842ULL, 0xb27e2b62544dc673ULL, 0x6c5304456295e007ULL, 0x5af406e95351908aULL, 0x1f2f3b6bc123616fULL, 0xc37b09dc5255e5c6ULL, 0x3967d133b1fe6844ULL, 0x298839c7f0e711e2ULL, 0x409b87f71964f9a2ULL, 0xe938adc3db4b0719ULL, 0x0c0b4e47f9c3ebf4ULL, 0x5534d576d36b8843ULL, 0x4610a05aeb8b02d8ULL, 0x20c3cdf58232f251ULL, 0x6de1840dbec2b1e7ULL, 0xa0e8de06b0fa1d08ULL, 0x7b854b540d34333bULL, 0x42e29a67bcca5b7fULL, 0xd8a6088ac437dd0eULL, 0xc63bb3a9d943ed81ULL, 0x21714dbd5e65a3b1ULL, 0x6761ede7b5eea169ULL, 0x2431f7c8d573abf6ULL, 0xd51fc685e1a3671aULL, 0x5e063cd40410c92dULL, 0x283ab98f2cb04002ULL, 0x8febc06cb2f2f790ULL, 0x17d64f116fa1d33cULL, 0xe07359f1a99ee4aaULL, 0x784ed68c74cdc006ULL, 0x6e2a19d5c73b42daULL, 0x8712b4161c7045c3ULL, 0x371582e4ed93216dULL, 0xace390414939f6fcULL, 0x7ec5f12186223b7cULL, 0xc0b094042bac16fbULL, 0xf9d745379a527ebfULL, 0x737c3f2ea3b68168ULL, 0x33e7b8d9bad278caULL, 0xa9a32a34c22ffebbULL, 0xe48163ccfedfbd0dULL, 0x8e5940246ea5a670ULL, 0x51c6ef4b842ad1e4ULL, 0x22bad065279c508cULL, 0xd91488c218608ceeULL, 0x319ea5491f7cda17ULL, 0xd394e128134c9c60ULL, 0x094bf43272d5e3b3ULL, 0x9bf612a5a4aad791ULL, 0xccbbda43d26ffd0fULL, 0x34de1f3c946ad250ULL, 0x4f5b5468995ee16bULL, 0xdf9faf6fea8f7794ULL, 0x2648ea5870dd092bULL, 0xbfc7e56d71d97c67ULL, 0xdde6b2ff4f21d549ULL, 0x3c276b463ae86003ULL, 0x91767b4faf86c71fULL, 0x68a13e7835d4b9a0ULL, 0xb68c115f030c9fd4ULL, 0x141dd2c916582001ULL, 0x983d8f7ddd5324acULL, 0x64aa703fcc175254ULL, 0xc2c989948e02b426ULL, 0x3e5e76d69f46c2deULL, 0x50746f03587d8004ULL, 0x45db3d829272f1e5ULL, 0x60584a029b560bf3ULL, 0xfbae58a73ffcdc62ULL, 0xa15a5e4e6cad4ce8ULL, 0x4ba96e55ce1fb8ccULL, 0x08f9747aae82b253ULL, 0xc102144cf7fb471bULL, 0x9f042898f3eb8e36ULL, 0x068b27adf2effb7aULL, 0xedca97fe8c0a5ebeULL, 0x778e0513f4f7d8cfULL, 0x302c2501c32b8bf7ULL, 0x8d92ddfc175c554dULL, 0xf865c57f46052f5fULL, 0xeaf3301ba2b2f424ULL, 0xaa68b7ecbbd60d86ULL, 0x998f0f350104754cULL, 0x0000000000000000ULL, 0xf12e314d34d0ccecULL, 0x710522be061823b5ULL, 0xaf280d9930c005c1ULL, 0x97fd5ce25d693c65ULL, 0x19a41cc633cc9a15ULL, 0x95844172f8c79eb8ULL, 0xdc5432b7937684a9ULL, 0x9436c13a2490cf58ULL, 0x802b13f332c8ef59ULL, 0xc442ae397ced4f5cULL, 0xfa1cd8efe3ab8d82ULL, 0xf2e5ac954d293fd1ULL, 0x6ad823e8907a1b7dULL, 0x4d2249f83cf043b6ULL, 0x03cb9dd879f9f33dULL, 0xde2d2f2736d82674ULL, 0x2a43a41f891ee2dfULL, 0x6f98999d1b6c133aULL, 0xd4ad46cd3df436faULL, 0xbb35df50269825c0ULL, 0x964fdcaa813e6d85ULL, 0xeb41b0537ee5a5c4ULL, 0x0540ba758b160847ULL, 0xa41ae43be7bb44afULL, 0xe3b8c429d0671797ULL, 0x819993bbee9fbeb9ULL, 0xae9a8dd1ec975421ULL, 0xf3572cdd917e6e31ULL, 0x6393d7dae2aff8ceULL, 0x47a2201237dc5338ULL, 0xa32343dec903ee35ULL, 0x79fc56c4a89a91e6ULL, 0x01b28048dc5751e0ULL, 0x1296f564e4b7db7bULL, 0x75f7188351597a12ULL, 0xdb6d9552bdce2e33ULL, 0x1e9dbb231d74308fULL, 0x520d7293fdd322d9ULL, 0xe20a44610c304677ULL, 0xfeeee2d2b4ead425ULL, 0xca30fdee20800675ULL, 0x61eaca4a47015a13ULL, 0xe74afe1487264e30ULL, 0x2cc883b27bf119a5ULL, 0x1664cf59b3f682dcULL, 0xa811aa7c1e78af5bULL, 0x1d5626fb648dc3b2ULL, 0xb73e9117df5bce34ULL, 0xd05f7cf06ab56f5dULL, 0xfd257f0acd132718ULL, 0x574dc8e676c52a9eULL, 0x0739a7e52eb8aa9aULL, 0x5486553e0f3cd9a3ULL, 0x56ff48aeaa927b7eULL, 0xbe756525ad8e2d87ULL, 0x7d0e6cf9ffdbc841ULL, 0x3b1ecca31450ca99ULL, 0x6913be30e983e840ULL, 0xad511009956ea71cULL, 0xb1b5b6ba2db4354eULL, 0x4469bdca4e25a005ULL, 0x15af5281ca0f71e1ULL, 0x744598cb8d0e2bf2ULL, 0x593f9b312aa863b7ULL, 0xefb38a6e29a4fc63ULL, 0x6b6aa3a04c2d4a9dULL, 0x3d95eb0ee6bf31e3ULL, 0xa291c3961554bfd5ULL, 0x18169c8eef9bcbf5ULL, 0x115d68bc9d4e2846ULL, 0xba875f18facf7420ULL, 0xd1edfcb8b6e23ebdULL, 0xb00736f2f1e364aeULL, 0x84d929ce6589b6feULL, 0x70b7a2f6da4f7255ULL, 0x0e7253d75c6d4929ULL, 0x04f23a3d574159a7ULL, 0x0a8069ea0b2c108eULL, 0x49d073c56bb11a11ULL, 0x8aab7a1939e4ffd7ULL, 0xcd095a0b0e38acefULL, 0xc9fb60365979f548ULL, 0x92bde697d67f3422ULL, 0xc78933e10514bc61ULL, 0xe1c1d9b975c9b54aULL, 0xd2266160cf1bcd80ULL, 0x9a4492ed78fd8671ULL, 0xb3ccab2a881a9793ULL, 0x72cebf667fe1d088ULL, 0xd6d45b5d985a9427ULL}, { 0xc811a8058c3f55deULL, 0x65f5b43196b50619ULL, 0xf74f96b1d6706e43ULL, 0x859d1e8bcb43d336ULL, 0x5aab8a85ccfa3d84ULL, 0xf9c7bf99c295fcfdULL, 0xa21fd5a1de4b630fULL, 0xcdb3ef763b8b456dULL, 0x803f59f87cf7c385ULL, 0xb27c73be5f31913cULL, 0x98e3ac6633b04821ULL, 0xbf61674c26b8f818ULL, 0x0ffbc995c4c130c8ULL, 0xaaa0862010761a98ULL, 0x6057f342210116aaULL, 0xf63c760c0654cc35ULL, 0x2ddb45cc667d9042ULL, 0xbcf45a964bd40382ULL, 0x68e8a0c3ef3c6f3dULL, 0xa7bd92d269ff73bcULL, 0x290ae20201ed2287ULL, 0xb7de34cde885818fULL, 0xd901eea7dd61059bULL, 0xd6fa273219a03553ULL, 0xd56f1ae874cccec9ULL, 0xea31245c2e83f554ULL, 0x7034555da07be499ULL, 0xce26d2ac56e7bef7ULL, 0xfd161857a5054e38ULL, 0x6a0e7da4527436d1ULL, 0x5bd86a381cde9ff2ULL, 0xcaf7756231770c32ULL, 0xb09aaed9e279c8d0ULL, 0x5def1091c60674dbULL, 0x111046a2515e5045ULL, 0x23536ce4729802fcULL, 0xc50cbcf7f5b63cfaULL, 0x73a16887cd171f03ULL, 0x7d2941afd9f28dbdULL, 0x3f5e3eb45a4f3b9dULL, 0x84eefe361b677140ULL, 0x3db8e3d3e7076271ULL, 0x1a3a28f9f20fd248ULL, 0x7ebc7c75b49e7627ULL, 0x74e5f293c7eb565cULL, 0x18dcf59e4f478ba4ULL, 0x0c6ef44fa9adcb52ULL, 0xc699812d98dac760ULL, 0x788b06dc6e469d0eULL, 0xfc65f8ea7521ec4eULL, 0x30a5f7219e8e0b55ULL, 0x2bec3f65bca57b6bULL, 0xddd04969baf1b75eULL, 0x99904cdbe394ea57ULL, 0x14b201d1e6ea40f6ULL, 0xbbb0c08241284addULL, 0x50f20463bf8f1dffULL, 0xe8d7f93b93cbacb8ULL, 0x4d8cb68e477c86e8ULL, 0xc1dd1b3992268e3fULL, 0x7c5aa11209d62fcbULL, 0x2f3d98abdb35c9aeULL, 0x671369562bfd5ff5ULL, 0x15c1e16c36cee280ULL, 0x1d7eb2edf8f39b17ULL, 0xda94d37db00dfe01ULL, 0x877bc3ec760b8adaULL, 0xcb8495dfe153ae44ULL, 0x05a24773b7b410b3ULL, 0x12857b783c32abdfULL, 0x8eb770d06812513bULL, 0x536739b9d2e3e665ULL, 0x584d57e271b26468ULL, 0xd789c78fc9849725ULL, 0xa935bbfa7d1ae102ULL, 0x8b1537a3dfa64188ULL, 0xd0cd5d9bc378de7aULL, 0x4ac82c9a4d80cfb7ULL, 0x42777f1b83bdb620ULL, 0x72d2883a1d33bd75ULL, 0x5e7a2d4bab6a8f41ULL, 0xf4daab6bbb1c95d9ULL, 0x905cffe7fd8d31b6ULL, 0x83aa6422119b381fULL, 0xc0aefb8442022c49ULL, 0xa0f908c663033ae3ULL, 0xa428af0804938826ULL, 0xade41c341a8a53c7ULL, 0xae7121ee77e6a85dULL, 0xc47f5c4a25929e8cULL, 0xb538e9aa55cdd863ULL, 0x06377aa9dad8eb29ULL, 0xa18ae87bb3279895ULL, 0x6edfda6a35e48414ULL, 0x6b7d9d19825094a7ULL, 0xd41cfa55a4e86cbfULL, 0xe5caedc9ea42c59cULL, 0xa36c351c0e6fc179ULL, 0x5181e4de6fabbf89ULL, 0xfff0c530184d17d4ULL, 0x9d41eb1584045892ULL, 0x1c0d525028d73961ULL, 0xf178ec180ca8856aULL, 0x9a0571018ef811cdULL, 0x4091a27c3ef5efccULL, 0x19af15239f6329d2ULL, 0x347450eff91eb990ULL, 0xe11b4a078dd27759ULL, 0xb9561de5fc601331ULL, 0x912f1f5a2da993c0ULL, 0x1654dcb65ba2191aULL, 0x3e2dde098a6b99ebULL, 0x8a66d71e0f82e3feULL, 0x8c51adb7d55a08d7ULL, 0x4533e50f8941ff7fULL, 0x02e6dd67bd4859ecULL, 0xe068aaba5df6d52fULL, 0xc24826e3ff4a75a5ULL, 0x6c39070d88acddf8ULL, 0x6486548c4691a46fULL, 0xd1bebd26135c7c0cULL, 0xb30f93038f15334aULL, 0x82d9849fc1bf9a69ULL, 0x9c320ba85420fae4ULL, 0xfa528243aff90767ULL, 0x9ed4d6cfe968a308ULL, 0xb825fd582c44b147ULL, 0x9b7691bc5edcb3bbULL, 0xc7ea619048fe6516ULL, 0x1063a61f817af233ULL, 0x47d538683409a693ULL, 0x63c2ce984c6ded30ULL, 0x2a9fdfd86c81d91dULL, 0x7b1e3b06032a6694ULL, 0x666089ebfbd9fd83ULL, 0x0a598ee67375207bULL, 0x07449a140afc495fULL, 0x2ca8a571b6593234ULL, 0x1f986f8a45bbc2fbULL, 0x381aa4a050b372c2ULL, 0x5423a3add81faf3aULL, 0x17273c0b8b86bb6cULL, 0xfe83258dc869b5a2ULL, 0x287902bfd1c980f1ULL, 0xf5a94bd66b3837afULL, 0x88800a79b2caba12ULL, 0x55504310083b0d4cULL, 0xdf36940e07b9eeb2ULL, 0x04d1a7ce6790b2c5ULL, 0x612413fff125b4dcULL, 0x26f12b97c52c124fULL, 0x86082351a62f28acULL, 0xef93632f9937e5e7ULL, 0x3507b052293a1be6ULL, 0xe72c30ae570a9c70ULL, 0xd3586041ae1425e0ULL, 0xde4574b3d79d4cc4ULL, 0x92ba228040c5685aULL, 0xf00b0ca5dc8c271cULL, 0xbe1287f1f69c5a6eULL, 0xf39e317fb1e0dc86ULL, 0x495d114020ec342dULL, 0x699b407e3f18cd4bULL, 0xdca3a9d46ad51528ULL, 0x0d1d14f279896924ULL, 0x0000000000000000ULL, 0x593eb75fa196c61eULL, 0x2e4e78160b116bd8ULL, 0x6d4ae7b058887f8eULL, 0xe65fd013872e3e06ULL, 0x7a6ddbbbd30ec4e2ULL, 0xac97fc89caaef1b1ULL, 0x09ccb33c1e19dbe1ULL, 0x89f3eac462ee1864ULL, 0x7770cf49aa87adc6ULL, 0x56c57eca6557f6d6ULL, 0x03953dda6d6cfb9aULL, 0x36928d884456e07cULL, 0x1eeb8f37959f608dULL, 0x31d6179c4eaaa923ULL, 0x6fac3ad7e5c02662ULL, 0x43049fa653991456ULL, 0xabd3669dc052b8eeULL, 0xaf02c153a7c20a2bULL, 0x3ccb036e3723c007ULL, 0x93c9c23d90e1ca2cULL, 0xc33bc65e2f6ed7d3ULL, 0x4cff56339758249eULL, 0xb1e94e64325d6aa6ULL, 0x37e16d359472420aULL, 0x79f8e661be623f78ULL, 0x5214d90402c74413ULL, 0x482ef1fdf0c8965bULL, 0x13f69bc5ec1609a9ULL, 0x0e88292814e592beULL, 0x4e198b542a107d72ULL, 0xccc00fcbebafe71bULL, 0x1b49c844222b703eULL, 0x2564164da840e9d5ULL, 0x20c6513e1ff4f966ULL, 0xbac3203f910ce8abULL, 0xf2edd1c261c47ef0ULL, 0x814cb945acd361f3ULL, 0x95feb8944a392105ULL, 0x5c9cf02c1622d6adULL, 0x971865f3f77178e9ULL, 0xbd87ba2b9bf0a1f4ULL, 0x444005b259655d09ULL, 0xed75be48247fbc0bULL, 0x7596122e17cff42aULL, 0xb44b091785e97a15ULL, 0x966b854e2755da9fULL, 0xeee0839249134791ULL, 0x32432a4623c652b9ULL, 0xa8465b47ad3e4374ULL, 0xf8b45f2412b15e8bULL, 0x2417f6f078644ba3ULL, 0xfb2162fe7fdda511ULL, 0x4bbbcc279da46dc1ULL, 0x0173e0bdd024a276ULL, 0x22208c59a2bca08aULL, 0x8fc4906db836f34dULL, 0xe4b90d743a6667eaULL, 0x7147b5e0705f46efULL, 0x2782cb2a1508b039ULL, 0xec065ef5f45b1e7dULL, 0x21b5b183cfd05b10ULL, 0xdbe733c060295c77ULL, 0x9fa73672394c017eULL, 0xcf55321186c31c81ULL, 0xd8720e1a0d45a7edULL, 0x3b8f997a3ddf8958ULL, 0x3afc79c7edfb2b2eULL, 0xe9a4198643ef0eceULL, 0x5f09cdf67b4e2d37ULL, 0x4f6a6be9fa34df04ULL, 0xb6add47038a123f9ULL, 0x8d224d0a057eaaa1ULL, 0xc96248b85c1bf7a8ULL, 0xe3fd9760309a2eb5ULL, 0x0b2a6e5ba351820dULL, 0xeb42c4e1fea75722ULL, 0x948d58299a1d8373ULL, 0x7fcf9cc864bad451ULL, 0xa55b4fb5d4b72a50ULL, 0x08bf5381ce3d7997ULL, 0x46a6d8d5e42d04e5ULL, 0xd22b80fc7e308796ULL, 0x57b69e77b57354a0ULL, 0x3969441d8097d0b4ULL, 0x3330cafbf3e2f0cfULL, 0xe28e77dde0be8cc3ULL, 0x62b12e259c494f46ULL, 0xa6ce726fb9dbd1caULL, 0x41e242c1eed14dbaULL, 0x76032ff47aa30fb0ULL}, { 0x45b268a93acde4ccULL, 0xaf7f0be884549d08ULL, 0x048354b3c1468263ULL, 0x925435c2c80efed2ULL, 0xee4e37f27fdffba7ULL, 0x167a33920c60f14dULL, 0xfb123b52ea03e584ULL, 0x4a0cab53fdbb9007ULL, 0x9deaf6380f788a19ULL, 0xcb48ec558f0cb32aULL, 0xb59dc4b2d6fef7e0ULL, 0xdcdbca22f4f3ecb6ULL, 0x11df5813549a9c40ULL, 0xe33fdedf568aced3ULL, 0xa0c1c8124322e9c3ULL, 0x07a56b8158fa6d0dULL, 0x77279579b1e1f3ddULL, 0xd9b18b74422ac004ULL, 0xb8ec2d9fffabc294ULL, 0xf4acf8a82d75914fULL, 0x7bbf69b1ef2b6878ULL, 0xc4f62faf487ac7e1ULL, 0x76ce809cc67e5d0cULL, 0x6711d88f92e4c14cULL, 0x627b99d9243dedfeULL, 0x234aa5c3dfb68b51ULL, 0x909b1f15262dbf6dULL, 0x4f66ea054b62bcb5ULL, 0x1ae2cf5a52aa6ae8ULL, 0xbea053fbd0ce0148ULL, 0xed6808c0e66314c9ULL, 0x43fe16cd15a82710ULL, 0xcd049231a06970f6ULL, 0xe7bc8a6c97cc4cb0ULL, 0x337ce835fcb3b9c0ULL, 0x65def2587cc780f3ULL, 0x52214ede4132bb50ULL, 0x95f15e4390f493dfULL, 0x870839625dd2e0f1ULL, 0x41313c1afb8b66afULL, 0x91720af051b211bcULL, 0x477d427ed4eea573ULL, 0x2e3b4ceef6e3be25ULL, 0x82627834eb0bcc43ULL, 0x9c03e3dd78e724c8ULL, 0x2877328ad9867df9ULL, 0x14b51945e243b0f2ULL, 0x574b0f88f7eb97e2ULL, 0x88b6fa989aa4943aULL, 0x19c4f068cb168586ULL, 0x50ee6409af11faefULL, 0x7df317d5c04eaba4ULL, 0x7a567c5498b4c6a9ULL, 0xb6bbfb804f42188eULL, 0x3cc22bcf3bc5cd0bULL, 0xd04336eaaa397713ULL, 0xf02fac1bec33132cULL, 0x2506dba7f0d3488dULL, 0xd7e65d6bf2c31a1eULL, 0x5eb9b2161ff820f5ULL, 0x842e0650c46e0f9fULL, 0x716beb1d9e843001ULL, 0xa933758cab315ed4ULL, 0x3fe414fda2792265ULL, 0x27c9f1701ef00932ULL, 0x73a4c1ca70a771beULL, 0x94184ba6e76b3d0eULL, 0x40d829ff8c14c87eULL, 0x0fbec3fac77674cbULL, 0x3616a9634a6a9572ULL, 0x8f139119c25ef937ULL, 0xf545ed4d5aea3f9eULL, 0xe802499650ba387bULL, 0x6437e7bd0b582e22ULL, 0xe6559f89e053e261ULL, 0x80ad52e305288dfcULL, 0x6dc55a23e34b9935ULL, 0xde14e0f51ad0ad09ULL, 0xc6390578a659865eULL, 0x96d7617109487cb1ULL, 0xe2d6cb3a21156002ULL, 0x01e915e5779faed1ULL, 0xadb0213f6a77dcb7ULL, 0x9880b76eb9a1a6abULL, 0x5d9f8d248644cf9bULL, 0xfd5e4536c5662658ULL, 0xf1c6b9fe9bacbdfdULL, 0xeacd6341be9979c4ULL, 0xefa7221708405576ULL, 0x510771ecd88e543eULL, 0xc2ba51cb671f043dULL, 0x0ad482ac71af5879ULL, 0xfe787a045cdac936ULL, 0xb238af338e049aedULL, 0xbd866cc94972ee26ULL, 0x615da6ebbd810290ULL, 0x3295fdd08b2c1711ULL, 0xf834046073bf0aeaULL, 0xf3099329758ffc42ULL, 0x1caeb13e7dcfa934ULL, 0xba2307481188832bULL, 0x24efce42874ce65cULL, 0x0e57d61fb0e9da1aULL, 0xb3d1bad6f99b343cULL, 0xc0757b1c893c4582ULL, 0x2b510db8403a9297ULL, 0x5c7698c1f1db614aULL, 0x3e0d0118d5e68cb4ULL, 0xd60f488e855cb4cfULL, 0xae961e0df3cb33d9ULL, 0x3a8e55ab14a00ed7ULL, 0x42170328623789c1ULL, 0x838b6dd19c946292ULL, 0x895fef7ded3b3aebULL, 0xcfcbb8e64e4a3149ULL, 0x064c7e642f65c3dcULL, 0x3d2b3e2a4c5a63daULL, 0x5bd3f340a9210c47ULL, 0xb474d157a1615931ULL, 0xac5934da1de87266ULL, 0x6ee365117af7765bULL, 0xc86ed36716b05c44ULL, 0x9ba6885c201d49c5ULL, 0xb905387a88346c45ULL, 0x131072c4bab9ddffULL, 0xbf49461ea751af99ULL, 0xd52977bc1ce05ba1ULL, 0xb0f785e46027db52ULL, 0x546d30ba6e57788cULL, 0x305ad707650f56aeULL, 0xc987c682612ff295ULL, 0xa5ab8944f5fbc571ULL, 0x7ed528e759f244caULL, 0x8ddcbbce2c7db888ULL, 0xaa154abe328db1baULL, 0x1e619be993ece88bULL, 0x09f2bd9ee813b717ULL, 0x7401aa4b285d1cb3ULL, 0x21858f143195caeeULL, 0x48c381841398d1b8ULL, 0xfcb750d3b2f98889ULL, 0x39a86a998d1ce1b9ULL, 0x1f888e0ce473465aULL, 0x7899568376978716ULL, 0x02cf2ad7ee2341bfULL, 0x85c713b5b3f1a14eULL, 0xff916fe12b4567e7ULL, 0x7c1a0230b7d10575ULL, 0x0c98fcc85eca9ba5ULL, 0xa3e7f720da9e06adULL, 0x6a6031a2bbb1f438ULL, 0x973e74947ed7d260ULL, 0x2cf4663918c0ff9aULL, 0x5f50a7f368678e24ULL, 0x34d983b4a449d4cdULL, 0x68af1b755592b587ULL, 0x7f3c3d022e6dea1bULL, 0xabfc5f5b45121f6bULL, 0x0d71e92d29553574ULL, 0xdffdf5106d4f03d8ULL, 0x081ba87b9f8c19c6ULL, 0xdb7ea1a3ac0981bbULL, 0xbbca12ad66172dfaULL, 0x79704366010829c7ULL, 0x179326777bff5f9cULL, 0x0000000000000000ULL, 0xeb2476a4c906d715ULL, 0x724dd42f0738df6fULL, 0xb752ee6538ddb65fULL, 0x37ffbc863df53ba3ULL, 0x8efa84fcb5c157e6ULL, 0xe9eb5c73272596aaULL, 0x1b0bdabf2535c439ULL, 0x86e12c872a4d4e20ULL, 0x9969a28bce3e087aULL, 0xfafb2eb79d9c4b55ULL, 0x056a4156b6d92cb2ULL, 0x5a3ae6a5debea296ULL, 0x22a3b026a8292580ULL, 0x53c85b3b36ad1581ULL, 0xb11e900117b87583ULL, 0xc51f3a4a3fe56930ULL, 0xe019e1edcf3621bdULL, 0xec811d2591fcba18ULL, 0x445b7d4c4d524a1dULL, 0xa8da6069dcaef005ULL, 0x58f5cc72309de329ULL, 0xd4c062596b7ff570ULL, 0xce22ad0339d59f98ULL, 0x591cd99747024df8ULL, 0x8b90c5aa03187b54ULL, 0xf663d27fc356d0f0ULL, 0xd8589e9135b56ed5ULL, 0x35309651d3d67a1cULL, 0x12f96721cd26732eULL, 0xd28c1c3d441a36acULL, 0x492a946164077f69ULL, 0x2d1d73dc6f5f514bULL, 0x6f0a70f40d68d88aULL, 0x60b4b30eca1eac41ULL, 0xd36509d83385987dULL, 0x0b3d97490630f6a8ULL, 0x9eccc90a96c46577ULL, 0xa20ee2c5ad01a87cULL, 0xe49ab55e0e70a3deULL, 0xa4429ca182646ba0ULL, 0xda97b446db962f6aULL, 0xcced87d4d7f6de27ULL, 0x2ab8185d37a53c46ULL, 0x9f25dcefe15bcba6ULL, 0xc19c6ef9fea3eb53ULL, 0xa764a3931bd884ceULL, 0x2fd2590b817c10f4ULL, 0x56a21a6d80743933ULL, 0xe573a0bb79ef0d0fULL, 0x155c0ca095dc1e23ULL, 0x6c2c4fc694d437e4ULL, 0x10364df623053291ULL, 0xdd32dfc7836c4267ULL, 0x03263f3299bcef6eULL, 0x66f8cd6ae57b6f9dULL, 0x8c35ae2b5be21659ULL, 0x31b3c2e21290f87fULL, 0x93bd2027bf915003ULL, 0x69460e90220d1b56ULL, 0x299e276fae19d328ULL, 0x63928c3c53a2432fULL, 0x7082fef8e91b9ed0ULL, 0xbc6f792c3eed40f7ULL, 0x4c40d537d2de53dbULL, 0x75e8bfae5fc2b262ULL, 0x4da9c0d2a541fd0aULL, 0x4e8fffe03cfd1264ULL, 0x2620e495696fa7e3ULL, 0xe1f0f408b8a98f6cULL, 0xd1aa230fdda6d9c2ULL, 0xc7d0109dd1c6288fULL, 0x8a79d04f7487d585ULL, 0x4694579ba3710ba2ULL, 0x38417f7cfa834f68ULL, 0x1d47a4db0a5007e5ULL, 0x206c9af1460a643fULL, 0xa128ddf734bd4712ULL, 0x8144470672b7232dULL, 0xf2e086cc02105293ULL, 0x182de58dbc892b57ULL, 0xcaa1f9b0f8931dfbULL, 0x6b892447cc2e5ae9ULL, 0xf9dd11850420a43bULL, 0x4be5beb68a243ed6ULL, 0x5584255f19c8d65dULL, 0x3b67404e633fa006ULL, 0xa68db6766c472a1fULL, 0xf78ac79ab4c97e21ULL, 0xc353442e1080aaecULL, 0x9a4f9db95782e714ULL}, { 0x05ba7bc82c9b3220ULL, 0x31a54665f8b65e4fULL, 0xb1b651f77547f4d4ULL, 0x8bfa0d857ba46682ULL, 0x85a96c5aa16a98bbULL, 0x990faef908eb79c9ULL, 0xa15e37a247f4a62dULL, 0x76857dcd5d27741eULL, 0xf8c50b800a1820bcULL, 0xbe65dcb201f7a2b4ULL, 0x666d1b986f9426e7ULL, 0x4cc921bf53c4e648ULL, 0x95410a0f93d9ca42ULL, 0x20cdccaa647ba4efULL, 0x429a4060890a1871ULL, 0x0c4ea4f69b32b38bULL, 0xccda362dde354cd3ULL, 0x96dc23bc7c5b2fa9ULL, 0xc309bb68aa851ab3ULL, 0xd26131a73648e013ULL, 0x021dc52941fc4db2ULL, 0xcd5adab7704be48aULL, 0xa77965d984ed71e6ULL, 0x32386fd61734bba4ULL, 0xe82d6dd538ab7245ULL, 0x5c2147ea6177b4b1ULL, 0x5da1ab70cf091ce8ULL, 0xac907fce72b8bdffULL, 0x57c85dfd972278a8ULL, 0xa4e44c6a6b6f940dULL, 0x3851995b4f1fdfe4ULL, 0x62578ccaed71bc9eULL, 0xd9882bb0c01d2c0aULL, 0x917b9d5d113c503bULL, 0xa2c31e11a87643c6ULL, 0xe463c923a399c1ceULL, 0xf71686c57ea876dcULL, 0x87b4a973e096d509ULL, 0xaf0d567d9d3a5814ULL, 0xb40c2a3f59dcc6f4ULL, 0x3602f88495d121ddULL, 0xd3e1dd3d9836484aULL, 0xf945e71aa46688e5ULL, 0x7518547eb2a591f5ULL, 0x9366587450c01d89ULL, 0x9ea81018658c065bULL, 0x4f54080cbc4603a3ULL, 0x2d0384c65137bf3dULL, 0xdc325078ec861e2aULL, 0xea30a8fc79573ff7ULL, 0x214d2030ca050cb6ULL, 0x65f0322b8016c30cULL, 0x69be96dd1b247087ULL, 0xdb95ee9981e161b8ULL, 0xd1fc1814d9ca05f8ULL, 0x820ed2bbcc0de729ULL, 0x63d76050430f14c7ULL, 0x3bccb0e8a09d3a0fULL, 0x8e40764d573f54a2ULL, 0x39d175c1e16177bdULL, 0x12f5a37c734f1f4bULL, 0xab37c12f1fdfc26dULL, 0x5648b167395cd0f1ULL, 0x6c04ed1537bf42a7ULL, 0xed97161d14304065ULL, 0x7d6c67daab72b807ULL, 0xec17fa87ba4ee83cULL, 0xdfaf79cb0304fbc1ULL, 0x733f060571bc463eULL, 0x78d61c1287e98a27ULL, 0xd07cf48e77b4ada1ULL, 0xb9c262536c90dd26ULL, 0xe2449b5860801605ULL, 0x8fc09ad7f941fcfbULL, 0xfad8cea94be46d0eULL, 0xa343f28b0608eb9fULL, 0x9b126bd04917347bULL, 0x9a92874ae7699c22ULL, 0x1b017c42c4e69ee0ULL, 0x3a4c5c720ee39256ULL, 0x4b6e9f5e3ea399daULL, 0x6ba353f45ad83d35ULL, 0xe7fee0904c1b2425ULL, 0x22d009832587e95dULL, 0x842980c00f1430e2ULL, 0xc6b3c0a0861e2893ULL, 0x087433a419d729f2ULL, 0x341f3dadd42d6c6fULL, 0xee0a3faefbb2a58eULL, 0x4aee73c490dd3183ULL, 0xaab72db5b1a16a34ULL, 0xa92a04065e238fdfULL, 0x7b4b35a1686b6fccULL, 0x6a23bf6ef4a6956cULL, 0x191cb96b851ad352ULL, 0x55d598d4d6de351aULL, 0xc9604de5f2ae7ef3ULL, 0x1ca6c2a3a981e172ULL, 0xde2f9551ad7a5398ULL, 0x3025aaff56c8f616ULL, 0x15521d9d1e2860d9ULL, 0x506fe31cfa45073aULL, 0x189c55f12b647b0bULL, 0x0180ec9aae7ea859ULL, 0x7cec8b40050c105eULL, 0x2350e5198bf94104ULL, 0xef8ad33455cc0dd7ULL, 0x07a7bee16d677f92ULL, 0xe5e325b90de76997ULL, 0x5a061591a26e637aULL, 0xb611ef1618208b46ULL, 0x09f4df3eb7a981abULL, 0x1ebb078ae87dacc0ULL, 0xb791038cb65e231fULL, 0x0fd38d4574b05660ULL, 0x67edf702c1ea8ebeULL, 0xba5f4be0831238cdULL, 0xe3c477c2cefebe5cULL, 0x0dce486c354c1bd2ULL, 0x8c5db36416c31910ULL, 0x26ea9ed1a7627324ULL, 0x039d29b3ef82e5ebULL, 0x9f28fc82cbf2ae02ULL, 0xa8aae89cf05d2786ULL, 0x431aacfa2774b028ULL, 0xcf471f9e31b7a938ULL, 0x581bd0b8e3922ec8ULL, 0xbc78199b400bef06ULL, 0x90fb71c7bf42f862ULL, 0x1f3beb1046030499ULL, 0x683e7a47b55ad8deULL, 0x988f4263a695d190ULL, 0xd808c72a6e638453ULL, 0x0627527bc319d7cbULL, 0xebb04466d72997aeULL, 0xe67e0c0ae2658c7cULL, 0x14d2f107b056c880ULL, 0x7122c32c30400b8cULL, 0x8a7ae11fd5dacedbULL, 0xa0dedb38e98a0e74ULL, 0xad109354dcc615a6ULL, 0x0be91a17f655cc19ULL, 0x8ddd5ffeb8bdb149ULL, 0xbfe53028af890aedULL, 0xd65ba6f5b4ad7a6aULL, 0x7956f0882997227eULL, 0x10e8665532b352f9ULL, 0x0e5361dfdacefe39ULL, 0xcec7f3049fc90161ULL, 0xff62b561677f5f2eULL, 0x975ccf26d22587f0ULL, 0x51ef0f86543baf63ULL, 0x2f1e41ef10cbf28fULL, 0x52722635bbb94a88ULL, 0xae8dbae73344f04dULL, 0x410769d36688fd9aULL, 0xb3ab94de34bbb966ULL, 0x801317928df1aa9bULL, 0xa564a0f0c5113c54ULL, 0xf131d4bebdb1a117ULL, 0x7f71a2f3ea8ef5b5ULL, 0x40878549c8f655c3ULL, 0x7ef14e6944f05decULL, 0xd44663dcf55137d8ULL, 0xf2acfd0d523344fcULL, 0x0000000000000000ULL, 0x5fbc6e598ef5515aULL, 0x16cf342ef1aa8532ULL, 0xb036bd6ddb395c8dULL, 0x13754fe6dd31b712ULL, 0xbbdfa77a2d6c9094ULL, 0x89e7c8ac3a582b30ULL, 0x3c6b0e09cdfa459dULL, 0xc4ae0589c7e26521ULL, 0x49735a777f5fd468ULL, 0xcafd64561d2c9b18ULL, 0xda1502032f9fc9e1ULL, 0x8867243694268369ULL, 0x3782141e3baf8984ULL, 0x9cb5d53124704be9ULL, 0xd7db4a6f1ad3d233ULL, 0xa6f989432a93d9bfULL, 0x9d3539ab8a0ee3b0ULL, 0x53f2caaf15c7e2d1ULL, 0x6e19283c76430f15ULL, 0x3debe2936384edc4ULL, 0x5e3c82c3208bf903ULL, 0x33b8834cb94a13fdULL, 0x6470deb12e686b55ULL, 0x359fd1377a53c436ULL, 0x61caa57902f35975ULL, 0x043a975282e59a79ULL, 0xfd7f70482683129cULL, 0xc52ee913699ccd78ULL, 0x28b9ff0e7dac8d1dULL, 0x5455744e78a09d43ULL, 0xcb7d88ccb3523341ULL, 0x44bd121b4a13cfbaULL, 0x4d49cd25fdba4e11ULL, 0x3e76cb208c06082fULL, 0x3ff627ba2278a076ULL, 0xc28957f204fbb2eaULL, 0x453dfe81e46d67e3ULL, 0x94c1e6953da7621bULL, 0x2c83685cff491764ULL, 0xf32c1197fc4deca5ULL, 0x2b24d6bd922e68f6ULL, 0xb22b78449ac5113fULL, 0x48f3b6edd1217c31ULL, 0x2e9ead75beb55ad6ULL, 0x174fd8b45fd42d6bULL, 0x4ed4e4961238abfaULL, 0x92e6b4eefebeb5d0ULL, 0x46a0d7320bef8208ULL, 0x47203ba8a5912a51ULL, 0x24f75bf8e69e3e96ULL, 0xf0b1382413cf094eULL, 0xfee259fbc901f777ULL, 0x276a724b091cdb7dULL, 0xbdf8f501ee75475fULL, 0x599b3c224dec8691ULL, 0x6d84018f99c1eafeULL, 0x7498b8e41cdb39acULL, 0xe0595e71217c5bb7ULL, 0x2aa43a273c50c0afULL, 0xf50b43ec3f543b6eULL, 0x838e3e2162734f70ULL, 0xc09492db4507ff58ULL, 0x72bfea9fdfc2ee67ULL, 0x11688acf9ccdfaa0ULL, 0x1a8190d86a9836b9ULL, 0x7acbd93bc615c795ULL, 0xc7332c3a286080caULL, 0x863445e94ee87d50ULL, 0xf6966a5fd0d6de85ULL, 0xe9ad814f96d5da1cULL, 0x70a22fb69e3ea3d5ULL, 0x0a69f68d582b6440ULL, 0xb8428ec9c2ee757fULL, 0x604a49e3ac8df12cULL, 0x5b86f90b0c10cb23ULL, 0xe1d9b2eb8f02f3eeULL, 0x29391394d3d22544ULL, 0xc8e0a17f5cd0d6aaULL, 0xb58cc6a5f7a26eadULL, 0x8193fb08238f02c2ULL, 0xd5c68f465b2f9f81ULL, 0xfcff9cd288fdbac5ULL, 0x77059157f359dc47ULL, 0x1d262e3907ff492bULL, 0xfb582233e59ac557ULL, 0xddb2bce242f8b673ULL, 0x2577b76248e096cfULL, 0x6f99c4a6d83da74cULL, 0xc1147e41eb795701ULL, 0xf48baf76912a9337ULL}, { 0x3ef29d249b2c0a19ULL, 0xe9e16322b6f8622fULL, 0x5536994047757f7aULL, 0x9f4d56d5a47b0b33ULL, 0x822567466aa1174cULL, 0xb8f5057deb082fb2ULL, 0xcc48c10bf4475f53ULL, 0x373088d4275dec3aULL, 0x968f4325180aed10ULL, 0x173d232cf7016151ULL, 0xae4ed09f946fcc13ULL, 0xfd4b4741c4539873ULL, 0x1b5b3f0dd9933765ULL, 0x2ffcb0967b644052ULL, 0xe02376d20a89840cULL, 0xa3ae3a70329b18d7ULL, 0x419cbd2335de8526ULL, 0xfafebf115b7c3199ULL, 0x0397074f85aa9b0dULL, 0xc58ad4fb4836b970ULL, 0xbec60be3fc4104a8ULL, 0x1eff36dc4b708772ULL, 0x131fdc33ed8453b6ULL, 0x0844e33e341764d3ULL, 0x0ff11b6eab38cd39ULL, 0x64351f0a7761b85aULL, 0x3b5694f509cfba0eULL, 0x30857084b87245d0ULL, 0x47afb3bd2297ae3cULL, 0xf2ba5c2f6f6b554aULL, 0x74bdc4761f4f70e1ULL, 0xcfdfc64471edc45eULL, 0xe610784c1dc0af16ULL, 0x7aca29d63c113f28ULL, 0x2ded411776a859afULL, 0xac5f211e99a3d5eeULL, 0xd484f949a87ef33bULL, 0x3ce36ca596e013e4ULL, 0xd120f0983a9d432cULL, 0x6bc40464dc597563ULL, 0x69d5f5e5d1956c9eULL, 0x9ae95f043698bb24ULL, 0xc9ecc8da66a4ef44ULL, 0xd69508c8a5b2eac6ULL, 0xc40c2235c0503b80ULL, 0x38c193ba8c652103ULL, 0x1ceec75d46bc9e8fULL, 0xd331011937515ad1ULL, 0xd8e2e56886eca50fULL, 0xb137108d5779c991ULL, 0x709f3b6905ca4206ULL, 0x4feb50831680caefULL, 0xec456af3241bd238ULL, 0x58d673afe181abbeULL, 0x242f54e7cad9bf8cULL, 0x0211f1810dcc19fdULL, 0x90bc4dbb0f43c60aULL, 0x9518446a9da0761dULL, 0xa1bfcbf13f57012aULL, 0x2bde4f8961e172b5ULL, 0x27b853a84f732481ULL, 0xb0b1e643df1f4b61ULL, 0x18cc38425c39ac68ULL, 0xd2b7f7d7bf37d821ULL, 0x3103864a3014c720ULL, 0x14aa246372abfa5cULL, 0x6e600db54ebac574ULL, 0x394765740403a3f3ULL, 0x09c215f0bc71e623ULL, 0x2a58b947e987f045ULL, 0x7b4cdf18b477bdd8ULL, 0x9709b5eb906c6fe0ULL, 0x73083c268060d90bULL, 0xfedc400e41f9037eULL, 0x284948c6e44be9b8ULL, 0x728ecae808065bfbULL, 0x06330e9e17492b1aULL, 0x5950856169e7294eULL, 0xbae4f4fce6c4364fULL, 0xca7bcf95e30e7449ULL, 0x7d7fd186a33e96c2ULL, 0x52836110d85ad690ULL, 0x4dfaa1021b4cd312ULL, 0x913abb75872544faULL, 0xdd46ecb9140f1518ULL, 0x3d659a6b1e869114ULL, 0xc23f2cabd719109aULL, 0xd713fe062dd46836ULL, 0xd0a60656b2fbc1dcULL, 0x221c5a79dd909496ULL, 0xefd26dbca1b14935ULL, 0x0e77eda0235e4fc9ULL, 0xcbfd395b6b68f6b9ULL, 0x0de0eaefa6f4d4c4ULL, 0x0422ff1f1a8532e7ULL, 0xf969b85eded6aa94ULL, 0x7f6e2007aef28f3fULL, 0x3ad0623b81a938feULL, 0x6624ee8b7aada1a7ULL, 0xb682e8ddc856607bULL, 0xa78cc56f281e2a30ULL, 0xc79b257a45faa08dULL, 0x5b4174e0642b30b3ULL, 0x5f638bff7eae0254ULL, 0x4bc9af9c0c05f808ULL, 0xce59308af98b46aeULL, 0x8fc58da9cc55c388ULL, 0x803496c7676d0eb1ULL, 0xf33caae1e70dd7baULL, 0xbb6202326ea2b4bfULL, 0xd5020f87201871cbULL, 0x9d5ca754a9b712ceULL, 0x841669d87de83c56ULL, 0x8a6184785eb6739fULL, 0x420bba6cb0741e2bULL, 0xf12d5b60eac1ce47ULL, 0x76ac35f71283691cULL, 0x2c6bb7d9fecedb5fULL, 0xfccdb18f4c351a83ULL, 0x1f79c012c3160582ULL, 0xf0abadae62a74cb7ULL, 0xe1a5801c82ef06fcULL, 0x67a21845f2cb2357ULL, 0x5114665f5df04d9dULL, 0xbf40fd2d74278658ULL, 0xa0393d3fb73183daULL, 0x05a409d192e3b017ULL, 0xa9fb28cf0b4065f9ULL, 0x25a9a22942bf3d7cULL, 0xdb75e22703463e02ULL, 0xb326e10c5ab5d06cULL, 0xe7968e8295a62de6ULL, 0xb973f3b3636ead42ULL, 0xdf571d3819c30ce5ULL, 0xee549b7229d7cbc5ULL, 0x12992afd65e2d146ULL, 0xf8ef4e9056b02864ULL, 0xb7041e134030e28bULL, 0xc02edd2adad50967ULL, 0x932b4af48ae95d07ULL, 0x6fe6fb7bc6dc4784ULL, 0x239aacb755f61666ULL, 0x401a4bedbdb807d6ULL, 0x485ea8d389af6305ULL, 0xa41bc220adb4b13dULL, 0x753b32b89729f211ULL, 0x997e584bb3322029ULL, 0x1d683193ceda1c7fULL, 0xff5ab6c0c99f818eULL, 0x16bbd5e27f67e3a1ULL, 0xa59d34ee25d233cdULL, 0x98f8ae853b54a2d9ULL, 0x6df70afacb105e79ULL, 0x795d2e99b9bba425ULL, 0x8e437b6744334178ULL, 0x0186f6ce886682f0ULL, 0xebf092a3bb347bd2ULL, 0xbcd7fa62f18d1d55ULL, 0xadd9d7d011c5571eULL, 0x0bd3e471b1bdffdeULL, 0xaa6c2f808eeafef4ULL, 0x5ee57d31f6c880a4ULL, 0xf50fa47ff044fca0ULL, 0x1addc9c351f5b595ULL, 0xea76646d3352f922ULL, 0x0000000000000000ULL, 0x85909f16f58ebea6ULL, 0x46294573aaf12cccULL, 0x0a5512bf39db7d2eULL, 0x78dbd85731dd26d5ULL, 0x29cfbe086c2d6b48ULL, 0x218b5d36583a0f9bULL, 0x152cd2adfacd78acULL, 0x83a39188e2c795bcULL, 0xc3b9da655f7f926aULL, 0x9ecba01b2c1d89c3ULL, 0x07b5f8509f2fa9eaULL, 0x7ee8d6c926940dcfULL, 0x36b67e1aaf3b6ecaULL, 0x86079859702425abULL, 0xfb7849dfd31ab369ULL, 0x4c7c57cc932a51e2ULL, 0xd96413a60e8a27ffULL, 0x263ea566c715a671ULL, 0x6c71fc344376dc89ULL, 0x4a4f595284637af8ULL, 0xdaf314e98b20bcf2ULL, 0x572768c14ab96687ULL, 0x1088db7c682ec8bbULL, 0x887075f9537a6a62ULL, 0x2e7a4658f302c2a2ULL, 0x619116dbe582084dULL, 0xa87dde018326e709ULL, 0xdcc01a779c6997e8ULL, 0xedc39c3dac7d50c8ULL, 0xa60a33a1a078a8c0ULL, 0xc1a82be452b38b97ULL, 0x3f746bea134a88e9ULL, 0xa228ccbebafd9a27ULL, 0xabead94e068c7c04ULL, 0xf48952b178227e50ULL, 0x5cf48cb0fb049959ULL, 0x6017e0156de48abdULL, 0x4438b4f2a73d3531ULL, 0x8c528ae649ff5885ULL, 0xb515ef924dfcfb76ULL, 0x0c661c212e925634ULL, 0xb493195cc59a7986ULL, 0x9cda519a21d1903eULL, 0x32948105b5be5c2dULL, 0x194ace8cd45f2e98ULL, 0x438d4ca238129cdbULL, 0x9b6fa9cabefe39d4ULL, 0x81b26009ef0b8c41ULL, 0xded1ebf691a58e15ULL, 0x4e6da64d9ee6481fULL, 0x54b06f8ecf13fd8aULL, 0x49d85e1d01c9e1f5ULL, 0xafc826511c094ee3ULL, 0xf698a33075ee67adULL, 0x5ac7822eec4db243ULL, 0x8dd47c28c199da75ULL, 0x89f68337db1ce892ULL, 0xcdce37c57c21dda3ULL, 0x530597de503c5460ULL, 0x6a42f2aa543ff793ULL, 0x5d727a7e73621ba9ULL, 0xe232875307459df1ULL, 0x56a19e0fc2dfe477ULL, 0xc61dd3b4cd9c227dULL, 0xe5877f03986a341bULL, 0x949eb2a415c6f4edULL, 0x6206119460289340ULL, 0x6380e75ae84e11b0ULL, 0x8be772b6d6d0f16fULL, 0x50929091d596cf6dULL, 0xe86795ec3e9ee0dfULL, 0x7cf927482b581432ULL, 0xc86a3e14eec26db4ULL, 0x7119cda78dacc0f6ULL, 0xe40189cd100cb6ebULL, 0x92adbc3a028fdff7ULL, 0xb2a017c2d2d3529cULL, 0x200dabf8d05c8d6bULL, 0x34a78f9ba2f77737ULL, 0xe3b4719d8f231f01ULL, 0x45be423c2f5bb7c1ULL, 0xf71e55fefd88e55dULL, 0x6853032b59f3ee6eULL, 0x65b3e9c4ff073aaaULL, 0x772ac3399ae5ebecULL, 0x87816e97f842a75bULL, 0x110e2db2e0484a4bULL, 0x331277cb3dd8deddULL, 0xbd510cac79eb9fa5ULL, 0x352179552a91f5c7ULL}, { 0x8ab0a96846e06a6dULL, 0x43c7e80b4bf0b33aULL, 0x08c9b3546b161ee5ULL, 0x39f1c235eba990beULL, 0xc1bef2376606c7b2ULL, 0x2c209233614569aaULL, 0xeb01523b6fc3289aULL, 0x946953ab935aceddULL, 0x272838f63e13340eULL, 0x8b0455eca12ba052ULL, 0x77a1b2c4978ff8a2ULL, 0xa55122ca13e54086ULL, 0x2276135862d3f1cdULL, 0xdb8ddfde08b76cfeULL, 0x5d1e12c89e4a178aULL, 0x0e56816b03969867ULL, 0xee5f79953303ed59ULL, 0xafed748bab78d71dULL, 0x6d929f2df93e53eeULL, 0xf5d8a8f8ba798c2aULL, 0xf619b1698e39cf6bULL, 0x95ddaf2f749104e2ULL, 0xec2a9c80e0886427ULL, 0xce5c8fd8825b95eaULL, 0xc4e0d9993ac60271ULL, 0x4699c3a5173076f9ULL, 0x3d1b151f50a29f42ULL, 0x9ed505ea2bc75946ULL, 0x34665acfdc7f4b98ULL, 0x61b1fb53292342f7ULL, 0xc721c0080e864130ULL, 0x8693cd1696fd7b74ULL, 0x872731927136b14bULL, 0xd3446c8a63a1721bULL, 0x669a35e8a6680e4aULL, 0xcab658f239509a16ULL, 0xa4e5de4ef42e8ab9ULL, 0x37a7435ee83f08d9ULL, 0x134e6239e26c7f96ULL, 0x82791a3c2df67488ULL, 0x3f6ef00a8329163cULL, 0x8e5a7e42fdeb6591ULL, 0x5caaee4c7981ddb5ULL, 0x19f234785af1e80dULL, 0x255ddde3ed98bd70ULL, 0x50898a32a99cccacULL, 0x28ca4519da4e6656ULL, 0xae59880f4cb31d22ULL, 0x0d9798fa37d6db26ULL, 0x32f968f0b4ffcd1aULL, 0xa00f09644f258545ULL, 0xfa3ad5175e24de72ULL, 0xf46c547c5db24615ULL, 0x713e80fbff0f7e20ULL, 0x7843cf2b73d2aafaULL, 0xbd17ea36aedf62b4ULL, 0xfd111bacd16f92cfULL, 0x4abaa7dbc72d67e0ULL, 0xb3416b5dad49fad3ULL, 0xbca316b24914a88bULL, 0x15d150068aecf914ULL, 0xe27c1debe31efc40ULL, 0x4fe48c759beda223ULL, 0x7edcfd141b522c78ULL, 0x4e5070f17c26681cULL, 0xe696cac15815f3bcULL, 0x35d2a64b3bb481a7ULL, 0x800cff29fe7dfdf6ULL, 0x1ed9fac3d5baa4b0ULL, 0x6c2663a91ef599d1ULL, 0x03c1199134404341ULL, 0xf7ad4ded69f20554ULL, 0xcd9d9649b61bd6abULL, 0xc8c3bde7eadb1368ULL, 0xd131899fb02afb65ULL, 0x1d18e352e1fae7f1ULL, 0xda39235aef7ca6c1ULL, 0xa1bbf5e0a8ee4f7aULL, 0x91377805cf9a0b1eULL, 0x3138716180bf8e5bULL, 0xd9f83acbdb3ce580ULL, 0x0275e515d38b897eULL, 0x472d3f21f0fbbcc6ULL, 0x2d946eb7868ea395ULL, 0xba3c248d21942e09ULL, 0xe7223645bfde3983ULL, 0xff64feb902e41bb1ULL, 0xc97741630d10d957ULL, 0xc3cb1722b58d4eccULL, 0xa27aec719cae0c3bULL, 0x99fecb51a48c15fbULL, 0x1465ac826d27332bULL, 0xe1bd047ad75ebf01ULL, 0x79f733af941960c5ULL, 0x672ec96c41a3c475ULL, 0xc27feba6524684f3ULL, 0x64efd0fd75e38734ULL, 0xed9e60040743ae18ULL, 0xfb8e2993b9ef144dULL, 0x38453eb10c625a81ULL, 0x6978480742355c12ULL, 0x48cf42ce14a6ee9eULL, 0x1cac1fd606312dceULL, 0x7b82d6ba4792e9bbULL, 0x9d141c7b1f871a07ULL, 0x5616b80dc11c4a2eULL, 0xb849c198f21fa777ULL, 0x7ca91801c8d9a506ULL, 0xb1348e487ec273adULL, 0x41b20d1e987b3a44ULL, 0x7460ab55a3cfbbe3ULL, 0x84e628034576f20aULL, 0x1b87d16d897a6173ULL, 0x0fe27defe45d5258ULL, 0x83cde6b8ca3dbeb7ULL, 0x0c23647ed01d1119ULL, 0x7a362a3ea0592384ULL, 0xb61f40f3f1893f10ULL, 0x75d457d1440471dcULL, 0x4558da34237035b8ULL, 0xdca6116587fc2043ULL, 0x8d9b67d3c9ab26d0ULL, 0x2b0b5c88ee0e2517ULL, 0x6fe77a382ab5da90ULL, 0x269cc472d9d8fe31ULL, 0x63c41e46faa8cb89ULL, 0xb7abbc771642f52fULL, 0x7d1de4852f126f39ULL, 0xa8c6ba3024339ba0ULL, 0x600507d7cee888c8ULL, 0x8fee82c61a20afaeULL, 0x57a2448926d78011ULL, 0xfca5e72836a458f0ULL, 0x072bcebb8f4b4cbdULL, 0x497bbe4af36d24a1ULL, 0x3cafe99bb769557dULL, 0x12fa9ebd05a7b5a9ULL, 0xe8c04baa5b836bdbULL, 0x4273148fac3b7905ULL, 0x908384812851c121ULL, 0xe557d3506c55b0fdULL, 0x72ff996acb4f3d61ULL, 0x3eda0c8e64e2dc03ULL, 0xf0868356e6b949e9ULL, 0x04ead72abb0b0ffcULL, 0x17a4b5135967706aULL, 0xe3c8e16f04d5367fULL, 0xf84f30028daf570cULL, 0x1846c8fcbd3a2232ULL, 0x5b8120f7f6ca9108ULL, 0xd46fa231ecea3ea6ULL, 0x334d947453340725ULL, 0x58403966c28ad249ULL, 0xbed6f3a79a9f21f5ULL, 0x68ccb483a5fe962dULL, 0xd085751b57e1315aULL, 0xfed0023de52fd18eULL, 0x4b0e5b5f20e6addfULL, 0x1a332de96eb1ab4cULL, 0xa3ce10f57b65c604ULL, 0x108f7ba8d62c3cd7ULL, 0xab07a3a11073d8e1ULL, 0x6b0dad1291bed56cULL, 0xf2f366433532c097ULL, 0x2e557726b2cee0d4ULL, 0x0000000000000000ULL, 0xcb02a476de9b5029ULL, 0xe4e32fd48b9e7ac2ULL, 0x734b65ee2c84f75eULL, 0x6e5386bccd7e10afULL, 0x01b4fc84e7cbca3fULL, 0xcfe8735c65905fd5ULL, 0x3613bfda0ff4c2e6ULL, 0x113b872c31e7f6e8ULL, 0x2fe18ba255052aebULL, 0xe974b72ebc48a1e4ULL, 0x0abc5641b89d979bULL, 0xb46aa5e62202b66eULL, 0x44ec26b0c4bbff87ULL, 0xa6903b5b27a503c7ULL, 0x7f680190fc99e647ULL, 0x97a84a3aa71a8d9cULL, 0xdd12ede16037ea7cULL, 0xc554251ddd0dc84eULL, 0x88c54c7d956be313ULL, 0x4d91696048662b5dULL, 0xb08072cc9909b992ULL, 0xb5de5962c5c97c51ULL, 0x81b803ad19b637c9ULL, 0xb2f597d94a8230ecULL, 0x0b08aac55f565da4ULL, 0xf1327fd2017283d6ULL, 0xad98919e78f35e63ULL, 0x6ab9519676751f53ULL, 0x24e921670a53774fULL, 0xb9fd3d1c15d46d48ULL, 0x92f66194fbda485fULL, 0x5a35dc7311015b37ULL, 0xded3f4705477a93dULL, 0xc00a0eb381cd0d8dULL, 0xbb88d809c65fe436ULL, 0x16104997beacba55ULL, 0x21b70ac95693b28cULL, 0x59f4c5e225411876ULL, 0xd5db5eb50b21f499ULL, 0x55d7a19cf55c096fULL, 0xa97246b4c3f8519fULL, 0x8552d487a2bd3835ULL, 0x54635d181297c350ULL, 0x23c2efdc85183bf2ULL, 0x9f61f96ecc0c9379ULL, 0x534893a39ddc8fedULL, 0x5edf0b59aa0a54cbULL, 0xac2c6d1a9f38945cULL, 0xd7aebba0d8aa7de7ULL, 0x2abfa00c09c5ef28ULL, 0xd84cc64f3cf72fbfULL, 0x2003f64db15878b3ULL, 0xa724c7dfc06ec9f8ULL, 0x069f323f68808682ULL, 0xcc296acd51d01c94ULL, 0x055e2bae5cc0c5c3ULL, 0x6270e2c21d6301b6ULL, 0x3b842720382219c0ULL, 0xd2f0900e846ab824ULL, 0x52fc6f277a1745d2ULL, 0xc6953c8ce94d8b0fULL, 0xe009f8fe3095753eULL, 0x655b2c7992284d0bULL, 0x984a37d54347dfc4ULL, 0xeab5aebf8808e2a5ULL, 0x9a3fd2c090cc56baULL, 0x9ca0e0fff84cd038ULL, 0x4c2595e4afade162ULL, 0xdf6708f4b3bc6302ULL, 0xbf620f237d54ebcaULL, 0x93429d101c118260ULL, 0x097d4fd08cddd4daULL, 0x8c2f9b572e60ecefULL, 0x708a7c7f18c4b41fULL, 0x3a30dba4dfe9d3ffULL, 0x4006f19a7fb0f07bULL, 0x5f6bf7dd4dc19ef4ULL, 0x1f6d064732716e8fULL, 0xf9fbcc866a649d33ULL, 0x308c8de567744464ULL, 0x8971b0f972a0292cULL, 0xd61a47243f61b7d8ULL, 0xefeb8511d4c82766ULL, 0x961cb6be40d147a3ULL, 0xaab35f25f7b812deULL, 0x76154e407044329dULL, 0x513d76b64e570693ULL, 0xf3479ac7d2f90aa8ULL, 0x9b8b2e4477079c85ULL, 0x297eb99d3d85ac69ULL}, { 0x7e37e62dfc7d40c3ULL, 0x776f25a4ee939e5bULL, 0xe045c850dd8fb5adULL, 0x86ed5ba711ff1952ULL, 0xe91d0bd9cf616b35ULL, 0x37e0ab256e408ffbULL, 0x9607f6c031025a7aULL, 0x0b02f5e116d23c9dULL, 0xf3d8486bfb50650cULL, 0x621cff27c40875f5ULL, 0x7d40cb71fa5fd34aULL, 0x6daa6616daa29062ULL, 0x9f5f354923ec84e2ULL, 0xec847c3dc507c3b3ULL, 0x025a3668043ce205ULL, 0xa8bf9e6c4dac0b19ULL, 0xfa808be2e9bebb94ULL, 0xb5b99c5277c74fa3ULL, 0x78d9bc95f0397bccULL, 0xe332e50cdbad2624ULL, 0xc74fce129332797eULL, 0x1729eceb2ea709abULL, 0xc2d6b9f69954d1f8ULL, 0x5d898cbfbab8551aULL, 0x859a76fb17dd8adbULL, 0x1be85886362f7fb5ULL, 0xf6413f8ff136cd8aULL, 0xd3110fa5bbb7e35cULL, 0x0a2feed514cc4d11ULL, 0xe83010edcd7f1ab9ULL, 0xa1e75de55f42d581ULL, 0xeede4a55c13b21b6ULL, 0xf2f5535ff94e1480ULL, 0x0cc1b46d1888761eULL, 0xbce15fdb6529913bULL, 0x2d25e8975a7181c2ULL, 0x71817f1ce2d7a554ULL, 0x2e52c5cb5c53124bULL, 0xf9f7a6beef9c281dULL, 0x9e722e7d21f2f56eULL, 0xce170d9b81dca7e6ULL, 0x0e9b82051cb4941bULL, 0x1e712f623c49d733ULL, 0x21e45cfa42f9f7dcULL, 0xcb8e7a7f8bba0f60ULL, 0x8e98831a010fb646ULL, 0x474ccf0d8e895b23ULL, 0xa99285584fb27a95ULL, 0x8cc2b57205335443ULL, 0x42d5b8e984eff3a5ULL, 0x012d1b34021e718cULL, 0x57a6626aae74180bULL, 0xff19fc06e3d81312ULL, 0x35ba9d4d6a7c6dfeULL, 0xc9d44c178f86ed65ULL, 0x506523e6a02e5288ULL, 0x03772d5c06229389ULL, 0x8b01f4fe0b691ec0ULL, 0xf8dabd8aed825991ULL, 0x4c4e3aec985b67beULL, 0xb10df0827fbf96a9ULL, 0x6a69279ad4f8dae1ULL, 0xe78689dcd3d5ff2eULL, 0x812e1a2b1fa553d1ULL, 0xfbad90d6eba0ca18ULL, 0x1ac543b234310e39ULL, 0x1604f7df2cb97827ULL, 0xa6241c6951189f02ULL, 0x753513cceaaf7c5eULL, 0x64f2a59fc84c4efaULL, 0x247d2b1e489f5f5aULL, 0xdb64d718ab474c48ULL, 0x79f4a7a1f2270a40ULL, 0x1573da832a9bebaeULL, 0x3497867968621c72ULL, 0x514838d2a2302304ULL, 0xf0af6537fd72f685ULL, 0x1d06023e3a6b44baULL, 0x678588c3ce6edd73ULL, 0x66a893f7cc70acffULL, 0xd4d24e29b5eda9dfULL, 0x3856321470ea6a6cULL, 0x07c3418c0e5a4a83ULL, 0x2bcbb22f5635bacdULL, 0x04b46cd00878d90aULL, 0x06ee5ab80c443b0fULL, 0x3b211f4876c8f9e5ULL, 0x0958c38912eede98ULL, 0xd14b39cdbf8b0159ULL, 0x397b292072f41be0ULL, 0x87c0409313e168deULL, 0xad26e98847caa39fULL, 0x4e140c849c6785bbULL, 0xd5ff551db7f3d853ULL, 0xa0ca46d15d5ca40dULL, 0xcd6020c787fe346fULL, 0x84b76dcf15c3fb57ULL, 0xdefda0fca121e4ceULL, 0x4b8d7b6096012d3dULL, 0x9ac642ad298a2c64ULL, 0x0875d8bd10f0af14ULL, 0xb357c6ea7b8374acULL, 0x4d6321d89a451632ULL, 0xeda96709c719b23fULL, 0xf76c24bbf328bc06ULL, 0xc662d526912c08f2ULL, 0x3ce25ec47892b366ULL, 0xb978283f6f4f39bdULL, 0xc08c8f9e9d6833fdULL, 0x4f3917b09e79f437ULL, 0x593de06fb2c08c10ULL, 0xd6887841b1d14bdaULL, 0x19b26eee32139db0ULL, 0xb494876675d93e2fULL, 0x825937771987c058ULL, 0x90e9ac783d466175ULL, 0xf1827e03ff6c8709ULL, 0x945dc0a8353eb87fULL, 0x4516f9658ab5b926ULL, 0x3f9573987eb020efULL, 0xb855330b6d514831ULL, 0x2ae6a91b542bcb41ULL, 0x6331e413c6160479ULL, 0x408f8e8180d311a0ULL, 0xeff35161c325503aULL, 0xd06622f9bd9570d5ULL, 0x8876d9a20d4b8d49ULL, 0xa5533135573a0c8bULL, 0xe168d364df91c421ULL, 0xf41b09e7f50a2f8fULL, 0x12b09b0f24c1a12dULL, 0xda49cc2ca9593dc4ULL, 0x1f5c34563e57a6bfULL, 0x54d14f36a8568b82ULL, 0xaf7cdfe043f6419aULL, 0xea6a2685c943f8bcULL, 0xe5dcbfb4d7e91d2bULL, 0xb27addde799d0520ULL, 0x6b443caed6e6ab6dULL, 0x7bae91c9f61be845ULL, 0x3eb868ac7cae5163ULL, 0x11c7b65322e332a4ULL, 0xd23c1491b9a992d0ULL, 0x8fb5982e0311c7caULL, 0x70ac6428e0c9d4d8ULL, 0x895bc2960f55fcc5ULL, 0x76423e90ec8defd7ULL, 0x6ff0507ede9e7267ULL, 0x3dcf45f07a8cc2eaULL, 0x4aa06054941f5cb1ULL, 0x5810fb5bb0defd9cULL, 0x5efea1e3bc9ac693ULL, 0x6edd4b4adc8003ebULL, 0x741808f8e8b10dd2ULL, 0x145ec1b728859a22ULL, 0x28bc9f7350172944ULL, 0x270a06424ebdccd3ULL, 0x972aedf4331c2bf6ULL, 0x059977e40a66a886ULL, 0x2550302a4a812ed6ULL, 0xdd8a8da0a7037747ULL, 0xc515f87a970e9b7bULL, 0x3023eaa9601ac578ULL, 0xb7e3aa3a73fbada6ULL, 0x0fb699311eaae597ULL, 0x0000000000000000ULL, 0x310ef19d6204b4f4ULL, 0x229371a644db6455ULL, 0x0decaf591a960792ULL, 0x5ca4978bb8a62496ULL, 0x1c2b190a38753536ULL, 0x41a295b582cd602cULL, 0x3279dcc16426277dULL, 0xc1a194aa9f764271ULL, 0x139d803b26dfd0a1ULL, 0xae51c4d441e83016ULL, 0xd813fa44ad65dfc1ULL, 0xac0bf2bc45d4d213ULL, 0x23be6a9246c515d9ULL, 0x49d74d08923dcf38ULL, 0x9d05032127d066e7ULL, 0x2f7fdeff5e4d63c7ULL, 0xa47e2a0155247d07ULL, 0x99b16ff12fa8bfedULL, 0x4661d4398c972aafULL, 0xdfd0bbc8a33f9542ULL, 0xdca79694a51d06cbULL, 0xb020ebb67da1e725ULL, 0xba0f0563696daa34ULL, 0xe4f1a480d5f76ca7ULL, 0xc438e34e9510eaf7ULL, 0x939e81243b64f2fcULL, 0x8defae46072d25cfULL, 0x2c08f3a3586ff04eULL, 0xd7a56375b3cf3a56ULL, 0x20c947ce40e78650ULL, 0x43f8a3dd86f18229ULL, 0x568b795eac6a6987ULL, 0x8003011f1dbb225dULL, 0xf53612d3f7145e03ULL, 0x189f75da300dec3cULL, 0x9570db9c3720c9f3ULL, 0xbb221e576b73dbb8ULL, 0x72f65240e4f536ddULL, 0x443be25188abc8aaULL, 0xe21ffe38d9b357a8ULL, 0xfd43ca6ee7e4f117ULL, 0xcaa3614b89a47eecULL, 0xfe34e732e1c6629eULL, 0x83742c431b99b1d4ULL, 0xcf3a16af83c2d66aULL, 0xaae5a8044990e91cULL, 0x26271d764ca3bd5fULL, 0x91c4b74c3f5810f9ULL, 0x7c6dd045f841a2c6ULL, 0x7f1afd19fe63314fULL, 0xc8f957238d989ce9ULL, 0xa709075d5306ee8eULL, 0x55fc5402aa48fa0eULL, 0x48fa563c9023beb4ULL, 0x65dfbeabca523f76ULL, 0x6c877d22d8bce1eeULL, 0xcc4d3bf385e045e3ULL, 0xbebb69b36115733eULL, 0x10eaad6720fd4328ULL, 0xb6ceb10e71e5dc2aULL, 0xbdcc44ef6737e0b7ULL, 0x523f158ea412b08dULL, 0x989c74c52db6ce61ULL, 0x9beb59992b945de8ULL, 0x8a2cefca09776f4cULL, 0xa3bd6b8d5b7e3784ULL, 0xeb473db1cb5d8930ULL, 0xc3fba2c29b4aa074ULL, 0x9c28181525ce176bULL, 0x683311f2d0c438e4ULL, 0x5fd3bad7be84b71fULL, 0xfc6ed15ae5fa809bULL, 0x36cdb0116c5efe77ULL, 0x29918447520958c8ULL, 0xa29070b959604608ULL, 0x53120ebaa60cc101ULL, 0x3a0c047c74d68869ULL, 0x691e0ac6d2da4968ULL, 0x73db4974e6eb4751ULL, 0x7a838afdf40599c9ULL, 0x5a4acd33b4e21f99ULL, 0x6046c94fc03497f0ULL, 0xe6ab92e8d1cb8ea2ULL, 0x3354c7f5663856f1ULL, 0xd93ee170af7bae4dULL, 0x616bd27bc22ae67cULL, 0x92b39a10397a8370ULL, 0xabc8b3304b8e9890ULL, 0xbf967287630b02b2ULL, 0x5b67d607b6fc6e15ULL}, { 0xd031c397ce553fe6ULL, 0x16ba5b01b006b525ULL, 0xa89bade6296e70c8ULL, 0x6a1f525d77d3435bULL, 0x6e103570573dfa0bULL, 0x660efb2a17fc95abULL, 0x76327a9e97634bf6ULL, 0x4bad9d6462458bf5ULL, 0xf1830caedbc3f748ULL, 0xc5c8f542669131ffULL, 0x95044a1cdc48b0cbULL, 0x892962df3cf8b866ULL, 0xb0b9e208e930c135ULL, 0xa14fb3f0611a767cULL, 0x8d2605f21c160136ULL, 0xd6b71922fecc549eULL, 0x37089438a5907d8bULL, 0x0b5da38e5803d49cULL, 0x5a5bcc9cea6f3cbcULL, 0xedae246d3b73ffe5ULL, 0xd2b87e0fde22edceULL, 0x5e54abb1ca8185ecULL, 0x1de7f88fe80561b9ULL, 0xad5e1a870135a08cULL, 0x2f2adbd665cecc76ULL, 0x5780b5a782f58358ULL, 0x3edc8a2eede47b3fULL, 0xc9d95c3506bee70fULL, 0x83be111d6c4e05eeULL, 0xa603b90959367410ULL, 0x103c81b4809fde5dULL, 0x2c69b6027d0c774aULL, 0x399080d7d5c87953ULL, 0x09d41e16487406b4ULL, 0xcdd63b1826505e5fULL, 0xf99dc2f49b0298e8ULL, 0x9cd0540a943cb67fULL, 0xbca84b7f891f17c5ULL, 0x723d1db3b78df2a6ULL, 0x78aa6e71e73b4f2eULL, 0x1433e699a071670dULL, 0x84f21be454620782ULL, 0x98df3327b4d20f2fULL, 0xf049dce2d3769e5cULL, 0xdb6c60199656eb7aULL, 0x648746b2078b4783ULL, 0x32cd23598dcbadcfULL, 0x1ea4955bf0c7da85ULL, 0xe9a143401b9d46b5ULL, 0xfd92a5d9bbec21b8ULL, 0xc8138c790e0b8e1bULL, 0x2ee00b9a6d7ba562ULL, 0xf85712b893b7f1fcULL, 0xeb28fed80bea949dULL, 0x564a65eb8a40ea4cULL, 0x6c9988e8474a2823ULL, 0x4535898b121d8f2dULL, 0xabd8c03231accbf4ULL, 0xba2e91cab9867cbdULL, 0x7960be3def8e263aULL, 0x0c11a977602fd6f0ULL, 0xcb50e1ad16c93527ULL, 0xeae22e94035ffd89ULL, 0x2866d12f5de2ce1aULL, 0xff1b1841ab9bf390ULL, 0x9f9339de8cfe0d43ULL, 0x964727c8c48a0bf7ULL, 0x524502c6aaae531cULL, 0x9b9c5ef3ac10b413ULL, 0x4fa2fa4942ab32a5ULL, 0x3f165a62e551122bULL, 0xc74148da76e6e3d7ULL, 0x924840e5e464b2a7ULL, 0xd372ae43d69784daULL, 0x233b72a105e11a86ULL, 0xa48a04914941a638ULL, 0xb4b68525c9de7865ULL, 0xddeabaaca6cf8002ULL, 0x0a9773c250b6bd88ULL, 0xc284ffbb5ebd3393ULL, 0x8ba0df472c8f6a4eULL, 0x2aef6cb74d951c32ULL, 0x427983722a318d41ULL, 0x73f7cdffbf389bb2ULL, 0x074c0af9382c026cULL, 0x8a6a0f0b243a035aULL, 0x6fdae53c5f88931fULL, 0xc68b98967e538ac3ULL, 0x44ff59c71aa8e639ULL, 0xe2fce0ce439e9229ULL, 0xa20cde2479d8cd40ULL, 0x19e89fa2c8ebd8e9ULL, 0xf446bbcff398270cULL, 0x43b3533e2284e455ULL, 0xd82f0dcd8e945046ULL, 0x51066f12b26ce820ULL, 0xe73957af6bc5426dULL, 0x081ece5a40c16fa0ULL, 0x3b193d4fc5bfab7bULL, 0x7fe66488df174d42ULL, 0x0e9814ef705804d8ULL, 0x8137ac857c39d7c6ULL, 0xb1733244e185a821ULL, 0x695c3f896f11f867ULL, 0xf6cf0657e3eff524ULL, 0x1aabf276d02963d5ULL, 0x2da3664e75b91e5eULL, 0x0289bd981077d228ULL, 0x90c1fd7df413608fULL, 0x3c5537b6fd93a917ULL, 0xaa12107e3919a2e0ULL, 0x0686dab530996b78ULL, 0xdaa6b0559ee3826eULL, 0xc34e2ff756085a87ULL, 0x6d5358a44fff4137ULL, 0xfc587595b35948acULL, 0x7ca5095cc7d5f67eULL, 0xfb147f6c8b754ac0ULL, 0xbfeb26ab91ddacf9ULL, 0x6896efc567a49173ULL, 0xca9a31e11e7c5c33ULL, 0xbbe44186b13315a9ULL, 0x0ddb793b689abfe4ULL, 0x70b4a02ba7fa208eULL, 0xe47a3a7b7307f951ULL, 0x8cecd5be14a36822ULL, 0xeeed49b923b144d9ULL, 0x17708b4db8b3dc31ULL, 0x6088219f2765fed3ULL, 0xb3fa8fdcf1f27a09ULL, 0x910b2d31fca6099bULL, 0x0f52c4a378ed6dccULL, 0x50ccbf5ebad98134ULL, 0x6bd582117f662a4fULL, 0x94ce9a50d4fdd9dfULL, 0x2b25bcfb45207526ULL, 0x67c42b661f49fcbfULL, 0x492420fc723259ddULL, 0x03436dd418c2bb3cULL, 0x1f6e4517f872b391ULL, 0xa08563bc69af1f68ULL, 0xd43ea4baeebb86b6ULL, 0x01cad04c08b56914ULL, 0xac94cacb0980c998ULL, 0x54c3d8739a373864ULL, 0x26fec5c02dbacac2ULL, 0xdea9d778be0d3b3eULL, 0x040f672d20eeb950ULL, 0xe5b0ea377bb29045ULL, 0xf30ab136cbb42560ULL, 0x62019c0737122cfbULL, 0xe86b930c13282fa1ULL, 0xcc1ceb542ee5374bULL, 0x538fd28aa21b3a08ULL, 0x1b61223ad89c0ac1ULL, 0x36c24474ad25149fULL, 0x7a23d3e9f74c9d06ULL, 0xbe21f6e79968c5edULL, 0xcf5f868036278c77ULL, 0xf705d61beb5a9c30ULL, 0x4d2b47d152dce08dULL, 0x5f9e7bfdc234ecf8ULL, 0x247778583dcd18eaULL, 0x867ba67c4415d5aaULL, 0x4ce1979d5a698999ULL, 0x0000000000000000ULL, 0xec64f42133c696f1ULL, 0xb57c5569c16b1171ULL, 0xc1c7926f467f88afULL, 0x654d96fe0f3e2e97ULL, 0x15f936d5a8c40e19ULL, 0xb8a72c52a9f1ae95ULL, 0xa9517daa21db19dcULL, 0x58d27104fa18ee94ULL, 0x5918a148f2ad8780ULL, 0x5cdd1629daf657c4ULL, 0x8274c15164fb6cfaULL, 0xd1fb13dbc6e056f2ULL, 0x7d6fd910cf609f6aULL, 0xb63f38bdd9a9aa4dULL, 0x3d9fe7faf526c003ULL, 0x74bbc706871499deULL, 0xdf630734b6b8522aULL, 0x3ad3ed03cd0ac26fULL, 0xfadeaf2083c023d4ULL, 0xc00d42234ecae1bbULL, 0x8538cba85cd76e96ULL, 0xc402250e6e2458ebULL, 0x47bc3413026a5d05ULL, 0xafd7a71f114272a4ULL, 0x978df784cc3f62e3ULL, 0xb96dfc1ea144c781ULL, 0x21b2cf391596c8aeULL, 0x318e4e8d950916f3ULL, 0xce9556cc3e92e563ULL, 0x385a509bdd7d1047ULL, 0x358129a0b5e7afa3ULL, 0xe6f387e363702b79ULL, 0xe0755d5653e94001ULL, 0x7be903a5fff9f412ULL, 0x12b53c2c90e80c75ULL, 0x3307f315857ec4dbULL, 0x8fafb86a0c61d31eULL, 0xd9e5dd8186213952ULL, 0x77f8aad29fd622e2ULL, 0x25bda814357871feULL, 0x7571174a8fa1f0caULL, 0x137fec60985d6561ULL, 0x30449ec19dbc7fe7ULL, 0xa540d4dd41f4cf2cULL, 0xdc206ae0ae7ae916ULL, 0x5b911cd0e2da55a8ULL, 0xb2305f90f947131dULL, 0x344bf9ecbd52c6b7ULL, 0x5d17c665d2433ed0ULL, 0x18224feec05eb1fdULL, 0x9e59e992844b6457ULL, 0x9a568ebfa4a5dd07ULL, 0xa3c60e68716da454ULL, 0x7e2cb4c4d7a22456ULL, 0x87b176304ca0bcbeULL, 0x413aeea632f3367dULL, 0x9915e36bbc67663bULL, 0x40f03eea3a465f69ULL, 0x1c2d28c3e0b008adULL, 0x4e682a054a1e5bb1ULL, 0x05c5b761285bd044ULL, 0xe1bf8d1a5b5c2915ULL, 0xf2c0617ac3014c74ULL, 0xb7f5e8f1d11cc359ULL, 0x63cb4c4b3fa745efULL, 0x9d1a84469c89df6bULL, 0xe33630824b2bfb3dULL, 0xd5f474f6e60eefa2ULL, 0xf58c6b83fb2d4e18ULL, 0x4676e45f0adf3411ULL, 0x20781f751d23a1baULL, 0xbd629b3381aa7ed1ULL, 0xae1d775319f71bb0ULL, 0xfed1c80da32e9a84ULL, 0x5509083f92825170ULL, 0x29ac01635557a70eULL, 0xa7c9694551831d04ULL, 0x8e65682604d4ba0aULL, 0x11f651f8882ab749ULL, 0xd77dc96ef6793d8aULL, 0xef2799f52b042dcdULL, 0x48eef0b07a8730c9ULL, 0x22f1a2ed0d547392ULL, 0x6142f1d32fd097c7ULL, 0x4a674d286af0e2e1ULL, 0x80fd7cc9748cbed2ULL, 0x717e7067af4f499aULL, 0x938290a9ecd1dbb3ULL, 0x88e3b293344dd172ULL, 0x2734158c250fa3d6ULL} }; #endif libengine-gost-openssl1.1-1.1.0.1/gosthash2012_ref.h000066400000000000000000000037361315100554000216140ustar00rootroot00000000000000/* * Portable implementation of core functions for GOST R 34.11-2012. * * Copyright (c) 2013 Cryptocom LTD. * This file is distributed under the same license as OpenSSL. * * Author: Alexey Degtyarev * */ #ifdef __GOST3411_HAS_SSE2__ # error "GOST R 34.11-2012: portable implementation disabled in config.h" #endif #define X(x, y, z) { \ z->QWORD[0] = x->QWORD[0] ^ y->QWORD[0]; \ z->QWORD[1] = x->QWORD[1] ^ y->QWORD[1]; \ z->QWORD[2] = x->QWORD[2] ^ y->QWORD[2]; \ z->QWORD[3] = x->QWORD[3] ^ y->QWORD[3]; \ z->QWORD[4] = x->QWORD[4] ^ y->QWORD[4]; \ z->QWORD[5] = x->QWORD[5] ^ y->QWORD[5]; \ z->QWORD[6] = x->QWORD[6] ^ y->QWORD[6]; \ z->QWORD[7] = x->QWORD[7] ^ y->QWORD[7]; \ } #ifndef __GOST3411_BIG_ENDIAN__ # define __XLPS_FOR for (_i = 0; _i <= 7; _i++) # define _datai _i #else # define __XLPS_FOR for (_i = 7; _i >= 0; _i--) # define _datai 7 - _i #endif #define XLPS(x, y, data) { \ register unsigned long long r0, r1, r2, r3, r4, r5, r6, r7; \ int _i; \ \ r0 = x->QWORD[0] ^ y->QWORD[0]; \ r1 = x->QWORD[1] ^ y->QWORD[1]; \ r2 = x->QWORD[2] ^ y->QWORD[2]; \ r3 = x->QWORD[3] ^ y->QWORD[3]; \ r4 = x->QWORD[4] ^ y->QWORD[4]; \ r5 = x->QWORD[5] ^ y->QWORD[5]; \ r6 = x->QWORD[6] ^ y->QWORD[6]; \ r7 = x->QWORD[7] ^ y->QWORD[7]; \ \ \ __XLPS_FOR {\ data->QWORD[_datai] = Ax[0][(r0 >> (_i << 3)) & 0xFF]; \ data->QWORD[_datai] ^= Ax[1][(r1 >> (_i << 3)) & 0xFF]; \ data->QWORD[_datai] ^= Ax[2][(r2 >> (_i << 3)) & 0xFF]; \ data->QWORD[_datai] ^= Ax[3][(r3 >> (_i << 3)) & 0xFF]; \ data->QWORD[_datai] ^= Ax[4][(r4 >> (_i << 3)) & 0xFF]; \ data->QWORD[_datai] ^= Ax[5][(r5 >> (_i << 3)) & 0xFF]; \ data->QWORD[_datai] ^= Ax[6][(r6 >> (_i << 3)) & 0xFF]; \ data->QWORD[_datai] ^= Ax[7][(r7 >> (_i << 3)) & 0xFF]; \ }\ } #define ROUND(i, Ki, data) { \ XLPS(Ki, (&C[i]), Ki); \ XLPS(Ki, data, data); \ } libengine-gost-openssl1.1-1.1.0.1/gosthash2012_sse2.h000066400000000000000000000150331315100554000217050ustar00rootroot00000000000000/* * Implementation of core functions for GOST R 34.11-2012 using SSE2. * * Copyright (c) 2013 Cryptocom LTD. * This file is distributed under the same license as OpenSSL. * * Author: Alexey Degtyarev * */ #ifndef __GOST3411_HAS_SSE2__ # error "GOST R 34.11-2012: SSE2 not enabled" #endif #include #include #define LO(v) ((unsigned char) (v)) #define HI(v) ((unsigned char) (((unsigned int) (v)) >> 8)) #ifdef __i386__ # define EXTRACT EXTRACT32 #else # define EXTRACT EXTRACT64 #endif #ifndef __ICC # define _mm_cvtsi64_m64(v) (__m64) v # define _mm_cvtm64_si64(v) (long long) v #endif #define LOAD(P, xmm0, xmm1, xmm2, xmm3) { \ const __m128i *__m128p = (const __m128i *) &P[0]; \ xmm0 = _mm_load_si128(&__m128p[0]); \ xmm1 = _mm_load_si128(&__m128p[1]); \ xmm2 = _mm_load_si128(&__m128p[2]); \ xmm3 = _mm_load_si128(&__m128p[3]); \ } #define UNLOAD(P, xmm0, xmm1, xmm2, xmm3) { \ __m128i *__m128p = (__m128i *) &P[0]; \ _mm_store_si128(&__m128p[0], xmm0); \ _mm_store_si128(&__m128p[1], xmm1); \ _mm_store_si128(&__m128p[2], xmm2); \ _mm_store_si128(&__m128p[3], xmm3); \ } #define X128R(xmm0, xmm1, xmm2, xmm3, xmm4, xmm5, xmm6, xmm7) { \ xmm0 = _mm_xor_si128(xmm0, xmm4); \ xmm1 = _mm_xor_si128(xmm1, xmm5); \ xmm2 = _mm_xor_si128(xmm2, xmm6); \ xmm3 = _mm_xor_si128(xmm3, xmm7); \ } #define X128M(P, xmm0, xmm1, xmm2, xmm3) { \ const __m128i *__m128p = (const __m128i *) &P[0]; \ xmm0 = _mm_xor_si128(xmm0, _mm_load_si128(&__m128p[0])); \ xmm1 = _mm_xor_si128(xmm1, _mm_load_si128(&__m128p[1])); \ xmm2 = _mm_xor_si128(xmm2, _mm_load_si128(&__m128p[2])); \ xmm3 = _mm_xor_si128(xmm3, _mm_load_si128(&__m128p[3])); \ } #define _mm_xor_64(mm0, mm1) _mm_xor_si64(mm0, _mm_cvtsi64_m64(mm1)) #define EXTRACT32(row, xmm0, xmm1, xmm2, xmm3, xmm4) { \ register unsigned short ax; \ __m64 mm0, mm1; \ \ ax = (unsigned short) _mm_extract_epi16(xmm0, row + 0); \ mm0 = _mm_cvtsi64_m64(Ax[0][LO(ax)]); \ mm1 = _mm_cvtsi64_m64(Ax[0][HI(ax)]); \ \ ax = (unsigned short) _mm_extract_epi16(xmm0, row + 4); \ mm0 = _mm_xor_64(mm0, Ax[1][LO(ax)]); \ mm1 = _mm_xor_64(mm1, Ax[1][HI(ax)]); \ \ ax = (unsigned short) _mm_extract_epi16(xmm1, row + 0); \ mm0 = _mm_xor_64(mm0, Ax[2][LO(ax)]); \ mm1 = _mm_xor_64(mm1, Ax[2][HI(ax)]); \ \ ax = (unsigned short) _mm_extract_epi16(xmm1, row + 4); \ mm0 = _mm_xor_64(mm0, Ax[3][LO(ax)]); \ mm1 = _mm_xor_64(mm1, Ax[3][HI(ax)]); \ \ ax = (unsigned short) _mm_extract_epi16(xmm2, row + 0); \ mm0 = _mm_xor_64(mm0, Ax[4][LO(ax)]); \ mm1 = _mm_xor_64(mm1, Ax[4][HI(ax)]); \ \ ax = (unsigned short) _mm_extract_epi16(xmm2, row + 4); \ mm0 = _mm_xor_64(mm0, Ax[5][LO(ax)]); \ mm1 = _mm_xor_64(mm1, Ax[5][HI(ax)]); \ \ ax = (unsigned short) _mm_extract_epi16(xmm3, row + 0); \ mm0 = _mm_xor_64(mm0, Ax[6][LO(ax)]); \ mm1 = _mm_xor_64(mm1, Ax[6][HI(ax)]); \ \ ax = (unsigned short) _mm_extract_epi16(xmm3, row + 4); \ mm0 = _mm_xor_64(mm0, Ax[7][LO(ax)]); \ mm1 = _mm_xor_64(mm1, Ax[7][HI(ax)]); \ \ xmm4 = _mm_set_epi64(mm1, mm0); \ } #define __EXTRACT64(row, xmm0, xmm1, xmm2, xmm3, xmm4) { \ __m128i tmm4; \ register unsigned long long r0, r1; \ r0 = Ax[0][_mm_extract_epi8(xmm0, row + 0)]; \ r0 ^= Ax[1][_mm_extract_epi8(xmm0, row + 8)]; \ r0 ^= Ax[2][_mm_extract_epi8(xmm1, row + 0)]; \ r0 ^= Ax[3][_mm_extract_epi8(xmm1, row + 8)]; \ r0 ^= Ax[4][_mm_extract_epi8(xmm2, row + 0)]; \ r0 ^= Ax[5][_mm_extract_epi8(xmm2, row + 8)]; \ r0 ^= Ax[6][_mm_extract_epi8(xmm3, row + 0)]; \ r0 ^= Ax[7][_mm_extract_epi8(xmm3, row + 8)]; \ \ r1 = Ax[0][_mm_extract_epi8(xmm0, row + 1)]; \ r1 ^= Ax[1][_mm_extract_epi8(xmm0, row + 9)]; \ r1 ^= Ax[2][_mm_extract_epi8(xmm1, row + 1)]; \ r1 ^= Ax[3][_mm_extract_epi8(xmm1, row + 9)]; \ r1 ^= Ax[4][_mm_extract_epi8(xmm2, row + 1)]; \ r1 ^= Ax[5][_mm_extract_epi8(xmm2, row + 9)]; \ r1 ^= Ax[6][_mm_extract_epi8(xmm3, row + 1)]; \ r1 ^= Ax[7][_mm_extract_epi8(xmm3, row + 9)]; \ xmm4 = _mm_cvtsi64_si128((long long) r0); \ tmm4 = _mm_cvtsi64_si128((long long) r1); \ xmm4 = _mm_unpacklo_epi64(xmm4, tmm4); \ } #define EXTRACT64(row, xmm0, xmm1, xmm2, xmm3, xmm4) { \ __m128i tmm4; \ register unsigned short ax; \ register unsigned long long r0, r1; \ \ ax = (unsigned short) _mm_extract_epi16(xmm0, row + 0); \ r0 = Ax[0][LO(ax)]; \ r1 = Ax[0][HI(ax)]; \ \ ax = (unsigned short) _mm_extract_epi16(xmm0, row + 4); \ r0 ^= Ax[1][LO(ax)]; \ r1 ^= Ax[1][HI(ax)]; \ \ ax = (unsigned short) _mm_extract_epi16(xmm1, row + 0); \ r0 ^= Ax[2][LO(ax)]; \ r1 ^= Ax[2][HI(ax)]; \ \ ax = (unsigned short) _mm_extract_epi16(xmm1, row + 4); \ r0 ^= Ax[3][LO(ax)]; \ r1 ^= Ax[3][HI(ax)]; \ \ ax = (unsigned short) _mm_extract_epi16(xmm2, row + 0); \ r0 ^= Ax[4][LO(ax)]; \ r1 ^= Ax[4][HI(ax)]; \ \ ax = (unsigned short) _mm_extract_epi16(xmm2, row + 4); \ r0 ^= Ax[5][LO(ax)]; \ r1 ^= Ax[5][HI(ax)]; \ \ ax = (unsigned short) _mm_extract_epi16(xmm3, row + 0); \ r0 ^= Ax[6][LO(ax)]; \ r1 ^= Ax[6][HI(ax)]; \ \ ax = (unsigned short) _mm_extract_epi16(xmm3, row + 4); \ r0 ^= Ax[7][LO(ax)]; \ r1 ^= Ax[7][HI(ax)]; \ \ xmm4 = _mm_cvtsi64_si128((long long) r0); \ tmm4 = _mm_cvtsi64_si128((long long) r1); \ xmm4 = _mm_unpacklo_epi64(xmm4, tmm4); \ } #define XLPS128M(P, xmm0, xmm1, xmm2, xmm3) { \ __m128i tmm0, tmm1, tmm2, tmm3; \ X128M(P, xmm0, xmm1, xmm2, xmm3); \ \ EXTRACT(0, xmm0, xmm1, xmm2, xmm3, tmm0); \ EXTRACT(1, xmm0, xmm1, xmm2, xmm3, tmm1); \ EXTRACT(2, xmm0, xmm1, xmm2, xmm3, tmm2); \ EXTRACT(3, xmm0, xmm1, xmm2, xmm3, tmm3); \ \ xmm0 = tmm0; \ xmm1 = tmm1; \ xmm2 = tmm2; \ xmm3 = tmm3; \ } #define XLPS128R(xmm0, xmm1, xmm2, xmm3, xmm4, xmm5, xmm6, xmm7) { \ __m128i tmm0, tmm1, tmm2, tmm3; \ X128R(xmm4, xmm5, xmm6, xmm7, xmm0, xmm1, xmm2, xmm3); \ \ EXTRACT(0, xmm4, xmm5, xmm6, xmm7, tmm0); \ EXTRACT(1, xmm4, xmm5, xmm6, xmm7, tmm1); \ EXTRACT(2, xmm4, xmm5, xmm6, xmm7, tmm2); \ EXTRACT(3, xmm4, xmm5, xmm6, xmm7, tmm3); \ \ xmm4 = tmm0; \ xmm5 = tmm1; \ xmm6 = tmm2; \ xmm7 = tmm3; \ } #define ROUND128(i, xmm0, xmm2, xmm4, xmm6, xmm1, xmm3, xmm5, xmm7) { \ XLPS128M((&C[i]), xmm0, xmm2, xmm4, xmm6); \ XLPS128R(xmm0, xmm2, xmm4, xmm6, xmm1, xmm3, xmm5, xmm7); \ } libengine-gost-openssl1.1-1.1.0.1/gostsum.1000066400000000000000000000044051315100554000202370ustar00rootroot00000000000000.\" Hey, Emacs! This is an -*- nroff -*- source file. .TH GOSTSUM 1 "02 Aug 2017" "Openssl" "Debian GNU/Linux" .SH NAME gostsum \- generates or checks GOST R34.11-94 message digests .SH SYNOPSIS .B gostsum [\-bvt] [\-c [file]] | [file...] .SH DESCRIPTION .B gostsum generates or checks GOST hash sums. The algorithm to generate the is reasonably fast and strong enough for most cases. Exact specification of the algorithm is in .I GOST R34.11-94. Normally .B gostsum generates checksums of all files given to it as a parameter and prints the checksums followed by the filenames. If, however, .B \-c is specified, only one filename parameter is allowed. This file should contain checksums and filenames to which these checksums refer to, and the files listed in that file are checked against the checksums listed there. See option .B \-c for more information. .SS OPTIONS .TP .B \-b Use binary mode. In unix environment, only difference between this and the normal mode is an asterisk preceding the filename in the output. .TP .B \-c Check gost hashes of all files listed in .I file against the checksum listed in the same file. The actual format of that file is the same as output of .B md5sum. That is, each line in the file describes a file. A line looks like: .B So, for example, if a file was created and its message digest calculated like so: .B echo foo > hash\-test\-file; gostsum hash\-test\-file .B gostsum would report: 1541e09d0aa5971f732991ae1bdfb63f2609edd7536b40f8c2ae7c1e2f99e072 hash-test-file .TP .B \-v Be more verbose. Print filenames when checking (with \-c). .TP .B -t Use test parameter set. .B gostsum supports two sets of parameters (which are really parameters of GOST 28147-89 block cipher) specified in the IETF draft .B draft-popov-cryptopro-cpalgs-02.txt By default, cryptopro paramset is used. This option enables use of test paramset as specified in appendices to the GOST. .SH CAVEATS The output of gost12sum has a reversed byte order compared to output of .B openssl dgst command because of the Russian GOST requrements. .SH BUGS This manpage is not quite accurate and has formatting inconsistent with other manpages. .B gostsum does not accept standard options like .BR \-\-help . .SH AUTHOR Victor Wagner libengine-gost-openssl1.1-1.1.0.1/gostsum.c000066400000000000000000000136021315100554000203200ustar00rootroot00000000000000/********************************************************************** * gostsum.c * * Copyright (c) 2005-2006 Cryptocom LTD * * This file is distributed under the same license as OpenSSL * * * * Almost drop-in replacement for md5sum and sha1sum * * which computes GOST R 34.11-94 hashsum instead * * * **********************************************************************/ #include #include #include #include #include #ifdef _WIN32 # include #endif #include #include "gosthash.h" #define BUF_SIZE 262144 int hash_file(gost_hash_ctx * ctx, char *filename, char *sum, int mode); int hash_stream(gost_hash_ctx * ctx, int fd, char *sum); int get_line(FILE *f, char *hash, char *filename); void help() { fprintf(stderr, "gostsum [-bvt] [-c [file]]| [files]\n" "\t-c check message digests (default is generate)\n" "\t-v verbose, print file names when checking\n" "\t-b read files in binary mode\n" "\t-t use test GOST paramset (default is CryptoPro paramset)\n" "The input for -c should be the list of message digests and file names\n" "that is printed on stdout by this program when it generates digests.\n"); exit(3); } #ifndef O_BINARY # define O_BINARY 0 #endif int main(int argc, char **argv) { int c, i; int verbose = 0; int errors = 0; int open_mode = O_RDONLY; gost_subst_block *b = &GostR3411_94_CryptoProParamSet; FILE *check_file = NULL; gost_hash_ctx ctx; while ((c = getopt(argc, argv, "bc::tv")) != -1) { switch (c) { case 'v': verbose = 1; break; case 't': b = &GostR3411_94_TestParamSet; break; case 'b': open_mode |= O_BINARY; break; case 'c': if (optarg) { check_file = fopen(optarg, "r"); if (!check_file) { perror(optarg); exit(2); } } else { check_file = stdin; } break; default: fprintf(stderr, "invalid option %c", optopt); help(); } } init_gost_hash_ctx(&ctx, b); if (check_file) { char inhash[65], calcsum[65], filename[PATH_MAX]; int failcount = 0, count = 0, errors = 0; if (check_file == stdin && optind < argc) { check_file = fopen(argv[optind], "r"); if (!check_file) { perror(argv[optind]); exit(2); } } while (get_line(check_file, inhash, filename)) { count++; if (!hash_file(&ctx, filename, calcsum, open_mode)) { errors++; continue; } if (strncmp(calcsum, inhash, 65) == 0) { if (verbose) { fprintf(stderr, "%s\tOK\n", filename); } } else { if (verbose) { fprintf(stderr, "%s\tFAILED\n", filename); } else { fprintf(stderr, "%s: GOST hash sum check failed for '%s'\n", argv[0], filename); } failcount++; } } if (errors) { fprintf(stderr, "%s: WARNING %d of %d file(s) cannot be processed\n", argv[0], errors, count); } if (verbose && failcount) { fprintf(stderr, "%s: %d of %d file(f) failed GOST hash sum check\n", argv[0], failcount, count); } exit((failcount || errors) ? 1 : 0); } if (optind == argc) { char sum[65]; #ifdef _WIN32 if (open_mode & O_BINARY) { _setmode(fileno(stdin), O_BINARY); } #endif if (!hash_stream(&ctx, fileno(stdin), sum)) { perror("stdin"); exit(1); } printf("%s -\n", sum); exit(0); } for (i = optind; i < argc; i++) { char sum[65]; if (!hash_file(&ctx, argv[i], sum, open_mode)) { errors++; } else { printf("%s %s\n", sum, argv[i]); } } exit(errors ? 1 : 0); } int hash_file(gost_hash_ctx * ctx, char *filename, char *sum, int mode) { int fd; if ((fd = open(filename, mode)) < 0) { perror(filename); return 0; } if (!hash_stream(ctx, fd, sum)) { perror(filename); return 0; } close(fd); return 1; } int hash_stream(gost_hash_ctx * ctx, int fd, char *sum) { unsigned char buffer[BUF_SIZE]; ssize_t bytes; int i; start_hash(ctx); while ((bytes = read(fd, buffer, BUF_SIZE)) > 0) { hash_block(ctx, buffer, bytes); } if (bytes < 0) { return 0; } finish_hash(ctx, buffer); for (i = 0; i < 32; i++) { sprintf(sum + 2 * i, "%02x", buffer[31 - i]); } return 1; } int get_line(FILE *f, char *hash, char *filename) { int i; if (fread(hash, 1, 64, f) < 64) return 0; hash[64] = 0; for (i = 0; i < 64; i++) { if (hash[i] < '0' || (hash[i] > '9' && hash[i] < 'A') || (hash[i] > 'F' && hash[i] < 'a') || hash[i] > 'f') { fprintf(stderr, "Not a hash value '%s'\n", hash); return 0; } } if (fgetc(f) != ' ') { fprintf(stderr, "Malformed input line\n"); return 0; } i = strlen(fgets(filename, PATH_MAX, f)); while (filename[--i] == '\n' || filename[i] == '\r') filename[i] = 0; return 1; } libengine-gost-openssl1.1-1.1.0.1/patches/000077500000000000000000000000001315100554000201005ustar00rootroot00000000000000libengine-gost-openssl1.1-1.1.0.1/patches/1.0.2/000077500000000000000000000000001315100554000205365ustar00rootroot00000000000000libengine-gost-openssl1.1-1.1.0.1/patches/1.0.2/cipher_modes.diff000066400000000000000000000121411315100554000240300ustar00rootroot00000000000000diff -uNr crypto/objects_orig/obj_dat.h crypto/objects/obj_dat.h --- crypto/objects_orig/obj_dat.h 2015-10-06 20:43:14.000000000 +0300 +++ crypto/objects/obj_dat.h 2015-10-06 20:45:53.000000000 +0300 @@ -62,9 +62,9 @@ * [including the GNU Public Licence.] */ -#define NUM_NID 991 -#define NUM_SN 984 -#define NUM_LN 984 +#define NUM_NID 1000 +#define NUM_SN 993 +#define NUM_LN 993 #define NUM_OBJ 921 static const unsigned char lvalues[6485]={ @@ -2611,6 +2611,15 @@ {"INN","INN",NID_INN,8,&(lvalues[6466]),0}, {"OGRN","OGRN",NID_OGRN,5,&(lvalues[6474]),0}, {"SNILS","SNILS",NID_SNILS,5,&(lvalues[6479]),0}, +{"gost89-cbc","gost89-cbc",NID_gost89_cbc,0,NULL,0}, +{"gost89-ecb","gost89-ecb",NID_gost89_ecb,0,NULL,0}, +{"gost89-ctr","gost89-ctr",NID_gost89_ctr,0,NULL,0}, +{"grasshopper-ecb","grasshopper-ecb",NID_grasshopper_ecb,0,NULL,0}, +{"grasshopper-ctr","grasshopper-ctr",NID_grasshopper_ctr,0,NULL,0}, +{"grasshopper-ofb","grasshopper-ofb",NID_grasshopper_ofb,0,NULL,0}, +{"grasshopper-cbc","grasshopper-cbc",NID_grasshopper_cbc,0,NULL,0}, +{"grasshopper-cfb","grasshopper-cfb",NID_grasshopper_cfb,0,NULL,0}, +{"grasshopper-mac","grasshopper-mac",NID_grasshopper_mac,0,NULL,0}, }; static const unsigned int sn_objs[NUM_SN]={ @@ -2964,10 +2973,19 @@ 963, /* "gost2012_256" */ 964, /* "gost2012_512" */ 813, /* "gost89" */ +991, /* "gost89-cbc" */ 814, /* "gost89-cnt" */ 959, /* "gost89-cnt-12" */ +993, /* "gost89-ctr" */ +992, /* "gost89-ecb" */ 812, /* "gost94" */ 850, /* "gost94cc" */ +997, /* "grasshopper-cbc" */ +998, /* "grasshopper-cfb" */ +995, /* "grasshopper-ctr" */ +994, /* "grasshopper-ecb" */ +999, /* "grasshopper-mac" */ +996, /* "grasshopper-ofb" */ 797, /* "hmacWithMD5" */ 163, /* "hmacWithSHA1" */ 798, /* "hmacWithSHA224" */ @@ -3971,8 +3989,17 @@ 601, /* "generic cryptogram" */ 99, /* "givenName" */ 960, /* "gost-mac-12" */ +991, /* "gost89-cbc" */ 814, /* "gost89-cnt" */ 959, /* "gost89-cnt-12" */ +993, /* "gost89-ctr" */ +992, /* "gost89-ecb" */ +997, /* "grasshopper-cbc" */ +998, /* "grasshopper-cfb" */ +995, /* "grasshopper-ctr" */ +994, /* "grasshopper-ecb" */ +999, /* "grasshopper-mac" */ +996, /* "grasshopper-ofb" */ 855, /* "hmac" */ 780, /* "hmac-md5" */ 781, /* "hmac-sha1" */ diff -uNr crypto/objects_orig/objects.txt crypto/objects/objects.txt --- crypto/objects_orig/objects.txt 2015-10-06 20:43:14.000000000 +0300 +++ crypto/objects/objects.txt 2015-10-06 20:45:45.000000000 +0300 @@ -1171,6 +1171,9 @@ cryptopro 21 : gost89 : GOST 28147-89 : gost89-cnt : gost89-cnt-12 + : gost89-cbc + : gost89-ecb + : gost89-ctr !Cname id-Gost28147-89-MAC cryptopro 22 : gost-mac : GOST 28147-89 MAC : gost-mac-12 @@ -1278,6 +1281,14 @@ member-body 643 100 1 : OGRN : OGRN member-body 643 100 3 : SNILS : SNILS +#GOST R34.13-2015 Grasshopper "Kuznechik" + : grasshopper-ecb + : grasshopper-ctr + : grasshopper-ofb + : grasshopper-cbc + : grasshopper-cfb + : grasshopper-mac + # Definitions for Camellia cipher - CBC MODE 1 2 392 200011 61 1 1 1 2 : CAMELLIA-128-CBC : camellia-128-cbc diff -uNr crypto/objects_orig/obj_mac.h crypto/objects/obj_mac.h --- crypto/objects_orig/obj_mac.h 2015-10-06 20:43:14.000000000 +0300 +++ crypto/objects/obj_mac.h 2015-10-06 20:45:52.000000000 +0300 @@ -3723,6 +3723,15 @@ #define SN_gost89_cnt_12 "gost89-cnt-12" #define NID_gost89_cnt_12 959 +#define SN_gost89_cbc "gost89-cbc" +#define NID_gost89_cbc 991 + +#define SN_gost89_ecb "gost89-ecb" +#define NID_gost89_ecb 992 + +#define SN_gost89_ctr "gost89-ctr" +#define NID_gost89_ctr 993 + #define SN_id_Gost28147_89_MAC "gost-mac" #define LN_id_Gost28147_89_MAC "GOST 28147-89 MAC" #define NID_id_Gost28147_89_MAC 815 @@ -4031,6 +4040,24 @@ #define NID_SNILS 990 #define OBJ_SNILS OBJ_member_body,643L,100L,3L +#define SN_grasshopper_ecb "grasshopper-ecb" +#define NID_grasshopper_ecb 994 + +#define SN_grasshopper_ctr "grasshopper-ctr" +#define NID_grasshopper_ctr 995 + +#define SN_grasshopper_ofb "grasshopper-ofb" +#define NID_grasshopper_ofb 996 + +#define SN_grasshopper_cbc "grasshopper-cbc" +#define NID_grasshopper_cbc 997 + +#define SN_grasshopper_cfb "grasshopper-cfb" +#define NID_grasshopper_cfb 998 + +#define SN_grasshopper_mac "grasshopper-mac" +#define NID_grasshopper_mac 999 + #define SN_camellia_128_cbc "CAMELLIA-128-CBC" #define LN_camellia_128_cbc "camellia-128-cbc" #define NID_camellia_128_cbc 751 diff -uNr crypto/objects_orig/obj_mac.num crypto/objects/obj_mac.num --- crypto/objects_orig/obj_mac.num 2015-10-06 20:43:14.000000000 +0300 +++ crypto/objects/obj_mac.num 2015-10-06 20:45:51.000000000 +0300 @@ -988,3 +988,12 @@ INN 988 OGRN 989 SNILS 990 +gost89_cbc 991 +gost89_ecb 992 +gost89_ctr 993 +grasshopper_ecb 994 +grasshopper_ctr 995 +grasshopper_ofb 996 +grasshopper_cbc 997 +grasshopper_cfb 998 +grasshopper_mac 999 libengine-gost-openssl1.1-1.1.0.1/patches/1.0.2/numeric.diff000066400000000000000000000026031315100554000230330ustar00rootroot00000000000000diff -Nuar openssl-1.0.2d/crypto/asn1/a_mbstr.c openssl-work/crypto/asn1/a_mbstr.c --- openssl-1.0.2d/crypto/asn1/a_mbstr.c 2015-07-09 15:53:21.000000000 +0400 +++ openssl-work/crypto/asn1/a_mbstr.c 2015-03-26 13:00:21.000000000 +0400 @@ -173,6 +173,8 @@ str_type = V_ASN1_PRINTABLESTRING; else if (mask & B_ASN1_IA5STRING) str_type = V_ASN1_IA5STRING; + else if (mask & B_ASN1_NUMERICSTRING) + str_type = V_ASN1_NUMERICSTRING; else if (mask & B_ASN1_T61STRING) str_type = V_ASN1_T61STRING; else if (mask & B_ASN1_BMPSTRING) { diff -Nuar openssl-1.0.2d/crypto/asn1/a_strnid.c openssl-work/crypto/asn1/a_strnid.c --- openssl-1.0.2d/crypto/asn1/a_strnid.c 2015-07-09 15:53:21.000000000 +0400 +++ openssl-work/crypto/asn1/a_strnid.c 2015-03-26 13:00:21.000000000 +0400 @@ -192,7 +192,10 @@ {NID_name, 1, ub_name, DIRSTRING_TYPE, 0}, {NID_dnQualifier, -1, -1, B_ASN1_PRINTABLESTRING, STABLE_NO_MASK}, {NID_domainComponent, 1, -1, B_ASN1_IA5STRING, STABLE_NO_MASK}, - {NID_ms_csp_name, -1, -1, B_ASN1_BMPSTRING, STABLE_NO_MASK} + {NID_ms_csp_name, -1, -1, B_ASN1_BMPSTRING, STABLE_NO_MASK}, + {NID_INN, 1, 12, B_ASN1_NUMERICSTRING, STABLE_NO_MASK}, + {NID_OGRN, 1, 13, B_ASN1_NUMERICSTRING, STABLE_NO_MASK}, + {NID_SNILS, 1, 11, B_ASN1_NUMERICSTRING, STABLE_NO_MASK} }; static int sk_table_cmp(const ASN1_STRING_TABLE *const *a, libengine-gost-openssl1.1-1.1.0.1/patches/1.0.2/oids.diff000066400000000000000000000774021315100554000223400ustar00rootroot00000000000000diff -Nuar openssl-1.0.2d/crypto/objects/obj_dat.h openssl-work/crypto/objects/obj_dat.h --- openssl-1.0.2d/crypto/objects/obj_dat.h 2015-07-09 15:58:05.000000000 +0400 +++ openssl-work/crypto/objects/obj_dat.h 2015-02-25 12:49:45.000000000 +0400 @@ -62,12 +62,12 @@ * [including the GNU Public Licence.] */ -#define NUM_NID 958 -#define NUM_SN 951 -#define NUM_LN 951 -#define NUM_OBJ 890 +#define NUM_NID 991 +#define NUM_SN 984 +#define NUM_LN 984 +#define NUM_OBJ 921 -static const unsigned char lvalues[6255]={ +static const unsigned char lvalues[6485]={ 0x2A,0x86,0x48,0x86,0xF7,0x0D, /* [ 0] OBJ_rsadsi */ 0x2A,0x86,0x48,0x86,0xF7,0x0D,0x01, /* [ 6] OBJ_pkcs */ 0x2A,0x86,0x48,0x86,0xF7,0x0D,0x02,0x02, /* [ 13] OBJ_md2 */ @@ -952,6 +952,37 @@ 0x2B,0x06,0x01,0x04,0x01,0x82,0x37,0x3C,0x02,0x01,0x01,/* [6221] OBJ_jurisdictionLocalityName */ 0x2B,0x06,0x01,0x04,0x01,0x82,0x37,0x3C,0x02,0x01,0x02,/* [6232] OBJ_jurisdictionStateOrProvinceName */ 0x2B,0x06,0x01,0x04,0x01,0x82,0x37,0x3C,0x02,0x01,0x03,/* [6243] OBJ_jurisdictionCountryName */ +0x2A,0x85,0x03,0x07,0x01, /* [6254] OBJ_id_tc26 */ +0x2A,0x85,0x03,0x07,0x01,0x01, /* [6259] OBJ_id_tc26_algorithms */ +0x2A,0x85,0x03,0x07,0x01,0x01,0x01, /* [6265] OBJ_id_tc26_sign */ +0x2A,0x85,0x03,0x07,0x01,0x01,0x01,0x01, /* [6272] OBJ_id_GostR3410_2012_256 */ +0x2A,0x85,0x03,0x07,0x01,0x01,0x01,0x02, /* [6280] OBJ_id_GostR3410_2012_512 */ +0x2A,0x85,0x03,0x07,0x01,0x01,0x02, /* [6288] OBJ_id_tc26_digest */ +0x2A,0x85,0x03,0x07,0x01,0x01,0x02,0x02, /* [6295] OBJ_id_GostR3411_2012_256 */ +0x2A,0x85,0x03,0x07,0x01,0x01,0x02,0x03, /* [6303] OBJ_id_GostR3411_2012_512 */ +0x2A,0x85,0x03,0x07,0x01,0x01,0x03, /* [6311] OBJ_id_tc26_signwithdigest */ +0x2A,0x85,0x03,0x07,0x01,0x01,0x03,0x02, /* [6318] OBJ_id_tc26_signwithdigest_gost3410_2012_256 */ +0x2A,0x85,0x03,0x07,0x01,0x01,0x03,0x03, /* [6326] OBJ_id_tc26_signwithdigest_gost3410_2012_512 */ +0x2A,0x85,0x03,0x07,0x01,0x01,0x04, /* [6334] OBJ_id_tc26_mac */ +0x2A,0x85,0x03,0x07,0x01,0x01,0x04,0x01, /* [6341] OBJ_id_tc26_hmac_gost_3411_2012_256 */ +0x2A,0x85,0x03,0x07,0x01,0x01,0x04,0x02, /* [6349] OBJ_id_tc26_hmac_gost_3411_2012_512 */ +0x2A,0x85,0x03,0x07,0x01,0x01,0x05, /* [6357] OBJ_id_tc26_cipher */ +0x2A,0x85,0x03,0x07,0x01,0x01,0x06, /* [6364] OBJ_id_tc26_agreement */ +0x2A,0x85,0x03,0x07,0x01,0x01,0x06,0x01, /* [6371] OBJ_id_tc26_agreement_gost_3410_2012_256 */ +0x2A,0x85,0x03,0x07,0x01,0x01,0x06,0x02, /* [6379] OBJ_id_tc26_agreement_gost_3410_2012_512 */ +0x2A,0x85,0x03,0x07,0x01,0x02, /* [6387] OBJ_id_tc26_constants */ +0x2A,0x85,0x03,0x07,0x01,0x02,0x01, /* [6393] OBJ_id_tc26_sign_constants */ +0x2A,0x85,0x03,0x07,0x01,0x02,0x01,0x02, /* [6400] OBJ_id_tc26_gost_3410_2012_512_constants */ +0x2A,0x85,0x03,0x07,0x01,0x02,0x01,0x02,0x00,/* [6408] OBJ_id_tc26_gost_3410_2012_512_paramSetTest */ +0x2A,0x85,0x03,0x07,0x01,0x02,0x01,0x02,0x01,/* [6417] OBJ_id_tc26_gost_3410_2012_512_paramSetA */ +0x2A,0x85,0x03,0x07,0x01,0x02,0x01,0x02,0x02,/* [6426] OBJ_id_tc26_gost_3410_2012_512_paramSetB */ +0x2A,0x85,0x03,0x07,0x01,0x02,0x02, /* [6435] OBJ_id_tc26_digest_constants */ +0x2A,0x85,0x03,0x07,0x01,0x02,0x05, /* [6442] OBJ_id_tc26_cipher_constants */ +0x2A,0x85,0x03,0x07,0x01,0x02,0x05,0x01, /* [6449] OBJ_id_tc26_gost_28147_constants */ +0x2A,0x85,0x03,0x07,0x01,0x02,0x05,0x01,0x01,/* [6457] OBJ_id_tc26_gost_28147_param_Z */ +0x2A,0x85,0x03,0x03,0x81,0x03,0x01,0x01, /* [6466] OBJ_INN */ +0x2A,0x85,0x03,0x64,0x01, /* [6474] OBJ_OGRN */ +0x2A,0x85,0x03,0x64,0x03, /* [6479] OBJ_SNILS */ }; static const ASN1_OBJECT nid_objs[NUM_NID]={ @@ -2514,6 +2545,72 @@ NID_jurisdictionStateOrProvinceName,11,&(lvalues[6232]),0}, {"jurisdictionC","jurisdictionCountryName", NID_jurisdictionCountryName,11,&(lvalues[6243]),0}, +{"id-tc26","id-tc26",NID_id_tc26,5,&(lvalues[6254]),0}, +{"gost89-cnt-12","gost89-cnt-12",NID_gost89_cnt_12,0,NULL,0}, +{"gost-mac-12","gost-mac-12",NID_gost_mac_12,0,NULL,0}, +{"id-tc26-algorithms","id-tc26-algorithms",NID_id_tc26_algorithms,6, + &(lvalues[6259]),0}, +{"id-tc26-sign","id-tc26-sign",NID_id_tc26_sign,7,&(lvalues[6265]),0}, +{"gost2012_256","GOST R 34.10-2012 with 256 bit modulus", + NID_id_GostR3410_2012_256,8,&(lvalues[6272]),0}, +{"gost2012_512","GOST R 34.10-2012 with 512 bit modulus", + NID_id_GostR3410_2012_512,8,&(lvalues[6280]),0}, +{"id-tc26-digest","id-tc26-digest",NID_id_tc26_digest,7, + &(lvalues[6288]),0}, +{"md_gost12_256","GOST R 34.11-2012 with 256 bit hash", + NID_id_GostR3411_2012_256,8,&(lvalues[6295]),0}, +{"md_gost12_512","GOST R 34.11-2012 with 512 bit hash", + NID_id_GostR3411_2012_512,8,&(lvalues[6303]),0}, +{"id-tc26-signwithdigest","id-tc26-signwithdigest", + NID_id_tc26_signwithdigest,7,&(lvalues[6311]),0}, +{"id-tc26-signwithdigest-gost3410-2012-256", + "GOST R 34.10-2012 with GOST R 34.11-2012 (256 bit)", + NID_id_tc26_signwithdigest_gost3410_2012_256,8,&(lvalues[6318]),0}, +{"id-tc26-signwithdigest-gost3410-2012-512", + "GOST R 34.10-2012 with GOST R 34.11-2012 (512 bit)", + NID_id_tc26_signwithdigest_gost3410_2012_512,8,&(lvalues[6326]),0}, +{"id-tc26-mac","id-tc26-mac",NID_id_tc26_mac,7,&(lvalues[6334]),0}, +{"id-tc26-hmac-gost-3411-2012-256","HMAC GOST 34.11-2012 256 bit", + NID_id_tc26_hmac_gost_3411_2012_256,8,&(lvalues[6341]),0}, +{"id-tc26-hmac-gost-3411-2012-512","HMAC GOST 34.11-2012 512 bit", + NID_id_tc26_hmac_gost_3411_2012_512,8,&(lvalues[6349]),0}, +{"id-tc26-cipher","id-tc26-cipher",NID_id_tc26_cipher,7, + &(lvalues[6357]),0}, +{"id-tc26-agreement","id-tc26-agreement",NID_id_tc26_agreement,7, + &(lvalues[6364]),0}, +{"id-tc26-agreement-gost-3410-2012-256", + "id-tc26-agreement-gost-3410-2012-256", + NID_id_tc26_agreement_gost_3410_2012_256,8,&(lvalues[6371]),0}, +{"id-tc26-agreement-gost-3410-2012-512", + "id-tc26-agreement-gost-3410-2012-512", + NID_id_tc26_agreement_gost_3410_2012_512,8,&(lvalues[6379]),0}, +{"id-tc26-constants","id-tc26-constants",NID_id_tc26_constants,6, + &(lvalues[6387]),0}, +{"id-tc26-sign-constants","id-tc26-sign-constants", + NID_id_tc26_sign_constants,7,&(lvalues[6393]),0}, +{"id-tc26-gost-3410-2012-512-constants", + "id-tc26-gost-3410-2012-512-constants", + NID_id_tc26_gost_3410_2012_512_constants,8,&(lvalues[6400]),0}, +{"id-tc26-gost-3410-2012-512-paramSetTest", + "GOST R 34.10-2012 (512 bit) testing parameter set", + NID_id_tc26_gost_3410_2012_512_paramSetTest,9,&(lvalues[6408]),0}, +{"id-tc26-gost-3410-2012-512-paramSetA", + "GOST R 34.10-2012 (512 bit) ParamSet A", + NID_id_tc26_gost_3410_2012_512_paramSetA,9,&(lvalues[6417]),0}, +{"id-tc26-gost-3410-2012-512-paramSetB", + "GOST R 34.10-2012 (512 bit) ParamSet B", + NID_id_tc26_gost_3410_2012_512_paramSetB,9,&(lvalues[6426]),0}, +{"id-tc26-digest-constants","id-tc26-digest-constants", + NID_id_tc26_digest_constants,7,&(lvalues[6435]),0}, +{"id-tc26-cipher-constants","id-tc26-cipher-constants", + NID_id_tc26_cipher_constants,7,&(lvalues[6442]),0}, +{"id-tc26-gost-28147-constants","id-tc26-gost-28147-constants", + NID_id_tc26_gost_28147_constants,8,&(lvalues[6449]),0}, +{"id-tc26-gost-28147-param-Z","GOST 28147-89 TC26 parameter set", + NID_id_tc26_gost_28147_param_Z,9,&(lvalues[6457]),0}, +{"INN","INN",NID_INN,8,&(lvalues[6466]),0}, +{"OGRN","OGRN",NID_OGRN,5,&(lvalues[6474]),0}, +{"SNILS","SNILS",NID_SNILS,5,&(lvalues[6479]),0}, }; static const unsigned int sn_objs[NUM_SN]={ @@ -2614,6 +2711,7 @@ 35, /* "IDEA-CFB" */ 36, /* "IDEA-ECB" */ 46, /* "IDEA-OFB" */ +988, /* "INN" */ 181, /* "ISO" */ 183, /* "ISO-US" */ 645, /* "ITU-T" */ @@ -2635,6 +2733,7 @@ 17, /* "O" */ 178, /* "OCSP" */ 180, /* "OCSPSigning" */ +989, /* "OGRN" */ 379, /* "ORG" */ 18, /* "OU" */ 749, /* "Oakley-EC2N-3" */ @@ -2700,6 +2799,7 @@ 188, /* "SMIME" */ 167, /* "SMIME-CAPS" */ 100, /* "SN" */ +990, /* "SNILS" */ 16, /* "ST" */ 143, /* "SXNetID" */ 458, /* "UID" */ @@ -2858,10 +2958,14 @@ 156, /* "friendlyName" */ 509, /* "generationQualifier" */ 815, /* "gost-mac" */ +960, /* "gost-mac-12" */ 811, /* "gost2001" */ 851, /* "gost2001cc" */ +963, /* "gost2012_256" */ +964, /* "gost2012_512" */ 813, /* "gost89" */ 814, /* "gost89-cnt" */ +959, /* "gost89-cnt-12" */ 812, /* "gost94" */ 850, /* "gost94cc" */ 797, /* "hmacWithMD5" */ @@ -3115,6 +3219,30 @@ 194, /* "id-smime-spq" */ 250, /* "id-smime-spq-ets-sqt-unotice" */ 249, /* "id-smime-spq-ets-sqt-uri" */ +958, /* "id-tc26" */ +975, /* "id-tc26-agreement" */ +976, /* "id-tc26-agreement-gost-3410-2012-256" */ +977, /* "id-tc26-agreement-gost-3410-2012-512" */ +961, /* "id-tc26-algorithms" */ +974, /* "id-tc26-cipher" */ +985, /* "id-tc26-cipher-constants" */ +978, /* "id-tc26-constants" */ +965, /* "id-tc26-digest" */ +984, /* "id-tc26-digest-constants" */ +986, /* "id-tc26-gost-28147-constants" */ +987, /* "id-tc26-gost-28147-param-Z" */ +980, /* "id-tc26-gost-3410-2012-512-constants" */ +982, /* "id-tc26-gost-3410-2012-512-paramSetA" */ +983, /* "id-tc26-gost-3410-2012-512-paramSetB" */ +981, /* "id-tc26-gost-3410-2012-512-paramSetTest" */ +972, /* "id-tc26-hmac-gost-3411-2012-256" */ +973, /* "id-tc26-hmac-gost-3411-2012-512" */ +971, /* "id-tc26-mac" */ +962, /* "id-tc26-sign" */ +979, /* "id-tc26-sign-constants" */ +968, /* "id-tc26-signwithdigest" */ +969, /* "id-tc26-signwithdigest-gost3410-2012-256" */ +970, /* "id-tc26-signwithdigest-gost3410-2012-512" */ 676, /* "identified-organization" */ 461, /* "info" */ 748, /* "inhibitAnyPolicy" */ @@ -3140,6 +3268,8 @@ 460, /* "mail" */ 493, /* "mailPreferenceOption" */ 467, /* "manager" */ +966, /* "md_gost12_256" */ +967, /* "md_gost12_512" */ 809, /* "md_gost94" */ 875, /* "member" */ 182, /* "member-body" */ @@ -3497,12 +3627,22 @@ 813, /* "GOST 28147-89" */ 849, /* "GOST 28147-89 Cryptocom ParamSet" */ 815, /* "GOST 28147-89 MAC" */ +987, /* "GOST 28147-89 TC26 parameter set" */ 851, /* "GOST 34.10-2001 Cryptocom" */ 850, /* "GOST 34.10-94 Cryptocom" */ 811, /* "GOST R 34.10-2001" */ 817, /* "GOST R 34.10-2001 DH" */ +982, /* "GOST R 34.10-2012 (512 bit) ParamSet A" */ +983, /* "GOST R 34.10-2012 (512 bit) ParamSet B" */ +981, /* "GOST R 34.10-2012 (512 bit) testing parameter set" */ +963, /* "GOST R 34.10-2012 with 256 bit modulus" */ +964, /* "GOST R 34.10-2012 with 512 bit modulus" */ +969, /* "GOST R 34.10-2012 with GOST R 34.11-2012 (256 bit)" */ +970, /* "GOST R 34.10-2012 with GOST R 34.11-2012 (512 bit)" */ 812, /* "GOST R 34.10-94" */ 818, /* "GOST R 34.10-94 DH" */ +966, /* "GOST R 34.11-2012 with 256 bit hash" */ +967, /* "GOST R 34.11-2012 with 512 bit hash" */ 809, /* "GOST R 34.11-94" */ 816, /* "GOST R 34.11-94 PRF" */ 807, /* "GOST R 34.11-94 with GOST R 34.10-2001" */ @@ -3510,12 +3650,15 @@ 808, /* "GOST R 34.11-94 with GOST R 34.10-94" */ 852, /* "GOST R 34.11-94 with GOST R 34.10-94 Cryptocom" */ 854, /* "GOST R 3410-2001 Parameter Set Cryptocom" */ +972, /* "HMAC GOST 34.11-2012 256 bit" */ +973, /* "HMAC GOST 34.11-2012 512 bit" */ 810, /* "HMAC GOST 34.11-94" */ 432, /* "Hold Instruction Call Issuer" */ 430, /* "Hold Instruction Code" */ 431, /* "Hold Instruction None" */ 433, /* "Hold Instruction Reject" */ 634, /* "ICC or token signature" */ +988, /* "INN" */ 294, /* "IPSec End System" */ 295, /* "IPSec Tunnel" */ 296, /* "IPSec User" */ @@ -3560,6 +3703,7 @@ 366, /* "OCSP Nonce" */ 371, /* "OCSP Service Locator" */ 180, /* "OCSP Signing" */ +989, /* "OGRN" */ 161, /* "PBES2" */ 69, /* "PBKDF2" */ 162, /* "PBMAC1" */ @@ -3573,6 +3717,7 @@ 2, /* "RSA Data Security, Inc. PKCS" */ 188, /* "S/MIME" */ 167, /* "S/MIME Capabilities" */ +990, /* "SNILS" */ 387, /* "SNMPv2" */ 512, /* "Secure Electronic Transactions" */ 386, /* "Security" */ @@ -3825,7 +3970,9 @@ 509, /* "generationQualifier" */ 601, /* "generic cryptogram" */ 99, /* "givenName" */ +960, /* "gost-mac-12" */ 814, /* "gost89-cnt" */ +959, /* "gost89-cnt-12" */ 855, /* "hmac" */ 780, /* "hmac-md5" */ 781, /* "hmac-sha1" */ @@ -4053,6 +4200,22 @@ 194, /* "id-smime-spq" */ 250, /* "id-smime-spq-ets-sqt-unotice" */ 249, /* "id-smime-spq-ets-sqt-uri" */ +958, /* "id-tc26" */ +975, /* "id-tc26-agreement" */ +976, /* "id-tc26-agreement-gost-3410-2012-256" */ +977, /* "id-tc26-agreement-gost-3410-2012-512" */ +961, /* "id-tc26-algorithms" */ +974, /* "id-tc26-cipher" */ +985, /* "id-tc26-cipher-constants" */ +978, /* "id-tc26-constants" */ +965, /* "id-tc26-digest" */ +984, /* "id-tc26-digest-constants" */ +986, /* "id-tc26-gost-28147-constants" */ +980, /* "id-tc26-gost-3410-2012-512-constants" */ +971, /* "id-tc26-mac" */ +962, /* "id-tc26-sign" */ +979, /* "id-tc26-sign-constants" */ +968, /* "id-tc26-signwithdigest" */ 34, /* "idea-cbc" */ 35, /* "idea-cfb" */ 36, /* "idea-ecb" */ @@ -4661,6 +4824,9 @@ 639, /* OBJ_set_brand_JCB 2 23 42 8 35 */ 805, /* OBJ_cryptopro 1 2 643 2 2 */ 806, /* OBJ_cryptocom 1 2 643 2 9 */ +958, /* OBJ_id_tc26 1 2 643 7 1 */ +989, /* OBJ_OGRN 1 2 643 100 1 */ +990, /* OBJ_SNILS 1 2 643 100 3 */ 184, /* OBJ_X9_57 1 2 840 10040 */ 405, /* OBJ_ansi_X9_62 1 2 840 10045 */ 389, /* OBJ_Enterprises 1 3 6 1 4 1 */ @@ -4745,6 +4911,8 @@ 816, /* OBJ_id_GostR3411_94_prf 1 2 643 2 2 23 */ 817, /* OBJ_id_GostR3410_2001DH 1 2 643 2 2 98 */ 818, /* OBJ_id_GostR3410_94DH 1 2 643 2 2 99 */ +961, /* OBJ_id_tc26_algorithms 1 2 643 7 1 1 */ +978, /* OBJ_id_tc26_constants 1 2 643 7 1 2 */ 1, /* OBJ_rsadsi 1 2 840 113549 */ 185, /* OBJ_X9cm 1 2 840 10040 4 */ 127, /* OBJ_id_pkix 1 3 6 1 5 5 7 */ @@ -4795,6 +4963,15 @@ 842, /* OBJ_id_GostR3410_2001_CryptoPro_C_ParamSet 1 2 643 2 2 35 3 */ 843, /* OBJ_id_GostR3410_2001_CryptoPro_XchA_ParamSet 1 2 643 2 2 36 0 */ 844, /* OBJ_id_GostR3410_2001_CryptoPro_XchB_ParamSet 1 2 643 2 2 36 1 */ +962, /* OBJ_id_tc26_sign 1 2 643 7 1 1 1 */ +965, /* OBJ_id_tc26_digest 1 2 643 7 1 1 2 */ +968, /* OBJ_id_tc26_signwithdigest 1 2 643 7 1 1 3 */ +971, /* OBJ_id_tc26_mac 1 2 643 7 1 1 4 */ +974, /* OBJ_id_tc26_cipher 1 2 643 7 1 1 5 */ +975, /* OBJ_id_tc26_agreement 1 2 643 7 1 1 6 */ +979, /* OBJ_id_tc26_sign_constants 1 2 643 7 1 2 1 */ +984, /* OBJ_id_tc26_digest_constants 1 2 643 7 1 2 2 */ +985, /* OBJ_id_tc26_cipher_constants 1 2 643 7 1 2 5 */ 2, /* OBJ_pkcs 1 2 840 113549 1 */ 431, /* OBJ_hold_instruction_none 1 2 840 10040 2 1 */ 432, /* OBJ_hold_instruction_call_issuer 1 2 840 10040 2 2 */ @@ -4846,6 +5023,19 @@ 851, /* OBJ_id_GostR3410_2001_cc 1 2 643 2 9 1 5 4 */ 849, /* OBJ_id_Gost28147_89_cc 1 2 643 2 9 1 6 1 */ 854, /* OBJ_id_GostR3410_2001_ParamSet_cc 1 2 643 2 9 1 8 1 */ +988, /* OBJ_INN 1 2 643 3 131 1 1 */ +963, /* OBJ_id_GostR3410_2012_256 1 2 643 7 1 1 1 1 */ +964, /* OBJ_id_GostR3410_2012_512 1 2 643 7 1 1 1 2 */ +966, /* OBJ_id_GostR3411_2012_256 1 2 643 7 1 1 2 2 */ +967, /* OBJ_id_GostR3411_2012_512 1 2 643 7 1 1 2 3 */ +969, /* OBJ_id_tc26_signwithdigest_gost3410_2012_256 1 2 643 7 1 1 3 2 */ +970, /* OBJ_id_tc26_signwithdigest_gost3410_2012_512 1 2 643 7 1 1 3 3 */ +972, /* OBJ_id_tc26_hmac_gost_3411_2012_256 1 2 643 7 1 1 4 1 */ +973, /* OBJ_id_tc26_hmac_gost_3411_2012_512 1 2 643 7 1 1 4 2 */ +976, /* OBJ_id_tc26_agreement_gost_3410_2012_256 1 2 643 7 1 1 6 1 */ +977, /* OBJ_id_tc26_agreement_gost_3410_2012_512 1 2 643 7 1 1 6 2 */ +980, /* OBJ_id_tc26_gost_3410_2012_512_constants 1 2 643 7 1 2 1 2 */ +986, /* OBJ_id_tc26_gost_28147_constants 1 2 643 7 1 2 5 1 */ 186, /* OBJ_pkcs1 1 2 840 113549 1 1 */ 27, /* OBJ_pkcs3 1 2 840 113549 1 3 */ 187, /* OBJ_pkcs5 1 2 840 113549 1 5 */ @@ -5013,6 +5203,10 @@ 439, /* OBJ_pilotAttributeSyntax 0 9 2342 19200300 100 3 */ 440, /* OBJ_pilotObjectClass 0 9 2342 19200300 100 4 */ 441, /* OBJ_pilotGroups 0 9 2342 19200300 100 10 */ +981, /* OBJ_id_tc26_gost_3410_2012_512_paramSetTest 1 2 643 7 1 2 1 2 0 */ +982, /* OBJ_id_tc26_gost_3410_2012_512_paramSetA 1 2 643 7 1 2 1 2 1 */ +983, /* OBJ_id_tc26_gost_3410_2012_512_paramSetB 1 2 643 7 1 2 1 2 2 */ +987, /* OBJ_id_tc26_gost_28147_param_Z 1 2 643 7 1 2 5 1 1 */ 108, /* OBJ_cast5_cbc 1 2 840 113533 7 66 10 */ 112, /* OBJ_pbeWithMD5AndCast5_CBC 1 2 840 113533 7 66 12 */ 782, /* OBJ_id_PasswordBasedMAC 1 2 840 113533 7 66 13 */ diff -Nuar openssl-1.0.2d/crypto/objects/objects.txt openssl-work/crypto/objects/objects.txt --- openssl-1.0.2d/crypto/objects/objects.txt 2015-07-09 15:57:15.000000000 +0400 +++ openssl-work/crypto/objects/objects.txt 2015-02-25 12:45:41.000000000 +0400 @@ -1156,6 +1156,7 @@ member-body 643 2 2 : cryptopro member-body 643 2 9 : cryptocom +member-body 643 7 1 : id-tc26 cryptopro 3 : id-GostR3411-94-with-GostR3410-2001 : GOST R 34.11-94 with GOST R 34.10-2001 cryptopro 4 : id-GostR3411-94-with-GostR3410-94 : GOST R 34.11-94 with GOST R 34.10-94 @@ -1169,8 +1170,10 @@ !Cname id-Gost28147-89 cryptopro 21 : gost89 : GOST 28147-89 : gost89-cnt + : gost89-cnt-12 !Cname id-Gost28147-89-MAC cryptopro 22 : gost-mac : GOST 28147-89 MAC + : gost-mac-12 !Cname id-GostR3411-94-prf cryptopro 23 : prf-gostr3411-94 : GOST R 34.11-94 PRF cryptopro 98 : id-GostR3410-2001DH : GOST R 34.10-2001 DH @@ -1229,6 +1232,52 @@ cryptocom 1 8 1 : id-GostR3410-2001-ParamSet-cc : GOST R 3410-2001 Parameter Set Cryptocom +# TC26 GOST OIDs + +id-tc26 1 : id-tc26-algorithms +id-tc26-algorithms 1 : id-tc26-sign +!Cname id-GostR3410-2012-256 +id-tc26-sign 1 : gost2012_256: GOST R 34.10-2012 with 256 bit modulus +!Cname id-GostR3410-2012-512 +id-tc26-sign 2 : gost2012_512: GOST R 34.10-2012 with 512 bit modulus + +id-tc26-algorithms 2 : id-tc26-digest +!Cname id-GostR3411-2012-256 +id-tc26-digest 2 : md_gost12_256: GOST R 34.11-2012 with 256 bit hash +!Cname id-GostR3411-2012-512 +id-tc26-digest 3 : md_gost12_512: GOST R 34.11-2012 with 512 bit hash + +id-tc26-algorithms 3 : id-tc26-signwithdigest +id-tc26-signwithdigest 2: id-tc26-signwithdigest-gost3410-2012-256: GOST R 34.10-2012 with GOST R 34.11-2012 (256 bit) +id-tc26-signwithdigest 3: id-tc26-signwithdigest-gost3410-2012-512: GOST R 34.10-2012 with GOST R 34.11-2012 (512 bit) + +id-tc26-algorithms 4 : id-tc26-mac +id-tc26-mac 1 : id-tc26-hmac-gost-3411-2012-256 : HMAC GOST 34.11-2012 256 bit +id-tc26-mac 2 : id-tc26-hmac-gost-3411-2012-512 : HMAC GOST 34.11-2012 512 bit + +id-tc26-algorithms 5 : id-tc26-cipher + +id-tc26-algorithms 6 : id-tc26-agreement +id-tc26-agreement 1 : id-tc26-agreement-gost-3410-2012-256 +id-tc26-agreement 2 : id-tc26-agreement-gost-3410-2012-512 + +id-tc26 2 : id-tc26-constants + +id-tc26-constants 1 : id-tc26-sign-constants +id-tc26-sign-constants 2: id-tc26-gost-3410-2012-512-constants +id-tc26-gost-3410-2012-512-constants 0 : id-tc26-gost-3410-2012-512-paramSetTest: GOST R 34.10-2012 (512 bit) testing parameter set +id-tc26-gost-3410-2012-512-constants 1 : id-tc26-gost-3410-2012-512-paramSetA: GOST R 34.10-2012 (512 bit) ParamSet A +id-tc26-gost-3410-2012-512-constants 2 : id-tc26-gost-3410-2012-512-paramSetB: GOST R 34.10-2012 (512 bit) ParamSet B + +id-tc26-constants 2 : id-tc26-digest-constants +id-tc26-constants 5 : id-tc26-cipher-constants +id-tc26-cipher-constants 1 : id-tc26-gost-28147-constants +id-tc26-gost-28147-constants 1 : id-tc26-gost-28147-param-Z : GOST 28147-89 TC26 parameter set + +member-body 643 3 131 1 1 : INN : INN +member-body 643 100 1 : OGRN : OGRN +member-body 643 100 3 : SNILS : SNILS + # Definitions for Camellia cipher - CBC MODE 1 2 392 200011 61 1 1 1 2 : CAMELLIA-128-CBC : camellia-128-cbc diff -Nuar openssl-1.0.2d/crypto/objects/obj_mac.h openssl-work/crypto/objects/obj_mac.h --- openssl-1.0.2d/crypto/objects/obj_mac.h 2015-07-09 15:58:04.000000000 +0400 +++ openssl-work/crypto/objects/obj_mac.h 2015-03-26 13:00:22.000000000 +0400 @@ -3678,6 +3678,10 @@ #define NID_cryptocom 806 #define OBJ_cryptocom OBJ_member_body,643L,2L,9L +#define SN_id_tc26 "id-tc26" +#define NID_id_tc26 958 +#define OBJ_id_tc26 OBJ_member_body,643L,7L,1L + #define SN_id_GostR3411_94_with_GostR3410_2001 "id-GostR3411-94-with-GostR3410-2001" #define LN_id_GostR3411_94_with_GostR3410_2001 "GOST R 34.11-94 with GOST R 34.10-2001" #define NID_id_GostR3411_94_with_GostR3410_2001 807 @@ -3716,11 +3720,17 @@ #define SN_gost89_cnt "gost89-cnt" #define NID_gost89_cnt 814 +#define SN_gost89_cnt_12 "gost89-cnt-12" +#define NID_gost89_cnt_12 959 + #define SN_id_Gost28147_89_MAC "gost-mac" #define LN_id_Gost28147_89_MAC "GOST 28147-89 MAC" #define NID_id_Gost28147_89_MAC 815 #define OBJ_id_Gost28147_89_MAC OBJ_cryptopro,22L +#define SN_gost_mac_12 "gost-mac-12" +#define NID_gost_mac_12 960 + #define SN_id_GostR3411_94_prf "prf-gostr3411-94" #define LN_id_GostR3411_94_prf "GOST R 34.11-94 PRF" #define NID_id_GostR3411_94_prf 816 @@ -3886,6 +3896,141 @@ #define NID_id_GostR3410_2001_ParamSet_cc 854 #define OBJ_id_GostR3410_2001_ParamSet_cc OBJ_cryptocom,1L,8L,1L +#define SN_id_tc26_algorithms "id-tc26-algorithms" +#define NID_id_tc26_algorithms 961 +#define OBJ_id_tc26_algorithms OBJ_id_tc26,1L + +#define SN_id_tc26_sign "id-tc26-sign" +#define NID_id_tc26_sign 962 +#define OBJ_id_tc26_sign OBJ_id_tc26_algorithms,1L + +#define SN_id_GostR3410_2012_256 "gost2012_256" +#define LN_id_GostR3410_2012_256 "GOST R 34.10-2012 with 256 bit modulus" +#define NID_id_GostR3410_2012_256 963 +#define OBJ_id_GostR3410_2012_256 OBJ_id_tc26_sign,1L + +#define SN_id_GostR3410_2012_512 "gost2012_512" +#define LN_id_GostR3410_2012_512 "GOST R 34.10-2012 with 512 bit modulus" +#define NID_id_GostR3410_2012_512 964 +#define OBJ_id_GostR3410_2012_512 OBJ_id_tc26_sign,2L + +#define SN_id_tc26_digest "id-tc26-digest" +#define NID_id_tc26_digest 965 +#define OBJ_id_tc26_digest OBJ_id_tc26_algorithms,2L + +#define SN_id_GostR3411_2012_256 "md_gost12_256" +#define LN_id_GostR3411_2012_256 "GOST R 34.11-2012 with 256 bit hash" +#define NID_id_GostR3411_2012_256 966 +#define OBJ_id_GostR3411_2012_256 OBJ_id_tc26_digest,2L + +#define SN_id_GostR3411_2012_512 "md_gost12_512" +#define LN_id_GostR3411_2012_512 "GOST R 34.11-2012 with 512 bit hash" +#define NID_id_GostR3411_2012_512 967 +#define OBJ_id_GostR3411_2012_512 OBJ_id_tc26_digest,3L + +#define SN_id_tc26_signwithdigest "id-tc26-signwithdigest" +#define NID_id_tc26_signwithdigest 968 +#define OBJ_id_tc26_signwithdigest OBJ_id_tc26_algorithms,3L + +#define SN_id_tc26_signwithdigest_gost3410_2012_256 "id-tc26-signwithdigest-gost3410-2012-256" +#define LN_id_tc26_signwithdigest_gost3410_2012_256 "GOST R 34.10-2012 with GOST R 34.11-2012 (256 bit)" +#define NID_id_tc26_signwithdigest_gost3410_2012_256 969 +#define OBJ_id_tc26_signwithdigest_gost3410_2012_256 OBJ_id_tc26_signwithdigest,2L + +#define SN_id_tc26_signwithdigest_gost3410_2012_512 "id-tc26-signwithdigest-gost3410-2012-512" +#define LN_id_tc26_signwithdigest_gost3410_2012_512 "GOST R 34.10-2012 with GOST R 34.11-2012 (512 bit)" +#define NID_id_tc26_signwithdigest_gost3410_2012_512 970 +#define OBJ_id_tc26_signwithdigest_gost3410_2012_512 OBJ_id_tc26_signwithdigest,3L + +#define SN_id_tc26_mac "id-tc26-mac" +#define NID_id_tc26_mac 971 +#define OBJ_id_tc26_mac OBJ_id_tc26_algorithms,4L + +#define SN_id_tc26_hmac_gost_3411_2012_256 "id-tc26-hmac-gost-3411-2012-256" +#define LN_id_tc26_hmac_gost_3411_2012_256 "HMAC GOST 34.11-2012 256 bit" +#define NID_id_tc26_hmac_gost_3411_2012_256 972 +#define OBJ_id_tc26_hmac_gost_3411_2012_256 OBJ_id_tc26_mac,1L + +#define SN_id_tc26_hmac_gost_3411_2012_512 "id-tc26-hmac-gost-3411-2012-512" +#define LN_id_tc26_hmac_gost_3411_2012_512 "HMAC GOST 34.11-2012 512 bit" +#define NID_id_tc26_hmac_gost_3411_2012_512 973 +#define OBJ_id_tc26_hmac_gost_3411_2012_512 OBJ_id_tc26_mac,2L + +#define SN_id_tc26_cipher "id-tc26-cipher" +#define NID_id_tc26_cipher 974 +#define OBJ_id_tc26_cipher OBJ_id_tc26_algorithms,5L + +#define SN_id_tc26_agreement "id-tc26-agreement" +#define NID_id_tc26_agreement 975 +#define OBJ_id_tc26_agreement OBJ_id_tc26_algorithms,6L + +#define SN_id_tc26_agreement_gost_3410_2012_256 "id-tc26-agreement-gost-3410-2012-256" +#define NID_id_tc26_agreement_gost_3410_2012_256 976 +#define OBJ_id_tc26_agreement_gost_3410_2012_256 OBJ_id_tc26_agreement,1L + +#define SN_id_tc26_agreement_gost_3410_2012_512 "id-tc26-agreement-gost-3410-2012-512" +#define NID_id_tc26_agreement_gost_3410_2012_512 977 +#define OBJ_id_tc26_agreement_gost_3410_2012_512 OBJ_id_tc26_agreement,2L + +#define SN_id_tc26_constants "id-tc26-constants" +#define NID_id_tc26_constants 978 +#define OBJ_id_tc26_constants OBJ_id_tc26,2L + +#define SN_id_tc26_sign_constants "id-tc26-sign-constants" +#define NID_id_tc26_sign_constants 979 +#define OBJ_id_tc26_sign_constants OBJ_id_tc26_constants,1L + +#define SN_id_tc26_gost_3410_2012_512_constants "id-tc26-gost-3410-2012-512-constants" +#define NID_id_tc26_gost_3410_2012_512_constants 980 +#define OBJ_id_tc26_gost_3410_2012_512_constants OBJ_id_tc26_sign_constants,2L + +#define SN_id_tc26_gost_3410_2012_512_paramSetTest "id-tc26-gost-3410-2012-512-paramSetTest" +#define LN_id_tc26_gost_3410_2012_512_paramSetTest "GOST R 34.10-2012 (512 bit) testing parameter set" +#define NID_id_tc26_gost_3410_2012_512_paramSetTest 981 +#define OBJ_id_tc26_gost_3410_2012_512_paramSetTest OBJ_id_tc26_gost_3410_2012_512_constants,0L + +#define SN_id_tc26_gost_3410_2012_512_paramSetA "id-tc26-gost-3410-2012-512-paramSetA" +#define LN_id_tc26_gost_3410_2012_512_paramSetA "GOST R 34.10-2012 (512 bit) ParamSet A" +#define NID_id_tc26_gost_3410_2012_512_paramSetA 982 +#define OBJ_id_tc26_gost_3410_2012_512_paramSetA OBJ_id_tc26_gost_3410_2012_512_constants,1L + +#define SN_id_tc26_gost_3410_2012_512_paramSetB "id-tc26-gost-3410-2012-512-paramSetB" +#define LN_id_tc26_gost_3410_2012_512_paramSetB "GOST R 34.10-2012 (512 bit) ParamSet B" +#define NID_id_tc26_gost_3410_2012_512_paramSetB 983 +#define OBJ_id_tc26_gost_3410_2012_512_paramSetB OBJ_id_tc26_gost_3410_2012_512_constants,2L + +#define SN_id_tc26_digest_constants "id-tc26-digest-constants" +#define NID_id_tc26_digest_constants 984 +#define OBJ_id_tc26_digest_constants OBJ_id_tc26_constants,2L + +#define SN_id_tc26_cipher_constants "id-tc26-cipher-constants" +#define NID_id_tc26_cipher_constants 985 +#define OBJ_id_tc26_cipher_constants OBJ_id_tc26_constants,5L + +#define SN_id_tc26_gost_28147_constants "id-tc26-gost-28147-constants" +#define NID_id_tc26_gost_28147_constants 986 +#define OBJ_id_tc26_gost_28147_constants OBJ_id_tc26_cipher_constants,1L + +#define SN_id_tc26_gost_28147_param_Z "id-tc26-gost-28147-param-Z" +#define LN_id_tc26_gost_28147_param_Z "GOST 28147-89 TC26 parameter set" +#define NID_id_tc26_gost_28147_param_Z 987 +#define OBJ_id_tc26_gost_28147_param_Z OBJ_id_tc26_gost_28147_constants,1L + +#define SN_INN "INN" +#define LN_INN "INN" +#define NID_INN 988 +#define OBJ_INN OBJ_member_body,643L,3L,131L,1L,1L + +#define SN_OGRN "OGRN" +#define LN_OGRN "OGRN" +#define NID_OGRN 989 +#define OBJ_OGRN OBJ_member_body,643L,100L,1L + +#define SN_SNILS "SNILS" +#define LN_SNILS "SNILS" +#define NID_SNILS 990 +#define OBJ_SNILS OBJ_member_body,643L,100L,3L + #define SN_camellia_128_cbc "CAMELLIA-128-CBC" #define LN_camellia_128_cbc "camellia-128-cbc" #define NID_camellia_128_cbc 751 diff -Nuar openssl-1.0.2d/crypto/objects/obj_mac.num openssl-work/crypto/objects/obj_mac.num --- openssl-1.0.2d/crypto/objects/obj_mac.num 2015-07-09 15:58:03.000000000 +0400 +++ openssl-work/crypto/objects/obj_mac.num 2015-02-25 12:49:43.000000000 +0400 @@ -955,3 +955,36 @@ jurisdictionLocalityName 955 jurisdictionStateOrProvinceName 956 jurisdictionCountryName 957 +id_tc26 958 +gost89_cnt_12 959 +gost_mac_12 960 +id_tc26_algorithms 961 +id_tc26_sign 962 +id_GostR3410_2012_256 963 +id_GostR3410_2012_512 964 +id_tc26_digest 965 +id_GostR3411_2012_256 966 +id_GostR3411_2012_512 967 +id_tc26_signwithdigest 968 +id_tc26_signwithdigest_gost3410_2012_256 969 +id_tc26_signwithdigest_gost3410_2012_512 970 +id_tc26_mac 971 +id_tc26_hmac_gost_3411_2012_256 972 +id_tc26_hmac_gost_3411_2012_512 973 +id_tc26_cipher 974 +id_tc26_agreement 975 +id_tc26_agreement_gost_3410_2012_256 976 +id_tc26_agreement_gost_3410_2012_512 977 +id_tc26_constants 978 +id_tc26_sign_constants 979 +id_tc26_gost_3410_2012_512_constants 980 +id_tc26_gost_3410_2012_512_paramSetTest 981 +id_tc26_gost_3410_2012_512_paramSetA 982 +id_tc26_gost_3410_2012_512_paramSetB 983 +id_tc26_digest_constants 984 +id_tc26_cipher_constants 985 +id_tc26_gost_28147_constants 986 +id_tc26_gost_28147_param_Z 987 +INN 988 +OGRN 989 +SNILS 990 diff -Nuar openssl-1.0.2d/crypto/objects/obj_xref.h openssl-work/crypto/objects/obj_xref.h --- openssl-1.0.2d/crypto/objects/obj_xref.h 2015-07-09 16:02:55.000000000 +0400 +++ openssl-work/crypto/objects/obj_xref.h 2015-03-26 13:00:21.000000000 +0400 @@ -56,6 +56,10 @@ NID_dh_cofactor_kdf}, {NID_dhSinglePass_cofactorDH_sha512kdf_scheme, NID_sha512, NID_dh_cofactor_kdf}, + {NID_id_tc26_signwithdigest_gost3410_2012_256, NID_id_GostR3411_2012_256, + NID_id_GostR3410_2012_256}, + {NID_id_tc26_signwithdigest_gost3410_2012_512, NID_id_GostR3411_2012_512, + NID_id_GostR3410_2012_512}, }; static const nid_triple *const sigoid_srt_xref[] = { @@ -96,4 +100,6 @@ &sigoid_srt[26], &sigoid_srt[27], &sigoid_srt[28], + &sigoid_srt[40], + &sigoid_srt[41], }; diff -Nuar openssl-1.0.2d/crypto/objects/obj_xref.txt openssl-work/crypto/objects/obj_xref.txt --- openssl-1.0.2d/crypto/objects/obj_xref.txt 2015-07-09 15:57:15.000000000 +0400 +++ openssl-work/crypto/objects/obj_xref.txt 2015-02-24 15:22:17.000000000 +0400 @@ -44,6 +44,8 @@ id_GostR3411_94_with_GostR3410_94 id_GostR3411_94 id_GostR3410_94 id_GostR3411_94_with_GostR3410_94_cc id_GostR3411_94 id_GostR3410_94_cc id_GostR3411_94_with_GostR3410_2001_cc id_GostR3411_94 id_GostR3410_2001_cc +id_tc26_signwithdigest_gost3410_2012_256 id_GostR3411_2012_256 id_GostR3410_2012_256 +id_tc26_signwithdigest_gost3410_2012_512 id_GostR3411_2012_512 id_GostR3410_2012_512 # ECDH KDFs and their corresponding message digests and schemes dhSinglePass_stdDH_sha1kdf_scheme sha1 dh_std_kdf dhSinglePass_stdDH_sha224kdf_scheme sha224 dh_std_kdf libengine-gost-openssl1.1-1.1.0.1/patches/1.0.2/pkcs12.diff000066400000000000000000000057311315100554000225010ustar00rootroot00000000000000diff -Nuar openssl-1.0.2d/crypto/evp/evp_pbe.c openssl-work/crypto/evp/evp_pbe.c --- openssl-1.0.2d/crypto/evp/evp_pbe.c 2015-07-09 15:53:21.000000000 +0400 +++ openssl-work/crypto/evp/evp_pbe.c 2015-03-26 13:00:21.000000000 +0400 @@ -121,6 +121,10 @@ {EVP_PBE_TYPE_PRF, NID_hmacWithSHA384, -1, NID_sha384, 0}, {EVP_PBE_TYPE_PRF, NID_hmacWithSHA512, -1, NID_sha512, 0}, {EVP_PBE_TYPE_PRF, NID_id_HMACGostR3411_94, -1, NID_id_GostR3411_94, 0}, + {EVP_PBE_TYPE_PRF, NID_id_tc26_hmac_gost_3411_2012_256, -1, + NID_id_GostR3411_2012_256, 0}, + {EVP_PBE_TYPE_PRF, NID_id_tc26_hmac_gost_3411_2012_512, -1, + NID_id_GostR3411_2012_512, 0}, }; #ifdef TEST diff -Nuar openssl-1.0.2d/crypto/pkcs12/p12_mutl.c openssl-work/crypto/pkcs12/p12_mutl.c --- openssl-1.0.2d/crypto/pkcs12/p12_mutl.c 2015-07-09 15:53:21.000000000 +0400 +++ openssl-work/crypto/pkcs12/p12_mutl.c 2015-06-17 14:48:18.000000000 +0400 @@ -65,6 +65,28 @@ # include # include +# define TK26_MAC_KEY_LEN 32 + +static int PKCS12_gen_gost_mac_key(const char *pass, int passlen, + const unsigned char *salt, int saltlen, + int iter, const EVP_MD *digest, int keylen, + unsigned char *key) +{ + unsigned char out[96]; + + if (keylen != TK26_MAC_KEY_LEN) { + return 0; + } + + if (!PKCS5_PBKDF2_HMAC(pass, passlen, salt, saltlen, iter, + digest, 96, out)) { + return 0; + } + memcpy(key, out + 64, TK26_MAC_KEY_LEN); + OPENSSL_cleanse(out, 96); + return 1; +} + /* Generate a MAC */ int PKCS12_gen_mac(PKCS12 *p12, const char *pass, int passlen, unsigned char *mac, unsigned int *maclen) @@ -73,7 +95,7 @@ HMAC_CTX hmac; unsigned char key[EVP_MAX_MD_SIZE], *salt; int saltlen, iter; - int md_size; + int md_size = 0; if (!PKCS7_type_is_data(p12->authsafes)) { PKCS12err(PKCS12_F_PKCS12_GEN_MAC, PKCS12_R_CONTENT_TYPE_NOT_DATA); @@ -93,8 +115,19 @@ md_size = EVP_MD_size(md_type); if (md_size < 0) return 0; - if (!PKCS12_key_gen(pass, passlen, salt, saltlen, PKCS12_MAC_ID, iter, - md_size, key, md_type)) { + if ((md_type->type == NID_id_GostR3411_94 + || md_type->type == NID_id_GostR3411_2012_256 + || md_type->type == NID_id_GostR3411_2012_512) + && !getenv("LEGACY_GOST_PKCS12")) { + md_size = TK26_MAC_KEY_LEN; + if (!PKCS12_gen_gost_mac_key(pass, passlen, salt, saltlen, iter, + md_type, md_size, key)) { + PKCS12err(PKCS12_F_PKCS12_GEN_MAC, PKCS12_R_KEY_GEN_ERROR); + return 0; + } + } else + if (!PKCS12_key_gen(pass, passlen, salt, saltlen, PKCS12_MAC_ID, iter, + md_size, key, md_type)) { PKCS12err(PKCS12_F_PKCS12_GEN_MAC, PKCS12_R_KEY_GEN_ERROR); return 0; } libengine-gost-openssl1.1-1.1.0.1/patches/1.0.2/smimecap.diff000066400000000000000000000026371315100554000231760ustar00rootroot00000000000000diff -Nuar openssl-1.0.2d/crypto/cms/cms_sd.c openssl-work/crypto/cms/cms_sd.c --- openssl-1.0.2d/crypto/cms/cms_sd.c 2015-07-09 15:57:15.000000000 +0400 +++ openssl-work/crypto/cms/cms_sd.c 2015-03-26 13:00:20.000000000 +0400 @@ -941,6 +941,8 @@ int CMS_add_standard_smimecap(STACK_OF(X509_ALGOR) **smcap) { if (!cms_add_cipher_smcap(smcap, NID_aes_256_cbc, -1) + || !cms_add_digest_smcap(smcap, NID_id_GostR3411_2012_256, -1) + || !cms_add_digest_smcap(smcap, NID_id_GostR3411_2012_512, -1) || !cms_add_digest_smcap(smcap, NID_id_GostR3411_94, -1) || !cms_add_cipher_smcap(smcap, NID_id_Gost28147_89, -1) || !cms_add_cipher_smcap(smcap, NID_aes_192_cbc, -1) diff -Nuar openssl-1.0.2d/crypto/pkcs7/pk7_smime.c openssl-work/crypto/pkcs7/pk7_smime.c --- openssl-1.0.2d/crypto/pkcs7/pk7_smime.c 2015-07-09 15:53:21.000000000 +0400 +++ openssl-work/crypto/pkcs7/pk7_smime.c 2015-03-26 13:00:21.000000000 +0400 @@ -185,6 +185,8 @@ goto err; } if (!add_cipher_smcap(smcap, NID_aes_256_cbc, -1) + || !add_digest_smcap(smcap, NID_id_GostR3411_2012_256, -1) + || !add_digest_smcap(smcap, NID_id_GostR3411_2012_512, -1) || !add_digest_smcap(smcap, NID_id_GostR3411_94, -1) || !add_cipher_smcap(smcap, NID_id_Gost28147_89, -1) || !add_cipher_smcap(smcap, NID_aes_192_cbc, -1)