aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rwxr-xr-xconfigure.py23
-rw-r--r--doc/deprecated.txt12
-rw-r--r--doc/manual/rng.rst35
-rw-r--r--doc/news.rst47
-rw-r--r--doc/todo.rst122
-rw-r--r--readme.rst14
-rw-r--r--src/build-data/cc/gcc.txt2
-rw-r--r--src/build-data/policy/bsi.txt12
-rw-r--r--src/build-data/policy/modern.txt13
-rw-r--r--src/cli/pubkey.cpp2
-rw-r--r--src/cli/speed.cpp82
-rw-r--r--src/cli/x509.cpp16
-rw-r--r--src/lib/asn1/oid_lookup/default.cpp24
-rw-r--r--src/lib/base/secmem.h3
-rw-r--r--src/lib/block/aes/aes.cpp153
-rw-r--r--src/lib/block/aes/aes.h40
-rw-r--r--src/lib/block/aes_ni/aes_ni.cpp48
-rw-r--r--src/lib/block/aes_ni/aes_ni.h77
-rw-r--r--src/lib/block/aes_ssse3/aes_ssse3.cpp39
-rw-r--r--src/lib/block/aes_ssse3/aes_ssse3.h71
-rw-r--r--src/lib/block/block_cipher.cpp128
-rw-r--r--src/lib/block/block_cipher.h7
-rw-r--r--src/lib/block/idea/idea.cpp39
-rw-r--r--src/lib/block/idea/idea.h19
-rw-r--r--src/lib/block/idea_sse2/idea_sse2.cpp49
-rw-r--r--src/lib/block/idea_sse2/idea_sse2.h31
-rw-r--r--src/lib/block/mars/info.txt1
-rw-r--r--src/lib/block/mars/mars.cpp392
-rw-r--r--src/lib/block/mars/mars.h35
-rw-r--r--src/lib/block/noekeon/noekeon.cpp52
-rw-r--r--src/lib/block/noekeon/noekeon.h21
-rw-r--r--src/lib/block/noekeon_simd/info.txt2
-rw-r--r--src/lib/block/noekeon_simd/noekeon_simd.cpp142
-rw-r--r--src/lib/block/noekeon_simd/noekeon_simd.h31
-rw-r--r--src/lib/block/rc2/info.txt1
-rw-r--r--src/lib/block/rc2/rc2.cpp181
-rw-r--r--src/lib/block/rc2/rc2.h42
-rw-r--r--src/lib/block/rc5/info.txt1
-rw-r--r--src/lib/block/rc5/rc5.cpp133
-rw-r--r--src/lib/block/rc5/rc5.h42
-rw-r--r--src/lib/block/rc6/info.txt1
-rw-r--r--src/lib/block/rc6/rc6.cpp143
-rw-r--r--src/lib/block/rc6/rc6.h35
-rw-r--r--src/lib/block/safer/info.txt1
-rw-r--r--src/lib/block/safer/safer_sk.cpp255
-rw-r--r--src/lib/block/safer/safer_sk.h42
-rw-r--r--src/lib/block/serpent/serpent.cpp42
-rw-r--r--src/lib/block/serpent/serpent.h21
-rw-r--r--src/lib/block/serpent_simd/info.txt10
-rw-r--r--src/lib/block/serpent_simd/serp_simd.cpp60
-rw-r--r--src/lib/block/serpent_simd/serp_simd.h31
-rw-r--r--src/lib/block/tea/info.txt1
-rw-r--r--src/lib/block/tea/tea.cpp78
-rw-r--r--src/lib/block/tea/tea.h34
-rw-r--r--src/lib/block/threefish/threefish.cpp29
-rw-r--r--src/lib/block/threefish/threefish.h9
-rw-r--r--src/lib/block/threefish_avx2/info.txt2
-rw-r--r--src/lib/block/threefish_avx2/threefish_avx2.cpp10
-rw-r--r--src/lib/block/threefish_avx2/threefish_avx2.h34
-rw-r--r--src/lib/block/xtea_simd/info.txt6
-rw-r--r--src/lib/block/xtea_simd/xtea_simd.cpp129
-rw-r--r--src/lib/block/xtea_simd/xtea_simd.h30
-rw-r--r--src/lib/cert/x509/key_constraint.cpp3
-rw-r--r--src/lib/cert/x509/x509cert.cpp30
-rw-r--r--src/lib/cert/x509/x509cert.h4
-rw-r--r--src/lib/cert/x509/x509path.cpp3
-rw-r--r--src/lib/hash/has160/has160.cpp162
-rw-r--r--src/lib/hash/has160/has160.h39
-rw-r--r--src/lib/hash/has160/info.txt5
-rw-r--r--src/lib/hash/hash.cpp33
-rw-r--r--src/lib/hash/hash.h6
-rw-r--r--src/lib/hash/keccak/keccak.cpp9
-rw-r--r--src/lib/hash/keccak/keccak.h6
-rw-r--r--src/lib/hash/md2/info.txt1
-rw-r--r--src/lib/hash/md2/md2.cpp112
-rw-r--r--src/lib/hash/md2/md2.h41
-rw-r--r--src/lib/hash/rmd128/info.txt5
-rw-r--r--src/lib/hash/rmd128/rmd128.cpp173
-rw-r--r--src/lib/hash/rmd128/rmd128.h38
-rw-r--r--src/lib/hash/sha1/sha160.cpp11
-rw-r--r--src/lib/hash/sha1/sha160.h33
-rw-r--r--src/lib/hash/sha1_sse2/info.txt2
-rw-r--r--src/lib/hash/sha1_sse2/sha1_sse2.cpp38
-rw-r--r--src/lib/hash/sha1_sse2/sha1_sse2.h29
-rw-r--r--src/lib/mac/mac.h7
-rw-r--r--src/lib/modes/aead/gcm/gcm.cpp10
-rw-r--r--src/lib/modes/aead/gcm/gcm.h2
-rw-r--r--src/lib/modes/cipher_mode.h14
-rw-r--r--src/lib/pk_pad/hash_id/hash_id.cpp17
-rw-r--r--src/lib/prov/openssl/openssl_block.cpp1
-rw-r--r--src/lib/prov/openssl/openssl_hash.cpp5
-rw-r--r--src/lib/prov/openssl/openssl_rc4.cpp2
-rw-r--r--src/lib/pubkey/if_algo/if_algo.cpp140
-rw-r--r--src/lib/pubkey/if_algo/if_algo.h107
-rw-r--r--src/lib/pubkey/if_algo/info.txt9
-rw-r--r--src/lib/pubkey/newhope/info.txt5
-rw-r--r--src/lib/pubkey/newhope/newhope.cpp603
-rw-r--r--src/lib/pubkey/newhope/newhope.h44
-rw-r--r--src/lib/pubkey/nr/info.txt8
-rw-r--r--src/lib/pubkey/nr/nr.cpp192
-rw-r--r--src/lib/pubkey/nr/nr.h57
-rw-r--r--src/lib/pubkey/pk_algs.cpp28
-rw-r--r--src/lib/pubkey/rsa/info.txt3
-rw-r--r--src/lib/pubkey/rsa/rsa.cpp130
-rw-r--r--src/lib/pubkey/rsa/rsa.h80
-rw-r--r--src/lib/pubkey/rw/info.txt7
-rw-r--r--src/lib/pubkey/rw/rw.cpp182
-rw-r--r--src/lib/pubkey/rw/rw.h61
-rw-r--r--src/lib/stream/chacha/chacha.cpp170
-rw-r--r--src/lib/stream/chacha/chacha.h10
-rw-r--r--src/lib/stream/chacha/chacha_sse2/chacha_sse2.cpp259
-rw-r--r--src/lib/stream/chacha/chacha_sse2/info.txt3
-rw-r--r--src/lib/stream/stream_cipher.h6
-rw-r--r--src/lib/tls/msg_client_hello.cpp40
-rw-r--r--src/lib/tls/tls_extensions.cpp21
-rw-r--r--src/lib/tls/tls_extensions.h9
-rw-r--r--src/lib/tls/tls_messages.h14
-rw-r--r--src/lib/tls/tls_server.cpp36
-rw-r--r--src/lib/utils/cpuid.cpp29
-rw-r--r--src/lib/utils/cpuid.h114
-rwxr-xr-xsrc/scripts/ci/travis/build.sh7
-rw-r--r--src/tests/data/aead/eax.vec512
-rw-r--r--src/tests/data/aead/gcm.vec3
-rw-r--r--src/tests/data/block/aes.vec3
-rw-r--r--src/tests/data/block/idea.vec3
-rw-r--r--src/tests/data/block/mars.vec4337
-rw-r--r--src/tests/data/block/noekeon.vec3
-rw-r--r--src/tests/data/block/rc2.vec117
-rw-r--r--src/tests/data/block/rc5.vec350
-rw-r--r--src/tests/data/block/rc6.vec4877
-rw-r--r--src/tests/data/block/safer.vec49
-rw-r--r--src/tests/data/block/serpent.vec3
-rw-r--r--src/tests/data/block/tea.vec153
-rw-r--r--src/tests/data/block/threefish.vec3
-rw-r--r--src/tests/data/fpe_fe1.vec14
-rw-r--r--src/tests/data/hash/has160.vec22
-rw-r--r--src/tests/data/hash/md2.vec226
-rw-r--r--src/tests/data/hash/parallel.vec3
-rw-r--r--src/tests/data/hash/ripemd128.vec24
-rw-r--r--src/tests/data/hash/sha1.vec2
-rw-r--r--src/tests/data/kdf/tls_prf.vec34
-rw-r--r--src/tests/data/mac/hmac.vec42
-rw-r--r--src/tests/data/modes/cbc.vec13
-rw-r--r--src/tests/data/modes/ecb.vec156
-rw-r--r--src/tests/data/pbkdf/pbkdf1.vec25
-rw-r--r--src/tests/data/pubkey/newhope.vec6003
-rw-r--r--src/tests/data/pubkey/nr.vec108
-rw-r--r--src/tests/data/pubkey/rsa_sig.vec35
-rw-r--r--src/tests/data/pubkey/rw_sig.vec114
-rw-r--r--src/tests/data/pubkey/rw_verify.vec45
-rw-r--r--src/tests/data/stream/chacha.vec103
-rw-r--r--src/tests/data/stream/ctr.vec286
-rw-r--r--src/tests/data/stream/salsa20.vec3
-rw-r--r--src/tests/main.cpp20
-rw-r--r--src/tests/test_block.cpp8
-rw-r--r--src/tests/test_fpe.cpp49
-rw-r--r--src/tests/test_hash.cpp8
-rw-r--r--src/tests/test_mac.cpp9
-rw-r--r--src/tests/test_modes.cpp1
-rw-r--r--src/tests/test_newhope.cpp134
-rw-r--r--src/tests/test_nr.cpp69
-rw-r--r--src/tests/test_rw.cpp74
-rw-r--r--src/tests/test_stream.cpp15
-rw-r--r--src/tests/tests.cpp117
-rw-r--r--src/tests/tests.h5
-rw-r--r--src/tests/unit_tls.cpp2
-rw-r--r--src/tests/unit_x509.cpp67
-rw-r--r--tls-policy/BSI_TR-02102-2.txt1
168 files changed, 8732 insertions, 15920 deletions
diff --git a/configure.py b/configure.py
index 5ab812fad..037d47d54 100755
--- a/configure.py
+++ b/configure.py
@@ -289,11 +289,15 @@ def process_command_line(args):
build_group.add_option('--gen-amalgamation', dest='gen_amalgamation',
default=False, action='store_true',
- help='generate amalgamation files')
+ help='generate amalgamation files and build without amalgamation (removed)')
build_group.add_option('--via-amalgamation', dest='via_amalgamation',
default=False, action='store_true',
- help='build via amalgamation')
+ help='build via amalgamation (deprecated, use --amalgamation)')
+
+ build_group.add_option('--amalgamation', dest='amalgamation',
+ default=False, action='store_true',
+ help='generate amalgamation files and build via amalgamation')
build_group.add_option('--single-amalgamation-file',
default=False, action='store_true',
@@ -2001,8 +2005,12 @@ def main(argv = None):
logging.info('Found sphinx-build (use --without-sphinx to disable)')
options.with_sphinx = True
+ if options.gen_amalgamation:
+ raise Exception("--gen-amalgamation was removed. Migrate to --amalgamation.")
+
if options.via_amalgamation:
- options.gen_amalgamation = True
+ logging.warn("--via-amalgamation is deprecated. Use --amalgamation.")
+ options.amalgamation = True
if options.build_shared_lib and not osinfo.building_shared_supported:
raise Exception('Botan does not support building as shared library on the target os. '
@@ -2112,11 +2120,10 @@ def main(argv = None):
with open(os.path.join(build_config.build_dir, 'build_config.py'), 'w') as f:
f.write(str(template_vars))
- if options.gen_amalgamation:
- fs = generate_amalgamation(build_config, options)
- if options.via_amalgamation:
- build_config.build_sources = fs
- gen_makefile_lists(template_vars, build_config, options, using_mods, cc, arch, osinfo)
+ if options.amalgamation:
+ amalgamation_cpp_files = generate_amalgamation(build_config, options)
+ build_config.build_sources = amalgamation_cpp_files
+ gen_makefile_lists(template_vars, build_config, options, using_mods, cc, arch, osinfo)
write_template(template_vars['makefile_path'], makefile_template)
diff --git a/doc/deprecated.txt b/doc/deprecated.txt
index d62954d1d..ff89a85d2 100644
--- a/doc/deprecated.txt
+++ b/doc/deprecated.txt
@@ -3,17 +3,7 @@ Currently deprecated:
- PRNGs X9.31 (no longer approved) and HMAC_RNG (non-standard)
Use HMAC_DRBG
-- ECB mode for block ciphers
-
-- Rabin-Williams signatures
-
-- Nyberg-Rueppel signatures
-
-- MARS, RC2, RC5, RC6, SAFER, TEA
-
-- ECB Cipher_Mode
-
-- MD2, HAS-160, RIPEMD-128
+- ECB Cipher_Mode for block ciphers
- 3DES and SEED ciphersuites in TLS
diff --git a/doc/manual/rng.rst b/doc/manual/rng.rst
index 7eb229a5e..ba838ce8e 100644
--- a/doc/manual/rng.rst
+++ b/doc/manual/rng.rst
@@ -25,6 +25,10 @@ The major interfaces are
into the state of the RNG. The additional input could be anything which
parameterizes this request.
+.. cpp:function:: void RandomNumberGenerator::randomize_with_ts_input(byte* data, size_t length)
+
+ Creates a buffer with some timestamp values and calls ``randomize_with_input``
+
.. cpp:function:: byte RandomNumberGenerator::next_byte()
Generates a single random byte and returns it. Note that calling this
@@ -40,24 +44,39 @@ HMAC_DRBG
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
HMAC DRBG is a random number generator designed by NIST and specified
-in SP 800-90A. It can be instantiated with any hash function but is
-typically used with SHA-256, SHA-384, or SHA-512.
+in SP 800-90A. It seems to be the most conservative generator of the
+NIST approved options.
-HMAC DRBG seems to be the most conservative generator of the NIST
-approved options.
+It can be instantiated with any HMAC but is typically used with
+SHA-256, SHA-384, or SHA-512, as these are the hash functions approved
+for this use by NIST.
System_RNG
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
In ``system_rng.h``, objects of ``System_RNG`` reference a single
-(process global) reference to the system PRNG (/dev/urandom or
-CryptGenRandom).
+(process global) reference to the system PRNG (such as
+``/dev/urandom`` or ``CryptGenRandom``).
+
+You can also use the function ``system_rng()`` which returns a
+reference to the global handle to the system RNG.
AutoSeeded_RNG
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-This instantiates a new instance of a userspace PRNG, seeds it with
-a default entropy pool.
+AutoSeeded_RNG is type naming a 'best available' userspace PRNG. The
+exact definition of this has changed over time and may change in the
+future, fortunately there is no compatability concerns when changing
+such an RNG.
+
+Note well: like most other classes in Botan, it is not safe to share
+an instance of ``AutoSeeded_RNG`` among multiple threads without
+serialization.
+
+The current version uses the HMAC_DRBG with SHA-384. The initial seed
+is generated either by the system PRNG (if available) or a default set
+of entropy sources. These are also used for periodic reseeding of the
+RNG state.
ANSI X9.31
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
diff --git a/doc/news.rst b/doc/news.rst
index e27ae6593..012ad81fa 100644
--- a/doc/news.rst
+++ b/doc/news.rst
@@ -4,15 +4,51 @@ Release Notes
Version 1.11.32, Not Yet Released
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-* Add support for TLS Encrypt-then-MAC extension (GH #492 and #578)
- which fixes the known issues in the TLS CBC-HMAC construction.
+* Add support for the NewHope Ring-LWE key encapsulation algorithm. This scheme
+ provides an estimated ~200 bit security level against a quantum attacker while
+ also being very fast and requiring only modest message sizes of 1824 and 2048
+ bytes for initiator and responder, resp. This version is tested as having
+ bit-for-bit identical output as the reference implementation by the authors.
-* Add a new TLS Callbacks interface. Compatability with previous
- versions is maintained. GH #457 and #567
+ Be warned that NewHope is still a very new scheme and may yet fall to analysis.
+ For best assurance, it should be used only in combination with an existing key
+ exchange mechanism such as ECDH.
+
+* Add support for TLS Encrypt-then-MAC extension (GH #492 and #578) which fixes
+ the known issues in the TLS CBC-HMAC construction.
+
+* Add a new TLS Callbacks interface. Compatability with previous versions is
+ maintained. The documentation has been updated accordingly. GH #457 and #567
+
+* How the library presents optimized algorithm implementations has changed. For
+ example with the algorithm AES-128, previously there were three BlockCipher
+ classes AES_128, AES_128_SSSE3, and AES_128_NI which used (resp) a table-based
+ implementation vulnerable to side channels, a constant time version using
+ SSSE3 SIMD extensions on modern x86, and x86 AES-NI instructions. Using the
+ correct version at runtime required using `BlockCipher::create`. Now, only the
+ class AES_128 is presented, and the best available version is always used
+ based on CPUID checks. The tests have been extended to selectively disable
+ CPUID bits to ensure all available versions are tested.
+
+ Removes API classes AES_128_NI, AES_192_NI, AES_256_NI, AES_128_SSSE3,
+ AES_192_SSSE3 AES_256_SSSE3, IDEA_SSE2, Noekeon_SIMD, Serpent_SIMD,
+ Threefish_512_AVX2, SHA_160_SSE2
+
+ GH #477 #623
+
+* The deprecated algorithms Rabin-Williams, Nyberg-Rueppel, MARS, RC2, RC5, RC6,
+ SAFER-SK, TEA, MD2, HAS-160, and RIPEMD-128 have been removed. GH #580
+
+* SSE2 optimizations for ChaCha, 60% faster on both Westmere and Skylake (GH #616)
* The HMAC_RNG constructor added in 1.11.31 that took both an RNG and an
entropy source list ignored the entropy sources.
+* The configure option ``--via-algamation`` was renamed to ``--amalgamation``.
+ The configure option ``--gen-algamation`` was removed. It did generate
+ amalgamations but build Botan without amalgamation. Users should migrate to
+ ``--amalgamation``. GH #621
+
Version 1.11.31, 2016-08-30
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
@@ -67,6 +103,9 @@ Version 1.11.31, 2016-08-30
polling code. New constructors allow specifying the reseed RNG and/or entropy
sources. (GH #520)
+* The `hres_timer` entropy source module has been removed. Timestamp inputs to
+ the RNG are now handled as additional_data inputs to HMAC_DRBG.
+
* Add RDRAND_RNG which directly exposes the CPU RNG (GH #543)
* Add PKCS #1 v1.5 id for SHA-512/256 (GH #554)
diff --git a/doc/todo.rst b/doc/todo.rst
index f4720f3ba..dfe7d2f90 100644
--- a/doc/todo.rst
+++ b/doc/todo.rst
@@ -7,25 +7,50 @@ ticket on GitHub to make sure you're on the right track.
Request a new feature by opening a pull request to update this file.
-Documentation
+Ciphers, Hashes, PBKDF
----------------------------------------
-* TPM (no docs)
-* PKCS #11 (no docs)
-* X.509 certs, path validation
-* Specific docs covering one major topic (RSA, ECDSA, AES/GCM, ...)
+* Bitsliced AES or Camellia
+* Compressed tables for AES
+* AES using vector permutes for NEON or AltiVec
+* Camellia using AES-NI
+* Serpent using AVX2 or SSSE3/pshufb
+* ChaCha20 using AVX2, NEON
+* ARIA block cipher (RFCs 5794 and 6209)
+* ASCON 1.2 (CAESAR)
+* NORX-64 3.0 (CAESAR)
+* scrypt PBKDF
+* Argon2 PBKDF (draft-irtf-cfrg-argon2)
+* bcrypt PBKDF
+* Skein-MAC
+* Extend Cascade_Cipher to support arbitrary number of ciphers
-CLI
+Public Key Crypto, Math
----------------------------------------
-* Rewrite `tls_client` and `tls_server` to use asio. See `tls_proxy`
- for an example
-* `encrypt` / `decrypt` tools providing password and/or public key
- based file encryption
-* Make help output more helpful
-* More microbenchmarks in `speed`: modular exponentiation, ECC point
- multiplication, other BigInt operations
-* Compute cycles/byte estimates for benchmark output
+* XMSS (draft-irtf-cfrg-xmss-hash-based-signatures)
+* SPHINCS-256
+* EdDSA (GH #283)
+* Ed448-Goldilocks
+* FHMQV
+* Support mixed hashes and non-empty param strings in OAEP
+* wNAF ECC point multiply
+* Fast new implementations/algorithms for ECC point operations,
+ Montgomery multiplication, multi-exponentiation, ...
+* Some PK operations, especially RSA, have extensive computations per
+ operation setup but many of the computed values depend only on the
+ key and could be shared across operation objects.
+
+External Providers, Hardware Support
+----------------------------------------
+
+* Extend OpenSSL provider (cipher modes, HMAC, CMAC)
+* /dev/crypto provider (ciphers, hashes)
+* Windows CryptoAPI provider (ciphers, hashes, RSA)
+* Apple CommonCrypto
+* ARMv8-A crypto extensions (AES, SHA-2)
+* POWER8 crypto extensions (AES, SHA-2)
+* Better TPM support: NVRAM, PCR measurements, sealing
TLS
----------------------------------------
@@ -70,16 +95,13 @@ New Protocols / Formats
- Subset #2: Process OpenPGP public keys
- Subset #3: Verification of OpenPGP signatures
-Accelerators / backends
-----------------------------------------
+Compat Headers
+----------------
-* Extend OpenSSL provider (cipher modes, HMAC)
-* /dev/crypto
-* Windows CryptoAPI (ciphers, hashes, RSA)
-* Apple CommonCrypto
-* ARMv8-A crypto extensions (AES, SHA-2)
-* POWER8 crypto extensions (AES, SHA-2)
-* Better TPM support: NVRAM, PCR measurements, sealing
+* Write an OpenSSL-compatible TLS API stub so existing applications
+ can be converted more easily. Would require some networking code
+ since the OpenSSL API handles both crypto and IO. Use Asio, since it
+ is expected to be the base of future C++ standard network library.
FFI (Python, OCaml)
----------------------------------------
@@ -88,46 +110,36 @@ FFI (Python, OCaml)
* Expose TLS
* Write a CLI or HTTPS client in Python
-Symmetric Algorithms, Hashes, ...
+Library Infrastructure
----------------------------------------
-* Bitsliced AES or Camellia
-* Compressed tables for AES
-* AES using vector permutes for NEON, AltiVec
-* Use ARMv8 crypto: AES, SHA
-* Camellia with AES-NI
-* Serpent using AVX2
-* Serpent using SSSE3 pshufb for sboxes
-* ChaCha20 using SSE2 or AVX2
-* scrypt
-* Argon2 (draft-irtf-cfrg-argon2)
-* bcrypt PBKDF
-* Skein-MAC
-* ARIA (Korean block cipher, RFCs 5794 and 6209)
-* Extend Cascade_Cipher to support arbitrary number of ciphers
+* Add logging callbacks
+* Add latency tracing framework
-Public Key Crypto, Math
+Build/Test
----------------------------------------
-* XMSS (draft-irtf-cfrg-xmss-hash-based-signatures)
-* SPHINCS-256
-* EdDSA (GH #283)
-* Ed448-Goldilocks
-* FHMQV
-* Support mixed hashes and non-empty param strings in OAEP
-* Fast new implementations/algorithms for ECC point operations,
- Montgomery multiplication, multi-exponentiation, ...
-* Some PK operations, especially RSA, have extensive computations per
- operation setup but many of the computed values depend only on the
- key and could be shared across operation objects.
+* Code signing for Windows installers
+* Test runner python script that captures backtraces and other
+ debug info during CI
-Library Infrastructure
+CLI
----------------------------------------
-* Add logging callbacks
-* Add latency tracing framework
+* Rewrite `tls_client` and `tls_server` to use asio. See `tls_proxy`
+ for an example
+* `encrypt` / `decrypt` tools providing password and/or public key
+ based file encryption
+* Make help output more helpful
+* More microbenchmarks in `speed`: modular exponentiation, ECC point
+ multiplication, other BigInt operations
+* Compute cycles/byte estimates for benchmark output
-Build
+Documentation
----------------------------------------
-* Code signing for Windows installers
+* TPM (no docs)
+* PKCS #11 (no docs)
+* X.509 certs, path validation
+* Specific docs covering one major topic (RSA, ECDSA, AES/GCM, ...)
+* Some howto style docs (setting up CA, ...)
diff --git a/readme.rst b/readme.rst
index 35f58d159..a5cbf914e 100644
--- a/readme.rst
+++ b/readme.rst
@@ -165,12 +165,9 @@ Public Key Cryptography
* RSA signatures and encryption
* DH and ECDH key agreement
-* DSA and ECDSA signatures
-* Quantum computer resistant McEliece KEM scheme
-* GOST-34.10-2001
+* Signature schemes DSA, ECDSA, ECGDSA, ECKCDSA, GOST 34.10-2001
+* Post-quantum KEM schemes McEliece (code based) and NewHope (Ring-LWE)
* ElGamal encryption
-* Rabin-Williams signatures (deprecated)
-* Nyberg-Rueppel signatures (deprecated)
* Padding schemes OAEP, PSS, PKCS #1 v1.5, X9.31
Ciphers and cipher modes
@@ -179,13 +176,12 @@ Ciphers and cipher modes
* Authenticated cipher modes EAX, OCB, GCM, SIV, CCM, and ChaCha20Poly1305
* Unauthenticated cipher modes CTR, CBC, XTS, CFB, OFB, and ECB
* AES (including constant time SSSE3 and AES-NI versions)
-* AES candidates Serpent, Twofish, MARS, CAST-256, RC6
+* AES candidates Serpent, Twofish, CAST-256
* Stream ciphers Salsa20/XSalsa20, ChaCha20, and RC4
* DES, 3DES and DESX
-* Threefish-512, Noekeon, Blowfish, CAST-128, IDEA
+* Threefish-512, Noekeon, Blowfish, CAST-128, IDEA, XTEA
* National/telecom block ciphers SEED, KASUMI, MISTY1, GOST 28147
* Large block cipher construction Lion
-* Deprecated ciphers TEA, XTEA, RC2, RC5, SAFER-SK
Hash functions and MACs
----------------------------------------
@@ -198,11 +194,11 @@ Hash functions and MACs
* Hash function combiners (Parallel and Comb4P)
* Non-cryptographic checksums Adler32, CRC24, CRC32
* Obsolete algorithms MD5, MD4, CBC-MAC, X9.19 DES-MAC
-* Deprecated hashes MD2, HAS-160, RIPEMD-128
Other Useful Things
----------------------------------------
+* Interfaces for accessing PKCS #11 and TPM hardware
* Key derivation functions for passwords, including PBKDF2
* Password hashing functions, including bcrypt and a PBKDF based scheme
* General key derivation functions KDF1 and KDF2 from IEEE 1363
diff --git a/src/build-data/cc/gcc.txt b/src/build-data/cc/gcc.txt
index 7d795d4e1..b086583ff 100644
--- a/src/build-data/cc/gcc.txt
+++ b/src/build-data/cc/gcc.txt
@@ -12,7 +12,7 @@ lang_flags "-std=c++11 -D_REENTRANT"
# This should only contain flags which are included in GCC 4.8
warning_flags "-Wall -Wextra -Wpedantic -Wstrict-aliasing -Wstrict-overflow=5 -Wcast-align -Wmissing-declarations -Wpointer-arith -Wcast-qual -Wzero-as-null-pointer-constant -Wnon-virtual-dtor"
-maintainer_warning_flags "-Wold-style-cast -Wsuggest-override -Wshadow -Werror -Wno-error=old-style-cast -Wno-error=zero-as-null-pointer-constant -Wno-error=unused-parameter -Wno-error=unused-variable -Wno-error=strict-overflow -Wno-error=deprecated-declarations"
+maintainer_warning_flags "-Wold-style-cast -Wsuggest-override -Wshadow -Werror -Wno-error=old-style-cast -Wno-error=zero-as-null-pointer-constant -Wno-error=strict-overflow -Wno-error=deprecated-declarations"
compile_flags "-c"
debug_info_flags "-g"
diff --git a/src/build-data/policy/bsi.txt b/src/build-data/policy/bsi.txt
index c4ed27648..16671fd13 100644
--- a/src/build-data/policy/bsi.txt
+++ b/src/build-data/policy/bsi.txt
@@ -83,23 +83,16 @@ idea
idea_sse2
kasumi
lion
-mars
misty1
noekeon
noekeon_simd
-rc2
-rc5
-rc6
-safer
seed
serpent
serpent_simd
-tea
threefish
threefish_avx2
twofish
xtea
-xtea_simd
# modes
ccm
@@ -127,9 +120,7 @@ elgamal
gost_3410
mce
mceies
-nr
rfc6979
-rw
# pk_pad
#eme_pkcs1 // needed for tls
@@ -142,11 +133,8 @@ emsa_x931
blake2
comb4p
gost_3411
-has160
-md2
md4
#md5 // needed for tls
-rmd128
rmd160
#sha1 // needed for tls
#sha1_sse2 // needed for tls
diff --git a/src/build-data/policy/modern.txt b/src/build-data/policy/modern.txt
index fa4b45d74..2bcd64066 100644
--- a/src/build-data/policy/modern.txt
+++ b/src/build-data/policy/modern.txt
@@ -80,27 +80,17 @@ idea
idea_sse2
kasumi
lion
-mars
misty1
-rc2
rc4
-rc5
-rc6
-safer
seed
-tea
xtea
-xtea_simd
cbc_mac
x919_mac
# MD5 and SHA1 are broken but not prohibited. They are widely in use
# in non-crypto contexts and are required by TLS currently
-md2
md4
-rmd128
-has160
gost_3411
cfb
@@ -108,8 +98,6 @@ ecb
ofb
elgamal
-rw
-nr
gost_3410
emsa_x931
@@ -124,4 +112,3 @@ cryptobox
egd
unix_procs
</prohibited>
-
diff --git a/src/cli/pubkey.cpp b/src/cli/pubkey.cpp
index a482b6e46..456ebbc8b 100644
--- a/src/cli/pubkey.cpp
+++ b/src/cli/pubkey.cpp
@@ -156,8 +156,6 @@ std::string algo_default_emsa(const std::string& key)
return "EMSA4"; // PSS
else if(key == "ECDSA" || key == "DSA")
return "EMSA1";
- else if(key == "RW")
- return "EMSA2";
else
return "EMSA1";
}
diff --git a/src/cli/speed.cpp b/src/cli/speed.cpp
index 222a98d3f..1323fbf3a 100644
--- a/src/cli/speed.cpp
+++ b/src/cli/speed.cpp
@@ -83,6 +83,11 @@
#include <botan/mceliece.h>
#endif
+#if defined(BOTAN_HAS_NEWHOPE) && defined(BOTAN_HAS_CHACHA)
+ #include <botan/newhope.h>
+ #include <botan/chacha.h>
+#endif
+
namespace Botan_CLI {
namespace {
@@ -306,6 +311,7 @@ std::vector<std::string> default_benchmark_list()
"ECDSA",
"Curve25519",
"McEliece",
+ "NEWHOPE"
};
}
@@ -396,6 +402,12 @@ class Speed final : public Command
bench_mceliece(provider, msec);
}
#endif
+#if defined(BOTAN_HAS_NEWHOPE) && defined(BOTAN_HAS_CHACHA)
+ else if(algo == "NEWHOPE")
+ {
+ bench_newhope(provider, msec);
+ }
+#endif
#if defined(BOTAN_HAS_NUMBERTHEORY)
else if(algo == "random_prime")
@@ -521,10 +533,11 @@ class Speed final : public Command
Timer encrypt_timer(cipher.name(), provider, "encrypt", buffer.size());
+ const Botan::SymmetricKey key(rng(), cipher.maximum_keylength());
+ cipher.set_key(key);
+
while(encrypt_timer.under(runtime))
{
- const Botan::SymmetricKey key(rng(), cipher.maximum_keylength());
- cipher.set_key(key);
encrypt_timer.run([&] { cipher.encipher(buffer); });
}
@@ -1078,6 +1091,71 @@ class Speed final : public Command
}
#endif
+#if defined(BOTAN_HAS_NEWHOPE) && defined(BOTAN_HAS_CHACHA)
+ void bench_newhope(const std::string& /*provider*/,
+ std::chrono::milliseconds msec)
+ {
+ const std::string nm = "NEWHOPE";
+
+ Timer keygen_timer(nm, "", "keygen");
+ Timer shareda_timer(nm, "", "shareda");
+ Timer sharedb_timer(nm, "", "sharedb");
+
+ class ChaCha20_RNG : public Botan::RandomNumberGenerator
+ {
+ public:
+ std::string name() const override { return "ChaCha20_RNG"; }
+ void clear() override { /* ignored */ }
+
+ void randomize(uint8_t out[], size_t len) override
+ {
+ Botan::clear_mem(out, len);
+ m_chacha.cipher1(out, len);
+ }
+
+ bool is_seeded() const override { return true; }
+
+ void add_entropy(const uint8_t[], size_t) override { /* ignored */ }
+
+ ChaCha20_RNG(const Botan::secure_vector<uint8_t>& seed)
+ {
+ m_chacha.set_key(seed);
+ }
+
+ private:
+ Botan::ChaCha m_chacha;
+ };
+
+ ChaCha20_RNG nh_rng(rng().random_vec(32));
+
+ while(sharedb_timer.under(msec))
+ {
+ std::vector<uint8_t> send_a(NEWHOPE_SENDABYTES), send_b(NEWHOPE_SENDBBYTES);
+ std::vector<uint8_t> shared_a(32), shared_b(32);
+
+ Botan::newhope_poly sk_a;
+
+ keygen_timer.start();
+ Botan::newhope_keygen(send_a.data(), &sk_a, nh_rng);
+ keygen_timer.stop();
+
+ sharedb_timer.start();
+ Botan::newhope_sharedb(shared_b.data(), send_b.data(), send_a.data(), nh_rng);
+ sharedb_timer.stop();
+
+ shareda_timer.start();
+ Botan::newhope_shareda(shared_a.data(), &sk_a, send_b.data());
+ shareda_timer.stop();
+
+ BOTAN_ASSERT(shared_a == shared_b, "Same derived key");
+ }
+
+ output() << Timer::result_string_ops(keygen_timer);
+ output() << Timer::result_string_ops(shareda_timer);
+ output() << Timer::result_string_ops(sharedb_timer);
+ }
+#endif
+
};
BOTAN_REGISTER_COMMAND("speed", Speed);
diff --git a/src/cli/x509.cpp b/src/cli/x509.cpp
index 665a3ebc5..90979aa53 100644
--- a/src/cli/x509.cpp
+++ b/src/cli/x509.cpp
@@ -30,11 +30,19 @@ class Sign_Cert final : public Command
void go() override
{
Botan::X509_Certificate ca_cert(get_arg("ca_cert"));
+ std::unique_ptr<Botan::PKCS8_PrivateKey> key;
- std::unique_ptr<Botan::PKCS8_PrivateKey> key(
- Botan::PKCS8::load_key(get_arg("ca_key"),
- rng(),
- get_arg("ca_key_pass")));
+ if(flag_set("ca_key_pass"))
+ {
+ key.reset(Botan::PKCS8::load_key(get_arg("ca_key"),
+ rng(),
+ get_arg("ca_key_pass")));
+ }
+ else
+ {
+ key.reset(Botan::PKCS8::load_key(get_arg("ca_key"),
+ rng()));
+ }
if(!key)
throw CLI_Error("Failed to load key from " + get_arg("ca_key"));
diff --git a/src/lib/asn1/oid_lookup/default.cpp b/src/lib/asn1/oid_lookup/default.cpp
index 0d64a8bef..6527b3b25 100644
--- a/src/lib/asn1/oid_lookup/default.cpp
+++ b/src/lib/asn1/oid_lookup/default.cpp
@@ -21,8 +21,6 @@ const char* default_oid_list()
"1.2.840.10040.4.1 = DSA" "\n"
"1.2.840.10046.2.1 = DH" "\n"
"1.3.6.1.4.1.3029.1.2.1 = ElGamal" "\n"
- "1.3.6.1.4.1.25258.1.1 = RW" "\n"
- "1.3.6.1.4.1.25258.1.2 = NR" "\n"
"1.3.6.1.4.1.25258.1.3 = McEliece" "\n"
"1.3.6.1.4.1.25258.1.4 = Curve25519" "\n"
@@ -93,7 +91,6 @@ const char* default_oid_list()
"1.2.840.113549.1.9.16.3.8 = Compression.Zlib" "\n"
"1.2.840.113549.1.1.1 = RSA/EME-PKCS1-v1_5" "\n"
- "1.2.840.113549.1.1.2 = RSA/EMSA3(MD2)" "\n"
"1.2.840.113549.1.1.4 = RSA/EMSA3(MD5)" "\n"
"1.2.840.113549.1.1.5 = RSA/EMSA3(SHA-160)" "\n"
"1.2.840.113549.1.1.11 = RSA/EMSA3(SHA-256)" "\n"
@@ -124,27 +121,6 @@ const char* default_oid_list()
"1.2.643.2.2.3 = GOST-34.10/EMSA1(GOST-R-34.11-94)" "\n"
- "1.3.6.1.4.1.25258.2.1.1.1 = RW/EMSA2(RIPEMD-160)" "\n"
- "1.3.6.1.4.1.25258.2.1.1.2 = RW/EMSA2(SHA-160)" "\n"
- "1.3.6.1.4.1.25258.2.1.1.3 = RW/EMSA2(SHA-224)" "\n"
- "1.3.6.1.4.1.25258.2.1.1.4 = RW/EMSA2(SHA-256)" "\n"
- "1.3.6.1.4.1.25258.2.1.1.5 = RW/EMSA2(SHA-384)" "\n"
- "1.3.6.1.4.1.25258.2.1.1.6 = RW/EMSA2(SHA-512)" "\n"
-
- "1.3.6.1.4.1.25258.2.1.2.1 = RW/EMSA4(RIPEMD-160)" "\n"
- "1.3.6.1.4.1.25258.2.1.2.2 = RW/EMSA4(SHA-160)" "\n"
- "1.3.6.1.4.1.25258.2.1.2.3 = RW/EMSA4(SHA-224)" "\n"
- "1.3.6.1.4.1.25258.2.1.2.4 = RW/EMSA4(SHA-256)" "\n"
- "1.3.6.1.4.1.25258.2.1.2.5 = RW/EMSA4(SHA-384)" "\n"
- "1.3.6.1.4.1.25258.2.1.2.6 = RW/EMSA4(SHA-512)" "\n"
-
- "1.3.6.1.4.1.25258.2.2.1.1 = NR/EMSA2(RIPEMD-160)" "\n"
- "1.3.6.1.4.1.25258.2.2.1.2 = NR/EMSA2(SHA-160)" "\n"
- "1.3.6.1.4.1.25258.2.2.1.3 = NR/EMSA2(SHA-224)" "\n"
- "1.3.6.1.4.1.25258.2.2.1.4 = NR/EMSA2(SHA-256)" "\n"
- "1.3.6.1.4.1.25258.2.2.1.5 = NR/EMSA2(SHA-384)" "\n"
- "1.3.6.1.4.1.25258.2.2.1.6 = NR/EMSA2(SHA-512)" "\n"
-
"2.5.4.3 = X520.CommonName" "\n"
"2.5.4.4 = X520.Surname" "\n"
"2.5.4.5 = X520.SerialNumber" "\n"
diff --git a/src/lib/base/secmem.h b/src/lib/base/secmem.h
index 01024a104..ff76e9429 100644
--- a/src/lib/base/secmem.h
+++ b/src/lib/base/secmem.h
@@ -12,6 +12,7 @@
#include <algorithm>
#include <vector>
#include <deque>
+#include <type_traits>
#if defined(BOTAN_HAS_LOCKING_ALLOCATOR)
#include <botan/locking_allocator.h>
@@ -23,6 +24,8 @@ template<typename T>
class secure_allocator
{
public:
+ static_assert(std::is_integral<T>::value, "secure_allocator supports only integer types");
+
typedef T value_type;
typedef T* pointer;
diff --git a/src/lib/block/aes/aes.cpp b/src/lib/block/aes/aes.cpp
index aac277b4f..39f5bd0db 100644
--- a/src/lib/block/aes/aes.cpp
+++ b/src/lib/block/aes/aes.cpp
@@ -122,7 +122,7 @@ const std::vector<u32bit>& AES_TE()
return TE;
};
- static std::vector<u32bit> TE = compute_TE();
+ static const std::vector<u32bit> TE = compute_TE();
return TE;
}
@@ -142,7 +142,7 @@ const std::vector<u32bit>& AES_TD()
}
return TD;
};
- static std::vector<u32bit> TD = compute_TD();
+ static const std::vector<u32bit> TD = compute_TD();
return TD;
}
@@ -416,20 +416,85 @@ void aes_key_schedule(const byte key[], size_t length,
copy_mem(DK.data(), XDK.data(), DK.size());
}
+const char* aes_provider()
+ {
+#if defined(BOTAN_HAS_AES_NI)
+ if(CPUID::has_aes_ni())
+ {
+ return "aesni";
+ }
+#endif
+
+#if defined(BOTAN_HAS_AES_SSSE3)
+ if(CPUID::has_ssse3())
+ {
+ return "ssse3";
+ }
+#endif
+
+ return "base";
+ }
+
}
+std::string AES_128::provider() const { return aes_provider(); }
+std::string AES_192::provider() const { return aes_provider(); }
+std::string AES_256::provider() const { return aes_provider(); }
+
void AES_128::encrypt_n(const byte in[], byte out[], size_t blocks) const
{
+#if defined(BOTAN_HAS_AES_NI)
+ if(CPUID::has_aes_ni())
+ {
+ return aesni_encrypt_n(in, out, blocks);
+ }
+#endif
+
+#if defined(BOTAN_HAS_AES_SSSE3)
+ if(CPUID::has_ssse3())
+ {
+ return ssse3_encrypt_n(in, out, blocks);
+ }
+#endif
+
aes_encrypt_n(in, out, blocks, m_EK, m_ME);
}
void AES_128::decrypt_n(const byte in[], byte out[], size_t blocks) const
{
+#if defined(BOTAN_HAS_AES_NI)
+ if(CPUID::has_aes_ni())
+ {
+ return aesni_decrypt_n(in, out, blocks);
+ }
+#endif
+
+#if defined(BOTAN_HAS_AES_SSSE3)
+ if(CPUID::has_ssse3())
+ {
+ return ssse3_decrypt_n(in, out, blocks);
+ }
+#endif
+
aes_decrypt_n(in, out, blocks, m_DK, m_MD);
}
void AES_128::key_schedule(const byte key[], size_t length)
{
+#if defined(BOTAN_HAS_AES_NI)
+ if(CPUID::has_aes_ni())
+ {
+ return aesni_key_schedule(key, length);
+ }
+#endif
+
+#if defined(BOTAN_HAS_AES_SSSE3)
+ if(CPUID::has_ssse3())
+ {
+ return ssse3_key_schedule(key, length);
+ }
+#endif
+
aes_key_schedule(key, length, m_EK, m_DK, m_ME, m_MD);
}
@@ -443,16 +508,58 @@ void AES_128::clear()
void AES_192::encrypt_n(const byte in[], byte out[], size_t blocks) const
{
+#if defined(BOTAN_HAS_AES_NI)
+ if(CPUID::has_aes_ni())
+ {
+ return aesni_encrypt_n(in, out, blocks);
+ }
+#endif
+
+#if defined(BOTAN_HAS_AES_SSSE3)
+ if(CPUID::has_ssse3())
+ {
+ return ssse3_encrypt_n(in, out, blocks);
+ }
+#endif
+
aes_encrypt_n(in, out, blocks, m_EK, m_ME);
}
void AES_192::decrypt_n(const byte in[], byte out[], size_t blocks) const
{
+#if defined(BOTAN_HAS_AES_NI)
+ if(CPUID::has_aes_ni())
+ {
+ return aesni_decrypt_n(in, out, blocks);
+ }
+#endif
+
+#if defined(BOTAN_HAS_AES_SSSE3)
+ if(CPUID::has_ssse3())
+ {
+ return ssse3_decrypt_n(in, out, blocks);
+ }
+#endif
+
aes_decrypt_n(in, out, blocks, m_DK, m_MD);
}
void AES_192::key_schedule(const byte key[], size_t length)
{
+#if defined(BOTAN_HAS_AES_NI)
+ if(CPUID::has_aes_ni())
+ {
+ return aesni_key_schedule(key, length);
+ }
+#endif
+
+#if defined(BOTAN_HAS_AES_SSSE3)
+ if(CPUID::has_ssse3())
+ {
+ return ssse3_key_schedule(key, length);
+ }
+#endif
+
aes_key_schedule(key, length, m_EK, m_DK, m_ME, m_MD);
}
@@ -466,16 +573,58 @@ void AES_192::clear()
void AES_256::encrypt_n(const byte in[], byte out[], size_t blocks) const
{
+#if defined(BOTAN_HAS_AES_NI)
+ if(CPUID::has_aes_ni())
+ {
+ return aesni_encrypt_n(in, out, blocks);
+ }
+#endif
+
+#if defined(BOTAN_HAS_AES_SSSE3)
+ if(CPUID::has_ssse3())
+ {
+ return ssse3_encrypt_n(in, out, blocks);
+ }
+#endif
+
aes_encrypt_n(in, out, blocks, m_EK, m_ME);
}
void AES_256::decrypt_n(const byte in[], byte out[], size_t blocks) const
{
+#if defined(BOTAN_HAS_AES_NI)
+ if(CPUID::has_aes_ni())
+ {
+ return aesni_decrypt_n(in, out, blocks);
+ }
+#endif
+
+#if defined(BOTAN_HAS_AES_SSSE3)
+ if(CPUID::has_ssse3())
+ {
+ return ssse3_decrypt_n(in, out, blocks);
+ }
+#endif
+
aes_decrypt_n(in, out, blocks, m_DK, m_MD);
}
void AES_256::key_schedule(const byte key[], size_t length)
{
+#if defined(BOTAN_HAS_AES_NI)
+ if(CPUID::has_aes_ni())
+ {
+ return aesni_key_schedule(key, length);
+ }
+#endif
+
+#if defined(BOTAN_HAS_AES_SSSE3)
+ if(CPUID::has_ssse3())
+ {
+ return ssse3_key_schedule(key, length);
+ }
+#endif
+
aes_key_schedule(key, length, m_EK, m_DK, m_ME, m_MD);
}
diff --git a/src/lib/block/aes/aes.h b/src/lib/block/aes/aes.h
index a058adcf1..6bd38cada 100644
--- a/src/lib/block/aes/aes.h
+++ b/src/lib/block/aes/aes.h
@@ -23,11 +23,24 @@ class BOTAN_DLL AES_128 final : public Block_Cipher_Fixed_Params<16, 16>
void clear() override;
+ std::string provider() const override;
std::string name() const override { return "AES-128"; }
BlockCipher* clone() const override { return new AES_128; }
private:
void key_schedule(const byte key[], size_t length) override;
+#if defined(BOTAN_HAS_AES_SSSE3)
+ void ssse3_encrypt_n(const byte in[], byte out[], size_t blocks) const;
+ void ssse3_decrypt_n(const byte in[], byte out[], size_t blocks) const;
+ void ssse3_key_schedule(const byte key[], size_t length);
+#endif
+
+#if defined(BOTAN_HAS_AES_NI)
+ void aesni_encrypt_n(const byte in[], byte out[], size_t blocks) const;
+ void aesni_decrypt_n(const byte in[], byte out[], size_t blocks) const;
+ void aesni_key_schedule(const byte key[], size_t length);
+#endif
+
secure_vector<u32bit> m_EK, m_DK;
secure_vector<byte> m_ME, m_MD;
};
@@ -43,9 +56,22 @@ class BOTAN_DLL AES_192 final : public Block_Cipher_Fixed_Params<16, 24>
void clear() override;
+ std::string provider() const override;
std::string name() const override { return "AES-192"; }
BlockCipher* clone() const override { return new AES_192; }
private:
+#if defined(BOTAN_HAS_AES_SSSE3)
+ void ssse3_encrypt_n(const byte in[], byte out[], size_t blocks) const;
+ void ssse3_decrypt_n(const byte in[], byte out[], size_t blocks) const;
+ void ssse3_key_schedule(const byte key[], size_t length);
+#endif
+
+#if defined(BOTAN_HAS_AES_NI)
+ void aesni_encrypt_n(const byte in[], byte out[], size_t blocks) const;
+ void aesni_decrypt_n(const byte in[], byte out[], size_t blocks) const;
+ void aesni_key_schedule(const byte key[], size_t length);
+#endif
+
void key_schedule(const byte key[], size_t length) override;
secure_vector<u32bit> m_EK, m_DK;
@@ -63,9 +89,23 @@ class BOTAN_DLL AES_256 final : public Block_Cipher_Fixed_Params<16, 32>
void clear() override;
+ std::string provider() const override;
+
std::string name() const override { return "AES-256"; }
BlockCipher* clone() const override { return new AES_256; }
private:
+#if defined(BOTAN_HAS_AES_SSSE3)
+ void ssse3_encrypt_n(const byte in[], byte out[], size_t blocks) const;
+ void ssse3_decrypt_n(const byte in[], byte out[], size_t blocks) const;
+ void ssse3_key_schedule(const byte key[], size_t length);
+#endif
+
+#if defined(BOTAN_HAS_AES_NI)
+ void aesni_encrypt_n(const byte in[], byte out[], size_t blocks) const;
+ void aesni_decrypt_n(const byte in[], byte out[], size_t blocks) const;
+ void aesni_key_schedule(const byte key[], size_t length);
+#endif
+
void key_schedule(const byte key[], size_t length) override;
secure_vector<u32bit> m_EK, m_DK;
diff --git a/src/lib/block/aes_ni/aes_ni.cpp b/src/lib/block/aes_ni/aes_ni.cpp
index 51b30881f..3377f9d61 100644
--- a/src/lib/block/aes_ni/aes_ni.cpp
+++ b/src/lib/block/aes_ni/aes_ni.cpp
@@ -5,9 +5,8 @@
* Botan is released under the Simplified BSD License (see license.txt)
*/
-#include <botan/aes_ni.h>
+#include <botan/aes.h>
#include <botan/loadstor.h>
-#include <botan/cpuid.h>
#include <wmmintrin.h>
namespace Botan {
@@ -104,7 +103,7 @@ __m128i aes_256_key_expansion(__m128i key, __m128i key2)
/*
* AES-128 Encryption
*/
-void AES_128_NI::encrypt_n(const byte in[], byte out[], size_t blocks) const
+void AES_128::aesni_encrypt_n(const byte in[], byte out[], size_t blocks) const
{
const __m128i* in_mm = reinterpret_cast<const __m128i*>(in);
__m128i* out_mm = reinterpret_cast<__m128i*>(out);
@@ -180,7 +179,7 @@ void AES_128_NI::encrypt_n(const byte in[], byte out[], size_t blocks) const
/*
* AES-128 Decryption
*/
-void AES_128_NI::decrypt_n(const byte in[], byte out[], size_t blocks) const
+void AES_128::aesni_decrypt_n(const byte in[], byte out[], size_t blocks) const
{
const __m128i* in_mm = reinterpret_cast<const __m128i*>(in);
__m128i* out_mm = reinterpret_cast<__m128i*>(out);
@@ -256,7 +255,7 @@ void AES_128_NI::decrypt_n(const byte in[], byte out[], size_t blocks) const
/*
* AES-128 Key Schedule
*/
-void AES_128_NI::key_schedule(const byte key[], size_t)
+void AES_128::aesni_key_schedule(const byte key[], size_t)
{
m_EK.resize(44);
m_DK.resize(44);
@@ -306,18 +305,9 @@ void AES_128_NI::key_schedule(const byte key[], size_t)
}
/*
-* Clear memory of sensitive data
-*/
-void AES_128_NI::clear()
- {
- zap(m_EK);
- zap(m_DK);
- }
-
-/*
* AES-192 Encryption
*/
-void AES_192_NI::encrypt_n(const byte in[], byte out[], size_t blocks) const
+void AES_192::aesni_encrypt_n(const byte in[], byte out[], size_t blocks) const
{
const __m128i* in_mm = reinterpret_cast<const __m128i*>(in);
__m128i* out_mm = reinterpret_cast<__m128i*>(out);
@@ -399,7 +389,7 @@ void AES_192_NI::encrypt_n(const byte in[], byte out[], size_t blocks) const
/*
* AES-192 Decryption
*/
-void AES_192_NI::decrypt_n(const byte in[], byte out[], size_t blocks) const
+void AES_192::aesni_decrypt_n(const byte in[], byte out[], size_t blocks) const
{
const __m128i* in_mm = reinterpret_cast<const __m128i*>(in);
__m128i* out_mm = reinterpret_cast<__m128i*>(out);
@@ -481,7 +471,7 @@ void AES_192_NI::decrypt_n(const byte in[], byte out[], size_t blocks) const
/*
* AES-192 Key Schedule
*/
-void AES_192_NI::key_schedule(const byte key[], size_t)
+void AES_192::aesni_key_schedule(const byte key[], size_t)
{
m_EK.resize(52);
m_DK.resize(52);
@@ -528,18 +518,9 @@ void AES_192_NI::key_schedule(const byte key[], size_t)
}
/*
-* Clear memory of sensitive data
-*/
-void AES_192_NI::clear()
- {
- zap(m_EK);
- zap(m_DK);
- }
-
-/*
* AES-256 Encryption
*/
-void AES_256_NI::encrypt_n(const byte in[], byte out[], size_t blocks) const
+void AES_256::aesni_encrypt_n(const byte in[], byte out[], size_t blocks) const
{
const __m128i* in_mm = reinterpret_cast<const __m128i*>(in);
__m128i* out_mm = reinterpret_cast<__m128i*>(out);
@@ -627,7 +608,7 @@ void AES_256_NI::encrypt_n(const byte in[], byte out[], size_t blocks) const
/*
* AES-256 Decryption
*/
-void AES_256_NI::decrypt_n(const byte in[], byte out[], size_t blocks) const
+void AES_256::aesni_decrypt_n(const byte in[], byte out[], size_t blocks) const
{
const __m128i* in_mm = reinterpret_cast<const __m128i*>(in);
__m128i* out_mm = reinterpret_cast<__m128i*>(out);
@@ -715,7 +696,7 @@ void AES_256_NI::decrypt_n(const byte in[], byte out[], size_t blocks) const
/*
* AES-256 Key Schedule
*/
-void AES_256_NI::key_schedule(const byte key[], size_t)
+void AES_256::aesni_key_schedule(const byte key[], size_t)
{
m_EK.resize(60);
m_DK.resize(60);
@@ -779,15 +760,6 @@ void AES_256_NI::key_schedule(const byte key[], size_t)
_mm_storeu_si128(DK_mm + 14, K0);
}
-/*
-* Clear memory of sensitive data
-*/
-void AES_256_NI::clear()
- {
- zap(m_EK);
- zap(m_DK);
- }
-
#undef AES_ENC_4_ROUNDS
#undef AES_ENC_4_LAST_ROUNDS
#undef AES_DEC_4_ROUNDS
diff --git a/src/lib/block/aes_ni/aes_ni.h b/src/lib/block/aes_ni/aes_ni.h
deleted file mode 100644
index 296fd7fcc..000000000
--- a/src/lib/block/aes_ni/aes_ni.h
+++ /dev/null
@@ -1,77 +0,0 @@
-/*
-* AES using AES-NI instructions
-* (C) 2009 Jack Lloyd
-*
-* Botan is released under the Simplified BSD License (see license.txt)
-*/
-
-#ifndef BOTAN_AES_NI_H__
-#define BOTAN_AES_NI_H__
-
-#include <botan/block_cipher.h>
-
-namespace Botan {
-
-/**
-* AES-128 using AES-NI
-*/
-class BOTAN_DLL AES_128_NI final : public Block_Cipher_Fixed_Params<16, 16>
- {
- public:
- size_t parallelism() const override { return 4; }
-
- 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;
-
- void clear() override;
- std::string name() const override { return "AES-128"; }
- BlockCipher* clone() const override { return new AES_128_NI; }
- private:
- void key_schedule(const byte[], size_t) override;
-
- secure_vector<u32bit> m_EK, m_DK;
- };
-
-/**
-* AES-192 using AES-NI
-*/
-class BOTAN_DLL AES_192_NI final : public Block_Cipher_Fixed_Params<16, 24>
- {
- public:
- size_t parallelism() const override { return 4; }
-
- 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;
-
- void clear() override;
- std::string name() const override { return "AES-192"; }
- BlockCipher* clone() const override { return new AES_192_NI; }
- private:
- void key_schedule(const byte[], size_t) override;
-
- secure_vector<u32bit> m_EK, m_DK;
- };
-
-/**
-* AES-256 using AES-NI
-*/
-class BOTAN_DLL AES_256_NI final : public Block_Cipher_Fixed_Params<16, 32>
- {
- public:
- size_t parallelism() const override { return 4; }
-
- 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;
-
- void clear() override;
- std::string name() const override { return "AES-256"; }
- BlockCipher* clone() const override { return new AES_256_NI; }
- private:
- void key_schedule(const byte[], size_t) override;
-
- secure_vector<u32bit> m_EK, m_DK;
- };
-
-}
-
-#endif
diff --git a/src/lib/block/aes_ssse3/aes_ssse3.cpp b/src/lib/block/aes_ssse3/aes_ssse3.cpp
index 54e8fcbd8..eda39a7cc 100644
--- a/src/lib/block/aes_ssse3/aes_ssse3.cpp
+++ b/src/lib/block/aes_ssse3/aes_ssse3.cpp
@@ -10,8 +10,7 @@
* Botan is released under the Simplified BSD License (see license.txt)
*/
-#include <botan/aes_ssse3.h>
-#include <botan/cpuid.h>
+#include <botan/aes.h>
#include <botan/internal/ct_utils.h>
#include <tmmintrin.h>
@@ -337,7 +336,7 @@ __m128i aes_ssse3_decrypt(__m128i B, const __m128i* keys, size_t rounds)
/*
* AES-128 Encryption
*/
-void AES_128_SSSE3::encrypt_n(const byte in[], byte out[], size_t blocks) const
+void AES_128::ssse3_encrypt_n(const byte in[], byte out[], size_t blocks) const
{
const __m128i* in_mm = reinterpret_cast<const __m128i*>(in);
__m128i* out_mm = reinterpret_cast<__m128i*>(out);
@@ -359,7 +358,7 @@ void AES_128_SSSE3::encrypt_n(const byte in[], byte out[], size_t blocks) const
/*
* AES-128 Decryption
*/
-void AES_128_SSSE3::decrypt_n(const byte in[], byte out[], size_t blocks) const
+void AES_128::ssse3_decrypt_n(const byte in[], byte out[], size_t blocks) const
{
const __m128i* in_mm = reinterpret_cast<const __m128i*>(in);
__m128i* out_mm = reinterpret_cast<__m128i*>(out);
@@ -381,7 +380,7 @@ void AES_128_SSSE3::decrypt_n(const byte in[], byte out[], size_t blocks) const
/*
* AES-128 Key Schedule
*/
-void AES_128_SSSE3::key_schedule(const byte keyb[], size_t)
+void AES_128::ssse3_key_schedule(const byte keyb[], size_t)
{
__m128i rcon = _mm_set_epi32(0x702A9808, 0x4D7C7D81,
0x1F8391B9, 0xAF9DEEB6);
@@ -416,16 +415,10 @@ void AES_128_SSSE3::key_schedule(const byte keyb[], size_t)
_mm_storeu_si128(DK_mm, aes_schedule_mangle_last_dec(key));
}
-void AES_128_SSSE3::clear()
- {
- zap(m_EK);
- zap(m_DK);
- }
-
/*
* AES-192 Encryption
*/
-void AES_192_SSSE3::encrypt_n(const byte in[], byte out[], size_t blocks) const
+void AES_192::ssse3_encrypt_n(const byte in[], byte out[], size_t blocks) const
{
const __m128i* in_mm = reinterpret_cast<const __m128i*>(in);
__m128i* out_mm = reinterpret_cast<__m128i*>(out);
@@ -447,7 +440,7 @@ void AES_192_SSSE3::encrypt_n(const byte in[], byte out[], size_t blocks) const
/*
* AES-192 Decryption
*/
-void AES_192_SSSE3::decrypt_n(const byte in[], byte out[], size_t blocks) const
+void AES_192::ssse3_decrypt_n(const byte in[], byte out[], size_t blocks) const
{
const __m128i* in_mm = reinterpret_cast<const __m128i*>(in);
__m128i* out_mm = reinterpret_cast<__m128i*>(out);
@@ -469,7 +462,7 @@ void AES_192_SSSE3::decrypt_n(const byte in[], byte out[], size_t blocks) const
/*
* AES-192 Key Schedule
*/
-void AES_192_SSSE3::key_schedule(const byte keyb[], size_t)
+void AES_192::ssse3_key_schedule(const byte keyb[], size_t)
{
__m128i rcon = _mm_set_epi32(0x702A9808, 0x4D7C7D81,
0x1F8391B9, 0xAF9DEEB6);
@@ -533,16 +526,10 @@ void AES_192_SSSE3::key_schedule(const byte keyb[], size_t)
}
}
-void AES_192_SSSE3::clear()
- {
- zap(m_EK);
- zap(m_DK);
- }
-
/*
* AES-256 Encryption
*/
-void AES_256_SSSE3::encrypt_n(const byte in[], byte out[], size_t blocks) const
+void AES_256::ssse3_encrypt_n(const byte in[], byte out[], size_t blocks) const
{
const __m128i* in_mm = reinterpret_cast<const __m128i*>(in);
__m128i* out_mm = reinterpret_cast<__m128i*>(out);
@@ -564,7 +551,7 @@ void AES_256_SSSE3::encrypt_n(const byte in[], byte out[], size_t blocks) const
/*
* AES-256 Decryption
*/
-void AES_256_SSSE3::decrypt_n(const byte in[], byte out[], size_t blocks) const
+void AES_256::ssse3_decrypt_n(const byte in[], byte out[], size_t blocks) const
{
const __m128i* in_mm = reinterpret_cast<const __m128i*>(in);
__m128i* out_mm = reinterpret_cast<__m128i*>(out);
@@ -586,7 +573,7 @@ void AES_256_SSSE3::decrypt_n(const byte in[], byte out[], size_t blocks) const
/*
* AES-256 Key Schedule
*/
-void AES_256_SSSE3::key_schedule(const byte keyb[], size_t)
+void AES_256::ssse3_key_schedule(const byte keyb[], size_t)
{
__m128i rcon = _mm_set_epi32(0x702A9808, 0x4D7C7D81,
0x1F8391B9, 0xAF9DEEB6);
@@ -629,10 +616,4 @@ void AES_256_SSSE3::key_schedule(const byte keyb[], size_t)
_mm_storeu_si128(DK_mm + 0, aes_schedule_mangle_last_dec(key2));
}
-void AES_256_SSSE3::clear()
- {
- zap(m_EK);
- zap(m_DK);
- }
-
}
diff --git a/src/lib/block/aes_ssse3/aes_ssse3.h b/src/lib/block/aes_ssse3/aes_ssse3.h
deleted file mode 100644
index 8e6c40dcd..000000000
--- a/src/lib/block/aes_ssse3/aes_ssse3.h
+++ /dev/null
@@ -1,71 +0,0 @@
-/*
-* AES using SSSE3
-* (C) 2010 Jack Lloyd
-*
-* Botan is released under the Simplified BSD License (see license.txt)
-*/
-
-#ifndef BOTAN_AES_SSSE3_H__
-#define BOTAN_AES_SSSE3_H__
-
-#include <botan/block_cipher.h>
-
-namespace Botan {
-
-/**
-* AES-128 using SSSE3
-*/
-class BOTAN_DLL AES_128_SSSE3 final : public Block_Cipher_Fixed_Params<16, 16>
- {
- 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;
-
- void clear() override;
- std::string name() const override { return "AES-128"; }
- BlockCipher* clone() const override { return new AES_128_SSSE3; }
- private:
- void key_schedule(const byte[], size_t) override;
-
- secure_vector<u32bit> m_EK, m_DK;
- };
-
-/**
-* AES-192 using SSSE3
-*/
-class BOTAN_DLL AES_192_SSSE3 final : public Block_Cipher_Fixed_Params<16, 24>
- {
- 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;
-
- void clear() override;
- std::string name() const override { return "AES-192"; }
- BlockCipher* clone() const override { return new AES_192_SSSE3; }
- private:
- void key_schedule(const byte[], size_t) override;
-
- secure_vector<u32bit> m_EK, m_DK;
- };
-
-/**
-* AES-256 using SSSE3
-*/
-class BOTAN_DLL AES_256_SSSE3 final : public Block_Cipher_Fixed_Params<16, 32>
- {
- 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;
-
- void clear() override;
- std::string name() const override { return "AES-256"; }
- BlockCipher* clone() const override { return new AES_256_SSSE3; }
- private:
- void key_schedule(const byte[], size_t) override;
-
- secure_vector<u32bit> m_EK, m_DK;
- };
-
-}
-
-#endif
diff --git a/src/lib/block/block_cipher.cpp b/src/lib/block/block_cipher.cpp
index c70ba229d..2388057c6 100644
--- a/src/lib/block/block_cipher.cpp
+++ b/src/lib/block/block_cipher.cpp
@@ -13,14 +13,6 @@
#include <botan/aes.h>
#endif
-#if defined(BOTAN_HAS_AES_SSSE3)
- #include <botan/aes_ssse3.h>
-#endif
-
-#if defined(BOTAN_HAS_AES_NI)
- #include <botan/aes_ni.h>
-#endif
-
#if defined(BOTAN_HAS_BLOWFISH)
#include <botan/blowfish.h>
#endif
@@ -51,10 +43,6 @@
#include <botan/idea.h>
#endif
-#if defined(BOTAN_HAS_IDEA_SSE2)
- #include <botan/idea_sse2.h>
-#endif
-
#if defined(BOTAN_HAS_KASUMI)
#include <botan/kasumi.h>
#endif
@@ -63,14 +51,6 @@
#include <botan/lion.h>
#endif
-#if defined(BOTAN_HAS_LUBY_RACKOFF)
- #include <botan/lubyrack.h>
-#endif
-
-#if defined(BOTAN_HAS_MARS)
- #include <botan/mars.h>
-#endif
-
#if defined(BOTAN_HAS_MISTY1)
#include <botan/misty1.h>
#endif
@@ -79,26 +59,6 @@
#include <botan/noekeon.h>
#endif
-#if defined(BOTAN_HAS_NOEKEON_SIMD)
- #include <botan/noekeon_simd.h>
-#endif
-
-#if defined(BOTAN_HAS_RC2)
- #include <botan/rc2.h>
-#endif
-
-#if defined(BOTAN_HAS_RC5)
- #include <botan/rc5.h>
-#endif
-
-#if defined(BOTAN_HAS_RC6)
- #include <botan/rc6.h>
-#endif
-
-#if defined(BOTAN_HAS_SAFER)
- #include <botan/safer_sk.h>
-#endif
-
#if defined(BOTAN_HAS_SEED)
#include <botan/seed.h>
#endif
@@ -107,22 +67,6 @@
#include <botan/serpent.h>
#endif
-#if defined(BOTAN_HAS_SERPENT_SIMD)
- #include <botan/serp_simd.h>
-#endif
-
-#if defined(BOTAN_HAS_SKIPJACK)
- #include <botan/skipjack.h>
-#endif
-
-#if defined(BOTAN_HAS_SQUARE)
- #include <botan/square.h>
-#endif
-
-#if defined(BOTAN_HAS_TEA)
- #include <botan/tea.h>
-#endif
-
#if defined(BOTAN_HAS_TWOFISH)
#include <botan/twofish.h>
#endif
@@ -131,18 +75,10 @@
#include <botan/threefish.h>
#endif
-#if defined(BOTAN_HAS_THREEFISH_512_AVX2)
- #include <botan/threefish_avx2.h>
-#endif
-
#if defined(BOTAN_HAS_XTEA)
#include <botan/xtea.h>
#endif
-#if defined(BOTAN_HAS_XTEA_SIMD)
- #include <botan/xtea_simd.h>
-#endif
-
namespace Botan {
BlockCipher::~BlockCipher() {}
@@ -179,21 +115,6 @@ BOTAN_REGISTER_BLOCK_CIPHER_NAMED_NOARGS(AES_192, "AES-192");
BOTAN_REGISTER_BLOCK_CIPHER_NAMED_NOARGS(AES_256, "AES-256");
#endif
-#if defined(BOTAN_HAS_AES_NI)
-BOTAN_REGISTER_BLOCK_CIPHER_NOARGS_IF(CPUID::has_aes_ni(), AES_128_NI, "AES-128", "aes_ni", 200);
-BOTAN_REGISTER_BLOCK_CIPHER_NOARGS_IF(CPUID::has_aes_ni(), AES_192_NI, "AES-192", "aes_ni", 200);
-BOTAN_REGISTER_BLOCK_CIPHER_NOARGS_IF(CPUID::has_aes_ni(), AES_256_NI, "AES-256", "aes_ni", 200);
-#endif
-
-#if defined(BOTAN_HAS_AES_SSSE3)
-BOTAN_REGISTER_BLOCK_CIPHER_NOARGS_IF(CPUID::has_ssse3(), AES_128_SSSE3, "AES-128",
- "ssse3", BOTAN_SIMD_ALGORITHM_PRIO);
-BOTAN_REGISTER_BLOCK_CIPHER_NOARGS_IF(CPUID::has_ssse3(), AES_192_SSSE3, "AES-192",
- "ssse3", BOTAN_SIMD_ALGORITHM_PRIO);
-BOTAN_REGISTER_BLOCK_CIPHER_NOARGS_IF(CPUID::has_ssse3(), AES_256_SSSE3, "AES-256",
- "ssse3", BOTAN_SIMD_ALGORITHM_PRIO);
-#endif
-
#if defined(BOTAN_HAS_BLOWFISH)
BOTAN_REGISTER_BLOCK_CIPHER_NOARGS(Blowfish);
#endif
@@ -223,19 +144,10 @@ BOTAN_REGISTER_BLOCK_CIPHER_NAMED_1STR(GOST_28147_89, "GOST-28147-89", "R3411_94
BOTAN_REGISTER_BLOCK_CIPHER_NOARGS(IDEA);
#endif
-#if defined(BOTAN_HAS_IDEA_SSE2)
-BOTAN_REGISTER_BLOCK_CIPHER_NOARGS_IF(CPUID::has_sse2(), IDEA_SSE2, "IDEA",
- "sse2", BOTAN_SIMD_ALGORITHM_PRIO);
-#endif
-
#if defined(BOTAN_HAS_KASUMI)
BOTAN_REGISTER_BLOCK_CIPHER_NOARGS(KASUMI);
#endif
-#if defined(BOTAN_HAS_MARS)
-BOTAN_REGISTER_BLOCK_CIPHER_NOARGS(MARS);
-#endif
-
#if defined(BOTAN_HAS_MISTY1)
BOTAN_REGISTER_BLOCK_CIPHER_NOARGS(MISTY1);
#endif
@@ -244,27 +156,6 @@ BOTAN_REGISTER_BLOCK_CIPHER_NOARGS(MISTY1);
BOTAN_REGISTER_BLOCK_CIPHER_NOARGS(Noekeon);
#endif
-#if defined(BOTAN_HAS_NOEKEON_SIMD)
-BOTAN_REGISTER_BLOCK_CIPHER_NOARGS_IF(CPUID::has_simd_32(), Noekeon_SIMD, "Noekeon",
- "simd32", BOTAN_SIMD_ALGORITHM_PRIO);
-#endif
-
-#if defined(BOTAN_HAS_RC2)
-BOTAN_REGISTER_BLOCK_CIPHER_NOARGS(RC2);
-#endif
-
-#if defined(BOTAN_HAS_RC5)
-BOTAN_REGISTER_BLOCK_CIPHER_1LEN(RC5, 12);
-#endif
-
-#if defined(BOTAN_HAS_RC6)
-BOTAN_REGISTER_BLOCK_CIPHER_NOARGS(RC6);
-#endif
-
-#if defined(BOTAN_HAS_SAFER)
-BOTAN_REGISTER_BLOCK_CIPHER_NAMED_1LEN(SAFER_SK, "SAFER-SK", 10);
-#endif
-
#if defined(BOTAN_HAS_SEED)
BOTAN_REGISTER_BLOCK_CIPHER_NOARGS(SEED);
#endif
@@ -273,15 +164,6 @@ BOTAN_REGISTER_BLOCK_CIPHER_NOARGS(SEED);
BOTAN_REGISTER_BLOCK_CIPHER_NOARGS(Serpent);
#endif
-#if defined(BOTAN_HAS_SERPENT_SIMD)
-BOTAN_REGISTER_BLOCK_CIPHER_NOARGS_IF(CPUID::has_simd_32(), Serpent_SIMD, "Serpent",
- "simd32", BOTAN_SIMD_ALGORITHM_PRIO);
-#endif
-
-#if defined(BOTAN_HAS_TEA)
-BOTAN_REGISTER_BLOCK_CIPHER_NOARGS(TEA);
-#endif
-
#if defined(BOTAN_HAS_TWOFISH)
BOTAN_REGISTER_BLOCK_CIPHER_NOARGS(Twofish);
#endif
@@ -290,20 +172,10 @@ BOTAN_REGISTER_BLOCK_CIPHER_NOARGS(Twofish);
BOTAN_REGISTER_BLOCK_CIPHER_NAMED_NOARGS(Threefish_512, "Threefish-512");
#endif
-#if defined(BOTAN_HAS_THREEFISH_512_AVX2)
-BOTAN_REGISTER_BLOCK_CIPHER_NOARGS_IF(CPUID::has_avx2(), Threefish_512_AVX2, "Threefish-512",
- "avx2", BOTAN_SIMD_ALGORITHM_PRIO);
-#endif
-
#if defined(BOTAN_HAS_XTEA)
BOTAN_REGISTER_BLOCK_CIPHER_NOARGS(XTEA);
#endif
-#if defined(BOTAN_HAS_XTEA_SIMD)
-BOTAN_REGISTER_BLOCK_CIPHER_NOARGS_IF(CPUID::has_simd_32(), XTEA_SIMD, "XTEA",
- "simd32", BOTAN_SIMD_ALGORITHM_PRIO);
-#endif
-
#if defined(BOTAN_HAS_CASCADE)
BOTAN_REGISTER_NAMED_T(BlockCipher, "Cascade", Cascade_Cipher, Cascade_Cipher::make);
#endif
diff --git a/src/lib/block/block_cipher.h b/src/lib/block/block_cipher.h
index 0f4c2c1c5..b16468958 100644
--- a/src/lib/block/block_cipher.h
+++ b/src/lib/block/block_cipher.h
@@ -10,6 +10,7 @@
#include <botan/scan_name.h>
#include <botan/sym_algo.h>
+#include <string>
namespace Botan {
@@ -53,6 +54,12 @@ class BOTAN_DLL BlockCipher : public SymmetricAlgorithm
}
/**
+ * @return provider information about this implementation. Default is "base",
+ * might also return "sse2", "avx2", "openssl", or some other arbitrary string.
+ */
+ virtual std::string provider() const { return "base"; }
+
+ /**
* Encrypt a block.
* @param in The plaintext block to be encrypted as a byte array.
* Must be of length block_size().
diff --git a/src/lib/block/idea/idea.cpp b/src/lib/block/idea/idea.cpp
index 4182c59a7..85cc5e757 100644
--- a/src/lib/block/idea/idea.cpp
+++ b/src/lib/block/idea/idea.cpp
@@ -7,6 +7,7 @@
#include <botan/idea.h>
#include <botan/loadstor.h>
+#include <botan/cpuid.h>
#include <botan/internal/ct_utils.h>
namespace Botan {
@@ -108,11 +109,36 @@ void idea_op(const byte in[], byte out[], size_t blocks, const u16bit K[52])
}
+std::string IDEA::provider() const
+ {
+#if defined(BOTAN_HAS_IDEA_SSE2)
+ if(CPUID::has_sse2())
+ {
+ return "sse2";
+ }
+#endif
+
+ return "base";
+ }
+
/*
* IDEA Encryption
*/
void IDEA::encrypt_n(const byte in[], byte out[], size_t blocks) const
{
+#if defined(BOTAN_HAS_IDEA_SSE2)
+ if(CPUID::has_sse2())
+ {
+ while(blocks >= 8)
+ {
+ sse2_idea_op_8(in, out, m_EK.data());
+ in += 8 * BLOCK_SIZE;
+ out += 8 * BLOCK_SIZE;
+ blocks -= 8;
+ }
+ }
+#endif
+
idea_op(in, out, blocks, m_EK.data());
}
@@ -121,6 +147,19 @@ void IDEA::encrypt_n(const byte in[], byte out[], size_t blocks) const
*/
void IDEA::decrypt_n(const byte in[], byte out[], size_t blocks) const
{
+#if defined(BOTAN_HAS_IDEA_SSE2)
+ if(CPUID::has_sse2())
+ {
+ while(blocks >= 8)
+ {
+ sse2_idea_op_8(in, out, m_DK.data());
+ in += 8 * BLOCK_SIZE;
+ out += 8 * BLOCK_SIZE;
+ blocks -= 8;
+ }
+ }
+#endif
+
idea_op(in, out, blocks, m_DK.data());
}
diff --git a/src/lib/block/idea/idea.h b/src/lib/block/idea/idea.h
index 59f98da9e..eb391a0c8 100644
--- a/src/lib/block/idea/idea.h
+++ b/src/lib/block/idea/idea.h
@@ -15,27 +15,22 @@ namespace Botan {
/**
* IDEA
*/
-class BOTAN_DLL IDEA : public Block_Cipher_Fixed_Params<8, 16>
+class BOTAN_DLL IDEA final : public Block_Cipher_Fixed_Params<8, 16>
{
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;
void clear() override;
+
+ std::string provider() const override;
std::string name() const override { return "IDEA"; }
BlockCipher* clone() const override { return new IDEA; }
- protected:
- /**
- * @return const reference to encryption subkeys
- */
- const secure_vector<u16bit>& get_EK() const { return m_EK; }
-
- /**
- * @return const reference to decryption subkeys
- */
- const secure_vector<u16bit>& get_DK() const { return m_DK; }
-
private:
+#if defined(BOTAN_HAS_IDEA_SSE2)
+ void sse2_idea_op_8(const byte in[64], byte out[64], const u16bit EK[52]) const;
+#endif
+
void key_schedule(const byte[], size_t) override;
secure_vector<u16bit> m_EK, m_DK;
diff --git a/src/lib/block/idea_sse2/idea_sse2.cpp b/src/lib/block/idea_sse2/idea_sse2.cpp
index c7d846e8b..4debfc95a 100644
--- a/src/lib/block/idea_sse2/idea_sse2.cpp
+++ b/src/lib/block/idea_sse2/idea_sse2.cpp
@@ -5,8 +5,7 @@
* Botan is released under the Simplified BSD License (see license.txt)
*/
-#include <botan/idea_sse2.h>
-#include <botan/cpuid.h>
+#include <botan/idea.h>
#include <botan/internal/ct_utils.h>
#include <emmintrin.h>
@@ -126,10 +125,12 @@ void transpose_out(__m128i& B0, __m128i& B1, __m128i& B2, __m128i& B3)
B3 = _mm_unpackhi_epi32(T2, T3);
}
+}
+
/*
-* IDEA encryption/decryption in SSE2
+* 8 wide IDEA encryption/decryption in SSE2
*/
-void idea_op_8(const byte in[64], byte out[64], const u16bit EK[52])
+void IDEA::sse2_idea_op_8(const byte in[64], byte out[64], const u16bit EK[52]) const
{
CT::poison(in, 64);
CT::poison(out, 64);
@@ -201,43 +202,3 @@ void idea_op_8(const byte in[64], byte out[64], const u16bit EK[52])
}
}
-
-/*
-* IDEA Encryption
-*/
-void IDEA_SSE2::encrypt_n(const byte in[], byte out[], size_t blocks) const
- {
- const u16bit* KS = &this->get_EK()[0];
-
- while(blocks >= 8)
- {
- idea_op_8(in, out, KS);
- in += 8 * BLOCK_SIZE;
- out += 8 * BLOCK_SIZE;
- blocks -= 8;
- }
-
- if(blocks)
- IDEA::encrypt_n(in, out, blocks);
- }
-
-/*
-* IDEA Decryption
-*/
-void IDEA_SSE2::decrypt_n(const byte in[], byte out[], size_t blocks) const
- {
- const u16bit* KS = &this->get_DK()[0];
-
- while(blocks >= 8)
- {
- idea_op_8(in, out, KS);
- in += 8 * BLOCK_SIZE;
- out += 8 * BLOCK_SIZE;
- blocks -= 8;
- }
-
- if(blocks)
- IDEA::decrypt_n(in, out, blocks);
- }
-
-}
diff --git a/src/lib/block/idea_sse2/idea_sse2.h b/src/lib/block/idea_sse2/idea_sse2.h
deleted file mode 100644
index 9e0df9925..000000000
--- a/src/lib/block/idea_sse2/idea_sse2.h
+++ /dev/null
@@ -1,31 +0,0 @@
-/*
-* IDEA in SSE2
-* (C) 2009 Jack Lloyd
-*
-* Botan is released under the Simplified BSD License (see license.txt)
-*/
-
-#ifndef BOTAN_IDEA_SSE2_H__
-#define BOTAN_IDEA_SSE2_H__
-
-#include <botan/idea.h>
-
-namespace Botan {
-
-/**
-* IDEA in SSE2
-*/
-class BOTAN_DLL IDEA_SSE2 final : public IDEA
- {
- public:
- size_t parallelism() const override { return 8; }
-
- 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;
-
- BlockCipher* clone() const override { return new IDEA_SSE2; }
- };
-
-}
-
-#endif
diff --git a/src/lib/block/mars/info.txt b/src/lib/block/mars/info.txt
deleted file mode 100644
index 0af3d7955..000000000
--- a/src/lib/block/mars/info.txt
+++ /dev/null
@@ -1 +0,0 @@
-define MARS 20131128
diff --git a/src/lib/block/mars/mars.cpp b/src/lib/block/mars/mars.cpp
deleted file mode 100644
index 4605be415..000000000
--- a/src/lib/block/mars/mars.cpp
+++ /dev/null
@@ -1,392 +0,0 @@
-/*
-* MARS
-* (C) 1999-2009 Jack Lloyd
-*
-* Botan is released under the Simplified BSD License (see license.txt)
-*/
-
-#include <botan/mars.h>
-#include <botan/loadstor.h>
-
-namespace Botan {
-
-namespace {
-
-/**
-* The MARS sbox
-*/
-const u32bit SBOX[512] = {
- 0x09D0C479, 0x28C8FFE0, 0x84AA6C39, 0x9DAD7287, 0x7DFF9BE3, 0xD4268361,
- 0xC96DA1D4, 0x7974CC93, 0x85D0582E, 0x2A4B5705, 0x1CA16A62, 0xC3BD279D,
- 0x0F1F25E5, 0x5160372F, 0xC695C1FB, 0x4D7FF1E4, 0xAE5F6BF4, 0x0D72EE46,
- 0xFF23DE8A, 0xB1CF8E83, 0xF14902E2, 0x3E981E42, 0x8BF53EB6, 0x7F4BF8AC,
- 0x83631F83, 0x25970205, 0x76AFE784, 0x3A7931D4, 0x4F846450, 0x5C64C3F6,
- 0x210A5F18, 0xC6986A26, 0x28F4E826, 0x3A60A81C, 0xD340A664, 0x7EA820C4,
- 0x526687C5, 0x7EDDD12B, 0x32A11D1D, 0x9C9EF086, 0x80F6E831, 0xAB6F04AD,
- 0x56FB9B53, 0x8B2E095C, 0xB68556AE, 0xD2250B0D, 0x294A7721, 0xE21FB253,
- 0xAE136749, 0xE82AAE86, 0x93365104, 0x99404A66, 0x78A784DC, 0xB69BA84B,
- 0x04046793, 0x23DB5C1E, 0x46CAE1D6, 0x2FE28134, 0x5A223942, 0x1863CD5B,
- 0xC190C6E3, 0x07DFB846, 0x6EB88816, 0x2D0DCC4A, 0xA4CCAE59, 0x3798670D,
- 0xCBFA9493, 0x4F481D45, 0xEAFC8CA8, 0xDB1129D6, 0xB0449E20, 0x0F5407FB,
- 0x6167D9A8, 0xD1F45763, 0x4DAA96C3, 0x3BEC5958, 0xABABA014, 0xB6CCD201,
- 0x38D6279F, 0x02682215, 0x8F376CD5, 0x092C237E, 0xBFC56593, 0x32889D2C,
- 0x854B3E95, 0x05BB9B43, 0x7DCD5DCD, 0xA02E926C, 0xFAE527E5, 0x36A1C330,
- 0x3412E1AE, 0xF257F462, 0x3C4F1D71, 0x30A2E809, 0x68E5F551, 0x9C61BA44,
- 0x5DED0AB8, 0x75CE09C8, 0x9654F93E, 0x698C0CCA, 0x243CB3E4, 0x2B062B97,
- 0x0F3B8D9E, 0x00E050DF, 0xFC5D6166, 0xE35F9288, 0xC079550D, 0x0591AEE8,
- 0x8E531E74, 0x75FE3578, 0x2F6D829A, 0xF60B21AE, 0x95E8EB8D, 0x6699486B,
- 0x901D7D9B, 0xFD6D6E31, 0x1090ACEF, 0xE0670DD8, 0xDAB2E692, 0xCD6D4365,
- 0xE5393514, 0x3AF345F0, 0x6241FC4D, 0x460DA3A3, 0x7BCF3729, 0x8BF1D1E0,
- 0x14AAC070, 0x1587ED55, 0x3AFD7D3E, 0xD2F29E01, 0x29A9D1F6, 0xEFB10C53,
- 0xCF3B870F, 0xB414935C, 0x664465ED, 0x024ACAC7, 0x59A744C1, 0x1D2936A7,
- 0xDC580AA6, 0xCF574CA8, 0x040A7A10, 0x6CD81807, 0x8A98BE4C, 0xACCEA063,
- 0xC33E92B5, 0xD1E0E03D, 0xB322517E, 0x2092BD13, 0x386B2C4A, 0x52E8DD58,
- 0x58656DFB, 0x50820371, 0x41811896, 0xE337EF7E, 0xD39FB119, 0xC97F0DF6,
- 0x68FEA01B, 0xA150A6E5, 0x55258962, 0xEB6FF41B, 0xD7C9CD7A, 0xA619CD9E,
- 0xBCF09576, 0x2672C073, 0xF003FB3C, 0x4AB7A50B, 0x1484126A, 0x487BA9B1,
- 0xA64FC9C6, 0xF6957D49, 0x38B06A75, 0xDD805FCD, 0x63D094CF, 0xF51C999E,
- 0x1AA4D343, 0xB8495294, 0xCE9F8E99, 0xBFFCD770, 0xC7C275CC, 0x378453A7,
- 0x7B21BE33, 0x397F41BD, 0x4E94D131, 0x92CC1F98, 0x5915EA51, 0x99F861B7,
- 0xC9980A88, 0x1D74FD5F, 0xB0A495F8, 0x614DEED0, 0xB5778EEA, 0x5941792D,
- 0xFA90C1F8, 0x33F824B4, 0xC4965372, 0x3FF6D550, 0x4CA5FEC0, 0x8630E964,
- 0x5B3FBBD6, 0x7DA26A48, 0xB203231A, 0x04297514, 0x2D639306, 0x2EB13149,
- 0x16A45272, 0x532459A0, 0x8E5F4872, 0xF966C7D9, 0x07128DC0, 0x0D44DB62,
- 0xAFC8D52D, 0x06316131, 0xD838E7CE, 0x1BC41D00, 0x3A2E8C0F, 0xEA83837E,
- 0xB984737D, 0x13BA4891, 0xC4F8B949, 0xA6D6ACB3, 0xA215CDCE, 0x8359838B,
- 0x6BD1AA31, 0xF579DD52, 0x21B93F93, 0xF5176781, 0x187DFDDE, 0xE94AEB76,
- 0x2B38FD54, 0x431DE1DA, 0xAB394825, 0x9AD3048F, 0xDFEA32AA, 0x659473E3,
- 0x623F7863, 0xF3346C59, 0xAB3AB685, 0x3346A90B, 0x6B56443E, 0xC6DE01F8,
- 0x8D421FC0, 0x9B0ED10C, 0x88F1A1E9, 0x54C1F029, 0x7DEAD57B, 0x8D7BA426,
- 0x4CF5178A, 0x551A7CCA, 0x1A9A5F08, 0xFCD651B9, 0x25605182, 0xE11FC6C3,
- 0xB6FD9676, 0x337B3027, 0xB7C8EB14, 0x9E5FD030, 0x6B57E354, 0xAD913CF7,
- 0x7E16688D, 0x58872A69, 0x2C2FC7DF, 0xE389CCC6, 0x30738DF1, 0x0824A734,
- 0xE1797A8B, 0xA4A8D57B, 0x5B5D193B, 0xC8A8309B, 0x73F9A978, 0x73398D32,
- 0x0F59573E, 0xE9DF2B03, 0xE8A5B6C8, 0x848D0704, 0x98DF93C2, 0x720A1DC3,
- 0x684F259A, 0x943BA848, 0xA6370152, 0x863B5EA3, 0xD17B978B, 0x6D9B58EF,
- 0x0A700DD4, 0xA73D36BF, 0x8E6A0829, 0x8695BC14, 0xE35B3447, 0x933AC568,
- 0x8894B022, 0x2F511C27, 0xDDFBCC3C, 0x006662B6, 0x117C83FE, 0x4E12B414,
- 0xC2BCA766, 0x3A2FEC10, 0xF4562420, 0x55792E2A, 0x46F5D857, 0xCEDA25CE,
- 0xC3601D3B, 0x6C00AB46, 0xEFAC9C28, 0xB3C35047, 0x611DFEE3, 0x257C3207,
- 0xFDD58482, 0x3B14D84F, 0x23BECB64, 0xA075F3A3, 0x088F8EAD, 0x07ADF158,
- 0x7796943C, 0xFACABF3D, 0xC09730CD, 0xF7679969, 0xDA44E9ED, 0x2C854C12,
- 0x35935FA3, 0x2F057D9F, 0x690624F8, 0x1CB0BAFD, 0x7B0DBDC6, 0x810F23BB,
- 0xFA929A1A, 0x6D969A17, 0x6742979B, 0x74AC7D05, 0x010E65C4, 0x86A3D963,
- 0xF907B5A0, 0xD0042BD3, 0x158D7D03, 0x287A8255, 0xBBA8366F, 0x096EDC33,
- 0x21916A7B, 0x77B56B86, 0x951622F9, 0xA6C5E650, 0x8CEA17D1, 0xCD8C62BC,
- 0xA3D63433, 0x358A68FD, 0x0F9B9D3C, 0xD6AA295B, 0xFE33384A, 0xC000738E,
- 0xCD67EB2F, 0xE2EB6DC2, 0x97338B02, 0x06C9F246, 0x419CF1AD, 0x2B83C045,
- 0x3723F18A, 0xCB5B3089, 0x160BEAD7, 0x5D494656, 0x35F8A74B, 0x1E4E6C9E,
- 0x000399BD, 0x67466880, 0xB4174831, 0xACF423B2, 0xCA815AB3, 0x5A6395E7,
- 0x302A67C5, 0x8BDB446B, 0x108F8FA4, 0x10223EDA, 0x92B8B48B, 0x7F38D0EE,
- 0xAB2701D4, 0x0262D415, 0xAF224A30, 0xB3D88ABA, 0xF8B2C3AF, 0xDAF7EF70,
- 0xCC97D3B7, 0xE9614B6C, 0x2BAEBFF4, 0x70F687CF, 0x386C9156, 0xCE092EE5,
- 0x01E87DA6, 0x6CE91E6A, 0xBB7BCC84, 0xC7922C20, 0x9D3B71FD, 0x060E41C6,
- 0xD7590F15, 0x4E03BB47, 0x183C198E, 0x63EEB240, 0x2DDBF49A, 0x6D5CBA54,
- 0x923750AF, 0xF9E14236, 0x7838162B, 0x59726C72, 0x81B66760, 0xBB2926C1,
- 0x48A0CE0D, 0xA6C0496D, 0xAD43507B, 0x718D496A, 0x9DF057AF, 0x44B1BDE6,
- 0x054356DC, 0xDE7CED35, 0xD51A138B, 0x62088CC9, 0x35830311, 0xC96EFCA2,
- 0x686F86EC, 0x8E77CB68, 0x63E1D6B8, 0xC80F9778, 0x79C491FD, 0x1B4C67F2,
- 0x72698D7D, 0x5E368C31, 0xF7D95E2E, 0xA1D3493F, 0xDCD9433E, 0x896F1552,
- 0x4BC4CA7A, 0xA6D1BAF4, 0xA5A96DCC, 0x0BEF8B46, 0xA169FDA7, 0x74DF40B7,
- 0x4E208804, 0x9A756607, 0x038E87C8, 0x20211E44, 0x8B7AD4BF, 0xC6403F35,
- 0x1848E36D, 0x80BDB038, 0x1E62891C, 0x643D2107, 0xBF04D6F8, 0x21092C8C,
- 0xF644F389, 0x0778404E, 0x7B78ADB8, 0xA2C52D53, 0x42157ABE, 0xA2253E2E,
- 0x7BF3F4AE, 0x80F594F9, 0x953194E7, 0x77EB92ED, 0xB3816930, 0xDA8D9336,
- 0xBF447469, 0xF26D9483, 0xEE6FAED5, 0x71371235, 0xDE425F73, 0xB4E59F43,
- 0x7DBE2D4E, 0x2D37B185, 0x49DC9A63, 0x98C39D98, 0x1301C9A2, 0x389B1BBF,
- 0x0C18588D, 0xA421C1BA, 0x7AA3865C, 0x71E08558, 0x3C5CFCAA, 0x7D239CA4,
- 0x0297D9DD, 0xD7DC2830, 0x4B37802B, 0x7428AB54, 0xAEEE0347, 0x4B3FBB85,
- 0x692F2F08, 0x134E578E, 0x36D9E0BF, 0xAE8B5FCF, 0xEDB93ECF, 0x2B27248E,
- 0x170EB1EF, 0x7DC57FD6, 0x1E760F16, 0xB1136601, 0x864E1B9B, 0xD7EA7319,
- 0x3AB871BD, 0xCFA4D76F, 0xE31BD782, 0x0DBEB469, 0xABB96061, 0x5370F85D,
- 0xFFB07E37, 0xDA30D0FB, 0xEBC977B6, 0x0B98B40F, 0x3A4D0FE6, 0xDF4FC26B,
- 0x159CF22A, 0xC298D6E2, 0x2B78EF6A, 0x61A94AC0, 0xAB561187, 0x14EEA0F0,
- 0xDF0D4164, 0x19AF70EE };
-
-/*
-* MARS Encryption Round
-*/
-inline void encrypt_round(u32bit& A, u32bit& B, u32bit& C, u32bit& D,
- u32bit EK1, u32bit EK2)
- {
- const u32bit X = A + EK1;
- A = rotate_left(A, 13);
- u32bit Y = A * EK2;
- u32bit Z = SBOX[X % 512];
-
- Y = rotate_left(Y, 5);
- Z ^= Y;
- C += rotate_left(X, Y % 32);
- Y = rotate_left(Y, 5);
- Z ^= Y;
- D ^= Y;
- B += rotate_left(Z, Y % 32);
- }
-
-/*
-* MARS Decryption Round
-*/
-inline void decrypt_round(u32bit& A, u32bit& B, u32bit& C, u32bit& D,
- u32bit EK1, u32bit EK2)
- {
- u32bit Y = A * EK1;
- A = rotate_right(A, 13);
- const u32bit X = A + EK2;
- u32bit Z = SBOX[X % 512];
-
- Y = rotate_left(Y, 5);
- Z ^= Y;
- C -= rotate_left(X, Y % 32);
- Y = rotate_left(Y, 5);
- Z ^= Y;
- D ^= Y;
- B -= rotate_left(Z, Y % 32);
- }
-
-/*
-* MARS Forward Mixing Operation
-*/
-void forward_mix(u32bit& A, u32bit& B, u32bit& C, u32bit& D)
- {
- for(size_t j = 0; j != 2; ++j)
- {
- B ^= SBOX[get_byte(3, A)]; B += SBOX[get_byte(2, A) + 256];
- C += SBOX[get_byte(1, A)]; D ^= SBOX[get_byte(0, A) + 256];
- A = rotate_right(A, 24) + D;
-
- C ^= SBOX[get_byte(3, B)]; C += SBOX[get_byte(2, B) + 256];
- D += SBOX[get_byte(1, B)]; A ^= SBOX[get_byte(0, B) + 256];
- B = rotate_right(B, 24) + C;
-
- D ^= SBOX[get_byte(3, C)]; D += SBOX[get_byte(2, C) + 256];
- A += SBOX[get_byte(1, C)]; B ^= SBOX[get_byte(0, C) + 256];
- C = rotate_right(C, 24);
-
- A ^= SBOX[get_byte(3, D)]; A += SBOX[get_byte(2, D) + 256];
- B += SBOX[get_byte(1, D)]; C ^= SBOX[get_byte(0, D) + 256];
- D = rotate_right(D, 24);
- }
- }
-
-/*
-* MARS Reverse Mixing Operation
-*/
-void reverse_mix(u32bit& A, u32bit& B, u32bit& C, u32bit& D)
- {
- for(size_t j = 0; j != 2; ++j)
- {
- B ^= SBOX[get_byte(3, A) + 256]; C -= SBOX[get_byte(0, A)];
- D -= SBOX[get_byte(1, A) + 256]; D ^= SBOX[get_byte(2, A)];
- A = rotate_left(A, 24);
-
- C ^= SBOX[get_byte(3, B) + 256]; D -= SBOX[get_byte(0, B)];
- A -= SBOX[get_byte(1, B) + 256]; A ^= SBOX[get_byte(2, B)];
- C -= (B = rotate_left(B, 24));
-
- D ^= SBOX[get_byte(3, C) + 256]; A -= SBOX[get_byte(0, C)];
- B -= SBOX[get_byte(1, C) + 256]; B ^= SBOX[get_byte(2, C)];
- C = rotate_left(C, 24);
- D -= A;
-
- A ^= SBOX[get_byte(3, D) + 256]; B -= SBOX[get_byte(0, D)];
- C -= SBOX[get_byte(1, D) + 256]; C ^= SBOX[get_byte(2, D)];
- D = rotate_left(D, 24);
- }
- }
-
-/*
-* Generate a mask for runs of bits
-*/
-u32bit gen_mask(u32bit input)
- {
- u32bit mask = 0;
-
- for(u32bit j = 2; j != 31; ++j)
- {
- const u32bit region = (input >> (j-1)) & 0x07;
-
- if(region == 0x00 || region == 0x07)
- {
- const u32bit low = (j < 9) ? 0 : (j - 9);
- const u32bit high = (j < 23) ? j : 23;
-
- for(u32bit k = low; k != high; ++k)
- {
- const u32bit value = (input >> k) & 0x3FF;
-
- if(value == 0 || value == 0x3FF)
- {
- mask |= static_cast<u32bit>(1) << j;
- break;
- }
- }
- }
- }
-
- return mask;
- }
-
-}
-
-/*
-* MARS Encryption
-*/
-void MARS::encrypt_n(const byte in[], byte out[], size_t blocks) const
- {
- for(size_t i = 0; i != blocks; ++i)
- {
- u32bit A = load_le<u32bit>(in, 0) + m_EK[0];
- u32bit B = load_le<u32bit>(in, 1) + m_EK[1];
- u32bit C = load_le<u32bit>(in, 2) + m_EK[2];
- u32bit D = load_le<u32bit>(in, 3) + m_EK[3];
-
- forward_mix(A, B, C, D);
-
- encrypt_round(A, B, C, D, m_EK[ 4], m_EK[ 5]);
- encrypt_round(B, C, D, A, m_EK[ 6], m_EK[ 7]);
- encrypt_round(C, D, A, B, m_EK[ 8], m_EK[ 9]);
- encrypt_round(D, A, B, C, m_EK[10], m_EK[11]);
- encrypt_round(A, B, C, D, m_EK[12], m_EK[13]);
- encrypt_round(B, C, D, A, m_EK[14], m_EK[15]);
- encrypt_round(C, D, A, B, m_EK[16], m_EK[17]);
- encrypt_round(D, A, B, C, m_EK[18], m_EK[19]);
-
- encrypt_round(A, D, C, B, m_EK[20], m_EK[21]);
- encrypt_round(B, A, D, C, m_EK[22], m_EK[23]);
- encrypt_round(C, B, A, D, m_EK[24], m_EK[25]);
- encrypt_round(D, C, B, A, m_EK[26], m_EK[27]);
- encrypt_round(A, D, C, B, m_EK[28], m_EK[29]);
- encrypt_round(B, A, D, C, m_EK[30], m_EK[31]);
- encrypt_round(C, B, A, D, m_EK[32], m_EK[33]);
- encrypt_round(D, C, B, A, m_EK[34], m_EK[35]);
-
- reverse_mix(A, B, C, D);
-
- A -= m_EK[36]; B -= m_EK[37]; C -= m_EK[38]; D -= m_EK[39];
-
- store_le(out, A, B, C, D);
-
- in += BLOCK_SIZE;
- out += BLOCK_SIZE;
- }
- }
-
-/*
-* MARS Decryption
-*/
-void MARS::decrypt_n(const byte in[], byte out[], size_t blocks) const
- {
- for(size_t i = 0; i != blocks; ++i)
- {
- u32bit A = load_le<u32bit>(in, 3) + m_EK[39];
- u32bit B = load_le<u32bit>(in, 2) + m_EK[38];
- u32bit C = load_le<u32bit>(in, 1) + m_EK[37];
- u32bit D = load_le<u32bit>(in, 0) + m_EK[36];
-
- forward_mix(A, B, C, D);
-
- decrypt_round(A, B, C, D, m_EK[35], m_EK[34]);
- decrypt_round(B, C, D, A, m_EK[33], m_EK[32]);
- decrypt_round(C, D, A, B, m_EK[31], m_EK[30]);
- decrypt_round(D, A, B, C, m_EK[29], m_EK[28]);
- decrypt_round(A, B, C, D, m_EK[27], m_EK[26]);
- decrypt_round(B, C, D, A, m_EK[25], m_EK[24]);
- decrypt_round(C, D, A, B, m_EK[23], m_EK[22]);
- decrypt_round(D, A, B, C, m_EK[21], m_EK[20]);
-
- decrypt_round(A, D, C, B, m_EK[19], m_EK[18]);
- decrypt_round(B, A, D, C, m_EK[17], m_EK[16]);
- decrypt_round(C, B, A, D, m_EK[15], m_EK[14]);
- decrypt_round(D, C, B, A, m_EK[13], m_EK[12]);
- decrypt_round(A, D, C, B, m_EK[11], m_EK[10]);
- decrypt_round(B, A, D, C, m_EK[ 9], m_EK[ 8]);
- decrypt_round(C, B, A, D, m_EK[ 7], m_EK[ 6]);
- decrypt_round(D, C, B, A, m_EK[ 5], m_EK[ 4]);
-
- reverse_mix(A, B, C, D);
-
- A -= m_EK[3]; B -= m_EK[2]; C -= m_EK[1]; D -= m_EK[0];
-
- store_le(out, D, C, B, A);
-
- in += BLOCK_SIZE;
- out += BLOCK_SIZE;
- }
- }
-
-/*
-* MARS Key Schedule
-*/
-void MARS::key_schedule(const byte key[], size_t length)
- {
- secure_vector<u32bit> T(15);
- for(size_t i = 0; i != length / 4; ++i)
- T[i] = load_le<u32bit>(key, i);
-
- T[length / 4] = static_cast<u32bit>(length) / 4;
-
- m_EK.resize(40);
-
- for(u32bit i = 0; i != 4; ++i)
- {
- T[ 0] ^= rotate_left(T[ 8] ^ T[13], 3) ^ (i );
- T[ 1] ^= rotate_left(T[ 9] ^ T[14], 3) ^ (i + 4);
- T[ 2] ^= rotate_left(T[10] ^ T[ 0], 3) ^ (i + 8);
- T[ 3] ^= rotate_left(T[11] ^ T[ 1], 3) ^ (i + 12);
- T[ 4] ^= rotate_left(T[12] ^ T[ 2], 3) ^ (i + 16);
- T[ 5] ^= rotate_left(T[13] ^ T[ 3], 3) ^ (i + 20);
- T[ 6] ^= rotate_left(T[14] ^ T[ 4], 3) ^ (i + 24);
- T[ 7] ^= rotate_left(T[ 0] ^ T[ 5], 3) ^ (i + 28);
- T[ 8] ^= rotate_left(T[ 1] ^ T[ 6], 3) ^ (i + 32);
- T[ 9] ^= rotate_left(T[ 2] ^ T[ 7], 3) ^ (i + 36);
- T[10] ^= rotate_left(T[ 3] ^ T[ 8], 3) ^ (i + 40);
- T[11] ^= rotate_left(T[ 4] ^ T[ 9], 3) ^ (i + 44);
- T[12] ^= rotate_left(T[ 5] ^ T[10], 3) ^ (i + 48);
- T[13] ^= rotate_left(T[ 6] ^ T[11], 3) ^ (i + 52);
- T[14] ^= rotate_left(T[ 7] ^ T[12], 3) ^ (i + 56);
-
- for(size_t j = 0; j != 4; ++j)
- {
- T[ 0] = rotate_left(T[ 0] + SBOX[T[14] % 512], 9);
- T[ 1] = rotate_left(T[ 1] + SBOX[T[ 0] % 512], 9);
- T[ 2] = rotate_left(T[ 2] + SBOX[T[ 1] % 512], 9);
- T[ 3] = rotate_left(T[ 3] + SBOX[T[ 2] % 512], 9);
- T[ 4] = rotate_left(T[ 4] + SBOX[T[ 3] % 512], 9);
- T[ 5] = rotate_left(T[ 5] + SBOX[T[ 4] % 512], 9);
- T[ 6] = rotate_left(T[ 6] + SBOX[T[ 5] % 512], 9);
- T[ 7] = rotate_left(T[ 7] + SBOX[T[ 6] % 512], 9);
- T[ 8] = rotate_left(T[ 8] + SBOX[T[ 7] % 512], 9);
- T[ 9] = rotate_left(T[ 9] + SBOX[T[ 8] % 512], 9);
- T[10] = rotate_left(T[10] + SBOX[T[ 9] % 512], 9);
- T[11] = rotate_left(T[11] + SBOX[T[10] % 512], 9);
- T[12] = rotate_left(T[12] + SBOX[T[11] % 512], 9);
- T[13] = rotate_left(T[13] + SBOX[T[12] % 512], 9);
- T[14] = rotate_left(T[14] + SBOX[T[13] % 512], 9);
- }
-
- m_EK[10*i + 0] = T[ 0];
- m_EK[10*i + 1] = T[ 4];
- m_EK[10*i + 2] = T[ 8];
- m_EK[10*i + 3] = T[12];
- m_EK[10*i + 4] = T[ 1];
- m_EK[10*i + 5] = T[ 5];
- m_EK[10*i + 6] = T[ 9];
- m_EK[10*i + 7] = T[13];
- m_EK[10*i + 8] = T[ 2];
- m_EK[10*i + 9] = T[ 6];
- }
-
- for(size_t i = 5; i != 37; i += 2)
- {
- const u32bit key3 = m_EK[i] & 3;
- m_EK[i] |= 3;
- m_EK[i] ^= rotate_left(SBOX[265 + key3], m_EK[i-1] % 32) & gen_mask(m_EK[i]);
- }
- }
-
-void MARS::clear()
- {
- zap(m_EK);
- }
-
-}
diff --git a/src/lib/block/mars/mars.h b/src/lib/block/mars/mars.h
deleted file mode 100644
index a4d7a07d6..000000000
--- a/src/lib/block/mars/mars.h
+++ /dev/null
@@ -1,35 +0,0 @@
-/*
-* MARS
-* (C) 1999-2007 Jack Lloyd
-*
-* Botan is released under the Simplified BSD License (see license.txt)
-*/
-
-#ifndef BOTAN_MARS_H__
-#define BOTAN_MARS_H__
-
-#include <botan/block_cipher.h>
-
-namespace Botan {
-
-/**
-* MARS, IBM's candidate for AES
-*/
-class BOTAN_DLL MARS final : public Block_Cipher_Fixed_Params<16, 16, 32, 4>
- {
- 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;
-
- void clear() override;
- std::string name() const override { return "MARS"; }
- BlockCipher* clone() const override { return new MARS; }
- private:
- void key_schedule(const byte[], size_t) override;
-
- secure_vector<u32bit> m_EK;
- };
-
-}
-
-#endif
diff --git a/src/lib/block/noekeon/noekeon.cpp b/src/lib/block/noekeon/noekeon.cpp
index 01f7491f3..eac0979a4 100644
--- a/src/lib/block/noekeon/noekeon.cpp
+++ b/src/lib/block/noekeon/noekeon.cpp
@@ -7,6 +7,7 @@
#include <botan/noekeon.h>
#include <botan/loadstor.h>
+#include <botan/cpuid.h>
namespace Botan {
@@ -72,6 +73,18 @@ inline void gamma(u32bit& A0, u32bit& A1, u32bit& A2, u32bit& A3)
}
+std::string Noekeon::provider() const
+ {
+#if defined(BOTAN_HAS_NOEKEON_SIMD)
+ if(CPUID::has_simd_32())
+ {
+ return "simd";
+ }
+#endif
+
+ return "base";
+ }
+
/*
* Noekeon Round Constants
*/
@@ -85,6 +98,19 @@ const byte Noekeon::RC[] = {
*/
void Noekeon::encrypt_n(const byte in[], byte out[], size_t blocks) const
{
+#if defined(BOTAN_HAS_NOEKEON_SIMD)
+ if(CPUID::has_simd_32())
+ {
+ while(blocks >= 4)
+ {
+ simd_encrypt_4(in, out);
+ in += 4 * BLOCK_SIZE;
+ out += 4 * BLOCK_SIZE;
+ blocks -= 4;
+ }
+ }
+#endif
+
for(size_t i = 0; i != blocks; ++i)
{
u32bit A0 = load_be<u32bit>(in, 0);
@@ -123,6 +149,32 @@ void Noekeon::encrypt_n(const byte in[], byte out[], size_t blocks) const
*/
void Noekeon::decrypt_n(const byte in[], byte out[], size_t blocks) const
{
+#if defined(BOTAN_HAS_NOEKEON_SIMD)
+ if(CPUID::has_simd_32())
+ {
+ /*
+ const size_t blocks4 = blocks / 4;
+ const size_t blocks_left = blocks % 4;
+
+ in += blocks4 * BLOCK_SIZE;
+ out += blocks4 * BLOCK_SIZE;
+ blocks = blocks % 4;
+
+ BOTAN_PARALLEL_FOR(size_t i = 0; i < blocks4; ++i)
+ {
+ simd_encrypt_4(in + i*4*BLOCK_SIZE, out + i*4*BLOCK_SIZE);
+ }
+ */
+ while(blocks >= 4)
+ {
+ simd_decrypt_4(in, out);
+ in += 4 * BLOCK_SIZE;
+ out += 4 * BLOCK_SIZE;
+ blocks -= 4;
+ }
+ }
+#endif
+
for(size_t i = 0; i != blocks; ++i)
{
u32bit A0 = load_be<u32bit>(in, 0);
diff --git a/src/lib/block/noekeon/noekeon.h b/src/lib/block/noekeon/noekeon.h
index 4a3b9de0c..b0aa4218c 100644
--- a/src/lib/block/noekeon/noekeon.h
+++ b/src/lib/block/noekeon/noekeon.h
@@ -15,32 +15,27 @@ namespace Botan {
/**
* Noekeon
*/
-class BOTAN_DLL Noekeon : public Block_Cipher_Fixed_Params<16, 16>
+class BOTAN_DLL Noekeon final : public Block_Cipher_Fixed_Params<16, 16>
{
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;
+ std::string provider() const override;
void clear() override;
std::string name() const override { return "Noekeon"; }
BlockCipher* clone() const override { return new Noekeon; }
- protected:
+ private:
+#if defined(BOTAN_HAS_NOEKEON_SIMD)
+ void simd_encrypt_4(const byte in[], byte out[]) const;
+ void simd_decrypt_4(const byte in[], byte out[]) const;
+#endif
+
/**
* The Noekeon round constants
*/
static const byte RC[17];
- /**
- * @return const reference to encryption subkeys
- */
- const secure_vector<u32bit>& get_EK() const { return m_EK; }
-
- /**
- * @return const reference to decryption subkeys
- */
- const secure_vector<u32bit>& get_DK() const { return m_DK; }
-
- private:
void key_schedule(const byte[], size_t) override;
secure_vector<u32bit> m_EK, m_DK;
};
diff --git a/src/lib/block/noekeon_simd/info.txt b/src/lib/block/noekeon_simd/info.txt
index 3b92eb206..45ff93467 100644
--- a/src/lib/block/noekeon_simd/info.txt
+++ b/src/lib/block/noekeon_simd/info.txt
@@ -1,4 +1,4 @@
-define NOEKEON_SIMD 20131128
+define NOEKEON_SIMD 20160903
<requires>
noekeon
diff --git a/src/lib/block/noekeon_simd/noekeon_simd.cpp b/src/lib/block/noekeon_simd/noekeon_simd.cpp
index 07fcf19ff..e37412b5f 100644
--- a/src/lib/block/noekeon_simd/noekeon_simd.cpp
+++ b/src/lib/block/noekeon_simd/noekeon_simd.cpp
@@ -5,7 +5,7 @@
* Botan is released under the Simplified BSD License (see license.txt)
*/
-#include <botan/noekeon_simd.h>
+#include <botan/noekeon.h>
#include <botan/internal/simd_32.h>
namespace Botan {
@@ -63,115 +63,91 @@ namespace Botan {
/*
* Noekeon Encryption
*/
-void Noekeon_SIMD::encrypt_n(const byte in[], byte out[], size_t blocks) const
+void Noekeon::simd_encrypt_4(const byte in[], byte out[]) const
{
- const secure_vector<u32bit>& EK = this->get_EK();
+ const SIMD_32 K0 = SIMD_32(m_EK[0]);
+ const SIMD_32 K1 = SIMD_32(m_EK[1]);
+ const SIMD_32 K2 = SIMD_32(m_EK[2]);
+ const SIMD_32 K3 = SIMD_32(m_EK[3]);
- SIMD_32 K0 = SIMD_32(EK[0]);
- SIMD_32 K1 = SIMD_32(EK[1]);
- SIMD_32 K2 = SIMD_32(EK[2]);
- SIMD_32 K3 = SIMD_32(EK[3]);
+ SIMD_32 A0 = SIMD_32::load_be(in );
+ SIMD_32 A1 = SIMD_32::load_be(in + 16);
+ SIMD_32 A2 = SIMD_32::load_be(in + 32);
+ SIMD_32 A3 = SIMD_32::load_be(in + 48);
- while(blocks >= 4)
- {
- SIMD_32 A0 = SIMD_32::load_be(in );
- SIMD_32 A1 = SIMD_32::load_be(in + 16);
- SIMD_32 A2 = SIMD_32::load_be(in + 32);
- SIMD_32 A3 = SIMD_32::load_be(in + 48);
-
- SIMD_32::transpose(A0, A1, A2, A3);
-
- for(size_t i = 0; i != 16; ++i)
- {
- A0 ^= SIMD_32(RC[i]);
-
- NOK_SIMD_THETA(A0, A1, A2, A3, K0, K1, K2, K3);
-
- A1.rotate_left(1);
- A2.rotate_left(5);
- A3.rotate_left(2);
+ SIMD_32::transpose(A0, A1, A2, A3);
- NOK_SIMD_GAMMA(A0, A1, A2, A3);
-
- A1.rotate_right(1);
- A2.rotate_right(5);
- A3.rotate_right(2);
- }
+ for(size_t i = 0; i != 16; ++i)
+ {
+ A0 ^= SIMD_32(RC[i]);
- A0 ^= SIMD_32(RC[16]);
NOK_SIMD_THETA(A0, A1, A2, A3, K0, K1, K2, K3);
- SIMD_32::transpose(A0, A1, A2, A3);
+ A1.rotate_left(1);
+ A2.rotate_left(5);
+ A3.rotate_left(2);
- A0.store_be(out);
- A1.store_be(out + 16);
- A2.store_be(out + 32);
- A3.store_be(out + 48);
+ NOK_SIMD_GAMMA(A0, A1, A2, A3);
- in += 64;
- out += 64;
- blocks -= 4;
+ A1.rotate_right(1);
+ A2.rotate_right(5);
+ A3.rotate_right(2);
}
- if(blocks)
- Noekeon::encrypt_n(in, out, blocks);
+ A0 ^= SIMD_32(RC[16]);
+ NOK_SIMD_THETA(A0, A1, A2, A3, K0, K1, K2, K3);
+
+ SIMD_32::transpose(A0, A1, A2, A3);
+
+ A0.store_be(out);
+ A1.store_be(out + 16);
+ A2.store_be(out + 32);
+ A3.store_be(out + 48);
}
/*
* Noekeon Encryption
*/
-void Noekeon_SIMD::decrypt_n(const byte in[], byte out[], size_t blocks) const
+void Noekeon::simd_decrypt_4(const byte in[], byte out[]) const
{
- const secure_vector<u32bit>& DK = this->get_DK();
+ const SIMD_32 K0 = SIMD_32(m_DK[0]);
+ const SIMD_32 K1 = SIMD_32(m_DK[1]);
+ const SIMD_32 K2 = SIMD_32(m_DK[2]);
+ const SIMD_32 K3 = SIMD_32(m_DK[3]);
- SIMD_32 K0 = SIMD_32(DK[0]);
- SIMD_32 K1 = SIMD_32(DK[1]);
- SIMD_32 K2 = SIMD_32(DK[2]);
- SIMD_32 K3 = SIMD_32(DK[3]);
+ SIMD_32 A0 = SIMD_32::load_be(in );
+ SIMD_32 A1 = SIMD_32::load_be(in + 16);
+ SIMD_32 A2 = SIMD_32::load_be(in + 32);
+ SIMD_32 A3 = SIMD_32::load_be(in + 48);
- while(blocks >= 4)
- {
- SIMD_32 A0 = SIMD_32::load_be(in );
- SIMD_32 A1 = SIMD_32::load_be(in + 16);
- SIMD_32 A2 = SIMD_32::load_be(in + 32);
- SIMD_32 A3 = SIMD_32::load_be(in + 48);
-
- SIMD_32::transpose(A0, A1, A2, A3);
-
- for(size_t i = 0; i != 16; ++i)
- {
- NOK_SIMD_THETA(A0, A1, A2, A3, K0, K1, K2, K3);
+ SIMD_32::transpose(A0, A1, A2, A3);
- A0 ^= SIMD_32(RC[16-i]);
-
- A1.rotate_left(1);
- A2.rotate_left(5);
- A3.rotate_left(2);
+ for(size_t i = 0; i != 16; ++i)
+ {
+ NOK_SIMD_THETA(A0, A1, A2, A3, K0, K1, K2, K3);
- NOK_SIMD_GAMMA(A0, A1, A2, A3);
+ A0 ^= SIMD_32(RC[16-i]);
- A1.rotate_right(1);
- A2.rotate_right(5);
- A3.rotate_right(2);
- }
+ A1.rotate_left(1);
+ A2.rotate_left(5);
+ A3.rotate_left(2);
- NOK_SIMD_THETA(A0, A1, A2, A3, K0, K1, K2, K3);
- A0 ^= SIMD_32(RC[0]);
+ NOK_SIMD_GAMMA(A0, A1, A2, A3);
- SIMD_32::transpose(A0, A1, A2, A3);
+ A1.rotate_right(1);
+ A2.rotate_right(5);
+ A3.rotate_right(2);
+ }
- A0.store_be(out);
- A1.store_be(out + 16);
- A2.store_be(out + 32);
- A3.store_be(out + 48);
+ NOK_SIMD_THETA(A0, A1, A2, A3, K0, K1, K2, K3);
+ A0 ^= SIMD_32(RC[0]);
- in += 64;
- out += 64;
- blocks -= 4;
- }
+ SIMD_32::transpose(A0, A1, A2, A3);
- if(blocks)
- Noekeon::decrypt_n(in, out, blocks);
+ A0.store_be(out);
+ A1.store_be(out + 16);
+ A2.store_be(out + 32);
+ A3.store_be(out + 48);
}
}
diff --git a/src/lib/block/noekeon_simd/noekeon_simd.h b/src/lib/block/noekeon_simd/noekeon_simd.h
deleted file mode 100644
index 7907fc4ca..000000000
--- a/src/lib/block/noekeon_simd/noekeon_simd.h
+++ /dev/null
@@ -1,31 +0,0 @@
-/*
-* Noekeon in SIMD
-* (C) 2010 Jack Lloyd
-*
-* Botan is released under the Simplified BSD License (see license.txt)
-*/
-
-#ifndef BOTAN_NOEKEON_SIMD_H__
-#define BOTAN_NOEKEON_SIMD_H__
-
-#include <botan/noekeon.h>
-
-namespace Botan {
-
-/**
-* Noekeon implementation using SIMD operations
-*/
-class BOTAN_DLL Noekeon_SIMD final : public Noekeon
- {
- public:
- size_t parallelism() const override { return 4; }
-
- 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;
-
- BlockCipher* clone() const override { return new Noekeon_SIMD; }
- };
-
-}
-
-#endif
diff --git a/src/lib/block/rc2/info.txt b/src/lib/block/rc2/info.txt
deleted file mode 100644
index fae09cf23..000000000
--- a/src/lib/block/rc2/info.txt
+++ /dev/null
@@ -1 +0,0 @@
-define RC2 20131128
diff --git a/src/lib/block/rc2/rc2.cpp b/src/lib/block/rc2/rc2.cpp
deleted file mode 100644
index 112c6561d..000000000
--- a/src/lib/block/rc2/rc2.cpp
+++ /dev/null
@@ -1,181 +0,0 @@
-/*
-* RC2
-* (C) 1999-2007 Jack Lloyd
-*
-* Botan is released under the Simplified BSD License (see license.txt)
-*/
-
-#include <botan/rc2.h>
-#include <botan/loadstor.h>
-
-namespace Botan {
-
-/*
-* RC2 Encryption
-*/
-void RC2::encrypt_n(const byte in[], byte out[], size_t blocks) const
- {
- for(size_t i = 0; i != blocks; ++i)
- {
- u16bit R0 = load_le<u16bit>(in, 0);
- u16bit R1 = load_le<u16bit>(in, 1);
- u16bit R2 = load_le<u16bit>(in, 2);
- u16bit R3 = load_le<u16bit>(in, 3);
-
- for(size_t j = 0; j != 16; ++j)
- {
- R0 += (R1 & ~R3) + (R2 & R3) + m_K[4*j];
- R0 = rotate_left(R0, 1);
-
- R1 += (R2 & ~R0) + (R3 & R0) + m_K[4*j + 1];
- R1 = rotate_left(R1, 2);
-
- R2 += (R3 & ~R1) + (R0 & R1) + m_K[4*j + 2];
- R2 = rotate_left(R2, 3);
-
- R3 += (R0 & ~R2) + (R1 & R2) + m_K[4*j + 3];
- R3 = rotate_left(R3, 5);
-
- if(j == 4 || j == 10)
- {
- R0 += m_K[R3 % 64];
- R1 += m_K[R0 % 64];
- R2 += m_K[R1 % 64];
- R3 += m_K[R2 % 64];
- }
- }
-
- store_le(out, R0, R1, R2, R3);
-
- in += BLOCK_SIZE;
- out += BLOCK_SIZE;
- }
- }
-
-/*
-* RC2 Decryption
-*/
-void RC2::decrypt_n(const byte in[], byte out[], size_t blocks) const
- {
- for(size_t i = 0; i != blocks; ++i)
- {
- u16bit R0 = load_le<u16bit>(in, 0);
- u16bit R1 = load_le<u16bit>(in, 1);
- u16bit R2 = load_le<u16bit>(in, 2);
- u16bit R3 = load_le<u16bit>(in, 3);
-
- for(size_t j = 0; j != 16; ++j)
- {
- R3 = rotate_right(R3, 5);
- R3 -= (R0 & ~R2) + (R1 & R2) + m_K[63 - (4*j + 0)];
-
- R2 = rotate_right(R2, 3);
- R2 -= (R3 & ~R1) + (R0 & R1) + m_K[63 - (4*j + 1)];
-
- R1 = rotate_right(R1, 2);
- R1 -= (R2 & ~R0) + (R3 & R0) + m_K[63 - (4*j + 2)];
-
- R0 = rotate_right(R0, 1);
- R0 -= (R1 & ~R3) + (R2 & R3) + m_K[63 - (4*j + 3)];
-
- if(j == 4 || j == 10)
- {
- R3 -= m_K[R2 % 64];
- R2 -= m_K[R1 % 64];
- R1 -= m_K[R0 % 64];
- R0 -= m_K[R3 % 64];
- }
- }
-
- store_le(out, R0, R1, R2, R3);
-
- in += BLOCK_SIZE;
- out += BLOCK_SIZE;
- }
- }
-
-/*
-* RC2 Key Schedule
-*/
-void RC2::key_schedule(const byte key[], size_t length)
- {
- static const byte TABLE[256] = {
- 0xD9, 0x78, 0xF9, 0xC4, 0x19, 0xDD, 0xB5, 0xED, 0x28, 0xE9, 0xFD, 0x79,
- 0x4A, 0xA0, 0xD8, 0x9D, 0xC6, 0x7E, 0x37, 0x83, 0x2B, 0x76, 0x53, 0x8E,
- 0x62, 0x4C, 0x64, 0x88, 0x44, 0x8B, 0xFB, 0xA2, 0x17, 0x9A, 0x59, 0xF5,
- 0x87, 0xB3, 0x4F, 0x13, 0x61, 0x45, 0x6D, 0x8D, 0x09, 0x81, 0x7D, 0x32,
- 0xBD, 0x8F, 0x40, 0xEB, 0x86, 0xB7, 0x7B, 0x0B, 0xF0, 0x95, 0x21, 0x22,
- 0x5C, 0x6B, 0x4E, 0x82, 0x54, 0xD6, 0x65, 0x93, 0xCE, 0x60, 0xB2, 0x1C,
- 0x73, 0x56, 0xC0, 0x14, 0xA7, 0x8C, 0xF1, 0xDC, 0x12, 0x75, 0xCA, 0x1F,
- 0x3B, 0xBE, 0xE4, 0xD1, 0x42, 0x3D, 0xD4, 0x30, 0xA3, 0x3C, 0xB6, 0x26,
- 0x6F, 0xBF, 0x0E, 0xDA, 0x46, 0x69, 0x07, 0x57, 0x27, 0xF2, 0x1D, 0x9B,
- 0xBC, 0x94, 0x43, 0x03, 0xF8, 0x11, 0xC7, 0xF6, 0x90, 0xEF, 0x3E, 0xE7,
- 0x06, 0xC3, 0xD5, 0x2F, 0xC8, 0x66, 0x1E, 0xD7, 0x08, 0xE8, 0xEA, 0xDE,
- 0x80, 0x52, 0xEE, 0xF7, 0x84, 0xAA, 0x72, 0xAC, 0x35, 0x4D, 0x6A, 0x2A,
- 0x96, 0x1A, 0xD2, 0x71, 0x5A, 0x15, 0x49, 0x74, 0x4B, 0x9F, 0xD0, 0x5E,
- 0x04, 0x18, 0xA4, 0xEC, 0xC2, 0xE0, 0x41, 0x6E, 0x0F, 0x51, 0xCB, 0xCC,
- 0x24, 0x91, 0xAF, 0x50, 0xA1, 0xF4, 0x70, 0x39, 0x99, 0x7C, 0x3A, 0x85,
- 0x23, 0xB8, 0xB4, 0x7A, 0xFC, 0x02, 0x36, 0x5B, 0x25, 0x55, 0x97, 0x31,
- 0x2D, 0x5D, 0xFA, 0x98, 0xE3, 0x8A, 0x92, 0xAE, 0x05, 0xDF, 0x29, 0x10,
- 0x67, 0x6C, 0xBA, 0xC9, 0xD3, 0x00, 0xE6, 0xCF, 0xE1, 0x9E, 0xA8, 0x2C,
- 0x63, 0x16, 0x01, 0x3F, 0x58, 0xE2, 0x89, 0xA9, 0x0D, 0x38, 0x34, 0x1B,
- 0xAB, 0x33, 0xFF, 0xB0, 0xBB, 0x48, 0x0C, 0x5F, 0xB9, 0xB1, 0xCD, 0x2E,
- 0xC5, 0xF3, 0xDB, 0x47, 0xE5, 0xA5, 0x9C, 0x77, 0x0A, 0xA6, 0x20, 0x68,
- 0xFE, 0x7F, 0xC1, 0xAD };
-
- secure_vector<byte> L(128);
- copy_mem(L.data(), key, length);
-
- for(size_t i = length; i != 128; ++i)
- L[i] = TABLE[(L[i-1] + L[i-length]) % 256];
-
- L[128-length] = TABLE[L[128-length]];
-
- for(s32bit i = 127-length; i >= 0; --i)
- L[i] = TABLE[L[i+1] ^ L[i+length]];
-
- m_K.resize(64);
- load_le<u16bit>(m_K.data(), L.data(), 64);
- }
-
-void RC2::clear()
- {
- zap(m_K);
- }
-
-/*
-* Return the code of the effective key bits
-*/
-byte RC2::EKB_code(size_t ekb)
- {
- const byte EKB[256] = {
- 0xBD, 0x56, 0xEA, 0xF2, 0xA2, 0xF1, 0xAC, 0x2A, 0xB0, 0x93, 0xD1, 0x9C,
- 0x1B, 0x33, 0xFD, 0xD0, 0x30, 0x04, 0xB6, 0xDC, 0x7D, 0xDF, 0x32, 0x4B,
- 0xF7, 0xCB, 0x45, 0x9B, 0x31, 0xBB, 0x21, 0x5A, 0x41, 0x9F, 0xE1, 0xD9,
- 0x4A, 0x4D, 0x9E, 0xDA, 0xA0, 0x68, 0x2C, 0xC3, 0x27, 0x5F, 0x80, 0x36,
- 0x3E, 0xEE, 0xFB, 0x95, 0x1A, 0xFE, 0xCE, 0xA8, 0x34, 0xA9, 0x13, 0xF0,
- 0xA6, 0x3F, 0xD8, 0x0C, 0x78, 0x24, 0xAF, 0x23, 0x52, 0xC1, 0x67, 0x17,
- 0xF5, 0x66, 0x90, 0xE7, 0xE8, 0x07, 0xB8, 0x60, 0x48, 0xE6, 0x1E, 0x53,
- 0xF3, 0x92, 0xA4, 0x72, 0x8C, 0x08, 0x15, 0x6E, 0x86, 0x00, 0x84, 0xFA,
- 0xF4, 0x7F, 0x8A, 0x42, 0x19, 0xF6, 0xDB, 0xCD, 0x14, 0x8D, 0x50, 0x12,
- 0xBA, 0x3C, 0x06, 0x4E, 0xEC, 0xB3, 0x35, 0x11, 0xA1, 0x88, 0x8E, 0x2B,
- 0x94, 0x99, 0xB7, 0x71, 0x74, 0xD3, 0xE4, 0xBF, 0x3A, 0xDE, 0x96, 0x0E,
- 0xBC, 0x0A, 0xED, 0x77, 0xFC, 0x37, 0x6B, 0x03, 0x79, 0x89, 0x62, 0xC6,
- 0xD7, 0xC0, 0xD2, 0x7C, 0x6A, 0x8B, 0x22, 0xA3, 0x5B, 0x05, 0x5D, 0x02,
- 0x75, 0xD5, 0x61, 0xE3, 0x18, 0x8F, 0x55, 0x51, 0xAD, 0x1F, 0x0B, 0x5E,
- 0x85, 0xE5, 0xC2, 0x57, 0x63, 0xCA, 0x3D, 0x6C, 0xB4, 0xC5, 0xCC, 0x70,
- 0xB2, 0x91, 0x59, 0x0D, 0x47, 0x20, 0xC8, 0x4F, 0x58, 0xE0, 0x01, 0xE2,
- 0x16, 0x38, 0xC4, 0x6F, 0x3B, 0x0F, 0x65, 0x46, 0xBE, 0x7E, 0x2D, 0x7B,
- 0x82, 0xF9, 0x40, 0xB5, 0x1D, 0x73, 0xF8, 0xEB, 0x26, 0xC7, 0x87, 0x97,
- 0x25, 0x54, 0xB1, 0x28, 0xAA, 0x98, 0x9D, 0xA5, 0x64, 0x6D, 0x7A, 0xD4,
- 0x10, 0x81, 0x44, 0xEF, 0x49, 0xD6, 0xAE, 0x2E, 0xDD, 0x76, 0x5C, 0x2F,
- 0xA7, 0x1C, 0xC9, 0x09, 0x69, 0x9A, 0x83, 0xCF, 0x29, 0x39, 0xB9, 0xE9,
- 0x4C, 0xFF, 0x43, 0xAB };
-
- if(ekb < 256)
- return EKB[ekb];
- else
- throw Encoding_Error("RC2::EKB_code: EKB is too large");
- }
-
-}
diff --git a/src/lib/block/rc2/rc2.h b/src/lib/block/rc2/rc2.h
deleted file mode 100644
index 9ec9b9557..000000000
--- a/src/lib/block/rc2/rc2.h
+++ /dev/null
@@ -1,42 +0,0 @@
-/*
-* RC2
-* (C) 1999-2007 Jack Lloyd
-*
-* Botan is released under the Simplified BSD License (see license.txt)
-*/
-
-#ifndef BOTAN_RC2_H__
-#define BOTAN_RC2_H__
-
-#include <botan/block_cipher.h>
-
-namespace Botan {
-
-/**
-* RC2
-*/
-class BOTAN_DLL RC2 final : public Block_Cipher_Fixed_Params<8, 1, 32>
- {
- 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;
-
- /**
- * Return the code of the effective key bits
- * @param bits key length
- * @return EKB code
- */
- static byte EKB_code(size_t bits);
-
- void clear() override;
- std::string name() const override { return "RC2"; }
- BlockCipher* clone() const override { return new RC2; }
- private:
- void key_schedule(const byte[], size_t) override;
-
- secure_vector<u16bit> m_K;
- };
-
-}
-
-#endif
diff --git a/src/lib/block/rc5/info.txt b/src/lib/block/rc5/info.txt
deleted file mode 100644
index 2c2c613ba..000000000
--- a/src/lib/block/rc5/info.txt
+++ /dev/null
@@ -1 +0,0 @@
-define RC5 20131128
diff --git a/src/lib/block/rc5/rc5.cpp b/src/lib/block/rc5/rc5.cpp
deleted file mode 100644
index a02a45e9f..000000000
--- a/src/lib/block/rc5/rc5.cpp
+++ /dev/null
@@ -1,133 +0,0 @@
-/*
-* RC5
-* (C) 1999-2007 Jack Lloyd
-*
-* Botan is released under the Simplified BSD License (see license.txt)
-*/
-
-#include <botan/rc5.h>
-#include <botan/loadstor.h>
-#include <botan/parsing.h>
-
-namespace Botan {
-
-/*
-* RC5 Encryption
-*/
-void RC5::encrypt_n(const byte in[], byte out[], size_t blocks) const
- {
- for(size_t i = 0; i != blocks; ++i)
- {
- u32bit A = load_le<u32bit>(in, 0);
- u32bit B = load_le<u32bit>(in, 1);
-
- A += m_S[0]; B += m_S[1];
- for(size_t j = 0; j != m_rounds; j += 4)
- {
- A = rotate_left(A ^ B, B % 32) + m_S[2*j+2];
- B = rotate_left(B ^ A, A % 32) + m_S[2*j+3];
-
- A = rotate_left(A ^ B, B % 32) + m_S[2*j+4];
- B = rotate_left(B ^ A, A % 32) + m_S[2*j+5];
-
- A = rotate_left(A ^ B, B % 32) + m_S[2*j+6];
- B = rotate_left(B ^ A, A % 32) + m_S[2*j+7];
-
- A = rotate_left(A ^ B, B % 32) + m_S[2*j+8];
- B = rotate_left(B ^ A, A % 32) + m_S[2*j+9];
- }
-
- store_le(out, A, B);
-
- in += BLOCK_SIZE;
- out += BLOCK_SIZE;
- }
- }
-
-/*
-* RC5 Decryption
-*/
-void RC5::decrypt_n(const byte in[], byte out[], size_t blocks) const
- {
- for(size_t i = 0; i != blocks; ++i)
- {
- u32bit A = load_le<u32bit>(in, 0);
- u32bit B = load_le<u32bit>(in, 1);
-
- for(size_t j = m_rounds; j != 0; j -= 4)
- {
- B = rotate_right(B - m_S[2*j+1], A % 32) ^ A;
- A = rotate_right(A - m_S[2*j ], B % 32) ^ B;
-
- B = rotate_right(B - m_S[2*j-1], A % 32) ^ A;
- A = rotate_right(A - m_S[2*j-2], B % 32) ^ B;
-
- B = rotate_right(B - m_S[2*j-3], A % 32) ^ A;
- A = rotate_right(A - m_S[2*j-4], B % 32) ^ B;
-
- B = rotate_right(B - m_S[2*j-5], A % 32) ^ A;
- A = rotate_right(A - m_S[2*j-6], B % 32) ^ B;
- }
- B -= m_S[1]; A -= m_S[0];
-
- store_le(out, A, B);
-
- in += BLOCK_SIZE;
- out += BLOCK_SIZE;
- }
- }
-
-/*
-* RC5 Key Schedule
-*/
-void RC5::key_schedule(const byte key[], size_t length)
- {
- m_S.resize(2*m_rounds + 2);
-
- const size_t WORD_KEYLENGTH = (((length - 1) / 4) + 1);
- const size_t MIX_ROUNDS = 3 * std::max(WORD_KEYLENGTH, m_S.size());
-
- m_S[0] = 0xB7E15163;
- for(size_t i = 1; i != m_S.size(); ++i)
- m_S[i] = m_S[i-1] + 0x9E3779B9;
-
- secure_vector<u32bit> K(8);
-
- for(s32bit i = length-1; i >= 0; --i)
- K[i/4] = (K[i/4] << 8) + key[i];
-
- u32bit A = 0, B = 0;
-
- for(size_t i = 0; i != MIX_ROUNDS; ++i)
- {
- A = rotate_left(m_S[i % m_S.size()] + A + B, 3);
- B = rotate_left(K[i % WORD_KEYLENGTH] + A + B, (A + B) % 32);
- m_S[i % m_S.size()] = A;
- K[i % WORD_KEYLENGTH] = B;
- }
- }
-
-void RC5::clear()
- {
- zap(m_S);
- }
-
-/*
-* Return the name of this type
-*/
-std::string RC5::name() const
- {
- return "RC5(" + std::to_string(m_rounds) + ")";
- }
-
-/*
-* RC5 Constructor
-*/
-RC5::RC5(size_t r) : m_rounds(r)
- {
- if(m_rounds < 8 || m_rounds > 32 || (m_rounds % 4 != 0))
- throw Invalid_Argument("RC5: Invalid number of rounds " +
- std::to_string(m_rounds));
- }
-
-}
diff --git a/src/lib/block/rc5/rc5.h b/src/lib/block/rc5/rc5.h
deleted file mode 100644
index 4d9232326..000000000
--- a/src/lib/block/rc5/rc5.h
+++ /dev/null
@@ -1,42 +0,0 @@
-/*
-* RC5
-* (C) 1999-2007 Jack Lloyd
-*
-* Botan is released under the Simplified BSD License (see license.txt)
-*/
-
-#ifndef BOTAN_RC5_H__
-#define BOTAN_RC5_H__
-
-#include <botan/block_cipher.h>
-
-namespace Botan {
-
-/**
-* RC5
-*/
-class BOTAN_DLL RC5 final : public Block_Cipher_Fixed_Params<8, 1, 32>
- {
- 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;
-
- void clear() override;
- std::string name() const override;
- BlockCipher* clone() const override { return new RC5(m_rounds); }
-
- /**
- * @param rounds the number of RC5 rounds to run. Must be between
- * 8 and 32 and a multiple of 4.
- */
- explicit RC5(size_t rounds);
- private:
- void key_schedule(const byte[], size_t) override;
-
- size_t m_rounds;
- secure_vector<u32bit> m_S;
- };
-
-}
-
-#endif
diff --git a/src/lib/block/rc6/info.txt b/src/lib/block/rc6/info.txt
deleted file mode 100644
index e54379f65..000000000
--- a/src/lib/block/rc6/info.txt
+++ /dev/null
@@ -1 +0,0 @@
-define RC6 20131128
diff --git a/src/lib/block/rc6/rc6.cpp b/src/lib/block/rc6/rc6.cpp
deleted file mode 100644
index 426b86ebd..000000000
--- a/src/lib/block/rc6/rc6.cpp
+++ /dev/null
@@ -1,143 +0,0 @@
-/*
-* RC6
-* (C) 1999-2007 Jack Lloyd
-*
-* Botan is released under the Simplified BSD License (see license.txt)
-*/
-
-#include <botan/rc6.h>
-#include <botan/loadstor.h>
-
-namespace Botan {
-
-/*
-* RC6 Encryption
-*/
-void RC6::encrypt_n(const byte in[], byte out[], size_t blocks) const
- {
- for(size_t i = 0; i != blocks; ++i)
- {
- u32bit A = load_le<u32bit>(in, 0);
- u32bit B = load_le<u32bit>(in, 1);
- u32bit C = load_le<u32bit>(in, 2);
- u32bit D = load_le<u32bit>(in, 3);
-
- B += m_S[0]; D += m_S[1];
-
- for(size_t j = 0; j != 20; j += 4)
- {
- u32bit T1, T2;
-
- T1 = rotate_left(B*(2*B+1), 5);
- T2 = rotate_left(D*(2*D+1), 5);
- A = rotate_left(A ^ T1, T2 % 32) + m_S[2*j+2];
- C = rotate_left(C ^ T2, T1 % 32) + m_S[2*j+3];
-
- T1 = rotate_left(C*(2*C+1), 5);
- T2 = rotate_left(A*(2*A+1), 5);
- B = rotate_left(B ^ T1, T2 % 32) + m_S[2*j+4];
- D = rotate_left(D ^ T2, T1 % 32) + m_S[2*j+5];
-
- T1 = rotate_left(D*(2*D+1), 5);
- T2 = rotate_left(B*(2*B+1), 5);
- C = rotate_left(C ^ T1, T2 % 32) + m_S[2*j+6];
- A = rotate_left(A ^ T2, T1 % 32) + m_S[2*j+7];
-
- T1 = rotate_left(A*(2*A+1), 5);
- T2 = rotate_left(C*(2*C+1), 5);
- D = rotate_left(D ^ T1, T2 % 32) + m_S[2*j+8];
- B = rotate_left(B ^ T2, T1 % 32) + m_S[2*j+9];
- }
-
- A += m_S[42]; C += m_S[43];
-
- store_le(out, A, B, C, D);
-
- in += BLOCK_SIZE;
- out += BLOCK_SIZE;
- }
- }
-
-/*
-* RC6 Decryption
-*/
-void RC6::decrypt_n(const byte in[], byte out[], size_t blocks) const
- {
- for(size_t i = 0; i != blocks; ++i)
- {
- u32bit A = load_le<u32bit>(in, 0);
- u32bit B = load_le<u32bit>(in, 1);
- u32bit C = load_le<u32bit>(in, 2);
- u32bit D = load_le<u32bit>(in, 3);
-
- C -= m_S[43]; A -= m_S[42];
-
- for(size_t j = 0; j != 20; j += 4)
- {
- u32bit T1, T2;
-
- T1 = rotate_left(A*(2*A+1), 5);
- T2 = rotate_left(C*(2*C+1), 5);
- B = rotate_right(B - m_S[41 - 2*j], T1 % 32) ^ T2;
- D = rotate_right(D - m_S[40 - 2*j], T2 % 32) ^ T1;
-
- T1 = rotate_left(D*(2*D+1), 5);
- T2 = rotate_left(B*(2*B+1), 5);
- A = rotate_right(A - m_S[39 - 2*j], T1 % 32) ^ T2;
- C = rotate_right(C - m_S[38 - 2*j], T2 % 32) ^ T1;
-
- T1 = rotate_left(C*(2*C+1), 5);
- T2 = rotate_left(A*(2*A+1), 5);
- D = rotate_right(D - m_S[37 - 2*j], T1 % 32) ^ T2;
- B = rotate_right(B - m_S[36 - 2*j], T2 % 32) ^ T1;
-
- T1 = rotate_left(B*(2*B+1), 5);
- T2 = rotate_left(D*(2*D+1), 5);
- C = rotate_right(C - m_S[35 - 2*j], T1 % 32) ^ T2;
- A = rotate_right(A - m_S[34 - 2*j], T2 % 32) ^ T1;
- }
-
- D -= m_S[1]; B -= m_S[0];
-
- store_le(out, A, B, C, D);
-
- in += BLOCK_SIZE;
- out += BLOCK_SIZE;
- }
- }
-
-/*
-* RC6 Key Schedule
-*/
-void RC6::key_schedule(const byte key[], size_t length)
- {
- m_S.resize(44);
-
- const size_t WORD_KEYLENGTH = (((length - 1) / 4) + 1);
- const size_t MIX_ROUNDS = 3 * std::max(WORD_KEYLENGTH, m_S.size());
-
- m_S[0] = 0xB7E15163;
- for(size_t i = 1; i != m_S.size(); ++i)
- m_S[i] = m_S[i-1] + 0x9E3779B9;
-
- secure_vector<u32bit> K(8);
-
- for(s32bit i = length-1; i >= 0; --i)
- K[i/4] = (K[i/4] << 8) + key[i];
-
- u32bit A = 0, B = 0;
- for(size_t i = 0; i != MIX_ROUNDS; ++i)
- {
- A = rotate_left(m_S[i % m_S.size()] + A + B, 3);
- B = rotate_left(K[i % WORD_KEYLENGTH] + A + B, (A + B) % 32);
- m_S[i % m_S.size()] = A;
- K[i % WORD_KEYLENGTH] = B;
- }
- }
-
-void RC6::clear()
- {
- zap(m_S);
- }
-
-}
diff --git a/src/lib/block/rc6/rc6.h b/src/lib/block/rc6/rc6.h
deleted file mode 100644
index 3f9bb0af1..000000000
--- a/src/lib/block/rc6/rc6.h
+++ /dev/null
@@ -1,35 +0,0 @@
-/*
-* RC6
-* (C) 1999-2007 Jack Lloyd
-*
-* Botan is released under the Simplified BSD License (see license.txt)
-*/
-
-#ifndef BOTAN_RC6_H__
-#define BOTAN_RC6_H__
-
-#include <botan/block_cipher.h>
-
-namespace Botan {
-
-/**
-* RC6, Ron Rivest's AES candidate
-*/
-class BOTAN_DLL RC6 final : public Block_Cipher_Fixed_Params<16, 1, 32>
- {
- 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;
-
- void clear() override;
- std::string name() const override { return "RC6"; }
- BlockCipher* clone() const override { return new RC6; }
- private:
- void key_schedule(const byte[], size_t) override;
-
- secure_vector<u32bit> m_S;
- };
-
-}
-
-#endif
diff --git a/src/lib/block/safer/info.txt b/src/lib/block/safer/info.txt
deleted file mode 100644
index ad7841dab..000000000
--- a/src/lib/block/safer/info.txt
+++ /dev/null
@@ -1 +0,0 @@
-define SAFER 20131128
diff --git a/src/lib/block/safer/safer_sk.cpp b/src/lib/block/safer/safer_sk.cpp
deleted file mode 100644
index 8dec0b897..000000000
--- a/src/lib/block/safer/safer_sk.cpp
+++ /dev/null
@@ -1,255 +0,0 @@
-/*
-* SAFER-SK
-* (C) 1999-2009 Jack Lloyd
-*
-* Botan is released under the Simplified BSD License (see license.txt)
-*/
-
-#include <botan/safer_sk.h>
-#include <botan/rotate.h>
-#include <botan/parsing.h>
-
-namespace Botan {
-
-namespace {
-
-const byte EXP[256] = {
- 0x01, 0x2D, 0xE2, 0x93, 0xBE, 0x45, 0x15, 0xAE, 0x78, 0x03, 0x87, 0xA4,
- 0xB8, 0x38, 0xCF, 0x3F, 0x08, 0x67, 0x09, 0x94, 0xEB, 0x26, 0xA8, 0x6B,
- 0xBD, 0x18, 0x34, 0x1B, 0xBB, 0xBF, 0x72, 0xF7, 0x40, 0x35, 0x48, 0x9C,
- 0x51, 0x2F, 0x3B, 0x55, 0xE3, 0xC0, 0x9F, 0xD8, 0xD3, 0xF3, 0x8D, 0xB1,
- 0xFF, 0xA7, 0x3E, 0xDC, 0x86, 0x77, 0xD7, 0xA6, 0x11, 0xFB, 0xF4, 0xBA,
- 0x92, 0x91, 0x64, 0x83, 0xF1, 0x33, 0xEF, 0xDA, 0x2C, 0xB5, 0xB2, 0x2B,
- 0x88, 0xD1, 0x99, 0xCB, 0x8C, 0x84, 0x1D, 0x14, 0x81, 0x97, 0x71, 0xCA,
- 0x5F, 0xA3, 0x8B, 0x57, 0x3C, 0x82, 0xC4, 0x52, 0x5C, 0x1C, 0xE8, 0xA0,
- 0x04, 0xB4, 0x85, 0x4A, 0xF6, 0x13, 0x54, 0xB6, 0xDF, 0x0C, 0x1A, 0x8E,
- 0xDE, 0xE0, 0x39, 0xFC, 0x20, 0x9B, 0x24, 0x4E, 0xA9, 0x98, 0x9E, 0xAB,
- 0xF2, 0x60, 0xD0, 0x6C, 0xEA, 0xFA, 0xC7, 0xD9, 0x00, 0xD4, 0x1F, 0x6E,
- 0x43, 0xBC, 0xEC, 0x53, 0x89, 0xFE, 0x7A, 0x5D, 0x49, 0xC9, 0x32, 0xC2,
- 0xF9, 0x9A, 0xF8, 0x6D, 0x16, 0xDB, 0x59, 0x96, 0x44, 0xE9, 0xCD, 0xE6,
- 0x46, 0x42, 0x8F, 0x0A, 0xC1, 0xCC, 0xB9, 0x65, 0xB0, 0xD2, 0xC6, 0xAC,
- 0x1E, 0x41, 0x62, 0x29, 0x2E, 0x0E, 0x74, 0x50, 0x02, 0x5A, 0xC3, 0x25,
- 0x7B, 0x8A, 0x2A, 0x5B, 0xF0, 0x06, 0x0D, 0x47, 0x6F, 0x70, 0x9D, 0x7E,
- 0x10, 0xCE, 0x12, 0x27, 0xD5, 0x4C, 0x4F, 0xD6, 0x79, 0x30, 0x68, 0x36,
- 0x75, 0x7D, 0xE4, 0xED, 0x80, 0x6A, 0x90, 0x37, 0xA2, 0x5E, 0x76, 0xAA,
- 0xC5, 0x7F, 0x3D, 0xAF, 0xA5, 0xE5, 0x19, 0x61, 0xFD, 0x4D, 0x7C, 0xB7,
- 0x0B, 0xEE, 0xAD, 0x4B, 0x22, 0xF5, 0xE7, 0x73, 0x23, 0x21, 0xC8, 0x05,
- 0xE1, 0x66, 0xDD, 0xB3, 0x58, 0x69, 0x63, 0x56, 0x0F, 0xA1, 0x31, 0x95,
- 0x17, 0x07, 0x3A, 0x28 };
-
-const byte LOG[512] = {
- 0x80, 0x00, 0xB0, 0x09, 0x60, 0xEF, 0xB9, 0xFD, 0x10, 0x12, 0x9F, 0xE4,
- 0x69, 0xBA, 0xAD, 0xF8, 0xC0, 0x38, 0xC2, 0x65, 0x4F, 0x06, 0x94, 0xFC,
- 0x19, 0xDE, 0x6A, 0x1B, 0x5D, 0x4E, 0xA8, 0x82, 0x70, 0xED, 0xE8, 0xEC,
- 0x72, 0xB3, 0x15, 0xC3, 0xFF, 0xAB, 0xB6, 0x47, 0x44, 0x01, 0xAC, 0x25,
- 0xC9, 0xFA, 0x8E, 0x41, 0x1A, 0x21, 0xCB, 0xD3, 0x0D, 0x6E, 0xFE, 0x26,
- 0x58, 0xDA, 0x32, 0x0F, 0x20, 0xA9, 0x9D, 0x84, 0x98, 0x05, 0x9C, 0xBB,
- 0x22, 0x8C, 0x63, 0xE7, 0xC5, 0xE1, 0x73, 0xC6, 0xAF, 0x24, 0x5B, 0x87,
- 0x66, 0x27, 0xF7, 0x57, 0xF4, 0x96, 0xB1, 0xB7, 0x5C, 0x8B, 0xD5, 0x54,
- 0x79, 0xDF, 0xAA, 0xF6, 0x3E, 0xA3, 0xF1, 0x11, 0xCA, 0xF5, 0xD1, 0x17,
- 0x7B, 0x93, 0x83, 0xBC, 0xBD, 0x52, 0x1E, 0xEB, 0xAE, 0xCC, 0xD6, 0x35,
- 0x08, 0xC8, 0x8A, 0xB4, 0xE2, 0xCD, 0xBF, 0xD9, 0xD0, 0x50, 0x59, 0x3F,
- 0x4D, 0x62, 0x34, 0x0A, 0x48, 0x88, 0xB5, 0x56, 0x4C, 0x2E, 0x6B, 0x9E,
- 0xD2, 0x3D, 0x3C, 0x03, 0x13, 0xFB, 0x97, 0x51, 0x75, 0x4A, 0x91, 0x71,
- 0x23, 0xBE, 0x76, 0x2A, 0x5F, 0xF9, 0xD4, 0x55, 0x0B, 0xDC, 0x37, 0x31,
- 0x16, 0x74, 0xD7, 0x77, 0xA7, 0xE6, 0x07, 0xDB, 0xA4, 0x2F, 0x46, 0xF3,
- 0x61, 0x45, 0x67, 0xE3, 0x0C, 0xA2, 0x3B, 0x1C, 0x85, 0x18, 0x04, 0x1D,
- 0x29, 0xA0, 0x8F, 0xB2, 0x5A, 0xD8, 0xA6, 0x7E, 0xEE, 0x8D, 0x53, 0x4B,
- 0xA1, 0x9A, 0xC1, 0x0E, 0x7A, 0x49, 0xA5, 0x2C, 0x81, 0xC4, 0xC7, 0x36,
- 0x2B, 0x7F, 0x43, 0x95, 0x33, 0xF2, 0x6C, 0x68, 0x6D, 0xF0, 0x02, 0x28,
- 0xCE, 0xDD, 0x9B, 0xEA, 0x5E, 0x99, 0x7C, 0x14, 0x86, 0xCF, 0xE5, 0x42,
- 0xB8, 0x40, 0x78, 0x2D, 0x3A, 0xE9, 0x64, 0x1F, 0x92, 0x90, 0x7D, 0x39,
- 0x6F, 0xE0, 0x89, 0x30, 0x80, 0x00, 0xB0, 0x09, 0x60, 0xEF, 0xB9, 0xFD,
- 0x10, 0x12, 0x9F, 0xE4, 0x69, 0xBA, 0xAD, 0xF8, 0xC0, 0x38, 0xC2, 0x65,
- 0x4F, 0x06, 0x94, 0xFC, 0x19, 0xDE, 0x6A, 0x1B, 0x5D, 0x4E, 0xA8, 0x82,
- 0x70, 0xED, 0xE8, 0xEC, 0x72, 0xB3, 0x15, 0xC3, 0xFF, 0xAB, 0xB6, 0x47,
- 0x44, 0x01, 0xAC, 0x25, 0xC9, 0xFA, 0x8E, 0x41, 0x1A, 0x21, 0xCB, 0xD3,
- 0x0D, 0x6E, 0xFE, 0x26, 0x58, 0xDA, 0x32, 0x0F, 0x20, 0xA9, 0x9D, 0x84,
- 0x98, 0x05, 0x9C, 0xBB, 0x22, 0x8C, 0x63, 0xE7, 0xC5, 0xE1, 0x73, 0xC6,
- 0xAF, 0x24, 0x5B, 0x87, 0x66, 0x27, 0xF7, 0x57, 0xF4, 0x96, 0xB1, 0xB7,
- 0x5C, 0x8B, 0xD5, 0x54, 0x79, 0xDF, 0xAA, 0xF6, 0x3E, 0xA3, 0xF1, 0x11,
- 0xCA, 0xF5, 0xD1, 0x17, 0x7B, 0x93, 0x83, 0xBC, 0xBD, 0x52, 0x1E, 0xEB,
- 0xAE, 0xCC, 0xD6, 0x35, 0x08, 0xC8, 0x8A, 0xB4, 0xE2, 0xCD, 0xBF, 0xD9,
- 0xD0, 0x50, 0x59, 0x3F, 0x4D, 0x62, 0x34, 0x0A, 0x48, 0x88, 0xB5, 0x56,
- 0x4C, 0x2E, 0x6B, 0x9E, 0xD2, 0x3D, 0x3C, 0x03, 0x13, 0xFB, 0x97, 0x51,
- 0x75, 0x4A, 0x91, 0x71, 0x23, 0xBE, 0x76, 0x2A, 0x5F, 0xF9, 0xD4, 0x55,
- 0x0B, 0xDC, 0x37, 0x31, 0x16, 0x74, 0xD7, 0x77, 0xA7, 0xE6, 0x07, 0xDB,
- 0xA4, 0x2F, 0x46, 0xF3, 0x61, 0x45, 0x67, 0xE3, 0x0C, 0xA2, 0x3B, 0x1C,
- 0x85, 0x18, 0x04, 0x1D, 0x29, 0xA0, 0x8F, 0xB2, 0x5A, 0xD8, 0xA6, 0x7E,
- 0xEE, 0x8D, 0x53, 0x4B, 0xA1, 0x9A, 0xC1, 0x0E, 0x7A, 0x49, 0xA5, 0x2C,
- 0x81, 0xC4, 0xC7, 0x36, 0x2B, 0x7F, 0x43, 0x95, 0x33, 0xF2, 0x6C, 0x68,
- 0x6D, 0xF0, 0x02, 0x28, 0xCE, 0xDD, 0x9B, 0xEA, 0x5E, 0x99, 0x7C, 0x14,
- 0x86, 0xCF, 0xE5, 0x42, 0xB8, 0x40, 0x78, 0x2D, 0x3A, 0xE9, 0x64, 0x1F,
- 0x92, 0x90, 0x7D, 0x39, 0x6F, 0xE0, 0x89, 0x30 };
-
-}
-
-/*
-* SAFER-SK Encryption
-*/
-void SAFER_SK::encrypt_n(const byte in[], byte out[], size_t blocks) const
- {
- for(size_t i = 0; i != blocks; ++i)
- {
- byte A = in[0], B = in[1], C = in[2], D = in[3],
- E = in[4], F = in[5], G = in[6], H = in[7], X, Y;
-
- for(size_t j = 0; j != 16*m_rounds; j += 16)
- {
- A = EXP[A ^ m_EK[j ]]; B = LOG[B + m_EK[j+1]];
- C = LOG[C + m_EK[j+2]]; D = EXP[D ^ m_EK[j+3]];
- E = EXP[E ^ m_EK[j+4]]; F = LOG[F + m_EK[j+5]];
- G = LOG[G + m_EK[j+6]]; H = EXP[H ^ m_EK[j+7]];
-
- A += m_EK[j+ 8]; B ^= m_EK[j+ 9]; C ^= m_EK[j+10]; D += m_EK[j+11];
- E += m_EK[j+12]; F ^= m_EK[j+13]; G ^= m_EK[j+14]; H += m_EK[j+15];
-
- B += A; D += C; F += E; H += G; A += B; C += D; E += F; G += H;
- C += A; G += E; D += B; H += F; A += C; E += G; B += D; F += H;
- H += D; Y = D + H; D = B + F; X = B + D; B = A + E;
- A += B; F = C + G; E = C + F; C = X; G = Y;
- }
-
- out[0] = A ^ m_EK[16*m_rounds+0]; out[1] = B + m_EK[16*m_rounds+1];
- out[2] = C + m_EK[16*m_rounds+2]; out[3] = D ^ m_EK[16*m_rounds+3];
- out[4] = E ^ m_EK[16*m_rounds+4]; out[5] = F + m_EK[16*m_rounds+5];
- out[6] = G + m_EK[16*m_rounds+6]; out[7] = H ^ m_EK[16*m_rounds+7];
-
- in += BLOCK_SIZE;
- out += BLOCK_SIZE;
- }
- }
-
-/*
-* SAFER-SK Decryption
-*/
-void SAFER_SK::decrypt_n(const byte in[], byte out[], size_t blocks) const
- {
- for(size_t i = 0; i != blocks; ++i)
- {
- byte A = in[0], B = in[1], C = in[2], D = in[3],
- E = in[4], F = in[5], G = in[6], H = in[7];
-
- A ^= m_EK[16*m_rounds+0]; B -= m_EK[16*m_rounds+1]; C -= m_EK[16*m_rounds+2];
- D ^= m_EK[16*m_rounds+3]; E ^= m_EK[16*m_rounds+4]; F -= m_EK[16*m_rounds+5];
- G -= m_EK[16*m_rounds+6]; H ^= m_EK[16*m_rounds+7];
-
- for(s32bit j = 16*(m_rounds-1); j >= 0; j -= 16)
- {
- byte T = E; E = B; B = C; C = T; T = F; F = D; D = G; G = T;
- A -= E; B -= F; C -= G; D -= H; E -= A; F -= B; G -= C; H -= D;
- A -= C; E -= G; B -= D; F -= H; C -= A; G -= E; D -= B; H -= F;
- A -= B; C -= D; E -= F; G -= H; B -= A; D -= C; F -= E; H -= G;
-
- A = LOG[A - m_EK[j+8 ] + 256]; B = EXP[B ^ m_EK[j+9 ]];
- C = EXP[C ^ m_EK[j+10]]; D = LOG[D - m_EK[j+11] + 256];
- E = LOG[E - m_EK[j+12] + 256]; F = EXP[F ^ m_EK[j+13]];
- G = EXP[G ^ m_EK[j+14]]; H = LOG[H - m_EK[j+15] + 256];
-
- A ^= m_EK[j+0]; B -= m_EK[j+1]; C -= m_EK[j+2]; D ^= m_EK[j+3];
- E ^= m_EK[j+4]; F -= m_EK[j+5]; G -= m_EK[j+6]; H ^= m_EK[j+7];
- }
-
- out[0] = A; out[1] = B; out[2] = C; out[3] = D;
- out[4] = E; out[5] = F; out[6] = G; out[7] = H;
-
- in += BLOCK_SIZE;
- out += BLOCK_SIZE;
- }
- }
-
-/*
-* SAFER-SK Key Schedule
-*/
-void SAFER_SK::key_schedule(const byte key[], size_t)
- {
- const byte BIAS[208] = {
- 0x16, 0x73, 0x3B, 0x1E, 0x8E, 0x70, 0xBD, 0x86, 0x47, 0x7E, 0x24, 0x56,
- 0xF1, 0x77, 0x88, 0x46, 0xB1, 0xBA, 0xA3, 0xB7, 0x10, 0x0A, 0xC5, 0x37,
- 0xC9, 0x5A, 0x28, 0xAC, 0x64, 0xA5, 0xEC, 0xAB, 0xC6, 0x67, 0x95, 0x58,
- 0x0D, 0xF8, 0x9A, 0xF6, 0x66, 0xDC, 0x05, 0x3D, 0xD3, 0x8A, 0xC3, 0xD8,
- 0x6A, 0xE9, 0x36, 0x49, 0x43, 0xBF, 0xEB, 0xD4, 0x9B, 0x68, 0xA0, 0x65,
- 0x5D, 0x57, 0x92, 0x1F, 0x71, 0x5C, 0xBB, 0x22, 0xC1, 0xBE, 0x7B, 0xBC,
- 0x63, 0x94, 0x5F, 0x2A, 0x61, 0xB8, 0x34, 0x32, 0xFD, 0xFB, 0x17, 0x40,
- 0xE6, 0x51, 0x1D, 0x41, 0x8F, 0x29, 0xDD, 0x04, 0x80, 0xDE, 0xE7, 0x31,
- 0x7F, 0x01, 0xA2, 0xF7, 0x39, 0xDA, 0x6F, 0x23, 0xFE, 0x3A, 0xD0, 0x1C,
- 0xD1, 0x30, 0x3E, 0x12, 0xCD, 0x0F, 0xE0, 0xA8, 0xAF, 0x82, 0x59, 0x2C,
- 0x7D, 0xAD, 0xB2, 0xEF, 0xC2, 0x87, 0xCE, 0x75, 0x13, 0x02, 0x90, 0x4F,
- 0x2E, 0x72, 0x33, 0x85, 0x8D, 0xCF, 0xA9, 0x81, 0xE2, 0xC4, 0x27, 0x2F,
- 0x7A, 0x9F, 0x52, 0xE1, 0x15, 0x38, 0x2B, 0xFC, 0x42, 0xC7, 0x08, 0xE4,
- 0x09, 0x55, 0x5E, 0x8C, 0x76, 0x60, 0xFF, 0xDF, 0xD7, 0x98, 0xFA, 0x0B,
- 0x00, 0x1A, 0xF9, 0xA6, 0xB9, 0xE8, 0x9E, 0x62, 0xD9, 0x91, 0x50, 0xD2,
- 0xEE, 0x18, 0xB4, 0x07, 0xEA, 0x5B, 0xA4, 0xC8, 0x0E, 0xCB, 0x48, 0x69,
- 0x4E, 0x9C, 0x35, 0x79, 0x45, 0x4D, 0x54, 0xE5, 0x3C, 0x0C, 0x4A, 0x8B,
- 0x3F, 0xCC, 0xA7, 0xDB };
-
- const byte KEY_INDEX[208] = {
- 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x0B, 0x0C, 0x0D, 0x0E,
- 0x0F, 0x10, 0x11, 0x09, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x00, 0x01,
- 0x0D, 0x0E, 0x0F, 0x10, 0x11, 0x09, 0x0A, 0x0B, 0x05, 0x06, 0x07, 0x08,
- 0x00, 0x01, 0x02, 0x03, 0x0F, 0x10, 0x11, 0x09, 0x0A, 0x0B, 0x0C, 0x0D,
- 0x07, 0x08, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x11, 0x09, 0x0A, 0x0B,
- 0x0C, 0x0D, 0x0E, 0x0F, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
- 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F, 0x10, 0x11, 0x02, 0x03, 0x04, 0x05,
- 0x06, 0x07, 0x08, 0x00, 0x0C, 0x0D, 0x0E, 0x0F, 0x10, 0x11, 0x09, 0x0A,
- 0x04, 0x05, 0x06, 0x07, 0x08, 0x00, 0x01, 0x02, 0x0E, 0x0F, 0x10, 0x11,
- 0x09, 0x0A, 0x0B, 0x0C, 0x06, 0x07, 0x08, 0x00, 0x01, 0x02, 0x03, 0x04,
- 0x10, 0x11, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x08, 0x00, 0x01, 0x02,
- 0x03, 0x04, 0x05, 0x06, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F, 0x10,
- 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x0B, 0x0C, 0x0D, 0x0E,
- 0x0F, 0x10, 0x11, 0x09, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x00, 0x01,
- 0x0D, 0x0E, 0x0F, 0x10, 0x11, 0x09, 0x0A, 0x0B, 0x05, 0x06, 0x07, 0x08,
- 0x00, 0x01, 0x02, 0x03, 0x0F, 0x10, 0x11, 0x09, 0x0A, 0x0B, 0x0C, 0x0D,
- 0x07, 0x08, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x11, 0x09, 0x0A, 0x0B,
- 0x0C, 0x0D, 0x0E, 0x0F };
-
- m_EK.resize(16 * m_rounds + 8);
-
- secure_vector<byte> KB(18);
-
- for(size_t i = 0; i != 8; ++i)
- {
- KB[ 8] ^= KB[i] = rotate_left(key[i], 5);
- KB[17] ^= KB[i+9] = m_EK[i] = key[i+8];
- }
-
- for(size_t i = 0; i != m_rounds; ++i)
- {
- for(size_t j = 0; j != 18; ++j)
- KB[j] = rotate_left(KB[j], 6);
- for(size_t j = 0; j != 16; ++j)
- m_EK[16*i+j+8] = KB[KEY_INDEX[16*i+j]] + BIAS[16*i+j];
- }
- }
-
-void SAFER_SK::clear()
- {
- zap(m_EK);
- }
-
-/*
-* Return the name of this type
-*/
-std::string SAFER_SK::name() const
- {
- return "SAFER-SK(" + std::to_string(m_rounds) + ")";
- }
-
-/*
-* Return a clone of this object
-*/
-BlockCipher* SAFER_SK::clone() const
- {
- return new SAFER_SK(m_rounds);
- }
-
-/*
-* SAFER-SK Constructor
-*/
-SAFER_SK::SAFER_SK(size_t r) : m_rounds(r)
- {
- if(m_rounds > 13 || m_rounds == 0)
- throw Invalid_Argument(name() + ": Invalid number of rounds");
- }
-
-}
diff --git a/src/lib/block/safer/safer_sk.h b/src/lib/block/safer/safer_sk.h
deleted file mode 100644
index af944b36c..000000000
--- a/src/lib/block/safer/safer_sk.h
+++ /dev/null
@@ -1,42 +0,0 @@
-/*
-* SAFER-SK
-* (C) 1999-2007 Jack Lloyd
-*
-* Botan is released under the Simplified BSD License (see license.txt)
-*/
-
-#ifndef BOTAN_SAFER_SK_H__
-#define BOTAN_SAFER_SK_H__
-
-#include <botan/block_cipher.h>
-
-namespace Botan {
-
-/**
-* SAFER-SK
-*/
-class BOTAN_DLL SAFER_SK final : public Block_Cipher_Fixed_Params<8, 16>
- {
- 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;
-
- void clear() override;
- std::string name() const override;
- BlockCipher* clone() const override;
-
- /**
- * @param rounds the number of rounds to use - must be between 1
- * and 13
- */
- explicit SAFER_SK(size_t rounds);
- private:
- void key_schedule(const byte[], size_t) override;
-
- size_t m_rounds;
- secure_vector<byte> m_EK;
- };
-
-}
-
-#endif
diff --git a/src/lib/block/serpent/serpent.cpp b/src/lib/block/serpent/serpent.cpp
index c35e3e338..07088211d 100644
--- a/src/lib/block/serpent/serpent.cpp
+++ b/src/lib/block/serpent/serpent.cpp
@@ -9,6 +9,10 @@
#include <botan/loadstor.h>
#include <botan/internal/serpent_sbox.h>
+#if defined(BOTAN_HAS_SERPENT_SIMD)
+ #include <botan/cpuid.h>
+#endif
+
namespace Botan {
namespace {
@@ -53,6 +57,19 @@ inline void i_transform(u32bit& B0, u32bit& B1, u32bit& B2, u32bit& B3)
*/
void Serpent::encrypt_n(const byte in[], byte out[], size_t blocks) const
{
+#if defined(BOTAN_HAS_SERPENT_SIMD)
+ if(CPUID::has_simd_32())
+ {
+ while(blocks >= 4)
+ {
+ simd_encrypt_4(in, out);
+ in += 4 * BLOCK_SIZE;
+ out += 4 * BLOCK_SIZE;
+ blocks -= 4;
+ }
+ }
+#endif
+
for(size_t i = 0; i != blocks; ++i)
{
u32bit B0 = load_le<u32bit>(in, 0);
@@ -105,6 +122,19 @@ void Serpent::encrypt_n(const byte in[], byte out[], size_t blocks) const
*/
void Serpent::decrypt_n(const byte in[], byte out[], size_t blocks) const
{
+#if defined(BOTAN_HAS_SERPENT_SIMD)
+ if(CPUID::has_simd_32())
+ {
+ while(blocks >= 4)
+ {
+ simd_decrypt_4(in, out);
+ in += 4 * BLOCK_SIZE;
+ out += 4 * BLOCK_SIZE;
+ blocks -= 4;
+ }
+ }
+#endif
+
for(size_t i = 0; i != blocks; ++i)
{
u32bit B0 = load_le<u32bit>(in, 0);
@@ -201,4 +231,16 @@ void Serpent::clear()
zap(m_round_key);
}
+std::string Serpent::provider() const
+ {
+#if defined(BOTAN_HAS_SERPENT_SIMD)
+ if(CPUID::has_simd_32())
+ {
+ return "simd";
+ }
+#endif
+
+ return "base";
+ }
+
}
diff --git a/src/lib/block/serpent/serpent.h b/src/lib/block/serpent/serpent.h
index b9864cf89..218772e0c 100644
--- a/src/lib/block/serpent/serpent.h
+++ b/src/lib/block/serpent/serpent.h
@@ -13,18 +13,35 @@
namespace Botan {
/**
-* Serpent, an AES finalist
+* Serpent is the most conservative of the AES finalists
+* http://www.cl.cam.ac.uk/~rja14/serpent.html
*/
-class BOTAN_DLL Serpent : public Block_Cipher_Fixed_Params<16, 16, 32, 8>
+class BOTAN_DLL Serpent final : public Block_Cipher_Fixed_Params<16, 16, 32, 8>
{
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;
void clear() override;
+ std::string provider() const override;
std::string name() const override { return "Serpent"; }
BlockCipher* clone() const override { return new Serpent; }
+
+ size_t parallelism() const override { return 4; }
+
protected:
+#if defined(BOTAN_HAS_SERPENT_SIMD)
+ /**
+ * Encrypt 4 blocks in parallel using SSE2 or AltiVec
+ */
+ void simd_encrypt_4(const byte in[64], byte out[64]) const;
+
+ /**
+ * Decrypt 4 blocks in parallel using SSE2 or AltiVec
+ */
+ void simd_decrypt_4(const byte in[64], byte out[64]) const;
+#endif
+
/**
* For use by subclasses using SIMD, asm, etc
* @return const reference to the key schedule
diff --git a/src/lib/block/serpent_simd/info.txt b/src/lib/block/serpent_simd/info.txt
index acb0b76d8..eedc92757 100644
--- a/src/lib/block/serpent_simd/info.txt
+++ b/src/lib/block/serpent_simd/info.txt
@@ -1,14 +1,6 @@
-define SERPENT_SIMD 20131128
+define SERPENT_SIMD 20160903
<requires>
serpent
simd
</requires>
-
-<source>
-serp_simd.cpp
-</source>
-
-<header:public>
-serp_simd.h
-</header:public>
diff --git a/src/lib/block/serpent_simd/serp_simd.cpp b/src/lib/block/serpent_simd/serp_simd.cpp
index 02fe7d6d9..7571e5511 100644
--- a/src/lib/block/serpent_simd/serp_simd.cpp
+++ b/src/lib/block/serpent_simd/serp_simd.cpp
@@ -5,7 +5,7 @@
* Botan is released under the Simplified BSD License (see license.txt)
*/
-#include <botan/serp_simd.h>
+#include <botan/serpent.h>
#include <botan/internal/serpent_sbox.h>
#include <botan/internal/simd_32.h>
@@ -15,10 +15,10 @@ namespace {
#define key_xor(round, B0, B1, B2, B3) \
do { \
- B0 ^= SIMD_32(keys[4*round ]); \
- B1 ^= SIMD_32(keys[4*round+1]); \
- B2 ^= SIMD_32(keys[4*round+2]); \
- B3 ^= SIMD_32(keys[4*round+3]); \
+ B0 ^= SIMD_32(m_round_key[4*round ]); \
+ B1 ^= SIMD_32(m_round_key[4*round+1]); \
+ B2 ^= SIMD_32(m_round_key[4*round+2]); \
+ B3 ^= SIMD_32(m_round_key[4*round+3]); \
} while(0);
/*
@@ -52,12 +52,12 @@ namespace {
B0.rotate_right(13); \
} while(0);
+}
+
/*
* SIMD Serpent Encryption of 4 blocks in parallel
*/
-void serpent_encrypt_4(const byte in[64],
- byte out[64],
- const u32bit keys[132])
+void Serpent::simd_encrypt_4(const byte in[64], byte out[64]) const
{
SIMD_32 B0 = SIMD_32::load_le(in);
SIMD_32 B1 = SIMD_32::load_le(in + 16);
@@ -113,9 +113,7 @@ void serpent_encrypt_4(const byte in[64],
/*
* SIMD Serpent Decryption of 4 blocks in parallel
*/
-void serpent_decrypt_4(const byte in[64],
- byte out[64],
- const u32bit keys[132])
+void Serpent::simd_decrypt_4(const byte in[64], byte out[64]) const
{
SIMD_32 B0 = SIMD_32::load_le(in);
SIMD_32 B1 = SIMD_32::load_le(in + 16);
@@ -168,48 +166,8 @@ void serpent_decrypt_4(const byte in[64],
B3.store_le(out + 48);
}
-}
-
#undef key_xor
#undef transform
#undef i_transform
-/*
-* Serpent Encryption
-*/
-void Serpent_SIMD::encrypt_n(const byte in[], byte out[], size_t blocks) const
- {
- const u32bit* KS = &(this->get_round_keys()[0]);
-
- while(blocks >= 4)
- {
- serpent_encrypt_4(in, out, KS);
- in += 4 * BLOCK_SIZE;
- out += 4 * BLOCK_SIZE;
- blocks -= 4;
- }
-
- if(blocks)
- Serpent::encrypt_n(in, out, blocks);
- }
-
-/*
-* Serpent Decryption
-*/
-void Serpent_SIMD::decrypt_n(const byte in[], byte out[], size_t blocks) const
- {
- const u32bit* KS = &(this->get_round_keys()[0]);
-
- while(blocks >= 4)
- {
- serpent_decrypt_4(in, out, KS);
- in += 4 * BLOCK_SIZE;
- out += 4 * BLOCK_SIZE;
- blocks -= 4;
- }
-
- if(blocks)
- Serpent::decrypt_n(in, out, blocks);
- }
-
}
diff --git a/src/lib/block/serpent_simd/serp_simd.h b/src/lib/block/serpent_simd/serp_simd.h
deleted file mode 100644
index e10d4cfe2..000000000
--- a/src/lib/block/serpent_simd/serp_simd.h
+++ /dev/null
@@ -1,31 +0,0 @@
-/*
-* Serpent (SIMD)
-* (C) 2009 Jack Lloyd
-*
-* Botan is released under the Simplified BSD License (see license.txt)
-*/
-
-#ifndef BOTAN_SERPENT_SIMD_H__
-#define BOTAN_SERPENT_SIMD_H__
-
-#include <botan/serpent.h>
-
-namespace Botan {
-
-/**
-* Serpent implementation using SIMD
-*/
-class BOTAN_DLL Serpent_SIMD final : public Serpent
- {
- public:
- size_t parallelism() const override { return 4; }
-
- 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;
-
- BlockCipher* clone() const override { return new Serpent_SIMD; }
- };
-
-}
-
-#endif
diff --git a/src/lib/block/tea/info.txt b/src/lib/block/tea/info.txt
deleted file mode 100644
index 14edfdb03..000000000
--- a/src/lib/block/tea/info.txt
+++ /dev/null
@@ -1 +0,0 @@
-define TEA 20131128
diff --git a/src/lib/block/tea/tea.cpp b/src/lib/block/tea/tea.cpp
deleted file mode 100644
index 457171e1d..000000000
--- a/src/lib/block/tea/tea.cpp
+++ /dev/null
@@ -1,78 +0,0 @@
-/*
-* TEA
-* (C) 1999-2007 Jack Lloyd
-*
-* Botan is released under the Simplified BSD License (see license.txt)
-*/
-
-#include <botan/tea.h>
-#include <botan/loadstor.h>
-
-namespace Botan {
-
-/*
-* TEA Encryption
-*/
-void TEA::encrypt_n(const byte in[], byte out[], size_t blocks) const
- {
- for(size_t i = 0; i != blocks; ++i)
- {
- u32bit L = load_be<u32bit>(in, 0);
- u32bit R = load_be<u32bit>(in, 1);
-
- u32bit S = 0;
- for(size_t j = 0; j != 32; ++j)
- {
- S += 0x9E3779B9;
- L += ((R << 4) + m_K[0]) ^ (R + S) ^ ((R >> 5) + m_K[1]);
- R += ((L << 4) + m_K[2]) ^ (L + S) ^ ((L >> 5) + m_K[3]);
- }
-
- store_be(out, L, R);
-
- in += BLOCK_SIZE;
- out += BLOCK_SIZE;
- }
- }
-
-/*
-* TEA Decryption
-*/
-void TEA::decrypt_n(const byte in[], byte out[], size_t blocks) const
- {
- for(size_t i = 0; i != blocks; ++i)
- {
- u32bit L = load_be<u32bit>(in, 0);
- u32bit R = load_be<u32bit>(in, 1);
-
- u32bit S = 0xC6EF3720;
- for(size_t j = 0; j != 32; ++j)
- {
- R -= ((L << 4) + m_K[2]) ^ (L + S) ^ ((L >> 5) + m_K[3]);
- L -= ((R << 4) + m_K[0]) ^ (R + S) ^ ((R >> 5) + m_K[1]);
- S -= 0x9E3779B9;
- }
-
- store_be(out, L, R);
-
- in += BLOCK_SIZE;
- out += BLOCK_SIZE;
- }
- }
-
-/*
-* TEA Key Schedule
-*/
-void TEA::key_schedule(const byte key[], size_t)
- {
- m_K.resize(4);
- for(size_t i = 0; i != 4; ++i)
- m_K[i] = load_be<u32bit>(key, i);
- }
-
-void TEA::clear()
- {
- zap(m_K);
- }
-
-}
diff --git a/src/lib/block/tea/tea.h b/src/lib/block/tea/tea.h
deleted file mode 100644
index 6b6308381..000000000
--- a/src/lib/block/tea/tea.h
+++ /dev/null
@@ -1,34 +0,0 @@
-/*
-* TEA
-* (C) 1999-2007 Jack Lloyd
-*
-* Botan is released under the Simplified BSD License (see license.txt)
-*/
-
-#ifndef BOTAN_TEA_H__
-#define BOTAN_TEA_H__
-
-#include <botan/block_cipher.h>
-
-namespace Botan {
-
-/**
-* TEA
-*/
-class BOTAN_DLL TEA final : public Block_Cipher_Fixed_Params<8, 16>
- {
- 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;
-
- void clear() override;
- std::string name() const override { return "TEA"; }
- BlockCipher* clone() const override { return new TEA; }
- private:
- void key_schedule(const byte[], size_t) override;
- secure_vector<u32bit> m_K;
- };
-
-}
-
-#endif
diff --git a/src/lib/block/threefish/threefish.cpp b/src/lib/block/threefish/threefish.cpp
index c8e2aff85..f592021fb 100644
--- a/src/lib/block/threefish/threefish.cpp
+++ b/src/lib/block/threefish/threefish.cpp
@@ -1,12 +1,13 @@
/*
* Threefish-512
-* (C) 2013,2014 Jack Lloyd
+* (C) 2013,2014,2016 Jack Lloyd
*
* Botan is released under the Simplified BSD License (see license.txt)
*/
#include <botan/threefish.h>
#include <botan/loadstor.h>
+#include <botan/cpuid.h>
namespace Botan {
@@ -97,11 +98,30 @@ void Threefish_512::skein_feedfwd(const secure_vector<u64bit>& M,
m_K[4] ^ m_K[5] ^ m_K[6] ^ m_K[7] ^ 0x1BD11BDAA9FC1A22;
}
+std::string Threefish_512::provider() const
+ {
+#if defined(BOTAN_HAS_THREEFISH_512_AVX2)
+ if(CPUID::has_avx2())
+ {
+ return "avx2";
+ }
+#endif
+
+ return "base";
+ }
+
void Threefish_512::encrypt_n(const byte in[], byte out[], size_t blocks) const
{
BOTAN_ASSERT(m_K.size() == 9, "Key was set");
BOTAN_ASSERT(m_T.size() == 3, "Tweak was set");
+#if defined(BOTAN_HAS_THREEFISH_512_AVX2)
+ if(CPUID::has_avx2())
+ {
+ return avx2_encrypt_n(in, out, blocks);
+ }
+#endif
+
for(size_t i = 0; i != blocks; ++i)
{
u64bit X0 = load_le<u64bit>(in, 0);
@@ -141,6 +161,13 @@ void Threefish_512::decrypt_n(const byte in[], byte out[], size_t blocks) const
BOTAN_ASSERT(m_K.size() == 9, "Key was set");
BOTAN_ASSERT(m_T.size() == 3, "Tweak was set");
+#if defined(BOTAN_HAS_THREEFISH_512_AVX2)
+ if(CPUID::has_avx2())
+ {
+ return avx2_decrypt_n(in, out, blocks);
+ }
+#endif
+
#define THREEFISH_ROUND(X0,X1,X2,X3,X4,X5,X6,X7,ROT1,ROT2,ROT3,ROT4) \
do { \
X4 ^= X0; \
diff --git a/src/lib/block/threefish/threefish.h b/src/lib/block/threefish/threefish.h
index 373600885..b02239c93 100644
--- a/src/lib/block/threefish/threefish.h
+++ b/src/lib/block/threefish/threefish.h
@@ -15,7 +15,7 @@ namespace Botan {
/**
* Threefish-512
*/
-class BOTAN_DLL Threefish_512 : public Block_Cipher_Fixed_Params<64, 64>
+class BOTAN_DLL Threefish_512 final : public Block_Cipher_Fixed_Params<64, 64>
{
public:
void encrypt_n(const byte in[], byte out[], size_t blocks) const override;
@@ -24,12 +24,19 @@ class BOTAN_DLL Threefish_512 : public Block_Cipher_Fixed_Params<64, 64>
void set_tweak(const byte tweak[], size_t len);
void clear() override;
+ std::string provider() const override;
std::string name() const override { return "Threefish-512"; }
BlockCipher* clone() const override { return new Threefish_512; }
protected:
const secure_vector<u64bit>& get_T() const { return m_T; }
const secure_vector<u64bit>& get_K() const { return m_K; }
private:
+
+#if defined(BOTAN_HAS_THREEFISH_512_AVX2)
+ void avx2_encrypt_n(const byte in[], byte out[], size_t blocks) const;
+ void avx2_decrypt_n(const byte in[], byte out[], size_t blocks) const;
+#endif
+
void key_schedule(const byte key[], size_t key_len) override;
// Interface for Skein
diff --git a/src/lib/block/threefish_avx2/info.txt b/src/lib/block/threefish_avx2/info.txt
index 4a3275092..907253c64 100644
--- a/src/lib/block/threefish_avx2/info.txt
+++ b/src/lib/block/threefish_avx2/info.txt
@@ -1,4 +1,4 @@
-define THREEFISH_512_AVX2 20131224
+define THREEFISH_512_AVX2 20160903
need_isa avx2
diff --git a/src/lib/block/threefish_avx2/threefish_avx2.cpp b/src/lib/block/threefish_avx2/threefish_avx2.cpp
index 9b808a221..e0321812a 100644
--- a/src/lib/block/threefish_avx2/threefish_avx2.cpp
+++ b/src/lib/block/threefish_avx2/threefish_avx2.cpp
@@ -5,8 +5,7 @@
* Botan is released under the Simplified BSD License (see license.txt)
*/
-#include <botan/threefish_avx2.h>
-#include <botan/cpuid.h>
+#include <botan/threefish.h>
#include <immintrin.h>
namespace Botan {
@@ -38,7 +37,8 @@ inline void rotate_keys(__m256i& R0, __m256i& R1, __m256i R2)
{
/*
Behold. The key schedule progresses like so. The values
- loop back to the originals after the rounds are complete.
+ loop back to the originals after the rounds are complete
+ so we don't need to reload for starting the next block.
R0 R1 R2
K1,K2,K3 (7,5,3,1),(8,6,4,2),(0,7,5,3)
@@ -71,7 +71,7 @@ inline void rotate_keys(__m256i& R0, __m256i& R1, __m256i R2)
}
-void Threefish_512_AVX2::encrypt_n(const byte in[], byte out[], size_t blocks) const
+void Threefish_512::avx2_encrypt_n(const byte in[], byte out[], size_t blocks) const
{
const u64bit* K = &get_K()[0];
const u64bit* T_64 = &get_T()[0];
@@ -245,7 +245,7 @@ void Threefish_512_AVX2::encrypt_n(const byte in[], byte out[], size_t blocks) c
#undef THREEFISH_INJECT_KEY_2
}
-void Threefish_512_AVX2::decrypt_n(const byte in[], byte out[], size_t blocks) const
+void Threefish_512::avx2_decrypt_n(const byte in[], byte out[], size_t blocks) const
{
const u64bit* K = &get_K()[0];
const u64bit* T_64 = &get_T()[0];
diff --git a/src/lib/block/threefish_avx2/threefish_avx2.h b/src/lib/block/threefish_avx2/threefish_avx2.h
deleted file mode 100644
index fbf2f9d8a..000000000
--- a/src/lib/block/threefish_avx2/threefish_avx2.h
+++ /dev/null
@@ -1,34 +0,0 @@
-/*
-* Threefish-512 in AVX2
-* (C) 2013 Jack Lloyd
-*
-* Botan is released under the Simplified BSD License (see license.txt)
-*/
-
-#ifndef BOTAN_THREEFISH_AVX2_H__
-#define BOTAN_THREEFISH_AVX2_H__
-
-#include <botan/threefish.h>
-
-namespace Botan {
-
-/**
-* Threefish-512
-*/
-class BOTAN_DLL Threefish_512_AVX2 final : public Threefish_512
- {
- private:
- 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;
-
- /* TODO:
- void skein_feedfwd(const secure_vector<u64bit>& M,
- const secure_vector<u64bit>& T) override;
- */
-
- BlockCipher* clone() const override { return new Threefish_512_AVX2; }
- };
-
-}
-
-#endif
diff --git a/src/lib/block/xtea_simd/info.txt b/src/lib/block/xtea_simd/info.txt
deleted file mode 100644
index 01fb4110d..000000000
--- a/src/lib/block/xtea_simd/info.txt
+++ /dev/null
@@ -1,6 +0,0 @@
-define XTEA_SIMD 20131128
-
-<requires>
-xtea
-simd
-</requires>
diff --git a/src/lib/block/xtea_simd/xtea_simd.cpp b/src/lib/block/xtea_simd/xtea_simd.cpp
deleted file mode 100644
index 6e50f4ff7..000000000
--- a/src/lib/block/xtea_simd/xtea_simd.cpp
+++ /dev/null
@@ -1,129 +0,0 @@
-/*
-* XTEA in SIMD
-* (C) 2009 Jack Lloyd
-*
-* Botan is released under the Simplified BSD License (see license.txt)
-*/
-
-#include <botan/xtea_simd.h>
-#include <botan/internal/simd_32.h>
-
-namespace Botan {
-
-namespace {
-
-void xtea_encrypt_8(const byte in[64], byte out[64], const u32bit EK[64])
- {
- SIMD_32 L0 = SIMD_32::load_be(in );
- SIMD_32 R0 = SIMD_32::load_be(in + 16);
- SIMD_32 L1 = SIMD_32::load_be(in + 32);
- SIMD_32 R1 = SIMD_32::load_be(in + 48);
-
- SIMD_32::transpose(L0, R0, L1, R1);
-
- for(size_t i = 0; i != 32; i += 2)
- {
- SIMD_32 K0(EK[2*i ]);
- SIMD_32 K1(EK[2*i+1]);
- SIMD_32 K2(EK[2*i+2]);
- SIMD_32 K3(EK[2*i+3]);
-
- L0 += (((R0 << 4) ^ (R0 >> 5)) + R0) ^ K0;
- L1 += (((R1 << 4) ^ (R1 >> 5)) + R1) ^ K0;
-
- R0 += (((L0 << 4) ^ (L0 >> 5)) + L0) ^ K1;
- R1 += (((L1 << 4) ^ (L1 >> 5)) + L1) ^ K1;
-
- L0 += (((R0 << 4) ^ (R0 >> 5)) + R0) ^ K2;
- L1 += (((R1 << 4) ^ (R1 >> 5)) + R1) ^ K2;
-
- R0 += (((L0 << 4) ^ (L0 >> 5)) + L0) ^ K3;
- R1 += (((L1 << 4) ^ (L1 >> 5)) + L1) ^ K3;
- }
-
- SIMD_32::transpose(L0, R0, L1, R1);
-
- L0.store_be(out);
- R0.store_be(out + 16);
- L1.store_be(out + 32);
- R1.store_be(out + 48);
- }
-
-void xtea_decrypt_8(const byte in[64], byte out[64], const u32bit EK[64])
- {
- SIMD_32 L0 = SIMD_32::load_be(in );
- SIMD_32 R0 = SIMD_32::load_be(in + 16);
- SIMD_32 L1 = SIMD_32::load_be(in + 32);
- SIMD_32 R1 = SIMD_32::load_be(in + 48);
-
- SIMD_32::transpose(L0, R0, L1, R1);
-
- for(size_t i = 0; i != 32; i += 2)
- {
- SIMD_32 K0(EK[63 - 2*i]);
- SIMD_32 K1(EK[62 - 2*i]);
- SIMD_32 K2(EK[61 - 2*i]);
- SIMD_32 K3(EK[60 - 2*i]);
-
- R0 -= (((L0 << 4) ^ (L0 >> 5)) + L0) ^ K0;
- R1 -= (((L1 << 4) ^ (L1 >> 5)) + L1) ^ K0;
-
- L0 -= (((R0 << 4) ^ (R0 >> 5)) + R0) ^ K1;
- L1 -= (((R1 << 4) ^ (R1 >> 5)) + R1) ^ K1;
-
- R0 -= (((L0 << 4) ^ (L0 >> 5)) + L0) ^ K2;
- R1 -= (((L1 << 4) ^ (L1 >> 5)) + L1) ^ K2;
-
- L0 -= (((R0 << 4) ^ (R0 >> 5)) + R0) ^ K3;
- L1 -= (((R1 << 4) ^ (R1 >> 5)) + R1) ^ K3;
- }
-
- SIMD_32::transpose(L0, R0, L1, R1);
-
- L0.store_be(out);
- R0.store_be(out + 16);
- L1.store_be(out + 32);
- R1.store_be(out + 48);
- }
-
-}
-
-/*
-* XTEA Encryption
-*/
-void XTEA_SIMD::encrypt_n(const byte in[], byte out[], size_t blocks) const
- {
- const u32bit* KS = &(this->get_EK()[0]);
-
- while(blocks >= 8)
- {
- xtea_encrypt_8(in, out, KS);
- in += 8 * BLOCK_SIZE;
- out += 8 * BLOCK_SIZE;
- blocks -= 8;
- }
-
- if(blocks)
- XTEA::encrypt_n(in, out, blocks);
- }
-
-/*
-* XTEA Decryption
-*/
-void XTEA_SIMD::decrypt_n(const byte in[], byte out[], size_t blocks) const
- {
- const u32bit* KS = &(this->get_EK()[0]);
-
- while(blocks >= 8)
- {
- xtea_decrypt_8(in, out, KS);
- in += 8 * BLOCK_SIZE;
- out += 8 * BLOCK_SIZE;
- blocks -= 8;
- }
-
- if(blocks)
- XTEA::decrypt_n(in, out, blocks);
- }
-
-}
diff --git a/src/lib/block/xtea_simd/xtea_simd.h b/src/lib/block/xtea_simd/xtea_simd.h
deleted file mode 100644
index 0b0558032..000000000
--- a/src/lib/block/xtea_simd/xtea_simd.h
+++ /dev/null
@@ -1,30 +0,0 @@
-/*
-* XTEA in SIMD
-* (C) 2009 Jack Lloyd
-*
-* Botan is released under the Simplified BSD License (see license.txt)
-*/
-
-#ifndef BOTAN_XTEA_SIMD_H__
-#define BOTAN_XTEA_SIMD_H__
-
-#include <botan/xtea.h>
-
-namespace Botan {
-
-/**
-* XTEA implemented using SIMD operations
-*/
-class BOTAN_DLL XTEA_SIMD final : public XTEA
- {
- public:
- size_t parallelism() const override { return 8; }
-
- 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;
- BlockCipher* clone() const override { return new XTEA_SIMD; }
- };
-
-}
-
-#endif
diff --git a/src/lib/cert/x509/key_constraint.cpp b/src/lib/cert/x509/key_constraint.cpp
index a90af013c..30d1cb3b8 100644
--- a/src/lib/cert/x509/key_constraint.cpp
+++ b/src/lib/cert/x509/key_constraint.cpp
@@ -31,8 +31,7 @@ void verify_cert_constraints_valid_for_key_type(const Public_Key& pub_key,
permitted |= KEY_ENCIPHERMENT | DATA_ENCIPHERMENT;
}
- if(name == "RSA" || name == "RW" || name == "NR" ||
- name == "DSA" || name == "ECDSA" || name == "ECGDSA" || name == "ECKCDSA")
+ if(name == "RSA" || name == "DSA" || name == "ECDSA" || name == "ECGDSA" || name == "ECKCDSA")
{
permitted |= DIGITAL_SIGNATURE | NON_REPUDIATION | KEY_CERT_SIGN | CRL_SIGN;
}
diff --git a/src/lib/cert/x509/x509cert.cpp b/src/lib/cert/x509/x509cert.cpp
index ffedf43f0..5765214ae 100644
--- a/src/lib/cert/x509/x509cert.cpp
+++ b/src/lib/cert/x509/x509cert.cpp
@@ -72,32 +72,6 @@ X509_Certificate::X509_Certificate(const std::vector<byte>& in) :
do_decode();
}
-X509_Certificate::X509_Certificate(const X509_Certificate& other) :
- X509_Object(other)
- {
- m_subject = other.m_subject;
- m_issuer = other.m_issuer;
- m_self_signed = other.m_self_signed;
- m_v3_extensions = other.m_v3_extensions;
- }
-
-X509_Certificate& X509_Certificate::operator=(const X509_Certificate& other)
- {
- if(&other == this)
- {
- return *this;
- }
- else
- {
- m_subject = other.m_subject;
- m_issuer = other.m_issuer;
- m_self_signed = other.m_self_signed;
- m_v3_extensions = other.m_v3_extensions;
- }
- return *this;
- }
-
-
/*
* Decode the TBSCertificate data
*/
@@ -128,7 +102,6 @@ void X509_Certificate::force_decode()
if(m_sig_algo != sig_algo_inner)
throw Decoding_Error("Algorithm identifier mismatch");
- m_self_signed = (dn_subject == dn_issuer);
m_subject.add(dn_subject.contents());
m_issuer.add(dn_issuer.contents());
@@ -171,6 +144,9 @@ void X509_Certificate::force_decode()
m_subject.add("X509.Certificate.public_key",
hex_encode(public_key.value));
+ std::unique_ptr<Public_Key> pub_key(subject_public_key());
+ m_self_signed = (dn_subject == dn_issuer) && check_signature(*pub_key);
+
if(m_self_signed && version == 0)
{
m_subject.add("X509v3.BasicConstraints.is_ca", 1);
diff --git a/src/lib/cert/x509/x509cert.h b/src/lib/cert/x509/x509cert.h
index eb98f9c3d..d64d8fd2b 100644
--- a/src/lib/cert/x509/x509cert.h
+++ b/src/lib/cert/x509/x509cert.h
@@ -274,9 +274,9 @@ class BOTAN_DLL X509_Certificate : public X509_Object
explicit X509_Certificate(const std::vector<byte>& in);
- X509_Certificate(const X509_Certificate& other);
+ X509_Certificate(const X509_Certificate& other) = default;
- X509_Certificate& operator=(const X509_Certificate& other);
+ X509_Certificate& operator=(const X509_Certificate& other) = default;
private:
void force_decode() override;
diff --git a/src/lib/cert/x509/x509path.cpp b/src/lib/cert/x509/x509path.cpp
index 436e27d39..c08b11d42 100644
--- a/src/lib/cert/x509/x509path.cpp
+++ b/src/lib/cert/x509/x509path.cpp
@@ -28,7 +28,8 @@ find_issuing_cert(const X509_Certificate& cert,
const X509_DN issuer_dn = cert.issuer_dn();
const std::vector<byte> auth_key_id = cert.authority_key_id();
- if(const X509_Certificate* c = end_certs.find_cert(issuer_dn, auth_key_id))
+ const X509_Certificate* c = end_certs.find_cert(issuer_dn, auth_key_id);
+ if(c && *c != cert)
return c;
for(size_t i = 0; i != certstores.size(); ++i)
diff --git a/src/lib/hash/has160/has160.cpp b/src/lib/hash/has160/has160.cpp
deleted file mode 100644
index 114b5f8b5..000000000
--- a/src/lib/hash/has160/has160.cpp
+++ /dev/null
@@ -1,162 +0,0 @@
-/*
-* HAS-160
-* (C) 1999-2007 Jack Lloyd
-*
-* Botan is released under the Simplified BSD License (see license.txt)
-*/
-
-#include <botan/has160.h>
-
-namespace Botan {
-
-namespace HAS_160_F {
-
-/*
-* HAS-160 F1 Function
-*/
-inline void F1(u32bit A, u32bit& B, u32bit C, u32bit D, u32bit& E,
- u32bit msg, u32bit rot)
- {
- E += rotate_left(A, rot) + (D ^ (B & (C ^ D))) + msg;
- B = rotate_left(B, 10);
- }
-
-/*
-* HAS-160 F2 Function
-*/
-inline void F2(u32bit A, u32bit& B, u32bit C, u32bit D, u32bit& E,
- u32bit msg, u32bit rot)
- {
- E += rotate_left(A, rot) + (B ^ C ^ D) + msg + 0x5A827999;
- B = rotate_left(B, 17);
- }
-
-/*
-* HAS-160 F3 Function
-*/
-inline void F3(u32bit A, u32bit& B, u32bit C, u32bit D, u32bit& E,
- u32bit msg, u32bit rot)
- {
- E += rotate_left(A, rot) + (C ^ (B | ~D)) + msg + 0x6ED9EBA1;
- B = rotate_left(B, 25);
- }
-
-/*
-* HAS-160 F4 Function
-*/
-inline void F4(u32bit A, u32bit& B, u32bit C, u32bit D, u32bit& E,
- u32bit msg, u32bit rot)
- {
- E += rotate_left(A, rot) + (B ^ C ^ D) + msg + 0x8F1BBCDC;
- B = rotate_left(B, 30);
- }
-
-}
-
-/*
-* HAS-160 Compression Function
-*/
-void HAS_160::compress_n(const byte input[], size_t blocks)
- {
- using namespace HAS_160_F;
-
- u32bit A = m_digest[0], B = m_digest[1], C = m_digest[2],
- D = m_digest[3], E = m_digest[4];
-
- for(size_t i = 0; i != blocks; ++i)
- {
- load_le(m_X.data(), input, 16);
-
- m_X[16] = m_X[ 0] ^ m_X[ 1] ^ m_X[ 2] ^ m_X[ 3];
- m_X[17] = m_X[ 4] ^ m_X[ 5] ^ m_X[ 6] ^ m_X[ 7];
- m_X[18] = m_X[ 8] ^ m_X[ 9] ^ m_X[10] ^ m_X[11];
- m_X[19] = m_X[12] ^ m_X[13] ^ m_X[14] ^ m_X[15];
- F1(A,B,C,D,E,m_X[18], 5); F1(E,A,B,C,D,m_X[ 0],11);
- F1(D,E,A,B,C,m_X[ 1], 7); F1(C,D,E,A,B,m_X[ 2],15);
- F1(B,C,D,E,A,m_X[ 3], 6); F1(A,B,C,D,E,m_X[19],13);
- F1(E,A,B,C,D,m_X[ 4], 8); F1(D,E,A,B,C,m_X[ 5],14);
- F1(C,D,E,A,B,m_X[ 6], 7); F1(B,C,D,E,A,m_X[ 7],12);
- F1(A,B,C,D,E,m_X[16], 9); F1(E,A,B,C,D,m_X[ 8],11);
- F1(D,E,A,B,C,m_X[ 9], 8); F1(C,D,E,A,B,m_X[10],15);
- F1(B,C,D,E,A,m_X[11], 6); F1(A,B,C,D,E,m_X[17],12);
- F1(E,A,B,C,D,m_X[12], 9); F1(D,E,A,B,C,m_X[13],14);
- F1(C,D,E,A,B,m_X[14], 5); F1(B,C,D,E,A,m_X[15],13);
-
- m_X[16] = m_X[ 3] ^ m_X[ 6] ^ m_X[ 9] ^ m_X[12];
- m_X[17] = m_X[ 2] ^ m_X[ 5] ^ m_X[ 8] ^ m_X[15];
- m_X[18] = m_X[ 1] ^ m_X[ 4] ^ m_X[11] ^ m_X[14];
- m_X[19] = m_X[ 0] ^ m_X[ 7] ^ m_X[10] ^ m_X[13];
- F2(A,B,C,D,E,m_X[18], 5); F2(E,A,B,C,D,m_X[ 3],11);
- F2(D,E,A,B,C,m_X[ 6], 7); F2(C,D,E,A,B,m_X[ 9],15);
- F2(B,C,D,E,A,m_X[12], 6); F2(A,B,C,D,E,m_X[19],13);
- F2(E,A,B,C,D,m_X[15], 8); F2(D,E,A,B,C,m_X[ 2],14);
- F2(C,D,E,A,B,m_X[ 5], 7); F2(B,C,D,E,A,m_X[ 8],12);
- F2(A,B,C,D,E,m_X[16], 9); F2(E,A,B,C,D,m_X[11],11);
- F2(D,E,A,B,C,m_X[14], 8); F2(C,D,E,A,B,m_X[ 1],15);
- F2(B,C,D,E,A,m_X[ 4], 6); F2(A,B,C,D,E,m_X[17],12);
- F2(E,A,B,C,D,m_X[ 7], 9); F2(D,E,A,B,C,m_X[10],14);
- F2(C,D,E,A,B,m_X[13], 5); F2(B,C,D,E,A,m_X[ 0],13);
-
- m_X[16] = m_X[ 5] ^ m_X[ 7] ^ m_X[12] ^ m_X[14];
- m_X[17] = m_X[ 0] ^ m_X[ 2] ^ m_X[ 9] ^ m_X[11];
- m_X[18] = m_X[ 4] ^ m_X[ 6] ^ m_X[13] ^ m_X[15];
- m_X[19] = m_X[ 1] ^ m_X[ 3] ^ m_X[ 8] ^ m_X[10];
- F3(A,B,C,D,E,m_X[18], 5); F3(E,A,B,C,D,m_X[12],11);
- F3(D,E,A,B,C,m_X[ 5], 7); F3(C,D,E,A,B,m_X[14],15);
- F3(B,C,D,E,A,m_X[ 7], 6); F3(A,B,C,D,E,m_X[19],13);
- F3(E,A,B,C,D,m_X[ 0], 8); F3(D,E,A,B,C,m_X[ 9],14);
- F3(C,D,E,A,B,m_X[ 2], 7); F3(B,C,D,E,A,m_X[11],12);
- F3(A,B,C,D,E,m_X[16], 9); F3(E,A,B,C,D,m_X[ 4],11);
- F3(D,E,A,B,C,m_X[13], 8); F3(C,D,E,A,B,m_X[ 6],15);
- F3(B,C,D,E,A,m_X[15], 6); F3(A,B,C,D,E,m_X[17],12);
- F3(E,A,B,C,D,m_X[ 8], 9); F3(D,E,A,B,C,m_X[ 1],14);
- F3(C,D,E,A,B,m_X[10], 5); F3(B,C,D,E,A,m_X[ 3],13);
-
- m_X[16] = m_X[ 2] ^ m_X[ 7] ^ m_X[ 8] ^ m_X[13];
- m_X[17] = m_X[ 3] ^ m_X[ 4] ^ m_X[ 9] ^ m_X[14];
- m_X[18] = m_X[ 0] ^ m_X[ 5] ^ m_X[10] ^ m_X[15];
- m_X[19] = m_X[ 1] ^ m_X[ 6] ^ m_X[11] ^ m_X[12];
- F4(A,B,C,D,E,m_X[18], 5); F4(E,A,B,C,D,m_X[ 7],11);
- F4(D,E,A,B,C,m_X[ 2], 7); F4(C,D,E,A,B,m_X[13],15);
- F4(B,C,D,E,A,m_X[ 8], 6); F4(A,B,C,D,E,m_X[19],13);
- F4(E,A,B,C,D,m_X[ 3], 8); F4(D,E,A,B,C,m_X[14],14);
- F4(C,D,E,A,B,m_X[ 9], 7); F4(B,C,D,E,A,m_X[ 4],12);
- F4(A,B,C,D,E,m_X[16], 9); F4(E,A,B,C,D,m_X[15],11);
- F4(D,E,A,B,C,m_X[10], 8); F4(C,D,E,A,B,m_X[ 5],15);
- F4(B,C,D,E,A,m_X[ 0], 6); F4(A,B,C,D,E,m_X[17],12);
- F4(E,A,B,C,D,m_X[11], 9); F4(D,E,A,B,C,m_X[ 6],14);
- F4(C,D,E,A,B,m_X[ 1], 5); F4(B,C,D,E,A,m_X[12],13);
-
- A = (m_digest[0] += A);
- B = (m_digest[1] += B);
- C = (m_digest[2] += C);
- D = (m_digest[3] += D);
- E = (m_digest[4] += E);
-
- input += hash_block_size();
- }
- }
-
-/*
-* Copy out the digest
-*/
-void HAS_160::copy_out(byte output[])
- {
- copy_out_vec_le(output, output_length(), m_digest);
- }
-
-/*
-* Clear memory of sensitive data
-*/
-void HAS_160::clear()
- {
- MDx_HashFunction::clear();
- zeroise(m_X);
- m_digest[0] = 0x67452301;
- m_digest[1] = 0xEFCDAB89;
- m_digest[2] = 0x98BADCFE;
- m_digest[3] = 0x10325476;
- m_digest[4] = 0xC3D2E1F0;
- }
-
-}
diff --git a/src/lib/hash/has160/has160.h b/src/lib/hash/has160/has160.h
deleted file mode 100644
index 7ef090eb7..000000000
--- a/src/lib/hash/has160/has160.h
+++ /dev/null
@@ -1,39 +0,0 @@
-/*
-* HAS-160
-* (C) 1999-2007 Jack Lloyd
-*
-* Botan is released under the Simplified BSD License (see license.txt)
-*/
-
-#ifndef BOTAN_HAS_160_H__
-#define BOTAN_HAS_160_H__
-
-#include <botan/mdx_hash.h>
-
-namespace Botan {
-
-/**
-* HAS-160, a Korean hash function standardized in
-* TTAS.KO-12.0011/R1. Used in conjunction with KCDSA
-*/
-class BOTAN_DLL HAS_160 final : public MDx_HashFunction
- {
- public:
- std::string name() const override { return "HAS-160"; }
- size_t output_length() const override { return 20; }
- HashFunction* clone() const override { return new HAS_160; }
-
- void clear() override;
-
- HAS_160() : MDx_HashFunction(64, false, true), m_X(20), m_digest(5)
- { clear(); }
- private:
- void compress_n(const byte[], size_t blocks) override;
- void copy_out(byte[]) override;
-
- secure_vector<u32bit> m_X, m_digest;
- };
-
-}
-
-#endif
diff --git a/src/lib/hash/has160/info.txt b/src/lib/hash/has160/info.txt
deleted file mode 100644
index cf403dad5..000000000
--- a/src/lib/hash/has160/info.txt
+++ /dev/null
@@ -1,5 +0,0 @@
-define HAS_160 20131128
-
-<requires>
-mdx_hash
-</requires>
diff --git a/src/lib/hash/hash.cpp b/src/lib/hash/hash.cpp
index 9a15c7998..5a31763d1 100644
--- a/src/lib/hash/hash.cpp
+++ b/src/lib/hash/hash.cpp
@@ -25,18 +25,10 @@
#include <botan/gost_3411.h>
#endif
-#if defined(BOTAN_HAS_HAS_160)
- #include <botan/has160.h>
-#endif
-
#if defined(BOTAN_HAS_KECCAK)
#include <botan/keccak.h>
#endif
-#if defined(BOTAN_HAS_MD2)
- #include <botan/md2.h>
-#endif
-
#if defined(BOTAN_HAS_MD4)
#include <botan/md4.h>
#endif
@@ -45,10 +37,6 @@
#include <botan/md5.h>
#endif
-#if defined(BOTAN_HAS_RIPEMD_128)
- #include <botan/rmd128.h>
-#endif
-
#if defined(BOTAN_HAS_RIPEMD_160)
#include <botan/rmd160.h>
#endif
@@ -57,10 +45,6 @@
#include <botan/sha160.h>
#endif
-#if defined(BOTAN_HAS_SHA1_SSE2)
- #include <botan/sha1_sse2.h>
-#endif
-
#if defined(BOTAN_HAS_SHA2_32)
#include <botan/sha2_32.h>
#endif
@@ -147,18 +131,10 @@ BOTAN_REGISTER_NAMED_T(HashFunction, "Parallel", Parallel, Parallel::make);
BOTAN_REGISTER_HASH_NAMED_NOARGS(GOST_34_11, "GOST-R-34.11-94");
#endif
-#if defined(BOTAN_HAS_HAS_160)
-BOTAN_REGISTER_HASH_NAMED_NOARGS(HAS_160, "HAS-160");
-#endif
-
#if defined(BOTAN_HAS_KECCAK)
BOTAN_REGISTER_HASH_NAMED_1LEN(Keccak_1600, "Keccak-1600", 512);
#endif
-#if defined(BOTAN_HAS_MD2)
-BOTAN_REGISTER_HASH_NOARGS(MD2);
-#endif
-
#if defined(BOTAN_HAS_MD4)
BOTAN_REGISTER_HASH_NOARGS(MD4);
#endif
@@ -167,10 +143,6 @@ BOTAN_REGISTER_HASH_NOARGS(MD4);
BOTAN_REGISTER_HASH_NOARGS(MD5);
#endif
-#if defined(BOTAN_HAS_RIPEMD_128)
-BOTAN_REGISTER_HASH_NAMED_NOARGS(RIPEMD_128, "RIPEMD-128");
-#endif
-
#if defined(BOTAN_HAS_RIPEMD_160)
BOTAN_REGISTER_HASH_NAMED_NOARGS(RIPEMD_160, "RIPEMD-160");
#endif
@@ -179,11 +151,6 @@ BOTAN_REGISTER_HASH_NAMED_NOARGS(RIPEMD_160, "RIPEMD-160");
BOTAN_REGISTER_HASH_NAMED_NOARGS(SHA_160, "SHA-160");
#endif
-#if defined(BOTAN_HAS_SHA1_SSE2)
-BOTAN_REGISTER_HASH_NOARGS_IF(CPUID::has_sse2(), SHA_160_SSE2, "SHA-160",
- "sse2", BOTAN_SIMD_ALGORITHM_PRIO);
-#endif
-
#if defined(BOTAN_HAS_SHA2_32)
BOTAN_REGISTER_HASH_NAMED_NOARGS(SHA_224, "SHA-224");
BOTAN_REGISTER_HASH_NAMED_NOARGS(SHA_256, "SHA-256");
diff --git a/src/lib/hash/hash.h b/src/lib/hash/hash.h
index ac1c22a65..08b5d5243 100644
--- a/src/lib/hash/hash.h
+++ b/src/lib/hash/hash.h
@@ -40,6 +40,12 @@ class BOTAN_DLL HashFunction : public Buffered_Computation
*/
virtual HashFunction* clone() const = 0;
+ /**
+ * @return provider information about this implementation. Default is "base",
+ * might also return "sse2", "avx2", "openssl", or some other arbitrary string.
+ */
+ virtual std::string provider() const { return "base"; }
+
HashFunction();
virtual ~HashFunction();
diff --git a/src/lib/hash/keccak/keccak.cpp b/src/lib/hash/keccak/keccak.cpp
index 44297dcef..e8bda068d 100644
--- a/src/lib/hash/keccak/keccak.cpp
+++ b/src/lib/hash/keccak/keccak.cpp
@@ -11,9 +11,8 @@
namespace Botan {
-namespace {
-
-void keccak_f_1600(u64bit A[25])
+//static
+void Keccak_1600::permute(u64bit A[25])
{
static const u64bit RC[24] = {
0x0000000000000001, 0x0000000000008082, 0x800000000000808A,
@@ -96,8 +95,6 @@ void keccak_f_1600(u64bit A[25])
}
}
-}
-
Keccak_1600::Keccak_1600(size_t output_bits) :
m_output_bits(output_bits),
m_bitrate(1600 - 2*output_bits),
@@ -167,7 +164,7 @@ void Keccak_1600::add_data(const byte input[], size_t length)
if(m_S_pos == m_bitrate / 8)
{
- keccak_f_1600(m_S.data());
+ Keccak_1600::permute(m_S.data());
m_S_pos = 0;
}
}
diff --git a/src/lib/hash/keccak/keccak.h b/src/lib/hash/keccak/keccak.h
index a73595d6a..a66142d8c 100644
--- a/src/lib/hash/keccak/keccak.h
+++ b/src/lib/hash/keccak/keccak.h
@@ -33,6 +33,12 @@ class BOTAN_DLL Keccak_1600 final : public HashFunction
HashFunction* clone() const override;
std::string name() const override;
void clear() override;
+
+ /**
+ * The bare Keccak-1600 permutation
+ */
+ static void permute(u64bit A[25]);
+
private:
void add_data(const byte input[], size_t length) override;
void final_result(byte out[]) override;
diff --git a/src/lib/hash/md2/info.txt b/src/lib/hash/md2/info.txt
deleted file mode 100644
index 8ea7dc393..000000000
--- a/src/lib/hash/md2/info.txt
+++ /dev/null
@@ -1 +0,0 @@
-define MD2 20131128
diff --git a/src/lib/hash/md2/md2.cpp b/src/lib/hash/md2/md2.cpp
deleted file mode 100644
index f5e222610..000000000
--- a/src/lib/hash/md2/md2.cpp
+++ /dev/null
@@ -1,112 +0,0 @@
-/*
-* MD2
-* (C) 1999-2007 Jack Lloyd
-*
-* Botan is released under the Simplified BSD License (see license.txt)
-*/
-
-#include <botan/md2.h>
-
-namespace Botan {
-
-/**
-* MD2 Compression Function
-*/
-void MD2::hash(const byte input[])
- {
- static const byte SBOX[256] = {
- 0x29, 0x2E, 0x43, 0xC9, 0xA2, 0xD8, 0x7C, 0x01, 0x3D, 0x36, 0x54, 0xA1,
- 0xEC, 0xF0, 0x06, 0x13, 0x62, 0xA7, 0x05, 0xF3, 0xC0, 0xC7, 0x73, 0x8C,
- 0x98, 0x93, 0x2B, 0xD9, 0xBC, 0x4C, 0x82, 0xCA, 0x1E, 0x9B, 0x57, 0x3C,
- 0xFD, 0xD4, 0xE0, 0x16, 0x67, 0x42, 0x6F, 0x18, 0x8A, 0x17, 0xE5, 0x12,
- 0xBE, 0x4E, 0xC4, 0xD6, 0xDA, 0x9E, 0xDE, 0x49, 0xA0, 0xFB, 0xF5, 0x8E,
- 0xBB, 0x2F, 0xEE, 0x7A, 0xA9, 0x68, 0x79, 0x91, 0x15, 0xB2, 0x07, 0x3F,
- 0x94, 0xC2, 0x10, 0x89, 0x0B, 0x22, 0x5F, 0x21, 0x80, 0x7F, 0x5D, 0x9A,
- 0x5A, 0x90, 0x32, 0x27, 0x35, 0x3E, 0xCC, 0xE7, 0xBF, 0xF7, 0x97, 0x03,
- 0xFF, 0x19, 0x30, 0xB3, 0x48, 0xA5, 0xB5, 0xD1, 0xD7, 0x5E, 0x92, 0x2A,
- 0xAC, 0x56, 0xAA, 0xC6, 0x4F, 0xB8, 0x38, 0xD2, 0x96, 0xA4, 0x7D, 0xB6,
- 0x76, 0xFC, 0x6B, 0xE2, 0x9C, 0x74, 0x04, 0xF1, 0x45, 0x9D, 0x70, 0x59,
- 0x64, 0x71, 0x87, 0x20, 0x86, 0x5B, 0xCF, 0x65, 0xE6, 0x2D, 0xA8, 0x02,
- 0x1B, 0x60, 0x25, 0xAD, 0xAE, 0xB0, 0xB9, 0xF6, 0x1C, 0x46, 0x61, 0x69,
- 0x34, 0x40, 0x7E, 0x0F, 0x55, 0x47, 0xA3, 0x23, 0xDD, 0x51, 0xAF, 0x3A,
- 0xC3, 0x5C, 0xF9, 0xCE, 0xBA, 0xC5, 0xEA, 0x26, 0x2C, 0x53, 0x0D, 0x6E,
- 0x85, 0x28, 0x84, 0x09, 0xD3, 0xDF, 0xCD, 0xF4, 0x41, 0x81, 0x4D, 0x52,
- 0x6A, 0xDC, 0x37, 0xC8, 0x6C, 0xC1, 0xAB, 0xFA, 0x24, 0xE1, 0x7B, 0x08,
- 0x0C, 0xBD, 0xB1, 0x4A, 0x78, 0x88, 0x95, 0x8B, 0xE3, 0x63, 0xE8, 0x6D,
- 0xE9, 0xCB, 0xD5, 0xFE, 0x3B, 0x00, 0x1D, 0x39, 0xF2, 0xEF, 0xB7, 0x0E,
- 0x66, 0x58, 0xD0, 0xE4, 0xA6, 0x77, 0x72, 0xF8, 0xEB, 0x75, 0x4B, 0x0A,
- 0x31, 0x44, 0x50, 0xB4, 0x8F, 0xED, 0x1F, 0x1A, 0xDB, 0x99, 0x8D, 0x33,
- 0x9F, 0x11, 0x83, 0x14 };
-
- buffer_insert(m_X, 16, input, hash_block_size());
- xor_buf(&m_X[32], m_X.data(), &m_X[16], hash_block_size());
- byte T = 0;
-
- for(size_t i = 0; i != 18; ++i)
- {
- for(size_t k = 0; k != 48; k += 8)
- {
- T = m_X[k ] ^= SBOX[T]; T = m_X[k+1] ^= SBOX[T];
- T = m_X[k+2] ^= SBOX[T]; T = m_X[k+3] ^= SBOX[T];
- T = m_X[k+4] ^= SBOX[T]; T = m_X[k+5] ^= SBOX[T];
- T = m_X[k+6] ^= SBOX[T]; T = m_X[k+7] ^= SBOX[T];
- }
-
- T += static_cast<byte>(i);
- }
-
- T = m_checksum[15];
- for(size_t i = 0; i != hash_block_size(); ++i)
- T = m_checksum[i] ^= SBOX[input[i] ^ T];
- }
-
-/**
-* Update the hash
-*/
-void MD2::add_data(const byte input[], size_t length)
- {
- buffer_insert(m_buffer, m_position, input, length);
-
- if(m_position + length >= hash_block_size())
- {
- hash(m_buffer.data());
- input += (hash_block_size() - m_position);
- length -= (hash_block_size() - m_position);
- while(length >= hash_block_size())
- {
- hash(input);
- input += hash_block_size();
- length -= hash_block_size();
- }
- copy_mem(m_buffer.data(), input, length);
- m_position = 0;
- }
- m_position += length;
- }
-
-/**
-* Finalize a MD2 Hash
-*/
-void MD2::final_result(byte output[])
- {
- for(size_t i = m_position; i != hash_block_size(); ++i)
- m_buffer[i] = static_cast<byte>(hash_block_size() - m_position);
-
- hash(m_buffer.data());
- hash(m_checksum.data());
- copy_mem(output, m_X.data(), output_length());
- clear();
- }
-
-/**
-* Clear memory of sensitive data
-*/
-void MD2::clear()
- {
- zeroise(m_X);
- zeroise(m_checksum);
- zeroise(m_buffer);
- m_position = 0;
- }
-
-}
diff --git a/src/lib/hash/md2/md2.h b/src/lib/hash/md2/md2.h
deleted file mode 100644
index 58629495a..000000000
--- a/src/lib/hash/md2/md2.h
+++ /dev/null
@@ -1,41 +0,0 @@
-/*
-* MD2
-* (C) 1999-2007 Jack Lloyd
-*
-* Botan is released under the Simplified BSD License (see license.txt)
-*/
-
-#ifndef BOTAN_MD2_H__
-#define BOTAN_MD2_H__
-
-#include <botan/hash.h>
-
-namespace Botan {
-
-/**
-* MD2
-*/
-class BOTAN_DLL MD2 final : public HashFunction
- {
- public:
- std::string name() const override { return "MD2"; }
- size_t output_length() const override { return 16; }
- size_t hash_block_size() const override { return 16; }
- HashFunction* clone() const override { return new MD2; }
-
- void clear() override;
-
- MD2() : m_X(48), m_checksum(16), m_buffer(16), m_position(0)
- { clear(); }
- private:
- void add_data(const byte[], size_t) override;
- void hash(const byte[]);
- void final_result(byte[]) override;
-
- secure_vector<byte> m_X, m_checksum, m_buffer;
- size_t m_position;
- };
-
-}
-
-#endif
diff --git a/src/lib/hash/rmd128/info.txt b/src/lib/hash/rmd128/info.txt
deleted file mode 100644
index 7d2a4eacd..000000000
--- a/src/lib/hash/rmd128/info.txt
+++ /dev/null
@@ -1,5 +0,0 @@
-define RIPEMD_128 20131128
-
-<requires>
-mdx_hash
-</requires>
diff --git a/src/lib/hash/rmd128/rmd128.cpp b/src/lib/hash/rmd128/rmd128.cpp
deleted file mode 100644
index e520fa0c3..000000000
--- a/src/lib/hash/rmd128/rmd128.cpp
+++ /dev/null
@@ -1,173 +0,0 @@
-/*
-* RIPEMD-128
-* (C) 1999-2007 Jack Lloyd
-*
-* Botan is released under the Simplified BSD License (see license.txt)
-*/
-
-#include <botan/rmd128.h>
-
-namespace Botan {
-
-namespace RIPEMD_128_F {
-
-/*
-* RIPEMD-128 F1 Function
-*/
-inline void F1(u32bit& A, u32bit B, u32bit C, u32bit D,
- u32bit msg, u32bit shift)
- {
- A += (B ^ C ^ D) + msg;
- A = rotate_left(A, shift);
- }
-
-/*
-* RIPEMD-128 F2 Function
-*/
-inline void F2(u32bit& A, u32bit B, u32bit C, u32bit D,
- u32bit msg, u32bit shift, u32bit magic)
- {
- A += (D ^ (B & (C ^ D))) + msg + magic;
- A = rotate_left(A, shift);
- }
-
-/*
-* RIPEMD-128 F3 Function
-*/
-inline void F3(u32bit& A, u32bit B, u32bit C, u32bit D,
- u32bit msg, u32bit shift, u32bit magic)
- {
- A += (D ^ (B | ~C)) + msg + magic;
- A = rotate_left(A, shift);
- }
-
-/*
-* RIPEMD-128 F4 Function
-*/
-inline void F4(u32bit& A, u32bit B, u32bit C, u32bit D,
- u32bit msg, u32bit shift, u32bit magic)
- {
- A += (C ^ (D & (B ^ C))) + msg + magic;
- A = rotate_left(A, shift);
- }
-
-}
-
-/*
-* RIPEMD-128 Compression Function
-*/
-void RIPEMD_128::compress_n(const byte input[], size_t blocks)
- {
- using namespace RIPEMD_128_F;
-
- const u32bit MAGIC2 = 0x5A827999, MAGIC3 = 0x6ED9EBA1,
- MAGIC4 = 0x8F1BBCDC, MAGIC5 = 0x50A28BE6,
- MAGIC6 = 0x5C4DD124, MAGIC7 = 0x6D703EF3;
-
- for(size_t i = 0; i != blocks; ++i)
- {
- load_le(m_M.data(), input, m_M.size());
-
- u32bit A1 = m_digest[0], A2 = A1, B1 = m_digest[1], B2 = B1,
- C1 = m_digest[2], C2 = C1, D1 = m_digest[3], D2 = D1;
-
- F1(A1,B1,C1,D1,m_M[ 0],11 ); F4(A2,B2,C2,D2,m_M[ 5], 8,MAGIC5);
- F1(D1,A1,B1,C1,m_M[ 1],14 ); F4(D2,A2,B2,C2,m_M[14], 9,MAGIC5);
- F1(C1,D1,A1,B1,m_M[ 2],15 ); F4(C2,D2,A2,B2,m_M[ 7], 9,MAGIC5);
- F1(B1,C1,D1,A1,m_M[ 3],12 ); F4(B2,C2,D2,A2,m_M[ 0],11,MAGIC5);
- F1(A1,B1,C1,D1,m_M[ 4], 5 ); F4(A2,B2,C2,D2,m_M[ 9],13,MAGIC5);
- F1(D1,A1,B1,C1,m_M[ 5], 8 ); F4(D2,A2,B2,C2,m_M[ 2],15,MAGIC5);
- F1(C1,D1,A1,B1,m_M[ 6], 7 ); F4(C2,D2,A2,B2,m_M[11],15,MAGIC5);
- F1(B1,C1,D1,A1,m_M[ 7], 9 ); F4(B2,C2,D2,A2,m_M[ 4], 5,MAGIC5);
- F1(A1,B1,C1,D1,m_M[ 8],11 ); F4(A2,B2,C2,D2,m_M[13], 7,MAGIC5);
- F1(D1,A1,B1,C1,m_M[ 9],13 ); F4(D2,A2,B2,C2,m_M[ 6], 7,MAGIC5);
- F1(C1,D1,A1,B1,m_M[10],14 ); F4(C2,D2,A2,B2,m_M[15], 8,MAGIC5);
- F1(B1,C1,D1,A1,m_M[11],15 ); F4(B2,C2,D2,A2,m_M[ 8],11,MAGIC5);
- F1(A1,B1,C1,D1,m_M[12], 6 ); F4(A2,B2,C2,D2,m_M[ 1],14,MAGIC5);
- F1(D1,A1,B1,C1,m_M[13], 7 ); F4(D2,A2,B2,C2,m_M[10],14,MAGIC5);
- F1(C1,D1,A1,B1,m_M[14], 9 ); F4(C2,D2,A2,B2,m_M[ 3],12,MAGIC5);
- F1(B1,C1,D1,A1,m_M[15], 8 ); F4(B2,C2,D2,A2,m_M[12], 6,MAGIC5);
-
- F2(A1,B1,C1,D1,m_M[ 7], 7,MAGIC2); F3(A2,B2,C2,D2,m_M[ 6], 9,MAGIC6);
- F2(D1,A1,B1,C1,m_M[ 4], 6,MAGIC2); F3(D2,A2,B2,C2,m_M[11],13,MAGIC6);
- F2(C1,D1,A1,B1,m_M[13], 8,MAGIC2); F3(C2,D2,A2,B2,m_M[ 3],15,MAGIC6);
- F2(B1,C1,D1,A1,m_M[ 1],13,MAGIC2); F3(B2,C2,D2,A2,m_M[ 7], 7,MAGIC6);
- F2(A1,B1,C1,D1,m_M[10],11,MAGIC2); F3(A2,B2,C2,D2,m_M[ 0],12,MAGIC6);
- F2(D1,A1,B1,C1,m_M[ 6], 9,MAGIC2); F3(D2,A2,B2,C2,m_M[13], 8,MAGIC6);
- F2(C1,D1,A1,B1,m_M[15], 7,MAGIC2); F3(C2,D2,A2,B2,m_M[ 5], 9,MAGIC6);
- F2(B1,C1,D1,A1,m_M[ 3],15,MAGIC2); F3(B2,C2,D2,A2,m_M[10],11,MAGIC6);
- F2(A1,B1,C1,D1,m_M[12], 7,MAGIC2); F3(A2,B2,C2,D2,m_M[14], 7,MAGIC6);
- F2(D1,A1,B1,C1,m_M[ 0],12,MAGIC2); F3(D2,A2,B2,C2,m_M[15], 7,MAGIC6);
- F2(C1,D1,A1,B1,m_M[ 9],15,MAGIC2); F3(C2,D2,A2,B2,m_M[ 8],12,MAGIC6);
- F2(B1,C1,D1,A1,m_M[ 5], 9,MAGIC2); F3(B2,C2,D2,A2,m_M[12], 7,MAGIC6);
- F2(A1,B1,C1,D1,m_M[ 2],11,MAGIC2); F3(A2,B2,C2,D2,m_M[ 4], 6,MAGIC6);
- F2(D1,A1,B1,C1,m_M[14], 7,MAGIC2); F3(D2,A2,B2,C2,m_M[ 9],15,MAGIC6);
- F2(C1,D1,A1,B1,m_M[11],13,MAGIC2); F3(C2,D2,A2,B2,m_M[ 1],13,MAGIC6);
- F2(B1,C1,D1,A1,m_M[ 8],12,MAGIC2); F3(B2,C2,D2,A2,m_M[ 2],11,MAGIC6);
-
- F3(A1,B1,C1,D1,m_M[ 3],11,MAGIC3); F2(A2,B2,C2,D2,m_M[15], 9,MAGIC7);
- F3(D1,A1,B1,C1,m_M[10],13,MAGIC3); F2(D2,A2,B2,C2,m_M[ 5], 7,MAGIC7);
- F3(C1,D1,A1,B1,m_M[14], 6,MAGIC3); F2(C2,D2,A2,B2,m_M[ 1],15,MAGIC7);
- F3(B1,C1,D1,A1,m_M[ 4], 7,MAGIC3); F2(B2,C2,D2,A2,m_M[ 3],11,MAGIC7);
- F3(A1,B1,C1,D1,m_M[ 9],14,MAGIC3); F2(A2,B2,C2,D2,m_M[ 7], 8,MAGIC7);
- F3(D1,A1,B1,C1,m_M[15], 9,MAGIC3); F2(D2,A2,B2,C2,m_M[14], 6,MAGIC7);
- F3(C1,D1,A1,B1,m_M[ 8],13,MAGIC3); F2(C2,D2,A2,B2,m_M[ 6], 6,MAGIC7);
- F3(B1,C1,D1,A1,m_M[ 1],15,MAGIC3); F2(B2,C2,D2,A2,m_M[ 9],14,MAGIC7);
- F3(A1,B1,C1,D1,m_M[ 2],14,MAGIC3); F2(A2,B2,C2,D2,m_M[11],12,MAGIC7);
- F3(D1,A1,B1,C1,m_M[ 7], 8,MAGIC3); F2(D2,A2,B2,C2,m_M[ 8],13,MAGIC7);
- F3(C1,D1,A1,B1,m_M[ 0],13,MAGIC3); F2(C2,D2,A2,B2,m_M[12], 5,MAGIC7);
- F3(B1,C1,D1,A1,m_M[ 6], 6,MAGIC3); F2(B2,C2,D2,A2,m_M[ 2],14,MAGIC7);
- F3(A1,B1,C1,D1,m_M[13], 5,MAGIC3); F2(A2,B2,C2,D2,m_M[10],13,MAGIC7);
- F3(D1,A1,B1,C1,m_M[11],12,MAGIC3); F2(D2,A2,B2,C2,m_M[ 0],13,MAGIC7);
- F3(C1,D1,A1,B1,m_M[ 5], 7,MAGIC3); F2(C2,D2,A2,B2,m_M[ 4], 7,MAGIC7);
- F3(B1,C1,D1,A1,m_M[12], 5,MAGIC3); F2(B2,C2,D2,A2,m_M[13], 5,MAGIC7);
-
- F4(A1,B1,C1,D1,m_M[ 1],11,MAGIC4); F1(A2,B2,C2,D2,m_M[ 8],15 );
- F4(D1,A1,B1,C1,m_M[ 9],12,MAGIC4); F1(D2,A2,B2,C2,m_M[ 6], 5 );
- F4(C1,D1,A1,B1,m_M[11],14,MAGIC4); F1(C2,D2,A2,B2,m_M[ 4], 8 );
- F4(B1,C1,D1,A1,m_M[10],15,MAGIC4); F1(B2,C2,D2,A2,m_M[ 1],11 );
- F4(A1,B1,C1,D1,m_M[ 0],14,MAGIC4); F1(A2,B2,C2,D2,m_M[ 3],14 );
- F4(D1,A1,B1,C1,m_M[ 8],15,MAGIC4); F1(D2,A2,B2,C2,m_M[11],14 );
- F4(C1,D1,A1,B1,m_M[12], 9,MAGIC4); F1(C2,D2,A2,B2,m_M[15], 6 );
- F4(B1,C1,D1,A1,m_M[ 4], 8,MAGIC4); F1(B2,C2,D2,A2,m_M[ 0],14 );
- F4(A1,B1,C1,D1,m_M[13], 9,MAGIC4); F1(A2,B2,C2,D2,m_M[ 5], 6 );
- F4(D1,A1,B1,C1,m_M[ 3],14,MAGIC4); F1(D2,A2,B2,C2,m_M[12], 9 );
- F4(C1,D1,A1,B1,m_M[ 7], 5,MAGIC4); F1(C2,D2,A2,B2,m_M[ 2],12 );
- F4(B1,C1,D1,A1,m_M[15], 6,MAGIC4); F1(B2,C2,D2,A2,m_M[13], 9 );
- F4(A1,B1,C1,D1,m_M[14], 8,MAGIC4); F1(A2,B2,C2,D2,m_M[ 9],12 );
- F4(D1,A1,B1,C1,m_M[ 5], 6,MAGIC4); F1(D2,A2,B2,C2,m_M[ 7], 5 );
- F4(C1,D1,A1,B1,m_M[ 6], 5,MAGIC4); F1(C2,D2,A2,B2,m_M[10],15 );
- F4(B1,C1,D1,A1,m_M[ 2],12,MAGIC4); F1(B2,C2,D2,A2,m_M[14], 8 );
-
- D2 = m_digest[1] + C1 + D2;
- m_digest[1] = m_digest[2] + D1 + A2;
- m_digest[2] = m_digest[3] + A1 + B2;
- m_digest[3] = m_digest[0] + B1 + C2;
- m_digest[0] = D2;
-
- input += hash_block_size();
- }
- }
-
-/*
-* Copy out the digest
-*/
-void RIPEMD_128::copy_out(byte output[])
- {
- copy_out_vec_le(output, output_length(), m_digest);
- }
-
-/*
-* Clear memory of sensitive data
-*/
-void RIPEMD_128::clear()
- {
- MDx_HashFunction::clear();
- zeroise(m_M);
- m_digest[0] = 0x67452301;
- m_digest[1] = 0xEFCDAB89;
- m_digest[2] = 0x98BADCFE;
- m_digest[3] = 0x10325476;
- }
-
-}
diff --git a/src/lib/hash/rmd128/rmd128.h b/src/lib/hash/rmd128/rmd128.h
deleted file mode 100644
index ba36ab902..000000000
--- a/src/lib/hash/rmd128/rmd128.h
+++ /dev/null
@@ -1,38 +0,0 @@
-/*
-* RIPEMD-128
-* (C) 1999-2007 Jack Lloyd
-*
-* Botan is released under the Simplified BSD License (see license.txt)
-*/
-
-#ifndef BOTAN_RIPEMD_128_H__
-#define BOTAN_RIPEMD_128_H__
-
-#include <botan/mdx_hash.h>
-
-namespace Botan {
-
-/**
-* RIPEMD-128
-*/
-class BOTAN_DLL RIPEMD_128 final : public MDx_HashFunction
- {
- public:
- std::string name() const override { return "RIPEMD-128"; }
- size_t output_length() const override { return 16; }
- HashFunction* clone() const override { return new RIPEMD_128; }
-
- void clear() override;
-
- RIPEMD_128() : MDx_HashFunction(64, false, true), m_M(16), m_digest(4)
- { clear(); }
- private:
- void compress_n(const byte[], size_t blocks) override;
- void copy_out(byte[]) override;
-
- secure_vector<u32bit> m_M, m_digest;
- };
-
-}
-
-#endif
diff --git a/src/lib/hash/sha1/sha160.cpp b/src/lib/hash/sha1/sha160.cpp
index 21e87465a..87738fb00 100644
--- a/src/lib/hash/sha1/sha160.cpp
+++ b/src/lib/hash/sha1/sha160.cpp
@@ -6,6 +6,7 @@
*/
#include <botan/sha160.h>
+#include <botan/cpuid.h>
namespace Botan {
@@ -60,9 +61,19 @@ void SHA_160::compress_n(const byte input[], size_t blocks)
{
using namespace SHA1_F;
+#if defined(BOTAN_HAS_SHA1_SSE2)
+ if(CPUID::has_sse2())
+ {
+ return sse2_compress_n(m_digest, input, blocks);
+ }
+
+#endif
+
u32bit A = m_digest[0], B = m_digest[1], C = m_digest[2],
D = m_digest[3], E = m_digest[4];
+ m_W.resize(80);
+
for(size_t i = 0; i != blocks; ++i)
{
load_be(m_W.data(), input, 16);
diff --git a/src/lib/hash/sha1/sha160.h b/src/lib/hash/sha1/sha160.h
index b4a161c14..d7860834f 100644
--- a/src/lib/hash/sha1/sha160.h
+++ b/src/lib/hash/sha1/sha160.h
@@ -1,6 +1,6 @@
/*
* SHA-160
-* (C) 1999-2007 Jack Lloyd
+* (C) 1999-2007,2016 Jack Lloyd
*
* Botan is released under the Simplified BSD License (see license.txt)
*/
@@ -15,7 +15,7 @@ namespace Botan {
/**
* NIST's SHA-160
*/
-class BOTAN_DLL SHA_160 : public MDx_HashFunction
+class BOTAN_DLL SHA_160 final : public MDx_HashFunction
{
public:
std::string name() const override { return "SHA-160"; }
@@ -24,37 +24,36 @@ class BOTAN_DLL SHA_160 : public MDx_HashFunction
void clear() override;
- SHA_160() : MDx_HashFunction(64, true, true), m_digest(5), m_W(80)
- {
- clear();
- }
- protected:
- /**
- * Set a custom size for the W array. Normally 80, but some
- * subclasses need slightly more for best performance/internal
- * constraints
- * @param W_size how big to make W
- */
- explicit SHA_160(size_t W_size) :
- MDx_HashFunction(64, true, true), m_digest(5), m_W(W_size)
+ SHA_160() : MDx_HashFunction(64, true, true), m_digest(5)
{
clear();
}
+ private:
void compress_n(const byte[], size_t blocks) override;
+
+#if defined(BOTAN_HAS_SHA1_SSE2)
+ static void sse2_compress_n(secure_vector<u32bit>& digest,
+ const byte blocks[],
+ size_t block_count);
+#endif
+
+
void copy_out(byte[]) override;
/**
- * The digest value, exposed for use by subclasses (asm, SSE2)
+ * The digest value
*/
secure_vector<u32bit> m_digest;
/**
- * The message buffer, exposed for use by subclasses (asm, SSE2)
+ * The message buffer
*/
secure_vector<u32bit> m_W;
};
+typedef SHA_160 SHA_1;
+
}
#endif
diff --git a/src/lib/hash/sha1_sse2/info.txt b/src/lib/hash/sha1_sse2/info.txt
index 78f5540e7..e352364ec 100644
--- a/src/lib/hash/sha1_sse2/info.txt
+++ b/src/lib/hash/sha1_sse2/info.txt
@@ -1,4 +1,4 @@
-define SHA1_SSE2 20131128
+define SHA1_SSE2 20160803
need_isa sse2
diff --git a/src/lib/hash/sha1_sse2/sha1_sse2.cpp b/src/lib/hash/sha1_sse2/sha1_sse2.cpp
index 14ad88bc4..2ece541b0 100644
--- a/src/lib/hash/sha1_sse2/sha1_sse2.cpp
+++ b/src/lib/hash/sha1_sse2/sha1_sse2.cpp
@@ -7,8 +7,7 @@
* Botan is released under the Simplified BSD License (see license.txt)
*/
-#include <botan/sha1_sse2.h>
-#include <botan/cpuid.h>
+#include <botan/sha160.h>
#include <emmintrin.h>
namespace Botan {
@@ -152,7 +151,8 @@ inline void F4(u32bit A, u32bit& B, u32bit C, u32bit D, u32bit& E, u32bit msg)
/*
* SHA-160 Compression Function using SSE for message expansion
*/
-void SHA_160_SSE2::compress_n(const byte input_bytes[], size_t blocks)
+//static
+void SHA_160::sse2_compress_n(secure_vector<uint32_t>& digest, const byte input[], size_t blocks)
{
using namespace SHA1_SSE2_F;
@@ -161,13 +161,13 @@ void SHA_160_SSE2::compress_n(const byte input_bytes[], size_t blocks)
const __m128i K40_59 = _mm_set1_epi32(0x8F1BBCDC);
const __m128i K60_79 = _mm_set1_epi32(0xCA62C1D6);
- u32bit A = m_digest[0],
- B = m_digest[1],
- C = m_digest[2],
- D = m_digest[3],
- E = m_digest[4];
+ u32bit A = digest[0],
+ B = digest[1],
+ C = digest[2],
+ D = digest[3],
+ E = digest[4];
- const __m128i* input = reinterpret_cast<const __m128i*>(input_bytes);
+ const __m128i* input_mm = reinterpret_cast<const __m128i*>(input);
for(size_t i = 0; i != blocks; ++i)
{
@@ -178,16 +178,16 @@ void SHA_160_SSE2::compress_n(const byte input_bytes[], size_t blocks)
v4si P0, P1, P2, P3;
- __m128i W0 = _mm_loadu_si128(&input[0]);
+ __m128i W0 = _mm_loadu_si128(&input_mm[0]);
prep00_15(P0, W0);
- __m128i W1 = _mm_loadu_si128(&input[1]);
+ __m128i W1 = _mm_loadu_si128(&input_mm[1]);
prep00_15(P1, W1);
- __m128i W2 = _mm_loadu_si128(&input[2]);
+ __m128i W2 = _mm_loadu_si128(&input_mm[2]);
prep00_15(P2, W2);
- __m128i W3 = _mm_loadu_si128(&input[3]);
+ __m128i W3 = _mm_loadu_si128(&input_mm[3]);
prep00_15(P3, W3);
/*
@@ -316,13 +316,13 @@ void SHA_160_SSE2::compress_n(const byte input_bytes[], size_t blocks)
F4(C, D, E, A, B, GET_P_32(P3, 2));
F4(B, C, D, E, A, GET_P_32(P3, 3));
- A = (m_digest[0] += A);
- B = (m_digest[1] += B);
- C = (m_digest[2] += C);
- D = (m_digest[3] += D);
- E = (m_digest[4] += E);
+ A = (digest[0] += A);
+ B = (digest[1] += B);
+ C = (digest[2] += C);
+ D = (digest[3] += D);
+ E = (digest[4] += E);
- input += (hash_block_size() / 16);
+ input_mm += (64 / 16);
}
#undef GET_P_32
diff --git a/src/lib/hash/sha1_sse2/sha1_sse2.h b/src/lib/hash/sha1_sse2/sha1_sse2.h
deleted file mode 100644
index a38600762..000000000
--- a/src/lib/hash/sha1_sse2/sha1_sse2.h
+++ /dev/null
@@ -1,29 +0,0 @@
-/*
-* SHA-160
-* (C) 1999-2007 Jack Lloyd
-*
-* Botan is released under the Simplified BSD License (see license.txt)
-*/
-
-#ifndef BOTAN_SHA_160_SSE2_H__
-#define BOTAN_SHA_160_SSE2_H__
-
-#include <botan/sha160.h>
-
-namespace Botan {
-
-/**
-* SHA-160 using SSE2 for the message expansion
-*/
-class BOTAN_DLL SHA_160_SSE2 final : public SHA_160
- {
- public:
- HashFunction* clone() const override { return new SHA_160_SSE2; }
- SHA_160_SSE2() : SHA_160(0) {} // no W needed
- private:
- void compress_n(const byte[], size_t blocks) override;
- };
-
-}
-
-#endif
diff --git a/src/lib/mac/mac.h b/src/lib/mac/mac.h
index fe3388f3b..ae8ea5405 100644
--- a/src/lib/mac/mac.h
+++ b/src/lib/mac/mac.h
@@ -51,6 +51,13 @@ class BOTAN_DLL MessageAuthenticationCode : public Buffered_Computation,
* Get a new object representing the same algorithm as *this
*/
virtual MessageAuthenticationCode* clone() const = 0;
+
+ /**
+ * @return provider information about this implementation. Default is "base",
+ * might also return "sse2", "avx2", "openssl", or some other arbitrary string.
+ */
+ virtual std::string provider() const { return "base"; }
+
};
typedef MessageAuthenticationCode MAC;
diff --git a/src/lib/modes/aead/gcm/gcm.cpp b/src/lib/modes/aead/gcm/gcm.cpp
index 78792b79a..32c6c0b70 100644
--- a/src/lib/modes/aead/gcm/gcm.cpp
+++ b/src/lib/modes/aead/gcm/gcm.cpp
@@ -184,6 +184,16 @@ std::string GCM_Mode::name() const
return (m_cipher_name + "/GCM");
}
+std::string GCM_Mode::provider() const
+ {
+#if defined(BOTAN_HAS_GCM_CLMUL)
+ if(CPUID::has_clmul())
+ return "clmul";
+#endif
+
+ return "base";
+ }
+
size_t GCM_Mode::update_granularity() const
{
return GCM_BS;
diff --git a/src/lib/modes/aead/gcm/gcm.h b/src/lib/modes/aead/gcm/gcm.h
index 0110436b2..6902bc1fa 100644
--- a/src/lib/modes/aead/gcm/gcm.h
+++ b/src/lib/modes/aead/gcm/gcm.h
@@ -36,6 +36,8 @@ class BOTAN_DLL GCM_Mode : public AEAD_Mode
size_t tag_size() const override { return m_tag_size; }
void clear() override;
+
+ std::string provider() const override;
protected:
GCM_Mode(BlockCipher* cipher, size_t tag_size);
diff --git a/src/lib/modes/cipher_mode.h b/src/lib/modes/cipher_mode.h
index 5781ebbee..d890870c1 100644
--- a/src/lib/modes/cipher_mode.h
+++ b/src/lib/modes/cipher_mode.h
@@ -125,14 +125,6 @@ class BOTAN_DLL Cipher_Mode
*/
virtual bool valid_nonce_length(size_t nonce_len) const = 0;
- /**
- * Return some short name describing the provider of this tranformation.
- * Useful in cases where multiple implementations are available (eg,
- * different implementations of AES). Default "core" is used for the
- * 'standard' implementation included in the library.
- */
- virtual std::string provider() const { return "core"; }
-
virtual std::string name() const = 0;
virtual void clear() = 0;
@@ -186,6 +178,12 @@ class BOTAN_DLL Cipher_Mode
key_schedule(key, length);
}
+ /**
+ * @return provider information about this implementation. Default is "base",
+ * might also return "sse2", "avx2", "openssl", or some other arbitrary string.
+ */
+ virtual std::string provider() const { return "base"; }
+
private:
virtual void key_schedule(const byte key[], size_t length) = 0;
};
diff --git a/src/lib/pk_pad/hash_id/hash_id.cpp b/src/lib/pk_pad/hash_id/hash_id.cpp
index 882c30a4c..2af0f6878 100644
--- a/src/lib/pk_pad/hash_id/hash_id.cpp
+++ b/src/lib/pk_pad/hash_id/hash_id.cpp
@@ -12,18 +12,10 @@ namespace Botan {
namespace {
-const byte MD2_PKCS_ID[] = {
-0x30, 0x20, 0x30, 0x0C, 0x06, 0x08, 0x2A, 0x86, 0x48, 0x86,
-0xF7, 0x0D, 0x02, 0x02, 0x05, 0x00, 0x04, 0x10 };
-
const byte MD5_PKCS_ID[] = {
0x30, 0x20, 0x30, 0x0C, 0x06, 0x08, 0x2A, 0x86, 0x48, 0x86,
0xF7, 0x0D, 0x02, 0x05, 0x05, 0x00, 0x04, 0x10 };
-const byte RIPEMD_128_PKCS_ID[] = {
-0x30, 0x21, 0x30, 0x09, 0x06, 0x05, 0x2B, 0x24, 0x03, 0x02,
-0x02, 0x05, 0x00, 0x04, 0x14 };
-
const byte RIPEMD_160_PKCS_ID[] = {
0x30, 0x21, 0x30, 0x09, 0x06, 0x05, 0x2B, 0x24, 0x03, 0x02,
0x01, 0x05, 0x00, 0x04, 0x14 };
@@ -67,18 +59,10 @@ std::vector<byte> pkcs_hash_id(const std::string& name)
if(name == "Parallel(MD5,SHA-160)")
return std::vector<byte>();
- if(name == "MD2")
- return std::vector<byte>(MD2_PKCS_ID,
- MD2_PKCS_ID + sizeof(MD2_PKCS_ID));
-
if(name == "MD5")
return std::vector<byte>(MD5_PKCS_ID,
MD5_PKCS_ID + sizeof(MD5_PKCS_ID));
- if(name == "RIPEMD-128")
- return std::vector<byte>(RIPEMD_128_PKCS_ID,
- RIPEMD_128_PKCS_ID + sizeof(RIPEMD_128_PKCS_ID));
-
if(name == "RIPEMD-160")
return std::vector<byte>(RIPEMD_160_PKCS_ID,
RIPEMD_160_PKCS_ID + sizeof(RIPEMD_160_PKCS_ID));
@@ -127,7 +111,6 @@ byte ieee1363_hash_id(const std::string& name)
if(name == "SHA-512") return 0x35;
if(name == "RIPEMD-160") return 0x31;
- if(name == "RIPEMD-128") return 0x32;
if(name == "Whirlpool") return 0x37;
diff --git a/src/lib/prov/openssl/openssl_block.cpp b/src/lib/prov/openssl/openssl_block.cpp
index c868e8977..8f5ae89b1 100644
--- a/src/lib/prov/openssl/openssl_block.cpp
+++ b/src/lib/prov/openssl/openssl_block.cpp
@@ -25,6 +25,7 @@ class OpenSSL_BlockCipher : public BlockCipher
~OpenSSL_BlockCipher();
void clear() override;
+ std::string provider() const override { return "openssl"; }
std::string name() const override { return m_cipher_name; }
BlockCipher* clone() const override;
diff --git a/src/lib/prov/openssl/openssl_hash.cpp b/src/lib/prov/openssl/openssl_hash.cpp
index 574cfed91..15aebeb94 100644
--- a/src/lib/prov/openssl/openssl_hash.cpp
+++ b/src/lib/prov/openssl/openssl_hash.cpp
@@ -23,6 +23,7 @@ class OpenSSL_HashFunction : public HashFunction
EVP_DigestInit_ex(&m_md, algo, nullptr);
}
+ std::string provider() const override { return "openssl"; }
std::string name() const override { return m_name; }
HashFunction* clone() const override
@@ -96,10 +97,6 @@ make_evp_hash_maker(const EVP_MD* md, const char* algo)
BOTAN_REGISTER_OPENSSL_EVP_HASH("SHA-512", EVP_sha512);
#endif
-#if !defined(OPENSSL_NO_MD2)
- BOTAN_REGISTER_OPENSSL_EVP_HASH("MD2", EVP_md2);
-#endif
-
#if !defined(OPENSSL_NO_MD4)
BOTAN_REGISTER_OPENSSL_EVP_HASH("MD4", EVP_md4);
#endif
diff --git a/src/lib/prov/openssl/openssl_rc4.cpp b/src/lib/prov/openssl/openssl_rc4.cpp
index d6246e4ab..2e9f8aab7 100644
--- a/src/lib/prov/openssl/openssl_rc4.cpp
+++ b/src/lib/prov/openssl/openssl_rc4.cpp
@@ -24,6 +24,8 @@ class OpenSSL_RC4 : public StreamCipher
public:
void clear() override { clear_mem(&m_rc4, 1); }
+ std::string provider() const override { return "openssl"; }
+
std::string name() const override
{
switch(m_skip)
diff --git a/src/lib/pubkey/if_algo/if_algo.cpp b/src/lib/pubkey/if_algo/if_algo.cpp
deleted file mode 100644
index e5f3ae20f..000000000
--- a/src/lib/pubkey/if_algo/if_algo.cpp
+++ /dev/null
@@ -1,140 +0,0 @@
-/*
-* IF Scheme
-* (C) 1999-2007 Jack Lloyd
-*
-* Botan is released under the Simplified BSD License (see license.txt)
-*/
-
-#include <botan/if_algo.h>
-#include <botan/numthry.h>
-#include <botan/workfactor.h>
-#include <botan/der_enc.h>
-#include <botan/ber_dec.h>
-
-namespace Botan {
-
-size_t IF_Scheme_PublicKey::estimated_strength() const
- {
- return if_work_factor(m_n.bits());
- }
-
-AlgorithmIdentifier IF_Scheme_PublicKey::algorithm_identifier() const
- {
- return AlgorithmIdentifier(get_oid(),
- AlgorithmIdentifier::USE_NULL_PARAM);
- }
-
-std::vector<byte> IF_Scheme_PublicKey::x509_subject_public_key() const
- {
- return DER_Encoder()
- .start_cons(SEQUENCE)
- .encode(m_n)
- .encode(m_e)
- .end_cons()
- .get_contents_unlocked();
- }
-
-IF_Scheme_PublicKey::IF_Scheme_PublicKey(const AlgorithmIdentifier&,
- const secure_vector<byte>& key_bits)
- {
- BER_Decoder(key_bits)
- .start_cons(SEQUENCE)
- .decode(m_n)
- .decode(m_e)
- .verify_end()
- .end_cons();
- }
-
-/*
-* Check IF Scheme Public Parameters
-*/
-bool IF_Scheme_PublicKey::check_key(RandomNumberGenerator&, bool) const
- {
- if(m_n < 35 || m_n.is_even() || m_e < 2)
- return false;
- return true;
- }
-
-secure_vector<byte> IF_Scheme_PrivateKey::pkcs8_private_key() const
- {
- return DER_Encoder()
- .start_cons(SEQUENCE)
- .encode(static_cast<size_t>(0))
- .encode(m_n)
- .encode(m_e)
- .encode(m_d)
- .encode(m_p)
- .encode(m_q)
- .encode(m_d1)
- .encode(m_d2)
- .encode(m_c)
- .end_cons()
- .get_contents();
- }
-
-IF_Scheme_PrivateKey::IF_Scheme_PrivateKey(RandomNumberGenerator& rng,
- const AlgorithmIdentifier&,
- const secure_vector<byte>& key_bits)
- {
- BER_Decoder(key_bits)
- .start_cons(SEQUENCE)
- .decode_and_check<size_t>(0, "Unknown PKCS #1 key format version")
- .decode(m_n)
- .decode(m_e)
- .decode(m_d)
- .decode(m_p)
- .decode(m_q)
- .decode(m_d1)
- .decode(m_d2)
- .decode(m_c)
- .end_cons();
-
- load_check(rng);
- }
-
-IF_Scheme_PrivateKey::IF_Scheme_PrivateKey(RandomNumberGenerator& rng,
- const BigInt& prime1,
- const BigInt& prime2,
- const BigInt& exp,
- const BigInt& d_exp,
- const BigInt& mod) :
- m_d{ d_exp }, m_p{ prime1 }, m_q{ prime2 }, m_d1{}, m_d2{}, m_c{ inverse_mod( m_q, m_p ) }
- {
- m_n = mod.is_nonzero() ? mod : m_p * m_q;
- m_e = exp;
-
- if(m_d == 0)
- {
- BigInt inv_for_d = lcm(m_p - 1, m_q - 1);
- if(m_e.is_even())
- inv_for_d >>= 1;
-
- m_d = inverse_mod(m_e, inv_for_d);
- }
-
- m_d1 = m_d % (m_p - 1);
- m_d2 = m_d % (m_q - 1);
-
- load_check(rng);
- }
-
-/*
-* Check IF Scheme Private Parameters
-*/
-bool IF_Scheme_PrivateKey::check_key(RandomNumberGenerator& rng,
- bool strong) const
- {
- if(m_n < 35 || m_n.is_even() || m_e < 2 || m_d < 2 || m_p < 3 || m_q < 3 || m_p*m_q != m_n)
- return false;
-
- if(m_d1 != m_d % (m_p - 1) || m_d2 != m_d % (m_q - 1) || m_c != inverse_mod(m_q, m_p))
- return false;
-
- const size_t prob = (strong) ? 56 : 12;
-
- if(!is_prime(m_p, rng, prob) || !is_prime(m_q, rng, prob))
- return false;
- return true;
- }
-
-}
diff --git a/src/lib/pubkey/if_algo/if_algo.h b/src/lib/pubkey/if_algo/if_algo.h
deleted file mode 100644
index 46dbd51a9..000000000
--- a/src/lib/pubkey/if_algo/if_algo.h
+++ /dev/null
@@ -1,107 +0,0 @@
-/*
-* IF Scheme
-* (C) 1999-2007 Jack Lloyd
-*
-* Botan is released under the Simplified BSD License (see license.txt)
-*/
-
-#ifndef BOTAN_IF_ALGO_H__
-#define BOTAN_IF_ALGO_H__
-
-#include <botan/bigint.h>
-#include <botan/x509_key.h>
-
-namespace Botan {
-
-/**
-* This class represents public keys
-* of integer factorization based (IF) public key schemes.
-*/
-class BOTAN_DLL IF_Scheme_PublicKey : public virtual Public_Key
- {
- public:
- IF_Scheme_PublicKey(const AlgorithmIdentifier& alg_id,
- const secure_vector<byte>& key_bits);
-
- IF_Scheme_PublicKey(const BigInt& n, const BigInt& e) :
- m_n(n), m_e(e) {}
-
- bool check_key(RandomNumberGenerator& rng, bool) const override;
-
- AlgorithmIdentifier algorithm_identifier() const override;
-
- std::vector<byte> x509_subject_public_key() const override;
-
- /**
- * @return public modulus
- */
- const BigInt& get_n() const { return m_n; }
-
- /**
- * @return public exponent
- */
- const BigInt& get_e() const { return m_e; }
-
- size_t max_input_bits() const override { return (m_n.bits() - 1); }
-
- size_t estimated_strength() const override;
-
- protected:
- IF_Scheme_PublicKey() {}
-
- BigInt m_n, m_e;
- };
-
-/**
-* This class represents public keys
-* of integer factorization based (IF) public key schemes.
-*/
-class BOTAN_DLL IF_Scheme_PrivateKey : public virtual IF_Scheme_PublicKey,
- public virtual Private_Key
- {
- public:
-
- IF_Scheme_PrivateKey(RandomNumberGenerator& rng,
- const BigInt& prime1, const BigInt& prime2,
- const BigInt& exp, const BigInt& d_exp,
- const BigInt& mod);
-
- IF_Scheme_PrivateKey(RandomNumberGenerator& rng,
- const AlgorithmIdentifier& alg_id,
- const secure_vector<byte>& key_bits);
-
- bool check_key(RandomNumberGenerator& rng, bool) const override;
-
- /**
- * Get the first prime p.
- * @return prime p
- */
- const BigInt& get_p() const { return m_p; }
-
- /**
- * Get the second prime q.
- * @return prime q
- */
- const BigInt& get_q() const { return m_q; }
-
- /**
- * Get d with exp * d = 1 mod (p - 1, q - 1).
- * @return d
- */
- const BigInt& get_d() const { return m_d; }
-
- const BigInt& get_c() const { return m_c; }
- const BigInt& get_d1() const { return m_d1; }
- const BigInt& get_d2() const { return m_d2; }
-
- secure_vector<byte> pkcs8_private_key() const override;
-
- protected:
- IF_Scheme_PrivateKey() {}
-
- BigInt m_d, m_p, m_q, m_d1, m_d2, m_c;
- };
-
-}
-
-#endif
diff --git a/src/lib/pubkey/if_algo/info.txt b/src/lib/pubkey/if_algo/info.txt
deleted file mode 100644
index 5ceec0a89..000000000
--- a/src/lib/pubkey/if_algo/info.txt
+++ /dev/null
@@ -1,9 +0,0 @@
-define IF_PUBLIC_KEY_FAMILY 20131128
-
-load_on dep
-
-<requires>
-asn1
-bigint
-numbertheory
-</requires>
diff --git a/src/lib/pubkey/newhope/info.txt b/src/lib/pubkey/newhope/info.txt
new file mode 100644
index 000000000..8019b6a7c
--- /dev/null
+++ b/src/lib/pubkey/newhope/info.txt
@@ -0,0 +1,5 @@
+define NEWHOPE 20160829
+
+<requires>
+keccak
+</requires>
diff --git a/src/lib/pubkey/newhope/newhope.cpp b/src/lib/pubkey/newhope/newhope.cpp
new file mode 100644
index 000000000..8436457b4
--- /dev/null
+++ b/src/lib/pubkey/newhope/newhope.cpp
@@ -0,0 +1,603 @@
+/*
+* NEWHOPE Ring-LWE scheme
+* Based on the public domain reference implementation by the
+* designers (https://github.com/tpoeppelmann/newhope)
+*
+* Further changes
+* (C) 2016 Jack Lloyd
+*
+* Botan is released under the Simplified BSD License (see license.txt)
+*/
+
+#include <botan/newhope.h>
+#include <botan/keccak.h>
+#include <botan/loadstor.h>
+
+namespace Botan {
+
+typedef newhope_poly poly;
+
+// Don't change this :)
+#define PARAM_Q 12289
+#define PARAM_N 1024
+
+#define NEWHOPE_POLY_BYTES 1792
+#define NEWHOPE_SEED_BYTES 32
+
+#define SHAKE128_RATE 168
+
+namespace {
+
+/* Incomplete-reduction routines; for details on allowed input ranges
+ * and produced output ranges, see the description in the paper:
+ * https://cryptojedi.org/papers/#newhope */
+
+inline uint16_t montgomery_reduce(uint32_t a)
+{
+ const uint32_t qinv = 12287; // -inverse_mod(p,2^18)
+ const uint32_t rlog = 18;
+
+ uint32_t u;
+
+ u = (a * qinv);
+ u &= ((1<<rlog)-1);
+ u *= PARAM_Q;
+ a = a + u;
+ return a >> 18;
+}
+
+inline uint16_t barrett_reduce(uint16_t a)
+{
+ uint32_t u;
+
+ u = ((uint32_t) a * 5) >> 16;
+ u *= PARAM_Q;
+ a -= u;
+ return a;
+}
+
+inline void mul_coefficients(uint16_t* poly, const uint16_t* factors)
+{
+ unsigned int i;
+
+ for(i = 0; i < PARAM_N; i++)
+ poly[i] = montgomery_reduce((poly[i] * factors[i]));
+}
+
+/* GS_bo_to_no; omegas need to be in Montgomery domain */
+inline void ntt(uint16_t * a, const uint16_t* omega)
+{
+ int i, start, j, jTwiddle, distance;
+ uint16_t temp, W;
+
+
+ for(i=0;i<10;i+=2)
+ {
+ // Even level
+ distance = (1<<i);
+ for(start = 0; start < distance;start++)
+ {
+ jTwiddle = 0;
+ for(j=start;j<PARAM_N-1;j+=2*distance)
+ {
+ W = omega[jTwiddle++];
+ temp = a[j];
+ a[j] = (temp + a[j + distance]); // Omit reduction (be lazy)
+ a[j + distance] = montgomery_reduce((W * ((uint32_t)temp + 3*PARAM_Q - a[j + distance])));
+ }
+ }
+
+ // Odd level
+ distance <<= 1;
+ for(start = 0; start < distance;start++)
+ {
+ jTwiddle = 0;
+ for(j=start;j<PARAM_N-1;j+=2*distance)
+ {
+ W = omega[jTwiddle++];
+ temp = a[j];
+ a[j] = barrett_reduce((temp + a[j + distance]));
+ a[j + distance] = montgomery_reduce((W * ((uint32_t)temp + 3*PARAM_Q - a[j + distance])));
+ }
+ }
+ }
+}
+
+inline void poly_frombytes(poly *r, const uint8_t *a)
+{
+ int i;
+ for(i=0;i<PARAM_N/4;i++)
+ {
+ r->coeffs[4*i+0] = a[7*i+0] | (((uint16_t)a[7*i+1] & 0x3f) << 8);
+ r->coeffs[4*i+1] = (a[7*i+1] >> 6) | (((uint16_t)a[7*i+2]) << 2) | (((uint16_t)a[7*i+3] & 0x0f) << 10);
+ r->coeffs[4*i+2] = (a[7*i+3] >> 4) | (((uint16_t)a[7*i+4]) << 4) | (((uint16_t)a[7*i+5] & 0x03) << 12);
+ r->coeffs[4*i+3] = (a[7*i+5] >> 2) | (((uint16_t)a[7*i+6]) << 6);
+ }
+}
+
+inline void poly_tobytes(uint8_t *r, const poly *p)
+{
+ int i;
+ for(i=0;i<PARAM_N/4;i++)
+ {
+ uint16_t t0,t1,t2,t3,m;
+ int16_t c;
+ t0 = barrett_reduce(p->coeffs[4*i+0]); //Make sure that coefficients have only 14 bits
+ t1 = barrett_reduce(p->coeffs[4*i+1]);
+ t2 = barrett_reduce(p->coeffs[4*i+2]);
+ t3 = barrett_reduce(p->coeffs[4*i+3]);
+
+ m = t0 - PARAM_Q;
+ c = m;
+ c >>= 15;
+ t0 = m ^ ((t0^m)&c); // <Make sure that coefficients are in [0,q]
+
+ m = t1 - PARAM_Q;
+ c = m;
+ c >>= 15;
+ t1 = m ^ ((t1^m)&c); // <Make sure that coefficients are in [0,q]
+
+ m = t2 - PARAM_Q;
+ c = m;
+ c >>= 15;
+ t2 = m ^ ((t2^m)&c); // <Make sure that coefficients are in [0,q]
+
+ m = t3 - PARAM_Q;
+ c = m;
+ c >>= 15;
+ t3 = m ^ ((t3^m)&c); // <Make sure that coefficients are in [0,q]
+
+ r[7*i+0] = t0 & 0xff;
+ r[7*i+1] = (t0 >> 8) | (t1 << 6);
+ r[7*i+2] = (t1 >> 2);
+ r[7*i+3] = (t1 >> 10) | (t2 << 4);
+ r[7*i+4] = (t2 >> 4);
+ r[7*i+5] = (t2 >> 12) | (t3 << 2);
+ r[7*i+6] = (t3 >> 6);
+ }
+}
+
+inline void poly_getnoise(Botan::RandomNumberGenerator& rng, poly *r)
+{
+ uint8_t buf[4*PARAM_N];
+
+ rng.randomize(buf, 4*PARAM_N);
+
+ for(int i=0;i<PARAM_N;i++)
+ {
+ uint32_t t = load_le<u32bit>(buf, i);
+ uint32_t d = 0;
+ for(int j=0;j<8;j++)
+ d += (t >> j) & 0x01010101;
+ uint32_t a = ((d >> 8) & 0xff) + (d & 0xff);
+ uint32_t b = (d >> 24) + ((d >> 16) & 0xff);
+ r->coeffs[i] = a + PARAM_Q - b;
+ }
+}
+
+inline void poly_pointwise(poly *r, const poly *a, const poly *b)
+{
+ int i;
+ uint16_t t;
+ for(i=0;i<PARAM_N;i++)
+ {
+ t = montgomery_reduce(3186*b->coeffs[i]); /* t is now in Montgomery domain */
+ r->coeffs[i] = montgomery_reduce(a->coeffs[i] * t); /* r->coeffs[i] is back in normal domain */
+ }
+}
+
+inline void poly_add(poly *r, const poly *a, const poly *b)
+{
+ int i;
+ for(i=0;i<PARAM_N;i++)
+ r->coeffs[i] = barrett_reduce(a->coeffs[i] + b->coeffs[i]);
+}
+
+inline void poly_ntt(poly *r)
+{
+
+static const uint16_t omegas_montgomery[PARAM_N/2] = {4075,6974,7373,7965,3262,5079,522,2169,6364,1018,1041,8775,2344,11011,5574,1973,4536,1050,6844,3860,3818,6118,2683,1190,4789,7822,7540,6752,5456,4449,3789,12142,11973,382,3988,468,6843,5339,6196,3710,11316,1254,5435,10930,3998,10256,10367,3879,11889,1728,6137,4948,5862,6136,3643,6874,8724,654,10302,1702,7083,6760,56,3199,9987,605,11785,8076,5594,9260,6403,4782,6212,4624,9026,8689,4080,11868,6221,3602,975,8077,8851,9445,5681,3477,1105,142,241,12231,1003,3532,5009,1956,6008,11404,7377,2049,10968,12097,7591,5057,3445,4780,2920,7048,3127,8120,11279,6821,11502,8807,12138,2127,2839,3957,431,1579,6383,9784,5874,677,3336,6234,2766,1323,9115,12237,2031,6956,6413,2281,3969,3991,12133,9522,4737,10996,4774,5429,11871,3772,453,5908,2882,1805,2051,1954,11713,3963,2447,6142,8174,3030,1843,2361,12071,2908,3529,3434,3202,7796,2057,5369,11939,1512,6906,10474,11026,49,10806,5915,1489,9789,5942,10706,10431,7535,426,8974,3757,10314,9364,347,5868,9551,9634,6554,10596,9280,11566,174,2948,2503,6507,10723,11606,2459,64,3656,8455,5257,5919,7856,1747,9166,5486,9235,6065,835,3570,4240,11580,4046,10970,9139,1058,8210,11848,922,7967,1958,10211,1112,3728,4049,11130,5990,1404,325,948,11143,6190,295,11637,5766,8212,8273,2919,8527,6119,6992,8333,1360,2555,6167,1200,7105,7991,3329,9597,12121,5106,5961,10695,10327,3051,9923,4896,9326,81,3091,1000,7969,4611,726,1853,12149,4255,11112,2768,10654,1062,2294,3553,4805,2747,4846,8577,9154,1170,2319,790,11334,9275,9088,1326,5086,9094,6429,11077,10643,3504,3542,8668,9744,1479,1,8246,7143,11567,10984,4134,5736,4978,10938,5777,8961,4591,5728,6461,5023,9650,7468,949,9664,2975,11726,2744,9283,10092,5067,12171,2476,3748,11336,6522,827,9452,5374,12159,7935,3296,3949,9893,4452,10908,2525,3584,8112,8011,10616,4989,6958,11809,9447,12280,1022,11950,9821,11745,5791,5092,2089,9005,2881,3289,2013,9048,729,7901,1260,5755,4632,11955,2426,10593,1428,4890,5911,3932,9558,8830,3637,5542,145,5179,8595,3707,10530,355,3382,4231,9741,1207,9041,7012,1168,10146,11224,4645,11885,10911,10377,435,7952,4096,493,9908,6845,6039,2422,2187,9723,8643,9852,9302,6022,7278,1002,4284,5088,1607,7313,875,8509,9430,1045,2481,5012,7428,354,6591,9377,11847,2401,1067,7188,11516,390,8511,8456,7270,545,8585,9611,12047,1537,4143,4714,4885,1017,5084,1632,3066,27,1440,8526,9273,12046,11618,9289,3400,9890,3136,7098,8758,11813,7384,3985,11869,6730,10745,10111,2249,4048,2884,11136,2126,1630,9103,5407,2686,9042,2969,8311,9424,9919,8779,5332,10626,1777,4654,10863,7351,3636,9585,5291,8374,2166,4919,12176,9140,12129,7852,12286,4895,10805,2780,5195,2305,7247,9644,4053,10600,3364,3271,4057,4414,9442,7917,2174};
+
+ static const uint16_t psis_bitrev_montgomery[PARAM_N] = {4075,6974,7373,7965,3262,5079,522,2169,6364,1018,1041,8775,2344,11011,5574,1973,4536,1050,6844,3860,3818,6118,2683,1190,4789,7822,7540,6752,5456,4449,3789,12142,11973,382,3988,468,6843,5339,6196,3710,11316,1254,5435,10930,3998,10256,10367,3879,11889,1728,6137,4948,5862,6136,3643,6874,8724,654,10302,1702,7083,6760,56,3199,9987,605,11785,8076,5594,9260,6403,4782,6212,4624,9026,8689,4080,11868,6221,3602,975,8077,8851,9445,5681,3477,1105,142,241,12231,1003,3532,5009,1956,6008,11404,7377,2049,10968,12097,7591,5057,3445,4780,2920,7048,3127,8120,11279,6821,11502,8807,12138,2127,2839,3957,431,1579,6383,9784,5874,677,3336,6234,2766,1323,9115,12237,2031,6956,6413,2281,3969,3991,12133,9522,4737,10996,4774,5429,11871,3772,453,5908,2882,1805,2051,1954,11713,3963,2447,6142,8174,3030,1843,2361,12071,2908,3529,3434,3202,7796,2057,5369,11939,1512,6906,10474,11026,49,10806,5915,1489,9789,5942,10706,10431,7535,426,8974,3757,10314,9364,347,5868,9551,9634,6554,10596,9280,11566,174,2948,2503,6507,10723,11606,2459,64,3656,8455,5257,5919,7856,1747,9166,5486,9235,6065,835,3570,4240,11580,4046,10970,9139,1058,8210,11848,922,7967,1958,10211,1112,3728,4049,11130,5990,1404,325,948,11143,6190,295,11637,5766,8212,8273,2919,8527,6119,6992,8333,1360,2555,6167,1200,7105,7991,3329,9597,12121,5106,5961,10695,10327,3051,9923,4896,9326,81,3091,1000,7969,4611,726,1853,12149,4255,11112,2768,10654,1062,2294,3553,4805,2747,4846,8577,9154,1170,2319,790,11334,9275,9088,1326,5086,9094,6429,11077,10643,3504,3542,8668,9744,1479,1,8246,7143,11567,10984,4134,5736,4978,10938,5777,8961,4591,5728,6461,5023,9650,7468,949,9664,2975,11726,2744,9283,10092,5067,12171,2476,3748,11336,6522,827,9452,5374,12159,7935,3296,3949,9893,4452,10908,2525,3584,8112,8011,10616,4989,6958,11809,9447,12280,1022,11950,9821,11745,5791,5092,2089,9005,2881,3289,2013,9048,729,7901,1260,5755,4632,11955,2426,10593,1428,4890,5911,3932,9558,8830,3637,5542,145,5179,8595,3707,10530,355,3382,4231,9741,1207,9041,7012,1168,10146,11224,4645,11885,10911,10377,435,7952,4096,493,9908,6845,6039,2422,2187,9723,8643,9852,9302,6022,7278,1002,4284,5088,1607,7313,875,8509,9430,1045,2481,5012,7428,354,6591,9377,11847,2401,1067,7188,11516,390,8511,8456,7270,545,8585,9611,12047,1537,4143,4714,4885,1017,5084,1632,3066,27,1440,8526,9273,12046,11618,9289,3400,9890,3136,7098,8758,11813,7384,3985,11869,6730,10745,10111,2249,4048,2884,11136,2126,1630,9103,5407,2686,9042,2969,8311,9424,9919,8779,5332,10626,1777,4654,10863,7351,3636,9585,5291,8374,2166,4919,12176,9140,12129,7852,12286,4895,10805,2780,5195,2305,7247,9644,4053,10600,3364,3271,4057,4414,9442,7917,2174,3947,11951,2455,6599,10545,10975,3654,2894,7681,7126,7287,12269,4119,3343,2151,1522,7174,7350,11041,2442,2148,5959,6492,8330,8945,5598,3624,10397,1325,6565,1945,11260,10077,2674,3338,3276,11034,506,6505,1392,5478,8778,1178,2776,3408,10347,11124,2575,9489,12096,6092,10058,4167,6085,923,11251,11912,4578,10669,11914,425,10453,392,10104,8464,4235,8761,7376,2291,3375,7954,8896,6617,7790,1737,11667,3982,9342,6680,636,6825,7383,512,4670,2900,12050,7735,994,1687,11883,7021,146,10485,1403,5189,6094,2483,2054,3042,10945,3981,10821,11826,8882,8151,180,9600,7684,5219,10880,6780,204,11232,2600,7584,3121,3017,11053,7814,7043,4251,4739,11063,6771,7073,9261,2360,11925,1928,11825,8024,3678,3205,3359,11197,5209,8581,3238,8840,1136,9363,1826,3171,4489,7885,346,2068,1389,8257,3163,4840,6127,8062,8921,612,4238,10763,8067,125,11749,10125,5416,2110,716,9839,10584,11475,11873,3448,343,1908,4538,10423,7078,4727,1208,11572,3589,2982,1373,1721,10753,4103,2429,4209,5412,5993,9011,438,3515,7228,1218,8347,5232,8682,1327,7508,4924,448,1014,10029,12221,4566,5836,12229,2717,1535,3200,5588,5845,412,5102,7326,3744,3056,2528,7406,8314,9202,6454,6613,1417,10032,7784,1518,3765,4176,5063,9828,2275,6636,4267,6463,2065,7725,3495,8328,8755,8144,10533,5966,12077,9175,9520,5596,6302,8400,579,6781,11014,5734,11113,11164,4860,1131,10844,9068,8016,9694,3837,567,9348,7000,6627,7699,5082,682,11309,5207,4050,7087,844,7434,3769,293,9057,6940,9344,10883,2633,8190,3944,5530,5604,3480,2171,9282,11024,2213,8136,3805,767,12239,216,11520,6763,10353,7,8566,845,7235,3154,4360,3285,10268,2832,3572,1282,7559,3229,8360,10583,6105,3120,6643,6203,8536,8348,6919,3536,9199,10891,11463,5043,1658,5618,8787,5789,4719,751,11379,6389,10783,3065,7806,6586,2622,5386,510,7628,6921,578,10345,11839,8929,4684,12226,7154,9916,7302,8481,3670,11066,2334,1590,7878,10734,1802,1891,5103,6151,8820,3418,7846,9951,4693,417,9996,9652,4510,2946,5461,365,881,1927,1015,11675,11009,1371,12265,2485,11385,5039,6742,8449,1842,12217,8176,9577,4834,7937,9461,2643,11194,3045,6508,4094,3451,7911,11048,5406,4665,3020,6616,11345,7519,3669,5287,1790,7014,5410,11038,11249,2035,6125,10407,4565,7315,5078,10506,2840,2478,9270,4194,9195,4518,7469,1160,6878,2730,10421,10036,1734,3815,10939,5832,10595,10759,4423,8420,9617,7119,11010,11424,9173,189,10080,10526,3466,10588,7592,3578,11511,7785,9663,530,12150,8957,2532,3317,9349,10243,1481,9332,3454,3758,7899,4218,2593,11410,2276,982,6513,1849,8494,9021,4523,7988,8,457,648,150,8000,2307,2301,874,5650,170,9462,2873,9855,11498,2535,11169,5808,12268,9687,1901,7171,11787,3846,1573,6063,3793,466,11259,10608,3821,6320,4649,6263,2929};
+
+ mul_coefficients(r->coeffs, psis_bitrev_montgomery);
+ ntt((uint16_t *)r->coeffs, omegas_montgomery);
+}
+
+inline void bitrev_vector(uint16_t* poly)
+{
+static const uint16_t bitrev_table[1024] = {
+ 0,512,256,768,128,640,384,896,64,576,320,832,192,704,448,960,32,544,288,800,160,672,416,928,96,608,352,864,224,736,480,992,
+ 16,528,272,784,144,656,400,912,80,592,336,848,208,720,464,976,48,560,304,816,176,688,432,944,112,624,368,880,240,752,496,1008,
+ 8,520,264,776,136,648,392,904,72,584,328,840,200,712,456,968,40,552,296,808,168,680,424,936,104,616,360,872,232,744,488,1000,
+ 24,536,280,792,152,664,408,920,88,600,344,856,216,728,472,984,56,568,312,824,184,696,440,952,120,632,376,888,248,760,504,1016,
+ 4,516,260,772,132,644,388,900,68,580,324,836,196,708,452,964,36,548,292,804,164,676,420,932,100,612,356,868,228,740,484,996,
+ 20,532,276,788,148,660,404,916,84,596,340,852,212,724,468,980,52,564,308,820,180,692,436,948,116,628,372,884,244,756,500,1012,
+ 12,524,268,780,140,652,396,908,76,588,332,844,204,716,460,972,44,556,300,812,172,684,428,940,108,620,364,876,236,748,492,1004,
+ 28,540,284,796,156,668,412,924,92,604,348,860,220,732,476,988,60,572,316,828,188,700,444,956,124,636,380,892,252,764,508,1020,
+ 2,514,258,770,130,642,386,898,66,578,322,834,194,706,450,962,34,546,290,802,162,674,418,930,98,610,354,866,226,738,482,994,
+ 18,530,274,786,146,658,402,914,82,594,338,850,210,722,466,978,50,562,306,818,178,690,434,946,114,626,370,882,242,754,498,1010,
+ 10,522,266,778,138,650,394,906,74,586,330,842,202,714,458,970,42,554,298,810,170,682,426,938,106,618,362,874,234,746,490,1002,
+ 26,538,282,794,154,666,410,922,90,602,346,858,218,730,474,986,58,570,314,826,186,698,442,954,122,634,378,890,250,762,506,1018,
+ 6,518,262,774,134,646,390,902,70,582,326,838,198,710,454,966,38,550,294,806,166,678,422,934,102,614,358,870,230,742,486,998,
+ 22,534,278,790,150,662,406,918,86,598,342,854,214,726,470,982,54,566,310,822,182,694,438,950,118,630,374,886,246,758,502,1014,
+ 14,526,270,782,142,654,398,910,78,590,334,846,206,718,462,974,46,558,302,814,174,686,430,942,110,622,366,878,238,750,494,1006,
+ 30,542,286,798,158,670,414,926,94,606,350,862,222,734,478,990,62,574,318,830,190,702,446,958,126,638,382,894,254,766,510,1022,
+ 1,513,257,769,129,641,385,897,65,577,321,833,193,705,449,961,33,545,289,801,161,673,417,929,97,609,353,865,225,737,481,993,
+ 17,529,273,785,145,657,401,913,81,593,337,849,209,721,465,977,49,561,305,817,177,689,433,945,113,625,369,881,241,753,497,1009,
+ 9,521,265,777,137,649,393,905,73,585,329,841,201,713,457,969,41,553,297,809,169,681,425,937,105,617,361,873,233,745,489,1001,
+ 25,537,281,793,153,665,409,921,89,601,345,857,217,729,473,985,57,569,313,825,185,697,441,953,121,633,377,889,249,761,505,1017,
+ 5,517,261,773,133,645,389,901,69,581,325,837,197,709,453,965,37,549,293,805,165,677,421,933,101,613,357,869,229,741,485,997,
+ 21,533,277,789,149,661,405,917,85,597,341,853,213,725,469,981,53,565,309,821,181,693,437,949,117,629,373,885,245,757,501,1013,
+ 13,525,269,781,141,653,397,909,77,589,333,845,205,717,461,973,45,557,301,813,173,685,429,941,109,621,365,877,237,749,493,1005,
+ 29,541,285,797,157,669,413,925,93,605,349,861,221,733,477,989,61,573,317,829,189,701,445,957,125,637,381,893,253,765,509,1021,
+ 3,515,259,771,131,643,387,899,67,579,323,835,195,707,451,963,35,547,291,803,163,675,419,931,99,611,355,867,227,739,483,995,
+ 19,531,275,787,147,659,403,915,83,595,339,851,211,723,467,979,51,563,307,819,179,691,435,947,115,627,371,883,243,755,499,1011,
+ 11,523,267,779,139,651,395,907,75,587,331,843,203,715,459,971,43,555,299,811,171,683,427,939,107,619,363,875,235,747,491,1003,
+ 27,539,283,795,155,667,411,923,91,603,347,859,219,731,475,987,59,571,315,827,187,699,443,955,123,635,379,891,251,763,507,1019,
+ 7,519,263,775,135,647,391,903,71,583,327,839,199,711,455,967,39,551,295,807,167,679,423,935,103,615,359,871,231,743,487,999,
+ 23,535,279,791,151,663,407,919,87,599,343,855,215,727,471,983,55,567,311,823,183,695,439,951,119,631,375,887,247,759,503,1015,
+ 15,527,271,783,143,655,399,911,79,591,335,847,207,719,463,975,47,559,303,815,175,687,431,943,111,623,367,879,239,751,495,1007,
+ 31,543,287,799,159,671,415,927,95,607,351,863,223,735,479,991,63,575,319,831,191,703,447,959,127,639,383,895,255,767,511,1023
+};
+
+ unsigned int i,r;
+ uint16_t tmp;
+
+ for(i = 0; i < PARAM_N; i++)
+ {
+ r = bitrev_table[i];
+ if (i < r)
+ {
+ tmp = poly[i];
+ poly[i] = poly[r];
+ poly[r] = tmp;
+ }
+ }
+}
+
+inline void poly_invntt(poly *r)
+{
+static const uint16_t omegas_inv_montgomery[PARAM_N/2] = {4075,5315,4324,4916,10120,11767,7210,9027,10316,6715,1278,9945,3514,11248,11271,5925,147,8500,7840,6833,5537,4749,4467,7500,11099,9606,6171,8471,8429,5445,11239,7753,9090,12233,5529,5206,10587,1987,11635,3565,5415,8646,6153,6427,7341,6152,10561,400,8410,1922,2033,8291,1359,6854,11035,973,8579,6093,6950,5446,11821,8301,11907,316,52,3174,10966,9523,6055,8953,11612,6415,2505,5906,10710,11858,8332,9450,10162,151,3482,787,5468,1010,4169,9162,5241,9369,7509,8844,7232,4698,192,1321,10240,4912,885,6281,10333,7280,8757,11286,58,12048,12147,11184,8812,6608,2844,3438,4212,11314,8687,6068,421,8209,3600,3263,7665,6077,7507,5886,3029,6695,4213,504,11684,2302,1962,1594,6328,7183,168,2692,8960,4298,5184,11089,6122,9734,10929,3956,5297,6170,3762,9370,4016,4077,6523,652,11994,6099,1146,11341,11964,10885,6299,1159,8240,8561,11177,2078,10331,4322,11367,441,4079,11231,3150,1319,8243,709,8049,8719,11454,6224,3054,6803,3123,10542,4433,6370,7032,3834,8633,12225,9830,683,1566,5782,9786,9341,12115,723,3009,1693,5735,2655,2738,6421,11942,2925,1975,8532,3315,11863,4754,1858,1583,6347,2500,10800,6374,1483,12240,1263,1815,5383,10777,350,6920,10232,4493,9087,8855,8760,9381,218,9928,10446,9259,4115,6147,9842,8326,576,10335,10238,10484,9407,6381,11836,8517,418,6860,7515,1293,7552,2767,156,8298,8320,10008,5876,5333,10258,10115,4372,2847,7875,8232,9018,8925,1689,8236,2645,5042,9984,7094,9509,1484,7394,3,4437,160,3149,113,7370,10123,3915,6998,2704,8653,4938,1426,7635,10512,1663,6957,3510,2370,2865,3978,9320,3247,9603,6882,3186,10659,10163,1153,9405,8241,10040,2178,1544,5559,420,8304,4905,476,3531,5191,9153,2399,8889,3000,671,243,3016,3763,10849,12262,9223,10657,7205,11272,7404,7575,8146,10752,242,2678,3704,11744,5019,3833,3778,11899,773,5101,11222,9888,442,2912,5698,11935,4861,7277,9808,11244,2859,3780,11414,4976,10682,7201,8005,11287,5011,6267,2987,2437,3646,2566,10102,9867,6250,5444,2381,11796,8193,4337,11854,1912,1378,404,7644,1065,2143,11121,5277,3248,11082,2548,8058,8907,11934,1759,8582,3694,7110,12144,6747,8652,3459,2731,8357,6378,7399,10861,1696,9863,334,7657,6534,11029,4388,11560,3241,10276,9000,9408,3284,10200,7197,6498,544,2468,339,11267,9,2842,480,5331,7300,1673,4278,4177,8705,9764,1381,7837,2396,8340,8993,4354,130,6915,2837,11462,5767,953,8541,9813,118,7222,2197,3006,9545,563,9314,2625,11340,4821,2639,7266,5828,6561,7698,3328,6512,1351,7311,6553,8155,1305,722,5146,4043,12288,10810,2545,3621,8747,8785,1646,1212,5860,3195,7203,10963,3201,3014,955,11499,9970,11119,3135,3712,7443,9542,7484,8736,9995,11227,1635,9521,1177,8034,140,10436,11563,7678,4320,11289,9198,12208,2963,7393,2366,9238};
+
+static const uint16_t psis_inv_montgomery[PARAM_N] = {256,10570,1510,7238,1034,7170,6291,7921,11665,3422,4000,2327,2088,5565,795,10647,1521,5484,2539,7385,1055,7173,8047,11683,1669,1994,3796,5809,4341,9398,11876,12230,10525,12037,12253,3506,4012,9351,4847,2448,7372,9831,3160,2207,5582,2553,7387,6322,9681,1383,10731,1533,219,5298,4268,7632,6357,9686,8406,4712,9451,10128,4958,5975,11387,8649,11769,6948,11526,12180,1740,10782,6807,2728,7412,4570,4164,4106,11120,12122,8754,11784,3439,5758,11356,6889,9762,11928,1704,1999,10819,12079,12259,7018,11536,1648,1991,2040,2047,2048,10826,12080,8748,8272,8204,1172,1923,7297,2798,7422,6327,4415,7653,6360,11442,12168,7005,8023,9924,8440,8228,2931,7441,1063,3663,5790,9605,10150,1450,8985,11817,10466,10273,12001,3470,7518,1074,1909,7295,9820,4914,702,5367,7789,8135,9940,1420,3714,11064,12114,12264,1752,5517,9566,11900,1700,3754,5803,829,1874,7290,2797,10933,5073,7747,8129,6428,6185,11417,1631,233,5300,9535,10140,11982,8734,8270,2937,10953,8587,8249,2934,9197,4825,5956,4362,9401,1343,3703,529,10609,12049,6988,6265,895,3639,4031,4087,4095,585,10617,8539,4731,4187,9376,3095,9220,10095,10220,1460,10742,12068,1724,5513,11321,6884,2739,5658,6075,4379,11159,10372,8504,4726,9453,3106,7466,11600,10435,8513,9994,8450,9985,3182,10988,8592,2983,9204,4826,2445,5616,6069,867,3635,5786,11360,5134,2489,10889,12089,1727,7269,2794,9177,1311,5454,9557,6632,2703,9164,10087,1441,3717,531,3587,2268,324,5313,759,1864,5533,2546,7386,9833,8427,4715,11207,1601,7251,4547,11183,12131,1733,10781,10318,1474,10744,5046,4232,11138,10369,6748,964,7160,4534,7670,8118,8182,4680,11202,6867,981,8918,1274,182,26,7026,8026,11680,12202,10521,1503,7237,4545,5916,9623,8397,11733,10454,3249,9242,6587,941,1890,270,10572,6777,9746,6659,6218,6155,6146,878,1881,7291,11575,12187,1741,7271,8061,11685,6936,4502,9421,4857,4205,7623,1089,10689,1527,8996,10063,11971,10488,6765,2722,3900,9335,11867,6962,11528,5158,4248,4118,5855,2592,5637,6072,2623,7397,8079,9932,4930,5971,853,3633,519,8852,11798,3441,11025,1575,225,8810,11792,12218,3501,9278,3081,9218,4828,7712,8124,11694,12204,3499,4011,573,3593,5780,7848,9899,10192,1456,208,7052,2763,7417,11593,10434,12024,8740,11782,10461,3250,5731,7841,9898,1414,202,3540,7528,2831,2160,10842,5060,4234,4116,588,84,12,7024,2759,9172,6577,11473,1639,9012,3043,7457,6332,11438,1634,1989,9062,11828,8712,11778,12216,10523,6770,9745,10170,4964,9487,6622,946,8913,6540,6201,4397,9406,8366,9973,8447,8229,11709,8695,10020,3187,5722,2573,10901,6824,4486,4152,9371,8361,2950,2177,311,1800,9035,8313,11721,3430,490,70,10,1757,251,3547,7529,11609,3414,7510,4584,4166,9373,1339,5458,7802,11648,1664,7260,9815,10180,6721,9738,10169,8475,8233,9954,1422,8981,1283,5450,11312,1616,3742,11068,10359,4991,713,3613,9294,8350,4704,672,96,7036,9783,11931,3460,5761,823,10651,12055,10500,1500,5481,783,3623,11051,8601,8251,8201,11705,10450,5004,4226,7626,2845,2162,3820,7568,9859,3164,452,10598,1514,5483,6050,6131,4387,7649,8115,6426,918,8909,8295,1185,5436,11310,8638,1234,5443,11311,5127,2488,2111,10835,5059,7745,2862,3920,560,80,1767,2008,3798,11076,6849,2734,10924,12094,8750,1250,10712,6797,971,7161,1023,8924,4786,7706,4612,4170,7618,6355,4419,5898,11376,10403,10264,6733,4473,639,5358,2521,9138,3061,5704,4326,618,5355,765,5376,768,7132,4530,9425,3102,9221,6584,11474,10417,10266,12000,6981,6264,4406,2385,7363,4563,4163,7617,9866,3165,9230,11852,10471,5007,5982,11388,5138,734,3616,11050,12112,6997,11533,12181,10518,12036,3475,2252,7344,9827,4915,9480,6621,4457,7659,9872,6677,4465,4149,7615,4599,657,3605,515,10607,6782,4480,640,1847,3775,5806,2585,5636,9583,1369,10729,8555,10000,11962,5220,7768,8132,8184,9947,1421,203,29,8782,11788,1684,10774,10317,4985,9490,8378,4708,11206,5112,5997,7879,11659,12199,8765,10030,4944,5973,6120,6141,6144,7900,11662,1666,238,34,3516,5769,9602,8394,9977,6692,956,10670,6791,9748,11926,8726,11780,5194,742,106,8793,10034,3189,10989,5081,4237,5872,4350,2377,10873,6820,6241,11425,10410,10265,3222,5727,9596,4882,2453,2106,3812,11078,12116,5242,4260,11142,8614,11764,12214,5256,4262,4120,11122,5100,11262,5120,2487,5622,9581,8391,8221,2930,10952,12098,6995,6266,9673,4893,699,3611,4027,5842,11368,1624,232,8811,8281,1183,169,8802,3013,2186,5579,797,3625,4029,11109,1587,7249,11569,8675,6506,2685,10917,12093,12261,12285,1755,7273,1039,1904,272,3550,9285,3082,5707,6082,4380,7648,11626,5172,4250,9385,8363,8217,4685,5936,848,8899,6538,934,1889,3781,9318,10109,10222,6727,961,5404,772,5377,9546,8386,1198,8949,3034,2189,7335,4559,5918,2601,10905,5069,9502,3113,7467,8089,11689,5181,9518,8382,2953,3933,4073,4093,7607,8109,2914,5683,4323,11151,1593,10761,6804,972,3650,2277,5592,4310,7638,9869,4921,703,1856,9043,4803,9464,1352,8971,11815,5199,7765,6376,4422,7654,2849,407,8836,6529,7955,2892,9191,1313,10721,12065,12257,1751,9028,8312,2943,2176,3822,546,78,8789,11789,10462,12028,6985,4509,9422,1346,5459,4291,613,10621,6784,9747,3148,7472,2823,5670,810,7138,8042,4660,7688,6365,6176,6149,2634,5643,9584,10147,11983,5223,9524,11894,10477,8519,1217,3685,2282,326,10580,3267,7489,4581,2410,5611,11335,6886,8006,8166,11700,3427,11023,8597,10006,3185,455,65,5276,7776,4622,5927,7869,9902,11948,5218,2501,5624,2559,10899,1557,1978,10816,10323,8497,4725,675,1852,10798,12076,10503,3256,9243,3076,2195,10847,12083,10504,12034,10497};
+
+ bitrev_vector(r->coeffs);
+ ntt((uint16_t *)r->coeffs, omegas_inv_montgomery);
+ mul_coefficients(r->coeffs, psis_inv_montgomery);
+}
+
+
+inline void encode_a(uint8_t *r, const poly *pk, const uint8_t *seed)
+{
+ int i;
+ poly_tobytes(r, pk);
+ for(i=0;i<NEWHOPE_SEED_BYTES;i++)
+ r[NEWHOPE_POLY_BYTES+i] = seed[i];
+}
+
+inline void decode_a(poly *pk, uint8_t *seed, const uint8_t *r)
+{
+ int i;
+ poly_frombytes(pk, r);
+ for(i=0;i<NEWHOPE_SEED_BYTES;i++)
+ seed[i] = r[NEWHOPE_POLY_BYTES+i];
+}
+
+inline void encode_b(uint8_t *r, const poly *b, const poly *c)
+{
+ int i;
+ poly_tobytes(r,b);
+ for(i=0;i<PARAM_N/4;i++)
+ r[NEWHOPE_POLY_BYTES+i] = c->coeffs[4*i] | (c->coeffs[4*i+1] << 2) | (c->coeffs[4*i+2] << 4) | (c->coeffs[4*i+3] << 6);
+}
+
+inline void decode_b(poly *b, poly *c, const uint8_t *r)
+{
+ int i;
+ poly_frombytes(b, r);
+ for(i=0;i<PARAM_N/4;i++)
+ {
+ c->coeffs[4*i+0] = r[NEWHOPE_POLY_BYTES+i] & 0x03;
+ c->coeffs[4*i+1] = (r[NEWHOPE_POLY_BYTES+i] >> 2) & 0x03;
+ c->coeffs[4*i+2] = (r[NEWHOPE_POLY_BYTES+i] >> 4) & 0x03;
+ c->coeffs[4*i+3] = (r[NEWHOPE_POLY_BYTES+i] >> 6);
+ }
+}
+
+inline int32_t ct_abs(int32_t v)
+{
+ int32_t mask = v >> 31;
+ return (v ^ mask) - mask;
+}
+
+
+inline int32_t f(int32_t *v0, int32_t *v1, int32_t x)
+{
+ int32_t xit, t, r, b;
+
+ // Next 6 lines compute t = x/PARAM_Q;
+ b = x*2730;
+ t = b >> 25;
+ b = x - t*12289;
+ b = 12288 - b;
+ b >>= 31;
+ t -= b;
+
+ r = t & 1;
+ xit = (t>>1);
+ *v0 = xit+r; // v0 = round(x/(2*PARAM_Q))
+
+ t -= 1;
+ r = t & 1;
+ *v1 = (t>>1)+r;
+
+ return ct_abs(x-((*v0)*2*PARAM_Q));
+}
+
+inline int32_t g(int32_t x)
+{
+ int32_t t,c,b;
+
+ // Next 6 lines compute t = x/(4*PARAM_Q);
+ b = x*2730;
+ t = b >> 27;
+ b = x - t*49156;
+ b = 49155 - b;
+ b >>= 31;
+ t -= b;
+
+ c = t & 1;
+ t = (t >> 1) + c; // t = round(x/(8*PARAM_Q))
+
+ t *= 8*PARAM_Q;
+
+ return ct_abs(t - x);
+}
+
+
+inline int16_t LDDecode(int32_t xi0, int32_t xi1, int32_t xi2, int32_t xi3)
+{
+ int32_t t;
+
+ t = g(xi0);
+ t += g(xi1);
+ t += g(xi2);
+ t += g(xi3);
+
+ t -= 8*PARAM_Q;
+ t >>= 31;
+ return t&1;
+}
+
+inline void helprec(poly *c, const poly *v, RandomNumberGenerator& rng)
+{
+ int32_t v0[4], v1[4];
+ uint8_t rand[32];
+ int i;
+
+ rng.randomize(rand, 32);
+
+ for(i=0; i<256; i++)
+ {
+ uint8_t rbit = (rand[i>>3] >> (i&7)) & 1;
+ int32_t k;
+
+ k = f(v0+0, v1+0, 8*v->coeffs[ 0+i] + 4*rbit);
+ k += f(v0+1, v1+1, 8*v->coeffs[256+i] + 4*rbit);
+ k += f(v0+2, v1+2, 8*v->coeffs[512+i] + 4*rbit);
+ k += f(v0+3, v1+3, 8*v->coeffs[768+i] + 4*rbit);
+
+ k = (2*PARAM_Q-1-k) >> 31;
+
+ int32_t v_tmp[4];
+ v_tmp[0] = ((~k) & v0[0]) ^ (k & v1[0]);
+ v_tmp[1] = ((~k) & v0[1]) ^ (k & v1[1]);
+ v_tmp[2] = ((~k) & v0[2]) ^ (k & v1[2]);
+ v_tmp[3] = ((~k) & v0[3]) ^ (k & v1[3]);
+
+ c->coeffs[ 0+i] = (v_tmp[0] - v_tmp[3]) & 3;
+ c->coeffs[256+i] = (v_tmp[1] - v_tmp[3]) & 3;
+ c->coeffs[512+i] = (v_tmp[2] - v_tmp[3]) & 3;
+ c->coeffs[768+i] = ( -k + 2*v_tmp[3]) & 3;
+ }
+}
+
+inline void rec(uint8_t *key, const poly *v, const poly *c)
+{
+ int i;
+ int32_t tmp[4];
+
+ for(i=0;i<32;i++)
+ key[i] = 0;
+
+ for(i=0; i<256; i++)
+ {
+ tmp[0] = 16*PARAM_Q + 8*(int32_t)v->coeffs[ 0+i] - PARAM_Q * (2*c->coeffs[ 0+i]+c->coeffs[768+i]);
+ tmp[1] = 16*PARAM_Q + 8*(int32_t)v->coeffs[256+i] - PARAM_Q * (2*c->coeffs[256+i]+c->coeffs[768+i]);
+ tmp[2] = 16*PARAM_Q + 8*(int32_t)v->coeffs[512+i] - PARAM_Q * (2*c->coeffs[512+i]+c->coeffs[768+i]);
+ tmp[3] = 16*PARAM_Q + 8*(int32_t)v->coeffs[768+i] - PARAM_Q * ( c->coeffs[768+i]);
+
+ key[i>>3] |= LDDecode(tmp[0], tmp[1], tmp[2], tmp[3]) << (i & 7);
+ }
+}
+
+/* Based on the public domain implementation in
+ * crypto_hash/keccakc512/simple/ from http://bench.cr.yp.to/supercop.html
+ * by Ronny Van Keer
+ * and the public domain "TweetFips202" implementation
+ * from https://twitter.com/tweetfips202
+ * by Gilles Van Assche, Daniel J. Bernstein, and Peter Schwabe */
+
+void keccak_absorb(uint64_t *s,
+ unsigned int r,
+ const uint8_t *m, size_t mlen,
+ uint8_t p)
+{
+ size_t i;
+ uint8_t t[200];
+
+ for (i = 0; i < 25; ++i)
+ s[i] = 0;
+
+ while (mlen >= r)
+ {
+ for (i = 0; i < r / 8; ++i)
+ s[i] ^= load_le<u64bit>(m, i);
+
+ Keccak_1600::permute(s);
+ mlen -= r;
+ m += r;
+ }
+
+ for (i = 0; i < r; ++i)
+ t[i] = 0;
+ for (i = 0; i < mlen; ++i)
+ t[i] = m[i];
+ t[i] = p;
+ t[r - 1] |= 128;
+ for (i = 0; i < r / 8; ++i)
+ s[i] ^= load_le<u64bit>(t, i);
+}
+
+inline void keccak_squeezeblocks(uint8_t *h, size_t nblocks,
+ uint64_t *s, unsigned int r)
+{
+ while(nblocks > 0)
+ {
+ Keccak_1600::permute(s);
+
+ copy_out_le(h, r, s);
+
+ h += r;
+ nblocks--;
+ }
+}
+
+inline void shake128_absorb(uint64_t *s, const uint8_t *input, size_t inputByteLen)
+{
+ keccak_absorb(s, SHAKE128_RATE, input, inputByteLen, 0x1F);
+}
+
+inline void shake128_squeezeblocks(uint8_t *output, size_t nblocks, uint64_t *s)
+{
+ keccak_squeezeblocks(output, nblocks, s, SHAKE128_RATE);
+}
+
+void gen_a(poly *a, const uint8_t *seed)
+{
+ unsigned int pos=0, ctr=0;
+ uint16_t val;
+ uint64_t state[25];
+ unsigned int nblocks=16;
+ uint8_t buf[SHAKE128_RATE*16];
+
+ shake128_absorb(state, seed, NEWHOPE_SEED_BYTES);
+
+ shake128_squeezeblocks((uint8_t *) buf, nblocks, state);
+
+ while(ctr < PARAM_N)
+ {
+ val = (buf[pos] | ((uint16_t) buf[pos+1] << 8)) & 0x3fff; // Specialized for q = 12889
+ if(val < PARAM_Q)
+ a->coeffs[ctr++] = val;
+ pos += 2;
+ if(pos > SHAKE128_RATE*nblocks-2)
+ {
+ nblocks=1;
+ shake128_squeezeblocks((uint8_t *) buf,nblocks,state);
+ pos = 0;
+ }
+ }
+}
+
+}
+
+// API FUNCTIONS
+
+void newhope_hash(uint8_t *output, const uint8_t *input, size_t inputByteLen)
+{
+const size_t SHA3_256_RATE = 136;
+
+ uint64_t s[25];
+ uint8_t t[SHA3_256_RATE];
+ int i;
+
+ keccak_absorb(s, SHA3_256_RATE, input, inputByteLen, 0x06);
+ keccak_squeezeblocks(t, 1, s, SHA3_256_RATE);
+ for(i=0;i<32;i++)
+ output[i] = t[i];
+}
+
+void newhope_keygen(uint8_t *send, poly *sk, RandomNumberGenerator& rng)
+{
+ poly a, e, r, pk;
+ uint8_t seed[NEWHOPE_SEED_BYTES];
+
+ rng.randomize(seed, NEWHOPE_SEED_BYTES);
+
+ gen_a(&a, seed);
+
+ poly_getnoise(rng, sk);
+ poly_ntt(sk);
+
+ poly_getnoise(rng, &e);
+ poly_ntt(&e);
+
+ poly_pointwise(&r,sk,&a);
+ poly_add(&pk,&e,&r);
+
+ encode_a(send, &pk, seed);
+}
+
+void newhope_sharedb(uint8_t *sharedkey, uint8_t *send, const uint8_t *received,
+ RandomNumberGenerator& rng)
+{
+ poly sp, ep, v, a, pka, c, epp, bp;
+ uint8_t seed[NEWHOPE_SEED_BYTES];
+
+ decode_a(&pka, seed, received);
+ gen_a(&a, seed);
+
+ poly_getnoise(rng, &sp);
+ poly_ntt(&sp);
+ poly_getnoise(rng, &ep);
+ poly_ntt(&ep);
+
+ poly_pointwise(&bp, &a, &sp);
+ poly_add(&bp, &bp, &ep);
+
+ poly_pointwise(&v, &pka, &sp);
+ poly_invntt(&v);
+
+ poly_getnoise(rng, &epp);
+ poly_add(&v, &v, &epp);
+
+ helprec(&c, &v, rng);
+
+ encode_b(send, &bp, &c);
+
+ rec(sharedkey, &v, &c);
+
+ newhope_hash(sharedkey, sharedkey, 32);
+}
+
+
+void newhope_shareda(uint8_t *sharedkey, const poly *sk, const uint8_t *received)
+{
+ poly v,bp, c;
+
+ decode_b(&bp, &c, received);
+
+ poly_pointwise(&v,sk,&bp);
+ poly_invntt(&v);
+
+ rec(sharedkey, &v, &c);
+
+ newhope_hash(sharedkey, sharedkey, 32);
+}
+
+}
+
+#undef PARAM_N
+#undef PARAM_Q
diff --git a/src/lib/pubkey/newhope/newhope.h b/src/lib/pubkey/newhope/newhope.h
new file mode 100644
index 000000000..794f0750f
--- /dev/null
+++ b/src/lib/pubkey/newhope/newhope.h
@@ -0,0 +1,44 @@
+/*
+* NEWHOPE Ring-LWE scheme
+* Based on the public domain reference implementation by the
+* designers (https://github.com/tpoeppelmann/newhope)
+*
+* Further changes
+* (C) 2016 Jack Lloyd
+*
+* Botan is released under the Simplified BSD License (see license.txt)
+*/
+
+#ifndef BOTAN_NEWHOPE_H__
+#define BOTAN_NEWHOPE_H__
+
+#include <botan/rng.h>
+
+namespace Botan {
+
+/*
+* WARNING: This API is preliminary and will change
+* Currently pubkey.h does not support a 2-phase KEM scheme of
+* the sort NEWHOPE exports.
+*/
+#define NEWHOPE_SENDABYTES 1824
+#define NEWHOPE_SENDBBYTES 2048
+
+typedef struct {
+ uint16_t coeffs[1024];
+} newhope_poly;
+
+void BOTAN_DLL newhope_keygen(uint8_t *send, newhope_poly *sk, RandomNumberGenerator& rng);
+void BOTAN_DLL newhope_sharedb(uint8_t *sharedkey, uint8_t *send, const uint8_t *received, RandomNumberGenerator& rng);
+void BOTAN_DLL newhope_shareda(uint8_t *sharedkey, const newhope_poly *ska, const uint8_t *received);
+
+
+/*
+* This is just exposed for testing
+*/
+void BOTAN_DLL newhope_hash(uint8_t *output, const uint8_t *input, size_t inputByteLen);
+
+
+}
+
+#endif
diff --git a/src/lib/pubkey/nr/info.txt b/src/lib/pubkey/nr/info.txt
deleted file mode 100644
index 78ca6ef29..000000000
--- a/src/lib/pubkey/nr/info.txt
+++ /dev/null
@@ -1,8 +0,0 @@
-define NYBERG_RUEPPEL 20131128
-
-<requires>
-dl_algo
-dl_group
-keypair
-numbertheory
-</requires>
diff --git a/src/lib/pubkey/nr/nr.cpp b/src/lib/pubkey/nr/nr.cpp
deleted file mode 100644
index 5e2cb1be5..000000000
--- a/src/lib/pubkey/nr/nr.cpp
+++ /dev/null
@@ -1,192 +0,0 @@
-/*
-* Nyberg-Rueppel
-* (C) 1999-2010 Jack Lloyd
-*
-* Botan is released under the Simplified BSD License (see license.txt)
-*/
-
-#include <botan/internal/pk_utils.h>
-#include <botan/nr.h>
-#include <botan/keypair.h>
-#include <botan/reducer.h>
-#include <future>
-
-namespace Botan {
-
-NR_PublicKey::NR_PublicKey(const AlgorithmIdentifier& alg_id,
- const secure_vector<byte>& key_bits) :
- DL_Scheme_PublicKey(alg_id, key_bits, DL_Group::ANSI_X9_57)
- {
- }
-
-/*
-* NR_PublicKey Constructor
-*/
-NR_PublicKey::NR_PublicKey(const DL_Group& grp, const BigInt& y1)
- {
- m_group = grp;
- m_y = y1;
- }
-
-/*
-* Create a NR private key
-*/
-NR_PrivateKey::NR_PrivateKey(RandomNumberGenerator& rng,
- const DL_Group& grp,
- const BigInt& x_arg)
- {
- m_group = grp;
- m_x = x_arg;
-
- if(m_x == 0)
- m_x = BigInt::random_integer(rng, 2, group_q() - 1);
-
- m_y = power_mod(group_g(), m_x, group_p());
-
- if(x_arg == 0)
- gen_check(rng);
- else
- load_check(rng);
- }
-
-NR_PrivateKey::NR_PrivateKey(const AlgorithmIdentifier& alg_id,
- const secure_vector<byte>& key_bits,
- RandomNumberGenerator& rng) :
- DL_Scheme_PrivateKey(alg_id, key_bits, DL_Group::ANSI_X9_57)
- {
- m_y = power_mod(group_g(), m_x, group_p());
-
- load_check(rng);
- }
-
-/*
-* Check Private Nyberg-Rueppel Parameters
-*/
-bool NR_PrivateKey::check_key(RandomNumberGenerator& rng, bool strong) const
- {
- if(!DL_Scheme_PrivateKey::check_key(rng, strong) || m_x >= group_q())
- return false;
-
- if(!strong)
- return true;
-
- return KeyPair::signature_consistency_check(rng, *this, "EMSA1(SHA-1)");
- }
-
-namespace {
-
-/**
-* Nyberg-Rueppel signature operation
-*/
-class NR_Signature_Operation : public PK_Ops::Signature_with_EMSA
- {
- public:
- typedef NR_PrivateKey Key_Type;
- NR_Signature_Operation(const NR_PrivateKey& nr, const std::string& emsa) :
- PK_Ops::Signature_with_EMSA(emsa),
- m_q(nr.group_q()),
- m_x(nr.get_x()),
- m_powermod_g_p(nr.group_g(), nr.group_p()),
- m_mod_q(nr.group_q())
- {
- }
-
- size_t message_parts() const override { return 2; }
- size_t message_part_size() const override { return m_q.bytes(); }
- size_t max_input_bits() const override { return (m_q.bits() - 1); }
-
- secure_vector<byte> raw_sign(const byte msg[], size_t msg_len,
- RandomNumberGenerator& rng) override;
- private:
- const BigInt& m_q;
- const BigInt& m_x;
- Fixed_Base_Power_Mod m_powermod_g_p;
- Modular_Reducer m_mod_q;
- };
-
-secure_vector<byte>
-NR_Signature_Operation::raw_sign(const byte msg[], size_t msg_len,
- RandomNumberGenerator& rng)
- {
- rng.add_entropy(msg, msg_len);
-
- BigInt f(msg, msg_len);
-
- if(f >= m_q)
- throw Invalid_Argument("NR_Signature_Operation: Input is out of range");
-
- BigInt c, d;
-
- while(c == 0)
- {
- BigInt k;
- do
- k.randomize(rng, m_q.bits());
- while(k >= m_q);
-
- c = m_mod_q.reduce(m_powermod_g_p(k) + f);
- d = m_mod_q.reduce(k - m_x * c);
- }
-
- secure_vector<byte> output(2*m_q.bytes());
- c.binary_encode(&output[output.size() / 2 - c.bytes()]);
- d.binary_encode(&output[output.size() - d.bytes()]);
- return output;
- }
-
-
-/**
-* Nyberg-Rueppel verification operation
-*/
-class NR_Verification_Operation : public PK_Ops::Verification_with_EMSA
- {
- public:
- typedef NR_PublicKey Key_Type;
- NR_Verification_Operation(const NR_PublicKey& nr, const std::string& emsa) :
- PK_Ops::Verification_with_EMSA(emsa),
- m_q(nr.group_q()), m_y(nr.get_y()), m_powermod_g_p{Fixed_Base_Power_Mod(nr.group_g(), nr.group_p())},
- m_powermod_y_p{Fixed_Base_Power_Mod(m_y, nr.group_p())}, m_mod_p{Modular_Reducer(nr.group_p())},
- m_mod_q{Modular_Reducer(nr.group_q())}
- {}
-
- size_t message_parts() const override { return 2; }
- size_t message_part_size() const override { return m_q.bytes(); }
- size_t max_input_bits() const override { return (m_q.bits() - 1); }
-
- bool with_recovery() const override { return true; }
-
- secure_vector<byte> verify_mr(const byte msg[], size_t msg_len) override;
- private:
- const BigInt& m_q;
- const BigInt& m_y;
-
- Fixed_Base_Power_Mod m_powermod_g_p, m_powermod_y_p;
- Modular_Reducer m_mod_p, m_mod_q;
- };
-
-secure_vector<byte>
-NR_Verification_Operation::verify_mr(const byte msg[], size_t msg_len)
- {
- const BigInt& q = m_mod_q.get_modulus();
-
- if(msg_len != 2*q.bytes())
- throw Invalid_Argument("NR verification: Invalid signature");
-
- BigInt c(msg, q.bytes());
- BigInt d(msg + q.bytes(), q.bytes());
-
- if(c.is_zero() || c >= q || d >= q)
- throw Invalid_Argument("NR verification: Invalid signature");
-
- auto future_y_c = std::async(std::launch::async, m_powermod_y_p, c);
- BigInt g_d = m_powermod_g_p(d);
-
- BigInt i = m_mod_p.multiply(g_d, future_y_c.get());
- return BigInt::encode_locked(m_mod_q.reduce(c - i));
- }
-}
-
-BOTAN_REGISTER_PK_SIGNATURE_OP("NR", NR_Signature_Operation);
-BOTAN_REGISTER_PK_VERIFY_OP("NR", NR_Verification_Operation);
-
-}
diff --git a/src/lib/pubkey/nr/nr.h b/src/lib/pubkey/nr/nr.h
deleted file mode 100644
index 425ad2642..000000000
--- a/src/lib/pubkey/nr/nr.h
+++ /dev/null
@@ -1,57 +0,0 @@
-/*
-* Nyberg-Rueppel
-* (C) 1999-2010 Jack Lloyd
-*
-* Botan is released under the Simplified BSD License (see license.txt)
-*/
-
-#ifndef BOTAN_NYBERG_RUEPPEL_H__
-#define BOTAN_NYBERG_RUEPPEL_H__
-
-#include <botan/dl_algo.h>
-
-namespace Botan {
-
-/**
-* Nyberg-Rueppel Public Key
-*/
-class BOTAN_DLL NR_PublicKey : public virtual DL_Scheme_PublicKey
- {
- public:
- std::string algo_name() const override { return "NR"; }
-
- DL_Group::Format group_format() const override { return DL_Group::ANSI_X9_57; }
-
- size_t message_parts() const override { return 2; }
- size_t message_part_size() const override { return group_q().bytes(); }
- size_t max_input_bits() const override { return (group_q().bits() - 1); }
-
- NR_PublicKey(const AlgorithmIdentifier& alg_id,
- const secure_vector<byte>& key_bits);
-
- NR_PublicKey(const DL_Group& group, const BigInt& pub_key);
- protected:
- NR_PublicKey() {}
- };
-
-/**
-* Nyberg-Rueppel Private Key
-*/
-class BOTAN_DLL NR_PrivateKey : public NR_PublicKey,
- public virtual DL_Scheme_PrivateKey
- {
- public:
- bool check_key(RandomNumberGenerator& rng, bool strong) const override;
-
- NR_PrivateKey(const AlgorithmIdentifier& alg_id,
- const secure_vector<byte>& key_bits,
- RandomNumberGenerator& rng);
-
- NR_PrivateKey(RandomNumberGenerator& rng,
- const DL_Group& group,
- const BigInt& x = 0);
- };
-
-}
-
-#endif
diff --git a/src/lib/pubkey/pk_algs.cpp b/src/lib/pubkey/pk_algs.cpp
index 9dbde28af..ac6f4a11f 100644
--- a/src/lib/pubkey/pk_algs.cpp
+++ b/src/lib/pubkey/pk_algs.cpp
@@ -36,14 +36,6 @@
#include <botan/gost_3410.h>
#endif
-#if defined(BOTAN_HAS_NYBERG_RUEPPEL)
- #include <botan/nr.h>
-#endif
-
-#if defined(BOTAN_HAS_RW)
- #include <botan/rw.h>
-#endif
-
#if defined(BOTAN_HAS_ELGAMAL)
#include <botan/elgamal.h>
#endif
@@ -74,11 +66,6 @@ Public_Key* make_public_key(const AlgorithmIdentifier& alg_id,
return new RSA_PublicKey(alg_id, key_bits);
#endif
-#if defined(BOTAN_HAS_RW)
- if(alg_name == "RW")
- return new RW_PublicKey(alg_id, key_bits);
-#endif
-
#if defined(BOTAN_HAS_DSA)
if(alg_name == "DSA")
return new DSA_PublicKey(alg_id, key_bits);
@@ -89,11 +76,6 @@ Public_Key* make_public_key(const AlgorithmIdentifier& alg_id,
return new DH_PublicKey(alg_id, key_bits);
#endif
-#if defined(BOTAN_HAS_NYBERG_RUEPPEL)
- if(alg_name == "NR")
- return new NR_PublicKey(alg_id, key_bits);
-#endif
-
#if defined(BOTAN_HAS_ELGAMAL)
if(alg_name == "ElGamal")
return new ElGamal_PublicKey(alg_id, key_bits);
@@ -150,11 +132,6 @@ Private_Key* make_private_key(const AlgorithmIdentifier& alg_id,
return new RSA_PrivateKey(alg_id, key_bits, rng);
#endif
-#if defined(BOTAN_HAS_RW)
- if(alg_name == "RW")
- return new RW_PrivateKey(alg_id, key_bits, rng);
-#endif
-
#if defined(BOTAN_HAS_DSA)
if(alg_name == "DSA")
return new DSA_PrivateKey(alg_id, key_bits, rng);
@@ -165,11 +142,6 @@ Private_Key* make_private_key(const AlgorithmIdentifier& alg_id,
return new DH_PrivateKey(alg_id, key_bits, rng);
#endif
-#if defined(BOTAN_HAS_NYBERG_RUEPPEL)
- if(alg_name == "NR")
- return new NR_PrivateKey(alg_id, key_bits, rng);
-#endif
-
#if defined(BOTAN_HAS_ELGAMAL)
if(alg_name == "ElGamal")
return new ElGamal_PrivateKey(alg_id, key_bits, rng);
diff --git a/src/lib/pubkey/rsa/info.txt b/src/lib/pubkey/rsa/info.txt
index 91eec565a..6df380696 100644
--- a/src/lib/pubkey/rsa/info.txt
+++ b/src/lib/pubkey/rsa/info.txt
@@ -1,7 +1,6 @@
-define RSA 20131128
+define RSA 20160730
<requires>
-if_algo
keypair
numbertheory
emsa_pssr
diff --git a/src/lib/pubkey/rsa/rsa.cpp b/src/lib/pubkey/rsa/rsa.cpp
index 6a645ec88..7f72ba210 100644
--- a/src/lib/pubkey/rsa/rsa.cpp
+++ b/src/lib/pubkey/rsa/rsa.cpp
@@ -1,6 +1,6 @@
/*
* RSA
-* (C) 1999-2010,2015 Jack Lloyd
+* (C) 1999-2010,2015,2016 Jack Lloyd
*
* Botan is released under the Simplified BSD License (see license.txt)
*/
@@ -11,10 +11,118 @@
#include <botan/keypair.h>
#include <botan/blinding.h>
#include <botan/reducer.h>
+#include <botan/workfactor.h>
+#include <botan/der_enc.h>
+#include <botan/ber_dec.h>
#include <future>
namespace Botan {
+size_t RSA_PublicKey::estimated_strength() const
+ {
+ return if_work_factor(m_n.bits());
+ }
+
+AlgorithmIdentifier RSA_PublicKey::algorithm_identifier() const
+ {
+ return AlgorithmIdentifier(get_oid(),
+ AlgorithmIdentifier::USE_NULL_PARAM);
+ }
+
+std::vector<byte> RSA_PublicKey::x509_subject_public_key() const
+ {
+ return DER_Encoder()
+ .start_cons(SEQUENCE)
+ .encode(m_n)
+ .encode(m_e)
+ .end_cons()
+ .get_contents_unlocked();
+ }
+
+RSA_PublicKey::RSA_PublicKey(const AlgorithmIdentifier&,
+ const secure_vector<byte>& key_bits)
+ {
+ BER_Decoder(key_bits)
+ .start_cons(SEQUENCE)
+ .decode(m_n)
+ .decode(m_e)
+ .verify_end()
+ .end_cons();
+ }
+
+/*
+* Check RSA Public Parameters
+*/
+bool RSA_PublicKey::check_key(RandomNumberGenerator&, bool) const
+ {
+ if(m_n < 35 || m_n.is_even() || m_e < 2)
+ return false;
+ return true;
+ }
+
+secure_vector<byte> RSA_PrivateKey::pkcs8_private_key() const
+ {
+ return DER_Encoder()
+ .start_cons(SEQUENCE)
+ .encode(static_cast<size_t>(0))
+ .encode(m_n)
+ .encode(m_e)
+ .encode(m_d)
+ .encode(m_p)
+ .encode(m_q)
+ .encode(m_d1)
+ .encode(m_d2)
+ .encode(m_c)
+ .end_cons()
+ .get_contents();
+ }
+
+RSA_PrivateKey::RSA_PrivateKey(const AlgorithmIdentifier&,
+ const secure_vector<byte>& key_bits,
+ RandomNumberGenerator& rng)
+ {
+ BER_Decoder(key_bits)
+ .start_cons(SEQUENCE)
+ .decode_and_check<size_t>(0, "Unknown PKCS #1 key format version")
+ .decode(m_n)
+ .decode(m_e)
+ .decode(m_d)
+ .decode(m_p)
+ .decode(m_q)
+ .decode(m_d1)
+ .decode(m_d2)
+ .decode(m_c)
+ .end_cons();
+
+ load_check(rng);
+ }
+
+RSA_PrivateKey::RSA_PrivateKey(RandomNumberGenerator& rng,
+ const BigInt& prime1,
+ const BigInt& prime2,
+ const BigInt& exp,
+ const BigInt& d_exp,
+ const BigInt& mod) :
+ m_d{ d_exp }, m_p{ prime1 }, m_q{ prime2 }, m_d1{}, m_d2{}, m_c{ inverse_mod( m_q, m_p ) }
+ {
+ m_n = mod.is_nonzero() ? mod : m_p * m_q;
+ m_e = exp;
+
+ if(m_d == 0)
+ {
+ BigInt inv_for_d = lcm(m_p - 1, m_q - 1);
+ if(m_e.is_even())
+ inv_for_d >>= 1;
+
+ m_d = inverse_mod(m_e, inv_for_d);
+ }
+
+ m_d1 = m_d % (m_p - 1);
+ m_d2 = m_d % (m_q - 1);
+
+ load_check(rng);
+ }
+
/*
* Create a RSA private key
*/
@@ -49,16 +157,26 @@ RSA_PrivateKey::RSA_PrivateKey(RandomNumberGenerator& rng,
*/
bool RSA_PrivateKey::check_key(RandomNumberGenerator& rng, bool strong) const
{
- if(!IF_Scheme_PrivateKey::check_key(rng, strong))
+ if(m_n < 35 || m_n.is_even() || m_e < 2 || m_d < 2 || m_p < 3 || m_q < 3 || m_p*m_q != m_n)
return false;
- if(!strong)
- return true;
+ if(m_d1 != m_d % (m_p - 1) || m_d2 != m_d % (m_q - 1) || m_c != inverse_mod(m_q, m_p))
+ return false;
+
+ const size_t prob = (strong) ? 56 : 12;
- if((m_e * m_d) % lcm(m_p - 1, m_q - 1) != 1)
+ if(!is_prime(m_p, rng, prob) || !is_prime(m_q, rng, prob))
return false;
- return KeyPair::signature_consistency_check(rng, *this, "EMSA4(SHA-256)");
+ if(strong)
+ {
+ if((m_e * m_d) % lcm(m_p - 1, m_q - 1) != 1)
+ return false;
+
+ return KeyPair::signature_consistency_check(rng, *this, "EMSA4(SHA-256)");
+ }
+
+ return true;
}
namespace {
diff --git a/src/lib/pubkey/rsa/rsa.h b/src/lib/pubkey/rsa/rsa.h
index 4a57b9f63..85bd7ce58 100644
--- a/src/lib/pubkey/rsa/rsa.h
+++ b/src/lib/pubkey/rsa/rsa.h
@@ -1,6 +1,6 @@
/*
* RSA
-* (C) 1999-2008 Jack Lloyd
+* (C) 1999-2008,2016 Jack Lloyd
*
* Botan is released under the Simplified BSD License (see license.txt)
*/
@@ -8,23 +8,19 @@
#ifndef BOTAN_RSA_H__
#define BOTAN_RSA_H__
-#include <botan/if_algo.h>
-
+#include <botan/bigint.h>
+#include <botan/x509_key.h>
namespace Botan {
/**
* RSA Public Key
*/
-class BOTAN_DLL RSA_PublicKey : public virtual IF_Scheme_PublicKey
+class BOTAN_DLL RSA_PublicKey : public virtual Public_Key
{
public:
- std::string algo_name() const override { return "RSA"; }
-
RSA_PublicKey(const AlgorithmIdentifier& alg_id,
- const secure_vector<byte>& key_bits) :
- IF_Scheme_PublicKey(alg_id, key_bits)
- {}
+ const secure_vector<byte>& key_bits);
/**
* Create a RSA_PublicKey
@@ -32,26 +28,45 @@ class BOTAN_DLL RSA_PublicKey : public virtual IF_Scheme_PublicKey
* @arg e the exponent
*/
RSA_PublicKey(const BigInt& n, const BigInt& e) :
- IF_Scheme_PublicKey(n, e)
- {}
+ m_n(n), m_e(e) {}
+
+ std::string algo_name() const override { return "RSA"; }
+
+ bool check_key(RandomNumberGenerator& rng, bool) const override;
+
+ AlgorithmIdentifier algorithm_identifier() const override;
+
+ std::vector<byte> x509_subject_public_key() const override;
+
+ /**
+ * @return public modulus
+ */
+ const BigInt& get_n() const { return m_n; }
+
+ /**
+ * @return public exponent
+ */
+ const BigInt& get_e() const { return m_e; }
+
+ size_t max_input_bits() const override { return (m_n.bits() - 1); }
+
+ size_t estimated_strength() const override;
protected:
RSA_PublicKey() {}
+
+ BigInt m_n, m_e;
};
/**
* RSA Private Key
*/
-class BOTAN_DLL RSA_PrivateKey : public RSA_PublicKey,
- public IF_Scheme_PrivateKey
+class BOTAN_DLL RSA_PrivateKey : public Private_Key, public RSA_PublicKey
{
public:
- bool check_key(RandomNumberGenerator& rng, bool) const override;
-
RSA_PrivateKey(const AlgorithmIdentifier& alg_id,
const secure_vector<byte>& key_bits,
- RandomNumberGenerator& rng) :
- IF_Scheme_PrivateKey(rng, alg_id, key_bits) {}
+ RandomNumberGenerator& rng);
/**
* Construct a private key from the specified parameters.
@@ -68,8 +83,7 @@ class BOTAN_DLL RSA_PrivateKey : public RSA_PublicKey,
RSA_PrivateKey(RandomNumberGenerator& rng,
const BigInt& p, const BigInt& q,
const BigInt& e, const BigInt& d = 0,
- const BigInt& n = 0) :
- IF_Scheme_PrivateKey(rng, p, q, e, d, n) {}
+ const BigInt& n = 0);
/**
* Create a new private key with the specified bit length
@@ -79,6 +93,34 @@ class BOTAN_DLL RSA_PrivateKey : public RSA_PublicKey,
*/
RSA_PrivateKey(RandomNumberGenerator& rng,
size_t bits, size_t exp = 65537);
+
+ bool check_key(RandomNumberGenerator& rng, bool) const override;
+
+ /**
+ * Get the first prime p.
+ * @return prime p
+ */
+ const BigInt& get_p() const { return m_p; }
+
+ /**
+ * Get the second prime q.
+ * @return prime q
+ */
+ const BigInt& get_q() const { return m_q; }
+
+ /**
+ * Get d with exp * d = 1 mod (p - 1, q - 1).
+ * @return d
+ */
+ const BigInt& get_d() const { return m_d; }
+
+ const BigInt& get_c() const { return m_c; }
+ const BigInt& get_d1() const { return m_d1; }
+ const BigInt& get_d2() const { return m_d2; }
+
+ secure_vector<byte> pkcs8_private_key() const override;
+ private:
+ BigInt m_d, m_p, m_q, m_d1, m_d2, m_c;
};
}
diff --git a/src/lib/pubkey/rw/info.txt b/src/lib/pubkey/rw/info.txt
deleted file mode 100644
index 7cf1d1780..000000000
--- a/src/lib/pubkey/rw/info.txt
+++ /dev/null
@@ -1,7 +0,0 @@
-define RW 20131128
-
-<requires>
-if_algo
-keypair
-numbertheory
-</requires>
diff --git a/src/lib/pubkey/rw/rw.cpp b/src/lib/pubkey/rw/rw.cpp
deleted file mode 100644
index bf6b647a1..000000000
--- a/src/lib/pubkey/rw/rw.cpp
+++ /dev/null
@@ -1,182 +0,0 @@
-/*
-* Rabin-Williams
-* (C) 1999-2008 Jack Lloyd
-*
-* Botan is released under the Simplified BSD License (see license.txt)
-*/
-
-#include <botan/internal/pk_utils.h>
-#include <botan/rw.h>
-#include <botan/keypair.h>
-#include <botan/parsing.h>
-#include <botan/reducer.h>
-#include <botan/blinding.h>
-#include <algorithm>
-#include <future>
-
-namespace Botan {
-
-/*
-* Create a Rabin-Williams private key
-*/
-RW_PrivateKey::RW_PrivateKey(RandomNumberGenerator& rng,
- size_t bits, size_t exp)
- {
- if(bits < 1024)
- throw Invalid_Argument(algo_name() + ": Can't make a key that is only " +
- std::to_string(bits) + " bits long");
- if(exp < 2 || exp % 2 == 1)
- throw Invalid_Argument(algo_name() + ": Invalid encryption exponent");
-
- m_e = exp;
-
- do
- {
- m_p = random_prime(rng, (bits + 1) / 2, m_e / 2, 3, 4);
- m_q = random_prime(rng, bits - m_p.bits(), m_e / 2, ((m_p % 8 == 3) ? 7 : 3), 8);
- m_n = m_p * m_q;
- } while(m_n.bits() != bits);
-
- m_d = inverse_mod(m_e, lcm(m_p - 1, m_q - 1) >> 1);
- m_d1 = m_d % (m_p - 1);
- m_d2 = m_d % (m_q - 1);
- m_c = inverse_mod(m_q, m_p);
-
- gen_check(rng);
- }
-
-/*
-* Check Private Rabin-Williams Parameters
-*/
-bool RW_PrivateKey::check_key(RandomNumberGenerator& rng, bool strong) const
- {
- if(!IF_Scheme_PrivateKey::check_key(rng, strong))
- return false;
-
- if(!strong)
- return true;
-
- if((m_e * m_d) % (lcm(m_p - 1, m_q - 1) / 2) != 1)
- return false;
-
- return KeyPair::signature_consistency_check(rng, *this, "EMSA2(SHA-1)");
- }
-
-namespace {
-
-/**
-* Rabin-Williams Signature Operation
-*/
-class RW_Signature_Operation : public PK_Ops::Signature_with_EMSA
- {
- public:
- typedef RW_PrivateKey Key_Type;
-
- RW_Signature_Operation(const RW_PrivateKey& rw,
- const std::string& emsa) :
- PK_Ops::Signature_with_EMSA(emsa),
- m_n(rw.get_n()),
- m_e(rw.get_e()),
- m_q(rw.get_q()),
- m_c(rw.get_c()),
- m_powermod_d1_p(rw.get_d1(), rw.get_p()),
- m_powermod_d2_q(rw.get_d2(), rw.get_q()),
- m_mod_p(rw.get_p()),
- m_blinder(m_n,
- [this](const BigInt& k) { return power_mod(k, m_e, m_n); },
- [this](const BigInt& k) { return inverse_mod(k, m_n); })
- {
- }
-
- size_t max_input_bits() const override { return (m_n.bits() - 1); }
-
- secure_vector<byte> raw_sign(const byte msg[], size_t msg_len,
- RandomNumberGenerator& rng) override;
- private:
- const BigInt& m_n;
- const BigInt& m_e;
- const BigInt& m_q;
- const BigInt& m_c;
-
- Fixed_Exponent_Power_Mod m_powermod_d1_p, m_powermod_d2_q;
- Modular_Reducer m_mod_p;
- Blinder m_blinder;
- };
-
-secure_vector<byte>
-RW_Signature_Operation::raw_sign(const byte msg[], size_t msg_len,
- RandomNumberGenerator&)
- {
- BigInt i(msg, msg_len);
-
- if(i >= m_n || i % 16 != 12)
- throw Invalid_Argument("Rabin-Williams: invalid input");
-
- if(jacobi(i, m_n) != 1)
- i >>= 1;
-
- i = m_blinder.blind(i);
-
- auto future_j1 = std::async(std::launch::async, m_powermod_d1_p, i);
- const BigInt j2 = m_powermod_d2_q(i);
- BigInt j1 = future_j1.get();
-
- j1 = m_mod_p.reduce(sub_mul(j1, j2, m_c));
-
- const BigInt r = m_blinder.unblind(mul_add(j1, m_q, j2));
-
- return BigInt::encode_1363(std::min(r, m_n - r), m_n.bytes());
- }
-
-/**
-* Rabin-Williams Verification Operation
-*/
-class RW_Verification_Operation : public PK_Ops::Verification_with_EMSA
- {
- public:
- typedef RW_PublicKey Key_Type;
-
- RW_Verification_Operation(const RW_PublicKey& rw, const std::string& emsa) :
- PK_Ops::Verification_with_EMSA(emsa),
- m_n(rw.get_n()), m_powermod_e_n(rw.get_e(), rw.get_n())
- {}
-
- size_t max_input_bits() const override { return (m_n.bits() - 1); }
- bool with_recovery() const override { return true; }
-
- secure_vector<byte> verify_mr(const byte msg[], size_t msg_len) override;
-
- private:
- const BigInt& m_n;
- Fixed_Exponent_Power_Mod m_powermod_e_n;
- };
-
-secure_vector<byte>
-RW_Verification_Operation::verify_mr(const byte msg[], size_t msg_len)
- {
- BigInt m(msg, msg_len);
-
- if((m > (m_n >> 1)) || m.is_negative())
- throw Invalid_Argument("RW signature verification: m > n / 2 || m < 0");
-
- BigInt r = m_powermod_e_n(m);
- if(r % 16 == 12)
- return BigInt::encode_locked(r);
- if(r % 8 == 6)
- return BigInt::encode_locked(2*r);
-
- r = m_n - r;
- if(r % 16 == 12)
- return BigInt::encode_locked(r);
- if(r % 8 == 6)
- return BigInt::encode_locked(2*r);
-
- throw Invalid_Argument("RW signature verification: Invalid signature");
- }
-
-BOTAN_REGISTER_PK_SIGNATURE_OP("RW", RW_Signature_Operation);
-BOTAN_REGISTER_PK_VERIFY_OP("RW", RW_Verification_Operation);
-
-}
-
-}
diff --git a/src/lib/pubkey/rw/rw.h b/src/lib/pubkey/rw/rw.h
deleted file mode 100644
index 2a010441e..000000000
--- a/src/lib/pubkey/rw/rw.h
+++ /dev/null
@@ -1,61 +0,0 @@
-/*
-* Rabin-Williams
-* (C) 1999-2007 Jack Lloyd
-*
-* Botan is released under the Simplified BSD License (see license.txt)
-*/
-
-#ifndef BOTAN_RW_H__
-#define BOTAN_RW_H__
-
-#include <botan/if_algo.h>
-
-namespace Botan {
-
-/**
-* Rabin-Williams Public Key
-*/
-class BOTAN_DLL RW_PublicKey : public virtual IF_Scheme_PublicKey
- {
- public:
- std::string algo_name() const override { return "RW"; }
-
- RW_PublicKey(const AlgorithmIdentifier& alg_id,
- const secure_vector<byte>& key_bits) :
- IF_Scheme_PublicKey(alg_id, key_bits)
- {}
-
- RW_PublicKey(const BigInt& mod, const BigInt& exponent) :
- IF_Scheme_PublicKey(mod, exponent)
- {}
-
- protected:
- RW_PublicKey() {}
- };
-
-/**
-* Rabin-Williams Private Key
-*/
-class BOTAN_DLL RW_PrivateKey : public RW_PublicKey,
- public IF_Scheme_PrivateKey
- {
- public:
- RW_PrivateKey(const AlgorithmIdentifier& alg_id,
- const secure_vector<byte>& key_bits,
- RandomNumberGenerator& rng) :
- IF_Scheme_PrivateKey(rng, alg_id, key_bits) {}
-
- RW_PrivateKey(RandomNumberGenerator& rng,
- const BigInt& p, const BigInt& q,
- const BigInt& e, const BigInt& d = 0,
- const BigInt& n = 0) :
- IF_Scheme_PrivateKey(rng, p, q, e, d, n) {}
-
- RW_PrivateKey(RandomNumberGenerator& rng, size_t bits, size_t = 2);
-
- bool check_key(RandomNumberGenerator& rng, bool) const override;
- };
-
-}
-
-#endif
diff --git a/src/lib/stream/chacha/chacha.cpp b/src/lib/stream/chacha/chacha.cpp
index 40da93029..c74f60f2d 100644
--- a/src/lib/stream/chacha/chacha.cpp
+++ b/src/lib/stream/chacha/chacha.cpp
@@ -7,6 +7,7 @@
#include <botan/chacha.h>
#include <botan/loadstor.h>
+#include <botan/cpuid.h>
namespace Botan {
@@ -16,58 +17,99 @@ ChaCha::ChaCha(size_t rounds) : m_rounds(rounds)
throw Invalid_Argument("ChaCha only supports 8, 12 or 20 rounds");
}
-namespace {
-
-void chacha(byte output[64], const u32bit input[16], size_t rounds)
+std::string ChaCha::provider() const
{
- BOTAN_ASSERT(rounds % 2 == 0, "Valid rounds");
+#if defined(BOTAN_HAS_CHACHA_SSE2)
+ if(CPUID::has_sse2())
+ {
+ return "sse2";
+ }
+#endif
- u32bit x00 = input[ 0], x01 = input[ 1], x02 = input[ 2], x03 = input[ 3],
- x04 = input[ 4], x05 = input[ 5], x06 = input[ 6], x07 = input[ 7],
- x08 = input[ 8], x09 = input[ 9], x10 = input[10], x11 = input[11],
- x12 = input[12], x13 = input[13], x14 = input[14], x15 = input[15];
+ return "base";
+ }
-#define CHACHA_QUARTER_ROUND(a, b, c, d) \
- do { \
- a += b; d ^= a; d = rotate_left(d, 16); \
- c += d; b ^= c; b = rotate_left(b, 12); \
- a += b; d ^= a; d = rotate_left(d, 8); \
- c += d; b ^= c; b = rotate_left(b, 7); \
- } while(0)
+//static
+void ChaCha::chacha_x4(byte output[64*4], u32bit input[16], size_t rounds)
+ {
+ BOTAN_ASSERT(rounds % 2 == 0, "Valid rounds");
- for(size_t i = 0; i != rounds / 2; ++i)
+#if defined(BOTAN_HAS_CHACHA_SSE2)
+ if(CPUID::has_sse2())
{
- CHACHA_QUARTER_ROUND(x00, x04, x08, x12);
- CHACHA_QUARTER_ROUND(x01, x05, x09, x13);
- CHACHA_QUARTER_ROUND(x02, x06, x10, x14);
- CHACHA_QUARTER_ROUND(x03, x07, x11, x15);
-
- CHACHA_QUARTER_ROUND(x00, x05, x10, x15);
- CHACHA_QUARTER_ROUND(x01, x06, x11, x12);
- CHACHA_QUARTER_ROUND(x02, x07, x08, x13);
- CHACHA_QUARTER_ROUND(x03, x04, x09, x14);
+ return ChaCha::chacha_sse2_x4(output, input, rounds);
}
+#endif
+
+ // TODO interleave rounds
+ for(size_t i = 0; i != 4; ++i)
+ {
+ u32bit x00 = input[ 0], x01 = input[ 1], x02 = input[ 2], x03 = input[ 3],
+ x04 = input[ 4], x05 = input[ 5], x06 = input[ 6], x07 = input[ 7],
+ x08 = input[ 8], x09 = input[ 9], x10 = input[10], x11 = input[11],
+ x12 = input[12], x13 = input[13], x14 = input[14], x15 = input[15];
+
+#define CHACHA_QUARTER_ROUND(a, b, c, d) \
+ do { \
+ a += b; d ^= a; d = rotate_left(d, 16); \
+ c += d; b ^= c; b = rotate_left(b, 12); \
+ a += b; d ^= a; d = rotate_left(d, 8); \
+ c += d; b ^= c; b = rotate_left(b, 7); \
+ } while(0)
+
+ for(size_t r = 0; r != rounds / 2; ++r)
+ {
+ CHACHA_QUARTER_ROUND(x00, x04, x08, x12);
+ CHACHA_QUARTER_ROUND(x01, x05, x09, x13);
+ CHACHA_QUARTER_ROUND(x02, x06, x10, x14);
+ CHACHA_QUARTER_ROUND(x03, x07, x11, x15);
+
+ CHACHA_QUARTER_ROUND(x00, x05, x10, x15);
+ CHACHA_QUARTER_ROUND(x01, x06, x11, x12);
+ CHACHA_QUARTER_ROUND(x02, x07, x08, x13);
+ CHACHA_QUARTER_ROUND(x03, x04, x09, x14);
+ }
#undef CHACHA_QUARTER_ROUND
- store_le(x00 + input[ 0], output + 4 * 0);
- store_le(x01 + input[ 1], output + 4 * 1);
- store_le(x02 + input[ 2], output + 4 * 2);
- store_le(x03 + input[ 3], output + 4 * 3);
- store_le(x04 + input[ 4], output + 4 * 4);
- store_le(x05 + input[ 5], output + 4 * 5);
- store_le(x06 + input[ 6], output + 4 * 6);
- store_le(x07 + input[ 7], output + 4 * 7);
- store_le(x08 + input[ 8], output + 4 * 8);
- store_le(x09 + input[ 9], output + 4 * 9);
- store_le(x10 + input[10], output + 4 * 10);
- store_le(x11 + input[11], output + 4 * 11);
- store_le(x12 + input[12], output + 4 * 12);
- store_le(x13 + input[13], output + 4 * 13);
- store_le(x14 + input[14], output + 4 * 14);
- store_le(x15 + input[15], output + 4 * 15);
+ x00 += input[0];
+ x01 += input[1];
+ x02 += input[2];
+ x03 += input[3];
+ x04 += input[4];
+ x05 += input[5];
+ x06 += input[6];
+ x07 += input[7];
+ x08 += input[8];
+ x09 += input[9];
+ x10 += input[10];
+ x11 += input[11];
+ x12 += input[12];
+ x13 += input[13];
+ x14 += input[14];
+ x15 += input[15];
+
+ store_le(x00, output + 64 * i + 4 * 0);
+ store_le(x01, output + 64 * i + 4 * 1);
+ store_le(x02, output + 64 * i + 4 * 2);
+ store_le(x03, output + 64 * i + 4 * 3);
+ store_le(x04, output + 64 * i + 4 * 4);
+ store_le(x05, output + 64 * i + 4 * 5);
+ store_le(x06, output + 64 * i + 4 * 6);
+ store_le(x07, output + 64 * i + 4 * 7);
+ store_le(x08, output + 64 * i + 4 * 8);
+ store_le(x09, output + 64 * i + 4 * 9);
+ store_le(x10, output + 64 * i + 4 * 10);
+ store_le(x11, output + 64 * i + 4 * 11);
+ store_le(x12, output + 64 * i + 4 * 12);
+ store_le(x13, output + 64 * i + 4 * 13);
+ store_le(x14, output + 64 * i + 4 * 14);
+ store_le(x15, output + 64 * i + 4 * 15);
+
+ input[12]++;
+ input[13] += input[12] < i; // carry?
+ }
}
-}
/*
* Combine cipher stream with message
@@ -80,11 +122,7 @@ void ChaCha::cipher(const byte in[], byte out[], size_t length)
length -= (m_buffer.size() - m_position);
in += (m_buffer.size() - m_position);
out += (m_buffer.size() - m_position);
- chacha(m_buffer.data(), m_state.data(), m_rounds);
-
- ++m_state[12];
- m_state[13] += (m_state[12] == 0);
-
+ chacha_x4(m_buffer.data(), m_state.data(), m_rounds);
m_position = 0;
}
@@ -106,8 +144,12 @@ void ChaCha::key_schedule(const byte key[], size_t length)
const u32bit* CONSTANTS = (length == 16) ? TAU : SIGMA;
+ // Repeat the key if 128 bits
+ const byte* key2 = (length == 32) ? key + 16 : key;
+
+ m_position = 0;
m_state.resize(16);
- m_buffer.resize(64);
+ m_buffer.resize(4*64);
m_state[0] = CONSTANTS[0];
m_state[1] = CONSTANTS[1];
@@ -119,16 +161,12 @@ void ChaCha::key_schedule(const byte key[], size_t length)
m_state[6] = load_le<u32bit>(key, 2);
m_state[7] = load_le<u32bit>(key, 3);
- if(length == 32)
- key += 16;
-
- m_state[8] = load_le<u32bit>(key, 0);
- m_state[9] = load_le<u32bit>(key, 1);
- m_state[10] = load_le<u32bit>(key, 2);
- m_state[11] = load_le<u32bit>(key, 3);
-
- m_position = 0;
+ m_state[8] = load_le<u32bit>(key2, 0);
+ m_state[9] = load_le<u32bit>(key2, 1);
+ m_state[10] = load_le<u32bit>(key2, 2);
+ m_state[11] = load_le<u32bit>(key2, 3);
+ // Default all-zero IV
const byte ZERO[8] = { 0 };
set_iv(ZERO, sizeof(ZERO));
}
@@ -153,10 +191,7 @@ void ChaCha::set_iv(const byte iv[], size_t length)
m_state[15] = load_le<u32bit>(iv, 2);
}
- chacha(m_buffer.data(), m_state.data(), m_rounds);
- ++m_state[12];
- m_state[13] += (m_state[12] == 0);
-
+ chacha_x4(m_buffer.data(), m_state.data(), m_rounds);
m_position = 0;
}
@@ -176,12 +211,11 @@ void ChaCha::seek(u64bit offset)
{
if (m_state.size() == 0 && m_buffer.size() == 0)
{
- throw Invalid_State("You have to setup the stream cipher (key and iv)");
+ throw Invalid_State("You have to setup the stream cipher (key and iv)");
}
- m_position = offset % m_buffer.size();
-
- u64bit counter = offset / m_buffer.size();
+ // Find the block offset
+ u64bit counter = offset / 64;
byte out[8];
@@ -190,9 +224,7 @@ void ChaCha::seek(u64bit offset)
m_state[12] = load_le<u32bit>(out, 0);
m_state[13] += load_le<u32bit>(out, 1);
- chacha(m_buffer.data(), m_state.data(), m_rounds);
-
- ++m_state[12];
- m_state[13] += (m_state[12] == 0);
+ chacha_x4(m_buffer.data(), m_state.data(), m_rounds);
+ m_position = offset % 64;
}
}
diff --git a/src/lib/stream/chacha/chacha.h b/src/lib/stream/chacha/chacha.h
index f8f42e41d..eafeac2fd 100644
--- a/src/lib/stream/chacha/chacha.h
+++ b/src/lib/stream/chacha/chacha.h
@@ -24,7 +24,9 @@ class BOTAN_DLL ChaCha final : public StreamCipher
* Currently only 8, 12 or 20 rounds are supported, all others
* will throw an exception
*/
- ChaCha(size_t rounds);
+ ChaCha(size_t rounds = 20);
+
+ std::string provider() const override;
void cipher(const byte in[], byte out[], size_t length) override;
@@ -47,6 +49,12 @@ class BOTAN_DLL ChaCha final : public StreamCipher
private:
void key_schedule(const byte key[], size_t key_len) override;
+ void chacha_x4(byte output[64*4], u32bit state[16], size_t rounds);
+
+#if defined(BOTAN_HAS_CHACHA_SSE2)
+ void chacha_sse2_x4(byte output[64*4], u32bit state[16], size_t rounds);
+#endif
+
size_t m_rounds;
secure_vector<u32bit> m_state;
secure_vector<byte> m_buffer;
diff --git a/src/lib/stream/chacha/chacha_sse2/chacha_sse2.cpp b/src/lib/stream/chacha/chacha_sse2/chacha_sse2.cpp
new file mode 100644
index 000000000..e39b285b3
--- /dev/null
+++ b/src/lib/stream/chacha/chacha_sse2/chacha_sse2.cpp
@@ -0,0 +1,259 @@
+/*
+* SSE2 ChaCha
+* (C) 2016 Jack Lloyd
+*
+* Botan is released under the Simplified BSD License (see license.txt)
+*/
+
+#include <botan/chacha.h>
+#include <emmintrin.h>
+
+namespace Botan {
+
+//static
+void ChaCha::chacha_sse2_x4(byte output[64], u32bit input[16], size_t rounds)
+ {
+ BOTAN_ASSERT(rounds % 2 == 0, "Valid rounds");
+
+ const __m128i* input_mm = reinterpret_cast<const __m128i*>(input);
+ __m128i* output_mm = reinterpret_cast<__m128i*>(output);
+
+ __m128i input0 = _mm_loadu_si128(input_mm);
+ __m128i input1 = _mm_loadu_si128(input_mm + 1);
+ __m128i input2 = _mm_loadu_si128(input_mm + 2);
+ __m128i input3 = _mm_loadu_si128(input_mm + 3);
+
+ // TODO: try transposing, which would avoid the permutations each round
+
+#define mm_rotl(r, n) \
+ _mm_or_si128(_mm_slli_epi32(r, n), _mm_srli_epi32(r, 32-n))
+
+ __m128i r0_0 = input0;
+ __m128i r0_1 = input1;
+ __m128i r0_2 = input2;
+ __m128i r0_3 = input3;
+
+ __m128i r1_0 = input0;
+ __m128i r1_1 = input1;
+ __m128i r1_2 = input2;
+ __m128i r1_3 = input3;
+ r1_3 = _mm_add_epi64(r0_3, _mm_set_epi32(0, 0, 0, 1));
+
+ __m128i r2_0 = input0;
+ __m128i r2_1 = input1;
+ __m128i r2_2 = input2;
+ __m128i r2_3 = input3;
+ r2_3 = _mm_add_epi64(r0_3, _mm_set_epi32(0, 0, 0, 2));
+
+ __m128i r3_0 = input0;
+ __m128i r3_1 = input1;
+ __m128i r3_2 = input2;
+ __m128i r3_3 = input3;
+ r3_3 = _mm_add_epi64(r0_3, _mm_set_epi32(0, 0, 0, 3));
+
+ for(size_t r = 0; r != rounds / 2; ++r)
+ {
+ r0_0 = _mm_add_epi32(r0_0, r0_1);
+ r1_0 = _mm_add_epi32(r1_0, r1_1);
+ r2_0 = _mm_add_epi32(r2_0, r2_1);
+ r3_0 = _mm_add_epi32(r3_0, r3_1);
+
+ r0_3 = _mm_xor_si128(r0_3, r0_0);
+ r1_3 = _mm_xor_si128(r1_3, r1_0);
+ r2_3 = _mm_xor_si128(r2_3, r2_0);
+ r3_3 = _mm_xor_si128(r3_3, r3_0);
+
+ r0_3 = mm_rotl(r0_3, 16);
+ r1_3 = mm_rotl(r1_3, 16);
+ r2_3 = mm_rotl(r2_3, 16);
+ r3_3 = mm_rotl(r3_3, 16);
+
+ r0_2 = _mm_add_epi32(r0_2, r0_3);
+ r1_2 = _mm_add_epi32(r1_2, r1_3);
+ r2_2 = _mm_add_epi32(r2_2, r2_3);
+ r3_2 = _mm_add_epi32(r3_2, r3_3);
+
+ r0_1 = _mm_xor_si128(r0_1, r0_2);
+ r1_1 = _mm_xor_si128(r1_1, r1_2);
+ r2_1 = _mm_xor_si128(r2_1, r2_2);
+ r3_1 = _mm_xor_si128(r3_1, r3_2);
+
+ r0_1 = mm_rotl(r0_1, 12);
+ r1_1 = mm_rotl(r1_1, 12);
+ r2_1 = mm_rotl(r2_1, 12);
+ r3_1 = mm_rotl(r3_1, 12);
+
+ r0_0 = _mm_add_epi32(r0_0, r0_1);
+ r1_0 = _mm_add_epi32(r1_0, r1_1);
+ r2_0 = _mm_add_epi32(r2_0, r2_1);
+ r3_0 = _mm_add_epi32(r3_0, r3_1);
+
+ r0_3 = _mm_xor_si128(r0_3, r0_0);
+ r1_3 = _mm_xor_si128(r1_3, r1_0);
+ r2_3 = _mm_xor_si128(r2_3, r2_0);
+ r3_3 = _mm_xor_si128(r3_3, r3_0);
+
+ r0_3 = mm_rotl(r0_3, 8);
+ r1_3 = mm_rotl(r1_3, 8);
+ r2_3 = mm_rotl(r2_3, 8);
+ r3_3 = mm_rotl(r3_3, 8);
+
+ r0_2 = _mm_add_epi32(r0_2, r0_3);
+ r1_2 = _mm_add_epi32(r1_2, r1_3);
+ r2_2 = _mm_add_epi32(r2_2, r2_3);
+ r3_2 = _mm_add_epi32(r3_2, r3_3);
+
+ r0_1 = _mm_xor_si128(r0_1, r0_2);
+ r1_1 = _mm_xor_si128(r1_1, r1_2);
+ r2_1 = _mm_xor_si128(r2_1, r2_2);
+ r3_1 = _mm_xor_si128(r3_1, r3_2);
+
+ r0_1 = mm_rotl(r0_1, 7);
+ r1_1 = mm_rotl(r1_1, 7);
+ r2_1 = mm_rotl(r2_1, 7);
+ r3_1 = mm_rotl(r3_1, 7);
+
+ r0_1 = _mm_shuffle_epi32(r0_1, _MM_SHUFFLE(0, 3, 2, 1));
+ r0_2 = _mm_shuffle_epi32(r0_2, _MM_SHUFFLE(1, 0, 3, 2));
+ r0_3 = _mm_shuffle_epi32(r0_3, _MM_SHUFFLE(2, 1, 0, 3));
+
+ r1_1 = _mm_shuffle_epi32(r1_1, _MM_SHUFFLE(0, 3, 2, 1));
+ r1_2 = _mm_shuffle_epi32(r1_2, _MM_SHUFFLE(1, 0, 3, 2));
+ r1_3 = _mm_shuffle_epi32(r1_3, _MM_SHUFFLE(2, 1, 0, 3));
+
+ r2_1 = _mm_shuffle_epi32(r2_1, _MM_SHUFFLE(0, 3, 2, 1));
+ r2_2 = _mm_shuffle_epi32(r2_2, _MM_SHUFFLE(1, 0, 3, 2));
+ r2_3 = _mm_shuffle_epi32(r2_3, _MM_SHUFFLE(2, 1, 0, 3));
+
+ r3_1 = _mm_shuffle_epi32(r3_1, _MM_SHUFFLE(0, 3, 2, 1));
+ r3_2 = _mm_shuffle_epi32(r3_2, _MM_SHUFFLE(1, 0, 3, 2));
+ r3_3 = _mm_shuffle_epi32(r3_3, _MM_SHUFFLE(2, 1, 0, 3));
+
+ r0_0 = _mm_add_epi32(r0_0, r0_1);
+ r1_0 = _mm_add_epi32(r1_0, r1_1);
+ r2_0 = _mm_add_epi32(r2_0, r2_1);
+ r3_0 = _mm_add_epi32(r3_0, r3_1);
+
+ r0_3 = _mm_xor_si128(r0_3, r0_0);
+ r1_3 = _mm_xor_si128(r1_3, r1_0);
+ r2_3 = _mm_xor_si128(r2_3, r2_0);
+ r3_3 = _mm_xor_si128(r3_3, r3_0);
+
+ r0_3 = mm_rotl(r0_3, 16);
+ r1_3 = mm_rotl(r1_3, 16);
+ r2_3 = mm_rotl(r2_3, 16);
+ r3_3 = mm_rotl(r3_3, 16);
+
+ r0_2 = _mm_add_epi32(r0_2, r0_3);
+ r1_2 = _mm_add_epi32(r1_2, r1_3);
+ r2_2 = _mm_add_epi32(r2_2, r2_3);
+ r3_2 = _mm_add_epi32(r3_2, r3_3);
+
+ r0_1 = _mm_xor_si128(r0_1, r0_2);
+ r1_1 = _mm_xor_si128(r1_1, r1_2);
+ r2_1 = _mm_xor_si128(r2_1, r2_2);
+ r3_1 = _mm_xor_si128(r3_1, r3_2);
+
+ r0_1 = mm_rotl(r0_1, 12);
+ r1_1 = mm_rotl(r1_1, 12);
+ r2_1 = mm_rotl(r2_1, 12);
+ r3_1 = mm_rotl(r3_1, 12);
+
+ r0_0 = _mm_add_epi32(r0_0, r0_1);
+ r1_0 = _mm_add_epi32(r1_0, r1_1);
+ r2_0 = _mm_add_epi32(r2_0, r2_1);
+ r3_0 = _mm_add_epi32(r3_0, r3_1);
+
+ r0_3 = _mm_xor_si128(r0_3, r0_0);
+ r1_3 = _mm_xor_si128(r1_3, r1_0);
+ r2_3 = _mm_xor_si128(r2_3, r2_0);
+ r3_3 = _mm_xor_si128(r3_3, r3_0);
+
+ r0_3 = mm_rotl(r0_3, 8);
+ r1_3 = mm_rotl(r1_3, 8);
+ r2_3 = mm_rotl(r2_3, 8);
+ r3_3 = mm_rotl(r3_3, 8);
+
+ r0_2 = _mm_add_epi32(r0_2, r0_3);
+ r1_2 = _mm_add_epi32(r1_2, r1_3);
+ r2_2 = _mm_add_epi32(r2_2, r2_3);
+ r3_2 = _mm_add_epi32(r3_2, r3_3);
+
+ r0_1 = _mm_xor_si128(r0_1, r0_2);
+ r1_1 = _mm_xor_si128(r1_1, r1_2);
+ r2_1 = _mm_xor_si128(r2_1, r2_2);
+ r3_1 = _mm_xor_si128(r3_1, r3_2);
+
+ r0_1 = mm_rotl(r0_1, 7);
+ r1_1 = mm_rotl(r1_1, 7);
+ r2_1 = mm_rotl(r2_1, 7);
+ r3_1 = mm_rotl(r3_1, 7);
+
+ r0_1 = _mm_shuffle_epi32(r0_1, _MM_SHUFFLE(2, 1, 0, 3));
+ r0_2 = _mm_shuffle_epi32(r0_2, _MM_SHUFFLE(1, 0, 3, 2));
+ r0_3 = _mm_shuffle_epi32(r0_3, _MM_SHUFFLE(0, 3, 2, 1));
+
+ r1_1 = _mm_shuffle_epi32(r1_1, _MM_SHUFFLE(2, 1, 0, 3));
+ r1_2 = _mm_shuffle_epi32(r1_2, _MM_SHUFFLE(1, 0, 3, 2));
+ r1_3 = _mm_shuffle_epi32(r1_3, _MM_SHUFFLE(0, 3, 2, 1));
+
+ r2_1 = _mm_shuffle_epi32(r2_1, _MM_SHUFFLE(2, 1, 0, 3));
+ r2_2 = _mm_shuffle_epi32(r2_2, _MM_SHUFFLE(1, 0, 3, 2));
+ r2_3 = _mm_shuffle_epi32(r2_3, _MM_SHUFFLE(0, 3, 2, 1));
+
+ r3_1 = _mm_shuffle_epi32(r3_1, _MM_SHUFFLE(2, 1, 0, 3));
+ r3_2 = _mm_shuffle_epi32(r3_2, _MM_SHUFFLE(1, 0, 3, 2));
+ r3_3 = _mm_shuffle_epi32(r3_3, _MM_SHUFFLE(0, 3, 2, 1));
+ }
+
+ r0_0 = _mm_add_epi32(r0_0, input0);
+ r0_1 = _mm_add_epi32(r0_1, input1);
+ r0_2 = _mm_add_epi32(r0_2, input2);
+ r0_3 = _mm_add_epi32(r0_3, input3);
+
+ r1_0 = _mm_add_epi32(r1_0, input0);
+ r1_1 = _mm_add_epi32(r1_1, input1);
+ r1_2 = _mm_add_epi32(r1_2, input2);
+ r1_3 = _mm_add_epi32(r1_3, input3);
+ r1_3 = _mm_add_epi64(r1_3, _mm_set_epi32(0, 0, 0, 1));
+
+ r2_0 = _mm_add_epi32(r2_0, input0);
+ r2_1 = _mm_add_epi32(r2_1, input1);
+ r2_2 = _mm_add_epi32(r2_2, input2);
+ r2_3 = _mm_add_epi32(r2_3, input3);
+ r2_3 = _mm_add_epi64(r2_3, _mm_set_epi32(0, 0, 0, 2));
+
+ r3_0 = _mm_add_epi32(r3_0, input0);
+ r3_1 = _mm_add_epi32(r3_1, input1);
+ r3_2 = _mm_add_epi32(r3_2, input2);
+ r3_3 = _mm_add_epi32(r3_3, input3);
+ r3_3 = _mm_add_epi64(r3_3, _mm_set_epi32(0, 0, 0, 3));
+
+ _mm_storeu_si128(output_mm + 0, r0_0);
+ _mm_storeu_si128(output_mm + 1, r0_1);
+ _mm_storeu_si128(output_mm + 2, r0_2);
+ _mm_storeu_si128(output_mm + 3, r0_3);
+
+ _mm_storeu_si128(output_mm + 4, r1_0);
+ _mm_storeu_si128(output_mm + 5, r1_1);
+ _mm_storeu_si128(output_mm + 6, r1_2);
+ _mm_storeu_si128(output_mm + 7, r1_3);
+
+ _mm_storeu_si128(output_mm + 8, r2_0);
+ _mm_storeu_si128(output_mm + 9, r2_1);
+ _mm_storeu_si128(output_mm + 10, r2_2);
+ _mm_storeu_si128(output_mm + 11, r2_3);
+
+ _mm_storeu_si128(output_mm + 12, r3_0);
+ _mm_storeu_si128(output_mm + 13, r3_1);
+ _mm_storeu_si128(output_mm + 14, r3_2);
+ _mm_storeu_si128(output_mm + 15, r3_3);
+
+#undef mm_rotl
+
+ input[12] += 4;
+ if(input[12] < 4)
+ input[13]++;
+ }
+
+}
diff --git a/src/lib/stream/chacha/chacha_sse2/info.txt b/src/lib/stream/chacha/chacha_sse2/info.txt
new file mode 100644
index 000000000..965479746
--- /dev/null
+++ b/src/lib/stream/chacha/chacha_sse2/info.txt
@@ -0,0 +1,3 @@
+define CHACHA_SSE2 20160831
+
+need_isa sse2
diff --git a/src/lib/stream/stream_cipher.h b/src/lib/stream/stream_cipher.h
index e08bee0ce..b24a99e39 100644
--- a/src/lib/stream/stream_cipher.h
+++ b/src/lib/stream/stream_cipher.h
@@ -86,6 +86,12 @@ class BOTAN_DLL StreamCipher : public SymmetricAlgorithm
*/
virtual void seek(u64bit offset) = 0;
+ /**
+ * @return provider information about this implementation. Default is "base",
+ * might also return "sse2", "avx2", "openssl", or some other arbitrary string.
+ */
+ virtual std::string provider() const { return "base"; }
+
StreamCipher();
virtual ~StreamCipher();
};
diff --git a/src/lib/tls/msg_client_hello.cpp b/src/lib/tls/msg_client_hello.cpp
index 69f9a5e11..56e226a40 100644
--- a/src/lib/tls/msg_client_hello.cpp
+++ b/src/lib/tls/msg_client_hello.cpp
@@ -80,25 +80,27 @@ Client_Hello::Client_Hello(Handshake_IO& io,
client_settings.srp_identifier() != "")),
m_comp_methods(policy.compression())
{
+ BOTAN_ASSERT(policy.acceptable_protocol_version(client_settings.protocol_version()),
+ "Our policy accepts the version we are offering");
+
+ /*
+ * Place all empty extensions in front to avoid a bug in some sytems
+ * which reject hellos when the last extension in the list is empty.
+ */
m_extensions.add(new Extended_Master_Secret);
+ m_extensions.add(new Session_Ticket());
+ if(policy.negotiate_encrypt_then_mac())
+ m_extensions.add(new Encrypt_then_MAC);
+
m_extensions.add(new Renegotiation_Extension(reneg_info));
m_extensions.add(new Server_Name_Indicator(client_settings.hostname()));
- m_extensions.add(new Session_Ticket());
- m_extensions.add(new Supported_Elliptic_Curves(policy.allowed_ecc_curves()));
- if(m_version.supports_negotiable_signature_algorithms())
- m_extensions.add(new Signature_Algorithms(policy.allowed_signature_hashes(),
- policy.allowed_signature_methods()));
+ if(reneg_info.empty() && !next_protocols.empty())
+ m_extensions.add(new Application_Layer_Protocol_Notification(next_protocols));
if(m_version.is_datagram_protocol())
m_extensions.add(new SRTP_Protection_Profiles(policy.srtp_profiles()));
- if(reneg_info.empty() && !next_protocols.empty())
- m_extensions.add(new Application_Layer_Protocol_Notification(next_protocols));
-
- if(policy.negotiate_encrypt_then_mac())
- m_extensions.add(new Encrypt_then_MAC);
-
#if defined(BOTAN_HAS_SRP6)
m_extensions.add(new SRP_Identifier(client_settings.srp_identifier()));
#else
@@ -108,8 +110,11 @@ Client_Hello::Client_Hello(Handshake_IO& io,
}
#endif
- BOTAN_ASSERT(policy.acceptable_protocol_version(client_settings.protocol_version()),
- "Our policy accepts the version we are offering");
+ m_extensions.add(new Supported_Elliptic_Curves(policy.allowed_ecc_curves()));
+
+ if(m_version.supports_negotiable_signature_algorithms())
+ m_extensions.add(new Signature_Algorithms(policy.allowed_signature_hashes(),
+ policy.allowed_signature_methods()));
if(policy.send_fallback_scsv(client_settings.protocol_version()))
m_suites.push_back(TLS_FALLBACK_SCSV);
@@ -256,6 +261,15 @@ Client_Hello::Client_Hello(const std::vector<byte>& buf)
m_extensions.add(new Renegotiation_Extension());
}
}
+
+ // Parsing complete, now any additional decoding checks
+
+ if(m_version.supports_negotiable_signature_algorithms() == false)
+ {
+ if(m_extensions.has<Signature_Algorithms>())
+ throw TLS_Exception(Alert::HANDSHAKE_FAILURE,
+ "Client sent signature_algorithms extension in version that doesn't support it");
+ }
}
bool Client_Hello::sent_fallback_scsv() const
diff --git a/src/lib/tls/tls_extensions.cpp b/src/lib/tls/tls_extensions.cpp
index 3dceb505a..e38e4ccdc 100644
--- a/src/lib/tls/tls_extensions.cpp
+++ b/src/lib/tls/tls_extensions.cpp
@@ -463,16 +463,27 @@ Signature_Algorithms::Signature_Algorithms(TLS_Data_Reader& reader,
while(len)
{
- const std::string hash_code = hash_algo_name(reader.get_byte());
- const std::string sig_code = sig_algo_name(reader.get_byte());
-
+ const byte hash_code = reader.get_byte();
+ const byte sig_code = reader.get_byte();
len -= 2;
+ if(sig_code == 0)
+ {
+ /*
+ RFC 5247 7.4.1.4.1 explicitly prohibits anonymous (0) signature code in
+ the client hello. ("It MUST NOT appear in this extension.")
+ */
+ throw TLS_Exception(Alert::DECODE_ERROR, "Client sent ANON signature");
+ }
+
+ const std::string hash_name = hash_algo_name(hash_code);
+ const std::string sig_name = sig_algo_name(sig_code);
+
// If not something we know, ignore it completely
- if(hash_code.empty() || sig_code.empty())
+ if(hash_name.empty() || sig_name.empty())
continue;
- m_supported_algos.push_back(std::make_pair(hash_code, sig_code));
+ m_supported_algos.push_back(std::make_pair(hash_name, sig_name));
}
}
diff --git a/src/lib/tls/tls_extensions.h b/src/lib/tls/tls_extensions.h
index dc69eec36..4bd564a85 100644
--- a/src/lib/tls/tls_extensions.h
+++ b/src/lib/tls/tls_extensions.h
@@ -274,8 +274,9 @@ class Signature_Algorithms final : public Extension
static std::string sig_algo_name(byte code);
static byte sig_algo_code(const std::string& name);
- std::vector<std::pair<std::string, std::string> >
- supported_signature_algorthms() const
+ // [(hash,sig),(hash,sig),...]
+ const std::vector<std::pair<std::string, std::string>>&
+ supported_signature_algorthms() const
{
return m_supported_algos;
}
@@ -287,13 +288,13 @@ class Signature_Algorithms final : public Extension
Signature_Algorithms(const std::vector<std::string>& hashes,
const std::vector<std::string>& sig_algos);
- explicit Signature_Algorithms(const std::vector<std::pair<std::string, std::string> >& algos) :
+ explicit Signature_Algorithms(const std::vector<std::pair<std::string, std::string>>& algos) :
m_supported_algos(algos) {}
Signature_Algorithms(TLS_Data_Reader& reader,
u16bit extension_size);
private:
- std::vector<std::pair<std::string, std::string> > m_supported_algos;
+ std::vector<std::pair<std::string, std::string>> m_supported_algos;
};
/**
diff --git a/src/lib/tls/tls_messages.h b/src/lib/tls/tls_messages.h
index 8ccb2fbff..cf35053f2 100644
--- a/src/lib/tls/tls_messages.h
+++ b/src/lib/tls/tls_messages.h
@@ -19,6 +19,7 @@
#include <botan/x509cert.h>
#include <vector>
#include <string>
+#include <set>
namespace Botan {
@@ -105,6 +106,14 @@ class Client_Hello final : public Handshake_Message
return std::vector<std::pair<std::string, std::string>>();
}
+ std::set<std::string> supported_sig_algos() const
+ {
+ std::set<std::string> sig;
+ for(auto&& hash_and_sig : supported_algos())
+ sig.insert(hash_and_sig.second);
+ return sig;
+ }
+
std::vector<std::string> supported_ecc_curves() const
{
if(Supported_Elliptic_Curves* ecc = m_extensions.get<Supported_Elliptic_Curves>())
@@ -167,6 +176,11 @@ class Client_Hello final : public Handshake_Message
return m_extensions.has<Encrypt_then_MAC>();
}
+ bool sent_signature_algorithms() const
+ {
+ return m_extensions.has<Signature_Algorithms>();
+ }
+
std::vector<std::string> next_protocols() const
{
if(auto alpn = m_extensions.get<Application_Layer_Protocol_Notification>())
diff --git a/src/lib/tls/tls_server.cpp b/src/lib/tls/tls_server.cpp
index 40aa18d27..1676ef659 100644
--- a/src/lib/tls/tls_server.cpp
+++ b/src/lib/tls/tls_server.cpp
@@ -154,11 +154,11 @@ u16bit choose_ciphersuite(
Protocol_Version version,
Credentials_Manager& creds,
const std::map<std::string, std::vector<X509_Certificate> >& cert_chains,
- const Client_Hello* client_hello)
+ const Client_Hello& client_hello)
{
const bool our_choice = policy.server_uses_own_ciphersuite_preferences();
- const bool have_srp = creds.attempt_srp("tls-server", client_hello->sni_hostname());
- const std::vector<u16bit> client_suites = client_hello->ciphersuites();
+ const bool have_srp = creds.attempt_srp("tls-server", client_hello.sni_hostname());
+ const std::vector<u16bit> client_suites = client_hello.ciphersuites();
const std::vector<u16bit> server_suites = policy.ciphersuite_list(version, have_srp);
if(server_suites.empty())
@@ -166,7 +166,11 @@ u16bit choose_ciphersuite(
"Policy forbids us from negotiating any ciphersuite");
const bool have_shared_ecc_curve =
- (policy.choose_curve(client_hello->supported_ecc_curves()) != "");
+ (policy.choose_curve(client_hello.supported_ecc_curves()) != "");
+
+ /*
+ Walk down one list in preference order
+ */
std::vector<u16bit> pref_list = server_suites;
std::vector<u16bit> other_list = client_suites;
@@ -174,19 +178,33 @@ u16bit choose_ciphersuite(
if(!our_choice)
std::swap(pref_list, other_list);
+ const std::set<std::string> client_sig_algos = client_hello.supported_sig_algos();
+
for(auto suite_id : pref_list)
{
if(!value_exists(other_list, suite_id))
continue;
- Ciphersuite suite = Ciphersuite::by_id(suite_id);
+ const Ciphersuite suite = Ciphersuite::by_id(suite_id);
- if(!have_shared_ecc_curve && suite.ecc_ciphersuite())
+ if(suite.valid() == false)
continue;
- if(suite.sig_algo() != "" && cert_chains.count(suite.sig_algo()) == 0)
+ if(suite.ecc_ciphersuite() && have_shared_ecc_curve == false)
continue;
+ // For non-anon ciphersuites
+ if(suite.sig_algo() != "")
+ {
+ // Do we have any certificates for this sig?
+ if(cert_chains.count(suite.sig_algo()) == 0)
+ continue;
+
+ // Client reques
+ if(!client_sig_algos.empty() && client_sig_algos.count(suite.sig_algo()) == 0)
+ continue;
+ }
+
#if defined(BOTAN_HAS_SRP6)
/*
The client may offer SRP cipher suites in the hello message but
@@ -196,7 +214,7 @@ u16bit choose_ciphersuite(
client hello message.
- RFC 5054 section 2.5.1.2
*/
- if(suite.kex_algo() == "SRP_SHA" && client_hello->srp_identifier() == "")
+ if(suite.kex_algo() == "SRP_SHA" && client_hello.srp_identifier() == "")
throw TLS_Exception(Alert::UNKNOWN_PSK_IDENTITY,
"Client wanted SRP but did not send username");
#endif
@@ -747,7 +765,7 @@ void Server::session_create(Server_Handshake_State& pending_state,
pending_state.version(),
m_creds,
cert_chains,
- pending_state.client_hello()),
+ *pending_state.client_hello()),
choose_compression(policy(),
pending_state.client_hello()->compression_methods()),
have_session_ticket_key);
diff --git a/src/lib/utils/cpuid.cpp b/src/lib/utils/cpuid.cpp
index d3def91ed..3fafadab7 100644
--- a/src/lib/utils/cpuid.cpp
+++ b/src/lib/utils/cpuid.cpp
@@ -73,9 +73,8 @@
namespace Botan {
-u64bit CPUID::g_x86_processor_flags[2] = { 0, 0 };
+u64bit CPUID::g_processor_flags[2] = { 0, 0 };
size_t CPUID::g_cache_line_size = BOTAN_TARGET_CPU_DEFAULT_CACHE_LINE_SIZE;
-bool CPUID::g_altivec_capable = false;
bool CPUID::g_initialized = false;
namespace {
@@ -173,13 +172,14 @@ void CPUID::print(std::ostream& o)
o << "CPUID flags: ";
#define CPUID_PRINT(flag) do { if(has_##flag()) o << #flag << " "; } while(0)
+
+#if defined(BOTAN_TARGET_CPU_IS_X86_FAMILY)
CPUID_PRINT(sse2);
CPUID_PRINT(ssse3);
CPUID_PRINT(sse41);
CPUID_PRINT(sse42);
CPUID_PRINT(avx2);
CPUID_PRINT(avx512f);
- CPUID_PRINT(altivec);
CPUID_PRINT(rdtsc);
CPUID_PRINT(bmi2);
@@ -189,18 +189,25 @@ void CPUID::print(std::ostream& o)
CPUID_PRINT(rdseed);
CPUID_PRINT(intel_sha);
CPUID_PRINT(adx);
+#endif
+
+#if defined(BOTAN_TARGET_CPU_IS_PPC_FAMILY)
+ CPUID_PRINT(altivec);
+#endif
+
#undef CPUID_PRINT
o << "\n";
}
void CPUID::initialize()
{
- if(g_initialized)
- return;
+ clear_mem(g_processor_flags, 2);
#if defined(BOTAN_TARGET_CPU_IS_PPC_FAMILY)
- if(altivec_check_sysctl() || altivec_check_pvr_emul())
- g_altivec_capable = true;
+ if(altivec_check_sysctl() || altivec_check_pvr_emul())
+ {
+ g_processor_flags[0] |= CPUID_ALTIVEC_BIT;
+ }
#endif
#if defined(BOTAN_TARGET_CPU_IS_X86_FAMILY)
@@ -220,7 +227,7 @@ void CPUID::initialize()
X86_CPUID(1, cpuid);
- g_x86_processor_flags[0] = (static_cast<u64bit>(cpuid[2]) << 32) | cpuid[3];
+ g_processor_flags[0] = (static_cast<u64bit>(cpuid[2]) << 32) | cpuid[3];
if(is_intel)
g_cache_line_size = 8 * get_byte(2, cpuid[1]);
@@ -229,7 +236,7 @@ void CPUID::initialize()
{
clear_mem(cpuid, 4);
X86_CPUID_SUBLEVEL(7, 0, cpuid);
- g_x86_processor_flags[1] = (static_cast<u64bit>(cpuid[2]) << 32) | cpuid[1];
+ g_processor_flags[1] = (static_cast<u64bit>(cpuid[2]) << 32) | cpuid[1];
}
if(is_amd)
@@ -245,8 +252,8 @@ void CPUID::initialize()
* If we don't have access to CPUID, we can still safely assume that
* any x86-64 processor has SSE2 and RDTSC
*/
- if(g_x86_processor_flags[0] == 0)
- g_x86_processor_flags[0] = (1 << CPUID_SSE2_BIT) | (1 << CPUID_RDTSC_BIT);
+ if(g_processor_flags[0] == 0)
+ g_processor_flags[0] = (1 << CPUID_SSE2_BIT) | (1 << CPUID_RDTSC_BIT);
#endif
g_initialized = true;
diff --git a/src/lib/utils/cpuid.h b/src/lib/utils/cpuid.h
index 3781b6f8e..4e276fabe 100644
--- a/src/lib/utils/cpuid.h
+++ b/src/lib/utils/cpuid.h
@@ -15,6 +15,8 @@ namespace Botan {
/**
* A class handling runtime CPU feature detection
+*
+* Currently this class supports only x86 (via CPUID) and PowerPC (AltiVec detection)
*/
class BOTAN_DLL CPUID
{
@@ -24,6 +26,10 @@ class BOTAN_DLL CPUID
*/
static void initialize();
+ static bool has_simd_32();
+
+ static void print(std::ostream& o);
+
/**
* Return a best guess of the cache line size
*/
@@ -36,136 +42,152 @@ class BOTAN_DLL CPUID
return g_cache_line_size;
}
+ enum CPUID_bits {
+#if defined(BOTAN_TARGET_CPU_IS_X86_FAMILY)
+ // This matches the layout of cpuid(1)
+ CPUID_RDTSC_BIT = 4,
+ CPUID_SSE2_BIT = 26,
+ CPUID_CLMUL_BIT = 33,
+ CPUID_SSSE3_BIT = 41,
+ CPUID_SSE41_BIT = 51,
+ CPUID_SSE42_BIT = 52,
+ CPUID_AESNI_BIT = 57,
+ CPUID_RDRAND_BIT = 62,
+
+ CPUID_AVX2_BIT = 64+5,
+ CPUID_BMI2_BIT = 64+8,
+ CPUID_AVX512F_BIT = 64+16,
+ CPUID_RDSEED_BIT = 64+18,
+ CPUID_ADX_BIT = 64+19,
+ CPUID_SHA_BIT = 64+29,
+#endif
+
+#if defined(BOTAN_TARGET_CPU_IS_PPC_FAMILY)
+ CPUID_ALTIVEC_BIT = 0
+#endif
+
+ // TODO: ARMv8 feature detection
+ };
+
+#if defined(BOTAN_TARGET_CPU_IS_PPC_FAMILY)
/**
* Check if the processor supports AltiVec/VMX
*/
static bool has_altivec()
- {
- if(!g_initialized)
- {
- initialize();
- }
+ { return has_cpuid_bit(CPUID_ALTIVEC_BIT); }
+#endif
- return g_altivec_capable;
- }
+#if defined(BOTAN_TARGET_CPU_IS_X86_FAMILY)
/**
* Check if the processor supports RDTSC
*/
static bool has_rdtsc()
- { return x86_processor_flags_has(CPUID_RDTSC_BIT); }
+ { return has_cpuid_bit(CPUID_RDTSC_BIT); }
/**
* Check if the processor supports SSE2
*/
static bool has_sse2()
- { return x86_processor_flags_has(CPUID_SSE2_BIT); }
+ { return has_cpuid_bit(CPUID_SSE2_BIT); }
/**
* Check if the processor supports SSSE3
*/
static bool has_ssse3()
- { return x86_processor_flags_has(CPUID_SSSE3_BIT); }
+ { return has_cpuid_bit(CPUID_SSSE3_BIT); }
/**
* Check if the processor supports SSE4.1
*/
static bool has_sse41()
- { return x86_processor_flags_has(CPUID_SSE41_BIT); }
+ { return has_cpuid_bit(CPUID_SSE41_BIT); }
/**
* Check if the processor supports SSE4.2
*/
static bool has_sse42()
- { return x86_processor_flags_has(CPUID_SSE42_BIT); }
+ { return has_cpuid_bit(CPUID_SSE42_BIT); }
/**
* Check if the processor supports AVX2
*/
static bool has_avx2()
- { return x86_processor_flags_has(CPUID_AVX2_BIT); }
+ { return has_cpuid_bit(CPUID_AVX2_BIT); }
/**
* Check if the processor supports AVX-512F
*/
static bool has_avx512f()
- { return x86_processor_flags_has(CPUID_AVX512F_BIT); }
+ { return has_cpuid_bit(CPUID_AVX512F_BIT); }
/**
* Check if the processor supports BMI2
*/
static bool has_bmi2()
- { return x86_processor_flags_has(CPUID_BMI2_BIT); }
+ { return has_cpuid_bit(CPUID_BMI2_BIT); }
/**
* Check if the processor supports AES-NI
*/
static bool has_aes_ni()
- { return x86_processor_flags_has(CPUID_AESNI_BIT); }
+ { return has_cpuid_bit(CPUID_AESNI_BIT); }
/**
* Check if the processor supports CLMUL
*/
static bool has_clmul()
- { return x86_processor_flags_has(CPUID_CLMUL_BIT); }
+ { return has_cpuid_bit(CPUID_CLMUL_BIT); }
/**
* Check if the processor supports Intel SHA extension
*/
static bool has_intel_sha()
- { return x86_processor_flags_has(CPUID_SHA_BIT); }
+ { return has_cpuid_bit(CPUID_SHA_BIT); }
/**
* Check if the processor supports ADX extension
*/
static bool has_adx()
- { return x86_processor_flags_has(CPUID_ADX_BIT); }
+ { return has_cpuid_bit(CPUID_ADX_BIT); }
/**
* Check if the processor supports RDRAND
*/
static bool has_rdrand()
- { return x86_processor_flags_has(CPUID_RDRAND_BIT); }
+ { return has_cpuid_bit(CPUID_RDRAND_BIT); }
/**
* Check if the processor supports RDSEED
*/
static bool has_rdseed()
- { return x86_processor_flags_has(CPUID_RDSEED_BIT); }
-
- static bool has_simd_32();
-
- static void print(std::ostream& o);
- private:
- enum CPUID_bits {
- CPUID_RDTSC_BIT = 4,
- CPUID_SSE2_BIT = 26,
- CPUID_CLMUL_BIT = 33,
- CPUID_SSSE3_BIT = 41,
- CPUID_SSE41_BIT = 51,
- CPUID_SSE42_BIT = 52,
- CPUID_AESNI_BIT = 57,
- CPUID_RDRAND_BIT = 62,
+ { return has_cpuid_bit(CPUID_RDSEED_BIT); }
+#endif
- CPUID_AVX2_BIT = 64+5,
- CPUID_BMI2_BIT = 64+8,
- CPUID_AVX512F_BIT = 64+16,
- CPUID_RDSEED_BIT = 64+18,
- CPUID_ADX_BIT = 64+19,
- CPUID_SHA_BIT = 64+29,
- };
+ /*
+ * Clear a CPUID bit
+ * Call CPUID::initialize to reset
+ */
+ static void clear_cpuid_bit(CPUID_bits bit)
+ {
+ BOTAN_ASSERT(bit < 128, "CPUID bit within bounds");
+ const uint64_t mask = ~(static_cast<uint64_t>(1) << (bit % 64));
+ g_processor_flags[bit/64] &= mask;
+ }
- static bool x86_processor_flags_has(u64bit bit)
+ static bool has_cpuid_bit(CPUID_bits elem)
{
if(!g_initialized)
initialize();
- return ((g_x86_processor_flags[bit/64] >> (bit % 64)) & 1);
+ const size_t bit = static_cast<size_t>(elem);
+ BOTAN_ASSERT(bit < 128, "CPUID bit within bounds");
+ return ((g_processor_flags[bit/64] >> (bit % 64)) & 1);
}
+ private:
static bool g_initialized;
- static u64bit g_x86_processor_flags[2];
static size_t g_cache_line_size;
- static bool g_altivec_capable;
+ static u64bit g_processor_flags[2];
};
}
diff --git a/src/scripts/ci/travis/build.sh b/src/scripts/ci/travis/build.sh
index f2b4f2b67..ec84499ce 100755
--- a/src/scripts/ci/travis/build.sh
+++ b/src/scripts/ci/travis/build.sh
@@ -7,6 +7,7 @@ TEST_PREFIX=""
TEST_EXE=./botan-test
CFG_FLAGS=(--prefix=/tmp/botan-installation --cc=$CC --os=$TRAVIS_OS_NAME)
+# PKCS11 is optional but doesn't pull in new dependencies
CFG_FLAGS+=(--with-pkcs11)
CC_BIN=$CXX
@@ -31,10 +32,10 @@ elif [ "$BUILD_MODE" = "coverage" ]; then
CFG_FLAGS+=(--with-coverage)
elif [ "$BUILD_MODE" = "sanitizer" ]; then
export ASAN_OPTIONS=detect_leaks=0
- CFG_FLAGS+=(--with-sanitizers)
+ CFG_FLAGS+=(--with-sanitizers --disable-modules=locking_allocator)
elif [ "$BUILD_MODE" = "valgrind" ]; then
- CFG_FLAGS+=(--with-valgrind --with-debug-info)
- TEST_PREFIX="valgrind --track-origins=yes --error-exitcode=9 -v"
+ CFG_FLAGS+=(--with-valgrind --with-debug-info --disable-modules=locking_allocator)
+ TEST_PREFIX="valgrind --error-exitcode=9 -v"
fi
if [ "$BUILD_MODE" = "mini-static" ] || [ "$BUILD_MODE" = "mini-shared" ]; then
diff --git a/src/tests/data/aead/eax.vec b/src/tests/data/aead/eax.vec
index 6b6a408a7..4e7365f9b 100644
--- a/src/tests/data/aead/eax.vec
+++ b/src/tests/data/aead/eax.vec
@@ -539,310 +539,6 @@ AD = 000102030405060708090A0B0C0D0E0F
In = 000102030405060708090A0B0C0D0E0F
Out = 60A315193F58144F5701D547C79FEEED912FDBDB05467DF5
-[RC5/EAX]
-
-Key = 0001020304050607
-Nonce =
-AD =
-In =
-Out = 169C7954341EF44D
-
-Key = 169C7954341EF44D
-Nonce = 00
-AD = 00
-In = 00
-Out = 22DABFDA9A0B0BA067
-
-Key = DABFDA9A0B0BA067
-Nonce = 0001
-AD = 0001
-In = 0001
-Out = 2E546A3D6D9AA5877C5A
-
-Key = 6A3D6D9AA5877C5A
-Nonce = 000102
-AD = 000102
-In = 000102
-Out = 2A6ECF2A34A3AF5DE8919E
-
-Key = 2A34A3AF5DE8919E
-Nonce = 00010203
-AD = 00010203
-In = 00010203
-Out = 9CC5F84FD3F673EDAF75E3B5
-
-Key = D3F673EDAF75E3B5
-Nonce = 0001020304
-AD = 0001020304
-In = 0001020304
-Out = FF5611756CCC647FAAC8D49BF1
-
-Key = CC647FAAC8D49BF1
-Nonce = 000102030405
-AD = 000102030405
-In = 000102030405
-Out = 74C939BEB31CC335999CCFE8F5FA
-
-Key = C335999CCFE8F5FA
-Nonce = 00010203040506
-AD = 00010203040506
-In = 00010203040506
-Out = 7976B6F7709B5F2A7969C5FD063A88
-
-Key = 2A7969C5FD063A88
-Nonce = 0001020304050607
-AD = 0001020304050607
-In = 0001020304050607
-Out = 421EEC50222761742C9BFB1EAC3C54A2
-
-Key = 2C9BFB1EAC3C54A2
-Nonce = 000102030405060708
-AD = 000102030405060708
-In = 000102030405060708
-Out = 6A4761CD266B1C0ECB3EA3CCEBC85FAC4E
-
-Key = 3EA3CCEBC85FAC4E
-Nonce = 00010203040506070809
-AD = 00010203040506070809
-In = 00010203040506070809
-Out = 7C09201098E764239A2E8043ABA9BF4D5AEE
-
-Key = 8043ABA9BF4D5AEE
-Nonce = 000102030405060708090A
-AD = 000102030405060708090A
-In = 000102030405060708090A
-Out = 8CE26277562F646DE33C88D72AED48895E3B40
-
-Key = D72AED48895E3B40
-Nonce = 000102030405060708090A0B
-AD = 000102030405060708090A0B
-In = 000102030405060708090A0B
-Out = 52150F44D37D121560DA87F658E865E22B485906
-
-Key = 58E865E22B485906
-Nonce = 000102030405060708090A0B0C
-AD = 000102030405060708090A0B0C
-In = 000102030405060708090A0B0C
-Out = BA0A73B45F93ECFBFC3AB3D8D0683D52FA47FB1A52
-
-Key = 683D52FA47FB1A52
-Nonce = 000102030405060708090A0B0C0D
-AD = 000102030405060708090A0B0C0D
-In = 000102030405060708090A0B0C0D
-Out = 96546CBE01054AD24CC95DB54724D80D0D530E5D1DDE
-
-Key = D80D0D530E5D1DDE
-Nonce = 000102030405060708090A0B0C0D0E
-AD = 000102030405060708090A0B0C0D0E
-In = 000102030405060708090A0B0C0D0E
-Out = 61E654BB18CD26FC36C09F874DC2C7C65884CB9D9FEC1E
-
-Key = C65884CB9D9FEC1E
-Nonce = 000102030405060708090A0B0C0D0E0F
-AD = 000102030405060708090A0B0C0D0E0F
-In = 000102030405060708090A0B0C0D0E0F
-Out = 1D77B8BF02CDEAB4A707C07628826D5BF18D1730C3D64701
-
-[RC6/EAX]
-
-Key = 000102030405060708090A0B0C0D0E0F
-Nonce =
-AD =
-In =
-Out = 1DF8B0B92A3F0C951C425AF4830E63FD
-
-Key = 1DF8B0B92A3F0C951C425AF4830E63FD
-Nonce = 00
-AD = 00
-In = 00
-Out = 1A8A2959EBBE90180999994DEB7036DB85
-
-Key = 8A2959EBBE90180999994DEB7036DB85
-Nonce = 0001
-AD = 0001
-In = 0001
-Out = 435D7EF00CB57DB7B4155DB530D75CE6B025
-
-Key = 7EF00CB57DB7B4155DB530D75CE6B025
-Nonce = 000102
-AD = 000102
-In = 000102
-Out = 08A6CF2ED6AF0F2D5BAB05F623D389480A01F2
-
-Key = 2ED6AF0F2D5BAB05F623D389480A01F2
-Nonce = 00010203
-AD = 00010203
-In = 00010203
-Out = A86E54D3FC69547C8BD922A5BF2F7B26C4D20F98
-
-Key = FC69547C8BD922A5BF2F7B26C4D20F98
-Nonce = 0001020304
-AD = 0001020304
-In = 0001020304
-Out = ED0822E4390007A3C6DEFC6C912C0E5B853B520368
-
-Key = 0007A3C6DEFC6C912C0E5B853B520368
-Nonce = 000102030405
-AD = 000102030405
-In = 000102030405
-Out = 7BEFC7FD4054D32C43A4D1086D57C5BCFAEE04EBC600
-
-Key = D32C43A4D1086D57C5BCFAEE04EBC600
-Nonce = 00010203040506
-AD = 00010203040506
-In = 00010203040506
-Out = 5235E58E79287CA27E9C781327C0FC7C55410EB0C828A9
-
-Key = A27E9C781327C0FC7C55410EB0C828A9
-Nonce = 0001020304050607
-AD = 0001020304050607
-In = 0001020304050607
-Out = CEB5EE99BE521F4D547F46383987F2A3582A81A3BCF9B280
-
-Key = 547F46383987F2A3582A81A3BCF9B280
-Nonce = 000102030405060708
-AD = 000102030405060708
-In = 000102030405060708
-Out = 0358B063D5F99C3770C0A73730512CDA6AD49599775D59EDA1
-
-Key = C0A73730512CDA6AD49599775D59EDA1
-Nonce = 00010203040506070809
-AD = 00010203040506070809
-In = 00010203040506070809
-Out = 434B9AEE07DFADD0A332499BD88881E558E09A8E822BE27D2496
-
-Key = 499BD88881E558E09A8E822BE27D2496
-Nonce = 000102030405060708090A
-AD = 000102030405060708090A
-In = 000102030405060708090A
-Out = D47849E650F350BB622D74638E37A84E7FAAF8F5D77F1B061773DC
-
-Key = 638E37A84E7FAAF8F5D77F1B061773DC
-Nonce = 000102030405060708090A0B
-AD = 000102030405060708090A0B
-In = 000102030405060708090A0B
-Out = 814592F568284085E79A024B9EB1405E8422FE50BC0D88D837A2C650
-
-Key = 9EB1405E8422FE50BC0D88D837A2C650
-Nonce = 000102030405060708090A0B0C
-AD = 000102030405060708090A0B0C
-In = 000102030405060708090A0B0C
-Out = 6F2B55EC91B591082053AF692EC48F91EF01AA43A1EE3B36D233DDD48B
-
-Key = C48F91EF01AA43A1EE3B36D233DDD48B
-Nonce = 000102030405060708090A0B0C0D
-AD = 000102030405060708090A0B0C0D
-In = 000102030405060708090A0B0C0D
-Out = 506CBDD2901838EE2F178B6953DA03778957F536509BFCA577B23A18F726
-
-Key = 03778957F536509BFCA577B23A18F726
-Nonce = 000102030405060708090A0B0C0D0E
-AD = 000102030405060708090A0B0C0D0E
-In = 000102030405060708090A0B0C0D0E
-Out = 446EE435D3D1848B51BB8C5F7BE4A11129EAEAADE534940546D43242A4C839
-
-Key = 1129EAEAADE534940546D43242A4C839
-Nonce = 000102030405060708090A0B0C0D0E0F
-AD = 000102030405060708090A0B0C0D0E0F
-In = 000102030405060708090A0B0C0D0E0F
-Out = FB9D2B150C42465B1685D8F069CC06DB41E2940F5DC63CB4E2FBEC25ED8A31E6
-
-Key = 41E2940F5DC63CB4E2FBEC25ED8A31E6
-Nonce = 000102030405060708090A0B0C0D0E0F10
-AD = 000102030405060708090A0B0C0D0E0F10
-In = 000102030405060708090A0B0C0D0E0F10
-Out = 9684F683260107BE8FEBBEE1D3EEDAA7BDBAE7C116F7FF96631F4ACEE95C65CEF3
-
-Key = BAE7C116F7FF96631F4ACEE95C65CEF3
-Nonce = 000102030405060708090A0B0C0D0E0F1011
-AD = 000102030405060708090A0B0C0D0E0F1011
-In = 000102030405060708090A0B0C0D0E0F1011
-Out = 5082B1FE48CD3AB58F63C2DCFDD4069AC73619AC7B8EE315CBB7131A283851B32266
-
-Key = 19AC7B8EE315CBB7131A283851B32266
-Nonce = 000102030405060708090A0B0C0D0E0F101112
-AD = 000102030405060708090A0B0C0D0E0F101112
-In = 000102030405060708090A0B0C0D0E0F101112
-Out = 8C72AE495B6F003A3C784D144E84E88885F78EFA4CEC023740A8D670E351FBCF62C1CB
-
-Key = FA4CEC023740A8D670E351FBCF62C1CB
-Nonce = 000102030405060708090A0B0C0D0E0F10111213
-AD = 000102030405060708090A0B0C0D0E0F10111213
-In = 000102030405060708090A0B0C0D0E0F10111213
-Out = 815D6361C7AE34C9D796ADF9C71ABC46AEF88BC99A1F7288C61A6623B9A82748137ED7CC
-
-Key = 9A1F7288C61A6623B9A82748137ED7CC
-Nonce = 000102030405060708090A0B0C0D0E0F1011121314
-AD = 000102030405060708090A0B0C0D0E0F1011121314
-In = 000102030405060708090A0B0C0D0E0F1011121314
-Out = 904A853E2E96BD2B85AAB3F5DFB900E9B3642EE6679AA90DBDD461CAD20495DCFBCB513DD2
-
-Key = 9AA90DBDD461CAD20495DCFBCB513DD2
-Nonce = 000102030405060708090A0B0C0D0E0F101112131415
-AD = 000102030405060708090A0B0C0D0E0F101112131415
-In = 000102030405060708090A0B0C0D0E0F101112131415
-Out = 79D738A462F727B3D3C529ED999B6FDCCD991D1C5A4DBF0987BEDDE650D73CAE7D380FED3431
-
-Key = BF0987BEDDE650D73CAE7D380FED3431
-Nonce = 000102030405060708090A0B0C0D0E0F10111213141516
-AD = 000102030405060708090A0B0C0D0E0F10111213141516
-In = 000102030405060708090A0B0C0D0E0F10111213141516
-Out = B2DEFDB7D503A84E83155A04B8DE8C8DBB68C2FC475007B7CE900CF43CD518024123C76F6DA328
-
-Key = B7CE900CF43CD518024123C76F6DA328
-Nonce = 000102030405060708090A0B0C0D0E0F1011121314151617
-AD = 000102030405060708090A0B0C0D0E0F1011121314151617
-In = 000102030405060708090A0B0C0D0E0F1011121314151617
-Out = 9E723E15439E12F6C46DF8A309AE1E97B6FD18436259CFB0DF8B6E1E23512CC4CF5FF531A1908F69
-
-Key = DF8B6E1E23512CC4CF5FF531A1908F69
-Nonce = 000102030405060708090A0B0C0D0E0F101112131415161718
-AD = 000102030405060708090A0B0C0D0E0F101112131415161718
-In = 000102030405060708090A0B0C0D0E0F101112131415161718
-Out = A7F0AD03CEBCC9202718AA164886E1026975306A664C5AC7A94A771BF8B9A4325705C85E5499FD98E9
-
-Key = 4A771BF8B9A4325705C85E5499FD98E9
-Nonce = 000102030405060708090A0B0C0D0E0F10111213141516171819
-AD = 000102030405060708090A0B0C0D0E0F10111213141516171819
-In = 000102030405060708090A0B0C0D0E0F10111213141516171819
-Out = A53A92AD1C6835F28E04EF591E783D36F3D76E489B31B87BEB7AAA263B52A6E6A043DE4D7029D4DC73F5
-
-Key = AA263B52A6E6A043DE4D7029D4DC73F5
-Nonce = 000102030405060708090A0B0C0D0E0F101112131415161718191A
-AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A
-In = 000102030405060708090A0B0C0D0E0F101112131415161718191A
-Out = 79BE3C38291A7F77E932C8A9DEAC08DE6442EA9B3895B101A14E7B33B84DE06342E675E019CD0237292ED0
-
-Key = 33B84DE06342E675E019CD0237292ED0
-Nonce = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B
-AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B
-In = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B
-Out = FA108123C5A69571CFDFE8C3D00535121FDE3096DDC0D700F8F26A5A764025D7CA1A3F2C54D28956423B0C77
-
-Key = 764025D7CA1A3F2C54D28956423B0C77
-Nonce = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C
-AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C
-In = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C
-Out = 36EC2D67FD977BD2B73DB6D8EB756B3EADA13690E1B6DFC12A4781B34B4BC6B38DE3B02283D92F4DF19A5C48C5
-
-Key = 4BC6B38DE3B02283D92F4DF19A5C48C5
-Nonce = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D
-AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D
-In = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D
-Out = 96D3243C945905C9732B5927E46F00886D511463B38C86002FC26B65AB8C5B5511CDEC35687AB8425AB22D58B4F1
-
-Key = 5B5511CDEC35687AB8425AB22D58B4F1
-Nonce = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E
-AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E
-In = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E
-Out = 9CF83B87BEA3374AF7722E999863E3DABB858B0383383EAC7757F5B80FD44B1E0CBC961940FDA93B73A92DACFD67F3
-
-Key = 1E0CBC961940FDA93B73A92DACFD67F3
-Nonce = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F
-AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F
-In = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F
-Out = CE3BC3C9FA5EF4AFE5272B3EDD24B1B003FED2C2E501528CFF44D3FABFF52CB4DC94FDDC78AAB2B7CAA1E1EF149AC355
-
[Twofish/EAX]
Key = 000102030405060708090A0B0C0D0E0F
@@ -1043,214 +739,6 @@ AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F
In = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F
Out = 2B1890EB9FC0B8293E45D42D2126F4072754AA54E220C853C5F20FBA86BE07951A1B15BBC287372FB9AF035FB124B6A1
-[SAFER-SK(10)/EAX]
-
-Key = 000102030405060708090A0B0C0D0E0F
-Nonce =
-AD =
-In =
-Out = 22D90A75BBA5F298
-
-Key = 22D90A75BBA5F29822D90A75BBA5F298
-Nonce = 00
-AD = 00
-In = 00
-Out = 3F98C31AB2DE61DE82
-
-Key = 98C31AB2DE61DE8298C31AB2DE61DE82
-Nonce = 0001
-AD = 0001
-In = 0001
-Out = 584DF4701D4A1A09928C
-
-Key = F4701D4A1A09928CF4701D4A1A09928C
-Nonce = 000102
-AD = 000102
-In = 000102
-Out = B9DEAD6E221A98505153DA
-
-Key = 6E221A98505153DA6E221A98505153DA
-Nonce = 00010203
-AD = 00010203
-In = 00010203
-Out = 06D4A6EB0E57C51B96BA13B6
-
-Key = 0E57C51B96BA13B60E57C51B96BA13B6
-Nonce = 0001020304
-AD = 0001020304
-In = 0001020304
-Out = 7B58B441CAE28CCF271F5D0A29
-
-Key = E28CCF271F5D0A29E28CCF271F5D0A29
-Nonce = 000102030405
-AD = 000102030405
-In = 000102030405
-Out = 7950E0D1EC242ACDDE6E38180C07
-
-Key = 2ACDDE6E38180C072ACDDE6E38180C07
-Nonce = 00010203040506
-AD = 00010203040506
-In = 00010203040506
-Out = 65A4F4E098D7C67DC1C9E9602BACF2
-
-Key = 7DC1C9E9602BACF27DC1C9E9602BACF2
-Nonce = 0001020304050607
-AD = 0001020304050607
-In = 0001020304050607
-Out = FEBE4E72BAA0848FC4607EA3F138BAD9
-
-Key = C4607EA3F138BAD9C4607EA3F138BAD9
-Nonce = 000102030405060708
-AD = 000102030405060708
-In = 000102030405060708
-Out = 9B7BD6D6D655985AA38B2C58A9530EA6AC
-
-Key = 8B2C58A9530EA6AC8B2C58A9530EA6AC
-Nonce = 00010203040506070809
-AD = 00010203040506070809
-In = 00010203040506070809
-Out = 60C92F925D147847020351E6F5F6DC996F84
-
-Key = 51E6F5F6DC996F8451E6F5F6DC996F84
-Nonce = 000102030405060708090A
-AD = 000102030405060708090A
-In = 000102030405060708090A
-Out = 7B40769370E651F64AA65474F1F8A8D3F4B9AF
-
-Key = 74F1F8A8D3F4B9AF74F1F8A8D3F4B9AF
-Nonce = 000102030405060708090A0B
-AD = 000102030405060708090A0B
-In = 000102030405060708090A0B
-Out = 7215832C2FB9C54DF7A9C6869BF9AEF14F9151D1
-
-Key = 9BF9AEF14F9151D19BF9AEF14F9151D1
-Nonce = 000102030405060708090A0B0C
-AD = 000102030405060708090A0B0C
-In = 000102030405060708090A0B0C
-Out = AD0F9C79008572AB8AE2466EFFF375D0583D921B69
-
-Key = F375D0583D921B69F375D0583D921B69
-Nonce = 000102030405060708090A0B0C0D
-AD = 000102030405060708090A0B0C0D
-In = 000102030405060708090A0B0C0D
-Out = C05076E2C330A0D25D7CEC80597F843C12F84B00A8E0
-
-Key = 843C12F84B00A8E0843C12F84B00A8E0
-Nonce = 000102030405060708090A0B0C0D0E
-AD = 000102030405060708090A0B0C0D0E
-In = 000102030405060708090A0B0C0D0E
-Out = D18F0563AB0278140B0CD9A9B07B34262B1688E16A171E
-
-Key = 262B1688E16A171E262B1688E16A171E
-Nonce = 000102030405060708090A0B0C0D0E0F
-AD = 000102030405060708090A0B0C0D0E0F
-In = 000102030405060708090A0B0C0D0E0F
-Out = 650747091F5C532EE37D2D78EE1EC6051BAC36144F9A0E8D
-
-[RC2/EAX]
-
-Key = 0001020304050607
-Nonce =
-AD =
-In =
-Out = D6CC8632EEE0F46B
-
-Key = D6CC8632EEE0F46B
-Nonce = 00
-AD = 00
-In = 00
-Out = 4CEA19572CB8970CB4
-
-Key = EA19572CB8970CB4
-Nonce = 0001
-AD = 0001
-In = 0001
-Out = 55373EDD3253F6D0C1A8
-
-Key = 3EDD3253F6D0C1A8
-Nonce = 000102
-AD = 000102
-In = 000102
-Out = 206FA620FA88F03F240D31
-
-Key = 20FA88F03F240D31
-Nonce = 00010203
-AD = 00010203
-In = 00010203
-Out = 17EE8B40702E8194F1FCBFDE
-
-Key = 702E8194F1FCBFDE
-Nonce = 0001020304
-AD = 0001020304
-In = 0001020304
-Out = 2A8928713631C5534786E15FB3
-
-Key = 31C5534786E15FB3
-Nonce = 000102030405
-AD = 000102030405
-In = 000102030405
-Out = 3A6AEDC7066B3C663A4081E1D243
-
-Key = 3C663A4081E1D243
-Nonce = 00010203040506
-AD = 00010203040506
-In = 00010203040506
-Out = 8BC5203947A6446AAC806C92BFBD6E
-
-Key = 6AAC806C92BFBD6E
-Nonce = 0001020304050607
-AD = 0001020304050607
-In = 0001020304050607
-Out = 2E0274BBE14D21A3CEB0E0CB73C3664C
-
-Key = CEB0E0CB73C3664C
-Nonce = 000102030405060708
-AD = 000102030405060708
-In = 000102030405060708
-Out = 9C4B292B0CF17E3A29F23CD535559023EC
-
-Key = F23CD535559023EC
-Nonce = 00010203040506070809
-AD = 00010203040506070809
-In = 00010203040506070809
-Out = 8E322734308F8566287746363D7EFC322821
-
-Key = 46363D7EFC322821
-Nonce = 000102030405060708090A
-AD = 000102030405060708090A
-In = 000102030405060708090A
-Out = C413C405767FF5F98E3667E7BA35D8F3678E7E
-
-Key = E7BA35D8F3678E7E
-Nonce = 000102030405060708090A0B
-AD = 000102030405060708090A0B
-In = 000102030405060708090A0B
-Out = D77806B7A218098B1569EADCBA67C306E5C0181B
-
-Key = BA67C306E5C0181B
-Nonce = 000102030405060708090A0B0C
-AD = 000102030405060708090A0B0C
-In = 000102030405060708090A0B0C
-Out = 4BE5EF74F9E9799A4D636FEA9F4C511C44ADBA4030
-
-Key = 4C511C44ADBA4030
-Nonce = 000102030405060708090A0B0C0D
-AD = 000102030405060708090A0B0C0D
-In = 000102030405060708090A0B0C0D
-Out = 7E19969170C2C8D8AEBA8C7FBC2C54CC6D466A2DF6DA
-
-Key = 54CC6D466A2DF6DA
-Nonce = 000102030405060708090A0B0C0D0E
-AD = 000102030405060708090A0B0C0D0E
-In = 000102030405060708090A0B0C0D0E
-Out = 2EF1CEDC1DD3403CF440FC5561BE3361C6FB277E93701F
-
-Key = 61C6FB277E93701F
-Nonce = 000102030405060708090A0B0C0D0E0F
-AD = 000102030405060708090A0B0C0D0E0F
-In = 000102030405060708090A0B0C0D0E0F
-Out = DE052719153EBACE9D7B19F52AC4282F4AC2A96F2FA8634C
-
[DES/EAX]
Key = 0001020304050607
diff --git a/src/tests/data/aead/gcm.vec b/src/tests/data/aead/gcm.vec
index 516e828ec..be8250792 100644
--- a/src/tests/data/aead/gcm.vec
+++ b/src/tests/data/aead/gcm.vec
@@ -1,3 +1,6 @@
+
+#test cpuid aesni ssse3 clmul
+
[AES-128/GCM]
# Nist | Test Case 1
Key = 00000000000000000000000000000000
diff --git a/src/tests/data/block/aes.vec b/src/tests/data/block/aes.vec
index 4e0b7399c..50d9cc469 100644
--- a/src/tests/data/block/aes.vec
+++ b/src/tests/data/block/aes.vec
@@ -1,3 +1,6 @@
+
+#test cpuid aesni ssse3
+
[AES-128]
Key = 000102030405060708090A0B0C0D0E0F
In = 00112233445566778899AABBCCDDEEFF
diff --git a/src/tests/data/block/idea.vec b/src/tests/data/block/idea.vec
index 705d02d68..eee5ef5e9 100644
--- a/src/tests/data/block/idea.vec
+++ b/src/tests/data/block/idea.vec
@@ -1,3 +1,6 @@
+
+#test cpuid sse2
+
[IDEA]
Key = ED1BCC9E9267925F3132BA3A8CF9B764
In = 7409000000000000
diff --git a/src/tests/data/block/mars.vec b/src/tests/data/block/mars.vec
deleted file mode 100644
index a7cc764fc..000000000
--- a/src/tests/data/block/mars.vec
+++ /dev/null
@@ -1,4337 +0,0 @@
-[MARS]
-Key = CB14A1776ABBC1CDAFE7243DEF2CEA02
-In = F94512A9B42D034EC4792204D708A69B
-Out = 225DA2CB64B73F79069F21A5E3CB8522
-
-Key = 86EDF4DA31824CABEF6A4637C40B0BAB
-In = 4DF955AD5B398D66408D620A2B27E1A9
-Out = A4B737340AE6D2CAFD930BA97D86129F
-
-Key = D158860838874D9500000000000000000000000000000000
-In = 93A953A82C10411DD158860838874D95
-Out = 4FA0E5F64893131712F01408D233E9F7
-
-Key = FBA167983E7AEF22317CE28C02AAE1A3E8E5CC3CEDBEA82A99DBC39AD65E7227
-In = 1344ABA4D3C44708A8A72116D4F49384
-Out = 458335D95EA42A9F4DCCD41AECC2390D
-
-Key = 00000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = DCC07B8DFB0738D6E30A22DFCF27E886
-
-Key = 00000000000000000000000000000000
-In = DCC07B8DFB0738D6E30A22DFCF27E886
-Out = 33CAFFBDDC7F1DDA0F9C15FA2F30E2FF
-
-Key = 00000000000000000000000000000000
-In = 33CAFFBDDC7F1DDA0F9C15FA2F30E2FF
-Out = 62D0D531FD18BAC77177CEB2395EF18F
-
-Key = 00000000000000000000000000000000
-In = 62D0D531FD18BAC77177CEB2395EF18F
-Out = FC444017478822797D800F790622D77B
-
-Key = 00000000000000000000000000000000
-In = FC444017478822797D800F790622D77B
-Out = D584ED203C50582BCBF74B0469417EDC
-
-Key = 00000000000000000000000000000000
-In = D584ED203C50582BCBF74B0469417EDC
-Out = 7134D3EF595D573FE88E18CE5CB2E612
-
-Key = 00000000000000000000000000000000
-In = 7134D3EF595D573FE88E18CE5CB2E612
-Out = 9172072F22CFC72234A7697D73412DB9
-
-Key = 00000000000000000000000000000000
-In = 9172072F22CFC72234A7697D73412DB9
-Out = 06B0DDCAAE6EA44BD0C509CE2BC838AC
-
-Key = 00000000000000000000000000000000
-In = 06B0DDCAAE6EA44BD0C509CE2BC838AC
-Out = 77512E7A4A90D6D5CD66637DEEF1FD52
-
-Key = 00000000000000000000000000000000
-In = 77512E7A4A90D6D5CD66637DEEF1FD52
-Out = 8BC4E466ABE0E2F8FD76019B8237F36E
-
-Key = 00000000000000000000000000000000
-In = 8BC4E466ABE0E2F8FD76019B8237F36E
-Out = 77D40822866C0DD51E0594AA81E5F1B5
-
-Key = 00000000000000000000000000000000
-In = 77D40822866C0DD51E0594AA81E5F1B5
-Out = B8AB0608C7976E1D8F57B2BA493C7503
-
-Key = 00000000000000000000000000000000
-In = B8AB0608C7976E1D8F57B2BA493C7503
-Out = ED4AFE77CE3A2F8C00D0A5E4FDF23426
-
-Key = 00000000000000000000000000000000
-In = ED4AFE77CE3A2F8C00D0A5E4FDF23426
-Out = 1B52C34EDB3826E2BF564E4E3A8C9FA6
-
-Key = 00000000000000000000000000000000
-In = 1B52C34EDB3826E2BF564E4E3A8C9FA6
-Out = AE7E643A355B4847D4F1DBD126518993
-
-Key = 00000000000000000000000000000000
-In = AE7E643A355B4847D4F1DBD126518993
-Out = 3E144191008102E869184D9714BAE7CF
-
-Key = 00000000000000000000000000000000
-In = 3E144191008102E869184D9714BAE7CF
-Out = 89ABFA208A52F85CA60F296CE99FC97A
-
-Key = 00000000000000000000000000000000
-In = 89ABFA208A52F85CA60F296CE99FC97A
-Out = FA092A3DD37EF94837715BBC72C9008F
-
-Key = 00000000000000000000000000000000
-In = FA092A3DD37EF94837715BBC72C9008F
-Out = 8A2288E53B2F0DD376ED385911BB4BB9
-
-Key = 00000000000000000000000000000000
-In = 8A2288E53B2F0DD376ED385911BB4BB9
-Out = 0CD12B0AEC2BA1C57F06E268A4BF5966
-
-Key = 00000000000000000000000000000000
-In = 0CD12B0AEC2BA1C57F06E268A4BF5966
-Out = 0B86524D05D0963C1BDF538290156686
-
-Key = 00000000000000000000000000000000
-In = 0B86524D05D0963C1BDF538290156686
-Out = 79031361A2E423A7C4D1613C3873C0A0
-
-Key = 00000000000000000000000000000000
-In = 79031361A2E423A7C4D1613C3873C0A0
-Out = DD66BC447E835A9F426D0A2267850461
-
-Key = 00000000000000000000000000000000
-In = DD66BC447E835A9F426D0A2267850461
-Out = 4294DCCF31F54E693179449F25B514CC
-
-Key = 00000000000000000000000000000000
-In = 4294DCCF31F54E693179449F25B514CC
-Out = 0A402C1A0F2EB568EDB7252AFDA4192B
-
-Key = 00000000000000000000000000000000
-In = 0A402C1A0F2EB568EDB7252AFDA4192B
-Out = FFACF106A37C74D17009E2566E611BE0
-
-Key = 00000000000000000000000000000000
-In = FFACF106A37C74D17009E2566E611BE0
-Out = 99E058DA9540E6B5C5A869CB9204010B
-
-Key = 00000000000000000000000000000000
-In = 99E058DA9540E6B5C5A869CB9204010B
-Out = 8D616AB19B75842DC5EF102CE4BB2A51
-
-Key = 00000000000000000000000000000000
-In = 8D616AB19B75842DC5EF102CE4BB2A51
-Out = 06C7C640672895C3CCFD52DB2CD9D51B
-
-Key = 00000000000000000000000000000000
-In = 06C7C640672895C3CCFD52DB2CD9D51B
-Out = EB2B67E27ABCB5C06DA3D3EECEC8A25B
-
-Key = 00000000000000000000000000000000
-In = EB2B67E27ABCB5C06DA3D3EECEC8A25B
-Out = 62EC35DC05A0BA40FE5D33A0B974C152
-
-Key = 00000000000000000000000000000000
-In = 62EC35DC05A0BA40FE5D33A0B974C152
-Out = A4CB55D7881ACC44F868C8BCFE098091
-
-Key = 00000000000000000000000000000000
-In = A4CB55D7881ACC44F868C8BCFE098091
-Out = 5CEE73CEBCAA22DF78C8C9FB8A47E5D3
-
-Key = 00000000000000000000000000000000
-In = 5CEE73CEBCAA22DF78C8C9FB8A47E5D3
-Out = 62FCD19C3AC4370A4CC58AA619B0EA2F
-
-Key = 00000000000000000000000000000000
-In = 62FCD19C3AC4370A4CC58AA619B0EA2F
-Out = 3583E618DAC3CE4347FD0E8AE6D6F5E9
-
-Key = 00000000000000000000000000000000
-In = 3583E618DAC3CE4347FD0E8AE6D6F5E9
-Out = 2B307B42E0B9EF2D2EC3EEA07D339A87
-
-Key = 00000000000000000000000000000000
-In = 2B307B42E0B9EF2D2EC3EEA07D339A87
-Out = 29A212AF4220054975D7C2AE9242AFA8
-
-Key = 00000000000000000000000000000000
-In = 29A212AF4220054975D7C2AE9242AFA8
-Out = 67D5BD878FF66CDB33A4DD07EB634F91
-
-Key = 00000000000000000000000000000000
-In = 67D5BD878FF66CDB33A4DD07EB634F91
-Out = 53944CA7C3BBBBE32C9BA9D8A8B765D6
-
-Key = 00000000000000000000000000000000
-In = 53944CA7C3BBBBE32C9BA9D8A8B765D6
-Out = 9213B43D06D0AB7ECCC5CA751C5DBAA8
-
-Key = 000000000000000000000000000000000000000000000000
-In = AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-Out = 97778747D60E425C2B4202599DB856FB
-
-Key = 000000000000000000000000000000000000000000000000
-In = 97778747D60E425C2B4202599DB856FB
-Out = 885C6C280610DA436936E3C5AEEB9512
-
-Key = 000000000000000000000000000000000000000000000000
-In = 885C6C280610DA436936E3C5AEEB9512
-Out = 749935A9971B7060043018F95329A530
-
-Key = 000000000000000000000000000000000000000000000000
-In = 749935A9971B7060043018F95329A530
-Out = 05F0D089DE79801B3BE3D3D1361628DD
-
-Key = 000000000000000000000000000000000000000000000000
-In = 05F0D089DE79801B3BE3D3D1361628DD
-Out = 35F8044736D1FF4142460E4E72610700
-
-Key = 000000000000000000000000000000000000000000000000
-In = 35F8044736D1FF4142460E4E72610700
-Out = B7028947854FE0C670E1E7416C2803DC
-
-Key = 000000000000000000000000000000000000000000000000
-In = B7028947854FE0C670E1E7416C2803DC
-Out = D4F8A703F24F7E0AC5807EADADCA8CC9
-
-Key = 000000000000000000000000000000000000000000000000
-In = D4F8A703F24F7E0AC5807EADADCA8CC9
-Out = 77F1D30164CD2984C52ACEC02CAE2CD9
-
-Key = 000000000000000000000000000000000000000000000000
-In = 77F1D30164CD2984C52ACEC02CAE2CD9
-Out = CE509EEFF43FB5C22A9756B023573775
-
-Key = 000000000000000000000000000000000000000000000000
-In = CE509EEFF43FB5C22A9756B023573775
-Out = B9D5ACCA79E9719979DA1E657C391F07
-
-Key = 000000000000000000000000000000000000000000000000
-In = B9D5ACCA79E9719979DA1E657C391F07
-Out = 9E3B2E46FC6E2D71D46AF0D5CF36B456
-
-Key = 000000000000000000000000000000000000000000000000
-In = 9E3B2E46FC6E2D71D46AF0D5CF36B456
-Out = D8104637E81C52CCEFB0AFE87F4BAF85
-
-Key = 000000000000000000000000000000000000000000000000
-In = D8104637E81C52CCEFB0AFE87F4BAF85
-Out = C7F9AF5B41E9EB5387DB1D122E483F0E
-
-Key = 000000000000000000000000000000000000000000000000
-In = C7F9AF5B41E9EB5387DB1D122E483F0E
-Out = D7ACF96A441BB267B591FBCEECB0494F
-
-Key = 000000000000000000000000000000000000000000000000
-In = D7ACF96A441BB267B591FBCEECB0494F
-Out = DA2234B06D83F32064A78AD3C5303D73
-
-Key = 000000000000000000000000000000000000000000000000
-In = DA2234B06D83F32064A78AD3C5303D73
-Out = 70EF6DCDD349CD7F1D1A0EB3CB18C8C7
-
-Key = 000000000000000000000000000000000000000000000000
-In = 70EF6DCDD349CD7F1D1A0EB3CB18C8C7
-Out = DA093FB2C0F00258D8D9F216C91C0C9C
-
-Key = 000000000000000000000000000000000000000000000000
-In = DA093FB2C0F00258D8D9F216C91C0C9C
-Out = 26EAEEAE8FBE4835E5C43CBF3249CBB6
-
-Key = 000000000000000000000000000000000000000000000000
-In = 26EAEEAE8FBE4835E5C43CBF3249CBB6
-Out = 35692A1CC8E9FBB99DEE2AD149EE7F33
-
-Key = 000000000000000000000000000000000000000000000000
-In = 35692A1CC8E9FBB99DEE2AD149EE7F33
-Out = 6929CAD6052F809A2850D7E754C11C8D
-
-Key = 000000000000000000000000000000000000000000000000
-In = 6929CAD6052F809A2850D7E754C11C8D
-Out = 5F4E499D26ED1D290D9A187FB7B7FB14
-
-Key = 000000000000000000000000000000000000000000000000
-In = 5F4E499D26ED1D290D9A187FB7B7FB14
-Out = BC5B30B2BAE077710A9DF5686794965F
-
-Key = 000000000000000000000000000000000000000000000000
-In = BC5B30B2BAE077710A9DF5686794965F
-Out = 41661F98160A6556815A15B1C1C2E080
-
-Key = 000000000000000000000000000000000000000000000000
-In = 41661F98160A6556815A15B1C1C2E080
-Out = EC2E71697E742ABDBB5FE516E50DBAD5
-
-Key = 000000000000000000000000000000000000000000000000
-In = EC2E71697E742ABDBB5FE516E50DBAD5
-Out = CB104FF2203633E97573D308923C7AE9
-
-Key = 000000000000000000000000000000000000000000000000
-In = CB104FF2203633E97573D308923C7AE9
-Out = C47B77D5FAD3535CFAE0BE60B48C741E
-
-Key = 000000000000000000000000000000000000000000000000
-In = C47B77D5FAD3535CFAE0BE60B48C741E
-Out = BCA5C36E33821A60CAF6E2DA72956C5E
-
-Key = 000000000000000000000000000000000000000000000000
-In = BCA5C36E33821A60CAF6E2DA72956C5E
-Out = B780AA350F6EFB3B805E505A2D32249F
-
-Key = 000000000000000000000000000000000000000000000000
-In = B780AA350F6EFB3B805E505A2D32249F
-Out = 8857D872D91FE8937E292C8948C0AF24
-
-Key = 000000000000000000000000000000000000000000000000
-In = 8857D872D91FE8937E292C8948C0AF24
-Out = 4FCF851C845CBD7D7C528F55B8E84662
-
-Key = 000000000000000000000000000000000000000000000000
-In = 4FCF851C845CBD7D7C528F55B8E84662
-Out = BDDEE7D374D810E3658670F46054F99B
-
-Key = 000000000000000000000000000000000000000000000000
-In = BDDEE7D374D810E3658670F46054F99B
-Out = 16A4F2C3A95B296FBB7F8DEC6F70A9D0
-
-Key = 000000000000000000000000000000000000000000000000
-In = 16A4F2C3A95B296FBB7F8DEC6F70A9D0
-Out = 2583F970ED6970C6D0963015D67217B6
-
-Key = 000000000000000000000000000000000000000000000000
-In = 2583F970ED6970C6D0963015D67217B6
-Out = 0E7BB2CDF9CD553709D2BE4E9497D2F3
-
-Key = 000000000000000000000000000000000000000000000000
-In = 0E7BB2CDF9CD553709D2BE4E9497D2F3
-Out = A6D82EE721AAF1BA1BC3EBD8C75ABA9F
-
-Key = 000000000000000000000000000000000000000000000000
-In = A6D82EE721AAF1BA1BC3EBD8C75ABA9F
-Out = C1211304A35315EC827DAE80B3F29BBB
-
-Key = 000000000000000000000000000000000000000000000000
-In = C1211304A35315EC827DAE80B3F29BBB
-Out = 4F0842F2D9EA5CD1AB743A8626DA6BE7
-
-Key = 000000000000000000000000000000000000000000000000
-In = 4F0842F2D9EA5CD1AB743A8626DA6BE7
-Out = BF39E62B863AFFFAD3DEE960962E03AE
-
-Key = 000000000000000000000000000000000000000000000000
-In = BF39E62B863AFFFAD3DEE960962E03AE
-Out = 147C3CB084958D3FBB9D4223D3126BF3
-
-Key = 000000000000000000000000000000000000000000000000
-In = 147C3CB084958D3FBB9D4223D3126BF3
-Out = 6E76BEF9304B115EFC1C9002FBB848A0
-
-Key = 0000000000000000000000000000000000000000000000000000000000000000
-In = 62E45B4CF3477F1DD65063729D9ABA8F
-Out = 0F4B897EA014D21FBC20F1054A42F719
-
-Key = 0000000000000000000000000000000000000000000000000000000000000000
-In = 0F4B897EA014D21FBC20F1054A42F719
-Out = 9A4D42A7F27D42E542286ACF6650CF8A
-
-Key = 0000000000000000000000000000000000000000000000000000000000000000
-In = 9A4D42A7F27D42E542286ACF6650CF8A
-Out = 5E5F71257B5156C075FDC4BCBE996527
-
-Key = 0000000000000000000000000000000000000000000000000000000000000000
-In = 5E5F71257B5156C075FDC4BCBE996527
-Out = 5A8112FB681B184766069A229BC0E1B6
-
-Key = 0000000000000000000000000000000000000000000000000000000000000000
-In = 5A8112FB681B184766069A229BC0E1B6
-Out = 2169853AD199721728B2F41FF6C3F316
-
-Key = 0000000000000000000000000000000000000000000000000000000000000000
-In = 2169853AD199721728B2F41FF6C3F316
-Out = FD3954D96EF5B4078F5C301BAF15A3DE
-
-Key = 0000000000000000000000000000000000000000000000000000000000000000
-In = FD3954D96EF5B4078F5C301BAF15A3DE
-Out = DB1F3D03E0012505E354B2F4D7C7A255
-
-Key = 0000000000000000000000000000000000000000000000000000000000000000
-In = DB1F3D03E0012505E354B2F4D7C7A255
-Out = 375CECE4E897512373B86A82A6A660D5
-
-Key = 0000000000000000000000000000000000000000000000000000000000000000
-In = 375CECE4E897512373B86A82A6A660D5
-Out = 4CDA1DDDD8849D47609D7D9803FD67D6
-
-Key = 0000000000000000000000000000000000000000000000000000000000000000
-In = 4CDA1DDDD8849D47609D7D9803FD67D6
-Out = 20A6C90C54A118487C173AE3166EF219
-
-Key = 0000000000000000000000000000000000000000000000000000000000000000
-In = 20A6C90C54A118487C173AE3166EF219
-Out = F4A0164DFC1F38E967F3DDE74B7B0CAD
-
-Key = 0000000000000000000000000000000000000000000000000000000000000000
-In = F4A0164DFC1F38E967F3DDE74B7B0CAD
-Out = 638D1B47820C0FD0A1BFA5FB05AE9087
-
-Key = 0000000000000000000000000000000000000000000000000000000000000000
-In = 638D1B47820C0FD0A1BFA5FB05AE9087
-Out = CDE141CD9E784912B6BEFD62003FE253
-
-Key = 0000000000000000000000000000000000000000000000000000000000000000
-In = CDE141CD9E784912B6BEFD62003FE253
-Out = 84276E8EB17CB38307F3ACFE9480A771
-
-Key = 0000000000000000000000000000000000000000000000000000000000000000
-In = 84276E8EB17CB38307F3ACFE9480A771
-Out = 27BA4090E1929A7E65D0C5078039A677
-
-Key = 0000000000000000000000000000000000000000000000000000000000000000
-In = 27BA4090E1929A7E65D0C5078039A677
-Out = 264E4F150552D0D5F81583635189EED1
-
-Key = 0000000000000000000000000000000000000000000000000000000000000000
-In = 264E4F150552D0D5F81583635189EED1
-Out = F052005B58BE2C8981575BA5C31D812C
-
-Key = 0000000000000000000000000000000000000000000000000000000000000000
-In = F052005B58BE2C8981575BA5C31D812C
-Out = 807E73C57A18CA88CA0F58C2FFD06394
-
-Key = 0000000000000000000000000000000000000000000000000000000000000000
-In = 807E73C57A18CA88CA0F58C2FFD06394
-Out = C317C6C0411947887DFCE0A9B2270B5F
-
-Key = 0000000000000000000000000000000000000000000000000000000000000000
-In = C317C6C0411947887DFCE0A9B2270B5F
-Out = 8ACD4164453A4C1C0DACBC8C2ED0896C
-
-Key = 0000000000000000000000000000000000000000000000000000000000000000
-In = 8ACD4164453A4C1C0DACBC8C2ED0896C
-Out = 2BA5D280D05FBAF78A8B55BF5FD8D343
-
-Key = 0000000000000000000000000000000000000000000000000000000000000000
-In = 2BA5D280D05FBAF78A8B55BF5FD8D343
-Out = DDF70B8350ED845F6D875B0C85961D39
-
-Key = 0000000000000000000000000000000000000000000000000000000000000000
-In = DDF70B8350ED845F6D875B0C85961D39
-Out = 039FD445F0A6D65698D5146D498C8BDB
-
-Key = 0000000000000000000000000000000000000000000000000000000000000000
-In = 039FD445F0A6D65698D5146D498C8BDB
-Out = 22AE4D552D09558DEEEFC9518C01F4E2
-
-Key = 0000000000000000000000000000000000000000000000000000000000000000
-In = 22AE4D552D09558DEEEFC9518C01F4E2
-Out = D5947EA67A7BD88DA577A28254EE44EF
-
-Key = 0000000000000000000000000000000000000000000000000000000000000000
-In = D5947EA67A7BD88DA577A28254EE44EF
-Out = 22698C92691EE76CAD72880F577EFEC3
-
-Key = 0000000000000000000000000000000000000000000000000000000000000000
-In = 22698C92691EE76CAD72880F577EFEC3
-Out = 10ECA6E5E499742DDEC48434B767EBA1
-
-Key = 0000000000000000000000000000000000000000000000000000000000000000
-In = 10ECA6E5E499742DDEC48434B767EBA1
-Out = 3D97E93A44C2CB1CE9AF5770A4BD1A34
-
-Key = 0000000000000000000000000000000000000000000000000000000000000000
-In = 3D97E93A44C2CB1CE9AF5770A4BD1A34
-Out = F89C438D5311FC8235C632629CE1F3A0
-
-Key = 0000000000000000000000000000000000000000000000000000000000000000
-In = F89C438D5311FC8235C632629CE1F3A0
-Out = 4114C623ADF6DB0958FFA2DC27A2A828
-
-Key = 0000000000000000000000000000000000000000000000000000000000000000
-In = 4114C623ADF6DB0958FFA2DC27A2A828
-Out = 980089430C89563A5510DF5196E07040
-
-Key = 0000000000000000000000000000000000000000000000000000000000000000
-In = 980089430C89563A5510DF5196E07040
-Out = 1D1FEFBD55AA23487CD2DEC4D370302D
-
-Key = 0000000000000000000000000000000000000000000000000000000000000000
-In = 1D1FEFBD55AA23487CD2DEC4D370302D
-Out = 73A8AAE732EF445F3462353181168B23
-
-Key = 0000000000000000000000000000000000000000000000000000000000000000
-In = 73A8AAE732EF445F3462353181168B23
-Out = 1D8116306AF7D70FE419226F35251687
-
-Key = 0000000000000000000000000000000000000000000000000000000000000000
-In = 1D8116306AF7D70FE419226F35251687
-Out = 84EFA8A595B06C91A5A083440DAF5B50
-
-Key = 0000000000000000000000000000000000000000000000000000000000000000
-In = 84EFA8A595B06C91A5A083440DAF5B50
-Out = 630EECD4A8A957A610765E01A1D07C45
-
-Key = 0000000000000000000000000000000000000000000000000000000000000000
-In = 630EECD4A8A957A610765E01A1D07C45
-Out = 825A47AD6FCE09FEDB5D8F07DE6A2707
-
-Key = 0000000000000000000000000000000000000000000000000000000000000000
-In = 825A47AD6FCE09FEDB5D8F07DE6A2707
-Out = 0C472D25510DD0592B5130FB4272DECA
-
-Key = 0000000000000000000000000000000000000000000000000000000000000000
-In = 0C472D25510DD0592B5130FB4272DECA
-Out = 3DA22A91B605A540E474383672C8D06C
-
-Key = 0000000000000000000000000000000000000000000000000000000000000000
-In = 3DA22A91B605A540E474383672C8D06C
-Out = 9A1C14309E4B246C9E7B485A7F41D046
-
-Key = 80000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = B3E2AD5608AC1B6733A7CB4FDF8F9952
-
-Key = 40000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = 8655D5CCAF76A3A8AA09841F04689465
-
-Key = 20000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = F611F21A70C0AB5FB3D52AD5E8196E09
-
-Key = 10000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = 6676D02EAE3EE58FA396BE40A3A6A234
-
-Key = 08000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = 786E147E5D66764A16DFE1DCB10F3F13
-
-Key = 04000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = FDDBC84DA51496AD1CA2B7013B93FFA8
-
-Key = 02000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = B5A0BB3A8E7FEAC192B7BF8080E2CC81
-
-Key = 01000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = 9A4802E8BF4426467617E9A44072EB76
-
-Key = 00800000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = BE279F4EE696EC5B07820A1066F110CD
-
-Key = 00400000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = 4BBB919E52C258960549FAE9DD5FF524
-
-Key = 00200000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = 6B077B5DE4C9961DC6E11053662E3CFB
-
-Key = 00100000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = 755358499858F166C9DEAF2E79B3EDA3
-
-Key = 00080000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = 632644AA2ACB4FB3214E9E5BFF57D4D8
-
-Key = 00040000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = DD3F06DD5A90BD7EA3F4B1BFB56E4ABB
-
-Key = 00020000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = B2FB07551FD5B549C857020356B99D45
-
-Key = 00010000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = 5DE9EF4627A3EB6FD3920C322ECE9FAB
-
-Key = 00008000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = A8D37D0254E1C908AAD02631B614A0C6
-
-Key = 00004000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = 91372C769C1E64DE0FDDC1C63436B623
-
-Key = 00002000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = 4F8FF5063FFF638497733E1526EE27BD
-
-Key = 00001000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = 5157ECB5597AC6A8D761E97517C65C0F
-
-Key = 00000800000000000000000000000000
-In = 00000000000000000000000000000000
-Out = 117B9349CFFD2066452CC0FE204C18A5
-
-Key = 00000400000000000000000000000000
-In = 00000000000000000000000000000000
-Out = AE0AF51926529A3F354F7585578F6439
-
-Key = 00000200000000000000000000000000
-In = 00000000000000000000000000000000
-Out = B2723B8D2D61497DBF44FF9D70E48C0E
-
-Key = 00000100000000000000000000000000
-In = 00000000000000000000000000000000
-Out = 464B3EB2A0F8A394DA239E0D0D62EDE2
-
-Key = 00000080000000000000000000000000
-In = 00000000000000000000000000000000
-Out = AA03D30E1CE0E91DC360B1E538017F05
-
-Key = 00000040000000000000000000000000
-In = 00000000000000000000000000000000
-Out = B1EDF5E18160BF8E16F386D999BF65BE
-
-Key = 00000020000000000000000000000000
-In = 00000000000000000000000000000000
-Out = 85F1BDD358B23675328841103F1DCE65
-
-Key = 00000010000000000000000000000000
-In = 00000000000000000000000000000000
-Out = 38DEA42C35E5758C7C5CCF451936DFCB
-
-Key = 00000008000000000000000000000000
-In = 00000000000000000000000000000000
-Out = E484E7CB2D35D5AE92939B06864A0E6B
-
-Key = 00000004000000000000000000000000
-In = 00000000000000000000000000000000
-Out = 53B7E22F63F4D8AAC66D148619A7691D
-
-Key = 00000002000000000000000000000000
-In = 00000000000000000000000000000000
-Out = 0042A8EDB756329533D82ED13386E648
-
-Key = 00000001000000000000000000000000
-In = 00000000000000000000000000000000
-Out = 44BBDB223AFCC69EB69C5D07AF10E5D8
-
-Key = 00000000800000000000000000000000
-In = 00000000000000000000000000000000
-Out = C5B1739AF4C0AE459BF11144132D0979
-
-Key = 00000000400000000000000000000000
-In = 00000000000000000000000000000000
-Out = 151BBFAECB027BAB90C8DA3E4743F033
-
-Key = 00000000200000000000000000000000
-In = 00000000000000000000000000000000
-Out = 376786816F319B96A19B134143952FE5
-
-Key = 00000000100000000000000000000000
-In = 00000000000000000000000000000000
-Out = 3E94AC897203461EFD9EED441F66AE9F
-
-Key = 00000000080000000000000000000000
-In = 00000000000000000000000000000000
-Out = 61A93766162F0B01EDC84D47B1D4ECAA
-
-Key = 00000000040000000000000000000000
-In = 00000000000000000000000000000000
-Out = B21FA9D0AC731750F15B47FFF2BC4030
-
-Key = 00000000020000000000000000000000
-In = 00000000000000000000000000000000
-Out = BDE8813E0E4EAE6CECCBC4C6BD10C610
-
-Key = 00000000010000000000000000000000
-In = 00000000000000000000000000000000
-Out = 50A5AE30DC3432F3060EE3628B274FFB
-
-Key = 00000000008000000000000000000000
-In = 00000000000000000000000000000000
-Out = E3DA95B76AD9E29F0B3F14DD33C670AC
-
-Key = 00000000004000000000000000000000
-In = 00000000000000000000000000000000
-Out = 969DC8A583DED13E53042450FA4BE8FA
-
-Key = 00000000002000000000000000000000
-In = 00000000000000000000000000000000
-Out = D7CB0D2F9BFF048CBD8CBD8452361611
-
-Key = 00000000001000000000000000000000
-In = 00000000000000000000000000000000
-Out = E056677749114108153C6AC262EC0396
-
-Key = 00000000000800000000000000000000
-In = 00000000000000000000000000000000
-Out = E5572F1812044977D4309B8D675CAE48
-
-Key = 00000000000400000000000000000000
-In = 00000000000000000000000000000000
-Out = F00C1AB95B5CE3D3ACC2162E7A7F0262
-
-Key = 00000000000200000000000000000000
-In = 00000000000000000000000000000000
-Out = AB33C3682E0C1BFA627F4932AE4AAD94
-
-Key = 00000000000100000000000000000000
-In = 00000000000000000000000000000000
-Out = EE5B68820CB978CAACA22B1D590E31CF
-
-Key = 00000000000080000000000000000000
-In = 00000000000000000000000000000000
-Out = 8ACACFB9E872873E315D84657613756B
-
-Key = 00000000000040000000000000000000
-In = 00000000000000000000000000000000
-Out = 75CD1E528E5B6DB21BC8E44E70E5ECFA
-
-Key = 00000000000020000000000000000000
-In = 00000000000000000000000000000000
-Out = 3195CE6F460654E6FC00672755A5B7C3
-
-Key = 00000000000010000000000000000000
-In = 00000000000000000000000000000000
-Out = 8ACC17F3EDF59AA02DBBA93F27AD11D0
-
-Key = 00000000000008000000000000000000
-In = 00000000000000000000000000000000
-Out = DD82C41281BE711F7E5DCDCDC6CBBF6F
-
-Key = 00000000000004000000000000000000
-In = 00000000000000000000000000000000
-Out = 971ABFC0649C9ABE7DE583799F31DD9D
-
-Key = 00000000000002000000000000000000
-In = 00000000000000000000000000000000
-Out = 9CD8E45DE9909A8146956F2B581AE664
-
-Key = 00000000000001000000000000000000
-In = 00000000000000000000000000000000
-Out = 095314A316B4DB9CE6F2CDDEC59ECE89
-
-Key = 00000000000000800000000000000000
-In = 00000000000000000000000000000000
-Out = B626E1C40D644E2E72370CA4A3528576
-
-Key = 00000000000000400000000000000000
-In = 00000000000000000000000000000000
-Out = 002E4294BD6DDE3E3BFFB0CF5A5A7D4B
-
-Key = 00000000000000200000000000000000
-In = 00000000000000000000000000000000
-Out = DA89C327F041BEBDB09E835ED2A2DDBE
-
-Key = 00000000000000100000000000000000
-In = 00000000000000000000000000000000
-Out = 9BC999880C14C9358CA89C435B1FDB00
-
-Key = 00000000000000080000000000000000
-In = 00000000000000000000000000000000
-Out = D0C92CFF98EB228C6C19B405E6EFEE77
-
-Key = 00000000000000040000000000000000
-In = 00000000000000000000000000000000
-Out = FAE5C83332BB176704F0E73B27442C0C
-
-Key = 00000000000000020000000000000000
-In = 00000000000000000000000000000000
-Out = DC9FB83F80E56CAF1DB807B5921927E8
-
-Key = 00000000000000010000000000000000
-In = 00000000000000000000000000000000
-Out = 6FBB39934CC2627EE4F93343F50EB9D4
-
-Key = 00000000000000008000000000000000
-In = 00000000000000000000000000000000
-Out = 02A31EDEF8DEA2DE3307748BF4DC1C54
-
-Key = 00000000000000004000000000000000
-In = 00000000000000000000000000000000
-Out = 8C433C3D2005B30996ADA41F896436AC
-
-Key = 00000000000000002000000000000000
-In = 00000000000000000000000000000000
-Out = ED04C68D4D73C6EE193E0FC9E2CBD1B0
-
-Key = 00000000000000001000000000000000
-In = 00000000000000000000000000000000
-Out = 515E01A6F25A4F1B2B57B27DECBFF195
-
-Key = 00000000000000000800000000000000
-In = 00000000000000000000000000000000
-Out = 30A07996E5C40C41786FC75B9C56325B
-
-Key = 00000000000000000400000000000000
-In = 00000000000000000000000000000000
-Out = 279C94707B0732D210DA7B619158825A
-
-Key = 00000000000000000200000000000000
-In = 00000000000000000000000000000000
-Out = 07552A95AC44BB11CD34428C858FD19F
-
-Key = 00000000000000000100000000000000
-In = 00000000000000000000000000000000
-Out = BA67FC2E51DA92EA19079B237B42C9D8
-
-Key = 00000000000000000080000000000000
-In = 00000000000000000000000000000000
-Out = 40387C974070B484E0DBAAFD5ADA0243
-
-Key = 00000000000000000040000000000000
-In = 00000000000000000000000000000000
-Out = 3BF99A29B17D84BE5F8DC315616061F8
-
-Key = 00000000000000000020000000000000
-In = 00000000000000000000000000000000
-Out = D4EF00C794D337961FD9E3B5AF7A67A5
-
-Key = 00000000000000000010000000000000
-In = 00000000000000000000000000000000
-Out = 1C77C28A6CBF3CBB24F2686ED3A408E2
-
-Key = 00000000000000000008000000000000
-In = 00000000000000000000000000000000
-Out = F93568CD7CBA7A6E9B9DD7144F1D4ABB
-
-Key = 00000000000000000004000000000000
-In = 00000000000000000000000000000000
-Out = C3BCD1F7F268E2806CCF0498C85D2E3E
-
-Key = 00000000000000000002000000000000
-In = 00000000000000000000000000000000
-Out = 2FD2F0DEB5DBF7EB3B9050042E56A9A9
-
-Key = 00000000000000000001000000000000
-In = 00000000000000000000000000000000
-Out = 2150DEB8C7C6327227A772031FF64047
-
-Key = 00000000000000000000800000000000
-In = 00000000000000000000000000000000
-Out = 3E8B4B1CBB877B6F612BFB391043CFC3
-
-Key = 00000000000000000000400000000000
-In = 00000000000000000000000000000000
-Out = 2376F56DFEB40C9348D758CA068C2127
-
-Key = 00000000000000000000200000000000
-In = 00000000000000000000000000000000
-Out = AABB351CA9BDCDACCD8E966766FF1C59
-
-Key = 00000000000000000000100000000000
-In = 00000000000000000000000000000000
-Out = 212EF966B6CEECC65B5B0AE6A9DAA099
-
-Key = 00000000000000000000080000000000
-In = 00000000000000000000000000000000
-Out = 99C95AC67935AE473E2EF3907DDCE5B3
-
-Key = 00000000000000000000040000000000
-In = 00000000000000000000000000000000
-Out = 125DC68286DB1F81E6CD3D0C9EF8B922
-
-Key = 00000000000000000000020000000000
-In = 00000000000000000000000000000000
-Out = CC55D94C0102A12D87454DB8BA8E654C
-
-Key = 00000000000000000000010000000000
-In = 00000000000000000000000000000000
-Out = 3F1E089ACAD719F7DB9292A770038475
-
-Key = 00000000000000000000008000000000
-In = 00000000000000000000000000000000
-Out = EC4D155D404F72B4BE88D1E17C345822
-
-Key = 00000000000000000000004000000000
-In = 00000000000000000000000000000000
-Out = 276F8AECA95C7F65CD95B77680955548
-
-Key = 00000000000000000000002000000000
-In = 00000000000000000000000000000000
-Out = 7D78CE850C26BB18B8631CDFF0A5E597
-
-Key = 00000000000000000000001000000000
-In = 00000000000000000000000000000000
-Out = 6345692D62E879A058F342D5226A036D
-
-Key = 00000000000000000000000800000000
-In = 00000000000000000000000000000000
-Out = E19D5A2899061B7B5537EA6DF0390FE8
-
-Key = 00000000000000000000000400000000
-In = 00000000000000000000000000000000
-Out = 4FAB8BB80E979853052BA0B19EF8521D
-
-Key = 00000000000000000000000200000000
-In = 00000000000000000000000000000000
-Out = E84EE11321AF1C0AE6430C4F600270B4
-
-Key = 00000000000000000000000100000000
-In = 00000000000000000000000000000000
-Out = 73048F29C44F0953DFCC6B5380D36977
-
-Key = 00000000000000000000000080000000
-In = 00000000000000000000000000000000
-Out = 16280B84B187AE90E25121AB297620FA
-
-Key = 00000000000000000000000040000000
-In = 00000000000000000000000000000000
-Out = FAAE881E9FA9DCA876B668CCAFA12B6A
-
-Key = 00000000000000000000000020000000
-In = 00000000000000000000000000000000
-Out = 46A73C4A4516E1E0BE2140E175A7225F
-
-Key = 00000000000000000000000010000000
-In = 00000000000000000000000000000000
-Out = 01C71A7B0BD6410894C9234A4250ABB4
-
-Key = 00000000000000000000000008000000
-In = 00000000000000000000000000000000
-Out = EA8CEF3C1E8EF94D4A17A4D4C1C28C32
-
-Key = 00000000000000000000000004000000
-In = 00000000000000000000000000000000
-Out = 13BB356657B36C0D023047B324443468
-
-Key = 00000000000000000000000002000000
-In = 00000000000000000000000000000000
-Out = B14DCC5250036260131B3D92B1B26C18
-
-Key = 00000000000000000000000001000000
-In = 00000000000000000000000000000000
-Out = 261E07BADC6E4BBB0EAD9ECCAE179821
-
-Key = 00000000000000000000000000800000
-In = 00000000000000000000000000000000
-Out = 1D40D508EB8878251EC5C01D8E9949BB
-
-Key = 00000000000000000000000000400000
-In = 00000000000000000000000000000000
-Out = 735BDCA8DF0C58679161E99BED3B8D3E
-
-Key = 00000000000000000000000000200000
-In = 00000000000000000000000000000000
-Out = 49C907F757494623F8E8519F4A5D13A0
-
-Key = 00000000000000000000000000100000
-In = 00000000000000000000000000000000
-Out = AB858C224E5A3ADDF5A7549A98EEAF94
-
-Key = 00000000000000000000000000080000
-In = 00000000000000000000000000000000
-Out = 7C7A62A1DBF206572A323682E0441458
-
-Key = 00000000000000000000000000040000
-In = 00000000000000000000000000000000
-Out = 7461D6F4D609F8BCA9CAB4EB559C71C3
-
-Key = 00000000000000000000000000020000
-In = 00000000000000000000000000000000
-Out = 2F646495150F4F9CA06B77281C1150FD
-
-Key = 00000000000000000000000000010000
-In = 00000000000000000000000000000000
-Out = A0C27498F797D6A9F513640AFE6CC316
-
-Key = 00000000000000000000000000008000
-In = 00000000000000000000000000000000
-Out = 8D511A840453125335AB8DF8C64FA8E8
-
-Key = 00000000000000000000000000004000
-In = 00000000000000000000000000000000
-Out = 9E64465740D81CCB74713A144F636985
-
-Key = 00000000000000000000000000002000
-In = 00000000000000000000000000000000
-Out = 804499E6C6E8790988747009D3B3C66D
-
-Key = 00000000000000000000000000001000
-In = 00000000000000000000000000000000
-Out = 59EBC223BAC60B13198C9AF47066274E
-
-Key = 00000000000000000000000000000800
-In = 00000000000000000000000000000000
-Out = CCA216CC095954AFD3DE594C91A26310
-
-Key = 00000000000000000000000000000400
-In = 00000000000000000000000000000000
-Out = 06FF525F42EFF20A548DA1B7DCD1FFF8
-
-Key = 00000000000000000000000000000200
-In = 00000000000000000000000000000000
-Out = B2F1FD473FCA588111E6EB9DCE82CFA9
-
-Key = 00000000000000000000000000000100
-In = 00000000000000000000000000000000
-Out = 557307573D2E5225AD6EDADDF1FCAB68
-
-Key = 00000000000000000000000000000080
-In = 00000000000000000000000000000000
-Out = CA159F81D155071BDCA701174C69184D
-
-Key = 00000000000000000000000000000040
-In = 00000000000000000000000000000000
-Out = 41491AE31AB75E3ACA41B1A2CB75C1D9
-
-Key = 00000000000000000000000000000020
-In = 00000000000000000000000000000000
-Out = C3B4B9419C0E19D4A851C2DAD2954268
-
-Key = 00000000000000000000000000000010
-In = 00000000000000000000000000000000
-Out = 6E3DD6DF183B80A0FF5D2D0A4B25A2C8
-
-Key = 00000000000000000000000000000008
-In = 00000000000000000000000000000000
-Out = EC69E1BD0815AE6C83876B75E58A7EB6
-
-Key = 00000000000000000000000000000004
-In = 00000000000000000000000000000000
-Out = 8F5766DE11517F63A60459B1EDC32D44
-
-Key = 00000000000000000000000000000002
-In = 00000000000000000000000000000000
-Out = 8A74C64985345925D8A6AB8E6A0D3589
-
-Key = 00000000000000000000000000000001
-In = 00000000000000000000000000000000
-Out = F65B8E5EAF04B33AD5FCF1B14874E059
-
-Key = 800000000000000000000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = FD04E0B77403BBDC72A370240B45B92D
-
-Key = 400000000000000000000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = CB0B4AC08E20385D31CF468B52B356E2
-
-Key = 200000000000000000000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = C39B63B4A8F7BF5C3CC61141584DE462
-
-Key = 100000000000000000000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = C63F433FF98BEE849D75D0F0402C9273
-
-Key = 080000000000000000000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = 9433992C094CDBEC06199B0517970B5D
-
-Key = 040000000000000000000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = FA8B068AD3C2C32F99EF1A4F76C409AF
-
-Key = 020000000000000000000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = 014617D6109068C39137EE0CC522163E
-
-Key = 010000000000000000000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = 41B87685C649AD72C32D9390C23CF34B
-
-Key = 008000000000000000000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = 6836281F31AA9120DC144E26074491EC
-
-Key = 004000000000000000000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = C4163CB0CA1315C3D0115D495E0FF701
-
-Key = 002000000000000000000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = F0B8F3585636D2785FF619523C4365B9
-
-Key = 001000000000000000000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = 6E1740E818B450955C6B7612DBBA0DAE
-
-Key = 000800000000000000000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = 192A2FAAC85794EB20E43645E2E1B749
-
-Key = 000400000000000000000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = 5CA4011E7024A4978B58E1DFA9278625
-
-Key = 000200000000000000000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = 498152C714A2CEFD692AC99DB90CDDBD
-
-Key = 000100000000000000000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = DEB3A9FEB22886C511A057AB858BB4DD
-
-Key = 000080000000000000000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = D60466B1EA5C1C7A5DDFDA049A685B50
-
-Key = 000040000000000000000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = 62A0EE49A6333815350E9C9CD7CB24D2
-
-Key = 000020000000000000000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = 3AE70846AFDCC299B32EB9DE118070B8
-
-Key = 000010000000000000000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = 5118414720E424364E15B5EDC8E64559
-
-Key = 000008000000000000000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = 42F9E38F7FB493D6048C63F804F5AD62
-
-Key = 000004000000000000000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = 71043DAA3CF78997D9965DE84B150FA6
-
-Key = 000002000000000000000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = 55B0DF5816DD16D2EB5CDDC5478D0652
-
-Key = 000001000000000000000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = CA853E905496251FF856259149FB5CCA
-
-Key = 000000800000000000000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = BEF7C892708F0369378EA80C0EB9DD4A
-
-Key = 000000400000000000000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = 3E7D986D91BEE75E597999C3E7372F06
-
-Key = 000000200000000000000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = 8877D8DAF98680C7EC03C870BAFB66F9
-
-Key = 000000100000000000000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = 493B8E5D02D01A6C98DDF4D016F4932D
-
-Key = 000000080000000000000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = E372455C9A44DCD5AEA803A276B2C5C3
-
-Key = 000000040000000000000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = 92FCA63F71BCD0C950231E104D833246
-
-Key = 000000020000000000000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = 1630F75A2F31B1998725D849CC2ADA9A
-
-Key = 000000010000000000000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = E3B636FC5BE0F05A036AEDF4DE7154BD
-
-Key = 000000008000000000000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = DBC8BD2D128A11715152306E19C9D1F9
-
-Key = 000000004000000000000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = AEFB45876EE3B0025A2D26A7A20E2A72
-
-Key = 000000002000000000000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = C7F1370CD98539026B8FD0968F7A8247
-
-Key = 000000001000000000000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = 6D09CC037CDFD06ECAC142630A599C4F
-
-Key = 000000000800000000000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = 94C29805153DB7FE4834BD261F0CA87E
-
-Key = 000000000400000000000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = B509BAF1EAB92764F8085764968CD111
-
-Key = 000000000200000000000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = E6ECD9CCAF93F302250A90E3C083C22E
-
-Key = 000000000100000000000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = 1419D2C7A7A8F7AB5D78B327770EE8F7
-
-Key = 000000000080000000000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = 984FA23C883200CFA802FCBF1DE752A2
-
-Key = 000000000040000000000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = 003BFBA6334DEDFF7A3652DFDC73D04A
-
-Key = 000000000020000000000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = B21EC3CCD1303B81744348C64B5E5984
-
-Key = 000000000010000000000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = 58557001247E8AFE91399042E723751B
-
-Key = 000000000008000000000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = 0EF33C5A09600898D9FFE6AF5A06C2B6
-
-Key = 000000000004000000000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = AA0E866FEE8227BF6A8FDA4B318920AB
-
-Key = 000000000002000000000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = 839A0DA3DB2718EEBB917B4CE37D23BF
-
-Key = 000000000001000000000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = BA3292A8130B2708EEBC5B2478B52C17
-
-Key = 000000000000800000000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = 49B2A8F2FC9639B5918176993D96646A
-
-Key = 000000000000400000000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = 21967CDE8F85ED1600F359F376CD18CA
-
-Key = 000000000000200000000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = 6CCA94D43AB4B3A82FA4E514D928E644
-
-Key = 000000000000100000000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = 3C76EAC404CF1E23B0A159C919A60206
-
-Key = 000000000000080000000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = F9DE0E78E8CC16D3A99D7642DEA13DB0
-
-Key = 000000000000040000000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = 5B74643F1DEA8CA49078E4BF54B856CA
-
-Key = 000000000000020000000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = 0E07FE27FBFAB005FF7EF334C3320736
-
-Key = 000000000000010000000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = 477810CB11FC7E68144960AAD5372A64
-
-Key = 000000000000008000000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = A638D2171A231AFF384C97A7E9EFF6B6
-
-Key = 000000000000004000000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = 9EA186F9AA6BE6D395E92474CCB9CAA3
-
-Key = 000000000000002000000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = 7F6A295094E5512EDEA0B7206B977270
-
-Key = 000000000000001000000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = 2DD07726A9333391A6EB41F4859A1627
-
-Key = 000000000000000800000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = 515847FB17843E42C936A6201DF28563
-
-Key = 000000000000000400000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = 35B29379EABD877B458FC4A4FB532931
-
-Key = 000000000000000200000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = B986149A6E871ACD8E3E1E5F5928C889
-
-Key = 000000000000000100000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = 84D0A488FB56ADB915B553B2EDDBCC41
-
-Key = 000000000000000080000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = 63B2B5A4D51E076D673044C71DC68B02
-
-Key = 000000000000000040000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = F388AD195E35B2892E586B830D728440
-
-Key = 000000000000000020000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = 8FA923E8949678F76205CF4CBE07FF2F
-
-Key = 000000000000000010000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = ACCF2708E75B4CF48E45B641B81C1F41
-
-Key = 000000000000000008000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = 0A7C295579AD4296447B7E56EB719ED3
-
-Key = 000000000000000004000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = 06572AAB88739B2BDEE8E1E9CCA22883
-
-Key = 000000000000000002000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = 2CF0CA3DB58CDC62890D386B07A4145F
-
-Key = 000000000000000001000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = CEFAEB3CEAA5959FAB15E884D46E9F09
-
-Key = 000000000000000000800000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = 57EB477F0573D6C75E45EE8606B5A2B6
-
-Key = 000000000000000000400000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = C55F45149DE0FD18F2588B2B9F54CC22
-
-Key = 000000000000000000200000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = ABCA7BE4CCC597AD8783C24EAB8BF17D
-
-Key = 000000000000000000100000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = 702F3D046E8651BF40D6A5914D8AC8B5
-
-Key = 000000000000000000080000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = 2C6424E1EF097C8FB44138C8A5160AE7
-
-Key = 000000000000000000040000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = 3F0E8296D93C233CBBE22623CCB66A52
-
-Key = 000000000000000000020000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = D828348AFD520F98ED31F0B9FA4C48B1
-
-Key = 000000000000000000010000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = BA7A4AA5F32D16DF08ABAA63E72F8BAD
-
-Key = 000000000000000000008000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = 9211FA0B1161E094BE702157D4CAFC73
-
-Key = 000000000000000000004000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = 1A4D5C52FDDEE81374295341F950055D
-
-Key = 000000000000000000002000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = 9544A653B635734B0FBC84E6C64B1AD5
-
-Key = 000000000000000000001000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = 8B7E7EE1A74570F35183E15D05114BD0
-
-Key = 000000000000000000000800000000000000000000000000
-In = 00000000000000000000000000000000
-Out = 6567CE30F21EE879D60359CEE9AD3EC0
-
-Key = 000000000000000000000400000000000000000000000000
-In = 00000000000000000000000000000000
-Out = E5078C9B9B7572A60822A44150C6A4F4
-
-Key = 000000000000000000000200000000000000000000000000
-In = 00000000000000000000000000000000
-Out = 51DFF3FE97481F08F6D5B66480AEE6D5
-
-Key = 000000000000000000000100000000000000000000000000
-In = 00000000000000000000000000000000
-Out = E84E478B15FB1BCD50E3CA9936FE9E01
-
-Key = 000000000000000000000080000000000000000000000000
-In = 00000000000000000000000000000000
-Out = FC614E54348A78E28ADB5DFB11130ADC
-
-Key = 000000000000000000000040000000000000000000000000
-In = 00000000000000000000000000000000
-Out = 0F872CF9F54CE981ED17E41B23ED616C
-
-Key = 000000000000000000000020000000000000000000000000
-In = 00000000000000000000000000000000
-Out = AFCC9646ED78283BD19092853223F347
-
-Key = 000000000000000000000010000000000000000000000000
-In = 00000000000000000000000000000000
-Out = 35D5A827B175D776F8F90F30F41A1C4B
-
-Key = 000000000000000000000008000000000000000000000000
-In = 00000000000000000000000000000000
-Out = B55980544140E694FCDFCE7C251C121C
-
-Key = 000000000000000000000004000000000000000000000000
-In = 00000000000000000000000000000000
-Out = 244C4A55D5EEC8BD55C4F0D295ED2541
-
-Key = 000000000000000000000002000000000000000000000000
-In = 00000000000000000000000000000000
-Out = B3700314BD37894991C2FD4355B26845
-
-Key = 000000000000000000000001000000000000000000000000
-In = 00000000000000000000000000000000
-Out = 43F3C6FFB517CD6E8EE1AEFCAA6FDE06
-
-Key = 000000000000000000000000800000000000000000000000
-In = 00000000000000000000000000000000
-Out = 0F1A3E34821335E4EC22D404155192C2
-
-Key = 000000000000000000000000400000000000000000000000
-In = 00000000000000000000000000000000
-Out = 22C59B22CC6A1E0EA313346F461324CD
-
-Key = 000000000000000000000000200000000000000000000000
-In = 00000000000000000000000000000000
-Out = 2A90EF00D977A82EBDF6681F33D7DC1C
-
-Key = 000000000000000000000000100000000000000000000000
-In = 00000000000000000000000000000000
-Out = 4B36176A8C174A635BF96A5B46BCF54C
-
-Key = 000000000000000000000000080000000000000000000000
-In = 00000000000000000000000000000000
-Out = E344C5213246712CAA2A056A6EE1868F
-
-Key = 000000000000000000000000040000000000000000000000
-In = 00000000000000000000000000000000
-Out = 8F75D3C2ABBF84F3AA5E1734D6CC76A6
-
-Key = 000000000000000000000000020000000000000000000000
-In = 00000000000000000000000000000000
-Out = 2258F75A5FC2B667DD0B28039CEA784C
-
-Key = 000000000000000000000000010000000000000000000000
-In = 00000000000000000000000000000000
-Out = D74F3EA90D02FC4908FDDCBE5849152E
-
-Key = 000000000000000000000000008000000000000000000000
-In = 00000000000000000000000000000000
-Out = 0DCD8607E57390DD609717338591B205
-
-Key = 000000000000000000000000004000000000000000000000
-In = 00000000000000000000000000000000
-Out = 594419C26F408B721F82ACCAC2DF1D5B
-
-Key = 000000000000000000000000002000000000000000000000
-In = 00000000000000000000000000000000
-Out = 12D0F6A150858F64F0C88061CE592C11
-
-Key = 000000000000000000000000001000000000000000000000
-In = 00000000000000000000000000000000
-Out = 5351E750DE5C9322AFA2885FB83C623B
-
-Key = 000000000000000000000000000800000000000000000000
-In = 00000000000000000000000000000000
-Out = 7C120675A918C2C728149D332A196586
-
-Key = 000000000000000000000000000400000000000000000000
-In = 00000000000000000000000000000000
-Out = CDCA42B4E3ED64C2D37812847D7377CC
-
-Key = 000000000000000000000000000200000000000000000000
-In = 00000000000000000000000000000000
-Out = E4B73F8C0D9A40A67ACB9837CF8006DB
-
-Key = 000000000000000000000000000100000000000000000000
-In = 00000000000000000000000000000000
-Out = A863A13ED52E8BFD6652FEE291837B1D
-
-Key = 000000000000000000000000000080000000000000000000
-In = 00000000000000000000000000000000
-Out = 64F9790C0BBD5C234FFADF0037485BB1
-
-Key = 000000000000000000000000000040000000000000000000
-In = 00000000000000000000000000000000
-Out = 37A8AA3E38B937D92E1E41EC5E157FE0
-
-Key = 000000000000000000000000000020000000000000000000
-In = 00000000000000000000000000000000
-Out = F84D2A60A99BA9C17848BFBFBFEA0271
-
-Key = 000000000000000000000000000010000000000000000000
-In = 00000000000000000000000000000000
-Out = 01AD547F2E1A713AC0B3D3E332A044A6
-
-Key = 000000000000000000000000000008000000000000000000
-In = 00000000000000000000000000000000
-Out = ED06A9B6EB5E24DF2CDA83564080AE93
-
-Key = 000000000000000000000000000004000000000000000000
-In = 00000000000000000000000000000000
-Out = 3682650D35D3247471F3EB10A173479D
-
-Key = 000000000000000000000000000002000000000000000000
-In = 00000000000000000000000000000000
-Out = E3BD985B5B7C83F841F2F2A37A2974B3
-
-Key = 000000000000000000000000000001000000000000000000
-In = 00000000000000000000000000000000
-Out = EEA30254CF0FD6379A7203FC2328EEB6
-
-Key = 000000000000000000000000000000800000000000000000
-In = 00000000000000000000000000000000
-Out = 4F2C052C360DA20FF826DFA98429AAA5
-
-Key = 000000000000000000000000000000400000000000000000
-In = 00000000000000000000000000000000
-Out = 5F4CE32E4D55F0EB15799A3C46E1C40A
-
-Key = 000000000000000000000000000000200000000000000000
-In = 00000000000000000000000000000000
-Out = 2EBE1C941F8247BBA3E85A04BA10B27C
-
-Key = 000000000000000000000000000000100000000000000000
-In = 00000000000000000000000000000000
-Out = 9F41738ADB0CD8B4DD048527FCCFC23B
-
-Key = 000000000000000000000000000000080000000000000000
-In = 00000000000000000000000000000000
-Out = 0E9F502FEE59A16CC5CEEDC82FD98E1A
-
-Key = 000000000000000000000000000000040000000000000000
-In = 00000000000000000000000000000000
-Out = 56DC540BBAFB42B9817B4D464993DBCE
-
-Key = 000000000000000000000000000000020000000000000000
-In = 00000000000000000000000000000000
-Out = 7421D3EB41769680565DD67683FE6737
-
-Key = 000000000000000000000000000000010000000000000000
-In = 00000000000000000000000000000000
-Out = 777D08A4999E79A97CDBAFA5B6C33D12
-
-Key = 000000000000000000000000000000008000000000000000
-In = 00000000000000000000000000000000
-Out = 4F3145690B092FAEDEBC672FE0ABC1EC
-
-Key = 000000000000000000000000000000004000000000000000
-In = 00000000000000000000000000000000
-Out = C221E4ABE2DD5ABA26DC29B6F3E421C6
-
-Key = 000000000000000000000000000000002000000000000000
-In = 00000000000000000000000000000000
-Out = EC48948223D3086FA730F6F81C103E8B
-
-Key = 000000000000000000000000000000001000000000000000
-In = 00000000000000000000000000000000
-Out = 38B03357B1A0719A4E04FC3725B66400
-
-Key = 000000000000000000000000000000000800000000000000
-In = 00000000000000000000000000000000
-Out = A9458E67FD55DFB7F5D43344D7B8D994
-
-Key = 000000000000000000000000000000000400000000000000
-In = 00000000000000000000000000000000
-Out = C82BBCFE8E647A4915E578BB6BB410EC
-
-Key = 000000000000000000000000000000000200000000000000
-In = 00000000000000000000000000000000
-Out = 27DA68521E57EFBC401640232896ABC7
-
-Key = 000000000000000000000000000000000100000000000000
-In = 00000000000000000000000000000000
-Out = DD6C4A6784C293F1D6B334731298C043
-
-Key = 000000000000000000000000000000000080000000000000
-In = 00000000000000000000000000000000
-Out = C2C4A691BD77C60869E6C030E357B7DF
-
-Key = 000000000000000000000000000000000040000000000000
-In = 00000000000000000000000000000000
-Out = EDA41EF6E7863F1A7D718E31A7D0AB0F
-
-Key = 000000000000000000000000000000000020000000000000
-In = 00000000000000000000000000000000
-Out = 7915CF01D36808B875E1561FB88ECF2D
-
-Key = 000000000000000000000000000000000010000000000000
-In = 00000000000000000000000000000000
-Out = 033826639ABFCBA709DEECD8F32306D5
-
-Key = 000000000000000000000000000000000008000000000000
-In = 00000000000000000000000000000000
-Out = B7CE1348B2832FABD58542A59319C947
-
-Key = 000000000000000000000000000000000004000000000000
-In = 00000000000000000000000000000000
-Out = 479E3B195B3F9BE75AA2D0931F179495
-
-Key = 000000000000000000000000000000000002000000000000
-In = 00000000000000000000000000000000
-Out = 6B9E7F0C5050E8CD232722C33261135D
-
-Key = 000000000000000000000000000000000001000000000000
-In = 00000000000000000000000000000000
-Out = 063F64EDD05343702B76BE045A9D1DDD
-
-Key = 000000000000000000000000000000000000800000000000
-In = 00000000000000000000000000000000
-Out = E1AE2D5667E440C0A44EF9CC91AA10CC
-
-Key = 000000000000000000000000000000000000400000000000
-In = 00000000000000000000000000000000
-Out = A64A692A55AF5D1C99794707BA00E670
-
-Key = 000000000000000000000000000000000000200000000000
-In = 00000000000000000000000000000000
-Out = B975AC5AFA03D77D7361AACFF32E1B39
-
-Key = 000000000000000000000000000000000000100000000000
-In = 00000000000000000000000000000000
-Out = 267A1379C257776BE4CA75C8B1A59EF6
-
-Key = 000000000000000000000000000000000000080000000000
-In = 00000000000000000000000000000000
-Out = ED392DDA2AD879B58405B41FAA7A56A1
-
-Key = 000000000000000000000000000000000000040000000000
-In = 00000000000000000000000000000000
-Out = 4DECF57B85B75F1A78431A972CC873F6
-
-Key = 000000000000000000000000000000000000020000000000
-In = 00000000000000000000000000000000
-Out = 5F9D95B7F415376A6665BDF645E5C6AC
-
-Key = 000000000000000000000000000000000000010000000000
-In = 00000000000000000000000000000000
-Out = 5929FF53CC9876F923C6D19D3D101F18
-
-Key = 000000000000000000000000000000000000008000000000
-In = 00000000000000000000000000000000
-Out = D6CF5F18474D3A44D0BE029EE879E6FA
-
-Key = 000000000000000000000000000000000000004000000000
-In = 00000000000000000000000000000000
-Out = 8860A98873A8DBFFDC4D7835F3D59BB7
-
-Key = 000000000000000000000000000000000000002000000000
-In = 00000000000000000000000000000000
-Out = 4B506DF2FF9DA5672F55624AFE5374E8
-
-Key = 000000000000000000000000000000000000001000000000
-In = 00000000000000000000000000000000
-Out = B4D6692D5AAE39519C0AAB97597A5521
-
-Key = 000000000000000000000000000000000000000800000000
-In = 00000000000000000000000000000000
-Out = 7185FA267D3926EA0804F07A91398C37
-
-Key = 000000000000000000000000000000000000000400000000
-In = 00000000000000000000000000000000
-Out = 8C3BD232227C1C1B214186A603D85115
-
-Key = 000000000000000000000000000000000000000200000000
-In = 00000000000000000000000000000000
-Out = 5300AFD8D507A60ACB0907B4D3E3D2B0
-
-Key = 000000000000000000000000000000000000000100000000
-In = 00000000000000000000000000000000
-Out = D8A16D32AE71F991EE2C1C19153B146D
-
-Key = 000000000000000000000000000000000000000080000000
-In = 00000000000000000000000000000000
-Out = 32B3F26C1415BF7F82B6A637843F4C21
-
-Key = 000000000000000000000000000000000000000040000000
-In = 00000000000000000000000000000000
-Out = E416420B5F736F39328D36181992A720
-
-Key = 000000000000000000000000000000000000000020000000
-In = 00000000000000000000000000000000
-Out = 619918287897135AD5516BA12A0FC6D7
-
-Key = 000000000000000000000000000000000000000010000000
-In = 00000000000000000000000000000000
-Out = 69830C559F08DDCEEB6F83900DC14626
-
-Key = 000000000000000000000000000000000000000008000000
-In = 00000000000000000000000000000000
-Out = BB451FB76A7B1FE65E0332DE6E6712A3
-
-Key = 000000000000000000000000000000000000000004000000
-In = 00000000000000000000000000000000
-Out = AF2DE55E1EFFAF00EBF4EAEE45B29A4C
-
-Key = 000000000000000000000000000000000000000002000000
-In = 00000000000000000000000000000000
-Out = CA31B9A81450A198A073A299C7DF14C9
-
-Key = 000000000000000000000000000000000000000001000000
-In = 00000000000000000000000000000000
-Out = 4FF7E9FADFCFFBB2DD3F23214B407180
-
-Key = 000000000000000000000000000000000000000000800000
-In = 00000000000000000000000000000000
-Out = B8BC9344751D34B0BFE353E5F3A9E309
-
-Key = 000000000000000000000000000000000000000000400000
-In = 00000000000000000000000000000000
-Out = 4589951B936D1948299548D199E0612F
-
-Key = 000000000000000000000000000000000000000000200000
-In = 00000000000000000000000000000000
-Out = 61B33E9A6A14F21B12D00832385F9BCA
-
-Key = 000000000000000000000000000000000000000000100000
-In = 00000000000000000000000000000000
-Out = 652B66FBC2B192ACA177D4C16ACB1E3F
-
-Key = 000000000000000000000000000000000000000000080000
-In = 00000000000000000000000000000000
-Out = 81A252288A18D4E4EC1F919FE34BD4C8
-
-Key = 000000000000000000000000000000000000000000040000
-In = 00000000000000000000000000000000
-Out = 4D38323769C7AEFBF838F51A57E21C0E
-
-Key = 000000000000000000000000000000000000000000020000
-In = 00000000000000000000000000000000
-Out = C07D35D5788A04FEEBA6A337453DEFCA
-
-Key = 000000000000000000000000000000000000000000010000
-In = 00000000000000000000000000000000
-Out = 6692591964FF5304D877DDE631E55AC2
-
-Key = 000000000000000000000000000000000000000000008000
-In = 00000000000000000000000000000000
-Out = 1792F89A673DFE67A04BAC230317BFD3
-
-Key = 000000000000000000000000000000000000000000004000
-In = 00000000000000000000000000000000
-Out = 0EC45273FAA59A4C6AA56C0BDF9DC1C4
-
-Key = 000000000000000000000000000000000000000000002000
-In = 00000000000000000000000000000000
-Out = 273575F8DB870005ED51F0F1FB962A35
-
-Key = 000000000000000000000000000000000000000000001000
-In = 00000000000000000000000000000000
-Out = D9EDC0E324D69F3CAB465E3F63AC4CD3
-
-Key = 000000000000000000000000000000000000000000000800
-In = 00000000000000000000000000000000
-Out = 647B9C834502295B5D46AE962ABD9059
-
-Key = 000000000000000000000000000000000000000000000400
-In = 00000000000000000000000000000000
-Out = 3C8B932E1E8C1E9FD4629AF03D16D717
-
-Key = 000000000000000000000000000000000000000000000200
-In = 00000000000000000000000000000000
-Out = 9FD433DAE0C3B5C35C7CA5468B4AF8DE
-
-Key = 000000000000000000000000000000000000000000000100
-In = 00000000000000000000000000000000
-Out = 916E8226F1925A4C7E0056E8951B4609
-
-Key = 000000000000000000000000000000000000000000000080
-In = 00000000000000000000000000000000
-Out = A53FCF269CF194C323B2C2A5B82571E2
-
-Key = 000000000000000000000000000000000000000000000040
-In = 00000000000000000000000000000000
-Out = 51C6D510F3053D502D141C99FBB28618
-
-Key = 000000000000000000000000000000000000000000000020
-In = 00000000000000000000000000000000
-Out = 040E54E63CCF8E5D6EE6A27EEDCC02AB
-
-Key = 000000000000000000000000000000000000000000000010
-In = 00000000000000000000000000000000
-Out = DE90BD5F4C96E4F52EC9200D9E298DCD
-
-Key = 000000000000000000000000000000000000000000000008
-In = 00000000000000000000000000000000
-Out = 87233EAEFC125F7C6E1FE329CC415520
-
-Key = 000000000000000000000000000000000000000000000004
-In = 00000000000000000000000000000000
-Out = 71B61DD72D4FBD96542E73A5E5BD7CA5
-
-Key = 000000000000000000000000000000000000000000000002
-In = 00000000000000000000000000000000
-Out = F5F6E1B6215062A2547C1A7C84EB8E86
-
-Key = 000000000000000000000000000000000000000000000001
-In = 00000000000000000000000000000000
-Out = 2DD740E5E0E0CBE72EBDF2808410D55F
-
-Key = 8000000000000000000000000000000000000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = EA4FCDBA1EB0C533938AA9FA32B740F3
-
-Key = 4000000000000000000000000000000000000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = B8E6D5134AB08E553AD5785B33D66111
-
-Key = 2000000000000000000000000000000000000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = 2D7805B2B86764E8FC3DD6E2EFB1532D
-
-Key = 1000000000000000000000000000000000000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = B9449A4D8C53639D0A6751DB3695B325
-
-Key = 0800000000000000000000000000000000000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = B2C6850F1AAAF7CD2E9B3FC1F5433FDC
-
-Key = 0400000000000000000000000000000000000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = 7D124E20CE475B66BEA88399FF95C8C0
-
-Key = 0200000000000000000000000000000000000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = D5F5ED2CDEC8D3043BD0C58238AF2820
-
-Key = 0100000000000000000000000000000000000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = 051135A86EADA21353CB5FFD7A58408E
-
-Key = 0080000000000000000000000000000000000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = FEF406FC9C405AFB959C796E4ED0AF0D
-
-Key = 0040000000000000000000000000000000000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = 52DA5222BB9974AE66CC9BB77E1F15E8
-
-Key = 0020000000000000000000000000000000000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = F5DC2C5F98AF6CF4BCC23ECEEAF213AD
-
-Key = 0010000000000000000000000000000000000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = 09DF90DE791250ACBE170DC643780CF2
-
-Key = 0008000000000000000000000000000000000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = 3FA812132A21BEB83162C33B28CC242C
-
-Key = 0004000000000000000000000000000000000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = CEE571785850DD567A75D9E244660C66
-
-Key = 0002000000000000000000000000000000000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = 642BB005B38790E518E53A53373C2474
-
-Key = 0001000000000000000000000000000000000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = E3EBE5FA1C748BCB125602F8B7911FAE
-
-Key = 0000800000000000000000000000000000000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = C863C98E1C09C28B4A05B5FBCE64DF28
-
-Key = 0000400000000000000000000000000000000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = B4BAB3A731F8CCD8A09A5D3AFF77BE60
-
-Key = 0000200000000000000000000000000000000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = 1A3FC4F1DE42F1AC5DA5F88701E6F292
-
-Key = 0000100000000000000000000000000000000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = FF43862813E9F1CFEF044F4B8CFED265
-
-Key = 0000080000000000000000000000000000000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = 8F2785A7E28C1910580BBFD989A7F0D3
-
-Key = 0000040000000000000000000000000000000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = 26059027035B43615A7996D19FED9D42
-
-Key = 0000020000000000000000000000000000000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = 8CD8416F37E3BA1B5D6D0838F6B6E604
-
-Key = 0000010000000000000000000000000000000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = BB0BD60CD950DE5E0B9AAF78FF9A30DB
-
-Key = 0000008000000000000000000000000000000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = B99C1D4F98B68E8CD7495D16F3260D7D
-
-Key = 0000004000000000000000000000000000000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = 4F1A4F8D20456CFE0EF0E39DE6C71B9C
-
-Key = 0000002000000000000000000000000000000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = F453DB1AB45A6F5834F9908E1A15D4F7
-
-Key = 0000001000000000000000000000000000000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = DA25287B7CD050E9B3E2074ED3B49FCF
-
-Key = 0000000800000000000000000000000000000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = BAB2AE0FF7C4902697DE88ED7F2FA06C
-
-Key = 0000000400000000000000000000000000000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = ABE6F6C9D29A58B985A91782EE28CF3E
-
-Key = 0000000200000000000000000000000000000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = 5C59FBE090DB3D75D7A5A8FD76F8A3DB
-
-Key = 0000000100000000000000000000000000000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = DCA806B1D0BAFCEAB015EC19A3E5C7FA
-
-Key = 0000000080000000000000000000000000000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = 1BA870E6D62FEB16E6C2AA1128AE5ABA
-
-Key = 0000000040000000000000000000000000000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = 0FE91367D4C178DD313C6AB7F3D5149A
-
-Key = 0000000020000000000000000000000000000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = BFE27CB1B52150E0636A81473148B018
-
-Key = 0000000010000000000000000000000000000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = F79BE17022979D01E3AFFB3499556DC4
-
-Key = 0000000008000000000000000000000000000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = A2F2B772060C53A539B5A3FE4C935171
-
-Key = 0000000004000000000000000000000000000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = DB97947A8B14B3E3859068A0288285F6
-
-Key = 0000000002000000000000000000000000000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = 1FD086FE698C5E092A8E0C9EE527714A
-
-Key = 0000000001000000000000000000000000000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = 8ADAB79B444DDDF86B8D53D2A9112881
-
-Key = 0000000000800000000000000000000000000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = C36CEC9730A74CE94CF2EA5C7B0EC3ED
-
-Key = 0000000000400000000000000000000000000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = 033629A0675A45A11BE7924137D711EC
-
-Key = 0000000000200000000000000000000000000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = D5C22EF288E7D2D04BC04B57B702A03F
-
-Key = 0000000000100000000000000000000000000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = 1FD290A5EB2E278C6396625034EB268C
-
-Key = 0000000000080000000000000000000000000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = 05C35E0CB6D27E6E9D680368B2ABA9B5
-
-Key = 0000000000040000000000000000000000000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = B0194CDF7510FE98EDF9464259378FAF
-
-Key = 0000000000020000000000000000000000000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = 043729754E5B1F63408F62742E5F2765
-
-Key = 0000000000010000000000000000000000000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = 24A2746042EC7970E8AB59589AD63775
-
-Key = 0000000000008000000000000000000000000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = 7BDEF0A2EF8B637C4C3C5D001BAB5F85
-
-Key = 0000000000004000000000000000000000000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = 0221B515A1559D96E9C3CBFB929E96A9
-
-Key = 0000000000002000000000000000000000000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = 7E975026E5771D90EDA081B72C0BC77C
-
-Key = 0000000000001000000000000000000000000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = 7C7F9F98B4739C9774F84E75E5B30A95
-
-Key = 0000000000000800000000000000000000000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = A4E176B7C98D76BC6662BBB3E606BA9C
-
-Key = 0000000000000400000000000000000000000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = 7FDBDA5910B26D8D3FE42987B09430C0
-
-Key = 0000000000000200000000000000000000000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = 7B134F40F8E10D8287B8E6FC0BDE45E8
-
-Key = 0000000000000100000000000000000000000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = CF3C98CC0CAFB2935385C0B5D8F07857
-
-Key = 0000000000000080000000000000000000000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = FB71BA47019735DA4082D68A1A587BDB
-
-Key = 0000000000000040000000000000000000000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = E9D45576FC1A56DAFB48ABFB90A1DE4B
-
-Key = 0000000000000020000000000000000000000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = AE9408DC1A007CA9C13F2F9D12FC4F71
-
-Key = 0000000000000010000000000000000000000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = B407201A6A44CB236468709B181BCA23
-
-Key = 0000000000000008000000000000000000000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = 06E1A40D4F7534E24538D26802AF9E98
-
-Key = 0000000000000004000000000000000000000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = 3468992A9D6F274286611D1E5DB327BA
-
-Key = 0000000000000002000000000000000000000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = 635748DEDCB4E65B76E818D09994D19A
-
-Key = 0000000000000001000000000000000000000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = C2A0DACC741E90029F16CDA81BEB8D0C
-
-Key = 0000000000000000800000000000000000000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = D20B9853FC98ED3FCFA4C3B9781352D3
-
-Key = 0000000000000000400000000000000000000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = 869B106388046F6F5F9AE5ADC1F23BC2
-
-Key = 0000000000000000200000000000000000000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = 4F9BF7227D943B80C97B2FED132098FE
-
-Key = 0000000000000000100000000000000000000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = 7232A96D275C409349A0382BAE576274
-
-Key = 0000000000000000080000000000000000000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = ADAF9B3E14B8CC101A2F143B373517B7
-
-Key = 0000000000000000040000000000000000000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = 813E38DF25E4356EAFC7ECEB75270FD4
-
-Key = 0000000000000000020000000000000000000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = 46D6957C76223046E232EEBB661CCE59
-
-Key = 0000000000000000010000000000000000000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = 1714E3EDD2A7BFE4FC35D4B6034E4184
-
-Key = 0000000000000000008000000000000000000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = 445ED35901D4608FAC3BCD59E685E77C
-
-Key = 0000000000000000004000000000000000000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = 236F86A3A59F563611C9A1A9C8DF045C
-
-Key = 0000000000000000002000000000000000000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = FC0739E82EF130E533C77FA15BD85B57
-
-Key = 0000000000000000001000000000000000000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = EDC81185A966066433F1B19BE7659080
-
-Key = 0000000000000000000800000000000000000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = 9D0ED59542D4851F7812B29640739765
-
-Key = 0000000000000000000400000000000000000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = 4BA903B83FD4A443564723403BD7D431
-
-Key = 0000000000000000000200000000000000000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = 5DA2CD3D64EDCB29588F02BFED3D575B
-
-Key = 0000000000000000000100000000000000000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = E66697B697E8881555F5B358A2EB7628
-
-Key = 0000000000000000000080000000000000000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = 7DE9B3320A7872088B1417AAC4E841ED
-
-Key = 0000000000000000000040000000000000000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = 236D82828CE9A9471B51DDCDA350C542
-
-Key = 0000000000000000000020000000000000000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = CF250F09887F0B9300FF865810A2E03F
-
-Key = 0000000000000000000010000000000000000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = 0103157DB999DF64D6C6DACB16F15F78
-
-Key = 0000000000000000000008000000000000000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = EA918B3C7929C992E6F0D7B0DD6B8A59
-
-Key = 0000000000000000000004000000000000000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = FB853888B1D95F9C7BB7630231C9108E
-
-Key = 0000000000000000000002000000000000000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = 46E63459DCC0514DD200BF82B6AEEA0B
-
-Key = 0000000000000000000001000000000000000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = 19051C0A056D4B56DFF08C52FBBD4547
-
-Key = 0000000000000000000000800000000000000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = 055240C320AC09978BE4EC0EE9E40123
-
-Key = 0000000000000000000000400000000000000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = E0D04118BAD95366416C6D715507646B
-
-Key = 0000000000000000000000200000000000000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = 888C70E963419AA6446123CD9685252C
-
-Key = 0000000000000000000000100000000000000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = E060A32AF3CD8A525C60A8EB4BEB5B24
-
-Key = 0000000000000000000000080000000000000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = 36A235722A72A5BD05896B74EBB39E35
-
-Key = 0000000000000000000000040000000000000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = 665A781CF1F7839FA4E7EF66F5B47D45
-
-Key = 0000000000000000000000020000000000000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = 8156E976338FB48ED3E469F1485EAA06
-
-Key = 0000000000000000000000010000000000000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = BA853DF1B7622D17A549624B234082F8
-
-Key = 0000000000000000000000008000000000000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = 3A411EF75149822F0C4E998587BA0CAD
-
-Key = 0000000000000000000000004000000000000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = EA33525A7CC7C74340773389A764513E
-
-Key = 0000000000000000000000002000000000000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = E007DDE8158568CF80C470745E455EEE
-
-Key = 0000000000000000000000001000000000000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = C140AE31D6B8AB675539344B9D857A89
-
-Key = 0000000000000000000000000800000000000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = 8C86266079ABCEE926A5EF6F80F50308
-
-Key = 0000000000000000000000000400000000000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = CD77B23315E31DF96FABD6E427184F9F
-
-Key = 0000000000000000000000000200000000000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = A72E93628614A603E59ECC5C766A639B
-
-Key = 0000000000000000000000000100000000000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = 00EE192F18F06F5799B9593DE71B2FBE
-
-Key = 0000000000000000000000000080000000000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = A79378A27F39485A2A6757A953DE8D63
-
-Key = 0000000000000000000000000040000000000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = 38353F1349680DF284CF7D59272D435B
-
-Key = 0000000000000000000000000020000000000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = 0960EF878BE3F63CB8A25AFDEE9272F8
-
-Key = 0000000000000000000000000010000000000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = CB52EEC84DD320FB74A13DF2D4AF5B64
-
-Key = 0000000000000000000000000008000000000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = 89525CFDCCC1A572987EEEC44507942D
-
-Key = 0000000000000000000000000004000000000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = 894183826F3CD163F2BDCE8FD123BCBD
-
-Key = 0000000000000000000000000002000000000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = 152FAB85782DD050EF29C8C7E95C5941
-
-Key = 0000000000000000000000000001000000000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = 6C8CC544D1E6B9B8ACEB723A6E903710
-
-Key = 0000000000000000000000000000800000000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = 9D1DCFEFD9CAEB5934AA93278F8E0988
-
-Key = 0000000000000000000000000000400000000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = 86473616CFE39825E9F93B4A5D1518F0
-
-Key = 0000000000000000000000000000200000000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = 3EC955C39DC4442411A578115482A331
-
-Key = 0000000000000000000000000000100000000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = 117C11E5DAFA73A4CBA2E599582DF463
-
-Key = 0000000000000000000000000000080000000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = 371B4F0F917CDC7F028CF90072EA6C0C
-
-Key = 0000000000000000000000000000040000000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = F6EAC5AC916431427022EE688D4E8248
-
-Key = 0000000000000000000000000000020000000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = 5E7787153D1C5E94A860600D0FE0F695
-
-Key = 0000000000000000000000000000010000000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = 44888E6DD958A843AF2143DA81986196
-
-Key = 0000000000000000000000000000008000000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = F3B940BFEFF393BFDAF0C435D262961C
-
-Key = 0000000000000000000000000000004000000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = 40781DABC58A81B11FAA4039E6F73345
-
-Key = 0000000000000000000000000000002000000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = 7685B120BD850BD6D7A618E023D42BA0
-
-Key = 0000000000000000000000000000001000000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = 8088416E7FEDB30B1883DF50E29CD4D1
-
-Key = 0000000000000000000000000000000800000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = B0C9ED5257B103131AB5DBECC16D1547
-
-Key = 0000000000000000000000000000000400000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = 01C8B821C4683B586CD8096A0DC4FDAA
-
-Key = 0000000000000000000000000000000200000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = 4CA16F058B3AE1E2B3774E3DF99087CA
-
-Key = 0000000000000000000000000000000100000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = 620D06B8EFBFDD1EE274D5EAE42B8F0E
-
-Key = 0000000000000000000000000000000080000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = 34CF934F88C0D631B3D80BE0A5671B11
-
-Key = 0000000000000000000000000000000040000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = F8AB4045BD0CD95486B921B7430E74A0
-
-Key = 0000000000000000000000000000000020000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = 96ECEC4088D81E2EF27D74A96E2614DC
-
-Key = 0000000000000000000000000000000010000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = EB0152474310B99F0F8F0DFD6D67962C
-
-Key = 0000000000000000000000000000000008000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = 74DA68DA599D7DD37918F24F7654DC4D
-
-Key = 0000000000000000000000000000000004000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = F766AD686EB2BAF2950974F78968F510
-
-Key = 0000000000000000000000000000000002000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = A2D18CF5C770587E19DBD6FFEBD52FAE
-
-Key = 0000000000000000000000000000000001000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = DDADE16C2B9E78715FC281197149E4F0
-
-Key = 0000000000000000000000000000000000800000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = 79931CFAC3FD4F540E53905538B5E122
-
-Key = 0000000000000000000000000000000000400000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = 93F88DDDE5004BD8998CDB7A1BD1EE4D
-
-Key = 0000000000000000000000000000000000200000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = 011A413B2CC8E56A94A5C6D3932B3C3B
-
-Key = 0000000000000000000000000000000000100000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = C509B737BBC749EE466ADF8142F52B28
-
-Key = 0000000000000000000000000000000000080000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = 514332276B9E9299F9F722B63752B0A8
-
-Key = 0000000000000000000000000000000000040000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = D9F3A75F94986D0A1AB14258934C21D1
-
-Key = 0000000000000000000000000000000000020000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = 6FE84CDC49C9A8A55D85EA1A1D5C0DD9
-
-Key = 0000000000000000000000000000000000010000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = 0C85C65BD9DE393D2FEA3BE5AC7BAB67
-
-Key = 0000000000000000000000000000000000008000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = 904C7F2E8084FC10D59480C3DE1CB1A4
-
-Key = 0000000000000000000000000000000000004000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = 52C696236B4B7EE6B03B8876DEA8DD45
-
-Key = 0000000000000000000000000000000000002000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = A0D46DAEA95CB4968F62BD9B3F8075A8
-
-Key = 0000000000000000000000000000000000001000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = 51BE75B32A05384D2A2E08CB1EAB5F63
-
-Key = 0000000000000000000000000000000000000800000000000000000000000000
-In = 00000000000000000000000000000000
-Out = 1123151EB432831D2C65A90ED1D0A429
-
-Key = 0000000000000000000000000000000000000400000000000000000000000000
-In = 00000000000000000000000000000000
-Out = A26350A8FF6C10FCBA736D46FC26BF69
-
-Key = 0000000000000000000000000000000000000200000000000000000000000000
-In = 00000000000000000000000000000000
-Out = FF85BEF6CF6674FA5EE40EC9FB9052FF
-
-Key = 0000000000000000000000000000000000000100000000000000000000000000
-In = 00000000000000000000000000000000
-Out = 6ED96DB33AB981AF27894AC436CB4D62
-
-Key = 0000000000000000000000000000000000000080000000000000000000000000
-In = 00000000000000000000000000000000
-Out = B38DE9B3C4D6D128101B02FDD05E3BF8
-
-Key = 0000000000000000000000000000000000000040000000000000000000000000
-In = 00000000000000000000000000000000
-Out = 11E05766EBB66AB211E2D9653EF3144D
-
-Key = 0000000000000000000000000000000000000020000000000000000000000000
-In = 00000000000000000000000000000000
-Out = F6A196E085116E5BC21732A2EF9ACAF4
-
-Key = 0000000000000000000000000000000000000010000000000000000000000000
-In = 00000000000000000000000000000000
-Out = BC2A6753CA41E306A0500E97B38D8A9A
-
-Key = 0000000000000000000000000000000000000008000000000000000000000000
-In = 00000000000000000000000000000000
-Out = 773A687B1FC97918943C1B66EF693354
-
-Key = 0000000000000000000000000000000000000004000000000000000000000000
-In = 00000000000000000000000000000000
-Out = C6E2112CCDBD821D2B9068B285C5192B
-
-Key = 0000000000000000000000000000000000000002000000000000000000000000
-In = 00000000000000000000000000000000
-Out = EA69C8E28021801EE9A14809848D781F
-
-Key = 0000000000000000000000000000000000000001000000000000000000000000
-In = 00000000000000000000000000000000
-Out = 6290745CD4CB62DE172F8AB30966EB57
-
-Key = 0000000000000000000000000000000000000000800000000000000000000000
-In = 00000000000000000000000000000000
-Out = 1051EE4C389B96B1365B417C74EFBF10
-
-Key = 0000000000000000000000000000000000000000400000000000000000000000
-In = 00000000000000000000000000000000
-Out = 52B6F3EE6655128999EEE3831E708D76
-
-Key = 0000000000000000000000000000000000000000200000000000000000000000
-In = 00000000000000000000000000000000
-Out = 5BDE19A1D741ECE40CE98CD02F02AD75
-
-Key = 0000000000000000000000000000000000000000100000000000000000000000
-In = 00000000000000000000000000000000
-Out = 36EF5E803A68F6AC20D92FB14E2AFDF5
-
-Key = 0000000000000000000000000000000000000000080000000000000000000000
-In = 00000000000000000000000000000000
-Out = B3E1E30B78FBBCA07F065A422D33410B
-
-Key = 0000000000000000000000000000000000000000040000000000000000000000
-In = 00000000000000000000000000000000
-Out = 5FA0E6C8E6C1FCD613975A18348484CB
-
-Key = 0000000000000000000000000000000000000000020000000000000000000000
-In = 00000000000000000000000000000000
-Out = B74E4A2406EEB2AB836AED857754A612
-
-Key = 0000000000000000000000000000000000000000010000000000000000000000
-In = 00000000000000000000000000000000
-Out = 52EBF44DB69347A22DF8CA0ABAE3D668
-
-Key = 0000000000000000000000000000000000000000008000000000000000000000
-In = 00000000000000000000000000000000
-Out = 986B7B05D1E9639779D034047FC3B780
-
-Key = 0000000000000000000000000000000000000000004000000000000000000000
-In = 00000000000000000000000000000000
-Out = 1846AF7EB612C5C356DAF4FE42108444
-
-Key = 0000000000000000000000000000000000000000002000000000000000000000
-In = 00000000000000000000000000000000
-Out = 22AD41F78567C6D5C2266486404168DC
-
-Key = 0000000000000000000000000000000000000000001000000000000000000000
-In = 00000000000000000000000000000000
-Out = 73409A5B03D08BCEE496F7255417DEC5
-
-Key = 0000000000000000000000000000000000000000000800000000000000000000
-In = 00000000000000000000000000000000
-Out = 32C47FAEB48DA7847B3C5B063153B049
-
-Key = 0000000000000000000000000000000000000000000400000000000000000000
-In = 00000000000000000000000000000000
-Out = 5514F66B91C06AD15BE581AA99F5961B
-
-Key = 0000000000000000000000000000000000000000000200000000000000000000
-In = 00000000000000000000000000000000
-Out = 38AF52E0648030498BA94D0BBF819B8A
-
-Key = 0000000000000000000000000000000000000000000100000000000000000000
-In = 00000000000000000000000000000000
-Out = 91D48EEE9A769F0753C6A6DC1037405D
-
-Key = 0000000000000000000000000000000000000000000080000000000000000000
-In = 00000000000000000000000000000000
-Out = 2CA3F3F2BB2332984A97E5274462E7AF
-
-Key = 0000000000000000000000000000000000000000000040000000000000000000
-In = 00000000000000000000000000000000
-Out = 806EE4C1C6432102E40A21F03222B0E1
-
-Key = 0000000000000000000000000000000000000000000020000000000000000000
-In = 00000000000000000000000000000000
-Out = E8BBDC90505FE81AB2024274BB2FA258
-
-Key = 0000000000000000000000000000000000000000000010000000000000000000
-In = 00000000000000000000000000000000
-Out = 307920977ADAD0EEDEBA2CB8AF83D3CE
-
-Key = 0000000000000000000000000000000000000000000008000000000000000000
-In = 00000000000000000000000000000000
-Out = 6B0A17013DFAAD05442FA8B298043438
-
-Key = 0000000000000000000000000000000000000000000004000000000000000000
-In = 00000000000000000000000000000000
-Out = BA6EC60065FA6C9679D7E47FC1B85479
-
-Key = 0000000000000000000000000000000000000000000002000000000000000000
-In = 00000000000000000000000000000000
-Out = F1AA580B5E904BED235ACE85C0E009D0
-
-Key = 0000000000000000000000000000000000000000000001000000000000000000
-In = 00000000000000000000000000000000
-Out = 9092A797F7024CC218B4A3575F4F7D63
-
-Key = 0000000000000000000000000000000000000000000000800000000000000000
-In = 00000000000000000000000000000000
-Out = CF404B154F2A8388DA9ED1E93AC78894
-
-Key = 0000000000000000000000000000000000000000000000400000000000000000
-In = 00000000000000000000000000000000
-Out = 1B32215E25E3EB15FE4BED2F2F31281E
-
-Key = 0000000000000000000000000000000000000000000000200000000000000000
-In = 00000000000000000000000000000000
-Out = 999B92E27EC161089F45DB53D036C8F0
-
-Key = 0000000000000000000000000000000000000000000000100000000000000000
-In = 00000000000000000000000000000000
-Out = B2F7DBFD67DBC260A7CFCD9C90FEF16F
-
-Key = 0000000000000000000000000000000000000000000000080000000000000000
-In = 00000000000000000000000000000000
-Out = 7BD9AA3B08F103C796EE8023EF474F0A
-
-Key = 0000000000000000000000000000000000000000000000040000000000000000
-In = 00000000000000000000000000000000
-Out = 483121AF85F36EA159BE2EB5802FBF21
-
-Key = 0000000000000000000000000000000000000000000000020000000000000000
-In = 00000000000000000000000000000000
-Out = AE2788C2115CB466713687AB06FE5E46
-
-Key = 0000000000000000000000000000000000000000000000010000000000000000
-In = 00000000000000000000000000000000
-Out = ADE758D100ABEEB7BA80BF257781494D
-
-Key = 0000000000000000000000000000000000000000000000008000000000000000
-In = 00000000000000000000000000000000
-Out = 6DF30205652926EB339833F2EDD8472E
-
-Key = 0000000000000000000000000000000000000000000000004000000000000000
-In = 00000000000000000000000000000000
-Out = 031E86B2AD4D83A4A19BCAF191F9B65A
-
-Key = 0000000000000000000000000000000000000000000000002000000000000000
-In = 00000000000000000000000000000000
-Out = F605CCC9E46B1792EA2F0B4124924F42
-
-Key = 0000000000000000000000000000000000000000000000001000000000000000
-In = 00000000000000000000000000000000
-Out = A70E3286C50B8DD8306109AB59119510
-
-Key = 0000000000000000000000000000000000000000000000000800000000000000
-In = 00000000000000000000000000000000
-Out = 6922EEA4B8AE7BFECE899009848A33DA
-
-Key = 0000000000000000000000000000000000000000000000000400000000000000
-In = 00000000000000000000000000000000
-Out = 1DD856F5453D1D61860E48035BFDADC7
-
-Key = 0000000000000000000000000000000000000000000000000200000000000000
-In = 00000000000000000000000000000000
-Out = 9AE9BEC5D195B32BD52623EF21CF2AA3
-
-Key = 0000000000000000000000000000000000000000000000000100000000000000
-In = 00000000000000000000000000000000
-Out = C89ADA0E7DF448DE2155DB7C3E3EAAF2
-
-Key = 0000000000000000000000000000000000000000000000000080000000000000
-In = 00000000000000000000000000000000
-Out = 0D176C6E373B2A3B3408AD24BE258365
-
-Key = 0000000000000000000000000000000000000000000000000040000000000000
-In = 00000000000000000000000000000000
-Out = 8C2E48AF6FE6305B58EF5B950061E93C
-
-Key = 0000000000000000000000000000000000000000000000000020000000000000
-In = 00000000000000000000000000000000
-Out = 2E81D19464919FFB1886E81C46AEDE37
-
-Key = 0000000000000000000000000000000000000000000000000010000000000000
-In = 00000000000000000000000000000000
-Out = 7169BEE79D4DCC57F771A43AA0A80EF1
-
-Key = 0000000000000000000000000000000000000000000000000008000000000000
-In = 00000000000000000000000000000000
-Out = 425223474892BA95538DAFF58F3DD0D3
-
-Key = 0000000000000000000000000000000000000000000000000004000000000000
-In = 00000000000000000000000000000000
-Out = B2650BF17E26E9A4F6484DD2992517D9
-
-Key = 0000000000000000000000000000000000000000000000000002000000000000
-In = 00000000000000000000000000000000
-Out = 71936A21362F80ECCED8FC955FF159F3
-
-Key = 0000000000000000000000000000000000000000000000000001000000000000
-In = 00000000000000000000000000000000
-Out = E09665C274E582FFD6BCD0663BD6EA12
-
-Key = 0000000000000000000000000000000000000000000000000000800000000000
-In = 00000000000000000000000000000000
-Out = 3E8D36D10E6AB4454154A226B7D6E50E
-
-Key = 0000000000000000000000000000000000000000000000000000400000000000
-In = 00000000000000000000000000000000
-Out = 5D008338DDD66164591A9B98B23323CA
-
-Key = 0000000000000000000000000000000000000000000000000000200000000000
-In = 00000000000000000000000000000000
-Out = 6BC5ACE2FA017CCC5CD0A8E88AF73B28
-
-Key = 0000000000000000000000000000000000000000000000000000100000000000
-In = 00000000000000000000000000000000
-Out = C115E4646FC054C50C2BBEC7C20C94F7
-
-Key = 0000000000000000000000000000000000000000000000000000080000000000
-In = 00000000000000000000000000000000
-Out = 2CEB602F3C61BE94AF96FD012BB3190C
-
-Key = 0000000000000000000000000000000000000000000000000000040000000000
-In = 00000000000000000000000000000000
-Out = 5A04F68F56580702891E4ECF6C600C92
-
-Key = 0000000000000000000000000000000000000000000000000000020000000000
-In = 00000000000000000000000000000000
-Out = D6A0DC0D5FB91B6478B9A1AAA586431B
-
-Key = 0000000000000000000000000000000000000000000000000000010000000000
-In = 00000000000000000000000000000000
-Out = E38BB33BF982D61BB2CD980BFCE4C2BF
-
-Key = 0000000000000000000000000000000000000000000000000000008000000000
-In = 00000000000000000000000000000000
-Out = B47BF164959077E378396A175020AC95
-
-Key = 0000000000000000000000000000000000000000000000000000004000000000
-In = 00000000000000000000000000000000
-Out = CC5CEE68ABBFDC2DFE32FD3A1E433932
-
-Key = 0000000000000000000000000000000000000000000000000000002000000000
-In = 00000000000000000000000000000000
-Out = A8180BBB689F29A560296FF24C785DC4
-
-Key = 0000000000000000000000000000000000000000000000000000001000000000
-In = 00000000000000000000000000000000
-Out = DCCBE0BB943D3B772010A08C11E82763
-
-Key = 0000000000000000000000000000000000000000000000000000000800000000
-In = 00000000000000000000000000000000
-Out = 0439C5D8BB8BDD7FCB3A3281BD8A3A3F
-
-Key = 0000000000000000000000000000000000000000000000000000000400000000
-In = 00000000000000000000000000000000
-Out = 2864CEAE94E09933190479BEA2515040
-
-Key = 0000000000000000000000000000000000000000000000000000000200000000
-In = 00000000000000000000000000000000
-Out = 2AFF33A00C93057FE56EDCBBB65987BB
-
-Key = 0000000000000000000000000000000000000000000000000000000100000000
-In = 00000000000000000000000000000000
-Out = 38C6B37E80EC873DE0A0ABEB9803438F
-
-Key = 0000000000000000000000000000000000000000000000000000000080000000
-In = 00000000000000000000000000000000
-Out = 1D9428E92329672C0E902F6AA6AFC874
-
-Key = 0000000000000000000000000000000000000000000000000000000040000000
-In = 00000000000000000000000000000000
-Out = 2AB8CC1998977DF208C97B2D0DC86C54
-
-Key = 0000000000000000000000000000000000000000000000000000000020000000
-In = 00000000000000000000000000000000
-Out = 2E42C343E7E489916E2F2C0AD2AFFFB1
-
-Key = 0000000000000000000000000000000000000000000000000000000010000000
-In = 00000000000000000000000000000000
-Out = 571C17477C9FB6C334718983E0B25859
-
-Key = 0000000000000000000000000000000000000000000000000000000008000000
-In = 00000000000000000000000000000000
-Out = 3ABAD289F84A4B75412C82D8AD9BD739
-
-Key = 0000000000000000000000000000000000000000000000000000000004000000
-In = 00000000000000000000000000000000
-Out = E91C1A5E57DD295A7F4AC1687F6B8DB6
-
-Key = 0000000000000000000000000000000000000000000000000000000002000000
-In = 00000000000000000000000000000000
-Out = 60CEAEC342165320652D7ED13FDAC05A
-
-Key = 0000000000000000000000000000000000000000000000000000000001000000
-In = 00000000000000000000000000000000
-Out = DA854CEC00C19BB97F7D8292ABAEB5BB
-
-Key = 0000000000000000000000000000000000000000000000000000000000800000
-In = 00000000000000000000000000000000
-Out = 6BC45EBD7172512E5F6D51C60E271ACF
-
-Key = 0000000000000000000000000000000000000000000000000000000000400000
-In = 00000000000000000000000000000000
-Out = 6604FAE8ECBC741D0F46D90AA235CAF6
-
-Key = 0000000000000000000000000000000000000000000000000000000000200000
-In = 00000000000000000000000000000000
-Out = 5F95FA50CF7CDD4B619DCB8D6E0B7873
-
-Key = 0000000000000000000000000000000000000000000000000000000000100000
-In = 00000000000000000000000000000000
-Out = C98C198A5A988E2911302C22BFDC4890
-
-Key = 0000000000000000000000000000000000000000000000000000000000080000
-In = 00000000000000000000000000000000
-Out = 4B5818505B80DA67A206BF3107DF2B4C
-
-Key = 0000000000000000000000000000000000000000000000000000000000040000
-In = 00000000000000000000000000000000
-Out = B2EA813634A26DC5894BFC4BB070E147
-
-Key = 0000000000000000000000000000000000000000000000000000000000020000
-In = 00000000000000000000000000000000
-Out = B6DDED10D2E8B13D7C758692C844017B
-
-Key = 0000000000000000000000000000000000000000000000000000000000010000
-In = 00000000000000000000000000000000
-Out = F2DC2468DF800E237C026F968CC3AAE2
-
-Key = 0000000000000000000000000000000000000000000000000000000000008000
-In = 00000000000000000000000000000000
-Out = EBCCE81109DCF1B9793AB60BD062F033
-
-Key = 0000000000000000000000000000000000000000000000000000000000004000
-In = 00000000000000000000000000000000
-Out = 1BC015DC9E1B9DBB68293EB93D65088F
-
-Key = 0000000000000000000000000000000000000000000000000000000000002000
-In = 00000000000000000000000000000000
-Out = F718F0FC2A276D6CBB7A2BD59BBC3DB0
-
-Key = 0000000000000000000000000000000000000000000000000000000000001000
-In = 00000000000000000000000000000000
-Out = D89BE6BDD07222EF8297FDD246C3DA09
-
-Key = 0000000000000000000000000000000000000000000000000000000000000800
-In = 00000000000000000000000000000000
-Out = 7013B55968A743157C4959DE2068AC57
-
-Key = 0000000000000000000000000000000000000000000000000000000000000400
-In = 00000000000000000000000000000000
-Out = 758199FCB16B8ADF9B1350A02B10B735
-
-Key = 0000000000000000000000000000000000000000000000000000000000000200
-In = 00000000000000000000000000000000
-Out = 29D38DC5215AA1F3CAEC044C8B472696
-
-Key = 0000000000000000000000000000000000000000000000000000000000000100
-In = 00000000000000000000000000000000
-Out = F5E1BCA4497ED2B1D871B5877C5BE3A8
-
-Key = 0000000000000000000000000000000000000000000000000000000000000080
-In = 00000000000000000000000000000000
-Out = C7388535D265CBFCEDE6423CC29F33A4
-
-Key = 0000000000000000000000000000000000000000000000000000000000000040
-In = 00000000000000000000000000000000
-Out = 84992BD0280C4CDF8B1587D42AA63605
-
-Key = 0000000000000000000000000000000000000000000000000000000000000020
-In = 00000000000000000000000000000000
-Out = 197E91D0F0261D975BA1F6FAA7983E51
-
-Key = 0000000000000000000000000000000000000000000000000000000000000010
-In = 00000000000000000000000000000000
-Out = 644BDF2B1508CFF2E8D791DADC5D4BD6
-
-Key = 0000000000000000000000000000000000000000000000000000000000000008
-In = 00000000000000000000000000000000
-Out = D7BB8C6C07F21F648CE87A17A0589334
-
-Key = 0000000000000000000000000000000000000000000000000000000000000004
-In = 00000000000000000000000000000000
-Out = B6718CB65E557AF3C25D03770AD6B1FA
-
-Key = 0000000000000000000000000000000000000000000000000000000000000002
-In = 00000000000000000000000000000000
-Out = F32E30ADD384B71F7254A15B4042E1F6
-
-Key = 0000000000000000000000000000000000000000000000000000000000000001
-In = 00000000000000000000000000000000
-Out = B5C218F26198EE763B863EDA24446609
-
-Key = 00000000000000000000000000000000
-In = 80000000000000000000000000000000
-Out = D962EFEBA75817BF6ED24BBBB5B7820D
-
-Key = 00000000000000000000000000000000
-In = 40000000000000000000000000000000
-Out = 639B9F07305BCC1D2E64CE3D1671304A
-
-Key = 00000000000000000000000000000000
-In = 20000000000000000000000000000000
-Out = 33ACF35AF3FF94B4C0A59C9035C99E79
-
-Key = 00000000000000000000000000000000
-In = 10000000000000000000000000000000
-Out = C18D6444EE8DEAECC4697D021B9694D2
-
-Key = 00000000000000000000000000000000
-In = 08000000000000000000000000000000
-Out = 37DDA7DC913E6253679EB4A1906AE47C
-
-Key = 00000000000000000000000000000000
-In = 04000000000000000000000000000000
-Out = 1DED0AB726E2358CCB57451EB5A1711A
-
-Key = 00000000000000000000000000000000
-In = 02000000000000000000000000000000
-Out = BFB43CD34EEC7C0A34CD77759E1396CE
-
-Key = 00000000000000000000000000000000
-In = 01000000000000000000000000000000
-Out = 607C0F5FB6A489AED3D3238FB0C51D37
-
-Key = 00000000000000000000000000000000
-In = 00800000000000000000000000000000
-Out = 0EBFB100FBBA1A66319743F846383323
-
-Key = 00000000000000000000000000000000
-In = 00400000000000000000000000000000
-Out = 8ECA01741C7622FB9EB41FD9826EEA32
-
-Key = 00000000000000000000000000000000
-In = 00200000000000000000000000000000
-Out = BC7CABCFE201ECE01A42C2F4C49C1237
-
-Key = 00000000000000000000000000000000
-In = 00100000000000000000000000000000
-Out = 6DD5E5FFF9A41C637553AC4873E118F6
-
-Key = 00000000000000000000000000000000
-In = 00080000000000000000000000000000
-Out = 009DFBAA196DF5257E6F48F3310DDD58
-
-Key = 00000000000000000000000000000000
-In = 00040000000000000000000000000000
-Out = 9A41BD1783AFB149865D341334D8DA3D
-
-Key = 00000000000000000000000000000000
-In = 00020000000000000000000000000000
-Out = 9D3A9D9EA90505D970CA6C1FB39CBE11
-
-Key = 00000000000000000000000000000000
-In = 00010000000000000000000000000000
-Out = 35495878D00360B50D980A6C7B193F2F
-
-Key = 00000000000000000000000000000000
-In = 00008000000000000000000000000000
-Out = 81D74A81C7F5A5316314B02C6DB4BAA6
-
-Key = 00000000000000000000000000000000
-In = 00004000000000000000000000000000
-Out = 4B0B95251D8737013E01F73B71DBEBFE
-
-Key = 00000000000000000000000000000000
-In = 00002000000000000000000000000000
-Out = 8793996649604702198290E258A151DF
-
-Key = 00000000000000000000000000000000
-In = 00001000000000000000000000000000
-Out = 99F161837DF7F24E3748C2BBCD71417F
-
-Key = 00000000000000000000000000000000
-In = 00000800000000000000000000000000
-Out = 305049B5511EA8FBD5C36AB3E62E59EE
-
-Key = 00000000000000000000000000000000
-In = 00000400000000000000000000000000
-Out = 89BF8940DD39B51B35E70F62137AE5EA
-
-Key = 00000000000000000000000000000000
-In = 00000200000000000000000000000000
-Out = 301847CD9DA64B1BFD9E781056457761
-
-Key = 00000000000000000000000000000000
-In = 00000100000000000000000000000000
-Out = 04B0F6A6C8BE9C4A771701DA1F2BD512
-
-Key = 00000000000000000000000000000000
-In = 00000080000000000000000000000000
-Out = 91898CFEE3784B0299A655391057081E
-
-Key = 00000000000000000000000000000000
-In = 00000040000000000000000000000000
-Out = 6515031342504BAC93832D74B18DE5F9
-
-Key = 00000000000000000000000000000000
-In = 00000020000000000000000000000000
-Out = D98ED2EEACB67C0FFDDA9724C309DF25
-
-Key = 00000000000000000000000000000000
-In = 00000010000000000000000000000000
-Out = 4F963C1680E07CA4DD7C3759F848D2CC
-
-Key = 00000000000000000000000000000000
-In = 00000008000000000000000000000000
-Out = B51D85DC8C8F5A7EA15EFBEDBCBFC9E4
-
-Key = 00000000000000000000000000000000
-In = 00000004000000000000000000000000
-Out = F7C45BC3FA262A837C670776238C767E
-
-Key = 00000000000000000000000000000000
-In = 00000002000000000000000000000000
-Out = 5E912791AC2F572389999FD369EC8E37
-
-Key = 00000000000000000000000000000000
-In = 00000001000000000000000000000000
-Out = 7E8C9BA80ADC579747B1E4616D7EC9B3
-
-Key = 00000000000000000000000000000000
-In = 00000000800000000000000000000000
-Out = BF99640F187DB0C2944B959050B62F6D
-
-Key = 00000000000000000000000000000000
-In = 00000000400000000000000000000000
-Out = C5E61399609A0BE02A916D48A8A64C63
-
-Key = 00000000000000000000000000000000
-In = 00000000200000000000000000000000
-Out = 07B4116F41B82767CB72E2E64CC046E3
-
-Key = 00000000000000000000000000000000
-In = 00000000100000000000000000000000
-Out = AB696B5F4E7ABDFCEC1D2DEDAC05E2A0
-
-Key = 00000000000000000000000000000000
-In = 00000000080000000000000000000000
-Out = 50654EE25CF9E493B0B7138EE74BC166
-
-Key = 00000000000000000000000000000000
-In = 00000000040000000000000000000000
-Out = BDA01373F42BFC2B0F723366A46E1FF1
-
-Key = 00000000000000000000000000000000
-In = 00000000020000000000000000000000
-Out = AE25CD3DF7FC7BB8A2E645EBD79D2A29
-
-Key = 00000000000000000000000000000000
-In = 00000000010000000000000000000000
-Out = 644664257BFAD3A0CF16D683A026A72A
-
-Key = 00000000000000000000000000000000
-In = 00000000008000000000000000000000
-Out = 3AD0281E1F1225280383D5B7A3E90B04
-
-Key = 00000000000000000000000000000000
-In = 00000000004000000000000000000000
-Out = 23F2882568F472EBC1B519122823441C
-
-Key = 00000000000000000000000000000000
-In = 00000000002000000000000000000000
-Out = 8DE047245D62895A7E5852CEE8379A4F
-
-Key = 00000000000000000000000000000000
-In = 00000000001000000000000000000000
-Out = 21ADF95994B6FEC5DA6FC40FEA782D79
-
-Key = 00000000000000000000000000000000
-In = 00000000000800000000000000000000
-Out = F2834B5587D63C382DBC397101EBB64F
-
-Key = 00000000000000000000000000000000
-In = 00000000000400000000000000000000
-Out = 884C3D3850DC3EFFEAA0DB8785BEC5E5
-
-Key = 00000000000000000000000000000000
-In = 00000000000200000000000000000000
-Out = 71AB2DB59AE3AAF781DAB5CAD1007975
-
-Key = 00000000000000000000000000000000
-In = 00000000000100000000000000000000
-Out = 7793380505B20B6CDA1A2CEB6AF6D76D
-
-Key = 00000000000000000000000000000000
-In = 00000000000080000000000000000000
-Out = 6A986D4B71CC337450CA165B110414AB
-
-Key = 00000000000000000000000000000000
-In = 00000000000040000000000000000000
-Out = EEC535764784A680C2852BD4B00ED6AC
-
-Key = 00000000000000000000000000000000
-In = 00000000000020000000000000000000
-Out = 431A4B03918BD1A65D3523D63C7CBCA9
-
-Key = 00000000000000000000000000000000
-In = 00000000000010000000000000000000
-Out = 6E657880D84A51B2241109E82B2A7EEE
-
-Key = 00000000000000000000000000000000
-In = 00000000000008000000000000000000
-Out = B4D163CFD4279B1F9DA0E1FC8616940C
-
-Key = 00000000000000000000000000000000
-In = 00000000000004000000000000000000
-Out = 552143C6F2B0A0AB82B2AD487BD74DF4
-
-Key = 00000000000000000000000000000000
-In = 00000000000002000000000000000000
-Out = A8CED7B931A5AD407DDEF7F4510DBA70
-
-Key = 00000000000000000000000000000000
-In = 00000000000001000000000000000000
-Out = 55BB234ED4164A9CC028C9C9DADA8A06
-
-Key = 00000000000000000000000000000000
-In = 00000000000000800000000000000000
-Out = 0576F9792BA215C89BE0C86D8B3E84B6
-
-Key = 00000000000000000000000000000000
-In = 00000000000000400000000000000000
-Out = C117C7A4AF79DEECC8C18E8138BD4F78
-
-Key = 00000000000000000000000000000000
-In = 00000000000000200000000000000000
-Out = 92FC2FDE8E99F5ECF5DFFB2B005C3790
-
-Key = 00000000000000000000000000000000
-In = 00000000000000100000000000000000
-Out = F3C94469F9B4166B76A7DA55FC45EE2B
-
-Key = 00000000000000000000000000000000
-In = 00000000000000080000000000000000
-Out = 4C3A60421F79015B99A9B928477CC451
-
-Key = 00000000000000000000000000000000
-In = 00000000000000040000000000000000
-Out = ED6A1AF53574213F41812E8F5D41536B
-
-Key = 00000000000000000000000000000000
-In = 00000000000000020000000000000000
-Out = AF39A2A89D48B0A2F519B39F3DD4A7E9
-
-Key = 00000000000000000000000000000000
-In = 00000000000000010000000000000000
-Out = 7F75ED2F965C9ED280CFA16B934E81D9
-
-Key = 00000000000000000000000000000000
-In = 00000000000000008000000000000000
-Out = B92C3EEB72B6BFD288E1F38D64248E93
-
-Key = 00000000000000000000000000000000
-In = 00000000000000004000000000000000
-Out = 6FE1E1883D78ADF9FD415265A539D61C
-
-Key = 00000000000000000000000000000000
-In = 00000000000000002000000000000000
-Out = D5ABB34FC2D207FB0F8DF60DA81B9661
-
-Key = 00000000000000000000000000000000
-In = 00000000000000001000000000000000
-Out = 751327283356553AF48AB6ED21DCE7C5
-
-Key = 00000000000000000000000000000000
-In = 00000000000000000800000000000000
-Out = B826F4F7B5C5DF743C87EE73119D71FF
-
-Key = 00000000000000000000000000000000
-In = 00000000000000000400000000000000
-Out = ACC2FA1CBD0FA5F8AAF147396AA72EF1
-
-Key = 00000000000000000000000000000000
-In = 00000000000000000200000000000000
-Out = F9F02491D78EA3B140D368CA71F0D6D4
-
-Key = 00000000000000000000000000000000
-In = 00000000000000000100000000000000
-Out = A414990595D6E5E3C657B3190A1AE3C6
-
-Key = 00000000000000000000000000000000
-In = 00000000000000000080000000000000
-Out = 478FCFBDB52A6CDA402217483E26604F
-
-Key = 00000000000000000000000000000000
-In = 00000000000000000040000000000000
-Out = DE5E798198E306A2FF47F4F2DB7B3E2F
-
-Key = 00000000000000000000000000000000
-In = 00000000000000000020000000000000
-Out = B42E74D15CA26D9CC358A5E2B1F9DD70
-
-Key = 00000000000000000000000000000000
-In = 00000000000000000010000000000000
-Out = 2800BCF67B76D76F7D0070950A85A20C
-
-Key = 00000000000000000000000000000000
-In = 00000000000000000008000000000000
-Out = 808F9BE49A31AD5D0A62094A55372D64
-
-Key = 00000000000000000000000000000000
-In = 00000000000000000004000000000000
-Out = DAA7291D3A3289EAD026121F8CE16151
-
-Key = 00000000000000000000000000000000
-In = 00000000000000000002000000000000
-Out = 93D7139BC6A67316FFAFEC2ACC89D245
-
-Key = 00000000000000000000000000000000
-In = 00000000000000000001000000000000
-Out = 15D1444811E90AD554E50973F32B8AD6
-
-Key = 00000000000000000000000000000000
-In = 00000000000000000000800000000000
-Out = 636FF061A2FCA2EAA8DFD3A195E8BA4F
-
-Key = 00000000000000000000000000000000
-In = 00000000000000000000400000000000
-Out = A2FBB57034BCF5E89E1495C216A44917
-
-Key = 00000000000000000000000000000000
-In = 00000000000000000000200000000000
-Out = 7B370D533113C91233BBDC73B14B121F
-
-Key = 00000000000000000000000000000000
-In = 00000000000000000000100000000000
-Out = F21BC7D2EB7541EB3F0B40394FA064C7
-
-Key = 00000000000000000000000000000000
-In = 00000000000000000000080000000000
-Out = BAAD725D1BEBC934FEC792D158163DD5
-
-Key = 00000000000000000000000000000000
-In = 00000000000000000000040000000000
-Out = ED50A592E0D2DE126BC97FD8DAD20919
-
-Key = 00000000000000000000000000000000
-In = 00000000000000000000020000000000
-Out = 11DB39B92B98A4719FE345FC44082787
-
-Key = 00000000000000000000000000000000
-In = 00000000000000000000010000000000
-Out = 43B1AA58C190006D5EA3F6B708B90509
-
-Key = 00000000000000000000000000000000
-In = 00000000000000000000008000000000
-Out = 8A19FB44B5962288640F48B27286904A
-
-Key = 00000000000000000000000000000000
-In = 00000000000000000000004000000000
-Out = C19B0558E72BABB1B9275EE8B48B9017
-
-Key = 00000000000000000000000000000000
-In = 00000000000000000000002000000000
-Out = 587D8A04B1958388D69F26E4106D8232
-
-Key = 00000000000000000000000000000000
-In = 00000000000000000000001000000000
-Out = B53EB6177E1BC1C083E743878F476003
-
-Key = 00000000000000000000000000000000
-In = 00000000000000000000000800000000
-Out = A42E251AF82C03E4ADB9E5872AD8F7B2
-
-Key = 00000000000000000000000000000000
-In = 00000000000000000000000400000000
-Out = E2585AE29C6054CBDA85B6AA00D88C90
-
-Key = 00000000000000000000000000000000
-In = 00000000000000000000000200000000
-Out = 3F6364A00BDCF925C6D62BA15DF56234
-
-Key = 00000000000000000000000000000000
-In = 00000000000000000000000100000000
-Out = 6ECB0E56F218E4D1E790C34BBBCA06B8
-
-Key = 00000000000000000000000000000000
-In = 00000000000000000000000080000000
-Out = 02ACC5470DD8D223ECB12339750D3BC0
-
-Key = 00000000000000000000000000000000
-In = 00000000000000000000000040000000
-Out = D67A590C0AB3B3E47406D19DB9F0A21F
-
-Key = 00000000000000000000000000000000
-In = 00000000000000000000000020000000
-Out = 2B5CF7D06148DF6448016FB40FBF9F53
-
-Key = 00000000000000000000000000000000
-In = 00000000000000000000000010000000
-Out = 4D635C044E9ACA243BA1F68268789D41
-
-Key = 00000000000000000000000000000000
-In = 00000000000000000000000008000000
-Out = 0118FE9B311429CC06F01AA150D1FF08
-
-Key = 00000000000000000000000000000000
-In = 00000000000000000000000004000000
-Out = 1E8AB1853E0D2F0E9FD49FE5285611AD
-
-Key = 00000000000000000000000000000000
-In = 00000000000000000000000002000000
-Out = E521BDB90371FAEC980E1EAC85C10137
-
-Key = 00000000000000000000000000000000
-In = 00000000000000000000000001000000
-Out = E2B8BB4A2EDF3DA04F6934EEF903DF17
-
-Key = 00000000000000000000000000000000
-In = 00000000000000000000000000800000
-Out = 75528623E760DD71612DA5F9374EC616
-
-Key = 00000000000000000000000000000000
-In = 00000000000000000000000000400000
-Out = 1FCEBEA2DDEDF905D645E1A03E2584EF
-
-Key = 00000000000000000000000000000000
-In = 00000000000000000000000000200000
-Out = 4AC71EB7EBDA9AD47531FCAB0D34FA5A
-
-Key = 00000000000000000000000000000000
-In = 00000000000000000000000000100000
-Out = 0458B8910A076F39CAAE517F5E3E4D59
-
-Key = 00000000000000000000000000000000
-In = 00000000000000000000000000080000
-Out = F5D01E6C7FA961F6AA1B94FFBFA59672
-
-Key = 00000000000000000000000000000000
-In = 00000000000000000000000000040000
-Out = 652473292C5C5764658F8E1FF91B21F8
-
-Key = 00000000000000000000000000000000
-In = 00000000000000000000000000020000
-Out = 05D5357FD61285F1B9FC19EB2BBF01C8
-
-Key = 00000000000000000000000000000000
-In = 00000000000000000000000000010000
-Out = 2D379505C15DD6C1AD7544CB375720E1
-
-Key = 00000000000000000000000000000000
-In = 00000000000000000000000000008000
-Out = D5918DFA1A722206C89E7B5D518BB28D
-
-Key = 00000000000000000000000000000000
-In = 00000000000000000000000000004000
-Out = 30C3BBEC945657A6EC5B9222BC36DB0B
-
-Key = 00000000000000000000000000000000
-In = 00000000000000000000000000002000
-Out = 041305F2248F1FD0EC6181B4D6B619D3
-
-Key = 00000000000000000000000000000000
-In = 00000000000000000000000000001000
-Out = C275B6410A77513E4F33C21F9BC11924
-
-Key = 00000000000000000000000000000000
-In = 00000000000000000000000000000800
-Out = EECA71E0036A80BBAAAE62400EA1A237
-
-Key = 00000000000000000000000000000000
-In = 00000000000000000000000000000400
-Out = 1025F24952D1691730DAD7CAF09C32C0
-
-Key = 00000000000000000000000000000000
-In = 00000000000000000000000000000200
-Out = FB7830146AC03E32BE6D03A4AE839E97
-
-Key = 00000000000000000000000000000000
-In = 00000000000000000000000000000100
-Out = A91E3D5B9DDC4F0315E718B4C190CBA9
-
-Key = 00000000000000000000000000000000
-In = 00000000000000000000000000000080
-Out = 79FBBF61CB27651FBA333B9FFAF60F31
-
-Key = 00000000000000000000000000000000
-In = 00000000000000000000000000000040
-Out = FF598CBF22746883F86DAD6D679DC85E
-
-Key = 00000000000000000000000000000000
-In = 00000000000000000000000000000020
-Out = FA0ED9A5406FC13E532FDB74988A9554
-
-Key = 00000000000000000000000000000000
-In = 00000000000000000000000000000010
-Out = 36DEA77F6832D3C81776801AFF839069
-
-Key = 00000000000000000000000000000000
-In = 00000000000000000000000000000008
-Out = 262855946EE434D4F0DF924BAB0311BE
-
-Key = 00000000000000000000000000000000
-In = 00000000000000000000000000000004
-Out = 01FF81B0107BEFA8427260954C7CD50C
-
-Key = 00000000000000000000000000000000
-In = 00000000000000000000000000000002
-Out = 61DF2C54CDF545F8E774D50C8FF59752
-
-Key = 00000000000000000000000000000000
-In = 00000000000000000000000000000001
-Out = 45F21B1FD1099CB36C64435337BAB3E3
-
-Key = 000000000000000000000000000000000000000000000000
-In = 80000000000000000000000000000000
-Out = 4433FCCBF2D4AA14783835D0968BB7A6
-
-Key = 000000000000000000000000000000000000000000000000
-In = 40000000000000000000000000000000
-Out = D565448D0753F08C6108B10CCEB4F213
-
-Key = 000000000000000000000000000000000000000000000000
-In = 20000000000000000000000000000000
-Out = 1F2B7678DB0B0C33F2F5531FCB71D97E
-
-Key = 000000000000000000000000000000000000000000000000
-In = 10000000000000000000000000000000
-Out = 8025160E9E0DF83CAC559816D3BA4AEA
-
-Key = 000000000000000000000000000000000000000000000000
-In = 08000000000000000000000000000000
-Out = A0F5D4524C743641214BD088EE9A4A0F
-
-Key = 000000000000000000000000000000000000000000000000
-In = 04000000000000000000000000000000
-Out = A2981925C529529B068FC1109A509836
-
-Key = 000000000000000000000000000000000000000000000000
-In = 02000000000000000000000000000000
-Out = AF60EDCB3C0FE50E4FE093509C1A87F6
-
-Key = 000000000000000000000000000000000000000000000000
-In = 01000000000000000000000000000000
-Out = 6F475AF136CC10485515C95773A74AD2
-
-Key = 000000000000000000000000000000000000000000000000
-In = 00800000000000000000000000000000
-Out = 6E09A8F5626CE2364668F8254F192E5A
-
-Key = 000000000000000000000000000000000000000000000000
-In = 00400000000000000000000000000000
-Out = 5DE55C749F91D9392A87CA423F00FF95
-
-Key = 000000000000000000000000000000000000000000000000
-In = 00200000000000000000000000000000
-Out = 4CD217660FCE3BD43999AC8353503118
-
-Key = 000000000000000000000000000000000000000000000000
-In = 00100000000000000000000000000000
-Out = 94B45B0665BCB3FC486CFD980546E934
-
-Key = 000000000000000000000000000000000000000000000000
-In = 00080000000000000000000000000000
-Out = F924999F0213FE2DE932D1D072FBD38B
-
-Key = 000000000000000000000000000000000000000000000000
-In = 00040000000000000000000000000000
-Out = B64F96119ED3F9FD37A826E7A48C4F94
-
-Key = 000000000000000000000000000000000000000000000000
-In = 00020000000000000000000000000000
-Out = 63E59879D0A422CD030E51727F379CC0
-
-Key = 000000000000000000000000000000000000000000000000
-In = 00010000000000000000000000000000
-Out = 62B160854BBA6DB3EB960EDF53A60663
-
-Key = 000000000000000000000000000000000000000000000000
-In = 00008000000000000000000000000000
-Out = 39A8147579540CC5A1F32F87768A4E3B
-
-Key = 000000000000000000000000000000000000000000000000
-In = 00004000000000000000000000000000
-Out = 1B201066BC1D0173089BD0346C57630C
-
-Key = 000000000000000000000000000000000000000000000000
-In = 00002000000000000000000000000000
-Out = 2818D6897E7AF26CF08409C1BBCDA8FC
-
-Key = 000000000000000000000000000000000000000000000000
-In = 00001000000000000000000000000000
-Out = 8BCE5EE56402A19BB29979A05AB3EFF8
-
-Key = 000000000000000000000000000000000000000000000000
-In = 00000800000000000000000000000000
-Out = 4F8B1F65E7CE872E514B53BE8DE8759A
-
-Key = 000000000000000000000000000000000000000000000000
-In = 00000400000000000000000000000000
-Out = 3145B8EBF046F533D5378BBDF9C9E4F8
-
-Key = 000000000000000000000000000000000000000000000000
-In = 00000200000000000000000000000000
-Out = 49E18ADC2929D19B61389C698DCEE532
-
-Key = 000000000000000000000000000000000000000000000000
-In = 00000100000000000000000000000000
-Out = BC7C0A8FDBEB8B63608F0BEF9C1E396F
-
-Key = 000000000000000000000000000000000000000000000000
-In = 00000080000000000000000000000000
-Out = 89F15AD40BB43B2284B3563F2C974023
-
-Key = 000000000000000000000000000000000000000000000000
-In = 00000040000000000000000000000000
-Out = BB60A7897D5F438651EE13C02B5AA790
-
-Key = 000000000000000000000000000000000000000000000000
-In = 00000020000000000000000000000000
-Out = 946FB4349CE2935BE1CCE99A2A01A6C9
-
-Key = 000000000000000000000000000000000000000000000000
-In = 00000010000000000000000000000000
-Out = 90EA5937B4E393E34B4E60C787B33E2F
-
-Key = 000000000000000000000000000000000000000000000000
-In = 00000008000000000000000000000000
-Out = C5884097BC796E63B3046CB031919D15
-
-Key = 000000000000000000000000000000000000000000000000
-In = 00000004000000000000000000000000
-Out = 06DC71C7CB99EF0B2EA4379CE5451E81
-
-Key = 000000000000000000000000000000000000000000000000
-In = 00000002000000000000000000000000
-Out = 8A85BC61EAF50F065CB769B48243E51B
-
-Key = 000000000000000000000000000000000000000000000000
-In = 00000001000000000000000000000000
-Out = 482E708D7AAA9637674AE923E2128BB5
-
-Key = 000000000000000000000000000000000000000000000000
-In = 00000000800000000000000000000000
-Out = 1977127839A3FD886B5ACF2753A28D9F
-
-Key = 000000000000000000000000000000000000000000000000
-In = 00000000400000000000000000000000
-Out = 39A993ED3ED7F4A1557FF18ADFE55CCD
-
-Key = 000000000000000000000000000000000000000000000000
-In = 00000000200000000000000000000000
-Out = 8995CF677F032B100EF2FBA632AA4D67
-
-Key = 000000000000000000000000000000000000000000000000
-In = 00000000100000000000000000000000
-Out = B54C94BC29029F9DC78BAE0908B543C9
-
-Key = 000000000000000000000000000000000000000000000000
-In = 00000000080000000000000000000000
-Out = CD0A7D015E352D8B27687ED66B45C64D
-
-Key = 000000000000000000000000000000000000000000000000
-In = 00000000040000000000000000000000
-Out = F4E89BBAAA6DCB96952662F88DB0A60D
-
-Key = 000000000000000000000000000000000000000000000000
-In = 00000000020000000000000000000000
-Out = 37FA1912B2636F3982A768C5208267B3
-
-Key = 000000000000000000000000000000000000000000000000
-In = 00000000010000000000000000000000
-Out = C5F27B0B8B93C4F693510EDAB0560073
-
-Key = 000000000000000000000000000000000000000000000000
-In = 00000000008000000000000000000000
-Out = EAD47638DF1D0AB1D3441D5B77A7459D
-
-Key = 000000000000000000000000000000000000000000000000
-In = 00000000004000000000000000000000
-Out = A9198F0441AAA6B84DB891AF859145E0
-
-Key = 000000000000000000000000000000000000000000000000
-In = 00000000002000000000000000000000
-Out = 99604EEF14A27550AA1F58510BC6C745
-
-Key = 000000000000000000000000000000000000000000000000
-In = 00000000001000000000000000000000
-Out = 133CE0B0F01E22DB16B51F6074A570E0
-
-Key = 000000000000000000000000000000000000000000000000
-In = 00000000000800000000000000000000
-Out = 6E2503C056B37957BC00249175B6A829
-
-Key = 000000000000000000000000000000000000000000000000
-In = 00000000000400000000000000000000
-Out = 8076A054B269283F5063CF9EDAFF721E
-
-Key = 000000000000000000000000000000000000000000000000
-In = 00000000000200000000000000000000
-Out = 6ADC87C1A40ABF8DA9FF4DA863C4AAA1
-
-Key = 000000000000000000000000000000000000000000000000
-In = 00000000000100000000000000000000
-Out = 676953B542456DDD155467F7F6E51C2A
-
-Key = 000000000000000000000000000000000000000000000000
-In = 00000000000080000000000000000000
-Out = 441D72C0FB4A79E4451B9B0D3571E1E4
-
-Key = 000000000000000000000000000000000000000000000000
-In = 00000000000040000000000000000000
-Out = 642DC2A4A84229406ADFE681FD1D2F51
-
-Key = 000000000000000000000000000000000000000000000000
-In = 00000000000020000000000000000000
-Out = CA1DF7DBF4163F601ED11216767E8C79
-
-Key = 000000000000000000000000000000000000000000000000
-In = 00000000000010000000000000000000
-Out = F8EBCE557E084052E74A5DEB45439D6A
-
-Key = 000000000000000000000000000000000000000000000000
-In = 00000000000008000000000000000000
-Out = 589606504D2BBC4A85507D61AD1AE6E1
-
-Key = 000000000000000000000000000000000000000000000000
-In = 00000000000004000000000000000000
-Out = 5627DFEFE159A8FEF32FDC29321CC705
-
-Key = 000000000000000000000000000000000000000000000000
-In = 00000000000002000000000000000000
-Out = BFC074B43DD81ED778082FB83AAB8D8D
-
-Key = 000000000000000000000000000000000000000000000000
-In = 00000000000001000000000000000000
-Out = 6DF74B1434C13343CAE51F38BABDF4BF
-
-Key = 000000000000000000000000000000000000000000000000
-In = 00000000000000800000000000000000
-Out = 1C9B11549C831CE68C7CE061F1CCFCEE
-
-Key = 000000000000000000000000000000000000000000000000
-In = 00000000000000400000000000000000
-Out = 31D07F177D35A6EE067C75C5B1F3D728
-
-Key = 000000000000000000000000000000000000000000000000
-In = 00000000000000200000000000000000
-Out = D4B7FA191B9414FF3D293BC76C2E12A6
-
-Key = 000000000000000000000000000000000000000000000000
-In = 00000000000000100000000000000000
-Out = 9D7AA5550DAE2B1B7D608147009DFE2B
-
-Key = 000000000000000000000000000000000000000000000000
-In = 00000000000000080000000000000000
-Out = 5266FA9AB29440558FB71EDA1B43BFBA
-
-Key = 000000000000000000000000000000000000000000000000
-In = 00000000000000040000000000000000
-Out = 2CF722D01CB1EAE802C78FB22AF095B2
-
-Key = 000000000000000000000000000000000000000000000000
-In = 00000000000000020000000000000000
-Out = B3C02698C56AB6D3EFCB90AC81CBD787
-
-Key = 000000000000000000000000000000000000000000000000
-In = 00000000000000010000000000000000
-Out = FBF4F2DC7FD1A9F6D4C8B8BFA3AA81FB
-
-Key = 000000000000000000000000000000000000000000000000
-In = 00000000000000008000000000000000
-Out = 32D300D0B845E26F7A0505AAB453E0B2
-
-Key = 000000000000000000000000000000000000000000000000
-In = 00000000000000004000000000000000
-Out = EAA724538478C450FE5E893DFD206D5B
-
-Key = 000000000000000000000000000000000000000000000000
-In = 00000000000000002000000000000000
-Out = 346E15BA10E1B15D2DE2A862C8BAB645
-
-Key = 000000000000000000000000000000000000000000000000
-In = 00000000000000001000000000000000
-Out = 67E87A345284D00742FF8E0D6C67C677
-
-Key = 000000000000000000000000000000000000000000000000
-In = 00000000000000000800000000000000
-Out = D9FF605AF934D4EA36BB4D4678D250A5
-
-Key = 000000000000000000000000000000000000000000000000
-In = 00000000000000000400000000000000
-Out = C6BAAD911C8D06461FEB1C8FD73A1163
-
-Key = 000000000000000000000000000000000000000000000000
-In = 00000000000000000200000000000000
-Out = AFE155824F95065479A7326AF6FFAD5C
-
-Key = 000000000000000000000000000000000000000000000000
-In = 00000000000000000100000000000000
-Out = DAFA519AB33BC01A665BD43D7B578716
-
-Key = 000000000000000000000000000000000000000000000000
-In = 00000000000000000080000000000000
-Out = AB1A3C2AEA2AB0873FCE9B193AC3CE26
-
-Key = 000000000000000000000000000000000000000000000000
-In = 00000000000000000040000000000000
-Out = DB4E325C5F0C6A2A80A97FB53629CA42
-
-Key = 000000000000000000000000000000000000000000000000
-In = 00000000000000000020000000000000
-Out = AA0B63CE9363BCDC1840FE6DF3EEF598
-
-Key = 000000000000000000000000000000000000000000000000
-In = 00000000000000000010000000000000
-Out = 564F6ED396958B6CD1C5156F30F12BD3
-
-Key = 000000000000000000000000000000000000000000000000
-In = 00000000000000000008000000000000
-Out = 59CAEE5DD9D6D8A17DCD5761F285ACCD
-
-Key = 000000000000000000000000000000000000000000000000
-In = 00000000000000000004000000000000
-Out = 4CAC1BC4EBF467854A15DDBC9410E30E
-
-Key = 000000000000000000000000000000000000000000000000
-In = 00000000000000000002000000000000
-Out = 9D432A8BC205B2DAE6ED10E5D2573DB5
-
-Key = 000000000000000000000000000000000000000000000000
-In = 00000000000000000001000000000000
-Out = A1B2A6D98E8331CA5D2605C5053AE8D8
-
-Key = 000000000000000000000000000000000000000000000000
-In = 00000000000000000000800000000000
-Out = CD3676661A44F4509EFBFFB4ED5AD60D
-
-Key = 000000000000000000000000000000000000000000000000
-In = 00000000000000000000400000000000
-Out = 0E367EE025F2FF821D5F0B89FCECFFA9
-
-Key = 000000000000000000000000000000000000000000000000
-In = 00000000000000000000200000000000
-Out = 5F60D9B6A93F1F1B531A9D26C7465114
-
-Key = 000000000000000000000000000000000000000000000000
-In = 00000000000000000000100000000000
-Out = E5753FFD3DF072BCD07292484E9AF749
-
-Key = 000000000000000000000000000000000000000000000000
-In = 00000000000000000000080000000000
-Out = 25F43090C51DFE3C48DB6F391B489669
-
-Key = 000000000000000000000000000000000000000000000000
-In = 00000000000000000000040000000000
-Out = AE817F28DEE664D2B9739BF93AA73B1E
-
-Key = 000000000000000000000000000000000000000000000000
-In = 00000000000000000000020000000000
-Out = F1D08CAFE3F5E56C18237E777C731DDD
-
-Key = 000000000000000000000000000000000000000000000000
-In = 00000000000000000000010000000000
-Out = 6ECFB7B90D05650F97B5D6D7F677ECE9
-
-Key = 000000000000000000000000000000000000000000000000
-In = 00000000000000000000008000000000
-Out = FEA1BF5FD0BCFA04E0D906B4C5F8C51A
-
-Key = 000000000000000000000000000000000000000000000000
-In = 00000000000000000000004000000000
-Out = 0739D17249C17E813B7716212E4E32F3
-
-Key = 000000000000000000000000000000000000000000000000
-In = 00000000000000000000002000000000
-Out = 81AA866868D538D53194B5B5D7014BD0
-
-Key = 000000000000000000000000000000000000000000000000
-In = 00000000000000000000001000000000
-Out = E3CC87289C585148267231499BADA0F0
-
-Key = 000000000000000000000000000000000000000000000000
-In = 00000000000000000000000800000000
-Out = 2016EF8808F2B5C38B0F790C5A81E9F7
-
-Key = 000000000000000000000000000000000000000000000000
-In = 00000000000000000000000400000000
-Out = 7F06EC5E639B36CD7482E5D3568DD54E
-
-Key = 000000000000000000000000000000000000000000000000
-In = 00000000000000000000000200000000
-Out = 9A066E0A89EDFF5F26F00F8CC76710B7
-
-Key = 000000000000000000000000000000000000000000000000
-In = 00000000000000000000000100000000
-Out = 49A6ED8109D54E6628CD4F6418B788D4
-
-Key = 000000000000000000000000000000000000000000000000
-In = 00000000000000000000000080000000
-Out = 4C3F149C3D7A196B8F61AFF5691950FB
-
-Key = 000000000000000000000000000000000000000000000000
-In = 00000000000000000000000040000000
-Out = 85B54F82B4586B3396C2200DFF3B26CC
-
-Key = 000000000000000000000000000000000000000000000000
-In = 00000000000000000000000020000000
-Out = 705B756847815F1D0DA8D55A45F91BF5
-
-Key = 000000000000000000000000000000000000000000000000
-In = 00000000000000000000000010000000
-Out = 4C81CA819469B5A80EB6AF78BB91570D
-
-Key = 000000000000000000000000000000000000000000000000
-In = 00000000000000000000000008000000
-Out = 5D057D02E17129A43E0B68D9425917CA
-
-Key = 000000000000000000000000000000000000000000000000
-In = 00000000000000000000000004000000
-Out = E472655E64E637CCD7D1FD3D46970F34
-
-Key = 000000000000000000000000000000000000000000000000
-In = 00000000000000000000000002000000
-Out = 05B3391A2CABBED3F1AE0EBAEF6D61B3
-
-Key = 000000000000000000000000000000000000000000000000
-In = 00000000000000000000000001000000
-Out = 96D1DAD8F5083314D8185517614E2E3B
-
-Key = 000000000000000000000000000000000000000000000000
-In = 00000000000000000000000000800000
-Out = B4054DBFE0DB6487C90505273A5FF3B1
-
-Key = 000000000000000000000000000000000000000000000000
-In = 00000000000000000000000000400000
-Out = 4E766330F2C22059E59B5C8972AA2AFC
-
-Key = 000000000000000000000000000000000000000000000000
-In = 00000000000000000000000000200000
-Out = 78AB8FC7997E2B63B59DC80F4F560D95
-
-Key = 000000000000000000000000000000000000000000000000
-In = 00000000000000000000000000100000
-Out = 059181B7493B3D66B61CC663B58D7860
-
-Key = 000000000000000000000000000000000000000000000000
-In = 00000000000000000000000000080000
-Out = 4149CD202F19C2BBF631FC2BA8FFDF41
-
-Key = 000000000000000000000000000000000000000000000000
-In = 00000000000000000000000000040000
-Out = 6465A8757C3E9E5D9A98EEF1CEE37324
-
-Key = 000000000000000000000000000000000000000000000000
-In = 00000000000000000000000000020000
-Out = 06A7F1D391336FFBEA9986A82BAFFD02
-
-Key = 000000000000000000000000000000000000000000000000
-In = 00000000000000000000000000010000
-Out = 6204BFF718C247F7A909C4FD4CB6444D
-
-Key = 000000000000000000000000000000000000000000000000
-In = 00000000000000000000000000008000
-Out = 4B815F5F654E7C6E9B135D14773BF419
-
-Key = 000000000000000000000000000000000000000000000000
-In = 00000000000000000000000000004000
-Out = D18FBE3FAACC1722641E66DB74220E98
-
-Key = 000000000000000000000000000000000000000000000000
-In = 00000000000000000000000000002000
-Out = 6E473DD470E74E9066FE07297434D8A4
-
-Key = 000000000000000000000000000000000000000000000000
-In = 00000000000000000000000000001000
-Out = E6FD048EB622EE77A092E1818472C477
-
-Key = 000000000000000000000000000000000000000000000000
-In = 00000000000000000000000000000800
-Out = 2DCD5664A1151BF563F25E86B69767E4
-
-Key = 000000000000000000000000000000000000000000000000
-In = 00000000000000000000000000000400
-Out = 3455215DFA380B77C931C262A38B01EE
-
-Key = 000000000000000000000000000000000000000000000000
-In = 00000000000000000000000000000200
-Out = 7470C0914B4AA37DB90DCDD87A253D94
-
-Key = 000000000000000000000000000000000000000000000000
-In = 00000000000000000000000000000100
-Out = CB15F18A9A66397EAC67FAC2BA875EE5
-
-Key = 000000000000000000000000000000000000000000000000
-In = 00000000000000000000000000000080
-Out = 5F273D6F25D09AFE351CE02016E18218
-
-Key = 000000000000000000000000000000000000000000000000
-In = 00000000000000000000000000000040
-Out = CA995621063500658C47AAD5C89BE0FE
-
-Key = 000000000000000000000000000000000000000000000000
-In = 00000000000000000000000000000020
-Out = 70724F68B3D09917AB7286449BCC71F3
-
-Key = 000000000000000000000000000000000000000000000000
-In = 00000000000000000000000000000010
-Out = 10769D43746A1DBFB7CEEDD1EB9EBB0E
-
-Key = 000000000000000000000000000000000000000000000000
-In = 00000000000000000000000000000008
-Out = 87F113ABDF184062224235392A20AF11
-
-Key = 000000000000000000000000000000000000000000000000
-In = 00000000000000000000000000000004
-Out = 7D237E25D34FEC04FC635884B1342EC3
-
-Key = 000000000000000000000000000000000000000000000000
-In = 00000000000000000000000000000002
-Out = 435B4DA29136AAA1275EF16F5394A235
-
-Key = 000000000000000000000000000000000000000000000000
-In = 00000000000000000000000000000001
-Out = 70051777D259550440C9BB7884DFFBFA
-
-Key = 0000000000000000000000000000000000000000000000000000000000000000
-In = 80000000000000000000000000000000
-Out = 7DEC45D013733A2FC3ACB05AC5EDCDA0
-
-Key = 0000000000000000000000000000000000000000000000000000000000000000
-In = 40000000000000000000000000000000
-Out = A0CEAF180B51BFD4781D46CD10160457
-
-Key = 0000000000000000000000000000000000000000000000000000000000000000
-In = 20000000000000000000000000000000
-Out = 498CEEDE242280926B1583FB4A2F9073
-
-Key = 0000000000000000000000000000000000000000000000000000000000000000
-In = 10000000000000000000000000000000
-Out = 39E60B423F54786849C6E0BA2AF6BDD3
-
-Key = 0000000000000000000000000000000000000000000000000000000000000000
-In = 08000000000000000000000000000000
-Out = CA6680EA57E0FE1628DC26EA79C948EA
-
-Key = 0000000000000000000000000000000000000000000000000000000000000000
-In = 04000000000000000000000000000000
-Out = CA14A0AF4CF3D1C3615204EB95F216CC
-
-Key = 0000000000000000000000000000000000000000000000000000000000000000
-In = 02000000000000000000000000000000
-Out = 2D5A5029679E795D4F49CF1E7AA525FF
-
-Key = 0000000000000000000000000000000000000000000000000000000000000000
-In = 01000000000000000000000000000000
-Out = 5AAD27C9EABDAAD2296718BB0118871E
-
-Key = 0000000000000000000000000000000000000000000000000000000000000000
-In = 00800000000000000000000000000000
-Out = 80CA60282018A1DD71762D84750EB459
-
-Key = 0000000000000000000000000000000000000000000000000000000000000000
-In = 00400000000000000000000000000000
-Out = E2250B330EC2C407295F2A1BC8B33330
-
-Key = 0000000000000000000000000000000000000000000000000000000000000000
-In = 00200000000000000000000000000000
-Out = 210CEBA6B53AC0DE78757CDC785C6A35
-
-Key = 0000000000000000000000000000000000000000000000000000000000000000
-In = 00100000000000000000000000000000
-Out = 053FC841A2E3D6037B34CB9C7CCC0CFB
-
-Key = 0000000000000000000000000000000000000000000000000000000000000000
-In = 00080000000000000000000000000000
-Out = DED4DA1EFC0FCF248E9DA7885CA54A32
-
-Key = 0000000000000000000000000000000000000000000000000000000000000000
-In = 00040000000000000000000000000000
-Out = BAE5DF7B5CB001EFCB26C5AA2DD2588D
-
-Key = 0000000000000000000000000000000000000000000000000000000000000000
-In = 00020000000000000000000000000000
-Out = 9DD5C8DC680CC10FAF75B19331ED9FCD
-
-Key = 0000000000000000000000000000000000000000000000000000000000000000
-In = 00010000000000000000000000000000
-Out = D348D0D2E64F7C6B3EBC0844EA93A77E
-
-Key = 0000000000000000000000000000000000000000000000000000000000000000
-In = 00008000000000000000000000000000
-Out = E3AEE8A29AD4A08D979F08F030650A24
-
-Key = 0000000000000000000000000000000000000000000000000000000000000000
-In = 00004000000000000000000000000000
-Out = 272797A77F83C01290E213B511A1659E
-
-Key = 0000000000000000000000000000000000000000000000000000000000000000
-In = 00002000000000000000000000000000
-Out = B2E84007CACDA6638F4391ACCC8DD245
-
-Key = 0000000000000000000000000000000000000000000000000000000000000000
-In = 00001000000000000000000000000000
-Out = EAA21531B492A737DDCB7EF2D8D4022A
-
-Key = 0000000000000000000000000000000000000000000000000000000000000000
-In = 00000800000000000000000000000000
-Out = 0DCF4259CFB5D0DEFA7C1DD26C5AE728
-
-Key = 0000000000000000000000000000000000000000000000000000000000000000
-In = 00000400000000000000000000000000
-Out = 1B3596ABDAB6FE10E574A0505AE5EC1F
-
-Key = 0000000000000000000000000000000000000000000000000000000000000000
-In = 00000200000000000000000000000000
-Out = 0B07CA48F49D189E2E343D83D54784A1
-
-Key = 0000000000000000000000000000000000000000000000000000000000000000
-In = 00000100000000000000000000000000
-Out = BB4977183CE7D829F90C1A4A0C0AD921
-
-Key = 0000000000000000000000000000000000000000000000000000000000000000
-In = 00000080000000000000000000000000
-Out = A30AAD2751895E667AF64C24F127EE00
-
-Key = 0000000000000000000000000000000000000000000000000000000000000000
-In = 00000040000000000000000000000000
-Out = 1D407E4971F586E8BAFD780411DAB446
-
-Key = 0000000000000000000000000000000000000000000000000000000000000000
-In = 00000020000000000000000000000000
-Out = 287E1CBFA05A25B90B94B0D1769DB4BE
-
-Key = 0000000000000000000000000000000000000000000000000000000000000000
-In = 00000010000000000000000000000000
-Out = FEEE919F6634BFDEFD6950CA84FE7DDE
-
-Key = 0000000000000000000000000000000000000000000000000000000000000000
-In = 00000008000000000000000000000000
-Out = DEBC950100E5BDB2B972D96B110CAAFB
-
-Key = 0000000000000000000000000000000000000000000000000000000000000000
-In = 00000004000000000000000000000000
-Out = 7E2B207B3204FF65ABD0E286E8FCFD88
-
-Key = 0000000000000000000000000000000000000000000000000000000000000000
-In = 00000002000000000000000000000000
-Out = E46FA1ACDA975397F893DA874257B063
-
-Key = 0000000000000000000000000000000000000000000000000000000000000000
-In = 00000001000000000000000000000000
-Out = 48B472378DDB8297A1E70DB24B3B5784
-
-Key = 0000000000000000000000000000000000000000000000000000000000000000
-In = 00000000800000000000000000000000
-Out = 51E73F78E9E3DF78C460BD1D1D6F9D02
-
-Key = 0000000000000000000000000000000000000000000000000000000000000000
-In = 00000000400000000000000000000000
-Out = A140D05B56E36B690DE8E5CC7CA2DA96
-
-Key = 0000000000000000000000000000000000000000000000000000000000000000
-In = 00000000200000000000000000000000
-Out = 4775063A5B2DB92E0A97A975DFD161AD
-
-Key = 0000000000000000000000000000000000000000000000000000000000000000
-In = 00000000100000000000000000000000
-Out = AD6913069340B8B88A42F09975A03E96
-
-Key = 0000000000000000000000000000000000000000000000000000000000000000
-In = 00000000080000000000000000000000
-Out = CE03AA97EC230AF5130F7B49CF11F749
-
-Key = 0000000000000000000000000000000000000000000000000000000000000000
-In = 00000000040000000000000000000000
-Out = CE235004F77A37CA2405AB272AE1F278
-
-Key = 0000000000000000000000000000000000000000000000000000000000000000
-In = 00000000020000000000000000000000
-Out = 0207B9546C956A9B96FC6FF8D8B25FF9
-
-Key = 0000000000000000000000000000000000000000000000000000000000000000
-In = 00000000010000000000000000000000
-Out = 72284643B100DFEDAB7243D372000289
-
-Key = 0000000000000000000000000000000000000000000000000000000000000000
-In = 00000000008000000000000000000000
-Out = 2B97D40D51A9C400AC8F72285CB9D947
-
-Key = 0000000000000000000000000000000000000000000000000000000000000000
-In = 00000000004000000000000000000000
-Out = 16DEF3EF31FB9E0A9E11FE5DBD10FF6D
-
-Key = 0000000000000000000000000000000000000000000000000000000000000000
-In = 00000000002000000000000000000000
-Out = B8C5BEAB5058E1F8F31AC2537DFC2A04
-
-Key = 0000000000000000000000000000000000000000000000000000000000000000
-In = 00000000001000000000000000000000
-Out = 96240AFD00164E5BA929C470CC2EDFCD
-
-Key = 0000000000000000000000000000000000000000000000000000000000000000
-In = 00000000000800000000000000000000
-Out = 8255F69C848F0601DFA944E7DAA07B03
-
-Key = 0000000000000000000000000000000000000000000000000000000000000000
-In = 00000000000400000000000000000000
-Out = 31D19233EB697EC50C087C6761658C22
-
-Key = 0000000000000000000000000000000000000000000000000000000000000000
-In = 00000000000200000000000000000000
-Out = 0E267CDC580C17C21F207BB6A14A2A61
-
-Key = 0000000000000000000000000000000000000000000000000000000000000000
-In = 00000000000100000000000000000000
-Out = 84F60557F8302489621586BC45B52D1D
-
-Key = 0000000000000000000000000000000000000000000000000000000000000000
-In = 00000000000080000000000000000000
-Out = C6D5B38F47BB5298C521E41B9B722B44
-
-Key = 0000000000000000000000000000000000000000000000000000000000000000
-In = 00000000000040000000000000000000
-Out = 384D3E44D70F9FD1783D7B86DC7C0B79
-
-Key = 0000000000000000000000000000000000000000000000000000000000000000
-In = 00000000000020000000000000000000
-Out = 542B27EBC9FA37FA8CECF14E73545CB6
-
-Key = 0000000000000000000000000000000000000000000000000000000000000000
-In = 00000000000010000000000000000000
-Out = 04B5915863477F621C976F47ED7A6242
-
-Key = 0000000000000000000000000000000000000000000000000000000000000000
-In = 00000000000008000000000000000000
-Out = 571E6627E25993D157D7306937A0F62F
-
-Key = 0000000000000000000000000000000000000000000000000000000000000000
-In = 00000000000004000000000000000000
-Out = A256299F34E93EBEC69E04CFFF3476A0
-
-Key = 0000000000000000000000000000000000000000000000000000000000000000
-In = 00000000000002000000000000000000
-Out = F202A1227405A4CDFC9308819B189FCB
-
-Key = 0000000000000000000000000000000000000000000000000000000000000000
-In = 00000000000001000000000000000000
-Out = F99B66FEB8E9FFA89164A8EC1B8F1C85
-
-Key = 0000000000000000000000000000000000000000000000000000000000000000
-In = 00000000000000800000000000000000
-Out = 3C70D7CD09111B15069F54809724F1B0
-
-Key = 0000000000000000000000000000000000000000000000000000000000000000
-In = 00000000000000400000000000000000
-Out = B88FDCFD41AD34AE92091D31E90C585C
-
-Key = 0000000000000000000000000000000000000000000000000000000000000000
-In = 00000000000000200000000000000000
-Out = 2A80BE073D50FCF2B7FA44A39F777AE1
-
-Key = 0000000000000000000000000000000000000000000000000000000000000000
-In = 00000000000000100000000000000000
-Out = 65F620832AD465A2AA6A14129F382DEE
-
-Key = 0000000000000000000000000000000000000000000000000000000000000000
-In = 00000000000000080000000000000000
-Out = A4518AD23FA96370D83BD3B2FBAA54C9
-
-Key = 0000000000000000000000000000000000000000000000000000000000000000
-In = 00000000000000040000000000000000
-Out = 22AB117786B312AD84C9C2CAF1E2C2CF
-
-Key = 0000000000000000000000000000000000000000000000000000000000000000
-In = 00000000000000020000000000000000
-Out = 33C719DCCF25FCF76916B80C632ADD00
-
-Key = 0000000000000000000000000000000000000000000000000000000000000000
-In = 00000000000000010000000000000000
-Out = 7D95F59DB32ECC39D00DA9DF113AA2EF
-
-Key = 0000000000000000000000000000000000000000000000000000000000000000
-In = 00000000000000008000000000000000
-Out = 376278196B5EE68F2B57B51B4D07A849
-
-Key = 0000000000000000000000000000000000000000000000000000000000000000
-In = 00000000000000004000000000000000
-Out = F6EBAD4990425CD9BBF97D5AC51D33DE
-
-Key = 0000000000000000000000000000000000000000000000000000000000000000
-In = 00000000000000002000000000000000
-Out = 2C64F1A0EB9601E7B5A29E9237040E39
-
-Key = 0000000000000000000000000000000000000000000000000000000000000000
-In = 00000000000000001000000000000000
-Out = 0D6E4B7D38620761D65CCDDE9EDDB24F
-
-Key = 0000000000000000000000000000000000000000000000000000000000000000
-In = 00000000000000000800000000000000
-Out = FB954442EDC07197FAE86E9A0D714903
-
-Key = 0000000000000000000000000000000000000000000000000000000000000000
-In = 00000000000000000400000000000000
-Out = 4B2CC93726DEE48282FA27816FEDC5D6
-
-Key = 0000000000000000000000000000000000000000000000000000000000000000
-In = 00000000000000000200000000000000
-Out = 75EBA30DFEE4BE2CEFAF7D097D08BE4E
-
-Key = 0000000000000000000000000000000000000000000000000000000000000000
-In = 00000000000000000100000000000000
-Out = 90A9750293D227B3F75839A1B1B72A1D
-
-Key = 0000000000000000000000000000000000000000000000000000000000000000
-In = 00000000000000000080000000000000
-Out = EA6A6BADD96680C06A0F3FF72A89A3B9
-
-Key = 0000000000000000000000000000000000000000000000000000000000000000
-In = 00000000000000000040000000000000
-Out = 027957EFFC5F8D54F5E31DEFA4EA5B1C
-
-Key = 0000000000000000000000000000000000000000000000000000000000000000
-In = 00000000000000000020000000000000
-Out = 689E796B7CA20D52ABCA6E02DFF2FA19
-
-Key = 0000000000000000000000000000000000000000000000000000000000000000
-In = 00000000000000000010000000000000
-Out = D0894BC5EC6BB6548C2DEF7D271C5A84
-
-Key = 0000000000000000000000000000000000000000000000000000000000000000
-In = 00000000000000000008000000000000
-Out = B3AD04752FE8B3CED3BC0C721CFFA017
-
-Key = 0000000000000000000000000000000000000000000000000000000000000000
-In = 00000000000000000004000000000000
-Out = 75EBEAA918EE7713AB6B555911A8895B
-
-Key = 0000000000000000000000000000000000000000000000000000000000000000
-In = 00000000000000000002000000000000
-Out = 4507EAC65B6F8825147535212B810659
-
-Key = 0000000000000000000000000000000000000000000000000000000000000000
-In = 00000000000000000001000000000000
-Out = 488887A888AD9C4208981298C32C8802
-
-Key = 0000000000000000000000000000000000000000000000000000000000000000
-In = 00000000000000000000800000000000
-Out = 8516A2448258784F9CE88A4DF07E12BB
-
-Key = 0000000000000000000000000000000000000000000000000000000000000000
-In = 00000000000000000000400000000000
-Out = 34C35EAEF661E815B02FAE1D82A5C6FC
-
-Key = 0000000000000000000000000000000000000000000000000000000000000000
-In = 00000000000000000000200000000000
-Out = 88927ABABC4DCDBE547729DC8486C912
-
-Key = 0000000000000000000000000000000000000000000000000000000000000000
-In = 00000000000000000000100000000000
-Out = E3F2B4AD45A40E8F61A1A002EBB1A6B4
-
-Key = 0000000000000000000000000000000000000000000000000000000000000000
-In = 00000000000000000000080000000000
-Out = 7B8C8A12DFFF1B31E9BBBC9AB1BF191E
-
-Key = 0000000000000000000000000000000000000000000000000000000000000000
-In = 00000000000000000000040000000000
-Out = 12896559E9F9818A45895A850949641F
-
-Key = 0000000000000000000000000000000000000000000000000000000000000000
-In = 00000000000000000000020000000000
-Out = 0ABC2B5B0BE224FCC494D1EF9930663E
-
-Key = 0000000000000000000000000000000000000000000000000000000000000000
-In = 00000000000000000000010000000000
-Out = 1975B8F3DBFEF1B3F68150526EFDFD9A
-
-Key = 0000000000000000000000000000000000000000000000000000000000000000
-In = 00000000000000000000008000000000
-Out = 531360071C6EDFCE4194DD34F282687A
-
-Key = 0000000000000000000000000000000000000000000000000000000000000000
-In = 00000000000000000000004000000000
-Out = D7D44699A83FAA21673C244155E57276
-
-Key = 0000000000000000000000000000000000000000000000000000000000000000
-In = 00000000000000000000002000000000
-Out = 1AECF6542049C8ADAE288158FAB8797B
-
-Key = 0000000000000000000000000000000000000000000000000000000000000000
-In = 00000000000000000000001000000000
-Out = EB40D7F5FADCE30126B34463B1FCFB43
-
-Key = 0000000000000000000000000000000000000000000000000000000000000000
-In = 00000000000000000000000800000000
-Out = FEFA8ED45925FD4F51AA06EADD1D08CE
-
-Key = 0000000000000000000000000000000000000000000000000000000000000000
-In = 00000000000000000000000400000000
-Out = 7E36A1A7FC162B85AAC263DCA957F534
-
-Key = 0000000000000000000000000000000000000000000000000000000000000000
-In = 00000000000000000000000200000000
-Out = E5C330087D678D159C00C27CBBDC9F61
-
-Key = 0000000000000000000000000000000000000000000000000000000000000000
-In = 00000000000000000000000100000000
-Out = 8F56044BB6E9321DADC1F21A70F1E8C5
-
-Key = 0000000000000000000000000000000000000000000000000000000000000000
-In = 00000000000000000000000080000000
-Out = 8714D0D553AD80DDCABE3E9DB67CFE11
-
-Key = 0000000000000000000000000000000000000000000000000000000000000000
-In = 00000000000000000000000040000000
-Out = B72D92FFF02A78AC4682ABAF141D77C9
-
-Key = 0000000000000000000000000000000000000000000000000000000000000000
-In = 00000000000000000000000020000000
-Out = 9550FBBFD4A34816E2FD792AC339D49D
-
-Key = 0000000000000000000000000000000000000000000000000000000000000000
-In = 00000000000000000000000010000000
-Out = 84981AB5DFBE8422A2086D0E5E470254
-
-Key = 0000000000000000000000000000000000000000000000000000000000000000
-In = 00000000000000000000000008000000
-Out = 7BD5A92C5957B09FA5AA9F1A34E17943
-
-Key = 0000000000000000000000000000000000000000000000000000000000000000
-In = 00000000000000000000000004000000
-Out = B603FAB9ED51424992A737BBC1E910D6
-
-Key = 0000000000000000000000000000000000000000000000000000000000000000
-In = 00000000000000000000000002000000
-Out = 2E396DFC0B28E28353C2F97BA982C13D
-
-Key = 0000000000000000000000000000000000000000000000000000000000000000
-In = 00000000000000000000000001000000
-Out = D4CC605A1C64E8A98592A8CD05AAFED0
-
-Key = 0000000000000000000000000000000000000000000000000000000000000000
-In = 00000000000000000000000000800000
-Out = 26C58B071D9116B0123CB99734CFAAF2
-
-Key = 0000000000000000000000000000000000000000000000000000000000000000
-In = 00000000000000000000000000400000
-Out = 3C9D6B460A2364020F55A70E41B5B2E5
-
-Key = 0000000000000000000000000000000000000000000000000000000000000000
-In = 00000000000000000000000000200000
-Out = 40569C782ACA0CB05042D0F54967545B
-
-Key = 0000000000000000000000000000000000000000000000000000000000000000
-In = 00000000000000000000000000100000
-Out = 7340B7EB0B49722A28D0F06056D8878C
-
-Key = 0000000000000000000000000000000000000000000000000000000000000000
-In = 00000000000000000000000000080000
-Out = 8FA7508A26413C633B77FC418AE0EE80
-
-Key = 0000000000000000000000000000000000000000000000000000000000000000
-In = 00000000000000000000000000040000
-Out = 4EA014A1F02840246644548A9C09629D
-
-Key = 0000000000000000000000000000000000000000000000000000000000000000
-In = 00000000000000000000000000020000
-Out = B44678D49E3F80D998A94CB542CFBF83
-
-Key = 0000000000000000000000000000000000000000000000000000000000000000
-In = 00000000000000000000000000010000
-Out = 756FEB41FE20E403C5C1715AB9D0E58A
-
-Key = 0000000000000000000000000000000000000000000000000000000000000000
-In = 00000000000000000000000000008000
-Out = F061519982CD7D2C1451CB2BCA567F21
-
-Key = 0000000000000000000000000000000000000000000000000000000000000000
-In = 00000000000000000000000000004000
-Out = 43B291C8A4BBF59612F896EF8DE8C801
-
-Key = 0000000000000000000000000000000000000000000000000000000000000000
-In = 00000000000000000000000000002000
-Out = 8512D67DA5F121630DF707E1B87901A3
-
-Key = 0000000000000000000000000000000000000000000000000000000000000000
-In = 00000000000000000000000000001000
-Out = 1CE9CE4393434F7A0BCD3F4424B95575
-
-Key = 0000000000000000000000000000000000000000000000000000000000000000
-In = 00000000000000000000000000000800
-Out = 8DEE20BD926E0AEA8F5163FCF8D594E5
-
-Key = 0000000000000000000000000000000000000000000000000000000000000000
-In = 00000000000000000000000000000400
-Out = B504027202FA9A205A36ACFF47E22CB5
-
-Key = 0000000000000000000000000000000000000000000000000000000000000000
-In = 00000000000000000000000000000200
-Out = 3B88E059888E28B7E61F2602A5361A4D
-
-Key = 0000000000000000000000000000000000000000000000000000000000000000
-In = 00000000000000000000000000000100
-Out = 264BE9E31092B5F5FAE3C90A8544E036
-
-Key = 0000000000000000000000000000000000000000000000000000000000000000
-In = 00000000000000000000000000000080
-Out = 82ED5DDBF256FB53432873A896699723
-
-Key = 0000000000000000000000000000000000000000000000000000000000000000
-In = 00000000000000000000000000000040
-Out = AE8D4DC3B948546E1F0DB6173A7DA5D2
-
-Key = 0000000000000000000000000000000000000000000000000000000000000000
-In = 00000000000000000000000000000020
-Out = 01CD700F9FAAD9182FADAA2E62B9814C
-
-Key = 0000000000000000000000000000000000000000000000000000000000000000
-In = 00000000000000000000000000000010
-Out = 000C12107A21E608CFCC1285E1057373
-
-Key = 0000000000000000000000000000000000000000000000000000000000000000
-In = 00000000000000000000000000000008
-Out = 3FCD4604A02D1142032433FF551F0F23
-
-Key = 0000000000000000000000000000000000000000000000000000000000000000
-In = 00000000000000000000000000000004
-Out = D049B0BD078583621E4841BC9F53B11F
-
-Key = 0000000000000000000000000000000000000000000000000000000000000000
-In = 00000000000000000000000000000002
-Out = BAAEF3F9A301A25EE35FE6D6C054E06C
-
-Key = 0000000000000000000000000000000000000000000000000000000000000000
-In = 00000000000000000000000000000001
-Out = 5A991DB3C1149C0C16A523B8FC413C8D
-
diff --git a/src/tests/data/block/noekeon.vec b/src/tests/data/block/noekeon.vec
index 2921301c1..08e7cabf3 100644
--- a/src/tests/data/block/noekeon.vec
+++ b/src/tests/data/block/noekeon.vec
@@ -1,3 +1,6 @@
+
+#cpuid simd32
+
[Noekeon]
Key = 00000000000000000000000000000000
In = 00000000000000000000000000000000
diff --git a/src/tests/data/block/rc2.vec b/src/tests/data/block/rc2.vec
deleted file mode 100644
index 7c718311d..000000000
--- a/src/tests/data/block/rc2.vec
+++ /dev/null
@@ -1,117 +0,0 @@
-[RC2]
-Key = FFFFFFFFFFFFFFFF
-In = FFFFFFFFFFFFFFFF
-Out = 278B27E42E2F0D49
-
-Key = 3000000000000000
-In = 1000000000000001
-Out = 30649EDF9BE7D2C2
-
-Key = 88BCA90E90875A7F0F79C384627BAFB2
-In = 0000000000000000
-Out = 2269552AB0F85CA6
-
-Key = 1D
-In = D8886B78E580404D
-Out = 90748F6F07EF2836
-
-Key = 5049
-In = FE9C2CDD8C027870
-Out = EC184E6CEC40D9F5
-
-Key = C4F82F
-In = A7E13BC9F22C595B
-Out = 67A28EB51250764E
-
-Key = 9190277A
-In = 7177755D3F54A920
-Out = 62A6F69BFE164A05
-
-Key = 481B0F86EA
-In = D9DCB373FD4ABCB3
-Out = B80190D7B249614B
-
-Key = 499825B0D117
-In = 4B138DDE007975AD
-Out = 7FD56A6AA67F6C83
-
-Key = 4920D4274A62EA
-In = 971F30AF097B7350
-Out = 5DFC9E205A2D14B8
-
-Key = 405F1C56CEFE4013
-In = F95DCF9157489637
-Out = 4AC1643B949984EA
-
-Key = AD6AF2DC8463BAB7C6
-In = 1026140C4E7301D1
-Out = 283EB71029EDE89A
-
-Key = 3BB04A71CB0D23A7DFCB
-In = 36773B9B092E5FB1
-Out = FE60654754ADA82B
-
-Key = 0A6CC3F130AFD069222EEC
-In = CBB90C2F7F42158C
-Out = 30CFDEFED10675CC
-
-Key = 6A9DB0629A46CA98E9F99450
-In = B07CDC0A13DD350A
-Out = 3B050F6208CC43CE
-
-Key = 200BCA0DCF0497C3DBF9A025D8
-In = C0B69D0AD97D154E
-Out = BBA1918C34881835
-
-Key = 7C5DD0AC485AD056C57F4B15ABE7
-In = 649B5F71F3B3BDBA
-Out = 349369793550565D
-
-Key = 65D6250D40CEDA1CB7A3CE29414ED4
-In = 30B3ED77DBECDF2F
-Out = 25174AD01E0BE2BC
-
-Key = 56B594BB2938E08B9504D189AD39EADB
-In = E5D64497786FB2D7
-Out = BAE8FA177F46151C
-
-Key = 48E5FB1C74186717F17C9B7EA8F40827
-In = 2009AF9845F4D0E1
-Out = 4508CBDEAC304883
-
-Key = 2E7C56B9A41B512817B702615EBA38A0
-In = 8D7BF299E1DD2710
-Out = D5C504FF23ADE3A2
-
-Key = 68229077C5E04998A73CAC26265BC454
-In = 66E588E1E54E69FA
-Out = FB599477D9EF7C14
-
-Key = B2851A27F152B3B8D21FE19FE080DE93
-In = 3526264FB3AAD439
-Out = 789C2F4906D4DD94
-
-Key = A63FACCE8ED417ADDBE36262E334C934
-In = 51F9D8B75E99850A
-Out = 992215897C1C4D4E
-
-Key = 68A2CD033B11F329BBF0E952FBDDADEF
-In = 7643ADF384C7D876
-Out = 280FBCA90127A9B7
-
-Key = 6562CAA391B7AD91F6F953860C142D53
-In = 61649CC1BB265F04
-Out = C04617D4C7F4688B
-
-Key = 97FF0C4C1D58254DE89140EECFF8A15B
-In = 7027B6111FE67F27
-Out = 526E8225707ED477
-
-Key = FDA85236CFEEFF046973CF46C182B41C
-In = 450500AFA05B83ED
-Out = 5E55E20A0D0E3226
-
-Key = 2F1810D1FCFC98C847DA1D21BCA75712
-In = 51E3A05332220E12
-Out = 05B42A4CC45321EB
-
diff --git a/src/tests/data/block/rc5.vec b/src/tests/data/block/rc5.vec
deleted file mode 100644
index 555566917..000000000
--- a/src/tests/data/block/rc5.vec
+++ /dev/null
@@ -1,350 +0,0 @@
-[RC5(12)]
-Key = 00000000000000000000000000000000
-In = 0000000000000000
-Out = 21A5DBEE154B8F6D
-
-Key = 915F4619BE41B2516355A50110A9CE91
-In = 21A5DBEE154B8F6D
-Out = F7C013AC5B2B8952
-
-Key = 783348E75AEB0F2FD7B169BB8DC16787
-In = F7C013AC5B2B8952
-Out = 2F42B3B70369FC92
-
-Key = DC49DB1375A5584F6485B413B5F12BAF
-In = 2F42B3B70369FC92
-Out = 65C178B284D197CC
-
-Key = 5269F149D41BA0152497574D7F153125
-In = 65C178B284D197CC
-Out = EB44E415DA319824
-
-Key = C0
-In = 9E1916F381491CCE
-Out = 172A7A0BA70282E9
-
-Key = DBEC
-In = B97800C223082F9F
-Out = B5B1708AF59CCAD4
-
-Key = DA735B
-In = F39054061481EB24
-Out = 64CC1E0066FCA2AA
-
-Key = 0656F579
-In = 7622BA5D3D51D560
-Out = FFCB9EA21917C3DE
-
-Key = A59FB3DA35
-In = A15418BC11B2F0E1
-Out = B52821179E5CB9B9
-
-Key = 32594FCCFFEE
-In = 73B02BE42685EA56
-Out = 308C21EFE81621EA
-
-Key = 80E92B27999910
-In = 8CD5121F09DB7DFA
-Out = 70921F59F5CD29AD
-
-Key = 925498B73A9CAED6
-In = 532955C8EEBC75CF
-Out = CBFBB1E0A1A693F2
-
-Key = 3C379D8B11F23CC0F9
-In = BC8B5CF722EEBCAC
-Out = F233FBDDC09D9561
-
-Key = AED34B49E719D6157F93
-In = EFABA1B87E0236FE
-Out = A573453E1BF7B74B
-
-Key = 729B301AFAAB8FCADBEE25
-In = 5248601C102C10C0
-Out = D96D76C05F5E4478
-
-Key = 982644C13B1AA070437C1144
-In = EF6671A5A29EDEF8
-Out = 9EC6407003B827B1
-
-Key = 3BADA3BBA56BF23EF64E0D208B
-In = 5EF9939F903D5AD3
-Out = 8D9D5B5D12448231
-
-Key = BDD77CE81D8AF0B50ABE418F45F7
-In = FEF8CD62F9DC8D1E
-Out = 8FAF5F9D6A4A0A7B
-
-Key = 4AB4A9A4A31B700ECCB0FF23441F82
-In = C330D9BDC20D794D
-Out = 0F74E03240C58D70
-
-Key = 3668476363B42815FF575A65006DAC49
-In = 502E1C61223F5522
-Out = 86CC15281600FA7D
-
-Key = AEE7D59BFFC7FD4A2932C937C7277A2830
-In = 62ECF065C5723856
-Out = 5F8E3E9341B32B71
-
-Key = 3A1CCFABC9F8C46F96FB8B58D02A1F9EC514
-In = CF8DDCB5035B3CC1
-Out = 2D688A1A2A8DCA18
-
-Key = 834BC680E250D2A3B5B2D5B03FF14F2F65E412
-In = D595EBBAFE479CCC
-Out = 8AE450DB2A9A7C37
-
-Key = 39A787D483A6E52FAEF9FBD2EC3CDF81A39495DA
-In = 9F24230CB25BC86E
-Out = EE922AA0AC2EB904
-
-Key = DD7ECA8D1145431F60F2B749FB576F82011BB65005
-In = EE68DE3FEEC31750
-Out = E71038E4AB9F475F
-
-Key = 51FEB601EDA05F5D3D903FA957E6E06B81E640E6DFBE
-In = 9464C68A5E6FCE5C
-Out = 54534C495295FEE4
-
-Key = 0EF8C830DDE1838F1554195CAE006E69DD050C255B17FC
-In = A91EACB2C38F78EC
-Out = 997EBFE794F83F65
-
-Key = 5C47BF0F8E6D0E7A445188E361E4A76A9C48CD9738791293
-In = 170D65C9396BFAE0
-Out = 3B21E9B59F37FF96
-
-Key = 44822C91949958ADAF7E938395113A4BCE343D39C30B3CBE70
-In = D5961EA7B7C02063
-Out = 15C33DA775B4154B
-
-Key = 284FE5889A02AC1C83F9D1C62AC15AEAA08532EB478447B7A599
-In = 2C9A50C06A12E865
-Out = F060DD9CDBEA5738
-
-Key = 37F29AA9FDF4758489AD07C168965A73DB335049BDE60400BC19A7
-In = 780A3BD50CF78B15
-Out = D263CFB83966D499
-
-Key = 8ED81E58E34274D0B72318A14812D1E50D117437B1F303AC72F75057
-In = 39EBCCE8CD770C35
-Out = BF040B7D806BEDA5
-
-Key = AE591161BDC88AD08FF582EBEDB93A172C235E08E244AACA2F433CF1A5
-In = E823EB34847F1551
-Out = 489177CA2F6E7189
-
-Key = D1464349DB7C4D43777B3A44B4DC611C1F4DCCEF296D7A6E38443C773D60
-In = 3C4DB181401E588C
-Out = E2CCD84073236831
-
-Key = 1234D3D3AFB98F7D24D63E3A829D7EBA96A16B516638B79F59F38FD6C75766
-In = 128787704DDA4240
-Out = 6BE471CF49A4C1CE
-
-Key = FAC10D2B235098D973E8E81997EC9189197DAFE989E4B3A18E6D3C0150BF48CE
-In = 28FE4812E9137CFB
-Out = 18B5499EF0C1F9B4
-
-Key = 4780C11A3CD65D21435AAEC988609495A4DEF6C8FFF6AAE1B26C70BC6C336F73
-In = 725F91D74F3F3C66
-Out = F398FC47F4FEA520
-
-Key = ED7E67F4D658C34693F0962687DB46628587EA2D35DB81C1129F00FA69833E1B
-In = 4C706FD69646BA98
-Out = 5B9A776AEAD6304A
-
-Key = 5DB32571B70E3A66FEAD8ACC3F0C4F3A2A6E41A8ACF3D94E73EA0F91176FC3DB
-In = 3361F4771047397D
-Out = DED25E1BD3872DD0
-
-Key = 674C6060F45869214A7AA9BF0FA8F54AFCA92D06A0366EA8C4FEF4C8E79A53CB
-In = D840360511EB9840
-Out = D95E6398EC528F68
-
-Key = FB0A5141B81EDEAC27DEA6D4789083AA487B7D830E0041E1E2D167A1355BD858
-In = DBBC3D4D45847930
-Out = 74A00B919BE23D16
-
-Key = 291FF645CA077953ECE2EF2AE8EA10A127E6D2A1DF4582A5A7B513227C8294C8
-In = 5FF081C8F197D3ED
-Out = 48305C0741ECBED9
-
-Key = A967EC9902F212F1D2D6645AB7C81F0DD1BF4439C131AABD7B8233836615F9F4
-In = 30B8BAE80C26B18D
-Out = 57F443D4060FAC4D
-
-Key = 0A30C331D6015E8A0F64E33994263741D996435CFBA3253CBD64B03A5E000310
-In = E75EBB4AA43E6C45
-Out = A29B91450C2A637E
-
-Key = 1B5E8C38D611847842ACE7CB7CCEDDF152F5043141B462E4704E729C57404D1D
-In = B53DD82028EBB35E
-Out = 39718235AC88956E
-
-[RC5(16)]
-Key = 2B
-In = 1CA702F26A04AF21
-Out = 8105DD6EDD4051FB
-
-Key = 0957
-In = 78195A51EF592AFF
-Out = 89055B0265E67032
-
-Key = 698855
-In = 5BB2A022E7EDCCBF
-Out = 94AD2F68A2D3E83C
-
-Key = F62251DF
-In = 3B8B7A2F20DA627F
-Out = CB4B25A4A493287F
-
-Key = CB8CE363E0
-In = C450CB97E69F2E94
-Out = 77644E7454A72221
-
-Key = 1FE3BBD63969
-In = B7057F70F43A993B
-Out = E411E3023FCA87FC
-
-Key = F9EACED56552BD
-In = BE9976C68D70D0AA
-Out = FDBA816DB72A874C
-
-Key = BB0C6E15883513C7
-In = 6D340411F05E3B31
-Out = F58D02EEB481AFB6
-
-Key = 3312EEB8E2B619738A
-In = B3844D3B7CAF9F3D
-Out = 21133B09AABC3C07
-
-Key = 9CD7B7EAA3C7C0F2A962
-In = 2FBA65761241EAD7
-Out = 99D16F970CF37B73
-
-Key = 347469C239C728FC135965
-In = 8B1DC2A2D8E02FC3
-Out = 4643C45523471F25
-
-Key = 3001E738EC0D082C1A80D84F
-In = A372047B4271030F
-Out = 731303538F359918
-
-Key = 7BFF831DE2C51FD9426AB7424A
-In = 4E666F689DB1FF6E
-Out = AE11B65FD7E4AB67
-
-Key = 3DADAB349343D1CFA3009B49ABE1
-In = 5D440679051B3A6D
-Out = 2B4BE8A815F9A35D
-
-Key = D967EE11872B8C04EE0C4BCEE700EB
-In = E461164D61914F95
-Out = 32CF5B9FC95C48CA
-
-Key = 32F94338D7D70B4A5537FAEE03730745
-In = 4AB29FEF7BB5FC5C
-Out = 2518AA1C85B4600C
-
-Key = 1D158F49A2D6878739C61FE6D2E37C11E9
-In = 53D49E42AB3AC1FC
-Out = 02419E4BFDBF550E
-
-Key = 95EC4B43FC098B966E151F1B94EDC28D846A
-In = F99F9DD38CED0DB1
-Out = 58E4BD6BBAE8565B
-
-Key = 414326FF6F61C54E2932B56ABADB2496DEBB80
-In = 4263C4FE2AB9B990
-Out = D267474CE38E6E9C
-
-Key = B99CA2E96FB0C85A8633010AA6EC8C3DC6CC0EF8
-In = 375AEE48D204DEED
-Out = 61600764332D10C0
-
-Key = 1C4C076CA04C611316AA5D71659F163428479D929B
-In = 02B884BC12569B3F
-Out = 86B0ED3E4CB4759F
-
-Key = EA42742CF00A91F7CD9C63650EF450D20E34732A420C
-In = 8AF5B9C53FDAE8B2
-Out = 37091EFCD093D1D6
-
-Key = BEBE3CB5B711C83E150F2DA7A864AE63CF336D9E0EE282
-In = 9C42CAEEA47E2A06
-Out = BC1D42AFBE2CB8E5
-
-Key = 3A0603293C5F5A1CCF9DB9337DCA010F243B29A6A2EB3455
-In = DD4B4CABDD5D5E35
-Out = 31076D5D6EA4DE13
-
-Key = 00752D67E4E1CCC4ABC7C50B3188181FE664EABF7ED476BC3E
-In = 597699EDD1B4DD7D
-Out = 95FA85725C0AE0DE
-
-Key = 23B5163E359A7FE8BBD3704F1EA98B712A15FB6FA6D8BFC3AF0E
-In = 5E2DEED62635DB75
-Out = 828E88B5D91A7DB4
-
-Key = 041C609CFA10BAFD30D34D986B762A959146E7DEE3481DF8A8C70D
-In = 041BBDF41357E288
-Out = 2FE24A38A1AE4D61
-
-Key = 4CD0194425DF24845BABFB6895BAA18F45C395E8BADC196F36403C30
-In = E8D46EFBAB44EF65
-Out = BA01FBBCF2FE39D6
-
-Key = 7D7CC7017CF9DA5A74E8A7F2D36E5CC016710C43A9CB3C0B9DFB771EED
-In = 0A382E03FB85CFCC
-Out = 571B98B3E9710D58
-
-Key = CBA9B751F404F861E1DA95FFC2D11C686F84D8508D9A1743E5B9A006DA8B
-In = A3D86E1D88602802
-Out = EBBB0C7614414D7C
-
-Key = 28967E8AEBD065D3B5ED27158F953512035515ED3B388E2DA336E9705F16D4
-In = 017E4B4EFEF05D71
-Out = 3EE25FA34042CDE6
-
-Key = 3257D40C6B4EBDF8CAEC563CFE94201E1A843B31F2C9B720FC58C8214B7E2C2B
-In = 9AD01B01AFEA67C0
-Out = 249B074FC69E1042
-
-Key = 4120A9CA90A38A4E16E8323E6B9CB1D2CBA0594253AE578A1A64518B32ABCB20
-In = 1EE20108D1089F69
-Out = 28FA504AB46349D7
-
-Key = 246F010FB9F2DDD99412824C602C7FB48C9F6A3B81688A4404E1F5EA21296599
-In = 306786E25C18C9F0
-Out = 76A525501E857BE5
-
-Key = 754D9753401A56E2096D71C30102B885159CF5CE7305D93020ECE035869E0BC7
-In = D0FCF3DC590D5A53
-Out = 91A9699905107EEA
-
-Key = 534F366548F16D3825EDD61EAD00EF650DDC8E040B7955F68D240691AC34F840
-In = 83D2C97FFECD78A2
-Out = 95FE3BD241FE9E5F
-
-Key = 3B2CCDDFC5371E5F2FF9E119E0E13B730193E563296865BADA20781A2E0FFE2D
-In = 2D7F3F25DE4C0F05
-Out = 31BD01CB7BA808E4
-
-Key = DED645862D8B88517F26EC729B8538BB6CE46D869E6D568A20DDC4D253E70749
-In = 140AF01EB286A1DE
-Out = 098B274A3F2D50EA
-
-Key = D3C38159C3DB49A62E2369BF4BFEAF9EBDAF8E19B6FE9CB579E52C083FF70AB2
-In = DB58306587587FFD
-Out = 20E71B55168E5ACD
-
-Key = 2C15C8A0354DCA1FAF296FBF3FD8E64FD7B9C65EF2EA65B6E216943A551A2CFA
-In = 0A55DD3E3A425245
-Out = 1489079C596FB1BB
-
-Key = 8777192F49C195BAACCFF2096964683CFCF0009B2C57477B759F57B1C32C07F9
-In = 37EC03CAA189CBAE
-Out = 99FB7B05635AB5AA
-
diff --git a/src/tests/data/block/rc6.vec b/src/tests/data/block/rc6.vec
deleted file mode 100644
index f4f7fc95c..000000000
--- a/src/tests/data/block/rc6.vec
+++ /dev/null
@@ -1,4877 +0,0 @@
-[RC6]
-Key = 00000000000000000000000000000000
-In = 80000000000000000000000000000000
-Out = F71F65E7B80C0C6966FEE607984B5CDF
-
-Key = 00000000000000000000000000000000
-In = 40000000000000000000000000000000
-Out = 8CF4A482491CD207289D810C2BB29930
-
-Key = 00000000000000000000000000000000
-In = 20000000000000000000000000000000
-Out = 80EF45D42327E3AED39CD45C4E3E6197
-
-Key = 00000000000000000000000000000000
-In = 10000000000000000000000000000000
-Out = F28D8DF12AC0837A0919254980B674F9
-
-Key = 00000000000000000000000000000000
-In = 08000000000000000000000000000000
-Out = 9FB984DCBA5B0BDFFCFD97B02B648800
-
-Key = 00000000000000000000000000000000
-In = 04000000000000000000000000000000
-Out = 46F7091CD30CCCF570AFC116F8446492
-
-Key = 00000000000000000000000000000000
-In = 02000000000000000000000000000000
-Out = 77B517AA59EC7D3381188936BDEACCBD
-
-Key = 00000000000000000000000000000000
-In = 01000000000000000000000000000000
-Out = 40D5D97CFFDC390AC35C2734F44CF9FF
-
-Key = 00000000000000000000000000000000
-In = 00800000000000000000000000000000
-Out = B5A6B7C92EFCB55D349B63066AC1E009
-
-Key = 00000000000000000000000000000000
-In = 00400000000000000000000000000000
-Out = 152F0F5EA10FAFD0E63494C5FBDCC469
-
-Key = 00000000000000000000000000000000
-In = 00200000000000000000000000000000
-Out = 61F669BF2B32CD27CF6278392C988510
-
-Key = 00000000000000000000000000000000
-In = 00100000000000000000000000000000
-Out = 53A63CEE35DF00C73577B9255F55C855
-
-Key = 00000000000000000000000000000000
-In = 00080000000000000000000000000000
-Out = 6E46B92E23344321A19321DF136CE9C5
-
-Key = 00000000000000000000000000000000
-In = 00040000000000000000000000000000
-Out = 22F1261FAB993350F6ED41DA5D69B9B8
-
-Key = 00000000000000000000000000000000
-In = 00020000000000000000000000000000
-Out = 0901BC0A1DB5CC87CDA91EF5F5FF46BC
-
-Key = 00000000000000000000000000000000
-In = 00010000000000000000000000000000
-Out = 2EE65B377C16BE9517BA12F63189DE64
-
-Key = 00000000000000000000000000000000
-In = 00008000000000000000000000000000
-Out = 74BD6FAA83668952E2D546A66B7A8243
-
-Key = 00000000000000000000000000000000
-In = 00004000000000000000000000000000
-Out = 08FB4817F040B54E995B722C483C399E
-
-Key = 00000000000000000000000000000000
-In = 00002000000000000000000000000000
-Out = 5630614200E248D1644B58E3694D8BA6
-
-Key = 00000000000000000000000000000000
-In = 00001000000000000000000000000000
-Out = 659A3A27C9F3B0BBC65FC4C15D19051E
-
-Key = 00000000000000000000000000000000
-In = 00000800000000000000000000000000
-Out = FF3B39DCB459EE4FFAFCAC8C7331A6BE
-
-Key = 00000000000000000000000000000000
-In = 00000400000000000000000000000000
-Out = 19F0727A66BD056DCB5541EDE14B4662
-
-Key = 00000000000000000000000000000000
-In = 00000200000000000000000000000000
-Out = D0DE4B5B30A294C8A3838B70387C93B6
-
-Key = 00000000000000000000000000000000
-In = 00000100000000000000000000000000
-Out = 37BDB0A854686484E5EB52239D6C16C4
-
-Key = 00000000000000000000000000000000
-In = 00000080000000000000000000000000
-Out = 3CC7113F6E6833C9BFB4EE07371488A5
-
-Key = 00000000000000000000000000000000
-In = 00000040000000000000000000000000
-Out = A56737C45AC4DBF2417243C2E3B40133
-
-Key = 00000000000000000000000000000000
-In = 00000020000000000000000000000000
-Out = B0A5C817B1E2C307A4BBF8258DF5F41B
-
-Key = 00000000000000000000000000000000
-In = 00000010000000000000000000000000
-Out = F2112329EFA070476BD515679C887FC6
-
-Key = 00000000000000000000000000000000
-In = 00000008000000000000000000000000
-Out = 1AD2023CEC89B9436D03CCB9893C21C2
-
-Key = 00000000000000000000000000000000
-In = 00000004000000000000000000000000
-Out = 6BA3E774FCDD02379C6CF2F7BF28B914
-
-Key = 00000000000000000000000000000000
-In = 00000002000000000000000000000000
-Out = A2F8638B0A4014F0641A3CB8A13B5ED9
-
-Key = 00000000000000000000000000000000
-In = 00000001000000000000000000000000
-Out = 877FEDF7CACCBF0BD7BB5BB236BA96D5
-
-Key = 00000000000000000000000000000000
-In = 00000000800000000000000000000000
-Out = C9298A9A01C1F276E2E1E04226BF3D5C
-
-Key = 00000000000000000000000000000000
-In = 00000000400000000000000000000000
-Out = 4E01DB16789DE364085416DE25871A59
-
-Key = 00000000000000000000000000000000
-In = 00000000200000000000000000000000
-Out = FD3B5DA07D0054DD10FFB79440AB3A00
-
-Key = 00000000000000000000000000000000
-In = 00000000100000000000000000000000
-Out = A2508E8BD26E2FB9944C27F04D60FAA0
-
-Key = 00000000000000000000000000000000
-In = 00000000080000000000000000000000
-Out = E9A43055D71335545A6A514F08B868BB
-
-Key = 00000000000000000000000000000000
-In = 00000000040000000000000000000000
-Out = 587D5B71730D0B59BFBC0A93675B32F3
-
-Key = 00000000000000000000000000000000
-In = 00000000020000000000000000000000
-Out = 90076413F890E8FFF04F1031C779C91F
-
-Key = 00000000000000000000000000000000
-In = 00000000010000000000000000000000
-Out = FAC9F46E9A1346646EE5C7CED45A84B9
-
-Key = 00000000000000000000000000000000
-In = 00000000008000000000000000000000
-Out = 471F0738C4F4937E4253161F28086803
-
-Key = 00000000000000000000000000000000
-In = 00000000004000000000000000000000
-Out = A76F843041C4AED8241850B316D252A3
-
-Key = 00000000000000000000000000000000
-In = 00000000002000000000000000000000
-Out = 5C5FD0334332A39924DB0CC7F0867C2E
-
-Key = 00000000000000000000000000000000
-In = 00000000001000000000000000000000
-Out = 07B6EDDEF27EE890EBC8FFA187D84438
-
-Key = 00000000000000000000000000000000
-In = 00000000000800000000000000000000
-Out = 11BB0F2DC24461F5E70D2830ED8A7463
-
-Key = 00000000000000000000000000000000
-In = 00000000000400000000000000000000
-Out = 0AB1A99B63CB8E07290AC60D0A4F1FF3
-
-Key = 00000000000000000000000000000000
-In = 00000000000200000000000000000000
-Out = A26B0AFC4D55E7D61518C54E7C1BED01
-
-Key = 00000000000000000000000000000000
-In = 00000000000100000000000000000000
-Out = 50C8C2B68E06CFCB98785E5AD3D5B09D
-
-Key = 00000000000000000000000000000000
-In = 00000000000080000000000000000000
-Out = ACA305D5D0D1E74FC51AC8C92A72FEA7
-
-Key = 00000000000000000000000000000000
-In = 00000000000040000000000000000000
-Out = 5AF970E570BC1652C82FB4B0945D5410
-
-Key = 00000000000000000000000000000000
-In = 00000000000020000000000000000000
-Out = 00C224433138C1A4BD60571AA35580BC
-
-Key = 00000000000000000000000000000000
-In = 00000000000010000000000000000000
-Out = 4EBE79726DAAF4702B075A5898B26075
-
-Key = 00000000000000000000000000000000
-In = 00000000000008000000000000000000
-Out = 8109EE81B1679CEC42DB80D9530AD2F6
-
-Key = 00000000000000000000000000000000
-In = 00000000000004000000000000000000
-Out = 403B11B8181D460E9AC0172CBE6DD45F
-
-Key = 00000000000000000000000000000000
-In = 00000000000002000000000000000000
-Out = CDE78E92B5A84717AD9B4162E3B14BFA
-
-Key = 00000000000000000000000000000000
-In = 00000000000001000000000000000000
-Out = A173D6BEBAA05EC54A47C7E554415963
-
-Key = 00000000000000000000000000000000
-In = 00000000000000800000000000000000
-Out = EF31AD6CBFA7857ACF0C28294BDEF8B8
-
-Key = 00000000000000000000000000000000
-In = 00000000000000400000000000000000
-Out = 209A30C46E41540C7B0AC8C4822DA253
-
-Key = 00000000000000000000000000000000
-In = 00000000000000200000000000000000
-Out = AF770103EC57EBEB913C83D99F58B6AC
-
-Key = 00000000000000000000000000000000
-In = 00000000000000100000000000000000
-Out = 17D0C179EF34DE7F8EC7698A5371EC00
-
-Key = 00000000000000000000000000000000
-In = 00000000000000080000000000000000
-Out = E0285A3F97607250CDB89BF92CBD1F41
-
-Key = 00000000000000000000000000000000
-In = 00000000000000040000000000000000
-Out = D76BA3CE5E4DC974D4803ADB9F821A57
-
-Key = 00000000000000000000000000000000
-In = 00000000000000020000000000000000
-Out = B66579D4159CF0B0114011C0298EBDA3
-
-Key = 00000000000000000000000000000000
-In = 00000000000000010000000000000000
-Out = B9761796C787B51852E4C3130B8B662D
-
-Key = 00000000000000000000000000000000
-In = 00000000000000008000000000000000
-Out = D5C638801B97A1C2584ED42132F44109
-
-Key = 00000000000000000000000000000000
-In = 00000000000000004000000000000000
-Out = E54A021B145B7B7761487BCDFD0B032F
-
-Key = 00000000000000000000000000000000
-In = 00000000000000002000000000000000
-Out = 3EB3AFE73582EFAB0396108B5E0CDEEC
-
-Key = 00000000000000000000000000000000
-In = 00000000000000001000000000000000
-Out = 463E10507A26B708A1DFF3763276F5C9
-
-Key = 00000000000000000000000000000000
-In = 00000000000000000800000000000000
-Out = 0EEBF8D85AE19EB24C810CEF565FA77B
-
-Key = 00000000000000000000000000000000
-In = 00000000000000000400000000000000
-Out = 86CA894EEFD1CEAAEA70E00CD14645F6
-
-Key = 00000000000000000000000000000000
-In = 00000000000000000200000000000000
-Out = 989B0FC1FFE4BA6F7CC0F1EDEEB5B932
-
-Key = 00000000000000000000000000000000
-In = 00000000000000000100000000000000
-Out = 42916ED17877E58933D3D8CEDA8DD7B3
-
-Key = 00000000000000000000000000000000
-In = 00000000000000000080000000000000
-Out = 88C0369158F2FEFFB4CF14130CE10B3B
-
-Key = 00000000000000000000000000000000
-In = 00000000000000000040000000000000
-Out = DB8976E1DDA56553340236F47F8E9CEF
-
-Key = 00000000000000000000000000000000
-In = 00000000000000000020000000000000
-Out = C6207672C411F088ACAD20814C66254A
-
-Key = 00000000000000000000000000000000
-In = 00000000000000000010000000000000
-Out = A792CF60F44A15D63FB293F9FCF879AC
-
-Key = 00000000000000000000000000000000
-In = 00000000000000000008000000000000
-Out = 8F733746F91273D97ADA41D3A7D5A9E3
-
-Key = 00000000000000000000000000000000
-In = 00000000000000000004000000000000
-Out = 5DA8F191833E6198689710D5A03EE262
-
-Key = 00000000000000000000000000000000
-In = 00000000000000000002000000000000
-Out = D6DB9CEB7E821F6DF4CB1E99105E07AA
-
-Key = 00000000000000000000000000000000
-In = 00000000000000000001000000000000
-Out = 05F308FFAEA3E1E754974435CE0B77C3
-
-Key = 00000000000000000000000000000000
-In = 00000000000000000000800000000000
-Out = 73B8639AAD53AFA1B24165E0C9FD397E
-
-Key = 00000000000000000000000000000000
-In = 00000000000000000000400000000000
-Out = AF45FDC65FD5F153E29A8D5032650AAD
-
-Key = 00000000000000000000000000000000
-In = 00000000000000000000200000000000
-Out = A8BB045FB5B867E85FCAD328E13756C9
-
-Key = 00000000000000000000000000000000
-In = 00000000000000000000100000000000
-Out = DD053128C46C78C4414CE3234C16AEB3
-
-Key = 00000000000000000000000000000000
-In = 00000000000000000000080000000000
-Out = B0C82152D1D9E21D7C3F33E1FC9B4D68
-
-Key = 00000000000000000000000000000000
-In = 00000000000000000000040000000000
-Out = 11B56480D5C718A77A1BEA30CC3A53CF
-
-Key = 00000000000000000000000000000000
-In = 00000000000000000000020000000000
-Out = 92C99F843674DED7F20A258C57253726
-
-Key = 00000000000000000000000000000000
-In = 00000000000000000000010000000000
-Out = 63B218D069CE9CAF52EF97614BDACFF9
-
-Key = 00000000000000000000000000000000
-In = 00000000000000000000008000000000
-Out = 76096721043A016C095D95DD02980289
-
-Key = 00000000000000000000000000000000
-In = 00000000000000000000004000000000
-Out = 87AF16066939B8C4D90E242917DB05CF
-
-Key = 00000000000000000000000000000000
-In = 00000000000000000000002000000000
-Out = F7E0C931B7204308AB5020F106BBA0EF
-
-Key = 00000000000000000000000000000000
-In = 00000000000000000000001000000000
-Out = C697B3602711749580713737729E7049
-
-Key = 00000000000000000000000000000000
-In = 00000000000000000000000800000000
-Out = AF314640B147719EC1B4ABE27CDB58F5
-
-Key = 00000000000000000000000000000000
-In = 00000000000000000000000400000000
-Out = B67DAC5BF73AF7546D2FDC3BC142708D
-
-Key = 00000000000000000000000000000000
-In = 00000000000000000000000200000000
-Out = AC53D20E3C06FF82DE52470BCCE1B283
-
-Key = 00000000000000000000000000000000
-In = 00000000000000000000000100000000
-Out = 7D65047AF522F01856FDD83A9AAA147A
-
-Key = 00000000000000000000000000000000
-In = 00000000000000000000000080000000
-Out = 709D6454033E3FCF8962CAD39B0DC4BD
-
-Key = 00000000000000000000000000000000
-In = 00000000000000000000000040000000
-Out = 7B8058E46789EF51D18700511D20CB70
-
-Key = 00000000000000000000000000000000
-In = 00000000000000000000000020000000
-Out = 738088C404D8850041AD6B690CC6B65A
-
-Key = 00000000000000000000000000000000
-In = 00000000000000000000000010000000
-Out = 7DFDFD55B53D4CD704F96CF93311AFC4
-
-Key = 00000000000000000000000000000000
-In = 00000000000000000000000008000000
-Out = 1DBE62C57AF741D9F2FBF9A340E772C9
-
-Key = 00000000000000000000000000000000
-In = 00000000000000000000000004000000
-Out = E7349BAB7CB458736436943DB0CC411D
-
-Key = 00000000000000000000000000000000
-In = 00000000000000000000000002000000
-Out = 64E229BF2AF893510358CB0DBEF7E97F
-
-Key = 00000000000000000000000000000000
-In = 00000000000000000000000001000000
-Out = 4C632CF8C75AD0DDE8316A7B35F871CC
-
-Key = 00000000000000000000000000000000
-In = 00000000000000000000000000800000
-Out = 2517115CB13E681F0EEA2206C26AD5C4
-
-Key = 00000000000000000000000000000000
-In = 00000000000000000000000000400000
-Out = 8ED5E9D7005D980B078E7F58B47E591E
-
-Key = 00000000000000000000000000000000
-In = 00000000000000000000000000200000
-Out = 8DBCD253443534B2B8BC698A03166ABE
-
-Key = 00000000000000000000000000000000
-In = 00000000000000000000000000100000
-Out = 02F34EAB6CC1DBC8809F3D0EB80FA493
-
-Key = 00000000000000000000000000000000
-In = 00000000000000000000000000080000
-Out = 47E5B71162F75B84D7A699A31FFA29DE
-
-Key = 00000000000000000000000000000000
-In = 00000000000000000000000000040000
-Out = B6C1EA2B410D1704058E905EB967C503
-
-Key = 00000000000000000000000000000000
-In = 00000000000000000000000000020000
-Out = 4383238CE44E30ECDFC90A70EA4C9E96
-
-Key = 00000000000000000000000000000000
-In = 00000000000000000000000000010000
-Out = 9314DFBB44D530768B159DAABCBD439F
-
-Key = 00000000000000000000000000000000
-In = 00000000000000000000000000008000
-Out = 12D7C80912C299C4F668278FA494D580
-
-Key = 00000000000000000000000000000000
-In = 00000000000000000000000000004000
-Out = 49FB1EACCA3B1743E15014010E9963DF
-
-Key = 00000000000000000000000000000000
-In = 00000000000000000000000000002000
-Out = 0DF48D3B128AA63496DBE0CD11083495
-
-Key = 00000000000000000000000000000000
-In = 00000000000000000000000000001000
-Out = 13240392854D6290A4BE08999843105B
-
-Key = 00000000000000000000000000000000
-In = 00000000000000000000000000000800
-Out = 3D4B8705340C3225CE5A724917BA92B4
-
-Key = 00000000000000000000000000000000
-In = 00000000000000000000000000000400
-Out = 425DCCF406AD46F2F565BBBC72FE234B
-
-Key = 00000000000000000000000000000000
-In = 00000000000000000000000000000200
-Out = 88C09509CBB95339726C196E63346418
-
-Key = 00000000000000000000000000000000
-In = 00000000000000000000000000000100
-Out = 90724430636A3DB610F25332BE2FEBE6
-
-Key = 00000000000000000000000000000000
-In = 00000000000000000000000000000080
-Out = 044B4FAED3EA17338630E828B9960CA7
-
-Key = 00000000000000000000000000000000
-In = 00000000000000000000000000000040
-Out = 4A59243AEB65BAA4F7432498FD87EF62
-
-Key = 00000000000000000000000000000000
-In = 00000000000000000000000000000020
-Out = 4324DF8817589D894674B3F311256E9F
-
-Key = 00000000000000000000000000000000
-In = 00000000000000000000000000000010
-Out = 0527269F9FA9E9CC01A03CFA59FD3854
-
-Key = 00000000000000000000000000000000
-In = 00000000000000000000000000000008
-Out = 96CA56F9EFAA393F521679E0B6ACF231
-
-Key = 00000000000000000000000000000000
-In = 00000000000000000000000000000004
-Out = DA7A328F8A5BF03DD42BC52DEC5C4B15
-
-Key = 00000000000000000000000000000000
-In = 00000000000000000000000000000002
-Out = 5FE3D4C46DB294523166AB46208E0711
-
-Key = 00000000000000000000000000000000
-In = 00000000000000000000000000000001
-Out = 2519B9240C21C1F980FB722AD8CB793E
-
-Key = 000000000000000000000000000000000000000000000000
-In = 80000000000000000000000000000000
-Out = A600B72AAC4DFB5271DC45F563FAE428
-
-Key = 000000000000000000000000000000000000000000000000
-In = 40000000000000000000000000000000
-Out = A7B1D7CBFBAB741B41744FF9100529B4
-
-Key = 000000000000000000000000000000000000000000000000
-In = 20000000000000000000000000000000
-Out = D9AAAA866BAB0D68AFFC39CF9888B8C6
-
-Key = 000000000000000000000000000000000000000000000000
-In = 10000000000000000000000000000000
-Out = 32B0048A204036E1B45DE285E87E57B8
-
-Key = 000000000000000000000000000000000000000000000000
-In = 08000000000000000000000000000000
-Out = 7267FEE7E04ACEB47C8FCC4096720484
-
-Key = 000000000000000000000000000000000000000000000000
-In = 04000000000000000000000000000000
-Out = FF0C22F756C2F5EBDC6610F085D74383
-
-Key = 000000000000000000000000000000000000000000000000
-In = 02000000000000000000000000000000
-Out = A6264FBCB2926C6181AA6F5551244B2F
-
-Key = 000000000000000000000000000000000000000000000000
-In = 01000000000000000000000000000000
-Out = D3A5B8FB3CBAA98419D394BB4C66B9D7
-
-Key = 000000000000000000000000000000000000000000000000
-In = 00800000000000000000000000000000
-Out = F9FE5D1BA274021F041023CD9AC20399
-
-Key = 000000000000000000000000000000000000000000000000
-In = 00400000000000000000000000000000
-Out = 7307F7DEBBEFD911B0B590A0667E093D
-
-Key = 000000000000000000000000000000000000000000000000
-In = 00200000000000000000000000000000
-Out = 4D8A3B987A1E66E72B3FFA520DDD57BB
-
-Key = 000000000000000000000000000000000000000000000000
-In = 00100000000000000000000000000000
-Out = 0F444C0A7334947DBCB43D72F897E72F
-
-Key = 000000000000000000000000000000000000000000000000
-In = 00080000000000000000000000000000
-Out = 448F29B848D7CFDA617D8A64AC518B0C
-
-Key = 000000000000000000000000000000000000000000000000
-In = 00040000000000000000000000000000
-Out = 261B4EA7CD31F46C4FBF684395ED7FB8
-
-Key = 000000000000000000000000000000000000000000000000
-In = 00020000000000000000000000000000
-Out = 25FA5AD347C57047749B15B97FE8ABE6
-
-Key = 000000000000000000000000000000000000000000000000
-In = 00010000000000000000000000000000
-Out = F7E13200EBA3F6E8E9F37B092B907961
-
-Key = 000000000000000000000000000000000000000000000000
-In = 00008000000000000000000000000000
-Out = 9C934B121791B35AFE509A0D5A04BBF2
-
-Key = 000000000000000000000000000000000000000000000000
-In = 00004000000000000000000000000000
-Out = 3C0F9D40F9608091CDFD831DD6D215EA
-
-Key = 000000000000000000000000000000000000000000000000
-In = 00002000000000000000000000000000
-Out = 97D7D2AF2F635D43E536E0A5AA18C61E
-
-Key = 000000000000000000000000000000000000000000000000
-In = 00001000000000000000000000000000
-Out = 1E41EB291C07ECF0908D49A9CBFAB57E
-
-Key = 000000000000000000000000000000000000000000000000
-In = 00000800000000000000000000000000
-Out = C9CCEB56AF06C494582F2C966EEEFD07
-
-Key = 000000000000000000000000000000000000000000000000
-In = 00000400000000000000000000000000
-Out = 4B21E0D2942CCD21501F698ACA866BD0
-
-Key = 000000000000000000000000000000000000000000000000
-In = 00000200000000000000000000000000
-Out = BA0DC6ACC50486AD389EF65B5677DE19
-
-Key = 000000000000000000000000000000000000000000000000
-In = 00000100000000000000000000000000
-Out = EB80DE49F3D5605D9C3CE426EC80FAFD
-
-Key = 000000000000000000000000000000000000000000000000
-In = 00000080000000000000000000000000
-Out = D6984153BF67512062F876966BD190F3
-
-Key = 000000000000000000000000000000000000000000000000
-In = 00000040000000000000000000000000
-Out = AC789910F3458D59C5090BE936C6682A
-
-Key = 000000000000000000000000000000000000000000000000
-In = 00000020000000000000000000000000
-Out = 5D64A268407F791DBDAFD0E5C6399A64
-
-Key = 000000000000000000000000000000000000000000000000
-In = 00000010000000000000000000000000
-Out = 2B4F25AC69BA3AD941BBD4E1ECC75E79
-
-Key = 000000000000000000000000000000000000000000000000
-In = 00000008000000000000000000000000
-Out = FB943544937F3A34DFA0548C0257CE53
-
-Key = 000000000000000000000000000000000000000000000000
-In = 00000004000000000000000000000000
-Out = 125A04339B61FA79FA3757576EC4FAA1
-
-Key = 000000000000000000000000000000000000000000000000
-In = 00000002000000000000000000000000
-Out = 160B88277AC4C81603BD37ECA4FD73DC
-
-Key = 000000000000000000000000000000000000000000000000
-In = 00000001000000000000000000000000
-Out = 4D65B09355F893E26C85E85955767604
-
-Key = 000000000000000000000000000000000000000000000000
-In = 00000000800000000000000000000000
-Out = 1EE56A4AB4811DC3B17401CBAA8F5A15
-
-Key = 000000000000000000000000000000000000000000000000
-In = 00000000400000000000000000000000
-Out = 6214728772DBD2CDA3124BA8BA2ABF38
-
-Key = 000000000000000000000000000000000000000000000000
-In = 00000000200000000000000000000000
-Out = 328B60EDD6FD150934A30100286E07B5
-
-Key = 000000000000000000000000000000000000000000000000
-In = 00000000100000000000000000000000
-Out = 2C976B076409056EA7489C7658BB34B9
-
-Key = 000000000000000000000000000000000000000000000000
-In = 00000000080000000000000000000000
-Out = D592EBBA861BBCC369DA99F832B0A773
-
-Key = 000000000000000000000000000000000000000000000000
-In = 00000000040000000000000000000000
-Out = E6F48FB373724153FFFC51758527C6E8
-
-Key = 000000000000000000000000000000000000000000000000
-In = 00000000020000000000000000000000
-Out = 6C397B0BF5992740BD6A787F16BD511C
-
-Key = 000000000000000000000000000000000000000000000000
-In = 00000000010000000000000000000000
-Out = 2CA57FEE77351E747799C8855780C63F
-
-Key = 000000000000000000000000000000000000000000000000
-In = 00000000008000000000000000000000
-Out = 194C42AA377D361BBDF283693171FFDB
-
-Key = 000000000000000000000000000000000000000000000000
-In = 00000000004000000000000000000000
-Out = 61832D4C637CCE219D2FBB36ACF7992E
-
-Key = 000000000000000000000000000000000000000000000000
-In = 00000000002000000000000000000000
-Out = 945D2B20B9FD48F1961D04DBBA1708B5
-
-Key = 000000000000000000000000000000000000000000000000
-In = 00000000001000000000000000000000
-Out = EC152810AA2771AA5E871949BF12B6F1
-
-Key = 000000000000000000000000000000000000000000000000
-In = 00000000000800000000000000000000
-Out = E87712941A7EE80510D53509311196B7
-
-Key = 000000000000000000000000000000000000000000000000
-In = 00000000000400000000000000000000
-Out = 776820A0500F2D90D4DF36F50C395674
-
-Key = 000000000000000000000000000000000000000000000000
-In = 00000000000200000000000000000000
-Out = 64958DB0758C1E80FCFCBB9FC6195E6D
-
-Key = 000000000000000000000000000000000000000000000000
-In = 00000000000100000000000000000000
-Out = 37F27D1D918D463B0668A470DE898AB9
-
-Key = 000000000000000000000000000000000000000000000000
-In = 00000000000080000000000000000000
-Out = AA71549A4B290289C7060D76FF5A20BC
-
-Key = 000000000000000000000000000000000000000000000000
-In = 00000000000040000000000000000000
-Out = 95EF0C6213EB7CF56186D76BFA617174
-
-Key = 000000000000000000000000000000000000000000000000
-In = 00000000000020000000000000000000
-Out = 2F6A4BD794419F9F34CFD0FED825B6CD
-
-Key = 000000000000000000000000000000000000000000000000
-In = 00000000000010000000000000000000
-Out = 882C2B9E19854367479F0EE25D086F4E
-
-Key = 000000000000000000000000000000000000000000000000
-In = 00000000000008000000000000000000
-Out = D246FD18C625C1846741544EC4CE60B6
-
-Key = 000000000000000000000000000000000000000000000000
-In = 00000000000004000000000000000000
-Out = 9EAF5A8C5673BE9F488D5C7B6521BD8C
-
-Key = 000000000000000000000000000000000000000000000000
-In = 00000000000002000000000000000000
-Out = 9E7A685F738CB391FAE6ED184087630C
-
-Key = 000000000000000000000000000000000000000000000000
-In = 00000000000001000000000000000000
-Out = 5E0AC39E49825B2424C7263AA8824232
-
-Key = 000000000000000000000000000000000000000000000000
-In = 00000000000000800000000000000000
-Out = 0B06C4805E20BC990E601E5610A1BEAD
-
-Key = 000000000000000000000000000000000000000000000000
-In = 00000000000000400000000000000000
-Out = 78A99615E809CA88F6F6C6E9AFA532FF
-
-Key = 000000000000000000000000000000000000000000000000
-In = 00000000000000200000000000000000
-Out = 9ACF5CC740AA37663000C89C5F8EE8D8
-
-Key = 000000000000000000000000000000000000000000000000
-In = 00000000000000100000000000000000
-Out = 35D76EBA8F59CA6A78FC2942AC5F7F43
-
-Key = 000000000000000000000000000000000000000000000000
-In = 00000000000000080000000000000000
-Out = 39AD4C9AE2B4D46EF693303B54B53546
-
-Key = 000000000000000000000000000000000000000000000000
-In = 00000000000000040000000000000000
-Out = EA0833009C96171EAA2BFDEF50DEE473
-
-Key = 000000000000000000000000000000000000000000000000
-In = 00000000000000020000000000000000
-Out = 868A8E86F525E50D3FF33A094A3AE119
-
-Key = 000000000000000000000000000000000000000000000000
-In = 00000000000000010000000000000000
-Out = 3DBB9A366A2A3A660F027191B3613B95
-
-Key = 000000000000000000000000000000000000000000000000
-In = 00000000000000008000000000000000
-Out = E4CDE1FC6D811CDC25328CDAC8D0AD2B
-
-Key = 000000000000000000000000000000000000000000000000
-In = 00000000000000004000000000000000
-Out = 332010FB6E39F82F00DC1FF6B6F8CFE6
-
-Key = 000000000000000000000000000000000000000000000000
-In = 00000000000000002000000000000000
-Out = 00293BFE5BB3DA2D3652D4E06EE361B2
-
-Key = 000000000000000000000000000000000000000000000000
-In = 00000000000000001000000000000000
-Out = 9BC99B26E0114669EFE218BF014A15AA
-
-Key = 000000000000000000000000000000000000000000000000
-In = 00000000000000000800000000000000
-Out = 43C358B6DAB480D0EAEB96DCE57E5B85
-
-Key = 000000000000000000000000000000000000000000000000
-In = 00000000000000000400000000000000
-Out = 9842333B8E9FCEC35A8779CCCA7D025A
-
-Key = 000000000000000000000000000000000000000000000000
-In = 00000000000000000200000000000000
-Out = 5A47529DB0D103DCC34D2ADD3A19C53F
-
-Key = 000000000000000000000000000000000000000000000000
-In = 00000000000000000100000000000000
-Out = 8F705A89D4C6EE7E27A14792EC49B652
-
-Key = 000000000000000000000000000000000000000000000000
-In = 00000000000000000080000000000000
-Out = 6D4B9905F05096B23D6C13565588F012
-
-Key = 000000000000000000000000000000000000000000000000
-In = 00000000000000000040000000000000
-Out = 23DDD34E8598F013C0559B3312341DBA
-
-Key = 000000000000000000000000000000000000000000000000
-In = 00000000000000000020000000000000
-Out = 7B5AE9F49ACC68F2FEECB2823C3868A9
-
-Key = 000000000000000000000000000000000000000000000000
-In = 00000000000000000010000000000000
-Out = 09F8EED21EB8EE33C02B90637EF24E6B
-
-Key = 000000000000000000000000000000000000000000000000
-In = 00000000000000000008000000000000
-Out = 00A2E8DB0417F61EAABAD6E9BF13E4BC
-
-Key = 000000000000000000000000000000000000000000000000
-In = 00000000000000000004000000000000
-Out = CF5DB5AA31599EEDB5A3143E08D23672
-
-Key = 000000000000000000000000000000000000000000000000
-In = 00000000000000000002000000000000
-Out = E09B69B9C0E3365C0EDA54AB3310A5AC
-
-Key = 000000000000000000000000000000000000000000000000
-In = 00000000000000000001000000000000
-Out = 33650F826366AEC9A09D7D038708737D
-
-Key = 000000000000000000000000000000000000000000000000
-In = 00000000000000000000800000000000
-Out = E84A1EE9A00BA66952B24A6E6AD0C002
-
-Key = 000000000000000000000000000000000000000000000000
-In = 00000000000000000000400000000000
-Out = 11B1E0969380A0A24E876D6470872796
-
-Key = 000000000000000000000000000000000000000000000000
-In = 00000000000000000000200000000000
-Out = D88FCA95FA29C35FDCD9467715F102D7
-
-Key = 000000000000000000000000000000000000000000000000
-In = 00000000000000000000100000000000
-Out = A78B86EF0E6959C08F70C810AF8E99CD
-
-Key = 000000000000000000000000000000000000000000000000
-In = 00000000000000000000080000000000
-Out = A83E4F27E34360C8033CBC304EBBDF0C
-
-Key = 000000000000000000000000000000000000000000000000
-In = 00000000000000000000040000000000
-Out = 0AA5B4F05A0B42358ABF19F6E55F66D2
-
-Key = 000000000000000000000000000000000000000000000000
-In = 00000000000000000000020000000000
-Out = 5C2AC2588982E3CCE99994101FC0A21A
-
-Key = 000000000000000000000000000000000000000000000000
-In = 00000000000000000000010000000000
-Out = 60A3E107674A0B7F7B931C6EC35BC747
-
-Key = 000000000000000000000000000000000000000000000000
-In = 00000000000000000000008000000000
-Out = 123D266844DFFF63DA93C4D806325660
-
-Key = 000000000000000000000000000000000000000000000000
-In = 00000000000000000000004000000000
-Out = 08170908422DCB46EEB046F3D7E4AE3A
-
-Key = 000000000000000000000000000000000000000000000000
-In = 00000000000000000000002000000000
-Out = 13754D93DC4807807A9535388553FB47
-
-Key = 000000000000000000000000000000000000000000000000
-In = 00000000000000000000001000000000
-Out = DFA9741DD3883E39FED5716A706A65EC
-
-Key = 000000000000000000000000000000000000000000000000
-In = 00000000000000000000000800000000
-Out = CA5C3DCA7BE84DCBE33BF5238EA3F4B0
-
-Key = 000000000000000000000000000000000000000000000000
-In = 00000000000000000000000400000000
-Out = 6EBEED89B297D6918FA5CEAB7A0E985E
-
-Key = 000000000000000000000000000000000000000000000000
-In = 00000000000000000000000200000000
-Out = 3F79AB2119DEBCC44675E340C25B7D85
-
-Key = 000000000000000000000000000000000000000000000000
-In = 00000000000000000000000100000000
-Out = A7739DE45E6051EBBDC2F0365859BEE0
-
-Key = 000000000000000000000000000000000000000000000000
-In = 00000000000000000000000080000000
-Out = CEA0C2B3C653B7553605BACCFDD62DF8
-
-Key = 000000000000000000000000000000000000000000000000
-In = 00000000000000000000000040000000
-Out = 7F9742EEE96193CA8981739712F73045
-
-Key = 000000000000000000000000000000000000000000000000
-In = 00000000000000000000000020000000
-Out = F0103101F4EC92C0CB48145FF34CF51F
-
-Key = 000000000000000000000000000000000000000000000000
-In = 00000000000000000000000010000000
-Out = 55A8A3B02951558F343C160E7F86288D
-
-Key = 000000000000000000000000000000000000000000000000
-In = 00000000000000000000000008000000
-Out = 3F9206DB4F3083E8F6EEC33CFE2C1BBF
-
-Key = 000000000000000000000000000000000000000000000000
-In = 00000000000000000000000004000000
-Out = F012723B2F08A28A5E24BB959FA5EFDD
-
-Key = 000000000000000000000000000000000000000000000000
-In = 00000000000000000000000002000000
-Out = 1A28919DB3AB4A53D5A0E1E566982DF7
-
-Key = 000000000000000000000000000000000000000000000000
-In = 00000000000000000000000001000000
-Out = E17C960B43B7E926C83DF749C6A5532F
-
-Key = 000000000000000000000000000000000000000000000000
-In = 00000000000000000000000000800000
-Out = 16DF63CFB77D31CC782C0ED3190136AD
-
-Key = 000000000000000000000000000000000000000000000000
-In = 00000000000000000000000000400000
-Out = 1643D697AC4075EC6FE609472FA4C678
-
-Key = 000000000000000000000000000000000000000000000000
-In = 00000000000000000000000000200000
-Out = AD76BF6119FFC36369980D3466CF6570
-
-Key = 000000000000000000000000000000000000000000000000
-In = 00000000000000000000000000100000
-Out = 554E53F64D99F89A5BAA7FD5B70E0BD1
-
-Key = 000000000000000000000000000000000000000000000000
-In = 00000000000000000000000000080000
-Out = BDC10FF10FA5E3A41B096C870666DECB
-
-Key = 000000000000000000000000000000000000000000000000
-In = 00000000000000000000000000040000
-Out = 6B12E2408646228502972EA7580B05E1
-
-Key = 000000000000000000000000000000000000000000000000
-In = 00000000000000000000000000020000
-Out = B9583810806D5A491B2F69FFF2D2A327
-
-Key = 000000000000000000000000000000000000000000000000
-In = 00000000000000000000000000010000
-Out = E8E9F4A50B834DDEF307503AECD8A3BC
-
-Key = 000000000000000000000000000000000000000000000000
-In = 00000000000000000000000000008000
-Out = D7F4A1C7F7954E789BD61007866FFA80
-
-Key = 000000000000000000000000000000000000000000000000
-In = 00000000000000000000000000004000
-Out = 953D7D0FD6DDD25CA25FA23C9322339F
-
-Key = 000000000000000000000000000000000000000000000000
-In = 00000000000000000000000000002000
-Out = CD4E607B4324CEC7372DE19CEA5AEF78
-
-Key = 000000000000000000000000000000000000000000000000
-In = 00000000000000000000000000001000
-Out = 9B5C29709E0F0E586383EAB29E884009
-
-Key = 000000000000000000000000000000000000000000000000
-In = 00000000000000000000000000000800
-Out = 28B822B70E7430E44182C2BBAED4D88D
-
-Key = 000000000000000000000000000000000000000000000000
-In = 00000000000000000000000000000400
-Out = D2325AF7325642138C355BC4ACAF938F
-
-Key = 000000000000000000000000000000000000000000000000
-In = 00000000000000000000000000000200
-Out = F4D1A000EC3A370B5A6386355CEE010C
-
-Key = 000000000000000000000000000000000000000000000000
-In = 00000000000000000000000000000100
-Out = F9D198D9FDC650AFA72320AD4826506B
-
-Key = 000000000000000000000000000000000000000000000000
-In = 00000000000000000000000000000080
-Out = 5024595BEB4DAA2239D495BB023757EA
-
-Key = 000000000000000000000000000000000000000000000000
-In = 00000000000000000000000000000040
-Out = 8A6CDA8F518CA2FB0A860C5567C60104
-
-Key = 000000000000000000000000000000000000000000000000
-In = 00000000000000000000000000000020
-Out = D6D90C40B07164436453E8312A633109
-
-Key = 000000000000000000000000000000000000000000000000
-In = 00000000000000000000000000000010
-Out = 3E73330AE10DF1B8B81D9CA72221E192
-
-Key = 000000000000000000000000000000000000000000000000
-In = 00000000000000000000000000000008
-Out = 5029AE60BF118AA69E47B235C3551490
-
-Key = 000000000000000000000000000000000000000000000000
-In = 00000000000000000000000000000004
-Out = 7299F32614EA0BD98D2375CA643EC47F
-
-Key = 000000000000000000000000000000000000000000000000
-In = 00000000000000000000000000000002
-Out = DF4A7B804A4D3A13113529C509F8BAF6
-
-Key = 000000000000000000000000000000000000000000000000
-In = 00000000000000000000000000000001
-Out = 3EFC3791618B7D832BFA6AE030C09122
-
-Key = 0000000000000000000000000000000000000000000000000000000000000000
-In = 80000000000000000000000000000000
-Out = 30F5C183F6C81A72F39B618B086CC2DE
-
-Key = 0000000000000000000000000000000000000000000000000000000000000000
-In = 40000000000000000000000000000000
-Out = DB11AFAAB4946101911DF90AFED8AC0D
-
-Key = 0000000000000000000000000000000000000000000000000000000000000000
-In = 20000000000000000000000000000000
-Out = 1487FC298DBDA9C520CC5851B17D4079
-
-Key = 0000000000000000000000000000000000000000000000000000000000000000
-In = 10000000000000000000000000000000
-Out = 2321D38ACCAAEA5DBA682E7BDCE095AB
-
-Key = 0000000000000000000000000000000000000000000000000000000000000000
-In = 08000000000000000000000000000000
-Out = C4DB11197AE15CF9DFE7D0F3457EC94C
-
-Key = 0000000000000000000000000000000000000000000000000000000000000000
-In = 04000000000000000000000000000000
-Out = 1054BFF1A1564172460A0194B57EBE6C
-
-Key = 0000000000000000000000000000000000000000000000000000000000000000
-In = 02000000000000000000000000000000
-Out = 2340568047F06139D03FE0A3C75CDBF1
-
-Key = 0000000000000000000000000000000000000000000000000000000000000000
-In = 01000000000000000000000000000000
-Out = 3FA18912A1C05E244663BD9A9B5D4046
-
-Key = 0000000000000000000000000000000000000000000000000000000000000000
-In = 00800000000000000000000000000000
-Out = 7220FA3179267839BB03569E43056BE8
-
-Key = 0000000000000000000000000000000000000000000000000000000000000000
-In = 00400000000000000000000000000000
-Out = C7D49A32A6B93D1323EFD7B99FC0A5F7
-
-Key = 0000000000000000000000000000000000000000000000000000000000000000
-In = 00200000000000000000000000000000
-Out = C30D9FFB19F2090109AD40FDAB73176B
-
-Key = 0000000000000000000000000000000000000000000000000000000000000000
-In = 00100000000000000000000000000000
-Out = 54CA1E1FD38713CD454A07339385739F
-
-Key = 0000000000000000000000000000000000000000000000000000000000000000
-In = 00080000000000000000000000000000
-Out = 034516E874272A5A325EB9D54831B6F7
-
-Key = 0000000000000000000000000000000000000000000000000000000000000000
-In = 00040000000000000000000000000000
-Out = 42650A58269E311A3B4F7BC414D1488A
-
-Key = 0000000000000000000000000000000000000000000000000000000000000000
-In = 00020000000000000000000000000000
-Out = 8D4916888A02DC18E1EE95B005C58E18
-
-Key = 0000000000000000000000000000000000000000000000000000000000000000
-In = 00010000000000000000000000000000
-Out = B192C07FB927170DF62D6C44819BCD6F
-
-Key = 0000000000000000000000000000000000000000000000000000000000000000
-In = 00008000000000000000000000000000
-Out = 973C835241ED02CBE39699AF2FFC150A
-
-Key = 0000000000000000000000000000000000000000000000000000000000000000
-In = 00004000000000000000000000000000
-Out = F9630817124B0787237D76697D66341F
-
-Key = 0000000000000000000000000000000000000000000000000000000000000000
-In = 00002000000000000000000000000000
-Out = 51E98EC760A328E35B8D77289726AFC3
-
-Key = 0000000000000000000000000000000000000000000000000000000000000000
-In = 00001000000000000000000000000000
-Out = FC2E80BE856AE38BE0682E8C273616AE
-
-Key = 0000000000000000000000000000000000000000000000000000000000000000
-In = 00000800000000000000000000000000
-Out = A440C29E6F4D6C3540D6C8DB6B02DE4F
-
-Key = 0000000000000000000000000000000000000000000000000000000000000000
-In = 00000400000000000000000000000000
-Out = E04312CB849684A440114B40C242F1E0
-
-Key = 0000000000000000000000000000000000000000000000000000000000000000
-In = 00000200000000000000000000000000
-Out = 2186FC5F5947AAF6626DCAAFFFB47829
-
-Key = 0000000000000000000000000000000000000000000000000000000000000000
-In = 00000100000000000000000000000000
-Out = D357AAA0B4548EB23E9CF1B5D33487C3
-
-Key = 0000000000000000000000000000000000000000000000000000000000000000
-In = 00000080000000000000000000000000
-Out = 02239634F2A7CB81D1CACA279659C637
-
-Key = 0000000000000000000000000000000000000000000000000000000000000000
-In = 00000040000000000000000000000000
-Out = 2EF92962D2F7D0A4B075992C3F8FA9C3
-
-Key = 0000000000000000000000000000000000000000000000000000000000000000
-In = 00000020000000000000000000000000
-Out = F197F67C65438532F17DDBE41F87BA17
-
-Key = 0000000000000000000000000000000000000000000000000000000000000000
-In = 00000010000000000000000000000000
-Out = 6A9387BE237C03056921A9F85AB7A394
-
-Key = 0000000000000000000000000000000000000000000000000000000000000000
-In = 00000008000000000000000000000000
-Out = 5BE801A4767AD211AF20B295E4EB9F72
-
-Key = 0000000000000000000000000000000000000000000000000000000000000000
-In = 00000004000000000000000000000000
-Out = D38007A33C45B295D06FA99660E8C6E4
-
-Key = 0000000000000000000000000000000000000000000000000000000000000000
-In = 00000002000000000000000000000000
-Out = C87746C9F5405E9BBBB53D17544AD016
-
-Key = 0000000000000000000000000000000000000000000000000000000000000000
-In = 00000001000000000000000000000000
-Out = 142BB703DC8B4E870165F987B94A3D06
-
-Key = 0000000000000000000000000000000000000000000000000000000000000000
-In = 00000000800000000000000000000000
-Out = 3C25BD8199CD580D684BD7EC53601EED
-
-Key = 0000000000000000000000000000000000000000000000000000000000000000
-In = 00000000400000000000000000000000
-Out = 283CC22E28A7E48B9FB34F5454A1EB92
-
-Key = 0000000000000000000000000000000000000000000000000000000000000000
-In = 00000000200000000000000000000000
-Out = BE6FA799CE3E6BB239EE35FEF2744A14
-
-Key = 0000000000000000000000000000000000000000000000000000000000000000
-In = 00000000100000000000000000000000
-Out = 99BF63EEB37E1C7E8686B28A0F13E120
-
-Key = 0000000000000000000000000000000000000000000000000000000000000000
-In = 00000000080000000000000000000000
-Out = 01308C588EC24E97B75A1D32F8C3E770
-
-Key = 0000000000000000000000000000000000000000000000000000000000000000
-In = 00000000040000000000000000000000
-Out = F820CB9552F6800049E51037DD238E7B
-
-Key = 0000000000000000000000000000000000000000000000000000000000000000
-In = 00000000020000000000000000000000
-Out = BBC26F6098B0F4D2235FC139041EB78F
-
-Key = 0000000000000000000000000000000000000000000000000000000000000000
-In = 00000000010000000000000000000000
-Out = 836E3B15AA777DEA46606FCC7C2FAB65
-
-Key = 0000000000000000000000000000000000000000000000000000000000000000
-In = 00000000008000000000000000000000
-Out = AAB58970926FE6CFC4017F23FB44C287
-
-Key = 0000000000000000000000000000000000000000000000000000000000000000
-In = 00000000004000000000000000000000
-Out = 1DEEF417C2192D50694D1DF67F960E6E
-
-Key = 0000000000000000000000000000000000000000000000000000000000000000
-In = 00000000002000000000000000000000
-Out = 4E4EA43FAD14AF207C311D98A1DB4B24
-
-Key = 0000000000000000000000000000000000000000000000000000000000000000
-In = 00000000001000000000000000000000
-Out = E0731CEF0FAF7AE36B4FCB9E1AB95488
-
-Key = 0000000000000000000000000000000000000000000000000000000000000000
-In = 00000000000800000000000000000000
-Out = C6FF60796386126058694CAA35BFF163
-
-Key = 0000000000000000000000000000000000000000000000000000000000000000
-In = 00000000000400000000000000000000
-Out = AEA22D742BA1919C43E0A42719B1A9C8
-
-Key = 0000000000000000000000000000000000000000000000000000000000000000
-In = 00000000000200000000000000000000
-Out = 843793D2EF2427D745B9B35BC0AD0555
-
-Key = 0000000000000000000000000000000000000000000000000000000000000000
-In = 00000000000100000000000000000000
-Out = 3C805CED7CBDEF4F896113D95D4BD975
-
-Key = 0000000000000000000000000000000000000000000000000000000000000000
-In = 00000000000080000000000000000000
-Out = 5157A8B222432635BEBD29BDAA9C490B
-
-Key = 0000000000000000000000000000000000000000000000000000000000000000
-In = 00000000000040000000000000000000
-Out = D7A88C8E82EB2F2BB827E56F33E7B1C3
-
-Key = 0000000000000000000000000000000000000000000000000000000000000000
-In = 00000000000020000000000000000000
-Out = DA55FBE256EF08F565A70D870B969B27
-
-Key = 0000000000000000000000000000000000000000000000000000000000000000
-In = 00000000000010000000000000000000
-Out = 951F6F33FD34701F7C79FC94EFB119CF
-
-Key = 0000000000000000000000000000000000000000000000000000000000000000
-In = 00000000000008000000000000000000
-Out = BE2BD92D9F3DBFD3225B7488FFEC09C1
-
-Key = 0000000000000000000000000000000000000000000000000000000000000000
-In = 00000000000004000000000000000000
-Out = 3C560897DF4AC5F3C33818E2597E90B0
-
-Key = 0000000000000000000000000000000000000000000000000000000000000000
-In = 00000000000002000000000000000000
-Out = 52C4110C36C90E3A54921B3F1AAB66C0
-
-Key = 0000000000000000000000000000000000000000000000000000000000000000
-In = 00000000000001000000000000000000
-Out = 9DCED6AECC426A4DFB6B648490A7D002
-
-Key = 0000000000000000000000000000000000000000000000000000000000000000
-In = 00000000000000800000000000000000
-Out = F2631BD62B10761B923DD415ADCCC59B
-
-Key = 0000000000000000000000000000000000000000000000000000000000000000
-In = 00000000000000400000000000000000
-Out = 2B1E1C0D54367440A122D31058057A42
-
-Key = 0000000000000000000000000000000000000000000000000000000000000000
-In = 00000000000000200000000000000000
-Out = 544C870FBF43AB7CFCF114E00B05D974
-
-Key = 0000000000000000000000000000000000000000000000000000000000000000
-In = 00000000000000100000000000000000
-Out = 1E8B06D5FDF11BF70AD8F8748F7F6C33
-
-Key = 0000000000000000000000000000000000000000000000000000000000000000
-In = 00000000000000080000000000000000
-Out = 582BE6419DB732C646B80E8C8966C7CC
-
-Key = 0000000000000000000000000000000000000000000000000000000000000000
-In = 00000000000000040000000000000000
-Out = 2AB0AEAAF06EAD0BA24CCDD46BCAC4D2
-
-Key = 0000000000000000000000000000000000000000000000000000000000000000
-In = 00000000000000020000000000000000
-Out = 32ABA6C20CFFB3D81A4D3288BF4BDFB1
-
-Key = 0000000000000000000000000000000000000000000000000000000000000000
-In = 00000000000000010000000000000000
-Out = AB8F8FB0A91662A4E3C54C395BDD6711
-
-Key = 0000000000000000000000000000000000000000000000000000000000000000
-In = 00000000000000008000000000000000
-Out = F154670ADDE837119060F4ECE9D7B636
-
-Key = 0000000000000000000000000000000000000000000000000000000000000000
-In = 00000000000000004000000000000000
-Out = 64CE436BCC7AAC1DE95D6CECC28C46C2
-
-Key = 0000000000000000000000000000000000000000000000000000000000000000
-In = 00000000000000002000000000000000
-Out = 17A6371CFEAD87CBB6A545D9F9973155
-
-Key = 0000000000000000000000000000000000000000000000000000000000000000
-In = 00000000000000001000000000000000
-Out = 532AC851EF076F571D6B1C9418D7E2E9
-
-Key = 0000000000000000000000000000000000000000000000000000000000000000
-In = 00000000000000000800000000000000
-Out = 8CA057121128472C01EF7F6EC39EC63F
-
-Key = 0000000000000000000000000000000000000000000000000000000000000000
-In = 00000000000000000400000000000000
-Out = 283DF89A06A93492543BCA4D5DB109E9
-
-Key = 0000000000000000000000000000000000000000000000000000000000000000
-In = 00000000000000000200000000000000
-Out = 2A07389C26321F9F7AF46897D80E3CCF
-
-Key = 0000000000000000000000000000000000000000000000000000000000000000
-In = 00000000000000000100000000000000
-Out = 1473BBE037060B30273908A495C2F622
-
-Key = 0000000000000000000000000000000000000000000000000000000000000000
-In = 00000000000000000080000000000000
-Out = C937D109334A404B55CEE675092A2D2C
-
-Key = 0000000000000000000000000000000000000000000000000000000000000000
-In = 00000000000000000040000000000000
-Out = 0CAA09146104F478E231268F03EA4FB9
-
-Key = 0000000000000000000000000000000000000000000000000000000000000000
-In = 00000000000000000020000000000000
-Out = 7FCA0541DC09F947145B69C93E0E382F
-
-Key = 0000000000000000000000000000000000000000000000000000000000000000
-In = 00000000000000000010000000000000
-Out = 16739ED42CEF90CA03B686FF13A29A6C
-
-Key = 0000000000000000000000000000000000000000000000000000000000000000
-In = 00000000000000000008000000000000
-Out = 911BB934A7D6ED03A5AF9DF7A28E8129
-
-Key = 0000000000000000000000000000000000000000000000000000000000000000
-In = 00000000000000000004000000000000
-Out = 3974614212BA6A30AC9541B7776CC29B
-
-Key = 0000000000000000000000000000000000000000000000000000000000000000
-In = 00000000000000000002000000000000
-Out = 8D17F86E8423398AB06E739B112048FB
-
-Key = 0000000000000000000000000000000000000000000000000000000000000000
-In = 00000000000000000001000000000000
-Out = 76A0AC6091D6DAF57C303E02D5AE8F97
-
-Key = 0000000000000000000000000000000000000000000000000000000000000000
-In = 00000000000000000000800000000000
-Out = 98C8AD3C3AB0EFB14DF2C96EC4A5923C
-
-Key = 0000000000000000000000000000000000000000000000000000000000000000
-In = 00000000000000000000400000000000
-Out = 3AF0B1C79917659CF8E5B91D4ED31ED3
-
-Key = 0000000000000000000000000000000000000000000000000000000000000000
-In = 00000000000000000000200000000000
-Out = 0F6C180C0D449B35A3C7026E513DA0D9
-
-Key = 0000000000000000000000000000000000000000000000000000000000000000
-In = 00000000000000000000100000000000
-Out = 646F2B75831CA1CB950B5CC79F320F6F
-
-Key = 0000000000000000000000000000000000000000000000000000000000000000
-In = 00000000000000000000080000000000
-Out = 2877CB6CFED0900A25FE65367B8DF5DC
-
-Key = 0000000000000000000000000000000000000000000000000000000000000000
-In = 00000000000000000000040000000000
-Out = 5122F1C85198E03E269D90BDA811A8AD
-
-Key = 0000000000000000000000000000000000000000000000000000000000000000
-In = 00000000000000000000020000000000
-Out = 7FEC2A1C88A6E72D22FE71B513B1C34D
-
-Key = 0000000000000000000000000000000000000000000000000000000000000000
-In = 00000000000000000000010000000000
-Out = 1176120721DC2C20A1ED31F1572ECBB8
-
-Key = 0000000000000000000000000000000000000000000000000000000000000000
-In = 00000000000000000000008000000000
-Out = 932B4B9980CF29A3EC9B982A2C0215CE
-
-Key = 0000000000000000000000000000000000000000000000000000000000000000
-In = 00000000000000000000004000000000
-Out = BFE6D2C8354E83D26AEF557E2AD1C2EF
-
-Key = 0000000000000000000000000000000000000000000000000000000000000000
-In = 00000000000000000000002000000000
-Out = FE4C742734F30C62964D5917C5B63723
-
-Key = 0000000000000000000000000000000000000000000000000000000000000000
-In = 00000000000000000000001000000000
-Out = 1663275B61F3FACEB365D56D8B51AE33
-
-Key = 0000000000000000000000000000000000000000000000000000000000000000
-In = 00000000000000000000000800000000
-Out = 32EB39C865C149CF81E27D8AE0A91BDB
-
-Key = 0000000000000000000000000000000000000000000000000000000000000000
-In = 00000000000000000000000400000000
-Out = 0229846F9F8150006A27D62E60A762DE
-
-Key = 0000000000000000000000000000000000000000000000000000000000000000
-In = 00000000000000000000000200000000
-Out = B88BACF0AFFAA2C5CAAC4C7036785A74
-
-Key = 0000000000000000000000000000000000000000000000000000000000000000
-In = 00000000000000000000000100000000
-Out = C61820350B4DAF92077DB18B2563C050
-
-Key = 0000000000000000000000000000000000000000000000000000000000000000
-In = 00000000000000000000000080000000
-Out = D4ABF17AA49B24F71DD5151339951D1B
-
-Key = 0000000000000000000000000000000000000000000000000000000000000000
-In = 00000000000000000000000040000000
-Out = D7C632D6C753246A176B659DBCEF61D8
-
-Key = 0000000000000000000000000000000000000000000000000000000000000000
-In = 00000000000000000000000020000000
-Out = 1F34C055C434A025ADD592A5397D2D35
-
-Key = 0000000000000000000000000000000000000000000000000000000000000000
-In = 00000000000000000000000010000000
-Out = C399CB8A665E35A23F660C2F8C3D8FE9
-
-Key = 0000000000000000000000000000000000000000000000000000000000000000
-In = 00000000000000000000000008000000
-Out = 09E11B6D984BD70089CB2360448A4B60
-
-Key = 0000000000000000000000000000000000000000000000000000000000000000
-In = 00000000000000000000000004000000
-Out = E243F7445FCCF52878F8B83BE492EABA
-
-Key = 0000000000000000000000000000000000000000000000000000000000000000
-In = 00000000000000000000000002000000
-Out = 389F39873BDF652BC4F9043E30AD7CE0
-
-Key = 0000000000000000000000000000000000000000000000000000000000000000
-In = 00000000000000000000000001000000
-Out = 0669295AA4EA970860CF675D6469F765
-
-Key = 0000000000000000000000000000000000000000000000000000000000000000
-In = 00000000000000000000000000800000
-Out = 35C5F9A85171DC889BFD5332E6C8E0D7
-
-Key = 0000000000000000000000000000000000000000000000000000000000000000
-In = 00000000000000000000000000400000
-Out = E07600A31EA2F2F781EBC12A3DDC936E
-
-Key = 0000000000000000000000000000000000000000000000000000000000000000
-In = 00000000000000000000000000200000
-Out = FB4CBEC86740711F59995673EB73ADE8
-
-Key = 0000000000000000000000000000000000000000000000000000000000000000
-In = 00000000000000000000000000100000
-Out = E572F84C3AEFB9DFCE042B39E68EA160
-
-Key = 0000000000000000000000000000000000000000000000000000000000000000
-In = 00000000000000000000000000080000
-Out = A87AB39149865D45B1E43D35D8C65001
-
-Key = 0000000000000000000000000000000000000000000000000000000000000000
-In = 00000000000000000000000000040000
-Out = 4E5215E398BD5D0F7223348581D18158
-
-Key = 0000000000000000000000000000000000000000000000000000000000000000
-In = 00000000000000000000000000020000
-Out = 2524BA2E297D0D2B26797441A7CDB01E
-
-Key = 0000000000000000000000000000000000000000000000000000000000000000
-In = 00000000000000000000000000010000
-Out = 3DCE8EB2F6FBDBB7A33A26FF6485D4AE
-
-Key = 0000000000000000000000000000000000000000000000000000000000000000
-In = 00000000000000000000000000008000
-Out = 28EC64C3D0C3AA145F21F4067322573B
-
-Key = 0000000000000000000000000000000000000000000000000000000000000000
-In = 00000000000000000000000000004000
-Out = EC6E0084F98693A0D3AD1E4790716ACE
-
-Key = 0000000000000000000000000000000000000000000000000000000000000000
-In = 00000000000000000000000000002000
-Out = F09BD8B4646FBAC5556B4F0B816B35EB
-
-Key = 0000000000000000000000000000000000000000000000000000000000000000
-In = 00000000000000000000000000001000
-Out = 9CC8722245E3CD23DF490353DCACC9E0
-
-Key = 0000000000000000000000000000000000000000000000000000000000000000
-In = 00000000000000000000000000000800
-Out = C73465C832CC907D4F79035E67F9AE29
-
-Key = 0000000000000000000000000000000000000000000000000000000000000000
-In = 00000000000000000000000000000400
-Out = F311B9CF73CF5A8FAFB9DBEECC67B9E1
-
-Key = 0000000000000000000000000000000000000000000000000000000000000000
-In = 00000000000000000000000000000200
-Out = 56494DBCF09A6019B1C6CEE3DB0C844B
-
-Key = 0000000000000000000000000000000000000000000000000000000000000000
-In = 00000000000000000000000000000100
-Out = 0364CB9DAF55D765BC5CCD46B58FA718
-
-Key = 0000000000000000000000000000000000000000000000000000000000000000
-In = 00000000000000000000000000000080
-Out = 4DAFE2AAED6E49C98A7B8B979C32E6DB
-
-Key = 0000000000000000000000000000000000000000000000000000000000000000
-In = 00000000000000000000000000000040
-Out = 2F5BECD180A9449CE7A1ECCCB34057B1
-
-Key = 0000000000000000000000000000000000000000000000000000000000000000
-In = 00000000000000000000000000000020
-Out = 1C8B0DF1D643B9376B3E40B847850DFD
-
-Key = 0000000000000000000000000000000000000000000000000000000000000000
-In = 00000000000000000000000000000010
-Out = 674A46D61796154EC5DE8EC7EDA4BD3A
-
-Key = 0000000000000000000000000000000000000000000000000000000000000000
-In = 00000000000000000000000000000008
-Out = 8F111A48A7C598EFF1CBCB43414A7791
-
-Key = 0000000000000000000000000000000000000000000000000000000000000000
-In = 00000000000000000000000000000004
-Out = CBD9C99FB47C9518151222D6F8B07446
-
-Key = 0000000000000000000000000000000000000000000000000000000000000000
-In = 00000000000000000000000000000002
-Out = D449C5BE9B01257543932AF7B8777F69
-
-Key = 0000000000000000000000000000000000000000000000000000000000000000
-In = 00000000000000000000000000000001
-Out = 283D43A1CEA6187A31581D1606BB8B7A
-
-Key = 80000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = 1AD578A02A08162850A15A1552A17AD4
-
-Key = 40000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = 912E9CF1473035A8443A82495C0730D3
-
-Key = 20000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = 3D3E851A80ABAF221761931747473048
-
-Key = 10000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = 96CFC0510819EEB7FCDF2CC7BEABEF77
-
-Key = 08000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = FB787268EC3C583A3685973B861AEF8D
-
-Key = 04000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = 2AE927525C73250D954B619EDAC718BE
-
-Key = 02000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = 00298D1DB6C6DA02E28E49C63B4A5795
-
-Key = 01000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = 7E32F418910C9AC8701292B5F96346F3
-
-Key = 00800000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = 9FC6C21A562A049AD320EAA0D43C1998
-
-Key = 00400000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = 7A0BD66C361D641DFD313CBE23F69A57
-
-Key = 00200000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = C2E2CAD226964597A98C388B27127EA1
-
-Key = 00100000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = B7F4837AC6F1F808D8EBBF1D08077FB4
-
-Key = 00080000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = 0495E1AEDA7A9EC9ACBF38FE41CB08FA
-
-Key = 00040000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = E001020E1D0C05BE072695F3F48F07B2
-
-Key = 00020000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = 608CE7A12C9EEC348FF674FB9F8D1972
-
-Key = 00010000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = 916BEC60955C1A3540B4C245F4D3B94B
-
-Key = 00008000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = B2B91EC4EFE12CD4EDDA71ED52B278B1
-
-Key = 00004000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = 0CA46CF5275313AB3D9494A5BB7D786A
-
-Key = 00002000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = E679B7C6F661AE52BA5199EC24D4E542
-
-Key = 00001000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = 043FAB3A991B3FEC872AC747640731CB
-
-Key = 00000800000000000000000000000000
-In = 00000000000000000000000000000000
-Out = EF8C38151A67B9A51E0935BBA14D9E22
-
-Key = 00000400000000000000000000000000
-In = 00000000000000000000000000000000
-Out = 2D4515423CFCF372B5632C2879A71267
-
-Key = 00000200000000000000000000000000
-In = 00000000000000000000000000000000
-Out = 2420A9327B9D2426C19F755BC3D8BD88
-
-Key = 00000100000000000000000000000000
-In = 00000000000000000000000000000000
-Out = 2151D88643EE81D8D23B44D22E2B0D65
-
-Key = 00000080000000000000000000000000
-In = 00000000000000000000000000000000
-Out = AEFA6F32E963CB2D4D89E673B503DDAC
-
-Key = 00000040000000000000000000000000
-In = 00000000000000000000000000000000
-Out = 43DBE4D6B1BA3F05F16D73B2F80A12DF
-
-Key = 00000020000000000000000000000000
-In = 00000000000000000000000000000000
-Out = ED8C9B25558CAD4EF9469364BE97CA30
-
-Key = 00000010000000000000000000000000
-In = 00000000000000000000000000000000
-Out = BDE5B1DC5053F94670599CBE6845604B
-
-Key = 00000008000000000000000000000000
-In = 00000000000000000000000000000000
-Out = 4529434499884BE7C4E6D009F3D5353E
-
-Key = 00000004000000000000000000000000
-In = 00000000000000000000000000000000
-Out = B3D4C642173189B9295912E860CF6880
-
-Key = 00000002000000000000000000000000
-In = 00000000000000000000000000000000
-Out = 651F1B1629535AD03D5C296D560FDE1F
-
-Key = 00000001000000000000000000000000
-In = 00000000000000000000000000000000
-Out = 8A380594D7396453771A1DFBE2914C8E
-
-Key = 00000000800000000000000000000000
-In = 00000000000000000000000000000000
-Out = 395FE0214AC536428C86737514B6237F
-
-Key = 00000000400000000000000000000000
-In = 00000000000000000000000000000000
-Out = ACEFAC47A7AB6E635EA9F85EF74DEFF3
-
-Key = 00000000200000000000000000000000
-In = 00000000000000000000000000000000
-Out = 8C208E26E96D9DFA248010D8C1CFDB3B
-
-Key = 00000000100000000000000000000000
-In = 00000000000000000000000000000000
-Out = D3AE8AE99B3A84C3721EAA57C8EB17B1
-
-Key = 00000000080000000000000000000000
-In = 00000000000000000000000000000000
-Out = 40D8DA37A8A6591A203F2A38AB05A08D
-
-Key = 00000000040000000000000000000000
-In = 00000000000000000000000000000000
-Out = F0580D0B864E8C03638A33499B36C9A5
-
-Key = 00000000020000000000000000000000
-In = 00000000000000000000000000000000
-Out = 10F19634C2D1006B0C208AA303065B0F
-
-Key = 00000000010000000000000000000000
-In = 00000000000000000000000000000000
-Out = 7D43298935D0AF6DB498542752666C99
-
-Key = 00000000008000000000000000000000
-In = 00000000000000000000000000000000
-Out = 456AD1F19D18900B4F85EB64E06DF643
-
-Key = 00000000004000000000000000000000
-In = 00000000000000000000000000000000
-Out = 08C83A53955102F6E60C2CB0F6C02443
-
-Key = 00000000002000000000000000000000
-In = 00000000000000000000000000000000
-Out = 351C1035006BC7475DF60694859BB491
-
-Key = 00000000001000000000000000000000
-In = 00000000000000000000000000000000
-Out = BB47464DFF62381AD4A93684D00A817F
-
-Key = 00000000000800000000000000000000
-In = 00000000000000000000000000000000
-Out = 514AC91B28081BD0E0CAE22D766257DF
-
-Key = 00000000000400000000000000000000
-In = 00000000000000000000000000000000
-Out = 7758C19B083A62E6F2CAAD2B4C3DF4DC
-
-Key = 00000000000200000000000000000000
-In = 00000000000000000000000000000000
-Out = 46B352EAC71542E417619E0360221673
-
-Key = 00000000000100000000000000000000
-In = 00000000000000000000000000000000
-Out = 648D51C6F9522FE38108BBFD34015F22
-
-Key = 00000000000080000000000000000000
-In = 00000000000000000000000000000000
-Out = DCD800CC104B9C098AB4B931C7538F00
-
-Key = 00000000000040000000000000000000
-In = 00000000000000000000000000000000
-Out = E40601C1632937FA769C58BE63DEB056
-
-Key = 00000000000020000000000000000000
-In = 00000000000000000000000000000000
-Out = BC968175089F3864C81124A55AA445EC
-
-Key = 00000000000010000000000000000000
-In = 00000000000000000000000000000000
-Out = 05479ACFA5A7C6BC89FE432D8D25A366
-
-Key = 00000000000008000000000000000000
-In = 00000000000000000000000000000000
-Out = 8DDF91E221B4C2043C079F5F0ED63EA7
-
-Key = 00000000000004000000000000000000
-In = 00000000000000000000000000000000
-Out = 66C47E3E339FFD404A61547E54ED0F7F
-
-Key = 00000000000002000000000000000000
-In = 00000000000000000000000000000000
-Out = 3D622A36A3375D2EFFF3B49363F25755
-
-Key = 00000000000001000000000000000000
-In = 00000000000000000000000000000000
-Out = C2E42DDC662F226D09908E2CFDD03D32
-
-Key = 00000000000000800000000000000000
-In = 00000000000000000000000000000000
-Out = 3221BC8032E72E0DE7580480A99DFD7D
-
-Key = 00000000000000400000000000000000
-In = 00000000000000000000000000000000
-Out = C65A142D036E99D1A4DA370D964A8A44
-
-Key = 00000000000000200000000000000000
-In = 00000000000000000000000000000000
-Out = E9C03F4840645726563582AA30464D1E
-
-Key = 00000000000000100000000000000000
-In = 00000000000000000000000000000000
-Out = 93C2F8237D526E910F007FA0CF0608A8
-
-Key = 00000000000000080000000000000000
-In = 00000000000000000000000000000000
-Out = 6F3A45184B87581E98B7B0D873F8B315
-
-Key = 00000000000000040000000000000000
-In = 00000000000000000000000000000000
-Out = D3569BAB0FDD360451E113895B39D0E2
-
-Key = 00000000000000020000000000000000
-In = 00000000000000000000000000000000
-Out = 4002FF10DDB6FCB6669AE3FED696B2EC
-
-Key = 00000000000000010000000000000000
-In = 00000000000000000000000000000000
-Out = B265C44F675800A3B498FFA91C440654
-
-Key = 00000000000000008000000000000000
-In = 00000000000000000000000000000000
-Out = 092E77F2537EE742D627EA8628E473E9
-
-Key = 00000000000000004000000000000000
-In = 00000000000000000000000000000000
-Out = 441859995F05E1C06D118CFFB389C9CE
-
-Key = 00000000000000002000000000000000
-In = 00000000000000000000000000000000
-Out = 844480BB205810808DC1F87C2B5281E9
-
-Key = 00000000000000001000000000000000
-In = 00000000000000000000000000000000
-Out = 4B2E7C3B31CFC0CA5B51EA589DFFC9AC
-
-Key = 00000000000000000800000000000000
-In = 00000000000000000000000000000000
-Out = D55D552EA89C267FF3B0AF688CF00D78
-
-Key = 00000000000000000400000000000000
-In = 00000000000000000000000000000000
-Out = 6AD19E9DD39381C8A02F3CC6F60C8048
-
-Key = 00000000000000000200000000000000
-In = 00000000000000000000000000000000
-Out = 271ED37DB771414743EB781B2B315841
-
-Key = 00000000000000000100000000000000
-In = 00000000000000000000000000000000
-Out = ED0A833C87FE6CDC56E021BCD3099508
-
-Key = 00000000000000000080000000000000
-In = 00000000000000000000000000000000
-Out = 6DBE8FEEB66CF747FFEC4E6D3D2D6BB0
-
-Key = 00000000000000000040000000000000
-In = 00000000000000000000000000000000
-Out = 79460469EFEA89FA576B526B17709D4E
-
-Key = 00000000000000000020000000000000
-In = 00000000000000000000000000000000
-Out = 5C3C35EC3D15CFAE719221549293A6AC
-
-Key = 00000000000000000010000000000000
-In = 00000000000000000000000000000000
-Out = 607106E18F8C8A6E725AF44A491D891A
-
-Key = 00000000000000000008000000000000
-In = 00000000000000000000000000000000
-Out = 1C22A5627309A238E2CE5A39BE370243
-
-Key = 00000000000000000004000000000000
-In = 00000000000000000000000000000000
-Out = FB6D4F017D84E9B74C2A59204A2EA0D6
-
-Key = 00000000000000000002000000000000
-In = 00000000000000000000000000000000
-Out = B66A30712DB3BD6B580678BDA72CC5B5
-
-Key = 00000000000000000001000000000000
-In = 00000000000000000000000000000000
-Out = 59C93B2A53BE699840E29D78ACF05DE0
-
-Key = 00000000000000000000800000000000
-In = 00000000000000000000000000000000
-Out = AD37DFE5DCBB5A50228537BF24ED0159
-
-Key = 00000000000000000000400000000000
-In = 00000000000000000000000000000000
-Out = C9FAB85DCB8DA12A7C9416B267F21486
-
-Key = 00000000000000000000200000000000
-In = 00000000000000000000000000000000
-Out = EC797A0F6EBED4C257BC7FC1D7BD0100
-
-Key = 00000000000000000000100000000000
-In = 00000000000000000000000000000000
-Out = 629D633D7A7C345A3A3CF66565E298E1
-
-Key = 00000000000000000000080000000000
-In = 00000000000000000000000000000000
-Out = 859D400CC95F29E7131561F4D7E4DD12
-
-Key = 00000000000000000000040000000000
-In = 00000000000000000000000000000000
-Out = 932CFF2E8A828C61BA537E186F559E93
-
-Key = 00000000000000000000020000000000
-In = 00000000000000000000000000000000
-Out = 62FA5692938CB84279C7E399BA10E08D
-
-Key = 00000000000000000000010000000000
-In = 00000000000000000000000000000000
-Out = 50321207B2A375B12F4630F3F1909B08
-
-Key = 00000000000000000000008000000000
-In = 00000000000000000000000000000000
-Out = 63978A72D0ACAF85676EAA2D1EE01F3C
-
-Key = 00000000000000000000004000000000
-In = 00000000000000000000000000000000
-Out = 20721CCA68AE0451687D82534A360173
-
-Key = 00000000000000000000002000000000
-In = 00000000000000000000000000000000
-Out = 9223A844EAB1CA5D3A43EBC4C5CF01C8
-
-Key = 00000000000000000000001000000000
-In = 00000000000000000000000000000000
-Out = 70E162CC61AC398CF4D9DBE62FD653CE
-
-Key = 00000000000000000000000800000000
-In = 00000000000000000000000000000000
-Out = 082CED7A4969FD3C8131BF9AE57754DB
-
-Key = 00000000000000000000000400000000
-In = 00000000000000000000000000000000
-Out = 169070D4658D94C12041D14EC60A2B0A
-
-Key = 00000000000000000000000200000000
-In = 00000000000000000000000000000000
-Out = 960E45070B5BA767F1A3117851ECF9DA
-
-Key = 00000000000000000000000100000000
-In = 00000000000000000000000000000000
-Out = 4AAAA999C2421953E3607CA202D4C1DE
-
-Key = 00000000000000000000000080000000
-In = 00000000000000000000000000000000
-Out = E4B97E5B2BA83D2038B5D08EB792F92F
-
-Key = 00000000000000000000000040000000
-In = 00000000000000000000000000000000
-Out = ECBC7F9C422FC676152CC7E40391D730
-
-Key = 00000000000000000000000020000000
-In = 00000000000000000000000000000000
-Out = 55EBABC43A33305FB82B39A88A737FFF
-
-Key = 00000000000000000000000010000000
-In = 00000000000000000000000000000000
-Out = C1BDA064749B2B7A9E9378137462F800
-
-Key = 00000000000000000000000008000000
-In = 00000000000000000000000000000000
-Out = BDDD0163E4CEAC2C614ABDA9EBE15F3D
-
-Key = 00000000000000000000000004000000
-In = 00000000000000000000000000000000
-Out = B767CF0E6717B409743AE41C56A2054D
-
-Key = 00000000000000000000000002000000
-In = 00000000000000000000000000000000
-Out = AD897CFAED8FBBD9A3006F7EB2A7C601
-
-Key = 00000000000000000000000001000000
-In = 00000000000000000000000000000000
-Out = 2929929D821D010A1A30E9CF4415F809
-
-Key = 00000000000000000000000000800000
-In = 00000000000000000000000000000000
-Out = 0C861D39741060051855648B385708B5
-
-Key = 00000000000000000000000000400000
-In = 00000000000000000000000000000000
-Out = 4BA018EA1AFF5C0A9CF368592B08FD34
-
-Key = 00000000000000000000000000200000
-In = 00000000000000000000000000000000
-Out = 4377CD44B655A0ABC40E5B9D3A480EC6
-
-Key = 00000000000000000000000000100000
-In = 00000000000000000000000000000000
-Out = 2F604E94C9CD1DCB730AB0AF407FEDBD
-
-Key = 00000000000000000000000000080000
-In = 00000000000000000000000000000000
-Out = 44A3514094941B7E497BCFE0D746BA48
-
-Key = 00000000000000000000000000040000
-In = 00000000000000000000000000000000
-Out = 1235A968A7D12BA7042E7E63A897DBED
-
-Key = 00000000000000000000000000020000
-In = 00000000000000000000000000000000
-Out = 0BA061C7AD274E004B2E06D3D5FC784D
-
-Key = 00000000000000000000000000010000
-In = 00000000000000000000000000000000
-Out = E0DB8CE28D1C2F6B692B230A7AB0CB44
-
-Key = 00000000000000000000000000008000
-In = 00000000000000000000000000000000
-Out = ED4BBD535080655AF3F4D71709B1B8D5
-
-Key = 00000000000000000000000000004000
-In = 00000000000000000000000000000000
-Out = 92D183FBE0BD07A0884EBD1963A193BE
-
-Key = 00000000000000000000000000002000
-In = 00000000000000000000000000000000
-Out = 995BB9E75386C99DA3038C3C6340C838
-
-Key = 00000000000000000000000000001000
-In = 00000000000000000000000000000000
-Out = 4914DA6C7A8E1AB8297A9D280DE576F9
-
-Key = 00000000000000000000000000000800
-In = 00000000000000000000000000000000
-Out = 6415185D85078CE80F46C6E09EDB8B78
-
-Key = 00000000000000000000000000000400
-In = 00000000000000000000000000000000
-Out = 8B2908466F8BD3C1C3A4A5EAFCC0FF92
-
-Key = 00000000000000000000000000000200
-In = 00000000000000000000000000000000
-Out = 425BF2FCF5DD8B0013773F9A0DC09B0D
-
-Key = 00000000000000000000000000000100
-In = 00000000000000000000000000000000
-Out = 9AC35220BE56E453B73CD887B299D06E
-
-Key = 00000000000000000000000000000080
-In = 00000000000000000000000000000000
-Out = 41900EF8223D019F1BC3E8EA68FC763C
-
-Key = 00000000000000000000000000000040
-In = 00000000000000000000000000000000
-Out = 9D294A574144109A9C6DE8E90EE517B6
-
-Key = 00000000000000000000000000000020
-In = 00000000000000000000000000000000
-Out = 4146D6BB7AE455D93EAF43753C7AE693
-
-Key = 00000000000000000000000000000010
-In = 00000000000000000000000000000000
-Out = 4155B7D12FD12F96FD39C576FDD41422
-
-Key = 00000000000000000000000000000008
-In = 00000000000000000000000000000000
-Out = 1AF1E634B06211668CE2410D5EDCA968
-
-Key = 00000000000000000000000000000004
-In = 00000000000000000000000000000000
-Out = 815739510622BFE08EEE06B772368524
-
-Key = 00000000000000000000000000000002
-In = 00000000000000000000000000000000
-Out = E2F7D8411181A21B02C1466E750056C2
-
-Key = 00000000000000000000000000000001
-In = 00000000000000000000000000000000
-Out = 13095792D8B1D771378839C912CA3C41
-
-Key = 800000000000000000000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = 8301730C7D5FEFC416BEEC1104C51E36
-
-Key = 400000000000000000000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = F7EF83BDD4C3D5B30E805C351DB87200
-
-Key = 200000000000000000000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = A236EB8595FDF9239C658D58342EF566
-
-Key = 100000000000000000000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = 236397EB9EEDA5EA8BF4A42864A5A39F
-
-Key = 080000000000000000000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = 21C3DD416D64F6055C8C3977EEFB4652
-
-Key = 040000000000000000000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = 59128F63BD9D834C3EECA5A5299417D1
-
-Key = 020000000000000000000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = 0F95FA4C48DE95391B45A460B92B22BF
-
-Key = 010000000000000000000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = 5073FABD5FA03D153108B9A5F2128C78
-
-Key = 008000000000000000000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = B83872427919126F2C976D45872B7596
-
-Key = 004000000000000000000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = 73F8E6C4181758AFA29945E970C8F854
-
-Key = 002000000000000000000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = B72DC39B9A72EFFA047E3657B1F02B1B
-
-Key = 001000000000000000000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = 081F1C50BF964CCC01949363A1A1C76C
-
-Key = 000800000000000000000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = D4A2AB8B904BE542386CC2342AC354D6
-
-Key = 000400000000000000000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = BC94C45B53BB5281BFF16F7BC7CCD26E
-
-Key = 000200000000000000000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = 7D976240134D43279AB809A3EC1BAB8E
-
-Key = 000100000000000000000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = BE18D342080322DBBCEDBB83C7F11CA5
-
-Key = 000080000000000000000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = D1359D29060E0003C78066A900C90C00
-
-Key = 000040000000000000000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = FD0A7E670B7E9B57C913D38E4649715E
-
-Key = 000020000000000000000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = C9DFB5B1CB3E079CFC027E67DA61EC2A
-
-Key = 000010000000000000000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = 10FDD69900FBC470499EDF0AFF655430
-
-Key = 000008000000000000000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = 565721A361F5F0EB44366DEC1D6841BE
-
-Key = 000004000000000000000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = 07AD173E39A769D345277F4CFD16BBA8
-
-Key = 000002000000000000000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = 8E89B6B70A10D1866ED4D139A0E6565C
-
-Key = 000001000000000000000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = 88A431DD4CBBD94778AE53A36EE246DE
-
-Key = 000000800000000000000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = F4C8E31B64506E9BDE6BB682DBCEF50A
-
-Key = 000000400000000000000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = 5B0E256E4EAB25AEC08CD2CE5547334D
-
-Key = 000000200000000000000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = EDBAA578C13D7D215057EAD4F03B9E1C
-
-Key = 000000100000000000000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = 7EA37DB8EB1B362E370A43DF1ADB2F0A
-
-Key = 000000080000000000000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = 8B7C67AE8F749C4EFB7418788D369DEC
-
-Key = 000000040000000000000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = 34D3A7E87A4B1B3FAC60672A3D82F40D
-
-Key = 000000020000000000000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = 4FE628152A1D46CF6DA78D5F17255877
-
-Key = 000000010000000000000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = 3460A571D035B6DA52AA8E59702B79C0
-
-Key = 000000008000000000000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = CA2375E2E96AB28C7FC3E61B6561B07C
-
-Key = 000000004000000000000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = 7E33319A69017428DDBD979D3F6982C6
-
-Key = 000000002000000000000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = 49DA8B8AD80A6BBA1003FF6B8D06E3D8
-
-Key = 000000001000000000000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = CCE4C841B39187943DCCA5EB8BBF1221
-
-Key = 000000000800000000000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = 3B42FA9129BF36F87E445589460A19BD
-
-Key = 000000000400000000000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = 3E397A22C64A8C09B5B59A9D397B0A96
-
-Key = 000000000200000000000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = 159AB9C871FB3EB373A94721E9F0743A
-
-Key = 000000000100000000000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = 9C2DECEEFEDF2475C26EFFEA3A0E2920
-
-Key = 000000000080000000000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = 0FCC4399113E6BF62A23F657BEF97224
-
-Key = 000000000040000000000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = 2FCA4167B034D9EDAC4E12828B911600
-
-Key = 000000000020000000000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = 3F9434872C4E49EB8718EDB8896CFF2E
-
-Key = 000000000010000000000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = 8168025815D16028078007C9E1370331
-
-Key = 000000000008000000000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = F0FBF790B49553EC3963805CC2F6AA7E
-
-Key = 000000000004000000000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = 951C45D26A548A9A6152CCBC00D3C6FA
-
-Key = 000000000002000000000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = 845DCC97B1F8CD3254D2B29A59C7AE41
-
-Key = 000000000001000000000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = 6694A168D387E4FB3291A376B938136D
-
-Key = 000000000000800000000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = 9569359A00659B9645565857398C982F
-
-Key = 000000000000400000000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = 417C97D7F56216FFEBE64A73F8D81168
-
-Key = 000000000000200000000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = 8C46288B3314B9E1BC91E3C901C784A8
-
-Key = 000000000000100000000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = 8EB78926977246F186274D88A4B0E6B3
-
-Key = 000000000000080000000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = 51E819059AB0325A2DF7F8CF49A54353
-
-Key = 000000000000040000000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = 56A59894FC1972B03D66D6C43688138B
-
-Key = 000000000000020000000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = CB772637B59AD2330ACC8CC2FA7A338B
-
-Key = 000000000000010000000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = 1E3759E5BBE19EA0F66FBB0702F07440
-
-Key = 000000000000008000000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = 2112CFD246447D95F1A6BFF65A044121
-
-Key = 000000000000004000000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = 8A7E580BAC4406B297E12B472C2748E3
-
-Key = 000000000000002000000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = 349ABE7C34357C7C719BD48AB62DF95C
-
-Key = 000000000000001000000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = 5EDB9089B865DAC899854DACE9DBBDBC
-
-Key = 000000000000000800000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = C82372837C0B459699779683785CE09C
-
-Key = 000000000000000400000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = B26532F7C0FDFF76BFADD7178E7A2A7A
-
-Key = 000000000000000200000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = 965F80C599BF6AA85CA2199C785EDAF1
-
-Key = 000000000000000100000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = 8434DFE0C8717514FB0F8A4FF46930B6
-
-Key = 000000000000000080000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = 10D701937E2944C7B48BAA32DA64C6A5
-
-Key = 000000000000000040000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = 9A401E466C3686609B7B92FC6C57EA3B
-
-Key = 000000000000000020000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = E3442053C50265AEBEFD327633E449B1
-
-Key = 000000000000000010000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = 7DF5EC480DEFA928687A35116989A7E2
-
-Key = 000000000000000008000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = EB2D38038A867146E3999D3E4DACE2BD
-
-Key = 000000000000000004000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = AE420A68558A2A50085331D8C46D7685
-
-Key = 000000000000000002000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = 049B78384DE81BB815C48CC565DC1029
-
-Key = 000000000000000001000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = 38EDCB5D37E043621F1EB80C78E40657
-
-Key = 000000000000000000800000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = 928C462D2AE8B7B45C252D0CAE80B34C
-
-Key = 000000000000000000400000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = B3AD5D661D6DACFD57C214FDB9384491
-
-Key = 000000000000000000200000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = 9785657218402C1F3D1A40E73B015359
-
-Key = 000000000000000000100000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = 302355F21D129456A3EC58CD4C74D334
-
-Key = 000000000000000000080000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = 7322A935E1F65E2F341F778D0A55DAC0
-
-Key = 000000000000000000040000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = 7EEEF0009743F18E1E08F5CB02CFA104
-
-Key = 000000000000000000020000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = 82FA95B00BA5C8D71CB372895E91F7AD
-
-Key = 000000000000000000010000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = 44E308A9BAE6315936931C0D6F3472A4
-
-Key = 000000000000000000008000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = A0F7760CB5F12B2F7F7451688DCC6DB3
-
-Key = 000000000000000000004000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = 249CBF1A9027A9D4A049DCC61C100631
-
-Key = 000000000000000000002000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = AE5191679DB49836EBD11781E1A9E809
-
-Key = 000000000000000000001000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = 6F0F72E56952895F7425A34EB97D0D41
-
-Key = 000000000000000000000800000000000000000000000000
-In = 00000000000000000000000000000000
-Out = E4C8937EA026250290E85A2AA4B3A338
-
-Key = 000000000000000000000400000000000000000000000000
-In = 00000000000000000000000000000000
-Out = 0D1B7815F62D8C6DB79E9755EB5CC047
-
-Key = 000000000000000000000200000000000000000000000000
-In = 00000000000000000000000000000000
-Out = 3B8DA219500F670D2D32C753F613E646
-
-Key = 000000000000000000000100000000000000000000000000
-In = 00000000000000000000000000000000
-Out = DC16F91F486975C2762AAEF8E4C66543
-
-Key = 000000000000000000000080000000000000000000000000
-In = 00000000000000000000000000000000
-Out = 7CC222B3C5866AC0F27A60C9D9713981
-
-Key = 000000000000000000000040000000000000000000000000
-In = 00000000000000000000000000000000
-Out = B7F625FC185B3ACEF820AF59570370FD
-
-Key = 000000000000000000000020000000000000000000000000
-In = 00000000000000000000000000000000
-Out = 8AA59EA7476AFE267D7745A2A5E1D0CB
-
-Key = 000000000000000000000010000000000000000000000000
-In = 00000000000000000000000000000000
-Out = DDB9E4AA397029E10ED5F1984513280B
-
-Key = 000000000000000000000008000000000000000000000000
-In = 00000000000000000000000000000000
-Out = C92B81F3061A4ABC6C35D1B0AF2BA410
-
-Key = 000000000000000000000004000000000000000000000000
-In = 00000000000000000000000000000000
-Out = 05F510BA96377001A23093980C02FBCD
-
-Key = 000000000000000000000002000000000000000000000000
-In = 00000000000000000000000000000000
-Out = A22D14EBC78B338735CA0AAD155B0114
-
-Key = 000000000000000000000001000000000000000000000000
-In = 00000000000000000000000000000000
-Out = C562318B01D5235CCD4DC3D3A8B10DA0
-
-Key = 000000000000000000000000800000000000000000000000
-In = 00000000000000000000000000000000
-Out = FA248CAA2F7C4B029054A31917BE9B47
-
-Key = 000000000000000000000000400000000000000000000000
-In = 00000000000000000000000000000000
-Out = FCC4E2E3C6E5DB8DECBF2493E3A52B9A
-
-Key = 000000000000000000000000200000000000000000000000
-In = 00000000000000000000000000000000
-Out = C5D23718F33ADC9F8B3B35263E47248A
-
-Key = 000000000000000000000000100000000000000000000000
-In = 00000000000000000000000000000000
-Out = 773E59C9CA8EFD081E1CFD4F3DF4BC16
-
-Key = 000000000000000000000000080000000000000000000000
-In = 00000000000000000000000000000000
-Out = 9A5E5AB516ECEA600952D25684DFF5E9
-
-Key = 000000000000000000000000040000000000000000000000
-In = 00000000000000000000000000000000
-Out = 4EB9B9CC17E48F68423C884D64091022
-
-Key = 000000000000000000000000020000000000000000000000
-In = 00000000000000000000000000000000
-Out = 0CCD75BECA8406EBF53CB0ABB1B46B23
-
-Key = 000000000000000000000000010000000000000000000000
-In = 00000000000000000000000000000000
-Out = 0242108DABD2ED9886E8ABD70AA97B29
-
-Key = 000000000000000000000000008000000000000000000000
-In = 00000000000000000000000000000000
-Out = C52A6EB2958C995465C4F870F1A8269E
-
-Key = 000000000000000000000000004000000000000000000000
-In = 00000000000000000000000000000000
-Out = 5FD2C7F3C81B013B96EC3ACBB0688175
-
-Key = 000000000000000000000000002000000000000000000000
-In = 00000000000000000000000000000000
-Out = 1E63A0B10B0293A8572FD7749ACB9A53
-
-Key = 000000000000000000000000001000000000000000000000
-In = 00000000000000000000000000000000
-Out = 9E1D466FA752C13AF4296CFFB8566DB2
-
-Key = 000000000000000000000000000800000000000000000000
-In = 00000000000000000000000000000000
-Out = BA1A69D7AD2869734A4954553D4EF249
-
-Key = 000000000000000000000000000400000000000000000000
-In = 00000000000000000000000000000000
-Out = EC2E7D615474B0B08D47AFCBE4FD8402
-
-Key = 000000000000000000000000000200000000000000000000
-In = 00000000000000000000000000000000
-Out = 5C295AA2183B5FB9498094DB774244D1
-
-Key = 000000000000000000000000000100000000000000000000
-In = 00000000000000000000000000000000
-Out = 1C5A17D1BE0D9EDCF339DB3D2631F236
-
-Key = 000000000000000000000000000080000000000000000000
-In = 00000000000000000000000000000000
-Out = CF6E9758B39149E3E29FB66CD58D0976
-
-Key = 000000000000000000000000000040000000000000000000
-In = 00000000000000000000000000000000
-Out = 4F3FF2CAB95F678D85207691BFDAB811
-
-Key = 000000000000000000000000000020000000000000000000
-In = 00000000000000000000000000000000
-Out = 463F1FCDF4A918300A93D7BED72F788B
-
-Key = 000000000000000000000000000010000000000000000000
-In = 00000000000000000000000000000000
-Out = CA5C88802CF0520C6521B106F4A58977
-
-Key = 000000000000000000000000000008000000000000000000
-In = 00000000000000000000000000000000
-Out = 95C83D16F101B16E82D9DF9108A6805A
-
-Key = 000000000000000000000000000004000000000000000000
-In = 00000000000000000000000000000000
-Out = F98E0BE43F35A4CD52F93FD0877C1638
-
-Key = 000000000000000000000000000002000000000000000000
-In = 00000000000000000000000000000000
-Out = 3B0D41F3A12DE6BDACFCA225F1344D77
-
-Key = 000000000000000000000000000001000000000000000000
-In = 00000000000000000000000000000000
-Out = BCB6197992A90A62497B53EC8E7E5857
-
-Key = 000000000000000000000000000000800000000000000000
-In = 00000000000000000000000000000000
-Out = 9CA86B881701310C33F6CB2911ED777E
-
-Key = 000000000000000000000000000000400000000000000000
-In = 00000000000000000000000000000000
-Out = DDF4EBC89B16643E7B4F0B43AB3FC443
-
-Key = 000000000000000000000000000000200000000000000000
-In = 00000000000000000000000000000000
-Out = 650AA74CDF7C5E92720E02A87ECA8FB2
-
-Key = 000000000000000000000000000000100000000000000000
-In = 00000000000000000000000000000000
-Out = F44E947B2A18F15189884E55EAC372CD
-
-Key = 000000000000000000000000000000080000000000000000
-In = 00000000000000000000000000000000
-Out = A4CC79AB8F6ABA941D400B45C32DA248
-
-Key = 000000000000000000000000000000040000000000000000
-In = 00000000000000000000000000000000
-Out = 3C49EE1D3E4D8FD1E5CE9C793511F2E7
-
-Key = 000000000000000000000000000000020000000000000000
-In = 00000000000000000000000000000000
-Out = 49199A91A32424357890F5C8E08E168C
-
-Key = 000000000000000000000000000000010000000000000000
-In = 00000000000000000000000000000000
-Out = 438EBCC76304C4231DCDBDF85A876A85
-
-Key = 000000000000000000000000000000008000000000000000
-In = 00000000000000000000000000000000
-Out = DD04C176440BBC6686C90AEE775BD368
-
-Key = 000000000000000000000000000000004000000000000000
-In = 00000000000000000000000000000000
-Out = 1DBAE21DF9D10630D8E9BA704AA3A6E2
-
-Key = 000000000000000000000000000000002000000000000000
-In = 00000000000000000000000000000000
-Out = F46B5DF361FF1A58AD233A2884E9B73B
-
-Key = 000000000000000000000000000000001000000000000000
-In = 00000000000000000000000000000000
-Out = DBD49C75B6CCA6CCEF0423FF3941922A
-
-Key = 000000000000000000000000000000000800000000000000
-In = 00000000000000000000000000000000
-Out = 2C62774D20D574A487057A24280EBBC9
-
-Key = 000000000000000000000000000000000400000000000000
-In = 00000000000000000000000000000000
-Out = A6E24FFF68DF51B5613692D4098F7E22
-
-Key = 000000000000000000000000000000000200000000000000
-In = 00000000000000000000000000000000
-Out = A961B427D5FCD129EE29830DBD2952DD
-
-Key = 000000000000000000000000000000000100000000000000
-In = 00000000000000000000000000000000
-Out = 7F637C136F8A57358DD5229B5E3BC38C
-
-Key = 000000000000000000000000000000000080000000000000
-In = 00000000000000000000000000000000
-Out = 6FC5A39B35D2EF01B808E20C05DB9DDE
-
-Key = 000000000000000000000000000000000040000000000000
-In = 00000000000000000000000000000000
-Out = 95E085E82A0883C8F6C1C83D6F4DF270
-
-Key = 000000000000000000000000000000000020000000000000
-In = 00000000000000000000000000000000
-Out = BDEE30731D4CD3593E46D9A8222485CC
-
-Key = 000000000000000000000000000000000010000000000000
-In = 00000000000000000000000000000000
-Out = 508B5BB4ECCE303014D5A9ABB47DD30D
-
-Key = 000000000000000000000000000000000008000000000000
-In = 00000000000000000000000000000000
-Out = 047832614B07AEABC28A39D5E72007C9
-
-Key = 000000000000000000000000000000000004000000000000
-In = 00000000000000000000000000000000
-Out = C1D4B662EE239A6DB9262B23C561B677
-
-Key = 000000000000000000000000000000000002000000000000
-In = 00000000000000000000000000000000
-Out = E567714DF47D43F1505D318C8D553062
-
-Key = 000000000000000000000000000000000001000000000000
-In = 00000000000000000000000000000000
-Out = CDF70F29AFD13EC6820D2C126D053DC4
-
-Key = 000000000000000000000000000000000000800000000000
-In = 00000000000000000000000000000000
-Out = 182F2FD0ADC68D8DC72B08AC17E642C1
-
-Key = 000000000000000000000000000000000000400000000000
-In = 00000000000000000000000000000000
-Out = 5DAA43AFBCD59026C0C410072A263673
-
-Key = 000000000000000000000000000000000000200000000000
-In = 00000000000000000000000000000000
-Out = E0C6DD7A8971A7D21AFAE153F115D658
-
-Key = 000000000000000000000000000000000000100000000000
-In = 00000000000000000000000000000000
-Out = 4ED2DAA970922690D8CDF6CDFDA2E8D3
-
-Key = 000000000000000000000000000000000000080000000000
-In = 00000000000000000000000000000000
-Out = C1F929B679E007B1DDBBE896CE91C8C5
-
-Key = 000000000000000000000000000000000000040000000000
-In = 00000000000000000000000000000000
-Out = 2323F5569BA740E14E05E0FB0914CE44
-
-Key = 000000000000000000000000000000000000020000000000
-In = 00000000000000000000000000000000
-Out = 875AFCE0522E00712AB29E0E77BA57D2
-
-Key = 000000000000000000000000000000000000010000000000
-In = 00000000000000000000000000000000
-Out = A6185ECBDEFEB900335BAB38D95D7583
-
-Key = 000000000000000000000000000000000000008000000000
-In = 00000000000000000000000000000000
-Out = 1331B89B377EA2A88A181907300BC50C
-
-Key = 000000000000000000000000000000000000004000000000
-In = 00000000000000000000000000000000
-Out = FC9D177C5B5D072E041D6C2F9EE6B536
-
-Key = 000000000000000000000000000000000000002000000000
-In = 00000000000000000000000000000000
-Out = 5BCE1EA4FD0CC1EDE325DCEB55790565
-
-Key = 000000000000000000000000000000000000001000000000
-In = 00000000000000000000000000000000
-Out = 937FE02D20FCB72F0F57201012B88BA4
-
-Key = 000000000000000000000000000000000000000800000000
-In = 00000000000000000000000000000000
-Out = 5280E7768E573DC74DB90ABDC10422FE
-
-Key = 000000000000000000000000000000000000000400000000
-In = 00000000000000000000000000000000
-Out = 0995E2D8E83C853C58ECF916E8067C3A
-
-Key = 000000000000000000000000000000000000000200000000
-In = 00000000000000000000000000000000
-Out = 98DF44D404B5BD54CA5D55D08E7F1B12
-
-Key = 000000000000000000000000000000000000000100000000
-In = 00000000000000000000000000000000
-Out = 9FD5F1165CD60FA5229CF03080428664
-
-Key = 000000000000000000000000000000000000000080000000
-In = 00000000000000000000000000000000
-Out = B4AE95212E3E8FFD6B27D4F0CC079CCA
-
-Key = 000000000000000000000000000000000000000040000000
-In = 00000000000000000000000000000000
-Out = 878BD051874AB0BAC12EA94C60CC2671
-
-Key = 000000000000000000000000000000000000000020000000
-In = 00000000000000000000000000000000
-Out = 3B0F2EF2A0849425063F49E65DF4D3AB
-
-Key = 000000000000000000000000000000000000000010000000
-In = 00000000000000000000000000000000
-Out = 07D4297668485EBBF0F9266C203407E2
-
-Key = 000000000000000000000000000000000000000008000000
-In = 00000000000000000000000000000000
-Out = C2ECFB79C073BD453BDD2323C77FF80D
-
-Key = 000000000000000000000000000000000000000004000000
-In = 00000000000000000000000000000000
-Out = 5173B04FC7C211CA17161164B79D0AE7
-
-Key = 000000000000000000000000000000000000000002000000
-In = 00000000000000000000000000000000
-Out = 5135A445A721783AACD06930D39F72C4
-
-Key = 000000000000000000000000000000000000000001000000
-In = 00000000000000000000000000000000
-Out = A511E849B1B75DC94B1D73D957B53D78
-
-Key = 000000000000000000000000000000000000000000800000
-In = 00000000000000000000000000000000
-Out = 42312B67F192D72B73689C712D60EAB7
-
-Key = 000000000000000000000000000000000000000000400000
-In = 00000000000000000000000000000000
-Out = 30C89A160855BC3F339A170B715DD482
-
-Key = 000000000000000000000000000000000000000000200000
-In = 00000000000000000000000000000000
-Out = 8DC19A7A97319A3309B98797A59954FA
-
-Key = 000000000000000000000000000000000000000000100000
-In = 00000000000000000000000000000000
-Out = D0AA5A8B9DFF98E18281E5FF20CCA3DE
-
-Key = 000000000000000000000000000000000000000000080000
-In = 00000000000000000000000000000000
-Out = AFA70EF4B45EA22E90108B834019120A
-
-Key = 000000000000000000000000000000000000000000040000
-In = 00000000000000000000000000000000
-Out = 2801C6A5C0547CB988A2137A559D12B0
-
-Key = 000000000000000000000000000000000000000000020000
-In = 00000000000000000000000000000000
-Out = D791F5709D4AFE0642955F1B072F144E
-
-Key = 000000000000000000000000000000000000000000010000
-In = 00000000000000000000000000000000
-Out = 35BB50E6D59A693709DE9B88CC8581F6
-
-Key = 000000000000000000000000000000000000000000008000
-In = 00000000000000000000000000000000
-Out = 9B58CC95279539C1AF0BBC274A62F5C8
-
-Key = 000000000000000000000000000000000000000000004000
-In = 00000000000000000000000000000000
-Out = F51803FF4EA1B0F0AFF1C68C5C98CB3A
-
-Key = 000000000000000000000000000000000000000000002000
-In = 00000000000000000000000000000000
-Out = 975B5309F1D3ACE9BA08B3D2D3FCB43E
-
-Key = 000000000000000000000000000000000000000000001000
-In = 00000000000000000000000000000000
-Out = D53CD9381EA85B0C106C22DA611F7336
-
-Key = 000000000000000000000000000000000000000000000800
-In = 00000000000000000000000000000000
-Out = 393270B47546F1BFE35690ACCAC0FEBD
-
-Key = 000000000000000000000000000000000000000000000400
-In = 00000000000000000000000000000000
-Out = 53E21284948996FC03ED9BCC34B45B61
-
-Key = 000000000000000000000000000000000000000000000200
-In = 00000000000000000000000000000000
-Out = AD9CA2740670DA740C75703A8859382B
-
-Key = 000000000000000000000000000000000000000000000100
-In = 00000000000000000000000000000000
-Out = AC9C2960E3061E56D8B9A1CDD3EED010
-
-Key = 000000000000000000000000000000000000000000000080
-In = 00000000000000000000000000000000
-Out = E5F68B122D15823F131DEA0468977D70
-
-Key = 000000000000000000000000000000000000000000000040
-In = 00000000000000000000000000000000
-Out = 7EB7C6460FE9885BC96AFD4D4B65E90E
-
-Key = 000000000000000000000000000000000000000000000020
-In = 00000000000000000000000000000000
-Out = 409147483ADC22592CA41224D35BB323
-
-Key = 000000000000000000000000000000000000000000000010
-In = 00000000000000000000000000000000
-Out = AB61745316651F61F4E2CC1DFBF8135C
-
-Key = 000000000000000000000000000000000000000000000008
-In = 00000000000000000000000000000000
-Out = 88977EAD91ECF9C83F33EBE41FB7410C
-
-Key = 000000000000000000000000000000000000000000000004
-In = 00000000000000000000000000000000
-Out = 9DC923136A1882D73CB412C986103481
-
-Key = 000000000000000000000000000000000000000000000002
-In = 00000000000000000000000000000000
-Out = 9914219ED77B8FA772B4B8C53F9AD2FC
-
-Key = 000000000000000000000000000000000000000000000001
-In = 00000000000000000000000000000000
-Out = B9A0FA2324625650A2052D691E7DE9C3
-
-Key = 8000000000000000000000000000000000000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = 5172978A58543DE597060983FD799F1B
-
-Key = 4000000000000000000000000000000000000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = 0F86AECE7ACE09A8EAC0345C935BE91A
-
-Key = 2000000000000000000000000000000000000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = 8C8D6ACDB23AE4B5BEE4E2C15273286F
-
-Key = 1000000000000000000000000000000000000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = 11395D4BFE4C8258979EE2BF2D24DFF4
-
-Key = 0800000000000000000000000000000000000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = D50183337FD8B3FAEF06C78B2ECFC40F
-
-Key = 0400000000000000000000000000000000000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = F3969970B4E37D9FFD9BD886200D7C0F
-
-Key = 0200000000000000000000000000000000000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = FF101A14CCB71863E0B51E8583D22760
-
-Key = 0100000000000000000000000000000000000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = 0CACB5AB8A51226134656220DBF23228
-
-Key = 0080000000000000000000000000000000000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = BF75C54F53A3F374DC549BE280F6C6E0
-
-Key = 0040000000000000000000000000000000000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = 1DC755ED6128DC50826E65632C7672D6
-
-Key = 0020000000000000000000000000000000000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = D7A46C3A378DB6A9C041D7DB1835DE3F
-
-Key = 0010000000000000000000000000000000000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = 175FDB12EFB7E7D950777FE12BAAC953
-
-Key = 0008000000000000000000000000000000000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = 1A5C489CB6E0608EADAF3DBFA8B5FD1B
-
-Key = 0004000000000000000000000000000000000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = 7FD567FB07007A65CA8D98D4BF66F7F1
-
-Key = 0002000000000000000000000000000000000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = 3256E4481641ED28938AD6471414CD04
-
-Key = 0001000000000000000000000000000000000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = A2AD960B437DCD0669681BBBC30F0CF1
-
-Key = 0000800000000000000000000000000000000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = FB04B658FA923EA9CD5FB98BE54989DE
-
-Key = 0000400000000000000000000000000000000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = F3F43741881655CF074E36BD655F420B
-
-Key = 0000200000000000000000000000000000000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = 637DCF9D891EAD8D85A842BE0DC8261F
-
-Key = 0000100000000000000000000000000000000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = E663749A2786E3BA3833348A9CE5E7F0
-
-Key = 0000080000000000000000000000000000000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = 76F0F7C439E25C54A9BC7AEA05640882
-
-Key = 0000040000000000000000000000000000000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = 2CDE682FC40895F1E2464739FAD230DD
-
-Key = 0000020000000000000000000000000000000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = 3242FE919ADFDCE04F163EBE772AD51D
-
-Key = 0000010000000000000000000000000000000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = CE05F79A80B2947B13BD22EE37FB3F79
-
-Key = 0000008000000000000000000000000000000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = 5345BDE33281A0CB4A899A4F18C57563
-
-Key = 0000004000000000000000000000000000000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = 2E971691DDFD33D36738C08A517B0B44
-
-Key = 0000002000000000000000000000000000000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = EE144813E2194B18F1593C44932F170F
-
-Key = 0000001000000000000000000000000000000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = F626C435E30ABA4FA6F6DCA30CC08833
-
-Key = 0000000800000000000000000000000000000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = 8AD30F69BD7446793C36676755D05F57
-
-Key = 0000000400000000000000000000000000000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = 56851CB7277CBE4AE9AFF86E5BD49F90
-
-Key = 0000000200000000000000000000000000000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = CA864AC764D6B9B9141A08146CFA7F56
-
-Key = 0000000100000000000000000000000000000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = 484518D9A3C6CF7B7B92393DBBF78E42
-
-Key = 0000000080000000000000000000000000000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = 093F44542B0E41E300C11AE77A48C6C4
-
-Key = 0000000040000000000000000000000000000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = 6D9856ADC56605F70EF069D639C9D977
-
-Key = 0000000020000000000000000000000000000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = 3FFB2FF7C5457744CABDFB89C0BBA7E8
-
-Key = 0000000010000000000000000000000000000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = 6D8254191931BE754D64F70FE3E226C7
-
-Key = 0000000008000000000000000000000000000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = 23F3CC55C460EE949A9934C7E5C06CCB
-
-Key = 0000000004000000000000000000000000000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = 8739DA7F4A9D821EAA7A349E25741DAA
-
-Key = 0000000002000000000000000000000000000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = 73E724C08890501275A0559621526948
-
-Key = 0000000001000000000000000000000000000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = 4CC6569D4F6207DDB03B232BFA8AA481
-
-Key = 0000000000800000000000000000000000000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = 52A6D921AEF99205822B361D8D9DD998
-
-Key = 0000000000400000000000000000000000000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = 970E1899AEEEB7CCD26F854CA25214E2
-
-Key = 0000000000200000000000000000000000000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = D1DEFC8AC21C95160CF71612AAC55A8C
-
-Key = 0000000000100000000000000000000000000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = D8C2A3AD65F16024265714C21B8A70C5
-
-Key = 0000000000080000000000000000000000000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = 55DE20482FAE35A03F0D57B7546EB980
-
-Key = 0000000000040000000000000000000000000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = 81BCA41F11D12EE26326E042E74961AF
-
-Key = 0000000000020000000000000000000000000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = 6D8D5C30A508436401396224D4E417B5
-
-Key = 0000000000010000000000000000000000000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = 0FA1ECAB0B3C598C51372A5AAF6E1315
-
-Key = 0000000000008000000000000000000000000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = 945BF2690A9CE9ED8009004039E1E743
-
-Key = 0000000000004000000000000000000000000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = 73618AD5FD3A9740CB92C3F870C772B9
-
-Key = 0000000000002000000000000000000000000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = A7BAB4D0765D66F06FCB85A42D4CF0EE
-
-Key = 0000000000001000000000000000000000000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = 2A659EA8BF9EA163976C33A0B7463A56
-
-Key = 0000000000000800000000000000000000000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = 4D9D5CC19BF1B2D48EF2CF4CD313D3E3
-
-Key = 0000000000000400000000000000000000000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = 0D7A26F850BDD2A633689367901BC2A4
-
-Key = 0000000000000200000000000000000000000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = 1A1235352EC6CD1A7A1913E77EF7CE4D
-
-Key = 0000000000000100000000000000000000000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = 5FDC541376BAF15D5AC011B9C0B74E75
-
-Key = 0000000000000080000000000000000000000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = CB8DCB7AD04598E8337747E02A8DF16E
-
-Key = 0000000000000040000000000000000000000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = 2855A6EEA8B20B8B25EDEE37A7D7E976
-
-Key = 0000000000000020000000000000000000000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = 58B5CD00D833233E718DBEAABCC48E8F
-
-Key = 0000000000000010000000000000000000000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = 6DF58A11F96B67C330ED10FFFB1E6D74
-
-Key = 0000000000000008000000000000000000000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = 8FD74AAB8D136DCF1B398D1174AA343B
-
-Key = 0000000000000004000000000000000000000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = A81E2F57E80761E361DB1008AC1ABDD8
-
-Key = 0000000000000002000000000000000000000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = BDD939E7A93F6FECC762E2E3321DFEC7
-
-Key = 0000000000000001000000000000000000000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = C281060452693278B48AD9076911EC39
-
-Key = 0000000000000000800000000000000000000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = C06C159EEAFF3CB4B509DB604060F537
-
-Key = 0000000000000000400000000000000000000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = 757CED2216A9912B5FBFA1E623077E5D
-
-Key = 0000000000000000200000000000000000000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = 9606EDC198F44F955F510FA525E9C80C
-
-Key = 0000000000000000100000000000000000000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = ADE8D3FAE7A4651855E053F42FFF7905
-
-Key = 0000000000000000080000000000000000000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = 398BA679B6C0A63479F0C6FE25614F01
-
-Key = 0000000000000000040000000000000000000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = FB77ECA9DEF62902240E4BF3806F3A64
-
-Key = 0000000000000000020000000000000000000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = B4313D0A9D34B21F69021A5458680579
-
-Key = 0000000000000000010000000000000000000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = BDC7C4ED3B989BF8288E8B4ACDE3FEEA
-
-Key = 0000000000000000008000000000000000000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = 430A2DAFFA822532FD4843DF9CBAF824
-
-Key = 0000000000000000004000000000000000000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = 16A2DEBA266577150B6DC34995902C99
-
-Key = 0000000000000000002000000000000000000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = 5902382C7675AF5C52A6ADF349454276
-
-Key = 0000000000000000001000000000000000000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = 0D912AA37CFB56223C6ED9E04B3D563F
-
-Key = 0000000000000000000800000000000000000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = 1FD8880BE6A6E51C0C0E9C2866127F7D
-
-Key = 0000000000000000000400000000000000000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = BC4079EE5CDB86BDD8FAE650E2931D98
-
-Key = 0000000000000000000200000000000000000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = C52E414FC84C978FAD8CFA103844C306
-
-Key = 0000000000000000000100000000000000000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = DF6291B74EF77E82A8FB7C207213125F
-
-Key = 0000000000000000000080000000000000000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = 530424A0F23CD90074F2D672A4FF3A96
-
-Key = 0000000000000000000040000000000000000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = 83ED777537F5EE3E5769B8A07476A6AB
-
-Key = 0000000000000000000020000000000000000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = 5357341784EAB13F104FBAEFC69B726B
-
-Key = 0000000000000000000010000000000000000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = 6DBACA4C68AD93373CBEB1DB0963F33F
-
-Key = 0000000000000000000008000000000000000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = EFA128916DF70D852574EC8507625CC8
-
-Key = 0000000000000000000004000000000000000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = 0BD55284AC672E1A2F248FB89C22B514
-
-Key = 0000000000000000000002000000000000000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = E3222E0E2770496C443ED562ECBFC368
-
-Key = 0000000000000000000001000000000000000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = 6B689B6DB9374E072B45A7807DAAB132
-
-Key = 0000000000000000000000800000000000000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = 3215A725BCFBB120926F8BBCE41FC3EC
-
-Key = 0000000000000000000000400000000000000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = F2475FE25BEF963862CF66C91DA0250B
-
-Key = 0000000000000000000000200000000000000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = 5E1CC549BB39348529FD279DFE5E1FFC
-
-Key = 0000000000000000000000100000000000000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = 1A8EDD22AA0FE906267DF710DE8DB007
-
-Key = 0000000000000000000000080000000000000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = EE139CE12F8205D4EECCE6D7FD23B01F
-
-Key = 0000000000000000000000040000000000000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = FD84D87207D7BE3A79272CC9DF65E1E6
-
-Key = 0000000000000000000000020000000000000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = CE01B0EEA6BF6D981AFFB07FE1DD164E
-
-Key = 0000000000000000000000010000000000000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = 1BCCA9BD22179B1C941947643FB01F0F
-
-Key = 0000000000000000000000008000000000000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = 87A581347DF02FF9973A0622DF673804
-
-Key = 0000000000000000000000004000000000000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = 1EDEB75B65B365582AB5AA265037FA55
-
-Key = 0000000000000000000000002000000000000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = 807DD7E0418803258EF677BA9345CF51
-
-Key = 0000000000000000000000001000000000000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = 70CE90D345621481A99DC8EE1A62DCD5
-
-Key = 0000000000000000000000000800000000000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = BB51E835284E0F7B74C053151F07D207
-
-Key = 0000000000000000000000000400000000000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = 0240317EC3AFA5D4610C545C0D507367
-
-Key = 0000000000000000000000000200000000000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = 9B77B76CA91662A9CB067267F0560C65
-
-Key = 0000000000000000000000000100000000000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = 2219ED37D533B05CDC20B16F45D3DBD9
-
-Key = 0000000000000000000000000080000000000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = BC5A33AF9E4591BD4CF53B20728C3F85
-
-Key = 0000000000000000000000000040000000000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = 68628B89F58C20E5195DB795C0A41489
-
-Key = 0000000000000000000000000020000000000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = 5D177DE234B6288510163F2351750215
-
-Key = 0000000000000000000000000010000000000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = 6015D7BA2F33B88B2BE0016E022E05FE
-
-Key = 0000000000000000000000000008000000000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = 2D203E35B97E3B315C17D9F0F80ACDA0
-
-Key = 0000000000000000000000000004000000000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = E5800AF9BF96D6B7ED3A2AED899CA456
-
-Key = 0000000000000000000000000002000000000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = 1163E6F8F1DE919686C138089EFA7986
-
-Key = 0000000000000000000000000001000000000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = 2180B46E9EAC63A165BE63DAE17889A4
-
-Key = 0000000000000000000000000000800000000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = 3D751DC36B1046AC808D8275B48697AC
-
-Key = 0000000000000000000000000000400000000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = DF022C5EFCEB5D3FE7E72DDF11D16EA3
-
-Key = 0000000000000000000000000000200000000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = C706AB7A20E0D038143B78D9D12EC1A4
-
-Key = 0000000000000000000000000000100000000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = 8AFB006F196B00DAE7F0B36C9E88A3B9
-
-Key = 0000000000000000000000000000080000000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = BED70262ED524A5C6A495092E2543993
-
-Key = 0000000000000000000000000000040000000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = 088A58A7351C7A7AF594035514DE0757
-
-Key = 0000000000000000000000000000020000000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = F5DF0BB68AB377B12321365C05480EA8
-
-Key = 0000000000000000000000000000010000000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = 512DC8D603A7E4C8031D3566F141B233
-
-Key = 0000000000000000000000000000008000000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = 50342EA0E9E81EC53E3683C8C1471602
-
-Key = 0000000000000000000000000000004000000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = 8AAB01E320B17FD9945D725F5EA904BA
-
-Key = 0000000000000000000000000000002000000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = 76FB320065713C165DECBE5DAFDD79BD
-
-Key = 0000000000000000000000000000001000000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = A8AD014D22CD8FCC9557438B8228253A
-
-Key = 0000000000000000000000000000000800000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = 6017A9EB6F3336882FCCEDEC746C62F6
-
-Key = 0000000000000000000000000000000400000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = 2EDF94990EB0F4BAFE1F5903102FE874
-
-Key = 0000000000000000000000000000000200000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = 4EC81B0FA8FAE0025AF09D26F1F200EA
-
-Key = 0000000000000000000000000000000100000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = AF7F474333E74691E5D01A3A841F8096
-
-Key = 0000000000000000000000000000000080000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = 28FCE531836F2A255CA19DE6F53841E8
-
-Key = 0000000000000000000000000000000040000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = 6282A41053316B1A4027488E6F747003
-
-Key = 0000000000000000000000000000000020000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = 3668527987AC38A3F7C052A20B668F24
-
-Key = 0000000000000000000000000000000010000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = 4C3473FE666072653E29354F07EF02B5
-
-Key = 0000000000000000000000000000000008000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = 0A51D7A5B347225798EDE5663940F32F
-
-Key = 0000000000000000000000000000000004000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = D3CA3A8821A3D094CF63CF12136A1249
-
-Key = 0000000000000000000000000000000002000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = FBC5E4B37A69AD5F21E53F88E55AB95D
-
-Key = 0000000000000000000000000000000001000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = CCCAAA0A2DEFD357EE31C2CFEC9D0E8E
-
-Key = 0000000000000000000000000000000000800000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = 93348B5393560AA416C6E6F0C99A58F7
-
-Key = 0000000000000000000000000000000000400000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = 13AC66E49E23A8D3582AA7117F7A8F2F
-
-Key = 0000000000000000000000000000000000200000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = C403AD02F23055CEE08281E7D0C7EB2A
-
-Key = 0000000000000000000000000000000000100000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = 65DFD53B699B191CE7A6610A405083DC
-
-Key = 0000000000000000000000000000000000080000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = 3D6F7E99F6512553BB983E8F75672B97
-
-Key = 0000000000000000000000000000000000040000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = 92BA0D580A954F8C8494A840F0252AEF
-
-Key = 0000000000000000000000000000000000020000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = 958D8C9141CE21DBD69E19BA1E4F67AA
-
-Key = 0000000000000000000000000000000000010000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = E508796197F539FCDC917ECAB19507E0
-
-Key = 0000000000000000000000000000000000008000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = 2200A6914A2050E99A55FB3BF20315E4
-
-Key = 0000000000000000000000000000000000004000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = 627C0B2401EE6C095404CD7AA59EA67E
-
-Key = 0000000000000000000000000000000000002000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = 75159B707278DFE6FD8A024B9FF0D5A8
-
-Key = 0000000000000000000000000000000000001000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = F47982BE40C39306ACF25A120BC1B4E0
-
-Key = 0000000000000000000000000000000000000800000000000000000000000000
-In = 00000000000000000000000000000000
-Out = 01CAABEF85A1E081EA6983079A90EA34
-
-Key = 0000000000000000000000000000000000000400000000000000000000000000
-In = 00000000000000000000000000000000
-Out = 7F473CD21A453BF74CC76184D6F5496F
-
-Key = 0000000000000000000000000000000000000200000000000000000000000000
-In = 00000000000000000000000000000000
-Out = 659442FD57B94862529D3E4C530826FE
-
-Key = 0000000000000000000000000000000000000100000000000000000000000000
-In = 00000000000000000000000000000000
-Out = 88A9140C094A695716A2966B1A8078A0
-
-Key = 0000000000000000000000000000000000000080000000000000000000000000
-In = 00000000000000000000000000000000
-Out = 28CCFC1BB6180AA7373DA1F5A54E47EA
-
-Key = 0000000000000000000000000000000000000040000000000000000000000000
-In = 00000000000000000000000000000000
-Out = 53DFD8CB845FD279B337B52DBBA3CF4C
-
-Key = 0000000000000000000000000000000000000020000000000000000000000000
-In = 00000000000000000000000000000000
-Out = 1BB5B100DFE6BA16983AD4A0F09FD50B
-
-Key = 0000000000000000000000000000000000000010000000000000000000000000
-In = 00000000000000000000000000000000
-Out = A896AE30D529D4ACFFCF5B763309CD28
-
-Key = 0000000000000000000000000000000000000008000000000000000000000000
-In = 00000000000000000000000000000000
-Out = F40A1B359A9B6B1197276C71222371F4
-
-Key = 0000000000000000000000000000000000000004000000000000000000000000
-In = 00000000000000000000000000000000
-Out = 9FDE11C9E6CF9A1E9089820FD928767C
-
-Key = 0000000000000000000000000000000000000002000000000000000000000000
-In = 00000000000000000000000000000000
-Out = 7771A5A99B099A2C861D084E790958A2
-
-Key = 0000000000000000000000000000000000000001000000000000000000000000
-In = 00000000000000000000000000000000
-Out = BE1907AA5CA148A0282850401C48AF71
-
-Key = 0000000000000000000000000000000000000000800000000000000000000000
-In = 00000000000000000000000000000000
-Out = 8E47D50827FD36B62C0D3BD36F863198
-
-Key = 0000000000000000000000000000000000000000400000000000000000000000
-In = 00000000000000000000000000000000
-Out = 81AA1751209F9173258CD1625DB65E07
-
-Key = 0000000000000000000000000000000000000000200000000000000000000000
-In = 00000000000000000000000000000000
-Out = 1EE8FE72574BD819C97A0DEA2A5E0B64
-
-Key = 0000000000000000000000000000000000000000100000000000000000000000
-In = 00000000000000000000000000000000
-Out = 031BA0B3EFCAE9B08793C8107C277A27
-
-Key = 0000000000000000000000000000000000000000080000000000000000000000
-In = 00000000000000000000000000000000
-Out = 34C8DFD0DC4BA5240CA21BF4959EEF6B
-
-Key = 0000000000000000000000000000000000000000040000000000000000000000
-In = 00000000000000000000000000000000
-Out = C7A4DA0D5892A185D35447DB904511B5
-
-Key = 0000000000000000000000000000000000000000020000000000000000000000
-In = 00000000000000000000000000000000
-Out = 7A8B9982B6C8AE1B5DC02FC1D9AFA2E0
-
-Key = 0000000000000000000000000000000000000000010000000000000000000000
-In = 00000000000000000000000000000000
-Out = C77E0DFB29402C587C6DD97E0BD09ABA
-
-Key = 0000000000000000000000000000000000000000008000000000000000000000
-In = 00000000000000000000000000000000
-Out = 1AA2FD990BD0B0715B18482088DE0844
-
-Key = 0000000000000000000000000000000000000000004000000000000000000000
-In = 00000000000000000000000000000000
-Out = 31C2D486FDA54BAB4286A02D260918AC
-
-Key = 0000000000000000000000000000000000000000002000000000000000000000
-In = 00000000000000000000000000000000
-Out = 545F5A95E159B5F0DDF544B60F9C28C3
-
-Key = 0000000000000000000000000000000000000000001000000000000000000000
-In = 00000000000000000000000000000000
-Out = 45C84895AF0393588C67D9CDD5E4D7E2
-
-Key = 0000000000000000000000000000000000000000000800000000000000000000
-In = 00000000000000000000000000000000
-Out = 745BF4AF94A92D32FFE44B41AEF39320
-
-Key = 0000000000000000000000000000000000000000000400000000000000000000
-In = 00000000000000000000000000000000
-Out = 13C47C2F92F91D72F34381AC9A81473D
-
-Key = 0000000000000000000000000000000000000000000200000000000000000000
-In = 00000000000000000000000000000000
-Out = 8836D5AA076110FCD5BD66F3BECB39F6
-
-Key = 0000000000000000000000000000000000000000000100000000000000000000
-In = 00000000000000000000000000000000
-Out = 11EDE6F221E96C7515B1256DF055FBC3
-
-Key = 0000000000000000000000000000000000000000000080000000000000000000
-In = 00000000000000000000000000000000
-Out = 4E3BE7D6830703A6185CF0BDBE7F5BE4
-
-Key = 0000000000000000000000000000000000000000000040000000000000000000
-In = 00000000000000000000000000000000
-Out = 6A1ABDA47972CFF536946A1C7D380810
-
-Key = 0000000000000000000000000000000000000000000020000000000000000000
-In = 00000000000000000000000000000000
-Out = 74031DB865D2FC8319A320FFAC4694D8
-
-Key = 0000000000000000000000000000000000000000000010000000000000000000
-In = 00000000000000000000000000000000
-Out = E1F751F11027548C057075E8D8F880EA
-
-Key = 0000000000000000000000000000000000000000000008000000000000000000
-In = 00000000000000000000000000000000
-Out = AF24FA74CA96D89088C9018AA60E1D53
-
-Key = 0000000000000000000000000000000000000000000004000000000000000000
-In = 00000000000000000000000000000000
-Out = 0E5214D31B2C9219F6C9686A35F210FF
-
-Key = 0000000000000000000000000000000000000000000002000000000000000000
-In = 00000000000000000000000000000000
-Out = 2A72E2E692463EE8846C94A483C27E25
-
-Key = 0000000000000000000000000000000000000000000001000000000000000000
-In = 00000000000000000000000000000000
-Out = 2B9C3298626F11072D7B1D80B47A841F
-
-Key = 0000000000000000000000000000000000000000000000800000000000000000
-In = 00000000000000000000000000000000
-Out = 7468CAA1A5FFC828BE5A752C33132E90
-
-Key = 0000000000000000000000000000000000000000000000400000000000000000
-In = 00000000000000000000000000000000
-Out = 29C75ADD5EDE2680C169FF9FD9177331
-
-Key = 0000000000000000000000000000000000000000000000200000000000000000
-In = 00000000000000000000000000000000
-Out = 9BA78930CDD3357A2D84A49725902E8F
-
-Key = 0000000000000000000000000000000000000000000000100000000000000000
-In = 00000000000000000000000000000000
-Out = F190AC4C43E202F925B5FD1E4CA62DD6
-
-Key = 0000000000000000000000000000000000000000000000080000000000000000
-In = 00000000000000000000000000000000
-Out = 5716FB34A1A6B40C35B2BA860F12163E
-
-Key = 0000000000000000000000000000000000000000000000040000000000000000
-In = 00000000000000000000000000000000
-Out = 43B90548889A171E85515AB05EC76856
-
-Key = 0000000000000000000000000000000000000000000000020000000000000000
-In = 00000000000000000000000000000000
-Out = B4DE6F86875147F5276D584CEC11AFB4
-
-Key = 0000000000000000000000000000000000000000000000010000000000000000
-In = 00000000000000000000000000000000
-Out = 3DA6C1A8937583BF6491B2E9C52081E6
-
-Key = 0000000000000000000000000000000000000000000000008000000000000000
-In = 00000000000000000000000000000000
-Out = 9A54FCD26D9754ADD5F8967EF551EAB0
-
-Key = 0000000000000000000000000000000000000000000000004000000000000000
-In = 00000000000000000000000000000000
-Out = F0DCFA56A7E41A859276A6F8927B561D
-
-Key = 0000000000000000000000000000000000000000000000002000000000000000
-In = 00000000000000000000000000000000
-Out = 5881A8AE181F16B64CD0C455389F511C
-
-Key = 0000000000000000000000000000000000000000000000001000000000000000
-In = 00000000000000000000000000000000
-Out = E9F7AD45D9EA9AA4C830B89EEC61C1B5
-
-Key = 0000000000000000000000000000000000000000000000000800000000000000
-In = 00000000000000000000000000000000
-Out = 9118B623A63BFC69A9AAB868D752460B
-
-Key = 0000000000000000000000000000000000000000000000000400000000000000
-In = 00000000000000000000000000000000
-Out = 2D208D46FB2177C243C539FCCD4A1E9D
-
-Key = 0000000000000000000000000000000000000000000000000200000000000000
-In = 00000000000000000000000000000000
-Out = 2A4F52A297F20E428222008D9BE4A23B
-
-Key = 0000000000000000000000000000000000000000000000000100000000000000
-In = 00000000000000000000000000000000
-Out = EBCFDD28550C9654374590EC4BFD1CDC
-
-Key = 0000000000000000000000000000000000000000000000000080000000000000
-In = 00000000000000000000000000000000
-Out = FABB99266FC741241F6CFC0CED776A11
-
-Key = 0000000000000000000000000000000000000000000000000040000000000000
-In = 00000000000000000000000000000000
-Out = FBDEC944B2303E3A08A964E24130D10D
-
-Key = 0000000000000000000000000000000000000000000000000020000000000000
-In = 00000000000000000000000000000000
-Out = 9897E33E6052ABA1F07233BCEF531E32
-
-Key = 0000000000000000000000000000000000000000000000000010000000000000
-In = 00000000000000000000000000000000
-Out = 509DCA41B038225B30D8B7880D52999D
-
-Key = 0000000000000000000000000000000000000000000000000008000000000000
-In = 00000000000000000000000000000000
-Out = 3F70238F99F2AF394C31308D68F1707C
-
-Key = 0000000000000000000000000000000000000000000000000004000000000000
-In = 00000000000000000000000000000000
-Out = E6FF6426E9025DD6519837F71A6C3636
-
-Key = 0000000000000000000000000000000000000000000000000002000000000000
-In = 00000000000000000000000000000000
-Out = F222502AEF77C1F21DB79B08F7AB8CA2
-
-Key = 0000000000000000000000000000000000000000000000000001000000000000
-In = 00000000000000000000000000000000
-Out = C17D2C00477C1AA20B539BE8174E7202
-
-Key = 0000000000000000000000000000000000000000000000000000800000000000
-In = 00000000000000000000000000000000
-Out = 0F7B12AE962AF9C0C8CDCAA288FC6E12
-
-Key = 0000000000000000000000000000000000000000000000000000400000000000
-In = 00000000000000000000000000000000
-Out = 0E740EE58431521A622122AEFB163CE2
-
-Key = 0000000000000000000000000000000000000000000000000000200000000000
-In = 00000000000000000000000000000000
-Out = CF0B94FECAC6F67070306654FE198449
-
-Key = 0000000000000000000000000000000000000000000000000000100000000000
-In = 00000000000000000000000000000000
-Out = 604EA1D0711ACB8E545C0A88976008F9
-
-Key = 0000000000000000000000000000000000000000000000000000080000000000
-In = 00000000000000000000000000000000
-Out = 71D03D8F6F917FDF5B612180454F3699
-
-Key = 0000000000000000000000000000000000000000000000000000040000000000
-In = 00000000000000000000000000000000
-Out = A6BCFE7B73EDCE71DB36AF00B01C37EC
-
-Key = 0000000000000000000000000000000000000000000000000000020000000000
-In = 00000000000000000000000000000000
-Out = 93D761851BB991221AE77968459787DD
-
-Key = 0000000000000000000000000000000000000000000000000000010000000000
-In = 00000000000000000000000000000000
-Out = F117E4D5C88CC1C067C88AE38A5BF1D5
-
-Key = 0000000000000000000000000000000000000000000000000000008000000000
-In = 00000000000000000000000000000000
-Out = B534328DA555A9B69AC2A5B08E3CE47E
-
-Key = 0000000000000000000000000000000000000000000000000000004000000000
-In = 00000000000000000000000000000000
-Out = 7BDFB785D866B6487790B9F6164F5EBD
-
-Key = 0000000000000000000000000000000000000000000000000000002000000000
-In = 00000000000000000000000000000000
-Out = 5B3BB41E43D02901F5A0231768347B38
-
-Key = 0000000000000000000000000000000000000000000000000000001000000000
-In = 00000000000000000000000000000000
-Out = 917216669DB1600015F2FE7CBDDA0FF4
-
-Key = 0000000000000000000000000000000000000000000000000000000800000000
-In = 00000000000000000000000000000000
-Out = C79B582FC430C0187D7B1D7B1E79BDB9
-
-Key = 0000000000000000000000000000000000000000000000000000000400000000
-In = 00000000000000000000000000000000
-Out = B9A43998AED6BB7B79C91BB4C2530F4E
-
-Key = 0000000000000000000000000000000000000000000000000000000200000000
-In = 00000000000000000000000000000000
-Out = 0B24EBDF9A1D129F5E8397AB7412BC74
-
-Key = 0000000000000000000000000000000000000000000000000000000100000000
-In = 00000000000000000000000000000000
-Out = 96D523E4EF1C888C72460DEBA8D58B78
-
-Key = 0000000000000000000000000000000000000000000000000000000080000000
-In = 00000000000000000000000000000000
-Out = 85708C4539C8B06DD787AFDD06A3FE24
-
-Key = 0000000000000000000000000000000000000000000000000000000040000000
-In = 00000000000000000000000000000000
-Out = 67A106762D2F46B7880750BCF987054C
-
-Key = 0000000000000000000000000000000000000000000000000000000020000000
-In = 00000000000000000000000000000000
-Out = 8F46E37371E81C389CA94A8272A14FC8
-
-Key = 0000000000000000000000000000000000000000000000000000000010000000
-In = 00000000000000000000000000000000
-Out = 92DC700C11BBE46DA9559CAA7BA662F0
-
-Key = 0000000000000000000000000000000000000000000000000000000008000000
-In = 00000000000000000000000000000000
-Out = 90D2B52984DA214F392EF4EAC26A04FE
-
-Key = 0000000000000000000000000000000000000000000000000000000004000000
-In = 00000000000000000000000000000000
-Out = 832D440D62996C5BFCB7FAA08DEB4D2C
-
-Key = 0000000000000000000000000000000000000000000000000000000002000000
-In = 00000000000000000000000000000000
-Out = 69B7F725BA2B0539F6B45F2C8495D571
-
-Key = 0000000000000000000000000000000000000000000000000000000001000000
-In = 00000000000000000000000000000000
-Out = CE78A2AA25F818D87C46367579FAE698
-
-Key = 0000000000000000000000000000000000000000000000000000000000800000
-In = 00000000000000000000000000000000
-Out = F5E3E4DA4FC90F25F7D6679F076CA32E
-
-Key = 0000000000000000000000000000000000000000000000000000000000400000
-In = 00000000000000000000000000000000
-Out = F7618B001BC19F0195BD21021D9545B6
-
-Key = 0000000000000000000000000000000000000000000000000000000000200000
-In = 00000000000000000000000000000000
-Out = D84E1E36E1100913C7AFDBFE5009EDEA
-
-Key = 0000000000000000000000000000000000000000000000000000000000100000
-In = 00000000000000000000000000000000
-Out = 9DB2838E3903829913D2AEE6465202FD
-
-Key = 0000000000000000000000000000000000000000000000000000000000080000
-In = 00000000000000000000000000000000
-Out = 361AFBF61BDB378CCF2B76C01469BAA2
-
-Key = 0000000000000000000000000000000000000000000000000000000000040000
-In = 00000000000000000000000000000000
-Out = DC4C998046574B4CC447154F663E8EBD
-
-Key = 0000000000000000000000000000000000000000000000000000000000020000
-In = 00000000000000000000000000000000
-Out = 0D890EFA71666BE0A38B423BAD47C90F
-
-Key = 0000000000000000000000000000000000000000000000000000000000010000
-In = 00000000000000000000000000000000
-Out = F39C444538E646A2BD59B443F68C51D5
-
-Key = 0000000000000000000000000000000000000000000000000000000000008000
-In = 00000000000000000000000000000000
-Out = 9C6D37340E8F5EA22213E17A9F720238
-
-Key = 0000000000000000000000000000000000000000000000000000000000004000
-In = 00000000000000000000000000000000
-Out = 3A23813329F978C1C6C3BE1715011283
-
-Key = 0000000000000000000000000000000000000000000000000000000000002000
-In = 00000000000000000000000000000000
-Out = CE24D63AFA37E2A659A21CF770109BB4
-
-Key = 0000000000000000000000000000000000000000000000000000000000001000
-In = 00000000000000000000000000000000
-Out = DF329017478D86B2C360D55BC2B2ADCF
-
-Key = 0000000000000000000000000000000000000000000000000000000000000800
-In = 00000000000000000000000000000000
-Out = BC5EFA1FBF848776746FD7826656E25C
-
-Key = 0000000000000000000000000000000000000000000000000000000000000400
-In = 00000000000000000000000000000000
-Out = A3E4185241C566DD2CF8117D4D7699F4
-
-Key = 0000000000000000000000000000000000000000000000000000000000000200
-In = 00000000000000000000000000000000
-Out = EF7BBDEB18879C11E2979DCC601CB620
-
-Key = 0000000000000000000000000000000000000000000000000000000000000100
-In = 00000000000000000000000000000000
-Out = FDC76A95F9C87E394F82A787D7406D40
-
-Key = 0000000000000000000000000000000000000000000000000000000000000080
-In = 00000000000000000000000000000000
-Out = B224E2BECACF6773B9941516195ED06B
-
-Key = 0000000000000000000000000000000000000000000000000000000000000040
-In = 00000000000000000000000000000000
-Out = B3951D0CF640BB7BD8F3D9948745FF9E
-
-Key = 0000000000000000000000000000000000000000000000000000000000000020
-In = 00000000000000000000000000000000
-Out = F9C8966E2874F736765B89DA10EF4611
-
-Key = 0000000000000000000000000000000000000000000000000000000000000010
-In = 00000000000000000000000000000000
-Out = 3750F26BAB98833AB30444C0821A594C
-
-Key = 0000000000000000000000000000000000000000000000000000000000000008
-In = 00000000000000000000000000000000
-Out = D369C2B7C2337D67A87CD5B4EB45D290
-
-Key = 0000000000000000000000000000000000000000000000000000000000000004
-In = 00000000000000000000000000000000
-Out = F3A44B0F53DCC9F79E1AFA8ABB022C84
-
-Key = 0000000000000000000000000000000000000000000000000000000000000002
-In = 00000000000000000000000000000000
-Out = 6E47C47F3940D369EC703E974AB350B6
-
-Key = 0000000000000000000000000000000000000000000000000000000000000001
-In = 00000000000000000000000000000000
-Out = 1100DE2A57C47C2EB63277537ADE5716
-
-Key = 01010101010101010101010101010101
-In = 01010101010101010101010101010101
-Out = EFB2C7DD69614683DAB0BC607036C425
-
-Key = 02020202020202020202020202020202
-In = 02020202020202020202020202020202
-Out = A1AE9D211867538B100BD121BA6A3ADC
-
-Key = 03030303030303030303030303030303
-In = 03030303030303030303030303030303
-Out = 8E77797CEC40C34AD3A3230975AE760E
-
-Key = 04040404040404040404040404040404
-In = 04040404040404040404040404040404
-Out = 91086B2221C3FC8E254A97B611D83239
-
-Key = 05050505050505050505050505050505
-In = 05050505050505050505050505050505
-Out = 95CA7F3CA2269A73B4964BD7A6A3DEA0
-
-Key = 06060606060606060606060606060606
-In = 06060606060606060606060606060606
-Out = BD7EB1B707AA5F801070B9C94F64A5C6
-
-Key = 07070707070707070707070707070707
-In = 07070707070707070707070707070707
-Out = 37CE0ADCFAA89DD737CB15193DCBA48E
-
-Key = 08080808080808080808080808080808
-In = 08080808080808080808080808080808
-Out = 37B6051557E2E535EE8B4955AC5DCB82
-
-Key = 09090909090909090909090909090909
-In = 09090909090909090909090909090909
-Out = 33D6A06EB3B16C0C6078BF56F2966AB2
-
-Key = 0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A
-In = 0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A
-Out = 521D3B74BA74D29362708CFE62E357AB
-
-Key = 0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B
-In = 0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B
-Out = CDD5D57C2ABED59CEACAA9352103751F
-
-Key = 0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C
-In = 0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C
-Out = 173D2D1CABD12095742C3045EC50899A
-
-Key = 0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D
-In = 0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D
-Out = A85D680132CCF78F2918A9698D6431D6
-
-Key = 0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E
-In = 0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E
-Out = C8137067650576081E34565121681374
-
-Key = 0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F
-In = 0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F
-Out = EDC375FEF71B83B2BE5187F82D0180EA
-
-Key = 10101010101010101010101010101010
-In = 10101010101010101010101010101010
-Out = 54FD2A83F505EE40F4F6F4F94198ED48
-
-Key = 11111111111111111111111111111111
-In = 11111111111111111111111111111111
-Out = 10CC2D64A5306366D8D594B8CDB4FBD3
-
-Key = 12121212121212121212121212121212
-In = 12121212121212121212121212121212
-Out = 13E3A82E121BC3CCA5C703FCAC451E22
-
-Key = 13131313131313131313131313131313
-In = 13131313131313131313131313131313
-Out = 1D8753BFF6930FA77FD7819F5935C422
-
-Key = 14141414141414141414141414141414
-In = 14141414141414141414141414141414
-Out = A6FF617A5D0395407BEEC3A311A0CBCB
-
-Key = 15151515151515151515151515151515
-In = 15151515151515151515151515151515
-Out = 034D4716AC68312E05C9497E9FC9430A
-
-Key = 16161616161616161616161616161616
-In = 16161616161616161616161616161616
-Out = 690D68007F51E2E8C9516EF9EE64F85D
-
-Key = 17171717171717171717171717171717
-In = 17171717171717171717171717171717
-Out = EF1396B41E8AF9BD6B2EBDEB7CC1A91B
-
-Key = 18181818181818181818181818181818
-In = 18181818181818181818181818181818
-Out = 9A20B52BFC5EB501F027978FBD684A1B
-
-Key = 19191919191919191919191919191919
-In = 19191919191919191919191919191919
-Out = 7A1A35FAD281601D522188B546CE1800
-
-Key = 1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A
-In = 1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A
-Out = F715BBB8000B577E6EF5D698511E8D03
-
-Key = 1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B
-In = 1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B
-Out = 09E83FD6F11C656ACAA1D1FAAF02F086
-
-Key = 1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C
-In = 1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C
-Out = 41561B53A60A9FBB25304169789461BB
-
-Key = 1D1D1D1D1D1D1D1D1D1D1D1D1D1D1D1D
-In = 1D1D1D1D1D1D1D1D1D1D1D1D1D1D1D1D
-Out = B47BB77008C75F854861994479DA3E7B
-
-Key = 1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E
-In = 1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E
-Out = 811CE0CFEB49117D6ED593FBFD5E6CD6
-
-Key = 1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F
-In = 1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F
-Out = C9479F831ECEBCFCB91F99FD6379A962
-
-Key = 20202020202020202020202020202020
-In = 20202020202020202020202020202020
-Out = FF2C70AB530B889BFF5F3C902DE6209A
-
-Key = 21212121212121212121212121212121
-In = 21212121212121212121212121212121
-Out = 695A8754A7A6F18C4F3C6EE9CE0EA103
-
-Key = 22222222222222222222222222222222
-In = 22222222222222222222222222222222
-Out = 2E2DFBB0C8BD286E87625F61A2F7D887
-
-Key = 23232323232323232323232323232323
-In = 23232323232323232323232323232323
-Out = CE8E66F871157B0182653B625074CB02
-
-Key = 24242424242424242424242424242424
-In = 24242424242424242424242424242424
-Out = C32823388E5ADBD6AA14186CE0400A4E
-
-Key = 25252525252525252525252525252525
-In = 25252525252525252525252525252525
-Out = EDEA3E4740736BC47A7891609B86CE9E
-
-Key = 26262626262626262626262626262626
-In = 26262626262626262626262626262626
-Out = 2B2DDCA5AD969636475196D462F5B2A5
-
-Key = 27272727272727272727272727272727
-In = 27272727272727272727272727272727
-Out = 5C46E5F8DD4E7DC61474CB8DFC3E04F0
-
-Key = 28282828282828282828282828282828
-In = 28282828282828282828282828282828
-Out = 6670EBB8C7E041121C5C5E449B675FD2
-
-Key = 29292929292929292929292929292929
-In = 29292929292929292929292929292929
-Out = 808DC7740040F39A6D3CBFAAC5228A23
-
-Key = 2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A
-In = 2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A
-Out = 15ECD6020C001F45262A1256AF7B066D
-
-Key = 2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B
-In = 2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B
-Out = C937773A54DC09B0CC52756A7EEEF178
-
-Key = 2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C
-In = 2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C
-Out = B8AB07101FC58ED64BBE203F31F892D4
-
-Key = 2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D
-In = 2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D
-Out = FC429A3B703812E0AAD1A325A23E33DE
-
-Key = 2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E
-In = 2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E
-Out = C4FFFE21B89FFCC6EC721D49E870ECEC
-
-Key = 2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F
-In = 2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F
-Out = D218CB13BC19296A50B5612A3721C1E2
-
-Key = 30303030303030303030303030303030
-In = 30303030303030303030303030303030
-Out = 573FF72784A1CEBD97FED191A3B979EF
-
-Key = 31313131313131313131313131313131
-In = 31313131313131313131313131313131
-Out = 4D44F703C1E1C39C3A2EDF5639394702
-
-Key = 32323232323232323232323232323232
-In = 32323232323232323232323232323232
-Out = 50F09502DB7FCF0095E5F8219DCA5A3C
-
-Key = 33333333333333333333333333333333
-In = 33333333333333333333333333333333
-Out = 9533F79F724484B169CB32EB7FAD0168
-
-Key = 34343434343434343434343434343434
-In = 34343434343434343434343434343434
-Out = 9EB8075BAB79DD8BBF7ECAD69C6B13CE
-
-Key = 35353535353535353535353535353535
-In = 35353535353535353535353535353535
-Out = E5450816410E771677D879F0A6ED86BD
-
-Key = 36363636363636363636363636363636
-In = 36363636363636363636363636363636
-Out = 07B20FB465C2F4FABC042A07E3163DEA
-
-Key = 37373737373737373737373737373737
-In = 37373737373737373737373737373737
-Out = 26B4CFBE7FDB3B3253E9F5D499DAD6C0
-
-Key = 38383838383838383838383838383838
-In = 38383838383838383838383838383838
-Out = 4FD4E8956C0808613A5EA19A9D753800
-
-Key = 39393939393939393939393939393939
-In = 39393939393939393939393939393939
-Out = FA74B3A2F745D440E74851D1C0D8679B
-
-Key = 3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A
-In = 3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A
-Out = 9D6FC40588769E07EC406A0CEBEC99F2
-
-Key = 3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B
-In = 3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B
-Out = 53602388866685FC37681EBC9BC46F73
-
-Key = 3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C
-In = 3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C
-Out = AB4532B652BDD0FC8ED4034CF3C11A24
-
-Key = 3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D
-In = 3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D
-Out = 66EFBCE5A3C3795A50C1A6B999CC3E71
-
-Key = 3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E
-In = 3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E
-Out = 1CAC1DEB42C55E3A3FEB261ED2FB3F50
-
-Key = 3F3F3F3F3F3F3F3F3F3F3F3F3F3F3F3F
-In = 3F3F3F3F3F3F3F3F3F3F3F3F3F3F3F3F
-Out = 31D98EA0E6B439432C3A6BB8E25D600D
-
-Key = 40404040404040404040404040404040
-In = 40404040404040404040404040404040
-Out = 898FD889A6AA36447C89D8CCC8B4043A
-
-Key = 41414141414141414141414141414141
-In = 41414141414141414141414141414141
-Out = AA74AA28D307802D28EDF73B58BD3BA3
-
-Key = 42424242424242424242424242424242
-In = 42424242424242424242424242424242
-Out = 57F1920F30A23C74DA3CD9CF78F4328C
-
-Key = 43434343434343434343434343434343
-In = 43434343434343434343434343434343
-Out = 2C30C357FB5A8F9D531CE0F17E1286F3
-
-Key = 44444444444444444444444444444444
-In = 44444444444444444444444444444444
-Out = C6E5EB2B3F9A7744A0128B93A4145A7B
-
-Key = 45454545454545454545454545454545
-In = 45454545454545454545454545454545
-Out = 0DBF0AD86C57F7D25A0CE61F6A6148EE
-
-Key = 46464646464646464646464646464646
-In = 46464646464646464646464646464646
-Out = 5F64A9BC4359153FF2572195A12F52D3
-
-Key = 47474747474747474747474747474747
-In = 47474747474747474747474747474747
-Out = B6099EE04520977CB7B1DE88E2120FA1
-
-Key = 48484848484848484848484848484848
-In = 48484848484848484848484848484848
-Out = 77AE144A7A3883038561F239C5312F09
-
-Key = 49494949494949494949494949494949
-In = 49494949494949494949494949494949
-Out = DF0FE7423AA1CF40C8FD45253817FE33
-
-Key = 4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A
-In = 4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A
-Out = CE4E05EC0EE20A8A4B27937B7B8ECED4
-
-Key = 4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B
-In = 4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B
-Out = BAB91404D49876BEE288311BA3C7456A
-
-Key = 4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C
-In = 4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C
-Out = 9DC6BCB030F1FBC24ADBF6EA5238E507
-
-Key = 4D4D4D4D4D4D4D4D4D4D4D4D4D4D4D4D
-In = 4D4D4D4D4D4D4D4D4D4D4D4D4D4D4D4D
-Out = BFACD02D59B26640B80B1886CD6E7D03
-
-Key = 4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E
-In = 4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E
-Out = 2076B2B836A8C545B3C103050E7AFF41
-
-Key = 4F4F4F4F4F4F4F4F4F4F4F4F4F4F4F4F
-In = 4F4F4F4F4F4F4F4F4F4F4F4F4F4F4F4F
-Out = 653B5B9A9751451C89DF56D79CFD07EF
-
-Key = 50505050505050505050505050505050
-In = 50505050505050505050505050505050
-Out = 7F4060C7776DEED87F7F9B26BEAFA428
-
-Key = 51515151515151515151515151515151
-In = 51515151515151515151515151515151
-Out = B7072058AEF8AA25604ACE1531C81C59
-
-Key = 52525252525252525252525252525252
-In = 52525252525252525252525252525252
-Out = 40A0515E8F01E55C60F70E0DAE4A1D31
-
-Key = 53535353535353535353535353535353
-In = 53535353535353535353535353535353
-Out = 9805BD832CBCBEE6B439D866F3ED53F9
-
-Key = 54545454545454545454545454545454
-In = 54545454545454545454545454545454
-Out = 81334B63525932E8B9342094A8DBB917
-
-Key = 55555555555555555555555555555555
-In = 55555555555555555555555555555555
-Out = 59670A6CBA2E729FEDD36389481541A4
-
-Key = 56565656565656565656565656565656
-In = 56565656565656565656565656565656
-Out = 84B3279AE90EACB5BF863DC17AE9212E
-
-Key = 57575757575757575757575757575757
-In = 57575757575757575757575757575757
-Out = 13F3BDFA7EF33A97F496692361AE6167
-
-Key = 58585858585858585858585858585858
-In = 58585858585858585858585858585858
-Out = 080F06D07DC2B4D0B748FA9F28946B0C
-
-Key = 59595959595959595959595959595959
-In = 59595959595959595959595959595959
-Out = 72B8521961C711E79AA30616F0B70687
-
-Key = 5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A
-In = 5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A
-Out = 75082BB9C98676FBB964DBDCD25705A2
-
-Key = 5B5B5B5B5B5B5B5B5B5B5B5B5B5B5B5B
-In = 5B5B5B5B5B5B5B5B5B5B5B5B5B5B5B5B
-Out = C00D2666ED3FAF0F01FEEB01A9883B1B
-
-Key = 5C5C5C5C5C5C5C5C5C5C5C5C5C5C5C5C
-In = 5C5C5C5C5C5C5C5C5C5C5C5C5C5C5C5C
-Out = C70DBF746F722EBC18A4F4B115193ED4
-
-Key = 5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D
-In = 5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D
-Out = 6283561914D3FABEE1FDD1747515C2D4
-
-Key = 5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E
-In = 5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E
-Out = 7AAABB3AE21BBA557AE89A0D9B99816C
-
-Key = 5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F
-In = 5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F
-Out = 4010AB7D9F7237DE123450ECA31B0900
-
-Key = 60606060606060606060606060606060
-In = 60606060606060606060606060606060
-Out = 3E4B358F1A26A197BF3B65B0DB4FB7E5
-
-Key = 61616161616161616161616161616161
-In = 61616161616161616161616161616161
-Out = 2E9D9D04453C0698FB444CFA3340E0B8
-
-Key = 62626262626262626262626262626262
-In = 62626262626262626262626262626262
-Out = 99ABC39983649030A48BAEDA6E718E8A
-
-Key = 63636363636363636363636363636363
-In = 63636363636363636363636363636363
-Out = 39478E48FACF3E28870082DFB51A817B
-
-Key = 64646464646464646464646464646464
-In = 64646464646464646464646464646464
-Out = 1BCA5B87AFEB4D9090910E02E3040CFD
-
-Key = 65656565656565656565656565656565
-In = 65656565656565656565656565656565
-Out = 30B0F7101370BB69E7B20D13050AB876
-
-Key = 66666666666666666666666666666666
-In = 66666666666666666666666666666666
-Out = CC000CAA9DEB82E9766CD98B9DE131DE
-
-Key = 67676767676767676767676767676767
-In = 67676767676767676767676767676767
-Out = AEDA25322DEA94FA8345FD467992B1D8
-
-Key = 68686868686868686868686868686868
-In = 68686868686868686868686868686868
-Out = 14D0D8253551FC65B1DE9DB1C3F0AB6A
-
-Key = 69696969696969696969696969696969
-In = 69696969696969696969696969696969
-Out = 67D32FDC0CD1AAC1F20E3F5FDFC986C0
-
-Key = 6A6A6A6A6A6A6A6A6A6A6A6A6A6A6A6A
-In = 6A6A6A6A6A6A6A6A6A6A6A6A6A6A6A6A
-Out = 3D8101226BBB3F4FFD40E68EF5F93626
-
-Key = 6B6B6B6B6B6B6B6B6B6B6B6B6B6B6B6B
-In = 6B6B6B6B6B6B6B6B6B6B6B6B6B6B6B6B
-Out = 684F017186FCC8AC24342CC54BF2FA6C
-
-Key = 6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C
-In = 6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C
-Out = 4AD0F6751D4DE121269F0FCCD99EFE68
-
-Key = 6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D
-In = 6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D
-Out = FDF357681BD91A83E2632698C1525CE0
-
-Key = 6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E
-In = 6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E
-Out = AC2698CD31DE9AC9740F53D467902FCB
-
-Key = 6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F
-In = 6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F
-Out = ED011F6CD9356CBA1E4715D60AB112A6
-
-Key = 70707070707070707070707070707070
-In = 70707070707070707070707070707070
-Out = 724926624439B1C8694571BC103CFCED
-
-Key = 71717171717171717171717171717171
-In = 71717171717171717171717171717171
-Out = C2725BBB0E4945AF08A6A7F1A9AF211A
-
-Key = 72727272727272727272727272727272
-In = 72727272727272727272727272727272
-Out = 0ABD84E7FF8FD3F826B4AFBE3AF2B653
-
-Key = 73737373737373737373737373737373
-In = 73737373737373737373737373737373
-Out = 404BEFC70C072CAEE758CC3E697E946D
-
-Key = 74747474747474747474747474747474
-In = 74747474747474747474747474747474
-Out = 0106FFAEE3A63E7B80004B044F864032
-
-Key = 75757575757575757575757575757575
-In = 75757575757575757575757575757575
-Out = AE43C4368B1FC9B98DB952887C4316B1
-
-Key = 76767676767676767676767676767676
-In = 76767676767676767676767676767676
-Out = FAC2FD894C5AEBC38A45034F38D44075
-
-Key = 77777777777777777777777777777777
-In = 77777777777777777777777777777777
-Out = 09831AB86A3DF171F1961A8E9F40BDD0
-
-Key = 78787878787878787878787878787878
-In = 78787878787878787878787878787878
-Out = DFC3FE2EC8C90B113BB11F76F3636E3D
-
-Key = 79797979797979797979797979797979
-In = 79797979797979797979797979797979
-Out = E9B9BB30C6D86061FA1812FF08CBC65A
-
-Key = 7A7A7A7A7A7A7A7A7A7A7A7A7A7A7A7A
-In = 7A7A7A7A7A7A7A7A7A7A7A7A7A7A7A7A
-Out = 0FC606C92CCFE70FEDAAE3DB6C443762
-
-Key = 7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B
-In = 7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B
-Out = 85DEC6534601D8B6B11B9060C8A42DF2
-
-Key = 7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C
-In = 7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C
-Out = 1250BEB80BC3D145284DF9188CCA5C50
-
-Key = 7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D
-In = 7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D
-Out = 318E30C9CCEBCA2A7F546A49052AF9A4
-
-Key = 7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E
-In = 7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E
-Out = 49FCFE05AEF655D83155DB617ED581BA
-
-Key = 7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F
-In = 7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F
-Out = 91EF1DED08B8BC59A916B5739195C758
-
-Key = 80808080808080808080808080808080
-In = 80808080808080808080808080808080
-Out = B5BCEC5D9EC2161530284CD96653C250
-
-Key = 81818181818181818181818181818181
-In = 81818181818181818181818181818181
-Out = 3B26ABD6B5688159301921809DF64FB1
-
-Key = 82828282828282828282828282828282
-In = 82828282828282828282828282828282
-Out = DAEA518A364BC404EEDD6903474BB56D
-
-Key = 83838383838383838383838383838383
-In = 83838383838383838383838383838383
-Out = 37C8EBDBCE1501AAD18A395AAADCB415
-
-Key = 84848484848484848484848484848484
-In = 84848484848484848484848484848484
-Out = 399FB3321F29829924CE72FBE9ED2756
-
-Key = 85858585858585858585858585858585
-In = 85858585858585858585858585858585
-Out = A88E685E95E838E27AC3024370BFE12F
-
-Key = 86868686868686868686868686868686
-In = 86868686868686868686868686868686
-Out = 4C56F71EC80909EC98673D808F42321E
-
-Key = 87878787878787878787878787878787
-In = 87878787878787878787878787878787
-Out = 4EFA656E3F35C570C8DC4EA5524B436C
-
-Key = 88888888888888888888888888888888
-In = 88888888888888888888888888888888
-Out = 808FA06393685AB9143C82CA4B954BE4
-
-Key = 89898989898989898989898989898989
-In = 89898989898989898989898989898989
-Out = D107696CCF562B2CC2901D50E1BFE320
-
-Key = 8A8A8A8A8A8A8A8A8A8A8A8A8A8A8A8A
-In = 8A8A8A8A8A8A8A8A8A8A8A8A8A8A8A8A
-Out = 98CF296ACAFAF704D6C91D1997202E47
-
-Key = 8B8B8B8B8B8B8B8B8B8B8B8B8B8B8B8B
-In = 8B8B8B8B8B8B8B8B8B8B8B8B8B8B8B8B
-Out = 5A023E5B18861A1FFCCC26F487EBF80F
-
-Key = 8C8C8C8C8C8C8C8C8C8C8C8C8C8C8C8C
-In = 8C8C8C8C8C8C8C8C8C8C8C8C8C8C8C8C
-Out = 8570554F91C1D8366FF6EC2097F110C3
-
-Key = 8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D
-In = 8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D
-Out = E1CE24B74C513C884992C98DFCF70BFB
-
-Key = 8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E
-In = 8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E
-Out = 23F536F1876F44FFB7727D0FAF9F2D70
-
-Key = 8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F
-In = 8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F
-Out = D877DD242B0C7CC05D9600419385A3EF
-
-Key = 90909090909090909090909090909090
-In = 90909090909090909090909090909090
-Out = 2896226A5A298578E2C999AF4F382DE7
-
-Key = 91919191919191919191919191919191
-In = 91919191919191919191919191919191
-Out = B54F6E5FB8F33608A8DFAEAD8EF27B98
-
-Key = 92929292929292929292929292929292
-In = 92929292929292929292929292929292
-Out = 45CF4F783116E562F104B107BD3D10F3
-
-Key = 93939393939393939393939393939393
-In = 93939393939393939393939393939393
-Out = 93F404FF83D493315E2E9665AC2013C5
-
-Key = 94949494949494949494949494949494
-In = 94949494949494949494949494949494
-Out = 1A5664813121482F4DBE1026104D84A8
-
-Key = 95959595959595959595959595959595
-In = 95959595959595959595959595959595
-Out = AEE4A82CE2FF23E91A497269B82530F6
-
-Key = 96969696969696969696969696969696
-In = 96969696969696969696969696969696
-Out = E001B8A93500C4D49F8A9A372A1E8A61
-
-Key = 97979797979797979797979797979797
-In = 97979797979797979797979797979797
-Out = FB23B31999D3D84AFD55600B9EA722CD
-
-Key = 98989898989898989898989898989898
-In = 98989898989898989898989898989898
-Out = 9572170C51A1198373B6ADBAB87AE454
-
-Key = 99999999999999999999999999999999
-In = 99999999999999999999999999999999
-Out = 65CCAA1321D8CB3CA18462C37DBBE4E1
-
-Key = 9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A
-In = 9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A
-Out = 3E942B1978B989CAC106E4575E6729A7
-
-Key = 9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B
-In = 9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B
-Out = 3E9AA5B6EC22E250368E9806041F6AA2
-
-Key = 9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C
-In = 9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C
-Out = 717479032B7D79C5236436D8AE0F3AB5
-
-Key = 9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D
-In = 9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D
-Out = 2643B168C234D5E0205E212C5CF669F4
-
-Key = 9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E
-In = 9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E
-Out = A79DE0F9F3BE54CF4B453A1836F7F491
-
-Key = 9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F
-In = 9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F
-Out = CF0836AC18F99D130EE85DE0ACDBE063
-
-Key = A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0
-In = A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0
-Out = F12ABC04BB0C7F6F794EF428E57F15FA
-
-Key = A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1
-In = A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1
-Out = 383E9B4B9D663B8527E6FAB4A7892832
-
-Key = A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2
-In = A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2
-Out = 432103C74F3C2D68315CDD2831EF8F71
-
-Key = A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3
-In = A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3
-Out = E06519949E2F6E8B00E15CD58054BB4A
-
-Key = A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4
-In = A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4
-Out = 34A14A8B9E5869C25A9C604300BEC911
-
-Key = A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5
-In = A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5
-Out = 0FB01A7B7F093C400E2FB08E709F7675
-
-Key = A6A6A6A6A6A6A6A6A6A6A6A6A6A6A6A6
-In = A6A6A6A6A6A6A6A6A6A6A6A6A6A6A6A6
-Out = 51D28B7FDD1C3EA5ED21EBD1D8B7499D
-
-Key = A7A7A7A7A7A7A7A7A7A7A7A7A7A7A7A7
-In = A7A7A7A7A7A7A7A7A7A7A7A7A7A7A7A7
-Out = 3F6FCB543C8771ABFABDD72E0E788FD7
-
-Key = A8A8A8A8A8A8A8A8A8A8A8A8A8A8A8A8
-In = A8A8A8A8A8A8A8A8A8A8A8A8A8A8A8A8
-Out = 045A187E0A7009AB426A78B251CA088E
-
-Key = A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9
-In = A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9
-Out = BF28504290089DB7D289785147BD5D9A
-
-Key = AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-In = AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-Out = 1297E67DBA4B264248FCDAF3B9E3FE4B
-
-Key = ABABABABABABABABABABABABABABABAB
-In = ABABABABABABABABABABABABABABABAB
-Out = 8177E1C48AB5578DBB3C4AA36EEEEF5C
-
-Key = ACACACACACACACACACACACACACACACAC
-In = ACACACACACACACACACACACACACACACAC
-Out = 97E785AED832ACF1D419DC01219704D4
-
-Key = ADADADADADADADADADADADADADADADAD
-In = ADADADADADADADADADADADADADADADAD
-Out = 23D059447EDB76B0F9B41006399CC087
-
-Key = AEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAE
-In = AEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAE
-Out = 7320A4A66FE238B9E1A932F9942DCFAA
-
-Key = AFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAF
-In = AFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAF
-Out = 4D8D7376C26FE0AFAA27B61ED1882721
-
-Key = B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0
-In = B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0
-Out = DEF37D094186DE7209801C7D2D93F61A
-
-Key = B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1
-In = B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1
-Out = 536A8AACDB1156AC2E2D7DD0499BFA5F
-
-Key = B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2
-In = B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2
-Out = F57A2E78B976A57642DC8BFAFB3480B2
-
-Key = B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3
-In = B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3
-Out = 88177315699E7AE0D5B4B07046ED5990
-
-Key = B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4
-In = B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4
-Out = 02F65559B9AA547A5EA54EB6A8E48960
-
-Key = B5B5B5B5B5B5B5B5B5B5B5B5B5B5B5B5
-In = B5B5B5B5B5B5B5B5B5B5B5B5B5B5B5B5
-Out = F2F02BC7D56F7594E37DB7DF94C1B9C1
-
-Key = B6B6B6B6B6B6B6B6B6B6B6B6B6B6B6B6
-In = B6B6B6B6B6B6B6B6B6B6B6B6B6B6B6B6
-Out = 2691BEACD805DC3C69B0295A7308CFD8
-
-Key = B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7
-In = B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7
-Out = A3A67B09425720C8AAB79DA8F44A8E8A
-
-Key = B8B8B8B8B8B8B8B8B8B8B8B8B8B8B8B8
-In = B8B8B8B8B8B8B8B8B8B8B8B8B8B8B8B8
-Out = DBC7ABF1DD510B5D3A6BA898670B6361
-
-Key = B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9
-In = B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9
-Out = FA1B51E10654E448C32EFCD7A986CAF0
-
-Key = BABABABABABABABABABABABABABABABA
-In = BABABABABABABABABABABABABABABABA
-Out = C63D856771FC45E5102B14B41A79CB7E
-
-Key = BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
-In = BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
-Out = 9030C8326D2B75D1979DC1C3B80796B9
-
-Key = BCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBC
-In = BCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBC
-Out = B11A41E18A535F8F3B343135C73A4670
-
-Key = BDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBD
-In = BDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBD
-Out = BC6F04C2D75634E0054CCE755DE717A7
-
-Key = BEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBE
-In = BEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBE
-Out = AAFAD1353CD8C6469751190678362F03
-
-Key = BFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBF
-In = BFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBF
-Out = 9DD8ACCD8D2A504AAE205BAD997F20DE
-
-Key = C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
-In = C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
-Out = 0FCBA053A6E5DE5D0E6B9395BDE2BD18
-
-Key = C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1
-In = C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1
-Out = E3AD2507E0F6BCDCC3D50728E12BF962
-
-Key = C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2
-In = C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2
-Out = 0AB51BDC22FFF1458CB4D3D08EDB164C
-
-Key = C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3
-In = C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3
-Out = FBF3371047AB698FCFC81442B134AD26
-
-Key = C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4
-In = C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4
-Out = D026FC11B7B1BB47B020D7A8320A174B
-
-Key = C5C5C5C5C5C5C5C5C5C5C5C5C5C5C5C5
-In = C5C5C5C5C5C5C5C5C5C5C5C5C5C5C5C5
-Out = FAE26B00CAD7DD254EDBB84688A846E9
-
-Key = C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6
-In = C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6
-Out = 91F547F8129DB5B465DF57F0A03E58FE
-
-Key = C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7
-In = C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7
-Out = AECA4D2C88D33F6A0CEAE619259E3982
-
-Key = C8C8C8C8C8C8C8C8C8C8C8C8C8C8C8C8
-In = C8C8C8C8C8C8C8C8C8C8C8C8C8C8C8C8
-Out = 32AAB72FE2809153140156909B52F414
-
-Key = C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9
-In = C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9
-Out = 91EDBD3465D1216B3564F094455F0ECC
-
-Key = CACACACACACACACACACACACACACACACA
-In = CACACACACACACACACACACACACACACACA
-Out = 4D14F0124000E96F09938906B99415BA
-
-Key = CBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCB
-In = CBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCB
-Out = 297F6B5BF3A01B1D87B7B74DF4E9DC2F
-
-Key = CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
-In = CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
-Out = BCCE55DCAFF6BB7B4D0CAFD112E87FCD
-
-Key = CDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCD
-In = CDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCD
-Out = D7A1E8E4624689000AD7AFB06982D8FE
-
-Key = CECECECECECECECECECECECECECECECE
-In = CECECECECECECECECECECECECECECECE
-Out = D59DAF6299A27A5DE36F7090B777673F
-
-Key = CFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCF
-In = CFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCF
-Out = A5ACE3553FB387187CCFF88C3DEE1ED7
-
-Key = D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0
-In = D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0
-Out = 2CCF6DD6EBEE7C4A4C5586EBF792AC57
-
-Key = D1D1D1D1D1D1D1D1D1D1D1D1D1D1D1D1
-In = D1D1D1D1D1D1D1D1D1D1D1D1D1D1D1D1
-Out = 695849E45DE312A07C5E8A6C1C20D6B8
-
-Key = D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2
-In = D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2
-Out = 5E14D156D004D484E040C354F13A8F63
-
-Key = D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3
-In = D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3
-Out = E4CD1852605EDC0FF576A8310FED4883
-
-Key = D4D4D4D4D4D4D4D4D4D4D4D4D4D4D4D4
-In = D4D4D4D4D4D4D4D4D4D4D4D4D4D4D4D4
-Out = BC7EB0533C90715C314362B1FBDC3545
-
-Key = D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5
-In = D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5
-Out = AFBDF9336F9CAC06313181937FF1849E
-
-Key = D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6
-In = D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6
-Out = B590131983C4E266BDE99D577C493B67
-
-Key = D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7
-In = D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7
-Out = 90921A3641666DE025E42B1BDC891FBA
-
-Key = D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8
-In = D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8
-Out = E3B79B1EC3FA41E7EB3C575ED197588D
-
-Key = D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9
-In = D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9
-Out = 5D9B53924BFCB123BEF8F3C5431103F2
-
-Key = DADADADADADADADADADADADADADADADA
-In = DADADADADADADADADADADADADADADADA
-Out = 12BB6C3773F42D7AB2BD711C3DA6B1F9
-
-Key = DBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDB
-In = DBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDB
-Out = A0D2449463DDB310E0D4D0B547043FA0
-
-Key = DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC
-In = DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC
-Out = B1E70695E833951DA0C4B38CDA067ACD
-
-Key = DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD
-In = DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD
-Out = 19AA0D4A04DD8C93935FCB3F39A0D2CD
-
-Key = DEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDE
-In = DEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDE
-Out = 98E4BAC98E4B1559B07E3A323D352964
-
-Key = DFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDF
-In = DFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDF
-Out = 4B88F29F1DCB339CEF6C80EF949272BA
-
-Key = E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0
-In = E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0
-Out = 8F3C7931AC39D8B62C643BB3AC2C731B
-
-Key = E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1
-In = E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1
-Out = D620AC385CAA42FD228176995C7EEC61
-
-Key = E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2
-In = E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2
-Out = D99A20E342818B37A21C87F35C19D559
-
-Key = E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3
-In = E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3
-Out = 0817FC31D13725B3F64790470C883F22
-
-Key = E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4
-In = E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4
-Out = 945FE4DAEEE2AAA1EFE80022311B1040
-
-Key = E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5
-In = E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5
-Out = F5976BFF2CE360F3A75CACB10B1B26E6
-
-Key = E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6
-In = E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6
-Out = 4D7118A0D1DE4AB7E43765B2E2AE0EE2
-
-Key = E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7
-In = E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7
-Out = FC428DC79787BBAC03937C6C0FEDA673
-
-Key = E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8
-In = E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8
-Out = 6DF3580C31F389C898CC905582BCD920
-
-Key = E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9
-In = E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9
-Out = 6B74DC42605029718F4D0C060547CC8B
-
-Key = EAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEA
-In = EAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEA
-Out = B587D402AA54E60DB655B4164847ACA1
-
-Key = EBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEB
-In = EBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEB
-Out = 16313A473EFCB6D965C5F1426785B472
-
-Key = ECECECECECECECECECECECECECECECEC
-In = ECECECECECECECECECECECECECECECEC
-Out = 734356F14E8A6C5775A4638BBDFCE111
-
-Key = EDEDEDEDEDEDEDEDEDEDEDEDEDEDEDED
-In = EDEDEDEDEDEDEDEDEDEDEDEDEDEDEDED
-Out = F66FFD7385B4A87A9E2865D70864DAA6
-
-Key = EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE
-In = EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE
-Out = FB7FA84127D218FDE6A24CA30379ECCC
-
-Key = EFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEF
-In = EFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEF
-Out = 4FADBE831B78D6B3C59DCE8B4293BB79
-
-Key = F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0
-In = F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0
-Out = DA219657EA1AB63EA46306C2D0B69186
-
-Key = F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1
-In = F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1
-Out = 34BE2E9CB3C4047884CB291416D037C7
-
-Key = F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2
-In = F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2
-Out = 384BAAE4DB758555E2DB6E2995E0CAEC
-
-Key = F3F3F3F3F3F3F3F3F3F3F3F3F3F3F3F3
-In = F3F3F3F3F3F3F3F3F3F3F3F3F3F3F3F3
-Out = 7338107A3D9BF3E8C67936E1CB77A22A
-
-Key = F4F4F4F4F4F4F4F4F4F4F4F4F4F4F4F4
-In = F4F4F4F4F4F4F4F4F4F4F4F4F4F4F4F4
-Out = 217BC7820BB5A9183D95BF7E99180B87
-
-Key = F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5
-In = F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5
-Out = 56BA9C916AECDC51203CB6BA5FEE8D3B
-
-Key = F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6
-In = F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6
-Out = 8CCA87B86BEB5CCD11A594F20AD5D1B8
-
-Key = F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7
-In = F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7
-Out = CD0230DBA2982BE4F126FB2E80AB2C24
-
-Key = F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8
-In = F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8
-Out = A3E46629CF9D1D6DD1A6DE82B86C5934
-
-Key = F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9
-In = F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9
-Out = AE18D7C35968E90CECA036CF586EB963
-
-Key = FAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFA
-In = FAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFA
-Out = 3B0261B9DA91346FAD84DD9CC9EC4A37
-
-Key = FBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFB
-In = FBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFB
-Out = 9F3E91301511409E1F997A080F9A9424
-
-Key = FCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFC
-In = FCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFC
-Out = F1BF5CCE9A7D5FBE759A579640348692
-
-Key = FDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFD
-In = FDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFD
-Out = D192CBC80E653C12C647C1EBEB56AE10
-
-Key = FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE
-In = FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE
-Out = 64F5B3E91B4CC3C35AFB6793FCEC836A
-
-Key = FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-In = FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-Out = EFB109978422E50FDCB05335D050D0D7
-
-Key = 000000000000000000000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = 6CD61BCB190B30384E8A3F168690AE82
-
-Key = 0123456789ABCDEF0112233445566778899AABBCCDDEEFF0
-In = 02132435465768798A9BACBDCEDFE0F1
-Out = 688329D019E505041E52E92AF95291D4
-
-Key = 0000000000000000000000000000000000000000000000000000000000000000
-In = 00000000000000000000000000000000
-Out = 8F5FBD0510D15FA893FA3FDA6E857EC2
-
-Key = 0123456789ABCDEF0112233445566778899AABBCCDDEEFF01032547698BADCFE
-In = 02132435465768798A9BACBDCEDFE0F1
-Out = C8241816F0D7E48920AD16A1674E5D48
-
diff --git a/src/tests/data/block/safer.vec b/src/tests/data/block/safer.vec
deleted file mode 100644
index a85a36d84..000000000
--- a/src/tests/data/block/safer.vec
+++ /dev/null
@@ -1,49 +0,0 @@
-[SAFER-SK(10)]
-Key = 01020304050607080000000000000000
-In = A0A1A2A3A4A5A6A7
-Out = 41246B65F1DC6AFA
-
-Key = 00000000000000000102030405060708
-In = A0A1A2A3A4A5A6A7
-Out = 5CBD77B03626FE3B
-
-Key = 00000000000000010000000000000001
-In = 9091929394959697
-Out = 9EAA4DF1E0EFF445
-
-Key = 00000000000000010000000000000001
-In = 98999A9B9C9D9E9F
-Out = 4CC14838399E532D
-
-Key = 053D79C5CFC7E2A3244F888CB0336DBF
-In = B9BA26C1B67F9692
-Out = 75AF0AEF94E54122
-
-Key = 438C2106DD87C2A0741F66A28D75A962
-In = 382395FB04EA1FD6
-Out = 8162DBDC5984CAD0
-
-Key = 8A5CB47F29F8B1C79EFDDC95EAA8DA2A
-In = 0C07884F2D4B7645
-Out = 64C8047DEBBE6895
-
-Key = 885588FCDBDDF30BDD55D6AD097594A7
-In = FD8CD3214D56917A
-Out = 3360F9F4A25D0D5A
-
-Key = D020D65E6FEF3C7FD60413E04C71F8B1
-In = D2A9B8F6A027F02A
-Out = D750587CC46CF3B7
-
-Key = 228A5CFEF727066B2E682DC8E40CD629
-In = 18AC5F07FCF872E7
-Out = 557368277E129BE6
-
-Key = 360495E7E4784CAA34E42C12F125B71A
-In = 4438471711225573
-Out = B75E4C4155A67C4F
-
-Key = 850F94815381C03111F45EFEE704AB48
-In = 5ED88B627B5C899D
-Out = B356A077F9DB11DC
-
diff --git a/src/tests/data/block/serpent.vec b/src/tests/data/block/serpent.vec
index 623ee6be8..8a40c54b7 100644
--- a/src/tests/data/block/serpent.vec
+++ b/src/tests/data/block/serpent.vec
@@ -1,3 +1,6 @@
+
+#test cpuid simd
+
[Serpent]
Key = 00000000000000000000000000000000
In = D29D576FCEA3A3A7ED9099F29273D78E2D62A890CEA3A3A7ED9099F29273D78ED29D576F315C5C58ED9099F29273D78E2D62A890315C5C58ED9099F29273D78ED29D576FCEA3A3A7126F660D9273D78E2D62A890CEA3A3A7126F660D9273D78ED29D576F315C5C58126F660D9273D78E2D62A890315C5C58126F660D9273D78ED29D576FCEA3A3A7ED9099F26D8C28712D62A890CEA3A3A7ED9099F26D8C2871D29D576F315C5C58ED9099F26D8C28712D62A890315C5C58ED9099F26D8C2871D29D576FCEA3A3A7126F660D6D8C28712D62A890CEA3A3A7126F660D6D8C2871D29D576F315C5C58126F660D6D8C2871
diff --git a/src/tests/data/block/tea.vec b/src/tests/data/block/tea.vec
deleted file mode 100644
index b08df67da..000000000
--- a/src/tests/data/block/tea.vec
+++ /dev/null
@@ -1,153 +0,0 @@
-[TEA]
-Key = 00000000000000000000000000000000
-In = 0000000000000000
-Out = 41EA3A0A94BAA940
-
-Key = 271AD15192C4D1204A4A2561E3DB6FF7
-In = 7C944D08DEF34C0C
-Out = 195C0E8F49761539
-
-Key = F04EBF798C193F199C1F532AF383555B
-In = B9682750BB15CAAD
-Out = 2B5F318FB66806B9
-
-Key = 200C0CE59717D5D9AF6813CD207FEE73
-In = 9706769A18A2D03D
-Out = 8E17EEB5008DC0CB
-
-Key = 2828D51F98AE0B33F4DE2B7FBD18A529
-In = EDB76C54847DA59E
-Out = DFA6C29BEB40F9AF
-
-Key = 61AABA6BE48B0D0D14FE5D27FAB852A4
-In = 178A49BAFBA53F23
-Out = C3BBCE6715D90CE6
-
-Key = 2080E2409BA01C8532FC84403EE8C06A
-In = DF4CDB61A5F38536
-Out = B4E6359C9D9458AA
-
-Key = 271AD15192C4D1204A4A2561E3DB6FF7
-In = 7C944D08DEF34C0C
-Out = 195C0E8F49761539
-
-Key = C1E297C0C761777D8A76FFF02D22B859
-In = F4C76C1D47FE568F
-Out = 551CA67C7756FF56
-
-Key = 23C807A2EF0A551F858FD52D125A47D8
-In = CAB16583E15D0074
-Out = DE472175D55372C9
-
-Key = 9FA5D4D8CBDFCECD559E3CE88BF78EE1
-In = 97B05C60774164AD
-Out = BC4BD30CB50DA39B
-
-Key = 24F4E91083139099D663647A7FFAC321
-In = 7017A263985B735C
-Out = E47FDF06A51D8C24
-
-Key = 7CF8626DE76D8462218ED5C9DC8ACC26
-In = 15475A90DF04CD29
-Out = 4DF54282EAAFA235
-
-Key = 3C6AD7DF17332A3E1E3DE06007387357
-In = 87CA0AACCF146CC8
-Out = F7360F57CFCC09AC
-
-Key = 24237A762D8A89383A2949F5A0F5EC08
-In = 9268AF048ECBAE67
-Out = E98E428A9D1FEE9C
-
-Key = 209A2833A39472D9720380FFB2F74761
-In = AF0062CD77A84EBD
-Out = 44CD624B87CBEE77
-
-Key = 22EBE7A30E8855B3B453A6E926D4F187
-In = F922CA875B991A31
-Out = 1E92C0C51185F7C7
-
-Key = 1B5E23EBD915C1FEE59F57DD91AF7347
-In = B4ECC305C3DBD8E5
-Out = 063D8F75A7A77501
-
-Key = 6C21D105515290DA29339F142685C135
-In = A4C2F6DC597D13EA
-Out = BF8FFEC7550A496B
-
-Key = 01F728A7433A47B13DE34FCC08958449
-In = 3AF7F1AE0F58AB1D
-Out = BBA581D07E51D8D6
-
-Key = 9A2D4C50337D3EC337673782FD385601
-In = 791D8DA8CBB0BC94
-Out = 7D9A4F0363B6085F
-
-Key = 112233445566778899AABBCCDDEEFF01
-In = ABCDEF0198765432
-Out = 58C7BA625ED42820
-
-Key = BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
-In = AAAAAAAAAAAAAAAA
-Out = 423251D460AEBE8E
-
-Key = 88AD993684E3FE4C4D5DD8F1C0964D32
-In = 6385ECC14C50C91F
-Out = D3A465910B0ECF46
-
-Key = 69F9181A726912C2DFD815081209F9F6
-In = 99532D57CC7FC724
-Out = A846FE0F9A698E32
-
-Key = 79846B4ED899433C452EDED9D6925C7A
-In = A874F573DD7A8761
-Out = 5055A546D119BFA7
-
-Key = B0BB57B0E243DC91143DA8F235DCF9DB
-In = CD58533F9F18C3F3
-Out = F5E649326A32F7BD
-
-Key = 6CDF16B8E08604C93A4BC86E269BA2EF
-In = 65B4628A8A4ACC33
-Out = E2FAC5AB9B301983
-
-Key = 2203D8EFC29D3421981E0C2FAF90EA8C
-In = 21244B2AA3071823
-Out = 14F62A42C4BDA3E6
-
-Key = 86B435D9BF689FD450352308EDDA200A
-In = C6BBAD2319111D81
-Out = F4068832803914F7
-
-Key = 279243E8F5759FD3D29EF824D65B163B
-In = 38CD92C3E6882185
-Out = A3C3CE70D4A097E8
-
-Key = 95ADBC7D2F67A15C395605250AC1275F
-In = 56D1B5CB68ADBD3F
-Out = 4E57696CAC39676C
-
-Key = 4E760AF9B46E2C9EF75B7F5721EAFD60
-In = 1936713432D87C16
-Out = 3D3E59CA7EDED044
-
-Key = 2C98241CD08DF0B269C8669E55F61227
-In = A9AF22BFEA5639F1
-Out = D478E142344FCFAC
-
-Key = B28F6B02B950BC924B03C39C672A8216
-In = 8DEC08977A7F6D02
-Out = 23F4A36A9D475299
-
-Key = F7A7B83FC8DF8868AB753F435B6E46DE
-In = 8535D9E669C2A7B8
-Out = 30284672AF8877F1
-
-Key = 1BC9B0A578D89DAE5A47F5704640CA4A
-In = 03682AB977DDDCD9
-Out = 9F678A05F82E9326
-
-Key = 15C140E81E98AE10443AA43C89E5D52C
-In = 3A1A041F2F1B0FC7
-Out = A40CBAE926F0F13B
-
diff --git a/src/tests/data/block/threefish.vec b/src/tests/data/block/threefish.vec
index b4e9d8229..dfaccb7ff 100644
--- a/src/tests/data/block/threefish.vec
+++ b/src/tests/data/block/threefish.vec
@@ -1,3 +1,6 @@
+
+#test cpuid avx2
+
[Threefish-512]
Key = 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
In = 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
diff --git a/src/tests/data/fpe_fe1.vec b/src/tests/data/fpe_fe1.vec
new file mode 100644
index 000000000..4108a56a2
--- /dev/null
+++ b/src/tests/data/fpe_fe1.vec
@@ -0,0 +1,14 @@
+
+# FE1 outputs generated by botan
+
+Mod = 100000
+In = 666
+Out = 48166
+Key = AABB
+Tweak = CCDD
+
+Mod = 100000
+In = 48166
+Out = 69575
+Key = AABB
+Tweak = CCDD
diff --git a/src/tests/data/hash/has160.vec b/src/tests/data/hash/has160.vec
deleted file mode 100644
index 1ec4fedea..000000000
--- a/src/tests/data/hash/has160.vec
+++ /dev/null
@@ -1,22 +0,0 @@
-[HAS-160]
-In =
-Out = 307964EF34151D37C8047ADEC7AB50F4FF89762D
-
-In = 61
-Out = 4872BCBC4CD0F0A9DC7C2F7045E5B43B6C830DB8
-
-In = 616263
-Out = 975E810488CF2A3D49838478124AFCE4B1C78804
-
-In = 6D65737361676520646967657374
-Out = 2338DBC8638D31225F73086246BA529F96710BC6
-
-In = 6162636465666768696A6B6C6D6E6F707172737475767778797A
-Out = 596185C9AB6703D0D0DBB98702BC0F5729CD1D3C
-
-In = 4142434445464748494A4B4C4D4E4F505152535455565758595A6162636465666768696A6B6C6D6E6F707172737475767778797A30313233343536373839
-Out = CB5D7EFBCA2F02E0FB7167CABB123AF5795764E5
-
-In = 3132333435363738393031323334353637383930313233343536373839303132333435363738393031323334353637383930313233343536373839303132333435363738393031323334353637383930
-Out = 07F05C8C0773C55CA3A5A695CE6ACA4C438911B5
-
diff --git a/src/tests/data/hash/md2.vec b/src/tests/data/hash/md2.vec
deleted file mode 100644
index 1bcd29c27..000000000
--- a/src/tests/data/hash/md2.vec
+++ /dev/null
@@ -1,226 +0,0 @@
-[MD2]
-In = 25
-Out = A248ABDA0C79140E2D99170DAD36CBC8
-
-In = 3386
-Out = 43C980AD45E7B3B1CD75CA4E7D9A723D
-
-In = A0A806
-Out = 0D4596E208051A05DFF8116455562630
-
-In = 7664BC7A
-Out = E561C90B5534D750BC251EB77A9E7870
-
-In = 94A3C94A0C
-Out = 2D8026BE7A76954A9E096343C39ECD8C
-
-In = 2BA359656CCD
-Out = 2C549D1C220B32CDFC242874E6807B0B
-
-In = F62E1519F7C123
-Out = 7D473DB4CBC7B479443BE0F5BA34AB88
-
-In = 731E26C302E41557
-Out = DFFFCBFDB186EDFC3174BD6118B9F4AE
-
-In = E96E54E58C275946D6
-Out = DDD255C1D97FFC23ADA446D630E648D8
-
-In = A05EF276F00ADD9AA737
-Out = 7468B835B7FAB5B85E95BCEB563AF71B
-
-In = B2E29CEBCFE26335B65604
-Out = 96CCB8AEB6DC5B5D0502CA2DD5795197
-
-In = 4A926951A34CFF9612086FA1
-Out = CA2A050506C450FDFF20DD7E4EE5339C
-
-In = 501771E1BB1766FD3FA714BCC1
-Out = FA6F95FB2DAF9E4E153D7D78590EE138
-
-In = 07ED7EC95443B759D36E5699547E
-Out = 61B549A5FB75E337A194E2FCA382DE25
-
-In = 50AD2003A260C982EFECA7D5912BFF
-Out = 6BA8E7DDD4019F159FF72514CFA156D9
-
-In = 940866DDC4A37CD965DFFBE3E2B0C341
-Out = 6A92E7EB476CB01F9C404494260E3777
-
-In = 62F3333A791881457264348DA07FB6B7C4
-Out = 61017AB161754960D3F1D1F1D10FE8F9
-
-In = E68EA199397AD1D0C9A76BEB4D96722CBDA2
-Out = B373D1E21455608FCA99654850ECFFD6
-
-In = A7A8C48263FC70A6A77374CD0E685773248D26
-Out = 07FF45303EA30885D7AACAAD2E16BD50
-
-In = 654C952DA2E3C7998473AFCA3C9AF2AE89B2DE45
-Out = C9444F92EE581185EF649354CA8F4BCE
-
-In = A4D93A05DF87F08E3113EA2D0CAF8F70CBC2BE4B2A
-Out = B46ADB25D38DA1F0E7F6F8C5DD129D40
-
-In = EA12AE41BE9B71EBA74C9010C4C884FE5DC9B0C5C65A
-Out = B6CFCF8CFDC2FE63CEAA66A5573FDA81
-
-In = C3AF0ABC9A2B464A1C4F629908D1EC556F20F64084E733
-Out = 523441B8A2FB07E41E9B1B8CC5276660
-
-In = 3C8BCC24A8DC88690F6B6C7CFB25DEF15D37335EC41C8C83
-Out = F80ADCB9C78CF9DE5211091CEC3E310E
-
-In = 65E2194B8A8B5B30F5C53D01F8431E8C20418EE6A06F89F87F
-Out = 5833781CF79E57F605F9D73D3B7088CC
-
-In = 62FBD128DA286D5C6C5A3E73D463E5B31D7FB06F34DD050B3CDB
-Out = 987C1F6BB686F3A983D611C22C5086BA
-
-In = DDA05271A7C4860D49D2CE62A0B59B11BDCAAF272898EB8E18F1A8
-Out = 779D23550876E50A7C19F4777C84984D
-
-In = AA8DB1791C56E3C88122A1AB77A9D8BCE0D53240C01B789DE7FCD594
-Out = 9540F40D24417EAD9465B26D8A7746CC
-
-In = A1C7EAF91BBB251411A86595BC66D4E5CCF227FB2D9913F3EFB4E69B3E
-Out = D67F49DE6E7BB44071947A6C96774E02
-
-In = 611B90477FDC084652039E3E3F55EB74EE1A3E14BB49A08882AB67EABA73
-Out = C7F8C0C4B53D40634A084A0E388186DC
-
-In = 5E9F73521E348BFBF3ECC570012AF45C9832F673FFC61CB034908EB91A6672
-Out = 03B6F0BCB2A99CE4CE51D92DBC9ED3B2
-
-In = 275C7EC5230978B84D4D87B929EE90C04269B91A32A69BFE2B30E84361CD8905
-Out = 72721B4138FEE747BCB950DD01291C37
-
-In = BFC3C421B77FDC497E417DF9A2E8A480CB975BED8E3B90F0BDFC567D66D8747D85
-Out = 92BCE15368AA8388D71E1CC5B4773536
-
-In = C2B801C8419027751EF0C9EDBA783BDD703259834E0D28F1CC18BA82A2D9DCDDCD5D
-Out = 7B194DE6324A19C54F9AFEB352EF9A8D
-
-In = 787B37C5C74098B78B693D33E5DD5A12BC2D502D3F69852DCB5CD56D6263E846F96ED4
-Out = F63A8C1958208D999F55917D9A1F3228
-
-In = 0614889EFFDC294287D820C8A4459FA44CDD02CB1DE0F678493C959E7DD1DF90257AAF0F
-Out = 1E20FBB25E31606B0B22FDFDD2639C71
-
-In = 60D169B12C1ECC464591BA572EC74B454D417BBDC49A82F01B9A4FD1273404F6FEBB575E51
-Out = C23B75350BA0174D6A4BD629A8E43311
-
-In = 642350615A9C6CBC8894D72176AB2EE4AF3413D15C4D4D9B38D071C95FC620FBAD6AB37FB8E5
-Out = 3D0C91CA852FB8C51AB9441D5A3C1F94
-
-In = C6299D1B98BB473500364EC66A3DD9238DCCEA4F281005FF630E99B5C8D2A7AC5FB13C693ED05D
-Out = E2B2458ADCFB7D0BCD4789EB9FC0D2CE
-
-In = 9D5AA26103830005ED7C966E120253DD7ADF49C56BD89B211B6B0D5B491066A52498736122A325F7
-Out = C8F205DEC0103264BEF4FA0501CF007C
-
-In = 7E038B83083785FDF4696310B579D3C0D98A0092FF2D71808C620225FC54E6973B907E5ED4A50BBD5F
-Out = 91F01747135E4E9B18A95666FF4C8801
-
-In = CBD41D36CC3F85C7427E3D04DB05E66D32FE7E9683A35B9ABC5B06185E24A867B954DDC4FD41E0379423
-Out = 96110102BF17E3CB91AF30EB0B527851
-
-In = 61F01942CFBDCC748AAB816527D49848CF698A8AE5E5EDE8C3C9178EA5719EFBA60EB1C4C3324C6B1AFB2D
-Out = 94EBDFBB3060FA8E7FCE7A4538CD6829
-
-In = 3E96A6186BD855DF00FCE2693B1394151594448B516DE0B9C8D15396984222497B15EE0DFCD47AFBD8AC3F83
-Out = D39A82F44F8E7D8384938DD8C42C28AA
-
-In = 9C8CC760D830780DD8671282D6A2909E9D163BC54A04119586404BCBAF5489C79491AB236A4F9781CA58E58408
-Out = 1F902D98C973B382D084FBB40F0920AB
-
-In = 00A530B70C406BFD533C2642B94FF767EF4C7BCB28EA5CB69C62F52A01AC1A25F1EDD918719004757463E6663340
-Out = C7FA3641EC0626AC66FADE4B77FFC795
-
-In = 8DAC93EB30AF1242B93B4C1C8D7D2A8E1320B2738C3D40E623E7380AFE596A783A902B6A19DF17D15356C24CEFBD66
-Out = 437FF6F86D68E35D5BC507AE88C8B0D3
-
-In = C3D2DA59D6435405406E342683A324DE6844C527687521E43066270CDF8534C110FEEBD79B5F2FB00FA3B9A31E1D548F
-Out = 7B4E56A2014BC8127D6DB1699128310D
-
-In = D178D2623180FA605C3379B2EF0D5A3272593EE49588708303F5744E8A26DC7F4E3B4435B85A8E68B5ECC40AC7DCB2039F
-Out = CEC9CC7590DEAFB05FDA5D42C5CC3A71
-
-In = 4B2C6190EBE39D5282026FDB3124D64094108DA1237FFD3A52ACA1BD96FBE752C4C3631C33913BD5DB067AB234C4628B2ED9
-Out = E0CABDA82227CE74EA7550053F942E74
-
-In = 9A75285DE0B739BBEC8AF7A791FEF5375A8E722134B6299D6FF167F43BF80F5CCD838F76AC2278C6CA5BE7E5C339ACEB8BF77A
-Out = 117451E0A38EA5E87D6817003D9DC6B1
-
-In = A2ABD527204652A5DC3C672A1E47F5CA34FB1D7F300580F63B463959991DE6DE1472EB21CAD19D4636C26B0F1FA99CBE6DA4CD70
-Out = EDBEAC9A8676D1BA66949F71B7BE5005
-
-In = FB2063EF9B211AB8ACF3D1256DEB4E30D1B6DF1882308FD7F80F27C2141DA8A89551B878410D914C4099DB464738EA337335828434
-Out = 4DF72B07A43EF126FBDEAD01E51ABAAA
-
-In = 41DEB68691AFCB42C865CF29EC0C2698CE621594ACD0D3443B8D025F6A4547DFD058740A837867A2C1E204CCEB27740C343BDA0AB6B2
-Out = 83A4F9739748D0402BA738757FCC517A
-
-In = 38C8C56CE471F839B8FD15AB3AF0E1D1A3FA494E7DFE660D5224E1C8D43907E5CBC56CECCCBB44CEC1AFFF26EA7594E33D05789DC49E76
-Out = 07A7A27D722092692035AAF579751495
-
-In = 6AAE2909D84B75F7AF3155E85660A1CB224DF40A4EA6CEF0C0F28AD149F3486AC3E837E7283E07803522CCE7000D0213C73B09FE77500852
-Out = C7324E5968CC534F8B98406165C5ACF5
-
-In = 9934BAEAF002C98F527AB248B8D44520456FD552409845CF1E666E41151DD3383E5F658DD3AEE63DCBB94BF5ADE141D753B57BDC3BD22D6648
-Out = 985711D04A1636B27B98EFC2DB61A806
-
-In = 69C8BB8FB1ADA90D0B9739E62AA1090D12C750945EC15F28D03886BDD1ADCED7169948E085B56996D4537A35F72FEB5313F3B7BB3DEBA66B2B84
-Out = 709578A0AA3DBF9CE4BE69AF71E1AECB
-
-In = 1EEA19E3548286905BE1092F54EC9E372DBB9950E77EAF7E9C55031232D8D70AC9DEC5D71FACC235EA339B859D54C4D3245F8702D535467E918F86
-Out = 26BC86988B1C278EEEFA648345431254
-
-In = 24215B243E36C2EFC561CABA961A170C0EC406344AD712DF5DFF62CB80B4A12C08FC009E4A359306601ADDF31845A88F927BD86566634466BA15E5BA
-Out = 2BB96ED578D8C61B39DEA925DCDE859F
-
-In = 4B6AFF3B20CA5685D3E173AD26E443D38748340B209D63E60F26988AA4C31FEE142783DA23BDE5D322C6AF97599C63183EAAC6B9DBC3611E6C2C32054A
-Out = F54BBB34D01EDA10B43753BE8BB9C219
-
-In = 26C82DDB40254A854F3FDD1334F1A191101730DCE43972881706FFA4D307D7D9159893252B25732F3976DE9675C7128990D7E321CB023221E2A89BA7E066
-Out = 951FBE39B9172884541297FC8DD4C2BE
-
-In = F357FE7BE2CFC971379457338EBEB69A40286C9C0FE5DB16888E2E270EAD23BCF7F70031770B08B5C7C4CFF2E49C6BF9844F773B3F84C49C575173C691CAFF
-Out = C2AE33C5E43079851FC8D2671F5F4CB9
-
-In = F5A11AC76D127223FD9E95B3E743B7EFD13BDE1E502D0E81E33EC85852420EFB353595BB7591E11E3A79FAE079239EE4C87FD141BAE6C6B7019B9A57BB6498E0
-Out = 45F83BFC62EBAFF4EA00678A138D7E7B
-
-In = CE9C44FA430FCB3BACFF6B384A2A6C2B0617C0737DB20B0B78D86C6F7C341D19801AC2E4400822DAE74DFA40A4468CF5D1081D3290FF35AB4775790E22FAA58BCB
-Out = 882D31790CC7FA4B512EF4A00B1F5180
-
-In = BE2FBB79CC864E84C625D71F9886DC29F9D5D387BBA4AABC2DF2C8C75FA45C759E192E0EE1A31BCD51618402D8898E8EB937630F6211734AFC590F99AA67BAA0DA69
-Out = 497353E9FFE29110092E859CEC5B366E
-
-In = 53726A30175CCB0EEE5B91B542E7FFA6EC7C2DD20784563D5D379B0DD5F632060B9B9FB6264AC792830B6555767F91BD0D6808134624E7A2D8901A6BA01F558BE4A549
-Out = 2CADCE7ECC0BC5DF4043C9A3F4F838B7
-
-In =
-Out = 8350E5A3E24C153DF2275C9F80692773
-
-In = 61
-Out = 32EC01EC4A6DAC72C0AB96FB34C0B5D1
-
-In = 616263
-Out = DA853B0D3F88D99B30283A69E6DED6BB
-
-In = 6D65737361676520646967657374
-Out = AB4F496BFB2A530B219FF33031FE06B0
-
-In = 6162636465666768696A6B6C6D6E6F707172737475767778797A
-Out = 4E8DDFF3650292AB5A4108C3AA47940B
-
-In = 4142434445464748494A4B4C4D4E4F505152535455565758595A6162636465666768696A6B6C6D6E6F707172737475767778797A30313233343536373839
-Out = DA33DEF2A42DF13975352846C30338CD
-
-In = 3132333435363738393031323334353637383930313233343536373839303132333435363738393031323334353637383930313233343536373839303132333435363738393031323334353637383930
-Out = D5976F79D83D3A0DC9806C3C66F3EFD8
-
-In = 91F1999647F001F7B4D4452CF7C07B64A994EFD25DCDBD9F6B260A77C8855AEB3EE8C65EAEE6397DF26F58A1729BF7A12ACFCF1C4C07A760B829D4158164A57037C15FBFCFFCD85C987C9FB5319AEF44484965425FDEED7D182861A0F3F9BA42BCE7CA288355DF484BC4476B1C587C401BD6196A401A9A99BEC075E8B99CEC15B3E9292F6399F61E00B27837AF4CCCDAAFB235E90282A08C979628E084C66FF24E6E180AB9BE50E274861E174FB511760CB2EB48A2A50D9D70C97B864236BD6AB8C2D9BE95E44FD317FBE6135B800C00E2422068F399F6F9427340AD4ED5CAA1DD96C76EFA688679F577FDBC02624F7D936A199A9CEFBB4F2A9FD15A1A81ABD5703A55FE3911455C8F0BBDB6C6479B24BF8501654DE0593F52713A53929E46FCECBF708ED4EF00768352682B8BF7731F2682991D3CE26497BD4419B6BD67A04907C6A1D84B2B7C2B8C622EAE73AE49D978DEEF8214AACCDFDDBAE1F10D19AB6BB7D38D5BEA2A6141A55BEF2BEFB605FBF01A88BB7294E4952283731BE737EC395B8B537558BE7889CC9C43C855F6CBF4131FB2FA17D72E334F775466F1B9C70A4325DFAFF502D71ECC73E113871EBED295D9FD66EB2F8CCF456075666C9FFC121BFAD286C457AC1191354CD5AFC3F8678CCDC3371B2D86F378182B7F40517FB36DB0194A0D517D9CF235D91001FFE86F7386717B9CDA393C712E3E2628768EA5FB41B1E26B11615B6187E0CE73015FE6811420C1A2CB00D69399C91AE4A21F759B31CCE31CF01F0F9D1E40162130EDE0ADC73B641121F1286FE03619B2768E1FA021311CEDC5B124EDD6B1AAED550CC3AE65E0DDE172F9A8CF136D417C859DA5C1B6F2166810AA46BFBBC2C13B1D23EECA6159CB09D511233A50FCE4DB27E3D35728CA1F35C1A5D538BC4B1F2D95C8B8B424B346FEC0EDBE78D727B9E982EC2DA3CC81238D2317648CCDCEED1C887E97FDAA0E764807F5503FC97A555D99B417185F75F06CCE3646E6C1900A64DAB07881D074FDCB400043275A4D23C5AB64FA7ABA88D225EFA9AA399A7C18640B09D37F189D5B8AE4256D20A50B5BC26DB9DD6B2A81436A098DB8283BC6BC64C07B0F700A2BB0A4440DF1BB4B63197EEEB31039AEA6B2517B54D5B6F93F9432D94E5C6755F4B847635C8E70E7B66A2ACC479B36BEEF513B583CEBBB97310DA9B96111B137E37A3DB5656A1E3C2F7DF8F7A84857FF376F6AB085C80A3A3733D519677805DC1AB9F0278C78A2A55026EB6998761E8F1853EEE64B843B74714CBA56B578766942B241D32000384C9634E09BCC45E80F5CBC32B86C33AF2E96E0602CD081DC9174B33F1506951A560C0141F940E3F2E84133C137F7002F0C7CBD7D86429963C1B5F8BC3996685FDA856C4548F3317904D4EFE606070F783E7BD746537170A9EBE29967C36A2CA8ED8AC08114C24CC860013195
-Out = 3A1237D02204327A5D2CB7CEDF024363
-
diff --git a/src/tests/data/hash/parallel.vec b/src/tests/data/hash/parallel.vec
index 544ecc0b8..537e4941e 100644
--- a/src/tests/data/hash/parallel.vec
+++ b/src/tests/data/hash/parallel.vec
@@ -5,9 +5,6 @@ Out = D41D8CD98F00B204E9800998ECF8427EDA39A3EE5E6B4B0D3255BFEF95601890AFD80709
In = 61
Out = 0CC175B9C0F1B6A831C399E26977266186F7E437FAA5A7FCE15D1DDCB9EAEAEA377667B8
-[Parallel(SHA-160,RIPEMD-128,Tiger(24,3))]
-In =
-Out = DA39A3EE5E6B4B0D3255BFEF95601890AFD80709CDF26213A150DC3ECB610F18F6B38B463293AC630C13F0245F92BBB1766E16167A4E58492DDE73F3
[Parallel(SHA-256,SHA-512)]
In =
diff --git a/src/tests/data/hash/ripemd128.vec b/src/tests/data/hash/ripemd128.vec
deleted file mode 100644
index 526ac26c3..000000000
--- a/src/tests/data/hash/ripemd128.vec
+++ /dev/null
@@ -1,24 +0,0 @@
-[RIPEMD-128]
-In =
-Out = CDF26213A150DC3ECB610F18F6B38B46
-
-In = 61
-Out = 86BE7AFA339D0FC7CFC785E72F578D33
-
-In = 616263
-Out = C14A12199C66E4BA84636B0F69144C77
-
-In = 6D65737361676520646967657374
-Out = 9E327B3D6E523062AFC1132D7DF9D1B8
-
-In = 6162636465666768696A6B6C6D6E6F707172737475767778797A
-Out = FD2AA607F71DC8F510714922B371834E
-
-In = 6162636462636465636465666465666765666768666768696768696A68696A6B696A6B6C6A6B6C6D6B6C6D6E6C6D6E6F6D6E6F706E6F7071
-Out = A1AA0689D0FAFA2DDC22E88B49133A06
-
-In = 4142434445464748494A4B4C4D4E4F505152535455565758595A6162636465666768696A6B6C6D6E6F707172737475767778797A30313233343536373839
-Out = D1E959EB179C911FAEA4624C60C5C702
-
-In = 3132333435363738393031323334353637383930313233343536373839303132333435363738393031323334353637383930313233343536373839303132333435363738393031323334353637383930
-Out = 3F45EF194732C2DBB2C4A2C769795FA3
diff --git a/src/tests/data/hash/sha1.vec b/src/tests/data/hash/sha1.vec
index f5fd82340..e86650f30 100644
--- a/src/tests/data/hash/sha1.vec
+++ b/src/tests/data/hash/sha1.vec
@@ -1,3 +1,5 @@
+#test cpuid sse2
+
[SHA-160]
In =
Out = DA39A3EE5E6B4B0D3255BFEF95601890AFD80709
diff --git a/src/tests/data/kdf/tls_prf.vec b/src/tests/data/kdf/tls_prf.vec
index 8112a02b6..3a89854b4 100644
--- a/src/tests/data/kdf/tls_prf.vec
+++ b/src/tests/data/kdf/tls_prf.vec
@@ -158,3 +158,37 @@ Secret = 2212169D33FADC6FF94A3E5E0020587953CF1964
Salt = FCD5C9637A21E43F3CFF6ECF65B6E2F97933779F101AD6
OutputLen = 32
Output = 1E1C646C2BFBDC62FA4C81F1D0781F5F269D3F45E5C33CAC8A2640226C8C5D16
+
+# TLS 1.2 PRF vectors from https://www.ietf.org/mail-archive/web/tls/current/msg03416.html
+
+[TLS-12-PRF(SHA-224)]
+
+Secret = e18828740352b530d69b34c6597dea2e
+Salt = f5a3fe6d34e2e28560fdcaf6823f9091
+Label = 74657374206c6162656c
+OutputLen = 88
+Output = 224d8af3c0453393a9779789d21cf7da5ee62ae6b617873d489428efc8dd58d1566e7029e2ca3a5ecd355dc64d4d927e2fbd78c4233e8604b14749a77a92a70fddf614bc0df623d798604e4ca5512794d802a258e82f86cf
+
+[TLS-12-PRF(SHA-256)]
+
+Secret = 9bbe436ba940f017b17652849a71db35
+Salt = a0ba9f936cda311827a6f796ffd5198c
+Label = 74657374206c6162656c
+OutputLen = 100
+Output = e3f229ba727be17b8d122620557cd453c2aab21d07c3d495329b52d4e61edb5a6b301791e90d35c9c9a46b4e14baf9af0fa022f7077def17abfd3797c0564bab4fbc91666e9def9b97fce34f796789baa48082d122ee42c5a72e5a5110fff70187347b66
+
+[TLS-12-PRF(SHA-384)]
+
+Secret = b80b733d6ceefcdc71566ea48e5567df
+Salt = cd665cf6a8447dd6ff8b27555edb7465
+Label = 74657374206c6162656c
+OutputLen = 148
+Output = 7b0c18e9ced410ed1804f2cfa34a336a1c14dffb4900bb5fd7942107e81c83cde9ca0faa60be9fe34f82b1233c9146a0e534cb400fed2700884f9dc236f80edd8bfa961144c9e8d792eca722a7b32fc3d416d473ebc2c5fd4abfdad05d9184259b5bf8cd4d90fa0d31e2dec479e4f1a26066f2eea9a69236a3e52655c9e9aee691c8f3a26854308d5eaa3be85e0990703d73e56f
+
+[TLS-12-PRF(SHA-512)]
+
+Secret = b0323523c1853599584d88568bbb05eb
+Salt = d4640e12e4bcdbfb437f03e6ae418ee5
+Label = 74657374206c6162656c
+OutputLen = 196
+Output = 1261f588c798c5c201ff036e7a9cb5edcd7fe3f94c669a122a4638d7d508b283042df6789875c7147e906d868bc75c45e20eb40c1cf4a1713b27371f68432592f7dc8ea8ef223e12ea8507841311bf68653d0cfc4056d811f025c45ddfa6e6fec702f054b409d6f28dd0a3233e498da41a3e75c5630eedbe22fe254e33a1b0e9f6b9826675bec7d01a845658dc9c397545401d40b9f46c7a400ee1b8f81ca0a60d1a397a1028bff5d2ef5066126842fb8da4197632bdb54ff6633f86bbc836e640d4d898
diff --git a/src/tests/data/mac/hmac.vec b/src/tests/data/mac/hmac.vec
index 2db21bc3a..8a210f622 100644
--- a/src/tests/data/mac/hmac.vec
+++ b/src/tests/data/mac/hmac.vec
@@ -1,28 +1,3 @@
-[HMAC(HAS-160)]
-Key = 0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B
-In = 4869205468657265
-Out = F5B44115A53F716B6F488DE1098EE7C251418623
-
-Key = 4A656665
-In = 7768617420646F2079612077616E7420666F72206E6F7468696E673F
-Out = A74547C1EF0AA147C7428AB7E71664549BE2A412
-
-Key = AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-In = DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD
-Out = E4C91BC71782FA44A56BE1A34AAE167E8FFC9734
-
-Key = 0102030405060708090A0B0C0D0E0F10111213141516171819
-In = CDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCD
-Out = 14D1055DA875222053BF1180BBEF8892EBA3AC30
-
-Key = 0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C
-In = 546573742057697468205472756E636174696F6E
-Out = 124131A293F1FDF3D6B11E2B7F7A1F5B12E42D58
-
-Key = A766901C8630F7DB3A3FC2A9747A6E2593452BE7
-In = 54657374205573696E67204C6172676572205468616E20426C6F636B2D53697A65204B6579202D2048617368204B6579204669727374
-Out = 63750D67AF40E3FDE33526545D300972A1527053
-
[HMAC(MD5)]
Key = 0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B
In = 4869205468657265
@@ -65,23 +40,6 @@ Key = AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
In = DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD
Out = 125D7342B9AC11CD91A39AF48AA17B4F63F175D3
-[HMAC(RIPEMD-128)]
-Key = 0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B
-In = 4869205468657265
-Out = FBF61F9492AA4BBF81C172E84E0734DB
-
-Key = 0102030405060708090A0B0C0D0E0F10111213141516171819
-In = CDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCD
-Out = BDBBD7CF03E44B5AA60AF815BE4D2294
-
-Key = AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-In = DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD
-Out = 09F0B2846D2F543DA363CBEC8D62A38D
-
-Key = 0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C
-In = 546573742057697468205472756E636174696F6E
-Out = E79808F24B25FD031C155F0D551D9A3A
-
[HMAC(RIPEMD-160)]
Key = 0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B
In = 4869205468657265
diff --git a/src/tests/data/modes/cbc.vec b/src/tests/data/modes/cbc.vec
index 6839a396b..4767b7e50 100644
--- a/src/tests/data/modes/cbc.vec
+++ b/src/tests/data/modes/cbc.vec
@@ -171,17 +171,6 @@ Nonce = C1E0E3A06B357B51
In = 8EB8FAF49126AD5B8A0AA6DF8B52DBE50DD5AED271641EF983BD650DA69816
Out = 5B4622F1C4FAA817EE3AC181B969A7AFED7117E23F68BC6017519A7D1399CFE9
-[RC5(8)/CBC/PKCS7]
-Key = 0102030405
-Nonce = 0000000000000000
-In = FFFFFFFFFFFFFFFF
-Out = 7875DBF6738C64788F34C3C681C99695
-
-Key = 0102030405
-Nonce = 0000000000000000
-In = FFFFFFFFFFFFFFFF7875DBF6738C647811223344556677
-Out = 7875DBF6738C64787CB3F1DF34F948117FD1A023A5BBA217
-
[Noekeon/CBC/PKCS7]
Key = 56C5E79C74EF63A2B64D831EC0FE0F5A
Nonce = D79A4D3B34BDE6BFB4DC0BF752987080
@@ -1258,4 +1247,4 @@ Out = 97687268d6ecccc0c07b25e25ecfe5849dad8bbb96c4cdc03bc103e1a194bbd839312523a7
Key = 636869636b656e207465726979616b69
Nonce = 00000000000000000000000000000000
In = 4920776f756c64206c696b65207468652047656e6572616c20476175277320436869636b656e2c20706c656173652c20616e6420776f6e746f6e20736f75702e
-Out = 97687268d6ecccc0c07b25e25ecfe58439312523a78662d5be7fcbcc98ebf5a84807efe836ee89a526730dbc2f7bc8409dad8bbb96c4cdc03bc103e1a194bbd8 \ No newline at end of file
+Out = 97687268d6ecccc0c07b25e25ecfe58439312523a78662d5be7fcbcc98ebf5a84807efe836ee89a526730dbc2f7bc8409dad8bbb96c4cdc03bc103e1a194bbd8
diff --git a/src/tests/data/modes/ecb.vec b/src/tests/data/modes/ecb.vec
index c62ce7fae..f8a02ae64 100644
--- a/src/tests/data/modes/ecb.vec
+++ b/src/tests/data/modes/ecb.vec
@@ -260,162 +260,6 @@ Nonce =
In = 00E0D8C19605363653DFA5F778DAF9E959CBF9BB7E4D3245
Out = BB44D4E603A6CD1EBB27E47FF7AD9F163420E58B97F1C7FF975B521917E7879B
-[TEA/ECB/NoPadding]
-Key = F9506AECFD6B86C4E9D5D973B435E66B
-Nonce =
-In = 2FA6A6449FB4F998EFA3F1679A638602
-Out = 4D3953E121FFDB4FD7F05FC74FC2ADFC
-
-Key = 47BF1198D16C123C95496D0CCC9A5C8C
-Nonce =
-In = B4C8B417381DFC14CD6CFEDC0D83477F27B0B1BD842922D4
-Out = 7608D8A9F2BFFC14DCA6942B2867239BE3B4788D8748F314
-
-Key = 3D8D2CFB7424BBD7B39BD9BB2C0CD794
-Nonce =
-In = 18DE3130F51CD7A6172B3C79F6DF435B41F57D3B2D54DF7A436ECCE32ADB88EC
-Out = 58AA062B7B9EFAEA2E3ED1F9D19FA6F695B0642EA7FB6EB5C5ED914A4034134D
-
-Key = C1C1384840D2B15BF8751CBDFB2607CB
-Nonce =
-In = 64E00DCC29A3BE3695F2198E58EA42E323E99387CE99A0543F7594331E546EADD7163E625ED6B32E
-Out = EA6EF6ECA267C02C2C98D03AED4402A85B8CC02326D1FFCF169D321F675C23BF530FD4E8AF7A511C
-
-Key = 25EF77ACC4435B378B0A07AF35D7A283
-Nonce =
-In = CF70A73AD2C4714044C8953EA103DDD2848595C182BC6A703B2E6CB90E80357120AC671F10C8060EB2A14451BD69C9F4
-Out = FACC24C79AD55C3E2FDB55AD21F52595452E116FC526ED3F21C4386D0400F098F86D86C4E630E638A24EFF839EB8AECE
-
-Key = B3763F385F9F53A76F59E9E9B8070886
-Nonce =
-In = 5AAADAFF6BF18700ECF66DCDB2AA201A1B5C338422E654A9E769C0EC40982E2FD9A794E29951C6EF26AA3FBF41B29E7457B6A2BA4E39F75F
-Out = 260629AC2B3838BADABD4765B0BB6A65D34927FC51BD712A36C8AD74AF386422FC479EB51C5FA2072B4D4A3F259A761C4CDAC375E0FB7883
-
-Key = 84A6AC5EDB9A96C8BA3BFF40AAD9ADFA
-Nonce =
-In = 10D5908E8AB77BBC4B6A2D89A13C899C9044E2823FCBA56FBE7312A7F475E16AB3B26E74FA74390B5025C2399AC84EEA37326A6F8EF8D133A3E27EC6A01F97B1
-Out = 1421E0144AA1061EAA75F81B44E12A8DE1ADDCF46D4E29D636F17565AC1326B8B5E1F2EF097E3BC22CA2FBB5B637E17BF164DAE5B8A0D503085EFDE1E36B82CE
-
-Key = 0B666EE6C0C5FDAAB1D3C528825B8262
-Nonce =
-In = C65601054E837A0BBC4D0A50CAC6CDCFD7EC9879316EEE2979F6FF139D881DBF7338DDAF02F3700BBCD7ED67D605030187A588775A3604FFB20A989D6893FED3814179B336111DC4
-Out = 7F65DA6551B8C2A677054CBFA5BAC5B8CDFFE2593F3297B3C6014D8EE83B00DB0BF063C168A4C155705A7984BD961A0278BE247FAF01E3BDC6DF3EBA4D39A0566F59DBB3F1D682CA
-
-Key = 6CFBA581ADFD1DEFA555D4B1F2924E67
-Nonce =
-In = 73ABA32AA3A6D791EDF7C1FEDBDE65950ACA8E7CDA9AA303DAA259965726F7E54EE8E07B6EC41EE05DF08A8030AC76CD419CAC55249E5454427C9EC1607721A0A8DFF4200175B5EAB66D6A33CB1ACC08
-Out = 39D91242429514DB8B2715FF7CB1D12AE97AA9B31286E672DCD6D5FBF9FDF52739F50684F629F7F8F47F4840E399725DB5383C4427FD920D0091B8466ADCE80AA86E945AB09F9999DE7518991229A9DC
-
-Key = 35927642F001AF7BBA592C573D566B04
-Nonce =
-In = A9956670B38BD99613696110B2717482945A798817EFCB34254271251C1D7912F966F78FDD0D534BAABD440A80F75FF20C5D62C21327803FD957699302328B03F12F17A9D89CCE843227D99E3F223C2E1EB8541FA4DFFDC1
-Out = 27F0468A37ADD1F81E6C453DB2E89A741C4949D4994ED22D4473B40FE63642B0303933F74523055F9B2614DEB0A5E4BE8067C9EAE91C573C6508610FFC6CDE32DB8C3BBA9803F9FCF1A1A3C8CDAD99F945FB9912BF38BF24
-
-Key = C4A3785214040158D8D9037A9D5FD25C
-Nonce =
-In = 2AE6CFDEFCAB3176BB1D7C9125F75011127F87F068846B5BB17C04457AA795CAF2459C7C351CCF870CDE051432CF0019A5C411A45979A3E318523366138501A8C167A05B959B4DC7C8735B9B15691262F2828A22093EE2BC15BAA5CC06426663
-Out = 46594307F5E0E998848072D2690D97E32058FB1D4577521FE5AF518C325762D9F076B15E77E04DCEA1C8A2C34A287EFC5F9A301B5FB4C75699A3DFDF7DB8B7EBD61D5BB2C1F880EFCCDDA930A8478C7DD946A7BF9EA906F6C6C930DF1BCDC51F
-
-Key = 4A9F7BC01C835442B5F4EAECC8FF50B5
-Nonce =
-In = BC139112FA244D06DF5FFFAA2E44F58F29AE8B092395B9A67ABB435610674E4FF71027FCE2C3EB95F7CAF7E05DE6C095551AE224A97807297F64C87247A34BECC6ABDC900259EFD4048D384AF5481DE995C8ADE6FA7F982A702A44422EC022699B783E7EA57B7A2F
-Out = 57D854129FB358772683BB1BA42AF91F7E945F1BFF27AC4EBE6B531A581914E8BB57834FD16A9E287544CD2840475155E49B9F6859D9E3D235D56CF5E7ECFD47D43FCF50A378287F9F9A33AF0E53983456D75A58FF5111E69D768F25DAF721AA9C69FBE01F2430A1
-
-Key = A076529A62A7C604739522583E1EC20C
-Nonce =
-In = 51AB05548D117A49B3C47D2BDFD681A9FA39A1D270437AF03D5557BD5945C66D448428902152A2DEC23141E4366B55DA9A5FFF68C6C67CC2A7446EB28125986E945D6B7AE587EBAD8EA14B066241B54A6485A9878837571346E7C416376908B74AEB4C5D022080BB79D0DA25B837D53F
-Out = BCF3B29D04DE30C8EB5345C444E3FEDC5D34EEAE60EA71BC355F21F69E31F759DED7AA436EC595505E1631A52F5416A41A529F39F6958499E99EA5DAAD023593A78DFE9C443C5AFFB6E4D9EEC22BBD66545A67FB8F39799149A1601DA998694D7BD65AFF19AD1326F4B988F37E555D78
-
-Key = 7D9FC06731D5D44E7D137AFE5F7CB7AB
-Nonce =
-In = EE99893A9B1087AC531F3C5C67902E6EE086A11F6D28B3A41A0A692A15EAD2E0A43A3432AE88E9EB54944F4138BA95A4E52240B3CC34E1EA6B764AE2703696493F454670415787981CBB062910A3DA1D39ECFEE971EFD945B44A5FF4C4140B5893A89F6F454F9568D83AD429272832258D3D0B82B7ECD00C
-Out = 641C64CD007BED6BA89AA7ABB2BA478717C84844D06D0F83251B8DCFB0AA02FE8991F06CDF5328B4195B272807B242A0CD51D9C9CAFDBCA8773ED2048FA25360601197C1A8AAC3BCAA05B087FF38F53072755C1AECB169CA4EDDECAE1B580433DA6CB30F4A7E33D02C6E3624982853DC5A77BCE8E3E9217B
-
-Key = 3652786521A31CD6A927E608CB2A87CB
-Nonce =
-In = E687266A896382127FCDF60A3F271BD3BD21C0306B8206FE9D9F2B00F4201418A4DACFA653DFD029639AAE03A6675D3E2B4ABA7E46CFBE14FED665E0F520F110BDCC4E5647BC3D82723FFE0F588062E56DE991922E9F23FFBF2E1BE91625A190210654E0B2476664568B44EB58117317C6B61645C6907ACCCCC4BE949C9D3ED2
-Out = 0058B2D35FDED2CBC91D454AA55F93B0A249152B3A5C9DFBE907E639CECF1B90580907A29920901AA5278EABF189DB980372C2A804B2B301F8262840D45A668564C634191E027F691630602423B9069279FFC20B181CEEB2CA6C15B5A66B9FDBBAE3B591FDEC91D41413AF3036EF4A99E9E1B728E901405E5EACBAB539BD4796
-
-Key = FE97F4A2874358EEDDE14C5A1DBA9731
-Nonce =
-In = 6A5A797BFCDB31CA65F7A0D720B679B5C7CBAD92508E93C565E3AC94DA5B84C041D2A0A97CE0D138C2D48E8F613C36F4C9A9ADA0A32EBD5E346A0A76078D2B49E559BDE59297728577714F3EF016A607D3426297B4681CE7FFE958B5750F8DB6F88916C5DD61CA30DC2CD2A24742EA7AF3886C792E1D94ACD6DAD21649A8BFA6F907121166E51D97
-Out = 1DAFC103EF64B21BEA443931DD0111CB06D5BF42D1824C4E3F3A7D6718F2911756D946117A12CA4974F9BDE4A99012615D6D1B78B94349216FC73CFDF7BF91126F017A9206F783106E636AA89EA986A4F4942A8820FFF0D0B151E7A74397EA186AD85899DA5AF661566A3BCB3C7305DCD5113F12E3532B803E0ABA376B232EC1328F3D0F1F884835
-
-Key = 5F5B428DB8D1FF5165F7C6691BF21794
-Nonce =
-In = A420F0855799B02E78C5A8087857A62E10F6448E3B02257AA678A7895EB9CBDED44D0ECAADD6ECB78F06CD65ECB8ED2183F62691FB42383E4062A5EA5078F146964F1DE275CC449304D319A4EF99A07C09B35F4C59E6AE9F8799C074C42BAE060E463A25078A61CBBD1818CEC67CCB08BB4CEC9A4D3B146007C990AF9E723F858F7D63B81D4536243694AAC2F4C02CCA
-Out = 6AA3148AA2E4676C3ABBEA8B883560168F04843310B7871174C21F906E4049752617F465DAA843BDAC395FED435C32CD2B497D2A58993282E1FC36113060AE36620AD606E0A32FD9E143578188FD408D98C36F2A4134B10431BC20779195F5BD01F915987C40622D6D813CC48684D043AC74994B61F2CFEC89DA1A8A8C44FA82355508605324B20346B62CBF42649803
-
-Key = 93BFF08E9CC32466F4436111031037A9
-Nonce =
-In = 50A9163557E25C824A3DB605486E137772BFB26F3D60AF6431065B11DFFB65B5F46B49786612857935365BE801D978A860463351EB37A62BB66EE43E0B348BF509C3AB450334DDEB1FB04F829311998D026F7A66FC6E06795F7268D0E4B71BCF674E42E9851AD830243EF28B854A2CAA00541A5AF0A3E05EA7A4B445264204516A7B824CC8FEAABA992040939E2D13CB832A821267928B88
-Out = E905FBFB19EA75D647CAE71A3E4AD1FD1150101614109A06C4BEE3E8CE5E677FFFDE252DBD7AD0B65E9A47683D10B32E5EA1DEC50746E8ABE6B562054F1F60AEDF267308583DD209157ED0013F91C76A58740CC94D46584ABF2145D441C7721E5C41A7B33CBE13A09D05A569C7C0E313232282FA72B2DDF8107930C6A697D9C87EE66DA240658EC5254A4F8E4A99425BA77E6D36557FD32A
-
-Key = 07EB031C2A50E81BFD6150BB8E279F6A
-Nonce =
-In = BD4BCFC5B25FAAE48AA8F4DB7FE80F14ED076F13DED25A3EF4784882F38838EEBB4757B9BFB1344D422DC20D93EF2947B5D741BF945BC679BFAD074EEA9DFF9CCA6E49B6C40EEAFA40733AFD8A21E26E19E9EBF66074C1102AD6234D129B589AC7AF71096C128FD94566E1C129D07E220FBE9D4DDA25BC71112D62AE335702CAFB7B46DFAAD51F6D7B4462A86400D030CE96B577F0F8C43DB342E4C700C21F89
-Out = 1C2FB8256D92E620276C95006DF21ECD2C0DC26BF5752369C57745A27538200A5FBA2A08B3DC4C6B7037035E96A7E4F97DF66B5FFF4D0AABB520A15D83FBA17CAA84641142044A75F675637143F2ABDEA9631533877D3E77CA68B615A4EB9DFC4B0C27BB777604EC60950D4531D4C6DA5412661D2CFF573DB93D4D428EC974904BDC6CE92B0F137188891DCAE497084FD3DD3A9BF0991E7D954C473DD7075978
-
-Key = 0347E502FE1FB58BCE93EBB16AF1671B
-Nonce =
-In = C12B1B0A8CCFE8BB72CA3C353F855F7F226DF0F1FFA791785506E972E19D153A92DEF0D082CAC0B4318E5C0C597638EC01204BCA002AE8BE1624AA4DDBC50759B8813F6533184181395AE665962CD6BA22D82C1B4CD82CC4D2DFC07884C784398D596095B4ADF4A4CB5561E52C5DD85A2EC4642EF902A91FFD4FA73094D9A10D410743B82B24FE1149A5BFDAC8469D4C74282581DB20BF4DB73321184B29E08D0A3BEB0A56D12AB6
-Out = 06F1F55E98C7B67858AAB0EAB9ED413B2E8D7BCFDD95FBDE16151A76E3E314022918B276403782EEC2810FB10B8E6742287685675C67935217023EBE32994E1B1C7FFAF3C8E18EECCCBFA47DAE25377A1D38CFCF9FAF92AC99EFCA34FC70F04B03D1A2E8685B2CB2F513EA6A49130BD8F220267DA4FB22E2FA02AC9B4F2FF554395BA7E0F85C378474E185DE7B04E01C8929560B399D768267B352CA4BDA75FEA3B022B2790146E7
-
-Key = 5922D69B966C705B91F8DDB19DFD15C5
-Nonce =
-In = 7BCCB586FE4F343EB7DE9210AAF5A5F81E62CBA5ACCCD897ED221CDA61E2D4F177A25002F5E12AE2AFA0B19113485EE793F3C85FF14D7BC94B23AF502ED0118E78192CB4FD680676194A99157E9349353E907ED93A869A1A9BE721ECC94619E26F120A87C1E227589901C1617328D76F6B1555693ABD6F847ADFAB14CC936D3DA4F8F47BC5B77E323F23BD4DD248822245213A03CE770FB50D40E174606D3318BE3F76FB07473ED7034314E16567098D
-Out = B42FBD0AEC444319719ED521AF7CC522A2F1DD69ACB6C6FC08EF1AD52415DDAA4E94FDE1A21BDF954DBD56681E2E3D89C6725E716414043C42B0CC842B6A326CD70770881E047D59B611B6595FAE0385111BA18CB19359AA7FD318B528D48348EB51655AE17B6DF79DF383FF2F3AD856BA42598DC2D94921B4A93E87BD12490DE43C454B30F4093B30878B5BDA7D6711F68DCFBA6AD0AC92804E15B6DC141A0D06CB962244700554B0BA4D399BB9D935
-
-Key = E5C7B48ADB3AB291EFE88CEBFDC612D9
-Nonce =
-In = 7D578CFBB35A1026C7AE1B82405B5F93366BF2280C6E6FB42EC515374AA2294534B1ECB67CBC925E375D4F6B2E1451CA1BA569D494FD5C0FCE09F9637C83276AE3E1249815445D60E47CA8DD9EC7B846449C73F1648640299EFA82C2E696A0F9CA9738DFA459F8AE04E3431BB702D4F6D41526DF1543016A8E0FB1DE5E5258FAC9DF77CFC07CB297BA2A2921EFDBB0BE4F355197409CEB98BBB08BD24F48748142321E66C9791E93E8156D3FEDF7B3CABC0C40148A866D28
-Out = 50E48B13EDB839D430DB28787D20DDD4C070730ACF59E9B235F101557E88905B2B8766F19421718D82EBFB7FD8075D1239DB19BE2151782075A761A7A1B78B1613D95340083BFE449B502D5744512CAF2C33ACDE1F1B18CB53B152AFF2078319399858A3356DD710A1D181A6EAD0EB9C1ECA868CBCE049503E372BF3B9364B275A6D68D92F2DA3396FC045A816C2E9FFE3797538483CBC25A97DD93E7CC997CF7469E66FEF432B9F3C5F2ADFC55235710EADD2E8FCA5AFF8
-
-Key = A830EC3F2B6EB4C27215F68C373D51CB
-Nonce =
-In = FF2E2C4B8BF3223B6513D612666415DA018A608BEFBCE8141F40EABE933BE55782E1355B5D87FD7A31374EDA7BEECD24CB798A458ACC60ED063322CBCDD796546C0D09AFC04042A348E30D83309DA1EDFC0D631F1D1264D02812AB2F1ACA5E71076FA681BEEBC71C0104CD63807C1B1C5FA543A2F30D903FCA91B6E946923FD57E1F1396B33E4C44F057693AA8413917002C185FE0E54C2E0FB478B324E7237C6F4A5B439C2B52E1AA4A190263F5B6941244919FAA826358C3F5055A1F67AB4B
-Out = 44FC4977E72F10AD62AD3E3FC7D868FBB09C4B7CCAC299E9E299B3FD5DF116C837B5D9857AF8F83E97699F021F673679296444F96EC481F2C71DEA77E571DDFC49D9E453235A9BC93DC7CF60B209F305A2420830777D4B3732ADAED70B55406C777EA7CBC71EE2E58F89FC1D4A1AD84A80B8F57C958D887383EEC107D5EA2E8297D75D588B24C8E42C2AB11FB21322E997B11DCB9AD7C825638BCC25A04E7D9311F24638418095D28259C74E718123CE597D22041CCAAC3612D803335DB4E21B
-
-Key = 201C9CFDE22F6BE8FC881A4BE6862199
-Nonce =
-In = 796E00B9B9C314F46A6FC4D30E251CBC99C0A7EC1012D4C08B3C709F8C42A0A24B52AA86A8B4EE6C0B40B9AA749751222CE2E40E97467F8E49498D3EE24BCA8C3F6271AAD7AC9F69F56B6F911B8840AC28B10DD63EAB8249A85747F5B97CF2BD18CD163BAF26D57C8E5454F162BA6D9758151F53D3F45733C3464836491C28963962FEBC6985DD4BAD90418C5CC02758F59E001179888D5C56310EF3BD19660C98B40F39618C12DB9DF20A1144E4D88F5849F2A619903B91A4F88EA8CB0448B2D02ED413C71619EE
-Out = 35D5A3EBBD297958E923D81114240262166A0E6BFC0C42EFA099C488005ED84257FB74324568308109E76AC28EC059E7F8E612C2F8639C4510F996D311581D898E13DF6031385A620C5ECE9FD0745C7E7BB28323A16186065AE236482CFC37F227C99B6EA79FDB095D2E13A00CEDF8D91648CBBCFE9A72423485899CFBFDBC2CA6AB2CFEFBEFB38522EF1CF2D07AC68F29819E17E202AB863F0878713F1CE248349E4139DC8107328D9907FC8F4987FC0392B120F06DB28B7767AABC735535BB9FE18178B5BB34CE
-
-Key = 271A2BFE528BCBE7A13214409BAA2E12
-Nonce =
-In = 85BD2383419FFC58425316A0B1D0EE6DB75CEF29BCB06C55D961F1880C930C4536BBD4902DC33C528957409269CBF90C28468F4260225B30C1A11611F524B4FC28FCC6B1BA85064ACD5AB63686E8DA93A938081F14FF0D7BB4FCDB12B68F9A2821B397A6FEF87511FF67B8FBC20D4338A00B7AFBBBFC73CB832346030920A463617A8E046E5B9BDEE2950DB7BA80BBDF04230094F8357062AC03E277AA68D14AEEF8DC810F7BE6C51FB8866CC9FD24BEDE265184EF7EE936EA79B68C9ACD37EFB131F2647FC501826A4F4CC5D16D4666
-Out = AD7D51359CF9E854759CB435669B098EA48DD89DCDF882E2781170086EB679D6C45AC3A04583FE8BEA6A315CB59541E3753F800BFB186E9177A8E299A9F55E1D034BF8CC876C2F463D1273E320FB6B35FBE5E6DE0C3C205B6FC0EFB2A0FDED8C606E0422B0C8D72222318BF9B1A3D7A0B527253BEC8C9F66115655CE3175828B6659352BBC461ADFA2133808D872BC1CDC597A2EEDC72A1D2E2644275C60144F6C7EC00C43B6BFE2E4433A6F42A4CD2073528174C466AA9EE0AB24429726029FF1834254B7A839A0D8D4643C131C1BB7
-
-Key = 8588AF13229A77FB1006467AF02D6AF7
-Nonce =
-In = 89DCAACBE537D9028953B0BDD28FCFD1E745D6D457F48F9247F51A8F6E9719D85F106E8F794C6CA57247966AD2F878421C35528E95CB5813413B6E8AAD530AB09168A012D0027068D63ECF4D7D4783BCE8014D34852F5A52C66461E15C965B8750087C43176E70E24FD0D4FA83D4B9166C6311E328E08BEDAB29DBF554AE268476E507D7791AB3475DFE90CA3F3A3B6407BF67E4BFAA67292E3ABAF6967C5450E17C2CD3C096C501B0180BA891EA951E99FA418ACB72BE2FCB74FF143BABE55264F6B1BCCA83B81856544B843FF59D9668BDCD7EFC2F1F0A
-Out = 91B44C174E57C20AFD631C5B21B329A8B438C3249B5E0A4587BB01EB3C3770BDF67C16B24DE0DE2D61A1ECF3E00094BF562A21B6E2B9DD904CED2FBBA18A18A4228B958EDB1C3FF55BDE7D544DDDE97C67C1EA5E1FA4F0B0FBD2775B93AA02F4E6E19A43ACC14D022CDA7DEDE8B2915D8D4D0EDAB2718E56B25A6AA3C79B63E5DC03D57F948CE7D78A15FE3C0C781B83B5B116816D55D660F0B6ADDE327231069DE6015C622E456AD01DC1EBF527D05627AD3BF5A09EBCAF9392BAD189B511F6E429C1052E05FDAA558CB8D720F5B08AF5C2B7E1D811DB11
-
-Key = BFFD749F285E2BF09E6E1CF31F485D27
-Nonce =
-In = A3647B24A430D05146C564F62665B74242A393B47ADBF341DD56BB1855C0DEB052A6AD5F4661A45F5107EF138BF5FBCF03F2DF6CA6FBDCE61D91CC9327D476B7D96061A4EFE06D77A608A78A716541A4C1B4A9D99B473295D293F37F6F3E982CC8687B67ECD9C8B999FFE97F1F28F23531F600D2D91865BD7144186A53B823887FBC4E5B25A6F233386393E40D9FABF5B4119E83CB614CD4D302D999AE00E85F78F22687BDC1420784374B87CC7EB772BC468B01AD895259E94FE55159FB5F6EC7FB5B7B1CACCD09884327F174A60C38DB31D6A8B8925D75309D2D2850FE4E8F
-Out = 5ED0A794F77048023665D3B9FCF108C2794D98C4472136EC491F2EEFE3A2ACB89DC6A0067DCF449AF304E0A43ACD79EF1C8118DCE1A73DEAB3CA002390E2DE166F24883619491723AAE01FDCC31FCAB8996779604A36F22B1C8E418054BA9164D74CA8ABFD0C39E31A0FE97BC4796802957CBCDA7ABC8AAF298C007F401B56EA023D26720B5DC3C9843CA604AA6F820CEFFF2A38681A2B18DD37450CB853F5A5612C3F7083C78DE65CDBAAB5983337672AC050ACCC013E6DF3EE7AAE6EBD91D328FEC89407668B5BBB40A94135E071A9E20D0420D24A9E719D0FC72A3136217B
-
-Key = C0DE2ED5FE62A1B2973360E18660DFB5
-Nonce =
-In = 5A52582DAA9B17977B476F718A030152C8F4A9C8BFAC2CE9A3A78935B4B9D7DCBCE4237AC8B51464E33568F6ED94CF29A2BD367D38D059116C57EC69BEEDD67858E9C06420C082C0D4C18FAE8B617EFE427DE7BC07BA2BE9BC9FDD9CD15232FD9A9B8B3B9B9BDD2F801B69AC5EFDA6FB9E2204FEEBC4FBEE4432407894C17DB0B8E0BBEAB451B15A3AEAD171B937E8451664C3A80E9E28F8F4CFCD2F28C1B116CA3CC2775632BBB14832C36FC70073E6FF462B826F3EB092504BE6A14E78AA2E32148B2E63BB8EE4B2D7BED5E8E2E8F025852F03A65DA77D3F9C6BB6B373C90F6B0D2CB5C2C1AC0A
-Out = 88FCDB413A956FDF038C69A5842363FC82F9D3BDF80D5574DC0C6867F7EE21EA4CF72DEC9AD83D5F19F9A71B71A71EE76645A153047825B5FCE892CEFABE49F6B0D768951B2F03ECA4EC7200141895AA87EBF85CC33AF12EBF0189DAE5F6218F4E485873E994BCEC2E007AB977BD2C8C77792F2DAC0F29B8F8161B2CA99C4E81DC9DA37FEA73E707200697647AB6C73E0DD1D837D329801A7B5F56CB137A1C23F5FA66213E720156C9AB67398300DE5F979BF4E1DB8C8DF0E927EAD3DD7F44302DC9B39AFDB4F287672114288E24BAB76CA10200DB56A428A671CB66EB2E4FE80630B94152B06158
-
-Key = C37E924EFECE82E275AA6115E2E2EEB7
-Nonce =
-In = BC0990F88218EDE0DE9835353BCF340C5463CFA55FC4551DE21ABFE260A8173591D44A82DCC62CA063F395396040F4B09E4CE63BFBC1C1F725FBCEC1A129124B111A9D393D53AE65330569846DA3FD18A682B192773A76649BFA999859B9EC844C6B4496981FA13F8F7F057530879998BDBF8D3ACF090D5CF543ABA1E9DBB72B6A48B85794BF212BF5956DFCA7714BC238E5BC3E785916DF9D27A0FB4A0A391314B072EECEACF50DC8693D5777C45E932F5C0314A882ED43AFF657935AFCA0B3FBCF97ADB513C754BD0EC82482DAAA8497D26A9E7F4320AA382903AEEBC83B53CC297364446664424ED246037F063BDE
-Out = 41E85AED70C8464E353FC6E2D5975E0FAF5DB17A8573C7DDE4BBE0E29EB71CDEB210B794D0FDFBF7ED7254B1EABEBD8CE203225CC4C2EBFF3B5D5BC51E3010F9946289BA3BBDBE4BE7C3FEFE7E7A390B628E29798E732382B482D84D7863CB0A85F6F3CE1072CAB120960D05FAE3510D36C9718DB4CB4750565C8745A076A7BE89F52A16DDE9D32A42CD635340F9ED1AA39132E30DBDE32FB28354C1DBE9BBF817481903BD6EA8CA4805D03B42F2D5000B43475FCC4103717BA2BEC3E2F1542BF308EDA7E2C71956F32F50680415685E8106E701E3F5303D79F03214097A4874CFC0664BE4815BAE2769BA2CE11FD663
-
-Key = FCE0F56F8DAE31186336ADE3B46D6FF5
-Nonce =
-In = C34B10E6DD28BEBD7DE1BCA43D8AAFC65917C51E848703C034284FAFDB04DB3FFC0F30599C923C6BDCF006B47786E1EC68B9D9BDE22D39294CA235E43CFD42DFDFD3D4C49FD778A4F61F17198851FE3923CA6DCBC8A6215E2CD8F24E110DCBA58A63058CF169A4CA4A8EA5578030CCB2EB03C95871AEDDF6A090FADF44F8D43D7FD36987F31E0409A7615687C1D3FC0F25796973E96A4DE0382D0965824E9A81677D414EE29EEAE3547BCE77BF9F6D3E6ED1526CF1F51130D7DF5B6B34E89EEC7D8866486E02D5E654C920BC42DA3DF7F08EAA0681F1350462B29792166D951CE94E5125FACF103D591C0E819667E42082FDFB7763C8C559
-Out = C2CAE1A03A0B7D37D3FB79D98E425DAFDBAA0E2BBCDBD0366690C05D495014915ACEBD34D320614752D0D667BABFEB9E3D5EBF5C1501EAD8D3C9602E6D33843C18F2868E237DB6976536FE28B02233BAF37E9EC308A4E163ABCD4BA5422F92F5AECC38818371FFFF5AF0FC66CE57DE4E0692B1BD82AAF95CDA6FF3C3C2F85CE16C54C151E32F146FC20AEDD4985E13F68C2E2224C49226545A32EC6C47974D2778184FBE289B14DCB78CE6DE17377557B92AC2DD3C1102B74B2B04EC74BDAF85D2FC8F659F4F067F6C3679709A8F2BDC2429BB7F78F5173EB3026156F2EA8FC510D5AA4482E1F5639F5514EEA3B5E979A0E54324954D47C7
-
-Key = A0C7A1DD857747698B49D1E6127F564E
-Nonce =
-In = 2112DE278B42F0E058EBE6BF868F544F740F0AB25C30459B6F198F74E8CB4E8B677F59E915CFAE5C208770C3AE03AE597D5B41C97AC6497F67837C20B5D2AC3F01FA5E831C8F240D8115279D81E315060A77B5971506D7DCA40939A81E377015BD6BAE084861A9044271D2CC66EAC30473931B26B5ADBB14471B32591D405B2D7C9F30A1B0280D21D5EF49A1D24F0E80783D31E2A156CCA3F12C7EED45E471BA42635A04057D3BE56E31936E0BEF6E705FAE0E46DAB18F9AFF3582935BDE554F650B21DF6DA8BD4C5CD75A58BC9FE50C03FA3217CE60DB9FAC52A4BABAB8223A05549532ED8386F6D621E2CB97B829C0FE9886DC67CDDA9E3A0D19E870DC8E09
-Out = 67315AF4A1B112817E9922FB3FC8D251CE6BB7CC1CBFBFED1927A172D14B0C1D20A9E382833306A08A3222FF0E11F19FDAD5FDF44911E46FFE688D0226B096BB227A0777B2C5F97101A386D65CE4E71CA590BA8DF68DE85D50511FE1CC08F6F569B9D3F47D37A93BA28B301A72D9AA736B464343DEC323207FFCE6AE59CF22916531B6EB6E92E5674C226E06FFF18F5E9306835957E93EBAD84711E4B059A19F554E3CB0F08ED7AD6EA58730BE7BA5572BECC89228FF83BC11F3036EBD8BFE370C7D74ED1FA03530E86DE89638CC7A1E79EB121F7DF32EF164AA1D0570FA6191FD88F7D09C1CFF5C55F3C62618017879DBBE422C6BD51BB320F7B5FC00276019
-
[XTEA/ECB/NoPadding]
Key = DD0C8719A8DA117DD9D1DAA189E65654
Nonce =
diff --git a/src/tests/data/pbkdf/pbkdf1.vec b/src/tests/data/pbkdf/pbkdf1.vec
index 910225671..ebcad175b 100644
--- a/src/tests/data/pbkdf/pbkdf1.vec
+++ b/src/tests/data/pbkdf/pbkdf1.vec
@@ -1,28 +1,3 @@
-[PBKDF1(MD2)]
-Salt = 40CF117C3865E0CF
-Iterations = 1000
-Passphrase = qalzsegt
-OutputLen = 16
-Output = 7C1991F3F38A09D70CF3B1ACADB70BC6
-
-Salt = 3A2484CE5D3E1B4D
-Iterations = 1
-Passphrase = vnhazjfsixbomxqu
-OutputLen = 14
-Output = 677500EDA9F0C5E96E0A11F90FB9
-
-Salt = 5D838B0F4FA22BFA2157F9083D87F8752E0495BB2113012761EF11B66E87C3CB
-Iterations = 15
-Passphrase = fheetneqbdmqqqnyywioqjfloivccquj
-OutputLen = 14
-Output = 91A5B689156B441BF27DD2BDD276
-
-Salt = F22D341361B47E3390107BD973FDC0D3E0BC02A3
-Iterations = 2
-Passphrase = snbyinjpuikqvxxgrlkf
-OutputLen = 14
-Output = 49516935CC9F438BAFA30FF038FB
-
[PBKDF1(SHA-1)]
Salt = 40AC5837560251C275AF5E30A6A3074E57CED38E
Iterations = 6
diff --git a/src/tests/data/pubkey/newhope.vec b/src/tests/data/pubkey/newhope.vec
new file mode 100644
index 000000000..84e9b96b4
--- /dev/null
+++ b/src/tests/data/pubkey/newhope.vec
@@ -0,0 +1,6003 @@
+
+# These are the first 1000 test vectors generated by the ref testvectors.c
+
+DRBG_SeedA = 934D60B35624D740B30A7F227AF2AE7C678E4E04E13C5F509EADE2B79AEA77E23E2A2EA6C9C476FC4937B013C993A793D6C0AB9960695BA838F649DA539CA3D0
+H_OutputA = 8C3C44328025E08CCF5A76025EF2DF7148BFB664743651EAA9B549A3C508B55B
+DRBG_SeedB = BAC5BA881DD35C59719670004692D675B83C98DB6A0E55800BAFEB7E70491BF4
+H_OutputB = 676FAA35FACEEEDFB541E134FE15714628F696978E3325388E048DCBEAEE0668
+SharedKey = BEBA8E1E8804DE1B1153C24C0C307A02BD2D83142F612FDD8D88B1FB3700B932
+
+DRBG_SeedA = 0FDBB1169F785669A406103336A4A1D93FFA24269970F51601DB5338AD82D46DC7300E2D894B0EAA40A6AB254506D8C1176A33C4A1B2879604B1B80DF48D31DD
+H_OutputA = D1779CF8560DE6D5EAC725A8660C4D7C5DB045894C52DFD279ED0888A5EA2157
+DRBG_SeedB = 0D399DC91D8530B72C5D9A9920F33B43331B983B95047F96B5B099BE399355CE
+H_OutputB = D946D5B6171DD0CE325BA12F804034C039A8AC4B0439224DEAD9993B6062A176
+SharedKey = 1324791A9C521B01A348B3B511B11EBC7F67696DC8E77D9AEC5494138D6CCFB5
+
+DRBG_SeedA = A4A7B2872AB311C10099A164BF35251C75FF6A3286DBB3B96263A9FBAB28C2CF887E86D0AEE471D5ECA9546DD804D2E527C6BFD60A41D27B7BBCB55766D18E19
+H_OutputA = 0E423336471DC8877EC7FF8B0A27AA2BE9A40726370BD7CF7771A2C1CD9D031E
+DRBG_SeedB = C8D726C8ACB5239CC321E097C0D4036D2EE532EF05540A30138179402A519040
+H_OutputB = 5006DA107F709CFD86AB2FE3A9D8C264964522125D2D1A789D71811F75E14639
+SharedKey = F807685F5B7522DE4C4B1F423E7D3A067B3695CFB11FAC988358017373932913
+
+DRBG_SeedA = 66F34FC79B4586DB587F616DC8397541E5B6C98126D46378894B0471CE84A3B0E722806952FE398BF6B560D8107411427558FB38F256CE8651A39609FD69AA0B
+H_OutputA = 613A76F4DEFC08C4722BE26D0878EAE9D0E966C85117D588EDBC68B94600CFF3
+DRBG_SeedB = 32F3AF5940961543C7960BEFA4701501AF2B73AC675441D0A9067A0DB2685E4B
+H_OutputB = E09EF607F3A7730094B4683A8006CCD8BF1B4C9ECED9087F88872BF0BEA4EA62
+SharedKey = 4A16A9BC8E8547F8B56686EF03750555320E7EC2F52D3CE8187F568B4331CD41
+
+DRBG_SeedA = 83C2BAFACEE02B502C8587D6B109F004B3A8744E65A289F1392A739AA281CC61D7376752007C144781EBFE9C23E2BC27FC79593F4FD17C1FD50AA8B3862167A9
+H_OutputA = 1EC19202EBAD19D0BF52329B556B9844132076BEC4841B3B49329C8F8A3184E3
+DRBG_SeedB = 336CC1C4BA7C138CB6475370C7A81A1CB6A2FBCAA3676FE71909C6BC65A9B733
+H_OutputB = 9E4C6B6F645AA1DC4095639E9396669C1CDB4003FBBA5019E37A2B1C953D018A
+SharedKey = 4595767B17CC5C5BD4FBA9A38CFF14EEA2BB77AE63B65117009D1D09C3C47940
+
+DRBG_SeedA = 0DF32710083E7EE32D8B40B3C31C57BC818BD8EA613EFDD96F2E9D87607EA8540F528492A760AE0870F6CDE8ED33883F15768D1C39CCDEE4EFBB2AFE147BB9C0
+H_OutputA = 72F0F02611D23B38BDD4CCB70A9B364EDD15CCABEBA99C210BC12C47D2225724
+DRBG_SeedB = 3D5F737397FC86AABF86233C98B191A9361DEF657C715E6AFF7E62F67B2933FD
+H_OutputB = 5326F21BB8B595A2A010B47AA81DF95A0FA7B160A3B88F82A5ECF6E736D4F9CD
+SharedKey = 944A9D3F382BA6CCCAE33654D9A920E923F1CFD56FF6D2844DB51CCAE7AA9174
+
+DRBG_SeedA = FD47C8EDC9B78AE4154B39602D32125E413470CC3B5E41B28B8B39D72389470FF7D02F1077BEC3CC03F6D27DDD9E409066B15B41EB5C49B8CA7387C61A3B7B45
+H_OutputA = FCB739148109838B17A38C4258D75F0E6D85B66B3801B1BFDCBDE0A1D48A71F0
+DRBG_SeedB = 7E5C0F8996A64EC68DE2C0335B6F9EA38C554B1B5F2DB888BF06FDFB4235A129
+H_OutputB = DBEDFB724DC3EA7B95C4FF3781202CADD9F65CB7F238AC98B1FEF38DF7F1FBC8
+SharedKey = 727410EEB8B97151D9ED0F02FDBC38E9D9E545305B97C61AD5D9C65D94444E4D
+
+DRBG_SeedA = B127529F01BB9EB0F11D7DB6CFC0ED2238E4E2D417BDED7B0AC2C861CAC534F0B7C13A00FB292C4E5794AFA517941522248E20A5A73025DE06F051D6F52D0808
+H_OutputA = 71A204B1990EE5D13BA253A8EE348EA01AD3B20370B06D4AE0C0ADCB8496834A
+DRBG_SeedB = 542D152B8D814CD242D0C9EF218ACAD18D8BC0970484CBDB4B0C99CA2FCDF181
+H_OutputB = 8E2F927417FF5A48364E89C22D756247674A59117E40447B0A9DBF95A3935581
+SharedKey = 515D934A075849BB01F661CBF673A9E296EE3E89E37A051B3CFAA2A8CCB13664
+
+DRBG_SeedA = 9898F7F11FAC8003CBAC2312A1789A8A26099C1C5722635B8004ED8CB6C9F30D2EA18FA409C2FAD612B035310526B821822C248E6CF949DD1B453E2DDC2F8B7B
+H_OutputA = 24CB74C3B651EA9C8A9F577AB38002665164A94B157941D0421ABBCA6AF6139B
+DRBG_SeedB = D03E194142FEF6B814277615A08EACD6E39437211188A9AD23BDD58C4F577B49
+H_OutputB = 97C97220D2BFF81717A4E78679D15F24CC96DC2F45DAC40B158436CDDEE914A8
+SharedKey = 5FE0FB14171697582C9637B52A19165FB1D0C9354A76635A38330BFEDAF4DC54
+
+DRBG_SeedA = B89BDE2F230C0893CE8CB834A8FE577804A932FD4AEBC8B3D4C0C1F5B8C3991F8C80AE323023708D9F8392C5E54ACE379BEFF2520CCBD6C3FAD525050EC25DE8
+H_OutputA = E4FE0AA85DE9D286680B0974976BE868036762CBDDFD792655C602F0492F5AB7
+DRBG_SeedB = 0E15CD8A7E796F6845E39090E3E0A67AA9A0D5FA2AEB7CFBB45011A345901A11
+H_OutputB = F9D292E11EAC3353B2E29DB7C0F402A766039F92E0F1C87A28AA64613CEAA414
+SharedKey = 27C3D5EDB674D7969AF4FB51ADF6C5D22204B4FC912EAD1D61944291B0E63231
+
+DRBG_SeedA = 09A9D2F475D33617F9FB43E91D5DF668D95840249780513F1F73EF88CEF40668C59E1DD02572714257AA2C04526B8B627A4010267A76104CA9978FAC97C8645A
+H_OutputA = 38F06790B97D96D29F7E5FFEEDAB40475A1A5C10A1D57DF80498E3D40C4780DF
+DRBG_SeedB = 34E1E6FCD22242D0E889565784A3FF970D9BE2F15E44CCEDE09BC6F57F36AD8A
+H_OutputB = 20471B6D9EB13152F821F27E52EBD14FDA8DBA1CAA0CA38B26C71EB7D3499EC7
+SharedKey = A66E5BC82A50D50992B879B3DB23FFE23D6C35D2766FBBC4C66E537482689BAC
+
+DRBG_SeedA = 8D86010C465835710DFB51CCFCC62470B4DC10EADCE7318F3E3C1CD59CF8365C871F7D42557614A607D43CD512A2FD4D8AA49B36B6C991B35070AEB17468175C
+H_OutputA = 8D50BB6C757D107ACBD3373B7D45400CDAA489B6097CD43CADA6AEB10487926E
+DRBG_SeedB = EBF73FFC9389DF5862B4C334BB5FAD19025A8BFC1BB52A1A699BE7E9BBB3D2CB
+H_OutputB = 9245DEC3286493E57071172B19C9D9BAEA91870C861D7521B9D773078D720096
+SharedKey = CDC5C133FE95FC3E86935204BCFB20C9659BA7EAAFEBDCA2B21D5F5036C145AC
+
+DRBG_SeedA = 939E819F878C479261BD421318C6C08F52857FBA42E3A560A418A7287C799A52878C43387BE1A90BFCE43382FA27EE7E02FE6189902DDD5ABDAFD9B407B07A0D
+H_OutputA = 5096AF60E8284126C3F141C7204808BAFCA653CBCD99293F31F7F9AA4A010F96
+DRBG_SeedB = C56354FB4E95B9B7629661F59DA92963ED4FB0480B6E7E240A8545B0636D886D
+H_OutputB = 43D6EEB94D2AB80E9EE82E25245FFCB7AC914E480A2D437FF916493675C360F9
+SharedKey = 3A8025A05DD2676956FDD651BAD1E5E64160FB1E7F2BB5E5EF2727251C61A3EE
+
+DRBG_SeedA = BDA036926A7A4B5E6E02723D093F51284935F2754F1470122C8374A3BE97A8D5185F8B72DD7EDC4938492D7B89014EAD5068611BB0B6CA255D77D711737960A4
+H_OutputA = 374AABC92AEEA6722F9984691F6C02251234F0493AD5A7E5E3B94BDCA45918DE
+DRBG_SeedB = 518640B6C517F81BF7AD2D6E2809F6EB218B1A1A3EB0FCE32FE3B14D3FD174FC
+H_OutputB = 2123C2E2A62C90D8E886F7C027D24814A060CE557969EAAD0E56642AB8B82BF0
+SharedKey = 658C03E2AB48C5A180FFD66B58B42CBF83FEB28989037070B902D20D13FD45CD
+
+DRBG_SeedA = 1B9E273F8C433F7F197DD0E22AB7BACA75A86237DEEAEDE890027BE0C23F7DF9617495FF0AFE5A85A8D4EA56A3A2DD772929F13913D47975795C49BACE6B2850
+H_OutputA = 3D8685E467B3DCFEC45E7E49BBBA6614E17EDBD3B5C83E1CE3831B9E972AEF6E
+DRBG_SeedB = 660C140DF5B9A8D5A5928FFE1271F5B6BD02A804DF748720B9C886F199B94F42
+H_OutputB = 1D31562A5C6160E31613A90DCF6EF825AAD18476D95A7FDA6E11522A1D3791A3
+SharedKey = C51D9BDBB9DD71340D70F67D23BFCC661ABEA2B3EADDB23103CB57F9CE4E3D76
+
+DRBG_SeedA = 6A10EED1A24F28699C984ACCA8C2DA764F3DDB8620A22B53F88FBFBE017329DF54B4C95C79E3D158DE62A941FA5CBA3B90DAF1CB1AAB8FB3F08A1A416C506C24
+H_OutputA = 33AB9140296524A0C695B274AE0D7821FA0279ADF1BA4CBF4B22DE9AE0FF3219
+DRBG_SeedB = 86D83C3C160BDA29533090009155F0A66DF71D1D348A032ABAB2B2AF169B5324
+H_OutputB = 64E0816AEB10093A9BDF30BE0D5955D55337046883FDFAFD50D97338613A2141
+SharedKey = 7CA9ADA2C4613D06698D18C1268CCF1C387DAFF08793347E6C78129BB928FD3D
+
+DRBG_SeedA = 6FF67C01343F7446F0A31D2AD80C2858679F1576EDEDF3E560C339C92D9CD1BAC4FF7478ACBB0FBA47B0FD928798C3A7A0C8D0C55F1C5267C425ECB79C4E9378
+H_OutputA = ECE42E963C427BC3998542861B90A725FCC31893C96B5B201B2995AA7BDE6D03
+DRBG_SeedB = C7EED0E3F94099410D16637486D576F26FAEB80E09DD2E8CA26D06B177E02EA1
+H_OutputB = 5313E2E2D0A9AAC08DC09561E735CA2A0E831E8E192D376357394D905984C59E
+SharedKey = F06E5F847267C6A23ACCBBE4970BFB52EA9DAAD8061991DF899CB69D329A1493
+
+DRBG_SeedA = 8603B8751A9F3F62E86353DB620B309486676110F1C2E9795F84960403343B0EE5E506A9963F00925B6674FA806BE5BAB609830821992ED69809A25AEF4F7093
+H_OutputA = A65F7C3FB99CCBA9C3BADA25EF64031B2D67A6FD8DCF4CBC1B4200B900E445AA
+DRBG_SeedB = 67C22C3F35B76EA08286510F55396C14D26874138F1720AB0C081BB153C009D8
+H_OutputB = F8A9FF5BD6FDCFBE0F143287FA605979E5901B14DEBF601B3C3098EEADD76AFF
+SharedKey = FC328010AC4AD50D1A8BF90E11D7A9FAC5602C28FF2882B225DA9202579A9789
+
+DRBG_SeedA = 35D92C7F7465B4FDEF6903C37AD5A05C19F4EB284BDD293B775F343504321062BBB1691CE249987BDB6ECB8FB752930F2D329B7AAFD52C26973317A2CB46F475
+H_OutputA = 7955CB84EED34219868BF08828BF4C808D0614860508B473B556D2A627B1D864
+DRBG_SeedB = BCEBBE5750032EF2FC8406479E9118B48CDA81D30BDAD22206F3D507DDF2B2B9
+H_OutputB = C157B9E08D4FE4C63CA106A1CC59FF404716BDFF4A29CFF3687F05929BB1AE40
+SharedKey = 9AA44A1CA5DA1B84CFDB09F9B2CE99A467F6941589C15603074F1986E2FD27A2
+
+DRBG_SeedA = 8318C7DF1C1F413A935069950AF52417F9C1E946D91B9337F24FABFE6AE6C1D70B58DA98C15C16A565F396266DD17CB4D0510A01047BBCAE155FADB26500B654
+H_OutputA = 255B7565F7DB4C9124B42DF326D23DD618D551520A49616545CC82171E2CB33F
+DRBG_SeedB = 2568317B7D2DFAEB3DDE5CA803AD5197393ED7BF9036F3D11C03D3B8B8E50B59
+H_OutputB = 8BCDA9EBD9E7A05B36BDB187BAE18D6BB9DA5BED19693CB0555F3B974E58621F
+SharedKey = 11CDD48583268455A6B85884E34773E69F3A6ED93D6006823F2B9573728E09C1
+
+DRBG_SeedA = 92125B3276635C6BDBF5BDBD65F066ACD4945A74E8197309C064B37E30306B2ACA4EBF8BA47F844DDDB0276084D992F68BD20BA670A4BDE9FBE9FEB9C1245363
+H_OutputA = B3ECC15ADEB1445184C9BD1AF8913CC33414E4C0485436DEE7D7082C62C4EDE4
+DRBG_SeedB = 1B03E736AFA3E2A261BA908C6F3E85304AB7C5FA5D47E787F1A259E7A16D2BCD
+H_OutputB = 0ECC65AAC28C87D1A3EE721E4FA12C02E90A0FDB490853ECC924442C8300461F
+SharedKey = FB24DC44BE2DCC4D73FA5B54D2098D9AD123F0371FD9AE2405084C82B50533BF
+
+DRBG_SeedA = 829D81E848C7C965E242A3E8ECA0CCBF46FDCED1C104457C3FA3CF45EBBCD4EE384519D671E1269410F8F6FBDDFAA50CCED5320F6B0D43385BAEF9CF5A4D45EB
+H_OutputA = EC4B31C3B6BD639BC4902143C11AC1831E958FFC02376C97D927C1F75067DEF3
+DRBG_SeedB = DA142A78026091CEBD96C36743B363322232B19C14FC9AFF45EC013D0C1D34E0
+H_OutputB = 888376B0CAFBA2946DB008949C7863723E326F13710BD2F423222414C4695E71
+SharedKey = 1D52AB9CF1581460F7305EAF3C14D377D0B42521BDB208E0E64A4718276F961C
+
+DRBG_SeedA = A90AB426900A2D149C3D5CB8C01D5803D76C57C924A9E22B667B9826EE45C417EBBB086F6E20AF9A409515111BFEA4F3E9552012B21C98357EC5DB986AADD8BD
+H_OutputA = DE6732DB4D6628CEE5063B6EA4A89CC0E572EB647F8792A2547FB3A9F1E6EFD6
+DRBG_SeedB = 7CEFB8E1E0DE9794699BC1F55B2DB125FC2C1B697DDDCDC0DBA6941AE52070D2
+H_OutputB = 0E536D6E8A8D768F72AA3C7A41103DAFE49AE7D728CF9BA80E6016171F8A3A83
+SharedKey = 10D4ED2B02351FEC0CA9BCE080920167170AD83E7ABDA7905D283EA40560AAD1
+
+DRBG_SeedA = 7C310741D98DEBE7552776355F7069E05A359C34E288902CEE26BC3BF165DE529C4702B1E83192200EF2AC8661BA7D7F8482E41505A9C987E3DFB5348987DF28
+H_OutputA = 622649667DCD09027EAEBA95426037AED220B5B790618F41102FEECD2E96A7C4
+DRBG_SeedB = FFAA130D3725B0E9FC85F45C2810402556FF2849673F36CBE3422E142D2545F6
+H_OutputB = 79AD6E4C6CD49BD492166275B3B41A82CCC2D8A3263AF7F1D4A1A99ADE5459F0
+SharedKey = FE4C76A24287334E5044D186A1F162C8B78480384315237A99BA0BF6D6AAA05B
+
+DRBG_SeedA = DBD70F15D762DA0D99B52E54B3B8B33B989E6697C7D7CCB780BD471A0A9CC392D4D42F2E734779824C051BEB451F3FDBA518FE074E2C4DF8E73BAC1D0CD6D21B
+H_OutputA = 983947B8D59E1D7F60B371164BDF1D808ECE88E907B2A5D8BFA0A775070C6CD9
+DRBG_SeedB = CC2B9810F977AD86576008F3E1489C517658235C59FD2A3ECF33C7E0073015C1
+H_OutputB = C68B0E644E35AA4AC8B2EDBBE5324A142F346C0AE6F3C60211F61C9FC44AD91A
+SharedKey = 5D8901603BAB18DEA29341542679FB50E888E3B7838A725A1A7C549BC2F196A5
+
+DRBG_SeedA = 2AB79A013DB383D77204FFC48FAA8B0B4C915500EA7DB8A56A65B807FC65D87A4DA0AF34911251625AE402E2C340496F0E816FE81F126AEA1672B48F57753756
+H_OutputA = 522E6D7E285ED8C23C7061490A319E056751F7B69428521E84C20232DCB81DE2
+DRBG_SeedB = 761F06C548F5EE31A665AB86AAA1FBF2F31FF68379CAA71209BBF56ACDB4E643
+H_OutputB = 0D74BC2B4F5018144A45F50954E190B376026D36F17548726FC9FBFFA0E61726
+SharedKey = 13B024F804EF919622CA3053FE25AA566E2CA59B4F039C641BE84201DDEB8B8B
+
+DRBG_SeedA = 513144CD4C0E1C2173ABF7AEC4839D746F85CBD6C5F52940E4463D8534E9F288A660791A3C554D49AAA42711E1CF4E9355D1510F6749D45625F898C8A6CC835A
+H_OutputA = B02C91D538D5525203815862400E72DB961C5616ECC02591FB8FC31A8638A140
+DRBG_SeedB = D14784CCE15521F4A3F69FD8E95345BF1124D36C93E08EE37A7BBA7318C4A0AA
+H_OutputB = A0FAE41A6FF2C1BE8865227D5FCF4488F5B4EEEC60555E1904895B1543744098
+SharedKey = A45D23F858C3D0C2B44EF76BC5B3B8ED78DAB3AA9D7B98FBE0A430381E3E05A9
+
+DRBG_SeedA = 77A0C06927C115DDF145430A81257E652C06FAB5F69EBD8391EBF9927BB061F294465A2756F7D4684C0708CCA90BA820364C1AD03E061D2DFE3184E20B19CFD3
+H_OutputA = C8AED8262BA5CA06C8FBE19164C4B3CC789709C0FA35C9649D91E7E7BDA04054
+DRBG_SeedB = 286335F635A380EDD0EA0105E85745EE8E38DAB3379AFBC6189554899838EE38
+H_OutputB = 9356996C46442EABD4057BA5E3B4523396302AF8BC8CCA78A6854A5A02B93949
+SharedKey = 52CFD009708CB43CB382260BB09C4E93F7A37252989ABD98853C0614AE589BFF
+
+DRBG_SeedA = 741C46653D33E7B3B33EB284C47A7F485E6E0A0C2E38FD29D5952875B9601F53FCCAB5E30BA77A581B9E36E22E0879FF377D8622B93E880DA0A08DA0C8B734E2
+H_OutputA = BEE8894D3BDC65DA125901DDADD0B48B6206BE7A864123E116AFAA4B8C6C8758
+DRBG_SeedB = BC445D40211291B0F5789CC2E9A72456B0EB0C87E904C1CCC3E44F2B4C6A7E62
+H_OutputB = F45F5B2645528096A53167730B6B62EA400123FD315D26ED08D7F07F5096FA68
+SharedKey = 356C8E465A1A7119D3A1C4154B02563038DF9106C2EBD5519F91E01927981CD2
+
+DRBG_SeedA = E9D74525829E0C5114A4A8791463F9C751B9F56412F85061B00092F9BCCE31FF689F19230BB32EB86D1EE933B2F6CC6438E6B15C2D47A8B35C17F4BA99E3CC2C
+H_OutputA = 88A16FDB00B35141A5F763378FDA51A4E1E64E65AE4599A8D984E876F4542780
+DRBG_SeedB = 399EF5D9689D145CE2C835F15DC7BCE2D759495D2CAD273537A2B49C3BFFE251
+H_OutputB = 3494A1DE5A02ECA5301CFD9EFA55784AD13C7EDDDA58A753ED10A1EE18E885F9
+SharedKey = 43B2E3F33DAD3D9A8FB8BFC044A3AF1FC43F1F1BC00FC291BC021BC950DFC5A6
+
+DRBG_SeedA = E2DA86CF7FE2DC3E7E751CF2204DB047CBD21E56D133BFE36F1E3310278FDC1B804E9A147273D538191BBC2217DC8F71347AD9F791CF53EF69755FD81F845A3F
+H_OutputA = E50B09339AF621EB85F4DBDD2F9ECDF721C5108412547A9333329E4F302CA84A
+DRBG_SeedB = D4715F93E11A45EF0D9D90F5D0CC3FE3E21899BEF98C7C35EBF955E0ED933D32
+H_OutputB = 4CB94281B9161DB337AA5D43D6ADDAE28CB52986A42C78426EAE482BACB5F0C4
+SharedKey = EFFF52D9D6AD62B812290BC570DA3B2C391E9B549FDE37EED79971743755790C
+
+DRBG_SeedA = 0B303D628A50C2BC79127581AD5DB86D0768E3931AB7BE9A95C20AA73E04CB7D3CB411977371DF48FE178623C085A21F81F5C6232FE1F4625BF94BC0DA6112C1
+H_OutputA = 3B405020E210807BA8E3539665CF422C8F96A00806AE2019ACF5F35E4B2FCD92
+DRBG_SeedB = E5EA934510925DD64C0FA40E2371EFA24E4C380C7A1EDAF944A5073C41E9448C
+H_OutputB = 1004469875B457B615BC9806C0E7F730D25C2815C7852203258DD385F9B0D0FB
+SharedKey = 8395DC4C7FF4A481AEE10510FF60BF00BD26E46CEE1FB18F606BC97FB3F6442E
+
+DRBG_SeedA = 5A9AAD611E4AA9E39B47C134795D95155EDC945FB69D070646FFF9D34688F413DFC51933D6C24BA869C402E199EE9305C264E2309AC02745AF7BBBCFD15750F3
+H_OutputA = 763E66D24596536B7AC199085ED6360BFB8D247CE247D222072EAB315CC9C523
+DRBG_SeedB = EC9E82EC39F8AF5EF54A1E14514282F39C2F2014A4C1EDD86D773CA6962EED2D
+H_OutputB = DBB8E00EC9DB510186CD9AD926A5FE2C933276C7FE360EEFC7E63FC9AB75AF53
+SharedKey = 3E7ECEA0F3EF19DEA8DBA04A485263F32E95551382B82B553F9D990D26A17CA3
+
+DRBG_SeedA = 67260A49B7F9CE6B497213A5612061481F99AB6B3E237C1DD2F942B0071B206C139B85F5D8CEF4F0364294AB6BE8CB90ACBCC8EA4C3F4411E05D568293892A2C
+H_OutputA = 49BA91701C51E7A33B890755685B75913521A921284858F28A66FFB381F1FF7F
+DRBG_SeedB = 2C8085B4DA0A5267170F834DA37198D3C64FA71E4DEE5370808880AC478AB17B
+H_OutputB = 4455784324559A61B153A58BE07A119220A4CE6870D9AA177F103B1379C2AF18
+SharedKey = 16A5CC618CAE699DC151058004A64C7B8F08D925B24FCC31282217D1252C93BC
+
+DRBG_SeedA = C543B1EA6C2A02098FB7C019D4500396ED47EC0D19FCD9C096EAC9ADFBDC7F7B65435CF9E77F58495C6C852B069CA5C762E26ECBE47073AD20810366F527F696
+H_OutputA = 9259DDD328A6A5D0DDFAA564190F9DEBDEB9DE2A38955449184EC489FCCE0E31
+DRBG_SeedB = 3E8A0A92614798510649838DF3F8C7B98F19790507F0FA8AE5966824419B4EE5
+H_OutputB = 1BE091B016E1F1944B2B48EA2BBDD07F6B7F065343D768CE604247D99848F55F
+SharedKey = 0C2A3E02E048B08E6E609C003DB7A374D5FC87D011B763F7DDA2461041E97797
+
+DRBG_SeedA = 9594488CB4FB25106445698F562F90EF659C8D9646AF7504F729FDBD59DCADF90C79C178146E7EEAB754B3AACAEB7C8A9A9898A193DA2A85791EAC01BA790144
+H_OutputA = E51E4F705840469F820AD32E803C8FB25C752E85C9DBFC600F6AC5A0EBA08BAF
+DRBG_SeedB = B1F9A6FDEA596BB4F5C290C0A4AB37309612CF6C94B16D4BBE290D0275CCFD2D
+H_OutputB = 2E5B9FC559273FD0657F7F36166ADBE21B59ECA30DB8CE2473932219810D4CB1
+SharedKey = 98AE8DEDC52170CA077AB9077FFD70ACA4990CD40EE358187054009058D935CD
+
+DRBG_SeedA = FFD96DAC749CD5E05CB0AA39618487BF6457F6A9BE8F4342385200533103F7F29E9B6ACA565DFBACB335B5FBC8EB297946B937EB8D84BD2AEB91C9BD098446C5
+H_OutputA = D1FADFBBCC7D34EEFB4EF90DA9F92A871748A44402422162698B1F2EF105D3BF
+DRBG_SeedB = EEC468A7B575E76EAB0D0B868C02EBB70570C9357B885A2689BB35D81F540961
+H_OutputB = C655658E173FEB8A899C8A953B5B8657481F494DD01BC77FCCAF4328C53FAF83
+SharedKey = 81239CF2714A3B049CCBA4C13EC5F65F3C5FA17C13FBA899B1BA142027A57802
+
+DRBG_SeedA = 7C2C134A5E89CB7019C5B39BBAB67048F4DFC509BEC94BB9012BCF2F99A9C72937EDEBE77FFFCD9D686F669438ED3013FF958DACCC492CABA2C1B5E2F32E3742
+H_OutputA = 3F002E58D1DBF719D221B405AFFAB36B413ED332B947A44C9237FD67D23169B7
+DRBG_SeedB = 6A9BE0836A98FB0C0E570469B46F753AA41E60A8B13A6CC3A044BCCE1337C55E
+H_OutputB = 9C6E9A81C4166E4CC35F30F1DC39391B0A98549BACCC5FD47271BEC46FAB5956
+SharedKey = CEDD48EE5394EF0CA73EB15DDCFFCE4287D9601EE2B862FD86359128383EEF12
+
+DRBG_SeedA = 4447C5EE40A0C68CCD3C3A0F3BA2F80A826E6ED2CCDA5DB325EBE7B4D9C0158928C286D0660509F1691BEC58AB37A33678CBB94BE1E9CD9DCC83550E8E605F65
+H_OutputA = EC5228F4EAEB8175AEE37BC1177157B47CCCC4FBC9A7756B5298A39566471820
+DRBG_SeedB = 08681516557453B95D85AF65ABD828530CFEFCCE93CCCD3B3D9EC2D77911896D
+H_OutputB = B1D81915B2B8D6EE7EAC1FB307E098C5B2CBF1C545E64BE7DD4B423697C6E149
+SharedKey = 6A845FA757A21364D58FF514D9F1E2FA216304299E749E14A2000D8E9E1714BC
+
+DRBG_SeedA = ECF9962CED33F2DBE24BF4B86AA2C448663A81235635F1C8E3A195195A0FD038CA0D9257B5B445F1638CB335C760762C2654EDB431017A5DCEB37DF0BD84F3D4
+H_OutputA = 91A0CF654A85F04EA33876A0BDDA183E838AE4A423A5CFF36F0FA83ED401BA93
+DRBG_SeedB = E1C54CA9E871B2E699FBDEB71AF2AFDA0971CBDB0DD4BA6EF2DA9ED06D9F30C3
+H_OutputB = 36C9132A40C23E7F5FD8394D7F30AF2CDC07B79A34E71E2AC051F2D45350E1F1
+SharedKey = A0A9C0073F82D0BC0B3145B0113FDCCC1F8A5DBFF786E521B94E4169CA64044F
+
+DRBG_SeedA = 413EB10388D27F997C0BE4099BC3F26CF5B6571A9BA697AFBB5DA313240038D627CD9C4823084376EBD4A5CE4DCC3C5A3FF698A50D9C20803D6E0B71A163F9E8
+H_OutputA = AA0C0BE046FB7D338E7A8313FD9BE2179EA6F227B11096B9DA71E70BF0813536
+DRBG_SeedB = 60A6AE29B22B1E63A510966D540BBB07F25A0988213B5206506CA6CE8AE47C80
+H_OutputB = C43E09DB3BAD6F7C13A5C9D3DF3874BC444558E5933E3D7C89ADA14E8C34D213
+SharedKey = 03520836702866BAA23444BADD5EE273D34F064BDD8CCD81D423BBC92E370BFA
+
+DRBG_SeedA = 1B8C374B2D8F37DC25DCD1A594BC937B1E1E6AA4C2ED68DD09BA9408ABB19F63DCBB1B6F1338B6A6EA4F1A60AF7ADD88E9FFAA974E33B12198E233A94C09D1EE
+H_OutputA = 57C48DA1C2B779ACE213582A79F3E6BE38F8FD3026998501B413B417F8FDCAFB
+DRBG_SeedB = 66A159E10B85A09FF9A2FD4742753EC7B0DEAB2E5D00FA8D539A6E473FD092F6
+H_OutputB = 9AC6D85CE34AAB9F76B41D7D0F5946DF31B838512E3738E8C1179382C884D167
+SharedKey = A7D241804E1EE22ACE5EC2175C754ED2FBEAA16BB2026CE0A45AC8464229FDB2
+
+DRBG_SeedA = 9F1F2DEDD323458627EB6E03D9408B35413B4A9E1981F533BEBF5786F010B33EC95EDB20B79A81E80EF6115E96DD54247D3B75F95B6298B02F0212492EB95C11
+H_OutputA = 11814F759E1815111D2AD132AAA0B66A08012C95234DC4B5B5C7616149A0B077
+DRBG_SeedB = 925D0C38FAE328C9D4682FB07DF4B7B2BE3342F53A5E06D8AEF5A7AB20E3AE52
+H_OutputB = 5B46A8E7AC1A24337E42B36106FD7B1E158D24F1F2AD7151B1CE3C1259EAB559
+SharedKey = 9DF126CE6BD623BC64C545C26145CC19422388CCB5BEE661DCA8565A86016435
+
+DRBG_SeedA = 838C6D05FA1ACC6F2F9C2847C240A2DBA83DA038FE0E6F1AE8ECF1BBAABFC8C96BE363B2D28A3336F9C0F2C880083AA19792A254B898E59B47C112EAE3AE556A
+H_OutputA = 0C49742E93248CFF21D73EE92BFBB9055E73EE2DB0D66323EB4FBCDE5287D474
+DRBG_SeedB = 81A919643371EC3FCFE85582B0325E3630215F8F94FD3AA3407759E6A063354A
+H_OutputB = A1EF90914D56F37E4E9EC38944C6BDDA6252354EF0A739E95EDF20D0B5FC9336
+SharedKey = AEEF4625FA71475E7836C8A55E54F357743936BC72C5CC32BFE3870D250733F2
+
+DRBG_SeedA = B24FD8A6B3DA46A8FAF7AA621CD969C7214477071144F88A74F39A9999B139E36C48E9590906207E8863F3228E20089B55D7E0F69BB7F6296A40E509DB6F9926
+H_OutputA = 3B3E484606CE2B29EE96202409E4DE2B8E97A3A6B73987F506324CC1CED15420
+DRBG_SeedB = 549EDFC757A16F588FB4427C609C2D1FDC1ED7DA64F00576D1C42FC888840B24
+H_OutputB = D107AC71DA31D545CFA4781BF706D14236236C759843C3A0E3022FDAC53D6903
+SharedKey = BB37B17FB66D1C0687B85D4C0CAD9E51CFAD69ADA2C8D913B6D07A14DD17778B
+
+DRBG_SeedA = 6E06E665786FD63898E1604A9B8BDD81AFACD73399E8F05875AEB5217F161AC786828409E10445EA9EF90E08AE9A9FAA654DFF00CCA26FBE2FD24CB3CB1379F5
+H_OutputA = 20B80F16A3441ACE6E9B63E69F2179C7F7144D1C53379EACDDCB24014B57FCA4
+DRBG_SeedB = 149946AC35F1224299D2627412317DF2915DD23587C05AB61B1A26FF2E7AC628
+H_OutputB = C49AED09E937832445B418A9AA68FB60CE1503202815D39DC421F7797434CE3C
+SharedKey = E1DAD46681A6BD563F4CE7EA22B4ECD9059780963ADE8123A0A22B2150F7B45B
+
+DRBG_SeedA = FCC60ED0BB94032B5CC4B12587421BFCBDCF23AC0E80833DD8C5A87561068DE056079ECF0CA6CE1E3FC7CB37C51D9A0EA90A51EC2EFE70C6F8D4DA7254A3F845
+H_OutputA = 25FF10EE1BE399B21EA5E663A5342A23A96C5E7BDADA9F1E4EE5176DA4B39764
+DRBG_SeedB = 5099AF290FCA3D6C1040E66D78C3A3EA81106C952129AF78968E0CE60C2E5B82
+H_OutputB = 1037D5A52DCCBEEB429D12CA90DC1CA4816E00940089D0C2D8F7DC21201A7313
+SharedKey = 9FBB13EF32CF525BD519EEACD0622D6A34A28EFF638F5FD210C2A2C95628CEA6
+
+DRBG_SeedA = DE4B3441819D47524FA4701D792EEC94562DA373EA973A647F63CD447F96822AB54055F8E47F3427DE8476336062D30D4D47DCAC954D50A2AA234CE1CE5DE77A
+H_OutputA = 08075B71CEDE2F3456A819EEEE0DAE673D9547986F359346200271D41B44CE17
+DRBG_SeedB = CED3E34BBD6302C1628ECDF6E1F2BA781C6C932DE5095F257F49EEC064531329
+H_OutputB = 94E32D704FDE33733EDAC6B6D0C08E4C5E755E394DD8BAAB28B28ADF98C6CF64
+SharedKey = 0B7E69B49D4742132E353F68A4449E6ECCDF4EA121FE67931A1C45ACCE360EED
+
+DRBG_SeedA = C5DFADC6056F7E1D91F1A7BF525B0833DB5227C421DF46FC9C0B681472195A6DC219DE86CDDD63187AE335581168FA41C9346595CC2B34505C9EE03754E0F4BB
+H_OutputA = 10785105E9B02F0721C8E7988A76C888460B55A93EF65E9269C49A82DE77E131
+DRBG_SeedB = 8BD6617679D11036B14546529630F810D1F9C0AF0FE4DC9F3E8195190FECE33C
+H_OutputB = 365D382D029CCC30FCE97C44EC2999DD1D76DB9F4A288A7A14A204855104F1F5
+SharedKey = D2B68C3CA9AF7A087CDF94A9BDD47130120FCCD24787B0C4B5ED96672502097F
+
+DRBG_SeedA = A33815C0B72E4C6764FC1B4C66A9FF0355DD15119C585A6B76FB16F8A9A9EDD979CB508F2C485F76CE144DCD9056B7F46A7C94420E5998E5B5BC1046F3521CD3
+H_OutputA = BD471BEF67BE0FFF6B0E8C5C0A231320E09A6B77BCB50F86EDCE6E9CBD35C21B
+DRBG_SeedB = 698CD1944F02393F153C7865BC5D340D6ABC7F90BC2C368880DFC851AD428780
+H_OutputB = 199FF6DBE627138A3751D0E8159400C1748647B9889C8C2AF909E322D7541AAE
+SharedKey = 68CD9FA0D5EB9C7D397763FECFF214DF2ADDCEBFD95D094325EF5D17A45C0959
+
+DRBG_SeedA = 4C445036E5F1C37DE77940B73E1EE0EBDCA13F3928191BCEAA66E900B3D62C019A9B5EE098D669C43E42FA1AB4C6C59BD7B99B03A9CC2D5A89E382D405988F9A
+H_OutputA = 4CA2124907458EFFCE2CD303B76D03E0B07ECE64703A63A9558F9537F7095CCD
+DRBG_SeedB = D30BEA847B969895C121F3F3813CB8050DC69143EC604090BCB3BF4FA76EBDD8
+H_OutputB = 3821D32400740FE00A361908E38BF4787CD16FF4CB0F78CCFD56C46C185063BA
+SharedKey = 4A197352FB73453D06F89A85F15F814C92B48F2A934E14444C12A934733705D1
+
+DRBG_SeedA = C5BA05D16B5BC3F2D6187A307DA3F91DEF01855656C593FAAC24E8091073F5A23E96D81ED0A9A04D123090EE1871C2CD87C50B84E3096DD8A0F6F567980A1ED4
+H_OutputA = 788E0540C46C14A2272567EAAFA39153E2EA53D068B6057CB346AB0B52BBA790
+DRBG_SeedB = F3CD3FF98280C50715084862C47B62FD223D6EF3B7CD21A97E06BF0D14499B98
+H_OutputB = 19A0C9D1FB76600C225E169DE3552EFFB311B5137AF903A4D12470D4A051F700
+SharedKey = 6BF55B06BD8402D90DC321DB5C274F33C44A3999FA2AE6C12BA4639D421B1A13
+
+DRBG_SeedA = 638CB690353A465C875B397767705B7DB95E3C20361192B8E603387743ACA8CA9D1928C3B243598B0DF2A1756ED1969C14BDBACBFEABA59FD138E9B7E21DE9C2
+H_OutputA = 668DB708C69D1B65A33265E26648E8EB5A656419D7BCDF67DAE5A94A8182B530
+DRBG_SeedB = F56DE1DF2A6E11C2AB111D9F2666C30D2D3B74D294531A4E514F191E4BE97172
+H_OutputB = FB291A4338295334291CB7B05F7D9117E71F59B40ABD1776842E46DAA8368206
+SharedKey = F6E8670F47EECAFA4FD03983324A3AFEE4F15F14C41DA406637EB7F51795EEE3
+
+DRBG_SeedA = 8B46583A951C444AB1E71D19EFD50E3AA4EFB5D7DEC4D618E5FE18D1B6AD77464F044F746231895F58BEA66886351CB5D77E6DF1EA890769E4337349833476E7
+H_OutputA = 82B4108C953AE3592E10A111EEF9D666F7275935D33E7289107D9734C67F10C8
+DRBG_SeedB = FB31F3607EE508A777CE31D5892EA1A20A8AA07BD4C6A30189225E42835E3F17
+H_OutputB = 50EA47F1A50CDBE915DB0D3FBAD823CA07C6A36701B7C80D587ACD1C0377595B
+SharedKey = B6D167985E198A8BC1E27791125FDBD049E403546D1EC3CC9CE2D7D51D517410
+
+DRBG_SeedA = 20CFA0FD3C321AF77C4B79984394AF98D245BFCCE09A946D719B3FFD558CEEEA6377C8CAFBB1CA1516CA57ECDC58BF5FDC5DF1307A91AD331BC47221E1CC7018
+H_OutputA = 3AC95273F478E16A16B78083AFF8F7BD0652FA93627612BA66040B4A3D2892BD
+DRBG_SeedB = F70A8BEFBF63991F80DDE8D46BCC36233D121483C381B70D86DC958C9B6BE077
+H_OutputB = E2CB7C9CC1568F84A818F37484A3EA63BA9B6CA4ED79DB0E05B01328C978056C
+SharedKey = 3C5F9B3E0D06767D00A67F16DDD0A1CA84B12A05462F69EC8F0C321749F19594
+
+DRBG_SeedA = 23EBEDA1083F30151C4FA2504F16CE1789F8BB84BB7B67BE0AEB10A9AD764B655EFDABE926A6272768EEEE912D0B62A19E1AE9C3A05A9E4F0B7CD05E02F5559E
+H_OutputA = D961032600AC50ABE44834AE49623EA58D0E2BCB0F0062ACD7F8803576062936
+DRBG_SeedB = 82EB3B107CE9671C5667D491C50A703B54C735DFEBB2FC0D1085BA395B29CFFE
+H_OutputB = 774B41CAF70AC759093D3AAE99A853F0C2265284B51E7CC0BD82CAE17A045F78
+SharedKey = 6AE1AA13F0736B90406A3863F29E7417F5DA329EF0B5C452B8F5778EA11BDF3E
+
+DRBG_SeedA = 0C003CC01FED61BC9D48E55AC1B5D56B8EA23AC5B4A817459D7FB6F4C9F773F9EDB133C5F7751413DAEBEEDE2824812C469A863FC3BCBE03E6B7949CCF2731F6
+H_OutputA = 7EF8CA6F7C9F90C71898B6617826945BDB0738B3E8799023AB8638688A05EB1A
+DRBG_SeedB = DDC3D8BAE3F4C857153AFD17A4526CD7DAD71E0BED4E375295278477FE2F25F0
+H_OutputB = 4C3E088712A2976A4FF4B1719470709B317FC6CCC033FC6A89295F72885640D6
+SharedKey = C50D43C0E78B7576BB566F0F229A991060D9A4BF12614DCA9ED13406CD3FCF83
+
+DRBG_SeedA = F277E6D794560D815262CD95BABAA390DDF03DE94B9BD89788304175BDDBC639DBAC22F8D1A1F6548C1EC2D3096F9218A930A6E854A0A5814B0DF176B9C35851
+H_OutputA = B34325DEE719043FCCE5845C3712835578A571006D2EC0F662D9DE081DA662BE
+DRBG_SeedB = 52191AFFE05CA1CAFFFE438374452A070E127B1D5D47BCEEFCB19433DD34CEC3
+H_OutputB = 5B70BE7028862C872F83C8B5D1BCDA8BACC55285E326B73BB060C251C3493761
+SharedKey = FC2937D5D6C44583AA4C567C47D1297885C6F4C57B2AA1F0E6301E9FB58C3990
+
+DRBG_SeedA = C3FEC37092717C2D2DFB0572AB7AB058F743BD6933F1269318021D5D0C9FA9BEF162611670CBC201D496FA5CFDC0D4B036049EB3DCFD916BA823375023534F36
+H_OutputA = 7D9425967A29C534EA8504BA9D2930E441A38FEEE99975D490B47B00B9D3D03F
+DRBG_SeedB = 00160E467902DDD9AB0F3AFE6A7B8ACB225C8B8D923426AF11B5B61E64C37654
+H_OutputB = F10C1E187FFC0E3D7B4693BAB0765D44502EFCC8B52B8D7C12044F91EEA3A376
+SharedKey = 45F44CCA70A5A5198F9E6358BC5FA847A8E5A2D73465F3078243EAB466D2E9BB
+
+DRBG_SeedA = FA74D507174580979077AAF4971A9C97153912F3CB37E3B49404189CDFA6CA38C461AC7631FC2479D001871DEACB128DD4E8D7FFD9A151D0EBEF47FCB43BD2AF
+H_OutputA = 10072A41811CA544930CCC27E6E91D578B9EFCEF6081F7EF72270D402EB4360C
+DRBG_SeedB = F0E96E82711A07D64D4234D5C964C838C0C1448FDEBCD8203397FB36D3679DE9
+H_OutputB = E905C6395CB94E661C6883C27292029076F5B4FE2F960B51C33CD42764BD7ED5
+SharedKey = BC2D56C9344C15B38151C372B895FDA34A570E8956F75F191327656954E0D787
+
+DRBG_SeedA = F65EA17751432A5DDDEEF6A96E373E4322E774D2F94C88C89E22489A76C3A808E1559385BAE7743E489DEEF253B5DE2E9C9BC7D1B12A338ADD4FCF81586696DB
+H_OutputA = 0E388DD962FA1CE81659C8B8A8F29B101500EE6D8C457E20433C991706074AEE
+DRBG_SeedB = 2D5A8E911FB66ABB5A8170E88A287F6DD0C1764B7B6E6AAF9EE6607ED87BA89C
+H_OutputB = 081C8E9B616082708ABE7FE5E24174B9C6254A19A2BF536DAB191D925745B4B1
+SharedKey = 2A0227AB048B8AF850BE15B3BE4D6D6E7EE2DF40EA5A633EF1688A460FE7FA30
+
+DRBG_SeedA = 73AF542785506B71A427555907D32D8B33B3262EADFEFB718EC3449C7EDD19DE6726C3DD759634C6F7856C43F1B5911836258545C55CBA7009120665911C906F
+H_OutputA = B7331464FC1EA4FC8A0DE0856BCF6151E487584C4CDA9433DAB083341461EE42
+DRBG_SeedB = 88B1152E8835A93C471DD3F67D8AA78B6D6A8DE1B3838D8C7E21396A3B2D7477
+H_OutputB = 1E0405A628A2E2B6B0BAA5B30A5C5555C5B144CC88695131EFBF3274935D164A
+SharedKey = 438F87FAF53FFA07DC5AC7F208E65DBA2D190B0D0D95F83A4C1271FD11260979
+
+DRBG_SeedA = 6924D4568DEB30B12D14D13696EDAB9F7911CB12A175F45F192AB5BADE3055033B3188B708131A14F9E9AD24F963E2B677F908CD2C1F6CD09251F48EFF9FFA4D
+H_OutputA = 2D891F321E23BEB8DE8827B5C74FC2AB5EC5591A468D5E2A6FC8CD1158CCDC03
+DRBG_SeedB = AFC1EE3EAEB28EBA31BA6553FE1BB0A3B37897C34C2F8F6E57904FAE490DC164
+H_OutputB = 9172B58B7CAC3E7361AC975B02AA98A334E8AE9422572716F2186CFBE4BFD25D
+SharedKey = 25C4915D281B5461FDEB7D85F3E5A690D3EC601A54DE16D8B342BC57A1C158C5
+
+DRBG_SeedA = E19D935E70922C9BFE88729BBBF42CE2C0A5B077E25438BDE8A552141467FDABB925EDD69B21550F713F30EF34DADC7AD1611DC400FBD309B8CC1B9FD4DE1200
+H_OutputA = 7969E588A919380640CA771409A182C96838E7982D77CA2B9A4D935370EF6E68
+DRBG_SeedB = 6CE8F477D60B4728528678B8AF9C24A08665F5B1B9B27F25FD3795FA4FDDFAB0
+H_OutputB = E9BCBB8548523E0C1B75C55649EB0167AD0ECC959C8A6AA14E3C5283737F4224
+SharedKey = AAB2AD51F35C7B7BD7720690F02529B445D13A49E94657A4D47D742E31D3967E
+
+DRBG_SeedA = FC647920DAE4FFDE09CD90D5830CB25D8197DFC9562209FD54DF78A9E5A86E579295654C0454B1F516746605631853637E4E9AA93A49463A324AA9F478C9CBD0
+H_OutputA = 5DD10978F515A71F041BDD451153A30F67C1731479A6E3CADFB11A5B5B4CBD96
+DRBG_SeedB = A64F0C9819B4464EDE845E60E768C29D1A14CE4868B43BF1FFB04715C1E108AE
+H_OutputB = A6B5DBAEEAA65260ECB8E549540DD1DDACF37C7D06D8D3C4C68F57B28D98EE2C
+SharedKey = 86177DD342A989AD71A11130F3DEE6193234FC6B2396D1966D1D7FC87455D191
+
+DRBG_SeedA = 2F1F238B7AB7E54946968B1F21B6B8A534B942863F164974BBBD731E69C069178DBCD802D16A94593002BD0F34C6DA88BF4FAA9A6B2828A1A0F2C43D50E530B0
+H_OutputA = 80E630E3A266E6EDBA29710B9CC062AABC8D636A5BF6805AD540B610133584D7
+DRBG_SeedB = 19DEAE977AEB364D723180EFE1D2ADB5AEE8AA6BFB611582A0773345B7A78A44
+H_OutputB = 8BC14B370888ABA7B013C3168C92E2516DAE962D35B3469639631A9810C95C49
+SharedKey = BA9BC831164356236C2B5BD178E7E2A63B0506D35D222DDAB8125F1CF8509D53
+
+DRBG_SeedA = 723F5A2C08623C9FF3E285028A2D600E05A8286280A05F0276681E1CC44E556EABDD7735DC09563D58085E9F9C6BF41622DFF41B2BC94F08125DE97200B141AF
+H_OutputA = CF62BD6339346C641264CAC69BAF8DB8BA9C242168AB9EA03CD95E991C9A5DAB
+DRBG_SeedB = 239425524F77FF7B1627AD7D214A7A4110E1C1DF0AB0FFF7F01C0CE9E7ED1984
+H_OutputB = A54983B7F376837E376EE91419E0D3C4FB332F3CBA0B19419BAF84A6E55AFF3C
+SharedKey = FD008009A77F718266AB307AF37A0EEE09DD12E6FADBD93D30C731D203549088
+
+DRBG_SeedA = 874ECCFC40E180E41344CF83B750EEF7203A235EED5CFB57577C7B80AB8A17966AC56F6ABDAECD2C716C5BEF9718D3CA246323243D85B121291228C9DB0B9BB5
+H_OutputA = 136031C5024FABF919079FCF4AE0FEEB5981903507C8AB6E76E6DCFC1A72FCA8
+DRBG_SeedB = 0E3A8BBCF9385B2C46DA01E643CB927FDB0751825895504D2B4FB0BF10928743
+H_OutputB = F0AAAB684F21C6BB7D5989468C0325552458B6F849D0F50F12D20016060869F9
+SharedKey = BEAA3C87777121037C204815D1B8755FA93FF5CF17E7D60A567FC56B3726B886
+
+DRBG_SeedA = 0346893D9893F2C886AB407042272ADF58C211817807E8EF977F5D755739EA99F47E91500361DD66DB339DAFAF2535DBD513D6BB5F1AC8F10C43C434788D0E4E
+H_OutputA = 1F1FF01D9A068F0C10C55FFE240EFE924BFB59075E54D1388F054442689BE50E
+DRBG_SeedB = AAB4ABFDF6DED2EADBF83C366466DFD838025F22CCDA2F8EB9EF5218BFC55FB8
+H_OutputB = 12B38A6EBCD4B429CAA881FD4834520D2338330D4A4DF7421E3326DA7ACF70D0
+SharedKey = 9916D05E2BDA82EEFC22AEBC943CA1E18945E7274F12EDC786B2051D1BF55399
+
+DRBG_SeedA = 9F74AED00D11B7AAAB42CFDFA633113224B4CC19DFA52DBD77BF30F327D990762A7B12E914CB26D47A4E1918ED21686BB684B568C38E267D29B87C4566B7D2A9
+H_OutputA = 03CA28D0AE036A788828FAFAF8A03BBE0548BEB6F379E287F1C28A835EAF35A3
+DRBG_SeedB = 3D711E2103680DAEAB54D16DD283E884A0D9960A161E38A47532DA04A73BE1CD
+H_OutputB = 2353ED9455FF2DE8AC8C16E4CAE6322E304F575E67519EA1EA6D145AB8419A7F
+SharedKey = 4D4007EAFC3035FC7682B9B09AB943AADC45A81935EDD2968776085D94C3B65C
+
+DRBG_SeedA = A4D3B9AAE955E0DE1FFBA1A75D3CB53C347270D1A8CC7ADCF719765D6177583F0E5FCDA245FBDECA0FB1E11C19CD64BA2E8031453A271F7BA49231F798494A75
+H_OutputA = E04DE9E0DD7C277AC8C3601CE1D15DF954D8D90015C0F28EEEF71EF894C6A5A3
+DRBG_SeedB = D352C300C9DBABD4F1B035CD28F891A7BD83E05199F40D4CE50D9705B7A63CC5
+H_OutputB = B9DD099EF0483CC9B7A1D31B454FF6E61CD84B94FB2FC310C47DBCCA7DC1B262
+SharedKey = FDEFC2590011541FBF1941A60D2FC838828F01F86687798B6A512A59DED8B0A1
+
+DRBG_SeedA = 5C0712995786EAF56A7EC1590E97BB9CEECE37E9C6874BCE357D2FD52006C31FE443DCE55238F18336B354ACE42C083E7C6A37E29B8FBE1742D65FE3FD41DF8B
+H_OutputA = ACED92A99EF758C668D1C5BAD9D48330D2F45AF39C9C275380F96AC05516C7CA
+DRBG_SeedB = 9804A08E08F77A600D65492D7D79DB23E63D20C5A8D325E812E4325C89F2B4DF
+H_OutputB = FC70FA74A55D9B18DE7D668149BFBF4274FD8B7FEF1D6D61F1AAE7BE1C54A1E3
+SharedKey = 10F2FFE569510E0C54B5241F37B085B48F1C927EABF1D11C6266446F963A1C1C
+
+DRBG_SeedA = C02A045DDBFD2B20290C02000DE6315012587A7B5E2EFFF164AC96890D60E570185AB3734BA236F3CB86CE7A28D981CE6D94548DA78F5B8B08AE65C2E9583F90
+H_OutputA = 6B3E57A943EEFF2FDCE406C9613942F2C8A685EE2D1884E881D3E07DCE73AD82
+DRBG_SeedB = 6712EB222D5B550FDC3A7328B0B3FB3E2AB45650F3E6CD4AE83DB89EE0EEEB2F
+H_OutputB = 147F7BCB5F6D2C0F767F210B0D737B633D1B58C3C89E146B5098B9ABDD2E0C8F
+SharedKey = 5C523AC6E963025014FCB36BE94D80A0E1356014BDD60F5B3A5F994359E05BE5
+
+DRBG_SeedA = C6AAF89B784FDE787AE0021F6B1ACBAC739E17B7C8C28458934E9AD06B04452249FCED0218E8D683360888CDD30E4AAF4C6944A0B6FC49830C870E5622F47F10
+H_OutputA = 28E73783A4DEBE3B492B746D87F2A28C8E432E2C2D160BAAD4FB9EF5D1DD3CBA
+DRBG_SeedB = CE53DE10705280CE9467F3AC743847435E18BC64481775719A6C2EDC296863B1
+H_OutputB = 0993743E1412F43F11705109957E127E797EA09CFDD62188BEAD80C7D0345F67
+SharedKey = 472F5C0CAE17085BB97BEA9255F1E13FEEDDACDD819E5710A1D5ACAB070A1868
+
+DRBG_SeedA = E706D0FDAB5A2E18810CE6241C6272BBD2A01D08D1A1B11CBEF6DD54C095EC8ACCDDBE4E647584935C38B4E5C1E47193CCCDE45C68EB3B8D406108953F8212D0
+H_OutputA = A4CC0F9291C2BB6E6CFB1755A46E65FDC6628974467ACC5E82EB3D29EBB4A3B2
+DRBG_SeedB = 2B57346E07BE206397FE953B880040629CB2F574D9FA31F7AAB9F1C46F9A2728
+H_OutputB = 8CD2FE4B94BFDBC49B347E2A239CE3E26852E8887BF79D17D236920170570A2B
+SharedKey = E1D91556C3E05AB3CA9D0168326A91596418EE0A3755C084661589271A9ED64A
+
+DRBG_SeedA = D794E00EAB92C2B84436187BDF14550DBADE0309656EC892AEEFCFDB5437B7212704A4AE3CAB0DF8E5B66F26914AB26EBF7EC8F99A5C7DDDE951832F227F5B3C
+H_OutputA = 376ADAA8B0738770688CBDD93B6126A8D4651A6589CBC355512F3285A6F857D1
+DRBG_SeedB = E7E4FF9363BD26E85ACC075DF75D9B880095199344E2D9A20A4CA1E455C89C9C
+H_OutputB = EA52EA3906C765BAF3C92F6C499A0A06586A974B8F7C4B78C2012D37EEB2E6CA
+SharedKey = 8F7C1AAE71C51BCB58C9D142245DC1F204916E98453944D6B41176431C6AF16A
+
+DRBG_SeedA = 787F0BCB1C1C4E3FAA637801312A60FFE84063A7C1755EF41A0A1FFADF3955E38B5DA7A1EB3E4AEEB8B0AF1F6952DB3E0220A2EAC7BCE28A10028340D8E63F67
+H_OutputA = 8E951C172EBDCAD2CB49F68415FF4037B973FD78BC3AF01DCFB828AE2E4ACB37
+DRBG_SeedB = 1C7283797EE1143FF38D51F28C53FDA90B809BC860A97E4461E453BAE4E15E64
+H_OutputB = 561AC58E5793DF77F4AA79060E7D20D69FAFB496464E6D1C56D2747C52CB4F60
+SharedKey = 1CA76D0A5864F7DE831BDB515ECEEAA695D01BA49ECFB6CB1EE98085BB098EE9
+
+DRBG_SeedA = C8D26CB920B4F48EB69D9AAD4350C6F1BE1510BF77D2AD37CA060EB059F9127BD09B4EBFE15674AAC52ECA99EBEAE91C515630600CB483E6DA88E1950ABD89C9
+H_OutputA = 465B9F7D9735EC4FA2A7890B37F0763ABAB085204EB6DC62B9B6B915394FF88D
+DRBG_SeedB = E1479109C05B657CF9E71C9330BD2B3221DBA2DAA4598715234E39B21F0AEA54
+H_OutputB = F3F3CDCBE9E94C57FD9A88367DC9D0F7F6AC16997FA2E3CC87E4F1B48DBD50E2
+SharedKey = BD0E6670E96D1B880A58A1CF9F59A652E142945645759A1095927AD69423E0D9
+
+DRBG_SeedA = 8BE32BDBD246F4E913E9033C87F0204135AF27618C81FB3D24705F12E125E434F931E1EFFA27BBD85D321A611B5B6D083964E12DC7F1B2DC0702F1CC083CAA5B
+H_OutputA = 81EA91A7B8EA045A7A17C67D529F995E4453805DB92E539EB8B066212F7EFDD1
+DRBG_SeedB = C7DB12F2D870935FFB1EAE95A8458C555BF42A54FDCD050F149415BA5CC56D91
+H_OutputB = EEC9ECC6E72DA3264FACA0A07E5F6CFF96C1CAEA9A6FAC3165995176B88949AC
+SharedKey = 40D46BBB90397B31AE6872C5956F7EE1013019A9B77FE4992D94C7C3943E5ECB
+
+DRBG_SeedA = 96BB44E712F75BFC8A058FE29CC8F4F268FD78CD5FC6A2C4876807EF599010FADBD3942848A4A2B02810F22E246B2EE7AE94AFA3661B55E8DE4014D6ECAB03B3
+H_OutputA = 6838567DAD1701BFD189C5F4DB5423BD822EFB8E4610F9718AC077F225822F2B
+DRBG_SeedB = BCFF93D9DC8473C82B2E995AD9DE816C0EE1065C23BB330A7EA26D0651DBFBFB
+H_OutputB = C13BC4DBC9E47004A510370ACA79BB2DEAC9FB428E825ED3FC60C22B48B726CA
+SharedKey = 655AFA5B24FAEA6FAB404B4D37D2E150A15A7BEACE3DC2A214C7B72063EF3CE7
+
+DRBG_SeedA = 3F34B7226BC084CAFB96115A33A530E8AD2D6B27F2B962389F8EBCB57331579E33311DB0BCEF25F54CBE0AF0090EB879CFE686C2012538783EEEAF365D553873
+H_OutputA = 70B2FBD43CEC40436A36859D4D1DFC78BB72821061B3317D082C54A029D9FE42
+DRBG_SeedB = E416D766BE92F5B44FC1FDDF4940DD4F3A317B959EE77EDC0BBE25271934DAE1
+H_OutputB = 5FA1786D3791360D794FAC510351EAB948BA4F5897A847FB3EB7E61ABACE38E4
+SharedKey = 038490238D02DE93FC1B4092FB721784BAED376987A3C5ACE6482321D2A015AE
+
+DRBG_SeedA = 8ABE32658462FD365B76D5B30D8732AEF70BF940A93F0930C2618D4B11F03084672A73033BAE780EE4C91B641780F81669FFFC353B926B792FF2D8DE34D06838
+H_OutputA = F73E47182A0DFFB6967D3DF675416E5E7CCA9BE03BA777ACC26ED5DFE85752CC
+DRBG_SeedB = A21FCF0853FEACC488EB65705BD333D6F2F03EC92ED7F36DFC29510BE2ED6AAE
+H_OutputB = DB11A40B64E88127FC07A6D239855E1E7EE688D53424C6B77E230988B137927F
+SharedKey = 221D2D42344ED71E577F9D98E550FB51C67B89119BC6DDF1C268D4B519779153
+
+DRBG_SeedA = 297D369EB131C02CFC4EBF5A9F3D4BB9C0B58D33675241D5225A485DDAAE8356F42A0A5A05FF3D1C431DF74B9512EF158BE0AA87C44F7C9DB648F6E575B150C1
+H_OutputA = F0A7BD695F1801858FED280455AEEC550078FB36F22B347B16D15CD0A384C742
+DRBG_SeedB = A76B09CDEC6DC92AD43F18FEBC91F2EE9D29C9200C215DB6EE809452602CD119
+H_OutputB = FD8F14EE5D1E6572B4D4759DFE6B4C446A888D7052B9E69A7DDF78DAE375F57D
+SharedKey = 51D7D053BFAF3CD3982822B542637B47B06940C25EF06D806344D17175030D2E
+
+DRBG_SeedA = 15FBAA61ABB5DA5BA546095DDCCAB71664F2B02FA01C089E73D9D3B79ADED30B3D3ABAC1DC193D42F837B33FFA661FCD581B46B6E26D728DBC699CF54A98CB8F
+H_OutputA = 435C0331D987F72FC02C5F958D40DB75F58D8BB107BE0C67CE9284D31A95E62C
+DRBG_SeedB = 9DDB4CADF45AC859DBF20D51A2CE134364C4D695CAD458612ED1A562D36ACDB7
+H_OutputB = DEF201B8E724F4D3BE9CAACCC0FBCA92BABFF59B18FFABF99124C471A029BB56
+SharedKey = F1CDA7048D20FBDD53095C12B8F591F3D073822506824BB0D2E73DD93DA998B1
+
+DRBG_SeedA = 90EB2980E3012B6610E05E2572C241E917E30DC2301F67E9E1DF29CC15FDDE842355004502D680CD588CAC0609E6F44F4ABF439A01715353E3C8D1A72C6D71FD
+H_OutputA = 12517BD694EB0B77A95B0E561E56911DEE0E5DD76967110E751692B4E9715EA3
+DRBG_SeedB = 734DE97DE8DA2E543D50BFC1D59D413B44588E414E2E38E418F9572D98B4D09F
+H_OutputB = 41BABC079D89CB17A540E3C30D6149F6F77B9952E3C166E4B02A2F93E3C57273
+SharedKey = 7C3B2B43EC67E99D75F443AA73774C6C6A2D914EC7527E43734BBA15757B5F09
+
+DRBG_SeedA = 272A96D4DB762D4558264AF7F0555DE822A94DD2434F39D489246ABB7C2B24E3A867E1C4F05E3B30DD5231580C38F74EA0E1FBE4F5F05EE06CAB377A31F05FFA
+H_OutputA = 94D0C9DAD247EB34D43C6D08E38AB1F7914705EDFD0F7BC014EEACDD74370A90
+DRBG_SeedB = 67733CFC6FDF8D271E589C18230F49510868A6BBF44077138A44B7301E6938A0
+H_OutputB = 81A48E92347B9A80EDAF310F2DCEC913E9898171BC92DF3DE444126981DE74AB
+SharedKey = 910725D0AECFB337445A6E21A096FD3BEFE82BAF2E8446E2A1C49C2290B70376
+
+DRBG_SeedA = F593E741A069107F7481D373D5BA4B179211A1A224CC75E4878DFBCDB03483BFB9A006B7BD921F7D403C9C4B8F92E03DA172A49987AC299736CBE3F6DF088582
+H_OutputA = D5229B32346CFB297E7B92B7909E138BEF37920637831D91A6691F558F5861F3
+DRBG_SeedB = 5BAA7971F3283352BF7EB3B4CB4C7CFC5AA69E29A619765015E704DE7D2F4302
+H_OutputB = 5611F8DFE2475176D399199E105ABE3EC83348F1720FE5B631E6AD8238AE70C0
+SharedKey = 9C2C5F82A80EABD340CCD97C027FBAB942F3563FD2CB27B542811679624E3CAD
+
+DRBG_SeedA = 68D5BADA83020AEBCCA6C65C5360D47EA16283718C4C9ABB715699A0BD94A1870D467C110F82127E8E1180560737F10F8973BC1E69E72F12335C8C5F124918A5
+H_OutputA = DD425005E02F2F8FA08F618364C34DFA7A2AB0AA55176A8CFB076D6F24D34F34
+DRBG_SeedB = C26D76EFAB72D54131F0FF2AF352B74E694C323D6804FA2EEB8B289E88E78C3C
+H_OutputB = B75D73C3CD8D53C18C2C3A1604F01C7D581333833C79E67959895DAA316EA7F4
+SharedKey = 6912ACF31754CCA6CB55FF2894DEB1FD8FA604A3E773E4A2D078E7817BA73970
+
+DRBG_SeedA = BCA4EBADF4A1ECBF5AE5403F3B239DD00C3399861C816345C9446C3307D79D2104BE9515F8A534E8CA33B995CFB8194AE5372FB1679D4473FB8628BA1C4B51CE
+H_OutputA = 8D63065011C53063871BF1149165DA8140BBC4EE33C1905A809AFA1D3ED61C53
+DRBG_SeedB = D7EB6C46B7641A6FE1F969C30D6B8821008D3192B4AD934EF7B27D22DEA69FEA
+H_OutputB = 3EB504B0481CF1168A54EF8D453BC1558518EAD2DA31CBB052058C77FD6C9D9C
+SharedKey = 3A5115A0A2A6FD41AD779B9395AFF3B1D75739EAB1E5375E964AC40B28B4E529
+
+DRBG_SeedA = 1B5BE663E55DA05FF2E7719852A49E4D4D851ED737BB4A9FE181776A3557CBD65CF2838A03DEDCF33A8EB72068B54457859A67EEBE5AC74DB3E3F0232ABE1212
+H_OutputA = C8AEEEB635E1209C7C5F373D99FABA7784119943B956A81A02FDA73248072838
+DRBG_SeedB = 6E4A1FAC64A8BF54BEC93EE10B7B9C0817111EBEB0886FEAC6EC17ABCF6C6029
+H_OutputB = B552EE381CF7ECF7BC93F62460ED06EB91D7F65976BE6F03EC48111A244D6214
+SharedKey = 2DDB13C32D9EEEEC5A2DAB7A2DCC395DFEBA05C5314B551CCA7DD3A72EB79572
+
+DRBG_SeedA = 7A5D1CF8F1435869FF14FB3E897EF263D1E1CDBB168FF72DF196AA5E77C07F875CDCA7C0C0A3041D95BB846D0474360206F10CF9A9AB0CA1DA5D7330A0259D50
+H_OutputA = 0B9CA453828F146A34A4B7C91E3C4C8D1469AE878E71AD425288C5C99652E250
+DRBG_SeedB = 3E496CF19D2DAF4F2F0D9F911E3BFD7464766ECFC3753762D0D7C1D957338450
+H_OutputB = 94BE5B3017CCE2C0E13BAEDF156A650CA887592E0A7479FE6DD979A5292531ED
+SharedKey = C972A4B90F18E8470C8617D19CABB200A65C91698A264F27029E314BB70A38E3
+
+DRBG_SeedA = 835010E134891A40E6D75AC16279F3827280770B169F366D99DFA7696EECA29C8CB58DBB2641DDC8895974CC28868E0029D68F667AAD1D34188263C463D76FD6
+H_OutputA = 07BF49FCFBEAF9B9A2920ED775C92E5EA6CEFFEE60636A8E7F38E751B474083E
+DRBG_SeedB = 68EDB7C2DC4445B92BA74742F0406E7CB1A4806107F15050D30EE02CB2445989
+H_OutputB = 0E1475480F296BF987E166DB38A11E8BD7A194F920BCCC33DA9A27065D6FE35B
+SharedKey = 002F3EE4A5345DDD2C11C3791DA211F329A4986887E13D1B9963AC0648B60EC2
+
+DRBG_SeedA = DA292914E6FB7E324C4757EBC2B1D807B1BA1CCCA91EADD36C9888ADD145DA537504CE9FDC76FBFB31FA939020F283ED1EAF8C965FA1D3D7C6361A255B02A9F5
+H_OutputA = 051D04509D94CC5FE8F2648092E9F083E236B66D101EDAB76AD7E71FDFE98B8D
+DRBG_SeedB = 976DFBCDA06024F40CE1343D82D861E8CD8255DE9F84E6B4E3CAD01FB33D420D
+H_OutputB = 761297D67505AB211BBD727705C485DDBEEBD4313C8A52BCFEE517F07EF14611
+SharedKey = 760909AF718258FDE571B44E32288ECBF0778EA2D0347A1F638A40E700EE7753
+
+DRBG_SeedA = D5AE7F13588D721BC7D2724738473EE7030A46C6605CB692ABC35C4FD048F5F82251AB1D533D915101812CC9D69BA9BFD6028A52E4A8CFFB52908D4F425520F5
+H_OutputA = 369EC2D3F2BAEA4C19299215C17887CE445DCDB8B6044FF14BD0AA4BCC69F632
+DRBG_SeedB = C59CE97323D686F1CB185704669AEFEF1621E2A527BF469194EACD4DE3273DE1
+H_OutputB = 29DEEFF2D08116AFF7C1D8BA4BE1D9E2938578C23F47D5C472B7135D21411855
+SharedKey = 72864802FD9708C20B2044DB9735FACD838C73ADF9CBD4BCEAF148A67C8E40CD
+
+DRBG_SeedA = 5B7D1FD23D05D670A05DD803ADE0FB9000D21A29892F401D27879EA8011240103D12B58D4E3735B8C33C68BDC1819FD95EBE94E61893B595CA7A31C0A3957B5B
+H_OutputA = 27D5FEA5F87F5714B6144FAA59FE288CB9A1AA637E7AAFB9DB6D2AE992A6451F
+DRBG_SeedB = 10F2300A6A9C62C85D8E767679BFA65225FDAFCB6156C3920F715198F13584AC
+H_OutputB = E5BBA5A8BEE67F8831879DA7B9CA21ADAD9E06684B563ABDA82D9C6387DBCA33
+SharedKey = 6D8B6C97261C723AEFFFAC3EA8208B0D5B8E8E6949C116F7E0E8357286E7E7E5
+
+DRBG_SeedA = 18E9785E8E02F7D6BD66279F2619E0F725519F15B959C4B7B208CE0968DC58ACBC8C4BC162EE9132E5C62182C7DCD5CCF2D0343F7544ECAEF1DE15A01AAEBD45
+H_OutputA = 1EC5E1CD132B2FABAEE12A31AF50AB36E15E87C8874F7642E574DCF8717A14EF
+DRBG_SeedB = 6C3BF28F26369F258D6674F236ED298D923E145148178885EB33FDF82F238DD2
+H_OutputB = 9CC4F3BFD36FE88546AA47F1E30375104E407D39B415FDE9230917B0DC301AB1
+SharedKey = 38373C9153956A644995725CB3F2999238397C3E4F7B02118AF05ECECFEA6275
+
+DRBG_SeedA = 05CC37563645401CC9D9F408C05E03228038240AE745BF6B0DB2C742CA004649DE92FA3AD4F4D51CEB1CA7D83D064F3D2F720B49AC8C4034278BA8C847CBFD18
+H_OutputA = F43AEFB008F706D0BD3EBFB03EAFDD8CC3B988727D32CEAF60FAF24421DDB130
+DRBG_SeedB = A313B0B4C58C162DDF2396D7FE122F573ACDF351471FB53ED150E2B2B0B763A3
+H_OutputB = 2C59D9F76C624A675493C0D63D0C213E10F6B7EF3EFA282BDEF51BBB5322D923
+SharedKey = 88F725E2FF9C2B45438D65A5BEBC78DD53160034FDECFA13907E3B382F85E7F5
+
+DRBG_SeedA = 7CAC87BF8DB77912E35871981D2330664587064A446D1F80F8C2B7A5CB65554CD45983498052BE2E9381767764A839A69806BEC94B1673F3B41F262C0AA6E7BA
+H_OutputA = F589AECE54F7B8586A85EEC88E4E83B3E6FC7FDDE4E64E25BF24A7AF277EC0FA
+DRBG_SeedB = 392580BED820DD30D348875E9A42747355D3F3DC712D011104928A096DB68BD9
+H_OutputB = E4BD88455FF623E1D2AD86F5D09F43ED7D47C95E93512471031A8F88990DF3D8
+SharedKey = 6CBD7AC87C8896AFFDC133257FAA56C3D3644DAD0E7FE3FE312A4D4B91CB16A0
+
+DRBG_SeedA = B5BE4CB277E276187F5B0540074ED8B0BCFAECA22A0243DB65579775F9FBAA636C915412A8EE4805A41C587B502D7E01B4B36314EE0B9CACEB64CD6D8FAA1B8C
+H_OutputA = 1BC25D015B9290A0C2950F5651CA5E777BA900133469275C9978431E2DC1F759
+DRBG_SeedB = 80662CF4F0DD3C08C891BED64E49A61B93DF929096EB5CB5F3F8E80EE2CC9DD0
+H_OutputB = BB6023DA47AB6D6744D02805EA3C7998E2DCD9A1A5AE99D5D84CBD78968F610C
+SharedKey = 892CF8FC4EB565A64D1BBE77FF4E73D27F670F204DB1A6139E0D7808BAF783E1
+
+DRBG_SeedA = C8ACC5FE272616734101CC8AF0F1EB72DC4A128EAC30F67092BB988DDEF0047BD0276E607E4CFEAE17204B94DE29FA584803BB4A2A86ABBB80B2C5FA5C9859DF
+H_OutputA = 625ACB1BA64FBF7458E45D3B108812335FD32F9814F27BCC6C55827911D89AE5
+DRBG_SeedB = 38EDC0B4AAE41EFF559BAB5108AA0B6E8D61E019C4E311F1C449E5B94FAE2B1A
+H_OutputB = A6882197E771807CC30684741593F1E19E96EB9A48303F1C5D3054ED530B565B
+SharedKey = C70DEE2E269210D124934CD26E3DD734EE38535EDAE70CD455C944F1EC71A125
+
+DRBG_SeedA = 36965FEEA8B3B34D76578D53F3E98A41402A69786AAACE35BE064998CCA3C8F0612C8CAA57061ABF7333556FCCE12E0A50B49A46D1D123907B18D3DC13FC063C
+H_OutputA = 4F26C977D80131CA44A52F7EC2226968FAA4849C4B927EDC1D6AE361ED31182F
+DRBG_SeedB = 6B1A768668A8E0382ED925E6C605324E47940A7BF101295CFED44FCD2B0CED92
+H_OutputB = A88C38615606FAE157F9A625497E5922AED29D51E330FE99B7F217D8AE6AB837
+SharedKey = 0AE535EBBFDEC214F58735BB923CE3A3C63C3C15794A9709299A4CDE6945FA5D
+
+DRBG_SeedA = 3E9FA8B3C22B64A808EBF50169F703B8E6D7DDC661B6F3733E8AB294676D3FDF25DBDE7718145F3E7E75374D9F711D6E22B33BAE0C2273719E1C0DDBB5DCC437
+H_OutputA = B0FE122397A85965B6B28F070632112BC44285A3C7EDD0E4526E8658ECE3E0D3
+DRBG_SeedB = 1E5282CE55B1AD42C8C33B303E9BBE2AF81E40EAC6D59AE49C2AFA1CCBDA564A
+H_OutputB = EECD4DCA55D302E8DEDC8B1DFEE6C913AE4FF64A28F73C7A4F5C3C56441DC459
+SharedKey = 0C043E2E74734EAB043B9131D218FB07D92EC78FBEEAC40C0E02D1BCFB73A1A3
+
+DRBG_SeedA = 7A88A2B8999EE44728FB17013650F883D31974404BFE166426D0956C10C6DFFA906D4A0F7EAF7A79D413992BDCC759D30EE8ACE9939237BD306704A1E6ED457A
+H_OutputA = 222F889B0A2A552E84A1CB7679C31496973BDB3A1B6A28DF7648A392919BB3BF
+DRBG_SeedB = BBF624D6D17CA3FF0E052AA215030856A8AFEE89719DC8824970CFFCC0C9B0ED
+H_OutputB = 79D70AA3D964F823112A863A3DBE82A3AAB4C0F622F28161E6E182AFEA3EE826
+SharedKey = 6285907A6535CFFCA588C7E92C6F7D9BDD38C22296E615BA120356E080A135B8
+
+DRBG_SeedA = 00F500A386F8B6886DE58C547ACD33C6144C39E63C7400CA880468BF979DFB5A40385665F01DCA64EAFA0602367403570DA8B572AE774C4CB4857FABA3256C77
+H_OutputA = 76A84824776348B219710BB67EE76FBD30125DDE27D200C1A514EC5A9FEB8FF5
+DRBG_SeedB = CDF63C4D38CAE0F542FD6CEA7CE1C3A122F65FBDADF8D9636871D6E0D1AF1D26
+H_OutputB = 4A0328EA309196E345C64B231163F7CE164C6F13180DE7F5FC60C9207F7961E4
+SharedKey = EA76D9412512602286F0510F5BC6DD8325AB24513E80ADF47F2A5214A433A446
+
+DRBG_SeedA = DCA53CC19BC246FBC2DDD0C0B294813073FDC259D579C87511296DF7A9B13C7AD07C55CD4649271E2D8FB0736F5A2301238A65BF49D3D0D78AC3225A80A8E941
+H_OutputA = DB5223D3D357704C7C9814B2417298730A7F4365ABAF9FCA1F49B3F671DACC46
+DRBG_SeedB = 88363F9559FB4C7DD3E67D5199595F437263D673666E4BB93B6B93F0A1A9F6A1
+H_OutputB = 6DD2FB55C0CBC352C15678EACE3B7F43F4C54A99728992C71743A4CBCF6D338E
+SharedKey = F662028F7CF7F1B6A848A17D2F5CEA02AF5489FF4AB39767861149DECD3904FD
+
+DRBG_SeedA = 2C030C496804489E92EFDAB1ACE22FC186B3240BCB0105CC53821B6698C010FF80D22E25AEC21D104ECBA32D88FD2DE2E2F3722F38D9DF73A73B3B224D980B75
+H_OutputA = 3F299EA0D08317048FACA1567415FF77E9E3623969BD2526CFF49DF229711040
+DRBG_SeedB = 7D5F1C9C6C8E6025C920CCB895E62AE654438D2E6408AFA4F842DEC76F380634
+H_OutputB = 69459D366B5A745DE37D9F9DEF81EC44F59CC97D785A71AF6AA0DCBF1B03E09A
+SharedKey = 1935A39FE2C8C944D63E13B606F7DC5879C1F3A97CEED60B5EBBABF5FE1B45D8
+
+DRBG_SeedA = 394AB61228A70EF86744669170CBFC3FD321DAF8754280163C80AF8342A84D763F35BACED70D7D5098FD2D7EDC1DAC268A7719D42577D62D17552E584BECC245
+H_OutputA = 9B2955BA22684CDFBF9B66FCF15AFF0770026E5D15C972365B957B26CCB5745D
+DRBG_SeedB = BB94853AC590B2BA471532132EE568A8D3817DCBD70092E6FE53E5DFE8F24573
+H_OutputB = 6E9A1F5D38C550E423B7FCF9ABBB608FC4CC3FCD5E04D65D794DC265E1F0494B
+SharedKey = 3C14EA7E3DA9D9CD972F65366DFB794A5386F5544F05744C6D38828EF532965E
+
+DRBG_SeedA = F0A03EAD674217C4ED28915C5F9CE33CF21080F404B98BE3C844380DFC7DE89C17D5DC25FE1BA309ACB3CDBF74CFF692DC1B04AC862862F8ABEFE4586477B941
+H_OutputA = 12593DEE32B5859363F582FD90ABE545CD9CD297D3A6C7E611E0C3F064345860
+DRBG_SeedB = 0FF78447E79556B399017320D7B53FBD00D4BCDBFF49DF9E652F0FC017ED1421
+H_OutputB = FE32498317F50F2356F8DA5850501B376236FBB1BB33989FC921B6A94A3F1695
+SharedKey = 28CBACAECEE6C184DB2A61BA8C27BC3BDDB124E4A1F12FA004C6B480D4A125D7
+
+DRBG_SeedA = BB47E214BF68F9739F5681038BFB560B8EB5D04B283F129136D30E44EF89EC87E6D7DC09FCA6F1757F2346E6186478EECA8D78690EB1FE3907E18B2ABD391588
+H_OutputA = BD31AC26BC492033A9A10FFB16AA3D1F301CD90477F8E8D1F83E062E27DC8C20
+DRBG_SeedB = B07BD1C6FB25747D3AC9C72941A1D780A1B0ACE421F66A6836DE0A11AEF5BC01
+H_OutputB = 95253C33789FA0C6E501DFB4AC00508337D8560C0724AA288C5794635D5D43E6
+SharedKey = 23B7D65FC8430509C814F2E1D71277B456C11219A8C3FB59D8ECFA6A6BF7A7A1
+
+DRBG_SeedA = E92ED9697E1E494C31F82239ADBED45229A7766D989055AF2EF6C1B2782C752C6573DFA4B70505CD53D55F1215975D961889985298717F3D0B1C0EAC1CD4F7B3
+H_OutputA = 2ED1B24E0DDD6DD2AB84C02E19BF929A3D5706CB099A4F95A832D80449B8F261
+DRBG_SeedB = 177A51F41BF3C3C01A4CF4D75DED1DC3FCD7F13C886E9B7A2FB65A1C0AA12C7A
+H_OutputB = 7826C31C1044DF37092BA4C884A006DD6532DDD15B978DD215918A1714E82751
+SharedKey = 8972DED5E0A55F5399037797F1BF027B39548734919089E0F6EACB3ABD2229EA
+
+DRBG_SeedA = 06E501D431CE7F34B2B303E9FACEB24582CBABB4D04D716D20B8F428BE078C9D906D62F952DA2581CC68B472BB22C2CB68FAAD81376F8EDD09D3411CCE294B88
+H_OutputA = EBE87ACF585353451D2E701D5F8BB9A8F99EE1084F065B0D24708E3577843988
+DRBG_SeedB = 93D9EDF19F9A2EC5182CDE41ADDFD731D7606E4DD6BF7B7458B98AB944B0CA77
+H_OutputB = 08CBCA979D5B42D65885426AC49DA8B853625193B7B0F0AC27FF1DF86D8B34DA
+SharedKey = 11980D2422D2CD334961B020F6D1B025CC72056D1081905224DF391CB2821AF1
+
+DRBG_SeedA = 60EFB290CA3C4251E1092F38DEC8C9A1AA12430BF0ED5091C4B184877EBB8095383F60F32E1D2F8440486CCD93FD7098C5ABA74AABA1EE44343259D5DBB49646
+H_OutputA = B19AD952956D008B03975EAC6BB714937FBAF9791248ED914E74A275530093EF
+DRBG_SeedB = ED6B31EC77B938F5180D4F79DD68EC2417F81EA46F49D3D858872F71EF5F0F2D
+H_OutputB = 841F4D3BC25FBEDC8DC57761D98EEBBF9714BB5C28AE464841EDF0130E1869A4
+SharedKey = 9B8718428BF159FB57C571C512D3FAFE30F91A7A1DF493979CD8BDBA24798C9B
+
+DRBG_SeedA = 0BF3B3C4BE4C987A8B6A326D1CA936098B0AA5640BD02CD41E306CB92A8222F7613223FB6A56016D56AE849DE8BB8A23D572E36417460DF4FE89CC49C060C046
+H_OutputA = 13CDE2D78CF98564C5FEEAE0F01E8DCC33EA8E250D3C29DC15B433F112E81D16
+DRBG_SeedB = DD5E118B79A64F6592E0D2EDE82248A5BCD0CBF1592FD2E122841728E4840DE9
+H_OutputB = F617EBC72F62E396D7133A8CCC1E8FFFE0A1994849DB7A7BDA0403B6EBBA911B
+SharedKey = F1774C20A494810F941F2FCE6064DB5DBF09BBC03DB58339347480157AC3AC01
+
+DRBG_SeedA = 9048B8E8AE71C37FBBCA27528A994E352010E1FFBB6F1B366ECDF6B952D6D834A366EC07BF49F3885A83F915D377BDF01E1A955F1A7A183AC1145D2A7173C826
+H_OutputA = 2FD465B37E2C068479C3BC7DE52C6D0EF05AF18F07B1E166C449957392738A47
+DRBG_SeedB = FEE6DCB717DAE2EE30D69AC7F0BCB47B4A9734148C75039E6A806118FDD0E532
+H_OutputB = 503037306F6E4CB5BFFF093DA9B18C2B5A618F129AB21214EE843D4453CAA211
+SharedKey = EF2AD9A800555B3FB2C0F01313FF0B5497CEA673B9259E4EA73A873E60532634
+
+DRBG_SeedA = 22ECBDEC338D9E5EC300C221142D6B23B0B3ACD46E533AF3227E243E25D4B871AD705B6148ACA9BE474ED35011DD0436281F90D255D12F563786E69922D38BEE
+H_OutputA = 11AD9D610BA252AE71D9A9386C9AE68B2AF06DE16359A1C500FAC80A7CB8B2DC
+DRBG_SeedB = 78124A96D8443B643163300EA840F8ABE1ED40E0CF19853D74D8E8404B014DC5
+H_OutputB = CE831CE3E593EFCAAD0E99242E975712667287AC418C919BCF80529DD653833E
+SharedKey = 11DCD99A526196ABD9DDE88A6FCB44997FFF2FED645868C9B91AA5644672DE0E
+
+DRBG_SeedA = F1687CC2F072BA2BE271E3E10A57AD6761F41A9F77474F36D9710722D281277A17FD73D98728F747F4FF5FACBF15AE89E9D210A8F97ED2A76B591A2054ACD0C5
+H_OutputA = 70D5E7D3EAFA5956025B31280610D1C66CD7336DC29B0B0797F2246CBCC35BC9
+DRBG_SeedB = 6EF20CE9E47BB8435273C9BE5D376CE276461018C9B6E3F5E1BC4E20F3E84666
+H_OutputB = 56D52D3D22330DFA9BBF3B85926246ED66A84875607333084116FD8F1E3CD772
+SharedKey = F83115185CE9DE2A4BD6020DCC5A2ED5281794E2F15D50A236309B0A1A29636B
+
+DRBG_SeedA = F7380E7F1314C549B173ABFC30B47168E1549B392500E2838EFF4F69602E9CD16096B999852E19D9770D9112A2CD4EDA9370E85E7C25BD56B44FB0231465F71B
+H_OutputA = A8968BFF61C7497C1D231B788AC9D7C2F0B8D3C26B3EBD80E75EC26F30A63992
+DRBG_SeedB = 786AF4BFF2F17771C0412D79CA40EC043C54F70103B2030C80704E1DC0A5A9B4
+H_OutputB = 3124E214A46A1F228E15A1ACCD2768F3D9F6AE88835CD1F7E5DDEBB14A0C669E
+SharedKey = 7FE98AD4B27C92291717DB6C2DD5C92C2A11AC9E2E9CDF07FA4169E582B86B5E
+
+DRBG_SeedA = 9DC7D8C1441737A3A0EB3E9DFCFFBD7B7D0BD21C28D6BC7110BF80BAF2FABAD38A469FE16A414F694C3F300D0559A08BA7088362C064D38D2E49D4343E017F0F
+H_OutputA = 0795F5A160251CEBB3D5439101759DF167E3B0C60BB89D4C866E25072EE8EA71
+DRBG_SeedB = 66CB1762F3E2FC4EAC26A7085208F461A48E5CC937B26E09A2AF1F579417C021
+H_OutputB = 82DE176FD462776F91B3C3E65E89A538E16B807576DD3921AEDA105AACDCD187
+SharedKey = DE11247582125150CA19EFFB450EDF730E587E68CDF8751015650783E1E28415
+
+DRBG_SeedA = 06F6EF29CFBB196944EAC5FA594845050B7CC728F495A1D5948568A05587D12ADD54D4196AB65FB74829CADFBEDB429A964FD51A3119C4F09DBE729856999CB2
+H_OutputA = F0235FD624AB74528BB9E07DF8F01969F9378870F77C273971F93EB13CD801AB
+DRBG_SeedB = C41153395D14C5FFD559C433792870805DA8ADBC5868FED3BC21ABC53AC5B37C
+H_OutputB = 3BEBF96402248CE51272836BE0CAEA9E32F8B470E1E13ABF858B2FE9BB6087ED
+SharedKey = 6B1513C772D560BD1625F9C0B2FA7ADFCC3C1A6EFA7A72B3EAA4D51F19164BEA
+
+DRBG_SeedA = 10C777D8504FA6B2C24FFD7179CAC0A40E799F9C4E8BE63E80003E8C03531E3BB55798A11C3DF5BD5D1E4F7886CE0C740212D395483487AE97A6D9245BAFBDB3
+H_OutputA = 4B3853826161A2CAF87F8FC6751B7D90FE47F6FAAB65B767B2F952420F004B58
+DRBG_SeedB = 02D6803B54CB9C2735250BC5DBC7E62224BF3C9A215F96DB823CCE11DD92A266
+H_OutputB = E69EF4D1A787A9B41F5715EDDF5989F9BEE9FFF5C40822E2D898571B9CB25EB5
+SharedKey = 939EF43869DDF8920B781FFE5EF139DCA03CCBFD54250F26E24E05B768A5B111
+
+DRBG_SeedA = 4FA41B7011E4E0AB7498B5A29E21E7A9BB35583BA478E38886EB5DC6796915AB0CD956FD4C5992F77EEFE9042FF7DB6B57C7E81279FA70093FC851AD6E675715
+H_OutputA = 21FE88B37A32B2CF60E78420331DD9BE1CBDC250869298859ED24F4783082442
+DRBG_SeedB = 45FCD607F00BB02E87CBFC8B9B4474483CF0A3007B7EF59B0D968F9BEF455000
+H_OutputB = 4A2F7E33A7FCF6558D7C8FA13D0F494A3F59EEA684BE48D3B24AB44E838D2368
+SharedKey = DCB8D0A17291BBBA73A7B0A0F4681224A3AA2F61D795E8D338ECA5200E73DD42
+
+DRBG_SeedA = 9BFA416EEF85F26E636380968C235024FA4AF88352806EB6B3A72C09B6EC00BA936A054DD3B7AA2E37606A6BB40DB21525AEFBDA20DD6EC9F982F51E2DCE0387
+H_OutputA = F0983DDC2A10660B0AC01EE0A07AEC21DFEC8947EAC8CC9335B66CB7363339E3
+DRBG_SeedB = DF4B5300D2B8A317F8EE10CC76FD4EC128BC914B59C9AF2EB52F6ED0AD1099A7
+H_OutputB = 1D048AC0BB22394F6234C2F28789D8C9057903DB49A0334B6E6270FADBF1FBF5
+SharedKey = 17CE645471274CD38A31B953B8DF608F68174ED4CAAD8DC4B20F07DF47AC108C
+
+DRBG_SeedA = 919FF45694F94F4695F3D86E74122D9A3F9E0400C5381EA9E8F1E093F41756317B7E4CCA4B36E33ACF4FE8C511C581256393850C6AED7C355DD9754F4EA6FE49
+H_OutputA = 641B234E7A734F3B27050D1CC327808168BF85050DB75FA06CFF42FC7E1A0F1D
+DRBG_SeedB = B6980952D07552FCDE47F708816193E791ACD9E2B172014B8C84F3FCEB52325F
+H_OutputB = B6349A68DFEB2EAC9472088298BD365930210B808AE94FD9ACC06C148C31530E
+SharedKey = 67E16739A1205AF0BB82571568503E1DE7609A48A143C85AE92E36328C12F8C0
+
+DRBG_SeedA = 269BAE1068029E1F0A0742F3890CE78E62E96BBD7E2EF5FD21B5E7AE38F504E430A78AEEBE45C2C73C02716F8E86FDFC18683DF0F239C79E1D6354A45CFE197B
+H_OutputA = B8AAC2516E2FC3E8B5CCAA2810BD7F4C8198C71D7BD7C21C4ED8B29121422E9A
+DRBG_SeedB = 821C15A35AF09BA7896CA776D25C0486AC25498608658C5D567B10713955CE7C
+H_OutputB = 8D4C591AF5B65F5D824955A108F52DD4327D9B7E30D74F782C8CC4B31839EF51
+SharedKey = 72CEB1BEA0E15CA29C260987647FC8AEA1EEE0633A60A478BB3D3C5D126BC317
+
+DRBG_SeedA = 4A243A0E9E1F93EDFB856628DB25C11B5693553D5ECB2A18EF548DB064A4D9DA25B6198976D265B2870F56E9AE3DDD9FF4E5ECEB89DA0053347C023AF307DC9A
+H_OutputA = AE23E78D69E52ECEE0AF58706C391B09BBF3AB600E2E43C6AD0C28B8E8767E26
+DRBG_SeedB = 828BCB5DB6E33A7250D957FF5BA30010838A273B23B4C9E73249E2DE1CF66814
+H_OutputB = ADF6797135DA975EF786BD203277AFA2AF2158947CF923F3ECA5D34C9BE3EAE6
+SharedKey = 58C1F862B7DFEFB4BD0775091B1A2A547CC5310213E693B6D0C6E297107FB93B
+
+DRBG_SeedA = 7404BE01A8C2C98800E41D4AF14B76AA5FB1518379B3472F8A981A3026ACD9247331415D6B64DEAE8C08F0975C217D70ABF7DAFAE2D706B7B3B59D56A6557AC9
+H_OutputA = EDEF1BF01C4D03981F697B51F46F88268D25E5CDCC523E774B51B9159F9F84F4
+DRBG_SeedB = 7E5884116F61983CE6A33D9F3ACE6529619E2FCC30EE24C6552F54B68BABE5A3
+H_OutputB = 10B1A471EE1041F46C2FDA002F9F4A3AB27853B135CE8A46A9FDDE5618A15F6D
+SharedKey = 2C289887D8DBFD89AFBAB3B46E63537F38BDAD53E02B34005C499843CB99E5D6
+
+DRBG_SeedA = 5369A0458B8A145AAB098A008B58AD5E1DB6FBADE9AE7AA8EC8BE0111DAE259173F6AA03BC4878002458905ABAC974640DB8AA5E8C6EB19D387C35CA7A01D9F8
+H_OutputA = E5CF04069F5ADE73F6E87AB16D32F110C55DE820826A1BE6EB60A1CFE13F952F
+DRBG_SeedB = 87DF21B96891F0C1DB2340D6E310F06D78A946E767372E31AFEC6C53829A7594
+H_OutputB = BB78DAF2C3B2201724EBA8A344B880F56F2D9FFC83FAE3F311BAAC33CBCB9FB2
+SharedKey = FC1F97B7AE8B989599BEB74737F69E31994E9638DBD1D4824C076C23F79E84D7
+
+DRBG_SeedA = 19B8F637086F97ED0358485FF9BD30BA75305A463B0F9B6070086641829633C88485CB2458E9CE12734C09ECAE86E53BACA04CBA2D3EF2C7DE288605C4951D3A
+H_OutputA = 11F97D8E4536DE0CF3843E036BB1DE931D35DA71922B404A184B690AF1646FD5
+DRBG_SeedB = C6F5F7E5CCC814CDBD0E98ECA1992FF15B6D0B9D2FFFAABB271F7B45B3A24F7C
+H_OutputB = 57CC3BB4349D79D42487BC31FC8DD3BD2C5FE039A2E388AC677D96529BDBD679
+SharedKey = 3CFBE684778E4EE1D1809AF9E8A347B2E6E8904AB5336B80F8843BF296E4B553
+
+DRBG_SeedA = E6C1B374D16915DCFFA19E6730A52CA2BD18521C0755644DD38EA823FA8368A5548B1BD338A2A1EDF2424798381AC255C2C57345748000F0B18E4F0A498D1059
+H_OutputA = 901DEFD7DD497B148D0F497CF69127A823DB5D592222620E9177DCBCB4E0BE5B
+DRBG_SeedB = 635513189FFBF07DB2AA5B39C47DBE058D0981AE2FA52B8C372181F3EAA64D72
+H_OutputB = E8F5E75EA11F3624DBF1A5C5D92FE6BD1ED057ACCFB9DF9D5CF75263C9D525C8
+SharedKey = A55DB5C866A0D41909198AB2DBF3A268F6971F1176419A7CBBA8A55900BFB0F0
+
+DRBG_SeedA = 3E5107C3C5F996D33382450915614C4232C6156FCED6E7E007438A2DEE4D34E83E3C27E9E501D8500649A29769C50BF511E7FEF252AEA9DC88DBC7BADDDD3760
+H_OutputA = C82CEE685BE86B632B4AEAD4ED1EE774EFDDE52F80FA373B94E47CC2A4A82C90
+DRBG_SeedB = 2178E223DEEB0F558F7EC82DFA13A2C5A51D254FF4F92B3A4F3B4DB84143C166
+H_OutputB = 748FA8C924EFF94644BDD01B6211E37135D744CF013ED0AFEBB0686C008E6295
+SharedKey = 5B84FCA3C5A79B251733CEFF76FBF8CBA8B299FDCF65F2E8C6DD248C5B025410
+
+DRBG_SeedA = EDE68569B474D66A513B73AAE0340559E63F570FED5285D0FB081CB9F03905AA15AB430C9A1973E4212D4B04D74A9104323D0CF0471DA6F3E90A7695126FC116
+H_OutputA = F35DE4C189F2FFA60004F31BCC1A1107BAD6739E6F4E5596F1D0D59424C4C9AF
+DRBG_SeedB = 43D48E05CA1218FF20EA0CCE232F2AB4FAED0398577DA4F54F34B917EA24AC2B
+H_OutputB = 9990692EEE78B16E1BDE2D53B5BF0230EF9C758D786AC2F0BD627F3B5697E6FE
+SharedKey = D16AE41D79B726449E016B6B0085AFC691AC9FCA372D188C461815C40D55BE1C
+
+DRBG_SeedA = 8EE3549AFFA345FD87E28A8EEE1C82125DAD5FD5B73FED7D9ED40815771FCA86C21F654A6E02995BB9B42B351565EBAC9A830DD76FB15D4649B45ECEF657CA29
+H_OutputA = 3AF42CD1A618449484F2D5A6BABF592D51A70FAB2B385BA59436350C43D963C5
+DRBG_SeedB = 65F5A2EB7DDF9E4E3F4BA4A505A20FFB6B994D3939CC42A0AE4F415FD1DD329E
+H_OutputB = 36B928051BB855205227F549047DD1B06799582D7805708108916A07FC0FCD1E
+SharedKey = E3B4BC8527436F898656B4A91E79EDABD4C465FBE71A675EE4AC69E4768710A0
+
+DRBG_SeedA = 55E8F4705FC2576C74A362268B23137177AB8818DE133E90CBE3BDC1C5A5A23EE184F482E602E75240BCF21B84BDF42D4FB6368986D374186707EDE2FDBE9015
+H_OutputA = 03F561F409303C8FA3EA0CDAD2B57ECED7FF4934B52B41C9DBFA338ACA233310
+DRBG_SeedB = D70BB7DEF6FBD5ED19693D4269879179753968980784B50147B85574A4980E7E
+H_OutputB = 30D0EC5C13223AFE5904905BF5EC5A83F873A2B03E426CD0C4F0226B0D13E881
+SharedKey = BBDCCD4B725EA4138FC6059D67C42127C75906D97CCC1DD4615C490F8B9BBBE0
+
+DRBG_SeedA = D3C7E881B66F467D8EE510F369236913A3C0BBDAD68BDDA364FC8313D9741E2CF289B162157B9CBF5826A4C9C95BB0B83A263001B83AB448E1BDEFDF1E09BA7D
+H_OutputA = DD35E75EDE252F46E572C0A24BD32C9DAD15EDDB1D115C4327302BACB4A71B56
+DRBG_SeedB = 2B8E2DA064A82BC74A95E79E53D530940337BBDC59E6D0F5839A94B09F29D8D7
+H_OutputB = B7710E49E3EDD70FA8B756E3CA0D1071FFDFF11044D4F508CDA920382F505C8D
+SharedKey = E059B959671D07CD1B59E642898E7A61D6A49C1C6598860E793B7CFE5EF0BA98
+
+DRBG_SeedA = F0C778FD8AFF3EFFD38F26B5D08A6E79F9E3C55E9FDC2E31C4F97C6FEB2ED8375FA9CF6446107D25D00C76602A22547C1A61D66F4901F8C3ACAAACF4DBE462A7
+H_OutputA = 56B081DB3B1D667BEBE80620C86D87CCDFB788A3765896A2B66BCFCFADA66BFC
+DRBG_SeedB = E61C5112C732CF6A1A1D963F4CC5F90A7815AFF3E113033117107553998F59A6
+H_OutputB = 35F68A562328D27670082A6F2733BF01FF748D7B8A0CFACFC6B99CA7ADBA96E4
+SharedKey = BCBBACB7553B70313270C923E12E96F1B0866C44A73EC94C63DBEE20F10400CD
+
+DRBG_SeedA = 26CDE9B02C33A0D563D37EF243056B1306AE90588E9ABEF48718C070E5F2D25F993EE1DF8F59BDB0D507A46CEA1D9C621D514C93D1C694A7347FEEF4FCD93F69
+H_OutputA = BD9B9A4A846CD1C9778309F841B39122E6EE6E4EB48B04963C4181968096C508
+DRBG_SeedB = F27422BFB389BD41F7F06C9590598BCE01A49E6019F7B776B45D90C4E1EC1199
+H_OutputB = 285A89FBDDFD2E736010E9F705717C551E08B09090C8676F2C4D00161B677253
+SharedKey = B33B67FCB754EFC48BBF36E8EDC6DAEBF9D7078ACA96E25AA8C65868BEDD6F0D
+
+DRBG_SeedA = CE4D07CD5E5F5013A424B4ECB1C3A45C63FA433F7F1A9EF996636CC50B80BBB06AF91B79313B8A838C919388FC4B57D850C9DC24AEB463EF7DFBDFBD46E366E1
+H_OutputA = 1C2F4C4B9965A646815D21632F71E5181EB4F42E93A19786A33BDC74EC0D7A09
+DRBG_SeedB = 96FC453FB61C699A92F312F4C229A55F1B1EDD779B6AC6752A5E24A6A2AA4ACE
+H_OutputB = 2E7CC99CCCF85B88541DC8D2115895BDB37E5B25B576353622EC08AAFA326DBA
+SharedKey = DE539622BD131B172AA7FF72E84BFC2765667C9AB9B14B95EAACACE3DE3B7203
+
+DRBG_SeedA = 5C98E72F4BDC62F67BC9166546C477CD8D670D64B9BF18CE5316274A0BC88F9D081D099CF0619100792778A42A6E526D5B52BA97AA58DD25804C13271C94AE2D
+H_OutputA = 3CFE5706FA71B6CF856F25782A4F3757E8A62E4BFA50D27FF7B33E7ABD6C655F
+DRBG_SeedB = 98ABE56B160E66EB22866F523A5367A8C9CFB1C41D93569626D168A2E17D4022
+H_OutputB = 8C241A497317E5D3F00543294472B8EFAEEDF675ED1C53ADF75CADD43B1CD80B
+SharedKey = 02D9BEAD4B2EC8B9465E6FB0C1C6E405A5AF2F0A6B7AD9A0350C9CE3BFBCEB5B
+
+DRBG_SeedA = 4D91681A8AA958DC240269CCAFFB4C915456F85374217833D169265011DAB58EEE6FF742ED5E07C547901684A3F314A5C649EA4F8AC0FF94E905EF2459FAC33B
+H_OutputA = 5ABA41DF818D7CA8C5A73ACD69593720BE2FEA25827BB48A7AFA8ECDE86307A3
+DRBG_SeedB = E3AEA8F5EF7634D3611CFB73AE7410953C172787C74F99699DB9E78400D73066
+H_OutputB = 8A248488C6A4469CC2486D9F1895291CBF50291167FA76A19805798FEF8FF1C2
+SharedKey = 7F6765DD43BF86B976494D8F91569D1C3BE252542E7F1823B4E89790CE3A94C2
+
+DRBG_SeedA = 8A48BF90B53B7E71C1B6B8E09EA2058F938D21161FD902BEBFD262F5B0559A6E640B3ACF559EFBD4AF1F0A6A13F74065BD9C4333A8763D5B492D28311E028891
+H_OutputA = 516311C2D5CEAAC19D1806C3E3F177B33647E85B61D68B16A6583125399295B6
+DRBG_SeedB = 93464EFE9C6898A6A044BB976FC2BA83447D3E445623F9712EB684CA36701FDA
+H_OutputB = 05C4445B7F7DA681758B20CAC7FB371125AADF28A9B9D10093E200387B6F9F45
+SharedKey = CAE848F39FD4058F2FF71ED86E5F464420E61C0CD59F0FE7C965F427F289DC76
+
+DRBG_SeedA = 7C73B49ED2F62F923A8FBEEDB896C857366D71909BF52490292BF2F00FA1051DB028483E34ED85E7F429EA9DB1227EFF3F4A027845552D9953E32648FB5DE3EF
+H_OutputA = 75724AE94CE56D3D49F6F54405E98FA5735069C687B8D3D8E238084C9DB7FD28
+DRBG_SeedB = 8D338BE09B4090AB3D1F1D2633379A5F4C200F5E186CE89FA4D4CCA468E222A0
+H_OutputB = 374F60AE799F701965F70EB1AC0906C36FC7FEF0F966E1F06AC919CA3C60A222
+SharedKey = 756FC3AAAEDDED2F8222EB9B903B6866E67A09AF9AE949AA03339C4FE8F1557F
+
+DRBG_SeedA = 32E2749DBED271F144E809205040D407442FF4B23E333428A7CF4C688DEE7A9A834D80C62DA6F4937341E34BF990AE8B943AB230C9D8FEFDE4645759253D91E2
+H_OutputA = FB38C72F2AD89E0A2D17314CCA6AFD67CB0E6527F2B3BDF4907B05092D7FAE9A
+DRBG_SeedB = C1ECBE823B1334F56CE159CB97D46304A016FDD35C34771E503D4C720EE102CB
+H_OutputB = 128E2A40ADCD628171C3161018E17A2422BCC81051601C4FFA83356CCA06201F
+SharedKey = 68E2C868045A065138B4F6209B2963BBE49D4200DE1C6EAF09BE5F4C3DC3C9A6
+
+DRBG_SeedA = 06A927E9571F08FCF14ECF887F26168491E819C6ABFC7967A14DB46282D82040DF389AEE04759363E2F77657C44FA731A3DBE882CC470BA3E84E344B00B669C2
+H_OutputA = 5206849E6E7892352DB3B5A17F071C3C08CEE86299DD658719D78F9D747524CC
+DRBG_SeedB = 64AF04D2A522D26B97B130BCC0F0A32854C9B1CBDE06D2235C5E6A4EB7DF1536
+H_OutputB = 373E444EE0CFAA41B735FB99F9D0B45D3B31726B28C5A2B2C71E04954262821B
+SharedKey = CE03374F41761E070A96C3CB80CF7B95E2B48DE4B6014ED45931D18D35E9496E
+
+DRBG_SeedA = 5AAD7CE3A68D8DA2E5AA6BFE715E0E0E971A85663C432626A4C2BDC56731626599CA95170D2A75EE48A66775932974DB8ECF3462B8F3ED799508E916420D8114
+H_OutputA = 9D80D8F9D3082A79F5EAF8E350784B1BE8E3C4D53A64DF619AA991D4974FD550
+DRBG_SeedB = 8C5B6DAD8E85E4197A777D8820DD06136B04BE89AF6970F6F1BA62A8F5E31140
+H_OutputB = D32D22865627F84565F0400F65CB17353D5EED16AE09C0500EAC155CEAA44F1D
+SharedKey = DEAEDA83EC832A58DA0D302ADE2C7DA5755FBC521D021C3D606E7FBE573F342D
+
+DRBG_SeedA = DA15FC3617D0DF580A5881DEA853948CCA27A8A9F5EABEF3A640B0D0072855EB813394F9C6496A3E66808A74AF6C6485347F0A9291A915AFD9521360B4A35D92
+H_OutputA = 055DB3A727C9B589AAE0BD5E33A6598FE82DC5F804AD264987A272145B6B27B4
+DRBG_SeedB = F761713EA75D3C222B745EC3800A70BBBCB0D65B8E31E43BA9AFEBEA6BB5A7B6
+H_OutputB = AC4BE554285043E6C04D4E8C024C6D94514CB08B29BEF759D67B16682F5E44BC
+SharedKey = 2B61A0B23B404D39FAB2A156D998BAC703723FD59817BFF9E18ED852DB4DF0C1
+
+DRBG_SeedA = 70BEC461E6B7DB619BDDE6434B90F34A812DE4F691AA5B8D9857C198DEF89B9778F20A23A218F9F6D7635759A9C335C6CC9D97EAF5245E9E7CF822BC30096C7D
+H_OutputA = 2B86086A7CDDA79F93CC5B418EE3C56487CB9BE9CADACB5EA97DCF2715AC25A5
+DRBG_SeedB = 04728EC93B48C8B4B0BFE4204CE5EC5E8C8E2B4450050E90196C34400FA2E909
+H_OutputB = 9C86C6FC1AE3EE8A22D45FFEBBA5F736132E16A8751CF42D0D3DE700BC43E76B
+SharedKey = 53F17AE3B890607145147328DB2F30F2393802F319CD2B6B15D1C051E1423E5F
+
+DRBG_SeedA = 7135994A4EB4F65174A171B1C4ABB0AF52B33171F533379F9E682EF9784CE38E6860C79BED2D69E26B9E8D516305F3A63E20E9147EEE664D037253933872827D
+H_OutputA = EFEFFE5E439831D6D359B965D1791E78B2405CE044FDEF787EC8F16DCAE294BD
+DRBG_SeedB = FC2F813AD4E5A8A1534563275CEECCB5958F31A370FB00F72A7EB5C12FEAF65C
+H_OutputB = D878DF3E2F8C3900D30BAE66D110206D1FF9B3291D28FB96ECF22712E387092E
+SharedKey = DC4360AADF092424DA81C5B5C186F0E42F70D95CDE3B0946E860DBAB385BE037
+
+DRBG_SeedA = 161C7B850042FBC20634F5CC098CD8CC2A985AC4BBF3D7DEC8585324AC8EC347421A9AE92004FB81EAFB6EFBA603E7D0C254F7C6D0E9608CE0C16468B6D13EED
+H_OutputA = D5DFE9A5D11B60351FD475CAF83202E5AD51514B053AF961F7CB6DCF95F5EF22
+DRBG_SeedB = 5AD4D1CB7858415EED815F9AD841FE5DDA85C76BAC7ED2D5D75438986626FF53
+H_OutputB = 2F2C5D1574C1E5909998A7E18BAC6192A5A1CF48FC7E10EBA3F77F091FFBD4FC
+SharedKey = 6671DA071990B3870384E30ABBF43458C8E9AD687C08EE88B1FAA463F357162D
+
+DRBG_SeedA = F4F85041CACA38155B193B40C0D1D7E3D65D2187F6201F556D2A1D3AEBE5E4A94AC5A69C3A3CA71DAA38C36B946F0904FFA2DA415A05736D124044D9A9C570B7
+H_OutputA = 3DE17FE9D74C81381B646FB0D33397CAA99F481FE8951AC4346F8A8F9C65A332
+DRBG_SeedB = 0258C7D1797381CCF592DB7FCEDE0773ADCFAC77ADBE1DC521647AFD86B427BC
+H_OutputB = AF01C707D78876319F52AFEBE7A7FDA8842BB4CDBD6ABE16A7F9654B98C63AEC
+SharedKey = E97FF83C6EC8E00CB3900CE870D3C22313709B6DB3E06D8350BDA678CE9246A0
+
+DRBG_SeedA = 528E456E002E71FF48C4FF5063AD02708FE1E848CF1255EC9DB41495B8B98182CAF765A962B0B9E491789679A0D07A32E696D1BFBD5240D40F94331D33D3B354
+H_OutputA = 355373DBCAAB36F3048DB7654A20CB466CCFEEDEF6AC26D834FF56535AE71822
+DRBG_SeedB = CC63C66C14D663882211A0CA52484DA2EC51C98468F97F71BD4B7108DEB034EE
+H_OutputB = 8F89427B7508C2B31752CB9296C3F36B41B799368EC281B7014F27601D745566
+SharedKey = EF6A4F0B8E0875765B8C03D105E97DEDF1AA980261054E5F29457A4F32F9A7CF
+
+DRBG_SeedA = 3F96440394EE8EA7ED20D6BBA2750559BA00D71BD62363DD5FE8223710C36597C16AB7A2C92C3CEEAE0E1ED2902C6AB07DE64D54F703698017660CEF9CC7E7A3
+H_OutputA = A3DA301266292BA7ABA8CF54397D5C592C981191CB26B3D86A41FDC33A123C22
+DRBG_SeedB = 7DBBDC601C202270AE3762DB99BA7B7062E025329CC8F1BFCE78CA6ECFCA299A
+H_OutputB = 43993C49173E5797C667A6D3282CACA762C41003342A08AF508846ADC8A10DAB
+SharedKey = 989A7293FB3F8C8F5030E4425BFFE1118D7CB949D5D2B2599A8B778CFF65BB45
+
+DRBG_SeedA = 58927FA95E638D7E6715168F066A7DCF7D1F190448F7F95629E0595E1B7657272E645BD3AB9058832FAC7F048C1691F3D12593DBC78F51FEE5F394D37493E78D
+H_OutputA = 7124093D5A95A7CD3F87B37D3E973B3C20807378C352FFCCEF20E151F4CC188A
+DRBG_SeedB = 9D2DFD30074D028D3143B26E738465124EE6167E5B8747E376EEDA6B3C2E501B
+H_OutputB = 71B7B2CD744F8347C13B33091E073AB9BE010BC7319D0543307042AD282AA924
+SharedKey = 898EF9E0B29D1F80F78AC809D7935DA5D3196D278DCFCAD71E5ECE51268B7664
+
+DRBG_SeedA = 414E0661BCE82462AEF8AE211704FC0F0D54C75741A15571799052EF5F3FA84956421113E2239DBBA431E6DA5DB7BC40F7DA8DE8C8C9DA41F0BFFB1F2C79613A
+H_OutputA = 72D03A100361BF9DBAABD227BB4C75F0D12E7EC29FFC912C3E61658047673D13
+DRBG_SeedB = 2C1BF1515D19D719E48F4D776C5F8192AA014873F0CDF7F4125A2AD62AF7ABBF
+H_OutputB = 3CD00E797DDFC856F1E11288EE2C6ADFBDE1905C1D6477C3D89C919C51CAE3F4
+SharedKey = B9DA1DFFBDAE4DBCE8BD9B780ED1CF4B91065324D2454E3D73D86D05B00A4BD7
+
+DRBG_SeedA = 9468207CC7655C9937C92638D7985196C30A0721FF686E2D26ACFC463F85BD8EC7E809F7DBEFA26C728075C089A12F88D932FC0DBA62357EC682A1B05133A54A
+H_OutputA = 99BACE61913B06F8C38580E55358DE18D5E438FE4C72F87C8D2E026326820DE6
+DRBG_SeedB = 66D86A761D848D7BC564045788AAE5BA8C8B70EFB97DA2A69EDF522D1DC932BF
+H_OutputB = 8C7628307772C2528E89D15EABEEA8E2D7B03A1E3308DB4174B04D2E3C893659
+SharedKey = 685D0A642230024A12D19ACC1506A656C245676FA8B7F1F06D99A901B1C8FAAD
+
+DRBG_SeedA = 4C78914CC4E928E4F146BB713F444DDB49F24747798A7776B8863D767B291754171626879598B805C463AE50697922DD82EC7E71D8E58822DFDB0ABBD48389C5
+H_OutputA = 94F207BE3D52D6120C673980027D894914301837B09753A66FE668CC7ABCDE7D
+DRBG_SeedB = ED3DCB87624D9C3937BD871F47BBB97957F89CC945D4EDE3B40898D76F5DF3AC
+H_OutputB = C4EF171DE7D16C27DBB24B173E28E0762B95C39FD05629D639FDC2970296555B
+SharedKey = 274F7427DCD5DCABC7ADF7A0D538B70EF3DD8F617E3AD9F733B930199AB3FBD8
+
+DRBG_SeedA = B6B2D55A243BDC05C03AE488EEBE6FF720F6D77F2AA1BB4A18754441CAC5178392DFF2EC34011D7BF010B283D6B2B940D1B764D8CA7E650AEBC04A52C706A7F7
+H_OutputA = 87C5DF28C01538383EEE0E29489139B0A054922F32295F03FC769CB5E6141F04
+DRBG_SeedB = F978C09DFDAEBC9F8C68A316EACA236B843BEE7B99F58F94B2D77FF653CD5766
+H_OutputB = F6844D6A87489B3D2A6D576F7948D0544AFB1C5AF2642774B3B6ABD6A6753645
+SharedKey = BCA413C9A99416104FAA5E1A0CE1D2B32074CE3BCA33704067AB9A1BD0CD502E
+
+DRBG_SeedA = 4FE4D4D58573D86FB81A444A3634A6469F6A2B268E67DF27DD97B072D025DE723EC3C073ECBE4A9A0DE8F8C9F76F0EAC8A6AC25DDE832AA6B143E76231B306A1
+H_OutputA = 5AAB1B69815E88BBF6B72454D2880FD0AF1966A04BBB8274F3152827EE920D9D
+DRBG_SeedB = 5D61774CE6062DBD2359FD40926A0A6E40BF9DF7EBAD2154CAFF5929EC3A0752
+H_OutputB = B4BAD884B115EAD5E15A6A3B7E4771482D6239840258CE731692E9CD812A60F3
+SharedKey = F363853113DBCF11DD97D4FF153E408137B05C74AE2CD1A02E74944597335FCF
+
+DRBG_SeedA = 48EDF1B4710E7C395BE299AC94FEA0A25DE4A53F932E58C275962A087606DBE1C3BB58C28773F42F8C9711252D90A4D297039987B6F7723EE75BA754EB7B4C31
+H_OutputA = 70D7D6885E8978F7D1985AE4851F32F05C015DED87DCBC7F185ADDD73C04B3BA
+DRBG_SeedB = 239E8285E0C8F1B256CF86BB884E44AADFC48C4294146594DF81E372F80EA3C2
+H_OutputB = 9B172058A1D142138DF716EC8639DC9A316CB1634E6D58682C4ADBBE91FF61B0
+SharedKey = 7BCB271F85CE53F614C6A4A47EA00C6DE31D59A1E29199AE5CA6E77D1F5E726B
+
+DRBG_SeedA = 5BAE28F2BBEF5679112D52F6DA1EF1E9C82C9E56AD228994C92BD0A12F6287755123F44FE1F56DFA3F628A69C42DDE3657D35FE15A0FC00A5B952990A01F267C
+H_OutputA = 13A4E67D59801A8D970377BD0845078B1EE4E1B3F2577D60E02072AFCBC8F5F9
+DRBG_SeedB = 593CDA96275D0105DD3C7CDC21AAB58DA4413FE9234424ACA3E461C0C0EE0E45
+H_OutputB = C14DEB777492AB9EF70E022E95CC1091059D2CC260295C6976011B1E9572F3CF
+SharedKey = 022E33A793B130DB04E9FC9D12EF4D050C33139BFE2BD315194E308528FD75DB
+
+DRBG_SeedA = 316484A45673C20F8F88D729684FFC7B881A74B673C966766571E70815CD793299F4768A96576144D01E5CDF0A55E1513F505AD76D37A3370F4B9F113C5D0C9B
+H_OutputA = 258A5A30B0912648F9A5C3D4D40AF4B3D9154377C3BE19E22655B42C74906E2A
+DRBG_SeedB = 0DA885A61580BB9A518AB95A9C33B57BC518386A1040FB45DE5B5BA143B700B2
+H_OutputB = 11AA7D094AA47ABDEDD52B291DD1070911A68262227643CC68E79E41C3CD3608
+SharedKey = C0617357264E35083EE05489FB67EAAA80FC26F8DD4BC42CA74823A9A6DE033D
+
+DRBG_SeedA = D5177FBB57744C77B0EB4670A351122C3175F5AA6899638559F69F06BD23CB01FF5C76140330CC9DE808EB382F8AAF699C9A5AFE63BC255381A1029B0D0C944F
+H_OutputA = 6AA5AF99CA274DB72E9799A19EDD9DEBFB6EBE64EFE65F75672AC325C3DA2335
+DRBG_SeedB = 43D0C291BFF715089664C4FBB4A149760590ED95B650A649AA01A8ACD3654A7F
+H_OutputB = 32FA03218FC05824A04B33F7465D06133877D985B8527961231DDF2CC9F3079A
+SharedKey = 3BB16E53A6491046759B30E8111DBFACF0C241674FB968D16677870C04D57B50
+
+DRBG_SeedA = BB0B281F7DE478ADE10E5F5E824658E180882F4CB2FD8AB6F60112BFBB0DAD4014D227D8A384D8B535154EE04C5567239988EE6ED56B8DDF7D199CE8AA449210
+H_OutputA = E0935B64BD903F4CBAC4B8EB3475DD3F1A773A1A8736F8AD333F6F0C7EE84CAF
+DRBG_SeedB = 4876B9F943D3607997D629000EEA0FB995BE0A85E2FCCD8F5BC06254B3DE75A7
+H_OutputB = F6721AB75F1D3B9729F8124C28902F3F5D965D0FA87CE1332046052E10BF16D9
+SharedKey = 48FB867437076ABE43704C6BC27C388F61D51952B7ED8A497C1BD25B196A870F
+
+DRBG_SeedA = 23C3CAC043EE62C5411B0B3A8FE3ED862D46E41BC5B9FD8D7838BAE68D8701FC1B1C36F788B05B1CA1B97062BB30185D21989DAC46FB7CB9BBAA234401C02288
+H_OutputA = 38EB4848C1EE6263A76EA7272884904BE6CF4B314623DB894BA942E2B8335724
+DRBG_SeedB = D6D9DD3547198C9B39A2557B63809DA8BFD127A116290CB8EE6E62BDA58D81A1
+H_OutputB = C71BA02F9F9C9DD4110AE64B9DC8B2FC632574ABD05D0DE639445EB6DF5CF713
+SharedKey = B6ABCC50024BB7B34B8C6551B05A5245E0E86C5E1A97FB0536427EA8BB548119
+
+DRBG_SeedA = 4C4F38A565FA359A1B94984CB761489C41C572704F97A9AAABD45678ADC6DEF4758CF50CDDCD1AC5ACB80B60B74BD0201378202EBF4412C10DFD12514885163F
+H_OutputA = 51F228013AF21ED326A1422472A1FCFC46CC68690001AE93FEE3D4DE721705F8
+DRBG_SeedB = 43D4A848C1CC4AF8A2A73820CE8F52F19EB2C1C3C07ED56BCBB6F7EFA54345A5
+H_OutputB = 79EAD43BCB3783CFCC96949CE04F4ABC4A1556C2DC89E0F42D133E970806EE29
+SharedKey = 9D21A30978066C19EA9C09F35F56167B1274DD750C1F5543DAAA5EB536661B20
+
+DRBG_SeedA = 8171BFA4EC66B5E9F554F28BE5761FCE941333BFD0046E4B187879399F255C4E002C8DF8749F6662A2706052F1BBFBD906EAEF396AD8BE8783D038CE1AD73BFE
+H_OutputA = C97CCEE8733F4F694EA0C61F7EFFD6D5860A66FA3851B1CFA9AFEAFD60BF8D51
+DRBG_SeedB = 033BADF354FC2885A0CD1C88C2E7DAAC99B47DC208CD4C298FA406789F4CF1AB
+H_OutputB = 72D74E97E650F73D45EDCD3A8ACCB4859A1756E04D15DF8287BD71A1BE60C89A
+SharedKey = 8E774350DAB64A8C523DF69FD7BDB4D026383B72598D7EE569ABE6E910659B97
+
+DRBG_SeedA = D159FEF506CFBA7281DCD5AC4477308D2F836A2A1B4496501D6BD6084DD4A959DF9655BE60C46E84DDD9CF7F5C57DC3F069A681A1CA82DF40F5182B4516ABB6D
+H_OutputA = 7E8D71A3CFD01F9FD956B84A143BB0AC7E8AE177B077CA78BF74C8422215DCAB
+DRBG_SeedB = 5499F13921EDA1EABCBE6C88520E5206E8D3500BC5E81A5BC4CDC2D580A006AC
+H_OutputB = 5C2595C6C9049CC060745A689E1D690531547DC8E0DA49AB8CB7EC3C49C39795
+SharedKey = 60D3678FF062F89EC056204DCCB2D822D9BFDF7F968780F1F3FBA3807B61CB67
+
+DRBG_SeedA = 96379C83EA9F6DC255CB76420418D7B9B52482E75F56B4730E42EAEA6915B5B650E052187DF7111E91FE5368C52180E4B50D387674174D801C49574629BFC418
+H_OutputA = 54D1B205052A10C2301683EC63CD053C5E6053706DDD6E13A844457E04620073
+DRBG_SeedB = D607CECFCB62D1492A8F30CB8EFB69B1A5ADCAE9442C0011869F8644F8D43335
+H_OutputB = 6EAF552325F91476077B0961A750C1EFA9BBA78BE8BAC42B37C254F06E66D1C8
+SharedKey = 1F70803203DC3B3D7335D4D16FE847E4F8FACBF470107180A690336AAA6BE0AA
+
+DRBG_SeedA = 1A719D33830BFD4DC9F7D10059C8A2313677E1D7351DD6D9168FC66D01429864AB9D2E49EC2E83A26231F065941FF95DE3490738F88A12B1126A396C951A3854
+H_OutputA = 9FAE54206C67CF9C695E74A65B13C7FE7D1450673C730E5AEF542469A08B8751
+DRBG_SeedB = C348DB722A3F4F1EE46EEC46CFD58E8D4B5155B7A433DBF6D76A18E9CFDA4923
+H_OutputB = D613675CC9A374352F9EEF01F46DF9DF24020F8CA8B454E0BA04435B1BE105A7
+SharedKey = 458BFDBA0594B0811823F5E13F6444458957117530B1BAEA2574AC0FA301DC4E
+
+DRBG_SeedA = 5248EEF3D20EBD5CD0008C0FC57B7717F7F129992E46A4242210A1607DEDB4D67AC4CE70129AAE86DB94E9C741BE9A0C1549655E74C93932908DFF7DD8FEF33C
+H_OutputA = 6E624F21E559EAB6E85A3A183302790A67BB9F88E91A560FB0004611DBA63E7A
+DRBG_SeedB = 9952B587F09F12F2064DB02381FECC850C7B71CCC9285A06DBFBBBDBDBEC6F80
+H_OutputB = 86CB655E8332A13FA80C33006BF47FE1B8E9042B7E4159953D6CACACFCD0FE69
+SharedKey = 2331503904F442D68BE70B866C5D5E7E1D30356C5832A4CCF5659CD3903DC05B
+
+DRBG_SeedA = 9CA8C549C3ADFDF6577C63E99D29B7A4A95201964673618620AFA96AF0DC990DA5F4CC2C6336F994E2A2A8981D68317F3105887878BF1D38B707644B45475375
+H_OutputA = ADCECA0898F82BCF0C481A3AB91A38A9EE7FA8B8E937F6FE8409933D92589B6C
+DRBG_SeedB = FDB9D99329E1244F55BE663A3187F42DF3D70163A7DBB2141237850972F28D3F
+H_OutputB = EEFA3D6895C3A9ABBF8BDB2BA6A8A67221A7E6C2156791BF714AE01235C4DC8D
+SharedKey = 7FFB9F7BAF051BA0698F7DDA276B6580E85EBCDAC0DBF454474963EFF5607B01
+
+DRBG_SeedA = EBC98CD5FFEC8E12D66AB73194FB96B4D0251B75109F45471DD00F6347899E4E98912C406EDDB166094CC504AC185D691F7E817B936BA5F4AEA2B8039FB82668
+H_OutputA = 234CEC7BA098439C9665C4D7F1DF1CCD7F4974CB134E99AB67325BC0DCF15F10
+DRBG_SeedB = F25EBD421F3FE9C0191DC29DBB5A2258B8501E78B566829A6125AA65B4E88FA5
+H_OutputB = 54D9C120F30D0C04F39792006B29AE54C34567FA83CBBECEBDFF6A528E21EEC8
+SharedKey = D7E1623AC21B48050BC5649F5FB2320D782EA862A9C69D2E9222BB4627CE93A0
+
+DRBG_SeedA = B919E8DE9C2DC8F4309B5AF6824BC52B177EE87A9F99FD96375F18D7B40C272B2971B27623803C8118DFD9A7E90EFFE188E2C5AB9B7A0AFE658923F40C786598
+H_OutputA = 9D0B44BE05656C047DA7FE8A2581F1618AA091C69DA8A904E8E9F3D88989C42A
+DRBG_SeedB = 1FA44613F952D35127864C2150FD2D5598F8B6EE10E32EE8C218235420349C7F
+H_OutputB = DBAAACDBFFFEADE99666D30AB6759A72608D58029C61F0DBE6B3143E61673F1B
+SharedKey = 6D1B749DE81F346EC8618C69B2FA749F8A04CDF9EE65A048F1F89C1F14E04F3F
+
+DRBG_SeedA = C13B1636E10372EC4FD7BE71F7EADF46865E87F91F49FC9C53999F51D8E81BF921B1B88AAA5E5E05AB6BD35B06A8653E49AA992696A966165E45C48B40843505
+H_OutputA = 6B0013743A4C85C83D5849913B03469E7E431FBA3F984630324710E8C15343BD
+DRBG_SeedB = 3807C677DBFB910339DEDF5A98031B8DC72E2AFEF3C67DE45773BA97BC10696B
+H_OutputB = 558458AE648EDD1CFDE02A437553823FACCBF9189CB39EE72730F3CB95143FDF
+SharedKey = 8848B285AD4ACAA181D8E3D54F7DD81078442C7A28A94E274E6810AF8AA5A32B
+
+DRBG_SeedA = 9C0745840892570538F2DC7D13F3C4293AD987BBB7E21861C215CE0AB7B0D46DD88A11BF570C416802BC944C0F0D7B01E439F4E7F86EF43500448E1DDD618F37
+H_OutputA = 4F35425699D8E4AB4FD57FDAC654A0D892908E75D5354088BD054700534B41FB
+DRBG_SeedB = B484D0CEA1AB3C1051A97ACBF73D42EF9B8E864106745AFBF55C884573F94340
+H_OutputB = 6D9D0DAAE50FDD4530345B3B522BD55FB2D8716FF37640BF1F1E30507853A1F1
+SharedKey = BB424F12F54308FA73F2F03A223066B88596BD30256173792AD117D6DC338F1F
+
+DRBG_SeedA = 715098DA388748B3600539B4B61BAB38D12745C62D7A6BE197F97D8A68C0FE60613CD7B1A74C5F76DE39F27CADF91F752427E0BE44A56E901B901C8BEEB7D65E
+H_OutputA = 8B26B36F1267D092573791702DADB92EF7B83641FDBA4FDFE7DBAF2510EA58FD
+DRBG_SeedB = 35E27A09CBDAB54DA578434ECB1B1D2B54DB4AA12357ECFBBEC96F669A383B00
+H_OutputB = 9100262D4F58FCA581A4FB4AB114DB6C66D972EBDA9B2E2883E3C4F7EFE4AE9C
+SharedKey = 3FF329748149E4D1421C1B73FEF69E524FEDE0B7772A07EBE756E96C42722C81
+
+DRBG_SeedA = C4E04E295B1DEE9DFD3CD4F199B3FBBBAFC3892B8D57DE40A8D8405A9D08D5C2A6C38B23F67C20F13080F3B02770AEFA3357EB631F69BA4CCECB5263D248D6F8
+H_OutputA = 59C804228B314422B9373632558F243D0CF62D549DD69BB7E33101DD002CDD4E
+DRBG_SeedB = 1F573FB6FCE3A24EDDF22060142A573F844EAFBA7572F7B29A11DA4EB894489A
+H_OutputB = 3C8B880C922695FF474F57AC3842C9AA764E7419DAEBFBEAB793A692C8622C8F
+SharedKey = 221B3A86E163CAB8828CEDBF4527BCE4D0614F14D540A6E2F57D43A6F68C3E05
+
+DRBG_SeedA = 04F9A4E40A9AF7DB4A7D1306A869159010E41D2D733705DE9FA572EFEB939CC75797B385BFBEBAEC0895946A13F4C76279C11BACB8DAB849D4D3626BE68B5F77
+H_OutputA = 11BE2A0BE2E53D84A2928AA1F3BDFE25F524ACDAC72A33F240387B858A554A54
+DRBG_SeedB = 221881C09251789454900DCAA8FAF5CD556BC17A8CAFC1443CFCD4A84169BD8D
+H_OutputB = 6A17E9739301AC386116C4DB4C88D1CCF37CD43D4505D9CA5DE4B42C720B26E0
+SharedKey = 8AC84A0FF867F5A0EFEB885D1C44CA2ACD92F6067F108110100427F57C5A6EA9
+
+DRBG_SeedA = 248EDD5406A28C3843E3D7B6BE77C71671DC826C8E7398DC19AF70335286BF616DC2D92E3F469DFAD032E8424B1BA710AF3C8ACBC8817E29258BD282080369D3
+H_OutputA = 977A7C767296851B779919C3143A5B7C76B2E3203E6073A7EA48B1DEF94FCC41
+DRBG_SeedB = 46ED41404374BAEEC1364FD937864EFD40DCAC7B3FA07270B4708E1DBFA82E26
+H_OutputB = F3A050E41164125D38A26DC551BD759199F69F60340A5974E5D75D83D079CB9B
+SharedKey = 5EA71D7F774A7FD4EC07356C778C4283FDD03C8EE49A015D6E88660A5CBBDD96
+
+DRBG_SeedA = 702C2FDAC5E9ABC1065EFBBD1B564FB679E69085CEF8C53781433FA9B810F0B3CCEAB954F93986D0F161D4C67683A9C9DA27597E740AF0B84D5B618698A0FE6C
+H_OutputA = 329C26416B318A6C138EE96B1A046D71D9EBCC000770B20C14C1793A29DA9246
+DRBG_SeedB = D4651FAECB70986B44D03B58577750B8290CEF3D447E553F79346A126C77D2F1
+H_OutputB = 0949C692A5139D01478EF24804BF620F769B3C7C55E910DB321A64DC7407D7BB
+SharedKey = 7744F73FCF51D86EBB2AA21C1373CAD58E40F6B2C0C705227D81579AF1E1BD20
+
+DRBG_SeedA = 38419F2CA7239FCA40BF91FA247F4BEC9E2655CB53502D03F8EF4D8401FE15F84171A8D267211D97D97D326588D3F627BB2C962BB81AB9B693C6E5EF4ACE40A8
+H_OutputA = E0C1973ED475439C33D3E5DCEC4D0F717DC09BBFBAFB907E6C7CA25B1A90C19D
+DRBG_SeedB = C055244577647EEA2B0D9785A07CB5E98EB1864AD3DCD3219341B12A8740BA16
+H_OutputB = CFF8D682E2E6B8720EF78590A9EC49061D8702B7C027C6437EF5E2EF95F06E49
+SharedKey = F97495029FEAECADCDE06FE70F56DDCF3078A115EA94605FC4B59F4FD194D31A
+
+DRBG_SeedA = A0260DD6CB6A766A9E3677CE0804243FEDC845635417E97DEABA85509B697022F05D27CF568779881AFE1FCE6C853F9768D7423D9358A4149F1CB70B2B29F50A
+H_OutputA = D5323DA58C5749790AC1612D10348195A539605F50147678D16236C8EBF4C1AB
+DRBG_SeedB = 1F4AFF44FBA6B16D54FB354F6EE59D9553F358CF2809175E814FE4E3C473CA1C
+H_OutputB = A7C88FCE7EBF8F8D959ADA26A133ADF6DDC5FB49B41335FCCBA8D0FB6E3A2651
+SharedKey = A96E70457E5F5F84B2737F8F221389800C0AE42BF2A692A76786D0171351F8DA
+
+DRBG_SeedA = 69FDC180E986FD072D970ABB6EE25A309DFC8109E40BCAE286F73ABCC0D81DA2FAEB958C9B740D9F62540F85879A7303B3EEEAF907D6BC585778E36F8D3736CB
+H_OutputA = 05260D90FA235D306B100F953A86EBF1A369B5BA07BEE200B8C696C2769412A9
+DRBG_SeedB = B6EC99263C9ADF6CE9898D090DF98BBE62B72E11C3EF694D3BC910ABE8DDE287
+H_OutputB = 6D98F18B2BE2CFF576373569DF5BFB024F474D0A3B6D868A4F3B948E65B68E77
+SharedKey = 0432398A903BC0EA29FC00C365BBFECC36E2CD2B5B0B5462A09BEBE16DD5C057
+
+DRBG_SeedA = C59CB9F5B135D1746FB10509B9798CDD04583DC148C1D8C80ACDC457C6E9A6AA45D30B1519BC80B076EF9307871C0445C14E013B73B5E47F825E4A1BF84DFCFE
+H_OutputA = 835A56DDE4EA3835781A48DE61CE08F244C20C0E9F28E72DB6FA6166C030767A
+DRBG_SeedB = D5A401611CD2313941FA397565A4DC67F1E9CFFA04D48ED8ED220054BBB66F4D
+H_OutputB = 531DBDB665935D835C12C985347CFF60158952B9215B7043B13E7B5F14B6E389
+SharedKey = 1A2866E6EDE99816A9A3BB8396B785451A6C9B373415C9BDF3A636FAAB6DFFDF
+
+DRBG_SeedA = 38341480500B8EDFBA0D38035BBA7208C62268861CC097B68E4EC8E4FC962EFBB9A0424BB01631B99AA1F05E8E214C87786783244F3C4643D5CE29BB0924EA83
+H_OutputA = 44C4694E74542060C397014CA118C7638851117B55092F3C919AAE9F03DCC8F5
+DRBG_SeedB = C5EEE29CDF1555F348F5469560151F1123FAECEACD73151F8CF2B828E63D3693
+H_OutputB = 2571E123F976A596B102B67C8F446B3A444F9F2CC53162B5D9EAB3B99310CD14
+SharedKey = EA96D885B69D18029DDAB303AE991F5420967A9EB1DFACCA24940375FD530F0C
+
+DRBG_SeedA = A907A9092C544622752923C2DD97833D38FBC6819996F3C9F8B7692B15E6A9F10BBB6B9854D8641E5018746E5C716F5930D01859AEAB453BB7FFAC9EFFE84A0A
+H_OutputA = 3BF1C77DED07CEF6271430A9F35744087F6654EC9290211621C19BD82AD87372
+DRBG_SeedB = 452E8F95A748A8ED0CC8C22FE00575647B5D05A2F9309BB02E4D9E5F934AEBF2
+H_OutputB = EC3FE29F04F36055052F2322A2294BE55ED4EAF620989778E7CFC75DCD271460
+SharedKey = 340D4F777EC85D0BE4625DF62FFCDEA69AABD5616F09441AC6AF26DE9B4727CE
+
+DRBG_SeedA = 466C0BE640D8CCE099F3397AFC3CF4ECFDB1B98963201C1F1440F5AF00133AE8C05ED83E0D0E0085EA27743061F1FC170E5566B5CD8B55A921E0D33AB8076D1E
+H_OutputA = C8CE337CF0D44237EB5C740F669B62B2D0C64C9220A079F42B7AC90283F5146E
+DRBG_SeedB = A2532E30D7DF3AC2DFB5915C3C8DBDB64B42F5CF92D9AD88758B8D555D830B2E
+H_OutputB = D91A16E1D74A3EA91305F4170924281C1E93A4E5386A353B6D75400CBF8CB8DF
+SharedKey = 463EA7E67BEC78B407BEC0CF12D0D71C93A5F2C6D921CF2A75BD84245451BAA2
+
+DRBG_SeedA = 6A34E5B63BF89FAE1FE752193F504BECF60EC53D4A061B75CA75CC5D436B07C119F74F7E8F150C54395E07B65410E59A31427166137E38F3E47326A1FC34E7F7
+H_OutputA = 7321DDE0DB3E1BFEE4B6F5DDB00AA7C52990632734D9AA2CC8C4E62EEA5449F6
+DRBG_SeedB = 73F56E4EC75F54A09580D794758431AFA91EE0D7A836ED9DF92B8012E316207A
+H_OutputB = EFB25979CAAF935913202DC19116BCB2470E5C2E1196AB082391959F56791902
+SharedKey = 51B58EB6E36EF9440785A70064E9768EC1120BDA912E56AF56A87616BBC2B3AD
+
+DRBG_SeedA = 475EEB4138F26AF9B49D011983777191A1BDBEE90C3398CD0BC1F0725FECEEAEDBF1F01CA117DE58E8A7678DF833066A3A19A69D0CA73162530F74369F68F609
+H_OutputA = 1A5CBCB8B3F49D6F9A77D9B63067A1FD2550CBBFA814122150F88974309BDCB1
+DRBG_SeedB = 2645B9B41977077932996911F90A9865758865B00A282785B86D53B742B48F8D
+H_OutputB = 1094431A75FED5A83FFFAEDDF820B1562B84E6E621C4F20CDFC57B741CFFC069
+SharedKey = 11DCB4B109CC905ADF4C19A974C0B5A51E426AAC3791BF2A5EB4C7B539F2B5D8
+
+DRBG_SeedA = 5DF7BEF83404AFBE2C69C41F6B2A831301AF3DAD8DA0D5D932AA9F7C8198A83A345610AF59F5D3D2AFD43125ECE063AEB247510760F2BA64EFD3FA7C3F45A062
+H_OutputA = 532D1B1160AD31B89AA3DAB063E7253A10DDAF06AECC161C885BD418417A35B3
+DRBG_SeedB = AA322B3883663DE41958068A360EA3498DC19A92BE208A2BF74FCEE733793B35
+H_OutputB = 340F59F41F492E7F4340EEF69B2335B25C7102226148D60F8F02E46991B257F3
+SharedKey = 39C3760766FBD6B6A3FC2037CB5E38AE1B81E7FEB4EF9023E0C5842909DF0A33
+
+DRBG_SeedA = BB1C0595A5D839FC31BAED45215001401561E72E279F960E7765027456F2370CBBC32F41544CF35BE16020EB999B85687BB0C9D0C33B4BBFCE24E4933BBEDE26
+H_OutputA = 81B18DF24BD92C373BD05B1A6C394E9EEA5D01C949EA8163FE39D60BA3F57DA6
+DRBG_SeedB = 337931460C053DD1D7FD9D34DEBB2E6AC42408D53FE9C91FF8F3FF9F722B6670
+H_OutputB = 626EBF31B2640FCED5B0203D4C8A57CB0CA40258D065DB2AF1D9B4CC7CC3B649
+SharedKey = E1C21990BCA562E2170368E7A3AE8058762E22A65E8C8673FB4990124A3C2AA8
+
+DRBG_SeedA = 889263D53FEDF02CA4949D7BAFE8C9FDF66C1B657D97BC0745E5349C82C1AA5BB147B5A675B810C13073EC4B9E37EC5DA374E1FF610C2D6CC628414026EC5126
+H_OutputA = 93B5ACDD867FDC12E334AB313F3CD10BF87F4A11B126A6989F47C553B0375420
+DRBG_SeedB = 6A72A49BFE43E48C3909C36AEAA2DC0E5473374A55A22862D650DB5AD8ED9720
+H_OutputB = B834751C939CB8D11018175B233007FD4268260DD132F08B3AF6A171CCF31C0A
+SharedKey = 00313B1E0690F52FBF7D686C4AD5DF82511F647F47DE21F2DE47A8FC910A6508
+
+DRBG_SeedA = A04C92E62F9ED799A1026296E529FCB960C2413689A086B4CDDDC0A482E32203864153759B93D60A721C54F37D7B801FC11726E811906455B148A80D23323E0B
+H_OutputA = A1773CDD16581C6852080A239B5641C70CF7EC78E3626A2CAB2109A40B49C347
+DRBG_SeedB = 9035FEDB812EE17D53436763547056A0925095DFB6691682F3DD3B4BC8D35780
+H_OutputB = 1031B9DCBA1BBD4AA2A36917088419C9314349A279FD4C549805A35AD54F8FDF
+SharedKey = 27FE0D1C59E5AFE7625F661D1DE19DDD5175F9C687E3A992F12896D3FA382116
+
+DRBG_SeedA = 151C21A8A67693DBB625EE5687E89E6C74580886651A0DC450944162C9E36FD5B060C0428646DEC99DB5178241FBC2CC79E35A7CA6F2B57834713930A9D14724
+H_OutputA = 61494BDE8D71E1EE8D86D8E2B62A12AE141EE16616ED6D2B66CC00B8462E9565
+DRBG_SeedB = A78BDB354E9929093EA7F2E27485D5DA2E81B5131B7D8906BD0F3B3A38DCC54B
+H_OutputB = 1623B00A551EDDC42DFA928A9C9E1030A62B728B11DED36428365362FF5940FC
+SharedKey = A8636FB30155C9D4D136ED3A80F52B7ECDE3E76F85336C8C59F81D09C8140F8D
+
+DRBG_SeedA = BB73A96696F6DA912C5181EC741A76F0FEF8A83E998146006FC19E57F0C1E6AEBF1BE540729A8857928CEFF49B6FCC5337D2EFB77B7DB09C9B894045B674ABA5
+H_OutputA = ED94E727B9DFB1042B68452F21C9669F7639FD0061A6724356090DC01D00158C
+DRBG_SeedB = FB8BB9638237E1850F4F3C1043AB603BA7AF2B83AFDB89CA0929178267AB2ED3
+H_OutputB = A6BEBABDD56D1D5E0015E0D10CF5344671433256A28C2E49A97EA31C95B3448A
+SharedKey = 6FEA949DD6FAEFE2486977F644A0781779C75585FE2E9F03DA11354720BCCFB5
+
+DRBG_SeedA = FCB84997096C50F6C48CA86C0F28BB1B52934290D892C05D487D32DF630219A75DBAD5412D599A4B1E34C0D4F7DD6AE80AC83E55CF665A06B54C79926B96C7E8
+H_OutputA = 137B08CA5B2063193BE9D94B28CC4F914BD6CC04C5F3CEDF855D10828F6F0EB3
+DRBG_SeedB = 3F2B13B45EABDFB2E183FB5E953E50C6D74E3DA80666CC553E88F9BDD4AC0C90
+H_OutputB = B5243CF99E49789B31A36E66F4427E4B54D00EB2966079704574C815FCC78B2D
+SharedKey = 17F9252524210E7D73A5BE4C9E7A3573EC3EC199893504111C4C077CAB81E708
+
+DRBG_SeedA = 1747ED300F46FC828524FB8AD5446E27B29B20F3BA0C2A4EA3F0706B775267DF3D81E47C4438600F9923F0A17ECDE7E960E382464EEBB5EC3A1DC50A9B46E8D5
+H_OutputA = 246E1FC6927EB49406A9CAD17E08D1DA5DD83B2473B1A669210B4219F569646A
+DRBG_SeedB = 171A41A2784BCB51966A065B4FB97F5C436E42760E2EE9B2F5FA10B28F03DA4E
+H_OutputB = 8D33085A123814B0C68553589B5B7DB90C2A021B72327D518A6570B088EF5EDC
+SharedKey = 05E0EDA7342C9613FE6422F49D8210E02862748D49476A2BFE62F2705991847B
+
+DRBG_SeedA = E25C1D51D43B6433999657D35AADFA601AE08905B0D6EBFE86B058BB9EA0997883D7DE45645AE981A56C7BF737B1866335C3FC7B3434FD7D5A2CFD79AA4E108C
+H_OutputA = D48EE6AF8BB6B7CB30FB5A18C7E18CD68BF62A7EF1D472707CCB4C295F968EBD
+DRBG_SeedB = 782F7746C8E3D752B34B38A63E6440D4FAF27EF22D91937717FFA1A0C61A3367
+H_OutputB = A76CE38D10304B22DDB4C567A9227F363BBF7FAB1BBBF66E0FCCE1C6C378AA13
+SharedKey = A4BA9D4AE239234553C1DB4C5ED46D844ACE16CACF7D8C03DD1C6B289E4F4CE9
+
+DRBG_SeedA = 8E8194127055DC66CABE10D69CC0E3F5664423AA64AA630BE4F4B36615AEC13EC1A94437E36BF8F99CA7B5CD03835FA33DA4F5BAF9685E5EF8B503A42683A724
+H_OutputA = 2DD7E5D605F4051E02D918AC7F06349CB68A0892E688926F18D35B34974FBE8F
+DRBG_SeedB = ECB5A28F30B1FE3329B11004175F183859BCCC6CBCD3B2C53E6F1B3399A246F1
+H_OutputB = 3DF1CC7FABD5A9BFC3F553E6E7DE898D2AB2E0450E71EE812E1019F624A24743
+SharedKey = D5626F5D78302BAE79A7006D93DD4C0B476A5B2C5D9F69BBD9E2963516E31278
+
+DRBG_SeedA = 68E0215BF04753FD7159490612A8FDDC12397582E8EB40B8A8259ED9B31E11719274382A301B5E7C0DFF95B260B067334CB3BB879102A00A99AA46FB6278815B
+H_OutputA = C304B9E1BF43E94DCB3110F6858AF7F3B43F9469CD23C853B2542DED38E5C3F2
+DRBG_SeedB = B628C098C16076684C4F4769F95E7F84123C56CADFEA557F04E2648BA09D3A23
+H_OutputB = 2BA41345D0FD2FD760178258116BF4BC541FBCB81CE8D50B7C92B482F62E6EF6
+SharedKey = 6EC8F5336B59E0A111C27FD6D0D93A76B4B7CE7AC094EF76866A9BE18E744123
+
+DRBG_SeedA = 08DF54FF805F88F942997FE62F9C8D203B7FCE3DFE1D45A6ECE776A2324F8E848545366A957029E3A714895E6C6403079D2B1B612DC992EFF8DB788AC44B559D
+H_OutputA = 495DF5B780094E6CC7536F5EE0027D9AA7295CA2CFF6F93D83E22DA695A9D61F
+DRBG_SeedB = 615F08C1D650EECCDE818D99BB341218C265D11E7CDB71D8432BA171D9830FD1
+H_OutputB = BF40F9CC12A3F2F8247C215C83D1FEAD85B123F8A3D0BEFFFF3F63681B5DFF09
+SharedKey = A13B4B01515C0D71F0DEC6B2868EB749D366C49030B0EEF721EA650B87918A96
+
+DRBG_SeedA = 79BE77699C257ADD2342D36A758E85FF66846F836F06482E4628DBCB75E3F51564AF71803A304642AA03C3CF4CC0E7818C5513C572A546F331EEDF45C3F4B894
+H_OutputA = 34E85D148126A45F8D3AFFA771E91C0328E74EB5E097E6780CA03632AB8D56FB
+DRBG_SeedB = 3AD6E6C1A63F7FDB5F4B075E277E2959DFB421EF949B65236489E54F57F4746A
+H_OutputB = 18A03D24FEC524D90C380003AEBE2F14A067F054897964550156083C48E52E3C
+SharedKey = 3B0491716B260AA320B147098D0BEAA9325B78BCBFB970CCD7EF5C6C5CC769A1
+
+DRBG_SeedA = 4F8E3D18BC857D475589ADFE5519E528C8DC7D19A5F283F4DDC73D3C88988926124532703E59D49B48DA2A6ED0689BE67C26C190A047743478076E5739F28690
+H_OutputA = 8CCCD7548A56095A658787FE70052667A75C48E1B44E4C35BCE7F8855A5D799A
+DRBG_SeedB = 5A6284901DBA8EBAFA0129C6A06D5CB671006DE9A18971987CDFE6BB9980CB05
+H_OutputB = 11FA5826D36C93A1A8E75FAD090D575C56E67F7AF93D8E57FA011363CB8F1419
+SharedKey = 2F50E05A04DECA4C1C3ADAAF8E976695AB33A5C06B4059537775484C9080BFB5
+
+DRBG_SeedA = CCAC649FA19A636D1653D9255E357B52A7948D6D8C6A3140F13DD61501A49494B442F68590C53B7BFC8DF9AED121C08550C47101077EEAA0127AC692C603075A
+H_OutputA = DC0AB8AA2D898E7B1F8863ADE500B26A2844FF736F7227CCAFE23C7FB94FDAA3
+DRBG_SeedB = 7CEB439DC7C7799BCADC11D118557F707918ECA1882BBD42A60A9194E0072064
+H_OutputB = 92CEA23BB6AAB6A6A0DAD22F3D2C741B14BE808C618038DEED906CB202D35357
+SharedKey = 689FFB594046FB6E74415163F22463804B989921E584AF4376D9C11789DE8A05
+
+DRBG_SeedA = D67C0014EE161CA72DCFCEFE88455C8ACEBDEDACC36590FBC27581F467903F578F095F03B70FA7A4B8188BFC581C945D834C614E0942CA28C853155D7C76E485
+H_OutputA = CF9C306CADFAE6C98A57EBCD1AB262DE7B6D912FAE694A427E10A9587D867B37
+DRBG_SeedB = 300E8A104E2338112D578486F431945250E96A8E59A99D1FA826E934AF4BA9ED
+H_OutputB = 91103B53875F9EBC23FAA47027E6891CE8BD28BD406367FE1E3171430D82B38D
+SharedKey = 99F4EBBFC3966EBC6CAEE5A6E292492D32ED79BED7E3891006E1AE6E635DBB07
+
+DRBG_SeedA = 00D9ADFD98419DF88FA297CDF31A77907D14242D768C228A72BA3561E5522C61C4B9AF2FE243034A5C2AC72FC68F523405756AB8101DDB04193375F653F5DA04
+H_OutputA = 1940FB4423E9F59393E0020DA32A6FE8F6F1A2CC5E41CCD3EC30D432B7A059B7
+DRBG_SeedB = 075431D0B5D4C483AC9F1AAE759B9E4AFCD0DD53C2B0AA09432FC68D9A72D1FE
+H_OutputB = CA6C5105C5819C9120E4807BB9DA5E09FA9B92A478C35D7F7750A093CC603D7C
+SharedKey = CBFD28329293D9365063E91797A3FE82C7381A41E1C6BB93A1308D15850C93F1
+
+DRBG_SeedA = 169F49A72874EA013A4DFD44CB3F3F7079B3AA4C45F86378C97A34482B652BE31669FA408EE5A09E26C05A1B4BB0384D6126A803DB19E716F15B155FF1B0DE18
+H_OutputA = 9A8DCE41C73C4D13B6A9311E84309267A226F765179F6851331E81D99801C60C
+DRBG_SeedB = EEAE5F92720CF42D60379416A3FFBCF1F5FD4A39221A402FECD30B82D8F133B6
+H_OutputB = 670F79F30FBED0891DA12F3B54C219F7A2F33B29414969AE7A1A756A23BABD81
+SharedKey = 4964492B61A7B06ACE3A995A72E6AD28EED838F0E4419916A3E7EEDDF691BFD4
+
+DRBG_SeedA = AC6921C8432E5997A080B09DE22938BF1ACDD5E8BE9B731F28FEF3DCC34FC11908D6FE698073E9153D20C3BDE6F88476C0118087365160CC0555228DE605C916
+H_OutputA = B815E2670FE7465F0DDF702FC93D551C82ABE2E3581FF5397712DB2F0A89BB8C
+DRBG_SeedB = 10262754984F095D19CEB4A63A472B1B00EFD8838AD6A4BD68F580DB6A6D559B
+H_OutputB = B08B430DC630283CB2E388BD7F111CDFAEBF8A1AA6EA715957FF558A4723DBE6
+SharedKey = 9E35602D859C9B5238AE4818268348E17E2A1B0C7EA692F08A69C9B39DA59C50
+
+DRBG_SeedA = E94A273885D9B1FA0FAFC37DD5676FF188B9E624F257AB7EC23DFCD8550328C2DFFFB225E3A375AA1412374287553723F1E160B275BD10D1078A057E6A028504
+H_OutputA = 7FD68B30D6F39315851DDF2C2B86B4EFDBCA991A1EE35C079DB9B2B79F86D8EF
+DRBG_SeedB = B49B46E7C52F86147EA62A6AEF5F236AFE95179C5AF21676FC04E69EE8225A89
+H_OutputB = AF8AD643B482FF4AD91BCBB02004CB6B19736BF0B711EE3EE9C156F34EA0F6E5
+SharedKey = B42D460476FB59BF51097015B5302F908EB5FE4C7D316A6A3511A77523C78491
+
+DRBG_SeedA = AB7989F8909EFF2990FBB2A5B656D5C1C5244CC09B461F93C86CE2CB321018C18AB56E18EBE7E41E75820E86073E8936F439979B820D12E63387D13AC5EC25D7
+H_OutputA = 726280AFB8D5DC07070B741ED76E6D21657B38422D60273D1AC8B1672DC49837
+DRBG_SeedB = B2F8648D3C21C259E1EF92D7582BB9D424E29C694F277E4BC5A823810295317B
+H_OutputB = BDD605B105043AE3763D335DF92E78079217497472DE7D9AFD5F7D5D2883FFF4
+SharedKey = A5300F5517B4D7C210075774D7D7B8CBD792471EEBA9F053CC4EC96535E8E751
+
+DRBG_SeedA = 613D883CAA2CAAA22D4D0FA27AFBB80A41E924921309EA378F789E5B873835F4FBFA7D0C7E39FFE56E8876C448AD9B187250645A9785F918E6918E3E46C8002D
+H_OutputA = DCC3E4357183299C8182A5597C868C3906D45225E486620354E6B4A4C4F72ED4
+DRBG_SeedB = ACE93EA5CEEFCA56DCB5A2944DDD3C70FE683188BC759894EC7343382A5C718F
+H_OutputB = 13F767BEF2E6C01F9ED7E464EB6905364A6B1A9EDAB7B36D81670D95F24C6B36
+SharedKey = 32BE28C0A1044D7B05CAC14D9E91D9B412E816C992709F8C2049FF6BA6AB13D4
+
+DRBG_SeedA = 0675EA607ABC774EB18B526023AEB9E6E1204DE6A777694EB871D8B90CF59CE19396396741BA5B3E13336BDB2C8CFB0DEE2B95B4F635F8EC19E832615646329C
+H_OutputA = F7B159884FEF1AD98CF2B1E504240F0042E61F4C7434D432E09F2F0773646414
+DRBG_SeedB = 9AF97BED6130DC96814D694D3C3E615B8D7AA616F8184B00553241282088B4D1
+H_OutputB = 5AC4281F3DB05F7B3C92CD178DBED9A6E0CA8A8E5FE4514AE323D1176BA7CAE9
+SharedKey = 5E99CEABC51CCE66F74FC5E8F4C0A8FFFD60B25EF309FDB5699C69FDA10DDF9A
+
+DRBG_SeedA = 58A825909F88B48237A7509DC47D6F9B7FB654DB786BCFA7B285CA3F9F4066609FDA1D86A0394B9C169B479B39716158F2A84236AAB1ADAF88D81E4E76B0C5F7
+H_OutputA = 2EC52BDD30BDCB0C8A50DF076E01DDA56C241BD731942C0F2462F6A75C7657CA
+DRBG_SeedB = C95798631FFF94910BC43A706FE3ACAF27454A5739B31C36144EBFB73F6B6DAD
+H_OutputB = E3D83B948A3C15C282BBD78D6F444438725FF752717788CE428BE60DAD3BE11B
+SharedKey = B57C7FFAD490D6DB7D76C4549A269F91429386FAAE7F3BB623856BBB226F1369
+
+DRBG_SeedA = 96F495627DE1A497970F5974CA3062800339A2F7EE956681323DA51B9A3E7C3D352768C22659D4A850A9A3F5136CF4AC46F1609BBAEDB7FF040D811BFF07E081
+H_OutputA = D2E3F1135E268867AB11FCB9BE3DD52F9A032FE516D4FF89836DB49BCFE64B69
+DRBG_SeedB = 2B5318086A280E771710F877F856C2F15CBA25F0849849A9195BFA5D690ACD08
+H_OutputB = 9C23E2D3E597E2651969EA669693389620B347A85139FBFAB630694C1CFCF635
+SharedKey = C8B9E2C54FBB000F98B4AB776AFEBAB49BB9CA2F736A0147C5E7327542E6CC1C
+
+DRBG_SeedA = 2CAF626A17B2953CCCB38F6BD59C65760FEF560CAA59AAAAC09C6B100BAD932CE35DD3777B4B9506BF9DDEED1C29B7524299C445BFE7F63A30CEED1701EE0E98
+H_OutputA = 4C57BE9B1DAAF6043799D4570BBE6EE0E295E1232B15A0DA46135A930B954C4C
+DRBG_SeedB = A04BD9AC955F362272ABB18EB4CD90AB1800CF8611EB3FCB24F493D5BD07624A
+H_OutputB = A5BF33C41A76039D9D0BAAC07D57E20439FFF4D03FB85B9DB80FF363553DE3E0
+SharedKey = 1C9361687209B5512FDA34C50722FA9072641E49EF6118C50E4BE08C0DB9C1E2
+
+DRBG_SeedA = 1A323D5355173974E63D2F388D338EE41BAD1CEC65CF0924113BC6E0E1937FE5171E10AF95949E02D88D1F5281D4CD00A9F1B2E7A63B8948A7D5DFD08252693A
+H_OutputA = EA5799D8BD3D8933911277A9B6DAA78DFABA773E383F603D13443539F0D9D020
+DRBG_SeedB = 10B5D34AE56BA089DBBFD52C20D6D53D16AF81B0A389D541EFD339829CAA428F
+H_OutputB = A93944829E22EEEB94262604D0CF85ECD224E122784AD0041F3E44B3C2604B54
+SharedKey = 49DE0ABE639C12B901491036742FB39554B6E31D0AE596E97F5B21B33A886684
+
+DRBG_SeedA = 095CA45C9E4B4809FCA2380B6E9E3516B6FB85B1BAC69BB3E3DD614A1633139DD536E5487CE69CD15954481E1E1A449E5D34B759DC919BCBFC802D03990F0EA0
+H_OutputA = 95B8161B724E5D8ABE3AB67B80F2407CA3F8A25E24AB04251462954A651B5223
+DRBG_SeedB = EA3FD7182B26A684E70AB69DF02410AC5DE7BC8CF8B7AB08F7B2B99D711B1F01
+H_OutputB = C2DB87734B7EDAE91DFC293A6F1FAF53678D859836A5BC7BBFAE7BAB6E120303
+SharedKey = 31EB5A441CC4ADAD4078C2CC471E614C6C61C8643899BE2AA2985BF8E7922AC4
+
+DRBG_SeedA = BD8DC4BA269E669F11315364063048ADC59213BFFEB50C82A479AF7E9F55383A36B819AB5056058737B42F5347DFFE27429696B4A12361900C2F22E98EB747F2
+H_OutputA = 311C3C77834F62945AD2AAA25F447A1F3D99123ACD4DA34FCB62581D310BF2F3
+DRBG_SeedB = D488EE926B8EF7336EE0E5106C332E997474EF61D0276D2A7D0B1953C67C3527
+H_OutputB = 7C6D3069547243A5F0F65E58E3C0F87C7FC30D3505B5B77DAE9AF3762A8DA49D
+SharedKey = AA75D7CF19C6315E1EB0CD47567F2F089680D7DDED8B4F70E16B40D65665A98B
+
+DRBG_SeedA = 857EFDC7520D5CEE171B35FBB9B017C4549B587DCD3FB12CF5D4939DFF0C22CF299895262A7FB92C77825106BFB0B3A422EFDDFB786CED573AAA279F0C9D1422
+H_OutputA = 579E41C01DCD1184F6964DC2BA1397D3664FE75C7F2F36D4928D21C35C1C8813
+DRBG_SeedB = 11B8CFF63E792FC0BBE91C5E72B629EA12D908D998FBCA879C2A3FF5A2FDD22D
+H_OutputB = 8F62A581FF18BD790A9A56A5AD76DE889E141EF4B712E0D324AB3376D5369697
+SharedKey = 4EA5F236788F478FB147AC514C74632F62C62A9130837A287D125FAB0647FE46
+
+DRBG_SeedA = 399F12242B3CD214C8C5A2640CB4A0A2A59623160B94AE01F1271ED7E0BBE0612899087A39DDF8FA3FD7B3CB8536FC523C242FE9B8087D90985D929F0CC43173
+H_OutputA = 7394DB4F9D8A0AAF751EEDFE1385DEDC2CACD257A34BD647F43AD724A7749C9F
+DRBG_SeedB = 6551FBAAE6F600E6253AB63862E22D6CEF64143CF64C12049A662E21B406432A
+H_OutputB = E7528671DB18FC68920F47B8CE99E3F3BA86BA0E761322B1EA7C585120E4B7DA
+SharedKey = E2CE41BD90A960EE72676DE6F85088BC439B7CD8633EECBE90339F215D3DABCA
+
+DRBG_SeedA = F66E9BCA183ED7493C14E4284BC036DB92DDAF15A86C251CD48B4BA4E07152D7A38D85E0D26D35DF69FCFFC9FF17EA102462F66412105561C9D82D682B68687E
+H_OutputA = 5917C7D7017FEC8273D206B6CDB38347867A23947EE6C9866F2D4A1A70193623
+DRBG_SeedB = 294BFFB6FE7F922F01145B0CAF9C3C964824EF8AAED0BD265865D469BC17937E
+H_OutputB = EA662A0E7A5661E698AE3220652002CF3F0800F0A3F10FBEC7F572ADA0571276
+SharedKey = DFEBECBF430BAD08FCA43D410E83426DC1613C4401CE7B15764DC2520E861A8C
+
+DRBG_SeedA = A1E5402BCAF12611847630405312E905DA2302368A899490DC4A45D449214F90EDD873A982FE499FC6310942D654BDAC5282AF5A194610CA3D1F4A81F8131882
+H_OutputA = 77E4A7187F01189B1CED4D632A348F7A3E324FD7129FA20A2250D0E6047EA7D7
+DRBG_SeedB = C00041D5B855346E2D5C410E962DF227D4B57A3563F64871CF9348EB730798FD
+H_OutputB = 4FA61A16D82DB35B90CE76120472D6E4FEB832DAC06876560238B9D27E83EC04
+SharedKey = 7C6959357BA8897AA91481993958A4071DCD607397E192B7D3E34CE51908099A
+
+DRBG_SeedA = 26C0CEC27D038CDF8963F464CD9C2963E9632EFB547BF98747F8A04213415BC9220F6A7DCEF9DE186C513BD0448D12C53B34DABCCEBF3BBAC2228BC3600DACB3
+H_OutputA = 8A3D283BDB183CD79AFBF924D2B25BA43436F241A48EB9E79AA517918E78AF5C
+DRBG_SeedB = BD118FAE786B4A5DC93768C5DA37B1DBBC5D6EE217716C18FD5AEF67406030CC
+H_OutputB = F1541D8A8968CA4558610CA4B1B62CA3D91400486AB3B8306006016157F6AFF2
+SharedKey = 774ADC07AED1226A7EE3D85302FBAD8AD0CA9F2AA0CAF601F08DE390190E4B92
+
+DRBG_SeedA = F167C65CCCEB1444D99D915012B077D59D40AE3038506B3984F2BED7B2CF730F8EF77CCA97A7AB27CE2E77D972A9A9A23D22AF51D40F32C497F8BC34FBDEE8EA
+H_OutputA = C49063FD4AA44677305B5AB5EDEDCFDFC69A7337C80CD74E38CCBC2E6E97499E
+DRBG_SeedB = 039495887C9C169B213AD0B286EBB1948CC1712ACEE1633EEC463136B72E4899
+H_OutputB = C2F5C9299379049CA43672BF4D2974372672007AC52B8D4430E1A59E2095B05F
+SharedKey = 191F98E0D4E0514879F0C7EB64D1575CB10AE6B94C40FEBDC4688BAE648F3D4B
+
+DRBG_SeedA = 7FDD6686EC569323D44CAE93F8314BDEA4AAE4F1878792AC7DE866CBB01C9025DDE4CD545489BA26E21765FE6578BE95DE03887AC2366E9AD9E959E6B9C6DEA4
+H_OutputA = 82964D767FC7A9FF5D0CCE0DA271754548F54A247472C2D4EFE6F897C377F665
+DRBG_SeedB = 847C326B745A0B4ED759D6FCBFBAE390E4C9C2D4FCD3D6782EDF47AB58618011
+H_OutputB = D6FCBBD2C4D52A797843F67FC30BDA69E0B564A1ED59638A79E30C5DEB7902D4
+SharedKey = 828DB09E7F50FE2A30AC43761B99358F32894DD22B8DBFB83D18329D50FD46EC
+
+DRBG_SeedA = A6A71B878931CE79F614669BFA0DC9F827892DF27EE14F2D177519CF04B8A8DD228C61B459BD4869EB4ACA417F7334088F3C4F3576905E017DB6E0427AA6B96A
+H_OutputA = 89B2BEEABAD4E9AE6219DA631AFBDD9CB99B4FC63DCA618460F99C91B3FF527B
+DRBG_SeedB = 9C1BFA74195491622D43316FF58600684BAC06DDE608E3138E53DF0241736B10
+H_OutputB = 0C0257145C32A22BE9230D7721591684EDB5D3D36CC958AF0AFE9010763F922F
+SharedKey = 3B326280E75C1FB87CEA6E4692ADA567517CD8AC0E4A3C1CDF2CF848FCA934C9
+
+DRBG_SeedA = E2C3DB667E621587CDE304BF841A50F59B7527098304EFA6B15C4AC6A02209A5DB3633B90DDDD49C88151CAF63F49833DF3145B00D9005C420F0CFD416ED6E15
+H_OutputA = 4B9FA1767AA690C505BA90E197240BC4B1900373C035723341E56A41272E6AB4
+DRBG_SeedB = 4EE2D7CA9094A9EC7425233F1044B1095BE4BDFE45FE6BA8F0EF09F57FD00387
+H_OutputB = 1044564D9D7F70C4E98DB4AE51A615F744A7566B00465A5B87E80AC4C1876E6A
+SharedKey = EDBC611A338922BB1F561AA8F32E37079E2A9D977B070DDA5FA6C712A8FA0449
+
+DRBG_SeedA = 3D004627298D213847B62F2C565E3BB990AE616586DF89D8183AE868B5106B0ABEFAE13BDE14D3E9C52DD81589523FEA1AC613FB7A869AA3780A1859A18A2126
+H_OutputA = ADC2FF1915D0A7DA9C3DA7C6FBECA7DF436D174F57C6C7B2EFF7A9D6E8EC7084
+DRBG_SeedB = C52DF2F9BAA7F8B5D2ED1DC3B07645CCE9740C4474A979496D94066C46F4C178
+H_OutputB = B6CBD6357B650F5F9FBDCD5C1EB6A6553FD4354FE71E1123F65DAE8B024BC774
+SharedKey = 2264EB549C24F2BD68056A6942AD6564B1E134B1C7586CAA6FF7ADF1CD976A38
+
+DRBG_SeedA = 33520A25922708B545DA729C6698E9843D202589BAB40C88F878A00293AE0FC1F24724C1614E8C54F5F9DA03E0DDED3DCD32FDB73B2E17968C9D2119D7C567BA
+H_OutputA = 84A060469FED914154A95532A952347DB0A0CA420A2C6D8BC8EF3FACC8D4D441
+DRBG_SeedB = BE502F5DC5B563BCECD020F3C67B28BD3A9F06AFC06267B48AE2B4340D444A93
+H_OutputB = D23A964FB153E7FBDFB52301E37C2329E2AB83000CD9B770B8CEB8BB75F6BFA6
+SharedKey = 5BC5A5B7B0E062C78F766808609D0EA5994F92D2C95173AC554951A8631B577D
+
+DRBG_SeedA = E731B127975735BF64FACC78D380C1CB51A89D4AA9CAB27952D5088E596317B660AADE3564465F22A8CB5B8A713B49A7E96C56DBD5911CC417817FE26098476A
+H_OutputA = BD1A9CC49D39AAAD38644841BD1FE7501D4499354F03A11BEB6137BC900FF731
+DRBG_SeedB = 0E7217EE6E130AB8D043686B849CB7A1DD7A2E0ECFF140E389B13FC7C6F4C27A
+H_OutputB = 5C151AD1F2AF18DE94B5DFA2407BDBA8BB4E5BEAD2DFFE64DACAB7346AD4A377
+SharedKey = 33BB2D0D436CE3EB929CB9DD999D3F5AD478993111C12F16C3AE8A1A1D939C2E
+
+DRBG_SeedA = F200EEABE9CCD8D2C3E4ECD4A56E09A47D809DFB1EB106370EE7CC6D6C40763AD8FF0CDCE728C545021E95125B9149EEDAC858B9402C6693395FE667097A2541
+H_OutputA = FF082AAA45775E6BB1841C58419E07F939384F19CD499658D277A942E8786F39
+DRBG_SeedB = DC94873A1C490933CCE8758190CF1688ECBFBCEBA52DD684CB5D283E3AC1E62E
+H_OutputB = 9CF52A9A24FE51177AB5AA0EC672E6FA4AD8EDB4A334DC60A7E53773338FB299
+SharedKey = 33EC13181D50329DD3D30FECD9FB3088AB4328D3FD7F8F0AFC975F3E6592A683
+
+DRBG_SeedA = D8CFD831B4D22190B0A8760C6B6D0E67DBE18C6A6F0B91CC872D0DE0190596162593D322614B70B68FB090DF1E28834E34CBFE3159E55560E53999F9D64524FC
+H_OutputA = 07C7F541DEC64BDC009444BECD2450A341C96FA0C3411D25A58D1C81C34615DD
+DRBG_SeedB = BFC9BFA0777D467FB1AE5B854853AA7AAC85E37B9877B47BE16197B677BC69AC
+H_OutputB = 3FA2FFB55DF8443B77E5F3333828553A0385AEA1FD5171CCADC8AC6D4C9699D3
+SharedKey = E061AC2891E010CC3E77AAF04875EA9442C9E6AD78729967BB10858D170EDE95
+
+DRBG_SeedA = 3038DAE482FACF9AAA99B8317869CA9F9071BA81FDD357A54B184E8532492A7482FABDA1265C2C94DEA0C7DC43D8F9958AAC2C9FC26932B3D202F6084D4FCECD
+H_OutputA = 252FBB403CD79A495FCBBEBE03BF54DA86027B76F6DD4758AEFD6F29C399E49E
+DRBG_SeedB = 7751F3F084B2583CB2EDB5EA92B924F619B00EDC11AE112254E8DA78963B162D
+H_OutputB = 7D3291D60B55D8FCA8BDFACB5041A791637F255718AFA56BAAA488FEA4E6BFD2
+SharedKey = 9A38FD62DF1A9172576F66EC5F7EC1C9C00A391700879105FF660F26C6744C0B
+
+DRBG_SeedA = 28E8A806124406BE79A55B92E6EE1F7AA7AA488AAF2829EB935AE11B55C3D9FBE67ECAAAA400EAE549ABF79F79F14A77A5F72314A84143A12BD97420BC4DC406
+H_OutputA = D6A6DB6D77995EAE00F84BE52F3560889D4949A962B29F0B95BC1E911FEACA97
+DRBG_SeedB = CF8CBF2CDD604802CA98D7E761F586E17D6165E9A789DEEEC9D153EF148F817D
+H_OutputB = B407FF91A6D3C0AFD695B30782427908A8F598ABCE0399AE6222D8F8869E6F72
+SharedKey = 702DC57507C5FB8380524AB8F6B7BD477A5EADEF8A1C78818E9D0B4BE91E1AA8
+
+DRBG_SeedA = 60F19BB39ECAE35CC5909AAEA8E07D7BB754B73158ED1E58D50CF4633D683178A33BFF06525AB31BD1447222EDF76C004F76AC89821C5EBDF23B869F05F34E8D
+H_OutputA = F1104109A85497FD05B5C13EC681432C69923B82DC84110C12BCE610DD49CCE0
+DRBG_SeedB = 391867DFA1A5666FDFFEF94A40237D5CB68983ECFE6F8ED725A71444BFEDF7F1
+H_OutputB = AA9DBDAAE9AFE11A0645AA58A745B9FF11977A4B9797410F010814276D033724
+SharedKey = 4448A7F8A16C811B69C074B51EAC530F089DA36ACEE969D7F1EADFB904EE54BE
+
+DRBG_SeedA = CDF7BED078D06A4C82E15F06E6B88FC6A1BFD35CF87B8352B5F0C118DA869B7A0FFA86BB4E015FE800562DB9EF25BA1796509E3F85757467EA54202E82182579
+H_OutputA = C1BF1040047D4F099F0F7404C562E5A58881596F1661C4C38CCF5D67F92D3538
+DRBG_SeedB = D353B7F6D079C4E20BDCA1895ACD162F758D09149F1D1C972E054638F4E426D0
+H_OutputB = BB21645271C02A1C52BFF3984C4F818FA19075E4E7E3D8028A18BC482F22B6E0
+SharedKey = AFB65CFC5B6FC891539A3AD9379E6841EC80F9FB485AEDEDAB545B61CB279CF0
+
+DRBG_SeedA = 22ECB2BBBEF13297661ED47D0F2E80136C1F962BD84402E9FC84A938C3EC909F6413ED4EE8F6934312BC850AF701F492F91BE68F126E27C4017E5705CA39C4EB
+H_OutputA = 20244692EA708EDD8D8A15D1A7C09230ABD22744D57B78ADCCFC295088488BF6
+DRBG_SeedB = 03AC8A463A420A4089415BA91FA97DACABB4D7C97B97FA5CAE70F4BA6F06BF68
+H_OutputB = 519857A724717699CEFB624FACEAE70FD79C575DDF1F8DE6CBACCA5A2C1D0033
+SharedKey = 36CB5664D698F69A147B670906C531D702F1AD0CD46ED84A07B641B64ABA832B
+
+DRBG_SeedA = 22F66534F88FA86BC53E6435675DA555B4725306CA612694AAA7361C20FC2250A8EB9F22CBEF6AD8CF331839533CD1DEB80BE13896EA275FDA0FE7FC3EF084C5
+H_OutputA = 9EC2A883540B5940EE789F358050DE777749B3198FD4CE40F523ABE2ABFD4B30
+DRBG_SeedB = 215EB87A8AFC0E0C99251A1C4087FA7D81E9F3CB7F644C1038BCD0169A60CBBE
+H_OutputB = DE64D1530568FB30ADDC4205C72004F6226F88072EDF60D3F3DC249B029DD14E
+SharedKey = 2BE123934CF034ED8200884FA6B3B1A9778F1FE65299B4BA003F5297EE9597AE
+
+DRBG_SeedA = EEC89704344804412AD282D3262FE806CBD05A819F7F4349AE155817ACACE7C9F139B1F38A0F9349ED92F04CADBB716A174616F379CDAC1CA929C7788D15C2FC
+H_OutputA = A75AE9B47D351C64D434691CA8776A699ECBA9A25E5EF685A05334A1E7360F9D
+DRBG_SeedB = 85B98A20556E7D1409F672C764A4F0457FF099EF2B777495F014C09481AD5BB0
+H_OutputB = E5D07AFC9241F9E7ACFDEE65E2AD0AAF02CC63934969E4DBEF4BDB0445618112
+SharedKey = 2658952F52B4C863C8DC5E03CA2E0D1446783099E9FED7EA30E704ADE5FD697C
+
+DRBG_SeedA = 00DF95110DF8F7A6AF7CDEF236E80A2F44701F2BE4C83765710135C77A9C9E5DBCD6D526D4E79A49792675994509C52B66A06B7824548474C768D8DF64B94CD4
+H_OutputA = 9F102FEF1AFBA5C1460D70F7D76650501E767C14D9886945560B82B382B167A4
+DRBG_SeedB = 3E28874BEE349D57DC01A4FCF3032E141650B31BAE0F7595A442C2AD4FED9443
+H_OutputB = 1EE24CE241F4B88CC5114D714B19AFCEA884C4B2E2B9C07850DF60382DFD87EC
+SharedKey = AE7949FF5719FC09C13BCED2FD2C1AF8B6F399ED38C699549F5F95B28D7AA061
+
+DRBG_SeedA = EFBF4865E5C0680DC649A6DB9236E6A1A0D05F1D9B1F466BCCA0B6315588861B815D2AE4409EDAFDB10193FDBE97C8978E929B3BFF1D6C8B456EF327BE6F25DD
+H_OutputA = 2C112841F78D7B14F6A01D445C07D9387596BE98A990A6F7A88B1B7EAD7A7321
+DRBG_SeedB = 0A88A11E152B53297DCC3376DAE706412E0AEE885E680074BC0E5730838C1B56
+H_OutputB = B17C3FFCB181B93B0671827C62C74837DEDB717FB5698C5EB2BBD2316BCD381F
+SharedKey = D7FB65B802419E4D205B28632D392A6AB7813225EB28412C070CD2A795B85229
+
+DRBG_SeedA = 4CCE92C8F0A03A05EDC3FEA0134D346E92FDCE7362679F77BF8A5B13204C4308C7008F5745E69D0E379D15794A73EE9B854F0A7AA19EC240AAC477F700A7FEEB
+H_OutputA = EB1B0D9F40A00DD816A81520F1F7426D14AEA03E1E7C3DDF0C66D135825524D3
+DRBG_SeedB = AC8E5E1587D1B7199843E588D4D51D3109793F40E9F12A4651B234F6AFC8815C
+H_OutputB = 6BFC6D75630AF0F7B4BE3EA175C72D17AA9B60F8FF6D6CB754C7DF1AA3539EB3
+SharedKey = A6FD9E11F3126D8E27C7DCAE879BBA6BA4DEDD6559F07EA0B9B9C44D55DE6215
+
+DRBG_SeedA = 92CEE2A1EDE0A4DB78404ED182544FC6A6B2B50F93084CAB89FF2DC0B50A047AA4CC2AC16EB41E00D70EF34A21C50774E803E800A5CC8C07ED528BFDF57E69CF
+H_OutputA = 6FEB58B70C957325704D617A345416AFE3E659ACBB3456C244040A05E7233959
+DRBG_SeedB = 2260E8BC84A58126ADA2211FF7133CFAED0929A2812BD6BA8C71850093FA760A
+H_OutputB = 8BD8EE94DE39886F9E03D1783F35685005EAD58D114A115631CC3FEF7C6F5A09
+SharedKey = 644B9C7B37C844974FDD65FB13842D8BDE3C0205D3E895113D974934BB99BE18
+
+DRBG_SeedA = B2918DFE295A62BEB9C693D55B3304FE03FFFE2FBD7DFC05DE83C7762E950F45F4BB0EE9AB02784851ED620E800F3E8857AC693F7BEC07B7CA58790867C70287
+H_OutputA = D0B17241117D8DC7AB3A34CC05D05C9F3C4EAC76A8153C5E1D6B281AC89B3FB8
+DRBG_SeedB = 675289E5CC6D7ED1966CAB59CDB0761B4419ABBD9F92C8D342439BDF5D855585
+H_OutputB = C35D4E3E2D50F96A7E8185435BAE8432CF45F46B3CE17B7E177D47E9B9817915
+SharedKey = DC3BE5561B594D62EC4AA2EFA7CA8563D5A42C731CF533E20DA3D6391AC92CC8
+
+DRBG_SeedA = 6550B24F6AE4729F4D829791C2672204E5C65DC02A9856257A292DC27626224912CF6C4FA70F7BE10A549B0B1141C8D41694DB6148C2FA296FAE6779B8B60F2D
+H_OutputA = E7CF64C7A488161F8C8AB8A246C485C13B08A712492779BAC057DC14868C53A2
+DRBG_SeedB = A198E4AA2A969220B408B970F70BEADC6E2FC4FDD6C34A1C17BDD287CB2607C3
+H_OutputB = 8D271223509E0370F3B3E6EFA69DEC914263D00F21DC056AE3DFFB6D8F92D785
+SharedKey = FD2D339C5634FD958F8701A9F0D94305BC34A3E7A6BFDE848B11E083634A43AA
+
+DRBG_SeedA = DB74A009FB4F83107C7E19B924D1B4C14FDBA59F5B6EEB913BBAF4E06C06D0D82951F6B89AB074A9BA16130783DAB5B8DD611DF5A7210F0152DA48CAEBC2D837
+H_OutputA = 620BB3FE4D449C437A1289A9EA8E882E9B3E9C93AEEC33F3B19968ABC344CD08
+DRBG_SeedB = 74962629C5034495A8F7560892F6C2261824776A59277E82D2468C1CC943B29D
+H_OutputB = B06AB2519291AF9112D1AA7977C0C0EBD1E609288DFB8189FF32B13BCCB66B9C
+SharedKey = 208300DEACDC5A412DFACFC83D03FDD73363971D08D62906B9279AEF43F2613C
+
+DRBG_SeedA = E1B36FEBC5F20174A35E7902ACBF502BDA96C3817C7EF044763DCD740CADDC4D916D85A5B14277A11E1D2A63C2612DB429C84D8E0B76C2CB3A1BB9E347600DD1
+H_OutputA = 78AB7B4F5265CAD84DB0B9393DC49A2DFC1140AFF0B46001711B9E50D8FDCDE2
+DRBG_SeedB = 2C3964DAADDA3EB1346178C4A17A27950BABAD46176D21BC5489262B702F0127
+H_OutputB = A6D8CB3A44B4CDD4FED7771ADEEE0A0474019E23433B018255B26D2B1FC2E4CF
+SharedKey = EDE54EE7739CACD7946C2A2BB8F58DA061720986AEC68D64DF0ED3D02AA1D5EC
+
+DRBG_SeedA = 94E2332EB7FBFB17476F0A83BCFFDCB534774E1BB20F0A50BD32B491976DF72252B2A500A5ACE818C9F14DEDC65AA5DF4D9A1A2BE1F9E6DD51ADE6991314867F
+H_OutputA = 5180CF98D991D0D5F46243A38352C404E447F965D7778393DAF3D1416FF19516
+DRBG_SeedB = C46015D87EE0076632759301678E1F0BA6E86C192979B36480A211DA0C9883B8
+H_OutputB = 0B938EF419810EC33AEB10580101B045605DD41422FD77C189E6B6FB85102728
+SharedKey = DEFE556DCF3F27034503E0B9C7B1A6E35CB60B458F9FE0EBAB3E0A52C0830BE6
+
+DRBG_SeedA = 113907A8817FE093F2ECDF80AFE5459E4EE136917A0D2883A7C4DADBA929FC3291A564C4B3F72A5C15AF84895C6A7CC3AF65968523C1833B1193BD01302996CE
+H_OutputA = 00D1630C41AFE3EAAE112C2A32819BEEA5C98B1134B19EF685C75B1626B82B96
+DRBG_SeedB = 9D1CD26AA66DA2F1E1BA78A47C0CA7AD39E5CCCA6280A72FE946E3045B5D87E2
+H_OutputB = F3C3F32E2083D4CE59FAD9760F053E51FE2E7F933C476EBA6E5BD3FBF6628D94
+SharedKey = 1111BF14A82B4BF053DD729BB5FC5121CEDBBA42EA63150ABA7934F171F7A960
+
+DRBG_SeedA = 6AEA42939D92DF54CB08CC2EF7751FE3338C1BBD1A90D4E8F00137D67567071664C605AE1CA9AC85E55670FB96F4420B5CEFD16D2235F66236312FDBE6015E72
+H_OutputA = 215FF9B9AA225A26585CD246A7E5A02BD672B4533E84740F07B01100334ECEAE
+DRBG_SeedB = 1018DBC80A958ABB5D48BD5FD3287FAD72978BADF5AC8A6AF82B1B1CC317DB11
+H_OutputB = F633B0CEA76C3B161B8CF4CA9DEC919CBBFCE4EEDB68DB56FFFB0890AE5294C9
+SharedKey = F46FFEEE6E81CF175DF52A320964C8361556CC3D8805411AAB110A124309017A
+
+DRBG_SeedA = 947A168CCA502D5FBD6A78D004CC5CD4475E9D9BB0F1389C7E24AD1DDB23A329C5EAAB07FF76B3E2316041842C26C49905B592D1303AE3F5DC26AB676BC96CAA
+H_OutputA = 7569B55CA25293C5C4D23C644D8E4B708189F861BE8A4E220A960FCAB2558FF1
+DRBG_SeedB = 41823F94BA4860CB6D212B7CF486F5369D691AE2B30FA8643D7E8B9C2835FB99
+H_OutputB = 3810BC90DA4F301CD41EC56BA21C03E4BC0037FEA2C18551778B3F0AE57345A5
+SharedKey = E382934FF4E018876416F688082B1F7429D25F92CAFFF1BE92A4E35BFAF7B696
+
+DRBG_SeedA = 3F96196994456AEE0CBA53AD21CD580C0F930F50BEAA100ED5096E8069F9D6BD5F655442D93F91CEE0F31D58FCD39F92A65A936341D47341CA0616A2E327380B
+H_OutputA = 93ABCA547D629F45E0FBAD11F944295C4ADC155CAB714C03F4BB487E3DE219E9
+DRBG_SeedB = B20AFEEE80C9B6602E05A28B8E3BF3FFFE7D6C8B795882D5EAA1BBA48D640C8C
+H_OutputB = B4E675009076469B27E0CF6CC148609C7512E54104993D79661D6AAF908A4A02
+SharedKey = 4865D762420341D198CE0EA0D16975B45773EE36A714826EECD5B846970E5D1C
+
+DRBG_SeedA = D5F57A91AB116F024A5CC34BA689D66E0C309FFD97F77A96C13D2C37ABACC8BD095E50638980DD3CF43512F12D4D3F189331984B11C8AD63CC09D11D358067D9
+H_OutputA = 3A7E1D8FB7F4952844F1E28CA84AF8CE21D00032A9CAA78CCBEC9DBA2C441B8B
+DRBG_SeedB = 314DE09F803C3EB25AA39DD9E6AA6D37A87648D1B272ED2C118F939CBE16D7F5
+H_OutputB = E05CFF51A556053F69B3503CDB4F6F203013153846562C1451C098C161128DE7
+SharedKey = F5FE22D08E323F460AA27DE216C31E0A9F5BFA311B9F3436E0A42AB76D02EF1B
+
+DRBG_SeedA = 017F97755AD4CDABF76B4F9750CAD9CC59002A7B58A5DE825BD5EEB96173C7E238D262A207DD07B7C328A4637BFE6E6E13FAF81B60D37CF29701803E460FD9D9
+H_OutputA = 6F77AF2984F006AF7F042E3A9EF05B54CAFFB04FE75E14B251C8A8AF0AA01AE1
+DRBG_SeedB = F18CD2F2904A2A2E1BC94014B7AF3A7C0009962B43AE145BA568C675BFA621E5
+H_OutputB = 1875F160749E191F22DB1E0F75B39E8F8B44F0B00A3F1215EB9CB35EBFB72735
+SharedKey = 4CDE89F251F3A1507AECBC317AFF52CFE8671745E588FB392CD10656906C714B
+
+DRBG_SeedA = C07047FF5E6BA9E6A6A76B471C3425A60D68BDAAA5FC79FB8F64957F1B415EC4F11483459CF43D00E29BFA23A45045203283E1D89D3BC8E13C44C8BA26A41A0E
+H_OutputA = F546F94186BBD17E40080EAE066EA252100809F8E3DA55851B3F5B05BFCF0CE0
+DRBG_SeedB = E933AF495A2E200BBFA5A6BD5ADD27029D3B2F5D104E7B4A6FB1507367287376
+H_OutputB = 098D24BE421A8C7F071863D6F32B59CC92A68DAA453E94AAAC19F0BFD773CBCE
+SharedKey = 8260DBC705203AFDFAB8762DF5D22D298049EB7C4A55F3E87142B94609E31AF0
+
+DRBG_SeedA = 1DB4160BCCA1C6387C0C9F7D877050B4ABB7D8AC23E3C3F19BABC252BD862285FC98004952ADFF3D7CD667BC230D0CF6BE99A5A5C6E139DBBD8A289880B4F793
+H_OutputA = CA092833623242F93B863FF103BE6659C02DB9ADE90ACE91F583A14075DADCA3
+DRBG_SeedB = 52ABE67333B1DF58A94E46BB48DF063199B823DFA9A9CE6BE4A4AB6971626BAB
+H_OutputB = C616F8984907C1A68FDC5453D499E485A841CE7BA821B8A533921385FBEF7A6B
+SharedKey = 088960A3BEF27ED744F6DFF62E384805DB437CEFF15BE0A55A66BDB8F77ED42A
+
+DRBG_SeedA = 6161B70E786D637E280E3A6E441A65FF0570DE29FF780D409BFE592FA0C7CC0EBE6A1C4F8973F2EE757A99644AE1CE47CC641290A89C8EDA476BBF3EED0B6536
+H_OutputA = 596E44B8A1637177A83728FB6955ACDB5F9B4F893AD955A600555400EA4A3BC6
+DRBG_SeedB = 1608B32EDD315C8ABE329F6C6DBBB79F91B89736C770A1A964845823777A5B52
+H_OutputB = 8FED5B59D16960DD6CA31B0EF32784A235F20797495195FC75923F1377336562
+SharedKey = 84318249AA5B42B6063D600803C7CB5A7D61D56E96B1C1F07BC207CA1E610578
+
+DRBG_SeedA = 9F825477670DE65011307CD5152F3656B8DE14FD8BE993DA10351351E7C118670FA3EB09D6AB4ECA13E1E388A4A19DDACFB129637DBBAAC1EC9EC8A0A73254BF
+H_OutputA = F96D83A4DE1AD6ED6B3DCEADA962F87451ACDC8A0EF56A8FB495F126D7904859
+DRBG_SeedB = B00E428617F4BF1245ECDE9E736F177E355DFD84A373B5057453D4A1BADDF087
+H_OutputB = 7D9529B39E83EDD89F3818A6BAADBE458EC933864F3BC8EBE3CFE6953948B24B
+SharedKey = 4E742E9671F3344A9E79E26F7D67F39B7E6FD735AF600195D5204F09AC4CE976
+
+DRBG_SeedA = 85AA99B1F7F92B0A3DB0509B05052DDD766A1A92C18B2FDB002C59B4FC2A0C6040E612D68E92A6C120F4371BDFC363DACA1C2155166C296EFB15CF29141D82D5
+H_OutputA = 15C03740AB4958E632E12C48336984C8794B647757053B655EA459C808EC9279
+DRBG_SeedB = 0986AF26B1720F73F0F881752246221309086EDA823933D28823809C4848EDBF
+H_OutputB = E533291C0AC1F8CBE55BA84268560FC53116406620A39C4AF404B2485AA35D46
+SharedKey = 523C16ED6A0437FFD3F6B864B85B29742EC572DDB325BD88307C890A0C7411EC
+
+DRBG_SeedA = 1F3E8C0D7BD965A359519FEBBBC68EF9035A1600E8253B7699F3A7C9C26FC56FEC6299EB9EA77DC8F799A3E4FC34DEE68EBCF7DBD2A6A7123BB1E28668A9B78C
+H_OutputA = E823DF2A8A7992D49CFEA70E0398267E003A9A1B2A9AF37E7D50D7970BE6C3A8
+DRBG_SeedB = 764CE5E50EEF3CA1F2E347E382D8A02429090D75DE95FDD6CF7F5EA4A960E222
+H_OutputB = D9C5C069C9652A7F698DDFF12ECD12B9F821A22E91199E3C32B3BC9424CF1D8D
+SharedKey = 7449CE2683AB93F61B5407190DDFFCCDFC99E0A7AFD7A6541FEAB1BA73992A6C
+
+DRBG_SeedA = 88B6843F284735B025E829E504E1BE4369BD3964D19EBCF3EFDE0D502B6F5C4C80D4CBAF90CB38839AFB14C4DA9C0291704BFB907FAEF980AD8C975491FF68E0
+H_OutputA = 2BA640343380E20A4C137EA57BA11A461706B4C7147AFE0F70F6EDE99CB8DBE3
+DRBG_SeedB = 7AF38BEDE3DD78175A060BAF933182FA25D49EA8557EA078FF77213A00FA1B11
+H_OutputB = 0587224B60F5A1CE98C1A11081F80CD9583229AEE545E1675F70098A060B9A9A
+SharedKey = 2A9EE590257F7A061AA929D354236EA16CC7569F46D6DD004EC789818EB69095
+
+DRBG_SeedA = A77E22F9518485F40D2B9153499BACA51BFA2100805DAAEF5A8D31C94074A43226F356BB9BB7D740368B75962EC123D0EC37CEAA545E5D8252C20AD6948EA549
+H_OutputA = 162353CAFC4156FF80B3B298A86B844D0E08160E82C0F695712539E673F9FC6E
+DRBG_SeedB = 659993C9C369A11144C05BDC07BA105EB28DB1D56EB6A2DC5D27D34E1951E74E
+H_OutputB = FCDD1AF41C3FBA13AE0149F72201547D0DDE72487C2334C50B2C553F990C9750
+SharedKey = A9D7B745847687A919CC57766204A2DDE424C7860A4E34F5A2250C78A76B3733
+
+DRBG_SeedA = 1F23FA10C164F8DDB0EB60FADDD33AAAABD31FB9CBCB1561CE725E07D1273A8AF2CC1A94C57E5FDFDA76FD380B0E9B16B6D38383C627BD53457F4BFF8422E6A2
+H_OutputA = 21CEF2961E02B62B594CC323FF606F2BBEBEBFA5B9CFF821997A1F04AAF7062F
+DRBG_SeedB = 399CD6C5C6CCD43FA8B4CB1B8770656FAA7353E84CBE89B6F6B4855A7B95AFEF
+H_OutputB = 41A48B264417FC06112AC08DF50CE2D2F4A0E7CB4738EEAAC3B27BCE7B84BC58
+SharedKey = 96007F4205FAF0D5D9A9FA6C769AEE3089BC23E7E618D5ACBDD7CC813154D437
+
+DRBG_SeedA = 61974AC041D2BD1EC709C1636A9D610AF7BF2A91250F46E49284EE5C883D50D6E454E2F7E1B21733CE4957BD25DF81777D466271E2291043254B9F12373CD106
+H_OutputA = B3907F505FFF42029BFEB0D05AFDB76A24555C1406648F63680082DD66046118
+DRBG_SeedB = DDED90BF1A25EBB0EA28A82627272CA86D20D164CFD9AE4E414768BB02C4DD7E
+H_OutputB = ED7E08393F6DAFD2A3A02E931F6E62A8882B77E0ED3BE57B123C4555BDFB9DB1
+SharedKey = 697025D73166952CF2EB9E05D92CF57F4DBC4F91F75974A1274F837E4D55FEEE
+
+DRBG_SeedA = 4D24E8631221076B4D4ACDA2CF0A0E0F73F784A37529BD2B87FF081262B1F6C4CBD6474DF571FE9E5ACB5C071CC09A15D4783A5B00DD7BF93BD35563A13ACA4F
+H_OutputA = 95C13D15D73776B1CC1AD6A23BA92D5C73766D87544507156B76481C8C043DEB
+DRBG_SeedB = 77A913C8531363C22F1B5E83853817F7B8DC3EEBF7502094264FF39B2BDE9EC9
+H_OutputB = 5C6738476943B406A16496ACC1F233974E6EAB19631F507285AFFEF927C56F1E
+SharedKey = A0F78DF524621DBE498407ADE8CD50A9535A34B864B84454C8F00DC20A06DD96
+
+DRBG_SeedA = 12A2C5777AC053AC2A5201230527804B80103BC690333D62201D0D931D81B55FA4B8DAE9C70C029B3CB3220F721B4F763EBCCF1E25AE1D04BF2451783AD06A77
+H_OutputA = E277AD04995A7D14A55753980942C9E08BF53BD4A623CF5C9E0BFEC66C2894A9
+DRBG_SeedB = 36220070771AEDF5D0BDAF3BFDCF76E2C06AE63D59B7AC579056F78AB5A0798B
+H_OutputB = A1B2355787C7F944C757AF6039F37B9FD8837AD3E64E8BC9F9DCAA57CFEC131D
+SharedKey = 87C8F428F05201931AE4C811A37342BC9E37BA36DB0B69F94891476DF2E359AB
+
+DRBG_SeedA = 67B8BD743BCD13279CDB4D9E30FE50709E3160BE8E54A02A60A8EAFE5A03C56CCF1851D5223DA8FB8A09791A0AC27A386E218566BFB21687D4F24069D1CEC12A
+H_OutputA = 9BC5983D99C94B5853C0910BB21ED846125F02DB6EE109763DE0547B8AC3E425
+DRBG_SeedB = CB0BBCDD8F2F3D98B9DD11AD6EFB74949BDC5A0599339145BC6C32180A8B43B8
+H_OutputB = 8C30FE1C29CF99A58145800D49A2014755AA76B1B88C6A24EF9CF4D021DCD3D1
+SharedKey = D32FFB25989772C69997F28ECB471DBF4485A276D94C793934AAB16E80AB78E2
+
+DRBG_SeedA = C9A84A28FB25C3C52A55FDB06C6D52051823230B788A800B3D69520B2D6119D69769A0E9B789DD7E87862055F324B1CB47664D4AB5E613E687AB596F7555722D
+H_OutputA = A8A7FA6EFF629C9BA3280C0CF5E54BF297155C37BF6EB90E9BA2A9CD383D7F3D
+DRBG_SeedB = 42324ABE570C7610DD31A17023FC0D28413301B3ED2BBF1282CDE6CA3CA254DD
+H_OutputB = 58D5F57BC2ECFA7E2974008F28B6634D2F5508258F7D322033D0BC4E7FCF4189
+SharedKey = 8299F16BC494C74AEFD7762F44A74A3DB4673BE7D4850657157BEFB873100D8D
+
+DRBG_SeedA = F7862544316A76B9F0EFA083C36C8E24276B6DFACC553B03C3F8DDB5107AD4CD70BC03AF3372D644921BC117014C0CE03EA656AA963A2727AA916ADCAA5C90F5
+H_OutputA = 6748AE47F5A967590C4D0C4B5817BAD85AE06C4C0B89076A564343B30A18E0FC
+DRBG_SeedB = 31CA425389045D4359E9DE901B10375609E7847FF0958B416FC3F7C2BF945C65
+H_OutputB = AC79B9AC3F76A1E957FE77EC0258F5BBC59A1D890DBA490C6254A53D84B15787
+SharedKey = 960BA3A6C8951FAEF2B2269D4C243865725A12DCAD09772B03A21328F7BC3C54
+
+DRBG_SeedA = C8FD466627269EF5588F5656D39069A0F096B7545216076B555AE053455CFD4FA018079876AB34469C4D56856D1F02452CEB0FB7202AD52FF9E210A09D61BDDC
+H_OutputA = 5309642C50CD973DAA606B62ACF89FAF348FBB2F5689E548763A0EC8C351D1EC
+DRBG_SeedB = E9EE11937653738493127A3C0A8AD0FC978034B87C8235870C09A6FA2A10779D
+H_OutputB = 8B7AF60F42B271F3E32FBB52893224F7497871E9C4289DA10E8D09391B47407D
+SharedKey = 580061F80B0A84FB164296994748D53E7E1BCBF906A8264CA198B40E097CB455
+
+DRBG_SeedA = D87C3C76600C345930672A628506719724A58C5708BE4664A4BFACEB6DF2EDCB7291A00F9743C181004D07CF6FF34DCD5CFB997EAD067FF87EB6ACB32580A6DE
+H_OutputA = 9788EACDE8F1D8FD2B2DA35857E6A7D690E05FE7A6803250BF030C1EE32024C1
+DRBG_SeedB = 9F5A15F5AA06650C8069388111CA9CDDAF62A0E8C783E6E15B56FD7FE35A6C84
+H_OutputB = 67D3F3C86B6E40E8A1EF7F3F87E4F9BD58A9DD7705DA976C3023C14768683154
+SharedKey = 4367B6D0BEFAF6315C83A62471D86FAAD39D1359929D6C65A6DC097B432A6001
+
+DRBG_SeedA = 999EA2231CC98A08C69F597F7D7554BDA3C922F1DA6FFAE4ABECD729F8586D7E6A7C6DAF2795EC0EFFCDBD5D3CDF50307E6BF8C01FDC8E3A9B4E4286EE2BB234
+H_OutputA = F6EC77698FA7E90C41404D0BFE4138772366F247F5A61907C6A854D4060CD224
+DRBG_SeedB = 5D273805A2E3738ED30F1DA35EAA49A968A1F0E869B68F3F3B5467006156E721
+H_OutputB = 50DD2BCBCF81425EB8EF8D1C96DB0053FD3CB6555866A94C1A41B5C50E24AEB3
+SharedKey = 03DC2E742D5A1EDAA22E71259546644CDEF303890A6F3B99615557745C0D3943
+
+DRBG_SeedA = B2CDDCD427676293367669A87EB7B12DB88176DF201F03C559798747F04BBA0DB231C040551F4C4354428680D4AAB6793A04E77855690662824F8249FB5024FD
+H_OutputA = 92EAA1127CFC1088415A00C986C64B1641F52D211BE9243FF6456FA703834211
+DRBG_SeedB = 672C52C164DEBF9B10FCA7559565DC0FD7AEA315C1FF6A0F285FB62725F1138B
+H_OutputB = 9E2E1E34F1038A770ADD65A041702D61BC33F0616CE36CCC40850BCE46F2F07E
+SharedKey = 5F5409A1627C2C8AAC4D35ED7B8159C45705B5922AE69CF80220A6F59A949CA4
+
+DRBG_SeedA = D3CD31EDAA4507A00CC2F95B36B33E4DEAD5DB3ACCF7D6DDE2B77FC98FAD56ACD4F2F43A56DCA97FA1C0396309E4A3502180338296ACEC00CCE1973EB56EA51A
+H_OutputA = 8F9268EDC02F9C042AE1C00E99A43B20110888EFA0F277A3B6128270D8B4611F
+DRBG_SeedB = 22164146D3B1502695A4D35A88A05FDD74EDAA1ECDF7578FDDDAB6F753205477
+H_OutputB = 0906882F35B12C4C021D43A3E8B2CCDB1DF17229F6A83869EA04FEF4C5A50FF9
+SharedKey = D5B8C5E104F1D00D406FDBA309B073F0C8ACFE360A31E07DBDAC4E99DADFEEA4
+
+DRBG_SeedA = 4650BC6EC0C0127385B3BE5FCE28560EEA9B5E3ECEF8DE2B4491A4C91785AE0B9A8C74542EED9ECE2C971CF67CF9FD753A8544F3B695DDAB327F49047358C55A
+H_OutputA = 722F182B1167264FFA63FCCB4A22785221AC1BB488D1223A26ED33C8AC545E17
+DRBG_SeedB = A591B8F2FF4B9591CE01FEB3EA7F208FB6D280A3FF0714B15AD3F154725587AE
+H_OutputB = 41C152D1EAA9C53479CB230997AF5B79C9B894229710D4195FCF1A4C74C2C215
+SharedKey = BD01DF2577008C8CC49F98E4DC2234D79973ADDD7CC81B9BD20326552A63578D
+
+DRBG_SeedA = 812422CA72C2DC30305B5151B5A88123D198DFB09C773AE54CF239A552A51E976F19D273915B5ACCF3DCCC9B2FAEF2A1925E972ABC8CE64AFCE69FAC61F3714A
+H_OutputA = C729A8BDB04D80150C2AD804C9053ECDF8CDB5DF0E88B51FE02BE620D1FC8BC7
+DRBG_SeedB = C454957E4A0B400EB3AFB079697A455737FA698A6A84A2973B60F8FDC3E94636
+H_OutputB = 292C35F3B4C81C4A05FDA93E49EAEB1884DE5C405F923F2C5F421C5A0F897E0F
+SharedKey = A3E55F6C4E86DF7906D07970C49F9F04818314ADEBFA4B52198CDF8EBA273B6E
+
+DRBG_SeedA = 8AE391FE69187ED0D173CC6247B6618282ABC6EC286687F6F6E7796D9E7550C7B5EB38C14359BA71B510AA9DDC588C7C7062343F80C15AB2D38849F1596ACD4D
+H_OutputA = 59293A335227728CDF7E051B84C6194ECEC592A3E8153DEDC78F12BF5DC4572C
+DRBG_SeedB = 9F76E74C3F8C436BC23A5E3CCFC8A506E80C196546DF62E551F26CC2EF34BA1D
+H_OutputB = 2CFA883D1262229BB3ED52C22DDB7CED8862DC57F11FB55EAF0DFB48E31E031F
+SharedKey = E610C3EBE7EA007251506076E935F5EE23E6A67C44890A4F81AE615736C071B3
+
+DRBG_SeedA = 070A2D1DA7EC4A60FE9BE7C181F96868FC2DC0C9AC59CE9AF9761F1413DBF813FE62676DF43B70818C3F2B681A09CD670D896F166FAD1B3C7412DD98C8A01C90
+H_OutputA = 219CDAB50983860242CFC5D5495E3110431BA49D7DBA7744F67C32264259B90D
+DRBG_SeedB = 72A2AC7825B90928D694BFBC6D910FEF61471F7EF7F16E8922F23515DB8B0577
+H_OutputB = 3C50FBE863CF33F5C0F4D2288A75064C65DCB741D2CE12CA0B80C9D1CBD0E703
+SharedKey = B477F3B80FB48FA6D929AA01586B0C090FFCEDD8548B5ABB3BDEF2CEED532727
+
+DRBG_SeedA = 04222836C4844587E80BAD0E0DAA39605F8D8671CE84C32850D0629C25CD6807AA4BFFF26A57582A8CC9BD2F97E598B22607F9A2E6BA8255FDD4F5A1050F38A9
+H_OutputA = EC27355DBDEF33C2BC91751F60F993D8BEB976F596856D1A9F91D824002C35B2
+DRBG_SeedB = C46ED3EA2E30B7519DE9B44B9307545BE4E4919C1DC0CF1D377DB060056C441E
+H_OutputB = DC57A441390DB42F6ADB9D601173B51589A257928151A93FFB9C5E770DC50F64
+SharedKey = 7C81FEB4C49807230DB0E12B9C14E792966D3CEEC327DDDB7179FC6BEA28BEDC
+
+DRBG_SeedA = 3735C12EE3AC694739F5297C13B7031437DA73E2EA72DF6A3B2BF3015FF2B4E280F497088B1A2331E943DFE45A14583A5F4281B3E747E6CF8A0E8C1B20BFE8AB
+H_OutputA = E88F507B1CF72423D68C6A8ED112ABE96B757FAAD569964E7AA940D647D79998
+DRBG_SeedB = E79783AEB01D6F01EE1F47EE66E80F434DA5FCED356E3D92371860C922201B22
+H_OutputB = 754E91D8B3583F270299B7B97A9B03E4807D6D668C9A766BDD20F500950E10D9
+SharedKey = 872BBD45C392440E0894D9D4226E32E92367F58932819793412834568AA02BC3
+
+DRBG_SeedA = E61E14A2031B1B594849AF8C79B61AD17EC4793C5BCDC9E8DCDFEE61AC5B47B7C61B6D13B4D6B3671C389483055F7BA1EF5D5DB0723B9280F21273A064319D74
+H_OutputA = 1E3E17646FA03920E2CF239191430597CA456A991E25B302A5900C1A00C0741D
+DRBG_SeedB = 571D42E519FE5390BC1A8E8899EE1D6E88E6029A709574F5A2D15E0D568293B8
+H_OutputB = B301A0D9BE16644F5067B41E40678CE54A1EB87116AFB4E3E383F2A65715DD0D
+SharedKey = BFA42774CEA60771330F4F607BF595B92659987A3C271222C016F4FDE857EEEF
+
+DRBG_SeedA = 25921A5F9067917A09DD48B90AF4BCF24D2762483ACB4D86C302666B77092497FE1C4E4B5601A73DD96DF72081782489F807A8B1C0C501AFEBB3C4A84C03A5B0
+H_OutputA = DB537F1688F1BFF7DA4F7E8E76190E25A3C0992742A29120D38E3861495637F9
+DRBG_SeedB = DC36B06A8037A4A87E915D41EF8550436B0E1C6EC6B6561382379B92D5C6107A
+H_OutputB = B11249DAD9C8F9C76DF950E48F8041873EC67A637AD86B1E6AF94AA0317BAF96
+SharedKey = 3F97DEA860AF175C1637B8ADF3A317AB0B451AF07182C6F7DD48A4647D2CB005
+
+DRBG_SeedA = 66EED1873EA2B0C49BC870431C3A726F5D30894F65A6B36C19EA4A0E486D048E00658CD36B8F101248E6B3BE74BAFEE6DA831FD49675EBC4D82D4D27B44DD4EB
+H_OutputA = 4D2B53FD09C1A83B9046CCD668AE6EB0FF9F52FEB12B27AA1261305A6D2B9B80
+DRBG_SeedB = 847919314EFAD18717CE03AED97B401AF66456CFD21608A14C6BB74723FAD8B0
+H_OutputB = 87BA1A3C8B73D89FF577B74869A610A7522C2E9FC9EA43D2AB1B8E11CEDB3983
+SharedKey = 0DA8110ACAB1D86851AA45D9B2DDEE795727C7C72514DB8242287D7E96E4CA0C
+
+DRBG_SeedA = F3BA65C6B6E91ADD05C3EF583914F9FFDBE246FECE0A1280DB7A82E73CD25E3BA67B6574F00E954E0D22490A91EF3A5C272F2AAA229BD522E265096E9C2A1BEB
+H_OutputA = 9E15BC0F139F16741625CF66DA396D7D857FC43444C6D905E0C44249A19D175D
+DRBG_SeedB = FAD071C456C621E888435E0809247D80EE0458BE013D742478B5619C86666E76
+H_OutputB = 1D7DC8666B6A865C20C72670DC1F01B02C3EF42ECF24D3CC863398FE339A6A57
+SharedKey = 44F8DB13469F717CD464864EFAF25857D3460919F6EC9324E1B3FA7BB3748E1E
+
+DRBG_SeedA = A02EC157B9E0D3314BF81D95750F166B3010A2EBEE4759F6A2C74B413082A3272B5BB928A0827DA60290D01FC6DD024B538D548E9354190973076ACD4FE1029A
+H_OutputA = 2FA30C163E8DD2BA7860294C91D7245526654CF6015C3E6E7025C923FE2FF75D
+DRBG_SeedB = 475C4B2FA2826B25E2A86E1BCCE7C25F1C59BF5C14E5A6BFD0669688179A4E24
+H_OutputB = C9D9C35BAA93375B1DBD21B493F2CD42DF1C38D89B30C61BF9235613081CBC27
+SharedKey = A850A9FE332326317AD3837E0D944117AF5940FFB865E2E961CBA05ECD75A6EC
+
+DRBG_SeedA = 05E4D8F56B5457DF618878B82A1E395298431C7A6AEE6E192E90957332C775A0584288034AE690DBF61DC3DDCDB2F939BEA09932E744268DB6F91CD52315D072
+H_OutputA = 75B152AA2F7216FC1DDD249FD07C8464802833193CF385173CA252457D6A5855
+DRBG_SeedB = 2A7CF849002AA454BB4327B8CAB827998FD09A7FCD36B3B126B03C6AC1073253
+H_OutputB = A7D5D8267C5BB7B0B89D6599A3875E499B757ED6C925055A659B3E08002992AA
+SharedKey = 2EE3CDF0DAB84908F66C05A6A7D2775758C2810142D18669602785157D8B4C23
+
+DRBG_SeedA = ED280FB095D50613EAB390E42EB088277A8B65A7A512D6400E66B190D91491C27CE52513B86CC3B27A76BF66F471A4BF70CB7A364CC3125A1847F9F594BA7C27
+H_OutputA = F34F994F57A6F6A1DCD1CB7D2E5B49BF0652C0ADAAFEDFCECA2F36E58146905E
+DRBG_SeedB = 61FF4710E3F9399CA2C53628DE80C546DD404242036FDB2ED5B12784A7001540
+H_OutputB = B4FCFB9C01DE8FFE44944CCBDE2513F52C030798FBE7A1EB45318848AAF646CB
+SharedKey = 41BECE988804C8822E003B70144FDA60A6A4DBCEE6D477539876C02B44BA0234
+
+DRBG_SeedA = A3BD1C99AB0A2F1A10033CD2DCFFDE8CF698D009BDC8F8759A06C8D7105EE0335FA018D595D9077FBA2D141BEB83535584C0F71C1B2C86E6DDDFDECD790942E2
+H_OutputA = 062B265DB93A156F0FAABED694F40D5B27BF39794C3F08ACE06C2348C3380C53
+DRBG_SeedB = 39177D974BFE480F1CE9CE6BBF273B90AAF12E6CF4B6539BDBA6573D47560B47
+H_OutputB = B4E2D31E98617B03DEB3658E19FFDEBD55EB32D891755029A41A30BE0540AE00
+SharedKey = 3BB277CF4A40BC1D32DA558A3B991B386FB05F02FA9754F5A44F2F1C3B0ED439
+
+DRBG_SeedA = D05547521A262DBC7E2C4A17185FB2D34CDE752B71C9B5D57216BEDD66D8AE794E14CB3A54B6DAA6ADAF13079B0180FE901E83BD66BFF49FE36AEBFCB998A5B7
+H_OutputA = 2556550A955828DA11A70C62FA2257789F28DC34036824CC80B96D5F01AAD083
+DRBG_SeedB = 0DCBE81240051679E8966AAE6ED43706769EC06FF042456EBACCB7169A61748C
+H_OutputB = 0FFAE30F6F3BF89AAB2FEDDB82051587442358D38DF8F6A42E616E696DD6B85B
+SharedKey = 5DDB0B9A5A1510D0A904E40D71FE1ED886A28CB14A006A0DFA683EC6DA3ED5AF
+
+DRBG_SeedA = B216E6E0FA3FB8F80E07AC2A4AF466E98360E5BA3BF27EABBC85E8C2E7A488723D8E942E014E46B14E308A660C2D3CA9FAFD3BD612F585CF177575D10CF59C2F
+H_OutputA = 7F0045D7CA82296515A1E8FA13FF82FCBDE2449AB2FF9CB5BC6E00E1F905136A
+DRBG_SeedB = A115EBBBE0086F844846C83CE88936CB384EDCA588DB7FD0A1F705814B973891
+H_OutputB = E569777DEB4CF5EE43307F7F376C2064D0E17BF8781B88A0A442C1B31A7C697E
+SharedKey = 104CA2B609AFFE6CAFF6DDA74F3B03C3D92E11F11739A47DCEA5D5944302E05B
+
+DRBG_SeedA = 3089BE688698B3A4E2B6716D7D22E1A063BAF08124F8E4EC24D7919300CA48067A78F48E865910AA794F2652460ECC440D0D0CB5740DBB439760A06DB4ACF512
+H_OutputA = 99B9E41B76537B2F51455D169BF01B7490E9A9C5B84606376D085BE326F71440
+DRBG_SeedB = 360173F56E888DAB993583498DB05D2F799D5A645379B122F2CC5B9BA8FEA7FF
+H_OutputB = FFE874FD3BD10D27CBD5528CAFEB8D14A941D92A16FBC4C2A52FEB2B636447C8
+SharedKey = 92EFA2F3541C58D4F69133A8336426D46FD8D1AACCFEB642DA6E899A2AF80077
+
+DRBG_SeedA = 9E39CC2819EEC9131CEF7A51AB33FE145A53F2328C86C93388FBC1E336FD0AF45681A4EF449EA58780F2FF97E7EF558F9ED3F868FC049869AF308DE87838E40E
+H_OutputA = D61F88BC646DBB28E930A870D28B3E45D20051ABAF5D1251E372E30E7855DC09
+DRBG_SeedB = F38B82EFBD69E5207332151891B3E29D89D0ACA39DEFD2409796C56640911A0A
+H_OutputB = D8FAAAA8E3D53B932FD30896B328DFD48399AD87DB5305F4A67490B4EF0086E8
+SharedKey = 522BAE8D21CC95A666F9EB3CA17E1D295BAD65B748BBBAC1D79671FB401FEE61
+
+DRBG_SeedA = 51DCDA165EC4A361D64E60ED7222E939622D1C2868FA223F1E3DA6198AEAF62A27473F528F7BEFE920D2801378579D597055E28E02E98B7F1837F0249EF4AC4E
+H_OutputA = 5C19566C8820FE7F049393B285080E77F56EA676B279645AD764276DF75688AE
+DRBG_SeedB = 4DC0E58DA32F72368C1E096C8BB62463CEE9CDF7B7BFCFC1C29CE3D043599FDD
+H_OutputB = 87238BF06F092BDEE318F5221EB958FD0C050ACA579CE0C54CB917A1F994D7A4
+SharedKey = 8F3BCBF037C88F6547669698B4F7453EC5D933A48F22BE5A01589A9D62EFA7B3
+
+DRBG_SeedA = 37C4A16C32238B40279D693942FDB5941336E86288065ECAE73A49F4B2CDA841B48D59504BC6DD8959732307B74F882430D129605DDB2F07E64D12EDD0DA56E5
+H_OutputA = 065F86E3FD4D869FBB60A3CA26228B386B3D82C83D857FED4E51787364618482
+DRBG_SeedB = ED30F39D3A3D5D0AF7291748427E682A2F9479BE0386859B77A1EC9545EF6584
+H_OutputB = D62C64AC866BE8A03F30BD8550D88E2AE97265DCE9E8E848BCA5C98C4730BFBE
+SharedKey = 79FB8051AF0A2B2A61CF6200F0E44170C56B32C5C00DC8478E92D54FE2304286
+
+DRBG_SeedA = 3398E26DC70B37C03E0D27C5398BE80476C37F19B431D827899767FEFCD36C98E694C7FDA699A672A75862FD25FAC45865FE177C7EA69C19EE5E71450BA67D83
+H_OutputA = C840FC01BC3FB98124F30AA424EEF19CE7FC50FD5630E1DFDD78B6CF1628888B
+DRBG_SeedB = 3093E2A2509307A3D90202C16B67D6F67A5F17020A2607E30D5576DBDEF06EEC
+H_OutputB = D85558E19836E001D3AC9DF34DAC8005CB8816558BD00BA5BA39BA5A6624D2E1
+SharedKey = 3E7F0661872FE7FF521F42159CB9800B4B99F933CF210193B77C074710BB562A
+
+DRBG_SeedA = 1EDA49354981736862B991780F627D9BAFE6348BC9F6AB6219E14B2BE06AFD43119CE3A9E8618EE08080B54B3F3538F9940AC4F385803644412A9C6C089B563D
+H_OutputA = B5BAD901F37288D90981FB87709FD00FCB473160E085B44F4B748739E0542220
+DRBG_SeedB = 30536E2242E00BABF01B10F4C2790E0D690AA019513F6761FE43C2D03CC46276
+H_OutputB = 36DBAD306099ED1B4970C38388F7851A1E8B03601C7145C38BAC57D6117B86F0
+SharedKey = 6B2A3794381D8CB110E691A38E308D4DC2B023AE65D03893609D7BD5CAF0B57D
+
+DRBG_SeedA = 31479D16F563BFE61D97FBD70CEDEF9AA4F03222E231E6E47E3B18595B5F868AC9671C314ECC69DAE2F47A7F364B597568C1C176564BB9A6FB02EB668AF19B5B
+H_OutputA = C3FACD0118BCA0ECB3214E30637AEC2A306C204193B17133996BF1F66D06E19F
+DRBG_SeedB = 616A188FAB6CA14B7E7631AD750663175ECD211DF3F687AA1DF2771E40778612
+H_OutputB = 6C921279FD2723568AB6538E21CFD263A019232DAC111492ADBCCEA01715B0D2
+SharedKey = 01485E195A9B8558AF9669476E042FFEA8ADE5867795BE565D662854B52817ED
+
+DRBG_SeedA = D3FB1D3B0F4E54501DFB0C36ACFE9072B3923CFD7CC97C798B2BA0F8B4A3167E191BBE114DCDDB884034DCE9D6818B71C7C155D70D9A80E3686B3504B3AED1E8
+H_OutputA = C03790D9C046EA15F22B6660F11BF90C5820AC5CED296F3A0A4CC22271535E93
+DRBG_SeedB = 692B22EEEE3B674F0212623DD620C8277DE184EB8E98A2F1F7B04F231A08D51A
+H_OutputB = 76B323553972A64D52DD7B7F9930AA20602C3D5E1EB874A1BAF4F283CF0C9E43
+SharedKey = DD18911E01B0A3239FD29A0E6EA3A8AE34C4AA1BA717B25AF31A79519212A46E
+
+DRBG_SeedA = AA2F1B1A826021771F181E41F06FD8B669AD61BF2A525073ADE0A8C380AF6CC6DA18AB303ED6FA532480F2C9715265691F5D91C38FF4413E9B55E45F2FE909C3
+H_OutputA = BA2BE704A6E4DE1F0AB2F9997C9E34D719CC9959B4D457763EA415A4BB3E5C56
+DRBG_SeedB = 20D7A01EE2F02A403E0A5C8F66AB9CEC3F656E41B4BE6DCF2DFA627AFA3CFFED
+H_OutputB = 89B2B88DDB37A0BBD0A9A31E621AE396ED2414EAA5D23DF4427327FFF55CFD7D
+SharedKey = 2578B01316A0AE3131CD5E89C4A1C71E40E75F2CABBF887DD452F656768E4E16
+
+DRBG_SeedA = C55295A24FE3273C72E398400C3A21DA8B05F90CA307B8BC584A73D2F45F7EF0ECC91E44D0CD764458FF781AA3615F4618749497CCADF593CD8E20DA0D731D7C
+H_OutputA = 378172A00F9134948F6DDF4B7927E386A4AFEA7BB759C0013C5C78C5D0A92B2A
+DRBG_SeedB = C28412BAFA7496CCACD31299829A3E8015B96CBB0F2CE0C582EAA8D267302D96
+H_OutputB = CB04C29309C230D7A85A07FC5F1A21D5A01967585A6C534EFA680DAA241D0FA1
+SharedKey = 535D91188E15936E2127B166AC6545EC686E0A527B90506E82A1FD38D7C883A4
+
+DRBG_SeedA = F82D850C5C99C7F6DAB956BC34C4EB7CB1D6DC9827F53DF7A647C3A05A375FDD0B670EFA40C197F4447CB3D5AD5D972DC15DD9AA43AB50553C7D69A6668F4689
+H_OutputA = 3D994A7DD3C8C1FB7AB5B76FFD7BBA2D8DF8BB105E9E57244D9F23B763C78A6E
+DRBG_SeedB = A420D2436154C0D993DBDB171109C8EFC4E8833C5A82F714A5DE72C0778F47F0
+H_OutputB = 04004B3A422EA29457812CC8FE03212163B639A71DBA0C2CAE3ACE4969F0CF9A
+SharedKey = B32064A6AC9F9129C4FB66D47A312465F02927FDF728DA431CA95C15706163E7
+
+DRBG_SeedA = 27875028E7815E7B03024EE80DA1E1D00D33082A5E87B0F377C5A082C47BB5F658B4DD0A30FD18EF813F9714040EB3DFC40A1E02672EDD694589921510AFE100
+H_OutputA = 9103BEAB843113861FE8B7B7411E44EBFA22CD30F6523F483AADC14F07013B84
+DRBG_SeedB = 0A42C83B8FC2A8B2BA30B0ADD98B5F97B525C301205746CA37DD26039064388C
+H_OutputB = 56CBABF7A83948830015E93AB7C18AE1F3483751D2808717F2F3167357C053F4
+SharedKey = 67468AE29B63EBF14BF069A20F2893E77BA5B5F789DEE1C406B5A3235CE45712
+
+DRBG_SeedA = F902EB5AE952CEB963DB4731A1CF7D08B37F412DB1827E8D97858A75CEA4037CFD2B84BBD354A034DED891B94A59B59C06DBE82438951035D7B7B67B1E49B50F
+H_OutputA = 521B474C4287CD8AF1E40BD6C3C1C5BC63D90A8C942C774C35D2932A8EC85F67
+DRBG_SeedB = 2C8463959712A8DBDF683874CB756EC7814A4FF89C5D4AFF98B4683F6C5CBA65
+H_OutputB = 9AFA9CCFBA8A40FC74DA7ABAD08F69B6A5F9B2027BA6068328E7D415D8443A37
+SharedKey = 5DBF96AE2484808DA457FD821742E77991FECB0B8C673189AFCE5A50423D5C24
+
+DRBG_SeedA = FFB35508B293608116A52C0F86556AF20156CBCDAED0D6E2A240F6AE5C3FE3B394238FE3F953894462F2A55087AB4A44A729F2C54FE7F5D731B6C5D754C8D30D
+H_OutputA = F3D1E2193B18D4AC02FFEF16442B4785F83A60EA0324F0FC2B78BA9854C36220
+DRBG_SeedB = A02A2DD455B720041F45E16ECB6D4564A8711F01FE84BC86433337B8088C09FD
+H_OutputB = AB8B7D73543CF4B6E37AD2953D2B86D710B7C7A70B7EE43B4E3AAF0CFDF8EAF6
+SharedKey = A1BDF15B965632EBFDB6CB6CAA522D12897D3932C637415BCCC24E73EAD070E5
+
+DRBG_SeedA = AB717811DFA9CBB5E41BFB56927F8DD7616CE398C8D2EBFC1CEFC4CAF3DC7B3C1022615DE83998E77867DA6A1844348C4F25262646ABB6682317847FC1C1FD0F
+H_OutputA = 6FAE035894FC8021D509F9E734D7C21CB798CD06A0160E0F3F572E9D23AE948C
+DRBG_SeedB = EE47FC6E434BF7E00CC32E81D015F6ADD4B4F6E46638EAE947FF45B6291CEF6B
+H_OutputB = 67E09C1568A24FF574BC9111C3E1058B174257F7221363AE31B93DBA6E537727
+SharedKey = 71B9C6501626A3F94F33B0263DAB2519EE7CF5E29B1C591C1F8586148BB4338C
+
+DRBG_SeedA = 13B4751D991C5C7888D4C649C4A708B47E6A87BD53AEEBAADCF67BE1F90B68A0347DEEB68BDC1022BC53ED3983811815B7F5B8F11BA3C5E89248239EA7167514
+H_OutputA = B37AB96A8B5C1C807B5B29CEBD1793A45C0D56A72FD77F03FF43DC27EBC28521
+DRBG_SeedB = F93767855A038A85A90CF0CA7AF9C908531E9889D713A3F5BE598714982EF2B3
+H_OutputB = 6DE212C1000B607BB36A78D153826C26CF47F43BF1E251A098DB393A4B234533
+SharedKey = 25FCC4B0BAAEBEC637181B7E081D6916D4A3933826FD4C1DB1364C723F204ADC
+
+DRBG_SeedA = 14CB258CB6B41A92319A10C3C08F6540A4922B663B2497F5690334B8EB0254D4593AB2CA40FE7DD0C09A763ACA59C427E6B49FBE59BA48F26DE3B5C66136F244
+H_OutputA = CC01921EC47C89F46A2B29CE93780C5537746865BD6257253935EEC32F73D698
+DRBG_SeedB = CDAF3F494357927A71044526B1933EBF83ECF274A67E2F78BFCAB03682A7E1EB
+H_OutputB = 3C41AF062FDF73558907B59A8F6C53EF45A20EFF8A06BF3E83EE8493C46E920B
+SharedKey = 31BD983E66298B2BEDCA6B086E49E251AAEF8B94FBE5CC08ED21D7B5CE97BAF0
+
+DRBG_SeedA = 298B64723DE4D57B2526B3C1A23342BC41201068424CF57239633A16452C831EDC38E7B0F95C9D7467BF53AEA9182B7133A53A4D0E465B5E86E56C4C0378AE47
+H_OutputA = 49C8B8F48AC9B3479217F5D5E3BBDD672FD8C0681D3A5F914E527C8195192F2B
+DRBG_SeedB = AF8B8C79BD10E5C0F73D980A22A22CA39A00E07511384205AAB023CE4FD84E63
+H_OutputB = 079174CF95042F27A843A5B02866348E1B4D43976932FACAF3C0224BF6B359C8
+SharedKey = E29290E141A4E6ABD849977F1648DEFA927E48B39D9773DBAEDF07EC76850AE3
+
+DRBG_SeedA = 3E109F444BDA7513C545D0AEA5792C4765389BEF204696B19081C2BAEB6081C51579E45EE5345DFE35ABC58022E1AA28571D3C21BFE29769319BB39F6C80B65C
+H_OutputA = 5B8DFAC7F4138665EC33E2AC23C4964475885914B4BB28DDC60D0C243DA558BB
+DRBG_SeedB = E751C80CB0090E38739038CD9AD9EF33EF268B32F2C33AA548DBED605C78E323
+H_OutputB = B319D60B098A8721DAF81C679ED8FA74B5BE1E6B8750AAB808CD1573AC1A6B72
+SharedKey = D1FFF0F1DF9EC426051799396F1C238B6E0350F44EE7F07FFC8896B0966B8D26
+
+DRBG_SeedA = 1CB996FF05844D4371513D121001D256DF2A244EF4D618F0550957E20E354A66C170B0E5E3B680B055AA817BC0A6B511C33C18F2C10A39D98680CEC56B291C29
+H_OutputA = E37E1B5EDEB95F70BA5C59C56A7B7673865A94034507D552DA705E0010AA706E
+DRBG_SeedB = 56166334CB543249AAEA40174FC0040A553AAE60EEB875B718B9F6ADD1D743B6
+H_OutputB = A225B81CC7127913495E1F1528742377796070345BED4FF912DF149CF2A6F8EF
+SharedKey = 09168698CFCFF5F9E62B6CC63E443F4486708E8C91E433B318850BCAE36DB958
+
+DRBG_SeedA = E789BF56BF58305913AA9ADAD1E2899E24F005A1D81CD16CE850818666638D38A79A73A6F2185977397DF755341572E388952C26A79FD30EB6BA343A7955FBE0
+H_OutputA = 11A5C5D4FE0109AB4AFD64F104A2E28E80A1D75A0243A702928F33BF7E9A6056
+DRBG_SeedB = 387A3D53C7C54F26DCC1D497B1DCF309E860D36A616FF29530CAF2D5BFDA6CCB
+H_OutputB = 9678912C246A127336459B5CAD43A918575E1E39BE37E345C61E64609B2294BE
+SharedKey = 0D0AFDE4BC6E07130E22FFA522FCFAAC5693C583CECA22A741BB920C536530E1
+
+DRBG_SeedA = 558FB51CDD8AFA020CF0706A1DC24BEC27E073F616240E74805BFDE39E74C371779E7A6921BD348B0B6B8CDB16129A85C03DC22B38116A75F46A77600EBC67FF
+H_OutputA = 712064A7D763A3CCCBA7AF2AEF544C0156995A7BB6EFF5B4596457DA4FA577A0
+DRBG_SeedB = B24933E4E1F23AA311899C2187D0570A33833D2FE2117EB78CCDD6A6C43DE0A8
+H_OutputB = 963AE0219B12BC582C835EC7600335E147F3DD3BE97B94606213E7C75FAC31EC
+SharedKey = 28984723F1816315AF417D9C19C3605DF530C52C9DC7F06D80E2830D837B7AFF
+
+DRBG_SeedA = D49AF78A97A14DD557632E1BCC4927874BEC74BA268E7D3A75171A3018987A57F8B73E91A794E0F8E915C981339AD632DE480B7B7FD34A0C698FE78A9DB880D2
+H_OutputA = 6B909BC7C0B1867B24565182F046F2C7868E6B278AD2AB6966DF3ECDB2E33DD9
+DRBG_SeedB = F1802E3BC7164E505DD4BD23CC554BBAF64B3F50D16BA904CD1A017FBC3CFC1E
+H_OutputB = 85264FA1DF63D8D180405E96A3997A04FDA11AD2C36AC15CCD18353063FFEE43
+SharedKey = 1D36C3322849793522AB756E7EFED2E943C9D8D7D0E4FB10813F78909DE1BB3E
+
+DRBG_SeedA = 603873619781DFB4B02F8C1D9897B35E9C9D697F8CBB87706C43FFDBFC1CB7D3511DFF5D042B5533CA2C630AD11D81264F51A930CD90020FB8881433713B165B
+H_OutputA = 9FB5382F0063A01924B3F51F91A7C7D870B9F3E6651E8E3FEA48E3B46003ACF9
+DRBG_SeedB = 392F3A2381A3367999B9EFBC1062D677586AAB796AC5EA414C22A59A18335202
+H_OutputB = 2B3FA730077E61B2BC5E76C097AE8638F4512F2EE316995FA730D0B293CEE52B
+SharedKey = B5137232042E8FB2A46592FABF1BE4878FFBCEE5BBA12C8A317206BC3C9DEAE1
+
+DRBG_SeedA = F0977A087D30A4311C3016881B552EB15E73183ED5A030328641E416315F00CEC00891869B3C032EEE494D020F446E470E86AA09B2841CBB22DB3E265A559FB6
+H_OutputA = 76F9980A0658D8B8958BEE2D0ADF33BD8080AC84C233A751499253BA20DBD4E8
+DRBG_SeedB = B4376A897251EA852B42F5BD72F385D7EA1A3EF2FB86FA854B4FAAD6129F6F22
+H_OutputB = 6B8CBCF3E5F15646E98944AEB4C57E5D97B6994673CD03C32BEE029DC858CD30
+SharedKey = 79A68FDD5E260FABACF08BDC300C31E7F5357F1398EFC001D9993B3CDA633B46
+
+DRBG_SeedA = 332532CB03B16B11E880642089A1E4EF52C0C427BDBA6726F6EA90F5687C587AF724F3FAA647712AFCCF578A96191A3CDE4C330A56F2D70DAE12B9A30C0F29EE
+H_OutputA = 2FF2F47B825DF1448A232C9FCE419EA83363CEC3A3E148F8B4997E6CDA7131BE
+DRBG_SeedB = DE04A35890A12F96B23066B8C58FD22DBC8943C329B5CC22A62C29AD09351DCE
+H_OutputB = 2A320B418FFF05DE9F3707BC847670FE3B22658D5BF4B0A55F4CC1F859DB816B
+SharedKey = 373DFFE491C39287786DC850E4707D79A2EE2ED0F9580D527DBFEF7400D82FF6
+
+DRBG_SeedA = 82B9F67D5DD0EB3C42344F30177CEBE0E7CFEF9FA3DB6F8D059966C9D2331D610B68D64EB75399D431023309C3F5259B096FDA9B7187854CA1DF8E6B34ED779F
+H_OutputA = E299E78728A6069BE4FFD39226385AE149A4EF27C50FCBDC32D209918A061C6F
+DRBG_SeedB = 93BC101CCC57A02C189FDC3B297D60EEE0E253D26B7A0DA4C997212D8A985769
+H_OutputB = B79925C47DF4ACCB116641334D945E62DE150F2F89AFA46158D5039C5122410C
+SharedKey = 4DBDA6EBE94F456DAE69EA33342993F953FDB33B35C1A78ACD0669B4DD49D508
+
+DRBG_SeedA = 02A52F477472ED9DBD39B34A98225C2757F7B8BECCF999148913B1F12E09EA74854FB16E2EE4A32628E63F9B901167D21E4BE03CC7F72E6BCADBC6D16DBE02DE
+H_OutputA = 1D8E4F6E378D3DF779A07D92797D85EE82D00ED6C5F16968CC4B78F175DB0C2B
+DRBG_SeedB = D561CB3F6ACC0B389E48D31536225496786938D8211629F9192DC963CB7DA199
+H_OutputB = CB01D1B7C0490CB1C8A871DB5A682D6F2C61EC70167BA2057866E6F702B45EB2
+SharedKey = A5E2FA1D7801EC501ED994801289260D93E4739C5C7348F6F64943A392940210
+
+DRBG_SeedA = 8C666D679CDEE9BDD4D0BFC93ACE1D1A7A00D6C10AB00060DE79B7800CAFA2B734CCBCFBE048C46E449E62F2812CD8C9C1D4A445A863B0AE06C6CE92CCD1FA47
+H_OutputA = 34886A07320C4847175C574E8A192D64BB04BEEECCD6CC4E30E4DCFEF8922D39
+DRBG_SeedB = 86954F6D7750A61BA2BC7BB801920D771A4B2C476D08030E984CDE45E8D10D51
+H_OutputB = 00316C9F5298501FA0AD61444D5C7B19BC7D1CD1C3D314703B3CB4E14E57D4F0
+SharedKey = 9B53312F615FB5C2BEA02E5336B58FEDA39000271C72A4408470798A247A51EF
+
+DRBG_SeedA = 18C474B38C0DEA1092883EDF0C2795F332A4435080AE331F71682D4899CEB389BF75A783A8E81ABF5E7BFEB952144192F134A2576EC38D355AEBEEB875999F48
+H_OutputA = 81FA72FC54723256B5F7CFFAA76641495084DA844ABD224EF98D0ADC823A236A
+DRBG_SeedB = 1E42CB762128495425B3EEFAE94AEB8C55A0378C6C91C4194836384F8DF28682
+H_OutputB = 64D21A981C917726118E2246583BC27BDE6B4505D7BB884831590A2DA707BB31
+SharedKey = 650AF4F07B82697870C6CF379CEFBE5C3C6B3123B38246A3835364F25E7BCBEB
+
+DRBG_SeedA = DE8E250661384FE51671C978611B841887528BA4B3636A084DBFABFAE57B8C1CEFA822A20890601B0B6338E4E1B1A6C53E8B9CB47A9BA5543C62EAA61534BCAD
+H_OutputA = DAAAC1E2A9297440FCE71628D6F9125CDA8344ABCD166D2FC9D1716F68B01BEF
+DRBG_SeedB = 172DDF8B78AF47921975D49361E9CCB65811FD26AD8E5842F79663EA4B788B85
+H_OutputB = 7C664FA7D49DE9F3A799F3E785FE4BAED8F8CBD4041FAA8B8DC79DEDDDDFC33F
+SharedKey = 81A7C076AA66B3CB27009C5D51BC4D33A5D8E96398DF979D6D53C0A58832712A
+
+DRBG_SeedA = 2B6D5A0E2493362BF8C01CD2A4C035A63D89F1D28E1E4AAEB0DEFEBD8D95722D2DAD94D05B8DF8088DE4C7E374C19F5C8198EF6C44FE7EB55B65E11A434358B5
+H_OutputA = FBD58B35983C83892025421435F18A6F40E7196FBA7F2D8202064DBC022284C6
+DRBG_SeedB = EA1B064E01C222368A2B745304AD3F63D89ABEEEFDDD1425E0A7694F74B4F2D0
+H_OutputB = E208CF3DD87705462CFD34ABB2A4D838E2F7ABF7FD0FCEFBF918ADFDFC0E9097
+SharedKey = 6ACF04B2903742F06A256CB31FE5001AF523E47B25D08AFBDF8D3DF3055A50B0
+
+DRBG_SeedA = 30390E2004E862C4426AD6D2622355E7BEDE1785229787C31566B07A1312371FAF7BBFFCA5D788ACCB761E4FA76B67B31CA546CB060BE4D7D6F76F4AAEF1BBF1
+H_OutputA = F01E3AEA6967AC57ADDD1B52A17F41B2C1C98E1A456645B2FB7A3398D02D43C9
+DRBG_SeedB = B3428F276A3C567192B2A8D57EAADED34E3C12E391C93B5667E048AC01E3FD3A
+H_OutputB = 09F9AE09F6DC8B50CE2A56137F93FC35EDF4C6283EFB5AD4C2BD07A60F99E731
+SharedKey = 52C7E106CE19932E874AF45732472B167FD85E0014D0F50B94E1D0115AEE04CE
+
+DRBG_SeedA = 039B4D40A914AF7D707A7705524D5A423E6569EB4C8BB9670E09257B10C307232A5C6C6BE28C7C7A264073DF67A7AD155CD21FF82B1AFCF778CF958908C0C8FE
+H_OutputA = ABF850914F142CB0AAE914E88E11974337D4498B1828BE55C67E1C2FCC7907E8
+DRBG_SeedB = D76CFF104E8963CC5773FA00F80DB503B471320F3AD55C7EB947FCD4C4906043
+H_OutputB = 6B15EE5E4D1638C6EB3905ECE49945E7EF65863FA2EDD71BBE536C6A74733783
+SharedKey = 87B53559B6BD1E7F2A91703BA782833816A4D0C102A8CCB2B1A841D94D2D3B19
+
+DRBG_SeedA = 9D6BABF1D6B41008D136F0595D01312E0137C9C680F261A5B7219C19299F78DF8CB255044E0A6355FF7F0D1DD7B758493AA5BF1AFA0EF8C5772591F5C25D47FE
+H_OutputA = 2257EEEA22C35F9F0D56AEEB6396761368ADC46B8CD39A0DC250B25590617F05
+DRBG_SeedB = C81B252E54F2C4619CCF13A163E379791F5122B969F13312D7B03DE985AA45EB
+H_OutputB = 6B0F2FAA74EEF46B585E4B02D5435667CA24B8C7F4E6A7F482A8CBC9283160C0
+SharedKey = F3B41A9EE0FA8989C4AF983C13162FA957C930474EB5D8EA6BD90B4B36B1DDBD
+
+DRBG_SeedA = E33E6ACE99D15B1440E128F854142CF0D96E18FB23BA5F79135172765568DAC1EAF3F8AF9033AEC01654A4389F8214E4DBF30367C4244035726E4E28700D4754
+H_OutputA = 1421AD5B94BAD12FC0268AA2C8A598D5E0110A1508A20A5FE9ABAB2CF184CAB1
+DRBG_SeedB = CC4A2F4D6FC6545D2155D96D07F6C32AEA32068556D8B8C0CCDA2C19CB1B00BB
+H_OutputB = 36AFA5ABD71732621C97527C63F72AC089415207D9A6F8F8F3813BD0F0CAEFE1
+SharedKey = 49EB1B1A5E5E773EC44EE809AB9BD5380BFA0B3FB00E8B9BE1F6FF04CCC515EA
+
+DRBG_SeedA = 1E6906882F5430FB70FDF5951DA0222E6516C5B9A26707A2E985E7193E1989FF15CCB1C827AFECD7C24682F6A7F026BA82B7269004B0AE152826739443370896
+H_OutputA = 997AD90840100B97F8FE6414FF69F8B85012C9E60C9219E0CABA0D23F44B4798
+DRBG_SeedB = A330DABC6F8DFAEB21D47354A0C9CF113A41D9B5DC993469C9B1B9EC84700F7C
+H_OutputB = ABA80DD82C11244FD75443FADC43459BF04251330ABE584FD01F965E2A9AF81C
+SharedKey = 63718858AE5FE8CE2AC8BE92C38C530E757724707573FAD5B98F4AEC1DE79BAB
+
+DRBG_SeedA = AF66149F08CF8AA8A466EFC2E959892EED30E83C743BF9BAC88244FC011B87A37D78B8322DEBCCD4238E1A29556D4B30C9548A6A653DA82081FF4ACAD6727738
+H_OutputA = 9B8587C825F55A55355441A0747D7052CA197E9CCF28DC08F62C1344616030E4
+DRBG_SeedB = 7E33ABB9BB265066E66A692AA4988DE829CDE22E687314244EE068AAF46C7A5E
+H_OutputB = EBFB1E1B0B49B7DC83C82EBADC17A3E3AF20882106CF186455C56434A65BF7EC
+SharedKey = 77CBB005EA8E0521E3C123C52EE5E945A5226F206AADB51D8398FDCCFFD5C174
+
+DRBG_SeedA = 7CD76B33B8836F5155A4304E017FDA3638E97AC36158114064D7FB38AC535942B6D416DF8571A50CA391BABB06CBCC81138902BE64D8F12A1729D900E0BCB7EA
+H_OutputA = 12C0AE18F92E022AF088415F38718D7F1FD29CA627D624E224A263AF20DE2C96
+DRBG_SeedB = C65E158F1E7F72D1A28744043366CFAF2FA42DF50BF9CD6A4ADFC2AE05801F34
+H_OutputB = D8056B8BA973865ED6E3D433C9348836680F5D77D2A888DDF1692DADACC51E2E
+SharedKey = E01D541A126A3BBCD87DC9C61371C9E5373EF5C2AB351B4BBED3F2FCEE73568E
+
+DRBG_SeedA = AC24EA59E6E3CC92965AA0791B66C9E812FF1636CFB54C09B5A24BE7CCEDA56197B2835D61FFB809F6F0BDD59665965387FD9D24CC48C21346756961AC74AABB
+H_OutputA = D68838E68D0B161BCD000B7BED2275635F1F2B04D90640EA6BD3EC3658B6D5CC
+DRBG_SeedB = 14B03DA6E294903A0ED7C938073CC1652BE42F983631F31AE56A4AA8FA1A2308
+H_OutputB = BD2FC234347FC3D6511E712F9906BDBF83E35525C6D33B6FF459CF491C2ED865
+SharedKey = 0C117F3B50663CE83F39F6AC33C6593683DFA0D300366FF8FEA8557EF72A2461
+
+DRBG_SeedA = 17FD7697334182A66103493C5FFD9F8E96FD0C5E4F6F89A8002F965A38BEB72DB1D692C8EE2D63A46754B405523C14743F3CF4E48B9674D24860A3EB99F240D2
+H_OutputA = 1C6E18A773C03E142BC595B50685B0F69F678EC49D95209215F514CA1AE1C156
+DRBG_SeedB = 1967036086477C8BC0F4C75913398302DEDCF1354E955FD2AD1C1A89DC93F36A
+H_OutputB = B5E58702E46D4A6D5F824C46FD2DB7AD71A4F328451F3D6220847E174145F0CD
+SharedKey = 9BD209BD6282CD153EA9B6CE5623F6CC7443369105A7565C20BD9458C388F979
+
+DRBG_SeedA = 79308524993A2797B45539E40AFC42627B1D77EC7FCCBBDD2E7A20A1E0BF2259149ECB619CEE78931D92C79BC02D900EF24BCFEF0193A57310B1CA30B1BB1525
+H_OutputA = 4B73718204AF81788139F4AC32A38E13366D72A8CD214CDEA3E5B37B555AB0D6
+DRBG_SeedB = B9327185DA36BB90590427FB1E4DFCF3B86E5C183373B48E3B34A848A194136C
+H_OutputB = 7D3040767AAE584819F66A4E3AD85B8CED913A9A8D59BA3329D6182475482488
+SharedKey = 99C2710230BDE00491BA46AFD0BB1CBA2DFD2820CB80C926B82B9C079C9B679E
+
+DRBG_SeedA = 7E4232B4D0D78F536C250D98D5E7E00D2BE80B5F69F639BCF7D0C42BDD9790A2CF26A9AAA3799B43AA2FA083FBD2314C4546825CC9B24A9C2CB17BA8CFBA1ADA
+H_OutputA = 8A8AE8DDECC0DE22F8F2DA1246A39882B4B6D1A6D2DA427AAA87D0114EE7048C
+DRBG_SeedB = B614093561EA9AEC3DB548E44A24291CA2F62B9565CED2949951E69718D1C6D1
+H_OutputB = 958C168BC6DD1A996CA6C3E7EE69CF350909AD3128BF41651C1FE659CDBE278E
+SharedKey = 302FCC6C49194583B5C3F6FDFC5B2E38D35DC1634C6F799F7F8981558FAAAC49
+
+DRBG_SeedA = F0DF44E3EA967AAEAE7E4F7B097C94482BEA07B0E0A44925E4DB47D7A7BCF5C1835B6AD570B149E04D5065CA13E8AC91CCC1E6F48F4E321DE3CC770CBB1340FE
+H_OutputA = D28D1933584FF14F4DFC4448E66600058D2080845C6F5C1341CCD8344F8E09B0
+DRBG_SeedB = 7CC3A0CBF647CB4C646CE6CFDB9E7F2DCE6D12B7DF7D153C403F45B98F25E558
+H_OutputB = E2E87A20F1AB9A160A8DE626B304BBE7890C2297FAE65450FE6BC432D7A812D6
+SharedKey = 79A3510001C0847A3A76DCA9D08ADE479BE2D6EC4C2907EB90FC34D7D05F632D
+
+DRBG_SeedA = D929785918D9F3C938DC73BF3867EF7BC8EFA91646E671A116CB07CDAA7E13C8A9BCAFDC03246D51DAC4F5F82D83CBBD231FF946B846FF67918A4471EB15DB42
+H_OutputA = 51B1B65C27C0B5FCC9A71B9445436F187889496C0825F7DC8C712235F415A5D6
+DRBG_SeedB = 45C894F46493B7272931B21F8DE683ACE3F09816FA371873DEAF33ACBF5F603A
+H_OutputB = A44F9A3026BC95F165C9FAF13B5A6091D245A4EAFE2ED4F82D28349BC7820B7D
+SharedKey = 05C823E8E52125AD569C46CFD2ACFCF2D99D4CE250534E31A0D185BAAB49E42B
+
+DRBG_SeedA = A3CC322DD76722758BCA58AC50685860F47D4F0F2E3CB4A0996943894502FB3179DD890562953112B70D98CC78B99EBE2B9F344A70530CD83E094CDB944288BB
+H_OutputA = 16FDF702BF700D29B8731DF1B310B1D0C50AA9330A353A6E8B16090A308628CD
+DRBG_SeedB = C822DE60CCA284567356164F2B55F32F126C3C4C95B7073134A90520504EB02D
+H_OutputB = 8749C6AF116F31B06FB083CD691AA101D6AC97FD75BB96133BC89E14B680BBCF
+SharedKey = 810611F5A6C019F9CF237A1EE8D20C4F5FE009B677B1E28F24BF2801B937F866
+
+DRBG_SeedA = 73F215D7A0F0E04F2C5F512A481D329CA1A2E79911E7AD4FB66AD6ADBB2EEA93A69EA992E3B8C5B88EDBC7188B99CD79B3CEF1E3C4D3C9AF9AB8858B26ACD9B0
+H_OutputA = 6D518239CE4109F2F115B3924798D6F656EDD359B471A61BAED62D08F22A7663
+DRBG_SeedB = 0372814A859697CFFB0D676F9F811A64EF642A0A5AB1179E19AAEF4744312D32
+H_OutputB = 5BFBBFBC735A9CBF352284D035CC1C3EA09311417F3B9CC2E55E79D085DA0A8D
+SharedKey = 002F41A6352CD6B930FA68B85C50A21CAA01E4F2B1FAE3D81949CCE1D249E221
+
+DRBG_SeedA = 439F3499413B5F1BBC0B1950D2A6C15A55A0CD2245E5E8DF98622D0BA9AE96F8C0B01FACE2A998866ACC2F8EF30A968E10E0A6C8E062302170CF0078F4DE2EBB
+H_OutputA = 3907BB7DFCBF4058E1184E0B12635AFA9AC8B0A9AF0AD5D9BC2985FFDA0135AD
+DRBG_SeedB = BE55D35E72E37FEDE92E952A198F8C5A343FB972A2FEDD1B932D3F52F304FBD0
+H_OutputB = 3C605A4DF4AE2B426454F689638A270F9113DD27F8F8A4C9E639C61934BDA417
+SharedKey = 6194E672CA241726E0008A8166684D6D02DE705886F9364E806F8824341FA0E6
+
+DRBG_SeedA = 1C6DB12F59365709442413BBBB616E9909347585A8F2AD3A1CCEE79C33F52D781C0B0184020AC476725E8D145D4D0394A88FEF14D74D53C5D9B6850F343921DE
+H_OutputA = D603E0989D3C1E5E4632AD4E10D51F4B29E3F72B4D399D34A79582B5A9612E4D
+DRBG_SeedB = 17B599FC5C73A09931CA8F544058A9B05B76D0C235E7FDBB9E78A303AC07D2A1
+H_OutputB = C95578ED8738F88A600793167BCB13C21D10C4744D72C5B47CA3081DB5C0173F
+SharedKey = C1F0B5A2F2FB990ECC2FF56C6DF6C43BC223F4C534ED843C026185852394E315
+
+DRBG_SeedA = CBDCEC74241E3B045975DCAB4939B96C641657519DA25EC7676408BF0B2CC3DB5510CDC906F0AEB0CE7F10B931138E7D22DF131DD702DD3E83FC85489A6FFA3F
+H_OutputA = AE4F5DFC567B41D6EA39498ACD60369361726616E6DC970CBB3FA1D61B77678E
+DRBG_SeedB = 3C07217CAAF09A305855BDCDFD057E8D5C8BC1DA02628E286347BE6875E50CDA
+H_OutputB = 5B9619CA6B1CAB2D39AF5C2C5BD6AB4CCD633635E80F9CC11243D9113EB3E1DB
+SharedKey = 97141E0E8D111D0828EA39E516C6FB4AF8CFB61C6E4CB28ED556A376D56ACD27
+
+DRBG_SeedA = C68904937140F6CDDB65E0B65BBA710BEC2FAF27CE3008DD6292E210A248A917B10E0D66288C7047149326F9865B343B6819EF3BA47FD337DD6294F7FFC460D8
+H_OutputA = FE62A5437541F48F05EB00C640B72F4FACF0D399BACF3A19FE5B62E60F1BB65E
+DRBG_SeedB = D9FB6E651DD280C5C7B84DE6914FAB06C6AD583C4BAEDFB5ACA44753F94EDE9C
+H_OutputB = CF74FB95EBEB5F2A6414BBD1BEDB1F954FD2E5BAEF95EEB339718D5C39F6C982
+SharedKey = F0661894E05D1599D8D7F0E38D8C4B827F30A985D8B10FD7078D684B55E7BCFF
+
+DRBG_SeedA = 9CF2D0E1F467D718BAABE7541219ECB5F2335DC5D970509373CDC2A6321A2FE4F7BB8604647F8E3415B5FB595217D0087715BA0DC19F41F4B94F73FDF4291408
+H_OutputA = 625FD4DDE081833746458273943208A32DCB0939C9A892A4FCB2D2EDE743AE4F
+DRBG_SeedB = 4330D48437434A96D649C4B37FE7592B11BE823E76E5361CF2D25BE1C3C07AFD
+H_OutputB = BADC965FA530799060F6F6EC4577B0E23CA941029231186B829FEAE22C05D715
+SharedKey = 2C37A9070756D041D257BEE5B83560DA4938E3900631A42BA68B086E22A24595
+
+DRBG_SeedA = 2014BA30956A7C2018E71060D12D9481F6AD9C4CF4C24212A30884F0F2664A71A1A1367B9B527B7B665A848C1B847AA13CA412E273F6B99722BEE5E0FC1B3960
+H_OutputA = 79129C30CDE8A8BD5E1DB2419D35728806D403DB2F1057128AB9642F15477151
+DRBG_SeedB = 207B17636C2249F437307F521CAE1B6973C0A12D8CA962D9F31AC14865590F11
+H_OutputB = 1AE7CF74C1890A86D07431239658D4AB9D126BCBB6383C24E1E80D4105FDEB84
+SharedKey = 613173B182D44443B0AEBAB1C59B72C06F28893207DAFE3EB722683C034C633E
+
+DRBG_SeedA = 4C05F3C6E1DF81757D054BB3E7D5E1BCB35ADBE88E0910EBC6FFDD821167E7E4A0006C6502281F8C011EEE48BBD7C5099F4F7E5E29CCBA354D8FFC704853FA2F
+H_OutputA = 1F4FC9ACDAD35FE1E89DF67E49178D596F2B5BFB72F63EEBDAD76B0789388039
+DRBG_SeedB = 73B2981D568247D240A4D2C8C9DAFD0F4BABF25B12BB3E53667FD12851FDEC3F
+H_OutputB = D5DEB9DE4CBF9B7BAA4AB52A3363C17FEE417B75821DC0F25ED5978DEE3AA78D
+SharedKey = DC91377DC362062C94FDEE67DAA7B434790B0CFD83905EB12CF8B3B1D84AAF47
+
+DRBG_SeedA = 8694CED852C4FAE730BFF069F8AF5B72E20481507409EDA63DFECE65E7C73E999AE1F95F05202A9EEAA5C44A56D353BF53954C9C1060C378E3BD042ACA1B9084
+H_OutputA = B148CE1D92FF4628EAE409B35D8FB8CA3952D8DDAB707BE8D96FFE5B1373DC3A
+DRBG_SeedB = D74FB7D8BC588FDF62F3AA8EE579A539BDB974FA35E0BF39AF1088063CECB764
+H_OutputB = 9F0ABFAE4734A8435C5D2316282171E9AD2B6FBDAABDF8F8A435E2A1F0FB981C
+SharedKey = FF06FC735A879BD45E7ACB2EE58E3DF7583D32855D2C6C2D8FFC5ACB89CA42FB
+
+DRBG_SeedA = 00074A1331364A7365F7F54C7FB0E4D3C7217EB8C1059913E5A0416D8C19C2A5AC7C49E003439413858C9A71031111B7F2D96DBD36E59392456B06F52D40C424
+H_OutputA = F95439B2CCE9FB709DE22BE98526C2D6CA280861276E4C2FE795B06E8DC1031F
+DRBG_SeedB = 448579B76E41F1A6C9B3520DD03606BA5E6562C7B7EE2748A12B3E9664388C8F
+H_OutputB = 7B3678EE0B01571154E9A906A81ECDE1031983A75D050DB2C058D56100BE0B7E
+SharedKey = 8E66042348A062183ECC09E872A3E2E36F3DD97C727BA4107E7838354A3B10E4
+
+DRBG_SeedA = B08B53F4CDF5D4CD28CC1602AB1B254BF6EC6AC82C8F6689427E265E5AFA2D49FEECDE7F89D27F78894E57A99A2631D7C0198ECDF7A2C4F42216B8FCDFFECFF4
+H_OutputA = 0AF6B700E063D6DD0EA2F878F4C9620BA1C7B076C6B52552D848D73A0B3C79B3
+DRBG_SeedB = 3038689B9D85AE4B810EDD01D1BA6975EF27AF58F02CEC98499A855DF7CDFC5F
+H_OutputB = 751D1AC52BD9B22CEB5AD7937799A76DC0BD2DBE12563E042CF0B61495109BFD
+SharedKey = F47586B17704837FB7AD6C20061FD80EAEF68EC9EA5F60BB6DC71F51B19E84F3
+
+DRBG_SeedA = 4BC8327AEC2E0726138C2E519B5FA2A7B4241C42495633474A6ED00C6ADB2A8D416D5F0199E01CFC060F58D95B98AF1141D35E75604A8B9634346F37DD5F296F
+H_OutputA = 3EB668E6DBA11199E089EF93EAFBAF0055CBD30B1B59BC104E366EE7F30B90AD
+DRBG_SeedB = 327CF113EFAFB84BFC1CD83F3E3959599133CEB01E74578A94ED5D9AFFFE26B8
+H_OutputB = 48FB96EFB2F20181D09583742EFFDB8310A75601F78192D7C0C72EE157B5C21B
+SharedKey = ECB9809D555B3CC5ABF42AFAE3FD47BAD2F880DC54A147C3F3A45B9B5A8F4F0E
+
+DRBG_SeedA = 94EE4898CD480086B75C679BC3D34B630F99DAADE18E30765CF98886113116316B9C68B8D67EDD18449E0F662F000DED1CCC86E56400E166815AFCDF4268C599
+H_OutputA = EB7EB4B147F831136835247186C6EF6FD51C4FA5C7EB76A26535053C77073A85
+DRBG_SeedB = D1E73B24DE2D127F1E4C2127BABDD9DB992AD0A5B42977E066E99F9DCC77100F
+H_OutputB = CB42A643B407B716D913671D9AD7056459410CE26580BA95C7733C0D9792EFFE
+SharedKey = 95A5D35ECB5470830A6335E4E7885F314EA9FCB7B2411D6845D8B0442FCA31A6
+
+DRBG_SeedA = 2538B2A856B54DD634BC593C670440149EE9C273F3DED07AAE5050E7E92359458861C65C17CAE10B02F472D85B042EF8A23C7CF8CC48DB6F61DF09D535527099
+H_OutputA = 21FF5D87278458FEF607E858929C5BDB4A27FF1910D46864F2D8A0CCDC2AD83E
+DRBG_SeedB = 898E73117D8636EE6AE8B8D7DB1442DB182419FBA3660886CB8E1A4EB225A355
+H_OutputB = 60BA66EFA27D62E4C1D50589F5215FA2CA89145FFE5B8D2C7BEA49CD7820EC49
+SharedKey = DEB0F6EB551A9EF5591BFA8BFC32277E40D59CF692CAA60DEF3D19F2C7D9FAF2
+
+DRBG_SeedA = 0111466AEE9FEFCB91781110631452E56C7C1852676ECC66E689C3FDF699CFC4904C655170F463FE22BA4E559DB7FDF2AF69F3EE4AF5511152FF20DA7043F837
+H_OutputA = FA6767E9B07C4CAAB80D5986BD720EFCFF4FE582C69DF1F4116B4408D5C0802F
+DRBG_SeedB = 2432B9732B0891B8D9253A906BF287912CCA6F80207D5EF0FB8C8F7C594FDF41
+H_OutputB = E1EEB2A7C860501D215AB1C7241E4EB81C15E043E0212ED6B98B5023BE700F6E
+SharedKey = 648428F759BE9C3F9071F4A52B41384D4B8C94D02803079C5D0689C0566761EA
+
+DRBG_SeedA = 769D6DA2BC9753B4F1B26DB2D6EA22F57CC8BED84BB28568637143284854EA69C40D223A1E0753A16563E295635641E54964A7F9D39BD1AD61E72EE1FB795D67
+H_OutputA = A01905C134D0A772DD64552D98F2FF72D0992279CA85CB2475EA8D30B73D3522
+DRBG_SeedB = A2CC29EEE712B47E4F0168ED303EA7EB212AE59D28FF671323DFDC03310CEB8D
+H_OutputB = C55379C0EE9D492B006C5916FC46829E56EE2017FA0B4D35FC9D8C5CC0BB22BD
+SharedKey = AF9300A2C5391D0ADE6D98021098048C6DDAD703F0EA97572FA03692A035D032
+
+DRBG_SeedA = 025D6973795791F8A923456968E756FA9FF8E939094828E0F66870DA66446CD4465E23E0A222BDB9AD8F80590DB5C59E166BFABE22BE94F0CE98E1015FE7E717
+H_OutputA = 7C61F9848E30C8D1CDAB2396CDB19C9B9B601A5D47CF30B91C8D1B40027D76C5
+DRBG_SeedB = 5A37C33D44E161995A152161A24EB0EA5ED0E7F6063E15DF0DD34FD1CD5609A6
+H_OutputB = 0BEC4CDC17032752EF00EBC6C77214C9E11D31E1C9EA02F7AE85C5481AA0C6DD
+SharedKey = 709387183695D0E1A85BEFAF5754707B282324108A29D8BB6A160515783C2E9A
+
+DRBG_SeedA = 4151D5C759205AA62906AA527B3A0F68A18DACE3248DE888E6EE5327201CA3C4F4C32B5FD03E2325E1941F7138A5D0622895D0414D2826BE21AE2542AE942261
+H_OutputA = C8577F8A518746C2FDDEB2E46A5DA6FC751CA8A251C106482F16192281D15ECD
+DRBG_SeedB = F97E6C2B1584A9F78C5FD036C75CB59CF80545812B7D953EF66E1F3A96F8E913
+H_OutputB = 0F563AD7158648F8A82B0EE40C69ED1EC4D9F5225B56DFD84C3503E23B427077
+SharedKey = 84F436B6EE7A59381629AEFFDBA7B95033EF677147945AD61DFF16C44AED9762
+
+DRBG_SeedA = 158FEDCE17BEA77CE935FAC82D53FB79D747A54F32BCEF6E4260283C737BA396BCE3789E78164F0D725FB7834163A4A6F97DCFCE79CE6E5FEADE869A4564D36A
+H_OutputA = 11CE2D484F76C885C0CFCF574723181D8BD225E2C05B9FDAB3BAFA28A271B342
+DRBG_SeedB = AE6EDD363095A206F8E80CA011E3189F83D9CA62EF107E0580C39CF0462AED10
+H_OutputB = 9A8E318E61039C8D70B8D7C98676D59268D69BD83EC3128D764A13B2E65315CB
+SharedKey = BD8EEEE0713CC09C820C80426399A53F5E671B608035D263222A6A8478EAC18C
+
+DRBG_SeedA = B4D22D660D24B9A23DC96053ED7BE33C951F5D6692915AFDFE386114532617C01AB8A81B8DB4B9C1099316117CC48AD592EC488ABF6075612730A82FDDC6AD46
+H_OutputA = 571770D17C96C8B6D26CA8D6F8352360449C7E3A32039735CCBD6F3DA5D1C8F2
+DRBG_SeedB = 2A9D5BC6E3C1145859E8F4CDCC450C86238583A25E035E71E6096F5BEA526C66
+H_OutputB = 50033BBCB1AFB10CE1B9229C993AAD603086DB2D3B8CE3C11A1B37D00551F5C3
+SharedKey = 1623DFCAE3B157DAB117EDBBFE62169D3B6E055A70B1BD5A7D17F8D9412B7535
+
+DRBG_SeedA = C0B78148D2E08B87B67DBB783DEC40005A191B426D72BCFA3FDA5BB563E2F220F7098631042A7A72A1CD000D6D34C5263358E46A3FC198549C5A99B535727D60
+H_OutputA = 3779A2B2A92FB36E39562347C9FFD42802603B2B5D72C72823F92B84A09BE461
+DRBG_SeedB = 619B9DBDD8F8693789C63DB76C86D91E65A91363296604960AFB09A203F6BA60
+H_OutputB = 1EC85BB685585243AF2CDF60F45ECAE920418039BACCCF34D696C41251604B0C
+SharedKey = 51D094151494546E28FAA1F78733F2611E7F9F63239A587C733FE99FB13DF85D
+
+DRBG_SeedA = F1BD6630AC8CC86EDA41554E09E7E5B57294D992C6FD210EE3BC77E68391EA3185A23C1E859678C1DE495F8219413B1C1B6C96E311C11EF3A1A60D5122D4B3A7
+H_OutputA = D88A306B4C828A5254EE3A46858E7BE79D9668779DD95FD7DEB35DB6951025CA
+DRBG_SeedB = 63B5590DB4C9EBE19D719FAC27AF6ABB1465EBEFB912109E74334EEBD39E253B
+H_OutputB = FDE5A6A4C6670D91D497B17815557803BC790A3D29F3E5FE307B7501FF893EEC
+SharedKey = 15FCA5B9FC10B22BEBE0B546BE3FBF46C52FFFDABF73A06F2488347DDDF5B327
+
+DRBG_SeedA = 9F2A542BD27105B0ADCEDF78D7964EAE2FB5002D618889308906D997A72F88433AEA9F23305902FC9877E6EDC7D998B46A2ADC8F3B384F699DD0825F0926E4AA
+H_OutputA = EFDF0978B17B92AA6F2A032A7251B8DE072F2CA44EBB7BF7F2901982049180BA
+DRBG_SeedB = 68446D172803EE3EB1B87EAFC79C0A830989E32E13A9B6D5E9CDB30E95E45A98
+H_OutputB = 875B4F94A6EEF6DF5E3C97F6A3793F010CB648D0A48C9A7CA98CE602A4BA9A8E
+SharedKey = E6CFDFBB9BE558AD626D3755402EEDF3DBCD70059263D63171DB62538B051626
+
+DRBG_SeedA = BAFF88AACAFBDA19A7CB24AC57D893DBB7B515626A669BAE41D7EB0A59F625A75DCBCC4D55AB96DD1F7EA733FAF20CA8F2C741AFD017349A6F69EA8D293094CD
+H_OutputA = 16496B27A85B9AE6CE3928C6295CD71C8D4FE28ED28D7A5DEE3DE78D1083409A
+DRBG_SeedB = DF32626B3A25EA4F3DF053A532632EDB2DB27F7CFCA508C5E0A1461F7F42FA99
+H_OutputB = B405B1116CCD87567A9AF94D2D7B44D28B3478B88D11D70CA757B7003328482C
+SharedKey = 892740C66EAC6ED70573A382E2048F32CE4E17CDA8486F1C8AC2F0A56A7743EF
+
+DRBG_SeedA = 83E5A56E2784DC5A2C3D6E5B40412935E3DBC1297C50DA799A431C4CFAB2D48CB30D9F912556B74BE184005B3895DDBDB60A57D8405CF3385A0D313D32CA2373
+H_OutputA = E0B22AC748971EBE33B51D4F4DDFE69E95874CFEC482090BFE4EB028E5AC004B
+DRBG_SeedB = 15BEFE165648A5C07BD19BC87977B8916F8B4E93F26844DFCDDB77D4E5395A42
+H_OutputB = 62D2D03F311D142B3573CD3D42DAD15EAFAD44D70A42017A8E40C28E0B538A11
+SharedKey = 8F09CEA7CD72F9F45DED24110706AC7D40409FAF801B94C09BE5BF9904C226B6
+
+DRBG_SeedA = 7CE40F4C6633F5A07104212AE0D32832747FCF5B616E0C861A939A4024B4066DFF4C7CB39181B90350114240E39DC1E354CBE2B558723D1E7CEC7FC918D83BA7
+H_OutputA = 201089E3C4622D66498F55E62F4C659198E311C269EEFF9D2FBCCB4FF1119D0F
+DRBG_SeedB = 886880FD857CB4EEBC450497EF54EC3087C6593540E7D55250A7FC7C94C8B1B1
+H_OutputB = 81ADDD09F00DED04E1F5D164F8D146E1181868A2476631273D73327840C8B345
+SharedKey = AD25B34A7EB64FD1A65071289BED5819A7A7312F3F7210D3C6BB6D2F371A41CC
+
+DRBG_SeedA = 4B92B5C47D38FB64320CE8B37738AB67EC58D439C170DD4E9DC3B6E41F74E510E88143CC691884AB5759183150C1D31AF03614532F074C313F310462CF111838
+H_OutputA = 832C6B968EEB397C7623C5E5F35C65DE568182F24C001B108573C9C20619A35E
+DRBG_SeedB = 65A0BFBF21591F06B398A69B6ED159C02E6E0EE0DC7CAB1A1C9F0FF5DEB4F713
+H_OutputB = 21897F4308AF918E294A59B18BA7A3FF4C1F806F3FDBCFEBC4DCA9A228032446
+SharedKey = F8D08C0FC670B4FFCBF0D1C3684B42B32596B29A2A508D8E4E29380BC69FF5D6
+
+DRBG_SeedA = 329AA6F31DA70B81713958175CFC61D92186B116F4050990D7BA2E395366B38EF684936C9655870EBC5471D02E550E9B3B309003DF98E86AC2B88F1CC492BADB
+H_OutputA = F1F82D6BE10D424CAE3FC1CB743FEC154D12AABA1491BF5FAEF09D0BDBF03FFF
+DRBG_SeedB = 126994A65A1DFBFAD18E2FCB9068100766C9861129A869295A19719769FE38C5
+H_OutputB = 08F95931AEC652D7D862B0BB0CC42B37B8B76B9CF8CD91C39C76992F5F5C7D54
+SharedKey = F41EF6C4FA74F996F270E91D546C56D2CC7F60A7FEB7F17BFD92F174B126868B
+
+DRBG_SeedA = 03AD900A4A9845455E4C9B83C46F53C196996CCEF78AB34FE64EB6DD1A0DE3ADB020255C3770E9BB37308262C1E297027904DB5ADD3B2C6742E03A0094BA7766
+H_OutputA = 751EB5C2C442E738418F9F1B07BB9552503B9E9BC95FB857530661F133D5A7CD
+DRBG_SeedB = 9ABE1CFD5A278220A211223AFF93EF2725E0A864F1B0E7EE705BA6AF445F71EC
+H_OutputB = 43BEC690354D91F2D6A4FEFA9E4F31217DEF72C6DDFC4CB82CF7DE110361F0D3
+SharedKey = 6B9DB2E4429156614E122B7EF1B467302FD3C93D4CE4618C781E9888DA6DC4CE
+
+DRBG_SeedA = 592684FE9FCDCE485308114BE64D036DEA8C46657151B4874698985D15135F39191610F82BF8031A8CC08624850DD09DAFBE37A1DCA1F0971B672D38290C7E4D
+H_OutputA = 694804DA439B1AA539B7497731157CA4B2673E5260096AE02CBC91A2A117A29A
+DRBG_SeedB = F15814350A88D3D3544154084EAB4D7F9D93C647F762AFC9062C7FD68BC89D12
+H_OutputB = 250184498DCA0A92F5C898FB41A1CD857F62B25D8D161C8B73D0F319354C18A8
+SharedKey = B48939386CCB37D1B0C9AF15F8BCFAFF01FD67E313C9D529138BDA61D329299D
+
+DRBG_SeedA = 037D90BB60AD551DB37D9388A8A1955D2B483C66B5FC2562E80ED1CABA09688A331A50A53EE91BF00300586794C586428910FE8E61EA153E0BCD887554EB25FC
+H_OutputA = 085D9ADC348D9CB77B4A775040232AE246A871BA8AC5BE468DF46AD4DAF06F75
+DRBG_SeedB = E9563E6CA48379502929B0E0CC78C4E6BC79A9B93C809F580372D7334D31A1D4
+H_OutputB = 249C164D349350C45D0DD3B45B7C158EC4A2E53672C38A2A14FE69AAC500E47E
+SharedKey = 4DCAFB514DDEB8E259ECA9CB9A672C981853E1FD5A5D96F243FE3CF95192CE9C
+
+DRBG_SeedA = D813AB242317BEA7EE3FC7A8142014AD645909C2A5E16D0D25F817FB3F7ACDAB8FBD01D7A729BDA5BB9F2A5015A645D16DFF742BF8538C906960E3A339A00E61
+H_OutputA = A4F2573DA475DCA8F273B26815366B66BFD2C988B97055AB8955BE79B5A69E6C
+DRBG_SeedB = 13F9A0C328315B2AB48D2E00B39F0F7F6C4073FCE1205822147123D9ACE031AF
+H_OutputB = 1958A0F70965B8411598A0128F766736C6C9334A5432EC41ADE00B5E300937CF
+SharedKey = F7E68F32B5B8E1838A6350C0A0ABE3C2C03A504EB93675C36DD4C7FAB2F08F2D
+
+DRBG_SeedA = F98C75793D20232E93A94DCB5C815510AE90612BE4AE476FDE1CA0B872D9C45EF8856FFEA9BE780127D1BF985BB172F2AE6BDCBAC70E5974D1DDF8BED05C6C58
+H_OutputA = F9BA8BA9089BCB90027CC65106D4EECDAED97DCEEA67740C1408F1438B2150DF
+DRBG_SeedB = FDA737E6C1D89D0B754FD5C6A42A66DC399D223BEFFB8D58F3E7E17A7945E4F6
+H_OutputB = 351F159AD1F51276839C42A95CB82DD6D724EBC4C5EA2547CA897BE093311102
+SharedKey = BE5CE468618DBA46C44726DEBB4FFC36FCC52B6C51F39DACA8F6FFC6D7D36C40
+
+DRBG_SeedA = 7E6F52670306D0064919E4EE43576617156778BDD38EE1FD11FA83726E2215E589B5E91794DE7AC8AD5BCE4DBEAB282DF2131DFC8CEC402F642EE87D041A5478
+H_OutputA = 376AF67589B65530C7F441B7B2FA830322E2A9EACF0E029A82A9C90386525F2F
+DRBG_SeedB = B4175D68135D0BDEB9912085A51CB1CABB73D561D5F17B323834E00A947A3E59
+H_OutputB = EE3E33870FF2A92FFB1B18C5ED8EBB9CEBD1C2262760E9B0D04FDA5356B1D03A
+SharedKey = 577F71248B943977546E7610D5E8D1225727D10643651438A8E3F530B5A1A7D7
+
+DRBG_SeedA = 273C664DA783F7A03B907995603A309FEB1CC24F9B2E70CC26D8A690D1F8148955E66528B9D1A43E2EC9A1FC692B2345F0C4E1E6E0AA781609BE2C758F29A0ED
+H_OutputA = 57043EE97DCC65A1CE32853AFFBAD9297189AAB245688DD15FEC5DA52B5481A2
+DRBG_SeedB = F57662F8EC1E9CBDB854F0CAB751B994F871E7AFC19BEE266B06F85AB87655FA
+H_OutputB = EFE011494CB93EAB50B73C381AAAEB8ACB1F8C328AE920713A4E216F1CA1F45E
+SharedKey = 6CC7046F457F7F0F4EDE743F25CC51ACF214BA3CB460FFCC679ABD8BDC33D3E7
+
+DRBG_SeedA = EE333FAA86733DA4BC7B5DC935A7B04C85B6DFF740B5E84C642ECE0A324C730F72E27F28CA455C17CE1D53FC7F35EDBDF613B9CB918C23180A43533BB20DAB02
+H_OutputA = ABB5E8C52C650379516BDEA77115C1558915D6B0AFFC1125085B43EE353621B9
+DRBG_SeedB = 63B0A7C7F05E4BE29A7AAE7095592474B7D6BD2A4026FA65ED7FD8535AF4BE54
+H_OutputB = CC7FE8124275C7C440F27CA4BC4A77B89DD2182E5D337992BDC01C0B61604483
+SharedKey = 06F27DB5A951F59CB6D89FAB48A3DEF536157E6FD1881A15CA68AAB711037567
+
+DRBG_SeedA = 2AA2B11020914ABD97AB6FF9D92AD8199B69FE743187522BD20E4359339FB15EE1C8D1F9E20FE71B565E048BF62FD55717F0D3DF719DEDCA0E0CD83A8B892A0D
+H_OutputA = 875E496F7225CE202D540AF85B636BA3B6EAD6EE18FE5A0CEB223CFC53275110
+DRBG_SeedB = DC50BCEA1A70D58F8CC67D061A3CDFC38D3BE1335442DBCB23B08FC44E5F27F6
+H_OutputB = 49BF878389661277B0CC1D6764742037DB02ACFE5BCDB4A5EA84E504C5B939D7
+SharedKey = 480975831F3C775A52D310A95C4C823B17B2F3BF4490C72DA61B22760F3B18E6
+
+DRBG_SeedA = 8498603A1D94AC3379F08E89E904EC06D28A563B8165E063777CB65467C8628A9F759E8ABE6C2787F428A271B438E8B0B2B89EEBB8ECCEA9E0FFD1C776F177B9
+H_OutputA = 7AD16C8DABD295749A997916091F899BCC504E23345454AA243D8AD077D778EF
+DRBG_SeedB = C05EE43FD0930B3647520EEE8D60C9D4DC83919F39E0F635B903E20546DE3CD6
+H_OutputB = BD715F29BDB501EC926D06C4B0D856D9AD85C37B516E3A24A859C0D9809E7D02
+SharedKey = F7D48F749CCA272CBDBB4257858A6128C09C4B8CC965ED572FEB5A67F239A430
+
+DRBG_SeedA = 5CF97069689F618499A5E623F2CA04464BE918E08A4617E97B8283B1F337207AED8D6C8E039B805D644A10D64AAA02A4E6512954D9270791B6C9533B5F05F294
+H_OutputA = 98B20FE1FCC95DA504AA7EEC66AEEDBD9B888EE2B45E056837E1EE28F4B408BF
+DRBG_SeedB = 4C529028EB72CE780841C4BBEC275F985C3E9F0E4347E5A3A4DD4537815FD51D
+H_OutputB = 7F6759CA5B692E2A6447CF6175245305C6A4255955AC760CCA0CD94542F2FB05
+SharedKey = 8974F6FEE1D920412D76F108F873F6D2F2BCE0431BDC9544C33CDEC5931C0074
+
+DRBG_SeedA = F39B4EC01196888A02702FD5321D85E6DE39B6769200A5528086BE703F8D3895D77EA73D7F130D5F502358D74AC1AE3D77086CABAA06FABDD2964E379EE4AFD1
+H_OutputA = 564B72E953BACB85532A26A7BEC6847CD52C75725B290CE87EE3A497762597B4
+DRBG_SeedB = 79B40917BF03CB92DF3E5ABF0A6E437E306EF6024B0555C5D08E6A2A0CB6330B
+H_OutputB = 1F5689C97D67066C8B5360AD08BBF7219954E858B909923246C2B00CACB64BCF
+SharedKey = F0CC1F9F230699E93F3EC68E59FB5E92C494D0F4E5475BD5C55F0F2F8D4806B7
+
+DRBG_SeedA = 0EFF0C7ED129E8B442A4161F040A52D5D821103E0A7B2219E9F1FE11ECD69304A887FF3A809D6F1FCCF6FFD7650F18A4286391688F2DD02E62504778B25DF8EB
+H_OutputA = 8E50B6C97F752F285C02B5E0D87D538F488329833743CA2B531A2F1C3FA1060E
+DRBG_SeedB = 1134AF2FC4BC01589F11F10A1D02557FD7C9BC6240B0CD5236C275B848151E88
+H_OutputB = 44F715F30A2D07D5139FA080877DADDF8F3CFC8957D18A1D8C728B115A8EA7F7
+SharedKey = FDC4F2505E75218CDAEC0C8DAC365123D8C89502E1566FF2B07D4CFBECADC868
+
+DRBG_SeedA = 9B04194A9775BCC7E84FBE81178FBD2FD7CFA957120443DF8D5B6DC3F1A94775C2869D5ADC1DAE9032767F1A20C7FD20823394F22786256A853734DD49E68387
+H_OutputA = E3D2D573FD46E3B23ECB44530543C1A630797874862B13D11F9DEB3DAB909C04
+DRBG_SeedB = 16426E4FC95AE3BA7401812A280898C77A9C687F201D4E026FCBEF4FF5D75EC8
+H_OutputB = C4B033E690803D64620B7E014365F2ACBF19B67BA7B65DCBE030499A4D1F9211
+SharedKey = E9183AFC6554ECD505D1DBBAC0AABE1F7958D9404F62F694DA85F22BD2DE195D
+
+DRBG_SeedA = 5A50FFABD4BB09AF5F52A936227CBAEDB3D6C6E647BFDC120ECFA05506E03DA27D31D451EC2AC6E43F6B9BC831799E2B8ABE752C7C38724C8D8264C82F184B77
+H_OutputA = A664E705EA5A91555356CB387CB13AAE306FA9EE3B21B087FD50D30D47A027A8
+DRBG_SeedB = D6B5AE88695CA7A7B7A803C49C0B6E6CBD08F83D0A33190297B74E7D1F0B3093
+H_OutputB = 52A7430BE561A1F85C24591F5331C907B2F3B44BE937CC6054B6F1F5C1CE6AFA
+SharedKey = 5118E3E997D65F8E5C006D333507175622F3950E578119942218EDA505FA645E
+
+DRBG_SeedA = ABA0DBA66DC317ED0F11B91B149EF74864AB438E8F9ACEF44609306AF90340B63C1CC967D32B5C8CEE470748EB409CBD2A2FE7C59B35E5ED71E277C4E392EAA6
+H_OutputA = 2D0867940FD4186EBEF2B821955CDD608CCA0A5AAF5952CF82E3ED833CDCE084
+DRBG_SeedB = 11DA2B93432533C4D5CA97F00A1771C946CA77E88CA5EC5301B6F128CB49CB88
+H_OutputB = 5FC9CC5B8CD11B2F60DD70F4B839A52454FD102974330A6883A2C15704B44604
+SharedKey = 3E678666F9873607DE28BF6DB6DA88506BDEE46EB40D877C6B87695EE9C9787B
+
+DRBG_SeedA = A767432702AED40077DDB6E0ADC1ED3027AC12E2AB05B404575CDC839ACDAB4E1A45F793D0375A197F96E6D659CA6ACC76C79ECDBF9A8F54B63710FB980005AD
+H_OutputA = 8618E183D620F557524B1183100A2CD487EB132B24977B756FDD2CFA5CEF1336
+DRBG_SeedB = A203223586E38E46A392A2337BA39DFDD070E274C1E3E402F78ED72F22EB2A0F
+H_OutputB = F7CC4660E4481E6332756FC3142F3FC893E246B2AC70B306AD33DF4C6CA5C41C
+SharedKey = 5E6BDF05CDE8D1FDCFF8E3269642CC12244D2CDA8E0D416B268647CB58235B9C
+
+DRBG_SeedA = 9FDBA85F420DE3D9838642514CC93AA483C94F38BAAA5C66ED81081C67642DCE381C0E4FFC19DEC09EE5291E6E9FBADABE853542CDE3C68A3C75EB56A562DD52
+H_OutputA = 3E4BE0CCB67E982C993733EB5318D0BA7A089FB5307451F6E6BBF72C47CFC73E
+DRBG_SeedB = 9944198ABF5CB0574EC79838CFDCF96263DFD1C54DE74761A8BA55167F45DDA3
+H_OutputB = C0EC164616FCF9E65D84171C12B7058CECC2AFC4CF6F99D77C9FFD1052E6DC56
+SharedKey = F7B764CA6495AE23FD458C08EFD052C73F225562E2E95CF118B13BF66B23F6F5
+
+DRBG_SeedA = 4DB14EC9AA4A23F9E9941959C3F71445A6866EEB89156DCF755C8E78E226FC2C119E06682F9B79559A1C5CFEB2B341FDD57EE6E33148FF81A1A53E03F0548A19
+H_OutputA = A846C4B3664622CDA8E2DD74548706F9C6867854B916A413DC22C89F5777CD9A
+DRBG_SeedB = 9CD6CD17B7BB34A10A26C367B96439891DF53C6520D32B3EA1AA69689C457B4B
+H_OutputB = A8D3F1502C550F62C3D42F93C4BA65E8B36522F6EFBF657C7E15C4BB48FA8F94
+SharedKey = 2F989DB82CAE83C6DDE10E4F497E87A74D29833799EE639A8F626AFF31A4614E
+
+DRBG_SeedA = 0396BF83375AF4C5C8E2CC8441D3D3B13C52BF584089178CD4D257BEA84EC20865032E029B8EC33B8C04D24022010C391CC4D5B90AF499691E26F9B85462BE98
+H_OutputA = DC14D6883970D3BDE3349BD5D338B49D753F0CD7E4AC03A90CFF3AEB5B28B214
+DRBG_SeedB = 821D7D6658369E3D4BE407A6C0526E4595F070A21E4557A7369E09E66A1B896F
+H_OutputB = 23CEE4EFE8E6646DB4654DC19B2ADEB8A84D4277D2A3EABAACCD1E673E3CAF28
+SharedKey = 759ADD41FFC0E12C846EAAC6927B51B3ECE9773EC69584316F08465CECC40E14
+
+DRBG_SeedA = EA4469ED576EA3F24F516AC9B25C9FA8021A099A774A9745C78CC36824B4D08AB28741DAEDC5B149A822B955A379B571DBA67B902A34E987F8FB23D0BA7DF692
+H_OutputA = FBE7DA3986FB9EA0F2525995AA048F8B758348A646B65D5034BC8C7FB7CB05DA
+DRBG_SeedB = F936EA1015C58EE007C0DB72D7A057A248E7175FE3EB9F34042C9C8FFA0B1918
+H_OutputB = FF9F83F5774143978CA10B1F69DEBFCDFE4951D125F37D8C29F2D09C3F55D010
+SharedKey = 0FB7004456E06AC4DAB8B979534101ABD87DD73A1324031F7AEE7BB3253C8144
+
+DRBG_SeedA = D520339A0EC33D3E474959377EF9E0124ECF9F8A4682E3C29CE4F8D17E69C99BD350C92537D44997EAD89932D0DEBCC8A7DB8F28030C4DCCD799814A4AA0CA73
+H_OutputA = DB2A04EA78E6DA27E1C32DAF05B15619DF31112BF9B90BC6D5B13CD293258FA6
+DRBG_SeedB = 913199CEC7F90BBB5E66A3F1291727382970192278718D0CDB220379B03B0946
+H_OutputB = 1A65FCCF3AE9156CC8C79C0DC482294A3D341963EC308CDA8CA993BF5F05272E
+SharedKey = 1DF8D4F663F710D30764C0B3667851714221688D8DD0072E0C8174DB16631F8F
+
+DRBG_SeedA = 5FFEE63CA9385FDDF9606749C1545166A4534DBDDDDFD83E441E1BFC47758864C11FD81C00F2F1ABBD6A056C1B72001D87EFF418A8A60088E5396CE594FE39EC
+H_OutputA = 59ABD251CF75C8FF8517B754F629E194A639F0B3B1907A6EBDC9C83F34674AF5
+DRBG_SeedB = 7361B129404D3702AA164D9882CCA154ACA8B082D48740B290A060C58B663606
+H_OutputB = E2892370E0F79D87743CFCAAA3CDA52405651D15F1DA865B708CE5679440F3AC
+SharedKey = F464D41046394D3FE3899AFC426C3EB23FB643C5C2C260F86BD00439E2DDFBE8
+
+DRBG_SeedA = CD6DB0724B736F707DB4D6CC57BE988368F70481D3E8B0781C69CAA67E0A5620EE5646EC7C87089F75A567362FAB9B39C2E561E7ADC9ECFE5B39790D8F2B85B2
+H_OutputA = 391839A1F5C6F33E8750A1793F46FD8A34424B62734754B8A1622DA0FC7AB41F
+DRBG_SeedB = 1F943851D572B460582D39B484696EDD34B020A46BBB1E4718197C011F9D7BD5
+H_OutputB = C879AC64F1A20AB4710AF664C7520ABAD9C6EF8C96616C01B681AFE9F80ABC61
+SharedKey = FC1773FE63A8C81687A7B18A948A8687D1B0F836B7DD14264B435A160A4BD183
+
+DRBG_SeedA = C73BE02A6ED7FAD6A8FD9515B378BE3AB967252CE28B9E4DDA383BDA863162BBDEFD4B4F0653B8EC8A40E76553D34CBDB1DE52446808CABA5BFE99EC1A3782F7
+H_OutputA = 9AE7D77C913367103B18C6C5FFC77337CFCFD8D45C0FB366A5A8C4BF00ABF714
+DRBG_SeedB = 65078A6F2471419466B576226D323FC6331D4829782B40276A886F9EB4305118
+H_OutputB = 940CA4530DB4B326858BB6AAE2EEA161914912E201C45005EB5254A4A7A39A99
+SharedKey = 0A2E36E4F9B5373592298F31DC86919A14177D475EBE574BF77D0FE1D78CD87D
+
+DRBG_SeedA = ADB6190F008ECF328D999849BB334A29B8A8DD254613C711D43AF44793AEF960B2AF7815DDC51A57EB0B986B13ACC996F3E56AA2BD29E97D93AFF6A6148CE5A0
+H_OutputA = 8DC3A616027F482DE00AD49938F4D90CD631EF48B41774023AB6FE96FC1F44B9
+DRBG_SeedB = 03C7037A3B15095469B0B18BBDD71BF87D21BBDB9D67E1DDF830CE73D8225D2D
+H_OutputB = D415EB5ED9B5B9D1349D1A2330588B8FF4B58A995FCFAFDB2DC60D4C1E399480
+SharedKey = 29E0B1ECF50485A6E8972C0577C4D6836905D3191BC96C02FE151CD2AE48A6A0
+
+DRBG_SeedA = 9EBC0E4C53BD034CEECA3C38AD3DD29609FF846AC99FD52DA5D7F4735B0709749C687448758EAD5F18B316F92E3DD6773F7D02A2C8843746974A652764C25F67
+H_OutputA = 9D5FE1011F1C8BA656D40291E035BFDD2213652D1446BD6FD61E2E2700E93435
+DRBG_SeedB = 64B59FEA62FCECEFE6FDD6250FCCAA7625816BFD0C7F0CA868194715715D009A
+H_OutputB = BBBAF61A847F23C64A19AC5C52D93A3FFDBB86400F5E3741C9CBB734142B153F
+SharedKey = C66F5188D07C476501C4646CF321134736128F2F859102CD073FCA0C65ECC9AD
+
+DRBG_SeedA = BCA20E6CA31170A32FEB78E0F040A8F2DE62877033772681CC44F3805CFDE6A0DD505FD24C4AC13DE0D3F9E0815ECF2391F135242FFE44B7B03460678B40F787
+H_OutputA = D699ECFDAB955AFC34DD43FF17E3541D9684889EF8504167B4206F022C84B623
+DRBG_SeedB = 7AFEFFAD10A5BBA785050D156100A0D2B556D401FD7D13051D0F8E463CD73CEA
+H_OutputB = CC3998955AE6B6E9D28A789470C89C882B6474C03B4ECCBFCB0C2F3799ACA94D
+SharedKey = 49F543292E46A7EFBAAF23BB5DCD28353E39A9596C020916C86B97C97A5CBBEA
+
+DRBG_SeedA = D082FE6986DDECF3C90AE6BF024A58B3167F37A6193E65AE3796C534C4197F038BEC77BCB35E228304DB83A52339B98EDBB8D103AC39F9C00A53E93CCD773FB9
+H_OutputA = E4328D04DCF12F04F5990DE4CC549B2E0E75CC030A099BC764F0F6F4BEEE9DE1
+DRBG_SeedB = 028ACB89F81D2F18F81757D64447CD006B9FC86CBB6974E5523576645FFD0F13
+H_OutputB = 1B92078EBAF76F257A7F439937AF92D1A521651052EBFFEBB4B258D6611FEAE6
+SharedKey = 895AAC32723CD4035395F284CBDEAEE12C6963D6DC9495832758AF7B0F694FAE
+
+DRBG_SeedA = 12E0D83D3E2368344963F1849DBA1E2C558868832AE696807F3D82D34D64285DC04D42651297901FEE98DA5BAABF8A7E84600ADBD7984E7F9FBE18CA9E096DBE
+H_OutputA = 2B0C9BEC9314727AA67FDE9CEE065C5BFE084724FF0A6848B61F86ABF922318C
+DRBG_SeedB = 31019EAE794BE1183E8DFDCA3D6161EABF13551B31171C07E80AC3F7022BCE53
+H_OutputB = FF770F639A0E4862961B978873DC184E40BF9A00581DC15BA66259FCB3CBB734
+SharedKey = A4FCABA54B84EEF15C6D5405BED231D9F8C75751D78B5AC89748AE9F34407052
+
+DRBG_SeedA = 8421229C3D4082EF7B1C52CA0FEC0D5A4E306147B42F92A3F49BA4E801BD0DBA4EDB25AA491CC285C2CAA485AF0EFDF142C98FAEBE15E387220242F74C4267F2
+H_OutputA = 9FF27A1D1EF838D1950CB5C10EEE405582A6FDDEC4B30A7817E3EBDCA32CA777
+DRBG_SeedB = 2AA33CD80A814498D54B92560C080BEFE3D72575B5DFFC7D10CF073749AA33BB
+H_OutputB = DAA972807A1605EB686A394F9A76BDCCBDD47E4328D7AE12F2ADC3FCA24301BB
+SharedKey = E811B55924605063CA7D6F75F4E248A3A64DC12EBA5A8F47781F2478DE774E74
+
+DRBG_SeedA = 2660766EEC92F8F1FE84D13B2E5526FE105155CBDCB04B3D7F71968ED4B49921AA6AB84C0F31164D0EB566DCF271B176AC760B6D3554AC6BAB491B1DCB65242A
+H_OutputA = E475DB79A813C2A8EE5505BD46A70102256416BE17208B2DEDEF0053CC81131F
+DRBG_SeedB = 21E05173A132356C3F9D4A4A6A0CE8D1412587263657967DBE5E073D686CB4CC
+H_OutputB = 5A3ACAE43E800FCE18A1285193E733E5D3C47967BC16ECA32AAB1F7473DA0538
+SharedKey = 1A1ACDFE1B54EA72325434542DB58DA8FE9AA341ED74DDC111AD9C54C8327423
+
+DRBG_SeedA = D443CB8B58B0CE868EFCADAB7491F313250B2DC4CB90B5887E5C057A454237F9667930620C6F952D726907DBF0D738F1084EDEF630DD57369640CF921C80B625
+H_OutputA = BBB9E7D4F1848D4B54FE2C63950A63CA1300AA8F9037EBCC51881CD92397493F
+DRBG_SeedB = 862411F6E07823EF3935577CCC4702351B8AE6D048C433B86892AF4ABDF3241E
+H_OutputB = B3B5DCFC57F5C719F2F725FDB17EEED01025D366A2D93A9FD820FA7F60E3920E
+SharedKey = ED8A195E3CDAA29D5FFB5530FB1241323E7F494A4737BF0FAA048F6C29CEB381
+
+DRBG_SeedA = 78C83B14EA077BA06C29C03406103E53D7ACAFD30BBA2CEFBE5D483EC284351F30AD23F69ADAEBA9C5B722CCF3A60A7070AC133F071381D83EC532EBDE1F99B9
+H_OutputA = 709AA56073CAE6A5ED97CE81EA44AAFAA54B377AC5C44C330BBB0A2C1764DAF6
+DRBG_SeedB = A3E79354FAB80987D378FB3E0BFE2A8B6F272162A085F277B64D5DEFFFE45EEB
+H_OutputB = 5EA39750E7DEAC6BA06D2B0D5D6D9AE4048062B42E3F089AE364BB3533BCF408
+SharedKey = 814B90C03025F27FE42E773C71421BE0BF589839626D432B013F77F5E4141004
+
+DRBG_SeedA = CC886830A99A7B749773FBFC46A224C1F2ECEB99ABC25314CCD38A4A8DFCE4F1766A540E4A76CF43946090891AE7DD2B2622107E46F540CD2BA0262F77D2E801
+H_OutputA = 218C02BC6F66EEB174CC735F2766F7DDB8036BC3B943E134349049D70A5B9128
+DRBG_SeedB = 3B981616FAC23FA132CCDA2DD2DC7E99004BE510BCD4169484B13895132E9D64
+H_OutputB = E4C91C4CC4F16BB52B3E97C4AD4374A92F6DD7DB58A45F02EDA4D1691D007914
+SharedKey = 98E0D7CD54FF2C0C806644846AD381336CEE06FEA06E870CD400D5DB4B587C38
+
+DRBG_SeedA = 50875E3949A405ECAEFEC5EC25F467A29B54393787D3C2C4508A147FD22F9CC7AC94DC4FC8BB09F6320052335F22C0F8A4BAB760F3A29EC3E75A00C918EBC997
+H_OutputA = BA271740EAC32914B487EC69EBAEED4137F67842585A686C6A849B7C0D8ADCD3
+DRBG_SeedB = 1A1CF31FD96AB47330AE953852A4BA63FD5E8460FEBEA5219D823144021CB48C
+H_OutputB = 40101B2B58128932AA702D5ADA8D5430B05C153A0FD959BD7A237A6771529E3E
+SharedKey = A2089789C1C8B46BEB213530A172B82CFE82E6CF17C9B4515572644F399C5677
+
+DRBG_SeedA = 781AF8861D51B068BD186E73D94635B7CA6AE21DD36F4DD6C945766F517632A246E61962B2C63EF11E152E4C7DB8F8BAD0F58BE33B29BBFE07ED52D4917EA37E
+H_OutputA = 8AC2225E4A1BBD4FD363D800C9E78BC5686B864D111AA3EF0DC8682E508A5D46
+DRBG_SeedB = 88EEC92D324E1DA2F9A203C7546E745B7D72400CF85181D10325B516A165E787
+H_OutputB = EE15896D0C4DB7155DA61C7C7733C326FA9C9CF2085B954924DC962C07D0B8D1
+SharedKey = DCAB29B30296549B6F9EAB30633ECFB89CD6CEEC4CA5BF8CBF64F89347C5C064
+
+DRBG_SeedA = FACA416F2DC5D6628B6C8ABBD70929181D620C7AD0002CBB444C3AD5F2F359C6E7E900323C3185CDA87BCCEDB244DA15BD635E8E718564CD97D4FF9C40E5FCE0
+H_OutputA = 6B89C7F35B26398E7EFE63D4B3B23E1FC485D05242F381077A07E99A7D59EFBF
+DRBG_SeedB = 46592A0A9E7EEA6FC513AE82C4E6ED05C0ACA5363CF98A2C4124DE65E7F13363
+H_OutputB = 2828F6E81FF27ADB94FDDBAF6D5D3A84901396871CD30D9D25F79969B7E4E4C5
+SharedKey = 6DAC617144600F969452DFE601070DE026BA623736836811F96A7044E09CB3B7
+
+DRBG_SeedA = 6A8BEF0108D3E1C1AD3AC23DB6178AC5AF6CD2291CD7B8689182B950221BC6096AD7C3765FC2A7DE9D9743BBEA6B787ABF5E72D3A99BA249914703F51CD021AA
+H_OutputA = 4CD83315D8E1E0F7147D21CA5CE84C49A5BA36554F341DAEF72C1C6F9086AD8D
+DRBG_SeedB = 264288E10281807E228DC872526E9A89F75F88F201F8B92D512D2AB02606A8A4
+H_OutputB = 74AD3ED3B7B2B3F5B047EAC53C58B70D051FD84605AD059C6A08A46B92688646
+SharedKey = 4671BED9A7E192FC48F8014516407EE058EEC262697E5CB56A687C1A4A060830
+
+DRBG_SeedA = A01D64A42859320409E723E25EA17B1F63ABF7547F97B8EAE9402EDD4DF11BE73205875BE576F07544EEFE5960B70071DFBA99BF296A2EC0D412ABD195201D58
+H_OutputA = 69A574161282C1D83678AA7E951E22C75B5707D52C34F231916BAE2CC6472446
+DRBG_SeedB = F43F0711D69D24A1E67FE6732E404E6028C727F436631FC09A8AD348D7D63B69
+H_OutputB = 9E70164A65082F97802298AF4F0B85BE92A781FFCE56EC220FA1654FBBBF8B34
+SharedKey = 53ECD264DBFA37C9960FABBAC5C2D0F93D21996E852F0E89EFFDA330F6EBADFE
+
+DRBG_SeedA = 8DC14EDD06800CD789D0BA433C4813DE5F29E55D5BDB9A5C2BD88972B3CDB25804B922FF40F8365195122B91600BF70B8ADAB90502D8692A9BDBB2CFE0912C9F
+H_OutputA = C8A1D6C2CA4385FA84EC5E913715C6205EAC5F518284BFF8CFA396E901672FE2
+DRBG_SeedB = 0D36D34867702C9DA0164D8F2EA18AA97447C056474C2A89899DCBD4E08CBBA9
+H_OutputB = BAD26C9785371567ACA8350FAFB574B3708BA7CF7E2D7627D1F44323E85C0BE0
+SharedKey = 58B63125E133F269150506233765B9AFEF2EFE241D30A7F7B3B377F27499226E
+
+DRBG_SeedA = 6453E8FA07E16E64E0F54BACD579A64725CD5EDC8875D35386A5E3D73256672F0AA06D284CC98813026A8A7C46A3F4152EA575A50EBDE465FBBB2C3B53F61919
+H_OutputA = E471EC8365A167DD99380D532E183CF7574BC22115F7F3C15CA178C68DB117A7
+DRBG_SeedB = 1770ED4591E5CAFA79A96E8CC779AAF91294FA4467D89FB58CA1AE194454BAE5
+H_OutputB = DBF0FB0E9961D5FF1F35D73B1669FC6E555B10FA4628FBFE0F36BFBBDE7FB89C
+SharedKey = 5371E5B7B489914AA0BD025D3DDA666651505CB55486247D6FDA281FCD518CE3
+
+DRBG_SeedA = 67DBD78BAA7C9189C39CF014A6EF3F7B9090117A778B2E68DAF60F9220734E7D8F840869A31D6FBE7B5CCF16E18D0807FAD7A5A4441A18548E3D39012BAE9E98
+H_OutputA = E2A149852C507C1B0E33FD85BF41FA49CADCCC673DCD1A255A3A9DE8C4BB42EA
+DRBG_SeedB = 28B330E58D15EEC8F91CDE9602BD1E00D1C10627CB6AF60550A781B4358BF8E4
+H_OutputB = 894D947D7014ABA023B39A23D4A545CB086778BB907F85FE313641E5EA5AAE10
+SharedKey = 47C7E4BAD51A44C3829188F9C6FAC25A064A9A5B3C3C08610D34A54EDBC9AC11
+
+DRBG_SeedA = 181D713E6E759FC24BBBB9DB8C309194E02180A6DEFF9980358768E6CA157DD10124E6C1855BF202DC324B5B89C092688F5A955D01281E9AF2FEAA307EFC6F61
+H_OutputA = BD2C63445ECB2D8E05060E0DEB24FE5671ACA333D80A0C5ED977E0B6F813B30C
+DRBG_SeedB = 3553B78E57D82BA9C4835B0B18C848A69CCB229B1FA5BB8ED92AFF1481A555FF
+H_OutputB = 88EE3C59DD82FD92CB7A29CD7473F78CD3FEC0957362D525243CD19004F31618
+SharedKey = 1FCED0690C244A792B080D9E23C98CD2F14C41CDDACFEBA8A45700C0600E0CCA
+
+DRBG_SeedA = F240414C960F4E38CD2B1C64CE66738FCB6611D689CCD6B01BD8BC92468EAE745B3A9C96A7060C54AFF27C03A5E7D3280C4E67D72B0F03D8B56D770226B39DA0
+H_OutputA = 7EC25EEA2E470DD39E3B4954E2A7F11CD212BD6A371FA008A11ED5C0ED77E591
+DRBG_SeedB = 550E06AEEB7485FA6102A2A3CA13EE6AB748C05EE55077AE2CB69B23B7F9E8B8
+H_OutputB = CE77121147B466F5C61C64739F0746B50809FB63CC089ABB81F2D18BD0C78992
+SharedKey = C591251373F16733CBB5A6A04D84AE785AC6DE199008C61F80B9BC5056C203CE
+
+DRBG_SeedA = 6E6410D8877934BB6B7AB937B6DB034626F2BE7750E7C1B4A43587FB1BCC7890C08D9C7DF69C715C20936DECA9ADA384E637DD3215181735D34A23EE77F4F092
+H_OutputA = 681706EC0367E3E3798756B7A13BA48368A01B33C8F70E75B10AE0D0997E0410
+DRBG_SeedB = 9FC88CDF52FBB83333B307C6317F43F492D99C4CE9431136FF947EC3E384C9D3
+H_OutputB = 4C5DFC63BA6FB2A49639C4ED024E6E60513090EC9F83384EB7968A8A160D6EDF
+SharedKey = 3F4678E9CD9ED1090CD9E0C669F4AF5B412A24CEA2109A43CC13FBB11F8DED26
+
+DRBG_SeedA = D8C78DBEEFB91CEFC5EC4056DFE6FCAA30BD764224B9607A6A95CF67A4628A78FBF25693EEFE8F03E6653BCDA2A7A2AA179FF17E859F9E2A83B7B2EA02B49A79
+H_OutputA = 4CD0FD57221966C1E401606AFD2E530E9C54DAEE6B2BB3A320B32FC36A01129A
+DRBG_SeedB = 61F9CB69DF56511D33B7B7CD876A75BD25F8E15EAD37C636A7C54FC2DD4C58C9
+H_OutputB = D48003B198B8B8027467A7351D9CCD70D4A4E9B30F260019A1F3B36729A30288
+SharedKey = A3B2701401241E0AEA44325A93F01AB8FFC54D3B359000BCDD275DC6C9F87AF7
+
+DRBG_SeedA = 35139F5DE1F5AB32E024B75D8F35B874A3859E49435DC06B5BDD48BC7FF554EFFCFA0D5A981F9649B0B7F17ECA1229BAA570F96B6D8C735893C5014D7F7F8B2B
+H_OutputA = C3605A8875F13F4F8489B79DCC2627A8A69BC18901DB7414953669F9E8927CAB
+DRBG_SeedB = 69B11D7AC05AF05288E06153D4B189B7D5E96C3C317CDCBD6AD8ABE1C90F90F6
+H_OutputB = 268DB8BFED5576B1EDF984A16241ADEC7569021145553EC8FB894687378DD685
+SharedKey = 4A12145C821EFE3E0987552E28577857D5AF8E7D8A75CAA98F20842494749D32
+
+DRBG_SeedA = 52148B1F548D1BF96FA01793AA75F409D880FD3CBAFF62ABE528A10F56D21ED3D49CC5C0F83BB442BF480264A794958502F97D250B692543E36B027D2DB19F7D
+H_OutputA = 5F13746042B25AFFF831B0346219FA41A848455EAECFBD18A41C2DDC94D59187
+DRBG_SeedB = 7794AC2AD364DBFD4586221EE15710CD99B7929C91F6C0ECD7075CC1626D8427
+H_OutputB = 41443F6008312EF75952B32C9E15E59F36239510739FAC2109871ECCEFC3DA20
+SharedKey = 544368D002BB70671E62800FB26DD5048AEAA02F24D82F800A355385D1CDC183
+
+DRBG_SeedA = 765DB695E749EDFF6E5A78397BA2EB744CCBF8828008A972AAB61330D56DA2F950541C38CE79CD0EA65CE5FBFA200397BE8D58CDD75EB7BDED567F4B10E4FA18
+H_OutputA = 3065E3E39028EC06ACFB148150D7AFD384C9CEEC66E5B324BFAD203AC61EAED9
+DRBG_SeedB = 6988FCBB33E06395C651D93BEE2EE794EA8923C86AE4653EE48081F073BE82E1
+H_OutputB = 0EFCDB7691389A2E33FCA8F3FEEA80B2102F3DA0BC14763F787D0BBA5977CD4D
+SharedKey = 99BC4C118942D1BE6EB93694F4C7EFE7B4AD22BD56D84531B9E39A421EE7F1DB
+
+DRBG_SeedA = 7BEBD7989D50D5B4E00150B050389F4A5934B021D4A1FFC8AC9DB2AA221FC6E1B891E4C81492261749057371C942B7AB253454620EBB13A0861995626DC36E79
+H_OutputA = 9F408E34196A6BDA3D4F6619B47CDF78F3550D86E86A511053B538B15C5360A2
+DRBG_SeedB = B105034639CC754A070F1EDE91D2C947833A1DC3175CCD1BED076739A393E5CE
+H_OutputB = FAF2165A56A33EFE75264B10DEE27202B90DBF5F9EF360BEF4D1B2A8D7FD3AB7
+SharedKey = AD0D339AF2E37048258E068657B54396CD9910296C7D2C443C909C7ABF9A8C71
+
+DRBG_SeedA = E12932FB66611B31C3A0F1A7EDD01DB24925C5EEA9EA70F802ABCC020110A2462C7C15E5B64DDA426A5C6EAC43084D239D0CD1F9B900C95A6D53129425F748DF
+H_OutputA = 7AED2E2EE5AC482E986D0031A77ABA6759B639FE943E59CC4DA0DC416F8AC3FE
+DRBG_SeedB = 5A12EF8C5DBA38719C3338E5CFFD27ECE4B17F14EBDD361EA4517626A30608E7
+H_OutputB = 97BDA66D7440157D4CA193150E69845C2A81B8A64393390866539D72E491AF08
+SharedKey = 99AA17494B13B0119BB340F3E8B1D5F64568399E48F343BEF89E9C3265EA3CAD
+
+DRBG_SeedA = EF487B151FEDCCE4A47B0577B6243D6230BA1D38338D1B825094B03F23EA72202E4585C4131A943332C42F94DC1F986CF9EFEF7602D64C2D8091BEB6290AEEDE
+H_OutputA = CFC7F9CC4B74F1ADCD6878A8C5F19F018690C08A6A5DDBFA1546458D7E2AEB73
+DRBG_SeedB = 0D86F954287C23E92109F6CD83C5EF0EC07B4621737B26B85A163F3536132C14
+H_OutputB = E9D122F27F73391462DE1FB463AA070FDBAC669892B636F0D46BD3CEE3E5CF76
+SharedKey = E6D27F4D7C60D8A7C2BF4EED99696AD345171DBCC65C0CA98F0724AC4D4BA9F5
+
+DRBG_SeedA = FE60E704C3E22F74E8DDDB6FC127CDA6936DAA4BCAC0D21B8FAF66A62E7AF7DBB49394401281A116DAEECE67361E28AC6FFCF0A1BB74AF8E1F870C59282CE061
+H_OutputA = 7DA74DBB80F81BB973B11BB0B263FF0AACE624939CFFA34D1B1A635E76FAA494
+DRBG_SeedB = 3E35F21A80477A0F467FA55495A4AE9207639B576DA62342E2ABB1D769BD3B94
+H_OutputB = 0CCD9946B6712A0E608D8A281D5202113C040D7D161FE458385133037B1CBEC9
+SharedKey = BC055DF4F45B8ED6773E4AF60852E6092C925E75A16D2B185B4257072FD888DF
+
+DRBG_SeedA = 6BAB12526BEA44D3193AB8BE86BF87A9ED346C217FC7FCE2CF32B0F1DC687C85C82AB854090909AD0C3AF08228969C3FBC909AC47D400192C594E70271F02FB7
+H_OutputA = 500DD8FAC9C5A9E0D8BF99DE0445754E68E9BCF59CC0C98B3ABFE1589D8882C3
+DRBG_SeedB = 01136FB563CFA9137CD127F5EBE9F1643C3CED5596E4213E2965985DA1D7CCA9
+H_OutputB = A4729E32BA82346440110F75276D1A923F98AA3EB4D85601A22D92DEED2CE07A
+SharedKey = 6D303BA524CA2F8DA3635316566E34FAA2BC8474678D89500BA701DB1CE50206
+
+DRBG_SeedA = C87F943E278A3AAA4164D50030ADD7EB99C0AEE7C84E247D5C9C47B4A4FCE8C7763EAB216E07D47580DC3C4E50F406EF024C0210AFF51AAB5DE78FA7BA3A8DC7
+H_OutputA = 51C8457DF48936BF2FD08F34F18F200242E82468E2BEF772679EC49E373EC60A
+DRBG_SeedB = D2F6E6AD11359CE08DAF23A853139EDF1855ED7E699A8EE61F7AB3DED68A79BE
+H_OutputB = 54F8007779C8BB7F1DC2D22AF78C4486F5DEC1424D4524088A9D1370D22BF468
+SharedKey = 99624BA785214809698C4D39E8DB045B5E2CCB96D96633530F81C558968D1BBC
+
+DRBG_SeedA = 945E31E979CBD645B793FD7230C7774A7A1FFB5872E8FAE031C265556C6AACBFB2BE3FF189979D47CC72A81BD518AE402FCD72769C74D3FB25EAFC904EFE59BA
+H_OutputA = 4362F734DC411714D21075E143613DA355DFF12114EB790F29695014ABDDCBDF
+DRBG_SeedB = 70B1E29776298D8A7A6D4923CDFAECB90F0BB9AFFF413EFBB8E8BB881A761236
+H_OutputB = 7B4144CEBF839445521C125EFF71DB24FD8C84CD5863852B84C19DA618BF70AC
+SharedKey = BD5DEA6757F249CDD824793427D8E983CEC901279B1636CB0B4B710188EE245E
+
+DRBG_SeedA = 4F8319D4C74E642B3D797FDF202AB983DA93D30A6B8AE723ECEE72C01EFE386F96BA163FA4DDB6D82D546061DA743451B11CFBB6A3175390E9302F8DBC429447
+H_OutputA = A7610E6F75AD80BC43DEB11F3A2174C6B26B4C48106228561962C8DD2264B0ED
+DRBG_SeedB = F7BDE0B94E36CFAE4EB3423D1E8EEDC861931630E869323669CC314C309E6087
+H_OutputB = A5D75E1978196BF825828EFCEE02B5CE39BD1BD373708886451EAFF77CC35B78
+SharedKey = 6A9A1C6346CDCCC52A29E70A2B310A8C6D5E4BF93023AF359A7E24C19BDF01A3
+
+DRBG_SeedA = A59A62A4DB8FB1AFA8A1A1A28DD867F7EF6F1EEF53641A342A75BE6607214050BD20A46B470F009D46928DFD1DE052FDD2281A4F4E9BEAEE90A3F64CAEF670CD
+H_OutputA = B59C280D4280CFFD14B801349A72A932EDF93A4B58C9622D926FB9EFD0A4969C
+DRBG_SeedB = 021AD3AC4204CBCFF2A1CD7EE782F42AF7C487CE81201FF447C653F65AB065FB
+H_OutputB = 0A58C5B15580FF8C79AF42F52BD7981656DE35A0707264F25379859AB43E3079
+SharedKey = 31EB450E4C1F440B953BD23A99480FC10578F0E187B0F52451F67874E170FD15
+
+DRBG_SeedA = 1121CFA057957401E9911A195319B1AC50680F49A846796FBDEECE8FDC6418D1866638916C32D4B1C921DDB3740B67ABC10A26E2DA1E74B47D6201036E17DEFD
+H_OutputA = 25CD45D2EF301E4B4BFAB816B5A9AA577265961AC973416A47667118590AC883
+DRBG_SeedB = 2CC82B884298C434BC7E9B13DFFB8034DEDEA266F62294D102763318E617EB06
+H_OutputB = 298E6AA41E9F6F3648E3E59BFE96E147F0B28504553CE6E8F3B3B252A7A17625
+SharedKey = 17DAFC043F4B486D217776FAD9689389A24B03079CCC6BFF26CA88DA3DF60AF1
+
+DRBG_SeedA = 7AD0D35FBA4629DB25E9550256DBEE1E269028BE89F426CBA9FA3C44C1A363BB45C2CFAED61D721A0529524658E86FA97F6AF3FF77194777432CE668464A7E97
+H_OutputA = 87A89F6B70085A56B2ABE70B61EBA3B095046F005DA554BCBC25B25B03E66263
+DRBG_SeedB = C288FB789CEAD9EE6BDE0687C0105A207B9ED7498D0C06B2F9C7F6CCC9133F5D
+H_OutputB = 36ACD704484EF0671869C81D730E37F37CD601D4207818EF534928427D4F1CF0
+SharedKey = F5ECD326F31BBCCCFB5BF37F7D9A8E22F727F674685DB0F9CED1F71A0CD1C62A
+
+DRBG_SeedA = 41915E3B97D0F844B854A44297C9999ED2F1D6D5BAE31799FFF0ED5B7AB718F795415628920F14AC6894E8246C306995D572CF4FC25825B43B2596A0A19819E1
+H_OutputA = 411D1D73D726098E7AA2FAB11997E623A14317453A0CF792993551F762F944D2
+DRBG_SeedB = BF9313A94E700D8DD15C8CC5F39DDBAB978C62A1BFF04ED90C2FDECE6F68DA16
+H_OutputB = 64D4B5FFCDEEF4A645550110820C52D725132BE5A0A429137103C5DCBBA74834
+SharedKey = 637F8C80D11A6A3E78F59822CF64C78E253849C63FC22614B79396B67F96124D
+
+DRBG_SeedA = F5AD64EB8834EFED265164B59A079FD1610B149B0D82B5086B47235D2CBECFB059EDA5191F3C45FA0863E41CC9DD8861AF7F252E749DB72D989CDBCC4B2F3144
+H_OutputA = 3138BF04D91B5C341521F9ECB13F5A2578814CBC6B845A16080F000AE80FFB4F
+DRBG_SeedB = D39716ED8E8C23C360CB18330DE319AEFB5976C9A46483B3B820F423031C4BCC
+H_OutputB = 8235A208BF1DE607716EE4D18D2905FBC919010E46F41D37E2517FC7CE83FBB7
+SharedKey = 8ADBBC3F1C91D014B341ADC3165AF3C002D973DF2396828FE99AE418ECED992D
+
+DRBG_SeedA = 21B35C5E1A6A28ADB5B48AD1F8DB82A7F35372958FA73E32584E5C778FBFC1FF31887BF6497CF50DFE14BCB14CA3981D74865043D74C1D52A32CEE63CBA1B7D7
+H_OutputA = 702BE356A11AE7F13FA31358F69BE3F1BF4065B716D508C028C02C5C0521D4C4
+DRBG_SeedB = D075EF6E7FF3324002AD28E6C41ACF5687F907A558C06C0038A5CD6FB4DBECBF
+H_OutputB = 4E325B4AF64E9C4050B5F008354196487DDAD0702EAAC1F6F42A52FF83EAA9F2
+SharedKey = 0B15C87335E234B9E87DFC45EF95DA1734C22D48263C97D904AED8582CD00437
+
+DRBG_SeedA = FA12473BDA030FA6DE7F58811961F520F44CE8D49D8C041341C0AC751CC503A3744F097C35DD82C84D7169396A508EF05207F0596BB2CE9B25F4AEC1721B5A72
+H_OutputA = CB822938F7487A19BE4F9E3BC33CD6776BCE6ECFDB8772E3C51206333011B4B2
+DRBG_SeedB = F2D4576C55B14FCC16B1D7106D0FF89262DC776BBCDBA6D9734FD78F16EF54D3
+H_OutputB = B29903DB1F4D2D3EDBE4720E1025A5F1EDCC2ABD52838DBFE8963B8627B18A28
+SharedKey = 957E62C9E02E4DF726BE891F74EA0F4F596EB67CBEFA0ED78DE503E477488F03
+
+DRBG_SeedA = C9638A918BD70A6F43961CFE743C3340316FDF2119C3608B07BF7D6225A58AAF0BECF9B420A8E4EAFE5A9683E74B904DDACCE04B678911F5E141D8C7F9C0BA59
+H_OutputA = 3BC095093706778725163036E9483FCF1E0C7742AF261799F5949F8FAF70147A
+DRBG_SeedB = A02DE805453B53216B28FB955244E4FBAE1773A92EEAE90304B009EF1347EE25
+H_OutputB = 68DDB077CB74636C0E848F34B9A076899D3AEA7C13B965F9E1CEEB447605CC39
+SharedKey = 555811F1577DEA6B2C03ED9D8BFF910565D8F2EE93DE6E7BE4B78ABA4A6E427A
+
+DRBG_SeedA = 4BD834258962FDD8DEE24B57E73078C788E4CB0BFB3339235721B8EE4BFCC0F1898F3CA28DABA5500AB6E1B6F00060998C4F4C83BE90BFB098FDA1BEA2E44B40
+H_OutputA = 88978F7C405E992EA3BC6B0B9AD614405C0C9067FD1BB6BDBB0FE4E5234C927B
+DRBG_SeedB = D2ABF45D6D4E651092AA4417C06EB1C999CFB13D3A9074E8D571FD2C0F35BB15
+H_OutputB = 248E357FB999C4C70AF78BB9F8E320600EA27E52B99D74BA3BDA018974811D7E
+SharedKey = 6CAF50BA567A883D5C1A0087E9DA4E3C64B63E125E956664AB98932618F6962D
+
+DRBG_SeedA = 7B7A09501B13C4CE6705F0365B886D6248157E661E404040A47C56D641BC7628F27374CB55384C304FA56D390891BECFDB530372C4DC16CEE45CC7142C421EF2
+H_OutputA = 4C5063FF86A67A23DB22C402EA563056BB892E2BA088DBB2F3F671DD3C409AB3
+DRBG_SeedB = 512FAA1465D58518DD6592D8D12569BCB1CFB0926B7F13D29FD38CF8352DBD50
+H_OutputB = 896311E377C654F26F7D9CEC75583EF47DDF5A28D192A9FCC4053AD4D9F5EF45
+SharedKey = 5520636B398CCB8A01059271CB0C40B3BD0FF2E0ED7D8A6421BFE54F1FA4DA6D
+
+DRBG_SeedA = 9481B10044F56A44E079E76A7BFBB99A34B469C7ACA9E89C38AF1B24C954CC7CD98E6DF48F0392E5FE4752F863E5BFC5C0E3112F10492B19A9954AE1D7BECC1A
+H_OutputA = 172C4EFDA87C6B18A71512D539C9ED4E747216372F879782D4C40CB0650C950A
+DRBG_SeedB = DE65EDBEAF328AF28DAA9D9A57DE3101A7C7E448EDC635A8758DD48F668E8950
+H_OutputB = 51B3F458C32E1767F86774111D0096DFA11536D820C0AA08FBC444D71C381634
+SharedKey = E713C3033CDD8D772BC45E646B02CFDC15C8366CF83DFBE38BE5CF2C4BB877BF
+
+DRBG_SeedA = 336B44302B6D6845AC62FA61957B84C2146F5A18A80588915675FF929F5DA54249706C6469AE37CAF9E838AF3A8B280106FBB3A7BDE75338C984132E4FDC2A88
+H_OutputA = 749F54E0A70A57CDF4BFB2A0C5FFA954EF06E1BFA21469C0DADDDA719C906EAB
+DRBG_SeedB = 6FA2C9C204EFFEAAC34EE375937F232777A6E0C6D69449C6EF88636D0ACEC7F4
+H_OutputB = D5807C166F209B43EAEA4D2562F32BCCE7FEE1C0B15E508DF95943E435C662FB
+SharedKey = 039F8686AA1099C193EA10C22B3E632489703D45445818A58230D0DF8CAC7630
+
+DRBG_SeedA = 72834DD5FD0644A95AA08036BF7B3318096CF9BCA39F2EEB5B502D09E440A731D4EE220C969E6ABBABFC0A33970FF99A371A29D308B0E5D66E18FEC889F69D10
+H_OutputA = 215AAF4DABF749C77C1FE864FDC25D9F6F71F70CF9C099A83B35AD0714AFB2CF
+DRBG_SeedB = 778CF95337441D8FC2661D34556F6CC2A7B1F708C383B49377241505FA3B19EC
+H_OutputB = DE7709848CD88A8BD4730D578B1ED78C2D73984C1055F237F8FBF900CAACD33D
+SharedKey = 1FF59E07BC4F3AE882E1D173B5A901C832050BC6B37C7780BDFE14D956982F4E
+
+DRBG_SeedA = 51C83D0805CAE1535BCCF9C86690587DFFEDEDEF76ABE4C986F127DFC05B73D1638CBF7BEF57C9CBD9676E01A09F017A00EB26745DE59C108493595683435BC1
+H_OutputA = 83CAE6AD393BC5970F259F3E84A0EAF044A4BC537ED4799FB6BA4EE84592098C
+DRBG_SeedB = 7A876CFBE602DF8FC87B5DC950D8CD284F8E60DE0E748523F597792EA89242FA
+H_OutputB = 8EA576BA3E65FCABF1737D482599D60C09A546BC99D9BFE83019E0D0D5B98CEB
+SharedKey = F6C1BD1EE4DE80D01123115E013313591A8E0E0D856D7478BCFCD942F58DA714
+
+DRBG_SeedA = E212580A9CFE662A16734368B941386A7C681DC6D0CF4A2950F18FA4B781F00FB72830E4ADF5406A6601A3C9C09001404817336185BD729EA806F0448F651AC5
+H_OutputA = 6E77D2A2A9AC30B0181CCE7841177445B333AD2340F1301F14161F39A01864F7
+DRBG_SeedB = F9A3B72A69A8F15E3C39020A44151111BC40AA80B560D6C65F2688EEE5C1693D
+H_OutputB = 27061EBE29FB705CAEF2362DBD3476E679C9E9FFB6E3C8EE2C170087848A0B1A
+SharedKey = FD999BE13A9B7810DD8B91BF9FCE924AAFFE6D7A6792E689B0BEAC99A4448BD4
+
+DRBG_SeedA = 6EA4AA9FEA16FCC433DDB4CA982BC6978A98D1F5DABFA18577679FE9C6EDD64CFFF2FE27628F97994483760BC47448333CB51624FC2CBC9EA8D3F372AC685099
+H_OutputA = 110E877D89671C35B14F0A7C1BE88D0C677EEECA71F7E1D7B221DADC295C803D
+DRBG_SeedB = 2853662585F41F68A7DD670331AA164747585125240F05DBFF94B6B1A7F0CF0C
+H_OutputB = EEECB0842B24D2BBBF6E64BA2481BEB1153F98EBF855AD40782D9E57991DD53D
+SharedKey = 532F2A2F23E4081DD3BA6E9048F5E6DA32EF3C94D8A88183B1498E597349153B
+
+DRBG_SeedA = 16C6E211A47874AB6D606A8AA2734742CAB68A36300B161C820BF9FE762A1CCBCA94DD9894B8F0072B80C6A2A9D941DEDA79BC1F1F6E611AA4266AC6D3229A26
+H_OutputA = 05DCCEB720067319D12E127E580AF930D046CEAC5BF4E5495499A86B2FFC2F3D
+DRBG_SeedB = 427CA0BDE8F4A17F8D22079306BB8779236BA825670967CA34D70A692048E335
+H_OutputB = 7417524637DB1B4EE968676621013FDD9B215BEDB5FE8DF28ABD03FE7182998B
+SharedKey = 2424BEC2A16BEB78DF26193DA5F9B4238B0EE55D7340B0A09B24C4F625DB4979
+
+DRBG_SeedA = FB4063A137DE53BD4D18A8F6282231ABEB217B8128F5E7C0F556F9A0A29081B8EEEEA4388B6B8DCE4E78D077AF41CD895EEF4F0AEE352FD7E0B6AA4C2B117ABE
+H_OutputA = 914E7FDC73D4693EE77AFBE8C2F61763EA06BCC37868A5DDF26D9F441BE17EF7
+DRBG_SeedB = 2CE7A82496B83BB50957E2F30C3A8F5FDC8DDD6033696926AE95565D06DACC70
+H_OutputB = BB04AE20723D536B1E389216DB9790B06ECF1512D08667298C3621ADDB977F5E
+SharedKey = 814239DE1C9D06A58810F35446C3FA62AEC19F51897723BF38C1D36834D2C2B4
+
+DRBG_SeedA = 483B8D9B2BBC81121C2F26EF426A021DD0AFA46DE09174DB59247FBDA6C9DAA85AB554A357B27EBAA0F523C9F50956E2D54BC41C7EF7910B5AAE76570D7B37B4
+H_OutputA = A1906378D65510B086FECD9294D5369C645BA9F26CF78621AEA563DC5CE754A1
+DRBG_SeedB = DF05FB8D8D639275DD37205FA82C1D916B1EB21E1E6B66D25177F667F1C7ACBB
+H_OutputB = E23026C1A1F99AA1D60ABD7022962CF8F4B0162ECA72461723F6FBCD3F93FFFB
+SharedKey = F52E808E0231FA0E31C39C51D6AB6B91FA4E4FAA6487155B6B08E41507F0718F
+
+DRBG_SeedA = A971E76F06E4999E14311DCBCD19D54EE3EA6439BEEAE1881AD0D5460DE04ADB75AC91A2CD623CAB25257997A5BE4F488E725B1A3B1824E952DA3955639C0893
+H_OutputA = B3592F9559E2E24E21789B0A9A60869ECDB4837188156D5613FAE5EE07AC573A
+DRBG_SeedB = 30F86622A886B493D1B322BF037E358A11D3D858479EF3598061EA1DA0CE6BD7
+H_OutputB = 13319DBE598A321D962CC57A16B8ACBBF7EC540ADA447CD5998B3F035567E377
+SharedKey = AF608D5E6564F7BC0AE2DE129B071E86A3228132FACE4E68213AB5B5CEB1FFE2
+
+DRBG_SeedA = FA131A28E63085926D4A4F7B1649E264FA03F409AA24915B4EE839AE5B093BBF643855EB3C3ABC6A3833E9D8367FB6751859ABB1BB0259293CACB58D3EBC213E
+H_OutputA = 59932FE9289EC5A8598F755E13DA5CC549F4C1FBEF07D2B5FF6B780579D25957
+DRBG_SeedB = 0E8C4BD57A7E4213383C2F701B88081EF78B14616CC65896BEDB7236C0B42B82
+H_OutputB = 5D58027BAD83E2A3CD4C5C3F8C93889FCBB2C380F1629E597851F0ABC5E4CE46
+SharedKey = 9AE9B1247957406C648D1B45594DF322F2853AB1CB178648FDD953DFAF2B8FED
+
+DRBG_SeedA = 2494E7555A6DCCE8355D5CEBC483206DE92BF4ADA79C3FD2D923C9D448AE618C8C862F8CA67ADCE3F7ECE56C975FE2FB2A4B9FCE20374393D6BFEE4389AFD342
+H_OutputA = 451A19F9D0C3FBD38C9F8B774426921255F762C52CD8D01A40D126E23C8C4BAA
+DRBG_SeedB = 5134C6FC223CB0154AF025D372C2F2B23FAD80596FDD040036B82C3ECE083AEE
+H_OutputB = BFEAA07F38CC61E5CFA1E6699E507D63DA96E9BF7FEE1415863D56C077F0BB46
+SharedKey = 0A22869AF4C4391F78A6A0E5EB7C4CC74BF8E0C41DA527B4B80E246CC70A6B61
+
+DRBG_SeedA = 547C1E5392B6CFD6BC05B490274E7B3666B20DCD0E79446A906D31D1AA369C69AE14DC31F2AFBA6CEC3D1353FD2D38CFB27662BB948461B5F1526EBDE4F25272
+H_OutputA = F30B5C43D55022D57FB4E29BEB978FEE3FA852EE07C7A8422EDED15950F7E20D
+DRBG_SeedB = 8CBF016C1B2432415E0D285D6CE8D8983670652071A69AE9BFF63A9E7D5CB557
+H_OutputB = 0DB946CD1B12683F3AFB7013EBAA6B5F4314E79F6745EDA69C5E683544456555
+SharedKey = 03CCFAAA27A0F53D4A06C42EC259C447302B80E5D92D2986B7B9ABAF3CB3AE08
+
+DRBG_SeedA = AB7ACFA870CA59C0B6CE14527FA4E4D01C2B8F05FAF7EE4340CB3CEC79F2A78C3ABE54788FBF055C29A36F23905B469F0749231CEBC393959FD0E7438642DD32
+H_OutputA = 0B33DF53D0B3018CFFEE73B329AC5C90C9FB9C4B102E340AEE02FB845A848EFB
+DRBG_SeedB = 8B995515EFC99B5476BA0E5D3035CFAAD9274D73082A32AB604A7C50BED649E7
+H_OutputB = 6AEBDFF802F8F5CEA0DF640B78CAC4CC038897571AEF4CAC460E6177EEA966FF
+SharedKey = D4648F016399C88A4FCE819BBB7977AACC1B04B4CA465DA952BF7E742616D93D
+
+DRBG_SeedA = 9D812C23893AFF8D7FA4EAA1849D807A37779AFED1D48FE43270DF0892A0D0177EA716A44BD30C75B5B8DECB4BDC0CAB69949DF603BE31DB40D6655D3E0F38D3
+H_OutputA = CA06CED945E73BAE0E54319EEB51C485F2D44532A9A772D7FCCCEA15A0E13CC7
+DRBG_SeedB = 737B1FD9F8C03121AD6D6B556E4A583B9C2C6EB033CF24ECC52EB6D407D2653C
+H_OutputB = 2DADE4AE0A6EE3920683AA2848F4DF547A710330E3F941AE434E567AF33517E1
+SharedKey = E44DE3EC2148003ECA44933702CED0639D9EE0D6A4F978E07BEFE4A3A7879FA0
+
+DRBG_SeedA = E6F868342225E5E49945D00B4708607A1B4407110B3C2685E60C3F845F184282EEC95BD3B226B92D62E3B52E980CD370724902D50C21192278F4375E78420454
+H_OutputA = EF71672A0C4CFD9E15876B3D3A7C8876F60CCBBDFE0A1A836DF743DB2B109F97
+DRBG_SeedB = F88182C0F6FBE80B33C0F9B2E1F2E38062E29ADB17A2B26B5A3632A2491DF75A
+H_OutputB = 3DD673B54ED5C353DB3B17197B5E1F7C7801290E770AD9C89D8E73427F90AA7E
+SharedKey = 5D0F5E77526DE56F4089BF54CAC427A207F962E2FC3B4BBED074803FDB0EE0DE
+
+DRBG_SeedA = B437AD6388576DD9FF5F9D7F524006A4314426201A072A2C49B185C66FE587902E8BB5E1F7048B59FF7ABAF122CF7AEE0943DFADCF19347D5DBF9BF90D9FA448
+H_OutputA = 94DC547C6B2D34990531213478098AC808557CB057AA478A80CFD7AFB949E35E
+DRBG_SeedB = D11B1099ECC6DDDFA6E8BF0CFD5A44DF890A076940496170E140C1F32517C73A
+H_OutputB = 12C1376ED46E838A40ED9E9E93CB7DD4B42D9E83AF860D26ACD0CD1EE0EE8D4D
+SharedKey = CA31E0E4D8A2E5EA204247BB03C9BABDB095C82FA78C6EA1EAC8CC9F78F8D1E8
+
+DRBG_SeedA = 2814DE9F74BABD5A6CA92F92A53B99C25469C8459C4C60FE63A40A46C648E1E19072D8727194E3FE8F78DE5F853EE6652A5D5CCF2187858097A8599A7AD34769
+H_OutputA = 4AB39E113012F0294F47555262A0D91D6BE364AE62F780215A183D67263E1828
+DRBG_SeedB = 7052EB411B7782E07A7ED18E8034F82A23485D4CC1645EAA6B21755945B11F2E
+H_OutputB = B94EE0F72BB81DC869EF8D63EC55B40D1E6098E794BA26384D9FBE18FA7345B9
+SharedKey = 429DDFADAE564B587825C3F644DBAD17914BFF60841E68C7D1F27871D7FC5711
+
+DRBG_SeedA = C7ECCB2C7513FD343F3F9A56687D6BC93A78D3597BB2C1D214C82556C13E4DFE72048C797CA0CB9B776F1C3A43DD5B3DAB6DADB4AEEA8326025AC7D5F9CBA6CF
+H_OutputA = A48A2AD4F09403E4467035D8D3B15E2AB62AF2A2CF1A2D8A19A063279B886B86
+DRBG_SeedB = 14C89D8BA124DC069F13CB6F289F0C912F5B60ABB55ADFFF7BADCCE942421E0D
+H_OutputB = 25DF5C4A577ABDF927F6F641A3EA1938051FEE99D2F730C2F45D4395D13C8D6A
+SharedKey = E81F8BEBB0B308D4ADC52C07A9B1369AA7C36AB86C270809F74ACE236C56378B
+
+DRBG_SeedA = A6698F6229C49043F0D505BC6466BC48FC9EC47D09BEE226FD3C9DCCAEB2416AFD2906574F099964CFD71FF9A1235E68056A3F4CC4A9FB07C26321031C326258
+H_OutputA = E9596AE933D8D970305547D11154DBB2E5543913E4D0D3C38F4DF7A0E69139A2
+DRBG_SeedB = 40C077345C94D43487DB427977A15699DD3F8A05D7F67D1971408611EA341BF1
+H_OutputB = E09DA720CAEF4142221CF1871F2A0EA536B6E115C316961944FE1CFAD5DA4E80
+SharedKey = A510AE2FACA389261DB2FF3D7666CEDED7A2196BED8540232AF76E48A79650B9
+
+DRBG_SeedA = 7822FAD76ADCE07399FC6BB6975B51117FF9916FBF9EF2117B720C60BA6C75E78AF4BB16EFB0E00B6C46573C5201A9FFF94CE2A016613332AAF33E457BB8EE48
+H_OutputA = 4F5943EBFD4DC2304CB1728588D6DF5658E7D303E08F83AE9CC6651E23EDF3C2
+DRBG_SeedB = 241BD5AC6D4585A9EA2CA484EC42A903750B8531279E50E022F5E280380E4555
+H_OutputB = 595E3CAED31FE8FE7A9C430E5025947793AB113CF22670766ACD8D7A1D3125E1
+SharedKey = 70DB482EA9F399B840F908285E53069969E3115F1A31891F55445E7C6BA7639F
+
+DRBG_SeedA = 385751BD7C9DD56B0CBB767F26E4C276426CC2188F6171B23E20BA9E662BDA7194915D1A4A53FF5A90F294682987986E3B69B86A9B6509E021C2D065B166B3D4
+H_OutputA = CDDCD715DBF74AE2B18AD755A90F83CE564426B91922D0E2553D2A312C5B2371
+DRBG_SeedB = 274FD414630E59DF05674EA1D46732020A5F9494F20D507D8B23D857DFDCBD0A
+H_OutputB = BB39223D2CCE8031DE18C02FF7416BCE732BAD272A0C5D42880C9C75E02D98AB
+SharedKey = E80D31D951DFB3389598BE18CFD83D1771EB111DC392B70888F9E11D7D8EF592
+
+DRBG_SeedA = 33E3D7D0524BE2C6DB7766679C7C41FC387FDDE7573BEA588C31EFD30D022EBCE28EF53ACF14D185B0CE2FCB71DFE2B61689C8B6CFBDB235566F7D522FD7483B
+H_OutputA = 98684A83B34AB9F0CBBC4476CF653C8048CA9322B6FEA9F5003FE66D9AE3ED12
+DRBG_SeedB = 79EEA1D63B5D8AA7C347020A2AD7B1A1765D9BAC50A10C98AB78DDCAE7D6C4DD
+H_OutputB = 534DE5738DFC3C6CE0D177983BA4A94001179E013BA4DB73524A5963F74B697C
+SharedKey = 6289A0B03B94AE8D1DB2BC5D5EA1138762675538BB4484649A008C9BD458F190
+
+DRBG_SeedA = 58388DE2BAAF7361A15F1BD16FC01267856CD4AD79B6153E426ECB99338DA9D8CDB5182B7E9888B6B5F9E573DB9C2BD113F3AA952574B63F4AFA52DA85193977
+H_OutputA = 304D0451C66D73730473E4CE9755A07A630815C801F2F43C7259A1D95BD52E3F
+DRBG_SeedB = 00A21AD8F839C00E40EE75F05CDEC9C21DDD486A145ABA59C9AD9CD4957D678B
+H_OutputB = 807527B46F29EDDCCBC757EF05DDF38665E68DE581A852D0B62BE4AA7578CDC5
+SharedKey = F5CA5EAE4CE3A21DD4111F0BAF52642CD0530F64766615187A5060142B8FE3FF
+
+DRBG_SeedA = 3CAE99D73E9DE9571B60BB43CB3CB749C44600E82F7174C53A50DDEF794266D7D1F39046E7E1FB2A939F95D66988505FA1AC14BC6428EE69821A31401EBEB429
+H_OutputA = 7BFAED5DCD8F8D822BF41C1CE3D27A3DA7930B15C2DBF4812042FA81447A1B87
+DRBG_SeedB = 2D5E21D40C87059718E106CDC939FC06DDDF4FD7E4A252B1E4EA543000B64301
+H_OutputB = FB78DC6BB00D84A565E62F381C8EAA158A04165C97494C2DCD34CB8130DDBB36
+SharedKey = 18C08C72B3040CA27487B762175EFA299558DEAC7C260BCC954AD03CC49C6EEC
+
+DRBG_SeedA = 13DABE3111A5D55A8A2F6ED64444AA6F3509FF2E446F6262724CFF6234F612CF22A920D6CEB42BB11434DE359D39E48BFAB09892923C59A76ABE26AFEB66233B
+H_OutputA = 47EC4134FEBBDC6B5D949D7FB082C635056E971A1B89885A65A10ED2FB784355
+DRBG_SeedB = 61560A812A6B5FB6AB28FFB9A3775F0BE89DF3164DF9EE72D3B5F02750C59CF7
+H_OutputB = 2FB1B6713682CFE2C60B341ECF1BE8FB4B9D547F3569633E33D8CB16523AE5B0
+SharedKey = 0A2CFED2975B7056BC3DEBC9D1C1FBE0335C128188CEDE1C1C86FCEC115B6255
+
+DRBG_SeedA = CF230936B07552884C62FCE327E5B50E02A2EEE3CE5EB1110C087D7BBB1016FAF6A324C9229484E9EEF474473B2CE7699DA893F49F5B0FAB8AE2EA3519711752
+H_OutputA = 8DEC6D93C27F06BE36DC361D4951A8196B981186C569A75B180964C48B588A96
+DRBG_SeedB = 5F2F6F05E2055C875D408380BE5DCEBEFF3AFE6CFFF0F7D081ED1013E3870E8B
+H_OutputB = FFBFC0785F20C7E66256273592F730065E3C5E0AFF97A3AACAD00769AA6B6300
+SharedKey = 14843E2F69295570BDD273DAAFE159055415DDB1C151D41786B8259CD1BE82C4
+
+DRBG_SeedA = D66221E35FC3223767FD49E70D3D20C6B2055DA543EC3AEB0FA5516C6B476DD3D980D3747E375E96D84A48A555DD75C826686EA6EB398984974FD91D0E8C54FD
+H_OutputA = 2C1D7C19504C27C3EC61CA1EFFBBA564A90189994877A9E0A7B5EC216708FB2E
+DRBG_SeedB = F95FD9B931A162FF7D29521685CBA80FEBEB819FA43BDFA2B6FDFDAF43AA1E98
+H_OutputB = 3C989A12BFBFDEFB4FBC12397FD9936757B5B2B9620F19C287791D7520D0B788
+SharedKey = 5E8984DDE5EA159863B732194D1A184110F65C9E940AEE30B1A849C2ED1425A7
+
+DRBG_SeedA = 12FFC89D0F8AABAF70656A320C1BC06A7FA6F961C067A6C782B3346582E8AB39D64AB19B08BB3353BDCE04EE5F70A69C06500ED8D637EAED21AE6B1C945345F0
+H_OutputA = A729E44DB0FAD69730B36B5165ECD7AC640CDBDA54B10E34D0A1791A2FC43181
+DRBG_SeedB = EB0564B7A7586E45713F27EB92D2F15932E35D2354626223721645395C614635
+H_OutputB = 7E283FD2C7723901D4F3F2767583BD286BB9DAD57746DC5A245F21655355E0E2
+SharedKey = 9364EF816BA285AEF9482F7D46ECC75912FA66DEE9B2CC5E3B0E10F4576D5FB3
+
+DRBG_SeedA = 4BB67F1A802AD54F805C1D6F3E280A1E2B7AFC69ED273D6C5F5062C5B41C67D89C9B655BF6BACD513A3C060FE68D61B4BF88A8D3F7E425ECBB5D2C4CA35E159D
+H_OutputA = 06D6C588D29B940A1AFD422A23D5D8A0D73CB8C3794555C916D2CB87A0D3D097
+DRBG_SeedB = B8363A378415AD8687F2415300E349303A5C5705D0E84EAB10F879416551222E
+H_OutputB = C67A2F50A35B2D2BFB35B2713AE5F8EBD33C0A3AD7826FC5F55C46B4F6B2CA75
+SharedKey = D12F389FEA642CB382F0C8AE41F967E9BDB62CB9B1938871580F37B3CB7A4B1D
+
+DRBG_SeedA = 830D28A2D5FC8E3646547A46EF0EA27F97B96EE665EA96730175652BD1E59EC04F213036BF603A3E626625692EF776EBB2C3E72136917804F05599FBBF68C094
+H_OutputA = 0A7E500EA9CF89043DAB0412AEAD46853F094270B0D7C67B8E13C4DAE6AB6BA1
+DRBG_SeedB = C974744BB0A6D4EB23B9EDE7BC84337EEA52FD299C1BD85AA0B316036DCAA28A
+H_OutputB = 27B15789A85FB2C24D7D36714639C04AB22DF7BE4A9BEFA375F3F73B43C7C476
+SharedKey = D5FCAB189F0EE0127FCA2A88A4B30664B232BFD39391BF1DC67FF5804DC4A758
+
+DRBG_SeedA = 0165A19DCA92009917929B0CFD9BE5142C3A8D4D884685C1494795DC485AF41F1B9CB96395D962DAE4E3B55D7142E947201CF8A4C50CF8BB2BA4427F1EC9E08A
+H_OutputA = 228CED22EFE9D17B748D23599B435FCD61276EE40DF6EAA546312E9859B71D82
+DRBG_SeedB = B94E189C86C005AC01D7DBFA876919D802485D160DFB023A9BA32A3EB2BECE49
+H_OutputB = 6BCF89C11AED86FDA75BCF13E9547622B66A4CF70A1CD505FF0B01065AFC0F2D
+SharedKey = D271EF6C0917D0B9D95C6D9E344378ABD6C3313ED415EC9D25CAECEE5984C355
+
+DRBG_SeedA = 07518F8C5A6A11AC7AC65459B701DABF147712D3B350F34CA163C9AFA95F31BEBF3E96C561B2A1B4976EB383963032AB4663FF91E577FB2AF1DDDB9F05C79DC5
+H_OutputA = 9CD1E8835E5EF047C6CF3D2972AF020E1866613AB99DBC61665E474A34918DF6
+DRBG_SeedB = 94CECC97B8781136562005AEB785D57CEA07ABF350816469B23752B59C367287
+H_OutputB = 2AA7CCED0932A3692FCCFAADBA573992BEE55A639FAC9389F0A93C3B56A11910
+SharedKey = 607630F7B6BE2967C41B9D779EC7484C21FAE67B76130E21DE2FD50FBF33B0EF
+
+DRBG_SeedA = 1A748CD4279D96FAC92A445CCF49A0C11D5E4EF42C00F7542ADBFE959FCE0A8CCDD236575ADC2CB2E87C413A514D213EE6402938138BE2EB30DCD12CDDE66265
+H_OutputA = 3E7E3A9B389340C90DEC12ECB3D4FD68E9721B0432DA062A66E532ACA2A4C6FD
+DRBG_SeedB = 7773F6373B643B421053A45DE1F63D1535A1A4C7F4282A96DC7006F16BF69AB6
+H_OutputB = 02A35E57086FA9313931C10C590161655D0C41E16D40D3AB3E92A2DA44031409
+SharedKey = 945F6E8217E611AF3BB4A1160CACFE8AC16D5818B9734924D936E215411F4479
+
+DRBG_SeedA = 151D9E371D9BA65F15B1710DA71D7D7948D6139AFFFF5FA5237C7CFF12DCB9002C403ADD898EDA29621FF6B4899F85A7A3F68B988D9DB9FB3285AC2C0F483ED0
+H_OutputA = C276CA4B9CCCEDBC6450EACFEB4502D7096F902F318AE95359EEC9F617A8DB7A
+DRBG_SeedB = F21D36FC2C4FA61ED6A7873971AE0A710B0FD99D45D6997692B1570051885583
+H_OutputB = B0A29D90639B2A4804A8CADD7E1E0A000446FA0C5CFE9AEEBB811C6F8B57D1A0
+SharedKey = 4FFDC9E2E56C49EDA207A5E702C7AD513E41AB09B36E415A38F24AD044E9C537
+
+DRBG_SeedA = C4A90CD579A722F40628A0D6DFEBFCC6718EA8B9C67909D856522957414F7D11BEF6340E49C9000894D53BF46CE119B67A28189A98F30B80FB7F59E8DF91D051
+H_OutputA = 0FBAFA0D4CF0AFAD344C82C531D7842A5B700A2938C0077BEDB555B06EBF5529
+DRBG_SeedB = 480B568E508A2D64A251C1CD69FF8FD8AE3B26079B382608C7E8410D7F071F1C
+H_OutputB = 7F0D1E2D2BB976682041ADBF2CFECDF46C20D28E09DA7BA3D243141B161A0258
+SharedKey = 919A50C905314AC8D71C174CE835E4ABF1440D3F9B587C038DEDC7BEB886FC91
+
+DRBG_SeedA = A9BB707C290F2B1E93EBEEA65875A00A2EA9F6F8ADD6650DA0ED408617DC89CC405E8D5803096DFC69852766956451909F29399E73C273BA644071710108F127
+H_OutputA = 73EE9BD7EF8081D5896ADA96545289BCC9BE84BF8D855D5E43040A191547FA8E
+DRBG_SeedB = 5FCC868DD602E0D708092622E79E904B7009DB28F81E6FD0318FF1BECEAF79A0
+H_OutputB = 33746EF65C3DE77D8E9CF8E66380093D8B07BAFD12EB7A89AD9D0077770E115E
+SharedKey = C45FEEBD853F6A7AA0866905DFC38846B6831ADF684F23EF14EB41A1AB2BED3F
+
+DRBG_SeedA = 1B28D1DC06A8896E110719CFB5FD952E454C408D99898B4E158078B9D6DC50839C5DB6FD3E35623E20045A71CEB6348B45B0487928D39444D2357718CACCE436
+H_OutputA = C0AA04D7098CF2B589ECDA51E10802CF8B4EA16559C27C4E88DAC10D43B963D9
+DRBG_SeedB = B9AC03BCFDDB8359E998F95D3C04A2FF1CFCF89AC1191DC31DE2E261EFC5D8D2
+H_OutputB = 163CE025D74ED55B4A89A3D6B4B3FB369D022C344CB9E0A5D2493EC99EED32E9
+SharedKey = 12A6B8B9C4B76E714ED393DA9D8D2556716980556C1DB54C4681356444DA8F8D
+
+DRBG_SeedA = 84B9A7EF4B198732BB4D11C4AB21A800764C12615AEF853B93A2F72433B18B33D681BFD756EA303EF4B895B47080B1AAEEC17F252831FDDD97CB85FCB243EA25
+H_OutputA = F6A3B6453B3B1486275E5A0A877EFC9626654088E34689CD90A6DAFA5B5342D4
+DRBG_SeedB = A59900545E371E39A5347F423EB1F5C788AEDC2AF0E835348CECE8D32B06CBD1
+H_OutputB = 87091FD02A53490E915F9BBCD41BC7A97C3CF149E0C0075610FED07B1F0475C7
+SharedKey = 0B4C30F206479E2FDA9198D10FBD8275A0A2A84E0C1CEC4E9593BB8D25E5585C
+
+DRBG_SeedA = 75A3D49844115912D6BD60E556748D757879CA082885F8B61610B3639D42CC39782DEEE21C0B413B40B3325C3FB10421FC4ADF1265A785CBBC551FE8C751B64C
+H_OutputA = 265BA6277C9EAE7B9ABECB2AF174F58C96CF766B13F3DCEC7EC7587BFA2F560F
+DRBG_SeedB = 6CBAFB094F99AFE87BE841126AEA19865811F763D4EF8CA78C9B6A69DD00464D
+H_OutputB = FEB1497533B34239EF6D0730D792D8D04828B6AACA3069F491ED7071BCFC7346
+SharedKey = 370CBF74102A3D6B0FB10B9C7350E2A7EFDE633182790EE7E9E4936102577384
+
+DRBG_SeedA = 1EBF7C833D5A8A0F45B96C53943963FAC46787C13C9A80220F97FEE3B98420639CA7B697048E3A257258F59611EE1EA14C5816D41BAAE8AB1792A3E8E1614D65
+H_OutputA = 41E9007E68FBA90C1C01DD718998427AA623F95F22B9AE40FA56A0898067128F
+DRBG_SeedB = FEE9ABFAA6676BA90A7AFCFF96E7D6323DC130F6D0A7549427E2D7FB8A2FBA65
+H_OutputB = FEE6EEAA8CFEC7FEBA4205413E509C0AC6DD02A4868CF0666DCE7D591F8B8BAF
+SharedKey = 7B668C94A4FF47AB78B7499E5CE7D8EAF19AAED6D591A98102FD1214157A2419
+
+DRBG_SeedA = 3293B9896B908D45556320E0974D96DF094FCA9FD14A4912BA3F1EDBA2544E4EC0F93454C9B231E36C7CA0E899497620B7A8025DA9E5D2881FF84EB9B293C4F6
+H_OutputA = 80D3D158C7E997B56D2638EC5EC9763E21F906A2D6A445404AA22AA72DD49E14
+DRBG_SeedB = 7882C12B136D2FCC2B0DE92CEFBA802539F5EEC89D74D1E4C78E10DBAA936118
+H_OutputB = DAA1FB9965E44F9D56C8610AB1AFCF71AF94DC3F9AAAC33AD7468A6F077D3AD6
+SharedKey = ECAD64D2F129D8578713E32A1AE68FDD437A6BA467AFD67328C3AF7D484E0EC0
+
+DRBG_SeedA = B80480F2ACB379B53489530E570BF79B5B80041A0FE6CF3899C485D48412C2B04E2FC04383779DDBF2B89B1384238ADA37B577E477673CE64494BA596D692B6D
+H_OutputA = 60040ED48F8B4C7D5CE259D1F54B57EC19F3FE8F229FBAB8E39B0B9371431249
+DRBG_SeedB = D8E34F892589595AFD9101696BE39A8C512AA59B6A3623A37A9C4BB752A4270C
+H_OutputB = CEAA6E78E9786CADD1762252B386C0C3DB0A85F2D77AAFC951C32BA89909CBD4
+SharedKey = 4CD70B427981A95C16331D5C6E71C74CFEA4B1B015F7A7A5F8DFF086C066BEEF
+
+DRBG_SeedA = F13D064CABC58B6212358B0951E4AAE1A045F30792915E3B8AC7B08BA6FDEC6D7B78BE78B968963810A388E3B87AB6A0878FBBFE68F23D57A3BA9C80411CA3C2
+H_OutputA = 1874F1809C50B303E86C43BF2A5434DDDE9C86327F211F380E4CFC8BB57DEA17
+DRBG_SeedB = 57C0B6DFA1DB000FE0EC1AAA65164D38A6FE13C909209E95C45849AD0E770353
+H_OutputB = B6F3B6498342D6009D27B69B1FCE85283AD21BBA7F9ABE9830235A3F7252138E
+SharedKey = 891B08B7A8DDDD5841706030C6951B6C5CBC834DCE37DDE176E666901AD71721
+
+DRBG_SeedA = 62B3BDDB4F99814C3E5C809128F4CFDDEA8562816424A1805E58E2154AA7D8C24AEF20215D95FAEC6EEF54E39DD9543156496C41FB9FDF6899816D247934228F
+H_OutputA = 1479EE3DFFF0CEA9B54F6262615518B07F483B13A0DCB38CDFF3EC9A4DEE2963
+DRBG_SeedB = F0AA64BE7101B8339D005250DBB18CC1625581CAFDC823D90E71970E70FEC4E3
+H_OutputB = 148795A026267E5A15CE5911C7162967DB8A092910BA552A1F3D61CA1FA40294
+SharedKey = 9423DCC0BE795614C932AC90E02E2ED7071584743C2899439E486C04F7C157DA
+
+DRBG_SeedA = 8C1B5E8D7B20281EE09F5B96B348E76BB8486FEFD0DD20CF9A370DFFBEBA9E34D9CE067901295F0820922015FF1FCB9732780AB3BCE3F73E0EE13C46D64FBFEA
+H_OutputA = FCCFBAF5391DAA9A4956A1B6747738A6480FC56ED55D23CE368BCF0C81B84F7F
+DRBG_SeedB = EE7DB8776F0AF941EB79323BC85CC1001CB7B06362498E5E93C2D73353EC0C13
+H_OutputB = 57B6E42F91E37BAC18F0F3CDA1183E9042027D4BEB9346A2D403C911F7CD21B3
+SharedKey = 6A25547EB5A46C93C007852F96469424A01B914645553B78F5F1B50E2193DE82
+
+DRBG_SeedA = 6AA1810A5F9E25257FEECA64523E6031DAB474BF08A878DF679204708ED220C9ECBD7EF800748E8479072DC422BAE83BC61840A368E8F52F5D02B5C1CC7FA950
+H_OutputA = 80FD79EDFFBB03AF05328D6FE5F847932910873937D21E4DA17FA1A267F5EB9C
+DRBG_SeedB = 530FA0934497616A6DD2C93BE411FCE82238BD80AE2F01F266C0ABECB5CCEE2B
+H_OutputB = 561D325EBBF2502A6B556ADF943FCCD5860CE983A87DBE0930901A4DE2ABAD57
+SharedKey = 5F37B16DBDF2F0C4ECF7577298E17E06EB55F825BD7CEBEC2C1C43DE5AA9AC55
+
+DRBG_SeedA = 3476C391B795EEFE5D1F2EB8F47B6DEB61FACC1CC006434C00957ACBDA81B406728548F4306EF505B52F6B443D122294C281B223269330004F58AB2C1B7C71CF
+H_OutputA = 5A32B97F50758127073A9FBB754DDBEABC1D8466A49D5476F1736D3745D2A645
+DRBG_SeedB = 15D66C4C22107C02C054BEBC283FADBA62F79E589BB4A0D906D418BEA6CD2A04
+H_OutputB = 6D6BA2825E3C43BB495FB4C23344C4536DE62949C055C13373892B7FBA8A4D03
+SharedKey = 6A21EC7B48A17900B1DC59654FBB6DD1243EA29355A30529B05CD646D5C0FF1A
+
+DRBG_SeedA = 345B2F9C24A5D9BB9DDDEE2D53313749486C9C5A901B9A18C2868A4D64473735154345402F049B96A469B404FFF1745254412C209A19593C26DCD655C5BB2FBD
+H_OutputA = A920195AAF8480090B992DBC2BEE898A1A2AC0E09A1C41CDE3CF8988266B6BE8
+DRBG_SeedB = 24DB6238BFA694C35FF0C95AF343ADF437ACEFA0CA757B4229C1BB93379AC4EA
+H_OutputB = 22391122D1FC1DFE7B9FF99A4D88A59750375A0DD928DCC8604C2A485FC4067F
+SharedKey = B0C201C44417BC27918FC0B14F0BBAE053976B6DBF7F3EF0E19C4CD56D0357B9
+
+DRBG_SeedA = 7A270A27ABC4B6125D642912A9D72ECCEA4617B321647E60EE1EAD143855198BD9FD173593C2002A809B4016788231EDCF5F9EA0D5A179007B078A670E12C018
+H_OutputA = 9BCAA0396AE81D0FC982365BA20B09F576C414F608CD57327947F984DDF0E456
+DRBG_SeedB = 69AD8EFD18B50440BACAE9C331D103F7A00ADB23650DF6F3FFBEC46C238F4E06
+H_OutputB = 155EC1A667B10D425036364DB6547C2DD4393FA7137B7EEE3F889E4676C4F3BC
+SharedKey = 9A25D4A3B7DD6A143A490685B376B4412CA83F29A932476DF3DDBEA855D1A92F
+
+DRBG_SeedA = 6CAED48CE625AA81B288D858EC7C7D4495801744139CC02A84D76A67AC2A1E232466A240AF79C7457E0832553DB7148FEB1143413E5AA3D823159227C6A3D55C
+H_OutputA = E1F4C31A20CD2670C942679C3E99771A3E94C9428BDD63D21434D584628AA04D
+DRBG_SeedB = 346E402099AFD80FBA16337BFF42885F7BA0E94D9A45001DDD6221BEC8D2C9EA
+H_OutputB = ED1394A2A45A135E39C3DEF32C58B45D02BE9FB94D337032F652A7430EDD6F05
+SharedKey = 60CD81EAF239BC54A90A4FF008231E7F187F748CD4DA0B1505D298420A45D2F6
+
+DRBG_SeedA = 75885C827CC716B0100F2A16F0D2B662A85083D1AF6DC5C2CBCAA3E9118E5882E86FB7966DCCA555A6897157594C50EDEC4339C12F7E215F0A822797655B2D19
+H_OutputA = 0D2EB69427D6FA063E02296BFE6A406FAC66561696FAC3B2EC4D73E84B38FFA9
+DRBG_SeedB = 27600AE30D1CECB00E8AF55F4B4B49ACB24EEF4B2695606C60CC9884EC62B375
+H_OutputB = 91C72DA54B5BF7C4C0CFA9C2DE538B75D9C5B8B8F1AAFF69EE9D85CA9BCBBCD4
+SharedKey = AA01756870402AD4C96A71C43358C550E69EACB828737B10D582A7CB3B8118B2
+
+DRBG_SeedA = 2069A7A41CEA57DC1DA4764C1D1E5FD994C91664EAB33D716B7BE8B02FCD0D55AF10EA939B700AC10AAD3E44B76244A5D10DA08BD6D4D7EC9414CB3B97A3447E
+H_OutputA = 89160D9AE7B39291E16FDE4DDFF636B60CD3CB6381B30763C30404AAD1D1C9EE
+DRBG_SeedB = 68E2A545DDC7D601F07ECCCCFCD15E375772A38341EAE72CE78080703E147425
+H_OutputB = 8DFBA4DC3C090E63DDB249C4181A5998C00A498A1F969BA945728393DF77646E
+SharedKey = 63D2FA110AB1CE26A4A21CDB390E038120992AD8374826DFAC609F9F28D59BE2
+
+DRBG_SeedA = 512A59B6E1BA442A2E564B51B9B79104806430FE71EDDA429221151697F963920E6C7B12E5AEBD81CBCABC5E03D65652878FB99D6D8CC3D85590B4F858F14A89
+H_OutputA = 9EF1787F6E192F432FCE57E01F745EB92B1B659870769430289719E275F6C2DF
+DRBG_SeedB = DAA05087F633A356623C2E5824C31282EBB6697496A5D889BF3C768B9E8194BF
+H_OutputB = D09E283FF921A4EDE33DFAC9C808C5FF4F86EEA39849C3B1FA1D8D5E28B255FD
+SharedKey = 1540A1088752D38A1D722972A9CF9A0FDF9E4FCFDEA261818C104B5F4E6BA7F2
+
+DRBG_SeedA = 695142A410A437094CA59E52610DE6FEA340DBDF04B5DF214613C0B7FD6DED7B03779885343217687131D4047C604D6D3F9F1C49E8938327E190BA1A145AA949
+H_OutputA = 3EB47EDE34009522B7FEDBE38137A5E1803C9C90E53D35636DC895F0E628B44C
+DRBG_SeedB = B1EE78BD4CDDE9980FDEF40A848497E27BC70F908300AE22F42893CA0916436C
+H_OutputB = 6E9512081D64711A8BF9C3AE0C4D13AA847FAEF890D866504F88D26551B4EDCC
+SharedKey = 410466ECA5975597B779A59C13B1F7A7EAF749DAA05D92158F26068E10AC1E77
+
+DRBG_SeedA = 3B2ED16AF1FEA8011F7ED041450D9036E783C19D0C7FAFCFF16A89AECDDBB70CD27CF63F90BE47197D89E972F5E62C4A8101F8818328A8C35ABA853F55FE7B22
+H_OutputA = 87CD0E8AA903E8C5D5D80ACA05117E4840DCEC94124E1727E1569124AF50C432
+DRBG_SeedB = 8660711B05C939D3624A2EEBA211757744A9417C0B9C0088A478EE7157B36C27
+H_OutputB = 08B661A6B164C44D83E0E5F59EDB508A9C4E0F00290C172AA33509104F87056A
+SharedKey = D26A1B62AEBEF0ACCB043412FEF8C9BA126DE918D6DF23304A89239223561553
+
+DRBG_SeedA = 0E8D6A8FCCF7F6CCE63C8F5DD9BAD714F43182F09CF85ADBFBD84AD0F82AAC3BABE1D783ABDDE6B444F327EFA3980663BEA84964497DFDDA23BCCF39E323BB56
+H_OutputA = 9363BA317F617662086C4E3A74EC3C5FA8F61125A9D4DCD580983F798EF2C566
+DRBG_SeedB = FEE09EC0D289E079F9A300429A4ADFB969A25881F2254ABBF4983B8108472A78
+H_OutputB = C2AB4B26CAC154E8912CD0F34E30D67150802A3FE44FE535D1CEA0959B977E77
+SharedKey = 171F5270855237AFD830F33DE7EE06764DBFAED688FC770603E668498B03FA21
+
+DRBG_SeedA = 479A41D57AE7EB90B1529E3BB6827606C4EDAAD71F99D28DD4E21FEC0BF4C88FB568E75896437ED09A60409E80B225E693EBFABA2221AA87751458237051AEF4
+H_OutputA = 07477793A2924F17FB0DE0280BBE7DBA5282A441F9604D211C6ADE1189ED33A0
+DRBG_SeedB = 52F41C9861F513F1A3E3538F96CF4A2D14DAFBD228369538A0A22849123EC847
+H_OutputB = E534FB2843058B5391BF50C144F6A9238F27164780F9A3EA041A906F60E7E972
+SharedKey = 44706981F27BA4DEFE7379D7B0FD39C46BD927B481F50DE394F8374C43A81FA8
+
+DRBG_SeedA = 925B33C802994A6EC700B55EA3D357E957EE17A0AFA012C298285C6155BF524D8680AA267A0DDDD6D61D2898FB3081A9D935CE61FE71E6BCE9E243F1DBEF1C1E
+H_OutputA = 41342458F732DBC9A7070827FD974BF2907FB206B95C6D5B07A5D15F50CFDE50
+DRBG_SeedB = 6F546FF2257FA710D5EB907F07FDEE2DB1BA6CC0733410EE6456C49AE3DAE5FD
+H_OutputB = 95C1416FC6E7510A9894A21A8501D51A66445FD5F4A5C819CA43BAC4F31CE51A
+SharedKey = 740EF8A7DBF38D16A67AC589A812DDA3E1CE18F730E4C35E88D7B4F909BBBAD5
+
+DRBG_SeedA = 63427EEAFBF1A8B3067FA002F2539EA78F70857309A3052AF11DBF502244C659F59E319153A79F8926C753AA6071EE1CB70C2D7CDDADED1765542FE7C1563BA8
+H_OutputA = 30F71EECA8C897177474F99A32A3C8F6BB56A6BDD89AC1BF5ACE6136B94100C7
+DRBG_SeedB = 7B9DAD792D336737B707FF304B809CC39B6916CE8B24D97CF7542C7D6BEA6646
+H_OutputB = 80C2B7D809B745D9B663B6D0F0463796EB81D672566BD50E726D6E1F80E47229
+SharedKey = 78186B248F5B951AB5DC9150DD25C23F4279FE4CF4DBD4784B903FB3A74F2A99
+
+DRBG_SeedA = CAA17D5207B1CAEEECE48A6E78F1B9B717D8DF96591A617DA15E28FC56CED12A7068AA4284C5BE00CEBBAC2141BFDF9378DFAD6504559C7C51DF48B418DA2F2B
+H_OutputA = A1FD8DC3FE62E043DB453A1F26C98B37E08BDEA81006DED67905C69069B7436A
+DRBG_SeedB = 308B2F0B87F1A5BE42AFCE1866A6EBDA5320B41FAF566ECC93AE61DF0B4C826C
+H_OutputB = DEB55B7FE69C972F100B8AFBA2C881587EF06D64F09BBEBD46DFB55CB6D5539F
+SharedKey = D6BECA57EBB42771BFBCDF10598E5042F56BDC7909D45A48557B08E71762C06D
+
+DRBG_SeedA = 195D6C079F920767E5E6C540EE6B960EA67A13FC13B9F91BE2B8F19FA9BD05FAED8AE340D27D304B523CECF9CB925BDD3B0B9DA38D770019AEE6813351B9FF0C
+H_OutputA = 309789F0C990D77732986EAD83FD70A29051FCEF3D569B05EDA2DECD1BC2B3DB
+DRBG_SeedB = 7378FF9303285926C2EFB534C52852E073E9E62CF37A58624E4DABBD3E7EF29F
+H_OutputB = 152D26741A8330D7CF152C0E8383F302842AE7F1248E27111CDFA8DAD0E4EC4B
+SharedKey = 56DC6B45848BA22DDD2627F545348022AC6F51262BF33FA1FF43F5E8C5FBB710
+
+DRBG_SeedA = 1710ECFE3024E36149F8F46D4E976AE8300247A2C9753C04DAE399A4FB29E88612046E9CF12C148B19F368F67319D16F4F24A81C015463367944A589CB0CF263
+H_OutputA = 94CE824BB46D1D219B0DA4C0BFEA7E3C37F12C46E164B066BEB26399A7B550F0
+DRBG_SeedB = 34A60CBD707C581FB335C0BB9FBA5301121576AE801CEAFB544942A2D126F806
+H_OutputB = 80219FDE3B3755B65DAEB01813B237B03453B28BBF6B6D3255E2FB06115D9DF7
+SharedKey = 5AD97D7D16F19CBC9DEA212FDC2581F2286A71152C588A313BDD41C1CFEEED15
+
+DRBG_SeedA = 76C124D8100DACA6E7CEAF2BEDC202936B2CB99E1F18DC943FC4B29090437775C0FE8E724D86821309B356CB4A7F39EF97F10980E95E4732D587F6900CE28256
+H_OutputA = 2B93558F48A90837138F01D826A45748480AE40307BB14C53FB3A1B4C53055B0
+DRBG_SeedB = A26E875E473E700E5205C62D3DB19DA0795B479813817343C939EAAB96B748E4
+H_OutputB = 9A4FED73A27DDA8293472788E2A89BFB0503D59FE70D343032E7F77E97A385E2
+SharedKey = FA5226721487732EBBBFB228216B56D7F91300817E562B6A3F4AB1E052A6B30F
+
+DRBG_SeedA = FE1163F6EA457F14AE528240C68D87A7003C50994AE64FCAAB40E54CCDAA2CDB3B5F797545B4601F78BF4CB45C7B0351DCC65834866B7C7158044FC18DFC2C11
+H_OutputA = D61A51A459E45C2D342A2E8568EA10643DDA9517D8E4E1938BE092D005CB3026
+DRBG_SeedB = C7FEC74548EA7D1D1724459150FD9926E49BF3D27DBDB9AA4387AF33CC3838A9
+H_OutputB = 85D9E687D1FF868EBBD598BF9EDCBD55136A02F2B7E8B866B83C6AC69D6B0092
+SharedKey = 686A6A968FA8D350E7FAD391E4655E075EFA9A2DEF562FE436977735E05279C2
+
+DRBG_SeedA = 32F42F6E60CD0D82461B364BB3C3402243DF5BD7DF57071D4AAD8ED5C4DAD29BBAFE9BD8D1B1859E3ADCCA119EE6808E19831228F23421EFC2B61AEA9156BCA5
+H_OutputA = 53CB12A34229A9F3F4D152E0256FE85252419C68E07DF09B8CE5B34A2E4EB1CE
+DRBG_SeedB = E638EBD9D752B27EF70D6B3B218259EA0F72C9C8C3DBAD635066EE6C9D16D9EA
+H_OutputB = 8798A8435431B93FD60E7EB2F9EB22BD7DDCC808214F58DC3682ED1D6559E204
+SharedKey = 1B45FA5EAE839A27825D96CE013ADCB56BC335E46908A9E818C0CC2375830270
+
+DRBG_SeedA = 9D3A0D39B92142FBDE234EC74DD73F4B0314A411B067E43D7A8CDF9DF429B9CD30381780BD1AB3E81AD31FEA896A22B1E46DC0FAB0A2E8A61F224EAF1CF6DDE6
+H_OutputA = B5029042CA3E7F88F01CC1AF003AB86CF424CEE47647208BFE0717984C899D77
+DRBG_SeedB = 3A2D3A5433591EF5C587512707D7D18BEE453F5FFA10DAC564EC87DE621A5312
+H_OutputB = 0EB9E5619EA1FED823EAB5578B1D1AC17B445F138AC2ED5DA3B6E24D2EF4FAFF
+SharedKey = 10022CC9D1C4A41AF5FF00AAF80944C0F4D8D39F7E9904CF6D311AB7E4C68EDE
+
+DRBG_SeedA = 292A4C49983F176CFA6A8A70A4D249ECF28E27481F53D544D5A77ED4EA9214E7175DF1DF734F3001A828A1A53877F791B20239AF7A0CD6B44BDE8E1F0A8023F2
+H_OutputA = 1720B440FD1AA1D47BF012BF3BA9FF1D81535DBE328D5C18197E95DBD6A1882E
+DRBG_SeedB = EEB3613D5131442DA0C7BFCFC3B9F463BC4223F1172A05FCC728A051956E7890
+H_OutputB = EB29CA215FEF38722F2E3F0EA5CCB2C81BBF1F5E9E0AE96EBA1190BCAC93B731
+SharedKey = 707617632AAA7B279E75B0A421227FE03D6C3D37E9DE2E953DB4EE267FD4BC82
+
+DRBG_SeedA = D752A241F1647C76E772969AF46B1735336B97CBB010766DB05F6A58A3402E5FF8807CD73BA99CE2E9C29BCAD6D26F7FCBCEBC8E800D5C0F48BD2D038DDB9908
+H_OutputA = 0B0352B1A9BBD5E38B6934F0E6D20E24773974211D45166D87084B79F0A4C12B
+DRBG_SeedB = 69C46E70E800B1A80EB7D0B21714B39833F057AE78AC52D4922B7ED6F9171C10
+H_OutputB = DA1021D1264C22A5E906CE3B5E2873F9B8E466F05D688C2E66EDC877FD9DEC39
+SharedKey = 3F31C2AEB0AD7800413BFC18E60F17B3B03C466DAE5A38D79C9760FEBE26DAA6
+
+DRBG_SeedA = 64FF7C693F22DA0D8D271C4A07614D861FA623104FED74EE49A2B96E1339442A771BC0911E252C794719921A933E8946C1C7D4E30702E079FAAA790FB19060C9
+H_OutputA = 41D258A16F5F50DA28CBD90483ED6FDFFF881741BE6CBE6129E86800335B84E5
+DRBG_SeedB = 2916515823FFB262B19FB497B613C12854F74797A04BCC9F8C11A3169BE9565F
+H_OutputB = 497F9DDD85B4C1D8859CD61D43D6EC6662E066D1DCF51A581D03A7DC9656CC20
+SharedKey = 04F403A575DC9543FC6B2B1C79BD8B0EE7F519DFC01DB17B27C5FA0C2867D411
+
+DRBG_SeedA = 0629E05A8BFE2F3AD56ACBC7E538694689954BBD6D101614FDD223BB5A84D175E5A6BB373D46C5F3E5E931868D57BE211B1DA17261C8F6B339BBBEE6FF3B7639
+H_OutputA = 6FDF1556BC1063BF74EC73A787DC72B11A8C15E401F6E302E3B61C98A080CEA3
+DRBG_SeedB = DA2824CECAC55F45728D9B05B681EC1BDEC16E8293A8188A089D9AD28FE755B8
+H_OutputB = B9FBD93A5F7681AF954E39B62DF230478002EF13D40A2C23AE2DC8E74576C54B
+SharedKey = 1739384F919494D90C21EE91ABE81D841E3ABEBE7617701C139E487079FE9173
+
+DRBG_SeedA = A9F6418A4DB3820C5622B6A06E21EC9FD729CD8CCE5EE9B2D0AE42AAE3DF1723814195C3D21A21B870F2500C387EBC1F7B9DF4ABDEBA5AC51A71561E6217A756
+H_OutputA = 9E045837FF9EBE9C7DF5953343037C62E27C2FF29B4E99C3C44ABD73EB8E0DC2
+DRBG_SeedB = 9629503B4DF35BDECCD3448AA819171D32EE3212BA3172A2842A7C45FA176970
+H_OutputB = E1AB35230C8AD35E521EE4084FCD8D0C2BD1255E0C3E12C6AD7BD0E2F6CB6745
+SharedKey = D7BBEA8992AAD5AB488C19D3D4DF5E804131E714D21CAA96380A9CA06F9AD512
+
+DRBG_SeedA = 113B86304E5FB3A1E98915F979B0DC897EEEC966D1085F56B891048B22F8F5361883E64E72150DB06F46CEFF009D5BFC9B9C563C3CC78D67017FA9FC3B852ED0
+H_OutputA = 3254578A7D36C9483FCBC0C0C587D67112C8554052CF4DD03CC350315A245E29
+DRBG_SeedB = 8F0C0799AFB740DDC6BCA7DA5514580601230F5E86ECEC5C37004973AC05C7D3
+H_OutputB = 0CB983E5B81C09C177A813CFFB9B0762A50144C70FF5E80E423134B408F30F4B
+SharedKey = A568F0539009451F1BCA57872D25DDC122F5CAD95746DDE34A15F39475B63600
+
+DRBG_SeedA = 18BD42E02140E6903C31F23FCB1013CFB99B984BE54920222F09B060CCDC06CF51458FBB303D3CAADA95BD0CD20A2A76E7D3C15238453D236082DFEAD76843EC
+H_OutputA = 2BC8498F5A89AC5B49FEF39A5B96A6003E76BFAFDED3536C1159623854CCF17E
+DRBG_SeedB = 5429C3D9326AAD9535CED2AE8A6799B8EA466122D72F006407A612B8BD12C638
+H_OutputB = 3E1EC2B1A5A1D4CCACB9D79ADF04E308017524B795F45E6D96F0C46DA4085B4D
+SharedKey = 0751B90778DBDB730111D025997466A98B0055DBC90CEF8E55A2D10218BFF823
+
+DRBG_SeedA = C17E419E81BC430CD2798D99BC162FF15E70CCAD3E3D7B0D770372161E0292AF784ECDDF6F320E76804B92947E43FD69945E94E3DA7DC31E62F322C8DD98EE6A
+H_OutputA = 32D6529772794CA8191F408DFD3E67228DC5BD93BF237BE390A348341456CEFA
+DRBG_SeedB = 3B7FA85992F9B0AB2D7992CF68BA9743B8B64C6D9AA63E06F35EE27408C4AA8D
+H_OutputB = 4626D88FF8F9C63D3AEAAB313977FC3C504B2FB4BCA160552AD9A901DD128489
+SharedKey = 71A6D66F62A8C09B65E175A4D49DA8A9212E8E098E5F40A2D85D9B24E295AA81
+
+DRBG_SeedA = 7C328694B676ACBA991BF7077621770F2B66BED53A556D6D7C0DEC2AAEF519FFAC2C425B98B0E7C4DF95898991794EDF048876589FC5A7789774AD2E77C9765E
+H_OutputA = 3F6E6E627EA554FF7B6452F901871CCE11E7B6F4BBEC1FF18B5EFF43C2CD676E
+DRBG_SeedB = EA679B5DEB3B7019ADEA5D296B59BF305AA1CF110700850F970C401AFAD91A88
+H_OutputB = F6B1387E6F345908701CC61AB352F775CB52F4C57F984805864FB666993B7084
+SharedKey = C08BC67B648014FE17373609FE89C3B41CDBEC1DB4D067354054A0AEA3DAC816
+
+DRBG_SeedA = A28922C1F945F71C4341CDFFA2EEB4E4E0798EFD8209A0B2C8A4799F389C0768E29D86F116DD7C156E8817FA004B2460F019DCF076290D37066F81218D46B4B8
+H_OutputA = 63789524C97BB3F64FC0D850A8EBD72050BA6549501B061500AA31672A2FC192
+DRBG_SeedB = 6E0348874633508D8B4B7755F8D1F269F564C94083200F7C20D856111BB9C050
+H_OutputB = C90A5549940DCC7EA1AA6A356C14BCC2D043DBB03BBE731FE3AAEAD8CAB691CB
+SharedKey = 148A9024793E8E7806A9A260E7216CF60BE47D8BB57BD6267C42C73DAB3B0FB5
+
+DRBG_SeedA = 74F32A98377F2B09C5CCA3917BA8BC8641BB318B71D01BFFA48CD8D9163E6DB4D056ACB4982590EB5A5865315BCC1F6EC0FB211D6C9E1D78D78F1F344916FED3
+H_OutputA = B0FF2F100E81240A21EC2D89DBFF669546BBCB2CBBE7355A14B94680A9A8FC68
+DRBG_SeedB = 1BB18D987C52E6476D32D6CE63B3D06FDDB9EBA08F257F6271D93905FF04F709
+H_OutputB = DCF7673CD1B4DCE1D835DADB00E32AD56A7B6A9967C9717F227CFC75B56144F7
+SharedKey = FE01EF275C4D289CE201CF5DE9C284D94E544D35F0B57BAB56D18A1E667B7549
+
+DRBG_SeedA = 45DB64BB21D41FC1D23ACAA2B2CE460DFDA4287E515E285C0D0A919BDA2AC867D0135AD98E67B6EA387F6AF1FA8CB1F3F5B0F290C009C2BE048B8DB4837FBE7A
+H_OutputA = D566A0041196BB47F5553F335A0C09C4D137DDC544503CF2606A826AAB573BD4
+DRBG_SeedB = AA6B6506D330A6F18F5B471879E692A73D5735A9C8CBA4C58849C4EB778CA7FE
+H_OutputB = 0D3C28658813944A660853F5A58A3BA3D92945DCBA8AD4EA530602A977E162ED
+SharedKey = 004006418E74235511C8C29DB4064410D9C5BE4EBFB44AFD6B0BE2FABCACDBDD
+
+DRBG_SeedA = CC6C6528F7B500F6B207DE9B0E853FA9C64F977D05053FF9F028A4E3EC6433452B976332EB883210535A037BF55F6DAEDB393261385D0FED8791E7E73C625B31
+H_OutputA = 2A634198029770B5E2361F72AA067750AFA60F0FAF08FDEFEDEE24DFAE6D97C7
+DRBG_SeedB = C44EC4B7551E4CF5270829C67B7EA91FC6E1420CBA195847C3A8EF0CDDFDB0CF
+H_OutputB = C6041B2F610392D1AEE1C965C6424656056340CED546E56C48D894A1CC096FAA
+SharedKey = 1AF3E2F19043E81884EB7D498762B76EACDFAFC269656EA594B1157B5CAE1243
+
+DRBG_SeedA = CAFE207B6B6A69FCF2ED0D85084D2F6393E8DE84E4807532567B630B3E52883DCC58D570A6B3C1ECD298205E930F4F63A68D198794CDE33690A806E315597B51
+H_OutputA = EBF7BA420D9BFDFDC1046FEBCCB87EF1A30B2BE6EAB449F839FBA0FC6E8210D7
+DRBG_SeedB = FA069691C8A536EA39F7E6695F6AD58580AADF96C02832A0E9663AF3FBC73DE9
+H_OutputB = 7BEF46EB008BFF13F3C3DEAF8F4246F579E24C0C8D24B62375C67F5B06E8127F
+SharedKey = FA01E6DE38CA2E1DA454544B5D1F1AF9038DFD3F097B989661B10DD82448B957
+
+DRBG_SeedA = FF0C617B3D2FA318D8AE7812FEFF85FE3B897D92078E76B1B10719325DC268DF789B4885DA24034038116CD5326685CB03A69C2F1DFF3A3935ABFD8F9EDC5425
+H_OutputA = EB6AC6D9FE7385D22BCA30C2C2F1A9A26BAC17885F1EC0C9BC61D24D6C861701
+DRBG_SeedB = 888E0D816E9F7CBD33C173712940B04B3077AD741D1B9B2D10950AF1993E5645
+H_OutputB = AA52CA3C8DBFA43D9DC0B80F08A2A8F6D53DAE798EE1311A6886AA8283BF2538
+SharedKey = 502A6EB066CC60C3DD27FB4D38455518701D6DE0DBC2DEF2AA24EBBAA9E15255
+
+DRBG_SeedA = 8F58B5D41591120A55FD484A7B6676DB061C261B0FF0BD554FDC55178D0F9E8CD9D65A0A2EC8760003CB0719824C3ECCF39B5E2F0E792B9DCAE1B8B267D4E4B0
+H_OutputA = AC3BB0BE7923CA350FF8DA4EC7DDCE8134127F81D27E9FE68E033B2E80D27EF1
+DRBG_SeedB = 05D169FE72F5365BB6849EC8E0B537A0BD362030FEB42B526D7ADC12004568D9
+H_OutputB = C2377F46D979679D0E760A5032CD7F59AA8D14C4F7F32ED6D5F13ACAEE3E7589
+SharedKey = 9EDF5D5007884D188B3F06AA40984CBB8066F996014E77798F2D61F8F0C68EF7
+
+DRBG_SeedA = 23ADBDE2BB0D3617507B643DDE356180E4B311771C784FBB786FAFFC6D384FE0D64E4DCB3099C170926707036960B33C9131FBE054B9D9EF7DFFC472B467913F
+H_OutputA = 0F8827C495AAC6B45EF5BA472BE34FD3D00335F484E77F35578E5DA71F382B55
+DRBG_SeedB = B7765A7F93DD805329685D7B3BB4E36652DE6917A5F788A07F9C82F18B9D2B40
+H_OutputB = 771EAFB019F47B16F686928B116D14F7B29966B0A28FEAC02FE7C8517EB5B6CF
+SharedKey = FA8CB105D93B28E88EDA6DC0C185F1BB4C4D17F5DE4E52CE1553D22718BC3EC0
+
+DRBG_SeedA = 4644D44CF60FCC343152F2EE17106C07C687BCD8DAA3B8B2A90053A5339C708DD38209DD2B1BCFAE346EE86775FB5BFDD7FD96D0F98F798CEA6601A7A4A77E43
+H_OutputA = 50BACC98A1243E9AAA3BC66E74C1FC8284186BFA9595C43426050DDA4CF2EE34
+DRBG_SeedB = 383412EEAD74F03B01F18261DA22FF2D87AB629F085C8C3E35284538E607E460
+H_OutputB = 3B29C33E7ED7EC081699C54DC7A60A78D0F5C5B8C0B93BC7CE84B6EFBE2EBF7C
+SharedKey = 41E3B3AB8926025A9CDD338BCD0600FC61CC6B8E5D850AC38E4E40285D987C94
+
+DRBG_SeedA = 08728D22DC1F1E9F18B15D303AE8C6A84B6C78CF249FF8F24F20055E78AC6E8008B1FB4521EB7084463F0811938891C6BD37371E9055EF654F5E416E8F0738D6
+H_OutputA = 5FC38C7FD2FC812A2F47A2B647844E9EA8559AF72B507D26CDC7F96155622111
+DRBG_SeedB = 839424A2A8E083F0A86649BBC7002190B3D0B2D7242757224A97EB5827703C88
+H_OutputB = D11576346731D460A89D9F1622A9286828F95B4C610FA82CE692C9933D4434B1
+SharedKey = 8CFFB6A9219C026CAC33880CA1BBE605EB90514200F7FBF7BED7FA718059CDCF
+
+DRBG_SeedA = F996F40342EF7DBE63112383635CF8B18D979E31526C3B8A690167BC849A1A77F45EF33DF9F6569C2959DA17A9380D19D7A3E5679C04116014E2BFBE3296B453
+H_OutputA = 1859FD8CB2E2CCAC204CA5F6F6BCF64DA0A3B350B7462B78BF739AF13B0F6BBE
+DRBG_SeedB = 41E61A9AA849C65E0A40037CD2AFFB8CCD759DA7F197A3441150EEA6A360A756
+H_OutputB = 1CB45F0C34035421CAAF06DFAEE4F7F365EC8F84FAF5F760070E1F0349BF76C7
+SharedKey = 1E46E1286F36B821751FB460029522006F77A1A001D9BE51003DF62B7A0D872F
+
+DRBG_SeedA = FE5833A7742C9EDB6BF4E9D0732D052958196D9C6783EC7A1D9AD6076F9C59D9FEC725C5081032EEBFDBB0AE0D6B5896692CED2F764E026BD452C9E88EE1F7F2
+H_OutputA = 22A6028441D055C00AB9B2BB9012D1B05D4BD9836D25253C120C3BA634748797
+DRBG_SeedB = 7EEBA4537CBA9BB0A96D9B16BF2F4EB6F45143522AA7128F17755E9F097D30C9
+H_OutputB = 0B958495D291A297B340A65619FABBD38473D946605331A9B137C6821CD38207
+SharedKey = E98866CC7DEE1F36436229127A6197685DB40E3D8CEA55DE7E0B9421DE450BF9
+
+DRBG_SeedA = 7A8350BC5B9693B49837FCDD9FC41FCD42FE8B8C456B0B2A6B123F98E4691C4729D24E858D5FE59DC273D27E590DA7516EEA8D017E8D18B09CFC8FA91F1FB14B
+H_OutputA = 0397E6B45CDE0897008744FB089FB6D26C22FDB8E82E497043E56BD840A6FA70
+DRBG_SeedB = F6862541E78B43A16B313034FD01D9BAFBF972CC17BEA551F0E75961461CB696
+H_OutputB = BE21CA66BC946063053190025F197E78AACA9566B79C8113B86AE7EDB359C555
+SharedKey = DA6BF2530F817718A2F6148E705F9D1115EB8985743385035B5C46A67F598835
+
+DRBG_SeedA = FF64FD2CDC975C1A6126AD7DD4E951119074A2CA3A99AF70BEC8ECAB44A371223F301542B8FF34F61BA84D8C354BB65735F0BEA1A1BA858224288804356F21CB
+H_OutputA = 13E41F243BD00CA61CA2BD99A0D039767F1C1727D190C0F1ECFD8271850836FB
+DRBG_SeedB = 7140FC987289D2B5ACA7D974DA37AEDEEFD1639A0D7DAB95944F1BBFEDEB7F8E
+H_OutputB = 5A077A5D5304230BB2BBA83E2CB6E135929BD72ED5B7BC5F972932BAF9C504F8
+SharedKey = 015B4BB77EED01731EBA876A6B9ED402C5EABB7A0E892C9EF7815D75037F8F86
+
+DRBG_SeedA = 3B657999C1EF7F8955154D77707A98C2CF4FB5008D7A1F1D4FDBA2C6EDCB76EBF17CC709E75EB26FCF69A53E2CE74409C3D66703074C4672962541964B5D72AF
+H_OutputA = 5ED90D97E98DBCF04D79CD602979709D78852D0C6C6993464CBF1152D49D1FB9
+DRBG_SeedB = 4385C08500DA04BC707DE59F5425B9BA2B0691E82C77E41350A1813F1A0249A5
+H_OutputB = 785AB27E96028C2FA93CBB89813956C6C3BDE09C185535C561F54EBCFBD391E9
+SharedKey = 3E2A7B0564397F273C0A88325F05C44183D1009679ED71DD404EFE8D88BBE446
+
+DRBG_SeedA = 2A1E181BEF61AC23242A57A6FD6CFA9BEF02758D51FC06F5F06E9950D328D3330816CFFCCB6B2EE2065B90E0BA1EB3F15B3B0EBED0625A24BC7CC4CF374E963F
+H_OutputA = 987D758ADD260D87F35053C3AE7602B67B45413231081C0C893B1B9208C8C271
+DRBG_SeedB = BCD77B83FAAC03813FF1B9B657B194C971CA986B8DD52992A5C61AF81BA4CC0F
+H_OutputB = 0C4079F8DFD6E7D0DB67FFC018052C0AA89F2E8552978797226A820B2A0E0116
+SharedKey = 367B7166774CE67AA509D9B9FA6890AF2186389743289BC2E2403900374697E8
+
+DRBG_SeedA = AE344B25A268DA763F1D2EA5221093756FA73B2602859A62AC04089A14848095F454820014B7837DACD20BB6DC83E1CD293D18FEA679907BDDBC63D7557B9942
+H_OutputA = E99D32C7E09B4265DEB55D53D5A9096357DD24015551902AB1E6AC1E4204CD78
+DRBG_SeedB = C8CFFEA23AF722D12C153185F0A1F8616BA13AD08B7DFD49CC7768315D566BAC
+H_OutputB = E3E138B26C61A4C7B10149E5BEA319323ADFA41E96D732F7AA320C186F5F28F4
+SharedKey = 4A27CAD56A48237D5E34AAD0E1AE3DA5EB1EBE71A3E012BE48FB3AD24F777967
+
+DRBG_SeedA = 2B730E3FA6C8EA8A48CBF2E7E5B4227D3E0EFF09007BA4B3A768F52F4CE2E2F49BB4C94DBFB5EAE8A99C0D94B09566EE995DB323613D0F3980AE4693C80E87C9
+H_OutputA = 2ED33D408BCD920C566314ADDB7D85A2400A159385E9E19BA0F2B8975C7E2BEC
+DRBG_SeedB = 0E68F0104EB03075CDA6B691C67F5031D0D844D8860E0B9DFDB1A2329912933C
+H_OutputB = 5CBD803921756B679E41EDC87BED1C8AB7E0309FF6D69342601CC16E07A535CB
+SharedKey = 32E75EDB8A8BDB555B59B5F4DF61FB4332A4363826FF0FD5DF1F3CB30BA47C1E
+
+DRBG_SeedA = 6FE4E7F816703A74C43AA4818301C4CF76FEF646A59E63BFA11B93FC4D67339F91A74651665F4642031CE1C9929AB1E58D0270B344506A21AB9B029D6E7CD6E0
+H_OutputA = 9CA34A47A2C0D80911B619626B56D21192BF2660C7BA7A89C2EA27A3667E7593
+DRBG_SeedB = D24F6150206260E1CC243E481BF017A6395357EFFF319A27AD667A577FA2D238
+H_OutputB = 71B21EC44BAA71E25B927BE33B0A218A7253C76D42F6854A774A45DA9B1B9A9A
+SharedKey = C4FB088B9AF4C1E263F10AC8ABAB0B53B74840C22A4900CA853BB677DFBDD0F2
+
+DRBG_SeedA = 9A084D87D7881B03300D8606240689EDBBAB3004356D040B12535F4057A56B331E984153D3B9D6A6B30664FF2B92B2CA7A5BB42261C35A51823E1D0CD602C200
+H_OutputA = 8F4AE462A2C24B0EC5D3D84726A57238FB38E0D2951C6DA40993F74941D7FCAE
+DRBG_SeedB = 1AA0C86DFE4500EF3C013CA07AA4C3151FFED1FA64FDC486819C7286CC48918E
+H_OutputB = FE2B6C18795CD0DCC4828876A5DEBFE6D23D6D72C660428F34622B982ECB23D6
+SharedKey = A608BF23648795CC236AE79CD3EAF53155DD63A3BB784B1813BEF8680216DE27
+
+DRBG_SeedA = D7656448BA98B7E6601DDF8E9F4812C1BB718CA6A935544BE24E8F42B539168C40AC3B568F5C4CBEF91F6A441C2590877A39A75700BAB47B4CE38969AC976BC2
+H_OutputA = 252F25F77D6112159CD3D080CEB21F548D77CC505CF18AB543595202158A92AF
+DRBG_SeedB = 3130C000D5660CD3144159C853367E800ABBDDCCDE9BF565D9FFFFD2391EB243
+H_OutputB = 9623BF1F74D6AA8FBC0FFDFFF735F9FF1FB54854ED817F6ED0C2E8471E769C3B
+SharedKey = 457289E604908C04DBEFFFD58151C4A6ADBF7398ED69D9016DA5409B975B3863
+
+DRBG_SeedA = 3EEC23C71DB84F2BAE4E3E9504C6223AA6D64794DC82323C8ED5432946CBE56395FD26DFD2B4795DF6BF12AF11495B21A1B34093F93A49958F566912FD22DBB7
+H_OutputA = 50545746D64ABEC5D9B8043D0161B4A110CD218C207775562E54420BF864E50E
+DRBG_SeedB = C38604B5A384614CA730CBA0F51FBBC3B724D14B1E12E2A6697185EAD5BD272E
+H_OutputB = 684319A500C6B5D481D02105963E9016D6B41DE262C21CCD0992A1A4666EF8E6
+SharedKey = 73CEFED13CFBCD21AD684A6165A2C25CDBDF2C8F8B026B4E8CE94A42816FEE4E
+
+DRBG_SeedA = 47F2F776A3C41F68D55B3C6EC619E6D62065328AB5CA3CE989C0B51583FA28E910991453F593639935E956803B0E6936C3AA49DB79C14CCE7DAA87949CACE370
+H_OutputA = DD90C764BA018AFB9B366CF09FCDF5185979C83C651B91DB838DBED365DE70CF
+DRBG_SeedB = 797E48F12FBDDAC129657CAD2C47DEE77BC21EF805A5EA4A9472FA9D2D695F8C
+H_OutputB = 7DD6842B533F3649A32EA6904CA7A90FBFEBBB838A46D70CA4323DBD64C600BE
+SharedKey = 56BA33C186EEEED8EF041563BD8851AC9AAB384B8F309818C8AE21F07091A28E
+
+DRBG_SeedA = 1E7B154350468D0222E1FA8136405497351266ED492F88C9F7D6C97F0227CE5206F4CF85D1F56CE4E879717C5CCE3616F985409794D3167CCD913389F8BE8B7A
+H_OutputA = 8F51BA7CC224789622B884EFC41228B24DF2B3AF5AA5E0EA9332637970DD573C
+DRBG_SeedB = 21748553D33BD525417CEDF2A0DC5673E7BFF10A3A7FDC9C069B2480CB89126F
+H_OutputB = FD77FC2676CAF8E4DD03003FF791E6C0383B5EA31029ED3F95A011AFC33A5B98
+SharedKey = 324A2E7B52318D6A559AF02EF0980B4C6AE6BBDD667B5CEEC9C09347750F71DB
+
+DRBG_SeedA = 85BDC8010265564FF48E639DFF17D2A6AF6F1526BE11086B15461971235F6B34D118507F8C08E13F68B55EB06E13932E5631C388A783A34EF79E819FC3A4CE70
+H_OutputA = 49B24FA4DF11359BF52C75C6F6AE815A8261F10DA3F8990DB0D34343622909AB
+DRBG_SeedB = 17953599EA095112DB451D3A4436239F30DFDFC19AF256480097B4195618DEF5
+H_OutputB = E6E65430AAB2AC20C3BA755E2772B541368729B1088C550647DDD508802ACAED
+SharedKey = 8F267C4B85AB4F8FE30822C970D3873D1DD99A95CEB3E2E7EB65A45A84131973
+
+DRBG_SeedA = A6334F5E8A1B651FB2FB36191E5475528889642D141054E77B00F078442FC38DDBDCC54A51A2AF3A698CF7FD02DF87B0501951EBA6A0CB28971A58A238CD786E
+H_OutputA = 82DA56688CC89DE562AEFDB4041671AA7C5E4A3B49D174327F019CE64666DB43
+DRBG_SeedB = D379FCCDD8DB2B8979296AFB1D5D0A960E417C90FE4B1F837042EB4803419DE5
+H_OutputB = EBABFE72699739336738E44A12BC9C0607BC79B795D9A9D0F1EC58420551F0C4
+SharedKey = 39341933DDCA8D418EBDF92C16956C2E31922F46E79EB461DA9BBED571B850DE
+
+DRBG_SeedA = 94511A4B0036E23AAA3610300F526C58C6F39CA95BB406BFC0EAE3C7AF99BF2D47B854D97001DB8FC6EB1DBEF058718EEF13102A03F9C3480327A68645D3208E
+H_OutputA = C1CCA91E3C7A4005FC9F6B29C2AF034EE9546B1B458BD862DD186BB41F2226B4
+DRBG_SeedB = BC9C9E337625D6281DA0EB1E247BF7A47CDEB3DF9BCF7C99D425EBA11DE4D16C
+H_OutputB = 9C597ACD8C84984E11E201FB1C83CB903B1EDF61D35FE86747D76D3243E5EC1F
+SharedKey = ABD349E2C548F199FEB51A798066CE32670251FFA235D4E9156BC87843009068
+
+DRBG_SeedA = 7B844B6E8905765496CB7FFCC8A5ED45A6CE2A56EBA15666645AF38F0A1A372878BD0A3543E3881042D5E79A8C59067648E2AA3C929AC8AABB6A4E3C07506F80
+H_OutputA = 17E777143CC41D5E6CD7267F4171BF0E320F03EF63C15483EF3E9342F0DDD4EF
+DRBG_SeedB = D6EB101720761AE984AAF16305ED814DDD3C9FA7E48D261E6B13039E29CE19FA
+H_OutputB = B987AAF043BCC778DBCCB302603BE17F451B4AC00C9AB0FFD5741E5D7EAC3D88
+SharedKey = D5B723E0BD43BE35FB7B04D9ED70BC931C210F464E2A4124C8DB0A786AB6A850
+
+DRBG_SeedA = C72B9448E055FBAE11507598E0FB03C1FA8FB47E851820B0CDACDE463CE3E174178D1C36A3BA10C87791ED64CFD52054197BBB82E8B58A42C3CB818698F8CE77
+H_OutputA = D9798025DA58389E7CD7AC4E63A6CA0EEB8315A29D0FDB7582DD3BFEA9FD8E9C
+DRBG_SeedB = 486535F6C41CFFCA34E9084E401FF0A4CC6CD434BEE4ACF09596B94B0902DDD1
+H_OutputB = F92A3CA50860FB5D1E421AF5242ED89A899E00D45D54DDDC169CE2D87100E8F1
+SharedKey = 7071465DFF3E8A7B3170F34109B9E6C85C35FD829E1D111D1C3777CC8008011D
+
+DRBG_SeedA = 67AD36DEA536E4F35B66F4DEC59BC0C8F2384E1CEC11E55612A3C09725F4A9BE741913C190197B2FFA737434C3BB84F059E72484AF53AA1B1B8267500B37A334
+H_OutputA = 6231059625EC2B5B627E26487EFFDD1018A5FFFCC45FEDC346701E2AA6ED36AC
+DRBG_SeedB = 38B9D53CD9A578F16046CF309D85DB381360CC392EA99551CD0DBC05B08E689D
+H_OutputB = F9E7E21CAEBD4107D53CE0A67331935DB3D4C26F009F09E1D3ED7B1DC7CDCE6E
+SharedKey = 39CAD4F75AFE9848B443E91B3DB9B670DF6F0BB467E3410D2688D8AD21E33330
+
+DRBG_SeedA = E184744F81C6099EC3A3331BA262275A9A4655E25C317B099CB2C715B9E480EE33F179EBF5EA568ABC3BCAE13A4210E4D116CE461DC0D98B1FDEA5D855B8EDD2
+H_OutputA = 4B4A91C1DA454756300189CE5ED2B689BCF7D4ADB990DE404F179F4B34C9737B
+DRBG_SeedB = A03C2F3BBC9E547E8A212A6EA0FD1B3A9A7AAC5063A84523119321A8BEF47EBF
+H_OutputB = A177A0363EF2228E569C90006F290E1F47B9C42CFE52FED315AE21D8750EF7C8
+SharedKey = DD11D20249FB34AA87EFA1A0EF5D17D2300DD24ABAE20700A2E4D5EB521F248C
+
+DRBG_SeedA = A8A87075FD5B2ED8D561697F9151E770C7826C39E81C6B0FBEC54CA618C080E2260D623A30CB0A7AFB735EADA193AFC4E3BFD388F03C66F3A746DF7F9074CAB8
+H_OutputA = 666116C291DF7D6DFDFA36F023F27DA3243C2B15CB00560A27087CDEDA7F2F92
+DRBG_SeedB = 5AEBF45DC871517C77DA8EDA211C644E88D132CC1BB7AE154B970B302FCF058F
+H_OutputB = 7E91E3000D342792B7B3604E0EDE93BA14090D493321035748BDE8879F9863B5
+SharedKey = C4061CBDF52A2D59C1F98E4A1D994ACB4D11639DFADB5F98C1DE18D35BFBA7E8
+
+DRBG_SeedA = 876191A226A3DCE381D6998EFC9771849296631F59F83A3AA9052E1A27B8443293FB48AC65F57E1D571F0329E811CB9C5CA8EA92C2A2C6FC058DB08D244C9BB7
+H_OutputA = 51965F9AB9F2C4CA700F8D1D651E5BAE3C44008C37E62552B3D8BC00B0766D48
+DRBG_SeedB = 61F7307120E2FE55A8A28092801F90989FF40CC688B5938B4EF9185AC027C9A9
+H_OutputB = D4FB77A25A99CF69F7FA7192FA283F113EDC50939F26DFE4E606BF4CD80E314B
+SharedKey = B9E0A44C592677CD2FD7B4FFE584EC1F81A622AB202B4DCCC03BB4FA317FC552
+
+DRBG_SeedA = 878AA500ADBED4D93C0C6C9680A22F2F0C25B70B3EA74B5F64A3BDE8CB83B4E5D42B5A77504B26DE9095FFAEE7BC61BAB4F28AC9A0FCF6E733D8AF1366078E54
+H_OutputA = 5CCB884450B6CCF52CBEC2DE1C050949F57B368D0C33BB94C25625AD4C3816BA
+DRBG_SeedB = E8C90A25762DDF498B2C0465A389A2D12307A85AF33520949904FF7B7228A7D1
+H_OutputB = 8CDC951D36D58FBEBC9EB8A3F9772C9C02EA5A70159BBA5B8331C6ADF47EACF6
+SharedKey = 526E125B464A5EAD8403463F307E31F489F64DF1B5FEB787E85CDCA34E39E4BD
+
+DRBG_SeedA = 25B3800C16297F4DA95085EC48E7A18E6173D95B7DA96D9B637A67532D8F7BD892D3F0C0FBBD7A99F369DD4C2F77AD135B98D55BB6B6D54647D620529CF21532
+H_OutputA = 8C061201112560E5387FF6D90905BBFF3FA8F225BD5EC35A59C20BEAF1033530
+DRBG_SeedB = AE6941FBAA3DACDFC1C66A49CEF43985E9F900F1F4430A559F63A15F57080D76
+H_OutputB = 12A4CAABEF1A348E75A363CFA7F587AB92395A07E5E74ED5315550C027E93049
+SharedKey = 0D654B36360DE869C893B036D348E16BA4B095E0FC0C8A3BB709063A8374DD77
+
+DRBG_SeedA = 2A92C61BA3297085A84A5DB052D0045347F0C3795805BD4ECBEF7F58964BE6E017ACBC037B9887ED7AB4BB100C6EB956549F13EF8AED74C6C34C06772AD7A9AD
+H_OutputA = 309F13665EE249FEE0CE184216EBEB201DF5A398E0380DE6F47BD502C4711352
+DRBG_SeedB = A6CCD779876D9C8C21112E22D83FFE5F1014AFE4465B5D2938DEAE82670A055B
+H_OutputB = 01F4206B9AF94FCAD6C56B6B90E206A92FEC03AC0F4E224607C2E98CED7FB0D4
+SharedKey = F484C899469DD9DBEDC47A5C4035C9E6479DEADB80C9150D5934DAC9A2D6383C
+
+DRBG_SeedA = E57EED6DC63E8E86B7508A9BEDB78F24D26978C49A678AD6CC0C371B9E760B5D73BF8D21AC24B43AE637791F8B039CE1532711279CB9A7A9F0D0FD26C9F7DC02
+H_OutputA = D546C097C6C56167DDD9A8BBAA758F64400296F2E8DD276A59C7284E44C515CE
+DRBG_SeedB = 2F47FB890FA37F5829303A990546585405DC58FB1A3CEC80B776901211140746
+H_OutputB = A7030097177B6D8CEEC7D1C7FAE9A1DA797B0E5F5416C08AC46F57CA212CF874
+SharedKey = 5C023141D4D98D466DB67DBE6AF38C7B1D4B630D5F421FDA7CCFEAFF623F7C5A
+
+DRBG_SeedA = B03BFF58964E6CB62A9E0E8C3024137452742725C80CCFD01C549FFC173571F8E44A1B39FA4E15D08E75C8BB3565B25CF49D9D6323C4DF4802A86552E97CF9C2
+H_OutputA = 887907AB392B923F3C48495A7C2C76E3F9753E97DCA42C010D5991AA614B332A
+DRBG_SeedB = 22D73B3E750F1CBC83F11F49A01D9A611E13BCD1F676298436CFF18F39048474
+H_OutputB = FF6F2AD852D24C22498A341291A2A96A1ACEF205A83DB14DB008C76EB53BF281
+SharedKey = 6ABBDA67B3D8FCCC1D7C32CC2527B9F40E460E167F321E9EE4FF1759FFF6712B
+
+DRBG_SeedA = 4FFDA763BBEAE60CE2D5E993A7F3292438F191CFD17C6270763399BAD5768E372DF086B944CD9D2F2FA73A812E7D3F3E11F12DC4486767DBD108F08071D6C2EE
+H_OutputA = 21D82706B1485B408C56B7E3BA693D812A8FB6A6A7FEDD1AE34BD4789D1C7E33
+DRBG_SeedB = CF15C978727D53C2E81336A58A05DA11FE371E4844141A0D2ED6B15A4210F7DD
+H_OutputB = 53B946A64531AF2AF2F59DF12148F4E80D74477A7E83DC846FB2E72C194B4018
+SharedKey = D318ABB1C92E62E10D9096E73B60FC5D0B93F013F6915D34972B2C60D664B38B
+
+DRBG_SeedA = C0B64EB1C14DCEB3B7CC62D1997FC4B999EB69ABD5206B9FC58FFF60645A662FAC3A014A9C075F5D6F65939D5B122F0CC6979A48CD61023E212AF725107C878A
+H_OutputA = E532063768F46C8FCDECF03A6DCDC57865E4D5EBAB57E7C9BBA13ABCC0ACD71A
+DRBG_SeedB = 4A66E9F2EB5D49712EE198775015F823FADECBFB38E93AE39C49A8659C37A872
+H_OutputB = 7A527D25C52A9DA21815FA4F0E1F9C1C05A374B293C638360BEB97F20EBA23EE
+SharedKey = 0F4A3A2D2A319AFD1B9694161CD9BD68AFA917C053D4139E3DF65F50324ABB62
+
+DRBG_SeedA = 4CB2E9531C701825D6AC3E5DA0A605C948A9C8E720AFCE7B5BE72EA3F45BBD1FBAD39C216608AF416A8FC0DA2C3AB40CA390BCBED86419DA5B42755B152DAB25
+H_OutputA = 6F5CE6CCA6D74D54F44E2B1CB9C23446F968B068F96016A1CE5F9325DB967A91
+DRBG_SeedB = E01360606B57E5666FDF60C5D7BD45F367AF6FFE913513141CCB4FFB9B7595A1
+H_OutputB = 8443949D54311A488DEBA2053E26EAE8067650CE452DCCB9B8E8A51EAB35D1A3
+SharedKey = 65AFAAA8E694204C12EB9B5EFBB565604DD383B6E74D60006436940E4AF7F86C
+
+DRBG_SeedA = 0C60DFDCF79E777046A60BC6BA5B487AF2CDBE5446C55288F62777311201AEFFE4865461DD5D6DB5A6CC2CD5E3BA77638E30641B62E271F1402A52DFD0EDE4CA
+H_OutputA = E21D7D1EE962F7D5D85E4A9FC1DB79BBC00FF006A6BD22859692F24B7F5939E6
+DRBG_SeedB = 333F7E43F06FEB393158B8C0AB45B6301D0D6134D5E74C2814ADBB3518F0F8E3
+H_OutputB = B9814222FF782A7A093B3EB710E1A0EE3535860E897C118B0BA8F15312FAD479
+SharedKey = 45753C7AD3FA42CD43D8DF4F4E8BBD791B7FCDE42DCE6CE11ABA2D5CB5611070
+
+DRBG_SeedA = 42E14188173D9CE0DA4D1D1C85B4F96B4FB781B8ADA41BA22A6C0F98B7E4C154A93F58F7B1FE0D103AFB43B7D8ED0531CE586C19A6F97BB9A612A25FAE4B407C
+H_OutputA = CD7246E4D7497FB41B6EB2AAE9B956A1618145BFED8ECFCF3802727D723E6362
+DRBG_SeedB = B09696968E7C3495D346DF190DB6891E4B1DFC4CAFB637C6AD49C0C06BECCEC6
+H_OutputB = B1E5BCC935D43B612F8079AF3502C03F51AA22339387D5043CE302A48F3BA744
+SharedKey = D0E5EE16FB3E55D997359E875161C481CCF627D85B4D61E656FB3046CE96A1EC
+
+DRBG_SeedA = CFC4649135453DE3D87FBC4525151247AB0E85ED8CFC0357F3F7513BA42511A09399859AAFFE28E55F4AE5964F550F8E051DAE97FEF5BF731E3B09F2EB393B4F
+H_OutputA = CA6041529EC0CB89A04652B6ED99EFE045E7B96E8D16DA758EA2BF33445D9822
+DRBG_SeedB = 30F3D9CE03DB365813FDFF4234E02E4A215CAA73575BB0FAA7A1331655DB82BF
+H_OutputB = DDC9F57929A6307F4CFBAEB245D83E994943C857FCEC3711A1F709542A68D39C
+SharedKey = 57A58C65B7534A997CE4F7E5C50BBABE2111FD93BEED8FE12290D32E5430AD2B
+
+DRBG_SeedA = 7FE11CD1C0356FE9C02868C0C9766FDFBB73FA0790539FD9CB33A9FE7958CF67870F532E83908D2C4F964CC3A80E36A488C4A6A1BE4113F6FECD62C233B91CEA
+H_OutputA = B0E282113BF22DED1E0F0BB0322A0E1FCBB39E41AA8B0168C514570FE995310B
+DRBG_SeedB = 04F19EC69652D0A057B286F095FE46B9C04E6D8FA15000A28602498FA71D6316
+H_OutputB = 526BFBB60348290F0AFE1367596EB173EC52FF2C0956707FD468CAA60C178607
+SharedKey = 7F934F79C0A501731CB9CF067D6662B77CAB80595C8E4D72A31CCD8CDFC53AA0
+
+DRBG_SeedA = 40AB43A2D10ED674687B4D874876071787896D4AD1A4ACB3FE8EBBD7BB849B247A2D2C14DEA874E99FBFBAF8E59AEB5C89FA9D78AD40FC338EC187A8EC0F69DA
+H_OutputA = 3427AD43C43597A5447069CFE8D61161F9B7C0E040F17BA79CA48DD635834E65
+DRBG_SeedB = F057DFC0E570E1D5F7EF21E56C7D62D404122C829011157DDBC1E325A4AB20C2
+H_OutputB = 677FC54E27F24B56A13128A63FADA2F51DFB1875832FFBB5451B7AB93EDDB245
+SharedKey = DD898A717F4D9D0C8D5F0816E22DD2853F961B868EE0FD6C53789477913046DA
+
+DRBG_SeedA = FA74F07D43ADDE397DB40F173E15BD80DE7D71945E043D58C4259F7620554BE89B11F5D959129F5CD161B8F78F16796726CB814E1FF9EA312CEE3CC638307D0E
+H_OutputA = C82BAF33502533D83FE0F540A5FEDD1EA66F59C77B10B16C199AE814C1F0EF60
+DRBG_SeedB = A8544BEEECFAE1FFF70AFB6C8A99861B1706700B8F9B41C6212F1AE3358B8392
+H_OutputB = EEDA3D83D830CD7AAB65268031B839B80C9C312C5DDA0117CBE570DF7CEA552D
+SharedKey = D0E84B845CD9C6404ECA1BC080A946ABA92883131DF0251EF667BCDC8F870CAB
+
+DRBG_SeedA = 13B68FFFAD773F6614612C283353619390A2879684A7091D0B7DD950B2E948D246F8ADEFC5848A1CE9039AD2BBA31920A67960EE034B2383113CEB5D0BECA35C
+H_OutputA = B62BDA82BDA91EDD8D47270950D75C0A1F989C19372D0E30C2F9C76D7AA1B72D
+DRBG_SeedB = 0C1F22EF501FBDDFC15C4CA8F19BA4D8D2528437A5662FE27929C3583545824D
+H_OutputB = 321F347F22ADAB26E6FFFE8EA7C908CD8862C353CAA779D3B3F4E7DB2FDA654A
+SharedKey = A21459E210BC96A34F6D0DC1834DEBFD1AE3AC14FE8CF436317C4BF0A620705B
+
+DRBG_SeedA = 195FB2D61A5EDC0A7A1383822DEF67B3078C13BDB8DBC893CAF6BFE4AA1209C820CEA19C3C886DDFD4B454E66E388D1F8BE56B0855D22F9AE79EBEE993B25AA8
+H_OutputA = 4297E8AB45FD89B43549B0BAE384E461D4632084AA24AB5BDB2205798DCE42CA
+DRBG_SeedB = E239AB7B2DECC255CBBB6CCB8E7B6835F4E5C5C4F5F7D6995E521D516121F0F9
+H_OutputB = D871DD42EE9CF633F5787E9AD2F3EE1AB92689E74EE600205E6042C19D4B5D58
+SharedKey = E0A64D2CD7A3683F1CBE6C342BA2DEB8B7A092C7F024F1110736CD0E0005FB4F
+
+DRBG_SeedA = D75705601D29720F524F01A0116201D05303D606E3C367F67B1509A4C0D0BBBCB03EDBDAE0B719F763F69F14AD1F08766B3529EAC8947FF1F838064C66FD1AD1
+H_OutputA = 3BB73C378F04FA1F4BE2E9EAA956C88DDE92CA5D6C478A68825EC19C4B1625E7
+DRBG_SeedB = D7B57ABDAA79D66BE3F8C0C8E266D3DA69E1F857803F5B2D8B301F394A1EA1AB
+H_OutputB = C45D8D358A9C12A327E0BC5B32A745A8E23D35BEB9A1D82CFB74D67696244C28
+SharedKey = EC804C177742718E928AC6727D293C02CD89798013D88211BADD083D16B72AC8
+
+DRBG_SeedA = 0F1A890C38A1EA11FCAFDF39E2EFDB34D4F90D1624C2F7F91DA182271C0DD2F22C0A96D75CBCD6F679063DEB140B99DCFC9B6FEDF4D1101F98C34B88721351DC
+H_OutputA = E1DB9B271912A3A2A78EBE4ABAE734160D890FA930BD79E34D97C7936CBDB54B
+DRBG_SeedB = 587E26931391EBC75CA5C1FFC4ABABC6BFB339B75F3EBD17124058D1660DB188
+H_OutputB = 56D84099B21E87D29B3F0AFA8F614FD7239E2633C05B8E2B362A855355D73A9A
+SharedKey = 26D6A721BE1D790B8265DA91ADABE1EC57FAC27CE3EE415F4CC07D1363498E7F
+
+DRBG_SeedA = 4F02A914D3249E34B35579EB3426C0868DF32C71EA6D77E3EB2E2FE8DF18F894290E9AFED89ED3DB09AAFE7E1EFF88AC6C61AAAF392D2006038696B0DE617935
+H_OutputA = 756D2D7465423EAEBF7748BD16FE63C00CBA1765598954BB7BECB4789294C8C8
+DRBG_SeedB = 3C39372C923A70FBAF98A4CDD07BD0C37BE285F0F274F6C34ED52A81F24ECFB7
+H_OutputB = C6C7039E830BE3BED52D6306C86A07DB752B308B8A3701F7F1BD1206F03591C8
+SharedKey = 417BD85D8C24BB5F4DF3FC4FAE733BC9BE98E0D4033DBA99B7C1229DF65924F6
+
+DRBG_SeedA = BB2123BA8CCE9ED613D54C00089680FEF18078B159FCD64010BEA76E78A9A6D53CEF8F80642842BC299D96025F529EA825F918D0050A83C070D59FBF61F92370
+H_OutputA = 43C051C1B58FAE4FC6984F8AE78E6431DBDF33BCD7E1BBE4D483272F3F62B659
+DRBG_SeedB = 24E6DC5D9155318AD661193E86A3D17659C624B28E043FBE13018DE564C7D3A0
+H_OutputB = 2142ED1691300DC8FFAC04389D40360796440682EB477B8BE6F9AB38623009D8
+SharedKey = EF7913211724F492E8B997E188F9B783D771643169DE9B0B9D07BA952ACD7D40
+
+DRBG_SeedA = FF5653E78D4E1DC3427314C7FB2BE22B2264A0F0A0A19C42F66CC14DA6CAF0777A72F936E6C921AA505878D0E503D10114350DBE50E43AC77CA6CBC0F37AB641
+H_OutputA = BBB6D5A9F55E8305D642DBAE256655C31D861A78E505973DCA843AAB121E8FCF
+DRBG_SeedB = 2F255BF6794CF8F168208A19A95BC97F41446E5F04D93C07939DD8049C591249
+H_OutputB = E4B42906B6A8DB5FBB277BBC5296F28F72D74D5271CAC96A6E4B8C6A03FBADCB
+SharedKey = 98B2AC11C9CEB56420912D25255E46635CC910E2D5943CDCECC013E21D262737
+
+DRBG_SeedA = 803981F67D3F31E1423E41747F0DDCE61DCDDF262755B5B0EB693F6D1F10437960E78328E1DCC03DB3A5D5A183E0586ADADB49690F5FEE2C9CCE641BC28291E3
+H_OutputA = 266C48A10E8FD23EC79DB72692BE6E26F34E50044A43A37FA10C3FEAF8525293
+DRBG_SeedB = 0B50754AF7B0FC03479F2523BFE51E73F8D215DAA1D4C7DCCEA6E4F17CDA2851
+H_OutputB = 7633FBA0A981469B1E37E9830A6CEEA470CBAA1BC1C4954E5C0A0C1BC3AAE094
+SharedKey = 076A0E0199C824815F1339E0F8332A74B4CB8A73990B83B3E7DF8F1F0AD95415
+
+DRBG_SeedA = 928200645D8C716702889003F130F7CCD41E7FDB19F69E54D790E363F520580AE9BEC4E655F59ACF27E2EDBB740E7F89A5772A5D5E8CA65A42AEBFB55EBA3AD8
+H_OutputA = 7C93217D3693048438284885E57B28EAF675FCCD87395676DE5FA3321A82439F
+DRBG_SeedB = AFC2F82EF6A30FFEC051100878E3547939A39E8FAF915F276207D19D7DB3B150
+H_OutputB = B47E5B4A62BFF66FA189B2823933C1374C861AC5FFCA741D1A25243D85050B86
+SharedKey = CC452DC04F65141DD31C0EEE26B15C0E80F0E3A764B803657E2FB8A7AA45C3CB
+
+DRBG_SeedA = 989BEBBC14A4253EF5A44809DF2FE85D775096EFF43C353D8DD8288591B272C65FA61A5F5A1E4EA1DD6E470AE3DB726280274578E35CC68DF5480EBBF153CC90
+H_OutputA = 0F474C095357A58D65291DF35C589FC340E0D6B13C3904991D1A8BD90D015314
+DRBG_SeedB = 2C869CC1545F79C37021D4D25285141277DC1D9E54570AFA2C02E69B159B6301
+H_OutputB = 95BFBDCE75CF943B3B44D0E8679EFDD84408EA5BCCD414FB2B35E083FF408B92
+SharedKey = C263758B1466400C96F0696948A366CAC43CC8A522D3B1265CED1FDDF2EE38D9
+
+DRBG_SeedA = B8BB5D4CEB44248C9FA9A0143D647276FF4E23F9F4682B10D92723A36EAD0F75C8F1E8E8CC8A3E4CE45FFCC9A30700FA1479C303085E1F884CA2977EBA153386
+H_OutputA = 7367C77FD74FEB08D68C83921D5989D07DB9D6ACF9775B4754F30E9FD7A6F298
+DRBG_SeedB = 45C53E0265AC64F600FBABFC9725DD2D6DDD5F10876950D6D8C7E42C5D2928CA
+H_OutputB = 948A965F4AD552BC965068481B1AD4D61E7B988E8CECE03674DE7313CC553A4E
+SharedKey = C9C8C61701616B0E2043EDFE64A7AC3A988D1758A358F1774CD77CCA0D184C80
+
+DRBG_SeedA = 95557D189F666F8B3BA34E5804B50FF90519D1E1A4F09A3DB9954F05E95511040A2D8E9EC5DB2F1D800311DA866C0B90810EFBD198CE745B54E5B1FFB8C4B016
+H_OutputA = 2A7C11A0623FBD8E9964090A1F8E858F3C7F032BD5F2A515934444EE72AA319F
+DRBG_SeedB = DA50B464C93B63212793B76ADE8B990181B18C14CBD2CC523F395211196CF015
+H_OutputB = DE34DB46FEAEB7A9C67206CFE3B984F8BA88B33531860CC394452D8DD63C85A7
+SharedKey = 70C3F7913BE6CAE36F7CDE3178D1C5528EBAF0023913459E9DBF009B5D13B938
+
+DRBG_SeedA = F572E5304F9E07E895B702C9C4EF55D5B35481167BFA1432080695BD62191E508883E3F550A9B41ACD9F4A941F055CCFDF060ADBCA4342B1893916773CE5D4E8
+H_OutputA = CC282949A59350CC371665D5C94D9E3737BF4F0AF39D5CA2FA5C0A678DC40CE9
+DRBG_SeedB = 27D997065E5EE01682FBD2388EA79B985E10D85D1EB4DA48B2BA4E429ADC885A
+H_OutputB = 9093330328077CE40A1251C416BE44ED73C6D6C2DAA0BFCC7AD6A88BDB1C8A3F
+SharedKey = 7D6A0A9F2A55B864D4EC485036476D9551001B5BAA401028916FF3A5CD8B7259
+
+DRBG_SeedA = 4FEBFEDDD122382AED173AEDD1087F4590288F92495A7376408858F316824F26E5ED9B4C61E8A8168BE84CFA11C4009B31B4E37DC66549CDEF1CA422DCF05887
+H_OutputA = 988CBD5B311255A824F955C6F04513D889273D1B8B052743726A8C87CBF1E26B
+DRBG_SeedB = 5226FA74A70415941B034B3E93D28088D870FA775588B47D2A79E8BFF9C320F8
+H_OutputB = 4E3CFCC52F1375B43E261F8AE04FDCE4F5677BA8D691B176528DA0E416867739
+SharedKey = DA67899CF0DD185D16F709906D827544601DDE3E5E36AF41DE36EF6D89C5F653
+
+DRBG_SeedA = 9D92DB6D6D90F8AEE05236F99E8F825B7E3BBDE949D17D27479460DB3F69370B306822C5066F41449319978FE1588EDF2D1B896B8A78D34B79A7190CA91B0708
+H_OutputA = C63A7CE050BF38CD17308B3A6F13C113505925CAEF93DC8557C7FBA8BB03906F
+DRBG_SeedB = 0EEE466CD3F3AA5A48B2072F1C962A70B5D4520AF9882C725295DC9900E8B074
+H_OutputB = 136E22C36840E9F3FB7965730548AEEFC2CC099DA9238C75FFA07F99ADAC84DE
+SharedKey = 4F03830C8467EEA4D540C0E4A611914B357125A86CADE1C8027ECAD0C8D28957
+
+DRBG_SeedA = 64402BFCE621FBA302E8B476B90DF11FB20C2D8C47345E581778E073960FE71AC47F2DBC3523C03EB1943AC2FDFD4FDBE1E3ADA27F2B101001ADBBE01ED8218F
+H_OutputA = AE3BAF2521A277DF8014C66886FE6E4134F2841AF869561F9F3DA22A7E8DE9D2
+DRBG_SeedB = 7ADCCA33015F578E1AF81E4D543B6D88EB401810EFB044BBF40D413B1BB0B99B
+H_OutputB = 36639A6D2F5B4FE78271918BC692565FD62E3236B731440475F794F736D4BBCC
+SharedKey = 3A09E4697F6B06E0065B24342CB8007F69AE9BC4375782300EA611523781C666
+
+DRBG_SeedA = 7D156E541C68822B765277E0FCA10C01BC0F6F64ECB844AA458118975975DA7910BAF261B900EFA2EFC5103C28268B888625EBE7AC68163CD68031DAD13485E0
+H_OutputA = 818D0753F17DD62C0A12E20C73062C8270615FA90CC6638E99429E3089CE2049
+DRBG_SeedB = 407D898ACD8F55EF3366A73F96BB2A0EBFE517DFCDEDBEC7A9BB79CFFDBE9D6B
+H_OutputB = 6F6935FE58DD4F4AB281700184CC9058717128BB45502B39B2D84E14EE6E1331
+SharedKey = D1427F310B8029551722D65CB4DDF825600C096D4EAE048076C2515BF38EBED4
+
+DRBG_SeedA = 40308CA45D1E09624051A32C2D8AF5E6064B56B46724D03ED521BD078803234D4F2BC4224AEA03B3CFF9A6C7DE4AC6D3753D5908F4A7F6B6298A9F536DCE2203
+H_OutputA = 68E9F06B8C7C50432701759CD3BD19CC60519EC8C35CFDFC74957B4785926C81
+DRBG_SeedB = 23CF571ECF6D337BF57AD1552054CC48666BCB7C43239455BE75E4D1F3342217
+H_OutputB = 227B1C0102B5ED7A745A2AA84C72B2F4A1FE2EBD5C210F3613B01D551860DA2B
+SharedKey = C7AC9260A0519D5826A2A3C5045917B90CEA3EDF02BD0A4CBCC2B61BC55A893E
+
+DRBG_SeedA = 297110F1F3569663A91477948C0676631B913AB0E7651BD7A31A5B0DE496AD3C3E0EFACB0915EB2D1F989A57A55252E8A3C985C0250321668A09A6E755718CF2
+H_OutputA = F03F1593647FE692E7EF8A1BE4EED0E4936CDE86517100290FD09471C2B2B48B
+DRBG_SeedB = 76FD51A291A67A012558F008A9C230C21075EF2DCCD5A146C1A8DA1973940F93
+H_OutputB = F86981B3F3C11BDBBC0D450DF58B1B7E0BD9616AC7187EED926F38C0EE72357E
+SharedKey = 81B64E977EBD0F0134974EC62BC66091E41B263D0B68A2894CCE6CE306699546
+
+DRBG_SeedA = 02D11691CE81205787210544C039A09E47094691B95FCD3EADD0EE693E744BA2AC012B81B0C995D20DE84AC0F5DD0246874FDA2B25653C03FDAB9B5BE58316C9
+H_OutputA = 6D5E2C08A9BC7005FC4F3272D2AE8D8D6E625CC5F5FC32E28F37498A4D99E901
+DRBG_SeedB = 44F45578F8C8EDA6D3ACFB3E031C96D22BF13E02069F6546DD08A43200AABC68
+H_OutputB = E3AC6E6F4D70319E9E14A67DED4C06BCDDA418DA893A72A7BCDEEA3E65BAA402
+SharedKey = 7E7220F94C2C5964CBCAE0FB6E744E0CEB599114B8302291CF57C5F6CE6F5C11
+
+DRBG_SeedA = 5F2CB89152971F9EA869170AE77801F8176523E4784EC1DC4BD15C1CA5E6733D7D20FAE02CEF49080FC1745460608EE8C9699EF5DF1BAF067D7DE3EF43DA0213
+H_OutputA = 9356A53A0824E712F2A5B4259949FB70C737CDBCF884CEF5035537315864A2D5
+DRBG_SeedB = BA14069EFA114E79D6AB6CBBD5A986EE62DE3EE61F790D947051D90EB3DDCEBD
+H_OutputB = D95AE2FC3D06CF8D9023B4F6B848FE66E242D8ACC5B090DACD91209B254A7D05
+SharedKey = 3597CF44E6C0DA9E38BE0CCE455288008DEFFD39DF5530C5257ECE08B44DCBB6
+
+DRBG_SeedA = 36B29E60AFF79AEC12CE9752AACC06CC284F3B5383C151BE122091511F9A85ECCAF0E7D9AB2C12C8FFC3ECB6474A0F34FA2EC6D51F59AAD515B95CFFCC36B469
+H_OutputA = 5F8913BC68D2A55DB4DF5D8B57C4AF34453A94D1A7AECD541E7FB851C85F064B
+DRBG_SeedB = A9A0D31128173A658355858DB65B695D81EACEED97CF77919B3D6E11003FC98D
+H_OutputB = 732BC74A709B51C34D96D951B51FBE139C81F6BD05DC5F0091D86831D5BAA391
+SharedKey = 17B2B3D7FEAB1912FBAF3DD1B59B67E785968191718CA872602398E5DF3A25AB
+
+DRBG_SeedA = CB2091ED13014CE5E3DDB31DD861AF6C208979AEA6AE886BD88A7A682D67B418633D7BBC7127EC7EF9E97AE9E9C311A94FC93B11BCE2BFAC3BC79F7D93FEEBCA
+H_OutputA = 1413469A45898569EBA35C87E25FB701C9515C60D47A24BDCE9CEF043681B5B3
+DRBG_SeedB = 9597E8B0F156373EBB00DBCB10E35860DC8D39A58246D76360921935DB4974EF
+H_OutputB = EB3AAEAB3F2B150524CA9C01D5A1AEFAB31A6162C7F9284790635556AE735585
+SharedKey = 745E7193EFCF4B7B11FBAE849E4CC47823529B521CD244A6BE05823700DC2070
+
+DRBG_SeedA = 8FB5F2FC53F4EDBCA9B1C341F01385BA1FEE0B18F53EA601B80B1E712CCCA9E2E99B259B5CF7BDB641C2F1916923221F47AF0679AFCE0AB99D643EB745AD3D8B
+H_OutputA = 7E003DA953514374C93336C138ED699D873FA5107E6FDFC334BF4C2C2C6C1DA3
+DRBG_SeedB = 2574BFA470E474B844A9C007143FA674FA35C7935BC082342DFACFA8A96FAE4B
+H_OutputB = 0C99D2A06DCF07A8D139E6CC0479605C463EFA8E310EDF638F2739AFBC68E428
+SharedKey = F605DA97E9272A9F97F5AC1C66435159FD096B80054BD0079AEA7D5506F1A5A2
+
+DRBG_SeedA = 3A844389B78D6EAB3B12C72993614941F192EB6273A6EC41D7CE328CC5218A83F1C3DF009B8A3000624C6C619049E999C0F3D6F5881788D05527E4B0F9ABEAC7
+H_OutputA = 3574AFD22D6F74174FC3BF07D3F847B8851EFD6A1E1D51B1B27366D9EA7BD672
+DRBG_SeedB = ED2C9D9FB14CBA6750917336A1D1B84308AC6630109DEF335CCAF4C4445F06BE
+H_OutputB = 2440A41F4A14D5A5E1D000384C370AC432932A19A2A5C42171C4C3C220CBE601
+SharedKey = 5E907AFCF5246244F60DE7E8682E23981AB293A0D606BE31E1AD69750C1A0FF3
+
+DRBG_SeedA = 7EE69402E5391C4261416B88E02E05A602DD59A82EBFB474139A6EC1C5367DBCC7E8C0D2909ED2E05F3538B9949C317A425D3C8166AAF7983D36173A519C163B
+H_OutputA = A99A7B3EAFC2A2C06C80AE0587D0D9EFBA52254F2699774C4780A3CE0DD58772
+DRBG_SeedB = A4B45A83D6D2283D136A23D08735A7F7B938E65A4A5787B644E277E26F99ED41
+H_OutputB = 25CE842847D5DC940E79F85E02BA6C893E3546D80BF71262FA24590D72DBF960
+SharedKey = 525AAFF58B9ECEE61DD91DDE84A5D5E5D4E94776E328C489ECFF18D9325F92AA
+
+DRBG_SeedA = 50F6FAE7F94BC90FB8EBC7B4C0841AFF264FDB10BFD1A47BCA44F5DE082EF2CF06895C159FA8D8C96EB6FE0B0114E201B92F4383CAB121D826AE37791E8F17FD
+H_OutputA = DC404C3115FA86821E624D4EF6DE62D977A4047F242207D9A78CF30C7B20E8EB
+DRBG_SeedB = CAC5DB627BA5784105AE303144FB8D1F3AABCBBF818EF55E09DA91639F0F4CE5
+H_OutputB = EC1E7339BFD586AB61F3C6E3854C60931EB00064A62328CE2C9C282C3702D6A0
+SharedKey = 803A3F221616FECB9F432254864A49587271FA3E7B4699802D9E7C987A35C851
+
+DRBG_SeedA = 1713DFEFD8BC5B1B42E461782977CA45072384E678082B1F9C2EFD9154A4EE3E42ED689029CD5E0DE0E6F5E3BB3351A5CFC8DF9203C67813EFF705BAC3B32033
+H_OutputA = 5049B4DF9D339D7FB0C493141E43FDEB7B1CE64F35B0736A0B4B17069A1FF702
+DRBG_SeedB = 3BE032644CEDC2A6DB57F36F8A482E37743DD0B27CE07422F84AD85DBF828546
+H_OutputB = ADE3EFA7BBF4C624DCBCB54A36DC2229B2E9B11C759A5F8DEA21166F622DA3D9
+SharedKey = 00E3F043ABF99A0BED8C882896D34CEA91E4B830D2216FA903376A388B85E7DF
+
+DRBG_SeedA = B47A09AEAEFBF8B98BD3D2879608F11BD7D9B40DEC5162CFCD014CB3C7539517CA8D160A1E35C3906EF0ABCADF9CFBB0EAC312C6933BE3985D1CAB5293C1897E
+H_OutputA = C66B3535D6D9C83045F0B60513920236C5DE3CA86C6A00AEE4017EC37B742380
+DRBG_SeedB = E397E17405BBD32B77E57591EA018EBF6136CB12703772EE7B6DB813D1B99A01
+H_OutputB = A5EF90AD7BBFAC13C9A85D7FE3FAFAC7C4C1CBA9A9E40977F6C4057A1093408A
+SharedKey = 8964C2E1B0659F59FB15F6A31C8E6E84B8A3A8B7D25DD9ED53945800EE1D9F4D
+
+DRBG_SeedA = 14CC69A80913DC32776968BA2ABCA40F16B610520199BB43416C83B0D05A6C8BB630F966A2B74F664D1DD6E1CC01BA25C4C6C328C0872CA9E0AFF9A4CBAAB05B
+H_OutputA = DE2A7EC28D256375F08C759BFF20A919924656664B9649DE9C7E92DD5D8D2756
+DRBG_SeedB = FD1A53BC2B0A57EC58FC9F303394844BCFF9B4B64D4FE9B934B0E99FA7ECE633
+H_OutputB = 36B7C5760AD81C2035EF9D4A35ABEDBAFB1EC55A26B5F175D618805B4403313B
+SharedKey = FF3A52C9457277E35606374FC1C6D6D8B58EC5CB15EA7FEFBA9C85B11C996903
+
+DRBG_SeedA = EE6525579DB3062FC0D3E71F79D9F6FCE7C4BB654557B57E4AC6AF5EF27C044C19B3A20A06C256625DDB888F45A3B9895EE2BB0C4D9B08AD99BD2B59E9440242
+H_OutputA = 1265F37A949CCE754E12282B9CC53785C372BD3C98280822CF41263EFA2784E9
+DRBG_SeedB = D61C72F9B331883DDDAA3F97BBB0FF4F94C55727C719A6E5AC6608B313BB9B1E
+H_OutputB = 9D45A7BFFB420BFEB49538BADDDC6B8CB9E21CA13EFC25C044D1229AAC1A4EE8
+SharedKey = 217DD40B736174F8A7F3C6195810E4CAAF3A158D896C8D82CA69FDA625586773
+
+DRBG_SeedA = A58A8F5FD672A97B4D65BBE3F52A1FEB8474CE95FB1E676529889243842022741C8AAFDB4097C65459D5CC1D7C1F3F74553DCD3FC11387678248FA5B89911B46
+H_OutputA = 2F4EC87BF2C82ACEFE05A695A16740B5237BC917EC9E13A68AF5F542552C592A
+DRBG_SeedB = 241482793531046C9C927F270251F0FA0DB8A6FD9E4B0B5B8C262770501D813E
+H_OutputB = 2F42BF1DC1AC11728946E3C6A9FC848B6858529933562B90DE94C4BFF2EBCA7D
+SharedKey = 5AE2BAFE751F12CAE4FE601CAA0D9EC92A7CFE97A86B87900F940897A205DC80
+
+DRBG_SeedA = A18E47E85C1F5050B390EA0F9EA0279B8DC1789BE0332ECBB1446A321F5E8EB9220F2D34A73B25402A354DDAA1C205E98D3C3BD34B594D81955570E8320E69AD
+H_OutputA = 0849352ED670C88FB21883A667255D40965555C03E599AEE89D7E38C3F93F6FD
+DRBG_SeedB = DAF83DA188510D2B2F62B4E670A1B94AC188E6DFF3A25D15410FAB3035CCB3E4
+H_OutputB = A24104A9861A6005D4D27F703A22002DE156242F43C6B107190B805A2E317107
+SharedKey = D89EA0BFC94D56125C75E06865CD386800B9DD1A1246A6D9D82C2C9514736E2A
+
+DRBG_SeedA = 1DA507AA065457D21436F401D15A4F4B305924175421360CD53986B73ADD94DB593A3AFD62BFD225C9734F13D869468B478B984E46D5905D2B3217868452328D
+H_OutputA = CE0BA2F9CF22A1A290B437665A6D63D3E3CC078B182D5BE0029F094047A686FC
+DRBG_SeedB = 501C1EBFBA822AF25DECEA304F30EDBD983E66885F00E14E5B1E61B03AE5EAF4
+H_OutputB = DA35FBC8DA387D3DBF8496540657DE88F2D98C2A2906621E825C4557494F3D94
+SharedKey = 34A27AE38DE6532C155DB72937F3619850F26574D28AC7A0EE2406510BAE2A7B
+
+DRBG_SeedA = 0D9B23A25A3C575790C10E78092482C06911005B068659724DA15A057E284C264674BF8662D742CD239714F8688A87C5A8EF15AEF4C9CDF710719D3031FD22FB
+H_OutputA = 55E7B17B376A8386FDA95879E5FBDC9045BEF70483DDC3BAB5A91FBBF2F0DAAF
+DRBG_SeedB = 02DA6BEAEBB80F740F935329D3FF01F1FEBB799903FBB772AEF4547630B1709A
+H_OutputB = 5C9243B6B67383C5739798AC385EF0B78B6AE571B4B0515BFFAE4474498758B1
+SharedKey = 4DFE6668F74A66968D8649E53BF519B81097FD76A6A2DB5C8E0B0087DBF7D048
+
+DRBG_SeedA = 5B13E1A47DF6A7A96ED60A46390FC7D3BD5A65C160DCDC15DE12D7490A6746D16641DA8C1F211A9921D26AA0485BDCE60FC831890BD3FA5EC4B9D4CC1BF3C7C0
+H_OutputA = 80AB12C0B14848D0FD751270A9AF4B3567775ADEE12ACBC2A7B15873699A1609
+DRBG_SeedB = EA547A176A57D40D3C57A3D219CE276EC1A69F12DF7B3541A9308B3A17A1B66F
+H_OutputB = 381413823DEB96B402C834BFACB1F7C159B0BA0D1BBC0C7E71E0237E3B0F3E42
+SharedKey = E851C8733BED0C113D018B1B1B6A76C0CCFEFB956AE1D29531B2CC33DE4C914B
+
+DRBG_SeedA = 90E96E3FE492FF8D908EA4008DBBA6F6217CCE3E0E7CC839AF34BB3BF6E6E0F6B871DE7F4B00095F0188AF8EEE7CE0D7FBC897E3BFE67BD014BC0A046DF7366D
+H_OutputA = E5952A292E0FE3D736A86A4DB58D94A3631BF129ADBEDEA57F5D586F041945DB
+DRBG_SeedB = 38A17B2025B8813934415DD414D71B9D4F11A5B63C71A085A44DFEBDC448BFDE
+H_OutputB = 8E9909465B9FA099432791368F121E5A11323789AEC8FE16E31E863AC2E6D995
+SharedKey = BE6CE32F975DC6B3F0301BDF0998E98659193A2757ABC441E555CA618DCCAB28
+
+DRBG_SeedA = 47A9A52C3B7DC60B4FA11CA89D58A817A3307EDFA38596B627ED663E1675EE8736F102A2CDE55E12D406C55D95C09443E6D80C0D1B76BD7072FDB149077BC20B
+H_OutputA = 078C999B7CB9FC3656831AEB3BD5EB41A97CB16A934F8C40880E0A177EC0DF6F
+DRBG_SeedB = C280A17C9253E64D1C1D0E191846907D7F02B734E76D798E5A3A38EDA93BDD99
+H_OutputB = 865DF18C7237EF908E404F8F5954059E81831FC2C51E2EEF23E38C3C98233D8B
+SharedKey = 2CBAAFA2EED57763F6A2D6E88BBAAEFA342E545FBEF467D7F64310F59B532FE3
+
+DRBG_SeedA = 6B363339762B58F555D3E9E3303B88AD7766E17C89F73269812D096B353A38C63A5292FEC3740B1F9C05F5FBE1E348614083AB13ABBE9044706E4C5888A4CC97
+H_OutputA = 12179AA4DAB0FFC70B2EACEF283337645C2996E7CF959DF5D99A217BE4EE4E4E
+DRBG_SeedB = 554831A011BDCDD3003DB1C435E327BA8BF4196609D8DB0D9AA317F10245001A
+H_OutputB = B931B6D876DF1315A33022FFD7A7C107438CB2EBB2836C264595E4D7870ECE92
+SharedKey = 453BFA41C31EB0BB725567B5B2931421B9690CA3C6B923194F23FB555E717673
+
+DRBG_SeedA = F833B65686E6FEA81C1FA5BF83E852C5C46551C0355C26846BACCB30C4909D0759C25BCC4AFDCF34010646A12D43011387C04505904AF880790A31500CAD5A0D
+H_OutputA = E7A833E34A7C3ECB04069C04CE91F38556BA2BAF5713A93A577BDD8A7C9A2E46
+DRBG_SeedB = 657F08F4FEC43B5D06E11B88DFC1B75136E6850698C895F278D0A28D0653EF3C
+H_OutputB = 55AD341031B604EDA94F44832575B9C3442948BE16050DB549BD2D6874586854
+SharedKey = 394A6303F1F87D2971D2A6DE3CB936C673F01E996AED0A57A1559E14FB768C0C
+
+DRBG_SeedA = 8443B8BAE6921E63611C8F304EB4B47243413664A724BFBE33BBBEC6D1263970A0249DCF3AA7739E301A1E568FA31D5E9C8910A9BC53FFCDC44707817BFFA871
+H_OutputA = 9B08C086348BCBF5600C46A525882E91352EF37F5D5466396661F2A09D79C7B1
+DRBG_SeedB = BD2A17BE1BFC0F0787C58650E23729D8DDB50241AE9EAF097CEDAC88985A2B4C
+H_OutputB = 8BDF29DE097663A6CF01304FAE8AAEAD20D9B1EA92F10517107E85729AC2A862
+SharedKey = 65A44E6A6E33414A79317BED746C21801FB6B2BD635BDD45E15C8A52673F09B4
+
+DRBG_SeedA = 1C902246674CCD613C25D997BB6090366D0D6CA195243F9CB8A40610D326B2B10F60C98758B86144E612107CF454330FD83BD0C4B6586C264952192E93147739
+H_OutputA = 8E27C98DEEBF7AE036E4BEAC79E6B8C5CDB36AC202C313249A90223992F88562
+DRBG_SeedB = 931B1F3D6448540C787F2A90E4D05AECA4974F92B63239BF4220429AE1BD2196
+H_OutputB = 6AD9C9F6F2FE19916F10A48CDD63A3DA11CCD76A3BBD31DCC91A7447C9017954
+SharedKey = 2D90D02746CDC23C5882A7DD3BF1B54EEE01112E1E5F89D5C0DBA1B1B9C6FCA2
+
+DRBG_SeedA = AB0503D9C86C3A82BC14175BFD27A6AAE0860509C566BA536570BA241D13A5B1EF6362F71B11326513AFB5F380C678F843E9E4246153E937D6D74B91546FB689
+H_OutputA = 2997AFE8124FDC9959B59165AF0AB15702D47D307693047C43F232256CF3197D
+DRBG_SeedB = 267863A44131505000EF95769428A3E7073B33D9BDC8B9A4652DF1AB5B1EF6B7
+H_OutputB = D0200C774574B5FD8578D3174B4A21D8634BE44AF45713A7F4DE093E667632D5
+SharedKey = 8BC80830843966AB9E34B2CC077875569A8820E010FDA97E37BF2689BCAA4E90
+
+DRBG_SeedA = 70A888B222922BDD1A9CE62CBF8EFE2DAABF95DE930117971511D832881E24AE60C34A1F1A5B930B1922816DD76EC11B92178C80FF1F034E44A2C463338D367F
+H_OutputA = F812EB0C7FF4338DC3DDF37BB5A9BEFAF5CCC6987E31E9A84239C7485BF0DA73
+DRBG_SeedB = 52F2E61C7435065BBC22364C3F4A28EEFF215631F852ADCB2507C89ADCAC636C
+H_OutputB = 482C76EE6381C69F90708A5B56362DFCA0DBCA313B36854683FCE5BF7CDD6278
+SharedKey = DAD8D867FCBA85AC01AD8961A6A00063C19F5FD49B89F1217A803EAA020225E9
+
+DRBG_SeedA = 5731D98E53F2266A28586097A8A3F15D3D9BDF8BAB20846FDEA4B272E6E307E3679D362B0EB5675F78AC8968CC6BD559317F15EACF3656B8F2117B30C9A9877A
+H_OutputA = 3CD3C44FC11F0A77B0DDD9986B1CB1E61C685B909ED4AB3AD3F0C23A1CE9DA45
+DRBG_SeedB = 232BB0606F7E29C9FE63844E32AEFC48D5EBC9CE85F35E8CFF6E57255A18554E
+H_OutputB = 0675E5CFFDBD50BF5B4489CEBDA7A5A41866ABFE9E2630ED0E7B47C6B4ED6BCE
+SharedKey = C177DED4067BA51D91359BBDC09738CE5489806B8864F05A1685FB83CE30D7DC
+
+DRBG_SeedA = 5D15FF099435E2BD14B09640382E9DF781C0257067DDC283705508DFB59C40B2ED6A18C10B7C9E5B9801932B1F0CE11A502AC9E7DC0AE4AD182D6A2FB8E29D88
+H_OutputA = B899B7BB7B156C3608F528FE94B24E9B45119BBCC1D4F251D2E52AAA45CBE569
+DRBG_SeedB = 22E363397265BD869E57009966A918D6D2BB582E900A4D5D49FAD68333967EE9
+H_OutputB = 914548EEAF22D055039F670F8C5E7C870BF9D88B8B38C1C721B4E372CDCB9F8D
+SharedKey = FA16B39E1DF174A7563C2B941E874BA8661D707B5E53642511EA0D87FA69F753
+
+DRBG_SeedA = CCF8C638A726720E88004A547613705C472CC5C4D91F4CBF0DA7335FC83981DBC7B737F5FDC0E1133AFECE8C5942F301C8D627FA904A09824B1BD7259B614F0A
+H_OutputA = AA7D2BEFEEE1AA2334922F0B1FDE2A632F096CD99D0B6ED74AE20062FC906ADC
+DRBG_SeedB = 44DE9D7A5E1D61B5F6E327D0919DA6287BB809306256E51F2F7B82A0D593BDF5
+H_OutputB = 3F526CAA635A734843848B727FD4A1E19B0269270D02E17F11CC1C6ABAFCD537
+SharedKey = A896F0C6BC2A6F2CAB312707182741040D36BB3CC2D91041CBFA2FE538D90202
+
+DRBG_SeedA = 935B91AAB53253DD1B79DD86D7EC8E5B425E020A92619DBC483D2737F676DC3761D07CD70C858F3062ADA0866ED913B889BB2ECA7AF51BE918776790FA650D3F
+H_OutputA = 02551FDD7CB69E9E7DAAE9E3656432C0ED2751B44E104B4FE591864577023530
+DRBG_SeedB = AE953146E36B9E285CC56661A3834C75E3AB6AE85AE391C267275DE6525DEDD8
+H_OutputB = DBD60DF2A0706A8B3E23467C948DF6883EC458ED545F7CAB2829B7F6961F023F
+SharedKey = 7781A984E22BC16580AA3681A7FAA8011642DA149F76AE82A123CC4AB47C7DCB
+
+DRBG_SeedA = 7A69C1C15A4490C581ED37E38B079CF74D42FFD7835FAE36F69C084911B82D3F9ACC21D00C5DADCCAFA0C7610CB54B9A4723F21FFC27F08EC791791936F86EA5
+H_OutputA = D47B36AC23369CC436298753A3663ABFB6255DF89B3FDF46D57A6CA03BACA20E
+DRBG_SeedB = E5242CA847505BC2280B4BD5D5C427AADFEB54611AE66D9C2AC69FEC916A0C6D
+H_OutputB = E14302BE6EA3ECEBEEFC594B251BCFCD87516DF656456F3A7F8E169904AE4E44
+SharedKey = 55CB66E1F17A08352E21AC7584AC9CCDC0DE230EC11B1698530AE4068EB8C557
+
+DRBG_SeedA = 7CFDC4F26FAF5A010DA8D9B70AFAC6B12243284B34A1F2431E69143C0204612045775AB09F04CD1A96BF119176A002497EDB2AE93D7CD97A7E89CF79601266AA
+H_OutputA = BBADB7C928790A9E9E45F6A2E557BB9907C1A67381F5DE9D7E3FA412B2104940
+DRBG_SeedB = D67F0D4A2F85F20A2B3E3F86FE2AAA1C9A245E8A93657A7871EF5BC94C423ED5
+H_OutputB = 9954836C1847B6EED8DF2F7FA166DB24F264C4D432491CC30CDF00C68BA37226
+SharedKey = 519F9322421D664537D55E532707D898E7EE39D4972B3EB9E5645D96FF1C2191
+
+DRBG_SeedA = 23A3F9B69886705F67736A6315D18D8BD79234B52689BF1B0E60365DBBA311668D51AFF359B1AD3C23BEE683B62D74A954372E2F2EC82EF8BE278AC14E30E750
+H_OutputA = F29F080AE9F8DFA0FCF587D73F3A03665CAC2A23AD8F9CCED3D1D3043B7AEF1D
+DRBG_SeedB = 1FFC4D2092C5D2AAA9EB4BCB5C337DA561860B03F1945D12722BD43CB1FBCB4F
+H_OutputB = 9EB80D8393BB669E1F6ABC269003D0D58668B67086467BD93B3321D470976053
+SharedKey = F2F94034BCA15B40F5DFD48B3A232528C9A33376BE0CAC4FB3258889B005656F
+
+DRBG_SeedA = EFE5A9A20197E3A6F6D6B0CE40E188C394821756821004859F0D6C7D2D773FFB619AC4EDD7384DB994EE064CB8CAFC1107745F16DFB46A971C741EE8424E343F
+H_OutputA = 571BEE127C68C13B7D0D782B9668F51D85EB5030FE22CCBAEE3F28C734BC2121
+DRBG_SeedB = 266CA119262072F6B200CACEFC9C6DC3427CAFD520AC78417BB3871FC3F477C7
+H_OutputB = 82C25F4C43AEA12D45C25B4A7296161C730170BB19982C3F6740193C7050545B
+SharedKey = CCDC80555D62FF3CFA4B0746263BD2255643AC870DD5A56D0BD7E8A000C931BE
+
+DRBG_SeedA = 9C79EB27FBF9DD25A21A755A446FA4491D0204AB6D039049E630C45E72421DB85E6D8DAD3A5F0D017B816061131EE927E7B36A096FFCDF4D9050DF04BD9B9F6D
+H_OutputA = BACBC55AA9FC96DA798C64ABADCA8018E42C4CD5AECEBA20951B436C13AD4815
+DRBG_SeedB = 039DD287F70F278C6A9771A7BB2AE9A47CE0E9F2452EB666D988627882F9FC32
+H_OutputB = 691556DB01E8BF757102F852E7EE862A5E41F6F4B75BB6A09DC414F97AA62DED
+SharedKey = 4E7EED012A849985E2617C41A3D9175CBE071E09034662263B2BDEEBA5D00DA9
+
+DRBG_SeedA = FCEBCA2E16C5EC9D6FC7410F29C905C6700105CE9E0880053ED85BAD478861AAF4F8E9D4D816D8979DB36501D06D249F382A923487E21B36A138A5A7327C7A75
+H_OutputA = EF92777A3E2D4885384E6CC6BF23EABB0F205A4D1AA4D0AE5FC8571F71890B9B
+DRBG_SeedB = F9774F201732F78933A9BCC02A7EBE4F33AB42E161808849245F84697DE51D0D
+H_OutputB = BB4CC7DB99CFA4C56587D57B47625E8AE0B61D1058B164296ECA72825C323CC8
+SharedKey = 67CBC981B67DCB3B47B3CE668A8A32D14A851588FBED521701AC4CFB04FC832C
+
+DRBG_SeedA = 4B94A4D09DC39C90A30953678063FD60BE41270983DC5CDF7C11D11460B89D2AE454F0880CD4D0F6D292DC3015E0DAD06FA4AC5D236D686A172AA49C9DCEA2E2
+H_OutputA = 88FD0E3A46CE2F2990067BD439D6B5ADDCF51B3C1B10833B26A9F37BDC659F07
+DRBG_SeedB = 9780A9C1B0665D821D8FF1F09D6ECF3FD3D37E5E9804D8FB092679C85FC1E5C6
+H_OutputB = B20347DE2206551CEB5C6196D1913131B207AAC5E9BF4E523FACACBD15CEFAFB
+SharedKey = 4F9731470F7802246D5488B4E211299BF74BC379F1C5A9E7A2795206E2ADE802
+
+DRBG_SeedA = 02E47DD39CE359F84A4B1C90050E5A4783A8F4C00FB34E3C79C7D4242C97F973E02D4664F5D4ACADBA4E074A922D69376673AF440C27A57FD0272FC180334DF6
+H_OutputA = 8458828E58E5E8DE57540A913832E77F9E9F885BB563C9B2A40573E2061E78DC
+DRBG_SeedB = 373EA2F7581189FFD21FA4940E1A39786BB51DA8AA2B0D452E4965F66EBE9F56
+H_OutputB = 5699531CE23FA525782ACC7BB7E82C0690D23E2F24B8328CC02A93B4661C2ECA
+SharedKey = 20F294468719F268C315FB6641FD22EE3CAA7C404AFEBF3FD089483A3AAA224F
+
+DRBG_SeedA = 10C8C56BFFA889D3CED616B471B266DB676294E18A314A6103141087396872F63F463CB3F852E14D2936FE315E70D710BFD51B6061FABA77A81DA80AE4691C01
+H_OutputA = B0EDFB95775EC7BFA68C778CA1294C480E6A66E3B8FDD3BB68C45AFA10532B91
+DRBG_SeedB = D62B51C9FB1E91BECF4D5403698B12CC260C70D8BC9EDB36325AE8D3746F100D
+H_OutputB = 6E01D1BC7AF23FA8A35797A775C104D0773441452C59584BEB9D4B5FFA8C97D6
+SharedKey = C5E20AED6E907CDCC2296EDAEA7F9F60F38D257BFA3657AC4AD3C6B125D820E7
+
+DRBG_SeedA = A1081371E46D767AB32C9408F8DCF97A57A07C8F276DA8931D96FF008C258B4667D04C6C3EF175B2EA02C87A992D69B8557A82D13F3A656D0D3DBCDE8D53FEF1
+H_OutputA = 956DD2E2D11C049EBBBB9852EA324ED3F5A8710D9D2CF385D3112A9961DFCD2F
+DRBG_SeedB = 0C2FB7429BE6F94A550BE0F42EDB75EA7F3C874C660103DA7DCD66B251DDB150
+H_OutputB = 2452D6D23995693D289A1FA55ECD2AA58451B46E3F7A97F04807426DC8545DEB
+SharedKey = C232105A5F38FD62482713F5369DB52196A8BB4C816080866D878FE08E61106D
+
+DRBG_SeedA = 3D11D427021B58F3CFA6B3F132EBCD15521B75975DEEC55117D5E9BFB31B819AC1EB5694F5419D342DE48FBF4D17872E4B7880A31746F5704064B57AE7D82D1C
+H_OutputA = A3F5BAC439D6D63EA20928861AD7B9DD05BA71B65DEBE60A4F2DA5C46D88CC7E
+DRBG_SeedB = EB44C596B6F017C66CCB854B24625E3DB28F766787B3F8E2908061E36354AC7F
+H_OutputB = 6B3904819EB16510752AA38C2C13501DB5A5CD9BBCD3A2B1503F4ACD3E0168E0
+SharedKey = FC25E24E3AEF040926EEEE6DAC839C5F1564454C31C1FB1466242BCF879C251F
+
+DRBG_SeedA = 6FCD70154BE0C269A9BB13D1A25F4CF0337F79FC5F051FC9E23BFD793F2B9C8B81359627FC99C564C7E61A36D1CF213003A659E162060DB272541537DF90D9D0
+H_OutputA = F8B44BA6EF2C4D4FBDA8A44EC4894AE31E38F756EC71884EF37ECB4F367E858D
+DRBG_SeedB = A382E155AF8149F8DA04702643CD1F878C40829A1057B36E9971B0E15407CB5C
+H_OutputB = 8890FC37C5892D7206E1F52F70829EBF0FB76EC40389231C59861F98E15D81E2
+SharedKey = 3EBF5C25181BF84D087F3CAC574E3C4A6C4F2B1E6186D2E2E0E96C73D689E668
+
+DRBG_SeedA = 8D7E8619DCECCC9137830B1C5A913BEEA60E9843260E96447B1EA46E3C806FB389902B424F21867A7C95D61A42290A925B4A73249EEE739619628441BF446FB2
+H_OutputA = AD2F3A5144A154DA42C647933A14AD91712AD788D11B9D4A1A0EA51AE628DEF6
+DRBG_SeedB = B49C05ED423C09279DBF618A1733BBBBF63152E24EE2EA47C9B42BD24C4285A0
+H_OutputB = 0C4E142B1E692E25FFB1E522D45DD5BCC47876BABEF77AFF75FCC1BB66CE46A7
+SharedKey = 51A2A74C6F52F7CDFFD8DF2D570F1E1FCA7EAEFBAB7D0E4E36261E7EFD3A3E45
+
+DRBG_SeedA = A317AF79F55B9841C6584838BDE3D07ACFA083BE9CD163C3D0407C9EA86B0BFD416594D8D28EBDE22671A7BFA9357B452696EB812E2DC1A08C5608D58D188BB6
+H_OutputA = 58DB2BD32A75B70B412AB55847389BD8BB4E7D11F50F90BAD51C6522A2ED5B43
+DRBG_SeedB = 638E44BD2C8841578F706C81E90F39893AD8EF702D4D7837A8BB4F35ED5C8367
+H_OutputB = C86ACFF320A1CB75FB60AF44745E6B67CBBA41B2662186A6BC6E58A295FA8FCB
+SharedKey = 55378D5BF6F834D359C07AA7500D4F57B2E1344872D390CF81EE0D55CCABBD7F
+
+DRBG_SeedA = B4DC0704D243BD4122C3FC657642B89B9F629198420E5E431382D7585B67D2C1F8AFB6737618F1DFC0724CE5B5A2FC4080D67E05CE21A6BFB85027C91B0A40D7
+H_OutputA = 3260350229A03EA92350037FA4AAB6B8AF10903C4FC0D5BEA0704A09E1B825B0
+DRBG_SeedB = C631DAC70236A7A33776332F3FE4279FE322D582DA461FDC75D43097B482FD60
+H_OutputB = 5F2586A998C85E7A022C016D97A47C81BF7C59D0E512CE40E0454D07AC74A728
+SharedKey = 90A24F45E140C7197A3155B62F5709ED0DECEC5774037F48606A1F881FF76B27
+
+DRBG_SeedA = CBC86F9934A7BB510A4A8EE5DE61298BAB6CE683364C9CE1B36BD70F871238432E2692CD10977C883BA406DAA7208C5AAAF0B5F9896871EC9EDEB00756C45406
+H_OutputA = 427ABFD8A50F041C50C000F8ECA4D76DFA4CB8259E3CBDC82C1508AD337E007B
+DRBG_SeedB = 1D050B0E45418A59407BDF2F5A2B10F08FEBCA747411D72A5A13AD9B7425CF51
+H_OutputB = FF90285C806BA38493D3A8D64201E41A1A5C44871989982ADEC6579B72F06790
+SharedKey = DECD2DE60275AF9214E20D0556D9A748A51631928E1A5AA8A58E901E09C9B62E
+
+DRBG_SeedA = C5273C3786A18927DFDFE2DD5A902D4BB7EAE8169382B8170D535B7776074267490DAABDA04F58FE20E2B2FC3D9AF1717DB96C740486F6CF6F2FEADEA2FC8E4E
+H_OutputA = F004A1CCBEA80114775978676971A58B918A5B314FE79327A2B3D8DBFD390D86
+DRBG_SeedB = 58A330185C73E68E10BD4B3C43A4F1E0B5272E21232D8E6A9BBBED263712763B
+H_OutputB = 70EDA508442367B1A4AB1329F3FDE039788EE46D029A4072C5D8A241F31AAF89
+SharedKey = DE4C9A016E099ED6D3E9AA4A680F4FAB6BE077F824D998EA7A762E4B098E6019
+
+DRBG_SeedA = E7E98A263C9F01A5DBFA66273DC04148DB16EEC1D501690D7988C207F4390A1ED85A6A79827649F60E6B4EFD4CA28D0F0DA03043F45D8A8A59A4B1D0DA846D00
+H_OutputA = 8A8B74E3337D531DD93E7780BD9AA304A6C066543494A9CFB236F3BDD630CBE8
+DRBG_SeedB = 197FF4AE67F21F8122813B6968A3292B0994A86B8ADDC4668F99E773E8121B3E
+H_OutputB = 42263B79B47C4E9A32878CE577FFF163F5847CF7FA47CDF83E8F3D751DEEE06D
+SharedKey = C1483E7ECCB308AF4494578571F94654A2241F190F20FBEB12C63A9297364B5E
+
+DRBG_SeedA = 8AFE7417FCF3DCDD69D8777AC3D22EAD995A829E25838496002F0CA115C052E0D292C53B047AF76529A50B30F1E26420BBDE1501CF7BF10072F9F3722F3BCCDF
+H_OutputA = 9DCE7EE35054C1455FDC2AF05F3DF3B25D0F37B1B373D450354F31801EC79F30
+DRBG_SeedB = 40D74BBBC585A32817223E348FBF42D73FD060EE5F25C6768EF3777D9072DF69
+H_OutputB = 73DC97D3DDBB41F3387F80CFFECCB4AAF6621CB934716F3B968CB467F9FD512D
+SharedKey = 35A491815C242DF132CC0DC78EDB05EB4982A03741FC37B1F233F47FE13CCFE6
+
+DRBG_SeedA = AD7A5072A07D6205D3DCDFB0ED9683F5A98E9426E91710C74B76D8ADE0BD709ED494908F6489D90C01F3691D1052E4FEB8E234F6686C5BF5AE2D9242EC0F5B0C
+H_OutputA = B72432133EE97945F2AFB25BFAF67BD859765205D8E5E072EB837A99200A4080
+DRBG_SeedB = C3A959BADF9F90546AF2F32EA0F3E6A3855C89669860DE35099985DF4A994F77
+H_OutputB = D922358F878423F65ED6DC426E0004F1F4CE498A8F2F116D64A425158B08A1F3
+SharedKey = 35C22BE378F931AA7C301BE24E443CD4EDC058D6E7B7C4031F347C7D8CC88399
+
+DRBG_SeedA = A4CF7CB570EF42A0E5DA3E8FDA171F121DB716A3DF8875266831001739890D00117A96F93D6B1741CDE3944360E65A2959D8BAE991304564F47E136766A46382
+H_OutputA = C9F31C1A0B52D2C2200BED05E817F68709A58EA8188185C93A628CB2DAC5A5B9
+DRBG_SeedB = 45D14DCB89E98D2708661907028325BA4528598696B09FB73B3A4A9BE63E93E4
+H_OutputB = B122F0D2644C0223001194BE1E55706C7F1E04A086F35A5D9420A713414C6750
+SharedKey = 26AC51520DAD66176763F1D03810E8F6B8695B6009B5BAF1A1E45A8546B9A6FD
+
+DRBG_SeedA = B95623A3D666BC82B1A3B8DF064C2AFEFF9C6D6D39DDBF6014ED06A671A8B3F81E120EF99FCD13D9A316B944E4BEB701A03921294947349F8599831366ACFA70
+H_OutputA = 417E7662CC10FB79947AA5817636E48A8A5B45BC33E4D47220AE7719553B0FC9
+DRBG_SeedB = BCBC06C593C8B99CF93759FBFC5A4EE7A552738FE50FE126F287A76AA6B2E5EA
+H_OutputB = C415A0AC8DC3AE69320E085C32E460407F9D67F3CE2658C27DFA98244B9BD10D
+SharedKey = 10D7EB958A4A20317EB7B07803D025576441BDB233A59BECD43C593907CFEC0C
+
+DRBG_SeedA = 57E23294E8B8934035B066EB4B1E786BE27040AFAF11B909722FCBBF69212180872A9BD3E58C858F5A0E8B36037356004E7217AFCE748D50BB31D435FE5554E7
+H_OutputA = BF4766E43924CC1048DFA744DB2EEE7A064E930CB7EA4AC38920680ECD392343
+DRBG_SeedB = 93CC0AC8086E9D997AA91DBE5E380E562BEDC5765637DA8BB19024035BFD73CF
+H_OutputB = 10E3A56624FB1B86B73FF31C9992B0351A5476B6FFB92B79B4C5813F6A95B379
+SharedKey = 68C5DAE338040076D7E4DAB787B51718DE6D1AEAA96666C6DFDEAC7584CB6474
+
+DRBG_SeedA = 9BE6C0E2EDFB0F019751D3ED22D008590FDC3B8A09444308158D078EBD66A4DEAA605F03522836A5CFC89662F188BE46DD37925F38A5DE4994382E0C6F27FDA5
+H_OutputA = 39DEAC91B2A0B0F869751514507B8DA50C0304790CD9575A4373227F9171CCDD
+DRBG_SeedB = C4067F8CDCD82B460536B2A8177771E87534AA1DF97243E9C8FDC94F4C3DD587
+H_OutputB = 1ADC861B4CB53258AC17E3D4BB73E0F40D4DEED81B743456ED376EBCE91C9F72
+SharedKey = 96D28D18D12EF630ABECA81E1E3CF6F2217A31B8155FF2A9C100A1B04562CE22
+
+DRBG_SeedA = 2B903D7F637D27E5FF70E0CF0079741AAD9A785D1E67B749ED8B48ABADFA73512808DC5D75443514B967F25C7071284983D61D109D991CCB6690EA1A20754382
+H_OutputA = D0D4AC57E049C4EFFBD94073CC6353812BDCC2D743E6126A305D58EADB9A3676
+DRBG_SeedB = 8B3008384A127924B24CD96BC45A3BF3F4EF52F353F2DB6EEEEE560304C70759
+H_OutputB = 02945A51C642CF1F6148C05A1992323D5661A66650BF5D1529C1190798DE29B4
+SharedKey = 9B16CAF15A36CB1284B368708E5376E1204EFBEFB907D0D50AB935796F22B4CD
+
+DRBG_SeedA = F033757F8129EE4CDF59330C152FC09B4D70B38D7D152CDBE03F260C768BEA28C0812FCA8113F55392ECF5A879D12A84D2B4F4D0398BC18837DC2887A55317DA
+H_OutputA = D3836F0B19576FA54316116DAEE72F444074E4C5DFC061BAE823A7AF2C3D406B
+DRBG_SeedB = 2ECE8AC539D26BC5808AA9181630304C2277EB8DA9EBA0300561BBD6DCB26C1A
+H_OutputB = 4C806EFAC86FF43E09B0619B562690DBF9166F71D10474E9EDEB477B6E030F6A
+SharedKey = A23FF6FE63C730841F3B1D0AC624DEB976DEE7C40DCDAECFE3D581B6D86A2397
+
+DRBG_SeedA = DF73A716CD27CF06DF753CE6C65912B9AEBA9DAB876CF5A42BC709E073501CB7FC9001E374F2F3D3429AC499859CAE27BD0CC75C326492C73528A6C88C76FE20
+H_OutputA = BB6B4F062C36D91BA55D22054F6FF0F4BB1DE9053092D2964FE9F212395E5051
+DRBG_SeedB = 6A4F77268F63C7800F63B878FF1C31EBBE60B40149244684E04273F33CA21C01
+H_OutputB = 319CD696B10AB00DA745CEDB0FB11C94205C7BB4DCDA68D9A6250AA912B70C55
+SharedKey = 6EFE86841534C7E6AE995517633AFE0A283236936C58EF9268A5D5F9546F9961
+
+DRBG_SeedA = D77379637DC7AD86FD5952F7C4BE6827AD735B39E18A30F0EC765BDC7D570C60569B8290DCF66C08C3DD24A79048C4E386AE74187AF83EEB4C2C26AFF9C9E5A3
+H_OutputA = 69A6C5C48341F8F970BC29B5919CF18E1108293E8791CCBB862270715AE6EA84
+DRBG_SeedB = 5CCC037F1E45D378949A7FB12D1E56BE3D4483075D965EF982B106D2AF3379AF
+H_OutputB = 822796B07007A0A6AE2454ADDDAED78412BB5D8B6668256E4ADADB286DD5CAC3
+SharedKey = 841F0006B71DCD811F2FF5EF8847185FD616029D0B080C84E6037A14F12BDEBF
+
+DRBG_SeedA = 02E2120B0DC677334FB569BE7E18986B2CFD3C759C3ED6E1549E245548C7CBB22561E2A88FB7C4E11CF566B5EF7B463490E013B6AC4470A5F303A17BBC540E5D
+H_OutputA = D20DD57769B94E129C6AEF5CBECC1A09FCE7437B44D6640C1C875E652B0823EF
+DRBG_SeedB = 2C73951B3A9D64A1FC8385FA59758517149874C4D85F83556698DBB57BACED51
+H_OutputB = 0BD26E36466C08E987B892BE225EC0FE08BBC34CE79ABB850AEDAB9CB47B9A73
+SharedKey = 9DA59F4B7393DDEC09F3A7BBE71E7F9EEC6A840ABD37FDAE98BC927425AC5069
+
+DRBG_SeedA = 50FB6F3922B28184D33D93239D00F9835DFE1D7DFE641D8FF8BFE806614C27DB57DDEBD1E43694881D094FDFB357558ED0917A46A157F9AEE0E8A11C781DBA20
+H_OutputA = F0A4DA23FF98EDAE63F998287AEF06A8448AB406E8B3E309E8C165FCE490C691
+DRBG_SeedB = 7529D3691E8C1791359650D1A95799436B4FA007F647C65F479CA7A00874EE74
+H_OutputB = 3ACC6C855A648A65AABAF7439EAF3F4F303CC9D01E9C53F81F880FE8E04CE2E3
+SharedKey = 9E90F908A900C7432B9D752B035385F5431B5364FB12DDDE0AA2B97A9762A0AB
+
+DRBG_SeedA = BDE87774B722393AB7E7E75EA8A582A7C3E0D5B5D7EE6E0CE27CA04128ADBA797A4981CE9AC596D57EE9317171822D062A3FC2B89BF3FF2E5E528ACFB54C84BD
+H_OutputA = 353037BD609464AB5AD72017A5C6356F7FD3EC361EA92D9DE1411D9C9ACD25C9
+DRBG_SeedB = 7538A37B813256246EFF8F4881CEB2FA0AFC6E26BADEE436E6611D6DFFA60A0B
+H_OutputB = 334E882C716698865825174EE3C45D049F2F5D6BDB3004DB9EA2A0F0089E8F2F
+SharedKey = 96A2CE62273498ABE66305FF6732CA3E3AC9A65BA179AE21A6B2096A42056D01
+
+DRBG_SeedA = 04D3C2DE6467259D7D927BC9D6E14168AB8D37DA9D6F9BF8463C6EC242FFF6A9FFF3306ABE535A5C2BFB689150B37F26A7CB4B816EBA9C8D8C3D12437AA3E16D
+H_OutputA = 8B3C71CFA42D66BF6BD20E307F1CD945E91566280DD8DF7CBBE87903921E7CB5
+DRBG_SeedB = 478225EC2389A8F2EC741974A9A1DD1A204465F259821EC3D8F472A2B7E36536
+H_OutputB = 8A6641A3A87587F1725FB356D31E99E2A36FD37B51560FE4B6931EEDA25212C2
+SharedKey = 707EAA215925F1AD1E20747D0D449EA2E9F827B7B74DEE697F2752EFA384AC0B
+
+DRBG_SeedA = F8879DF7B3C45CF9355D5936163AA23EA02AA66016A7F5E43B2F9884D521B4B82B148C6A02D69506DDBC1F76A660CEB71298BABCCAD38F769AA0EB729C5DA325
+H_OutputA = D70CD34262EBA5F5094886507E2ADE56AD2539D9CC103A286265374A718B85E1
+DRBG_SeedB = 45D5DE9A626E6C0564D7981BC0800585D43B4CD0985E46E318D5D5E096AC4607
+H_OutputB = 8EA9B4115ACE9BD8BF69403C54C1D8A48528029FBA11C1348B9FA8B22FAE0764
+SharedKey = A1EA21DDDE0DAB8C18E4C8C70C7154B52FF37ED5970BD4617256C55B539481F0
+
+DRBG_SeedA = 3EE9F03F94DF3425D1D840DA67C121ED0630DB1E93E0289F1B0317B0009F088820AFC1525635290EE0780D57F5EAE6A2DE2951A22DD153D0C901ED7801CFAC99
+H_OutputA = 972BF80423D207936B44FD227BD6A642D60F122509337ED0472D47EFE7EBCC82
+DRBG_SeedB = E2F3049DDF0735502F4EFE0B02D9C9FEF91A2325B5A2BE4027D73786359AEF8C
+H_OutputB = 93B31A621D18436BAC1A02BC2CBEAAAD676DCDB7D4C0F42D936682FD04E4D8A8
+SharedKey = 67CF4BB44B0C566ABF1C325B754B9FA84AD0125A20BD38E64CC0D7B16016D3FF
+
+DRBG_SeedA = AB70DDC6A02703B86D58D12B13BC654C2EDCCC0E552A163410EB25651E975BEE71CC9A112CD4FD23709669A77029476B02A27F6C6D168DCBB594F1C77ECE34F2
+H_OutputA = 33D101C4876A911B180848A9C1D2390486A68168454AE88D823DD31217C79EDB
+DRBG_SeedB = 395A793692033A8C407722E4759DAE2271F35DE44BDDB87CA44AF0083885D6A8
+H_OutputB = D0A2B115FE5A364C1CE7D2496BB51EA90600ED1C5633EAA4895702E19B22BACE
+SharedKey = 1C68F5822DBDE3A4278C5F51837C3874E1E547F92AD3886BD0DDB32B7AFFF30A
+
+DRBG_SeedA = C48AE99B5028F1C0250ABD026887234F891866A493FE4F7302A06AD0BA3FF70E3F1FE26FF4E08BC660D4B767665819D2FB6E5D25DFBF89407061AC304FBA0C4D
+H_OutputA = 5F1EF027D7F742177037A2EB4DB7801251DD0DF6CCCB30A7712C166F27E86F09
+DRBG_SeedB = D055BA279930F803B767BFAABD18C6F92A63714CC5CED409102962F443245945
+H_OutputB = ECB904C17DC482AFC16C2B5A00C965891EC8C170956C0A025D1FDD3C15834E1A
+SharedKey = F4467DA7CB9956142BACA1A580120A078CFD6CC9D31B4B7259FC164513B5AC84
+
+DRBG_SeedA = 9FBEDE90DBD8178145057A280BE919A26158A79B1A7B6532D140BC6DB5B8BC144CF406B52509F359C21733C309EA7116329C6ED3075C781899CA2964439092C8
+H_OutputA = 261417B722506542D6A09385673A67C10A9C59D8AC8F197851AA4251EEB6EFD0
+DRBG_SeedB = EA450D197F3B78BB01A0B2DED309D6A2C03068FDEBB490755D4EA2B3249D2058
+H_OutputB = 7DE086929575C6091006B5605874FD9BF577E9E224A39989E6DEAD32F888F1D1
+SharedKey = BF7662BFE1F45B28D7334F81D42035D2CD0758CE8F00BF45CDA1451BF6DDCBE3
+
+DRBG_SeedA = 2D03D3E94EFA85F17D9C7101AE1B5D4E8755F8D3A01EB6107F57990BFA326A8F050E0EB1AAA5C95B5AFAF5C1B347D6CF155CD53A9E277DD832E14333F65FDB96
+H_OutputA = CCEBD2A1B54F961FBEF500261FB2DEC47967C9FC8396AF48554D6BA188EABCAF
+DRBG_SeedB = 468BF012221F8650A488D97455C072CB01549D7CB9E77A68DC4779F763E2D2A9
+H_OutputB = AC437E08E8C03AE9934F8B40DC68E5BB43AA50161C4F5464E95E12C7A30EECB3
+SharedKey = 4186B80390E12D38A87A89F32A0B6FEC5D9D0CBF6A7A28E067C5D31BB207466F
+
+DRBG_SeedA = 161758E0742321FF5E3AC1D8C6CF63E5B95138D8C1D8DBC8108396B83388DB26F0B42413B49C5A40CF6E32FA1A1D517D0FEFD4FF55E6F7CBC9F5FB66A156B0FD
+H_OutputA = 8CD033528425BDCC41C735A8AC650A149139E8D28D234B1E0086461FCA0A0516
+DRBG_SeedB = 87E555ED94071FD7C164ED1711F4BC67D3D268B6E6BC883CD1E0065F65328158
+H_OutputB = C5DEBD2F02C46AFE6C5D1CB6A6A0871513D2884BE69A1BCBE956C5A17B8BD168
+SharedKey = BE160E7C6D33E9CEF5135840EA646881701185A9E244031AFE44DDD1C9606A4A
+
+DRBG_SeedA = B68B64503EFB90A2538162967EA71F50AAC96C10CB3637D62A7CDDDBFA336D5BBB421FD3E6389982F39CD877C690C18D50D9D1047B104BB4A53D766007A0D162
+H_OutputA = 443FBE7B73D2DD9E8020ED9D7B7463EDAE4C4F83FC16647672D13662554916B8
+DRBG_SeedB = 551FCB31AFF1106EC5CECE013160609A3C68AAC2AAA6399AD7B0269C886A2F97
+H_OutputB = 36AC48E96DF8E1553B06F992B4487E59B36898B8D78E21638093EDCF6813D4C0
+SharedKey = 17E23C3FAD94832B49834BF45297B4C200BCA4F0730CF4F5E3B76CC1CC5D909C
+
+DRBG_SeedA = 443BE3BA0C6C88C1DF9A9265E38370D8AEEDD839DACF215C9C9B76B6DC87C02E6864C24957B578C2BDA06459B94324A9217B798229AFD9196A8AFACFCA198C70
+H_OutputA = C7FEB8679F68DBC0310E19D3E88B7816165825C5409E272769A95E8D8A1E90BB
+DRBG_SeedB = 1B8162F4DA8FFB38091446FA344C9EE19F65312E49A48AFEA9087A0F3E39A2CC
+H_OutputB = 88A3DA7CDD299944AC6E5AB05CA77E0970AE6851DDC860D248AD67BB1412AEC4
+SharedKey = A2C099FC0134346BE519BD599A51AD7EFDAB981ED0458BBAD7B75D7D88AEE7AD
+
+DRBG_SeedA = 13C017B2FE054CC8948E9FB94EAE0F83ABF4FC2F0CDBC4EA5A98A696F5E248442D9597CB46693DCAAF1CA08518F38C34BBD66BFA976B11541C28D9E5478B3DCB
+H_OutputA = 9300AA84B29B10B3148389124D175DCB536087785BD77788846A856D739B3C69
+DRBG_SeedB = F5281F3AE3486A64609DDE47970ED689FEA7FDEA7D6918CD237E05900C276653
+H_OutputB = 39513A05F1DF4CBD008A4DBE05AB71EC3346F10BEACDBD9A0BCDE7C5485DB23B
+SharedKey = D895DCEA005B11DCB872C0D3D60FE44DCACC77D7EDA50D03284BF5032762D421
+
+DRBG_SeedA = D4E5A7136E8C5F41A334A2CCE916DB8E5F147BB2593AB9A87E4C1E0F5BA9A60BB3C0B301F9526CD0BF4CB21CD68552B9E8A2A07B36705A36A17A7AB8B35DED2E
+H_OutputA = 7A44DF3280BFF4F8FBA03A5BD1F17DD4DC5D20F323A179EE05E9A3369839A754
+DRBG_SeedB = 6E4BA5AD36313E8AA6940156B612815218B9E033B0B63ADED4D521D02260B743
+H_OutputB = 63A0244741E26C020500F97C288011A4A2C288FDAD55D4B82598F23A4557DB61
+SharedKey = 9C76295954D5990B330513FCF2D198F698DC2EBD25FE943EDBAB16ACF03B6962
+
+DRBG_SeedA = 037803DD97F3066352EBEB96E37F81576EA43577E5E2048425F7586DF7214FD7F9B511AE21215B63B10562AE50C183C9E0E9A45A9B0A61EBB24EF8F4018E30EC
+H_OutputA = B91276F5B1BB2A492319ECC1ECCF39071F98471188D76C6F0398CC8C3BF07B07
+DRBG_SeedB = F637A9995E7234796A76022E7917A0840E4870FC875632157DA4925D53E4E828
+H_OutputB = 42BA05AB8C244C110A6BE8090CA33BD8ACE3FA77EAB11501809FDC49D1AF7608
+SharedKey = 3C4D85F1243BFD013F8AC8800A9AFD805F4CFCCF5C5C8DAA251737EC6F56DF3E
+
+DRBG_SeedA = 67E3DBBB1D06FC5AA887DD37DC06E81E9CEC5A28142918AECAB3C07CE5DC72D0DE07C733BCC68DFBA9C244BCA9CA034FA04C134F604CBEAA076DD7FFBE036362
+H_OutputA = 86E37B92E158360B5963C35DA408867CA5B4E8BAD3EFC1EF8571054AE74445CB
+DRBG_SeedB = 29DB5A417860D99F869E2DA12FB733D93D8C12326FC896F0EA6774B9A2D346A6
+H_OutputB = 7A9B23B61C47394AA7EDEBBBAAB0C3DFEFFC8E25B5C7FEA42C476BCD6713A380
+SharedKey = 482DD4A128F22E610A5C01640173E61AA68D7D87A5550EDAF6E1BA242424BBD9
+
+DRBG_SeedA = 885E0DDFA98FDAF48BC6F79669D099BE678BD1B9054D0881209E47493B624C82E7F764B346525773FBBFBE0556A4B22719970480B7DD124EC2B50E7FBFEFEC26
+H_OutputA = FE12249851F2695FB2DEA3D66590C7B42E06397773986A7394D7C91D2E8A88E7
+DRBG_SeedB = 229A0D140C714E594FA1F2F5183BBC48D7ED86185AF2A212701AF68D91B6EDE1
+H_OutputB = B19C5BDA8937E775169F41C02F565489AE32FDF29B47502B7C50B8F394F0CED4
+SharedKey = 67C62AEA6C9B31AC3B3483134A3B3BC532313077F091175EEF8AECAFED54D87D
+
+DRBG_SeedA = 57FBBE300B98DF0A079DB17EAF2C8D402933B7B34CB15A3B1F3F2DC880C299E401A5EDD6FC720EE72155B3E8D9FD5A25C5870EBCCF1EE052ECCAA61F5484F18F
+H_OutputA = 05C6334A4D0131815204767F5C34DFB279280FD3E3BC74F2599D2CC5D44B686B
+DRBG_SeedB = EABBD8EB008AF47339D36C89E1DDC6B0782E4D073F5EB416C4B90293C429CA25
+H_OutputB = 895A70D70BB3EE4927E4DC4CC52BD9C9CD39771C08765E219CF00B2A3C15E2FB
+SharedKey = EE1B4FB5073D161A8D3F15C6573B566856734DC55FD53449D2448BAE36F6C832
+
+DRBG_SeedA = C216ECF0861847346A8B1E857AA4EA8BF7C3E63AA3EE88D8A96261348EF2072DFFE61142F6C839C77A93CCE7B56905E88F55F086279E54C536ADD4501739BED7
+H_OutputA = 15A2E188C3A10FCBEF0BF96C34CAB1B3D2BE93B325D6467E057EC4A7B6D91519
+DRBG_SeedB = 33465B34D30F8E2C688E339B8ECE85E2445DACE5FC05A423E65BCBADDB9ED869
+H_OutputB = 05B0BF6E49231298F70B8B9EAF250A13F71D39C381691A6DADFE3E91A011084C
+SharedKey = 7FDE0650123CE724A42529343A6F6C4ADD4589635404A754008EA6EAD060A890
+
+DRBG_SeedA = C79E937F21AA47F90AC04E7939258439F0824C1E62184F519BE697D79AD24AEE572E443242F05D3549DAAEEBF24B1CD97C347764314035AFA3FF3CD282BBA000
+H_OutputA = 3FD670947C502E9F4F5C7F4A29096EB66CB7A1BC22D18286C17D9D2AF28EB6A3
+DRBG_SeedB = BF6BB54F17B9A54DC92FD7A142D60809CCE650030259BD03BAAF3FE37DE7D85A
+H_OutputB = 4159AFC6B867ECA75AB04B27D372DBB070C69503C5BFEDB8168ECF24750576E8
+SharedKey = 45B45CA5F5DCD99D12F9D1139A2189CE9835DE1EA150593B7CF4CCDA7687EDF9
+
+DRBG_SeedA = B1815C74867B8314E30D67C24059C3ADC454AB0170C729BD45D0DD7E95CCDA0B1D603F4318EE7BC20EA5E89776BD83FE63914B6D656D0B6354B487A3FD1FCFDB
+H_OutputA = D697ED3ED42DD3B181579B9EEC7B7133A4F5E4B677A078B3589A84D46E42A73E
+DRBG_SeedB = 974053376B60AD297FDC0A7B08A1BA98D194558171F66273F423969A9FADD8FD
+H_OutputB = 5FE3E2391497FAE4DB54CA9BFE47F30BC3662F9744C654CE27B2CECC931C0B23
+SharedKey = AF81D508AA16592BEEF0DF0BFC23BA362AED356BA5E0100C8D69FC614D1B169F
+
+DRBG_SeedA = 03CAADEDF388EFF0B466BAE40A41443619A6E75C2AC4202B5EB5C411E255793117BFDB218633DB2800F70A82054CCA61586AC11886A2D287644B54B5B0BE1054
+H_OutputA = CF597A511B82E563D89BC551E0728746E190CCE8E1541DF0857E0DFF243EB817
+DRBG_SeedB = 088ACA8A7C8EF430E083481DE8CA5E26B89A5826904966EAE8973DC946C66C7D
+H_OutputB = FB946CF77AFC523A8DF07699D14AEBC396F1E0C5D6C3367D29191F98B846B8EA
+SharedKey = B4EBA3195069C347B274EC9FDC8045142EBC834525455B44B51408111E271778
+
+DRBG_SeedA = 01751421B4232485EE19678C58E2B5879BB9F062A714AB784123FC2C717A04459E5845F59E3D904CC370A1335600024F134AD8E806FA567A527FD2D124C6298A
+H_OutputA = 3057E54AEF6BC59E4F372AE531F2A4C513EB0A4AF3F6A536E7789D37840A6652
+DRBG_SeedB = E53C353890031BEE0EF3AF5322F86207C43E14EE1DA8C6A534626E7CF63105E9
+H_OutputB = 2D4942FF43E9318CEB077E251C33898C1A7A205681575750CD6A56924D758AA6
+SharedKey = C9D99BB79D712DC947C65B6CA8B2DF6E5D3C254EECACC84046976B52EFD9B156
+
+DRBG_SeedA = C9525C3517D08B3BB5DD68079FEB98B1D36D5CF957E72A30120CF7C8A2B95174BFD07D50D887513A32F4FDD03A36583608E1AC3DEF23F99879FA4F82A86FFB00
+H_OutputA = D120C4A122506DDE271FAFBEB72E5AB5CFED9E4F0160D070717CA8210714EE56
+DRBG_SeedB = 31E2A37079B8E771D04675DEB25D480F4606E35FFAA3FA084F73024B8F244AB2
+H_OutputB = E121E5B7E7A2D82B1CAAE6BB5F1D5A84430F35D0138D7CDA8E106C8670BEA71E
+SharedKey = 40B64E260C2980084DA06C392C2E240E79817BC7DDE4ECC885A84C4ACB2DAA56
+
+DRBG_SeedA = DF5096974A9778D54278073E4EA179BBA949E4901F45A3C820D38DAC4CAAAAD82D656F013FF3E22F23BD802F8844E4EE55176A93DB5ED1D11E644FB54AC91993
+H_OutputA = C7D4E190F72A0A4BFAAA6F827CC852F019BC7D9D46E9D780C092D1822373A9D8
+DRBG_SeedB = 7F473EC6D5254387F507B6EE418CF305EEAFA863EBEB7D653CB3FB99A88D34E8
+H_OutputB = 7774E1FE29B8D3E5AB7B48F3DC7D03D731E716D3F41F2D5F50120ECEFACCE63C
+SharedKey = 7FD884FD20D74B0F50F45D872576961D55EE4615432E0A00E1F2613E34FFB705
+
+DRBG_SeedA = C73C4614D75116D6DC03C9B2BFCC1D3D1F6C5C61F59E1D997F114B90617BBE33BCFEE28E7609D664F74BA4233E6730ADCF0A2C1B8994AEAE341948F901042F8C
+H_OutputA = F598DE62E3CD5A4B34AF422BD0C2128EBF37131094D069EEB9DC37F494B67A15
+DRBG_SeedB = 67202DFF84D2DFBC848A06BF87B590CB97254D931A131E8526D660D6E8D8E2EF
+H_OutputB = A6A0A426277CCA51F8825C44991AB42CE61EEA01A79E93DB529C5DE10ED962A7
+SharedKey = 85316DD6897EA9B5CA3E0B7A69EE97B6187EDD6C4345E1319CC338287AADE421
+
+DRBG_SeedA = 71E1494D671CBD0018CFBFF3834B59E30C1403658243D055140DA8E62D12B2DA136051E37D570B55C872C3AA57CE76C136ED8B3EFF619729BCBD09AF074BEA3A
+H_OutputA = 95E3AB3654DF6FAFEB1AFF63BB710B3DEDCE9CD4B3638521640D6A3119715BC1
+DRBG_SeedB = 0DB24EEB4140C93B20426D72450354F2A31B921053ACBB18DC8A1177F4DB6C60
+H_OutputB = F70F16BB9399D4DFB081950D02EAF74627FAD818310FBE74660264FDF9BFB906
+SharedKey = 603D1E636F7D79DBE036F44659B5CC93653EB43142157D4A98CBE0D02D57F266
+
+DRBG_SeedA = 74B41B3C101641B96A979C7F144C224BC8A4ACB93829998E3A123813974CC98868A3A0D19071ABE715B6C7F93378019CB6865E0359D9BFCE9851BF24A107797B
+H_OutputA = D40304C2E618A9667A05E32FF5663AD6831398B9D88B3109557B242F9A0347D8
+DRBG_SeedB = 9B95F8C5883DC0C126D78EB1B24B7CAD74185EFC0C33DBBC3EDB922A1F14B55C
+H_OutputB = F488EC29BB34BF77A8A651890A4769F2D276FC7898C2F84835F4A2DB487A8786
+SharedKey = 5F4FAEC812D4E66298EEB5388D8995974356F2C4AF0B9715282590453C9E6F52
+
+DRBG_SeedA = 063C7CF2C4C4C1B7BFC7F49E4CC19BD6C6FBFEB907AC7B88AB8DE1B7D07EADEA244136FD2513CF5ABA219AC898D7BD12B7DAB17A7AF36A4CAE3915BA0D221835
+H_OutputA = 4452CFB9E62B84701C4EB3F19FD2AC8640C475B678D85B16F161D29658A49F7A
+DRBG_SeedB = C5BC8F8D453098A7F819DE9A25D53AF5FA67A830463F1D0194E46DFDA51D6129
+H_OutputB = AD8E79A542A8CED97BD72FAED69FD0EC2AF6F40946B1AF9E3A628EC3E862D1BB
+SharedKey = 4F0601BEEC1C639E5AD89F4F6308E87AFECE327AC1F46A341A14E8CEC7101CE4
+
+DRBG_SeedA = A9FBC4A505DE996909E57BFD7E0F6A15E170A86A947175756EDE5830A73280619E8A9A38187102EFF8A1BE9D9D24FAB5D2E9B1DC75BDF3707997B278F70C9423
+H_OutputA = 6F931CF772B95A58ADB70BB0EB84A6E02285DDCA6672657EBE7DE5C0399D6540
+DRBG_SeedB = 5907690DA54CCC5A635BD90DF8EF92E8F4AE1F027CC3D9F23E0D82DD89E94D27
+H_OutputB = AF0EFED1075CA43E8D1D36A191AA76CC68C1D9CC8A88284ACB975569503BA24E
+SharedKey = 0FBC9328C54A7741A0EDC7098F5D26692BF8D9E91C15503A32836C0AAC69E054
+
+DRBG_SeedA = 29D7BDCF59064D29F493425A8BDA790B15C5DAA0EF9B42994D18D7B179C8D180998B40417DA2085ACDD46E45638EFCF5A76361678A3B94FADEF97D39B0C1749F
+H_OutputA = DBB4B21F4DE9B062B9115522429E8924ED971F4A663BEF7DE6A4BBD106F1EB88
+DRBG_SeedB = 82410EF48483715A7D94478FBAB50CDAB01CDD2337B0CF933D8745C593F8B869
+H_OutputB = B3C31E0F20D31EABE2281E7B480DC3D445CC6C3F739653061CC985F734F87D4F
+SharedKey = 9D433189F8A41B0E7AF26B1B3D21631D9143FD05CDD65A8DC4121C94183B4775
+
+DRBG_SeedA = DE248E9367C80F5D72F53806166666B0B7D81E6E39F8897FD01DA944936CC221DA91D890A8CF6D3702179ADFA3BE58F531871ED7DB51BBDDAE335B17FD0A0FDC
+H_OutputA = DAF4248152B520F6764D8A5396D8F564E2DD333D882F58597E71B5A025305F47
+DRBG_SeedB = 73E9272E59BD16984E9076ACCDDC5C7ED3ED4D6A72BEC54C90B04FC8BB5B072F
+H_OutputB = 03D0B873B2091119BA385BCFF98E2FA0D2C1FFE5425F6C7766FCDEC5F0863109
+SharedKey = 281308C682C781CEC23A5E8EE6D1503A9B739025D03AA75DA42AD7B9C95920EB
+
+DRBG_SeedA = 7A5FE299BBB2DE8877F9CBDCC110706BF8A6DD987FB509C79556C98D14573EB17F1F04834CB76C1CA12DAA9AC41C76169B9D281E752E048FEA1A0476AD4B34C8
+H_OutputA = D47803E4D67F2B53A8EDC4CF24B43E5CC045BF26AAB2C763B2A4FEE32BFFB4E9
+DRBG_SeedB = 09E75036224215F85CFC2B5B821F35506C35B4F89EBC522445B4B5B6759F7302
+H_OutputB = FB8C39156C15469C4E18CA5BC8CB704F1BA0DD67DA1F45B7DABC3DDF2A9C17C8
+SharedKey = 7A68F9248B80D8409E1B3BC9CA2DB13722EB9BBD1F5E431F54849EB35797211A
+
+DRBG_SeedA = D0E5C83F3A1AF745830CB19A58AA7FE9F3DBC2851456DE402CC1D1EA23812D55334D4C207AE6192200AF2A1AD33A12FE5D89E4AD083F7B9DD4C6EBC5FDEAB6AA
+H_OutputA = 388D19ED5A77FC8633FCB405E32E0D1273C4885B15ACA0B98B2F6DD24E16D03F
+DRBG_SeedB = D1C4D96E645EDDAA856EA9C554012C8F77982377968911353DD5176CC7B55B3B
+H_OutputB = B31B63872F312E7A1A74E640B2766C8318B9EF52B37152EF4A4C5991A9002131
+SharedKey = 38BCB24614671137327DDD2929FF398BB4782281C3D9325A2A415029580FD4E0
+
+DRBG_SeedA = A89CED4BBBDFAA298FB90FE930451FB8679BD3C867823BC02A4FD2FFB3BA5929F2B6EC930DF95105B08ED3450A5E22AF967ABF7E052E62FC8B8E1FE1EB7A184F
+H_OutputA = 3A89417F2B4F69C9B11CC34AD706942896DBE611CC2A678DF9983835BFC65EEE
+DRBG_SeedB = F41F2194997CD46CF60C147122419A3BFB811B21CC05E6EC333F5E6E19D7D911
+H_OutputB = 06560BC036B5E75815E61B7ECEB36A9859A0E11CA6AAD0081AC265BFA5CBABE1
+SharedKey = 6DC99DFE57B53B9C7E0D247DC0EA0E3D7943A0EB6AFF8380C7B9784F9B539760
+
+DRBG_SeedA = DE977BEBA96D338632718B85BB669048C9F657635F3ABC6CE1F4DC5EC5B00B2A0EFDB4D916D8F1CEEBC8558D12B5DB0DDF13B52D3B6469B5A810F49D1A577FD5
+H_OutputA = 2C213AC0FB7FE75BB42E510D6E58EABEB17BD05AE05452D94005006C746C44A0
+DRBG_SeedB = 0384488492DB8F30BB9D5B66DC2F153551575B60B2A70B7CC3963DAB2E8AAABD
+H_OutputB = 8577E382569B01FA1F719194108930BD9416C9FEFBBDD69F60D3BBFD2601DC62
+SharedKey = 4CA56BC148B958E94B7E5A04708B3973018F8D9072C545B9EFC21A7BE7EEC50D
+
+DRBG_SeedA = 8AF2FEE30C10FD7793124A3D2F4EBD5C9C988616D61FF851AB888AE37635B416FF6A9F146F9BF30533632E2BAC45DD0F7BC155CA307205C98F88380E83638011
+H_OutputA = 67B9074EA25B8E5DB6F183DA2C6A2A1645692D8C8CB8D75F28BE87CFA8C86353
+DRBG_SeedB = 1FEA0F129CF88E6C816603636BC275B0094D9C1E91AC74E1755E1F9229F5F48C
+H_OutputB = CEE2EEE8C0A1C649E0D6A93DF7FC2622DE62E09394931847FA19E3F894E6DEC5
+SharedKey = 2D1CF3D425C7C4D84FAA31325A8FB870B5557F46F2F9C8FDBEAF0569B24EDDF1
+
+DRBG_SeedA = AFAB0A241987B56203554B5B298605A7AFAE6C17064DE470C35746C2B162537D0B3D5D09B7CFFDAD244F9416659C5C05C096E2211B081A6AB80940E4D53D9784
+H_OutputA = 656EFFEF046E6B75A848EC1D817DDA1F5EAA3F9596B5969B8CD7F7954664A5D2
+DRBG_SeedB = 0D4C8B8D2CE21F38A74B495388930EE91D12FE63E635C8628BCFE3CA07F17AFE
+H_OutputB = 3E2BC56F9D46BE0E3E8788473990A58A7CC0649C878A3FD5E02EC2C863B313D3
+SharedKey = AAC80EC259B99D3A2D8E4D0B20DA7985E01A99DC0D48DFB4E631A08D9C88DA57
+
+DRBG_SeedA = 515AAEF6A71FEB5B6D320DBCA028AB215D462FB24823EA91093C6C826CB4D0FE23E0676B36E661718CA4B9B9898EC6336E88B8E0753A3EA300FAA53635E0558A
+H_OutputA = 47DA2AF6119286155CCE40A84F10989A92E1FF083B9542B9C769DFE62CC28E60
+DRBG_SeedB = 97F0B216D3B79EF4720EBCEB7AC8D01B5FBD00599739465C11C1FB338F3C0713
+H_OutputB = 73E6518B264A6B4E63F9C5B96D2D1F1146FEFB961172564B7E2C2DAE687B8B7B
+SharedKey = D6EBCC3E3D8FAF516E7FBB62443B7F491B7AED965D65007284901D5BE705500C
+
+DRBG_SeedA = 299FD47494C941B5281D29B6588BDF0C2120797AA235C4FF485B18DA2B908FD0B4E1057DBBF9BDB8263349966D73643A7C5ADF842E8453428DCA023CE6515C80
+H_OutputA = 6509757563176D8D90F7F8DC2715438A37D6B28649295EAD6CCF52506576396A
+DRBG_SeedB = F655F7349A410A4DD61344BC9E6862451C98F78CC375F68A55A64E8EA9EB41B0
+H_OutputB = 742B5CD7EEF7CE2D71DF755A71CFF1E44E65AD4CF390D42232120094EA73D530
+SharedKey = 853FDDC416B06CC71F4622D0D84A65A09F1D5D0A22A84D56373D7952B74E205A
+
+DRBG_SeedA = E115E1F6F6D8EA0153D4E696F1100375820628D3B6658739A9568B5FEAF527C13E4D9F35B12708BCB9814B16A1BD79EA55132BC89F378493AB1F5EC3BFEF44F7
+H_OutputA = 82CE03095FA372FD190FCFB15A7033C12F6F13AE6C6B21404FBFD3FEBD41C0A8
+DRBG_SeedB = C6590C93FDF9BCDFCD8910DAB6F3FDE0C49684AD9347C5A60C960061705077C1
+H_OutputB = 9A3BC6BA53EDFACD5309F0FEC966B49DC328AEC7C0392781EDE79369EA6A6D2B
+SharedKey = B17BBD11BE1085EB9B5314D536C1E121FAA426A43594B01E44767F9EC8F92E17
+
+DRBG_SeedA = EEB5B1DFECDC27901C2F36744EE970E9FF12D7B3AF6AF1E959639818F685F6B2E16F70396B4C67B0FFCCB19D85BA28A242FFD82B816952669B9B26D0FB3850E2
+H_OutputA = 45B310787C2B9F4708C004C9E429666C40968F97AB70EEBFB69330C1A18A8C26
+DRBG_SeedB = 5413D8D75132C8C20F1D52F1F17B759EDB14A183CAFDD6070FC6AAA49B81C6A0
+H_OutputB = 9BF13B1EC6F36C1DC439CDF9B67961563AF914C65357D85B8F3A3C56D6734ACD
+SharedKey = DB3078FC8CF1806882E1C9D3CE6014368FEDF3DF9E8B785A349E46C46F7A8D79
+
+DRBG_SeedA = 6AE2A1907C4074AF8E6549A8E3634277177F53C6E9DD75D66B4F690C4FDA7E1C28C607E45C57897659D9185810326EB37942D36BB5D352FC72B575986C1697F4
+H_OutputA = 9CCCFB73E5D6DA3C9F25AC6E84F889D113627E34719E92F58246886D5A76C891
+DRBG_SeedB = 976456A435F069C6AF01C972A1820C483278A7B54FA25A5990D5FA0609A53B27
+H_OutputB = 74EB4BDBFC854BE077977BA04F1D54D0EB9D62769F8F22CE1647D6414AD583F1
+SharedKey = B6043BD94A2CBB59BD455A5AA8B5FB9BD383CF5A37457D8DEBC72ED2811DE012
+
+DRBG_SeedA = 5F80F683B0D44AC33B7F6AE5213BFFDAF946C34196A87E54D6FE03DFE1A97163B5174678991C233750EFB169AE89210F2BC5DAB27839EA1ACFCC99C5DF124980
+H_OutputA = 1A6DB10466D9B51614BF3366033EE1E69EF4F790CBC78D26CB15F87A6E368765
+DRBG_SeedB = 8B9526AE7FE4F09EF082D0A5CF87F775359B0B148314D3C51A5E43E4EDBEAECA
+H_OutputB = BDED48C7EE32F1C202894905838F8B75936008D8AD9EDF0A23C22642CBB40D7B
+SharedKey = 78AB390E6E46E52664570978E49EBD28DD398C5192BB9A3DBAE29AF1C1C88D1C
+
+DRBG_SeedA = D4F4A9DC8CAC65111D701A41B6F9897E74D2AD2FCB66CD1569BC40115419E69D1D2C9217C15E1F8C2AE9858779FF85914290E31FFC1DA9C1B4B73F68F4C70A9B
+H_OutputA = 2B68A8475E8D294931BC169743682A54776B472F1F170AD20DCFB44B67DC2DB8
+DRBG_SeedB = 872AE09BB9CE34046DB4EAD6904D6C8A127590AA047424455375D5967856C9B3
+H_OutputB = E2F63ABE8248EE2003B32EAF93B1FBB646825BAC0762CD2F4117805C59D8026B
+SharedKey = 05212B51E972F003EA860F4C6AFE627641FB9D2CF2FB860F168E08C7A41DB5D0
+
+DRBG_SeedA = CAA9C2191286D3B0AE3DD9E1B526F5CEDCCD15E98B04721D806C8E39C6180F84231A8C7CF12C84A9A0A994DDAA9284D84C4D6763BB1264A7FBD868CF3F91ED34
+H_OutputA = 310D30237B308BB39304033A7D4BD047AE2E32386EFBB51599E8026FF9C5E11C
+DRBG_SeedB = B9EE7F28FA941E2DD9C06CDC63E4FADE43485D0167E756F875085FD4FDFB0139
+H_OutputB = 4E745ECAA29BD84481A256E81D07B1C90378C44AD9DD892E19AA776FBB59B9A6
+SharedKey = 4CEA7F374D3B1053D4451E155AD97BDE071936A4C8512E2E537E8A1ACF30E02B
+
+DRBG_SeedA = 42CBF00986B35CEA7FD53914EE48A91A590350EC536493F294B3A5ED180DC71FABA91B9CE3857F77274D38604A1B41A2B4BB4DE22FA221F496743DF13D80CBA5
+H_OutputA = A71EDEC9AC1349A8F83237FB0BF8723E4579E5C93B325BC563DB103D2F2BE374
+DRBG_SeedB = 473CA24CFFCB32DB736D38378886224558514C9F89F37BB1ADC863E64E4FC70B
+H_OutputB = EF9807863B090374FEA92BCC4EC5C293EB2EC643A13DB52CCD6F20CC06320B93
+SharedKey = 2E7CD5FE4B1B083C55A7E9F0567C282D4B5EC20FDB3A2AAA2116FEE92484860F
+
+DRBG_SeedA = 516322B1836A751312F3C6092545E7F3E89DE8547512BE31E0177E898ADF29CB1BD53AD2D2D86D676DE282C738439466873870D804B7DEA30B53C1ADA8D51048
+H_OutputA = 3DAD4C3974FDF94C8C8C1B6F58CCBC522507E085AE1B0E5B732DB670560A1D37
+DRBG_SeedB = 4F94CDF94121D91AA52819593A3C972B1A233C2C7377818ACD51CAC651957957
+H_OutputB = BE93E54FCBA0DC809E3846ABAED62F29E3B95D68EB78A1A94F1CBD2901ECCF54
+SharedKey = 2885704AEB906817859B0D534F5DE60A7015B3D5D6AFEFB1BB8B6FB6A6F17657
+
+DRBG_SeedA = AF5603556927F18356DA73187BEB0737E43418ECAA31A4E9CC6F8DC7782A7C02447E9B91554DE461063F80209F39A9A1EF30CA0303902C336E62840C082EE281
+H_OutputA = E726C9EB2F3855E58807BE2DE6DAC0E6A9AB5F2916D7BEBFA017E90C931F7B48
+DRBG_SeedB = D0E260822D432AD3D8E60FCDD4D519C77D65DF27EF51AD49204972B0204E4B2B
+H_OutputB = AC46A86D5C9F59F087F90D38FA4A97054DAEAAD6A7FBF34EB7CAD05BD2282A94
+SharedKey = B74B767738D294A8979E18C3DF05FE3CDD640299CD87E86A26ECD252CA6518F1
+
+DRBG_SeedA = B609955144AFB6426A07D090727C77AF2A01BB68B28F83CC0712EC65516AB5DC80096BEB5D16FE444E16BC9D56ECDDF80883567C7F0B723846600CEA47AAF9CB
+H_OutputA = 566C4C5B1B19BD10B856E75087DCAA90B0BA47809E2BE502A739FCE91A8B1C6E
+DRBG_SeedB = E786A5365C77D387B0A3EDC0340250294EACDBAFB41FAEFF3AE1680331F3DA78
+H_OutputB = 5E2E38A0DA094956F6E753E8B0043FDB8244B409432D6D72A724061334A4C1D6
+SharedKey = 4D62E3468DE6ADA3AD900672CE9D9C900C763C56EC22EA53A567EA6C9A5FF23E
+
+DRBG_SeedA = F8FB2EAAA88FB8FE029FD9EB7E6EA61CAC2EF4C35FE78A2CA89244B44F1DC861D5FD8F2C9D6D4E6A5A8FD4AF59EF4BD62AC2919D8CAD3A95BD7B9B8812EA9664
+H_OutputA = 054EF378C139EA58547360E0734E624749D4F2F0FCA9284F73C22BC942CC0B71
+DRBG_SeedB = 3B74CB10DCBE269A949F367AA0A2259968EF2AB99317FFE508845DC1E71B8D78
+H_OutputB = 6A6069BA6EDC8A5A3760BEC55316D4A7FFBFD385F5F4F13CB84D0872F8BACFEB
+SharedKey = D30A413D11484487DEF28778D46DEE8BCBD65F05AF1ACA4565D96752E494E1FE
+
+DRBG_SeedA = 20C2F283F16A6BBA76165738980A13228C77FBCAC17C10C6C14363368A3F398F8A8744A791A4584A80CDC5450F91514292722854FC1BECA8C47392151FD1DD02
+H_OutputA = 410D9FFDD05A62BC482707B2B38218D5C455EAB7AB66BE16AA5FCDDF20C5F59B
+DRBG_SeedB = 537B5935E569AAD1935A694A006315F51AADDD665229DC2BEF5F200FDC9008F4
+H_OutputB = 125B3C11A7CC015AA9D8BEA640B55E3C9F3421CC6CF6029564AE769A3BCE90C6
+SharedKey = A5EE54D5C0B7F172DD9D02EECC581443A48FEE945EC3ED0CE85B5A36FAC97A15
+
+DRBG_SeedA = 09DC4F91098CBF0D671F88CB4460CC8F792AC4371B1293F45DF74F8CE35E8EB131A3ED285142003D6DC00DD9F996793901130C2E16D2D76C069331C358951196
+H_OutputA = BAAE7AC8E7FCE52C562FF460F1B732E280A8F40F14252F09829D4F9B37F6F0FB
+DRBG_SeedB = 131E6DB0FFC47A148EBA4D91993BDF81B530111C183FFB049611CFF567243EEB
+H_OutputB = AE558517AE12199C719424D32E86A0AC8B178756FFD1E9C362E16F4F74A67769
+SharedKey = EFC7BE90EFC0D3616F636CE735B92991576D1B8FEA49B45F4AD22695C8CB864B
+
+DRBG_SeedA = 7BD35FD674BF4721F4B4121CC2F192962970A559AAE00C48957E9C2A0CFA9EE59DEB665A0470F853FB5A4BBC376C55EEF69C845360B622BC91F3464881A286A8
+H_OutputA = 146D6E679294531010DD90A54F88053905B0062EC3C23EB03BEB587B1F010526
+DRBG_SeedB = C98AEEEE600877C494B1433C7FFE979A93CE3D15EC2A931BC94DF8C26CC1947F
+H_OutputB = 30BB46AF14B8D115CE3A225DADF866603CA381E68C4CF83C288AD388C985AC0E
+SharedKey = B713B2545F3ED619F7CA020D903840AE184E978636FCB6CA19CBD7300A8096AE
+
+DRBG_SeedA = 3182B2C3126DF33576976E221BB594224E084CF06957F5A3EB6E3A8498B7C14803C3484D3F3E266669F7FB5E2A4EB6E0722D582F842EEFCF7842DCAE9858AE63
+H_OutputA = AD7A6CE111A1DCBA7608DEC237BAC86A2E091953306978D9E3F7D82E2CF0014F
+DRBG_SeedB = 4E094DF378139EE89EC3B241B48D0FEE318A67CD178AA05B06B70BF3C5665A91
+H_OutputB = 7A0DB4171FD434871732CD5E48CEA17B9BBDD71050C4CB99347AEF75E678F677
+SharedKey = 6E73B74E9640BD99CBD502807241AA7D6D15CDF4C589F230C7BF6F2168C9FAED
+
+DRBG_SeedA = 9C70260CDDAC1004E9665CEFB39863565C1ECDB3C5F0ED0AD9E0A38EEEEE6571EEC709CA439C7E5E344B92578182EB3CB18C047FFBBEA3FD2D13B8307BDA8532
+H_OutputA = 1C8F375C403FB4C90A805E17F519651F10B8C2C0870E4B5492B447AE420B12CB
+DRBG_SeedB = 03B711C47510D3106D1AE0FA594B46811575AB01D8E68E26C772DC4C5FC8FEAD
+H_OutputB = B79A7843D6D87D23C15C9F2B1853F19EFC9290D290325209B07FEA27ABD3882F
+SharedKey = 00C444B489365F7B53B19B5D541C3B33EA68AE548B015A498D86DFD5BE38281C
+
+DRBG_SeedA = 9A5B40C679B804B4BA6924877E590F88D54A69B1B9B03FEEB5DB6B52179D6A1D6C9CF3A396E08CC727FD72B8612D381AD3F8D6F8B5051C7333437C3626A7C10C
+H_OutputA = 7E861CE57C17C1B5768C015302B8422103DB72C780876FAFFCD5D71702CE8190
+DRBG_SeedB = 4EDB28CEC8427827879B37FD9DCA2CE937B82AA04980A4DA87DF7EF903FC22A3
+H_OutputB = 3C06033A7C110175FA65C1D67E29FCEBAED4583AEB757F37CC24C96AA4BDF582
+SharedKey = E7D2A2A7988E3086C98043F7681DC7CF39716AD1A51880F572F2D3E35D82D7CB
+
+DRBG_SeedA = D339352B1121D3D5556BF1DB10D84904918EE31252B69960AA84B94B1838C8F08BEABAB23F8E088AEC5AFC8E8F3A0054462FF8814FB5B77E86486ACEADFECAC2
+H_OutputA = 302E5C9980FD8CF4AC06AE2B7C971C349FC5D428FE393A23F27E334373B8732D
+DRBG_SeedB = 7616A8624177B2D479BDCE6DAFBA5DEA1AA1D82A497FAA2A154B1D7D8689EF28
+H_OutputB = 6294509A5FBC6E59AC60792E924EBEA66966F9C13371343E0E98DED499B8E5C5
+SharedKey = DFDCF6A6CA908757880871CF410E5386EE55F4633453705778B4B49496317E87
+
+DRBG_SeedA = 60C463F0205D3D56ACEAFDDFA5C89790072A0C7E24308FA4B6B3A006CB7BC7B6EF21FEEA8E2FE4A67530E3DCFFA11325A782A0514DF1E9E38C6719E869236DBA
+H_OutputA = C3C70F17FC095380C95B493E432CB6155B8290C9FB0AB2F7B0DDB97CE9F97CA2
+DRBG_SeedB = 73F0079B7BD604746009FCC791D2AF360F3910E2639110ABC5A81416566EE555
+H_OutputB = DA781BE02071BA2976C1F33A5F9C95E7BF77B7BE9F2D87AE0849BFE1503ABC00
+SharedKey = 58202A3903A0FE9B46C727D5C149B94FE7F9A464D0A3CE8ABB5DE9DFB229D1F0
+
+DRBG_SeedA = 2788E7BC41B927678C4E827F6BC7CA2F4119B981701213936067A4B6490837CE32F9C04740EB2C5CC3B37335F60E7D1C5797547D6DD2171DC93A72FBEF4F6D50
+H_OutputA = 6CE3CF8B83B066613451ED12A63F71AD9FDC23E814B9388716F6D3F690A44958
+DRBG_SeedB = 831F711F366A31B3176E3CB1F6A680E9C828040E588ED072DDF4F091C4F2DA78
+H_OutputB = D7050FCF573BCAF27A1A6BEC34064132782D08950057641F2910470EF50C1BFE
+SharedKey = 793C966A248A06731264599D48A90C804F3F034E05FFD92E9E3B7A676A8B8B3D
+
+DRBG_SeedA = 3122FF338EC4BA0F043EFAD0A2292683ABAEF3D3F395054FC7A00FBA50BDBC8B36176825479FCFCBE702126ADD1E1E6FD1D895F7C9C3864BB59EFFBA1449E1FF
+H_OutputA = 9476177E6602741F30C8E756D0822380E58D07306C882158D7B92360F1F34199
+DRBG_SeedB = 33ACB057C1AA56FE398EAF91406F61E7D6DD59CDD1E2DADDB216F26549A9713E
+H_OutputB = 364F534010EAEF517487B72CA8954798952DF96F962A3CCAA183327E49A4A6D7
+SharedKey = 43160F33AD3DC1AF8B72C4AB7708B3A53BDBD2757F34569B42CDDFD520DBE506
+
+DRBG_SeedA = AD7BE15E971D326A5B33F310FEE3497F9B1121DCB4B350AC30DD594B4BC702CFD3544CC3C3FB1355E68207589E117A7415835144A3040E2542B10953772FF528
+H_OutputA = E27EFFEFBFB644BFAFBB978C103E06A9EC830861BB74A063C21A2F890E6C05EF
+DRBG_SeedB = 1642D82BDE5979D791DDB04CBC57C56E2462BB953C74A00782DC23D435A0183B
+H_OutputB = 95554E695BB9D0756A0D9D3DBFCC77EEA3398885F8134C7ACFF5BF8679A21C5D
+SharedKey = 252CC959CEE1679525AF8888CDF47F3B43549354052798143A160F8DC6F10A09
+
+DRBG_SeedA = 4930C0B21358E877ED3600079DE5ADCCCF2F630EBE4033FB44EF22939D2D7B42EC10817796BFF3E01BEAF5F515045FBF1AF6E5399A372DB62B221CDBD1225CEA
+H_OutputA = FEB588B6FE007DE171675AED289307E43177C1661C3FEA6A39E08B4C92B22AD7
+DRBG_SeedB = F2241110B71FD39123810675EAD6378E8AC1AE843F828629F27C328280704CCF
+H_OutputB = 05265CC6E9649BB50D4EA9F4E4871BED9EF627085CD967AD0E7581B24189937B
+SharedKey = 213CCA507117BF6AB0669C7FF480C4984E4B684F7D91824EBF15E5050B60FD16
+
+DRBG_SeedA = 8F62FEEE486F12B4CF2BD5E30A8A71EAF6F83BF7072F6E5848DDE18D8D36AD5BC012F9F4889D1A384BCAA0B0269260BDAE9E022E1E157AA3E7478F1F2B83EB23
+H_OutputA = 7B8FABFF4034B724F62757BF351A570E28CE0182E40FE292A064DFF44A377853
+DRBG_SeedB = C0344E39359BBB0A4A395F059CE586F48135A9CFA81A557FB2DEE5306F8C8D5D
+H_OutputB = F7DAA8FB87C1886053CA7A1ADC032A62A7022329EDA7374E4ADEAA7716BE4246
+SharedKey = 1A4DDDF01F1737ACEEE10E167DC505D411BEB948AA7C5017F0203527FA4FD592
+
+DRBG_SeedA = 42DBF2EAB9B1E23D9956CA74E7242BB069071C5D3673F7D6A8BC593CB49800BD9B8745C3B8BF2ED4EAC62A43160462338D3BC096306F82F93069B308D88FAF5A
+H_OutputA = AD6BE31C2E0E8136ED983349EF9C52CBA6EDDA44AA061DBA0EBD55B5230FA1BE
+DRBG_SeedB = 80C81429596F7BB0B0FC940F3A8165D1D7C5B3E94224F275C6A1945366A75065
+H_OutputB = 7CF8C05D58EE37E8FD784CF44244052164FF0D3C8C1760D2606D3050319F5826
+SharedKey = AE28D635A1DCA14B46313CD98DC659DA426D2D34ADE60C6D07B47955516B7EEE
+
+DRBG_SeedA = 95E4074C52A01185F77B1D010C4E2620F394BF7C9273A59305588917486DBBFF98A56A3846E1187834DC60C210F6A8C89D88B447C6C675C2EF274A860BD415E0
+H_OutputA = 3FED467BA08FF57697E33FD74AEA44F476C169AAB84D7930072AB39C356E9DAD
+DRBG_SeedB = CC9AECA1E7F657273ABBD058AE32F4CABBDF4FFA2E5A613866592DFC1A434231
+H_OutputB = D894A59CD022B823C655B50374475E2E6C34CB4D1FDC68556D4868AD4141BFF2
+SharedKey = A9F46E86188ECDBCBC332DFF2722AAAC8256C5097C36790A489F3FE7BC72EB7A
+
+DRBG_SeedA = 5C672FB268F1F3479EEABB93220ABB8886A0D4EAD169052DD7CBDFC14F5CD55DCD0ABA60899F566F6AD51556C07F9AE7033E9D29EF2D114D205E37C6A805CA56
+H_OutputA = DAD23455689B0266F711EA9EAA85EBD62331D8A8EAE42141B25DD802AEF65096
+DRBG_SeedB = 6C73695ACE5503E4FC9C22C6AC786BAA6B14208C74030D9EBEF3CF2B23CE8150
+H_OutputB = D8119D3498BE426B778AE52776541A4513DA498B5488BCE8B9CAD7A129CD14A9
+SharedKey = A7BDEA5B4115194AC0095582B9FB04B2DAEC667046E3C6CB8787E0195E1C6749
+
+DRBG_SeedA = D4F256C4A594D2D2CC0F86BB4E6FFBC85893BA4BCE187EF22761560494AEB7DB397D22E7CE31E92415D1FECA84B063E7E1C401A0841EACD751446F91497ED5A9
+H_OutputA = 0E83E2CA3BFB8ADB441E19D6899935A1378ACAA411BB35DA929675E9D9C25A5D
+DRBG_SeedB = 5B416D3CB9D3407823536C642467B57C51DCBD28C630C5B8E443F20A0382DC26
+H_OutputB = 87D0B226BBF6E9759D59855DEFF41890679E3D28B999535CF3163E37A5EAE0C4
+SharedKey = C5036D5A6223010A0EF37202E8E867D146201295C25D2006B47522144C9389D7
+
+DRBG_SeedA = 12E271FB40C23FE5EE23B02027F077DD5EC78CFC4516046DC9FAA163C048FA4C6A6E74721278B1EDD5A1B6E8F727B685E10622915B239DB752D0BFD6028647F2
+H_OutputA = 4F76C3C7F6EB5751AF1DD37FB07D5D8C11FFAC043C023B26364FE0BB8BD220B3
+DRBG_SeedB = 0B2EE1DE3E8C23A2D9DF6E890D29CDAEBC873E227D3C8D7C78C169B88BDABA84
+H_OutputB = EDE17DACEA14B670D544E06BFCB292314E78AC3F91FAA8AE0B179094F12037AD
+SharedKey = C3269DFE2972141F40BBC5610B72B3DBFAC73F2489955203B6517D4BAAB17C1C
+
+DRBG_SeedA = 2DE81FC95DFD7686C5062ECA433B2995ABE8035F83AC521D65EBC0FA0AB74144E2EC9436C05CDF5396D81A2471FFDA0F4D89D23FC5138EA28C46912FA152A7D3
+H_OutputA = CB468BCF296A4916AFFC7B86312F5AA409B46D5D7EFAE66C93B52F68DAB978F3
+DRBG_SeedB = B9A603CE97E0AFF647F822471BF643CA6D9C9EBD8FE1E8017EA8A3827AB23FA1
+H_OutputB = DA0B7AF22B31B60E9E224D173CDEBF2DF4C813C98CD19FCAFF413B71C7D2CDAA
+SharedKey = 79951D4285D639614DCD708B280BC8601FFC594358ED11306194A46C5E48F4E1
+
+DRBG_SeedA = 9FB737735926328C8D8F2EC263C0061ACA17FBBC777F919422B2ECC4E6FFB539DE4C8548FD2E3FA636D44867951352E69D86422BA7DD90F227911D53282AAD57
+H_OutputA = 749A886DB32E74B63CDB0AC650724379468F95926C20E9E541F175AB2F41BBAF
+DRBG_SeedB = 1557AFDF111DAD39B6F34BA2D751A6068290BB163B3B2EDD47E33E3992D9D7FF
+H_OutputB = BD0BFCE551B5AB943B2A08EDE98DF938B3DB382801D1DE6EF0CDD4AA9EE5DD45
+SharedKey = 1AC9BA17CB75FDBF0D96A1B57F9B1031E2472E489321FAE5CE4957531F42D979
+
+DRBG_SeedA = 9C3413435D175AD21C40C822559B75E079ED5CE4E0A1495E7F60D2ED028F92FBBCDD7388DB58A8A84509310D0579DEE22BE97C19F52182595E2F67A5FEFDB90E
+H_OutputA = A1E37FF175CD555C19156E12E15AB0EC51CFBEF9E6D3F7329E1BCE9B4DAB779B
+DRBG_SeedB = A925E4696C9582AF853977E8D77A3DB1AEE0494EED87CC5401DCD565B71DD866
+H_OutputB = 5053723DE5DDDC419EE7BDC8ABCC7F0DCE8A74C1F28055D3688127C446A14503
+SharedKey = 543F94B5632BBF7A4BC0D09925BAA03E97C6EFF35FDE8E590C423D6F08DE041E
+
+DRBG_SeedA = D3F846E3C1030EF8B6A552A003A7D7A7F96DE38C1859BE35B7115A08A5895789F57D684C4C9BE77CAF722A66A7795FA891EE19A825A295F3B81710DD67109394
+H_OutputA = EAC8629EB83954A81E85A089A1A1BD21EF86AD8749F25E04C55D307367F3D3E9
+DRBG_SeedB = FCD10C17EAFDC1BC151426A92DA86CE3EB3D0F9AFDB6BFBDD1024E3AED386537
+H_OutputB = 00BCE40A9B6FC366E288FD052EA444633DC57102D11F7130BA95E8741BB73A0D
+SharedKey = 22D066A817D93724E30493F734C854D8F085C35671CFCDAFE0AB81ED4004E3BB
+
+DRBG_SeedA = E018E674C966C3D037721DEFB1D26A38D432250ACA814E286F6D1DE5A758EE46691D96B8A9AA696714F9C9C828A36D6197DE27D070EC886F1E37CE2DEFEA368F
+H_OutputA = 9AC5FB541FE0D6C6D0712E8AE83BAFA5B47A7C08BC9F23F4CCA4295BC214B2C9
+DRBG_SeedB = E987866B21EFA0B1A746CE08E2625ED5C1FB0EE66F81AE5DE2E558217D149F00
+H_OutputB = F5427C7D43409DFCBA7AF2DA7F7916EF5D0F6C9BCBADB29DE2DE7D0E522DD3AC
+SharedKey = 6B6E655708BCE9769107DC41DE011740DDF0332D46A8D1379897E1096E49393C
+
+DRBG_SeedA = 5790BA28998BFCC2ED05F6A9CBAC755886FE65853CCE6E85799D9A2003911F3085DF41E6C9AD94B06C707D68F5ED19D10F7E35EC112D6508BD909AAAA08BDA3D
+H_OutputA = 1AEE123BA5D2E7630EA3D0C4E86CDAFD59FB170A9EC8D2B81190CC4D2B80C9B0
+DRBG_SeedB = 10AB8BF1295BEA0EEA593EE265F819D56CF1422CF39CE8DEEA591781016B5140
+H_OutputB = 1CA8F844C4C2730750DC884DD434ED98179E3AFDD14A4C21569D43E8E75FFF57
+SharedKey = 5B49DFD08182D4D4AF6621A71058F0A0BB1DCB6896084012EAC4CCE71C03E0A6
+
+DRBG_SeedA = 8318DE4819294932C659B7577138D7B8084321B76E71F9E863C76DAD150FFDC3D09C077E6678257CACBB56E1FD57D2AE5BF59A379D8D0CFDA629E4BF82F1B6FF
+H_OutputA = 3941942AE6019645666329620B037586DA5A13D3ED691F39BF01194916878966
+DRBG_SeedB = 5E698A326B47F2141D4A4340C8E660A7B376BF83A0153A6ADC89E5F3138C043D
+H_OutputB = 158507FECB1FF491F2418078522235E55A384811A46E3EF67ECDE2164E8422BA
+SharedKey = 748BD4AAB088EF35A42D284B0C68CD825DDB8463E2045EAE9D7E5FF6DC1684F9
+
+DRBG_SeedA = EC60B11E35A8CFF147714AA873AF7808F437F445A40AC931945F42E24FAC56A35F20EE95837222FC0DE2ACFFE7F52A746B227D0B9DE22B6B49330A2091314D34
+H_OutputA = D3F9B57C624D14AA925A7CB2C6004354AD9BEFD4ED4B2643A70ABCD928E6FD66
+DRBG_SeedB = 69A4A028C9C2A970D81D6B4DF08A4B6FB6891275F119E8596E9479755B570315
+H_OutputB = 117DD1EA7708EC327C8AF5B106A9797C8029B4DC36B685E0282A4B10219AAC10
+SharedKey = 0FA801F73BA636650F16A0405D32739CE8E672532FB2356A301AAA878F4B0113
+
+DRBG_SeedA = 84DAE4ADA1854B764300EC730BE18DE91A73CF53541D608E1A1696871B45E4EAF7867AA029E759378388A749E1C853DC02407D80B5FCBCA497F240F699860087
+H_OutputA = AEA9FFD3C4D9765908DDFC45CF65282F95640AFCE67CBE4EAB776F552956C274
+DRBG_SeedB = E83EAD491D6E248E877ED4E028B2766FECB3660EE45B26B3BC3DD5EC2EFBDF21
+H_OutputB = 153E446B72B8ADE300B3F597EFE515798F525F00BCFEA45A5F545F09305E00AD
+SharedKey = CE7C8E3B2D4A89ED48901E6FBE4C8B25F572E291396A0266B2CFB462591BC456
+
+DRBG_SeedA = 48500C791F8C5F898E33DD0C97BCD29905F1AEAED456AA0BE68937EB356F1A9197DBE98DEE0EBE048527A4F039BD79A254BB1697D79ED91F12B32978950C98A7
+H_OutputA = FB0AB8257E10794C84BA2094F4B20471BE4E3C70947BB118092C9D8D325203AB
+DRBG_SeedB = CBAAC08AE002C95D01ACEFE4B326A5FE5BD98C7AD56068A78F4094D3447767BA
+H_OutputB = C0C2FE77BC99FB965EF6F05D51C79EA535876FC3A9D38CC01C92EF32F3E5CCC3
+SharedKey = 29EAB1FDB54B83D201AC16AA49D03D65C2EA701513BB23A4CCF71520E66FB3DE
+
+DRBG_SeedA = B2B85484D6B006F42A41D5B4D318B4FA11490DF3E0897E9ED84EBC5C18B1219FCB901069E1C18FBABB1696D9698E1ABC0E41B4DDDB5BCDE4DA612FC0D29318B2
+H_OutputA = F0164C05343E08359E1AD4CA0548058904974855ED5A99AB26513C0BCDC22253
+DRBG_SeedB = F3D6A1F0FAE07D0F3357E3C48377631FFB1752C7D08B8048649A31C256EF26D0
+H_OutputB = 7F84C03985BDF6D64A76636897A8119593EC38783073737C8C5E0104BF41A393
+SharedKey = 4E1AEBAC2DDC6D54EC1FB417635E51BEAF518DE57981F1E3412DED2552EF61F2
+
+DRBG_SeedA = 274B1239985C344067284AD33D21FE61BC1D0569F82B4339EE9BBDCD630A288F11966DB8E74CD2607331D032C5591C1CEC57483D482FB2BE383F8C27127BB22F
+H_OutputA = 07A12D99E9C002E15656E3CE2AA8FC24683913A70DF13B039A5977FA7A4CDC10
+DRBG_SeedB = 2099529111B80A71F7A89FC56D9A8A50615C2FD486B3173FFA03338C81209DF1
+H_OutputB = 2EA843852F53979879EE6B2EC5EC09732D12D202D6F8814C758266328D27ACF1
+SharedKey = A8B24CEA80FAF3C324EEEBED88CC6D4EBD4371C2BC78C682CB264460A25D0A14
+
+DRBG_SeedA = 9C44444671955112C974972AEAB07FCE04DBB5DB4A4ECE586002705B6AD9F77C5799F5C0AEC33811508FFED3BA6F0383057D8578E7D6ABC0E7426ABC0DDF5560
+H_OutputA = 24EAE0585218704F463EBB017AD70FA5DAC0FD2216E4A2769FA0361D5291CD33
+DRBG_SeedB = 3B1CCFA7CD8216DD0DFDCBA72E3A39864492E35142D5FB92B207F6E1798F3632
+H_OutputB = F0002866F1C6A86C8A5B20253309800934AEBBF131469F61287F0F4215456272
+SharedKey = E0750BE063572A62C0ADCEA48A66E5FE4AD1F7DACA479F3B93306186CBC627AE
+
+DRBG_SeedA = F4A8958D9DA399C41DC0E8F3190DEF0F5F7F66DEBA9AA0C4624463CB5F13C8D189D16CE213A5BB6FE5E90E8A60C9C36DCE4F003CBC8004F4A08BDABCD76C0265
+H_OutputA = C41DE14C6E3CC4ED99B427B7B3639E7EE75A45E2C6481456E2F8F35E8895DE41
+DRBG_SeedB = 24EFA64F662A2695A1EBA8069E4181DA2AAF1EB70F9554FE0E05ED3CE02240D3
+H_OutputB = CC3198922805B153C2E85D50C7D9DE3FADE71F7A7CDDD77109A5547E0CB03BFD
+SharedKey = 624E8204D1E2C01901DC89081AFD988B02DCBEDE97E618BA3014EB6A474D64FF
+
+DRBG_SeedA = 09438F9669C84FC9EC46781F13DF53B09B36D9657CFD2C7E8A05537E25937CFC0F09D6EB4ECA84C69DFFF0CCF7031FFF5293D584643651D97A597FA096CB5F02
+H_OutputA = 5D61F740492504D1F2F05497D0E83E471C9060058078AE12AB5D4BD1B52761CE
+DRBG_SeedB = 6CEA0612554E5C916E1E07045759F87BB6F4CB6FA711328DE868A968A0C7CECC
+H_OutputB = A8B4AAFDE6D944D7A49252087A8476B87BDD3B4E6CB5F6FFB8BB1A4E31114C32
+SharedKey = 79C6221D5E0A53ACF849AF512B627F02DF1686CA11B6377820CCB1F10F5F73D6
+
+DRBG_SeedA = 51C83C235EA9CA9BCFFAD40861910B7D0CFA8AA0169A65938D98F99600A3A5430B00977C4A071E2E8C72B4676519EB818615BD90C4E7DB8F3A265E12239DE829
+H_OutputA = 59D52A562FA16A27815DC09521ADF1B526BF99F06294D4BBE57BA1DAD9C8BC76
+DRBG_SeedB = A7613BB891CA83B32C06A4CD777D5FDDB98124E6D3F990EAF5DD340C7B56ABE4
+H_OutputB = BEF9213EC79C7ACB7964BB1A3E0D5217BA79B7F0B6116EE3B2BEFE16078F0356
+SharedKey = F833FD6A82D237BE07E80A984E0854D470077CA2EAA0D4AD252F70405D291D2C
+
+DRBG_SeedA = CEFA0C1E13D2E25D1A166EF7408D21D2329BCB3A84D9D0484695FD006D05D0BBD290C8CA8197048CC883E5911E4BF5FBA412CB7215AB040CC4C7E82A7E67F269
+H_OutputA = 0D58CB529A9249916ED84F7B8FD8B939DDC6A0EA8FCCE11512FDA6CFD721811E
+DRBG_SeedB = 186DC0CA083716C1FBE0F9DDB5852C2DB3E9B9BE9AFD09E665276D0D85773F70
+H_OutputB = 7D1771DEB573FEDD1E5DFD7C9558F0C5BACC51831580BDCF6AD07E2B61209436
+SharedKey = 0E92119FA1F2D07D5F6D64CE36E3E64A08AE4B4348A3C5EDB7E85DB888278B1A
+
+DRBG_SeedA = 4E8C44892C35D682154B4E89175F4182DC7FDBB8D831A4239EF72321B071438BA270637A0105670B9036B00558BC2562911EB35ACB3683DF0319333655C4E35D
+H_OutputA = E882DFE3DC314207C5781712686F95805F0006F44EC27E0C25FE266970723C10
+DRBG_SeedB = 33A92A5FEB35CF2BE98E9855EC2ACBE3B1902FF879BEDE858DE9BC8CCF329BDF
+H_OutputB = 5DB27085087B57D3F2C1F66B2EC0B22AC5EC935B1AC037EA2A23347DBB14BCEF
+SharedKey = 1A80BEC90D1DCAEA03D753952506F9EED1B99597192E3F0E46B3301F6319ABB5
+
+DRBG_SeedA = 37128A0596E437CC1B88DD46BC49B23DE4A548580C3C9A07666FF5EDFADF98E4DDD20FB013E356C3EE7CF71B7F4F25992232DD13FE320D112CAAC175AA7B8B2B
+H_OutputA = DAA5CF113D3FA0820BFF77B60AC1854A41E372742D77F18E4848A3BBF409FD9D
+DRBG_SeedB = E64743F8EFD60E6A807DBEA10A69D3268F108F884AEA52C69583E604AFAA7CB7
+H_OutputB = D290DF48820BF9C3B7FC9071600DB7B81E32B86EF1C6D2D1BE149A25503EE44D
+SharedKey = F1D958049444681B7295B02EACA4909A29367C2AF7C0177102A30ACD41EDC28B
+
+DRBG_SeedA = CE95AC8348273E2354AD85C42D79A0ACA91B3ABD153E4239CB945E096F568A90ABC07F37E819C9170AD309EE36D1658A15530CEDB094CABD976207FB3CF9F4CC
+H_OutputA = 4CB3EE7C78204580CF4D66C57B79253760BB2C7FCC62A731ADC80BCF727F640C
+DRBG_SeedB = 56B9B2A37852EB82E76CA0A74A5DA5021E5FC29329813CF198E75319110AAB1E
+H_OutputB = 01E246A5E13BC3A18BBDDFFDCB901524FEE64674B5DC330CBE4B50262E3FB58E
+SharedKey = E8CD5DAB06D3FF056C422D87C997B63466AAB4CE27266D0AD2FBFE19FFE3F420
+
+DRBG_SeedA = 65E85002A0F0F09F67ECC276EFD57DDDC127FC5075F7599694D1BA954A8331EC0BF909DCB81B449EDEFC161DD8F6FEBC8F43F6A8F632972CEF068F3DF853A2B4
+H_OutputA = 44A37FDF80AF38DC768609D79AE6CF42EA3F71BFEFA3A46D915E7081D06BB1AD
+DRBG_SeedB = 68533BE1CD3245D65B3C81343AE5284C2E107D472340229D516306937B1EFD58
+H_OutputB = 5954F322C1455FE12A5C59D5EFF475E46605E57AEC86A5A7CBD5A713CCF6EFC0
+SharedKey = 2D3CB42F7EE95D727A20927A882857535C02D855CF5079DEEF0D1A31789FACEA
+
+DRBG_SeedA = 448297FB50905BCE5F4AFA84BD431B0EE6B48900BFA409C925FE90E420728F05FEDBECEB7CBE1B333EF380040688EF1A611567F9898A7C2FEDD4304CE23EC402
+H_OutputA = 2C093847B606270DDA70A4DCFD97A3010E932E2A1D901C167402FFA1BA32713A
+DRBG_SeedB = 3C8049FBC5389610819811983EE8745F78B589B828E5502B19B4703CBE704597
+H_OutputB = EEE599907179D75DEEACD634E48CDB6920517616EAA99BC71FC0502AA5DECB53
+SharedKey = CBFA475E26964425A281725C3AB2C1C3F4AD7D9EE31B96FE41596D012395CA7A
+
+DRBG_SeedA = 3A81AAE4F828A1C0C02D33C8FBAD7EF068EBAE5E337992411B20699C1FDE67DF7F72694046088240C3B7A7EA55EB599C06A1F127364382F98FE4FED3D1A3BEF6
+H_OutputA = 988CD4BC51CAC9EFFDEDE3B9B90090E4D1DADC334C161421EDB34A177E482A0B
+DRBG_SeedB = CC8BDB8874876CC42B9E1A0AE2CC55D2D79E6402A7DC607907CE04D826E2A4F6
+H_OutputB = 100D9BB66588CA021CCA953876E89EAB5D33845FF50ACD76374A7243B7FF824E
+SharedKey = 608421BC459836183EBAC28DD187DB8726BE4B0F464D1ABD18FEC83C9EE9C5F5
+
+DRBG_SeedA = 8FEAF71760D856710B05507A8E4CCD7ADC3A213B4A8B83648653C49C512A4508A820530C9ADBCF0066657243320DEA3353855E7CCE470B19552248A67AAF1F4E
+H_OutputA = CBA5A9DA4920F2D8B69E7C191AF07BD935E92ACC1AAA0A1DB67974BBD78ACC94
+DRBG_SeedB = 3AA72FC3F607654AF86E7E53655242026808D0D9DFFAFD658E5B00901B3162D9
+H_OutputB = CF6E30A12FD3AD01ECF72E872092406FB5766025989F73922E99868D8C7C599D
+SharedKey = F47F26F89FC5AB4C3401A9B0E37186BA70FA00CB175E8B39EEA35849E58B21CB
+
+DRBG_SeedA = 98480E7A1E7C7A51A1A08CE6CD7C57C51246D6FFA334BB6B9AEA2C933C4678E830776462AA88338FC25691A8978C62CEC1DABBF91C56353C7708110EB1BE7F5B
+H_OutputA = D38333F9C117FC7EF02D99ACA98E9C436BC84229EADA332CB565977FE6D702C7
+DRBG_SeedB = AAAC71731103D13A78B25F1A3CA99DAEF4DDDB85C37067D4F7014F097DDAD412
+H_OutputB = CCBA9F12DF8118D1DF45371148D41B65D56D212AAD3FF3FF71BBB7C713D56020
+SharedKey = C96CE0ABC0EC2739687C02014C2C5224BAE0EFB9156630CDE3A61F6AEE3928DE
+
+DRBG_SeedA = 3FC0FBD127EEC8823390BF3B145DFD3513FD54D954B9D09EF809D2BA0B6EA2F784575FB3D68A0B4E54CA0A0DD3E4F8D1D4A00FCA92A7BEA9716F26934DE580B9
+H_OutputA = 79EDECF88B5841F5EE3DCE14D46A0DE1936F3C64842AA6B59E2DA7B561C3144B
+DRBG_SeedB = 81529CB2807D3753DB4CB13E149EFEEFCCA203219D3A97F83693D17FB3EE932F
+H_OutputB = 128CDFE787430816EE4E6611AAFD465F1EA5DC148309F05F20D09078C23E2A5D
+SharedKey = 5105D4C55BB9B1C2AE7B81203A28850C89B28C5801AA423383708BEC0177EE8B
+
+DRBG_SeedA = 8AFE5E39A6054EB1ECA0F5F96441F50C3BD50E7FA2D2CFA18378544F1D8ED1CE2D77CD8620A697D9F844AA6C5874C3604B62B4086991B783B680D411AED29E2B
+H_OutputA = 83025E6C7E92DB712DF5741C3F4E0D2CD4631C18F5A81FE65A2A0B48D1B5B03F
+DRBG_SeedB = E1C087120DF7D7E81A16737ACB3184F12EE8A8D80F3E323D6CA598D78F976FD3
+H_OutputB = D261FBF21A7FE23DDD855A09DA31FBEB95DB5133AA5E11016B65A86F165C09AE
+SharedKey = B39BE6A45D19B70A28283AC68B7B9D8B639F5AB472317FE97AFC04DE2CA58226
+
+DRBG_SeedA = 49BDEC0983778096C1A2DBA30A6983E0EECF6786F50C4835404DCDAE5BEFCF8120F74403D17FAEE80E44343BA96D6EFBF24B169CC2BAF62BBEC94A14298C9038
+H_OutputA = 12F1F57F43F3736BBBBAC3373EF36CF14CA5864714D8B778591988E7ED9DEF95
+DRBG_SeedB = 2C1DF4FF2CE9A85CCB4D8048718BB4C40CFE4CD83953F075596C5F31D3583228
+H_OutputB = 1F6B41B1EF73C9F14A8A21F9D1834185613A5C74D8431F74A55515884051110E
+SharedKey = 1CF6D516E0A31F05CE3E0E07234D9C372E1E288637730579725BF9BCC016E28B
+
+DRBG_SeedA = 046E4BD035EF1ACAD1BC3DE9AF6C207C4D24BA91FE7895E5FC90BFDBFD670A0250B531F72247467FAB469899311D307231F758FA2B3FF6F5CEE2FA36DF93FA52
+H_OutputA = AB42F06501D250717B3E3865105B5BB059F91C48F7D367DECF0E4AF8E7C69828
+DRBG_SeedB = E9D38B9232853A5F7952ED32A0AE7A5253403605C095A6DC1B5C3F6E7A5C538D
+H_OutputB = DF2D12A7F577527DD4E6FFDA2880F329BF31DB9030329AAB5DD60DA67DFE9844
+SharedKey = 36741FE3A13DE35B37E89539511C225FE1936EC17DD2504FB6C7A4ADFED6D98E
+
+DRBG_SeedA = D1ECEA0D1DE9E61BA117841EE612CB43CC033226A7F8B86058EF97939D80DCF96FADD81EFB8FF5276FDEFD9913126136B417A762F6D3952560F756294C289267
+H_OutputA = 60C58F3DB4334A315D99212DC89039E3D753C9AC0D4AE40C7996E5768F054632
+DRBG_SeedB = 6FF05A0DA2F74D5D7B01757457B152D4864B54583AEAEA04E303CD64CF4E9139
+H_OutputB = 258279A000FD709FB83635F38B2FACEE3511DCFD6649F8E2656162E777315D26
+SharedKey = B48B2AB2EDD8BE4D2FC024F80D8B61DEA103DAC5012DC4814ADEE9612CF6BFF1
+
+DRBG_SeedA = FE03CF52C2B8E9F959837F5C7AD0FC85862596FE76106027D2E04CCBFA1C508EB745B1CBB1E586A3BF03FF6EA4C2F6891D5986021A41EA46B937EE7D7C9BB066
+H_OutputA = 77128D2314E1C04E8BDA78DEE81F6604F917A1A59BBCC7CC4A5500E74E3FDC67
+DRBG_SeedB = F4134946731C393581CB2762DABBEE5DCCBFD986279DC14D765576BEB227762B
+H_OutputB = 52BBC9EBDE46F0677CBA6ADD1D70C2B52751DF000D486E15FC551F1A0BEBCCC5
+SharedKey = C24C29316037C1A719065CAC422F5741573B7F8B7E10A03D397790A2DD7EA735
+
+DRBG_SeedA = 334C37DD1CE6D0EC727FE6B9B69487282D2EEA62DCBBBAE58397D8C27D9534E24CDC5468A0C07B88368BC23856E5C5EC095796D0BFEB454112C1C2CB216EA3C6
+H_OutputA = D64ED246F601A5E49EC6AED2A3142CA8E06E18A73B3BA207558980FB00388F95
+DRBG_SeedB = 8A594AC2B1891758E985E17A0DE3341D4AF9F2F875333691FBA457A596D3E816
+H_OutputB = 1815A3038202FF835054C7CDF828653816B88BA5D31F32581D4A1CB6CF4D4B07
+SharedKey = BBEECA4B6D49E091E84C6DB56F845A738AE2445BC21D02BC066D58DF6357D32D
+
+DRBG_SeedA = 9EA7828849C502FC885AA96CA765B9BCC9A024D66E566C3ED68BD71B8A60D51CEF01F2C0B7D8BCA8122F8A35EEE85B63D33D3C4808C5803E913B711C251FD91F
+H_OutputA = 4F3FD49B4B309E582412EFB5F01A17988839A11112F599BBF90087805246864D
+DRBG_SeedB = 97514B539389F85E6521C2DF177A28BD26EFF1BD17FF07348855E00FF7DDFBB2
+H_OutputB = EAE4726CB6D5CB3BB8737415E3476B0D7DFC5023B700176B96ACE2AC0C21DD16
+SharedKey = 894A0920AD08F81088A1FA13F32F5F12C762368A358223430EE01FC3D036B73F
+
+DRBG_SeedA = F4AA9DA0F1E81F13968F76C895B02609FD164D1E1B94AF6096D5208714039406E2666DD711CD0120E4B51BE1FCE4339652E5B2A0950EC14C63DF3B6FE5166444
+H_OutputA = 36A5199A11DB52D0983372218FF09AE6F7FB3F398C464E896F70C5E69561803F
+DRBG_SeedB = 3D651A2E8A57CCD3B3B1212C6A2759EE14B4207E926178F6BB849AEDD0D57118
+H_OutputB = 717641892DCE7BA3585458F1E1CDBEFD16EA250843DEE37AC485F70C50786B01
+SharedKey = ABC97909B1124898F8A47EF99F142E887C907E896AB3C5F289AC8128DCC3C022
+
+DRBG_SeedA = DBD0992CD32DDC997C47F6334D7D694411ED479E06D486DB5971788948CA6C88D84244C3107638B5C90265C0F0F76223F00205078CE1860597A8F00F8A8AA66A
+H_OutputA = 84C54B948C97D1ADFFBA4E8BF12A50CE02CD99AE7739F708F89E949A1FB7C424
+DRBG_SeedB = 12F3327DFBA528AA2441E80418A5FE703E2A93FA1F8CE6A3D56A61EAD4BA817E
+H_OutputB = 324A1C5DC030215A9F9DEF5D58BA5E225DA831CDBE3EA029D748E61B5BBB8C31
+SharedKey = 6438A6E671BA26648B45054E2A6A940FB950FD74D49793F1CA1FA64CEDFFA2FA
+
+DRBG_SeedA = 2167619EE7ADEEC8505B9FA23A86858CA60D9AE641FFD97202C2758966535411BBC1DCA0C6AF864076AC7F0D48D8B80FD7AAB5417253E72354B773810A08B24D
+H_OutputA = 50DDA3A5E50B411BA86DCD4E4A0A26F9FC58F64E7917DA6E2CF48B79CFCEA069
+DRBG_SeedB = 616285AF19AFE9D1923E9118CB1CB009E5A4E71C954FEE0A17C81A8791CDD90A
+H_OutputB = 448E14868CBDF586883FE581399BB1AC9FF79BD7475E230237C29C9F6766D883
+SharedKey = 51A869275B6B2F44C75F24168022657A73F3B30B10988426EDF5F44799B93239
+
+DRBG_SeedA = 305DADA081D223D4BA4880D2A18B7653F254E7FAF0D2ECEBE7E627AC4C1945C8DA660596A491594ADA2227479A169363598283E415BFFAD80AF5CB2A3A62536E
+H_OutputA = 12C962295286EC7372804B9ABE1DC5245CE39C5042E467C591B4BD1DFEDC2C1D
+DRBG_SeedB = 0330573CE4ADCB19A5BA90FA1E09D740F6594A37DE9F3FD37908D4BABAEB35E2
+H_OutputB = 90E1FC994E52832295B3097D99F1DFA42BAEA280427457FF64CD7C76BC39AAC2
+SharedKey = DD610FBA4A0182566515D580293B1B4DE05A50A08F4A41DC00016037CF38CF81
+
+DRBG_SeedA = F0C8E886FE47CC20084F87021FED6DB9EBFB426CBDAB1DA2E62B73F696840F35620CF2282E00584BF86DD709867DB52656EFD52F01C7645074009CFE2F2FDAB4
+H_OutputA = E569AAE8545B31A9AA1BBE11C3F915C220A5352557006F6C6AF5477C56718132
+DRBG_SeedB = B6E1BD933920AF65571F4E236B4BB60FDDCE429867C302FF7284D514CA35140E
+H_OutputB = B3292A7E5C27787603F80C85521472AD4E2AF84420E99BA45E68E7E3933EAB81
+SharedKey = 812E82809BAAE8177FAA83A01DC09A27D7637B18E2C6C05F0BFD15632F37603C
+
+DRBG_SeedA = E8E10463BA7AF6A72B037174A9908885544E3869D2A7047E500F7BFAB175B8071C76B5BE5FD046C2DBBC25C9B7DA0AD7302B235471373804BCCAA60520248909
+H_OutputA = 42436B05DB55894E376599FA591E0B3A94918FDF0BDCA6E166B8D1AEA1A5BE66
+DRBG_SeedB = 8F9ECCB617962941BA680086D147821929BA1A83202350E3F07A45347F0D3461
+H_OutputB = 1E7FC9F18B760CD4A2E24DF9AB53163F39A132ACBDCB2C0C863386185581026E
+SharedKey = 118EE0F16820645DA369D479E108256ABA694F2A1490441341E49B381699DD11
+
+DRBG_SeedA = 317B55D90E97F3C15A04F987D0FFD4031E079A7A63D90DCB81258C55AB532584FAEA1F97FF5F6C77F23979DFBA8DA2AAA9FF5682353ECAFF54A9E6639E7D58B8
+H_OutputA = FAAA3B2C370025E50416EB36E73675F78597D9AC21703FDE5494CB9FC282773C
+DRBG_SeedB = 45424756E11112A4DBD4CE623676C380E2F8E7ADB91CF79EAD10449656FFB524
+H_OutputB = 6E21F56D1AE4DD23D8EF6B7A22A4225830F333F16A0F15F2DDDCE3878A39A850
+SharedKey = 36D22AFE5F44ACEAFA3C7BE7AD69CA0B91B2D6857B156C7771BE69109A0EC5B1
+
+DRBG_SeedA = E76E0E295226C443697A311C84E2AD3321C13DB098B625EDBA9D1B82EAA2F5A46F820B0F7C906E69C915FEC45A8E2B370741251AF5A00585A12C83841D99332A
+H_OutputA = 67A3E1759787EC829C10B084A335AFC13C976582A37B23DEAB59A94C7D43090D
+DRBG_SeedB = A7BD2D5F0C99DEF16A734E802765E2B5BC53E4FB56793B171464AF7E573E0485
+H_OutputB = 9298DDB7015A60D52993BA9CCE3930BD815A1763C7B95E3D26DFD891531630F8
+SharedKey = 3E15CAE8717F81BA4ED64873B5FE51B3AF453A819F1F82AEB5F032FEA14C5E9C
+
+DRBG_SeedA = 5B9A36385038BC2468EAC493D6A15ED283951AF6EF2F12581286A215FB7C98CB387F2D992C0D7B2487AF9A29064694C70D0E26D0C2BF2610C12FD5338E77602E
+H_OutputA = FEC9669A383435A134D07611AF5B9DC3EC7DA43CE0E26BCC9BE9BB282100705E
+DRBG_SeedB = 1A1E034379E2D4215AB8A4ECEC78A3F43B00B51F93AF474B1038068A382CC5A1
+H_OutputB = FFCE04ED83D98BE3A810E34892867C727CE1206FA22A23A73C0B8A9212789944
+SharedKey = 2C5DF498956160DA2A0604FF17645D54F73A048B8C0E16C54534EBD3408A3764
+
+DRBG_SeedA = 03320F43D6B74BB3A39688A87D2B300466CA6810FC744411C37CDFEF5D0561B3413CD6CD62D20CC85EC9AA5F8EA071CB4CB5682838C7E3C1306059D4714C6AE0
+H_OutputA = 5C95A935EB2740A8632B5F4BB85FB1CDEC3BB7FE5AB443FAA864B287787D0F63
+DRBG_SeedB = 4FBAFB8717FAE32902FAD12F8AD6B6497CA56F71E7B7FA1EDB2AB6A070D268C0
+H_OutputB = 2475905E1FE3F25920AEA1134AC3639DF8D683B3CF708BD7AEFECA3601C491E4
+SharedKey = 3B3582E29CBB358B70281E1E559EE7F01827E9E91133A2B1CE08DCFB018AAA83
+
+DRBG_SeedA = 47EDFB4F718B35D375D513479B3D0C4CDDD110FDE55B74E75E0C99C0011D7B21A3D19E958940F2A32FDD86C4C3EC03C6D61FD63551063F585FC5D33DB3BD6621
+H_OutputA = 824B9627F2A5390864A60BEC2508F1CB25C8520B4838E71EE1D5399CA542162E
+DRBG_SeedB = FD50268FFB42122F8902600A1F139AD3D275CB98DBAE24703DE175B8A3A45389
+H_OutputB = E27A68FF37B3DCE99808361D7251424EE0B5931FCE80C5A4E0520531AA20D0DD
+SharedKey = E05F038A1BCBFC62858475C803817E17F8F8BA9DC68FBD3446EB98457782E28A
+
+DRBG_SeedA = CA4ED6ED3322E7E57FD7BBADD38B765FD2C271D295B4B075ACE3BD387DD6AB58D3E48EF4AF1A545FD4E7FFDE1FFCF29B3F2E815081F50FD56D9668E9C1F85223
+H_OutputA = ED7E77AD32EB7DB223EC6E58869B0653A7B80323CEFD7E0C825D3F9A55E4E431
+DRBG_SeedB = F563A9A9F0907196F24D2C3FEA279AC82F3DC45AB5B036E2C0DCE678230AA6AD
+H_OutputB = 84261E580BFF71089DFAB1BC9A528D43C5B87975F356C656DF0C74835FC917F3
+SharedKey = 1E4A1E2BEC5E0E845757FCCFCA3CC634CED70AF43C1109194901BF3212353083
+
+DRBG_SeedA = CEFD8A688BF56AB75AF165374FDB6D406D99D76E47064230EC1D3F7C230DF12917E4B671806EA3A62B24B79AE2C829D470271A05F7AE00B868B2EF4A3D41D67D
+H_OutputA = E42033CF0992C6D3EC93275CD4CFAC4B94CE199EA1A46B311A9DA9518921020A
+DRBG_SeedB = 407C0275577A5348F40D43E37CAB67F473BBB20AE784208BDC036BD3243F3124
+H_OutputB = CED67BAD9C830FA4AA9CC47E0B93C378B5AA3092C6D6A4353A0D48AF1854208E
+SharedKey = F7F3ADE99AB10360965033166AFCBF4B9C2287317497ABCFEC690792786FDFBC
+
+DRBG_SeedA = ECBFCBCFF82DC939775C46BDC15976B845B4696199CDFB132B64A5B1FF7DB211C80AC92C82FD8C85F5E7CAF2A15C7E58F0784DB2343324EB33336BF0C3746876
+H_OutputA = CD14D5E2F513FAAA663A2DED057311A6DC90AF2FACADD380FD911526D261A09D
+DRBG_SeedB = 1B0D2F61B199F7E90D27AD87BD35F0429A1EDCEE1B8E5360296D8862AD6D5BE7
+H_OutputB = C5C719C43F7E7AA0350385519BDB024CC4E73F1C29E19A36C87FD9FA0F5B2D9F
+SharedKey = F977432BEF96B791CE85DD2C4FC444C571473A77C8CE72081970A765AEBC90DE
+
+DRBG_SeedA = A51D4E6D84DA07C0C5D5DFB4122E9F2FA85392BCBA2AE0262D16B865888AD1FE02D1DACAE3BC644DC7D3578B50C7574ACED7A46DCDF1A5C878D7C69240F68186
+H_OutputA = 3B711D9F12CE0C41405C5B532F69110A692E0F8662F753360FE0C3212E44CB76
+DRBG_SeedB = F4DB6432DC27B616229D49783A9A6C45B0D37B4340083EC6409BC850999A33C6
+H_OutputB = F8347584AA7204B33F79A9754BA03026542646A58FD70A4C381F8F5BC5D98FBC
+SharedKey = 3FEF20A5DF496DC4C6BD95EEF728FF21226C5356AC06313281B751ECBA3FEEE8
+
+DRBG_SeedA = 757E6CBFC27E2701466F6DDBD45F48052E5FF5C0D11C13FF4BD7764557D6085F6D51488B23EC954F8D8F864DAB58BE769A1B72614D8846502EEEDABB728509F3
+H_OutputA = BC546159BE3DD2C606568C6A833E0842436902E2A0E35E109F1956BF836DEE8A
+DRBG_SeedB = 9CC583B6EB1A9C07BA02C87B18A7132C2EFEF3C63B573E401FF6F30D1F713FBE
+H_OutputB = 74AFCEA4367B297790E1C8A77582F307787FEA1F11FB4E9F0F9E9AD09D9A506B
+SharedKey = 6A61DE34B7A3CBD6FA70D9D4449FE981B7A8FD3683939FDA1A2332D0586E4717
+
+DRBG_SeedA = DB3F788F5FE8C064CE937CFADEBFA93D568C1B0E00E0EBEE6AE93FFF9FF95B26606523B4A3A592240AA1DB242CEFFAAFDD0ADC18898106F738CD9F341AC79C1A
+H_OutputA = 7CEEFDE0713D09973D8A54A67779DDF4EAC7D95BECBF41F688E112BC2190F24F
+DRBG_SeedB = B6FF52EE8BE8EE1F6F97A01AFF5CB9CD0127961A04558F15552AF66E24E099F0
+H_OutputB = 981D8533F49D46F0B236F4EE3E76F5749A63788473870793712DE21CB334031F
+SharedKey = 88F931298C9E6D5E1E7786343222C3B8125DF4B5357727D4F8D7D650C5AA95F3
+
+DRBG_SeedA = 4225C918C88475366A3F6B34BD4FD7E10B1A38527DAE12A2CEAA0C137D06F80C902F467DFC7C08AE368D1D4254D6E9FE5653B8619A87B7B3A91190DE368BDB31
+H_OutputA = 8B12836EABFF1564A467E52706B1AEF88014712EDA1F0AC3BC38982AD269DE6B
+DRBG_SeedB = 80A568DCDA1AC6F6CB37EDF5DDDC183D5DF2E5E345E3D222D80208FFD5733C89
+H_OutputB = 630537A451D20876AB78DDB3E3BA499027A08F03E04C0B1CD121C0FBAB4271E6
+SharedKey = 8F1FE2526CCF282F284142E2245E2454E7F8D22B325FA2B6B1472CF24D8E6E6F
+
+DRBG_SeedA = BCF7B033BFED21238388C169196BB20DB0C80BDE8860E5CB87071A3A49E01FB90AA97494B056CB1BA8865ACDE6B54E6D5AE9A7628A2B01C07D4B907093279675
+H_OutputA = FF1CE60445799C2382B2BF5E45C627E2A1D03C955B07D9A1F02D321B03C62F19
+DRBG_SeedB = 0041BF61CACB651E39CFC2155C29F3DC869D3AD12851AEA147C074E3E66E280F
+H_OutputB = 2A18DB39D80C35FCB1A6A63256B3BB05580A78B4D031410BF23EAC6D9CF80748
+SharedKey = 9AA85045B44AD6ADFC30F4F7CDC6DFA4122D7B3249082FF6AB4C3F0DADEF5A89
+
+DRBG_SeedA = 598E02F4B2436D444C491ECC2C809622729E65C933F4CB519C3B37C86FDEEB7C76C6CDFA873B9E37EF8BCEC0BE36AAB664A836A7A8C16BE988756BEFB24A64DC
+H_OutputA = 4673AA63640730C1A945B2D0F7E9D94DB05CF8B530F395A8B498C4C13A2BE97F
+DRBG_SeedB = CDDB6B1D8B2F806F1D242502751CAEE31123D5CB8012A1F9F66707A135DE878C
+H_OutputB = 85340686FFCDBB2A81E056F72FF11983E001A8296F574F432651A669B5D0FFCD
+SharedKey = DB61B2964C32A0F7635C5B191FC8A96209961D786D3D19CA1F0E3ED504526ED8
+
+DRBG_SeedA = F8D41A358AE50ABEBC11F36DD3B3F8430A7E4EA0DBEE21350374189FEF9072B1A3BB60A4061BDC62637FB82AC2051719D6D524FD807988F8C651A2DC6093F9B0
+H_OutputA = 826079E5C40EC4F4061F9580C176930C81B19A6517008E1AE049CCE5B7DA69AD
+DRBG_SeedB = 8CFBB3651CADBD2A11F704AFFF12856D91C46D5DF1C29F1CEF40939303F3A63A
+H_OutputB = D3B7EDCFDBBE2155B0B25FB5EF52E0365ABD004D237E05DD221584C14CE5768D
+SharedKey = 6B0C4546F72C9B8F213279880EECB4D0C7B83330AAA227655D96010578B317F9
+
+DRBG_SeedA = 8A26F89A3DE9C3EEA647FBB795B1BEFF070E12D1354DE1A007EE47AD728D11404D1861B1CE53887CB2981D97EC8E025F2B06E0763B08CCA6E6E834EA3D34FC35
+H_OutputA = 6D42FDD9F797AB8DDF09DE5DCDF4FD2B7A24AFDD6B3D1BE954FB9A9C9A6A10AC
+DRBG_SeedB = CDBD5B29676D6381ABFE5613A89E661D3D2494D3E5D26374707F5E60CDE8D69D
+H_OutputB = 141B1A3332ABD6BC2E115473CD5EE0AF3CA4C4BECD7B8AFBF3B9B60A3C83C286
+SharedKey = AD5FFC2D7475371A3582D36921B337AD253AA766B18DD5843C28C286C4F4E1A9
+
+DRBG_SeedA = 19CEE4D56B6C1A3E91FB42DCA127DF4A6A9B05BBBE02A79490C1B32B0B5102117404A3B0074E97CAE1483C4390A172817F232326892A898ACD34ACB67FA0EE3F
+H_OutputA = 6131146E1B81073C632DC2DC72E1482D900FA308CEA6E445149271220B27994A
+DRBG_SeedB = 532E2774CC7A1F574273FB1C29391E13387209AC6258EF181940DE61DF9A50C4
+H_OutputB = D7FFB3ABF3569F5C1FFB6B77839AC44E81F33037D27CC5EBBE981E5F83ED2363
+SharedKey = DB71282B6CA5D92889ACBB15B64202B6E092EC55166FBAA3420F8B99CEF46F1E
+
+DRBG_SeedA = D323D06413CE0F8F30AEDADF1B59AEA45871F44D0CAD916C7F26E9DA1D39262329CA444A1158DC6308D4D3181DDCD4D7DBE30101C1FD1545646FA54EB64EF3AC
+H_OutputA = 197F58C8F43F71D2E7A11CC79EEF6657054AE74D0EF1F1CB47DE24C84D5B590F
+DRBG_SeedB = 962ED5E0A5B24977DD0E6542ABC510DED98CA237F8B29372C37F6D290CD0C09C
+H_OutputB = E3040E169BE2DE95FC4D55F027C3CBAC7492EC1D56EEBC966FF479988657352E
+SharedKey = 7DE273041E8CEA6A1F2DFCB6108A3AE7A2D70DC0AE1EB89E5825EFEAEFAE9249
+
+DRBG_SeedA = 996C4BA69DD185F01D49C90260F447D4E19789958C1A669582623C6EFC22D30BC32564B5E36896739399665AD7D2B573CB970283D7955B425BC0509B9F979387
+H_OutputA = 1ABEF613CC58E4768E669B4FC8E1993C9715DAB7B349227236E258C24305B709
+DRBG_SeedB = 99DF17D13DD44832FA5C0103CBE120B01B33A071904A0965970D0F7DA393541B
+H_OutputB = 36ED8F13F05FA687E6F9735F9E8A8898E607468F089FCEB085B4C34FCE1C8848
+SharedKey = 44C32A2153CED7FD45AFFAA75C7E177EAFE13336329A7CD887E99690DCF646C9
+
+DRBG_SeedA = CA9AB360630C0FD0DFC2D235B73ABE519F059C831A18AED18723A167F5907DA6F46EF8DA946CB485AE27B9C4E53AE79517548C13F237283C01E2AB523125F3EC
+H_OutputA = 1B9029B11BA84951DFC514CE0842DCC2BCA7128CFEFC820DE5E4C2B8953EF8A8
+DRBG_SeedB = 3F4FA44B10A43AB88737ECA6279BB585E28E71D40828A3480A8782C5ED5AF12F
+H_OutputB = 6B78A461CF9DD350C3D9ACA73A552ED59F7410BAF30FA294C6CC5775D8261218
+SharedKey = CB148AC2059B95243D5F8881C235194DF7BF1D5C83989067A483EBAF6C39254B
+
+DRBG_SeedA = 44138EC58E86A071014DCF0615BCF2E17ED917E9469AF8D156C9A3FEE2DE6A9F5C84AC4313B654E8A5A17256B39880402FB7CEF957E791366F4F7EDB26755A19
+H_OutputA = 17FFCCFC1550B279BB5971FD5A06828084AE09201EFD28878E21DC02FC451FF4
+DRBG_SeedB = EB5039DBEE3DFC6FC8BB9DB4ECDDE565744CF3915F67BB0C2837702D2C1684BC
+H_OutputB = 54FBC61DD86861132C6B98BE3E7C71DD7F32DAC020EE776E310C9508533634DE
+SharedKey = B00FF2DF73B19A7431435AB33D4FB86B190553DF2E80D000EE6312D9158B74E9
+
+DRBG_SeedA = 96046E215DA75E553892B0617AC05DDE6F87EF55657A26132838EF889016EBC4FE6D7FA305EACC102F5B29143485B0EB47D239028B6A2A7588B7505C446372D3
+H_OutputA = 95E577B3C506AF22D29F6F4E001415DDBFEE5266FEC9166DE4645F0B5CF5B356
+DRBG_SeedB = EC33FA3DF333CFCAB101813AB4AB06529F915956E9CA04EC5D7B119123F61A26
+H_OutputB = A1553D3F3992B3D8D6BA86FAFEA815459DF12F5E5ECDCE2EDBCD0380D05FB5C8
+SharedKey = ED2B2598CB7FF7BFCEC1DB0038BB0BB9D2AC6F0D9D71B1EF170C06EC9EDB9669
+
+DRBG_SeedA = 936348EA99C7E031673C6F4C191EEB821A53616A475051A53E21B731CBD9FD6C68886D0FECEC03F70EBF59724ADA0FD93E781AAE8D6C810B951FE0C9788F8906
+H_OutputA = 95CE5F3894C76D5B7FE793B342E8946BA03778DF772E3312A4A08A09A3250E08
+DRBG_SeedB = 28C62B9F957041B4CA635A9ECAA6AE680C671CA67DD51FCC6FF3BDE24EF1F070
+H_OutputB = 0558737F6BB37CF3462C82FB90A6D062C3F7A9679CB561CFBA196E0A312FC724
+SharedKey = 3A4C123A30DB2B4E64E1E89031710B881F643C98E17D2F1E8A6EB15CAEBB9AD9
+
+DRBG_SeedA = 5F0CF18D68639C2048D51D9A226BDCD3B8F5FF46BA548FE476D854C98C668AC0CADA49DB9765971975820EF9B1D3EFC27E986A3EB874F82EEAD61FB398E93A55
+H_OutputA = 557CC284BDAE6FD9924DEC18FC039C43BC1CEA84F649B43FEBCF86C30AE2F122
+DRBG_SeedB = 0EEA3CE940E0E7EA2251242EC27810CB7073088F80F8A9F3877C7FE2782FEB9D
+H_OutputB = E080E2C137B4647A6A359401DDBC456EA3F378F0C5245068815960EEEE648A3E
+SharedKey = 4A48E388A3A2144AA00C721FC3C3D676CD266ED5ED6D3890B3DF24C36EE27BBD
+
+DRBG_SeedA = CEB66392F0E47A3DEEBCA72F1950672B6551B6E2F60D3B9A6F2FB1660A9E0CCD6D8B0DFCDBF8155875C2D61A3582A8A4F6B3BBDD9E00272136FFBEC8775EB065
+H_OutputA = 9EC9CB2D8D7CE5B5DB72930341C830FAF918E56744575D15F054D9516EA43EF2
+DRBG_SeedB = ED5A29BCD64B1F14F11975D83555A6E93C378E995015008C48AA09DA1D89453E
+H_OutputB = 99D46A5B18BD8B443E11C080D618DF1A918F6B1287B67D8058A27B28D6E37EFC
+SharedKey = AA17556C3CB5AC09432EEBF0D490E38602C2919D1504A987BB2084C63C9DFEFA
+
+DRBG_SeedA = BC276513C574986A2663A62AAD94DE507AC057A0D6E4E0592F3D88F0073B7793DA739C7E6CFAB6DB331D24E809E02F1B8DD1DE1C3C4773C70D85EB97F1A1C10A
+H_OutputA = CD0A9875F1C1E187D2BE7FC2600CF2DFAB2A4346213A95424318B9449B8B789F
+DRBG_SeedB = E75943151194D100A9236F496CB143895206D6D78EC5B1F3679680EDCC0B3C3A
+H_OutputB = 56FCCF1E49986F2605EF6E31312E64F8642FEDA1FD41284F34B6E509A8032792
+SharedKey = 7280AC61EB0879E7950467DF2109EEC770246996F6CB93B309418F664FE887BD
+
+DRBG_SeedA = C225DBF64FB791FB89CC0DC9C23BEA7D0BD315E72AD829FE1B5ED77D52C031F99EDF430BF61C4DA0CD4BBEDABBC8B8C4CD3A7D761687DEF36F58FF38078A27AD
+H_OutputA = A088DA078BE03C3E14A4A58351DCD7D262A66B97B043BBA34F47E22B1A7C7E69
+DRBG_SeedB = BD4643E0DE2FF1B7DD9D92A0558D88CEFC20E23E20C1C033A5BA95F965BC051E
+H_OutputB = 7DF475C8F7417491B46C58DD2E3299A7326539B0808C7E9A4F0E0918B1DA2EA2
+SharedKey = AB10EA0768C69FEE89EEA1E71E6AC7B65E60955E25A41B4F95BE73DC5163DAF0
+
+DRBG_SeedA = 6E1E02C661A5087EB6CB7546CE87E44697C323CA68A2B0272D51ED029D1EC0DDF07E6F0C9A58EB19AAF7DAFB2724302427ADC8726A03B8220A3A30ECB119C3DD
+H_OutputA = A68F4A0FDC3803F70825169A6B1DD1496A125D56344D858EAB07766E2DCAF903
+DRBG_SeedB = CF10E58E5DABB141436B76EB312DB4F92AA50747FDDCFFBF68569E046FFDC3B6
+H_OutputB = 0831F9B10A7DB0D0B818A87FC809E75D8E0766496A465BDF57DE0E03AB1A2BC2
+SharedKey = D615BB4275349E1E1639C992C5FC9D3894811EB4F4A4F87A3339F1B25F902C6C
+
+DRBG_SeedA = EA25D61F7745CF91C7C1C9CD47B96BB7756220C7E503723F96299000DB657474F43C6549F147BD76FD7E0D5D9B8AC9F9E38C04BB7BD494099A36E7976749ADF3
+H_OutputA = B8B16403213F105BB97F3BA6E8B779286160216D70DBF1F7B11A88B5135490EE
+DRBG_SeedB = 3163211817CCFFB183683A8F22748D54AE51BB1F2E65FB21D38C466A5AD351B2
+H_OutputB = 4E5A06610D389E3E15C283BBC46EC483A257CE14ABC6B0126857DB3177F47CFB
+SharedKey = 0225FE06A73B937B907B3A373035A01DD21BB56A7F9B1BCECFC00B77B0A8FF23
+
+DRBG_SeedA = 8DADA97C46D35F71768B34AFD46EBD40D73B2A5E22B427003AAB5396F4A0F948A3C35574D712E854B334F48A91FAA8A59A1E5A686A68585097384A83D9FC3391
+H_OutputA = B2CD76DA7B86DEA3F98DC7552985A508070117FAD42368927DB6912F6EAAE1CB
+DRBG_SeedB = 3C6A277066A3313D120AAAEA4ACA53FC5EA65FFDA4A1A14E9612355152A2220F
+H_OutputB = 19C0727AE1AFE18F8A3DD22CB1F6230A70F7E0A2105F2AA6B0709CCFBDDF11A4
+SharedKey = 63F7B3ACCEDF1ED1E14D99EC0818397A7A4E5447F2AE3FF6A440E99664ACEC53
+
+DRBG_SeedA = 4218BAEFF599B3614D6568F9D5972338D3DEC119B73E7FB82915B3ECF35D139D7C1AD3C925CAFCCD81B883A61BABCCDC269661FA081768AC5B1EB1A36DF5E542
+H_OutputA = 60DB20237267F98CCFE28061338E2EAE1FE7642AC72927F99FF158D0D7CD32DA
+DRBG_SeedB = 560182139154142A024084075597624C1801AB6D369E1A47544C9CBF9168602F
+H_OutputB = B286B4C1EA87FD9EB06B4BE4AD005DCFCED23E7C4FEDE63DC1AD9FB8FB8033C9
+SharedKey = 6511F8B0405E656BB0B11660A88784EAEB8EB2468B33531A1C5D8DBE3A6A81F4
+
+DRBG_SeedA = B44550FDF89FF8E677A4C6CF9F77141E18AEBC9B75993BC60FC88D582EE29928697CA61B20FB5FFA28C6AF48CCADDE1B38D80BD9A8F925209F8E4E93CBBBCED4
+H_OutputA = 3B43BB7CF68D17D5542504295BE6FB6B6F79D988CA9D2A60B867A712B4796A8E
+DRBG_SeedB = D9464020EDF8C278F06D14E8DCC6814D13D3CE664056CD8CCFE4E981BEA7BCAE
+H_OutputB = C6EB64E91B18DDB65234455BDF20204F4D07BC57836E16BE22D6B888C1F265D6
+SharedKey = A57ABB5B991BE5BDFAEEB615C5A498166B49869B07D10648AA4C90C19895E03E
+
+DRBG_SeedA = 6DCC158F2ECBC0701FBF313FEACFED54CA97B999F85861B88533E9C40196C8DA9CB043072C41F49D52F213222DC6D7946DA6F26C9B22E54952D2D7F06BF5C25D
+H_OutputA = 4A9FF23F31B5A69039240E78F9AF6210D83F2D9DDF18D46D97FB7C9437D7D55E
+DRBG_SeedB = 87E1C25D108DDA5871BB6C728B8AFF43667DBF59E2F1239E45D1853372914461
+H_OutputB = B44AA17222F0C3DAEB7AB17BB07E08C4F7A4A9D4389477939B4499438CBDA299
+SharedKey = F95EFFBBA51B678B82D37C4874E634152A78D4844B73F6EA2547979C024893B4
+
+DRBG_SeedA = 09CF02C178F0CBA73176AF71DB8C20AB6BD6B2752568ECF69098FCC21CB546E3E55D8EB2000AAD1B7CDF0A079BF83DD7B843076CEC1750B700A29EF0663004B8
+H_OutputA = C5C49D334A9631942583D77DC448453903F9C4F9698F6E4773AC487CDF965896
+DRBG_SeedB = BF24C747C718F576C5CD1EFDB26BCA5FEFCE7A4DB9EDE731570A578686326BEE
+H_OutputB = A043B9992B421DA6FC00DDE1F48EAFAD9CC9A6309EB583D24CFA7949B71331E4
+SharedKey = 8F9F660C5A489D882A5434E28A7F5B0202DC3D3C8DD3BEB6DBB864E421632617
+
+DRBG_SeedA = F364AFFA77C27462A8BC7B5E236EFCC3DBC155E3A108DF6853FF69045FEBFF9D9287777DD82102519CB8E1F74CF83C73CBD265C664B2C069DD92674666A73E90
+H_OutputA = 990E0698887FD831631AFFA27F8AAE65FDF85F2A75EA11A59EAE3143AE559886
+DRBG_SeedB = ECDCB647BEB06C5E06868A7AC77C6F17082C8E3D664F9E89D3F3FC23BAD66CEB
+H_OutputB = 85E695B4E723CE6B7C281F8C8EBD5E79A43D1B13BD0B9B28DA251ADA7FAA1720
+SharedKey = 9285AC6C826329BE8E0160BA3A987EA5236283A7AABCABDB0AA1720FF8DC0482
+
+DRBG_SeedA = 949EF2EFDE32413318CA5B510AC45A4EACAC90E757FA42EFFB046C6BD088CDDB417CE5BFE8B220DA6A6F0EB32D1E0ECC39165930C82C7D0D50E2B60720625080
+H_OutputA = 1A0E0509B5C0C761A09ED85AE5EDDBA9BF045561E9863B73286AC7AD5E432B33
+DRBG_SeedB = CB4FA9C23526B6C9ACB344641D43E0157C9BA8768A8F747DB7F98123E4329661
+H_OutputB = 432B5547CCC923D0264C0DDB9DE4B047ED61166748F90303B0B36E058079813A
+SharedKey = 2230A456AA53430DAFD050E069E85486BF5C7DC900E096A6EE11FE9FE9F43149
+
+DRBG_SeedA = 0D9C182ED1F056AA91013B72AEE6B521ABAD2424C89C571E99A21B3D6C1D63538077327ACCDE7EBE69A514FB4365C438E0C1CBF65EF93B814A4B769DE58EAD27
+H_OutputA = 047B061EC8D51FC0E8F199F3EA34A229DE214DC44EAB8CDBA23EC10DC71BB57C
+DRBG_SeedB = 055213ED901E9C8F60955085A99420253441806A6F49A6ABAF708A56983D167C
+H_OutputB = AB6F3CFACA4C202DB1096160F4DDF89E66D4518B1A033E73F4565FFA0FC83A35
+SharedKey = DE9DE05DCC93D5B337ABE5D5756B7F0E0916E7CA136BBB4AAD0C85360318EB63
+
+DRBG_SeedA = 082433406540C4B2887BA502DBDE30D9B658BFAF55783C726304BAD34AE6B27EA2AE5F4A100F9DC48896ED606F84C165719B37FD1AE2FD106742B8EA4AAF8DD8
+H_OutputA = 3F4B57283E3A1D53CB374089EB5BAE9EE48CB48F0B4F4807E97A9E4731228691
+DRBG_SeedB = 32D53F6BAFD6A0925CF8FDFAFDB4E20BBBF9466E05AC5D3690A5C2F6B1EBEE32
+H_OutputB = CF93A9C675D1DD353F599579290DFCC4F99AFEE3BC7FDAF182563571610A5F19
+SharedKey = C931699545CBAB1FC086711D4B92C45C950DD42B6508B043E06AE73422D2E0E9
+
+DRBG_SeedA = 80A52F8B1FD07C433BA0C44F691B3F91AAFE6727F73AFDE90B325E6C2EDDD671AFE182C350EAA71F5B8188405DF3E65B307F6C79375E30A28AD0DEF62E9DC71C
+H_OutputA = 5FBA1C67BD6D4D66A1D7AE7CBFED829D586CE30C8DC2DD9C67BCA6592A91BBA8
+DRBG_SeedB = 53E2402019139BEA146448E3FD61431BECF7A20C9C427C1D72A337527FE54FD6
+H_OutputB = F8A8CE4F02D60D377BE136764D4287F771E2F972D48FE17B7730D77670B3E11D
+SharedKey = BE63A3FB338B8E83927653E87723063292961A5BB5E0F649DB55A9C2675B4118
+
+DRBG_SeedA = C109B29369D99A77C4D9477FE35259F1E195FD1DD24C3222CF0AEB3C6D395007AB2A34D7D59A6E475EA71964414FF02AF5519305C6C5B8E066A97E8E3FC83918
+H_OutputA = 7E77BD15151DD3F76123EEA4350CB80D02639B5621E106238104497BB9034A3C
+DRBG_SeedB = 2119580F61FE70C9EA2D2E82D1186FE556FE2BADD11898256BB819C6BE9E4714
+H_OutputB = 3E1DEEE9A7F40C1FA8D46D10AA2658A85D268D04497991C4AB948627DAF0899B
+SharedKey = 09CBC97AE09D06E2731EAC28DDCA47CB88F98A7D979347F463D2622FE8A113C9
+
+DRBG_SeedA = 4FF8AFEFCA37ED0A2F6DB8302CDD2409EA573FB58DC65C70A0EEBEC37A6E1F48C5A1310DB8B441EADD336BE9C8C34135778BD26E59DAC4DD0A1882C7EE89EB50
+H_OutputA = 57BF2A09356341C73BC8EEFCB193C25AE7CB3994091036D88775842EB086BD8D
+DRBG_SeedB = 357C5E700335E216E3C1A076A68FB764651EEF87C5ABAF51CDF5815E2256177C
+H_OutputB = 7440D735DAC909CCB34BFF9A97E5D897AE45E9ACAB74F97129DA0F7130B94C0A
+SharedKey = 1D2879FB2E7A8BACFCAAD1A33E9AC675F0A89138AD1B77D3453436B839877307
+
+DRBG_SeedA = 4644A9C66C42ABC577846508DF7FD65C4FEBDE56D198CBBF68DA96173BDBDD0738734BDBC4359106B83AB5B99108D59369C2B01BA0F2432ACBB5C0AF4CFFE69E
+H_OutputA = F918F1FD5EE3BD57625F86D6CCA6EBDEE23563C749766AF18456C84C1F6A882B
+DRBG_SeedB = D3131B1282F4F075563E8E9A79A563B6B82A0C0F192F6BEFAB20B6905D9D67A1
+H_OutputB = 389EEEF8101D4457467F65AB5431C0ED02BC20B6B65D765D7074A6B45CB7A2DB
+SharedKey = E63A9A63030C3396C9D0C88EBFF0C45DDFF10F3679D00653573AE72DCDD8CAC9
+
+DRBG_SeedA = 8ABA7337722F2AC30C2D7236133DB377CE338F8F09A4DC47155D253B8761142D91389C51AB09A6D524F42AE86520F7AE07497F8DBEA56BBAF7C635FF366C6B9E
+H_OutputA = 359A4E1321677B880A0FF75AC8AAFB02BC1E9A4059E08D27AB74176B399D3308
+DRBG_SeedB = CAB67A5244C83B4DDCFC0616DC53FAA5E15D5076B3CE2F96A71F14D74F0AF449
+H_OutputB = 399D55181CC2A8A90F539FC5379297E5E219D1A0863D1C21933C274DF29E8E30
+SharedKey = 1E1573886E3B8EAED6EED915368BA14D957FC3DA64297074B94D6C6E4A2F80FB
+
+DRBG_SeedA = F56E40B0E5859A06BBEF857DE11A0045DAC993B732FEF9620364CF91395F398BB2982FC4285AD937775785614DA30DB6280FB6486B9064F63590119722116B9D
+H_OutputA = A485C8DB0768CDD6FB2AB0BB37CFBD5CE5482A831590D44DC0917D5E38D92C1B
+DRBG_SeedB = 5171E2F117D9D252A12AFF68CE03581728508A035EE82D216179AE26A6B125C5
+H_OutputB = 8DC5D0F9E0EB443BC6481699BF585D4366F4D11ADD4DF117A6EEFB18FBC6A955
+SharedKey = F756D68FE65DFD45304C64823A966CAC0DD5E4F787DBF904E14CCE68976ECB3A
+
+DRBG_SeedA = F8154FF4FE74F225C3319CE6B12D158AB15F5F3AB4F1E6CEB8D4C9B9861C048DC9BD5CF326A9CC32FC1911AA494BD613EE6CF89A1942D199B914D4C58729DE49
+H_OutputA = 0053DB8505A6B8E735A402A1974E5F1788FA15F6C19CF3E29E78389A4080DC09
+DRBG_SeedB = E9D5E9FD79CB7311622972407FCA51F9E9F423822CFC7AF65AD7B8819B4BCFBD
+H_OutputB = 4E709F0C5EE3457E10DF161F48182A2AFBBBB8EE060B6E0ACEA7DB662170E8D9
+SharedKey = AF492175D0DA3209570306518B97848D77ABD727F021BF1E2672D0896117C181
+
+DRBG_SeedA = 7A6CC1DB7A4046E4B52E58F50F0CBAA22B39FA8BE6A044A446433F6F0A0ED2CEA6332471594AAF45177C85B9968360D101627DBCA0E9ED299C28267A2D38C7DB
+H_OutputA = B44665C056B6703A45A7D47DA038A06B8C9081B9E94A71CAE2AD243D11EA1A36
+DRBG_SeedB = 347E9D9F90613E54283557069EDAC54FA77B32B7CE91E2061876B98FAFCD9DB7
+H_OutputB = E8323A7F9CD517064199BF44390F764AC651C92BD25018AF9D843B7E93171CD6
+SharedKey = 7535CCDCC8011D359117E0A6658D779F069B79CF5F79EDD3FD6AA562099BD8B0
+
+DRBG_SeedA = B66B5501939032DD495013B3DC7A6285F3CFF4ADD550C1DB0981E903AADB834D2E5F79CB3028F0E995B3A9B06D48828B1D04D55F9FBEF47076D4C5C3CDBA8C9C
+H_OutputA = E2177FEC661CAB4AB1DEF32F6A99184D0C8B3F2769DAD9495CC726FEC7E5A55A
+DRBG_SeedB = 3D975EBC482590090D088A8C8E98854665DB554E77E6734F4C5B750E2142C079
+H_OutputB = 573899CE509E9D1D7056DE884D388148B4C84B9F8809929F9EBC0A07E399B982
+SharedKey = A943A51E36F26C3B84E431F28B0ECF46C233A4AC32C18C85D062131A3C83C2EA
+
+DRBG_SeedA = 4CC113FF3655DB1AFA397E9125A41A2BF7D8C8369A69AE10AC44BBC48E09F12F5D4D28C106EF7BC4EC34708718BAAFE9C1BE4DC7301B36F38863B7E9DFAF368B
+H_OutputA = 435D84318A9A29BB907E0E3173C9C1C47620688A58F5EA557FEA17BA0FF5297C
+DRBG_SeedB = 893A08FA1F96FE7E69005B11075389CFE69B603B1AC4999FFB2316B3E2626BD8
+H_OutputB = 02C2BE491B0AF0AF9C3558605D79703A5DC4D94EB3429D4719069B7A6905D041
+SharedKey = E26C412E1D9DDCE5FBA411C9047610D7ABA0DDA745C3F5F568D82F84591A6011
+
+DRBG_SeedA = EAA74F2D258B1537A0D5E070CFCB6D85B4E2FA04749B9ED835B9F1698BB772178689F95618132768D6B43E4849CD32017722C310F74DFFAC0F8705D0BBA5BABE
+H_OutputA = 2D66E9F20354E7D7FB9216524A59FCE6DC9AC0825CDB8D77A1A8D01115F6EA2E
+DRBG_SeedB = 9BFE229C8092DDD75C920669C6B68C43E9199E55F95CAC959C431645529E8495
+H_OutputB = 6A1E39F981E666C161FD8151C7CD2BAD033189BAFE371428C43DF0BA0F97A3F9
+SharedKey = 1AD4281C471F34DE3157D201141E500FDC50C264B08A5647D755703B18D5A9C3
+
+DRBG_SeedA = C64822291120B9F16DAD9CF34612D19D52045DDA2805DFAE4AAC0E4937F6C3F655260AF34A2A3E0D31426E549FF4FEFB0139E7F1B90DE87612E4AE92008AA473
+H_OutputA = A48DD5515973EA9DD218AED9A209D8566F61BE184D8D962ADBA18E8BDD4F6999
+DRBG_SeedB = 7DF8BA711E6524B1B64F42EB065ED024790944F9782C34D556106A0DD4F9183E
+H_OutputB = 13A9F9BBF202FEAA041955A048B36CC43573F837ED7F8411F6448BE008AE2005
+SharedKey = 29CDD7A311AB4B8EA9E2DEF9E52235B45125C366B51756B41B113B4B5B90756A
+
+DRBG_SeedA = 8506CF4E4EEED61A3D9D22AFA21CB18B49765B08227ECF55BAF38F66D0A599283CCF6CB5BF679AD76B53F59B36A9B78675390F18EE649FEA75329F3997736032
+H_OutputA = E1177FEFA208704765314DF739348D7D63E536D46E1E8EC9D6B0486784F1AE3F
+DRBG_SeedB = 9DCF3662EE546C7F1EF12A60926B2F091D686768ABE1C98E1AAE205AACC24084
+H_OutputB = 4D543C19217F7C4BF67A9F68AF96BD0921AB17FEB81C277544FF722B00DA746B
+SharedKey = 63C9FEE6CBBEFA98DAEECCA88838DB2A69726F30DE99376391C381CF64640D92
+
+DRBG_SeedA = B7EC103CB5BD0774CADE11E2488DD5B0078201FB1629B46A046BA319A1826F36D7854091B22592BEC36A003D586024E015FD4A705739BEADB6CA7F9BFA7216EA
+H_OutputA = 3A70E6C479DA4E1F4ABD1124613C8A21438AEFED100CDCCC3EFAEC983CEAD0D9
+DRBG_SeedB = 67F2C753604EC631DF992B915CA54AF27C2779E3A43EB10BE99C3989ECA334C6
+H_OutputB = C72E90311FFEC0D2E8B1D34135A6AEFC23C18BAC9BA7B83E89C2AF7251965700
+SharedKey = 2C9D27B37C9FFF1612E534E44D86D4661BB8F67FC7728F32865870F498DBA637
+
+DRBG_SeedA = B1F985B86537068140A85A1B6955FCD145CDA8B318CDC74814113EF0F71CAD999A0FAFC287DBA94B5D32C7045028A56024AE6E600DC8252FB09DFFA467D2A2ED
+H_OutputA = FC918E006C24E383AB755694BE5C53F929DAEE6139225A4C5BBE09EEBEE6FA3D
+DRBG_SeedB = 6A2DC86A2329601D67CC73F469960527897A797B0282343C57C87374836D3395
+H_OutputB = AC03424B788430F85ED4429E8A520400A69EAC0BF91E6CCBB73D0D9C19224092
+SharedKey = E083954DEE0AB10CF689C61A6CB9DFCE2CE631C751EE37FCEF56550AFA50EB5A
+
+DRBG_SeedA = C02A60B715C99ED4B6B4383535E7434B6A458238627D0EDBB9B9243C256AFBDAA53704A647083D38BB8576E63A785266D54B4BA3C8086F90D0E1D0DF3BE8C6CE
+H_OutputA = 2E0AC0268F5D6A74C130A4A6BCC584C497F9C046DC321D6BFAC6A145B55B2E9A
+DRBG_SeedB = DFDE13D9AF02B2DC8CC825F7E56B6CE504F6770ACD8D4357FF7B3EECD0CD7671
+H_OutputB = B7A28D550568CE64B9C3CD37B03217B04D610126929B97E7C7340028EAB2CD39
+SharedKey = 25B99CAF20B99929D2930C4FB0479C72D54F5268289407609C6EF75C253749BE
+
+DRBG_SeedA = 29E2596F566590E1DD2C273A7C7D0340B0B522A3A7BDFD37D0FEFECCC4DB645300894790E7C83F72C6F615555019C00C2CEEF41D1B5C4774E8C1BE131E2BD776
+H_OutputA = 05AC35035D1FF6A78A2137433A041863599B016342B108307D99DA4ABCEF70FC
+DRBG_SeedB = 12EE34C3D5F558D9B3D7859F2586C3C2BC77D750B5B069C571967A9FF6878BC9
+H_OutputB = E41DB31A9EA8ABB38DF7C14D0D4F1654FCBC4A772A4A201ED2E5628D41E0F7B1
+SharedKey = 1A45E7B53F3770B5CA730B23CCE0CBD62DC3784CEF40681862A1ECC1BB869977
+
+DRBG_SeedA = B271B63939AC72583C3B94BD57E2CB6F1A4D57E3F2766EB9618F2928134C3BC37F868C9418FFA97DA5BED94F51F99D4D8F8FE7E10BB01710BF741646FEEFBED6
+H_OutputA = 11143327BF17BF4F396645B3A7AB546BD8675E82259F62082716A2ADECD15F4F
+DRBG_SeedB = 8B9790C809E51BBFAFB7E69E77BA0EC0B46CCACE8A55E3510958C66171403C57
+H_OutputB = 7798EFDB6B34489339869D37AD93F64FB8C57A10A74FEB9D45902FD361320064
+SharedKey = 47FAAA2CDA0D01EE260881BC32868A20DAF5E40F953BDC5CAC64A54EEF750991
+
+DRBG_SeedA = 3FB3EDD963D1583C5B1E92D580CDDA5D03278DA5B11B24359750D856E1FDFBADD94773B5AD8E0C23E883E4E57AE6C9DBDDA3938D10A182CD0175197C35FD3D69
+H_OutputA = 54FA7CEA3C7D332F4EAA47CB1526B0F4E77784F3F6B962EF1B9FA6FD5DE04CD4
+DRBG_SeedB = 4D2BFD5F0F06C5C9B74E36980586AF88F12DF0A474FCF98C5801753613EA9A33
+H_OutputB = 61C6740190D1CA2AF81539BDDAE7FEA9086DCA9D766914A1E4A8BCFFBBE7FC2A
+SharedKey = 7F7F6173FB9500E6C493E28C628E9580CCEC310556725E23A2D70EEF609412E4
+
+DRBG_SeedA = BF79961EED87F31B53E2C13801B6FE908EB875952603D5ADDB19F3E19A4C08977294BA3D874F61433E3ADDF237D419AF51CCD1B7A5AC3566D0968E2BB4CF024D
+H_OutputA = E97A9DA32142E6142E92F0F8AC29AB7310A010AA60081E79C7BA3BE4C636A33C
+DRBG_SeedB = 7610CB8530C7EFE537CBB4192C942D7F13695D3A9BBBE620D23EA29BF9E44F0A
+H_OutputB = 22488D36EAA1E5C41564CF941A862C8D56AAEDCCCF42C9B407CE51067714DA95
+SharedKey = 1D0D600047AC9247F21BAFC22C5A7EF2F755F4A4CE12C03A6E8ACAEB59617279
+
+DRBG_SeedA = 96EC69E62BCAA3D09779DE69675835385BCE42D799E32C0561BD5FFB7D28896BC8C93E0DA849EA527EAD4F146D826BE07A60FF4083753A5801E4132419143C21
+H_OutputA = C20C26E8FB86E4C6B254C5B8E2890520BBF1907AC1CA8FF4225415D955BCE52A
+DRBG_SeedB = FEE1BE59509899D760D7BED2403058BC1CD1350F7646692790C7615C3785D742
+H_OutputB = 69597DC8E4B3C60F9662B12840BEC6AA66E7BE59A0D322FB6D8F266837E023DC
+SharedKey = 1B19F7EB2D7719EAC5D230683EE541515501E02D9439AFE7F3C1195AF5BDBAFA
+
+DRBG_SeedA = A24B502E864EE39940B0E226925C8F540652097BDF84AD8668EFC6FCDAC7755E76313DAAE1FAF0A4AE32BA2C4D626D4EEC6ADE93049EE5969B728D45D3739235
+H_OutputA = 561567DF07B145DB7F3C18E529EE8D79946E9C9B11A8F3C7D73D09287BC87C86
+DRBG_SeedB = 3BEDB438433E785F3A9E1975A21B090D7A8361D1FB8720696CD9D21941531F2A
+H_OutputB = 9CCE717E03B7960172DFD7BA5644B547C7338D5DFFAD47B62F4E15BBEC728E74
+SharedKey = 3606521FC9A72D1B34A82DC897C7E0508BE277F408139358074A8E69875CE0FA
+
+DRBG_SeedA = B142900FE681621092B79ABFF1334BE8759AB87701C3DB739B29E75B992A717854368BD1F4741D5C05D1A0A888910444E8EB0DC1D5266481203816467155742E
+H_OutputA = 8E23A21B836C8AA583E9A57A458AC236BCBC0DA7A9BE06B5A7BC81E251FDB0EF
+DRBG_SeedB = 8002F1C2C7403965C4B57A284C476FA68CBFFBDA80F080AF1F9DD87075532D48
+H_OutputB = 1053DF96F40A055434A74B449D418BCAB0C5D15AD25B0E552A2D649463957BFA
+SharedKey = BC18CF2C2EDBC615A275D78A4CCDA3971B7012B5ADECDC51341B0540C1106D50
+
+DRBG_SeedA = 68D442A1B8BAA4AE31151EA84B16960CDA7B30CFA35AB30455599808F7DD005439AC8DB781B297B859895F56CE136741BDAE9962EFE60D8E959D97D4A76651EA
+H_OutputA = B56D91EB8541AAF9C5CE459D6FE6718BEE2300A792CEAB894DDFB337AF84E06B
+DRBG_SeedB = 16F73EA01E9FEDFBEC12558840EFEF8E7297E2BEB0B6A1A1A6434843F5010896
+H_OutputB = DC83C9EF2658799FA22784FE6F0F2DFB231AEE4DCF18DE0CB593AEBF6462D7A2
+SharedKey = 28384ADAC1516707C094034191F2639CBDAF1D66CD3BFE1AC6FFB264D3409B0F
+
+DRBG_SeedA = 2C29E032228F4BCE5CE98F76CD6163D9F3132FF01CE9D3BBAB885126B26D5B340D520605F2B558ADCC855356C4F03002B6E1E5E9DE8193670C5F7C1A358AA0BD
+H_OutputA = B0291E394C3CF2F3B06A80BA011FB5E2633C067E0AD6FB6CFF632C997A727A88
+DRBG_SeedB = 39436B2FA0FD5F71215B90A87C552EA9BA9705D818BCBC3E5374712E1AF06AB4
+H_OutputB = 57ED4BA59C860F8B200E78988ED8F6D4AFB204548B973E486F1EB265E98B33B1
+SharedKey = 7C855DA0D59B90655753C9A0AB3EF7586174E0694307A30473A6488EA05CBF60
+
+DRBG_SeedA = BAD68354E3BB4504750BE157EEC9E582DC29C52C589D5DA1A1798E7B4EDFAC47B4151D2B2528C6E947AC3D20B2EC727B66637F005CDC4AC95876124D5CF0A6FA
+H_OutputA = 36BA727568B566248662F2BCD2E3184239D604A9F843F36E43C59EBFCEC84272
+DRBG_SeedB = 0C9C92F0139563F3DFDC0487EF2343548221DAACA9F39A21856C0A9440F19214
+H_OutputB = E5C60B7226500BD5FE7EEBCC37CD6090719E5B08BF4B626F198788AABC72072E
+SharedKey = 719687E157CC5F802573061616D1751D35D2B0749FA93FDF04F4C1E02BA44328
+
+DRBG_SeedA = DAB2FC8F3A692747CF9A6A1ACAC976F2855D990ADD4F45EB6DFC9490520854AED139BA426C774E5FC5FFF58914B7F32647B3F96C102EA55A2B6F1FC9F33D4568
+H_OutputA = 5910E9DDDFE7408D53444089730CFC4B38141045609145BDA1AAA6E75AB0F345
+DRBG_SeedB = 00418CEEE50F581D72539C8CB8795E2BABF824B51679EB3BF0BAACB7B749C45E
+H_OutputB = 2ACB714379067DB33812EE63D9683808E33513AE0A67A198DC7D3D327E873249
+SharedKey = 28E8DAF1DEEF156A410F26D54BEF7777DBCE961C73042AF45861048D62CF78D1
+
+DRBG_SeedA = 83BD166E737CA8A328B9BCB0FC4577659EA18FBA2A9A7E8D9507098FC58DA4B4674E454E4F10D460B7696CACE2D3F8E7DC3B88E33DF9009A0AD75B57255F346D
+H_OutputA = F99A2B194BBBF5B6EAE8679B41B19C7EA2CFA8F0712DFA277F4B7E0A8807AEF2
+DRBG_SeedB = F306CC2A3990CE6A60320451B90A6A4E78493E37A828A108EF532FE1FDBE7C8D
+H_OutputB = 17A15758884156E7F868490F73812D341992DA64CF4BBD6589530617CE6B2A57
+SharedKey = CE6335F9944F04E6012F63F44ABA1B21582DBA3FF7DF40BFFEE2BEB42E55BA51
+
+DRBG_SeedA = 24B8128CCC5DCEECE225EB04C4DD0F4B2D1693ECD431B20588908C983A20B0B45C853668E88DE0587DC5F639937288B829AAAD7AA29B4F34004A41787F32B4E7
+H_OutputA = 1AA8C6CFE9B951A4C56255FBF019CE1DB31E23A7DDCF77E14BF8E6EB85C6080E
+DRBG_SeedB = 9E6FF25F981D544280AEE22D4011E67B8485FD25D8269367362C9C637A776873
+H_OutputB = 7FEA7BF062838028896DDA7DACBB5536658050A4E605C2898F06229468EFD7AA
+SharedKey = 9C922A65F751095B5DBC55A5D60B87B9FC874D9A9F72CCEA99E62C13760ACD15
+
+DRBG_SeedA = D54E0B6DEFDA2EA123F4D5813007C09FEE4307513D2320654DEA364274DDF519B69FCA89BACD89EDE64E1C9434A97E0255C159055016F687231F5DA465957C23
+H_OutputA = D029C72BBDE675EBBBC215532C0A969FAA26B94C0EA2FCA322067D754D6CB43A
+DRBG_SeedB = D525252DC5168E1BB69FB296832E3639A904735B90B7E5EE31BEF01379C844C7
+H_OutputB = C0B38FB3C12A8EE38D223368961EB912D4539CD47FB34D99168F4BB2F5A19C7B
+SharedKey = 877129BE50DEEC366E722C14D6D6B6F1B2B4413965CED9CE189B220A6533F19D
+
+DRBG_SeedA = B17BB1510B8A86520CAA8481B895EFB78B18D5D5A596674427ED5B7A5856B21738A38A889ECD7A1C77EC2283E6387848E6BCF2D8713A39BCBB02A7DF2D995998
+H_OutputA = F08DB2A71A0BE7DCEF571EE3734290A84E8A61D357547A42AB7354B9751E45E8
+DRBG_SeedB = F4F1D638E14B974E9CBD72D0D46C72986D8312E58D44C180ABA39DCF82DF738A
+H_OutputB = 26F81634E7DA3B766778B0174C134BA68D6583DA60252806B65F813C1615E966
+SharedKey = 85B246C32E9B9A9E07F70A5EF620BA79ED09EB38873E3BA908FF00B919DFF424
+
+DRBG_SeedA = 7FE90BA3C43A20E17D45522B183C41648637A580EAAB49BDFE248B9CAF18AD795CA1BB2952AF6C40A9929445803B7E962ED9D7F101FB6FAB3BA1AEFFCAA1FD52
+H_OutputA = BD2AADA767257A44574EE16A54FB97224424BBF7E05922BFA80C27E0DEE6BC7C
+DRBG_SeedB = AB71B7058455A8DE5F66486486E7E2A9A94F31168F71FFBF29D112CF511AEF42
+H_OutputB = 6B8417C15C843BE35D942D75C320E0EED5D45734DC7FDB3611BC394E9D174F95
+SharedKey = B8B9DC2A44E549F77272FA71DAD7554A25FB4EA29242E1D763B777B8403C1CCD
+
+DRBG_SeedA = ACEFB43D82C8358B5AD29798980658526D4271AF30EE3E91FD25B2ADE6DDED76C0D0D06B6CB281FF918665EA7658A59E37D94FDBBF3E4AB170F69B2F9F2E6029
+H_OutputA = ABB06F382F3CD5EB28A5B9AE229F7CAE74E6F00FD32A76043CC2D887DA45483A
+DRBG_SeedB = 69C77ACF2413580631918EBA697EFD2B5199EA530F865A64345F0CDF2AD0AC98
+H_OutputB = F126AECCD5F449D7062338F8BE5024B386E89568E7AF9960D3C7B06F5B0ED770
+SharedKey = F9D03A5E641387CDA4CB147C4D43EB2EAD7ECF9366D4CEC07358FDF78DBB264E
+
+DRBG_SeedA = D425B7C1BDA69C14B9FBD0F73587406AC7DD1B97031EB6FB88C3DC172F4E2003DE7171D9318B58FF2C6FADB5C3076F57C0F1A7A8784D75BE96645EABF879F7B3
+H_OutputA = A191256C7AE0826A2FE76B3EC0F41E2DB1C7A4BBF3F467E01D266E7414BD7538
+DRBG_SeedB = 54D5E3AF1CB360E07E45932D683A59A8AD04B5A82B655859403BA3B6E52CB0E1
+H_OutputB = 2F081F6BCAE8F28EB6798F0DCA26A449BFC4E93AB02B6B0177F8948EF5C0916B
+SharedKey = 98E08E4EF0C1EBD900FB1A1B7739EE649C4010F3E7C60DBF47D70306A2D8A49E
+
+DRBG_SeedA = 781B48F1C64CD31A5255B4EE2CF2CCD33060341B5D4312E9162D7DC57CAC708E94DD30C448A1D853E2B949E7BBBA4290917BD1939F4DC6A917CB212D12971984
+H_OutputA = 42BD858D830F93AECEB83E366F331027D7268E1047E90A3BB0FCF86B31761373
+DRBG_SeedB = 6A500D13287458807360693A89D8D5AF46F8789A9798D858463108091F8F2150
+H_OutputB = 6BB5F77C2E5721C762E679B8269B9E103790CB1460FF3BB50C88CF364EFDC413
+SharedKey = AF0807E6DD959B76BF2073DDA09B732075B99783D67E46CA1185F07AADFDDB2F
+
+DRBG_SeedA = FABD7E3049364D6DE24AC927B0D80C2819FE30ECF2C01282245B5D2B726632E64C371CB0BBA8658391EB4FDCD3944B4264D4DBAE494A922B94730C843017C604
+H_OutputA = CF0D0B74132B793A6837C777C84828E28EE65B317D65573CAC7D12B0D408A3AA
+DRBG_SeedB = 79F86BF042F9A00DFBDF259508BD857DED81F4DD35D4DC8857B91EB8BD38702C
+H_OutputB = E9D20E726E6E6DAC5B50D0328F3F8F920545EDB64AB0D22BD38F3CDD9AEDEB9D
+SharedKey = 99E58FBAD7A28D3FD0CDE66A3BF71CF057D489A8490B910A946C37ABF9D5C72A
+
+DRBG_SeedA = 069415E793C624A95DFA02F036842EB23A005C6A94470B91972ECA3528BE4DC310F94056F2B9DC15DD54967BFBCDA799F6163294D1E568FAFAB8463B61048E20
+H_OutputA = E4EBD7272189A5C8B425FCA14496D28EF60356D1A9CC7F1E8CCC457E06A8F1F7
+DRBG_SeedB = FE09292520BF18E38E6D2F555EDD54F144A6BF94A959DF8A43E9A1830B3C0E91
+H_OutputB = 4F5EA124FADFE4533A374C85F54762DDFF80ECCE9CB5F316562CB597817919BC
+SharedKey = 890C60D22FCB4A95D0AC32BB4543C9F8565D8DD32AECFC2027DC3546B4F9BF1F
+
+DRBG_SeedA = 0CFB18C209FA393332DC27046645766B89488B89A803A10AA7853BC6CA6274E0032969E4FB63D60BEFDDB44B4DD5D019B8A13F93D8DAC189DCB6620122E5BB32
+H_OutputA = 5BCB3B12A7BEAC1CCCAC67F62108B70ACAD9FA89042CC7EEF07273C440522CF7
+DRBG_SeedB = 27AA6B37856FF205908A44B343909504A7801B29567A2BDB3644337DE986A797
+H_OutputB = 3966BDB03E374AC948F955857B02FDFBA02A32E616843BA513816C4FF9564E5D
+SharedKey = 9CA681FEB9E2EB49D798F7429E9159D42B36560FF465C8A98C6D9A7F40D59F8A
+
+DRBG_SeedA = 13659C14C102CC0F67D703FEF32161B83518DE8157E6985DEF3066C0B037345B8C66BB1DE3E6EA30A68B1D126A4750A47E192CE998B69743F03F26B04F3BDA29
+H_OutputA = CA029396D9994F03CB8F3DC73298251CBFD1B2CC40C4F6E31730FE4AF6EDE0BA
+DRBG_SeedB = DF5EE3915DD4953AA1CFF1C2CE0D6612BECFEDAC3CE1EE619ED41D2654ED1B54
+H_OutputB = 908414A345C291179DBB508E40E39F35EF1DE076C5590EF85127C7CF5C2D17F2
+SharedKey = C8C633A24C13838B72E7C85D0FE68B6F0E53655F1690A8E2A96DCDABA9AB022F
+
+DRBG_SeedA = 739FBC24E5EAAF185F165A76F5347F589868C93C47F1FB9FD687612674FF26D76D156E78FFD233E52496CD80C76697A14EE20A255EC1294F16FC8B9B0221A570
+H_OutputA = 69813B61CFEEF3BCAF13E8AA3DE8ED8D4783A27736FE7402AC017CB8E5DC1237
+DRBG_SeedB = C19C5F6A60DD1579A8D15193D3F5491809FF4E38F2E656F5096EE19316116E26
+H_OutputB = B2A0CC0F8BE911581B4A8D40A23FD9812AD92120514050068EBA0EF851242CE9
+SharedKey = 3880DF58F3460D4CCDE6FBFEF7042ACF2AFBF6B9B509A6022EB54038E49E8AFE
+
+DRBG_SeedA = AC6790FB98F5F016C0486F0988C3E023B1FB025FC5434FC23867C51CF14A6A265475FCB233F129DBED2F887AB131DC2E311291C66FC2278B014B340A62750964
+H_OutputA = 9FCD72EF89E84FC4300901B53A87B7690F23842390C3D50065831581A3E7F803
+DRBG_SeedB = 8F346907519C45991D1286001BDA091C022288DAE8B4D7B2EE77AD5C37C7A1CE
+H_OutputB = 62E6ED836E88C7A2280683FC5D845532B564AEAC4855F50C917FBA8F84F54F8D
+SharedKey = EEBFCA2A02852C8C205510B44AF31E079AB0CAE480CFB88F59006C026FE9CAE6
+
+DRBG_SeedA = 23107BF9946CD8C9604606AFB687A5DA011603B14F9E50D13DDAD126402838921A20824F91A3A51D7A394AD599A626833433FCF437717D7B31B84A12AB15E4DE
+H_OutputA = A41F5DAF5AF2BEB7318AF1C2776810D2ADAD870C5A5AEA5337AC38A2705A3F9C
+DRBG_SeedB = BB2D2E961D697C50ADD62389DAC67B0250F4C71BC2CE9372236A120BB876D56F
+H_OutputB = 2EE1791D1A08777E1DEACD662218EFDC69C996CE81E34CAA7EC543DD2C07080E
+SharedKey = 89BECE81FD30CB50963B619E1C2D160E7068AA4ABA3993A41B68078583DDC4CA
+
+DRBG_SeedA = AF813B84A6C7BEA0F3BEC0F4F499867686B9C368654282700B78EDE731118F94FAABD567D127DEDCE02CD995EDBC182213C5B0D76BF1B5F3EB30ACA88D3BBABA
+H_OutputA = 3490C136AB1834F48EBA2C9735A462B192B45E05B71F9C382BD1546BE32FE344
+DRBG_SeedB = 6DB428E88996C72AD4638C5309CFA9F062BB05A2605A46902A1B67C19E16255E
+H_OutputB = F0FD4F067A4C0CC6B5327E2251D959A6C9FABA712BC8D65FE32E4C87763EA7A1
+SharedKey = 598F8AE2DE9076C5627F7E2D7F0F01E9E323A3CBB2A1161A15A608AD8B613F1D
+
+DRBG_SeedA = B394533AE57436E7D22DE41CCD3BB5961DBEC3293AB12280D431C3623079DAFB9B1C89B477488982A92A893F26A761C87CCF544765CE7760718609DA6E06B85F
+H_OutputA = 85C302789EA39BD7324A27166B9F2D535E5F1B0D301DAC0E8C9D7EB27CF8433C
+DRBG_SeedB = 734C4E90D251993031AB3C99148403EC4A301C8B04482E7072F923D7FFA380FD
+H_OutputB = 3AEC7A31813BE53B03CA422115FD1F97403B9206391D6048180BBBE0E4643C61
+SharedKey = 37AAA8E26F4ED19ACA82E17EE5B3C5C39FD8074C5C026981A1D29B7E72724275
+
+DRBG_SeedA = 67C2069E60424EF2E6DB7818A3106D9CB2521A31E741AC19E4E233E1E073BA619F713FEBEE2C24D1DB111236D359B67786C3C0EE589E20D3ADF86A8761DFBF02
+H_OutputA = 4B1E075CA073D7A49C40BFA51E98794ADEFE2139F1D29116D7075F7638A5DEC0
+DRBG_SeedB = C1B1EC11400E04320F0A6D4DA68CDD7C7C5B137D04642217A829377006D5343D
+H_OutputB = DD8000F4DDD25B346466EC835143B8733F44FA2BD8C55943FB7B71C8C743831B
+SharedKey = 90E754AE92C4BF2065FE3C6EBC9F4F21DBD75366E8CC26CFECEE918F6C142994
+
+DRBG_SeedA = 9D0F594ECAB68E24B7611F34B4A4EBF88D07A892814BA1CCE717CC7B5E13E28F759FC9639A53EB58B4BDF1FD882DE20ED8DF8A8307E30E9304046DA083185214
+H_OutputA = 4FCCB66D012082E914F8BE0E33017ADBBF05FA96E118E3CDF43DB06A6E2B252C
+DRBG_SeedB = 87612542475CA64E2ADEBAAB27E909A47DE97BF4533BC64D0413DB93A4FB5EDE
+H_OutputB = FC66B656839C486683B87DBBF1A83173A74A14EC823A4E77F408032E58A702A1
+SharedKey = CD557A5685D5D4852178ECEDC610FE7666C37B8B479055867B00AF3DFA2D9FF6
+
+DRBG_SeedA = 3EDE1BAA6771A71C3CA21D89F9957F3BB552F1E9F3C2715DF928C34BCD4196353184E1053398BFEFB1CCA9B4ED281C285FD7E331322DD0E56D18DBABADE575DD
+H_OutputA = FDF85F5EB5037FDD2C42EEDF34BBA2CFF8145F25999526C909BD2720D4A0EC13
+DRBG_SeedB = A7FD4951CD4E23103C1956E51F0C7876C187C899D20BBD3D0A7249E9044719EB
+H_OutputB = 67A457B45E883BC542FCB3686932832D86262DCFF7BA8FA405CBFC8A28F1C873
+SharedKey = E69B62AFA4688684B86DDA5C73DF110C20A53BBADA7391053650E5D6E0B9C3DE
+
+DRBG_SeedA = B7DB187CB4806B989DC319DB3A8BF732C0FD490247DE53CE60944E294A90F72E9B8BED4AD6429D6D7E48AEFCB6A281ADB7FEFE434DE9378D927F53C8A572FEF2
+H_OutputA = 6A14246EC2B29B6D25F8DB70F1407C78901583018811E2F74C4912FDB01F5F38
+DRBG_SeedB = 43F987CA0B123EAE34F6D5A2EC1736312E06D3CF741ACF052C8346A7299B293B
+H_OutputB = AE121A543E2CA30AE7E4D11D391B4E5A00BC7C4B505F8BEEF4F80A01728E6DC8
+SharedKey = 8288957CCE1F00480061FF1AB3017423A700116BF1722C6E78479B4E7F34514C
+
+DRBG_SeedA = 45A3050815EB3D9F857D67211A620C37D4A076F0C6CC8DAFDB361DE5F65478CE3B40C18A8D20BB8AE5793648C5AD914831E47450DD1EE104CE96A3C8E1B41366
+H_OutputA = 1673B3043FDF38838FD73485AD36445D3904EB3D98E2BC2FC0CDC40D3EDDC9B9
+DRBG_SeedB = 493455CAFE34441E716162DE1146C8965045447F7AEADC2B4C4C1671F368C465
+H_OutputB = FC8C2120951BA783E176968E947AAC946C059E70FBBA45441713154EE38B3BF5
+SharedKey = 6F26615EE619ECFBFA94C60621B03FB43BDC485A38BDB5DC33F57AE6610E4C41
+
+DRBG_SeedA = 840E670F5CD92EF58D8EBE6E984C5745C9F1104396A85FA829F99F423DB269BD1C9E8EDFE80977C925B99DDC3621A38E296A301FE2343FF5041E869B721AA19D
+H_OutputA = 1C1422CEBD6593587CA304CC18374FB2944D80A6330DA1132C105C6D4AEE6F6E
+DRBG_SeedB = A321788F1032F0921F7BB7E6BD7DF3B4759EB588D6F58F5A5400F5AD250E50CF
+H_OutputB = 5F039E52429D7D1B8EC57CC722F5B260DE91BBFFFCDC2D54C3E0224AEE91685D
+SharedKey = A69A5976CC3DD097CA99A1F21351CE7C73F9E83541D5F9371EA151FC7228CA4C
+
+DRBG_SeedA = 24C6991E6BD26F267D25325CB7453106D9A62A0D50B18A8B005193C0CBC114BEC7E77400AF99ECB7A75CEE1ABD56F121B6851439A167DAE89072A956714BDD53
+H_OutputA = A19ADE52088328F59EC1C11C31D80B6F54F4A881AD4F6E8E20959F76A4617A95
+DRBG_SeedB = 8BA0E8F4AD04CDD671162C295294CE7DDDA791854EAA46BB7A05783F556EA91B
+H_OutputB = FBD0E080F05353E84270EAADC26E4BE040857719B218CDD098EDDBE63B8C47EB
+SharedKey = 9D94E6CE1DF6A2E731B59E412502508A460A98C1F0120810CF7DE7D54DDDC65D
+
+DRBG_SeedA = 59A0B1EF7EF633DCD492C786E8C186498DEAF7D0B3C2002875422D2D4946918349C82600A69F2DA8BF5B70B0376F421538918CCF479AA163A8E45A6038057032
+H_OutputA = 6FB982A97524B292B7225B751C9FE5F77B2FB0484C967816243969E2972181EC
+DRBG_SeedB = EFB607217324B58946DCCE9A3D1BFF00C5E87CDFB8EE2D6E879BB1AAEA6E6A92
+H_OutputB = B46D1CA74A3F22249733E2BA7891D92D72145FB1A3D3F366D2141533C62F90E1
+SharedKey = 144F275A5AFC6DF0D582D06F5764C9C293317767B4C21B080B96F2D65301CA7B
+
+DRBG_SeedA = 0AA5E02DDAB8EF027770B41BE3BA273DEB1C01F7EF65960FFC550BCE9E02576F827148BB1B9CCE0DBDFFEA9D07D2EBB31EE7D168A1B8A78A7899BFB74131303A
+H_OutputA = C82C087B02B0FC1B6D9C2BB3C96C1E817609235D218C9FB2723BCD1C49F22A14
+DRBG_SeedB = EFF6CCF26A1EAED56CEB2E78EDD46837977EA2B04EA936A1FD642E4C4FF65FF9
+H_OutputB = 1E62730C7CB6B46237A5B8B64E9447994CAF48BC754D7FE73CEBB7C49BB1E223
+SharedKey = B3D619A91DE6C9B533A1E422B165B4C45D50B97E9730FCBCFF75C18C1C762083
+
+DRBG_SeedA = 5A50883E6E22D1C2B5C3714C139789DB4068B91C6A0E30254062471DC30EA0D208C9927332C22FAD883AB2EA1783AD18FB47CBFAD044476CD936C2C4923DCF88
+H_OutputA = E6C3E6F8FA50F49D089274AA8A6FA1D3D4030C13EC9D3799A0194C2CCEA10202
+DRBG_SeedB = 79AE615982A6910628F14BCC7F15EE67387F44BE397F3862DC42CB2BFFAC4B70
+H_OutputB = 7C6A52C981AF791D634EFEF906BE134E250C2E4852F90235C63385A612393D80
+SharedKey = 636C4ED984C1788A15CE90A874CB53EE8D4C1DF78CA3EC0FB0E053C3A76347B1
+
+DRBG_SeedA = 9B3DAE818179D24CC73689E980DCC142468E512CEB0FE2FBDBE3B53E054F08629BCCBCE775B2EFFB6456D49C909437D3E0CD94C7F1F7333D521F0D171759223F
+H_OutputA = 2C136181B454B945FD3D85A397664413F3C37AF24C0F64B5AF090F138BAD4CB7
+DRBG_SeedB = 70F5A4A67D460BF7D14C76E766544FC73996CCC175546CF96692F5DBDDCD121A
+H_OutputB = D06DE8E8DE01A54790497D28037206CCE88E979A07E1FA7232D1D357C2080E23
+SharedKey = 64F19A71628474347A9B5D3B8AE6503B772B8D26DBC5C553C6A73A0FD18EAF65
+
+DRBG_SeedA = BA371EB1415FB409E684BDE9519D1E9AC727991C840CC0FB8401E5B40CE7FDFA775676C646F9FE0255DFC0A49DD0D8A8A43AFE51477FF8445EFDB69B7C9C6D56
+H_OutputA = 3D25E9EA41BC34F4D69FFBDAC49CF5EC735B99FDDEF3896F5452454F4A41069C
+DRBG_SeedB = 0C30FE1A14E6E52F432348B9B6257A7DED4672AE8512C7C977CB6AE32CDA75EC
+H_OutputB = FC175D1F314D8E3D367E61D441D37774753C45CBE228558563F1A0F7B18B7DEE
+SharedKey = E1162E7D90C541307D791806920A95BC709FE43E54AB31C37FE0BE7ECAB09944
+
+DRBG_SeedA = 63A5B7ADF8D4BFCED4FDCD62F1877561D3877100B72B4A4DD0A0395A70C129604114FE25EB3955A58B2EB9873A666454F4778588C62280436C49DFC304B23800
+H_OutputA = B821B9D7EE630DC2AEFF4FBF103167F1E8612875CA3D90279AFA0ED31B1CD481
+DRBG_SeedB = 611C7D9588DBD37D04BEC6326891529ADC8A51FFAAE3B5D8EA04D5E3BA8D0F4D
+H_OutputB = 7CA34FDCE021C46D98131182DEF6B601CD8F44A84AF2E7908B1BE7407073E8A0
+SharedKey = 8356D55A14B0D099822FA67EA371CD0024BC7FE117E7530E4B030CCDA7979EC4
+
+DRBG_SeedA = 63C73754A99BF5FE32F42183CE51FD92FF95D1CDE012D1CAB59AC86A4FB863EA104FB2825FACEA701165A1E490AC21AB803BDAFF42F409ED644B2410BB47F154
+H_OutputA = AE17C252C310A92F01678DF4F25A086C33662899072D1CBE654181769A9BD5EF
+DRBG_SeedB = 282A89C655C0C762ED77206AB2306336C65A3D44698759F5B7BE0A5AEDA0CAB7
+H_OutputB = CF2AE03850F4609055591EF9993878238E8A594C479026597E9579A1FFC1BF8D
+SharedKey = 482579DD43E68E29A75320A1E29B1E13E2CBE03574A1F424D814D7D6F48B9475
+
+DRBG_SeedA = 49E2BD5FCA2514F7B552CAD92A315F4CC55EDA9399A67EC4E283E2FE6F01C21FCC37E6921D03C1975A2D36B9278A9FE6A4484997C9FB9E9E5BB96309A2631264
+H_OutputA = 5C8AF650ECAF6D45CD9E44292B52B44F471010AF48F28651A5CC12376EA4F4DC
+DRBG_SeedB = E8EF02F06FDCB5F1FFC7AF844FB9E92340F05B577D467BC299DECC5B06998681
+H_OutputB = F62489597DADBEF00B326AB42F3E6F585D1FE37516B6D8DB89030990DD8FE3CD
+SharedKey = 0B821BB33E112401FB17E7B642A9950914B2ECE24FE7B0E7D18AAA7F4E0D7420
+
+DRBG_SeedA = 79A35A388C1B28F489E9C458877AF7FFD51F4621EBC4A68CF338CC469A82725AEFBBC7FD7505E23CCA669F648BB0FAE59C9151DD495FC923635AAA4B341CE8ED
+H_OutputA = DD6BDBEA9A80F5A02A6044FF120315B2B98167C0A9EC162F16B72AD338B1C148
+DRBG_SeedB = 9C77DAEE53751C844D98CC80300947307F2D5FE9B94E6452B7C762D94CE1E676
+H_OutputB = 67EF6C68FDBB68424AB757940F2EDB1CB21F8F722BC21A060C15F8077478A753
+SharedKey = 44F563BEA78FBA0F2BA8008BD1D5402CCDF6556CA4AC868AF09D0C67446D485F
+
+DRBG_SeedA = 4498B07B816B6F608854DA26FE25DB3EA4CE2B360FF9CDE761AEF4220285395DA578CB37FD2999FC87DD6AFF96D8C74ACFFE5D3EF20C29106F9C4C212A66EC3A
+H_OutputA = F51DB8DAEB6A3766526D671FCB712F457CB9BF12E2E634A430596E7F1E2A39DA
+DRBG_SeedB = 1E01AC3F346A6A3127E75F3B7C8AA49EA05CC4DA779E0D08726B98C4E9869296
+H_OutputB = 5E48E547309C69ED01FEACB66DF825C172DDEDEF38384824420C399A3E4E3F69
+SharedKey = FCE4E496FBC256285297BE16BF714679B424379D045B3A5E954AEA996293CE88
+
+DRBG_SeedA = 966D242F9E042B47E165F181F9BC6E83B534F769C0A34044788C49F372D025A4444711AF39CE3BC9839AA095AEC6915C7A13803D2C10D861747C627D240D5674
+H_OutputA = E282BA082275E815A4825E4AB996612B37DEC9F293842B1DEE746A8D4D429970
+DRBG_SeedB = 908343780C84EB7275079A8BF3375549012A180E95FB2FEA7FC96823B9F5F8CB
+H_OutputB = D5C3CCFEC39F434E678A6BEAEAFCDF8F8B2EDF4D671BE943D7F8EA8AA61051CE
+SharedKey = E419BBB2F803ECAC56EB4BA4C6E72996030E70A29839646BCF990F8553912EC6
+
+DRBG_SeedA = E16E8E8C01657E9B60B18AF70DF6FA3CC6F49F2C5C4121B55D033782E7C8190D4DE7394F5EF13D98707F54C88B6FBAED7F713C11BDCC0FF7E5F76DCCB4092F71
+H_OutputA = 7E78997292F645895E9B5CF75ACF6A8F542B566501EC603585FF40BDC6484504
+DRBG_SeedB = B0AC85D66C4309F317965468921B74E3CBF544F429A80C5C8B11EA0EE6C97869
+H_OutputB = 0313227BE22C28359CC643B1A6E3AF15E9297B5ACEE78F25146B9D125AB8826B
+SharedKey = BB3E19F6F899F7000EFBBD10CECD84E1E64A241E0B6B9EA5A4236DCE00BB18F9
+
+DRBG_SeedA = 59F0F7ED9FD0E0FCBC34BE0D255DEB1A9515733B2177E365AB60EDC904C2E345E5647C67F3CB594CCE419059323A531F4688706F055CA9EA9091CC0836D3AEC5
+H_OutputA = 0A13746ADECE1F5C9A542B4E0937D4D9E3C45392B041926D8C45CF6A6CBD50E5
+DRBG_SeedB = 6FFF0918A8B17BB4ACB43CABF5ACB7B1F713705BCF61C6226F9679A66084D5E2
+H_OutputB = 0343363774163443090A752219415AE53D50B0B1CC7F1BDECA442A2AB7E75427
+SharedKey = F18A332CDE03AD83E23AAC8C27AB1D8709762E6DF5A3C297D86D685382D0DA9C
+
+DRBG_SeedA = D7D8EDF8C90AF47D8898BE6EC447ED8E7AB63133C7595465C37139D163ABF567EA262E82C836313BFC7F287EC29D53FB5C7639AD8404673EA02012AAC5E94B41
+H_OutputA = A661E6ED75F99B020FD67A543AFA8B20E88D12D50AB19C2F6439D9BC99CD4C0B
+DRBG_SeedB = 2E1D24EA419399FCC8DEDF74C7D717272F06986E89987EDC215CA123AA2B60EA
+H_OutputB = 6E0B0F342ECE0DE5A41687068123F22B5E69C7F5205C5145A7EE9434C7D3D536
+SharedKey = 5603B20A652A831AA732E02E68540B42E46261100D7C877803ED9E2CE3222D13
+
+DRBG_SeedA = 7E6D69974C670D179AA9F0B2E3D46A5C034EC803F8A401AAEA31BD3DFEF22657C3FA3B6EAD2AABD53685CBED8A11D81D725B175D8CFB1CD4408B4E747DA9FAFA
+H_OutputA = 9ED0983DA20962BEF8AC40A8393A8D675BE474CDAFA3C51EDE50980FB2021051
+DRBG_SeedB = 3EC22EB470CF9FA172E2C4E49CC6EBC2B6B13275B70449308874E9B691299DF9
+H_OutputB = 32E2A7E24BBF5E790A87CB6341B88051926D9B3B4A45F902ED4639ED142F6B38
+SharedKey = 449293CBA32097D7A360406526E8DC42F0CF354A4E9431A362F562F297140D89
+
+DRBG_SeedA = 2ABD604D1B6ABACCF3C6BA365E324A23876A9BB78115C08C26B126092831C29B955553CF4AA2CC46C5F0F2F4EB3480274DD6997AF11723626AFEFACD5D25F1C7
+H_OutputA = 77A646EBB79CD3A3B6F1AD01EDE49F96A1386C43429E2DD9F4CEEFC95BF08957
+DRBG_SeedB = E97BA5B0851E7CC98BB3C9D273EEE4B113D0E86B22240A1DC009DD3B3F7E5702
+H_OutputB = BAD2056F1D4912D87BDA722405C77DC3D4CC28A773E2EC0063E5A51C8269CDF4
+SharedKey = BCF664C0B4B8A6D8ACE874B31AEBC5A4BA08C9011A9AE7DF5AD79842F6B11866
+
+DRBG_SeedA = E038452B725F25475ABE833C8A5FD3D4F889AF913743C7EB7F77E0CCDBD37BCCDF7014BA20D8CC7FA5F341B0A25BF8B393C94D3FA915B6DA9DB5410C6C51D4F6
+H_OutputA = 4156620DF4466D8B240EEF87FB52C71766AD47B20DDFAB9B3CE1B3990C2ECFAB
+DRBG_SeedB = E568D2E9B47C20FD58EF369B9E9AEB4C605A3A7041F064422F81B2E0CA6E8CE8
+H_OutputB = 441C7774A9D538918D38A71A7ED90752744D14077B55D0904D612CBA9DF9A640
+SharedKey = 648B73621C58D1C7D407F6E2FD28B6D7D3EFEFD7FBB0B41C6068005814116B95
+
+DRBG_SeedA = 8344A6D9C2BF7A810751349BB4CF52BD6E6CCC72109578D5F4D877F9041AB427C8866C3E906BDC2D4D373B81D2153601DB1375FC255AAE06530C8323238715F2
+H_OutputA = 5539CA4AE3237AACAB25DA8CD15FE1042EF55A38DFC37A06EBEF4887C5B4C891
+DRBG_SeedB = 1E453B823410C6C9FEDD5E0DEC38EE4C6EA4DB3154C5A2E64FCAC44B54174B14
+H_OutputB = B8EFB7276FBD04263D232882AD2B53A4C1D6BBC6F2042B76E149FE9C0A6920A0
+SharedKey = D5327B1FB15C29AE9CDEA99A8FF3A2171CAA59DF14646BAD76DF6EBD983EF6AA
+
+DRBG_SeedA = 61E5EED6ED0FD0A025BD9DA2AF5A9EA3E1C19A1D817ABEEF05941583C0D153635B1E6718F2FA8D1615BCEAFDB0659A533986CBA79C6658F149E0A1C5B4042905
+H_OutputA = 654C9237AD6FF1D09A372A8F31CBE3633960CBC6BFD2C828E185880D9543BC77
+DRBG_SeedB = B4E7D98C0FE7E122D603674E4B6D1871B3D62D828CF73A3052284BD16B37B2AB
+H_OutputB = C8A963FE6684D55553F6F8BAF50085D5684101C5F9CAE59A3F481216F8E0B5C6
+SharedKey = D7B9C5A2710373051CCCFCBAF3CE044433E66EEF343E9339E5D52E06E651F9AC
+
+DRBG_SeedA = 3446807E23121498793B6865D7F840C96203E339BF2506BCCBE4CA4028F235D472BB6861B2A78AF3F69EEA3BAC261B4979F753DF47D051B7393E46AE84C5F719
+H_OutputA = BFEEACCA26EED2453139E6AC0E881141B173557EB98306D95B912085346D3F1D
+DRBG_SeedB = 59BBF443854FCBFDF7F242FD1865370CB44F931F47417DE6DA881D793D8EED75
+H_OutputB = 59117D3BCEB840CBF9D5C1D99A4C569E9799EE6B3F5C41726E2CAC9E31E3F225
+SharedKey = E5D7D4CC7C6858B4F8F6AF06867047509499D5DEB0E2B07FF20174397C2B7147
+
+DRBG_SeedA = 4181C82AD9B141A42CFA2B7BD047EE63638125CC3A93DFE0C042CC1BE151AE28A68D3601086DBAE48D1A516147CE7CBDB61FC98EEAAD136B106C3FE41B2EE7BE
+H_OutputA = 462020071EDE53F418F1A13EC75A5DC0AA6174D66BA2F03B3CAF7AC90CB9493E
+DRBG_SeedB = 94850F4AAB51A8CF64CAB1D24805E3C2183D0CF7201419DFBFDFEDE3927A3D95
+H_OutputB = 22DA162064B2EC71185A9919AE8415C29317DD93CEF177C15409D2EA5CE1160C
+SharedKey = 5B55B18D674D99E3DA55771ED3985B0B0DE731D4AA12EB91A3088B629664398A
+
+DRBG_SeedA = 0E8A0134237CC74DC38A87D96E2370F7F6D2051802775715D9F6542FF173A545B5A3FD9E3844BC71A90D1B969429AE63F67AAE007286F060A9EBC680FDB9CFD1
+H_OutputA = AFE4F19F9F1EFEF0D5F3508702E9599FACF5ACC58521E45E7077C74EE04882A1
+DRBG_SeedB = 5045EE8BAE926505D6C7D23D7BFDF4EDCB5BCCCADD4DFDEEF301AA2849F7E3B4
+H_OutputB = 6CBE053B876C3F83D7EF46565A98204AC9DC0F1B671545EACE4ED79C2CF196EC
+SharedKey = 91CF522D21E32EDD3DEF5B79BBA8E19FA895B1E1E645877458655E31470C7878
+
+DRBG_SeedA = 32ADEE0AC5A9F6A28ED24CA76DA854C0C1A2220B82533E213284263C8FCA0D3A81FD885ED83CE3E6723BD59DCC49D9F9A801C67DD18FD9F0D5ECE99EA0BCF8AB
+H_OutputA = 177EC48DABED5082BDD235898D3E7628C7A6F3A73BD1F7C35E345B0481DA4036
+DRBG_SeedB = 8DF0A537662AA7A7811DE9C529177D416E7DCD556FD8913A4730F69472FA23A4
+H_OutputB = 4165F6F8447EEE69D1C69F9F9ACDDBA0C89883CE189ABE9868A5E0963E9A3D12
+SharedKey = 44D3774EDDC9E285A543C1C1DBE63B47788CF5EF08EF5D35576F79831860D7AA
+
+DRBG_SeedA = 8499F35E49445CCC584D5AEC213A0CE239A1464945C4CB0FA5D62CB1C060292636E415415A0A206385C675B1CA8857DF042A0791B4AE75513320FF3EF06F55FE
+H_OutputA = 827DFE1F0E0F5F12B7ABF8B2FB285ECDE566247286989BEF2FBAB77D28133FD8
+DRBG_SeedB = FB3602E44294CAD6BEF146377FDCF99447ED32D080E3353BAE0BC2F31BE3B85D
+H_OutputB = 8B1C0135881C7772C481B851235D5B957B08080D2B967F1921402779D4F70D56
+SharedKey = 10DA4D167B3C39042AF31783BD0750E16E7B351D43000557CC54154618A4B04A
+
+DRBG_SeedA = A668A946C7F47357E9AA10BD6BC9CBAC21302198BB84DD2EACFAEBACEBC4B880CB22F8D5E457B17868FED296828C7B79DD6916DFCE1803D06E8FEDAAB264864B
+H_OutputA = B0F55496DF6105BA32137CFE872D4F26F5D01DCA97860EF347FC6965C07B95BD
+DRBG_SeedB = A03538052CE9769094F54B4818BC64B4F3A8ED5A017D5B337F443E2D6F590D6C
+H_OutputB = 8809454F84240F3A41F976890C6BB2BB533BECFE552A82715DA6889C2728EF56
+SharedKey = 4F5E0DA953931ED14AA08BA42509DA1860144FD258ABB8710103D78FA728A0F8
+
+DRBG_SeedA = E491BB1703AB6DC8F3B49E2E83CA56D34B98BA72ED162235B5ACB619CC7437CADEBACF6AB8B8075C3F52EF483FBE8FF1895076EE3472C2756AC8DFE1003BA065
+H_OutputA = DF40E6A6130C9D8CEFF70EF0BE0D46C762F2177148304C6FA78DF15DD7180E5A
+DRBG_SeedB = 3FE597B526A010F863108A6225DB6728CE9D39A988CEF6AAE3FF27F90CB95289
+H_OutputB = 84CF10D7E5EABD8BA4DF6AC7D46A0E77DAA079C6EE91ADF4C26DF5BCA2C2C77A
+SharedKey = FD396B414AAC2626571C6F03A63D694C3C2E6AD52C809BCCD4DAF2023AC0076D
+
+DRBG_SeedA = 9CC69D88A97B1780020A9DD94662B32DDA75E73B3566C6ECD6D55CE20703B4398FC70C507C22E822EEF378916F73FB4974B2262EAD558CF9FF9995E1873CE8ED
+H_OutputA = 0E2B0338852304730957B882FCED126400217421065D105BC953EBA951084F56
+DRBG_SeedB = B19C94C5E79914D62004265107492E2528F1CE60FB543648499C9BB8D4D64882
+H_OutputB = F98C39D7E55072BF712C065670951550F147FD40FAD41037CC24A214527CEB45
+SharedKey = 550048838376902E5EB831A737B4792463970521A3EB091213DD92F3E9F8D552
+
+DRBG_SeedA = 3FFF8D8EFE4BB607227F7C640C23A7E8DE1548FD2482E558E6D1A7228B3D4B4BF64F4477E6D658F8A2185CDF8ACF3243D365C0C952FFE2A8D04932CBB0CAA4CA
+H_OutputA = EF24750A0A5FE48CFF24EE72E918A5F2E0DC4FB0D28E22CD5BC8A7A7007B6F47
+DRBG_SeedB = A9F02E2F051F2E650333D4F2AD7FDC140E500AF663EBFA39960291FB78602C70
+H_OutputB = 98BDD07181C63F0980028142E7C3BEDA08CB63E970B15383CD3743A69C44F189
+SharedKey = 7BE87DD49F27306E926C195F5528DF7D2B1F5D4290B25F9EF583031570F53F28
+
+DRBG_SeedA = 1B176B6B728FF4EBF74C49156B3E0D5D7C9D5B89902A853FA83F992063938FE4CFFEE511E61EBC1FA2150C3BA45366509A9EA2966F8036852DE830D5B806F0AE
+H_OutputA = AB91EC21869C9D5D275A19CD647A7865AB13D4A75EAE31AAE8E91CC55C178020
+DRBG_SeedB = 3C05379CD47B82C5A48281D772CB668209E126A8B9E8A2C21F5DCE0163ED30DE
+H_OutputB = 8A59D4DD498190B431211F1077B1A2A0F847FE72C4959615AF164F31B5EF314C
+SharedKey = A993F4354A9D4E3798AEB8364BAD27DDC79830065F89BF06027D09C7D27EFAC9
+
+DRBG_SeedA = B83434EEFD3E01FEF97B78FA3D1B1F9B6D5B8DC86FF45E5CBD1E41226AF0D8124CA1C3C25E124A13E46136BE3AA8B816E21C70DB9F32CB10C8AD015BEF39A38E
+H_OutputA = 33F6E7DD3260C730E1F28D97313D892A649CE85DF443DDEECE26582CC6EB1052
+DRBG_SeedB = 31C7BD31CE9BE01568A9E584C0B7896C9728CF35B745AE30253942FFB8DC65EE
+H_OutputB = 741F4FF18477A79F1DEF49721D1C9534C1BC06B8B9A6F1FFBC88BF454B13E6E4
+SharedKey = 1D3229C7FFB0C1F11C1F30808273AFF42DC153F37416F140D548FB6EDAD851F8
+
+DRBG_SeedA = FC168A27C0B4BA2624C5D7662102A02A97BFE4128FBD1A065C02398109A9768DEE35E8A07DB198EF9612867EAD222ABF21043FB904C8BE766251BCF3BCD83174
+H_OutputA = 8A80D0F145221334650272CAE910C463621E1287F4B22C4D73BF2B6D4ACD38F5
+DRBG_SeedB = C6ABDC2719EBC62614286E369FE83B27C82189878B625ABD5AE4102DDD50A5EA
+H_OutputB = 5B251E0A87137FE3DBF4604CCFE29CCF2885DA20B36D8A1EF8A1805C179EBE36
+SharedKey = 04C576AD52F80D60EBD4FA667CC1A3CEBE910FB5CB1F6390AD4C68C2B6475148
+
+DRBG_SeedA = E38455CCBB7E676C7565344359737D79C47EB71DEFA14B226094A3220D8DA53EAF0F16A947E194367EC0D8B4D7FA8331105B14DC721C2E6A2A402FE19BE8A37D
+H_OutputA = 59BD987EA6E3D11CED35A38DCE9D97C6B3702D81B902B4BE83432B6F236719C2
+DRBG_SeedB = B511B9791ACBFCC7865FA6E6DCCB977BC78F47127E2EF37E292BBD0BD6B8FDA1
+H_OutputB = A8245E15278C21EA1548DE311E4196437A1487FB8A471C5BD95B7304D12B537A
+SharedKey = 01780AFF20EB473134A85CAB178E04DE030F065640F74D21AC912CC1D3BD2245
+
+DRBG_SeedA = 2B3EB8A13F92FBF41D970A4FBC905996CCD50ADA1974550E1D77C2F1A228F3F7C6709BBD5FB0FF513F02864D53CCAFB2E5D74B1AB7E5DC4A87F414B081BB66CF
+H_OutputA = 06F4793F2CB5DB35D0508C0D0D0CEE6ABE78D52D848AFA953846383FC71F7778
+DRBG_SeedB = A7EF0C7BD19EEAD821B0DC555750E0D2009DA5346A5DBF1D5392A07638077508
+H_OutputB = 5A626780E5C0AAAE825060C04CE7ACE312DEFCED505E04453A7F99C839CF933A
+SharedKey = 87BE1CAB71F1EA788C2CC9C54EF4C81DCA8B643E966E454197413B9B1CB7B4A3
+
+DRBG_SeedA = BE59D343616199498736673949018D1766AF589B04F71965D2DEAB5E58809E3D7491A24E627B4F507A3DBCBFE0B391C38B1529771D8CCED717FDDF4A8FB4F098
+H_OutputA = 1289E8E80D743A7EB8B321304CF86D6E217F7DA58C573D6507B1C804D3992801
+DRBG_SeedB = F566B0F15FFCB34B45A541DBDBEB411629A1156DE2A5F95A79D037A4BF531DE8
+H_OutputB = 6263C9FF0072C2DEBC9926C53693B721AF08A60B36F987001EBC554CD2A31404
+SharedKey = 4E7E72CCE0C7522508BB82873799A5260FEFA137A2B0935A6C04CB22535948BB
+
+DRBG_SeedA = F23CDB8855470083651FCEC71BFB1B048A97CBF2AA2BDEBD9F961C1ED37608DE6602CFDB60C477C564E0FBAE4AA163321273E7DA7D2B34E3D381CE359285EE48
+H_OutputA = 0E8773BD7A879CA57CEAC3127C9DBA94540EB54E309B0F41E790F1708694A13A
+DRBG_SeedB = FA35F0E4507738CCC19060A4A7F1A5979D75193B7AEB4741FB6A9E9CA4F8AF3E
+H_OutputB = 8EB29A39E0EF52A3431A95E59F346E55D4414FB54A64515F1A69074A428B7009
+SharedKey = BBE774D3E1E8B31254926C839E0459023102FE654EED9E2D262162EB28836608
+
+DRBG_SeedA = 422522A8523BAEF0155BA5878DD3A907F85283FCB4735CE48FB798160E1D1DBDC87781F1865D13677080D79F893F783946D064A6BDD39CEAA211DB1B191D06E2
+H_OutputA = 2DA5E08FA9071BF485AAC7BDEA5C1C16AE661DC481C92F7896D0A30A86255077
+DRBG_SeedB = F02003FD171A386835F874EA373F78D47264BCE84706545D83704BED60A3CD4D
+H_OutputB = EF85732B003EABC503C9BC8DC1B2C1AE76323472F69767D8EE3E70D0E07DA4F0
+SharedKey = D9D432F54B7C936161DA1E4D09CA0E2CA569EF80A8C3CA9552AFF7D87B3A0AA2
+
+DRBG_SeedA = E8B1575ECD786E6DBCBFBB7AFFE2DDD335AEBAFF7651276D4A77D9F3373738926DE0B1EC1BCCE1ABA74CE3AA4FB14D7F4A53EE260481B1E1396A67D0EF295532
+H_OutputA = 19CA4EDFE642D1FE1ABCA36FF63C4EBBDC120A28C223A10F4556F7335F73E2C4
+DRBG_SeedB = 1D4C1A79D40048FE9165DDD476FD89EBAFFA297286AF7A31B1BBCAB343F139D2
+H_OutputB = 5E48CB07EDCEE70CEDCEF6A411DED4A5E0C7FB1B8A82EEA1BBEB98C803581705
+SharedKey = 9B273EE349C3A4B9D4BCE49BA793708C78639D93DBDBF7EEDC9A557471E1E7D9
+
+DRBG_SeedA = 9D5F68F11311CEA2E0CE64FAAC4C9E3DCA7CE0D971817A96D035424E3D39B58E7F54EF49BFEA513E80DFE6D4E14C0795508165077DC537DC6C0DB3EB1FC607FB
+H_OutputA = 7C130345D2DEC448DD301E1A6988D84D2F3FFE181F43645F636E39B72564BE2F
+DRBG_SeedB = D8CE01CB7B12E858F421B9852D31E67D1B90449929B8DEDD50D5A5BDB52D69C1
+H_OutputB = 50C41AFFD8004BD0C92630439F1DDE62302EF034BBFDF23BA49519B4BDAA0C13
+SharedKey = 3733D2277DFEFDF1CD530B91230BFB3626368930DAECDF33C7B122198D676FA1
+
+DRBG_SeedA = 138602F5CE55F310D8D105F4F613D8C5A3CF433072928127B3C9025EB98BC3B727990CFBC906369F9660C0206F51F4190D67F4B7AB806E92F5FBEBED5758F179
+H_OutputA = DA0F56A5971F4A5287ED5D1067AA7FD6D1765553EF9BC5DB1900427FE44214C2
+DRBG_SeedB = BE6293F2ABB73266703AFC19A785CF8D8088B62455739674EB1C8C502E1FEB7C
+H_OutputB = 7FF14D676BCEC4408148C1E942B74ACC6F6177D966C02A748E5253FF896BCAAA
+SharedKey = 0E443F3CB3B4A735D9260BAB601BAF4FE8FC940C494AB95382BD5501B1A99AAD
+
+DRBG_SeedA = 488EE0A2C40D115E0E3F056548E7099D77BE89A4FACB477A9C92DE786FD6039E0915937B047409537B6DBD378E9C91D54368CA8D0133F4D87622B31D67B0954E
+H_OutputA = F35D95853602A50F8B47718C7A5D4C20AC6792463996CE44964E8A81DCFF2496
+DRBG_SeedB = 03A23814D3093D725CBE11198BA9CB840FEF52BDF3A4580E37232499B7720A87
+H_OutputB = A83D6CAFA262C3C79ED81E29BEE3B83E77A69E0151E57E49347E36AAF867EF86
+SharedKey = B19E265157722C8CC30B19F2A80315B8B83C622E404F52FA0DECB66D994C97FE
+
+DRBG_SeedA = A3686035F8207B638FC35C8BFBBF06F3BBDB257A6E013EC84699CE933248274102DD6AEF5FB82347A619BD15C0DF138DA5002E007945E87DB8EA54F6A0639D35
+H_OutputA = 506503B382E12B70CCF15C39D28A7601BD12966C471A1469E331A001038272BE
+DRBG_SeedB = DE743C6BEB0C4F8DB755AC584B2CBADFD0E217726511DCB7737119BFF830A1F9
+H_OutputB = 59C81830CC17E6F00C692BB07563BAC6F6442CA8F04F678662BBB51A040DE7D2
+SharedKey = 0530F776F41590C4E6ADE6BC92454346D3034823EF05C01511AD7931B23C9D5C
+
+DRBG_SeedA = BFC2750520F8BBDEF11B706C43EAD7F79091C22D65DFE2C85188265CACB81164B15A60B3A15F7EA720FC71AF9A93B7A00B3A401C64E91B42625646C9DCE42194
+H_OutputA = 4D00A2ABF0336C06BE3538CD1BA4C3BE925181C517F4F97EDC39C3813B1F3CF2
+DRBG_SeedB = FE3CA15C2D3AE9A41F84F65E599D00E05633437DC49AF5A0AF27E36FE7A8B569
+H_OutputB = E3ACE29A123B0ED7387C40A9B9142C1D9C931DF44251DCB5E93B91D9D8B0FC7F
+SharedKey = 47B2E4EBC2B66F4E699986BA7CFFCBED39AB0B2AA9444EB70ABDA8E7785F3FD8
+
+DRBG_SeedA = 5079985BCE00B5516429DC9C313D3F5684C8F3614DC8F0481351D6BF642016663312D7B2B89FAB6A5F87C6E823F2DB1A43DF50332C9FD1F54CB1D1CBC23DD553
+H_OutputA = F9A79283C3BEF4D27A9394D12F327FEBA621F08D093EE7CC28C23D4D69F32752
+DRBG_SeedB = 03EA73734DF48EBB3B7991C9A95E2A32CCCD7F99C171BCD88B29CBF5188631C1
+H_OutputB = D915B8FAEFFBFBFFB642F2DD001BD39E1E21897A59C5595D1319DD45C88F8F13
+SharedKey = 4B3B34063A380C6B42F1AAE04486192E5A6663D3AB6EA0BFD06E29A07AAAD6D9
+
+DRBG_SeedA = A2B587F54AFB3C69E8740092ED26839FA79465D91B9F113013544F84ECF86279276C8802E5C1ACB6403BDAAB3595FDA8E2F82BB9CE2D3D0BB94B1797325C5008
+H_OutputA = 6EA11816DF1D4D939CCB358033B9C318804CED56C2D59075C9E4B5982D87D828
+DRBG_SeedB = 9069B066FC495CBFC83DCCA0E092D54670FA72B0DB59A2A4F95A1AA3B2944758
+H_OutputB = 98FDC523BDC0E65DF9884A39EB079A2505CFCAE9E7C98E35A1FBB36B7FB1BA52
+SharedKey = D2CEE1309FCA1D3FA5034A4BC6DB536892EBEE5DAD2BC3781E2E4B9FBEC35986
+
+DRBG_SeedA = 662F4D6D4CF134230FCFEF61874B09733CC2D8765C45008BF87339191816BCED4543D21D764FDDFCFF31F0041B06AB160C6557FD93E846ACDEE6701FFCA162D8
+H_OutputA = 038D863BC73E32DDCA11770C77909950BD7ACE02563D8E00A335941EE4084A93
+DRBG_SeedB = 3708240F04F1A266F6AECA0AC66EC8391533083E7666C8FDDEB7591926A112B2
+H_OutputB = 0BD952B00D7F9BCAB739AB07870E9176C9675D47B3696B221FEA688431F280E7
+SharedKey = 4F3C6028BDD4C89F07E46AFFAACC4FA362665ABDADD82AF6BF39DDB7CDEC90CC
+
+DRBG_SeedA = 7E71EED63D3F22AB7359272214C8B7AB4C2D83C1B7A34DBFEEF703A8793B271971A923B68C6E46997CC6CAF456E1195D83E709DB44991750EDD8029415007A1E
+H_OutputA = AC9E6804D743D23040898D1E2CEC8DA338D9A6F1E01E107DA03C9AA51604D72B
+DRBG_SeedB = 26C7417820B32BB18925D6E7CF991D656A2A5C6F2EB862CCFC7480478CA4F256
+H_OutputB = CF5282E1F4F8F79C459AF2B6687F2F2E96FEBF9F186EADE0AB40F49C19391FED
+SharedKey = D6118693EE4E1D0266CDA1B631258B5D0B9B17E2954E2F4C291A8164F3D55BA5
+
+DRBG_SeedA = C38AF827F0FFD88499D87BDA1F58FEF20F0640E134069B0E1DC8F7D5EDF91FB27DE2449DDCA9D131431CCB590A0A9C39FE6B8D5CC74A3114ECF5B7F42BCDD810
+H_OutputA = EC1A27498B19E8882CCD38DE6997C0A2E1BA6B085369E4D766FFE2D4B4C06987
+DRBG_SeedB = 62FE5B9E5836BB8391A42961C1572CAC7F274E5C92000DFE0D27865C4C95AB19
+H_OutputB = 781A323247D3845D58C897B2FBE8C68B6AD6CD2A617D34F945345E67D90F60B7
+SharedKey = 15E3EA8C23062395DB6190DA74B3F51146A95CA0A59AA5989C375B29EBED0C4B
+
+DRBG_SeedA = 756A7276B744D4394718CF3AEC4148CBA6B9E2B7C42B5C96F8C83E6B194D29FA052BAB8A76EA0BDC4296D9A9016135B692E34254F5F0E3C27F7AF1432F1B13F0
+H_OutputA = F91BB11C8F22C3E66C741EB77814115542F89D6B713E555EEC4C60CBDF7D22A7
+DRBG_SeedB = B9CB37BB611540862150594C56B61D7DDBAB40A89FA0F1C7FCFFF31FBDFF0915
+H_OutputB = 9CDDF3D5784D5BEADA30A03CDF8CD67C988FD1D5FC281E81E5129D4C7F55245B
+SharedKey = 99376A9EAE03265762AD6E4276316900C0075BBC6844D72A408E7CA2472A2C7D
+
+DRBG_SeedA = A30D55C6CBA89C56AABFC3BEC86D90B2A1A5DA01396D941AC6E038823D5224F54376A45A4464C78CFF0FAD7F0A06B16E78278C846A49AB7AE7D79936C29A7658
+H_OutputA = 77DB84CE51FC329DCB7DB1628902CC74F552FD642C8DFDBEE69171EBA5FCD4B6
+DRBG_SeedB = 197EB3D6A95F2771B4BAE51E452C7693FE6503476C3D578F5F6CB4354E072084
+H_OutputB = C3AE01F6E7C21ED9FC57B78AA4B61A8347D5EAE08F5EA84BBD0EC45EFAAB05CC
+SharedKey = 4C77736025A9FCEEA8C2695C06ABB1A5E2AC362E52B1091361FF70F9E3FCD947
+
+DRBG_SeedA = E468393FC7D56BDD98F95AB874134D830DD02F1766AF7C761699CBD84EC2514D1BCB4C2673DCBE6EF04252BD0A0D337E73FFD9CC764E75C6C8659C077E1A3221
+H_OutputA = C0218BBDD935DFBE1CC3E7A812959A683CA85575AB0B0E4FE9AE1275A3591F65
+DRBG_SeedB = 691DCF93FF47ECB9AD4BD358DE29E9FACE6DBA6B41264DFCF772798E3A1FB926
+H_OutputB = EF41088860C773F80D35B5B455F03A126EA2BF9FBDDF63608E3174ECBE114FFC
+SharedKey = 195D4173FF312CE3B2BC53D562D927292F3B73A5612DF12A1CC5F2132B849400
+
+DRBG_SeedA = 94B1127BCA3313F868FD52966D27760BED902A9DFBA9FF1AECCACE5879439158379D51FAFBA6B39DE774F1D90EEFCB941C6303124B1CBB7F41D4F7CCED27C332
+H_OutputA = 37A6A49845F39C87B48B0B605A54BCA818F06AFB80696A8E990D731638EC81C8
+DRBG_SeedB = 216D1346B06FAA4A2CA2C190F83695B855E6913C969D20692085A8E443887376
+H_OutputB = FC42AACFCD876C83A648330EF905C93C7F2993EA3A95D50CFEC74F47A7EF4730
+SharedKey = 7DFF884FD3B38FA66F6FAA91AEB5E1EF9D60452100007D09522AD90270AFE789
+
+DRBG_SeedA = ABD520120F20348DD12649B7286C585A6053B89CB7C0630354B35CF53F086801854240798103791700F6EF7CBD48F8131D64BF1F715ECEFDED8ECB983C8A6516
+H_OutputA = 20F0AF97ABF99A61F615AE65429A7BDB9AA38E7E8CECE51557EE92C82FC58481
+DRBG_SeedB = F5283D4F593FD0DA1DD4A47BCA55AA73B24C270B94A43BE3CEE1BBD4DC199805
+H_OutputB = 433DD30B56CD29F429FDAA1AB910949E2887E83FFC130BC5C1C24340EA0358FA
+SharedKey = 6D82F70F8E809A3328EA73D5A73C290EFC04CC58B426588AC51632A85EDF43AA
+
+DRBG_SeedA = D8EE299B120C721E565E8D7A769591712F007A91F404C0394DA7EF7DE470C81A1E5854C2CF72FDB683E176BEC57D705370F48B4FE7FF74E5EC8ABD89E8057A8F
+H_OutputA = AAD6B62EF768C85E2391B45697E5B9B1C3B032357983810C135C75104489316D
+DRBG_SeedB = 687C154E0BB8D217551EE3772E82ADC50FC166423876CB4D6B1BAE71B82B5CCE
+H_OutputB = 6D933259010CCBAC1319A0CE4215171EB237068A002E4308AEA4903E7DB63ECD
+SharedKey = 7405ABB1343896D4E90A062062009C9D8DB5712863399F8AF3307A844D32C42F
+
+DRBG_SeedA = CD2716C16B64954F63E5C8F8F6646A9BBEE637D279F4D3F9EC0C8428DE8787DC7FFEAFE6D3DE19C5DB554CF10EF06B22F8BDF70950C7584E96B4ABF00E67A324
+H_OutputA = D6FE7E7D22670967E82AA68F165015C500CDCB69554994596715D47EA46D84B7
+DRBG_SeedB = 16C227A929C9DC997780C394C946E08A7CE9BC61FCC4968B0EE37D94F97A654C
+H_OutputB = 89DC19C9088E33F24EED65BE6E7EDBEA3186D63F3C258D999CED7050F60C7079
+SharedKey = A46F6AF70782CDDAF325588C0E51BB2E2401306B9F0DD4FAE86C09B63BF11E24
+
+DRBG_SeedA = F1940DED8C7E711EC8E55A038D28FC4D95060A862774DF8ED545AD7EBF27CCC1930F89C130DF373479D336E5F364DBF7D9F598A2045D72DE0B26DFE071DD897D
+H_OutputA = 0533E622D3DF4BAB2EE10B3751C60175A9960824A9210E77C43F1BF39B6801A3
+DRBG_SeedB = 2C3B8B1935DF54121B6C42750214A979507DEE82FD48CC7A6FC7BD9459B4C8D5
+H_OutputB = CA536570331B519CF1E37BB685B82338EFF18D109BBF7A20CB661303FA85C8E7
+SharedKey = F755FFADC248437904A4E608A272D5C359567DAF90A5A16ACC1CEA0C23337B56
+
+DRBG_SeedA = BCBC510E7BF5A418C95BE42D2339C625F887BD6ECD8B64E66C48ACCF08772C1E855A7C6B3F80E6AF5CED850BA373741425CECBDDB18C5D4CF8CECF31945761BA
+H_OutputA = 681EAB63A8DBE4AAE73ABF77A801DD78A1AF91B061D54E460646EDA49A728EE5
+DRBG_SeedB = 338B310E4A696075E3F49291CFFA290BB8757C959BC31C88C1C7F944C5598B2E
+H_OutputB = 8C033EAC0759AFBD3AC78DC64BABE3B0C2BB4BDA5518EBF6BDC2CD17BB673F8A
+SharedKey = 0E16312DF3B7F81DB350A4CD09CA2494891FDA5371D1A7A72824ED5A5276CE2E
+
+DRBG_SeedA = E17D8C9C00C61710113D80D06BBD0760CF97214070A1548B4BF94EF8EBF555F9629D529172395E7054F496F9CC0E29552102F83F82FC492581FCAE01B4823A09
+H_OutputA = 27FEBF2F30DB511D2418D510EB2C08B8801FB70956EEBF805E50BC0FBBE681BD
+DRBG_SeedB = 796A26F083E58DD18F717C87A268285C1AEAFDC95B19739DE6BA4FC6D264F214
+H_OutputB = AF3794C4DD8C703AFADE4B1B2DD4FF342E62155B5B5BAD7B583A21665A5D665A
+SharedKey = 5A4BBADA1FE99200B937241CA4EC4AD81403AF838537CFB7A64FD07A6267F50A
+
+DRBG_SeedA = 4A15C22331EEF350962E92AA95BD780A9FCD6A7A2FDF3742E99309E6BD4A034D6EB9A7F766BBCC54E26D551B037BDB0785C4BD3C02A9786A60A0AAF427E3CA2A
+H_OutputA = BE61BFEB5B4213BAF48323ACDC6EB5BDD2126F7708BF8E95BA2804AE63E08406
+DRBG_SeedB = AFBBDDC02CB4B58CE9F8F0690823B675DDAF0F68299C60F97686B0B4D858A6BA
+H_OutputB = 0B0880556E3E1A75F89F05468DA8316F5BBC2AB0BF4C4E3FEA097F6209E31C15
+SharedKey = E82495121809951A6DE94C45FE7576DF0BAF493E462964F00BF04CCAC4F9F218
+
+DRBG_SeedA = 5E68F261DE9B20CC6A6563301EDA44E69BEA53DCEC74A249C269FC2DFF394EA95EAD628BE07127C3CB4736CEA24557A9ACF26AC1E686EA1C5D499BF365B5E7D4
+H_OutputA = 9E1A9DF56062FAB1254F922C6D4CA326560B52E0A6A6B56F08FD2572BC765C20
+DRBG_SeedB = 87A9B6CE030A132482FA203070C780425C460C60044968FD9C8C2B09432A3351
+H_OutputB = BDE24DA4A919C0D84DC712B25B525F127441B8BFC89A187DBDAE06E1A1AD6C45
+SharedKey = F5DD1468D1EE56CFBBFD883AB8D65C9BA7A4AEC0998C090372D6BE2504039CEF
+
+DRBG_SeedA = 1445B17725DE136329F026574015465A40FBEF3AB0D8694F4C172511BE4701753A20689FA8FABB9BC8287183A9C1A675DD7984BB4C5B4E79F0845B172DD8BD5E
+H_OutputA = 97EA4963BA7D2DEF70AD2AC2EB27D36EDEF316AEB43AA2D5FED8926A1DD5B1E9
+DRBG_SeedB = D0097A9B7BEA0A72DEAF725889DE29BB6A006CBBCC03D4A9B10B975C81CFF3DF
+H_OutputB = 63C526AFFEABB6DECB89D5E6BC42AA9DA0FBADB3FA20C9BF98D12D8D3C492CAC
+SharedKey = 415FE7B5F24781EA18B88B954BCD376E432455A8471CBD2DF4D66764D95FF30C
+
+DRBG_SeedA = 754B2ED8FF3FB94C57F9E474C76A56DBA24C4EB7EDE79C26D91C42B7A471B17AD273A543219D29EA8674B30F681B55F62F0411A26D1539B2FCB3A95F23B74C8C
+H_OutputA = 9F9EE57B796C07E54B4CD739A90447590831D3E28AD08BC4D416F5813A0EF257
+DRBG_SeedB = 3573FF439324C171D54897F7720F4F3C8AD9B52F2159DF1F923CCD268746515C
+H_OutputB = C2E16640F08BF2518CAA0E8F02ABD902DFA9DD95E656B075AB04D62DA7CE2FBE
+SharedKey = 9AB0E61A289692FEB8C810FB6B5D7CACAE01111D8FE3A8ED6CB8E1F782375FEF
+
+DRBG_SeedA = 710CBCA2C7F04CD81C1F774AA1A8638A4747FC689C646E01DB6B9CF5F6A3BE4653A22F24B4548E31D0E94B4B09D873640DFB4FE4264AB4930700DC5E439C9542
+H_OutputA = 1C1373D13790F7C7A769CF94E9D2D10D968EAF646E1A35AD683E606A8B3CD7EF
+DRBG_SeedB = 46AEE325BCB0BC2CADF3257162A8A736ABF559356E36A34337595C5B14B3E4FB
+H_OutputB = 74BF36C64E77D20B3228BCD4284C6ECA15F01F6A1C6949C1A6185448DF761B29
+SharedKey = BF274A528DD50CA73B590CC81B2DD8A4F0D9EF7BF15FC0FDC6F3EBC4A225B4C0
+
+DRBG_SeedA = 8D43C57E1899B13D1E17172030CC4A6120A526186946E0693BF2E37B7B3F240F5DF19B52E6DF2ADD319CA8125F6A164DD945D91281AA8FF05D9442055F96635C
+H_OutputA = F79F9B5D393878064F433C5D647D59DAA367F112AB0C5D5584EA81ED30DBF37D
+DRBG_SeedB = 3BCB6A2FF7BFED5C22D09990B6AD0E726A3BA570574D182BF4A6ACFC217DD445
+H_OutputB = A129CAD6F0004A1C036BD970A1DBAFB584580A99A5B9B7354096CCE12DC32EF4
+SharedKey = DDD97B5AF1BD7F34D32A89BED5DC67D927FD0831C93A9FE49F3C663D850E2120
+
+DRBG_SeedA = 6B7E64ED1CB6F2A8EFDF7BC1E72F05BE076CD3D8B1B9E2DD1A3CBEFCED6B518F44EE3BB9911C1CBBC959A7C765977595B9CC2D1D7FA41102BD74025F6906290A
+H_OutputA = 38BDF27729B2DF80D71B13732EA71ED7CFDD679668B8A39862307DDA8BF8FAFB
+DRBG_SeedB = 61E7C641FA84FAB3DD7E19CCD734A02D9FBD33C45804FCE5AB023008A1CFD0D5
+H_OutputB = B6CA7749C9DF75A6692ADCAB5266BF81BB5D38EE26D03AB1D8C1EE7D1071D6E4
+SharedKey = 3C606DFA04825BC036BBE0794F59B792F25798D07823EA5913F91145F0FFBC61
+
+DRBG_SeedA = 46ED69E53E2DF617B869F6F3D8C6FDADD531365952884DBC2AF76A0394740F91A6E904CA2D3E44910C66AF0665F5EED3AB7F923BA01F74632365075A208FF8F4
+H_OutputA = A0DDABE54B83B98CE536E72DC80814E6063AD831C91D57A01D423D37D32C40A4
+DRBG_SeedB = 39BC024527495C8E06DA42AFF0DCE8FCA8905448AA57EC5FA495BD842872AB6C
+H_OutputB = 6E169602EFD54B7361FCE481FFB72BF1F1C9AD849F5D6DFEA0D4D95A6CF2B572
+SharedKey = 5D86C98C9382E61F6ACAF38F15E936282C9F5BC146FAA5013FC0BE7CA7406D84
+
+DRBG_SeedA = C029195DAF0BBF626E15CBD38E1A6763F2BFA9EDF4A5B3F878648CAB077EFD0020D2BA0E922E73802F41D7523966E9BE0E7B6876D6AA345F626875193C5C9679
+H_OutputA = 12034D2BD7AD5C7AA76BB000063DE289D6440242F8A86EFBDAA286B7EB7F3D43
+DRBG_SeedB = C1904301EFC135D4F63170466537BBC857F0385FDD82ED6FAFAC7798062A67CA
+H_OutputB = D344C7A27FE472ABAD79B471B165D7302C605B3B5CF33B02353819B1592ACF8E
+SharedKey = 4CCC4584B0D52A83C36D0E08B5D00A4E21FD591916150CF9ABE6D1759B496506
+
+DRBG_SeedA = 5AFC3164CC57446E106353F0B3F24670B9B8C59817775EC009FB791625E61EBD5458AC738EB097F9B1AE737359E53B19A5CD39987C78C51544F0E9DC22F11821
+H_OutputA = C598C73469CCA95964133DB095C0D7C3C7F928AC7ADC0F63C325EDD9CC5B5C05
+DRBG_SeedB = FC26F54DF2387AD072E0B753C92CEBC7673B9B80673E2DEB1B41F25FEE10ABC3
+H_OutputB = D10E17A5298EDFE3D22C897CC46BF320422AECDE8C8D425AAC46B38975930043
+SharedKey = C3CAEF2C15B914D4A3D5DD23EAE729C7D9DB6E6A67825EC273FC50BA288621FA
+
+DRBG_SeedA = ED829E6A3DEDCC20FAFD3C483D01B74B4159E0046BC94DFFA85B3BE3D0DA7BAA0601CBEFA0C234EBFE407A76DE3D2DB396B549472DF56473CCDE8DF44B81068A
+H_OutputA = A885C0F98A16CFC1068135B7B1FD7EE134F04AEB6B7DD3864C145E11824BECF2
+DRBG_SeedB = 787E2C922A0C9DBB656F1F94967343BBCD34EC686C745641643C95157E5DB204
+H_OutputB = E85080048D785C07D6E2639ED174AF9E06227EDEA856218A6FC7816EEC1DA343
+SharedKey = C699DBB2AEB1909FB9894540FF5F7E9EBFD8CC9663595408F455C464027B0FCB
+
+DRBG_SeedA = D9850F8FEE7D52AD85F6A17D141E737EE62E5D4069ECC33289403C2C11D22C6A500FF5DE06893337AFAC3052F2680202477764DAA8F7FB93E93ABB8868BE05B6
+H_OutputA = FA3EFC4B393F8050B2B206F39E9930CE1BE763E6C7405E2DF2A6399E67D81F47
+DRBG_SeedB = D0A0D980B361FA6CF39B225344E1DAE71DC3F4208C47DE5C5637A58C9077036D
+H_OutputB = 52B0B0A675ACB93321C17FE9324DA6C0F5C7DD6D2DE774FDD84A65E3C1293EA6
+SharedKey = 89571EE30BBC754E6C42D95BC1FEF2909281F2205178D52A6FD671ECA96AD59B
+
+DRBG_SeedA = B559076BCEEBC85C0EF0369533C65CF6CDCD3DBD4E27694FF04F55636EC45A201E49E1047F98BB34C00C166A1F5B9185B1950E90AA9335E938928F29B16DCFBE
+H_OutputA = A8D682E4C3C1FDC021AB292D2E4A8FF834D63BB7EB70D1ADBF668501983261C9
+DRBG_SeedB = AFF0D557F22A0C9E19D15FC98414AD7A66D09ECBA346EA445718E678D6BC9A4A
+H_OutputB = D98A279EC6EF4389016BCAB689B948D95D22D125C12E8D51F54A88E92D645BED
+SharedKey = B3ECC9134DA0D700C1CCF3C88B22F95E9107706DF2240ADA4CE31BCB2F3128F0
+
+DRBG_SeedA = C9ED10965AF8F8B8BF2D992E0E142CFD70DBC31A1B105A4CA1CE662955C2FB4653A9A56B35A557C9F6611B5751E7B47EDA0804564E699623B67F4E3A1B92257C
+H_OutputA = CDD7802682C603742071676934D995C2AD18CCC48DF05C751F5F07B013784134
+DRBG_SeedB = 439316E554D55F5634F1F3B9E7C461C00F1695BBE34B6ECBB345AD3EA4E95A89
+H_OutputB = 52280A3654C4C21274804BDADC3EADAD7894FA24ECB1C5870F49B7FB06B69997
+SharedKey = 0F362ADAEFD35DAF8E47B01E1C53D5422B8CF6A172701D563B60B4F5BE110529
+
+DRBG_SeedA = 73954FF5B8AEF404428BE2BC3C97CD727AB123984BECC9E0A32F86CD6FAFEFCB2C0A1DD8C7F04F9ECCFC37A7B181DC7EB914EE8A80B1373474499426CED24A38
+H_OutputA = 93269B40DC5E91F19762B78519C791F012659D2E831F890B389ECB41CA30DF08
+DRBG_SeedB = A91339C314971A96EC61C2A6268EEBC6D6554B047F9E91A8C8700651DB4E8C35
+H_OutputB = 582EFBE0E3F5998C49F69CF6AB95A44CBEB9E61AF3F4913C01D1F664E9C86903
+SharedKey = 0F7676A6FAB0DE573B8A6A7DFCC3C920668B6370F0EF9C6078A3410874C95BE2
+
+DRBG_SeedA = 022EE1C37A7A1A49B4BADBF3D1032C61025ED214B9718341CA33988C6BB67435EB21CE737DA62126559E7E0E772C21C3AADFEA344F2E6A1EAA6EDB82BB082E4D
+H_OutputA = 27AB558B40E24A17976413BA5D7BB74B90C2C8A4C1215DDBDC014BE8D2F00417
+DRBG_SeedB = 91511B69F8FD104BB89EC61F6CA5502A27E7355129D75028F6340C0DF2C02C63
+H_OutputB = C20EA7EF723DB579BEA72FF2F754C40AC4A6FFC051740F09B7FB8E1DEE53655D
+SharedKey = F956DBAF1FC6A1C406E5D325F9AA0EAD3CD07ECF4F829BDA48469F91015706F2
+
+DRBG_SeedA = AFEFFE373DCC98809D131C8F8615FEE1354D2DBD4C7448A3A3E0A96DA29276F325E063D0397C99C8182A3001A15F89CF91C87193E796C306010A16615EDCF2CF
+H_OutputA = 98716CE9F32D150CB2E668E5D636004F4C1A6227CEB0AC0697A457A187F53F38
+DRBG_SeedB = FE194B43B89B134210F6DAE3BCE274EBE1527B9BC40CFF8575C5799B33D1B051
+H_OutputB = D0C780B1278F94725E8AE6C5AAE45A8A42885A19A4F68D254C04148C5C4F67F6
+SharedKey = 0024C8B4FAB1505ED5A8CFD144C0FCC9FF7A0E90B56AF48FAB63DCAA8CF6DF1D
+
+DRBG_SeedA = B1DA6ADBBDB0BD1047A7BAE4091C2CA9F33EA91112792F0F481F39CCA2D125FA071A2D3DFE6ED07757DB71F8856F0FB7AC06AB0F6CB85B66C0041FDF392A43C0
+H_OutputA = B040FB1B004C6479AFC2C934762A67015DFB96AF5DA29359B82F32D1AD10459B
+DRBG_SeedB = 7C467A1E2EF2A15C82F6B08CB7938CADF0B77735DABDC6E01B819CB96FF8BB67
+H_OutputB = 5B6E72571CBD04760C4D45E5E1FE7FD9A4D00EB0C00A48B72F0FCA6AA126A394
+SharedKey = F4A4B65B3176150BAD32243356901FDA7F1D8DB3C0FF7B0953C35E2D85756A20
+
+DRBG_SeedA = 9C739BF3585DE3E97413D5C4A9CCF1F729AF37592E36FBEE17829121F488E268D7E2E79A638138D586A1995ACA16703BADBC720ED0C81013F327F3EBC586028F
+H_OutputA = 22C41D979E839B6D8A599AC288C8852FAF657AAA51B1D3F0D4219A24E4684C8A
+DRBG_SeedB = 8699ED5555BF1EF3198BC58D0EB5A727C627C20C90415DF957DDAF1940340AED
+H_OutputB = A91E4AFB2CA77E0F9FEFE82194173B7B397BD83EBCBB78BF9E82949D49B112F0
+SharedKey = 9A9145A3FC6038B7A9416BF6B1CDF479D7C36811C96A0868D326CD60CD8881A6
+
+DRBG_SeedA = B9CC68631353256AFEC0E6689A10CE89C2A1E0BD4425911AA4278D1A198FA3E31A9EC87C16460CEAA0E1B2A07A6EC3C4591ABE7659C0A01DC46D89D7BD1A139E
+H_OutputA = 2DA1A580984A9E3D4A6624801072902BA02DD0DC3221103998D532BE8A7DF00E
+DRBG_SeedB = 008BF89C3ED499B8856A10D2983A89087A450C5F8A6349057960D2389D385BFE
+H_OutputB = B3991D81C125A606550F8639970748148BCFA2C870FB97A3CAF2734AD761C1A0
+SharedKey = 59B3EDD88C78018D878CBD8B1DAEFF8B65EF9612F7BD63FBDCD6935D303A8B94
+
+DRBG_SeedA = AA9471AF248BD2B2E3A131A0765B82D781E4CEBF480647BDC9521B190B14263E44BAA2461C65F196BB45D3E016670FC57D322E38477B23A18551E8E7C701B64C
+H_OutputA = 293668E742A361981AF5A20800224907E83FDEEF481ADF81A3B5DD1736C4A67A
+DRBG_SeedB = 0B24DEE08AA5772BA7433656E2AFBFE6E50E7D892DD166930F3D699BC690623E
+H_OutputB = D8B5D1581DE58035A89C3D900F620B3E2E7B64A3454E3A4415940B848D52BCC7
+SharedKey = 914A7E680789DB0B5112F4D103C876C86FEE5A40800061CAF6BA3F7F6DF4C34B
+
+DRBG_SeedA = 9FC29549A52D3EB2382B18B2EBDC619446B794ACCA81A07136FA50D00E7D4E50CFEF82F4AC628B5831B693278065198DDEA7003CCEF0C8BFDCF8185597A2A39F
+H_OutputA = F4794EB47AF8E49A08A7CAF5BDE2175C432E9330CFC53BADE56034DFED0B3185
+DRBG_SeedB = E5E1188A875DC53AB5F08D7F9CD62F258E6DFAF4E0D73AB6F55A075D026B454E
+H_OutputB = 9640D79B7E1280EDD6B7EC6AD3836D5193B94691BD3DE657AB4942BBCFD2B84E
+SharedKey = 08000FC88A8CB4E906BCFB7C1E9201431F45E9E3F06997FD4212FA56A5169E3F
+
+DRBG_SeedA = A173A490EEB5208EE82F4B77ED340C7F6B16FB7D8B4657B23C3400839272E363CB0767B7F23DD3BEF0879C89031B24B8C3F8FCDF07881175919A012BD3C70958
+H_OutputA = D341391E67026E883732F87599E0F3B9EB3EF2D6E2360C2ED78A0BCBDC58D32E
+DRBG_SeedB = 80C42CDFD150244BDE27C3D4B03C4D29B75AD785BBE631F62601704DC8048AE2
+H_OutputB = F679350566CD2A3AC2D301C78C6EEFD82262753FEB952E3F2FC6579949D6AC49
+SharedKey = 49573346E9ADAAF8090C5C1825CCA640D6AF8EEFD94B4D3C4DBFB45E38672873
+
+DRBG_SeedA = 059FF6B44954E7AE43FDEA3ED53E31338F99121B824D5ABDE1D4B03560B2336052FBABBFF8BFC4A31F756A19543D03B2E7A78CF875591CA510F4AA1EB9CA75F3
+H_OutputA = 426900BF34374C2CA8D5150BE7D043CC50336A34F2C1E76848236C56AD4F0C81
+DRBG_SeedB = A2D42F8F128FA86B75526EE3B036164C672678A0314DAA3E6DAC46AA59F49A95
+H_OutputB = B10571EFF7F358998B770CD2919A87FEAB63D6B391B9461DB1F0827C63240027
+SharedKey = 3A68D7BBC88616100E9C2B69EA6C4B7749D4E417598BD7070E4051789EB788EB
+
+DRBG_SeedA = 327445BB783E620A8FCE5F3C7612C629C211AC6E4D825525788A2884F2682101EC5D7EB9ED7FFE7DF75C2D37E6F2E6D37770AA8B81D88B86F5C2B7603452BC3F
+H_OutputA = 52C48E904425FEFF0B3BEDA02D8831CEEB5780A000B88AF192AE6118ED80A88E
+DRBG_SeedB = D72B97F4AE17DF639F82B12BD197739C2A56FAEE9B3DC8B0F8F7B804BD068334
+H_OutputB = 95006141A16C0F8FB88766F846377B901BD7E3B3A0A3F876E8FAAFADC14BE0F0
+SharedKey = 3FD91BE39A94BDCBF4485ED8D8EE8EBAFC7587B96F1B1CBA36144EF6596E7BC9
+
+DRBG_SeedA = 5F543F4FD21809305E6A627D3EAD7210D1629A46D5412F2809050FC7C9FD8FE1A7A383232744C07BBF9049691EC7A943242D83646D7D174EF96391136591D729
+H_OutputA = FCC37C9DB0B9A97ED1F9B76CE0F3C015505CD1EFEC4177337F0235F63F6EECCB
+DRBG_SeedB = 96FBC2E07A327060B3FCE336547F7EE397E95B3E02F7618D86E37D815CAA2614
+H_OutputB = 95FEBEBFE1BF6138831F57189FE5023D3F263AC7657BA615EF678F50FF615412
+SharedKey = CF97C0C3DD59E29A325CC02AA4BC7F67F7E3E8CC6B538E36CCA1CC86958AD9F4
+
+DRBG_SeedA = 96DB79BBCC17F9CF1BF09B394F08B1F9C664B21B4255FC6B1254E90593A950C64FDC5474305BF0E43A2C04C08065F02BD1E594C649AB1D4C1C93E2638416251B
+H_OutputA = C654D995077A8FDA9133CFBEF0EE2ABC01709DB18A6536C8A39CE81E7C35B7F3
+DRBG_SeedB = FD1749955D2AE018EA46AFBC03AF7489B2BC7BB8D5400941E7B3A5AC66CF8299
+H_OutputB = 98EBC78A4134CFF05DD1DE90C6B6F2AD9AE93E13E599F8BAC5C5FAF179368259
+SharedKey = E2A46F56DF3609C2FF7446D4951134CC9F99F6D37A0BF0451F7594AC3F1583EA
+
+DRBG_SeedA = E358BE52869D8DA3FAC90AAC27782A587F4B0C098399A7A49C3019E12E6A37168F7EE79C123A3DBA712840A5D4637A5E5711E9C9FA984112309DA6E62A33FDA6
+H_OutputA = 63EB0F510D5E597141CAD222A1116A7396FEE5C015F5A54078C287BE379B26FB
+DRBG_SeedB = EC86AE6C090458A7CCFBE1659DD1F4B61FEB9CD22E1AF109872CBD8CBD7A2138
+H_OutputB = 4B0576CD218A2F58CD230DF9F70B7C861AF0DAE2EF77EC35857EDCDE01A98EC0
+SharedKey = 802AAB5865C403851F36B66ED57F43E01135BA5C3FC63953A1E9BCECF9E93982
+
+DRBG_SeedA = 52F31378045FF6A87A7C5A772C2C9C54D1C491AED6C14354A46DEEAB9D100718C4C59B48495E1C4BD09C50892C40C7681788907839C813BCE3801B76F0A7797E
+H_OutputA = A8B90C847915569741D6F51E9E212409A0F7AA9A1E85B499A655E0FBB0B6E157
+DRBG_SeedB = 3B8ECFA8B1161C02A8FC0BB273DA6890A355E729B8CFA6F5F5C7B1EF91103C1F
+H_OutputB = A2EA5D2C92781C00DBCB7BB2BA98C07979D79791EE65F2EFA46B3A10A93B2BA8
+SharedKey = 5C345DDA006BEADFE3835EE186FA7632A1AE517144BCD01BC85D38959D82BE38
+
+DRBG_SeedA = EA9F73D36FC35A7397CDD658E5578EF5E6381E661B238E6A7B8455158BC8DA95DE7EC6227F18292FC2442C7DF4FBBFF489A2618BBCD9E27E3BFAC2711F4E6883
+H_OutputA = F72BE2820950AAFA484B4C8985048BF636371F919D4C609FBB1730964CE71312
+DRBG_SeedB = 7973288E189CAAF9457748E7C6E8EE8CEB84D0D53390287AA2137F5434AFE3D6
+H_OutputB = E8EB66F196D62787A929A0CF08E02318B2B99281E8EF63D30ECDFDE246125D6F
+SharedKey = 0F9732C60E3CBC44C4C10853CB15D843B5C130729E76921F3B5281860E54DE00
+
+DRBG_SeedA = C687DD9ED38D4F87132CBB69F0A5D2F564EF41C1FEA8F7C2888F8521AC6FABE52425D45507812974E6F1CAB05228162C5CC5DCF102F4D4A21757D1ACE42CBD7A
+H_OutputA = E9EFB06FDC8A2AEB6D35A6879836ACFB32D80845B0E3CFBC7057D9842098751F
+DRBG_SeedB = EA5C80A21882CE578C6E5F09BC182A9CAE38A242A2121F17AEC1A9498CEA56E4
+H_OutputB = 998C48EEB183B41B250116DB48CAF68CE6AFD664B1DFA1DB52B587A64F2495D0
+SharedKey = EC5DA989DAD1E4EE55E72810F552A3C93D7C90D8D0CE7744DF3D62C0AC19F1F0
+
+DRBG_SeedA = 847460C48CD30FC08361ACD6388306DBC7E87D8388FF3C76670D1BA3DC99190C276A6748986C7B29D8C1426F30AF8919BF1E7DFC5B4B3425964BC6A4480AF4C3
+H_OutputA = 8B7F2E500EF305BC56D68561D698C4314AEF76DAC1EA76BB9F17A8DCFEF52D56
+DRBG_SeedB = 28B3811766894B9BD6423C6CD15CE0A18BABBDB3940B081271F7172B597B20FA
+H_OutputB = 9A77E33CFBD124AD952F22F4A6264D627A8D066256421ED9B825421D273E5A5E
+SharedKey = 47AF453AF2CE5FB4241FD0477CB701F62F702DFC3169FEEFF7D1E65F94993CEC
+
+DRBG_SeedA = 88F4821450C59158B8C6B8CFCC419DFECC918BBB2449C61AB24548BDD51181F09772EE80B21B3D592333BA049F48ED8D13836C642C0FC7963180D3CFB70C6EE4
+H_OutputA = 08D0DA8DE2B89A98C28ED2132DD678FD931601870EECD696A2281829C4AAC3AB
+DRBG_SeedB = 54FE86EA1FA94FDFF77B7BE4BBD39B2FB22567872B04E4B2A77904C09A8A89B5
+H_OutputB = 8F0051010D2E93DF104CC1A0DB10FC89D999A6BD4866CB5D7F9BF21718103661
+SharedKey = D6E1D78584878407001E06917F70E35E9491CA0AB4FE87D14B2537391C62690A
+
+DRBG_SeedA = EA4A4D05E03F9190BCBD0DAA1CE0411F0E94EED0BFA8CB44D269AF312B2720B249BB944E04433E20DF55397726EF27C0DA794D3FB15841DAD59EAA181D3F5DCC
+H_OutputA = 077A1D0BED3D64EF2E823489451690FD4946EC6DBF3BD2093889EE77D05C7964
+DRBG_SeedB = 77FB8E0E6318AA458E2DBD627C79584F4574B5D7B0A07B634EC401BDDF3094FA
+H_OutputB = 6180A3460C4FA68ABE8533A4690F457BEDC37DD1C1A46CEEFFD997E3A057157A
+SharedKey = 0187FF7DBEE093FD46051F0109EA9BAE038954DF1EABD0975D5DECB9256C4EE7
+
+DRBG_SeedA = 65473D186D3C229ACE53F480C885BBE3A8F514687D6820A9EB45849A63EB66BD83A5735C0A36A652A1E9E264EEF08017D9142B22FF28450D30B9A874E1533243
+H_OutputA = 7093D0B49BE072C831D18FE24C0F21E2AF10DA7C19C8930ECADE5542668065D1
+DRBG_SeedB = B0F6B7E2DE15A33BD7C97AE4CB54C9A8CBBB66F8BF35EBC43E4E12815FCCAF4D
+H_OutputB = 351BEB0BFD1934A1F32AFA7F488131052D4040D6359472C9F9DAE12643A2D0AE
+SharedKey = E634911E582FC0FD12E93A5A8461E8F6B316CD996406F18943905B0CC0B19EEC
+
+DRBG_SeedA = 59972B64901EE9669BDE4E83FBB87ADBA162787021A2B7616C4E0BBEA18C01C9D78878F23D459E4B49AD752F5ED03C15F85C608D2411DFAAAF69196F8C36D5A1
+H_OutputA = 3ABBF9B576E38B3F49A5389D348BC79A593740C68D9629D08C31A14AEC366626
+DRBG_SeedB = 019BD2893D436E7B4A3FA3D0CF7067F053B144CF8728D9DE505692F958356437
+H_OutputB = 984CC6EACE028B5E3D3CD283C81F06DE4BC92FE8AD30C3FBE5F105CA9CEB1F43
+SharedKey = 636C397C590A2B1F78849DA2BEF179E473F9282EA80A06D68FE80C24A45E32D1
+
+DRBG_SeedA = 4826283693004A624A87157E55271B26617475D3FFE694D629702EB03D0492C250EFF6619F7E562ED8C0A295E2EB2B8C8F82951EC1640A0BB811F9596272717B
+H_OutputA = 8F72D1D363750F208C4CE9F09B31EE9AC3ED3A90C3DB71B2E4AEE03E0467AF67
+DRBG_SeedB = 27826FB43F05A712C83F5130430D0730581D74C64522F14B56D2F0CA97EC5991
+H_OutputB = 8CB6C6AA5218C0269221FBC98D9B372B1A21D410457FED4DB391E377BA791030
+SharedKey = 5D1A29684B79D22F5376771C689D9823BF537CE006EEF1201FD6A8F8D729E32F
+
+DRBG_SeedA = D691DEF9DBE8ABACE4EEBDE4673C41786B5A445C72E5BFE0EA6410A76E3BA70BBD7001C51AD3DB5E9DF398EE055B0AF20C545282E0EC4816073D002DB65E9549
+H_OutputA = 705C9E79334B9E5826A12160863899409E950CCF8D18A75FCCE8B2F82DF9E2BE
+DRBG_SeedB = 4D2FE247FE52821F540C7028790DEEFEE8BD2A0C25E8E5BCA7A981FB7BC871AE
+H_OutputB = 206921516CA8BE57F74A2880EF36BAE31DBD9B970F5B481C5D570E1F9D84F204
+SharedKey = 8890B99C9B3692125F2B8F89F85F3B197A8C1E13C70635923A7BB365CCAC65D4
+
+DRBG_SeedA = 7FD68F0B6BD72EA535FCE8614F3AB5D22EA7E9954018632F24E014B51C7F89199F34117354C8A4B7D416A06F0620F7CAAE0DF433C2BEA5D55BACEE2ECBA285A4
+H_OutputA = 7D1DCD660074F332B0A32B69DE81EFE4F07219EC5071DB5E7EAC9C1DB7AD8063
+DRBG_SeedB = 9711E6D9D8FF718A5106C7FDF5E583797AF962DDCDF51453C8D64CB63FE1740B
+H_OutputB = A61C5C6CABBB22CF2F05B2F9712B9E2CB9797315CF154AFF461E3A5992B024CE
+SharedKey = 40E5C7ADE253AD392D241C5DB28B238E6EC3B99EDF599A3EAC3CC78E7D5FF041
+
+DRBG_SeedA = AED06944EABD58E098BA2FA0400BD823672D95624009414A06796D2C9EAEEF2CCB5F104637CAE0BF248BAB579FED6AFF798D6B443F712153B8F75C9F723D67F1
+H_OutputA = C383DA32DA4C4AB779C1DDABADD1C5FE20C6E8A133EA18954D12E6C734E3A977
+DRBG_SeedB = 290991B0A837D95CA818588CC2044D24B56FCD31DF34288935DD851C683EAD56
+H_OutputB = 9462E1FE2AEEAF7289C1AA6319B922A7856A5F6289AF453F0D5D68E4853DD84B
+SharedKey = 5677B07BFC4584BA66E8460AE43F750E9C59D45B2E7748B2A810CB62585E5A5A
+
+DRBG_SeedA = 051C7F21FA849E1C415B51F57D9C5F53C62768C6965C180F43B35602E3843ACCB22BB4284E887FAD89A1FA5A16F0BC8E6B961C074DC254CBC1E40C60C1252A48
+H_OutputA = A28694F32E0CAA1D59653008EC958873166F66D085980422B12A3855F15C72C7
+DRBG_SeedB = 442885464A4225A702933F0195D9635E0E8AB1A43383E4134F28BE5B5EAAEC27
+H_OutputB = E54316341E515164A2BC7685B6A11A6F101647D52FD35A662D56446E67A583CA
+SharedKey = 02F28ADAEA5F10AC9887DE17CDF6941889697908FE3B8D5B75F8A0657ECFDBB9
+
+DRBG_SeedA = F0098ADC49F473718502069FA5C634731C910E163913638BACCE386B6D88065A5C2B9B420375744A1317AAD4712A10AAE4342DE15D845B0497447507E059C181
+H_OutputA = C9A9771D6F9739C1A5CDECE3AF787CBDA3A5B82397C1630C12CCF3E5E76AF6EB
+DRBG_SeedB = 3EF0C653E7BBEBE4AEAFA2136D0380FAFB72C471102427CCBBD251254F988651
+H_OutputB = A0D41D9AE73FBA1F29D1759E8ACD107CBDBAABEEB9C48126913AA34CEA727DA4
+SharedKey = 47E39A09B0EE61ACCC2AD050733C48EC1B0AA9B3666F355A7DBC6178BB7B129A
+
+DRBG_SeedA = 66F6267A01189CAD3174A5FEADE0F407475ECB9695A8DA008B5BE3391C8EABACC39F0465B31DE142E5AE003863DC88B08911CB57A7E9DA150CFA0CD556227BAF
+H_OutputA = 3A6356B261CA3B78E6144795A6006C04E9017B5F65ADD58D8886C0E31730D22C
+DRBG_SeedB = 1E1C38D1190096189D7FB3C33798178AAC04BB1A916688F4CC156E1248C1F962
+H_OutputB = AE4E62AB19C48272865B60F605382EAB568F94853120B3E44BE4CABED7A87B88
+SharedKey = E1EC52CC8B3537C54AB73DE45D0D26E4BD3BF0ED7728A0CD89098C448EE12025
+
+DRBG_SeedA = 6B3C2FD37DF22051B2C122B88FF325C4333B264073E44DBF7EF934B364522F839CEB1958AC7229CA93BE56AD6F5D3EA6312C5A1711998FB80CE2D7E668B78AB2
+H_OutputA = D69A7C57468F3DC3544621EA1D34595D1497B70A93BF9B2C50551BAC596BE7B2
+DRBG_SeedB = E811BA4BA6EBC54F1DDE537E7E5765B6D246B7A774D9B9DB5957950611B92149
+H_OutputB = B74560166A0DE1BAA6EECF489C4CFD2B450051A80A5B26AA77DB538BB9301EAE
+SharedKey = 817DA1E1642BDD142A1FD7DBB7A5653E037CC91DB5AA87FFA2F5E0E1400D01C0
+
+DRBG_SeedA = C33273CAC810969CF42154761D2D8EA4D93559706D8542A364928ACD2F06287E64960312B23B0D1A2C59B0A183266449581A9F6F936B4CF701A353B7749FFF39
+H_OutputA = CB6E20C4F74B42207AEDA4B4561C8214760855FC8A755FF232861A9217BD6640
+DRBG_SeedB = 2CC3EFAE932ED2F48C9CF297F76B50C0BDBF1F39C426A23BF70F898F2D33C508
+H_OutputB = 79546E16DF1E2A82FE4227BB4668472A7E8F634EEF71FBE7225271C8ED250927
+SharedKey = DFB1783803546F0BF9DA26C4098252600325E54E2D580E3CD98195FDF1BE126B
+
+DRBG_SeedA = D7FC43127611BAB9D4862CDDA1755CCE73C9027D9FCBC8568FE3C5CB081A7122AB4B55AE3D05F5CEDF34B8981EF53A730DA1788D580FAB001377EC16BB1CF380
+H_OutputA = 765F763A93276672008231745E01D15D9E5179AFD70EE8E59E82EF3ECAB6029C
+DRBG_SeedB = 34D5EA4A8D3442EA01F7621CABC92B4855FB238C1982B9621C24C99505F54570
+H_OutputB = 00D469897F031E341EC33162A9EE823DB1E1593B95AC1946F84DD6983185C4D3
+SharedKey = 08E6F412E23855DD27A77126A45795A83E4040E6A0F61ED55330C79FB60F930A
+
+DRBG_SeedA = CEFA4C1F0DEFFA9F1464D4C814F6EEADD09AC1E3168FA9BF04D54B08265E3DA9291E4DAD6F00D59105BF35784FEB8D403C8D0DABCD6760470FA29BB37FDAC505
+H_OutputA = C2EBA642A682B3E42A48A298545BA6458B12F1747BD1AC2F5C6306330C1E6585
+DRBG_SeedB = BD22E002317101614664B170278339B2A32AB5BDE79C2B8512048C0AE3574A13
+H_OutputB = 3F3E42B3DD5DA2CFEA7BB5B36E799122EC677D82EC1D302EC2FCB9983822BE37
+SharedKey = 45E3E7337571207B76AFBE47FB3AE79421DDA3F5928A0C4A9CF129D153BE9146
+
+DRBG_SeedA = 39F242B854FDFC527F90BD6CC679AD15AF276F886FB2205D17CD347D28686F9A9B106A0E21088FF587370AA13FA951EA98735CD3B5802CDB08ACA96043571280
+H_OutputA = D1A5025F990ABFE76F033F411ED4BEE95BB7D05F27BD515FEFE269C8978B864C
+DRBG_SeedB = 29371BECD139B6DBB9DD964ADBD1A9BE533ABDCA03231905A2EAAABE6FA1ECE6
+H_OutputB = 522754BD1EAC0FCBB7860B55B409F61CDAFE7620D31288B851415BFEE635E97D
+SharedKey = 7D9FDD8A0A538824306BDB5025B69D3343661968B483CD0EBC682319184C6488
+
+DRBG_SeedA = D6E25734BB642F409DEDAB111EF22D87FBBDC616FA559EA265A33858EA49B8FBB66CE4A186291240410AEF1E3B627C02DCFA4AA59673D328FA2F17B47BE62BA6
+H_OutputA = 6509AC61BE61B5BF117E2A7532145C601274FA2A05F885FC21DC20084F1D220B
+DRBG_SeedB = 6CDDE3D8B0273D1F80D135F13C3A457AAB64F1628F400A6C8AA5CE4A8C9D0748
+H_OutputB = 93AE85458CABAE621FF68DE31606717DD455BF13BBDDF6CE9DF4388236C3ABFF
+SharedKey = 5205B0EC6DBB988C01F2154661149A80A043D07EE028326AF43A0E6400F7EA5E
+
+DRBG_SeedA = 90C5ECA0A79EC2C6B027281F38078A5B05292C5951AC4BACAFE8C56284094E57C9122FA9B9D65754A864A153D6273959DDCE75C54651F5C720F9601E2516194E
+H_OutputA = C90417278D0C97C4433C55FD17C5811A2B62BED8FEEB036840BEB00DE8A575A3
+DRBG_SeedB = 43FE782FDB6AF0A6E4EFF95D46FADF898FF09802E116F477655FA670F2209BCA
+H_OutputB = 22E79A3848AF9C1F163AC8085EA6BD35C76E5F786BCAD6CC45A2F91DB482EC92
+SharedKey = 191EC604D2FF847CE047032A316531705370BB8BF9A383E22A9F077C7B77D797
+
+DRBG_SeedA = C1104CFA1B6BF573B6F3FFF7621FFFC321064C90AB1FDEE9427A1D768EF35E91EF980846C2E7CFD314229EE8A0149E3BB1FD90AE8C658AF32501FD2615DCB468
+H_OutputA = 055955277096994F8B0B2B3FA0249AC0A9341B4A11DAB83820D7E1A43C281739
+DRBG_SeedB = 49B62F1688685F588D3EFC2CC729DF3A8E9386631B9F554DEE7DC38EFF565C58
+H_OutputB = 350BCB775466F3269178C891876951425D66D8F2C9952AF08FCB8B3BE5B5DE29
+SharedKey = 8D481C9A0A5B92342B382B36E3A68D194E3665AFE0F9291AE4EA9EDA7DADB8F3
+
+DRBG_SeedA = D5A9E5F62BDA175D773646D05FC4D002E37F723E1D9C81A1455AD3335FD7F799120A1A6C37099AEEA773C1E9E055A48A9557D5323A4ECBCA2E5508BA936C66E3
+H_OutputA = 8CC56F64F084DD1AC1BCE5EF58EF71C8882026506F957804D8300AEB7E860931
+DRBG_SeedB = D8038BC3EE724AF38B5D70468E5672282F510CC592BB376241132AE81FF5B513
+H_OutputB = 71D506BDE76723E1104F23D180F57950D697B7F64C3A104C51D2FC77E9A08F6E
+SharedKey = 0BF3EF0BE21931299168A5C8FC00548CAF20A5EE150DE865B97B446A5130AF9D
+
+DRBG_SeedA = DB3F3BB235715141375845B5D03D0378CDB31E317265470638C838C03CDE232EB984AFB8C8F5BB30AF35BAE85F8B43DA1D31159FA7373FDC1C0441E557F7C1CB
+H_OutputA = 83C3E2004569A344634329F6F31854737180A1D84750503DF0DBF7FB4D9ACB67
+DRBG_SeedB = 8E98CC35073ED6B173C125CD74C4C17E901CD3304AB2E508619FD9EDA980527C
+H_OutputB = 269001C21B4486B1851A9594E1174A1D3D93E7B99F703DF59CF0F98F421B13EE
+SharedKey = AE092F1465130B5EEA562383124D69A6595D8E934D0E0351C61987647957C77F
+
+DRBG_SeedA = 843AD63B2ED7B5B61BBEBA589A937C2C0E830F9674E99D175545C7A227852E85D896F7CCF9391AACC1C5B46B71E83C63644B502614CD722D6B3330409D88DEC8
+H_OutputA = BA98D755907DD3B9E2C77BD211958AE9DED7BC6712FE3A2F01EE33B5C9DAC2BF
+DRBG_SeedB = C2CCF12EE0E35100594EB1A1B81F785DECCB44A497DD251E82A59EF4FB42F5C6
+H_OutputB = A15150C70B498BCF34C3B3380D1CA933757751A6910F5A62F8BD70E7863BA0A1
+SharedKey = 587602E78C419D40BEE45E0896D7D85F1D01480979F8E8A7B8147E5109286B76
+
+DRBG_SeedA = CCA8CB57D63C3F0B0BEABFA4C4E8BE6C5804793C73A1DEC360E40858606B851817EC5F4A7F4A9C8CEBE025023D517615F0A0D278A93DA3F90B1553684EC8D4CF
+H_OutputA = B9B125C511509628B622B9C37ECAA4CEBEAA97F145447C9D7CEF1FA02BB612C6
+DRBG_SeedB = DBC9CD5537521A5738D4EB3062ED3502E2CB6735FB8117C6D2B220223584D937
+H_OutputB = 3C079D40A07E0C68E0E2D2AF23983B718B93AA496AE19305930AFB01EFEB7CD9
+SharedKey = B125D7A89B1DDF6B8915E0EBCB7ACC89F7D400382BDDE1A494177B00C724E4BD
+
+DRBG_SeedA = 518D90702369AA21CEA39DCE60D77B5CDBC82539581429DF6BAF8CB138F538C06B7F09ED67083DCF5C92D94EC8E307AFCE2BF382269EB0798AB6CD16E93305DD
+H_OutputA = A14E169F6470B6688E78BBED01FCADF1C731E18D9EF607B5A3DFFECE0FB14A7F
+DRBG_SeedB = 8796A4E692DC0FB284897C0501D11C9140E0173A10350BEFDF7E4A074CB16F45
+H_OutputB = B6D441F6C09A38FD6F174014F2F9A35D6959CC43EB187D6105DCB2C68B9DF116
+SharedKey = A3F0D7FEB5D6866BB0D9A61AF55B10C9DB3CD8230AEC0416F933A181AA6FFC06
+
+DRBG_SeedA = CC2970A65626E8801CE04C5B02F6C874B6771452CF6C72ADDD30BFF530E46B36AA19727B6639371AE010D6CE219D8F36B169EF30EC31BCC75FB005E1E8E22733
+H_OutputA = B748C89942CC39FA9649BAD2832A80DA246CC92DA1D9833E71AD3F9AB6A8EECC
+DRBG_SeedB = 319E22DF74ED9214E9985941C965138FD99B1869FCE48685143D09F94A26C393
+H_OutputB = 4E0D8AA031F500ECECD08919F2D5FC4527D5DD26FCDBA1374A981F5226F6E359
+SharedKey = 49F14DF23EF208E3784E55AD6D1EDAD6E45473DE49C42D360EFC0EF711E28E13
+
+DRBG_SeedA = 2B999FB5269DA415B480AF74EF95032B6EE337F9218B55D44949999530CC389A90CEC486E1A802A47555726DD5624F12FFC3BFD9B670768E81BA12E57D30021D
+H_OutputA = 24F53E4EA8BB507B8E81ED631CC7A79104327C555AC10E73CE8BA609A56F69C3
+DRBG_SeedB = DEE73F2DB309DC6AC11252DD2ADE4AFA66342393DE62772A8140CEB0CDA12E3A
+H_OutputB = 9929FCDB6024AC11AAFA9AA8FB856EE3AEDD97B18E108BD4C2BD7CB62F335DC9
+SharedKey = 13EF42982CC4BEE55BC95FBCF2847487DCBCBC9F861F54429D7981607239ADF1
+
+DRBG_SeedA = 234167E3FC1D1D000435BA2CAE5376D8529B3D2F8B2C06D0F4553518D7FEFAC195C04B23A16F037C11A0FC259BA0FA5ACEC9CE3EDC85A75569FC29EE917CE1BB
+H_OutputA = D02301CD8814BE97845B0AF2F8CD15259E730A7F69FA122068D1F266043B7315
+DRBG_SeedB = 108C2811D8AFDE9B13E889647539B3272A89CAE61A14908BBEB8B11E3E63876D
+H_OutputB = 23524AEB71FE9130D55FE40A010478EBAE3157D32D58A3337D4B09A32A772D8E
+SharedKey = 2E737B1F0E183A546B0A6BC310E18B1476F0A07CEB4A9FBC7211CF1EF1CB685E
+
+DRBG_SeedA = 7DA25B5DC5E93CC9E6ED6D7454E1280A95CD3BE1A5E69F8E0FB7A494B36B986E9391E8A5CD1335FFEA6C5EEEF472CEF5C8F02FA837BEAE3E678472A2C0E02407
+H_OutputA = B10F07D061C264838E1AD03DB4CE8EA4ABE8D9733D896AEA559FEABF9A62B30B
+DRBG_SeedB = DDB5A75423762700867A542092D06F073F0A6C319EA84607C12747A49699448A
+H_OutputB = 2BEFDF791F253FDAAA5253FB45E152C24CEE998E01BA514D1DA725EB0E6EC189
+SharedKey = AACD38C5789D0A263293886155B06C648C32A9D2107D6498DC0933EB8D43AF25
+
+DRBG_SeedA = 1ACCE370CB7837CE70BCD6D1E8890893C0B8A01465D0003B275C9E35074E3B1010C57619FF4838666B2628CDCB548A213634222F0E934374107ED68C8E8CEADB
+H_OutputA = E48B333ACBB6DE43ED81C7D48A2E48BAC8DFA7DD36E0D6FA9D66911CFBB152B7
+DRBG_SeedB = 4F217E12F6B8E9215B5642D8E2193C7F6B0FE3EC1A2F01B956688926B167F1AA
+H_OutputB = D32085E30FA62B93BFEC5191E2E71184356A4E420D039838F9289B54014DC3BA
+SharedKey = DBF7859724753E9BC9EE2AF1B9019AFA5983791E23F0E7001D0E050C855DE3E2
+
+DRBG_SeedA = 3DA7A933F3F2706AC52D3CD2350377F092BB76FAFCABEA2D49EE92DB33EB3CA8029EE0A205B27E1B15553F53786504C323E0657FC0AC85A269D43D81E33E0106
+H_OutputA = 61E861966DA66227162308D293B8F44D1233CA10F23CBF304702221EF22F5A28
+DRBG_SeedB = 0E510BE24BE0F8094E8AE6AD93007DEC3C0209C5503F4751C16EB0ED1747EA55
+H_OutputB = A0AB2429CF091BB9C65412224FCF944B4B5524AB1CE975CBD2D25903B191FA72
+SharedKey = 8F1FE745B2E63C3B17285BEAAF48CAD7B4E2223A95D383BE0895C93A0CD124AD
+
+DRBG_SeedA = 18142E458FD5E799B896D5511F9F54264A861D5A1FF2518552F28DB19C11EF0E437BE291545103715FE157C81779E6C8AEA0610F9840B6ED63E57E436FDEF797
+H_OutputA = F2B201658F00F0C47A2F59F84665C3351CB30253EB084FF43F7620125B14EC15
+DRBG_SeedB = BD921FEB6E795234D79BA33230E0D3F82A93E83535C312AB5F78660737B2D048
+H_OutputB = 2C6602853A54FFE54171EC9337A75F32D337545D97259352F5D299DAE2AEEDD4
+SharedKey = C09A16F40F5EDF1F1E58913F942999E80388EFDE6471F054398177508892A4B1
+
+DRBG_SeedA = 610E06AC9D2A5B5A171CC4635E3FCEBF49E8DA6990071C4D34A008A731F778B94A574B8D1C4D84C76C9990B38F036936DF4B1A5F5C6F0008C26A5121C7E488A0
+H_OutputA = 53459DE753F345F884A1DA161AFE3293BF36A09BB8C933F77B193EE512FEF206
+DRBG_SeedB = 569FF8228873256ACA5509C9FAFFC4A4512852110BB7E032A6CF5D42B5E16BA0
+H_OutputB = 7C089B5B6DC5C4534574AA64D62EC698D9D1DF519C41F34FCFDC6DE6BA892D89
+SharedKey = BDDF81C1416ECA169A150772C1A00FA59E33A3F488FC2E0C5A88CD4177E05CCB
+
+DRBG_SeedA = 9BF94BCBDB6C0DC8E7B367CDA12168585D121278EC8A3213C7859102138E914247959902020748BF7A0D3E127C36D5E5F186461DE756A6610E74C4B9FD0B66E0
+H_OutputA = 4B0C9CCA190D2DBA1574594840CCB3E05F480835CA40F0699E1FE88669BA41F6
+DRBG_SeedB = 9CF898FC5D7CD607E17B59276F9F75ECE9E5604B7994453A179325EEE16A2315
+H_OutputB = AC64E3A2A806A34411BD5134DD56511FF804FD1F7645FE88CDA146EBEBA86BF6
+SharedKey = 6664E32D3866CE65B62D625AB9566037B130D0007C08704D2EEA6FD57C1A76B8
+
+DRBG_SeedA = C2DF8EDB8DEF256BDDFE079679BF4FE1E19038E1FDC8CA78F72F324E46F4CD76FC832612CF17052C3599FA0CAA69156C3E4A86C712F7C9C8FA0A338DF83C61D4
+H_OutputA = F7FA0E3AC4DAB7B5EB881578CFA656D5797074737534E713D3D130627FA08BEE
+DRBG_SeedB = 3DBC36F8E7D22C44A2F0E089D17A2FC10AEE0AE4389217E13CA1DF1A48441CB5
+H_OutputB = A98611FF27483A06A6BB4EE146E7D469A19F12F04FC0A09DAA3C3A01C2D79F1B
+SharedKey = B5A3430F816451D9694FAB89B781D3566F3AAD7DF6A14BB1B7558583C8EC4E5A
+
+DRBG_SeedA = D3B95AF147E2B50074662F8C2663269BFFEF91EF54480174DB3BF290854CBF2D8151820B9249401DF27D1672D8901BB4D8581B883AF36F1FA30FA06C5D567111
+H_OutputA = 6317D8E3BA44908FDC9660143A2AE0F5FF47220610D705394203487A6B1CC875
+DRBG_SeedB = 4C0CBFE9C5DB7EDF496CA89527619BF6DF839F951B1704B845B939ED630E9708
+H_OutputB = E0F5FD0A72E0433317675902C74AC99C2A8F92AE986CA166A9E488C9150EA8C3
+SharedKey = 489B9164A933A5018C026A3D10009AED485F49EE361064A70B3416A92E216168
+
+DRBG_SeedA = B205904D6C2A0016E67B22E7189B93DCA3A37D4B7DBAFA279EA71B4F0A72B457CF590B25A10B5C6C63ACBD96AA819487CE1C705AAE4BD8A4501C9B48FDB681B2
+H_OutputA = EEE3159EA5231D82776B4B901A6DF33E7689F82CA9B82744074726A557DC4FB0
+DRBG_SeedB = DFB106260EDFF646C4DE13E8F137B22573F92CC8C01BE7429F721B72664A45A4
+H_OutputB = B72F95C80A35374C7A97A71F09C2493843975372DE85C6E0FB3717B6518206C6
+SharedKey = 256B44522F56FF04041923869E75D8C56DBC5EA762F59AC1D04DFE2FECD5D346
+
+DRBG_SeedA = 1CAB3950CCCD60CB629C2C956CBF8093712FB308813F297A354EC0BF0509C49B967F7FB65509F95459FEE94219A774750D8359FBBE7D8209D875BC8C239190DA
+H_OutputA = 77942A080580A932E5BE1FA4ABB36164E6481D3067D95C90092B01EED4BC8BA3
+DRBG_SeedB = 27D6D6A3685C200BD9A51C47A1B47AACC1ED158EAB4CE1B4B3E9FEFF84416875
+H_OutputB = C937204F870A48C46A1B92D5F252D702B66F821E97DC016B176719559D17E22A
+SharedKey = 9A792653886F2FE4B36F42A3C25E61ABFF6EA54A8A8C6798C42124A71F2E7828
+
+DRBG_SeedA = E4153C7C0E464EECB55AEC2E3D927DCEBF3024A914A95773297638F0649DC990FA52DEA81D55A8EFCF3568D05A185EC7B9BFC03B94AF2818C4B5D34272CE4B7B
+H_OutputA = 4A90DCAC7A0F9CE9934DDBE30A807B0AF4D73E6067D49D85E4A6F280967B37E3
+DRBG_SeedB = 02B47072E4EE61CEDCF0691CC87FA0E1604A850703960D14B668C3D401851FBD
+H_OutputB = 4D73BE162722BDFA465283BBA2F422968681353919A2E50ABA4DCF7A310D43CE
+SharedKey = A1282E4008B6BA2D134AD0BA5D2A2CCCF3FE4716539D39994DA3E051D9D156DF
+
+DRBG_SeedA = E21DA7594675A8A07A7CCF55A881567464C19BCE3F7911F1E6B13D967655E088C3106DCE216C0D8BACEA8D1818351D9C8635867AAE3EE9C8F0768C538F8AC0BD
+H_OutputA = D3587AE1DC9A0A0083328E22DBF5B39A862C4B3B938D6603D81E3C56DF752483
+DRBG_SeedB = 100A48AF3267E5FCBB4B31436AA37FB5C0D7C83D3069AB5A0E226D40B75342CF
+H_OutputB = A7259F9E090032031A96DF2704F721A97BAD7C5108A7942A64C324BB8DD5436E
+SharedKey = C6D0AFC66FBD23673D248DAEEF32A309DA199A466FD3C4234403E44E5CA392F9
+
+DRBG_SeedA = B9BCF8DEDC29A28987906C444DD55988454795031C268FDE1500E6A9B10DC64844D9389E117C6B7A833D9C8D07E53D5233A5D7299BCA71BFBB3F9DE5F9D8478C
+H_OutputA = C1E8127A1CAA5365C424C6987ACC4936A8F92666D4E76BF9674EEFF29D2E023C
+DRBG_SeedB = 3536BB138B15CD11297AF0AA720DEE7DACDC4D73D6AF60F406577CE17CE9C0EC
+H_OutputB = 0B7DA1E3F69F9AF41C9EB2991D3A2A380E2A880CE9D8AA63CDCECB3A39B6340D
+SharedKey = 7099E458967CED25CED283DF7A98E0D6A89FC8DF308702A70BA399BE3D39503F
+
+DRBG_SeedA = 2FFEF732071294C2A43ECD6A02EA6D0D55B2BB86A8B08064625E041DC6512C0A2FB6FA3DE500EE80461FBB990033CE481B95D203E5F9F33BDC3BD00D0628541C
+H_OutputA = 4D3C073A7638102C7502A952E31EBABF41483CE066318A5F27C0D392669D075D
+DRBG_SeedB = B55A9E3CA27EEA79012DDB1BE8F0C8964DA632FF7D3E6B4A969F0FA432AE6099
+H_OutputB = 7C79176EB7C2993A6ADF49006BCD25F80477AA32BDD438CFE94516C32B854327
+SharedKey = D4E5390A9132FA5AC059632A4CB2D5330142ECC730709E891E4411E7EA161C7A
+
+DRBG_SeedA = 67E64EA7FC3B79E0103E0C0A56CA000B20B84F6CEE2C466E42466A64D201B37C0E07C15680B9797FDCB58DB7ED259105AA7E0CCD2C21EF7B98BA60B402203ACF
+H_OutputA = 3C98972091B1B0146B8522A006C629EED3AC064442CA0155F1E105FDFFE7EC32
+DRBG_SeedB = 1BDAAC602454785238B86BBD4133B1153EE3C4120140FBE17767A89F2D5008DB
+H_OutputB = 43B6327CA6455A9EBA9F2F68FD3DAFD20339FF39E637D45E57F10BBEA9CF3AFF
+SharedKey = A0926796926E43FB95A3804FC22CFB5EA3C72428C5CB672E0CF9C54A333B2710
+
+DRBG_SeedA = 031DAD5CCD6A8D84EE6AFDADED830105696C83645951A9C239D7F43BDD719B9555C86D63379DF73CCD61F9FBE78396A083338CE06C72D664876AA9009A7D8ACE
+H_OutputA = 5591C3A4ACDAB6C3EFEA624BA85EEF9EBA4192A4ACC6A5658AF4529080794C20
+DRBG_SeedB = 4374D1E4D4EAD24168AE613F4BB3C63DFC38243E6E10842B46D8B2DA6BC6C015
+H_OutputB = D4C76DC5B14058CF67CB135D9F12B98F8D6B2724021C8ADE914443BACD0B8FC2
+SharedKey = 334C71286EA1CB7DCED9C08AB848AFF24F70011C2A7C68E493E8708340C7A9B9
+
+DRBG_SeedA = 57E280042CC0B86280358FCA5C9EA1DC995B355D5F0415ED20CFF848F0F761C48EF0F55A974616ACAEF06033948321CCD9142053108A889CD29872B495B2EDAB
+H_OutputA = 24B8AE6EB628EC2FBEDD4C05B9881646D114A1C3000C23E06FC4BFA8DAFF04F1
+DRBG_SeedB = 39D1E823C76899CF9B42A46E9C81AB374FD2E1504306F0F93F6B2F38B40C0794
+H_OutputB = 8B3157C9AB8A19A4138BDC761D1C8B640D70AD753D69A3249D9E3B16C89CC503
+SharedKey = 6B3B789D2D417D118370415102D7F27B50E82CE3383A2BFC692FE9CDFB21C957
+
+DRBG_SeedA = A8128C9A8B5ED2C8A394B4193CD1FC464C99BAECDFB7B5C322A92F0A2527455F899485873183B5820451D44FFDD07F2F9C82CBEB7DA03F7713B0BA1380BE1DED
+H_OutputA = F0E4597B3C5E4DAE3E2E6DEF5E9CFC5CAE2E4BDADD1FA5BF885C47EE8A2277CB
+DRBG_SeedB = 4DBB3BA93DE9A4877FFA3F07863A3377B71FEE61A0A3125E5DB7733656592C35
+H_OutputB = 968BC21F8FFDDA7C3E743BC634682654483134FCCE638019A798B4D8E54BA0A7
+SharedKey = 8B7DF90A7795EC0C31ADC5F512D0E57009265BFF258FCD2C95A513283254082E
+
+DRBG_SeedA = 104BE8330539A2CD286FC7F5F50F5178BA92717F439B8E23AF5656762FE91B15483EC712C482942A50B12075569566EF6833180F568BB8F76699714C52E062E1
+H_OutputA = 69F787A07224A2C05979FBA1CB36379EF8FBD401173BF33D718F2336B96B11D7
+DRBG_SeedB = 576863F24BF10261C26FA1574F00DE7A7810EC853FFFBC276829BEC4A012F083
+H_OutputB = CB3B21346B96263B4A15D800F82E42A8AC9600F6364E5CDC695FE3A32A88A937
+SharedKey = A8AC8DBA8A3E3E2015E4B8A2EFBB25ADE639E03DC6CFFCC3FE72E26A5C4D4C91
+
+DRBG_SeedA = 27EEF015D23BE2923D9B1224ECE8AC05FB41F2ECF6EC5DC2B14688B646728D18C97810BBA75FB40CD972874FC1E89632B1884D188B650B2341BE449B206E7BC9
+H_OutputA = 29E31806435157C286F119B4C325755A5646E51A8B10DD8FAC8DC98841F92C67
+DRBG_SeedB = A56ED6416685C4DC0A09E76EF2E8279AAE8E73F98467D4D59DE4D74B37DBA57F
+H_OutputB = 0F3EE2EA65E2ABF78D96706091CF4B10F7342989E462941BFE4E7DDD7DBDE98A
+SharedKey = EB9E242DA82EDF69EBA391BF8F55C58317165BBC7F1D489F8236F1AD65BED1E1
+
+DRBG_SeedA = A4BE9916F682290EC6537232CDE4005D79D9099714F4D22FB49BD6CD4A2E1B1E766012DE1062F30A1EB80930D17D553B6FE8BD36B2B735EEF8525C525D3695AF
+H_OutputA = 7942C2C045024F9E52433D9E96AA94A8C2C1C5D55D6CDAED211FF29A345D76AA
+DRBG_SeedB = 3BD2E4F7FE9E5CBE045EC9B9872F9348E70F49FECE03C386BA6D9BC5C55A07C2
+H_OutputB = 48E078916AE37DC49A4A3DDA1925BB9009E3C6248AECD885B7ED265A2C0BDC76
+SharedKey = 30A123B53C60197E6D38A7799BF59497DB9DCEFEF5FDE540867343570A83A3B0
+
+DRBG_SeedA = 88F779D6AE56264C535CB878C5B26692484DF0114F943DEED60D29A244221BE81EA36D6CEEEA9985BC7F99C9DBD3FD0C87F25BA8038F1024CA2CD5BFB35BDB48
+H_OutputA = F891B73195BB8D054AEFA86760413B433EE952B581A7BC029C48EF32577CE75A
+DRBG_SeedB = 7FC6D08EC7B13904AFC60A8000682505793714373A60AEE1936CA315284234FB
+H_OutputB = 45614CE6E63B7733E47DAB1D5490F4204D65F68E6385AF7F426E57557C1298D0
+SharedKey = 742891B49C97775A80E96C20B3215DBCFACF990EEC9C10D0CB801864F6578E04
+
+DRBG_SeedA = FB4AC0CA2D6F0017BFE5893DBB16724F67EBA11CB4F211199C2BC5A2C0E1054F05FDC5D45AFD95D68DBD047DA63EEA0047DF7FF7019DC1C46B5A51A93F4D74B2
+H_OutputA = 87A51487FFDAF0B7DC2F3CA397D6007ABA91036D12E76D2077B096CE2676F03C
+DRBG_SeedB = 7CEB6133CB1630B8DEDE00A498FAE2368CD882FB5E92F2DA458F62D91F342375
+H_OutputB = 209AD326ED4788B73FC2839EAB02DE3760E7C71135A9C3D4A2D5550FAF9996C7
+SharedKey = FC843FC6C8A3A3259CDBB0E868A2316FD9E7F533726440C9BCF769B9579CDA0D
+
+DRBG_SeedA = C9CE39747C47C07EACE38B598B0685C01AF55C63520AF6966E0672A0FCD4B4DA751C7810037FA2CC14FFE5CBD02F4CFE100ACA65DB14EDD7A3C77117E56AB50F
+H_OutputA = A401EF02580077D96D469C400AB6EC9EA0409099436FE41D77D19F50C2E0DC7A
+DRBG_SeedB = 9312EDCC1DC56116EC4AE2832026A2BD5263B9FC29F8882D6EEB976881DBC6E5
+H_OutputB = C70B84CB072B30ADFD4640282BB977E7C54C640408C5E67831079B541CB2D0D6
+SharedKey = 7DA229DB4D427D6C61A1659DFFF958B88A38B7EF05BEBB445F82E6D56E078C4F
+
+DRBG_SeedA = 6FFA3FE741ED7AC26CD2C828D70F6D611F2D961E2F8C9741FA84C34F308F0669D33F0748B5498D8C4C83C6E8D027A223E73C102C7B711658699A217F88E35E69
+H_OutputA = DCA5662ECA3B8BB6E43A1B869114347AA3AB2AFFE3D7E04D75F028C65380E0EA
+DRBG_SeedB = 8E4E0A2FFC721EA09BA3F6BE5719E1179503F9BA7F22B398CE7052F69E457001
+H_OutputB = A05EA683D523A2B29E2E6563BD1432BCEC977E1A44440645B59885FA925B2265
+SharedKey = FA8C2FC006B4AFF7D0CFE5DD2E3BDCB60B06913A6C0EB6FAC4A81BBB4FB1C0BA
+
+DRBG_SeedA = 6627BAD476018482ACF05BC9D4E41BC0FF80BED54C3295DB855F6B26649CBABECA28CAD6C3D92D88B0708533D317FDE7C07A7D0549A69CE122474FAA01B77746
+H_OutputA = C5E62FE2A47DCC330E712E65361020F7DE49EBAC6B135EF90FC157BB1F3238E3
+DRBG_SeedB = B0BF40FCC811F316C8FED408F1415F6200EAE4C89FD9B1FEA072C168B172F6E6
+H_OutputB = 4603A16EDF0EA9407649BF6A67AF1E1672E8B5ED883F9099056208908FE1E49A
+SharedKey = 68B8126C6FBC797F39C5BA9AA1A320C9EF4CFB8FA3B4DF45D4F4AC44AE5611E9
+
+DRBG_SeedA = C4482E4D2D963703E2DCAB6ECA357078C19755DAE325D8582AC935A07F6BDE5FCB5E18F11FF659B89730FF5E60A80A16EF462FEED7A4A93B9B2686E34BCC86EF
+H_OutputA = A9C3D2013ECF908E29075F82D574ACA8094C970439EDA6E21DEC572B4FCFF9A5
+DRBG_SeedB = C45C630FB36926E0721F18E03142AAE0136901ACA1ECC591D70424A696AE15F6
+H_OutputB = 2F25FCE30F09DCE2941795007EED365F6F7F10761AB8A21CCE401428D226134C
+SharedKey = 48B9B26DC426E8584A6C7F164D0C1172B34A88AD849ABC1EB0935AAB02588AFC
+
+DRBG_SeedA = 5C4F28A0919CC7F7846EBC7DACE225BD65A6085D6B7DD36FD060191B58A69E9CB7D5FE66A9862BDE51E322AC52016B1F4F4610D95E49094820A0C1CCB37F71E7
+H_OutputA = 4BE33D9CE3D2194E8503DB857091E925325ACB1E15AD7CD80A1890A64C1A990D
+DRBG_SeedB = 8FEBC8E7B6E727AC039F3AA36EC364BC715017FC3C45AD8908D354EC49D55521
+H_OutputB = D972559F33778DA40BDD680BBCF20A93C84B112FED60D9DE9DAADC69CCDAC997
+SharedKey = CC98053DBCCC2404F5674AB3E5B91F612F7915264A7E2EE2C9EC7BA9462E0054
+
+DRBG_SeedA = C8D16C2F13B2AB38DB63D00811DAA43ECE3D34D3B5625C634ABD802216D9F46DBDDCB00154253D70C215721F81F0CDC5D237A5DCB50D85127B189A8D5359C4B4
+H_OutputA = 7FE139E76AEE44E5F13C9BDDFE0496C89DABF81D5C13A6F390576B7B883D137D
+DRBG_SeedB = 353CFFFA07B02A6A2003E2ADC05E1A38BEBC2C0A252F41EAEA9CA9E089549FE8
+H_OutputB = 96884795C775AE16BC183C6F75494A40F0808F76582FE409E0611113A9F4BED6
+SharedKey = 18E5E47F9530E3FA871353905AFBB85D07E761169347D1C37D1F42266A249A01
+
+DRBG_SeedA = 28F5AF2C739751B0456A27E8DBD9EB3B1CD5AD428A5E4D1EAE560684533309418066548363E32CAD882B02C96433C6EAF1B58D881B2CBAE294479BE53621E9E7
+H_OutputA = 5DF023A7D30B40B011A4CCAFC5DDBD82876A26FACAB130F2D66F77220F7684BA
+DRBG_SeedB = BC99A55160B11224D8AF0F3654A41B8205F220178A4E5F1E0E81B66777C42658
+H_OutputB = 03179B2A4BD115641F7380B67741B1E3A42A893AA0778342A7BB8B094884F93D
+SharedKey = 4A1B2FEE00C344A77E1B2DC51E539F3B7EFEEB1457B90B9497B8F702B3E0DEBF
+
+DRBG_SeedA = 5C198AA6202F93B62220E4B068E656ADD0466345E4CE93DB47A3ECF3CCC6A3FD2C2E956113AD64E91C23C04709BCFC41B25640EE71DD5ABD41228D876F61F99A
+H_OutputA = B3C585036D259A6F2520C9DD8940A9DE1FD9647AC755FD7E3E53DC7476ADA3F2
+DRBG_SeedB = A653FD30BA8ECD3BABBBF363746B1934EF51E7B8302A06F7262124616670877B
+H_OutputB = 49A35ABEB203C6E50D8D701E6E0A52B752A649DBAAFC75F60471A3DC1175C65E
+SharedKey = 92682521CBE42E9BA91CA6BBB9FEDA0FF76AEFB2D16EB105E290B54FC36E1928
+
+DRBG_SeedA = 2C78428CD077EA13FBB0FAEC35FD9DA41F5754AB568EDC399F985A2CB185246F963C8E664E454D410A518EBDCAF991FFDDDB41233BBA764EF440898857E182DA
+H_OutputA = 5A485AA61F60CE96F1B29789E118B0ED9E071886EBEE69348A86736A247AFF66
+DRBG_SeedB = A52A2192DBE71EE105CEE3D648DFBD7BC8899ED9BB5CC0F3F8002F782E24A5F4
+H_OutputB = B1F04DEA6F90F9938643E8EDC7BDAB8D8215F35D2629D28CFC12189A9611B4D8
+SharedKey = 7AC03506A2413402269ACD8A9D80886340E960C9AA1A845D471B09C948950847
+
+DRBG_SeedA = 9985BEF6FD7515A5669941917A610D102266450CA6DFADB9396B5FA16A0906429D016386B160862366CFEAFD3AAECF4521F573792BBFC30951EFF03ABC88E9A6
+H_OutputA = FAD641C6E9C1E2902B0339E398711F727E4C8D0115DC8ACA845973C6385BC974
+DRBG_SeedB = B9776AF77132B90146E94914EB4550E7264B15E3F9AE9BD31663EF95A7D14110
+H_OutputB = 0BBDFF0CA1518B38ADADE77A769AC5224DB746F7984393B3EFE63AA170416473
+SharedKey = CE168454421F59E61D172FB1BB435C6654C5DE42F65EB91974A6B29BC7C403D7
+
+DRBG_SeedA = 3286E7AC67557CD343CA5774AB3E92A863B32C262043C5384734ABAEF34EF8FB77A869F80B4005A02CFA6AD76053961BB49D079F47BA50E498241F7EF4740E5C
+H_OutputA = 2E0418D80563C8E547D0D30567B3D302450A7F15CFDBF129D8E25F86A65D5019
+DRBG_SeedB = 79A043A25F81231EE3D8565395AE17193964F6B3B325E699A560E064F5D6000B
+H_OutputB = 3FCB8BB97718DEC450B8005B754FBBC9806E0D626B7FD4ACF3ECA42DB5338BE9
+SharedKey = 9BE3B6CB06E6E45E3FAFE3B03500D4AAF921FDC5CAA8FA82CAD75DBAB9F27F48
+
+DRBG_SeedA = C5384C35F61F42B03B806EE5779F3B71811ECF402D0D1B51352D3603A43611F656333BBFAD6D0FBDF13E50F4B61BFC4F8A9D083E39B6671CB93EF5036E3C9CE1
+H_OutputA = A327C57C3D5ABD84E0E0474830D4DE3185CF64409D68EF9B5FA8138A9BA17B96
+DRBG_SeedB = D3DF7508DAB27DF65BC97DBCCB6DA0238E21F4BF77185770195017995FCD34FE
+H_OutputB = 3E65DA23B5C1ADC40A7A83196AE1380526AF25F4489927F9D60CCF759D6C5667
+SharedKey = 3087FFFB7A9A516A868CE9BEF004CD92E7CE2E829271870327E5BED575C476AE
+
+DRBG_SeedA = 01588F306E271C6D403C5B798BF7AB5B42B8F62330A3FAEB0262ABC1267A3A6C200563EE091C7B903B17D92CB4C45F30FC54C3E355306BF40EAC91718432CFA5
+H_OutputA = 0400F8B93397F468F0A26095E4E334AE377AA5FFC5168A9CE60C8A61B57E0F08
+DRBG_SeedB = BDD2E158484F95AEAA84A5CB2580CF68C2C797643093C721D7342BFC8D740C4C
+H_OutputB = 6C618AE1285CA4692D78A1803691311CA353BC27F5E8466E06E5338BB368861E
+SharedKey = 13890C59F4FD9CB4E30D653A9E6FE424D194504C3DF11853F342B1EE68724E65
+
+DRBG_SeedA = AE68E0FD2701B8AFE80B9257E87341BA858D0C68A9CD0363DF8E73198D7A691EB1CFB32865DD25412335D7D5A52B266525803107A68918DA26C33C8E42022C64
+H_OutputA = E66B02E9D35AB8A0BC6851E75F44F9D49764413F74FB18CB8C742859019793C3
+DRBG_SeedB = 8D53AECB922EF8A23BC7087E7CD2F13A9766E1B2E3E8DF3531E2284858468E11
+H_OutputB = BA98AA2DDE5D8C88C59EEB50E5A47315363531BDDE589C133F5FD822C77DAF67
+SharedKey = 28C0C6965B3633D2E79DD3DC908154BDDB11C4FD342A6F4CFE23FEAFE8D21C33
+
+DRBG_SeedA = 104184DB8DEEB8E51350163290C6BB8AB1AAD3BBB5EEFA01382EE2218FB54F7A87CBFC7B615CE06AEFB4DDE975BB19DB13332E93BE7A31562215CFB675AEBBFF
+H_OutputA = FCFE36E4F289F0CEBED88284DE1F44F4F71C8177AC19FEEA7DC3E392F438233E
+DRBG_SeedB = 63058625F451A44B296FADFD4CE6A41EC78CFFFA0DDB2E8622EC8C5B92522D70
+H_OutputB = BFFA2852934EF1C6CF42745CEFA62E5F8ACE73E6CE9A9A7D4FA1B3DCC046EFC2
+SharedKey = 3178AEF61C91D8045CDC88C43FEC501CE3A2D1ED9D4776059377789600976DDA
+
+DRBG_SeedA = FD082EE3024AB92EF1B91C6779976705F49AA03A5DA8F34A74F8C625A24284817DD6CB0A5FA2F58D68C6640F46106A470046C98DEE92F418E874980936C0404B
+H_OutputA = C56541B2FD5F53EF96944600716CE46DB79A6301D4C8E34D2028B08DF3E8D964
+DRBG_SeedB = 8AB3611C73183A6320692C4E7D3AFE214A2B6A1FCB9581904D0F43B1612C870F
+H_OutputB = 44335F5B9D3F2BD136D368A1D3802FB8B33EEC193BCCFA75FCA275E4CA5581E7
+SharedKey = 6CEE8BBD25B54EEDBCE2428D08C50E7DFAFCDD187947ECDA5B3146E0D7CE08B5
+
+DRBG_SeedA = 13C4A22B1C54073F96B390FE67CEF332D53D5AA47719B14FB22116730DBBBEEA5D2A233C43BC420A4C27CA9863A1E7ECA95740D43C2C99241B551BAB4CD36DF6
+H_OutputA = 04004069C39126D4317CD6C7150F0720C2FFF695D5DE298A1FC9161F174CF504
+DRBG_SeedB = 2339B6BE3CFC8AFEBF218850D8585328D72649D30DCDEFE17ADAD235E859EABB
+H_OutputB = 985DF8F2FFBDF4A5A4A7AC2ECFDBDF2A3F0334E7E56612376153522470BE70DB
+SharedKey = 86181432F7CEDC871432C1DCBC86A0F34CABC8AC636A8B99D92DCA3D99825BC6
+
+DRBG_SeedA = A18DD1950CF63508255A8D68260F66EEE7CA6BB45372AF992208EC62B1612775C173631AA4E8E4E9F2D8CD62CE6D234DB90AF753AB0D243DEF910AFEB78FCC7E
+H_OutputA = AE9036B200519A18B15E995A28CBEC234FA06542D277B3555392A7E33BE95221
+DRBG_SeedB = DE4AEECE1BD53138EF6F647B35D82DEFA2A9C57AE417381FCC525460504CF3C9
+H_OutputB = C84B3DCAF5AC517BBB28556BB8A22B91FE485E890646BC84D7DA7048C6BC5BAA
+SharedKey = 39EA479C5A773F2B35D7F29562ADD11DB5C072C6D78E72B18B15CADB2E679533
+
+DRBG_SeedA = 1E7C4ADD50FF415813CEEA37766ADE0E472B8A4CD91B36C151365650D3F977E90612022BF09C302AA629E59657E780863D8202C87AD103762622FA3D4AAAB4A8
+H_OutputA = 83AC8DF774EEEDD1A158E3CC2A3EAECB243E14C1BD7F63F556B82CFB96EC786B
+DRBG_SeedB = 9057635D4B6FFFE534ED8A15E1072ED32F9A16B20F53A292CB570CD9FCEFD6A0
+H_OutputB = CE039C97F7BF8BC01EB25E65CFBEE6DA51066A5AEB9C5B3C1E7B525D3EF9A522
+SharedKey = 71A056B1366641EDAF482940347484E28C0A740FDE61FF135FF2DA22C95E09F4
+
+DRBG_SeedA = B54FEB802D588B3E1F41E756EB8CDA8A641ED6545737DD7863552FDB2C2E503A0FE961AA50568E48804C7020C827070FDA319675A6AE68ED4DCB5B63220049DC
+H_OutputA = 40303DB4CA0CEFA9E16E7B47C0ADEAB9F6C86096877A7820C346FA3156EE9392
+DRBG_SeedB = 3DED2B9619C7632368799ECFF23058D54DF0F244EFAA546CB7432F73E1468C81
+H_OutputB = 2F4CBFD304F4CE0F4CC365F2284A8F70C17EE26E474DF219EDF9B0493062363A
+SharedKey = 128855E60183DD73256511B482B96F7D9DADEA11BAC6DDF1D602865D27108C40
+
+DRBG_SeedA = 2BCF0D2EB396223DFCB3E36F3EF774A10B776523722AA2010D4619F4460D706E68E317E295F8ADD2B91ACE92CE284275F56A6EAC99AD22F880C7C7FB4D482A21
+H_OutputA = EBFD440301246C836615E759760C50993236FB5C477CF589A635881ED4EFB12A
+DRBG_SeedB = 3E00FCC43EEE0D4D2DFE80CD05E2C1657DA3991F36ECEC6FB897763A360F0ED5
+H_OutputB = C7600C4CC9CD2236572B363DA5E7A17AD3823780E28BDE387DE879240D20EA3B
+SharedKey = 79549263337E9ED3184CA83A848DC9824432D59632BCDB4459EE5DD3B775BCEF
+
+DRBG_SeedA = 1180E78B3545D536F7445F43DA2FEA0685762AC533C7A2DFB6D2DE1BAB2142DA9EE59983D3E6AE95CDFD308DC135FA02DAB2AD2ADC48B8822ADDDFD00B9ABED6
+H_OutputA = 71C2B437EF2BC7DD3882E4D2435A8FF2B611421405187B031AD71927B1B357A8
+DRBG_SeedB = D52EB2FEFA45C646D21E0F244AA4BCEEA4A660E4A02E6015872E88C4282DB008
+H_OutputB = 75541BFE9007C8C52471269E322D69C72CAB8347DE68B8CAF057B818445F7EBB
+SharedKey = 830DCF1503DA5D92A83DB92D6AE94BD77C4E95E80D97A15C2DA519E6DBF23A65
+
+DRBG_SeedA = D28307026E3081B4A999280CAC0B53D9E6044EE87970BB4B8D629BEC8CEC5B42A0E4F2A120DF32EA1CFE98DDE1D0CD8DA7765A2AE35F48C2791010EE13F21B9F
+H_OutputA = BF8CAFB3CF72531EF9B66923E39958527F87F0597CF8E4BA9C0F916B3C7D5126
+DRBG_SeedB = 2B54293950F97BFC2537664079A0245CA6185233DDB5E1DD7FE8943C41229D02
+H_OutputB = 07DA295448575CCEF8DE44B4DD74DD63C08F7AED6A6441F64C6FE8377494D110
+SharedKey = 1DA1DE1D0681B1C904A4D39D5A08CC17EABC05B567981A6073C4DE8694F4A875
+
+DRBG_SeedA = 0B0CF2B34CAB13532E2DBA039B266897F6E85FF652158265711A38F403199BDD76D497403A18D209B650FFC920A69C562AAD4DA10B3E6662B08C8EAB99CB7B66
+H_OutputA = CB3EB4C62A9DEF819E7F4F7462A94DA83B449E3629B1A2EACACA30E6856157C7
+DRBG_SeedB = 598EAC10E383279AA0E6D82E861785581F69AAD1BF65306E446C0CD30507ABA2
+H_OutputB = DF91B1C84FD3849831FF8AD7263AF3CB6B2B8CE9EC7580358E7B195933D116F0
+SharedKey = 19116E180D1FBB6AC345439BE4FAB1CF7998577C61979749ADD8DEA00AAF50E3
+
+DRBG_SeedA = E3A3B2960576D937945186A65BE72AC3AA6A9BD634ADBC5B6CE041538E5F981B8A5E832575DF3474CF9BB3A02FD093B4383B0BB297CDA2DC90C9CB5EDDBD02B2
+H_OutputA = F127BEA6E380FD310BE1120931EE4A7EB436D636783A08D0DD128217315C9FD4
+DRBG_SeedB = CECCC674969BDC0DB5B98244A27D8B076B0C33090632105D0A7617FEE2E9083A
+H_OutputB = B30809A5DA5AEE7A9C0BE2BCBB60D1647197E12F84C3CA49B69363A7C6792533
+SharedKey = 530F6074CE3C9B5197C8286042C9B93A31E75D9341B2650F8A988EE0133380B5
+
+DRBG_SeedA = 66371300463F06079B3240B670059887F190E7280EAF2522FDBD0365723F40AF030B7937D450C12700A64CC2723685E8621EBFD952CD73375334918753AA26C9
+H_OutputA = 58A3A1A816A8B90F3D4009AA8B79DE4DED483B7985CADF764F71A149EFDB81E8
+DRBG_SeedB = 6030BD7F891A07763D7133B3BC8B5636126561F45A2C17DA18E0DA4A097BF644
+H_OutputB = 3E709EBE9DA849054EA79B9C20169DC511D4AA23970ED34D25BB6A4DC295937E
+SharedKey = E6CB8B3280DCCA0AE8EB09352430A564DF1BB3065807B6B1D36F2DEE634C9839
+
+DRBG_SeedA = AEB991B8DA4E0B940BF24FCFE5A617DAB030C961463115A660A08A6C7C4D55FD0EB8902AB8DC296F4B2C0D3082AB031A3B61D276483C57B608509842F51C0F1E
+H_OutputA = DC2899E0D1C8A5D6D1D40D42DC91B997ED73D88B87FC564EE2ACA6A3BEFFE40C
+DRBG_SeedB = 0163FCC84715DF76D9FE408D5D2912AC7B69CFE406791D5CF07676C86048A042
+H_OutputB = 38A8D66F7619FE264C4868A6F6664C7CCB11C302025FB7281D487E61256E8F25
+SharedKey = 1521268CD630568713F668E561CB56664F9430AB0709C36AAB3E12F542600717
+
+DRBG_SeedA = 6C8FB5803E4F6DD2D7939C465CFA94B58BA9461FC2A843C6B3532096186D3E71938DF376DB93282AD74F4050EE3ECDED01FACF77144803E79356A812AE6C41F4
+H_OutputA = 389B8280CAC53EB8BF534E38AC8C497AE567219AAFA8BB86B146283D9695A793
+DRBG_SeedB = 938BC6C8D1472A4E23EADCA7F31486FED30BECFE38FC6FD42A21152A18316ABA
+H_OutputB = DA744F7FF2B93F29752E094F6EA1223B6CA9CD9032E4DAB9C7F6F703F4828CB9
+SharedKey = C7ECB633C442F3A5D485E496BCC6AA0891127C6567BA79A172464D746B1B0A61
+
+DRBG_SeedA = DE475F05E26AEE192154E50EA139E608FE2E87F21F356BB8297D81D28E22239F030FA0A8A0F12B243CD89B9E11F2CF9AD857E35CB52296DF4F8FA83C59C37F30
+H_OutputA = 0DC8372D807FA24F1669FD56CA2395BA1BFB47A40476D09340FD4E228FA20CDE
+DRBG_SeedB = FDEA7A47324F69D1B8619FB787B1924D0131A67F14ED813645A36105DD2D9626
+H_OutputB = 93B70189E59AE84151A29860DD8E6E1D7FB81000244298951456DAD35703AC6F
+SharedKey = C557AF89BEEB4EB9650BC96D10C29C20D1DCD5246C31E27CB18B4B96C4B4644F
+
+DRBG_SeedA = B22D273774A9ACEDE4CAC5F1957B8CB5E40E3FFC7B17FED88907EFDC1DA55A685E3E303EC62C358A5C146DF4421F4A009308F9BE4AC4D019C2E6DB719B25A281
+H_OutputA = 4D75DE6ADFEE5415363F1138D8B538E071BD9411A674203EEAC9E071183ED192
+DRBG_SeedB = FE188C31CD4157189CF859C0CFE88E1B22159FE2BDA5E4704F733B7E637C3D7B
+H_OutputB = C21697007965452F09C7C24D6F5CC9311102397A6C49C2689108EADDB5E81AD7
+SharedKey = 27B384A458D63496B4F365BF18ED28367A132809E8629AEF999D72F82377A2E2
+
+DRBG_SeedA = FEAD471C900CC0385F8BAD0734891FEEA90ED828FA962042CF2A12181C1B826781C4290611F2CA33F902528508AA8DE13D79DA9D03B51AC82BD16BA9DA92B7D8
+H_OutputA = 6D00D43542E690CD34CCDBACB518D0267B557A76A634173FEE33A13AED7041D4
+DRBG_SeedB = 0CCB2163078C49635F430ABEA6EFA2A92A98607666F814C0ABC3B04E3616DF26
+H_OutputB = 9CF017F37AE524E87FCF8E4B09EBD9825BF7702CEFE6464DD4E003BFFD35A6B3
+SharedKey = 8888E1BE8C774BEE34C4EB143646AA49E11D95918EA5F68896EAF5ACE664EF90
+
+DRBG_SeedA = 9136C66EB3D4640E25E1146DCB91CD91DBA82843F498F18E6D1C33F4197B172F57DE89F652C2FB8DA1622D329DB6DD55198700CBE3954C36726D10200A154FA5
+H_OutputA = 073EF4D1809DD1224E7B2C7623F11913091BEF85998B37AD1C91350A4AC98B39
+DRBG_SeedB = CA0CB7B56F450FA1081F0EF73818AE9A39BC18C7F3618FBF4CF5CE4EDAADC1CD
+H_OutputB = D9E98A811DD5D1D93B228546BB77D827F304084009F39B6058C27DE7B91FA536
+SharedKey = E725E87DF851D8297E712D8EE1A8ADE27F9C91B9480D5C648705E3852F0DC665
+
+DRBG_SeedA = 64205B7B51C6C2DB7477D3BC616DDD2A0787433032EF2B5ADF0F681DD3478490FCE3B9A1FCF2F3B0762F753A74C0154F50C4E2088299411A3D2241865DCA4A56
+H_OutputA = DF62BEA5323449610718D291B4FD032347A00918D1B7734FFD4B453E67F54B85
+DRBG_SeedB = 321C2D160C46851D49B8C4AF35D759F3EEFC65457B838D8DF9D0D376D0C19472
+H_OutputB = 451164D8272DB8780910C9731ADE49D44CA741267AD339674493B7BC71EE53C1
+SharedKey = E47572333E630A9F0AE5A21F0B39739016E8B8FFC562FEC35C43AC689619B77E
+
diff --git a/src/tests/data/pubkey/nr.vec b/src/tests/data/pubkey/nr.vec
deleted file mode 100644
index 7ea0b5f58..000000000
--- a/src/tests/data/pubkey/nr.vec
+++ /dev/null
@@ -1,108 +0,0 @@
-
-Hash = SHA-1
-P = 13232376895198612407547930718267435757728527029623408872245156039757713029036368719146452186041204237350521785240337048752071462798273003935646236777459223
-Q = 857393771208094202104259627990318636601332086981
-G = 11629401773565540073100961473632977008134185076958364415809981826641612629974728305105606061133984394938666464842000720534465163992699133277631369246002549
-X = 690137371285617821883812262785390552483969245734
-Msg = FCABA2CF434AC8DCFCEC
-Nonce = 91F1D3A9C129D91120EA3F6486A079AA695AB632
-Signature = 44EC399FAA3853B7F7313FCCB3A30B82B20A18C45E53188FC58B0E3C141A0851BAEA0A7723C71A94
-
-Hash = SHA-1
-P = 11539157087115501064443313862230776814501503314908866582520064395234214662096469833944226801182094864301551078051839094523689065169630864970454325952246003
-Q = 4611867475027478089006048754416511599991217483222299946239
-G = 6840886814729250448628234878216116001269356551393119934540583512165344555273987561922034037109642507867428525278842646754491096970938164337278633387482001
-X = 1883033040916132991100735190078580013234350924382655236344
-Msg = 5075752E
-Nonce = A876034938F576056B00569E4706963C8B28D23E03AEABE2
-Signature = 3097CCDF824E2BB33089DAA042551335625D9802A2BDE54C10810881157C8DC37E2ADC8195251FBE040B919D56512F57
-
-Hash = SHA-1
-P = 21493319731966889395799474793674095481723722419442661804680140633335622798225252248476045677397436074434085647562851808408438818911783503270078118300840749
-Q = 2448429158401879693785391062978880053200446269131
-G = 4203761693330811086621862151184427969736787878615125490977811499372765210480369328510227659014955675161810152504096942847711228481122133020330912131088488
-X = 2021846214679266501848864964638443639868567441259
-Msg = 5075752E
-Nonce = 019E4706963C8B28D23E03AEABE27C7B294EEC2337
-Signature = 006AAA75DD2B3A7AE867D2DA3581D04AE2AAA5905C0074F8C1507136682A93A23A89504DC0FEA5603946
-
-Hash = SHA-1
-P = 35830843685758796191508259498352925866257295533427704319070381297423750780192082137963436364930795492409541031064272330680223674416403180136573368273413749
-Q = 2448429158401879693785391062978880053200446269131
-G = 5290860346671742549277477828426565321171404093164267704697578220977450055062732322451195806155297850087747074380869149080130132451724804988893066580084340
-X = 1649869239975171591476437377401006250492835853262
-Msg = 5075752E
-Nonce = 019540EEBCCFFBC202BB81AD78F1E046F4D4597F53
-Signature = 013D9A09041BA0E9DD2ECE20C5042F5442DD14C8F00113A3C080CB2B8FCC156D33E7FB8966032FE1570D
-
-Hash = SHA-1
-P = 140216752278600893405703049381038106466439992842926641456608953608349773182806651998779141954572985837754248088548038650964859967484756133596402858595223598718762187370713301783055866344582170960945605918540977304299009366211417416442912323654642193555012972631965464344489591125740216730885895427547016442089
-Q = 17664434429951611987885446903779562647393233487261
-G = 103172929054303770690939275696854890328330388523369933172989492329033218850064284598935370056999657672388300721493303716791847736030771754006167529200711350097996970123193674509190741058192564015421755738018474299227597843185650645225450031497015978814063018225280067737398554797638834576543770866767917382576
-X = 9216662458075461813441473730167636850659942976016
-Msg = 5075752E
-Nonce = 0AF20FE4162B721067160E55F9BC980AAC8A51BFCC
-Signature = 05B325CB3BAC1A189B132F8F88DB1389958604305104AB71A2C77D8A9C9026559C2E1765D44A81A1178B
-
-Hash = SHA-1
-P = 301164513047973738819737863923065529772693984731550072752736054506472125309312211411181830533992242283304962453762009830563777450843078947095340533761364645205077068779239171754462303166309130350364690633659047670592562646315208077550758968504608591739918637523132651620932257937394751403503356774821801467331
-Q = 17664434429951611987885446903779562647393233487261
-G = 109878721885498452449845699239583955684868586896311014124779988390432343992663258694986210605150036214426823642714691392396570235722052158072237456051272972227372469236772215281153923487765650215573437828715500032798737742846561463845735026996521961545383384496833091910320864533657907014709078376595881364845
-X = 9672614292481226693960166253962510771536576389944
-Msg = 47656E6B696B656E67617220466C61726521
-Nonce = 0A9A8513912E5A2AA2375A50A53E505C0F8D4D0A7F
-Signature = 082B6655BB32ED12D90CA95B8DDCBE36DA1DF3C96F009F88917FCB93F04D6198D438A1EF1FB732914332
-
-Hash = SHA-1
-P = 660703140020436920365598902080870476496289380520011387299596216821937476920314137676598785178807314325545190213504796545881356988471912192081035395040312893960612855628970142307066742368801318589270856537829059208268864011000133840498585189586263066066619720891141025456081333611140755308457869893203540507391
-Q = 87816513021834952061662318874161147590877995550057
-G = 323101247392657525008071693290907082407373408613350240111018443116964264958293859895147919396175836914648220360417188806609171792878531288691654693297452754739705338932798481785294159148443232564990176903662128014218757109880275171610833163055983871798086534511144978777985043569325074103197213925980821084011
-X = 33056640489775673385219123577423039086031497077560
-Msg = 47656E6B696B656E67617220466C61726521
-Nonce = 2A9A8513912E5A2AA2375A50A53E505C0F8D4D0A7F
-Signature = 34CD8EEF38DE00C87C2281ADEA5A597E85AFB8BDB42F59C80618D6EDB7361EF76674C0D535B31BDA3A9A
-
-Hash = SHA-1
-P = 1379780393965363283457320978396480369943480172096934016393316541452868180142317990207432694468437458410025645732990369976516516063729578682052425117598209391471684429328432083412275620773785695067083188346169082283621466740369985366394237631749572014720021772369666276935677436710491086612709427431422684117033
-Q = 87816513021834952061662318874161147590877995550057
-G = 1311969761382233592297578466165621268108129107689358121907769337880867301593670907143892175375566348862635411711374254007220774729472266605648630030603637282192333501605194501700719677843468373081976857008453088208080541406832891414075067602512850266116823025420778037639787577775282728456511758898079378412121
-X = 33056640489775673385219123577423039086031497077560
-Msg = 47656E6B696B656E67617220466C61726521
-Nonce = 2A9A8513912E5A2AA2375A50A53E505C0F8D4D0A7F
-Signature = 3255F933B90A659F32A2CEBDAD6C3465A494A87D350255D303139C95B0B60D3258A060B4510B0F26B22A
-
-Hash = SHA-1
-P = 2215835318919259185407136225166932443628083477708275860820654775805976008986844847116208531154747351262647682385758497411128854630678369023632414267685978088840312891295034156027960434251678198162918925642789892491604036248910534219539204654146485930985719383163759172858331638167627440903411015733068753273027
-Q = 64309387768281421215468729727290653627386295176121
-G = 1475310677586848995805494750762847694416864504694891230462845662059434954071887636112972407455438977563974495334718719978332643627390509315535841598673191776642366618729540242890273779397393741683596497385923869352052197961340599682222007901084919110828432197144483667033529875944525571083261123938926291555084
-X = 63738456098411319716118727591110898184859942159140
-Msg = B5E19E15868A062940B6909033B90A659F32A203
-Nonce = 2B51BC665CF466B2CEC3DCA92F6D8F0F02F6A4F05E
-Signature = 26F372588C0F5C1C71E32CE62E32B35C6A28C0454C0B6E09F2D96697037955B5EB51F38DA7B82F4C2C1B
-
-Hash = SHA-1
-P = 5505419827986981360083225706842467131767674143833794155961952892326024602512762050244188643341345352720149399867357379100834131418709353131827461694214183281686904885134573880240966656029267037736401776255169735480999895658507104122229743232182355716634936075734224169017149362830817700617535698331873614423333
-Q = 64149332069385337811352784807066226782206009894953
-G = 2209689516064916258301675205049467919080756622901846282997645916360951199910468772603886780375737673116724508378029587901519875020180283287060054683322382042615391178144742613811136707400642780906564250493022359468675209660353704542003948653839849585992866634088325506865322813990632995812250475462302465328099
-X = 36554240750905903253864460752696908094868073092201
-Msg = B5E19E15868A062940B6909033B90A659F32A202
-Nonce = 260FE1BF1BC190EB4014A860AD06DAACF0E62B5C2D
-Signature = 06FDDB7CC9347C59CA19C4C1D1489A333C2AC894400BB70AAD611DF63BAB771F0418605456957DA85FEF
-
-Hash = SHA-1
-P = 9250511942545843330250071173117860277568745788853414359370800439964570922849233589996096207730504873439659011115968230464487751688751178048713386511354094948254917838369172236982578927078353941647172074469591206853805560338228966334759312206175943223147016446334199288955810713526193635473525613891428251917643
-Q = 86817770948500646696376153866298303732836782970827
-G = 724918010552210077957259566048848276720076781283162106375865877958493111978322253687534787631911218249370474608056384339729299831713149909912058500497813465443708704666375256581242479984935812641837885785219922258472517621022924127430688333574757524554461547464239654242787326906525790210552401334762974618211
-X = 31970297447971648840599273756646875320184370534450
-Msg = B5E19E15868A062940B6909033B90A659F32A201
-Nonce = 2C6C5DDC20577082E4711D5F1327B0A8EEAA166617
-Signature = 2A8EE316C60FBB17BA8FC78D07402BC3B70E90D7060A80875979E0A2C63F67E871C1B80A2F3ECA1F6FCD
-
-Hash = SHA-1
-P = 19111252109879106551762735748075186208134979696829360100271814234024764304315225414805509744577336657096425461263248528046784276440964807828814289094498689903366980653888641241375585465860443155152933260465951241648574220324726817294643663179877120505866654270179791400891310032585850557581323522175688455763583
-Q = 81922656227567365417492475134687902350001383859709
-G = 14192377354377485672607889615664569982217004959622462208284683423636765305938230251294168377121489109009071925504129143063559851028061260650266772077602325176109397561736099074924449774999498908553216425305363194605557225748874563803272070193223634377877400558810380140400568592238681843565083451652221215870033
-X = 28748754198429578100702948616241622132862396928023
-Msg = 80EC0767A54D67D3E086EE2B47E8527DD71BFC2911B11E40
-Nonce = 23AEAF18FB8F0D808218A587F86C16B16AA5DFA48E
-Signature = 084ECEC098E77A72CDB6AE4BB5B77FD81EA19904962B89AD966FB795F201BE01BA0D5CBA8A63BBBB222D
diff --git a/src/tests/data/pubkey/rsa_sig.vec b/src/tests/data/pubkey/rsa_sig.vec
index 18a9b55d4..c352d9205 100644
--- a/src/tests/data/pubkey/rsa_sig.vec
+++ b/src/tests/data/pubkey/rsa_sig.vec
@@ -148,34 +148,6 @@ Q = 1230750235930523558307236321284100548115636187714970826267882300302842003242
Msg = 7072696F6E636F7270
Signature = 3697C05A657A8904C792E750515BCB11751D2D4C4C1460FA6055A10A2C5F2320CFF2D82C0CF086E2E213CF5C4A4BE890F5C0A9F98789710646A500DA83333AE1CC6A24E99167B97B7E7EC06FDC789037DF23F6FD1608695643C7D7C6462A0B37AD926FCA364A826DE539CC89419C99397C7FA1F1CD244B0C7D3C27E77B6A4D4806E749B1291A23F8F3E6873BC8DE349F871530AE11CF4EC42E27B6E3BACAA3DD6A40AE51463EDE39B510E94F0A177328F868C91B5C35F13AF0FEF0AA4AD88B4D
-Padding = EMSA2(RIPEMD-128)
-E = 65537
-P = 30591693737094154398644675106263504379403477948171972807479302421847529767632977161255649292854912675261964092642711
-Q = 31525024883528724188040731298623782591495821826748348507751579753638841973946458485234899643279818175890294937993923
-Msg = 7072696F6E636F7270
-Signature = 63F9A46002EEDF74A3B21A58AF360C78A0389A6FA469CC6C7F3F37B9298CB666C59CF993CD3EE741C8D6896F61135D2223C3D02B0AE001DF8EC270968F8E999FFD7575F437747E2C0B4181EB3ACFE51ADAD24924D75E86EFA2DF4531FFD1A718
-
-Padding = EMSA2(RIPEMD-128)
-E = 65537
-P = 11368704817493700936626798101362768879783044260988520494361719476728922843998377669065479558745853594969303776632392636949534709425028326966830332407456469
-Q = 9684487867711295418823781796724517181902035719252962858645278138706345583963475964914903197851100677565676778379867627016873935743015879344315952280921497
-Msg = 7072696F6E636F7270
-Signature = 38CDF4F149F7CAE46ECC24C32F98F30A73DA6B57F0281009493CBCCEE2B902F66DCCCFDEBB1422992BBB4D62030D24FF6674C27163CE4015A3BC899CFE6A01ACC06A7E0CC36754ABFAD8D19F5E7372747557FC9B2F5F8F19563F33AFD0D4E3CAF639657922468457E44032E72E865517E095B728E8ED3169D37B45374E53D692
-
-Padding = EMSA2(RIPEMD-128)
-E = 65537
-P = 10956194440658320049047729680960152925819370311069301949033136303301068775619599159427539489120149146834377875796551819542266815993042087568426345655131063
-Q = 11986780240363843518427773639089419606869264001112076030161437852470908569084952935419795370924750564016439000250807088636901980967687072395457882311344897
-Msg = 7072696F6E636F7270
-Signature = 9CC6743EA34FB010B0B64975E37CF4C90BEDC063B9CA90F543CCA616C67D16A8EA0883DCAE11FBA595CA8D42F45DA84532E8173149A55196D01E45588FF372A1D95DEBC58353B3892810F43F58A935E85AFF87B46BCB77C6176422E887BA3671F44BD6112DB0E4A56B44BBED76EFDB01B079C43FE9AD593E65162C9FDB92B42A
-
-Padding = EMSA2(RIPEMD-128)
-E = 65537
-P = 1493081647698257945592425302627367854663037689833333929117233432578015307914302171317912605123690754688685850444755947537141942728014076444513969199742840661797737512811613534281996660649365617513329258624026915628665059410835817137
-Q = 1434999624111100962071127937019397971456655559334726656774903057601210861257928542953329948471592610705125168742255043941163545301111407190719456116794170236473765293978010431337821276552432801148592363931604509551245440889306772481
-Msg = 7072696F6E636F7270
-Signature = 3D2E76A438D4B927C4578B27EAAD666CC041D4495A14A462A530BC81AF115D961C4CF840E9B146C83BE619E9D7730ACC4589DC17665CB4B10A19E021BF4E5BD0F7A1CAF720BC4677B809F6E2BD6A15B94590A5DA3F03E83D819B1A429F22D595D2D042468EF602944508915C88480AAE928ABA32B4CC8FB4C7125496623912FCEBFF28D8DB33CAF008AB6B7195019DF8BAC96E23238EA8EC60D1C9527D91EC4018AA23A50B8B3998BB70006EC441334C1301D0A47C160FCE995A14831A737681
-
Padding = EMSA2(RIPEMD-160)
E = 65537
P = 33925778159875562458694815508122384232436989268432608178008054088773285675555263909583338719156234691017896174716511
@@ -267,13 +239,6 @@ Q = 1300628500736091066469357724169131719350514861299470388096939255066412050709
Msg = 2C88F626457046190AEB16FF2A499DF5820240A5248074445B2D54DDF0C298F57BFF
Signature = 0EB5DC0D319B97F56F1C71E381BC26F40012054BB9A597484946955886F83333D21E916D60C3FB667869383CF9AAF6C0A98641ECECCB9F3BD71943696A78609E6324386B2030D2B2DEF1692677E205282617AA40EBAEB48C86B884CF51884BC807BE2D7C83AE3C671DB24E141B76646F0466B0DBFF20362991D465F7A0F7B4324E54092A742E0FE4C66A200AF324706B7D1BDE1C0371AB5FAFD58EBDE5555D24DECF399553C94E45A3E5B3F491BEF76EA9B08C41C2F233F13F83C99D6D88EDAD
-Padding = EMSA3(MD2)
-E = 65537
-P = 23443439767333138692938389505422341860387525814723848738690073331642118819681
-Q = 23234950162188993388155927630085331316851060055334470382368804331834850828939
-Msg = 45766572796F6E65206765747320467269646179206F66662E
-Signature = 05FA6A812FC7DF8BF4F2542509E03E846E11B9C620BE2009EFB440EFBCC669216994AC04F341B57D05202D428FB2A27B5C77DFD9B15BFC3D559353503410C1E1
-
Padding = EMSA3(MD5)
E = 17
P = 13029564622157791280616891297384459345543528892729268050647908228725108502227809382105716872483480064224030258864846430267698903993578412414816903162894041
diff --git a/src/tests/data/pubkey/rw_sig.vec b/src/tests/data/pubkey/rw_sig.vec
deleted file mode 100644
index 515532f81..000000000
--- a/src/tests/data/pubkey/rw_sig.vec
+++ /dev/null
@@ -1,114 +0,0 @@
-
-E = 2
-P = 109498832837193349942352787694410757220743898293950008902229768464763555846411
-Q = 85230704000388320343522047881225795219999050879145593285943985369507278238159
-Msg = 5075752E
-Signature = 44CB3C6CD992A656AC2D8C92E044FCCC60FAA1B47FE153E7BA4B647136DA4A4288BD50FB0935E3B9180AF477F8B88E1EA1106569CCAB8D354E0A7E3AC92D70B3
-
-E = 2
-P = 109865738846453297504870443124415697975266037607085001559257420422594220882891
-Q = 98694408656025624050695264343005989524606446925918783808403866808761791794879
-Msg = A0C554E8D58C73A23F4725F1429E2F22
-Signature = 444C53E0B8CB70F1E8DC7788D390D4ECED5327800C122AB09C721DD08FE1E51A6FC8840140484014E64DA5D03A4F50ADE0D3E0B7C9C10B84D2B57045D6445121
-
-E = 2
-P = 143336889641615010244496430978489546339101892549496727101913128299881609918627
-Q = 151926545718894569699926859267668314402054550931627831706467116313636054387719
-Msg = CD5D30D1FCCF06CF6733D4416DB31B711461B81D53A855969E0E4A631D65E37B
-Signature = 0047459B8B8A46F43C6E54AA7D5B186AB997653BAFFD6EE9836ED0E4C38D12CCB8A1909A1FC1A4B9078946856287C280DF516BE8BAE4E17A9EECFD04B07F9310CE
-
-E = 2
-P = 182949987979358144640279185334649223492192688082789988743518134058381626294243
-Q = 217661937100392176429471532487409307118283276201469365990573762972129550201199
-Msg = 6BB7CFD26643B1202C3A437C4011DCEC6C3052164C1A5DA06DA42C1344D04CDA
-Signature = 00415BE626CE0173D34AAF57A86E66BC551C77A41AF32EFB64A3861E4F66EFEDDC2591360708B28338DE282F98A9DB05A0F2AD09427798BC98CE79F4D88C5EF1BE
-
-E = 2
-P = 192918421933113071672663571790417136575315830343623361517062943483820137610547
-Q = 219272031000798787900070278061750019215061926937271003090760219962651645895279
-Msg = E8B950C5BC86786FD69BCDF0FF8C5CA1BACE33FAB4260DB5814D8D11B8F1C7F9
-Signature = 00E51E4A98686C324B0356DF93058710E2B13B2FED029B2BF7F15DF8EF9BF209E1DEA5A101E614D6A843B9E4B218633D4D2E88398DF0C919EE9747F0CDEDE943BB
-
-E = 2
-P = 251763799668299139801148051936996493750316333616200301101265631148955054519003
-Q = 273942130639566796395628522491377999143259784737482155942900369025738294484647
-Msg = 54657374696E6720766172696F7573206B657973697A657320666F72205257207369676E6174757265733A2035313220746F203531392C20616E642031303234
-Signature = 0191F1BA45BC571445612D8C1A7818B52DFF78566E6CCFF7AB55B2F35FA21210C951F171E27A2921032718AE01BB4F209164BA0B21A5842D1925B35D09C7538050
-
-E = 2
-P = 409327577911563897329676201153305399224622257769264083949192266671863994023819
-Q = 341703906964487478759596292996274739409750155006525111822762040290119222665991
-Msg = 54657374696E6720766172696F7573206B657973697A657320666F72205257207369676E6174757265733A2035313220746F203531392C20616E642031303234
-Signature = 046C31E4EA320DF130FE1F361184DDC03713BBAC169E08266B91655B42A01F39E1E3FF781B04B2F44B2504F37ACC9688C1ADD7EB94A998779EFCDFBEB9FAFFC82D
-
-E = 2
-P = 542011156169896018363979833341171988540613020356308206083427540015546115987387
-Q = 588172110649890433110066846624960065830759891988972734390859461944450439293431
-Msg = 54657374696E6720766172696F7573206B657973697A657320666F72205257207369676E6174757265733A2035313220746F203531392C20616E642031303234
-Signature = 01BF0E20BF646E5E427B8D28CBAF696D7AA6B6DE878BB91C295D5559B1FA9A94F114FF61C11C0BC97066C2FC919815B0FD150CE70F63D696CEA4D5D1D7BDEDC035
-
-E = 2
-P = 771754770322374918077056807903198519432205177728078647887981967576575978481467
-Q = 786476629036513622552685880695741484791006753374459242149779582249234250146599
-Msg = 990B98BDAB266B4F5775025849FFFA9D344456AD023E7485
-Signature = 05F380320796E88C07170EE43F5497E3A84865E8BCD9EFFBC59D3E18B0CF785D668C5D8F99ECF36CCC4446EE3D3DA96DD5DA01BC2622743F9CF32D4790E3DFC3A9
-
-E = 2
-P = 1148355730975347131387674372822971414014271826139830720434999981897070232737907
-Q = 1254657073389576341606193988392457393961175021782268524267609443939027314335303
-Msg = D31A3E95F25DD795DE8A03C02A728436FE69F47177191183
-Signature = 05F7A7BF7B8A5EFA209885F0BCCF365FB6196E40A271E0000245FCFA98FF6DD5A35D7FBBB7218DC80A2AF20CA4499B8BD283B0DEEB5AF51DE283D054ECCEAA7C28
-
-E = 2
-P = 11920069466388025699244766440706927938965059002714491243177000161378000266109851115065694697794227241273343580951202247629310020256601693186944788025991843
-Q = 10777605005897273896785043775935571603158137557557200763166615929482216506057635943544427604777885488270215488764833385892798734511893248802408897989014263
-Msg = A76359F624250AFA5663B9783DE68D51369D972A89738D1C
-Signature = 26E13DBB1262A91761E6C5E6278401F7E80DB3DF947A81A8574404446D7C095883996CDA19346B0B46DBD38B9AE10ED8A4F76742C352B8DF85F8BC28F7A0BFE8EA0520A63A3B1A492E3D9F7FC492ADFB2295BE8BB6200317963AE978CFF89B300904859EF00FD7784CE630B30066D4500666B1673CD4263B49CFCB3A1D6A51A5
-
-E = 2
-P = 12545037330810088207768168723878733954756730747728115083756898577519070470389840741025833975537982084207671034725541309978724324975075329600505345504520219
-Q = 12870002110810180474990402294641834896535792812534110350536651271565094596430383644373958805954527115948325417945374873044426407582211769447386123601766879
-Msg = 2CA039854B55688740E3
-Signature = 1AF029CBEC9C692CE5096E73E4E9A52EC9A28D207A5511CCEC7681E5E3D867A4AE2E22DE4909D89196A272F1B50DE6FA3248BCA334D46E0D57171A790B6F4697E7BA7047DB79DECD47BD21995243DEBBF25915DDBC93C45875C14DE953792257C5C6825C905AFF40109C8CC7E793123D47AC1B5B6304A436CFA9BEEC8E0054E7
-
-E = 2
-P = 12545037330810088207768168723878733954756730747728115083756898577519070470389840741025833975537982084207671034725541309978724324975075329600505345504520219
-Q = 12870002110810180474990402294641834896535792812534110350536651271565094596430383644373958805954527115948325417945374873044426407582211769447386123601766879
-Msg = 2119A954F1AC0F3DCDB2
-Signature = 60C3CCF4F086B15B7F850B445F384333F7AE5A4B5EDE2820C7233239E1B86D6E4B4FCA4F50B087CE1DF17DA5D62672A17F2CF87A2875BBD9B138CAF6863821D6A4D553E9EB64C9254A8F9A6B960E57E39069D65E3F561AA1FA91643D42FEEFB9270D34AB0861DEA1E234EA587F580503D46A1989D413DAC2FFE0FC4CA663CE68
-
-E = 2
-P = 12545037330810088207768168723878733954756730747728115083756898577519070470389840741025833975537982084207671034725541309978724324975075329600505345504520219
-Q = 12870002110810180474990402294641834896535792812534110350536651271565094596430383644373958805954527115948325417945374873044426407582211769447386123601766879
-Msg = 7A4C634DE6F16315BD5F
-Signature = 308A5D65224201BED626CC83FB901EC84874EE03B2E7AB4E752EDBDE024C754E3CC9841CA062100A8843DE9183354B4E0596E8C68F1605828287884F0F9BA6968FC7A9F0CA09418A8485B90465E5D3F96CE4995A5FC7A6E5ABD9CC06BB8A2C3C8109F72EAE67FB4C108852C881CA645B3C5586F27F12FF3028ADE56E32AD9434
-
-E = 2
-P = 157704599352069859921156397442363312110769306142195838598773542758154595866567210022640109888478413022709250917899819531357360018250143692500197076580934099
-Q = 207895480306421993885928959277756332378135790107557439472247328444554879933219045837896240872517904914421631349451165104093054667050399312478738341782350039
-Msg = EF0F1D56F4E5D587C212
-Signature = 3E544FEBB6623F5D392003B729FE2BFC20E2CB3ECAC22734DFCA55150254E616A41C5E54CE3B50FBC2FE2363EE9AF9B15C70615497B0A458F8AB6D850992EEEB56D65F87EA1BD6E2B4B7E40A0F5E1635C7DDB17110C61039CF712D3524C9C2C1F35D9163BE5C70276F46634514BE16EC09602782E88FE74EAEB2F50CBB0E3B5C4A
-
-E = 2
-P = 157704599352069859921156397442363312110769306142195838598773542758154595866567210022640109888478413022709250917899819531357360018250143692500197076580934099
-Q = 207895480306421993885928959277756332378135790107557439472247328444554879933219045837896240872517904914421631349451165104093054667050399312478738341782350039
-Msg = EC5CC4228C3C70EE8F35
-Signature = 228BAA85062F10DCC9D99A23D340BC4B9E463D8AB86A6781A6D2143564303E2DC78772BF68449BE1E2711A68D5A15CF04A23573FB3870454308F583BBB5F2467069EF1395431E70F91BD56D846DC8DB2E88AB3D26A9770660B87A76D6C3575DE512BAFA8A0B901AD15B7D8E8BE2F176A182D16A9609F19A4298416245873175805
-
-E = 2
-P = 157704599352069859921156397442363312110769306142195838598773542758154595866567210022640109888478413022709250917899819531357360018250143692500197076580934099
-Q = 207895480306421993885928959277756332378135790107557439472247328444554879933219045837896240872517904914421631349451165104093054667050399312478738341782350039
-Msg = FEF5EE07C74118DA30B9
-Signature = 2637E16E2599B6EC2F4728C73D3B29F483C2B881F1E1969C426027605EF080E9B17D258D5E1EBC6472A2501E04CF19C144537FCB38A1DA00D948EBD39FA11322D9230B62E2C12AEDB366BD85A2089588A8D52E941FD986D89828A342B83438A960B6FD87E9AD025AD75A692AA9DFEA873A9467B42D84879E85C5D11EFAB347FBED
-
-E = 2
-P = 175929136695235398623978468982850882403177251171692053453163550527817444539242668478665523777116321800265560553921886249250653855011544289712550979662853142733380647502828837599849362421137735579029747170330078887639249000639490211840143752226146930789086027815718983074897826279804793994355341993150274152459
-Q = 131219248820237432230459994108611509842674503136881955113016298751051553750310448066570966264819272949229207100348941583625652701978979515213283684339178766873393297204552194591324343169883183564987140838254688839495455182007213365712028901853100685930521016622466535780176408252821208461989118980161415019487
-Msg = 15E7B7B7ED0F176B6799
-Signature = 39FF4B5FA50AE498F3C91A655E6865840D1FC401EE02DBC8460A59DEB8816E6680F712B7BAF8D4DC11A3B54BF906BE698306F0449BB43F3F223B944D930A1A3C718E8A9E2EEDEC5A07AB817C26A80CC2A2EE2846A597EAB8A999D38DB98490166F2574524038BBDF24B4E4622C843210C6B94987638C6976562EA9727385B152614C18349BD54AD95DE33D5354954B505E5259CCDA47E3CECEF3154F6E5481E536BAB568146A0BFCB66573714A7BA7ABE0385115720687F33D9C6EF6BB60272F1272CF349990E3A2FBCCE180B730792101089B164AE5A001F5263F7493AF148D6E0953E311AD12E4202D35F96DD30885663B5101F9B05675FCD2FCC4FCC4DDFF
-
-E = 2
-P = 175929136695235398623978468982850882403177251171692053453163550527817444539242668478665523777116321800265560553921886249250653855011544289712550979662853142733380647502828837599849362421137735579029747170330078887639249000639490211840143752226146930789086027815718983074897826279804793994355341993150274152459
-Q = 131219248820237432230459994108611509842674503136881955113016298751051553750310448066570966264819272949229207100348941583625652701978979515213283684339178766873393297204552194591324343169883183564987140838254688839495455182007213365712028901853100685930521016622466535780176408252821208461989118980161415019487
-Msg = B36724C92954C38D0288
-Signature = 3C8CD3614555568BBECA99174B7B203D0BC6FABE9E6FFE0C41EB4D9A2C601D2393CA1E01B7D7E99337758AC914C9F151311E5AE6708DAF1D8C825DA471652C6E13A8FE5802D7AE097BFC899A4EC8CA235B5982B9058C53AAD52823ACF692290EB8823C126635AB0BBF101C2B3149AB16183FA2DBB049DDB99C5E83723E4D4693CA3A08588AA868C677D42ABDAA6586EF192391D276C5E5AF0763ACCA6293F06250C51FDC2AD369CD44EB5F654E98761C881DDEC08E795FFB229B20522349B0714059E18B7B23A48875EAB12ED3F0A011D3A985DD7384B0046F39FA6C1A331F3D4C5125100BA58666935C68A7A10849D9C74850BAB82AE15EC950A283F3E7DAD8
diff --git a/src/tests/data/pubkey/rw_verify.vec b/src/tests/data/pubkey/rw_verify.vec
deleted file mode 100644
index 56eaeccae..000000000
--- a/src/tests/data/pubkey/rw_verify.vec
+++ /dev/null
@@ -1,45 +0,0 @@
-
-E = 2
-N = 161454656927718347546710495694108529777245911373659826842829267986614546594045217933996260902225693470782367852921548571818741091142328119451183980020737294116588677127973118579514046427857660817897020988337799668966050218796197424008138916049541798309364039036236330944419873716106449892609340592749580026501
-Msg = 2A51DF4AF88613D91A37
-Signature = 6FF18F4471E1A8F850C910A181A9F28E69AACD8E8126969605E000A853197541AF9047E5D17315BF062B9CD8DF91196F0343285D9E31D5C72560C156782B6D0E5AF8F06D7DCDD8CABEC01B2438C168C40C21F6A8794648361BD2AEE13573A49ECA07A7EED97C0B9C5B1E508869E4CFD5FE1771924B1CF5A4BFF7D4379E5CD59F
-
-E = 2
-N = 161454656927718347546710495694108529777245911373659826842829267986614546594045217933996260902225693470782367852921548571818741091142328119451183980020737294116588677127973118579514046427857660817897020988337799668966050218796197424008138916049541798309364039036236330944419873716106449892609340592749580026501
-Msg = 1CF8DDD95D780A89D7CF
-Signature = 539C266B0313E0E256ED98EEF13E6AE64CED90C160A4999B3D47CBDA5285DAB0E0678C0E079CE9B8EB23E10EDFACFC19A80EEBB8F38ED5B5D6C8A988AB8CEC40A5A5BA102F75586167EAB6D5BF0CE8FF30C656895800F6F1B37D69FBBAF9055F7505DBEB537C0F986A1B5F0270DC12A640FFCB626F9763FDCFEFA1208C104003
-
-E = 2
-N = 161454656927718347546710495694108529777245911373659826842829267986614546594045217933996260902225693470782367852921548571818741091142328119451183980020737294116588677127973118579514046427857660817897020988337799668966050218796197424008138916049541798309364039036236330944419873716106449892609340592749580026501
-Msg = F6959926E6D9D37D8BC0
-Signature = 249E1066542618CE0D236A7174708F801E7AB257931E9967A65C483ED66FB58598F99B6664AF0EAE221E2A6B271D7D17875ED02BF7FE35AA0786023858521CB79FEE0D134D9DDA609B0270FC9804BB6BF74AD90AE11EB339353533DC0D5A69E6B8758212B86024ED563767EA5D9B59655E0B8CC21244F720BA4ED663BF668E3A
-
-E = 2
-N = 32786073428830410300284398130917235885067430238109848936605383675780141752060601429462102909027763036198820309290723334169722464563078967493471762466687109286253939743688211922523861101766022434426241688525377498535565035820609539198077315872030442353465034902603192318438957229679544105479421156369538009079861
-Msg = 2C9EA313EACF2C5DA43A
-Signature = 1FEFF88814BB53E447E1E955AC8F1AF597C15C3866033E337AFBAB8627306F2EC1276621FF2176C89323CE32EA20F6AEC2CC271F1ED749408B2A3E43A23A44D6A3F38DCDDCAB696B239110AA7ECF12C6681B0E97E6FFF1B72F4F6D796BF82B9450AB8B3D28CA9D220BDF84ACCEA1DA5EDA0B470C3A82BBDD77B4C2723297608BD4
-
-E = 2
-N = 32786073428830410300284398130917235885067430238109848936605383675780141752060601429462102909027763036198820309290723334169722464563078967493471762466687109286253939743688211922523861101766022434426241688525377498535565035820609539198077315872030442353465034902603192318438957229679544105479421156369538009079861
-Msg = 0B9554FFE4F6ADAB2C76
-Signature = 095952F24D9FBEF3A93A932865F4BDBB522CF24EBE153CE4BBB24CF301A1C7B51FE47B94F8F8B211CBC5A926FF6BAF9A6BBF7E15975D2DCCB95EF01AB7E641687870B0D01FC18B6B16FE17D3FC82931FBBCD4FD18C7F9588CEE8491876D72F98F2E7EEA90C12907210D6859053ADC7178B87BF8B4826954D6986FE761E71E1B7EA
-
-E = 2
-N = 23085289162741657527840167277266509664124085355414549040512530339697658387985567689334460418487839008934878679957217276034762867535322838769309710601133720477419144651652431984020413179219099708493077666967073038701913036009744973121934238964755003870653746948359481987956885300823356903154270243367915826847703878822563963033648087127205805904895271584100346005591610792553114534696786749743262897187409362428960073234641477114369452520945902014227194038301981685731937113320369353918470275156548959860091573626887579450283427370674385898724855497767152486821298218877895649195196037107789007826511494658561893968533
-Msg = 00AA5515CDAE5CD0F0DC
-Signature = 30EECA6B48D796552F5A6A3C11F28D730FA077422CAAB34FDEB879AE0F71DF21330E2F3BE5BF3A8CA372EBCD3DFA7C81B3398C31B0972D0B857926CB39732351AACEB8276D52B9D82F9C245FA0F1CF49E785A2BC00FF27FBCF777F84D05BEF17FCC0505820B029AC8F0CE17D2469372CE47E1428BB941004FE170EF87163E07298EFFCC1BFA7E7CB1F572C340CAA075A5962A15B69CE937BC7EFB492F501FC88CBF0119C351C8498782091EF6EFB19120195E5FF51DF86F90E90FAEB225AA2EE43AB4E8358101C0348C7E3859B9DEBA19464C74B74AC48A0B73FC8D2E7F8033E86208F0792B6E5B6DE36C99DEF604949811D1671EF6B0A4781B4E7A0A72AD855
-
-E = 2
-N = 23085289162741657527840167277266509664124085355414549040512530339697658387985567689334460418487839008934878679957217276034762867535322838769309710601133720477419144651652431984020413179219099708493077666967073038701913036009744973121934238964755003870653746948359481987956885300823356903154270243367915826847703878822563963033648087127205805904895271584100346005591610792553114534696786749743262897187409362428960073234641477114369452520945902014227194038301981685731937113320369353918470275156548959860091573626887579450283427370674385898724855497767152486821298218877895649195196037107789007826511494658561893968533
-Msg = B8E2FB9EAE22FB2C0021
-Signature = 416D33F8C213CF81F805F54FC1D4E7C6A588A0965F1C9CAEEA1D41452E20935AAF2D30F957584B56621035430212A428E27A2F687CA9DBB596C19864AE692EF7BBA730F3D70CC2DDE15AB71E1E350C0C316EFA1A831ACD1441598B112482487DF72F58ED318182C7CD0906FE39C5655BF1313F29A15D60A6178CBF600C7FBFF8994840ED649C3C4026A463B3EA39C692B7D112B128BE49E1E32D4A7FF8D4513283D8DCD9CCB8FB7300BE0BDD4C44DAA2F7049B3AD83437093E623442AC69B48911CDA21E95E0775041F67F6E6AE01DCE646AEC20908E7C1B693600FE41ABA85AC0C778641E46C419083E41773C749DB3E1BD8FD764E271860D2D7F8E11BD6AB3
-
-E = 2
-N = 23085289162741657527840167277266509664124085355414549040512530339697658387985567689334460418487839008934878679957217276034762867535322838769309710601133720477419144651652431984020413179219099708493077666967073038701913036009744973121934238964755003870653746948359481987956885300823356903154270243367915826847703878822563963033648087127205805904895271584100346005591610792553114534696786749743262897187409362428960073234641477114369452520945902014227194038301981685731937113320369353918470275156548959860091573626887579450283427370674385898724855497767152486821298218877895649195196037107789007826511494658561893968533
-Msg = 8C8C306A629373BAE647
-Signature = 0E9A00045FFD399D9DA9D0D7E543CF9FFD098BC23E72DD7763A64F22C7F0479CE866E31438B8F7DE31A18F35AF419BED6C67BE1540614D3310DD24F019E14FCC3AF73743F4C143D4B79CDF35C752A300F0A8251CCFF4AAF18785C533A7DF1A20AFE6770DEBD1B8BA2C83B2E345A04F833CD173E998FF9840C2F8A370FFDCFF5FD95CBD71B25FC9972192470FD145975344F64C2F6D68CB3513F48F9FC070021BEE8F6A4282D098C44DF655CE415E89B97994AE3ABE85986C7EE0AC348EF2A4F52D102EA80836E77E81AD3678803E53C83CF2F30D2D4950FB6B038CCB3F2690A9381EB34D6C09E88C090AB05E28047DC490EB8A1282FEB38E82FB0B18309284C4
-
-E = 2
-N = 23085289162741657527840167277266509664124085355414549040512530339697658387985567689334460418487839008934878679957217276034762867535322838769309710601133720477419144651652431984020413179219099708493077666967073038701913036009744973121934238964755003870653746948359481987956885300823356903154270243367915826847703878822563963033648087127205805904895271584100346005591610792553114534696786749743262897187409362428960073234641477114369452520945902014227194038301981685731937113320369353918470275156548959860091573626887579450283427370674385898724855497767152486821298218877895649195196037107789007826511494658561893968533
-Msg = FA95400C2B14E064F76A
-Signature = 3F67F9DBEB88E6AD057BEDC3D97030555A908867EC578A6CA572137CB61C21036AADE6DDC5592EC7CCB6B263E51B4C886A51904C858040E493D64B9ACE5BAA50C4A66D04ACCDFE0039D8541C4363DEFFCF93BDF5F5CC1FB64855D956B5EFD42D4C9B96B9CBAA97A32F02AAB307674E53404E6836DB5C96B59572ADBFD1113B87608ACE6D0898CB02E35575CC28D38A9FF8C1C4AD36BAA991DEFAB533F0A6C9C2F0F0815F1D659ED576E5DB18494A54B6817D9E34A134F3B9A0F1E8C77FC204B6EE087C0445A7036C935117E338D092F6E1FF4DF7605525C409456A5195233A176B29B2FD8FB2808D0412FCA0541B2BB6800BD8BB9DC9DC25230166071E8D961E
diff --git a/src/tests/data/stream/chacha.vec b/src/tests/data/stream/chacha.vec
index f51ff0812..f7ba701ba 100644
--- a/src/tests/data/stream/chacha.vec
+++ b/src/tests/data/stream/chacha.vec
@@ -1,20 +1,20 @@
+
+#test cpuid sse2
+
[ChaCha(8)]
# Tests got from the original implementation of Daniel J. Bernstein
Key = 00000000000000000000000000000000
Nonce = 0000000000000000
-In = 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
Out = E28A5FA4A67F8C5DEFED3E6FB7303486AA8427D31419A729572D777953491120B64AB8E72B8DEB85CD6AEA7CB6089A101824BEEB08814A428AAB1FA2C816081B
Key = 0000000000000000000000000000000000000000000000000000000000000000
Nonce = 000000000000000000000002
-In = 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
Out = FD74BC4D822E344ACA041ACB39789BDA359D16B7709A7676B03B0F06117685B33B5E1E7DB844BE88ACCFC8370C808FB4BFBFDE831358476F09E34F2045AE61C0AC4120E44862548D3E5B577C695005115CFB158B9B6341BFC0561B9EAEE34D114583FB5FC901D5EA85019EAD2D4F618A5FC97954A5913576CD6BA32E710DA15A52D9A5B74B6E2F1D333C6405A5D6F64E2B1CED579A5FFBEB390A756755FED56AF37061CCC3A1D4DF6421F7A4D7811919F95A7F8533826DAB256A09E58CBFC5A04F83B063BBB169D2B05AFA6C8B3EC5880DB3346193860671AFFB3F9A5B56F771231393330816FFBD0E66F6D6B598178461CF5BE424A84A8D426DDB4B88FCB275
Key = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F
Nonce = 000102030405060708090A0B
-In = 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
Out = 2E214501D03825E75AC476151531939D6DB48E04588D91CB6CAC080F87CDF6A95C6A0245E0333A970BB8E8C373A0CA81E2592224712B8002D3AA52835DF513F5D4CCCD346E24968A9BBE43C770EF563968821B21FDF26583F51D9F3ED89EBA912B2EC460C460BE062B8AE3604569FDFD0B1312F7705E9D7A33DCBE720D69308CD89AC06C58545C47148BD68C1E61A838DD3BFB88A5ADC721DEAB8147B9EC16A77FC8466C0B791D29AC2068769D8AA54A5D15A11580FA9A375F2D0072E1FB8EF5A27EF31B7710E196B3D061C911FFA93D067364D23B1FE69EA1318202BF94C8718CB44F4383D678C493A5C5502F02A9BA861534DD2BDC9559587BFEED4A08F5C3
# Test vector in a draft "Test Vectors for the Stream Cipher ChaCha draft-strombergson-chacha-test-vectors-00" available at the following link: http://tools.ietf.org/html/draft-strombergson-chacha-test-vectors-00.
@@ -22,82 +22,66 @@ Out = 2E214501D03825E75AC476151531939D6DB48E04588D91CB6CAC080F87CDF6A95C6A0245E0
Key = 00000000000000000000000000000000
Nonce = 0000000000000000
-In = 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
Out = E28A5FA4A67F8C5DEFED3E6FB7303486AA8427D31419A729572D777953491120B64AB8E72B8DEB85CD6AEA7CB6089A101824BEEB08814A428AAB1FA2C816081B8A26AF448A1BA906368FD8C83831C18CEC8CED811A028E675B8D2BE8FCE081165CEAE9F1D1B7A975497749480569CEB83DE6A0A587D4984F19925F5D338E430D
Key = 0000000000000000000000000000000000000000000000000000000000000000
Nonce = 0000000000000000
-In = 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
Out = 3E00EF2F895F40D67F5BB8E81F09A5A12C840EC3CE9A7F3B181BE188EF711A1E984CE172B9216F419F445367456D5619314A42A3DA86B001387BFDB80E0CFE42D2AEFA0DEAA5C151BF0ADB6C01F2A5ADC0FD581259F9A2AADCF20F8FD566A26B5032EC38BBC5DA98EE0C6F568B872A65A08ABF251DEB21BB4B56E5D8821E68AA
Key = 01000000000000000000000000000000
Nonce = 0000000000000000
-In = 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
Out = 03A7669888605A0765E8357475E58673F94FC8161DA76C2A3AA2F3CAF9FE5449E0FCF38EB882656AF83D430D410927D55C972AC4C92AB9DA3713E19F761EAA147138C25C8A7CE3D5E7546746FFD2E3515CE6A4B1B2D3F380138668ED39FA92F8A1AEE36258E05FAE6F566673511765FDB59E05163D55A708C5F9BC45045124CB
Key = 0100000000000000000000000000000000000000000000000000000000000000
Nonce = 0000000000000000
-In = 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
Out = CF5EE9A0494AA9613E05D5ED725B804B12F4A465EE635ACC3A311DE8740489EA289D04F43C7518DB56EB4433E498A1238CD8464D3763DDBB9222EE3BD8FAE3C8B4355A7D93DD8867089EE643558B95754EFA2BD1A8A1E2D75BCDB32015542638291941FEB49965587C4FDFE219CF0EC132A6CD4DC067392E67982FE53278C0B4
Key = 00000000000000000000000000000000
Nonce = 0100000000000000
-In = 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
Out = 25F5BEC6683916FF44BCCD12D102E692176663F4CAC53E719509CA74B6B2EEC85DA4236FB29902012ADC8F0D86C8187D25CD1C486966930D0204C4EE88A6AB355A6C9976C7BC6E78BAF3108C5364EF42B93B35D2694D2DDF72A4FC7ECDB968FCFE16BEDB8D48102FB54F1CE3636E914C0E2DADC7CAA2AB1929733A9263325E72
Key = 0000000000000000000000000000000000000000000000000000000000000000
Nonce = 0100000000000000
-In = 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
Out = 2B8F4BB3798306CA5130D47C4F8D4ED13AA0EDCCC1BE6942090FAEECA0D7599B7FF0FE616BB25AA0153AD6FDC88B954903C22426D478B97B22B8F9B1DB00CF06470BDFFBC488A8B7C701EBF4061D75C5969186497C95367809AFA80BD843B040A79ABC6E73A91757F1DB73C8EACFA543B38F289D065AB2F3032D377B8C37FE46
Key = FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
Nonce = FFFFFFFFFFFFFFFF
-In = 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
Out = 2204D5B81CE662193E00966034F91302F14A3FB047F58B6E6EF0D721132304163E0FB640D76FF9C3B9CD99996E6E38FAD13F0E31C82244D33ABBC1B11E8BF12D9A81D78E9E56604DDFAE136921F51C9D81AE15119DB8E756DD28024493EE571D363AE4BBCD6E7D300F99D2673AEB92CCFC6E43A38DC31BACD66B28F17B22B28A
Key = FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
Nonce = FFFFFFFFFFFFFFFF
-In = 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
Out = E163BBF8C9A739D18925EE8362DAD2CDC973DF05225AFB2AA26396F2A9849A4A445E0547D31C1623C537DF4BA85C70A9884A35BCBF3DFAB077E98B0F68135F5481D4933F8B322AC0CD762C27235CE2B31534E0244A9A2F1FD5E94498D47FF108790C009CF9E1A348032A7694CB28024CD96D3498361EDB1785AF752D187AB54B
Key = 55555555555555555555555555555555
Nonce = 5555555555555555
-In = 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
Out = F0A23BC36270E18ED0691DC384374B9B2C5CB60110A03F56FA48A9FBBAD961AA6BAB4D892E96261B6F1A0919514AE56F86E066E17C71A4176AC684AF1C931996950F754E728BD061D176ECF571C62A5EA5C776697B3193D3EA94CF17D7F0A14E504859D1A67C248AB298BE3BB7EDED3A23F61B6C5BD1A5A4CFC84BFC3D295AC5
Key = 5555555555555555555555555555555555555555555555555555555555555555
Nonce = 5555555555555555
-In = 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
Out = 7CB78214E4D3465B6DC62CF7A1538C88996952B4FB72CB6105F1243CE3442E2975A59EBCD2B2A598290D7538491FE65BDBFEFD060D88798120A70D049DC2677DD48FF5A2513E497A5D54802D7484C4F1083944D8D0D14D6482CE09F7E5EBF20B29807D62C31874D02F5D3CC85381A745ECBC60525205E300A76961BFE51AC07C
Key = AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
Nonce = AAAAAAAAAAAAAAAA
-In = 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
Out = 312D95C0BC38EFF4942DB2D50BDC500A30641EF7132DB1A8AE838B3BEA3A7AB03815D7A4CC09DBF5882A3433D743ACED48136EBAB73299506855C0F5437A36C6EF5AD3D6A4F6C35D9D66C2E34005B91BBBE3099E135A00CE2F700745BE6253195824D4B19F69731B6177E624358C7977E67552F519B470E3F7A8EC965DC3BEDA
Key = AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
Nonce = AAAAAAAAAAAAAAAA
-In = 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
Out = 40F9AB86C8F9A1A0CDC05A75E5531B612D71EF7F0CF9E387DF6ED6972F0AAE21311AA581F816C90E8A99DE990B6B95AAC92450F4E112712667B804C99E9C6EDAF8D144F560C8C0EA36880D3B77874C9A9103D147F6DED386284801A4EE158E5EA4F9C093FC55FD344C33349DC5B699E21DC83B4296F92EE3ECABF3D51F95FE3F
Key = 00112233445566778899AABBCCDDEEFF
Nonce = 0F1E2D3C4B5A6978
-In = 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
Out = 29560D280B4528400A8F4B795369FB3A01105599E9F1ED58279CFC9ECE2DC5F99F1C2E52C98238F542A5C0A881D850B615D3ACD9FBDB026E9368565DA50E0D49DD5BE8EF74248B3E251D965D8FCB21E7CFE204D4007806FBEE3CE94C74BFBAD2C11C621BA048147C5CAA94D182CCFF6FD5CF44ADF96E3D68281BB49676AF87E7
Key = 00112233445566778899AABBCCDDEEFFFFEEDDCCBBAA99887766554433221100
Nonce = 0F1E2D3C4B5A6978
-In = 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
Out = DB43AD9D1E842D1272E4530E276B3F568F8859B3F7CF6D9D2C74FA53808CB5157A8EBF46AD3DCC4B6C7DADDE131784B0120E0E22F6D5F9FFA7407D4A21B695D9C5DD30BF55612FAB9BDD118920C19816470C7F5DCD42325DBBED8C57A56281C144CB0F03E81B3004624E0650A1CE5AFAF9A7CD8163F6DBD72602257DD96E471E
Key = C46EC1B18CE8A878725A37E780DFB735
Nonce = 1ADA31D5CF688221
-In = 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
Out = 6A870108859F679118F3E205E2A56A6826EF5A60A4102AC8D4770059FCB7C7BAE02F5CE004A6BFBBEA53014DD82107C0AA1C7CE11B7D78F2D50BD3602BBD25940560BB6A84289E0B38F5DD21D6EF6D7737E3EC0FB772DA2C71C2397762E5DBBBF449E3D1639CCBFA3E069C4D871ED6395B22AAF35C8DA6DE2DEC3D77880DA8E8
Key = C46EC1B18CE8A878725A37E780DFB7351F68ED2E194C79FBC6AEBEE1A667975D
Nonce = 1ADA31D5CF688221
-In = 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
Out = 838751B42D8DDD8A3D77F48825A2BA752CF4047CB308A5978EF274973BE374C96AD848065871417B08F034E681FE46A93F7D5C61D1306614D4AAF257A7CFF08B16F2FDA170CC18A4B58A2667ED962774AF792A6E7F3C77992540711A7A136D7E8A2F8D3F93816709D45A3FA5F8CE72FDE15BE7B841ACBA3A2ABD557228D9FE4F
[ChaCha(12)]
@@ -107,40 +91,33 @@ Out = 838751B42D8DDD8A3D77F48825A2BA752CF4047CB308A5978EF274973BE374C96AD8480658
Key = 80000000000000000000000000000000
Nonce = 0000000000000000
-In = 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
Out = 36CF0D56E9F7FBF287BC5460D95FBA94AA6CBF17D74E7C784DDCF7E0E882DDAE3B5A58243EF32B79A04575A8E2C2B73DC64A52AA15B9F88305A8F0CA0B5A1A25
Key = 0F62B5085BAE0154A7FA4DA0F34699EC3F92E5388BDE3184D72A7DD02376C91C
Nonce = 288FF65DC42B92F9
-In = 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
Out = 49FD8FBF19EDCF3A198F5226AA480B97D9F16BA71A693C4ECB90C276094585DFA4FA259E1EC34DE444C92879BFE7F641EEAC480168DC8969A9C033151B1E9229
[ChaCha(20)]
Key = 00000000000000000000000000000000
Nonce = 0000000000000000
-In = 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
Out = 89670952608364FD00B2F90936F031C8E756E15DBA04B8493D00429259B20F46CC04F111246B6C2CE066BE3BFB32D9AA0FDDFBC12123D4B9E44F34DCA05A103F
# From draft-agl-tls-chacha20poly1305-01
Key = 0000000000000000000000000000000000000000000000000000000000000000
Nonce = 0000000000000000
-In = 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
Out = 76B8E0ADA0F13D90405D6AE55386BD28BDD219B8A08DED1AA836EFCC8B770DC7DA41597C5157488D7724E03FB8D84A376A43B8F41518A11CC387B669
Key = 0000000000000000000000000000000000000000000000000000000000000001
Nonce = 0000000000000000
-In = 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
Out = 4540F05A9F1FB296D7736E7B208E3C96EB4FE1834688D2604F450952ED432D41BBE2A0B6EA7566D2A5D1E7E20D42AF2C53D792B1C43FEA817E9AD275
Key = 0000000000000000000000000000000000000000000000000000000000000000
Nonce = 0100000000000000
-In = 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
Out = EF3FDFD6C61578FBF5CF35BD3DD33B8009631634D21E42AC33960BD138E50D32111E4CAF237EE53CA8AD6426194A88545DDC497A0B466E7D6BBDB004
Key = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F
Nonce = 0001020304050607
-In = 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
Out = F798A189F195E66982105FFB640BB7757F579DA31602FC93EC01AC56F85AC3C134A4547B733B46413042C9440049176905D3BE59EA1C53F15916155C2BE8241A38008B9A26BC35941E2444177C8ADE6689DE95264986D95889FB60E84629C9BD9A5ACB1CC118BE563EB9B3A4A472F82E09A7E778492B562EF7130E88DFE031C79DB9D4F7C7A899151B9A475032B63FC385245FE054E3DD5A97A5F576FE064025D3CE042C566AB2C507B138DB853E3D6959660996546CC9C4A6EAFDC777C040D70EAF46F76DAD3979E5C5360C3317166A1C894C94A371876A94DF7628FE4EAAF2CCB27D5AAAE0AD7AD0F9D4B6AD3B54098746D4524D38407A6DEB
# From draft-irtf-cfrg-chacha20-poly1305-03
@@ -150,407 +127,347 @@ Nonce = 000000000000000000000002
In = 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
Out = C2C64D378CD536374AE204B9EF933FCD1A8B2288B3DFA49672AB765B54EE27C78A970E0E955C14F3A88E741B97C286F75F8FC299E8148362FA198A39531BED6D
+# Long output tests generated by DJB ref impl
+
+Key = 0000000000000000000000000000000000000000000000000000000000000000
+Nonce = 000000000000000000000000
+Out = 76B8E0ADA0F13D90405D6AE55386BD28BDD219B8A08DED1AA836EFCC8B770DC7DA41597C5157488D7724E03FB8D84A376A43B8F41518A11CC387B669B2EE65869F07E7BE5551387A98BA977C732D080DCB0F29A048E3656912C6533E32EE7AED29B721769CE64E43D57133B074D839D531ED1F28510AFB45ACE10A1F4B794D6F2D09A0E663266CE1AE7ED1081968A0758E718E997BD362C6B0C34634A9A0B35D012737681F7B5D0F281E3AFDE458BC1E73D2D313C9CF94C05FF3716240A248F21320A058D7B3566BD520DAAA3ED2BF0AC5B8B120FB852773C3639734B45C91A42DD4CB83F8840D2EEDB158131062AC3F1F2CF8FF6DCD1856E86A1E6C3167167EE5A688742B47C5ADFB59D4DF76FD1DB1E51EE03B1CA9F82ACA173EDB8B7293474EBE980F904D10C916442B4783A0E984860CB6C957B39C38ED8F51CFFAA68A4DE01025A39C504546B9DC1406A7EB28151E5150D7B204BAA719D4F091021217DB5CF1B5C84C4FA71A879610A1A695AC527C5B56774A6B8A21AAE88685868E094CF29EF4090AF7A90CC07E8817AA528763797D3C332B67CA4BC110642C2151EC47EE84CB8C42D85F10E2A8CB18C3B7335F26E8C39A12B1BCC1707177B76138732EEDAAB74DA1410FC055EA068C99E9260ACBE337CF5D3E00E5B3230FFEDB0B990787D0C70E0BFE4198EA6758DD5A61FB5FEC2DF981F31BEFE153F81D17161784DB1C8822D53CD1EE7DB532364828BDF404B040A8DCC522F3D3D99AEC4B8057EDB8500931A2C42D2F0C570847100B5754DAFC5FBDB894BBEF1A2DE1A07F8BA0C4B919301066EDBC056B7B481E7A0C46297BBB589D9DA5B675A6723E152E5E63A4CE034E9E83E58A013AF0E7352FB7908514E3B3D1040D0BB963B3954B636B5FD4BF6D0AADBAF8157D062ACB2418C176A475511B35C3F6218A5668EA5BC6F54B8782F8B340F00AC1BEBA5E62CD632A7CE7809C725608ACA5EFBF7C41F237643F06C0997207171DE867F9D697BF5EA6011ABCCE6C8CDB211394D2C02DD0FB60DB5A2C17AC3DC85878A90BED3809DBB96EAA5426FC8EAE0D2D65C42A479F088648BE2DC801D82A366FDDC0EF234263C0B6417D5F9DA41817B88D68E5E67195C5C1EE3095E821F22524B20BE41CEB590412E41DC648843FA9BFEC7A3DCF61AB0541573316D3FA8151629303FE9741562ED065DB4EBC0050EF558364AE81124A28F5C01313232FBC496DFD8A2568657B686D7214382A1A00903017DDA969878442BA5AFFF6613F553CBB233CE46D9AEE93A7876CF5E9E82912B18CADF0B34327B2E0427ECF66B7CEB7C0918DC47BDFF12A062ADF07133009CE7A5E5C917E0168306109B7CB49653A6D2CAEF005DE783A9A9BFE05381ED1348D94EC65886F9C0B619C52C5533800B16C836172B95182DBC5EEC042B89E22F11A085B739A3611CD8D836018C4FFF0B86C02ED662D2D2522647A1F09A7B2F9EEA56E7E20B1F06CCDD9CEC37E3B2D20812DF369978636C22646603675804104745D2997E28DF5D8242AAD19C8120CA4142FB6019FCCECF9FADB04ADE03B341E3FC77201B3DC957A8097AB2F615AFF142AB753811D5F32E75BC8825B456555F3D179FFABCF35F6AE61365851F3F681A2E86E8078B064976646186394CB9064767750DAD4E336B8F1D20FE2C13C6248D3D73D4D66D9C8587AC68A7976A3BBB8B5808320607400DBDB1918E3D3B90CFC38C4DDFADE990A213D208FBF7898334F4DEED7E5830FD266751315435AE19BB94F4D3DC92652F243DD1F96F3595AB473D2356D8FA8F6D64CC4F64B12CA99ECDD1962572E6ADD609D9C619AAB678B3FC298BC2F0F81FEB4F0D3EBAD7E850A8BCB52CA467E649DE2DB913BFDA001294C49DC369F7D14CC25C5FA65D4D5AF6A436D22BD2839BE23DD3C57825033FECDCE2DED6C511DBEAF4DF2B4CBB7AF8215BB48A550F57D02750E599298F512B1EC1829722FC10A5ACF9537E392A728455905D3AB4837DECE4B63FDFD5DD07A2B76A8C82566DF1A2167DAE5E125B6AA0E76B9D99CA84664F50EEEA54E449F0E587039137F57543D89205483141C933166B61990A706ACA07F467D22BC34C6552F5BBA91CB1FC21DB51D03DFFF6523A5E1B4285D54C47660EDA1B290E4087B30651B542305A714E98A8233577D2AFB383E402F6B9FD214B194C738886BD2289CC5F997951910994B0A6104092FBC9B385639343CF26C9FAF845E7A98CB1F2C9306E8200185D95DE059F83AD17C4B97F8C62CF6C347DC6EB5F2B1F4BF2DD328130D4500CA39BEBA2D4281A3D8CEB4CB1ECDE378B20029FB6A4C543312E41013915C57016E5DA681944CC277F9C7E75F4A654AB2E5DC646ADA242B6223AACC63674F9702146723360811ADBDF2BB938B595BF4C688A8A844130D9DA3F0EFE3650C2283640B342F8922FB6DD10B8BBE35C7AEBEBA416CB0180FB7D2B171149018F8D880463AC26202C2B72F9A7CF83A917AD26183F8E74CD418E3B63459F7AD59849EE43CAC6DF3BB63FCEEC1ABE8E9E0B64B233A43AAC54F9BA0998D2219B3BACA111940D524B7CF94677D6C557750FA4DB9E1077EEDB5BA6E33C104AE25443C86BF1583353ADDF6FDDD19A4FF491188E3D4878769611B36427C8F4C705CF42338475C3185C123919B79B3A4887243B924509C9A4E7A3FFF0517021E51642D9B4526C28A0CF86FB254BE7EAB18701CA5919B754EC2506ECCC087AC6141B4C3A661A3D1A89E0D4DD2DF52CAA5B3402D0026B3C643FA7126E8ED101A94188A048B34AB61E1182D6BE76E2E9E6ACF401443ED0D997DD5AE67346CB1E189791102900225E6B955CD7C9E39FC7255021045FE7ECD40E2C68486A4C2FBCDBC53E847790DAFE5B2CBDCA09BF09DE327076C79F2A339A9F942DFA372B41A390EABBBF296383D438466AE6105B5058117B8E406DCAA62A98AC624D30BC8773DE643CCE7578E8D5C57C5718711421E6D04A182F8714E192EDF3935CB2E0380E10C77AA6583832DEB64CB41DC401541504E0420D06379E4830F06125018DB3810A684C4E888B3B88829CF97EC67FC8549703F9EA5D6B8F67CE9E060F765532C323DB034EC700DB819936FBE6F749FD37CE927663F439498C98C5104D69AE9CD8B04444A471F95390873346858625420ED783203F8DB371D766586137459505525CB3EE59A7FD8AC3C1DB3F5F4E0DAB62B43D1C4CD813D998ED83637F922F884A7584835BCDC03E9F1802B449DFA2D249D9ED7F2F9129815CD8D4EC4169EC51EAC449DDFA5BC0F232D47323D4C48AB558576160103820D485877CC2BBAB641D21D94E67B32CEFB4E9CE5DAC84D03ED3228EA3CDDDD33F3915B9E21B435BBED927A539B556FFCDD4C9822FD1CE81ACCA79B6F7050B0C01A3A317F066A1A89C81E4DF8C7EE2E042203BE8C290CF8605C193471953F8FE6055AC546670A4A075F70909246C3E3B92B39CF2F35AB49FE6FDA67072A6E1B82364820477FD522A746EAC07E0398E873790486ABEBB50EC59A9E4129B7CEA87C5182EB43BCDF096EF740EF67482E98165A4EC64EBE9D57C8D8C16CEAA81F3203DFF26B3D5BF01EDC0B0458B6B47846C326C75A822FC8B42774A3B201EF941484631406CBBEAC961CCF42860EBAC578703B485844BB9E01B2D6C2DF72B62B43BADE982B0BDD0501230FC76B820D2F5BD259EC791B33225E06AFC2D996C90E756DBD4257D53EA6D6FF2371330035B57BF54C9DC4FA95D61536AAC11CDB08A664EFB55BC91A4C6F7FBE3EFA8C621FD9F2CB343898979E7BCBD55B55217143493B6DE415A85D681A2405113F3ADA3EDAEE6EB0E78572D2BAF9C43E3FC39B93081CF2FB3F8879E810F417B733927525ACB6D026F6EC46395620547D057A539A391DE7C6F4B7095911C2D3AE075AD4F2C0C96D9F70E48A42CDCDAE542BAE833EB4A976D4F98410B4A3D77857762D1527EC6714A040BAAEC3BEC41BF9CFF00E1CF81CE61E95D97792D7C0DB7A88545F10D9B0A5940457018817725DA257766906FFBC6172B9C4D2D32A14D00C0D1D01E15280074A4A9FD2D21393F078EF55B16CFEA5327993263BFFE8E99E56837B2763ABD221ED85D83F9187AF8B9E928F00DEFF423FFFDADB786E6678A59AF305CDC02546D0F8AB4681ACC1F00069B0C47BBC9F13D12FD9411F8DF532096D53E4B7861839E602FC5DFA0D0B72232DD81D2B0E4B660A7EBA353DA27E66CEAF2D6C7734925247281866A12D67752A1EDAADD1EA59E4E86E2E85A81A573CD68F6DFB526558D81A8F488F261F355DDAC23F6CAF07D27FDA71D8F3968D4CEEDA89A09DCFDD00C17FA6DB3658CC7AB02C0E5F44B1F526A7DB9269E4DCD1D11B8421C204C07A5DE46E48769579718C69532F1671E552B92EF1451FFBC7A2F412696C6D67EF071C988ACF61F39319CA02DC853247BE1F7F07B3BBD68C901EF36D46868F65D0FA1D1755EFF6C2802212908250207AB65FCE827F0A82F3140DDC692CB5742B3133C541E0FE17718B546AD1FC8CB8A3A5AF69A825A84343C378D7B54F917057A8D026D4A59931FF9E24AB95BCE2BEBDB3A4286E000A4C47E74CF82925DEA07686DD20DE228828705D90638661173E703E712D69B043DCEBAFDC53F132BE3D04CE50D70B80DD118DB00E45DFE953DB87525880BA9F7ABB0FC481A5F3ACFA363AA2153391AEF0DBF680512A0FA37A6C8293865CA95015DEDBF6A21992CE1FEB5F499359E288A3255EF3FBAEA5B01440BD787251CAF362326C7FFAD20086AA7FCF35E95BBF398DB75735E087E0863E016246703946C4E88BCA6FC21446146BD342AAE88AD4249F9A38CA3E4ED0A88AA6FD746F578E5B414CE0F2CE5EC76F87FA3B6321102EF7110B7E6D889B2B85BB11FCFD4AB2B3BD5F92B8A2F66166F0695C0B13F32F97EFAA0CDE4F28E1674BF120E03FA15980873A1C6AB674C085303FDD74832CC1DF5EF787AE11C6E6A9302C1488F36996C1703670786C05324F99D9D2CDA1624DB95B8EAB6F7E10AC5BC985D6536CF667307A577A2555888BD9302CFE704CF72E59FD28B6DAEA343A83531A10A732D65CE93F523A03E5E791EFD5AC502BB0A1F756E93208746240BC7BB1C085728CCC8150D8EA74B33AEBC59567E65B7E2BD83699F607412448D202D948BB111BADD456D68086FF9A5906EA3B2CDA4111D3638391F7A7B153EEA77AB47215D6FE13B350F59F884C6E31AC087239D9145B816424CBA2C8BCB7B3ED7E19638089D91E5C9136D2AEFC8DA165284B42229A70346296A7484648DAAFB9B88994D8823EFBCE9E029ACE51706FC1E6E194B7D8906BB83BE681A96D50F4A66F5AF24AFF5007AA2052277D75E1C6FCB719AE789587E73BFB11029B2AE9E380CD7B4FBD78F0C5318EF61802ECBFE5D91BA28184E96963366BE3D5B063B5B664002AB0682E5820E3F9D30AFD461B3046CFC86F29605458AE94054CC2967CA77F102F97BAE3454BC190726AF88CFFD5F0F05E18D31159EF2A9D9800F48D1B6719617474F1B3594315795822976613CB63A4D6996505F4A4C57F3454EC101F5303F5B84AA8236843FC51D63D8445AD5C9B4F4E15AA0395695CDE980A6D48936146C519FB84AB775647E2CF809135D10B12F7E632654C679F92988B79021746C867A8E05102BB98F8FE7D3D7C005F690D9CA7C6A175FF26ED82B873D63DF4CBEA0218BAD0CB9A8C4404526F9806E2D4FBF37E84B756561C67C3A5732966DC4F0701063EAA7D3A52A2B5E4A8C9ACDB30EE8B9F5125F76BCF7B22DB897DE9A8A9560C54118F31DCCF49E87527D188FCB8
+
+
# Test seek offset
# Tests got from the original implementation of Daniel J. Bernstein
#
Seek = 0
Key = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F
Nonce = 000102030405060708090A0B
-In = 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
Out = 103AF111C18B549D39248FB07D60C29A95D1DB88D892F7B4AF709A5FD47A9E4BD5FF9A658DD52C708BEF1F0F622B3747040FA3551300B1F293150A88620D5FED
Seek = 1
Key = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F
Nonce = 000102030405060708090A0B
-In = 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
Out = 3AF111C18B549D39248FB07D60C29A95D1DB88D892F7B4AF709A5FD47A9E4BD5FF9A658DD52C708BEF1F0F622B3747040FA3551300B1F293150A88620D5FED89
Seek = 2
Key = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F
Nonce = 000102030405060708090A0B
-In = 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
Out = F111C18B549D39248FB07D60C29A95D1DB88D892F7B4AF709A5FD47A9E4BD5FF9A658DD52C708BEF1F0F622B3747040FA3551300B1F293150A88620D5FED89FB
Seek = 3
Key = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F
Nonce = 000102030405060708090A0B
-In = 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
Out = 11C18B549D39248FB07D60C29A95D1DB88D892F7B4AF709A5FD47A9E4BD5FF9A658DD52C708BEF1F0F622B3747040FA3551300B1F293150A88620D5FED89FB08
Seek = 4
Key = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F
Nonce = 000102030405060708090A0B
-In = 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
Out = C18B549D39248FB07D60C29A95D1DB88D892F7B4AF709A5FD47A9E4BD5FF9A658DD52C708BEF1F0F622B3747040FA3551300B1F293150A88620D5FED89FB0800
Seek = 5
Key = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F
Nonce = 000102030405060708090A0B
-In = 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
Out = 8B549D39248FB07D60C29A95D1DB88D892F7B4AF709A5FD47A9E4BD5FF9A658DD52C708BEF1F0F622B3747040FA3551300B1F293150A88620D5FED89FB080029
Seek = 6
Key = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F
Nonce = 000102030405060708090A0B
-In = 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
Out = 549D39248FB07D60C29A95D1DB88D892F7B4AF709A5FD47A9E4BD5FF9A658DD52C708BEF1F0F622B3747040FA3551300B1F293150A88620D5FED89FB08002917
Seek = 7
Key = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F
Nonce = 000102030405060708090A0B
-In = 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
Out = 9D39248FB07D60C29A95D1DB88D892F7B4AF709A5FD47A9E4BD5FF9A658DD52C708BEF1F0F622B3747040FA3551300B1F293150A88620D5FED89FB08002917A5
Seek = 8
Key = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F
Nonce = 000102030405060708090A0B
-In = 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
Out = 39248FB07D60C29A95D1DB88D892F7B4AF709A5FD47A9E4BD5FF9A658DD52C708BEF1F0F622B3747040FA3551300B1F293150A88620D5FED89FB08002917A540
Seek = 9
Key = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F
Nonce = 000102030405060708090A0B
-In = 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
Out = 248FB07D60C29A95D1DB88D892F7B4AF709A5FD47A9E4BD5FF9A658DD52C708BEF1F0F622B3747040FA3551300B1F293150A88620D5FED89FB08002917A540B7
Seek = 10
Key = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F
Nonce = 000102030405060708090A0B
-In = 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
Out = 8FB07D60C29A95D1DB88D892F7B4AF709A5FD47A9E4BD5FF9A658DD52C708BEF1F0F622B3747040FA3551300B1F293150A88620D5FED89FB08002917A540B783
Seek = 11
Key = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F
Nonce = 000102030405060708090A0B
-In = 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
Out = B07D60C29A95D1DB88D892F7B4AF709A5FD47A9E4BD5FF9A658DD52C708BEF1F0F622B3747040FA3551300B1F293150A88620D5FED89FB08002917A540B7833F
Seek = 12
Key = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F
Nonce = 000102030405060708090A0B
-In = 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
Out = 7D60C29A95D1DB88D892F7B4AF709A5FD47A9E4BD5FF9A658DD52C708BEF1F0F622B3747040FA3551300B1F293150A88620D5FED89FB08002917A540B7833FF3
Seek = 13
Key = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F
Nonce = 000102030405060708090A0B
-In = 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
Out = 60C29A95D1DB88D892F7B4AF709A5FD47A9E4BD5FF9A658DD52C708BEF1F0F622B3747040FA3551300B1F293150A88620D5FED89FB08002917A540B7833FF398
Seek = 14
Key = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F
Nonce = 000102030405060708090A0B
-In = 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
Out = C29A95D1DB88D892F7B4AF709A5FD47A9E4BD5FF9A658DD52C708BEF1F0F622B3747040FA3551300B1F293150A88620D5FED89FB08002917A540B7833FF3981D
Seek = 15
Key = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F
Nonce = 000102030405060708090A0B
-In = 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
Out = 9A95D1DB88D892F7B4AF709A5FD47A9E4BD5FF9A658DD52C708BEF1F0F622B3747040FA3551300B1F293150A88620D5FED89FB08002917A540B7833FF3981D0E
Seek = 16
Key = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F
Nonce = 000102030405060708090A0B
-In = 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
Out = 95D1DB88D892F7B4AF709A5FD47A9E4BD5FF9A658DD52C708BEF1F0F622B3747040FA3551300B1F293150A88620D5FED89FB08002917A540B7833FF3981D0E63
Seek = 17
Key = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F
Nonce = 000102030405060708090A0B
-In = 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
Out = D1DB88D892F7B4AF709A5FD47A9E4BD5FF9A658DD52C708BEF1F0F622B3747040FA3551300B1F293150A88620D5FED89FB08002917A540B7833FF3981D0E63C9
Seek = 18
Key = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F
Nonce = 000102030405060708090A0B
-In = 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
Out = DB88D892F7B4AF709A5FD47A9E4BD5FF9A658DD52C708BEF1F0F622B3747040FA3551300B1F293150A88620D5FED89FB08002917A540B7833FF3981D0E63C970
Seek = 19
Key = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F
Nonce = 000102030405060708090A0B
-In = 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
Out = 88D892F7B4AF709A5FD47A9E4BD5FF9A658DD52C708BEF1F0F622B3747040FA3551300B1F293150A88620D5FED89FB08002917A540B7833FF3981D0E63C970B2
Seek = 20
Key = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F
Nonce = 000102030405060708090A0B
-In = 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
Out = D892F7B4AF709A5FD47A9E4BD5FF9A658DD52C708BEF1F0F622B3747040FA3551300B1F293150A88620D5FED89FB08002917A540B7833FF3981D0E63C970B2E7
Seek = 21
Key = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F
Nonce = 000102030405060708090A0B
-In = 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
Out = 92F7B4AF709A5FD47A9E4BD5FF9A658DD52C708BEF1F0F622B3747040FA3551300B1F293150A88620D5FED89FB08002917A540B7833FF3981D0E63C970B2E751
Seek = 22
Key = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F
Nonce = 000102030405060708090A0B
-In = 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
Out = F7B4AF709A5FD47A9E4BD5FF9A658DD52C708BEF1F0F622B3747040FA3551300B1F293150A88620D5FED89FB08002917A540B7833FF3981D0E63C970B2E75174
Seek = 23
Key = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F
Nonce = 000102030405060708090A0B
-In = 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
Out = B4AF709A5FD47A9E4BD5FF9A658DD52C708BEF1F0F622B3747040FA3551300B1F293150A88620D5FED89FB08002917A540B7833FF3981D0E63C970B2E75174AD
Seek = 24
Key = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F
Nonce = 000102030405060708090A0B
-In = 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
Out = AF709A5FD47A9E4BD5FF9A658DD52C708BEF1F0F622B3747040FA3551300B1F293150A88620D5FED89FB08002917A540B7833FF3981D0E63C970B2E75174ADB9
Seek = 25
Key = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F
Nonce = 000102030405060708090A0B
-In = 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
Out = 709A5FD47A9E4BD5FF9A658DD52C708BEF1F0F622B3747040FA3551300B1F293150A88620D5FED89FB08002917A540B7833FF3981D0E63C970B2E75174ADB9E6
Seek = 26
Key = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F
Nonce = 000102030405060708090A0B
-In = 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
Out = 9A5FD47A9E4BD5FF9A658DD52C708BEF1F0F622B3747040FA3551300B1F293150A88620D5FED89FB08002917A540B7833FF3981D0E63C970B2E75174ADB9E697
Seek = 27
Key = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F
Nonce = 000102030405060708090A0B
-In = 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
Out = 5FD47A9E4BD5FF9A658DD52C708BEF1F0F622B3747040FA3551300B1F293150A88620D5FED89FB08002917A540B7833FF3981D0E63C970B2E75174ADB9E6972F
Seek = 28
Key = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F
Nonce = 000102030405060708090A0B
-In = 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
Out = D47A9E4BD5FF9A658DD52C708BEF1F0F622B3747040FA3551300B1F293150A88620D5FED89FB08002917A540B7833FF3981D0E63C970B2E75174ADB9E6972FC5
Seek = 29
Key = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F
Nonce = 000102030405060708090A0B
-In = 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
Out = 7A9E4BD5FF9A658DD52C708BEF1F0F622B3747040FA3551300B1F293150A88620D5FED89FB08002917A540B7833FF3981D0E63C970B2E75174ADB9E6972FC575
Seek = 30
Key = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F
Nonce = 000102030405060708090A0B
-In = 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
Out = 9E4BD5FF9A658DD52C708BEF1F0F622B3747040FA3551300B1F293150A88620D5FED89FB08002917A540B7833FF3981D0E63C970B2E75174ADB9E6972FC575C0
Seek = 31
Key = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F
Nonce = 000102030405060708090A0B
-In = 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
Out = 4BD5FF9A658DD52C708BEF1F0F622B3747040FA3551300B1F293150A88620D5FED89FB08002917A540B7833FF3981D0E63C970B2E75174ADB9E6972FC575C0A6
Seek = 32
Key = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F
Nonce = 000102030405060708090A0B
-In = 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
Out = D5FF9A658DD52C708BEF1F0F622B3747040FA3551300B1F293150A88620D5FED89FB08002917A540B7833FF3981D0E63C970B2E75174ADB9E6972FC575C0A63C
Seek = 33
Key = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F
Nonce = 000102030405060708090A0B
-In = 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
Out = FF9A658DD52C708BEF1F0F622B3747040FA3551300B1F293150A88620D5FED89FB08002917A540B7833FF3981D0E63C970B2E75174ADB9E6972FC575C0A63CEC
Seek = 34
Key = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F
Nonce = 000102030405060708090A0B
-In = 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
Out = 9A658DD52C708BEF1F0F622B3747040FA3551300B1F293150A88620D5FED89FB08002917A540B7833FF3981D0E63C970B2E75174ADB9E6972FC575C0A63CEC80
Seek = 35
Key = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F
Nonce = 000102030405060708090A0B
-In = 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
Out = 658DD52C708BEF1F0F622B3747040FA3551300B1F293150A88620D5FED89FB08002917A540B7833FF3981D0E63C970B2E75174ADB9E6972FC575C0A63CEC802C
Seek = 36
Key = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F
Nonce = 000102030405060708090A0B
-In = 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
Out = 8DD52C708BEF1F0F622B3747040FA3551300B1F293150A88620D5FED89FB08002917A540B7833FF3981D0E63C970B2E75174ADB9E6972FC575C0A63CEC802CF3
Seek = 37
Key = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F
Nonce = 000102030405060708090A0B
-In = 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
Out = D52C708BEF1F0F622B3747040FA3551300B1F293150A88620D5FED89FB08002917A540B7833FF3981D0E63C970B2E75174ADB9E6972FC575C0A63CEC802CF3E6
Seek = 38
Key = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F
Nonce = 000102030405060708090A0B
-In = 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
Out = 2C708BEF1F0F622B3747040FA3551300B1F293150A88620D5FED89FB08002917A540B7833FF3981D0E63C970B2E75174ADB9E6972FC575C0A63CEC802CF3E61E
Seek = 39
Key = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F
Nonce = 000102030405060708090A0B
-In = 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
Out = 708BEF1F0F622B3747040FA3551300B1F293150A88620D5FED89FB08002917A540B7833FF3981D0E63C970B2E75174ADB9E6972FC575C0A63CEC802CF3E61EB1
Seek = 40
Key = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F
Nonce = 000102030405060708090A0B
-In = 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
Out = 8BEF1F0F622B3747040FA3551300B1F293150A88620D5FED89FB08002917A540B7833FF3981D0E63C970B2E75174ADB9E6972FC575C0A63CEC802CF3E61EB198
Seek = 41
Key = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F
Nonce = 000102030405060708090A0B
-In = 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
Out = EF1F0F622B3747040FA3551300B1F293150A88620D5FED89FB08002917A540B7833FF3981D0E63C970B2E75174ADB9E6972FC575C0A63CEC802CF3E61EB19837
Seek = 42
Key = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F
Nonce = 000102030405060708090A0B
-In = 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
Out = 1F0F622B3747040FA3551300B1F293150A88620D5FED89FB08002917A540B7833FF3981D0E63C970B2E75174ADB9E6972FC575C0A63CEC802CF3E61EB1983732
Seek = 43
Key = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F
Nonce = 000102030405060708090A0B
-In = 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
Out = 0F622B3747040FA3551300B1F293150A88620D5FED89FB08002917A540B7833FF3981D0E63C970B2E75174ADB9E6972FC575C0A63CEC802CF3E61EB198373276
Seek = 44
Key = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F
Nonce = 000102030405060708090A0B
-In = 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
Out = 622B3747040FA3551300B1F293150A88620D5FED89FB08002917A540B7833FF3981D0E63C970B2E75174ADB9E6972FC575C0A63CEC802CF3E61EB198373276D8
Seek = 45
Key = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F
Nonce = 000102030405060708090A0B
-In = 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
Out = 2B3747040FA3551300B1F293150A88620D5FED89FB08002917A540B7833FF3981D0E63C970B2E75174ADB9E6972FC575C0A63CEC802CF3E61EB198373276D865
Seek = 46
Key = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F
Nonce = 000102030405060708090A0B
-In = 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
Out = 3747040FA3551300B1F293150A88620D5FED89FB08002917A540B7833FF3981D0E63C970B2E75174ADB9E6972FC575C0A63CEC802CF3E61EB198373276D86594
Seek = 47
Key = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F
Nonce = 000102030405060708090A0B
-In = 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
Out = 47040FA3551300B1F293150A88620D5FED89FB08002917A540B7833FF3981D0E63C970B2E75174ADB9E6972FC575C0A63CEC802CF3E61EB198373276D865948F
Seek = 48
Key = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F
Nonce = 000102030405060708090A0B
-In = 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
Out = 040FA3551300B1F293150A88620D5FED89FB08002917A540B7833FF3981D0E63C970B2E75174ADB9E6972FC575C0A63CEC802CF3E61EB198373276D865948F23
Seek = 49
Key = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F
Nonce = 000102030405060708090A0B
-In = 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
Out = 0FA3551300B1F293150A88620D5FED89FB08002917A540B7833FF3981D0E63C970B2E75174ADB9E6972FC575C0A63CEC802CF3E61EB198373276D865948F237E
Seek = 50
Key = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F
Nonce = 000102030405060708090A0B
-In = 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
Out = A3551300B1F293150A88620D5FED89FB08002917A540B7833FF3981D0E63C970B2E75174ADB9E6972FC575C0A63CEC802CF3E61EB198373276D865948F237E84
Seek = 51
Key = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F
Nonce = 000102030405060708090A0B
-In = 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
Out = 551300B1F293150A88620D5FED89FB08002917A540B7833FF3981D0E63C970B2E75174ADB9E6972FC575C0A63CEC802CF3E61EB198373276D865948F237E84A9
Seek = 52
Key = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F
Nonce = 000102030405060708090A0B
-In = 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
Out = 1300B1F293150A88620D5FED89FB08002917A540B7833FF3981D0E63C970B2E75174ADB9E6972FC575C0A63CEC802CF3E61EB198373276D865948F237E84A974
Seek = 53
Key = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F
Nonce = 000102030405060708090A0B
-In = 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
Out = 00B1F293150A88620D5FED89FB08002917A540B7833FF3981D0E63C970B2E75174ADB9E6972FC575C0A63CEC802CF3E61EB198373276D865948F237E84A974FD
Seek = 54
Key = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F
Nonce = 000102030405060708090A0B
-In = 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
Out = B1F293150A88620D5FED89FB08002917A540B7833FF3981D0E63C970B2E75174ADB9E6972FC575C0A63CEC802CF3E61EB198373276D865948F237E84A974FD28
Seek = 55
Key = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F
Nonce = 000102030405060708090A0B
-In = 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
Out = F293150A88620D5FED89FB08002917A540B7833FF3981D0E63C970B2E75174ADB9E6972FC575C0A63CEC802CF3E61EB198373276D865948F237E84A974FD28B8
Seek = 56
Key = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F
Nonce = 000102030405060708090A0B
-In = 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
Out = 93150A88620D5FED89FB08002917A540B7833FF3981D0E63C970B2E75174ADB9E6972FC575C0A63CEC802CF3E61EB198373276D865948F237E84A974FD28B89B
Seek = 57
Key = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F
Nonce = 000102030405060708090A0B
-In = 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
Out = 150A88620D5FED89FB08002917A540B7833FF3981D0E63C970B2E75174ADB9E6972FC575C0A63CEC802CF3E61EB198373276D865948F237E84A974FD28B89B12
Seek = 58
Key = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F
Nonce = 000102030405060708090A0B
-In = 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
Out = 0A88620D5FED89FB08002917A540B7833FF3981D0E63C970B2E75174ADB9E6972FC575C0A63CEC802CF3E61EB198373276D865948F237E84A974FD28B89B12B8
Seek = 59
Key = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F
Nonce = 000102030405060708090A0B
-In = 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
Out = 88620D5FED89FB08002917A540B7833FF3981D0E63C970B2E75174ADB9E6972FC575C0A63CEC802CF3E61EB198373276D865948F237E84A974FD28B89B12B8D9
Seek = 60
Key = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F
Nonce = 000102030405060708090A0B
-In = 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
Out = 620D5FED89FB08002917A540B7833FF3981D0E63C970B2E75174ADB9E6972FC575C0A63CEC802CF3E61EB198373276D865948F237E84A974FD28B89B12B8D907
Seek = 61
Key = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F
Nonce = 000102030405060708090A0B
-In = 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
Out = 0D5FED89FB08002917A540B7833FF3981D0E63C970B2E75174ADB9E6972FC575C0A63CEC802CF3E61EB198373276D865948F237E84A974FD28B89B12B8D90790
Seek = 62
Key = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F
Nonce = 000102030405060708090A0B
-In = 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
Out = 5FED89FB08002917A540B7833FF3981D0E63C970B2E75174ADB9E6972FC575C0A63CEC802CF3E61EB198373276D865948F237E84A974FD28B89B12B8D907904F
Seek = 63
Key = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F
Nonce = 000102030405060708090A0B
-In = 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
Out = ED89FB08002917A540B7833FF3981D0E63C970B2E75174ADB9E6972FC575C0A63CEC802CF3E61EB198373276D865948F237E84A974FD28B89B12B8D907904F9E
Seek = 64
Key = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F
Nonce = 000102030405060708090A0B
-In = 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
Out = 89FB08002917A540B7833FF3981D0E63C970B2E75174ADB9E6972FC575C0A63CEC802CF3E61EB198373276D865948F237E84A974FD28B89B12B8D907904F9ED6
Seek = 65
Key = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F
Nonce = 000102030405060708090A0B
-In = 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
Out = FB08002917A540B7833FF3981D0E63C970B2E75174ADB9E6972FC575C0A63CEC802CF3E61EB198373276D865948F237E84A974FD28B89B12B8D907904F9ED679
Seek = 4294967232
Key = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F
Nonce = 000102030405060708090A0B
-In = 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
Out = DBF81BB406517BE1A54F4740E5DDDF2B7965747B757FA9D5B7EDD6B27FEDDB89D5D47F9B24E57DF393017A5079F61852CD8B86859884120AF867D25D3B259E2B
diff --git a/src/tests/data/stream/ctr.vec b/src/tests/data/stream/ctr.vec
index ae97030b3..ee1246fd8 100644
--- a/src/tests/data/stream/ctr.vec
+++ b/src/tests/data/stream/ctr.vec
@@ -2041,292 +2041,6 @@ Nonce = D43BE1D1871642996713B6400DA4B0A7
In = E71039961AC14FCF7212ACA932E1C6307696CF7D98A96048D888CACE6B95A32A268EF802CD311EDAA92D96019938D7F6D1E12C70306A1A893341F610D387248F00A113BE0BA43CE254B0958EE5DDCF10BDE3223EFF0BB7FB71C833A7A3AE52F78E00B7A294A23B76868A53B74737E23B93A7B89F6890791CBA7657715B9DA9BD
Out = E411BA4401573E11E51D6D7E318D6DDCF23E5927CA429DCA57C419BBC391CAC9EAE01A2384F4705EAC94B06F151638BC7299DD8FF570404363430E9B06FFAABEC5E1384485E7A085AAF6E2692742F7E9003B18A4B9FD5D772EB0A326655F38F39B2D49035C484AE4B4F12B14A7BC74A1F0ED2BEC9906E45C22C085C04679DB62
-[CTR-BE(TEA)]
-Key = F580309FD46FC90ABA15E05AD82078A4
-Nonce = AF4D336BEB213C0F
-In = 0779B5A4D94C4B572257340F8F86FBDC5AE955DB72E588CB3D8298FE27ADC668
-Out = 6D787EAE01A5D7946C8526B75BAAF2A8D1F13CE4AF93E469A21B7C53965A1CE1
-
-Key = C86E8F484AEB12370C20A3A0EE5590BC
-Nonce = 13DCCD64DDBC8E41
-In = 6DC828712ECC5C470541DF1602B85F4007CF93FC070CC7762D7956B7BB549B6372DBC08B
-Out = 09DAE7B36CB22B70FD79C64244E6E45987B5F7EFC8CB0B8E3CA9F43764807BE1027B7BB9
-
-Key = 4C55B486E92B56E40276A86483AEE6B9
-Nonce = 3967D01A6CA67F89
-In = 5B65BD1306636A3AD2E0022E02E85269F20F76F45B136EFDF4C899F8C9656129B4CA80462AE80783
-Out = E89A69E8F2D8150C05B56F2A4A944857B645B16280612F58FB89B08EE8A20EBE11C862D39A1A59A1
-
-Key = 2803FC9BAF7D0373B2D479046AAAEDD9
-Nonce = B91B7AD2875C1EE4
-In = 311BD2A8AA6E97C4E84A3C322A53181D72A6C189C7B1FE6DB283BE9EC3193EA91521C1CEDE7304F0DE4995EF
-Out = 10C9482E1BC5FC5F3E0204D721A9840ED5921483104A783D46B376E9B74BCAD25C5C4632F523CA72CC6733F6
-
-Key = B45B330DC5589E6AFFE1A11C09C4DC30
-Nonce = 04F4F13187E04998
-In = 55243E865867E2281B3DBF43521D984804AD038D8A4D113DD1E118358EF1366AA82854D87DEC5C8051C9915F685F55AF
-Out = 02BEBB951E42063A106A0797227CD7CD037BDF9FCF2DB5405645B1CE17C0D6C36A3611097B9D74599AA5614E90BA6046
-
-Key = 9344248E661DDF45BCB9B6E529B39431
-Nonce = 3444DD3711244051
-In = 37B0677F9DDBD8DB1496F75439862C17100C2BC735087B9A0970DA487DFEB9520B2C5B22EC089777A710FC7C5EF5B7AD83199993
-Out = E8DF3BF04F4EB8209BA30532885CB16F4DC4CFCC9DAA5D195A8F92BCD9B41ADE5B7EAB7B1BCEFED039E3A3F8810C2B34A3E3AB24
-
-Key = 215C4753906EE909902B163EF367BEE5
-Nonce = A9C40171E5946170
-In = DB572CD1DDEBF0C06AE910471B108064A73851F460F3F79A303E463230162B99452DBC0B0BE88A17765D4E317B04BAC5693A5B2E5A1AFFE8
-Out = 19D1415407B422F155D1E8EF9C99F2C77F68B39516D4CCD3AD020A4B01A64244FC0E3012A19FEDACCDD64D948372A2D8FD2F7B7BBDBA8CD6
-
-Key = 63689A7EA77EE56313EDCD9092EE74A6
-Nonce = 4FC29C5D1A03780E
-In = 98E56143F834948EC76D2D3651787E8B6D1959FBAA1E4A8A8917091E626D3A7FCAE23E59726A9B7E6808CD6245ADAD71EC52EE49F8B6983AF90165DD
-Out = A2F29D9B387237DE529BBF8FA26704D4246C68F0C71FB986A735BEFEB239DF8220B3EE66F0C8BD4B764BD4C8DA951BF3F0589315F5AE3E7F172F3F17
-
-Key = F6DB0F1401BF9E04BC31F0E5AAE3B6AA
-Nonce = FF0415F250ACEF92
-In = 05796CA4B977B4D81B3F898ADB404805F6418425C6FA44C77ED6CF8B3A5C6A4D4692A3E8A1D0AA88429C73DC0931BEE46EBDF759E16C975D8528EBE66092C686
-Out = B8AB041041D2E9E48909A193956F9CA68D6ADADA5C2EB9A6F6795BDB751E704B2F9F3E6B5531F2A2449C7C710367B4BF7F0EB293FEAC04D3C387B5C3D4F1F2FE
-
-Key = CC5B8B7E1D9877A5845D9F2C4070061F
-Nonce = EF786B15E7F3F602
-In = 5456E7301B77AF7E4E571D7A542B4DA79A6C3E198E29B973DD482CE44EDAD6C8BA2A7C6C044B9187C0920BF626E55E844C8746F8FA3748DA84A49D2393AB68294304CEA2
-Out = 86927873D7469420C6E817A1A9382FC03BA4DFECEEC08400E3B0995F1C695D2599B3612DDE5017E0B2422F233C86859CBA4A038D2F9E1DD886720ED63365A9184B1EDAAB
-
-Key = 899D47EFFEEB386DE8342FE3A3242FEA
-Nonce = CE412E40677E5BF0
-In = E7CE6B54133D74C1D1F6370AA96F6993354E1BA145221B91B689B5A759F808D7861A7384BAD3A192FDA08A36E9287B20188DF4131BC2D47457FCD3705C0D510A565A6E7D8EF7B22A
-Out = 3F1DA63F3BC4BF2691FD10D71CDFEF4FEB29F9E3C918C432AA7A7BC8F804E693B0A25F2F935F9F9A8009959A118884E626F23FBA1C624CF719951940690C890AA05E8C87E55E3098
-
-Key = 08C7C0A9B04684B49554E83499D2F277
-Nonce = 7D16029BCE205DD1
-In = F2369B2BEEB9FB44CA09D59D3C9A22E107E960CA7588066E9B95EE6926DAD5E91ADC13206AFEFDBE39DB95BDD77655C132FB108F4721EDF687CEE1258CF5C43D60F8EC31D5A26B022B925EB2
-Out = EABC0FE834E386A647EBCACC5FE48308E475C5DBB7D18F404A83F50FC2F93CE75E4591C0334479B0A9920CC3D9389CFDA9E2D532B1C491B0F1F3057C797AEDBAE51CCEDF72023556D98868B2
-
-Key = 9D923AB332BA365F20DA39217C7D1650
-Nonce = 49B9FB1F976B6EC7
-In = 2A101F89BCCEE248AAAF5EB65D9AA97240B9644FFA73305AEE2498A085262573D23783BC442D6C296F126017403421AA5AC8E4AEE44E020DA81BF52DF9D0652E42F2768F1428C43DD25E63E2B2FD7344
-Out = E70DC7AC1E4A4E1461F6DC51F64B0C236F3BE15D5AAFFECFC1D094A4D69063E14EB4059CD14481A26FF7DBC6BA07059856C2C764338B07E1C961FA56275AA450929BF62399B423629565E3E7C1DEB293
-
-Key = 7BD5159E4DD63ECF90DDA801DD608104
-Nonce = 7A60E38CEE806006
-In = 375D52ADA62453CC4F83B43BEC349E85119D9233ACBA7328F3009041FBB9E83DB788B79EE543D93859404A91D0166397908BE510D0FCB58F0033D3884A0AAFF9348E4E3825E3D4F0E8B7D592C7ACFCBA11C2D9F7
-Out = 27F658DDDD613482AADFD44E832C372665EC2001697602A274D84BF3C2C76A5626D84C8A80306E31FD8748256FBA279732AFD0CEA0102EB103511CAB71458F881841A3D49A43D450558DAE85159310F67DB2B747
-
-Key = F0DCB57019B3CEA07D6F8B81F8A974C6
-Nonce = FBDD2704EA4830CD
-In = F81D39C6A1A977FBEDADE7F2A1C516FEFED8621E0C3FE4CC01DDFC4035EFB3F2DFD468EB8899C9368A4DD48327EBBE739E6A68B063BCD5C03A896B47C1DA723A5AF8DA8629964D4373F38F297DA5FC11597E0F0AAC6A328F
-Out = 84DD988BEACF8442FB917A80408164008BFED0C6B66A05E5EF5F46CBF5C126108F3986F7336E5BCECB7F4645FEEE00F20511C52A750029CA31D869340170F30933E92A0DCF703EAE3A7F15AA004D84358F76C4D3965E67C2
-
-Key = 92BEEED6E43A5D7A6F6211C85229D86A
-Nonce = 6B0FFBA1B3FAB3D1
-In = 44176AC9FA9B8502B675B559FFC21164366F73BAD09982114F21D2CBDAA15F88651EDE4BBE5B644EC78B375ED58DB3A4D814A6DF7563F282E8FEC7C9965668039AB4988F6E87DC9413AB3367500C6AC1ED5968E5B31F44F176B02F7E
-Out = DE0DC6FBA50CA8E81E265781993875746F2C30BC80F682F085C644C162AED09718D09B5BFFA421F8B26FEF78F222D55C5CFC71048F805393377AFBE94775057B432D712CE65B62B2E48A2F973D3882D10BA56AA3DFECD37DBCDD2D57
-
-Key = 2A70897594FA8D00C8792ADCEB16BAFC
-Nonce = 530C2B6E298FFD38
-In = 1788E3C83C04ECE0D95D27BEAE329CB99D5E84FC3EF4A45575C630C8B946365467386261CAFF1FB8C615C840E6EC28FB0A42C633B373F5AC79C32FF90F4883E0DFABF01963C7868170CEA96A30B4DA4BFC1107E31AB53D63A9543373E505C779
-Out = BC545A4E753BF6BB554B13DE4CD53644AA7235F2593BB0B69B11EFD66B3CEC201790271C83138945C5A7347635F788CA0883CECB6BB4B53610A64E384F769F6591D962620B660CAC0A587FE9212B5A247001B5439D62E144F91608CE39756FAE
-
-Key = 85EDC49CF905E1EE9A8205C3709E1304
-Nonce = 82E743E483BEC9F2
-In = 4C8E284F44D41B80818BDB68A8D57BD63F267BC0888CDA54AA48386E32C561BF8E3B370BCF9615A74659846F476DD0FA6CDEA8FF11FFD3FE7D5BA8590CCC66D419E9D96ED3CEE7A46CF559345FFE61AAFAE1ADC3868E6C9734AE56B41E35B6D8A2316E4C
-Out = FD08FED590AA383CE472B91572CF6E2244A897AE7116F0821DCE23223AC1DDC28207EB5DDDACA086188DC78FE5ABAE43D3FC4F0F259C521EC38B8DC0BDAAE7F80B7B27DB75B00E35E8A88380FA5205B002961BC6F1A4E81BDE84F7A3079F10F8CE644588
-
-Key = F207A0C6B1A66ED1D50D256693DACDDC
-Nonce = 6171F470E638F864
-In = F33FE0DF117BA01A850C2DEB6EF8CD86CB65433ECBB079FD69831A06096DDBFFFFB1EA23F18EB4B4F397F51A5662462D8DC8DA6BE49F9DA578A90E12C8CA33F4579BBA602EC4F4422D93C5FA8E8EC2C9640C0D3A0F0201A5F3D57DA94A163C25E185F5F4089F68BC
-Out = 17297C6EAB5EF458AAA16A1F0D7A1EE3496CAABBC623F2127307EAA81A78A756E4373F391DA290357927B703EE1F0623A3FF7101CB78C3525C059BFAC4A3DF3588021953445A521E415AE2576948B323F08E3CE108989BE73EEF7F00FF01C1C587B312E5D80C0D6B
-
-Key = 358CAE6A62C661EB1B365BB5C37CB744
-Nonce = 4F8E99D3BB7E3057
-In = 59170FF4B0A175B7EF8BC2B2E0AB81AF6C994FEAACDE9D255606A1DC476E89980A0927632819B55DE0892DD43F0D7CBE5C4279E6251BF5296FA03C8A2F0260339BCE64DE16155F3197792C2379F11D102A2F7825A97A03D6A62C85C3A1C5BDAA18E4BC25F6C0BA43595D194D
-Out = 64EDCCBCA6BC3C6880DFC6BBD62DA90084AD8CEC2A704A7FFBEA8751F467BFBB5DADEB43039C6F17FFF1EE87844C7EFA72A2EDF1EAA332CC4F281E5E813672C7A7AF4F85FCCBCB1B0AE11F869382015D7DCD676BD4B482D175A5AE61730C5A29DFE7B14F7549A7DA12579667
-
-Key = 4ED8501303B4D3F924D5C7C4097E57C0
-Nonce = 2B3A19E6E2EB6CA9
-In = 8FDA3A1460325CF70E0DED926596E870382B6B4D99FE89E86CDB6DC1B25C82C5816DD622980FFBD4148AD82196865644B90A6B282DE1B92A99CD2AE0E804FB330F95724CA5B45A2FC57B0926AB998EDCBB63E61E8673FAB199C2BC83998B7F43E8307B57222C4D76CBC606B6B4AE8D1B
-Out = 55E3B003AC093190C81300E08533A11C4C96D30E3DF4E030DFBB1D2BE741A8F30188398DAB8198972D85B44948AF438D6BBD9F47CB1307389F456F35238B1901F03D8FAB0669B66BF7DC10619D5DB72AFA4990F52FEF4F96576542B55251B83E7EADFD984DE5554909C8975865B78A61
-
-Key = C8378142EA256625CDF42F9EF7DCB2BE
-Nonce = 7E12641A0C703137
-In = 3599E1DB61A7B8E74620BE5965CB0E160A69767048BE47083BDE3FB650D0BAC5532976F25530580B7EA047A346F5E8D413B07CA19928444ABC3A94CC52C7DCFFA3CE402F395CC1827B13DA3B33E4658041E2F7393D90C27D928EAF9731A5054F289F736429D6644FE790644058309B8607587B9D
-Out = 6AFCA1CE267A3A90C6CF0179699DCB96BE1C42F0E7985C2D4D8D725C5FBFD9F6996DFB59C0A5BBD09A58418E1151C1BD847B44D58384837E9594E445CFD87F8E324A0BB938838AABD0A496DDA178C927810E674ED0E36D257EA79743261F555B0E04E1524460DED8C288D71B330F5AB0A13A6FBA
-
-Key = DCBF96AF1456108A9B9227ED94CE806B
-Nonce = 05C03EFCE65A8210
-In = 7B902233AF687EB4D0B8711FAACBCD2446038DE3F41FA72805BFBE69E00DC9AC5936C8481539C1E97DABB61CFFE9D492D758F8D8DDFF7AE764DB8D4D946CB3207123A1F95F7DF76CF0BD8B276004C9D685C93D123B407A78BC8342FAE45D91B5DCEB7EE5A2EAB15CFA38F4FB3586C45E7279DEF3A5376CB8
-Out = 5554A20E71F2C86C77A13DCDB065D01EEA0880BD648F3C17937623934C7EFC77B37733F2D1E96BEDAC273954C3F8301A749D14CF74AE76A9CDBFE559AD9643BA818080E1D8FAC761B45B48D0E19F51657115E8ACFD6E81211D890EABF55E06946CB90599005B535A6D274E221F7A697B92BCA34D1F09FAA7
-
-Key = 2B4B352CF67C87C3397A3CFD44E6758E
-Nonce = C5ACF3B41053377D
-In = A226BAC3B9FAB88446697ABF579D5332EE60985E2EA7065AFC56FF26C16CD4B944C7BF3DC3CEF4BD9AE3000F17CB304B649D3A30776EDFA7D067D439A5990F2B7BE3FA5A6447D22FBAA0683E7ED683707C30557557E2291574A76C68F32BFBA14E2CDE9E1FABD5034FFA38EBA9A18BA405412D3CAC48D0A6F8B5033E
-Out = B22F813952B9667C95028571AD9F8731A41617A9192671573DAFEEC9821B1A82296C8BCF6DFDFE16D31F2AEDD69E9B18E8B34BFEF7D08FE47466AC0299F8E08922E515307E284BCE85E70C7BBD4F7783653BCCE054BB82A14EE89EEFDF53C772273442576D37F90D5E2E14C70769F2F3ACEFF8CF1E71281D4172BF65
-
-Key = 81BF9C41D2404B0A468380F8CEBD5996
-Nonce = 2EC2328185E51927
-In = C85A0F50724680DF59E0AC198F7412AEE6734C05E53F6957BDC33A89E40DDCFAA4F1E211C1E3390EFE49F299478DCD9026CC2E3B49F35E893ABDF851C39F76ABCDF9B5E3E4FA2B520966A4E1AEB36E8EBD1BF5DDFFF64C9935E89B75DF0D78D1B54D9FA6F8A87A8A4721591570B47E091B016A381A3E76B3AE92EA014EB03905
-Out = 13C3BEE2154D3C4A9109B1F3E0D1D21CF47FDC283A7ECEDF2338FADC4F893896A8EF03D998EBB98FB732FDD1B11061ED6FFCE2613DE72AA898931F4B5471BF1B96D35FA4676292755C1B77AD5AB0345C6B3E8FF05F7EFACC393762A075D36E88CC5EE1AC3709DA398E21F452CE9F255D93BDF03AD42444C2ABBE0211C38F9F84
-
-Key = 5A6F131AD458C1E9B3C004109CC78E7A
-Nonce = FF6CC874B337996C
-In = EA03F0920CDB09256BB8D2DCBBF5E0F9C14FBF0449BAC0AD02BBC6F3C5646FD13F2995B0B6E37B8BEFC5E85DEEEA696E4DA351DB87D694AD896EEC2F810538CEDAF434931E6A69A019A2C73C3309FE7FF028D7A8D387CEFF33A63C4FA3669B41EF3DD8D7A0A923B4AF8307E9072C32020B42D4CA2F6933486762E8E3286582FEE0F1636D
-Out = 847772497AD58F8AD957CE4B2D83D16C8F6F0E7A693DED94B7D1D11832078CBBB9783AAB878CC9AAD7CD731E74D314DE0B9E9B9F65A279C05ED1382D26882F8BFBF06192E587CBBBEB2167B96DFB3269B4BAC805288365849EA703E56FAC7F13805AE140E894B8E684642E73BAAC18E7F0EE1637FC17C42789525AF0DA8D10DFFD7BFA53
-
-Key = B0221D669075C7DA04EA353F6712C7FE
-Nonce = 386BC7C0AA935689
-In = 4A90541507A87188EB104184D464D1A04B622CD3C706B5A800B57BEEFE5AFCA5215686267D2BB696F64F4311D33A83C553022C482EC939A77D6F2961D668625E214AA9081056643ACCB0FB9C67892D20B674E5AE2036214C41D162C7B44E453F87659943088A8468BC12735741B2F3E7F3DDED053B73377E9E9CE47EBE52A4FD503245CDCEFA4919
-Out = D3489D41497715E8CA4B828E86A03903AE435C170FC4DC149D599832EA64ED7917F30E4591151B08E46986FD94C2983AF9713AF602DBECBA6B9F9692AF43E53A3A04AD8B8E33E846B95C8CDE80AA03D46C923137938937FD7A285CF322D23405F2FFB8C836B2CBA663C4967BFE61DB36860B6B741826BA4F22E5393879AB76330545BE2B62389491
-
-Key = 5771D7A711C92CBB93CB776D54083382
-Nonce = 7FC654F95497E5AB
-In = 8C52A4AFC465477D059AA22CE8CE343FF273987F10B249B1A19B6F95A69B0C82F122B22DD4FC9AD3DA4AEDCA876DBEE1AF12101B5CF065EF20E2EFA1B50349659F77DA6928BB5108BD9226424CA31C7ADF49C4F738F013AA5A55380ADD25E840A60A5113B08506D71B702A4525DF234AA0BC459222879DE4EF24B305F6B6E7D5702E3EE7320D5C1FAEE2AC70
-Out = B054E0553AE9BE63A3315509949DC984F145DD24B152E6FB15D712067AAFF77733F7AA8ECC4D60E47E4CC1305BBEDD7D572ACEBEC9FA31F3E701E2DD5885C1C39B371B6582D14AE32D31BC04976E3805EE3BBA6C727A82C8009C1AE39F866C6C5C4333498B32337E435EDD700A48BDC28A7918B8DE08E02A6CD3BA196C7236379C12AA86FFFD0DAC3D7390AB
-
-Key = CDE4F850BA8D7F1C9114149084656B49
-Nonce = A6250EFEB105609D
-In = 18AEB9393D3A19E52A9F83E7E419C40E533CD2547C186038B315787C3F9616CE14A5A022C2718D35CF6B54227C4E496E1552D392CC060B87E843313705797996CC5E73BF43141BFC11452B209BE877D7ECE2A7A4D4C02745179B90D5E6A205ACD8BB01405632D1813E31938A37F43165A1F1C5AC87A1ABD8A69AE655D4FD70DB124FD3420D700726705224533C9F6713
-Out = 51E70E5CFD39FDB62418893CDC05469738E3E144E4915064F2ABB82F0DF1D1147AC59EC001A5EEBC6763AEA4748825814E4CB5A90B271007EB8FDFBB867A9911E9DAAABA4D692B1AD9AE2465210037A18E64A742D831AF8AB925B696DC0D18F45B80C0F6A46A07E3322E26AADE193F64BC2BD998F819C440CD47781A4DC21B831476145093319BF8FF4C00FC9E33DB25
-
-Key = 44738E1E4B7A442D209F2661FBDA824F
-Nonce = 6CEBF2964385D443
-In = 9DEB4E27C4592FD5DB48D3DD21DE22342C3F6F1533F288D8BBF3FA65E67A66854479737C03F2FA5C40E0001FD84D9EA4604594CF571F03BBFC06668D12DF9EE61CCC0385B45329243D5A5D06C19791389E89FB54A6B85D005B64C08EEAE5FFD7DC1C9F1DB87B5C55D06FFCEB1C9BDC3F78E5CBD67E06AE24500546B17A756F9A1639DF24AA77CC53B6893A31D87435E33B1045C2
-Out = 44C52C48BC865C5FFBFD05C2B27C4D2B69F373CF704A2E91FB2CB0D429B957A6EB3089D79182311777705987FCB9D8539BB2CCCFA1FFC8D49EBE6820D01F10597315E46985F4B4A2160FD97BDE4E5F5C7C7441E06E089540788121B761340DCC2BA676670432C0B0C712D6DC3B565B25AC5C31177A50499F716522CB5ED67E9EC63C73E6FC6BC68B0C5C7B4102D4F59E79439CF0
-
-Key = 7D8DA95A23D6B81028BB069A712AFE2A
-Nonce = 278E3C3D1962967D
-In = 15DCFFF177841397C5B02A1586B9EC69250F7C397DAA9C0C2B172234B18072B894ECEDB76F839878EBD358AD6AB62D387456AAE59D865969E9398326B140B1B16867847F0BB30FEF787EFD2E7F61ADBBC9CF13A519DBA56907787269D5FEB735F88A4C6A313DEA440C4FE07FC374E01C83D65CA5A26631C745F35875BD58890A066F82F4A46846937792C9E893C87856AABD0DEBC110AD4E
-Out = C8065C6F95C74F52907EF0E1409608E15C1D9C97980891B93AC41A6100080658C4F84FF770F0BF240B653B60A91796AE3996C449447E6E1E19FD7C48B8A6C6481C2B5F59262C895A57B4C65E0549DEF9603FBECFEFE9AFA60A26A417D5523B7E47E5C04F07323A88A447803F40CC46D57ED5ECF43D6F1A1BF48F03D0D56D7594B83BBE856A476E9A49ED457A1FC763140EE67FE5F77D0769
-
-Key = D798EFF93075E16619C04C27B44B7710
-Nonce = 81D4628D9577608D
-In = 47743B5282C40BC1D37C6842C7DAFE01D49FEEC11D27D212DB0FBD852712416CD392ACF41E1A5CAD44B82032FDAE4E94BB5F94ED0ECF20EAF9C68B49F9F0D0D3A49A377C1821013044070654606CBC11E69959DFF4E975868399C4BD3A3CDA32ACAAC037A8AF3155F8D20AA2B76285C6EEDB5AF9E31865BE1A86E5615F8E0CDA4F0DAA44DD3EEB1360C262429038E8C9D43054EEA4C67E9C26504FDE
-Out = F7081D26253675F37E0E644CF5FD2E2DF27B760A57A2C9753B2BCDBAEE6EE70DFD83680CB1B4166DCE85F48E52943A3A7E83969F4D674226323C12FB306F5BEE80B96A8BF99BC4979753465E587E9FBB43BAD2003C8DA5F99CE06B6D198D024E7E41576539CA2176DE8C78EB4926CFA264C108A153724F49E38B2215641BF885FDB366FE4975A6AE5B5C9DE89EEBE3F36406F0169F09FEDC9D582656
-
-Key = 831246376C66B8468E7A6E6E897878A9
-Nonce = 9955251D87DE0D7B
-In = 440DFA2B6F45BA97928C07323E7639678ED1B247376F8B51BD5107BC66538ACAE5D9F6924B9060AC5CC37D360F951D81CC2680213B48BC1FB392235D9E74076BBB1A7277E4B4CC6DA3D8B011A31B92EA82DDEC54E3A982988E9823F343E6638A6C8A8B4F9FA1020A81B7B707776BB4991B5C7DBCC9BB9D041154122FAE8F6690675826AA20C251B29EE5647B160041C5DEEC1B90BA21207B39FD0A657527D480
-Out = 6253441E82759549F5791B82541649A09600395E37DA34BBC9B075E084C1C027D3A533D31187C4F0F3FC26A2DACA5F10461953F3F2D8A0C152A367C0E2B99DB3831FB9691C8152902954A26C0D14AB3B8B7B5DA82450FDC4B37D6904F8835326D35ABA9431F003E867AC26F9170DDA423837F657E908493CFC06944B359A42D1761DB68A6A61D9EF03DA83DBD0B4F69F020FDB560C687377021C09977BC8208F
-
-Key = 59C571414163AC80C5856A8E8EA9A524
-Nonce = 9A6C05BA3212D92F
-In = D2F7A97B171A9C774D0DF23173044F51282364ED0F373E86EA57C6AA726F313FBF49DA8BF30411F4D85BB62CA06C577396C0CD74D8F43DDA49EC5AACF46D9D3C20F68FC8E36FE6BEE147040811CF9C6EE80F3B011494C828B6822DD83F635C1AE32A115FAB35E5A7186942C3D5E3A25FB2A2D18D877994DC2F2066DFE5873889978DBC5E6686F24A9D4F69AB8F7B9F19FB723D39982D2C22A68E0D526B35C3782518E721
-Out = 4B48E6C50D37471DB4D311A3303722020E874C6A578E4CFDDE95C44507906ABC4FBA603F0494AD42CE4A660BF4CA06BC7FA1084DE0315DB0C85081D8A06CB823DC876930F948D594020092F3AEB703F95DF7BC94DEE275572BF9D6D6A6FC51AEBF7579F0CD49369A8047D46AB9E47B8D90C4EE61A24536F638987E4D343E2D66DEA1FD670CA98AC284DEA1FC28ED522AB1F5AD0581357300799413CBE6A78C9571B134C2
-
-Key = B69C5FBC4525445638D618F669F82347
-Nonce = 346955985318F429
-In = 0DFE5D7CDEF8C0EFA80C66136189518199FAC9A459DF9FA5369D4F1AE4E3938DCF790F65939A4D8E27CEEB7F7BFA098607DF2C300D61B00E4821B3A52150F5C38A9B12983E0232E305419FCF9D01628CB18D22C88E69091EFC8ED328317894145BD9C7488EBC4C7DAEB5DC9CADC240CF47B1A0A6D720A8EBABB78A2BA0193F2C1485C77DDC47258A8B9E34A4F4066C6FCA22E44AEAADC6FDD6C398EFECC6014662286D3BFB339D2C
-Out = 248E8FED5CED6F9FE5BF2F5FE9D668757A222AD0525861FDF8DC86BD52C75AAB502F3ACEEDF16448107C65CEC8C462C50D9918C7CE84CD7C1F17BC16625D4D9CBA7A335E8DDF31CDF86EB9A2CAB4E6D46136F05DB0FC7E9811CFFE1DFED75A1394860731187B3F4D053BE3FEA79693327F6ED98C40277D747D8601447D5F02401C0AF31DE0816310F81F83683E405AA64CC47953CD922ECDE6ABA6AF4378BE5691B78FB0C2918187
-
-Key = 14388CE990670FBE1D821E677B829621
-Nonce = E13F97C3B492F94E
-In = 4A25E4F0F608CB42CE5E8EC7B48A822918236B42D074D0D7C8D1209E4F68E4DDC9F90B254BF967FAE9058DE032C1084A1BD9645B7647774FDE927DDF1776D5F829CA436C9E8F5D6B4689B592E7EE0ED9F88C12D1C6F30165406BCB2177859523855BE160E7CB477EC73AE50C66F827563B4173EDEEB4AA6DB82B3AFFD9E719BB0701AC3DF37AAE2992348F33BE426B85151D7581F1553A0E99C339BC407CBBCD3EC9D603D3F9E7110CEC5A50
-Out = 89A0DDA3BA5012B8D10F97F1546BB16AD2123FB97A8DE83EDFD42222EF62A07920C93B8B3A123F5CE5EAFE1F9645975DDBBF031AFA61166C90E2A5677A07590B483CF6FA9D1597CEFF8734A3D9554AC4C946A4551EF8698CCCEC3AE7142595D3130AB2712719595A6A14385653DB4B52FA784D75869926237F43C8077732A4DEE1C66220226815E0E77F868C68AF4268BDD89ABD6DCCBE42CD2CD16617467E188D200517FDE85989BFF9A751
-
-Key = 8E0E06D39EA04A2ED224FAB12F875169
-Nonce = 4687DD18DF082821
-In = E0592FD880C54A90F4A3FC3F1057712CEBDED7CFCBDC017C9ADDFB9714C044F1A5AA11E9300F9DE1C15F8368B5DAD6DDB87BE1B6B2D3A32EE21DDE6C1098D2B84787E12366B8734B37130D010A91A76CB6CB153EEE3AB7736A2D6EA3F6FC6072870F5EF351FEE32777CDA4B7936A1062CFA69CB94405E1624E2D56FA06CFF4D31616B20FEECC2D2CEE58C81E3DD0EB563EA825C87914C1F38FB9AC35C04812041F2D81A32A9C8546ABA9BD5AB6E71942
-Out = 003770A75B796934A5C6C8362381B47E9DD791DD860AADBF9F71D4F76D648D210EA1F16F513FE403B0FC39EB84354F585756E95E9C114679A1FF6F90A98434110CB1EF5FE540280A6A82C56855E3A0C83FEA2815C4BDCC22308DF7769A22033F6B2C91ABA1F6BA83D03CA7882EA584E2C2183A1E74A75F1E934E3E0ABFFEE26515528704B669802FD6CDE0811B98BDE7120BE82828E0E67837EBEE0DFC30FECFDFD5B4D5A251571DDD8A42E46583CAF0
-
-Key = 282452A3EDEC7BA6850A6DBB481F18F0
-Nonce = AC2FC317AE3C2DE7
-In = 01A8E66CFBC585451DDC5BE634C7C80DA329D3DF16239DE9EDE1B6EA4EC912B5106999EB348DF1009AFD0ECB16FF5A7EE023BC8C4963D52FBD8BBBA5D99B0512D772608746FBBF36A362761CDFD5DBA5A0AE5100D0FE1AF4EFF576CB1370A4B403DF7B06E22DFC37B1E1AB6E1152E0DED0F1B5867CE72F924EB3D5A122EAD315C7EF570DB199DAF3042937205CA05E22C101527F9B9187DBA80461DF3A0855CE0D32A80255DB81327849901FF16061A52BFF8410
-Out = 0FA83C7A283B563AD3A1D91FD96E5033EE3BD79C786E6398504D2B152E8174BB1F743D2B5F209A7792E89D24B0E91F9A8B19FFB2AF659F0826C743E85F469E31BAFC645EF27DF183CD7AE419ED8D83AD229D9CAC3C67E8C6F3B722215D24793B3AF04283A17DE3B36E34BD48309B2C8DFC5A4B55C0DAFB7EF0E40355485B89C381E9227A7080C2353D05E2E97F58EA41A72E3DABA27753D44EACF8B9C03F21FBBD96D5DE4D36EF0EE7F8E554E1B468126F5F3AC8
-
-Key = A36BEA2CD9E5D98B4B63A2EED52F8C1B
-Nonce = C2BCD83BF070721C
-In = 525585F116281D04FD8C06E92EFC21C91E936913C1247CEE67727653974C09F768F31F07ED1F3FDBD6A21194846E9C7E96E94728D640639C77B299102A8D7F6CB35904B00DB8455F1AF65B05DE83ADB6F2759BDFF79CBEE13FC46669771CBA432E6F777FD5D9C879C5B891BBABB568BB541CFC1A8E567D718DAF292697370206F4B69541F9F44DCE287FF966B62431BEA035BEB6C13573E32233A9ED5C50A0D71457FD8B99390FF345D22AD61B23DCD0A0464B95310097A2
-Out = CD13EC2531031AFD1B215EDCE6B60C6F1E9E8FB13D83B9DC28EE9F586C3C82AB7FB3359B6C2354703093C883C489AC1AA24D21255E2BDE7BECC0F77B55E23090B18129701553A908ABF324C917EFF7CAB5B12D6FD4CCD0928748A223DB90F66B48D79333968EF22502A5EA9CCCF588FF9FE70AC2DB669C2A56905EBEA7AF56BCF42031F3866C77E1D62A793F39827458AB46132868CFB8D72216BD41327B8473F24F68FEF8D0F46F339D533949B609FC2723D953C5F2BC6C
-
-Key = 52874F3F111082522E9EF5ADED117EDA
-Nonce = 2455286EA57BEB7E
-In = 47A0196C08AE929B236B36A04B7441FA40E69EACAF3F087F160709AF390C5769E1452EA41F4325EEED011D33B82454C7B6CDF6775E0809BE8068772E66EC81CC0319A7D27BBB50C2B7D0DCAA8040FAC70BF3947B6E57127422E979242ED79608566A4CE9C8E0EF3589249996601013B4A32D3784403D52F6E0467FFFBED8AC31E2C200F169AF68ECEDAE791AD6D4E518624D9BFF90116F154686DA7342B071E9A9435FC4AE2F42536FC93D98D6DA6697AEBEB47C94451522116467E3
-Out = A14B00431D6BB8042C402005AF87709D098F6366527099B8044FEA9C173323FFBE5F53C3013DECC92616652FC26B8E46E0FE4116F3A44D8C2E5F08B0D2B0EFA3B42CDD4809D2B8BEDC6940DDA928B58D7ABC1A7E753AD1DE54273C87FB18E77D58C4AA1867C7B01A6F8C291C3EEC5DDCE8CD3722749F3DA01C9DCB4E7B62F220697B5EB47538FF8FFD78E4CE949A0265E8346D2ABB62F5537789236072548D8588FFF3D8DABB7AA51634CE7051E824EB4BF7415A2DE90CCC264E2917
-
-Key = 1CCD49253B736228C454B8331631042C
-Nonce = 43666BD9D4555CB5
-In = D32975CF8583D36F57C092295D8FBA7C44722ED0F385C102EF12E5BDBAE80037C5FF0725E6B950EEC1413E628EA8088B9ADDF2CEA379235CD62FC01762AF3BE11DC766A17FC10F85BAD826E94147DB78EF4E0974D4566900D87643370A8C88F42471C2479B7686FE97332D3F014809711124619D13644E5C95FD083212F580F9FA3E2CCDDC0DC33D782C1D103093B9CD54E4A3113B6C75A7822ED24D9A422D719B26C21F4FE73D74012E81D9FF58F13BF1B681C29A94068A47FF18B9610DDF80
-Out = C8D6A2E21C15290F42BACC559380F1ECB797306B7B59EE22E452F971D049D24FC7C21BE4DA40A91BC91A2FE47E35CDA7C6A63BA7F0F38D038002093FB5E83CF52D197B9DBD0160EE6CD4BC690E0BAD9379352400453E85424E2583B9FB7502F2918C60E0976722395BD8FADA4C1726B249E4E8BBEAB59AEA3EB8B0D833FDD9A934D43542404633299FCF6163A43278202CCAF90CEE44FF094FEEAAA88EB085606A50E96C447234CD2F4A6602C18F71522D58BCD802DD3B97D5247F61AF099FB1
-
-Key = A9AB5A6AD1CFC14030B05F52CC27D166
-Nonce = 81F7271353D4D8FC
-In = BD15B15611F5D38034351F16A47A50C53F9952D35B0C888663EE6164F5F228584F25536D8EFC04FC9BB0CB228857440875E320CE25534AFED42F830F7BE88AAED5D91C128EFD7067A30088B1A3AB3C00FCC3C658262230AE7541DB9ABD0E1288EC7B2091050FF3935575FD32D7CFAC6D599655307F530304FBE4E16E647AFAA0EDFA51F4CD075182F2B6D1E8B2F15211CD52A996430CB634B099965A37B442B1E1B8104AE9DA9978412F53FD9FB1F24E5AD0A2D7BADA6011C87593392A629E1E916CF28D
-Out = BA61E2BFF557EFD75AA4E9DCBDC95E3D02C4870AC3604E5DB01C38C5E489254CF4B4D062FEFBB3CCB044B488909AF465ED13785E5034DC62F65DA7E7CD0B53E625D9090123E8DD548E377C4B9AB085A4AC083A2EF1815F115C08CD8AFB8B814C17B2DB422AF48EB71566F8D7246C2001795FA20AFA9DC6F76519CBF7378267A1262B87A98E6773E61FF3211A5994E2D3FE2E06AB52BA830CADA7EFD02A36A66F2D4C559CCEE4769C0339E56EF3946E736B048A39F41C0FAE0C7650B3486DA5A2349624E1
-
-Key = E3D2CAB6F748F35DD4E72335A0241476
-Nonce = D97CFD5DEE5CAA6E
-In = 2AFE5901D507A488E8729205EABCB8158347BE7FCB6C4FBC5F20EB471F00AEF1FCD46892E679EA9838E22882B80B1D68258D24392C219F9106EA1175D54F5AA495B6B3E0E60CE6EB6E1E892F2CED18DFC18D62012A4328923FAD58CC04EC70F832E3E1B8B2F1327414C5EF9A57DDA4D40C63289A5346520B7CF4909B41A8190B668EB9E5BE78F55155945936DB2C20E4C184BD2D3F6DF976168373A1E465E89B0C2ED18E750643932EF45DB0661ABB74088AA2163C06A19E917D7B6F513FD1DB784534D624EE5575
-Out = 4DDCA5CC4014C19993D857ED57876B384E8E06523066A86A4A4EE4EC597CCD3F1619D4C5124C088B1E89E969335BDEF659CD3E2DBB2FE26079EF7F5352991D26B89CB324234E2608A77BA1B66BB194D4CBAE3DFD6B80359ACCB81C3E69CE2BD30BF991930AA22FF0A2D02A0F460951DC829FFD8F095CB245AD84A152BC59DF1925B0F1BCA25FC2355AD25B25D821B22DC0AB2749AB7EC0442AE798674D8E11A87257AAA2767894914056C8287B139751DA5CB49E8DBACE28E2D9DE52C508089F8DCA82C7386619B4
-
-Key = 801D788845FC6152E33E6A2CB42A2A22
-Nonce = 5F5FC8B7D6B6C3A5
-In = 4541B90A451368513D4A09BCBE2CD48155E512FDF240E76795905DAC75CA9BE0264E5A7F924C4706925C7CD35392FF441031EECDF0D9EFCE0E6135E3F4C1CAE57286552C4AA4D4074C9F7C922B53D0F4CAAF6914F81123EABF9B012AB45C9AB989AD979A197D7094AF9A0EBEF2DA9AD8E32E5FF16E14475F0694A79346231E532660E0176224F21676E304A32405775A937E26FD3C9AF3A4DA27F2FC131717805CBACFB554AD1ED56036C18456B5C8211F2CB2E9E34AA5706E439D1FD5DF049FD63CF2490B74998AEEF3D63A
-Out = 37BE67361D55FDF19B8AD1A39BA3DD47210DA5B83614B00A72120BA2D9E5CD65890C58D81A3060A39A4E8CDABE0D2862419BDAEC7695B87E2894FA5A5B05E0E1D1E6B35D5369CE741BFE4EC755DE0BCAFCC1FC160A6260561AF899A735817258BA86062AC698CD50913E0043AFA85640C52BD8F1B979011EC8A20A5A0C52BD73552B2E1DF1481C62F2BC74E8150943FF4E888D944B253D0CC82848DFDC709792A2FD987EC564FA6D47AC98C3B271CC0A6ED3FA4EDD159715AB1972E45D51926E42E88C309A95494AF55C9E7C
-
-Key = 540E936A8F7DFA7E1069D1ECB6DA529F
-Nonce = 7DD8BE5EED8A3B91
-In = 9550E29D3D0E9483B8746D24A72396DD16DD31F7538548C6090950908C51E4AA9250B1713685E1A7337A1D917D197B72EE8A0969D58CAD94C73A9B24A63620BE8152013669BA44DAA9652C99787B338FF96C6FC00ABD13561045A1C25214695C990360F505D83E9FF3FB3711535164E06FFEA4A0050A09D7134FF72A98C67F3BD73BF90E2CCAC943DB049A788E7B62E92C9178E433255A5644DC67B17CBC87AF2AA145B3E4B657F31D28B9282B0E6B343C8759C51457D48EB5880CF255B2058A30388D306D896AAD42EDB05158223FBB
-Out = 22473327F8358F22AAC1473C942B78067FEA10319F52A6969A889AB87A09FB2A21878B308627C0FAB3C1358C5C30F198FD5EC27B9FFF78F4C4BB97ED9804443C18C01470CAC1D73095E8B9E2CE4E6766EB4DBE31DB528CAA80B01AE979A3FB32F056F54B93704DE4E45D0EC19FC8E571294C279CE3C1DAB74DE63C741EDC1AA7C60A8DC1EEDEB738FD415F22F9E42A2219A1BE56404E8921D95DB53F7B2873908C9A7E09A7B80EB40968319CAD1FEF85D31B916C2F0810CFCEAC1E77976D0DD2105F71E9625209ABB16E7CCD3171AF38
-
-Key = C3CCC1F40F2234124E8E44BE4D230D51
-Nonce = 7BB01E9C965EEAB0
-In = ED1ED1768831FE993379B5EA6091A5CECECAA6A1E4218F13755A75CE982B5901191B3F6FEFAC14A3D68190F66D759389A4B72FC1965516E16412E1DAFAD962A23420E3D108738D6BF1B7D8FD2B6DDDBD590E88EFE3353664085D1BFB7B8E2FF4169ADA322530724388BA378464B2DF93893FF936274E53916490A4917CBA6997BDCBB9A84ED1E7543B89B64AB70F8CF93713FF08A5E8EF164E33A6C85205173E9D2E3B0D31E565CBFEDE77FBDE48CF47E742F56BA466AA124B725840B56A69F2F46543C31C5DB8E926A7FD968B94606B77CF9820
-Out = 6F5F24233FCF42897405065C047A15EDB1BD4AC5824498D186E76D44A01636E3BFA6FD96B0FF5112FECC0F7D5E754505AF90F25F91FC121E5729D77E569744FA7095BE9C15216DA353AAF508D7A0BE30C64549A1D2F092FA65DF3C29144030A0B3407DF0C80D29A82CAFCB3AFC106FDD282E3E3792D034262EEC388134F0A0ED182D29AD8EE98FFC3FC18256DAB7D2374A31F293F88812AE33758A35521093334BD204CD2F01BCA1F914B9C1FEC402AD226102ED6C77459CE4D20EBC89CFDAF01334AE4DCC07D48ABAC694B86A90A5DF236BCF06
-
-Key = A8E311DC7544747FA09537683A4979FA
-Nonce = F010A1D16F896398
-In = A9CA7C9133827D9AF63A9A2D98F12E96708714F3DBA3F887C044EE50BF508A4759124EE3748CFF9E3F47976EFEF9E9E91DB6ADF75F2702C277D87E7EF2DECBC60E861FEAF695E93DF183AFC6548AB8F5BFF6C12A25E62C81196F3AD2392FC77326DD521D374F54865532157C75F1B77AA93EB2178F6117AF2AF8ABEAD69C2F4B3FCD3F0BCF24CA460FB596E47C4AC6D2873A96C90788A425400D8CF579733E553B9C38E538F2B1C762D6201EFC132E92ABB6912130F22547BAA1E44FF487D1C4B2B06B3A4768A1220716C44657F679E1F200164046325346
-Out = 1F1B86628E58A2F6220B26B25DC7723D22B02F2E5E011672C354C6D1CBF272100F066893EE1A9E353E841AC24D0AEF62BBB5480ED978C84BD5B052F1424D6238641C9F11E5787D3B94CD7D866FEA1D2DBACB58DE1B6A0582B6C103926953B3203C94CC8B87F0630E77650E851449A3BEDE5B2C1678A5F17F920234238C0C57C51181E5D1E7B1082EA9D4781F825574B93B69FFB03BE688210B74B0A6338370340C90442709591671D19FED7D44795B97409119B4CAD30C84B296C7CD76C3C3B8ADB8B273A35AE34EF402D4B22458EEBB1992C7A32919D2C5
-
-Key = 6CEA1E32C1732B9AAF2F9A85A9022895
-Nonce = FCF3906F4227113E
-In = CEF68DB7976679BD69BC5819CDBEA5749593FC2754D2B0860A87A3B16A680E9B634C7A23EEB7ECACDBFCA2FBF26AD3AFDBF29E98230B43D410F27777010F09ABF76C69E0864BA2C37ED9BE1C0E812154E570509F0C8F07C45A52E5FBB3DF015FD54BE20D8DEE69FFDE644EFA4DD93E7C8A7582DC19B5E1C69FBF190E43C7EAFA92C67083DAFB3890C25324E3590479D6BAE27E8E90B6F28EC39BFD46A73CE92F17609B596CD2BE34700E37E423CC9B9160304198D917357347E414627D7BD9D36ABB5BA07BEA6C9302F73F370D2DA6393F3CF310B65BBD45374EC60D
-Out = C8848BBA822123ACEF694A77E942F57FF02BCDAF6E6540FEF7A075B890A8CF32B9372A9553B501526455EFF2B764B5C3E8C3BB08085074B4EA0FDE7D4CE94BF284603423068E8FB5E9252C73DE7DB341AB624D1C44E79ECBC22874A73743004B99BD6316BD7C92415C1F2A54675FC2D26B0EAEF760B329A1BC24D140BA8F28000649F1FF43F586E2899FE63C133A67FBC542C87A4369539D8254DED0EF157425B379CF6F10BB0DDB7937441E3C091602C76424AD5E856550CEA7FECB24D54333C437251122C72E4D21DF23371B01D05E32FE1907F198F18BDBF68351
-
-Key = 808372C49B7BBBF65386566C6973A76F
-Nonce = 805EC1D405B86CED
-In = A7A87EEF419C8600662C5CBA01DA56DF0CE6977991502A27F5FEDAF68AC26AA89FADBD1563ECF3810643174D9A2B6E940E65ECD0FC120281BF9F52C0AF2F768924111941FF1D8424788E75CAF63FE7389ED1C736504F99BF1590C5B970DBD7E0D13C283209435EDE2360146F4F734A06F1ED649324985857FD3CD80C82E896C368E44B52C35C958D5CDB1DE800BA7343412CD66274A97037667767FB7C7E4B95C261106FF3D34A209B998C38F2639F74631D1BCEBA04A436D8DDE90C2A1A38CB44EFA7AC782BD5EAD9F3A5FAC879AA63F6FEA44FF967D70992533375BF94C2EE
-Out = 2F7335F36D102EABA78F04185805AB6F88BEFAF2ADC84DD6DE9629E34A00D934FF017D7EC8195B8B7D380FAB765646FCEAACAC912EFCF6E522052531D04255964ADC147ED533AE5D5917ED43F7E21BA784B121DEEB879B41B2D00C8A18FF075CD810F8C5DE84B8E3A137E9D1911BAEAB91402AD0461E58A58F45AC901B0B741C63A78C13C82B4709B14F7DB1B38962067F5A08DE2FA8BCD91CD6BF3FC17950693D0DFAC9CB1680E68D9C9823AC12B1F37E4B6C1663F5BBE7D8DAF7961C3D7B37C34FD2CB02918785E8B7B6777704AA4F11CD974EABCCD6784504A583C56CFDA7
-
-Key = 299F9BF1E1B34A0D39E6D49B67DF754D
-Nonce = A4C997CF160DCAF7
-In = 4F25B31BA0783DD6842D607CEE8FCACF6ECD2D5D6D885A230874782F2441ED47DAEF2138E6EC20333CFF9671E008481F80986EB91A46C08C9D22D2B6335F8E6BD10144324726FD7EA311573B1A03E6E6262B89D145B01BFEEF14D7904E0C53966747316842DEF71AD1144CE3B8C08C16980A2EBABE9A5501C89CF0B6F610808112123A56FE7F726639A20EDF2C531D8BDD30D9F4032C9C3F9C165634A898442C3EDDB0D8A63A855CE44E650E428B60C536918BE045A902B0346F232545B27A0C5EB15F79BBD1190552A68EE7C1D29D04DF1C70A7CA254A6CD47BCCECE1082A20F35E7E46
-Out = AAA603EC1AAF270AAFC06A43317B6FEB2398633A9D1C130F2C67B6C19E9C391C9396914ABD907B1419551202E6228FC7E06FB78FF669A2597AEA85DD4A372FDA60ED0E3C30E872E2AF2A250DBC6972CBBE00A5F1B5BCB7353175B5D528E32CB035460E12C8A3DAF3D1D4B25D0CE9CA5AE3F8250548EF24AF92F4346A0C5716619A640100922AAE13C7824341A938E14FE9D51AD691932421669D958C252DBAAF943C5AAF64C89AC8B381602D3AD0937D8B8ED4132803C2C9F40838CF1A2064D269A9CA2266DBB642852DEA101E4E6CCB40C377F17D195FED673F030484DA66428B3C7D03
-
-Key = CCDDD91BCCA1490EF312ABF7D7EB545B
-Nonce = B091FE75641EF510
-In = 3B0CA636F9F507E2D9CFDF06B3D69B44A3647FC9D6C824C3C1FF9F31162E7A40394D95589123310056EF2B668F59B93EA71CA45434D104A91878A6DD3C4349D374E39B7A4635FA0F0841824D02BC92EA6EFDEC08BF8566CCA111E478C569A96B9F7A2306A2CD5464EC4EB0FD642E91A01EFC0CBBD08EB28B34D99989BC3D55DBB5BF32FC8C0CFBC3E5B89DF3B01EC4EC8FF3553DA1714004AC52A2F14EA090B3DBFACA8A7664053DE14A905339D2952964DD501B638EADC396DC05814203C4568D5469D7E3FADE0302C14BED2FEEBBEE5A78ACD17D0D44259D4A47BEA7C4935967125BC0F0E228A2
-Out = 253D1DC003D0BA2B60422354551E3684951A5B77C142061BF86EB95DCAA1FA06E2E047F8DD94D3080BA6345E2F72478110899AB51D5BCBC6E16E564C407AC37A08F34108FD9EBFAE560FB59A6A37DDDE8F014EB525AE9F5F63046C263721E72B6E94151A129A3BD446D9AC21602FE0D150251754B4334462A99B7C5792B901E03AF71FAB991AAC8B9A75C29B2FAF35178946735608DF583B27C80661A53FAA4AA581B5AAB2F7F034707C9B812C9A22FEBBBD21E1BD4821C4E45E3A072F8301435E238C7489B23646CDF37800C9D40CE69BF17ADE4992F733F71C2273B37D1F17B68D15FE61163E84
-
-Key = 80EB0BB542D844F4768820077D8B81C6
-Nonce = E6936F2688231B9B
-In = 74CF8F2B03009D38E874C23AC4A01855EC591D2014AC96C5F6C4D0BBA42C8C3764A3554B9D5D44D9FFC259E266DD0A2649B5D299139F2ECDC1CF7E286C183F74051B150674E9407EC8A6E151E174EE66012DA6E2303AAF3AE7F677C17BDFD546589F52756CC02ED3BF4483D1B4BF49FFEA82F0A9111BCA3C2B5DE08FF67E5BEA7D2E74564D686D554DD9C31C291ACCDF76A0AE0ECDBB17A427D4223BB53592EE37E398707CCDD0AA70F815AC3EF6585F35A5E1ACD44C511CCB79CD85B5D1CFF534B0CC7F89C41CB4BBD351D8FBA99EC6717A98BCABDEB16D242F4DE41CF5BEBA4BFFFFBE600386FE55CE9F0F
-Out = 2747D5D76CC1A15D8D410C081DFA56049B7421A90B01EBCDBE9E31B70C61A58E0D2D5985596520528D6C0F64063C3F2386F4ACF2FFF68CBFB8A7C78B97A573FADA6AB69EC728CE77666C89250F9942F80FA653CE60ED9B65949D491A38953C688821A1C4B39F88A72AD5F4544D002456990F1C4F3CE293BDC8DD68BF8E13818A05454565D9B87AA9F4FC906E4AC61A523C1C65EE7467B498B5A06AF633A37B5287854365DF96A2675A3A454A25A345BC1F9A0375E091C6BC55054E2FCA011B1E3BA1C964A3470DFCAE1A937F1286031FB8435FD7487768DA018E69AD3029A1C6EF4EAFC302EACDCE8A02CC23
-
-Key = 89D3696A74D8D4A751C1219C3D742DA8
-Nonce = BCA7BD8D3A8B2682
-In = 44F6EF40CB3EEDE73D0BCDEF4009F48EFE4045B1422ACDA5111D1BAAD4827B33B37911FCBB51A9AF5E6E4D675A968F119DE1A64075DC4670B92FB83AD3B44796522B0D8187EDFF982D38C7E8EB63AD3B838FF50662685D4106BB1E0424B5631ECF069D988C446CD2E97CEFE1A2C3194681873266F5E02C7018715A3DA9CD927FAECB6B8AE6366998141ACF652B49353A8D6B9A6238C331138CDC90659BCADCE15CED1615B96D050250E5196F88F5601F6B53822645825C88580AC543DF13FB4403BD895000A2CAAD12DDEB584D70A0CBB8C029573F5A530F9E5BE2359E6011DDD4FC25E32397CACDE24178D0E0AB186E
-Out = 3AFAABBA1BA4E009171471B45D465F449D2F0DFE600893F2D60F9BD653B092C7CA980C4ABA1F15C08028835A341C5E59423AF6BA5E6F5B3C34E69CB2CAAB42EE3DF6B1FA10F2A611FB4871AF01815135426D60EB540D13B9058F154D6643FDB28542A079DA0549E9C62BFB6DCF3F6FD40175C86B2CAF712E42538F3B6C5C57024D36AEE3FC93B5E70CACD49776302E51CE84B4075BDA7B37FCD1968A6F561F625B1D32F3652D8A7BEEC11A11CD8737A9C9F87D1A4CCC3F24D201BC8C1CE24589313CB0387C3911C924A572237705774C89840DB93D5BEAC47F75E04A10839355A775A02FD417FCC2A0BD104E81E3CA40
-
-Key = F544BFEBA760D22BBF72BABC88528618
-Nonce = 869958C2FDFA5C52
-In = 950F2F4CD525EEC6CB634DEE121B847F35D083523526D9E20E329C263EB892E5FF2ED907B354B057101C73C094476768A225268BCAE04C564EEE9EC9D855E478E192A9FC22F12D440803BC49C5F20683DA0CBB09CF704E4938AD0620A4C40CDA769EA03C236B0DAAAD30B43284486A8D2619E94BD1B79F01B3AD9E70874BD6B929BAB1121FBD585CA2C0D25B799AA4877FDF222097CF0B8CE95593D0CDDACC418FB1734ACC19D365B410DCB94C3E64B11B5E1C61DB6B4BF2E291FE653E2EAA266C3CE7FA16857001FB6C2259BE0A9157F629B6E37BA037EC3A716293AD59C1A254EA4FC60DE1B875F40BB328B5B6CC148D5FF5AF
-Out = 34E2E8205BC53EDB71913053F33227BD0CE67F1D509A0FFC5F70AE3B59A722681182179726A242F1AADA28E15C3B04589D5847C762A36A73B7D0696C7393D5AC73DFE5DBA39752C8A06BC4DF90FB52372598B43726849B0907DD640C9D0D4C9990D5F2FDC9F1535400DBB3921C046556B0F8DDF88C46D8D7924E954B177B936EBE1961C89D5616761C51D576D60C22FF8973FD324DD7340B76D11F6612D80AE53CD3E5702AEA0EEEACB6FD21861B68CEF12AB12CAB6BF023D6F6F3771B237A9F68D5516EB85BC0907E947D702AEBF2FD72C196A087EB38AAF77E04BEA1F6798F6EC164BEAFAD1BDD2955B8721AA6717505EAB952
-
-Key = CD3603440E0D4ABFB32196ABAEA29DBD
-Nonce = 47D173BB5D14232E
-In = 3F20E497CC4C46C5C0B145DC2D1208627A07F0426608F4C240CB2C0E1B78858FA22280BE9DB77EA591738F57ECBB4F242386CDA36E926FDA022400566C2AA3AA885B5AC734DE191B61B66817B9A81D9F9FA9AA5F061E85B75DEED7A7C8E4C047923C6BB484747C0447381452444FDE4658AD1FD3FA214798B4119D0133DA8EEB08E4104F84B4485047E9E48195F4408E3473565036388A53FB9D657A7166DB7FE8F0978F01FC8DB66DFAFFD2E9B9FCFAD241E05F856A512BB70DDF8CB32B34F00A06F7A5547BA92DD905DED80937E3A1478142A549A34B1905A2C0183975E4DE684458DB2F80F39138ADA478D425453909AE585EFA7A91E0
-Out = AEB26738E31E6C09771AED38B68F236CC9B3B7C512B16DAE7BB44F2F8ED5BB38FA0FAA8FB4F8C9E3BF003CC4342BCEDB7F978F0383C7677622468E5A4C76F9A91CE4F3C2B26B9547E6384EE50BCA15D22A7EFF7BC69E749AFDF6F0BE7DA7E60BA86C399C34C580E18E5FB35B2D52ABD64A31F508711C5AD753FCC47D38933C581AB33C6F57E90090C7824A345046492A6A94293040ADF91673D8FF6FB1B6C989D0C0A962931504ED2E1E056FAE8EADE632D27B398D893F2D3B420AAAFCAE4EA0688AB45335BE5E8D5E1A7D70A4C6EF1EDA6BE64AA0CDE3939230E8B027B400CBA2615525C0377E22D5DB9EF150C316680E545B28D5AB02BD
-
-Key = 7ECC2FA94DB28B0C4CD002EA020B6111
-Nonce = 00519E7C6392488A
-In = 9FF2357073EA8FEB5696460CA5570F82A65C9C8B23CBBDB54161EDF09BBB952A57F9E02A0E60B53B9B29E47F64982A9D3AAF92CECA9B1B4F899C37EC998679E1C6E608FFE780EC780517AE6EAFE48474BBDBC2F59FE732779AA27380BD7B003F1D9D9977DA835C52A6D6742914276C92689190A1DCE67F31A165A08053063F08C01A5C25B5666540F0802C7F79E64DA6A2E8EE51888918CFA3C5437891E1F7186ACD7B48CC2B7C6E961C95A10121D4B2F20D737F74FE62D4401ABE8EE6EF748D646B02B117885D6F9F7BA65A01307454094C66AF68D25740EE9F45D7B9E12D9FBE44C13D98BBB59FFBBDE75E4E217F9BF794968A4B55F2B16DF6DD40
-Out = 30E20775061AC476109DEBEEC9CA69882E3F6FF8D05B913CE1ACCCBFADEA87B15AEAB81A8414EEFC3938D0149A0DEBC42E1B3E4CD4D6FA0CA171F7CA194A5F57BC2BA3221E43DE68A269714F5BEDF0F12FA33C456F839D30C4A9C7667273350CAE1E25BF98CDE73BC10FC5B202F88C7477B2973A077C567DE8408C3FDE4EA6722056D7AA0AABA3E332D53B686423ECC8D8C69524D3E94AE42FE6C70CDFE611C7DA0E300BD81FED416CC0952F008A9F4CC6795D85DD0732228628A8A3266782BFD7E041D6D135C329BF7C02F209EA97C288C613049ADAA2702F654FB81166C23F2EA91FB969679917CDCF22CD878AAFE6E2CD8BCA63468AB745762E7D
-
-Key = 0C8D98BEA46840B22546EE369F77CFFB
-Nonce = 4FD1822D02B9C1A3
-In = 7E508A73B21580529EF3C160A981240BA4A83989EC072F7F8296DC7DA3B9F785D11FA67DA1843A31BEEDD09919738D6E98AC7F37402FA60968E0EA3890CD0A0238B31AE3A26EF28BAE750FF2451D98D8B405FEC83672C3A531CDEE25AE5566EA23C51CE747CB44092B82AB89D0C3D0731DE92D1C862E50DA27A7024338FD62311DBB7BD2029713263EE16F9FF37EACE71EE5F25AD185A9E0327173F4287A93BAF814ADAF5AF869F2436BAAD8D8D3EA4908A816FADEE43AAC1B7E408BC049D2383F91D25D4CFC3537784E0071B5BB1614CE40C8E1EB9FCEF299C8C10DF96597B10BFF0606CA3CDD6AB72BBF8D4341222E36675360FA3193A0E275C95590056585
-Out = A5B2EC64C27DDC68D99C9F82F0833898B11B2355DF8F1CAFA49C4B3D67327A2367AED1C8330F5A700C788529F78AC260E0DB5231DF15E01BB616566CF4E3A64F1F42B503E42403867EA24A5DBB80E5B6403BAF272BB480E0B39C77E4D092FB8ED54360912930F36B91C94F39689F6571D948D9660CE319E1D72EECC0AF93072417F4A65F0F1823581B9DCF874094E32741BBA233F5A998C1CAEEE53C331BA9F9D437DDBA066160137AC5E7D006DE9EF709B1D033145CE09F1FDDE0C5B278201665BB835726314E1B76E8DE23E4FBE36C22F5D7009E6B7DB7F151DB23CD520666101F7D3F699016CDC3F286402EBAE4F59ABCCC3A86502112935EA87E1A993F6C
-
[CTR-BE(XTEA)]
Key = EC1147D3A4CB70A20AA8664E88E60985
Nonce = 7A38520947DD623F
diff --git a/src/tests/data/stream/salsa20.vec b/src/tests/data/stream/salsa20.vec
index d1ca30ca1..afe111266 100644
--- a/src/tests/data/stream/salsa20.vec
+++ b/src/tests/data/stream/salsa20.vec
@@ -1,16 +1,13 @@
[Salsa20]
Key = 000102030405060708090A0B0C0D0E0F
-In = 000000000000000000000000000000000000000000000000000000000000000000000000000000
Nonce = 0000000000000000
Out = 2DD5C3F7BA2B20F76802410C688688895AD8C1BD4EA6C9B140FB9B90E21049BF583F527970EBC1
Key = 1B1C1D1E1F202122232425262728292A2B2C2D2E2F303132333435363738393A
-In = 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
Nonce = 0000000000000000
Out = AE39508EAC9AECE7BF97BB20B9DEE41F87D947F828913598DB72CC232948565E837E0BF37D5D387B2D7102B43BB5D823B04ADF3CECB6D93B9BA752BEC5D450591514B40E40E653D1839C5BA092296B5E965B1E2FD3ACC192B1413F192FC43BC695464554E975030844AFE58A811209
Key = 1B27556473E985D462CD51197A9A46C76009549EAC6474F206C4EE0844F68389
-In = 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
Nonce = 69696EE955B62B73CD62BDA875FC73D68219E0036B7A0B37
Out = EEA6A7251C1E72916D11C2CB214D3C252539121D8E234E652D651FA4C8CFF880309E645A74E9E0A60D8243ACD9177AB51A1BEB8D5A2F5D700C093C5E5585579625337BD3AB619D615760D8C5B224A85B1D0EFE0EB8A7EE163ABB0376529FCC09BAB506C618E13CE777D82C3AE9D1A6F972D4160287CBFE60BF2130FC0A6FF6049D0A5C8A82F429231F0080
diff --git a/src/tests/main.cpp b/src/tests/main.cpp
index 07aaac519..b771d9614 100644
--- a/src/tests/main.cpp
+++ b/src/tests/main.cpp
@@ -228,8 +228,14 @@ class Test_Runner : public Botan_CLI::Command
{
for(auto&& test_name : tests_to_run)
{
- const auto results = Botan_Tests::Test::run_test(test_name, false);
- out << report_out(results, tests_failed, tests_ran) << std::flush;
+ try {
+ const auto results = Botan_Tests::Test::run_test(test_name, false);
+ out << report_out(results, tests_failed, tests_ran) << std::flush;
+ }
+ catch(std::exception& e)
+ {
+ out << "Test " << test_name << " failed with exception " << e.what() << std::flush;
+ }
}
}
else
@@ -250,7 +256,15 @@ class Test_Runner : public Botan_CLI::Command
for(auto&& test_name : tests_to_run)
{
auto run_it = [test_name] {
- return Botan_Tests::Test::run_test(test_name, false);
+ try {
+ return Botan_Tests::Test::run_test(test_name, false);
+ }
+ catch(std::exception& e)
+ {
+ Botan_Tests::Test::Result r(test_name);
+ r.test_failure("Exception thrown", e.what());
+ return std::vector<Botan_Tests::Test::Result>{r};
+ }
};
fut_results.push_back(std::async(std::launch::async, run_it));
diff --git a/src/tests/test_block.cpp b/src/tests/test_block.cpp
index 0863cb891..acbe6702b 100644
--- a/src/tests/test_block.cpp
+++ b/src/tests/test_block.cpp
@@ -30,16 +30,18 @@ class Block_Cipher_Tests : public Text_Based_Test
return result;
}
- for(auto&& provider: providers)
+ for(auto&& provider_ask : providers)
{
- std::unique_ptr<Botan::BlockCipher> cipher(Botan::BlockCipher::create(algo, provider));
+ std::unique_ptr<Botan::BlockCipher> cipher(Botan::BlockCipher::create(algo, provider_ask));
if(!cipher)
{
- result.note_missing(algo + " from " + provider);
+ result.note_missing(algo + " from " + provider_ask);
continue;
}
+ const std::string provider(cipher->provider());
+ result.test_is_nonempty("provider", provider);
result.test_eq(provider, cipher->name(), algo);
result.test_gte(provider, cipher->parallelism(), 1);
result.test_gte(provider, cipher->block_size(), 8);
diff --git a/src/tests/test_fpe.cpp b/src/tests/test_fpe.cpp
new file mode 100644
index 000000000..e2a7c6e68
--- /dev/null
+++ b/src/tests/test_fpe.cpp
@@ -0,0 +1,49 @@
+/*
+* (C) 2016 Jack Lloyd
+*
+* Botan is released under the Simplified BSD License (see license.txt)
+*/
+
+#include "tests.h"
+
+#if defined(BOTAN_HAS_FPE_FE1)
+ #include <botan/fpe_fe1.h>
+#endif
+
+namespace Botan_Tests {
+
+#if defined(BOTAN_HAS_FPE_FE1)
+
+class FPE_FE1_Tests : public Text_Based_Test
+ {
+ public:
+ FPE_FE1_Tests() : Text_Based_Test("fpe_fe1.vec", {"Mod", "In", "Out", "Key", "Tweak"}) {}
+
+ Test::Result run_one_test(const std::string&, const VarMap& vars) override
+ {
+ const Botan::BigInt modulus = get_req_bn(vars, "Mod");
+ const Botan::BigInt input = get_req_bn(vars, "In");
+ const Botan::BigInt expected = get_req_bn(vars, "Out");
+ const std::vector<uint8_t> key = get_req_bin(vars, "Key");
+ const std::vector<uint8_t> tweak = get_req_bin(vars, "Tweak");
+
+ Test::Result result("FPE_FE1");
+
+ const Botan::BigInt got = Botan::FPE::fe1_encrypt(modulus, input, key, tweak);
+
+ result.test_eq("ciphertext", got, expected);
+
+ const Botan::BigInt decry = Botan::FPE::fe1_decrypt(modulus, got, key, tweak);
+
+ result.test_eq("decrypted", decry, input);
+
+ return result;
+ }
+
+ };
+
+BOTAN_REGISTER_TEST("fpe_fe1", FPE_FE1_Tests);
+
+#endif
+
+}
diff --git a/src/tests/test_hash.cpp b/src/tests/test_hash.cpp
index 811e95727..aca9d7ef6 100644
--- a/src/tests/test_hash.cpp
+++ b/src/tests/test_hash.cpp
@@ -36,16 +36,18 @@ class Hash_Function_Tests : public Text_Based_Test
return result;
}
- for(auto&& provider: providers)
+ for(auto&& provider_ask : providers)
{
- std::unique_ptr<Botan::HashFunction> hash(Botan::HashFunction::create(algo, provider));
+ std::unique_ptr<Botan::HashFunction> hash(Botan::HashFunction::create(algo, provider_ask));
if(!hash)
{
- result.note_missing(algo + " from " + provider);
+ result.note_missing(algo + " from " + provider_ask);
continue;
}
+ const std::string provider(hash->provider());
+ result.test_is_nonempty("provider", provider);
result.test_eq(provider, hash->name(), algo);
hash->update(input);
diff --git a/src/tests/test_mac.cpp b/src/tests/test_mac.cpp
index c7efb7f08..6183e88f7 100644
--- a/src/tests/test_mac.cpp
+++ b/src/tests/test_mac.cpp
@@ -38,16 +38,19 @@ class Message_Auth_Tests : public Text_Based_Test
return result;
}
- for(auto&& provider: providers)
+ for(auto&& provider_ask : providers)
{
- std::unique_ptr<Botan::MessageAuthenticationCode> mac(Botan::MessageAuthenticationCode::create(algo, provider));
+ std::unique_ptr<Botan::MessageAuthenticationCode> mac(Botan::MessageAuthenticationCode::create(algo, provider_ask));
if(!mac)
{
- result.note_missing(algo + " from " + provider);
+ result.note_missing(algo + " from " + provider_ask);
continue;
}
+ const std::string provider(mac->provider());
+
+ result.test_is_nonempty("provider", provider);
result.test_eq(provider, mac->name(), algo);
mac->set_key(key);
diff --git a/src/tests/test_modes.cpp b/src/tests/test_modes.cpp
index 66f537346..ada4d5b82 100644
--- a/src/tests/test_modes.cpp
+++ b/src/tests/test_modes.cpp
@@ -39,6 +39,7 @@ class Cipher_Mode_Tests : public Text_Based_Test
return result;
}
+ result.test_is_nonempty("provider", enc->provider());
result.test_eq("name", enc->name(), algo);
result.test_eq("mode not authenticated", enc->authenticated(), false);
diff --git a/src/tests/test_newhope.cpp b/src/tests/test_newhope.cpp
new file mode 100644
index 000000000..ed3690f55
--- /dev/null
+++ b/src/tests/test_newhope.cpp
@@ -0,0 +1,134 @@
+/*
+* (C) 2016 Jack Lloyd
+*
+* Botan is released under the Simplified BSD License (see license.txt)
+*/
+
+#include "tests.h"
+
+#if defined(BOTAN_HAS_NEWHOPE) && defined(BOTAN_HAS_CHACHA)
+ #include <botan/newhope.h>
+ #include <botan/chacha.h>
+ #include <botan/rng.h>
+#endif
+
+namespace Botan_Tests {
+
+#if defined(BOTAN_HAS_NEWHOPE) && defined(BOTAN_HAS_CHACHA)
+
+class NEWHOPE_RNG : public Botan::RandomNumberGenerator
+ {
+ public:
+ std::string name() const override { return "NEWHOPE_RNG"; }
+ void clear() override { /* ignored */ }
+
+ void randomize(byte out[], size_t len) override
+ {
+ if(m_first.size() == len)
+ {
+ if(len != 32)
+ throw Test_Error("NEWHOPE_RNG called in unexpected way, bad test?");
+
+ Botan::copy_mem(out, m_first.data(), m_first.size());
+ return;
+ }
+
+ /*
+ * This slavishly emulates the behavior of the reference
+ * implementations RNG, in order to ensure that from the same
+ * random seed we compute the exact same result.
+ */
+ Botan::clear_mem(out, len);
+ m_chacha.cipher1(out, len);
+
+ m_calls += 1;
+
+ byte nonce[8] = { 0 };
+
+ if(m_calls < 3)
+ {
+ nonce[0] = m_calls;
+ }
+ else
+ {
+ nonce[7] = m_calls;
+ }
+
+ m_chacha.set_iv(nonce, 8);
+ }
+
+ bool is_seeded() const override { return true; }
+
+ void add_entropy(const byte[], size_t) override { /* ignored */ }
+
+ NEWHOPE_RNG(const std::vector<uint8_t>& seed)
+ {
+ if(seed.size() != 64 && seed.size() != 32)
+ {
+ throw Test_Error("Invalid NEWHOPE RNG seed");
+ }
+
+ if(seed.size() == 64)
+ {
+ m_first.assign(seed.begin(), seed.begin() + 32);
+ m_chacha.set_key(seed.data() + 32, 32);
+ }
+ else
+ {
+ m_chacha.set_key(seed.data(), 32);
+ }
+ }
+
+ private:
+ Botan::ChaCha m_chacha;
+ std::vector<uint8_t> m_first;
+ byte m_calls = 0;
+ };
+
+class NEWHOPE_Tests : public Text_Based_Test
+ {
+ public:
+ NEWHOPE_Tests() : Text_Based_Test("pubkey/newhope.vec", {"DRBG_SeedA", "H_OutputA", "DRBG_SeedB", "H_OutputB", "SharedKey"}) {}
+
+ Test::Result run_one_test(const std::string&, const VarMap& vars) override
+ {
+ Test::Result result("NEWHOPE");
+
+ const std::vector<uint8_t> h_output_a = get_req_bin(vars, "H_OutputA");
+ const std::vector<uint8_t> h_output_b = get_req_bin(vars, "H_OutputB");
+ const std::vector<uint8_t> shared_key = get_req_bin(vars, "SharedKey");
+
+ NEWHOPE_RNG drbg_a(get_req_bin(vars, "DRBG_SeedA"));
+ NEWHOPE_RNG drbg_b(get_req_bin(vars, "DRBG_SeedB"));
+
+ std::vector<uint8_t> send_a(NEWHOPE_SENDABYTES);
+ Botan::newhope_poly a_sk;
+ Botan::newhope_keygen(send_a.data(), &a_sk, drbg_a);
+
+ std::vector<uint8_t> h_send_a(32);
+ Botan::newhope_hash(h_send_a.data(), send_a.data(), send_a.size());
+
+ result.test_eq("Hash Output A", h_send_a, h_output_a);
+
+ std::vector<uint8_t> sharedkey_b(32);
+ std::vector<uint8_t> send_b(NEWHOPE_SENDBBYTES);
+ Botan::newhope_sharedb(sharedkey_b.data(), send_b.data(), send_a.data(), drbg_b);
+ result.test_eq("Key B", sharedkey_b, shared_key);
+
+ std::vector<uint8_t> h_send_b(32);
+ Botan::newhope_hash(h_send_b.data(), send_b.data(), send_b.size());
+ result.test_eq("Hash Output B", h_send_b, h_output_b);
+
+ std::vector<uint8_t> sharedkey_a(32);
+ newhope_shareda(sharedkey_a.data(), &a_sk, send_b.data());
+ result.test_eq("Key A", sharedkey_a, shared_key);
+
+ return result;
+ }
+ };
+
+BOTAN_REGISTER_TEST("newhope", NEWHOPE_Tests);
+
+#endif
+
+}
diff --git a/src/tests/test_nr.cpp b/src/tests/test_nr.cpp
deleted file mode 100644
index bd1d67d4f..000000000
--- a/src/tests/test_nr.cpp
+++ /dev/null
@@ -1,69 +0,0 @@
-/*
-* (C) 2014,2015 Jack Lloyd
-*
-* Botan is released under the Simplified BSD License (see license.txt)
-*/
-
-#include "tests.h"
-
-#if defined(BOTAN_HAS_NYBERG_RUEPPEL)
- #include <botan/nr.h>
- #include "test_pubkey.h"
-#endif
-
-namespace Botan_Tests {
-
-namespace {
-
-#if defined(BOTAN_HAS_NYBERG_RUEPPEL)
-
-class NR_KAT_Tests : public PK_Signature_Generation_Test
- {
- public:
- NR_KAT_Tests() : PK_Signature_Generation_Test(
- "Nyberg-Rueppel",
- "pubkey/nr.vec",
- {"P", "Q", "G", "X", "Hash", "Nonce", "Msg", "Signature"})
- {}
-
- std::unique_ptr<Botan::Private_Key> load_private_key(const VarMap& vars) override
- {
- const Botan::BigInt p = get_req_bn(vars, "P");
- const Botan::BigInt q = get_req_bn(vars, "Q");
- const Botan::BigInt g = get_req_bn(vars, "G");
- const Botan::BigInt x = get_req_bn(vars, "X");
-
- const Botan::DL_Group grp(p, q, g);
-
- std::unique_ptr<Botan::Private_Key> key(new Botan::NR_PrivateKey(Test::rng(), grp, x));
- return key;
- }
-
- std::string default_padding(const VarMap& vars) const override
- {
- return "EMSA1(" + get_req_str(vars, "Hash") + ")";
- }
- };
-
-class NR_Keygen_Tests : public PK_Key_Generation_Test
- {
- public:
- std::vector<std::string> keygen_params() const override { return { "dsa/jce/1024", "dsa/botan/2048" }; }
-
- std::unique_ptr<Botan::Private_Key> make_key(Botan::RandomNumberGenerator& rng,
- const std::string& param) const override
- {
- Botan::DL_Group group(param);
- std::unique_ptr<Botan::Private_Key> key(new Botan::NR_PrivateKey(rng, group));
- return key;
- }
- };
-
-BOTAN_REGISTER_TEST("nr_kat", NR_KAT_Tests);
-BOTAN_REGISTER_TEST("nr_keygen", NR_Keygen_Tests);
-
-#endif
-
-}
-
-}
diff --git a/src/tests/test_rw.cpp b/src/tests/test_rw.cpp
deleted file mode 100644
index bee9dfff0..000000000
--- a/src/tests/test_rw.cpp
+++ /dev/null
@@ -1,74 +0,0 @@
-/*
-* (C) 2014,2015 Jack Lloyd
-*
-* Botan is released under the Simplified BSD License (see license.txt)
-*/
-
-#include "tests.h"
-
-#if defined(BOTAN_HAS_RW)
- #include <botan/rw.h>
- #include <botan/pubkey.h>
- #include "test_pubkey.h"
-#endif
-
-namespace Botan_Tests {
-
-namespace {
-
-#if defined(BOTAN_HAS_RW)
-
-class RW_KAT_Tests : public PK_Signature_Generation_Test
- {
- public:
- RW_KAT_Tests() : PK_Signature_Generation_Test(
- "Rabin-Williams",
- "pubkey/rw_sig.vec",
- {"E", "P", "Q", "Msg", "Signature"},
- {"Padding"})
- {}
-
- std::string default_padding(const VarMap&) const override { return "EMSA2(SHA-1)"; }
-
- std::unique_ptr<Botan::Private_Key> load_private_key(const VarMap& vars) override
- {
- const BigInt p = get_req_bn(vars, "P");
- const BigInt q = get_req_bn(vars, "Q");
- const BigInt e = get_req_bn(vars, "E");
-
- std::unique_ptr<Botan::Private_Key> key(new Botan::RW_PrivateKey(Test::rng(), p, q, e));
- return key;
- }
-
- };
-
-class RW_Verify_Tests : public PK_Signature_Verification_Test
- {
- public:
- RW_Verify_Tests() : PK_Signature_Verification_Test(
- "Rabin-Williams",
- "pubkey/rw_verify.vec",
- {"E", "N", "Msg", "Signature"})
- {}
-
- std::string default_padding(const VarMap&) const override { return "EMSA2(SHA-1)"; }
-
- std::unique_ptr<Botan::Public_Key> load_public_key(const VarMap& vars) override
- {
- const BigInt n = get_req_bn(vars, "N");
- const BigInt e = get_req_bn(vars, "E");
-
- std::unique_ptr<Botan::Public_Key> key(new Botan::RW_PublicKey(n, e));
- return key;
- }
-
- };
-
-BOTAN_REGISTER_TEST("rw_kat", RW_KAT_Tests);
-BOTAN_REGISTER_TEST("rw_verify", RW_Verify_Tests);
-
-#endif
-
-}
-
-}
diff --git a/src/tests/test_stream.cpp b/src/tests/test_stream.cpp
index d3d83c26c..6097fd3e8 100644
--- a/src/tests/test_stream.cpp
+++ b/src/tests/test_stream.cpp
@@ -18,15 +18,18 @@ class Stream_Cipher_Tests : public Text_Based_Test
{
public:
Stream_Cipher_Tests(): Text_Based_Test("stream",
- {"Key", "In", "Out"}, {"Nonce", "Seek"}) {}
+ std::vector<std::string>{"Key", "Out"}, {"In", "Nonce", "Seek"}) {}
Test::Result run_one_test(const std::string& algo, const VarMap& vars) override
{
const std::vector<uint8_t> key = get_req_bin(vars, "Key");
- const std::vector<uint8_t> input = get_req_bin(vars, "In");
const std::vector<uint8_t> expected = get_req_bin(vars, "Out");
const std::vector<uint8_t> nonce = get_opt_bin(vars, "Nonce");
const size_t seek = get_opt_sz(vars, "Seek", 0);
+ std::vector<uint8_t> input = get_opt_bin(vars, "In");
+
+ if(input.empty())
+ input.resize(expected.size());
Test::Result result(algo);
@@ -38,16 +41,18 @@ class Stream_Cipher_Tests : public Text_Based_Test
return result;
}
- for(auto&& provider: providers)
+ for(auto&& provider_ask : providers)
{
- std::unique_ptr<Botan::StreamCipher> cipher(Botan::StreamCipher::create(algo, provider));
+ std::unique_ptr<Botan::StreamCipher> cipher(Botan::StreamCipher::create(algo, provider_ask));
if(!cipher)
{
- result.note_missing(algo + " from " + provider);
+ result.note_missing(algo + " from " + provider_ask);
continue;
}
+ const std::string provider(cipher->provider());
+ result.test_is_nonempty("provider", provider);
result.test_eq(provider, cipher->name(), algo);
cipher->set_key(key);
diff --git a/src/tests/tests.cpp b/src/tests/tests.cpp
index a6f96144c..b47f2a7ab 100644
--- a/src/tests/tests.cpp
+++ b/src/tests/tests.cpp
@@ -175,6 +175,13 @@ bool Test::Result::test_eq(const char* producer, const std::string& what,
return test_failure(err.str());
}
+bool Test::Result::test_is_nonempty(const std::string& what_is_it, const std::string& to_examine)
+ {
+ if(to_examine.empty())
+ return test_failure(what_is_it + " was empty");
+ return test_success();
+ }
+
bool Test::Result::test_eq(const std::string& what, const std::string& produced, const std::string& expected)
{
return test_is_eq(what, produced, expected);
@@ -527,21 +534,21 @@ Text_Based_Test::Text_Based_Test(const std::string& algo,
std::vector<uint8_t> Text_Based_Test::get_req_bin(const VarMap& vars,
const std::string& key) const
- {
- auto i = vars.find(key);
- if(i == vars.end())
- throw Test_Error("Test missing variable " + key);
+ {
+ auto i = vars.find(key);
+ if(i == vars.end())
+ throw Test_Error("Test missing variable " + key);
- try
- {
- return Botan::hex_decode(i->second);
- }
- catch(std::exception&)
- {
- throw Test_Error("Test invalid hex input '" + i->second + "'" +
- + " for key " + key);
- }
+ try
+ {
+ return Botan::hex_decode(i->second);
}
+ catch(std::exception&)
+ {
+ throw Test_Error("Test invalid hex input '" + i->second + "'" +
+ + " for key " + key);
+ }
+ }
std::string Text_Based_Test::get_opt_str(const VarMap& vars,
const std::string& key, const std::string& def_value) const
@@ -646,9 +653,17 @@ std::string Text_Based_Test::get_next_line()
}
m_cur.reset(new std::ifstream(m_srcs[0]));
+ m_cur_src_name = m_srcs[0];
+
+ // Reinit cpuid on new file if needed
+ if(m_cpu_flags.empty() == false)
+ {
+ m_cpu_flags.clear();
+ Botan::CPUID::initialize();
+ }
if(!m_cur->good())
- throw Test_Error("Could not open input file '" + m_srcs[0]);
+ throw Test_Error("Could not open input file '" + m_cur_src_name);
m_srcs.pop_front();
}
@@ -662,7 +677,12 @@ std::string Text_Based_Test::get_next_line()
continue;
if(line[0] == '#')
- continue;
+ {
+ if(line.compare(0, 6, "#test ") == 0)
+ return line;
+ else
+ continue;
+ }
return line;
}
@@ -685,6 +705,42 @@ std::string strip_ws(const std::string& in)
return in.substr(first_c, last_c - first_c + 1);
}
+std::vector<Botan::CPUID::CPUID_bits> map_cpuid_string(const std::string& tok)
+ {
+#if defined(BOTAN_TARGET_CPU_IS_X86_FAMILY)
+ if(tok == "sse2" || tok == "simd")
+ return {Botan::CPUID::CPUID_SSE2_BIT};
+ if(tok == "ssse3")
+ return {Botan::CPUID::CPUID_SSSE3_BIT};
+ if(tok == "aesni")
+ return {Botan::CPUID::CPUID_AESNI_BIT};
+ if(tok == "clmul")
+ return {Botan::CPUID::CPUID_CLMUL_BIT};
+ if(tok == "avx2")
+ return {Botan::CPUID::CPUID_AVX2_BIT};
+#endif
+
+#if defined(BOTAN_TARGET_CPU_IS_PPC_FAMILY)
+ if(tok == "altivec" || tok == "simd")
+ return {Botan::CPUID::CPUID_ALTIVEC_BIT};
+#endif
+
+ return {};
+ }
+
+std::vector<Botan::CPUID::CPUID_bits>
+parse_cpuid_bits(const std::vector<std::string>& tok)
+ {
+ std::vector<Botan::CPUID::CPUID_bits> bits;
+ for(size_t i = 1; i < tok.size(); ++i)
+ {
+ const std::vector<Botan::CPUID::CPUID_bits> more = map_cpuid_string(tok[i]);
+ bits.insert(bits.end(), more.begin(), more.end());
+ }
+
+ return bits;
+ }
+
}
std::vector<Test::Result> Text_Based_Test::run()
@@ -701,6 +757,23 @@ std::vector<Test::Result> Text_Based_Test::run()
if(line.empty()) // EOF
break;
+ if(line.compare(0, 6, "#test ") == 0)
+ {
+ std::vector<std::string> pragma_tokens = Botan::split_on(line.substr(6), ' ');
+
+ if(pragma_tokens.empty())
+ throw Test_Error("Empty pragma found in " + m_cur_src_name);
+
+ if(pragma_tokens[0] != "cpuid")
+ throw Test_Error("Unknown test pragma '" + line + "' in " + m_cur_src_name);
+
+ m_cpu_flags = parse_cpuid_bits(pragma_tokens);
+
+ continue;
+ }
+ else if(line[0] == '#')
+ throw Test_Error("Unknown test pragma '" + line + "' in " + m_cur_src_name);
+
if(line[0] == '[' && line[line.size()-1] == ']')
{
header = line.substr(1, line.size() - 2);
@@ -736,7 +809,21 @@ std::vector<Test::Result> Text_Based_Test::run()
++test_cnt;
uint64_t start = Test::timestamp();
+
Test::Result result = run_one_test(header, vars);
+ if(m_cpu_flags.size() > 0)
+ {
+ for(auto&& cpuid_bit : m_cpu_flags)
+ {
+ if(Botan::CPUID::has_cpuid_bit(cpuid_bit))
+ {
+ Botan::CPUID::clear_cpuid_bit(cpuid_bit);
+ // now re-run the test
+ result.merge(run_one_test(header, vars));
+ }
+ }
+ Botan::CPUID::initialize();
+ }
result.set_ns_consumed(Test::timestamp() - start);
if(result.tests_failed())
diff --git a/src/tests/tests.h b/src/tests/tests.h
index 39aaf67cd..1ceb24f48 100644
--- a/src/tests/tests.h
+++ b/src/tests/tests.h
@@ -12,6 +12,7 @@
#include <botan/rng.h>
#include <botan/hex.h>
#include <botan/symkey.h>
+#include <botan/cpuid.h>
#if defined(BOTAN_HAS_BIGINT)
#include <botan/bigint.h>
@@ -170,6 +171,8 @@ class Test
bool test_eq(const std::string& what, const char* produced, const char* expected);
+ bool test_is_nonempty(const std::string& what_is_it, const std::string& to_examine);
+
bool test_eq(const std::string& what,
const std::string& produced,
const std::string& expected);
@@ -442,7 +445,9 @@ class Text_Based_Test : public Test
bool m_first = true;
std::unique_ptr<std::ifstream> m_cur;
+ std::string m_cur_src_name;
std::deque<std::string> m_srcs;
+ std::vector<Botan::CPUID::CPUID_bits> m_cpu_flags;
};
}
diff --git a/src/tests/unit_tls.cpp b/src/tests/unit_tls.cpp
index 33c6c245e..081b1038d 100644
--- a/src/tests/unit_tls.cpp
+++ b/src/tests/unit_tls.cpp
@@ -773,7 +773,7 @@ class Test_Policy : public Botan::TLS::Text_Policy
size_t dtls_initial_timeout() const override { return 1; }
size_t dtls_maximum_timeout() const override { return 8; }
- size_t minimum_rsa_bits() const { return 1024; }
+ size_t minimum_rsa_bits() const override { return 1024; }
};
diff --git a/src/tests/unit_x509.cpp b/src/tests/unit_x509.cpp
index 4d3c63a1b..4313e1373 100644
--- a/src/tests/unit_x509.cpp
+++ b/src/tests/unit_x509.cpp
@@ -308,8 +308,8 @@ Test::Result test_x509_cert(const std::string& sig_algo, const std::string& hash
Botan::X509_Certificate user1_cert_copy(user1_cert);
result.test_eq("certificate copy", user1_cert == user1_cert_copy, true);
- user1_cert_copy = user1_cert;
- result.test_eq("certificate assignment", user1_cert == user1_cert_copy, true);
+ user1_cert_copy = user2_cert;
+ result.test_eq("certificate assignment", user2_cert == user1_cert_copy, true);
Botan::X509_Certificate user1_cert_differ =
ca.sign_request(user1_req, Test::rng(),
@@ -472,6 +472,66 @@ Test::Result test_usage(const std::string& sig_algo, const std::string& hash_fn
return result;
}
+Test::Result test_self_issued(const std::string& sig_algo, const std::string& hash_fn = "SHA-256")
+ {
+ using Botan::Key_Constraints;
+
+ Test::Result result("X509 Self Issued");
+
+ // create the CA's key and self-signed cert
+ std::unique_ptr<Botan::Private_Key> ca_key(make_a_private_key(sig_algo));
+
+ if(!ca_key)
+ {
+ // Failure because X.509 enabled but requested signature algorithm is not present
+ result.test_note("Skipping due to missing signature algorithm: " + sig_algo);
+ return result;
+ }
+
+ // create the self-signed cert
+ Botan::X509_Certificate ca_cert =
+ Botan::X509::create_self_signed_cert(ca_opts(),
+ *ca_key,
+ hash_fn,
+ Test::rng());
+
+ /* Create the CA object */
+ Botan::X509_CA ca(ca_cert, *ca_key, hash_fn);
+
+ std::unique_ptr<Botan::Private_Key> user_key(make_a_private_key(sig_algo));
+
+ // create a self-issued certificate, that is, a certificate with subject dn == issuer dn,
+ // but signed by a CA, not signed by it's own private key
+ Botan::X509_Cert_Options opts = ca_opts();
+ opts.constraints = Key_Constraints::DIGITAL_SIGNATURE;
+
+ Botan::PKCS10_Request self_issued_req =
+ Botan::X509::create_cert_req(opts,
+ *user_key,
+ hash_fn,
+ Test::rng());
+
+ Botan::X509_Certificate self_issued_cert =
+ ca.sign_request(self_issued_req, Test::rng(),
+ from_date(2008, 01, 01),
+ from_date(2033, 01, 01));
+
+ // check that this chain can can be verified successfully
+ Botan::Certificate_Store_In_Memory trusted(ca.ca_certificate());
+
+ Botan::Path_Validation_Restrictions restrictions;
+
+ Botan::Path_Validation_Result validation_result =
+ Botan::x509_path_validate(self_issued_cert,
+ restrictions,
+ trusted);
+
+ result.confirm("chain with self-issued cert validates", validation_result.successful_validation());
+
+ return result;
+ }
+
+
using Botan::Key_Constraints;
/**
@@ -629,15 +689,18 @@ class X509_Cert_Unit_Tests : public Test
const std::vector<std::string> sig_algos { "RSA", "DSA", "ECDSA", "ECGDSA", "ECKCDSA" };
Test::Result cert_result("X509 Unit");
Test::Result usage_result("X509 Usage");
+ Test::Result self_issued_result("X509 Self Issued");
for(const auto& algo : sig_algos)
{
cert_result.merge(test_x509_cert(algo));
usage_result.merge(test_usage(algo));
+ self_issued_result.merge(test_self_issued(algo));
}
results.push_back(cert_result);
results.push_back(usage_result);
+ results.push_back(self_issued_result);
const std::vector<std::string> pk_algos { "DH", "ECDH", "RSA", "ElGamal", "RW", "NR",
"DSA", "ECDSA", "ECGDSA", "ECKCDSA" };
diff --git a/tls-policy/BSI_TR-02102-2.txt b/tls-policy/BSI_TR-02102-2.txt
index bdc844b46..2ec690850 100644
--- a/tls-policy/BSI_TR-02102-2.txt
+++ b/tls-policy/BSI_TR-02102-2.txt
@@ -13,7 +13,6 @@ ecc_curves=brainpool512r1 brainpool384r1 brainpool256r1 secp384r1 secp256r1
minimum_dh_group_size=2000
minimum_ecdh_group_size=250
minimum_rsa_bits=2000
-ecc_curves=brainpool512r1 brainpool384r1 brainpool256r1
allow_insecure_renegotiation=false
allow_server_initiated_renegotiation=true