diff options
-rw-r--r-- | doc/relnotes/1_11_8.rst | 6 | ||||
-rw-r--r-- | doc/website/algos.rst | 6 | ||||
-rw-r--r-- | src/lib/block/lubyrack/info.txt | 5 | ||||
-rw-r--r-- | src/lib/block/lubyrack/lubyrack.cpp | 122 | ||||
-rw-r--r-- | src/lib/block/lubyrack/lubyrack.h | 50 | ||||
-rw-r--r-- | src/lib/block/skipjack/info.txt | 1 | ||||
-rw-r--r-- | src/lib/block/skipjack/skipjack.cpp | 200 | ||||
-rw-r--r-- | src/lib/block/skipjack/skipjack.h | 35 | ||||
-rw-r--r-- | src/lib/block/square/info.txt | 1 | ||||
-rw-r--r-- | src/lib/block/square/sqr_tab.cpp | 460 | ||||
-rw-r--r-- | src/lib/block/square/square.cpp | 221 | ||||
-rw-r--r-- | src/lib/block/square/square.h | 52 | ||||
-rw-r--r-- | src/lib/hash/bmw_512/bmw_512.cpp | 204 | ||||
-rw-r--r-- | src/lib/hash/bmw_512/bmw_512.h | 38 | ||||
-rw-r--r-- | src/lib/hash/bmw_512/info.txt | 5 | ||||
-rw-r--r-- | src/tests/data/block/lubyrackoff.vec | 8 | ||||
-rw-r--r-- | src/tests/data/block/skipjack.vec | 121 | ||||
-rw-r--r-- | src/tests/data/block/square.vec | 49 | ||||
-rw-r--r-- | src/tests/data/hash/bmw512.vec | 805 |
19 files changed, 8 insertions, 2381 deletions
diff --git a/doc/relnotes/1_11_8.rst b/doc/relnotes/1_11_8.rst index 0c670a9a9..7f4c4374d 100644 --- a/doc/relnotes/1_11_8.rst +++ b/doc/relnotes/1_11_8.rst @@ -1,7 +1,7 @@ Version 1.11.8, Not Yet Released ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -* The ChaCha20 cipher has been added +* The ChaCha20 stream cipher has been added. * CMAC now supports 256 and 512 bit block ciphers, which also allows the use of larger block ciphers with EAX mode. In particular this @@ -10,6 +10,10 @@ Version 1.11.8, Not Yet Released * The antique PBES1 private key encryption scheme (which only supports DES or 64-bit RC2) has been removed. +* The Square, Skipjack, and Luby-Rackoff block ciphers have been removed. + +* The Blue Midnight Wish hash function has been removed. + * Skein-512 no longer supports output lengths greater than 512 bits. * Skein did not reset its internal state properly if clear() was diff --git a/doc/website/algos.rst b/doc/website/algos.rst index 37285b6e6..c0466aba4 100644 --- a/doc/website/algos.rst +++ b/doc/website/algos.rst @@ -45,9 +45,9 @@ Block ciphers * AES candidates Serpent, Twofish, MARS, CAST-256, RC6 * DES, and variants 3DES and DESX * Other block ciphers including Threefish-512, Blowfish, CAST-128, IDEA, - Noekeon, TEA, XTEA, RC2, RC5, SAFER-SK, and Square - * National/telecom block ciphers SEED, KASUMI, MISTY1, GOST 28147, Skipjack - * Block cipher constructions Luby-Rackoff and Lion + Noekeon, TEA, XTEA, RC2, RC5, SAFER-SK + * National/telecom block ciphers SEED, KASUMI, MISTY1, GOST 28147 + * Large block cipher construction Lion Stream Ciphers ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ diff --git a/src/lib/block/lubyrack/info.txt b/src/lib/block/lubyrack/info.txt deleted file mode 100644 index 1d83a0bac..000000000 --- a/src/lib/block/lubyrack/info.txt +++ /dev/null @@ -1,5 +0,0 @@ -define LUBY_RACKOFF 20131128 - -<requires> -hash -</requires> diff --git a/src/lib/block/lubyrack/lubyrack.cpp b/src/lib/block/lubyrack/lubyrack.cpp deleted file mode 100644 index 92974b761..000000000 --- a/src/lib/block/lubyrack/lubyrack.cpp +++ /dev/null @@ -1,122 +0,0 @@ -/* -* Luby-Rackoff -* (C) 1999-2008,2014 Jack Lloyd -* -* Distributed under the terms of the Botan license -*/ - -#include <botan/lubyrack.h> -#include <botan/internal/xor_buf.h> - -namespace Botan { - -/* -* Luby-Rackoff Encryption -*/ -void LubyRackoff::encrypt_n(const byte in[], byte out[], size_t blocks) const - { - const size_t len = m_hash->output_length(); - - secure_vector<byte> buffer_vec(len); - byte* buffer = &buffer_vec[0]; - - for(size_t i = 0; i != blocks; ++i) - { - m_hash->update(m_K1); - m_hash->update(in, len); - m_hash->final(buffer); - xor_buf(out + len, in + len, buffer, len); - - m_hash->update(m_K2); - m_hash->update(out + len, len); - m_hash->final(buffer); - xor_buf(out, in, buffer, len); - - m_hash->update(m_K1); - m_hash->update(out, len); - m_hash->final(buffer); - xor_buf(out + len, buffer, len); - - m_hash->update(m_K2); - m_hash->update(out + len, len); - m_hash->final(buffer); - xor_buf(out, buffer, len); - - in += 2 * len; - out += 2 * len; - } - } - -/* -* Luby-Rackoff Decryption -*/ -void LubyRackoff::decrypt_n(const byte in[], byte out[], size_t blocks) const - { - const size_t len = m_hash->output_length(); - - secure_vector<byte> buffer_vec(len); - byte* buffer = &buffer_vec[0]; - - for(size_t i = 0; i != blocks; ++i) - { - m_hash->update(m_K2); - m_hash->update(in + len, len); - m_hash->final(buffer); - xor_buf(out, in, buffer, len); - - m_hash->update(m_K1); - m_hash->update(out, len); - m_hash->final(buffer); - xor_buf(out + len, in + len, buffer, len); - - m_hash->update(m_K2); - m_hash->update(out + len, len); - m_hash->final(buffer); - xor_buf(out, buffer, len); - - m_hash->update(m_K1); - m_hash->update(out, len); - m_hash->final(buffer); - xor_buf(out + len, buffer, len); - - in += 2 * len; - out += 2 * len; - } - } - -/* -* Luby-Rackoff Key Schedule -*/ -void LubyRackoff::key_schedule(const byte key[], size_t length) - { - m_K1.assign(key, key + (length / 2)); - m_K2.assign(key + (length / 2), key + length); - } - -/* -* Clear memory of sensitive data -*/ -void LubyRackoff::clear() - { - zap(m_K1); - zap(m_K2); - m_hash->clear(); - } - -/* -* Return a clone of this object -*/ -BlockCipher* LubyRackoff::clone() const - { - return new LubyRackoff(m_hash->clone()); - } - -/* -* Return the name of this type -*/ -std::string LubyRackoff::name() const - { - return "Luby-Rackoff(" + m_hash->name() + ")"; - } - -} diff --git a/src/lib/block/lubyrack/lubyrack.h b/src/lib/block/lubyrack/lubyrack.h deleted file mode 100644 index e3bb463bc..000000000 --- a/src/lib/block/lubyrack/lubyrack.h +++ /dev/null @@ -1,50 +0,0 @@ -/* -* Luby-Rackoff -* (C) 1999-2008,2014 Jack Lloyd -* -* Distributed under the terms of the Botan license -*/ - -#ifndef BOTAN_LUBY_RACKOFF_H__ -#define BOTAN_LUBY_RACKOFF_H__ - -#include <botan/block_cipher.h> -#include <botan/hash.h> - -namespace Botan { - -/** -* Luby-Rackoff block cipher construction -*/ -class BOTAN_DLL LubyRackoff : public BlockCipher - { - public: - void encrypt_n(const byte in[], byte out[], size_t blocks) const override; - void decrypt_n(const byte in[], byte out[], size_t blocks) const override; - - size_t block_size() const override { return 2 * m_hash->output_length(); } - - Key_Length_Specification key_spec() const override - { - return Key_Length_Specification(2, 32, 2); - } - - void clear() override; - std::string name() const override; - BlockCipher* clone() const override; - - /** - * @param hash function to use to form the block cipher - */ - LubyRackoff(HashFunction* hash) : m_hash(hash) {} - - private: - void key_schedule(const byte[], size_t) override; - - std::unique_ptr<HashFunction> m_hash; - secure_vector<byte> m_K1, m_K2; - }; - -} - -#endif diff --git a/src/lib/block/skipjack/info.txt b/src/lib/block/skipjack/info.txt deleted file mode 100644 index fb2bf70a5..000000000 --- a/src/lib/block/skipjack/info.txt +++ /dev/null @@ -1 +0,0 @@ -define SKIPJACK 20131128 diff --git a/src/lib/block/skipjack/skipjack.cpp b/src/lib/block/skipjack/skipjack.cpp deleted file mode 100644 index be4024ad4..000000000 --- a/src/lib/block/skipjack/skipjack.cpp +++ /dev/null @@ -1,200 +0,0 @@ -/* -* Skipjack -* (C) 1999-2007 Jack Lloyd -* -* Distributed under the terms of the Botan license -*/ - -#include <botan/skipjack.h> -#include <botan/loadstor.h> - -namespace Botan { - -namespace { - -/* -* Skipjack Stepping Rule 'A' -*/ -void step_A(u16bit& W1, u16bit& W4, size_t round, const byte FTAB[]) - { - byte G1 = get_byte(0, W1), G2 = get_byte(1, W1), G3; - - G3 = FTAB[((4*round-4)%10)*256 + G2] ^ G1; - G1 = FTAB[((4*round-3)%10)*256 + G3] ^ G2; - G2 = FTAB[((4*round-2)%10)*256 + G1] ^ G3; - G3 = FTAB[((4*round-1)%10)*256 + G2] ^ G1; - - W1 = make_u16bit(G2, G3); - W4 ^= W1 ^ round; - } - -/* -* Skipjack Stepping Rule 'B' -*/ -void step_B(u16bit& W1, u16bit& W2, size_t round, const byte FTAB[]) - { - W2 ^= W1 ^ round; - byte G1 = get_byte(0, W1), G2 = get_byte(1, W1), G3; - G3 = FTAB[((4*round-4)%10)*256 + G2] ^ G1; - G1 = FTAB[((4*round-3)%10)*256 + G3] ^ G2; - G2 = FTAB[((4*round-2)%10)*256 + G1] ^ G3; - G3 = FTAB[((4*round-1)%10)*256 + G2] ^ G1; - W1 = make_u16bit(G2, G3); - } - -/* -* Skipjack Invserse Stepping Rule 'A' -*/ -void step_Ai(u16bit& W1, u16bit& W2, size_t round, const byte FTAB[]) - { - W1 ^= W2 ^ round; - byte G1 = get_byte(1, W2), G2 = get_byte(0, W2), G3; - G3 = FTAB[((4 * round - 1) % 10)*256 + G2] ^ G1; - G1 = FTAB[((4 * round - 2) % 10)*256 + G3] ^ G2; - G2 = FTAB[((4 * round - 3) % 10)*256 + G1] ^ G3; - G3 = FTAB[((4 * round - 4) % 10)*256 + G2] ^ G1; - W2 = make_u16bit(G3, G2); - } - -/* -* Skipjack Invserse Stepping Rule 'B' -*/ -void step_Bi(u16bit& W2, u16bit& W3, size_t round, const byte FTAB[]) - { - byte G1 = get_byte(1, W2), G2 = get_byte(0, W2), G3; - G3 = FTAB[((4 * round - 1) % 10)*256 + G2] ^ G1; - G1 = FTAB[((4 * round - 2) % 10)*256 + G3] ^ G2; - G2 = FTAB[((4 * round - 3) % 10)*256 + G1] ^ G3; - G3 = FTAB[((4 * round - 4) % 10)*256 + G2] ^ G1; - W2 = make_u16bit(G3, G2); - W3 ^= W2 ^ round; - } - -} - -/* -* Skipjack Encryption -*/ -void Skipjack::encrypt_n(const byte in[], byte out[], size_t blocks) const - { - const byte* ftab = &FTAB[0]; - - for(size_t i = 0; i != blocks; ++i) - { - u16bit W1 = load_le<u16bit>(in, 3); - u16bit W2 = load_le<u16bit>(in, 2); - u16bit W3 = load_le<u16bit>(in, 1); - u16bit W4 = load_le<u16bit>(in, 0); - - step_A(W1, W4, 1, ftab); step_A(W4, W3, 2, ftab); - step_A(W3, W2, 3, ftab); step_A(W2, W1, 4, ftab); - step_A(W1, W4, 5, ftab); step_A(W4, W3, 6, ftab); - step_A(W3, W2, 7, ftab); step_A(W2, W1, 8, ftab); - - step_B(W1, W2, 9, ftab); step_B(W4, W1, 10, ftab); - step_B(W3, W4, 11, ftab); step_B(W2, W3, 12, ftab); - step_B(W1, W2, 13, ftab); step_B(W4, W1, 14, ftab); - step_B(W3, W4, 15, ftab); step_B(W2, W3, 16, ftab); - - step_A(W1, W4, 17, ftab); step_A(W4, W3, 18, ftab); - step_A(W3, W2, 19, ftab); step_A(W2, W1, 20, ftab); - step_A(W1, W4, 21, ftab); step_A(W4, W3, 22, ftab); - step_A(W3, W2, 23, ftab); step_A(W2, W1, 24, ftab); - - step_B(W1, W2, 25, ftab); step_B(W4, W1, 26, ftab); - step_B(W3, W4, 27, ftab); step_B(W2, W3, 28, ftab); - step_B(W1, W2, 29, ftab); step_B(W4, W1, 30, ftab); - step_B(W3, W4, 31, ftab); step_B(W2, W3, 32, ftab); - - store_le(out, W4, W3, W2, W1); - - in += BLOCK_SIZE; - out += BLOCK_SIZE; - } - } - -/* -* Skipjack Decryption -*/ -void Skipjack::decrypt_n(const byte in[], byte out[], size_t blocks) const - { - const byte* ftab = &FTAB[0]; - - for(size_t i = 0; i != blocks; ++i) - { - u16bit W1 = load_le<u16bit>(in, 3); - u16bit W2 = load_le<u16bit>(in, 2); - u16bit W3 = load_le<u16bit>(in, 1); - u16bit W4 = load_le<u16bit>(in, 0); - - step_Bi(W2, W3, 32, ftab); step_Bi(W3, W4, 31, ftab); - step_Bi(W4, W1, 30, ftab); step_Bi(W1, W2, 29, ftab); - step_Bi(W2, W3, 28, ftab); step_Bi(W3, W4, 27, ftab); - step_Bi(W4, W1, 26, ftab); step_Bi(W1, W2, 25, ftab); - - step_Ai(W1, W2, 24, ftab); step_Ai(W2, W3, 23, ftab); - step_Ai(W3, W4, 22, ftab); step_Ai(W4, W1, 21, ftab); - step_Ai(W1, W2, 20, ftab); step_Ai(W2, W3, 19, ftab); - step_Ai(W3, W4, 18, ftab); step_Ai(W4, W1, 17, ftab); - - step_Bi(W2, W3, 16, ftab); step_Bi(W3, W4, 15, ftab); - step_Bi(W4, W1, 14, ftab); step_Bi(W1, W2, 13, ftab); - step_Bi(W2, W3, 12, ftab); step_Bi(W3, W4, 11, ftab); - step_Bi(W4, W1, 10, ftab); step_Bi(W1, W2, 9, ftab); - - step_Ai(W1, W2, 8, ftab); step_Ai(W2, W3, 7, ftab); - step_Ai(W3, W4, 6, ftab); step_Ai(W4, W1, 5, ftab); - step_Ai(W1, W2, 4, ftab); step_Ai(W2, W3, 3, ftab); - step_Ai(W3, W4, 2, ftab); step_Ai(W4, W1, 1, ftab); - - store_le(out, W4, W3, W2, W1); - - in += BLOCK_SIZE; - out += BLOCK_SIZE; - } - } - -/* -* Skipjack Key Schedule -*/ -void Skipjack::key_schedule(const byte key[], size_t) - { - static const byte F[256] = { - 0xA3, 0xD7, 0x09, 0x83, 0xF8, 0x48, 0xF6, 0xF4, 0xB3, 0x21, 0x15, 0x78, - 0x99, 0xB1, 0xAF, 0xF9, 0xE7, 0x2D, 0x4D, 0x8A, 0xCE, 0x4C, 0xCA, 0x2E, - 0x52, 0x95, 0xD9, 0x1E, 0x4E, 0x38, 0x44, 0x28, 0x0A, 0xDF, 0x02, 0xA0, - 0x17, 0xF1, 0x60, 0x68, 0x12, 0xB7, 0x7A, 0xC3, 0xE9, 0xFA, 0x3D, 0x53, - 0x96, 0x84, 0x6B, 0xBA, 0xF2, 0x63, 0x9A, 0x19, 0x7C, 0xAE, 0xE5, 0xF5, - 0xF7, 0x16, 0x6A, 0xA2, 0x39, 0xB6, 0x7B, 0x0F, 0xC1, 0x93, 0x81, 0x1B, - 0xEE, 0xB4, 0x1A, 0xEA, 0xD0, 0x91, 0x2F, 0xB8, 0x55, 0xB9, 0xDA, 0x85, - 0x3F, 0x41, 0xBF, 0xE0, 0x5A, 0x58, 0x80, 0x5F, 0x66, 0x0B, 0xD8, 0x90, - 0x35, 0xD5, 0xC0, 0xA7, 0x33, 0x06, 0x65, 0x69, 0x45, 0x00, 0x94, 0x56, - 0x6D, 0x98, 0x9B, 0x76, 0x97, 0xFC, 0xB2, 0xC2, 0xB0, 0xFE, 0xDB, 0x20, - 0xE1, 0xEB, 0xD6, 0xE4, 0xDD, 0x47, 0x4A, 0x1D, 0x42, 0xED, 0x9E, 0x6E, - 0x49, 0x3C, 0xCD, 0x43, 0x27, 0xD2, 0x07, 0xD4, 0xDE, 0xC7, 0x67, 0x18, - 0x89, 0xCB, 0x30, 0x1F, 0x8D, 0xC6, 0x8F, 0xAA, 0xC8, 0x74, 0xDC, 0xC9, - 0x5D, 0x5C, 0x31, 0xA4, 0x70, 0x88, 0x61, 0x2C, 0x9F, 0x0D, 0x2B, 0x87, - 0x50, 0x82, 0x54, 0x64, 0x26, 0x7D, 0x03, 0x40, 0x34, 0x4B, 0x1C, 0x73, - 0xD1, 0xC4, 0xFD, 0x3B, 0xCC, 0xFB, 0x7F, 0xAB, 0xE6, 0x3E, 0x5B, 0xA5, - 0xAD, 0x04, 0x23, 0x9C, 0x14, 0x51, 0x22, 0xF0, 0x29, 0x79, 0x71, 0x7E, - 0xFF, 0x8C, 0x0E, 0xE2, 0x0C, 0xEF, 0xBC, 0x72, 0x75, 0x6F, 0x37, 0xA1, - 0xEC, 0xD3, 0x8E, 0x62, 0x8B, 0x86, 0x10, 0xE8, 0x08, 0x77, 0x11, 0xBE, - 0x92, 0x4F, 0x24, 0xC5, 0x32, 0x36, 0x9D, 0xCF, 0xF3, 0xA6, 0xBB, 0xAC, - 0x5E, 0x6C, 0xA9, 0x13, 0x57, 0x25, 0xB5, 0xE3, 0xBD, 0xA8, 0x3A, 0x01, - 0x05, 0x59, 0x2A, 0x46 }; - - FTAB.resize(256*10); - for(size_t i = 0; i != 10; ++i) - for(size_t j = 0; j != 256; ++j) - FTAB[256*i+j] = F[j ^ key[9-i]]; - } - -/* -* Clear memory of sensitive data -*/ -void Skipjack::clear() - { - zap(FTAB); - } - -} diff --git a/src/lib/block/skipjack/skipjack.h b/src/lib/block/skipjack/skipjack.h deleted file mode 100644 index 60a55c8a5..000000000 --- a/src/lib/block/skipjack/skipjack.h +++ /dev/null @@ -1,35 +0,0 @@ -/* -* Skipjack -* (C) 1999-2007 Jack Lloyd -* -* Distributed under the terms of the Botan license -*/ - -#ifndef BOTAN_SKIPJACK_H__ -#define BOTAN_SKIPJACK_H__ - -#include <botan/block_cipher.h> - -namespace Botan { - -/** -* Skipjack, a NSA designed cipher used in Fortezza -*/ -class BOTAN_DLL Skipjack : public Block_Cipher_Fixed_Params<8, 10> - { - public: - void encrypt_n(const byte in[], byte out[], size_t blocks) const; - void decrypt_n(const byte in[], byte out[], size_t blocks) const; - - void clear(); - std::string name() const { return "Skipjack"; } - BlockCipher* clone() const { return new Skipjack; } - private: - void key_schedule(const byte[], size_t); - - secure_vector<byte> FTAB; - }; - -} - -#endif diff --git a/src/lib/block/square/info.txt b/src/lib/block/square/info.txt deleted file mode 100644 index 1335b35b2..000000000 --- a/src/lib/block/square/info.txt +++ /dev/null @@ -1 +0,0 @@ -define SQUARE 20131128 diff --git a/src/lib/block/square/sqr_tab.cpp b/src/lib/block/square/sqr_tab.cpp deleted file mode 100644 index 331bf3ea1..000000000 --- a/src/lib/block/square/sqr_tab.cpp +++ /dev/null @@ -1,460 +0,0 @@ -/* -* S-Box and Diffusion Tables for Square -* (C) 1999-2007 Jack Lloyd -* -* Distributed under the terms of the Botan license -*/ - -#include <botan/square.h> - -namespace Botan { - -const byte Square::SE[256] = { -0xB1, 0xCE, 0xC3, 0x95, 0x5A, 0xAD, 0xE7, 0x02, 0x4D, 0x44, 0xFB, 0x91, 0x0C, -0x87, 0xA1, 0x50, 0xCB, 0x67, 0x54, 0xDD, 0x46, 0x8F, 0xE1, 0x4E, 0xF0, 0xFD, -0xFC, 0xEB, 0xF9, 0xC4, 0x1A, 0x6E, 0x5E, 0xF5, 0xCC, 0x8D, 0x1C, 0x56, 0x43, -0xFE, 0x07, 0x61, 0xF8, 0x75, 0x59, 0xFF, 0x03, 0x22, 0x8A, 0xD1, 0x13, 0xEE, -0x88, 0x00, 0x0E, 0x34, 0x15, 0x80, 0x94, 0xE3, 0xED, 0xB5, 0x53, 0x23, 0x4B, -0x47, 0x17, 0xA7, 0x90, 0x35, 0xAB, 0xD8, 0xB8, 0xDF, 0x4F, 0x57, 0x9A, 0x92, -0xDB, 0x1B, 0x3C, 0xC8, 0x99, 0x04, 0x8E, 0xE0, 0xD7, 0x7D, 0x85, 0xBB, 0x40, -0x2C, 0x3A, 0x45, 0xF1, 0x42, 0x65, 0x20, 0x41, 0x18, 0x72, 0x25, 0x93, 0x70, -0x36, 0x05, 0xF2, 0x0B, 0xA3, 0x79, 0xEC, 0x08, 0x27, 0x31, 0x32, 0xB6, 0x7C, -0xB0, 0x0A, 0x73, 0x5B, 0x7B, 0xB7, 0x81, 0xD2, 0x0D, 0x6A, 0x26, 0x9E, 0x58, -0x9C, 0x83, 0x74, 0xB3, 0xAC, 0x30, 0x7A, 0x69, 0x77, 0x0F, 0xAE, 0x21, 0xDE, -0xD0, 0x2E, 0x97, 0x10, 0xA4, 0x98, 0xA8, 0xD4, 0x68, 0x2D, 0x62, 0x29, 0x6D, -0x16, 0x49, 0x76, 0xC7, 0xE8, 0xC1, 0x96, 0x37, 0xE5, 0xCA, 0xF4, 0xE9, 0x63, -0x12, 0xC2, 0xA6, 0x14, 0xBC, 0xD3, 0x28, 0xAF, 0x2F, 0xE6, 0x24, 0x52, 0xC6, -0xA0, 0x09, 0xBD, 0x8C, 0xCF, 0x5D, 0x11, 0x5F, 0x01, 0xC5, 0x9F, 0x3D, 0xA2, -0x9B, 0xC9, 0x3B, 0xBE, 0x51, 0x19, 0x1F, 0x3F, 0x5C, 0xB2, 0xEF, 0x4A, 0xCD, -0xBF, 0xBA, 0x6F, 0x64, 0xD9, 0xF3, 0x3E, 0xB4, 0xAA, 0xDC, 0xD5, 0x06, 0xC0, -0x7E, 0xF6, 0x66, 0x6C, 0x84, 0x71, 0x38, 0xB9, 0x1D, 0x7F, 0x9D, 0x48, 0x8B, -0x2A, 0xDA, 0xA5, 0x33, 0x82, 0x39, 0xD6, 0x78, 0x86, 0xFA, 0xE4, 0x2B, 0xA9, -0x1E, 0x89, 0x60, 0x6B, 0xEA, 0x55, 0x4C, 0xF7, 0xE2 }; - -const byte Square::SD[256] = { -0x35, 0xBE, 0x07, 0x2E, 0x53, 0x69, 0xDB, 0x28, 0x6F, 0xB7, 0x76, 0x6B, 0x0C, -0x7D, 0x36, 0x8B, 0x92, 0xBC, 0xA9, 0x32, 0xAC, 0x38, 0x9C, 0x42, 0x63, 0xC8, -0x1E, 0x4F, 0x24, 0xE5, 0xF7, 0xC9, 0x61, 0x8D, 0x2F, 0x3F, 0xB3, 0x65, 0x7F, -0x70, 0xAF, 0x9A, 0xEA, 0xF5, 0x5B, 0x98, 0x90, 0xB1, 0x87, 0x71, 0x72, 0xED, -0x37, 0x45, 0x68, 0xA3, 0xE3, 0xEF, 0x5C, 0xC5, 0x50, 0xC1, 0xD6, 0xCA, 0x5A, -0x62, 0x5F, 0x26, 0x09, 0x5D, 0x14, 0x41, 0xE8, 0x9D, 0xCE, 0x40, 0xFD, 0x08, -0x17, 0x4A, 0x0F, 0xC7, 0xB4, 0x3E, 0x12, 0xFC, 0x25, 0x4B, 0x81, 0x2C, 0x04, -0x78, 0xCB, 0xBB, 0x20, 0xBD, 0xF9, 0x29, 0x99, 0xA8, 0xD3, 0x60, 0xDF, 0x11, -0x97, 0x89, 0x7E, 0xFA, 0xE0, 0x9B, 0x1F, 0xD2, 0x67, 0xE2, 0x64, 0x77, 0x84, -0x2B, 0x9E, 0x8A, 0xF1, 0x6D, 0x88, 0x79, 0x74, 0x57, 0xDD, 0xE6, 0x39, 0x7B, -0xEE, 0x83, 0xE1, 0x58, 0xF2, 0x0D, 0x34, 0xF8, 0x30, 0xE9, 0xB9, 0x23, 0x54, -0x15, 0x44, 0x0B, 0x4D, 0x66, 0x3A, 0x03, 0xA2, 0x91, 0x94, 0x52, 0x4C, 0xC3, -0x82, 0xE7, 0x80, 0xC0, 0xB6, 0x0E, 0xC2, 0x6C, 0x93, 0xEC, 0xAB, 0x43, 0x95, -0xF6, 0xD8, 0x46, 0x86, 0x05, 0x8C, 0xB0, 0x75, 0x00, 0xCC, 0x85, 0xD7, 0x3D, -0x73, 0x7A, 0x48, 0xE4, 0xD1, 0x59, 0xAD, 0xB8, 0xC6, 0xD0, 0xDC, 0xA1, 0xAA, -0x02, 0x1D, 0xBF, 0xB5, 0x9F, 0x51, 0xC4, 0xA5, 0x10, 0x22, 0xCF, 0x01, 0xBA, -0x8F, 0x31, 0x7C, 0xAE, 0x96, 0xDA, 0xF0, 0x56, 0x47, 0xD4, 0xEB, 0x4E, 0xD9, -0x13, 0x8E, 0x49, 0x55, 0x16, 0xFF, 0x3B, 0xF4, 0xA4, 0xB2, 0x06, 0xA0, 0xA7, -0xFB, 0x1B, 0x6E, 0x3C, 0x33, 0xCD, 0x18, 0x5E, 0x6A, 0xD5, 0xA6, 0x21, 0xDE, -0xFE, 0x2A, 0x1C, 0xF3, 0x0A, 0x1A, 0x19, 0x27, 0x2D }; - -const byte Square::Log[256] = { -0x00, 0x00, 0x01, 0x86, 0x02, 0x0D, 0x87, 0x4C, 0x03, 0xD2, 0x0E, 0xAE, 0x88, -0x22, 0x4D, 0x93, 0x04, 0x1A, 0xD3, 0xCB, 0x0F, 0x98, 0xAF, 0xA8, 0x89, 0xF0, -0x23, 0x59, 0x4E, 0x35, 0x94, 0x09, 0x05, 0x8F, 0x1B, 0x6E, 0xD4, 0x39, 0xCC, -0xBB, 0x10, 0x68, 0x99, 0x77, 0xB0, 0xDF, 0xA9, 0x72, 0x8A, 0xFA, 0xF1, 0xA0, -0x24, 0x52, 0x5A, 0x60, 0x4F, 0x2F, 0x36, 0xDC, 0x95, 0x32, 0x0A, 0x1F, 0x06, -0xA5, 0x90, 0x49, 0x1C, 0x5D, 0x6F, 0xB8, 0xD5, 0xC1, 0x3A, 0xB5, 0xCD, 0x63, -0xBC, 0x3D, 0x11, 0x44, 0x69, 0x81, 0x9A, 0x27, 0x78, 0xC4, 0xB1, 0xE6, 0xE0, -0xEA, 0xAA, 0x55, 0x73, 0xD8, 0x8B, 0xF6, 0xFB, 0x16, 0xF2, 0xF4, 0xA1, 0x40, -0x25, 0x42, 0x53, 0xE4, 0x5B, 0xA3, 0x61, 0xBF, 0x50, 0xF8, 0x30, 0x2D, 0x37, -0x8D, 0xDD, 0x66, 0x96, 0x18, 0x33, 0xEE, 0x0B, 0xFD, 0x20, 0xD0, 0x07, 0x57, -0xA6, 0xC9, 0x91, 0xAC, 0x4A, 0x84, 0x1D, 0xDA, 0x5E, 0x9E, 0x70, 0x75, 0xB9, -0x6C, 0xD6, 0xE8, 0xC2, 0x7F, 0x3B, 0xB3, 0xB6, 0x47, 0xCE, 0xEC, 0x64, 0x2B, -0xBD, 0xE2, 0x3E, 0x14, 0x12, 0x29, 0x45, 0x7D, 0x6A, 0x9C, 0x82, 0xC7, 0x9B, -0xC6, 0x28, 0x7C, 0x79, 0x7A, 0xC5, 0x7B, 0xB2, 0x46, 0xE7, 0x7E, 0xE1, 0x13, -0xEB, 0x2A, 0xAB, 0x83, 0x56, 0xC8, 0x74, 0x6B, 0xD9, 0x9D, 0x8C, 0x65, 0xF7, -0x2C, 0xFC, 0xCF, 0x17, 0xED, 0xF3, 0x3F, 0xF5, 0x15, 0xA2, 0xBE, 0x41, 0xE3, -0x26, 0xC3, 0x43, 0x80, 0x54, 0xD7, 0xE5, 0xE9, 0x5C, 0xB7, 0xA4, 0x48, 0x62, -0x3C, 0xC0, 0xB4, 0x51, 0x5F, 0xF9, 0x9F, 0x31, 0x1E, 0x2E, 0xDB, 0x38, 0xBA, -0x8E, 0x6D, 0xDE, 0x71, 0x67, 0x76, 0x97, 0xA7, 0x19, 0xCA, 0x34, 0x08, 0xEF, -0x58, 0x0C, 0x4B, 0xFE, 0x85, 0x21, 0x92, 0xD1, 0xAD }; - -const byte Square::ALog[255] = { -0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0xF5, 0x1F, 0x3E, 0x7C, 0xF8, -0x05, 0x0A, 0x14, 0x28, 0x50, 0xA0, 0xB5, 0x9F, 0xCB, 0x63, 0xC6, 0x79, 0xF2, -0x11, 0x22, 0x44, 0x88, 0xE5, 0x3F, 0x7E, 0xFC, 0x0D, 0x1A, 0x34, 0x68, 0xD0, -0x55, 0xAA, 0xA1, 0xB7, 0x9B, 0xC3, 0x73, 0xE6, 0x39, 0x72, 0xE4, 0x3D, 0x7A, -0xF4, 0x1D, 0x3A, 0x74, 0xE8, 0x25, 0x4A, 0x94, 0xDD, 0x4F, 0x9E, 0xC9, 0x67, -0xCE, 0x69, 0xD2, 0x51, 0xA2, 0xB1, 0x97, 0xDB, 0x43, 0x86, 0xF9, 0x07, 0x0E, -0x1C, 0x38, 0x70, 0xE0, 0x35, 0x6A, 0xD4, 0x5D, 0xBA, 0x81, 0xF7, 0x1B, 0x36, -0x6C, 0xD8, 0x45, 0x8A, 0xE1, 0x37, 0x6E, 0xDC, 0x4D, 0x9A, 0xC1, 0x77, 0xEE, -0x29, 0x52, 0xA4, 0xBD, 0x8F, 0xEB, 0x23, 0x46, 0x8C, 0xED, 0x2F, 0x5E, 0xBC, -0x8D, 0xEF, 0x2B, 0x56, 0xAC, 0xAD, 0xAF, 0xAB, 0xA3, 0xB3, 0x93, 0xD3, 0x53, -0xA6, 0xB9, 0x87, 0xFB, 0x03, 0x06, 0x0C, 0x18, 0x30, 0x60, 0xC0, 0x75, 0xEA, -0x21, 0x42, 0x84, 0xFD, 0x0F, 0x1E, 0x3C, 0x78, 0xF0, 0x15, 0x2A, 0x54, 0xA8, -0xA5, 0xBF, 0x8B, 0xE3, 0x33, 0x66, 0xCC, 0x6D, 0xDA, 0x41, 0x82, 0xF1, 0x17, -0x2E, 0x5C, 0xB8, 0x85, 0xFF, 0x0B, 0x16, 0x2C, 0x58, 0xB0, 0x95, 0xDF, 0x4B, -0x96, 0xD9, 0x47, 0x8E, 0xE9, 0x27, 0x4E, 0x9C, 0xCD, 0x6F, 0xDE, 0x49, 0x92, -0xD1, 0x57, 0xAE, 0xA9, 0xA7, 0xBB, 0x83, 0xF3, 0x13, 0x26, 0x4C, 0x98, 0xC5, -0x7F, 0xFE, 0x09, 0x12, 0x24, 0x48, 0x90, 0xD5, 0x5F, 0xBE, 0x89, 0xE7, 0x3B, -0x76, 0xEC, 0x2D, 0x5A, 0xB4, 0x9D, 0xCF, 0x6B, 0xD6, 0x59, 0xB2, 0x91, 0xD7, -0x5B, 0xB6, 0x99, 0xC7, 0x7B, 0xF6, 0x19, 0x32, 0x64, 0xC8, 0x65, 0xCA, 0x61, -0xC2, 0x71, 0xE2, 0x31, 0x62, 0xC4, 0x7D, 0xFA }; - -const u32bit Square::TE0[256] = { -0x97B1B126, 0x69CECEA7, 0x73C3C3B0, 0xDF95954A, 0xB45A5AEE, 0xAFADAD02, -0x3BE7E7DC, 0x04020206, 0x9A4D4DD7, 0x884444CC, 0x03FBFBF8, 0xD7919146, -0x180C0C14, 0xFB87877C, 0xB7A1A116, 0xA05050F0, 0x63CBCBA8, 0xCE6767A9, -0xA85454FC, 0x4FDDDD92, 0x8C4646CA, 0xEB8F8F64, 0x37E1E1D6, 0x9C4E4ED2, -0x15F0F0E5, 0x0FFDFDF2, 0x0DFCFCF1, 0x23EBEBC8, 0x07F9F9FE, 0x7DC4C4B9, -0x341A1A2E, 0xDC6E6EB2, 0xBC5E5EE2, 0x1FF5F5EA, 0x6DCCCCA1, 0xEF8D8D62, -0x381C1C24, 0xAC5656FA, 0x864343C5, 0x09FEFEF7, 0x0E070709, 0xC26161A3, -0x05F8F8FD, 0xEA75759F, 0xB25959EB, 0x0BFFFFF4, 0x06030305, 0x44222266, -0xE18A8A6B, 0x57D1D186, 0x26131335, 0x29EEEEC7, 0xE588886D, 0x00000000, -0x1C0E0E12, 0x6834345C, 0x2A15153F, 0xF5808075, 0xDD949449, 0x33E3E3D0, -0x2FEDEDC2, 0x9FB5B52A, 0xA65353F5, 0x46232365, 0x964B4BDD, 0x8E4747C9, -0x2E171739, 0xBBA7A71C, 0xD5909045, 0x6A35355F, 0xA3ABAB08, 0x45D8D89D, -0x85B8B83D, 0x4BDFDF94, 0x9E4F4FD1, 0xAE5757F9, 0xC19A9A5B, 0xD1929243, -0x43DBDB98, 0x361B1B2D, 0x783C3C44, 0x65C8C8AD, 0xC799995E, 0x0804040C, -0xE98E8E67, 0x35E0E0D5, 0x5BD7D78C, 0xFA7D7D87, 0xFF85857A, 0x83BBBB38, -0x804040C0, 0x582C2C74, 0x743A3A4E, 0x8A4545CF, 0x17F1F1E6, 0x844242C6, -0xCA6565AF, 0x40202060, 0x824141C3, 0x30181828, 0xE4727296, 0x4A25256F, -0xD3939340, 0xE0707090, 0x6C36365A, 0x0A05050F, 0x11F2F2E3, 0x160B0B1D, -0xB3A3A310, 0xF279798B, 0x2DECECC1, 0x10080818, 0x4E272769, 0x62313153, -0x64323256, 0x99B6B62F, 0xF87C7C84, 0x95B0B025, 0x140A0A1E, 0xE6737395, -0xB65B5BED, 0xF67B7B8D, 0x9BB7B72C, 0xF7818176, 0x51D2D283, 0x1A0D0D17, -0xD46A6ABE, 0x4C26266A, 0xC99E9E57, 0xB05858E8, 0xCD9C9C51, 0xF3838370, -0xE874749C, 0x93B3B320, 0xADACAC01, 0x60303050, 0xF47A7A8E, 0xD26969BB, -0xEE777799, 0x1E0F0F11, 0xA9AEAE07, 0x42212163, 0x49DEDE97, 0x55D0D085, -0x5C2E2E72, 0xDB97974C, 0x20101030, 0xBDA4A419, 0xC598985D, 0xA5A8A80D, -0x5DD4D489, 0xD06868B8, 0x5A2D2D77, 0xC46262A6, 0x5229297B, 0xDA6D6DB7, -0x2C16163A, 0x924949DB, 0xEC76769A, 0x7BC7C7BC, 0x25E8E8CD, 0x77C1C1B6, -0xD996964F, 0x6E373759, 0x3FE5E5DA, 0x61CACAAB, 0x1DF4F4E9, 0x27E9E9CE, -0xC66363A5, 0x24121236, 0x71C2C2B3, 0xB9A6A61F, 0x2814143C, 0x8DBCBC31, -0x53D3D380, 0x50282878, 0xABAFAF04, 0x5E2F2F71, 0x39E6E6DF, 0x4824246C, -0xA45252F6, 0x79C6C6BF, 0xB5A0A015, 0x1209091B, 0x8FBDBD32, 0xED8C8C61, -0x6BCFCFA4, 0xBA5D5DE7, 0x22111133, 0xBE5F5FE1, 0x02010103, 0x7FC5C5BA, -0xCB9F9F54, 0x7A3D3D47, 0xB1A2A213, 0xC39B9B58, 0x67C9C9AE, 0x763B3B4D, -0x89BEBE37, 0xA25151F3, 0x3219192B, 0x3E1F1F21, 0x7E3F3F41, 0xB85C5CE4, -0x91B2B223, 0x2BEFEFC4, 0x944A4ADE, 0x6FCDCDA2, 0x8BBFBF34, 0x81BABA3B, -0xDE6F6FB1, 0xC86464AC, 0x47D9D99E, 0x13F3F3E0, 0x7C3E3E42, 0x9DB4B429, -0xA1AAAA0B, 0x4DDCDC91, 0x5FD5D58A, 0x0C06060A, 0x75C0C0B5, 0xFC7E7E82, -0x19F6F6EF, 0xCC6666AA, 0xD86C6CB4, 0xFD848479, 0xE2717193, 0x70383848, -0x87B9B93E, 0x3A1D1D27, 0xFE7F7F81, 0xCF9D9D52, 0x904848D8, 0xE38B8B68, -0x542A2A7E, 0x41DADA9B, 0xBFA5A51A, 0x66333355, 0xF1828273, 0x7239394B, -0x59D6D68F, 0xF0787888, 0xF986867F, 0x01FAFAFB, 0x3DE4E4D9, 0x562B2B7D, -0xA7A9A90E, 0x3C1E1E22, 0xE789896E, 0xC06060A0, 0xD66B6BBD, 0x21EAEACB, -0xAA5555FF, 0x984C4CD4, 0x1BF7F7EC, 0x31E2E2D3 }; - -const u32bit Square::TE1[256] = { -0x2697B1B1, 0xA769CECE, 0xB073C3C3, 0x4ADF9595, 0xEEB45A5A, 0x02AFADAD, -0xDC3BE7E7, 0x06040202, 0xD79A4D4D, 0xCC884444, 0xF803FBFB, 0x46D79191, -0x14180C0C, 0x7CFB8787, 0x16B7A1A1, 0xF0A05050, 0xA863CBCB, 0xA9CE6767, -0xFCA85454, 0x924FDDDD, 0xCA8C4646, 0x64EB8F8F, 0xD637E1E1, 0xD29C4E4E, -0xE515F0F0, 0xF20FFDFD, 0xF10DFCFC, 0xC823EBEB, 0xFE07F9F9, 0xB97DC4C4, -0x2E341A1A, 0xB2DC6E6E, 0xE2BC5E5E, 0xEA1FF5F5, 0xA16DCCCC, 0x62EF8D8D, -0x24381C1C, 0xFAAC5656, 0xC5864343, 0xF709FEFE, 0x090E0707, 0xA3C26161, -0xFD05F8F8, 0x9FEA7575, 0xEBB25959, 0xF40BFFFF, 0x05060303, 0x66442222, -0x6BE18A8A, 0x8657D1D1, 0x35261313, 0xC729EEEE, 0x6DE58888, 0x00000000, -0x121C0E0E, 0x5C683434, 0x3F2A1515, 0x75F58080, 0x49DD9494, 0xD033E3E3, -0xC22FEDED, 0x2A9FB5B5, 0xF5A65353, 0x65462323, 0xDD964B4B, 0xC98E4747, -0x392E1717, 0x1CBBA7A7, 0x45D59090, 0x5F6A3535, 0x08A3ABAB, 0x9D45D8D8, -0x3D85B8B8, 0x944BDFDF, 0xD19E4F4F, 0xF9AE5757, 0x5BC19A9A, 0x43D19292, -0x9843DBDB, 0x2D361B1B, 0x44783C3C, 0xAD65C8C8, 0x5EC79999, 0x0C080404, -0x67E98E8E, 0xD535E0E0, 0x8C5BD7D7, 0x87FA7D7D, 0x7AFF8585, 0x3883BBBB, -0xC0804040, 0x74582C2C, 0x4E743A3A, 0xCF8A4545, 0xE617F1F1, 0xC6844242, -0xAFCA6565, 0x60402020, 0xC3824141, 0x28301818, 0x96E47272, 0x6F4A2525, -0x40D39393, 0x90E07070, 0x5A6C3636, 0x0F0A0505, 0xE311F2F2, 0x1D160B0B, -0x10B3A3A3, 0x8BF27979, 0xC12DECEC, 0x18100808, 0x694E2727, 0x53623131, -0x56643232, 0x2F99B6B6, 0x84F87C7C, 0x2595B0B0, 0x1E140A0A, 0x95E67373, -0xEDB65B5B, 0x8DF67B7B, 0x2C9BB7B7, 0x76F78181, 0x8351D2D2, 0x171A0D0D, -0xBED46A6A, 0x6A4C2626, 0x57C99E9E, 0xE8B05858, 0x51CD9C9C, 0x70F38383, -0x9CE87474, 0x2093B3B3, 0x01ADACAC, 0x50603030, 0x8EF47A7A, 0xBBD26969, -0x99EE7777, 0x111E0F0F, 0x07A9AEAE, 0x63422121, 0x9749DEDE, 0x8555D0D0, -0x725C2E2E, 0x4CDB9797, 0x30201010, 0x19BDA4A4, 0x5DC59898, 0x0DA5A8A8, -0x895DD4D4, 0xB8D06868, 0x775A2D2D, 0xA6C46262, 0x7B522929, 0xB7DA6D6D, -0x3A2C1616, 0xDB924949, 0x9AEC7676, 0xBC7BC7C7, 0xCD25E8E8, 0xB677C1C1, -0x4FD99696, 0x596E3737, 0xDA3FE5E5, 0xAB61CACA, 0xE91DF4F4, 0xCE27E9E9, -0xA5C66363, 0x36241212, 0xB371C2C2, 0x1FB9A6A6, 0x3C281414, 0x318DBCBC, -0x8053D3D3, 0x78502828, 0x04ABAFAF, 0x715E2F2F, 0xDF39E6E6, 0x6C482424, -0xF6A45252, 0xBF79C6C6, 0x15B5A0A0, 0x1B120909, 0x328FBDBD, 0x61ED8C8C, -0xA46BCFCF, 0xE7BA5D5D, 0x33221111, 0xE1BE5F5F, 0x03020101, 0xBA7FC5C5, -0x54CB9F9F, 0x477A3D3D, 0x13B1A2A2, 0x58C39B9B, 0xAE67C9C9, 0x4D763B3B, -0x3789BEBE, 0xF3A25151, 0x2B321919, 0x213E1F1F, 0x417E3F3F, 0xE4B85C5C, -0x2391B2B2, 0xC42BEFEF, 0xDE944A4A, 0xA26FCDCD, 0x348BBFBF, 0x3B81BABA, -0xB1DE6F6F, 0xACC86464, 0x9E47D9D9, 0xE013F3F3, 0x427C3E3E, 0x299DB4B4, -0x0BA1AAAA, 0x914DDCDC, 0x8A5FD5D5, 0x0A0C0606, 0xB575C0C0, 0x82FC7E7E, -0xEF19F6F6, 0xAACC6666, 0xB4D86C6C, 0x79FD8484, 0x93E27171, 0x48703838, -0x3E87B9B9, 0x273A1D1D, 0x81FE7F7F, 0x52CF9D9D, 0xD8904848, 0x68E38B8B, -0x7E542A2A, 0x9B41DADA, 0x1ABFA5A5, 0x55663333, 0x73F18282, 0x4B723939, -0x8F59D6D6, 0x88F07878, 0x7FF98686, 0xFB01FAFA, 0xD93DE4E4, 0x7D562B2B, -0x0EA7A9A9, 0x223C1E1E, 0x6EE78989, 0xA0C06060, 0xBDD66B6B, 0xCB21EAEA, -0xFFAA5555, 0xD4984C4C, 0xEC1BF7F7, 0xD331E2E2 }; - -const u32bit Square::TE2[256] = { -0xB12697B1, 0xCEA769CE, 0xC3B073C3, 0x954ADF95, 0x5AEEB45A, 0xAD02AFAD, -0xE7DC3BE7, 0x02060402, 0x4DD79A4D, 0x44CC8844, 0xFBF803FB, 0x9146D791, -0x0C14180C, 0x877CFB87, 0xA116B7A1, 0x50F0A050, 0xCBA863CB, 0x67A9CE67, -0x54FCA854, 0xDD924FDD, 0x46CA8C46, 0x8F64EB8F, 0xE1D637E1, 0x4ED29C4E, -0xF0E515F0, 0xFDF20FFD, 0xFCF10DFC, 0xEBC823EB, 0xF9FE07F9, 0xC4B97DC4, -0x1A2E341A, 0x6EB2DC6E, 0x5EE2BC5E, 0xF5EA1FF5, 0xCCA16DCC, 0x8D62EF8D, -0x1C24381C, 0x56FAAC56, 0x43C58643, 0xFEF709FE, 0x07090E07, 0x61A3C261, -0xF8FD05F8, 0x759FEA75, 0x59EBB259, 0xFFF40BFF, 0x03050603, 0x22664422, -0x8A6BE18A, 0xD18657D1, 0x13352613, 0xEEC729EE, 0x886DE588, 0x00000000, -0x0E121C0E, 0x345C6834, 0x153F2A15, 0x8075F580, 0x9449DD94, 0xE3D033E3, -0xEDC22FED, 0xB52A9FB5, 0x53F5A653, 0x23654623, 0x4BDD964B, 0x47C98E47, -0x17392E17, 0xA71CBBA7, 0x9045D590, 0x355F6A35, 0xAB08A3AB, 0xD89D45D8, -0xB83D85B8, 0xDF944BDF, 0x4FD19E4F, 0x57F9AE57, 0x9A5BC19A, 0x9243D192, -0xDB9843DB, 0x1B2D361B, 0x3C44783C, 0xC8AD65C8, 0x995EC799, 0x040C0804, -0x8E67E98E, 0xE0D535E0, 0xD78C5BD7, 0x7D87FA7D, 0x857AFF85, 0xBB3883BB, -0x40C08040, 0x2C74582C, 0x3A4E743A, 0x45CF8A45, 0xF1E617F1, 0x42C68442, -0x65AFCA65, 0x20604020, 0x41C38241, 0x18283018, 0x7296E472, 0x256F4A25, -0x9340D393, 0x7090E070, 0x365A6C36, 0x050F0A05, 0xF2E311F2, 0x0B1D160B, -0xA310B3A3, 0x798BF279, 0xECC12DEC, 0x08181008, 0x27694E27, 0x31536231, -0x32566432, 0xB62F99B6, 0x7C84F87C, 0xB02595B0, 0x0A1E140A, 0x7395E673, -0x5BEDB65B, 0x7B8DF67B, 0xB72C9BB7, 0x8176F781, 0xD28351D2, 0x0D171A0D, -0x6ABED46A, 0x266A4C26, 0x9E57C99E, 0x58E8B058, 0x9C51CD9C, 0x8370F383, -0x749CE874, 0xB32093B3, 0xAC01ADAC, 0x30506030, 0x7A8EF47A, 0x69BBD269, -0x7799EE77, 0x0F111E0F, 0xAE07A9AE, 0x21634221, 0xDE9749DE, 0xD08555D0, -0x2E725C2E, 0x974CDB97, 0x10302010, 0xA419BDA4, 0x985DC598, 0xA80DA5A8, -0xD4895DD4, 0x68B8D068, 0x2D775A2D, 0x62A6C462, 0x297B5229, 0x6DB7DA6D, -0x163A2C16, 0x49DB9249, 0x769AEC76, 0xC7BC7BC7, 0xE8CD25E8, 0xC1B677C1, -0x964FD996, 0x37596E37, 0xE5DA3FE5, 0xCAAB61CA, 0xF4E91DF4, 0xE9CE27E9, -0x63A5C663, 0x12362412, 0xC2B371C2, 0xA61FB9A6, 0x143C2814, 0xBC318DBC, -0xD38053D3, 0x28785028, 0xAF04ABAF, 0x2F715E2F, 0xE6DF39E6, 0x246C4824, -0x52F6A452, 0xC6BF79C6, 0xA015B5A0, 0x091B1209, 0xBD328FBD, 0x8C61ED8C, -0xCFA46BCF, 0x5DE7BA5D, 0x11332211, 0x5FE1BE5F, 0x01030201, 0xC5BA7FC5, -0x9F54CB9F, 0x3D477A3D, 0xA213B1A2, 0x9B58C39B, 0xC9AE67C9, 0x3B4D763B, -0xBE3789BE, 0x51F3A251, 0x192B3219, 0x1F213E1F, 0x3F417E3F, 0x5CE4B85C, -0xB22391B2, 0xEFC42BEF, 0x4ADE944A, 0xCDA26FCD, 0xBF348BBF, 0xBA3B81BA, -0x6FB1DE6F, 0x64ACC864, 0xD99E47D9, 0xF3E013F3, 0x3E427C3E, 0xB4299DB4, -0xAA0BA1AA, 0xDC914DDC, 0xD58A5FD5, 0x060A0C06, 0xC0B575C0, 0x7E82FC7E, -0xF6EF19F6, 0x66AACC66, 0x6CB4D86C, 0x8479FD84, 0x7193E271, 0x38487038, -0xB93E87B9, 0x1D273A1D, 0x7F81FE7F, 0x9D52CF9D, 0x48D89048, 0x8B68E38B, -0x2A7E542A, 0xDA9B41DA, 0xA51ABFA5, 0x33556633, 0x8273F182, 0x394B7239, -0xD68F59D6, 0x7888F078, 0x867FF986, 0xFAFB01FA, 0xE4D93DE4, 0x2B7D562B, -0xA90EA7A9, 0x1E223C1E, 0x896EE789, 0x60A0C060, 0x6BBDD66B, 0xEACB21EA, -0x55FFAA55, 0x4CD4984C, 0xF7EC1BF7, 0xE2D331E2 }; - -const u32bit Square::TE3[256] = { -0xB1B12697, 0xCECEA769, 0xC3C3B073, 0x95954ADF, 0x5A5AEEB4, 0xADAD02AF, -0xE7E7DC3B, 0x02020604, 0x4D4DD79A, 0x4444CC88, 0xFBFBF803, 0x919146D7, -0x0C0C1418, 0x87877CFB, 0xA1A116B7, 0x5050F0A0, 0xCBCBA863, 0x6767A9CE, -0x5454FCA8, 0xDDDD924F, 0x4646CA8C, 0x8F8F64EB, 0xE1E1D637, 0x4E4ED29C, -0xF0F0E515, 0xFDFDF20F, 0xFCFCF10D, 0xEBEBC823, 0xF9F9FE07, 0xC4C4B97D, -0x1A1A2E34, 0x6E6EB2DC, 0x5E5EE2BC, 0xF5F5EA1F, 0xCCCCA16D, 0x8D8D62EF, -0x1C1C2438, 0x5656FAAC, 0x4343C586, 0xFEFEF709, 0x0707090E, 0x6161A3C2, -0xF8F8FD05, 0x75759FEA, 0x5959EBB2, 0xFFFFF40B, 0x03030506, 0x22226644, -0x8A8A6BE1, 0xD1D18657, 0x13133526, 0xEEEEC729, 0x88886DE5, 0x00000000, -0x0E0E121C, 0x34345C68, 0x15153F2A, 0x808075F5, 0x949449DD, 0xE3E3D033, -0xEDEDC22F, 0xB5B52A9F, 0x5353F5A6, 0x23236546, 0x4B4BDD96, 0x4747C98E, -0x1717392E, 0xA7A71CBB, 0x909045D5, 0x35355F6A, 0xABAB08A3, 0xD8D89D45, -0xB8B83D85, 0xDFDF944B, 0x4F4FD19E, 0x5757F9AE, 0x9A9A5BC1, 0x929243D1, -0xDBDB9843, 0x1B1B2D36, 0x3C3C4478, 0xC8C8AD65, 0x99995EC7, 0x04040C08, -0x8E8E67E9, 0xE0E0D535, 0xD7D78C5B, 0x7D7D87FA, 0x85857AFF, 0xBBBB3883, -0x4040C080, 0x2C2C7458, 0x3A3A4E74, 0x4545CF8A, 0xF1F1E617, 0x4242C684, -0x6565AFCA, 0x20206040, 0x4141C382, 0x18182830, 0x727296E4, 0x25256F4A, -0x939340D3, 0x707090E0, 0x36365A6C, 0x05050F0A, 0xF2F2E311, 0x0B0B1D16, -0xA3A310B3, 0x79798BF2, 0xECECC12D, 0x08081810, 0x2727694E, 0x31315362, -0x32325664, 0xB6B62F99, 0x7C7C84F8, 0xB0B02595, 0x0A0A1E14, 0x737395E6, -0x5B5BEDB6, 0x7B7B8DF6, 0xB7B72C9B, 0x818176F7, 0xD2D28351, 0x0D0D171A, -0x6A6ABED4, 0x26266A4C, 0x9E9E57C9, 0x5858E8B0, 0x9C9C51CD, 0x838370F3, -0x74749CE8, 0xB3B32093, 0xACAC01AD, 0x30305060, 0x7A7A8EF4, 0x6969BBD2, -0x777799EE, 0x0F0F111E, 0xAEAE07A9, 0x21216342, 0xDEDE9749, 0xD0D08555, -0x2E2E725C, 0x97974CDB, 0x10103020, 0xA4A419BD, 0x98985DC5, 0xA8A80DA5, -0xD4D4895D, 0x6868B8D0, 0x2D2D775A, 0x6262A6C4, 0x29297B52, 0x6D6DB7DA, -0x16163A2C, 0x4949DB92, 0x76769AEC, 0xC7C7BC7B, 0xE8E8CD25, 0xC1C1B677, -0x96964FD9, 0x3737596E, 0xE5E5DA3F, 0xCACAAB61, 0xF4F4E91D, 0xE9E9CE27, -0x6363A5C6, 0x12123624, 0xC2C2B371, 0xA6A61FB9, 0x14143C28, 0xBCBC318D, -0xD3D38053, 0x28287850, 0xAFAF04AB, 0x2F2F715E, 0xE6E6DF39, 0x24246C48, -0x5252F6A4, 0xC6C6BF79, 0xA0A015B5, 0x09091B12, 0xBDBD328F, 0x8C8C61ED, -0xCFCFA46B, 0x5D5DE7BA, 0x11113322, 0x5F5FE1BE, 0x01010302, 0xC5C5BA7F, -0x9F9F54CB, 0x3D3D477A, 0xA2A213B1, 0x9B9B58C3, 0xC9C9AE67, 0x3B3B4D76, -0xBEBE3789, 0x5151F3A2, 0x19192B32, 0x1F1F213E, 0x3F3F417E, 0x5C5CE4B8, -0xB2B22391, 0xEFEFC42B, 0x4A4ADE94, 0xCDCDA26F, 0xBFBF348B, 0xBABA3B81, -0x6F6FB1DE, 0x6464ACC8, 0xD9D99E47, 0xF3F3E013, 0x3E3E427C, 0xB4B4299D, -0xAAAA0BA1, 0xDCDC914D, 0xD5D58A5F, 0x06060A0C, 0xC0C0B575, 0x7E7E82FC, -0xF6F6EF19, 0x6666AACC, 0x6C6CB4D8, 0x848479FD, 0x717193E2, 0x38384870, -0xB9B93E87, 0x1D1D273A, 0x7F7F81FE, 0x9D9D52CF, 0x4848D890, 0x8B8B68E3, -0x2A2A7E54, 0xDADA9B41, 0xA5A51ABF, 0x33335566, 0x828273F1, 0x39394B72, -0xD6D68F59, 0x787888F0, 0x86867FF9, 0xFAFAFB01, 0xE4E4D93D, 0x2B2B7D56, -0xA9A90EA7, 0x1E1E223C, 0x89896EE7, 0x6060A0C0, 0x6B6BBDD6, 0xEAEACB21, -0x5555FFAA, 0x4C4CD498, 0xF7F7EC1B, 0xE2E2D331 }; - -const u32bit Square::TD0[256] = { -0xE368BC02, 0x5585620C, 0x2A3F2331, 0x61AB13F7, 0x98D46D72, 0x21CB9A19, -0x3C22A461, 0x459D3DCD, 0x05FDB423, 0x2BC4075F, 0x9B2C01C0, 0x3DD9800F, -0x486C5C74, 0xF97F7E85, 0xF173AB1F, 0xB6EDDE0E, 0x283C6BED, 0x4997781A, -0x9F2A918D, 0xC9579F33, 0xA907A8AA, 0xA50DED7D, 0x7C422D8F, 0x764DB0C9, -0x4D91E857, 0xCEA963CC, 0xB4EE96D2, 0x3028E1B6, 0x0DF161B9, 0xBD196726, -0x419BAD80, 0xC0A06EC7, 0x5183F241, 0x92DBF034, 0x6FA21EFC, 0x8F32CE4C, -0x13E03373, 0x69A7C66D, 0xE56D6493, 0xBF1A2FFA, 0xBB1CBFB7, 0x587403B5, -0xE76E2C4F, 0x5D89B796, 0xE89C052A, 0x446619A3, 0x342E71FB, 0x0FF22965, -0xFE81827A, 0xB11322F1, 0xA30835EC, 0xCD510F7E, 0xFF7AA614, 0x5C7293F8, -0x2FC29712, 0xF370E3C3, 0x992F491C, 0xD1431568, 0xC2A3261B, 0x88CC32B3, -0x8ACF7A6F, 0xB0E8069F, 0x7A47F51E, 0xD2BB79DA, 0xE6950821, 0x4398E55C, -0xD0B83106, 0x11E37BAF, 0x7E416553, 0xCCAA2B10, 0xD8B4E49C, 0x6456A7D4, -0xFB7C3659, 0x724B2084, 0xEA9F4DF6, 0x6A5FAADF, 0x2DC1DFCE, 0x70486858, -0xCAAFF381, 0x0605D891, 0x5A774B69, 0x94DE28A5, 0x39DF1042, 0x813BC347, -0xFC82CAA6, 0x23C8D2C5, 0x03F86CB2, 0x080CD59A, 0xDAB7AC40, 0x7DB909E1, -0x3824342C, 0xCF5247A2, 0xDCB274D1, 0x63A85B2B, 0x35D55595, 0x479E7511, -0x15E5EBE2, 0x4B9430C6, 0x4A6F14A8, 0x91239C86, 0x4C6ACC39, 0x5F8AFF4A, -0x0406904D, 0xEE99DDBB, 0x1E1152CA, 0xAAFFC418, 0xEB646998, 0x07FEFCFF, -0x8B345E01, 0x567D0EBE, 0xBAE79BD9, 0x4263C132, 0x75B5DC7B, 0x97264417, -0x67AECB66, 0x95250CCB, 0xEC9A9567, 0x57862AD0, 0x60503799, 0xB8E4D305, -0x65AD83BA, 0x19EFAE35, 0xA4F6C913, 0xC15B4AA9, 0x873E1BD6, 0xA0F0595E, -0x18148A5B, 0xAF02703B, 0xAB04E076, 0xDD4950BF, 0xDF4A1863, 0xC6A5B656, -0x853D530A, 0xFA871237, 0x77B694A7, 0x4665517F, 0xED61B109, 0x1BECE6E9, -0xD5458525, 0xF5753B52, 0x7FBA413D, 0x27CE4288, 0xB2EB4E43, 0xD6BDE997, -0x527B9EF3, 0x62537F45, 0x2C3AFBA0, 0x7BBCD170, 0xB91FF76B, 0x121B171D, -0xFD79EEC8, 0x3A277CF0, 0x0C0A45D7, 0x96DD6079, 0x2233F6AB, 0xACFA1C89, -0xC8ACBB5D, 0xA10B7D30, 0xD4BEA14B, 0xBEE10B94, 0x25CD0A54, 0x547E4662, -0xA2F31182, 0x17E6A33E, 0x263566E6, 0xC3580275, 0x83388B9B, 0x7844BDC2, -0x020348DC, 0x4F92A08B, 0x2E39B37C, 0x4E6984E5, 0xF0888F71, 0x362D3927, -0x9CD2FD3F, 0x01FB246E, 0x893716DD, 0x00000000, 0xF68D57E0, 0xE293986C, -0x744EF815, 0x9320D45A, 0xAD0138E7, 0xD3405DB4, 0x1A17C287, 0xB3106A2D, -0x5078D62F, 0xF48E1F3C, 0xA70EA5A1, 0x71B34C36, 0x9AD725AE, 0x5E71DB24, -0x161D8750, 0xEF62F9D5, 0x8D318690, 0x1C121A16, 0xA6F581CF, 0x5B8C6F07, -0x37D61D49, 0x6E593A92, 0x84C67764, 0x86C53FB8, 0xD746CDF9, 0xE090D0B0, -0x29C74F83, 0xE49640FD, 0x0E090D0B, 0x6DA15620, 0x8EC9EA22, 0xDB4C882E, -0xF776738E, 0xB515B2BC, 0x10185FC1, 0x322BA96A, 0x6BA48EB1, 0xAEF95455, -0x406089EE, 0x6655EF08, 0xE9672144, 0x3E21ECBD, 0x2030BE77, 0xF28BC7AD, -0x80C0E729, 0x141ECF8C, 0xBCE24348, 0xC4A6FE8A, 0x31D3C5D8, 0xB716FA60, -0x5380BA9D, 0xD94FC0F2, 0x1DE93E78, 0x24362E3A, 0xE16BF4DE, 0xCB54D7EF, -0x09F7F1F4, 0x82C3AFF5, 0x0BF4B928, 0x9D29D951, 0xC75E9238, 0xF8845AEB, -0x90D8B8E8, 0xDEB13C0D, 0x33D08D04, 0x685CE203, 0xC55DDAE4, 0x3BDC589E, -0x0A0F9D46, 0x3FDAC8D3, 0x598F27DB, 0xA8FC8CC4, 0x79BF99AC, 0x6C5A724E, -0x8CCAA2FE, 0x9ED1B5E3, 0x1FEA76A4, 0x73B004EA }; - -const u32bit Square::TD1[256] = { -0x02E368BC, 0x0C558562, 0x312A3F23, 0xF761AB13, 0x7298D46D, 0x1921CB9A, -0x613C22A4, 0xCD459D3D, 0x2305FDB4, 0x5F2BC407, 0xC09B2C01, 0x0F3DD980, -0x74486C5C, 0x85F97F7E, 0x1FF173AB, 0x0EB6EDDE, 0xED283C6B, 0x1A499778, -0x8D9F2A91, 0x33C9579F, 0xAAA907A8, 0x7DA50DED, 0x8F7C422D, 0xC9764DB0, -0x574D91E8, 0xCCCEA963, 0xD2B4EE96, 0xB63028E1, 0xB90DF161, 0x26BD1967, -0x80419BAD, 0xC7C0A06E, 0x415183F2, 0x3492DBF0, 0xFC6FA21E, 0x4C8F32CE, -0x7313E033, 0x6D69A7C6, 0x93E56D64, 0xFABF1A2F, 0xB7BB1CBF, 0xB5587403, -0x4FE76E2C, 0x965D89B7, 0x2AE89C05, 0xA3446619, 0xFB342E71, 0x650FF229, -0x7AFE8182, 0xF1B11322, 0xECA30835, 0x7ECD510F, 0x14FF7AA6, 0xF85C7293, -0x122FC297, 0xC3F370E3, 0x1C992F49, 0x68D14315, 0x1BC2A326, 0xB388CC32, -0x6F8ACF7A, 0x9FB0E806, 0x1E7A47F5, 0xDAD2BB79, 0x21E69508, 0x5C4398E5, -0x06D0B831, 0xAF11E37B, 0x537E4165, 0x10CCAA2B, 0x9CD8B4E4, 0xD46456A7, -0x59FB7C36, 0x84724B20, 0xF6EA9F4D, 0xDF6A5FAA, 0xCE2DC1DF, 0x58704868, -0x81CAAFF3, 0x910605D8, 0x695A774B, 0xA594DE28, 0x4239DF10, 0x47813BC3, -0xA6FC82CA, 0xC523C8D2, 0xB203F86C, 0x9A080CD5, 0x40DAB7AC, 0xE17DB909, -0x2C382434, 0xA2CF5247, 0xD1DCB274, 0x2B63A85B, 0x9535D555, 0x11479E75, -0xE215E5EB, 0xC64B9430, 0xA84A6F14, 0x8691239C, 0x394C6ACC, 0x4A5F8AFF, -0x4D040690, 0xBBEE99DD, 0xCA1E1152, 0x18AAFFC4, 0x98EB6469, 0xFF07FEFC, -0x018B345E, 0xBE567D0E, 0xD9BAE79B, 0x324263C1, 0x7B75B5DC, 0x17972644, -0x6667AECB, 0xCB95250C, 0x67EC9A95, 0xD057862A, 0x99605037, 0x05B8E4D3, -0xBA65AD83, 0x3519EFAE, 0x13A4F6C9, 0xA9C15B4A, 0xD6873E1B, 0x5EA0F059, -0x5B18148A, 0x3BAF0270, 0x76AB04E0, 0xBFDD4950, 0x63DF4A18, 0x56C6A5B6, -0x0A853D53, 0x37FA8712, 0xA777B694, 0x7F466551, 0x09ED61B1, 0xE91BECE6, -0x25D54585, 0x52F5753B, 0x3D7FBA41, 0x8827CE42, 0x43B2EB4E, 0x97D6BDE9, -0xF3527B9E, 0x4562537F, 0xA02C3AFB, 0x707BBCD1, 0x6BB91FF7, 0x1D121B17, -0xC8FD79EE, 0xF03A277C, 0xD70C0A45, 0x7996DD60, 0xAB2233F6, 0x89ACFA1C, -0x5DC8ACBB, 0x30A10B7D, 0x4BD4BEA1, 0x94BEE10B, 0x5425CD0A, 0x62547E46, -0x82A2F311, 0x3E17E6A3, 0xE6263566, 0x75C35802, 0x9B83388B, 0xC27844BD, -0xDC020348, 0x8B4F92A0, 0x7C2E39B3, 0xE54E6984, 0x71F0888F, 0x27362D39, -0x3F9CD2FD, 0x6E01FB24, 0xDD893716, 0x00000000, 0xE0F68D57, 0x6CE29398, -0x15744EF8, 0x5A9320D4, 0xE7AD0138, 0xB4D3405D, 0x871A17C2, 0x2DB3106A, -0x2F5078D6, 0x3CF48E1F, 0xA1A70EA5, 0x3671B34C, 0xAE9AD725, 0x245E71DB, -0x50161D87, 0xD5EF62F9, 0x908D3186, 0x161C121A, 0xCFA6F581, 0x075B8C6F, -0x4937D61D, 0x926E593A, 0x6484C677, 0xB886C53F, 0xF9D746CD, 0xB0E090D0, -0x8329C74F, 0xFDE49640, 0x0B0E090D, 0x206DA156, 0x228EC9EA, 0x2EDB4C88, -0x8EF77673, 0xBCB515B2, 0xC110185F, 0x6A322BA9, 0xB16BA48E, 0x55AEF954, -0xEE406089, 0x086655EF, 0x44E96721, 0xBD3E21EC, 0x772030BE, 0xADF28BC7, -0x2980C0E7, 0x8C141ECF, 0x48BCE243, 0x8AC4A6FE, 0xD831D3C5, 0x60B716FA, -0x9D5380BA, 0xF2D94FC0, 0x781DE93E, 0x3A24362E, 0xDEE16BF4, 0xEFCB54D7, -0xF409F7F1, 0xF582C3AF, 0x280BF4B9, 0x519D29D9, 0x38C75E92, 0xEBF8845A, -0xE890D8B8, 0x0DDEB13C, 0x0433D08D, 0x03685CE2, 0xE4C55DDA, 0x9E3BDC58, -0x460A0F9D, 0xD33FDAC8, 0xDB598F27, 0xC4A8FC8C, 0xAC79BF99, 0x4E6C5A72, -0xFE8CCAA2, 0xE39ED1B5, 0xA41FEA76, 0xEA73B004 }; - -const u32bit Square::TD2[256] = { -0xBC02E368, 0x620C5585, 0x23312A3F, 0x13F761AB, 0x6D7298D4, 0x9A1921CB, -0xA4613C22, 0x3DCD459D, 0xB42305FD, 0x075F2BC4, 0x01C09B2C, 0x800F3DD9, -0x5C74486C, 0x7E85F97F, 0xAB1FF173, 0xDE0EB6ED, 0x6BED283C, 0x781A4997, -0x918D9F2A, 0x9F33C957, 0xA8AAA907, 0xED7DA50D, 0x2D8F7C42, 0xB0C9764D, -0xE8574D91, 0x63CCCEA9, 0x96D2B4EE, 0xE1B63028, 0x61B90DF1, 0x6726BD19, -0xAD80419B, 0x6EC7C0A0, 0xF2415183, 0xF03492DB, 0x1EFC6FA2, 0xCE4C8F32, -0x337313E0, 0xC66D69A7, 0x6493E56D, 0x2FFABF1A, 0xBFB7BB1C, 0x03B55874, -0x2C4FE76E, 0xB7965D89, 0x052AE89C, 0x19A34466, 0x71FB342E, 0x29650FF2, -0x827AFE81, 0x22F1B113, 0x35ECA308, 0x0F7ECD51, 0xA614FF7A, 0x93F85C72, -0x97122FC2, 0xE3C3F370, 0x491C992F, 0x1568D143, 0x261BC2A3, 0x32B388CC, -0x7A6F8ACF, 0x069FB0E8, 0xF51E7A47, 0x79DAD2BB, 0x0821E695, 0xE55C4398, -0x3106D0B8, 0x7BAF11E3, 0x65537E41, 0x2B10CCAA, 0xE49CD8B4, 0xA7D46456, -0x3659FB7C, 0x2084724B, 0x4DF6EA9F, 0xAADF6A5F, 0xDFCE2DC1, 0x68587048, -0xF381CAAF, 0xD8910605, 0x4B695A77, 0x28A594DE, 0x104239DF, 0xC347813B, -0xCAA6FC82, 0xD2C523C8, 0x6CB203F8, 0xD59A080C, 0xAC40DAB7, 0x09E17DB9, -0x342C3824, 0x47A2CF52, 0x74D1DCB2, 0x5B2B63A8, 0x559535D5, 0x7511479E, -0xEBE215E5, 0x30C64B94, 0x14A84A6F, 0x9C869123, 0xCC394C6A, 0xFF4A5F8A, -0x904D0406, 0xDDBBEE99, 0x52CA1E11, 0xC418AAFF, 0x6998EB64, 0xFCFF07FE, -0x5E018B34, 0x0EBE567D, 0x9BD9BAE7, 0xC1324263, 0xDC7B75B5, 0x44179726, -0xCB6667AE, 0x0CCB9525, 0x9567EC9A, 0x2AD05786, 0x37996050, 0xD305B8E4, -0x83BA65AD, 0xAE3519EF, 0xC913A4F6, 0x4AA9C15B, 0x1BD6873E, 0x595EA0F0, -0x8A5B1814, 0x703BAF02, 0xE076AB04, 0x50BFDD49, 0x1863DF4A, 0xB656C6A5, -0x530A853D, 0x1237FA87, 0x94A777B6, 0x517F4665, 0xB109ED61, 0xE6E91BEC, -0x8525D545, 0x3B52F575, 0x413D7FBA, 0x428827CE, 0x4E43B2EB, 0xE997D6BD, -0x9EF3527B, 0x7F456253, 0xFBA02C3A, 0xD1707BBC, 0xF76BB91F, 0x171D121B, -0xEEC8FD79, 0x7CF03A27, 0x45D70C0A, 0x607996DD, 0xF6AB2233, 0x1C89ACFA, -0xBB5DC8AC, 0x7D30A10B, 0xA14BD4BE, 0x0B94BEE1, 0x0A5425CD, 0x4662547E, -0x1182A2F3, 0xA33E17E6, 0x66E62635, 0x0275C358, 0x8B9B8338, 0xBDC27844, -0x48DC0203, 0xA08B4F92, 0xB37C2E39, 0x84E54E69, 0x8F71F088, 0x3927362D, -0xFD3F9CD2, 0x246E01FB, 0x16DD8937, 0x00000000, 0x57E0F68D, 0x986CE293, -0xF815744E, 0xD45A9320, 0x38E7AD01, 0x5DB4D340, 0xC2871A17, 0x6A2DB310, -0xD62F5078, 0x1F3CF48E, 0xA5A1A70E, 0x4C3671B3, 0x25AE9AD7, 0xDB245E71, -0x8750161D, 0xF9D5EF62, 0x86908D31, 0x1A161C12, 0x81CFA6F5, 0x6F075B8C, -0x1D4937D6, 0x3A926E59, 0x776484C6, 0x3FB886C5, 0xCDF9D746, 0xD0B0E090, -0x4F8329C7, 0x40FDE496, 0x0D0B0E09, 0x56206DA1, 0xEA228EC9, 0x882EDB4C, -0x738EF776, 0xB2BCB515, 0x5FC11018, 0xA96A322B, 0x8EB16BA4, 0x5455AEF9, -0x89EE4060, 0xEF086655, 0x2144E967, 0xECBD3E21, 0xBE772030, 0xC7ADF28B, -0xE72980C0, 0xCF8C141E, 0x4348BCE2, 0xFE8AC4A6, 0xC5D831D3, 0xFA60B716, -0xBA9D5380, 0xC0F2D94F, 0x3E781DE9, 0x2E3A2436, 0xF4DEE16B, 0xD7EFCB54, -0xF1F409F7, 0xAFF582C3, 0xB9280BF4, 0xD9519D29, 0x9238C75E, 0x5AEBF884, -0xB8E890D8, 0x3C0DDEB1, 0x8D0433D0, 0xE203685C, 0xDAE4C55D, 0x589E3BDC, -0x9D460A0F, 0xC8D33FDA, 0x27DB598F, 0x8CC4A8FC, 0x99AC79BF, 0x724E6C5A, -0xA2FE8CCA, 0xB5E39ED1, 0x76A41FEA, 0x04EA73B0 }; - -const u32bit Square::TD3[256] = { -0x68BC02E3, 0x85620C55, 0x3F23312A, 0xAB13F761, 0xD46D7298, 0xCB9A1921, -0x22A4613C, 0x9D3DCD45, 0xFDB42305, 0xC4075F2B, 0x2C01C09B, 0xD9800F3D, -0x6C5C7448, 0x7F7E85F9, 0x73AB1FF1, 0xEDDE0EB6, 0x3C6BED28, 0x97781A49, -0x2A918D9F, 0x579F33C9, 0x07A8AAA9, 0x0DED7DA5, 0x422D8F7C, 0x4DB0C976, -0x91E8574D, 0xA963CCCE, 0xEE96D2B4, 0x28E1B630, 0xF161B90D, 0x196726BD, -0x9BAD8041, 0xA06EC7C0, 0x83F24151, 0xDBF03492, 0xA21EFC6F, 0x32CE4C8F, -0xE0337313, 0xA7C66D69, 0x6D6493E5, 0x1A2FFABF, 0x1CBFB7BB, 0x7403B558, -0x6E2C4FE7, 0x89B7965D, 0x9C052AE8, 0x6619A344, 0x2E71FB34, 0xF229650F, -0x81827AFE, 0x1322F1B1, 0x0835ECA3, 0x510F7ECD, 0x7AA614FF, 0x7293F85C, -0xC297122F, 0x70E3C3F3, 0x2F491C99, 0x431568D1, 0xA3261BC2, 0xCC32B388, -0xCF7A6F8A, 0xE8069FB0, 0x47F51E7A, 0xBB79DAD2, 0x950821E6, 0x98E55C43, -0xB83106D0, 0xE37BAF11, 0x4165537E, 0xAA2B10CC, 0xB4E49CD8, 0x56A7D464, -0x7C3659FB, 0x4B208472, 0x9F4DF6EA, 0x5FAADF6A, 0xC1DFCE2D, 0x48685870, -0xAFF381CA, 0x05D89106, 0x774B695A, 0xDE28A594, 0xDF104239, 0x3BC34781, -0x82CAA6FC, 0xC8D2C523, 0xF86CB203, 0x0CD59A08, 0xB7AC40DA, 0xB909E17D, -0x24342C38, 0x5247A2CF, 0xB274D1DC, 0xA85B2B63, 0xD5559535, 0x9E751147, -0xE5EBE215, 0x9430C64B, 0x6F14A84A, 0x239C8691, 0x6ACC394C, 0x8AFF4A5F, -0x06904D04, 0x99DDBBEE, 0x1152CA1E, 0xFFC418AA, 0x646998EB, 0xFEFCFF07, -0x345E018B, 0x7D0EBE56, 0xE79BD9BA, 0x63C13242, 0xB5DC7B75, 0x26441797, -0xAECB6667, 0x250CCB95, 0x9A9567EC, 0x862AD057, 0x50379960, 0xE4D305B8, -0xAD83BA65, 0xEFAE3519, 0xF6C913A4, 0x5B4AA9C1, 0x3E1BD687, 0xF0595EA0, -0x148A5B18, 0x02703BAF, 0x04E076AB, 0x4950BFDD, 0x4A1863DF, 0xA5B656C6, -0x3D530A85, 0x871237FA, 0xB694A777, 0x65517F46, 0x61B109ED, 0xECE6E91B, -0x458525D5, 0x753B52F5, 0xBA413D7F, 0xCE428827, 0xEB4E43B2, 0xBDE997D6, -0x7B9EF352, 0x537F4562, 0x3AFBA02C, 0xBCD1707B, 0x1FF76BB9, 0x1B171D12, -0x79EEC8FD, 0x277CF03A, 0x0A45D70C, 0xDD607996, 0x33F6AB22, 0xFA1C89AC, -0xACBB5DC8, 0x0B7D30A1, 0xBEA14BD4, 0xE10B94BE, 0xCD0A5425, 0x7E466254, -0xF31182A2, 0xE6A33E17, 0x3566E626, 0x580275C3, 0x388B9B83, 0x44BDC278, -0x0348DC02, 0x92A08B4F, 0x39B37C2E, 0x6984E54E, 0x888F71F0, 0x2D392736, -0xD2FD3F9C, 0xFB246E01, 0x3716DD89, 0x00000000, 0x8D57E0F6, 0x93986CE2, -0x4EF81574, 0x20D45A93, 0x0138E7AD, 0x405DB4D3, 0x17C2871A, 0x106A2DB3, -0x78D62F50, 0x8E1F3CF4, 0x0EA5A1A7, 0xB34C3671, 0xD725AE9A, 0x71DB245E, -0x1D875016, 0x62F9D5EF, 0x3186908D, 0x121A161C, 0xF581CFA6, 0x8C6F075B, -0xD61D4937, 0x593A926E, 0xC6776484, 0xC53FB886, 0x46CDF9D7, 0x90D0B0E0, -0xC74F8329, 0x9640FDE4, 0x090D0B0E, 0xA156206D, 0xC9EA228E, 0x4C882EDB, -0x76738EF7, 0x15B2BCB5, 0x185FC110, 0x2BA96A32, 0xA48EB16B, 0xF95455AE, -0x6089EE40, 0x55EF0866, 0x672144E9, 0x21ECBD3E, 0x30BE7720, 0x8BC7ADF2, -0xC0E72980, 0x1ECF8C14, 0xE24348BC, 0xA6FE8AC4, 0xD3C5D831, 0x16FA60B7, -0x80BA9D53, 0x4FC0F2D9, 0xE93E781D, 0x362E3A24, 0x6BF4DEE1, 0x54D7EFCB, -0xF7F1F409, 0xC3AFF582, 0xF4B9280B, 0x29D9519D, 0x5E9238C7, 0x845AEBF8, -0xD8B8E890, 0xB13C0DDE, 0xD08D0433, 0x5CE20368, 0x5DDAE4C5, 0xDC589E3B, -0x0F9D460A, 0xDAC8D33F, 0x8F27DB59, 0xFC8CC4A8, 0xBF99AC79, 0x5A724E6C, -0xCAA2FE8C, 0xD1B5E39E, 0xEA76A41F, 0xB004EA73 }; - -} diff --git a/src/lib/block/square/square.cpp b/src/lib/block/square/square.cpp deleted file mode 100644 index 544f809fc..000000000 --- a/src/lib/block/square/square.cpp +++ /dev/null @@ -1,221 +0,0 @@ -/* -* Square -* (C) 1999-2007 Jack Lloyd -* -* Based on the public domain reference implemenation -* -* Distributed under the terms of the Botan license -*/ - -#include <botan/square.h> -#include <botan/loadstor.h> -#include <botan/rotate.h> - -namespace Botan { - -/* -* Square Encryption -*/ -void Square::encrypt_n(const byte in[], byte out[], size_t blocks) const - { - for(size_t i = 0; i != blocks; ++i) - { - u32bit B0, B1, B2, B3; - - B0 = TE0[in[ 0] ^ ME[ 0]] ^ TE1[in[ 4] ^ ME[ 4]] ^ - TE2[in[ 8] ^ ME[ 8]] ^ TE3[in[12] ^ ME[12]] ^ EK[0]; - B1 = TE0[in[ 1] ^ ME[ 1]] ^ TE1[in[ 5] ^ ME[ 5]] ^ - TE2[in[ 9] ^ ME[ 9]] ^ TE3[in[13] ^ ME[13]] ^ EK[1]; - B2 = TE0[in[ 2] ^ ME[ 2]] ^ TE1[in[ 6] ^ ME[ 6]] ^ - TE2[in[10] ^ ME[10]] ^ TE3[in[14] ^ ME[14]] ^ EK[2]; - B3 = TE0[in[ 3] ^ ME[ 3]] ^ TE1[in[ 7] ^ ME[ 7]] ^ - TE2[in[11] ^ ME[11]] ^ TE3[in[15] ^ ME[15]] ^ EK[3]; - - for(size_t j = 1; j != 7; j += 2) - { - u32bit T0, T1, T2, T3; - T0 = TE0[get_byte(0, B0)] ^ TE1[get_byte(0, B1)] ^ - TE2[get_byte(0, B2)] ^ TE3[get_byte(0, B3)] ^ EK[4*j+0]; - T1 = TE0[get_byte(1, B0)] ^ TE1[get_byte(1, B1)] ^ - TE2[get_byte(1, B2)] ^ TE3[get_byte(1, B3)] ^ EK[4*j+1]; - T2 = TE0[get_byte(2, B0)] ^ TE1[get_byte(2, B1)] ^ - TE2[get_byte(2, B2)] ^ TE3[get_byte(2, B3)] ^ EK[4*j+2]; - T3 = TE0[get_byte(3, B0)] ^ TE1[get_byte(3, B1)] ^ - TE2[get_byte(3, B2)] ^ TE3[get_byte(3, B3)] ^ EK[4*j+3]; - - B0 = TE0[get_byte(0, T0)] ^ TE1[get_byte(0, T1)] ^ - TE2[get_byte(0, T2)] ^ TE3[get_byte(0, T3)] ^ EK[4*j+4]; - B1 = TE0[get_byte(1, T0)] ^ TE1[get_byte(1, T1)] ^ - TE2[get_byte(1, T2)] ^ TE3[get_byte(1, T3)] ^ EK[4*j+5]; - B2 = TE0[get_byte(2, T0)] ^ TE1[get_byte(2, T1)] ^ - TE2[get_byte(2, T2)] ^ TE3[get_byte(2, T3)] ^ EK[4*j+6]; - B3 = TE0[get_byte(3, T0)] ^ TE1[get_byte(3, T1)] ^ - TE2[get_byte(3, T2)] ^ TE3[get_byte(3, T3)] ^ EK[4*j+7]; - } - - out[ 0] = SE[get_byte(0, B0)] ^ ME[16]; - out[ 1] = SE[get_byte(0, B1)] ^ ME[17]; - out[ 2] = SE[get_byte(0, B2)] ^ ME[18]; - out[ 3] = SE[get_byte(0, B3)] ^ ME[19]; - out[ 4] = SE[get_byte(1, B0)] ^ ME[20]; - out[ 5] = SE[get_byte(1, B1)] ^ ME[21]; - out[ 6] = SE[get_byte(1, B2)] ^ ME[22]; - out[ 7] = SE[get_byte(1, B3)] ^ ME[23]; - out[ 8] = SE[get_byte(2, B0)] ^ ME[24]; - out[ 9] = SE[get_byte(2, B1)] ^ ME[25]; - out[10] = SE[get_byte(2, B2)] ^ ME[26]; - out[11] = SE[get_byte(2, B3)] ^ ME[27]; - out[12] = SE[get_byte(3, B0)] ^ ME[28]; - out[13] = SE[get_byte(3, B1)] ^ ME[29]; - out[14] = SE[get_byte(3, B2)] ^ ME[30]; - out[15] = SE[get_byte(3, B3)] ^ ME[31]; - - in += BLOCK_SIZE; - out += BLOCK_SIZE; - } - } - -/* -* Square Decryption -*/ -void Square::decrypt_n(const byte in[], byte out[], size_t blocks) const - { - for(size_t i = 0; i != blocks; ++i) - { - u32bit B0, B1, B2, B3; - - B0 = TD0[in[ 0] ^ MD[ 0]] ^ TD1[in[ 4] ^ MD[ 4]] ^ - TD2[in[ 8] ^ MD[ 8]] ^ TD3[in[12] ^ MD[12]] ^ DK[0]; - B1 = TD0[in[ 1] ^ MD[ 1]] ^ TD1[in[ 5] ^ MD[ 5]] ^ - TD2[in[ 9] ^ MD[ 9]] ^ TD3[in[13] ^ MD[13]] ^ DK[1]; - B2 = TD0[in[ 2] ^ MD[ 2]] ^ TD1[in[ 6] ^ MD[ 6]] ^ - TD2[in[10] ^ MD[10]] ^ TD3[in[14] ^ MD[14]] ^ DK[2]; - B3 = TD0[in[ 3] ^ MD[ 3]] ^ TD1[in[ 7] ^ MD[ 7]] ^ - TD2[in[11] ^ MD[11]] ^ TD3[in[15] ^ MD[15]] ^ DK[3]; - - for(size_t j = 1; j != 7; j += 2) - { - u32bit T0, T1, T2, T3; - T0 = TD0[get_byte(0, B0)] ^ TD1[get_byte(0, B1)] ^ - TD2[get_byte(0, B2)] ^ TD3[get_byte(0, B3)] ^ DK[4*j+0]; - T1 = TD0[get_byte(1, B0)] ^ TD1[get_byte(1, B1)] ^ - TD2[get_byte(1, B2)] ^ TD3[get_byte(1, B3)] ^ DK[4*j+1]; - T2 = TD0[get_byte(2, B0)] ^ TD1[get_byte(2, B1)] ^ - TD2[get_byte(2, B2)] ^ TD3[get_byte(2, B3)] ^ DK[4*j+2]; - T3 = TD0[get_byte(3, B0)] ^ TD1[get_byte(3, B1)] ^ - TD2[get_byte(3, B2)] ^ TD3[get_byte(3, B3)] ^ DK[4*j+3]; - - B0 = TD0[get_byte(0, T0)] ^ TD1[get_byte(0, T1)] ^ - TD2[get_byte(0, T2)] ^ TD3[get_byte(0, T3)] ^ DK[4*j+4]; - B1 = TD0[get_byte(1, T0)] ^ TD1[get_byte(1, T1)] ^ - TD2[get_byte(1, T2)] ^ TD3[get_byte(1, T3)] ^ DK[4*j+5]; - B2 = TD0[get_byte(2, T0)] ^ TD1[get_byte(2, T1)] ^ - TD2[get_byte(2, T2)] ^ TD3[get_byte(2, T3)] ^ DK[4*j+6]; - B3 = TD0[get_byte(3, T0)] ^ TD1[get_byte(3, T1)] ^ - TD2[get_byte(3, T2)] ^ TD3[get_byte(3, T3)] ^ DK[4*j+7]; - } - - out[ 0] = SD[get_byte(0, B0)] ^ MD[16]; - out[ 1] = SD[get_byte(0, B1)] ^ MD[17]; - out[ 2] = SD[get_byte(0, B2)] ^ MD[18]; - out[ 3] = SD[get_byte(0, B3)] ^ MD[19]; - out[ 4] = SD[get_byte(1, B0)] ^ MD[20]; - out[ 5] = SD[get_byte(1, B1)] ^ MD[21]; - out[ 6] = SD[get_byte(1, B2)] ^ MD[22]; - out[ 7] = SD[get_byte(1, B3)] ^ MD[23]; - out[ 8] = SD[get_byte(2, B0)] ^ MD[24]; - out[ 9] = SD[get_byte(2, B1)] ^ MD[25]; - out[10] = SD[get_byte(2, B2)] ^ MD[26]; - out[11] = SD[get_byte(2, B3)] ^ MD[27]; - out[12] = SD[get_byte(3, B0)] ^ MD[28]; - out[13] = SD[get_byte(3, B1)] ^ MD[29]; - out[14] = SD[get_byte(3, B2)] ^ MD[30]; - out[15] = SD[get_byte(3, B3)] ^ MD[31]; - - in += BLOCK_SIZE; - out += BLOCK_SIZE; - } - } - -/* -* Square Key Schedule -*/ -void Square::key_schedule(const byte key[], size_t) - { - secure_vector<u32bit> XEK(36), XDK(36); - - for(size_t i = 0; i != 4; ++i) - XEK[i] = load_be<u32bit>(key, i); - - for(size_t i = 0; i != 8; ++i) - { - XEK[4*i+4] = XEK[4*i ] ^ rotate_left(XEK[4*i+3], 8) ^ (0x01000000 << i); - XEK[4*i+5] = XEK[4*i+1] ^ XEK[4*i+4]; - XEK[4*i+6] = XEK[4*i+2] ^ XEK[4*i+5]; - XEK[4*i+7] = XEK[4*i+3] ^ XEK[4*i+6]; - - for(size_t j = 0; j != 4; ++j) - XDK[28 - 4*i + j] = XEK[4*(i+1)+j]; - - transform(&XEK[4*i]); - } - - EK.assign(&XEK[4], &XEK[36]); - DK.assign(&XDK[4], &XDK[36]); - - ME.resize(32); - MD.resize(32); - - for(size_t i = 0; i != 4; ++i) - for(size_t j = 0; j != 4; ++j) - { - ME[4*i+j ] = get_byte(j, XEK[i ]); - ME[4*i+j+16] = get_byte(j, XEK[i+32]); - MD[4*i+j ] = get_byte(j, XDK[i ]); - MD[4*i+j+16] = get_byte(j, XEK[i ]); - } - } - -/* -* Square's Inverse Linear Transformation -*/ -void Square::transform(u32bit round_key[4]) - { - static const byte G[4][4] = { - { 2, 1, 1, 3 }, - { 3, 2, 1, 1 }, - { 1, 3, 2, 1 }, - { 1, 1, 3, 2 } }; - - for(size_t i = 0; i != 4; ++i) - { - byte A[4] = { 0 }, B[4] = { 0 }; - - store_be(round_key[i], A); - - for(size_t j = 0; j != 4; ++j) - for(size_t k = 0; k != 4; ++k) - { - const byte a = A[k]; - const byte b = G[k][j]; - - if(a && b) - B[j] ^= ALog[(Log[a] + Log[b]) % 255]; - } - - round_key[i] = load_be<u32bit>(B, 0); - } - } - -/* -* Clear memory of sensitive data -*/ -void Square::clear() - { - zap(EK); - zap(DK); - zap(ME); - zap(MD); - } - -} diff --git a/src/lib/block/square/square.h b/src/lib/block/square/square.h deleted file mode 100644 index 618dbf6d9..000000000 --- a/src/lib/block/square/square.h +++ /dev/null @@ -1,52 +0,0 @@ -/* -* Square -* (C) 1999-2007 Jack Lloyd -* -* Distributed under the terms of the Botan license -*/ - -#ifndef BOTAN_SQUARE_H__ -#define BOTAN_SQUARE_H__ - -#include <botan/block_cipher.h> - -namespace Botan { - -/** -* Square -*/ -class BOTAN_DLL Square : public Block_Cipher_Fixed_Params<16, 16> - { - public: - void encrypt_n(const byte in[], byte out[], size_t blocks) const; - void decrypt_n(const byte in[], byte out[], size_t blocks) const; - - void clear(); - std::string name() const { return "Square"; } - BlockCipher* clone() const { return new Square; } - private: - void key_schedule(const byte[], size_t); - - static void transform(u32bit[4]); - - static const byte SE[256]; - static const byte SD[256]; - static const byte Log[256]; - static const byte ALog[255]; - - static const u32bit TE0[256]; - static const u32bit TE1[256]; - static const u32bit TE2[256]; - static const u32bit TE3[256]; - static const u32bit TD0[256]; - static const u32bit TD1[256]; - static const u32bit TD2[256]; - static const u32bit TD3[256]; - - secure_vector<u32bit> EK, DK; - secure_vector<byte> ME, MD; - }; - -} - -#endif diff --git a/src/lib/hash/bmw_512/bmw_512.cpp b/src/lib/hash/bmw_512/bmw_512.cpp deleted file mode 100644 index 9dfa62214..000000000 --- a/src/lib/hash/bmw_512/bmw_512.cpp +++ /dev/null @@ -1,204 +0,0 @@ -/* -* Blue Midnight Wish 512 (Round 2 tweaked) -* (C) 2009 Jack Lloyd -* -* Distributed under the terms of the Botan license -*/ - -#include <botan/bmw_512.h> -#include <botan/loadstor.h> -#include <botan/rotate.h> - -namespace Botan { - -namespace { - -inline u64bit S0(u64bit X) - { - return (X >> 1) ^ (X << 3) ^ rotate_left(X, 4) ^ rotate_left(X, 37); - } - -inline u64bit S1(u64bit X) - { - return (X >> 1) ^ (X << 2) ^ rotate_left(X, 13) ^ rotate_left(X, 43); - } - -inline u64bit S2(u64bit X) - { - return (X >> 2) ^ (X << 1) ^ rotate_left(X, 19) ^ rotate_left(X, 53); - } - -inline u64bit S3(u64bit X) - { - return (X >> 2) ^ (X << 2) ^ rotate_left(X, 28) ^ rotate_left(X, 59); - } - -inline u64bit S4(u64bit X) - { - return (X >> 1) ^ X; - } - -/** -* Blue Midnight Wish 512 compression function -*/ -void BMW_512_compress(u64bit H[16], const u64bit M[16], u64bit Q[32]) - { - const size_t EXPAND_1_ROUNDS = 2; - - for(size_t i = 0; i != 16; ++i) - Q[i] = H[i] ^ M[i]; - - Q[16] = Q[ 5] - Q[ 7] + Q[10] + Q[13] + Q[14]; - Q[17] = Q[ 6] - Q[ 8] + Q[11] + Q[14] - Q[15]; - Q[18] = Q[ 0] + Q[ 7] + Q[ 9] - Q[12] + Q[15]; - Q[19] = Q[ 0] - Q[ 1] + Q[ 8] - Q[10] + Q[13]; - Q[20] = Q[ 1] + Q[ 2] + Q[ 9] - Q[11] - Q[14]; - Q[21] = Q[ 3] - Q[ 2] + Q[10] - Q[12] + Q[15]; - Q[22] = Q[ 4] - Q[ 0] - Q[ 3] - Q[11] + Q[13]; - Q[23] = Q[ 1] - Q[ 4] - Q[ 5] - Q[12] - Q[14]; - Q[24] = Q[ 2] - Q[ 5] - Q[ 6] + Q[13] - Q[15]; - Q[25] = Q[ 0] - Q[ 3] + Q[ 6] - Q[ 7] + Q[14]; - Q[26] = Q[ 8] - Q[ 1] - Q[ 4] - Q[ 7] + Q[15]; - Q[27] = Q[ 8] - Q[ 0] - Q[ 2] - Q[ 5] + Q[ 9]; - Q[28] = Q[ 1] + Q[ 3] - Q[ 6] - Q[ 9] + Q[10]; - Q[29] = Q[ 2] + Q[ 4] + Q[ 7] + Q[10] + Q[11]; - Q[30] = Q[ 3] - Q[ 5] + Q[ 8] - Q[11] - Q[12]; - Q[31] = Q[12] - Q[ 4] - Q[ 6] - Q[ 9] + Q[13]; - - Q[ 0] = S0(Q[16]) + H[ 1]; - Q[ 1] = S1(Q[17]) + H[ 2]; - Q[ 2] = S2(Q[18]) + H[ 3]; - Q[ 3] = S3(Q[19]) + H[ 4]; - Q[ 4] = S4(Q[20]) + H[ 5]; - Q[ 5] = S0(Q[21]) + H[ 6]; - Q[ 6] = S1(Q[22]) + H[ 7]; - Q[ 7] = S2(Q[23]) + H[ 8]; - Q[ 8] = S3(Q[24]) + H[ 9]; - Q[ 9] = S4(Q[25]) + H[10]; - Q[10] = S0(Q[26]) + H[11]; - Q[11] = S1(Q[27]) + H[12]; - Q[12] = S2(Q[28]) + H[13]; - Q[13] = S3(Q[29]) + H[14]; - Q[14] = S4(Q[30]) + H[15]; - Q[15] = S0(Q[31]) + H[ 0]; - - const u64bit EXPANSION_CONSTANT = 0x0555555555555555; - - for(size_t i = 16; i != 16 + EXPAND_1_ROUNDS; ++i) - { - Q[i] = S1(Q[i-16]) + S2(Q[i-15]) + S3(Q[i-14]) + S0(Q[i-13]) + - S1(Q[i-12]) + S2(Q[i-11]) + S3(Q[i-10]) + S0(Q[i- 9]) + - S1(Q[i- 8]) + S2(Q[i- 7]) + S3(Q[i- 6]) + S0(Q[i- 5]) + - S1(Q[i- 4]) + S2(Q[i- 3]) + S3(Q[i- 2]) + S0(Q[i- 1]) + - ((rotate_left(M[(i-16) % 16], ((i-16)%16) + 1) + - rotate_left(M[(i-13) % 16], ((i-13)%16) + 1) - - rotate_left(M[(i- 6) % 16], ((i-6)%16) + 1) + - (EXPANSION_CONSTANT * i)) ^ H[(i-16+7)%16]); - } - - for(size_t i = 16 + EXPAND_1_ROUNDS; i != 32; ++i) - { - Q[i] = Q[i-16] + rotate_left(Q[i-15], 5) + - Q[i-14] + rotate_left(Q[i-13], 11) + - Q[i-12] + rotate_left(Q[i-11], 27) + - Q[i-10] + rotate_left(Q[i- 9], 32) + - Q[i- 8] + rotate_left(Q[i- 7], 37) + - Q[i- 6] + rotate_left(Q[i- 5], 43) + - Q[i- 4] + rotate_left(Q[i- 3], 53) + - S4(Q[i - 2]) + ((Q[i-1] >> 2) ^ Q[i-1]) + - ((rotate_left(M[(i-16) % 16], ((i-16)%16 + 1)) + - rotate_left(M[(i-13) % 16], ((i-13)%16 + 1)) - - rotate_left(M[(i- 6) % 16], ((i-6)%16 + 1)) + - (EXPANSION_CONSTANT * i)) ^ H[(i-16+7)%16]); - } - - u64bit XL = Q[16] ^ Q[17] ^ Q[18] ^ Q[19] ^ - Q[20] ^ Q[21] ^ Q[22] ^ Q[23]; - - u64bit XH = Q[24] ^ Q[25] ^ Q[26] ^ Q[27] ^ - Q[28] ^ Q[29] ^ Q[30] ^ Q[31]; - - XH ^= XL; - - H[ 0] = ((XH << 5) ^ (Q[16] >> 5) ^ M[0]) + (XL ^ Q[24] ^ Q[0]); - H[ 1] = ((XH >> 7) ^ (Q[17] << 8) ^ M[1]) + (XL ^ Q[25] ^ Q[1]); - H[ 2] = ((XH >> 5) ^ (Q[18] << 5) ^ M[2]) + (XL ^ Q[26] ^ Q[2]); - H[ 3] = ((XH >> 1) ^ (Q[19] << 5) ^ M[3]) + (XL ^ Q[27] ^ Q[3]); - H[ 4] = ((XH >> 3) ^ (Q[20] ) ^ M[4]) + (XL ^ Q[28] ^ Q[4]); - H[ 5] = ((XH << 6) ^ (Q[21] >> 6) ^ M[5]) + (XL ^ Q[29] ^ Q[5]); - H[ 6] = ((XH >> 4) ^ (Q[22] << 6) ^ M[6]) + (XL ^ Q[30] ^ Q[6]); - H[ 7] = ((XH >> 11) ^ (Q[23] << 2) ^ M[7]) + (XL ^ Q[31] ^ Q[7]); - - H[ 8] = rotate_left(H[4], 9) + (XH ^ Q[24] ^ M[ 8]) + ((XL << 8) ^ Q[23] ^ Q[ 8]); - H[ 9] = rotate_left(H[5], 10) + (XH ^ Q[25] ^ M[ 9]) + ((XL >> 6) ^ Q[16] ^ Q[ 9]); - H[10] = rotate_left(H[6], 11) + (XH ^ Q[26] ^ M[10]) + ((XL << 6) ^ Q[17] ^ Q[10]); - H[11] = rotate_left(H[7], 12) + (XH ^ Q[27] ^ M[11]) + ((XL << 4) ^ Q[18] ^ Q[11]); - H[12] = rotate_left(H[0], 13) + (XH ^ Q[28] ^ M[12]) + ((XL >> 3) ^ Q[19] ^ Q[12]); - H[13] = rotate_left(H[1], 14) + (XH ^ Q[29] ^ M[13]) + ((XL >> 4) ^ Q[20] ^ Q[13]); - H[14] = rotate_left(H[2], 15) + (XH ^ Q[30] ^ M[14]) + ((XL >> 7) ^ Q[21] ^ Q[14]); - H[15] = rotate_left(H[3], 16) + (XH ^ Q[31] ^ M[15]) + ((XL >> 2) ^ Q[22] ^ Q[15]); - } - -} - -void BMW_512::compress_n(const byte input[], size_t blocks) - { - for(size_t i = 0; i != blocks; ++i) - { - load_le(&M[0], input, M.size()); - - BMW_512_compress(&H[0], &M[0], &Q[0]); - - input += hash_block_size(); - } - } - -/* -* Copy out the digest -*/ -void BMW_512::copy_out(byte output[]) - { - u64bit final[16] = { - 0xAAAAAAAAAAAAAAA0, 0xAAAAAAAAAAAAAAA1, - 0xAAAAAAAAAAAAAAA2, 0xAAAAAAAAAAAAAAA3, - 0xAAAAAAAAAAAAAAA4, 0xAAAAAAAAAAAAAAA5, - 0xAAAAAAAAAAAAAAA6, 0xAAAAAAAAAAAAAAA7, - 0xAAAAAAAAAAAAAAA8, 0xAAAAAAAAAAAAAAA9, - 0xAAAAAAAAAAAAAAAA, 0xAAAAAAAAAAAAAAAB, - 0xAAAAAAAAAAAAAAAC, 0xAAAAAAAAAAAAAAAD, - 0xAAAAAAAAAAAAAAAE, 0xAAAAAAAAAAAAAAAF }; - - BMW_512_compress(final, &H[0], &Q[0]); - - for(size_t i = 0; i != output_length(); i += 8) - store_le(final[8 + i/8], output + i); - } - -/* -* Clear memory of sensitive data -*/ -void BMW_512::clear() - { - MDx_HashFunction::clear(); - zeroise(M); - zeroise(Q); - - H[ 0] = 0x8081828384858687; - H[ 1] = 0x88898A8B8C8D8E8F; - H[ 2] = 0x9091929394959697; - H[ 3] = 0x98999A9B9C9D9E9F; - H[ 4] = 0xA0A1A2A3A4A5A6A7; - H[ 5] = 0xA8A9AAABACADAEAF; - H[ 6] = 0xB0B1B2B3B4B5B6B7; - H[ 7] = 0xB8B9BABBBCBDBEBF; - H[ 8] = 0xC0C1C2C3C4C5C6C7; - H[ 9] = 0xC8C9CACBCCCDCECF; - H[10] = 0xD0D1D2D3D4D5D6D7; - H[11] = 0xD8D9DADBDCDDDEDF; - H[12] = 0xE0E1E2E3E4E5E6E7; - H[13] = 0xE8E9EAEBECEDEEEF; - H[14] = 0xF0F1F2F3F4F5F6F7; - H[15] = 0xF8F9FAFBFCFDFEFF; - } - -} diff --git a/src/lib/hash/bmw_512/bmw_512.h b/src/lib/hash/bmw_512/bmw_512.h deleted file mode 100644 index b9ea63578..000000000 --- a/src/lib/hash/bmw_512/bmw_512.h +++ /dev/null @@ -1,38 +0,0 @@ -/* -* Blue Midnight Wish 512 (Round 2 tweaked) -* (C) 2009 Jack Lloyd -* -* Distributed under the terms of the Botan license -*/ - -#ifndef BOTAN_BMW_512_H__ -#define BOTAN_BMW_512_H__ - -#include <botan/mdx_hash.h> - -namespace Botan { - -/** -* Blue Midnight Wish 512 (Round 2 tweaked version) -*/ -class BOTAN_DLL BMW_512 : public MDx_HashFunction - { - public: - std::string name() const { return "BMW512"; } - size_t output_length() const { return 64; } - HashFunction* clone() const { return new BMW_512; } - - void clear(); - - BMW_512() : MDx_HashFunction(128, false, true), H(16), M(16), Q(32) - { clear(); } - private: - void compress_n(const byte input[], size_t blocks); - void copy_out(byte output[]); - - secure_vector<u64bit> H, M, Q; - }; - -} - -#endif diff --git a/src/lib/hash/bmw_512/info.txt b/src/lib/hash/bmw_512/info.txt deleted file mode 100644 index 94dcbdd85..000000000 --- a/src/lib/hash/bmw_512/info.txt +++ /dev/null @@ -1,5 +0,0 @@ -define BMW_512 20131128 - -<requires> -mdx_hash -</requires> diff --git a/src/tests/data/block/lubyrackoff.vec b/src/tests/data/block/lubyrackoff.vec deleted file mode 100644 index 5f2442d7a..000000000 --- a/src/tests/data/block/lubyrackoff.vec +++ /dev/null @@ -1,8 +0,0 @@ -[Luby-Rackoff(SHA1)] -Key = 00112233445566778899AABBCCDDEEFF -In = 1112131415161718191A1B1C1D1E1F202122232425262728292A2B2C2D2E2F303132333435363738 -Out = 2015B3DB2DC49529C2D26B1F1E86C65EC7B946AB127503CB92F07C0DD4ECD3D7700F31FA0268D381 - -Key = 00112233445566778899AABBCCDDEEFF0123456789ABCDEFFEDCBA9876543210 -In = 00112233445566778899AABBCCDDEEFF102132435465768798A9BACBDCEDFE0F2031425364758697 -Out = 84ACC1578337453D0F94FE2A09EAAE844B2BDE240F6D6225A0AD87EB3773BC29C2B85B51FD068674 diff --git a/src/tests/data/block/skipjack.vec b/src/tests/data/block/skipjack.vec deleted file mode 100644 index 6b861809c..000000000 --- a/src/tests/data/block/skipjack.vec +++ /dev/null @@ -1,121 +0,0 @@ -[Skipjack] -Key = 11223344556677889900 -In = AABBCCDD00112233 -Out = 00D3127AE2CA8725 - -Key = 9C5F3F996E59C9543249 -In = CE365D5D21C1A4CB -Out = C00891C551C5E168 - -Key = 21A07C1CED3C2C0C1576 -In = CB758E2851482982 -Out = 6C09A2825D32B67E - -Key = F62D87056348C5D64071 -In = 7B402EA5E4B7A7C3 -Out = C6E32EA485F38324 - -Key = 0E2B3B9AEEF001392C3C -In = 3AE159B52AE3FD1B -Out = 8AD85F68B89DFAD6 - -Key = 51BAA0E8AADF4B8B6A60 -In = 3828786C48F705D2 -Out = 9352B87091483003 - -Key = CE70B79AE70F7AA44778 -In = E060FCC7F7F16FD9 -Out = 8C70B2C901339B1F - -Key = 91A8919EC9360CABB973 -In = 8F5FA719DE4B1D24 -Out = 958816FE7FC5862B - -Key = FB9F7F8B62E4996E49E7 -In = 0B55FD902BFECC99 -Out = CA7F517B383DA760 - -Key = FB9F7F8B62E4996E49E7 -In = CA7F517B383DA760 -Out = 278B665DB00CC924 - -Key = 90DDF1550EC7DCF4CAE5 -In = 6527AF09D0B01CB7 -Out = 628A8AE67A87F464 - -Key = 90DDF1550EC7DCF4CAE5 -In = 628A8AE67A87F464 -Out = CD01A638A878E7FE - -Key = 3516DABCD760F2BEE4CD -In = E7951155B748D347 -Out = EAEB4A1470307BF1 - -Key = C9C5DAF7DFD17D902270 -In = AD14EBC6D0261D94 -Out = 8DAE0E5E2CD055A0 - -Key = EEEE6892DCD1ED868F56 -In = 9B0C81EDA6853253 -Out = DC354CB74F2FC2B4 - -Key = 03604B2D0D06A9AA9D68 -In = C76443A5B0652306 -Out = 160DF886878D6908 - -Key = 6E8494476C89110F166C -In = 37F1C930714AA1CF -Out = 39DDEC7C8B84DBD6 - -Key = DF3A10F722776402DAF8 -In = 1E71CDF5AB39DF1D -Out = AE316B4C32222DC9 - -Key = E4EE21889437C10A7682 -In = 9EE6838FCE6C6CDD -Out = FF7F52D9C17728E3 - -Key = C3C55FCACDD387163C84 -In = 111AA47F17CFAABE -Out = 1A86B8753F784547 - -Key = E5F795A933FFD70C87AE -In = 0AC61B6C219FC0C4 -Out = 727AA5B83616105C - -Key = 9163BD738BEA13D9CB5C -In = 56582400B014F8D3 -Out = 918F72548E0FFCB4 - -Key = C70CA4689C59CD745EF6 -In = 9C323238D9C76E35 -Out = F801578F6050B793 - -Key = DC934E7C08D7466E10AA -In = 6CD57A531CCF9E20 -Out = 619E091055D423D8 - -Key = EA4FC33C0CA289973FA9 -In = 667DE1649DEA2E89 -Out = 5FD975B231E25909 - -Key = 9988881616D6CB63B188 -In = 1BC90F76FD901399 -Out = AE676788090270E7 - -Key = 10DF61754870FFD16CFB -In = 9E9CCADD47C9EBDA -Out = 22A3D66BA549CCE7 - -Key = 2C005FEFE7C4C01ADC5E -In = 2E8FCDE2EFDD1964 -Out = FD42E226CF058AE4 - -Key = 6A49942FA39AC190308E -In = 128106BDEC982932 -Out = C1F24DB137E5C062 - -Key = 92903F26A46FD43F6EB9 -In = CC93DA20EE2AAE3A -Out = 714D626B8AE5D154 - diff --git a/src/tests/data/block/square.vec b/src/tests/data/block/square.vec deleted file mode 100644 index 603609095..000000000 --- a/src/tests/data/block/square.vec +++ /dev/null @@ -1,49 +0,0 @@ -[Square] -Key = 00000000000000000000000000000000 -In = 00000000000000000000000000000000 -Out = 3C00428F8ABBC0B84F057CC19C26F8CF - -Key = 000102030405060708090A0B0C0D0E0F -In = 000102030405060708090A0B0C0D0E0F -Out = 7C3491D94994E70F0EC2E7A5CCB5A14F - -Key = 000102030405060708090A0B0C0D0E0F -In = C76C696289898137077A4A59FAEEEA4D -Out = 88C6FF4B92604C6E66656B02DDAF9F40 - -Key = 915F4619BE41B2516355A50110A9CE91 -In = 21A5DBEE154B8F6D6FF33B98F448E95A -Out = 3388801F66E7FCC0BCE522A23A4F0C7F - -Key = 783348E75AEB0F2FD7B169BB8DC16787 -In = F7C013AC5B2B8952E5E554ABE9CED2D2 -Out = A1C0E9215141343DEC2B556942C92BDE - -Key = DC49DB1375A5584F6485B413B5F12BAF -In = 2F42B3B70369FC929AE068313F343A7A -Out = 3FBE6811B998CDF3E50ABDE2F3C075E3 - -Key = 5269F149D41BA0152497574D7F153125 -In = 65C178B284D197CCD3F111A282F17F29 -Out = D7B7209E0879744C782809B6D2E0B1B0 - -Key = 80000000000000000000000000000000 -In = 00000000000000000000000000000000 -Out = 05F8AAFDEFB4F5F9C751E5B36C8A37D8 - -Key = 00000000000000000000040000000000 -In = 0F1E2D3C4B5A69788796A5B4C3D2E1F0 -Out = 1660060085C0E241F88462BFFBE67602 - -Key = 00000000000000000000000000000080 -In = 0F1E2D3C4B5A69788796A5B4C3D2E1F0 -Out = 92BFBBFCD2BBF54FFF06AF097893E9A3 - -Key = 00000000000000000000000000020000 -In = 00000000000000000000000000000000 -Out = 98CFB10F3ED70BB82CC90597B463A1F6 - -Key = 00000000000000000000000000800000 -In = 00000000000000000000000000000000 -Out = A643A0CA5154A7D10B251D562D58EA53 - diff --git a/src/tests/data/hash/bmw512.vec b/src/tests/data/hash/bmw512.vec deleted file mode 100644 index 6d1768c03..000000000 --- a/src/tests/data/hash/bmw512.vec +++ /dev/null @@ -1,805 +0,0 @@ -[BMW-512] -In = -Out = 6A725655C42BC8A2A20549DD5A233A6A2BEB01616975851FD122504E604B46AF7D96697D0B6333DB1D1709D6DF328D2A6C786551B0CCE2255E8C7332B4819C0E - -In = CC -Out = 0309CD7A44E6022671E84C43CDB92F613931D1C6B71467C039034B1263C2BF92203E27604BC53FCEA9C2DF3B10862C9B6FB6E8C617754EF49A2B80F51C74ACD3 - -In = 41FB -Out = 1FD4AC6551D39EF27B5F1F886D7A3A72EC60E0AE2966649C3701952F29B2DBF858AB6E18101D038BBF019299C7FE5F62A4BC3973E089EF929AAF25B9A8BB7D39 - -In = 1F877C -Out = 8987D458CF27D4C1B1DDD115FE5C15A67AF431561812B1D2028C3AF0A52FB8F7334205CBE003CEAB1446261550870EEA6921C2315D750F9C49AD7877590A9BDE - -In = C1ECFDFC -Out = 5A443348F0B3330CBA5060B16EF21D5597ECDD597603B3E86999099C5595BE38F726D10090472DAF5EA77315B6BA62B2507A7C08A1B6786DCB30148DD1517882 - -In = 21F134AC57 -Out = C1ABFEF8AC91FDC20900045A226EA8D5FF2E3E5D0F00CC9194D19F65460755587F72492E5D5F5A30AE63F95E9DFEE6F07051A8E9856E701451BE1CC58D320E3D - -In = C6F50BB74E29 -Out = B1EC7BD5A91DE2480BEE26C93A84E38030E2B2BC469B7D4A8D91D32CCB889805436739DCB5A14B1D4C0811EE2A0D9A667C0FBA00F48800F39AEBE8D7DA7EDF1C - -In = 119713CC83EEEF -Out = 8652D6C03E8B42F46D96E2357DE252C9B4CC483C32ABCADFECED70A07C8E1C8B637A6FA1E278C8BDF651D6FDD8A29A48DAA8ACA71C2277F709A83A80C62C5DA5 - -In = 4A4F202484512526 -Out = 86E05AB43DEC6C078B18369AC5485B4FAFCA9C55C36E736BFB08E169A2667C67C14A7D0409FC735B18618E84483E1B39DA47A41E48915096A8DEBACA7A148A03 - -In = 1F66AB4185ED9B6375 -Out = E072E9D923E334A5C0E129E46D4EE6E5FA2A1494F6CFC4D1498B80470A0B920F2B2D56575A771D8271205D973F23A8DA0FCD3DE5E569269B50B3BD823DC8D955 - -In = EED7422227613B6F53C9 -Out = 6D8B04C1DAB6BEACDF7410B9FDBC96E74D9FB11A949DD164C817BDF4ED2DE978B61ADABF27BE4FB8DDFE6B9AADEF8038C217BC56B17C78D19A80922CF84DF8F5 - -In = EAEED5CDFFD89DECE455F1 -Out = 66022F69F321D34378271556AD6793DEE887BB6DCD07344CB0C9F9FD8F6C9080F296B99D7D42A6B4242A84889F41894258419CE871D54F21D78AD5BD7FC81A7C - -In = 5BE43C90F22902E4FE8ED2D3 -Out = BF48CFBDF5876FF02D095482F4DB28693A3D09B9FCE1DD25BDDB2F80D1100AA81D166E37421A3281B9F25A981DCD6741272E3F4E596B5003FD86F85C9C31BB92 - -In = A746273228122F381C3B46E4F1 -Out = 99F9C27A26186098430839356FD651A6C203E39ADC06EFB3A6C35C3265FE37F7CD3B4EE520218D820F3189B44341EAA6CD753A472A8FDFD7386CB5E3A1D9DBB7 - -In = 3C5871CD619C69A63B540EB5A625 -Out = 2630080B86DC7DBF5AC325F645B94E0A5FA967913AE02BCE4B762DC03E8DAC4B463A881DEA606FCCD2767F6044040DFACFCB774E19FBDBB8CE89AF937077EC0C - -In = FA22874BCC068879E8EF11A69F0722 -Out = 9828CAC020097A5A74E5817EC37034DC0346F07E0CC17AC03E386C7045B6977B9B276EEE6C591E970D0D1F2402515BB63E520C6737B4131BFD114E8D58B4F035 - -In = 52A608AB21CCDD8A4457A57EDE782176 -Out = 7BE3BD61CECEE09EF1160C1CF7DBCF94F5E1BEE3A30F2B27B0580C3BAC5D25928291372CE81237B867D4CA09868A0CC7984F2CFA4EF14479761E2EA58FB78BA6 - -In = 82E192E4043DDCD12ECF52969D0F807EED -Out = 68A2B3C34D5E023F3BCA7508BB0B5E9BDA5375E245FA394D2CF508A03B48AF97005B3A4DBFFC0D38CA4416ADF504745F94FE9B0D3F5CE334DA9805F1F3ECC978 - -In = 75683DCB556140C522543BB6E9098B21A21E -Out = 345692802192594F5516D2B22215DECB648E6611B9A24D159FD2978BF712846F1FCB61F1E5A5AC25832D7E7BBCC0D0FF2E55EC2C9C90EC1E0078697117ADCFAD - -In = 06E4EFE45035E61FAAF4287B4D8D1F12CA97E5 -Out = 3E3CBB918CF27C6A73D0145CDD3A8F159C56AEF938F69884AC6FC8C3207593FC8D3E712ADFF0CE52FEAB8B693D8933D87DCF8A3F58BE330B4B5DF14EE3D635FA - -In = E26193989D06568FE688E75540AEA06747D9F851 -Out = D1C6A2F12589D77610EC236DB751DCAFEF5A9DFEEA63E307DE01FB4B852DC5776CD59CC6DC2369584B9DDB214BDDF5D5C89D0D1EAC9FB8F7C0F041452CBC11F7 - -In = D8DC8FDEFBDCE9D44E4CBAFE78447BAE3B5436102A -Out = 64659D7B159C8F276DB1295039EB6FE2435405DC1A81BF4575B9C27A2C41208A0BD331F34A60DFF31AD29F8730C0786ABDEE4ABC767092D448CEA3F97C7A6976 - -In = 57085FD7E14216AB102D8317B0CB338A786D5FC32D8F -Out = 6CEA91D04E9D4A3C994BE9BB24FEFAF967B4DE36D2566F368C04CC2ED9FAF736DB71170C207F31A7F08B7B8D634E7C38FD591A38948DE4ABE70CC64F3A2EE108 - -In = A05404DF5DBB57697E2C16FA29DEFAC8AB3560D6126FA0 -Out = 5B5CDE06BF8B5AE80A67D96306AC7E96AD15575195B269378EA65C6F23DFF53EA4E02639F3EC61D640D3D9B2776DEF2FBB3B8AFA1FCA3AA55BB5208788671770 - -In = AECBB02759F7433D6FCB06963C74061CD83B5B3FFA6F13C6 -Out = 0374C843999A2898BD79A0CC8DFB924E7BB9E5CCAECDD151B502C1A234F1D3691F3CE29D0BC6F044A2CCA8174F7537078F3FF0CA73E8CF1D2040D25D1AF3295D - -In = AAFDC9243D3D4A096558A360CC27C8D862F0BE73DB5E88AA55 -Out = 7F1E7A420B60E6B42622E4B5E2900D6CF01230C962565A6F7CB8270C8CBCB4E477D171E183B3C856FCE7369FD25D5E285E21777E3C738090215D97E25ADF1FF6 - -In = 7BC84867F6F9E9FDC3E1046CAE3A52C77ED485860EE260E30B15 -Out = 52A8179F441682C0CCF7F781C0CB905442ED82CA60ABED14BF032DBC5202CCE91A66369424DEC0E4C45AC16F156A9AC7982FA4A7AE941B4F24F8DA7A4FEEC4C7 - -In = FAC523575A99EC48279A7A459E98FF901918A475034327EFB55843 -Out = 50EC175DC458FB3DED1E3AF7CA87DD6CD08FD89B0BA403EF666E98787D3E38CA48946DB41F38C8FDFB82FD0AA71B08D9069E7136775D22E0583BDA3D8228D3DC - -In = 0F8B2D8FCFD9D68CFFC17CCFB117709B53D26462A3F346FB7C79B85E -Out = 47BE44B33C90FD2EC18B839C5A60175EB76DF0A8A587D6EF4A6712868CADBCC54AC88BE47987F7A4875C16C31B8A6D691939C007B6724139187E76413716F226 - -In = A963C3E895FF5A0BE4824400518D81412F875FA50521E26E85EAC90C04 -Out = E0F91DA11320E76952D42C897503DDF79670C841DFD059AD40F41D9C5BAE052627887F5EF09A214AB6F2E5425AA1C634C29C533C596B1BE95B1D39EA06335694 - -In = 03A18688B10CC0EDF83ADF0A84808A9718383C4070C6C4F295098699AC2C -Out = 0CF4B313265173B60D2F99B87E81E76C10E855A0F67FD5F2D61216CAEF046A86BC2B7E907412C5499A162BD1D019729653F2A80969A534776494A00C8193B8EE - -In = 84FB51B517DF6C5ACCB5D022F8F28DA09B10232D42320FFC32DBECC3835B29 -Out = B3483C99D6B488DC2E34F5024BBEE33B55D9A66B7EFE39657748650AC4301BA6DC64A3E3E8C15945575DA963D29399BA0B1AC3A6CECF549E132A5E2DB3B5BBE7 - -In = 9F2FCC7C90DE090D6B87CD7E9718C1EA6CB21118FC2D5DE9F97E5DB6AC1E9C10 -Out = DA79A14B066580178121D3F60E0D3370F667A297FD9C0435CF8C65D35BB3B4AA894AF7946F65CCAA5F7D9FC199CBCA9BE3FBFA958C0DABC992A50DB2236ED51C - -In = DE8F1B3FAA4B7040ED4563C3B8E598253178E87E4D0DF75E4FF2F2DEDD5A0BE046 -Out = 4A7873D42769DA269B9869E0DFD5695AE343DBD69FF8A68D93542B5EBBE794806B2D84ADC69DEAA58F54008164FB3E2AB02577865FBDEA88A8BE7D23EAA9441C - -In = 62F154EC394D0BC757D045C798C8B87A00E0655D0481A7D2D9FB58D93AEDC676B5A0 -Out = CF42B5F7ABF540B69018484583A7B1CD1A38064C6E4208CE0ACEE27B7EE74CCEC544FB2FA1921E95B5CACC12546D35C628ECA4C7053F37FD236E63346D474D00 - -In = B2DCFE9FF19E2B23CE7DA2A4207D3E5EC7C6112A8A22AEC9675A886378E14E5BFBAD4E -Out = 9F955DF8BAA1A5ECF0BDFD408002B1EAC93B89C8AEDFABB9E5239D6D1AD1C1299901E96C822BE23207570E1EAE9CB82429899158313AF79FBB06EA3915436F7A - -In = 47F5697AC8C31409C0868827347A613A3562041C633CF1F1F86865A576E02835ED2C2492 -Out = 0FD1772A21CF32F0D43C00DF44754096704B0DBBC3B323500C3B231C7FC47B8F35E8F10017F4B1061E82E5CC1D823014DCD54AD7F3588614E2149020CD8989B4 - -In = 512A6D292E67ECB2FE486BFE92660953A75484FF4C4F2ECA2B0AF0EDCDD4339C6B2EE4E542 -Out = 41D2D44C32A90B30ACE1C7F6E4AF5C3DC3ABDB1AC7365262C56CB1AE6DB6B5D42AD2BCFD9228D9DFFD5664756E326E9E88D053FD3A3D252211463B7171F5CB5C - -In = 973CF2B4DCF0BFA872B41194CB05BB4E16760A1840D8343301802576197EC19E2A1493D8F4FB -Out = 4AF72DFCF27B0CDA02F35AAD1A90C67378B63523E80DD50A2AB512F2CFF2969FA48DD8EDDE239F6BD5484D98FB26F0757831D7AFAAB5A21DBADB1C1B5BEA2336 - -In = 80BEEBCD2E3F8A9451D4499961C9731AE667CDC24EA020CE3B9AA4BBC0A7F79E30A934467DA4B0 -Out = 7161CDE092AE657F61BFA5957B5BADB16712A173EADEA014F622BA0CCF8B4BF9E0E87B92032A5E1EF762FC7B734BD3B2AA526303C7EDE369885CE63DA6DD6DAE - -In = 7ABAA12EC2A7347674E444140AE0FB659D08E1C66DECD8D6EAE925FA451D65F3C0308E29446B8ED3 -Out = 52E566F481EBA7268B1C9440CCCC29EDFA7E03B4D5BE7689D9E6B9C0E097FC07E378D7F189A144A31A7CA4280B3D566732C3DF2213A534B37D19A1AEFC332E90 - -In = C88DEE9927679B8AF422ABCBACF283B904FF31E1CAC58C7819809F65D5807D46723B20F67BA610C2B7 -Out = CFB6068414E7ABFBA715292306824859C4A8034964CC77C5DB1208FAED6274C37196850F81071E904BDA8CD1ECE8D66ACAB354EC5802846CA42A217941186AC3 - -In = 01E43FE350FCEC450EC9B102053E6B5D56E09896E0DDD9074FE138E6038210270C834CE6EADC2BB86BF6 -Out = 7CBE1D832F1530C7527FB3D8BB8F0BF7A2AF523A507EFE68AFDD1DCDE2852DD789AE87BA2DE8C6CE85AA0D6FD8EB2C4C0DC9E489A1D10105B56D4FFB1260EC0C - -In = 337023370A48B62EE43546F17C4EF2BF8D7ECD1D49F90BAB604B839C2E6E5BD21540D29BA27AB8E309A4B7 -Out = 2B4F480C3799B7FF87DC0DBE2DC4348E2D42522EE803D89165002E88107343737B8605909795397DCA7442CD95799B91EAAB9993641F0578D4C86C7D01F564AD - -In = 6892540F964C8C74BD2DB02C0AD884510CB38AFD4438AF31FC912756F3EFEC6B32B58EBC38FC2A6B913596A8 -Out = 1556B21828CD8C1F98BFCC63415D4A4F9A916403EE0D65ACAB7AF2280FFA044F5A0B773B7B6210C2D390A17464A791F52398264714FA89F990B03E810155BEF4 - -In = F5961DFD2B1FFFFDA4FFBF30560C165BFEDAB8CE0BE525845DEB8DC61004B7DB38467205F5DCFB34A2ACFE96C0 -Out = C17C6DD9964329D4F1AB10C57967E985A15EDF1DD3DEF79436198459A4D331367FADE1D20967BF3EAB50A8FBB892F0E71B0BAB981BB1D3EC64EBAB88447A66E9 - -In = CA061A2EB6CEED8881CE2057172D869D73A1951E63D57261384B80CEB5451E77B06CF0F5A0EA15CA907EE1C27EBA -Out = 81B3181C9610CA1EB3359A05329F597A7EFB663B86B413246C0755583B04B0D8B266AD0343AD5813195DBFEDD031AE5CECE6DBA846803CB1C1787B838D66F295 - -In = 1743A77251D69242750C4F1140532CD3C33F9B5CCDF7514E8584D4A5F9FBD730BCF84D0D4726364B9BF95AB251D9BB -Out = 48D1EBCCBCEE10E72A9AEE1785A2E97D0612BA7443152514A6F59A232F6D1A17EC4415044A946DF2073FB1B979501B24ECE23C380EA1246C3F09B024C53D83EC - -In = D8FABA1F5194C4DB5F176FABFFF856924EF627A37CD08CF55608BBA8F1E324D7C7F157298EABC4DCE7D89CE5162499F9 -Out = 6470A4A9540F4B9DEBBAECF5A95D05AFA9646FAC17B57944602F37740BBC3FA31C8F1D199013D15D4227209F89C333A493C4D83C8AEB186A9394619EDD1EB8DA - -In = BE9684BE70340860373C9C482BA517E899FC81BAAA12E5C6D7727975D1D41BA8BEF788CDB5CF4606C9C1C7F61AED59F97D -Out = 4446970CCDF75D54F79CCB3881A1ACA24D6CA8DEFBF0C248FD6E477223F2758B9369B8140EE48BD0229B097F514E7A688506A890605C816714279105BEFDF112 - -In = 7E15D2B9EA74CA60F66C8DFAB377D9198B7B16DEB6A1BA0EA3C7EE2042F89D3786E779CF053C77785AA9E692F821F14A7F51 -Out = 4FEB1F07404D63A06BCDB2BCC319480CA02BEB7981972A092AF5C27001042EF63500955E57F5C3C54E0E964BD94ABC50BBAAC74F635E522D9ACF6740F26FC4CC - -In = 9A219BE43713BD578015E9FDA66C0F2D83CAC563B776AB9F38F3E4F7EF229CB443304FBA401EFB2BDBD7ECE939102298651C86 -Out = DE3F70F58116EF74466997946469929B5283B0289513AAF1F8DF770AEA21D9E1308A5D1A30CF3912F4351BA6B1ADC4C2B35185C6479E5D160D678EE34BFC6CE5 - -In = C8F2B693BD0D75EF99CAEBDC22ADF4088A95A3542F637203E283BBC3268780E787D68D28CC3897452F6A22AA8573CCEBF245972A -Out = 89C23F143C74B2A3EA4E1B52765B01CD38725DD432813816CFEDCDEF7090C01D9964DAF8F0EEC99A23B20F1502CC8CB41F77CD35D1E1B1CCFFD96821525705E2 - -In = EC0F99711016C6A2A07AD80D16427506CE6F441059FD269442BAAA28C6CA037B22EEAC49D5D894C0BF66219F2C08E9D0E8AB21DE52 -Out = 770FDA46E0435A36A9F4B9E81BB9945CD82F05ECCD6B46DAD48FF92825E2B4F5D21608AE6B945AFAC4650F2408168D3538488FC20A8447FD01EC2DFDF55F8F36 - -In = 0DC45181337CA32A8222FE7A3BF42FC9F89744259CFF653504D6051FE84B1A7FFD20CB47D4696CE212A686BB9BE9A8AB1C697B6D6A33 -Out = 6FD2A68D85527B6A15F4E7499FF2C6028C74DE9CD2AD0837DFA4FDF64FEC31646BB89A80125F27D244718C635B5997D7CF014B5ED30A7CC5547C6C24C188B223 - -In = DE286BA4206E8B005714F80FB1CDFAEBDE91D29F84603E4A3EBC04686F99A46C9E880B96C574825582E8812A26E5A857FFC6579F63742F -Out = 0AE21935400D5DEFDB036321F900999BC9AFD61703510168190CC8D36D2BE4F49DE95C902C286DBAA91F516D231EC4D2AC55425D05FCDEDD211E67A3EFE51E12 - -In = EEBCC18057252CBF3F9C070F1A73213356D5D4BC19AC2A411EC8CDEEE7A571E2E20EAF61FD0C33A0FFEB297DDB77A97F0A415347DB66BCAF -Out = 24DCD83A82A389C7DCBDE997F9F1D0A52A64566699E5D8B8CDBFF0F88A427AAE7C6BBB419F013B8CFC780D47101616BAF0B2C41CFDDD24BAF46610364FC82A03 - -In = 416B5CDC9FE951BD361BD7ABFC120A5054758EBA88FDD68FD84E39D3B09AC25497D36B43CBE7B85A6A3CEBDA8DB4E5549C3EE51BB6FCB6AC1E -Out = DD99BE3D8FB3C4A307E6ADFB18B638904CC12A033D61D1095DDFDC0F6FC62AE527CC5AF45084D2BE4A416E1BDED2E855650A9CEC6FE618B0856563FA1FDDFF38 - -In = 5C5FAF66F32E0F8311C32E8DA8284A4ED60891A5A7E50FB2956B3CBAA79FC66CA376460E100415401FC2B8518C64502F187EA14BFC9503759705 -Out = 359D189247A6B503F66FBA5CCE4BEBC7F6551239301BFCC608CFCCF8E98963055A6E6DD96F6813605B486403BB943A747EDE6C9F8AC586ED6E73DD4D4DC0296E - -In = 7167E1E02BE1A7CA69D788666F823AE4EEF39271F3C26A5CF7CEE05BCA83161066DC2E217B330DF821103799DF6D74810EED363ADC4AB99F36046A -Out = 347E5762FA00809092ED5E660E399CF51EA861687AF8AD6D4EA50BE4317644425000D1B33D9F3B05D7A961E2B385C4AF3ED5B5E767E4580C931747E5D3005CC8 - -In = 2FDA311DBBA27321C5329510FAE6948F03210B76D43E7448D1689A063877B6D14C4F6D0EAA96C150051371F7DD8A4119F7DA5C483CC3E6723C01FB7D -Out = 710B3E6D37198D55FE6DF676CF727F982E2B24E38456627D711E18C789AB9D996276C12F9605A567D1B7FA524296DB2E53D4DAC2F6089874CA099EBBB10E2071 - -In = 95D1474A5AAB5D2422ACA6E481187833A6212BD2D0F91451A67DD786DFC91DFED51B35F47E1DEB8A8AB4B9CB67B70179CC26F553AE7B569969CE151B8D -Out = 9E8D69EEDAEEE8F426D478B39693767D1B28CAC4CB47CD1416C73F82E29EBE062FBC41AD10A398F4EF4C124A70D96384EC5DBD2BE869DD84C9BA6808BAE6368F - -In = C71BD7941F41DF044A2927A8FF55B4B467C33D089F0988AA253D294ADDBDB32530C0D4208B10D9959823F0C0F0734684006DF79F7099870F6BF53211A88D -Out = 8F109A4B2F65CFC881CB456966630C91EF26E79838CF1E090488B9DC348FAD9FF050197B373BA326AC5F42FD81F3D9C944238918E748453233EC309FA0000670 - -In = F57C64006D9EA761892E145C99DF1B24640883DA79D9ED5262859DCDA8C3C32E05B03D984F1AB4A230242AB6B78D368DC5AAA1E6D3498D53371E84B0C1D4BA -Out = A94A8BBAAF30DA2D1BC52EFCE0541B8BD109663AD73830261B6179CA31D08CC5ABF512CE3DE1118DE1230B31AFD5A01B5D6A49B370BEEE77A3988F9CBD32618C - -In = E926AE8B0AF6E53176DBFFCC2A6B88C6BD765F939D3D178A9BDE9EF3AA131C61E31C1E42CDFAF4B4DCDE579A37E150EFBEF5555B4C1CB40439D835A724E2FAE7 -Out = 548D7A65D8BEEBE56C466DA17F8DD80722A7A2A59352465A150F58C1CDC75E8049F5734EA16F32F5CE5B339CDFD99D930D20A6B8655B6F20DE4E7E7438C405E8 - -In = 16E8B3D8F988E9BB04DE9C96F2627811C973CE4A5296B4772CA3EEFEB80A652BDF21F50DF79F32DB23F9F73D393B2D57D9A0297F7A2F2E79CFDA39FA393DF1AC00 -Out = 19152CBECBB159ED38D70436671A47CC9373EBC74EBB31FB22E36DD22E0DA92115745AD7B1B0114596F940B6BC90C19EDD53A9AD012BF1F5B6B419FC8A1A6597 - -In = FC424EEB27C18A11C01F39C555D8B78A805B88DBA1DC2A42ED5E2C0EC737FF68B2456D80EB85E11714FA3F8EABFB906D3C17964CB4F5E76B29C1765DB03D91BE37FC -Out = F08612959457304C50026B146FAED6FEFE60EC27008F986130DE8D487C9BB29F7A6A5F51F5083C6EEDBD2E9DE7A7B7658B8C10AD6F01807B4460FD3B36FC01BC - -In = ABE3472B54E72734BDBA7D9158736464251C4F21B33FBBC92D7FAC9A35C4E3322FF01D2380CBAA4EF8FB07D21A2128B7B9F5B6D9F34E13F39C7FFC2E72E47888599BA5 -Out = 436A9BAE3CA9FA4E8627C359D8D2628B0E2C341C75502B3EA80253E5448A6A524201DFABA2A2B42185DF0F94B06A8074216F057E300E16669A0271AE69B1A54C - -In = 36F9F0A65F2CA498D739B944D6EFF3DA5EBBA57E7D9C41598A2B0E4380F3CF4B479EC2348D015FFE6256273511154AFCF3B4B4BF09D6C4744FDD0F62D75079D440706B05 -Out = BDDEB8D9A990C8B92FFD27D8B0EDA074D9F1DAF0E3FCA1F1D708D7B3922D5FB7A92BD49523F74516CF373ECD835E399EF6E8ACFEB2C7A61166FA3FA9FEE0B5C7 - -In = ABC87763CAE1CA98BD8C5B82CABA54AC83286F87E9610128AE4DE68AC95DF5E329C360717BD349F26B872528492CA7C94C2C1E1EF56B74DBB65C2AC351981FDB31D06C77A4 -Out = 76D74B7AA7C1787F7D2689144A9665416AABBA5B2646EC52C22F7DF5A20C7F6FB2B1FD5C45668EDB0EE468A99567766F594D3E18F1D8162321445EF8F25A3D20 - -In = 94F7CA8E1A54234C6D53CC734BB3D3150C8BA8C5F880EAB8D25FED13793A9701EBE320509286FD8E422E931D99C98DA4DF7E70AE447BAB8CFFD92382D8A77760A259FC4FBD72 -Out = 2D26A2CA37790EA1ED334F854CB6127F9D6EBBC716341A175B7C6625511974AB1B6ADBC71014F258677089C2BB397F0669C34F686C008706E1DEB560B5D43DEE - -In = 13BD2811F6ED2B6F04FF3895ACEED7BEF8DCD45EB121791BC194A0F806206BFFC3B9281C2B308B1A729CE008119DD3066E9378ACDCC50A98A82E20738800B6CDDBE5FE9694AD6D -Out = B28CF291DB775DEC4E87BD30792BC2CCF1B528F62537176C9206CF255F8B795910C65E3C308FA2275B021FFD737F88856107BDA44AEB4199EE5675471E789A81 - -In = 1EED9CBA179A009EC2EC5508773DD305477CA117E6D569E66B5F64C6BC64801CE25A8424CE4A26D575B8A6FB10EAD3FD1992EDDDEEC2EBE7150DC98F63ADC3237EF57B91397AA8A7 -Out = DABF7F4D5455F3C9505CA6B49CABD8ABD3EE4928CCEF88DC60FAAC08607CD6861C316294D3954AA514672A289182C3FBE49B15051D4645214C5D01A6FC783899 - -In = BA5B67B5EC3A3FFAE2C19DD8176A2EF75C0CD903725D45C9CB7009A900C0B0CA7A2967A95AE68269A6DBF8466C7B6844A1D608AC661F7EFF00538E323DB5F2C644B78B2D48DE1A08AA -Out = D4B8A36DE3B40CBCA69B5819C5D4E524E8C36FECAEB8092A5B02FFD12C19A17DEA1B09F1430F1F62EB046CB0F7697233FB51E3EEFEA61CA2C320E97B34BA6ED8 - -In = 0EFA26AC5673167DCACAB860932ED612F65FF49B80FA9AE65465E5542CB62075DF1C5AE54FBA4DB807BE25B070033EFA223BDD5B1D3C94C6E1909C02B620D4B1B3A6C9FED24D70749604 -Out = 61CD40E83B900F9730DE8BC331EA9F75F81D138992E500082FCFA41610BEEBBB5ACE85FFF570462D9960D17A67A2D2BDC8CAD0D401DD642957386C553310CD42 - -In = BBFD933D1FD7BF594AC7F435277DC17D8D5A5B8E4D13D96D2F64E771ABBD51A5A8AEA741BECCBDDB177BCEA05243EBD003CFDEAE877CCA4DA94605B67691919D8B033F77D384CA01593C1B -Out = DBE49B8A74C886BA4B5E3E1FBF23274D8122019F7E66C61DB04CF5F61D75340D34811558A575B179F2B45C7C7B60D3FDC1C5D9BB8F6DE53591AB9BC905702157 - -In = 90078999FD3C35B8AFBF4066CBDE335891365F0FC75C1286CDD88FA51FAB94F9B8DEF7C9AC582A5DBCD95817AFB7D1B48F63704E19C2BAA4DF347F48D4A6D603013C23F1E9611D595EBAC37C -Out = 826E66301DC5F89FA5559170A9AE0E07B1DCE27A5EB90029DC4E7C9A2F005D25EE319DBD74A0F2D3034027ED03566F2D6D768A4F4BF88BF208AED0AD623D339E - -In = 64105ECA863515C20E7CFBAA0A0B8809046164F374D691CDBD6508AAABC1819F9AC84B52BAFC1B0FE7CDDBC554B608C01C8904C669D8DB316A0953A4C68ECE324EC5A49FFDB59A1BD6A292AA0E -Out = 70FFCA06DC5C2ECC63E938915A70755843AE11990C4285FF4448D5DECCF9CF004C04774B6419E80D5E96CACF830F16595C995F37F629D4C82D7D5837AF28E6FA - -In = D4654BE288B9F3B711C2D02015978A8CC57471D5680A092AA534F7372C71CEAAB725A383C4FCF4D8DEAA57FCA3CE056F312961ECCF9B86F14981BA5BED6AB5B4498E1F6C82C6CAE6FC14845B3C8A -Out = E5C313F54B334BAB5746161EDBEA426AB1EE8FB01521C0BBE3B10B41F88498C0A53D14D4F0951C0BEF8110ED3DBB4FE93CF0C538E7B4FC04D9D87FF98B690736 - -In = 12D9394888305AC96E65F2BF0E1B18C29C90FE9D714DD59F651F52B88B3008C588435548066EA2FC4C101118C91F32556224A540DE6EFDDBCA296EF1FB00341F5B01FECFC146BDB251B3BDAD556CD2 -Out = 40A3015076E0BD34B7A5EDDABE5C948A93C0C62C84470CD24EA4B624CADDB37AFF2A9C654988231085A216F619697175F5AA2B6211C9E32D0FF4253EA95FD7D5 - -In = 871A0D7A5F36C3DA1DFCE57ACD8AB8487C274FAD336BC137EBD6FF4658B547C1DCFAB65F037AA58F35EF16AFF4ABE77BA61F65826F7BE681B5B6D5A1EA8085E2AE9CD5CF0991878A311B549A6D6AF230 -Out = F69BD0F7B6AEF0BA7FCA622865756298B881A4E747090C77F48B5BE74BA70DB22BDFAA758FF43698CA821472A121D46B3CDCFC62D139243B757A9456660843B4 - -In = E90B4FFEF4D457BC7711FF4AA72231CA25AF6B2E206F8BF859D8758B89A7CD36105DB2538D06DA83BAD5F663BA11A5F6F61F236FD5F8D53C5E89F183A3CEC615B50C7C681E773D109FF7491B5CC22296C5 -Out = 7DC20435E62DEA8C32FA4D6F90D16D711F4E43A14D74FA29F648EC2D0F0FD22E10BF36220A639AC67AA2F5DFA0454565C9AF02A90F97F0202A1EBBEFB5859A1F - -In = E728DE62D75856500C4C77A428612CD804F30C3F10D36FB219C5CA0AA30726AB190E5F3F279E0733D77E7267C17BE27D21650A9A4D1E32F649627638DBADA9702C7CA303269ED14014B2F3CF8B894EAC8554 -Out = 9C7CFFFBFFE1E8783080510B7F9F11E04B3F9C5A6D17F5ACA02E07650347C352A3CC60096FBCF21055385B0BA1EB3C6E4282690BFB32413FD55DE09E06403BE9 - -In = 6348F229E7B1DF3B770C77544E5166E081850FA1C6C88169DB74C76E42EB983FACB276AD6A0D1FA7B50D3E3B6FCD799EC97470920A7ABED47D288FF883E24CA21C7F8016B93BB9B9E078BDB9703D2B781B616E -Out = A0E94AEB83183E924DEA9C94DE5F76EBDED8FB2D344C3CDF46FA8D738FF331EF1061F96FD3D5D1F75EB95525B8388F4AB481D5BF9A48B9DE8E5DDE2F6C0B526B - -In = 4B127FDE5DE733A1680C2790363627E63AC8A3F1B4707D982CAEA258655D9BF18F89AFE54127482BA01E08845594B671306A025C9A5C5B6F93B0A39522DC877437BE5C2436CBF300CE7AB6747934FCFC30AEAAF6 -Out = FAC419F422D0A0C09653EB9938D6FEDA794CFE6162FEA02D35AD0C53F70CDFBF5D60C4D33A5FAE394AC6938371A088977413172BC2284EA3C78623508726508C - -In = 08461F006CFF4CC64B752C957287E5A0FAABC05C9BFF89D23FD902D324C79903B48FCB8F8F4B01F3E4DDB483593D25F000386698F5ADE7FAADE9615FDC50D32785EA51D49894E45BAA3DC707E224688C6408B68B11 -Out = 3722EE99604E8C8C7069FB1CC07B67F9DB082BE5BA359AC8FBBA285FFCC0020439F96DFAD898124A779E758D3E8D28A41F3B59990C027F6E88D1FAD75112779D - -In = 68C8F8849B120E6E0C9969A5866AF591A829B92F33CD9A4A3196957A148C49138E1E2F5C7619A6D5EDEBE995ACD81EC8BB9C7B9CFCA678D081EA9E25A75D39DB04E18D475920CE828B94E72241F24DB72546B352A0E4 -Out = BC30D45D62D909FC5ACD1B87B9C70065228D2722A360A1D25F726A8469F725FC163496C39E7D31AA2B3BD9016A2253D7CD05E4D678A35358847090A778D8CF8D - -In = B8D56472954E31FB54E28FCA743F84D8DC34891CB564C64B08F7B71636DEBD64CA1EDBDBA7FC5C3E40049CE982BBA8C7E0703034E331384695E9DE76B5104F2FBC4535ECBEEBC33BC27F29F18F6F27E8023B0FBB6F563C -Out = E1DF1CF42A685BAD183FE9E7C3A21DF52826174DB659CA114E8EAE39569E5B20EACF33A97ED436207F95568248FFBF922833A1D7153785FD869BAFC494ED82B1 - -In = 0D58AC665FA84342E60CEFEE31B1A4EACDB092F122DFC68309077AED1F3E528F578859EE9E4CEFB4A728E946324927B675CD4F4AC84F64DB3DACFE850C1DD18744C74CECCD9FE4DC214085108F404EAB6D8F452B5442A47D -Out = B986BEA853B9CA92ED1F11D2205CDD09ACD3DD7DD4A4F48ADB1892F9B0296AB399B4CEDD69A6EC8C1E8E4FB30FD3040EB7057CDD3C0104EA910875196F93C53D - -In = 1755E2D2E5D1C1B0156456B539753FF416651D44698E87002DCF61DCFA2B4E72F264D9AD591DF1FDEE7B41B2EB00283C5AEBB3411323B672EAA145C5125185104F20F335804B02325B6DEA65603F349F4D5D8B782DD3469CCD -Out = 4DCE35639B8F219455E77AB4E0B99A94CB2DE19842D9213F11552EE9DD7A57E854EEB7E91F7E13152F757068E40105BB355306B3F16540991B11D215C02E8B80 - -In = B180DE1A611111EE7584BA2C4B020598CD574AC77E404E853D15A101C6F5A2E5C801D7D85DC95286A1804C870BB9F00FD4DCB03AA8328275158819DCAD7253F3E3D237AEAA7979268A5DB1C6CE08A9EC7C2579783C8AFC1F91A7 -Out = E71B2170F0F3761D1FFF4C20A01374886E483724954F5F683120E4CDE589011C7EAF775F3E0CD93953513DC0A119412E12611757F3BA846A33545FD257E5591B - -In = CF3583CBDFD4CBC17063B1E7D90B02F0E6E2EE05F99D77E24E560392535E47E05077157F96813544A17046914F9EFB64762A23CF7A49FE52A0A4C01C630CFE8727B81FB99A89FF7CC11DCA5173057E0417B8FE7A9EFBA6D95C555F -Out = 29036EEE2CFF84925CE84157EC3B90EDE0A434B52AD89C0F91E84D0F2CFD03571F610E18829B9B69984BB57FA055DE6288F43C33A9A19CF71B4045195B2908AD - -In = 072FC02340EF99115BAD72F92C01E4C093B9599F6CFC45CB380EE686CB5EB019E806AB9BD55E634AB10AA62A9510CC0672CD3EDDB589C7DF2B67FCD3329F61B1A4441ECA87A33C8F55DA4FBBAD5CF2B2527B8E983BB31A2FADEC7523 -Out = 06E45A1A77F1CA437BB4554E9AC2791C74D7C3E7202D94C64C6ACF258FF7217A46A8FCC49C6C9E56B53ADE741FA30060E35E365FFC9CD7BD3AEA92D011924D7E - -In = 76EECF956A52649F877528146DE33DF249CD800E21830F65E90F0F25CA9D6540FDE40603230ECA6760F1139C7F268DEBA2060631EEA92B1FFF05F93FD5572FBE29579ECD48BC3A8D6C2EB4A6B26E38D6C5FBF2C08044AEEA470A8F2F26 -Out = 3A08CE7F48E71FB89CA12701C6BFB6D6ACBC3847351E0C4840CEC0FEEF141B69A7780128837FA082E6803FCAC832DD57E5E8AA776B058ED5062AAEE0D3B10EA2 - -In = 7ADC0B6693E61C269F278E6944A5A2D8300981E40022F839AC644387BFAC9086650085C2CDC585FEA47B9D2E52D65A2B29A7DC370401EF5D60DD0D21F9E2B90FAE919319B14B8C5565B0423CEFB827D5F1203302A9D01523498A4DB10374 -Out = 797015514DF48346879712ED2AD3BE484DB7F19B94DD8A4A77DA987287298674F68E331432B15CFA0CEB395E40E2BD424B850293CD3BEE39B6F042B58469FE54 - -In = E1FFFA9826CCE8B86BCCEFB8794E48C46CDF372013F782ECED1E378269B7BE2B7BF51374092261AE120E822BE685F2E7A83664BCFBE38FE8633F24E633FFE1988E1BC5ACF59A587079A57A910BDA60060E85B5F5B6F776F0529639D9CCE4BD -Out = 8930CF8606BF372E0F355E6036146EA14AC2F0605B2C192CCF3E60DEE5DD95C7730581274AAF4DF61438051FF8A566B0A537E1ED13FF250F11EFD7F3257F9F60 - -In = 69F9ABBA65592EE01DB4DCE52DBAB90B08FC04193602792EE4DAA263033D59081587B09BBE49D0B49C9825D22840B2FF5D9C5155F975F8F2C2E7A90C75D2E4A8040FE39F63BBAFB403D9E28CC3B86E04E394A9C9E8065BD3C85FA9F0C7891600 -Out = 375AD74C0E39D401D4022174A5FA4363447C85D72ECCF1D380845149240DFD3209F81E4AF263F429B8FB6116062880152AD9E40F01EC23B61E390EAB9AE3F502 - -In = 38A10A352CA5AEDFA8E19C64787D8E9C3A75DBF3B8674BFAB29B5DBFC15A63D10FAE66CD1A6E6D2452D557967EAAD89A4C98449787B0B3164CA5B717A93F24EB0B506CEB70CBBCB8D72B2A72993F909AAD92F044E0B5A2C9AC9CB16A0CA2F81F49 -Out = B0DD4E0619AAD0B8C44B30D106A0A57B8C10172520E072865B6CF5B12CFCA23AF742AE9FE222C5D900C84BCE529C87F93BE4264331A7EDF7A1C0071F2265B1F5 - -In = 6D8C6E449BC13634F115749C248C17CD148B72157A2C37BF8969EA83B4D6BA8C0EE2711C28EE11495F43049596520CE436004B026B6C1F7292B9C436B055CBB72D530D860D1276A1502A5140E3C3F54A93663E4D20EDEC32D284E25564F624955B52 -Out = 4F70DF19FFAA4650A834B1BF154B61F077C76467F2EB38B3A60E26D82702294C7E91611C63522D62B1EF007981516018833F9C7030BDA0A3661373F4739C8E94 - -In = 6EFCBCAF451C129DBE00B9CEF0C3749D3EE9D41C7BD500ADE40CDC65DEDBBBADB885A5B14B32A0C0D087825201E303288A733842FA7E599C0C514E078F05C821C7A4498B01C40032E9F1872A1C925FA17CE253E8935E4C3C71282242CB716B2089CCC1 -Out = 24B8C31CA0EA5A1C627BBAEE4BA822323AC4198415FB69D99B90B26DAF42520E6B489F05F9C48AF52BB7E11FC4D72C37CBFAA04433559EFC388CE9C83008C9F6 - -In = 433C5303131624C0021D868A30825475E8D0BD3052A022180398F4CA4423B98214B6BEAAC21C8807A2C33F8C93BD42B092CC1B06CEDF3224D5ED1EC29784444F22E08A55AA58542B524B02CD3D5D5F6907AFE71C5D7462224A3F9D9E53E7E0846DCBB4CE -Out = E1573F9C0D6D49D8A1D6B29663DB387A1EBB5F107C37A4E6330673B1A23DF7D1B1475E14EA001319D683CD902CABA8E33B90A10FB7F1C5468E9A4FDBC7BFD2E1 - -In = A873E0C67CA639026B6683008F7AA6324D4979550E9BCE064CA1E1FB97A30B147A24F3F666C0A72D71348EDE701CF2D17E2253C34D1EC3B647DBCEF2F879F4EB881C4830B791378C901EB725EA5C172316C6D606E0AF7DF4DF7F76E490CD30B2BADF45685F -Out = 669CAA7CE8599AF49B6AA8963FF4C19E43247953E0EAA7453EB954217AB9CA86A82245E4C0916F7E9631F763A12B8EF516E5AB33DAC41D8FEB1F88B8778BF185 - -In = 006917B64F9DCDF1D2D87C8A6173B64F6587168E80FAA80F82D84F60301E561E312D9FBCE62F39A6FB476E01E925F26BCC91DE621449BE6504C504830AAE394096C8FC7694651051365D4EE9070101EC9B68086F2EA8F8AB7B811EA8AD934D5C9B62C60A4771 -Out = B0D673B7F25D73616323175F04CD969285914F163CDD0513CC97350C4BC50574228BF1271026013A82260281554EAF29471F4CE3CC4472AA8030A6CF20982C32 - -In = F13C972C52CB3CC4A4DF28C97F2DF11CE089B815466BE88863243EB318C2ADB1A417CB1041308598541720197B9B1CB5BA2318BD5574D1DF2174AF14884149BA9B2F446D609DF240CE335599957B8EC80876D9A085AE084907BC5961B20BF5F6CA58D5DAB38ADB -Out = 61FE4777C89455B9FA259F9F8DEA012CBE1DC51538C54E77CE7D95EAC48E73F900B77B51B00018A6AF84C407877EE9B0DC3FF5788638A52AC8B150E823416640 - -In = E35780EB9799AD4C77535D4DDB683CF33EF367715327CF4C4A58ED9CBDCDD486F669F80189D549A9364FA82A51A52654EC721BB3AAB95DCEB4A86A6AFA93826DB923517E928F33E3FBA850D45660EF83B9876ACCAFA2A9987A254B137C6E140A21691E1069413848 -Out = 2227BF50BD45C41592EB42EDAB9FEE3E78DD0FCF0497BFA733B99D9B5699D3A27932F4F81F7D4AF43A23E94CA7A9A88D82C2781602EF5E1ECF4712CE6F72E8F4 - -In = 64EC021C9585E01FFE6D31BB50D44C79B6993D72678163DB474947A053674619D158016ADB243F5C8D50AA92F50AB36E579FF2DABB780A2B529370DAA299207CFBCDD3A9A25006D19C4F1FE33E4B1EAEC315D8C6EE1E730623FD1941875B924EB57D6D0C2EDC4E78D6 -Out = 67F82DCA717D47E9E0854BEDC55A1756CD624F58DF755CF9702DE5CD73B57F6AEF7BBF40922A915F383D7D3A910FF95936EC74E35B3B2AA6146F30E11AF3725B - -In = 5954BAB512CF327D66B5D9F296180080402624AD7628506B555EEA8382562324CF452FBA4A2130DE3E165D11831A270D9CB97CE8C2D32A96F50D71600BB4CA268CF98E90D6496B0A6619A5A8C63DB6D8A0634DFC6C7EC8EA9C006B6C456F1B20CD19E781AF20454AC880 -Out = 83665C2BCA49C95BBE584DF52242068193F7A9DAAA67B0EE36FA9A81516E4CD6A3D15A222F95A2DDB7494C5DBB7E83EB30A72BA342DC98060D1F78B9C8F0E893 - -In = 03D9F92B2C565709A568724A0AFF90F8F347F43B02338F94A03ED32E6F33666FF5802DA4C81BDCE0D0E86C04AFD4EDC2FC8B4141C2975B6F07639B1994C973D9A9AFCE3D9D365862003498513BFA166D2629E314D97441667B007414E739D7FEBF0FE3C32C17AA188A8683 -Out = C505A3841C5589D0B2A428D684C9D14520C6359A5AAED6A560663947899E42B588D5D7BE55D580931B25AC2E2FC5F3AF360D60741C0BA82D5A94BE61D2CCC830 - -In = F31E8B4F9E0621D531D22A380BE5D9ABD56FAEC53CBD39B1FAB230EA67184440E5B1D15457BD25F56204FA917FA48E669016CB48C1FFC1E1E45274B3B47379E00A43843CF8601A5551411EC12503E5AAC43D8676A1B2297EC7A0800DBFEE04292E937F21C005F17411473041 -Out = EB6FD4B2B90F79F0071C8D2744C352DBDC7807D40EAF5979DBF21410CEFC2CA2B867010A213C34090E3AFD0C8EA65F43D1AC48EAB67721AF5508D6F193031611 - -In = 758EA3FEA738973DB0B8BE7E599BBEF4519373D6E6DCD7195EA885FC991D896762992759C2A09002912FB08E0CB5B76F49162AEB8CF87B172CF3AD190253DF612F77B1F0C532E3B5FC99C2D31F8F65011695A087A35EE4EEE5E334C369D8EE5D29F695815D866DA99DF3F79403 -Out = FF96DEEADD3C3668F9C9FCF23EABB6C08A908D89B997ED4005FDB4ADDFDBC165D47CBDC2A9A064D95BEDDEDFE1F5AE0D7A05EED7D1B30D3DC1D3AC8850425575 - -In = 47C6E0C2B74948465921868804F0F7BD50DD323583DC784F998A93CD1CA4C6EF84D41DC81C2C40F34B5BEE6A93867B3BDBA0052C5F59E6F3657918C382E771D33109122CC8BB0E1E53C4E3D13B43CE44970F5E0C079D2AD7D7A3549CD75760C21BB15B447589E86E8D76B1E9CED2 -Out = E0269128AD1687BB7C35926E98CC9A9C7670C1276C3F10C37853928AA6C0AE7FE414D379FCBAE20DF0161781690053B9322D8AD14D66C1A4B7B35FFFF9CF3F16 - -In = F690A132AB46B28EDFA6479283D6444E371C6459108AFD9C35DBD235E0B6B6FF4C4EA58E7554BD002460433B2164CA51E868F7947D7D7A0D792E4ABF0BE5F450853CC40D85485B2B8857EA31B5EA6E4CCFA2F3A7EF3380066D7D8979FDAC618AAD3D7E886DEA4F005AE4AD05E5065F -Out = CA5FA777561C6C13ECBCAD526527343009BB1EB77B4BCE263FC24E00A5A5FB9296D2BA13598A646BF936397E43A7BF9D303CAE83E3654CC25F636F7FAB03C2B1 - -In = 58D6A99BC6458824B256916770A8417040721CCCFD4B79EACD8B65A3767CE5BA7E74104C985AC56B8CC9AEBD16FEBD4CDA5ADB130B0FF2329CC8D611EB14DAC268A2F9E633C99DE33997FEA41C52A7C5E1317D5B5DAED35EBA7D5A60E45D1FA7EAABC35F5C2B0A0F2379231953322C4E -Out = FBCAE8C494C5FD0ADB640CEB4A15BF634293EC37CCF119AFF5BEC95F55578ED90D26861A045E0F242302158D3EAC801185498D6D8033662F2E0E6BA5B6F04ACE - -In = BEFAB574396D7F8B6705E2D5B58B2C1C820BB24E3F4BAE3E8FBCD36DBF734EE14E5D6AB972AEDD3540235466E825850EE4C512EA9795ABFD33F330D9FD7F79E62BBB63A6EA85DE15BEAEEA6F8D204A28956059E2632D11861DFB0E65BC07AC8A159388D5C3277E227286F65FF5E5B5AEC1 -Out = 28500180D6F48671A4ACD83C9BB5FE3665CF9A6163D8797A2A2F9EA3974619B312769F67C1BB279A409C05A6B4E371F57FC658096923B5EB086D920EE8C748E8 - -In = 8E58144FA9179D686478622CE450C748260C95D1BA43B8F9B59ABECA8D93488DA73463EF40198B4D16FB0B0707201347E0506FF19D01BEA0F42B8AF9E71A1F1BD168781069D4D338FDEF00BF419FBB003031DF671F4A37979564F69282DE9C65407847DD0DA505AB1641C02DEA4F0D834986 -Out = B205C2E223BF2A741F35294E9B7E1C33EF745A31F5CE2A00F6EC43B05044034C4993D5112E4BA7CEB2BDA4C2E2C8E09B52CE6C2AC7B5374260BFEED8752B65C1 - -In = B55C10EAE0EC684C16D13463F29291BF26C82E2FA0422A99C71DB4AF14DD9C7F33EDA52FD73D017CC0F2DBE734D831F0D820D06D5F89DACC485739144F8CFD4799223B1AFF9031A105CB6A029BA71E6E5867D85A554991C38DF3C9EF8C1E1E9A7630BE61CAABCA69280C399C1FB7A12D12AEFC -Out = 38FA9FFE97CA84452F56C26702F561BBB105D1AE19D78C3528132DAA809B006EE2359EFE54EB35FE0760699070D2B33B2401A5C12132797DF0BDAF96A8DDB04A - -In = 2EEEA693F585F4ED6F6F8865BBAE47A6908AECD7C429E4BEC4F0DE1D0CA0183FA201A0CB14A529B7D7AC0E6FF6607A3243EE9FB11BCF3E2304FE75FFCDDD6C5C2E2A4CD45F63C962D010645058D36571404A6D2B4F44755434D76998E83409C3205AA1615DB44057DB991231D2CB42624574F545 -Out = F5D3FCDDF5C8E2E0513700B11775B0B3C73CD16B18AE52BD3ED225306EE9B5E6B5E402334BC5A4FD1AF5D47138D44217DABF5CBDFFD6978B956EED71C21E05CF - -In = DAB11DC0B047DB0420A585F56C42D93175562852428499F66A0DB811FCDDDAB2F7CDFFED1543E5FB72110B64686BC7B6887A538AD44C050F1E42631BC4EC8A9F2A047163D822A38989EE4AAB01B4C1F161B062D873B1CFA388FD301514F62224157B9BEF423C7783B7AAC8D30D65CD1BBA8D689C2D -Out = 1A25D0833B2CC0A1A0D7C892639D0DF281D10334860F70878287DD4015A3F7312093AEF197D49A1BE99F1615EA38D52A5F3665AA87BF20E89DD7A04E3DC09CA7 - -In = 42E99A2F80AEE0E001279A2434F731E01D34A44B1A8101726921C0590C30F3120EB83059F325E894A5AC959DCA71CE2214799916424E859D27D789437B9D27240BF8C35ADBAFCECC322B48AA205B293962D858652ABACBD588BCF6CBC388D0993BD622F96ED54614C25B6A9AA527589EAAFFCF17DDF7 -Out = 0942326FEECAAD788EEB7D50863FD9280211C9F63B16ECD51AC874A80B47988D61799A10D3B23DC23AE26C179ED5EBC9E32B7697B0566079852BBFA5FA21FFAC - -In = 3C9B46450C0F2CAE8E3823F8BDB4277F31B744CE2EB17054BDDC6DFF36AF7F49FB8A2320CC3BDF8E0A2EA29AD3A55DE1165D219ADEDDB5175253E2D1489E9B6FDD02E2C3D3A4B54D60E3A47334C37913C5695378A669E9B72DEC32AF5434F93F46176EBF044C4784467C700470D0C0B40C8A088C815816 -Out = E9F908BC91CE95ABBA48644FC7C1F8E211E3D2EEA459021FF7E4496C6F1AA3ECA73AEF2813B33819139CEB6ADD5FCFB4EBEBCE72AA1E30DC328454CA69FFBF31 - -In = D1E654B77CB155F5C77971A64DF9E5D34C26A3CAD6C7F6B300D39DEB1910094691ADAA095BE4BA5D86690A976428635D5526F3E946F7DC3BD4DBC78999E653441187A81F9ADCD5A3C5F254BC8256B0158F54673DCC1232F6E918EBFC6C51CE67EAEB042D9F57EEC4BFE910E169AF78B3DE48D137DF4F2840 -Out = 5CEEE2800816DDF676BBD3C8B7D95012808E62A1838CD292893B05085DD08B95EA245FB84283BEF479FD0E2B8BF9DD1BA722344E83DC391A85AEE2C930F985C5 - -In = 626F68C18A69A6590159A9C46BE03D5965698F2DAC3DE779B878B3D9C421E0F21B955A16C715C1EC1E22CE3EB645B8B4F263F60660EA3028981EEBD6C8C3A367285B691C8EE56944A7CD1217997E1D9C21620B536BDBD5DE8925FF71DEC6FBC06624AB6B21E329813DE90D1E572DFB89A18120C3F606355D25 -Out = ED0C620D495F5190D8667F0F9B50C9FEA28FC01AE9B219027973A341BA87118A821451D5EEE580C4FAEE46DAD21C43C72523AE86A8579576247EB8E38D0C6BA6 - -In = 651A6FB3C4B80C7C68C6011675E6094EB56ABF5FC3057324EBC6477825061F9F27E7A94633ABD1FA598A746E4A577CAF524C52EC1788471F92B8C37F23795CA19D559D446CAB16CBCDCE90B79FA1026CEE77BF4AB1B503C5B94C2256AD75B3EAC6FD5DCB96ACA4B03A834BFB4E9AF988CECBF2AE597CB9097940 -Out = 138F2DF9686F705E5C55020B89F04AB66654B0CACCC1A8D374334B6BF6534335C7514206B6F772DDB0550CFABA22D22B913928D3ADF78BFD25DF9DD517B2E3A3 - -In = 8AAF072FCE8A2D96BC10B3C91C809EE93072FB205CA7F10ABD82ECD82CF040B1BC49EA13D1857815C0E99781DE3ADBB5443CE1C897E55188CEAF221AA9681638DE05AE1B322938F46BCE51543B57ECDB4C266272259D1798DE13BE90E10EFEC2D07484D9B21A3870E2AA9E06C21AA2D0C9CF420080A80A91DEE16F -Out = 3348F4E8C4768C3EF687A8E2A02E307FD8591B41235F8C14E5983AE7361968D0CB877AF488B975001AA1E7ACF0E5844C107A102BF028FCEE89CFE751266D88A3 - -In = 53F918FD00B1701BD504F8CDEA803ACCA21AC18C564AB90C2A17DA592C7D69688F6580575395551E8CD33E0FEF08CA6ED4588D4D140B3E44C032355DF1C531564D7F4835753344345A6781E11CD5E095B73DF5F82C8AE3AD00877936896671E947CC52E2B29DCD463D90A0C9929128DA222B5A211450BBC0E02448E2 -Out = CA7257AC51700539DF617C3B7EE9ACC7C4576332996F905D9D3733F1AAF3287E2F852BE394E533F64EA19733276B0E448496F88500770675835E133904E4071B - -In = A64599B8A61B5CCEC9E67AED69447459C8DA3D1EC6C7C7C82A7428B9B584FA67E90F68E2C00FBBED4613666E5168DA4A16F395F7A3C3832B3B134BFC9CBAA95D2A0FE252F44AC6681EB6D40AB91C1D0282FED6701C57463D3C5F2BB8C6A7301FB4576AA3B5F15510DB8956FF77478C26A7C09BEA7B398CFC83503F538E -Out = ADB3B6E2083CB37ED5F822D1AA2ADA18560C663011CB16CFB804A5F24C0525F34D8CB10D19528BA02BB43BD501BF0D0AC67968B0687DCB21C013527A99AE9D84 - -In = 0E3AB0E054739B00CDB6A87BD12CAE024B54CB5E550E6C425360C2E87E59401F5EC24EF0314855F0F56C47695D56A7FB1417693AF2A1ED5291F2FEE95F75EED54A1B1C2E81226FBFF6F63ADE584911C71967A8EB70933BC3F5D15BC91B5C2644D9516D3C3A8C154EE48E118BD1442C043C7A0DBA5AC5B1D5360AAE5B9065 -Out = EA781FDD2DDDE4B42E1A6B75AB70CFCF17DC413CD9591254F91F1E974181191656EDC92823A3145DBE4AB491E86233DAACD748CCD2A86B551D6D47EDEA943C82 - -In = A62FC595B4096E6336E53FCDFC8D1CC175D71DAC9D750A6133D23199EAAC288207944CEA6B16D27631915B4619F743DA2E30A0C00BBDB1BBB35AB852EF3B9AEC6B0A8DCC6E9E1ABAA3AD62AC0A6C5DE765DE2C3711B769E3FDE44A74016FFF82AC46FA8F1797D3B2A726B696E3DEA5530439ACEE3A45C2A51BC32DD055650B -Out = B2DCDDF444C51976F2D71D020BEF76810C8CCAE2B94C34178C600CCDD04B233BA2D27DB4E8F07EE01D611E490564B6071858BC8B8F8D23BC6B8DA746DAD4A132 - -In = 2B6DB7CED8665EBE9DEB080295218426BDAA7C6DA9ADD2088932CDFFBAA1C14129BCCDD70F369EFB149285858D2B1D155D14DE2FDB680A8B027284055182A0CAE275234CC9C92863C1B4AB66F304CF0621CD54565F5BFF461D3B461BD40DF28198E3732501B4860EADD503D26D6E69338F4E0456E9E9BAF3D827AE685FB1D817 -Out = 447C299F7E5C90CEE70A7577EC148FEF194F40BA7C3C8CBC96FF81D14490A16E397CA01F3C0883E050F805239FBD4189122B45B1101EE1F303281D2AC1580E2C - -In = 10DB509B2CDCABA6C062AE33BE48116A29EB18E390E1BBADA5CA0A2718AFBCD23431440106594893043CC7F2625281BF7DE2655880966A23705F0C5155C2F5CCA9F2C2142E96D0A2E763B70686CD421B5DB812DACED0C6D65035FDE558E94F26B3E6DDE5BD13980CC80292B723013BD033284584BFF27657871B0CF07A849F4AE2 -Out = E21AEB7109CA41F1C41F4B66E80A6A4248AED43341F1EFFABB61341C3F0B6355EFE3DAA8D28D60F9BF851E6837625BF2EBFD8A68CDCB50718660D5CCBFD93910 - -In = 9334DE60C997BDA6086101A6314F64E4458F5FF9450C509DF006E8C547983C651CA97879175AABA0C539E82D05C1E02C480975CBB30118121061B1EBAC4F8D9A3781E2DB6B18042E01ECF9017A64A0E57447EC7FCBE6A7F82585F7403EE2223D52D37B4BF426428613D6B4257980972A0ACAB508A7620C1CB28EB4E9D30FC41361EC -Out = FC015B69F1AE0DC7004343FF941378B8A23AA45A3825310E9A81C2A9EA2D4F961F4C9B8CACBC91F0D2414590C389D24ED482B95252F37B5A6CC6BFAEA5C98C32 - -In = E88AB086891693AA535CEB20E64C7AB97C7DD3548F3786339897A5F0C39031549CA870166E477743CCFBE016B4428D89738E426F5FFE81626137F17AECFF61B72DBEE2DC20961880CFE281DFAB5EE38B1921881450E16032DE5E4D55AD8D4FCA609721B0692BAC79BE5A06E177FE8C80C0C83519FB3347DE9F43D5561CB8107B9B5EDC -Out = 45CCB97F9524BA87A7E69354030C71A07D875C5E958EA167EFF581703B1D5037BD91B8806980E3D4EAE0ACB010D210CD89F781DED33F5697DAC285AEB37629A4 - -In = FD19E01A83EB6EC810B94582CB8FBFA2FCB992B53684FB748D2264F020D3B960CB1D6B8C348C2B54A9FCEA72330C2AAA9A24ECDB00C436ABC702361A82BB8828B85369B8C72ECE0082FE06557163899C2A0EFA466C33C04343A839417057399A63A3929BE1EE4805D6CE3E5D0D0967FE9004696A5663F4CAC9179006A2CEB75542D75D68 -Out = 142922E983887BFF20D0EE26BCBCBA34A1A70717172B8FBDE0AEABC5CA258C3985B00F7908A21A75C014D4B2542A1BFCB7469BA9454F66670B6C05BBBD7A92D3 - -In = 59AE20B6F7E0B3C7A989AFB28324A40FCA25D8651CF1F46AE383EF6D8441587AA1C04C3E3BF88E8131CE6145CFB8973D961E8432B202FA5AF3E09D625FAAD825BC19DA9B5C6C20D02ABDA2FCC58B5BD3FE507BF201263F30543819510C12BC23E2DDB4F711D087A86EDB1B355313363A2DE996B891025E147036087401CCF3CA7815BF3C49 -Out = 41DF07681C94633DC430AD7FFF9AB7146F1CC3A66DF3A81D990ED3D247D8F9A5880EFF20C2652FB6C6631EA41F54D6C331651FDC20783EED65B83AF458D0AC72 - -In = 77EE804B9F3295AB2362798B72B0A1B2D3291DCEB8139896355830F34B3B328561531F8079B79A6E9980705150866402FDC176C05897E359A6CB1A7AB067383EB497182A7E5AEF7038E4C96D133B2782917417E391535B5E1B51F47D8ED7E4D4025FE98DC87B9C1622614BFF3D1029E68E372DE719803857CA52067CDDAAD958951CB2068CC6 -Out = 9BEE78530C0A93CE8564AEDE785D7086CE066CB74C3B8F70D3851CD57DB8E647E67DF0D543EAFEDED491613BD3268CC7CE8DE34614A79D6413C3FEE218B6965A - -In = B771D5CEF5D1A41A93D15643D7181D2A2EF0A8E84D91812F20ED21F147BEF732BF3A60EF4067C3734B85BC8CD471780F10DC9E8291B58339A677B960218F71E793F2797AEA349406512829065D37BB55EA796FA4F56FD8896B49B2CD19B43215AD967C712B24E5032D065232E02C127409D2ED4146B9D75D763D52DB98D949D3B0FED6A8052FBB -Out = E2548952816803ED478241CBAB10F69DB4CBDD98447BFAF4E92AF9A3179B6EFACEC56C757944B519C69D1759811732FE3C52912611271231342D9D62F3472967 - -In = B32D95B0B9AAD2A8816DE6D06D1F86008505BD8C14124F6E9A163B5A2ADE55F835D0EC3880EF50700D3B25E42CC0AF050CCD1BE5E555B23087E04D7BF9813622780C7313A1954F8740B6EE2D3F71F768DD417F520482BD3A08D4F222B4EE9DBD015447B33507DD50F3AB4247C5DE9A8ABD62A8DECEA01E3B87C8B927F5B08BEB37674C6F8E380C04 -Out = 0E673628FA620668F73E652DF7927EC7D9DF9426F157B055E39D23AD7FA9CCCDC8013FB8F6A0D2EFFEBE00BB5563B100B5361F33808AE20E23580D414F909CED - -In = 04410E31082A47584B406F051398A6ABE74E4DA59BB6F85E6B49E8A1F7F2CA00DFBA5462C2CD2BFDE8B64FB21D70C083F11318B56A52D03B81CAC5EEC29EB31BD0078B6156786DA3D6D8C33098C5C47BB67AC64DB14165AF65B44544D806DDE5F487D5373C7F9792C299E9686B7E5821E7C8E2458315B996B5677D926DAC57B3F22DA873C601016A0D -Out = 1B0E41061FF47E71F22FCD508E8560F8E4C9748DD8E520A9CA478F3E3827330C6F19E299E221367E6B02E1606A1B23F2B3F66762D0F408B3A68C9DA9018A45DD - -In = 8B81E9BADDE026F14D95C019977024C9E13DB7A5CD21F9E9FC491D716164BBACDC7060D882615D411438AEA056C340CDF977788F6E17D118DE55026855F93270472D1FD18B9E7E812BAE107E0DFDE7063301B71F6CFE4E225CAB3B232905A56E994F08EE2891BA922D49C3DAFEB75F7C69750CB67D822C96176C46BD8A29F1701373FB09A1A6E3C7158F -Out = FEE0EA0269154ADD8FCC28BC61D290CCE0CA04FEBD3EF646D5AEED6542461D4CDA983932BE7ABF3E0C2639ACF75AE2770D1B511D996E19536542FB4D76505F69 - -In = FA6EED24DA6666A22208146B19A532C2EC9BA94F09F1DEF1E7FC13C399A48E41ACC2A589D099276296348F396253B57CB0E40291BD282773656B6E0D8BEA1CDA084A3738816A840485FCF3FB307F777FA5FEAC48695C2AF4769720258C77943FB4556C362D9CBA8BF103AEB9034BAA8EA8BFB9C4F8E6742CE0D52C49EA8E974F339612E830E9E7A9C29065 -Out = 82DFF74AC5CDFFA0D1D03049F2FC227DCB77E373381C2E74FA316BBF9F6D55AEB7667A95AE4D4D367130620217E245E9DDC641AFF823475AE40E4E3CE56FCD40 - -In = 9BB4AF1B4F09C071CE3CAFA92E4EB73CE8A6F5D82A85733440368DEE4EB1CBC7B55AC150773B6FE47DBE036C45582ED67E23F4C74585DAB509DF1B83610564545642B2B1EC463E18048FC23477C6B2AA035594ECD33791AF6AF4CBC2A1166ABA8D628C57E707F0B0E8707CAF91CD44BDB915E0296E0190D56D33D8DDE10B5B60377838973C1D943C22ED335E -Out = 97D7C677B7D8EA600DE069CC23C492C0C293EB8E9B8987978CD43B2CACE445A90D1CDFA4E0F347EC9B7E6394DEF55702A13DC5DE3C5E43B8B08F260BF0E654D5 - -In = 2167F02118CC62043E9091A647CADBED95611A521FE0D64E8518F16C808AB297725598AE296880A773607A798F7C3CFCE80D251EBEC6885015F9ABF7EAABAE46798F82CB5926DE5C23F44A3F9F9534B3C6F405B5364C2F8A8BDC5CA49C749BED8CE4BA48897062AE8424CA6DDE5F55C0E42A95D1E292CA54FB46A84FBC9CD87F2D0C9E7448DE3043AE22FDD229 -Out = A0A9203714A9DCAE2402958E6BCF759B7E900D13D5A8654501ADAC70B5CEDF27D21F5E92219DAD31DDC8466D8F559470C638D9F9B45D4F539D36C54651C4852C - -In = 94B7FA0BC1C44E949B1D7617D31B4720CBE7CA57C6FA4F4094D4761567E389ECC64F6968E4064DF70DF836A47D0C713336B5028B35930D29EB7A7F9A5AF9AD5CF441745BAEC9BB014CEEFF5A41BA5C1CE085FEB980BAB9CF79F2158E03EF7E63E29C38D7816A84D4F71E0F548B7FC316085AE38A060FF9B8DEC36F91AD9EBC0A5B6C338CBB8F6659D342A24368CF -Out = E6D9B97F5BDB0BB4F5D2322CEFF8A1A747361BB937BCFA69EB8C23D98BEA5C5EE25F9587648912D5E7F90E73C031A27E27FB11276CCB63E47C25B18649AE5DD8 - -In = EA40E83CB18B3A242C1ECC6CCD0B7853A439DAB2C569CFC6DC38A19F5C90ACBF76AEF9EA3742FF3B54EF7D36EB7CE4FF1C9AB3BC119CFF6BE93C03E208783335C0AB8137BE5B10CDC66FF3F89A1BDDC6A1EED74F504CBE7290690BB295A872B9E3FE2CEE9E6C67C41DB8EFD7D863CF10F840FE618E7936DA3DCA5CA6DF933F24F6954BA0801A1294CD8D7E66DFAFEC -Out = 0A14506B804455218133711A3BA8307615E4F80A5334B86555B9CEC77C93450A92F6A18BED9BD55B1848F78C2A49A76057FCF3509663F2E9010C39D94FC9918C - -In = 157D5B7E4507F66D9A267476D33831E7BB768D4D04CC3438DA12F9010263EA5FCAFBDE2579DB2F6B58F911D593D5F79FB05FE3596E3FA80FF2F761D1B0E57080055C118C53E53CDB63055261D7C9B2B39BD90ACC32520CBBDBDA2C4FD8856DBCEE173132A2679198DAF83007A9B5C51511AE49766C792A29520388444EBEFE28256FB33D4260439CBA73A9479EE00C63 -Out = 8D03AFCB3940007FCBCEEB023C105918E6540D87658E59109CC6568CF804BD3FA2B3968C28C650E55276218482BB8E42944272673D6A137D326477A1BAFE8F3D - -In = 836B34B515476F613FE447A4E0C3F3B8F20910AC89A3977055C960D2D5D2B72BD8ACC715A9035321B86703A411DDE0466D58A59769672AA60AD587B8481DE4BBA552A1645779789501EC53D540B904821F32B0BD1855B04E4848F9F8CFE9EBD8911BE95781A759D7AD9724A7102DBE576776B7C632BC39B9B5E19057E226552A5994C1DBB3B5C7871A11F5537011044C53 -Out = 4862476DDDADDCDE60A35260AB6C448B9B6DAD7ED296FC48B81E288D0E397E694535CC8999F4D7F2F3E09F5CE034DB0F71EF5C812F3C6BBD73FBEF14B252BC55 - -In = CC7784A4912A7AB5AD3620AAB29BA87077CD3CB83636ADC9F3DC94F51EDF521B2161EF108F21A0A298557981C0E53CE6CED45BDF782C1EF200D29BAB81DD6460586964EDAB7CEBDBBEC75FD7925060F7DA2B853B2B089588FA0F8C16EC6498B14C55DCEE335CB3A91D698E4D393AB8E8EAC0825F8ADEBEEE196DF41205C011674E53426CAA453F8DE1CBB57932B0B741D4C6 -Out = 4B239C5B1C8B83924AE736E9D30582D16BF00A547023244247B389259BC6264981606439AC9DDE0A7D371B73A34CAC998823803D7BD62ABF8905C9BD550EBAB8 - -In = 7639B461FFF270B2455AC1D1AFCE782944AEA5E9087EB4A39EB96BB5C3BAAF0E868C8526D3404F9405E79E77BFAC5FFB89BF1957B523E17D341D7323C302EA7083872DD5E8705694ACDDA36D5A1B895AAA16ECA6104C82688532C8BFE1790B5DC9F4EC5FE95BAED37E1D287BE710431F1E5E8EE105BC42ED37D74B1E55984BF1C09FE6A1FA13EF3B96FAEAED6A2A1950A12153 -Out = 2B0D1C2780D8826CCE4B71A77C9833AE59C2BD0213789A8892CCD7B4FFF1D8A780E81AD4C2C1228D55DF5BA3625DE4860DB05743E4D07934C434BAD5A769131B - -In = EB6513FC61B30CFBA58D4D7E80F94D14589090CF1D80B1DF2E68088DC6104959BA0D583D585E9578AB0AEC0CF36C48435EB52ED9AB4BBCE7A5ABE679C97AE2DBE35E8CC1D45B06DDA3CF418665C57CBEE4BBB47FA4CAF78F4EE656FEC237FE4EEBBAFA206E1EF2BD0EE4AE71BD0E9B2F54F91DAADF1FEBFD7032381D636B733DCB3BF76FB14E23AFF1F68ED3DBCF75C9B99C6F26 -Out = 0880376CD5FFC7EBCC6E80FAE0D78DBB3532500BAB96CD4B755584D23E68CF59F5297A34AE0A90184773412BC9548A80E4C54391B4CB59CE292D704C614DD1A1 - -In = 1594D74BF5DDE444265D4C04DAD9721FF3E34CBF622DAF341FE16B96431F6C4DF1F760D34F296EB97D98D560AD5286FEC4DCE1724F20B54FD7DF51D4BF137ADD656C80546FB1BF516D62EE82BAA992910EF4CC18B70F3F8698276FCFB44E0EC546C2C39CFD8EE91034FF9303058B4252462F86C823EB15BF481E6B79CC3A02218595B3658E8B37382BD5048EAED5FD02C37944E73B -Out = E725B8C82C8D1F3963A77D505B0A929FD58846061BEA2BA7040B7D3B2AD95EE3781CACA60B372EB5258A44A65BB9EE655A1EF9102F8BBD9E41FCFB2871DAEC7D - -In = 4CFA1278903026F66FEDD41374558BE1B585D03C5C55DAC94361DF286D4BD39C7CB8037ED3B267B07C346626449D0CC5B0DD2CF221F7E4C3449A4BE99985D2D5E67BFF2923357DDEAB5ABCB4619F3A3A57B2CF928A022EB27676C6CF805689004FCA4D41EA6C2D0A4789C7605F7BB838DD883B3AD3E6027E775BCF262881428099C7FFF95B14C095EA130E0B9938A5E22FC52650F591 -Out = 31175C65FF1133F5F53DB80DEB90F6B2E79727D4C8E77C5E3F5DEF70525B871B50249C6F2EE1CA6F11A7CD9C578CF13D5FCBD74DE1D05AF6076A5459E10B4B9D - -In = D3E65CB92CFA79662F6AF493D696A07CCF32AAADCCEFF06E73E8D9F6F909209E66715D6E978788C49EFB9087B170ECF3AA86D2D4D1A065AE0EFC8924F365D676B3CB9E2BEC918FD96D0B43DEE83727C9A93BF56CA2B2E59ADBA85696546A815067FC7A78039629D4948D157E7B0D826D1BF8E81237BAB7321312FDAA4D521744F988DB6FDF04549D0FDCA393D639C729AF716E9C8BBA48 -Out = 870B40EE6B774B732E15DEE647F75BF3D5DD6FD364C7E1BB184D8AC1F0C991E2486DCE6BD6CEFA1DFFE13C50260D4A0FB6C23E29D7E62CFF0F8DE785CA53C2A2 - -In = 842CC583504539622D7F71E7E31863A2B885C56A0BA62DB4C2A3F2FD12E79660DC7205CA29A0DC0A87DB4DC62EE47A41DB36B9DDB3293B9AC4BAAE7DF5C6E7201E17F717AB56E12CAD476BE49608AD2D50309E7D48D2D8DE4FA58AC3CFEAFEEE48C0A9EEC88498E3EFC51F54D300D828DDDCCB9D0B06DD021A29CF5CB5B2506915BEB8A11998B8B886E0F9B7A80E97D91A7D01270F9A7717 -Out = 8FDE68D448144F3B4BD12011DF94A463C40BE946821F80EC8197E36EB46554F7AD8B6CA9F6FCC8C05B3C0C2C909966AACBA2A1AA6E980E57AEA1CB35B01DC991 - -In = 6C4B0A0719573E57248661E98FEBE326571F9A1CA813D3638531AE28B4860F23C3A3A8AC1C250034A660E2D71E16D3ACC4BF9CE215C6F15B1C0FC7E77D3D27157E66DA9CEEC9258F8F2BF9E02B4AC93793DD6E29E307EDE3695A0DF63CBDC0FC66FB770813EB149CA2A916911BEE4902C47C7802E69E405FE3C04CEB5522792A5503FA829F707272226621F7C488A7698C0D69AA561BE9F378 -Out = F19E37E56DE97B6EF009CB1B0A8FEB42891DE80A9895C7413367C71FF34815F977A053FD621C30738C347262DF2B07EC3E455DC729803FA3D68BFBFF42415500 - -In = 51B7DBB7CE2FFEB427A91CCFE5218FD40F9E0B7E24756D4C47CD55606008BDC27D16400933906FD9F30EFFDD4880022D081155342AF3FB6CD53672AB7FB5B3A3BCBE47BE1FD3A2278CAE8A5FD61C1433F7D350675DD21803746CADCA574130F01200024C6340AB0CC2CF74F2234669F34E9009EF2EB94823D62B31407F4BA46F1A1EEC41641E84D77727B59E746B8A671BEF936F05BE820759FA -Out = BC3199569054F2DBDC66744F3B6B7DC23D3708BCD96A8C7B7C5D9E58087E2E4A5D5606CEF88AD63044C9A4F0D019358846EE83FE98CFE9C5B03B29A2D31B3134 - -In = 83599D93F5561E821BD01A472386BC2FF4EFBD4AED60D5821E84AAE74D8071029810F5E286F8F17651CD27DA07B1EB4382F754CD1C95268783AD09220F5502840370D494BEB17124220F6AFCE91EC8A0F55231F9652433E5CE3489B727716CF4AEBA7DCDA20CD29AA9A859201253F948DD94395ABA9E3852BD1D60DDA7AE5DC045B283DA006E1CBAD83CC13292A315DB5553305C628DD091146597 -Out = C44780E409877812578CF0D738A6394B1EBF7183941323C2891D9604B93E5748EAB2FD4732DCE6D9A5D1F27B7FADFD5DFDC87264BE97F86F700AE87A5D1B8227 - -In = 2BE9BF526C9D5A75D565DD11EF63B979D068659C7F026C08BEA4AF161D85A462D80E45040E91F4165C074C43AC661380311A8CBED59CC8E4C4518E80CD2C78AB1CABF66BFF83EAB3A80148550307310950D034A6286C93A1ECE8929E6385C5E3BB6EA8A7C0FB6D6332E320E71CC4EB462A2A62E2BFE08F0CCAD93E61BEDB5DD0B786A728AB666F07E0576D189C92BF9FB20DCA49AC2D3956D47385E2 -Out = 98474C61C2639BA15B58D98429F0E3489504CC6ED3BF638ACCF6859443AF2BCBF85EDBEF50191EDB6923636B21C2E76E985831F187575BA82E9AB4CA40CC482F - -In = CA76D3A12595A817682617006848675547D3E8F50C2210F9AF906C0E7CE50B4460186FE70457A9E879E79FD4D1A688C70A347361C847BA0DD6AA52936EAF8E58A1BE2F5C1C704E20146D366AEB3853BED9DE9BEFE9569AC8AAEA37A9FB7139A1A1A7D5C748605A8DEFB297869EBEDD71D615A5DA23496D11E11ABBB126B206FA0A7797EE7DE117986012D0362DCEF775C2FE145ADA6BDA1CCB326BF644 -Out = F94556B89FA106C94D32F723061D2E88EBC4164B1B02D0485851782F84CC32297D7A3AF9A1CC430702B78B5BDC9E50ABDD703201AA73F8811AEB4A80A5992C64 - -In = F76B85DC67421025D64E93096D1D712B7BAF7FB001716F02D33B2160C2C882C310EF13A576B1C2D30EF8F78EF8D2F465007109AAD93F74CB9E7D7BEF7C9590E8AF3B267C89C15DB238138C45833C98CC4A471A7802723EF4C744A853CF80A0C2568DD4ED58A2C9644806F42104CEE53628E5BDF7B63B0B338E931E31B87C24B146C6D040605567CEEF5960DF9E022CB469D4C787F4CBA3C544A1AC91F95F -Out = 60440509E00573D66609563D8F1504A196AF06D46F6CDBFEEAFF61FE46AD08456EE24BCA13DDED11818776CAC19376AE7415338A3D4F0035FF276188BF11420F - -In = 25B8C9C032EA6BCD733FFC8718FBB2A503A4EA8F71DEA1176189F694304F0FF68E862A8197B839957549EF243A5279FC2646BD4C009B6D1EDEBF24738197ABB4C992F6B1DC9BA891F570879ACCD5A6B18691A93C7D0A8D38F95B639C1DAEB48C4C2F15CCF5B9D508F8333C32DE78781B41850F261B855C4BEBCC125A380C54D501C5D3BD07E6B52102116088E53D76583B0161E2A58D0778F091206AABD5A1 -Out = 2D552519EC54E5BBBFDBB543EAE5482D9B964A952E880A88567E7DDF1DCD0D5AA353F7BE15D7634ADBDBEFA85355839FDA2B738DA987BA568103EABE2CB53D23 - -In = 21CFDC2A7CCB7F331B3D2EEFFF37E48AD9FA9C788C3F3C200E0173D99963E1CBCA93623B264E920394AE48BB4C3A5BB96FFBC8F0E53F30E22956ADABC2765F57FB761E147ECBF8567533DB6E50C8A1F894310A94EDF806DD8CA6A0E141C0FA7C9FAE6C6AE65F18C93A8529E6E5B553BF55F25BE2E80A9882BD37F145FECBEB3D447A3C4E46C21524CC55CDD62F521AB92A8BA72B897996C49BB273198B7B1C9E -Out = AFB37A28A4F216A6CC3D6AED09E82F40B93E445F892040F21D1AABAFE99AF7F001837CF0AD8DD2E2983282F35ADFB9DCEB49B2C80C85153772A8E587ABE7F18A - -In = 4E452BA42127DCC956EF4F8F35DD68CB225FB73B5BC7E1EC5A898BBA2931563E74FAFF3B67314F241EC49F4A7061E3BD0213AE826BAB380F1F14FAAB8B0EFDDD5FD1BB49373853A08F30553D5A55CCBBB8153DE4704F29CA2BDEEF0419468E05DD51557CCC80C0A96190BBCC4D77ECFF21C66BDF486459D427F986410F883A80A5BCC32C20F0478BB9A97A126FC5F95451E40F292A4614930D054C851ACD019CCF -Out = 721B1BC60845499B1A50B716F97FA9FD584132C1E30A1705779DBBAE644CBB5751AD1B1B379CC91BA4C3054BD060B88050BABA98BE1864B1B96C3691A096EF21 - -In = FA85671DF7DADF99A6FFEE97A3AB9991671F5629195049880497487867A6C446B60087FAC9A0F2FCC8E3B24E97E42345B93B5F7D3691829D3F8CCD4BB36411B85FC2328EB0C51CB3151F70860AD3246CE0623A8DC8B3C49F958F8690F8E3860E71EB2B1479A5CEA0B3F8BEFD87ACAF5362435EAECCB52F38617BC6C5C2C6E269EAD1FBD69E941D4AD2012DA2C5B21BCFBF98E4A77AB2AF1F3FDA3233F046D38F1DC8 -Out = EFFFB02598398243D8784EB8ADA33D314C8D396406BB7FB6A668085B23438AB4580BFB5258E5D616F9030C6A8928F4F753D6800C90EA2812482BED268A806E8E - -In = E90847AE6797FBC0B6B36D6E588C0A743D725788CA50B6D792352EA8294F5BA654A15366B8E1B288D84F5178240827975A763BC45C7B0430E8A559DF4488505E009C63DA994F1403F407958203CEBB6E37D89C94A5EACF6039A327F6C4DBBC7A2A307D976AA39E41AF6537243FC218DFA6AB4DD817B6A397DF5CA69107A9198799ED248641B63B42CB4C29BFDD7975AC96EDFC274AC562D0474C60347A078CE4C25E88 -Out = F1CF53FFC952C446EEF49F9D89370757C74CB8F2D99223C47EABD296151161CB86C6A34833E7AC6B75E8119A8274FD2B9066EBB9B787A4A37C9036E6E01BA9CE - -In = F6D5C2B6C93954FC627602C00C4CA9A7D3ED12B27173F0B2C9B0E4A5939398A665E67E69D0B12FB7E4CEB253E8083D1CEB724AC07F009F094E42F2D6F2129489E846EAFF0700A8D4453EF453A3EDDC18F408C77A83275617FABC4EA3A2833AA73406C0E966276079D38E8E38539A70E194CC5513AAA457C699383FD1900B1E72BDFB835D1FD321B37BA80549B078A49EA08152869A918CA57F5B54ED71E4FD3AC5C06729 -Out = F1C9A73B10BA528A61AB86F91A9A05261B447049C7ECCF37AB1E0C1219F14F0F0F2C5B419A7595550F2D651A17368C3FB7538A14FF9FFC4C4D9098803D942D3B - -In = CF8562B1BED89892D67DDAAF3DEEB28246456E972326DBCDB5CF3FB289ACA01E68DA5D59896E3A6165358B071B304D6AB3D018944BE5049D5E0E2BB819ACF67A6006111089E6767132D72DD85BEDDCBB2D64496DB0CC92955AB4C6234F1EEA24F2D51483F2E209E4589BF9519FAC51B4D061E801125E605F8093BB6997BC163D551596FE4AB7CFAE8FB9A90F6980480CE0C229FD1675409BD788354DAF316240CFE0AF93EB -Out = 5A1A31490BC85FACC5101EE18093BEC7C2CB717A54AFDEE47F98660032D912F23792F1D0AB0BE8A3C7F0D000DAC238DE843CC84178CBAA910090AC827197AD85 - -In = 2ACE31ABB0A2E3267944D2F75E1559985DB7354C6E605F18DC8470423FCA30B7331D9B33C4A4326783D1CAAE1B4F07060EFF978E4746BF0C7E30CD61040BD5EC2746B29863EB7F103EBDA614C4291A805B6A4C8214230564A0557BC7102E0BD3ED23719252F7435D64D210EE2AAFC585BE903FA41E1968C50FD5D5367926DF7A05E3A42CF07E656FF92DE73B036CF8B19898C0CB34557C0C12C2D8B84E91181AF467BC75A9D1 -Out = 24B5A99041785BC5C5519190B4AAAF92770E35D07213A6DE55EB8811324CC63E3AFCF61F973A896CFB30315873C0071E2BF3BB976A53163422A01192915B9C1E - -In = 0D8D09AED19F1013969CE5E7EB92F83A209AE76BE31C754844EA9116CEB39A22EBB6003017BBCF26555FA6624185187DB8F0CB3564B8B1C06BF685D47F3286EDA20B83358F599D2044BBF0583FAB8D78F854FE0A596183230C5EF8E54426750EAF2CC4E29D3BDD037E734D863C2BD9789B4C243096138F7672C232314EFFDFC6513427E2DA76916B5248933BE312EB5DDE4CF70804FB258AC5FB82D58D08177AC6F4756017FFF5 -Out = 7FF6491E79CD3F743C3D735A0AC1BC5EC3395950C65111D7BC2E5E3719AB0FE920DDA443B1FD8A8D557633B95E68354EF8F78A91A769CF0798871F8B11B77478 - -In = C3236B73DEB7662BF3F3DAA58F137B358BA610560EF7455785A9BEFDB035A066E90704F929BD9689CEF0CE3BDA5ACF4480BCEB8D09D10B098AD8500D9B6071DFC3A14AF6C77511D81E3AA8844986C3BEA6F469F9E02194C92868CD5F51646256798FF0424954C1434BDFED9FACB390B07D342E992936E0F88BFD0E884A0DDB679D0547CCDEC6384285A45429D115AC7D235A717242021D1DC35641F5F0A48E8445DBA58E6CB2C8EA -Out = 0154D5832EC5594FF994034BE3FD3E61E7EEBC8E43C20C6CC9910F15650FBAED2915087AC641DBF60A2083FF14AB084A27B5CC9A4E84C54A6B361D38C72746D5 - -In = B39FEB8283EADC63E8184B51DF5AE3FD41AAC8A963BB0BE1CD08AA5867D8D910C669221E73243360646F6553D1CA05A84E8DC0DE05B6419EC349CA994480193D01C92525F3FB3DCEFB08AFC6D26947BDBBFD85193F53B50609C6140905C53A6686B58E53A319A57B962331EDE98149AF3DE3118A819DA4D76706A0424B4E1D2910B0ED26AF61D150EBCB46595D4266A0BD7F651BA47D0C7F179CA28545007D92E8419D48FDFBD744CE -Out = 5B617AB6F6FFA82197ED058D4CFDF54398FA3CD95074A745D389C05D8DCE1B9D4B9E88CE4B519017EA3A55EB89D06D2CE321F4801D079D5867EAC366BC270968 - -In = A983D54F503803E8C7999F4EDBBE82E9084F422143A932DDDDC47A17B0B7564A7F37A99D0786E99476428D29E29D3C197A72BFAB1342C12A0FC4787FD7017D7A6174049EA43B5779169EF7472BDBBD941DCB82FC73AAC45A8A94C9F2BD3477F61FD3B796F02A1B8264A214C6FEA74B7051B226C722099EC7883A462B83B6AFDD4009248B8A237F605FE5A08FE7D8B45321421EBBA67BD70A0B00DDBF94BAAB7F359D5D1EEA105F28DCFB -Out = 1D96D1CE0C82A43D4135ED8A022A5F145AB42FDFA024C894939D6FA422EC4F621A1402113E1105A96273DD4F7884879F63EF41830A1EA0B4516937BBB2DBE44D - -In = E4D1C1897A0A866CE564635B74222F9696BF2C7F640DD78D7E2ACA66E1B61C642BB03EA7536AAE597811E9BF4A7B453EDE31F97B46A5F0EF51A071A2B3918DF16B152519AE3776F9F1EDAB4C2A377C3292E96408359D3613844D5EB393000283D5AD3401A318B12FD1474B8612F2BB50FB6A8B9E023A54D7DDE28C43D6D8854C8D9D1155935C199811DBFC87E9E0072E90EB88681CC7529714F8FB8A2C9D88567ADFB974EE205A9BF7B848 -Out = DE1255FCB5A191E19B663DF4A9DC5471F39F13BE5F8A9CC1C3F6FE2844EB8CF038E7FF1825D26A8F135AAA77120925ADDB6ACC12EA1BF0E60DFA236FBE38458F - -In = B10C59723E3DCADD6D75DF87D0A1580E73133A9B7D00CB95EC19F5547027323BE75158B11F80B6E142C6A78531886D9047B08E551E75E6261E79785366D7024BD7CD9CF322D9BE7D57FB661069F2481C7BB759CD71B4B36CA2BC2DF6D3A328FAEBDB995A9794A8D72155ED551A1F87C80BF6059B43FC764900B18A1C2441F7487743CF84E565F61F8DD2ECE6B6CCC9444049197AAAF53E926FBEE3BFCA8BE588EC77F29D211BE89DE18B15F6 -Out = B17A24CA14830ED093C39E8323EC0DFD903172458D023D10FE4125D0EB4AF0E7578B1EA1D5148348AB8D6CAB98B20B18BCC52A6CBA85851D2B74B20735BE6E48 - -In = DB11F609BABA7B0CA634926B1DD539C8CBADA24967D7ADD4D9876F77C2D80C0F4DCEFBD7121548373582705CCA2495BD2A43716FE64ED26D059CFB566B3364BD49EE0717BDD9810DD14D8FAD80DBBDC4CAFB37CC60FB0FE2A80FB4541B8CA9D59DCE457738A9D3D8F641AF8C3FD6DA162DC16FC01AAC527A4A0255B4D231C0BE50F44F0DB0B713AF03D968FE7F0F61ED0824C55C4B5265548FEBD6AAD5C5EEDF63EFE793489C39B8FD29D104CE -Out = 602B683C28F25E9F20C413D2B357DCDF3E339945C5BD41FCA69FFFD2E1658F9FB654B94B62BEE72087EABEF2F2F6AEDE72C7DC45DD4549CBC75465CC10D4C554 - -In = BEBD4F1A84FC8B15E4452A54BD02D69E304B7F32616AADD90537937106AE4E28DE9D8AAB02D19BC3E2FDE1D651559E296453E4DBA94370A14DBBB2D1D4E2022302EE90E208321EFCD8528AD89E46DC839EA9DF618EA8394A6BFF308E7726BAE0C19BCD4BE52DA6258E2EF4E96AA21244429F49EF5CB486D7FF35CAC1BACB7E95711944BCCB2AB34700D42D1EB38B5D536B947348A458EDE3DC6BD6EC547B1B0CAE5B257BE36A7124E1060C170FFA -Out = E90126404BFED0DCF726CA50A6D0620305D1A84EFB0E768044D2DB920FB041E7DEAA465777D312E2867E6E9E50559BB5ECE3A4ED6F844504C39E12988917FFF5 - -In = 5ACA56A03A13784BDC3289D9364F79E2A85C12276B49B92DB0ADAA4F206D5028F213F678C3510E111F9DC4C1C1F8B6ACB17A6413AA227607C515C62A733817BA5E762CC6748E7E0D6872C984D723C9BB3B117EB8963185300A80BFA65CDE495D70A46C44858605FCCBED086C2B45CEF963D33294DBE9706B13AF22F1B7C4CD5A001CFEC251FBA18E722C6E1C4B1166918B4F6F48A98B64B3C07FC86A6B17A6D0480AB79D4E6415B520F1C484D675B1 -Out = D98758D0CBE6C5FEF11A4EDD8E9170FFA7F37F40914B4D836025B3FD71FA2B518164266D974A40AE2D7C3C359CA675E94B04D08D3EE56346A51B82366F1EF0F0 - -In = A5AAD0E4646A32C85CFCAC73F02FC5300F1982FABB2F2179E28303E447854094CDFC854310E5C0F60993CEFF54D84D6B46323D930ADB07C17599B35B505F09E784BCA5985E0172257797FB53649E2E9723EFD16865C31B5C3D5113B58BB0BFC8920FABDDA086D7537E66D709D050BD14D0C960873F156FAD5B3D3840CDFCDC9BE6AF519DB262A27F40896AB25CC39F96984D650611C0D5A3080D5B3A1BF186ABD42956588B3B58CD948970D298776060 -Out = 7EA57C6B9741AE7C07E11766DC6F69C83A72533126ACAFCA968832FCBC7A28DF18968BB582E6933898672E322235C9D8FA310F485169C55E04672FFDA2A01099 - -In = 06CBBE67E94A978203EAD6C057A1A5B098478B4B4CBEF5A97E93C8E42F5572713575FC2A884531D7622F8F879387A859A80F10EF02708CD8F7413AB385AFC357678B9578C0EBF641EF076A1A30F1F75379E9DCB2A885BDD295905EE80C0168A62A9597D10CF12DD2D8CEE46645C7E5A141F6E0E23AA482ABE5661C16E69EF1E28371E2E236C359BA4E92C25626A7B7FF13F6EA4AE906E1CFE163E91719B1F750A96CBDE5FBC953D9E576CD216AFC90323A -Out = CEFB46600FC757512E917DFA063BEC761DA6140893D3B7BA01677C6D142CA2960B4B016CCF9C9A175D8E83CC2F1A9D4171D6074E2405B866CDEE57683BD4334F - -In = F1C528CF7739874707D4D8AD5B98F7C77169DE0B57188DF233B2DC8A5B31EDA5DB4291DD9F68E6BAD37B8D7F6C9C0044B3BF74BBC3D7D1798E138709B0D75E7C593D3CCCDC1B20C7174B4E692ADD820ACE262D45CCFAE2077E878796347168060A162ECCA8C38C1A88350BD63BB539134F700FD4ADDD5959E255337DAA06BC86358FABCBEFDFB5BC889783D843C08AADC6C4F6C36F65F156E851C9A0F917E4A367B5AD93D874812A1DE6A7B93CD53AD97232 -Out = EB861B333F0763CC1F0747ECE23FF46B98962B096CBF95335B6BA9992F2916115887E77A812CE6F78B00530194C71B97ABF4082F31C09F547B025B4388199E75 - -In = 9D9F3A7ECD51B41F6572FD0D0881E30390DFB780991DAE7DB3B47619134718E6F987810E542619DFAA7B505C76B7350C6432D8BF1CFEBDF1069B90A35F0D04CBDF130B0DFC7875F4A4E62CDB8E525AADD7CE842520A482AC18F09442D78305FE85A74E39E760A4837482ED2F437DD13B2EC1042AFCF9DECDC3E877E50FF4106AD10A525230D11920324A81094DA31DEAB6476AA42F20C84843CFC1C58545EE80352BDD3740DD6A16792AE2D86F11641BB717C2 -Out = 51CBA976ABC7E8D55F67B1A056B311B861FEE85D2FD69BED53DD274024D87DBD269C41B85F6A1C19FF3D32C444CC7BD8F11478147BBCE99DCBD29E34988EA808 - -In = 5179888724819FBAD3AFA927D3577796660E6A81C52D98E9303261D5A4A83232F6F758934D50AA83FF9E20A5926DFEBAAC49529D006EB923C5AE5048ED544EC471ED7191EDF46363383824F915769B3E688094C682B02151E5EE01E510B431C8865AFF8B6B6F2F59CB6D129DA79E97C6D2B8FA6C6DA3F603199D2D1BCAB547682A81CD6CF65F6551121391D78BCC23B5BD0E922EC6D8BF97C952E84DD28AEF909ABA31EDB903B28FBFC33B7703CD996215A11238 -Out = 10863687D6D1144DCF9D03C10CB66B33E9813EFB9118EEFB947FC68997E6CCF6D93DCD4C2E33A2D187F5E6F5569D291F16B985908F4015599A6214C24AF791B9 - -In = 576EF3520D30B7A4899B8C0D5E359E45C5189ADD100E43BE429A02FB3DE5FF4F8FD0E79D9663ACCA72CD29C94582B19292A557C5B1315297D168FBB54E9E2ECD13809C2B5FCE998EDC6570545E1499DBE7FB74D47CD7F35823B212B05BF3F5A79CAA34224FDD670D335FCB106F5D92C3946F44D3AFCBAE2E41AC554D8E6759F332B76BE89A0324AA12C5482D1EA3EE89DED4936F3E3C080436F539FA137E74C6D3389BDF5A45074C47BC7B20B0948407A66D855E2F -Out = DE8591FD57ABD6D73CF01C94083F916C897FC0CABC1049BCD75D64C768D3B4C42F05BA4DEAAB83BB643BA451CC224B0A61110647FA35AC14F63D9C2FEA5231C9 - -In = 0DF2152FA4F4357C8741529DD77E783925D3D76E95BAFA2B542A2C33F3D1D117D159CF473F82310356FEE4C90A9E505E70F8F24859656368BA09381FA245EB6C3D763F3093F0C89B972E66B53D59406D9F01AEA07F8B3B615CAC4EE4D05F542E7D0DAB45D67CCCCD3A606CCBEB31EA1FA7005BA07176E60DAB7D78F6810EF086F42F08E595F0EC217372B98970CC6321576D92CE38F7C397A403BADA1548D205C343AC09DECA86325373C3B76D9F32028FEA8EB32515 -Out = 4E529B73E0AFA555B75A7EF2B43F32D71002045F0ABF519C5C1E31F7213AE10BB1474BED81450E9956779216B0DC2D4067B181744D9E66AF3F34306CEFD5FDE8 - -In = 3E15350D87D6EBB5C8AD99D42515CFE17980933C7A8F6B8BBBF0A63728CEFAAD2052623C0BD5931839112A48633FB3C2004E0749C87A41B26A8B48945539D1FF41A4B269462FD199BFECD45374756F55A9116E92093AC99451AEFB2AF9FD32D6D7F5FBC7F7A540D5097C096EBC3B3A721541DE073A1CC02F7FB0FB1B9327FB0B1218CA49C9487AB5396622A13AE546C97ABDEF6B56380DDA7012A8384091B6656D0AB272D363CEA78163FF765CDD13AB1738B940D16CAE -Out = CAD6B2E517A3A890D69C8058B427CF4CE48C775B84EC7E47D12C3D2BFD746D3F6DD1814F6721B5DA519A6630E581846F999F727970C67940DFFF70015DAE9053 - -In = C38D6B0B757CB552BE40940ECE0009EF3B0B59307C1451686F1A22702922800D58BCE7A636C1727EE547C01B214779E898FC0E560F8AE7F61BEF4D75EAA696B921FD6B735D171535E9EDD267C192B99880C87997711002009095D8A7A437E258104A41A505E5EF71E5613DDD2008195F0C574E6BA3FE40099CFA116E5F1A2FA8A6DA04BADCB4E2D5D0DE31FDC4800891C45781A0AAC7C907B56D631FCA5CE8B2CDE620D11D1777ED9FA603541DE794DDC5758FCD5FAD78C0 -Out = 24C90C5D7F0C9471FA119437C8CA847E81D556F66FB6316DD0FB53DD57DFB3BA7D14AC4D1C9C55F04FB6FE2EA9E67178890A3501567059015B7D993256CA1C54 - -In = 8D2DE3F0B37A6385C90739805B170057F091CD0C7A0BC951540F26A5A75B3E694631BB64C7635EED316F51318E9D8DE13C70A2ABA04A14836855F35E480528B776D0A1E8A23B547C8B8D6A0D09B241D3BE9377160CCA4E6793D00A515DC2992CB7FC741DACA171431DA99CCE6F7789F129E2AC5CF65B40D703035CD2185BB936C82002DAF8CBC27A7A9E554B06196630446A6F0A14BA155ED26D95BD627B7205C072D02B60DB0FD7E49EA058C2E0BA202DAFF0DE91E845CF79 -Out = 4BA61EFF8CEC62389A932E24775211189098BDCDFDC6615AE79948914D6361C6BBC45B7DEAFB4A58B78AF4ABFBEB8991EDCF30A2A586BE8C6CECF9875C734D7A - -In = C464BBDAD275C50DCD983B65AD1019B9FF85A1E71C807F3204BB2C921DC31FBCD8C5FC45868AE9EF85B6C9B83BBA2A5A822201ED68586EC5EC27FB2857A5D1A2D09D09115F22DCC39FE61F5E1BA0FF6E8B4ACB4C6DA748BE7F3F0839739394FF7FA8E39F7F7E84A33C3866875C01BCB1263C9405D91908E9E0B50E7459FABB63D8C6BBB73D8E3483C099B55BC30FF092FF68B6ADEDFD477D63570C9F5515847F36E24BA0B705557130CEC57EBAD1D0B31A378E91894EE26E3A04 -Out = 1F6CD40F56856615AAFD4103618908530C8EEF746389ADCE64E2CADFFBACB9DAB4E5F973CBB86E607AF00F32948E4CF8BAFD2782653710B38FBF890922773AE5 - -In = 8B8D68BB8A75732FE272815A68A1C9C5AA31B41DEDC8493E76525D1D013D33CEBD9E21A5BB95DB2616976A8C07FCF411F5F6BC6F7E0B57ACA78CC2790A6F9B898858AC9C79B165FF24E66677531E39F572BE5D81EB3264524181115F32780257BFB9AEEC6AF12AF28E587CAC068A1A2953B59AD680F4C245B2E3EC36F59940D37E1D3DB38E13EDB29B5C0F404F6FF87F80FC8BE7A225FF22FBB9C8B6B1D7330C57840D24BC75B06B80D30DAD6806544D510AF6C4785E823AC3E0B8 -Out = 2E6D38768361D7BA583A5314947E43FA294E29F87BD7CC2D6F49890912885F907D8FA6BEF24B4824A4FF777C5FCF04D655FB0F9C2A6C7ADABEC9B92A6698D33E - -In = 6B018710446F368E7421F1BC0CCF562D9C1843846BC8D98D1C9BF7D9D6FCB48BFC3BF83B36D44C4FA93430AF75CD190BDE36A7F92F867F58A803900DF8018150384D85D82132F123006AC2AEBA58E02A037FE6AFBD65ECA7C44977DD3DC74F48B6E7A1BFD5CC4DCF24E4D52E92BD4455848E4928B0EAC8B7476FE3CC03E862AA4DFF4470DBFED6DE48E410F25096487ECFC32A27277F3F5023B2725ADE461B1355889554A8836C9CF53BD767F5737D55184EEA1AB3F53EDD0976C485 -Out = EB395350C2557F16601D19DC75031348103F059A0FB890CC2A002932E0619CE8E52F0F39688DF0DB724CB095B69A5643154C9336FBBA50F35C6A4C05477737EC - -In = C9534A24714BD4BE37C88A3DA1082EDA7CABD154C309D7BD670DCCD95AA535594463058A29F79031D6ECAA9F675D1211E9359BE82669A79C855EA8D89DD38C2C761DDD0EC0CE9E97597432E9A1BEAE062CDD71EDFDFD464119BE9E69D18A7A7FD7CE0E2106F0C8B0ABF4715E2CA48EF9F454DC203C96656653B727083513F8EFB86E49C513BB758B3B052FE21F1C05BB33C37129D6CC81F1AEF6ADC45B0E8827A830FE545CF57D0955802C117D23CCB55EA28F95C0D8C2F9C5A242B33F -Out = 01449772284E566C1E31A6924A2D9157BDCDD694B5ED1039370BBB11F58851FE5677B25276EC84FDD8472426735C532BCA3D59ACB6FDCE13C0DEA9376DDA8AAE - -In = 07906C87297B867ABF4576E9F3CC7F82F22B154AFCBF293B9319F1B0584DA6A40C27B32E0B1B7F412C4F1B82480E70A9235B12EC27090A5A33175A2BB28D8ADC475CEFE33F7803F8CE27967217381F02E67A3B4F84A71F1C5228E0C2AD971373F6F672624FCEA8D1A9F85170FAD30FA0BBD25035C3B41A6175D467998BD1215F6F3866F53847F9CF68EF3E2FBB54BC994DE2302B829C5EEA68EC441FCBAFD7D16AE4FE9FFF98BF00E5BC2AD54DD91FF9FDA4DD77B6C754A91955D1FBAAD0 -Out = 5E4DE3451E6BF67CEC13F960D86FA9035B1AA4A824F0AFF446271D39784A0E735FDD00AE53D6347DDFEC4EC6A552AD78AF145BBA1CD4C34C300E3AAEEF88838E - -In = 588E94B9054ABC2189DF69B8BA34341B77CDD528E7860E5DEFCAA79B0C9A452AD4B82AA306BE84536EB7CEDCBE058D7B84A6AEF826B028B8A0271B69AC3605A9635EA9F5EA0AA700F3EB7835BC54611B922964300C953EFE7491E3677C2CEBE0822E956CD16433B02C68C4A23252C3F9E151A416B4963257B783E038F6B4D5C9F110F871652C7A649A7BCEDCBCCC6F2D0725BB903CC196BA76C76AA9F10A190B1D1168993BAA9FFC96A1655216773458BEC72B0E39C9F2C121378FEAB4E76A -Out = 814E7B36373B0276718212ABA4E0D9760E433B680FC59869533E4F1D34010047977C91FA33C0C6DFC2F6A4DADCE34BC897A3F7E2CA9935B99D8E5425AB46060D - -In = 08959A7E4BAAE874928813364071194E2939772F20DB7C3157078987C557C2A6D5ABE68D520EEF3DC491692E1E21BCD880ADEBF63BB4213B50897FA005256ED41B5690F78F52855C8D9168A4B666FCE2DA2B456D7A7E7C17AB5F2FB1EE90B79E698712E963715983FD07641AE4B4E9DC73203FAC1AE11FA1F8C7941FCC82EAB247ADDB56E2638447E9D609E610B60CE086656AAEBF1DA3C8A231D7D94E2FD0AFE46B391FF14A72EAEB3F44AD4DF85866DEF43D4781A0B3578BC996C87970B132 -Out = 9B28504942E11B4FE971337FBB905DD772EF9D4982AC4D5EC7C3EFCEBBD1F32D6BC7EDCE173A75DE81C5651A3D1DD22A5D63A2763986356331F18BD02D77B036 - -In = CB2A234F45E2ECD5863895A451D389A369AAB99CFEF0D5C9FFCA1E6E63F763B5C14FB9B478313C8E8C0EFEB3AC9500CF5FD93791B789E67EAC12FD038E2547CC8E0FC9DB591F33A1E4907C64A922DDA23EC9827310B306098554A4A78F050262DB5B545B159E1FF1DCA6EB734B872343B842C57EAFCFDA8405EEDBB48EF32E99696D135979235C3A05364E371C2D76F1902F1D83146DF9495C0A6C57D7BF9EE77E80F9787AEE27BE1FE126CDC9EF893A4A7DCBBC367E40FE4E1EE90B42EA25AF01 -Out = 563AAB317672C0DAFC3578FD23DD1416A577D76099B850801C82B03A7FD9037DDC84E7960817B893C2AA5444C46CC5ACED01821E0A299A8BFC13860B6DE3A0C2 - -In = D16BEADF02AB1D4DC6F88B8C4554C51E866DF830B89C06E786A5F8757E8909310AF51C840EFE8D20B35331F4355D80F73295974653DDD620CDDE4730FB6C8D0D2DCB2B45D92D4FBDB567C0A3E86BD1A8A795AF26FBF29FC6C65941CDDB090FF7CD230AC5268AB4606FCCBA9EDED0A2B5D014EE0C34F0B2881AC036E24E151BE89EEB6CD9A7A790AFCCFF234D7CB11B99EBF58CD0C589F20BDAC4F9F0E28F75E3E04E5B3DEBCE607A496D848D67FA7B49132C71B878FD5557E082A18ECA1FBDA94D4B -Out = 7365A562E0A02312B2B26D583CA242C479A96F50827B4E87B4E7D4F4B4174C39A76E843FB1D3D2F3731B06161A02BA5E64860D916E607BB5954765B34F57072C - -In = 8F65F6BC59A85705016E2BAE7FE57980DE3127E5AB275F573D334F73F8603106EC3553016608EF2DD6E69B24BE0B7113BF6A760BA6E9CE1C48F9E186012CF96A1D4849D75DF5BB8315387FD78E9E153E76F8BA7EC6C8849810F59FB4BB9B004318210B37F1299526866F44059E017E22E96CBE418699D014C6EA01C9F0038B10299884DBEC3199BB05ADC94E955A1533219C1115FED0E5F21228B071F40DD57C4240D98D37B73E412FE0FA4703120D7C0C67972ED233E5DEB300A22605472FA3A3BA86 -Out = 8B9F0CD8D4D56DCB17BB67DB05580A6B67296D4CA8297CA8A705ED9C9948EA9B1DE211D205DF7836DA88C2CEA2ADDA29124E9DD9D5A95AA7E300BFC52E8931DB - -In = 84891E52E0D451813210C3FD635B39A03A6B7A7317B221A7ABC270DFA946C42669AACBBBDF801E1584F330E28C729847EA14152BD637B3D0F2B38B4BD5BF9C791C58806281103A3EABBAEDE5E711E539E6A8B2CF297CF351C078B4FA8F7F35CF61BEBF8814BF248A01D41E86C5715EA40C63F7375379A7EB1D78F27622FB468AB784AAABA4E534A6DFD1DF6FA15511341E725ED2E87F98737CCB7B6A6DFAE416477472B046BF1811187D151BFA9F7B2BF9ACDB23A3BE507CDF14CFDF517D2CB5FB9E4AB6 -Out = 34C0FFBFE39B0ABD5B261D66499A8508F360B0D61296DB24E2496C2EDEBE80C2642C12976FA54EF41A766F6722393D7B154AA0BC5C4E20A2CE0527F9A16C3AAC - -In = FDD7A9433A3B4AFABD7A3A5E3457E56DEBF78E84B7A0B0CA0E8C6D53BD0C2DAE31B2700C6128334F43981BE3B213B1D7A118D59C7E6B6493A86F866A1635C12859CFB9AD17460A77B4522A5C1883C3D6ACC86E6162667EC414E9A104AA892053A2B1D72165A855BACD8FAF8034A5DD9B716F47A0818C09BB6BAF22AA503C06B4CA261F557761989D2AFBD88B6A678AD128AF68672107D0F1FC73C5CA740459297B3292B281E93BCEB761BDE7221C3A55708E5EC84472CDDCAA84ECF23723CC0991355C6280 -Out = 2EB1C4BD6D8E41981756A7F83A41D5DF0FC770707AFE22DADEE6BF92DF54096FC4AEB6E0114AC3CBB33BD8D6A47260BAF4127CDE97371979B21E8E32EA205265 - -In = 70A40BFBEF92277A1AAD72F6B79D0177197C4EBD432668CFEC05D099ACCB651062B5DFF156C0B27336687A94B26679CFDD9DAF7AD204338DD9C4D14114033A5C225BD11F217B5F4732DA167EE3F939262D4043FC9CBA92303B7B5E96AEA12ADDA64859DF4B86E9EE0B58E39091E6B188B408AC94E1294A8911245EE361E60E601EFF58D1D37639F3753BEC80EBB4EFDE25817436076623FC65415FE51D1B0280366D12C554D86743F3C3B6572E400361A60726131441BA493A83FBE9AFDA90F7AF1AE717238D -Out = 18485311BE9C848C38BFA25EC4C557196F1E39A4AC812B77AD2975182A9C2768706905562B0722A2A1B92A56EB47E2500EC1621F59B6B0059EE6FF8C2DB29326 - -In = 74356E449F4BF8644F77B14F4D67CB6BD9C1F5AE357621D5B8147E562B65C66585CAF2E491B48529A01A34D226D436959153815380D5689E30B35357CDAC6E08D3F2B0E88E200600D62BD9F5EAF488DF86A4470EA227006182E44809009868C4C280C43D7D64A5268FA719074960087B3A6ABC837882F882C837834535929389A12B2C78187E2EA07EF8B8EEF27DC85002C3AE35F1A50BEE6A1C48BA7E175F3316670B27983472AA6A61EED0A683A39EE323080620EA44A9F74411AE5CE99030528F9AB49C79F2 -Out = 753B20F511FD288F732ADE82C0F97D7A05DC4E6B931F7D1D0F266911A3C7DDBA5DB2BB233A12D9508DC071E760844F376AC74CDACC5C8321DB2E6DDA9EF2F9D1 - -In = 8C3798E51BC68482D7337D3ABB75DC9FFE860714A9AD73551E120059860DDE24AB87327222B64CF774415A70F724CDF270DE3FE47DDA07B61C9EF2A3551F45A5584860248FABDE676E1CD75F6355AA3EAEABE3B51DC813D9FB2EAA4F0F1D9F834D7CAD9C7C695AE84B329385BC0BEF895B9F1EDF44A03D4B410CC23A79A6B62E4F346A5E8DD851C2857995DDBF5B2D717AEB847310E1F6A46AC3D26A7F9B44985AF656D2B7C9406E8A9E8F47DCB4EF6B83CAACF9AEFB6118BFCFF7E44BEF6937EBDDC89186839B77 -Out = E4ECE8FA8A82C0C44328A5B11C0C0EAB3B165A919555B8ECD121A828B0892E1686EF62EAAD10C87B41BCCD85E60F37AEAE96503FBCE970D895E1E1E551CE1A85 - -In = FA56BF730C4F8395875189C10C4FB251605757A8FECC31F9737E3C2503B02608E6731E85D7A38393C67DE516B85304824BFB135E33BF22B3A23B913BF6ACD2B7AB85198B8187B2BCD454D5E3318CACB32FD6261C31AE7F6C54EF6A7A2A4C9F3ECB81CE3555D4F0AD466DD4C108A90399D70041997C3B25345A9653F3C9A6711AB1B91D6A9D2216442DA2C973CBD685EE7643BFD77327A2F7AE9CB283620A08716DFB462E5C1D65432CA9D56A90E811443CD1ECB8F0DE179C9CB48BA4F6FEC360C66F252F6E64EDC96B -Out = 0C2A1D85CB308CEA8D84108224FC6DA66A2654496A14CAB4457B672EF9BD2D25F0D14098334846F0187D01D74CF8B18C22B3CF9E00ED31F1BE30E960E3C26AF1 - -In = B6134F9C3E91DD8000740D009DD806240811D51AB1546A974BCB18D344642BAA5CD5903AF84D58EC5BA17301D5EC0F10CCD0509CBB3FD3FFF9172D193AF0F782252FD1338C7244D40E0E42362275B22D01C4C3389F19DD69BDF958EBE28E31A4FFE2B5F18A87831CFB7095F58A87C9FA21DB72BA269379B2DC2384B3DA953C7925761FED324620ACEA435E52B424A7723F6A2357374157A34CD8252351C25A1B232826CEFE1BD3E70FFC15A31E7C0598219D7F00436294D11891B82497BC78AA5363892A2495DF8C1EEF -Out = 46C390535747C9C16A4797C28DDEE9C2CECC3B8F1A89EE67C91A0D06220E66339E7B4A7D6C6B2B27D0A011D51BF7EA0DD61E6124D329269BCD4B92273C2A311D - -In = C941CDB9C28AB0A791F2E5C8E8BB52850626AA89205BEC3A7E22682313D198B1FA33FC7295381354858758AE6C8EC6FAC3245C6E454D16FA2F51C4166FAB51DF272858F2D603770C40987F64442D487AF49CD5C3991CE858EA2A60DAB6A65A34414965933973AC2457089E359160B7CDEDC42F29E10A91921785F6B7224EE0B349393CDCFF6151B50B377D609559923D0984CDA6000829B916AB6896693EF6A2199B3C22F7DC5500A15B8258420E314C222BC000BC4E5413E6DD82C993F8330F5C6D1BE4BC79F08A1A0A46 -Out = 6C7060DBE2F17BAE9F4503FA61FCB2B3C6F9F8E1710FD2092CAB5865E05C6E3A9A5D2E5A94E4C9DAFB9F3E47E52A6644990D8F397C93DAD4546A7C1C35BE8CA7 - -In = 4499EFFFAC4BCEA52747EFD1E4F20B73E48758BE915C88A1FFE5299B0B005837A46B2F20A9CB3C6E64A9E3C564A27C0F1C6AD1960373036EC5BFE1A8FC6A435C2185ED0F114C50E8B3E4C7ED96B06A036819C9463E864A58D6286F785E32A804443A56AF0B4DF6ABC57ED5C2B185DDEE8489EA080DEEEE66AA33C2E6DAB36251C402682B6824821F998C32163164298E1FAFD31BABBCFFB594C91888C6219079D907FDB438ED89529D6D96212FD55ABE20399DBEFD342248507436931CDEAD496EB6E4A80358ACC78647D043 -Out = A614F68BE815612E5E571B06DC69C3C86A8A4EFF9BBA9A981413F60C7B612B906A7805BE3E292F1154CB0E1B003B86F40B23B99C579DA381D06C734E60A49806 - -In = EECBB8FDFA4DA62170FD06727F697D81F83F601FF61E478105D3CB7502F2C89BF3E8F56EDD469D049807A38882A7EEFBC85FC9A950952E9FA84B8AFEBD3CE782D4DA598002827B1EB98882EA1F0A8F7AA9CE013A6E9BC462FB66C8D4A18DA21401E1B93356EB12F3725B6DB1684F2300A98B9A119E5D27FF704AFFB618E12708E77E6E5F34139A5A41131FD1D6336C272A8FC37080F041C71341BEE6AB550CB4A20A6DDB6A8E0299F2B14BC730C54B8B1C1C487B494BDCCFD3A53535AB2F231590BF2C4062FD2AD58F906A2D0D -Out = 402CC283CF76060F64F0DE59D14910D710221F63537D5E30A1388496CC2260DE1E3BCACE354FC1AB344458DD9BEDF3FC36336D67B10EF21FC6D6F48ACD265C8D - -In = E64F3E4ACE5C8418D65FEC2BC5D2A303DD458034736E3B0DF719098BE7A206DEAF52D6BA82316CAF330EF852375188CDE2B39CC94AA449578A7E2A8E3F5A9D68E816B8D16889FBC0EBF0939D04F63033AE9AE2BDAB73B88C26D6BD25EE460EE1EF58FB0AFA92CC539F8C76D3D097E7A6A63EBB9B5887EDF3CF076028C5BBD5B9DB3211371AD3FE121D4E9BF44229F4E1ECF5A0F9F0EBA4D5CEB72878AB22C3F0EB5A625323AC66F7061F4A81FAC834471E0C59553F108475FE290D43E6A055AE3EE46FB67422F814A68C4BE3E8C9 -Out = AEF42FDB10807FDAEA631638A64C06A9125CDB7F94BB91AB345E1EA30E606FC5FBC6322075A50FE2D13D19FD34AB072C41B96CED205CC5143A1A5C98DEA311D0 - -In = D2CB2D733033F9E91395312808383CC4F0CA974E87EC68400D52E96B3FA6984AC58D9AD0938DDE5A973008D818C49607D9DE2284E7618F1B8AED8372FBD52ED54557AF4220FAC09DFA8443011699B97D743F8F2B1AEF3537EBB45DCC9E13DFB438428EE190A4EFDB3CAEB7F3933117BF63ABDC7E57BEB4171C7E1AD260AB0587806C4D137B6316B50ABC9CCE0DFF3ACADA47BBB86BE777E617BBE578FF4519844DB360E0A96C6701290E76BB95D26F0F804C8A4F2717EAC4E7DE9F2CFF3BBC55A17E776C0D02856032A6CD10AD2838 -Out = 391C3A33EC4B5D75C910DF0F00F6AD5D4E8844CDB364B2D7B0155BDD4F9C0E1B6C7825938F642840D06CD0E6F67F87DCCC34F6FD83587FD9266D603CA625548F - -In = F2998955613DD414CC111DF5CE30A995BB792E260B0E37A5B1D942FE90171A4AC2F66D4928D7AD377F4D0554CBF4C523D21F6E5F379D6F4B028CDCB9B1758D3B39663242FF3CB6EDE6A36A6F05DB3BC41E0D861B384B6DEC58BB096D0A422FD542DF175E1BE1571FB52AE66F2D86A2F6824A8CFAACBAC4A7492AD0433EEB15454AF8F312B3B2A577750E3EFBD370E8A8CAC1582581971FBA3BA4BD0D76E718DACF8433D33A59D287F8CC92234E7A271041B526E389EFB0E40B6A18B3AAF658E82ED1C78631FD23B4C3EB27C3FAEC8685 -Out = E51079072C571D0E44C975F232F052F78B497A1C85995E194691A85AB026E4F80A4993D3A2B4D69F607558CEFF54D766915E5A4E0C7A42C8D307FA03C6DC4C74 - -In = 447797E2899B72A356BA55BF4DF3ACCA6CDB1041EB477BD1834A9F9ACBC340A294D729F2F97DF3A610BE0FF15EDB9C6D5DB41644B9874360140FC64F52AA03F0286C8A640670067A84E017926A70438DB1BB361DEFEE7317021425F8821DEF26D1EFD77FC853B818545D055ADC9284796E583C76E6FE74C9AC2587AA46AA8F8804F2FEB5836CC4B3ABABAB8429A5783E17D5999F32242EB59EF30CD7ADABC16D72DBDB097623047C98989F88D14EAF02A7212BE16EC2D07981AAA99949DDF89ECD90333A77BC4E1988A82ABF7C7CAF3291 -Out = 019BE27AC6E4B1FB3F1602025A8DE3EFA7AD6E1D0C6975E8D2D519A997328154FE0738A00366205FDF8467B36D8970A92EF450C20F5BEC013BA4CF8091F571CB - -In = 9F2C18ADE9B380C784E170FB763E9AA205F64303067EB1BCEA93DF5DAC4BF5A2E00B78195F808DF24FC76E26CB7BE31DC35F0844CDED1567BBA29858CFFC97FB29010331B01D6A3FB3159CC1B973D255DA9843E34A0A4061CABDB9ED37F241BFABB3C20D32743F4026B59A4CCC385A2301F83C0B0A190B0F2D01ACB8F0D41111E10F2F4E149379275599A52DC089B35FDD5234B0CFB7B6D8AEBD563CA1FA653C5C021DFD6F5920E6F18BFAFDBECBF0AB00281333ED50B9A999549C1C8F8C63D7626C48322E9791D5FF72294049BDE91E73F8 -Out = B996713F0A3AB5F0198C127B5C3079DACE7D4D98A9433D9B790833B62395A3797B7924EB8B9F586903079A8413597E37448F3222B751DEBE8A5B83385864F7B8 - -In = AE159F3FA33619002AE6BCCE8CBBDD7D28E5ED9D61534595C4C9F43C402A9BB31F3B301CBFD4A43CE4C24CD5C9849CC6259ECA90E2A79E01FFBAC07BA0E147FA42676A1D668570E0396387B5BCD599E8E66AAED1B8A191C5A47547F61373021FA6DEADCB55363D233C24440F2C73DBB519F7C9FA5A8962EFD5F6252C0407F190DFEFAD707F3C7007D69FF36B8489A5B6B7C557E79DD4F50C06511F599F56C896B35C917B63BA35C6FF8092BAF7D1658E77FC95D8A6A43EEB4C01F33F03877F92774BE89C1114DD531C011E53A34DC248A2F0E6 -Out = FB71A3351EA2FD4C44E271EA793596B245C6F0634E79ED1EC72C6A4CC9DBC892A9498A7ACA0915AB20B0DAED223FAD794A6F3822C847CF52B3F217D0BC605B76 - -In = 3B8E97C5FFC2D6A40FA7DE7FCEFC90F3B12C940E7AB415321E29EE692DFAC799B009C99DCDDB708FCE5A178C5C35EE2B8617143EDC4C40B4D313661F49ABDD93CEA79D117518805496FE6ACF292C4C2A1F76B403A97D7C399DAF85B46AD84E16246C67D6836757BDE336C290D5D401E6C1386AB32797AF6BB251E9B2D8FE754C47482B72E0B394EAB76916126FD68EA7D65EB93D59F5B4C5AC40F7C3B37E7F3694F29424C24AF8C8F0EF59CD9DBF1D28E0E10F799A6F78CAD1D45B9DB3D7DEE4A7059ABE99182714983B9C9D44D7F5643596D4F3 -Out = DBD3650B1739E8DA775381B5521C5CFDD689FE81309B3A69A4B3BCDC62DD6C4568B84670E5E3B1B4E0E834600C36167E3447C5C1009E680C7932DB2BD91057A9 - -In = 3434EC31B10FAFDBFEEC0DD6BD94E80F7BA9DCA19EF075F7EB017512AF66D6A4BCF7D16BA0819A1892A6372F9B35BCC7CA8155EE19E8428BC22D214856ED5FA9374C3C09BDE169602CC219679F65A1566FC7316F4CC3B631A18FB4449FA6AFA16A3DB2BC4212EFF539C67CF184680826535589C7111D73BFFCE431B4C40492E763D9279560AAA38EB2DC14A212D723F994A1FE656FF4DD14551CE4E7C621B2AA5604A10001B2878A897A28A08095C325E10A26D2FB1A75BFD64C250309BB55A44F23BBAC0D5516A1C687D3B41EF2FBBF9CC56D4739 -Out = 55B84F2AC0B917467F20E9EC5F6CE98B3987C59A1ACAEFE3AD73D1C26D724CA0C4D8052CE82E3C704C7834499BEC67620D4B073BF3DA41AAD2DE69AFA4943E3B - -In = 7C7953D81C8D208FD1C97681D48F49DD003456DE60475B84070EF4847C333B74575B1FC8D2A186964485A3B8634FEAA3595AAA1A2F4595A7D6B6153563DEE31BBAC443C8A33EED6D5D956A980A68366C2527B550EE950250DFB691EACBD5D56AE14B970668BE174C89DF2FEA43AE52F13142639C884FD62A3683C0C3792F0F24AB1318BCB27E21F4737FAB62C77EA38BC8FD1CF41F7DAB64C13FEBE7152BF5BB7AB5A78F5346D43CC741CB6F72B7B8980F268B68BF62ABDFB1577A52438FE14B591498CC95F071228460C7C5D5CEB4A7BDE588E7F21C -Out = AD4231D8A6C04C1517D1091D399110019055D5C5EE1D3D75456DA17C5572C10BB8B808493C3A69EBD668AFFD15A9E92A692A3C7A394F929B1E7798E692979665 - -In = 7A6A4F4FDC59A1D223381AE5AF498D74B7252ECF59E389E49130C7EAEE626E7BD9897EFFD92017F4CCDE66B0440462CDEDFD352D8153E6A4C8D7A0812F701CC737B5178C2556F07111200EB627DBC299CAA792DFA58F35935299FA3A3519E9B03166DFFA159103FFA35E8577F7C0A86C6B46FE13DB8E2CDD9DCFBA85BDDDCCE0A7A8E155F81F712D8E9FE646153D3D22C811BD39F830433B2213DD46301941B59293FD0A33E2B63ADBD95239BC01315C46FDB678875B3C81E053A40F581CFBEC24A1404B1671A1B88A6D06120229518FB13A74CA0AC5AE -Out = 70CDAED98ECA25B7099C73201427DE23F51D7115160A105DED7A2FB6B20F2DEB31B6A2734CFFC2AA6189DAEA538291B34D0AAC7CA9C57CA7063A31EF202F38EC - -In = D9FAA14CEBE9B7DE551B6C0765409A33938562013B5E8E0E1E0A6418DF7399D0A6A771FB81C3CA9BD3BB8E2951B0BC792525A294EBD1083688806FE5E7F1E17FD4E3A41D00C89E8FCF4A363CAEDB1ACB558E3D562F1302B3D83BB886ED27B76033798131DAB05B4217381EAAA7BA15EC820BB5C13B516DD640EAEC5A27D05FDFCA0F35B3A5312146806B4C0275BCD0AAA3B2017F346975DB566F9B4D137F4EE10644C2A2DA66DEECA5342E236495C3C6280528BFD32E90AF4CD9BB908F34012B52B4BC56D48CC8A6B59BAB014988EABD12E1A0A1C2E170E7 -Out = 45186098139174A1D4D657A79B71E6E4FB3AE790A52FF0A1690D787FCB6FBA7025CF74E3CDBFAA5B2B6D1880699315FAC59FB18714C65D5EA66E6B1D47AE17C4 - -In = 2D8427433D0C61F2D96CFE80CF1E932265A191365C3B61AAA3D6DCC039F6BA2AD52A6A8CC30FC10F705E6B7705105977FA496C1C708A277A124304F1FC40911E7441D1B5E77B951AAD7B01FD5DB1B377D165B05BBF898042E39660CAF8B279FE5229D1A8DB86C0999ED65E53D01CCBC4B43173CCF992B3A14586F6BA42F5FE30AFA8AE40C5DF29966F9346DA5F8B35F16A1DE3AB6DE0F477D8D8660918060E88B9B9E9CA6A4207033B87A812DBF5544D39E4882010F82B6CE005F8E8FF6FE3C3806BC2B73C2B83AFB704345629304F9F86358712E9FAE3CA3E -Out = 7E804307383AFF5BCC80306043721A173E61461E401C1331ED95B8ADB1CFF5CD0943CB3BA8C9A7A02987DD9B6EA2912368284CF14A55566BF264CC244A353227 - -In = 5E19D97887FCAAC0387E22C6F803C34A3DACD2604172433F7A8A7A526CA4A2A1271ECFC5D5D7BE5AC0D85D921095350DFC65997D443C21C8094E0A3FEFD2961BCB94AED03291AE310CCDA75D8ACE4BC7D89E7D3E5D1650BDA5D668B8B50BFC8E608E184F4D3A9A2BADC4FF5F07E0C0BC8A9F2E0B2A26FD6D8C550008FAAAB75FD71AF2A424BEC9A7CD9D83FAD4C8E9319115656A8717D3B523A68FF8004258B9990ED362308461804BA3E3A7E92D8F2FFAE5C2FBA55BA5A3C27C0A2F71BD711D2FE1799C2ADB31B200035481E9EE5C4ADF2AB9C0FA50B23975CF -Out = 8B907F2B968634263C0CC229E917FDF0AD93D637299C10D8F76EFFEE6C6A6B8385803FABEDEB1694EACBC11D94FD00CD310C287C2C537BDE39B88A4A15735DF3 - -In = C8E976AB4638909387CE3B8D4E510C3230E5690E02C45093B1D297910ABC481E56EEA0F296F98379DFC9080AF69E73B2399D1C143BEE80AE1328162CE1BA7F6A8374679B20AACD380EB4E61382C99998704D62701AFA914F9A2705CDB065885F50D086C3EB5753700C387118BB142F3E6DA1E988DFB31AC75D7368931E45D1391A274B22F83CEB072F9BCABC0B216685BFD789F5023971024B1878A205442522F9EA7D8797A4102A3DF41703768251FD5E017C85D1200A464118AA35654E7CA39F3C375B8EF8CBE7534DBC64BC20BEFB417CF60EC92F63D9EE7397 -Out = 4739DB195476A74B06835BA91DD8DFDADE704A06557307E33019738083F367143C96ECF28523C1BE8CA272ADF7E0EEBB64EEF31FE4C5EF03CE7D46ED6FC86A71 - -In = 7145FA124B7429A1FC2231237A949BA7201BCC1822D3272DE005B682398196C25F7E5CC2F289FBF44415F699CB7FE6757791B1443410234AE061EDF623359E2B4E32C19BF88450432DD01CAA5EB16A1DC378F391CA5E3C4E5F356728BDDD4975DB7C890DA8BBC84CC73FF244394D0D48954978765E4A00B593F70F2CA082673A261ED88DBCEF1127728D8CD89BC2C597E9102CED6010F65FA75A14EBE467FA57CE3BD4948B6867D74A9DF5C0EC6F530CBF2EE61CE6F06BC8F2864DFF5583776B31DF8C7FFCB61428A56BF7BD37188B4A5123BBF338393AF46EDA85E6 -Out = 68B8AA5731F7D00D547D7E3690761046B54E91257984A46E2CF9BA2835ADB621CE3DDCF81A02A95308300F1E992E3BEDF832FC0433F0A64D5CE277E679933E47 - -In = 7FDFADCC9D29BAD23AE038C6C65CDA1AEF757221B8872ED3D75FF8DF7DA0627D266E224E812C39F7983E4558BFD0A1F2BEF3FEB56BA09120EF762917B9C093867948547AEE98600D10D87B20106878A8D22C64378BF634F7F75900C03986B077B0BF8B740A82447B61B99FEE5376C5EB6680EC9E3088F0BDD0C56883413D60C1357D3C811950E5890E7600103C916341B80C743C6A852B7B4FB60C3BA21F3BC15B8382437A68454779CF3CD7F9F90CCC8EF28D0B706535B1E4108EB5627BB45D719CB046839AEE311CA1ABDC8319E050D67972CB35A6B1601B25DBF487 -Out = 2CD87427875CC3480CD19F567B049B1181D7F46B85F3CDE505005452A0401A517E0E3D2A2157D789A6D63C8484386EFA9F9717498D35B20CA2A0FD2FDDDF7E15 - -In = 988638219FD3095421F826F56E4F09E356296B628C3CE6930C9F2E758FD1A80C8273F2F61E4DAAE65C4F110D3E7CA0965AC7D24E34C0DC4BA2D6FF0BF5BBE93B3585F354D7543CB542A1AA54674D375077F2D360A8F4D42F3DB131C3B7AB7306267BA107659864A90C8C909460A73621D1F5D9D3FD95BEB19B23DB1CB6C0D0FBA91D36891529B8BD8263CAA1BAB56A4AFFAED44962DF096D8D5B1EB845EF31188B3E10F1AF811A13F156BEB7A288AAE593EBD1471B624AA1A7C6ADF01E2200B3D72D88A3AED3100C88231E41EFC376906F0B580DC895F080FDA5741DB1CB -Out = 5E0A947E07586E1A7EB441B4F44211F3731595E273FBE30FD5478E762C08411DB9DDAA9F9B9D860F5768DF78FBEAF9EFEB9ECAEE9A9874FD38E9EBDE9DDF11E7 - -In = 5AAB62756D307A669D146ABA988D9074C5A159B3DE85151A819B117CA1FF6597F6156E80FDD28C9C3176835164D37DA7DA11D94E09ADD770B68A6E081CD22CA0C004BFE7CD283BF43A588DA91F509B27A6584C474A4A2F3EE0F1F56447379240A5AB1FB77FDCA49B305F07BA86B62756FB9EFB4FC225C86845F026EA542076B91A0BC2CDD136E122C659BE259D98E5841DF4C2F60330D4D8CDEE7BF1A0A244524EECC68FF2AEF5BF0069C9E87A11C6E519DE1A4062A10C83837388F7EF58598A3846F49D499682B683C4A062B421594FAFBC1383C943BA83BDEF515EFCF10D -Out = B8098CB26FCC5ACD64C492919EA1C7ECDC9B3DE4854D69E7947E05BD0BF6E84C240FA83ACEE02C829A959614107CE03DB8ACA40D38F9CC57B7F94C3C220DEEEB - -In = 47B8216AA0FBB5D67966F2E82C17C07AA2D6327E96FCD83E3DE7333689F3EE79994A1BF45082C4D725ED8D41205CB5BCDF5C341F77FACB1DA46A5B9B2CBC49EADF786BCD881F371A95FA17DF73F606519AEA0FF79D5A11427B98EE7F13A5C00637E2854134691059839121FEA9ABE2CD1BCBBBF27C74CAF3678E05BFB1C949897EA01F56FFA4DAFBE8644611685C617A3206C7A7036E4AC816799F693DAFE7F19F303CE4EBA09D21E03610201BFC665B72400A547A1E00FA9B7AD8D84F84B34AEF118515E74DEF11B9188BD1E1F97D9A12C30132EC2806339BDADACDA2FD8B78 -Out = 0F4C4ECFD9A8431D5AB9A245A77CD70974FB75F1824FE68583E9F25E73BA572588AD0C328D73BEBEDF1FC99D898B7D1C9EB9AB048896CD0446A3E932A97710AB - -In = 8CFF1F67FE53C098896D9136389BD8881816CCAB34862BB67A656E3D98896F3CE6FFD4DA73975809FCDF9666760D6E561C55238B205D8049C1CEDEEF374D1735DAA533147BFA960B2CCE4A4F254176BB4D1BD1E89654432B8DBE1A135C42115B394B024856A2A83DC85D6782BE4B444239567CCEC4B184D4548EAE3FF6A192F343292BA2E32A0F267F31CC26719EB85245D415FB897AC2DA433EE91A99424C9D7F1766A44171D1651001C38FC79294ACCC68CEB5665D36218454D3BA169AE058A831338C17743603F81EE173BFC0927464F9BD728DEE94C6AEAB7AAE6EE3A627E8 -Out = C90025BE7F02FA18134B63681B5A635A51C06EE37878C4833E0A853FA474AEFD06BEEBA4597ED8E59255EE4DEC81B34D6EF3DF617A885F50B79F6EF9E47B4003 - -In = EACD07971CFF9B9939903F8C1D8CBB5D4DB1B548A85D04E037514A583604E787F32992BF2111B97AC5E8A938233552731321522AB5E8583561260B7D13EBEEF785B23A41FD8576A6DA764A8ED6D822D4957A545D5244756C18AA80E1AAD4D1F9C20D259DEE1711E2CC8FD013169FB7CC4CE38B362F8E0936AE9198B7E838DCEA4F7A5B9429BB3F6BBCF2DC92565E3676C1C5E6EB3DD2A0F86AA23EDD3D0891F197447692794B3DFA269611AD97F72B795602B4FDB198F3FD3EB41B415064256E345E8D8C51C555DC8A21904A9B0F1AD0EFFAB7786AAC2DA3B196507E9F33CA356427 -Out = 5C21E22D8B2887134F03D05945D91282B6321F122E53640C046FF9B1692F1210CA46CD8471E95F3C74F7FEB1DA0DC8A421EEFFB3699351825F16BA621015EEEF - -In = 23AC4E9A42C6EF45C3336CE6DFC2FF7DE8884CD23DC912FEF0F7756C09D335C189F3AD3A23697ABDA851A81881A0C8CCAFC980AB2C702564C2BE15FE4C4B9F10DFB2248D0D0CB2E2887FD4598A1D4ACDA897944A2FFC580FF92719C95CF2AA42DC584674CB5A9BC5765B9D6DDF5789791D15F8DD925AA12BFFAFBCE60827B490BB7DF3DDA6F2A143C8BF96ABC903D83D59A791E2D62814A89B8080A28060568CF24A80AE61179FE84E0FFAD00388178CB6A617D37EFD54CC01970A4A41D1A8D3DDCE46EDBBA4AB7C90AD565398D376F431189CE8C1C33E132FEAE6A8CD17A61C630012 -Out = F1A7011447E8515E1502A3AE56F8BE61EB4200BC4D21C8E1875B73AB2A42DE4613D6404B17A740B60B57F742C92F45C07880498C44C989C15CF1CD37B3F26E77 - -In = 0172DF732282C9D488669C358E3492260CBE91C95CFBC1E3FEA6C4B0EC129B45F242ACE09F152FC6234E1BEE8AAB8CD56E8B486E1DCBA9C05407C2F95DA8D8F1C0AF78EE2ED82A3A79EC0CB0709396EE62AADB84F8A4EE8A7CCCA3C1EE84E302A09EA802204AFECF04097E67D0F8E8A9D2651126C0A598A37081E42D168B0AE8A71951C524259E4E2054E535B779679BDADE566FE55700858618E626B4A0FAF895BCCE9011504A49E05FD56127EAE3D1F8917AFB548ECADABDA1020111FEC9314C413498A360B08640549A22CB23C731ACE743252A8227A0D2689D4C6001606678DFB921 -Out = 02BE97BE60F581D73527490734CD5F8739DCB9A5089CC49C7619277CEB30D9A69B85C53EFC55C780A6494DD172B8BEB2B69F86DD4B7CBFA3E47F1720ED394383 - -In = 3875B9240CF3E0A8B59C658540F26A701CF188496E2C2174788B126FD29402D6A75453BA0635284D08835F40051A2A9683DC92AFB9383719191231170379BA6F4ADC816FECBB0F9C446B785BF520796841E58878B73C58D3EBB097CE4761FDEABE15DE2F319DFBAF1742CDEB389559C788131A6793E193856661376C81CE9568DA19AA6925B47FFD77A43C7A0E758C37D69254909FF0FBD415EF8EB937BCD49F91468B49974C07DC819ABD67395DB0E05874FF83DDDAB895344ABD0E7111B2DF9E58D76D85AD98106B36295826BE04D435615595605E4B4BB824B33C4AFEB5E7BB0D19F909 -Out = 38652A2D6674A539559F3ED0996542C23D48D8D108C2AF9C10DA45C9DBC11906CB4AEE8EB04C88789B763C66B743356336C8950303B950D72A8FCA05B9C67CD9 - -In = 747CC1A59FEFBA94A9C75BA866C30DC5C1CB0C0F8E9361D98484956DD5D1A40F6184AFBE3DAC9F76028D1CAECCFBF69199C6CE2B4C092A3F4D2A56FE5A33A00757F4D7DEE5DFB0524311A97AE0668A47971B95766E2F6DD48C3F57841F91F04A00AD5EA70F2D479A2620DC5CD78EAAB3A3B011719B7E78D19DDF70D9423798AF77517EBC55392FCD01FC600D8D466B9E7A7A85BF33F9CC5419E9BD874DDFD60981150DDAF8D7FEBAA4374F0872A5628D318000311E2F5655365AD4D407C20E5C04DF17A222E7DEEC79C5AB1116D8572F91CD06E1CCC7CED53736FC867FD49ECEBE6BF8082E8A -Out = BC091874BAF2195324C56EE8386E13AC3F49FDB329C2D5835848AF2A3653BCEA26EC8C370912CBCFB1C20D3EB9AB53C6160CDD5351836527C5719084A575EF64 - -In = 57AF971FCCAEC97435DC2EC9EF0429BCEDC6B647729EA168858A6E49AC1071E706F4A5A645CA14E8C7746D65511620682C906C8B86EC901F3DDED4167B3F00B06CBFAC6AEE3728051B3E5FF10B4F9ED8BD0B8DA94303C833755B3CA3AEDDF0B54BC8D6632138B5D25BAB03D17B3458A9D782108006F5BB7DE75B5C0BA854B423D8BB801E701E99DC4FEAAD59BC1C7112453B04D33EA3635639FB802C73C2B71D58A56BBD671B18FE34ED2E3DCA38827D63FDB1D4FB3285405004B2B3E26081A8FF08CD6D2B08F8E7B7E90A2AB1ED7A41B1D0128522C2F8BFF56A7FE67969422CE839A9D4608F03 -Out = D8025F57C003DDCC6ABDDCE2CCFFDB9C11BE984311A749A632D7EE4EB073C58F0074096C17CE0A46B37700581D9FF074143F34322D5460C4BD1E9EE6AD497F40 - -In = 04E16DEDC1227902BAAF332D3D08923601BDD64F573FAA1BB7201918CFE16B1E10151DAE875DA0C0D63C59C3DD050C4C6A874011B018421AFC4623AB0381831B2DA2A8BA42C96E4F70864AC44E106F94311051E74C77C1291BF5DB9539E69567BF6A11CF6932BBBAD33F8946BF5814C066D851633D1A513510039B349939BFD42B858C21827C8FF05F1D09B1B0765DC78A135B5CA4DFBA0801BCADDFA175623C8B647EACFB4444B85A44F73890607D06D507A4F8393658788669F6EF4DEB58D08C50CA0756D5E2F49D1A7AD73E0F0B3D3B5F090ACF622B1878C59133E4A848E05153592EA81C6FBF -Out = 99812EB8737BF609B3BF4B8ADE116403183DD7332DAB4F43BB4917DA0B62ABC5A4772D572BDDA22FD555AF55309D31FB93492ED3EF4455FDE4FFFE7BF8DF84AE - -In = 7C815C384EEE0F288ECE27CCED52A01603127B079C007378BC5D1E6C5E9E6D1C735723ACBBD5801AC49854B2B569D4472D33F40BBB8882956245C366DC3582D71696A97A4E19557E41E54DEE482A14229005F93AFD2C4A7D8614D10A97A9DFA07F7CD946FA45263063DDD29DB8F9E34DB60DAA32684F0072EA2A9426ECEBFA5239FB67F29C18CBAA2AF6ED4BF4283936823AC1790164FEC5457A9CBA7C767CA59392D94CAB7448F50EB34E9A93A80027471CE59736F099C886DEA1AB4CBA4D89F5FC7AE2F21CCD27F611ECA4626B2D08DC22382E92C1EFB2F6AFDC8FDC3D2172604F5035C46B8197D3 -Out = 6B242888A6E956F10A8BE75E09287D59CC25155B0AA8D8BA02E095D0AFAA29104CB2051AA4B3430B724D500AD0317208C3BA9FB1265BF19A974E90F4BF0CE006 - -In = E29D505158DBDD937D9E3D2145658EE6F5992A2FC790F4F608D9CDB44A091D5B94B88E81FAC4FDF5C49442F13B911C55886469629551189EAFF62488F1A479B7DB11A1560E198DDCCCCF50159093425FF7F1CB8D1D1246D0978764087D6BAC257026B090EFAE8CEC5F22B6F21C59ACE1AC7386F5B8837CA6A12B6FBF5534DD0560EF05CA78104D3B943DDB220FEAEC89AA5E692A00F822A2AB9A2FE60350D75E7BE16FF2526DC643872502D01F42F188ABED0A6E9A6F5FD0D1CE7D5755C9FFA66B0AF0B20BD806F08E06156690D81AC811778CA3DAC2C249B96002017FCE93E507E3B953ACF99964B847 -Out = FF77EF8DE1483F8A498E3554083BB69F7567FCED495E6BF0C9902CDCB5247FAC6A4B50D1CF9CEE89C400ED3E4E6FEBB642F1AC3BBD018ECC04CB1A43A1331ECC - -In = D85588696F576E65ECA0155F395F0CFACD83F36A99111ED5768DF2D116D2121E32357BA4F54EDE927F189F297D3A97FAD4E9A0F5B41D8D89DD7FE20156799C2B7B6BF9C957BA0D6763F5C3BC5129747BBB53652B49290CFF1C87E2CDF2C4B95D8AAEE09BC8FBFA6883E62D237885810491BFC101F1D8C636E3D0EDE838AD05C207A3DF4FAD76452979EB99F29AFAECEDD1C63B8D36CF378454A1BB67A741C77AC6B6B3F95F4F02B64DABC15438613EA49750DF42EE90101F115AA9ABB9FF64324DDE9DABBB01054E1BD6B4BCDC7930A44C2300D87CA78C06924D0323AD7887E46C90E8C4D100ACD9EED21E -Out = 83E0BEDD263922F016CF539F9E7B43ACAFDDF35C8CE730434EE3E92ACD264006031073A705F5585BFB66E53EA6A733901AE40634B6F4D86FB554CE0EBC5CD807 - -In = 3A12F8508B40C32C74492B66323375DCFE49184C78F73179F3314B79E63376B8AC683F5A51F1534BD729B02B04D002F55CBD8E8FC9B5EC1EA6BBE6A0D0E7431518E6BA45D124035F9D3DCE0A8BB7BF1430A9F657E0B4EA9F20EB20C786A58181A1E20A96F1628F8728A13BDF7A4B4B32FC8AA7054CC4881AE7FA19AFA65C6C3EE1B3ADE3192AF42054A8A911B8EC1826865D46D93F1E7C5E2B7813C92A506E53886F3D4701BB93D2A681AD109C845904BB861AF8AF0646B6E399B38B614051D34F6842563A0F37EC00CB3D865FC5D746C4987DE2A65071100883A2A9C7A2BFE1E2DD603D9EA24DC7C5FD06BE -Out = E063490AC5C915BAF98C37660EB17A85798D728FB57CB0ACFAEDE8AFE847C9025D8BF55B6EEA096A6F0B443B38D0BC77DD0BCB8228ED2681BB03A013D15CEB79 - -In = 1861EDCE46FA5AD17E1FF1DEAE084DEC580F97D0A67885DFE834B9DFAC1AE076742CE9E267512CA51F6DF5A455AF0C5FD6ABF94ACEA103A3370C354485A7846FB84F3AC7C2904B5B2FBF227002CE512133BB7E1C4E50057BFD1E44DB33C7CDB969A99E284B184F50A14B068A1FC5009D9B298DBE92239572A7627AAC02ABE8F3E3B473417F36D4D2505D16B7577F4526C9D94A270A2DFE450D06DA8F6FA956879A0A55CFE99E742EA555EA477BA3E9B44CCD508C375423611AF92E55345DC215779B2D5119EBA49C71D49B9FE3F1569FA24E5CA3E332D042422A8B8158D3EC66A80012976F31FFDF305F0C9C5E -Out = 2F2FBA371016CD20ADC35C032B61100C298FBAF81506E83CC6E9BCC61244838AD83465658A6436BD488C55D27B82BA3FFC5223BB97A03AE33E05CA750FDF56E2 - -In = 08D0FFDE3A6E4EF65608EA672E4830C12943D7187CCFF08F4941CFC13E545F3B9C7AD5EEBBE2B01642B486CAF855C2C73F58C1E4E3391DA8E2D63D96E15FD84953AE5C231911B00AD6050CD7AAFDAAC9B0F663AE6AAB45519D0F5391A541707D479034E73A6AD805AE3598096AF078F1393301493D663DD71F83869CA27BA508B7E91E81E128C1716DC3ACFE3084B2201E04CF8006617EECF1B640474A5D45CFDE9F4D3EF92D6D055B909892194D8A8218DB6D8203A84261D200D71473D7488F3427416B6896C137D455F231071CACBC86E0415AB88AEC841D96B7B8AF41E05BB461A40645BF176601F1E760DE5F -Out = 783AF05873F418BAF09AA3479FFBA6CC9949F90D7CB9DF1355B46B020712EDD40477F7B2980DEFC4474B2D3C24BF92ECB5DA64FBDF167EDD9D9D48792D2B4DF8 - -In = D782ABB72A5BE3392757BE02D3E45BE6E2099D6F000D042C8A543F50ED6EBC055A7F133B0DD8E9BC348536EDCAAE2E12EC18E8837DF7A1B3C87EC46D50C241DEE820FD586197552DC20BEEA50F445A07A38F1768A39E2B2FF05DDDEDF751F1DEF612D2E4D810DAA3A0CC904516F9A43AF660315385178A529E51F8AAE141808C8BC5D7B60CAC26BB984AC1890D0436EF780426C547E94A7B08F01ACBFC4A3825EAE04F520A9016F2FB8BF5165ED12736FC71E36A49A73614739EAA3EC834069B1B40F1350C2B3AB885C02C640B9F7686ED5F99527E41CFCD796FE4C256C9173186C226169FF257954EBDA81C0E5F99 -Out = B53D11E8514950F60345F266290DFD57B8550C011F2BBC1C7CD718E74CAA98473E98CF794975661C7D46D6DF10E14F0AF2E0EFBD480A350AC60E0881EA7090FD - -In = 5FCE8109A358570E40983E1184E541833BB9091E280F258CFB144387B05D190E431CB19BAA67273BA0C58ABE91308E1844DCD0B3678BAA42F335F2FA05267A0240B3C718A5942B3B3E3BFA98A55C25A1466E8D7A603722CB2BBF03AFA54CD769A99F310735EE5A05DAE2C22D397BD95635F58C48A67F90E1B73AAFCD3F82117F0166657838691005B18DA6F341D6E90FC1CDB352B30FAE45D348294E501B63252DE14740F2B85AE5299DDEC3172DE8B6D0BA219A20A23BB5E10FF434D39DB3F583305E9F5C039D98569E377B75A70AB837D1DF269B8A4B566F40BB91B577455FD3C356C914FA06B9A7CE24C7317A172D -Out = 0E21302B185191492D2625F0FC4A3380ECD75D8EA945E35FD6E57EB7142DE24990EEE2B6711392F8856874DE50E6D2FDF1D23A228877298C668251FD0F06B709 - -In = 6172F1971A6E1E4E6170AFBAD95D5FEC99BF69B24B674BC17DD78011615E502DE6F56B86B1A71D3F4348087218AC7B7D09302993BE272E4A591968AEF18A1262D665610D1070EE91CC8DA36E1F841A69A7A682C580E836941D21D909A3AFC1F0B963E1CA5AB193E124A1A53DF1C587470E5881FB54DAE1B0D840F0C8F9D1B04C645BA1041C7D8DBF22030A623AA15638B3D99A2C400FF76F3252079AF88D2B37F35EE66C1AD7801A28D3D388AC450B97D5F0F79E4541755356B3B1A5696B023F39AB7AB5F28DF4202936BC97393B93BC915CB159EA1BD7A0A414CB4B7A1AC3AF68F50D79F0C9C7314E750F7D02FAA58BFA -Out = 1A77E749C8249D06F08943F5CDFEB5D65C804F1052B036CCD7A6F16120315AF7B20C6BE56CA65861A2568F7E726420E909FAF47E4ED96A3C299AFF94EDFBF6EB - -In = 5668ECD99DFBE215C4118398AC9C9EAF1A1433FAB4CCDD3968064752B625EA944731F75D48A27D047D67547F14DD0FFAA55FA5E29F7AF0D161D85EAFC4F2029B717C918EAB9D304543290BDBA7158B68020C0BA4E079BC95B5BC0FC044A992B94B4CCD3BD66D0EABB5DBBAB904D62E00752C4E3B0091D773BCF4C14B4377DA3EFFF824B1CB2FA01B32D1E46C909E626ED2DAE920F4C7DBEB635BC754FACBD8D49BEBA3F23C1C41CCBFCD0EE0C114E69737F5597C0BF1D859F0C767E18002AE8E39C26261FFDE2920D3D0BAF0E906138696CFE5B7E32B600F45DF3AAA39932F3A7DF95B60FA8712A2271FCAF3911CE7B511B1 -Out = CDF5CC029A5946BB96A524D865C6BAB024A2B598A9A657EF631FA582ED9BEBF56C18D955528A3DD5BC0D2466F7EE0EF8AF1C814E3858E5DA3A2BA951BB2D79A0 - -In = 03D625488354DF30E3F875A68EDFCF340E8366A8E1AB67F9D5C5486A96829DFAC0578289082B2A62117E1CF418B43B90E0ADC881FC6AE8105C888E9ECD21AEA1C9AE1A4038DFD17378FED71D02AE492087D7CDCD98F746855227967CB1AB4714261EE3BEAD3F4DB118329D3EBEF4BC48A875C19BA763966DA0EBEA800E01B2F50B00E9DD4CACA6DCB314D00184EF71EA2391D760C950710DB4A70F9212FFC54861F9DC752CE18867B8AD0C48DF8466EF7231E7AC567F0EB55099E622EBB86CB237520190A61C66AD34F1F4E289CB3282AE3EAAC6152ED24D2C92BAE5A7658252A53C49B7B02DFE54FDB2E90074B6CF310AC661 -Out = 2A4B61FEAAC1BC466DD77EBE6E800F87950B28532F71BE5E4D56DE28F93C1F7E61C793745A91B8CCDC29914989730B7DF933E6C7F1B1A08638953F966F092560 - -In = 2EDC282FFB90B97118DD03AAA03B145F363905E3CBD2D50ECD692B37BF000185C651D3E9726C690D3773EC1E48510E42B17742B0B0377E7DE6B8F55E00A8A4DB4740CEE6DB0830529DD19617501DC1E9359AA3BCF147E0A76B3AB70C4984C13E339E6806BB35E683AF8527093670859F3D8A0FC7D493BCBA6BB12B5F65E71E705CA5D6C948D66ED3D730B26DB395B3447737C26FAD089AA0AD0E306CB28BF0ACF106F89AF3745F0EC72D534968CCA543CD2CA50C94B1456743254E358C1317C07A07BF2B0ECA438A709367FAFC89A57239028FC5FECFD53B8EF958EF10EE0608B7F5CB9923AD97058EC067700CC746C127A61EE3 -Out = A40028E17CD5DA2DB800437A58861565E0A55CD3DC017FE48C7D3F2D4706D7EC742A21170CB86B32B5B9A1496C5C5DDE4E283915BFCDC883F08039679E29ED43 - -In = 90B28A6AA1FE533915BCB8E81ED6CACDC10962B7FF82474F845EEB86977600CF70B07BA8E3796141EE340E3FCE842A38A50AFBE90301A3BDCC591F2E7D9DE53E495525560B908C892439990A2CA2679C5539FFDF636777AD9C1CDEF809CDA9E8DCDB451ABB9E9C17EFA4379ABD24B182BD981CAFC792640A183B61694301D04C5B3EAAD694A6BD4CC06EF5DA8FA23B4FA2A64559C5A68397930079D250C51BCF00E2B16A6C49171433B0AADFD80231276560B80458DD77089B7A1BBCC9E7E4B9F881EACD6C92C4318348A13F4914EB27115A1CFC5D16D7FD94954C3532EFACA2CAB025103B2D02C6FD71DA3A77F417D7932685888A -Out = 2A1F1C7FAFBE676D2A7BC67BD80C9387F493643E2395852AF8A6846A5DDC191CB17FCAA17BB82266FEA390B3E45DED4A15408A29DF5AE390A1BC945D5D97C1C7 - -In = 2969447D175490F2AA9BB055014DBEF2E6854C95F8D60950BFE8C0BE8DE254C26B2D31B9E4DE9C68C9ADF49E4EE9B1C2850967F29F5D08738483B417BB96B2A56F0C8ACA632B552059C59AAC3F61F7B45C966B75F1D9931FF4E596406378CEE91AAA726A3A84C33F37E9CDBE626B5745A0B06064A8A8D56E53AAF102D23DD9DF0A3FDF7A638509A6761A33FA42FA8DDBD8E16159C93008B53765019C3F0E9F10B144CE2AC57F5D7297F9C9949E4FF68B70D339F87501CE8550B772F32C6DA8AD2CE2100A895D8B08FA1EEAD7C376B407709703C510B50F87E73E43F8E7348F87C3832A547EF2BBE5799ABEDCF5E1F372EA809233F006 -Out = 80C5090FDDA7FB8B550602FBB156D650958E0EE131E21C09FCCB57FAA9A9C868C5947E409BC5CFA89C8616619E625C7D1DAD8686FF59C2CD1D9940E336472145 - -In = 721645633A44A2C78B19024EAECF58575AB23C27190833C26875DC0F0D50B46AEA9C343D82EA7D5B3E50EC700545C615DAEAEA64726A0F05607576DCD396D812B03FB6551C641087856D050B10E6A4D5577B82A98AFB89CEE8594C9DC19E79FEFF0382FCFD127F1B803A4B9946F4AC9A4378E1E6E041B1389A53E3450CD32D9D2941B0CBABDB50DA8EA2513145164C3AB6BCBD251C448D2D4B087AC57A59C2285D564F16DA4ED5E607ED979592146FFB0EF3F3DB308FB342DF5EB5924A48256FC763141A278814C82D6D6348577545870AE3A83C7230AC02A1540FE1798F7EF09E335A865A2AE0949B21E4F748FB8A51F44750E213A8FB -Out = A779BC3D4F6315BEFDA9CBBBDBA4C9E24D810CB46074D81A6E2D66947A30F62C4D3EB92AFC6D9BFBF42DF3D8528982FCF7AECA66740D0E753040A2C6F71AC1DB - -In = 6B860D39725A14B498BB714574B4D37CA787404768F64C648B1751B353AC92BAC2C3A28EA909FDF0423336401A02E63EC24325300D823B6864BB701F9D7C7A1F8EC9D0AE3584AA6DD62EA1997CD831B4BABD9A4DA50932D4EFDA745C61E4130890E156AEE6113716DAF95764222A91187DB2EFFEA49D5D0596102D619BD26A616BBFDA8335505FBB0D90B4C180D1A2335B91538E1668F9F9642790B4E55F9CAB0FE2BDD2935D001EE6419ABAB5457880D0DBFF20ED8758F4C20FE759EFB33141CF0E892587FE8187E5FBC57786B7E8B089612C936DFC03D27EFBBE7C8673F1606BD51D5FF386F4A7AB68EDF59F385EB1291F117BFE717399 -Out = 46D64790833ABF3E17BB4B8CCDB4F0A2DCD23FDFA3135744306F4916A658CC5B0BB60DD65DD2287287CA645C0B5904A7227ED1B40730A6F335BEC41706769E9D - -In = 6A01830AF3889A25183244DECB508BD01253D5B508AB490D3124AFBF42626B2E70894E9B562B288D0A2450CFACF14A0DDAE5C04716E5A0082C33981F6037D23D5E045EE1EF2283FB8B6378A914C5D9441627A722C282FF452E25A7EA608D69CEE4393A0725D17963D0342684F255496D8A18C2961145315130549311FC07F0312FB78E6077334F87EAA873BEE8AA95698996EB21375EB2B4EF53C14401207DEB4568398E5DD9A7CF97E8C9663E23334B46912F8344C19EFCF8C2BA6F04325F1A27E062B62A58D0766FC6DB4D2C6A1928604B0175D872D16B7908EBC041761187CC785526C2A3873FEAC3A642BB39F5351550AF9770C328AF7B -Out = 29EBB2B1BF14463500B983F8C9FE9EAD506514E9AF11202A9E0930B225EBC5258A09324010C52FF35E902647D9701293A8F8A007ABC3D6A7BE629C5078A42BED - -In = B3C5E74B69933C2533106C563B4CA20238F2B6E675E8681E34A389894785BDADE59652D4A73D80A5C85BD454FD1E9FFDAD1C3815F5038E9EF432AAC5C3C4FE840CC370CF86580A6011778BBEDAF511A51B56D1A2EB68394AA299E26DA9ADA6A2F39B9FAFF7FBA457689B9C1A577B2A1E505FDF75C7A0A64B1DF81B3A356001BF0DF4E02A1FC59F651C9D585EC6224BB279C6BEBA2966E8882D68376081B987468E7AED1EF90EBD090AE825795CDCA1B4F09A979C8DFC21A48D8A53CDBB26C4DB547FC06EFE2F9850EDD2685A4661CB4911F165D4B63EF25B87D0A96D3DFF6AB0758999AAD214D07BD4F133A6734FDE445FE474711B69A98F7E2B -Out = 8DB46A5D23103103746C2FE2480CEEC56FD9796AD357F5BC45BF0BC2D2E8B95EA0C286090AB858183C2A051B80FCA8776670FA3DA8722329848F057C6EAD4991 - -In = 83AF34279CCB5430FEBEC07A81950D30F4B66F484826AFEE7456F0071A51E1BBC55570B5CC7EC6F9309C17BF5BEFDD7C6BA6E968CF218A2B34BD5CF927AB846E38A40BBD81759E9E33381016A755F699DF35D660007B5EADF292FEEFB735207EBF70B5BD17834F7BFA0E16CB219AD4AF524AB1EA37334AA66435E5D397FC0A065C411EBBCE32C240B90476D307CE802EC82C1C49BC1BEC48C0675EC2A6C6F3ED3E5B741D13437095707C565E10D8A20B8C20468FF9514FCF31B4249CD82DCEE58C0A2AF538B291A87E3390D737191A07484A5D3F3FB8C8F15CE056E5E5F8FEBE5E1FB59D6740980AA06CA8A0C20F5712B4CDE5D032E92AB89F0AE1 -Out = BC933D42AD3267F608AB201D2813E54250499D87ECEEF837863F59D8ACE4ED6A3239C4C7CD7E172F3CF3CDED5D84950E066E2F549A767BA421CAD4A223313C1D - -In = A7ED84749CCC56BB1DFBA57119D279D412B8A986886D810F067AF349E8749E9EA746A60B03742636C464FC1EE233ACC52C1983914692B64309EDFDF29F1AB912EC3E8DA074D3F1D231511F5756F0B6EEAD3E89A6A88FE330A10FACE267BFFBFC3E3090C7FD9A850561F363AD75EA881E7244F80FF55802D5EF7A1A4E7B89FCFA80F16DF54D1B056EE637E6964B9E0FFD15B6196BDD7DB270C56B47251485348E49813B4EB9ED122A01B3EA45AD5E1A929DF61D5C0F3E77E1FDC356B63883A60E9CBB9FC3E00C2F32DBD469659883F690C6772E335F617BC33F161D6F6984252EE12E62B6000AC5231E0C9BC65BE223D8DFD94C5004A101AF9FD6C0FB -Out = D84DDA22FBE020F57EFBC8C612B2F781EAA81E4C9B0F013BFC1B3C926A5BA77828F8C6684A25B2C567DAD1B705E7BB417F5EAE6D8BD2BFA6ACBC7284F3C19E81 - -In = A6FE30DCFCDA1A329E82AB50E32B5F50EB25C873C5D2305860A835AECEE6264AA36A47429922C4B8B3AFD00DA16035830EDB897831C4E7B00F2C23FC0B15FDC30D85FB70C30C431C638E1A25B51CAF1D7E8B050B7F89BFB30F59F0F20FECFF3D639ABC4255B3868FC45DD81E47EB12AB40F2AAC735DF5D1DC1AD997CEFC4D836B854CEE9AC02900036F3867FE0D84AFFF37BDE3308C2206C62C4743375094108877C73B87B2546FE05EA137BEDFC06A2796274099A0D554DA8F7D7223A48CBF31B7DECAA1EBC8B145763E3673168C1B1B715C1CD99ECD3DDB238B06049885ECAD9347C2436DFF32C771F34A38587A44A82C5D3D137A03CAA27E66C8FF6 -Out = C4966858DB87DFC7DAE95CB51A8B19DD481F75B3FF554B18458C0F25A285F6135D73FF6F1B498B957E8481F16612D8B52E187BDE76B3A8D1A6324A3899F056D8 - -In = 83167FF53704C3AA19E9FB3303539759C46DD4091A52DDAE9AD86408B69335989E61414BC20AB4D01220E35241EFF5C9522B079FBA597674C8D716FE441E566110B6211531CECCF8FD06BC8E511D00785E57788ED9A1C5C73524F01830D2E1148C92D0EDC97113E3B7B5CD3049627ABDB8B39DD4D6890E0EE91993F92B03354A88F52251C546E64434D9C3D74544F23FB93E5A2D2F1FB15545B4E1367C97335B0291944C8B730AD3D4789273FA44FB98D78A36C3C3764ABEEAC7C569C1E43A352E5B770C3504F87090DEE075A1C4C85C0C39CF421BDCC615F9EFF6CB4FE6468004AECE5F30E1ECC6DB22AD9939BB2B0CCC96521DFBF4AE008B5B46BC006E -Out = DEF5B398B53E2B884AAA19D86186EC7B386974386B24F5C993417C1B3377449D0EE19D00AB789E2D63A56B01101E44692815644147D1C2D66A9A68579BEB2B50 - -In = 3A3A819C48EFDE2AD914FBF00E18AB6BC4F14513AB27D0C178A188B61431E7F5623CB66B23346775D386B50E982C493ADBBFC54B9A3CD383382336A1A0B2150A15358F336D03AE18F666C7573D55C4FD181C29E6CCFDE63EA35F0ADF5885CFC0A3D84A2B2E4DD24496DB789E663170CEF74798AA1BBCD4574EA0BBA40489D764B2F83AADC66B148B4A0CD95246C127D5871C4F11418690A5DDF01246A0C80A43C70088B6183639DCFDA4125BD113A8F49EE23ED306FAAC576C3FB0C1E256671D817FC2534A52F5B439F72E424DE376F4C565CCA82307DD9EF76DA5B7C4EB7E085172E328807C02D011FFBF33785378D79DC266F6A5BE6BB0E4A92ECEEBAEB1 -Out = 59D674C09E78B40FADD298EE83FB2CB4468CA96AFAA75CE3F4B451C0D353C28A632A0DE753800D49FDBD6EA190025C5340036910BDBACC91C2D988B6FB2F8789 - -In = 724627916C50338643E6996F07877EAFD96BDF01DA7E991D4155B9BE1295EA7D21C9391F4C4A41C75F77E5D27389253393725F1427F57914B273AB862B9E31DABCE506E558720520D33352D119F699E784F9E548FF91BC35CA147042128709820D69A8287EA3257857615EB0321270E94B84F446942765CE882B191FAEE7E1C87E0F0BD4E0CD8A927703524B559B769CA4ECE1F6DBF313FDCF67C572EC4185C1A88E86EC11B6454B371980020F19633B6B95BD280E4FBCB0161E1A82470320CEC6ECFA25AC73D09F1536F286D3F9DACAFB2CD1D0CE72D64D197F5C7520B3CCB2FD74EB72664BA93853EF41EABF52F015DD591500D018DD162815CC993595B195 -Out = 7A3E81CDEA3E783B0D2E77373D7E3AD3E069DF3C9F16EA87E41CD7178EBA02D49AA344C562EA9DB6FB20645F5F3DB9B62EC1F18ADFB5C10C77C1EBACEECC5E25 - -In = 3139840B8AD4BCD39092916FD9D01798FF5AA1E48F34702C72DFE74B12E98A114E318CDD2D47A9C320FFF908A8DBC2A5B1D87267C8E983829861A567558B37B292D4575E200DE9F1DE45755FAFF9EFAE34964E4336C259F1E66599A7C904EC02539F1A8EAB8706E0B4F48F72FEC2794909EE4A7B092D6061C74481C9E21B9332DC7C6E482D7F9CC3210B38A6F88F7918C2D8C55E64A428CE2B68FD07AB572A8B0A2388664F99489F04EB54DF1376271810E0E7BCE396F52807710E0DEA94EB49F4B367271260C3456B9818FC7A72234E6BF2205FF6A36546205015EBD7D8C2527AA430F58E0E8AC97A7B6B793CD403D517D66295F37A34D0B7D2FA7BC345AC04CA1E266480DEEC39F5C88641C9DC0BD1358158FDECDD96685BBBB5C1FE5EA89D2CB4A9D5D12BB8C893281FF38E87D6B4841F0650092D447E013F20EA934E18 -Out = B26C758C740DA514E7BE7966C2E371F96C263796688A771A955005D907AF23D19C47FB0FF920CA3DEF21E13B4C827E4AD586DBC3D28F3576DBC6694F48E8BC37 - -In = 023D91AC532601C7CA3942D62827566D9268BB4276FCAA1AE927693A6961652676DBA09219A01B3D5ADFA12547A946E78F3C5C62DD880B02D2EEEB4B96636529C6B01120B23EFC49CCFB36B8497CD19767B53710A636683BC5E0E5C9534CFC004691E87D1BEE39B86B953572927BD668620EAB87836D9F3F8F28ACE41150776C0BC6657178EBF297FE1F7214EDD9F215FFB491B681B06AC2032D35E6FDF832A8B06056DA70D77F1E9B4D26AE712D8523C86F79250718405F91B0A87C725F2D3F52088965F887D8CF87206DFDE422386E58EDDA34DDE2783B3049B86917B4628027A05D4D1F429D2B49C4B1C898DDDCB82F343E145596DE11A54182F39F4718ECAE8F506BD9739F5CD5D5686D7FEFC834514CD1B2C91C33B381B45E2E5335D7A8720A8F17AFC8C2CB2BD88B14AA2DCA099B00AA575D0A0CCF099CDEC4870FB710D2680E60C48BFC291FF0CEF2EEBF9B36902E9FBA8C889BF6B4B9F5CE53A19B0D9399CD19D61BD08C0C2EC25E099959848E6A550CA7137B63F43138D7B651 -Out = 919998132C03BB57E2748C5715C4D3CCD72250633983A61174E5A9B53BFD3ED7FA7BA8698BDF766B31B29E387B1E44E1C10402C3A9F4FCE845865803F805CB18 - -In = 20FF454369A5D05B81A78F3DB05819FEA9B08C2384F75CB0AB6AA115DD690DA3131874A1CA8F708AD1519EA952C1E249CB540D196392C79E87755424FEE7C890808C562722359EEA52E8A12FBBB969DD7961D2BA52037493755A5FA04F0D50A1AA26C9B44148C0D3B94D1C4A59A31ACA15AE8BD44ACB7833D8E91C4B86FA3135A423387B8151B4133ED23F6D7187B50EC2204AD901AD74D396E44274E0ECAFAAE17B3B9085E22260B35CA53B15CC52ABBA758AF6798FBD04ECEECED648F3AF4FDB3DED7557A9A5CFB7382612A8A8F3F45947D1A29CE29072928EC193CA25D51071BD5E1984ECF402F306EA762F0F25282F5296D997658BE3F983696FFA6D095C6369B4DAF79E9A5D3136229128F8EB63C12B9E9FA78AFF7A3E9E19A62022493CD136DEFBB5BB7BA1B938F367FD2F63EB5CA76C0B0FF21B9E36C3F07230CF3C3074E5DA587040A76975D7E39F4494ACE5486FCBF380AB7558C4FE89656335B82E4DB8659509EAB46A19613126E594042732DD4C411F41AA8CDEAC71C0FB40A94E6DA558C05E77B6182806F26D9AFDF3DA00C69419222C8186A6EFAD600B410E6CE2F2A797E49DC1F135319801FA6F396B06F975E2A190A023E474B618E7 -Out = F0EECEC5514F8001BD7AF333B78AE40E0D20944AAA2710EB3524236ABE3EAF3C999DB788869647B5737B60FD4BE4753722C2CA6E905E030EFD04749BA46251A5 - -In = 4FBDC596508D24A2A0010E140980B809FB9C6D55EC75125891DD985D37665BD80F9BEB6A50207588ABF3CEEE8C77CD8A5AD48A9E0AA074ED388738362496D2FB2C87543BB3349EA64997CE3E7B424EA92D122F57DBB0855A803058437FE08AFB0C8B5E7179B9044BBF4D81A7163B3139E30888B536B0F957EFF99A7162F4CA5AA756A4A982DFADBF31EF255083C4B5C6C1B99A107D7D3AFFFDB89147C2CC4C9A2643F478E5E2D393AEA37B4C7CB4B5E97DADCF16B6B50AAE0F3B549ECE47746DB6CE6F67DD4406CD4E75595D5103D13F9DFA79372924D328F8DD1FCBEB5A8E2E8BF4C76DE08E3FC46AA021F989C49329C7ACAC5A688556D7BCBCB2A5D4BE69D3284E9C40EC4838EE8592120CE20A0B635ECADAA84FD5690509F54F77E35A417C584648BC9839B974E07BFAB0038E90295D0B13902530A830D1C2BDD53F1F9C9FAED43CA4EED0A8DD761BC7EDBDDA28A287C60CD42AF5F9C758E5C7250231C09A582563689AFC65E2B79A7A2B68200667752E9101746F03184E2399E4ED8835CB8E9AE90E296AF220AE234259FE0BD0BCC60F7A4A5FF3F70C5ED4DE9C8C519A10E962F673C82C5E9351786A8A3BFD570031857BD4C87F4FCA31ED4D50E14F2107DA02CB5058700B74EA241A8B41D78461658F1B2B90BFD84A4C2C9D6543861AB3C56451757DCFB9BA60333488DBDD02D601B41AAE317CA7474EB6E6DD -Out = E57A285664BF66D2D2C7F8AAB8B75224A793C799D16A4774BC0C8693976F33E310979C84FDC302822542581BAC488F68CA0987E7147A782B036DD211DC798408 - -In = D1890B4704E169C28E44DDF62A1091450404910539FC2DAEB26E8ACF4533B024E5215C2D02820DD8FB2CFC1743955CBACFF0F8F35DFBB5E3F942F36247F68211D518F3F601AAE12A1CDC000BAB43D4C973F287E80741DD1FCF6C34F2E6B4B6C313D01C4FF3CBF9166F26946F18EF2D58271BA9233F09A6B77BFD4F48B36EB3D73D1133C4F842A7DC3907F680B0B773242C11E3DD973A44327EA7CEA9C0F8E07D682B6651E506B587559FE01ED721000BAF570A16FBDD9EA29FA3DEF4BE912058321A8B720C5C102E48A6E7ED6F8838D400DD57D06EEDBCD15323F86D855C94B21E41B14EC9E1BBC8019211FD88138C91F9ABBD9BB3914D26C1DDC21673D2D51263B39D66E741D924CF2B192C5D2C1A140126A3D64A2C77BE6C2C6EBE8599978AE90BD36CBB9AF64D078910C4094AB3BF399C34F2AB8EF843E9FE1BF88BF443BA21E4377E5F49C07FD9653B526E14562237F02D11B904BCA6AC31AE721A43E3C4910A24AF6F4D80C031C109FC0FE49F15274BCA92BDA04C3B4196C192F6CE489C63A806ACFC895AB52CAD657C1783B528E12D0ED856E1F8FC91F2AAFDFA0A92498D68530772EE73B359FCF1418D1096C46B34DCF90E5B468BBB2970BECBD70089CFB039D64CC50FFF5EEF26384D34F24515A6558B06A1FDD88F1050C5BD78CC6ED83D4C2B0E882AEBCF84AFB0430D0BF09F2FB42B8B4589158093A7709AAE75A790910E211EE1333FFB6FD80778DA3BF73858978E9DD647978841B18001DBAAEA43CA0C0A03DBB9BCF30CE76A6F4B2CF2A9B6531B3E4051E7E05090CD421BC66C4731E7122AD129FC42DEDC83BB460E3F889992FBD3CA072686E56B72C720FBC98D723EF7F247286F77CCDDC728738E941B1A74D4F16671C21FDD5643A115DDBCB88EE7EC67EA66FD2BCE718DF6E085D4B5FC71A72696636A8F7B3A68AFA51A896771FAAA7F1F827430AC5E8089DBC0D4175E1B22A057BC5F1724EADC1A41E78FA3ACAA8B97E5F2E19EF9D59AE12B04E7F0E8A621E098A66910E2A5ED2102B824CD3EA044A854F1CD0B33E61E7F737414B2953549F25DD34D19AA1981DE7CD5649FF6C6364A4F25312EF62395A747AB88AAD722C05AEC40DEEA8EEE5E779EF458A68840BC6BD5D29AD40F98B3AE010B6213372ABB7BB8B8 -Out = 53BCB0FD89D9CF4A3738A01154D2B280F03B1D68EF7B512F6C657A0264488CA1093D70F88C08DFE60CD418E938D74FE18EB3D525CD0492C8BF85FD2B2709516A - -In = 4FA3DF1DEA75AD4B9C379206A95FED930000482E5B683FD2B17DC8E7D5C4BC1B73186CCC13C9FF2DD09FC1D4F68034D120E84CA73A00B71A3B46D1EFC6FF88CF2EDA65810B098CC5E651D9CF064E87076D5A871849F3B405D3D58EF5B1F10520A9FB4FC84A81A87B13DBFBF9D8674943E28C257E46D8AD7BE1785F1DC7C9B1BD574AD1DDA48F0255C853D2490BD3D63DA22A8369CFD02594999A2EF443308FB8298266A11EFA177102C75DC674E89FC9DCC1A0D3C863BC26141102175D2678EB6E13D90BBD9A5EB89AE8C0CB47D7F340D3D32042A2762BC9BF2B40EB40E87FB42610FE7E357051F01494704FBFF73321B47301A0799B7EE3FE5E62200F397A61ED4509A62F7106ED0EFB0ABD6AE9E4A1FE9B02C092DCDC75015CF602F3B9A8988B609E6C0D1C5C3E219FF57875C2EF01615F89447EA602DFC94EEC17A398C014BD346691FE209A002771DC8164422CD166AFB457A8B3071282178A3EBD201D9B07B27E711E7EE7D33AA5210ED4E4E92486775D14A6CED092E34A7AC82670939948FEC149F9C018FCAAD3FC597D315713F44FC5E1725F448ECAED40E8D841BD02F1E81C019B08F99412E360C0BD378391C67D964B47F50C26F0A483ED664023616B0FC9AFE43620DBE9CCFE070EF295C049EAC754C2123130C6B2C0232F6403AA7F0DC35A5999BF95D34AD612234C6289277ADB60E4F72EC2DF570F05395B3BE8A0A3C78B732821AA08927C524E15D65F66A3DB8C1C96FB70BC0686AAC310051F469FC5EF880C0F66947C1C328F97684EA24CBE63BAED8D114F40507C2901034E6AB3893F366D53F1CFCA309309218CABCECA4722FA9CCBC7249B87C12FF8397F40487EB00082E7F551D27E301C3BC7B5389F7042534BF7E692DFEA4DA24F7C34B8D2FF145F54B517FC97134EC5AC2CB925C508D7A6BD01FE7B764648274972BF08560D30802E0EB7EDCC57AF4797BBF92E8688268606B0F1BC901FCC22136281665EC16393FA9601C4FBDB18CD1D1EE382BC07973903E91FFA87399D1141D49F4F0C064ACF3AC9897891DF10BCA0116F2C3FEF180FE6A8E937C478F2EF293AE9186DCB1F76B6E48101DF64E57EA7C64C5C0025E221C8F5CBA5CC92D9CEC628140996B26D17F439B780F59A999301122F82D0495F8AB5AE1EA5790F45E992DFE00D5F82A7FF1354AEFDCEFC0D2D1731D22FA2B75AFD4FDA25AB194055FA9628381055247C8C7587D22E73C60136C4282452D47AE03AA035FEBC26FCCD42A1CB79CF866DB6418A49FD8261E877DDBB839CC39514DDB87A8A40D795532626FEA4A4C35D13E028F9ED1BC09B06BE999B8DDD2258AA0596BCBBF72AF67E10BEDD58D599B8D577A583D676BF5561F80CE5E9528729A92DF578FE75DBC70474B75747A8D55DE70E57BDD62D4344DC2115ED4DD62F1FC98BFA1E7421FC0700025C46D0ED1BEF35C3B778563211B9FA9E8BA4BBCBF01C2FB626AB7EF325CE9F468DF2CACDB178D36557CD85D542C067C289E926C1EA2F20ABD329E984168BB6DEF1DDCCF214DCB6A53AFD462F0E7E7A19E8C88F049244125A6D7DD41E58BC9B2FF7FA2478DF76AF73090CB1AB59E388BA20E2C297C967737A1AF61793B68ECD7439444C48E28E2D09C48FADA5E0D1D15E5B340A52F8B3B854CCA479F0A598445E14F53B3BA36891050C79673DF3E2B5825C955A29E5C9A22F3991D0AA785718CFEA1D2385F8E47E4A75ACBC7988D0558D541D71C4E6C5F1CB15B60CEA0C34A67BBCE105D7A896025E0254DE7D7AF724C9027D44B8642192A08AB8E1EF3046DDA6014DF7F4C9E63C635E48AB2E70B640D480998EC9357E665F99D76FE5529EF23C1BDFE017C3A66CD4EB2DDB42EF85EA0CD65534 -Out = 6A6ACBD03B4A2CF63356C7B40B1C11B4E407349F13BE2A5EE0162D511B053760CA9869B3036FE9D68475BFE3957B7007E0380F174B2CEC30ADD94DB65E43B4D0 - -In = 523DE8B1F4CBB65E81FF0B6CCD6EB8EF0A0F0A691ACAF4A77F25ACD2D66AD4B3EFD25BE70308853C094412A518A32020E3020A9F6AB32F0CD60EC0D7A194917D6C457B168A54A4B46F7B0D0C71BD61CD202F4C718776A701E0770B0EFA05418770F98E4E79CD066366FB3300E8BE359A98B82B764BC2FBBF59C7E8F94A157B01C6C7577B1428138CD422BC47330F8ED99F4C0AAB0D984287445539839389EE08D6345108AF26ADED0EC1D7BE774CFB8C5205DFE07CF6CAF8C1AFE37C7A2E4FE6013B93EB2463DE4E0971C7178D6A76B16A0E8960C984CE8BBE71B3B466EDF0445B835F09414D01F14C7B6167FF78FF118127BBD5F812C27FACD57B3B120E2BCFE87315C7A92B82EF5D50CA14A7174D1BEA7E056523E055A6AE42EA3765094E5544E5ED003C989C2F98F38A17E3DDA74DBAF9C669A319638A2698B0E4A611480D8AD3CF016792ECD1034925F42B9811A7214D623D047ABCA31997DDEB03275F80DD21F40DDC80616E7AD3D481E8EBC0A1A6A398E16A78369215541ED10B75671ADEB1AAE6E11142A1CF665FC1B7332DFBB0E10C21A2B48F78E57319AC9C58DFA8B1C2548E2979EF1ACCFEB215AFCD6C2C1B46FE97DD491758378330EFFC7283661D2CB84FA05281E9E517408508D24D042E7B9BCD34DB87CE972E4CBCDB98615FB93093369DFEDC782F44BCD03E81CF93051318B2401FF29F753A264BDA65AF199E3FCBB8B5D39C838A67D6C7A3DB046DC56C323DDBB5340CBC229E47CFF8C9D29B7A49AC0EC8C1440AE498C7D150EF91C29BEA7DF3EFCC2871A13A1D72D139CB4603D9FFFE85F6DDD544850EF63C3944FB35DBC00D4308CEAA6394B6E23F650D323F8F7EF50DDB68F1486EABF989BF44451F620EC9485C0B52D1415D3C909A2CFBE9D77DB19D069D33BAEE4D77292E63FCBF65C1EBA24BFFDDEFE95211EF0AAF8ABFDA9F94445E582976F986F5382CB669506AF2B4A5A0C43000A3C72C5CA4AACDC9D3D39FC5C492A393B6C341B86DACBBF6BA8B465100CC683EDB2D9B9F83EDF9C6A32645F51CC79ADC22A52A007BAACA618BE35E356D1FD1CFBDA73F1ED09253039DEF609450FD2D5943B9CD49CBD52A318EE3510D7CF3FD8FB388AC6CB9C6EEFEF3D3CAD8501B91CC04A888D33E16D6A4C9666F5F5F3B257193F2B46DEDDE11842909D8C48ADE57775B0B272E2DC9CEF1A083EB2CE58F4D1F211922FD6ADED1B82FE6F5B11251CD396E5A3666ED9626036E4E356231C146BBA0A91AFD3648EB7BFE0B9C14F15AF2F92309826F468945CAD0AC422DE3D6A773B76178422107CE0270E7F580B5CCEBA82CA0184AAFA8341141E65E39859885768FBC5CE63B965A0604B659E71D9DA2C7A43646088D8071D76926163AAFC69E25355BB0A222B7B2DA9F0A20C021ADC462E905A9C3BF31C16D87FBEC3F014F3957A720F1432E1741553092052FB58A198640479ABCAA51B104CC93E2636E1460643EA812BD44E819C2166EB6B349BA5BDEBAD59078910B5C22A56F004B8D9E4B1224D8D204B48ABE7355548A402736C5CB110F3A1476ED631FF168F4F3EFD89B38DE4751536548647523D334FAD7CC2D142973F2DB3C1FE08FC5CF83F9F2BD2DAA524B37864816AF29EE05951FA09D1C51D9D14EE4F72FD7BBF18B1A724FF5A0958A063947C430142AD2356E4400AAECA442E163372A8F1CD36E2DB988E7781165E5D4E7074ACE40858E8370E883694AF09977704347FB735C8717C42BC4EEEB2AAA50DFE637C640909CE379BFB9E2608F88751377038D1669F248178AD580A908D7A1B8DCC7E53E01801F1E485B5893F103F03E0F53B2B1440BE95644D85AA7F6EB7EDFBB46652196695EA23C08573397B111FF909025E20C5201293B4D223BF7AA01DE7CB28B94714370434B9588097E2401B62C7A0DEF1FBF89809E810749FD3CE9EC3C07CE4BF4C43DC966429B2BEB4D711FC6C448A12097B36F1E6817EAF4937A983F85D9CF3E62CC1B2AC6AE1EC9EAA8CD8EE2C3322239CFE5DB3D4E8786282E630A7D259C2FEFECA03031C960A66A71E436A3ED6F2F3CFAB4BD77C660D14205ABF606FE561A346F7D849B69475AC9F6822D80B9A2E56D5D495E4B309B0EA963C9FC5C7EF94B217EE5337989AFBC7107D233A8B362AC27C4F69DF9E191CD65AE97D6EB9E5484EB6F10349575E4CAE51452380151F902415AC9CF42C824EB23C9541D2DA1C26DB85F53CDAFB06A12B8393CD580A8E494EDB6710C720DCAE30832967E33E6303A92B1DF0841D7724284FFD2E00B95C6D623B168D21AC1BD3C675EDA33182A2C22370998DE1E5EB905372CC6EF32D5B765F5C94870DF4842D011603BE4CDB1C227E41EB2F2E8542CD325884FEDC9C5C7BB07A92D20D64B836215C59F162A3DA8BB67D6FC13FEF97CAB6ECB8A29E431A6519A6261C4521CCB90E6E609869E6FE398404AE047F64EC4263566DEFEE66329DD40AC985EB8A08D26529A544891B6F57CC235C63C09057AB6B6ED720EF41A3C9AE65768B43F6DCF4962A103DD93C213171DC2C9194E43265C689B49331450281A3FEBC618D1AA4D65A135137051FD46B568CE294C89 -Out = DE11315ECF713973B7D6E548DA33F68B53D8E9BC11F7E89C3CDD334EF748A58F84B03B296F1B05357A8873449CDC49CEC6C893A629439B48B6DB517F4B0C9773 - -In = F5080D4C59E804BF8F34B334CABBCC7D32011BDE3677F4B9069416AC204114CD9DA7A0ED0F4B4D8344416336EEC15553EF526B6DEC267B1242657DD0B508AF81FECF9CFF9C82A6A7A9539814DD7E097615EF15373836B5D2F765CC8D5F82E90449F13AA741D5EE2FE63898E55ACD85116846807606FE1E2E29F98F9940B067D0D1DF01F080211B2EE4B0A30803782A7BC2EAFDC5EBDBA91EB05F7D7DC8E34BF6D44FEC05824F53418F235FB64E899EE147BCB403C8855E94AF378D182D79C3EAF977CB4E9D4A16D990A6C388CEB567B97785E6F2BC6745102B99AE765E960B6B32BAF01E2379CD6ECB74D3E1A56552F5976DFE5C742BC92BE596CA742FFC3D0FA032AC29F9F7C1A5C43BCCA62DF7D9DE35D0C7C179DB2E1AA255CEDCCA55064C2049FEE1AF2CE5EF696ED4BC46B7C55BDD51F2D44C8713FB2475C0B85246AC0103CC3863B7EB026AE076A600313F6FB40A4DF62A2AF81B7E917951EA870ECB31B3401928B5046D9A1E62D14B30FDEBAF262868517318FE17EC3C0D52524F44120ED8ED3BA70C643300CD0BC70DA72C964A88F52C3A91EC20BFEB5CAEFCD4D9C7685D8407476B5F34676C5EBD1E88A6CFF1C625322F8CD59B9ED60CEFB21F9491B95E72791F7AC7EAA3C16159FE9DF7A989ADD6C2282C47585E11397EDA9F47DF2B40166E03BCDD6186B46C6835118268DDBEF19A28BBADE1BDE0228FFD7E8B3C3C598D89E24B8CDEE79C940254DE26CC6814BA2722E42F7571600B7325E1FF300251D52A895B8CCBD049B2953B8D231445F68F7C26EC25A4B8695C8AC116F736BE939EDD762C9B4743E463C9B9B2F88E0BC0CE78781CDDC3BCA825ACD463C7CAC2AA6C430BBE820EA94AF9A40B1B5C006E9641A2FFA6E427379E1AD49C81B98320B3431FF0030DC683D61026438BC6A6D34B2C73704D9F62EAEB13ABB3E4B0562B4E0482CD6B2D7AEBC0367EA29A88F4A76F3D76FA1197E1DCA92C8216C84C1AF9B8C78C9E3A7799A4A79A783033B0F5547E8E75E69CF3615AB04EF989FE1A463B1672C571D50AB56972896E8A50C242F22C7F6E27CA4CA793F627E79608680F5421B28BDD2589F05E65430DF774EE873FCD1234064F7A33CF5A1FA4E368137FF9C1597F1FA0FA36493F20538077669EADFD3B06F788C912C715FB5D334DB6BED133A8FDC40F5496E66AD63881F0BA3727416715865253DC5290327B515BF68DA188DD5B4B0EAC7CA712CAFA8FCAE0C5503FE58A219182F1C30DA6D0C19CFEE897B7D837C97996A35F4CA8CF0537A01D17E7DE0CC9C129E4DA0ADAF1FDA85030DF9127BE628263B0624F372C47C3AC87EB945A57F5C732BEEE81A7403001798992F3DC944114FF3D54C4666AC5AC8C98D0D5596CBDEB420665F5EDAAE747D54CF7EDD37B162E372249D135938CF17D174D12D88279CB4C32BD6F018C766DA6983D4EA51D6BD8FF0A9B34E9A93BBDA70CF1B4B867D60A74811FD98D52FAA559B52C755CB70A76C94BD19654CAE7017CCD70222BF08C5D7AD1F5E4E6344FDB3ABE703452C29A696F39F9826ED8BC510A4A148E5BF8A5DBE6B82D7220164F08011C05AC5159D52CE9D45D758B645BBB248C2D341DBEFA1F8602C5D458A64F38F3B04DB39089807B6A10E1BB52770B92CE72E2D3BB0C2241CDED35054B84558D1CC099EF7B2296951951D5B6A22F93BF962AC5EF8FB55EC6CC2B316428EDF12078ED1B66D525D022819CBD489E1BEDB02FFBD507D55F9B5D4E22F6396EA233453754688D20151A09C70044B8A5A9AC033C3C3B847AD833D5C05B33407666EE82F9581DF9034EE15A9CA67D52F1D9B634B84C1B8BA9E515F1F060A5AC5CBAE2DE75F94E112F7198E239DF08D3103F065627438995026DF511C6E5BFDEEE5667D511D4181850C7C5D179107C1B86D24D5532A88A4149A2810DCAE73731B0E1247281A6FD31613DF6891B4C17B7A6A9AD9B77468254B93F85958AA0F01CEFC10B25169DC46E035D3F24557B4BF0E7D60174219108D916FFDC55E25BFFD9809EFD058E12C14F39C69D8FB73D3EC6458F47F2F8DB901BA76C86550B11B54D0641D4DB3EB000057DD00F2E511FB7A47E959A4402A3AC5462234B40B184020FCF7A0396C4D00A987C8741A4537BC17102A5C42AFEAB9F71EA66ED4CBC7B5EE682FF04F56F4BA1EA0BB326C4089930F9E3F3FFA3E06637CCE32113881A06CC3A13837448145C2BD01307A580FDBC385D8F46FB92FFEDBC8918D269DD1871164D4B3E2023441EC8B99C82A5F09821CDDF6B38C9ACC3BF3A38D5628016159588C33EAA29D9463A537C000A16AD8C177DC4CF716E625F46FC4CA8C19FBD8EF320F1D680639195C8B195B0A02738E0665F4190D6287E589CD6DD45B9E8CC23B08E1681BFC6F66B88DE6B091E825EA4BBFBD697E10BC407570AE4F2A3EBE569554639C2B8E051656CC30C837F5A92260EAD1D552B45801B6D28134166796C87F900225CFDC3CC49D72DFBC18D8D95B1E160ED3CAFD5C3467D48AFF87402CBCB1E1420E3FCB588AA19C8F42753B59DB6FB6A9FDBA127CA806DBA7DD97F2488FC2E438EEF57A4CC85B88DCFDE76AE1FF61225A1CA8BF4A14F729950322EA681B16D6492902506702DC8F348E4D3AE7FB55FAC1231FDE82091B34F1791B6AE37587B10325F6FF5E23B855845B86EAE90785B9D10D90A16644D01BB626F343B908A9591F4069B21822CA4ECF985C1E710475F33DF9AF4764CFB0FFE649063775338F15BEA7CFF29F164678160960A80ED148C9B7FAA58E9139911D3DD9536F69646F718F083DC9029D6294FC4C607688AA75AF350AC2C0B001A157D023D73D86ED8133809FCB9592D12089CBD7A1BB6BBA882FE227C09A53FF088907CB4BC2FB4B7F62D41D3D397C4FE0AD12BB3964370E21712951C679814D506E738C0201E42181D231136A435AE0397B61CCBC5E8BBEBF8EA77C8BC48BD6211F29248F9D498D818E2B544D28A5E60BA727F32EF4BA2707962230C900076FB764D0ED5CE078C9DB14DE894BBB836C6DE9E83202AE89F9A8D8CB0341E1C81B5FA8B16731B8E231E969C0F1EF95336D4E73EAD6DA23DE3AD1EB608ACCE4D4D93996DD76EC1F5F2C576F6B3B76E07BD8A810FF5D88B00FFE48C42700B61CC499336E7FB57AD72FF44FC631C7222C9A3D1ABF6E77B5ED7FE2F7228FED6C849BF7142C4103989A80F7C15642AE61650CDCA7E854EB25E9E72F4C3E3768E6CCC8BFD556B56D3507EDDE9E5C331DDEA75568B07813D20E8F4C9547838ED28448F2E67158ACF0C00B131473847816C5E2DC215 -Out = 740168046E1DE04598A62F5B92372B5198F2C44F579094D274EB5171CB4CD7770763D54CB75D070184921C3CF65FA371E96F8FEC8138E7E1E1590CB0CA26007A - -In = 08944CB473B828B118A31986DB67FC757F238182E790553404B792AA4F0095A6A83291E287CDD16521A3AE8C48F56FBC909DFCCFAA7BCC570C2159F26592DCD6B15BC4DD55CC05595AC634B2C3DE15360B0F07A03B5957BC9333CC5097919399DD9973ACE15E55940178C4C96BB5E0A0A10BAE175769548EBCE11E0D7D9DB29647F197D4B87F7039F5D4E59E016531DBEBF55A797AC9A6835032CDF34240A7EE7423E89C09124829CAFC5F89431C8AFC54FD979E50D48A82B47A53523C84B6004DAA323EFB708203E5388A6A5110C6CE2E341048A65FDEADEB3837A03420F9FADDC3F02A544F1E46D96B07C90C7971A7040A179E8198E90AA019268E00367120D5F3D98A5CCE82C885E77144B1AAD66EE682847776B04F01F501DCBEFE3903080A8058B3B8F1D823D917ECF31FC2D5B0795BF95A55C7093ECA7C801DD0BD0DBDBEDE7D56513128B29FC0B4D25A6240B24C99E017BDFF7ACAFC8F8DE9FAF5A2944384AECE82BEA04DCCC6D51FC6E6F27AA38F131B7959B13681A09B311D242E6222A1CE5687DE5C080508B1DB16B6F8290D33A3CC0D0138AC61FD9093825E9D3752889E9F20DB9F80F92750EAC88B38AC81C0016D40371EAB4A87E845E91446B0A07081B84F559CDB95340CB020AF22AEA1BFF2FDA12F7A42973FF163A1C6F33DB8B8214AE27ABDF1C54F5B03E29310FA210125E1296E8AF93A2996DBAEFBADD4C51C2C3B8A3E2BC9FE060C42BA32768F6992A99599206CD2291CCC5BBD50856F7F8D2D0AE1EFB5892C15A799B77482DE4553736B162ABB06631F1688F6746E7D7A37EE7EF24E6CC901175F04960C01990178F81E957E941DEAAC8846B3704E24204F43DDB0765C433F3F7D4D201459CD65682B7DDF3D47E95CDB31B96A4CB22907F08BA6E92A4A07703B2DCF150F922C4B7CF181380303FB72547847305999C3C8F9AC877D05D9DC4159DEB8A13D36AD1D533A56950E20F906D29D51DDC45BD15C1773991707480E37B827044BDC6473181B760A9036E0D3FA491C2F08C55130D8CDD5AC8E97D0813164AF3D28A585F0C2EC7004D498F95C6B62231A632A56C2D0C48FC3A6992D4051957B9ED6D9A86DBCCD962A8883CF82CAF01DA2F51A203D56B6089BC8FD0B1BD414C8063031ED469555E22EF872689C130B1C101034D572FD8CD0EDDABEC9EF1503D7F728B0941EFE2B9512438C7DDB176BE2EC2D9FFCD56495A4511428DF02819CDDA18D1ED5D3B16C6F42AA0AC681A9FAB51E8A1A856C15C51A3EC1031427142EA12543014DD4ACAC640B8A7729E63AB7DF1051112CDEFD4B988A2258334FA9A7F5B3A87A02074B9F69DD81B83FC74089A91D76AA4041259E80FA255F2084902AEB9E996AC2288AB464BDEC47AAB26A28A2A8194989755D48FC9A5C9279285F2F1DBB8B8018F3E4E13115D78A879792E45A8F4F24ED4A317440BA63E6929056EFC1D2529B75A709D6C0097DC2D97F646F334EBE6195EC5630132FDE58E25DBC17DAD822D9FA0938A2A2C926B105D108403DC29CF371C3504FF73BCE9C7ACF9A74C4954CE6A32DA96B21CF3211B3E49953DAB78C49C3E532A349003C59C62F7D40261CBA63A9EA21C89A38AA63CE431C43AE261C4D9999B1CAF491FAB8E7BE6E8C3454F1BE8793B2D27141FC107DA599A4694C41353D7785C05B5E31440458D17C6DB66FEB8A9C5C073FB946A67AC0312BB669D9B12FABAA5272CA6631379EF4ED420A4424A5CD08526384C047C33A84D5D7DC0C2153663B54C73DD799A3568C01B818992CDF8143F1DADD6B50CAE6EAE13AC66F31FFA2B362CC4D2880592B7FEE4B9E4CD6AA5E5DE27AAB9B5DAD9F7D39407AE927530CAB2B61CD7394A21EF47BFB813B5EA6091458D239664923280ED0D5CCA8285BB2281A2F9FB3FFECC8E9147E1E8FAC957D90C9E5F513738745A47C2AD0C31FD8986EF3B6388C6E821F166513811D547AB4336B5E04643497FC9F8D6E380EF6478B82B6E2F5F65DD98A63C68C32B94610E1D3B9538F13A7688FBB1EC3448BE9BD77BB93A34546172AE8D614F85228988E7FEB18C9A0C9827699E8B3CBC69750BDFECDA8268F694F4C509BEFC1A1166F85C829725299D173F867A300987A2D36D1BBBE37BE3208FB8EFE9152A41A5F0E931B6382FF7F9B18937958FB180E61F2A8C28F36C3C80C3722935AACB81C24AA17FB3E7A1026F7031A7449818ED62BA7705CA27C2D3268F90B6322921683DFF800A306CFC186CF2A61B37F35837B217E3B2CECB0843D84EAC67431E3D689F01522D4A4C73618B7C2965C9DABB15C0BE637D10CEEF72271CF39A7B803B41767BC34433C3E6FF449A439AE13DA1EAFA038CB9F2E1C84F1CE39C05DF56FE3D7B82386C4E628B6E27CBC5D575C66ADA3510C246BD04DB48F4AFC2D7352966DA2266C2BC9831532F53655D8BE42B421AC0D70D8AD1D3587257886DBF93668E907E861BA64F45999BADB0F766EADCE5238B5ED397F265935194812C03C5769137BAC97140525303CF48D65F39004A3F59B1FAB09895CEE05335D15B9B12265892F4ABB92AB1DD2002ED00CF3562CB67DFE1055968E4AB3306BB34BB87D0F64B26848812A2F7B50424A21FF94081A7F70F7B684AB0F092B2B085DCF84CA38414CF7290F607BF79C37EA84253ABCA8D4184D2DBE2E900200B81479E1CE8B71DCF2BD6E3C557A8E431D627BA669C2EA03068E0F7EA62C29777B22142D7A1D451BD541EF8EBDDBBA4E3BD8FFCD340E935BE7C66EFC14A13EA48134F655B0DE3180101F09D204C379743A357E6DF1268B55A9F7524398ECF3A59849A27B142239059998083E8FA91785E91C4D220B2FB17E3389EBAA384A49D89B5D78136DD2454F06CDE9837F096B744D53221127869904AC227CDF30BFEA78CC5545583F999B9C42A1184E2FB9FF3EC095B9DA0D138205C4EAC4C8C480C43153608849F63E161135C79D8B6C9CFE9B8DFD8AFAB559D8B595DDD43835033B4BBD391E028BB2A60832D9B697EE61408F149744DCE71AA11BB2B0436C1E2626AC3A27CDA293366B90B9CDE2D927855130758D3946B867192DCF3FCE9A3B9A5276E8C37B8CB136FC90A6DC22650F95E796A9886EFD3F424BE63A66DBB1041CB3D4A06F4E7EEE89F0B6D15C36F9EA010C66B332011C8888E8E4AB2B3AB5223191E1388613A0FD0F07C1B26D7CC7CDF1AC62A226454D6291B431CC3EF2DB2B2442B37DEFB942117FA247096BEAE598611B8104F37BEBEDD8BB8B949A89B5BF8E228ECA1D8F16BFEC75A02FFBB4EEE3A6D4A6087C43634D675311E72A9F3253BB5DD364E07EB4B9C84F586BA267BAFFAEFEC79E03B83B18595FE06D7E063EE604FF287004D141C1A43AF0CA7C5651D98F633FA875B4743353FB07BDE59B6567AE25F7095F1D9EDF30570E2F7D7EC194216898D910F9E295A41DFEE072CB56F914BB78CC9854129250F9874B63BB3EBE9A1CDC6EBCB0916E1C440354DED6AA818F2811DA913912A21D3961AC94A39F0827D3A419616905DC45842C8E69A43004B8AE922C8DE1E8CD0668674A7760153213835BC63FAE4F8D65614AFD74A34D42ABAD5025B884B34639340B45D49CCED423771916E18AA077291923017CA50795F3B7A3F349A3D29923833CE57801C631576E23B838A7767CA1BDA92B82AC502DB3688FFC83C09A4E40CAC31D20D9D32FA6724A80BE7091CDE9C7A6560CFB326B467CADDB9E9B7A491EDA283EFB0B61B4A1116DD859D5C0897EAA2A3FB2CD82FFB33770BF9E08091363B6B81D23E61C2A647D2BE440C5C79EA89690656D9F10B1F07942834E1CB6E2D2DF106EB6D6A21FA23819E65028515E88BD279F9317BEAFFD394EA51F8639371C3A89F11305A4CA35FB0711F5E2C7C3DD1659C790245812113204B4ED8AAE9FF09D43C6DDB13F5070D98831B2C7639FB6B9B01C288812DDFA8861DB32DC8268C07D30CF969953042B3DAD530D9D744C06AABE7A886C0FE57B09B7F42D193FB3E9C06329818251A2F7E6474462C95DED -Out = 9EF7A93FB957D1B7EF09E156186699159E65461C9C5F478CA8F1B25C6C6AF982AC15F65E57ACD3ACACA75CC15C38616E0016685417E37DED05B4FE579EE2955D - -In = 1A3DEAFCE70AF6F3F55D66AD9CE78D5F4D5C5F2638A810AFCD07D67E9F9A1380D6B34BE482EF030C22F1E978F544609CCE35A74C5109EE7038495B6210CDBCA8DC82C6E9E7B0D593FAD9665382B3C401AB8941DF71307DD77EBAF140AA66A1F76316478850E58886A9610631E9C722F459FA00C0B53124FB4F12778BBBA3760826D3DBA67CD030A96B654AF93F8E395F5F439549489F8161683F124BC980E6939C83A6085E4B6CAAF8BCD89A0E01ED70DB487166CC29735D9235A9CDC57B80C9C2E591DF6322F5BEDD32937073F781A30389552AE83FBE147D1B3D3461A3DF96C15CD96900C56718EAAE838417057579115936862679F5F2A45DADF65D14108AF1641DF987B57986384FA1433789F5DFBE87E90BD4E9D8D4D0741FCDA7348322B967B566B18612DBB8FE64F151947C3F7E361EE868676BCCD0CB3A1AFE046BE70057A05ADD3E65AF31E3FF414A627C0183E8FF583B41B75B203650420216E6DFCAB289665F054CFE3EA0943647528518573BBB1D0F27E1449E98739EAF0D009432DF0C1EDC1625264B94A71DB762659FF5A3A7A867F182D1F1FD34B341A4A181221870DC4A494013091A7E3B2B07E0160C438F1EE1E8A2B989C4FFEC36B5083EA427606767C29672F44779A8505B422B25A56907F565B27690D011426A62DF0036D57D967CD1D14E915BBC2691E7AF818C769D9E1F9EDD40894BE88FA1D7A5952AFD898E837716ACD73953BF2D1D448123FD1A0276D2C2EBDC760A4B787416CFAE5E963FCBDC8B551CB70F91DA0ED4A8090FEF178E879F2C34F3A269DFFFF09772D44A13D7A17468B5834C460957D5243C325F63F05F89D4ED98D361E7F0AB8A83948A64D0CFF8514841AA21C7F337920A9983E59BE4A0F1339E1E462F92DC1FC070126206012458A499A8111FAE078E00B0CA3BC1D6C7087CD318D5603C1C7E0425E6F729CEECA5F35B82F8A42E0E9B950EFB0904C5FB5C06D91D239913665ED1F1EE4B82185A01BA86CA2D3EA94E5A8842231A94C05280183B7ACA289984103F122203EC2FBA4A382E6F5236D6F68DA05E3BB0C558421F0EFAB91DCEEF6D1ECDC60F9B88F8BEFE31CDC3C2F024A1AF2C7336AA5D151E8CDA814A5FE898BADEB9DD680E337E682EBC22BFAE445417E37D2D89A338659A280AB1206DB74DD42C6F25639C1803BFDF2156DF613B0F5924D209F7F9003CE8794F989F4F27B82121210F4F65EC5A1F7723305CEE438C41F793EE04496BBE337BBD2FD3023830B1C8889C6F4D0C1192E364EDBE1CD987BA5D66224EE9C9405E1DFCEC0EEFFC5C73D3123F6731C6295D1E6B854B884FD22B6A3BBBE5395312585CD138BCA67532C6AB71BEBC6657C50DA87D2AC6068FA3970202C5E15EB7B4B3D2676C0134BCF1EAC2B26BA46930B5E660B16060894884C88BFACD6779276B86F685AB6F17C6D53F621275FAD66D021D26D1D480AFAB4B5EC75E0E763FFC45F599EA02504DA5D91EB5EFC3E4AE196F219E45E7CB05594958C876FF474A020EF73C1F09B1F7F7457E816D3AF51D86663D4D461754CD5E907456691E02446D6CACFD33516206A31870543D574592087773653D4086C2BDCBAB3C9B65CA11AD0D4E58DDDA8B440309989857103929549B7300CED42651D4086661694092C42875CB62858E6D1BE5F7274B4BCD83AA4DA05CACA186A30902830790F9FFA24418E1F9DB00FA40477E83B05C2D11AD7D81DDDB1E31F94A9DD5E9E13391C22479B570976E3AFC1BE41086D3BE6689D87CA4326A7CDE8E5B396A678D3CDB2C80FECFBA2BC799AE8B1528E96D880CD098DDE910D097EAAE660AD4D7EA51C18F18AA1B39614299A172512521DFD231B9840909839EB69C892EE23F1BCEEC1FADBA75786C7DED93BC9983F74CEAB397EB8BA84F7E4130B34258D628594A6F9E2348FD91BA2594E07B8057E8A2AE3ADFEA0EF919555385977041C5B6DC4F3880569171F7217AAA9A85F2F5BBDFE3FFDF79248F2A35FD4DEC34980C67290339B1C0A5A6AB8838157AE2F5140B4A24924A6688AE5CE72A48103EE9029CE8A0F15B1FBB19A12FAAB80A7CD9C0E389FC2775833E3190F1CF735ECDFE7F6B6C326506AA82613CBEDA8DD3691B81F4C1E3B0FC32D7E6719CBFC12F4A26E0FC29D6417953ABC9568DB4ED9A294B9FD5F2A666DDA546ABA301B1C60985033953EFD6F4538333B5C7DD3148814A3FD7927C366F40B3D7ABBDEB2332DDB586AF80959097663CFAB2FEECAD6D368AE10EFF9663D5F8BAB95935D25F45776F7F04B46817D05165A9DD4770509ABB92F8B9E7373CA780703569981754A51D6D376D65C57F55CD70E2DF5FDF5A6B829AE30CE3BF942815C8B4BE858DB58151D02A68AAB9FD373E047EFA51BD1A0CD1B61744D9E97CEBA3334B3BAAFEA3BC9E43AE097CF2C3D713EECC247FF43EC74D54907D8BF45E45B2E0E11D82B126A8179D3F66C055E11F69EA67AACC5FEE8AF01FAA379E51998F5070F9EE0FD30A2EB22A925586FB1B39024EB5EB1E127C76A149E7F02AF1B73C16E9E5A5DBE378E08A9FADF1194C625132AB3FDEFE8FE9A89BB8E0035A1A3AC5278F5D3D0ADE0E41C81C6853A41C4AC45BE3F68180FE23F27F18BE2E339DE1D559D75DE63ADF7A32BAE42B037AEAA3E123A5314891BCD35CA48D57DF4C17540E97202A8EA1328DA25B1FD6BE2B56AEC1E5DEB209F3B7A13ADB1CBE53EB645956E577A7621D74E42376D70BC5C4AACD239A852FBB7B3F62CF59FE10438C1DC8E1E46566325DA0CA43AAA63FB7E0B450A2DB3E3A2204704D894DB24B72B3078106E096CD543DCF027650CB4965E38AC36A8AD588C5962B4E26548AB88F0BC20E10ACC1C3FC00EF415B3C32499264552B14E2C0E789A3B8A8BFF9620FD939D0B34E806177EC696A4B3B1CA4B32BA979B2690CFB3A6B17BCEE6877FFCE757E4116DA01099FFE82ADD5A0C593E73449A96DB9CC2B9E846D166B095174F2CAF8B35DD878C836D9BB6EEEAF8E1BC5D0E149C739828CC480D731DC16B35B80D4AD82ED7D29BD05018239EFECF8DEAE180C6A459DBCBFE4AAB9A5E2C1E1BC31418CF2EEEB31FDF8BA02C9A91525E9163F672BAE2EDEC38C1BDB84EA237B4EF86BF5C0F0FFE178E3761E82D94F66E5EA40BA8170BF768409E1B4177AAFD9937BCE3FBFF590320D7C445372463FBBFB34F57447F42C16E026F179CBF82F617C86D1E8D42F6C908F9C6B77E38D25D51303DBD781FFAB569B4CF31FD0B947C45E1768A2E9DFE8369F520DC38D77937B69B821DB4FFEA8F50EBC404F0587B5598189F54B5A5B98966FD16801C87DE2C3C7813DD70DC600824D426D88C55E89D47214D59206A7A65A65DA7CA2E42FA62ED17E7AA5B3ED446BCC71F17FEC8593BE96D2037BD07F9476D4D732B32BC5DF8C921316B45699004716FC89F8D45BAE402C26DBCDF1A340847B932FF882DBEAFBEDD252E126C89A1E1FDD8908A1F67D15D8E432DAD8E08E950A3BC46B96CB89CC5BDAC703B3FA3E986EF1C6E7E6606E6845BA1EB2FBDCFEE744B5E45206F4A419E1CB103C8490EB293EE9AEC1F0A0D294F9D3847737413D30873F3C94740E8FD072817815EBBCE3F09EDEC9D1211A9E99547D620B2EC56C89E9CB8144AE9E46636324BD13C6CCA3AB9CD9FD8F7F937ABABC598232384427A2D4CE0CBF9765F7225E208C3CE128602B0AD08A1BAAB77EDB3111F0C6CA7BA0EAC9D89D5B4378EB82C17F6EA08308A79A53D150D3F85EFAB77294F02EE0E2885EE2AB2793392B87DB11FA77992F5B4FD75EF2F1A822E87407A4878894215AB89B6CC4A120F5A78B3C31AB80FFCC9ACEF53FC6F7F85685EB9D56D30D87C21ABBF1652EEF8F32C7C567BD1F08623B09C29F33561D42727A5649A3850071AA6C11735AE63C4FD31559CE560B27A362786A83353FE460B37074664A9421D3B2F6A864D5ACA087187B27E2B82F31CB3DF5E985CEA271C609B94B4E58356D40C7D5C7FF2E5990FB39588154843EA5FCA92F120075D4C4D006661A0FA1B0585454BEA725473EEF7D58117D5840C8348999003736C5EEB7858FFD273A1C3EB2812F5697C59110275B08F6BEFBE84C92497D5F73B7B6F794A849713B23AC5F29D5C7112FB2E7A6E89EB54DDFA3122E6C79624C1BF25EBFB9FE5CE6DAA779F3ECB2984DA42F8C6ADC77B21DD291E684FCA50E46070962A2D4F00813D8DE1B8ED33FED9715180C7EA8E2BB74FA65D9C7F6E142F3C81CDC59172E1020F62F65CA5A12CF2BED9DEA04A4D8CABC2948F7BE823A3E792625275B3925A6C8D8E2B428C75A5DB0F7120278CD7D6CAB768755C7FE2FBF89FDED1FB38AC7F76A2F8798CA36ED42CB7C07F006271205F546A4812C20077F050D4CDC79459FA686E97F0704B7A9FF7DE16318E862C53D361BC635A55A264BE15016545DBFCE3C6D6849576ADEFB6884EDD768214E0B438B0231B4F2692C2C0B5C177674F8A0DE236EACD9E0CEC7C8647E4E9A5861B957EC834A2F8572F01304C3FD6A06019E5F1499B62BAA8670B652467FA9A4F10F053263BFE9743CC7D933F86136AAE3A6FB56754D7D238397A0030CEBEA87CB255AF36138C373DBBAC41DD4A697032E4796C552AD9C9B3FA713C3A4E09E0EC5581E94BE7F31065157662F9E9C678B1EF1B8B8A847C51789C22B1841BCFC855820AF3258AF9E08231090B45D10046A00178E89BD515616B8A44E77BF57795DABAF40687B2CDA7A5014168F -Out = A2C211D36CF26297E82789FDC7E1564AB1A615FC6277E2AE77E1FE7370C0FEF4FB7B360424C44F393FC4EC2AD5061E633AFBC8D3FBB961322CDFB7AD5A4A443C - -In = 1633256AB03B20CE079196B708A1C02D1B6072219070712C8589EE21341D50752ACB6CFDA17E982D828BBD6CDF54BC7232FD418A323D64939928597B9B52F07CF488250C5E42BFD3AB48012D709F8D747225839296386FCE5FC5AECC4BA7A1076D089DEA8ECEFAA0CF66FCA8602395719C12A04F929321784D7AB8239FCE2FF3BDAE046A266132B5C2AD9F7261F3014E87B389A6695978693D9371D0B1FF9C405F338C2FDE4687359603950A54CF4B9CDD9B24480B239ACC5405C14C886BBB0378391CEF0662A38882BDD09E3866AB9A66CFBD28EB5EE4F8009BDEFC4AEB16700EBA7DC557B489190A71FDA75E85F7EF841697F70FFD4FEA185E7A67C81C5B8F273BFB97B2CEF695C1C74446C4B425BE6B2E66DC0AAACB247E4467B7C7D84EC33B6B5AB8FA1979F503008BDCFF948CDBF1226B1B066CBCF34797298F3BA8C60FA01E0AC8B803223C656112FB91435D75453BAE4707B63330467DD13E0A4B992E6F7E46995899A2D95D23F4AC3D0802B2A6E7D024DEA19CA408C4BBE053F14C9CE264F129724A18BCB18F385B1CA091A11434EA96D98C8D0602E98EDC8DFA14141AF93ED0BA66E885E9FA108591AE59E109AE34D6B9F5586E4B4D75E7DF7C32958A65E88A9BAF41082A0A3F11539DC4EA2CBD9E1C6C3C439B622F1DE574FA75470C8C939B51D2D1C2A7204B859881D43086BFD8FB90346218D099C5AB36846F3B98A7C847318BDFA01E09717943FCD864C5A8A17B6CEB89D98E872D388F20ADC2BE5E2006846904F41682FB1283214F3D20DBC9FC9E0FF571844A1282E88590D7C085B2C568EC5ACC4462B389FEAA5757F7033187E2DE31955FCE55FEDC909255048B327CCAB2E582BBC9D8054BF5CB45145C7D3A3AF9CD5CF6ECBA490C634ECF00E646BF95E8642C43A4978EF08A574EF1F78F6CE57C3B34B5A123D123617FC8EC9B2AC0F9B70A7F6062D38DD7B8E9FB4ECCEF13DED5C0477483ADDAE4F1CC0CFCA274B1307ED0DE72FBCB819154CDA897D7575213042615F1741A8CB646A39F8D134FDF9E60E000EB8220F65CC30F5FA52C431B9E3B6101B96E25B8D0440B96E572A18A01747C02AFCD7513542F7AACE194632099D16274F31EBABB60DDD94FE43DACCE900EC0902EB5E686D48ED8D09AE63DA0E15C736809903A0297A92DE84E0260F11F446E1FC448E0EBF59FAEA3C726F97925C57CBDF85B1F77078D36257C85D56CBBEDCE180FE12B687ADA2DC9912FAC60334166BD2CEF06B089ED5C9563844D71D8FEAD2F3A93F3C07C52537336A8A70BF5B596B9007B9FDF2D082000F20E6B70D2A7E6C7ED27C4146895A6D85A246F623C1B9258A2F891F823ADE4CEFFD59D4FFAD077351E2F506E9A5BDD3900F0204B9E8969AFE72F5DCCB9CDF986D197AE4C4DB53014041AE6221B750E5290E307AD292C8DE6B899235212EF8CE954785537DC9435AF11E0F3427A9C7B22EFA752EA0B7EADE5F6EB4093BACB78676E506698139E4F774423B8942166F9A7D22480D814FC0AE19CF4960FBF6E01FFA65C8DA5BED4F1AE2B9ECEC5BE7B3C38DD4045B0C93EE6CC77A7E61E85D331B23C0D164B104518B3405497054445A353E9B48F2AC5E8E96298D6655614336CFFE6D8C9C915E387391519AD2632366AA3BC935030FD12927EFCA17505ED74C94650C778539004854DF6C24269AAB9C273A493D3E5B0B1D687C33C2FACE46B4BB3742D6DF743D09164D2E0EE7F6BA128BD5FBA2E3B33C199AE80FA9DEE3AD811D02BAA3D42A6362B2AD47BBA8A2C5CD00B46CF22CFE367281488A4852EB8B7FACE79F0CA6F8E78D32578DFEE01711C4DCF3C26D0BA13F3075478E708C5C5315AFDC2E4C0062D16458213BEC506A9E991A61825FF78DA9BA1BAABBEFA56B4A8C9E2E7B60EC4B7B541C8E0F79C86BB5F03F736761A37169B2AAB8884EC6EA217B02C59035F5BB327243D126B78D4AAB430212439B5A75B80618DAFEB66AA3AFF866C4DAEE47D374B512E74ADA933EF24A841BA271C6F02C870E8AB950FE06E93C91DF0E99165DC01BCB190E411ECCD85358FD4A88127A22E4CF4266A90845124BF97B25D7B1C46D3A0D68A684F84E2A638C692A52CB6E8C651A3AC492B0460004073D5349E35552359CA37660F77B2770D6B2B3F7B1922424AC4A8598B4C61A6DB507608A72A6A7D573CC055206276E14005A28A0EC41F28D7E260611D40F089FFE5E529375691412F4E9E12E62C3BE2C563C26D2444EA9C69E6C935FEB4DC4E802E5FE3906F8ACEF4798D940C3CD574BB5E74506C3E0B70CB62454A25F589EADB6B0709FE3B50417CD1D98F08E08B7CF68A04CCCF8D6588F9FC2F31E533CDA6159BAA4297FA446450D71C16EA2324EC09773E7C8817ECF680ED12F64A04863EFE3D9D8760F34DE5B0860B3991FF0EE5EDBA22C4D69120DE19D5429E4AAE91C9E7CF05CC807159A58F13B480872AC1609D87E7009DEDB71C09CEAAB640A2B6135855CEAE4AC2954933A0255B425D9FDCD9C246F82AEB7C3BB78C6E73E03DB7AEC4245A28693FBD36EF4938D59CCE19EAFC00671A0851612406A075713C5D1154D8E13B59B7C5B0902239D4BACFA386AC817AC5EE02A181A9A47C622B3ECF287E14843D452AF347110498A620B34AB4E116308D976062C9EE9CD35DB6CB79805B93AC9A15AFBCB52F1ED4309879D1924A4BA190B0B86E60A516E77D34B4E0A49D4EF2CEF3CC2F410FD8EC901363FC9EBD75EB460D4D8910BDF27CE26A8B4AEB94F9F76242401DC35D0644842B99FB6C439B82D82ECFE1AF0D01F9BECB15BEC83F13B260F7F714AA381032923FDE8F8018F3518547451435C9A5207294D08A907C73696F6CB000745E072E25B73B3EE11595433D27A1F11468686F08094F1D31F5ADA81F11F0677A29D72EBB2E1C4792CCC607CB938647E1F153F9EEF03D982595C631E49B6B7C1FA003A6EB8D59CB8892CD0888B05240F12701753F89007C859515A2FEF944BC60B36003A26702AC6FE04D2E942978FC31A97EB29871D6752399D3521720729007B6A7215A4282B2A4EFC2C56BD129E74C9B00847692B96FCC71CF7A7F19F3FD6B45C519FD73B4860880A2DD74E5727B31A93F0A87F0078155344AE9F7BDBF00D83393B634B5DCA88A398E42C320EB95C4A826ACEA90B65E4767B2EBA748F97C247568393E2FD3A66075CC12935B6D7EB5C2FF5282185CB62C73972A37B3CA508004B4F796BDF82B83B5BDF90D6BFD32B5089B0CA2683DC7FB2337DE42E650ED911DBEE1EF98257F9BA5AF54B1A54B04C0087A5A64BA779D86461BA15337C2E7D4955FDD777A025DE226306A17C384F1C52CDB5946FB0B46DD5C13BD7A55FE2E27E4C6D40D61D6FFC024468F8EDFC7C7992DF5DC5D05063FE723199224F53678E48F25250EA28BDF1089718EB8B730D1C06735C2F871164E2EB5E885A8DFD2A083BE97EDC94159CE9BF75D2433F1D782762F771903CBF9A1C9D13F710BA0E151B079DC0A8262BCEB1DBCBBC0F35DF6EECF7BAA7105B9808745853C96B4372E95E482035916B726DAC7BE95A72B19DAD48DB1B19E6EB2EDAB5AC1B3013839E7806625ABC129F41813E6D71EE4AB2040D81E42E6ED73ABBA64FF2EB433B910EA7D4F5ED3D8D27D39BB454EC019DF6114F544D7B155549D0C56D14551FAF353994A80F30F3C97E863A4F2AF316468A568038EB4D799350A6FACAFF90ECD44E0F44EFB6DC42EE4B0DC2C59EA9C1827326DF08C0A6E55CF4F9C3EA0E78CFF3635F5D08E44F1400D20F638D56BA84B4832090454DE57EF04B6C8805A36F63E5CCC6E830C87FFC164647CED20E4C486D09DE7A5F9E4B68D5456CDB22B0DDED2B95B3BCAE529215C2D25D6823C7D66A4FAE0A1E9F022BA5663204F2314DFA51A1F10E11D6D62A8BA6C28B6AE7DA1DEB5B57F2B65D7456059AD9F03DC5A524054DA39DD100D74EB657DE219795E3C45A0E4C762BA22F9DA9D8159E425A1EE783B4B22C250D8894CBEC706CE16D5CA393404FF478F141BE7CC69E45B077BA1955F1F49EFBE4847C795347F703300F672334F490ABF8B644A34B56DA00EC45A350314B9ADF27CAF7C51CB7DBA0C5477E7D37662F4F23247BCB8F7DD5F3E9CB8BDA40FA97568832AF0ADC68F71422E412254A6BFC8943BB465B01FCC8DE0B957677C78BC1F7566953E9D2446239F602C682A521C14F741FEA98C7E27AABEC339B6F5B94C78287A894AFDAE971F8DA7C7E4A4C92C8DA47BE82DC2532EC2DA9BACEDD2BE6DB2B2FB34DCCDCB34116507376578CBCA105E5E443BEC0F2EF23BE34CDF862EDAB34F0FF21335E3ACD92F59688B419F824EA61EEA82BC80E3463452192377131BA51FB0795E089FC077D0ECA8012E58B0637AD7022206887FE9EC00EE5DF7AD2E26FE819EE35C7A179C579098AA3DF645D9064CD557DA90BDD21F871CEB048CA56DF9653A10ED60F5E9F0ED7F8D89BCF5C22D1143CF44718FF2DFD8E10CEF8AABB67D2305F18177C1426BD4CD03F2625E459CE905067826A214E08E56D8F9455593E6B324E72DEDCC429D3BEFE2AE0599E360DF95E80D453A3A849E48389FA745635BEDE30E7932DE6A3816E31A2217F98D5E40238963D0A36C159FD4EC32D8A5CF59D433DEF3378634AF6887FDB3F3EDB96FC8840FE1B538C329674AE810E8C8B2B46DB208716D38E9D1AEAB097068AD83ADD7DD2647839B3A7388B0615BDE26F8692E9C07D8ADECC2A875203C3D3A9C6CB1D7D06307E9E1D9C3BC536DD8EB271E9A2159C904E61E8C9357FE759F36366AEF5A3D14CEE82913CD2708AA6069369CED763C8E830D70924E82E9015C2998E86EFC1DCE6AC2EBCB49455542A6D7DAB265AD6D7381FFEEE1AA40F8FAC0659B6FB56BB03CD8CAFAACD48D13672F7D524EB9684CFED4DBB7476E99149C28EC08F33BA6AFF839AA178F86B8EEAF1739C829177BA78547AD394136AA3FAD451A11E9642506568B39668B2436610E06EA45FA11D04D3759B033B5382645F15B3C39270B81B80487643913A24F2F1C1A1ED57C85CCDDC8CD6D59B62FA67CC80572968C8FD01894F0153634C88792A7C4A407A4A4CE46CEC5FE5D2569F95A27DE242444EA0C715B357518CAEA23E767E8545983F0D3A4DF66111B4AA1D399CCAFD796D7A80E592D5A51D2B3F60B5B04F8D9C009CA56CBD4DD84127A29B72ADB7645FB7279C9818B2B43963BD605F45B6575A5E2E369E0B401F5EC10EC703F1179B0AB9D4A89D6F096573952E513827364A84D38922734137E969D8167D6959B70F42F2BDA37E4C989ABAA8024C1A84ED6BEB74780927F78B32EA736B9B2B4A795C355C0319811729D9CC399D23519730338D62E16E5035FC52A817090703FE776D65EF9FEF5BA5F4FFEC3CC8E9EB2E312C50A479BDD4E6AB0A56C18C2DF69ED408417BEE28BB41DD13F8366FF6EDA4B34090FC9BC045271 -Out = B5BA769BC397D0F2B541E1C996C40F64C3E6BE52950898BC0380513F8E6F754A41025B104D2B5BD872D1D427A8E98F089C9AAF3B5071668C65437F0EF48855CD - |