diff --git a/CMakeLists.txt b/CMakeLists.txt index 9e54128fc68254b96ee2d57334b2f78bc0057774..cf017e83d4ea6e54180fdbdd8636968222a5e82b 100755 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -280,7 +280,6 @@ if(UNIX) target_link_libraries(dap_crypto dap_core m) endif() -set(BUILD_CRYPTO_TESTS ON) if(BUILD_CRYPTO_TESTS) enable_testing() diff --git a/CMakeLists.txt.user b/CMakeLists.txt.user index 1c61acc73ecc48b1f2548a75a54db3b77173a072..3d708f47ba113c67877250b5ab2dd289e3be9cf0 100644 --- a/CMakeLists.txt.user +++ b/CMakeLists.txt.user @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE QtCreatorProject> -<!-- Written by QtCreator 4.11.2, 2020-04-20T21:09:22. --> +<!-- Written by QtCreator 4.11.2, 2020-04-24T10:38:37. --> <qtcreator> <data> <variable>EnvironmentId</variable> @@ -72,6 +72,7 @@ <value type="int" key="ProjectExplorer.Target.ActiveRunConfiguration">0</value> <valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.0"> <valuelist type="QVariantList" key="CMake.Configuration"> + <value type="QString">BUILD_CRYPTO_TESTS:BOOL=ON</value> <value type="QString">CMAKE_BUILD_TYPE:STRING=Debug</value> <value type="QString">CMAKE_CXX_COMPILER:STRING=%{Compiler:Executable:Cxx}</value> <value type="QString">CMAKE_C_COMPILER:STRING=%{Compiler:Executable:C}</value> diff --git a/src/dap_enc_ringct20.c b/src/dap_enc_ringct20.c index 250ad8c44b5d4b10a066763f422fa53cf27bb605..d6d0f87437a4d42207d88b3a668c6a58c9d5c6d3 100644 --- a/src/dap_enc_ringct20.c +++ b/src/dap_enc_ringct20.c @@ -11,47 +11,49 @@ #define LOG_TAG "dap_enc_sig_ringct20" static enum DAP_RINGCT20_SIGN_SECURITY _ringct20_type = RINGCT20_MIN_SIZE; // by default -poly_ringct20 Afixed[10]; -poly_ringct20 Hfixed[10]; -bool ringct20_params_init(ringct20_param_t *ringct20_p, ringct20_kind_t kind) +//poly_ringct20 Afixed[10]; +//poly_ringct20 Hfixed[10]; +#include "ringct20/common.h" + +void SetupPrintAH(poly_ringct20 *A, poly_ringct20 * H, const int mLen) { - static int first_init = 1;//CRUTCH - if(first_init) + LRCT_Setup(A, H, mLen); + uint8_t polyb_tmp[NEWHOPE_POLYBYTES]; + printf("A_bpoly[%d][NEWHOPE_POLYBYTES] = {\n", mLen); + for(int i = 0; i < mLen; ++i) { - LRCT_Setup(Afixed,Hfixed, 10); - first_init = 0; + poly_tobytes(polyb_tmp,A + i); + printf("{"); + for(int j = 0; j < NEWHOPE_POLYBYTES; ++j) + { + printf("0x%.2x", polyb_tmp[j]); + if(j < NEWHOPE_POLYBYTES - 1) + printf(", "); + } + printf("}"); + if(i < mLen - 1) + printf(",\n"); } - if(kind != MODERINGCT20_0) - return false; - ringct20_p->M = 3; - - ringct20_p->mLen = ringct20_p->M-1; - if(ringct20_p->mLen > 10) - return false; - ringct20_p->wLen = 3; - ringct20_p->kind = kind; - ringct20_p->POLY_RINGCT20_SIZE_PACKED = NEWHOPE_POLYBYTES; - ringct20_p->POLY_RINGCT20_SIZE = NEWHOPE_N*sizeof(uint16_t); - ringct20_p->A = malloc(ringct20_p->POLY_RINGCT20_SIZE * ringct20_p->mLen);//CRUTCH//dont forget to free - ringct20_p->H = malloc(ringct20_p->POLY_RINGCT20_SIZE * ringct20_p->mLen);//CRUTCH//dont forget to free - poly_copy(ringct20_p->A, Afixed, ringct20_p->mLen); - poly_copy(ringct20_p->H, Hfixed, ringct20_p->mLen); - ringct20_p->RINGCT20_PBK_SIZE = ringct20_p->POLY_RINGCT20_SIZE_PACKED; - ringct20_p->RINGCT20_PRK_SIZE = ringct20_p->mLen*ringct20_p->POLY_RINGCT20_SIZE_PACKED; - ringct20_p->RINGCT20_SIG_SIZE = (ringct20_p->wLen + - ringct20_p->M*ringct20_p->wLen + 1 +1)*ringct20_p->POLY_RINGCT20_SIZE_PACKED; - - - return true; -} -void ringct20_params_free(ringct20_param_t *ringct20_p) -{ - if(ringct20_p->A != NULL) - free(ringct20_p->A); - if(ringct20_p->H != NULL) - free(ringct20_p->H); - free(ringct20_p); + printf("};\n"); + printf("H_bpoly[%d][NEWHOPE_POLYBYTES] = {\n", mLen); + for(int i = 0; i < mLen; ++i) + { + poly_tobytes(polyb_tmp,H + i); + printf("{"); + for(int j = 0; j < NEWHOPE_POLYBYTES; ++j) + { + printf("0x%.2x", polyb_tmp[j]); + if(j < NEWHOPE_POLYBYTES - 1) + printf(", "); + } + printf("}"); + if(i < mLen - 1) + printf(",\n"); + } + printf("};\n"); + } + void ringct20_pack_prk(uint8_t *prk, const poly_ringct20 *S, const ringct20_param_t *rct_p) { for(int i = 0; i < rct_p->M - 1; ++i) @@ -135,6 +137,33 @@ void ringct20_pack_sig(uint8_t *sig, const poly_ringct20 *a_list, packed_size += rct_p->POLY_RINGCT20_SIZE_PACKED; } +#define CRUTCH + +int get_pbk_list(poly_ringct20 *aList, const ringct20_param_t *p, const int Pi) +{ + +#ifndef CRUTCH + return -1;//ЗдеÑÑŒ должно быть обращение за ÑпиÑком публичных ключей + ringct20_public_key_t *pbk_list; + // pbk_list = malloc() +#else + //get a list of some pbk + { + poly_ringct20 *Stmp = malloc(p->POLY_RINGCT20_SIZE*p->mLen); + for(int i = 0; i < p->wLen; ++i) + { + if(i == Pi) + continue; + LRCT_SampleKey(Stmp, p->mLen); + LRCT_KeyGen(aList + i, p->A, Stmp, p->mLen); + } + free(Stmp); + } +#endif +return 0; + +} + int ringct20_crypto_sign( ringct20_signature_t *sig, const unsigned char *m, unsigned long long mlen, const ringct20_private_key_t *private_key) { ringct20_param_t *p = calloc(sizeof(ringct20_param_t),1); @@ -151,19 +180,10 @@ int ringct20_crypto_sign( ringct20_signature_t *sig, const unsigned char *m, uns ringct20_unpack_prk(private_key->data,S,p); LRCT_KeyGen(aList + Pi, p->A,S,p->mLen); - //CRUTCH - //get a list of some pbk - { - poly_ringct20 *Stmp = malloc(p->POLY_RINGCT20_SIZE*p->mLen); - for(int i = 0; i < p->wLen; ++i) - { - if(i == Pi) - continue; - LRCT_SampleKey(Stmp, p->mLen); - LRCT_KeyGen(aList + i, p->A, Stmp, p->mLen); - } - free(Stmp); - } + + get_pbk_list(aList, p, Pi); + + poly_ringct20 h; poly_ringct20 *u = malloc(p->POLY_RINGCT20_SIZE*p->M); poly_ringct20 c1; diff --git a/src/ringct20/api.h b/src/ringct20/api.h deleted file mode 100644 index 252c450119b4b3cb05e7a159f254994c0a1f60f2..0000000000000000000000000000000000000000 --- a/src/ringct20/api.h +++ /dev/null @@ -1,25 +0,0 @@ -#ifndef API_H -#define API_H - -#include "params.h" - -#define CRYPTO_SECRETKEYBYTES NEWHOPE_CCAKEM_SECRETKEYBYTES -#define CRYPTO_PUBLICKEYBYTES NEWHOPE_CCAKEM_PUBLICKEYBYTES -#define CRYPTO_CIPHERTEXTBYTES NEWHOPE_CCAKEM_CIPHERTEXTBYTES -#define CRYPTO_BYTES NEWHOPE_SYMBYTES - -#if (NEWHOPE_N == 512) -#define CRYPTO_ALGNAME "NewHope-512-CCA-KEM" -#elif (NEWHOPE_N == 1024) -#define CRYPTO_ALGNAME "NewHope-1024-CCA-KEM" -#else -#error "NEWHOPE_N must be either 512 or 1024" -#endif - -int crypto_kem_keypair(unsigned char *pk, unsigned char *sk); - -int crypto_kem_enc(unsigned char *ct, unsigned char *ss, const unsigned char *pk); - -int crypto_kem_dec(unsigned char *ss, const unsigned char *ct, const unsigned char *sk); - -#endif diff --git a/src/ringct20/common.c b/src/ringct20/common.c index 0175384945129aec71d3e0e0f917e5b6dad1bdf2..e67eef292764bed785795a98b1582a2340b37fcc 100644 --- a/src/ringct20/common.c +++ b/src/ringct20/common.c @@ -38,7 +38,7 @@ void BytePrint(unsigned char *bBuff, size_t len) size_t i = 0; for (i = 0; i < len; i++) { - printf("%02X", bBuff[i]); + printf("0x%02X, ", bBuff[i]); } printf("\n"); } diff --git a/src/ringct20/cryptoConfig.h b/src/ringct20/cryptoConfig.h deleted file mode 100644 index d4157e65c95eb3ff400757a654dbc8727abfd7f0..0000000000000000000000000000000000000000 --- a/src/ringct20/cryptoConfig.h +++ /dev/null @@ -1,31 +0,0 @@ -#ifndef _CRYPTOCONFIG_H -#define _CRYPTOCONFIG_H - -#include <stdio.h> -#include <stdlib.h> -#include <string.h> - -/******************************************************************************/ -typedef unsigned __int64 uint64; -typedef unsigned long uint32; -typedef unsigned char uint8; - -//rotate left(circular left shift) operation -#define ROTL(value, bits) (((value) << (bits)) | ((value) >> (32-bits))) -//rotate right(circular right shift) operation -#define ROTR(value, bits) (((value) >> (bits)) | ((value) << (32-bits))) -//right left operation -#define SHL(value, bits) ((value) << (bits)) -//right shift operation -#define SHR(value, bits) ((value) >> (bits)) - -#define MAX(a, b) ((a) > (b)) ? (a) : (b) -#define MIN(a, b) ((a) < (b)) ? (a) : (b) - -/******************************************************************************/ - - -#define USE_SHA256 - - -#endif/* _CRYPTOCONFIG_H */ \ No newline at end of file diff --git a/src/ringct20/ring.c b/src/ringct20/ring.c index 67c70469b548c4c0c01138eb24fdcc85d255ff3e..d03d2b3bd78149b627bdf9156ec0366e8303a19c 100644 --- a/src/ringct20/ring.c +++ b/src/ringct20/ring.c @@ -1,9 +1,7 @@ #include <stdio.h> #include "ring.h" #include "common.h" -#include "sha256.h" -#include"sha3/fips202.h" - +#include "sha3/KeccakHash.h" void LRCT_SampleKey(poly_ringct20 *r, size_t mLen) { @@ -74,7 +72,9 @@ void LRCT_SigGen(poly_ringct20 *c1, poly_ringct20 **t, poly_ringct20 *h, poly_ri poly_ringct20 *tmp2q = (poly_ringct20 *)malloc((mLen + 1) * sizeof(poly_ringct20)); poly_ringct20 tmp, tmp1; poly_ringct20 c, cpai; - SHA256_CTX ctx; + //SHA256_CTX ctx; + Keccak_HashInstance ctx; + unsigned char bHash[32] = { 0 }; unsigned char bpoly[NEWHOPE_POLYBYTES] = { 0 }; unsigned char bt[NEWHOPE_POLYBYTES] = { 0 }; @@ -93,28 +93,38 @@ void LRCT_SigGen(poly_ringct20 *c1, poly_ringct20 **t, poly_ringct20 *h, poly_ri poly_setValue(S2q + mLen, 1);//S_{2q} ///////////2. LRCT_Lift(A2qp, A, L + pai, mLen); - SHA256_Init(&ctx); + //SHA256_Init(&ctx); + Keccak_HashInitialize_SHA3_256(&ctx); for (i = 0; i < w; i++) { poly_tobytes(bpoly, L + i); - SHA256_Update(&ctx, bpoly, NEWHOPE_POLYBYTES); - } - for ( i = 0; i < mLen+1; i++) - { - poly_tobytes(bpoly, H2q + i); - SHA256_Update(&ctx, bpoly, NEWHOPE_POLYBYTES); - } - SHA256_Update(&ctx, msg, msgLen);//msg + //SHA256_Update(&ctx, bpoly, NEWHOPE_POLYBYTES); + Keccak_HashUpdate(&ctx, bpoly, NEWHOPE_POLYBYTES*8); + } + for ( i = 0; i < mLen+1; i++) + { + poly_tobytes(bpoly, H2q + i); + //SHA256_Update(&ctx, bpoly, NEWHOPE_POLYBYTES); + Keccak_HashUpdate(&ctx, bpoly, NEWHOPE_POLYBYTES*8); + } + //SHA256_Update(&ctx, msg, msgLen);//msg + Keccak_HashUpdate(&ctx, msg, msgLen*8); LRCT_MatrixMulPoly(&tmp, A2qp, u, mLen + 1); poly_tobytes(bpoly, &tmp); - SHA256_Update(&ctx, bpoly, NEWHOPE_POLYBYTES);//A2qb*U + //SHA256_Update(&ctx, bpoly, NEWHOPE_POLYBYTES);//A2qb*U + Keccak_HashUpdate(&ctx, bpoly, NEWHOPE_POLYBYTES*8); LRCT_MatrixMulPoly(&tmp, H2q, u, mLen + 1); poly_tobytes(bpoly, &tmp); - SHA256_Update(&ctx, bpoly, NEWHOPE_POLYBYTES);//H2q*U - SHA256_Final(bHash, &ctx);//C_(pai+1) - SHA256_KDF(bHash, 32, NEWHOPE_POLYBYTES, bt); + //SHA256_Update(&ctx, bpoly, NEWHOPE_POLYBYTES);//H2q*U + Keccak_HashUpdate(&ctx, bpoly, NEWHOPE_POLYBYTES*8); + //SHA256_Final(bHash, &ctx);//C_(pai+1) + Keccak_HashFinal(&ctx, bHash); + + //SHA256_KDF(bHash, 32, NEWHOPE_POLYBYTES, bt); + Keccak_256KDF(bHash, 32, bt, NEWHOPE_POLYBYTES); + poly_frombytes(&c, bt); poly_serial(&c); //poly_print(&c); @@ -127,18 +137,27 @@ void LRCT_SigGen(poly_ringct20 *c1, poly_ringct20 **t, poly_ringct20 *h, poly_ri poly_cofcopy(c1, &c); } LRCT_Lift(tmp2q, A, L + j, mLen); - SHA256_Init(&ctx); + //SHA256_Init(&ctx); + Keccak_HashInitialize_SHA3_256(&ctx); + for (k = 0; k < w; k++) { poly_tobytes(bpoly, L + k); - SHA256_Update(&ctx, bpoly, NEWHOPE_POLYBYTES); + //SHA256_Update(&ctx, bpoly, NEWHOPE_POLYBYTES); + Keccak_HashUpdate(&ctx, bpoly, NEWHOPE_POLYBYTES*8); + + } for (k = 0; k < mLen+1; k++) { poly_tobytes(bpoly, H2q + k); - SHA256_Update(&ctx, bpoly, NEWHOPE_POLYBYTES); - } - SHA256_Update(&ctx, msg, msgLen);//msg + //SHA256_Update(&ctx, bpoly, NEWHOPE_POLYBYTES); + Keccak_HashUpdate(&ctx, bpoly, NEWHOPE_POLYBYTES*8); + + } + //SHA256_Update(&ctx, msg, msgLen);//msg + Keccak_HashUpdate(&ctx, msg, msgLen*8); + for ( k = 0; k < mLen+1; k++) { @@ -150,17 +169,21 @@ void LRCT_SigGen(poly_ringct20 *c1, poly_ringct20 **t, poly_ringct20 *h, poly_ri poly_constmul(&tmp1, &c, NEWHOPE_Q); poly_add_ringct20(&tmp, &tmp, &tmp1);//(+ qC_i)% Q poly_tobytes(bpoly, &tmp); - SHA256_Update(&ctx, bpoly, NEWHOPE_POLYBYTES);// + //SHA256_Update(&ctx, bpoly, NEWHOPE_POLYBYTES);// + Keccak_HashUpdate(&ctx, bpoly, NEWHOPE_POLYBYTES*8); LRCT_MatrixMulPoly(&tmp, H2q, t[j], mLen + 1); poly_add_ringct20(&tmp, &tmp, &tmp1);//(+ qC_i)% Q poly_tobytes(bpoly, &tmp); - SHA256_Update(&ctx, bpoly, NEWHOPE_POLYBYTES);//H2q*U - SHA256_Final(bHash, &ctx);//C_(pai+1) + //SHA256_Update(&ctx, bpoly, NEWHOPE_POLYBYTES);//H2q*U + Keccak_HashUpdate(&ctx, bpoly, NEWHOPE_POLYBYTES*8); + //SHA256_Final(bHash, &ctx);//C_(pai+1) + Keccak_HashFinal(&ctx, bHash); // printf("sign bHash======================%d:\n", j); // BytePrint(bHash, 32); - SHA256_KDF(bHash, 32, NEWHOPE_POLYBYTES, bt); + //SHA256_KDF(bHash, 32, NEWHOPE_POLYBYTES, bt); + Keccak_256KDF(bHash, 32, bt, NEWHOPE_POLYBYTES); poly_frombytes(&c, bt); poly_serial(&c);//C_{j+1} if (j == (w + pai-1)%w) @@ -196,7 +219,8 @@ int LRCT_SigVer(const poly_ringct20 *c1, poly_ringct20 **t, poly_ringct20 *A, po poly_ringct20 *H2q = (poly_ringct20 *)malloc((mLen + 1) * sizeof(poly_ringct20)); poly_ringct20 *A2qp = (poly_ringct20 *)malloc((mLen + 1) * sizeof(poly_ringct20)); poly_ringct20 c, tmp, tmp1; - SHA256_CTX ctx; + //SHA256_CTX ctx; + Keccak_HashInstance ctx; unsigned char bHash[32] = { 0 }; unsigned char bpoly[NEWHOPE_POLYBYTES] = { 0 }; for (i = 0; i < (mLen + 1); i++) @@ -210,36 +234,47 @@ int LRCT_SigVer(const poly_ringct20 *c1, poly_ringct20 **t, poly_ringct20 *A, po for ( i = 0; i < w; i++) { LRCT_Lift(A2qp, A, L+i, mLen); - SHA256_Init(&ctx); + //SHA256_Init(&ctx); + Keccak_HashInitialize_SHA3_256(&ctx); for (k = 0; k < w; k++) { poly_tobytes(bpoly, L + k); - SHA256_Update(&ctx, bpoly, NEWHOPE_POLYBYTES); - } + //SHA256_Update(&ctx, bpoly, NEWHOPE_POLYBYTES); + Keccak_HashUpdate(&ctx, bpoly, NEWHOPE_POLYBYTES*8); + + } for (k = 0; k < mLen+1; k++) { poly_tobytes(bpoly, H2q + k); - SHA256_Update(&ctx, bpoly, NEWHOPE_POLYBYTES); - } - SHA256_Update(&ctx, msg, msgLen);//msg + //SHA256_Update(&ctx, bpoly, NEWHOPE_POLYBYTES); + Keccak_HashUpdate(&ctx, bpoly, NEWHOPE_POLYBYTES*8); + } + //SHA256_Update(&ctx, msg, msgLen);//msg + Keccak_HashUpdate(&ctx, msg, msgLen*8); poly_constmul(&tmp1, &c, NEWHOPE_Q); LRCT_MatrixMulPoly(&tmp, A2qp, t[i], mLen + 1); poly_add_ringct20(&tmp, &tmp, &tmp1);//(+ qC_i)% Q poly_tobytes(bpoly, &tmp); - SHA256_Update(&ctx, bpoly, NEWHOPE_POLYBYTES);//A2qb*U + //SHA256_Update(&ctx, bpoly, NEWHOPE_POLYBYTES);//A2qb*U + Keccak_HashUpdate(&ctx, bpoly, NEWHOPE_POLYBYTES*8); LRCT_MatrixMulPoly(&tmp, H2q, t[i], mLen + 1); poly_add_ringct20(&tmp, &tmp, &tmp1);//(+ qC_i)% Q poly_serial(&tmp); poly_tobytes(bpoly, &tmp); - SHA256_Update(&ctx, bpoly, NEWHOPE_POLYBYTES);//H2q*U - SHA256_Final(bHash, &ctx);//C_(pai+1) -// printf("bHash======================%d:\n", i); -// BytePrint(bHash, 32); - SHA256_KDF(bHash, 32, NEWHOPE_POLYBYTES, bpoly); - poly_frombytes(&c, bpoly); + //SHA256_Update(&ctx, bpoly, NEWHOPE_POLYBYTES);//H2q*U + Keccak_HashUpdate(&ctx, bpoly, NEWHOPE_POLYBYTES*8); + + //SHA256_Final(bHash, &ctx);//C_(pai+1) + Keccak_HashFinal(&ctx, bHash); +// printf("sign bHash======================%d:\n", j); +// BytePrint(bHash, 32); + + //SHA256_KDF(bHash, 32, NEWHOPE_POLYBYTES, bpoly); + Keccak_256KDF(bHash, 32, bpoly, NEWHOPE_POLYBYTES); + poly_frombytes(&c, bpoly); poly_serial(&c); } free(H2q); @@ -316,7 +351,9 @@ void MIMO_LRCT_Mint(IW *iw, poly_ringct20 *ck, poly_ringct20 *a, poly_ringct20 * } void MIMO_LRCT_Hash(int *pTable, poly_ringct20 *cn, poly_ringct20 *a, poly_ringct20 *ia, int beta) { - SHA256_CTX ctx; + //SHA256_CTX ctx; + Keccak_HashInstance ctx; + unsigned char bHash[32] = { 0 }; unsigned char bpoly[NEWHOPE_POLYBYTES] = { 0 }; unsigned char bt[576] = { 0 }; @@ -326,19 +363,19 @@ void MIMO_LRCT_Hash(int *pTable, poly_ringct20 *cn, poly_ringct20 *a, poly_ringc { tmpTable[i] = i; } - SHA256_Init(&ctx); + Keccak_HashInitialize_SHA3_256(&ctx);//SHA256_Init(&ctx); ////H(L) for (i = 0; i < beta; i++) { poly_tobytes(bpoly, cn + i); - SHA256_Update(&ctx, bpoly, NEWHOPE_POLYBYTES); + Keccak_HashUpdate(&ctx, bpoly, NEWHOPE_POLYBYTES*8);//SHA256_Update(&ctx, bpoly, NEWHOPE_POLYBYTES); poly_tobytes(bpoly, a + i); - SHA256_Update(&ctx, bpoly, NEWHOPE_POLYBYTES); + Keccak_HashUpdate(&ctx, bpoly, NEWHOPE_POLYBYTES*8);//SHA256_Update(&ctx, bpoly, NEWHOPE_POLYBYTES); poly_tobytes(bpoly, ia + i); - SHA256_Update(&ctx, bpoly, NEWHOPE_POLYBYTES); + Keccak_HashUpdate(&ctx, bpoly, NEWHOPE_POLYBYTES*8);//SHA256_Update(&ctx, bpoly, NEWHOPE_POLYBYTES); }///H_1(L||) - SHA256_Final(bHash, &ctx);//C_(pai) - SHA256_KDF(bHash, 32, 576, bt); + Keccak_HashFinal(&ctx, bHash);//SHA256_Final(bHash, &ctx);//C_(pai) + Keccak_256KDF(bHash, 32, bt, 576);//CHECKIT//SHA256_KDF(bHash, 32, 576, bt); } @@ -356,7 +393,9 @@ void MIMO_LRCT_SigGen(poly_ringct20 *c1, poly_ringct20 *tList, poly_ringct20 *hL poly_ringct20 *u = (poly_ringct20 *)malloc(NLen*(mLen + 1) * sizeof(poly_ringct20)); poly_ringct20 *S2q = (poly_ringct20 *)malloc((mLen + 1) * sizeof(poly_ringct20)); ///// - SHA256_CTX ctx; + //SHA256_CTX ctx; + Keccak_HashInstance ctx; + poly_ringct20 tmp, tmp1, ctmp; poly_ringct20 c, cpai; unsigned char bHash[32] = { 0 }; @@ -380,12 +419,12 @@ void MIMO_LRCT_SigGen(poly_ringct20 *c1, poly_ringct20 *tList, poly_ringct20 *hL poly_init(u+i); } ///// - SHA256_Init(&ctx); + Keccak_HashInitialize_SHA3_256(&ctx);//SHA256_Init(&ctx); ////H(L) for ( i = 0; i < wLen*NLen; i++) { poly_tobytes(bpoly, LList + i); - SHA256_Update(&ctx, bpoly, NEWHOPE_POLYBYTES); + Keccak_HashUpdate(&ctx, bpoly, NEWHOPE_POLYBYTES*8);//SHA256_Update(&ctx, bpoly, NEWHOPE_POLYBYTES); }///H_1(L||) ///H(L||H2q..) for (i = 0; i < NLen; i++) @@ -395,11 +434,11 @@ void MIMO_LRCT_SigGen(poly_ringct20 *c1, poly_ringct20 *tList, poly_ringct20 *hL for (k = 0; k < mLen + 1; k++) { poly_tobytes(bpoly, H2q + i * (mLen + 1) + k); - SHA256_Update(&ctx, bpoly, NEWHOPE_POLYBYTES); + Keccak_HashUpdate(&ctx, bpoly, NEWHOPE_POLYBYTES*8);//SHA256_Update(&ctx, bpoly, NEWHOPE_POLYBYTES); } } ////H(L||...||mu) - SHA256_Update(&ctx, msg, msgLen); + Keccak_HashUpdate(&ctx, msg, msgLen*8);//SHA256_Update(&ctx, msg, msgLen); /////u for ( i = 0; i < NLen; i++) { @@ -418,12 +457,12 @@ void MIMO_LRCT_SigGen(poly_ringct20 *c1, poly_ringct20 *tList, poly_ringct20 *hL LRCT_MatrixMulPoly(&tmp1, H2q + i * (mLen + 1), u+ i * (mLen + 1), mLen + 1); poly_tobytes(bpoly, &tmp); - SHA256_Update(&ctx, bpoly, NEWHOPE_POLYBYTES); + Keccak_HashUpdate(&ctx, bpoly, NEWHOPE_POLYBYTES*8);//SHA256_Update(&ctx, bpoly, NEWHOPE_POLYBYTES); poly_tobytes(bpoly, &tmp1); - SHA256_Update(&ctx, bpoly, NEWHOPE_POLYBYTES); + Keccak_HashUpdate(&ctx, bpoly, NEWHOPE_POLYBYTES*8);//SHA256_Update(&ctx, bpoly, NEWHOPE_POLYBYTES); } - SHA256_Final(bHash, &ctx);//C_(pai) - SHA256_KDF(bHash, 32, NEWHOPE_POLYBYTES, bt); + Keccak_HashFinal(&ctx, bHash);//Keccak_HashFinal(&ctx, bHash);//SHA256_Final(bHash, &ctx);//C_(pai) + Keccak_256KDF(bHash, 32, bt, NEWHOPE_POLYBYTES);//SHA256_KDF(bHash, 32, NEWHOPE_POLYBYTES, bt); poly_frombytes(&c, bt); poly_serial(&c); ////////////////////// @@ -436,22 +475,22 @@ void MIMO_LRCT_SigGen(poly_ringct20 *c1, poly_ringct20 *tList, poly_ringct20 *hL poly_cofcopy(c1, &ctmp); } - SHA256_Init(&ctx); + Keccak_HashInitialize_SHA3_256(&ctx);//SHA256_Init(&ctx); ////H_1(L||) for (j = 0; j < wLen*NLen; j++) { poly_tobytes(bpoly, LList + j); - SHA256_Update(&ctx, bpoly, NEWHOPE_POLYBYTES); + Keccak_HashUpdate(&ctx, bpoly, NEWHOPE_POLYBYTES*8);//SHA256_Update(&ctx, bpoly, NEWHOPE_POLYBYTES); } for (j = 0; j < NLen; j++) { for (k = 0; k < mLen + 1; k++) { poly_tobytes(bpoly, H2q + j * (mLen + 1) + k); - SHA256_Update(&ctx, bpoly, NEWHOPE_POLYBYTES); + Keccak_HashUpdate(&ctx, bpoly, NEWHOPE_POLYBYTES*8);//SHA256_Update(&ctx, bpoly, NEWHOPE_POLYBYTES); } }//H_1(L||H2q) - SHA256_Update(&ctx, msg, msgLen);//H(L||...||mu) + Keccak_HashUpdate(&ctx, msg, msgLen*8);//SHA256_Update(&ctx, msg, msgLen);//H(L||...||mu) poly_constmul(&tmp1, &ctmp, NEWHOPE_Q);//qC_i for (j = 0; j < NLen; j++) @@ -467,15 +506,15 @@ void MIMO_LRCT_SigGen(poly_ringct20 *c1, poly_ringct20 *tList, poly_ringct20 *hL poly_add_ringct20(&tmp, &tmp, &tmp1);//(+ qC_i)% Q poly_tobytes(bpoly, &tmp); - SHA256_Update(&ctx, bpoly, NEWHOPE_POLYBYTES);// + Keccak_HashUpdate(&ctx, bpoly, NEWHOPE_POLYBYTES*8);//SHA256_Update(&ctx, bpoly, NEWHOPE_POLYBYTES);// //////// LRCT_MatrixMulPoly(&tmp, H2q + j * (mLen + 1), tList + j * wLen*(mLen + 1) + index * (mLen + 1), mLen + 1); poly_add_ringct20(&tmp, &tmp, &tmp1);//(+ qC_i)% Q poly_tobytes(bpoly, &tmp); - SHA256_Update(&ctx, bpoly, NEWHOPE_POLYBYTES);//H2q*U + Keccak_HashUpdate(&ctx, bpoly, NEWHOPE_POLYBYTES*8);//SHA256_Update(&ctx, bpoly, NEWHOPE_POLYBYTES);//H2q*U } - SHA256_Final(bHash, &ctx);// - SHA256_KDF(bHash, 32, NEWHOPE_POLYBYTES, bt); + Keccak_HashFinal(&ctx, bHash);//SHA256_Final(bHash, &ctx);// + Keccak_256KDF(bHash, 32, bt, NEWHOPE_POLYBYTES);//SHA256_KDF(bHash, 32, NEWHOPE_POLYBYTES, bt); poly_frombytes(&ctmp, bt); poly_serial(&ctmp);//C_{index+1} if (index == (pai - 2)) @@ -516,7 +555,9 @@ int MIMO_LRCT_SigVer(poly_ringct20 *c1, poly_ringct20 *tList, poly_ringct20 *hLi poly_ringct20 *H2q = (poly_ringct20 *)malloc(NLen*(mLen + 1) * sizeof(poly_ringct20)); poly_ringct20 *A2qp = (poly_ringct20 *)malloc((mLen + 1) * sizeof(poly_ringct20)); poly_ringct20 ctmp,tmp, tmp1; - SHA256_CTX ctx; + //SHA256_CTX ctx; + Keccak_HashInstance ctx; + unsigned char bHash[32] = { 0 }; unsigned char bpoly[NEWHOPE_POLYBYTES] = { 0 }; ///////// @@ -528,21 +569,21 @@ int MIMO_LRCT_SigVer(poly_ringct20 *c1, poly_ringct20 *tList, poly_ringct20 *hLi ////// for (i = 0; i < wLen; i++) { - SHA256_Init(&ctx); + Keccak_HashInitialize_SHA3_256(&ctx);//SHA256_Init(&ctx); for (k = 0; k < wLen*NLen; k++) { poly_tobytes(bpoly, LList + k); - SHA256_Update(&ctx, bpoly, NEWHOPE_POLYBYTES); + Keccak_HashUpdate(&ctx, bpoly, NEWHOPE_POLYBYTES*8);//SHA256_Update(&ctx, bpoly, NEWHOPE_POLYBYTES); }///H_1(L||) for (j = 0; j< NLen; j++) { for (k = 0; k < (mLen + 1); k++) { poly_tobytes(bpoly, H2q + j * (mLen + 1) + k); - SHA256_Update(&ctx, bpoly, NEWHOPE_POLYBYTES); + Keccak_HashUpdate(&ctx, bpoly, NEWHOPE_POLYBYTES*8);//SHA256_Update(&ctx, bpoly, NEWHOPE_POLYBYTES); } } - SHA256_Update(&ctx, msg, msgLen);//H(L||...||mu) + Keccak_HashUpdate(&ctx, msg, msgLen*8);//Keccak_HashUpdate(&ctx, msg, msgLen*8);//SHA256_Update(&ctx, msg, msgLen);//H(L||...||mu) poly_constmul(&tmp1, &ctmp, NEWHOPE_Q);//qC_i for ( j = 0; j < NLen; j++) @@ -551,15 +592,15 @@ int MIMO_LRCT_SigVer(poly_ringct20 *c1, poly_ringct20 *tList, poly_ringct20 *hLi LRCT_MatrixMulPoly(&tmp, A2qp, tList + j * wLen*(mLen + 1) + i * (mLen + 1), mLen + 1); poly_add_ringct20(&tmp, &tmp, &tmp1);//(+ qC_i)% Q poly_tobytes(bpoly, &tmp); - SHA256_Update(&ctx, bpoly, NEWHOPE_POLYBYTES); + Keccak_HashUpdate(&ctx, bpoly, NEWHOPE_POLYBYTES*8);//SHA256_Update(&ctx, bpoly, NEWHOPE_POLYBYTES); LRCT_MatrixMulPoly(&tmp, H2q + j * (mLen + 1), tList + j * wLen*(mLen + 1) + i* (mLen + 1), mLen + 1); poly_add_ringct20(&tmp, &tmp, &tmp1);//(+ qC_i)% Q poly_tobytes(bpoly, &tmp); - SHA256_Update(&ctx, bpoly, NEWHOPE_POLYBYTES);//H2q*U + Keccak_HashUpdate(&ctx, bpoly, NEWHOPE_POLYBYTES*8);//SHA256_Update(&ctx, bpoly, NEWHOPE_POLYBYTES);//H2q*U } - SHA256_Final(bHash, &ctx);// - SHA256_KDF(bHash, 32, NEWHOPE_POLYBYTES, bpoly); + Keccak_HashFinal(&ctx, bHash);//SHA256_Final(bHash, &ctx);// + Keccak_256KDF(bHash, 32, bpoly, NEWHOPE_POLYBYTES);//SHA256_KDF(bHash, 32, NEWHOPE_POLYBYTES, bpoly); poly_frombytes(&ctmp, bpoly); poly_serial(&ctmp);// } diff --git a/src/ringct20/ringct20_params.c b/src/ringct20/ringct20_params.c new file mode 100644 index 0000000000000000000000000000000000000000..36cc47dc154f83ccb6ae86c24aacdc40e32e13b4 --- /dev/null +++ b/src/ringct20/ringct20_params.c @@ -0,0 +1,77 @@ + +#include "ringct20_params.h" + +#if (NEWHOPE_N == 512) +uint8_t A_bpoly[10][NEWHOPE_POLYBYTES] = { +{0x32, 0xca, 0xd3, 0x14, 0x15, 0x0d, 0x4d, 0xc3, 0x81, 0x6f, 0x3b, 0xef, 0xc8, 0x3c, 0xc7, 0xe7, 0x8f, 0x77, 0xf8, 0xde, 0x5d, 0xb0, 0xdc, 0xb5, 0x62, 0x90, 0x26, 0x12, 0xce, 0x0d, 0xdd, 0x05, 0xe5, 0xd1, 0xb5, 0xb9, 0xec, 0x60, 0x29, 0x85, 0x54, 0x81, 0xe8, 0x5c, 0x26, 0x18, 0x1c, 0x4d, 0x79, 0xa1, 0x2e, 0x4a, 0x6b, 0xba, 0x3c, 0x1b, 0xb6, 0x5f, 0x4a, 0xc3, 0xd1, 0xc6, 0x67, 0xf2, 0x98, 0x23, 0xe4, 0x30, 0x26, 0x11, 0xbd, 0xc7, 0xe3, 0x44, 0x26, 0x92, 0x7b, 0xed, 0x9f, 0xda, 0x17, 0xc3, 0x42, 0x1d, 0xb1, 0xcd, 0xa1, 0xcb, 0x03, 0xfc, 0x76, 0xe8, 0x83, 0x66, 0xb4, 0x4b, 0xee, 0x0f, 0x1f, 0x4a, 0x7b, 0x70, 0xc7, 0x48, 0x37, 0x40, 0x96, 0xb1, 0x65, 0xed, 0xca, 0x10, 0x63, 0x0f, 0xf6, 0x5a, 0x55, 0x1d, 0xaf, 0x75, 0xcd, 0xf0, 0x75, 0x73, 0x9a, 0x9a, 0xa7, 0x45, 0x6f, 0xd5, 0xb0, 0x74, 0xa6, 0xe6, 0xc0, 0x88, 0xe0, 0x79, 0x70, 0x97, 0x18, 0xa2, 0x1f, 0x16, 0x1c, 0x94, 0x42, 0xe0, 0x21, 0xab, 0xaa, 0x27, 0x0c, 0x7c, 0x28, 0x1f, 0xe6, 0x2a, 0xfe, 0x58, 0x25, 0xbc, 0xd1, 0xa4, 0x0a, 0xae, 0x44, 0x15, 0x69, 0xc1, 0x98, 0x72, 0xe7, 0xb4, 0xbb, 0x61, 0x6c, 0x06, 0xc6, 0x6c, 0xf8, 0x44, 0x30, 0xee, 0x09, 0xc4, 0x17, 0xf2, 0x65, 0xba, 0x07, 0xe8, 0x12, 0x5d, 0xa6, 0x66, 0x97, 0x65, 0x50, 0xa9, 0x89, 0xf1, 0x4c, 0x39, 0x22, 0x5b, 0xa6, 0xf8, 0xf5, 0x4c, 0x98, 0xc5, 0x61, 0xc2, 0xea, 0x5a, 0x4d, 0x78, 0xaa, 0xa0, 0x11, 0x8f, 0xc1, 0x15, 0xc6, 0xde, 0xdb, 0x40, 0xd6, 0xca, 0x55, 0x50, 0x01, 0xb9, 0x02, 0xfe, 0xd8, 0x85, 0x73, 0x67, 0x90, 0x51, 0xa0, 0x3e, 0x10, 0x1d, 0xa5, 0xa5, 0xb7, 0x3b, 0x20, 0x92, 0xf5, 0xcb, 0xe4, 0xaa, 0x01, 0xd0, 0x42, 0xd0, 0x54, 0x2c, 0xe0, 0x2d, 0x28, 0x82, 0x80, 0x80, 0x4b, 0x76, 0x4c, 0xc9, 0x6f, 0xb7, 0x9d, 0xd9, 0x50, 0x6e, 0x2c, 0x86, 0xb3, 0x1a, 0xa4, 0xc2, 0x20, 0x98, 0x25, 0x0e, 0x43, 0x5a, 0x67, 0x94, 0xe9, 0x11, 0x10, 0x61, 0x21, 0x42, 0x48, 0x74, 0x28, 0x1b, 0x40, 0x72, 0xa7, 0x1c, 0x79, 0x07, 0xa0, 0xce, 0x9d, 0x32, 0xeb, 0x30, 0x64, 0x06, 0x5b, 0x83, 0x4a, 0x83, 0x45, 0x19, 0x33, 0x08, 0x7b, 0x39, 0x2a, 0xf4, 0x98, 0x43, 0x4e, 0xfa, 0xa7, 0x69, 0x30, 0x66, 0xc2, 0xd0, 0xd0, 0x1b, 0x70, 0x19, 0x10, 0xf4, 0x9f, 0x6c, 0x08, 0x8b, 0x18, 0x4c, 0x73, 0x2e, 0x96, 0x1a, 0xe4, 0x34, 0x1a, 0x97, 0xa5, 0x30, 0x32, 0xe1, 0xee, 0x2a, 0x56, 0x67, 0x18, 0xcb, 0x49, 0xb1, 0x36, 0x26, 0xa6, 0x67, 0x18, 0x8c, 0x19, 0x87, 0xc4, 0x83, 0xf5, 0x60, 0x45, 0x31, 0x34, 0x98, 0x95, 0x23, 0xb0, 0xa6, 0xc5, 0x63, 0x81, 0x69, 0x67, 0xc0, 0xa0, 0x45, 0x9c, 0xda, 0xde, 0x8d, 0x85, 0x09, 0x01, 0x30, 0xff, 0x26, 0xd0, 0x6a, 0xf9, 0x9c, 0x7e, 0x50, 0xaf, 0x7d, 0xd7, 0xcf, 0x1e, 0x7e, 0x2c, 0xde, 0x72, 0x79, 0x38, 0x21, 0x21, 0x88, 0x66, 0x9a, 0x47, 0x82, 0x2e, 0x1b, 0x0e, 0xcf, 0xf0, 0xfb, 0x21, 0x12, 0x70, 0xdc, 0xac, 0x16, 0x26, 0x41, 0x6a, 0x7e, 0x60, 0xde, 0x22, 0xca, 0x2b, 0xa4, 0x36, 0x94, 0x1f, 0xfd, 0x95, 0x11, 0xf6, 0xb4, 0xdf, 0x07, 0x57, 0xda, 0x70, 0xf4, 0x5f, 0x57, 0x05, 0x24, 0xa0, 0x9a, 0x25, 0xa1, 0x6f, 0x52, 0x5d, 0x23, 0xe8, 0x5c, 0x2b, 0xca, 0x81, 0xf4, 0xb0, 0x3e, 0xd6, 0x42, 0x3f, 0x4d, 0x77, 0x85, 0x25, 0x58, 0x70, 0x70, 0x66, 0x07, 0x13, 0x56, 0xf8, 0x69, 0xf4, 0x62, 0x68, 0x3a, 0xae, 0x26, 0x38, 0xd5, 0xd4, 0xc2, 0x22, 0x2f, 0x2d, 0x62, 0xb9, 0x57, 0x70, 0x85, 0x9a, 0x06, 0x4b, 0xbe, 0xa4, 0x41, 0xe9, 0x13, 0x2a, 0xa3, 0xb2, 0x54, 0x7c, 0x94, 0x20, 0xe4, 0x38, 0xe1, 0x2e, 0x7c, 0x96, 0x90, 0xc2, 0x12, 0x87, 0x28, 0x14, 0xd8, 0xff, 0x71, 0xa9, 0x37, 0x6f, 0x03, 0x45, 0xf2, 0x58, 0xb4, 0x97, 0x00, 0xb8, 0x5a, 0x40, 0x1d, 0xab, 0x63, 0x82, 0x0e, 0xe6, 0xdb, 0x30, 0x0a, 0xe5, 0x0d, 0x60, 0xf5, 0xdf, 0x8c, 0x61, 0x16, 0x5e, 0x06, 0x47, 0x4e, 0x90, 0x08, 0x34, 0x9d, 0x67, 0x45, 0x0b, 0xd2, 0x0c, 0xca, 0x25, 0xea, 0xe2, 0x56, 0xc6, 0x82, 0x89, 0xe1, 0x07, 0x2b, 0x2c, 0x55, 0xb6, 0x4a, 0x8a, 0x3e, 0x36, 0x7f, 0x22, 0x2b, 0xe9, 0xc9, 0xb1, 0xb4, 0xb7, 0x56, 0x8e, 0xae, 0x56, 0x97, 0x21, 0xc2, 0xa6, 0x8b, 0xf2, 0x61, 0x52, 0x90, 0x8f, 0x34, 0xb7, 0x2a, 0x84, 0x2d, 0xb2, 0x5e, 0xba, 0xb0, 0xf7, 0x14, 0xb5, 0xea, 0xcc, 0x54, 0x3d, 0x55, 0xdc, 0x10, 0x7a, 0x59, 0xd0, 0x36, 0xbe, 0xef, 0x72, 0x08, 0xb0, 0xdc, 0x59, 0x77, 0xa3, 0xd0, 0x49, 0x24, 0x91, 0x4b, 0xff, 0xa0, 0xe3, 0x55, 0x4c, 0x02, 0x19, 0x33, 0x13, 0xcb, 0x42, 0xfd, 0x7d, 0xa1, 0x72, 0x29, 0xdf, 0x38, 0xb6, 0x9c, 0x4a, 0x3b, 0x24, 0xfc, 0x02, 0xec, 0xd5, 0x07, 0x27, 0x0f, 0xf3, 0x9b, 0x7a, 0x42, 0x7e, 0x25, 0x62, 0x2f, 0xaa, 0x32, 0xe9, 0x4c, 0xc2, 0xa6, 0x91, 0xd9, 0xfa, 0x04, 0x13, 0x03, 0xdf, 0xaf, 0x05, 0xa2, 0x46, 0x05, 0xc5, 0x89, 0x34, 0x12, 0x62, 0x88, 0xb2, 0x3b, 0x1d, 0x49, 0x8b, 0x6f, 0xb5, 0x2b, 0x5d, 0x05, 0x93, 0xd1, 0xad, 0x1c, 0x3a, 0xeb, 0xe0, 0x4c, 0x15, 0x34, 0x88, 0xab, 0xdc, 0xeb, 0xab, 0x03, 0xe1, 0xdd, 0x28, 0x93, 0x84, 0x34, 0x42, 0x4c, 0x01, 0x28, 0x44, 0x06, 0x3f, 0x10, 0x8e, 0x44, 0xbc, 0x40, 0xa4, 0x0f, 0x7a, 0xb3, 0x81, 0x88, 0xed, 0xa5, 0x0c, 0x23, 0x8e, 0x42, 0x34, 0x5d, 0x07, 0xac, 0x28, 0xea, 0xe2, 0x46, 0x60, 0xec, 0x2d, 0xbb, 0xff, 0xdd, 0x04, 0xd1, 0x21, 0xa6, 0xc7, 0xc4, 0x7c, 0x2a, 0x3d, 0x6a, 0xcd, 0xba, 0x87, 0x86, 0x66, 0x3e, 0xc6, 0x74, 0x16, 0x9a, 0x70, 0x08, 0x2a, 0xc5, 0xe0, 0x94, 0xec, 0x08, 0x79, 0x81, 0x8e, 0xbc, 0x19, 0x57, 0xe8, 0x2f, 0x2f, 0x80, 0xac, 0x46, 0xe1, 0x58, 0x80, 0x09, 0x61, 0x58, 0xcb, 0x86, 0xa4, 0x2f, 0xb6, 0xae, 0xd0, 0x25, 0x7f, 0x6a, 0x09, 0x13, 0x2f, 0xad, 0xe4, 0x89, 0x01, 0x15, 0x79, 0x57, 0xdf, 0x22, 0x8f, 0xbc, 0x87, 0xd1, 0x60, 0xa2, 0x50, 0x51, 0xc6, 0xa7, 0xa2, 0xe0, 0xfd, 0xb7, 0x06, 0x05, 0x64, 0x38, 0xab, 0x34, 0x26, 0xa8, 0x71, 0x60}, +{0x6b, 0x18, 0x6e, 0x85, 0x40, 0x8a, 0x54, 0xe7, 0x61, 0x90, 0xe8, 0xb6, 0x94, 0x81, 0x35, 0x8e, 0xf7, 0x96, 0x9a, 0x39, 0x34, 0x92, 0x13, 0x93, 0xf8, 0x71, 0x7e, 0x06, 0x6e, 0xd6, 0x51, 0x3b, 0xa1, 0x25, 0x0b, 0x0b, 0x52, 0xd3, 0x52, 0x51, 0xaa, 0x62, 0xb7, 0x6f, 0x17, 0x59, 0x45, 0x16, 0x23, 0xf2, 0x48, 0x68, 0x57, 0x1f, 0x3a, 0x29, 0x9e, 0x43, 0x7a, 0x4b, 0x0a, 0x78, 0x89, 0xb9, 0xac, 0x3c, 0x47, 0x88, 0x54, 0x04, 0xf5, 0x90, 0x32, 0x18, 0x17, 0x1d, 0x92, 0x8d, 0xe8, 0x79, 0xdb, 0xbd, 0xa6, 0x67, 0x7a, 0x47, 0x84, 0x16, 0x68, 0xb1, 0x5c, 0x7e, 0x5a, 0xcb, 0xd0, 0x9d, 0x08, 0x01, 0xe5, 0xc5, 0x54, 0xf0, 0x6f, 0x6e, 0x6c, 0x61, 0x53, 0x1a, 0x26, 0x50, 0x62, 0x88, 0x62, 0x1b, 0xbe, 0xd0, 0x40, 0xec, 0x30, 0x7c, 0x56, 0x62, 0x07, 0x4c, 0x01, 0x7d, 0x7e, 0x88, 0x56, 0x89, 0x13, 0x76, 0x6b, 0x2f, 0x0e, 0x7e, 0xe2, 0x1a, 0x2e, 0x87, 0x8d, 0x46, 0xcf, 0x39, 0x54, 0x3e, 0x25, 0xd7, 0x2d, 0x14, 0x77, 0x59, 0x79, 0x9b, 0x89, 0x65, 0x42, 0x92, 0xe8, 0xcc, 0x05, 0xe7, 0x5a, 0xf4, 0x9b, 0xcc, 0x6c, 0x3c, 0x16, 0x2c, 0xf9, 0xf1, 0x05, 0x1c, 0x6f, 0x58, 0x6e, 0xcd, 0x49, 0x85, 0x0c, 0xa6, 0x3e, 0x4e, 0x11, 0x30, 0xdf, 0xa2, 0xa6, 0x2e, 0x2a, 0x4b, 0x3b, 0x82, 0xce, 0x52, 0xbb, 0xcb, 0x7b, 0xc6, 0xd5, 0x71, 0x4e, 0x37, 0x8f, 0x80, 0xd7, 0x4c, 0x25, 0x77, 0x77, 0x0b, 0xf6, 0x87, 0x02, 0xe8, 0x73, 0xc1, 0x96, 0xa7, 0xf5, 0x0c, 0x65, 0x10, 0x7e, 0xae, 0x5c, 0x29, 0x90, 0x11, 0x14, 0xb4, 0x49, 0x87, 0x82, 0x67, 0xe1, 0x05, 0x19, 0x41, 0xc3, 0x26, 0x5f, 0x45, 0x6f, 0x54, 0xe4, 0xd4, 0xd0, 0xf3, 0x12, 0x01, 0x4f, 0x2b, 0x21, 0x75, 0x0f, 0x91, 0x54, 0x23, 0x4c, 0x6f, 0xd0, 0x96, 0xd2, 0xa2, 0xad, 0x92, 0x12, 0x66, 0xcd, 0x39, 0x25, 0xc3, 0x6b, 0x82, 0xc4, 0xcf, 0x6a, 0xad, 0x0c, 0x22, 0xda, 0x73, 0x08, 0xcc, 0x99, 0xdb, 0x2b, 0x4b, 0x9a, 0x4e, 0xf6, 0x74, 0x5a, 0xc1, 0x8f, 0x78, 0xa4, 0x4c, 0xb7, 0xa1, 0x5a, 0x3a, 0x15, 0x77, 0x01, 0xab, 0xde, 0x51, 0x7c, 0x8a, 0x8b, 0x29, 0x51, 0x24, 0x14, 0xaf, 0xda, 0xe5, 0x2a, 0xb1, 0xa3, 0x4d, 0xfd, 0x41, 0x27, 0x3e, 0x94, 0xdc, 0xd7, 0x88, 0x05, 0x5f, 0x46, 0x5d, 0xe7, 0x29, 0x60, 0x37, 0x88, 0xa2, 0x8f, 0xd1, 0x97, 0xc9, 0x43, 0x90, 0xa6, 0x1a, 0x81, 0x1d, 0x17, 0x39, 0xcf, 0x22, 0xac, 0x80, 0x26, 0x2f, 0xa6, 0x7d, 0xb4, 0x22, 0xef, 0xa8, 0xce, 0x08, 0xe4, 0xb1, 0x80, 0x65, 0x4f, 0xad, 0x60, 0xfd, 0xb1, 0x95, 0x5a, 0x5d, 0x2f, 0x41, 0x4d, 0xbc, 0x7d, 0x94, 0xe0, 0x87, 0xbb, 0x8a, 0xa8, 0xad, 0x3b, 0xe7, 0x32, 0xbb, 0x82, 0x61, 0x35, 0x30, 0xe9, 0x38, 0x72, 0x9b, 0x7e, 0x9b, 0x58, 0x83, 0xe3, 0x07, 0x8c, 0x91, 0x8c, 0x19, 0xda, 0xae, 0x78, 0x7f, 0x6c, 0x21, 0xea, 0x50, 0x9c, 0xfb, 0x40, 0x28, 0x96, 0x8a, 0x13, 0x6e, 0x6b, 0x51, 0x85, 0x67, 0x37, 0x66, 0xc4, 0x55, 0x25, 0x88, 0xb1, 0x28, 0x2e, 0xfc, 0xd8, 0x78, 0xe6, 0x38, 0xb2, 0x89, 0xc3, 0x92, 0xa4, 0x16, 0x77, 0x28, 0x80, 0x4b, 0x17, 0x32, 0xf2, 0xb3, 0xbe, 0x51, 0x7d, 0x34, 0x5f, 0xf0, 0x2d, 0xc7, 0x27, 0x04, 0xdb, 0x8f, 0x26, 0xa4, 0xed, 0xa8, 0xdf, 0xf7, 0xaf, 0xb8, 0x13, 0xfb, 0x60, 0x16, 0x09, 0x7c, 0xa4, 0x01, 0x5a, 0x50, 0x3b, 0xca, 0xe9, 0xd6, 0x66, 0xff, 0xe9, 0x95, 0xa0, 0x75, 0x29, 0x87, 0xc0, 0x43, 0x55, 0xd5, 0x3f, 0x8a, 0x74, 0x08, 0x40, 0x4e, 0x69, 0xd3, 0xe1, 0x73, 0x91, 0x87, 0xf5, 0x33, 0x0e, 0x12, 0x0e, 0x74, 0x43, 0x01, 0x75, 0x21, 0x81, 0x8a, 0x59, 0xd7, 0xe2, 0x50, 0x23, 0x51, 0x1d, 0x58, 0xa2, 0x8c, 0xa3, 0x6a, 0xd2, 0xbd, 0x98, 0xe9, 0x03, 0x13, 0x4d, 0x68, 0xa3, 0xd1, 0x2e, 0x47, 0xe3, 0x75, 0xb4, 0xb4, 0xac, 0x40, 0x1a, 0x87, 0x28, 0xce, 0xa7, 0x67, 0xa3, 0xb4, 0x18, 0x17, 0x45, 0x6b, 0xb9, 0x41, 0x57, 0x20, 0x98, 0xfa, 0x09, 0x2b, 0x44, 0x25, 0xb8, 0x16, 0x4d, 0x7a, 0x16, 0xc6, 0xcf, 0x54, 0xaf, 0x34, 0x12, 0x91, 0x21, 0x6e, 0x45, 0xb8, 0x2d, 0x6f, 0x4b, 0xcb, 0x8a, 0x51, 0x03, 0x86, 0xb5, 0xb8, 0xc9, 0xa1, 0xf8, 0x39, 0x09, 0x61, 0x13, 0x1c, 0x35, 0x80, 0x79, 0x31, 0x26, 0x27, 0x83, 0x4c, 0xa4, 0x25, 0x28, 0x66, 0x3f, 0x6b, 0x35, 0x91, 0xa2, 0x96, 0x99, 0x82, 0x03, 0x5b, 0xb3, 0x3a, 0xfd, 0x8e, 0x8c, 0xae, 0xda, 0xf4, 0x9c, 0x75, 0x81, 0xa8, 0x06, 0xea, 0x8b, 0x11, 0x3d, 0x8d, 0x06, 0x27, 0x5e, 0x94, 0xa7, 0x61, 0x1f, 0x1b, 0x65, 0x68, 0x24, 0xc5, 0xb0, 0x61, 0x45, 0x2e, 0x21, 0x81, 0xfa, 0xbe, 0xb1, 0x64, 0xc3, 0x86, 0x46, 0x6c, 0x74, 0x62, 0x3d, 0x96, 0xe6, 0x61, 0x97, 0x04, 0xbf, 0xef, 0x4f, 0xdc, 0xaa, 0x21, 0x79, 0x8f, 0x13, 0xa5, 0xbc, 0x60, 0xfd, 0x2d, 0x5c, 0x19, 0xd9, 0xa5, 0x3b, 0xed, 0xf0, 0xaa, 0xda, 0x9b, 0x7f, 0x07, 0x13, 0x21, 0xbd, 0xbd, 0x13, 0x68, 0x30, 0x34, 0xcd, 0xbf, 0x42, 0x56, 0xac, 0x6b, 0x3d, 0xae, 0x84, 0x74, 0x8b, 0xef, 0xb6, 0x4d, 0x28, 0x99, 0x0f, 0x1e, 0x35, 0xe9, 0x86, 0xe1, 0x08, 0xbc, 0x07, 0x6e, 0x86, 0x9d, 0x5a, 0x34, 0x0d, 0x2a, 0xe4, 0x32, 0xcb, 0x82, 0x03, 0x69, 0x65, 0xaa, 0x43, 0xfd, 0x00, 0x12, 0x9b, 0x57, 0x80, 0x0b, 0xae, 0x1a, 0x9a, 0xa1, 0xdd, 0x66, 0xda, 0x33, 0x1d, 0x26, 0x51, 0xe9, 0x4e, 0x80, 0xe4, 0x6c, 0xa4, 0x8a, 0x90, 0x61, 0xd1, 0x30, 0x3a, 0x64, 0x1f, 0x6e, 0xb8, 0xe0, 0xa6, 0x78, 0x3b, 0xb0, 0xda, 0x7e, 0x44, 0x33, 0xb9, 0x7c, 0x22, 0x2b, 0x20, 0x20, 0xab, 0xa9, 0x44, 0x3b, 0x1f, 0x5c, 0x8b, 0x2d, 0xbe, 0x3d, 0xfe, 0xd7, 0xa0, 0x1a, 0xec, 0x1c, 0x1f, 0xa8, 0x4c, 0xb7, 0xe5, 0xfc, 0x7c, 0xb6, 0xd6, 0x93, 0x37, 0x06, 0x38, 0x34, 0x6c, 0x95, 0x28, 0xd5, 0xf7, 0xa4, 0xce, 0xb6, 0x3f, 0xeb, 0x13, 0x91, 0x79, 0xb4, 0x99, 0x3c, 0x9c, 0x4b, 0xd0, 0x05, 0xc0, 0x76, 0x42, 0xde, 0x2e, 0x27, 0x9a, 0x7d, 0x5f, 0x58, 0x1b, 0x4d, 0x88, 0xa8, 0x4c, 0x10, 0x47, 0x1f, 0x1f, 0x10, 0xc9, 0x78, 0x27, 0xa9, 0xd0, 0x8b, 0xe4, 0x1a, 0x04, 0x0c}, +{0x57, 0x6a, 0xe3, 0xd2, 0x3b, 0x55, 0x16, 0x40, 0x01, 0x79, 0x7b, 0xf3, 0x2e, 0xb0, 0x74, 0x48, 0xf1, 0xdb, 0xc8, 0xc6, 0x44, 0x0f, 0xe7, 0x73, 0x90, 0x19, 0x58, 0x5a, 0x58, 0x4d, 0xbf, 0x31, 0xd4, 0xa6, 0x80, 0xf1, 0x4b, 0xbc, 0x92, 0x21, 0x64, 0x89, 0x78, 0x4a, 0x38, 0xb5, 0xd2, 0x81, 0x57, 0x55, 0x65, 0x76, 0x12, 0x77, 0x2c, 0x2f, 0xb7, 0xe4, 0xbb, 0x4a, 0x02, 0xb8, 0x0d, 0xb5, 0x6f, 0x98, 0xdb, 0xb0, 0x7e, 0x2b, 0x01, 0x1b, 0xa9, 0xb3, 0x1e, 0x44, 0x7b, 0x40, 0x1b, 0x3f, 0xab, 0x50, 0x22, 0xb9, 0x6d, 0x4e, 0xe6, 0x74, 0xd2, 0xa2, 0x3b, 0x58, 0xd4, 0x5f, 0x54, 0x39, 0x6d, 0xbf, 0x37, 0x68, 0xf9, 0x37, 0x8c, 0x0c, 0x91, 0x4e, 0x8a, 0xb7, 0xe2, 0x8c, 0xa2, 0x0b, 0x72, 0x5a, 0xbd, 0x31, 0x40, 0x3d, 0xb1, 0x3e, 0xc0, 0x4a, 0xd4, 0x7e, 0x5d, 0x35, 0xf3, 0x16, 0x0a, 0x94, 0x63, 0x09, 0xa8, 0x78, 0xdb, 0xe8, 0xcb, 0x63, 0x5c, 0x44, 0x93, 0x84, 0x3d, 0x44, 0xe6, 0x04, 0xa3, 0x1d, 0x17, 0x32, 0x42, 0x89, 0x41, 0x7d, 0x32, 0x26, 0x4d, 0x13, 0x39, 0x6c, 0x8d, 0xf7, 0x62, 0xf2, 0x3b, 0x40, 0xfd, 0x7a, 0x47, 0x25, 0x5c, 0xd0, 0xd2, 0x79, 0xb5, 0x08, 0x51, 0x3b, 0x39, 0x2b, 0xca, 0x0d, 0x29, 0xd6, 0x46, 0xc2, 0x71, 0xfc, 0x3f, 0x18, 0x0f, 0xf9, 0xb8, 0x95, 0xca, 0x37, 0xd5, 0x6e, 0xb7, 0xe9, 0x7c, 0x85, 0xbb, 0x81, 0xdd, 0x72, 0x70, 0x78, 0xe1, 0x5f, 0x82, 0x05, 0xbb, 0x21, 0x11, 0x7c, 0x8b, 0x6f, 0x0e, 0x5d, 0xb5, 0x45, 0x3a, 0x53, 0xfa, 0x5f, 0x1f, 0x65, 0x75, 0x76, 0x68, 0x78, 0xa5, 0x13, 0xe2, 0x21, 0x29, 0x2b, 0x71, 0xdf, 0x24, 0x03, 0x79, 0x7c, 0x91, 0x5a, 0x40, 0x4d, 0xa0, 0x80, 0x08, 0x37, 0x17, 0x66, 0x3f, 0x05, 0x75, 0xf4, 0x91, 0xb6, 0xa5, 0x08, 0x98, 0x13, 0x48, 0x95, 0x93, 0x22, 0x2a, 0x14, 0x2b, 0xbe, 0x60, 0xa0, 0xd7, 0x82, 0xf1, 0xd0, 0x41, 0x2c, 0x3a, 0x4d, 0xbb, 0x7b, 0xb1, 0x11, 0x03, 0xdd, 0x8f, 0x19, 0x18, 0xa8, 0xb1, 0x90, 0x34, 0x9c, 0xc0, 0x49, 0x18, 0xba, 0x45, 0x86, 0x2a, 0x9a, 0x6a, 0xd4, 0xea, 0x1a, 0x05, 0x22, 0xe5, 0xc0, 0xf6, 0x14, 0x01, 0x0f, 0xe3, 0xab, 0xfb, 0xd3, 0xfe, 0xad, 0xf4, 0x07, 0xcf, 0x13, 0x90, 0x62, 0xbe, 0xc2, 0xcd, 0x0b, 0x82, 0xe7, 0x21, 0x12, 0x81, 0x64, 0x9c, 0x04, 0x58, 0x48, 0x83, 0x35, 0xa6, 0x39, 0x4b, 0x84, 0xf8, 0x8b, 0xb9, 0xa4, 0x50, 0xb3, 0x2c, 0x41, 0x62, 0xb2, 0x8b, 0xc5, 0x68, 0xf1, 0xf1, 0x48, 0xaf, 0x0b, 0x40, 0xc5, 0xcb, 0x5c, 0x7e, 0x39, 0xe5, 0xfb, 0x90, 0xde, 0xc8, 0x7a, 0xb9, 0x05, 0x8b, 0xa7, 0xa9, 0xd5, 0x56, 0x72, 0x57, 0xf9, 0x13, 0x7a, 0xf0, 0x7a, 0xff, 0x56, 0xcc, 0xa7, 0x71, 0x7a, 0x13, 0xf6, 0x01, 0xa0, 0xa5, 0xdd, 0x32, 0x83, 0x73, 0x56, 0xbb, 0xa5, 0xec, 0xf2, 0x85, 0xa2, 0x2d, 0x91, 0xb5, 0xe3, 0xb8, 0x62, 0xa8, 0xa9, 0x65, 0x83, 0x73, 0x0d, 0x94, 0x54, 0x9e, 0x36, 0xe1, 0x8e, 0x68, 0xa6, 0xc8, 0x52, 0x57, 0x33, 0x30, 0x22, 0x6e, 0x3c, 0x80, 0xf6, 0x00, 0x4c, 0xc1, 0x31, 0xb2, 0xae, 0x97, 0xca, 0x62, 0x84, 0x1f, 0xc2, 0x4f, 0xd2, 0xa1, 0x4e, 0xa0, 0x8e, 0xaa, 0xc5, 0x52, 0xcb, 0x7e, 0x78, 0x0e, 0x4b, 0x6b, 0xf3, 0xe3, 0x35, 0x91, 0x24, 0x01, 0x25, 0xd8, 0x70, 0x59, 0x11, 0x57, 0x4d, 0x1c, 0x94, 0xd5, 0xe2, 0xa2, 0x38, 0xfd, 0xaf, 0xe8, 0x73, 0x06, 0x40, 0x5b, 0xa4, 0xa6, 0x85, 0xf1, 0x25, 0xf8, 0xb1, 0x99, 0xe5, 0x26, 0x58, 0x04, 0x54, 0x36, 0x53, 0x85, 0xd6, 0x12, 0x0d, 0xb5, 0x33, 0x4c, 0x8a, 0x37, 0x34, 0x35, 0x4e, 0x48, 0xaf, 0x9f, 0x9c, 0x0a, 0xd9, 0x49, 0x82, 0x8c, 0x54, 0x87, 0x1a, 0xb6, 0xf2, 0x63, 0x6f, 0xdc, 0xbf, 0xab, 0xbc, 0x1a, 0x02, 0x56, 0xac, 0xec, 0xe5, 0x53, 0xda, 0x15, 0xa0, 0xa7, 0x94, 0xd1, 0x5c, 0x50, 0xb5, 0x94, 0x53, 0x85, 0x36, 0x46, 0x18, 0x44, 0x74, 0xec, 0x04, 0x07, 0x7a, 0xba, 0x86, 0x8f, 0x64, 0xa8, 0xc1, 0xa5, 0x39, 0x2e, 0x47, 0xcd, 0x4c, 0x17, 0xf8, 0xa1, 0x22, 0x70, 0x0b, 0x18, 0x29, 0x68, 0xb0, 0x15, 0x1c, 0x9c, 0xb4, 0x08, 0xdf, 0xad, 0x63, 0xf3, 0x5d, 0xea, 0x33, 0xeb, 0x71, 0x7a, 0x85, 0x43, 0xf3, 0x48, 0x4a, 0xf9, 0x16, 0x4f, 0x4d, 0xa3, 0xcb, 0xf5, 0x5e, 0xaf, 0xe6, 0x9e, 0x93, 0xf8, 0xca, 0xb6, 0x44, 0x29, 0x2a, 0x5c, 0x40, 0x7c, 0xb2, 0x2d, 0xb0, 0xea, 0xc4, 0x71, 0xb0, 0xc6, 0x1c, 0xc3, 0xe7, 0x38, 0xe0, 0xfc, 0x0a, 0x87, 0x9f, 0x41, 0x05, 0x09, 0x13, 0xc0, 0x85, 0xae, 0x18, 0x61, 0x5a, 0xe9, 0x85, 0x5c, 0x51, 0x63, 0x5d, 0x14, 0xc0, 0x5e, 0x51, 0x16, 0x4e, 0x34, 0x59, 0xcc, 0x82, 0x4e, 0x16, 0x91, 0x8a, 0x06, 0x89, 0xac, 0x49, 0xd9, 0xce, 0x11, 0x85, 0x83, 0x7c, 0x02, 0x99, 0xea, 0x53, 0xf5, 0xfc, 0x55, 0x10, 0x72, 0xe1, 0xc1, 0xd7, 0xd2, 0x16, 0x68, 0x5b, 0xea, 0x24, 0xeb, 0xbf, 0x01, 0x35, 0x55, 0x94, 0xe1, 0xa7, 0x28, 0x4d, 0xb5, 0xb3, 0x10, 0x15, 0x72, 0x1a, 0xae, 0x77, 0x69, 0x22, 0x2a, 0x9a, 0x10, 0x56, 0x47, 0x9c, 0xc4, 0x30, 0xd4, 0x2c, 0x79, 0x22, 0xb5, 0xd2, 0xb9, 0x71, 0x5e, 0x72, 0x96, 0xc6, 0xa7, 0xf0, 0xd7, 0xbe, 0x82, 0x1d, 0xcd, 0x21, 0x4b, 0x22, 0x64, 0x1a, 0x18, 0xf7, 0x10, 0x26, 0x19, 0xcf, 0xde, 0x6f, 0x84, 0x4a, 0xee, 0xc5, 0x37, 0x78, 0x95, 0xa0, 0xc4, 0x41, 0xb2, 0xf2, 0x58, 0x7c, 0x0a, 0x5e, 0xd8, 0x20, 0xa4, 0x5d, 0x94, 0x88, 0xcd, 0xf9, 0x99, 0x81, 0xd9, 0x4e, 0xce, 0x04, 0xad, 0xc8, 0x16, 0xd2, 0x48, 0x26, 0x29, 0x0d, 0x6a, 0xf8, 0x8e, 0x5f, 0x02, 0xac, 0xd9, 0xf5, 0x9e, 0x40, 0x4d, 0x15, 0xe7, 0x9a, 0xc6, 0x4b, 0x80, 0xad, 0x5c, 0x23, 0xfe, 0x07, 0x71, 0xaa, 0x50, 0x05, 0xae, 0xc1, 0xaa, 0xc2, 0x8e, 0x1a, 0x00, 0x2d, 0xaa, 0x29, 0x44, 0xbe, 0x2f, 0x00, 0xa7, 0x3e, 0x2a, 0xc8, 0xf2, 0x46, 0xb0, 0x2b, 0x4d, 0xa2, 0x4d, 0x98, 0x74, 0xe6, 0x0f, 0xea, 0x67, 0x2a, 0x45, 0x19, 0xec, 0x52, 0xc7, 0x49, 0x73, 0xf2, 0x0e, 0x0e, 0x84, 0x5c, 0x15, 0x82, 0x56, 0x98, 0x20, 0x1b, 0xa9, 0x90, 0xa2, 0x6a, 0x0e, 0xa6, 0x93, 0x80, 0x05, 0x32, 0xed, 0x6f}, +{0x87, 0x91, 0x54, 0xf5, 0xf6, 0x88, 0x39, 0x68, 0x8b, 0xe3, 0x91, 0xaa, 0xe0, 0x90, 0x46, 0x06, 0xf3, 0x44, 0x96, 0xcd, 0x94, 0xa0, 0x90, 0xa8, 0xeb, 0x0b, 0xd5, 0x25, 0xf5, 0x14, 0x54, 0x0b, 0xcc, 0x2c, 0x07, 0xf6, 0xaa, 0xc8, 0xe5, 0x41, 0xdc, 0x6a, 0xde, 0x4b, 0x9e, 0xcb, 0xe9, 0xde, 0x23, 0x34, 0x54, 0x76, 0xe6, 0x5f, 0x21, 0x19, 0x33, 0xc0, 0x8d, 0xc6, 0x61, 0xd2, 0x6f, 0xcf, 0x4c, 0x4f, 0xf2, 0xf9, 0x09, 0x9b, 0x28, 0x2c, 0xf1, 0x92, 0x32, 0xed, 0x19, 0x8e, 0x8b, 0x97, 0x7a, 0xcf, 0x80, 0x9d, 0x56, 0x28, 0x15, 0xf4, 0x7a, 0xdd, 0x35, 0x97, 0x8f, 0x1f, 0x2a, 0x9d, 0x5d, 0x22, 0x2e, 0xcc, 0x04, 0x85, 0xca, 0x3a, 0x45, 0x1c, 0x06, 0x04, 0x86, 0x05, 0x48, 0x83, 0xdc, 0x9e, 0xea, 0xe3, 0xf0, 0x92, 0x98, 0x77, 0x55, 0x5d, 0x3a, 0x7f, 0x16, 0xb0, 0x5b, 0x4f, 0xb3, 0x59, 0x14, 0xb0, 0x66, 0xda, 0x1f, 0xbb, 0x67, 0xfe, 0x34, 0x88, 0xff, 0x23, 0xed, 0x63, 0x88, 0xd9, 0x7e, 0x5f, 0xee, 0x23, 0x82, 0x06, 0xfc, 0x1e, 0xd0, 0xd3, 0xbd, 0x32, 0xc4, 0xfd, 0x02, 0xf2, 0x51, 0x72, 0x04, 0x77, 0x05, 0x40, 0xb1, 0x04, 0x3b, 0x7b, 0x0d, 0x4c, 0x7a, 0xb3, 0xac, 0x87, 0xe6, 0xb7, 0x2d, 0xb5, 0xba, 0x99, 0x7b, 0x47, 0x38, 0x72, 0xb8, 0x19, 0x0c, 0xce, 0x19, 0x23, 0xf6, 0xa9, 0x47, 0xaf, 0x1f, 0x64, 0xc1, 0xec, 0x3a, 0xcb, 0xa1, 0xa5, 0x73, 0xc8, 0x51, 0x9c, 0xe1, 0x00, 0xbc, 0xc6, 0xa5, 0x01, 0x19, 0x03, 0xe7, 0xcc, 0x77, 0x69, 0xb6, 0x35, 0x9c, 0xd1, 0x7a, 0x57, 0xf0, 0x89, 0x07, 0xe3, 0x49, 0x7f, 0x08, 0xbd, 0x09, 0xa7, 0x25, 0x2e, 0x7b, 0x37, 0x76, 0xf0, 0x5a, 0xdd, 0x2e, 0xb5, 0x5b, 0x8d, 0xee, 0x4d, 0x71, 0x29, 0x70, 0x58, 0x10, 0x2a, 0x8f, 0xe5, 0x0b, 0x52, 0x72, 0x48, 0xa1, 0x45, 0xb4, 0xa9, 0xad, 0x18, 0xd4, 0x5e, 0x6f, 0x2b, 0x98, 0x51, 0x21, 0xad, 0x45, 0x6c, 0xc8, 0x62, 0x76, 0x86, 0x16, 0x9d, 0x5e, 0x3c, 0xc7, 0x71, 0x90, 0xfb, 0xde, 0x65, 0x09, 0x88, 0x5a, 0xa8, 0x0a, 0x1a, 0xb7, 0x9a, 0xe7, 0x3c, 0xd9, 0x82, 0x79, 0x80, 0x01, 0x4d, 0xa4, 0x80, 0x4b, 0xb5, 0x52, 0x12, 0xe7, 0x0f, 0xa7, 0xb5, 0x2c, 0x2e, 0x6d, 0x96, 0x14, 0x91, 0xbe, 0xf0, 0x92, 0x16, 0x16, 0x94, 0x60, 0xb5, 0xd4, 0x78, 0xce, 0x5d, 0x91, 0x80, 0x96, 0x89, 0x95, 0x2e, 0x05, 0x1a, 0x45, 0x58, 0xaa, 0x41, 0x12, 0x44, 0xc0, 0x06, 0xf2, 0x01, 0x75, 0x3c, 0x92, 0xdb, 0x94, 0x5d, 0x59, 0x4c, 0xc6, 0xed, 0xfd, 0x7a, 0x30, 0xa5, 0xa9, 0x4e, 0x6a, 0xcb, 0xf5, 0x11, 0xd6, 0x0e, 0xec, 0x81, 0x76, 0xa3, 0x76, 0xf1, 0x8a, 0x67, 0xce, 0xbf, 0x32, 0xd4, 0x8d, 0x5d, 0x41, 0x8f, 0xe2, 0xfa, 0xca, 0x32, 0x8a, 0xd2, 0xce, 0x85, 0x15, 0xe0, 0x6a, 0x5e, 0x68, 0x0d, 0x57, 0xe4, 0x46, 0xd1, 0x73, 0xb8, 0xde, 0xf9, 0x23, 0xff, 0x6a, 0x3a, 0x15, 0x19, 0x0e, 0xa1, 0x10, 0xb1, 0x89, 0x99, 0xd0, 0xc3, 0x58, 0xde, 0xe9, 0x65, 0x98, 0x00, 0x6d, 0xc1, 0x87, 0x98, 0x4d, 0xc7, 0x50, 0x80, 0xf4, 0x6d, 0x12, 0x7d, 0x11, 0xd0, 0x8d, 0xc6, 0xa9, 0xa1, 0x3a, 0x4b, 0x80, 0xf8, 0x3b, 0x4f, 0x8c, 0x63, 0x1e, 0xd7, 0x2d, 0x86, 0x72, 0xf0, 0x15, 0x4b, 0x4d, 0xc5, 0x41, 0x48, 0xf9, 0x25, 0x14, 0x41, 0xef, 0x29, 0x42, 0x08, 0xb5, 0x10, 0xaa, 0x85, 0x11, 0x24, 0xd0, 0x7d, 0x80, 0x42, 0xd9, 0x41, 0x9c, 0x6d, 0xa9, 0x52, 0x90, 0x14, 0x99, 0xae, 0x6d, 0x72, 0x3f, 0x84, 0x10, 0x17, 0xbd, 0x35, 0x3a, 0x2b, 0x22, 0x29, 0x75, 0xfc, 0x94, 0x79, 0x91, 0xce, 0x55, 0xb8, 0x6b, 0xbe, 0x21, 0x07, 0xc2, 0x00, 0x22, 0x1c, 0x02, 0x88, 0x3c, 0x15, 0x64, 0x97, 0x7c, 0xaa, 0x38, 0x97, 0xa2, 0x1d, 0xa9, 0x85, 0x1d, 0xaa, 0xb3, 0x03, 0x6b, 0xd0, 0xea, 0x29, 0x72, 0x1e, 0x96, 0x53, 0x2a, 0xc8, 0xb9, 0x40, 0xd9, 0xdf, 0x26, 0x51, 0x67, 0x2d, 0x18, 0x6a, 0x67, 0x8a, 0x01, 0x29, 0xd1, 0xa2, 0xfe, 0x22, 0xfa, 0x91, 0x76, 0xc5, 0x51, 0xc8, 0xde, 0xab, 0xea, 0xdd, 0x65, 0xa7, 0x63, 0x92, 0x69, 0xa6, 0x16, 0xb5, 0x2c, 0xe4, 0x53, 0xcf, 0x6b, 0xf8, 0xac, 0x3d, 0xc4, 0x67, 0xd7, 0x09, 0x45, 0xc6, 0x78, 0xbf, 0xa0, 0xa3, 0xe1, 0xc2, 0x98, 0xa5, 0x6e, 0x61, 0x70, 0xd6, 0x9b, 0xc9, 0x1f, 0xb2, 0xac, 0x62, 0xc2, 0xaf, 0x3a, 0xa7, 0x51, 0x44, 0x7b, 0xb7, 0xfa, 0x6d, 0x9a, 0xe0, 0x91, 0x80, 0xd4, 0x87, 0x9e, 0x3a, 0xf8, 0xae, 0xfd, 0xd4, 0x73, 0x01, 0x37, 0xcd, 0x2c, 0xa7, 0x19, 0xc7, 0x79, 0x4d, 0xf6, 0x55, 0x12, 0x6a, 0xe2, 0xf4, 0x0a, 0x5d, 0x6d, 0x81, 0xfa, 0xcc, 0xa5, 0xa1, 0xf5, 0x4c, 0x83, 0x33, 0x00, 0x88, 0x8b, 0x5e, 0x27, 0x71, 0x56, 0x61, 0xf8, 0x78, 0x1b, 0xeb, 0x68, 0x92, 0x4c, 0xd2, 0xa9, 0x3d, 0x00, 0xce, 0x17, 0x42, 0x50, 0x4a, 0xf8, 0x21, 0x9b, 0xf5, 0x71, 0x80, 0xbc, 0xe7, 0xa8, 0x05, 0x16, 0x12, 0xe9, 0x51, 0x91, 0x5a, 0xa1, 0x27, 0x2e, 0x7a, 0x1d, 0x11, 0xaa, 0xba, 0xba, 0x6d, 0xc4, 0xa1, 0x46, 0x4d, 0x87, 0x10, 0x0c, 0x02, 0x19, 0xb5, 0x5a, 0x2f, 0x5a, 0xc8, 0x99, 0x9e, 0xd8, 0x25, 0xdf, 0x68, 0x04, 0x06, 0x7d, 0x4c, 0x5e, 0xf7, 0xa1, 0x72, 0x65, 0x47, 0x55, 0xc5, 0x3e, 0x29, 0xd3, 0x89, 0x1b, 0xbc, 0x8f, 0xc1, 0x98, 0x42, 0xf4, 0x8e, 0x61, 0x48, 0xea, 0xc0, 0x4b, 0x46, 0x64, 0x5d, 0x2c, 0x29, 0xb7, 0x51, 0x05, 0x8d, 0x3e, 0x4a, 0xaa, 0xbb, 0x07, 0xb5, 0x60, 0xe8, 0x6c, 0xcb, 0x94, 0x90, 0x9e, 0xaf, 0xee, 0xa0, 0x4c, 0x3a, 0x7f, 0x74, 0x6d, 0x65, 0x05, 0x59, 0xa6, 0xad, 0x5a, 0x92, 0x15, 0xd5, 0x05, 0xc5, 0xf8, 0xe6, 0x8c, 0x04, 0x94, 0xa3, 0x65, 0x11, 0x32, 0x5b, 0xc0, 0x44, 0x2f, 0x65, 0xf0, 0x9c, 0x7b, 0x58, 0x5e, 0x04, 0x99, 0x07, 0x61, 0x89, 0xc9, 0x6e, 0x6e, 0x5a, 0x15, 0x9c, 0x55, 0xdf, 0xc4, 0x85, 0x71, 0xca, 0x79, 0x51, 0x7d, 0x9e, 0x8e, 0x56, 0x42, 0xa1, 0x84, 0xfe, 0x00, 0x6b, 0xd5, 0x70, 0x74, 0xb6, 0xf3, 0x6a, 0xb5, 0x9a, 0x24, 0x24, 0x0f, 0x0c, 0xaa, 0x6f, 0xa1, 0x6a, 0x25, 0x2e, 0x9d, 0x4d, 0x75, 0x76, 0xa7, 0x6a, 0x90, 0xcb, 0x0f, 0xd4, 0x22, 0x1b, 0x21, 0x28}, +{0x70, 0x0b, 0xec, 0x67, 0xc0, 0xa9, 0x3f, 0xe7, 0x1a, 0xb3, 0xf6, 0x1e, 0x3c, 0x95, 0x38, 0x2b, 0xe5, 0xd6, 0x53, 0x20, 0xb2, 0xbd, 0x5c, 0x39, 0x29, 0xf3, 0x78, 0xa4, 0xae, 0x1f, 0xf5, 0x40, 0x3a, 0xda, 0x7e, 0xb4, 0x14, 0x35, 0x70, 0x50, 0x9c, 0x06, 0x21, 0x0f, 0xbe, 0x6a, 0x70, 0xc4, 0x3f, 0x1e, 0x45, 0x65, 0x26, 0x4e, 0x08, 0x8e, 0x45, 0xa1, 0x9e, 0x36, 0x6f, 0xcc, 0x9e, 0x2c, 0xc4, 0x45, 0xc5, 0x11, 0x99, 0x36, 0x3c, 0x26, 0xcc, 0x75, 0x42, 0xe2, 0x87, 0x75, 0x22, 0x01, 0x50, 0xca, 0x9c, 0x34, 0x17, 0xda, 0x4e, 0xa7, 0xfe, 0x3e, 0x1b, 0xa9, 0x18, 0x13, 0x84, 0xc4, 0x94, 0x98, 0xc6, 0x44, 0x76, 0x38, 0x0c, 0xe2, 0xb6, 0x50, 0x2e, 0x22, 0x4b, 0x04, 0xca, 0xaf, 0x72, 0xe8, 0x91, 0xd5, 0x71, 0x36, 0x7e, 0x24, 0x60, 0xa0, 0x34, 0xa5, 0xbc, 0x50, 0x01, 0x0f, 0xdd, 0x3b, 0x81, 0xc6, 0xaa, 0x50, 0x2f, 0x9d, 0x49, 0x34, 0xda, 0x4d, 0x12, 0xa4, 0x00, 0x24, 0xb3, 0x92, 0x83, 0xdf, 0xc9, 0x91, 0xf8, 0x44, 0x25, 0xb7, 0xac, 0xdf, 0xf5, 0x59, 0x2a, 0x82, 0x8a, 0x26, 0xc0, 0xc6, 0xa8, 0x69, 0xc5, 0x17, 0xc7, 0x1d, 0x3a, 0x31, 0x33, 0x64, 0x83, 0x2a, 0xe3, 0x36, 0xe1, 0x72, 0x9e, 0x8a, 0x80, 0x07, 0xb3, 0x74, 0xb5, 0xc9, 0x45, 0xcd, 0xac, 0x4a, 0xc7, 0x29, 0x61, 0x76, 0xb2, 0x6f, 0x78, 0x41, 0x8b, 0xfe, 0xbc, 0x8b, 0xe8, 0x73, 0x9b, 0xbe, 0x24, 0xb5, 0x25, 0xce, 0xfc, 0x27, 0xa2, 0x69, 0x03, 0x66, 0xae, 0x09, 0xfb, 0xf6, 0x04, 0x9c, 0x97, 0x4b, 0xba, 0xe8, 0xbd, 0xfe, 0x10, 0x80, 0xd7, 0x94, 0xc6, 0x6f, 0x5d, 0xba, 0x73, 0x4c, 0xcd, 0x89, 0xa8, 0x80, 0x01, 0xaf, 0x2b, 0xae, 0x88, 0xbe, 0x7c, 0x57, 0xed, 0x29, 0x54, 0xa7, 0xcc, 0x89, 0x83, 0xa5, 0xc1, 0x0e, 0x75, 0x48, 0xe4, 0x34, 0x15, 0x4a, 0x74, 0x1a, 0x61, 0x80, 0x16, 0xc3, 0xe0, 0x48, 0xf0, 0xe8, 0xe1, 0xae, 0x88, 0xa9, 0xe2, 0x2a, 0x15, 0x70, 0x7c, 0x50, 0xd8, 0x8b, 0x8a, 0x76, 0xb9, 0x87, 0x2e, 0x04, 0x5b, 0x37, 0x32, 0x29, 0x63, 0x9c, 0xdc, 0x6f, 0x47, 0x93, 0x29, 0x73, 0x99, 0x86, 0x34, 0xd6, 0x8e, 0x58, 0x7f, 0xdd, 0x4b, 0x7c, 0x84, 0xa5, 0xac, 0x8b, 0x75, 0xc0, 0xb9, 0x80, 0xb2, 0x01, 0x55, 0xbe, 0x9f, 0x08, 0x7b, 0xcf, 0x32, 0x36, 0xd6, 0x5c, 0x5e, 0x38, 0x76, 0xb9, 0x94, 0xf5, 0x20, 0x7d, 0xa0, 0x6b, 0xc0, 0x2c, 0xb1, 0xdd, 0x16, 0xa1, 0x4e, 0x4a, 0x12, 0x75, 0x63, 0xa8, 0x76, 0xa4, 0x8c, 0x39, 0x95, 0xe7, 0x1b, 0x63, 0x1f, 0x42, 0x43, 0x26, 0xae, 0x41, 0x13, 0xe7, 0xc1, 0x50, 0x9d, 0x2d, 0xe3, 0x51, 0xf5, 0x39, 0x10, 0x34, 0xe7, 0x2e, 0x58, 0x4b, 0xfa, 0x0f, 0x82, 0x6c, 0x1d, 0xf2, 0x5f, 0xa9, 0x8a, 0x2a, 0x6a, 0x94, 0xa3, 0x89, 0x98, 0x08, 0x5c, 0x88, 0x4c, 0xfa, 0x87, 0xd5, 0x88, 0x76, 0x03, 0xd9, 0x17, 0xe4, 0xa2, 0x95, 0x6f, 0x1f, 0x39, 0x66, 0x09, 0x06, 0x6f, 0xc7, 0x64, 0x5d, 0xbb, 0xa9, 0x7a, 0xa1, 0xeb, 0x65, 0xf8, 0xc1, 0x5f, 0x10, 0x1e, 0x19, 0xc0, 0x41, 0xfb, 0x66, 0xf5, 0x5c, 0xce, 0x09, 0x48, 0x61, 0x99, 0x94, 0x68, 0x11, 0x00, 0xa0, 0x74, 0x57, 0xee, 0x2d, 0x17, 0x19, 0xb7, 0x70, 0x7e, 0xbe, 0x8d, 0xe4, 0x65, 0x46, 0x84, 0xe3, 0xce, 0x23, 0xb5, 0x0e, 0x04, 0xa3, 0x7a, 0xea, 0xba, 0x1b, 0x59, 0x06, 0x7b, 0x2b, 0x48, 0x18, 0x51, 0xe3, 0x2c, 0x11, 0x7e, 0xfa, 0x92, 0x39, 0x4c, 0x2a, 0x86, 0xec, 0x85, 0x3f, 0x7c, 0x6a, 0x55, 0xc3, 0x6c, 0x76, 0xb0, 0xf9, 0xa3, 0xd8, 0xa3, 0x0c, 0xa6, 0xbd, 0x61, 0xce, 0x5a, 0x09, 0x8d, 0x5d, 0x53, 0x55, 0xe5, 0x41, 0xc2, 0xd9, 0x32, 0xb5, 0x47, 0xae, 0xb0, 0xe3, 0x0e, 0xdc, 0x73, 0x79, 0x5e, 0x38, 0x43, 0x77, 0x7d, 0x63, 0x7f, 0x93, 0x8f, 0x95, 0xc1, 0x68, 0x4d, 0x4d, 0x46, 0x98, 0xe4, 0x6b, 0x30, 0xb1, 0xe6, 0x23, 0x61, 0x04, 0x72, 0xbc, 0xbd, 0xd4, 0xef, 0x47, 0xca, 0x7f, 0xb8, 0xb0, 0x8b, 0x24, 0xb3, 0xa1, 0xa9, 0x80, 0x28, 0x69, 0x5c, 0x3c, 0x22, 0x8b, 0xe6, 0x30, 0xe6, 0x67, 0x58, 0x1a, 0xf3, 0x5d, 0xbe, 0x09, 0xe4, 0xa4, 0xea, 0xcb, 0x4c, 0x8c, 0x17, 0x5d, 0xfe, 0xc5, 0x8d, 0x42, 0x50, 0xaa, 0x90, 0x6c, 0x79, 0x06, 0xa5, 0x59, 0x5d, 0x99, 0x4f, 0x65, 0x1b, 0xe1, 0x23, 0xf6, 0x43, 0x6d, 0x69, 0x96, 0x7c, 0x43, 0x30, 0xab, 0xf5, 0x05, 0x7b, 0x79, 0x7e, 0x36, 0x41, 0xf2, 0xda, 0xfc, 0x55, 0xb4, 0x62, 0x26, 0x9c, 0x56, 0x66, 0x6e, 0x9f, 0x3e, 0x40, 0xe6, 0xe6, 0xc5, 0x32, 0x2f, 0x18, 0x84, 0xe7, 0xf8, 0xfd, 0x4c, 0x68, 0xec, 0x82, 0xda, 0x03, 0x2c, 0x3e, 0x8c, 0x11, 0x22, 0x14, 0x52, 0x3c, 0x0c, 0x8c, 0x45, 0x2b, 0xfe, 0xe2, 0x54, 0x75, 0x92, 0x9d, 0xad, 0xb1, 0x36, 0x07, 0x04, 0x23, 0xca, 0x8c, 0xbc, 0xf2, 0x28, 0xfa, 0x8e, 0x4e, 0x46, 0x45, 0xd8, 0x18, 0x14, 0x2c, 0x4b, 0x81, 0xdd, 0xa5, 0x56, 0x75, 0x65, 0x08, 0xa3, 0x5b, 0x05, 0x5c, 0x62, 0x4a, 0x13, 0x26, 0x41, 0x5a, 0xe9, 0xf2, 0x9c, 0x04, 0xcf, 0x41, 0xd6, 0xcf, 0x92, 0xae, 0x6a, 0xd1, 0x16, 0x29, 0x65, 0x32, 0x52, 0x88, 0xc7, 0xd9, 0x73, 0xac, 0xc5, 0xaa, 0xde, 0x4b, 0x13, 0xb4, 0x33, 0xd2, 0x84, 0x16, 0xab, 0xef, 0xcb, 0xee, 0x1c, 0x20, 0x58, 0x57, 0xdb, 0xd4, 0x17, 0x04, 0x8e, 0xb5, 0x92, 0xb2, 0x92, 0xb2, 0x82, 0x8d, 0x10, 0x14, 0x1d, 0x03, 0x94, 0x8a, 0x55, 0x16, 0x54, 0xd7, 0x09, 0x89, 0x1e, 0x82, 0x1d, 0x01, 0xea, 0x99, 0x2a, 0x30, 0x97, 0x7a, 0x8a, 0xa4, 0x64, 0x2a, 0xbc, 0x3a, 0xf0, 0xa1, 0xaf, 0xb1, 0x58, 0x7e, 0x9c, 0x2d, 0x5f, 0x2e, 0x29, 0x4e, 0x18, 0x73, 0xde, 0xc9, 0x85, 0xdb, 0x6e, 0x66, 0x09, 0x20, 0x9c, 0x64, 0xe5, 0xf7, 0xf1, 0xbb, 0x65, 0x04, 0x94, 0x51, 0xa5, 0x21, 0x2c, 0x31, 0x2f, 0x7f, 0x07, 0x2a, 0xe8, 0x6b, 0x67, 0x81, 0x9e, 0x50, 0xb2, 0xe2, 0x7e, 0x11, 0x01, 0xe7, 0x5b, 0xb9, 0x5d, 0x02, 0x10, 0xac, 0x50, 0x14, 0x00, 0xc4, 0xa0, 0x66, 0xc7, 0xfe, 0x43, 0xac, 0x6e, 0x47, 0x7b, 0x5c, 0x24, 0x1a, 0x36, 0xc8, 0x1a, 0xd9, 0x4d, 0xf2, 0x96, 0xbe, 0x51, 0x19, 0x74, 0x6d, 0x62, 0x87, 0x53, 0x29, 0xaa}, +{0xeb, 0xa8, 0xde, 0x25, 0x55, 0x49, 0x5c, 0x6e, 0x98, 0x81, 0x0a, 0x72, 0x4a, 0xb1, 0xb8, 0x47, 0x3e, 0x42, 0xd2, 0x1d, 0x2b, 0x16, 0x6d, 0xe1, 0x72, 0x64, 0xd5, 0x56, 0x19, 0x55, 0x4c, 0x91, 0x62, 0xc4, 0xa1, 0x6f, 0x9e, 0x5c, 0xaa, 0x11, 0x68, 0x9d, 0xb3, 0xc1, 0xb7, 0xf8, 0xcc, 0xd0, 0x56, 0x9f, 0xc1, 0x87, 0xcb, 0xb4, 0xda, 0x53, 0x1b, 0x4a, 0x52, 0xf3, 0x0d, 0xe2, 0x78, 0xfe, 0xa8, 0x63, 0x9b, 0x44, 0x28, 0x24, 0xa3, 0x0e, 0x59, 0x95, 0x38, 0x48, 0xa2, 0xb1, 0x2e, 0x41, 0x56, 0x07, 0x0a, 0x38, 0x45, 0x1d, 0x75, 0x99, 0x6e, 0x05, 0x25, 0x9d, 0x85, 0xb0, 0x40, 0x73, 0x70, 0x72, 0x38, 0xc3, 0x23, 0xe6, 0x5e, 0x7d, 0xa1, 0x45, 0xd3, 0xe7, 0x2b, 0x09, 0xb1, 0x2b, 0xd0, 0x84, 0x96, 0x4a, 0x19, 0xee, 0x47, 0x01, 0x63, 0x7a, 0x60, 0x29, 0x0c, 0xae, 0x04, 0x95, 0xc4, 0x5b, 0xe5, 0xf9, 0xa4, 0x23, 0xaf, 0x8a, 0xd6, 0xb8, 0xbe, 0xb5, 0xa1, 0xd0, 0x45, 0x6b, 0x81, 0xb2, 0x2e, 0x3a, 0xe5, 0xe4, 0xf3, 0xc2, 0x8c, 0x18, 0x31, 0x4f, 0xe2, 0x28, 0xe4, 0x6e, 0x03, 0x10, 0xac, 0x08, 0xe3, 0x92, 0xf0, 0x4a, 0x3f, 0x6a, 0x0c, 0x93, 0xff, 0x5e, 0x25, 0x73, 0xea, 0x28, 0x46, 0xc2, 0xba, 0x20, 0xac, 0x5c, 0x70, 0x48, 0xc6, 0x88, 0xb6, 0x5a, 0xe1, 0x22, 0xfb, 0x86, 0xf6, 0x77, 0x1c, 0xc6, 0x14, 0xb8, 0xf2, 0x0a, 0x68, 0x21, 0x05, 0x78, 0x13, 0x83, 0xf0, 0x94, 0xf0, 0xaa, 0x51, 0x8b, 0xc3, 0x0d, 0x64, 0xbc, 0x98, 0x2d, 0x98, 0x90, 0xf8, 0x1b, 0xcd, 0x18, 0x71, 0x17, 0x6d, 0xe0, 0x99, 0x1c, 0x44, 0xcd, 0xf5, 0x6e, 0x6d, 0x91, 0xd2, 0x00, 0xb4, 0x6b, 0x12, 0x01, 0x7c, 0x6e, 0xe5, 0xde, 0x49, 0xe4, 0xa8, 0x7b, 0xaa, 0x0f, 0x73, 0x0b, 0xd4, 0xc4, 0x11, 0x9e, 0x48, 0xb2, 0xd6, 0x62, 0xfe, 0xbd, 0x12, 0x6c, 0xa8, 0x80, 0x65, 0xe1, 0x17, 0xd4, 0x5c, 0xe1, 0x99, 0x42, 0x51, 0x55, 0x87, 0x08, 0x5a, 0xdb, 0x09, 0xfa, 0x5e, 0xa8, 0x8b, 0xc6, 0xe8, 0xb4, 0x3c, 0x2a, 0xe1, 0x90, 0x70, 0x1b, 0xb5, 0x75, 0xb2, 0x45, 0xc8, 0xf8, 0x13, 0x2b, 0x79, 0x2c, 0x8b, 0x8b, 0x56, 0x13, 0x7c, 0x56, 0x6c, 0x23, 0xd0, 0x12, 0x26, 0xce, 0x8e, 0x8b, 0xaf, 0x10, 0x11, 0xe0, 0xdd, 0xed, 0x88, 0x0b, 0x25, 0x73, 0xe5, 0xe3, 0x15, 0x7b, 0xb7, 0x53, 0x18, 0xe4, 0x68, 0xcc, 0x92, 0x5b, 0xd3, 0x2f, 0x3b, 0xd1, 0x2d, 0xbc, 0x11, 0xad, 0x37, 0x4b, 0x9f, 0xf4, 0x7d, 0xef, 0xe9, 0xa8, 0xca, 0xe9, 0x29, 0x01, 0x7a, 0x4b, 0x48, 0xd5, 0x2b, 0x79, 0x96, 0x70, 0x8e, 0xfb, 0x92, 0xfc, 0x15, 0x52, 0xee, 0xab, 0x99, 0x00, 0x63, 0x89, 0x90, 0x12, 0x55, 0xdc, 0x3a, 0x4b, 0xdd, 0x3e, 0xd8, 0x4c, 0x1d, 0xbb, 0x07, 0xd2, 0x6c, 0xb1, 0x0c, 0x1a, 0x83, 0x06, 0xe6, 0x94, 0x34, 0xe9, 0xc3, 0x98, 0x76, 0x49, 0x9c, 0x6f, 0x93, 0x78, 0xb6, 0xa6, 0x3a, 0x07, 0x1c, 0x27, 0xc3, 0xf0, 0x18, 0xfa, 0x58, 0x68, 0x9d, 0x9a, 0x8b, 0x52, 0x50, 0x88, 0x53, 0xec, 0x06, 0x14, 0x2f, 0x42, 0x8d, 0xa0, 0xc4, 0xbb, 0xf0, 0xea, 0xe6, 0x97, 0x8e, 0x5a, 0xe8, 0x18, 0xbf, 0xa1, 0x0c, 0x63, 0x8f, 0x89, 0xf0, 0xbc, 0x3e, 0x47, 0x96, 0xe7, 0xca, 0x12, 0xfd, 0x40, 0x73, 0x63, 0xd1, 0x7d, 0x20, 0xb4, 0xb5, 0x7c, 0xae, 0x67, 0xe8, 0x65, 0x17, 0x01, 0xb8, 0x66, 0xc7, 0x1c, 0x17, 0x5d, 0x3c, 0x79, 0xc0, 0xc7, 0x38, 0x77, 0xd1, 0x2c, 0x15, 0x7f, 0x48, 0x97, 0xe0, 0x71, 0xd1, 0x7a, 0x61, 0xe8, 0x60, 0x09, 0xe3, 0x11, 0xb0, 0x9b, 0x11, 0xb8, 0x5a, 0xa7, 0x38, 0xa8, 0x30, 0x95, 0x12, 0x09, 0x88, 0xe4, 0x9c, 0x14, 0x9c, 0xc8, 0x52, 0x67, 0x40, 0xbc, 0x94, 0x2f, 0x69, 0x9b, 0xf0, 0x80, 0x11, 0x24, 0x10, 0xe5, 0xe5, 0x0c, 0xfd, 0x29, 0x52, 0x5d, 0x91, 0xc1, 0xee, 0xa0, 0x3c, 0x6c, 0xe3, 0x04, 0xb7, 0x4e, 0xc8, 0x7c, 0x85, 0x58, 0x13, 0xc7, 0xda, 0xa4, 0x8d, 0x98, 0x64, 0x31, 0x03, 0xe8, 0xec, 0x73, 0x49, 0x62, 0xbd, 0x31, 0xe9, 0x45, 0x5c, 0x3e, 0x83, 0x4b, 0xe2, 0xcd, 0x28, 0x6a, 0x09, 0x5b, 0xe8, 0xb6, 0x19, 0xb9, 0x68, 0x08, 0xdc, 0xa0, 0x3a, 0x5b, 0xd9, 0xb0, 0x2c, 0xd7, 0x7f, 0x69, 0x48, 0x91, 0x1e, 0x2d, 0xa8, 0xdf, 0xb3, 0xc2, 0x41, 0xbc, 0xa9, 0x57, 0x78, 0x53, 0x21, 0x0a, 0x0e, 0x8b, 0x42, 0x82, 0xd7, 0x7a, 0x24, 0x5e, 0x5c, 0xd4, 0x8f, 0xb9, 0x4f, 0x16, 0x52, 0xba, 0xaa, 0x8c, 0x37, 0x42, 0x1c, 0x03, 0x50, 0x2f, 0x79, 0xd3, 0xec, 0x59, 0x1b, 0x5f, 0x8b, 0x88, 0xa3, 0x04, 0x6d, 0x40, 0x56, 0xc1, 0x8b, 0xe1, 0x86, 0xa4, 0x6e, 0xaa, 0x2f, 0x38, 0x14, 0x2d, 0xcc, 0x8f, 0x1b, 0xe4, 0xdb, 0x94, 0xcc, 0x90, 0x8a, 0x17, 0x44, 0xfd, 0x67, 0x29, 0xe8, 0x53, 0xee, 0xd6, 0x58, 0xc9, 0xf5, 0x09, 0x84, 0xfc, 0x44, 0xc4, 0xf2, 0x29, 0x04, 0xa5, 0x5d, 0xce, 0x13, 0x21, 0xdf, 0x9e, 0x68, 0x96, 0x4e, 0x33, 0x54, 0x8f, 0x98, 0x0a, 0xa5, 0x54, 0x1a, 0x3b, 0x77, 0x0e, 0xa1, 0xe4, 0x6a, 0x2d, 0x14, 0xe4, 0xb8, 0x30, 0x1d, 0x58, 0x9c, 0x37, 0x03, 0x82, 0x06, 0x32, 0xac, 0x45, 0x20, 0xb6, 0x84, 0x4c, 0x68, 0xe0, 0x80, 0x42, 0xb3, 0xf0, 0x5b, 0x53, 0x1d, 0xbb, 0xd3, 0xa6, 0xc6, 0x1b, 0xe5, 0x61, 0xdc, 0x53, 0x6d, 0x96, 0x55, 0x2e, 0x60, 0x0a, 0x06, 0x26, 0x05, 0x4e, 0xbe, 0x40, 0x69, 0x44, 0xe6, 0x80, 0x41, 0xfa, 0x1d, 0x10, 0x44, 0xe4, 0xd9, 0x43, 0xb0, 0x57, 0xe8, 0xe2, 0x81, 0xf9, 0xbf, 0xc9, 0x26, 0x76, 0x1b, 0xe1, 0x4d, 0x9a, 0xf7, 0x0d, 0x48, 0x66, 0x20, 0x5e, 0x52, 0x99, 0x8c, 0xbd, 0xc2, 0x78, 0x85, 0x92, 0xb3, 0xc6, 0x28, 0x57, 0x50, 0x61, 0x1c, 0x3b, 0x84, 0x70, 0x57, 0x63, 0xcd, 0x0a, 0x6b, 0x11, 0xae, 0x09, 0x29, 0x58, 0x39, 0x43, 0x53, 0x3d, 0x60, 0x15, 0x9d, 0x3d, 0xc5, 0x44, 0xbe, 0x42, 0x09, 0x1d, 0x26, 0x6b, 0x9e, 0x0d, 0x51, 0x53, 0xac, 0x9c, 0xe9, 0x23, 0x0b, 0x92, 0xe9, 0x19, 0x8e, 0x2e, 0xa5, 0xdd, 0x25, 0x30, 0x18, 0xaa, 0x92, 0xac, 0x44, 0x3a, 0x43, 0x75, 0xa1, 0xba, 0xae, 0x3b, 0xc4, 0x3c, 0x88, 0xae, 0x5d, 0x9e, 0x08, 0xb0, 0xcc, 0x18, 0x44, 0xde, 0x8b, 0xc3, 0xcb, 0xd8, 0xfe, 0x8d}, +{0x0f, 0x8e, 0x56, 0x54, 0x41, 0x64, 0xae, 0x3b, 0xeb, 0x5f, 0x69, 0xb6, 0xd8, 0x62, 0x14, 0x81, 0xa2, 0x67, 0xf2, 0xa5, 0x3b, 0xca, 0xc2, 0x88, 0x92, 0x9c, 0xdd, 0x36, 0x4a, 0x9e, 0xc6, 0xb7, 0x45, 0x66, 0x43, 0x6a, 0x67, 0xd9, 0x26, 0x0c, 0xfa, 0x3e, 0x15, 0xa3, 0xba, 0xdb, 0x4d, 0x32, 0x6e, 0x53, 0x9a, 0xf7, 0x40, 0xf1, 0x65, 0x77, 0x4d, 0xa3, 0x41, 0xc1, 0x3c, 0x34, 0x43, 0x01, 0x2c, 0xdc, 0xb0, 0xe9, 0x5d, 0x08, 0xd9, 0xc1, 0x01, 0xcb, 0x04, 0x00, 0x8a, 0x97, 0x86, 0x7b, 0x34, 0xc2, 0x36, 0x79, 0x75, 0xe2, 0x65, 0xf7, 0xb7, 0x8e, 0x2a, 0x15, 0x53, 0x3b, 0xb7, 0x20, 0x15, 0x94, 0x67, 0xce, 0xe2, 0x19, 0x7f, 0x12, 0xb0, 0x88, 0x01, 0x3a, 0x80, 0xfa, 0xd8, 0xbf, 0xdf, 0x91, 0x67, 0xd6, 0xfe, 0x54, 0x9e, 0x17, 0x21, 0xc6, 0x8a, 0xe5, 0x09, 0xa0, 0x28, 0x03, 0x8d, 0x75, 0x14, 0x20, 0x64, 0xb9, 0xdd, 0xd9, 0x1b, 0xf9, 0xfa, 0x9d, 0x3d, 0x49, 0x5f, 0x40, 0xad, 0x2a, 0x32, 0x4c, 0x61, 0x87, 0xb6, 0x11, 0x51, 0x6b, 0x75, 0x5d, 0xfc, 0x46, 0xc7, 0x7c, 0xbd, 0xcd, 0xe2, 0x4c, 0x17, 0xef, 0xdc, 0x09, 0x47, 0x93, 0x74, 0x2a, 0xc4, 0x32, 0xa7, 0x0a, 0x86, 0x29, 0x01, 0x4f, 0x04, 0xbd, 0x2e, 0xce, 0x96, 0x3a, 0x49, 0x99, 0x43, 0x49, 0x83, 0x16, 0xda, 0x0a, 0x56, 0x2c, 0x85, 0x89, 0xf2, 0x61, 0x38, 0xce, 0x29, 0x38, 0x8c, 0x31, 0xf5, 0x11, 0x4e, 0x48, 0x73, 0x13, 0xb9, 0xc7, 0xd8, 0x9a, 0xb4, 0x40, 0xdf, 0x31, 0x51, 0xec, 0x82, 0x18, 0xc5, 0xce, 0x36, 0x5b, 0xe5, 0xb0, 0x39, 0x52, 0x4c, 0xe7, 0xb4, 0x75, 0x10, 0x49, 0xdb, 0x8a, 0xf1, 0x01, 0xec, 0xa6, 0xbb, 0xf7, 0xab, 0xa4, 0xf2, 0x7e, 0x2d, 0xab, 0x19, 0x15, 0x4d, 0xda, 0xe4, 0xc0, 0x30, 0xda, 0x64, 0x99, 0x81, 0x66, 0x11, 0x1d, 0xa4, 0x93, 0xa5, 0x4b, 0x13, 0xca, 0xb0, 0x03, 0x85, 0xd9, 0x39, 0xf5, 0xa5, 0x23, 0x45, 0xe4, 0x9a, 0x82, 0x6d, 0x11, 0x6d, 0xad, 0xdf, 0xb3, 0xea, 0xe2, 0x86, 0x09, 0xa7, 0xc6, 0x2a, 0x38, 0x5d, 0x11, 0x2f, 0x67, 0xe5, 0x81, 0xf0, 0x52, 0xbd, 0x8f, 0x41, 0x64, 0x1a, 0xc6, 0x9b, 0xbc, 0x80, 0xaa, 0x2e, 0x94, 0x22, 0xe2, 0x85, 0xa0, 0x15, 0x07, 0x40, 0x14, 0x98, 0xec, 0x14, 0x8c, 0x0d, 0xb5, 0x22, 0x75, 0x09, 0x30, 0x3a, 0x66, 0x7a, 0x47, 0x3a, 0x09, 0xb9, 0x12, 0xe1, 0x1b, 0x52, 0x0c, 0xd9, 0x9a, 0x9a, 0x08, 0x9d, 0xe9, 0xd7, 0xc0, 0x95, 0x78, 0xc4, 0x48, 0xb8, 0x44, 0x92, 0x1e, 0xb2, 0x43, 0x5d, 0xf3, 0xcb, 0xd5, 0x5f, 0x4f, 0xaf, 0x5d, 0x67, 0x20, 0x80, 0xb9, 0xfc, 0x59, 0x29, 0x70, 0xed, 0xb6, 0x74, 0x82, 0x91, 0xff, 0x57, 0x9c, 0x16, 0x00, 0x63, 0x57, 0xc3, 0x62, 0x2b, 0x36, 0x25, 0x0f, 0x5a, 0x2c, 0xab, 0xc6, 0x31, 0x54, 0x7f, 0x1a, 0x72, 0x14, 0x1b, 0xae, 0x2a, 0x4a, 0xac, 0x4a, 0x86, 0xc3, 0x3e, 0x37, 0x3d, 0x25, 0x23, 0x54, 0x74, 0xe9, 0x9a, 0xdc, 0xda, 0x05, 0x04, 0x9a, 0xc4, 0x7c, 0x40, 0x0a, 0x36, 0xcb, 0x35, 0xd8, 0x17, 0x7b, 0x17, 0x9a, 0x54, 0x03, 0x8e, 0x72, 0x4d, 0x55, 0x1e, 0xe4, 0x9b, 0x9e, 0x15, 0x69, 0x4c, 0xa2, 0xc2, 0xc5, 0x05, 0x71, 0x5f, 0xe8, 0x3a, 0xe9, 0x0b, 0x4e, 0x53, 0x05, 0x45, 0x1e, 0xc9, 0x77, 0x98, 0x14, 0xda, 0x0c, 0xc6, 0x13, 0xb4, 0x6d, 0x47, 0xa2, 0x19, 0x64, 0x1a, 0x1b, 0x2c, 0x68, 0x76, 0x9d, 0xdc, 0x15, 0xc2, 0x48, 0xa6, 0x7d, 0xdd, 0x3b, 0x36, 0xd8, 0x9c, 0x0c, 0xaf, 0xc1, 0x69, 0x35, 0xb4, 0x20, 0x08, 0xd8, 0xda, 0x68, 0x61, 0xf9, 0x5d, 0x1b, 0x65, 0xe6, 0x3b, 0x22, 0xb9, 0x88, 0x4c, 0xba, 0x63, 0x9f, 0x47, 0x54, 0x66, 0x7a, 0xe5, 0x2d, 0x00, 0xd6, 0x34, 0x54, 0x96, 0x42, 0x2d, 0x6c, 0x33, 0xb8, 0x52, 0x82, 0x7b, 0xd2, 0xaf, 0xe4, 0x82, 0x29, 0x12, 0x9f, 0x90, 0xcd, 0xfb, 0xff, 0xed, 0x15, 0x07, 0x17, 0xeb, 0xc3, 0xc9, 0x72, 0x2e, 0x57, 0x26, 0xb3, 0xf8, 0xc5, 0xa0, 0x78, 0x1e, 0x69, 0x31, 0x33, 0x9a, 0x3c, 0x05, 0xab, 0x4d, 0x36, 0xb7, 0x93, 0x3e, 0x5d, 0x5e, 0x89, 0x95, 0x84, 0xc5, 0xae, 0x8e, 0x98, 0x2a, 0x12, 0x92, 0x0f, 0xd6, 0x51, 0x8a, 0x1d, 0xc4, 0xe1, 0x94, 0x09, 0x61, 0xbf, 0xe4, 0x0f, 0x1b, 0x89, 0x6c, 0x27, 0x87, 0x83, 0x9c, 0xa8, 0x2d, 0xd0, 0x01, 0xaa, 0x26, 0x4a, 0x10, 0x7c, 0x20, 0xa8, 0x1a, 0x8d, 0x1a, 0xc4, 0xbf, 0x0e, 0x62, 0xa5, 0x1e, 0x7a, 0xfa, 0xc2, 0x0c, 0x13, 0xf8, 0x05, 0xe9, 0xd4, 0x51, 0xee, 0xb9, 0x56, 0x1a, 0xb0, 0xda, 0x58, 0xe4, 0x84, 0xf4, 0x2b, 0x74, 0x74, 0xd7, 0xda, 0x3c, 0xe1, 0x88, 0xc6, 0xe7, 0x82, 0x58, 0x6a, 0x67, 0x6b, 0x2e, 0x43, 0x4a, 0x6c, 0xae, 0x72, 0xe1, 0xdb, 0xa5, 0xb8, 0x16, 0x27, 0x12, 0x2e, 0x4b, 0x71, 0xaa, 0xf8, 0x08, 0xb1, 0x81, 0xd8, 0x7b, 0x9d, 0xe1, 0xa4, 0x80, 0xae, 0xbd, 0xe0, 0x26, 0x75, 0x80, 0x62, 0x12, 0x3e, 0x54, 0x37, 0x20, 0x1d, 0x8c, 0xd9, 0xc4, 0x35, 0xbe, 0xf0, 0x1d, 0x11, 0x2e, 0x34, 0x2b, 0x86, 0xe2, 0x28, 0xcc, 0x43, 0x8b, 0x0a, 0x6a, 0x30, 0x15, 0xd1, 0xc7, 0xa5, 0x88, 0xa2, 0x99, 0x32, 0x55, 0x47, 0xad, 0x94, 0x7a, 0xf6, 0x95, 0xfd, 0x16, 0x38, 0x15, 0xc1, 0xaa, 0x77, 0x04, 0xea, 0xfe, 0x21, 0x95, 0x3d, 0x7a, 0x11, 0x26, 0x5b, 0x92, 0xa2, 0x96, 0x02, 0x17, 0xd0, 0x79, 0x67, 0xd9, 0xb6, 0x37, 0x1c, 0x2f, 0x32, 0xc9, 0xbe, 0x16, 0x5c, 0x96, 0x2b, 0x75, 0xf8, 0x28, 0x9a, 0xba, 0x3e, 0xee, 0xf4, 0xdb, 0xa4, 0x2e, 0x67, 0x92, 0x95, 0xb1, 0xa7, 0xa4, 0x5c, 0x63, 0x72, 0xef, 0xcf, 0x63, 0x5a, 0x79, 0x36, 0xbd, 0xa1, 0xb0, 0x7a, 0xb1, 0xf9, 0x61, 0x8b, 0xa0, 0x6d, 0x54, 0x34, 0x60, 0x59, 0xde, 0x0c, 0x93, 0x73, 0x22, 0x39, 0xa0, 0x7e, 0x0b, 0xa1, 0xf0, 0xd7, 0xca, 0x4b, 0xfd, 0x0a, 0xf8, 0x95, 0xd3, 0x74, 0x7f, 0x86, 0x5b, 0x49, 0x1a, 0x9c, 0xe5, 0x43, 0x2e, 0xa4, 0x7a, 0x1a, 0x5f, 0xb8, 0x3b, 0x6e, 0xcf, 0xe3, 0x32, 0xdb, 0x46, 0x38, 0x03, 0x00, 0x80, 0x00, 0xfe, 0x81, 0x26, 0xaf, 0x5e, 0xa6, 0x83, 0xb1, 0xda, 0x83, 0x53, 0xde, 0x53, 0xaa, 0xed, 0xce, 0x0b, 0xab, 0xd4, 0x10, 0x98, 0xb8, 0x7c, 0xba}, +{0xa7, 0x12, 0x21, 0x1b, 0xc5, 0x80, 0x21, 0x51, 0x45, 0x90, 0x66, 0x5d, 0xf9, 0x62, 0x5b, 0xdd, 0xbb, 0x20, 0x6d, 0x15, 0x20, 0x45, 0x5f, 0xda, 0xa0, 0xb2, 0x5e, 0x53, 0x9d, 0x19, 0x33, 0x45, 0x86, 0x58, 0x44, 0xe2, 0x44, 0xce, 0x14, 0x99, 0x0a, 0x80, 0xfa, 0x82, 0x4b, 0xda, 0xb9, 0x25, 0x50, 0xd9, 0x90, 0xe4, 0x06, 0xeb, 0xa0, 0x42, 0xdb, 0x6b, 0x66, 0x55, 0x61, 0xce, 0x4c, 0x9e, 0x8b, 0x54, 0x65, 0x67, 0x78, 0x73, 0x5b, 0x46, 0x68, 0x69, 0x65, 0xc9, 0x2e, 0x62, 0x84, 0xe0, 0x25, 0x3c, 0x68, 0x2c, 0x5d, 0x68, 0x30, 0x82, 0x89, 0x71, 0x68, 0x96, 0x1f, 0x27, 0x82, 0x30, 0xa2, 0x2b, 0x66, 0x03, 0x23, 0x20, 0x26, 0xce, 0x44, 0x98, 0x58, 0xf8, 0x50, 0xe9, 0x16, 0x43, 0xe1, 0xe9, 0x33, 0x21, 0xe6, 0x1d, 0x97, 0xef, 0x18, 0xfc, 0xfa, 0xfc, 0x44, 0x37, 0xef, 0xa1, 0xbd, 0x04, 0x43, 0x4a, 0x90, 0xaa, 0x84, 0x74, 0xe9, 0xa5, 0xc8, 0x16, 0x71, 0xd0, 0xd1, 0x80, 0x54, 0x32, 0xa4, 0xe7, 0x85, 0x3a, 0xf9, 0xa3, 0xb9, 0x74, 0x3d, 0xce, 0xea, 0xd3, 0x64, 0x5d, 0x95, 0xd3, 0x24, 0xf6, 0x1a, 0x40, 0x20, 0x25, 0x9d, 0x2d, 0x5e, 0x06, 0xba, 0xae, 0xa5, 0x5f, 0xcc, 0x75, 0x70, 0xf3, 0x25, 0x81, 0x2d, 0x80, 0xe6, 0x8a, 0x7d, 0xf4, 0x57, 0x63, 0xd0, 0x55, 0xb4, 0x66, 0x30, 0x86, 0x8a, 0xe6, 0x83, 0xdb, 0xbb, 0x1d, 0x73, 0xa1, 0x5a, 0x2a, 0xe1, 0xd5, 0xb8, 0x14, 0xa1, 0xe7, 0xf2, 0x0a, 0xd5, 0x05, 0x4f, 0x94, 0xd0, 0x73, 0x59, 0xea, 0x82, 0x6e, 0xda, 0x95, 0x6e, 0x6a, 0xb5, 0x56, 0xb2, 0x6f, 0x45, 0xd7, 0x72, 0xac, 0x86, 0x6f, 0xdb, 0xd4, 0x69, 0xa9, 0x61, 0xfc, 0xa7, 0xd8, 0x57, 0x62, 0x1a, 0x87, 0xea, 0x64, 0xb8, 0x69, 0x50, 0x02, 0x62, 0x9a, 0x1e, 0xbd, 0x0c, 0x74, 0xd2, 0xd9, 0xa9, 0x17, 0xe1, 0x85, 0xe6, 0x87, 0xb0, 0x60, 0x26, 0x6b, 0x2c, 0x70, 0x40, 0x2c, 0xa6, 0x9d, 0x9f, 0xea, 0xdb, 0xb0, 0x6c, 0xc6, 0x52, 0x9a, 0x24, 0x23, 0x39, 0x9a, 0x04, 0x66, 0x8f, 0x8a, 0x8c, 0xb2, 0x04, 0xb4, 0x9b, 0x89, 0x03, 0x7f, 0xa8, 0xfb, 0xad, 0xb5, 0x20, 0xdb, 0xcc, 0x8a, 0x60, 0x16, 0x11, 0x1f, 0x58, 0x2d, 0x98, 0xdb, 0x44, 0x7e, 0x35, 0x9e, 0x90, 0xf1, 0xf8, 0x86, 0xbf, 0xe2, 0x97, 0x96, 0x5a, 0xdd, 0xd9, 0x39, 0xd6, 0x09, 0x97, 0x44, 0xc4, 0xa0, 0x26, 0x13, 0x9b, 0x50, 0xca, 0xa7, 0x6e, 0x01, 0xb6, 0x9b, 0xab, 0x76, 0x4b, 0x2e, 0x1a, 0x75, 0x6c, 0xc9, 0x41, 0xd2, 0x91, 0x45, 0x76, 0x8f, 0x2c, 0x90, 0xf1, 0xd2, 0x0f, 0xd2, 0x13, 0xa0, 0x68, 0xa3, 0xf2, 0x88, 0xce, 0xac, 0x1f, 0x95, 0x7a, 0xc6, 0x01, 0x8d, 0x07, 0xac, 0x70, 0xc7, 0x5d, 0x24, 0x2e, 0x60, 0x4a, 0xc2, 0xbf, 0x62, 0x51, 0x95, 0x26, 0x25, 0xab, 0xa7, 0xb5, 0x53, 0x24, 0xe6, 0xb6, 0x27, 0x16, 0x6a, 0xb1, 0xc9, 0xec, 0x76, 0xd2, 0x81, 0xfc, 0xb7, 0x73, 0x17, 0xdf, 0xcb, 0xae, 0xbc, 0xb9, 0x26, 0xa7, 0xa0, 0x33, 0x61, 0x06, 0x65, 0x1b, 0xc9, 0xb7, 0x20, 0x51, 0xe4, 0xb1, 0x5e, 0x67, 0x5d, 0x0b, 0x96, 0xc2, 0x01, 0xf3, 0x02, 0x78, 0x98, 0x3f, 0x68, 0x45, 0x94, 0x1f, 0xce, 0x29, 0x6b, 0x5e, 0x59, 0xf6, 0x84, 0xf6, 0x51, 0x3c, 0x3c, 0x68, 0xfe, 0x56, 0xb3, 0xd6, 0x99, 0x26, 0x17, 0xe2, 0x5a, 0x9a, 0x42, 0xfe, 0x52, 0x59, 0x87, 0x14, 0x7c, 0x55, 0xe8, 0x28, 0x49, 0x9d, 0x9d, 0x43, 0x65, 0xee, 0xc6, 0x3a, 0xe9, 0xa6, 0xe2, 0xa1, 0x90, 0x50, 0x64, 0xc1, 0x2f, 0xfe, 0x18, 0xe7, 0x6d, 0x6c, 0x85, 0x6d, 0x8b, 0x91, 0xdc, 0xc5, 0x5d, 0x88, 0x2f, 0x02, 0x07, 0xee, 0x39, 0x24, 0xbe, 0x4f, 0x12, 0x58, 0xe2, 0x14, 0x2b, 0x9b, 0xcd, 0xa9, 0x77, 0x7d, 0x4c, 0x22, 0xed, 0xa9, 0x63, 0x78, 0x34, 0x9a, 0x0c, 0x18, 0xe6, 0xed, 0x78, 0x2a, 0x4d, 0x44, 0x52, 0x44, 0x03, 0x5a, 0x79, 0x35, 0x70, 0x48, 0x58, 0x21, 0x6a, 0xdb, 0x82, 0x8a, 0x34, 0xaf, 0xe3, 0x63, 0xf4, 0x0a, 0xa8, 0x13, 0x4e, 0x15, 0x23, 0xf3, 0x59, 0x84, 0x3a, 0x61, 0xa8, 0x21, 0x8b, 0x8e, 0x84, 0xa4, 0x42, 0xbd, 0x35, 0x80, 0x61, 0x36, 0x05, 0x83, 0x81, 0x95, 0xe2, 0x7d, 0x73, 0xf2, 0x4c, 0xb6, 0x13, 0xbf, 0xf9, 0x60, 0x28, 0x2d, 0xc3, 0xa6, 0xea, 0x4d, 0xb1, 0x0a, 0xe8, 0xb6, 0x77, 0xf8, 0x6a, 0x5a, 0x80, 0x0c, 0x1c, 0xf5, 0x43, 0xb6, 0x4a, 0xfe, 0xdc, 0xe3, 0x94, 0xac, 0x90, 0x8b, 0xba, 0x83, 0xaf, 0x69, 0x91, 0x46, 0x57, 0x35, 0x18, 0xa7, 0x67, 0x69, 0x42, 0x03, 0x70, 0x09, 0x43, 0x06, 0xd2, 0xfe, 0x4f, 0x1e, 0x29, 0x48, 0x8a, 0xbf, 0xda, 0x38, 0x60, 0xcf, 0x17, 0x22, 0xcb, 0xf0, 0x44, 0x49, 0x46, 0xca, 0x99, 0x1e, 0x22, 0xa5, 0x34, 0x29, 0x6e, 0x5b, 0xf9, 0xdd, 0x0e, 0x7e, 0x0d, 0xb3, 0x87, 0x67, 0x18, 0x32, 0xe0, 0x0b, 0x36, 0xf6, 0x5e, 0x4a, 0x7d, 0xcb, 0x18, 0xce, 0x72, 0xe4, 0xc1, 0x8c, 0xe7, 0x00, 0x2c, 0xf0, 0x11, 0x50, 0x34, 0x4a, 0xe9, 0xe7, 0x87, 0x62, 0xa0, 0x71, 0xbe, 0xdd, 0x71, 0xc1, 0x2c, 0xea, 0x72, 0x96, 0xc6, 0x71, 0x75, 0x49, 0xb0, 0x56, 0x43, 0xa5, 0xfb, 0xe8, 0x3d, 0xac, 0x2e, 0x9d, 0x95, 0x33, 0x26, 0x24, 0xdc, 0x78, 0xdb, 0x6e, 0x64, 0x48, 0x13, 0xac, 0x4b, 0x36, 0x40, 0x71, 0x15, 0xda, 0x0e, 0x52, 0x77, 0x51, 0x53, 0xd6, 0x85, 0x88, 0xae, 0x6f, 0xca, 0x50, 0x66, 0x1c, 0x5d, 0x80, 0xe0, 0x03, 0x1d, 0xeb, 0xe3, 0xea, 0x5f, 0x83, 0x47, 0xbf, 0xc7, 0x87, 0x0a, 0x32, 0xe3, 0x1a, 0x82, 0xf1, 0x76, 0xf6, 0x03, 0x86, 0x17, 0x80, 0xd8, 0x61, 0xca, 0x36, 0x39, 0xd2, 0x83, 0x65, 0x41, 0xb0, 0x41, 0x42, 0x69, 0x0d, 0xa2, 0x32, 0x26, 0x4d, 0xbe, 0x8b, 0x94, 0x40, 0x10, 0x60, 0xa7, 0x3d, 0xab, 0x02, 0xc2, 0x69, 0xca, 0x82, 0x8f, 0xdc, 0x6e, 0xc2, 0xf2, 0x49, 0xa0, 0x94, 0x25, 0x33, 0x02, 0x15, 0xec, 0x67, 0x3f, 0x49, 0xff, 0xf9, 0xbe, 0xba, 0x45, 0x88, 0xe3, 0x00, 0xe8, 0x6c, 0x2a, 0x41, 0x41, 0xdc, 0xd2, 0xd6, 0x69, 0x74, 0x4b, 0x33, 0xa0, 0x3e, 0x67, 0x8f, 0xd5, 0xa9, 0x3b, 0x42, 0x6f, 0x11, 0x3d, 0x84, 0x8a, 0xff, 0x57, 0xb5, 0x0b, 0x77, 0x84, 0x15, 0xc0, 0x09, 0x28, 0x1b, 0xd5, 0xc0, 0x31}, +{0x68, 0x05, 0xed, 0x99, 0x1a, 0xd9, 0x3c, 0x9c, 0xd2, 0x0a, 0x0b, 0x33, 0x88, 0x05, 0x4a, 0x6e, 0x7c, 0x52, 0x94, 0x72, 0xb1, 0x3f, 0xc7, 0x02, 0x8b, 0xb5, 0x48, 0x39, 0x47, 0x53, 0xb3, 0x23, 0x90, 0xa2, 0x6c, 0x24, 0x2c, 0x0e, 0x33, 0xd2, 0xea, 0x2e, 0xac, 0xa0, 0xe8, 0xfb, 0x10, 0x72, 0x42, 0x73, 0x5f, 0x31, 0xe8, 0xe4, 0xfc, 0x65, 0x6b, 0x49, 0x1f, 0xab, 0x1f, 0x6d, 0x2a, 0x7c, 0x23, 0x1e, 0xfb, 0x4b, 0xbd, 0x22, 0x22, 0x55, 0x31, 0xf6, 0x29, 0xe1, 0x8f, 0x32, 0xae, 0xb4, 0x22, 0x07, 0x00, 0x6b, 0xb1, 0xd5, 0xa0, 0xa9, 0x4f, 0x35, 0x21, 0x79, 0x81, 0xb9, 0xd3, 0x6d, 0x58, 0x5c, 0xb5, 0x8e, 0xf9, 0x15, 0x05, 0x4a, 0xa6, 0xb0, 0x6a, 0x8d, 0xc3, 0x49, 0x2c, 0x92, 0x46, 0xd3, 0xe5, 0xf0, 0x13, 0xb0, 0x29, 0x6d, 0x80, 0x44, 0x60, 0xc1, 0xf1, 0xa0, 0xbc, 0x08, 0x05, 0xca, 0xdb, 0xe8, 0x90, 0x2f, 0x1c, 0x0c, 0x44, 0xae, 0x28, 0x6f, 0xb9, 0xc7, 0xcd, 0x03, 0x7d, 0xf6, 0x13, 0xfb, 0x6d, 0x4b, 0x20, 0xe1, 0x61, 0x78, 0x65, 0x26, 0xb2, 0xd9, 0xdc, 0xa8, 0x69, 0xfe, 0x23, 0x03, 0x01, 0xb9, 0xd6, 0x25, 0x54, 0x23, 0xef, 0x90, 0x12, 0x8a, 0x92, 0xe5, 0x59, 0x6b, 0xe3, 0x42, 0xb1, 0x92, 0xfa, 0xaf, 0x3a, 0xc0, 0x3e, 0xf6, 0x77, 0xc1, 0xa5, 0x09, 0xab, 0x0b, 0x06, 0x06, 0xd0, 0xe2, 0xef, 0xe3, 0x32, 0xc4, 0x15, 0x4e, 0xe9, 0x9f, 0x27, 0x80, 0x04, 0x2c, 0xb9, 0x50, 0x02, 0x35, 0x09, 0xa6, 0xad, 0x2b, 0x6c, 0x3a, 0xa1, 0x1c, 0xb4, 0x18, 0xdf, 0xea, 0x6c, 0xb2, 0x9f, 0xc9, 0x30, 0xe2, 0xd0, 0x7a, 0x9b, 0xf0, 0xac, 0xbc, 0x29, 0x8a, 0x9c, 0xa0, 0x87, 0x96, 0xa3, 0xa4, 0x0a, 0xb4, 0x64, 0xe4, 0xad, 0x69, 0xa1, 0xef, 0x51, 0x67, 0xdc, 0x98, 0x97, 0xb0, 0x6a, 0x5f, 0x78, 0x98, 0x75, 0x0a, 0x56, 0xd7, 0x1c, 0x83, 0xd6, 0x42, 0xa4, 0x2f, 0x28, 0x57, 0x78, 0xcb, 0x25, 0x2b, 0x69, 0x54, 0x86, 0x23, 0x0a, 0x0a, 0xac, 0x93, 0x51, 0x89, 0x03, 0xd6, 0xc6, 0x81, 0x96, 0x04, 0x06, 0xf0, 0xad, 0xe4, 0x87, 0x49, 0x13, 0x01, 0xa9, 0xff, 0x05, 0x53, 0xa7, 0x02, 0x96, 0x73, 0xa1, 0xe6, 0x6d, 0xc5, 0x1e, 0xca, 0x37, 0x59, 0xf5, 0xab, 0xec, 0xeb, 0xf7, 0x45, 0xf3, 0xe0, 0x83, 0x50, 0xab, 0x11, 0xfb, 0x95, 0x59, 0x2c, 0xca, 0x07, 0x68, 0x1a, 0xfb, 0xd8, 0x86, 0xbc, 0x05, 0x86, 0x6a, 0x08, 0xc8, 0x21, 0xb3, 0x8d, 0x2d, 0x9b, 0xea, 0xb8, 0x75, 0x2f, 0x09, 0x43, 0x76, 0x4a, 0xca, 0x59, 0xed, 0xc2, 0x9f, 0xa2, 0x3b, 0x9d, 0x71, 0x57, 0x8a, 0x26, 0x4a, 0x9f, 0xc4, 0x17, 0x44, 0x03, 0xb8, 0xa2, 0xfc, 0xed, 0xa8, 0x4c, 0x93, 0x0c, 0x81, 0x61, 0x09, 0x9d, 0x8f, 0x2b, 0xfd, 0x98, 0x02, 0x34, 0x6e, 0xd1, 0x56, 0xbf, 0x01, 0xd0, 0x9c, 0x1a, 0x62, 0x60, 0xe5, 0x13, 0x0b, 0x8a, 0x71, 0xfc, 0xa4, 0xd3, 0x76, 0x2d, 0x79, 0x7d, 0x95, 0x68, 0xf6, 0x8b, 0xa7, 0x12, 0x8d, 0x2b, 0xcb, 0x73, 0x82, 0x03, 0xc4, 0x4b, 0x92, 0xdb, 0xfd, 0x39, 0x08, 0x71, 0xbb, 0x00, 0x92, 0xc7, 0x12, 0x6f, 0x3d, 0x3d, 0x22, 0x5d, 0x3d, 0x22, 0xb4, 0x79, 0x73, 0xb5, 0xe6, 0x13, 0x96, 0x15, 0x5e, 0x55, 0xeb, 0x45, 0x8c, 0x84, 0x87, 0x5e, 0xa2, 0xcf, 0xda, 0x99, 0xc8, 0x34, 0x12, 0x02, 0x9d, 0xe4, 0x02, 0x07, 0xa0, 0x7c, 0x61, 0x1a, 0xa8, 0xb2, 0x88, 0xad, 0x04, 0x8c, 0xbd, 0x43, 0xd8, 0x4a, 0x0c, 0x1e, 0x43, 0x99, 0x0d, 0x4a, 0x62, 0x52, 0xca, 0x90, 0xe8, 0x1e, 0x41, 0xd4, 0x48, 0xae, 0x98, 0x01, 0x9a, 0xed, 0x76, 0xee, 0x69, 0x79, 0xaf, 0x4a, 0xf6, 0x74, 0x4e, 0x80, 0x7b, 0x96, 0x51, 0x48, 0x03, 0xd6, 0x60, 0x8b, 0x02, 0x81, 0xa8, 0xc6, 0xa7, 0x54, 0x4e, 0xbe, 0x6f, 0x4c, 0x80, 0xef, 0xd8, 0x92, 0x53, 0xab, 0x87, 0x4a, 0x24, 0xca, 0x91, 0x06, 0x0f, 0x8e, 0x92, 0x85, 0x56, 0x9c, 0xbb, 0xeb, 0x50, 0x50, 0x23, 0x3e, 0xba, 0x45, 0x18, 0x58, 0x03, 0xfb, 0x7e, 0x25, 0x59, 0xcb, 0x36, 0x33, 0xb9, 0x01, 0x7d, 0x4f, 0xd5, 0x3b, 0x47, 0x9a, 0xa1, 0x4a, 0x55, 0x45, 0x9a, 0x75, 0xe5, 0x14, 0x7b, 0xf7, 0x80, 0x07, 0x42, 0xb7, 0x88, 0xb4, 0x30, 0x10, 0x99, 0x44, 0x8b, 0xda, 0x59, 0x21, 0xee, 0xdb, 0x80, 0xf1, 0x60, 0xb7, 0x60, 0x01, 0x6f, 0xd8, 0xca, 0x68, 0x93, 0x73, 0x83, 0x6d, 0x23, 0xe2, 0x14, 0x1d, 0xb9, 0xd0, 0xf9, 0xd1, 0x24, 0xe2, 0x42, 0xf6, 0xac, 0x68, 0x56, 0xec, 0xd1, 0x9e, 0x35, 0x5f, 0x32, 0x11, 0x98, 0xec, 0x06, 0x4f, 0x8e, 0xe1, 0x7a, 0xbe, 0x9a, 0x00, 0x49, 0xc6, 0x39, 0x21, 0x2b, 0x31, 0x12, 0xc0, 0x83, 0xd5, 0x6b, 0x91, 0xe2, 0x3c, 0x79, 0xd0, 0xd1, 0xf4, 0xf6, 0xca, 0xa4, 0x39, 0x64, 0x7a, 0x38, 0xa9, 0x5e, 0x77, 0x75, 0xa2, 0x59, 0x6b, 0x9e, 0x04, 0x1e, 0x12, 0x6a, 0x83, 0xd5, 0x69, 0x45, 0x0e, 0xf2, 0xe8, 0xbf, 0x83, 0xe7, 0xb2, 0x35, 0xab, 0x17, 0x8e, 0xc7, 0x83, 0xfe, 0x96, 0x7e, 0xa2, 0x08, 0xaa, 0x4b, 0x61, 0x14, 0xd0, 0x44, 0x31, 0x86, 0x15, 0x3c, 0x4d, 0xc2, 0xcd, 0x00, 0xd0, 0xb7, 0x0c, 0x4b, 0x04, 0x42, 0x2b, 0x91, 0xe2, 0xc0, 0xba, 0xf8, 0x2c, 0xde, 0x62, 0x33, 0x00, 0xab, 0x6e, 0x5c, 0x7f, 0x7b, 0xa6, 0x88, 0x62, 0xf8, 0x22, 0x2f, 0x9a, 0x7e, 0x16, 0x9b, 0x45, 0xd0, 0x2b, 0x62, 0xbd, 0x20, 0x6a, 0x53, 0x25, 0xc9, 0x8b, 0x84, 0x72, 0x2d, 0xac, 0x6a, 0x1a, 0x71, 0xcf, 0xe8, 0x45, 0xb6, 0x08, 0xf1, 0x27, 0xc5, 0x76, 0x9a, 0xac, 0x98, 0x0c, 0xa2, 0xdc, 0x7a, 0xaf, 0x0c, 0x28, 0xab, 0x48, 0xcf, 0x79, 0xb2, 0x37, 0x02, 0x51, 0x37, 0xa9, 0xa2, 0x9c, 0x2d, 0x47, 0x25, 0x78, 0xb7, 0xc5, 0x3d, 0x88, 0x97, 0x86, 0x11, 0x82, 0x2e, 0x21, 0x46, 0x26, 0x76, 0x74, 0x30, 0x19, 0x06, 0xf5, 0x0f, 0x60, 0xb9, 0xc5, 0x65, 0xb4, 0xa3, 0x59, 0xf3, 0x33, 0xeb, 0x10, 0x74, 0xaf, 0xc4, 0x8d, 0x0a, 0x4d, 0x20, 0x7d, 0x0f, 0x92, 0x69, 0x57, 0xd9, 0x92, 0x4e, 0x40, 0x07, 0x7d, 0xb6, 0x17, 0x99, 0x47, 0x88, 0x5d, 0xdb, 0xd2, 0x13, 0xd9, 0x42, 0xcb, 0x0a, 0xff, 0xe9, 0xd3, 0x26, 0x80, 0xfa, 0x00, 0xc9, 0x7a, 0xee, 0xd5, 0x71, 0xb0, 0xdb, 0x49, 0x10, 0xb8, 0xfd, 0x01}, +{0xd7, 0x51, 0x03, 0x2b, 0x62, 0x59, 0x88, 0xb5, 0x0f, 0xa4, 0x01, 0x31, 0x8a, 0xb4, 0xb2, 0x16, 0x51, 0xb8, 0x43, 0xc5, 0xb5, 0xef, 0xaf, 0xe2, 0x75, 0xfb, 0xf4, 0x90, 0x6f, 0xa5, 0x61, 0x84, 0x29, 0x00, 0x23, 0x72, 0x05, 0xbe, 0x61, 0x85, 0x09, 0xa4, 0xb0, 0x97, 0xa2, 0xd5, 0xa6, 0x79, 0xbd, 0x73, 0xdf, 0x7f, 0x35, 0xd0, 0x45, 0x6e, 0x26, 0xdb, 0x25, 0x98, 0x4f, 0xa5, 0x2d, 0x9d, 0xe0, 0x42, 0x74, 0x6f, 0xe1, 0x53, 0x98, 0x9e, 0xa4, 0x70, 0x86, 0xcc, 0xa8, 0x63, 0x58, 0xb3, 0x51, 0x95, 0xd5, 0x61, 0x8c, 0x5e, 0x13, 0x48, 0x5e, 0x81, 0x97, 0x7f, 0x02, 0x3b, 0x87, 0xbd, 0xda, 0x99, 0x9d, 0x17, 0x73, 0x03, 0x6a, 0x01, 0x82, 0xd2, 0x9c, 0xa7, 0x59, 0x70, 0xa8, 0x5b, 0x37, 0xd6, 0xa0, 0xc9, 0xc7, 0x10, 0x2a, 0xa2, 0x0e, 0x08, 0x63, 0x27, 0x22, 0x4f, 0xb6, 0x6c, 0xc4, 0xe8, 0x01, 0x4e, 0x21, 0x81, 0xc5, 0xc5, 0x92, 0x67, 0x6d, 0x45, 0x5c, 0x29, 0x78, 0x55, 0x39, 0xe5, 0x14, 0x0b, 0x92, 0xc5, 0x86, 0x4e, 0x0c, 0x7b, 0x1c, 0xe4, 0x25, 0x51, 0xad, 0xb4, 0x20, 0x96, 0xd5, 0x94, 0x48, 0xd6, 0xc5, 0x50, 0xdc, 0x4b, 0x96, 0x0a, 0x29, 0x38, 0x20, 0x11, 0x13, 0xf3, 0xeb, 0x9b, 0x22, 0x10, 0x30, 0x92, 0x01, 0x11, 0x84, 0xee, 0x49, 0xa9, 0xea, 0x8f, 0xc7, 0x8d, 0x00, 0x6b, 0x49, 0x16, 0x0d, 0xb9, 0xa1, 0x1e, 0x70, 0xc8, 0xd7, 0x36, 0xc3, 0x12, 0x01, 0x55, 0x8b, 0xda, 0x4f, 0xb0, 0x4b, 0x40, 0x89, 0x9e, 0x4b, 0x52, 0x59, 0xc7, 0xa8, 0x2f, 0x81, 0x5d, 0x2b, 0xa8, 0xa2, 0x5a, 0x4a, 0x38, 0x64, 0x10, 0x23, 0x3c, 0x79, 0x51, 0xa3, 0x19, 0xfd, 0x3a, 0x54, 0x56, 0x51, 0x44, 0x10, 0x46, 0xa1, 0x33, 0xb1, 0x5f, 0xa4, 0x9a, 0x10, 0x4a, 0x17, 0x44, 0x2b, 0x03, 0xdf, 0xaa, 0x49, 0xc2, 0x6a, 0x9a, 0x0b, 0x85, 0x1b, 0x69, 0x07, 0x70, 0x22, 0xae, 0xee, 0x1a, 0x82, 0x9c, 0xe5, 0xb8, 0x94, 0x18, 0x21, 0x8b, 0x04, 0x71, 0xa4, 0x6f, 0xc3, 0x80, 0x93, 0xe7, 0xea, 0x55, 0x0b, 0x8c, 0x9b, 0xc2, 0xf1, 0x26, 0x37, 0x3a, 0x46, 0x38, 0x32, 0xac, 0xfd, 0xb7, 0xc8, 0xe2, 0xb5, 0xa1, 0xec, 0xaa, 0x57, 0x04, 0x5c, 0x3a, 0x30, 0x1a, 0xc9, 0xa0, 0x72, 0x5d, 0xab, 0xd4, 0x78, 0x50, 0xa6, 0xd1, 0x25, 0x29, 0xf3, 0x92, 0xaa, 0xb3, 0x73, 0x5a, 0x4e, 0xcb, 0x52, 0x68, 0x52, 0x28, 0xe2, 0x35, 0x15, 0x2f, 0xcd, 0x0a, 0xec, 0x1a, 0x3b, 0xc4, 0x9d, 0x0d, 0x12, 0x69, 0x64, 0xbe, 0x75, 0x09, 0xf4, 0x71, 0x3b, 0xe3, 0x40, 0x7b, 0x57, 0x64, 0x72, 0x94, 0xe1, 0xb7, 0xe7, 0x56, 0x3a, 0x70, 0x19, 0x8b, 0x95, 0x12, 0x22, 0x0a, 0x7e, 0xe3, 0x4b, 0x0d, 0xb6, 0xa2, 0x2e, 0x49, 0xfc, 0x64, 0xc2, 0x02, 0xa0, 0xac, 0x94, 0xbd, 0x22, 0x6e, 0x31, 0x94, 0x68, 0x70, 0x2b, 0x0a, 0x26, 0xa8, 0x33, 0x65, 0x1a, 0x25, 0x06, 0x7d, 0xfa, 0xa2, 0x3c, 0x0e, 0x95, 0xda, 0xc5, 0x26, 0x50, 0x75, 0xb2, 0x78, 0x9e, 0x9d, 0x84, 0x7f, 0x6c, 0xa6, 0xba, 0xa0, 0x65, 0x64, 0x8c, 0xd4, 0x6d, 0x9b, 0x23, 0x7c, 0xa3, 0xe6, 0x6d, 0x7e, 0x99, 0x9c, 0xa1, 0x03, 0x73, 0x2e, 0x22, 0x9e, 0x68, 0xb6, 0xba, 0x4f, 0xe1, 0x2d, 0x34, 0xe3, 0xbb, 0x71, 0xd8, 0x81, 0x42, 0xb6, 0xe7, 0x9b, 0x02, 0xd0, 0x95, 0x28, 0x08, 0x14, 0x33, 0xb6, 0x9a, 0x20, 0x7a, 0x3d, 0xa5, 0x58, 0x7b, 0x5c, 0x69, 0x13, 0x43, 0x5f, 0x38, 0x7b, 0x5f, 0x80, 0x31, 0xeb, 0x45, 0x02, 0x81, 0x83, 0xf6, 0x2e, 0xd2, 0x02, 0x04, 0x74, 0x45, 0xdd, 0x4d, 0xe7, 0x10, 0xc6, 0x91, 0x04, 0x1e, 0x6e, 0x56, 0xcd, 0x5f, 0xe5, 0xe1, 0x95, 0x68, 0xe1, 0x05, 0xb0, 0x88, 0x9a, 0x9e, 0x9c, 0x02, 0x83, 0x88, 0x61, 0x6f, 0x15, 0x2a, 0x9a, 0xd9, 0xb0, 0x4b, 0xac, 0xc9, 0x34, 0xba, 0x8a, 0x42, 0xe2, 0x1d, 0x10, 0x2b, 0x2c, 0x14, 0x35, 0xa1, 0xd7, 0xa6, 0x89, 0xcd, 0xee, 0x51, 0x86, 0xee, 0x39, 0x3e, 0x6d, 0xa1, 0xef, 0x59, 0xa3, 0x01, 0x90, 0x59, 0xd7, 0x14, 0x6b, 0xa2, 0xf4, 0x02, 0x0a, 0x91, 0x0c, 0x00, 0x35, 0x49, 0x7f, 0x2a, 0x26, 0x7a, 0x5a, 0xa9, 0x1a, 0x9a, 0x73, 0xe1, 0x4f, 0xcb, 0x1c, 0x9c, 0x17, 0xd8, 0x01, 0x87, 0x26, 0xdf, 0xe1, 0x27, 0x58, 0x9a, 0x99, 0xb4, 0x51, 0x8a, 0x91, 0xcc, 0x10, 0x62, 0x74, 0x62, 0x6e, 0x5f, 0x4b, 0x00, 0x0c, 0xc6, 0x06, 0x95, 0x52, 0xce, 0x4a, 0x2a, 0xe7, 0x22, 0xe2, 0x55, 0xe6, 0x41, 0x2c, 0xd5, 0x7e, 0xdc, 0x04, 0x67, 0x10, 0x08, 0x71, 0xd1, 0x7a, 0x79, 0x61, 0x8f, 0xbd, 0xe2, 0x1e, 0x41, 0x69, 0x6d, 0xd5, 0xbf, 0x33, 0x8d, 0xf1, 0x9f, 0x6b, 0x9a, 0xb3, 0x50, 0x37, 0x88, 0x7d, 0xa7, 0x40, 0xb4, 0xfa, 0x19, 0x22, 0x1b, 0x61, 0x6a, 0x6d, 0x58, 0x09, 0xd9, 0x40, 0xdc, 0x19, 0x16, 0x80, 0x32, 0xdc, 0x74, 0x00, 0xa1, 0xff, 0x45, 0x93, 0xd5, 0xa0, 0x5f, 0x67, 0xd1, 0x71, 0xab, 0x0c, 0x62, 0xf4, 0x83, 0xaa, 0x75, 0x35, 0x10, 0x2f, 0x4a, 0x60, 0x0d, 0x89, 0xdf, 0x3e, 0x04, 0xb6, 0x21, 0x4e, 0xab, 0x50, 0xbd, 0x32, 0xf8, 0x1d, 0x78, 0x77, 0x40, 0x4c, 0xb8, 0x70, 0x1b, 0x11, 0x65, 0x38, 0x3d, 0x5e, 0xf6, 0xe6, 0x0b, 0x95, 0x31, 0x49, 0x69, 0xb1, 0x44, 0xdf, 0x93, 0x17, 0xd5, 0xb5, 0x83, 0x5e, 0x05, 0x71, 0x12, 0xc5, 0x35, 0x41, 0x6a, 0x5b, 0x99, 0x6f, 0xb2, 0x56, 0xc3, 0x1d, 0xbf, 0xeb, 0x2c, 0x44, 0x6b, 0x6c, 0x47, 0x53, 0x89, 0xda, 0xfc, 0x8e, 0xf9, 0x00, 0x59, 0x41, 0x7a, 0x44, 0x6f, 0xbe, 0x98, 0x03, 0x36, 0xd9, 0xfd, 0x3a, 0xab, 0xc5, 0x63, 0x82, 0x1c, 0xf0, 0xa6, 0x38, 0xcc, 0xdf, 0x0a, 0xa8, 0xee, 0x99, 0x33, 0x96, 0x25, 0x69, 0x20, 0x02, 0x5d, 0x75, 0xc7, 0x11, 0xc8, 0x48, 0xb8, 0x18, 0xe8, 0x91, 0x99, 0x24, 0x1c, 0xa2, 0x9b, 0x20, 0x6c, 0x94, 0x34, 0xac, 0x00, 0xac, 0x8c, 0x1a, 0xa5, 0x77, 0x79, 0x86, 0x21, 0x3c, 0x66, 0x24, 0xc0, 0x77, 0xb9, 0x13, 0x66, 0x90, 0x9d, 0xb6, 0xaa, 0xec, 0x97, 0x1c, 0xd3, 0xd6, 0xc3, 0xe1, 0xd4, 0x56, 0x1c, 0x1a, 0xd0, 0x61, 0x3e, 0x05, 0x1e, 0xa3, 0x10, 0x03, 0xeb, 0x1d, 0x68, 0x9c, 0x82, 0xc4, 0xe9, 0x17, 0xd3, 0x36, 0x42, 0xcd, 0x50, 0xa7, 0x79, 0xe0, 0x51, 0x03}}; +uint8_t H_bpoly[10][NEWHOPE_POLYBYTES] = { +{0x2d, 0x49, 0x5e, 0x31, 0x60, 0x14, 0x2a, 0x8e, 0x1a, 0x93, 0x55, 0xab, 0x21, 0xbe, 0x55, 0x59, 0x6d, 0x2b, 0x0d, 0x92, 0xa9, 0x85, 0x23, 0xa3, 0xc8, 0x6c, 0x5a, 0x85, 0x56, 0xc4, 0x9e, 0x32, 0x74, 0x82, 0xb8, 0x3d, 0xd0, 0x17, 0x03, 0xe2, 0xb2, 0x61, 0xd0, 0x63, 0xe9, 0xd9, 0xad, 0x04, 0x98, 0x64, 0x9c, 0xd9, 0xc9, 0x7d, 0x95, 0x98, 0x57, 0xa0, 0x58, 0x32, 0x68, 0x84, 0x3d, 0xd8, 0xe6, 0x0f, 0xc7, 0x02, 0x81, 0x65, 0x02, 0x50, 0xd8, 0xa8, 0xfe, 0xda, 0x5f, 0x83, 0xa4, 0x2f, 0xe6, 0xb4, 0xad, 0x4e, 0x2d, 0xc3, 0x6b, 0xe4, 0xf6, 0xf5, 0xb9, 0xee, 0x6b, 0xb2, 0x4a, 0x4d, 0xd9, 0x17, 0xea, 0x2e, 0xa8, 0xca, 0x50, 0x25, 0x4c, 0x7d, 0x80, 0xcc, 0xd9, 0xdd, 0xda, 0x7d, 0x43, 0x57, 0xc2, 0xeb, 0x98, 0xb0, 0x88, 0x54, 0x11, 0x29, 0xc3, 0xf0, 0x51, 0x32, 0x6e, 0x4a, 0x12, 0xfa, 0x75, 0xce, 0x38, 0xed, 0x21, 0x42, 0x89, 0xda, 0xfc, 0x1e, 0x74, 0xe8, 0x69, 0x0a, 0x7d, 0x0c, 0x78, 0xb7, 0x03, 0x0d, 0xba, 0xac, 0x89, 0x63, 0x6c, 0x5f, 0x98, 0x87, 0x4c, 0x91, 0x8f, 0xd3, 0x9d, 0x53, 0x07, 0xdd, 0x64, 0x9d, 0x5d, 0x66, 0xca, 0x55, 0x72, 0x2e, 0x97, 0x50, 0x6d, 0x8a, 0x75, 0xe9, 0x85, 0x96, 0x5a, 0x5c, 0x4c, 0xe3, 0xea, 0xd0, 0x8c, 0x0a, 0xdf, 0x55, 0x02, 0x85, 0x3d, 0x74, 0x7c, 0x18, 0x70, 0xc7, 0xcc, 0x5d, 0x4f, 0xe6, 0xd4, 0x96, 0xb8, 0x53, 0x54, 0x87, 0x69, 0x06, 0xdc, 0x61, 0xa3, 0x6a, 0x53, 0x6e, 0xe2, 0xe2, 0x26, 0x78, 0xf5, 0x59, 0xaa, 0x13, 0x4e, 0xc4, 0xe7, 0x4a, 0x41, 0xbf, 0xa6, 0x54, 0x11, 0xfc, 0x16, 0x86, 0x11, 0xae, 0x39, 0x04, 0x9f, 0xa6, 0x73, 0x23, 0xe3, 0x4c, 0x4a, 0x3a, 0x19, 0x72, 0x69, 0x8c, 0xff, 0x86, 0x7d, 0x76, 0x58, 0xb5, 0xe4, 0xf2, 0x15, 0xca, 0xdc, 0x8d, 0x16, 0x4c, 0x42, 0xe6, 0x07, 0x58, 0x4c, 0x42, 0x0d, 0xbc, 0xc9, 0x34, 0xdd, 0x36, 0xa7, 0xa8, 0x11, 0xc5, 0x43, 0x11, 0x84, 0xac, 0x45, 0xb5, 0x27, 0x77, 0x32, 0x5f, 0x8b, 0xe4, 0x7c, 0xe7, 0x79, 0x86, 0xaf, 0xc4, 0x08, 0x91, 0x48, 0x1e, 0xf5, 0x97, 0xfe, 0x55, 0x9c, 0x9b, 0x6e, 0x90, 0x15, 0x4d, 0x58, 0x79, 0x60, 0xef, 0x18, 0x32, 0x13, 0xee, 0x96, 0x8b, 0xd2, 0x24, 0x94, 0xd2, 0x4c, 0xec, 0x79, 0xcc, 0xfc, 0x21, 0x63, 0xa5, 0x0e, 0xd4, 0x65, 0x06, 0x1c, 0x34, 0x4c, 0xcb, 0x93, 0x19, 0xfa, 0xbb, 0xda, 0xd8, 0xbc, 0xb2, 0x0c, 0xac, 0xa0, 0x8d, 0x4c, 0x9a, 0xa6, 0xd3, 0x96, 0x4b, 0xa3, 0x58, 0x36, 0x17, 0xab, 0x70, 0x96, 0xae, 0x95, 0x77, 0x51, 0xa9, 0x52, 0x47, 0x87, 0x27, 0x3d, 0xc0, 0xcb, 0xe8, 0x5c, 0x7e, 0x04, 0xd5, 0x47, 0x01, 0x44, 0x82, 0xf4, 0xe7, 0xd3, 0xd1, 0xd2, 0x2d, 0x8f, 0x49, 0x2b, 0xb9, 0x26, 0x55, 0xd8, 0x17, 0x18, 0x63, 0x3d, 0x29, 0x88, 0x7d, 0x2d, 0xc0, 0x83, 0x1f, 0xa0, 0x2c, 0x39, 0x8b, 0xb1, 0x2a, 0xf7, 0xe6, 0xb5, 0x20, 0x9c, 0x54, 0xc7, 0x19, 0x8a, 0xac, 0x06, 0x02, 0x4c, 0x0c, 0x1f, 0x95, 0x11, 0xd4, 0xb2, 0x7b, 0x1d, 0xdc, 0x91, 0x80, 0xbc, 0x08, 0x29, 0x17, 0xf4, 0x43, 0x1c, 0x7c, 0x61, 0xcd, 0x4b, 0x79, 0xba, 0x96, 0xf5, 0x27, 0x40, 0x20, 0x5e, 0x87, 0xfa, 0x62, 0x31, 0x45, 0x40, 0x2e, 0x64, 0x23, 0xc4, 0x73, 0x8d, 0x92, 0xae, 0x13, 0xb3, 0xd8, 0x3a, 0xcf, 0xe4, 0xbf, 0x64, 0xee, 0x5e, 0x85, 0xe0, 0xd5, 0x79, 0xa3, 0xe8, 0xca, 0xb8, 0x7c, 0xae, 0xde, 0x0b, 0x0a, 0xbc, 0x50, 0xb4, 0x46, 0x6e, 0x91, 0xec, 0x28, 0x74, 0x92, 0x1c, 0xde, 0x3b, 0x75, 0x51, 0xab, 0x49, 0xec, 0x9b, 0x47, 0x15, 0x92, 0x4e, 0x75, 0x54, 0x63, 0xa1, 0x96, 0x6c, 0x14, 0x90, 0x48, 0xbd, 0x20, 0xe9, 0xd8, 0x45, 0xcc, 0x83, 0xb7, 0xe4, 0x62, 0x2d, 0x8f, 0x9a, 0x4c, 0x59, 0xd5, 0xc6, 0x4e, 0x2e, 0x9e, 0xa7, 0x23, 0xcb, 0x3d, 0x2e, 0x22, 0x45, 0x13, 0xf1, 0x13, 0xcb, 0x15, 0x79, 0xec, 0x4b, 0x0f, 0xda, 0x71, 0x61, 0x82, 0xd7, 0x2d, 0x08, 0x73, 0x63, 0xf5, 0x81, 0x8c, 0xed, 0xb3, 0x88, 0x69, 0xed, 0x8f, 0x8f, 0x6e, 0xf8, 0x52, 0x4f, 0x14, 0x2d, 0x94, 0x14, 0xaa, 0x63, 0xfe, 0xa8, 0x66, 0xcc, 0xa7, 0xd8, 0xe8, 0x1b, 0x3e, 0xbc, 0x99, 0xd2, 0x79, 0xaa, 0xcf, 0xd8, 0x4a, 0x9c, 0x02, 0x96, 0x90, 0x59, 0xc2, 0x1c, 0xbf, 0xc7, 0xc6, 0x33, 0x65, 0x19, 0x1b, 0xca, 0x12, 0x28, 0x61, 0x61, 0x7e, 0x2f, 0xe7, 0xc9, 0x7b, 0xab, 0x32, 0x66, 0x3d, 0xb3, 0x1e, 0xbb, 0xf6, 0x5a, 0xba, 0x67, 0xa0, 0x0c, 0x45, 0x67, 0x09, 0xec, 0x02, 0x3e, 0xde, 0x46, 0x62, 0xd3, 0xe2, 0xae, 0x3d, 0x46, 0xa9, 0xc1, 0x74, 0x3a, 0x24, 0xaa, 0x6c, 0xac, 0xc4, 0x10, 0x94, 0x56, 0x1c, 0xcb, 0x17, 0xd0, 0x54, 0x41, 0x39, 0xf8, 0x95, 0xc7, 0x95, 0xd0, 0xda, 0x09, 0x62, 0xa6, 0xf0, 0x1a, 0x2b, 0xd0, 0x2c, 0xca, 0xec, 0xef, 0x45, 0x59, 0x69, 0xa5, 0xbc, 0xa7, 0x0a, 0x05, 0x90, 0x30, 0x40, 0x54, 0xd0, 0xb2, 0xc8, 0x40, 0xa5, 0x21, 0x65, 0xee, 0xba, 0x01, 0xf9, 0xcd, 0x2c, 0x3c, 0x66, 0xe2, 0x67, 0x25, 0x24, 0x04, 0x04, 0x96, 0x59, 0x21, 0xab, 0xa0, 0x5c, 0xe7, 0xd6, 0xa4, 0x28, 0xad, 0x1c, 0x4d, 0x89, 0x21, 0xab, 0xc5, 0xd3, 0x9a, 0x60, 0x6a, 0x44, 0x34, 0xc0, 0x0a, 0xa4, 0x28, 0xd8, 0xe4, 0x4b, 0x81, 0x27, 0x49, 0x48, 0x86, 0x0c, 0x88, 0xe8, 0x9a, 0xc6, 0x3a, 0xb1, 0x63, 0xf4, 0xc4, 0x7e, 0xa2, 0x94, 0xc1, 0x02, 0x55, 0x11, 0xf8, 0xe9, 0x60, 0x82, 0x94, 0xbf, 0xa4, 0x6c, 0x2d, 0x69, 0x6f, 0x50, 0x80, 0x64, 0xe1, 0x68, 0xa2, 0x5a, 0x43, 0xb1, 0xc2, 0x28, 0xcc, 0x7d, 0x84, 0xa8, 0xe4, 0x5b, 0xbd, 0xed, 0xb6, 0xac, 0x4c, 0x67, 0x51, 0xce, 0x59, 0x99, 0xe6, 0x22, 0xad, 0x22, 0x2c, 0xf0, 0xb7, 0x36, 0x90, 0x57, 0xf0, 0x5c, 0x75, 0x4b, 0x3d, 0xaf, 0x58, 0xcb, 0xc4, 0x05, 0x8e, 0xaf, 0x93, 0x1b, 0x25, 0x1d, 0x68, 0xa5, 0x8d, 0x01, 0xef, 0xb7, 0x4f, 0x49, 0x10, 0x72, 0x41, 0xf3, 0x73, 0x5d, 0x00, 0x70, 0x2e, 0xab, 0x84, 0xe8, 0xa1, 0x8a, 0x29, 0x24, 0x96, 0x7c, 0xd6, 0x1f, 0x8c, 0x97, 0x10, 0x50, 0x2b, 0x58, 0x5b, 0x19, 0x3a, 0x03, 0x2b, 0x6a, 0xf0, 0x2b, 0x2c, 0x3e}, +{0x59, 0x5a, 0xe8, 0xe0, 0x4f, 0xed, 0x19, 0x3a, 0x82, 0x39, 0xb9, 0x74, 0x8d, 0x66, 0xff, 0x6f, 0x3f, 0x29, 0x23, 0x95, 0x96, 0x65, 0xa8, 0xa0, 0x8b, 0xc4, 0xa4, 0x78, 0xf4, 0xa1, 0x8f, 0xdb, 0x31, 0x0d, 0x47, 0xc1, 0x2f, 0xe4, 0xa1, 0x27, 0xa1, 0x24, 0xfe, 0xae, 0xf1, 0xea, 0x75, 0x75, 0x21, 0x63, 0x62, 0xea, 0xe3, 0x3f, 0xcd, 0x5f, 0xee, 0x2f, 0xff, 0x16, 0x5d, 0xe4, 0xbb, 0xec, 0xa8, 0x8e, 0x13, 0x59, 0x5c, 0x2c, 0xad, 0x97, 0xd3, 0x0a, 0x65, 0x76, 0x7c, 0x8e, 0x9a, 0x7a, 0x65, 0x96, 0x95, 0x0f, 0xf0, 0x8d, 0xe6, 0x16, 0x1b, 0x72, 0x27, 0x3b, 0x42, 0xed, 0xca, 0x0c, 0xae, 0x80, 0x45, 0xc6, 0xb0, 0x43, 0xd9, 0x82, 0x2c, 0x88, 0xd9, 0x5c, 0x61, 0x32, 0x1c, 0x9c, 0x17, 0x29, 0xf2, 0xa8, 0x2d, 0xb6, 0x38, 0xf1, 0xcb, 0xea, 0x51, 0x42, 0x96, 0x2a, 0x09, 0x0b, 0xee, 0x53, 0xb5, 0x1d, 0x1d, 0x43, 0x19, 0xc8, 0xd1, 0xa5, 0xc2, 0x20, 0xf8, 0x9c, 0xc6, 0x86, 0x0c, 0xf8, 0x3f, 0x51, 0x8b, 0x28, 0x46, 0xf3, 0x9a, 0xb9, 0xeb, 0x14, 0xcf, 0xf1, 0x1e, 0xf1, 0xb1, 0x04, 0x2e, 0x67, 0x50, 0xfa, 0x38, 0x92, 0x88, 0xe3, 0x13, 0xd4, 0x45, 0x2c, 0x3e, 0x11, 0xe4, 0xb2, 0x03, 0xf3, 0x44, 0xa2, 0x28, 0xab, 0x14, 0xe1, 0xcc, 0xdd, 0x70, 0x36, 0xa9, 0xdc, 0x04, 0x73, 0xbd, 0x73, 0xb0, 0xeb, 0x49, 0x09, 0x1f, 0xc9, 0x6f, 0x0e, 0xaf, 0x93, 0xea, 0x26, 0xba, 0x94, 0x0c, 0x96, 0x36, 0xf7, 0x5c, 0x36, 0x5d, 0x7d, 0x54, 0x39, 0x57, 0x61, 0x71, 0x6f, 0xad, 0xac, 0x75, 0xa9, 0xfb, 0x3d, 0x93, 0x3d, 0x6a, 0xa1, 0x71, 0xcd, 0x94, 0x25, 0xe2, 0xcc, 0x5f, 0x17, 0x79, 0x29, 0x32, 0x48, 0x25, 0xa7, 0x54, 0x03, 0x75, 0xa3, 0x75, 0x06, 0xae, 0x85, 0x40, 0x82, 0x05, 0x5a, 0x92, 0x40, 0x31, 0x66, 0xe2, 0xa5, 0x50, 0x94, 0x37, 0xe0, 0x31, 0xad, 0x66, 0x57, 0x19, 0xf0, 0x21, 0x05, 0x9d, 0x8b, 0xbf, 0x2e, 0xab, 0x40, 0x6d, 0x4a, 0x11, 0x27, 0xae, 0xd9, 0x25, 0x1f, 0xea, 0xab, 0x95, 0xa7, 0x42, 0x37, 0xbc, 0x3c, 0x2b, 0xc1, 0x2d, 0x89, 0x74, 0x6b, 0xc6, 0x76, 0xb6, 0xc4, 0xcc, 0xe9, 0x70, 0x21, 0x62, 0xe3, 0x4a, 0x8f, 0x82, 0xc2, 0x08, 0x40, 0x04, 0x29, 0x75, 0x6b, 0x57, 0xb8, 0x4d, 0x66, 0x55, 0xa6, 0x96, 0x29, 0xb9, 0x2e, 0xd7, 0x94, 0x7f, 0xa4, 0xf9, 0x9d, 0x71, 0x0f, 0x05, 0x1c, 0x4a, 0xa0, 0x56, 0xb7, 0xd5, 0x40, 0x5d, 0x4a, 0x22, 0x20, 0x72, 0x8f, 0x17, 0x3c, 0xd5, 0xaf, 0x0a, 0x6c, 0xcb, 0xd8, 0xdb, 0x35, 0x43, 0xb1, 0x3b, 0x02, 0x69, 0xc2, 0x43, 0x39, 0x38, 0x77, 0x54, 0xe8, 0x39, 0xab, 0x8b, 0x9a, 0x94, 0x52, 0xcc, 0xdd, 0xf5, 0x09, 0xb6, 0x79, 0x69, 0x59, 0x58, 0xf8, 0x79, 0x3a, 0x9b, 0x49, 0x69, 0xdd, 0xc8, 0xf9, 0x0d, 0x3d, 0xbe, 0x6c, 0x8a, 0x26, 0x0a, 0xd0, 0x52, 0x58, 0x4b, 0xe6, 0xe5, 0x15, 0xca, 0x6e, 0xe7, 0x60, 0xb9, 0x37, 0x94, 0x45, 0x45, 0x1e, 0x1d, 0x0c, 0xa1, 0xa8, 0x49, 0x79, 0x25, 0x46, 0xc0, 0x08, 0xb3, 0x32, 0x5a, 0xd0, 0x8a, 0xc9, 0x21, 0x81, 0xb2, 0x2b, 0xcf, 0x19, 0x06, 0x58, 0x27, 0x0a, 0x53, 0xd1, 0x8c, 0xba, 0x42, 0x9a, 0xe0, 0x0c, 0x4a, 0xae, 0x22, 0x82, 0xa6, 0x3d, 0x44, 0xa8, 0x0a, 0xdf, 0x87, 0xc1, 0x26, 0x55, 0xf1, 0x0f, 0x4c, 0x59, 0x43, 0xc0, 0x1d, 0xd9, 0x96, 0x4a, 0x25, 0x74, 0x49, 0x5f, 0x61, 0x5d, 0xb5, 0x88, 0x72, 0xdc, 0x61, 0x85, 0xd3, 0x7c, 0xe6, 0x73, 0x80, 0xb9, 0x97, 0x91, 0x83, 0x40, 0xf8, 0xd8, 0xbb, 0x5f, 0x0d, 0x13, 0x01, 0x0b, 0x9a, 0x2e, 0xdc, 0xaf, 0x65, 0x12, 0x82, 0x3c, 0x8c, 0x65, 0x11, 0x1a, 0xa0, 0x34, 0x62, 0x23, 0xd0, 0x47, 0x4d, 0x94, 0x6c, 0x6c, 0x51, 0x0c, 0xc1, 0xee, 0x36, 0x41, 0xea, 0x14, 0x0e, 0x8b, 0xd4, 0xc5, 0x6a, 0x85, 0x70, 0x39, 0xee, 0x3e, 0x31, 0x91, 0x82, 0x3d, 0x89, 0xa9, 0xaf, 0xa6, 0x0c, 0x19, 0xb9, 0x3d, 0xa2, 0x17, 0xf2, 0x6c, 0x48, 0x5f, 0xb9, 0xdf, 0x34, 0x0b, 0xf4, 0x16, 0xa6, 0xe7, 0x10, 0xb7, 0x33, 0x1d, 0x2c, 0x80, 0xea, 0xd4, 0x0b, 0xb5, 0x14, 0x0a, 0xac, 0x74, 0x4a, 0x90, 0x5b, 0xe7, 0x0d, 0xad, 0xce, 0xe4, 0x5f, 0x96, 0x00, 0x4a, 0x43, 0x14, 0x10, 0x25, 0x56, 0x6e, 0x34, 0x57, 0xaf, 0x11, 0x43, 0xa6, 0x0f, 0xf2, 0xbf, 0xd2, 0x64, 0x7b, 0xe3, 0x02, 0xac, 0x8d, 0x36, 0x8a, 0x7d, 0x06, 0x3c, 0x61, 0x7c, 0x1a, 0x1e, 0x01, 0xf3, 0x5c, 0x60, 0x56, 0x5a, 0xca, 0xa5, 0xea, 0x89, 0x14, 0x4a, 0x44, 0x51, 0xf1, 0xe1, 0xef, 0xd6, 0x5b, 0xbc, 0x0f, 0xce, 0x59, 0x83, 0x66, 0x07, 0x9e, 0xe2, 0xe6, 0x26, 0xda, 0x8d, 0x6c, 0x4e, 0x23, 0xa7, 0x40, 0xc4, 0x7c, 0x75, 0xca, 0x4b, 0x94, 0x44, 0xa1, 0x65, 0x94, 0x08, 0xcc, 0x6e, 0xda, 0x5a, 0xf5, 0x6d, 0x43, 0x48, 0xc3, 0x64, 0x49, 0xb1, 0x55, 0xc6, 0x61, 0xef, 0x7b, 0xe8, 0x78, 0xb5, 0x68, 0x43, 0x1b, 0x20, 0x0b, 0xd4, 0x73, 0x9e, 0x27, 0xb8, 0xd5, 0x2f, 0x66, 0x17, 0xb2, 0x58, 0x53, 0x52, 0xf1, 0x25, 0x39, 0x7a, 0x96, 0x97, 0x50, 0x0c, 0x50, 0x23, 0x2f, 0x40, 0x4a, 0x17, 0x60, 0xc8, 0x70, 0x3a, 0xcc, 0x62, 0x98, 0xc1, 0x50, 0x09, 0x13, 0x20, 0x5a, 0x03, 0x46, 0x41, 0x00, 0x31, 0x8b, 0x33, 0x73, 0x2f, 0x31, 0xb7, 0x2b, 0x9b, 0x5d, 0xc6, 0xd7, 0x7a, 0x6c, 0x55, 0x21, 0x82, 0x95, 0x98, 0xce, 0x1c, 0xfa, 0x5d, 0x86, 0xb2, 0x3e, 0x29, 0x5e, 0x53, 0xc5, 0x12, 0xc5, 0x67, 0x5c, 0x8d, 0x98, 0x8d, 0x78, 0x77, 0x57, 0x30, 0x29, 0xe4, 0x94, 0x99, 0x50, 0x26, 0x05, 0x86, 0x3a, 0x04, 0xb6, 0x5b, 0xf0, 0x44, 0xb3, 0xa8, 0xd4, 0x60, 0xba, 0xd0, 0x96, 0x44, 0x45, 0x92, 0x60, 0xa5, 0x7c, 0xe9, 0x45, 0x43, 0x51, 0x5e, 0xc8, 0x45, 0xec, 0xa4, 0xb1, 0x66, 0x38, 0x88, 0xf9, 0x4c, 0x6e, 0x18, 0xa1, 0xbe, 0x07, 0x44, 0x76, 0x26, 0x89, 0x4f, 0xf6, 0x74, 0x1e, 0x14, 0x3c, 0x59, 0x23, 0x6e, 0x07, 0xb2, 0x22, 0xa0, 0x9d, 0x89, 0x84, 0x89, 0x12, 0xc8, 0x5f, 0x4a, 0x90, 0x5c, 0x97, 0x18, 0x38, 0x78, 0x4e, 0x89, 0x30, 0x6b, 0x05, 0xb9, 0x52, 0xdd, 0x29, 0xe1, 0x36, 0xf1, 0x65, 0x6a, 0x59, 0x57, 0xb4, 0xf5, 0x36, 0xb1, 0xa7}, +{0x29, 0x29, 0x2f, 0x86, 0xae, 0x92, 0x80, 0xb5, 0xdb, 0x2a, 0x11, 0x61, 0x6c, 0x7a, 0x70, 0xe4, 0xe9, 0xd1, 0xea, 0xe1, 0xb6, 0xfa, 0x26, 0x03, 0x05, 0xa9, 0x6a, 0x3b, 0xaa, 0x66, 0xda, 0x63, 0x9a, 0xb4, 0x71, 0x49, 0xdb, 0x6f, 0x68, 0x03, 0x7d, 0x92, 0x2d, 0xc2, 0x3d, 0x55, 0x23, 0xb8, 0xb2, 0xb4, 0xab, 0x16, 0x36, 0x86, 0xb0, 0x11, 0x59, 0x12, 0xc0, 0x13, 0x2b, 0x84, 0x64, 0x7e, 0xe6, 0x3d, 0xab, 0xbb, 0x3a, 0x50, 0x12, 0xae, 0x5e, 0x0b, 0x32, 0xd9, 0x48, 0xb5, 0x82, 0xed, 0x50, 0x4b, 0xb4, 0x78, 0x19, 0xc2, 0xb7, 0xc4, 0x19, 0x86, 0x1f, 0x96, 0xc4, 0xed, 0x95, 0xb8, 0x15, 0x23, 0x4c, 0x0e, 0xb4, 0x66, 0x73, 0x0a, 0x50, 0x76, 0x03, 0xf9, 0x1b, 0xa0, 0x9a, 0xba, 0xe3, 0x8b, 0xe2, 0x0b, 0x5e, 0x6d, 0x75, 0x81, 0x8d, 0x73, 0x0b, 0xe1, 0x80, 0x33, 0x75, 0x0c, 0x32, 0xc7, 0xe6, 0xde, 0x06, 0x3a, 0xe7, 0x18, 0x8b, 0x88, 0x3e, 0x3d, 0x7c, 0xc4, 0x44, 0xaa, 0x9f, 0x16, 0x35, 0xca, 0x6b, 0x40, 0x24, 0x46, 0x29, 0xb3, 0x06, 0x8c, 0x7a, 0x02, 0x95, 0x3c, 0x10, 0x24, 0xc1, 0x3c, 0xba, 0xe5, 0x82, 0x63, 0x7f, 0xc8, 0x08, 0xc0, 0x1b, 0x36, 0x4e, 0x18, 0x89, 0x0d, 0x25, 0x12, 0xf9, 0x20, 0xac, 0x5c, 0x60, 0x11, 0x5b, 0xde, 0x7c, 0xd4, 0x66, 0xbc, 0x9b, 0xc8, 0x4d, 0x30, 0x2e, 0x64, 0x80, 0x00, 0x73, 0x79, 0x1c, 0xd8, 0x21, 0xe9, 0x25, 0xcf, 0x61, 0x54, 0x8b, 0xef, 0x0d, 0xe1, 0xc6, 0x8c, 0xaa, 0xdc, 0xde, 0xf8, 0xd3, 0x0d, 0xb4, 0x6a, 0xa9, 0x50, 0x87, 0x91, 0x5f, 0x66, 0x14, 0x91, 0x94, 0x89, 0x7a, 0x13, 0xd1, 0x1f, 0x37, 0x1e, 0xf2, 0xeb, 0xff, 0xa4, 0x94, 0xdc, 0x07, 0x69, 0x8a, 0xe5, 0x6c, 0x9d, 0xc6, 0x0b, 0x62, 0x3a, 0x4b, 0x3e, 0x73, 0xbc, 0x28, 0x60, 0xf0, 0xab, 0x5a, 0x6c, 0xfa, 0x22, 0x74, 0xb3, 0x0a, 0x3d, 0xba, 0x22, 0x48, 0x51, 0xf5, 0x5d, 0x8e, 0x6b, 0x2c, 0x46, 0x14, 0xf4, 0x62, 0x28, 0x2c, 0xa1, 0x9e, 0x3e, 0x49, 0x22, 0xd9, 0x7c, 0x59, 0xa7, 0xa0, 0x59, 0xf0, 0x18, 0x5f, 0x33, 0xd3, 0x6e, 0x57, 0x6d, 0xf4, 0xa3, 0x84, 0xdc, 0xb2, 0xea, 0xb6, 0xaa, 0x3c, 0xe2, 0x07, 0xda, 0xe2, 0x5e, 0x74, 0xb9, 0x86, 0x06, 0x6b, 0x18, 0xfe, 0x6c, 0x1a, 0x3c, 0x61, 0x89, 0x7b, 0x58, 0x65, 0x96, 0xc8, 0x58, 0x9a, 0x15, 0xa8, 0x64, 0x89, 0xfb, 0xdc, 0x9e, 0x80, 0x5b, 0x1c, 0x33, 0x56, 0xe4, 0x93, 0x74, 0xe7, 0x25, 0x69, 0x0a, 0xa0, 0x93, 0x54, 0x1d, 0xaa, 0x20, 0x6f, 0xad, 0x1d, 0x03, 0xfa, 0x2c, 0xba, 0x66, 0x12, 0xf6, 0xeb, 0x03, 0xe8, 0x59, 0x3a, 0x1e, 0xd7, 0x9b, 0x2d, 0x2c, 0x32, 0xeb, 0x6c, 0x35, 0x89, 0x1b, 0xf2, 0xa7, 0x18, 0x53, 0xea, 0x51, 0xea, 0x49, 0xaa, 0x5f, 0x8e, 0x99, 0x64, 0x49, 0xd0, 0x99, 0xd8, 0x43, 0x44, 0xa6, 0x98, 0x94, 0x43, 0xe7, 0x4f, 0x17, 0x97, 0x39, 0xf6, 0x95, 0xc6, 0x56, 0x5a, 0x08, 0x32, 0x5a, 0x6a, 0xc0, 0x99, 0x07, 0xbb, 0x46, 0x14, 0x7d, 0x8e, 0xc7, 0x83, 0xda, 0x39, 0xd2, 0xb2, 0xdf, 0xde, 0x07, 0x45, 0xf6, 0xc9, 0x4d, 0x5f, 0x91, 0x57, 0x8a, 0x73, 0x10, 0x77, 0x97, 0x9c, 0x74, 0x02, 0xa2, 0x18, 0x40, 0x60, 0xa1, 0xba, 0xd1, 0xdc, 0xd8, 0x2c, 0x4f, 0xcb, 0x10, 0x41, 0x76, 0x2d, 0x16, 0x5c, 0x6e, 0x38, 0xa2, 0xca, 0x4c, 0x3e, 0xa3, 0x56, 0xd2, 0x61, 0x9d, 0x15, 0x77, 0x69, 0xc7, 0xc2, 0xb2, 0xcb, 0x19, 0x9f, 0xa3, 0x46, 0xd3, 0xa8, 0x01, 0x2a, 0x72, 0xdb, 0xa7, 0xd4, 0x44, 0x58, 0x0c, 0x8e, 0x91, 0x1d, 0xdb, 0x32, 0xd8, 0xfd, 0x3f, 0x66, 0xe8, 0xc9, 0xe1, 0xb3, 0x26, 0x47, 0x28, 0x28, 0xa3, 0x8b, 0x51, 0xe2, 0x31, 0x90, 0x95, 0x73, 0xe0, 0xa0, 0xec, 0x08, 0xc5, 0xd6, 0xb4, 0x4b, 0xca, 0x6c, 0x80, 0x87, 0xe1, 0x37, 0xb7, 0x4f, 0x46, 0x0d, 0xaf, 0x4f, 0x1f, 0x09, 0x6c, 0xfa, 0x97, 0xb5, 0x67, 0xc8, 0xf1, 0x0c, 0x41, 0x35, 0xbc, 0xd5, 0xd4, 0xb1, 0x2e, 0xd5, 0x11, 0x5e, 0xd5, 0xb8, 0x02, 0xd3, 0x3e, 0x89, 0xcf, 0x95, 0xee, 0xca, 0xfb, 0x94, 0xb8, 0xb6, 0x87, 0x87, 0x36, 0x1c, 0xfe, 0x49, 0x46, 0x00, 0x54, 0x28, 0x4a, 0x46, 0x59, 0xe8, 0xd3, 0xab, 0x05, 0xdc, 0x66, 0x42, 0x2d, 0x44, 0x29, 0xb1, 0xd1, 0x8a, 0xaa, 0x82, 0xc5, 0x95, 0xd7, 0xdf, 0xdd, 0x16, 0x21, 0x83, 0x3c, 0x96, 0x4a, 0x8c, 0x54, 0xcc, 0x50, 0x87, 0x40, 0x60, 0x3e, 0xa5, 0x89, 0xc2, 0x3d, 0xab, 0x93, 0x3d, 0x80, 0xc2, 0x94, 0x95, 0x17, 0xe0, 0x9c, 0x90, 0x62, 0x85, 0xd3, 0x82, 0x4e, 0x62, 0x80, 0xd3, 0xca, 0x0e, 0xd4, 0x01, 0x61, 0x0a, 0x6a, 0xd0, 0x09, 0x4b, 0x32, 0x9e, 0x5e, 0x29, 0x1d, 0x4e, 0x7a, 0xb2, 0xae, 0x41, 0xdd, 0xd3, 0xf7, 0x21, 0xd9, 0xf1, 0x65, 0x64, 0x03, 0x73, 0xc0, 0xd6, 0x7d, 0x5f, 0xdf, 0x64, 0xfc, 0x78, 0xb5, 0x54, 0x29, 0x8e, 0x2c, 0x48, 0xc8, 0xc9, 0xe5, 0x94, 0x13, 0xa1, 0x67, 0x14, 0x41, 0xf4, 0x6b, 0x50, 0x46, 0x05, 0xc9, 0x30, 0x7c, 0x45, 0xb1, 0x91, 0xb3, 0x34, 0x21, 0x25, 0x5e, 0x44, 0x9a, 0x9b, 0x3a, 0x43, 0x70, 0x35, 0x71, 0x2e, 0x9f, 0xc3, 0x4f, 0xed, 0x68, 0x5b, 0x21, 0x14, 0xb0, 0x79, 0xd5, 0x00, 0x6c, 0xe4, 0x9c, 0x04, 0x4d, 0xd4, 0x4e, 0x8e, 0x42, 0x60, 0x52, 0x43, 0xbc, 0x86, 0x01, 0x56, 0x63, 0x1a, 0x94, 0xd6, 0x6a, 0x15, 0x21, 0x2f, 0x53, 0x49, 0x9d, 0x71, 0xb2, 0x67, 0x52, 0xb8, 0xcd, 0x90, 0x19, 0xce, 0x28, 0xcd, 0x21, 0x94, 0x82, 0x2b, 0x76, 0x8b, 0x1c, 0xe3, 0x8f, 0xf9, 0x4b, 0xb8, 0x96, 0xd8, 0xfb, 0xd7, 0x58, 0x9b, 0xdf, 0x1b, 0x47, 0x92, 0x09, 0x81, 0x51, 0x0a, 0xe2, 0xb7, 0x81, 0xfe, 0x3c, 0x53, 0x5f, 0x03, 0xd1, 0xb8, 0xb4, 0x26, 0xaa, 0x03, 0x89, 0x7a, 0x97, 0xb9, 0xfd, 0xb0, 0x6a, 0x48, 0xb2, 0x24, 0x55, 0x4e, 0x59, 0xeb, 0x5b, 0x0a, 0x2a, 0x0b, 0xb8, 0x27, 0x7f, 0x92, 0x08, 0xa3, 0xdc, 0x4a, 0x20, 0x7d, 0x82, 0xd9, 0x1a, 0x57, 0x32, 0x85, 0x03, 0x2f, 0xb6, 0x83, 0x87, 0x1d, 0x2e, 0x94, 0x40, 0xb2, 0xa5, 0x63, 0xd0, 0x39, 0x85, 0x8b, 0xe7, 0xb8, 0xd3, 0x82, 0x4a, 0xe4, 0x18, 0x5c, 0xd5, 0x92, 0x36, 0x7c, 0x1b, 0x95, 0x49, 0xb1, 0xbc, 0x3a, 0x77}, +{0xab, 0x07, 0x71, 0xb1, 0x56, 0x2a, 0x8a, 0x06, 0xdf, 0xcc, 0xd1, 0xcc, 0xad, 0x04, 0x76, 0x17, 0x45, 0x9b, 0xa4, 0xc1, 0x62, 0x60, 0xe8, 0xa2, 0x62, 0xa6, 0x2d, 0x09, 0x3e, 0x27, 0x90, 0x61, 0x51, 0x25, 0x26, 0x09, 0x2c, 0x2c, 0x64, 0x83, 0xf5, 0x73, 0x83, 0x17, 0x41, 0xb2, 0x35, 0x98, 0x4d, 0x67, 0x95, 0xcd, 0x10, 0x76, 0x42, 0xa9, 0xad, 0x2e, 0xc8, 0x71, 0x8e, 0xdd, 0x0d, 0xd6, 0xc6, 0xb0, 0xa3, 0x08, 0x12, 0x8b, 0x22, 0x61, 0xb3, 0x9b, 0x74, 0x0c, 0x8c, 0x44, 0xa5, 0x80, 0x36, 0xe4, 0x58, 0x3a, 0xba, 0x91, 0x5b, 0x33, 0x29, 0xe6, 0x92, 0xe4, 0xea, 0x29, 0x62, 0x80, 0x99, 0x90, 0x21, 0x82, 0x85, 0x2b, 0x72, 0x55, 0x73, 0x7f, 0x5d, 0xc1, 0x83, 0x06, 0x8a, 0x8c, 0x71, 0xae, 0xa5, 0xd9, 0x6d, 0xd1, 0x2a, 0xe0, 0xa3, 0xf7, 0x27, 0xb6, 0xc8, 0x8c, 0x65, 0xa2, 0x5c, 0x45, 0x07, 0x31, 0x12, 0x2c, 0x40, 0x4b, 0xda, 0x01, 0xbc, 0x28, 0xb5, 0x2b, 0x30, 0x59, 0x4a, 0x22, 0x83, 0xb3, 0xd2, 0x1f, 0xfa, 0x96, 0x88, 0xb2, 0x82, 0xd7, 0xba, 0xdb, 0xcb, 0x58, 0x40, 0x98, 0x1e, 0x8a, 0x8b, 0xa2, 0xd6, 0x33, 0xb2, 0x12, 0xf1, 0x91, 0x52, 0x90, 0xa3, 0xea, 0x06, 0x35, 0x78, 0x6c, 0x6a, 0x63, 0x7f, 0x92, 0xf6, 0x15, 0x44, 0xe0, 0x80, 0x96, 0x93, 0x9e, 0xb2, 0x71, 0x41, 0x85, 0xfe, 0xa8, 0x85, 0x99, 0xcc, 0x7c, 0xbd, 0xa7, 0x48, 0x7f, 0x11, 0xca, 0xb5, 0x85, 0x62, 0x1f, 0xda, 0xe2, 0x33, 0x34, 0x1e, 0xa2, 0x86, 0xe5, 0x80, 0x1a, 0x09, 0x0c, 0x76, 0x98, 0xa7, 0x99, 0xae, 0xcd, 0x51, 0x35, 0x8d, 0x7d, 0x76, 0x11, 0xe5, 0x54, 0x61, 0x86, 0x2f, 0xa9, 0x00, 0xfe, 0xa9, 0x4b, 0xdd, 0x78, 0x80, 0xfb, 0x09, 0xbf, 0x34, 0x5e, 0xf8, 0xd3, 0x95, 0xf8, 0x3c, 0x77, 0xc7, 0x5e, 0x5b, 0x88, 0x28, 0x7f, 0x64, 0xec, 0xe1, 0x35, 0x65, 0x78, 0x79, 0x03, 0x03, 0x80, 0xc9, 0x81, 0xa8, 0x41, 0xc0, 0x03, 0x06, 0xf0, 0x88, 0x6c, 0x1a, 0x67, 0x66, 0x12, 0x2b, 0xc6, 0x4a, 0x43, 0xca, 0xea, 0x66, 0xeb, 0xbb, 0x30, 0x97, 0x52, 0x48, 0xec, 0xfa, 0x81, 0x16, 0x66, 0xc9, 0xd2, 0x0d, 0x60, 0x9c, 0x3e, 0x60, 0xb1, 0x92, 0x2a, 0x25, 0xd3, 0xf9, 0x49, 0xab, 0x67, 0xa9, 0x15, 0xe0, 0xb6, 0x05, 0x5f, 0xcf, 0x33, 0xf1, 0xa9, 0x6c, 0x02, 0xf3, 0xdb, 0xaf, 0x29, 0x08, 0x02, 0xa9, 0xac, 0x10, 0x4c, 0x48, 0xac, 0x31, 0x75, 0x3e, 0x2e, 0xf0, 0x43, 0x0c, 0x0c, 0x46, 0xb2, 0xe6, 0xfd, 0x1a, 0x86, 0x42, 0x42, 0xa4, 0x8f, 0x03, 0x66, 0x04, 0x68, 0x65, 0x2d, 0x68, 0xdb, 0x90, 0x6b, 0x91, 0x55, 0x82, 0xac, 0x2e, 0x04, 0x9b, 0xa2, 0xb8, 0x4d, 0x1a, 0x53, 0x54, 0xdb, 0x75, 0x0e, 0x89, 0x04, 0x62, 0xc2, 0xe9, 0x95, 0x4d, 0xea, 0xc9, 0x44, 0x71, 0xd3, 0x59, 0x5e, 0xe5, 0x04, 0x4c, 0x56, 0x54, 0xac, 0x9a, 0x91, 0x96, 0x16, 0x12, 0xd5, 0x00, 0x75, 0x29, 0xe9, 0xf4, 0x30, 0x7a, 0x14, 0x5c, 0xcb, 0x23, 0xcc, 0x83, 0x48, 0x7c, 0x77, 0xd8, 0xe9, 0xdc, 0x4b, 0xf5, 0x6e, 0x34, 0xfc, 0x25, 0x71, 0x34, 0x57, 0x1e, 0x02, 0xae, 0x00, 0x64, 0x13, 0xb2, 0x99, 0x56, 0x37, 0xc8, 0x0e, 0x91, 0xff, 0xd6, 0x69, 0x8f, 0x47, 0x40, 0xe9, 0x3a, 0xca, 0xbd, 0x0b, 0x85, 0x32, 0x09, 0xe5, 0x14, 0x5c, 0x1d, 0xa8, 0x06, 0xf6, 0xf9, 0x00, 0x0f, 0x34, 0x6e, 0x0c, 0xe6, 0xf6, 0xd8, 0x30, 0x20, 0xc7, 0x7c, 0xa7, 0x68, 0xbc, 0xa5, 0x45, 0x92, 0x32, 0xc5, 0x44, 0x2d, 0xb0, 0x72, 0x52, 0x23, 0x92, 0x2d, 0xda, 0x33, 0x02, 0x62, 0xcd, 0xe4, 0x31, 0xe9, 0x39, 0x8a, 0x8a, 0x7d, 0x08, 0xce, 0x12, 0x75, 0x4d, 0x8f, 0xbc, 0xd7, 0xaf, 0x25, 0x8e, 0xab, 0xa1, 0xfe, 0x66, 0x18, 0xf1, 0x16, 0x76, 0xcd, 0x84, 0xb2, 0xf8, 0xbc, 0xbc, 0xc5, 0x0c, 0x51, 0xab, 0x5c, 0x46, 0x9d, 0x73, 0x28, 0x8e, 0x96, 0xd7, 0x34, 0x0d, 0xde, 0x65, 0x7f, 0x40, 0x38, 0x14, 0x06, 0xae, 0xd3, 0x89, 0xab, 0x48, 0x58, 0x43, 0xf2, 0x15, 0x35, 0xc0, 0x03, 0x2c, 0x1f, 0xd8, 0x89, 0x91, 0xab, 0x2e, 0x72, 0x98, 0x2c, 0x29, 0x3f, 0x78, 0xc5, 0x74, 0x67, 0x9f, 0x28, 0xf7, 0x86, 0xd3, 0x1a, 0x0b, 0x3a, 0x69, 0xf9, 0x03, 0x0a, 0x3a, 0xa3, 0x48, 0x44, 0xe4, 0x67, 0xa4, 0xea, 0x53, 0x86, 0x8b, 0x23, 0xd2, 0xc2, 0xe8, 0x17, 0x13, 0x0c, 0xf0, 0xf5, 0x54, 0x31, 0x3a, 0x1a, 0x2d, 0x57, 0x46, 0xbc, 0xfd, 0x50, 0xff, 0xed, 0x8e, 0x37, 0xe1, 0x40, 0x20, 0x49, 0x16, 0xa9, 0xa5, 0x24, 0xbc, 0x9c, 0x22, 0x8e, 0x00, 0x6a, 0xee, 0xf6, 0x93, 0xa2, 0x27, 0x2f, 0xb7, 0x58, 0xac, 0x4b, 0x83, 0x13, 0xd9, 0x8a, 0xb5, 0x6d, 0xa8, 0x0e, 0x12, 0x27, 0xf2, 0x46, 0x35, 0x01, 0x57, 0xe6, 0x4f, 0xb2, 0xde, 0x0e, 0x22, 0xab, 0xa7, 0xd3, 0x4a, 0x3b, 0x8a, 0x48, 0xbb, 0x1d, 0x02, 0x28, 0x93, 0x0d, 0x04, 0xa7, 0x66, 0x4a, 0x23, 0xd6, 0x49, 0xbf, 0x84, 0x67, 0x1e, 0x50, 0xc5, 0x0d, 0x13, 0x9f, 0xcc, 0xcf, 0xb4, 0xac, 0x2e, 0x97, 0xb6, 0xd1, 0x8d, 0x61, 0xc7, 0x0e, 0x39, 0xbf, 0x89, 0x80, 0xf1, 0x39, 0xa5, 0x32, 0x4b, 0x65, 0x12, 0xf3, 0x23, 0xd1, 0x0e, 0x28, 0x94, 0x74, 0x32, 0xee, 0xc5, 0x0d, 0x85, 0x86, 0xcf, 0x85, 0x01, 0x7e, 0x4a, 0x28, 0x51, 0xfb, 0xdb, 0x5f, 0x42, 0xb7, 0x91, 0x23, 0xa0, 0x6a, 0xf0, 0x55, 0x65, 0xc6, 0x48, 0xfa, 0x84, 0x37, 0xb6, 0x35, 0xba, 0x0d, 0x69, 0x98, 0x72, 0xdd, 0x1b, 0xf4, 0x8e, 0x22, 0xe2, 0xfe, 0x71, 0x82, 0x90, 0xc0, 0xf6, 0xbb, 0xb4, 0x5a, 0x92, 0xed, 0xee, 0x7b, 0xe5, 0xfd, 0x32, 0x13, 0xf6, 0xac, 0x59, 0xd2, 0x89, 0x0a, 0xa3, 0x91, 0x08, 0xdd, 0x4a, 0x9a, 0x52, 0x1d, 0x5b, 0xa0, 0x5a, 0xc6, 0x04, 0xd0, 0xbe, 0xae, 0x25, 0x35, 0xc4, 0xcb, 0x51, 0x0e, 0x3a, 0xae, 0xd4, 0xd1, 0x5d, 0xf2, 0x1a, 0x8b, 0xed, 0xf0, 0xc6, 0x23, 0xd9, 0x2b, 0xb1, 0x6c, 0xff, 0x2b, 0x29, 0xaa, 0x7b, 0x90, 0x17, 0x25, 0xa0, 0x3f, 0x3d, 0x08, 0x49, 0x52, 0x0d, 0x98, 0x89, 0x56, 0x31, 0x71, 0xa7, 0x93, 0x9a, 0xe9, 0x71, 0x98, 0x01, 0x8e, 0xc1, 0x07, 0x4e, 0x80, 0xb2, 0x39, 0x54, 0x87, 0xe7, 0x7e, 0x1d, 0x7b, 0x62, 0xca, 0xdd, 0xe4, 0xd7, 0x51, 0xa0}, +{0xe5, 0x6c, 0xde, 0x49, 0xd1, 0x1a, 0x5f, 0xe1, 0x05, 0xa7, 0xe3, 0x86, 0x8a, 0x09, 0x55, 0xcb, 0x3f, 0x14, 0xf0, 0xe4, 0x46, 0x49, 0xa0, 0xa1, 0xf5, 0xda, 0x2d, 0x83, 0x62, 0xd3, 0x89, 0xa0, 0x58, 0x12, 0x6c, 0x7b, 0x41, 0x63, 0xe5, 0x5b, 0x34, 0x76, 0x92, 0x21, 0x63, 0x30, 0x1d, 0xc4, 0x55, 0x22, 0xd4, 0xd9, 0x94, 0x7e, 0x0c, 0x6a, 0x20, 0x8d, 0xd2, 0x81, 0xa3, 0x0e, 0xba, 0x54, 0x15, 0xeb, 0xa7, 0x6e, 0x6a, 0x65, 0x8c, 0x44, 0xac, 0x12, 0x57, 0x04, 0xa7, 0x91, 0x99, 0x4e, 0x28, 0xfc, 0x54, 0xa9, 0x94, 0xc6, 0xb6, 0x16, 0x94, 0x74, 0x86, 0x79, 0xda, 0x25, 0x79, 0x19, 0x8e, 0x9f, 0x05, 0xcc, 0xd2, 0xf2, 0xe5, 0x62, 0x94, 0xbc, 0x21, 0xfe, 0xd8, 0xf0, 0x1e, 0x37, 0xd5, 0x88, 0xea, 0x83, 0xd6, 0x6c, 0x15, 0x69, 0xc1, 0x05, 0x76, 0x19, 0xa1, 0x3c, 0xb4, 0x53, 0xdf, 0x52, 0x4f, 0x86, 0x81, 0x57, 0x52, 0x5c, 0xdb, 0x7a, 0x72, 0x43, 0x62, 0x93, 0x73, 0xc8, 0x40, 0x28, 0x76, 0x46, 0x29, 0x3e, 0xc4, 0x6e, 0x30, 0x4a, 0xfa, 0x5a, 0xe1, 0x27, 0xd5, 0x2d, 0x1c, 0x84, 0x29, 0x4e, 0x11, 0x0c, 0xa2, 0x75, 0xdc, 0x84, 0x6f, 0xda, 0x7d, 0x12, 0x6f, 0xc8, 0x08, 0x8b, 0xe6, 0xe2, 0x7c, 0x40, 0x17, 0x9b, 0x24, 0xe7, 0xe7, 0x48, 0x34, 0xff, 0x93, 0x78, 0xf5, 0x61, 0xb4, 0x93, 0x82, 0x29, 0xf2, 0x3b, 0xc0, 0x89, 0x9f, 0x53, 0x03, 0xea, 0x41, 0x35, 0x84, 0xad, 0x33, 0xc3, 0xb9, 0xd5, 0xa6, 0x65, 0x26, 0x8e, 0x6b, 0x1c, 0x88, 0xac, 0x79, 0x18, 0x34, 0x04, 0xa8, 0x31, 0x4a, 0x3e, 0x0d, 0x16, 0x90, 0xa9, 0x26, 0x84, 0x04, 0x0a, 0xcb, 0x45, 0x8e, 0xf1, 0x94, 0x6e, 0x91, 0x8f, 0xc6, 0xec, 0xaa, 0xbe, 0xdd, 0x53, 0xe6, 0x8a, 0x00, 0xa5, 0xc4, 0xc6, 0x06, 0x3a, 0x27, 0x7f, 0x79, 0x84, 0x11, 0x0d, 0x8e, 0x0d, 0xa2, 0x19, 0xc1, 0xdd, 0xaa, 0xef, 0x5f, 0x83, 0x78, 0x03, 0xf9, 0x65, 0x36, 0x25, 0x43, 0x27, 0xce, 0xd9, 0x27, 0x38, 0x64, 0x0f, 0xa2, 0x8f, 0x2e, 0x3f, 0x9b, 0x9c, 0x83, 0x86, 0x0b, 0xc9, 0x03, 0xb6, 0xe3, 0xef, 0x8b, 0x49, 0x36, 0x41, 0x52, 0xda, 0x46, 0x3a, 0x2e, 0x26, 0xb7, 0xfa, 0xd5, 0x62, 0xd6, 0xb2, 0xa9, 0x20, 0x86, 0x1d, 0x3a, 0x11, 0xdc, 0x40, 0xa4, 0x0d, 0x69, 0x28, 0x36, 0xff, 0xc8, 0x69, 0x7e, 0xc9, 0xf3, 0x9b, 0x43, 0xd1, 0xb3, 0x15, 0x19, 0x79, 0x03, 0x0c, 0x60, 0x86, 0x1b, 0x43, 0xce, 0x18, 0xfd, 0x65, 0x5c, 0x12, 0x09, 0x7d, 0xd9, 0x78, 0x05, 0x0c, 0xcf, 0x81, 0x31, 0x80, 0x4c, 0x7e, 0x85, 0x31, 0xc0, 0xcb, 0x74, 0x9e, 0x8d, 0x09, 0x1c, 0x2a, 0x79, 0x00, 0x20, 0x71, 0x40, 0x00, 0x8d, 0xfe, 0x1a, 0x16, 0xd0, 0x33, 0x85, 0x6f, 0xd9, 0xa2, 0x7f, 0xb9, 0x19, 0xc4, 0x6d, 0xf1, 0xb1, 0xbb, 0x10, 0x7a, 0x77, 0x57, 0xd5, 0xa4, 0x62, 0x52, 0x24, 0x6b, 0x0a, 0xfd, 0x1a, 0xdc, 0xfc, 0x82, 0x9d, 0x92, 0xae, 0x75, 0xf7, 0x8c, 0x28, 0x7e, 0x9c, 0x06, 0xc1, 0x35, 0x2c, 0xbb, 0xd6, 0x8a, 0x37, 0x40, 0xf8, 0xc9, 0x40, 0x6f, 0x86, 0x65, 0x17, 0xe9, 0x9e, 0x4a, 0x4d, 0xcf, 0x3e, 0x0b, 0x5e, 0x91, 0x38, 0x9c, 0xd1, 0x2f, 0x03, 0x91, 0xc8, 0x3a, 0x58, 0xc4, 0x12, 0x20, 0xcc, 0xfc, 0x14, 0xd2, 0x03, 0xc6, 0x22, 0xc5, 0xa2, 0x43, 0xfa, 0x52, 0x0b, 0x48, 0xd2, 0x90, 0x2a, 0x67, 0x9b, 0xec, 0x73, 0x8b, 0x09, 0x73, 0x31, 0xeb, 0x2d, 0xfa, 0x08, 0x02, 0xc0, 0xa0, 0x25, 0x82, 0xe4, 0xa6, 0xd1, 0x50, 0xcd, 0x96, 0xda, 0x65, 0xaf, 0x7a, 0x1b, 0x4c, 0xa0, 0x10, 0xa0, 0x0f, 0x82, 0x60, 0xb2, 0x94, 0x4a, 0xe9, 0x13, 0x66, 0x25, 0xa3, 0xa5, 0x2c, 0x38, 0xa8, 0xc8, 0x7f, 0xd4, 0xcd, 0xa2, 0x03, 0x52, 0x44, 0x58, 0xe1, 0x5d, 0x9c, 0x86, 0xe5, 0x76, 0x69, 0x3f, 0x5c, 0xd2, 0x73, 0x29, 0xd0, 0xb7, 0x98, 0x05, 0xf5, 0x5a, 0x62, 0x5d, 0xa1, 0xbc, 0x50, 0xb8, 0xf2, 0x86, 0x5e, 0xac, 0x7b, 0xe4, 0xb8, 0x21, 0xbc, 0x06, 0x92, 0x08, 0x51, 0xb2, 0x97, 0xc8, 0x79, 0xb9, 0x91, 0xee, 0x50, 0xfb, 0x3a, 0x86, 0xac, 0xdb, 0x1b, 0xa3, 0xc9, 0xfd, 0x59, 0x31, 0x70, 0x89, 0x71, 0x4a, 0xbc, 0xf2, 0x59, 0x21, 0x1b, 0x9d, 0x74, 0xcc, 0xc4, 0x4b, 0x0d, 0xa5, 0x5e, 0xc4, 0x8a, 0x5d, 0x4a, 0xd6, 0x0f, 0x7e, 0x73, 0xd0, 0xec, 0x95, 0x5b, 0x67, 0xbe, 0x31, 0x1b, 0x7e, 0x1f, 0xb9, 0xe3, 0x20, 0x77, 0x4b, 0x88, 0x32, 0x37, 0x6d, 0x1e, 0x34, 0xe5, 0x61, 0xa1, 0x6c, 0x23, 0xe3, 0xb3, 0x7f, 0x52, 0x4b, 0xbe, 0x88, 0xe8, 0x14, 0x2e, 0x46, 0x8c, 0x29, 0x1c, 0xdc, 0x79, 0x44, 0xa5, 0x27, 0xba, 0x9b, 0xfd, 0x80, 0x21, 0x09, 0xac, 0x3e, 0x2f, 0x3a, 0x7a, 0xae, 0x3c, 0x46, 0xdd, 0x63, 0x01, 0xe2, 0x10, 0xf9, 0xaf, 0xdc, 0xdd, 0x3e, 0x79, 0x97, 0x49, 0x83, 0xe9, 0xd5, 0x1f, 0x16, 0xdf, 0xf9, 0xa7, 0xc8, 0xa7, 0xa5, 0x2b, 0x95, 0x38, 0x7c, 0xa5, 0xcd, 0xc4, 0xd1, 0x7d, 0xc8, 0xa5, 0xff, 0x5d, 0x4e, 0x08, 0xc8, 0x10, 0x7d, 0x65, 0x14, 0x03, 0x55, 0xb6, 0x99, 0x35, 0xde, 0xca, 0xa1, 0xd3, 0x56, 0xea, 0x6f, 0xf1, 0xa4, 0xa2, 0x97, 0x2e, 0x61, 0x05, 0x28, 0x26, 0xde, 0xe7, 0x61, 0x28, 0x4e, 0x29, 0xd6, 0x2c, 0x8b, 0x66, 0x14, 0x43, 0x7b, 0x4e, 0xf5, 0x14, 0x1f, 0xe1, 0x5a, 0x6a, 0xc9, 0x51, 0xe4, 0x3e, 0x35, 0xa6, 0xb4, 0x10, 0x57, 0x90, 0x61, 0x92, 0x19, 0xd6, 0x65, 0x4e, 0x38, 0x5d, 0x6c, 0x24, 0x6d, 0x91, 0xdc, 0x00, 0x9e, 0x51, 0x0b, 0x4c, 0x2d, 0xaa, 0x25, 0x75, 0xf8, 0x83, 0x75, 0xc0, 0x0c, 0x69, 0x1a, 0x8e, 0x5b, 0xed, 0x4b, 0xb6, 0xcb, 0xa1, 0x6a, 0x2b, 0x12, 0xc0, 0x71, 0x6b, 0xd5, 0x45, 0x30, 0x85, 0xe0, 0xc9, 0x06, 0x0d, 0x29, 0x05, 0xe8, 0x0d, 0xca, 0x7a, 0xd0, 0x88, 0x0a, 0xde, 0x90, 0x7b, 0xa8, 0xf5, 0x21, 0x75, 0x0c, 0x58, 0x1a, 0xc7, 0xe9, 0x6a, 0x0b, 0x45, 0x2f, 0x83, 0x59, 0xba, 0xc6, 0x35, 0x88, 0x16, 0x35, 0x80, 0x89, 0xa1, 0xac, 0xdb, 0x00, 0xe9, 0x55, 0x22, 0x3e, 0x1a, 0x01, 0xd0, 0xf3, 0x48, 0xdb, 0x6a, 0x14, 0x01, 0xd5, 0x11, 0xf4, 0xe5, 0x3e, 0x42, 0xa9, 0xe4, 0x21, 0x87, 0xd5, 0xc6, 0x23, 0x1b, 0xa3, 0x3b, 0x25, 0xab, 0x6c, 0x1b}, +{0x94, 0x9c, 0x06, 0x71, 0x2e, 0xe5, 0x4c, 0x78, 0xe1, 0x05, 0x63, 0xab, 0x1d, 0xa0, 0xca, 0xe9, 0x5a, 0x03, 0x7c, 0xd9, 0xaa, 0xb8, 0x61, 0xdd, 0x12, 0x03, 0x36, 0x30, 0xe1, 0x4b, 0x2b, 0x79, 0xc3, 0xe5, 0x91, 0xf3, 0x04, 0x94, 0xa2, 0x4d, 0xa1, 0x9e, 0xbd, 0xe2, 0x76, 0xb7, 0xb7, 0xe0, 0xba, 0xc9, 0xe2, 0x8c, 0xe1, 0x28, 0x79, 0x21, 0x1f, 0x4f, 0x35, 0xbb, 0x9b, 0x40, 0x3a, 0x11, 0x16, 0x20, 0xfa, 0x79, 0xe9, 0x6c, 0x6f, 0xaa, 0x96, 0xc7, 0x47, 0x10, 0xaf, 0x13, 0x94, 0xa5, 0x46, 0xb7, 0x48, 0x42, 0x99, 0xd3, 0x3e, 0x59, 0x8e, 0x4e, 0x92, 0xfc, 0xd6, 0xb1, 0xab, 0xca, 0x72, 0x6d, 0x9d, 0x42, 0x95, 0x16, 0xd4, 0x7c, 0x79, 0xeb, 0xc2, 0x0b, 0xb7, 0x8e, 0x05, 0x85, 0x5a, 0x8e, 0x55, 0x96, 0x6a, 0x00, 0x62, 0x9d, 0xcd, 0x04, 0x41, 0x42, 0xb4, 0xb1, 0x2c, 0x2d, 0xff, 0x98, 0xf4, 0xc6, 0x2c, 0x80, 0x53, 0x6c, 0xd2, 0x24, 0x1e, 0x65, 0x6e, 0x88, 0x8e, 0x84, 0xa3, 0x4a, 0x4c, 0x8c, 0x81, 0xa3, 0x55, 0xe4, 0x5d, 0x37, 0x2b, 0xe1, 0x51, 0xd3, 0x7c, 0xad, 0x0f, 0xa6, 0x8b, 0x31, 0x28, 0x79, 0x61, 0x69, 0xb9, 0x02, 0x10, 0x39, 0xe9, 0x8e, 0x59, 0x33, 0x9c, 0x9c, 0x59, 0x0d, 0x18, 0x6c, 0xdd, 0x40, 0xb2, 0x36, 0xe2, 0x0e, 0x88, 0xf4, 0x99, 0x55, 0x07, 0x2d, 0x86, 0x05, 0xc3, 0x19, 0xed, 0x17, 0xef, 0x06, 0x1d, 0xa6, 0x6a, 0x64, 0x14, 0xd6, 0xc6, 0x0e, 0xf3, 0xc8, 0xd5, 0xf8, 0x43, 0x8c, 0x0c, 0xa9, 0xcb, 0xf6, 0x84, 0x8d, 0x05, 0x28, 0xb3, 0xe7, 0x66, 0x11, 0x48, 0xfd, 0x14, 0x02, 0xe0, 0x01, 0x31, 0x67, 0x9c, 0xac, 0xde, 0x81, 0xde, 0x6b, 0x6b, 0xd6, 0x6a, 0x8f, 0x8d, 0x7a, 0x48, 0x36, 0xe2, 0xa7, 0x85, 0x54, 0x7d, 0x23, 0x6b, 0xe6, 0x6c, 0x60, 0xea, 0x01, 0x72, 0xf4, 0xa2, 0xb3, 0xee, 0x1a, 0x81, 0xf4, 0x5e, 0x85, 0x4a, 0xe9, 0x58, 0x9d, 0x78, 0xd2, 0x05, 0x0b, 0xcb, 0xd7, 0xa6, 0x66, 0xde, 0xd6, 0xae, 0x3e, 0x25, 0x8c, 0x86, 0xc1, 0xd0, 0x10, 0xbb, 0xd0, 0x5c, 0x09, 0x86, 0xa9, 0x4d, 0xb6, 0x8e, 0x04, 0xc0, 0x53, 0x6c, 0x18, 0x85, 0x8d, 0x5d, 0x92, 0x8b, 0xfd, 0x88, 0x18, 0xc3, 0xa6, 0xa1, 0xcc, 0x9e, 0xaa, 0x51, 0x12, 0xf4, 0x56, 0x27, 0xa0, 0x06, 0x0c, 0x8f, 0xf7, 0xe1, 0xba, 0x71, 0x0e, 0x3c, 0x61, 0x45, 0x25, 0xb4, 0x72, 0x7f, 0xcd, 0xe3, 0xb9, 0x59, 0x8d, 0x28, 0x94, 0x00, 0xd9, 0xfb, 0x58, 0x8a, 0x70, 0x3f, 0x90, 0xd0, 0xaa, 0x04, 0x68, 0x3c, 0xbb, 0x47, 0xa5, 0x46, 0x93, 0x53, 0xe5, 0x69, 0x9b, 0xc3, 0x7d, 0x40, 0xef, 0xb1, 0x64, 0xa8, 0x0d, 0x63, 0x66, 0x30, 0x78, 0x15, 0x13, 0xda, 0x37, 0x16, 0xb6, 0x11, 0x20, 0xae, 0x93, 0x08, 0x57, 0x33, 0xf9, 0x4b, 0xc0, 0x88, 0x80, 0xe0, 0x69, 0x1e, 0xa8, 0xc3, 0xe1, 0x72, 0x5a, 0x02, 0x3d, 0x2f, 0xb5, 0x93, 0x3b, 0x85, 0x5d, 0xd6, 0x0d, 0x8c, 0xec, 0x8c, 0xf4, 0xd6, 0x2c, 0x2b, 0x38, 0xe8, 0x70, 0x00, 0x3d, 0x60, 0x03, 0x74, 0xe0, 0xf5, 0xa8, 0x24, 0xad, 0x66, 0xb6, 0xcf, 0x57, 0xf1, 0x43, 0x66, 0xbc, 0xd1, 0x8e, 0x33, 0x72, 0xd8, 0x24, 0xb3, 0xe4, 0x44, 0xc6, 0x4b, 0x58, 0xbe, 0x19, 0x25, 0x4d, 0x75, 0xc7, 0xc8, 0x71, 0x93, 0x06, 0x1e, 0x7e, 0x07, 0xc6, 0x1a, 0x0d, 0x6c, 0x63, 0x6c, 0x25, 0x61, 0x9e, 0xaa, 0xe5, 0xc4, 0x40, 0xd1, 0xb9, 0x6c, 0x14, 0xae, 0x12, 0x53, 0x57, 0xab, 0xf4, 0x61, 0x46, 0xc2, 0x73, 0x8b, 0x96, 0xae, 0x4d, 0xbb, 0x8c, 0x27, 0x91, 0xa1, 0x8c, 0x4e, 0xe5, 0x98, 0x95, 0x77, 0x21, 0x70, 0x63, 0xbc, 0x5c, 0xf5, 0xa2, 0x8b, 0x58, 0xaa, 0x6f, 0x48, 0xa6, 0xcb, 0xd7, 0x9d, 0x1a, 0x4e, 0x82, 0x79, 0x28, 0xe4, 0xa8, 0x42, 0xfe, 0x6d, 0x94, 0x91, 0x13, 0xe6, 0x5b, 0x65, 0x1b, 0xb5, 0xfb, 0xf0, 0x9a, 0x1a, 0x91, 0xc8, 0x77, 0x8a, 0xb4, 0x7a, 0xae, 0x33, 0x2e, 0xed, 0xe2, 0xcc, 0x22, 0x90, 0x89, 0x5d, 0x6c, 0x63, 0xab, 0x95, 0xa8, 0x63, 0x04, 0xc7, 0xa9, 0x2d, 0xe5, 0xa4, 0xd0, 0x55, 0xe9, 0xe2, 0x78, 0xdc, 0x9d, 0xf3, 0x1c, 0xef, 0xa8, 0xe9, 0xfe, 0x50, 0x80, 0x8d, 0xbd, 0x00, 0xef, 0x01, 0x79, 0x09, 0x86, 0x3c, 0xa5, 0xec, 0x59, 0x06, 0xb8, 0x82, 0x72, 0x8a, 0xfa, 0x9a, 0xa0, 0x83, 0x24, 0x2e, 0x91, 0xb6, 0x92, 0xaf, 0x9a, 0x45, 0x39, 0xb3, 0x8b, 0x65, 0x24, 0x26, 0xdc, 0xbf, 0x13, 0x4f, 0x4d, 0xb4, 0x1f, 0xd4, 0x27, 0xf2, 0x26, 0xfd, 0xb1, 0xe6, 0xc3, 0x8c, 0xf9, 0x7d, 0xed, 0x43, 0x6b, 0xd1, 0xf8, 0x3a, 0xcb, 0xfd, 0xb4, 0xa1, 0xe2, 0x6a, 0x12, 0x46, 0x0e, 0x1e, 0xa0, 0x61, 0x92, 0xa9, 0x60, 0x66, 0x94, 0x43, 0x92, 0xbb, 0xb9, 0xfd, 0xd0, 0x81, 0x3e, 0x2e, 0xf1, 0xb8, 0x22, 0x20, 0x56, 0x2a, 0xa4, 0xdd, 0x95, 0x2b, 0x20, 0x03, 0xe5, 0x6e, 0xc7, 0xba, 0x25, 0xe8, 0x27, 0xbc, 0x18, 0xef, 0x64, 0xdd, 0xa9, 0x57, 0x8d, 0x01, 0xcd, 0xa6, 0x23, 0x76, 0x06, 0x16, 0xce, 0x2d, 0xe0, 0x59, 0x08, 0x06, 0xd7, 0x44, 0x99, 0x70, 0xb1, 0x4d, 0x05, 0x2c, 0x89, 0xe8, 0x40, 0x21, 0x18, 0x2a, 0xf3, 0x14, 0xc5, 0x0a, 0x2f, 0x8d, 0x09, 0x54, 0xe5, 0x65, 0x0a, 0x5a, 0x72, 0x9c, 0xd3, 0x65, 0x5f, 0xa1, 0x0c, 0x76, 0x86, 0x6b, 0x5b, 0x48, 0xb5, 0x92, 0x8e, 0xbf, 0xa8, 0x98, 0x57, 0x99, 0xa3, 0xa8, 0x01, 0x29, 0x0f, 0x03, 0xe9, 0x0b, 0x91, 0x6e, 0xf7, 0x6b, 0xcc, 0xf0, 0xda, 0xe8, 0x3b, 0xa9, 0xd5, 0x77, 0x07, 0x01, 0xa2, 0x1e, 0xbe, 0x14, 0x5d, 0x76, 0x19, 0x2c, 0xa3, 0x7b, 0x2e, 0x67, 0x4b, 0x72, 0x76, 0x87, 0xc0, 0x82, 0x42, 0xd9, 0x26, 0xa9, 0x6b, 0x51, 0x07, 0x83, 0x11, 0x20, 0x34, 0xb9, 0x5b, 0x69, 0x33, 0x84, 0x20, 0x56, 0x9b, 0xdb, 0xeb, 0xff, 0x53, 0x12, 0x00, 0x43, 0x9b, 0x0e, 0x3d, 0x86, 0x83, 0x3a, 0x37, 0x7d, 0xa8, 0xee, 0xdb, 0x69, 0xde, 0x93, 0x97, 0x60, 0xbb, 0xc9, 0xed, 0x10, 0x56, 0x92, 0x91, 0x7f, 0x00, 0xfa, 0x3d, 0xae, 0xfb, 0xd3, 0x9b, 0x01, 0x81, 0xf8, 0x11, 0xc3, 0xae, 0x40, 0x79, 0x8f, 0xe4, 0xa6, 0x8d, 0xa7, 0x47, 0x82, 0xb5, 0xa2, 0x81, 0x98, 0xd3, 0x49, 0xd0, 0x5c, 0xac, 0x9b, 0x70, 0xa5, 0xab, 0xa8, 0x0c, 0xe8, 0xaa}, +{0x9a, 0x6f, 0x35, 0xe2, 0x96, 0x28, 0x4d, 0x11, 0x5f, 0xb6, 0x65, 0x27, 0xa2, 0xa8, 0xef, 0x57, 0xd6, 0xb6, 0x6d, 0xf6, 0x69, 0x30, 0x46, 0x31, 0xb3, 0xa5, 0x7c, 0xa0, 0x92, 0xa7, 0x4f, 0xb4, 0xb4, 0xc1, 0x6d, 0xa1, 0xa0, 0xf1, 0x67, 0x68, 0x7d, 0xab, 0x1d, 0xc3, 0x5d, 0xb3, 0x22, 0x80, 0x78, 0xb0, 0xe0, 0x17, 0x56, 0xd3, 0x65, 0x48, 0x4b, 0xc5, 0x93, 0x71, 0x65, 0x71, 0xb4, 0x25, 0xa4, 0x89, 0x9b, 0xa0, 0x0d, 0x65, 0x87, 0xd4, 0x54, 0x91, 0xf3, 0xea, 0x2b, 0xf3, 0xd6, 0x7b, 0x99, 0x1d, 0xe0, 0x9e, 0xc7, 0x94, 0x42, 0xcb, 0xfd, 0x2d, 0x5f, 0x7e, 0x20, 0x38, 0x91, 0x02, 0xdd, 0x3c, 0xb5, 0x01, 0xd8, 0x22, 0x85, 0x4a, 0x90, 0xeb, 0x11, 0x29, 0x58, 0xeb, 0x74, 0x28, 0xc7, 0x92, 0xe6, 0x35, 0x68, 0x8e, 0x72, 0xeb, 0xdf, 0x38, 0x4b, 0xe3, 0xb9, 0x90, 0x8e, 0xd5, 0x29, 0xcb, 0x89, 0xd1, 0x7b, 0xfc, 0x59, 0xdb, 0xd9, 0xcf, 0x38, 0x35, 0xfe, 0xa3, 0xd6, 0xaa, 0x11, 0xa6, 0xb1, 0xdb, 0xc4, 0xbe, 0x7b, 0xf7, 0x00, 0x14, 0x15, 0x83, 0xb1, 0xd1, 0x59, 0x65, 0x40, 0x6b, 0x9c, 0x6f, 0x4b, 0x3c, 0xb4, 0x99, 0xbb, 0x61, 0xf6, 0x7a, 0xbb, 0x29, 0x51, 0x88, 0x2d, 0x75, 0x29, 0x12, 0xfe, 0x2d, 0xe5, 0x0a, 0x1b, 0xa0, 0x8f, 0xc1, 0x79, 0x52, 0x4b, 0x63, 0xb1, 0xe9, 0xc8, 0xa9, 0xad, 0xe0, 0x48, 0xc4, 0xc7, 0x92, 0x25, 0xde, 0xe8, 0xb8, 0x4a, 0x9b, 0xae, 0x0f, 0xb8, 0x2b, 0x6b, 0x99, 0x41, 0xb4, 0x71, 0x3d, 0x27, 0xaa, 0xa4, 0xba, 0xac, 0x2b, 0xc9, 0x21, 0x3a, 0x61, 0x12, 0x8a, 0x8b, 0x7a, 0xd9, 0x07, 0xb0, 0x84, 0x59, 0x20, 0x3c, 0xa7, 0x16, 0x6b, 0xc8, 0x55, 0x6b, 0x90, 0x6d, 0x5c, 0xd8, 0x46, 0x76, 0x03, 0x64, 0xac, 0x61, 0x68, 0x9a, 0xca, 0xad, 0x81, 0x56, 0x43, 0x16, 0xeb, 0xc1, 0x65, 0x34, 0xcd, 0x8b, 0xb3, 0xcc, 0xee, 0x50, 0xa6, 0xeb, 0xd4, 0x86, 0xf2, 0x4a, 0x7e, 0xb0, 0xa2, 0xc0, 0x43, 0x72, 0xd9, 0x6f, 0x8a, 0xd0, 0x2e, 0x24, 0x41, 0x2a, 0x86, 0x1d, 0xab, 0x53, 0xd9, 0xc8, 0x2e, 0xb6, 0x6e, 0x12, 0x50, 0x02, 0x16, 0xad, 0x76, 0x9d, 0xa7, 0xbd, 0xc2, 0x04, 0xa5, 0x91, 0x20, 0x1c, 0x2a, 0xe8, 0xc7, 0xa2, 0xb1, 0x3b, 0xc4, 0x2d, 0x32, 0x50, 0x15, 0x60, 0xab, 0x6e, 0xfe, 0xa2, 0xbb, 0x5a, 0x77, 0xcb, 0x98, 0x23, 0x81, 0x8a, 0x5e, 0xac, 0x80, 0xda, 0x89, 0xdb, 0x4e, 0xa9, 0x8b, 0x63, 0x8c, 0x0a, 0x2b, 0x88, 0x34, 0x14, 0xc2, 0x9e, 0x92, 0x35, 0xea, 0x40, 0x53, 0xa5, 0x5b, 0x8c, 0xd5, 0xe4, 0xf4, 0xb6, 0x24, 0x55, 0x44, 0x26, 0xc0, 0x01, 0x29, 0xdf, 0xd7, 0xab, 0x49, 0x82, 0xf8, 0x21, 0xcd, 0x12, 0xac, 0x83, 0x0b, 0x26, 0xbb, 0x37, 0x4f, 0x6a, 0xd1, 0x4c, 0x11, 0x52, 0x86, 0x07, 0x27, 0x2b, 0xe6, 0xb1, 0x0e, 0xa8, 0xa2, 0x25, 0x35, 0x9c, 0xd1, 0x24, 0x2f, 0x24, 0xa0, 0x53, 0xba, 0x59, 0x1c, 0xa9, 0x5a, 0xe3, 0xf6, 0x33, 0xa4, 0x34, 0x1d, 0x2e, 0x25, 0xa9, 0xce, 0x08, 0x89, 0x28, 0x5b, 0x90, 0xd8, 0x72, 0x89, 0x61, 0x38, 0x92, 0x84, 0x47, 0xf3, 0xce, 0xa2, 0x08, 0xdf, 0x05, 0x47, 0x28, 0xa4, 0x57, 0xe2, 0xe2, 0x6a, 0x60, 0x04, 0x58, 0x50, 0xa2, 0x6c, 0x27, 0x95, 0x4a, 0x0a, 0xbf, 0x07, 0x4c, 0xe8, 0xbb, 0x46, 0x0e, 0x27, 0xa6, 0x6d, 0x27, 0x02, 0x2e, 0x54, 0x6e, 0xd5, 0x83, 0x1f, 0x37, 0x78, 0xd9, 0xa6, 0xc6, 0x03, 0x71, 0xb1, 0x08, 0xba, 0x11, 0xaf, 0x2a, 0xad, 0xf4, 0x45, 0xb0, 0x7b, 0x52, 0xe3, 0x1a, 0xa7, 0x5b, 0x20, 0xb3, 0x80, 0x9b, 0xce, 0x68, 0x8e, 0x2a, 0x6a, 0x15, 0x45, 0x91, 0x74, 0x24, 0x60, 0x13, 0x9d, 0x4f, 0xb9, 0x00, 0xfc, 0x32, 0x5b, 0xc9, 0xca, 0x47, 0x94, 0x7c, 0xc5, 0x9e, 0x99, 0x4f, 0x9a, 0xe2, 0x4e, 0x11, 0x88, 0x60, 0x2d, 0x2c, 0xb8, 0xae, 0x21, 0x09, 0x10, 0x11, 0x7c, 0x93, 0x7b, 0x0c, 0x96, 0x4b, 0xaf, 0x7d, 0x86, 0x03, 0xf2, 0x2c, 0xcd, 0x94, 0xf4, 0x37, 0xbe, 0xc1, 0x18, 0xd5, 0x02, 0xb8, 0xe4, 0xdd, 0xf9, 0xa0, 0x5c, 0x46, 0x21, 0x37, 0xc4, 0x55, 0x00, 0x5b, 0x98, 0x2f, 0xbb, 0x34, 0x52, 0x15, 0x17, 0xe2, 0x5f, 0xdb, 0x69, 0x0e, 0x0c, 0x39, 0x2c, 0x8b, 0x37, 0x75, 0xb2, 0x08, 0x8b, 0x82, 0xc6, 0x3b, 0x56, 0x15, 0xb3, 0x0e, 0x0f, 0x59, 0xf4, 0x90, 0xe0, 0xa3, 0x51, 0xcc, 0x5e, 0x65, 0x67, 0x3e, 0x34, 0xbc, 0x96, 0xda, 0x5b, 0xf3, 0x41, 0x28, 0x75, 0xa8, 0x1e, 0x55, 0x36, 0x8e, 0x96, 0x11, 0x5f, 0xbd, 0x87, 0x72, 0x20, 0x9b, 0x32, 0x60, 0x7b, 0x72, 0x66, 0x76, 0x26, 0x07, 0x07, 0xcb, 0x86, 0x91, 0xdc, 0x86, 0x18, 0x2b, 0x51, 0x94, 0xdb, 0x3e, 0x70, 0x38, 0x12, 0xb2, 0x59, 0x12, 0x0d, 0x90, 0x5b, 0x5a, 0x46, 0x52, 0x43, 0x89, 0xb5, 0x0f, 0x9c, 0x0f, 0xfb, 0x18, 0x8c, 0x8a, 0x66, 0x2d, 0x02, 0xf8, 0xc9, 0x02, 0x13, 0xe8, 0x28, 0xfc, 0x88, 0x8c, 0x75, 0x03, 0x95, 0x27, 0x11, 0x61, 0x4c, 0x26, 0x0e, 0x34, 0x69, 0xa9, 0x15, 0x87, 0xe8, 0x82, 0xd9, 0xca, 0xb8, 0x12, 0x41, 0x64, 0x3e, 0xa0, 0xaa, 0xba, 0x65, 0x26, 0xda, 0x93, 0x04, 0x20, 0x28, 0x26, 0xc8, 0x05, 0x78, 0xb3, 0x56, 0xd0, 0x49, 0xed, 0x18, 0x7d, 0x8f, 0x6a, 0xda, 0xe5, 0x7d, 0x16, 0x3c, 0x6d, 0xd2, 0x92, 0x23, 0x7a, 0x70, 0x88, 0x1e, 0x99, 0x88, 0x35, 0x10, 0xb1, 0xb4, 0xc8, 0x10, 0x08, 0x87, 0xe0, 0xf9, 0x6f, 0xfe, 0xee, 0x65, 0xb1, 0x4e, 0x42, 0x8f, 0xf1, 0xaf, 0x66, 0x78, 0xef, 0x42, 0xbb, 0xfd, 0xe1, 0xc7, 0x75, 0x64, 0x35, 0x95, 0x08, 0x03, 0x00, 0x5b, 0x5f, 0x86, 0x2f, 0x2d, 0xcf, 0xbc, 0x81, 0xef, 0xce, 0xa0, 0xdb, 0x40, 0x1d, 0x34, 0x89, 0xdd, 0xb0, 0x6e, 0xa9, 0xe7, 0x33, 0x67, 0xf9, 0xa7, 0xa4, 0xe9, 0x48, 0x3b, 0xd4, 0xac, 0x07, 0x2f, 0x4e, 0x6d, 0xc7, 0x84, 0x7c, 0x7d, 0x06, 0x01, 0xea, 0xd9, 0x9e, 0x6a, 0x2c, 0xca, 0xe8, 0x4f, 0x4b, 0x88, 0x7d, 0x08, 0x27, 0xaf, 0x59, 0x05, 0xf4, 0xc6, 0x4c, 0xe8, 0xa8, 0xb5, 0xc5, 0xdb, 0x16, 0x57, 0xb7, 0x2f, 0x84, 0xa5, 0xcc, 0x62, 0x7c, 0xf7, 0xd3, 0x75, 0xe7, 0x71, 0x04, 0x88, 0xf2, 0xe3, 0x32, 0xc2, 0x64, 0x70, 0x90, 0x19, 0xa7, 0xc7, 0x57, 0xfd, 0xa8, 0x20}, +{0x99, 0x66, 0xdb, 0xf0, 0x45, 0xfc, 0xa4, 0xc3, 0x62, 0x0b, 0x47, 0x9b, 0x59, 0xa0, 0xb2, 0x8a, 0x34, 0x13, 0x27, 0x0c, 0xa4, 0x32, 0xce, 0x07, 0x19, 0x82, 0x32, 0xa9, 0x56, 0x8d, 0x30, 0xea, 0x25, 0x8e, 0xa8, 0x1a, 0x84, 0x1f, 0xb0, 0xa2, 0xa9, 0x6c, 0x9b, 0x5a, 0x6e, 0x69, 0x31, 0xa4, 0x72, 0x71, 0x0f, 0xf6, 0x3a, 0xcb, 0xe6, 0x71, 0xa5, 0x88, 0x7b, 0x69, 0x96, 0x52, 0x4f, 0x56, 0x6f, 0x68, 0x97, 0x2f, 0xa5, 0x43, 0x1f, 0x28, 0x76, 0x50, 0xcd, 0x24, 0xb2, 0xae, 0xef, 0xc2, 0xcb, 0xc3, 0x34, 0x4a, 0x51, 0x85, 0x14, 0xe8, 0x8b, 0xde, 0xba, 0xe2, 0xa1, 0x34, 0x79, 0xba, 0x7c, 0x44, 0x29, 0x9d, 0x22, 0x09, 0xe7, 0x35, 0x10, 0xee, 0x27, 0xf0, 0x48, 0xec, 0x48, 0x5e, 0xcc, 0x49, 0x78, 0x3b, 0x27, 0xaa, 0x21, 0x46, 0x11, 0xe1, 0x58, 0xd3, 0x16, 0x25, 0x5a, 0x92, 0xf9, 0x62, 0x6f, 0xf5, 0x47, 0x47, 0x6c, 0x75, 0x93, 0xbf, 0x7a, 0x86, 0x1a, 0x1c, 0xdc, 0x2a, 0x28, 0xb9, 0x01, 0x30, 0x45, 0xa6, 0xeb, 0x3d, 0x18, 0x9f, 0x13, 0x5e, 0x5c, 0x50, 0x50, 0x6d, 0x7e, 0xa3, 0xa2, 0x50, 0x21, 0xf4, 0x12, 0x0c, 0xdf, 0x1a, 0x0e, 0xeb, 0x95, 0x1a, 0x43, 0x95, 0x02, 0xd5, 0xc2, 0x73, 0x01, 0x18, 0xd5, 0x43, 0x9e, 0x4a, 0x2b, 0x91, 0x5a, 0xaa, 0x16, 0xf4, 0x01, 0x57, 0xad, 0x7e, 0x24, 0xcd, 0x3d, 0x15, 0xed, 0xfc, 0x99, 0x14, 0x10, 0xa1, 0x38, 0x5e, 0x51, 0x49, 0x7b, 0x1f, 0xd4, 0x59, 0x2f, 0x25, 0x84, 0x9f, 0xcb, 0xb9, 0x1b, 0x20, 0xf8, 0x1b, 0x2c, 0x8c, 0x3c, 0xeb, 0x93, 0x50, 0x71, 0x27, 0xcf, 0xcb, 0xf6, 0x41, 0x75, 0x19, 0x09, 0x86, 0xf1, 0x93, 0x5f, 0x52, 0x8c, 0xd1, 0xe7, 0xa6, 0x41, 0x7e, 0x6d, 0x3f, 0xc3, 0x52, 0x69, 0xd9, 0x49, 0xb6, 0x00, 0x30, 0x59, 0x1c, 0xba, 0xf3, 0xb8, 0x49, 0x65, 0xd4, 0xae, 0x08, 0x36, 0x7e, 0x6b, 0x32, 0x05, 0x9a, 0xba, 0xa4, 0x31, 0xb0, 0x30, 0x54, 0xe7, 0x07, 0x26, 0x41, 0x61, 0x70, 0x96, 0xdc, 0x05, 0xd2, 0xd1, 0xa3, 0xc7, 0x0a, 0x08, 0x67, 0xf5, 0xd1, 0x05, 0x1e, 0x84, 0x7a, 0xb0, 0x1b, 0xac, 0x85, 0xe7, 0x11, 0xf8, 0xc8, 0x6c, 0x22, 0x89, 0x46, 0x59, 0x68, 0xf0, 0x74, 0xcd, 0x0f, 0x07, 0xda, 0xa5, 0x07, 0x55, 0x98, 0x1d, 0x83, 0x62, 0x77, 0x27, 0x9b, 0x34, 0x09, 0xad, 0x05, 0x82, 0x68, 0x2c, 0x18, 0x18, 0x41, 0x9e, 0xae, 0x39, 0x09, 0xe5, 0x3f, 0x7b, 0xcf, 0xb7, 0xb4, 0x7d, 0xa8, 0x91, 0xce, 0x1c, 0x5b, 0xd9, 0xd0, 0x2d, 0x04, 0x52, 0x8b, 0x41, 0x93, 0x3a, 0xa9, 0x75, 0x92, 0x69, 0x9a, 0xa9, 0x46, 0xfa, 0x3e, 0x75, 0xca, 0x7a, 0x4a, 0x1a, 0x22, 0x0b, 0x69, 0x6f, 0x4d, 0xb4, 0x4e, 0x0c, 0x2d, 0x63, 0xcd, 0x15, 0x59, 0x66, 0x9c, 0xa8, 0xd0, 0x8c, 0xca, 0xab, 0x70, 0xe6, 0x1b, 0x88, 0xd9, 0xad, 0x68, 0x07, 0x68, 0x13, 0x28, 0x98, 0x88, 0x98, 0xae, 0x49, 0x47, 0x05, 0x89, 0x20, 0xd4, 0x08, 0x7d, 0x74, 0x81, 0xe6, 0xc5, 0x03, 0xc5, 0x55, 0x10, 0x7d, 0xca, 0x01, 0xe6, 0x5e, 0x28, 0x68, 0x52, 0xe2, 0x61, 0x16, 0x4d, 0x28, 0x38, 0x37, 0xdb, 0xa6, 0x3b, 0xa1, 0x24, 0x97, 0xd1, 0x1b, 0x56, 0x91, 0x01, 0xce, 0x59, 0x11, 0x2d, 0x88, 0x1b, 0x8f, 0x51, 0x59, 0x83, 0x68, 0x77, 0x39, 0x4d, 0xd8, 0x09, 0x2f, 0xe1, 0x55, 0x69, 0x62, 0xed, 0x3e, 0x05, 0xe2, 0x34, 0xd9, 0xaf, 0x8a, 0x5f, 0x0c, 0xe2, 0x80, 0xb5, 0x29, 0xdc, 0x02, 0x28, 0x50, 0xe3, 0x5a, 0xad, 0x70, 0x09, 0x57, 0xe5, 0xfb, 0xc5, 0xe9, 0xa6, 0x87, 0x27, 0xdf, 0x23, 0xf8, 0x1e, 0x6e, 0xb7, 0x00, 0x2c, 0x93, 0x83, 0x40, 0x6d, 0x60, 0x77, 0xd6, 0xc1, 0x60, 0x75, 0x21, 0x14, 0xf9, 0x9b, 0xd4, 0xf2, 0xd0, 0x79, 0x41, 0xf6, 0x07, 0xf6, 0xd3, 0xf5, 0xf8, 0x19, 0x0b, 0x52, 0xaa, 0xe1, 0xe8, 0xf1, 0xb7, 0x17, 0xa1, 0x82, 0x74, 0x4e, 0x48, 0xab, 0xe9, 0x61, 0x01, 0x78, 0x47, 0x22, 0x86, 0xbd, 0x8b, 0x50, 0xd8, 0xee, 0xd5, 0x9f, 0x67, 0x15, 0x56, 0x4a, 0x8d, 0xf0, 0x79, 0xb8, 0xef, 0xaf, 0x43, 0x20, 0x18, 0x87, 0x74, 0x40, 0x4f, 0x1a, 0x20, 0xb5, 0x31, 0x12, 0xd0, 0xfb, 0x16, 0x24, 0x94, 0x20, 0xb7, 0xaf, 0x2a, 0x4a, 0xd3, 0xa1, 0xa6, 0x00, 0xef, 0x75, 0xd1, 0x7b, 0x66, 0xb1, 0xbf, 0x25, 0x49, 0x88, 0xb5, 0x30, 0xa5, 0x08, 0xa6, 0x8c, 0x78, 0xa0, 0x41, 0x22, 0xdb, 0x27, 0x5e, 0xa9, 0x62, 0xd2, 0xa3, 0x97, 0x49, 0x8b, 0xc5, 0xa8, 0x96, 0x21, 0xf3, 0xe8, 0xeb, 0xe2, 0x7d, 0x0d, 0xae, 0xb5, 0xe6, 0xbc, 0xd7, 0x35, 0x5d, 0x18, 0xbb, 0xc4, 0xdf, 0x07, 0x10, 0xa5, 0x76, 0x97, 0x63, 0x1d, 0x15, 0xdb, 0x2e, 0x47, 0x12, 0xa5, 0x34, 0x3a, 0x90, 0xf4, 0x55, 0x9a, 0xa6, 0x33, 0xb9, 0x5f, 0xd5, 0x37, 0xcc, 0x53, 0xfe, 0x51, 0x87, 0x26, 0xa2, 0x46, 0x5f, 0xc0, 0xc5, 0x0c, 0xa5, 0x35, 0x17, 0x03, 0x24, 0x53, 0x11, 0x55, 0x06, 0x4b, 0x0d, 0x8e, 0xf2, 0x66, 0x12, 0x70, 0x4f, 0xcb, 0x66, 0xa6, 0x8d, 0x8c, 0xb0, 0x7d, 0x07, 0xc2, 0xc8, 0x5c, 0x85, 0x65, 0x3d, 0xde, 0x09, 0xf8, 0xd3, 0xf4, 0x97, 0x27, 0x42, 0xb7, 0xa4, 0x11, 0x66, 0x30, 0x26, 0xca, 0xd4, 0x81, 0x9a, 0x94, 0x5b, 0x0d, 0x1d, 0x38, 0xc8, 0x40, 0xce, 0xac, 0x70, 0x99, 0x54, 0x24, 0x2c, 0x99, 0x73, 0xc2, 0xd9, 0x16, 0x15, 0x58, 0x79, 0x4c, 0x4f, 0x1e, 0xbf, 0xd1, 0xe1, 0x52, 0x7f, 0x00, 0x90, 0x5f, 0x3a, 0xd5, 0x2d, 0x9d, 0x2a, 0x27, 0xdb, 0xaa, 0x4c, 0x64, 0x80, 0x02, 0x67, 0xfd, 0x43, 0xc7, 0xb9, 0x35, 0x47, 0x5c, 0x12, 0xb0, 0xd9, 0xfe, 0xbf, 0x52, 0x4e, 0x7c, 0x70, 0x42, 0x95, 0x5c, 0x1d, 0x58, 0xf0, 0x09, 0x82, 0x8c, 0x2d, 0x15, 0x2a, 0xeb, 0x33, 0xe3, 0x2e, 0x44, 0x92, 0xeb, 0x17, 0x56, 0x70, 0xe2, 0x14, 0xb4, 0xcd, 0xd7, 0x50, 0xb9, 0x84, 0x1c, 0xe5, 0xac, 0xb2, 0xe6, 0xee, 0xbd, 0x30, 0x84, 0xa7, 0x54, 0xe6, 0x5c, 0xf0, 0xa1, 0x4c, 0x1e, 0xd1, 0x8b, 0xea, 0x92, 0x6d, 0x4c, 0x91, 0x93, 0x80, 0xf8, 0x92, 0x8b, 0x5a, 0xa2, 0x76, 0x97, 0x74, 0xcd, 0x2e, 0x79, 0xea, 0x13, 0x72, 0xf9, 0xc8, 0x40, 0x93, 0x9b, 0xd5, 0x12, 0x72, 0xf2, 0x15, 0x55, 0x43, 0x55, 0xc7, 0x3c, 0x91, 0x87}, +{0x61, 0x9e, 0x1b, 0x10, 0x65, 0xf6, 0x2e, 0x4c, 0x42, 0xab, 0xa0, 0x89, 0x06, 0xa2, 0xf6, 0xc4, 0x3c, 0xb5, 0xfc, 0x32, 0x59, 0xdb, 0x84, 0x9f, 0xe4, 0x99, 0xa9, 0x21, 0x8c, 0x23, 0x16, 0xaa, 0x57, 0x0d, 0x09, 0x92, 0xc8, 0xe7, 0x21, 0xfd, 0x24, 0x88, 0x4b, 0x1e, 0xc3, 0x9a, 0xd6, 0x61, 0x79, 0xdc, 0x1d, 0x24, 0x30, 0x43, 0x88, 0x6b, 0x89, 0x6d, 0x45, 0xdb, 0x30, 0x3e, 0x75, 0x67, 0x29, 0xfc, 0x2a, 0x13, 0xb8, 0x2e, 0x92, 0x64, 0x7c, 0xd4, 0x0d, 0x69, 0x08, 0xe4, 0xd1, 0x77, 0x68, 0x8b, 0x84, 0x2c, 0x90, 0x0f, 0x7e, 0xb3, 0x25, 0x1a, 0x3c, 0x9d, 0xda, 0x74, 0x22, 0xa2, 0xb2, 0x5e, 0x51, 0xa4, 0xd1, 0x94, 0xdc, 0x30, 0x56, 0x5d, 0xac, 0x1c, 0x54, 0x8f, 0xe9, 0x0d, 0x37, 0xe2, 0xa4, 0xd8, 0xd6, 0x1c, 0x2c, 0x00, 0xcb, 0xdf, 0xda, 0x1c, 0x82, 0x03, 0x41, 0xc3, 0xfa, 0xfa, 0xed, 0x9a, 0x6c, 0xc6, 0xcf, 0x30, 0xe6, 0x56, 0x28, 0x4d, 0x01, 0x12, 0xed, 0x19, 0x3d, 0x68, 0x98, 0xc3, 0x1e, 0xa7, 0xe9, 0x97, 0x98, 0x15, 0x01, 0x00, 0x60, 0x3b, 0x17, 0x8e, 0x17, 0x19, 0x12, 0x5a, 0x60, 0x4b, 0xe4, 0x02, 0x97, 0x28, 0x26, 0x75, 0xa0, 0x72, 0x20, 0x30, 0x28, 0xa7, 0x90, 0x71, 0xae, 0x94, 0x40, 0x99, 0xfd, 0xb5, 0x1a, 0xa1, 0x6f, 0xde, 0x29, 0x64, 0x75, 0x6d, 0x7d, 0x74, 0x1d, 0xd4, 0x67, 0xcb, 0x9d, 0xae, 0x12, 0x89, 0xdc, 0x88, 0xc6, 0xc7, 0x01, 0x5b, 0xf7, 0xe8, 0x06, 0x89, 0x1b, 0x34, 0x21, 0x5e, 0xaf, 0x04, 0xd5, 0x5e, 0x28, 0x39, 0x90, 0x14, 0x01, 0x5b, 0x02, 0xc9, 0x55, 0xc9, 0x5a, 0x53, 0xe7, 0xd7, 0x01, 0xbc, 0xa0, 0x43, 0x91, 0xb3, 0xb7, 0x6a, 0x81, 0xcd, 0x81, 0x49, 0x80, 0x82, 0x42, 0x98, 0x21, 0x05, 0x81, 0xd3, 0xd2, 0x50, 0xa0, 0xb1, 0x24, 0xf7, 0x50, 0x63, 0xb1, 0xaf, 0x86, 0x96, 0x31, 0x7a, 0x4d, 0x06, 0x98, 0x9f, 0x62, 0xd4, 0x07, 0x85, 0xf4, 0x90, 0x0e, 0x0b, 0xf9, 0xf4, 0x3c, 0x01, 0x9f, 0x3a, 0xc8, 0x97, 0x43, 0x07, 0x29, 0x6a, 0x72, 0xe8, 0x41, 0xf5, 0x2a, 0x7e, 0x5e, 0xad, 0xe6, 0x3f, 0xa5, 0x72, 0xbe, 0x99, 0x1e, 0x80, 0x87, 0x07, 0xc8, 0xe2, 0x94, 0x1b, 0x6d, 0x5b, 0xba, 0x31, 0x55, 0x8b, 0xbc, 0x66, 0x86, 0xe5, 0x25, 0x22, 0x10, 0x3a, 0xa6, 0xb6, 0x58, 0x5d, 0x81, 0x6d, 0x74, 0xc3, 0x25, 0xf1, 0x3a, 0xd2, 0x55, 0x62, 0x8d, 0x24, 0x77, 0x0a, 0xbd, 0x2d, 0x42, 0xac, 0xcc, 0x20, 0xfb, 0x54, 0x8c, 0x20, 0x8f, 0x0a, 0x63, 0x05, 0x80, 0x07, 0x98, 0x5c, 0x23, 0x7b, 0x1c, 0x78, 0x2f, 0x37, 0xaf, 0xb9, 0xe8, 0xa2, 0xcc, 0x98, 0x6d, 0x98, 0x3e, 0x88, 0x45, 0xc9, 0x82, 0x4b, 0x5c, 0xe6, 0x85, 0x95, 0x29, 0xa3, 0x68, 0x51, 0x49, 0x31, 0xfe, 0x68, 0xa8, 0x11, 0x54, 0x67, 0x26, 0xb8, 0x88, 0xb9, 0x48, 0xac, 0x53, 0x11, 0x35, 0xf6, 0x81, 0xa5, 0xce, 0x3c, 0xa0, 0xae, 0x88, 0x53, 0xf1, 0xcc, 0xf4, 0x89, 0x4f, 0xfa, 0x9e, 0xdf, 0x81, 0xff, 0xf8, 0xa8, 0x71, 0x03, 0xdd, 0xc0, 0x4e, 0x8b, 0x3a, 0xb0, 0x9b, 0x0a, 0x68, 0x66, 0x13, 0x14, 0x41, 0xbe, 0x11, 0x68, 0x54, 0x92, 0xb8, 0x38, 0x4f, 0x41, 0xd7, 0x91, 0xf3, 0x44, 0xa8, 0xac, 0x9d, 0x54, 0xbf, 0x8b, 0x90, 0x08, 0x11, 0x7c, 0x90, 0x93, 0x38, 0x29, 0x22, 0xa6, 0xa7, 0x59, 0x1e, 0x4b, 0xcd, 0x2e, 0xb5, 0xed, 0xeb, 0xf8, 0xc9, 0xcd, 0x2c, 0x20, 0x77, 0x80, 0x3f, 0x82, 0x69, 0x0e, 0x8c, 0x24, 0x01, 0x05, 0x68, 0x65, 0x90, 0x5f, 0x03, 0x9e, 0x22, 0x51, 0xe1, 0xcd, 0x21, 0x82, 0x22, 0xef, 0x75, 0xcd, 0x68, 0x6f, 0xa1, 0x07, 0x62, 0x0a, 0xbb, 0xad, 0x38, 0x67, 0x6c, 0xcd, 0xd7, 0x2f, 0xbc, 0x7f, 0xb0, 0x05, 0x69, 0x60, 0x45, 0x76, 0xb1, 0x37, 0xee, 0xec, 0xc7, 0x7a, 0x11, 0x7b, 0x08, 0xd2, 0x1d, 0xa3, 0x9d, 0x08, 0xa9, 0x6c, 0xac, 0x1a, 0xca, 0xfe, 0x88, 0x4f, 0x4a, 0x85, 0x5e, 0xc4, 0xec, 0x95, 0x91, 0xbd, 0x40, 0xce, 0x53, 0x0d, 0xcd, 0x97, 0x92, 0x43, 0x53, 0x17, 0x32, 0xaa, 0xb4, 0xda, 0x58, 0xc6, 0xbb, 0xc1, 0x32, 0x63, 0x31, 0x6d, 0x5f, 0x51, 0x5d, 0xd9, 0xa4, 0xc8, 0xc6, 0x1d, 0x43, 0x9e, 0x76, 0xa0, 0x19, 0x02, 0x58, 0x81, 0x2e, 0xb4, 0x1e, 0x4a, 0x13, 0x44, 0xb4, 0x0a, 0xdc, 0x8d, 0xd4, 0x63, 0x3e, 0x12, 0x22, 0x9a, 0x39, 0xa7, 0xa5, 0xa6, 0xd3, 0x73, 0x39, 0x92, 0x46, 0x57, 0xa9, 0xb6, 0x8e, 0xd8, 0x78, 0x5f, 0xaa, 0x6a, 0x49, 0x21, 0x6a, 0x41, 0x1d, 0x65, 0xf3, 0x07, 0x55, 0x60, 0xa9, 0x17, 0x99, 0xe1, 0x7a, 0x13, 0xf6, 0x35, 0x70, 0x4f, 0x95, 0x10, 0x03, 0x20, 0x37, 0xb0, 0x89, 0xb9, 0x24, 0xa4, 0xf0, 0x5d, 0x97, 0x54, 0x26, 0x68, 0x85, 0x48, 0x35, 0xfd, 0xa0, 0x19, 0xd4, 0x66, 0x19, 0x76, 0xf1, 0xd4, 0x13, 0xe3, 0x6e, 0xa5, 0x4b, 0x7d, 0x82, 0xb6, 0x4b, 0x61, 0x52, 0x35, 0xbf, 0x5c, 0xc7, 0xdb, 0x51, 0x1a, 0x23, 0xe6, 0x4d, 0x96, 0x60, 0xad, 0x22, 0x01, 0xb2, 0x1a, 0xd9, 0xb2, 0x89, 0xce, 0x43, 0x93, 0xa2, 0xdf, 0x41, 0x20, 0xdc, 0x36, 0x81, 0xd3, 0x0d, 0x28, 0x7c, 0xf6, 0x9c, 0xd4, 0x16, 0x28, 0x45, 0xda, 0x00, 0x3d, 0x91, 0x62, 0x66, 0x7a, 0x6b, 0xbc, 0xb4, 0x30, 0x92, 0xb8, 0xd1, 0x46, 0x1c, 0x71, 0x1e, 0x67, 0x10, 0xb3, 0xe3, 0xf1, 0x06, 0xb7, 0x5f, 0x31, 0xd6, 0xe0, 0x26, 0x24, 0x3d, 0x01, 0x32, 0x64, 0xc6, 0x89, 0x47, 0x11, 0xa0, 0x4a, 0x6b, 0xb2, 0x0d, 0x06, 0x51, 0x49, 0xc8, 0x40, 0xc4, 0x6d, 0x4c, 0x51, 0x5c, 0xec, 0x94, 0x72, 0x34, 0xa7, 0xeb, 0x22, 0xab, 0x05, 0x3b, 0x15, 0x6f, 0x66, 0xd4, 0xea, 0x3b, 0x05, 0xe9, 0x53, 0xe0, 0x26, 0x7f, 0xa2, 0x54, 0x29, 0x34, 0x5b, 0x1a, 0xae, 0xe7, 0x6e, 0xd0, 0x54, 0x9f, 0xc8, 0xd7, 0x55, 0x09, 0x1a, 0x3e, 0xea, 0x28, 0x85, 0x91, 0x52, 0x41, 0x4e, 0x67, 0x43, 0x16, 0xb6, 0xc8, 0xcc, 0x06, 0xbb, 0x00, 0x0c, 0x47, 0x82, 0xf5, 0x64, 0x44, 0x2e, 0xf7, 0xcb, 0x42, 0x6c, 0x78, 0x53, 0xdf, 0xe0, 0x5a, 0x9f, 0x22, 0x61, 0x89, 0x66, 0xe0, 0x51, 0x05, 0x20, 0x2f, 0x7b, 0x1a, 0x69, 0xf2, 0xd7, 0xf5, 0x65, 0x06, 0xdb, 0x99, 0x51, 0xa1, 0xec, 0xbb, 0xb7, 0x96, 0x91, 0xc2, 0xfd, 0x58, 0x15}, +{0xff, 0x83, 0x1c, 0x22, 0xc8, 0x3a, 0x79, 0xad, 0xcc, 0x51, 0x96, 0xd1, 0x05, 0x96, 0xa1, 0x90, 0xc3, 0x23, 0x5e, 0xf0, 0x6d, 0xac, 0x5e, 0xeb, 0x99, 0xbb, 0xc9, 0x72, 0x02, 0xe0, 0x82, 0xc2, 0x77, 0x01, 0x46, 0x3f, 0xe5, 0x4c, 0xf6, 0xbd, 0x5d, 0xa6, 0x06, 0x40, 0x93, 0xaa, 0x6f, 0x31, 0x2f, 0xb0, 0x41, 0x29, 0x59, 0x8d, 0x84, 0x5a, 0x0e, 0x4b, 0x96, 0x27, 0xd8, 0x70, 0x69, 0xcf, 0x9c, 0x21, 0x69, 0x30, 0xfc, 0x5e, 0x5e, 0xcc, 0x2c, 0x27, 0x92, 0xed, 0x5b, 0x98, 0xa4, 0x07, 0xe7, 0x4c, 0x4a, 0xb0, 0xe6, 0xdd, 0x9e, 0x89, 0xd9, 0x36, 0x13, 0xe4, 0x2d, 0xda, 0xdb, 0x55, 0xe0, 0x25, 0x70, 0x4d, 0xda, 0xf6, 0x04, 0x0e, 0x38, 0xd1, 0x5b, 0x2e, 0xb9, 0xf0, 0xe8, 0x4b, 0x44, 0x4f, 0xa5, 0x49, 0x28, 0x56, 0x59, 0x15, 0x6f, 0xf0, 0xf0, 0xb0, 0xbe, 0x6f, 0xe1, 0xcd, 0x10, 0xb9, 0xee, 0x61, 0x64, 0x82, 0x0b, 0x11, 0x62, 0xae, 0x69, 0x1b, 0xa0, 0x67, 0x9d, 0xc0, 0x2e, 0xb2, 0x37, 0xc6, 0x55, 0xac, 0x88, 0x40, 0x30, 0x4e, 0xbc, 0x00, 0xa5, 0x40, 0x93, 0x05, 0x1a, 0xd8, 0xce, 0xf4, 0xd0, 0x83, 0xda, 0x62, 0x9b, 0x1b, 0xc1, 0xc9, 0x1f, 0xc8, 0x2b, 0x31, 0x12, 0x34, 0x61, 0xce, 0x89, 0x2d, 0xfb, 0x9d, 0x0a, 0xe7, 0x93, 0x8d, 0x64, 0xb6, 0x9c, 0xd0, 0xe8, 0xff, 0xf1, 0x2c, 0xc3, 0x8f, 0x8a, 0xd8, 0x12, 0x89, 0x7a, 0xc4, 0x98, 0xc7, 0x25, 0xa3, 0xdd, 0x33, 0x16, 0x1a, 0x5f, 0xbb, 0xf0, 0xa0, 0x0d, 0x83, 0xc0, 0xaf, 0xb8, 0xd2, 0xc1, 0x61, 0xbe, 0x90, 0x7c, 0xda, 0x49, 0xba, 0x6f, 0x0c, 0xeb, 0x7b, 0xbb, 0xea, 0xde, 0x20, 0x3d, 0x6b, 0xc2, 0x8b, 0xbf, 0x04, 0x99, 0xd5, 0x8d, 0xb1, 0x04, 0xeb, 0xca, 0x12, 0x80, 0x82, 0x3f, 0x3b, 0x60, 0x75, 0x56, 0x99, 0xd9, 0xe1, 0x28, 0x44, 0x60, 0x91, 0x08, 0xdd, 0xc3, 0x64, 0xcb, 0xbd, 0x99, 0x83, 0x90, 0xec, 0x30, 0x57, 0x4c, 0x10, 0xf3, 0xc6, 0xd0, 0x95, 0xfd, 0xc0, 0x7f, 0x89, 0x5f, 0x25, 0x87, 0xdc, 0x52, 0x5a, 0xfc, 0x0a, 0xe1, 0xc3, 0x01, 0xbc, 0x6e, 0x2d, 0xdb, 0xf1, 0x48, 0xef, 0x8a, 0x8d, 0x08, 0x11, 0xc1, 0x58, 0x08, 0x3c, 0x92, 0x9f, 0x66, 0x96, 0xb8, 0xb8, 0x98, 0x59, 0x64, 0x82, 0xbf, 0xf2, 0x9c, 0xe8, 0x6b, 0x96, 0x8d, 0xea, 0x65, 0xcf, 0xf4, 0x9a, 0x26, 0x6f, 0xa7, 0x41, 0xcd, 0xe5, 0x4a, 0xef, 0xa3, 0x2c, 0x24, 0x21, 0xb6, 0x60, 0x5b, 0x06, 0x4f, 0x02, 0xd2, 0xf6, 0x7b, 0x91, 0x2f, 0x2d, 0xf9, 0x9a, 0xa5, 0x87, 0x50, 0x4b, 0xdd, 0xc2, 0x3c, 0x71, 0x45, 0x3b, 0xaa, 0x6d, 0xfb, 0xfe, 0x6c, 0x94, 0x3e, 0x6b, 0xa3, 0xa6, 0x5c, 0xf9, 0xaa, 0x00, 0x4e, 0x47, 0x47, 0xb1, 0x15, 0x79, 0x4c, 0x21, 0xca, 0xf8, 0x62, 0x8e, 0xa3, 0x07, 0x26, 0xfb, 0xa3, 0xe4, 0x7c, 0x2a, 0xe5, 0x59, 0x44, 0x1a, 0x01, 0x41, 0x3b, 0x46, 0x52, 0xef, 0x5b, 0xeb, 0x5d, 0x15, 0x8e, 0x53, 0x1d, 0x59, 0xe6, 0x0c, 0x1f, 0xbc, 0x41, 0x99, 0x41, 0x13, 0x56, 0x91, 0x15, 0x14, 0x6a, 0x73, 0xf0, 0x96, 0x36, 0xc8, 0x69, 0xb3, 0x46, 0xa6, 0x56, 0x28, 0xeb, 0xa2, 0x8f, 0x0b, 0x49, 0xfa, 0xae, 0x10, 0x52, 0x03, 0xbb, 0x0c, 0x0e, 0x84, 0xcd, 0x1a, 0x02, 0xaa, 0x19, 0x04, 0x77, 0x2d, 0xec, 0x68, 0xbb, 0xb3, 0xec, 0x81, 0xc2, 0x5a, 0x44, 0x45, 0x96, 0x94, 0x34, 0x50, 0x66, 0x75, 0x8b, 0x69, 0x5c, 0x6f, 0xd8, 0x89, 0x3f, 0x75, 0x41, 0xb1, 0x80, 0xb8, 0x8c, 0x01, 0x91, 0x1c, 0x9e, 0x67, 0x10, 0x22, 0x26, 0xca, 0x1c, 0xe6, 0x34, 0x2c, 0x09, 0xf5, 0x68, 0x2e, 0xb6, 0x2e, 0xe8, 0xe5, 0x19, 0x44, 0xa0, 0x92, 0xb5, 0x92, 0xcf, 0x90, 0x92, 0x6e, 0x32, 0x85, 0x45, 0x22, 0xa5, 0x64, 0x03, 0x1e, 0x6a, 0x23, 0xc9, 0x95, 0x70, 0x1e, 0x44, 0x5a, 0x43, 0x08, 0x81, 0xb3, 0x0d, 0xa2, 0xb0, 0x8d, 0x4f, 0x04, 0x45, 0x84, 0x1e, 0x27, 0x88, 0xea, 0x48, 0x41, 0x73, 0xd8, 0x6e, 0x18, 0x6e, 0x7f, 0x12, 0x01, 0x40, 0x1e, 0xdc, 0x93, 0x9f, 0xd6, 0x92, 0x60, 0xbd, 0x64, 0xc0, 0x7d, 0x85, 0xb0, 0x10, 0x26, 0x77, 0x6e, 0x07, 0xd3, 0x0d, 0x66, 0x65, 0x0d, 0x07, 0xf3, 0xe1, 0xa3, 0x78, 0x43, 0xa5, 0x1a, 0x2d, 0xc9, 0x8c, 0xad, 0x64, 0x9b, 0x9a, 0x03, 0xa0, 0x08, 0x7c, 0xbf, 0xcb, 0x83, 0x55, 0x46, 0xb8, 0xd2, 0x22, 0xeb, 0x93, 0x6b, 0xfb, 0xab, 0x2c, 0x87, 0x2b, 0xa3, 0xfc, 0x63, 0x2c, 0xa5, 0x5e, 0x1b, 0xc5, 0x4c, 0x18, 0x1b, 0xb6, 0xaf, 0x79, 0xcf, 0x84, 0x47, 0x01, 0x6e, 0xa9, 0x21, 0x54, 0x10, 0x66, 0x8b, 0x4e, 0x50, 0x78, 0x4f, 0x7a, 0x86, 0x04, 0x09, 0x76, 0xb6, 0xcd, 0x02, 0x99, 0x41, 0xd4, 0x60, 0x52, 0x54, 0xd4, 0xb9, 0xdd, 0x85, 0x7f, 0x09, 0xed, 0x65, 0xe4, 0x9e, 0x22, 0x19, 0xcb, 0x0b, 0x1f, 0x95, 0x2d, 0xb4, 0xa1, 0x03, 0x89, 0xc1, 0x7a, 0x73, 0x3c, 0xaa, 0x33, 0xed, 0x1e, 0x86, 0x2b, 0x1d, 0xa9, 0x2c, 0x80, 0x19, 0xfa, 0xff, 0xd1, 0x0f, 0x65, 0x43, 0xdc, 0xc5, 0x48, 0xc0, 0x6f, 0x86, 0x8c, 0x65, 0x9a, 0xed, 0xc2, 0x39, 0x19, 0x65, 0x87, 0x54, 0x19, 0xae, 0x08, 0x63, 0xe2, 0xeb, 0xc3, 0x1a, 0x91, 0x5f, 0x79, 0xde, 0xa0, 0xaa, 0xbe, 0xa8, 0x80, 0xda, 0x5f, 0xb5, 0xda, 0x9e, 0xd9, 0x5b, 0xbd, 0x6b, 0xc7, 0x07, 0x1b, 0x3d, 0x90, 0x23, 0x47, 0x03, 0xd8, 0x39, 0x3d, 0x79, 0xfe, 0x9c, 0xf8, 0x3b, 0xbd, 0xe8, 0xb0, 0x00, 0x21, 0xcb, 0xf5, 0xe2, 0x79, 0x51, 0xfe, 0xae, 0x2f, 0xa6, 0xf4, 0x16, 0x76, 0x86, 0xea, 0xa0, 0x58, 0x5d, 0x9c, 0x7e, 0x28, 0xda, 0x07, 0x04, 0x21, 0x84, 0x65, 0x2c, 0x11, 0x6a, 0xc7, 0x73, 0x59, 0x1d, 0xf7, 0xc0, 0x7e, 0x43, 0x00, 0x7a, 0x55, 0xe9, 0x23, 0x56, 0x5a, 0xbd, 0x6e, 0x12, 0x3a, 0x11, 0xe1, 0xf1, 0x75, 0x15, 0x02, 0x8d, 0x1c, 0x20, 0x43, 0xa6, 0x48, 0xa1, 0x8c, 0xcf, 0xf4, 0x76, 0x0c, 0x59, 0x66, 0xde, 0x02, 0xcf, 0xd8, 0xc8, 0x3c, 0x81, 0x43, 0x98, 0x31, 0x69, 0x02, 0x4d, 0x8a, 0x7d, 0x5a, 0x0b, 0xa2, 0x9c, 0x52, 0xb4, 0xa9, 0xe7, 0xdb, 0x00, 0xe8, 0x24, 0xa2, 0x0b, 0x49, 0x7d, 0x58, 0x91, 0xd4, 0x8a, 0xbd, 0xe3, 0x03, 0xe1, 0x64, 0xd1, 0x4d, 0x72, 0xa3, 0xac, 0xc1, 0x6d, 0x32, 0xb5}}; +#elif (NEWHOPE_N == 1024) +#error "NEWHOPE_N must be either 512 or 1024.. NEWHOPE_N == 1024 not implemented yet" +#endif + +bool ringct20_params_init(ringct20_param_t *ringct20_p, ringct20_kind_t kind) +{ +// static int first_init = 1;//CRUTCH +// if(first_init) +// { +// //LRCT_Setup(Afixed,Hfixed, 10); +// SetupPrintAH(Afixed, Hfixed, 10); +// first_init = 0; +// } + + if(kind != MODERINGCT20_0) + return false; + ringct20_p->M = 3; + + ringct20_p->mLen = ringct20_p->M-1; + if(ringct20_p->mLen > 10) + return false; + ringct20_p->wLen = 3; + ringct20_p->kind = kind; + ringct20_p->POLY_RINGCT20_SIZE_PACKED = NEWHOPE_POLYBYTES; + ringct20_p->POLY_RINGCT20_SIZE = NEWHOPE_N*sizeof(uint16_t); + ringct20_p->A = malloc(ringct20_p->POLY_RINGCT20_SIZE * ringct20_p->mLen);//CRUTCH//dont forget to free + ringct20_p->H = malloc(ringct20_p->POLY_RINGCT20_SIZE * ringct20_p->mLen);//CRUTCH//dont forget to free + + //poly_copy(ringct20_p->A, Afixed, ringct20_p->mLen); + //poly_copy(ringct20_p->H, Hfixed, ringct20_p->mLen); + for(int i = 0; i < ringct20_p->mLen; ++i) + { + poly_frombytes(ringct20_p->A + i, A_bpoly[i]); + poly_frombytes(ringct20_p->H + i, H_bpoly[i]); + } + ringct20_p->RINGCT20_PBK_SIZE = ringct20_p->POLY_RINGCT20_SIZE_PACKED; + ringct20_p->RINGCT20_PRK_SIZE = ringct20_p->mLen*ringct20_p->POLY_RINGCT20_SIZE_PACKED; + ringct20_p->RINGCT20_SIG_SIZE = (ringct20_p->wLen + + ringct20_p->M*ringct20_p->wLen + 1 +1)*ringct20_p->POLY_RINGCT20_SIZE_PACKED; + + + return true; +} +void ringct20_params_free(ringct20_param_t *ringct20_p) +{ + if(ringct20_p->A != NULL) + free(ringct20_p->A); + if(ringct20_p->H != NULL) + free(ringct20_p->H); + free(ringct20_p); +} diff --git a/src/ringct20/ringct20_params.h b/src/ringct20/ringct20_params.h index 4adad4969015b58f859170e3fe01641c337eddb9..e52b5dc5de86d51a5311ad2e2ed6a17ac9b4cf93 100644 --- a/src/ringct20/ringct20_params.h +++ b/src/ringct20/ringct20_params.h @@ -31,7 +31,6 @@ */ - ///======================================================================== /* Names for the four varieties of Ring CT2.0 */ typedef enum { MODERINGCT20_0, MODERINGCT20_1, MODERINGCT20_2, MODERINGCT20_3 } ringct20_kind_t; @@ -90,7 +89,8 @@ typedef struct { ///========================================================================================== -bool ringct20_params_init(ringct20_param_t *, ringct20_kind_t ); +bool ringct20_params_init(ringct20_param_t *ringct20_p, ringct20_kind_t kind); +void ringct20_params_free(ringct20_param_t *ringct20_p); int ringct20_crypto_sign_keypair(ringct20_public_key_t *, ringct20_private_key_t *, ringct20_kind_t ); diff --git a/src/ringct20/sha256.c b/src/ringct20/sha256.c deleted file mode 100644 index eee466a76c42e656d2b3a9f839c3184f5e3daf68..0000000000000000000000000000000000000000 --- a/src/ringct20/sha256.c +++ /dev/null @@ -1,220 +0,0 @@ -#include "sha256.h" - -#ifdef USE_SHA256 - -static void uint32_to_uint8(uint8 *output, const uint32 *input, const size_t len) -{ - for(size_t i = 0, j = 0; j < len; i++, j += 4) - for (int k = 0; k < 4; k++) - output[j + k] = (uint8)(input[i] >> (24 - 8 * k) & 0xFF); -} - -static void uint8_to_uint32(uint32 *output, const uint8 *input, const size_t len) -{ - for(size_t i = 0, j = 0; j < len; i++, j += 4) - { - output[i] = 0; - for (int k = 0; k < 4; k++) - output[i] |= ((uint64)input[j + k]) << (24 - 8 * k); - } -} - -#define CH(x, y, z) (((x) & (y)) ^ (~(x) & (z))) -#define MAJ(x, y, z) (((x) & (y)) ^ ((x) & (z)) ^ ((y) & (z))) -#define F0(x) (ROTR(x, 2) ^ ROTR(x, 13) ^ ROTR(x, 22)) -#define F1(x) (ROTR(x, 6) ^ ROTR(x, 11) ^ ROTR(x, 25)) -#define G0(x) (ROTR(x, 7) ^ ROTR(x, 18) ^ SHR(x, 3)) -#define G1(x) (ROTR(x, 17) ^ ROTR(x, 19) ^ SHR(x, 10)) - -static const uint32 Key_out[64] = { - 0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5, 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5, - 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3, 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174, - 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc, 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da, - 0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7, 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967, - 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13, 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85, - 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3, 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070, - 0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5, 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3, - 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208, 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2 -}; - -static void SHA256_compress(SHA256_CTX *ctx) -{ - uint32 W[64], M[16], a, b, c, d, e, f, g, h, T1, T2; - //printf("==============================================================\nBlock Contents:\n"); - - a = ctx->state[0]; - b = ctx->state[1]; - c = ctx->state[2]; - d = ctx->state[3]; - e = ctx->state[4]; - f = ctx->state[5]; - g = ctx->state[6]; - h = ctx->state[7]; - uint8_to_uint32(M, ctx->buf, 64); - - for (int i = 0; i < 64; i++) - { - if (i < 16) - { - W[i] = M[i]; - //printf("M[%d] = %08X\n", i, W[i]); - } - else - W[i] = G1(W[i-2]) + W[i-7] + G0(W[i-15]) + W[i-16]; - T1 = h + F1(e) + CH(e, f, g) + Key_out[i] + W[i]; - T2 = F0(a) + MAJ(a, b, c); - h = g; - g = f; - f = e; - e = d + T1; - d = c; - c = b; - b = a; - a = T1 + T2; - } - - ctx->state[0] += a; - ctx->state[1] += b; - ctx->state[2] += c; - ctx->state[3] += d; - ctx->state[4] += e; - ctx->state[5] += f; - ctx->state[6] += g; - ctx->state[7] += h; - ctx->curlen = 0; - - return ; -} - -int SHA256_Init(SHA256_CTX *ctx) -{ - ctx->state[0] = 0x6a09e667; - ctx->state[1] = 0xbb67ae85; - ctx->state[2] = 0x3c6ef372; - ctx->state[3] = 0xa54ff53a; - ctx->state[4] = 0x510e527f; - ctx->state[5] = 0x9b05688c; - ctx->state[6] = 0x1f83d9ab; - ctx->state[7] = 0x5be0cd19; - ctx->length[0] = 0; - ctx->length[1] = 0; - ctx->curlen = 0; - memset(ctx->buf, 0, 64); - /* - printf("==============================================================\nInitial hash value:\n"); - for (int i = 0; i < 8; i++) - printf("H[%d] = %08X\n", i, ctx->state[i]); - */ - return 1; -} - -int SHA256_Update(SHA256_CTX *ctx, const unsigned char *data, size_t len) -{ - size_t n; - ctx->length[0] += len >> 29; - ctx->length[1] += len << 3; - if (ctx->length[1] < (len << 3)) - ctx->length[0]++; - - while (len > 0) - { - n = MIN(len, (64 - ctx->curlen)); - memcpy(ctx->buf + ctx->curlen, data, n); - ctx->curlen += n; - data += n; - len -= n; - - if (ctx->curlen == 64) - SHA256_compress(ctx); - } - return 1; -} - -int SHA256_Final(unsigned char *md, SHA256_CTX *ctx) -{ - uint8 length[8]; - const uint8 PAD[64] = { 0x80 }; - - uint32_to_uint8(length, ctx->length, 8); - memcpy(ctx->buf + ctx->curlen, PAD, 64 - ctx->curlen); - if (ctx->curlen >= 56) - { - SHA256_compress(ctx); - memset(ctx->buf, 0, 56); - } - memcpy(ctx->buf + 56, length, 8); - SHA256_compress(ctx); - uint32_to_uint8(md, ctx->state, SHA256_DIGEST_SIZE); - - return 1; -} - -unsigned char *SHA256(unsigned char *md, const unsigned char *data, size_t len) -{ - SHA256_CTX ctx; - if (!SHA256_Init(&ctx)) - return NULL; - if (!SHA256_Update(&ctx, data, len)) - return NULL; - if (!SHA256_Final(md, &ctx)) - return NULL; - return md; -} - -void SHA256_KDF(unsigned char *Z, unsigned short input_len, unsigned short K_out_byte_len, unsigned char *Key_out) -{ - unsigned short i, j, t; - unsigned int bitklen; - SHA256_CTX md; - unsigned char Ha[SHA256_len / 8]; - unsigned char ct[4] = { 0,0,0,1 }; - bitklen = K_out_byte_len * 8; - //set number of output blocks - if (bitklen%SHA256_len) - t = bitklen / SHA256_len + 1; - else - t = bitklen / SHA256_len; - //s4: Key_out=Ha1||Ha2||... - for (i = 1; i<t; i++) - { - //s2: Hai=Hv(Z||ct) - SHA256_Init(&md); - SHA256_Update(&md, Z, input_len); - SHA256_Update(&md, ct, 4); - SHA256_Final(Ha, &md); - memcpy((Key_out + (SHA256_len / 8)*(i - 1)), Ha, SHA256_len / 8); - if (ct[3] == 0xff) - { - ct[3] = 0; - if (ct[2] == 0xff) - { - ct[2] = 0; - if (ct[1] == 0xff) - { - ct[1] = 0; - ct[0]++; - } - else ct[1]++; - } - else ct[2]++; - } - else ct[3]++; - } - //s3: K_out_byte_len/v proccessing part block? - SHA256_Init(&md); - SHA256_Update(&md, Z, input_len); - SHA256_Update(&md, ct, 4); - SHA256_Final(Ha, &md); - if (bitklen%SHA256_len) - { - i = (SHA256_len - bitklen + SHA256_len * (bitklen / SHA256_len)) / 8; - j = (bitklen - SHA256_len * (bitklen / SHA256_len)) / 8; - memcpy((Key_out + (SHA256_len / 8)*(t - 1)), Ha, j); - } - else - { - memcpy((Key_out + (SHA256_len / 8)*(t - 1)), Ha, SHA256_len / 8); - } -} - -#endif/* USE_SHA256 */ diff --git a/src/ringct20/sha256.h b/src/ringct20/sha256.h deleted file mode 100644 index 7910b1b7813ad3fb7da2ef26036cc6fdaeb85b32..0000000000000000000000000000000000000000 --- a/src/ringct20/sha256.h +++ /dev/null @@ -1,31 +0,0 @@ -#ifndef _DIGEST_H -#define _DIGEST_H - -#include "cryptoConfig.h" - - -/******************************************************************************/ - -#ifdef USE_SHA256 - -#define SHA256_DIGEST_SIZE 32 -#define SHA256_len 256 -typedef struct SHA256_state_st -{ - uint32 length[2]; - uint32 state[8]; - size_t curlen; - unsigned char buf[64]; -} SHA256_CTX; - -int SHA256_Init(SHA256_CTX *ctx); -int SHA256_Update(SHA256_CTX *ctx, const unsigned char *data, size_t len); -int SHA256_Final(unsigned char *md, SHA256_CTX *ctx); -unsigned char *SHA256(unsigned char *md, const unsigned char *data, size_t len); - -void SHA256_KDF(unsigned char *Z, unsigned short zlen, unsigned short klen, unsigned char *K); - -#endif/* USE_SHA256 */ -/******************************************************************************/ - -#endif/* _DIGEST_H */ diff --git a/src/sha3/KeccakHash.c b/src/sha3/KeccakHash.c index bcfd1e9222268fa9f884b904b9f10fc4f319fe27..486b6ffa6f5f0cd1d91c5bb041c39b996a768325 100755 --- a/src/sha3/KeccakHash.c +++ b/src/sha3/KeccakHash.c @@ -18,6 +18,24 @@ http://creativecommons.org/publicdomain/zero/1.0/ /* ---------------------------------------------------------------- */ +HashReturn Keccak_KDF(void *in, const int in_byte_len, void *key_out, const int out_byte_len, unsigned int rate, unsigned int capacity, unsigned char delimitedSuffix) +{ + HashReturn result; + + Keccak_HashInstance instance; + result = Keccak_HashInitialize(&instance, rate, capacity, out_byte_len*8, delimitedSuffix); + if (result != SUCCESS) + return result; + + result = Keccak_HashUpdate(&instance, in, in_byte_len*8); + if (result != SUCCESS) + return result; + + result = Keccak_HashFinal(&instance, key_out); + + return result; +} + HashReturn Keccak_HashInitialize(Keccak_HashInstance *instance, unsigned int rate, unsigned int capacity, unsigned int hashbitlen, unsigned char delimitedSuffix) { HashReturn result; diff --git a/src/sha3/KeccakHash.h b/src/sha3/KeccakHash.h index 0d129759d6a837e867968bf3b62df14616a7115b..5e902a908d62c796de144d4ba5ff063203385e82 100755 --- a/src/sha3/KeccakHash.h +++ b/src/sha3/KeccakHash.h @@ -53,6 +53,9 @@ typedef struct { */ HashReturn Keccak_HashInitialize(Keccak_HashInstance *hashInstance, unsigned int rate, unsigned int capacity, unsigned int hashbitlen, unsigned char delimitedSuffix); + +#define Keccak_256KDF(in, in_byte_len, key_out, out_byte_len) Keccak_KDF(in, in_byte_len, key_out, out_byte_len, 1088, 512, 0x1F) + /** Macro to initialize a SHAKE128 instance as specified in the FIPS 202 standard. */ #define Keccak_HashInitialize_SHAKE128(hashInstance) Keccak_HashInitialize(hashInstance, 1344, 256, 0, 0x1F) diff --git a/src/sha3/fips202.c b/src/sha3/fips202.c index 022be71adbe6786fff2455b5031d067d5157451c..8ee8e5aa064739f6422f90549cef663053c14108 100644 --- a/src/sha3/fips202.c +++ b/src/sha3/fips202.c @@ -341,7 +341,7 @@ void KeccakF1600_StatePermute(uint64_t * state) #define MIN(a, b) ((a) < (b) ? (a) : (b)) -static void keccak_absorb(uint64_t *s, unsigned int r, const unsigned char *m, unsigned long long int mlen, unsigned char p) +void keccak_absorb(uint64_t *s, unsigned int r, const unsigned char *m, unsigned long long int mlen, unsigned char p) { unsigned long long i; unsigned char t[200]; @@ -367,7 +367,7 @@ static void keccak_absorb(uint64_t *s, unsigned int r, const unsigned char *m, u } -static void keccak_squeezeblocks(unsigned char *h, unsigned long long int nblocks, uint64_t *s, unsigned int r) +void keccak_squeezeblocks(unsigned char *h, unsigned long long int nblocks, uint64_t *s, unsigned int r) { unsigned int i; @@ -454,7 +454,9 @@ void cshake128_simple_squeezeblocks(unsigned char *output, unsigned long long nb void cshake128_simple(unsigned char *output, unsigned long long outlen, uint16_t cstm, const unsigned char *in, unsigned long long inlen) { - uint64_t s[25] = {0}; + uint64_t s[25]; + for(int i = 0; i < 25; ++i) + s[i] = 0; unsigned char t[SHAKE128_RATE]; unsigned int i; diff --git a/src/sha3/fips202.h b/src/sha3/fips202.h index 5bd9cb6532616f1f6d69d4554d0b3cb4f516c25d..0d6ea2c8b0da3054210742a370dfc9ec176f667f 100755 --- a/src/sha3/fips202.h +++ b/src/sha3/fips202.h @@ -12,6 +12,9 @@ #define SHA3_256_RATE 136 +void keccak_absorb(uint64_t *s, unsigned int r, const unsigned char *m, unsigned long long int mlen, unsigned char p); +void keccak_squeezeblocks(unsigned char *h, unsigned long long int nblocks, uint64_t *s, unsigned int r); + void shake128_absorb(uint64_t *s, const unsigned char *input, unsigned int inputByteLen); void shake128_squeezeblocks(unsigned char *output, unsigned long long nblocks, uint64_t *s); void shake128(unsigned char *output, unsigned long long outlen, const unsigned char *input, unsigned long long inlen); diff --git a/test/crypto/main.c b/test/crypto/main.c index 79fad44b4cef95f17a00e40234407a997d3c14dc..31d5977aa9bc98832cca0e73109514dfbfbf65b7 100755 --- a/test/crypto/main.c +++ b/test/crypto/main.c @@ -17,16 +17,15 @@ int main(void) { - //test - //test4 - // switch off debug info from library + // switch off debug info from library dap_log_level_set(L_CRITICAL); dap_enc_ringct20_tests_run(100); - //dap_enc_picnic_tests_run(); - //dap_enc_sig_bliss_tests_run(10); - //dap_enc_dilithium_tests_run(10); -/* dap_enc_aes_tests_run(); + return 0; + dap_enc_picnic_tests_run(); + dap_enc_sig_bliss_tests_run(); + dap_enc_dilithium_tests_run(); + dap_enc_aes_tests_run(); dap_enc_oaes_tests_run(); dap_enc_base64_tests_run(); dap_enc_base58_tests_run(); @@ -35,5 +34,5 @@ int main(void) dap_enc_defeo_tests_run(); dap_enc_tesla_tests_run(); dap_enc_multi_sign_tests_run(); -*/ + }