diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,24 @@
+## 0.22
+
+* Add Argon2 (Password Hashing Competition winner) hash function
+* Update blake2 to latest upstream version
+* Add extra blake2 hashing size
+* Add faster PBKDF2 functions for SHA1/SHA256/SHA512
+* Add SHAKE128 and SHAKE256
+* Cleanup prime generation, and add tests
+* Add Time-based One Time Password (TOTP) and HMAC-based One Time Password (HOTP)
+* Rename Ed448 module name to Curve448, old module name still valid for now
+
+## 0.21
+
+* Drop automated tests with GHC 7.0, GHC 7.4, GHC 7.6. support dropped, but probably still working.
+* Improve non-aligned support in C sources, ChaCha and SHA3 now probably work on arch without support for unaligned access. not complete or tested.
+* Add another ECC framework that is more flexible, allowing different implementations to work instead of
+  the existing Pure haskell NIST implementation.
+* Add ECIES basic primitives
+* Add XSalsa20 stream cipher
+* Process partial buffer correctly with Poly1305
+
 ## 0.20
 
 * Fixed hash truncation used in ECDSA signature & verification (Olivier Chéron)
diff --git a/Crypto/ECC.hs b/Crypto/ECC.hs
--- a/Crypto/ECC.hs
+++ b/Crypto/ECC.hs
@@ -34,7 +34,7 @@
 import qualified Crypto.Internal.ByteArray as B
 import           Crypto.Number.Serialize (i2ospOf_, os2ip)
 import qualified Crypto.PubKey.Curve25519 as X25519
-import qualified Crypto.PubKey.Ed448 as X448
+import qualified Crypto.PubKey.Curve448 as X448
 import           Data.Function (on)
 import           Data.ByteArray (convert)
 
diff --git a/Crypto/Error/Types.hs b/Crypto/Error/Types.hs
--- a/Crypto/Error/Types.hs
+++ b/Crypto/Error/Types.hs
@@ -43,6 +43,12 @@
     -- Message authentification error
     | CryptoError_MacKeyInvalid
     | CryptoError_AuthenticationTagSizeInvalid
+    -- Prime generation error
+    | CryptoError_PrimeSizeInvalid
+    -- Parameter errors
+    | CryptoError_SaltTooSmall
+    | CryptoError_OutputLengthTooSmall
+    | CryptoError_OutputLengthTooBig
     deriving (Show,Eq,Enum,Data,Typeable)
 
 instance E.Exception CryptoError
diff --git a/Crypto/Hash/Algorithms.hs b/Crypto/Hash/Algorithms.hs
--- a/Crypto/Hash/Algorithms.hs
+++ b/Crypto/Hash/Algorithms.hs
@@ -11,10 +11,15 @@
 module Crypto.Hash.Algorithms
     ( HashAlgorithm
     -- * hash algorithms
+    , Blake2s_160(..)
     , Blake2s_224(..)
-    , Blake2sp_224(..)
     , Blake2s_256(..)
+    , Blake2sp_224(..)
     , Blake2sp_256(..)
+    , Blake2b_160(..)
+    , Blake2b_224(..)
+    , Blake2b_256(..)
+    , Blake2b_384(..)
     , Blake2b_512(..)
     , Blake2bp_512(..)
     , MD2(..)
@@ -37,6 +42,10 @@
     , SHA3_256(..)
     , SHA3_384(..)
     , SHA3_512(..)
+#if MIN_VERSION_base(4,7,0)
+    , SHAKE128(..)
+    , SHAKE256(..)
+#endif
     , Skein256_224(..)
     , Skein256_256(..)
     , Skein512_224(..)
@@ -67,3 +76,6 @@
 import           Crypto.Hash.Skein256
 import           Crypto.Hash.Skein512
 import           Crypto.Hash.Whirlpool
+#if MIN_VERSION_base(4,7,0)
+import           Crypto.Hash.SHAKE
+#endif
diff --git a/Crypto/Hash/Blake2b.hs b/Crypto/Hash/Blake2b.hs
--- a/Crypto/Hash/Blake2b.hs
+++ b/Crypto/Hash/Blake2b.hs
@@ -9,18 +9,69 @@
 -- Blake2b cryptographic hash.
 --
 {-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE DeriveDataTypeable #-}
 module Crypto.Hash.Blake2b
-    (  Blake2b_512 (..)
+    (  Blake2b_160 (..), Blake2b_224 (..), Blake2b_256 (..), Blake2b_384 (..), Blake2b_512 (..)
     ) where
 
 import           Crypto.Hash.Types
 import           Foreign.Ptr (Ptr)
+import           Data.Data
+import           Data.Typeable
 import           Data.Word (Word8, Word32)
 
 
+-- | Blake2b (160 bits) cryptographic hash algorithm
+data Blake2b_160 = Blake2b_160
+    deriving (Show,Data,Typeable)
+
+instance HashAlgorithm Blake2b_160 where
+    hashBlockSize  _          = 128
+    hashDigestSize _          = 20
+    hashInternalContextSize _ = 361
+    hashInternalInit p        = c_blake2b_init p 160
+    hashInternalUpdate        = c_blake2b_update
+    hashInternalFinalize p    = c_blake2b_finalize p 160
+
+-- | Blake2b (224 bits) cryptographic hash algorithm
+data Blake2b_224 = Blake2b_224
+    deriving (Show,Data,Typeable)
+
+instance HashAlgorithm Blake2b_224 where
+    hashBlockSize  _          = 128
+    hashDigestSize _          = 28
+    hashInternalContextSize _ = 361
+    hashInternalInit p        = c_blake2b_init p 224
+    hashInternalUpdate        = c_blake2b_update
+    hashInternalFinalize p    = c_blake2b_finalize p 224
+
+-- | Blake2b (256 bits) cryptographic hash algorithm
+data Blake2b_256 = Blake2b_256
+    deriving (Show,Data,Typeable)
+
+instance HashAlgorithm Blake2b_256 where
+    hashBlockSize  _          = 128
+    hashDigestSize _          = 32
+    hashInternalContextSize _ = 361
+    hashInternalInit p        = c_blake2b_init p 256
+    hashInternalUpdate        = c_blake2b_update
+    hashInternalFinalize p    = c_blake2b_finalize p 256
+
+-- | Blake2b (384 bits) cryptographic hash algorithm
+data Blake2b_384 = Blake2b_384
+    deriving (Show,Data,Typeable)
+
+instance HashAlgorithm Blake2b_384 where
+    hashBlockSize  _          = 128
+    hashDigestSize _          = 48
+    hashInternalContextSize _ = 361
+    hashInternalInit p        = c_blake2b_init p 384
+    hashInternalUpdate        = c_blake2b_update
+    hashInternalFinalize p    = c_blake2b_finalize p 384
+
 -- | Blake2b (512 bits) cryptographic hash algorithm
 data Blake2b_512 = Blake2b_512
-    deriving (Show)
+    deriving (Show,Data,Typeable)
 
 instance HashAlgorithm Blake2b_512 where
     hashBlockSize  _          = 128
diff --git a/Crypto/Hash/Blake2bp.hs b/Crypto/Hash/Blake2bp.hs
--- a/Crypto/Hash/Blake2bp.hs
+++ b/Crypto/Hash/Blake2bp.hs
@@ -9,18 +9,21 @@
 -- Blake2bp cryptographic hash.
 --
 {-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE DeriveDataTypeable #-}
 module Crypto.Hash.Blake2bp
     (  Blake2bp_512 (..)
     ) where
 
 import           Crypto.Hash.Types
 import           Foreign.Ptr (Ptr)
+import           Data.Data
+import           Data.Typeable
 import           Data.Word (Word8, Word32)
 
 
 -- | Blake2bp (512 bits) cryptographic hash algorithm
 data Blake2bp_512 = Blake2bp_512
-    deriving (Show)
+    deriving (Show,Data,Typeable)
 
 instance HashAlgorithm Blake2bp_512 where
     hashBlockSize  _          = 128
diff --git a/Crypto/Hash/Blake2s.hs b/Crypto/Hash/Blake2s.hs
--- a/Crypto/Hash/Blake2s.hs
+++ b/Crypto/Hash/Blake2s.hs
@@ -9,18 +9,33 @@
 -- Blake2s cryptographic hash.
 --
 {-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE DeriveDataTypeable #-}
 module Crypto.Hash.Blake2s
-    (  Blake2s_224 (..), Blake2s_256 (..)
+    (  Blake2s_160 (..), Blake2s_224 (..), Blake2s_256 (..)
     ) where
 
 import           Crypto.Hash.Types
 import           Foreign.Ptr (Ptr)
+import           Data.Data
+import           Data.Typeable
 import           Data.Word (Word8, Word32)
 
 
+-- | Blake2s (160 bits) cryptographic hash algorithm
+data Blake2s_160 = Blake2s_160
+    deriving (Show,Data,Typeable)
+
+instance HashAlgorithm Blake2s_160 where
+    hashBlockSize  _          = 64
+    hashDigestSize _          = 20
+    hashInternalContextSize _ = 185
+    hashInternalInit p        = c_blake2s_init p 160
+    hashInternalUpdate        = c_blake2s_update
+    hashInternalFinalize p    = c_blake2s_finalize p 160
+
 -- | Blake2s (224 bits) cryptographic hash algorithm
 data Blake2s_224 = Blake2s_224
-    deriving (Show)
+    deriving (Show,Data,Typeable)
 
 instance HashAlgorithm Blake2s_224 where
     hashBlockSize  _          = 64
@@ -32,7 +47,7 @@
 
 -- | Blake2s (256 bits) cryptographic hash algorithm
 data Blake2s_256 = Blake2s_256
-    deriving (Show)
+    deriving (Show,Data,Typeable)
 
 instance HashAlgorithm Blake2s_256 where
     hashBlockSize  _          = 64
diff --git a/Crypto/Hash/Blake2sp.hs b/Crypto/Hash/Blake2sp.hs
--- a/Crypto/Hash/Blake2sp.hs
+++ b/Crypto/Hash/Blake2sp.hs
@@ -9,18 +9,21 @@
 -- Blake2sp cryptographic hash.
 --
 {-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE DeriveDataTypeable #-}
 module Crypto.Hash.Blake2sp
     (  Blake2sp_224 (..), Blake2sp_256 (..)
     ) where
 
 import           Crypto.Hash.Types
 import           Foreign.Ptr (Ptr)
+import           Data.Data
+import           Data.Typeable
 import           Data.Word (Word8, Word32)
 
 
 -- | Blake2sp (224 bits) cryptographic hash algorithm
 data Blake2sp_224 = Blake2sp_224
-    deriving (Show)
+    deriving (Show,Data,Typeable)
 
 instance HashAlgorithm Blake2sp_224 where
     hashBlockSize  _          = 64
@@ -32,7 +35,7 @@
 
 -- | Blake2sp (256 bits) cryptographic hash algorithm
 data Blake2sp_256 = Blake2sp_256
-    deriving (Show)
+    deriving (Show,Data,Typeable)
 
 instance HashAlgorithm Blake2sp_256 where
     hashBlockSize  _          = 64
diff --git a/Crypto/Hash/Keccak.hs b/Crypto/Hash/Keccak.hs
--- a/Crypto/Hash/Keccak.hs
+++ b/Crypto/Hash/Keccak.hs
@@ -9,18 +9,21 @@
 -- Keccak cryptographic hash.
 --
 {-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE DeriveDataTypeable #-}
 module Crypto.Hash.Keccak
     (  Keccak_224 (..), Keccak_256 (..), Keccak_384 (..), Keccak_512 (..)
     ) where
 
 import           Crypto.Hash.Types
 import           Foreign.Ptr (Ptr)
+import           Data.Data
+import           Data.Typeable
 import           Data.Word (Word8, Word32)
 
 
 -- | Keccak (224 bits) cryptographic hash algorithm
 data Keccak_224 = Keccak_224
-    deriving (Show)
+    deriving (Show,Data,Typeable)
 
 instance HashAlgorithm Keccak_224 where
     hashBlockSize  _          = 144
@@ -32,7 +35,7 @@
 
 -- | Keccak (256 bits) cryptographic hash algorithm
 data Keccak_256 = Keccak_256
-    deriving (Show)
+    deriving (Show,Data,Typeable)
 
 instance HashAlgorithm Keccak_256 where
     hashBlockSize  _          = 136
@@ -44,7 +47,7 @@
 
 -- | Keccak (384 bits) cryptographic hash algorithm
 data Keccak_384 = Keccak_384
-    deriving (Show)
+    deriving (Show,Data,Typeable)
 
 instance HashAlgorithm Keccak_384 where
     hashBlockSize  _          = 104
@@ -56,7 +59,7 @@
 
 -- | Keccak (512 bits) cryptographic hash algorithm
 data Keccak_512 = Keccak_512
-    deriving (Show)
+    deriving (Show,Data,Typeable)
 
 instance HashAlgorithm Keccak_512 where
     hashBlockSize  _          = 72
diff --git a/Crypto/Hash/MD2.hs b/Crypto/Hash/MD2.hs
--- a/Crypto/Hash/MD2.hs
+++ b/Crypto/Hash/MD2.hs
@@ -9,15 +9,18 @@
 -- MD2 cryptographic hash.
 --
 {-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE DeriveDataTypeable #-}
 module Crypto.Hash.MD2 ( MD2 (..) ) where
 
 import           Crypto.Hash.Types
 import           Foreign.Ptr (Ptr)
+import           Data.Data
+import           Data.Typeable
 import           Data.Word (Word8, Word32)
 
 -- | MD2 cryptographic hash algorithm
 data MD2 = MD2
-    deriving (Show)
+    deriving (Show,Data,Typeable)
 
 instance HashAlgorithm MD2 where
     hashBlockSize  _          = 16
diff --git a/Crypto/Hash/MD4.hs b/Crypto/Hash/MD4.hs
--- a/Crypto/Hash/MD4.hs
+++ b/Crypto/Hash/MD4.hs
@@ -9,15 +9,18 @@
 -- MD4 cryptographic hash.
 --
 {-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE DeriveDataTypeable #-}
 module Crypto.Hash.MD4 ( MD4 (..) ) where
 
 import           Crypto.Hash.Types
 import           Foreign.Ptr (Ptr)
+import           Data.Data
+import           Data.Typeable
 import           Data.Word (Word8, Word32)
 
 -- | MD4 cryptographic hash algorithm
 data MD4 = MD4
-    deriving (Show)
+    deriving (Show,Data,Typeable)
 
 instance HashAlgorithm MD4 where
     hashBlockSize  _          = 64
diff --git a/Crypto/Hash/MD5.hs b/Crypto/Hash/MD5.hs
--- a/Crypto/Hash/MD5.hs
+++ b/Crypto/Hash/MD5.hs
@@ -9,15 +9,18 @@
 -- MD5 cryptographic hash.
 --
 {-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE DeriveDataTypeable #-}
 module Crypto.Hash.MD5 ( MD5 (..) ) where
 
 import           Crypto.Hash.Types
 import           Foreign.Ptr (Ptr)
+import           Data.Data
+import           Data.Typeable
 import           Data.Word (Word8, Word32)
 
 -- | MD5 cryptographic hash algorithm
 data MD5 = MD5
-    deriving (Show)
+    deriving (Show,Data,Typeable)
 
 instance HashAlgorithm MD5 where
     hashBlockSize  _          = 64
diff --git a/Crypto/Hash/RIPEMD160.hs b/Crypto/Hash/RIPEMD160.hs
--- a/Crypto/Hash/RIPEMD160.hs
+++ b/Crypto/Hash/RIPEMD160.hs
@@ -9,15 +9,18 @@
 -- RIPEMD160 cryptographic hash.
 --
 {-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE DeriveDataTypeable #-}
 module Crypto.Hash.RIPEMD160 ( RIPEMD160 (..) ) where
 
 import           Crypto.Hash.Types
 import           Foreign.Ptr (Ptr)
+import           Data.Data
+import           Data.Typeable
 import           Data.Word (Word8, Word32)
 
 -- | RIPEMD160 cryptographic hash algorithm
 data RIPEMD160 = RIPEMD160
-    deriving (Show)
+    deriving (Show,Data,Typeable)
 
 instance HashAlgorithm RIPEMD160 where
     hashBlockSize  _          = 64
diff --git a/Crypto/Hash/SHA1.hs b/Crypto/Hash/SHA1.hs
--- a/Crypto/Hash/SHA1.hs
+++ b/Crypto/Hash/SHA1.hs
@@ -9,15 +9,18 @@
 -- SHA1 cryptographic hash.
 --
 {-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE DeriveDataTypeable #-}
 module Crypto.Hash.SHA1 ( SHA1 (..) ) where
 
 import           Crypto.Hash.Types
 import           Foreign.Ptr (Ptr)
+import           Data.Data
+import           Data.Typeable
 import           Data.Word (Word8, Word32)
 
 -- | SHA1 cryptographic hash algorithm
 data SHA1 = SHA1
-    deriving (Show)
+    deriving (Show,Data,Typeable)
 
 instance HashAlgorithm SHA1 where
     hashBlockSize  _          = 64
diff --git a/Crypto/Hash/SHA224.hs b/Crypto/Hash/SHA224.hs
--- a/Crypto/Hash/SHA224.hs
+++ b/Crypto/Hash/SHA224.hs
@@ -9,15 +9,18 @@
 -- SHA224 cryptographic hash.
 --
 {-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE DeriveDataTypeable #-}
 module Crypto.Hash.SHA224 ( SHA224 (..) ) where
 
 import           Crypto.Hash.Types
 import           Foreign.Ptr (Ptr)
+import           Data.Data
+import           Data.Typeable
 import           Data.Word (Word8, Word32)
 
 -- | SHA224 cryptographic hash algorithm
 data SHA224 = SHA224
-    deriving (Show)
+    deriving (Show,Data,Typeable)
 
 instance HashAlgorithm SHA224 where
     hashBlockSize  _          = 64
diff --git a/Crypto/Hash/SHA256.hs b/Crypto/Hash/SHA256.hs
--- a/Crypto/Hash/SHA256.hs
+++ b/Crypto/Hash/SHA256.hs
@@ -9,15 +9,18 @@
 -- SHA256 cryptographic hash.
 --
 {-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE DeriveDataTypeable #-}
 module Crypto.Hash.SHA256 ( SHA256 (..) ) where
 
 import           Crypto.Hash.Types
 import           Foreign.Ptr (Ptr)
+import           Data.Data
+import           Data.Typeable
 import           Data.Word (Word8, Word32)
 
 -- | SHA256 cryptographic hash algorithm
 data SHA256 = SHA256
-    deriving (Show)
+    deriving (Show,Data,Typeable)
 
 instance HashAlgorithm SHA256 where
     hashBlockSize  _          = 64
diff --git a/Crypto/Hash/SHA3.hs b/Crypto/Hash/SHA3.hs
--- a/Crypto/Hash/SHA3.hs
+++ b/Crypto/Hash/SHA3.hs
@@ -9,18 +9,20 @@
 -- SHA3 cryptographic hash.
 --
 {-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE DeriveDataTypeable #-}
 module Crypto.Hash.SHA3
     (  SHA3_224 (..), SHA3_256 (..), SHA3_384 (..), SHA3_512 (..)
     ) where
 
 import           Crypto.Hash.Types
 import           Foreign.Ptr (Ptr)
+import           Data.Data
+import           Data.Typeable
 import           Data.Word (Word8, Word32)
 
-
 -- | SHA3 (224 bits) cryptographic hash algorithm
 data SHA3_224 = SHA3_224
-    deriving (Show)
+    deriving (Show,Data,Typeable)
 
 instance HashAlgorithm SHA3_224 where
     hashBlockSize  _          = 144
@@ -32,7 +34,7 @@
 
 -- | SHA3 (256 bits) cryptographic hash algorithm
 data SHA3_256 = SHA3_256
-    deriving (Show)
+    deriving (Show,Data,Typeable)
 
 instance HashAlgorithm SHA3_256 where
     hashBlockSize  _          = 136
@@ -44,7 +46,7 @@
 
 -- | SHA3 (384 bits) cryptographic hash algorithm
 data SHA3_384 = SHA3_384
-    deriving (Show)
+    deriving (Show,Data,Typeable)
 
 instance HashAlgorithm SHA3_384 where
     hashBlockSize  _          = 104
@@ -56,7 +58,7 @@
 
 -- | SHA3 (512 bits) cryptographic hash algorithm
 data SHA3_512 = SHA3_512
-    deriving (Show)
+    deriving (Show,Data,Typeable)
 
 instance HashAlgorithm SHA3_512 where
     hashBlockSize  _          = 72
@@ -65,7 +67,6 @@
     hashInternalInit p        = c_sha3_init p 512
     hashInternalUpdate        = c_sha3_update
     hashInternalFinalize p    = c_sha3_finalize p 512
-
 
 foreign import ccall unsafe "cryptonite_sha3_init"
     c_sha3_init :: Ptr (Context a) -> Word32 -> IO ()
diff --git a/Crypto/Hash/SHA384.hs b/Crypto/Hash/SHA384.hs
--- a/Crypto/Hash/SHA384.hs
+++ b/Crypto/Hash/SHA384.hs
@@ -9,15 +9,18 @@
 -- SHA384 cryptographic hash.
 --
 {-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE DeriveDataTypeable #-}
 module Crypto.Hash.SHA384 ( SHA384 (..) ) where
 
 import           Crypto.Hash.Types
 import           Foreign.Ptr (Ptr)
+import           Data.Data
+import           Data.Typeable
 import           Data.Word (Word8, Word32)
 
 -- | SHA384 cryptographic hash algorithm
 data SHA384 = SHA384
-    deriving (Show)
+    deriving (Show,Data,Typeable)
 
 instance HashAlgorithm SHA384 where
     hashBlockSize  _          = 128
diff --git a/Crypto/Hash/SHA512.hs b/Crypto/Hash/SHA512.hs
--- a/Crypto/Hash/SHA512.hs
+++ b/Crypto/Hash/SHA512.hs
@@ -9,15 +9,18 @@
 -- SHA512 cryptographic hash.
 --
 {-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE DeriveDataTypeable #-}
 module Crypto.Hash.SHA512 ( SHA512 (..) ) where
 
 import           Crypto.Hash.Types
 import           Foreign.Ptr (Ptr)
+import           Data.Data
+import           Data.Typeable
 import           Data.Word (Word8, Word32)
 
 -- | SHA512 cryptographic hash algorithm
 data SHA512 = SHA512
-    deriving (Show)
+    deriving (Show,Data,Typeable)
 
 instance HashAlgorithm SHA512 where
     hashBlockSize  _          = 128
diff --git a/Crypto/Hash/SHA512t.hs b/Crypto/Hash/SHA512t.hs
--- a/Crypto/Hash/SHA512t.hs
+++ b/Crypto/Hash/SHA512t.hs
@@ -9,18 +9,21 @@
 -- SHA512t cryptographic hash.
 --
 {-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE DeriveDataTypeable #-}
 module Crypto.Hash.SHA512t
     (  SHA512t_224 (..), SHA512t_256 (..)
     ) where
 
 import           Crypto.Hash.Types
 import           Foreign.Ptr (Ptr)
+import           Data.Data
+import           Data.Typeable
 import           Data.Word (Word8, Word32)
 
 
 -- | SHA512t (224 bits) cryptographic hash algorithm
 data SHA512t_224 = SHA512t_224
-    deriving (Show)
+    deriving (Show,Data,Typeable)
 
 instance HashAlgorithm SHA512t_224 where
     hashBlockSize  _          = 128
@@ -32,7 +35,7 @@
 
 -- | SHA512t (256 bits) cryptographic hash algorithm
 data SHA512t_256 = SHA512t_256
-    deriving (Show)
+    deriving (Show,Data,Typeable)
 
 instance HashAlgorithm SHA512t_256 where
     hashBlockSize  _          = 128
diff --git a/Crypto/Hash/SHAKE.hs b/Crypto/Hash/SHAKE.hs
new file mode 100644
--- /dev/null
+++ b/Crypto/Hash/SHAKE.hs
@@ -0,0 +1,91 @@
+-- |
+-- Module      : Crypto.Hash.SHAKE
+-- License     : BSD-style
+-- Maintainer  : Vincent Hanquez <vincent@snarc.org>
+-- Stability   : experimental
+-- Portability : unknown
+--
+-- module containing the binding functions to work with the
+-- SHA3 extendable output functions (SHAKE).
+--
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE KindSignatures #-}
+{-# LANGUAGE DataKinds #-}
+{-# LANGUAGE ConstraintKinds #-}
+{-# LANGUAGE ScopedTypeVariables #-}
+{-# LANGUAGE TypeOperators #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE UndecidableInstances #-}
+module Crypto.Hash.SHAKE
+    (  SHAKE128 (..), SHAKE256 (..)
+    ) where
+
+import           Crypto.Hash.Types
+import           Foreign.Ptr (Ptr)
+import           Data.Typeable
+import           Data.Word (Word8, Word32)
+
+import           Data.Proxy (Proxy(..))
+import           GHC.TypeLits (Nat, KnownNat, natVal)
+import           Crypto.Internal.Nat
+
+-- | SHAKE128 (128 bits) extendable output function.  Supports an arbitrary
+-- digest size (multiple of 8 bits), to be specified as a type parameter
+-- of kind 'Nat'.
+--
+-- Note: outputs from @'SHAKE128' n@ and @'SHAKE128' m@ for the same input are
+-- correlated (one being a prefix of the other).  Results are unrelated to
+-- 'SHAKE256' results.
+data SHAKE128 (bitlen :: Nat) = SHAKE128
+    deriving (Show, Typeable)
+
+instance (IsDivisibleBy8 bitLen, KnownNat bitLen) => HashAlgorithm (SHAKE128 bitLen) where
+    hashBlockSize  _          = 168
+    hashDigestSize _          = byteLen (Proxy :: Proxy bitLen)
+    hashInternalContextSize _ = 376
+    hashInternalInit p        = c_sha3_init p 128
+    hashInternalUpdate        = c_sha3_update
+    hashInternalFinalize      = shakeFinalizeOutput (Proxy :: Proxy bitLen)
+
+-- | SHAKE256 (256 bits) extendable output function.  Supports an arbitrary
+-- digest size (multiple of 8 bits), to be specified as a type parameter
+-- of kind 'Nat'.
+--
+-- Note: outputs from @'SHAKE256' n@ and @'SHAKE256' m@ for the same input are
+-- correlated (one being a prefix of the other).  Results are unrelated to
+-- 'SHAKE128' results.
+data SHAKE256 (bitlen :: Nat) = SHAKE256
+    deriving (Show, Typeable)
+
+instance (IsDivisibleBy8 bitLen, KnownNat bitLen) => HashAlgorithm (SHAKE256 bitLen) where
+    hashBlockSize  _          = 136
+    hashDigestSize _          = byteLen (Proxy :: Proxy bitLen)
+    hashInternalContextSize _ = 344
+    hashInternalInit p        = c_sha3_init p 256
+    hashInternalUpdate        = c_sha3_update
+    hashInternalFinalize      = shakeFinalizeOutput (Proxy :: Proxy bitLen)
+
+shakeFinalizeOutput :: (IsDivisibleBy8 bitLen, KnownNat bitLen)
+                    => proxy bitLen
+                    -> Ptr (Context a)
+                    -> Ptr (Digest a)
+                    -> IO ()
+shakeFinalizeOutput d ctx dig = do
+    c_sha3_finalize_shake ctx
+    c_sha3_output ctx dig (fromInteger (natVal d `div` 8))
+
+byteLen :: (KnownNat bitlen, IsDivisibleBy8 bitlen, Num a) => proxy bitlen -> a
+byteLen d = fromInteger (natVal d `div` 8)
+
+foreign import ccall unsafe "cryptonite_sha3_init"
+    c_sha3_init :: Ptr (Context a) -> Word32 -> IO ()
+
+foreign import ccall "cryptonite_sha3_update"
+    c_sha3_update :: Ptr (Context a) -> Ptr Word8 -> Word32 -> IO ()
+
+foreign import ccall unsafe "cryptonite_sha3_finalize_shake"
+    c_sha3_finalize_shake :: Ptr (Context a) -> IO ()
+
+foreign import ccall unsafe "cryptonite_sha3_output"
+    c_sha3_output :: Ptr (Context a) -> Ptr (Digest a) -> Word32 -> IO ()
diff --git a/Crypto/Hash/Skein256.hs b/Crypto/Hash/Skein256.hs
--- a/Crypto/Hash/Skein256.hs
+++ b/Crypto/Hash/Skein256.hs
@@ -9,18 +9,21 @@
 -- Skein256 cryptographic hash.
 --
 {-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE DeriveDataTypeable #-}
 module Crypto.Hash.Skein256
     (  Skein256_224 (..), Skein256_256 (..)
     ) where
 
 import           Crypto.Hash.Types
 import           Foreign.Ptr (Ptr)
+import           Data.Data
+import           Data.Typeable
 import           Data.Word (Word8, Word32)
 
 
 -- | Skein256 (224 bits) cryptographic hash algorithm
 data Skein256_224 = Skein256_224
-    deriving (Show)
+    deriving (Show,Data,Typeable)
 
 instance HashAlgorithm Skein256_224 where
     hashBlockSize  _          = 32
@@ -32,7 +35,7 @@
 
 -- | Skein256 (256 bits) cryptographic hash algorithm
 data Skein256_256 = Skein256_256
-    deriving (Show)
+    deriving (Show,Data,Typeable)
 
 instance HashAlgorithm Skein256_256 where
     hashBlockSize  _          = 32
diff --git a/Crypto/Hash/Skein512.hs b/Crypto/Hash/Skein512.hs
--- a/Crypto/Hash/Skein512.hs
+++ b/Crypto/Hash/Skein512.hs
@@ -9,18 +9,21 @@
 -- Skein512 cryptographic hash.
 --
 {-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE DeriveDataTypeable #-}
 module Crypto.Hash.Skein512
     (  Skein512_224 (..), Skein512_256 (..), Skein512_384 (..), Skein512_512 (..)
     ) where
 
 import           Crypto.Hash.Types
 import           Foreign.Ptr (Ptr)
+import           Data.Data
+import           Data.Typeable
 import           Data.Word (Word8, Word32)
 
 
 -- | Skein512 (224 bits) cryptographic hash algorithm
 data Skein512_224 = Skein512_224
-    deriving (Show)
+    deriving (Show,Data,Typeable)
 
 instance HashAlgorithm Skein512_224 where
     hashBlockSize  _          = 64
@@ -32,7 +35,7 @@
 
 -- | Skein512 (256 bits) cryptographic hash algorithm
 data Skein512_256 = Skein512_256
-    deriving (Show)
+    deriving (Show,Data,Typeable)
 
 instance HashAlgorithm Skein512_256 where
     hashBlockSize  _          = 64
@@ -44,7 +47,7 @@
 
 -- | Skein512 (384 bits) cryptographic hash algorithm
 data Skein512_384 = Skein512_384
-    deriving (Show)
+    deriving (Show,Data,Typeable)
 
 instance HashAlgorithm Skein512_384 where
     hashBlockSize  _          = 64
@@ -56,7 +59,7 @@
 
 -- | Skein512 (512 bits) cryptographic hash algorithm
 data Skein512_512 = Skein512_512
-    deriving (Show)
+    deriving (Show,Data,Typeable)
 
 instance HashAlgorithm Skein512_512 where
     hashBlockSize  _          = 64
diff --git a/Crypto/Hash/Tiger.hs b/Crypto/Hash/Tiger.hs
--- a/Crypto/Hash/Tiger.hs
+++ b/Crypto/Hash/Tiger.hs
@@ -9,15 +9,18 @@
 -- Tiger cryptographic hash.
 --
 {-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE DeriveDataTypeable #-}
 module Crypto.Hash.Tiger ( Tiger (..) ) where
 
 import           Crypto.Hash.Types
 import           Foreign.Ptr (Ptr)
+import           Data.Data
+import           Data.Typeable
 import           Data.Word (Word8, Word32)
 
 -- | Tiger cryptographic hash algorithm
 data Tiger = Tiger
-    deriving (Show)
+    deriving (Show,Data,Typeable)
 
 instance HashAlgorithm Tiger where
     hashBlockSize  _          = 64
diff --git a/Crypto/Hash/Whirlpool.hs b/Crypto/Hash/Whirlpool.hs
--- a/Crypto/Hash/Whirlpool.hs
+++ b/Crypto/Hash/Whirlpool.hs
@@ -9,15 +9,18 @@
 -- Whirlpool cryptographic hash.
 --
 {-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE DeriveDataTypeable #-}
 module Crypto.Hash.Whirlpool ( Whirlpool (..) ) where
 
 import           Crypto.Hash.Types
 import           Foreign.Ptr (Ptr)
+import           Data.Data
+import           Data.Typeable
 import           Data.Word (Word8, Word32)
 
 -- | Whirlpool cryptographic hash algorithm
 data Whirlpool = Whirlpool
-    deriving (Show)
+    deriving (Show,Data,Typeable)
 
 instance HashAlgorithm Whirlpool where
     hashBlockSize  _          = 64
diff --git a/Crypto/Internal/Nat.hs b/Crypto/Internal/Nat.hs
new file mode 100644
--- /dev/null
+++ b/Crypto/Internal/Nat.hs
@@ -0,0 +1,101 @@
+{-# LANGUAGE CPP #-}
+{-# LANGUAGE DataKinds #-}
+{-# LANGUAGE ConstraintKinds #-}
+{-# LANGUAGE TypeOperators #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE UndecidableInstances #-}
+module Crypto.Internal.Nat
+    ( type IsDivisibleBy8
+    ) where
+
+import           GHC.TypeLits
+
+type family IsDiv8 (bitLen :: Nat) (n :: Nat) where
+    IsDiv8 bitLen 0 = 'True
+#if MIN_VERSION_base(4,9,0)
+    IsDiv8 bitLen 1 = TypeError ('Text "bitLen " ':<>: 'ShowType bitLen ':<>: 'Text " is not divisible by 8")
+    IsDiv8 bitLen 2 = TypeError ('Text "bitLen " ':<>: 'ShowType bitLen ':<>: 'Text " is not divisible by 8")
+    IsDiv8 bitLen 3 = TypeError ('Text "bitLen " ':<>: 'ShowType bitLen ':<>: 'Text " is not divisible by 8")
+    IsDiv8 bitLen 4 = TypeError ('Text "bitLen " ':<>: 'ShowType bitLen ':<>: 'Text " is not divisible by 8")
+    IsDiv8 bitLen 5 = TypeError ('Text "bitLen " ':<>: 'ShowType bitLen ':<>: 'Text " is not divisible by 8")
+    IsDiv8 bitLen 6 = TypeError ('Text "bitLen " ':<>: 'ShowType bitLen ':<>: 'Text " is not divisible by 8")
+    IsDiv8 bitLen 7 = TypeError ('Text "bitLen " ':<>: 'ShowType bitLen ':<>: 'Text " is not divisible by 8")
+#else
+    IsDiv8 bitLen 1 = 'False
+    IsDiv8 bitLen 2 = 'False
+    IsDiv8 bitLen 3 = 'False
+    IsDiv8 bitLen 4 = 'False
+    IsDiv8 bitLen 5 = 'False
+    IsDiv8 bitLen 6 = 'False
+    IsDiv8 bitLen 7 = 'False
+#endif
+    IsDiv8 bitLen n = IsDiv8 n (Mod8 n)
+
+type family Mod8 (n :: Nat) where
+    Mod8 0 = 0
+    Mod8 1 = 1
+    Mod8 2 = 2
+    Mod8 3 = 3
+    Mod8 4 = 4
+    Mod8 5 = 5
+    Mod8 6 = 6
+    Mod8 7 = 7
+    Mod8 8 = 0
+    Mod8 9 = 1
+    Mod8 10 = 2
+    Mod8 11 = 3
+    Mod8 12 = 4
+    Mod8 13 = 5
+    Mod8 14 = 6
+    Mod8 15 = 7
+    Mod8 16 = 0
+    Mod8 17 = 1
+    Mod8 18 = 2
+    Mod8 19 = 3
+    Mod8 20 = 4
+    Mod8 21 = 5
+    Mod8 22 = 6
+    Mod8 23 = 7
+    Mod8 24 = 0
+    Mod8 25 = 1
+    Mod8 26 = 2
+    Mod8 27 = 3
+    Mod8 28 = 4
+    Mod8 29 = 5
+    Mod8 30 = 6
+    Mod8 31 = 7
+    Mod8 32 = 0
+    Mod8 33 = 1
+    Mod8 34 = 2
+    Mod8 35 = 3
+    Mod8 36 = 4
+    Mod8 37 = 5
+    Mod8 38 = 6
+    Mod8 39 = 7
+    Mod8 40 = 0
+    Mod8 41 = 1
+    Mod8 42 = 2
+    Mod8 43 = 3
+    Mod8 44 = 4
+    Mod8 45 = 5
+    Mod8 46 = 6
+    Mod8 47 = 7
+    Mod8 48 = 0
+    Mod8 49 = 1
+    Mod8 50 = 2
+    Mod8 51 = 3
+    Mod8 52 = 4
+    Mod8 53 = 5
+    Mod8 54 = 6
+    Mod8 55 = 7
+    Mod8 56 = 0
+    Mod8 57 = 1
+    Mod8 58 = 2
+    Mod8 59 = 3
+    Mod8 60 = 4
+    Mod8 61 = 5
+    Mod8 62 = 6
+    Mod8 63 = 7
+    Mod8 n = Mod8 (n - 64)
+
+type IsDivisibleBy8 bitLen = IsDiv8 bitLen bitLen ~ 'True
diff --git a/Crypto/KDF/Argon2.hs b/Crypto/KDF/Argon2.hs
new file mode 100644
--- /dev/null
+++ b/Crypto/KDF/Argon2.hs
@@ -0,0 +1,155 @@
+-- |
+-- Module      : Crypto.KDF.Argon2
+-- License     : BSD-style
+-- Maintainer  : Vincent Hanquez <vincent@snarc.org>
+-- Stability   : experimental
+-- Portability : unknown
+--
+-- Argon2 hashing function (P-H-C winner)
+--
+-- Recommended to use this module qualified
+--
+-- File started from Argon2.hs, from Oliver Charles
+-- at https://github.com/ocharles/argon2
+--
+module Crypto.KDF.Argon2
+    (
+      Options(..)
+    , TimeCost
+    , MemoryCost
+    , Parallelism
+    , Variant(..)
+    , Version(..)
+    , defaultOptions
+    -- * Hashing function
+    , hash
+    ) where
+
+import           Crypto.Internal.ByteArray (ScrubbedBytes, ByteArray, ByteArrayAccess)
+import qualified Crypto.Internal.ByteArray as B
+import           Crypto.Error
+import           Control.Monad (when)
+import           Data.Word
+import           Foreign.C
+import           Foreign.Ptr
+
+-- | Which variant of Argon2 to use. You should choose the variant that is most
+-- applicable to your intention to hash inputs.
+data Variant =
+      Argon2d  -- ^ Argon2i uses data-independent memory access, which is preferred
+               -- for password hashing and password-based key derivation. Argon2i
+               -- is slower as it makes more passes over the memory to protect from
+               -- tradeoff attacks.
+    | Argon2i -- ^ Argon2d is faster and uses data-depending memory access, which
+              -- makes it suitable for cryptocurrencies and applications with no
+              -- threats from side-channel timing attacks.
+    | Argon2id -- ^ Argon2id is a hybrid of Argon2i and Argon2d, using a combination
+               -- of data-depending and data-independent memory accesses, which gives
+               -- some of Argon2i's resistance to side-channel cache timing attacks
+               -- and much of Argon2d's resistance to GPU cracking attacks
+    deriving (Eq,Ord,Read,Show,Enum,Bounded)
+
+-- | Which version of Argon2 to use
+data Version = Version10 | Version13
+    deriving (Eq,Ord,Read,Show,Enum,Bounded)
+
+-- | The time cost, which defines the amount of computation realized and therefore the execution time, given in number of iterations.
+--
+-- 'FFI.ARGON2_MIN_TIME' <= 'hashIterations' <= 'FFI.ARGON2_MAX_TIME'
+type TimeCost = Word32
+
+-- | The memory cost, which defines the memory usage, given in kibibytes.
+--
+-- max 'FFI.ARGON2_MIN_MEMORY' (8 * 'hashParallelism') <= 'hashMemory' <= 'FFI.ARGON2_MAX_MEMORY'
+type MemoryCost = Word32
+
+-- \ A parallelism degree, which defines the number of parallel threads.
+--
+-- 'FFI.ARGON2_MIN_LANES' <= 'hashParallelism' <= 'FFI.ARGON2_MAX_LANES' && 'FFI.ARGON_MIN_THREADS' <= 'hashParallelism' <= 'FFI.ARGON2_MAX_THREADS'
+type Parallelism = Word32
+
+-- | Parameters that can be adjusted to change the runtime performance of the
+-- hashing.
+data Options = Options
+    { iterations  :: !TimeCost
+    , memory      :: !MemoryCost
+    , parallelism :: !Parallelism
+    , variant     :: !Variant     -- ^ Which variant of Argon2 to use.
+    , version     :: !Version     -- ^ Which version of Argon2 to use.
+    }
+    deriving (Eq,Ord,Read,Show)
+
+saltMinLength :: Int
+saltMinLength = 8
+
+outputMinLength :: Int
+outputMinLength = 4
+
+outputMaxLength :: Int
+outputMaxLength = 0xffffffff
+
+defaultOptions :: Options
+defaultOptions =
+    Options { iterations  = 1
+            , memory      = 2 ^ (17 :: Int)
+            , parallelism = 4
+            , variant     = Argon2i
+            , version     = Version13
+            }
+
+hash :: (ByteArrayAccess password, ByteArrayAccess salt, ByteArray out)
+     => Options
+     -> password
+     -> salt
+     -> Int
+     -> CryptoFailable out
+hash options password salt outLen
+    | saltLen < saltMinLength  = CryptoFailed CryptoError_SaltTooSmall
+    | outLen < outputMinLength = CryptoFailed CryptoError_OutputLengthTooSmall
+    | outLen > outputMaxLength = CryptoFailed CryptoError_OutputLengthTooBig
+    | otherwise                = CryptoPassed $ B.allocAndFreeze outLen $ \out -> do
+        res <- B.withByteArray password $ \pPass ->
+               B.withByteArray salt     $ \pSalt ->
+                    argon2_hash (iterations options)
+                                (memory options)
+                                (parallelism options)
+                                pPass
+                                (csizeOfInt passwordLen)
+                                pSalt
+                                (csizeOfInt saltLen)
+                                out
+                                (csizeOfInt outLen)
+                                (cOfVariant $ variant options)
+                                (cOfVersion $ version options)
+        when (res /= 0) $ error "argon2: hash: internal error"
+  where
+    saltLen = B.length salt
+    passwordLen = B.length password
+
+data Pass
+data Salt
+data HashOut
+
+type CVariant = CInt -- valid value is 0 (Argon2d), 1 (Argon2i) and 2 (Argon2id)
+type CVersion = CInt -- valid value is 0x10, 0x13
+
+cOfVersion :: Version -> CVersion
+cOfVersion Version10 = 0x10
+cOfVersion Version13 = 0x13
+
+cOfVariant :: Variant -> CVariant
+cOfVariant Argon2d  = 0
+cOfVariant Argon2i  = 1
+cOfVariant Argon2id = 2
+
+csizeOfInt :: Int -> CSize
+csizeOfInt = fromIntegral
+
+foreign import ccall unsafe "cryptonite_argon2_hash"
+    argon2_hash :: Word32 -> Word32 -> Word32
+                -> Ptr Pass -> CSize
+                -> Ptr Salt -> CSize
+                -> Ptr HashOut -> CSize
+                -> CVariant
+                -> CVersion
+                -> IO CInt
diff --git a/Crypto/KDF/PBKDF2.hs b/Crypto/KDF/PBKDF2.hs
--- a/Crypto/KDF/PBKDF2.hs
+++ b/Crypto/KDF/PBKDF2.hs
@@ -8,17 +8,23 @@
 -- Password Based Key Derivation Function 2
 --
 {-# LANGUAGE BangPatterns #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+
 module Crypto.KDF.PBKDF2
     ( PRF
     , prfHMAC
     , Parameters(..)
     , generate
+    , fastPBKDF2_SHA1
+    , fastPBKDF2_SHA256
+    , fastPBKDF2_SHA512
     ) where
 
 import           Data.Word
 import           Data.Bits
 import           Foreign.Marshal.Alloc
-import           Foreign.Ptr (plusPtr)
+import           Foreign.Ptr (plusPtr, Ptr)
+import           Foreign.C.Types (CUInt(..), CInt(..), CSize(..))
 
 import           Crypto.Hash (HashAlgorithm)
 import qualified Crypto.MAC.HMAC as HMAC
@@ -100,3 +106,70 @@
             c = fromIntegral ((w `shiftR` 8) .&. 0xff)
             d = fromIntegral (w .&. 0xff)
 {-# NOINLINE generate #-}
+
+fastPBKDF2_SHA1 :: (ByteArrayAccess password, ByteArrayAccess salt, ByteArray out)
+                => Parameters
+                -> password
+                -> salt
+                -> out
+fastPBKDF2_SHA1 params password salt =
+    B.allocAndFreeze (outputLength params) $ \outPtr ->
+    B.withByteArray password $ \passPtr ->
+    B.withByteArray salt $ \saltPtr ->
+        c_cryptonite_fastpbkdf2_hmac_sha1
+            passPtr (fromIntegral $ B.length password)
+            saltPtr (fromIntegral $ B.length salt)
+            (fromIntegral $ iterCounts params)
+            outPtr (fromIntegral $ outputLength params)
+
+fastPBKDF2_SHA256 :: (ByteArrayAccess password, ByteArrayAccess salt, ByteArray out)
+                  => Parameters
+                  -> password
+                  -> salt
+                  -> out
+fastPBKDF2_SHA256 params password salt =
+    B.allocAndFreeze (outputLength params) $ \outPtr ->
+    B.withByteArray password $ \passPtr ->
+    B.withByteArray salt $ \saltPtr ->
+        c_cryptonite_fastpbkdf2_hmac_sha256
+            passPtr (fromIntegral $ B.length password)
+            saltPtr (fromIntegral $ B.length salt)
+            (fromIntegral $ iterCounts params)
+            outPtr (fromIntegral $ outputLength params)
+
+fastPBKDF2_SHA512 :: (ByteArrayAccess password, ByteArrayAccess salt, ByteArray out)
+                  => Parameters
+                  -> password
+                  -> salt
+                  -> out
+fastPBKDF2_SHA512 params password salt =
+    B.allocAndFreeze (outputLength params) $ \outPtr ->
+    B.withByteArray password $ \passPtr ->
+    B.withByteArray salt $ \saltPtr ->
+        c_cryptonite_fastpbkdf2_hmac_sha512
+            passPtr (fromIntegral $ B.length password)
+            saltPtr (fromIntegral $ B.length salt)
+            (fromIntegral $ iterCounts params)
+            outPtr (fromIntegral $ outputLength params)
+
+
+foreign import ccall unsafe "cryptonite_pbkdf2.h cryptonite_fastpbkdf2_hmac_sha1"
+    c_cryptonite_fastpbkdf2_hmac_sha1 :: Ptr Word8 -> CSize
+                                      -> Ptr Word8 -> CSize
+                                      -> CUInt
+                                      -> Ptr Word8 -> CSize
+                                      -> IO ()
+
+foreign import ccall unsafe "cryptonite_pbkdf2.h cryptonite_fastpbkdf2_hmac_sha256"
+    c_cryptonite_fastpbkdf2_hmac_sha256 :: Ptr Word8 -> CSize
+                                        -> Ptr Word8 -> CSize
+                                        -> CUInt
+                                        -> Ptr Word8 -> CSize
+                                        -> IO ()
+
+foreign import ccall unsafe "cryptonite_pbkdf2.h cryptonite_fastpbkdf2_hmac_sha512"
+    c_cryptonite_fastpbkdf2_hmac_sha512 :: Ptr Word8 -> CSize
+                                        -> Ptr Word8 -> CSize
+                                        -> CUInt
+                                        -> Ptr Word8 -> CSize
+                                        -> IO ()
diff --git a/Crypto/Number/Prime.hs b/Crypto/Number/Prime.hs
--- a/Crypto/Number/Prime.hs
+++ b/Crypto/Number/Prime.hs
@@ -27,6 +27,7 @@
 import Crypto.Number.ModArithmetic (expSafe)
 import Crypto.Random.Types
 import Crypto.Random.Probabilistic
+import Crypto.Error
 
 import Data.Bits
 
@@ -37,25 +38,48 @@
 isProbablyPrime :: Integer -> Bool
 isProbablyPrime !n
     | any (\p -> p `divides` n) (filter (< n) firstPrimes) = False
-    | primalityTestFermat 50 (n`div`2) n                   = primalityTestMillerRabin 30 n
+    | n >= 2 && n <= 2903                                  = True
+    | primalityTestFermat 50 (n `div` 2) n                 = primalityTestMillerRabin 30 n
     | otherwise                                            = False
 
--- | generate a prime number of the required bitsize
+-- | generate a prime number of the required bitsize (i.e. in the range
+--   [2^(b-1)+2^(b-2), 2^b)).
+--
+--   May throw a CryptoError_PrimeSizeInvalid if the requested size is less
+--   than 5 bits, as the smallest prime meeting these conditions is 29.
+--   This function requires that the two highest bits are set, so that when
+--   multiplied with another prime to create a key, it is guaranteed to be of
+--   the proper size.
 generatePrime :: MonadRandom m => Int -> m Integer
 generatePrime bits = do
-    sp <- generateParams bits (Just SetTwoHighest) True
-    return $ findPrimeFrom sp
+    if bits < 5 then
+        throwCryptoError $ CryptoFailed $ CryptoError_PrimeSizeInvalid
+    else do
+        sp <- generateParams bits (Just SetTwoHighest) True
+        let prime = findPrimeFrom sp
+        if prime < 1 `shiftL` bits then
+            return $ prime
+        else generatePrime bits
 
 -- | generate a prime number of the form 2p+1 where p is also prime.
 -- it is also knowed as a Sophie Germaine prime or safe prime.
 --
 -- The number of safe prime is significantly smaller to the number of prime,
 -- as such it shouldn't be used if this number is supposed to be kept safe.
+--
+-- May throw a CryptoError_PrimeSizeInvalid if the requested size is less than
+-- 6 bits, as the smallest safe prime with the two highest bits set is 59.
 generateSafePrime :: MonadRandom m => Int -> m Integer
 generateSafePrime bits = do
-    sp <- generateParams bits (Just SetTwoHighest) True
-    let p = findPrimeFromWith (\i -> isProbablyPrime (2*i+1)) (sp `div` 2)
-    return (2*p+1)
+    if bits < 6 then
+        throwCryptoError $ CryptoFailed $ CryptoError_PrimeSizeInvalid
+    else do
+        sp <- generateParams bits (Just SetTwoHighest) True
+        let p = findPrimeFromWith (\i -> isProbablyPrime (2*i+1)) (sp `div` 2)
+        let val = 2 * p + 1
+        if val < 1 `shiftL` bits then
+            return $ val
+        else generateSafePrime bits
 
 -- | find a prime from a starting point where the property hold.
 findPrimeFromWith :: (Integer -> Bool) -> Integer -> Integer
diff --git a/Crypto/OTP.hs b/Crypto/OTP.hs
new file mode 100644
--- /dev/null
+++ b/Crypto/OTP.hs
@@ -0,0 +1,179 @@
+{-# LANGUAGE ScopedTypeVariables #-}
+
+-- | One-time password implementation as defined by the
+-- <http://tools.ietf.org/html/rfc4226 HOTP> and <http://tools.ietf.org/html/rfc6238 TOTP>
+-- specifications.
+--
+-- Both implementations use a shared key between the client and the server. HOTP passwords
+-- are based on a synchronized counter. TOTP passwords use the same approach but calculate
+-- the counter as a number of time steps from the Unix epoch to the current time, thus
+-- requiring that both client and server have synchronized clocks.
+--
+-- Probably the best-known use of TOTP is in Google's 2-factor authentication.
+--
+-- The TOTP API doesn't depend on any particular time package, so the user needs to supply
+-- the current @OTPTime@ value, based on the system time. For example, using the @hourglass@
+-- package, you could create a @getOTPTime@ function:
+--
+-- >>> import Time.System
+-- >>> import Time.Types
+-- >>>
+-- >>> let getOTPTime = timeCurrent >>= \(Elapsed t) -> return (fromIntegral t :: OTPTime)
+--
+-- Or if you prefer, the @time@ package could be used:
+--
+-- >>> import Data.Time.Clock.POSIX
+-- >>>
+-- >>> let getOTPTime = getPOSIXTime >>= \t -> return (floor t :: OTPTime)
+--
+
+module Crypto.OTP
+    ( OTP
+    , OTPDigits (..)
+    , OTPTime
+    , hotp
+    , resynchronize
+    , totp
+    , totpVerify
+    , TOTPParams
+    , ClockSkew (..)
+    , defaultTOTPParams
+    , mkTOTPParams
+    )
+where
+
+import           Data.Bits (shiftL, shiftR, (.&.), (.|.))
+import           Data.ByteArray.Mapping (fromW64BE)
+import           Data.List (elemIndex)
+import           Data.Word
+import           Foreign.Storable (poke)
+import           Control.Monad (unless)
+import           Crypto.Hash (HashAlgorithm, SHA1(..))
+import           Crypto.MAC.HMAC
+import           Crypto.Internal.ByteArray (ByteArrayAccess, ByteArray, Bytes)
+import qualified Crypto.Internal.ByteArray as B
+
+
+-- | A one-time password which is a sequence of 4 to 9 digits.
+type OTP = Word32
+
+-- | The strength of the calculated HOTP value, namely
+-- the number of digits (between 4 and 9) in the extracted value.
+data OTPDigits = OTP4 | OTP5 | OTP6 | OTP7 | OTP8 | OTP9 deriving (Show)
+
+-- | An integral time value in seconds.
+type OTPTime = Word64
+
+hotp :: forall hash key. (HashAlgorithm hash, ByteArrayAccess key)
+    => hash
+    -> OTPDigits
+    -- ^ Number of digits in the HOTP value extracted from the calculated HMAC
+    -> key
+    -- ^ Shared secret between the client and server
+    -> Word64
+    -- ^ Counter value synchronized between the client and server
+    -> OTP
+    -- ^ The HOTP value
+hotp _ d k c = dt `mod` digitsPower d
+  where
+    mac = hmac k (fromW64BE c :: Bytes) :: HMAC hash
+    offset = fromIntegral (B.index mac (B.length mac - 1) .&. 0xf)
+    dt = (fromIntegral (B.index mac offset       .&. 0x7f) `shiftL` 24) .|.
+         (fromIntegral (B.index mac (offset + 1) .&. 0xff) `shiftL` 16) .|.
+         (fromIntegral (B.index mac (offset + 2) .&. 0xff) `shiftL`  8) .|.
+         fromIntegral  (B.index mac (offset + 3) .&. 0xff)
+
+-- | Attempt to resynchronize the server's counter value
+-- with the client, given a sequence of HOTP values.
+resynchronize :: (HashAlgorithm hash, ByteArrayAccess key)
+    => hash
+    -> OTPDigits
+    -> Word16
+    -- ^ The look-ahead window parameter. Up to this many values will
+    -- be calculated and checked against the value(s) submitted by the client
+    -> key
+    -- ^ The shared secret
+    -> Word64
+    -- ^ The current server counter value
+    -> (OTP, [OTP])
+    -- ^ The first OTP submitted by the client and a list of additional
+    -- sequential OTPs (which may be empty)
+    -> Maybe Word64
+    -- ^ The new counter value, synchronized with the client's current counter
+    -- or Nothing if the submitted OTP values didn't match anywhere within the window
+resynchronize h d s k c (p1, extras) = do
+    offBy <- fmap fromIntegral (elemIndex p1 range)
+    checkExtraOtps (c + offBy + 1) extras
+  where
+    checkExtraOtps ctr [] = Just ctr
+    checkExtraOtps ctr (p:ps)
+        | hotp h d k ctr /= p = Nothing
+        | otherwise           = checkExtraOtps (ctr + 1) ps
+
+    range = map (hotp h d k)[c..c + fromIntegral s]
+
+digitsPower :: OTPDigits -> Word32
+digitsPower OTP4 = 10000
+digitsPower OTP5 = 100000
+digitsPower OTP6 = 1000000
+digitsPower OTP7 = 10000000
+digitsPower OTP8 = 100000000
+digitsPower OTP9 = 1000000000
+
+
+data TOTPParams h = TP !h !OTPTime !Word16 !OTPDigits !ClockSkew deriving (Show)
+
+data ClockSkew = NoSkew | OneStep | TwoSteps | ThreeSteps | FourSteps deriving (Enum, Show)
+
+-- | The default TOTP configuration.
+defaultTOTPParams :: TOTPParams SHA1
+defaultTOTPParams = TP SHA1 0 30 OTP6 TwoSteps
+
+-- | Create a TOTP configuration with customized parameters.
+mkTOTPParams :: (HashAlgorithm hash)
+    => hash
+    -> OTPTime
+    -- ^ The T0 parameter in seconds. This is the Unix time from which to start
+    -- counting steps (default 0). Must be before the current time.
+    -> Word16
+    -- ^ The time step parameter X in seconds (default 30, maximum allowed 300)
+    -> OTPDigits
+    -- ^ Number of required digits in the OTP (default 6)
+    -> ClockSkew
+    -- ^ The number of time steps to check either side of the current value
+    -- to allow for clock skew between client and server and or delay in
+    -- submitting the value. The default is two time steps.
+    -> Either String (TOTPParams hash)
+mkTOTPParams h t0 x d skew = do
+    unless (x > 0) (Left "Time step must be greater than zero")
+    unless (x <= 300) (Left "Time step cannot be greater than 300 seconds")
+    return (TP h t0 x d skew)
+
+-- | Calculate a totp value for the given time.
+totp :: (HashAlgorithm hash, ByteArrayAccess key)
+    => TOTPParams hash
+    -> key
+    -- ^ The shared secret
+    -> OTPTime
+    -- ^ The time for which the OTP should be calculated.
+    -- This is usually the current time as returned by @Data.Time.Clock.POSIX.getPOSIXTime@
+    -> OTP
+totp (TP h t0 x d _) k now = hotp h d k (timeToCounter now t0 x)
+
+-- | Check a supplied TOTP value is valid for the given time,
+-- within the window defined by the skew parameter.
+totpVerify :: (HashAlgorithm hash, ByteArrayAccess key)
+    => TOTPParams hash
+    -> key
+    -> OTPTime
+    -> OTP
+    -> Bool
+totpVerify (TP h t0 x d skew) k now otp = otp `elem` map (hotp h d k) (range window [])
+  where
+    t = timeToCounter now t0 x
+    window = fromIntegral (fromEnum skew)
+    range 0 acc = t : acc
+    range n acc = range (n-1) ((t-n) : (t+n) : acc)
+
+timeToCounter :: Word64 -> Word64 -> Word16 -> Word64
+timeToCounter now t0 x = (now - t0) `div` fromIntegral x
diff --git a/Crypto/PubKey/Curve448.hs b/Crypto/PubKey/Curve448.hs
new file mode 100644
--- /dev/null
+++ b/Crypto/PubKey/Curve448.hs
@@ -0,0 +1,108 @@
+-- |
+-- Module      : Crypto.PubKey.Curve448
+-- License     : BSD-style
+-- Maintainer  : John Galt <jgalt@centromere.net>
+-- Stability   : experimental
+-- Portability : unknown
+--
+-- Curve448 support
+--
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE MagicHash #-}
+module Crypto.PubKey.Curve448
+    ( SecretKey
+    , PublicKey
+    , DhSecret
+    -- * Smart constructors
+    , dhSecret
+    , publicKey
+    , secretKey
+    -- * methods
+    , dh
+    , toPublic
+    , generateSecretKey
+    ) where
+
+import           Data.Word
+import           Foreign.Ptr
+import           GHC.Ptr
+
+import           Crypto.Error
+import           Crypto.Random
+import           Crypto.Internal.Compat
+import           Crypto.Internal.Imports
+import           Crypto.Internal.ByteArray (ByteArrayAccess, ScrubbedBytes, Bytes, withByteArray)
+import qualified Crypto.Internal.ByteArray as B
+
+-- | A Curve448 Secret key
+newtype SecretKey = SecretKey ScrubbedBytes
+    deriving (Show,Eq,ByteArrayAccess,NFData)
+
+-- | A Curve448 public key
+newtype PublicKey = PublicKey Bytes
+    deriving (Show,Eq,ByteArrayAccess,NFData)
+
+-- | A Curve448 Diffie Hellman secret related to a
+-- public key and a secret key.
+newtype DhSecret = DhSecret ScrubbedBytes
+    deriving (Show,Eq,ByteArrayAccess,NFData)
+
+-- | Try to build a public key from a bytearray
+publicKey :: ByteArrayAccess bs => bs -> CryptoFailable PublicKey
+publicKey bs
+    | B.length bs == x448_bytes = CryptoPassed $ PublicKey $ B.copyAndFreeze bs (\_ -> return ())
+    | otherwise                 = CryptoFailed CryptoError_PublicKeySizeInvalid
+
+-- | Try to build a secret key from a bytearray
+secretKey :: ByteArrayAccess bs => bs -> CryptoFailable SecretKey
+secretKey bs
+    | B.length bs == x448_bytes = unsafeDoIO $
+        withByteArray bs $ \inp -> do
+            valid <- isValidPtr inp
+            if valid
+                then (CryptoPassed . SecretKey) <$> B.copy bs (\_ -> return ())
+                else return $ CryptoFailed CryptoError_SecretKeyStructureInvalid
+    | otherwise = CryptoFailed CryptoError_SecretKeySizeInvalid
+  where
+        isValidPtr :: Ptr Word8 -> IO Bool
+        isValidPtr _ =
+            return True
+{-# NOINLINE secretKey #-}
+
+-- | Create a DhSecret from a bytearray object
+dhSecret :: ByteArrayAccess b => b -> CryptoFailable DhSecret
+dhSecret bs
+    | B.length bs == x448_bytes = CryptoPassed $ DhSecret $ B.copyAndFreeze bs (\_ -> return ())
+    | otherwise                 = CryptoFailed CryptoError_SharedSecretSizeInvalid
+
+-- | Compute the Diffie Hellman secret from a public key and a secret key
+dh :: PublicKey -> SecretKey -> DhSecret
+dh (PublicKey pub) (SecretKey sec) = DhSecret <$>
+    B.allocAndFreeze x448_bytes $ \result ->
+    withByteArray sec           $ \psec   ->
+    withByteArray pub           $ \ppub   ->
+        ccryptonite_ed448 result psec ppub
+{-# NOINLINE dh #-}
+
+-- | Create a public key from a secret key
+toPublic :: SecretKey -> PublicKey
+toPublic (SecretKey sec) = PublicKey <$>
+    B.allocAndFreeze x448_bytes     $ \result ->
+    withByteArray sec               $ \psec   ->
+        ccryptonite_ed448 result psec basePoint
+  where
+        basePoint = Ptr "\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"#
+{-# NOINLINE toPublic #-}
+
+-- | Generate a secret key.
+generateSecretKey :: MonadRandom m => m SecretKey
+generateSecretKey = SecretKey <$> getRandomBytes x448_bytes
+
+x448_bytes :: Int
+x448_bytes = 448 `quot` 8
+
+foreign import ccall "cryptonite_x448"
+    ccryptonite_ed448 :: Ptr Word8 -- ^ public
+                      -> Ptr Word8 -- ^ secret
+                      -> Ptr Word8 -- ^ basepoint
+                      -> IO ()
diff --git a/Crypto/PubKey/Ed448.hs b/Crypto/PubKey/Ed448.hs
--- a/Crypto/PubKey/Ed448.hs
+++ b/Crypto/PubKey/Ed448.hs
@@ -7,102 +7,14 @@
 --
 -- Ed448 support
 --
+-- /Functions and types exported here will be DEPRECATED in a future version./
+-- For Diffie-Hellman over curve448 please use module "Crypto.PubKey.Curve448"
+-- instead.
+--
 {-# LANGUAGE GeneralizedNewtypeDeriving #-}
 {-# LANGUAGE MagicHash #-}
 module Crypto.PubKey.Ed448
-    ( SecretKey
-    , PublicKey
-    , DhSecret
-    -- * Smart constructors
-    , dhSecret
-    , publicKey
-    , secretKey
-    -- * methods
-    , dh
-    , toPublic
-    , generateSecretKey
+    ( module Crypto.PubKey.Curve448
     ) where
 
-import           Data.Word
-import           Foreign.Ptr
-import           GHC.Ptr
-
-import           Crypto.Error
-import           Crypto.Random
-import           Crypto.Internal.Compat
-import           Crypto.Internal.Imports
-import           Crypto.Internal.ByteArray (ByteArrayAccess, ScrubbedBytes, Bytes, withByteArray)
-import qualified Crypto.Internal.ByteArray as B
-
--- | A Ed448 Secret key
-newtype SecretKey = SecretKey ScrubbedBytes
-    deriving (Show,Eq,ByteArrayAccess,NFData)
-
--- | A Ed448 public key
-newtype PublicKey = PublicKey Bytes
-    deriving (Show,Eq,ByteArrayAccess,NFData)
-
--- | A Ed448 Diffie Hellman secret related to a
--- public key and a secret key.
-newtype DhSecret = DhSecret ScrubbedBytes
-    deriving (Show,Eq,ByteArrayAccess,NFData)
-
--- | Try to build a public key from a bytearray
-publicKey :: ByteArrayAccess bs => bs -> CryptoFailable PublicKey
-publicKey bs
-    | B.length bs == x448_bytes = CryptoPassed $ PublicKey $ B.copyAndFreeze bs (\_ -> return ())
-    | otherwise                 = CryptoFailed CryptoError_PublicKeySizeInvalid
-
--- | Try to build a secret key from a bytearray
-secretKey :: ByteArrayAccess bs => bs -> CryptoFailable SecretKey
-secretKey bs
-    | B.length bs == x448_bytes = unsafeDoIO $
-        withByteArray bs $ \inp -> do
-            valid <- isValidPtr inp
-            if valid
-                then (CryptoPassed . SecretKey) <$> B.copy bs (\_ -> return ())
-                else return $ CryptoFailed CryptoError_SecretKeyStructureInvalid
-    | otherwise = CryptoFailed CryptoError_SecretKeySizeInvalid
-  where
-        isValidPtr :: Ptr Word8 -> IO Bool
-        isValidPtr _ =
-            return True
-{-# NOINLINE secretKey #-}
-
--- | Create a DhSecret from a bytearray object
-dhSecret :: ByteArrayAccess b => b -> CryptoFailable DhSecret
-dhSecret bs
-    | B.length bs == x448_bytes = CryptoPassed $ DhSecret $ B.copyAndFreeze bs (\_ -> return ())
-    | otherwise                 = CryptoFailed CryptoError_SharedSecretSizeInvalid
-
--- | Compute the Diffie Hellman secret from a public key and a secret key
-dh :: PublicKey -> SecretKey -> DhSecret
-dh (PublicKey pub) (SecretKey sec) = DhSecret <$>
-    B.allocAndFreeze x448_bytes $ \result ->
-    withByteArray sec           $ \psec   ->
-    withByteArray pub           $ \ppub   ->
-        ccryptonite_ed448 result psec ppub
-{-# NOINLINE dh #-}
-
--- | Create a public key from a secret key
-toPublic :: SecretKey -> PublicKey
-toPublic (SecretKey sec) = PublicKey <$>
-    B.allocAndFreeze x448_bytes     $ \result ->
-    withByteArray sec               $ \psec   ->
-        ccryptonite_ed448 result psec basePoint
-  where
-        basePoint = Ptr "\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"#
-{-# NOINLINE toPublic #-}
-
--- | Generate a secret key.
-generateSecretKey :: MonadRandom m => m SecretKey
-generateSecretKey = SecretKey <$> getRandomBytes x448_bytes
-
-x448_bytes :: Int
-x448_bytes = 448 `quot` 8
-
-foreign import ccall "cryptonite_x448"
-    ccryptonite_ed448 :: Ptr Word8 -- ^ public
-                      -> Ptr Word8 -- ^ secret
-                      -> Ptr Word8 -- ^ basepoint
-                      -> IO ()
+import Crypto.PubKey.Curve448
diff --git a/cbits/argon2/argon2.c b/cbits/argon2/argon2.c
new file mode 100644
--- /dev/null
+++ b/cbits/argon2/argon2.c
@@ -0,0 +1,142 @@
+/*
+ * Argon2 reference source code package - reference C implementations
+ *
+ * Copyright 2015
+ * Daniel Dinu, Dmitry Khovratovich, Jean-Philippe Aumasson, and Samuel Neves
+ *
+ * You may use this work under the terms of a Creative Commons CC0 1.0 
+ * License/Waiver or the Apache Public License 2.0, at your option. The terms of
+ * these licenses can be found at:
+ *
+ * - CC0 1.0 Universal : http://creativecommons.org/publicdomain/zero/1.0
+ * - Apache 2.0        : http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * You should have received a copy of both of these licenses along with this
+ * software. If not, they may be obtained at the above URLs.
+ */
+
+#include <string.h>
+#include <stdlib.h>
+#include <stdio.h>
+
+#include "argon2.h"
+#include "core.c"
+
+int cryptonite_argon2_ctx(argon2_context *context, argon2_type type) {
+    /* 1. Validate all inputs */
+    int result = validate_inputs(context);
+    uint32_t memory_blocks, segment_length;
+    argon2_instance_t instance;
+
+    if (ARGON2_OK != result) {
+        return result;
+    }
+
+    if (Argon2_d != type && Argon2_i != type && Argon2_id != type) {
+        return ARGON2_INCORRECT_TYPE;
+    }
+
+    /* 2. Align memory size */
+    /* Minimum memory_blocks = 8L blocks, where L is the number of lanes */
+    memory_blocks = context->m_cost;
+
+    if (memory_blocks < 2 * ARGON2_SYNC_POINTS * context->lanes) {
+        memory_blocks = 2 * ARGON2_SYNC_POINTS * context->lanes;
+    }
+
+    segment_length = memory_blocks / (context->lanes * ARGON2_SYNC_POINTS);
+    /* Ensure that all segments have equal length */
+    memory_blocks = segment_length * (context->lanes * ARGON2_SYNC_POINTS);
+
+    instance.version = context->version;
+    instance.memory = NULL;
+    instance.passes = context->t_cost;
+    instance.memory_blocks = memory_blocks;
+    instance.segment_length = segment_length;
+    instance.lane_length = segment_length * ARGON2_SYNC_POINTS;
+    instance.lanes = context->lanes;
+    instance.threads = context->threads;
+    instance.type = type;
+
+    /* 3. Initialization: Hashing inputs, allocating memory, filling first
+     * blocks
+     */
+    result = initialize(&instance, context);
+
+    if (ARGON2_OK != result) {
+        return result;
+    }
+
+    /* 4. Filling memory */
+    result = fill_memory_blocks(&instance);
+
+    if (ARGON2_OK != result) {
+        return result;
+    }
+    /* 5. Finalization */
+    finalize(context, &instance);
+
+    return ARGON2_OK;
+}
+
+int cryptonite_argon2_hash(const uint32_t t_cost, const uint32_t m_cost,
+                const uint32_t parallelism, const void *pwd,
+                const size_t pwdlen, const void *salt, const size_t saltlen,
+                void *hash, const size_t hashlen, argon2_type type,
+                const uint32_t version){
+
+    argon2_context context;
+    int result;
+    uint8_t *out;
+
+    if (hashlen > ARGON2_MAX_OUTLEN) {
+        return ARGON2_OUTPUT_TOO_LONG;
+    }
+
+    if (hashlen < ARGON2_MIN_OUTLEN) {
+        return ARGON2_OUTPUT_TOO_SHORT;
+    }
+
+    out = malloc(hashlen);
+    if (!out) {
+        return ARGON2_MEMORY_ALLOCATION_ERROR;
+    }
+
+    context.out = (uint8_t *)out;
+    context.outlen = (uint32_t)hashlen;
+    context.pwd = CONST_CAST(uint8_t *)pwd;
+    context.pwdlen = (uint32_t)pwdlen;
+    context.salt = CONST_CAST(uint8_t *)salt;
+    context.saltlen = (uint32_t)saltlen;
+    context.secret = NULL;
+    context.secretlen = 0;
+    context.ad = NULL;
+    context.adlen = 0;
+    context.t_cost = t_cost;
+    context.m_cost = m_cost;
+    context.lanes = parallelism;
+    context.threads = parallelism;
+    context.allocate_cbk = NULL;
+    context.free_cbk = NULL;
+    context.flags = ARGON2_DEFAULT_FLAGS;
+    context.version = version;
+
+    result = cryptonite_argon2_ctx(&context, type);
+
+    if (result != ARGON2_OK) {
+        clear_internal_memory(out, hashlen);
+        free(out);
+        return result;
+    }
+
+    /* if raw hash requested, write it */
+    if (hash) {
+        memcpy(hash, out, hashlen);
+    }
+
+    clear_internal_memory(out, hashlen);
+    free(out);
+
+    return ARGON2_OK;
+}
+
diff --git a/cbits/argon2/argon2.h b/cbits/argon2/argon2.h
new file mode 100644
--- /dev/null
+++ b/cbits/argon2/argon2.h
@@ -0,0 +1,267 @@
+/*
+ * Argon2 reference source code package - reference C implementations
+ *
+ * Copyright 2015
+ * Daniel Dinu, Dmitry Khovratovich, Jean-Philippe Aumasson, and Samuel Neves
+ *
+ * You may use this work under the terms of a Creative Commons CC0 1.0 
+ * License/Waiver or the Apache Public License 2.0, at your option. The terms of
+ * these licenses can be found at:
+ *
+ * - CC0 1.0 Universal : http://creativecommons.org/publicdomain/zero/1.0
+ * - Apache 2.0        : http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * You should have received a copy of both of these licenses along with this
+ * software. If not, they may be obtained at the above URLs.
+ */
+
+#ifndef ARGON2_H
+#define ARGON2_H
+
+#include <stdint.h>
+#include <stddef.h>
+#include <limits.h>
+
+#if defined(__cplusplus)
+extern "C" {
+#endif
+
+/* Symbols visibility control */
+#ifdef A2_VISCTL
+#define ARGON2_PUBLIC __attribute__((visibility("default")))
+#elif _MSC_VER
+#define ARGON2_PUBLIC __declspec(dllexport)
+#else
+#define ARGON2_PUBLIC
+#endif
+
+/*
+ * Argon2 input parameter restrictions
+ */
+
+/* Minimum and maximum number of lanes (degree of parallelism) */
+#define ARGON2_MIN_LANES UINT32_C(1)
+#define ARGON2_MAX_LANES UINT32_C(0xFFFFFF)
+
+/* Minimum and maximum number of threads */
+#define ARGON2_MIN_THREADS UINT32_C(1)
+#define ARGON2_MAX_THREADS UINT32_C(0xFFFFFF)
+
+/* Number of synchronization points between lanes per pass */
+#define ARGON2_SYNC_POINTS UINT32_C(4)
+
+/* Minimum and maximum digest size in bytes */
+#define ARGON2_MIN_OUTLEN UINT32_C(4)
+#define ARGON2_MAX_OUTLEN UINT32_C(0xFFFFFFFF)
+
+/* Minimum and maximum number of memory blocks (each of BLOCK_SIZE bytes) */
+#define ARGON2_MIN_MEMORY (2 * ARGON2_SYNC_POINTS) /* 2 blocks per slice */
+
+#define ARGON2_MIN(a, b) ((a) < (b) ? (a) : (b))
+/* Max memory size is addressing-space/2, topping at 2^32 blocks (4 TB) */
+#define ARGON2_MAX_MEMORY_BITS                                                 \
+    ARGON2_MIN(UINT32_C(32), (sizeof(void *) * CHAR_BIT - 10 - 1))
+#define ARGON2_MAX_MEMORY                                                      \
+    ARGON2_MIN(UINT32_C(0xFFFFFFFF), UINT64_C(1) << ARGON2_MAX_MEMORY_BITS)
+
+/* Minimum and maximum number of passes */
+#define ARGON2_MIN_TIME UINT32_C(1)
+#define ARGON2_MAX_TIME UINT32_C(0xFFFFFFFF)
+
+/* Minimum and maximum password length in bytes */
+#define ARGON2_MIN_PWD_LENGTH UINT32_C(0)
+#define ARGON2_MAX_PWD_LENGTH UINT32_C(0xFFFFFFFF)
+
+/* Minimum and maximum associated data length in bytes */
+#define ARGON2_MIN_AD_LENGTH UINT32_C(0)
+#define ARGON2_MAX_AD_LENGTH UINT32_C(0xFFFFFFFF)
+
+/* Minimum and maximum salt length in bytes */
+#define ARGON2_MIN_SALT_LENGTH UINT32_C(8)
+#define ARGON2_MAX_SALT_LENGTH UINT32_C(0xFFFFFFFF)
+
+/* Minimum and maximum key length in bytes */
+#define ARGON2_MIN_SECRET UINT32_C(0)
+#define ARGON2_MAX_SECRET UINT32_C(0xFFFFFFFF)
+
+/* Flags to determine which fields are securely wiped (default = no wipe). */
+#define ARGON2_DEFAULT_FLAGS UINT32_C(0)
+#define ARGON2_FLAG_CLEAR_PASSWORD (UINT32_C(1) << 0)
+#define ARGON2_FLAG_CLEAR_SECRET (UINT32_C(1) << 1)
+
+/* Global flag to determine if we are wiping internal memory buffers. This flag
+ * is defined in core.c and deafults to 1 (wipe internal memory). */
+//extern int FLAG_clear_internal_memory;
+
+/* Error codes */
+typedef enum Argon2_ErrorCodes {
+    ARGON2_OK = 0,
+
+    ARGON2_OUTPUT_PTR_NULL = -1,
+
+    ARGON2_OUTPUT_TOO_SHORT = -2,
+    ARGON2_OUTPUT_TOO_LONG = -3,
+
+    ARGON2_PWD_TOO_SHORT = -4,
+    ARGON2_PWD_TOO_LONG = -5,
+
+    ARGON2_SALT_TOO_SHORT = -6,
+    ARGON2_SALT_TOO_LONG = -7,
+
+    ARGON2_AD_TOO_SHORT = -8,
+    ARGON2_AD_TOO_LONG = -9,
+
+    ARGON2_SECRET_TOO_SHORT = -10,
+    ARGON2_SECRET_TOO_LONG = -11,
+
+    ARGON2_TIME_TOO_SMALL = -12,
+    ARGON2_TIME_TOO_LARGE = -13,
+
+    ARGON2_MEMORY_TOO_LITTLE = -14,
+    ARGON2_MEMORY_TOO_MUCH = -15,
+
+    ARGON2_LANES_TOO_FEW = -16,
+    ARGON2_LANES_TOO_MANY = -17,
+
+    ARGON2_PWD_PTR_MISMATCH = -18,    /* NULL ptr with non-zero length */
+    ARGON2_SALT_PTR_MISMATCH = -19,   /* NULL ptr with non-zero length */
+    ARGON2_SECRET_PTR_MISMATCH = -20, /* NULL ptr with non-zero length */
+    ARGON2_AD_PTR_MISMATCH = -21,     /* NULL ptr with non-zero length */
+
+    ARGON2_MEMORY_ALLOCATION_ERROR = -22,
+
+    ARGON2_FREE_MEMORY_CBK_NULL = -23,
+    ARGON2_ALLOCATE_MEMORY_CBK_NULL = -24,
+
+    ARGON2_INCORRECT_PARAMETER = -25,
+    ARGON2_INCORRECT_TYPE = -26,
+
+    ARGON2_OUT_PTR_MISMATCH = -27,
+
+    ARGON2_THREADS_TOO_FEW = -28,
+    ARGON2_THREADS_TOO_MANY = -29,
+
+    ARGON2_MISSING_ARGS = -30,
+
+    ARGON2_ENCODING_FAIL = -31,
+
+    ARGON2_DECODING_FAIL = -32,
+
+    ARGON2_THREAD_FAIL = -33,
+
+    ARGON2_DECODING_LENGTH_FAIL = -34,
+
+    ARGON2_VERIFY_MISMATCH = -35
+} argon2_error_codes;
+
+/* Memory allocator types --- for external allocation */
+typedef int (*allocate_fptr)(uint8_t **memory, size_t bytes_to_allocate);
+typedef void (*deallocate_fptr)(uint8_t *memory, size_t bytes_to_allocate);
+
+/* Argon2 external data structures */
+
+/*
+ *****
+ * Context: structure to hold Argon2 inputs:
+ *  output array and its length,
+ *  password and its length,
+ *  salt and its length,
+ *  secret and its length,
+ *  associated data and its length,
+ *  number of passes, amount of used memory (in KBytes, can be rounded up a bit)
+ *  number of parallel threads that will be run.
+ * All the parameters above affect the output hash value.
+ * Additionally, two function pointers can be provided to allocate and
+ * deallocate the memory (if NULL, memory will be allocated internally).
+ * Also, three flags indicate whether to erase password, secret as soon as they
+ * are pre-hashed (and thus not needed anymore), and the entire memory
+ *****
+ * Simplest situation: you have output array out[8], password is stored in
+ * pwd[32], salt is stored in salt[16], you do not have keys nor associated
+ * data. You need to spend 1 GB of RAM and you run 5 passes of Argon2d with
+ * 4 parallel lanes.
+ * You want to erase the password, but you're OK with last pass not being
+ * erased. You want to use the default memory allocator.
+ * Then you initialize:
+ Argon2_Context(out,8,pwd,32,salt,16,NULL,0,NULL,0,5,1<<20,4,4,NULL,NULL,true,false,false,false)
+ */
+typedef struct Argon2_Context {
+    uint8_t *out;    /* output array */
+    uint32_t outlen; /* digest length */
+
+    uint8_t *pwd;    /* password array */
+    uint32_t pwdlen; /* password length */
+
+    uint8_t *salt;    /* salt array */
+    uint32_t saltlen; /* salt length */
+
+    uint8_t *secret;    /* key array */
+    uint32_t secretlen; /* key length */
+
+    uint8_t *ad;    /* associated data array */
+    uint32_t adlen; /* associated data length */
+
+    uint32_t t_cost;  /* number of passes */
+    uint32_t m_cost;  /* amount of memory requested (KB) */
+    uint32_t lanes;   /* number of lanes */
+    uint32_t threads; /* maximum number of threads */
+
+    uint32_t version; /* version number */
+
+    allocate_fptr allocate_cbk; /* pointer to memory allocator */
+    deallocate_fptr free_cbk;   /* pointer to memory deallocator */
+
+    uint32_t flags; /* array of bool options */
+} argon2_context;
+
+/* Argon2 primitive type */
+typedef enum Argon2_type {
+  Argon2_d = 0,
+  Argon2_i = 1,
+  Argon2_id = 2
+} argon2_type;
+
+/* Version of the algorithm */
+typedef enum Argon2_version {
+    ARGON2_VERSION_10 = 0x10,
+    ARGON2_VERSION_13 = 0x13,
+    ARGON2_VERSION_NUMBER = ARGON2_VERSION_13
+} argon2_version;
+
+/*
+ * Function that performs memory-hard hashing with certain degree of parallelism
+ * @param  context  Pointer to the Argon2 internal structure
+ * @return Error code if smth is wrong, ARGON2_OK otherwise
+ */
+ARGON2_PUBLIC int cryptonite_argon2_ctx(argon2_context *context, argon2_type type);
+
+/**
+ * Hashes a password with Argon2i, producing a raw hash by allocating memory at
+ * @hash
+ * @param t_cost Number of iterations
+ * @param m_cost Sets memory usage to m_cost kibibytes
+ * @param parallelism Number of threads and compute lanes
+ * @param pwd Pointer to password
+ * @param pwdlen Password size in bytes
+ * @param salt Pointer to salt
+ * @param saltlen Salt size in bytes
+ * @param hash Buffer where to write the raw hash - updated by the function
+ * @param hashlen Desired length of the hash in bytes
+ * @pre   Different parallelism levels will give different results
+ * @pre   Returns ARGON2_OK if successful
+ */
+
+/* generic function underlying the above ones */
+ARGON2_PUBLIC int cryptonite_argon2_hash(const uint32_t t_cost, const uint32_t m_cost,
+                              const uint32_t parallelism, const void *pwd,
+                              const size_t pwdlen, const void *salt,
+                              const size_t saltlen, void *hash,
+                              const size_t hashlen, argon2_type type,
+                              const uint32_t version);
+
+
+#if defined(__cplusplus)
+}
+#endif
+
+#endif
diff --git a/cbits/argon2/blamka-round-opt.h b/cbits/argon2/blamka-round-opt.h
new file mode 100644
--- /dev/null
+++ b/cbits/argon2/blamka-round-opt.h
@@ -0,0 +1,180 @@
+/*
+ * Argon2 reference source code package - reference C implementations
+ *
+ * Copyright 2015
+ * Daniel Dinu, Dmitry Khovratovich, Jean-Philippe Aumasson, and Samuel Neves
+ *
+ * You may use this work under the terms of a Creative Commons CC0 1.0 
+ * License/Waiver or the Apache Public License 2.0, at your option. The terms of
+ * these licenses can be found at:
+ *
+ * - CC0 1.0 Universal : http://creativecommons.org/publicdomain/zero/1.0
+ * - Apache 2.0        : http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * You should have received a copy of both of these licenses along with this
+ * software. If not, they may be obtained at the above URLs.
+ */
+
+#ifndef BLAKE_ROUND_MKA_OPT_H
+#define BLAKE_ROUND_MKA_OPT_H
+
+#include "blake2-impl.h"
+
+#include <emmintrin.h>
+#if defined(__SSSE3__)
+#include <tmmintrin.h> /* for _mm_shuffle_epi8 and _mm_alignr_epi8 */
+#endif
+
+#if defined(__XOP__) && (defined(__GNUC__) || defined(__clang__))
+#include <x86intrin.h>
+#endif
+
+#if !defined(__XOP__)
+#if defined(__SSSE3__)
+#define r16                                                                    \
+    (_mm_setr_epi8(2, 3, 4, 5, 6, 7, 0, 1, 10, 11, 12, 13, 14, 15, 8, 9))
+#define r24                                                                    \
+    (_mm_setr_epi8(3, 4, 5, 6, 7, 0, 1, 2, 11, 12, 13, 14, 15, 8, 9, 10))
+#define _mm_roti_epi64(x, c)                                                   \
+    (-(c) == 32)                                                               \
+        ? _mm_shuffle_epi32((x), _MM_SHUFFLE(2, 3, 0, 1))                      \
+        : (-(c) == 24)                                                         \
+              ? _mm_shuffle_epi8((x), r24)                                     \
+              : (-(c) == 16)                                                   \
+                    ? _mm_shuffle_epi8((x), r16)                               \
+                    : (-(c) == 63)                                             \
+                          ? _mm_xor_si128(_mm_srli_epi64((x), -(c)),           \
+                                          _mm_add_epi64((x), (x)))             \
+                          : _mm_xor_si128(_mm_srli_epi64((x), -(c)),           \
+                                          _mm_slli_epi64((x), 64 - (-(c))))
+#else /* defined(__SSE2__) */
+#define _mm_roti_epi64(r, c)                                                   \
+    _mm_xor_si128(_mm_srli_epi64((r), -(c)), _mm_slli_epi64((r), 64 - (-(c))))
+#endif
+#else
+#endif
+
+static BLAKE2_INLINE __m128i fBlaMka(__m128i x, __m128i y) {
+    const __m128i z = _mm_mul_epu32(x, y);
+    return _mm_add_epi64(_mm_add_epi64(x, y), _mm_add_epi64(z, z));
+}
+
+#define G1(A0, B0, C0, D0, A1, B1, C1, D1)                                     \
+    do {                                                                       \
+        A0 = fBlaMka(A0, B0);                                                  \
+        A1 = fBlaMka(A1, B1);                                                  \
+                                                                               \
+        D0 = _mm_xor_si128(D0, A0);                                            \
+        D1 = _mm_xor_si128(D1, A1);                                            \
+                                                                               \
+        D0 = _mm_roti_epi64(D0, -32);                                          \
+        D1 = _mm_roti_epi64(D1, -32);                                          \
+                                                                               \
+        C0 = fBlaMka(C0, D0);                                                  \
+        C1 = fBlaMka(C1, D1);                                                  \
+                                                                               \
+        B0 = _mm_xor_si128(B0, C0);                                            \
+        B1 = _mm_xor_si128(B1, C1);                                            \
+                                                                               \
+        B0 = _mm_roti_epi64(B0, -24);                                          \
+        B1 = _mm_roti_epi64(B1, -24);                                          \
+    } while ((void)0, 0)
+
+#define G2(A0, B0, C0, D0, A1, B1, C1, D1)                                     \
+    do {                                                                       \
+        A0 = fBlaMka(A0, B0);                                                  \
+        A1 = fBlaMka(A1, B1);                                                  \
+                                                                               \
+        D0 = _mm_xor_si128(D0, A0);                                            \
+        D1 = _mm_xor_si128(D1, A1);                                            \
+                                                                               \
+        D0 = _mm_roti_epi64(D0, -16);                                          \
+        D1 = _mm_roti_epi64(D1, -16);                                          \
+                                                                               \
+        C0 = fBlaMka(C0, D0);                                                  \
+        C1 = fBlaMka(C1, D1);                                                  \
+                                                                               \
+        B0 = _mm_xor_si128(B0, C0);                                            \
+        B1 = _mm_xor_si128(B1, C1);                                            \
+                                                                               \
+        B0 = _mm_roti_epi64(B0, -63);                                          \
+        B1 = _mm_roti_epi64(B1, -63);                                          \
+    } while ((void)0, 0)
+
+#if defined(__SSSE3__)
+#define DIAGONALIZE(A0, B0, C0, D0, A1, B1, C1, D1)                            \
+    do {                                                                       \
+        __m128i t0 = _mm_alignr_epi8(B1, B0, 8);                               \
+        __m128i t1 = _mm_alignr_epi8(B0, B1, 8);                               \
+        B0 = t0;                                                               \
+        B1 = t1;                                                               \
+                                                                               \
+        t0 = C0;                                                               \
+        C0 = C1;                                                               \
+        C1 = t0;                                                               \
+                                                                               \
+        t0 = _mm_alignr_epi8(D1, D0, 8);                                       \
+        t1 = _mm_alignr_epi8(D0, D1, 8);                                       \
+        D0 = t1;                                                               \
+        D1 = t0;                                                               \
+    } while ((void)0, 0)
+
+#define UNDIAGONALIZE(A0, B0, C0, D0, A1, B1, C1, D1)                          \
+    do {                                                                       \
+        __m128i t0 = _mm_alignr_epi8(B0, B1, 8);                               \
+        __m128i t1 = _mm_alignr_epi8(B1, B0, 8);                               \
+        B0 = t0;                                                               \
+        B1 = t1;                                                               \
+                                                                               \
+        t0 = C0;                                                               \
+        C0 = C1;                                                               \
+        C1 = t0;                                                               \
+                                                                               \
+        t0 = _mm_alignr_epi8(D0, D1, 8);                                       \
+        t1 = _mm_alignr_epi8(D1, D0, 8);                                       \
+        D0 = t1;                                                               \
+        D1 = t0;                                                               \
+    } while ((void)0, 0)
+#else /* SSE2 */
+#define DIAGONALIZE(A0, B0, C0, D0, A1, B1, C1, D1)                            \
+    do {                                                                       \
+        __m128i t0 = D0;                                                       \
+        __m128i t1 = B0;                                                       \
+        D0 = C0;                                                               \
+        C0 = C1;                                                               \
+        C1 = D0;                                                               \
+        D0 = _mm_unpackhi_epi64(D1, _mm_unpacklo_epi64(t0, t0));               \
+        D1 = _mm_unpackhi_epi64(t0, _mm_unpacklo_epi64(D1, D1));               \
+        B0 = _mm_unpackhi_epi64(B0, _mm_unpacklo_epi64(B1, B1));               \
+        B1 = _mm_unpackhi_epi64(B1, _mm_unpacklo_epi64(t1, t1));               \
+    } while ((void)0, 0)
+
+#define UNDIAGONALIZE(A0, B0, C0, D0, A1, B1, C1, D1)                          \
+    do {                                                                       \
+        __m128i t0, t1;                                                        \
+        t0 = C0;                                                               \
+        C0 = C1;                                                               \
+        C1 = t0;                                                               \
+        t0 = B0;                                                               \
+        t1 = D0;                                                               \
+        B0 = _mm_unpackhi_epi64(B1, _mm_unpacklo_epi64(B0, B0));               \
+        B1 = _mm_unpackhi_epi64(t0, _mm_unpacklo_epi64(B1, B1));               \
+        D0 = _mm_unpackhi_epi64(D0, _mm_unpacklo_epi64(D1, D1));               \
+        D1 = _mm_unpackhi_epi64(D1, _mm_unpacklo_epi64(t1, t1));               \
+    } while ((void)0, 0)
+#endif
+
+#define BLAKE2_ROUND(A0, A1, B0, B1, C0, C1, D0, D1)                           \
+    do {                                                                       \
+        G1(A0, B0, C0, D0, A1, B1, C1, D1);                                    \
+        G2(A0, B0, C0, D0, A1, B1, C1, D1);                                    \
+                                                                               \
+        DIAGONALIZE(A0, B0, C0, D0, A1, B1, C1, D1);                           \
+                                                                               \
+        G1(A0, B0, C0, D0, A1, B1, C1, D1);                                    \
+        G2(A0, B0, C0, D0, A1, B1, C1, D1);                                    \
+                                                                               \
+        UNDIAGONALIZE(A0, B0, C0, D0, A1, B1, C1, D1);                         \
+    } while ((void)0, 0)
+
+#endif
diff --git a/cbits/argon2/blamka-round-ref.h b/cbits/argon2/blamka-round-ref.h
new file mode 100644
--- /dev/null
+++ b/cbits/argon2/blamka-round-ref.h
@@ -0,0 +1,56 @@
+/*
+ * Argon2 reference source code package - reference C implementations
+ *
+ * Copyright 2015
+ * Daniel Dinu, Dmitry Khovratovich, Jean-Philippe Aumasson, and Samuel Neves
+ *
+ * You may use this work under the terms of a Creative Commons CC0 1.0 
+ * License/Waiver or the Apache Public License 2.0, at your option. The terms of
+ * these licenses can be found at:
+ *
+ * - CC0 1.0 Universal : http://creativecommons.org/publicdomain/zero/1.0
+ * - Apache 2.0        : http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * You should have received a copy of both of these licenses along with this
+ * software. If not, they may be obtained at the above URLs.
+ */
+
+#ifndef BLAKE_ROUND_MKA_H
+#define BLAKE_ROUND_MKA_H
+
+#include "blake2.h"
+#include "blake2-impl.h"
+
+/*designed by the Lyra PHC team */
+static BLAKE2_INLINE uint64_t fBlaMka(uint64_t x, uint64_t y) {
+    const uint64_t m = UINT64_C(0xFFFFFFFF);
+    const uint64_t xy = (x & m) * (y & m);
+    return x + y + 2 * xy;
+}
+
+#define G(a, b, c, d)                                                          \
+    do {                                                                       \
+        a = fBlaMka(a, b);                                                     \
+        d = rotr64(d ^ a, 32);                                                 \
+        c = fBlaMka(c, d);                                                     \
+        b = rotr64(b ^ c, 24);                                                 \
+        a = fBlaMka(a, b);                                                     \
+        d = rotr64(d ^ a, 16);                                                 \
+        c = fBlaMka(c, d);                                                     \
+        b = rotr64(b ^ c, 63);                                                 \
+    } while ((void)0, 0)
+
+#define BLAKE2_ROUND_NOMSG(v0, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11,   \
+                           v12, v13, v14, v15)                                 \
+    do {                                                                       \
+        G(v0, v4, v8, v12);                                                    \
+        G(v1, v5, v9, v13);                                                    \
+        G(v2, v6, v10, v14);                                                   \
+        G(v3, v7, v11, v15);                                                   \
+        G(v0, v5, v10, v15);                                                   \
+        G(v1, v6, v11, v12);                                                   \
+        G(v2, v7, v8, v13);                                                    \
+        G(v3, v4, v9, v14);                                                    \
+    } while ((void)0, 0)
+
+#endif
diff --git a/cbits/argon2/core.c b/cbits/argon2/core.c
new file mode 100644
--- /dev/null
+++ b/cbits/argon2/core.c
@@ -0,0 +1,701 @@
+/*
+ * Argon2 reference source code package - reference C implementations
+ *
+ * Copyright 2015
+ * Daniel Dinu, Dmitry Khovratovich, Jean-Philippe Aumasson, and Samuel Neves
+ *
+ * You may use this work under the terms of a Creative Commons CC0 1.0 
+ * License/Waiver or the Apache Public License 2.0, at your option. The terms of
+ * these licenses can be found at:
+ *
+ * - CC0 1.0 Universal : http://creativecommons.org/publicdomain/zero/1.0
+ * - Apache 2.0        : http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * You should have received a copy of both of these licenses along with this
+ * software. If not, they may be obtained at the above URLs.
+ */
+
+/*For memory wiping*/
+#ifdef _MSC_VER
+#include <windows.h>
+#include <winbase.h> /* For SecureZeroMemory */
+#endif
+#if defined __STDC_LIB_EXT1__
+#define __STDC_WANT_LIB_EXT1__ 1
+#endif
+#define VC_GE_2005(version) (version >= 1400)
+
+#include <inttypes.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+#include "core.h"
+#include "thread.c"
+#include "blake2.h"
+#include "blake2-impl.h"
+
+#ifdef GENKAT
+#include "genkat.h"
+#endif
+
+#ifdef SUPPORT_SSE
+#include "opt.c"
+#else
+#include "ref.c"
+#endif
+
+#if defined(__clang__)
+#if __has_attribute(optnone)
+#define NOT_OPTIMIZED __attribute__((optnone))
+#endif
+#elif defined(__GNUC__)
+#define GCC_VERSION                                                            \
+    (__GNUC__ * 10000 + __GNUC_MINOR__ * 100 + __GNUC_PATCHLEVEL__)
+#if GCC_VERSION >= 40400
+#define NOT_OPTIMIZED __attribute__((optimize("O0")))
+#endif
+#endif
+#ifndef NOT_OPTIMIZED
+#define NOT_OPTIMIZED
+#endif
+
+/* Argon2 Team - Begin Code */
+static int blake2b_long(void *pout, size_t outlen, const void *in, size_t inlen) {
+    uint8_t *out = (uint8_t *)pout;
+    blake2b_state blake_state;
+    uint8_t outlen_bytes[sizeof(uint32_t)] = {0};
+    int ret = -1;
+
+    if (outlen > UINT32_MAX) {
+        goto fail;
+    }
+
+    /* Ensure little-endian byte order! */
+    store32(outlen_bytes, (uint32_t)outlen);
+
+#define TRY(statement)                                                         \
+    do {                                                                       \
+        ret = statement;                                                       \
+        if (ret < 0) {                                                         \
+            goto fail;                                                         \
+        }                                                                      \
+    } while ((void)0, 0)
+
+    if (outlen <= BLAKE2B_OUTBYTES) {
+        TRY(blake2b_init(&blake_state, outlen));
+        TRY(blake2b_update(&blake_state, outlen_bytes, sizeof(outlen_bytes)));
+        TRY(blake2b_update(&blake_state, in, inlen));
+        TRY(blake2b_final(&blake_state, out, outlen));
+    } else {
+        uint32_t toproduce;
+        uint8_t out_buffer[BLAKE2B_OUTBYTES];
+        uint8_t in_buffer[BLAKE2B_OUTBYTES];
+        TRY(blake2b_init(&blake_state, BLAKE2B_OUTBYTES));
+        TRY(blake2b_update(&blake_state, outlen_bytes, sizeof(outlen_bytes)));
+        TRY(blake2b_update(&blake_state, in, inlen));
+        TRY(blake2b_final(&blake_state, out_buffer, BLAKE2B_OUTBYTES));
+        memcpy(out, out_buffer, BLAKE2B_OUTBYTES / 2);
+        out += BLAKE2B_OUTBYTES / 2;
+        toproduce = (uint32_t)outlen - BLAKE2B_OUTBYTES / 2;
+
+        while (toproduce > BLAKE2B_OUTBYTES) {
+            memcpy(in_buffer, out_buffer, BLAKE2B_OUTBYTES);
+            TRY(blake2b(out_buffer, BLAKE2B_OUTBYTES, in_buffer,
+                        BLAKE2B_OUTBYTES, NULL, 0));
+            memcpy(out, out_buffer, BLAKE2B_OUTBYTES / 2);
+            out += BLAKE2B_OUTBYTES / 2;
+            toproduce -= BLAKE2B_OUTBYTES / 2;
+        }
+
+        memcpy(in_buffer, out_buffer, BLAKE2B_OUTBYTES);
+        TRY(blake2b(out_buffer, toproduce, in_buffer, BLAKE2B_OUTBYTES, NULL,
+                    0));
+        memcpy(out, out_buffer, toproduce);
+    }
+fail:
+    clear_internal_memory(&blake_state, sizeof(blake_state));
+    return ret;
+#undef TRY
+}
+/* Argon2 Team - End Code */
+
+/***************Instance and Position constructors**********/
+static void init_block_value(block *b, uint8_t in) { memset(b->v, in, sizeof(b->v)); }
+
+static void copy_block(block *dst, const block *src) {
+    memcpy(dst->v, src->v, sizeof(uint64_t) * ARGON2_QWORDS_IN_BLOCK);
+}
+
+static void xor_block(block *dst, const block *src) {
+    int i;
+    for (i = 0; i < ARGON2_QWORDS_IN_BLOCK; ++i) {
+        dst->v[i] ^= src->v[i];
+    }
+}
+
+static void load_block(block *dst, const void *input) {
+    unsigned i;
+    for (i = 0; i < ARGON2_QWORDS_IN_BLOCK; ++i) {
+        dst->v[i] = load64((const uint8_t *)input + i * sizeof(dst->v[i]));
+    }
+}
+
+static void store_block(void *output, const block *src) {
+    unsigned i;
+    for (i = 0; i < ARGON2_QWORDS_IN_BLOCK; ++i) {
+        store64((uint8_t *)output + i * sizeof(src->v[i]), src->v[i]);
+    }
+}
+
+/***************Memory functions*****************/
+static 
+int allocate_memory(const argon2_context *context, uint8_t **memory,
+                    size_t num, size_t size) {
+    size_t memory_size = num*size;
+    if (memory == NULL) {
+        return ARGON2_MEMORY_ALLOCATION_ERROR;
+    }
+
+    /* 1. Check for multiplication overflow */
+    if (size != 0 && memory_size / size != num) {
+        return ARGON2_MEMORY_ALLOCATION_ERROR;
+    }
+
+    /* 2. Try to allocate with appropriate allocator */
+    if (context->allocate_cbk) {
+        (context->allocate_cbk)(memory, memory_size);
+    } else {
+        *memory = malloc(memory_size);
+    }
+
+    if (*memory == NULL) {
+        return ARGON2_MEMORY_ALLOCATION_ERROR;
+    }
+
+    return ARGON2_OK;
+}
+static 
+void free_memory(const argon2_context *context, uint8_t *memory,
+                 size_t num, size_t size) {
+    size_t memory_size = num*size;
+    clear_internal_memory(memory, memory_size);
+    if (context->free_cbk) {
+        (context->free_cbk)(memory, memory_size);
+    } else {
+        free(memory);
+    }
+}
+
+void NOT_OPTIMIZED secure_wipe_memory(void *v, size_t n) {
+#if defined(_MSC_VER) && VC_GE_2005(_MSC_VER)
+    SecureZeroMemory(v, n);
+#elif defined memset_s
+    memset_s(v, n, 0, n);
+#elif defined(__OpenBSD__)
+    explicit_bzero(v, n);
+#else
+    static void *(*const volatile memset_sec)(void *, int, size_t) = &memset;
+    memset_sec(v, 0, n);
+#endif
+}
+
+/* Memory clear flag defaults to true. */
+static int FLAG_clear_internal_memory = 1;
+static void clear_internal_memory(void *v, size_t n) {
+  if (FLAG_clear_internal_memory && v) {
+    secure_wipe_memory(v, n);
+  }
+}
+
+static void finalize(const argon2_context *context, argon2_instance_t *instance) {
+    if (context != NULL && instance != NULL) {
+        block blockhash;
+        uint32_t l;
+
+        copy_block(&blockhash, instance->memory + instance->lane_length - 1);
+
+        /* XOR the last blocks */
+        for (l = 1; l < instance->lanes; ++l) {
+            uint32_t last_block_in_lane =
+                l * instance->lane_length + (instance->lane_length - 1);
+            xor_block(&blockhash, instance->memory + last_block_in_lane);
+        }
+
+        /* Hash the result */
+        {
+            uint8_t blockhash_bytes[ARGON2_BLOCK_SIZE];
+            store_block(blockhash_bytes, &blockhash);
+            blake2b_long(context->out, context->outlen, blockhash_bytes,
+                         ARGON2_BLOCK_SIZE);
+            /* clear blockhash and blockhash_bytes */
+            clear_internal_memory(blockhash.v, ARGON2_BLOCK_SIZE);
+            clear_internal_memory(blockhash_bytes, ARGON2_BLOCK_SIZE);
+        }
+
+#ifdef GENKAT
+        print_tag(context->out, context->outlen);
+#endif
+
+        free_memory(context, (uint8_t *)instance->memory,
+                    instance->memory_blocks, sizeof(block));
+    }
+}
+
+static uint32_t index_alpha(const argon2_instance_t *instance,
+                     const argon2_position_t *position, uint32_t pseudo_rand,
+                     int same_lane) {
+    /*
+     * Pass 0:
+     *      This lane : all already finished segments plus already constructed
+     * blocks in this segment
+     *      Other lanes : all already finished segments
+     * Pass 1+:
+     *      This lane : (SYNC_POINTS - 1) last segments plus already constructed
+     * blocks in this segment
+     *      Other lanes : (SYNC_POINTS - 1) last segments
+     */
+    uint32_t reference_area_size;
+    uint64_t relative_position;
+    uint32_t start_position, absolute_position;
+
+    if (0 == position->pass) {
+        /* First pass */
+        if (0 == position->slice) {
+            /* First slice */
+            reference_area_size =
+                position->index - 1; /* all but the previous */
+        } else {
+            if (same_lane) {
+                /* The same lane => add current segment */
+                reference_area_size =
+                    position->slice * instance->segment_length +
+                    position->index - 1;
+            } else {
+                reference_area_size =
+                    position->slice * instance->segment_length +
+                    ((position->index == 0) ? (-1) : 0);
+            }
+        }
+    } else {
+        /* Second pass */
+        if (same_lane) {
+            reference_area_size = instance->lane_length -
+                                  instance->segment_length + position->index -
+                                  1;
+        } else {
+            reference_area_size = instance->lane_length -
+                                  instance->segment_length +
+                                  ((position->index == 0) ? (-1) : 0);
+        }
+    }
+
+    /* 1.2.4. Mapping pseudo_rand to 0..<reference_area_size-1> and produce
+     * relative position */
+    relative_position = pseudo_rand;
+    relative_position = relative_position * relative_position >> 32;
+    relative_position = reference_area_size - 1 -
+                        (reference_area_size * relative_position >> 32);
+
+    /* 1.2.5 Computing starting position */
+    start_position = 0;
+
+    if (0 != position->pass) {
+        start_position = (position->slice == ARGON2_SYNC_POINTS - 1)
+                             ? 0
+                             : (position->slice + 1) * instance->segment_length;
+    }
+
+    /* 1.2.6. Computing absolute position */
+    absolute_position = (start_position + relative_position) %
+                        instance->lane_length; /* absolute position */
+    return absolute_position;
+}
+
+/* Single-threaded version for p=1 case */
+static int fill_memory_blocks_st(argon2_instance_t *instance) {
+    uint32_t r, s, l;
+
+    for (r = 0; r < instance->passes; ++r) {
+        for (s = 0; s < ARGON2_SYNC_POINTS; ++s) {
+            for (l = 0; l < instance->lanes; ++l) {
+                argon2_position_t position = {r, l, (uint8_t)s, 0};
+                fill_segment(instance, position);
+            }
+        }
+#ifdef GENKAT
+        internal_kat(instance, r); /* Print all memory blocks */
+#endif
+    }
+    return ARGON2_OK;
+}
+
+#if !defined(ARGON2_NO_THREADS)
+
+#ifdef _WIN32
+static unsigned __stdcall fill_segment_thr(void *thread_data)
+#else
+static void *fill_segment_thr(void *thread_data)
+#endif
+{
+    argon2_thread_data *my_data = thread_data;
+    fill_segment(my_data->instance_ptr, my_data->pos);
+    argon2_thread_exit();
+    return 0;
+}
+
+/* Multi-threaded version for p > 1 case */
+static int fill_memory_blocks_mt(argon2_instance_t *instance) {
+    uint32_t r, s;
+    argon2_thread_handle_t *thread = NULL;
+    argon2_thread_data *thr_data = NULL;
+    int rc = ARGON2_OK;
+
+    /* 1. Allocating space for threads */
+    thread = calloc(instance->lanes, sizeof(argon2_thread_handle_t));
+    if (thread == NULL) {
+        rc = ARGON2_MEMORY_ALLOCATION_ERROR;
+        goto fail;
+    }
+
+    thr_data = calloc(instance->lanes, sizeof(argon2_thread_data));
+    if (thr_data == NULL) {
+        rc = ARGON2_MEMORY_ALLOCATION_ERROR;
+        goto fail;
+    }
+
+    for (r = 0; r < instance->passes; ++r) {
+        for (s = 0; s < ARGON2_SYNC_POINTS; ++s) {
+            uint32_t l;
+
+            /* 2. Calling threads */
+            for (l = 0; l < instance->lanes; ++l) {
+                argon2_position_t position;
+
+                /* 2.1 Join a thread if limit is exceeded */
+                if (l >= instance->threads) {
+                    if (argon2_thread_join(thread[l - instance->threads])) {
+                        rc = ARGON2_THREAD_FAIL;
+                        goto fail;
+                    }
+                }
+
+                /* 2.2 Create thread */
+                position.pass = r;
+                position.lane = l;
+                position.slice = (uint8_t)s;
+                position.index = 0;
+                thr_data[l].instance_ptr =
+                    instance; /* preparing the thread input */
+                memcpy(&(thr_data[l].pos), &position,
+                       sizeof(argon2_position_t));
+                if (argon2_thread_create(&thread[l], &fill_segment_thr,
+                                         (void *)&thr_data[l])) {
+                    rc = ARGON2_THREAD_FAIL;
+                    goto fail;
+                }
+
+                /* fill_segment(instance, position); */
+                /*Non-thread equivalent of the lines above */
+            }
+
+            /* 3. Joining remaining threads */
+            for (l = instance->lanes - instance->threads; l < instance->lanes;
+                 ++l) {
+                if (argon2_thread_join(thread[l])) {
+                    rc = ARGON2_THREAD_FAIL;
+                    goto fail;
+                }
+            }
+        }
+
+#ifdef GENKAT
+        internal_kat(instance, r); /* Print all memory blocks */
+#endif
+    }
+
+fail:
+    if (thread != NULL) {
+        free(thread);
+    }
+    if (thr_data != NULL) {
+        free(thr_data);
+    }
+    return rc;
+}
+
+#endif /* ARGON2_NO_THREADS */
+static 
+int fill_memory_blocks(argon2_instance_t *instance) {
+	if (instance == NULL || instance->lanes == 0) {
+	    return ARGON2_INCORRECT_PARAMETER;
+    }
+#if defined(ARGON2_NO_THREADS)
+    return fill_memory_blocks_st(instance);
+#else
+    return instance->threads == 1 ?
+			fill_memory_blocks_st(instance) : fill_memory_blocks_mt(instance);
+#endif
+}
+static 
+int validate_inputs(const argon2_context *context) {
+    if (NULL == context) {
+        return ARGON2_INCORRECT_PARAMETER;
+    }
+
+    if (NULL == context->out) {
+        return ARGON2_OUTPUT_PTR_NULL;
+    }
+
+    /* Validate output length */
+    if (ARGON2_MIN_OUTLEN > context->outlen) {
+        return ARGON2_OUTPUT_TOO_SHORT;
+    }
+
+    if (ARGON2_MAX_OUTLEN < context->outlen) {
+        return ARGON2_OUTPUT_TOO_LONG;
+    }
+
+    /* Validate password (required param) */
+    if (NULL == context->pwd) {
+        if (0 != context->pwdlen) {
+            return ARGON2_PWD_PTR_MISMATCH;
+        }
+    }
+
+    if (ARGON2_MIN_PWD_LENGTH > context->pwdlen) {
+      return ARGON2_PWD_TOO_SHORT;
+    }
+
+    if (ARGON2_MAX_PWD_LENGTH < context->pwdlen) {
+        return ARGON2_PWD_TOO_LONG;
+    }
+
+    /* Validate salt (required param) */
+    if (NULL == context->salt) {
+        if (0 != context->saltlen) {
+            return ARGON2_SALT_PTR_MISMATCH;
+        }
+    }
+
+    if (ARGON2_MIN_SALT_LENGTH > context->saltlen) {
+        return ARGON2_SALT_TOO_SHORT;
+    }
+
+    if (ARGON2_MAX_SALT_LENGTH < context->saltlen) {
+        return ARGON2_SALT_TOO_LONG;
+    }
+
+    /* Validate secret (optional param) */
+    if (NULL == context->secret) {
+        if (0 != context->secretlen) {
+            return ARGON2_SECRET_PTR_MISMATCH;
+        }
+    } else {
+        if (ARGON2_MIN_SECRET > context->secretlen) {
+            return ARGON2_SECRET_TOO_SHORT;
+        }
+        if (ARGON2_MAX_SECRET < context->secretlen) {
+            return ARGON2_SECRET_TOO_LONG;
+        }
+    }
+
+    /* Validate associated data (optional param) */
+    if (NULL == context->ad) {
+        if (0 != context->adlen) {
+            return ARGON2_AD_PTR_MISMATCH;
+        }
+    } else {
+        if (ARGON2_MIN_AD_LENGTH > context->adlen) {
+            return ARGON2_AD_TOO_SHORT;
+        }
+        if (ARGON2_MAX_AD_LENGTH < context->adlen) {
+            return ARGON2_AD_TOO_LONG;
+        }
+    }
+
+    /* Validate memory cost */
+    if (ARGON2_MIN_MEMORY > context->m_cost) {
+        return ARGON2_MEMORY_TOO_LITTLE;
+    }
+
+    if (ARGON2_MAX_MEMORY < context->m_cost) {
+        return ARGON2_MEMORY_TOO_MUCH;
+    }
+
+    if (context->m_cost < 8 * context->lanes) {
+        return ARGON2_MEMORY_TOO_LITTLE;
+    }
+
+    /* Validate time cost */
+    if (ARGON2_MIN_TIME > context->t_cost) {
+        return ARGON2_TIME_TOO_SMALL;
+    }
+
+    if (ARGON2_MAX_TIME < context->t_cost) {
+        return ARGON2_TIME_TOO_LARGE;
+    }
+
+    /* Validate lanes */
+    if (ARGON2_MIN_LANES > context->lanes) {
+        return ARGON2_LANES_TOO_FEW;
+    }
+
+    if (ARGON2_MAX_LANES < context->lanes) {
+        return ARGON2_LANES_TOO_MANY;
+    }
+
+    /* Validate threads */
+    if (ARGON2_MIN_THREADS > context->threads) {
+        return ARGON2_THREADS_TOO_FEW;
+    }
+
+    if (ARGON2_MAX_THREADS < context->threads) {
+        return ARGON2_THREADS_TOO_MANY;
+    }
+
+    if (NULL != context->allocate_cbk && NULL == context->free_cbk) {
+        return ARGON2_FREE_MEMORY_CBK_NULL;
+    }
+
+    if (NULL == context->allocate_cbk && NULL != context->free_cbk) {
+        return ARGON2_ALLOCATE_MEMORY_CBK_NULL;
+    }
+
+    return ARGON2_OK;
+}
+static 
+void fill_first_blocks(uint8_t *blockhash, const argon2_instance_t *instance) {
+    uint32_t l;
+    /* Make the first and second block in each lane as G(H0||i||0) or
+       G(H0||i||1) */
+    uint8_t blockhash_bytes[ARGON2_BLOCK_SIZE];
+    for (l = 0; l < instance->lanes; ++l) {
+
+        store32(blockhash + ARGON2_PREHASH_DIGEST_LENGTH, 0);
+        store32(blockhash + ARGON2_PREHASH_DIGEST_LENGTH + 4, l);
+        blake2b_long(blockhash_bytes, ARGON2_BLOCK_SIZE, blockhash,
+                     ARGON2_PREHASH_SEED_LENGTH);
+        load_block(&instance->memory[l * instance->lane_length + 0],
+                   blockhash_bytes);
+
+        store32(blockhash + ARGON2_PREHASH_DIGEST_LENGTH, 1);
+        blake2b_long(blockhash_bytes, ARGON2_BLOCK_SIZE, blockhash,
+                     ARGON2_PREHASH_SEED_LENGTH);
+        load_block(&instance->memory[l * instance->lane_length + 1],
+                   blockhash_bytes);
+    }
+    clear_internal_memory(blockhash_bytes, ARGON2_BLOCK_SIZE);
+}
+static 
+void initial_hash(uint8_t *blockhash, argon2_context *context,
+                  argon2_type type) {
+    blake2b_state BlakeHash;
+    uint8_t value[sizeof(uint32_t)];
+
+    if (NULL == context || NULL == blockhash) {
+        return;
+    }
+
+    blake2b_init(&BlakeHash, ARGON2_PREHASH_DIGEST_LENGTH);
+
+    store32(&value, context->lanes);
+    blake2b_update(&BlakeHash, (const uint8_t *)&value, sizeof(value));
+
+    store32(&value, context->outlen);
+    blake2b_update(&BlakeHash, (const uint8_t *)&value, sizeof(value));
+
+    store32(&value, context->m_cost);
+    blake2b_update(&BlakeHash, (const uint8_t *)&value, sizeof(value));
+
+    store32(&value, context->t_cost);
+    blake2b_update(&BlakeHash, (const uint8_t *)&value, sizeof(value));
+
+    store32(&value, context->version);
+    blake2b_update(&BlakeHash, (const uint8_t *)&value, sizeof(value));
+
+    store32(&value, (uint32_t)type);
+    blake2b_update(&BlakeHash, (const uint8_t *)&value, sizeof(value));
+
+    store32(&value, context->pwdlen);
+    blake2b_update(&BlakeHash, (const uint8_t *)&value, sizeof(value));
+
+    if (context->pwd != NULL) {
+        blake2b_update(&BlakeHash, (const uint8_t *)context->pwd,
+                       context->pwdlen);
+
+        if (context->flags & ARGON2_FLAG_CLEAR_PASSWORD) {
+            secure_wipe_memory(context->pwd, context->pwdlen);
+            context->pwdlen = 0;
+        }
+    }
+
+    store32(&value, context->saltlen);
+    blake2b_update(&BlakeHash, (const uint8_t *)&value, sizeof(value));
+
+    if (context->salt != NULL) {
+        blake2b_update(&BlakeHash, (const uint8_t *)context->salt,
+                       context->saltlen);
+    }
+
+    store32(&value, context->secretlen);
+    blake2b_update(&BlakeHash, (const uint8_t *)&value, sizeof(value));
+
+    if (context->secret != NULL) {
+        blake2b_update(&BlakeHash, (const uint8_t *)context->secret,
+                       context->secretlen);
+
+        if (context->flags & ARGON2_FLAG_CLEAR_SECRET) {
+            secure_wipe_memory(context->secret, context->secretlen);
+            context->secretlen = 0;
+        }
+    }
+
+    store32(&value, context->adlen);
+    blake2b_update(&BlakeHash, (const uint8_t *)&value, sizeof(value));
+
+    if (context->ad != NULL) {
+        blake2b_update(&BlakeHash, (const uint8_t *)context->ad,
+                       context->adlen);
+    }
+
+    blake2b_final(&BlakeHash, blockhash, ARGON2_PREHASH_DIGEST_LENGTH);
+}
+static 
+int initialize(argon2_instance_t *instance, argon2_context *context) {
+    uint8_t blockhash[ARGON2_PREHASH_SEED_LENGTH];
+    int result = ARGON2_OK;
+
+    if (instance == NULL || context == NULL)
+        return ARGON2_INCORRECT_PARAMETER;
+    instance->context_ptr = context;
+
+    /* 1. Memory allocation */
+    result = allocate_memory(context, (uint8_t **)&(instance->memory),
+                             instance->memory_blocks, sizeof(block));
+    if (result != ARGON2_OK) {
+        return result;
+    }
+
+    /* 2. Initial hashing */
+    /* H_0 + 8 extra bytes to produce the first blocks */
+    /* uint8_t blockhash[ARGON2_PREHASH_SEED_LENGTH]; */
+    /* Hashing all inputs */
+    initial_hash(blockhash, context, instance->type);
+    /* Zeroing 8 extra bytes */
+    clear_internal_memory(blockhash + ARGON2_PREHASH_DIGEST_LENGTH,
+                          ARGON2_PREHASH_SEED_LENGTH -
+                              ARGON2_PREHASH_DIGEST_LENGTH);
+
+#ifdef GENKAT
+    initial_kat(blockhash, context, instance->type);
+#endif
+
+    /* 3. Creating first blocks, we always have at least two blocks in a slice
+     */
+    fill_first_blocks(blockhash, instance);
+    /* Clearing the hash */
+    clear_internal_memory(blockhash, ARGON2_PREHASH_SEED_LENGTH);
+
+    return ARGON2_OK;
+}
diff --git a/cbits/argon2/core.h b/cbits/argon2/core.h
new file mode 100644
--- /dev/null
+++ b/cbits/argon2/core.h
@@ -0,0 +1,234 @@
+/*
+ * Argon2 reference source code package - reference C implementations
+ *
+ * Copyright 2015
+ * Daniel Dinu, Dmitry Khovratovich, Jean-Philippe Aumasson, and Samuel Neves
+ *
+ * You may use this work under the terms of a Creative Commons CC0 1.0 
+ * License/Waiver or the Apache Public License 2.0, at your option. The terms of
+ * these licenses can be found at:
+ *
+ * - CC0 1.0 Universal : http://creativecommons.org/publicdomain/zero/1.0
+ * - Apache 2.0        : http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * You should have received a copy of both of these licenses along with this
+ * software. If not, they may be obtained at the above URLs.
+ */
+
+#ifndef ARGON2_CORE_H
+#define ARGON2_CORE_H
+
+#include "argon2.h"
+
+#if defined(_MSC_VER)
+#define ALIGN(n) __declspec(align(16))
+#elif defined(__GNUC__) || defined(__clang)
+#define ALIGN(x) __attribute__((__aligned__(x)))
+#else
+#define ALIGN(x)
+#endif
+
+#define CONST_CAST(x) (x)(uintptr_t)
+
+/**********************Argon2 internal constants*******************************/
+
+enum argon2_core_constants {
+    /* Memory block size in bytes */
+    ARGON2_BLOCK_SIZE = 1024,
+    ARGON2_QWORDS_IN_BLOCK = ARGON2_BLOCK_SIZE / 8,
+    ARGON2_OWORDS_IN_BLOCK = ARGON2_BLOCK_SIZE / 16,
+
+    /* Number of pseudo-random values generated by one call to Blake in Argon2i
+       to
+       generate reference block positions */
+    ARGON2_ADDRESSES_IN_BLOCK = 128,
+
+    /* Pre-hashing digest length and its extension*/
+    ARGON2_PREHASH_DIGEST_LENGTH = 64,
+    ARGON2_PREHASH_SEED_LENGTH = 72
+};
+
+/*************************Argon2 internal data types***********************/
+
+/*
+ * Structure for the (1KB) memory block implemented as 128 64-bit words.
+ * Memory blocks can be copied, XORed. Internal words can be accessed by [] (no
+ * bounds checking).
+ */
+typedef struct block_ { uint64_t v[ARGON2_QWORDS_IN_BLOCK]; } block;
+
+/*****************Functions that work with the block******************/
+
+/* Initialize each byte of the block with @in */
+static void init_block_value(block *b, uint8_t in);
+
+/* Copy block @src to block @dst */
+static void copy_block(block *dst, const block *src);
+
+/* XOR @src onto @dst bytewise */
+static void xor_block(block *dst, const block *src);
+
+/*
+ * Argon2 instance: memory pointer, number of passes, amount of memory, type,
+ * and derived values.
+ * Used to evaluate the number and location of blocks to construct in each
+ * thread
+ */
+typedef struct Argon2_instance_t {
+    block *memory;          /* Memory pointer */
+    uint32_t version;
+    uint32_t passes;        /* Number of passes */
+    uint32_t memory_blocks; /* Number of blocks in memory */
+    uint32_t segment_length;
+    uint32_t lane_length;
+    uint32_t lanes;
+    uint32_t threads;
+    argon2_type type;
+    int print_internals; /* whether to print the memory blocks */
+    argon2_context *context_ptr; /* points back to original context */
+} argon2_instance_t;
+
+/*
+ * Argon2 position: where we construct the block right now. Used to distribute
+ * work between threads.
+ */
+typedef struct Argon2_position_t {
+    uint32_t pass;
+    uint32_t lane;
+    uint8_t slice;
+    uint32_t index;
+} argon2_position_t;
+
+/*Struct that holds the inputs for thread handling FillSegment*/
+typedef struct Argon2_thread_data {
+    argon2_instance_t *instance_ptr;
+    argon2_position_t pos;
+} argon2_thread_data;
+
+/*************************Argon2 core functions********************************/
+
+/* Allocates memory to the given pointer, uses the appropriate allocator as
+ * specified in the context. Total allocated memory is num*size.
+ * @param context argon2_context which specifies the allocator
+ * @param memory pointer to the pointer to the memory
+ * @param size the size in bytes for each element to be allocated
+ * @param num the number of elements to be allocated
+ * @return ARGON2_OK if @memory is a valid pointer and memory is allocated
+ */
+static int allocate_memory(const argon2_context *context, uint8_t **memory,
+                    size_t num, size_t size);
+
+/*
+ * Frees memory at the given pointer, uses the appropriate deallocator as
+ * specified in the context. Also cleans the memory using clear_internal_memory.
+ * @param context argon2_context which specifies the deallocator
+ * @param memory pointer to buffer to be freed
+ * @param size the size in bytes for each element to be deallocated
+ * @param num the number of elements to be deallocated
+ */
+static void free_memory(const argon2_context *context, uint8_t *memory,
+                 size_t num, size_t size);
+
+/* Function that securely cleans the memory. This ignores any flags set
+ * regarding clearing memory. Usually one just calls clear_internal_memory.
+ * @param mem Pointer to the memory
+ * @param s Memory size in bytes
+ */
+static void secure_wipe_memory(void *v, size_t n);
+
+/* Function that securely clears the memory if FLAG_clear_internal_memory is
+ * set. If the flag isn't set, this function does nothing.
+ * @param mem Pointer to the memory
+ * @param s Memory size in bytes
+ */
+static void clear_internal_memory(void *v, size_t n);
+
+/*
+ * Computes absolute position of reference block in the lane following a skewed
+ * distribution and using a pseudo-random value as input
+ * @param instance Pointer to the current instance
+ * @param position Pointer to the current position
+ * @param pseudo_rand 32-bit pseudo-random value used to determine the position
+ * @param same_lane Indicates if the block will be taken from the current lane.
+ * If so we can reference the current segment
+ * @pre All pointers must be valid
+ */
+static uint32_t index_alpha(const argon2_instance_t *instance,
+                     const argon2_position_t *position, uint32_t pseudo_rand,
+                     int same_lane);
+
+/*
+ * Function that validates all inputs against predefined restrictions and return
+ * an error code
+ * @param context Pointer to current Argon2 context
+ * @return ARGON2_OK if everything is all right, otherwise one of error codes
+ * (all defined in <argon2.h>
+ */
+static int validate_inputs(const argon2_context *context);
+
+/*
+ * Hashes all the inputs into @a blockhash[PREHASH_DIGEST_LENGTH], clears
+ * password and secret if needed
+ * @param  context  Pointer to the Argon2 internal structure containing memory
+ * pointer, and parameters for time and space requirements.
+ * @param  blockhash Buffer for pre-hashing digest
+ * @param  type Argon2 type
+ * @pre    @a blockhash must have at least @a PREHASH_DIGEST_LENGTH bytes
+ * allocated
+ */
+static void initial_hash(uint8_t *blockhash, argon2_context *context,
+                  argon2_type type);
+
+/*
+ * Function creates first 2 blocks per lane
+ * @param instance Pointer to the current instance
+ * @param blockhash Pointer to the pre-hashing digest
+ * @pre blockhash must point to @a PREHASH_SEED_LENGTH allocated values
+ */
+static void fill_first_blocks(uint8_t *blockhash, const argon2_instance_t *instance);
+
+/*
+ * Function allocates memory, hashes the inputs with Blake,  and creates first
+ * two blocks. Returns the pointer to the main memory with 2 blocks per lane
+ * initialized
+ * @param  context  Pointer to the Argon2 internal structure containing memory
+ * pointer, and parameters for time and space requirements.
+ * @param  instance Current Argon2 instance
+ * @return Zero if successful, -1 if memory failed to allocate. @context->state
+ * will be modified if successful.
+ */
+static int initialize(argon2_instance_t *instance, argon2_context *context);
+
+/*
+ * XORing the last block of each lane, hashing it, making the tag. Deallocates
+ * the memory.
+ * @param context Pointer to current Argon2 context (use only the out parameters
+ * from it)
+ * @param instance Pointer to current instance of Argon2
+ * @pre instance->state must point to necessary amount of memory
+ * @pre context->out must point to outlen bytes of memory
+ * @pre if context->free_cbk is not NULL, it should point to a function that
+ * deallocates memory
+ */
+static void finalize(const argon2_context *context, argon2_instance_t *instance);
+
+/*
+ * Function that fills the segment using previous segments also from other
+ * threads
+ * @param context current context
+ * @param instance Pointer to the current instance
+ * @param position Current position
+ * @pre all block pointers must be valid
+ */
+static void fill_segment(const argon2_instance_t *instance,
+                  argon2_position_t position);
+
+/*
+ * Function that fills the entire memory t_cost times based on the first two
+ * blocks in each lane
+ * @param instance Pointer to the current instance
+ * @return ARGON2_OK if successful, @context->state
+ */
+static int fill_memory_blocks(argon2_instance_t *instance);
+
+#endif
diff --git a/cbits/argon2/opt.c b/cbits/argon2/opt.c
new file mode 100644
--- /dev/null
+++ b/cbits/argon2/opt.c
@@ -0,0 +1,186 @@
+/*
+ * Argon2 reference source code package - reference C implementations
+ *
+ * Copyright 2015
+ * Daniel Dinu, Dmitry Khovratovich, Jean-Philippe Aumasson, and Samuel Neves
+ *
+ * You may use this work under the terms of a Creative Commons CC0 1.0 
+ * License/Waiver or the Apache Public License 2.0, at your option. The terms of
+ * these licenses can be found at:
+ *
+ * - CC0 1.0 Universal : http://creativecommons.org/publicdomain/zero/1.0
+ * - Apache 2.0        : http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * You should have received a copy of both of these licenses along with this
+ * software. If not, they may be obtained at the above URLs.
+ */
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+
+#include "argon2.h"
+#include "opt.h"
+
+#include "blake2/blake2.h"
+#include "blake2/blamka-round-opt.h"
+
+static void fill_block(__m128i *state, const block *ref_block, block *next_block,
+                int with_xor) {
+    __m128i block_XY[ARGON2_OWORDS_IN_BLOCK];
+    unsigned int i;
+
+    if (with_xor) {
+        for (i = 0; i < ARGON2_OWORDS_IN_BLOCK; i++) {
+            state[i] = _mm_xor_si128(
+                state[i], _mm_loadu_si128((const __m128i *)ref_block->v + i));
+            block_XY[i] = _mm_xor_si128(
+                state[i], _mm_loadu_si128((const __m128i *)next_block->v + i));
+        }
+    } else {
+        for (i = 0; i < ARGON2_OWORDS_IN_BLOCK; i++) {
+            block_XY[i] = state[i] = _mm_xor_si128(
+                state[i], _mm_loadu_si128((const __m128i *)ref_block->v + i));
+        }
+    }
+
+    for (i = 0; i < 8; ++i) {
+        BLAKE2_ROUND(state[8 * i + 0], state[8 * i + 1], state[8 * i + 2],
+            state[8 * i + 3], state[8 * i + 4], state[8 * i + 5],
+            state[8 * i + 6], state[8 * i + 7]);
+    }
+
+    for (i = 0; i < 8; ++i) {
+        BLAKE2_ROUND(state[8 * 0 + i], state[8 * 1 + i], state[8 * 2 + i],
+            state[8 * 3 + i], state[8 * 4 + i], state[8 * 5 + i],
+            state[8 * 6 + i], state[8 * 7 + i]);
+    }
+
+    for (i = 0; i < ARGON2_OWORDS_IN_BLOCK; i++) {
+        state[i] = _mm_xor_si128(state[i], block_XY[i]);
+        _mm_storeu_si128((__m128i *)next_block->v + i, state[i]);
+    }
+}
+
+static void next_addresses(block *address_block, block *input_block) {
+    /*Temporary zero-initialized blocks*/
+    __m128i zero_block[ARGON2_OWORDS_IN_BLOCK];
+    __m128i zero2_block[ARGON2_OWORDS_IN_BLOCK];
+
+    memset(zero_block, 0, sizeof(zero_block));
+    memset(zero2_block, 0, sizeof(zero2_block));
+
+    /*Increasing index counter*/
+    input_block->v[6]++;
+
+    /*First iteration of G*/
+    fill_block(zero_block, input_block, address_block, 0);
+
+    /*Second iteration of G*/
+    fill_block(zero2_block, address_block, address_block, 0);
+}
+
+static void fill_segment(const argon2_instance_t *instance,
+                  argon2_position_t position) {
+    block *ref_block = NULL, *curr_block = NULL;
+    block address_block, input_block;
+    uint64_t pseudo_rand, ref_index, ref_lane;
+    uint32_t prev_offset, curr_offset;
+    uint32_t starting_index, i;
+    __m128i state[64];
+    int data_independent_addressing;
+
+    if (instance == NULL) {
+        return;
+    }
+
+    data_independent_addressing =
+        (instance->type == Argon2_i) ||
+        (instance->type == Argon2_id && (position.pass == 0) &&
+         (position.slice < ARGON2_SYNC_POINTS / 2));
+
+    if (data_independent_addressing) {
+        init_block_value(&input_block, 0);
+
+        input_block.v[0] = position.pass;
+        input_block.v[1] = position.lane;
+        input_block.v[2] = position.slice;
+        input_block.v[3] = instance->memory_blocks;
+        input_block.v[4] = instance->passes;
+        input_block.v[5] = instance->type;
+    }
+
+    starting_index = 0;
+
+    if ((0 == position.pass) && (0 == position.slice)) {
+        starting_index = 2; /* we have already generated the first two blocks */
+
+        /* Don't forget to generate the first block of addresses: */
+        if (data_independent_addressing) {
+            next_addresses(&address_block, &input_block);
+        }
+    }
+
+    /* Offset of the current block */
+    curr_offset = position.lane * instance->lane_length +
+                  position.slice * instance->segment_length + starting_index;
+
+    if (0 == curr_offset % instance->lane_length) {
+        /* Last block in this lane */
+        prev_offset = curr_offset + instance->lane_length - 1;
+    } else {
+        /* Previous block */
+        prev_offset = curr_offset - 1;
+    }
+
+    memcpy(state, ((instance->memory + prev_offset)->v), ARGON2_BLOCK_SIZE);
+
+    for (i = starting_index; i < instance->segment_length;
+         ++i, ++curr_offset, ++prev_offset) {
+        /*1.1 Rotating prev_offset if needed */
+        if (curr_offset % instance->lane_length == 1) {
+            prev_offset = curr_offset - 1;
+        }
+
+        /* 1.2 Computing the index of the reference block */
+        /* 1.2.1 Taking pseudo-random value from the previous block */
+        if (data_independent_addressing) {
+            if (i % ARGON2_ADDRESSES_IN_BLOCK == 0) {
+                next_addresses(&address_block, &input_block);
+            }
+            pseudo_rand = address_block.v[i % ARGON2_ADDRESSES_IN_BLOCK];
+        } else {
+            pseudo_rand = instance->memory[prev_offset].v[0];
+        }
+
+        /* 1.2.2 Computing the lane of the reference block */
+        ref_lane = ((pseudo_rand >> 32)) % instance->lanes;
+
+        if ((position.pass == 0) && (position.slice == 0)) {
+            /* Can not reference other lanes yet */
+            ref_lane = position.lane;
+        }
+
+        /* 1.2.3 Computing the number of possible reference block within the
+         * lane.
+         */
+        position.index = i;
+        ref_index = index_alpha(instance, &position, pseudo_rand & 0xFFFFFFFF,
+                                ref_lane == position.lane);
+
+        /* 2 Creating a new block */
+        ref_block =
+            instance->memory + instance->lane_length * ref_lane + ref_index;
+        curr_block = instance->memory + curr_offset;
+        if (ARGON2_VERSION_10 == instance->version) {
+            /* version 1.2.1 and earlier: overwrite, not XOR */
+            fill_block(state, ref_block, curr_block, 0);
+        } else {
+            if(0 == position.pass) {
+                fill_block(state, ref_block, curr_block, 0);
+            } else {
+                fill_block(state, ref_block, curr_block, 1);
+            }
+        }
+    }
+}
diff --git a/cbits/argon2/opt.h b/cbits/argon2/opt.h
new file mode 100644
--- /dev/null
+++ b/cbits/argon2/opt.h
@@ -0,0 +1,35 @@
+/*
+ * Argon2 reference source code package - reference C implementations
+ *
+ * Copyright 2015
+ * Daniel Dinu, Dmitry Khovratovich, Jean-Philippe Aumasson, and Samuel Neves
+ *
+ * You may use this work under the terms of a Creative Commons CC0 1.0 
+ * License/Waiver or the Apache Public License 2.0, at your option. The terms of
+ * these licenses can be found at:
+ *
+ * - CC0 1.0 Universal : http://creativecommons.org/publicdomain/zero/1.0
+ * - Apache 2.0        : http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * You should have received a copy of both of these licenses along with this
+ * software. If not, they may be obtained at the above URLs.
+ */
+
+#ifndef ARGON2_OPT_H
+#define ARGON2_OPT_H
+
+#include "core.h"
+#include <emmintrin.h>
+
+/*
+ * Function fills a new memory block and optionally XORs the old block over the new one.
+ * Memory must be initialized.
+ * @param state Pointer to the just produced block. Content will be updated(!)
+ * @param ref_block Pointer to the reference block
+ * @param next_block Pointer to the block to be XORed over. May coincide with @ref_block
+ * @param with_xor Whether to XOR into the new block (1) or just overwrite (0)
+ * @pre all block pointers must be valid
+ */
+static void fill_block(__m128i *s, const block *ref_block, block *next_block, int with_xor);
+
+#endif /* ARGON2_OPT_H */
diff --git a/cbits/argon2/ref.c b/cbits/argon2/ref.c
new file mode 100644
--- /dev/null
+++ b/cbits/argon2/ref.c
@@ -0,0 +1,185 @@
+/*
+ * Argon2 reference source code package - reference C implementations
+ *
+ * Copyright 2015
+ * Daniel Dinu, Dmitry Khovratovich, Jean-Philippe Aumasson, and Samuel Neves
+ *
+ * You may use this work under the terms of a Creative Commons CC0 1.0 
+ * License/Waiver or the Apache Public License 2.0, at your option. The terms of
+ * these licenses can be found at:
+ *
+ * - CC0 1.0 Universal : http://creativecommons.org/publicdomain/zero/1.0
+ * - Apache 2.0        : http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * You should have received a copy of both of these licenses along with this
+ * software. If not, they may be obtained at the above URLs.
+ */
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+
+#include "argon2.h"
+#include "ref.h"
+
+#include "blamka-round-ref.h"
+#include "blake2-impl.h"
+#include "blake2.h"
+
+
+static void fill_block(const block *prev_block, const block *ref_block,
+                block *next_block, int with_xor) {
+    block blockR, block_tmp;
+    unsigned i;
+
+    copy_block(&blockR, ref_block);
+    xor_block(&blockR, prev_block);
+    copy_block(&block_tmp, &blockR);
+    /* Now blockR = ref_block + prev_block and block_tmp = ref_block + prev_block */
+    if (with_xor) {
+        /* Saving the next block contents for XOR over: */
+        xor_block(&block_tmp, next_block);
+        /* Now blockR = ref_block + prev_block and
+           block_tmp = ref_block + prev_block + next_block */
+    }
+
+    /* Apply Blake2 on columns of 64-bit words: (0,1,...,15) , then
+       (16,17,..31)... finally (112,113,...127) */
+    for (i = 0; i < 8; ++i) {
+        BLAKE2_ROUND_NOMSG(
+            blockR.v[16 * i], blockR.v[16 * i + 1], blockR.v[16 * i + 2],
+            blockR.v[16 * i + 3], blockR.v[16 * i + 4], blockR.v[16 * i + 5],
+            blockR.v[16 * i + 6], blockR.v[16 * i + 7], blockR.v[16 * i + 8],
+            blockR.v[16 * i + 9], blockR.v[16 * i + 10], blockR.v[16 * i + 11],
+            blockR.v[16 * i + 12], blockR.v[16 * i + 13], blockR.v[16 * i + 14],
+            blockR.v[16 * i + 15]);
+    }
+
+    /* Apply Blake2 on rows of 64-bit words: (0,1,16,17,...112,113), then
+       (2,3,18,19,...,114,115).. finally (14,15,30,31,...,126,127) */
+    for (i = 0; i < 8; i++) {
+        BLAKE2_ROUND_NOMSG(
+            blockR.v[2 * i], blockR.v[2 * i + 1], blockR.v[2 * i + 16],
+            blockR.v[2 * i + 17], blockR.v[2 * i + 32], blockR.v[2 * i + 33],
+            blockR.v[2 * i + 48], blockR.v[2 * i + 49], blockR.v[2 * i + 64],
+            blockR.v[2 * i + 65], blockR.v[2 * i + 80], blockR.v[2 * i + 81],
+            blockR.v[2 * i + 96], blockR.v[2 * i + 97], blockR.v[2 * i + 112],
+            blockR.v[2 * i + 113]);
+    }
+
+    copy_block(next_block, &block_tmp);
+    xor_block(next_block, &blockR);
+}
+
+static void next_addresses(block *address_block, block *input_block,
+                           const block *zero_block) {
+    input_block->v[6]++;
+    fill_block(zero_block, input_block, address_block, 0);
+    fill_block(zero_block, address_block, address_block, 0);
+}
+
+static void fill_segment(const argon2_instance_t *instance,
+                  argon2_position_t position) {
+    block *ref_block = NULL, *curr_block = NULL;
+    block address_block, input_block, zero_block;
+    uint64_t pseudo_rand, ref_index, ref_lane;
+    uint32_t prev_offset, curr_offset;
+    uint32_t starting_index;
+    uint32_t i;
+    int data_independent_addressing;
+
+    if (instance == NULL) {
+        return;
+    }
+
+    data_independent_addressing =
+        (instance->type == Argon2_i) ||
+        (instance->type == Argon2_id && (position.pass == 0) &&
+         (position.slice < ARGON2_SYNC_POINTS / 2));
+
+    if (data_independent_addressing) {
+        init_block_value(&zero_block, 0);
+        init_block_value(&input_block, 0);
+
+        input_block.v[0] = position.pass;
+        input_block.v[1] = position.lane;
+        input_block.v[2] = position.slice;
+        input_block.v[3] = instance->memory_blocks;
+        input_block.v[4] = instance->passes;
+        input_block.v[5] = instance->type;
+    }
+
+    starting_index = 0;
+
+    if ((0 == position.pass) && (0 == position.slice)) {
+        starting_index = 2; /* we have already generated the first two blocks */
+
+        /* Don't forget to generate the first block of addresses: */
+        if (data_independent_addressing) {
+            next_addresses(&address_block, &input_block, &zero_block);
+        }
+    }
+
+    /* Offset of the current block */
+    curr_offset = position.lane * instance->lane_length +
+                  position.slice * instance->segment_length + starting_index;
+
+    if (0 == curr_offset % instance->lane_length) {
+        /* Last block in this lane */
+        prev_offset = curr_offset + instance->lane_length - 1;
+    } else {
+        /* Previous block */
+        prev_offset = curr_offset - 1;
+    }
+
+    for (i = starting_index; i < instance->segment_length;
+         ++i, ++curr_offset, ++prev_offset) {
+        /*1.1 Rotating prev_offset if needed */
+        if (curr_offset % instance->lane_length == 1) {
+            prev_offset = curr_offset - 1;
+        }
+
+        /* 1.2 Computing the index of the reference block */
+        /* 1.2.1 Taking pseudo-random value from the previous block */
+        if (data_independent_addressing) {
+            if (i % ARGON2_ADDRESSES_IN_BLOCK == 0) {
+                next_addresses(&address_block, &input_block, &zero_block);
+            }
+            pseudo_rand = address_block.v[i % ARGON2_ADDRESSES_IN_BLOCK];
+        } else {
+            pseudo_rand = instance->memory[prev_offset].v[0];
+        }
+
+        /* 1.2.2 Computing the lane of the reference block */
+        ref_lane = ((pseudo_rand >> 32)) % instance->lanes;
+
+        if ((position.pass == 0) && (position.slice == 0)) {
+            /* Can not reference other lanes yet */
+            ref_lane = position.lane;
+        }
+
+        /* 1.2.3 Computing the number of possible reference block within the
+         * lane.
+         */
+        position.index = i;
+        ref_index = index_alpha(instance, &position, pseudo_rand & 0xFFFFFFFF,
+                                ref_lane == position.lane);
+
+        /* 2 Creating a new block */
+        ref_block =
+            instance->memory + instance->lane_length * ref_lane + ref_index;
+        curr_block = instance->memory + curr_offset;
+        if (ARGON2_VERSION_10 == instance->version) {
+            /* version 1.2.1 and earlier: overwrite, not XOR */
+            fill_block(instance->memory + prev_offset, ref_block, curr_block, 0);
+        } else {
+            if(0 == position.pass) {
+                fill_block(instance->memory + prev_offset, ref_block,
+                           curr_block, 0);
+            } else {
+                fill_block(instance->memory + prev_offset, ref_block,
+                           curr_block, 1);
+            }
+        }
+    }
+}
diff --git a/cbits/argon2/ref.h b/cbits/argon2/ref.h
new file mode 100644
--- /dev/null
+++ b/cbits/argon2/ref.h
@@ -0,0 +1,35 @@
+/*
+ * Argon2 reference source code package - reference C implementations
+ *
+ * Copyright 2015
+ * Daniel Dinu, Dmitry Khovratovich, Jean-Philippe Aumasson, and Samuel Neves
+ *
+ * You may use this work under the terms of a Creative Commons CC0 1.0 
+ * License/Waiver or the Apache Public License 2.0, at your option. The terms of
+ * these licenses can be found at:
+ *
+ * - CC0 1.0 Universal : http://creativecommons.org/publicdomain/zero/1.0
+ * - Apache 2.0        : http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * You should have received a copy of both of these licenses along with this
+ * software. If not, they may be obtained at the above URLs.
+ */
+
+#ifndef ARGON2_REF_H
+#define ARGON2_REF_H
+
+#include "core.h"
+
+/*
+ * Function fills a new memory block and optionally XORs the old block over the new one.
+ * @next_block must be initialized.
+ * @param prev_block Pointer to the previous block
+ * @param ref_block Pointer to the reference block
+ * @param next_block Pointer to the block to be constructed
+ * @param with_xor Whether to XOR into the new block (1) or just overwrite (0)
+ * @pre all block pointers must be valid
+ */
+static void fill_block(const block *prev_block, const block *ref_block,
+                block *next_block, int with_xor);
+
+#endif /* ARGON2_REF_H */
diff --git a/cbits/argon2/thread.c b/cbits/argon2/thread.c
new file mode 100644
--- /dev/null
+++ b/cbits/argon2/thread.c
@@ -0,0 +1,57 @@
+/*
+ * Argon2 reference source code package - reference C implementations
+ *
+ * Copyright 2015
+ * Daniel Dinu, Dmitry Khovratovich, Jean-Philippe Aumasson, and Samuel Neves
+ *
+ * You may use this work under the terms of a Creative Commons CC0 1.0 
+ * License/Waiver or the Apache Public License 2.0, at your option. The terms of
+ * these licenses can be found at:
+ *
+ * - CC0 1.0 Universal : http://creativecommons.org/publicdomain/zero/1.0
+ * - Apache 2.0        : http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * You should have received a copy of both of these licenses along with this
+ * software. If not, they may be obtained at the above URLs.
+ */
+
+#if !defined(ARGON2_NO_THREADS)
+
+#include "thread.h"
+#if defined(_WIN32)
+#include <windows.h>
+#endif
+
+static int argon2_thread_create(argon2_thread_handle_t *handle,
+                         argon2_thread_func_t func, void *args) {
+    if (NULL == handle || func == NULL) {
+        return -1;
+    }
+#if defined(_WIN32)
+    *handle = _beginthreadex(NULL, 0, func, args, 0, NULL);
+    return *handle != 0 ? 0 : -1;
+#else
+    return pthread_create(handle, NULL, func, args);
+#endif
+}
+
+static int argon2_thread_join(argon2_thread_handle_t handle) {
+#if defined(_WIN32)
+    if (WaitForSingleObject((HANDLE)handle, INFINITE) == WAIT_OBJECT_0) {
+        return CloseHandle((HANDLE)handle) != 0 ? 0 : -1;
+    }
+    return -1;
+#else
+    return pthread_join(handle, NULL);
+#endif
+}
+
+static void argon2_thread_exit(void) {
+#if defined(_WIN32)
+    _endthreadex(0);
+#else
+    pthread_exit(NULL);
+#endif
+}
+
+#endif /* ARGON2_NO_THREADS */
diff --git a/cbits/argon2/thread.h b/cbits/argon2/thread.h
new file mode 100644
--- /dev/null
+++ b/cbits/argon2/thread.h
@@ -0,0 +1,67 @@
+/*
+ * Argon2 reference source code package - reference C implementations
+ *
+ * Copyright 2015
+ * Daniel Dinu, Dmitry Khovratovich, Jean-Philippe Aumasson, and Samuel Neves
+ *
+ * You may use this work under the terms of a Creative Commons CC0 1.0 
+ * License/Waiver or the Apache Public License 2.0, at your option. The terms of
+ * these licenses can be found at:
+ *
+ * - CC0 1.0 Universal : http://creativecommons.org/publicdomain/zero/1.0
+ * - Apache 2.0        : http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * You should have received a copy of both of these licenses along with this
+ * software. If not, they may be obtained at the above URLs.
+ */
+
+#ifndef ARGON2_THREAD_H
+#define ARGON2_THREAD_H
+
+#if !defined(ARGON2_NO_THREADS)
+
+/*
+        Here we implement an abstraction layer for the simpĺe requirements
+        of the Argon2 code. We only require 3 primitives---thread creation,
+        joining, and termination---so full emulation of the pthreads API
+        is unwarranted. Currently we wrap pthreads and Win32 threads.
+
+        The API defines 2 types: the function pointer type,
+   argon2_thread_func_t,
+        and the type of the thread handle---argon2_thread_handle_t.
+*/
+#if defined(_WIN32)
+#include <process.h>
+typedef unsigned(__stdcall *argon2_thread_func_t)(void *);
+typedef uintptr_t argon2_thread_handle_t;
+#else
+#include <pthread.h>
+typedef void *(*argon2_thread_func_t)(void *);
+typedef pthread_t argon2_thread_handle_t;
+#endif
+
+/* Creates a thread
+ * @param handle pointer to a thread handle, which is the output of this
+ * function. Must not be NULL.
+ * @param func A function pointer for the thread's entry point. Must not be
+ * NULL.
+ * @param args Pointer that is passed as an argument to @func. May be NULL.
+ * @return 0 if @handle and @func are valid pointers and a thread is successfuly
+ * created.
+ */
+static int argon2_thread_create(argon2_thread_handle_t *handle,
+                         argon2_thread_func_t func, void *args);
+
+/* Waits for a thread to terminate
+ * @param handle Handle to a thread created with argon2_thread_create.
+ * @return 0 if @handle is a valid handle, and joining completed successfully.
+*/
+static int argon2_thread_join(argon2_thread_handle_t handle);
+
+/* Terminate the current thread. Must be run inside a thread created by
+ * argon2_thread_create.
+*/
+static void argon2_thread_exit(void);
+
+#endif /* ARGON2_NO_THREADS */
+#endif
diff --git a/cbits/blake2/ref/blake2-impl.h b/cbits/blake2/ref/blake2-impl.h
--- a/cbits/blake2/ref/blake2-impl.h
+++ b/cbits/blake2/ref/blake2-impl.h
@@ -1,23 +1,36 @@
 /*
    BLAKE2 reference source code package - reference C implementations
 
-   Written in 2012 by Samuel Neves <sneves@dei.uc.pt>
+   Copyright 2012, Samuel Neves <sneves@dei.uc.pt>.  You may use this under the
+   terms of the CC0, the OpenSSL Licence, or the Apache Public License 2.0, at
+   your option.  The terms of these licenses can be found at:
 
-   To the extent possible under law, the author(s) have dedicated all copyright
-   and related and neighboring rights to this software to the public domain
-   worldwide. This software is distributed without any warranty.
+   - CC0 1.0 Universal : http://creativecommons.org/publicdomain/zero/1.0
+   - OpenSSL license   : https://www.openssl.org/source/license.html
+   - Apache 2.0        : http://www.apache.org/licenses/LICENSE-2.0
 
-   You should have received a copy of the CC0 Public Domain Dedication along with
-   this software. If not, see <http://creativecommons.org/publicdomain/zero/1.0/>.
+   More information about the BLAKE2 hash function can be found at
+   https://blake2.net.
 */
-#pragma once
-#ifndef __BLAKE2_IMPL_H__
-#define __BLAKE2_IMPL_H__
+#ifndef BLAKE2_IMPL_H
+#define BLAKE2_IMPL_H
 
 #include <stdint.h>
 #include <string.h>
 
-static inline uint32_t load32( const void *src )
+#if !defined(__cplusplus) && (!defined(__STDC_VERSION__) || __STDC_VERSION__ < 199901L)
+  #if   defined(_MSC_VER)
+    #define BLAKE2_INLINE __inline
+  #elif defined(__GNUC__)
+    #define BLAKE2_INLINE __inline__
+  #else
+    #define BLAKE2_INLINE
+  #endif
+#else
+  #define BLAKE2_INLINE inline
+#endif
+
+static BLAKE2_INLINE uint32_t load32( const void *src )
 {
 #if defined(NATIVE_LITTLE_ENDIAN)
   uint32_t w;
@@ -25,15 +38,14 @@
   return w;
 #else
   const uint8_t *p = ( const uint8_t * )src;
-  uint32_t w = *p++;
-  w |= ( uint32_t )( *p++ ) <<  8;
-  w |= ( uint32_t )( *p++ ) << 16;
-  w |= ( uint32_t )( *p++ ) << 24;
-  return w;
+  return (( uint32_t )( p[0] ) <<  0) |
+         (( uint32_t )( p[1] ) <<  8) |
+         (( uint32_t )( p[2] ) << 16) |
+         (( uint32_t )( p[3] ) << 24) ;
 #endif
 }
 
-static inline uint64_t load64( const void *src )
+static BLAKE2_INLINE uint64_t load64( const void *src )
 {
 #if defined(NATIVE_LITTLE_ENDIAN)
   uint64_t w;
@@ -41,97 +53,108 @@
   return w;
 #else
   const uint8_t *p = ( const uint8_t * )src;
-  uint64_t w = *p++;
-  w |= ( uint64_t )( *p++ ) <<  8;
-  w |= ( uint64_t )( *p++ ) << 16;
-  w |= ( uint64_t )( *p++ ) << 24;
-  w |= ( uint64_t )( *p++ ) << 32;
-  w |= ( uint64_t )( *p++ ) << 40;
-  w |= ( uint64_t )( *p++ ) << 48;
-  w |= ( uint64_t )( *p++ ) << 56;
-  return w;
+  return (( uint64_t )( p[0] ) <<  0) |
+         (( uint64_t )( p[1] ) <<  8) |
+         (( uint64_t )( p[2] ) << 16) |
+         (( uint64_t )( p[3] ) << 24) |
+         (( uint64_t )( p[4] ) << 32) |
+         (( uint64_t )( p[5] ) << 40) |
+         (( uint64_t )( p[6] ) << 48) |
+         (( uint64_t )( p[7] ) << 56) ;
 #endif
 }
 
-static inline void store32( void *dst, uint32_t w )
+static BLAKE2_INLINE uint16_t load16( const void *src )
 {
 #if defined(NATIVE_LITTLE_ENDIAN)
-  memcpy(dst, &w, sizeof w);
+  uint16_t w;
+  memcpy(&w, src, sizeof w);
+  return w;
 #else
-  uint8_t *p = ( uint8_t * )dst;
-  *p++ = ( uint8_t )w; w >>= 8;
-  *p++ = ( uint8_t )w; w >>= 8;
-  *p++ = ( uint8_t )w; w >>= 8;
-  *p++ = ( uint8_t )w;
+  const uint8_t *p = ( const uint8_t * )src;
+  return (( uint16_t )( p[0] ) <<  0) |
+         (( uint16_t )( p[1] ) <<  8) ;
 #endif
 }
 
-static inline void store64( void *dst, uint64_t w )
+static BLAKE2_INLINE void store16( void *dst, uint16_t w )
 {
 #if defined(NATIVE_LITTLE_ENDIAN)
   memcpy(dst, &w, sizeof w);
 #else
   uint8_t *p = ( uint8_t * )dst;
   *p++ = ( uint8_t )w; w >>= 8;
-  *p++ = ( uint8_t )w; w >>= 8;
-  *p++ = ( uint8_t )w; w >>= 8;
-  *p++ = ( uint8_t )w; w >>= 8;
-  *p++ = ( uint8_t )w; w >>= 8;
-  *p++ = ( uint8_t )w; w >>= 8;
-  *p++ = ( uint8_t )w; w >>= 8;
   *p++ = ( uint8_t )w;
 #endif
 }
 
-static inline uint64_t load48( const void *src )
+static BLAKE2_INLINE void store32( void *dst, uint32_t w )
 {
-  const uint8_t *p = ( const uint8_t * )src;
-  uint64_t w = *p++;
-  w |= ( uint64_t )( *p++ ) <<  8;
-  w |= ( uint64_t )( *p++ ) << 16;
-  w |= ( uint64_t )( *p++ ) << 24;
-  w |= ( uint64_t )( *p++ ) << 32;
-  w |= ( uint64_t )( *p++ ) << 40;
-  return w;
+#if defined(NATIVE_LITTLE_ENDIAN)
+  memcpy(dst, &w, sizeof w);
+#else
+  uint8_t *p = ( uint8_t * )dst;
+  p[0] = (uint8_t)(w >>  0);
+  p[1] = (uint8_t)(w >>  8);
+  p[2] = (uint8_t)(w >> 16);
+  p[3] = (uint8_t)(w >> 24);
+#endif
 }
 
-static inline void store48( void *dst, uint64_t w )
+static BLAKE2_INLINE void store64( void *dst, uint64_t w )
 {
+#if defined(NATIVE_LITTLE_ENDIAN)
+  memcpy(dst, &w, sizeof w);
+#else
   uint8_t *p = ( uint8_t * )dst;
-  *p++ = ( uint8_t )w; w >>= 8;
-  *p++ = ( uint8_t )w; w >>= 8;
-  *p++ = ( uint8_t )w; w >>= 8;
-  *p++ = ( uint8_t )w; w >>= 8;
-  *p++ = ( uint8_t )w; w >>= 8;
-  *p++ = ( uint8_t )w;
+  p[0] = (uint8_t)(w >>  0);
+  p[1] = (uint8_t)(w >>  8);
+  p[2] = (uint8_t)(w >> 16);
+  p[3] = (uint8_t)(w >> 24);
+  p[4] = (uint8_t)(w >> 32);
+  p[5] = (uint8_t)(w >> 40);
+  p[6] = (uint8_t)(w >> 48);
+  p[7] = (uint8_t)(w >> 56);
+#endif
 }
 
-static inline uint32_t rotl32( const uint32_t w, const unsigned c )
+static BLAKE2_INLINE uint64_t load48( const void *src )
 {
-  return ( w << c ) | ( w >> ( 32 - c ) );
+  const uint8_t *p = ( const uint8_t * )src;
+  return (( uint64_t )( p[0] ) <<  0) |
+         (( uint64_t )( p[1] ) <<  8) |
+         (( uint64_t )( p[2] ) << 16) |
+         (( uint64_t )( p[3] ) << 24) |
+         (( uint64_t )( p[4] ) << 32) |
+         (( uint64_t )( p[5] ) << 40) ;
 }
 
-static inline uint64_t rotl64( const uint64_t w, const unsigned c )
+static BLAKE2_INLINE void store48( void *dst, uint64_t w )
 {
-  return ( w << c ) | ( w >> ( 64 - c ) );
+  uint8_t *p = ( uint8_t * )dst;
+  p[0] = (uint8_t)(w >>  0);
+  p[1] = (uint8_t)(w >>  8);
+  p[2] = (uint8_t)(w >> 16);
+  p[3] = (uint8_t)(w >> 24);
+  p[4] = (uint8_t)(w >> 32);
+  p[5] = (uint8_t)(w >> 40);
 }
 
-static inline uint32_t rotr32( const uint32_t w, const unsigned c )
+static BLAKE2_INLINE uint32_t rotr32( const uint32_t w, const unsigned c )
 {
   return ( w >> c ) | ( w << ( 32 - c ) );
 }
 
-static inline uint64_t rotr64( const uint64_t w, const unsigned c )
+static BLAKE2_INLINE uint64_t rotr64( const uint64_t w, const unsigned c )
 {
   return ( w >> c ) | ( w << ( 64 - c ) );
 }
 
 /* prevents compiler optimizing out memset() */
-static inline void secure_zero_memory(void *v, size_t n)
+static BLAKE2_INLINE void secure_zero_memory(void *v, size_t n)
 {
   static void *(*const volatile memset_v)(void *, int, size_t) = &memset;
   memset_v(v, 0, n);
 }
 
 #endif
-
diff --git a/cbits/blake2/ref/blake2-kat.h b/cbits/blake2/ref/blake2-kat.h
deleted file mode 100644
--- a/cbits/blake2/ref/blake2-kat.h
+++ /dev/null
@@ -1,16467 +0,0 @@
-/*
-   BLAKE2 reference source code package - reference C implementations
-
-   Written in 2012 by Samuel Neves <sneves@dei.uc.pt>
-
-   To the extent possible under law, the author(s) have dedicated all copyright
-   and related and neighboring rights to this software to the public domain
-   worldwide. This software is distributed without any warranty.
-
-   You should have received a copy of the CC0 Public Domain Dedication along with
-   this software. If not, see <http://creativecommons.org/publicdomain/zero/1.0/>.
-*/
-#pragma once
-#ifndef __BLAKE2_KAT_H__
-#define __BLAKE2_KAT_H__
-
-
-#include <stdint.h>
-
-#define KAT_LENGTH 256
-
-
-
-static const uint8_t blake2s_kat[KAT_LENGTH][BLAKE2S_OUTBYTES] =
-{
-  {
-    0x69, 0x21, 0x7A, 0x30, 0x79, 0x90, 0x80, 0x94,
-    0xE1, 0x11, 0x21, 0xD0, 0x42, 0x35, 0x4A, 0x7C,
-    0x1F, 0x55, 0xB6, 0x48, 0x2C, 0xA1, 0xA5, 0x1E,
-    0x1B, 0x25, 0x0D, 0xFD, 0x1E, 0xD0, 0xEE, 0xF9
-  },
-  {
-    0xE3, 0x4D, 0x74, 0xDB, 0xAF, 0x4F, 0xF4, 0xC6,
-    0xAB, 0xD8, 0x71, 0xCC, 0x22, 0x04, 0x51, 0xD2,
-    0xEA, 0x26, 0x48, 0x84, 0x6C, 0x77, 0x57, 0xFB,
-    0xAA, 0xC8, 0x2F, 0xE5, 0x1A, 0xD6, 0x4B, 0xEA
-  },
-  {
-    0xDD, 0xAD, 0x9A, 0xB1, 0x5D, 0xAC, 0x45, 0x49,
-    0xBA, 0x42, 0xF4, 0x9D, 0x26, 0x24, 0x96, 0xBE,
-    0xF6, 0xC0, 0xBA, 0xE1, 0xDD, 0x34, 0x2A, 0x88,
-    0x08, 0xF8, 0xEA, 0x26, 0x7C, 0x6E, 0x21, 0x0C
-  },
-  {
-    0xE8, 0xF9, 0x1C, 0x6E, 0xF2, 0x32, 0xA0, 0x41,
-    0x45, 0x2A, 0xB0, 0xE1, 0x49, 0x07, 0x0C, 0xDD,
-    0x7D, 0xD1, 0x76, 0x9E, 0x75, 0xB3, 0xA5, 0x92,
-    0x1B, 0xE3, 0x78, 0x76, 0xC4, 0x5C, 0x99, 0x00
-  },
-  {
-    0x0C, 0xC7, 0x0E, 0x00, 0x34, 0x8B, 0x86, 0xBA,
-    0x29, 0x44, 0xD0, 0xC3, 0x20, 0x38, 0xB2, 0x5C,
-    0x55, 0x58, 0x4F, 0x90, 0xDF, 0x23, 0x04, 0xF5,
-    0x5F, 0xA3, 0x32, 0xAF, 0x5F, 0xB0, 0x1E, 0x20
-  },
-  {
-    0xEC, 0x19, 0x64, 0x19, 0x10, 0x87, 0xA4, 0xFE,
-    0x9D, 0xF1, 0xC7, 0x95, 0x34, 0x2A, 0x02, 0xFF,
-    0xC1, 0x91, 0xA5, 0xB2, 0x51, 0x76, 0x48, 0x56,
-    0xAE, 0x5B, 0x8B, 0x57, 0x69, 0xF0, 0xC6, 0xCD
-  },
-  {
-    0xE1, 0xFA, 0x51, 0x61, 0x8D, 0x7D, 0xF4, 0xEB,
-    0x70, 0xCF, 0x0D, 0x5A, 0x9E, 0x90, 0x6F, 0x80,
-    0x6E, 0x9D, 0x19, 0xF7, 0xF4, 0xF0, 0x1E, 0x3B,
-    0x62, 0x12, 0x88, 0xE4, 0x12, 0x04, 0x05, 0xD6
-  },
-  {
-    0x59, 0x80, 0x01, 0xFA, 0xFB, 0xE8, 0xF9, 0x4E,
-    0xC6, 0x6D, 0xC8, 0x27, 0xD0, 0x12, 0xCF, 0xCB,
-    0xBA, 0x22, 0x28, 0x56, 0x9F, 0x44, 0x8E, 0x89,
-    0xEA, 0x22, 0x08, 0xC8, 0xBF, 0x76, 0x92, 0x93
-  },
-  {
-    0xC7, 0xE8, 0x87, 0xB5, 0x46, 0x62, 0x36, 0x35,
-    0xE9, 0x3E, 0x04, 0x95, 0x59, 0x8F, 0x17, 0x26,
-    0x82, 0x19, 0x96, 0xC2, 0x37, 0x77, 0x05, 0xB9,
-    0x3A, 0x1F, 0x63, 0x6F, 0x87, 0x2B, 0xFA, 0x2D
-  },
-  {
-    0xC3, 0x15, 0xA4, 0x37, 0xDD, 0x28, 0x06, 0x2A,
-    0x77, 0x0D, 0x48, 0x19, 0x67, 0x13, 0x6B, 0x1B,
-    0x5E, 0xB8, 0x8B, 0x21, 0xEE, 0x53, 0xD0, 0x32,
-    0x9C, 0x58, 0x97, 0x12, 0x6E, 0x9D, 0xB0, 0x2C
-  },
-  {
-    0xBB, 0x47, 0x3D, 0xED, 0xDC, 0x05, 0x5F, 0xEA,
-    0x62, 0x28, 0xF2, 0x07, 0xDA, 0x57, 0x53, 0x47,
-    0xBB, 0x00, 0x40, 0x4C, 0xD3, 0x49, 0xD3, 0x8C,
-    0x18, 0x02, 0x63, 0x07, 0xA2, 0x24, 0xCB, 0xFF
-  },
-  {
-    0x68, 0x7E, 0x18, 0x73, 0xA8, 0x27, 0x75, 0x91,
-    0xBB, 0x33, 0xD9, 0xAD, 0xF9, 0xA1, 0x39, 0x12,
-    0xEF, 0xEF, 0xE5, 0x57, 0xCA, 0xFC, 0x39, 0xA7,
-    0x95, 0x26, 0x23, 0xE4, 0x72, 0x55, 0xF1, 0x6D
-  },
-  {
-    0x1A, 0xC7, 0xBA, 0x75, 0x4D, 0x6E, 0x2F, 0x94,
-    0xE0, 0xE8, 0x6C, 0x46, 0xBF, 0xB2, 0x62, 0xAB,
-    0xBB, 0x74, 0xF4, 0x50, 0xEF, 0x45, 0x6D, 0x6B,
-    0x4D, 0x97, 0xAA, 0x80, 0xCE, 0x6D, 0xA7, 0x67
-  },
-  {
-    0x01, 0x2C, 0x97, 0x80, 0x96, 0x14, 0x81, 0x6B,
-    0x5D, 0x94, 0x94, 0x47, 0x7D, 0x4B, 0x68, 0x7D,
-    0x15, 0xB9, 0x6E, 0xB6, 0x9C, 0x0E, 0x80, 0x74,
-    0xA8, 0x51, 0x6F, 0x31, 0x22, 0x4B, 0x5C, 0x98
-  },
-  {
-    0x91, 0xFF, 0xD2, 0x6C, 0xFA, 0x4D, 0xA5, 0x13,
-    0x4C, 0x7E, 0xA2, 0x62, 0xF7, 0x88, 0x9C, 0x32,
-    0x9F, 0x61, 0xF6, 0xA6, 0x57, 0x22, 0x5C, 0xC2,
-    0x12, 0xF4, 0x00, 0x56, 0xD9, 0x86, 0xB3, 0xF4
-  },
-  {
-    0xD9, 0x7C, 0x82, 0x8D, 0x81, 0x82, 0xA7, 0x21,
-    0x80, 0xA0, 0x6A, 0x78, 0x26, 0x83, 0x30, 0x67,
-    0x3F, 0x7C, 0x4E, 0x06, 0x35, 0x94, 0x7C, 0x04,
-    0xC0, 0x23, 0x23, 0xFD, 0x45, 0xC0, 0xA5, 0x2D
-  },
-  {
-    0xEF, 0xC0, 0x4C, 0xDC, 0x39, 0x1C, 0x7E, 0x91,
-    0x19, 0xBD, 0x38, 0x66, 0x8A, 0x53, 0x4E, 0x65,
-    0xFE, 0x31, 0x03, 0x6D, 0x6A, 0x62, 0x11, 0x2E,
-    0x44, 0xEB, 0xEB, 0x11, 0xF9, 0xC5, 0x70, 0x80
-  },
-  {
-    0x99, 0x2C, 0xF5, 0xC0, 0x53, 0x44, 0x2A, 0x5F,
-    0xBC, 0x4F, 0xAF, 0x58, 0x3E, 0x04, 0xE5, 0x0B,
-    0xB7, 0x0D, 0x2F, 0x39, 0xFB, 0xB6, 0xA5, 0x03,
-    0xF8, 0x9E, 0x56, 0xA6, 0x3E, 0x18, 0x57, 0x8A
-  },
-  {
-    0x38, 0x64, 0x0E, 0x9F, 0x21, 0x98, 0x3E, 0x67,
-    0xB5, 0x39, 0xCA, 0xCC, 0xAE, 0x5E, 0xCF, 0x61,
-    0x5A, 0xE2, 0x76, 0x4F, 0x75, 0xA0, 0x9C, 0x9C,
-    0x59, 0xB7, 0x64, 0x83, 0xC1, 0xFB, 0xC7, 0x35
-  },
-  {
-    0x21, 0x3D, 0xD3, 0x4C, 0x7E, 0xFE, 0x4F, 0xB2,
-    0x7A, 0x6B, 0x35, 0xF6, 0xB4, 0x00, 0x0D, 0x1F,
-    0xE0, 0x32, 0x81, 0xAF, 0x3C, 0x72, 0x3E, 0x5C,
-    0x9F, 0x94, 0x74, 0x7A, 0x5F, 0x31, 0xCD, 0x3B
-  },
-  {
-    0xEC, 0x24, 0x6E, 0xEE, 0xB9, 0xCE, 0xD3, 0xF7,
-    0xAD, 0x33, 0xED, 0x28, 0x66, 0x0D, 0xD9, 0xBB,
-    0x07, 0x32, 0x51, 0x3D, 0xB4, 0xE2, 0xFA, 0x27,
-    0x8B, 0x60, 0xCD, 0xE3, 0x68, 0x2A, 0x4C, 0xCD
-  },
-  {
-    0xAC, 0x9B, 0x61, 0xD4, 0x46, 0x64, 0x8C, 0x30,
-    0x05, 0xD7, 0x89, 0x2B, 0xF3, 0xA8, 0x71, 0x9F,
-    0x4C, 0x81, 0x81, 0xCF, 0xDC, 0xBC, 0x2B, 0x79,
-    0xFE, 0xF1, 0x0A, 0x27, 0x9B, 0x91, 0x10, 0x95
-  },
-  {
-    0x7B, 0xF8, 0xB2, 0x29, 0x59, 0xE3, 0x4E, 0x3A,
-    0x43, 0xF7, 0x07, 0x92, 0x23, 0xE8, 0x3A, 0x97,
-    0x54, 0x61, 0x7D, 0x39, 0x1E, 0x21, 0x3D, 0xFD,
-    0x80, 0x8E, 0x41, 0xB9, 0xBE, 0xAD, 0x4C, 0xE7
-  },
-  {
-    0x68, 0xD4, 0xB5, 0xD4, 0xFA, 0x0E, 0x30, 0x2B,
-    0x64, 0xCC, 0xC5, 0xAF, 0x79, 0x29, 0x13, 0xAC,
-    0x4C, 0x88, 0xEC, 0x95, 0xC0, 0x7D, 0xDF, 0x40,
-    0x69, 0x42, 0x56, 0xEB, 0x88, 0xCE, 0x9F, 0x3D
-  },
-  {
-    0xB2, 0xC2, 0x42, 0x0F, 0x05, 0xF9, 0xAB, 0xE3,
-    0x63, 0x15, 0x91, 0x93, 0x36, 0xB3, 0x7E, 0x4E,
-    0x0F, 0xA3, 0x3F, 0xF7, 0xE7, 0x6A, 0x49, 0x27,
-    0x67, 0x00, 0x6F, 0xDB, 0x5D, 0x93, 0x54, 0x62
-  },
-  {
-    0x13, 0x4F, 0x61, 0xBB, 0xD0, 0xBB, 0xB6, 0x9A,
-    0xED, 0x53, 0x43, 0x90, 0x45, 0x51, 0xA3, 0xE6,
-    0xC1, 0xAA, 0x7D, 0xCD, 0xD7, 0x7E, 0x90, 0x3E,
-    0x70, 0x23, 0xEB, 0x7C, 0x60, 0x32, 0x0A, 0xA7
-  },
-  {
-    0x46, 0x93, 0xF9, 0xBF, 0xF7, 0xD4, 0xF3, 0x98,
-    0x6A, 0x7D, 0x17, 0x6E, 0x6E, 0x06, 0xF7, 0x2A,
-    0xD1, 0x49, 0x0D, 0x80, 0x5C, 0x99, 0xE2, 0x53,
-    0x47, 0xB8, 0xDE, 0x77, 0xB4, 0xDB, 0x6D, 0x9B
-  },
-  {
-    0x85, 0x3E, 0x26, 0xF7, 0x41, 0x95, 0x3B, 0x0F,
-    0xD5, 0xBD, 0xB4, 0x24, 0xE8, 0xAB, 0x9E, 0x8B,
-    0x37, 0x50, 0xEA, 0xA8, 0xEF, 0x61, 0xE4, 0x79,
-    0x02, 0xC9, 0x1E, 0x55, 0x4E, 0x9C, 0x73, 0xB9
-  },
-  {
-    0xF7, 0xDE, 0x53, 0x63, 0x61, 0xAB, 0xAA, 0x0E,
-    0x15, 0x81, 0x56, 0xCF, 0x0E, 0xA4, 0xF6, 0x3A,
-    0x99, 0xB5, 0xE4, 0x05, 0x4F, 0x8F, 0xA4, 0xC9,
-    0xD4, 0x5F, 0x62, 0x85, 0xCA, 0xD5, 0x56, 0x94
-  },
-  {
-    0x4C, 0x23, 0x06, 0x08, 0x86, 0x0A, 0x99, 0xAE,
-    0x8D, 0x7B, 0xD5, 0xC2, 0xCC, 0x17, 0xFA, 0x52,
-    0x09, 0x6B, 0x9A, 0x61, 0xBE, 0xDB, 0x17, 0xCB,
-    0x76, 0x17, 0x86, 0x4A, 0xD2, 0x9C, 0xA7, 0xA6
-  },
-  {
-    0xAE, 0xB9, 0x20, 0xEA, 0x87, 0x95, 0x2D, 0xAD,
-    0xB1, 0xFB, 0x75, 0x92, 0x91, 0xE3, 0x38, 0x81,
-    0x39, 0xA8, 0x72, 0x86, 0x50, 0x01, 0x88, 0x6E,
-    0xD8, 0x47, 0x52, 0xE9, 0x3C, 0x25, 0x0C, 0x2A
-  },
-  {
-    0xAB, 0xA4, 0xAD, 0x9B, 0x48, 0x0B, 0x9D, 0xF3,
-    0xD0, 0x8C, 0xA5, 0xE8, 0x7B, 0x0C, 0x24, 0x40,
-    0xD4, 0xE4, 0xEA, 0x21, 0x22, 0x4C, 0x2E, 0xB4,
-    0x2C, 0xBA, 0xE4, 0x69, 0xD0, 0x89, 0xB9, 0x31
-  },
-  {
-    0x05, 0x82, 0x56, 0x07, 0xD7, 0xFD, 0xF2, 0xD8,
-    0x2E, 0xF4, 0xC3, 0xC8, 0xC2, 0xAE, 0xA9, 0x61,
-    0xAD, 0x98, 0xD6, 0x0E, 0xDF, 0xF7, 0xD0, 0x18,
-    0x98, 0x3E, 0x21, 0x20, 0x4C, 0x0D, 0x93, 0xD1
-  },
-  {
-    0xA7, 0x42, 0xF8, 0xB6, 0xAF, 0x82, 0xD8, 0xA6,
-    0xCA, 0x23, 0x57, 0xC5, 0xF1, 0xCF, 0x91, 0xDE,
-    0xFB, 0xD0, 0x66, 0x26, 0x7D, 0x75, 0xC0, 0x48,
-    0xB3, 0x52, 0x36, 0x65, 0x85, 0x02, 0x59, 0x62
-  },
-  {
-    0x2B, 0xCA, 0xC8, 0x95, 0x99, 0x00, 0x0B, 0x42,
-    0xC9, 0x5A, 0xE2, 0x38, 0x35, 0xA7, 0x13, 0x70,
-    0x4E, 0xD7, 0x97, 0x89, 0xC8, 0x4F, 0xEF, 0x14,
-    0x9A, 0x87, 0x4F, 0xF7, 0x33, 0xF0, 0x17, 0xA2
-  },
-  {
-    0xAC, 0x1E, 0xD0, 0x7D, 0x04, 0x8F, 0x10, 0x5A,
-    0x9E, 0x5B, 0x7A, 0xB8, 0x5B, 0x09, 0xA4, 0x92,
-    0xD5, 0xBA, 0xFF, 0x14, 0xB8, 0xBF, 0xB0, 0xE9,
-    0xFD, 0x78, 0x94, 0x86, 0xEE, 0xA2, 0xB9, 0x74
-  },
-  {
-    0xE4, 0x8D, 0x0E, 0xCF, 0xAF, 0x49, 0x7D, 0x5B,
-    0x27, 0xC2, 0x5D, 0x99, 0xE1, 0x56, 0xCB, 0x05,
-    0x79, 0xD4, 0x40, 0xD6, 0xE3, 0x1F, 0xB6, 0x24,
-    0x73, 0x69, 0x6D, 0xBF, 0x95, 0xE0, 0x10, 0xE4
-  },
-  {
-    0x12, 0xA9, 0x1F, 0xAD, 0xF8, 0xB2, 0x16, 0x44,
-    0xFD, 0x0F, 0x93, 0x4F, 0x3C, 0x4A, 0x8F, 0x62,
-    0xBA, 0x86, 0x2F, 0xFD, 0x20, 0xE8, 0xE9, 0x61,
-    0x15, 0x4C, 0x15, 0xC1, 0x38, 0x84, 0xED, 0x3D
-  },
-  {
-    0x7C, 0xBE, 0xE9, 0x6E, 0x13, 0x98, 0x97, 0xDC,
-    0x98, 0xFB, 0xEF, 0x3B, 0xE8, 0x1A, 0xD4, 0xD9,
-    0x64, 0xD2, 0x35, 0xCB, 0x12, 0x14, 0x1F, 0xB6,
-    0x67, 0x27, 0xE6, 0xE5, 0xDF, 0x73, 0xA8, 0x78
-  },
-  {
-    0xEB, 0xF6, 0x6A, 0xBB, 0x59, 0x7A, 0xE5, 0x72,
-    0xA7, 0x29, 0x7C, 0xB0, 0x87, 0x1E, 0x35, 0x5A,
-    0xCC, 0xAF, 0xAD, 0x83, 0x77, 0xB8, 0xE7, 0x8B,
-    0xF1, 0x64, 0xCE, 0x2A, 0x18, 0xDE, 0x4B, 0xAF
-  },
-  {
-    0x71, 0xB9, 0x33, 0xB0, 0x7E, 0x4F, 0xF7, 0x81,
-    0x8C, 0xE0, 0x59, 0xD0, 0x08, 0x82, 0x9E, 0x45,
-    0x3C, 0x6F, 0xF0, 0x2E, 0xC0, 0xA7, 0xDB, 0x39,
-    0x3F, 0xC2, 0xD8, 0x70, 0xF3, 0x7A, 0x72, 0x86
-  },
-  {
-    0x7C, 0xF7, 0xC5, 0x13, 0x31, 0x22, 0x0B, 0x8D,
-    0x3E, 0xBA, 0xED, 0x9C, 0x29, 0x39, 0x8A, 0x16,
-    0xD9, 0x81, 0x56, 0xE2, 0x61, 0x3C, 0xB0, 0x88,
-    0xF2, 0xB0, 0xE0, 0x8A, 0x1B, 0xE4, 0xCF, 0x4F
-  },
-  {
-    0x3E, 0x41, 0xA1, 0x08, 0xE0, 0xF6, 0x4A, 0xD2,
-    0x76, 0xB9, 0x79, 0xE1, 0xCE, 0x06, 0x82, 0x79,
-    0xE1, 0x6F, 0x7B, 0xC7, 0xE4, 0xAA, 0x1D, 0x21,
-    0x1E, 0x17, 0xB8, 0x11, 0x61, 0xDF, 0x16, 0x02
-  },
-  {
-    0x88, 0x65, 0x02, 0xA8, 0x2A, 0xB4, 0x7B, 0xA8,
-    0xD8, 0x67, 0x10, 0xAA, 0x9D, 0xE3, 0xD4, 0x6E,
-    0xA6, 0x5C, 0x47, 0xAF, 0x6E, 0xE8, 0xDE, 0x45,
-    0x0C, 0xCE, 0xB8, 0xB1, 0x1B, 0x04, 0x5F, 0x50
-  },
-  {
-    0xC0, 0x21, 0xBC, 0x5F, 0x09, 0x54, 0xFE, 0xE9,
-    0x4F, 0x46, 0xEA, 0x09, 0x48, 0x7E, 0x10, 0xA8,
-    0x48, 0x40, 0xD0, 0x2F, 0x64, 0x81, 0x0B, 0xC0,
-    0x8D, 0x9E, 0x55, 0x1F, 0x7D, 0x41, 0x68, 0x14
-  },
-  {
-    0x20, 0x30, 0x51, 0x6E, 0x8A, 0x5F, 0xE1, 0x9A,
-    0xE7, 0x9C, 0x33, 0x6F, 0xCE, 0x26, 0x38, 0x2A,
-    0x74, 0x9D, 0x3F, 0xD0, 0xEC, 0x91, 0xE5, 0x37,
-    0xD4, 0xBD, 0x23, 0x58, 0xC1, 0x2D, 0xFB, 0x22
-  },
-  {
-    0x55, 0x66, 0x98, 0xDA, 0xC8, 0x31, 0x7F, 0xD3,
-    0x6D, 0xFB, 0xDF, 0x25, 0xA7, 0x9C, 0xB1, 0x12,
-    0xD5, 0x42, 0x58, 0x60, 0x60, 0x5C, 0xBA, 0xF5,
-    0x07, 0xF2, 0x3B, 0xF7, 0xE9, 0xF4, 0x2A, 0xFE
-  },
-  {
-    0x2F, 0x86, 0x7B, 0xA6, 0x77, 0x73, 0xFD, 0xC3,
-    0xE9, 0x2F, 0xCE, 0xD9, 0x9A, 0x64, 0x09, 0xAD,
-    0x39, 0xD0, 0xB8, 0x80, 0xFD, 0xE8, 0xF1, 0x09,
-    0xA8, 0x17, 0x30, 0xC4, 0x45, 0x1D, 0x01, 0x78
-  },
-  {
-    0x17, 0x2E, 0xC2, 0x18, 0xF1, 0x19, 0xDF, 0xAE,
-    0x98, 0x89, 0x6D, 0xFF, 0x29, 0xDD, 0x98, 0x76,
-    0xC9, 0x4A, 0xF8, 0x74, 0x17, 0xF9, 0xAE, 0x4C,
-    0x70, 0x14, 0xBB, 0x4E, 0x4B, 0x96, 0xAF, 0xC7
-  },
-  {
-    0x3F, 0x85, 0x81, 0x4A, 0x18, 0x19, 0x5F, 0x87,
-    0x9A, 0xA9, 0x62, 0xF9, 0x5D, 0x26, 0xBD, 0x82,
-    0xA2, 0x78, 0xF2, 0xB8, 0x23, 0x20, 0x21, 0x8F,
-    0x6B, 0x3B, 0xD6, 0xF7, 0xF6, 0x67, 0xA6, 0xD9
-  },
-  {
-    0x1B, 0x61, 0x8F, 0xBA, 0xA5, 0x66, 0xB3, 0xD4,
-    0x98, 0xC1, 0x2E, 0x98, 0x2C, 0x9E, 0xC5, 0x2E,
-    0x4D, 0xA8, 0x5A, 0x8C, 0x54, 0xF3, 0x8F, 0x34,
-    0xC0, 0x90, 0x39, 0x4F, 0x23, 0xC1, 0x84, 0xC1
-  },
-  {
-    0x0C, 0x75, 0x8F, 0xB5, 0x69, 0x2F, 0xFD, 0x41,
-    0xA3, 0x57, 0x5D, 0x0A, 0xF0, 0x0C, 0xC7, 0xFB,
-    0xF2, 0xCB, 0xE5, 0x90, 0x5A, 0x58, 0x32, 0x3A,
-    0x88, 0xAE, 0x42, 0x44, 0xF6, 0xE4, 0xC9, 0x93
-  },
-  {
-    0xA9, 0x31, 0x36, 0x0C, 0xAD, 0x62, 0x8C, 0x7F,
-    0x12, 0xA6, 0xC1, 0xC4, 0xB7, 0x53, 0xB0, 0xF4,
-    0x06, 0x2A, 0xEF, 0x3C, 0xE6, 0x5A, 0x1A, 0xE3,
-    0xF1, 0x93, 0x69, 0xDA, 0xDF, 0x3A, 0xE2, 0x3D
-  },
-  {
-    0xCB, 0xAC, 0x7D, 0x77, 0x3B, 0x1E, 0x3B, 0x3C,
-    0x66, 0x91, 0xD7, 0xAB, 0xB7, 0xE9, 0xDF, 0x04,
-    0x5C, 0x8B, 0xA1, 0x92, 0x68, 0xDE, 0xD1, 0x53,
-    0x20, 0x7F, 0x5E, 0x80, 0x43, 0x52, 0xEC, 0x5D
-  },
-  {
-    0x23, 0xA1, 0x96, 0xD3, 0x80, 0x2E, 0xD3, 0xC1,
-    0xB3, 0x84, 0x01, 0x9A, 0x82, 0x32, 0x58, 0x40,
-    0xD3, 0x2F, 0x71, 0x95, 0x0C, 0x45, 0x80, 0xB0,
-    0x34, 0x45, 0xE0, 0x89, 0x8E, 0x14, 0x05, 0x3C
-  },
-  {
-    0xF4, 0x49, 0x54, 0x70, 0xF2, 0x26, 0xC8, 0xC2,
-    0x14, 0xBE, 0x08, 0xFD, 0xFA, 0xD4, 0xBC, 0x4A,
-    0x2A, 0x9D, 0xBE, 0xA9, 0x13, 0x6A, 0x21, 0x0D,
-    0xF0, 0xD4, 0xB6, 0x49, 0x29, 0xE6, 0xFC, 0x14
-  },
-  {
-    0xE2, 0x90, 0xDD, 0x27, 0x0B, 0x46, 0x7F, 0x34,
-    0xAB, 0x1C, 0x00, 0x2D, 0x34, 0x0F, 0xA0, 0x16,
-    0x25, 0x7F, 0xF1, 0x9E, 0x58, 0x33, 0xFD, 0xBB,
-    0xF2, 0xCB, 0x40, 0x1C, 0x3B, 0x28, 0x17, 0xDE
-  },
-  {
-    0x9F, 0xC7, 0xB5, 0xDE, 0xD3, 0xC1, 0x50, 0x42,
-    0xB2, 0xA6, 0x58, 0x2D, 0xC3, 0x9B, 0xE0, 0x16,
-    0xD2, 0x4A, 0x68, 0x2D, 0x5E, 0x61, 0xAD, 0x1E,
-    0xFF, 0x9C, 0x63, 0x30, 0x98, 0x48, 0xF7, 0x06
-  },
-  {
-    0x8C, 0xCA, 0x67, 0xA3, 0x6D, 0x17, 0xD5, 0xE6,
-    0x34, 0x1C, 0xB5, 0x92, 0xFD, 0x7B, 0xEF, 0x99,
-    0x26, 0xC9, 0xE3, 0xAA, 0x10, 0x27, 0xEA, 0x11,
-    0xA7, 0xD8, 0xBD, 0x26, 0x0B, 0x57, 0x6E, 0x04
-  },
-  {
-    0x40, 0x93, 0x92, 0xF5, 0x60, 0xF8, 0x68, 0x31,
-    0xDA, 0x43, 0x73, 0xEE, 0x5E, 0x00, 0x74, 0x26,
-    0x05, 0x95, 0xD7, 0xBC, 0x24, 0x18, 0x3B, 0x60,
-    0xED, 0x70, 0x0D, 0x45, 0x83, 0xD3, 0xF6, 0xF0
-  },
-  {
-    0x28, 0x02, 0x16, 0x5D, 0xE0, 0x90, 0x91, 0x55,
-    0x46, 0xF3, 0x39, 0x8C, 0xD8, 0x49, 0x16, 0x4A,
-    0x19, 0xF9, 0x2A, 0xDB, 0xC3, 0x61, 0xAD, 0xC9,
-    0x9B, 0x0F, 0x20, 0xC8, 0xEA, 0x07, 0x10, 0x54
-  },
-  {
-    0xAD, 0x83, 0x91, 0x68, 0xD9, 0xF8, 0xA4, 0xBE,
-    0x95, 0xBA, 0x9E, 0xF9, 0xA6, 0x92, 0xF0, 0x72,
-    0x56, 0xAE, 0x43, 0xFE, 0x6F, 0x98, 0x64, 0xE2,
-    0x90, 0x69, 0x1B, 0x02, 0x56, 0xCE, 0x50, 0xA9
-  },
-  {
-    0x75, 0xFD, 0xAA, 0x50, 0x38, 0xC2, 0x84, 0xB8,
-    0x6D, 0x6E, 0x8A, 0xFF, 0xE8, 0xB2, 0x80, 0x7E,
-    0x46, 0x7B, 0x86, 0x60, 0x0E, 0x79, 0xAF, 0x36,
-    0x89, 0xFB, 0xC0, 0x63, 0x28, 0xCB, 0xF8, 0x94
-  },
-  {
-    0xE5, 0x7C, 0xB7, 0x94, 0x87, 0xDD, 0x57, 0x90,
-    0x24, 0x32, 0xB2, 0x50, 0x73, 0x38, 0x13, 0xBD,
-    0x96, 0xA8, 0x4E, 0xFC, 0xE5, 0x9F, 0x65, 0x0F,
-    0xAC, 0x26, 0xE6, 0x69, 0x6A, 0xEF, 0xAF, 0xC3
-  },
-  {
-    0x56, 0xF3, 0x4E, 0x8B, 0x96, 0x55, 0x7E, 0x90,
-    0xC1, 0xF2, 0x4B, 0x52, 0xD0, 0xC8, 0x9D, 0x51,
-    0x08, 0x6A, 0xCF, 0x1B, 0x00, 0xF6, 0x34, 0xCF,
-    0x1D, 0xDE, 0x92, 0x33, 0xB8, 0xEA, 0xAA, 0x3E
-  },
-  {
-    0x1B, 0x53, 0xEE, 0x94, 0xAA, 0xF3, 0x4E, 0x4B,
-    0x15, 0x9D, 0x48, 0xDE, 0x35, 0x2C, 0x7F, 0x06,
-    0x61, 0xD0, 0xA4, 0x0E, 0xDF, 0xF9, 0x5A, 0x0B,
-    0x16, 0x39, 0xB4, 0x09, 0x0E, 0x97, 0x44, 0x72
-  },
-  {
-    0x05, 0x70, 0x5E, 0x2A, 0x81, 0x75, 0x7C, 0x14,
-    0xBD, 0x38, 0x3E, 0xA9, 0x8D, 0xDA, 0x54, 0x4E,
-    0xB1, 0x0E, 0x6B, 0xC0, 0x7B, 0xAE, 0x43, 0x5E,
-    0x25, 0x18, 0xDB, 0xE1, 0x33, 0x52, 0x53, 0x75
-  },
-  {
-    0xD8, 0xB2, 0x86, 0x6E, 0x8A, 0x30, 0x9D, 0xB5,
-    0x3E, 0x52, 0x9E, 0xC3, 0x29, 0x11, 0xD8, 0x2F,
-    0x5C, 0xA1, 0x6C, 0xFF, 0x76, 0x21, 0x68, 0x91,
-    0xA9, 0x67, 0x6A, 0xA3, 0x1A, 0xAA, 0x6C, 0x42
-  },
-  {
-    0xF5, 0x04, 0x1C, 0x24, 0x12, 0x70, 0xEB, 0x04,
-    0xC7, 0x1E, 0xC2, 0xC9, 0x5D, 0x4C, 0x38, 0xD8,
-    0x03, 0xB1, 0x23, 0x7B, 0x0F, 0x29, 0xFD, 0x4D,
-    0xB3, 0xEB, 0x39, 0x76, 0x69, 0xE8, 0x86, 0x99
-  },
-  {
-    0x9A, 0x4C, 0xE0, 0x77, 0xC3, 0x49, 0x32, 0x2F,
-    0x59, 0x5E, 0x0E, 0xE7, 0x9E, 0xD0, 0xDA, 0x5F,
-    0xAB, 0x66, 0x75, 0x2C, 0xBF, 0xEF, 0x8F, 0x87,
-    0xD0, 0xE9, 0xD0, 0x72, 0x3C, 0x75, 0x30, 0xDD
-  },
-  {
-    0x65, 0x7B, 0x09, 0xF3, 0xD0, 0xF5, 0x2B, 0x5B,
-    0x8F, 0x2F, 0x97, 0x16, 0x3A, 0x0E, 0xDF, 0x0C,
-    0x04, 0xF0, 0x75, 0x40, 0x8A, 0x07, 0xBB, 0xEB,
-    0x3A, 0x41, 0x01, 0xA8, 0x91, 0x99, 0x0D, 0x62
-  },
-  {
-    0x1E, 0x3F, 0x7B, 0xD5, 0xA5, 0x8F, 0xA5, 0x33,
-    0x34, 0x4A, 0xA8, 0xED, 0x3A, 0xC1, 0x22, 0xBB,
-    0x9E, 0x70, 0xD4, 0xEF, 0x50, 0xD0, 0x04, 0x53,
-    0x08, 0x21, 0x94, 0x8F, 0x5F, 0xE6, 0x31, 0x5A
-  },
-  {
-    0x80, 0xDC, 0xCF, 0x3F, 0xD8, 0x3D, 0xFD, 0x0D,
-    0x35, 0xAA, 0x28, 0x58, 0x59, 0x22, 0xAB, 0x89,
-    0xD5, 0x31, 0x39, 0x97, 0x67, 0x3E, 0xAF, 0x90,
-    0x5C, 0xEA, 0x9C, 0x0B, 0x22, 0x5C, 0x7B, 0x5F
-  },
-  {
-    0x8A, 0x0D, 0x0F, 0xBF, 0x63, 0x77, 0xD8, 0x3B,
-    0xB0, 0x8B, 0x51, 0x4B, 0x4B, 0x1C, 0x43, 0xAC,
-    0xC9, 0x5D, 0x75, 0x17, 0x14, 0xF8, 0x92, 0x56,
-    0x45, 0xCB, 0x6B, 0xC8, 0x56, 0xCA, 0x15, 0x0A
-  },
-  {
-    0x9F, 0xA5, 0xB4, 0x87, 0x73, 0x8A, 0xD2, 0x84,
-    0x4C, 0xC6, 0x34, 0x8A, 0x90, 0x19, 0x18, 0xF6,
-    0x59, 0xA3, 0xB8, 0x9E, 0x9C, 0x0D, 0xFE, 0xEA,
-    0xD3, 0x0D, 0xD9, 0x4B, 0xCF, 0x42, 0xEF, 0x8E
-  },
-  {
-    0x80, 0x83, 0x2C, 0x4A, 0x16, 0x77, 0xF5, 0xEA,
-    0x25, 0x60, 0xF6, 0x68, 0xE9, 0x35, 0x4D, 0xD3,
-    0x69, 0x97, 0xF0, 0x37, 0x28, 0xCF, 0xA5, 0x5E,
-    0x1B, 0x38, 0x33, 0x7C, 0x0C, 0x9E, 0xF8, 0x18
-  },
-  {
-    0xAB, 0x37, 0xDD, 0xB6, 0x83, 0x13, 0x7E, 0x74,
-    0x08, 0x0D, 0x02, 0x6B, 0x59, 0x0B, 0x96, 0xAE,
-    0x9B, 0xB4, 0x47, 0x72, 0x2F, 0x30, 0x5A, 0x5A,
-    0xC5, 0x70, 0xEC, 0x1D, 0xF9, 0xB1, 0x74, 0x3C
-  },
-  {
-    0x3E, 0xE7, 0x35, 0xA6, 0x94, 0xC2, 0x55, 0x9B,
-    0x69, 0x3A, 0xA6, 0x86, 0x29, 0x36, 0x1E, 0x15,
-    0xD1, 0x22, 0x65, 0xAD, 0x6A, 0x3D, 0xED, 0xF4,
-    0x88, 0xB0, 0xB0, 0x0F, 0xAC, 0x97, 0x54, 0xBA
-  },
-  {
-    0xD6, 0xFC, 0xD2, 0x32, 0x19, 0xB6, 0x47, 0xE4,
-    0xCB, 0xD5, 0xEB, 0x2D, 0x0A, 0xD0, 0x1E, 0xC8,
-    0x83, 0x8A, 0x4B, 0x29, 0x01, 0xFC, 0x32, 0x5C,
-    0xC3, 0x70, 0x19, 0x81, 0xCA, 0x6C, 0x88, 0x8B
-  },
-  {
-    0x05, 0x20, 0xEC, 0x2F, 0x5B, 0xF7, 0xA7, 0x55,
-    0xDA, 0xCB, 0x50, 0xC6, 0xBF, 0x23, 0x3E, 0x35,
-    0x15, 0x43, 0x47, 0x63, 0xDB, 0x01, 0x39, 0xCC,
-    0xD9, 0xFA, 0xEF, 0xBB, 0x82, 0x07, 0x61, 0x2D
-  },
-  {
-    0xAF, 0xF3, 0xB7, 0x5F, 0x3F, 0x58, 0x12, 0x64,
-    0xD7, 0x66, 0x16, 0x62, 0xB9, 0x2F, 0x5A, 0xD3,
-    0x7C, 0x1D, 0x32, 0xBD, 0x45, 0xFF, 0x81, 0xA4,
-    0xED, 0x8A, 0xDC, 0x9E, 0xF3, 0x0D, 0xD9, 0x89
-  },
-  {
-    0xD0, 0xDD, 0x65, 0x0B, 0xEF, 0xD3, 0xBA, 0x63,
-    0xDC, 0x25, 0x10, 0x2C, 0x62, 0x7C, 0x92, 0x1B,
-    0x9C, 0xBE, 0xB0, 0xB1, 0x30, 0x68, 0x69, 0x35,
-    0xB5, 0xC9, 0x27, 0xCB, 0x7C, 0xCD, 0x5E, 0x3B
-  },
-  {
-    0xE1, 0x14, 0x98, 0x16, 0xB1, 0x0A, 0x85, 0x14,
-    0xFB, 0x3E, 0x2C, 0xAB, 0x2C, 0x08, 0xBE, 0xE9,
-    0xF7, 0x3C, 0xE7, 0x62, 0x21, 0x70, 0x12, 0x46,
-    0xA5, 0x89, 0xBB, 0xB6, 0x73, 0x02, 0xD8, 0xA9
-  },
-  {
-    0x7D, 0xA3, 0xF4, 0x41, 0xDE, 0x90, 0x54, 0x31,
-    0x7E, 0x72, 0xB5, 0xDB, 0xF9, 0x79, 0xDA, 0x01,
-    0xE6, 0xBC, 0xEE, 0xBB, 0x84, 0x78, 0xEA, 0xE6,
-    0xA2, 0x28, 0x49, 0xD9, 0x02, 0x92, 0x63, 0x5C
-  },
-  {
-    0x12, 0x30, 0xB1, 0xFC, 0x8A, 0x7D, 0x92, 0x15,
-    0xED, 0xC2, 0xD4, 0xA2, 0xDE, 0xCB, 0xDD, 0x0A,
-    0x6E, 0x21, 0x6C, 0x92, 0x42, 0x78, 0xC9, 0x1F,
-    0xC5, 0xD1, 0x0E, 0x7D, 0x60, 0x19, 0x2D, 0x94
-  },
-  {
-    0x57, 0x50, 0xD7, 0x16, 0xB4, 0x80, 0x8F, 0x75,
-    0x1F, 0xEB, 0xC3, 0x88, 0x06, 0xBA, 0x17, 0x0B,
-    0xF6, 0xD5, 0x19, 0x9A, 0x78, 0x16, 0xBE, 0x51,
-    0x4E, 0x3F, 0x93, 0x2F, 0xBE, 0x0C, 0xB8, 0x71
-  },
-  {
-    0x6F, 0xC5, 0x9B, 0x2F, 0x10, 0xFE, 0xBA, 0x95,
-    0x4A, 0xA6, 0x82, 0x0B, 0x3C, 0xA9, 0x87, 0xEE,
-    0x81, 0xD5, 0xCC, 0x1D, 0xA3, 0xC6, 0x3C, 0xE8,
-    0x27, 0x30, 0x1C, 0x56, 0x9D, 0xFB, 0x39, 0xCE
-  },
-  {
-    0xC7, 0xC3, 0xFE, 0x1E, 0xEB, 0xDC, 0x7B, 0x5A,
-    0x93, 0x93, 0x26, 0xE8, 0xDD, 0xB8, 0x3E, 0x8B,
-    0xF2, 0xB7, 0x80, 0xB6, 0x56, 0x78, 0xCB, 0x62,
-    0xF2, 0x08, 0xB0, 0x40, 0xAB, 0xDD, 0x35, 0xE2
-  },
-  {
-    0x0C, 0x75, 0xC1, 0xA1, 0x5C, 0xF3, 0x4A, 0x31,
-    0x4E, 0xE4, 0x78, 0xF4, 0xA5, 0xCE, 0x0B, 0x8A,
-    0x6B, 0x36, 0x52, 0x8E, 0xF7, 0xA8, 0x20, 0x69,
-    0x6C, 0x3E, 0x42, 0x46, 0xC5, 0xA1, 0x58, 0x64
-  },
-  {
-    0x21, 0x6D, 0xC1, 0x2A, 0x10, 0x85, 0x69, 0xA3,
-    0xC7, 0xCD, 0xDE, 0x4A, 0xED, 0x43, 0xA6, 0xC3,
-    0x30, 0x13, 0x9D, 0xDA, 0x3C, 0xCC, 0x4A, 0x10,
-    0x89, 0x05, 0xDB, 0x38, 0x61, 0x89, 0x90, 0x50
-  },
-  {
-    0xA5, 0x7B, 0xE6, 0xAE, 0x67, 0x56, 0xF2, 0x8B,
-    0x02, 0xF5, 0x9D, 0xAD, 0xF7, 0xE0, 0xD7, 0xD8,
-    0x80, 0x7F, 0x10, 0xFA, 0x15, 0xCE, 0xD1, 0xAD,
-    0x35, 0x85, 0x52, 0x1A, 0x1D, 0x99, 0x5A, 0x89
-  },
-  {
-    0x81, 0x6A, 0xEF, 0x87, 0x59, 0x53, 0x71, 0x6C,
-    0xD7, 0xA5, 0x81, 0xF7, 0x32, 0xF5, 0x3D, 0xD4,
-    0x35, 0xDA, 0xB6, 0x6D, 0x09, 0xC3, 0x61, 0xD2,
-    0xD6, 0x59, 0x2D, 0xE1, 0x77, 0x55, 0xD8, 0xA8
-  },
-  {
-    0x9A, 0x76, 0x89, 0x32, 0x26, 0x69, 0x3B, 0x6E,
-    0xA9, 0x7E, 0x6A, 0x73, 0x8F, 0x9D, 0x10, 0xFB,
-    0x3D, 0x0B, 0x43, 0xAE, 0x0E, 0x8B, 0x7D, 0x81,
-    0x23, 0xEA, 0x76, 0xCE, 0x97, 0x98, 0x9C, 0x7E
-  },
-  {
-    0x8D, 0xAE, 0xDB, 0x9A, 0x27, 0x15, 0x29, 0xDB,
-    0xB7, 0xDC, 0x3B, 0x60, 0x7F, 0xE5, 0xEB, 0x2D,
-    0x32, 0x11, 0x77, 0x07, 0x58, 0xDD, 0x3B, 0x0A,
-    0x35, 0x93, 0xD2, 0xD7, 0x95, 0x4E, 0x2D, 0x5B
-  },
-  {
-    0x16, 0xDB, 0xC0, 0xAA, 0x5D, 0xD2, 0xC7, 0x74,
-    0xF5, 0x05, 0x10, 0x0F, 0x73, 0x37, 0x86, 0xD8,
-    0xA1, 0x75, 0xFC, 0xBB, 0xB5, 0x9C, 0x43, 0xE1,
-    0xFB, 0xFF, 0x3E, 0x1E, 0xAF, 0x31, 0xCB, 0x4A
-  },
-  {
-    0x86, 0x06, 0xCB, 0x89, 0x9C, 0x6A, 0xEA, 0xF5,
-    0x1B, 0x9D, 0xB0, 0xFE, 0x49, 0x24, 0xA9, 0xFD,
-    0x5D, 0xAB, 0xC1, 0x9F, 0x88, 0x26, 0xF2, 0xBC,
-    0x1C, 0x1D, 0x7D, 0xA1, 0x4D, 0x2C, 0x2C, 0x99
-  },
-  {
-    0x84, 0x79, 0x73, 0x1A, 0xED, 0xA5, 0x7B, 0xD3,
-    0x7E, 0xAD, 0xB5, 0x1A, 0x50, 0x7E, 0x30, 0x7F,
-    0x3B, 0xD9, 0x5E, 0x69, 0xDB, 0xCA, 0x94, 0xF3,
-    0xBC, 0x21, 0x72, 0x60, 0x66, 0xAD, 0x6D, 0xFD
-  },
-  {
-    0x58, 0x47, 0x3A, 0x9E, 0xA8, 0x2E, 0xFA, 0x3F,
-    0x3B, 0x3D, 0x8F, 0xC8, 0x3E, 0xD8, 0x86, 0x31,
-    0x27, 0xB3, 0x3A, 0xE8, 0xDE, 0xAE, 0x63, 0x07,
-    0x20, 0x1E, 0xDB, 0x6D, 0xDE, 0x61, 0xDE, 0x29
-  },
-  {
-    0x9A, 0x92, 0x55, 0xD5, 0x3A, 0xF1, 0x16, 0xDE,
-    0x8B, 0xA2, 0x7C, 0xE3, 0x5B, 0x4C, 0x7E, 0x15,
-    0x64, 0x06, 0x57, 0xA0, 0xFC, 0xB8, 0x88, 0xC7,
-    0x0D, 0x95, 0x43, 0x1D, 0xAC, 0xD8, 0xF8, 0x30
-  },
-  {
-    0x9E, 0xB0, 0x5F, 0xFB, 0xA3, 0x9F, 0xD8, 0x59,
-    0x6A, 0x45, 0x49, 0x3E, 0x18, 0xD2, 0x51, 0x0B,
-    0xF3, 0xEF, 0x06, 0x5C, 0x51, 0xD6, 0xE1, 0x3A,
-    0xBE, 0x66, 0xAA, 0x57, 0xE0, 0x5C, 0xFD, 0xB7
-  },
-  {
-    0x81, 0xDC, 0xC3, 0xA5, 0x05, 0xEA, 0xCE, 0x3F,
-    0x87, 0x9D, 0x8F, 0x70, 0x27, 0x76, 0x77, 0x0F,
-    0x9D, 0xF5, 0x0E, 0x52, 0x1D, 0x14, 0x28, 0xA8,
-    0x5D, 0xAF, 0x04, 0xF9, 0xAD, 0x21, 0x50, 0xE0
-  },
-  {
-    0xE3, 0xE3, 0xC4, 0xAA, 0x3A, 0xCB, 0xBC, 0x85,
-    0x33, 0x2A, 0xF9, 0xD5, 0x64, 0xBC, 0x24, 0x16,
-    0x5E, 0x16, 0x87, 0xF6, 0xB1, 0xAD, 0xCB, 0xFA,
-    0xE7, 0x7A, 0x8F, 0x03, 0xC7, 0x2A, 0xC2, 0x8C
-  },
-  {
-    0x67, 0x46, 0xC8, 0x0B, 0x4E, 0xB5, 0x6A, 0xEA,
-    0x45, 0xE6, 0x4E, 0x72, 0x89, 0xBB, 0xA3, 0xED,
-    0xBF, 0x45, 0xEC, 0xF8, 0x20, 0x64, 0x81, 0xFF,
-    0x63, 0x02, 0x12, 0x29, 0x84, 0xCD, 0x52, 0x6A
-  },
-  {
-    0x2B, 0x62, 0x8E, 0x52, 0x76, 0x4D, 0x7D, 0x62,
-    0xC0, 0x86, 0x8B, 0x21, 0x23, 0x57, 0xCD, 0xD1,
-    0x2D, 0x91, 0x49, 0x82, 0x2F, 0x4E, 0x98, 0x45,
-    0xD9, 0x18, 0xA0, 0x8D, 0x1A, 0xE9, 0x90, 0xC0
-  },
-  {
-    0xE4, 0xBF, 0xE8, 0x0D, 0x58, 0xC9, 0x19, 0x94,
-    0x61, 0x39, 0x09, 0xDC, 0x4B, 0x1A, 0x12, 0x49,
-    0x68, 0x96, 0xC0, 0x04, 0xAF, 0x7B, 0x57, 0x01,
-    0x48, 0x3D, 0xE4, 0x5D, 0x28, 0x23, 0xD7, 0x8E
-  },
-  {
-    0xEB, 0xB4, 0xBA, 0x15, 0x0C, 0xEF, 0x27, 0x34,
-    0x34, 0x5B, 0x5D, 0x64, 0x1B, 0xBE, 0xD0, 0x3A,
-    0x21, 0xEA, 0xFA, 0xE9, 0x33, 0xC9, 0x9E, 0x00,
-    0x92, 0x12, 0xEF, 0x04, 0x57, 0x4A, 0x85, 0x30
-  },
-  {
-    0x39, 0x66, 0xEC, 0x73, 0xB1, 0x54, 0xAC, 0xC6,
-    0x97, 0xAC, 0x5C, 0xF5, 0xB2, 0x4B, 0x40, 0xBD,
-    0xB0, 0xDB, 0x9E, 0x39, 0x88, 0x36, 0xD7, 0x6D,
-    0x4B, 0x88, 0x0E, 0x3B, 0x2A, 0xF1, 0xAA, 0x27
-  },
-  {
-    0xEF, 0x7E, 0x48, 0x31, 0xB3, 0xA8, 0x46, 0x36,
-    0x51, 0x8D, 0x6E, 0x4B, 0xFC, 0xE6, 0x4A, 0x43,
-    0xDB, 0x2A, 0x5D, 0xDA, 0x9C, 0xCA, 0x2B, 0x44,
-    0xF3, 0x90, 0x33, 0xBD, 0xC4, 0x0D, 0x62, 0x43
-  },
-  {
-    0x7A, 0xBF, 0x6A, 0xCF, 0x5C, 0x8E, 0x54, 0x9D,
-    0xDB, 0xB1, 0x5A, 0xE8, 0xD8, 0xB3, 0x88, 0xC1,
-    0xC1, 0x97, 0xE6, 0x98, 0x73, 0x7C, 0x97, 0x85,
-    0x50, 0x1E, 0xD1, 0xF9, 0x49, 0x30, 0xB7, 0xD9
-  },
-  {
-    0x88, 0x01, 0x8D, 0xED, 0x66, 0x81, 0x3F, 0x0C,
-    0xA9, 0x5D, 0xEF, 0x47, 0x4C, 0x63, 0x06, 0x92,
-    0x01, 0x99, 0x67, 0xB9, 0xE3, 0x68, 0x88, 0xDA,
-    0xDD, 0x94, 0x12, 0x47, 0x19, 0xB6, 0x82, 0xF6
-  },
-  {
-    0x39, 0x30, 0x87, 0x6B, 0x9F, 0xC7, 0x52, 0x90,
-    0x36, 0xB0, 0x08, 0xB1, 0xB8, 0xBB, 0x99, 0x75,
-    0x22, 0xA4, 0x41, 0x63, 0x5A, 0x0C, 0x25, 0xEC,
-    0x02, 0xFB, 0x6D, 0x90, 0x26, 0xE5, 0x5A, 0x97
-  },
-  {
-    0x0A, 0x40, 0x49, 0xD5, 0x7E, 0x83, 0x3B, 0x56,
-    0x95, 0xFA, 0xC9, 0x3D, 0xD1, 0xFB, 0xEF, 0x31,
-    0x66, 0xB4, 0x4B, 0x12, 0xAD, 0x11, 0x24, 0x86,
-    0x62, 0x38, 0x3A, 0xE0, 0x51, 0xE1, 0x58, 0x27
-  },
-  {
-    0x81, 0xDC, 0xC0, 0x67, 0x8B, 0xB6, 0xA7, 0x65,
-    0xE4, 0x8C, 0x32, 0x09, 0x65, 0x4F, 0xE9, 0x00,
-    0x89, 0xCE, 0x44, 0xFF, 0x56, 0x18, 0x47, 0x7E,
-    0x39, 0xAB, 0x28, 0x64, 0x76, 0xDF, 0x05, 0x2B
-  },
-  {
-    0xE6, 0x9B, 0x3A, 0x36, 0xA4, 0x46, 0x19, 0x12,
-    0xDC, 0x08, 0x34, 0x6B, 0x11, 0xDD, 0xCB, 0x9D,
-    0xB7, 0x96, 0xF8, 0x85, 0xFD, 0x01, 0x93, 0x6E,
-    0x66, 0x2F, 0xE2, 0x92, 0x97, 0xB0, 0x99, 0xA4
-  },
-  {
-    0x5A, 0xC6, 0x50, 0x3B, 0x0D, 0x8D, 0xA6, 0x91,
-    0x76, 0x46, 0xE6, 0xDC, 0xC8, 0x7E, 0xDC, 0x58,
-    0xE9, 0x42, 0x45, 0x32, 0x4C, 0xC2, 0x04, 0xF4,
-    0xDD, 0x4A, 0xF0, 0x15, 0x63, 0xAC, 0xD4, 0x27
-  },
-  {
-    0xDF, 0x6D, 0xDA, 0x21, 0x35, 0x9A, 0x30, 0xBC,
-    0x27, 0x17, 0x80, 0x97, 0x1C, 0x1A, 0xBD, 0x56,
-    0xA6, 0xEF, 0x16, 0x7E, 0x48, 0x08, 0x87, 0x88,
-    0x8E, 0x73, 0xA8, 0x6D, 0x3B, 0xF6, 0x05, 0xE9
-  },
-  {
-    0xE8, 0xE6, 0xE4, 0x70, 0x71, 0xE7, 0xB7, 0xDF,
-    0x25, 0x80, 0xF2, 0x25, 0xCF, 0xBB, 0xED, 0xF8,
-    0x4C, 0xE6, 0x77, 0x46, 0x62, 0x66, 0x28, 0xD3,
-    0x30, 0x97, 0xE4, 0xB7, 0xDC, 0x57, 0x11, 0x07
-  },
-  {
-    0x53, 0xE4, 0x0E, 0xAD, 0x62, 0x05, 0x1E, 0x19,
-    0xCB, 0x9B, 0xA8, 0x13, 0x3E, 0x3E, 0x5C, 0x1C,
-    0xE0, 0x0D, 0xDC, 0xAD, 0x8A, 0xCF, 0x34, 0x2A,
-    0x22, 0x43, 0x60, 0xB0, 0xAC, 0xC1, 0x47, 0x77
-  },
-  {
-    0x9C, 0xCD, 0x53, 0xFE, 0x80, 0xBE, 0x78, 0x6A,
-    0xA9, 0x84, 0x63, 0x84, 0x62, 0xFB, 0x28, 0xAF,
-    0xDF, 0x12, 0x2B, 0x34, 0xD7, 0x8F, 0x46, 0x87,
-    0xEC, 0x63, 0x2B, 0xB1, 0x9D, 0xE2, 0x37, 0x1A
-  },
-  {
-    0xCB, 0xD4, 0x80, 0x52, 0xC4, 0x8D, 0x78, 0x84,
-    0x66, 0xA3, 0xE8, 0x11, 0x8C, 0x56, 0xC9, 0x7F,
-    0xE1, 0x46, 0xE5, 0x54, 0x6F, 0xAA, 0xF9, 0x3E,
-    0x2B, 0xC3, 0xC4, 0x7E, 0x45, 0x93, 0x97, 0x53
-  },
-  {
-    0x25, 0x68, 0x83, 0xB1, 0x4E, 0x2A, 0xF4, 0x4D,
-    0xAD, 0xB2, 0x8E, 0x1B, 0x34, 0xB2, 0xAC, 0x0F,
-    0x0F, 0x4C, 0x91, 0xC3, 0x4E, 0xC9, 0x16, 0x9E,
-    0x29, 0x03, 0x61, 0x58, 0xAC, 0xAA, 0x95, 0xB9
-  },
-  {
-    0x44, 0x71, 0xB9, 0x1A, 0xB4, 0x2D, 0xB7, 0xC4,
-    0xDD, 0x84, 0x90, 0xAB, 0x95, 0xA2, 0xEE, 0x8D,
-    0x04, 0xE3, 0xEF, 0x5C, 0x3D, 0x6F, 0xC7, 0x1A,
-    0xC7, 0x4B, 0x2B, 0x26, 0x91, 0x4D, 0x16, 0x41
-  },
-  {
-    0xA5, 0xEB, 0x08, 0x03, 0x8F, 0x8F, 0x11, 0x55,
-    0xED, 0x86, 0xE6, 0x31, 0x90, 0x6F, 0xC1, 0x30,
-    0x95, 0xF6, 0xBB, 0xA4, 0x1D, 0xE5, 0xD4, 0xE7,
-    0x95, 0x75, 0x8E, 0xC8, 0xC8, 0xDF, 0x8A, 0xF1
-  },
-  {
-    0xDC, 0x1D, 0xB6, 0x4E, 0xD8, 0xB4, 0x8A, 0x91,
-    0x0E, 0x06, 0x0A, 0x6B, 0x86, 0x63, 0x74, 0xC5,
-    0x78, 0x78, 0x4E, 0x9A, 0xC4, 0x9A, 0xB2, 0x77,
-    0x40, 0x92, 0xAC, 0x71, 0x50, 0x19, 0x34, 0xAC
-  },
-  {
-    0x28, 0x54, 0x13, 0xB2, 0xF2, 0xEE, 0x87, 0x3D,
-    0x34, 0x31, 0x9E, 0xE0, 0xBB, 0xFB, 0xB9, 0x0F,
-    0x32, 0xDA, 0x43, 0x4C, 0xC8, 0x7E, 0x3D, 0xB5,
-    0xED, 0x12, 0x1B, 0xB3, 0x98, 0xED, 0x96, 0x4B
-  },
-  {
-    0x02, 0x16, 0xE0, 0xF8, 0x1F, 0x75, 0x0F, 0x26,
-    0xF1, 0x99, 0x8B, 0xC3, 0x93, 0x4E, 0x3E, 0x12,
-    0x4C, 0x99, 0x45, 0xE6, 0x85, 0xA6, 0x0B, 0x25,
-    0xE8, 0xFB, 0xD9, 0x62, 0x5A, 0xB6, 0xB5, 0x99
-  },
-  {
-    0x38, 0xC4, 0x10, 0xF5, 0xB9, 0xD4, 0x07, 0x20,
-    0x50, 0x75, 0x5B, 0x31, 0xDC, 0xA8, 0x9F, 0xD5,
-    0x39, 0x5C, 0x67, 0x85, 0xEE, 0xB3, 0xD7, 0x90,
-    0xF3, 0x20, 0xFF, 0x94, 0x1C, 0x5A, 0x93, 0xBF
-  },
-  {
-    0xF1, 0x84, 0x17, 0xB3, 0x9D, 0x61, 0x7A, 0xB1,
-    0xC1, 0x8F, 0xDF, 0x91, 0xEB, 0xD0, 0xFC, 0x6D,
-    0x55, 0x16, 0xBB, 0x34, 0xCF, 0x39, 0x36, 0x40,
-    0x37, 0xBC, 0xE8, 0x1F, 0xA0, 0x4C, 0xEC, 0xB1
-  },
-  {
-    0x1F, 0xA8, 0x77, 0xDE, 0x67, 0x25, 0x9D, 0x19,
-    0x86, 0x3A, 0x2A, 0x34, 0xBC, 0xC6, 0x96, 0x2A,
-    0x2B, 0x25, 0xFC, 0xBF, 0x5C, 0xBE, 0xCD, 0x7E,
-    0xDE, 0x8F, 0x1F, 0xA3, 0x66, 0x88, 0xA7, 0x96
-  },
-  {
-    0x5B, 0xD1, 0x69, 0xE6, 0x7C, 0x82, 0xC2, 0xC2,
-    0xE9, 0x8E, 0xF7, 0x00, 0x8B, 0xDF, 0x26, 0x1F,
-    0x2D, 0xDF, 0x30, 0xB1, 0xC0, 0x0F, 0x9E, 0x7F,
-    0x27, 0x5B, 0xB3, 0xE8, 0xA2, 0x8D, 0xC9, 0xA2
-  },
-  {
-    0xC8, 0x0A, 0xBE, 0xEB, 0xB6, 0x69, 0xAD, 0x5D,
-    0xEE, 0xB5, 0xF5, 0xEC, 0x8E, 0xA6, 0xB7, 0xA0,
-    0x5D, 0xDF, 0x7D, 0x31, 0xEC, 0x4C, 0x0A, 0x2E,
-    0xE2, 0x0B, 0x0B, 0x98, 0xCA, 0xEC, 0x67, 0x46
-  },
-  {
-    0xE7, 0x6D, 0x3F, 0xBD, 0xA5, 0xBA, 0x37, 0x4E,
-    0x6B, 0xF8, 0xE5, 0x0F, 0xAD, 0xC3, 0xBB, 0xB9,
-    0xBA, 0x5C, 0x20, 0x6E, 0xBD, 0xEC, 0x89, 0xA3,
-    0xA5, 0x4C, 0xF3, 0xDD, 0x84, 0xA0, 0x70, 0x16
-  },
-  {
-    0x7B, 0xBA, 0x9D, 0xC5, 0xB5, 0xDB, 0x20, 0x71,
-    0xD1, 0x77, 0x52, 0xB1, 0x04, 0x4C, 0x1E, 0xCE,
-    0xD9, 0x6A, 0xAF, 0x2D, 0xD4, 0x6E, 0x9B, 0x43,
-    0x37, 0x50, 0xE8, 0xEA, 0x0D, 0xCC, 0x18, 0x70
-  },
-  {
-    0xF2, 0x9B, 0x1B, 0x1A, 0xB9, 0xBA, 0xB1, 0x63,
-    0x01, 0x8E, 0xE3, 0xDA, 0x15, 0x23, 0x2C, 0xCA,
-    0x78, 0xEC, 0x52, 0xDB, 0xC3, 0x4E, 0xDA, 0x5B,
-    0x82, 0x2E, 0xC1, 0xD8, 0x0F, 0xC2, 0x1B, 0xD0
-  },
-  {
-    0x9E, 0xE3, 0xE3, 0xE7, 0xE9, 0x00, 0xF1, 0xE1,
-    0x1D, 0x30, 0x8C, 0x4B, 0x2B, 0x30, 0x76, 0xD2,
-    0x72, 0xCF, 0x70, 0x12, 0x4F, 0x9F, 0x51, 0xE1,
-    0xDA, 0x60, 0xF3, 0x78, 0x46, 0xCD, 0xD2, 0xF4
-  },
-  {
-    0x70, 0xEA, 0x3B, 0x01, 0x76, 0x92, 0x7D, 0x90,
-    0x96, 0xA1, 0x85, 0x08, 0xCD, 0x12, 0x3A, 0x29,
-    0x03, 0x25, 0x92, 0x0A, 0x9D, 0x00, 0xA8, 0x9B,
-    0x5D, 0xE0, 0x42, 0x73, 0xFB, 0xC7, 0x6B, 0x85
-  },
-  {
-    0x67, 0xDE, 0x25, 0xC0, 0x2A, 0x4A, 0xAB, 0xA2,
-    0x3B, 0xDC, 0x97, 0x3C, 0x8B, 0xB0, 0xB5, 0x79,
-    0x6D, 0x47, 0xCC, 0x06, 0x59, 0xD4, 0x3D, 0xFF,
-    0x1F, 0x97, 0xDE, 0x17, 0x49, 0x63, 0xB6, 0x8E
-  },
-  {
-    0xB2, 0x16, 0x8E, 0x4E, 0x0F, 0x18, 0xB0, 0xE6,
-    0x41, 0x00, 0xB5, 0x17, 0xED, 0x95, 0x25, 0x7D,
-    0x73, 0xF0, 0x62, 0x0D, 0xF8, 0x85, 0xC1, 0x3D,
-    0x2E, 0xCF, 0x79, 0x36, 0x7B, 0x38, 0x4C, 0xEE
-  },
-  {
-    0x2E, 0x7D, 0xEC, 0x24, 0x28, 0x85, 0x3B, 0x2C,
-    0x71, 0x76, 0x07, 0x45, 0x54, 0x1F, 0x7A, 0xFE,
-    0x98, 0x25, 0xB5, 0xDD, 0x77, 0xDF, 0x06, 0x51,
-    0x1D, 0x84, 0x41, 0xA9, 0x4B, 0xAC, 0xC9, 0x27
-  },
-  {
-    0xCA, 0x9F, 0xFA, 0xC4, 0xC4, 0x3F, 0x0B, 0x48,
-    0x46, 0x1D, 0xC5, 0xC2, 0x63, 0xBE, 0xA3, 0xF6,
-    0xF0, 0x06, 0x11, 0xCE, 0xAC, 0xAB, 0xF6, 0xF8,
-    0x95, 0xBA, 0x2B, 0x01, 0x01, 0xDB, 0xB6, 0x8D
-  },
-  {
-    0x74, 0x10, 0xD4, 0x2D, 0x8F, 0xD1, 0xD5, 0xE9,
-    0xD2, 0xF5, 0x81, 0x5C, 0xB9, 0x34, 0x17, 0x99,
-    0x88, 0x28, 0xEF, 0x3C, 0x42, 0x30, 0xBF, 0xBD,
-    0x41, 0x2D, 0xF0, 0xA4, 0xA7, 0xA2, 0x50, 0x7A
-  },
-  {
-    0x50, 0x10, 0xF6, 0x84, 0x51, 0x6D, 0xCC, 0xD0,
-    0xB6, 0xEE, 0x08, 0x52, 0xC2, 0x51, 0x2B, 0x4D,
-    0xC0, 0x06, 0x6C, 0xF0, 0xD5, 0x6F, 0x35, 0x30,
-    0x29, 0x78, 0xDB, 0x8A, 0xE3, 0x2C, 0x6A, 0x81
-  },
-  {
-    0xAC, 0xAA, 0xB5, 0x85, 0xF7, 0xB7, 0x9B, 0x71,
-    0x99, 0x35, 0xCE, 0xB8, 0x95, 0x23, 0xDD, 0xC5,
-    0x48, 0x27, 0xF7, 0x5C, 0x56, 0x88, 0x38, 0x56,
-    0x15, 0x4A, 0x56, 0xCD, 0xCD, 0x5E, 0xE9, 0x88
-  },
-  {
-    0x66, 0x6D, 0xE5, 0xD1, 0x44, 0x0F, 0xEE, 0x73,
-    0x31, 0xAA, 0xF0, 0x12, 0x3A, 0x62, 0xEF, 0x2D,
-    0x8B, 0xA5, 0x74, 0x53, 0xA0, 0x76, 0x96, 0x35,
-    0xAC, 0x6C, 0xD0, 0x1E, 0x63, 0x3F, 0x77, 0x12
-  },
-  {
-    0xA6, 0xF9, 0x86, 0x58, 0xF6, 0xEA, 0xBA, 0xF9,
-    0x02, 0xD8, 0xB3, 0x87, 0x1A, 0x4B, 0x10, 0x1D,
-    0x16, 0x19, 0x6E, 0x8A, 0x4B, 0x24, 0x1E, 0x15,
-    0x58, 0xFE, 0x29, 0x96, 0x6E, 0x10, 0x3E, 0x8D
-  },
-  {
-    0x89, 0x15, 0x46, 0xA8, 0xB2, 0x9F, 0x30, 0x47,
-    0xDD, 0xCF, 0xE5, 0xB0, 0x0E, 0x45, 0xFD, 0x55,
-    0x75, 0x63, 0x73, 0x10, 0x5E, 0xA8, 0x63, 0x7D,
-    0xFC, 0xFF, 0x54, 0x7B, 0x6E, 0xA9, 0x53, 0x5F
-  },
-  {
-    0x18, 0xDF, 0xBC, 0x1A, 0xC5, 0xD2, 0x5B, 0x07,
-    0x61, 0x13, 0x7D, 0xBD, 0x22, 0xC1, 0x7C, 0x82,
-    0x9D, 0x0F, 0x0E, 0xF1, 0xD8, 0x23, 0x44, 0xE9,
-    0xC8, 0x9C, 0x28, 0x66, 0x94, 0xDA, 0x24, 0xE8
-  },
-  {
-    0xB5, 0x4B, 0x9B, 0x67, 0xF8, 0xFE, 0xD5, 0x4B,
-    0xBF, 0x5A, 0x26, 0x66, 0xDB, 0xDF, 0x4B, 0x23,
-    0xCF, 0xF1, 0xD1, 0xB6, 0xF4, 0xAF, 0xC9, 0x85,
-    0xB2, 0xE6, 0xD3, 0x30, 0x5A, 0x9F, 0xF8, 0x0F
-  },
-  {
-    0x7D, 0xB4, 0x42, 0xE1, 0x32, 0xBA, 0x59, 0xBC,
-    0x12, 0x89, 0xAA, 0x98, 0xB0, 0xD3, 0xE8, 0x06,
-    0x00, 0x4F, 0x8E, 0xC1, 0x28, 0x11, 0xAF, 0x1E,
-    0x2E, 0x33, 0xC6, 0x9B, 0xFD, 0xE7, 0x29, 0xE1
-  },
-  {
-    0x25, 0x0F, 0x37, 0xCD, 0xC1, 0x5E, 0x81, 0x7D,
-    0x2F, 0x16, 0x0D, 0x99, 0x56, 0xC7, 0x1F, 0xE3,
-    0xEB, 0x5D, 0xB7, 0x45, 0x56, 0xE4, 0xAD, 0xF9,
-    0xA4, 0xFF, 0xAF, 0xBA, 0x74, 0x01, 0x03, 0x96
-  },
-  {
-    0x4A, 0xB8, 0xA3, 0xDD, 0x1D, 0xDF, 0x8A, 0xD4,
-    0x3D, 0xAB, 0x13, 0xA2, 0x7F, 0x66, 0xA6, 0x54,
-    0x4F, 0x29, 0x05, 0x97, 0xFA, 0x96, 0x04, 0x0E,
-    0x0E, 0x1D, 0xB9, 0x26, 0x3A, 0xA4, 0x79, 0xF8
-  },
-  {
-    0xEE, 0x61, 0x72, 0x7A, 0x07, 0x66, 0xDF, 0x93,
-    0x9C, 0xCD, 0xC8, 0x60, 0x33, 0x40, 0x44, 0xC7,
-    0x9A, 0x3C, 0x9B, 0x15, 0x62, 0x00, 0xBC, 0x3A,
-    0xA3, 0x29, 0x73, 0x48, 0x3D, 0x83, 0x41, 0xAE
-  },
-  {
-    0x3F, 0x68, 0xC7, 0xEC, 0x63, 0xAC, 0x11, 0xEB,
-    0xB9, 0x8F, 0x94, 0xB3, 0x39, 0xB0, 0x5C, 0x10,
-    0x49, 0x84, 0xFD, 0xA5, 0x01, 0x03, 0x06, 0x01,
-    0x44, 0xE5, 0xA2, 0xBF, 0xCC, 0xC9, 0xDA, 0x95
-  },
-  {
-    0x05, 0x6F, 0x29, 0x81, 0x6B, 0x8A, 0xF8, 0xF5,
-    0x66, 0x82, 0xBC, 0x4D, 0x7C, 0xF0, 0x94, 0x11,
-    0x1D, 0xA7, 0x73, 0x3E, 0x72, 0x6C, 0xD1, 0x3D,
-    0x6B, 0x3E, 0x8E, 0xA0, 0x3E, 0x92, 0xA0, 0xD5
-  },
-  {
-    0xF5, 0xEC, 0x43, 0xA2, 0x8A, 0xCB, 0xEF, 0xF1,
-    0xF3, 0x31, 0x8A, 0x5B, 0xCA, 0xC7, 0xC6, 0x6D,
-    0xDB, 0x52, 0x30, 0xB7, 0x9D, 0xB2, 0xD1, 0x05,
-    0xBC, 0xBE, 0x15, 0xF3, 0xC1, 0x14, 0x8D, 0x69
-  },
-  {
-    0x2A, 0x69, 0x60, 0xAD, 0x1D, 0x8D, 0xD5, 0x47,
-    0x55, 0x5C, 0xFB, 0xD5, 0xE4, 0x60, 0x0F, 0x1E,
-    0xAA, 0x1C, 0x8E, 0xDA, 0x34, 0xDE, 0x03, 0x74,
-    0xEC, 0x4A, 0x26, 0xEA, 0xAA, 0xA3, 0x3B, 0x4E
-  },
-  {
-    0xDC, 0xC1, 0xEA, 0x7B, 0xAA, 0xB9, 0x33, 0x84,
-    0xF7, 0x6B, 0x79, 0x68, 0x66, 0x19, 0x97, 0x54,
-    0x74, 0x2F, 0x7B, 0x96, 0xD6, 0xB4, 0xC1, 0x20,
-    0x16, 0x5C, 0x04, 0xA6, 0xC4, 0xF5, 0xCE, 0x10
-  },
-  {
-    0x13, 0xD5, 0xDF, 0x17, 0x92, 0x21, 0x37, 0x9C,
-    0x6A, 0x78, 0xC0, 0x7C, 0x79, 0x3F, 0xF5, 0x34,
-    0x87, 0xCA, 0xE6, 0xBF, 0x9F, 0xE8, 0x82, 0x54,
-    0x1A, 0xB0, 0xE7, 0x35, 0xE3, 0xEA, 0xDA, 0x3B
-  },
-  {
-    0x8C, 0x59, 0xE4, 0x40, 0x76, 0x41, 0xA0, 0x1E,
-    0x8F, 0xF9, 0x1F, 0x99, 0x80, 0xDC, 0x23, 0x6F,
-    0x4E, 0xCD, 0x6F, 0xCF, 0x52, 0x58, 0x9A, 0x09,
-    0x9A, 0x96, 0x16, 0x33, 0x96, 0x77, 0x14, 0xE1
-  },
-  {
-    0x83, 0x3B, 0x1A, 0xC6, 0xA2, 0x51, 0xFD, 0x08,
-    0xFD, 0x6D, 0x90, 0x8F, 0xEA, 0x2A, 0x4E, 0xE1,
-    0xE0, 0x40, 0xBC, 0xA9, 0x3F, 0xC1, 0xA3, 0x8E,
-    0xC3, 0x82, 0x0E, 0x0C, 0x10, 0xBD, 0x82, 0xEA
-  },
-  {
-    0xA2, 0x44, 0xF9, 0x27, 0xF3, 0xB4, 0x0B, 0x8F,
-    0x6C, 0x39, 0x15, 0x70, 0xC7, 0x65, 0x41, 0x8F,
-    0x2F, 0x6E, 0x70, 0x8E, 0xAC, 0x90, 0x06, 0xC5,
-    0x1A, 0x7F, 0xEF, 0xF4, 0xAF, 0x3B, 0x2B, 0x9E
-  },
-  {
-    0x3D, 0x99, 0xED, 0x95, 0x50, 0xCF, 0x11, 0x96,
-    0xE6, 0xC4, 0xD2, 0x0C, 0x25, 0x96, 0x20, 0xF8,
-    0x58, 0xC3, 0xD7, 0x03, 0x37, 0x4C, 0x12, 0x8C,
-    0xE7, 0xB5, 0x90, 0x31, 0x0C, 0x83, 0x04, 0x6D
-  },
-  {
-    0x2B, 0x35, 0xC4, 0x7D, 0x7B, 0x87, 0x76, 0x1F,
-    0x0A, 0xE4, 0x3A, 0xC5, 0x6A, 0xC2, 0x7B, 0x9F,
-    0x25, 0x83, 0x03, 0x67, 0xB5, 0x95, 0xBE, 0x8C,
-    0x24, 0x0E, 0x94, 0x60, 0x0C, 0x6E, 0x33, 0x12
-  },
-  {
-    0x5D, 0x11, 0xED, 0x37, 0xD2, 0x4D, 0xC7, 0x67,
-    0x30, 0x5C, 0xB7, 0xE1, 0x46, 0x7D, 0x87, 0xC0,
-    0x65, 0xAC, 0x4B, 0xC8, 0xA4, 0x26, 0xDE, 0x38,
-    0x99, 0x1F, 0xF5, 0x9A, 0xA8, 0x73, 0x5D, 0x02
-  },
-  {
-    0xB8, 0x36, 0x47, 0x8E, 0x1C, 0xA0, 0x64, 0x0D,
-    0xCE, 0x6F, 0xD9, 0x10, 0xA5, 0x09, 0x62, 0x72,
-    0xC8, 0x33, 0x09, 0x90, 0xCD, 0x97, 0x86, 0x4A,
-    0xC2, 0xBF, 0x14, 0xEF, 0x6B, 0x23, 0x91, 0x4A
-  },
-  {
-    0x91, 0x00, 0xF9, 0x46, 0xD6, 0xCC, 0xDE, 0x3A,
-    0x59, 0x7F, 0x90, 0xD3, 0x9F, 0xC1, 0x21, 0x5B,
-    0xAD, 0xDC, 0x74, 0x13, 0x64, 0x3D, 0x85, 0xC2,
-    0x1C, 0x3E, 0xEE, 0x5D, 0x2D, 0xD3, 0x28, 0x94
-  },
-  {
-    0xDA, 0x70, 0xEE, 0xDD, 0x23, 0xE6, 0x63, 0xAA,
-    0x1A, 0x74, 0xB9, 0x76, 0x69, 0x35, 0xB4, 0x79,
-    0x22, 0x2A, 0x72, 0xAF, 0xBA, 0x5C, 0x79, 0x51,
-    0x58, 0xDA, 0xD4, 0x1A, 0x3B, 0xD7, 0x7E, 0x40
-  },
-  {
-    0xF0, 0x67, 0xED, 0x6A, 0x0D, 0xBD, 0x43, 0xAA,
-    0x0A, 0x92, 0x54, 0xE6, 0x9F, 0xD6, 0x6B, 0xDD,
-    0x8A, 0xCB, 0x87, 0xDE, 0x93, 0x6C, 0x25, 0x8C,
-    0xFB, 0x02, 0x28, 0x5F, 0x2C, 0x11, 0xFA, 0x79
-  },
-  {
-    0x71, 0x5C, 0x99, 0xC7, 0xD5, 0x75, 0x80, 0xCF,
-    0x97, 0x53, 0xB4, 0xC1, 0xD7, 0x95, 0xE4, 0x5A,
-    0x83, 0xFB, 0xB2, 0x28, 0xC0, 0xD3, 0x6F, 0xBE,
-    0x20, 0xFA, 0xF3, 0x9B, 0xDD, 0x6D, 0x4E, 0x85
-  },
-  {
-    0xE4, 0x57, 0xD6, 0xAD, 0x1E, 0x67, 0xCB, 0x9B,
-    0xBD, 0x17, 0xCB, 0xD6, 0x98, 0xFA, 0x6D, 0x7D,
-    0xAE, 0x0C, 0x9B, 0x7A, 0xD6, 0xCB, 0xD6, 0x53,
-    0x96, 0x34, 0xE3, 0x2A, 0x71, 0x9C, 0x84, 0x92
-  },
-  {
-    0xEC, 0xE3, 0xEA, 0x81, 0x03, 0xE0, 0x24, 0x83,
-    0xC6, 0x4A, 0x70, 0xA4, 0xBD, 0xCE, 0xE8, 0xCE,
-    0xB6, 0x27, 0x8F, 0x25, 0x33, 0xF3, 0xF4, 0x8D,
-    0xBE, 0xED, 0xFB, 0xA9, 0x45, 0x31, 0xD4, 0xAE
-  },
-  {
-    0x38, 0x8A, 0xA5, 0xD3, 0x66, 0x7A, 0x97, 0xC6,
-    0x8D, 0x3D, 0x56, 0xF8, 0xF3, 0xEE, 0x8D, 0x3D,
-    0x36, 0x09, 0x1F, 0x17, 0xFE, 0x5D, 0x1B, 0x0D,
-    0x5D, 0x84, 0xC9, 0x3B, 0x2F, 0xFE, 0x40, 0xBD
-  },
-  {
-    0x8B, 0x6B, 0x31, 0xB9, 0xAD, 0x7C, 0x3D, 0x5C,
-    0xD8, 0x4B, 0xF9, 0x89, 0x47, 0xB9, 0xCD, 0xB5,
-    0x9D, 0xF8, 0xA2, 0x5F, 0xF7, 0x38, 0x10, 0x10,
-    0x13, 0xBE, 0x4F, 0xD6, 0x5E, 0x1D, 0xD1, 0xA3
-  },
-  {
-    0x06, 0x62, 0x91, 0xF6, 0xBB, 0xD2, 0x5F, 0x3C,
-    0x85, 0x3D, 0xB7, 0xD8, 0xB9, 0x5C, 0x9A, 0x1C,
-    0xFB, 0x9B, 0xF1, 0xC1, 0xC9, 0x9F, 0xB9, 0x5A,
-    0x9B, 0x78, 0x69, 0xD9, 0x0F, 0x1C, 0x29, 0x03
-  },
-  {
-    0xA7, 0x07, 0xEF, 0xBC, 0xCD, 0xCE, 0xED, 0x42,
-    0x96, 0x7A, 0x66, 0xF5, 0x53, 0x9B, 0x93, 0xED,
-    0x75, 0x60, 0xD4, 0x67, 0x30, 0x40, 0x16, 0xC4,
-    0x78, 0x0D, 0x77, 0x55, 0xA5, 0x65, 0xD4, 0xC4
-  },
-  {
-    0x38, 0xC5, 0x3D, 0xFB, 0x70, 0xBE, 0x7E, 0x79,
-    0x2B, 0x07, 0xA6, 0xA3, 0x5B, 0x8A, 0x6A, 0x0A,
-    0xBA, 0x02, 0xC5, 0xC5, 0xF3, 0x8B, 0xAF, 0x5C,
-    0x82, 0x3F, 0xDF, 0xD9, 0xE4, 0x2D, 0x65, 0x7E
-  },
-  {
-    0xF2, 0x91, 0x13, 0x86, 0x50, 0x1D, 0x9A, 0xB9,
-    0xD7, 0x20, 0xCF, 0x8A, 0xD1, 0x05, 0x03, 0xD5,
-    0x63, 0x4B, 0xF4, 0xB7, 0xD1, 0x2B, 0x56, 0xDF,
-    0xB7, 0x4F, 0xEC, 0xC6, 0xE4, 0x09, 0x3F, 0x68
-  },
-  {
-    0xC6, 0xF2, 0xBD, 0xD5, 0x2B, 0x81, 0xE6, 0xE4,
-    0xF6, 0x59, 0x5A, 0xBD, 0x4D, 0x7F, 0xB3, 0x1F,
-    0x65, 0x11, 0x69, 0xD0, 0x0F, 0xF3, 0x26, 0x92,
-    0x6B, 0x34, 0x94, 0x7B, 0x28, 0xA8, 0x39, 0x59
-  },
-  {
-    0x29, 0x3D, 0x94, 0xB1, 0x8C, 0x98, 0xBB, 0x32,
-    0x23, 0x36, 0x6B, 0x8C, 0xE7, 0x4C, 0x28, 0xFB,
-    0xDF, 0x28, 0xE1, 0xF8, 0x4A, 0x33, 0x50, 0xB0,
-    0xEB, 0x2D, 0x18, 0x04, 0xA5, 0x77, 0x57, 0x9B
-  },
-  {
-    0x2C, 0x2F, 0xA5, 0xC0, 0xB5, 0x15, 0x33, 0x16,
-    0x5B, 0xC3, 0x75, 0xC2, 0x2E, 0x27, 0x81, 0x76,
-    0x82, 0x70, 0xA3, 0x83, 0x98, 0x5D, 0x13, 0xBD,
-    0x6B, 0x67, 0xB6, 0xFD, 0x67, 0xF8, 0x89, 0xEB
-  },
-  {
-    0xCA, 0xA0, 0x9B, 0x82, 0xB7, 0x25, 0x62, 0xE4,
-    0x3F, 0x4B, 0x22, 0x75, 0xC0, 0x91, 0x91, 0x8E,
-    0x62, 0x4D, 0x91, 0x16, 0x61, 0xCC, 0x81, 0x1B,
-    0xB5, 0xFA, 0xEC, 0x51, 0xF6, 0x08, 0x8E, 0xF7
-  },
-  {
-    0x24, 0x76, 0x1E, 0x45, 0xE6, 0x74, 0x39, 0x53,
-    0x79, 0xFB, 0x17, 0x72, 0x9C, 0x78, 0xCB, 0x93,
-    0x9E, 0x6F, 0x74, 0xC5, 0xDF, 0xFB, 0x9C, 0x96,
-    0x1F, 0x49, 0x59, 0x82, 0xC3, 0xED, 0x1F, 0xE3
-  },
-  {
-    0x55, 0xB7, 0x0A, 0x82, 0x13, 0x1E, 0xC9, 0x48,
-    0x88, 0xD7, 0xAB, 0x54, 0xA7, 0xC5, 0x15, 0x25,
-    0x5C, 0x39, 0x38, 0xBB, 0x10, 0xBC, 0x78, 0x4D,
-    0xC9, 0xB6, 0x7F, 0x07, 0x6E, 0x34, 0x1A, 0x73
-  },
-  {
-    0x6A, 0xB9, 0x05, 0x7B, 0x97, 0x7E, 0xBC, 0x3C,
-    0xA4, 0xD4, 0xCE, 0x74, 0x50, 0x6C, 0x25, 0xCC,
-    0xCD, 0xC5, 0x66, 0x49, 0x7C, 0x45, 0x0B, 0x54,
-    0x15, 0xA3, 0x94, 0x86, 0xF8, 0x65, 0x7A, 0x03
-  },
-  {
-    0x24, 0x06, 0x6D, 0xEE, 0xE0, 0xEC, 0xEE, 0x15,
-    0xA4, 0x5F, 0x0A, 0x32, 0x6D, 0x0F, 0x8D, 0xBC,
-    0x79, 0x76, 0x1E, 0xBB, 0x93, 0xCF, 0x8C, 0x03,
-    0x77, 0xAF, 0x44, 0x09, 0x78, 0xFC, 0xF9, 0x94
-  },
-  {
-    0x20, 0x00, 0x0D, 0x3F, 0x66, 0xBA, 0x76, 0x86,
-    0x0D, 0x5A, 0x95, 0x06, 0x88, 0xB9, 0xAA, 0x0D,
-    0x76, 0xCF, 0xEA, 0x59, 0xB0, 0x05, 0xD8, 0x59,
-    0x91, 0x4B, 0x1A, 0x46, 0x65, 0x3A, 0x93, 0x9B
-  },
-  {
-    0xB9, 0x2D, 0xAA, 0x79, 0x60, 0x3E, 0x3B, 0xDB,
-    0xC3, 0xBF, 0xE0, 0xF4, 0x19, 0xE4, 0x09, 0xB2,
-    0xEA, 0x10, 0xDC, 0x43, 0x5B, 0xEE, 0xFE, 0x29,
-    0x59, 0xDA, 0x16, 0x89, 0x5D, 0x5D, 0xCA, 0x1C
-  },
-  {
-    0xE9, 0x47, 0x94, 0x87, 0x05, 0xB2, 0x06, 0xD5,
-    0x72, 0xB0, 0xE8, 0xF6, 0x2F, 0x66, 0xA6, 0x55,
-    0x1C, 0xBD, 0x6B, 0xC3, 0x05, 0xD2, 0x6C, 0xE7,
-    0x53, 0x9A, 0x12, 0xF9, 0xAA, 0xDF, 0x75, 0x71
-  },
-  {
-    0x3D, 0x67, 0xC1, 0xB3, 0xF9, 0xB2, 0x39, 0x10,
-    0xE3, 0xD3, 0x5E, 0x6B, 0x0F, 0x2C, 0xCF, 0x44,
-    0xA0, 0xB5, 0x40, 0xA4, 0x5C, 0x18, 0xBA, 0x3C,
-    0x36, 0x26, 0x4D, 0xD4, 0x8E, 0x96, 0xAF, 0x6A
-  },
-  {
-    0xC7, 0x55, 0x8B, 0xAB, 0xDA, 0x04, 0xBC, 0xCB,
-    0x76, 0x4D, 0x0B, 0xBF, 0x33, 0x58, 0x42, 0x51,
-    0x41, 0x90, 0x2D, 0x22, 0x39, 0x1D, 0x9F, 0x8C,
-    0x59, 0x15, 0x9F, 0xEC, 0x9E, 0x49, 0xB1, 0x51
-  },
-  {
-    0x0B, 0x73, 0x2B, 0xB0, 0x35, 0x67, 0x5A, 0x50,
-    0xFF, 0x58, 0xF2, 0xC2, 0x42, 0xE4, 0x71, 0x0A,
-    0xEC, 0xE6, 0x46, 0x70, 0x07, 0x9C, 0x13, 0x04,
-    0x4C, 0x79, 0xC9, 0xB7, 0x49, 0x1F, 0x70, 0x00
-  },
-  {
-    0xD1, 0x20, 0xB5, 0xEF, 0x6D, 0x57, 0xEB, 0xF0,
-    0x6E, 0xAF, 0x96, 0xBC, 0x93, 0x3C, 0x96, 0x7B,
-    0x16, 0xCB, 0xE6, 0xE2, 0xBF, 0x00, 0x74, 0x1C,
-    0x30, 0xAA, 0x1C, 0x54, 0xBA, 0x64, 0x80, 0x1F
-  },
-  {
-    0x58, 0xD2, 0x12, 0xAD, 0x6F, 0x58, 0xAE, 0xF0,
-    0xF8, 0x01, 0x16, 0xB4, 0x41, 0xE5, 0x7F, 0x61,
-    0x95, 0xBF, 0xEF, 0x26, 0xB6, 0x14, 0x63, 0xED,
-    0xEC, 0x11, 0x83, 0xCD, 0xB0, 0x4F, 0xE7, 0x6D
-  },
-  {
-    0xB8, 0x83, 0x6F, 0x51, 0xD1, 0xE2, 0x9B, 0xDF,
-    0xDB, 0xA3, 0x25, 0x56, 0x53, 0x60, 0x26, 0x8B,
-    0x8F, 0xAD, 0x62, 0x74, 0x73, 0xED, 0xEC, 0xEF,
-    0x7E, 0xAE, 0xFE, 0xE8, 0x37, 0xC7, 0x40, 0x03
-  },
-  {
-    0xC5, 0x47, 0xA3, 0xC1, 0x24, 0xAE, 0x56, 0x85,
-    0xFF, 0xA7, 0xB8, 0xED, 0xAF, 0x96, 0xEC, 0x86,
-    0xF8, 0xB2, 0xD0, 0xD5, 0x0C, 0xEE, 0x8B, 0xE3,
-    0xB1, 0xF0, 0xC7, 0x67, 0x63, 0x06, 0x9D, 0x9C
-  },
-  {
-    0x5D, 0x16, 0x8B, 0x76, 0x9A, 0x2F, 0x67, 0x85,
-    0x3D, 0x62, 0x95, 0xF7, 0x56, 0x8B, 0xE4, 0x0B,
-    0xB7, 0xA1, 0x6B, 0x8D, 0x65, 0xBA, 0x87, 0x63,
-    0x5D, 0x19, 0x78, 0xD2, 0xAB, 0x11, 0xBA, 0x2A
-  },
-  {
-    0xA2, 0xF6, 0x75, 0xDC, 0x73, 0x02, 0x63, 0x8C,
-    0xB6, 0x02, 0x01, 0x06, 0x4C, 0xA5, 0x50, 0x77,
-    0x71, 0x4D, 0x71, 0xFE, 0x09, 0x6A, 0x31, 0x5F,
-    0x2F, 0xE7, 0x40, 0x12, 0x77, 0xCA, 0xA5, 0xAF
-  },
-  {
-    0xC8, 0xAA, 0xB5, 0xCD, 0x01, 0x60, 0xAE, 0x78,
-    0xCD, 0x2E, 0x8A, 0xC5, 0xFB, 0x0E, 0x09, 0x3C,
-    0xDB, 0x5C, 0x4B, 0x60, 0x52, 0xA0, 0xA9, 0x7B,
-    0xB0, 0x42, 0x16, 0x82, 0x6F, 0xA7, 0xA4, 0x37
-  },
-  {
-    0xFF, 0x68, 0xCA, 0x40, 0x35, 0xBF, 0xEB, 0x43,
-    0xFB, 0xF1, 0x45, 0xFD, 0xDD, 0x5E, 0x43, 0xF1,
-    0xCE, 0xA5, 0x4F, 0x11, 0xF7, 0xBE, 0xE1, 0x30,
-    0x58, 0xF0, 0x27, 0x32, 0x9A, 0x4A, 0x5F, 0xA4
-  },
-  {
-    0x1D, 0x4E, 0x54, 0x87, 0xAE, 0x3C, 0x74, 0x0F,
-    0x2B, 0xA6, 0xE5, 0x41, 0xAC, 0x91, 0xBC, 0x2B,
-    0xFC, 0xD2, 0x99, 0x9C, 0x51, 0x8D, 0x80, 0x7B,
-    0x42, 0x67, 0x48, 0x80, 0x3A, 0x35, 0x0F, 0xD4
-  },
-  {
-    0x6D, 0x24, 0x4E, 0x1A, 0x06, 0xCE, 0x4E, 0xF5,
-    0x78, 0xDD, 0x0F, 0x63, 0xAF, 0xF0, 0x93, 0x67,
-    0x06, 0x73, 0x51, 0x19, 0xCA, 0x9C, 0x8D, 0x22,
-    0xD8, 0x6C, 0x80, 0x14, 0x14, 0xAB, 0x97, 0x41
-  },
-  {
-    0xDE, 0xCF, 0x73, 0x29, 0xDB, 0xCC, 0x82, 0x7B,
-    0x8F, 0xC5, 0x24, 0xC9, 0x43, 0x1E, 0x89, 0x98,
-    0x02, 0x9E, 0xCE, 0x12, 0xCE, 0x93, 0xB7, 0xB2,
-    0xF3, 0xE7, 0x69, 0xA9, 0x41, 0xFB, 0x8C, 0xEA
-  },
-  {
-    0x2F, 0xAF, 0xCC, 0x0F, 0x2E, 0x63, 0xCB, 0xD0,
-    0x77, 0x55, 0xBE, 0x7B, 0x75, 0xEC, 0xEA, 0x0A,
-    0xDF, 0xF9, 0xAA, 0x5E, 0xDE, 0x2A, 0x52, 0xFD,
-    0xAB, 0x4D, 0xFD, 0x03, 0x74, 0xCD, 0x48, 0x3F
-  },
-  {
-    0xAA, 0x85, 0x01, 0x0D, 0xD4, 0x6A, 0x54, 0x6B,
-    0x53, 0x5E, 0xF4, 0xCF, 0x5F, 0x07, 0xD6, 0x51,
-    0x61, 0xE8, 0x98, 0x28, 0xF3, 0xA7, 0x7D, 0xB7,
-    0xB9, 0xB5, 0x6F, 0x0D, 0xF5, 0x9A, 0xAE, 0x45
-  },
-  {
-    0x07, 0xE8, 0xE1, 0xEE, 0x73, 0x2C, 0xB0, 0xD3,
-    0x56, 0xC9, 0xC0, 0xD1, 0x06, 0x9C, 0x89, 0xD1,
-    0x7A, 0xDF, 0x6A, 0x9A, 0x33, 0x4F, 0x74, 0x5E,
-    0xC7, 0x86, 0x73, 0x32, 0x54, 0x8C, 0xA8, 0xE9
-  },
-  {
-    0x0E, 0x01, 0xE8, 0x1C, 0xAD, 0xA8, 0x16, 0x2B,
-    0xFD, 0x5F, 0x8A, 0x8C, 0x81, 0x8A, 0x6C, 0x69,
-    0xFE, 0xDF, 0x02, 0xCE, 0xB5, 0x20, 0x85, 0x23,
-    0xCB, 0xE5, 0x31, 0x3B, 0x89, 0xCA, 0x10, 0x53
-  },
-  {
-    0x6B, 0xB6, 0xC6, 0x47, 0x26, 0x55, 0x08, 0x43,
-    0x99, 0x85, 0x2E, 0x00, 0x24, 0x9F, 0x8C, 0xB2,
-    0x47, 0x89, 0x6D, 0x39, 0x2B, 0x02, 0xD7, 0x3B,
-    0x7F, 0x0D, 0xD8, 0x18, 0xE1, 0xE2, 0x9B, 0x07
-  },
-  {
-    0x42, 0xD4, 0x63, 0x6E, 0x20, 0x60, 0xF0, 0x8F,
-    0x41, 0xC8, 0x82, 0xE7, 0x6B, 0x39, 0x6B, 0x11,
-    0x2E, 0xF6, 0x27, 0xCC, 0x24, 0xC4, 0x3D, 0xD5,
-    0xF8, 0x3A, 0x1D, 0x1A, 0x7E, 0xAD, 0x71, 0x1A
-  },
-  {
-    0x48, 0x58, 0xC9, 0xA1, 0x88, 0xB0, 0x23, 0x4F,
-    0xB9, 0xA8, 0xD4, 0x7D, 0x0B, 0x41, 0x33, 0x65,
-    0x0A, 0x03, 0x0B, 0xD0, 0x61, 0x1B, 0x87, 0xC3,
-    0x89, 0x2E, 0x94, 0x95, 0x1F, 0x8D, 0xF8, 0x52
-  },
-  {
-    0x3F, 0xAB, 0x3E, 0x36, 0x98, 0x8D, 0x44, 0x5A,
-    0x51, 0xC8, 0x78, 0x3E, 0x53, 0x1B, 0xE3, 0xA0,
-    0x2B, 0xE4, 0x0C, 0xD0, 0x47, 0x96, 0xCF, 0xB6,
-    0x1D, 0x40, 0x34, 0x74, 0x42, 0xD3, 0xF7, 0x94
-  },
-  {
-    0xEB, 0xAB, 0xC4, 0x96, 0x36, 0xBD, 0x43, 0x3D,
-    0x2E, 0xC8, 0xF0, 0xE5, 0x18, 0x73, 0x2E, 0xF8,
-    0xFA, 0x21, 0xD4, 0xD0, 0x71, 0xCC, 0x3B, 0xC4,
-    0x6C, 0xD7, 0x9F, 0xA3, 0x8A, 0x28, 0xB8, 0x10
-  },
-  {
-    0xA1, 0xD0, 0x34, 0x35, 0x23, 0xB8, 0x93, 0xFC,
-    0xA8, 0x4F, 0x47, 0xFE, 0xB4, 0xA6, 0x4D, 0x35,
-    0x0A, 0x17, 0xD8, 0xEE, 0xF5, 0x49, 0x7E, 0xCE,
-    0x69, 0x7D, 0x02, 0xD7, 0x91, 0x78, 0xB5, 0x91
-  },
-  {
-    0x26, 0x2E, 0xBF, 0xD9, 0x13, 0x0B, 0x7D, 0x28,
-    0x76, 0x0D, 0x08, 0xEF, 0x8B, 0xFD, 0x3B, 0x86,
-    0xCD, 0xD3, 0xB2, 0x11, 0x3D, 0x2C, 0xAE, 0xF7,
-    0xEA, 0x95, 0x1A, 0x30, 0x3D, 0xFA, 0x38, 0x46
-  },
-  {
-    0xF7, 0x61, 0x58, 0xED, 0xD5, 0x0A, 0x15, 0x4F,
-    0xA7, 0x82, 0x03, 0xED, 0x23, 0x62, 0x93, 0x2F,
-    0xCB, 0x82, 0x53, 0xAA, 0xE3, 0x78, 0x90, 0x3E,
-    0xDE, 0xD1, 0xE0, 0x3F, 0x70, 0x21, 0xA2, 0x57
-  },
-  {
-    0x26, 0x17, 0x8E, 0x95, 0x0A, 0xC7, 0x22, 0xF6,
-    0x7A, 0xE5, 0x6E, 0x57, 0x1B, 0x28, 0x4C, 0x02,
-    0x07, 0x68, 0x4A, 0x63, 0x34, 0xA1, 0x77, 0x48,
-    0xA9, 0x4D, 0x26, 0x0B, 0xC5, 0xF5, 0x52, 0x74
-  },
-  {
-    0xC3, 0x78, 0xD1, 0xE4, 0x93, 0xB4, 0x0E, 0xF1,
-    0x1F, 0xE6, 0xA1, 0x5D, 0x9C, 0x27, 0x37, 0xA3,
-    0x78, 0x09, 0x63, 0x4C, 0x5A, 0xBA, 0xD5, 0xB3,
-    0x3D, 0x7E, 0x39, 0x3B, 0x4A, 0xE0, 0x5D, 0x03
-  },
-  {
-    0x98, 0x4B, 0xD8, 0x37, 0x91, 0x01, 0xBE, 0x8F,
-    0xD8, 0x06, 0x12, 0xD8, 0xEA, 0x29, 0x59, 0xA7,
-    0x86, 0x5E, 0xC9, 0x71, 0x85, 0x23, 0x55, 0x01,
-    0x07, 0xAE, 0x39, 0x38, 0xDF, 0x32, 0x01, 0x1B
-  },
-  {
-    0xC6, 0xF2, 0x5A, 0x81, 0x2A, 0x14, 0x48, 0x58,
-    0xAC, 0x5C, 0xED, 0x37, 0xA9, 0x3A, 0x9F, 0x47,
-    0x59, 0xBA, 0x0B, 0x1C, 0x0F, 0xDC, 0x43, 0x1D,
-    0xCE, 0x35, 0xF9, 0xEC, 0x1F, 0x1F, 0x4A, 0x99
-  },
-  {
-    0x92, 0x4C, 0x75, 0xC9, 0x44, 0x24, 0xFF, 0x75,
-    0xE7, 0x4B, 0x8B, 0x4E, 0x94, 0x35, 0x89, 0x58,
-    0xB0, 0x27, 0xB1, 0x71, 0xDF, 0x5E, 0x57, 0x89,
-    0x9A, 0xD0, 0xD4, 0xDA, 0xC3, 0x73, 0x53, 0xB6
-  },
-  {
-    0x0A, 0xF3, 0x58, 0x92, 0xA6, 0x3F, 0x45, 0x93,
-    0x1F, 0x68, 0x46, 0xED, 0x19, 0x03, 0x61, 0xCD,
-    0x07, 0x30, 0x89, 0xE0, 0x77, 0x16, 0x57, 0x14,
-    0xB5, 0x0B, 0x81, 0xA2, 0xE3, 0xDD, 0x9B, 0xA1
-  },
-  {
-    0xCC, 0x80, 0xCE, 0xFB, 0x26, 0xC3, 0xB2, 0xB0,
-    0xDA, 0xEF, 0x23, 0x3E, 0x60, 0x6D, 0x5F, 0xFC,
-    0x80, 0xFA, 0x17, 0x42, 0x7D, 0x18, 0xE3, 0x04,
-    0x89, 0x67, 0x3E, 0x06, 0xEF, 0x4B, 0x87, 0xF7
-  },
-  {
-    0xC2, 0xF8, 0xC8, 0x11, 0x74, 0x47, 0xF3, 0x97,
-    0x8B, 0x08, 0x18, 0xDC, 0xF6, 0xF7, 0x01, 0x16,
-    0xAC, 0x56, 0xFD, 0x18, 0x4D, 0xD1, 0x27, 0x84,
-    0x94, 0xE1, 0x03, 0xFC, 0x6D, 0x74, 0xA8, 0x87
-  },
-  {
-    0xBD, 0xEC, 0xF6, 0xBF, 0xC1, 0xBA, 0x0D, 0xF6,
-    0xE8, 0x62, 0xC8, 0x31, 0x99, 0x22, 0x07, 0x79,
-    0x6A, 0xCC, 0x79, 0x79, 0x68, 0x35, 0x88, 0x28,
-    0xC0, 0x6E, 0x7A, 0x51, 0xE0, 0x90, 0x09, 0x8F
-  },
-  {
-    0x24, 0xD1, 0xA2, 0x6E, 0x3D, 0xAB, 0x02, 0xFE,
-    0x45, 0x72, 0xD2, 0xAA, 0x7D, 0xBD, 0x3E, 0xC3,
-    0x0F, 0x06, 0x93, 0xDB, 0x26, 0xF2, 0x73, 0xD0,
-    0xAB, 0x2C, 0xB0, 0xC1, 0x3B, 0x5E, 0x64, 0x51
-  },
-  {
-    0xEC, 0x56, 0xF5, 0x8B, 0x09, 0x29, 0x9A, 0x30,
-    0x0B, 0x14, 0x05, 0x65, 0xD7, 0xD3, 0xE6, 0x87,
-    0x82, 0xB6, 0xE2, 0xFB, 0xEB, 0x4B, 0x7E, 0xA9,
-    0x7A, 0xC0, 0x57, 0x98, 0x90, 0x61, 0xDD, 0x3F
-  },
-  {
-    0x11, 0xA4, 0x37, 0xC1, 0xAB, 0xA3, 0xC1, 0x19,
-    0xDD, 0xFA, 0xB3, 0x1B, 0x3E, 0x8C, 0x84, 0x1D,
-    0xEE, 0xEB, 0x91, 0x3E, 0xF5, 0x7F, 0x7E, 0x48,
-    0xF2, 0xC9, 0xCF, 0x5A, 0x28, 0xFA, 0x42, 0xBC
-  },
-  {
-    0x53, 0xC7, 0xE6, 0x11, 0x4B, 0x85, 0x0A, 0x2C,
-    0xB4, 0x96, 0xC9, 0xB3, 0xC6, 0x9A, 0x62, 0x3E,
-    0xAE, 0xA2, 0xCB, 0x1D, 0x33, 0xDD, 0x81, 0x7E,
-    0x47, 0x65, 0xED, 0xAA, 0x68, 0x23, 0xC2, 0x28
-  },
-  {
-    0x15, 0x4C, 0x3E, 0x96, 0xFE, 0xE5, 0xDB, 0x14,
-    0xF8, 0x77, 0x3E, 0x18, 0xAF, 0x14, 0x85, 0x79,
-    0x13, 0x50, 0x9D, 0xA9, 0x99, 0xB4, 0x6C, 0xDD,
-    0x3D, 0x4C, 0x16, 0x97, 0x60, 0xC8, 0x3A, 0xD2
-  },
-  {
-    0x40, 0xB9, 0x91, 0x6F, 0x09, 0x3E, 0x02, 0x7A,
-    0x87, 0x86, 0x64, 0x18, 0x18, 0x92, 0x06, 0x20,
-    0x47, 0x2F, 0xBC, 0xF6, 0x8F, 0x70, 0x1D, 0x1B,
-    0x68, 0x06, 0x32, 0xE6, 0x99, 0x6B, 0xDE, 0xD3
-  },
-  {
-    0x24, 0xC4, 0xCB, 0xBA, 0x07, 0x11, 0x98, 0x31,
-    0xA7, 0x26, 0xB0, 0x53, 0x05, 0xD9, 0x6D, 0xA0,
-    0x2F, 0xF8, 0xB1, 0x48, 0xF0, 0xDA, 0x44, 0x0F,
-    0xE2, 0x33, 0xBC, 0xAA, 0x32, 0xC7, 0x2F, 0x6F
-  },
-  {
-    0x5D, 0x20, 0x15, 0x10, 0x25, 0x00, 0x20, 0xB7,
-    0x83, 0x68, 0x96, 0x88, 0xAB, 0xBF, 0x8E, 0xCF,
-    0x25, 0x94, 0xA9, 0x6A, 0x08, 0xF2, 0xBF, 0xEC,
-    0x6C, 0xE0, 0x57, 0x44, 0x65, 0xDD, 0xED, 0x71
-  },
-  {
-    0x04, 0x3B, 0x97, 0xE3, 0x36, 0xEE, 0x6F, 0xDB,
-    0xBE, 0x2B, 0x50, 0xF2, 0x2A, 0xF8, 0x32, 0x75,
-    0xA4, 0x08, 0x48, 0x05, 0xD2, 0xD5, 0x64, 0x59,
-    0x62, 0x45, 0x4B, 0x6C, 0x9B, 0x80, 0x53, 0xA0
-  },
-  {
-    0x56, 0x48, 0x35, 0xCB, 0xAE, 0xA7, 0x74, 0x94,
-    0x85, 0x68, 0xBE, 0x36, 0xCF, 0x52, 0xFC, 0xDD,
-    0x83, 0x93, 0x4E, 0xB0, 0xA2, 0x75, 0x12, 0xDB,
-    0xE3, 0xE2, 0xDB, 0x47, 0xB9, 0xE6, 0x63, 0x5A
-  },
-  {
-    0xF2, 0x1C, 0x33, 0xF4, 0x7B, 0xDE, 0x40, 0xA2,
-    0xA1, 0x01, 0xC9, 0xCD, 0xE8, 0x02, 0x7A, 0xAF,
-    0x61, 0xA3, 0x13, 0x7D, 0xE2, 0x42, 0x2B, 0x30,
-    0x03, 0x5A, 0x04, 0xC2, 0x70, 0x89, 0x41, 0x83
-  },
-  {
-    0x9D, 0xB0, 0xEF, 0x74, 0xE6, 0x6C, 0xBB, 0x84,
-    0x2E, 0xB0, 0xE0, 0x73, 0x43, 0xA0, 0x3C, 0x5C,
-    0x56, 0x7E, 0x37, 0x2B, 0x3F, 0x23, 0xB9, 0x43,
-    0xC7, 0x88, 0xA4, 0xF2, 0x50, 0xF6, 0x78, 0x91
-  },
-  {
-    0xAB, 0x8D, 0x08, 0x65, 0x5F, 0xF1, 0xD3, 0xFE,
-    0x87, 0x58, 0xD5, 0x62, 0x23, 0x5F, 0xD2, 0x3E,
-    0x7C, 0xF9, 0xDC, 0xAA, 0xD6, 0x58, 0x87, 0x2A,
-    0x49, 0xE5, 0xD3, 0x18, 0x3B, 0x6C, 0xCE, 0xBD
-  },
-  {
-    0x6F, 0x27, 0xF7, 0x7E, 0x7B, 0xCF, 0x46, 0xA1,
-    0xE9, 0x63, 0xAD, 0xE0, 0x30, 0x97, 0x33, 0x54,
-    0x30, 0x31, 0xDC, 0xCD, 0xD4, 0x7C, 0xAA, 0xC1,
-    0x74, 0xD7, 0xD2, 0x7C, 0xE8, 0x07, 0x7E, 0x8B
-  },
-  {
-    0xE3, 0xCD, 0x54, 0xDA, 0x7E, 0x44, 0x4C, 0xAA,
-    0x62, 0x07, 0x56, 0x95, 0x25, 0xA6, 0x70, 0xEB,
-    0xAE, 0x12, 0x78, 0xDE, 0x4E, 0x3F, 0xE2, 0x68,
-    0x4B, 0x3E, 0x33, 0xF5, 0xEF, 0x90, 0xCC, 0x1B
-  },
-  {
-    0xB2, 0xC3, 0xE3, 0x3A, 0x51, 0xD2, 0x2C, 0x4C,
-    0x08, 0xFC, 0x09, 0x89, 0xC8, 0x73, 0xC9, 0xCC,
-    0x41, 0x50, 0x57, 0x9B, 0x1E, 0x61, 0x63, 0xFA,
-    0x69, 0x4A, 0xD5, 0x1D, 0x53, 0xD7, 0x12, 0xDC
-  },
-  {
-    0xBE, 0x7F, 0xDA, 0x98, 0x3E, 0x13, 0x18, 0x9B,
-    0x4C, 0x77, 0xE0, 0xA8, 0x09, 0x20, 0xB6, 0xE0,
-    0xE0, 0xEA, 0x80, 0xC3, 0xB8, 0x4D, 0xBE, 0x7E,
-    0x71, 0x17, 0xD2, 0x53, 0xF4, 0x81, 0x12, 0xF4
-  },
-  {
-    0xB6, 0x00, 0x8C, 0x28, 0xFA, 0xE0, 0x8A, 0xA4,
-    0x27, 0xE5, 0xBD, 0x3A, 0xAD, 0x36, 0xF1, 0x00,
-    0x21, 0xF1, 0x6C, 0x77, 0xCF, 0xEA, 0xBE, 0xD0,
-    0x7F, 0x97, 0xCC, 0x7D, 0xC1, 0xF1, 0x28, 0x4A
-  },
-  {
-    0x6E, 0x4E, 0x67, 0x60, 0xC5, 0x38, 0xF2, 0xE9,
-    0x7B, 0x3A, 0xDB, 0xFB, 0xBC, 0xDE, 0x57, 0xF8,
-    0x96, 0x6B, 0x7E, 0xA8, 0xFC, 0xB5, 0xBF, 0x7E,
-    0xFE, 0xC9, 0x13, 0xFD, 0x2A, 0x2B, 0x0C, 0x55
-  },
-  {
-    0x4A, 0xE5, 0x1F, 0xD1, 0x83, 0x4A, 0xA5, 0xBD,
-    0x9A, 0x6F, 0x7E, 0xC3, 0x9F, 0xC6, 0x63, 0x33,
-    0x8D, 0xC5, 0xD2, 0xE2, 0x07, 0x61, 0x56, 0x6D,
-    0x90, 0xCC, 0x68, 0xB1, 0xCB, 0x87, 0x5E, 0xD8
-  },
-  {
-    0xB6, 0x73, 0xAA, 0xD7, 0x5A, 0xB1, 0xFD, 0xB5,
-    0x40, 0x1A, 0xBF, 0xA1, 0xBF, 0x89, 0xF3, 0xAD,
-    0xD2, 0xEB, 0xC4, 0x68, 0xDF, 0x36, 0x24, 0xA4,
-    0x78, 0xF4, 0xFE, 0x85, 0x9D, 0x8D, 0x55, 0xE2
-  },
-  {
-    0x13, 0xC9, 0x47, 0x1A, 0x98, 0x55, 0x91, 0x35,
-    0x39, 0x83, 0x66, 0x60, 0x39, 0x8D, 0xA0, 0xF3,
-    0xF9, 0x9A, 0xDA, 0x08, 0x47, 0x9C, 0x69, 0xD1,
-    0xB7, 0xFC, 0xAA, 0x34, 0x61, 0xDD, 0x7E, 0x59
-  },
-  {
-    0x2C, 0x11, 0xF4, 0xA7, 0xF9, 0x9A, 0x1D, 0x23,
-    0xA5, 0x8B, 0xB6, 0x36, 0x35, 0x0F, 0xE8, 0x49,
-    0xF2, 0x9C, 0xBA, 0xC1, 0xB2, 0xA1, 0x11, 0x2D,
-    0x9F, 0x1E, 0xD5, 0xBC, 0x5B, 0x31, 0x3C, 0xCD
-  },
-  {
-    0xC7, 0xD3, 0xC0, 0x70, 0x6B, 0x11, 0xAE, 0x74,
-    0x1C, 0x05, 0xA1, 0xEF, 0x15, 0x0D, 0xD6, 0x5B,
-    0x54, 0x94, 0xD6, 0xD5, 0x4C, 0x9A, 0x86, 0xE2,
-    0x61, 0x78, 0x54, 0xE6, 0xAE, 0xEE, 0xBB, 0xD9
-  },
-  {
-    0x19, 0x4E, 0x10, 0xC9, 0x38, 0x93, 0xAF, 0xA0,
-    0x64, 0xC3, 0xAC, 0x04, 0xC0, 0xDD, 0x80, 0x8D,
-    0x79, 0x1C, 0x3D, 0x4B, 0x75, 0x56, 0xE8, 0x9D,
-    0x8D, 0x9C, 0xB2, 0x25, 0xC4, 0xB3, 0x33, 0x39
-  },
-  {
-    0x6F, 0xC4, 0x98, 0x8B, 0x8F, 0x78, 0x54, 0x6B,
-    0x16, 0x88, 0x99, 0x18, 0x45, 0x90, 0x8F, 0x13,
-    0x4B, 0x6A, 0x48, 0x2E, 0x69, 0x94, 0xB3, 0xD4,
-    0x83, 0x17, 0xBF, 0x08, 0xDB, 0x29, 0x21, 0x85
-  },
-  {
-    0x56, 0x65, 0xBE, 0xB8, 0xB0, 0x95, 0x55, 0x25,
-    0x81, 0x3B, 0x59, 0x81, 0xCD, 0x14, 0x2E, 0xD4,
-    0xD0, 0x3F, 0xBA, 0x38, 0xA6, 0xF3, 0xE5, 0xAD,
-    0x26, 0x8E, 0x0C, 0xC2, 0x70, 0xD1, 0xCD, 0x11
-  },
-  {
-    0xB8, 0x83, 0xD6, 0x8F, 0x5F, 0xE5, 0x19, 0x36,
-    0x43, 0x1B, 0xA4, 0x25, 0x67, 0x38, 0x05, 0x3B,
-    0x1D, 0x04, 0x26, 0xD4, 0xCB, 0x64, 0xB1, 0x6E,
-    0x83, 0xBA, 0xDC, 0x5E, 0x9F, 0xBE, 0x3B, 0x81
-  },
-  {
-    0x53, 0xE7, 0xB2, 0x7E, 0xA5, 0x9C, 0x2F, 0x6D,
-    0xBB, 0x50, 0x76, 0x9E, 0x43, 0x55, 0x4D, 0xF3,
-    0x5A, 0xF8, 0x9F, 0x48, 0x22, 0xD0, 0x46, 0x6B,
-    0x00, 0x7D, 0xD6, 0xF6, 0xDE, 0xAF, 0xFF, 0x02
-  },
-  {
-    0x1F, 0x1A, 0x02, 0x29, 0xD4, 0x64, 0x0F, 0x01,
-    0x90, 0x15, 0x88, 0xD9, 0xDE, 0xC2, 0x2D, 0x13,
-    0xFC, 0x3E, 0xB3, 0x4A, 0x61, 0xB3, 0x29, 0x38,
-    0xEF, 0xBF, 0x53, 0x34, 0xB2, 0x80, 0x0A, 0xFA
-  },
-  {
-    0xC2, 0xB4, 0x05, 0xAF, 0xA0, 0xFA, 0x66, 0x68,
-    0x85, 0x2A, 0xEE, 0x4D, 0x88, 0x04, 0x08, 0x53,
-    0xFA, 0xB8, 0x00, 0xE7, 0x2B, 0x57, 0x58, 0x14,
-    0x18, 0xE5, 0x50, 0x6F, 0x21, 0x4C, 0x7D, 0x1F
-  },
-  {
-    0xC0, 0x8A, 0xA1, 0xC2, 0x86, 0xD7, 0x09, 0xFD,
-    0xC7, 0x47, 0x37, 0x44, 0x97, 0x71, 0x88, 0xC8,
-    0x95, 0xBA, 0x01, 0x10, 0x14, 0x24, 0x7E, 0x4E,
-    0xFA, 0x8D, 0x07, 0xE7, 0x8F, 0xEC, 0x69, 0x5C
-  },
-  {
-    0xF0, 0x3F, 0x57, 0x89, 0xD3, 0x33, 0x6B, 0x80,
-    0xD0, 0x02, 0xD5, 0x9F, 0xDF, 0x91, 0x8B, 0xDB,
-    0x77, 0x5B, 0x00, 0x95, 0x6E, 0xD5, 0x52, 0x8E,
-    0x86, 0xAA, 0x99, 0x4A, 0xCB, 0x38, 0xFE, 0x2D
-  },
-};
-
-
-
-
-static const uint8_t blake2s_keyed_kat[KAT_LENGTH][BLAKE2S_OUTBYTES] =
-{
-  {
-    0x48, 0xA8, 0x99, 0x7D, 0xA4, 0x07, 0x87, 0x6B,
-    0x3D, 0x79, 0xC0, 0xD9, 0x23, 0x25, 0xAD, 0x3B,
-    0x89, 0xCB, 0xB7, 0x54, 0xD8, 0x6A, 0xB7, 0x1A,
-    0xEE, 0x04, 0x7A, 0xD3, 0x45, 0xFD, 0x2C, 0x49
-  },
-  {
-    0x40, 0xD1, 0x5F, 0xEE, 0x7C, 0x32, 0x88, 0x30,
-    0x16, 0x6A, 0xC3, 0xF9, 0x18, 0x65, 0x0F, 0x80,
-    0x7E, 0x7E, 0x01, 0xE1, 0x77, 0x25, 0x8C, 0xDC,
-    0x0A, 0x39, 0xB1, 0x1F, 0x59, 0x80, 0x66, 0xF1
-  },
-  {
-    0x6B, 0xB7, 0x13, 0x00, 0x64, 0x4C, 0xD3, 0x99,
-    0x1B, 0x26, 0xCC, 0xD4, 0xD2, 0x74, 0xAC, 0xD1,
-    0xAD, 0xEA, 0xB8, 0xB1, 0xD7, 0x91, 0x45, 0x46,
-    0xC1, 0x19, 0x8B, 0xBE, 0x9F, 0xC9, 0xD8, 0x03
-  },
-  {
-    0x1D, 0x22, 0x0D, 0xBE, 0x2E, 0xE1, 0x34, 0x66,
-    0x1F, 0xDF, 0x6D, 0x9E, 0x74, 0xB4, 0x17, 0x04,
-    0x71, 0x05, 0x56, 0xF2, 0xF6, 0xE5, 0xA0, 0x91,
-    0xB2, 0x27, 0x69, 0x74, 0x45, 0xDB, 0xEA, 0x6B
-  },
-  {
-    0xF6, 0xC3, 0xFB, 0xAD, 0xB4, 0xCC, 0x68, 0x7A,
-    0x00, 0x64, 0xA5, 0xBE, 0x6E, 0x79, 0x1B, 0xEC,
-    0x63, 0xB8, 0x68, 0xAD, 0x62, 0xFB, 0xA6, 0x1B,
-    0x37, 0x57, 0xEF, 0x9C, 0xA5, 0x2E, 0x05, 0xB2
-  },
-  {
-    0x49, 0xC1, 0xF2, 0x11, 0x88, 0xDF, 0xD7, 0x69,
-    0xAE, 0xA0, 0xE9, 0x11, 0xDD, 0x6B, 0x41, 0xF1,
-    0x4D, 0xAB, 0x10, 0x9D, 0x2B, 0x85, 0x97, 0x7A,
-    0xA3, 0x08, 0x8B, 0x5C, 0x70, 0x7E, 0x85, 0x98
-  },
-  {
-    0xFD, 0xD8, 0x99, 0x3D, 0xCD, 0x43, 0xF6, 0x96,
-    0xD4, 0x4F, 0x3C, 0xEA, 0x0F, 0xF3, 0x53, 0x45,
-    0x23, 0x4E, 0xC8, 0xEE, 0x08, 0x3E, 0xB3, 0xCA,
-    0xDA, 0x01, 0x7C, 0x7F, 0x78, 0xC1, 0x71, 0x43
-  },
-  {
-    0xE6, 0xC8, 0x12, 0x56, 0x37, 0x43, 0x8D, 0x09,
-    0x05, 0xB7, 0x49, 0xF4, 0x65, 0x60, 0xAC, 0x89,
-    0xFD, 0x47, 0x1C, 0xF8, 0x69, 0x2E, 0x28, 0xFA,
-    0xB9, 0x82, 0xF7, 0x3F, 0x01, 0x9B, 0x83, 0xA9
-  },
-  {
-    0x19, 0xFC, 0x8C, 0xA6, 0x97, 0x9D, 0x60, 0xE6,
-    0xED, 0xD3, 0xB4, 0x54, 0x1E, 0x2F, 0x96, 0x7C,
-    0xED, 0x74, 0x0D, 0xF6, 0xEC, 0x1E, 0xAE, 0xBB,
-    0xFE, 0x81, 0x38, 0x32, 0xE9, 0x6B, 0x29, 0x74
-  },
-  {
-    0xA6, 0xAD, 0x77, 0x7C, 0xE8, 0x81, 0xB5, 0x2B,
-    0xB5, 0xA4, 0x42, 0x1A, 0xB6, 0xCD, 0xD2, 0xDF,
-    0xBA, 0x13, 0xE9, 0x63, 0x65, 0x2D, 0x4D, 0x6D,
-    0x12, 0x2A, 0xEE, 0x46, 0x54, 0x8C, 0x14, 0xA7
-  },
-  {
-    0xF5, 0xC4, 0xB2, 0xBA, 0x1A, 0x00, 0x78, 0x1B,
-    0x13, 0xAB, 0xA0, 0x42, 0x52, 0x42, 0xC6, 0x9C,
-    0xB1, 0x55, 0x2F, 0x3F, 0x71, 0xA9, 0xA3, 0xBB,
-    0x22, 0xB4, 0xA6, 0xB4, 0x27, 0x7B, 0x46, 0xDD
-  },
-  {
-    0xE3, 0x3C, 0x4C, 0x9B, 0xD0, 0xCC, 0x7E, 0x45,
-    0xC8, 0x0E, 0x65, 0xC7, 0x7F, 0xA5, 0x99, 0x7F,
-    0xEC, 0x70, 0x02, 0x73, 0x85, 0x41, 0x50, 0x9E,
-    0x68, 0xA9, 0x42, 0x38, 0x91, 0xE8, 0x22, 0xA3
-  },
-  {
-    0xFB, 0xA1, 0x61, 0x69, 0xB2, 0xC3, 0xEE, 0x10,
-    0x5B, 0xE6, 0xE1, 0xE6, 0x50, 0xE5, 0xCB, 0xF4,
-    0x07, 0x46, 0xB6, 0x75, 0x3D, 0x03, 0x6A, 0xB5,
-    0x51, 0x79, 0x01, 0x4A, 0xD7, 0xEF, 0x66, 0x51
-  },
-  {
-    0xF5, 0xC4, 0xBE, 0xC6, 0xD6, 0x2F, 0xC6, 0x08,
-    0xBF, 0x41, 0xCC, 0x11, 0x5F, 0x16, 0xD6, 0x1C,
-    0x7E, 0xFD, 0x3F, 0xF6, 0xC6, 0x56, 0x92, 0xBB,
-    0xE0, 0xAF, 0xFF, 0xB1, 0xFE, 0xDE, 0x74, 0x75
-  },
-  {
-    0xA4, 0x86, 0x2E, 0x76, 0xDB, 0x84, 0x7F, 0x05,
-    0xBA, 0x17, 0xED, 0xE5, 0xDA, 0x4E, 0x7F, 0x91,
-    0xB5, 0x92, 0x5C, 0xF1, 0xAD, 0x4B, 0xA1, 0x27,
-    0x32, 0xC3, 0x99, 0x57, 0x42, 0xA5, 0xCD, 0x6E
-  },
-  {
-    0x65, 0xF4, 0xB8, 0x60, 0xCD, 0x15, 0xB3, 0x8E,
-    0xF8, 0x14, 0xA1, 0xA8, 0x04, 0x31, 0x4A, 0x55,
-    0xBE, 0x95, 0x3C, 0xAA, 0x65, 0xFD, 0x75, 0x8A,
-    0xD9, 0x89, 0xFF, 0x34, 0xA4, 0x1C, 0x1E, 0xEA
-  },
-  {
-    0x19, 0xBA, 0x23, 0x4F, 0x0A, 0x4F, 0x38, 0x63,
-    0x7D, 0x18, 0x39, 0xF9, 0xD9, 0xF7, 0x6A, 0xD9,
-    0x1C, 0x85, 0x22, 0x30, 0x71, 0x43, 0xC9, 0x7D,
-    0x5F, 0x93, 0xF6, 0x92, 0x74, 0xCE, 0xC9, 0xA7
-  },
-  {
-    0x1A, 0x67, 0x18, 0x6C, 0xA4, 0xA5, 0xCB, 0x8E,
-    0x65, 0xFC, 0xA0, 0xE2, 0xEC, 0xBC, 0x5D, 0xDC,
-    0x14, 0xAE, 0x38, 0x1B, 0xB8, 0xBF, 0xFE, 0xB9,
-    0xE0, 0xA1, 0x03, 0x44, 0x9E, 0x3E, 0xF0, 0x3C
-  },
-  {
-    0xAF, 0xBE, 0xA3, 0x17, 0xB5, 0xA2, 0xE8, 0x9C,
-    0x0B, 0xD9, 0x0C, 0xCF, 0x5D, 0x7F, 0xD0, 0xED,
-    0x57, 0xFE, 0x58, 0x5E, 0x4B, 0xE3, 0x27, 0x1B,
-    0x0A, 0x6B, 0xF0, 0xF5, 0x78, 0x6B, 0x0F, 0x26
-  },
-  {
-    0xF1, 0xB0, 0x15, 0x58, 0xCE, 0x54, 0x12, 0x62,
-    0xF5, 0xEC, 0x34, 0x29, 0x9D, 0x6F, 0xB4, 0x09,
-    0x00, 0x09, 0xE3, 0x43, 0x4B, 0xE2, 0xF4, 0x91,
-    0x05, 0xCF, 0x46, 0xAF, 0x4D, 0x2D, 0x41, 0x24
-  },
-  {
-    0x13, 0xA0, 0xA0, 0xC8, 0x63, 0x35, 0x63, 0x5E,
-    0xAA, 0x74, 0xCA, 0x2D, 0x5D, 0x48, 0x8C, 0x79,
-    0x7B, 0xBB, 0x4F, 0x47, 0xDC, 0x07, 0x10, 0x50,
-    0x15, 0xED, 0x6A, 0x1F, 0x33, 0x09, 0xEF, 0xCE
-  },
-  {
-    0x15, 0x80, 0xAF, 0xEE, 0xBE, 0xBB, 0x34, 0x6F,
-    0x94, 0xD5, 0x9F, 0xE6, 0x2D, 0xA0, 0xB7, 0x92,
-    0x37, 0xEA, 0xD7, 0xB1, 0x49, 0x1F, 0x56, 0x67,
-    0xA9, 0x0E, 0x45, 0xED, 0xF6, 0xCA, 0x8B, 0x03
-  },
-  {
-    0x20, 0xBE, 0x1A, 0x87, 0x5B, 0x38, 0xC5, 0x73,
-    0xDD, 0x7F, 0xAA, 0xA0, 0xDE, 0x48, 0x9D, 0x65,
-    0x5C, 0x11, 0xEF, 0xB6, 0xA5, 0x52, 0x69, 0x8E,
-    0x07, 0xA2, 0xD3, 0x31, 0xB5, 0xF6, 0x55, 0xC3
-  },
-  {
-    0xBE, 0x1F, 0xE3, 0xC4, 0xC0, 0x40, 0x18, 0xC5,
-    0x4C, 0x4A, 0x0F, 0x6B, 0x9A, 0x2E, 0xD3, 0xC5,
-    0x3A, 0xBE, 0x3A, 0x9F, 0x76, 0xB4, 0xD2, 0x6D,
-    0xE5, 0x6F, 0xC9, 0xAE, 0x95, 0x05, 0x9A, 0x99
-  },
-  {
-    0xE3, 0xE3, 0xAC, 0xE5, 0x37, 0xEB, 0x3E, 0xDD,
-    0x84, 0x63, 0xD9, 0xAD, 0x35, 0x82, 0xE1, 0x3C,
-    0xF8, 0x65, 0x33, 0xFF, 0xDE, 0x43, 0xD6, 0x68,
-    0xDD, 0x2E, 0x93, 0xBB, 0xDB, 0xD7, 0x19, 0x5A
-  },
-  {
-    0x11, 0x0C, 0x50, 0xC0, 0xBF, 0x2C, 0x6E, 0x7A,
-    0xEB, 0x7E, 0x43, 0x5D, 0x92, 0xD1, 0x32, 0xAB,
-    0x66, 0x55, 0x16, 0x8E, 0x78, 0xA2, 0xDE, 0xCD,
-    0xEC, 0x33, 0x30, 0x77, 0x76, 0x84, 0xD9, 0xC1
-  },
-  {
-    0xE9, 0xBA, 0x8F, 0x50, 0x5C, 0x9C, 0x80, 0xC0,
-    0x86, 0x66, 0xA7, 0x01, 0xF3, 0x36, 0x7E, 0x6C,
-    0xC6, 0x65, 0xF3, 0x4B, 0x22, 0xE7, 0x3C, 0x3C,
-    0x04, 0x17, 0xEB, 0x1C, 0x22, 0x06, 0x08, 0x2F
-  },
-  {
-    0x26, 0xCD, 0x66, 0xFC, 0xA0, 0x23, 0x79, 0xC7,
-    0x6D, 0xF1, 0x23, 0x17, 0x05, 0x2B, 0xCA, 0xFD,
-    0x6C, 0xD8, 0xC3, 0xA7, 0xB8, 0x90, 0xD8, 0x05,
-    0xF3, 0x6C, 0x49, 0x98, 0x97, 0x82, 0x43, 0x3A
-  },
-  {
-    0x21, 0x3F, 0x35, 0x96, 0xD6, 0xE3, 0xA5, 0xD0,
-    0xE9, 0x93, 0x2C, 0xD2, 0x15, 0x91, 0x46, 0x01,
-    0x5E, 0x2A, 0xBC, 0x94, 0x9F, 0x47, 0x29, 0xEE,
-    0x26, 0x32, 0xFE, 0x1E, 0xDB, 0x78, 0xD3, 0x37
-  },
-  {
-    0x10, 0x15, 0xD7, 0x01, 0x08, 0xE0, 0x3B, 0xE1,
-    0xC7, 0x02, 0xFE, 0x97, 0x25, 0x36, 0x07, 0xD1,
-    0x4A, 0xEE, 0x59, 0x1F, 0x24, 0x13, 0xEA, 0x67,
-    0x87, 0x42, 0x7B, 0x64, 0x59, 0xFF, 0x21, 0x9A
-  },
-  {
-    0x3C, 0xA9, 0x89, 0xDE, 0x10, 0xCF, 0xE6, 0x09,
-    0x90, 0x94, 0x72, 0xC8, 0xD3, 0x56, 0x10, 0x80,
-    0x5B, 0x2F, 0x97, 0x77, 0x34, 0xCF, 0x65, 0x2C,
-    0xC6, 0x4B, 0x3B, 0xFC, 0x88, 0x2D, 0x5D, 0x89
-  },
-  {
-    0xB6, 0x15, 0x6F, 0x72, 0xD3, 0x80, 0xEE, 0x9E,
-    0xA6, 0xAC, 0xD1, 0x90, 0x46, 0x4F, 0x23, 0x07,
-    0xA5, 0xC1, 0x79, 0xEF, 0x01, 0xFD, 0x71, 0xF9,
-    0x9F, 0x2D, 0x0F, 0x7A, 0x57, 0x36, 0x0A, 0xEA
-  },
-  {
-    0xC0, 0x3B, 0xC6, 0x42, 0xB2, 0x09, 0x59, 0xCB,
-    0xE1, 0x33, 0xA0, 0x30, 0x3E, 0x0C, 0x1A, 0xBF,
-    0xF3, 0xE3, 0x1E, 0xC8, 0xE1, 0xA3, 0x28, 0xEC,
-    0x85, 0x65, 0xC3, 0x6D, 0xEC, 0xFF, 0x52, 0x65
-  },
-  {
-    0x2C, 0x3E, 0x08, 0x17, 0x6F, 0x76, 0x0C, 0x62,
-    0x64, 0xC3, 0xA2, 0xCD, 0x66, 0xFE, 0xC6, 0xC3,
-    0xD7, 0x8D, 0xE4, 0x3F, 0xC1, 0x92, 0x45, 0x7B,
-    0x2A, 0x4A, 0x66, 0x0A, 0x1E, 0x0E, 0xB2, 0x2B
-  },
-  {
-    0xF7, 0x38, 0xC0, 0x2F, 0x3C, 0x1B, 0x19, 0x0C,
-    0x51, 0x2B, 0x1A, 0x32, 0xDE, 0xAB, 0xF3, 0x53,
-    0x72, 0x8E, 0x0E, 0x9A, 0xB0, 0x34, 0x49, 0x0E,
-    0x3C, 0x34, 0x09, 0x94, 0x6A, 0x97, 0xAE, 0xEC
-  },
-  {
-    0x8B, 0x18, 0x80, 0xDF, 0x30, 0x1C, 0xC9, 0x63,
-    0x41, 0x88, 0x11, 0x08, 0x89, 0x64, 0x83, 0x92,
-    0x87, 0xFF, 0x7F, 0xE3, 0x1C, 0x49, 0xEA, 0x6E,
-    0xBD, 0x9E, 0x48, 0xBD, 0xEE, 0xE4, 0x97, 0xC5
-  },
-  {
-    0x1E, 0x75, 0xCB, 0x21, 0xC6, 0x09, 0x89, 0x02,
-    0x03, 0x75, 0xF1, 0xA7, 0xA2, 0x42, 0x83, 0x9F,
-    0x0B, 0x0B, 0x68, 0x97, 0x3A, 0x4C, 0x2A, 0x05,
-    0xCF, 0x75, 0x55, 0xED, 0x5A, 0xAE, 0xC4, 0xC1
-  },
-  {
-    0x62, 0xBF, 0x8A, 0x9C, 0x32, 0xA5, 0xBC, 0xCF,
-    0x29, 0x0B, 0x6C, 0x47, 0x4D, 0x75, 0xB2, 0xA2,
-    0xA4, 0x09, 0x3F, 0x1A, 0x9E, 0x27, 0x13, 0x94,
-    0x33, 0xA8, 0xF2, 0xB3, 0xBC, 0xE7, 0xB8, 0xD7
-  },
-  {
-    0x16, 0x6C, 0x83, 0x50, 0xD3, 0x17, 0x3B, 0x5E,
-    0x70, 0x2B, 0x78, 0x3D, 0xFD, 0x33, 0xC6, 0x6E,
-    0xE0, 0x43, 0x27, 0x42, 0xE9, 0xB9, 0x2B, 0x99,
-    0x7F, 0xD2, 0x3C, 0x60, 0xDC, 0x67, 0x56, 0xCA
-  },
-  {
-    0x04, 0x4A, 0x14, 0xD8, 0x22, 0xA9, 0x0C, 0xAC,
-    0xF2, 0xF5, 0xA1, 0x01, 0x42, 0x8A, 0xDC, 0x8F,
-    0x41, 0x09, 0x38, 0x6C, 0xCB, 0x15, 0x8B, 0xF9,
-    0x05, 0xC8, 0x61, 0x8B, 0x8E, 0xE2, 0x4E, 0xC3
-  },
-  {
-    0x38, 0x7D, 0x39, 0x7E, 0xA4, 0x3A, 0x99, 0x4B,
-    0xE8, 0x4D, 0x2D, 0x54, 0x4A, 0xFB, 0xE4, 0x81,
-    0xA2, 0x00, 0x0F, 0x55, 0x25, 0x26, 0x96, 0xBB,
-    0xA2, 0xC5, 0x0C, 0x8E, 0xBD, 0x10, 0x13, 0x47
-  },
-  {
-    0x56, 0xF8, 0xCC, 0xF1, 0xF8, 0x64, 0x09, 0xB4,
-    0x6C, 0xE3, 0x61, 0x66, 0xAE, 0x91, 0x65, 0x13,
-    0x84, 0x41, 0x57, 0x75, 0x89, 0xDB, 0x08, 0xCB,
-    0xC5, 0xF6, 0x6C, 0xA2, 0x97, 0x43, 0xB9, 0xFD
-  },
-  {
-    0x97, 0x06, 0xC0, 0x92, 0xB0, 0x4D, 0x91, 0xF5,
-    0x3D, 0xFF, 0x91, 0xFA, 0x37, 0xB7, 0x49, 0x3D,
-    0x28, 0xB5, 0x76, 0xB5, 0xD7, 0x10, 0x46, 0x9D,
-    0xF7, 0x94, 0x01, 0x66, 0x22, 0x36, 0xFC, 0x03
-  },
-  {
-    0x87, 0x79, 0x68, 0x68, 0x6C, 0x06, 0x8C, 0xE2,
-    0xF7, 0xE2, 0xAD, 0xCF, 0xF6, 0x8B, 0xF8, 0x74,
-    0x8E, 0xDF, 0x3C, 0xF8, 0x62, 0xCF, 0xB4, 0xD3,
-    0x94, 0x7A, 0x31, 0x06, 0x95, 0x80, 0x54, 0xE3
-  },
-  {
-    0x88, 0x17, 0xE5, 0x71, 0x98, 0x79, 0xAC, 0xF7,
-    0x02, 0x47, 0x87, 0xEC, 0xCD, 0xB2, 0x71, 0x03,
-    0x55, 0x66, 0xCF, 0xA3, 0x33, 0xE0, 0x49, 0x40,
-    0x7C, 0x01, 0x78, 0xCC, 0xC5, 0x7A, 0x5B, 0x9F
-  },
-  {
-    0x89, 0x38, 0x24, 0x9E, 0x4B, 0x50, 0xCA, 0xDA,
-    0xCC, 0xDF, 0x5B, 0x18, 0x62, 0x13, 0x26, 0xCB,
-    0xB1, 0x52, 0x53, 0xE3, 0x3A, 0x20, 0xF5, 0x63,
-    0x6E, 0x99, 0x5D, 0x72, 0x47, 0x8D, 0xE4, 0x72
-  },
-  {
-    0xF1, 0x64, 0xAB, 0xBA, 0x49, 0x63, 0xA4, 0x4D,
-    0x10, 0x72, 0x57, 0xE3, 0x23, 0x2D, 0x90, 0xAC,
-    0xA5, 0xE6, 0x6A, 0x14, 0x08, 0x24, 0x8C, 0x51,
-    0x74, 0x1E, 0x99, 0x1D, 0xB5, 0x22, 0x77, 0x56
-  },
-  {
-    0xD0, 0x55, 0x63, 0xE2, 0xB1, 0xCB, 0xA0, 0xC4,
-    0xA2, 0xA1, 0xE8, 0xBD, 0xE3, 0xA1, 0xA0, 0xD9,
-    0xF5, 0xB4, 0x0C, 0x85, 0xA0, 0x70, 0xD6, 0xF5,
-    0xFB, 0x21, 0x06, 0x6E, 0xAD, 0x5D, 0x06, 0x01
-  },
-  {
-    0x03, 0xFB, 0xB1, 0x63, 0x84, 0xF0, 0xA3, 0x86,
-    0x6F, 0x4C, 0x31, 0x17, 0x87, 0x76, 0x66, 0xEF,
-    0xBF, 0x12, 0x45, 0x97, 0x56, 0x4B, 0x29, 0x3D,
-    0x4A, 0xAB, 0x0D, 0x26, 0x9F, 0xAB, 0xDD, 0xFA
-  },
-  {
-    0x5F, 0xA8, 0x48, 0x6A, 0xC0, 0xE5, 0x29, 0x64,
-    0xD1, 0x88, 0x1B, 0xBE, 0x33, 0x8E, 0xB5, 0x4B,
-    0xE2, 0xF7, 0x19, 0x54, 0x92, 0x24, 0x89, 0x20,
-    0x57, 0xB4, 0xDA, 0x04, 0xBA, 0x8B, 0x34, 0x75
-  },
-  {
-    0xCD, 0xFA, 0xBC, 0xEE, 0x46, 0x91, 0x11, 0x11,
-    0x23, 0x6A, 0x31, 0x70, 0x8B, 0x25, 0x39, 0xD7,
-    0x1F, 0xC2, 0x11, 0xD9, 0xB0, 0x9C, 0x0D, 0x85,
-    0x30, 0xA1, 0x1E, 0x1D, 0xBF, 0x6E, 0xED, 0x01
-  },
-  {
-    0x4F, 0x82, 0xDE, 0x03, 0xB9, 0x50, 0x47, 0x93,
-    0xB8, 0x2A, 0x07, 0xA0, 0xBD, 0xCD, 0xFF, 0x31,
-    0x4D, 0x75, 0x9E, 0x7B, 0x62, 0xD2, 0x6B, 0x78,
-    0x49, 0x46, 0xB0, 0xD3, 0x6F, 0x91, 0x6F, 0x52
-  },
-  {
-    0x25, 0x9E, 0xC7, 0xF1, 0x73, 0xBC, 0xC7, 0x6A,
-    0x09, 0x94, 0xC9, 0x67, 0xB4, 0xF5, 0xF0, 0x24,
-    0xC5, 0x60, 0x57, 0xFB, 0x79, 0xC9, 0x65, 0xC4,
-    0xFA, 0xE4, 0x18, 0x75, 0xF0, 0x6A, 0x0E, 0x4C
-  },
-  {
-    0x19, 0x3C, 0xC8, 0xE7, 0xC3, 0xE0, 0x8B, 0xB3,
-    0x0F, 0x54, 0x37, 0xAA, 0x27, 0xAD, 0xE1, 0xF1,
-    0x42, 0x36, 0x9B, 0x24, 0x6A, 0x67, 0x5B, 0x23,
-    0x83, 0xE6, 0xDA, 0x9B, 0x49, 0xA9, 0x80, 0x9E
-  },
-  {
-    0x5C, 0x10, 0x89, 0x6F, 0x0E, 0x28, 0x56, 0xB2,
-    0xA2, 0xEE, 0xE0, 0xFE, 0x4A, 0x2C, 0x16, 0x33,
-    0x56, 0x5D, 0x18, 0xF0, 0xE9, 0x3E, 0x1F, 0xAB,
-    0x26, 0xC3, 0x73, 0xE8, 0xF8, 0x29, 0x65, 0x4D
-  },
-  {
-    0xF1, 0x60, 0x12, 0xD9, 0x3F, 0x28, 0x85, 0x1A,
-    0x1E, 0xB9, 0x89, 0xF5, 0xD0, 0xB4, 0x3F, 0x3F,
-    0x39, 0xCA, 0x73, 0xC9, 0xA6, 0x2D, 0x51, 0x81,
-    0xBF, 0xF2, 0x37, 0x53, 0x6B, 0xD3, 0x48, 0xC3
-  },
-  {
-    0x29, 0x66, 0xB3, 0xCF, 0xAE, 0x1E, 0x44, 0xEA,
-    0x99, 0x6D, 0xC5, 0xD6, 0x86, 0xCF, 0x25, 0xFA,
-    0x05, 0x3F, 0xB6, 0xF6, 0x72, 0x01, 0xB9, 0xE4,
-    0x6E, 0xAD, 0xE8, 0x5D, 0x0A, 0xD6, 0xB8, 0x06
-  },
-  {
-    0xDD, 0xB8, 0x78, 0x24, 0x85, 0xE9, 0x00, 0xBC,
-    0x60, 0xBC, 0xF4, 0xC3, 0x3A, 0x6F, 0xD5, 0x85,
-    0x68, 0x0C, 0xC6, 0x83, 0xD5, 0x16, 0xEF, 0xA0,
-    0x3E, 0xB9, 0x98, 0x5F, 0xAD, 0x87, 0x15, 0xFB
-  },
-  {
-    0x4C, 0x4D, 0x6E, 0x71, 0xAE, 0xA0, 0x57, 0x86,
-    0x41, 0x31, 0x48, 0xFC, 0x7A, 0x78, 0x6B, 0x0E,
-    0xCA, 0xF5, 0x82, 0xCF, 0xF1, 0x20, 0x9F, 0x5A,
-    0x80, 0x9F, 0xBA, 0x85, 0x04, 0xCE, 0x66, 0x2C
-  },
-  {
-    0xFB, 0x4C, 0x5E, 0x86, 0xD7, 0xB2, 0x22, 0x9B,
-    0x99, 0xB8, 0xBA, 0x6D, 0x94, 0xC2, 0x47, 0xEF,
-    0x96, 0x4A, 0xA3, 0xA2, 0xBA, 0xE8, 0xED, 0xC7,
-    0x75, 0x69, 0xF2, 0x8D, 0xBB, 0xFF, 0x2D, 0x4E
-  },
-  {
-    0xE9, 0x4F, 0x52, 0x6D, 0xE9, 0x01, 0x96, 0x33,
-    0xEC, 0xD5, 0x4A, 0xC6, 0x12, 0x0F, 0x23, 0x95,
-    0x8D, 0x77, 0x18, 0xF1, 0xE7, 0x71, 0x7B, 0xF3,
-    0x29, 0x21, 0x1A, 0x4F, 0xAE, 0xED, 0x4E, 0x6D
-  },
-  {
-    0xCB, 0xD6, 0x66, 0x0A, 0x10, 0xDB, 0x3F, 0x23,
-    0xF7, 0xA0, 0x3D, 0x4B, 0x9D, 0x40, 0x44, 0xC7,
-    0x93, 0x2B, 0x28, 0x01, 0xAC, 0x89, 0xD6, 0x0B,
-    0xC9, 0xEB, 0x92, 0xD6, 0x5A, 0x46, 0xC2, 0xA0
-  },
-  {
-    0x88, 0x18, 0xBB, 0xD3, 0xDB, 0x4D, 0xC1, 0x23,
-    0xB2, 0x5C, 0xBB, 0xA5, 0xF5, 0x4C, 0x2B, 0xC4,
-    0xB3, 0xFC, 0xF9, 0xBF, 0x7D, 0x7A, 0x77, 0x09,
-    0xF4, 0xAE, 0x58, 0x8B, 0x26, 0x7C, 0x4E, 0xCE
-  },
-  {
-    0xC6, 0x53, 0x82, 0x51, 0x3F, 0x07, 0x46, 0x0D,
-    0xA3, 0x98, 0x33, 0xCB, 0x66, 0x6C, 0x5E, 0xD8,
-    0x2E, 0x61, 0xB9, 0xE9, 0x98, 0xF4, 0xB0, 0xC4,
-    0x28, 0x7C, 0xEE, 0x56, 0xC3, 0xCC, 0x9B, 0xCD
-  },
-  {
-    0x89, 0x75, 0xB0, 0x57, 0x7F, 0xD3, 0x55, 0x66,
-    0xD7, 0x50, 0xB3, 0x62, 0xB0, 0x89, 0x7A, 0x26,
-    0xC3, 0x99, 0x13, 0x6D, 0xF0, 0x7B, 0xAB, 0xAB,
-    0xBD, 0xE6, 0x20, 0x3F, 0xF2, 0x95, 0x4E, 0xD4
-  },
-  {
-    0x21, 0xFE, 0x0C, 0xEB, 0x00, 0x52, 0xBE, 0x7F,
-    0xB0, 0xF0, 0x04, 0x18, 0x7C, 0xAC, 0xD7, 0xDE,
-    0x67, 0xFA, 0x6E, 0xB0, 0x93, 0x8D, 0x92, 0x76,
-    0x77, 0xF2, 0x39, 0x8C, 0x13, 0x23, 0x17, 0xA8
-  },
-  {
-    0x2E, 0xF7, 0x3F, 0x3C, 0x26, 0xF1, 0x2D, 0x93,
-    0x88, 0x9F, 0x3C, 0x78, 0xB6, 0xA6, 0x6C, 0x1D,
-    0x52, 0xB6, 0x49, 0xDC, 0x9E, 0x85, 0x6E, 0x2C,
-    0x17, 0x2E, 0xA7, 0xC5, 0x8A, 0xC2, 0xB5, 0xE3
-  },
-  {
-    0x38, 0x8A, 0x3C, 0xD5, 0x6D, 0x73, 0x86, 0x7A,
-    0xBB, 0x5F, 0x84, 0x01, 0x49, 0x2B, 0x6E, 0x26,
-    0x81, 0xEB, 0x69, 0x85, 0x1E, 0x76, 0x7F, 0xD8,
-    0x42, 0x10, 0xA5, 0x60, 0x76, 0xFB, 0x3D, 0xD3
-  },
-  {
-    0xAF, 0x53, 0x3E, 0x02, 0x2F, 0xC9, 0x43, 0x9E,
-    0x4E, 0x3C, 0xB8, 0x38, 0xEC, 0xD1, 0x86, 0x92,
-    0x23, 0x2A, 0xDF, 0x6F, 0xE9, 0x83, 0x95, 0x26,
-    0xD3, 0xC3, 0xDD, 0x1B, 0x71, 0x91, 0x0B, 0x1A
-  },
-  {
-    0x75, 0x1C, 0x09, 0xD4, 0x1A, 0x93, 0x43, 0x88,
-    0x2A, 0x81, 0xCD, 0x13, 0xEE, 0x40, 0x81, 0x8D,
-    0x12, 0xEB, 0x44, 0xC6, 0xC7, 0xF4, 0x0D, 0xF1,
-    0x6E, 0x4A, 0xEA, 0x8F, 0xAB, 0x91, 0x97, 0x2A
-  },
-  {
-    0x5B, 0x73, 0xDD, 0xB6, 0x8D, 0x9D, 0x2B, 0x0A,
-    0xA2, 0x65, 0xA0, 0x79, 0x88, 0xD6, 0xB8, 0x8A,
-    0xE9, 0xAA, 0xC5, 0x82, 0xAF, 0x83, 0x03, 0x2F,
-    0x8A, 0x9B, 0x21, 0xA2, 0xE1, 0xB7, 0xBF, 0x18
-  },
-  {
-    0x3D, 0xA2, 0x91, 0x26, 0xC7, 0xC5, 0xD7, 0xF4,
-    0x3E, 0x64, 0x24, 0x2A, 0x79, 0xFE, 0xAA, 0x4E,
-    0xF3, 0x45, 0x9C, 0xDE, 0xCC, 0xC8, 0x98, 0xED,
-    0x59, 0xA9, 0x7F, 0x6E, 0xC9, 0x3B, 0x9D, 0xAB
-  },
-  {
-    0x56, 0x6D, 0xC9, 0x20, 0x29, 0x3D, 0xA5, 0xCB,
-    0x4F, 0xE0, 0xAA, 0x8A, 0xBD, 0xA8, 0xBB, 0xF5,
-    0x6F, 0x55, 0x23, 0x13, 0xBF, 0xF1, 0x90, 0x46,
-    0x64, 0x1E, 0x36, 0x15, 0xC1, 0xE3, 0xED, 0x3F
-  },
-  {
-    0x41, 0x15, 0xBE, 0xA0, 0x2F, 0x73, 0xF9, 0x7F,
-    0x62, 0x9E, 0x5C, 0x55, 0x90, 0x72, 0x0C, 0x01,
-    0xE7, 0xE4, 0x49, 0xAE, 0x2A, 0x66, 0x97, 0xD4,
-    0xD2, 0x78, 0x33, 0x21, 0x30, 0x36, 0x92, 0xF9
-  },
-  {
-    0x4C, 0xE0, 0x8F, 0x47, 0x62, 0x46, 0x8A, 0x76,
-    0x70, 0x01, 0x21, 0x64, 0x87, 0x8D, 0x68, 0x34,
-    0x0C, 0x52, 0xA3, 0x5E, 0x66, 0xC1, 0x88, 0x4D,
-    0x5C, 0x86, 0x48, 0x89, 0xAB, 0xC9, 0x66, 0x77
-  },
-  {
-    0x81, 0xEA, 0x0B, 0x78, 0x04, 0x12, 0x4E, 0x0C,
-    0x22, 0xEA, 0x5F, 0xC7, 0x11, 0x04, 0xA2, 0xAF,
-    0xCB, 0x52, 0xA1, 0xFA, 0x81, 0x6F, 0x3E, 0xCB,
-    0x7D, 0xCB, 0x5D, 0x9D, 0xEA, 0x17, 0x86, 0xD0
-  },
-  {
-    0xFE, 0x36, 0x27, 0x33, 0xB0, 0x5F, 0x6B, 0xED,
-    0xAF, 0x93, 0x79, 0xD7, 0xF7, 0x93, 0x6E, 0xDE,
-    0x20, 0x9B, 0x1F, 0x83, 0x23, 0xC3, 0x92, 0x25,
-    0x49, 0xD9, 0xE7, 0x36, 0x81, 0xB5, 0xDB, 0x7B
-  },
-  {
-    0xEF, 0xF3, 0x7D, 0x30, 0xDF, 0xD2, 0x03, 0x59,
-    0xBE, 0x4E, 0x73, 0xFD, 0xF4, 0x0D, 0x27, 0x73,
-    0x4B, 0x3D, 0xF9, 0x0A, 0x97, 0xA5, 0x5E, 0xD7,
-    0x45, 0x29, 0x72, 0x94, 0xCA, 0x85, 0xD0, 0x9F
-  },
-  {
-    0x17, 0x2F, 0xFC, 0x67, 0x15, 0x3D, 0x12, 0xE0,
-    0xCA, 0x76, 0xA8, 0xB6, 0xCD, 0x5D, 0x47, 0x31,
-    0x88, 0x5B, 0x39, 0xCE, 0x0C, 0xAC, 0x93, 0xA8,
-    0x97, 0x2A, 0x18, 0x00, 0x6C, 0x8B, 0x8B, 0xAF
-  },
-  {
-    0xC4, 0x79, 0x57, 0xF1, 0xCC, 0x88, 0xE8, 0x3E,
-    0xF9, 0x44, 0x58, 0x39, 0x70, 0x9A, 0x48, 0x0A,
-    0x03, 0x6B, 0xED, 0x5F, 0x88, 0xAC, 0x0F, 0xCC,
-    0x8E, 0x1E, 0x70, 0x3F, 0xFA, 0xAC, 0x13, 0x2C
-  },
-  {
-    0x30, 0xF3, 0x54, 0x83, 0x70, 0xCF, 0xDC, 0xED,
-    0xA5, 0xC3, 0x7B, 0x56, 0x9B, 0x61, 0x75, 0xE7,
-    0x99, 0xEE, 0xF1, 0xA6, 0x2A, 0xAA, 0x94, 0x32,
-    0x45, 0xAE, 0x76, 0x69, 0xC2, 0x27, 0xA7, 0xB5
-  },
-  {
-    0xC9, 0x5D, 0xCB, 0x3C, 0xF1, 0xF2, 0x7D, 0x0E,
-    0xEF, 0x2F, 0x25, 0xD2, 0x41, 0x38, 0x70, 0x90,
-    0x4A, 0x87, 0x7C, 0x4A, 0x56, 0xC2, 0xDE, 0x1E,
-    0x83, 0xE2, 0xBC, 0x2A, 0xE2, 0xE4, 0x68, 0x21
-  },
-  {
-    0xD5, 0xD0, 0xB5, 0xD7, 0x05, 0x43, 0x4C, 0xD4,
-    0x6B, 0x18, 0x57, 0x49, 0xF6, 0x6B, 0xFB, 0x58,
-    0x36, 0xDC, 0xDF, 0x6E, 0xE5, 0x49, 0xA2, 0xB7,
-    0xA4, 0xAE, 0xE7, 0xF5, 0x80, 0x07, 0xCA, 0xAF
-  },
-  {
-    0xBB, 0xC1, 0x24, 0xA7, 0x12, 0xF1, 0x5D, 0x07,
-    0xC3, 0x00, 0xE0, 0x5B, 0x66, 0x83, 0x89, 0xA4,
-    0x39, 0xC9, 0x17, 0x77, 0xF7, 0x21, 0xF8, 0x32,
-    0x0C, 0x1C, 0x90, 0x78, 0x06, 0x6D, 0x2C, 0x7E
-  },
-  {
-    0xA4, 0x51, 0xB4, 0x8C, 0x35, 0xA6, 0xC7, 0x85,
-    0x4C, 0xFA, 0xAE, 0x60, 0x26, 0x2E, 0x76, 0x99,
-    0x08, 0x16, 0x38, 0x2A, 0xC0, 0x66, 0x7E, 0x5A,
-    0x5C, 0x9E, 0x1B, 0x46, 0xC4, 0x34, 0x2D, 0xDF
-  },
-  {
-    0xB0, 0xD1, 0x50, 0xFB, 0x55, 0xE7, 0x78, 0xD0,
-    0x11, 0x47, 0xF0, 0xB5, 0xD8, 0x9D, 0x99, 0xEC,
-    0xB2, 0x0F, 0xF0, 0x7E, 0x5E, 0x67, 0x60, 0xD6,
-    0xB6, 0x45, 0xEB, 0x5B, 0x65, 0x4C, 0x62, 0x2B
-  },
-  {
-    0x34, 0xF7, 0x37, 0xC0, 0xAB, 0x21, 0x99, 0x51,
-    0xEE, 0xE8, 0x9A, 0x9F, 0x8D, 0xAC, 0x29, 0x9C,
-    0x9D, 0x4C, 0x38, 0xF3, 0x3F, 0xA4, 0x94, 0xC5,
-    0xC6, 0xEE, 0xFC, 0x92, 0xB6, 0xDB, 0x08, 0xBC
-  },
-  {
-    0x1A, 0x62, 0xCC, 0x3A, 0x00, 0x80, 0x0D, 0xCB,
-    0xD9, 0x98, 0x91, 0x08, 0x0C, 0x1E, 0x09, 0x84,
-    0x58, 0x19, 0x3A, 0x8C, 0xC9, 0xF9, 0x70, 0xEA,
-    0x99, 0xFB, 0xEF, 0xF0, 0x03, 0x18, 0xC2, 0x89
-  },
-  {
-    0xCF, 0xCE, 0x55, 0xEB, 0xAF, 0xC8, 0x40, 0xD7,
-    0xAE, 0x48, 0x28, 0x1C, 0x7F, 0xD5, 0x7E, 0xC8,
-    0xB4, 0x82, 0xD4, 0xB7, 0x04, 0x43, 0x74, 0x95,
-    0x49, 0x5A, 0xC4, 0x14, 0xCF, 0x4A, 0x37, 0x4B
-  },
-  {
-    0x67, 0x46, 0xFA, 0xCF, 0x71, 0x14, 0x6D, 0x99,
-    0x9D, 0xAB, 0xD0, 0x5D, 0x09, 0x3A, 0xE5, 0x86,
-    0x64, 0x8D, 0x1E, 0xE2, 0x8E, 0x72, 0x61, 0x7B,
-    0x99, 0xD0, 0xF0, 0x08, 0x6E, 0x1E, 0x45, 0xBF
-  },
-  {
-    0x57, 0x1C, 0xED, 0x28, 0x3B, 0x3F, 0x23, 0xB4,
-    0xE7, 0x50, 0xBF, 0x12, 0xA2, 0xCA, 0xF1, 0x78,
-    0x18, 0x47, 0xBD, 0x89, 0x0E, 0x43, 0x60, 0x3C,
-    0xDC, 0x59, 0x76, 0x10, 0x2B, 0x7B, 0xB1, 0x1B
-  },
-  {
-    0xCF, 0xCB, 0x76, 0x5B, 0x04, 0x8E, 0x35, 0x02,
-    0x2C, 0x5D, 0x08, 0x9D, 0x26, 0xE8, 0x5A, 0x36,
-    0xB0, 0x05, 0xA2, 0xB8, 0x04, 0x93, 0xD0, 0x3A,
-    0x14, 0x4E, 0x09, 0xF4, 0x09, 0xB6, 0xAF, 0xD1
-  },
-  {
-    0x40, 0x50, 0xC7, 0xA2, 0x77, 0x05, 0xBB, 0x27,
-    0xF4, 0x20, 0x89, 0xB2, 0x99, 0xF3, 0xCB, 0xE5,
-    0x05, 0x4E, 0xAD, 0x68, 0x72, 0x7E, 0x8E, 0xF9,
-    0x31, 0x8C, 0xE6, 0xF2, 0x5C, 0xD6, 0xF3, 0x1D
-  },
-  {
-    0x18, 0x40, 0x70, 0xBD, 0x5D, 0x26, 0x5F, 0xBD,
-    0xC1, 0x42, 0xCD, 0x1C, 0x5C, 0xD0, 0xD7, 0xE4,
-    0x14, 0xE7, 0x03, 0x69, 0xA2, 0x66, 0xD6, 0x27,
-    0xC8, 0xFB, 0xA8, 0x4F, 0xA5, 0xE8, 0x4C, 0x34
-  },
-  {
-    0x9E, 0xDD, 0xA9, 0xA4, 0x44, 0x39, 0x02, 0xA9,
-    0x58, 0x8C, 0x0D, 0x0C, 0xCC, 0x62, 0xB9, 0x30,
-    0x21, 0x84, 0x79, 0xA6, 0x84, 0x1E, 0x6F, 0xE7,
-    0xD4, 0x30, 0x03, 0xF0, 0x4B, 0x1F, 0xD6, 0x43
-  },
-  {
-    0xE4, 0x12, 0xFE, 0xEF, 0x79, 0x08, 0x32, 0x4A,
-    0x6D, 0xA1, 0x84, 0x16, 0x29, 0xF3, 0x5D, 0x3D,
-    0x35, 0x86, 0x42, 0x01, 0x93, 0x10, 0xEC, 0x57,
-    0xC6, 0x14, 0x83, 0x6B, 0x63, 0xD3, 0x07, 0x63
-  },
-  {
-    0x1A, 0x2B, 0x8E, 0xDF, 0xF3, 0xF9, 0xAC, 0xC1,
-    0x55, 0x4F, 0xCB, 0xAE, 0x3C, 0xF1, 0xD6, 0x29,
-    0x8C, 0x64, 0x62, 0xE2, 0x2E, 0x5E, 0xB0, 0x25,
-    0x96, 0x84, 0xF8, 0x35, 0x01, 0x2B, 0xD1, 0x3F
-  },
-  {
-    0x28, 0x8C, 0x4A, 0xD9, 0xB9, 0x40, 0x97, 0x62,
-    0xEA, 0x07, 0xC2, 0x4A, 0x41, 0xF0, 0x4F, 0x69,
-    0xA7, 0xD7, 0x4B, 0xEE, 0x2D, 0x95, 0x43, 0x53,
-    0x74, 0xBD, 0xE9, 0x46, 0xD7, 0x24, 0x1C, 0x7B
-  },
-  {
-    0x80, 0x56, 0x91, 0xBB, 0x28, 0x67, 0x48, 0xCF,
-    0xB5, 0x91, 0xD3, 0xAE, 0xBE, 0x7E, 0x6F, 0x4E,
-    0x4D, 0xC6, 0xE2, 0x80, 0x8C, 0x65, 0x14, 0x3C,
-    0xC0, 0x04, 0xE4, 0xEB, 0x6F, 0xD0, 0x9D, 0x43
-  },
-  {
-    0xD4, 0xAC, 0x8D, 0x3A, 0x0A, 0xFC, 0x6C, 0xFA,
-    0x7B, 0x46, 0x0A, 0xE3, 0x00, 0x1B, 0xAE, 0xB3,
-    0x6D, 0xAD, 0xB3, 0x7D, 0xA0, 0x7D, 0x2E, 0x8A,
-    0xC9, 0x18, 0x22, 0xDF, 0x34, 0x8A, 0xED, 0x3D
-  },
-  {
-    0xC3, 0x76, 0x61, 0x70, 0x14, 0xD2, 0x01, 0x58,
-    0xBC, 0xED, 0x3D, 0x3B, 0xA5, 0x52, 0xB6, 0xEC,
-    0xCF, 0x84, 0xE6, 0x2A, 0xA3, 0xEB, 0x65, 0x0E,
-    0x90, 0x02, 0x9C, 0x84, 0xD1, 0x3E, 0xEA, 0x69
-  },
-  {
-    0xC4, 0x1F, 0x09, 0xF4, 0x3C, 0xEC, 0xAE, 0x72,
-    0x93, 0xD6, 0x00, 0x7C, 0xA0, 0xA3, 0x57, 0x08,
-    0x7D, 0x5A, 0xE5, 0x9B, 0xE5, 0x00, 0xC1, 0xCD,
-    0x5B, 0x28, 0x9E, 0xE8, 0x10, 0xC7, 0xB0, 0x82
-  },
-  {
-    0x03, 0xD1, 0xCE, 0xD1, 0xFB, 0xA5, 0xC3, 0x91,
-    0x55, 0xC4, 0x4B, 0x77, 0x65, 0xCB, 0x76, 0x0C,
-    0x78, 0x70, 0x8D, 0xCF, 0xC8, 0x0B, 0x0B, 0xD8,
-    0xAD, 0xE3, 0xA5, 0x6D, 0xA8, 0x83, 0x0B, 0x29
-  },
-  {
-    0x09, 0xBD, 0xE6, 0xF1, 0x52, 0x21, 0x8D, 0xC9,
-    0x2C, 0x41, 0xD7, 0xF4, 0x53, 0x87, 0xE6, 0x3E,
-    0x58, 0x69, 0xD8, 0x07, 0xEC, 0x70, 0xB8, 0x21,
-    0x40, 0x5D, 0xBD, 0x88, 0x4B, 0x7F, 0xCF, 0x4B
-  },
-  {
-    0x71, 0xC9, 0x03, 0x6E, 0x18, 0x17, 0x9B, 0x90,
-    0xB3, 0x7D, 0x39, 0xE9, 0xF0, 0x5E, 0xB8, 0x9C,
-    0xC5, 0xFC, 0x34, 0x1F, 0xD7, 0xC4, 0x77, 0xD0,
-    0xD7, 0x49, 0x32, 0x85, 0xFA, 0xCA, 0x08, 0xA4
-  },
-  {
-    0x59, 0x16, 0x83, 0x3E, 0xBB, 0x05, 0xCD, 0x91,
-    0x9C, 0xA7, 0xFE, 0x83, 0xB6, 0x92, 0xD3, 0x20,
-    0x5B, 0xEF, 0x72, 0x39, 0x2B, 0x2C, 0xF6, 0xBB,
-    0x0A, 0x6D, 0x43, 0xF9, 0x94, 0xF9, 0x5F, 0x11
-  },
-  {
-    0xF6, 0x3A, 0xAB, 0x3E, 0xC6, 0x41, 0xB3, 0xB0,
-    0x24, 0x96, 0x4C, 0x2B, 0x43, 0x7C, 0x04, 0xF6,
-    0x04, 0x3C, 0x4C, 0x7E, 0x02, 0x79, 0x23, 0x99,
-    0x95, 0x40, 0x19, 0x58, 0xF8, 0x6B, 0xBE, 0x54
-  },
-  {
-    0xF1, 0x72, 0xB1, 0x80, 0xBF, 0xB0, 0x97, 0x40,
-    0x49, 0x31, 0x20, 0xB6, 0x32, 0x6C, 0xBD, 0xC5,
-    0x61, 0xE4, 0x77, 0xDE, 0xF9, 0xBB, 0xCF, 0xD2,
-    0x8C, 0xC8, 0xC1, 0xC5, 0xE3, 0x37, 0x9A, 0x31
-  },
-  {
-    0xCB, 0x9B, 0x89, 0xCC, 0x18, 0x38, 0x1D, 0xD9,
-    0x14, 0x1A, 0xDE, 0x58, 0x86, 0x54, 0xD4, 0xE6,
-    0xA2, 0x31, 0xD5, 0xBF, 0x49, 0xD4, 0xD5, 0x9A,
-    0xC2, 0x7D, 0x86, 0x9C, 0xBE, 0x10, 0x0C, 0xF3
-  },
-  {
-    0x7B, 0xD8, 0x81, 0x50, 0x46, 0xFD, 0xD8, 0x10,
-    0xA9, 0x23, 0xE1, 0x98, 0x4A, 0xAE, 0xBD, 0xCD,
-    0xF8, 0x4D, 0x87, 0xC8, 0x99, 0x2D, 0x68, 0xB5,
-    0xEE, 0xB4, 0x60, 0xF9, 0x3E, 0xB3, 0xC8, 0xD7
-  },
-  {
-    0x60, 0x7B, 0xE6, 0x68, 0x62, 0xFD, 0x08, 0xEE,
-    0x5B, 0x19, 0xFA, 0xCA, 0xC0, 0x9D, 0xFD, 0xBC,
-    0xD4, 0x0C, 0x31, 0x21, 0x01, 0xD6, 0x6E, 0x6E,
-    0xBD, 0x2B, 0x84, 0x1F, 0x1B, 0x9A, 0x93, 0x25
-  },
-  {
-    0x9F, 0xE0, 0x3B, 0xBE, 0x69, 0xAB, 0x18, 0x34,
-    0xF5, 0x21, 0x9B, 0x0D, 0xA8, 0x8A, 0x08, 0xB3,
-    0x0A, 0x66, 0xC5, 0x91, 0x3F, 0x01, 0x51, 0x96,
-    0x3C, 0x36, 0x05, 0x60, 0xDB, 0x03, 0x87, 0xB3
-  },
-  {
-    0x90, 0xA8, 0x35, 0x85, 0x71, 0x7B, 0x75, 0xF0,
-    0xE9, 0xB7, 0x25, 0xE0, 0x55, 0xEE, 0xEE, 0xB9,
-    0xE7, 0xA0, 0x28, 0xEA, 0x7E, 0x6C, 0xBC, 0x07,
-    0xB2, 0x09, 0x17, 0xEC, 0x03, 0x63, 0xE3, 0x8C
-  },
-  {
-    0x33, 0x6E, 0xA0, 0x53, 0x0F, 0x4A, 0x74, 0x69,
-    0x12, 0x6E, 0x02, 0x18, 0x58, 0x7E, 0xBB, 0xDE,
-    0x33, 0x58, 0xA0, 0xB3, 0x1C, 0x29, 0xD2, 0x00,
-    0xF7, 0xDC, 0x7E, 0xB1, 0x5C, 0x6A, 0xAD, 0xD8
-  },
-  {
-    0xA7, 0x9E, 0x76, 0xDC, 0x0A, 0xBC, 0xA4, 0x39,
-    0x6F, 0x07, 0x47, 0xCD, 0x7B, 0x74, 0x8D, 0xF9,
-    0x13, 0x00, 0x76, 0x26, 0xB1, 0xD6, 0x59, 0xDA,
-    0x0C, 0x1F, 0x78, 0xB9, 0x30, 0x3D, 0x01, 0xA3
-  },
-  {
-    0x44, 0xE7, 0x8A, 0x77, 0x37, 0x56, 0xE0, 0x95,
-    0x15, 0x19, 0x50, 0x4D, 0x70, 0x38, 0xD2, 0x8D,
-    0x02, 0x13, 0xA3, 0x7E, 0x0C, 0xE3, 0x75, 0x37,
-    0x17, 0x57, 0xBC, 0x99, 0x63, 0x11, 0xE3, 0xB8
-  },
-  {
-    0x77, 0xAC, 0x01, 0x2A, 0x3F, 0x75, 0x4D, 0xCF,
-    0xEA, 0xB5, 0xEB, 0x99, 0x6B, 0xE9, 0xCD, 0x2D,
-    0x1F, 0x96, 0x11, 0x1B, 0x6E, 0x49, 0xF3, 0x99,
-    0x4D, 0xF1, 0x81, 0xF2, 0x85, 0x69, 0xD8, 0x25
-  },
-  {
-    0xCE, 0x5A, 0x10, 0xDB, 0x6F, 0xCC, 0xDA, 0xF1,
-    0x40, 0xAA, 0xA4, 0xDE, 0xD6, 0x25, 0x0A, 0x9C,
-    0x06, 0xE9, 0x22, 0x2B, 0xC9, 0xF9, 0xF3, 0x65,
-    0x8A, 0x4A, 0xFF, 0x93, 0x5F, 0x2B, 0x9F, 0x3A
-  },
-  {
-    0xEC, 0xC2, 0x03, 0xA7, 0xFE, 0x2B, 0xE4, 0xAB,
-    0xD5, 0x5B, 0xB5, 0x3E, 0x6E, 0x67, 0x35, 0x72,
-    0xE0, 0x07, 0x8D, 0xA8, 0xCD, 0x37, 0x5E, 0xF4,
-    0x30, 0xCC, 0x97, 0xF9, 0xF8, 0x00, 0x83, 0xAF
-  },
-  {
-    0x14, 0xA5, 0x18, 0x6D, 0xE9, 0xD7, 0xA1, 0x8B,
-    0x04, 0x12, 0xB8, 0x56, 0x3E, 0x51, 0xCC, 0x54,
-    0x33, 0x84, 0x0B, 0x4A, 0x12, 0x9A, 0x8F, 0xF9,
-    0x63, 0xB3, 0x3A, 0x3C, 0x4A, 0xFE, 0x8E, 0xBB
-  },
-  {
-    0x13, 0xF8, 0xEF, 0x95, 0xCB, 0x86, 0xE6, 0xA6,
-    0x38, 0x93, 0x1C, 0x8E, 0x10, 0x76, 0x73, 0xEB,
-    0x76, 0xBA, 0x10, 0xD7, 0xC2, 0xCD, 0x70, 0xB9,
-    0xD9, 0x92, 0x0B, 0xBE, 0xED, 0x92, 0x94, 0x09
-  },
-  {
-    0x0B, 0x33, 0x8F, 0x4E, 0xE1, 0x2F, 0x2D, 0xFC,
-    0xB7, 0x87, 0x13, 0x37, 0x79, 0x41, 0xE0, 0xB0,
-    0x63, 0x21, 0x52, 0x58, 0x1D, 0x13, 0x32, 0x51,
-    0x6E, 0x4A, 0x2C, 0xAB, 0x19, 0x42, 0xCC, 0xA4
-  },
-  {
-    0xEA, 0xAB, 0x0E, 0xC3, 0x7B, 0x3B, 0x8A, 0xB7,
-    0x96, 0xE9, 0xF5, 0x72, 0x38, 0xDE, 0x14, 0xA2,
-    0x64, 0xA0, 0x76, 0xF3, 0x88, 0x7D, 0x86, 0xE2,
-    0x9B, 0xB5, 0x90, 0x6D, 0xB5, 0xA0, 0x0E, 0x02
-  },
-  {
-    0x23, 0xCB, 0x68, 0xB8, 0xC0, 0xE6, 0xDC, 0x26,
-    0xDC, 0x27, 0x76, 0x6D, 0xDC, 0x0A, 0x13, 0xA9,
-    0x94, 0x38, 0xFD, 0x55, 0x61, 0x7A, 0xA4, 0x09,
-    0x5D, 0x8F, 0x96, 0x97, 0x20, 0xC8, 0x72, 0xDF
-  },
-  {
-    0x09, 0x1D, 0x8E, 0xE3, 0x0D, 0x6F, 0x29, 0x68,
-    0xD4, 0x6B, 0x68, 0x7D, 0xD6, 0x52, 0x92, 0x66,
-    0x57, 0x42, 0xDE, 0x0B, 0xB8, 0x3D, 0xCC, 0x00,
-    0x04, 0xC7, 0x2C, 0xE1, 0x00, 0x07, 0xA5, 0x49
-  },
-  {
-    0x7F, 0x50, 0x7A, 0xBC, 0x6D, 0x19, 0xBA, 0x00,
-    0xC0, 0x65, 0xA8, 0x76, 0xEC, 0x56, 0x57, 0x86,
-    0x88, 0x82, 0xD1, 0x8A, 0x22, 0x1B, 0xC4, 0x6C,
-    0x7A, 0x69, 0x12, 0x54, 0x1F, 0x5B, 0xC7, 0xBA
-  },
-  {
-    0xA0, 0x60, 0x7C, 0x24, 0xE1, 0x4E, 0x8C, 0x22,
-    0x3D, 0xB0, 0xD7, 0x0B, 0x4D, 0x30, 0xEE, 0x88,
-    0x01, 0x4D, 0x60, 0x3F, 0x43, 0x7E, 0x9E, 0x02,
-    0xAA, 0x7D, 0xAF, 0xA3, 0xCD, 0xFB, 0xAD, 0x94
-  },
-  {
-    0xDD, 0xBF, 0xEA, 0x75, 0xCC, 0x46, 0x78, 0x82,
-    0xEB, 0x34, 0x83, 0xCE, 0x5E, 0x2E, 0x75, 0x6A,
-    0x4F, 0x47, 0x01, 0xB7, 0x6B, 0x44, 0x55, 0x19,
-    0xE8, 0x9F, 0x22, 0xD6, 0x0F, 0xA8, 0x6E, 0x06
-  },
-  {
-    0x0C, 0x31, 0x1F, 0x38, 0xC3, 0x5A, 0x4F, 0xB9,
-    0x0D, 0x65, 0x1C, 0x28, 0x9D, 0x48, 0x68, 0x56,
-    0xCD, 0x14, 0x13, 0xDF, 0x9B, 0x06, 0x77, 0xF5,
-    0x3E, 0xCE, 0x2C, 0xD9, 0xE4, 0x77, 0xC6, 0x0A
-  },
-  {
-    0x46, 0xA7, 0x3A, 0x8D, 0xD3, 0xE7, 0x0F, 0x59,
-    0xD3, 0x94, 0x2C, 0x01, 0xDF, 0x59, 0x9D, 0xEF,
-    0x78, 0x3C, 0x9D, 0xA8, 0x2F, 0xD8, 0x32, 0x22,
-    0xCD, 0x66, 0x2B, 0x53, 0xDC, 0xE7, 0xDB, 0xDF
-  },
-  {
-    0xAD, 0x03, 0x8F, 0xF9, 0xB1, 0x4D, 0xE8, 0x4A,
-    0x80, 0x1E, 0x4E, 0x62, 0x1C, 0xE5, 0xDF, 0x02,
-    0x9D, 0xD9, 0x35, 0x20, 0xD0, 0xC2, 0xFA, 0x38,
-    0xBF, 0xF1, 0x76, 0xA8, 0xB1, 0xD1, 0x69, 0x8C
-  },
-  {
-    0xAB, 0x70, 0xC5, 0xDF, 0xBD, 0x1E, 0xA8, 0x17,
-    0xFE, 0xD0, 0xCD, 0x06, 0x72, 0x93, 0xAB, 0xF3,
-    0x19, 0xE5, 0xD7, 0x90, 0x1C, 0x21, 0x41, 0xD5,
-    0xD9, 0x9B, 0x23, 0xF0, 0x3A, 0x38, 0xE7, 0x48
-  },
-  {
-    0x1F, 0xFF, 0xDA, 0x67, 0x93, 0x2B, 0x73, 0xC8,
-    0xEC, 0xAF, 0x00, 0x9A, 0x34, 0x91, 0xA0, 0x26,
-    0x95, 0x3B, 0xAB, 0xFE, 0x1F, 0x66, 0x3B, 0x06,
-    0x97, 0xC3, 0xC4, 0xAE, 0x8B, 0x2E, 0x7D, 0xCB
-  },
-  {
-    0xB0, 0xD2, 0xCC, 0x19, 0x47, 0x2D, 0xD5, 0x7F,
-    0x2B, 0x17, 0xEF, 0xC0, 0x3C, 0x8D, 0x58, 0xC2,
-    0x28, 0x3D, 0xBB, 0x19, 0xDA, 0x57, 0x2F, 0x77,
-    0x55, 0x85, 0x5A, 0xA9, 0x79, 0x43, 0x17, 0xA0
-  },
-  {
-    0xA0, 0xD1, 0x9A, 0x6E, 0xE3, 0x39, 0x79, 0xC3,
-    0x25, 0x51, 0x0E, 0x27, 0x66, 0x22, 0xDF, 0x41,
-    0xF7, 0x15, 0x83, 0xD0, 0x75, 0x01, 0xB8, 0x70,
-    0x71, 0x12, 0x9A, 0x0A, 0xD9, 0x47, 0x32, 0xA5
-  },
-  {
-    0x72, 0x46, 0x42, 0xA7, 0x03, 0x2D, 0x10, 0x62,
-    0xB8, 0x9E, 0x52, 0xBE, 0xA3, 0x4B, 0x75, 0xDF,
-    0x7D, 0x8F, 0xE7, 0x72, 0xD9, 0xFE, 0x3C, 0x93,
-    0xDD, 0xF3, 0xC4, 0x54, 0x5A, 0xB5, 0xA9, 0x9B
-  },
-  {
-    0xAD, 0xE5, 0xEA, 0xA7, 0xE6, 0x1F, 0x67, 0x2D,
-    0x58, 0x7E, 0xA0, 0x3D, 0xAE, 0x7D, 0x7B, 0x55,
-    0x22, 0x9C, 0x01, 0xD0, 0x6B, 0xC0, 0xA5, 0x70,
-    0x14, 0x36, 0xCB, 0xD1, 0x83, 0x66, 0xA6, 0x26
-  },
-  {
-    0x01, 0x3B, 0x31, 0xEB, 0xD2, 0x28, 0xFC, 0xDD,
-    0xA5, 0x1F, 0xAB, 0xB0, 0x3B, 0xB0, 0x2D, 0x60,
-    0xAC, 0x20, 0xCA, 0x21, 0x5A, 0xAF, 0xA8, 0x3B,
-    0xDD, 0x85, 0x5E, 0x37, 0x55, 0xA3, 0x5F, 0x0B
-  },
-  {
-    0x33, 0x2E, 0xD4, 0x0B, 0xB1, 0x0D, 0xDE, 0x3C,
-    0x95, 0x4A, 0x75, 0xD7, 0xB8, 0x99, 0x9D, 0x4B,
-    0x26, 0xA1, 0xC0, 0x63, 0xC1, 0xDC, 0x6E, 0x32,
-    0xC1, 0xD9, 0x1B, 0xAB, 0x7B, 0xBB, 0x7D, 0x16
-  },
-  {
-    0xC7, 0xA1, 0x97, 0xB3, 0xA0, 0x5B, 0x56, 0x6B,
-    0xCC, 0x9F, 0xAC, 0xD2, 0x0E, 0x44, 0x1D, 0x6F,
-    0x6C, 0x28, 0x60, 0xAC, 0x96, 0x51, 0xCD, 0x51,
-    0xD6, 0xB9, 0xD2, 0xCD, 0xEE, 0xEA, 0x03, 0x90
-  },
-  {
-    0xBD, 0x9C, 0xF6, 0x4E, 0xA8, 0x95, 0x3C, 0x03,
-    0x71, 0x08, 0xE6, 0xF6, 0x54, 0x91, 0x4F, 0x39,
-    0x58, 0xB6, 0x8E, 0x29, 0xC1, 0x67, 0x00, 0xDC,
-    0x18, 0x4D, 0x94, 0xA2, 0x17, 0x08, 0xFF, 0x60
-  },
-  {
-    0x88, 0x35, 0xB0, 0xAC, 0x02, 0x11, 0x51, 0xDF,
-    0x71, 0x64, 0x74, 0xCE, 0x27, 0xCE, 0x4D, 0x3C,
-    0x15, 0xF0, 0xB2, 0xDA, 0xB4, 0x80, 0x03, 0xCF,
-    0x3F, 0x3E, 0xFD, 0x09, 0x45, 0x10, 0x6B, 0x9A
-  },
-  {
-    0x3B, 0xFE, 0xFA, 0x33, 0x01, 0xAA, 0x55, 0xC0,
-    0x80, 0x19, 0x0C, 0xFF, 0xDA, 0x8E, 0xAE, 0x51,
-    0xD9, 0xAF, 0x48, 0x8B, 0x4C, 0x1F, 0x24, 0xC3,
-    0xD9, 0xA7, 0x52, 0x42, 0xFD, 0x8E, 0xA0, 0x1D
-  },
-  {
-    0x08, 0x28, 0x4D, 0x14, 0x99, 0x3C, 0xD4, 0x7D,
-    0x53, 0xEB, 0xAE, 0xCF, 0x0D, 0xF0, 0x47, 0x8C,
-    0xC1, 0x82, 0xC8, 0x9C, 0x00, 0xE1, 0x85, 0x9C,
-    0x84, 0x85, 0x16, 0x86, 0xDD, 0xF2, 0xC1, 0xB7
-  },
-  {
-    0x1E, 0xD7, 0xEF, 0x9F, 0x04, 0xC2, 0xAC, 0x8D,
-    0xB6, 0xA8, 0x64, 0xDB, 0x13, 0x10, 0x87, 0xF2,
-    0x70, 0x65, 0x09, 0x8E, 0x69, 0xC3, 0xFE, 0x78,
-    0x71, 0x8D, 0x9B, 0x94, 0x7F, 0x4A, 0x39, 0xD0
-  },
-  {
-    0xC1, 0x61, 0xF2, 0xDC, 0xD5, 0x7E, 0x9C, 0x14,
-    0x39, 0xB3, 0x1A, 0x9D, 0xD4, 0x3D, 0x8F, 0x3D,
-    0x7D, 0xD8, 0xF0, 0xEB, 0x7C, 0xFA, 0xC6, 0xFB,
-    0x25, 0xA0, 0xF2, 0x8E, 0x30, 0x6F, 0x06, 0x61
-  },
-  {
-    0xC0, 0x19, 0x69, 0xAD, 0x34, 0xC5, 0x2C, 0xAF,
-    0x3D, 0xC4, 0xD8, 0x0D, 0x19, 0x73, 0x5C, 0x29,
-    0x73, 0x1A, 0xC6, 0xE7, 0xA9, 0x20, 0x85, 0xAB,
-    0x92, 0x50, 0xC4, 0x8D, 0xEA, 0x48, 0xA3, 0xFC
-  },
-  {
-    0x17, 0x20, 0xB3, 0x65, 0x56, 0x19, 0xD2, 0xA5,
-    0x2B, 0x35, 0x21, 0xAE, 0x0E, 0x49, 0xE3, 0x45,
-    0xCB, 0x33, 0x89, 0xEB, 0xD6, 0x20, 0x8A, 0xCA,
-    0xF9, 0xF1, 0x3F, 0xDA, 0xCC, 0xA8, 0xBE, 0x49
-  },
-  {
-    0x75, 0x62, 0x88, 0x36, 0x1C, 0x83, 0xE2, 0x4C,
-    0x61, 0x7C, 0xF9, 0x5C, 0x90, 0x5B, 0x22, 0xD0,
-    0x17, 0xCD, 0xC8, 0x6F, 0x0B, 0xF1, 0xD6, 0x58,
-    0xF4, 0x75, 0x6C, 0x73, 0x79, 0x87, 0x3B, 0x7F
-  },
-  {
-    0xE7, 0xD0, 0xED, 0xA3, 0x45, 0x26, 0x93, 0xB7,
-    0x52, 0xAB, 0xCD, 0xA1, 0xB5, 0x5E, 0x27, 0x6F,
-    0x82, 0x69, 0x8F, 0x5F, 0x16, 0x05, 0x40, 0x3E,
-    0xFF, 0x83, 0x0B, 0xEA, 0x00, 0x71, 0xA3, 0x94
-  },
-  {
-    0x2C, 0x82, 0xEC, 0xAA, 0x6B, 0x84, 0x80, 0x3E,
-    0x04, 0x4A, 0xF6, 0x31, 0x18, 0xAF, 0xE5, 0x44,
-    0x68, 0x7C, 0xB6, 0xE6, 0xC7, 0xDF, 0x49, 0xED,
-    0x76, 0x2D, 0xFD, 0x7C, 0x86, 0x93, 0xA1, 0xBC
-  },
-  {
-    0x61, 0x36, 0xCB, 0xF4, 0xB4, 0x41, 0x05, 0x6F,
-    0xA1, 0xE2, 0x72, 0x24, 0x98, 0x12, 0x5D, 0x6D,
-    0xED, 0x45, 0xE1, 0x7B, 0x52, 0x14, 0x39, 0x59,
-    0xC7, 0xF4, 0xD4, 0xE3, 0x95, 0x21, 0x8A, 0xC2
-  },
-  {
-    0x72, 0x1D, 0x32, 0x45, 0xAA, 0xFE, 0xF2, 0x7F,
-    0x6A, 0x62, 0x4F, 0x47, 0x95, 0x4B, 0x6C, 0x25,
-    0x50, 0x79, 0x52, 0x6F, 0xFA, 0x25, 0xE9, 0xFF,
-    0x77, 0xE5, 0xDC, 0xFF, 0x47, 0x3B, 0x15, 0x97
-  },
-  {
-    0x9D, 0xD2, 0xFB, 0xD8, 0xCE, 0xF1, 0x6C, 0x35,
-    0x3C, 0x0A, 0xC2, 0x11, 0x91, 0xD5, 0x09, 0xEB,
-    0x28, 0xDD, 0x9E, 0x3E, 0x0D, 0x8C, 0xEA, 0x5D,
-    0x26, 0xCA, 0x83, 0x93, 0x93, 0x85, 0x1C, 0x3A
-  },
-  {
-    0xB2, 0x39, 0x4C, 0xEA, 0xCD, 0xEB, 0xF2, 0x1B,
-    0xF9, 0xDF, 0x2C, 0xED, 0x98, 0xE5, 0x8F, 0x1C,
-    0x3A, 0x4B, 0xBB, 0xFF, 0x66, 0x0D, 0xD9, 0x00,
-    0xF6, 0x22, 0x02, 0xD6, 0x78, 0x5C, 0xC4, 0x6E
-  },
-  {
-    0x57, 0x08, 0x9F, 0x22, 0x27, 0x49, 0xAD, 0x78,
-    0x71, 0x76, 0x5F, 0x06, 0x2B, 0x11, 0x4F, 0x43,
-    0xBA, 0x20, 0xEC, 0x56, 0x42, 0x2A, 0x8B, 0x1E,
-    0x3F, 0x87, 0x19, 0x2C, 0x0E, 0xA7, 0x18, 0xC6
-  },
-  {
-    0xE4, 0x9A, 0x94, 0x59, 0x96, 0x1C, 0xD3, 0x3C,
-    0xDF, 0x4A, 0xAE, 0x1B, 0x10, 0x78, 0xA5, 0xDE,
-    0xA7, 0xC0, 0x40, 0xE0, 0xFE, 0xA3, 0x40, 0xC9,
-    0x3A, 0x72, 0x48, 0x72, 0xFC, 0x4A, 0xF8, 0x06
-  },
-  {
-    0xED, 0xE6, 0x7F, 0x72, 0x0E, 0xFF, 0xD2, 0xCA,
-    0x9C, 0x88, 0x99, 0x41, 0x52, 0xD0, 0x20, 0x1D,
-    0xEE, 0x6B, 0x0A, 0x2D, 0x2C, 0x07, 0x7A, 0xCA,
-    0x6D, 0xAE, 0x29, 0xF7, 0x3F, 0x8B, 0x63, 0x09
-  },
-  {
-    0xE0, 0xF4, 0x34, 0xBF, 0x22, 0xE3, 0x08, 0x80,
-    0x39, 0xC2, 0x1F, 0x71, 0x9F, 0xFC, 0x67, 0xF0,
-    0xF2, 0xCB, 0x5E, 0x98, 0xA7, 0xA0, 0x19, 0x4C,
-    0x76, 0xE9, 0x6B, 0xF4, 0xE8, 0xE1, 0x7E, 0x61
-  },
-  {
-    0x27, 0x7C, 0x04, 0xE2, 0x85, 0x34, 0x84, 0xA4,
-    0xEB, 0xA9, 0x10, 0xAD, 0x33, 0x6D, 0x01, 0xB4,
-    0x77, 0xB6, 0x7C, 0xC2, 0x00, 0xC5, 0x9F, 0x3C,
-    0x8D, 0x77, 0xEE, 0xF8, 0x49, 0x4F, 0x29, 0xCD
-  },
-  {
-    0x15, 0x6D, 0x57, 0x47, 0xD0, 0xC9, 0x9C, 0x7F,
-    0x27, 0x09, 0x7D, 0x7B, 0x7E, 0x00, 0x2B, 0x2E,
-    0x18, 0x5C, 0xB7, 0x2D, 0x8D, 0xD7, 0xEB, 0x42,
-    0x4A, 0x03, 0x21, 0x52, 0x81, 0x61, 0x21, 0x9F
-  },
-  {
-    0x20, 0xDD, 0xD1, 0xED, 0x9B, 0x1C, 0xA8, 0x03,
-    0x94, 0x6D, 0x64, 0xA8, 0x3A, 0xE4, 0x65, 0x9D,
-    0xA6, 0x7F, 0xBA, 0x7A, 0x1A, 0x3E, 0xDD, 0xB1,
-    0xE1, 0x03, 0xC0, 0xF5, 0xE0, 0x3E, 0x3A, 0x2C
-  },
-  {
-    0xF0, 0xAF, 0x60, 0x4D, 0x3D, 0xAB, 0xBF, 0x9A,
-    0x0F, 0x2A, 0x7D, 0x3D, 0xDA, 0x6B, 0xD3, 0x8B,
-    0xBA, 0x72, 0xC6, 0xD0, 0x9B, 0xE4, 0x94, 0xFC,
-    0xEF, 0x71, 0x3F, 0xF1, 0x01, 0x89, 0xB6, 0xE6
-  },
-  {
-    0x98, 0x02, 0xBB, 0x87, 0xDE, 0xF4, 0xCC, 0x10,
-    0xC4, 0xA5, 0xFD, 0x49, 0xAA, 0x58, 0xDF, 0xE2,
-    0xF3, 0xFD, 0xDB, 0x46, 0xB4, 0x70, 0x88, 0x14,
-    0xEA, 0xD8, 0x1D, 0x23, 0xBA, 0x95, 0x13, 0x9B
-  },
-  {
-    0x4F, 0x8C, 0xE1, 0xE5, 0x1D, 0x2F, 0xE7, 0xF2,
-    0x40, 0x43, 0xA9, 0x04, 0xD8, 0x98, 0xEB, 0xFC,
-    0x91, 0x97, 0x54, 0x18, 0x75, 0x34, 0x13, 0xAA,
-    0x09, 0x9B, 0x79, 0x5E, 0xCB, 0x35, 0xCE, 0xDB
-  },
-  {
-    0xBD, 0xDC, 0x65, 0x14, 0xD7, 0xEE, 0x6A, 0xCE,
-    0x0A, 0x4A, 0xC1, 0xD0, 0xE0, 0x68, 0x11, 0x22,
-    0x88, 0xCB, 0xCF, 0x56, 0x04, 0x54, 0x64, 0x27,
-    0x05, 0x63, 0x01, 0x77, 0xCB, 0xA6, 0x08, 0xBD
-  },
-  {
-    0xD6, 0x35, 0x99, 0x4F, 0x62, 0x91, 0x51, 0x7B,
-    0x02, 0x81, 0xFF, 0xDD, 0x49, 0x6A, 0xFA, 0x86,
-    0x27, 0x12, 0xE5, 0xB3, 0xC4, 0xE5, 0x2E, 0x4C,
-    0xD5, 0xFD, 0xAE, 0x8C, 0x0E, 0x72, 0xFB, 0x08
-  },
-  {
-    0x87, 0x8D, 0x9C, 0xA6, 0x00, 0xCF, 0x87, 0xE7,
-    0x69, 0xCC, 0x30, 0x5C, 0x1B, 0x35, 0x25, 0x51,
-    0x86, 0x61, 0x5A, 0x73, 0xA0, 0xDA, 0x61, 0x3B,
-    0x5F, 0x1C, 0x98, 0xDB, 0xF8, 0x12, 0x83, 0xEA
-  },
-  {
-    0xA6, 0x4E, 0xBE, 0x5D, 0xC1, 0x85, 0xDE, 0x9F,
-    0xDD, 0xE7, 0x60, 0x7B, 0x69, 0x98, 0x70, 0x2E,
-    0xB2, 0x34, 0x56, 0x18, 0x49, 0x57, 0x30, 0x7D,
-    0x2F, 0xA7, 0x2E, 0x87, 0xA4, 0x77, 0x02, 0xD6
-  },
-  {
-    0xCE, 0x50, 0xEA, 0xB7, 0xB5, 0xEB, 0x52, 0xBD,
-    0xC9, 0xAD, 0x8E, 0x5A, 0x48, 0x0A, 0xB7, 0x80,
-    0xCA, 0x93, 0x20, 0xE4, 0x43, 0x60, 0xB1, 0xFE,
-    0x37, 0xE0, 0x3F, 0x2F, 0x7A, 0xD7, 0xDE, 0x01
-  },
-  {
-    0xEE, 0xDD, 0xB7, 0xC0, 0xDB, 0x6E, 0x30, 0xAB,
-    0xE6, 0x6D, 0x79, 0xE3, 0x27, 0x51, 0x1E, 0x61,
-    0xFC, 0xEB, 0xBC, 0x29, 0xF1, 0x59, 0xB4, 0x0A,
-    0x86, 0xB0, 0x46, 0xEC, 0xF0, 0x51, 0x38, 0x23
-  },
-  {
-    0x78, 0x7F, 0xC9, 0x34, 0x40, 0xC1, 0xEC, 0x96,
-    0xB5, 0xAD, 0x01, 0xC1, 0x6C, 0xF7, 0x79, 0x16,
-    0xA1, 0x40, 0x5F, 0x94, 0x26, 0x35, 0x6E, 0xC9,
-    0x21, 0xD8, 0xDF, 0xF3, 0xEA, 0x63, 0xB7, 0xE0
-  },
-  {
-    0x7F, 0x0D, 0x5E, 0xAB, 0x47, 0xEE, 0xFD, 0xA6,
-    0x96, 0xC0, 0xBF, 0x0F, 0xBF, 0x86, 0xAB, 0x21,
-    0x6F, 0xCE, 0x46, 0x1E, 0x93, 0x03, 0xAB, 0xA6,
-    0xAC, 0x37, 0x41, 0x20, 0xE8, 0x90, 0xE8, 0xDF
-  },
-  {
-    0xB6, 0x80, 0x04, 0xB4, 0x2F, 0x14, 0xAD, 0x02,
-    0x9F, 0x4C, 0x2E, 0x03, 0xB1, 0xD5, 0xEB, 0x76,
-    0xD5, 0x71, 0x60, 0xE2, 0x64, 0x76, 0xD2, 0x11,
-    0x31, 0xBE, 0xF2, 0x0A, 0xDA, 0x7D, 0x27, 0xF4
-  },
-  {
-    0xB0, 0xC4, 0xEB, 0x18, 0xAE, 0x25, 0x0B, 0x51,
-    0xA4, 0x13, 0x82, 0xEA, 0xD9, 0x2D, 0x0D, 0xC7,
-    0x45, 0x5F, 0x93, 0x79, 0xFC, 0x98, 0x84, 0x42,
-    0x8E, 0x47, 0x70, 0x60, 0x8D, 0xB0, 0xFA, 0xEC
-  },
-  {
-    0xF9, 0x2B, 0x7A, 0x87, 0x0C, 0x05, 0x9F, 0x4D,
-    0x46, 0x46, 0x4C, 0x82, 0x4E, 0xC9, 0x63, 0x55,
-    0x14, 0x0B, 0xDC, 0xE6, 0x81, 0x32, 0x2C, 0xC3,
-    0xA9, 0x92, 0xFF, 0x10, 0x3E, 0x3F, 0xEA, 0x52
-  },
-  {
-    0x53, 0x64, 0x31, 0x26, 0x14, 0x81, 0x33, 0x98,
-    0xCC, 0x52, 0x5D, 0x4C, 0x4E, 0x14, 0x6E, 0xDE,
-    0xB3, 0x71, 0x26, 0x5F, 0xBA, 0x19, 0x13, 0x3A,
-    0x2C, 0x3D, 0x21, 0x59, 0x29, 0x8A, 0x17, 0x42
-  },
-  {
-    0xF6, 0x62, 0x0E, 0x68, 0xD3, 0x7F, 0xB2, 0xAF,
-    0x50, 0x00, 0xFC, 0x28, 0xE2, 0x3B, 0x83, 0x22,
-    0x97, 0xEC, 0xD8, 0xBC, 0xE9, 0x9E, 0x8B, 0xE4,
-    0xD0, 0x4E, 0x85, 0x30, 0x9E, 0x3D, 0x33, 0x74
-  },
-  {
-    0x53, 0x16, 0xA2, 0x79, 0x69, 0xD7, 0xFE, 0x04,
-    0xFF, 0x27, 0xB2, 0x83, 0x96, 0x1B, 0xFF, 0xC3,
-    0xBF, 0x5D, 0xFB, 0x32, 0xFB, 0x6A, 0x89, 0xD1,
-    0x01, 0xC6, 0xC3, 0xB1, 0x93, 0x7C, 0x28, 0x71
-  },
-  {
-    0x81, 0xD1, 0x66, 0x4F, 0xDF, 0x3C, 0xB3, 0x3C,
-    0x24, 0xEE, 0xBA, 0xC0, 0xBD, 0x64, 0x24, 0x4B,
-    0x77, 0xC4, 0xAB, 0xEA, 0x90, 0xBB, 0xE8, 0xB5,
-    0xEE, 0x0B, 0x2A, 0xAF, 0xCF, 0x2D, 0x6A, 0x53
-  },
-  {
-    0x34, 0x57, 0x82, 0xF2, 0x95, 0xB0, 0x88, 0x03,
-    0x52, 0xE9, 0x24, 0xA0, 0x46, 0x7B, 0x5F, 0xBC,
-    0x3E, 0x8F, 0x3B, 0xFB, 0xC3, 0xC7, 0xE4, 0x8B,
-    0x67, 0x09, 0x1F, 0xB5, 0xE8, 0x0A, 0x94, 0x42
-  },
-  {
-    0x79, 0x41, 0x11, 0xEA, 0x6C, 0xD6, 0x5E, 0x31,
-    0x1F, 0x74, 0xEE, 0x41, 0xD4, 0x76, 0xCB, 0x63,
-    0x2C, 0xE1, 0xE4, 0xB0, 0x51, 0xDC, 0x1D, 0x9E,
-    0x9D, 0x06, 0x1A, 0x19, 0xE1, 0xD0, 0xBB, 0x49
-  },
-  {
-    0x2A, 0x85, 0xDA, 0xF6, 0x13, 0x88, 0x16, 0xB9,
-    0x9B, 0xF8, 0xD0, 0x8B, 0xA2, 0x11, 0x4B, 0x7A,
-    0xB0, 0x79, 0x75, 0xA7, 0x84, 0x20, 0xC1, 0xA3,
-    0xB0, 0x6A, 0x77, 0x7C, 0x22, 0xDD, 0x8B, 0xCB
-  },
-  {
-    0x89, 0xB0, 0xD5, 0xF2, 0x89, 0xEC, 0x16, 0x40,
-    0x1A, 0x06, 0x9A, 0x96, 0x0D, 0x0B, 0x09, 0x3E,
-    0x62, 0x5D, 0xA3, 0xCF, 0x41, 0xEE, 0x29, 0xB5,
-    0x9B, 0x93, 0x0C, 0x58, 0x20, 0x14, 0x54, 0x55
-  },
-  {
-    0xD0, 0xFD, 0xCB, 0x54, 0x39, 0x43, 0xFC, 0x27,
-    0xD2, 0x08, 0x64, 0xF5, 0x21, 0x81, 0x47, 0x1B,
-    0x94, 0x2C, 0xC7, 0x7C, 0xA6, 0x75, 0xBC, 0xB3,
-    0x0D, 0xF3, 0x1D, 0x35, 0x8E, 0xF7, 0xB1, 0xEB
-  },
-  {
-    0xB1, 0x7E, 0xA8, 0xD7, 0x70, 0x63, 0xC7, 0x09,
-    0xD4, 0xDC, 0x6B, 0x87, 0x94, 0x13, 0xC3, 0x43,
-    0xE3, 0x79, 0x0E, 0x9E, 0x62, 0xCA, 0x85, 0xB7,
-    0x90, 0x0B, 0x08, 0x6F, 0x6B, 0x75, 0xC6, 0x72
-  },
-  {
-    0xE7, 0x1A, 0x3E, 0x2C, 0x27, 0x4D, 0xB8, 0x42,
-    0xD9, 0x21, 0x14, 0xF2, 0x17, 0xE2, 0xC0, 0xEA,
-    0xC8, 0xB4, 0x50, 0x93, 0xFD, 0xFD, 0x9D, 0xF4,
-    0xCA, 0x71, 0x62, 0x39, 0x48, 0x62, 0xD5, 0x01
-  },
-  {
-    0xC0, 0x47, 0x67, 0x59, 0xAB, 0x7A, 0xA3, 0x33,
-    0x23, 0x4F, 0x6B, 0x44, 0xF5, 0xFD, 0x85, 0x83,
-    0x90, 0xEC, 0x23, 0x69, 0x4C, 0x62, 0x2C, 0xB9,
-    0x86, 0xE7, 0x69, 0xC7, 0x8E, 0xDD, 0x73, 0x3E
-  },
-  {
-    0x9A, 0xB8, 0xEA, 0xBB, 0x14, 0x16, 0x43, 0x4D,
-    0x85, 0x39, 0x13, 0x41, 0xD5, 0x69, 0x93, 0xC5,
-    0x54, 0x58, 0x16, 0x7D, 0x44, 0x18, 0xB1, 0x9A,
-    0x0F, 0x2A, 0xD8, 0xB7, 0x9A, 0x83, 0xA7, 0x5B
-  },
-  {
-    0x79, 0x92, 0xD0, 0xBB, 0xB1, 0x5E, 0x23, 0x82,
-    0x6F, 0x44, 0x3E, 0x00, 0x50, 0x5D, 0x68, 0xD3,
-    0xED, 0x73, 0x72, 0x99, 0x5A, 0x5C, 0x3E, 0x49,
-    0x86, 0x54, 0x10, 0x2F, 0xBC, 0xD0, 0x96, 0x4E
-  },
-  {
-    0xC0, 0x21, 0xB3, 0x00, 0x85, 0x15, 0x14, 0x35,
-    0xDF, 0x33, 0xB0, 0x07, 0xCC, 0xEC, 0xC6, 0x9D,
-    0xF1, 0x26, 0x9F, 0x39, 0xBA, 0x25, 0x09, 0x2B,
-    0xED, 0x59, 0xD9, 0x32, 0xAC, 0x0F, 0xDC, 0x28
-  },
-  {
-    0x91, 0xA2, 0x5E, 0xC0, 0xEC, 0x0D, 0x9A, 0x56,
-    0x7F, 0x89, 0xC4, 0xBF, 0xE1, 0xA6, 0x5A, 0x0E,
-    0x43, 0x2D, 0x07, 0x06, 0x4B, 0x41, 0x90, 0xE2,
-    0x7D, 0xFB, 0x81, 0x90, 0x1F, 0xD3, 0x13, 0x9B
-  },
-  {
-    0x59, 0x50, 0xD3, 0x9A, 0x23, 0xE1, 0x54, 0x5F,
-    0x30, 0x12, 0x70, 0xAA, 0x1A, 0x12, 0xF2, 0xE6,
-    0xC4, 0x53, 0x77, 0x6E, 0x4D, 0x63, 0x55, 0xDE,
-    0x42, 0x5C, 0xC1, 0x53, 0xF9, 0x81, 0x88, 0x67
-  },
-  {
-    0xD7, 0x9F, 0x14, 0x72, 0x0C, 0x61, 0x0A, 0xF1,
-    0x79, 0xA3, 0x76, 0x5D, 0x4B, 0x7C, 0x09, 0x68,
-    0xF9, 0x77, 0x96, 0x2D, 0xBF, 0x65, 0x5B, 0x52,
-    0x12, 0x72, 0xB6, 0xF1, 0xE1, 0x94, 0x48, 0x8E
-  },
-  {
-    0xE9, 0x53, 0x1B, 0xFC, 0x8B, 0x02, 0x99, 0x5A,
-    0xEA, 0xA7, 0x5B, 0xA2, 0x70, 0x31, 0xFA, 0xDB,
-    0xCB, 0xF4, 0xA0, 0xDA, 0xB8, 0x96, 0x1D, 0x92,
-    0x96, 0xCD, 0x7E, 0x84, 0xD2, 0x5D, 0x60, 0x06
-  },
-  {
-    0x34, 0xE9, 0xC2, 0x6A, 0x01, 0xD7, 0xF1, 0x61,
-    0x81, 0xB4, 0x54, 0xA9, 0xD1, 0x62, 0x3C, 0x23,
-    0x3C, 0xB9, 0x9D, 0x31, 0xC6, 0x94, 0x65, 0x6E,
-    0x94, 0x13, 0xAC, 0xA3, 0xE9, 0x18, 0x69, 0x2F
-  },
-  {
-    0xD9, 0xD7, 0x42, 0x2F, 0x43, 0x7B, 0xD4, 0x39,
-    0xDD, 0xD4, 0xD8, 0x83, 0xDA, 0xE2, 0xA0, 0x83,
-    0x50, 0x17, 0x34, 0x14, 0xBE, 0x78, 0x15, 0x51,
-    0x33, 0xFF, 0xF1, 0x96, 0x4C, 0x3D, 0x79, 0x72
-  },
-  {
-    0x4A, 0xEE, 0x0C, 0x7A, 0xAF, 0x07, 0x54, 0x14,
-    0xFF, 0x17, 0x93, 0xEA, 0xD7, 0xEA, 0xCA, 0x60,
-    0x17, 0x75, 0xC6, 0x15, 0xDB, 0xD6, 0x0B, 0x64,
-    0x0B, 0x0A, 0x9F, 0x0C, 0xE5, 0x05, 0xD4, 0x35
-  },
-  {
-    0x6B, 0xFD, 0xD1, 0x54, 0x59, 0xC8, 0x3B, 0x99,
-    0xF0, 0x96, 0xBF, 0xB4, 0x9E, 0xE8, 0x7B, 0x06,
-    0x3D, 0x69, 0xC1, 0x97, 0x4C, 0x69, 0x28, 0xAC,
-    0xFC, 0xFB, 0x40, 0x99, 0xF8, 0xC4, 0xEF, 0x67
-  },
-  {
-    0x9F, 0xD1, 0xC4, 0x08, 0xFD, 0x75, 0xC3, 0x36,
-    0x19, 0x3A, 0x2A, 0x14, 0xD9, 0x4F, 0x6A, 0xF5,
-    0xAD, 0xF0, 0x50, 0xB8, 0x03, 0x87, 0xB4, 0xB0,
-    0x10, 0xFB, 0x29, 0xF4, 0xCC, 0x72, 0x70, 0x7C
-  },
-  {
-    0x13, 0xC8, 0x84, 0x80, 0xA5, 0xD0, 0x0D, 0x6C,
-    0x8C, 0x7A, 0xD2, 0x11, 0x0D, 0x76, 0xA8, 0x2D,
-    0x9B, 0x70, 0xF4, 0xFA, 0x66, 0x96, 0xD4, 0xE5,
-    0xDD, 0x42, 0xA0, 0x66, 0xDC, 0xAF, 0x99, 0x20
-  },
-  {
-    0x82, 0x0E, 0x72, 0x5E, 0xE2, 0x5F, 0xE8, 0xFD,
-    0x3A, 0x8D, 0x5A, 0xBE, 0x4C, 0x46, 0xC3, 0xBA,
-    0x88, 0x9D, 0xE6, 0xFA, 0x91, 0x91, 0xAA, 0x22,
-    0xBA, 0x67, 0xD5, 0x70, 0x54, 0x21, 0x54, 0x2B
-  },
-  {
-    0x32, 0xD9, 0x3A, 0x0E, 0xB0, 0x2F, 0x42, 0xFB,
-    0xBC, 0xAF, 0x2B, 0xAD, 0x00, 0x85, 0xB2, 0x82,
-    0xE4, 0x60, 0x46, 0xA4, 0xDF, 0x7A, 0xD1, 0x06,
-    0x57, 0xC9, 0xD6, 0x47, 0x63, 0x75, 0xB9, 0x3E
-  },
-  {
-    0xAD, 0xC5, 0x18, 0x79, 0x05, 0xB1, 0x66, 0x9C,
-    0xD8, 0xEC, 0x9C, 0x72, 0x1E, 0x19, 0x53, 0x78,
-    0x6B, 0x9D, 0x89, 0xA9, 0xBA, 0xE3, 0x07, 0x80,
-    0xF1, 0xE1, 0xEA, 0xB2, 0x4A, 0x00, 0x52, 0x3C
-  },
-  {
-    0xE9, 0x07, 0x56, 0xFF, 0x7F, 0x9A, 0xD8, 0x10,
-    0xB2, 0x39, 0xA1, 0x0C, 0xED, 0x2C, 0xF9, 0xB2,
-    0x28, 0x43, 0x54, 0xC1, 0xF8, 0xC7, 0xE0, 0xAC,
-    0xCC, 0x24, 0x61, 0xDC, 0x79, 0x6D, 0x6E, 0x89
-  },
-  {
-    0x12, 0x51, 0xF7, 0x6E, 0x56, 0x97, 0x84, 0x81,
-    0x87, 0x53, 0x59, 0x80, 0x1D, 0xB5, 0x89, 0xA0,
-    0xB2, 0x2F, 0x86, 0xD8, 0xD6, 0x34, 0xDC, 0x04,
-    0x50, 0x6F, 0x32, 0x2E, 0xD7, 0x8F, 0x17, 0xE8
-  },
-  {
-    0x3A, 0xFA, 0x89, 0x9F, 0xD9, 0x80, 0xE7, 0x3E,
-    0xCB, 0x7F, 0x4D, 0x8B, 0x8F, 0x29, 0x1D, 0xC9,
-    0xAF, 0x79, 0x6B, 0xC6, 0x5D, 0x27, 0xF9, 0x74,
-    0xC6, 0xF1, 0x93, 0xC9, 0x19, 0x1A, 0x09, 0xFD
-  },
-  {
-    0xAA, 0x30, 0x5B, 0xE2, 0x6E, 0x5D, 0xED, 0xDC,
-    0x3C, 0x10, 0x10, 0xCB, 0xC2, 0x13, 0xF9, 0x5F,
-    0x05, 0x1C, 0x78, 0x5C, 0x5B, 0x43, 0x1E, 0x6A,
-    0x7C, 0xD0, 0x48, 0xF1, 0x61, 0x78, 0x75, 0x28
-  },
-  {
-    0x8E, 0xA1, 0x88, 0x4F, 0xF3, 0x2E, 0x9D, 0x10,
-    0xF0, 0x39, 0xB4, 0x07, 0xD0, 0xD4, 0x4E, 0x7E,
-    0x67, 0x0A, 0xBD, 0x88, 0x4A, 0xEE, 0xE0, 0xFB,
-    0x75, 0x7A, 0xE9, 0x4E, 0xAA, 0x97, 0x37, 0x3D
-  },
-  {
-    0xD4, 0x82, 0xB2, 0x15, 0x5D, 0x4D, 0xEC, 0x6B,
-    0x47, 0x36, 0xA1, 0xF1, 0x61, 0x7B, 0x53, 0xAA,
-    0xA3, 0x73, 0x10, 0x27, 0x7D, 0x3F, 0xEF, 0x0C,
-    0x37, 0xAD, 0x41, 0x76, 0x8F, 0xC2, 0x35, 0xB4
-  },
-  {
-    0x4D, 0x41, 0x39, 0x71, 0x38, 0x7E, 0x7A, 0x88,
-    0x98, 0xA8, 0xDC, 0x2A, 0x27, 0x50, 0x07, 0x78,
-    0x53, 0x9E, 0xA2, 0x14, 0xA2, 0xDF, 0xE9, 0xB3,
-    0xD7, 0xE8, 0xEB, 0xDC, 0xE5, 0xCF, 0x3D, 0xB3
-  },
-  {
-    0x69, 0x6E, 0x5D, 0x46, 0xE6, 0xC5, 0x7E, 0x87,
-    0x96, 0xE4, 0x73, 0x5D, 0x08, 0x91, 0x6E, 0x0B,
-    0x79, 0x29, 0xB3, 0xCF, 0x29, 0x8C, 0x29, 0x6D,
-    0x22, 0xE9, 0xD3, 0x01, 0x96, 0x53, 0x37, 0x1C
-  },
-  {
-    0x1F, 0x56, 0x47, 0xC1, 0xD3, 0xB0, 0x88, 0x22,
-    0x88, 0x85, 0x86, 0x5C, 0x89, 0x40, 0x90, 0x8B,
-    0xF4, 0x0D, 0x1A, 0x82, 0x72, 0x82, 0x19, 0x73,
-    0xB1, 0x60, 0x00, 0x8E, 0x7A, 0x3C, 0xE2, 0xEB
-  },
-  {
-    0xB6, 0xE7, 0x6C, 0x33, 0x0F, 0x02, 0x1A, 0x5B,
-    0xDA, 0x65, 0x87, 0x50, 0x10, 0xB0, 0xED, 0xF0,
-    0x91, 0x26, 0xC0, 0xF5, 0x10, 0xEA, 0x84, 0x90,
-    0x48, 0x19, 0x20, 0x03, 0xAE, 0xF4, 0xC6, 0x1C
-  },
-  {
-    0x3C, 0xD9, 0x52, 0xA0, 0xBE, 0xAD, 0xA4, 0x1A,
-    0xBB, 0x42, 0x4C, 0xE4, 0x7F, 0x94, 0xB4, 0x2B,
-    0xE6, 0x4E, 0x1F, 0xFB, 0x0F, 0xD0, 0x78, 0x22,
-    0x76, 0x80, 0x79, 0x46, 0xD0, 0xD0, 0xBC, 0x55
-  },
-  {
-    0x98, 0xD9, 0x26, 0x77, 0x43, 0x9B, 0x41, 0xB7,
-    0xBB, 0x51, 0x33, 0x12, 0xAF, 0xB9, 0x2B, 0xCC,
-    0x8E, 0xE9, 0x68, 0xB2, 0xE3, 0xB2, 0x38, 0xCE,
-    0xCB, 0x9B, 0x0F, 0x34, 0xC9, 0xBB, 0x63, 0xD0
-  },
-  {
-    0xEC, 0xBC, 0xA2, 0xCF, 0x08, 0xAE, 0x57, 0xD5,
-    0x17, 0xAD, 0x16, 0x15, 0x8A, 0x32, 0xBF, 0xA7,
-    0xDC, 0x03, 0x82, 0xEA, 0xED, 0xA1, 0x28, 0xE9,
-    0x18, 0x86, 0x73, 0x4C, 0x24, 0xA0, 0xB2, 0x9D
-  },
-  {
-    0x94, 0x2C, 0xC7, 0xC0, 0xB5, 0x2E, 0x2B, 0x16,
-    0xA4, 0xB8, 0x9F, 0xA4, 0xFC, 0x7E, 0x0B, 0xF6,
-    0x09, 0xE2, 0x9A, 0x08, 0xC1, 0xA8, 0x54, 0x34,
-    0x52, 0xB7, 0x7C, 0x7B, 0xFD, 0x11, 0xBB, 0x28
-  },
-  {
-    0x8A, 0x06, 0x5D, 0x8B, 0x61, 0xA0, 0xDF, 0xFB,
-    0x17, 0x0D, 0x56, 0x27, 0x73, 0x5A, 0x76, 0xB0,
-    0xE9, 0x50, 0x60, 0x37, 0x80, 0x8C, 0xBA, 0x16,
-    0xC3, 0x45, 0x00, 0x7C, 0x9F, 0x79, 0xCF, 0x8F
-  },
-  {
-    0x1B, 0x9F, 0xA1, 0x97, 0x14, 0x65, 0x9C, 0x78,
-    0xFF, 0x41, 0x38, 0x71, 0x84, 0x92, 0x15, 0x36,
-    0x10, 0x29, 0xAC, 0x80, 0x2B, 0x1C, 0xBC, 0xD5,
-    0x4E, 0x40, 0x8B, 0xD8, 0x72, 0x87, 0xF8, 0x1F
-  },
-  {
-    0x8D, 0xAB, 0x07, 0x1B, 0xCD, 0x6C, 0x72, 0x92,
-    0xA9, 0xEF, 0x72, 0x7B, 0x4A, 0xE0, 0xD8, 0x67,
-    0x13, 0x30, 0x1D, 0xA8, 0x61, 0x8D, 0x9A, 0x48,
-    0xAD, 0xCE, 0x55, 0xF3, 0x03, 0xA8, 0x69, 0xA1
-  },
-  {
-    0x82, 0x53, 0xE3, 0xE7, 0xC7, 0xB6, 0x84, 0xB9,
-    0xCB, 0x2B, 0xEB, 0x01, 0x4C, 0xE3, 0x30, 0xFF,
-    0x3D, 0x99, 0xD1, 0x7A, 0xBB, 0xDB, 0xAB, 0xE4,
-    0xF4, 0xD6, 0x74, 0xDE, 0xD5, 0x3F, 0xFC, 0x6B
-  },
-  {
-    0xF1, 0x95, 0xF3, 0x21, 0xE9, 0xE3, 0xD6, 0xBD,
-    0x7D, 0x07, 0x45, 0x04, 0xDD, 0x2A, 0xB0, 0xE6,
-    0x24, 0x1F, 0x92, 0xE7, 0x84, 0xB1, 0xAA, 0x27,
-    0x1F, 0xF6, 0x48, 0xB1, 0xCA, 0xB6, 0xD7, 0xF6
-  },
-  {
-    0x27, 0xE4, 0xCC, 0x72, 0x09, 0x0F, 0x24, 0x12,
-    0x66, 0x47, 0x6A, 0x7C, 0x09, 0x49, 0x5F, 0x2D,
-    0xB1, 0x53, 0xD5, 0xBC, 0xBD, 0x76, 0x19, 0x03,
-    0xEF, 0x79, 0x27, 0x5E, 0xC5, 0x6B, 0x2E, 0xD8
-  },
-  {
-    0x89, 0x9C, 0x24, 0x05, 0x78, 0x8E, 0x25, 0xB9,
-    0x9A, 0x18, 0x46, 0x35, 0x5E, 0x64, 0x6D, 0x77,
-    0xCF, 0x40, 0x00, 0x83, 0x41, 0x5F, 0x7D, 0xC5,
-    0xAF, 0xE6, 0x9D, 0x6E, 0x17, 0xC0, 0x00, 0x23
-  },
-  {
-    0xA5, 0x9B, 0x78, 0xC4, 0x90, 0x57, 0x44, 0x07,
-    0x6B, 0xFE, 0xE8, 0x94, 0xDE, 0x70, 0x7D, 0x4F,
-    0x12, 0x0B, 0x5C, 0x68, 0x93, 0xEA, 0x04, 0x00,
-    0x29, 0x7D, 0x0B, 0xB8, 0x34, 0x72, 0x76, 0x32
-  },
-  {
-    0x59, 0xDC, 0x78, 0xB1, 0x05, 0x64, 0x97, 0x07,
-    0xA2, 0xBB, 0x44, 0x19, 0xC4, 0x8F, 0x00, 0x54,
-    0x00, 0xD3, 0x97, 0x3D, 0xE3, 0x73, 0x66, 0x10,
-    0x23, 0x04, 0x35, 0xB1, 0x04, 0x24, 0xB2, 0x4F
-  },
-  {
-    0xC0, 0x14, 0x9D, 0x1D, 0x7E, 0x7A, 0x63, 0x53,
-    0xA6, 0xD9, 0x06, 0xEF, 0xE7, 0x28, 0xF2, 0xF3,
-    0x29, 0xFE, 0x14, 0xA4, 0x14, 0x9A, 0x3E, 0xA7,
-    0x76, 0x09, 0xBC, 0x42, 0xB9, 0x75, 0xDD, 0xFA
-  },
-  {
-    0xA3, 0x2F, 0x24, 0x14, 0x74, 0xA6, 0xC1, 0x69,
-    0x32, 0xE9, 0x24, 0x3B, 0xE0, 0xCF, 0x09, 0xBC,
-    0xDC, 0x7E, 0x0C, 0xA0, 0xE7, 0xA6, 0xA1, 0xB9,
-    0xB1, 0xA0, 0xF0, 0x1E, 0x41, 0x50, 0x23, 0x77
-  },
-  {
-    0xB2, 0x39, 0xB2, 0xE4, 0xF8, 0x18, 0x41, 0x36,
-    0x1C, 0x13, 0x39, 0xF6, 0x8E, 0x2C, 0x35, 0x9F,
-    0x92, 0x9A, 0xF9, 0xAD, 0x9F, 0x34, 0xE0, 0x1A,
-    0xAB, 0x46, 0x31, 0xAD, 0x6D, 0x55, 0x00, 0xB0
-  },
-  {
-    0x85, 0xFB, 0x41, 0x9C, 0x70, 0x02, 0xA3, 0xE0,
-    0xB4, 0xB6, 0xEA, 0x09, 0x3B, 0x4C, 0x1A, 0xC6,
-    0x93, 0x66, 0x45, 0xB6, 0x5D, 0xAC, 0x5A, 0xC1,
-    0x5A, 0x85, 0x28, 0xB7, 0xB9, 0x4C, 0x17, 0x54
-  },
-  {
-    0x96, 0x19, 0x72, 0x06, 0x25, 0xF1, 0x90, 0xB9,
-    0x3A, 0x3F, 0xAD, 0x18, 0x6A, 0xB3, 0x14, 0x18,
-    0x96, 0x33, 0xC0, 0xD3, 0xA0, 0x1E, 0x6F, 0x9B,
-    0xC8, 0xC4, 0xA8, 0xF8, 0x2F, 0x38, 0x3D, 0xBF
-  },
-  {
-    0x7D, 0x62, 0x0D, 0x90, 0xFE, 0x69, 0xFA, 0x46,
-    0x9A, 0x65, 0x38, 0x38, 0x89, 0x70, 0xA1, 0xAA,
-    0x09, 0xBB, 0x48, 0xA2, 0xD5, 0x9B, 0x34, 0x7B,
-    0x97, 0xE8, 0xCE, 0x71, 0xF4, 0x8C, 0x7F, 0x46
-  },
-  {
-    0x29, 0x43, 0x83, 0x56, 0x85, 0x96, 0xFB, 0x37,
-    0xC7, 0x5B, 0xBA, 0xCD, 0x97, 0x9C, 0x5F, 0xF6,
-    0xF2, 0x0A, 0x55, 0x6B, 0xF8, 0x87, 0x9C, 0xC7,
-    0x29, 0x24, 0x85, 0x5D, 0xF9, 0xB8, 0x24, 0x0E
-  },
-  {
-    0x16, 0xB1, 0x8A, 0xB3, 0x14, 0x35, 0x9C, 0x2B,
-    0x83, 0x3C, 0x1C, 0x69, 0x86, 0xD4, 0x8C, 0x55,
-    0xA9, 0xFC, 0x97, 0xCD, 0xE9, 0xA3, 0xC1, 0xF1,
-    0x0A, 0x31, 0x77, 0x14, 0x0F, 0x73, 0xF7, 0x38
-  },
-  {
-    0x8C, 0xBB, 0xDD, 0x14, 0xBC, 0x33, 0xF0, 0x4C,
-    0xF4, 0x58, 0x13, 0xE4, 0xA1, 0x53, 0xA2, 0x73,
-    0xD3, 0x6A, 0xDA, 0xD5, 0xCE, 0x71, 0xF4, 0x99,
-    0xEE, 0xB8, 0x7F, 0xB8, 0xAC, 0x63, 0xB7, 0x29
-  },
-  {
-    0x69, 0xC9, 0xA4, 0x98, 0xDB, 0x17, 0x4E, 0xCA,
-    0xEF, 0xCC, 0x5A, 0x3A, 0xC9, 0xFD, 0xED, 0xF0,
-    0xF8, 0x13, 0xA5, 0xBE, 0xC7, 0x27, 0xF1, 0xE7,
-    0x75, 0xBA, 0xBD, 0xEC, 0x77, 0x18, 0x81, 0x6E
-  },
-  {
-    0xB4, 0x62, 0xC3, 0xBE, 0x40, 0x44, 0x8F, 0x1D,
-    0x4F, 0x80, 0x62, 0x62, 0x54, 0xE5, 0x35, 0xB0,
-    0x8B, 0xC9, 0xCD, 0xCF, 0xF5, 0x99, 0xA7, 0x68,
-    0x57, 0x8D, 0x4B, 0x28, 0x81, 0xA8, 0xE3, 0xF0
-  },
-  {
-    0x55, 0x3E, 0x9D, 0x9C, 0x5F, 0x36, 0x0A, 0xC0,
-    0xB7, 0x4A, 0x7D, 0x44, 0xE5, 0xA3, 0x91, 0xDA,
-    0xD4, 0xCE, 0xD0, 0x3E, 0x0C, 0x24, 0x18, 0x3B,
-    0x7E, 0x8E, 0xCA, 0xBD, 0xF1, 0x71, 0x5A, 0x64
-  },
-  {
-    0x7A, 0x7C, 0x55, 0xA5, 0x6F, 0xA9, 0xAE, 0x51,
-    0xE6, 0x55, 0xE0, 0x19, 0x75, 0xD8, 0xA6, 0xFF,
-    0x4A, 0xE9, 0xE4, 0xB4, 0x86, 0xFC, 0xBE, 0x4E,
-    0xAC, 0x04, 0x45, 0x88, 0xF2, 0x45, 0xEB, 0xEA
-  },
-  {
-    0x2A, 0xFD, 0xF3, 0xC8, 0x2A, 0xBC, 0x48, 0x67,
-    0xF5, 0xDE, 0x11, 0x12, 0x86, 0xC2, 0xB3, 0xBE,
-    0x7D, 0x6E, 0x48, 0x65, 0x7B, 0xA9, 0x23, 0xCF,
-    0xBF, 0x10, 0x1A, 0x6D, 0xFC, 0xF9, 0xDB, 0x9A
-  },
-  {
-    0x41, 0x03, 0x7D, 0x2E, 0xDC, 0xDC, 0xE0, 0xC4,
-    0x9B, 0x7F, 0xB4, 0xA6, 0xAA, 0x09, 0x99, 0xCA,
-    0x66, 0x97, 0x6C, 0x74, 0x83, 0xAF, 0xE6, 0x31,
-    0xD4, 0xED, 0xA2, 0x83, 0x14, 0x4F, 0x6D, 0xFC
-  },
-  {
-    0xC4, 0x46, 0x6F, 0x84, 0x97, 0xCA, 0x2E, 0xEB,
-    0x45, 0x83, 0xA0, 0xB0, 0x8E, 0x9D, 0x9A, 0xC7,
-    0x43, 0x95, 0x70, 0x9F, 0xDA, 0x10, 0x9D, 0x24,
-    0xF2, 0xE4, 0x46, 0x21, 0x96, 0x77, 0x9C, 0x5D
-  },
-  {
-    0x75, 0xF6, 0x09, 0x33, 0x8A, 0xA6, 0x7D, 0x96,
-    0x9A, 0x2A, 0xE2, 0xA2, 0x36, 0x2B, 0x2D, 0xA9,
-    0xD7, 0x7C, 0x69, 0x5D, 0xFD, 0x1D, 0xF7, 0x22,
-    0x4A, 0x69, 0x01, 0xDB, 0x93, 0x2C, 0x33, 0x64
-  },
-  {
-    0x68, 0x60, 0x6C, 0xEB, 0x98, 0x9D, 0x54, 0x88,
-    0xFC, 0x7C, 0xF6, 0x49, 0xF3, 0xD7, 0xC2, 0x72,
-    0xEF, 0x05, 0x5D, 0xA1, 0xA9, 0x3F, 0xAE, 0xCD,
-    0x55, 0xFE, 0x06, 0xF6, 0x96, 0x70, 0x98, 0xCA
-  },
-  {
-    0x44, 0x34, 0x6B, 0xDE, 0xB7, 0xE0, 0x52, 0xF6,
-    0x25, 0x50, 0x48, 0xF0, 0xD9, 0xB4, 0x2C, 0x42,
-    0x5B, 0xAB, 0x9C, 0x3D, 0xD2, 0x41, 0x68, 0x21,
-    0x2C, 0x3E, 0xCF, 0x1E, 0xBF, 0x34, 0xE6, 0xAE
-  },
-  {
-    0x8E, 0x9C, 0xF6, 0xE1, 0xF3, 0x66, 0x47, 0x1F,
-    0x2A, 0xC7, 0xD2, 0xEE, 0x9B, 0x5E, 0x62, 0x66,
-    0xFD, 0xA7, 0x1F, 0x8F, 0x2E, 0x41, 0x09, 0xF2,
-    0x23, 0x7E, 0xD5, 0xF8, 0x81, 0x3F, 0xC7, 0x18
-  },
-  {
-    0x84, 0xBB, 0xEB, 0x84, 0x06, 0xD2, 0x50, 0x95,
-    0x1F, 0x8C, 0x1B, 0x3E, 0x86, 0xA7, 0xC0, 0x10,
-    0x08, 0x29, 0x21, 0x83, 0x3D, 0xFD, 0x95, 0x55,
-    0xA2, 0xF9, 0x09, 0xB1, 0x08, 0x6E, 0xB4, 0xB8
-  },
-  {
-    0xEE, 0x66, 0x6F, 0x3E, 0xEF, 0x0F, 0x7E, 0x2A,
-    0x9C, 0x22, 0x29, 0x58, 0xC9, 0x7E, 0xAF, 0x35,
-    0xF5, 0x1C, 0xED, 0x39, 0x3D, 0x71, 0x44, 0x85,
-    0xAB, 0x09, 0xA0, 0x69, 0x34, 0x0F, 0xDF, 0x88
-  },
-  {
-    0xC1, 0x53, 0xD3, 0x4A, 0x65, 0xC4, 0x7B, 0x4A,
-    0x62, 0xC5, 0xCA, 0xCF, 0x24, 0x01, 0x09, 0x75,
-    0xD0, 0x35, 0x6B, 0x2F, 0x32, 0xC8, 0xF5, 0xDA,
-    0x53, 0x0D, 0x33, 0x88, 0x16, 0xAD, 0x5D, 0xE6
-  },
-  {
-    0x9F, 0xC5, 0x45, 0x01, 0x09, 0xE1, 0xB7, 0x79,
-    0xF6, 0xC7, 0xAE, 0x79, 0xD5, 0x6C, 0x27, 0x63,
-    0x5C, 0x8D, 0xD4, 0x26, 0xC5, 0xA9, 0xD5, 0x4E,
-    0x25, 0x78, 0xDB, 0x98, 0x9B, 0x8C, 0x3B, 0x4E
-  },
-  {
-    0xD1, 0x2B, 0xF3, 0x73, 0x2E, 0xF4, 0xAF, 0x5C,
-    0x22, 0xFA, 0x90, 0x35, 0x6A, 0xF8, 0xFC, 0x50,
-    0xFC, 0xB4, 0x0F, 0x8F, 0x2E, 0xA5, 0xC8, 0x59,
-    0x47, 0x37, 0xA3, 0xB3, 0xD5, 0xAB, 0xDB, 0xD7
-  },
-  {
-    0x11, 0x03, 0x0B, 0x92, 0x89, 0xBB, 0xA5, 0xAF,
-    0x65, 0x26, 0x06, 0x72, 0xAB, 0x6F, 0xEE, 0x88,
-    0xB8, 0x74, 0x20, 0xAC, 0xEF, 0x4A, 0x17, 0x89,
-    0xA2, 0x07, 0x3B, 0x7E, 0xC2, 0xF2, 0xA0, 0x9E
-  },
-  {
-    0x69, 0xCB, 0x19, 0x2B, 0x84, 0x44, 0x00, 0x5C,
-    0x8C, 0x0C, 0xEB, 0x12, 0xC8, 0x46, 0x86, 0x07,
-    0x68, 0x18, 0x8C, 0xDA, 0x0A, 0xEC, 0x27, 0xA9,
-    0xC8, 0xA5, 0x5C, 0xDE, 0xE2, 0x12, 0x36, 0x32
-  },
-  {
-    0xDB, 0x44, 0x4C, 0x15, 0x59, 0x7B, 0x5F, 0x1A,
-    0x03, 0xD1, 0xF9, 0xED, 0xD1, 0x6E, 0x4A, 0x9F,
-    0x43, 0xA6, 0x67, 0xCC, 0x27, 0x51, 0x75, 0xDF,
-    0xA2, 0xB7, 0x04, 0xE3, 0xBB, 0x1A, 0x9B, 0x83
-  },
-  {
-    0x3F, 0xB7, 0x35, 0x06, 0x1A, 0xBC, 0x51, 0x9D,
-    0xFE, 0x97, 0x9E, 0x54, 0xC1, 0xEE, 0x5B, 0xFA,
-    0xD0, 0xA9, 0xD8, 0x58, 0xB3, 0x31, 0x5B, 0xAD,
-    0x34, 0xBD, 0xE9, 0x99, 0xEF, 0xD7, 0x24, 0xDD
-  },
-};
-
-
-
-
-static const uint8_t blake2b_kat[KAT_LENGTH][BLAKE2B_OUTBYTES] =
-{
-  {
-    0x78, 0x6A, 0x02, 0xF7, 0x42, 0x01, 0x59, 0x03,
-    0xC6, 0xC6, 0xFD, 0x85, 0x25, 0x52, 0xD2, 0x72,
-    0x91, 0x2F, 0x47, 0x40, 0xE1, 0x58, 0x47, 0x61,
-    0x8A, 0x86, 0xE2, 0x17, 0xF7, 0x1F, 0x54, 0x19,
-    0xD2, 0x5E, 0x10, 0x31, 0xAF, 0xEE, 0x58, 0x53,
-    0x13, 0x89, 0x64, 0x44, 0x93, 0x4E, 0xB0, 0x4B,
-    0x90, 0x3A, 0x68, 0x5B, 0x14, 0x48, 0xB7, 0x55,
-    0xD5, 0x6F, 0x70, 0x1A, 0xFE, 0x9B, 0xE2, 0xCE
-  },
-  {
-    0x2F, 0xA3, 0xF6, 0x86, 0xDF, 0x87, 0x69, 0x95,
-    0x16, 0x7E, 0x7C, 0x2E, 0x5D, 0x74, 0xC4, 0xC7,
-    0xB6, 0xE4, 0x8F, 0x80, 0x68, 0xFE, 0x0E, 0x44,
-    0x20, 0x83, 0x44, 0xD4, 0x80, 0xF7, 0x90, 0x4C,
-    0x36, 0x96, 0x3E, 0x44, 0x11, 0x5F, 0xE3, 0xEB,
-    0x2A, 0x3A, 0xC8, 0x69, 0x4C, 0x28, 0xBC, 0xB4,
-    0xF5, 0xA0, 0xF3, 0x27, 0x6F, 0x2E, 0x79, 0x48,
-    0x7D, 0x82, 0x19, 0x05, 0x7A, 0x50, 0x6E, 0x4B
-  },
-  {
-    0x1C, 0x08, 0x79, 0x8D, 0xC6, 0x41, 0xAB, 0xA9,
-    0xDE, 0xE4, 0x35, 0xE2, 0x25, 0x19, 0xA4, 0x72,
-    0x9A, 0x09, 0xB2, 0xBF, 0xE0, 0xFF, 0x00, 0xEF,
-    0x2D, 0xCD, 0x8E, 0xD6, 0xF8, 0xA0, 0x7D, 0x15,
-    0xEA, 0xF4, 0xAE, 0xE5, 0x2B, 0xBF, 0x18, 0xAB,
-    0x56, 0x08, 0xA6, 0x19, 0x0F, 0x70, 0xB9, 0x04,
-    0x86, 0xC8, 0xA7, 0xD4, 0x87, 0x37, 0x10, 0xB1,
-    0x11, 0x5D, 0x3D, 0xEB, 0xBB, 0x43, 0x27, 0xB5
-  },
-  {
-    0x40, 0xA3, 0x74, 0x72, 0x73, 0x02, 0xD9, 0xA4,
-    0x76, 0x9C, 0x17, 0xB5, 0xF4, 0x09, 0xFF, 0x32,
-    0xF5, 0x8A, 0xA2, 0x4F, 0xF1, 0x22, 0xD7, 0x60,
-    0x3E, 0x4F, 0xDA, 0x15, 0x09, 0xE9, 0x19, 0xD4,
-    0x10, 0x7A, 0x52, 0xC5, 0x75, 0x70, 0xA6, 0xD9,
-    0x4E, 0x50, 0x96, 0x7A, 0xEA, 0x57, 0x3B, 0x11,
-    0xF8, 0x6F, 0x47, 0x3F, 0x53, 0x75, 0x65, 0xC6,
-    0x6F, 0x70, 0x39, 0x83, 0x0A, 0x85, 0xD1, 0x86
-  },
-  {
-    0x77, 0xDD, 0xF4, 0xB1, 0x44, 0x25, 0xEB, 0x3D,
-    0x05, 0x3C, 0x1E, 0x84, 0xE3, 0x46, 0x9D, 0x92,
-    0xC4, 0xCD, 0x91, 0x0E, 0xD2, 0x0F, 0x92, 0x03,
-    0x5E, 0x0C, 0x99, 0xD8, 0xA7, 0xA8, 0x6C, 0xEC,
-    0xAF, 0x69, 0xF9, 0x66, 0x3C, 0x20, 0xA7, 0xAA,
-    0x23, 0x0B, 0xC8, 0x2F, 0x60, 0xD2, 0x2F, 0xB4,
-    0xA0, 0x0B, 0x09, 0xD3, 0xEB, 0x8F, 0xC6, 0x5E,
-    0xF5, 0x47, 0xFE, 0x63, 0xC8, 0xD3, 0xDD, 0xCE
-  },
-  {
-    0xCB, 0xAA, 0x0B, 0xA7, 0xD4, 0x82, 0xB1, 0xF3,
-    0x01, 0x10, 0x9A, 0xE4, 0x10, 0x51, 0x99, 0x1A,
-    0x32, 0x89, 0xBC, 0x11, 0x98, 0x00, 0x5A, 0xF2,
-    0x26, 0xC5, 0xE4, 0xF1, 0x03, 0xB6, 0x65, 0x79,
-    0xF4, 0x61, 0x36, 0x10, 0x44, 0xC8, 0xBA, 0x34,
-    0x39, 0xFF, 0x12, 0xC5, 0x15, 0xFB, 0x29, 0xC5,
-    0x21, 0x61, 0xB7, 0xEB, 0x9C, 0x28, 0x37, 0xB7,
-    0x6A, 0x5D, 0xC3, 0x3F, 0x7C, 0xB2, 0xE2, 0xE8
-  },
-  {
-    0xF9, 0x5D, 0x45, 0xCF, 0x69, 0xAF, 0x5C, 0x20,
-    0x23, 0xBD, 0xB5, 0x05, 0x82, 0x1E, 0x62, 0xE8,
-    0x5D, 0x7C, 0xAE, 0xDF, 0x7B, 0xED, 0xA1, 0x2C,
-    0x02, 0x48, 0x77, 0x5B, 0x0C, 0x88, 0x20, 0x5E,
-    0xEB, 0x35, 0xAF, 0x3A, 0x90, 0x81, 0x6F, 0x66,
-    0x08, 0xCE, 0x7D, 0xD4, 0x4E, 0xC2, 0x8D, 0xB1,
-    0x14, 0x06, 0x14, 0xE1, 0xDD, 0xEB, 0xF3, 0xAA,
-    0x9C, 0xD1, 0x84, 0x3E, 0x0F, 0xAD, 0x2C, 0x36
-  },
-  {
-    0x8F, 0x94, 0x5B, 0xA7, 0x00, 0xF2, 0x53, 0x0E,
-    0x5C, 0x2A, 0x7D, 0xF7, 0xD5, 0xDC, 0xE0, 0xF8,
-    0x3F, 0x9E, 0xFC, 0x78, 0xC0, 0x73, 0xFE, 0x71,
-    0xAE, 0x1F, 0x88, 0x20, 0x4A, 0x4F, 0xD1, 0xCF,
-    0x70, 0xA0, 0x73, 0xF5, 0xD1, 0xF9, 0x42, 0xED,
-    0x62, 0x3A, 0xA1, 0x6E, 0x90, 0xA8, 0x71, 0x24,
-    0x6C, 0x90, 0xC4, 0x5B, 0x62, 0x1B, 0x34, 0x01,
-    0xA5, 0xDD, 0xBD, 0x9D, 0xF6, 0x26, 0x41, 0x65
-  },
-  {
-    0xE9, 0x98, 0xE0, 0xDC, 0x03, 0xEC, 0x30, 0xEB,
-    0x99, 0xBB, 0x6B, 0xFA, 0xAF, 0x66, 0x18, 0xAC,
-    0xC6, 0x20, 0x32, 0x0D, 0x72, 0x20, 0xB3, 0xAF,
-    0x2B, 0x23, 0xD1, 0x12, 0xD8, 0xE9, 0xCB, 0x12,
-    0x62, 0xF3, 0xC0, 0xD6, 0x0D, 0x18, 0x3B, 0x1E,
-    0xE7, 0xF0, 0x96, 0xD1, 0x2D, 0xAE, 0x42, 0xC9,
-    0x58, 0x41, 0x86, 0x00, 0x21, 0x4D, 0x04, 0xF5,
-    0xED, 0x6F, 0x5E, 0x71, 0x8B, 0xE3, 0x55, 0x66
-  },
-  {
-    0x6A, 0x9A, 0x09, 0x0C, 0x61, 0xB3, 0x41, 0x0A,
-    0xED, 0xE7, 0xEC, 0x91, 0x38, 0x14, 0x6C, 0xEB,
-    0x2C, 0x69, 0x66, 0x2F, 0x46, 0x0C, 0x3D, 0xA5,
-    0x3C, 0x65, 0x15, 0xC1, 0xEB, 0x31, 0xF4, 0x1C,
-    0xA3, 0xD2, 0x80, 0xE5, 0x67, 0x88, 0x2F, 0x95,
-    0xCF, 0x66, 0x4A, 0x94, 0x14, 0x7D, 0x78, 0xF4,
-    0x2C, 0xFC, 0x71, 0x4A, 0x40, 0xD2, 0x2E, 0xF1,
-    0x94, 0x70, 0xE0, 0x53, 0x49, 0x35, 0x08, 0xA2
-  },
-  {
-    0x29, 0x10, 0x25, 0x11, 0xD7, 0x49, 0xDB, 0x3C,
-    0xC9, 0xB4, 0xE3, 0x35, 0xFA, 0x1F, 0x5E, 0x8F,
-    0xAC, 0xA8, 0x42, 0x1D, 0x55, 0x8F, 0x6A, 0x3F,
-    0x33, 0x21, 0xD5, 0x0D, 0x04, 0x4A, 0x24, 0x8B,
-    0xA5, 0x95, 0xCF, 0xC3, 0xEF, 0xD3, 0xD2, 0xAD,
-    0xC9, 0x73, 0x34, 0xDA, 0x73, 0x24, 0x13, 0xF5,
-    0xCB, 0xF4, 0x75, 0x1C, 0x36, 0x2B, 0xA1, 0xD5,
-    0x38, 0x62, 0xAC, 0x1E, 0x8D, 0xAB, 0xEE, 0xE8
-  },
-  {
-    0xC9, 0x7A, 0x47, 0x79, 0xD4, 0x7E, 0x6F, 0x77,
-    0x72, 0x9B, 0x59, 0x17, 0xD0, 0x13, 0x8A, 0xBB,
-    0x35, 0x98, 0x0A, 0xB6, 0x41, 0xBD, 0x73, 0xA8,
-    0x85, 0x9E, 0xB1, 0xAC, 0x98, 0xC0, 0x53, 0x62,
-    0xED, 0x7D, 0x60, 0x8F, 0x2E, 0x95, 0x87, 0xD6,
-    0xBA, 0x9E, 0x27, 0x1D, 0x34, 0x31, 0x25, 0xD4,
-    0x0D, 0x93, 0x3A, 0x8E, 0xD0, 0x4E, 0xC1, 0xFE,
-    0x75, 0xEC, 0x40, 0x7C, 0x7A, 0x53, 0xC3, 0x4E
-  },
-  {
-    0x10, 0xF0, 0xDC, 0x91, 0xB9, 0xF8, 0x45, 0xFB,
-    0x95, 0xFA, 0xD6, 0x86, 0x0E, 0x6C, 0xE1, 0xAD,
-    0xFA, 0x00, 0x2C, 0x7F, 0xC3, 0x27, 0x11, 0x6D,
-    0x44, 0xD0, 0x47, 0xCD, 0x7D, 0x58, 0x70, 0xD7,
-    0x72, 0xBB, 0x12, 0xB5, 0xFA, 0xC0, 0x0E, 0x02,
-    0xB0, 0x8A, 0xC2, 0xA0, 0x17, 0x4D, 0x04, 0x46,
-    0xC3, 0x6A, 0xB3, 0x5F, 0x14, 0xCA, 0x31, 0x89,
-    0x4C, 0xD6, 0x1C, 0x78, 0xC8, 0x49, 0xB4, 0x8A
-  },
-  {
-    0xDE, 0xA9, 0x10, 0x1C, 0xAC, 0x62, 0xB8, 0xF6,
-    0xA3, 0xC6, 0x50, 0xF9, 0x0E, 0xEA, 0x5B, 0xFA,
-    0xE2, 0x65, 0x3A, 0x4E, 0xAF, 0xD6, 0x3A, 0x6D,
-    0x1F, 0x0F, 0x13, 0x2D, 0xB9, 0xE4, 0xF2, 0xB1,
-    0xB6, 0x62, 0x43, 0x2E, 0xC8, 0x5B, 0x17, 0xBC,
-    0xAC, 0x41, 0xE7, 0x75, 0x63, 0x78, 0x81, 0xF6,
-    0xAA, 0xB3, 0x8D, 0xD6, 0x6D, 0xCB, 0xD0, 0x80,
-    0xF0, 0x99, 0x0A, 0x7A, 0x6E, 0x98, 0x54, 0xFE
-  },
-  {
-    0x44, 0x1F, 0xFA, 0xA0, 0x8C, 0xD7, 0x9D, 0xFF,
-    0x4A, 0xFC, 0x9B, 0x9E, 0x5B, 0x56, 0x20, 0xEE,
-    0xC0, 0x86, 0x73, 0x0C, 0x25, 0xF6, 0x61, 0xB1,
-    0xD6, 0xFB, 0xFB, 0xD1, 0xCE, 0xC3, 0x14, 0x8D,
-    0xD7, 0x22, 0x58, 0xC6, 0x56, 0x41, 0xF2, 0xFC,
-    0xA5, 0xEB, 0x15, 0x5F, 0xAD, 0xBC, 0xAB, 0xB1,
-    0x3C, 0x6E, 0x21, 0xDC, 0x11, 0xFA, 0xF7, 0x2C,
-    0x2A, 0x28, 0x1B, 0x7D, 0x56, 0x14, 0x5F, 0x19
-  },
-  {
-    0x44, 0x4B, 0x24, 0x0F, 0xE3, 0xED, 0x86, 0xD0,
-    0xE2, 0xEF, 0x4C, 0xE7, 0xD8, 0x51, 0xED, 0xDE,
-    0x22, 0x15, 0x55, 0x82, 0xAA, 0x09, 0x14, 0x79,
-    0x7B, 0x72, 0x6C, 0xD0, 0x58, 0xB6, 0xF4, 0x59,
-    0x32, 0xE0, 0xE1, 0x29, 0x51, 0x68, 0x76, 0x52,
-    0x7B, 0x1D, 0xD8, 0x8F, 0xC6, 0x6D, 0x71, 0x19,
-    0xF4, 0xAB, 0x3B, 0xED, 0x93, 0xA6, 0x1A, 0x0E,
-    0x2D, 0x2D, 0x2A, 0xEA, 0xC3, 0x36, 0xD9, 0x58
-  },
-  {
-    0xBF, 0xBA, 0xBB, 0xEF, 0x45, 0x55, 0x4C, 0xCF,
-    0xA0, 0xDC, 0x83, 0x75, 0x2A, 0x19, 0xCC, 0x35,
-    0xD5, 0x92, 0x09, 0x56, 0xB3, 0x01, 0xD5, 0x58,
-    0xD7, 0x72, 0x28, 0x2B, 0xC8, 0x67, 0x00, 0x91,
-    0x68, 0xE9, 0xE9, 0x86, 0x06, 0xBB, 0x5B, 0xA7,
-    0x3A, 0x38, 0x5D, 0xE5, 0x74, 0x92, 0x28, 0xC9,
-    0x25, 0xA8, 0x50, 0x19, 0xB7, 0x1F, 0x72, 0xFE,
-    0x29, 0xB3, 0xCD, 0x37, 0xCA, 0x52, 0xEF, 0xE6
-  },
-  {
-    0x9C, 0x4D, 0x0C, 0x3E, 0x1C, 0xDB, 0xBF, 0x48,
-    0x5B, 0xEC, 0x86, 0xF4, 0x1C, 0xEC, 0x7C, 0x98,
-    0x37, 0x3F, 0x0E, 0x09, 0xF3, 0x92, 0x84, 0x9A,
-    0xAA, 0x22, 0x9E, 0xBF, 0xBF, 0x39, 0x7B, 0x22,
-    0x08, 0x55, 0x29, 0xCB, 0x7E, 0xF3, 0x9F, 0x9C,
-    0x7C, 0x22, 0x22, 0xA5, 0x14, 0x18, 0x2B, 0x1E,
-    0xFF, 0xAA, 0x17, 0x8C, 0xC3, 0x68, 0x7B, 0x1B,
-    0x2B, 0x6C, 0xBC, 0xB6, 0xFD, 0xEB, 0x96, 0xF8
-  },
-  {
-    0x47, 0x71, 0x76, 0xB3, 0xBF, 0xCB, 0xAD, 0xD7,
-    0x65, 0x7C, 0x23, 0xC2, 0x46, 0x25, 0xE4, 0xD0,
-    0xD6, 0x74, 0xD1, 0x86, 0x8F, 0x00, 0x60, 0x06,
-    0x39, 0x8A, 0xF9, 0x7A, 0xA4, 0x18, 0x77, 0xC8,
-    0xE7, 0x0D, 0x3D, 0x14, 0xC3, 0xBB, 0xC9, 0xBB,
-    0xCD, 0xCE, 0xA8, 0x01, 0xBD, 0x0E, 0x15, 0x99,
-    0xAF, 0x1F, 0x3E, 0xEC, 0x67, 0x40, 0x51, 0x70,
-    0xF4, 0xE2, 0x6C, 0x96, 0x4A, 0x57, 0xA8, 0xB7
-  },
-  {
-    0xA7, 0x8C, 0x49, 0x0E, 0xDA, 0x31, 0x73, 0xBB,
-    0x3F, 0x10, 0xDE, 0xE5, 0x2F, 0x11, 0x0F, 0xB1,
-    0xC0, 0x8E, 0x03, 0x02, 0x23, 0x0B, 0x85, 0xDD,
-    0xD7, 0xC1, 0x12, 0x57, 0xD9, 0x2D, 0xE1, 0x48,
-    0x78, 0x5E, 0xF0, 0x0C, 0x03, 0x9C, 0x0B, 0xB8,
-    0xEB, 0x98, 0x08, 0xA3, 0x5B, 0x2D, 0x8C, 0x08,
-    0x0F, 0x57, 0x28, 0x59, 0x71, 0x4C, 0x9D, 0x40,
-    0x69, 0xC5, 0xBC, 0xAF, 0x09, 0x0E, 0x89, 0x8E
-  },
-  {
-    0x58, 0xD0, 0x23, 0x39, 0x7B, 0xEB, 0x5B, 0x41,
-    0x45, 0xCB, 0x22, 0x55, 0xB0, 0x7D, 0x74, 0x29,
-    0x0B, 0x36, 0xD9, 0xFD, 0x1E, 0x59, 0x4A, 0xFB,
-    0xD8, 0xEE, 0xA4, 0x7C, 0x20, 0x5B, 0x2E, 0xFB,
-    0xFE, 0x6F, 0x46, 0x19, 0x0F, 0xAF, 0x95, 0xAF,
-    0x50, 0x4A, 0xB0, 0x72, 0xE3, 0x6F, 0x6C, 0x85,
-    0xD7, 0x67, 0xA3, 0x21, 0xBF, 0xD7, 0xF2, 0x26,
-    0x87, 0xA4, 0xAB, 0xBF, 0x49, 0x4A, 0x68, 0x9C
-  },
-  {
-    0x40, 0x01, 0xEC, 0x74, 0xD5, 0xA4, 0x6F, 0xD2,
-    0x9C, 0x2C, 0x3C, 0xDB, 0xE5, 0xD1, 0xB9, 0xF2,
-    0x0E, 0x51, 0xA9, 0x41, 0xBE, 0x98, 0xD2, 0xA4,
-    0xE1, 0xE2, 0xFB, 0xF8, 0x66, 0xA6, 0x72, 0x12,
-    0x1D, 0xB6, 0xF8, 0x1A, 0x51, 0x4C, 0xFD, 0x10,
-    0xE7, 0x35, 0x8D, 0x57, 0x1B, 0xDB, 0xA4, 0x8E,
-    0x4C, 0xE7, 0x08, 0xB9, 0xD1, 0x24, 0x89, 0x4B,
-    0xC0, 0xB5, 0xED, 0x55, 0x49, 0x35, 0xF7, 0x3A
-  },
-  {
-    0xCC, 0xD1, 0xB2, 0x2D, 0xAB, 0x65, 0x11, 0x22,
-    0x5D, 0x24, 0x01, 0xEA, 0x2D, 0x86, 0x25, 0xD2,
-    0x06, 0xA1, 0x24, 0x73, 0xCC, 0x73, 0x2B, 0x61,
-    0x5E, 0x56, 0x40, 0xCE, 0xFF, 0xF0, 0xA4, 0xAD,
-    0xF9, 0x71, 0xB0, 0xE8, 0x27, 0xA6, 0x19, 0xE0,
-    0xA8, 0x0F, 0x5D, 0xB9, 0xCC, 0xD0, 0x96, 0x23,
-    0x29, 0x01, 0x0D, 0x07, 0xE3, 0x4A, 0x20, 0x64,
-    0xE7, 0x31, 0xC5, 0x20, 0x81, 0x7B, 0x21, 0x83
-  },
-  {
-    0xB4, 0xA0, 0xA9, 0xE3, 0x57, 0x4E, 0xDB, 0x9E,
-    0x1E, 0x72, 0xAA, 0x31, 0xE3, 0x9C, 0xC5, 0xF3,
-    0x0D, 0xBF, 0x94, 0x3F, 0x8C, 0xAB, 0xC4, 0x08,
-    0x44, 0x96, 0x54, 0xA3, 0x91, 0x31, 0xE6, 0x6D,
-    0x71, 0x8A, 0x18, 0x81, 0x91, 0x43, 0xE3, 0xEA,
-    0x96, 0xB4, 0xA1, 0x89, 0x59, 0x88, 0xA1, 0xC0,
-    0x05, 0x6C, 0xF2, 0xB6, 0xE0, 0x4F, 0x9A, 0xC1,
-    0x9D, 0x65, 0x73, 0x83, 0xC2, 0x91, 0x0C, 0x44
-  },
-  {
-    0x44, 0x7B, 0xEC, 0xAB, 0x16, 0x63, 0x06, 0x08,
-    0xD3, 0x9F, 0x4F, 0x05, 0x8B, 0x16, 0xF7, 0xAF,
-    0x95, 0xB8, 0x5A, 0x76, 0xAA, 0x0F, 0xA7, 0xCE,
-    0xA2, 0xB8, 0x07, 0x55, 0xFB, 0x76, 0xE9, 0xC8,
-    0x04, 0xF2, 0xCA, 0x78, 0xF0, 0x26, 0x43, 0xC9,
-    0x15, 0xFB, 0xF2, 0xFC, 0xE5, 0xE1, 0x9D, 0xE8,
-    0x60, 0x00, 0xDE, 0x03, 0xB1, 0x88, 0x61, 0x81,
-    0x5A, 0x83, 0x12, 0x60, 0x71, 0xF8, 0xA3, 0x7B
-  },
-  {
-    0x54, 0xE6, 0xDA, 0xB9, 0x97, 0x73, 0x80, 0xA5,
-    0x66, 0x58, 0x22, 0xDB, 0x93, 0x37, 0x4E, 0xDA,
-    0x52, 0x8D, 0x9B, 0xEB, 0x62, 0x6F, 0x9B, 0x94,
-    0x02, 0x70, 0x71, 0xCB, 0x26, 0x67, 0x5E, 0x11,
-    0x2B, 0x4A, 0x7F, 0xEC, 0x94, 0x1E, 0xE6, 0x0A,
-    0x81, 0xE4, 0xD2, 0xEA, 0x3F, 0xF7, 0xBC, 0x52,
-    0xCF, 0xC4, 0x5D, 0xFB, 0xFE, 0x73, 0x5A, 0x1C,
-    0x64, 0x6B, 0x2C, 0xF6, 0xD6, 0xA4, 0x9B, 0x62
-  },
-  {
-    0x3E, 0xA6, 0x26, 0x25, 0x94, 0x9E, 0x36, 0x46,
-    0x70, 0x4D, 0x7E, 0x3C, 0x90, 0x6F, 0x82, 0xF6,
-    0xC0, 0x28, 0xF5, 0x40, 0xF5, 0xF7, 0x2A, 0x79,
-    0x4B, 0x0C, 0x57, 0xBF, 0x97, 0xB7, 0x64, 0x9B,
-    0xFE, 0xB9, 0x0B, 0x01, 0xD3, 0xCA, 0x3E, 0x82,
-    0x9D, 0xE2, 0x1B, 0x38, 0x26, 0xE6, 0xF8, 0x70,
-    0x14, 0xD3, 0xC7, 0x73, 0x50, 0xCB, 0x5A, 0x15,
-    0xFF, 0x5D, 0x46, 0x8A, 0x81, 0xBE, 0xC1, 0x60
-  },
-  {
-    0x21, 0x3C, 0xFE, 0x14, 0x5C, 0x54, 0xA3, 0x36,
-    0x91, 0x56, 0x99, 0x80, 0xE5, 0x93, 0x8C, 0x88,
-    0x83, 0xA4, 0x6D, 0x84, 0xD1, 0x49, 0xC8, 0xFF,
-    0x1A, 0x67, 0xCD, 0x28, 0x7B, 0x4D, 0x49, 0xC6,
-    0xDA, 0x69, 0xD3, 0xA0, 0x35, 0x44, 0x3D, 0xB0,
-    0x85, 0x98, 0x3D, 0x0E, 0xFE, 0x63, 0x70, 0x6B,
-    0xD5, 0xB6, 0xF1, 0x5A, 0x7D, 0xA4, 0x59, 0xE8,
-    0xD5, 0x0A, 0x19, 0x09, 0x3D, 0xB5, 0x5E, 0x80
-  },
-  {
-    0x57, 0x16, 0xC4, 0xA3, 0x8F, 0x38, 0xDB, 0x10,
-    0x4E, 0x49, 0x4A, 0x0A, 0x27, 0xCB, 0xE8, 0x9A,
-    0x26, 0xA6, 0xBB, 0x6F, 0x49, 0x9E, 0xC0, 0x1C,
-    0x8C, 0x01, 0xAA, 0x7C, 0xB8, 0x84, 0x97, 0xE7,
-    0x51, 0x48, 0xCD, 0x6E, 0xEE, 0x12, 0xA7, 0x16,
-    0x8B, 0x6F, 0x78, 0xAB, 0x74, 0xE4, 0xBE, 0x74,
-    0x92, 0x51, 0xA1, 0xA7, 0x4C, 0x38, 0xC8, 0x6D,
-    0x61, 0x29, 0x17, 0x7E, 0x28, 0x89, 0xE0, 0xB6
-  },
-  {
-    0x03, 0x04, 0x60, 0xA9, 0x8B, 0xDF, 0x9F, 0xF1,
-    0x7C, 0xD9, 0x64, 0x04, 0xF2, 0x8F, 0xC3, 0x04,
-    0xF2, 0xB7, 0xC0, 0x4E, 0xAA, 0xDE, 0x53, 0x67,
-    0x7F, 0xD2, 0x8F, 0x78, 0x8C, 0xA2, 0x21, 0x86,
-    0xB8, 0xBC, 0x80, 0xDD, 0x21, 0xD1, 0x7F, 0x85,
-    0x49, 0xC7, 0x11, 0xAF, 0xF0, 0xE5, 0x14, 0xE1,
-    0x9D, 0x4E, 0x15, 0xF5, 0x99, 0x02, 0x52, 0xA0,
-    0x3E, 0x08, 0x2F, 0x28, 0xDC, 0x20, 0x52, 0xF6
-  },
-  {
-    0x19, 0xE7, 0xF1, 0xCC, 0xEE, 0x88, 0xA1, 0x06,
-    0x72, 0x33, 0x3E, 0x39, 0x0C, 0xF2, 0x20, 0x13,
-    0xA8, 0xC7, 0x34, 0xC6, 0xCB, 0x9E, 0xAB, 0x41,
-    0xF1, 0x7C, 0x3C, 0x80, 0x32, 0xA2, 0xE4, 0xAC,
-    0xA0, 0x56, 0x9E, 0xA3, 0x6F, 0x08, 0x60, 0xC7,
-    0xA1, 0xAF, 0x28, 0xFA, 0x47, 0x68, 0x40, 0xD6,
-    0x60, 0x11, 0x16, 0x88, 0x59, 0x33, 0x4A, 0x9E,
-    0x4E, 0xF9, 0xCC, 0x2E, 0x61, 0xA0, 0xE2, 0x9E
-  },
-  {
-    0x29, 0xF8, 0xB8, 0xC7, 0x8C, 0x80, 0xF2, 0xFC,
-    0xB4, 0xBD, 0xF7, 0x82, 0x5E, 0xD9, 0x0A, 0x70,
-    0xD6, 0x25, 0xFF, 0x78, 0x5D, 0x26, 0x26, 0x77,
-    0xE2, 0x50, 0xC0, 0x4F, 0x37, 0x20, 0xC8, 0x88,
-    0xD0, 0x3F, 0x80, 0x45, 0xE4, 0xED, 0xF3, 0xF5,
-    0x28, 0x5B, 0xD3, 0x9D, 0x92, 0x8A, 0x10, 0xA7,
-    0xD0, 0xA5, 0xDF, 0x00, 0xB8, 0x48, 0x4A, 0xC2,
-    0x86, 0x81, 0x42, 0xA1, 0xE8, 0xBE, 0xA3, 0x51
-  },
-  {
-    0x5C, 0x52, 0x92, 0x0A, 0x72, 0x63, 0xE3, 0x9D,
-    0x57, 0x92, 0x0C, 0xA0, 0xCB, 0x75, 0x2A, 0xC6,
-    0xD7, 0x9A, 0x04, 0xFE, 0xF8, 0xA7, 0xA2, 0x16,
-    0xA1, 0xEC, 0xB7, 0x11, 0x5C, 0xE0, 0x6D, 0x89,
-    0xFD, 0x7D, 0x73, 0x5B, 0xD6, 0xF4, 0x27, 0x25,
-    0x55, 0xDB, 0xA2, 0x2C, 0x2D, 0x1C, 0x96, 0xE6,
-    0x35, 0x23, 0x22, 0xC6, 0x2C, 0x56, 0x30, 0xFD,
-    0xE0, 0xF4, 0x77, 0x7A, 0x76, 0xC3, 0xDE, 0x2C
-  },
-  {
-    0x83, 0xB0, 0x98, 0xF2, 0x62, 0x25, 0x1B, 0xF6,
-    0x60, 0x06, 0x4A, 0x9D, 0x35, 0x11, 0xCE, 0x76,
-    0x87, 0xA0, 0x9E, 0x6D, 0xFB, 0xB8, 0x78, 0x29,
-    0x9C, 0x30, 0xE9, 0x3D, 0xFB, 0x43, 0xA9, 0x31,
-    0x4D, 0xB9, 0xA6, 0x00, 0x33, 0x7D, 0xB2, 0x6E,
-    0xBE, 0xED, 0xAF, 0x22, 0x56, 0xA9, 0x6D, 0xAB,
-    0xE9, 0xB2, 0x9E, 0x75, 0x73, 0xAD, 0x11, 0xC3,
-    0x52, 0x3D, 0x87, 0x4D, 0xDE, 0x5B, 0xE7, 0xED
-  },
-  {
-    0x94, 0x47, 0xD9, 0x8A, 0xA5, 0xC9, 0x33, 0x13,
-    0x52, 0xF4, 0x3D, 0x3E, 0x56, 0xD0, 0xA9, 0xA9,
-    0xF9, 0x58, 0x18, 0x65, 0x99, 0x8E, 0x28, 0x85,
-    0xCC, 0x56, 0xDD, 0x0A, 0x0B, 0xD5, 0xA7, 0xB5,
-    0x05, 0x95, 0xBD, 0x10, 0xF7, 0x52, 0x9B, 0xCD,
-    0x31, 0xF3, 0x7D, 0xC1, 0x6A, 0x14, 0x65, 0xD5,
-    0x94, 0x07, 0x96, 0x67, 0xDA, 0x2A, 0x3F, 0xCB,
-    0x70, 0x40, 0x14, 0x98, 0x83, 0x7C, 0xED, 0xEB
-  },
-  {
-    0x86, 0x77, 0x32, 0xF2, 0xFE, 0xEB, 0x23, 0x89,
-    0x30, 0x97, 0x56, 0x1A, 0xC7, 0x10, 0xA4, 0xBF,
-    0xF4, 0x53, 0xBE, 0x9C, 0xFB, 0xED, 0xBA, 0x8B,
-    0xA3, 0x24, 0xF9, 0xD3, 0x12, 0xA8, 0x2D, 0x73,
-    0x2E, 0x1B, 0x83, 0xB8, 0x29, 0xFD, 0xCD, 0x17,
-    0x7B, 0x88, 0x2C, 0xA0, 0xC1, 0xBF, 0x54, 0x4B,
-    0x22, 0x3B, 0xE5, 0x29, 0x92, 0x4A, 0x24, 0x6A,
-    0x63, 0xCF, 0x05, 0x9B, 0xFD, 0xC5, 0x0A, 0x1B
-  },
-  {
-    0xF1, 0x5A, 0xB2, 0x6D, 0x4C, 0xDF, 0xCF, 0x56,
-    0xE1, 0x96, 0xBB, 0x6B, 0xA1, 0x70, 0xA8, 0xFC,
-    0xCC, 0x41, 0x4D, 0xE9, 0x28, 0x5A, 0xFD, 0x98,
-    0xA3, 0xD3, 0xCF, 0x2F, 0xB8, 0x8F, 0xCB, 0xC0,
-    0xF1, 0x98, 0x32, 0xAC, 0x43, 0x3A, 0x5B, 0x2C,
-    0xC2, 0x39, 0x2A, 0x4C, 0xE3, 0x43, 0x32, 0x98,
-    0x7D, 0x8D, 0x2C, 0x2B, 0xEF, 0x6C, 0x34, 0x66,
-    0x13, 0x8D, 0xB0, 0xC6, 0xE4, 0x2F, 0xA4, 0x7B
-  },
-  {
-    0x28, 0x13, 0x51, 0x6D, 0x68, 0xED, 0x4A, 0x08,
-    0xB3, 0x9D, 0x64, 0x8A, 0xA6, 0xAA, 0xCD, 0x81,
-    0xE9, 0xD6, 0x55, 0xEC, 0xD5, 0xF0, 0xC1, 0x35,
-    0x56, 0xC6, 0x0F, 0xDF, 0x0D, 0x33, 0x3E, 0xA3,
-    0x84, 0x64, 0xB3, 0x6C, 0x02, 0xBA, 0xCC, 0xD7,
-    0x46, 0xE9, 0x57, 0x5E, 0x96, 0xC6, 0x30, 0x14,
-    0xF0, 0x74, 0xAE, 0x34, 0xA0, 0xA2, 0x5B, 0x32,
-    0x0F, 0x0F, 0xBE, 0xDD, 0x6A, 0xCF, 0x76, 0x65
-  },
-  {
-    0xD3, 0x25, 0x9A, 0xFC, 0xA8, 0xA4, 0x89, 0x62,
-    0xFA, 0x89, 0x2E, 0x14, 0x5A, 0xCF, 0x54, 0x7F,
-    0x26, 0x92, 0x3A, 0xE8, 0xD4, 0x92, 0x4C, 0x8A,
-    0x53, 0x15, 0x81, 0x52, 0x6B, 0x04, 0xB4, 0x4C,
-    0x7A, 0xF8, 0x3C, 0x64, 0x3E, 0xF5, 0xA0, 0xBC,
-    0x28, 0x2D, 0x36, 0xF3, 0xFB, 0x04, 0xC8, 0x4E,
-    0x28, 0xB3, 0x51, 0xF4, 0x0C, 0x74, 0xB6, 0x9D,
-    0xC7, 0x84, 0x0B, 0xC7, 0x17, 0xB6, 0xF1, 0x5F
-  },
-  {
-    0xF1, 0x4B, 0x06, 0x1A, 0xE3, 0x59, 0xFA, 0x31,
-    0xB9, 0x89, 0xE3, 0x03, 0x32, 0xBF, 0xE8, 0xDE,
-    0x8C, 0xC8, 0xCD, 0xB5, 0x68, 0xE1, 0x4B, 0xE2,
-    0x14, 0xA2, 0x22, 0x3B, 0x84, 0xCA, 0xAB, 0x74,
-    0x19, 0x54, 0x9E, 0xCF, 0xCC, 0x96, 0xCE, 0x2A,
-    0xCE, 0xC1, 0x19, 0x48, 0x5D, 0x87, 0xD1, 0x57,
-    0xD3, 0xA8, 0x73, 0x4F, 0xC4, 0x26, 0x59, 0x7D,
-    0x64, 0xF3, 0x65, 0x70, 0xCE, 0xAF, 0x22, 0x4D
-  },
-  {
-    0x55, 0xE7, 0x0B, 0x01, 0xD1, 0xFB, 0xF8, 0xB2,
-    0x3B, 0x57, 0xFB, 0x62, 0xE2, 0x6C, 0x2C, 0xE5,
-    0x4F, 0x13, 0xF8, 0xFA, 0x24, 0x64, 0xE6, 0xEB,
-    0x98, 0xD1, 0x6A, 0x61, 0x17, 0x02, 0x6D, 0x8B,
-    0x90, 0x81, 0x90, 0x12, 0x49, 0x6D, 0x40, 0x71,
-    0xEB, 0xE2, 0xE5, 0x95, 0x57, 0xEC, 0xE3, 0x51,
-    0x9A, 0x7A, 0xA4, 0x58, 0x02, 0xF9, 0x61, 0x53,
-    0x74, 0x87, 0x73, 0x32, 0xB7, 0x34, 0x90, 0xB3
-  },
-  {
-    0x25, 0x26, 0x1E, 0xB2, 0x96, 0x97, 0x1D, 0x6E,
-    0x4A, 0x71, 0xB2, 0x92, 0x8E, 0x64, 0x83, 0x9C,
-    0x67, 0xD4, 0x22, 0x87, 0x2B, 0xF9, 0xF3, 0xC3,
-    0x19, 0x93, 0x61, 0x52, 0x22, 0xDE, 0x9F, 0x8F,
-    0x0B, 0x2C, 0x4B, 0xE8, 0x54, 0x85, 0x59, 0xB4,
-    0xB3, 0x54, 0xE7, 0x36, 0x41, 0x6E, 0x32, 0x18,
-    0xD4, 0xE8, 0xA1, 0xE2, 0x19, 0xA4, 0xA6, 0xD4,
-    0x3E, 0x1A, 0x9A, 0x52, 0x1D, 0x0E, 0x75, 0xFC
-  },
-  {
-    0x08, 0x30, 0x7F, 0x34, 0x7C, 0x41, 0x29, 0x4E,
-    0x34, 0xBB, 0x54, 0xCB, 0x42, 0xB1, 0x52, 0x2D,
-    0x22, 0xF8, 0x24, 0xF7, 0xB6, 0xE5, 0xDB, 0x50,
-    0xFD, 0xA0, 0x96, 0x79, 0x8E, 0x18, 0x1A, 0x8F,
-    0x02, 0x6F, 0xA2, 0x7B, 0x4A, 0xE4, 0x5D, 0x52,
-    0xA6, 0x2C, 0xAF, 0x9D, 0x51, 0x98, 0xE2, 0x4A,
-    0x49, 0x13, 0xC6, 0x67, 0x17, 0x75, 0xB2, 0xD7,
-    0x23, 0xC1, 0x23, 0x9B, 0xFB, 0xF0, 0x16, 0xD7
-  },
-  {
-    0x1E, 0x5C, 0x62, 0xE7, 0xE9, 0xBF, 0xA1, 0xB1,
-    0x18, 0x74, 0x7A, 0x2D, 0xE0, 0x8B, 0x3C, 0xA1,
-    0x01, 0x12, 0xAF, 0x96, 0xA4, 0x6E, 0x4B, 0x22,
-    0xC3, 0xFC, 0x06, 0xF9, 0xBF, 0xEE, 0x4E, 0xB5,
-    0xC4, 0x9E, 0x05, 0x7A, 0x4A, 0x48, 0x86, 0x23,
-    0x43, 0x24, 0x57, 0x25, 0x76, 0xBB, 0x9B, 0x5E,
-    0xCF, 0xDE, 0x0D, 0x99, 0xB0, 0xDE, 0x4F, 0x98,
-    0xEC, 0x16, 0xE4, 0xD1, 0xB8, 0x5F, 0xA9, 0x47
-  },
-  {
-    0xC7, 0x4A, 0x77, 0x39, 0x5F, 0xB8, 0xBC, 0x12,
-    0x64, 0x47, 0x45, 0x48, 0x38, 0xE5, 0x61, 0xE9,
-    0x62, 0x85, 0x3D, 0xC7, 0xEB, 0x49, 0xA1, 0xE3,
-    0xCB, 0x67, 0xC3, 0xD0, 0x85, 0x1F, 0x3E, 0x39,
-    0x51, 0x7B, 0xE8, 0xC3, 0x50, 0xAC, 0x91, 0x09,
-    0x03, 0xD4, 0x9C, 0xD2, 0xBF, 0xDF, 0x54, 0x5C,
-    0x99, 0x31, 0x6D, 0x03, 0x46, 0x17, 0x0B, 0x73,
-    0x9F, 0x0A, 0xDD, 0x5D, 0x53, 0x3C, 0x2C, 0xFC
-  },
-  {
-    0x0D, 0xD5, 0x7B, 0x42, 0x3C, 0xC0, 0x1E, 0xB2,
-    0x86, 0x13, 0x91, 0xEB, 0x88, 0x6A, 0x0D, 0x17,
-    0x07, 0x9B, 0x93, 0x3F, 0xC7, 0x6E, 0xB3, 0xFC,
-    0x08, 0xA1, 0x9F, 0x8A, 0x74, 0x95, 0x2C, 0xB6,
-    0x8F, 0x6B, 0xCD, 0xC6, 0x44, 0xF7, 0x73, 0x70,
-    0x96, 0x6E, 0x4D, 0x13, 0xE8, 0x05, 0x60, 0xBC,
-    0xF0, 0x82, 0xEF, 0x04, 0x79, 0xD4, 0x8F, 0xBB,
-    0xAB, 0x4D, 0xF0, 0x3B, 0x53, 0xA4, 0xE1, 0x78
-  },
-  {
-    0x4D, 0x8D, 0xC3, 0x92, 0x3E, 0xDC, 0xCD, 0xFC,
-    0xE7, 0x00, 0x72, 0x39, 0x8B, 0x8A, 0x3D, 0xA5,
-    0xC3, 0x1F, 0xCB, 0x3E, 0xE3, 0xB6, 0x45, 0xC8,
-    0x5F, 0x71, 0x7C, 0xBA, 0xEB, 0x4B, 0x67, 0x3A,
-    0x19, 0x39, 0x44, 0x25, 0xA5, 0x85, 0xBF, 0xB4,
-    0x64, 0xD9, 0x2F, 0x15, 0x97, 0xD0, 0xB7, 0x54,
-    0xD1, 0x63, 0xF9, 0x7C, 0xED, 0x34, 0x3B, 0x25,
-    0xDB, 0x5A, 0x70, 0xEF, 0x48, 0xEB, 0xB3, 0x4F
-  },
-  {
-    0xF0, 0xA5, 0x05, 0x53, 0xE4, 0xDF, 0xB0, 0xC4,
-    0xE3, 0xE3, 0xD3, 0xBA, 0x82, 0x03, 0x48, 0x57,
-    0xE3, 0xB1, 0xE5, 0x09, 0x18, 0xF5, 0xB8, 0xA7,
-    0xD6, 0x98, 0xE1, 0x0D, 0x24, 0x2B, 0x0F, 0xB5,
-    0x44, 0xAF, 0x6C, 0x92, 0xD0, 0xC3, 0xAA, 0xF9,
-    0x93, 0x22, 0x20, 0x41, 0x61, 0x17, 0xB4, 0xE7,
-    0x8E, 0xCB, 0x8A, 0x8F, 0x43, 0x0E, 0x13, 0xB8,
-    0x2A, 0x59, 0x15, 0x29, 0x0A, 0x58, 0x19, 0xC5
-  },
-  {
-    0xB1, 0x55, 0x43, 0xF3, 0xF7, 0x36, 0x08, 0x66,
-    0x27, 0xCC, 0x53, 0x65, 0xE7, 0xE8, 0x98, 0x8C,
-    0x2E, 0xF1, 0x55, 0xC0, 0xFD, 0x4F, 0x42, 0x89,
-    0x61, 0xB0, 0x0D, 0x15, 0x26, 0xF0, 0x4D, 0x6D,
-    0x6A, 0x65, 0x8B, 0x4B, 0x8E, 0xD3, 0x2C, 0x5D,
-    0x86, 0x21, 0xE7, 0xF4, 0xF8, 0xE8, 0xA9, 0x33,
-    0xD9, 0xEC, 0xC9, 0xDD, 0x1B, 0x83, 0x33, 0xCB,
-    0xE2, 0x8C, 0xFC, 0x37, 0xD9, 0x71, 0x9E, 0x1C
-  },
-  {
-    0x7B, 0x4F, 0xA1, 0x58, 0xE4, 0x15, 0xFE, 0xF0,
-    0x23, 0x24, 0x72, 0x64, 0xCB, 0xBE, 0x15, 0xD1,
-    0x6D, 0x91, 0xA4, 0x44, 0x24, 0xA8, 0xDB, 0x70,
-    0x7E, 0xB1, 0xE2, 0x03, 0x3C, 0x30, 0xE9, 0xE1,
-    0xE7, 0xC8, 0xC0, 0x86, 0x45, 0x95, 0xD2, 0xCB,
-    0x8C, 0x58, 0x0E, 0xB4, 0x7E, 0x9D, 0x16, 0xAB,
-    0xBD, 0x7E, 0x44, 0xE8, 0x24, 0xF7, 0xCE, 0xDB,
-    0x7D, 0xEF, 0x57, 0x13, 0x0E, 0x52, 0xCF, 0xE9
-  },
-  {
-    0x60, 0x42, 0x4F, 0xF2, 0x32, 0x34, 0xC3, 0x4D,
-    0xC9, 0x68, 0x7A, 0xD5, 0x02, 0x86, 0x93, 0x72,
-    0xCC, 0x31, 0xA5, 0x93, 0x80, 0x18, 0x6B, 0xC2,
-    0x36, 0x1C, 0x83, 0x5D, 0x97, 0x2F, 0x49, 0x66,
-    0x6E, 0xB1, 0xAC, 0x69, 0x62, 0x9D, 0xE6, 0x46,
-    0xF0, 0x3F, 0x9B, 0x4D, 0xB9, 0xE2, 0xAC, 0xE0,
-    0x93, 0xFB, 0xFD, 0xF8, 0xF2, 0x0A, 0xB5, 0xF9,
-    0x85, 0x41, 0x97, 0x8B, 0xE8, 0xEF, 0x54, 0x9F
-  },
-  {
-    0x74, 0x06, 0x01, 0x8C, 0xE7, 0x04, 0xD8, 0x4F,
-    0x5E, 0xB9, 0xC7, 0x9F, 0xEA, 0x97, 0xDA, 0x34,
-    0x56, 0x99, 0x46, 0x8A, 0x35, 0x0E, 0xE0, 0xB2,
-    0xD0, 0xF3, 0xA4, 0xBF, 0x20, 0x70, 0x30, 0x4E,
-    0xA8, 0x62, 0xD7, 0x2A, 0x51, 0xC5, 0x7D, 0x30,
-    0x64, 0x94, 0x72, 0x86, 0xF5, 0x31, 0xE0, 0xEA,
-    0xF7, 0x56, 0x37, 0x02, 0x26, 0x2E, 0x6C, 0x72,
-    0x4A, 0xBF, 0x5E, 0xD8, 0xC8, 0x39, 0x8D, 0x17
-  },
-  {
-    0x14, 0xEF, 0x5C, 0x6D, 0x64, 0x7B, 0x3B, 0xD1,
-    0xE6, 0xE3, 0x20, 0x06, 0xC2, 0x31, 0x19, 0x98,
-    0x10, 0xDE, 0x5C, 0x4D, 0xC8, 0x8E, 0x70, 0x24,
-    0x02, 0x73, 0xB0, 0xEA, 0x18, 0xE6, 0x51, 0xA3,
-    0xEB, 0x4F, 0x5C, 0xA3, 0x11, 0x4B, 0x8A, 0x56,
-    0x71, 0x69, 0x69, 0xC7, 0xCD, 0xA2, 0x7E, 0x0C,
-    0x8D, 0xB8, 0x32, 0xAD, 0x5E, 0x89, 0xA2, 0xDC,
-    0x6C, 0xB0, 0xAD, 0xBE, 0x7D, 0x93, 0xAB, 0xD1
-  },
-  {
-    0x38, 0xCF, 0x6C, 0x24, 0xE3, 0xE0, 0x8B, 0xCF,
-    0x1F, 0x6C, 0xF3, 0xD1, 0xB1, 0xF6, 0x5B, 0x90,
-    0x52, 0x39, 0xA3, 0x11, 0x80, 0x33, 0x24, 0x9E,
-    0x44, 0x81, 0x13, 0xEC, 0x63, 0x2E, 0xA6, 0xDC,
-    0x34, 0x6F, 0xEE, 0xB2, 0x57, 0x1C, 0x38, 0xBD,
-    0x9A, 0x73, 0x98, 0xB2, 0x22, 0x12, 0x80, 0x32,
-    0x80, 0x02, 0xB2, 0x3E, 0x1A, 0x45, 0xAD, 0xAF,
-    0xFE, 0x66, 0xD9, 0x3F, 0x65, 0x64, 0xEA, 0xA2
-  },
-  {
-    0x6C, 0xD7, 0x20, 0x8A, 0x4B, 0xC7, 0xE7, 0xE5,
-    0x62, 0x01, 0xBB, 0xBA, 0x02, 0xA0, 0xF4, 0x89,
-    0xCD, 0x38, 0x4A, 0xBE, 0x40, 0xAF, 0xD4, 0x22,
-    0x2F, 0x15, 0x8B, 0x3D, 0x98, 0x6E, 0xE7, 0x2A,
-    0x54, 0xC5, 0x0F, 0xB6, 0x4F, 0xD4, 0xED, 0x25,
-    0x30, 0xED, 0xA2, 0xC8, 0xAF, 0x29, 0x28, 0xA0,
-    0xDA, 0x6D, 0x4F, 0x83, 0x0A, 0xE1, 0xC9, 0xDB,
-    0x46, 0x9D, 0xFD, 0x97, 0x0F, 0x12, 0xA5, 0x6F
-  },
-  {
-    0x65, 0x98, 0x58, 0xF0, 0xB5, 0xC9, 0xED, 0xAB,
-    0x5B, 0x94, 0xFD, 0x73, 0x2F, 0x6E, 0x6B, 0x17,
-    0xC5, 0x1C, 0xC0, 0x96, 0x10, 0x4F, 0x09, 0xBE,
-    0xB3, 0xAF, 0xC3, 0xAA, 0x46, 0x7C, 0x2E, 0xCF,
-    0x88, 0x5C, 0x4C, 0x65, 0x41, 0xEF, 0xFA, 0x90,
-    0x23, 0xD3, 0xB5, 0x73, 0x8A, 0xE5, 0xA1, 0x4D,
-    0x86, 0x7E, 0x15, 0xDB, 0x06, 0xFE, 0x1F, 0x9D,
-    0x11, 0x27, 0xB7, 0x7E, 0x1A, 0xAB, 0xB5, 0x16
-  },
-  {
-    0x26, 0xCC, 0xA0, 0x12, 0x6F, 0x5D, 0x1A, 0x81,
-    0x3C, 0x62, 0xE5, 0xC7, 0x10, 0x01, 0xC0, 0x46,
-    0xF9, 0xC9, 0x20, 0x95, 0x70, 0x45, 0x50, 0xBE,
-    0x58, 0x73, 0xA4, 0x95, 0xA9, 0x99, 0xAD, 0x01,
-    0x0A, 0x4F, 0x79, 0x49, 0x1F, 0x24, 0xF2, 0x86,
-    0x50, 0x0A, 0xDC, 0xE1, 0xA1, 0x37, 0xBC, 0x20,
-    0x84, 0xE4, 0x94, 0x9F, 0x5B, 0x72, 0x94, 0xCE,
-    0xFE, 0x51, 0xEC, 0xAF, 0xF8, 0xE9, 0x5C, 0xBA
-  },
-  {
-    0x41, 0x47, 0xC1, 0xF5, 0x51, 0x72, 0x78, 0x8C,
-    0x55, 0x67, 0xC5, 0x61, 0xFE, 0xEF, 0x87, 0x6F,
-    0x62, 0x1F, 0xFF, 0x1C, 0xE8, 0x77, 0x86, 0xB8,
-    0x46, 0x76, 0x37, 0xE7, 0x0D, 0xFB, 0xCD, 0x0D,
-    0xBD, 0xB6, 0x41, 0x5C, 0xB6, 0x00, 0x95, 0x4A,
-    0xB9, 0xC0, 0x4C, 0x0E, 0x45, 0x7E, 0x62, 0x5B,
-    0x40, 0x72, 0x22, 0xC0, 0xFE, 0x1A, 0xE2, 0x1B,
-    0x21, 0x43, 0x68, 0x8A, 0xDA, 0x94, 0xDC, 0x58
-  },
-  {
-    0x5B, 0x1B, 0xF1, 0x54, 0xC6, 0x2A, 0x8A, 0xF6,
-    0xE9, 0x3D, 0x35, 0xF1, 0x8F, 0x7F, 0x90, 0xAB,
-    0xB1, 0x6A, 0x6E, 0xF0, 0xE8, 0xD1, 0xAE, 0xCD,
-    0x11, 0x8B, 0xF7, 0x01, 0x67, 0xBA, 0xB2, 0xAF,
-    0x08, 0x93, 0x5C, 0x6F, 0xDC, 0x06, 0x63, 0xCE,
-    0x74, 0x48, 0x2D, 0x17, 0xA8, 0xE5, 0x4B, 0x54,
-    0x6D, 0x1C, 0x29, 0x66, 0x31, 0xC6, 0x5F, 0x3B,
-    0x52, 0x2A, 0x51, 0x58, 0x39, 0xD4, 0x3D, 0x71
-  },
-  {
-    0x9F, 0x60, 0x04, 0x19, 0xA4, 0xE8, 0xF4, 0xFB,
-    0x83, 0x4C, 0x24, 0xB0, 0xF7, 0xFC, 0x13, 0xBF,
-    0x4E, 0x27, 0x9D, 0x98, 0xE8, 0xA3, 0xC7, 0x65,
-    0xEE, 0x93, 0x49, 0x17, 0x40, 0x3E, 0x3A, 0x66,
-    0x09, 0x71, 0x82, 0xEA, 0x21, 0x45, 0x3C, 0xB6,
-    0x3E, 0xBB, 0xE8, 0xB7, 0x3A, 0x9C, 0x21, 0x67,
-    0x59, 0x64, 0x46, 0x43, 0x8C, 0x57, 0x62, 0x7F,
-    0x33, 0x0B, 0xAD, 0xD4, 0xF5, 0x69, 0xF7, 0xD6
-  },
-  {
-    0x45, 0x7E, 0xF6, 0x46, 0x6A, 0x89, 0x24, 0xFD,
-    0x80, 0x11, 0xA3, 0x44, 0x71, 0xA5, 0xA1, 0xAC,
-    0x8C, 0xCD, 0x9B, 0xD0, 0xD0, 0x7A, 0x97, 0x41,
-    0x4A, 0xC9, 0x43, 0x02, 0x1C, 0xE4, 0xB9, 0xE4,
-    0xB9, 0xC8, 0xDB, 0x0A, 0x28, 0xF0, 0x16, 0xED,
-    0x43, 0xB1, 0x54, 0x24, 0x81, 0x99, 0x00, 0x22,
-    0x14, 0x7B, 0x31, 0x3E, 0x19, 0x46, 0x71, 0x13,
-    0x1E, 0x70, 0x8D, 0xD4, 0x3A, 0x3E, 0xD7, 0xDC
-  },
-  {
-    0x99, 0x97, 0xB2, 0x19, 0x4D, 0x9A, 0xF6, 0xDF,
-    0xCB, 0x91, 0x43, 0xF4, 0x1C, 0x0E, 0xD8, 0x3D,
-    0x3A, 0x3F, 0x43, 0x88, 0x36, 0x11, 0x03, 0xD3,
-    0x8C, 0x2A, 0x49, 0xB2, 0x80, 0xA5, 0x81, 0x21,
-    0x27, 0x15, 0xFD, 0x90, 0x8D, 0x41, 0xC6, 0x51,
-    0xF5, 0xC7, 0x15, 0xCA, 0x38, 0xC0, 0xCE, 0x28,
-    0x30, 0xA3, 0x7E, 0x00, 0xE5, 0x08, 0xCE, 0xD1,
-    0xBC, 0xDC, 0x32, 0x0E, 0x5E, 0x4D, 0x1E, 0x2E
-  },
-  {
-    0x5C, 0x6B, 0xBF, 0x16, 0xBA, 0xA1, 0x80, 0xF9,
-    0x86, 0xBD, 0x40, 0xA1, 0x28, 0x7E, 0xD4, 0xC5,
-    0x49, 0x77, 0x0E, 0x72, 0x84, 0x85, 0x8F, 0xC4,
-    0x7B, 0xC2, 0x1A, 0xB9, 0x5E, 0xBB, 0xF3, 0x37,
-    0x4B, 0x4E, 0xE3, 0xFD, 0x9F, 0x2A, 0xF6, 0x0F,
-    0x33, 0x95, 0x22, 0x1B, 0x2A, 0xCC, 0x76, 0xF2,
-    0xD3, 0x4C, 0x13, 0x29, 0x54, 0x04, 0x9F, 0x8A,
-    0x3A, 0x99, 0x6F, 0x1E, 0x32, 0xEC, 0x84, 0xE5
-  },
-  {
-    0xD1, 0x0B, 0xF9, 0xA1, 0x5B, 0x1C, 0x9F, 0xC8,
-    0xD4, 0x1F, 0x89, 0xBB, 0x14, 0x0B, 0xF0, 0xBE,
-    0x08, 0xD2, 0xF3, 0x66, 0x61, 0x76, 0xD1, 0x3B,
-    0xAA, 0xC4, 0xD3, 0x81, 0x35, 0x8A, 0xD0, 0x74,
-    0xC9, 0xD4, 0x74, 0x8C, 0x30, 0x05, 0x20, 0xEB,
-    0x02, 0x6D, 0xAE, 0xAE, 0xA7, 0xC5, 0xB1, 0x58,
-    0x89, 0x2F, 0xDE, 0x4E, 0x8E, 0xC1, 0x7D, 0xC9,
-    0x98, 0xDC, 0xD5, 0x07, 0xDF, 0x26, 0xEB, 0x63
-  },
-  {
-    0x2F, 0xC6, 0xE6, 0x9F, 0xA2, 0x6A, 0x89, 0xA5,
-    0xED, 0x26, 0x90, 0x92, 0xCB, 0x9B, 0x2A, 0x44,
-    0x9A, 0x44, 0x09, 0xA7, 0xA4, 0x40, 0x11, 0xEE,
-    0xCA, 0xD1, 0x3D, 0x7C, 0x4B, 0x04, 0x56, 0x60,
-    0x2D, 0x40, 0x2F, 0xA5, 0x84, 0x4F, 0x1A, 0x7A,
-    0x75, 0x81, 0x36, 0xCE, 0x3D, 0x5D, 0x8D, 0x0E,
-    0x8B, 0x86, 0x92, 0x1F, 0xFF, 0xF4, 0xF6, 0x92,
-    0xDD, 0x95, 0xBD, 0xC8, 0xE5, 0xFF, 0x00, 0x52
-  },
-  {
-    0xFC, 0xBE, 0x8B, 0xE7, 0xDC, 0xB4, 0x9A, 0x32,
-    0xDB, 0xDF, 0x23, 0x94, 0x59, 0xE2, 0x63, 0x08,
-    0xB8, 0x4D, 0xFF, 0x1E, 0xA4, 0x80, 0xDF, 0x8D,
-    0x10, 0x4E, 0xEF, 0xF3, 0x4B, 0x46, 0xFA, 0xE9,
-    0x86, 0x27, 0xB4, 0x50, 0xC2, 0x26, 0x7D, 0x48,
-    0xC0, 0x94, 0x6A, 0x69, 0x7C, 0x5B, 0x59, 0x53,
-    0x14, 0x52, 0xAC, 0x04, 0x84, 0xF1, 0xC8, 0x4E,
-    0x3A, 0x33, 0xD0, 0xC3, 0x39, 0xBB, 0x2E, 0x28
-  },
-  {
-    0xA1, 0x90, 0x93, 0xA6, 0xE3, 0xBC, 0xF5, 0x95,
-    0x2F, 0x85, 0x0F, 0x20, 0x30, 0xF6, 0x9B, 0x96,
-    0x06, 0xF1, 0x47, 0xF9, 0x0B, 0x8B, 0xAE, 0xE3,
-    0x36, 0x2D, 0xA7, 0x1D, 0x9F, 0x35, 0xB4, 0x4E,
-    0xF9, 0xD8, 0xF0, 0xA7, 0x71, 0x2B, 0xA1, 0x87,
-    0x7F, 0xDD, 0xCD, 0x2D, 0x8E, 0xA8, 0xF1, 0xE5,
-    0xA7, 0x73, 0xD0, 0xB7, 0x45, 0xD4, 0x72, 0x56,
-    0x05, 0x98, 0x3A, 0x2D, 0xE9, 0x01, 0xF8, 0x03
-  },
-  {
-    0x3C, 0x20, 0x06, 0x42, 0x3F, 0x73, 0xE2, 0x68,
-    0xFA, 0x59, 0xD2, 0x92, 0x03, 0x77, 0xEB, 0x29,
-    0xA4, 0xF9, 0xA8, 0xB4, 0x62, 0xBE, 0x15, 0x98,
-    0x3E, 0xE3, 0xB8, 0x5A, 0xE8, 0xA7, 0x8E, 0x99,
-    0x26, 0x33, 0x58, 0x1A, 0x90, 0x99, 0x89, 0x3B,
-    0x63, 0xDB, 0x30, 0x24, 0x1C, 0x34, 0xF6, 0x43,
-    0x02, 0x7D, 0xC8, 0x78, 0x27, 0x9A, 0xF5, 0x85,
-    0x0D, 0x7E, 0x2D, 0x4A, 0x26, 0x53, 0x07, 0x3A
-  },
-  {
-    0xD0, 0xF2, 0xF2, 0xE3, 0x78, 0x76, 0x53, 0xF7,
-    0x7C, 0xCE, 0x2F, 0xA2, 0x48, 0x35, 0x78, 0x5B,
-    0xBD, 0x0C, 0x43, 0x3F, 0xC7, 0x79, 0x46, 0x5A,
-    0x11, 0x51, 0x49, 0x90, 0x5A, 0x9D, 0xD1, 0xCB,
-    0x82, 0x7A, 0x62, 0x85, 0x06, 0xD4, 0x57, 0xFC,
-    0xF1, 0x24, 0xA0, 0xC2, 0xAE, 0xF9, 0xCE, 0x2D,
-    0x2A, 0x0A, 0x0F, 0x63, 0x54, 0x55, 0x70, 0xD8,
-    0x66, 0x7F, 0xF9, 0xE2, 0xEB, 0xA0, 0x73, 0x34
-  },
-  {
-    0x78, 0xA9, 0xFC, 0x04, 0x8E, 0x25, 0xC6, 0xDC,
-    0xB5, 0xDE, 0x45, 0x66, 0x7D, 0xE8, 0xFF, 0xDD,
-    0x3A, 0x93, 0x71, 0x11, 0x41, 0xD5, 0x94, 0xE9,
-    0xFA, 0x62, 0xA9, 0x59, 0x47, 0x5D, 0xA6, 0x07,
-    0x5E, 0xA8, 0xF0, 0x91, 0x6E, 0x84, 0xE4, 0x5A,
-    0xD9, 0x11, 0xB7, 0x54, 0x67, 0x07, 0x7E, 0xE5,
-    0x2D, 0x2C, 0x9A, 0xEB, 0xF4, 0xD5, 0x8F, 0x20,
-    0xCE, 0x4A, 0x3A, 0x00, 0x45, 0x8B, 0x05, 0xD4
-  },
-  {
-    0x45, 0x81, 0x3F, 0x44, 0x17, 0x69, 0xAB, 0x6E,
-    0xD3, 0x7D, 0x34, 0x9F, 0xF6, 0xE7, 0x22, 0x67,
-    0xD7, 0x6A, 0xE6, 0xBB, 0x3E, 0x3C, 0x61, 0x2E,
-    0xC0, 0x5C, 0x6E, 0x02, 0xA1, 0x2A, 0xF5, 0xA3,
-    0x7C, 0x91, 0x8B, 0x52, 0xBF, 0x74, 0x26, 0x7C,
-    0x3F, 0x6A, 0x3F, 0x18, 0x3A, 0x80, 0x64, 0xFF,
-    0x84, 0xC0, 0x7B, 0x19, 0x3D, 0x08, 0x06, 0x67,
-    0x89, 0xA0, 0x1A, 0xCC, 0xDB, 0x6F, 0x93, 0x40
-  },
-  {
-    0x95, 0x6D, 0xA1, 0xC6, 0x8D, 0x83, 0xA7, 0xB8,
-    0x81, 0xE0, 0x1B, 0x9A, 0x96, 0x6C, 0x3C, 0x0B,
-    0xF2, 0x7F, 0x68, 0x60, 0x6A, 0x8B, 0x71, 0xD4,
-    0x57, 0xBD, 0x01, 0x6D, 0x4C, 0x41, 0xDD, 0x8A,
-    0x38, 0x0C, 0x70, 0x9A, 0x29, 0x6C, 0xB4, 0xC6,
-    0x54, 0x47, 0x92, 0x92, 0x0F, 0xD7, 0x88, 0x83,
-    0x57, 0x71, 0xA0, 0x7D, 0x4A, 0x16, 0xFB, 0x52,
-    0xED, 0x48, 0x05, 0x03, 0x31, 0xDC, 0x4C, 0x8B
-  },
-  {
-    0xDF, 0x18, 0x6C, 0x2D, 0xC0, 0x9C, 0xAA, 0x48,
-    0xE1, 0x4E, 0x94, 0x2F, 0x75, 0xDE, 0x5A, 0xC1,
-    0xB7, 0xA2, 0x1E, 0x4F, 0x9F, 0x07, 0x2A, 0x5B,
-    0x37, 0x1E, 0x09, 0xE0, 0x73, 0x45, 0xB0, 0x74,
-    0x0C, 0x76, 0x17, 0x7B, 0x01, 0x27, 0x88, 0x08,
-    0xFE, 0xC0, 0x25, 0xED, 0xED, 0x98, 0x22, 0xC1,
-    0x22, 0xAF, 0xD1, 0xC6, 0x3E, 0x6F, 0x0C, 0xE2,
-    0xE3, 0x26, 0x31, 0x04, 0x10, 0x63, 0x14, 0x5C
-  },
-  {
-    0x87, 0x47, 0x56, 0x40, 0x96, 0x6A, 0x9F, 0xDC,
-    0xD6, 0xD3, 0xA3, 0xB5, 0xA2, 0xCC, 0xA5, 0xC0,
-    0x8F, 0x0D, 0x88, 0x2B, 0x10, 0x24, 0x3C, 0x0E,
-    0xC1, 0xBF, 0x3C, 0x6B, 0x1C, 0x37, 0xF2, 0xCD,
-    0x32, 0x12, 0xF1, 0x9A, 0x05, 0x78, 0x64, 0x47,
-    0x7D, 0x5E, 0xAF, 0x8F, 0xAE, 0xD7, 0x3F, 0x29,
-    0x37, 0xC7, 0x68, 0xA0, 0xAF, 0x41, 0x5E, 0x84,
-    0xBB, 0xCE, 0x6B, 0xD7, 0xDE, 0x23, 0xB6, 0x60
-  },
-  {
-    0xC3, 0xB5, 0x73, 0xBB, 0xE1, 0x09, 0x49, 0xA0,
-    0xFB, 0xD4, 0xFF, 0x88, 0x4C, 0x44, 0x6F, 0x22,
-    0x29, 0xB7, 0x69, 0x02, 0xF9, 0xDF, 0xDB, 0xB8,
-    0xA0, 0x35, 0x3D, 0xA5, 0xC8, 0x3C, 0xA1, 0x4E,
-    0x81, 0x51, 0xBB, 0xAA, 0xC8, 0x2F, 0xD1, 0x57,
-    0x6A, 0x00, 0x9A, 0xDC, 0x6F, 0x19, 0x35, 0xCF,
-    0x26, 0xED, 0xD4, 0xF1, 0xFB, 0x8D, 0xA4, 0x83,
-    0xE6, 0xC5, 0xCD, 0x9D, 0x89, 0x23, 0xAD, 0xC3
-  },
-  {
-    0xB0, 0x9D, 0x8D, 0x0B, 0xBA, 0x8A, 0x72, 0x86,
-    0xE4, 0x35, 0x68, 0xF7, 0x90, 0x75, 0x50, 0xE4,
-    0x20, 0x36, 0xD6, 0x74, 0xE3, 0xC8, 0xFC, 0x34,
-    0xD8, 0xCA, 0x46, 0xF7, 0x71, 0xD6, 0x46, 0x6B,
-    0x70, 0xFB, 0x60, 0x58, 0x75, 0xF6, 0xA8, 0x63,
-    0xC8, 0x77, 0xD1, 0x2F, 0x07, 0x06, 0x3F, 0xDC,
-    0x2E, 0x90, 0xCC, 0xD4, 0x59, 0xB1, 0x91, 0x0D,
-    0xCD, 0x52, 0xD8, 0xF1, 0x0B, 0x2B, 0x0A, 0x15
-  },
-  {
-    0xAF, 0x3A, 0x22, 0xBF, 0x75, 0xB2, 0x1A, 0xBF,
-    0xB0, 0xAC, 0xD5, 0x44, 0x22, 0xBA, 0x1B, 0x73,
-    0x00, 0xA9, 0x52, 0xEF, 0xF0, 0x2E, 0xBE, 0xB6,
-    0x5B, 0x5C, 0x23, 0x44, 0x71, 0xA9, 0x8D, 0xF3,
-    0x2F, 0x4F, 0x96, 0x43, 0xCE, 0x19, 0x04, 0x10,
-    0x8A, 0x16, 0x87, 0x67, 0x92, 0x42, 0x80, 0xBD,
-    0x76, 0xC8, 0x3F, 0x8C, 0x82, 0xD9, 0xA7, 0x9D,
-    0x92, 0x59, 0xB1, 0x95, 0x36, 0x2A, 0x2A, 0x04
-  },
-  {
-    0xBF, 0x4F, 0xF2, 0x22, 0x1B, 0x7E, 0x69, 0x57,
-    0xA7, 0x24, 0xCD, 0x96, 0x4A, 0xA3, 0xD5, 0xD0,
-    0xD9, 0x94, 0x1F, 0x54, 0x04, 0x13, 0x75, 0x2F,
-    0x46, 0x99, 0xD8, 0x10, 0x1B, 0x3E, 0x53, 0x75,
-    0x08, 0xBF, 0x09, 0xF8, 0x50, 0x8B, 0x31, 0x77,
-    0x36, 0xFF, 0xD2, 0x65, 0xF2, 0x84, 0x7A, 0xA7,
-    0xD8, 0x4B, 0xD2, 0xD9, 0x75, 0x69, 0xC4, 0x9D,
-    0x63, 0x2A, 0xED, 0x99, 0x45, 0xE5, 0xFA, 0x5E
-  },
-  {
-    0x9C, 0x6B, 0x6B, 0x78, 0x19, 0x9B, 0x1B, 0xDA,
-    0xCB, 0x43, 0x00, 0xE3, 0x14, 0x79, 0xFA, 0x62,
-    0x2A, 0x6B, 0x5B, 0xC8, 0x0D, 0x46, 0x78, 0xA6,
-    0x07, 0x8F, 0x88, 0xA8, 0x26, 0x8C, 0xD7, 0x20,
-    0x6A, 0x27, 0x99, 0xE8, 0xD4, 0x62, 0x1A, 0x46,
-    0x4E, 0xF6, 0xB4, 0x3D, 0xD8, 0xAD, 0xFF, 0xE9,
-    0x7C, 0xAF, 0x22, 0x1B, 0x22, 0xB6, 0xB8, 0x77,
-    0x8B, 0x14, 0x9A, 0x82, 0x2A, 0xEF, 0xBB, 0x09
-  },
-  {
-    0x89, 0x06, 0x56, 0xF0, 0x9C, 0x99, 0xD2, 0x80,
-    0xB5, 0xEC, 0xB3, 0x81, 0xF5, 0x64, 0x27, 0xB8,
-    0x13, 0x75, 0x1B, 0xC6, 0x52, 0xC7, 0x82, 0x80,
-    0x78, 0xB2, 0x3A, 0x4A, 0xF8, 0x3B, 0x4E, 0x3A,
-    0x61, 0xFD, 0xBA, 0xC6, 0x1F, 0x89, 0xBE, 0xE8,
-    0x4E, 0xA6, 0xBE, 0xE7, 0x60, 0xC0, 0x47, 0xF2,
-    0x5C, 0x6B, 0x0A, 0x20, 0x1C, 0x69, 0xA3, 0x8F,
-    0xD6, 0xFD, 0x97, 0x1A, 0xF1, 0x85, 0x88, 0xBB
-  },
-  {
-    0x31, 0xA0, 0x46, 0xF7, 0x88, 0x2F, 0xFE, 0x6F,
-    0x83, 0xCE, 0x47, 0x2E, 0x9A, 0x07, 0x01, 0x83,
-    0x2E, 0xC7, 0xB3, 0xF7, 0x6F, 0xBC, 0xFD, 0x1D,
-    0xF6, 0x0F, 0xE3, 0xEA, 0x48, 0xFD, 0xE1, 0x65,
-    0x12, 0x54, 0x24, 0x7C, 0x3F, 0xD9, 0x5E, 0x10,
-    0x0F, 0x91, 0x72, 0x73, 0x1E, 0x17, 0xFD, 0x52,
-    0x97, 0xC1, 0x1F, 0x4B, 0xB3, 0x28, 0x36, 0x3C,
-    0xA3, 0x61, 0x62, 0x4A, 0x81, 0xAF, 0x79, 0x7C
-  },
-  {
-    0x27, 0xA6, 0x0B, 0x2D, 0x00, 0xE7, 0xA6, 0x71,
-    0xD4, 0x7D, 0x0A, 0xEC, 0x2A, 0x68, 0x6A, 0x0A,
-    0xC0, 0x4B, 0x52, 0xF4, 0x0A, 0xB6, 0x62, 0x90,
-    0x28, 0xEB, 0x7D, 0x13, 0xF4, 0xBA, 0xA9, 0x9A,
-    0xC0, 0xFE, 0x46, 0xEE, 0x6C, 0x81, 0x49, 0x44,
-    0xF2, 0xF4, 0xB4, 0xD2, 0x0E, 0x93, 0x78, 0xE4,
-    0x84, 0x7E, 0xA4, 0x4C, 0x13, 0x17, 0x80, 0x91,
-    0xE2, 0x77, 0xB8, 0x7E, 0xA7, 0xA5, 0x57, 0x11
-  },
-  {
-    0x8B, 0x5C, 0xCE, 0xF1, 0x94, 0x16, 0x2C, 0x1F,
-    0x19, 0xD6, 0x8F, 0x91, 0xE0, 0xB0, 0x92, 0x8F,
-    0x28, 0x9E, 0xC5, 0x28, 0x37, 0x20, 0x84, 0x0C,
-    0x2F, 0x73, 0xD2, 0x53, 0x11, 0x12, 0x38, 0xDC,
-    0xFE, 0x94, 0xAF, 0x2B, 0x59, 0xC2, 0xC1, 0xCA,
-    0x25, 0x91, 0x90, 0x1A, 0x7B, 0xC0, 0x60, 0xE7,
-    0x45, 0x9B, 0x6C, 0x47, 0xDF, 0x0F, 0x71, 0x70,
-    0x1A, 0x35, 0xCC, 0x0A, 0xA8, 0x31, 0xB5, 0xB6
-  },
-  {
-    0x57, 0xAB, 0x6C, 0x4B, 0x22, 0x29, 0xAE, 0xB3,
-    0xB7, 0x04, 0x76, 0xD8, 0x03, 0xCD, 0x63, 0x81,
-    0x2F, 0x10, 0x7C, 0xE6, 0xDA, 0x17, 0xFE, 0xD9,
-    0xB1, 0x78, 0x75, 0xE8, 0xF8, 0x6C, 0x72, 0x4F,
-    0x49, 0xE0, 0x24, 0xCB, 0xF3, 0xA1, 0xB8, 0xB1,
-    0x19, 0xC5, 0x03, 0x57, 0x65, 0x2B, 0x81, 0x87,
-    0x9D, 0x2A, 0xDE, 0x2D, 0x58, 0x8B, 0x9E, 0x4F,
-    0x7C, 0xED, 0xBA, 0x0E, 0x46, 0x44, 0xC9, 0xEE
-  },
-  {
-    0x01, 0x90, 0xA8, 0xDA, 0xC3, 0x20, 0xA7, 0x39,
-    0xF3, 0x22, 0xE1, 0x57, 0x31, 0xAA, 0x14, 0x0D,
-    0xDA, 0xF5, 0xBE, 0xD2, 0x94, 0xD5, 0xC8, 0x2E,
-    0x54, 0xFE, 0xF2, 0x9F, 0x21, 0x4E, 0x18, 0xAA,
-    0xFA, 0xA8, 0x4F, 0x8B, 0xE9, 0x9A, 0xF6, 0x29,
-    0x50, 0x26, 0x6B, 0x8F, 0x90, 0x1F, 0x15, 0xDD,
-    0x4C, 0x5D, 0x35, 0x51, 0x6F, 0xC3, 0x5B, 0x4C,
-    0xAB, 0x2E, 0x96, 0xE4, 0x69, 0x5B, 0xBE, 0x1C
-  },
-  {
-    0xD1, 0x4D, 0x7C, 0x4C, 0x41, 0x5E, 0xEB, 0x0E,
-    0x10, 0xB1, 0x59, 0x22, 0x4B, 0xEA, 0x12, 0x7E,
-    0xBD, 0x84, 0xF9, 0x59, 0x1C, 0x70, 0x2A, 0x33,
-    0x0F, 0x5B, 0xB7, 0xBB, 0x7A, 0xA4, 0x4E, 0xA3,
-    0x9D, 0xE6, 0xED, 0x01, 0xF1, 0x8D, 0xA7, 0xAD,
-    0xF4, 0x0C, 0xFB, 0x97, 0xC5, 0xD1, 0x52, 0xC2,
-    0x75, 0x28, 0x82, 0x4B, 0x21, 0xE2, 0x39, 0x52,
-    0x6A, 0xF8, 0xF3, 0x6B, 0x21, 0x4E, 0x0C, 0xFB
-  },
-  {
-    0xBE, 0x28, 0xC4, 0xBE, 0x70, 0x69, 0x70, 0x48,
-    0x8F, 0xAC, 0x7D, 0x29, 0xC3, 0xBD, 0x5C, 0x4E,
-    0x98, 0x60, 0x85, 0xC4, 0xC3, 0x33, 0x2F, 0x1F,
-    0x3F, 0xD3, 0x09, 0x73, 0xDB, 0x61, 0x41, 0x64,
-    0xBA, 0x2F, 0x31, 0xA7, 0x88, 0x75, 0xFF, 0xDC,
-    0x15, 0x03, 0x25, 0xC8, 0x83, 0x27, 0xA9, 0x44,
-    0x3E, 0xD0, 0x4F, 0xDF, 0xE5, 0xBE, 0x93, 0x87,
-    0x6D, 0x16, 0x28, 0x56, 0x0C, 0x76, 0x4A, 0x80
-  },
-  {
-    0x03, 0x1D, 0xA1, 0x06, 0x9E, 0x3A, 0x2E, 0x9C,
-    0x33, 0x82, 0xE4, 0x36, 0xFF, 0xD7, 0x9D, 0xF7,
-    0x4B, 0x1C, 0xA6, 0xA8, 0xAD, 0xB2, 0xDE, 0xAB,
-    0xE6, 0x76, 0xAB, 0x45, 0x99, 0x4C, 0xBC, 0x05,
-    0x4F, 0x03, 0x7D, 0x2F, 0x0E, 0xAC, 0xE8, 0x58,
-    0xD3, 0x2C, 0x14, 0xE2, 0xD1, 0xC8, 0xB4, 0x60,
-    0x77, 0x30, 0x8E, 0x3B, 0xDC, 0x2C, 0x1B, 0x53,
-    0x17, 0x2E, 0xCF, 0x7A, 0x8C, 0x14, 0xE3, 0x49
-  },
-  {
-    0x46, 0x65, 0xCE, 0xF8, 0xBA, 0x4D, 0xB4, 0xD0,
-    0xAC, 0xB1, 0x18, 0xF2, 0x98, 0x7F, 0x0B, 0xB0,
-    0x9F, 0x8F, 0x86, 0xAA, 0x44, 0x5A, 0xA3, 0xD5,
-    0xFC, 0x9A, 0x8B, 0x34, 0x68, 0x64, 0x78, 0x74,
-    0x89, 0xE8, 0xFC, 0xEC, 0xC1, 0x25, 0xD1, 0x7E,
-    0x9B, 0x56, 0xE1, 0x29, 0x88, 0xEA, 0xC5, 0xEC,
-    0xC7, 0x28, 0x68, 0x83, 0xDB, 0x06, 0x61, 0xB8,
-    0xFF, 0x05, 0xDA, 0x2A, 0xFF, 0xF3, 0x0F, 0xE4
-  },
-  {
-    0x63, 0xB7, 0x03, 0x2E, 0x5F, 0x93, 0x0C, 0xC9,
-    0x93, 0x95, 0x17, 0xF9, 0xE9, 0x86, 0x81, 0x6C,
-    0xFB, 0xEC, 0x2B, 0xE5, 0x9B, 0x95, 0x68, 0xB1,
-    0x3F, 0x2E, 0xAD, 0x05, 0xBA, 0xE7, 0x77, 0x7C,
-    0xAB, 0x62, 0x0C, 0x66, 0x59, 0x40, 0x4F, 0x74,
-    0x09, 0xE4, 0x19, 0x9A, 0x3B, 0xE5, 0xF7, 0x86,
-    0x5A, 0xA7, 0xCB, 0xDF, 0x8C, 0x42, 0x53, 0xF7,
-    0xE8, 0x21, 0x9B, 0x1B, 0xD5, 0xF4, 0x6F, 0xEA
-  },
-  {
-    0x9F, 0x09, 0xBF, 0x09, 0x3A, 0x2B, 0x0F, 0xF8,
-    0xC2, 0x63, 0x4B, 0x49, 0xE3, 0x7F, 0x1B, 0x21,
-    0x35, 0xB4, 0x47, 0xAA, 0x91, 0x44, 0xC9, 0x78,
-    0x7D, 0xBF, 0xD9, 0x21, 0x29, 0x31, 0x6C, 0x99,
-    0xE8, 0x8A, 0xAB, 0x8A, 0x21, 0xFD, 0xEF, 0x23,
-    0x72, 0xD1, 0x18, 0x9A, 0xEC, 0x50, 0x0F, 0x95,
-    0x77, 0x5F, 0x1F, 0x92, 0xBF, 0xB4, 0x55, 0x45,
-    0xE4, 0x25, 0x9F, 0xB9, 0xB7, 0xB0, 0x2D, 0x14
-  },
-  {
-    0xF9, 0xF8, 0x49, 0x3C, 0x68, 0x08, 0x88, 0x07,
-    0xDF, 0x7F, 0x6A, 0x26, 0x93, 0xD6, 0x4E, 0xA5,
-    0x9F, 0x03, 0xE9, 0xE0, 0x5A, 0x22, 0x3E, 0x68,
-    0x52, 0x4C, 0xA3, 0x21, 0x95, 0xA4, 0x73, 0x4B,
-    0x65, 0x4F, 0xCE, 0xA4, 0xD2, 0x73, 0x4C, 0x86,
-    0x6C, 0xF9, 0x5C, 0x88, 0x9F, 0xB1, 0x0C, 0x49,
-    0x15, 0x9B, 0xE2, 0xF5, 0x04, 0x3D, 0xC9, 0x8B,
-    0xB5, 0x5E, 0x02, 0xEF, 0x7B, 0xDC, 0xB0, 0x82
-  },
-  {
-    0x3C, 0x9A, 0x73, 0x59, 0xAB, 0x4F, 0xEB, 0xCE,
-    0x07, 0xB2, 0x0A, 0xC4, 0x47, 0xB0, 0x6A, 0x24,
-    0x0B, 0x7F, 0xE1, 0xDA, 0xE5, 0x43, 0x9C, 0x49,
-    0xB6, 0x0B, 0x58, 0x19, 0xF7, 0x81, 0x2E, 0x4C,
-    0x17, 0x24, 0x06, 0xC1, 0xAA, 0xC3, 0x16, 0x71,
-    0x3C, 0xF0, 0xDD, 0xED, 0x10, 0x38, 0x07, 0x72,
-    0x58, 0xE2, 0xEF, 0xF5, 0xB3, 0x39, 0x13, 0xD9,
-    0xD9, 0x5C, 0xAE, 0xB4, 0xE6, 0xC6, 0xB9, 0x70
-  },
-  {
-    0xAD, 0x6A, 0xAB, 0x80, 0x84, 0x51, 0x0E, 0x82,
-    0x2C, 0xFC, 0xE8, 0x62, 0x5D, 0x62, 0xCF, 0x4D,
-    0xE6, 0x55, 0xF4, 0x76, 0x38, 0x84, 0xC7, 0x1E,
-    0x80, 0xBA, 0xB9, 0xAC, 0x9D, 0x53, 0x18, 0xDB,
-    0xA4, 0xA6, 0x03, 0x3E, 0xD2, 0x90, 0x84, 0xE6,
-    0x52, 0x16, 0xC0, 0x31, 0x60, 0x6C, 0xA1, 0x76,
-    0x15, 0xDC, 0xFE, 0x3B, 0xA1, 0x1D, 0x26, 0x85,
-    0x1A, 0xE0, 0x99, 0x9C, 0xA6, 0xE2, 0x32, 0xCF
-  },
-  {
-    0x15, 0x6E, 0x9E, 0x62, 0x61, 0x37, 0x4C, 0x9D,
-    0xC8, 0x84, 0xF3, 0x6E, 0x70, 0xF0, 0xFE, 0x1A,
-    0xB9, 0x29, 0x79, 0x97, 0xB8, 0x36, 0xFA, 0x7D,
-    0x17, 0x0A, 0x9C, 0x9E, 0xBF, 0x57, 0x5B, 0x88,
-    0x1E, 0x7B, 0xCE, 0xA4, 0x4D, 0x6C, 0x02, 0x48,
-    0xD3, 0x55, 0x97, 0x90, 0x71, 0x54, 0x82, 0x89,
-    0x55, 0xBE, 0x19, 0x13, 0x58, 0x52, 0xF9, 0x22,
-    0x88, 0x15, 0xEC, 0xA0, 0x24, 0xA8, 0xAD, 0xFB
-  },
-  {
-    0x42, 0x15, 0x40, 0x76, 0x33, 0xF4, 0xCC, 0xA9,
-    0xB6, 0x78, 0x8B, 0xE9, 0x3E, 0x6A, 0xA3, 0xD9,
-    0x63, 0xC7, 0xD6, 0xCE, 0x4B, 0x14, 0x72, 0x47,
-    0x09, 0x9F, 0x46, 0xA3, 0xAC, 0xB5, 0x00, 0xA3,
-    0x00, 0x38, 0xCB, 0x3E, 0x78, 0x8C, 0x3D, 0x29,
-    0xF1, 0x32, 0xAD, 0x84, 0x4E, 0x80, 0xE9, 0xE9,
-    0x92, 0x51, 0xF6, 0xDB, 0x96, 0xAC, 0xD8, 0xA0,
-    0x91, 0xCF, 0xC7, 0x70, 0xAF, 0x53, 0x84, 0x7B
-  },
-  {
-    0x1C, 0x07, 0x7E, 0x27, 0x9D, 0xE6, 0x54, 0x85,
-    0x23, 0x50, 0x2B, 0x6D, 0xF8, 0x00, 0xFF, 0xDA,
-    0xB5, 0xE2, 0xC3, 0xE9, 0x44, 0x2E, 0xB8, 0x38,
-    0xF5, 0x8C, 0x29, 0x5F, 0x3B, 0x14, 0x7C, 0xEF,
-    0x9D, 0x70, 0x1C, 0x41, 0xC3, 0x21, 0x28, 0x3F,
-    0x00, 0xC7, 0x1A, 0xFF, 0xA0, 0x61, 0x93, 0x10,
-    0x39, 0x91, 0x26, 0x29, 0x5B, 0x78, 0xDD, 0x4D,
-    0x1A, 0x74, 0x57, 0x2E, 0xF9, 0xED, 0x51, 0x35
-  },
-  {
-    0xF0, 0x7A, 0x55, 0x5F, 0x49, 0xFE, 0x48, 0x1C,
-    0xF4, 0xCD, 0x0A, 0x87, 0xB7, 0x1B, 0x82, 0xE4,
-    0xA9, 0x50, 0x64, 0xD0, 0x66, 0x77, 0xFD, 0xD9,
-    0x0A, 0x0E, 0xB5, 0x98, 0x87, 0x7B, 0xA1, 0xC8,
-    0x3D, 0x46, 0x77, 0xB3, 0x93, 0xC3, 0xA3, 0xB6,
-    0x66, 0x1C, 0x42, 0x1F, 0x5B, 0x12, 0xCB, 0x99,
-    0xD2, 0x03, 0x76, 0xBA, 0x72, 0x75, 0xC2, 0xF3,
-    0xA8, 0xF5, 0xA9, 0xB7, 0x82, 0x17, 0x20, 0xDA
-  },
-  {
-    0xB5, 0x91, 0x1B, 0x38, 0x0D, 0x20, 0xC7, 0xB0,
-    0x43, 0x23, 0xE4, 0x02, 0x6B, 0x38, 0xE2, 0x00,
-    0xF5, 0x34, 0x25, 0x92, 0x33, 0xB5, 0x81, 0xE0,
-    0x2C, 0x1E, 0x3E, 0x2D, 0x84, 0x38, 0xD6, 0xC6,
-    0x6D, 0x5A, 0x4E, 0xB2, 0x01, 0xD5, 0xA8, 0xB7,
-    0x50, 0x72, 0xC4, 0xEC, 0x29, 0x10, 0x63, 0x34,
-    0xDA, 0x70, 0xBC, 0x79, 0x52, 0x1B, 0x0C, 0xED,
-    0x2C, 0xFD, 0x53, 0x3F, 0x5F, 0xF8, 0x4F, 0x95
-  },
-  {
-    0x01, 0xF0, 0x70, 0xA0, 0x9B, 0xAE, 0x91, 0x12,
-    0x96, 0x36, 0x1F, 0x91, 0xAA, 0x0E, 0x8E, 0x0D,
-    0x09, 0xA7, 0x72, 0x54, 0x78, 0x53, 0x6D, 0x9D,
-    0x48, 0xC5, 0xFE, 0x1E, 0x5E, 0x7C, 0x3C, 0x5B,
-    0x9B, 0x9D, 0x6E, 0xB0, 0x77, 0x96, 0xF6, 0xDA,
-    0x57, 0xAE, 0x56, 0x2A, 0x7D, 0x70, 0xE8, 0x82,
-    0xE3, 0x7A, 0xDF, 0xDE, 0x83, 0xF0, 0xC4, 0x33,
-    0xC2, 0xCD, 0x36, 0x35, 0x36, 0xBB, 0x22, 0xC8
-  },
-  {
-    0x6F, 0x79, 0x3E, 0xB4, 0x37, 0x4A, 0x48, 0xB0,
-    0x77, 0x5A, 0xCA, 0xF9, 0xAD, 0xCF, 0x8E, 0x45,
-    0xE5, 0x42, 0x70, 0xC9, 0x47, 0x5F, 0x00, 0x4A,
-    0xD8, 0xD5, 0x97, 0x3E, 0x2A, 0xCA, 0x52, 0x74,
-    0x7F, 0xF4, 0xED, 0x04, 0xAE, 0x96, 0x72, 0x75,
-    0xB9, 0xF9, 0xEB, 0x0E, 0x1F, 0xF7, 0x5F, 0xB4,
-    0xF7, 0x94, 0xFA, 0x8B, 0xE9, 0xAD, 0xD7, 0xA4,
-    0x13, 0x04, 0x86, 0x8D, 0x10, 0x3F, 0xAB, 0x10
-  },
-  {
-    0x96, 0x5F, 0x20, 0xF1, 0x39, 0x76, 0x5F, 0xCC,
-    0x4C, 0xE4, 0xBA, 0x37, 0x94, 0x67, 0x58, 0x63,
-    0xCA, 0xC2, 0x4D, 0xB4, 0x72, 0xCD, 0x2B, 0x79,
-    0x9D, 0x03, 0x5B, 0xCE, 0x3D, 0xBE, 0xA5, 0x02,
-    0xDA, 0x7B, 0x52, 0x48, 0x65, 0xF6, 0xB8, 0x11,
-    0xD8, 0xC5, 0x82, 0x8D, 0x3A, 0x88, 0x96, 0x46,
-    0xFE, 0x64, 0xA3, 0x80, 0xDA, 0x1A, 0xA7, 0xC7,
-    0x04, 0x4E, 0x9F, 0x24, 0x5D, 0xCE, 0xD1, 0x28
-  },
-  {
-    0xEC, 0x29, 0x5B, 0x57, 0x83, 0x60, 0x12, 0x44,
-    0xC3, 0x0E, 0x46, 0x41, 0xE3, 0xB4, 0x5B, 0xE2,
-    0x22, 0xC4, 0xDC, 0xE7, 0x7A, 0x58, 0x70, 0x0F,
-    0x53, 0xBC, 0x8E, 0xC5, 0x2A, 0x94, 0x16, 0x90,
-    0xB4, 0xD0, 0xB0, 0x87, 0xFB, 0x6F, 0xCB, 0x3F,
-    0x39, 0x83, 0x2B, 0x9D, 0xE8, 0xF7, 0x5E, 0xC2,
-    0x0B, 0xD4, 0x30, 0x79, 0x81, 0x17, 0x49, 0xCD,
-    0xC9, 0x07, 0xED, 0xB9, 0x41, 0x57, 0xD1, 0x80
-  },
-  {
-    0x61, 0xC7, 0x2F, 0x8C, 0xCC, 0x91, 0xDB, 0xB5,
-    0x4C, 0xA6, 0x75, 0x0B, 0xC4, 0x89, 0x67, 0x2D,
-    0xE0, 0x9F, 0xAE, 0xDB, 0x8F, 0xDD, 0x4F, 0x94,
-    0xFF, 0x23, 0x20, 0x90, 0x9A, 0x30, 0x3F, 0x5D,
-    0x5A, 0x98, 0x48, 0x1C, 0x0B, 0xC1, 0xA6, 0x25,
-    0x41, 0x9F, 0xB4, 0xDE, 0xBF, 0xBF, 0x7F, 0x8A,
-    0x53, 0xBB, 0x07, 0xEC, 0x3D, 0x98, 0x5E, 0x8E,
-    0xA1, 0x1E, 0x72, 0xD5, 0x59, 0x94, 0x07, 0x80
-  },
-  {
-    0xAF, 0xD8, 0x14, 0x5B, 0x25, 0x9E, 0xEF, 0xC8,
-    0xD1, 0x26, 0x20, 0xC3, 0xC5, 0xB0, 0x3E, 0x1E,
-    0xD8, 0xFD, 0x2C, 0xCE, 0xFE, 0x03, 0x65, 0x07,
-    0x8C, 0x80, 0xFD, 0x42, 0xC1, 0x77, 0x0E, 0x28,
-    0xB4, 0x49, 0x48, 0xF2, 0x7E, 0x65, 0xA1, 0x88,
-    0x66, 0x90, 0x11, 0x0D, 0xB8, 0x14, 0x39, 0x7B,
-    0x68, 0xE4, 0x3D, 0x80, 0xD1, 0xBA, 0x16, 0xDF,
-    0xA3, 0x58, 0xE7, 0x39, 0xC8, 0x98, 0xCF, 0xA3
-  },
-  {
-    0x55, 0x2F, 0xC7, 0x89, 0x3C, 0xF1, 0xCE, 0x93,
-    0x3A, 0xDA, 0x35, 0xC0, 0xDA, 0x98, 0x84, 0x4E,
-    0x41, 0x54, 0x5E, 0x24, 0x4C, 0x31, 0x57, 0xA1,
-    0x42, 0x8D, 0x7B, 0x4C, 0x21, 0xF9, 0xCD, 0x7E,
-    0x40, 0x71, 0xAE, 0xD7, 0x7B, 0x7C, 0xA9, 0xF1,
-    0xC3, 0x8F, 0xBA, 0x32, 0x23, 0x74, 0x12, 0xEF,
-    0x21, 0xA3, 0x42, 0x74, 0x2E, 0xC8, 0x32, 0x43,
-    0x78, 0xF2, 0x1E, 0x50, 0x7F, 0xAF, 0xDD, 0x88
-  },
-  {
-    0x46, 0x7A, 0x33, 0xFB, 0xAD, 0xF5, 0xEB, 0xC5,
-    0x25, 0x96, 0xEF, 0x86, 0xAA, 0xAE, 0xFC, 0x6F,
-    0xAB, 0xA8, 0xEE, 0x65, 0x1B, 0x1C, 0xE0, 0x4D,
-    0xE3, 0x68, 0xA0, 0x3A, 0x5A, 0x90, 0x40, 0xEF,
-    0x28, 0x35, 0xE0, 0x0A, 0xDB, 0x09, 0xAB, 0xB3,
-    0xFB, 0xD2, 0xBC, 0xE8, 0x18, 0xA2, 0x41, 0x3D,
-    0x0B, 0x02, 0x53, 0xB5, 0xBD, 0xA4, 0xFC, 0x5B,
-    0x2F, 0x6F, 0x85, 0xF3, 0xFD, 0x5B, 0x55, 0xF2
-  },
-  {
-    0x22, 0xEF, 0xF8, 0xE6, 0xDD, 0x52, 0x36, 0xF5,
-    0xF5, 0x7D, 0x94, 0xED, 0xE8, 0x74, 0xD6, 0xC9,
-    0x42, 0x8E, 0x8F, 0x5D, 0x56, 0x6F, 0x17, 0xCD,
-    0x6D, 0x18, 0x48, 0xCD, 0x75, 0x2F, 0xE1, 0x3C,
-    0x65, 0x5C, 0xB1, 0x0F, 0xBA, 0xAF, 0xF7, 0x68,
-    0x72, 0xF2, 0xBF, 0x2D, 0xA9, 0x9E, 0x15, 0xDC,
-    0x62, 0x40, 0x75, 0xE1, 0xEC, 0x2F, 0x58, 0xA3,
-    0xF6, 0x40, 0x72, 0x12, 0x18, 0x38, 0x56, 0x9E
-  },
-  {
-    0x9C, 0xEC, 0x6B, 0xBF, 0x62, 0xC4, 0xBC, 0xE4,
-    0x13, 0x8A, 0xBA, 0xE1, 0xCB, 0xEC, 0x8D, 0xAD,
-    0x31, 0x95, 0x04, 0x44, 0xE9, 0x03, 0x21, 0xB1,
-    0x34, 0x71, 0x96, 0x83, 0x4C, 0x11, 0x4B, 0x86,
-    0x4A, 0xF3, 0xF3, 0xCC, 0x35, 0x08, 0xF8, 0x37,
-    0x51, 0xFF, 0xB4, 0xED, 0xA7, 0xC8, 0x4D, 0x14,
-    0x07, 0x34, 0xBB, 0x42, 0x63, 0xC3, 0x62, 0x5C,
-    0x00, 0xF0, 0x4F, 0x4C, 0x80, 0x68, 0x98, 0x1B
-  },
-  {
-    0xA8, 0xB6, 0x0F, 0xA4, 0xFC, 0x24, 0x42, 0xF6,
-    0xF1, 0x51, 0x4A, 0xD7, 0x40, 0x26, 0x26, 0x92,
-    0x0C, 0xC7, 0xC2, 0xC9, 0xF7, 0x21, 0x24, 0xB8,
-    0xCB, 0xA8, 0xEE, 0x2C, 0xB7, 0xC4, 0x58, 0x6F,
-    0x65, 0x8A, 0x44, 0x10, 0xCF, 0xFC, 0xC0, 0xAB,
-    0x88, 0x34, 0x39, 0x55, 0xE0, 0x94, 0xC6, 0xAF,
-    0x0D, 0x20, 0xD0, 0xC7, 0x14, 0xFB, 0x0A, 0x98,
-    0x8F, 0x54, 0x3F, 0x30, 0x0F, 0x58, 0xD3, 0x89
-  },
-  {
-    0x82, 0x71, 0xCC, 0x45, 0xDF, 0xA5, 0xE4, 0x17,
-    0x0E, 0x84, 0x7E, 0x86, 0x30, 0xB9, 0x52, 0xCF,
-    0x9C, 0x2A, 0xA7, 0x77, 0xD0, 0x6F, 0x26, 0xA7,
-    0x58, 0x5B, 0x83, 0x81, 0xF1, 0x88, 0xDA, 0xCC,
-    0x73, 0x37, 0x39, 0x1C, 0xFC, 0xC9, 0x4B, 0x05,
-    0x3D, 0xC4, 0xEC, 0x29, 0xCC, 0x17, 0xF0, 0x77,
-    0x87, 0x04, 0x28, 0xF1, 0xAC, 0x23, 0xFD, 0xDD,
-    0xA1, 0x65, 0xEF, 0x5A, 0x3F, 0x15, 0x5F, 0x39
-  },
-  {
-    0xBF, 0x23, 0xC0, 0xC2, 0x5C, 0x80, 0x60, 0xE4,
-    0xF6, 0x99, 0x5F, 0x16, 0x23, 0xA3, 0xBE, 0xBE,
-    0xCA, 0xA9, 0x6E, 0x30, 0x86, 0x80, 0x00, 0x0A,
-    0x8A, 0xA3, 0xCD, 0x56, 0xBB, 0x1A, 0x6D, 0xA0,
-    0x99, 0xE1, 0x0D, 0x92, 0x31, 0xB3, 0x7F, 0x45,
-    0x19, 0xB2, 0xEF, 0xD2, 0xC2, 0x4D, 0xE7, 0x2F,
-    0x31, 0xA5, 0xF1, 0x95, 0x35, 0x24, 0x1B, 0x4A,
-    0x59, 0xFA, 0x3C, 0x03, 0xCE, 0xB7, 0x90, 0xE7
-  },
-  {
-    0x87, 0x7F, 0xD6, 0x52, 0xC0, 0x52, 0x81, 0x00,
-    0x9C, 0x0A, 0x52, 0x50, 0xE7, 0xA3, 0xA6, 0x71,
-    0xF8, 0xB1, 0x8C, 0x10, 0x88, 0x17, 0xFE, 0x4A,
-    0x87, 0x4D, 0xE2, 0x2D, 0xA8, 0xE4, 0x5D, 0xB1,
-    0x19, 0x58, 0xA6, 0x00, 0xC5, 0xF6, 0x2E, 0x67,
-    0xD3, 0x6C, 0xBF, 0x84, 0x47, 0x4C, 0xF2, 0x44,
-    0xA9, 0xC2, 0xB0, 0x3A, 0x9F, 0xB9, 0xDC, 0x71,
-    0x1C, 0xD1, 0xA2, 0xCA, 0xB6, 0xF3, 0xFA, 0xE0
-  },
-  {
-    0x29, 0xDF, 0x4D, 0x87, 0xEA, 0x44, 0x4B, 0xAF,
-    0x5B, 0xCD, 0xF5, 0xF4, 0xE4, 0x15, 0x79, 0xE2,
-    0x8A, 0x67, 0xDE, 0x84, 0x14, 0x9F, 0x06, 0xC0,
-    0x3F, 0x11, 0x0E, 0xA8, 0x4F, 0x57, 0x2A, 0x9F,
-    0x67, 0x6A, 0xDD, 0xD0, 0x4C, 0x48, 0x78, 0xF4,
-    0x9C, 0x5C, 0x00, 0xAC, 0xCD, 0xA4, 0x41, 0xB1,
-    0xA3, 0x87, 0xCA, 0xCE, 0xB2, 0xE9, 0x93, 0xBB,
-    0x7A, 0x10, 0xCD, 0x8C, 0x2D, 0x67, 0x17, 0xE1
-  },
-  {
-    0x71, 0x0D, 0xAC, 0xB1, 0x66, 0x84, 0x46, 0x39,
-    0xCD, 0x7B, 0x63, 0x7C, 0x27, 0x42, 0x09, 0x42,
-    0x4E, 0x24, 0x49, 0xDC, 0x35, 0xD7, 0x90, 0xBB,
-    0xFA, 0x4F, 0x76, 0x17, 0x70, 0x54, 0xA3, 0x6B,
-    0x3B, 0x76, 0xFA, 0xC0, 0xCA, 0x6E, 0x61, 0xDF,
-    0x1E, 0x68, 0x70, 0x00, 0x67, 0x8A, 0xC0, 0x74,
-    0x6D, 0xF7, 0x5D, 0x0A, 0x39, 0x54, 0x89, 0x76,
-    0x81, 0xFD, 0x39, 0x3A, 0x15, 0x5A, 0x1B, 0xB4
-  },
-  {
-    0xC1, 0xD5, 0xF9, 0x3B, 0x8D, 0xEA, 0x1F, 0x25,
-    0x71, 0xBA, 0xBC, 0xCB, 0xC0, 0x17, 0x64, 0x54,
-    0x1A, 0x0C, 0xDA, 0x87, 0xE4, 0x44, 0xD6, 0x73,
-    0xC5, 0x09, 0x66, 0xCA, 0x55, 0x9C, 0x33, 0x35,
-    0x4B, 0x3A, 0xCB, 0x26, 0xE5, 0xD5, 0x78, 0x1F,
-    0xFB, 0x28, 0x84, 0x7A, 0x4B, 0x47, 0x54, 0xD7,
-    0x70, 0x08, 0xC6, 0x2A, 0x83, 0x58, 0x35, 0xF5,
-    0x00, 0xDE, 0xA7, 0xC3, 0xB5, 0x8B, 0xDA, 0xE2
-  },
-  {
-    0xA4, 0x1E, 0x41, 0x27, 0x1C, 0xDA, 0xB8, 0xAF,
-    0x4D, 0x72, 0xB1, 0x04, 0xBF, 0xB2, 0xAD, 0x04,
-    0x1A, 0xC4, 0xDF, 0x14, 0x67, 0x7D, 0xA6, 0x71,
-    0xD8, 0x56, 0x40, 0xC4, 0xB1, 0x87, 0xF5, 0x0C,
-    0x2B, 0x66, 0x51, 0x3C, 0x46, 0x19, 0xFB, 0xD5,
-    0xD5, 0xDC, 0x4F, 0xE6, 0x5D, 0xD3, 0x7B, 0x90,
-    0x42, 0xE9, 0x84, 0x8D, 0xDA, 0x55, 0x6A, 0x50,
-    0x4C, 0xAA, 0x2B, 0x1C, 0x6A, 0xFE, 0x47, 0x30
-  },
-  {
-    0xE7, 0xBC, 0xBA, 0xCD, 0xC3, 0x79, 0xC4, 0x3D,
-    0x81, 0xEB, 0xAD, 0xCB, 0x37, 0x78, 0x15, 0x52,
-    0xFC, 0x1D, 0x75, 0x3E, 0x8C, 0xF3, 0x10, 0xD9,
-    0x68, 0x39, 0x2D, 0x06, 0xC9, 0x1F, 0x1D, 0x64,
-    0xCC, 0x9E, 0x90, 0xCE, 0x1D, 0x22, 0xC3, 0x2D,
-    0x27, 0x7F, 0xC6, 0xCD, 0xA4, 0x33, 0xA4, 0xD4,
-    0x42, 0xC7, 0x62, 0xE9, 0xEA, 0xCF, 0x2C, 0x25,
-    0x9F, 0x32, 0xD6, 0x4C, 0xF9, 0xDA, 0x3A, 0x22
-  },
-  {
-    0x51, 0x75, 0x5B, 0x4A, 0xC5, 0x45, 0x6B, 0x13,
-    0x21, 0x8A, 0x19, 0xC5, 0xB9, 0x24, 0x2F, 0x57,
-    0xC4, 0xA9, 0x81, 0xE4, 0xD4, 0xEC, 0xDC, 0xE0,
-    0x9A, 0x31, 0x93, 0x36, 0x2B, 0x80, 0x8A, 0x57,
-    0x93, 0x45, 0xD4, 0x88, 0x1C, 0x26, 0x07, 0xA5,
-    0x65, 0x34, 0xDD, 0x7F, 0x21, 0x95, 0x6A, 0xFF,
-    0x72, 0xC2, 0xF4, 0x17, 0x3A, 0x6E, 0x7B, 0x6C,
-    0xC2, 0x21, 0x2B, 0xA0, 0xE3, 0xDA, 0xEE, 0x1F
-  },
-  {
-    0xDC, 0xC2, 0xC4, 0xBE, 0xB9, 0xC1, 0xF2, 0x60,
-    0x7B, 0x78, 0x6C, 0x20, 0xC6, 0x31, 0x97, 0x23,
-    0x47, 0x03, 0x4C, 0x1C, 0xC0, 0x2F, 0xCC, 0x7D,
-    0x02, 0xFF, 0x01, 0x09, 0x9C, 0xFE, 0x1C, 0x69,
-    0x89, 0x84, 0x0A, 0xC2, 0x13, 0x92, 0x36, 0x29,
-    0x11, 0x3A, 0xA8, 0xBA, 0xD7, 0x13, 0xCC, 0xF0,
-    0xFE, 0x4C, 0xE1, 0x32, 0x64, 0xFB, 0x32, 0xB8,
-    0xB0, 0xFE, 0x37, 0x2D, 0xA3, 0x82, 0x54, 0x4A
-  },
-  {
-    0x3D, 0x55, 0x17, 0x6A, 0xCE, 0xA4, 0xA7, 0xE3,
-    0xA6, 0x5F, 0xFA, 0x9F, 0xB1, 0x0A, 0x7A, 0x17,
-    0x67, 0x19, 0x9C, 0xF0, 0x77, 0xCE, 0xE9, 0xF7,
-    0x15, 0x32, 0xD6, 0x7C, 0xD7, 0xC7, 0x3C, 0x9F,
-    0x93, 0xCF, 0xC3, 0x7C, 0xCD, 0xCC, 0x1F, 0xDE,
-    0xF5, 0x0A, 0xAD, 0x46, 0xA5, 0x04, 0xA6, 0x50,
-    0xD2, 0x98, 0xD5, 0x97, 0xA3, 0xA9, 0xFA, 0x95,
-    0xC6, 0xC4, 0x0C, 0xB7, 0x1F, 0xA5, 0xE7, 0x25
-  },
-  {
-    0xD0, 0x77, 0x13, 0xC0, 0x05, 0xDE, 0x96, 0xDD,
-    0x21, 0xD2, 0xEB, 0x8B, 0xBE, 0xCA, 0x66, 0x74,
-    0x6E, 0xA5, 0x1A, 0x31, 0xAE, 0x92, 0x2A, 0x3E,
-    0x74, 0x86, 0x48, 0x89, 0x54, 0x0A, 0x48, 0xDB,
-    0x27, 0xD7, 0xE4, 0xC9, 0x03, 0x11, 0x63, 0x8B,
-    0x22, 0x4B, 0xF0, 0x20, 0x1B, 0x50, 0x18, 0x91,
-    0x75, 0x48, 0x48, 0x11, 0x3C, 0x26, 0x61, 0x08,
-    0xD0, 0xAD, 0xB1, 0x3D, 0xB7, 0x19, 0x09, 0xC7
-  },
-  {
-    0x58, 0x98, 0x3C, 0x21, 0x43, 0x3D, 0x95, 0x0C,
-    0xAA, 0x23, 0xE4, 0xBC, 0x18, 0x54, 0x3B, 0x8E,
-    0x60, 0x1C, 0x20, 0x43, 0x18, 0x53, 0x21, 0x52,
-    0xDA, 0xF5, 0xE1, 0x59, 0xA0, 0xCD, 0x14, 0x80,
-    0x18, 0x3D, 0x29, 0x28, 0x5C, 0x05, 0xF1, 0x29,
-    0xCB, 0x0C, 0xC3, 0x16, 0x46, 0x87, 0x92, 0x80,
-    0x86, 0xFF, 0xE3, 0x80, 0x15, 0x8D, 0xF1, 0xD3,
-    0x94, 0xC6, 0xAC, 0x0D, 0x42, 0x88, 0xBC, 0xA8
-  },
-  {
-    0x81, 0x00, 0xA8, 0xDC, 0x52, 0x8D, 0x2B, 0x68,
-    0x2A, 0xB4, 0x25, 0x08, 0x01, 0xBA, 0x33, 0xF0,
-    0x2A, 0x3E, 0x94, 0xC5, 0x4D, 0xAC, 0x0A, 0xE1,
-    0x48, 0x2A, 0xA2, 0x1F, 0x51, 0xEF, 0x3A, 0x82,
-    0xF3, 0x80, 0x7E, 0x6F, 0xAC, 0xB0, 0xAE, 0xB0,
-    0x59, 0x47, 0xBF, 0x7A, 0xA2, 0xAD, 0xCB, 0x03,
-    0x43, 0x56, 0xF9, 0x0F, 0xA4, 0x56, 0x0E, 0xDE,
-    0x02, 0x20, 0x1A, 0x37, 0xE4, 0x11, 0xEC, 0x1A
-  },
-  {
-    0x07, 0x02, 0x5F, 0x1B, 0xB6, 0xC7, 0x84, 0xF3,
-    0xFE, 0x49, 0xDE, 0x5C, 0x14, 0xB9, 0x36, 0xA5,
-    0xAC, 0xAC, 0xAC, 0xAA, 0xB3, 0x3F, 0x6A, 0xC4,
-    0xD0, 0xE0, 0x0A, 0xB6, 0xA1, 0x24, 0x83, 0xD6,
-    0xBE, 0xC0, 0x0B, 0x4F, 0xE6, 0x7C, 0x7C, 0xA5,
-    0xCC, 0x50, 0x8C, 0x2A, 0x53, 0xEF, 0xB5, 0xBF,
-    0xA5, 0x39, 0x87, 0x69, 0xD8, 0x43, 0xFF, 0x0D,
-    0x9E, 0x8B, 0x14, 0xD3, 0x6A, 0x01, 0xA7, 0x7F
-  },
-  {
-    0xBA, 0x6A, 0xEF, 0xD9, 0x72, 0xB6, 0x18, 0x6E,
-    0x02, 0x7A, 0x76, 0x27, 0x3A, 0x4A, 0x72, 0x33,
-    0x21, 0xA3, 0xF5, 0x80, 0xCF, 0xA8, 0x94, 0xDA,
-    0x5A, 0x9C, 0xE8, 0xE7, 0x21, 0xC8, 0x28, 0x55,
-    0x2C, 0x64, 0xDA, 0xCE, 0xE3, 0xA7, 0xFD, 0x2D,
-    0x74, 0x3B, 0x5C, 0x35, 0xAD, 0x0C, 0x8E, 0xFA,
-    0x71, 0xF8, 0xCE, 0x99, 0xBF, 0x96, 0x33, 0x47,
-    0x10, 0xE2, 0xC2, 0x34, 0x6E, 0x8F, 0x3C, 0x52
-  },
-  {
-    0xE0, 0x72, 0x1E, 0x02, 0x51, 0x7A, 0xED, 0xFA,
-    0x4E, 0x7E, 0x9B, 0xA5, 0x03, 0xE0, 0x25, 0xFD,
-    0x46, 0xE7, 0x14, 0x56, 0x6D, 0xC8, 0x89, 0xA8,
-    0x4C, 0xBF, 0xE5, 0x6A, 0x55, 0xDF, 0xBE, 0x2F,
-    0xC4, 0x93, 0x8A, 0xC4, 0x12, 0x05, 0x88, 0x33,
-    0x5D, 0xEA, 0xC8, 0xEF, 0x3F, 0xA2, 0x29, 0xAD,
-    0xC9, 0x64, 0x7F, 0x54, 0xAD, 0x2E, 0x34, 0x72,
-    0x23, 0x4F, 0x9B, 0x34, 0xEF, 0xC4, 0x65, 0x43
-  },
-  {
-    0xB6, 0x29, 0x26, 0x69, 0xCC, 0xD3, 0x8D, 0x5F,
-    0x01, 0xCA, 0xAE, 0x96, 0xBA, 0x27, 0x2C, 0x76,
-    0xA8, 0x79, 0xA4, 0x57, 0x43, 0xAF, 0xA0, 0x72,
-    0x5D, 0x83, 0xB9, 0xEB, 0xB2, 0x66, 0x65, 0xB7,
-    0x31, 0xF1, 0x84, 0x8C, 0x52, 0xF1, 0x19, 0x72,
-    0xB6, 0x64, 0x4F, 0x55, 0x4C, 0x06, 0x4F, 0xA9,
-    0x07, 0x80, 0xDB, 0xBB, 0xF3, 0xA8, 0x9D, 0x4F,
-    0xC3, 0x1F, 0x67, 0xDF, 0x3E, 0x58, 0x57, 0xEF
-  },
-  {
-    0x23, 0x19, 0xE3, 0x78, 0x9C, 0x47, 0xE2, 0xDA,
-    0xA5, 0xFE, 0x80, 0x7F, 0x61, 0xBE, 0xC2, 0xA1,
-    0xA6, 0x53, 0x7F, 0xA0, 0x3F, 0x19, 0xFF, 0x32,
-    0xE8, 0x7E, 0xEC, 0xBF, 0xD6, 0x4B, 0x7E, 0x0E,
-    0x8C, 0xCF, 0xF4, 0x39, 0xAC, 0x33, 0x3B, 0x04,
-    0x0F, 0x19, 0xB0, 0xC4, 0xDD, 0xD1, 0x1A, 0x61,
-    0xE2, 0x4A, 0xC1, 0xFE, 0x0F, 0x10, 0xA0, 0x39,
-    0x80, 0x6C, 0x5D, 0xCC, 0x0D, 0xA3, 0xD1, 0x15
-  },
-  {
-    0xF5, 0x97, 0x11, 0xD4, 0x4A, 0x03, 0x1D, 0x5F,
-    0x97, 0xA9, 0x41, 0x3C, 0x06, 0x5D, 0x1E, 0x61,
-    0x4C, 0x41, 0x7E, 0xDE, 0x99, 0x85, 0x90, 0x32,
-    0x5F, 0x49, 0xBA, 0xD2, 0xFD, 0x44, 0x4D, 0x3E,
-    0x44, 0x18, 0xBE, 0x19, 0xAE, 0xC4, 0xE1, 0x14,
-    0x49, 0xAC, 0x1A, 0x57, 0x20, 0x78, 0x98, 0xBC,
-    0x57, 0xD7, 0x6A, 0x1B, 0xCF, 0x35, 0x66, 0x29,
-    0x2C, 0x20, 0xC6, 0x83, 0xA5, 0xC4, 0x64, 0x8F
-  },
-  {
-    0xDF, 0x0A, 0x9D, 0x0C, 0x21, 0x28, 0x43, 0xA6,
-    0xA9, 0x34, 0xE3, 0x90, 0x2B, 0x2D, 0xD3, 0x0D,
-    0x17, 0xFB, 0xA5, 0xF9, 0x69, 0xD2, 0x03, 0x0B,
-    0x12, 0xA5, 0x46, 0xD8, 0xA6, 0xA4, 0x5E, 0x80,
-    0xCF, 0x56, 0x35, 0xF0, 0x71, 0xF0, 0x45, 0x2E,
-    0x9C, 0x91, 0x92, 0x75, 0xDA, 0x99, 0xBE, 0xD5,
-    0x1E, 0xB1, 0x17, 0x3C, 0x1A, 0xF0, 0x51, 0x87,
-    0x26, 0xB7, 0x5B, 0x0E, 0xC3, 0xBA, 0xE2, 0xB5
-  },
-  {
-    0xA3, 0xEB, 0x6E, 0x6C, 0x7B, 0xF2, 0xFB, 0x8B,
-    0x28, 0xBF, 0xE8, 0xB1, 0x5E, 0x15, 0xBB, 0x50,
-    0x0F, 0x78, 0x1E, 0xCC, 0x86, 0xF7, 0x78, 0xC3,
-    0xA4, 0xE6, 0x55, 0xFC, 0x58, 0x69, 0xBF, 0x28,
-    0x46, 0xA2, 0x45, 0xD4, 0xE3, 0x3B, 0x7B, 0x14,
-    0x43, 0x6A, 0x17, 0xE6, 0x3B, 0xE7, 0x9B, 0x36,
-    0x65, 0x5C, 0x22, 0x6A, 0x50, 0xFF, 0xBC, 0x71,
-    0x24, 0x20, 0x7B, 0x02, 0x02, 0x34, 0x2D, 0xB5
-  },
-  {
-    0x56, 0xD4, 0xCB, 0xCD, 0x07, 0x05, 0x63, 0x42,
-    0x6A, 0x01, 0x70, 0x69, 0x42, 0x5C, 0x2C, 0xD2,
-    0xAE, 0x54, 0x06, 0x68, 0x28, 0x7A, 0x5F, 0xB9,
-    0xDA, 0xC4, 0x32, 0xEB, 0x8A, 0xB1, 0xA3, 0x53,
-    0xA3, 0x0F, 0x2F, 0xE1, 0xF4, 0x0D, 0x83, 0x33,
-    0x3A, 0xFE, 0x69, 0x6A, 0x26, 0x77, 0x95, 0x40,
-    0x8A, 0x92, 0xFE, 0x7D, 0xA0, 0x7A, 0x0C, 0x18,
-    0x14, 0xCF, 0x77, 0xF3, 0x6E, 0x10, 0x5E, 0xE8
-  },
-  {
-    0xE5, 0x9B, 0x99, 0x87, 0xD4, 0x28, 0xB3, 0xED,
-    0xA3, 0x7D, 0x80, 0xAB, 0xDB, 0x16, 0xCD, 0x2B,
-    0x0A, 0xEF, 0x67, 0x4C, 0x2B, 0x1D, 0xDA, 0x44,
-    0x32, 0xEA, 0x91, 0xEE, 0x6C, 0x93, 0x5C, 0x68,
-    0x4B, 0x48, 0xB4, 0x42, 0x8A, 0x8C, 0xC7, 0x40,
-    0xE5, 0x79, 0xA3, 0x0D, 0xEF, 0xF3, 0x5A, 0x80,
-    0x30, 0x13, 0x82, 0x0D, 0xD2, 0x3F, 0x14, 0xAE,
-    0x1D, 0x84, 0x13, 0xB5, 0xC8, 0x67, 0x2A, 0xEC
-  },
-  {
-    0xCD, 0x9F, 0xCC, 0x99, 0xF9, 0x9D, 0x4C, 0xC1,
-    0x6D, 0x03, 0x19, 0x00, 0xB2, 0xA7, 0x36, 0xE1,
-    0x50, 0x8D, 0xB4, 0xB5, 0x86, 0x81, 0x4E, 0x63,
-    0x45, 0x85, 0x7F, 0x35, 0x4A, 0x70, 0xCC, 0xEC,
-    0xB1, 0xDF, 0x3B, 0x50, 0xA1, 0x9A, 0xDA, 0xF4,
-    0x3C, 0x27, 0x8E, 0xFA, 0x42, 0x3F, 0xF4, 0xBB,
-    0x6C, 0x52, 0x3E, 0xC7, 0xFD, 0x78, 0x59, 0xB9,
-    0x7B, 0x16, 0x8A, 0x7E, 0xBF, 0xF8, 0x46, 0x7C
-  },
-  {
-    0x06, 0x02, 0x18, 0x5D, 0x8C, 0x3A, 0x78, 0x73,
-    0x8B, 0x99, 0x16, 0x4B, 0x8B, 0xC6, 0xFF, 0xB2,
-    0x1C, 0x7D, 0xEB, 0xEB, 0xBF, 0x80, 0x63, 0x72,
-    0xE0, 0xDA, 0x44, 0xD1, 0x21, 0x54, 0x55, 0x97,
-    0xB9, 0xC6, 0x62, 0xA2, 0x55, 0xDC, 0x31, 0x54,
-    0x2C, 0xF9, 0x95, 0xEC, 0xBE, 0x6A, 0x50, 0xFB,
-    0x5E, 0x6E, 0x0E, 0xE4, 0xEF, 0x24, 0x0F, 0xE5,
-    0x57, 0xED, 0xED, 0x11, 0x88, 0x08, 0x7E, 0x86
-  },
-  {
-    0xC0, 0x8A, 0xFA, 0x5B, 0x92, 0x7B, 0xF0, 0x80,
-    0x97, 0xAF, 0xC5, 0xFF, 0xF9, 0xCA, 0x4E, 0x78,
-    0x00, 0x12, 0x5C, 0x1F, 0x52, 0xF2, 0xAF, 0x35,
-    0x53, 0xFA, 0x2B, 0x89, 0xE1, 0xE3, 0x01, 0x5C,
-    0x4F, 0x87, 0xD5, 0xE0, 0xA4, 0x89, 0x56, 0xAD,
-    0x31, 0x45, 0x0B, 0x08, 0x3D, 0xAD, 0x14, 0x7F,
-    0xFB, 0x5E, 0xC0, 0x34, 0x34, 0xA2, 0x68, 0x30,
-    0xCF, 0x37, 0xD1, 0x03, 0xAB, 0x50, 0xC5, 0xDA
-  },
-  {
-    0x36, 0xF1, 0xE1, 0xC1, 0x1D, 0x6E, 0xF6, 0xBC,
-    0x3B, 0x53, 0x6D, 0x50, 0x5D, 0x54, 0x4A, 0x87,
-    0x15, 0x22, 0xC5, 0xC2, 0xA2, 0x53, 0x06, 0x7E,
-    0xC9, 0x93, 0x3B, 0x6E, 0xC2, 0x54, 0x64, 0xDA,
-    0xF9, 0x85, 0x52, 0x5F, 0x5B, 0x95, 0x60, 0xA1,
-    0x6D, 0x89, 0x02, 0x59, 0xAC, 0x1B, 0xB5, 0xCC,
-    0x67, 0xC0, 0xC4, 0x69, 0xCD, 0xE1, 0x33, 0xDE,
-    0xF0, 0x00, 0xEA, 0x1D, 0x68, 0x6F, 0x4F, 0x5D
-  },
-  {
-    0xBF, 0x2A, 0xB2, 0xE2, 0x47, 0x0F, 0x54, 0x38,
-    0xC3, 0xB6, 0x89, 0xE6, 0x6E, 0x76, 0x86, 0xFF,
-    0xFA, 0x0C, 0xB1, 0xE1, 0x79, 0x8A, 0xD3, 0xA8,
-    0x6F, 0xF9, 0x90, 0x75, 0xBF, 0x61, 0x38, 0xE3,
-    0x3D, 0x9C, 0x0C, 0xE5, 0x9A, 0xFB, 0x24, 0xAC,
-    0x67, 0xA0, 0x2A, 0xF3, 0x44, 0x28, 0x19, 0x1A,
-    0x9A, 0x0A, 0x60, 0x41, 0xC0, 0x74, 0x71, 0xB7,
-    0xC3, 0xB1, 0xA7, 0x52, 0xD6, 0xFC, 0x0B, 0x8B
-  },
-  {
-    0xD4, 0x00, 0x60, 0x1F, 0x97, 0x28, 0xCC, 0xC4,
-    0xC9, 0x23, 0x42, 0xD9, 0x78, 0x7D, 0x8D, 0x28,
-    0xAB, 0x32, 0x3A, 0xF3, 0x75, 0xCA, 0x56, 0x24,
-    0xB4, 0xBB, 0x91, 0xD1, 0x72, 0x71, 0xFB, 0xAE,
-    0x86, 0x2E, 0x41, 0x3B, 0xE7, 0x3F, 0x1F, 0x68,
-    0xE6, 0x15, 0xB8, 0xC5, 0xC3, 0x91, 0xBE, 0x0D,
-    0xBD, 0x91, 0x44, 0x74, 0x6E, 0xB3, 0x39, 0xAD,
-    0x54, 0x15, 0x47, 0xBA, 0x9C, 0x46, 0x8A, 0x17
-  },
-  {
-    0x79, 0xFE, 0x2F, 0xE1, 0x57, 0xEB, 0x85, 0xA0,
-    0x38, 0xAB, 0xB8, 0xEB, 0xBC, 0x64, 0x77, 0x31,
-    0xD2, 0xC8, 0x3F, 0x51, 0xB0, 0xAC, 0x6E, 0xE1,
-    0x4A, 0xA2, 0x84, 0xCB, 0x6A, 0x35, 0x49, 0xA4,
-    0xDC, 0xCE, 0xB3, 0x00, 0x74, 0x0A, 0x82, 0x5F,
-    0x52, 0xF5, 0xFB, 0x30, 0xB0, 0x3B, 0x8C, 0x4D,
-    0x8B, 0x0F, 0x4A, 0xA6, 0x7A, 0x63, 0xF4, 0xA9,
-    0x4E, 0x33, 0x03, 0xC4, 0xED, 0xA4, 0xC0, 0x2B
-  },
-  {
-    0x75, 0x35, 0x13, 0x13, 0xB5, 0x2A, 0x85, 0x29,
-    0x29, 0x8D, 0x8C, 0x18, 0x6B, 0x17, 0x68, 0x66,
-    0x6D, 0xCC, 0xA8, 0x59, 0x53, 0x17, 0xD7, 0xA4,
-    0x81, 0x6E, 0xB8, 0x8C, 0x06, 0x20, 0x20, 0xC0,
-    0xC8, 0xEF, 0xC5, 0x54, 0xBB, 0x34, 0x1B, 0x64,
-    0x68, 0x8D, 0xB5, 0xCC, 0xAF, 0xC3, 0x5F, 0x3C,
-    0x3C, 0xD0, 0x9D, 0x65, 0x64, 0xB3, 0x6D, 0x7B,
-    0x04, 0xA2, 0x48, 0xE1, 0x46, 0x98, 0x0D, 0x4B
-  },
-  {
-    0xE3, 0x12, 0x8B, 0x1D, 0x31, 0x1D, 0x02, 0x17,
-    0x9D, 0x7F, 0x25, 0xF9, 0x7A, 0x5A, 0x8B, 0xEE,
-    0x2C, 0xC8, 0xC8, 0x63, 0x03, 0x64, 0x4F, 0xCD,
-    0x66, 0x4E, 0x15, 0x7D, 0x1F, 0xEF, 0x00, 0xF2,
-    0x3E, 0x46, 0xF9, 0xA5, 0xE8, 0xE5, 0xC8, 0x90,
-    0xCE, 0x56, 0x5B, 0xB6, 0xAB, 0xD4, 0x30, 0x2C,
-    0xE0, 0x64, 0x69, 0xD5, 0x2A, 0x5B, 0xD5, 0x3E,
-    0x1C, 0x5A, 0x54, 0xD0, 0x46, 0x49, 0xDC, 0x03
-  },
-  {
-    0xC2, 0x38, 0x2A, 0x72, 0xD2, 0xD3, 0xAC, 0xE9,
-    0xD5, 0x93, 0x3D, 0x00, 0xB6, 0x08, 0x27, 0xED,
-    0x38, 0x0C, 0xDA, 0x08, 0xD0, 0xBA, 0x5F, 0x6D,
-    0xD4, 0x1E, 0x29, 0xEE, 0x6D, 0xBE, 0x8E, 0xCB,
-    0x92, 0x35, 0xF0, 0x6B, 0xE9, 0x5D, 0x83, 0xB6,
-    0x81, 0x6A, 0x2F, 0xB7, 0xA5, 0xAD, 0x47, 0x03,
-    0x5E, 0x8A, 0x4B, 0x69, 0xA4, 0x88, 0x4B, 0x99,
-    0xE4, 0xBE, 0xCE, 0x58, 0xCA, 0xB2, 0x5D, 0x44
-  },
-  {
-    0x6B, 0x1C, 0x69, 0x46, 0x0B, 0xBD, 0x50, 0xAC,
-    0x2E, 0xD6, 0xF3, 0x2E, 0x6E, 0x88, 0x7C, 0xFE,
-    0xD4, 0x07, 0xD4, 0x7D, 0xCF, 0x0A, 0xAA, 0x60,
-    0x38, 0x7F, 0xE3, 0x20, 0xD7, 0x80, 0xBD, 0x03,
-    0xEA, 0xB6, 0xD7, 0xBA, 0xEB, 0x2A, 0x07, 0xD1,
-    0x0C, 0xD5, 0x52, 0xA3, 0x00, 0x34, 0x13, 0x54,
-    0xEA, 0x9A, 0x5F, 0x03, 0x18, 0x3A, 0x62, 0x3F,
-    0x92, 0xA2, 0xD4, 0xD9, 0xF0, 0x09, 0x26, 0xAF
-  },
-  {
-    0x6C, 0xDA, 0x20, 0x6C, 0x80, 0xCD, 0xC9, 0xC4,
-    0x4B, 0xA9, 0x90, 0xE0, 0x32, 0x8C, 0x31, 0x4F,
-    0x81, 0x9B, 0x14, 0x2D, 0x00, 0x63, 0x04, 0x04,
-    0xC4, 0x8C, 0x05, 0xDC, 0x76, 0xD1, 0xB0, 0x0C,
-    0xE4, 0xD7, 0x2F, 0xC6, 0xA4, 0x8E, 0x14, 0x69,
-    0xDD, 0xEF, 0x60, 0x94, 0x12, 0xC3, 0x64, 0x82,
-    0x08, 0x54, 0x21, 0x4B, 0x48, 0x69, 0xAF, 0x09,
-    0x0F, 0x00, 0xD3, 0xC1, 0xBA, 0x44, 0x3E, 0x1B
-  },
-  {
-    0x7F, 0xFC, 0x8C, 0x26, 0xFB, 0xD6, 0xA0, 0xF7,
-    0xA6, 0x09, 0xE6, 0xE1, 0x93, 0x9F, 0x6A, 0x9E,
-    0xDF, 0x1B, 0x0B, 0x06, 0x66, 0x41, 0xFB, 0x76,
-    0xC4, 0xF9, 0x60, 0x2E, 0xD7, 0x48, 0xD1, 0x16,
-    0x02, 0x49, 0x6B, 0x35, 0x35, 0x5B, 0x1A, 0xA2,
-    0x55, 0x85, 0x0A, 0x50, 0x9D, 0x2F, 0x8E, 0xE1,
-    0x8C, 0x8F, 0x3E, 0x1D, 0x7D, 0xCB, 0xC3, 0x7A,
-    0x13, 0x65, 0x98, 0xF5, 0x6A, 0x59, 0xED, 0x17
-  },
-  {
-    0x70, 0xDE, 0x1F, 0x08, 0xDD, 0x4E, 0x09, 0xD5,
-    0xFC, 0x15, 0x1F, 0x17, 0xFC, 0x99, 0x1A, 0x23,
-    0xAB, 0xFC, 0x05, 0x10, 0x42, 0x90, 0xD5, 0x04,
-    0x68, 0x88, 0x2E, 0xFA, 0xF5, 0x82, 0xB6, 0xEC,
-    0x2F, 0x14, 0xF5, 0x77, 0xC0, 0xD6, 0x8C, 0x3A,
-    0xD0, 0x66, 0x26, 0x91, 0x6E, 0x3C, 0x86, 0xE6,
-    0xDA, 0xAB, 0x6C, 0x53, 0xE5, 0x16, 0x3E, 0x82,
-    0xB6, 0xBD, 0x0C, 0xE4, 0x9F, 0xC0, 0xD8, 0xDF
-  },
-  {
-    0x4F, 0x81, 0x93, 0x57, 0x56, 0xED, 0x35, 0xEE,
-    0x20, 0x58, 0xEE, 0x0C, 0x6A, 0x61, 0x10, 0xD6,
-    0xFA, 0xC5, 0xCB, 0x6A, 0x4F, 0x46, 0xAA, 0x94,
-    0x11, 0x60, 0x3F, 0x99, 0x96, 0x58, 0x23, 0xB6,
-    0xDA, 0x48, 0x38, 0x27, 0x6C, 0x5C, 0x06, 0xBC,
-    0x78, 0x80, 0xE3, 0x76, 0xD9, 0x27, 0x58, 0x36,
-    0x9E, 0xE7, 0x30, 0x5B, 0xCE, 0xC8, 0xD3, 0xCF,
-    0xD2, 0x8C, 0xCA, 0xBB, 0x7B, 0x4F, 0x05, 0x79
-  },
-  {
-    0xAB, 0xCB, 0x61, 0xCB, 0x36, 0x83, 0xD1, 0x8F,
-    0x27, 0xAD, 0x52, 0x79, 0x08, 0xED, 0x2D, 0x32,
-    0xA0, 0x42, 0x6C, 0xB7, 0xBB, 0x4B, 0xF1, 0x80,
-    0x61, 0x90, 0x3A, 0x7D, 0xC4, 0x2E, 0x7E, 0x76,
-    0xF9, 0x82, 0x38, 0x23, 0x04, 0xD1, 0x8A, 0xF8,
-    0xC8, 0x0D, 0x91, 0xDD, 0x58, 0xDD, 0x47, 0xAF,
-    0x76, 0xF8, 0xE2, 0xC3, 0x6E, 0x28, 0xAF, 0x24,
-    0x76, 0xB4, 0xBC, 0xCF, 0x82, 0xE8, 0x9F, 0xDF
-  },
-  {
-    0x02, 0xD2, 0x61, 0xAD, 0x56, 0xA5, 0x26, 0x33,
-    0x1B, 0x64, 0x3D, 0xD2, 0x18, 0x6D, 0xE9, 0xA8,
-    0x2E, 0x72, 0xA5, 0x82, 0x23, 0xCD, 0x1E, 0x72,
-    0x36, 0x86, 0xC5, 0x3D, 0x86, 0x9B, 0x83, 0xB9,
-    0x46, 0x32, 0xB7, 0xB6, 0x47, 0xAB, 0x2A, 0xFC,
-    0x0D, 0x52, 0x2E, 0x29, 0xDA, 0x3A, 0x56, 0x15,
-    0xB7, 0x41, 0xD8, 0x28, 0x52, 0xE0, 0xDF, 0x41,
-    0xB6, 0x60, 0x07, 0xDB, 0xCB, 0xA9, 0x05, 0x43
-  },
-  {
-    0xC5, 0x83, 0x27, 0x41, 0xFA, 0x30, 0xC5, 0x43,
-    0x68, 0x23, 0x01, 0x53, 0x83, 0xD2, 0x97, 0xFF,
-    0x4C, 0x4A, 0x5D, 0x72, 0x76, 0xC3, 0xF9, 0x02,
-    0x12, 0x20, 0x66, 0xE0, 0x4B, 0xE5, 0x43, 0x1B,
-    0x1A, 0x85, 0xFA, 0xF7, 0x3B, 0x91, 0x84, 0x34,
-    0xF9, 0x30, 0x09, 0x63, 0xD1, 0xDE, 0xA9, 0xE8,
-    0xAC, 0x39, 0x24, 0xEF, 0x49, 0x02, 0x26, 0xED,
-    0xEE, 0xA5, 0xF7, 0x43, 0xE4, 0x10, 0x66, 0x9F
-  },
-  {
-    0xCF, 0xAE, 0xAB, 0x26, 0x8C, 0xD0, 0x75, 0xA5,
-    0xA6, 0xAE, 0xD5, 0x15, 0x02, 0x3A, 0x03, 0x2D,
-    0x54, 0xF2, 0xF2, 0xFF, 0x73, 0x3C, 0xE0, 0xCB,
-    0xC7, 0x8D, 0xB5, 0x1D, 0xB4, 0x50, 0x4D, 0x67,
-    0x59, 0x23, 0xF8, 0x27, 0x46, 0xD6, 0x59, 0x46,
-    0x06, 0xAD, 0x5D, 0x67, 0x73, 0x4B, 0x11, 0xA6,
-    0x7C, 0xC6, 0xA4, 0x68, 0xC2, 0x03, 0x2E, 0x43,
-    0xCA, 0x1A, 0x94, 0xC6, 0x27, 0x3A, 0x98, 0x5E
-  },
-  {
-    0x86, 0x08, 0x50, 0xF9, 0x2E, 0xB2, 0x68, 0x27,
-    0x2B, 0x67, 0xD1, 0x33, 0x60, 0x9B, 0xD6, 0x4E,
-    0x34, 0xF6, 0x1B, 0xF0, 0x3F, 0x4C, 0x17, 0x38,
-    0x64, 0x5C, 0x17, 0xFE, 0xC8, 0x18, 0x46, 0x5D,
-    0x7E, 0xCD, 0x2B, 0xE2, 0x90, 0x76, 0x41, 0x13,
-    0x00, 0x25, 0xFD, 0xA7, 0x94, 0x70, 0xAB, 0x73,
-    0x16, 0x46, 0xE7, 0xF6, 0x94, 0x40, 0xE8, 0x36,
-    0x7E, 0xA7, 0x6A, 0xC4, 0xCE, 0xE8, 0xA1, 0xDF
-  },
-  {
-    0x84, 0xB1, 0x54, 0xED, 0x29, 0xBB, 0xED, 0xEF,
-    0xA6, 0x48, 0x28, 0x68, 0x39, 0x04, 0x6F, 0x4B,
-    0x5A, 0xA3, 0x44, 0x30, 0xE2, 0xD6, 0x7F, 0x74,
-    0x96, 0xE4, 0xC3, 0x9F, 0x2C, 0x7E, 0xA7, 0x89,
-    0x95, 0xF6, 0x9E, 0x12, 0x92, 0x20, 0x00, 0x16,
-    0xF1, 0x6A, 0xC3, 0xB3, 0x77, 0x00, 0xE6, 0xC7,
-    0xE7, 0x86, 0x1A, 0xFC, 0x39, 0x6B, 0x64, 0xA5,
-    0x9A, 0x1D, 0xBF, 0x47, 0xA5, 0x5C, 0x4B, 0xBC
-  },
-  {
-    0xAE, 0xEE, 0xC2, 0x60, 0xA5, 0xD8, 0xEF, 0xF5,
-    0xCC, 0xAB, 0x8B, 0x95, 0xDA, 0x43, 0x5A, 0x63,
-    0xED, 0x7A, 0x21, 0xEA, 0x7F, 0xC7, 0x55, 0x94,
-    0x13, 0xFD, 0x61, 0x7E, 0x33, 0x60, 0x9F, 0x8C,
-    0x29, 0x0E, 0x64, 0xBB, 0xAC, 0xC5, 0x28, 0xF6,
-    0xC0, 0x80, 0x26, 0x22, 0x88, 0xB0, 0xF0, 0xA3,
-    0x21, 0x9B, 0xE2, 0x23, 0xC9, 0x91, 0xBE, 0xE9,
-    0x2E, 0x72, 0x34, 0x95, 0x93, 0xE6, 0x76, 0x38
-  },
-  {
-    0x8A, 0xD7, 0x8A, 0x9F, 0x26, 0x60, 0x1D, 0x12,
-    0x7E, 0x8D, 0x2F, 0x2F, 0x97, 0x6E, 0x63, 0xD1,
-    0x9A, 0x05, 0x4A, 0x17, 0xDC, 0xF5, 0x9E, 0x0F,
-    0x01, 0x3A, 0xB5, 0x4A, 0x68, 0x87, 0xBB, 0xDF,
-    0xFD, 0xE7, 0xAA, 0xAE, 0x11, 0x7E, 0x0F, 0xBF,
-    0x32, 0x71, 0x01, 0x65, 0x95, 0xB9, 0xD9, 0xC7,
-    0x12, 0xC0, 0x1B, 0x2C, 0x53, 0xE9, 0x65, 0x5A,
-    0x38, 0x2B, 0xC4, 0x52, 0x2E, 0x61, 0x66, 0x45
-  },
-  {
-    0x89, 0x34, 0x15, 0x9D, 0xAD, 0xE1, 0xAC, 0x74,
-    0x14, 0x7D, 0xFA, 0x28, 0x2C, 0x75, 0x95, 0x4F,
-    0xCE, 0xF4, 0x43, 0xEF, 0x25, 0xF8, 0x0D, 0xFE,
-    0x9F, 0xB6, 0xEA, 0x63, 0x3B, 0x85, 0x45, 0x11,
-    0x1D, 0x08, 0xB3, 0x4E, 0xF4, 0x3F, 0xFF, 0x17,
-    0x02, 0x6C, 0x79, 0x64, 0xF5, 0xDE, 0xAC, 0x6D,
-    0x2B, 0x3C, 0x29, 0xDA, 0xCF, 0x27, 0x47, 0xF0,
-    0x22, 0xDF, 0x59, 0x67, 0xDF, 0xDC, 0x1A, 0x0A
-  },
-  {
-    0xCD, 0x36, 0xDD, 0x0B, 0x24, 0x06, 0x14, 0xCF,
-    0x2F, 0xA2, 0xB9, 0xE9, 0x59, 0x67, 0x9D, 0xCD,
-    0xD7, 0x2E, 0xC0, 0xCD, 0x58, 0xA4, 0x3D, 0xA3,
-    0x79, 0x0A, 0x92, 0xF6, 0xCD, 0xEB, 0x9E, 0x1E,
-    0x79, 0x5E, 0x47, 0x8A, 0x0A, 0x47, 0xD3, 0x71,
-    0x10, 0x0D, 0x34, 0x0C, 0x5C, 0xED, 0xCD, 0xBB,
-    0xC9, 0xE6, 0x8B, 0x3F, 0x46, 0x08, 0x18, 0xE5,
-    0xBD, 0xFF, 0x7B, 0x4C, 0xDA, 0x4C, 0x27, 0x44
-  },
-  {
-    0x00, 0xDF, 0x4E, 0x09, 0x9B, 0x80, 0x71, 0x37,
-    0xA8, 0x59, 0x90, 0xF4, 0x9D, 0x3A, 0x94, 0x31,
-    0x5E, 0x5A, 0x5F, 0x7F, 0x7A, 0x60, 0x76, 0xB3,
-    0x03, 0xE9, 0x6B, 0x05, 0x6F, 0xB9, 0x38, 0x00,
-    0x11, 0x1F, 0x47, 0x96, 0x28, 0xE2, 0xF8, 0xDB,
-    0x59, 0xAE, 0xB6, 0xAC, 0x70, 0xC3, 0xB6, 0x1F,
-    0x51, 0xF9, 0xB4, 0x6E, 0x80, 0xFF, 0xDE, 0xAE,
-    0x25, 0xEB, 0xDD, 0xB4, 0xAF, 0x6C, 0xB4, 0xEE
-  },
-  {
-    0x2B, 0x9C, 0x95, 0x5E, 0x6C, 0xAE, 0xD4, 0xB7,
-    0xC9, 0xE2, 0x46, 0xB8, 0x6F, 0x9A, 0x17, 0x26,
-    0xE8, 0x10, 0xC5, 0x9D, 0x12, 0x6C, 0xEE, 0x66,
-    0xED, 0x71, 0xBF, 0x01, 0x5B, 0x83, 0x55, 0x8A,
-    0x4B, 0x6D, 0x84, 0xD1, 0x8D, 0xC3, 0xFF, 0x46,
-    0x20, 0xC2, 0xFF, 0xB7, 0x22, 0x35, 0x9F, 0xDE,
-    0xF8, 0x5B, 0xA0, 0xD4, 0xE2, 0xD2, 0x2E, 0xCB,
-    0xE0, 0xED, 0x78, 0x4F, 0x99, 0xAF, 0xE5, 0x87
-  },
-  {
-    0x18, 0x1D, 0xF0, 0xA2, 0x61, 0xA2, 0xF7, 0xD2,
-    0x9E, 0xA5, 0xA1, 0x57, 0x72, 0x71, 0x51, 0x05,
-    0xD4, 0x50, 0xA4, 0xB6, 0xC2, 0x36, 0xF6, 0x99,
-    0xF4, 0x62, 0xD6, 0x0C, 0xA7, 0x64, 0x87, 0xFE,
-    0xED, 0xFC, 0x9F, 0x5E, 0xB9, 0x2D, 0xF8, 0x38,
-    0xE8, 0xFB, 0x5D, 0xC3, 0x69, 0x4E, 0x84, 0xC5,
-    0xE0, 0xF4, 0xA1, 0x0B, 0x76, 0x1F, 0x50, 0x67,
-    0x62, 0xBE, 0x05, 0x2C, 0x74, 0x5A, 0x6E, 0xE8
-  },
-  {
-    0x21, 0xFB, 0x20, 0x34, 0x58, 0xBF, 0x3A, 0x7E,
-    0x9A, 0x80, 0x43, 0x9F, 0x9A, 0x90, 0x28, 0x99,
-    0xCD, 0x5D, 0xE0, 0x13, 0x9D, 0xFD, 0x56, 0xF7,
-    0x11, 0x0C, 0x9D, 0xEC, 0x84, 0x37, 0xB2, 0x6B,
-    0xDA, 0x63, 0xDE, 0x2F, 0x56, 0x59, 0x26, 0xD8,
-    0x5E, 0xDB, 0x1D, 0x6C, 0x68, 0x25, 0x66, 0x97,
-    0x43, 0xDD, 0x99, 0x92, 0x65, 0x3D, 0x13, 0x97,
-    0x95, 0x44, 0xD5, 0xDC, 0x82, 0x28, 0xBF, 0xAA
-  },
-  {
-    0xEF, 0x02, 0x1F, 0x29, 0xC5, 0xFF, 0xB8, 0x30,
-    0xE6, 0x4B, 0x9A, 0xA9, 0x05, 0x8D, 0xD6, 0x60,
-    0xFD, 0x2F, 0xCB, 0x81, 0xC4, 0x97, 0xA7, 0xE6,
-    0x98, 0xBC, 0xFB, 0xF5, 0x9D, 0xE5, 0xAD, 0x4A,
-    0x86, 0xFF, 0x93, 0xC1, 0x0A, 0x4B, 0x9D, 0x1A,
-    0xE5, 0x77, 0x47, 0x25, 0xF9, 0x07, 0x2D, 0xCD,
-    0xE9, 0xE1, 0xF1, 0x99, 0xBA, 0xB9, 0x1F, 0x8B,
-    0xFF, 0x92, 0x18, 0x64, 0xAA, 0x50, 0x2E, 0xEE
-  },
-  {
-    0xB3, 0xCF, 0xDA, 0x40, 0x52, 0x6B, 0x7F, 0x1D,
-    0x37, 0x56, 0x9B, 0xDF, 0xCD, 0xF9, 0x11, 0xE5,
-    0xA6, 0xEF, 0xE6, 0xB2, 0xEC, 0x90, 0xA0, 0x45,
-    0x4C, 0x47, 0xB2, 0xC0, 0x46, 0xBF, 0x13, 0x0F,
-    0xC3, 0xB3, 0x52, 0xB3, 0x4D, 0xF4, 0x81, 0x3D,
-    0x48, 0xD3, 0x3A, 0xB8, 0xE2, 0x69, 0xB6, 0x9B,
-    0x07, 0x56, 0x76, 0xCB, 0x6D, 0x00, 0xA8, 0xDC,
-    0xF9, 0xE1, 0xF9, 0x67, 0xEC, 0x19, 0x1B, 0x2C
-  },
-  {
-    0xB4, 0xC6, 0xC3, 0xB2, 0x67, 0x07, 0x1E, 0xEF,
-    0xB9, 0xC8, 0xC7, 0x2E, 0x0E, 0x2B, 0x94, 0x12,
-    0x93, 0x64, 0x1F, 0x86, 0x73, 0xCB, 0x70, 0xC1,
-    0xCC, 0x26, 0xAD, 0x1E, 0x73, 0xCF, 0x14, 0x17,
-    0x55, 0x86, 0x0A, 0xD1, 0x9B, 0x34, 0xC2, 0xF3,
-    0x4E, 0xD3, 0x5B, 0xB5, 0x2E, 0xC4, 0x50, 0x7C,
-    0xC1, 0xFE, 0x59, 0x04, 0x77, 0x43, 0xA5, 0xF0,
-    0xC6, 0xFE, 0xBD, 0xE6, 0x25, 0xE2, 0x60, 0x91
-  },
-  {
-    0x57, 0xA3, 0x4F, 0x2B, 0xCC, 0xA6, 0x0D, 0x4B,
-    0x85, 0x10, 0x3B, 0x83, 0x0C, 0x9D, 0x79, 0x52,
-    0xA4, 0x16, 0xBE, 0x52, 0x63, 0xAE, 0x42, 0x9C,
-    0x9E, 0x5E, 0x53, 0xFE, 0x85, 0x90, 0xA8, 0xF7,
-    0x8E, 0xC6, 0x5A, 0x51, 0x10, 0x9E, 0xA8, 0x5D,
-    0xCD, 0xF7, 0xB6, 0x22, 0x3F, 0x9F, 0x2B, 0x34,
-    0x05, 0x39, 0xFA, 0xD8, 0x19, 0x23, 0xDB, 0xF8,
-    0xED, 0xAB, 0xF9, 0x51, 0x29, 0xE4, 0xDF, 0xF6
-  },
-  {
-    0x9C, 0xF4, 0x66, 0x62, 0xFC, 0xD6, 0x1A, 0x23,
-    0x22, 0x77, 0xB6, 0x85, 0x66, 0x3B, 0x8B, 0x5D,
-    0xA8, 0x32, 0xDF, 0xD9, 0xA3, 0xB8, 0xCC, 0xFE,
-    0xEC, 0x99, 0x3E, 0xC6, 0xAC, 0x41, 0x5A, 0xD0,
-    0x7E, 0x04, 0x8A, 0xDF, 0xE4, 0x14, 0xDF, 0x27,
-    0x27, 0x70, 0xDB, 0xA8, 0x67, 0xDA, 0x5C, 0x12,
-    0x24, 0xC6, 0xFD, 0x0A, 0xA0, 0xC2, 0x18, 0x7D,
-    0x42, 0x6A, 0xC6, 0x47, 0xE9, 0x88, 0x73, 0x61
-  },
-  {
-    0x5C, 0xE1, 0x04, 0x2A, 0xB4, 0xD5, 0x42, 0xC2,
-    0xF9, 0xEE, 0x9D, 0x17, 0x26, 0x2A, 0xF8, 0x16,
-    0x40, 0x98, 0x93, 0x5B, 0xEF, 0x17, 0x3D, 0x0E,
-    0x18, 0x48, 0x9B, 0x04, 0x84, 0x17, 0x46, 0xCD,
-    0x2F, 0x2D, 0xF8, 0x66, 0xBD, 0x7D, 0xA6, 0xE5,
-    0xEF, 0x90, 0x24, 0xC6, 0x48, 0x02, 0x3E, 0xC7,
-    0x23, 0xAB, 0x9C, 0x62, 0xFD, 0x80, 0x28, 0x57,
-    0x39, 0xD8, 0x4F, 0x15, 0xD2, 0xAB, 0x51, 0x5A
-  },
-  {
-    0x84, 0x88, 0x39, 0x6B, 0xD4, 0xA8, 0x72, 0x9B,
-    0x7A, 0x47, 0x31, 0x78, 0xF2, 0x32, 0xDA, 0xDF,
-    0x3F, 0x0F, 0x8E, 0x22, 0x67, 0x8B, 0xA5, 0xA4,
-    0x3E, 0x04, 0x1E, 0x72, 0xDA, 0x1E, 0x2C, 0xF8,
-    0x21, 0x94, 0xC3, 0x07, 0x20, 0x7A, 0x54, 0xCB,
-    0x81, 0x56, 0x29, 0x33, 0x39, 0xEA, 0xEC, 0x69,
-    0x3F, 0xF6, 0x6B, 0xFC, 0xD5, 0xEF, 0xC6, 0x5E,
-    0x95, 0xE4, 0xEC, 0xAF, 0x54, 0x53, 0x0A, 0xBD
-  },
-  {
-    0xF5, 0x98, 0xDA, 0x90, 0x1C, 0x38, 0x35, 0xBC,
-    0xA5, 0x60, 0x77, 0x90, 0x37, 0xDF, 0xDE, 0x9F,
-    0x0C, 0x51, 0xDC, 0x61, 0xC0, 0xB7, 0x60, 0xFC,
-    0x15, 0x22, 0xD7, 0xB4, 0x70, 0xEE, 0x63, 0xF5,
-    0xBD, 0xC6, 0x49, 0x84, 0x76, 0xE8, 0x60, 0x49,
-    0xAD, 0x86, 0xE4, 0xE2, 0x1A, 0xF2, 0x85, 0x4A,
-    0x98, 0x4C, 0xC9, 0x05, 0x42, 0x7D, 0x2F, 0x17,
-    0xF6, 0x6B, 0x1F, 0x41, 0xC3, 0xDA, 0x6F, 0x61
-  },
-  {
-    0x5F, 0x93, 0x26, 0x97, 0x98, 0xCF, 0x02, 0x13,
-    0x21, 0x07, 0x33, 0x76, 0x60, 0xA8, 0xD7, 0xA1,
-    0x77, 0x35, 0x4C, 0x02, 0x12, 0xEB, 0x93, 0xE5,
-    0x55, 0xE7, 0xC3, 0x7A, 0x08, 0xAE, 0xF3, 0xD8,
-    0xDC, 0xE0, 0x12, 0x17, 0x01, 0x1C, 0xD9, 0x65,
-    0xC0, 0x4D, 0xD2, 0xC1, 0x05, 0xF2, 0xE2, 0xB6,
-    0xCA, 0xE5, 0xE4, 0xE6, 0xBC, 0xAF, 0x09, 0xDF,
-    0xBE, 0xE3, 0xE0, 0xA6, 0xA6, 0x35, 0x7C, 0x37
-  },
-  {
-    0x0E, 0xCF, 0x58, 0x1D, 0x47, 0xBA, 0xC9, 0x23,
-    0x09, 0x86, 0xFA, 0xAB, 0xD7, 0x0C, 0x2F, 0x5B,
-    0x80, 0xE9, 0x10, 0x66, 0xF0, 0xEC, 0x55, 0xA8,
-    0x42, 0x93, 0x78, 0x82, 0x28, 0x6D, 0x2C, 0xA0,
-    0x07, 0xBB, 0x4E, 0x97, 0x3B, 0x0B, 0x09, 0x1D,
-    0x52, 0x16, 0x7F, 0xF7, 0xC4, 0x00, 0x9C, 0x7A,
-    0xB4, 0xAD, 0x38, 0xFF, 0xF1, 0xDC, 0xEA, 0xCD,
-    0xB7, 0xBE, 0x81, 0xEF, 0x4A, 0x45, 0x29, 0x52
-  },
-  {
-    0x5A, 0xEC, 0xA8, 0xAB, 0xE1, 0x52, 0x85, 0x82,
-    0xB2, 0xA3, 0x07, 0xB4, 0x00, 0x95, 0x85, 0x49,
-    0x8A, 0x3D, 0x46, 0x7C, 0xA6, 0x10, 0x1C, 0xB0,
-    0xC5, 0x12, 0x6F, 0x99, 0x76, 0x05, 0x6E, 0x9F,
-    0xFC, 0x12, 0x3C, 0xC2, 0x0C, 0x30, 0x2B, 0x2A,
-    0x73, 0x7F, 0x49, 0x2C, 0x75, 0xD2, 0x1F, 0x01,
-    0x51, 0x2C, 0x90, 0xCA, 0x05, 0x41, 0xDF, 0xA5,
-    0x6E, 0x95, 0x0A, 0x32, 0x1D, 0xCB, 0x28, 0xD8
-  },
-  {
-    0x73, 0x2F, 0xBF, 0x8F, 0x1C, 0xB2, 0xB8, 0x32,
-    0x92, 0x63, 0xED, 0xE2, 0x78, 0x58, 0xFE, 0x46,
-    0xF8, 0xD3, 0x35, 0x4D, 0x37, 0x6B, 0xCD, 0xA0,
-    0x54, 0x8E, 0x7C, 0xE1, 0xFA, 0x9D, 0xD1, 0x1F,
-    0x85, 0xEB, 0x66, 0x1F, 0xE9, 0x50, 0xB5, 0x43,
-    0xAA, 0x63, 0x5C, 0xA4, 0xD3, 0xF0, 0x4E, 0xDE,
-    0x5B, 0x32, 0xD6, 0xB6, 0x56, 0xE5, 0xCE, 0x1C,
-    0x44, 0xD3, 0x5C, 0x4A, 0x6C, 0x56, 0xCF, 0xF8
-  },
-  {
-    0xD5, 0xE9, 0x38, 0x73, 0x5D, 0x63, 0x78, 0x8C,
-    0x80, 0x10, 0x0A, 0xEF, 0xD1, 0x86, 0x48, 0xD1,
-    0x8C, 0xF2, 0x72, 0xF6, 0x9F, 0x20, 0xFF, 0x24,
-    0xCF, 0xE2, 0x89, 0x5C, 0x08, 0x8A, 0xD0, 0x8B,
-    0x01, 0x04, 0xDA, 0x16, 0x72, 0xA4, 0xEB, 0x26,
-    0xFC, 0x52, 0x54, 0x5C, 0xC7, 0xD7, 0xA0, 0x1B,
-    0x26, 0x6C, 0xF5, 0x46, 0xC4, 0x03, 0xC4, 0x5B,
-    0xD1, 0x29, 0xEB, 0x41, 0xBD, 0xD9, 0x20, 0x0B
-  },
-  {
-    0x65, 0xA2, 0x45, 0xB4, 0x93, 0x52, 0xEE, 0x29,
-    0x7D, 0x91, 0xAF, 0x8C, 0x8B, 0xE0, 0x05, 0x28,
-    0xAC, 0x6E, 0x04, 0x6D, 0xD8, 0x3A, 0xC7, 0xBD,
-    0x46, 0x5A, 0x98, 0x81, 0x6D, 0xD6, 0x8F, 0x3E,
-    0x00, 0xE1, 0xAE, 0x8F, 0x89, 0x53, 0x27, 0xA7,
-    0xE9, 0xA8, 0xC9, 0x32, 0x65, 0x98, 0x37, 0x9A,
-    0x29, 0xC9, 0xFC, 0x91, 0xEC, 0x0C, 0x6E, 0xEF,
-    0x08, 0xF3, 0xE2, 0xB2, 0x16, 0xC1, 0x10, 0x08
-  },
-  {
-    0xC9, 0x56, 0x54, 0xB6, 0x30, 0x19, 0x13, 0x0A,
-    0xB4, 0x5D, 0xD0, 0xFB, 0x49, 0x41, 0xB9, 0x8A,
-    0xEB, 0x3A, 0xF2, 0xA1, 0x23, 0x91, 0x3E, 0xCA,
-    0x2C, 0xE9, 0x9B, 0x3E, 0x97, 0x41, 0x0A, 0x7B,
-    0xF8, 0x66, 0x1C, 0xC7, 0xFB, 0xAA, 0x2B, 0xC1,
-    0xCF, 0x2B, 0x13, 0x11, 0x3B, 0x1E, 0xD4, 0x0A,
-    0x01, 0x18, 0xB8, 0x8E, 0x5F, 0xFF, 0xC3, 0x54,
-    0x27, 0x59, 0xEA, 0x00, 0x7E, 0xD4, 0xC5, 0x8D
-  },
-  {
-    0x1E, 0xB2, 0x62, 0xF3, 0x8F, 0xA4, 0x94, 0x43,
-    0x1F, 0x01, 0x7D, 0xAD, 0x44, 0xC0, 0xDF, 0xB6,
-    0x93, 0x24, 0xAC, 0x03, 0x2F, 0x04, 0xB6, 0x57,
-    0xFC, 0x91, 0xA8, 0x86, 0x47, 0xBB, 0x74, 0x76,
-    0x0F, 0x24, 0xE7, 0xC9, 0x56, 0x51, 0x4F, 0x0C,
-    0xF0, 0x02, 0x99, 0x0B, 0x18, 0x2C, 0x16, 0x42,
-    0xB9, 0xB2, 0x42, 0x6E, 0x96, 0xA6, 0x11, 0x87,
-    0xE4, 0xE0, 0x12, 0xF0, 0x0E, 0x21, 0x7D, 0x84
-  },
-  {
-    0x3B, 0x95, 0x5A, 0xEE, 0xBF, 0xA5, 0x15, 0x1A,
-    0xC1, 0xAB, 0x8E, 0x3F, 0x5C, 0xC1, 0xE3, 0x76,
-    0x70, 0x84, 0xC8, 0x42, 0xA5, 0x75, 0xD3, 0x62,
-    0x69, 0x83, 0x6E, 0x97, 0x35, 0x3D, 0x41, 0x62,
-    0x2B, 0x73, 0x1D, 0xDD, 0xCD, 0x5F, 0x26, 0x95,
-    0x50, 0xA3, 0xA5, 0xB8, 0x7B, 0xE1, 0xE9, 0x03,
-    0x26, 0x34, 0x0B, 0x6E, 0x0E, 0x62, 0x55, 0x58,
-    0x15, 0xD9, 0x60, 0x05, 0x97, 0xAC, 0x6E, 0xF9
-  },
-  {
-    0x68, 0x28, 0x9F, 0x66, 0x05, 0x47, 0x3B, 0xA0,
-    0xE4, 0xF2, 0x41, 0xBA, 0xF7, 0x47, 0x7A, 0x98,
-    0x85, 0x42, 0x6A, 0x85, 0x8F, 0x19, 0xEF, 0x2A,
-    0x18, 0xB0, 0xD4, 0x0E, 0xF8, 0xE4, 0x12, 0x82,
-    0xED, 0x55, 0x26, 0xB5, 0x19, 0x79, 0x9E, 0x27,
-    0x0F, 0x13, 0x88, 0x13, 0x27, 0x91, 0x82, 0x78,
-    0x75, 0x57, 0x11, 0x07, 0x1D, 0x85, 0x11, 0xFE,
-    0x96, 0x3E, 0x3B, 0x56, 0x06, 0xAA, 0x37, 0x16
-  },
-  {
-    0x80, 0xA3, 0x37, 0x87, 0x54, 0x26, 0x12, 0xC3,
-    0x8F, 0x6B, 0xCD, 0x7C, 0xD8, 0x6C, 0xAB, 0x46,
-    0x02, 0x27, 0x50, 0x9B, 0x1C, 0xBA, 0xD5, 0xEC,
-    0x40, 0x8A, 0x91, 0x41, 0x3D, 0x51, 0x15, 0x5A,
-    0x04, 0x76, 0xDA, 0xDB, 0xF3, 0xA2, 0x51, 0x8E,
-    0x4A, 0x6E, 0x77, 0xCC, 0x34, 0x66, 0x22, 0xE3,
-    0x47, 0xA4, 0x69, 0xBF, 0x8B, 0xAA, 0x5F, 0x04,
-    0xEB, 0x2D, 0x98, 0x70, 0x53, 0x55, 0xD0, 0x63
-  },
-  {
-    0x34, 0x62, 0x9B, 0xC6, 0xD8, 0x31, 0x39, 0x1C,
-    0x4C, 0xDF, 0x8A, 0xF1, 0xB4, 0xB7, 0xB6, 0xB8,
-    0xE8, 0xEE, 0x17, 0xCF, 0x98, 0xC7, 0x0E, 0x5D,
-    0xD5, 0x86, 0xCD, 0x99, 0xF1, 0x4B, 0x11, 0xDF,
-    0x94, 0x51, 0x66, 0x23, 0x6A, 0x95, 0x71, 0xE6,
-    0xD5, 0x91, 0xBB, 0x83, 0xEE, 0x4D, 0x16, 0x4D,
-    0x46, 0xF6, 0xB9, 0xD8, 0xEF, 0x86, 0xFF, 0x86,
-    0x5A, 0x81, 0xBF, 0xB9, 0x1B, 0x00, 0x42, 0x4B
-  },
-  {
-    0x8B, 0x7C, 0xC3, 0x39, 0x16, 0x38, 0x63, 0xBB,
-    0x43, 0x83, 0xE5, 0x42, 0xB0, 0xEF, 0x0E, 0x7C,
-    0xF3, 0x6B, 0x84, 0xAD, 0x93, 0x2C, 0xDF, 0x5A,
-    0x80, 0x41, 0x9E, 0xC9, 0xAD, 0x69, 0x2E, 0x7A,
-    0x7E, 0x78, 0x4D, 0x2C, 0x7C, 0xB3, 0x79, 0x6A,
-    0x18, 0xB8, 0xF8, 0x00, 0x03, 0x5F, 0x3A, 0xA0,
-    0x6C, 0x82, 0x41, 0x00, 0x61, 0x11, 0x20, 0xA7,
-    0xBD, 0xEB, 0x35, 0x61, 0x8C, 0xCB, 0x81, 0xB7
-  },
-  {
-    0x4F, 0x08, 0x4E, 0x49, 0x39, 0xDD, 0x5A, 0x7F,
-    0x5A, 0x65, 0x8F, 0xAD, 0x58, 0xA1, 0x8A, 0x15,
-    0xC2, 0x5C, 0x32, 0xEC, 0x1C, 0x7F, 0xD5, 0xC5,
-    0xC6, 0xC3, 0xE8, 0x92, 0xB3, 0x97, 0x1A, 0xEA,
-    0xAC, 0x30, 0x83, 0x04, 0xEF, 0x17, 0xB1, 0xC4,
-    0x72, 0x39, 0xEA, 0x4B, 0xB3, 0x98, 0xB3, 0xFD,
-    0x6D, 0x45, 0x28, 0xD8, 0xDE, 0x8E, 0x76, 0x8A,
-    0xE0, 0xF1, 0xA5, 0xA5, 0xC6, 0xB5, 0xC2, 0x97
-  },
-  {
-    0x48, 0xF4, 0x07, 0xA1, 0xAF, 0x5B, 0x80, 0x09,
-    0xB2, 0x05, 0x17, 0x42, 0xE8, 0xCF, 0x5C, 0xD5,
-    0x65, 0x66, 0x69, 0xE7, 0xD7, 0x22, 0xEE, 0x8E,
-    0x7B, 0xD2, 0x02, 0x06, 0x08, 0x49, 0x44, 0x21,
-    0x68, 0xD8, 0xFA, 0xCC, 0x11, 0x7C, 0x01, 0x2B,
-    0xFB, 0x7B, 0xF4, 0x49, 0xD9, 0x9B, 0xEF, 0xFF,
-    0x6A, 0x34, 0xAE, 0xA2, 0x03, 0xF1, 0xD8, 0xD3,
-    0x52, 0x72, 0x2B, 0xE5, 0x01, 0x4E, 0xC8, 0x18
-  },
-  {
-    0xA6, 0xAA, 0x82, 0xCD, 0x1E, 0x42, 0x6F, 0x9A,
-    0x73, 0xBF, 0xA3, 0x9A, 0x29, 0x03, 0x78, 0x76,
-    0x11, 0x46, 0x55, 0xB8, 0xC2, 0x2D, 0x6D, 0x3F,
-    0xF8, 0xB6, 0x38, 0xAE, 0x7D, 0xEA, 0x6B, 0x17,
-    0x84, 0x3E, 0x09, 0xE5, 0x2E, 0xB6, 0x6F, 0xA1,
-    0xE4, 0x75, 0xE4, 0xA8, 0xA3, 0xDE, 0x42, 0x9B,
-    0x7D, 0x0F, 0x4A, 0x77, 0x6F, 0xCB, 0x8B, 0xDC,
-    0x9B, 0x9F, 0xED, 0xE7, 0xD5, 0x2E, 0x81, 0x5F
-  },
-  {
-    0x58, 0x17, 0x02, 0x7D, 0x6B, 0xDD, 0x00, 0xC5,
-    0xDD, 0x10, 0xAC, 0x59, 0x3C, 0xD5, 0x60, 0x37,
-    0x22, 0x70, 0x77, 0x5A, 0x18, 0x52, 0x6D, 0x7E,
-    0x6F, 0x13, 0x87, 0x2A, 0x2E, 0x20, 0xEA, 0xB6,
-    0x64, 0x62, 0x5B, 0xE7, 0x16, 0x8A, 0xC4, 0xBD,
-    0x7C, 0x9E, 0x0C, 0xE7, 0xFC, 0x40, 0x99, 0xE0,
-    0xF4, 0x84, 0x42, 0xE2, 0xC7, 0x67, 0x19, 0x1C,
-    0x6E, 0x12, 0x84, 0xE9, 0xB2, 0xCC, 0xEA, 0x8C
-  },
-  {
-    0x08, 0xE4, 0x10, 0x28, 0x34, 0x0A, 0x45, 0xC7,
-    0x4E, 0x40, 0x52, 0xB3, 0xA8, 0xD6, 0x38, 0x9E,
-    0x22, 0xE0, 0x43, 0xA1, 0xAD, 0xAB, 0x5E, 0x28,
-    0xD9, 0x76, 0x19, 0x45, 0x0D, 0x72, 0x34, 0x69,
-    0xB6, 0x20, 0xCA, 0xA5, 0x19, 0xB8, 0x1C, 0x14,
-    0x52, 0x38, 0x54, 0xF6, 0x19, 0xFD, 0x30, 0x27,
-    0xE3, 0x84, 0x7B, 0xD0, 0x32, 0x76, 0xE6, 0x06,
-    0x04, 0xA8, 0x0D, 0xDB, 0x4D, 0xE8, 0x76, 0xD6
-  },
-  {
-    0x13, 0x0B, 0x84, 0x20, 0x53, 0x7E, 0xB0, 0x7D,
-    0x72, 0xAB, 0xDA, 0x07, 0xC8, 0x5A, 0xCB, 0xD8,
-    0xB9, 0xA4, 0x4F, 0x16, 0x32, 0x1D, 0xD0, 0x42,
-    0x21, 0x45, 0xF8, 0x09, 0x67, 0x3D, 0x30, 0xF2,
-    0xB5, 0x32, 0x13, 0x26, 0xE2, 0xBF, 0xF3, 0x17,
-    0xEF, 0x3F, 0xEF, 0x98, 0x3C, 0x51, 0xC4, 0xF8,
-    0xAB, 0x24, 0xA3, 0x25, 0xD2, 0x98, 0xE3, 0x4A,
-    0xFC, 0xE5, 0x69, 0xA8, 0x25, 0x55, 0x77, 0x4C
-  },
-  {
-    0xAC, 0x49, 0xB8, 0x44, 0xAF, 0xAA, 0x01, 0x2E,
-    0x31, 0xC4, 0x74, 0xCA, 0x26, 0x36, 0x48, 0x84,
-    0x4F, 0xD2, 0xF6, 0x30, 0x79, 0x92, 0xC2, 0xF7,
-    0x52, 0xAC, 0xA0, 0x2C, 0x38, 0x28, 0x96, 0x51,
-    0x75, 0x79, 0x4D, 0xEE, 0xE2, 0xD2, 0xEE, 0x95,
-    0xC6, 0x1C, 0xD2, 0x84, 0xF6, 0xB5, 0xA2, 0xD7,
-    0x5E, 0x2E, 0xF2, 0xB2, 0x9E, 0xE8, 0x14, 0x9E,
-    0x77, 0xFB, 0x81, 0x44, 0x7B, 0x2F, 0xD0, 0x4B
-  },
-  {
-    0xB9, 0xD7, 0xCA, 0x81, 0xCC, 0x60, 0xBB, 0x95,
-    0x78, 0xE4, 0x40, 0x24, 0xE5, 0xA0, 0xA0, 0xBE,
-    0x80, 0xF2, 0x73, 0x36, 0xA6, 0xA9, 0xF4, 0xE5,
-    0x3D, 0xF3, 0x99, 0x9C, 0xB1, 0x91, 0x28, 0x0B,
-    0x09, 0x0E, 0x2A, 0xC2, 0xD2, 0x9C, 0x5B, 0xAA,
-    0xD9, 0xD7, 0x14, 0x15, 0xBD, 0xC1, 0x29, 0xE6,
-    0x9A, 0xA2, 0x66, 0x7A, 0xF6, 0xA7, 0xFD, 0x5E,
-    0x18, 0x9F, 0xCC, 0xDC, 0xEE, 0x81, 0x73, 0x40
-  },
-  {
-    0xA7, 0x55, 0xE1, 0x13, 0x38, 0x65, 0x72, 0xC7,
-    0x5C, 0xED, 0x61, 0xD7, 0x19, 0x70, 0x60, 0x70,
-    0xB9, 0x14, 0x60, 0x48, 0xE4, 0x2A, 0x9F, 0x8C,
-    0xD3, 0x56, 0x67, 0xA0, 0x88, 0xB4, 0x2F, 0x08,
-    0x80, 0x8A, 0xBD, 0xF7, 0x7E, 0x61, 0x8A, 0xBD,
-    0x95, 0x9A, 0xFC, 0x75, 0x73, 0x79, 0xCA, 0x2C,
-    0x00, 0xBC, 0xC1, 0xA4, 0x83, 0x90, 0xFA, 0x2B,
-    0xFF, 0x61, 0x8B, 0x1E, 0x00, 0x78, 0xA6, 0x13
-  },
-  {
-    0xA7, 0x3C, 0x7D, 0xEB, 0xED, 0x32, 0x6F, 0x1C,
-    0x0D, 0xB0, 0x79, 0x5E, 0xE7, 0xD6, 0xE3, 0x94,
-    0x68, 0x94, 0xB8, 0x26, 0xB1, 0xF8, 0x10, 0x1C,
-    0x56, 0xC8, 0x23, 0xBA, 0x17, 0x16, 0x83, 0x12,
-    0xE7, 0xF5, 0x3F, 0xC7, 0xDB, 0xE5, 0x2C, 0x3E,
-    0x11, 0xE6, 0x98, 0x52, 0xC4, 0x04, 0x85, 0xE2,
-    0xEF, 0x18, 0x24, 0x77, 0x86, 0x2E, 0xA6, 0xA3,
-    0x4E, 0xC1, 0x36, 0xE2, 0xDF, 0xEE, 0xA6, 0xF4
-  },
-  {
-    0x6C, 0xB8, 0xF9, 0xD5, 0x2C, 0x56, 0xD8, 0x2C,
-    0xAC, 0x28, 0xF3, 0x9E, 0xA1, 0x59, 0x3E, 0x8B,
-    0xB2, 0x50, 0x62, 0x93, 0xAC, 0x0D, 0x68, 0x37,
-    0x6A, 0x17, 0x09, 0xB6, 0x2A, 0x46, 0xDF, 0x14,
-    0xA4, 0xAE, 0x64, 0xB2, 0xD8, 0xFA, 0xB7, 0x67,
-    0x33, 0xA1, 0xCE, 0xD2, 0xD5, 0x48, 0xE3, 0xF3,
-    0xC6, 0xFC, 0xB4, 0x9D, 0x40, 0xC3, 0xD5, 0x80,
-    0x8E, 0x44, 0x9C, 0xD8, 0x3D, 0x1C, 0x2A, 0xA2
-  },
-  {
-    0x68, 0x3F, 0xA2, 0xB2, 0x36, 0x9A, 0x10, 0x16,
-    0x2C, 0x1C, 0x1C, 0x7B, 0x24, 0xBC, 0x97, 0x0E,
-    0xE6, 0x7D, 0xA2, 0x20, 0x56, 0x4F, 0x32, 0x20,
-    0x3F, 0x62, 0x56, 0x96, 0xC0, 0x35, 0x2A, 0x0B,
-    0x9A, 0xD9, 0x66, 0x24, 0x36, 0x2D, 0x95, 0x2D,
-    0x84, 0x46, 0x3C, 0x11, 0x06, 0xA2, 0xDB, 0xA7,
-    0xA0, 0x92, 0x59, 0x98, 0x84, 0xB3, 0x5A, 0x0B,
-    0x89, 0xC8, 0xF1, 0xB6, 0xA9, 0xB5, 0xA6, 0x1E
-  },
-  {
-    0xAA, 0xD9, 0xAD, 0x44, 0x61, 0x01, 0x18, 0xB7,
-    0x7D, 0x50, 0x8A, 0xEB, 0x1B, 0xBC, 0xD1, 0xC1,
-    0xB7, 0xD0, 0x17, 0x13, 0x97, 0xFB, 0x51, 0x0A,
-    0x40, 0x1B, 0xBC, 0x0E, 0xC3, 0x46, 0x23, 0x67,
-    0x0D, 0x86, 0xA2, 0xDC, 0x3C, 0x8F, 0x3A, 0xB5,
-    0xA2, 0x04, 0x4D, 0xF7, 0x30, 0x25, 0x67, 0x27,
-    0x54, 0x5F, 0x08, 0x60, 0xCE, 0x21, 0xA1, 0xEA,
-    0xC7, 0x17, 0xDF, 0xC4, 0x8F, 0x5D, 0x22, 0x8E
-  },
-  {
-    0xC4, 0x25, 0x78, 0xDE, 0x23, 0xB4, 0xC9, 0x87,
-    0xD5, 0xE1, 0xAC, 0x4D, 0x68, 0x9E, 0xD5, 0xDE,
-    0x4B, 0x04, 0x17, 0xF9, 0x70, 0x4B, 0xC6, 0xBC,
-    0xE9, 0x69, 0xFA, 0x13, 0x47, 0x15, 0x85, 0xD6,
-    0x2C, 0x2C, 0xB1, 0x21, 0x2A, 0x94, 0x4F, 0x39,
-    0x7F, 0xC9, 0xCA, 0x2C, 0x37, 0x47, 0xC3, 0xBE,
-    0xB6, 0x94, 0xEC, 0x4C, 0x5B, 0xE6, 0x88, 0x28,
-    0xDD, 0xA5, 0x3E, 0xF4, 0x3F, 0xAE, 0xC6, 0xC0
-  },
-  {
-    0x47, 0x0F, 0x00, 0x84, 0x1E, 0xE8, 0x24, 0x4E,
-    0x63, 0xED, 0x2C, 0x7E, 0xA3, 0x0E, 0x2E, 0x41,
-    0x98, 0x97, 0xC1, 0x97, 0x46, 0x2E, 0xCC, 0xCE,
-    0xCF, 0x71, 0x3B, 0x42, 0xA5, 0x06, 0x5F, 0xFF,
-    0x59, 0x14, 0xBC, 0x9B, 0x79, 0xAF, 0xFE, 0x8F,
-    0x6B, 0x65, 0x78, 0x75, 0xE7, 0x89, 0xAE, 0x21,
-    0x3B, 0xD9, 0x14, 0xCD, 0x35, 0xBD, 0x17, 0x4D,
-    0x46, 0xE9, 0xD1, 0x8B, 0xD8, 0x43, 0x77, 0x3D
-  },
-  {
-    0x34, 0xFC, 0x42, 0x13, 0x73, 0x0F, 0x47, 0xA5,
-    0xE9, 0xA3, 0x58, 0x0F, 0x64, 0x3E, 0x12, 0x94,
-    0x5C, 0xFC, 0xB3, 0x1B, 0xF2, 0x06, 0xF6, 0xAD,
-    0x45, 0x0C, 0xE5, 0x28, 0xDA, 0x3F, 0xA4, 0x32,
-    0xE0, 0x05, 0xD6, 0xB0, 0xEC, 0xCE, 0x10, 0xDC,
-    0xA7, 0xC5, 0x99, 0x5F, 0x6A, 0xAC, 0xC5, 0x15,
-    0x0E, 0x1B, 0x00, 0x9E, 0x19, 0x75, 0x1E, 0x83,
-    0x09, 0xF8, 0x85, 0x95, 0x31, 0x84, 0x43, 0x74
-  },
-  {
-    0xFB, 0x3C, 0x1F, 0x0F, 0x56, 0xA5, 0x6F, 0x8E,
-    0x31, 0x6F, 0xDF, 0x5D, 0x85, 0x3C, 0x8C, 0x87,
-    0x2C, 0x39, 0x63, 0x5D, 0x08, 0x36, 0x34, 0xC3,
-    0x90, 0x4F, 0xC3, 0xAC, 0x07, 0xD1, 0xB5, 0x78,
-    0xE8, 0x5F, 0xF0, 0xE4, 0x80, 0xE9, 0x2D, 0x44,
-    0xAD, 0xE3, 0x3B, 0x62, 0xE8, 0x93, 0xEE, 0x32,
-    0x34, 0x3E, 0x79, 0xDD, 0xF6, 0xEF, 0x29, 0x2E,
-    0x89, 0xB5, 0x82, 0xD3, 0x12, 0x50, 0x23, 0x14
-  },
-  {
-    0xC7, 0xC9, 0x7F, 0xC6, 0x5D, 0xD2, 0xB9, 0xE3,
-    0xD3, 0xD6, 0x07, 0xD3, 0x15, 0x98, 0xD3, 0xF8,
-    0x42, 0x61, 0xE9, 0x91, 0x92, 0x51, 0xE9, 0xC8,
-    0xE5, 0x7B, 0xB5, 0xF8, 0x29, 0x37, 0x7D, 0x5F,
-    0x73, 0xEA, 0xBB, 0xED, 0x55, 0xC6, 0xC3, 0x81,
-    0x18, 0x0F, 0x29, 0xAD, 0x02, 0xE5, 0xBE, 0x79,
-    0x7F, 0xFE, 0xC7, 0xE5, 0x7B, 0xDE, 0xCB, 0xC5,
-    0x0A, 0xD3, 0xD0, 0x62, 0xF0, 0x99, 0x3A, 0xB0
-  },
-  {
-    0xA5, 0x7A, 0x49, 0xCD, 0xBE, 0x67, 0xAE, 0x7D,
-    0x9F, 0x79, 0x7B, 0xB5, 0xCC, 0x7E, 0xFC, 0x2D,
-    0xF0, 0x7F, 0x4E, 0x1B, 0x15, 0x95, 0x5F, 0x85,
-    0xDA, 0xE7, 0x4B, 0x76, 0xE2, 0xEC, 0xB8, 0x5A,
-    0xFB, 0x6C, 0xD9, 0xEE, 0xED, 0x88, 0x88, 0xD5,
-    0xCA, 0x3E, 0xC5, 0xAB, 0x65, 0xD2, 0x7A, 0x7B,
-    0x19, 0xE5, 0x78, 0x47, 0x57, 0x60, 0xA0, 0x45,
-    0xAC, 0x3C, 0x92, 0xE1, 0x3A, 0x93, 0x8E, 0x77
-  },
-  {
-    0xC7, 0x14, 0x3F, 0xCE, 0x96, 0x14, 0xA1, 0x7F,
-    0xD6, 0x53, 0xAE, 0xB1, 0x40, 0x72, 0x6D, 0xC9,
-    0xC3, 0xDB, 0xB1, 0xDE, 0x6C, 0xC5, 0x81, 0xB2,
-    0x72, 0x68, 0x97, 0xEC, 0x24, 0xB7, 0xA5, 0x03,
-    0x59, 0xAD, 0x49, 0x22, 0x43, 0xBE, 0x66, 0xD9,
-    0xED, 0xD8, 0xC9, 0x33, 0xB5, 0xB8, 0x0E, 0x0B,
-    0x91, 0xBB, 0x61, 0xEA, 0x98, 0x05, 0x60, 0x06,
-    0x51, 0x69, 0x76, 0xFA, 0xE8, 0xD9, 0x9A, 0x35
-  },
-  {
-    0x65, 0xBB, 0x58, 0xD0, 0x7F, 0x93, 0x7E, 0x2D,
-    0x3C, 0x7E, 0x65, 0x38, 0x5F, 0x9C, 0x54, 0x73,
-    0x0B, 0x70, 0x41, 0x05, 0xCC, 0xDB, 0x69, 0x1F,
-    0x6E, 0x14, 0x6D, 0x4E, 0xE8, 0xF6, 0xC0, 0x86,
-    0xF4, 0x95, 0x11, 0x03, 0x51, 0x10, 0xA9, 0xAD,
-    0x60, 0x31, 0xFD, 0xCE, 0xB9, 0x43, 0xE0, 0xF9,
-    0x61, 0x3B, 0xCB, 0x27, 0x6D, 0xD4, 0x0F, 0x06,
-    0x24, 0xEF, 0x0F, 0x92, 0x4F, 0x80, 0x97, 0x83
-  },
-  {
-    0xE5, 0x40, 0x27, 0x7F, 0x68, 0x3B, 0x11, 0x86,
-    0xDD, 0x3B, 0x5B, 0x3F, 0x61, 0x43, 0x33, 0x96,
-    0x58, 0x1A, 0x35, 0xFE, 0xB1, 0x20, 0x02, 0xBE,
-    0x8C, 0x6A, 0x62, 0x31, 0xFC, 0x40, 0xFF, 0xA7,
-    0x0F, 0x08, 0x08, 0x1B, 0xC5, 0x8B, 0x2D, 0x94,
-    0xF7, 0x64, 0x95, 0x43, 0x61, 0x4A, 0x43, 0x5F,
-    0xAA, 0x2D, 0x62, 0x11, 0x0E, 0x13, 0xDA, 0xBC,
-    0x7B, 0x86, 0x62, 0x9B, 0x63, 0xAF, 0x9C, 0x24
-  },
-  {
-    0x41, 0x85, 0x00, 0x87, 0x8C, 0x5F, 0xBC, 0xB5,
-    0x84, 0xC4, 0x32, 0xF4, 0x28, 0x5E, 0x05, 0xE4,
-    0x9F, 0x2E, 0x3E, 0x07, 0x53, 0x99, 0xA0, 0xDB,
-    0xFC, 0xF8, 0x74, 0xEB, 0xF8, 0xC0, 0x3D, 0x02,
-    0xBF, 0x16, 0xBC, 0x69, 0x89, 0xD1, 0x61, 0xC7,
-    0x7C, 0xA0, 0x78, 0x6B, 0x05, 0x05, 0x3C, 0x6C,
-    0x70, 0x94, 0x33, 0x71, 0x23, 0x19, 0x19, 0x21,
-    0x28, 0x83, 0x5C, 0xF0, 0xB6, 0x60, 0x59, 0x5B
-  },
-  {
-    0x88, 0x90, 0x90, 0xDB, 0xB1, 0x94, 0x4B, 0xDC,
-    0x94, 0x33, 0xEE, 0x5E, 0xF1, 0x01, 0x0C, 0x7A,
-    0x4A, 0x24, 0xA8, 0xE7, 0x1E, 0xCE, 0xA8, 0xE1,
-    0x2A, 0x31, 0x31, 0x8C, 0xE4, 0x9D, 0xCA, 0xB0,
-    0xAC, 0xA5, 0xC3, 0x80, 0x23, 0x34, 0xAA, 0xB2,
-    0xCC, 0x84, 0xB1, 0x4C, 0x6B, 0x93, 0x21, 0xFE,
-    0x58, 0x6B, 0xF3, 0xF8, 0x76, 0xF1, 0x9C, 0xD4,
-    0x06, 0xEB, 0x11, 0x27, 0xFB, 0x94, 0x48, 0x01
-  },
-  {
-    0x53, 0xB6, 0xA2, 0x89, 0x10, 0xAA, 0x92, 0xE2,
-    0x7E, 0x53, 0x6F, 0xB5, 0x49, 0xCF, 0x9B, 0x99,
-    0x18, 0x79, 0x10, 0x60, 0x89, 0x8E, 0x0B, 0x9F,
-    0xE1, 0x83, 0x57, 0x7F, 0xF4, 0x3B, 0x5E, 0x9C,
-    0x76, 0x89, 0xC7, 0x45, 0xB3, 0x2E, 0x41, 0x22,
-    0x69, 0x83, 0x7C, 0x31, 0xB8, 0x9E, 0x6C, 0xC1,
-    0x2B, 0xF7, 0x6E, 0x13, 0xCA, 0xD3, 0x66, 0xB7,
-    0x4E, 0xCE, 0x48, 0xBB, 0x85, 0xFD, 0x09, 0xE9
-  },
-  {
-    0x7C, 0x09, 0x20, 0x80, 0xC6, 0xA8, 0x0D, 0x67,
-    0x24, 0x09, 0xD0, 0x81, 0xD3, 0xD1, 0x77, 0x10,
-    0x6B, 0xCD, 0x63, 0x56, 0x77, 0x85, 0x14, 0x07,
-    0x19, 0x49, 0x09, 0x50, 0xAE, 0x07, 0xAE, 0x8F,
-    0xCA, 0xAB, 0xBA, 0xAA, 0xB3, 0x30, 0xCF, 0xBC,
-    0xF7, 0x37, 0x44, 0x82, 0xC2, 0x20, 0xAF, 0x2E,
-    0xAD, 0xEE, 0xB7, 0x3D, 0xCB, 0xB3, 0x5E, 0xD8,
-    0x23, 0x34, 0x4E, 0x14, 0x4E, 0x7D, 0x48, 0x99
-  },
-  {
-    0x9C, 0xCD, 0xE5, 0x66, 0xD2, 0x40, 0x05, 0x09,
-    0x18, 0x11, 0x11, 0xF3, 0x2D, 0xDE, 0x4C, 0xD6,
-    0x32, 0x09, 0xFE, 0x59, 0xA3, 0x0C, 0x11, 0x45,
-    0x46, 0xAD, 0x27, 0x76, 0xD8, 0x89, 0xA4, 0x1B,
-    0xAD, 0x8F, 0xA1, 0xBB, 0x46, 0x8C, 0xB2, 0xF9,
-    0xD4, 0x2C, 0xA9, 0x92, 0x8A, 0x77, 0x70, 0xFE,
-    0xF8, 0xE8, 0xBA, 0x4D, 0x0C, 0x81, 0x2D, 0x9A,
-    0x1E, 0x75, 0xC3, 0xD8, 0xD2, 0xCC, 0xD7, 0x5A
-  },
-  {
-    0x6E, 0x29, 0x3B, 0xF5, 0xD0, 0x3F, 0xE4, 0x39,
-    0x77, 0xCF, 0xE3, 0xF5, 0x7C, 0xCD, 0xB3, 0xAE,
-    0x28, 0x2A, 0x85, 0x45, 0x5D, 0xCA, 0x33, 0xF3,
-    0x7F, 0x4B, 0x74, 0xF8, 0x39, 0x8C, 0xC6, 0x12,
-    0x43, 0x3D, 0x75, 0x5C, 0xBE, 0xC4, 0x12, 0xF8,
-    0xF8, 0x2A, 0x3B, 0xD3, 0xBC, 0x4A, 0x27, 0x8F,
-    0x7E, 0xCD, 0x0D, 0xFA, 0x9B, 0xBD, 0xC4, 0x0B,
-    0xE7, 0xA7, 0x87, 0xC8, 0xF1, 0x59, 0xB2, 0xDF
-  },
-  {
-    0xC5, 0x65, 0x46, 0xFB, 0x21, 0x78, 0x45, 0x6F,
-    0x33, 0x61, 0x64, 0xC1, 0x8B, 0x90, 0xDE, 0xFF,
-    0xC8, 0x3A, 0xE2, 0xB5, 0xA3, 0xAC, 0xA7, 0x7B,
-    0x68, 0x84, 0xD3, 0x6D, 0x2C, 0x1D, 0xB3, 0x95,
-    0x01, 0xB3, 0xE6, 0x5E, 0x36, 0xC7, 0x58, 0xC6,
-    0x6E, 0x31, 0x88, 0x45, 0x1F, 0xDB, 0x35, 0x15,
-    0xEE, 0x16, 0x2C, 0x00, 0x1F, 0x06, 0xC3, 0xE8,
-    0xCB, 0x57, 0x3A, 0xDF, 0x30, 0xF7, 0xA1, 0x01
-  },
-  {
-    0x6F, 0x82, 0xF8, 0x9F, 0x29, 0x9E, 0xBC, 0xA2,
-    0xFE, 0x01, 0x4B, 0x59, 0xBF, 0xFE, 0x1A, 0xA8,
-    0x4E, 0x88, 0xB1, 0x91, 0x5F, 0xE2, 0x56, 0xAF,
-    0xB6, 0x46, 0xFD, 0x84, 0x48, 0xAF, 0x2B, 0x88,
-    0x91, 0xA7, 0xFA, 0xB3, 0x7A, 0x4E, 0xA6, 0xF9,
-    0xA5, 0x0E, 0x6C, 0x31, 0x70, 0x39, 0xD8, 0xCF,
-    0x87, 0x8F, 0x4C, 0x8E, 0x1A, 0x0D, 0xD4, 0x64,
-    0xF0, 0xB4, 0xD6, 0xFF, 0x1C, 0x7E, 0xA8, 0x53
-  },
-  {
-    0x2B, 0x85, 0x99, 0xFF, 0x9C, 0x3D, 0x61, 0x98,
-    0x63, 0x7A, 0xD5, 0x1E, 0x57, 0xD1, 0x99, 0x8B,
-    0x0D, 0x75, 0x31, 0x3F, 0xE2, 0xDD, 0x61, 0xA5,
-    0x33, 0xC9, 0x64, 0xA6, 0xDD, 0x96, 0x07, 0xC6,
-    0xF7, 0x23, 0xE9, 0x45, 0x2C, 0xE4, 0x6E, 0x01,
-    0x4B, 0x1C, 0x1D, 0x6D, 0xE7, 0x7B, 0xA5, 0xB8,
-    0x8C, 0x91, 0x4D, 0x1C, 0x59, 0x7B, 0xF1, 0xEA,
-    0xE1, 0x34, 0x74, 0xB4, 0x29, 0x0E, 0x89, 0xB2
-  },
-  {
-    0x08, 0xBF, 0x34, 0x6D, 0x38, 0xE1, 0xDF, 0x06,
-    0xC8, 0x26, 0x0E, 0xDB, 0x1D, 0xA7, 0x55, 0x79,
-    0x27, 0x59, 0x48, 0xD5, 0xC0, 0xA0, 0xAA, 0x9E,
-    0xD2, 0x88, 0x6F, 0x88, 0x56, 0xDE, 0x54, 0x17,
-    0xA1, 0x56, 0x99, 0x87, 0x58, 0xF5, 0xB1, 0x7E,
-    0x52, 0xF1, 0x01, 0xCA, 0x95, 0x7A, 0x71, 0x13,
-    0x74, 0x73, 0xDF, 0xD1, 0x8D, 0x7D, 0x20, 0x9C,
-    0x4C, 0x10, 0xD9, 0x23, 0x3C, 0x93, 0x69, 0x1D
-  },
-  {
-    0x6D, 0xF2, 0x15, 0x6D, 0x77, 0x31, 0x14, 0xD3,
-    0x10, 0xB6, 0x3D, 0xB9, 0xEE, 0x53, 0x50, 0xD7,
-    0x7E, 0x6B, 0xCF, 0x25, 0xB0, 0x5F, 0xCD, 0x91,
-    0x0F, 0x9B, 0x31, 0xBC, 0x42, 0xBB, 0x13, 0xFE,
-    0x82, 0x25, 0xEB, 0xCB, 0x2A, 0x23, 0xA6, 0x22,
-    0x80, 0x77, 0x7B, 0x6B, 0xF7, 0x4E, 0x2C, 0xD0,
-    0x91, 0x7C, 0x76, 0x40, 0xB4, 0x3D, 0xEF, 0xE4,
-    0x68, 0xCD, 0x1E, 0x18, 0xC9, 0x43, 0xC6, 0x6A
-  },
-  {
-    0x7C, 0x70, 0x38, 0xBC, 0x13, 0xA9, 0x11, 0x51,
-    0x82, 0x8A, 0x5B, 0xA8, 0x2B, 0x4A, 0x96, 0x04,
-    0x0F, 0x25, 0x8A, 0x4D, 0xFB, 0x1B, 0x13, 0x73,
-    0xF0, 0xD3, 0x59, 0x16, 0x8A, 0xFB, 0x05, 0x17,
-    0xA2, 0x0B, 0x28, 0xA1, 0x2D, 0x36, 0x44, 0x04,
-    0x6B, 0xE6, 0x6B, 0x8D, 0x08, 0xD8, 0xAE, 0x7F,
-    0x6A, 0x92, 0x3E, 0xA1, 0xC0, 0x01, 0x87, 0xC6,
-    0xD1, 0x1D, 0xC5, 0x02, 0xBA, 0xC7, 0x13, 0x05
-  },
-  {
-    0xBC, 0xD1, 0xB3, 0x0D, 0x80, 0x8F, 0xB7, 0x39,
-    0xB9, 0x87, 0xCB, 0xF1, 0x54, 0xBE, 0xA0, 0x0D,
-    0xA9, 0xD4, 0x03, 0x80, 0xB8, 0x61, 0xD4, 0xC1,
-    0xD6, 0x37, 0x71, 0x22, 0xDA, 0xDD, 0x61, 0xC0,
-    0xE5, 0x90, 0x18, 0xB7, 0x19, 0x41, 0xCF, 0xB6,
-    0x2E, 0x00, 0xDC, 0xD7, 0x0A, 0xEB, 0x9A, 0xBF,
-    0x04, 0x73, 0xE8, 0x0F, 0x0A, 0x7E, 0xCA, 0x6B,
-    0x6D, 0xEA, 0x24, 0x6A, 0xB2, 0x29, 0xDD, 0x2B
-  },
-  {
-    0x7E, 0xD4, 0x46, 0x8D, 0x96, 0x85, 0x30, 0xFE,
-    0x7A, 0xB2, 0xC3, 0x35, 0x40, 0xB2, 0x6D, 0x8C,
-    0x3B, 0xD3, 0xED, 0x44, 0xB3, 0x4F, 0xBE, 0x8C,
-    0x2A, 0x9D, 0x7F, 0x80, 0x5B, 0x5A, 0xDA, 0x0E,
-    0xA2, 0x52, 0xEE, 0xAD, 0xE4, 0xFC, 0xE9, 0x7F,
-    0x89, 0x72, 0x8A, 0xD8, 0x5B, 0xC8, 0xBB, 0x24,
-    0x30, 0xB1, 0xBE, 0xF2, 0xCD, 0xDD, 0x32, 0xC8,
-    0x44, 0x6E, 0x59, 0xB8, 0xE8, 0xBA, 0x3C, 0x67
-  },
-  {
-    0x6D, 0x30, 0xB7, 0xC6, 0xCE, 0x8A, 0x32, 0x36,
-    0xC0, 0xCA, 0x2F, 0x8D, 0x72, 0x8B, 0x10, 0x88,
-    0xCA, 0x06, 0x98, 0x3A, 0x80, 0x43, 0xE6, 0x21,
-    0xD5, 0xDC, 0xF0, 0xC5, 0x37, 0xD1, 0x3B, 0x08,
-    0x79, 0x1E, 0xDE, 0xB0, 0x1A, 0x3C, 0xF0, 0x94,
-    0x3E, 0xC1, 0xC8, 0x90, 0xAB, 0x6E, 0x29, 0xB1,
-    0x46, 0xA2, 0x36, 0xCD, 0x46, 0xBC, 0xB9, 0xD9,
-    0x3B, 0xF5, 0x16, 0xFB, 0x67, 0xC6, 0x3F, 0xE5
-  },
-  {
-    0x97, 0xFE, 0x03, 0xCE, 0xF3, 0x14, 0x38, 0x50,
-    0x89, 0x11, 0xBD, 0xED, 0x97, 0x59, 0x80, 0xA6,
-    0x60, 0x29, 0x30, 0x5D, 0xC5, 0xE3, 0xFA, 0x8A,
-    0xD1, 0xB4, 0xFB, 0x22, 0xFC, 0xDF, 0x5A, 0x19,
-    0xA7, 0x33, 0x32, 0x03, 0x27, 0xD8, 0xF7, 0x1C,
-    0xCF, 0x49, 0x6C, 0xB3, 0xA4, 0x4A, 0x77, 0xAF,
-    0x56, 0xE3, 0xDD, 0xE7, 0x3D, 0x3A, 0x5F, 0x17,
-    0x68, 0x96, 0xCC, 0x57, 0xC9, 0xA5, 0xAD, 0x99
-  },
-  {
-    0x78, 0x5A, 0x9D, 0x0F, 0xBD, 0x21, 0x13, 0x6D,
-    0xBC, 0xE8, 0xFA, 0x7E, 0xAF, 0xD6, 0x3C, 0x9D,
-    0xAD, 0x22, 0x00, 0x52, 0x97, 0x84, 0x16, 0xB3,
-    0x1D, 0x97, 0x53, 0xEA, 0xA1, 0x49, 0x09, 0x78,
-    0x47, 0xED, 0x9B, 0x30, 0xA6, 0x5C, 0x70, 0x50,
-    0x7E, 0xFF, 0x01, 0x87, 0x91, 0x49, 0xED, 0x5C,
-    0xF0, 0x47, 0x1D, 0x37, 0x79, 0x8E, 0xDC, 0x05,
-    0xAB, 0xD5, 0x6A, 0xD4, 0xA2, 0xCC, 0xCB, 0x1D
-  },
-  {
-    0xAD, 0x40, 0x8D, 0x2A, 0xBD, 0xDF, 0xD3, 0x7B,
-    0x3B, 0xF3, 0x47, 0x94, 0xC1, 0xA3, 0x37, 0x1D,
-    0x92, 0x8E, 0xD7, 0xFC, 0x8D, 0x96, 0x62, 0x25,
-    0x33, 0x35, 0x84, 0xC5, 0x66, 0x58, 0x17, 0x83,
-    0x2A, 0x37, 0xC0, 0x7F, 0x0D, 0xC7, 0xCB, 0x5A,
-    0xA8, 0x74, 0xCD, 0x7D, 0x20, 0xFE, 0x8F, 0xAB,
-    0x8E, 0xAB, 0xCB, 0x9B, 0x33, 0xD2, 0xE0, 0x84,
-    0x1F, 0x6E, 0x20, 0x09, 0x60, 0x89, 0x9D, 0x95
-  },
-  {
-    0x97, 0x66, 0x8F, 0x74, 0x5B, 0x60, 0x32, 0xFC,
-    0x81, 0x5D, 0x95, 0x79, 0x32, 0x27, 0x69, 0xDC,
-    0xCD, 0x95, 0x01, 0xA5, 0x08, 0x00, 0x29, 0xB8,
-    0xAE, 0x82, 0x6B, 0xEF, 0xB6, 0x74, 0x23, 0x31,
-    0xBD, 0x9F, 0x76, 0xEF, 0xEB, 0x3E, 0x2B, 0x8E,
-    0x81, 0xA9, 0x78, 0x6B, 0x28, 0x2F, 0x50, 0x68,
-    0xA3, 0xA2, 0x42, 0x46, 0x97, 0xA7, 0x7C, 0x41,
-    0x87, 0x6B, 0x7E, 0x75, 0x3F, 0x4C, 0x77, 0x67
-  },
-  {
-    0x26, 0xBB, 0x98, 0x5F, 0x47, 0xE7, 0xFE, 0xE0,
-    0xCF, 0xD2, 0x52, 0xD4, 0xEF, 0x96, 0xBE, 0xD4,
-    0x2B, 0x9C, 0x37, 0x0C, 0x1C, 0x6A, 0x3E, 0x8C,
-    0x9E, 0xB0, 0x4E, 0xF7, 0xF7, 0x81, 0x8B, 0x83,
-    0x3A, 0x0D, 0x1F, 0x04, 0x3E, 0xBA, 0xFB, 0x91,
-    0x1D, 0xC7, 0x79, 0xE0, 0x27, 0x40, 0xA0, 0x2A,
-    0x44, 0xD3, 0xA1, 0xEA, 0x45, 0xED, 0x4A, 0xD5,
-    0x5E, 0x68, 0x6C, 0x92, 0x7C, 0xAF, 0xE9, 0x7E
-  },
-  {
-    0x5B, 0xFE, 0x2B, 0x1D, 0xCF, 0x7F, 0xE9, 0xB9,
-    0x50, 0x88, 0xAC, 0xED, 0xB5, 0x75, 0xC1, 0x90,
-    0x16, 0xC7, 0x43, 0xB2, 0xE7, 0x63, 0xBF, 0x58,
-    0x51, 0xAC, 0x40, 0x7C, 0x9E, 0xDA, 0x43, 0x71,
-    0x5E, 0xDF, 0xA4, 0x8B, 0x48, 0x25, 0x49, 0x2C,
-    0x51, 0x79, 0x59, 0x3F, 0xFF, 0x21, 0x35, 0x1B,
-    0x76, 0xE8, 0xB7, 0xE0, 0x34, 0xE4, 0xC5, 0x3C,
-    0x79, 0xF6, 0x1F, 0x29, 0xC4, 0x79, 0xBD, 0x08
-  },
-  {
-    0xC7, 0x65, 0x09, 0xEF, 0x72, 0xF4, 0xA6, 0xF9,
-    0xC9, 0xC4, 0x06, 0x18, 0xED, 0x52, 0xB2, 0x08,
-    0x4F, 0x83, 0x50, 0x22, 0x32, 0xE0, 0xAC, 0x8B,
-    0xDA, 0xF3, 0x26, 0x43, 0x68, 0xE4, 0xD0, 0x18,
-    0x0F, 0x68, 0x54, 0xC4, 0xAB, 0xF4, 0xF6, 0x50,
-    0x9C, 0x79, 0xCA, 0xAF, 0xC4, 0x4C, 0xF3, 0x19,
-    0x4A, 0xFC, 0x57, 0xBD, 0x07, 0x7B, 0xD7, 0xB3,
-    0xC9, 0xBD, 0xA3, 0xD4, 0xB8, 0x77, 0x58, 0x16
-  },
-  {
-    0xD6, 0x6F, 0x2B, 0xEA, 0xB9, 0x90, 0xE3, 0x54,
-    0xCC, 0xB9, 0x10, 0xE4, 0xE9, 0xC7, 0xAC, 0x61,
-    0x8C, 0x7B, 0x63, 0xEF, 0x29, 0x2A, 0x96, 0xB5,
-    0x52, 0x34, 0x1D, 0xE7, 0x8D, 0xC4, 0x6D, 0x3E,
-    0xC8, 0xCF, 0xAB, 0xC6, 0x99, 0xB5, 0x0A, 0xF4,
-    0x1F, 0xDA, 0x39, 0xCF, 0x1B, 0x01, 0x73, 0x66,
-    0x09, 0x23, 0x51, 0x0A, 0xD6, 0x7F, 0xAE, 0xDE,
-    0xF5, 0x20, 0x7C, 0xFF, 0xE8, 0x64, 0x1D, 0x20
-  },
-  {
-    0x7D, 0x8F, 0x06, 0x72, 0x99, 0x2B, 0x79, 0xBE,
-    0x3A, 0x36, 0x4D, 0x8E, 0x59, 0x04, 0xF4, 0xAB,
-    0x71, 0x3B, 0xBC, 0x8A, 0xB0, 0x1B, 0x4F, 0x30,
-    0x9A, 0xD8, 0xCC, 0xF2, 0x23, 0xCE, 0x10, 0x34,
-    0xA8, 0x60, 0xDC, 0xB0, 0xB0, 0x05, 0x50, 0x61,
-    0x2C, 0xC2, 0xFA, 0x17, 0xF2, 0x96, 0x9E, 0x18,
-    0xF2, 0x2E, 0x14, 0x27, 0xD2, 0x54, 0xB4, 0xA8,
-    0x2B, 0x3A, 0x03, 0xA3, 0xEB, 0x39, 0x4A, 0xDF
-  },
-  {
-    0xA5, 0x6D, 0x67, 0x25, 0xBF, 0xB3, 0xDE, 0x47,
-    0xC1, 0x41, 0x4A, 0xDF, 0x25, 0xFC, 0x8F, 0x0F,
-    0xC9, 0x84, 0x6F, 0x69, 0x87, 0x72, 0x2B, 0xC0,
-    0x63, 0x66, 0xD5, 0xCA, 0x4E, 0x89, 0x72, 0x29,
-    0x25, 0xEB, 0xBC, 0x88, 0x14, 0x18, 0x84, 0x40,
-    0x75, 0x39, 0x7A, 0x0C, 0xA8, 0x98, 0x42, 0xC7,
-    0xB9, 0xE9, 0xE0, 0x7E, 0x1D, 0x9D, 0x18, 0x3E,
-    0xBE, 0xB3, 0x9E, 0x12, 0x0B, 0x48, 0x3B, 0xF7
-  },
-  {
-    0xAF, 0x5E, 0x03, 0xD7, 0xFE, 0x60, 0xC6, 0x7E,
-    0x10, 0x31, 0x33, 0x44, 0x43, 0x4E, 0x79, 0x48,
-    0x5A, 0x03, 0xA7, 0x58, 0xD6, 0xDC, 0xE9, 0x85,
-    0x57, 0x47, 0x45, 0x76, 0x3C, 0x1C, 0x5C, 0x77,
-    0xD4, 0xFB, 0x3E, 0x6F, 0xB1, 0x22, 0x30, 0x36,
-    0x83, 0x70, 0x99, 0x3B, 0xF9, 0x0F, 0xEE, 0xD0,
-    0xC5, 0xD1, 0x60, 0x75, 0x24, 0x56, 0x2D, 0x7C,
-    0x09, 0xC0, 0xC2, 0x10, 0xED, 0x39, 0x3D, 0x7C
-  },
-  {
-    0x7A, 0x20, 0x54, 0x0C, 0xC0, 0x7B, 0xF7, 0x2B,
-    0x58, 0x24, 0x21, 0xFC, 0x34, 0x2E, 0x82, 0xF5,
-    0x21, 0x34, 0xB6, 0x98, 0x41, 0xEC, 0x28, 0xED,
-    0x18, 0x9E, 0x2E, 0xA6, 0xA2, 0x9D, 0xD2, 0xF8,
-    0x2A, 0x64, 0x03, 0x52, 0xD2, 0x22, 0xB5, 0x2F,
-    0x29, 0x11, 0xDC, 0x72, 0xA7, 0xDA, 0xB3, 0x1C,
-    0xAA, 0xDD, 0x80, 0xC6, 0x11, 0x8F, 0x13, 0xC5,
-    0x6B, 0x2A, 0x1E, 0x43, 0x73, 0xBE, 0x0E, 0xA3
-  },
-  {
-    0x48, 0x6F, 0x02, 0xC6, 0x3E, 0x54, 0x67, 0xEA,
-    0x1F, 0xDD, 0xE7, 0xE8, 0x2B, 0xFA, 0xCC, 0x2C,
-    0x1B, 0xA5, 0xD6, 0x36, 0xD9, 0xF3, 0xD0, 0x8B,
-    0x21, 0x0D, 0xA3, 0xF3, 0x72, 0xF7, 0x06, 0xEC,
-    0x21, 0x8C, 0xC1, 0x7F, 0xF6, 0x0A, 0xEF, 0x70,
-    0x3B, 0xBE, 0x0C, 0x15, 0xC3, 0x8A, 0xE5, 0x5D,
-    0x28, 0x6A, 0x68, 0x4F, 0x86, 0x4C, 0x78, 0x21,
-    0x1C, 0xCA, 0xB4, 0x17, 0x8C, 0x92, 0xAD, 0xBA
-  },
-  {
-    0x1C, 0x7A, 0x5C, 0x1D, 0xED, 0xCD, 0x04, 0xA9,
-    0x21, 0x78, 0x8F, 0x7E, 0xB2, 0x33, 0x61, 0xCA,
-    0x19, 0x53, 0xB0, 0x4B, 0x9C, 0x7A, 0xEC, 0x35,
-    0xD6, 0x5E, 0xA3, 0xE4, 0x99, 0x6D, 0xB2, 0x6F,
-    0x28, 0x12, 0x78, 0xEA, 0x4A, 0xE6, 0x66, 0xAD,
-    0x81, 0x02, 0x7D, 0x98, 0xAF, 0x57, 0x26, 0x2C,
-    0xDB, 0xFA, 0x4C, 0x08, 0x5F, 0x42, 0x10, 0x56,
-    0x8C, 0x7E, 0x15, 0xEE, 0xC7, 0x80, 0x51, 0x14
-  },
-  {
-    0x9C, 0xE3, 0xFA, 0x9A, 0x86, 0x0B, 0xDB, 0xD5,
-    0x37, 0x8F, 0xD6, 0xD7, 0xB8, 0xB6, 0x71, 0xC6,
-    0xCB, 0x76, 0x92, 0x91, 0x0C, 0xE8, 0xF9, 0xB6,
-    0xCB, 0x41, 0x22, 0xCB, 0xCB, 0xE6, 0xAC, 0x06,
-    0xCA, 0x04, 0x22, 0xCE, 0xF1, 0x22, 0x59, 0x35,
-    0x05, 0x3B, 0x7D, 0x19, 0x3A, 0x81, 0xB9, 0xE9,
-    0x72, 0xEB, 0x85, 0xA1, 0xD3, 0x07, 0x4F, 0x14,
-    0xCB, 0xB5, 0xEC, 0x9F, 0x05, 0x73, 0x89, 0x2D
-  },
-  {
-    0xA9, 0x11, 0x87, 0xBE, 0x5C, 0x37, 0x1C, 0x42,
-    0x65, 0xC1, 0x74, 0xFD, 0x46, 0x53, 0xB8, 0xAB,
-    0x70, 0x85, 0x51, 0xF8, 0x3D, 0x1F, 0xEE, 0x1C,
-    0xC1, 0x47, 0x95, 0x81, 0xBC, 0x00, 0x6D, 0x6F,
-    0xB7, 0x8F, 0xCC, 0x9A, 0x5D, 0xEE, 0x1D, 0xB3,
-    0x66, 0x6F, 0x50, 0x8F, 0x97, 0x80, 0xA3, 0x75,
-    0x93, 0xEB, 0xCC, 0xCF, 0x5F, 0xBE, 0xD3, 0x96,
-    0x67, 0xDC, 0x63, 0x61, 0xE9, 0x21, 0xF7, 0x79
-  },
-  {
-    0x46, 0x25, 0x76, 0x7D, 0x7B, 0x1D, 0x3D, 0x3E,
-    0xD2, 0xFB, 0xC6, 0x74, 0xAF, 0x14, 0xE0, 0x24,
-    0x41, 0x52, 0xF2, 0xA4, 0x02, 0x1F, 0xCF, 0x33,
-    0x11, 0x50, 0x5D, 0x89, 0xBD, 0x81, 0xE2, 0xF9,
-    0xF9, 0xA5, 0x00, 0xC3, 0xB1, 0x99, 0x91, 0x4D,
-    0xB4, 0x95, 0x00, 0xB3, 0xC9, 0x8D, 0x03, 0xEA,
-    0x93, 0x28, 0x67, 0x51, 0xA6, 0x86, 0xA3, 0xB8,
-    0x75, 0xDA, 0xAB, 0x0C, 0xCD, 0x63, 0xB4, 0x4F
-  },
-  {
-    0x43, 0xDF, 0xDF, 0xE1, 0xB0, 0x14, 0xFE, 0xD3,
-    0xA2, 0xAC, 0xAB, 0xB7, 0xF3, 0xE9, 0xA1, 0x82,
-    0xF2, 0xAA, 0x18, 0x01, 0x9D, 0x27, 0xE3, 0xE6,
-    0xCD, 0xCF, 0x31, 0xA1, 0x5B, 0x42, 0x8E, 0x91,
-    0xE7, 0xB0, 0x8C, 0xF5, 0xE5, 0xC3, 0x76, 0xFC,
-    0xE2, 0xD8, 0xA2, 0x8F, 0xF8, 0x5A, 0xB0, 0xA0,
-    0xA1, 0x65, 0x6E, 0xDB, 0x4A, 0x0A, 0x91, 0x53,
-    0x26, 0x20, 0x09, 0x6D, 0x9A, 0x5A, 0x65, 0x2D
-  },
-  {
-    0x27, 0x9E, 0x32, 0x02, 0xBE, 0x39, 0x89, 0xBA,
-    0x31, 0x12, 0x77, 0x25, 0x85, 0x17, 0x74, 0x87,
-    0xE4, 0xFE, 0x3E, 0xE3, 0xEA, 0xB4, 0x9C, 0x2F,
-    0x7F, 0xA7, 0xFE, 0x87, 0xCF, 0xE7, 0xB8, 0x0D,
-    0x3E, 0x03, 0x55, 0xED, 0xFF, 0x6D, 0x03, 0x1E,
-    0x6C, 0x96, 0xC7, 0x95, 0xDB, 0x1C, 0x6F, 0x04,
-    0x18, 0x80, 0xEC, 0x38, 0x24, 0xDE, 0xFA, 0xCF,
-    0x92, 0x63, 0x82, 0x0A, 0x8E, 0x73, 0x27, 0xDE
-  },
-  {
-    0xEA, 0x2D, 0x06, 0x6A, 0xC2, 0x29, 0xD4, 0xD4,
-    0xB6, 0x16, 0xA8, 0xBE, 0xDE, 0xC7, 0x34, 0x32,
-    0x52, 0x24, 0xE4, 0xB4, 0xE5, 0x8F, 0x1A, 0xE6,
-    0xDA, 0xD7, 0xE4, 0x0C, 0x2D, 0xA2, 0x91, 0x96,
-    0xC3, 0xB1, 0xEA, 0x95, 0x71, 0xDA, 0xCC, 0x81,
-    0xE8, 0x73, 0x28, 0xCA, 0xA0, 0x21, 0x1E, 0x09,
-    0x02, 0x7B, 0x05, 0x24, 0xAA, 0x3F, 0x4A, 0x84,
-    0x99, 0x17, 0xB3, 0x58, 0x67, 0x47, 0xEB, 0xBB
-  },
-  {
-    0x49, 0xF0, 0x14, 0xF5, 0xC6, 0x18, 0x22, 0xC8,
-    0x99, 0xAB, 0x5C, 0xAE, 0x51, 0xBE, 0x40, 0x44,
-    0xA4, 0x49, 0x5E, 0x77, 0x7D, 0xEB, 0x7D, 0xA9,
-    0xB6, 0xD8, 0x49, 0x0E, 0xFB, 0xB8, 0x75, 0x30,
-    0xAD, 0xF2, 0x93, 0xDA, 0xF0, 0x79, 0xF9, 0x4C,
-    0x33, 0xB7, 0x04, 0x4E, 0xF6, 0x2E, 0x2E, 0x5B,
-    0xB3, 0xEB, 0x11, 0xE1, 0x73, 0x04, 0xF8, 0x45,
-    0x3E, 0xE6, 0xCE, 0x24, 0xF0, 0x33, 0xDD, 0xB0
-  },
-  {
-    0x92, 0x33, 0x49, 0x03, 0x44, 0xE5, 0xB0, 0xDC,
-    0x59, 0x12, 0x67, 0x1B, 0x7A, 0xE5, 0x4C, 0xEE,
-    0x77, 0x30, 0xDB, 0xE1, 0xF4, 0xC7, 0xD9, 0x2A,
-    0x4D, 0x3E, 0x3A, 0xAB, 0x50, 0x57, 0x17, 0x08,
-    0xDB, 0x51, 0xDC, 0xF9, 0xC2, 0x94, 0x45, 0x91,
-    0xDB, 0x65, 0x1D, 0xB3, 0x2D, 0x22, 0x93, 0x5B,
-    0x86, 0x94, 0x49, 0x69, 0xBE, 0x77, 0xD5, 0xB5,
-    0xFE, 0xAE, 0x6C, 0x38, 0x40, 0xA8, 0xDB, 0x26
-  },
-  {
-    0xB6, 0xE7, 0x5E, 0x6F, 0x4C, 0x7F, 0x45, 0x3B,
-    0x74, 0x65, 0xD2, 0x5B, 0x5A, 0xC8, 0xC7, 0x19,
-    0x69, 0x02, 0xEA, 0xA9, 0x53, 0x87, 0x52, 0x28,
-    0xC8, 0x63, 0x4E, 0x16, 0xE2, 0xAE, 0x1F, 0x38,
-    0xBC, 0x32, 0x75, 0x30, 0x43, 0x35, 0xF5, 0x98,
-    0x9E, 0xCC, 0xC1, 0xE3, 0x41, 0x67, 0xD4, 0xE6,
-    0x8D, 0x77, 0x19, 0x96, 0x8F, 0xBA, 0x8E, 0x2F,
-    0xE6, 0x79, 0x47, 0xC3, 0x5C, 0x48, 0xE8, 0x06
-  },
-  {
-    0xCC, 0x14, 0xCA, 0x66, 0x5A, 0xF1, 0x48, 0x3E,
-    0xFB, 0xC3, 0xAF, 0x80, 0x08, 0x0E, 0x65, 0x0D,
-    0x50, 0x46, 0xA3, 0x93, 0x2F, 0x4F, 0x51, 0xF3,
-    0xFE, 0x90, 0xA0, 0x70, 0x5E, 0xC2, 0x51, 0x04,
-    0xAD, 0xF0, 0x78, 0x39, 0x26, 0x5D, 0xC5, 0x1D,
-    0x43, 0x40, 0x14, 0x11, 0x24, 0x6E, 0x47, 0x4F,
-    0x0D, 0x5E, 0x56, 0x37, 0xAF, 0x94, 0x76, 0x72,
-    0x83, 0xD5, 0x3E, 0x06, 0x17, 0xE9, 0x81, 0xF4
-  },
-  {
-    0x23, 0x0A, 0x1C, 0x85, 0x7C, 0xB2, 0xE7, 0x85,
-    0x2E, 0x41, 0xB6, 0x47, 0xE9, 0x0E, 0x45, 0x85,
-    0xD2, 0xD8, 0x81, 0xE1, 0x73, 0x4D, 0xC3, 0x89,
-    0x55, 0x35, 0x6E, 0x8D, 0xD7, 0xBF, 0xF3, 0x90,
-    0x53, 0x09, 0x2C, 0x6B, 0x38, 0xE2, 0x36, 0xE1,
-    0x89, 0x95, 0x25, 0x64, 0x70, 0x73, 0xDD, 0xDF,
-    0x68, 0x95, 0xD6, 0x42, 0x06, 0x32, 0x5E, 0x76,
-    0x47, 0xF2, 0x75, 0x56, 0x7B, 0x25, 0x59, 0x09
-  },
-  {
-    0xCB, 0xB6, 0x53, 0x21, 0xAC, 0x43, 0x6E, 0x2F,
-    0xFD, 0xAB, 0x29, 0x36, 0x35, 0x9C, 0xE4, 0x90,
-    0x23, 0xF7, 0xDE, 0xE7, 0x61, 0x4E, 0xF2, 0x8D,
-    0x17, 0x3C, 0x3D, 0x27, 0xC5, 0xD1, 0xBF, 0xFA,
-    0x51, 0x55, 0x3D, 0x43, 0x3F, 0x8E, 0xE3, 0xC9,
-    0xE4, 0x9C, 0x05, 0xA2, 0xB8, 0x83, 0xCC, 0xE9,
-    0x54, 0xC9, 0xA8, 0x09, 0x3B, 0x80, 0x61, 0x2A,
-    0x0C, 0xDD, 0x47, 0x32, 0xE0, 0x41, 0xF9, 0x95
-  },
-  {
-    0x3E, 0x7E, 0x57, 0x00, 0x74, 0x33, 0x72, 0x75,
-    0xEF, 0xB5, 0x13, 0x15, 0x58, 0x80, 0x34, 0xC3,
-    0xCF, 0x0D, 0xDD, 0xCA, 0x20, 0xB4, 0x61, 0x2E,
-    0x0B, 0xD5, 0xB8, 0x81, 0xE7, 0xE5, 0x47, 0x6D,
-    0x31, 0x9C, 0xE4, 0xFE, 0x9F, 0x19, 0x18, 0x6E,
-    0x4C, 0x08, 0x26, 0xF4, 0x4F, 0x13, 0x1E, 0xB0,
-    0x48, 0xE6, 0x5B, 0xE2, 0x42, 0xB1, 0x17, 0x2C,
-    0x63, 0xBA, 0xDB, 0x12, 0x3A, 0xB0, 0xCB, 0xE8
-  },
-  {
-    0xD3, 0x2E, 0x9E, 0xC0, 0x2D, 0x38, 0xD4, 0xE1,
-    0xB8, 0x24, 0x9D, 0xF8, 0xDC, 0xB0, 0x0C, 0x5B,
-    0x9C, 0x68, 0xEB, 0x89, 0x22, 0x67, 0x2E, 0x35,
-    0x05, 0x39, 0x3B, 0x6A, 0x21, 0x0B, 0xA5, 0x6F,
-    0x94, 0x96, 0xE5, 0xEE, 0x04, 0x90, 0xEF, 0x38,
-    0x7C, 0x3C, 0xDE, 0xC0, 0x61, 0xF0, 0x6B, 0xC0,
-    0x38, 0x2D, 0x93, 0x04, 0xCA, 0xFB, 0xB8, 0xE0,
-    0xCD, 0x33, 0xD5, 0x70, 0x29, 0xE6, 0x2D, 0xF2
-  },
-  {
-    0x8C, 0x15, 0x12, 0x46, 0x60, 0x89, 0xF0, 0x5B,
-    0x37, 0x75, 0xC2, 0x62, 0xB6, 0x2D, 0x22, 0xB8,
-    0x38, 0x54, 0xA8, 0x32, 0x18, 0x13, 0x0B, 0x4E,
-    0xC9, 0x1B, 0x3C, 0xCB, 0xD2, 0x93, 0xD2, 0xA5,
-    0x43, 0x02, 0xCE, 0xCA, 0xAB, 0x9B, 0x10, 0x0C,
-    0x68, 0xD1, 0xE6, 0xDD, 0xC8, 0xF0, 0x7C, 0xDD,
-    0xBD, 0xFE, 0x6F, 0xDA, 0xAA, 0xF0, 0x99, 0xCC,
-    0x09, 0xD6, 0xB7, 0x25, 0x87, 0x9C, 0x63, 0x69
-  },
-  {
-    0x91, 0xA7, 0xF6, 0x1C, 0x97, 0xC2, 0x91, 0x1E,
-    0x4C, 0x81, 0x2E, 0xF7, 0x1D, 0x78, 0x0A, 0xD8,
-    0xFA, 0x78, 0x87, 0x94, 0x56, 0x1D, 0x08, 0x30,
-    0x3F, 0xD1, 0xC1, 0xCB, 0x60, 0x8A, 0x46, 0xA1,
-    0x25, 0x63, 0x08, 0x6E, 0xC5, 0xB3, 0x9D, 0x47,
-    0x1A, 0xED, 0x94, 0xFB, 0x0F, 0x6C, 0x67, 0x8A,
-    0x43, 0xB8, 0x79, 0x29, 0x32, 0xF9, 0x02, 0x8D,
-    0x77, 0x2A, 0x22, 0x76, 0x8E, 0xA2, 0x3A, 0x9B
-  },
-  {
-    0x4F, 0x6B, 0xB2, 0x22, 0xA3, 0x95, 0xE8, 0xB1,
-    0x8F, 0x6B, 0xA1, 0x55, 0x47, 0x7A, 0xED, 0x3F,
-    0x07, 0x29, 0xAC, 0x9E, 0x83, 0xE1, 0x6D, 0x31,
-    0xA2, 0xA8, 0xBC, 0x65, 0x54, 0x22, 0xB8, 0x37,
-    0xC8, 0x91, 0xC6, 0x19, 0x9E, 0x6F, 0x0D, 0x75,
-    0x79, 0x9E, 0x3B, 0x69, 0x15, 0x25, 0xC5, 0x81,
-    0x95, 0x35, 0x17, 0xF2, 0x52, 0xC4, 0xB9, 0xE3,
-    0xA2, 0x7A, 0x28, 0xFB, 0xAF, 0x49, 0x64, 0x4C
-  },
-  {
-    0x5D, 0x06, 0xC0, 0x7E, 0x7A, 0x64, 0x6C, 0x41,
-    0x3A, 0x50, 0x1C, 0x3F, 0x4B, 0xB2, 0xFC, 0x38,
-    0x12, 0x7D, 0xE7, 0x50, 0x9B, 0x70, 0x77, 0xC4,
-    0xD9, 0xB5, 0x61, 0x32, 0x01, 0xC1, 0xAA, 0x02,
-    0xFD, 0x5F, 0x79, 0xD2, 0x74, 0x59, 0x15, 0xDD,
-    0x57, 0xFB, 0xCB, 0x4C, 0xE0, 0x86, 0x95, 0xF6,
-    0xEF, 0xC0, 0xCB, 0x3D, 0x2D, 0x33, 0x0E, 0x19,
-    0xB4, 0xB0, 0xE6, 0x00, 0x4E, 0xA6, 0x47, 0x1E
-  },
-  {
-    0xB9, 0x67, 0x56, 0xE5, 0x79, 0x09, 0x96, 0x8F,
-    0x14, 0xB7, 0x96, 0xA5, 0xD3, 0x0F, 0x4C, 0x9D,
-    0x67, 0x14, 0x72, 0xCF, 0x82, 0xC8, 0xCF, 0xB2,
-    0xCA, 0xCA, 0x7A, 0xC7, 0xA4, 0x4C, 0xA0, 0xA1,
-    0x4C, 0x98, 0x42, 0xD0, 0x0C, 0x82, 0xE3, 0x37,
-    0x50, 0x2C, 0x94, 0xD5, 0x96, 0x0A, 0xCA, 0x4C,
-    0x49, 0x2E, 0xA7, 0xB0, 0xDF, 0x91, 0x9D, 0xDF,
-    0x1A, 0xAD, 0xA2, 0xA2, 0x75, 0xBB, 0x10, 0xD4
-  },
-  {
-    0xFF, 0x0A, 0x01, 0x5E, 0x98, 0xDB, 0x9C, 0x99,
-    0xF0, 0x39, 0x77, 0x71, 0x0A, 0xAC, 0x3E, 0x65,
-    0x8C, 0x0D, 0x89, 0x6F, 0x6D, 0x71, 0xD6, 0x18,
-    0xBA, 0x79, 0xDC, 0x6C, 0xF7, 0x2A, 0xC7, 0x5B,
-    0x7C, 0x03, 0x8E, 0xB6, 0x86, 0x2D, 0xED, 0xE4,
-    0x54, 0x3E, 0x14, 0x54, 0x13, 0xA6, 0x36, 0x8D,
-    0x69, 0xF5, 0x72, 0x2C, 0x82, 0x7B, 0xA3, 0xEF,
-    0x25, 0xB6, 0xAE, 0x64, 0x40, 0xD3, 0x92, 0x76
-  },
-  {
-    0x5B, 0x21, 0xC5, 0xFD, 0x88, 0x68, 0x36, 0x76,
-    0x12, 0x47, 0x4F, 0xA2, 0xE7, 0x0E, 0x9C, 0xFA,
-    0x22, 0x01, 0xFF, 0xEE, 0xE8, 0xFA, 0xFA, 0xB5,
-    0x79, 0x7A, 0xD5, 0x8F, 0xEF, 0xA1, 0x7C, 0x9B,
-    0x5B, 0x10, 0x7D, 0xA4, 0xA3, 0xDB, 0x63, 0x20,
-    0xBA, 0xAF, 0x2C, 0x86, 0x17, 0xD5, 0xA5, 0x1D,
-    0xF9, 0x14, 0xAE, 0x88, 0xDA, 0x38, 0x67, 0xC2,
-    0xD4, 0x1F, 0x0C, 0xC1, 0x4F, 0xA6, 0x79, 0x28
-  },
-};
-
-
-
-
-static const uint8_t blake2b_keyed_kat[KAT_LENGTH][BLAKE2B_OUTBYTES] =
-{
-  {
-    0x10, 0xEB, 0xB6, 0x77, 0x00, 0xB1, 0x86, 0x8E,
-    0xFB, 0x44, 0x17, 0x98, 0x7A, 0xCF, 0x46, 0x90,
-    0xAE, 0x9D, 0x97, 0x2F, 0xB7, 0xA5, 0x90, 0xC2,
-    0xF0, 0x28, 0x71, 0x79, 0x9A, 0xAA, 0x47, 0x86,
-    0xB5, 0xE9, 0x96, 0xE8, 0xF0, 0xF4, 0xEB, 0x98,
-    0x1F, 0xC2, 0x14, 0xB0, 0x05, 0xF4, 0x2D, 0x2F,
-    0xF4, 0x23, 0x34, 0x99, 0x39, 0x16, 0x53, 0xDF,
-    0x7A, 0xEF, 0xCB, 0xC1, 0x3F, 0xC5, 0x15, 0x68
-  },
-  {
-    0x96, 0x1F, 0x6D, 0xD1, 0xE4, 0xDD, 0x30, 0xF6,
-    0x39, 0x01, 0x69, 0x0C, 0x51, 0x2E, 0x78, 0xE4,
-    0xB4, 0x5E, 0x47, 0x42, 0xED, 0x19, 0x7C, 0x3C,
-    0x5E, 0x45, 0xC5, 0x49, 0xFD, 0x25, 0xF2, 0xE4,
-    0x18, 0x7B, 0x0B, 0xC9, 0xFE, 0x30, 0x49, 0x2B,
-    0x16, 0xB0, 0xD0, 0xBC, 0x4E, 0xF9, 0xB0, 0xF3,
-    0x4C, 0x70, 0x03, 0xFA, 0xC0, 0x9A, 0x5E, 0xF1,
-    0x53, 0x2E, 0x69, 0x43, 0x02, 0x34, 0xCE, 0xBD
-  },
-  {
-    0xDA, 0x2C, 0xFB, 0xE2, 0xD8, 0x40, 0x9A, 0x0F,
-    0x38, 0x02, 0x61, 0x13, 0x88, 0x4F, 0x84, 0xB5,
-    0x01, 0x56, 0x37, 0x1A, 0xE3, 0x04, 0xC4, 0x43,
-    0x01, 0x73, 0xD0, 0x8A, 0x99, 0xD9, 0xFB, 0x1B,
-    0x98, 0x31, 0x64, 0xA3, 0x77, 0x07, 0x06, 0xD5,
-    0x37, 0xF4, 0x9E, 0x0C, 0x91, 0x6D, 0x9F, 0x32,
-    0xB9, 0x5C, 0xC3, 0x7A, 0x95, 0xB9, 0x9D, 0x85,
-    0x74, 0x36, 0xF0, 0x23, 0x2C, 0x88, 0xA9, 0x65
-  },
-  {
-    0x33, 0xD0, 0x82, 0x5D, 0xDD, 0xF7, 0xAD, 0xA9,
-    0x9B, 0x0E, 0x7E, 0x30, 0x71, 0x04, 0xAD, 0x07,
-    0xCA, 0x9C, 0xFD, 0x96, 0x92, 0x21, 0x4F, 0x15,
-    0x61, 0x35, 0x63, 0x15, 0xE7, 0x84, 0xF3, 0xE5,
-    0xA1, 0x7E, 0x36, 0x4A, 0xE9, 0xDB, 0xB1, 0x4C,
-    0xB2, 0x03, 0x6D, 0xF9, 0x32, 0xB7, 0x7F, 0x4B,
-    0x29, 0x27, 0x61, 0x36, 0x5F, 0xB3, 0x28, 0xDE,
-    0x7A, 0xFD, 0xC6, 0xD8, 0x99, 0x8F, 0x5F, 0xC1
-  },
-  {
-    0xBE, 0xAA, 0x5A, 0x3D, 0x08, 0xF3, 0x80, 0x71,
-    0x43, 0xCF, 0x62, 0x1D, 0x95, 0xCD, 0x69, 0x05,
-    0x14, 0xD0, 0xB4, 0x9E, 0xFF, 0xF9, 0xC9, 0x1D,
-    0x24, 0xB5, 0x92, 0x41, 0xEC, 0x0E, 0xEF, 0xA5,
-    0xF6, 0x01, 0x96, 0xD4, 0x07, 0x04, 0x8B, 0xBA,
-    0x8D, 0x21, 0x46, 0x82, 0x8E, 0xBC, 0xB0, 0x48,
-    0x8D, 0x88, 0x42, 0xFD, 0x56, 0xBB, 0x4F, 0x6D,
-    0xF8, 0xE1, 0x9C, 0x4B, 0x4D, 0xAA, 0xB8, 0xAC
-  },
-  {
-    0x09, 0x80, 0x84, 0xB5, 0x1F, 0xD1, 0x3D, 0xEA,
-    0xE5, 0xF4, 0x32, 0x0D, 0xE9, 0x4A, 0x68, 0x8E,
-    0xE0, 0x7B, 0xAE, 0xA2, 0x80, 0x04, 0x86, 0x68,
-    0x9A, 0x86, 0x36, 0x11, 0x7B, 0x46, 0xC1, 0xF4,
-    0xC1, 0xF6, 0xAF, 0x7F, 0x74, 0xAE, 0x7C, 0x85,
-    0x76, 0x00, 0x45, 0x6A, 0x58, 0xA3, 0xAF, 0x25,
-    0x1D, 0xC4, 0x72, 0x3A, 0x64, 0xCC, 0x7C, 0x0A,
-    0x5A, 0xB6, 0xD9, 0xCA, 0xC9, 0x1C, 0x20, 0xBB
-  },
-  {
-    0x60, 0x44, 0x54, 0x0D, 0x56, 0x08, 0x53, 0xEB,
-    0x1C, 0x57, 0xDF, 0x00, 0x77, 0xDD, 0x38, 0x10,
-    0x94, 0x78, 0x1C, 0xDB, 0x90, 0x73, 0xE5, 0xB1,
-    0xB3, 0xD3, 0xF6, 0xC7, 0x82, 0x9E, 0x12, 0x06,
-    0x6B, 0xBA, 0xCA, 0x96, 0xD9, 0x89, 0xA6, 0x90,
-    0xDE, 0x72, 0xCA, 0x31, 0x33, 0xA8, 0x36, 0x52,
-    0xBA, 0x28, 0x4A, 0x6D, 0x62, 0x94, 0x2B, 0x27,
-    0x1F, 0xFA, 0x26, 0x20, 0xC9, 0xE7, 0x5B, 0x1F
-  },
-  {
-    0x7A, 0x8C, 0xFE, 0x9B, 0x90, 0xF7, 0x5F, 0x7E,
-    0xCB, 0x3A, 0xCC, 0x05, 0x3A, 0xAE, 0xD6, 0x19,
-    0x31, 0x12, 0xB6, 0xF6, 0xA4, 0xAE, 0xEB, 0x3F,
-    0x65, 0xD3, 0xDE, 0x54, 0x19, 0x42, 0xDE, 0xB9,
-    0xE2, 0x22, 0x81, 0x52, 0xA3, 0xC4, 0xBB, 0xBE,
-    0x72, 0xFC, 0x3B, 0x12, 0x62, 0x95, 0x28, 0xCF,
-    0xBB, 0x09, 0xFE, 0x63, 0x0F, 0x04, 0x74, 0x33,
-    0x9F, 0x54, 0xAB, 0xF4, 0x53, 0xE2, 0xED, 0x52
-  },
-  {
-    0x38, 0x0B, 0xEA, 0xF6, 0xEA, 0x7C, 0xC9, 0x36,
-    0x5E, 0x27, 0x0E, 0xF0, 0xE6, 0xF3, 0xA6, 0x4F,
-    0xB9, 0x02, 0xAC, 0xAE, 0x51, 0xDD, 0x55, 0x12,
-    0xF8, 0x42, 0x59, 0xAD, 0x2C, 0x91, 0xF4, 0xBC,
-    0x41, 0x08, 0xDB, 0x73, 0x19, 0x2A, 0x5B, 0xBF,
-    0xB0, 0xCB, 0xCF, 0x71, 0xE4, 0x6C, 0x3E, 0x21,
-    0xAE, 0xE1, 0xC5, 0xE8, 0x60, 0xDC, 0x96, 0xE8,
-    0xEB, 0x0B, 0x7B, 0x84, 0x26, 0xE6, 0xAB, 0xE9
-  },
-  {
-    0x60, 0xFE, 0x3C, 0x45, 0x35, 0xE1, 0xB5, 0x9D,
-    0x9A, 0x61, 0xEA, 0x85, 0x00, 0xBF, 0xAC, 0x41,
-    0xA6, 0x9D, 0xFF, 0xB1, 0xCE, 0xAD, 0xD9, 0xAC,
-    0xA3, 0x23, 0xE9, 0xA6, 0x25, 0xB6, 0x4D, 0xA5,
-    0x76, 0x3B, 0xAD, 0x72, 0x26, 0xDA, 0x02, 0xB9,
-    0xC8, 0xC4, 0xF1, 0xA5, 0xDE, 0x14, 0x0A, 0xC5,
-    0xA6, 0xC1, 0x12, 0x4E, 0x4F, 0x71, 0x8C, 0xE0,
-    0xB2, 0x8E, 0xA4, 0x73, 0x93, 0xAA, 0x66, 0x37
-  },
-  {
-    0x4F, 0xE1, 0x81, 0xF5, 0x4A, 0xD6, 0x3A, 0x29,
-    0x83, 0xFE, 0xAA, 0xF7, 0x7D, 0x1E, 0x72, 0x35,
-    0xC2, 0xBE, 0xB1, 0x7F, 0xA3, 0x28, 0xB6, 0xD9,
-    0x50, 0x5B, 0xDA, 0x32, 0x7D, 0xF1, 0x9F, 0xC3,
-    0x7F, 0x02, 0xC4, 0xB6, 0xF0, 0x36, 0x8C, 0xE2,
-    0x31, 0x47, 0x31, 0x3A, 0x8E, 0x57, 0x38, 0xB5,
-    0xFA, 0x2A, 0x95, 0xB2, 0x9D, 0xE1, 0xC7, 0xF8,
-    0x26, 0x4E, 0xB7, 0x7B, 0x69, 0xF5, 0x85, 0xCD
-  },
-  {
-    0xF2, 0x28, 0x77, 0x3C, 0xE3, 0xF3, 0xA4, 0x2B,
-    0x5F, 0x14, 0x4D, 0x63, 0x23, 0x7A, 0x72, 0xD9,
-    0x96, 0x93, 0xAD, 0xB8, 0x83, 0x7D, 0x0E, 0x11,
-    0x2A, 0x8A, 0x0F, 0x8F, 0xFF, 0xF2, 0xC3, 0x62,
-    0x85, 0x7A, 0xC4, 0x9C, 0x11, 0xEC, 0x74, 0x0D,
-    0x15, 0x00, 0x74, 0x9D, 0xAC, 0x9B, 0x1F, 0x45,
-    0x48, 0x10, 0x8B, 0xF3, 0x15, 0x57, 0x94, 0xDC,
-    0xC9, 0xE4, 0x08, 0x28, 0x49, 0xE2, 0xB8, 0x5B
-  },
-  {
-    0x96, 0x24, 0x52, 0xA8, 0x45, 0x5C, 0xC5, 0x6C,
-    0x85, 0x11, 0x31, 0x7E, 0x3B, 0x1F, 0x3B, 0x2C,
-    0x37, 0xDF, 0x75, 0xF5, 0x88, 0xE9, 0x43, 0x25,
-    0xFD, 0xD7, 0x70, 0x70, 0x35, 0x9C, 0xF6, 0x3A,
-    0x9A, 0xE6, 0xE9, 0x30, 0x93, 0x6F, 0xDF, 0x8E,
-    0x1E, 0x08, 0xFF, 0xCA, 0x44, 0x0C, 0xFB, 0x72,
-    0xC2, 0x8F, 0x06, 0xD8, 0x9A, 0x21, 0x51, 0xD1,
-    0xC4, 0x6C, 0xD5, 0xB2, 0x68, 0xEF, 0x85, 0x63
-  },
-  {
-    0x43, 0xD4, 0x4B, 0xFA, 0x18, 0x76, 0x8C, 0x59,
-    0x89, 0x6B, 0xF7, 0xED, 0x17, 0x65, 0xCB, 0x2D,
-    0x14, 0xAF, 0x8C, 0x26, 0x02, 0x66, 0x03, 0x90,
-    0x99, 0xB2, 0x5A, 0x60, 0x3E, 0x4D, 0xDC, 0x50,
-    0x39, 0xD6, 0xEF, 0x3A, 0x91, 0x84, 0x7D, 0x10,
-    0x88, 0xD4, 0x01, 0xC0, 0xC7, 0xE8, 0x47, 0x78,
-    0x1A, 0x8A, 0x59, 0x0D, 0x33, 0xA3, 0xC6, 0xCB,
-    0x4D, 0xF0, 0xFA, 0xB1, 0xC2, 0xF2, 0x23, 0x55
-  },
-  {
-    0xDC, 0xFF, 0xA9, 0xD5, 0x8C, 0x2A, 0x4C, 0xA2,
-    0xCD, 0xBB, 0x0C, 0x7A, 0xA4, 0xC4, 0xC1, 0xD4,
-    0x51, 0x65, 0x19, 0x00, 0x89, 0xF4, 0xE9, 0x83,
-    0xBB, 0x1C, 0x2C, 0xAB, 0x4A, 0xAE, 0xFF, 0x1F,
-    0xA2, 0xB5, 0xEE, 0x51, 0x6F, 0xEC, 0xD7, 0x80,
-    0x54, 0x02, 0x40, 0xBF, 0x37, 0xE5, 0x6C, 0x8B,
-    0xCC, 0xA7, 0xFA, 0xB9, 0x80, 0xE1, 0xE6, 0x1C,
-    0x94, 0x00, 0xD8, 0xA9, 0xA5, 0xB1, 0x4A, 0xC6
-  },
-  {
-    0x6F, 0xBF, 0x31, 0xB4, 0x5A, 0xB0, 0xC0, 0xB8,
-    0xDA, 0xD1, 0xC0, 0xF5, 0xF4, 0x06, 0x13, 0x79,
-    0x91, 0x2D, 0xDE, 0x5A, 0xA9, 0x22, 0x09, 0x9A,
-    0x03, 0x0B, 0x72, 0x5C, 0x73, 0x34, 0x6C, 0x52,
-    0x42, 0x91, 0xAD, 0xEF, 0x89, 0xD2, 0xF6, 0xFD,
-    0x8D, 0xFC, 0xDA, 0x6D, 0x07, 0xDA, 0xD8, 0x11,
-    0xA9, 0x31, 0x45, 0x36, 0xC2, 0x91, 0x5E, 0xD4,
-    0x5D, 0xA3, 0x49, 0x47, 0xE8, 0x3D, 0xE3, 0x4E
-  },
-  {
-    0xA0, 0xC6, 0x5B, 0xDD, 0xDE, 0x8A, 0xDE, 0xF5,
-    0x72, 0x82, 0xB0, 0x4B, 0x11, 0xE7, 0xBC, 0x8A,
-    0xAB, 0x10, 0x5B, 0x99, 0x23, 0x1B, 0x75, 0x0C,
-    0x02, 0x1F, 0x4A, 0x73, 0x5C, 0xB1, 0xBC, 0xFA,
-    0xB8, 0x75, 0x53, 0xBB, 0xA3, 0xAB, 0xB0, 0xC3,
-    0xE6, 0x4A, 0x0B, 0x69, 0x55, 0x28, 0x51, 0x85,
-    0xA0, 0xBD, 0x35, 0xFB, 0x8C, 0xFD, 0xE5, 0x57,
-    0x32, 0x9B, 0xEB, 0xB1, 0xF6, 0x29, 0xEE, 0x93
-  },
-  {
-    0xF9, 0x9D, 0x81, 0x55, 0x50, 0x55, 0x8E, 0x81,
-    0xEC, 0xA2, 0xF9, 0x67, 0x18, 0xAE, 0xD1, 0x0D,
-    0x86, 0xF3, 0xF1, 0xCF, 0xB6, 0x75, 0xCC, 0xE0,
-    0x6B, 0x0E, 0xFF, 0x02, 0xF6, 0x17, 0xC5, 0xA4,
-    0x2C, 0x5A, 0xA7, 0x60, 0x27, 0x0F, 0x26, 0x79,
-    0xDA, 0x26, 0x77, 0xC5, 0xAE, 0xB9, 0x4F, 0x11,
-    0x42, 0x27, 0x7F, 0x21, 0xC7, 0xF7, 0x9F, 0x3C,
-    0x4F, 0x0C, 0xCE, 0x4E, 0xD8, 0xEE, 0x62, 0xB1
-  },
-  {
-    0x95, 0x39, 0x1D, 0xA8, 0xFC, 0x7B, 0x91, 0x7A,
-    0x20, 0x44, 0xB3, 0xD6, 0xF5, 0x37, 0x4E, 0x1C,
-    0xA0, 0x72, 0xB4, 0x14, 0x54, 0xD5, 0x72, 0xC7,
-    0x35, 0x6C, 0x05, 0xFD, 0x4B, 0xC1, 0xE0, 0xF4,
-    0x0B, 0x8B, 0xB8, 0xB4, 0xA9, 0xF6, 0xBC, 0xE9,
-    0xBE, 0x2C, 0x46, 0x23, 0xC3, 0x99, 0xB0, 0xDC,
-    0xA0, 0xDA, 0xB0, 0x5C, 0xB7, 0x28, 0x1B, 0x71,
-    0xA2, 0x1B, 0x0E, 0xBC, 0xD9, 0xE5, 0x56, 0x70
-  },
-  {
-    0x04, 0xB9, 0xCD, 0x3D, 0x20, 0xD2, 0x21, 0xC0,
-    0x9A, 0xC8, 0x69, 0x13, 0xD3, 0xDC, 0x63, 0x04,
-    0x19, 0x89, 0xA9, 0xA1, 0xE6, 0x94, 0xF1, 0xE6,
-    0x39, 0xA3, 0xBA, 0x7E, 0x45, 0x18, 0x40, 0xF7,
-    0x50, 0xC2, 0xFC, 0x19, 0x1D, 0x56, 0xAD, 0x61,
-    0xF2, 0xE7, 0x93, 0x6B, 0xC0, 0xAC, 0x8E, 0x09,
-    0x4B, 0x60, 0xCA, 0xEE, 0xD8, 0x78, 0xC1, 0x87,
-    0x99, 0x04, 0x54, 0x02, 0xD6, 0x1C, 0xEA, 0xF9
-  },
-  {
-    0xEC, 0x0E, 0x0E, 0xF7, 0x07, 0xE4, 0xED, 0x6C,
-    0x0C, 0x66, 0xF9, 0xE0, 0x89, 0xE4, 0x95, 0x4B,
-    0x05, 0x80, 0x30, 0xD2, 0xDD, 0x86, 0x39, 0x8F,
-    0xE8, 0x40, 0x59, 0x63, 0x1F, 0x9E, 0xE5, 0x91,
-    0xD9, 0xD7, 0x73, 0x75, 0x35, 0x51, 0x49, 0x17,
-    0x8C, 0x0C, 0xF8, 0xF8, 0xE7, 0xC4, 0x9E, 0xD2,
-    0xA5, 0xE4, 0xF9, 0x54, 0x88, 0xA2, 0x24, 0x70,
-    0x67, 0xC2, 0x08, 0x51, 0x0F, 0xAD, 0xC4, 0x4C
-  },
-  {
-    0x9A, 0x37, 0xCC, 0xE2, 0x73, 0xB7, 0x9C, 0x09,
-    0x91, 0x36, 0x77, 0x51, 0x0E, 0xAF, 0x76, 0x88,
-    0xE8, 0x9B, 0x33, 0x14, 0xD3, 0x53, 0x2F, 0xD2,
-    0x76, 0x4C, 0x39, 0xDE, 0x02, 0x2A, 0x29, 0x45,
-    0xB5, 0x71, 0x0D, 0x13, 0x51, 0x7A, 0xF8, 0xDD,
-    0xC0, 0x31, 0x66, 0x24, 0xE7, 0x3B, 0xEC, 0x1C,
-    0xE6, 0x7D, 0xF1, 0x52, 0x28, 0x30, 0x20, 0x36,
-    0xF3, 0x30, 0xAB, 0x0C, 0xB4, 0xD2, 0x18, 0xDD
-  },
-  {
-    0x4C, 0xF9, 0xBB, 0x8F, 0xB3, 0xD4, 0xDE, 0x8B,
-    0x38, 0xB2, 0xF2, 0x62, 0xD3, 0xC4, 0x0F, 0x46,
-    0xDF, 0xE7, 0x47, 0xE8, 0xFC, 0x0A, 0x41, 0x4C,
-    0x19, 0x3D, 0x9F, 0xCF, 0x75, 0x31, 0x06, 0xCE,
-    0x47, 0xA1, 0x8F, 0x17, 0x2F, 0x12, 0xE8, 0xA2,
-    0xF1, 0xC2, 0x67, 0x26, 0x54, 0x53, 0x58, 0xE5,
-    0xEE, 0x28, 0xC9, 0xE2, 0x21, 0x3A, 0x87, 0x87,
-    0xAA, 0xFB, 0xC5, 0x16, 0xD2, 0x34, 0x31, 0x52
-  },
-  {
-    0x64, 0xE0, 0xC6, 0x3A, 0xF9, 0xC8, 0x08, 0xFD,
-    0x89, 0x31, 0x37, 0x12, 0x98, 0x67, 0xFD, 0x91,
-    0x93, 0x9D, 0x53, 0xF2, 0xAF, 0x04, 0xBE, 0x4F,
-    0xA2, 0x68, 0x00, 0x61, 0x00, 0x06, 0x9B, 0x2D,
-    0x69, 0xDA, 0xA5, 0xC5, 0xD8, 0xED, 0x7F, 0xDD,
-    0xCB, 0x2A, 0x70, 0xEE, 0xEC, 0xDF, 0x2B, 0x10,
-    0x5D, 0xD4, 0x6A, 0x1E, 0x3B, 0x73, 0x11, 0x72,
-    0x8F, 0x63, 0x9A, 0xB4, 0x89, 0x32, 0x6B, 0xC9
-  },
-  {
-    0x5E, 0x9C, 0x93, 0x15, 0x8D, 0x65, 0x9B, 0x2D,
-    0xEF, 0x06, 0xB0, 0xC3, 0xC7, 0x56, 0x50, 0x45,
-    0x54, 0x26, 0x62, 0xD6, 0xEE, 0xE8, 0xA9, 0x6A,
-    0x89, 0xB7, 0x8A, 0xDE, 0x09, 0xFE, 0x8B, 0x3D,
-    0xCC, 0x09, 0x6D, 0x4F, 0xE4, 0x88, 0x15, 0xD8,
-    0x8D, 0x8F, 0x82, 0x62, 0x01, 0x56, 0x60, 0x2A,
-    0xF5, 0x41, 0x95, 0x5E, 0x1F, 0x6C, 0xA3, 0x0D,
-    0xCE, 0x14, 0xE2, 0x54, 0xC3, 0x26, 0xB8, 0x8F
-  },
-  {
-    0x77, 0x75, 0xDF, 0xF8, 0x89, 0x45, 0x8D, 0xD1,
-    0x1A, 0xEF, 0x41, 0x72, 0x76, 0x85, 0x3E, 0x21,
-    0x33, 0x5E, 0xB8, 0x8E, 0x4D, 0xEC, 0x9C, 0xFB,
-    0x4E, 0x9E, 0xDB, 0x49, 0x82, 0x00, 0x88, 0x55,
-    0x1A, 0x2C, 0xA6, 0x03, 0x39, 0xF1, 0x20, 0x66,
-    0x10, 0x11, 0x69, 0xF0, 0xDF, 0xE8, 0x4B, 0x09,
-    0x8F, 0xDD, 0xB1, 0x48, 0xD9, 0xDA, 0x6B, 0x3D,
-    0x61, 0x3D, 0xF2, 0x63, 0x88, 0x9A, 0xD6, 0x4B
-  },
-  {
-    0xF0, 0xD2, 0x80, 0x5A, 0xFB, 0xB9, 0x1F, 0x74,
-    0x39, 0x51, 0x35, 0x1A, 0x6D, 0x02, 0x4F, 0x93,
-    0x53, 0xA2, 0x3C, 0x7C, 0xE1, 0xFC, 0x2B, 0x05,
-    0x1B, 0x3A, 0x8B, 0x96, 0x8C, 0x23, 0x3F, 0x46,
-    0xF5, 0x0F, 0x80, 0x6E, 0xCB, 0x15, 0x68, 0xFF,
-    0xAA, 0x0B, 0x60, 0x66, 0x1E, 0x33, 0x4B, 0x21,
-    0xDD, 0xE0, 0x4F, 0x8F, 0xA1, 0x55, 0xAC, 0x74,
-    0x0E, 0xEB, 0x42, 0xE2, 0x0B, 0x60, 0xD7, 0x64
-  },
-  {
-    0x86, 0xA2, 0xAF, 0x31, 0x6E, 0x7D, 0x77, 0x54,
-    0x20, 0x1B, 0x94, 0x2E, 0x27, 0x53, 0x64, 0xAC,
-    0x12, 0xEA, 0x89, 0x62, 0xAB, 0x5B, 0xD8, 0xD7,
-    0xFB, 0x27, 0x6D, 0xC5, 0xFB, 0xFF, 0xC8, 0xF9,
-    0xA2, 0x8C, 0xAE, 0x4E, 0x48, 0x67, 0xDF, 0x67,
-    0x80, 0xD9, 0xB7, 0x25, 0x24, 0x16, 0x09, 0x27,
-    0xC8, 0x55, 0xDA, 0x5B, 0x60, 0x78, 0xE0, 0xB5,
-    0x54, 0xAA, 0x91, 0xE3, 0x1C, 0xB9, 0xCA, 0x1D
-  },
-  {
-    0x10, 0xBD, 0xF0, 0xCA, 0xA0, 0x80, 0x27, 0x05,
-    0xE7, 0x06, 0x36, 0x9B, 0xAF, 0x8A, 0x3F, 0x79,
-    0xD7, 0x2C, 0x0A, 0x03, 0xA8, 0x06, 0x75, 0xA7,
-    0xBB, 0xB0, 0x0B, 0xE3, 0xA4, 0x5E, 0x51, 0x64,
-    0x24, 0xD1, 0xEE, 0x88, 0xEF, 0xB5, 0x6F, 0x6D,
-    0x57, 0x77, 0x54, 0x5A, 0xE6, 0xE2, 0x77, 0x65,
-    0xC3, 0xA8, 0xF5, 0xE4, 0x93, 0xFC, 0x30, 0x89,
-    0x15, 0x63, 0x89, 0x33, 0xA1, 0xDF, 0xEE, 0x55
-  },
-  {
-    0xB0, 0x17, 0x81, 0x09, 0x2B, 0x17, 0x48, 0x45,
-    0x9E, 0x2E, 0x4E, 0xC1, 0x78, 0x69, 0x66, 0x27,
-    0xBF, 0x4E, 0xBA, 0xFE, 0xBB, 0xA7, 0x74, 0xEC,
-    0xF0, 0x18, 0xB7, 0x9A, 0x68, 0xAE, 0xB8, 0x49,
-    0x17, 0xBF, 0x0B, 0x84, 0xBB, 0x79, 0xD1, 0x7B,
-    0x74, 0x31, 0x51, 0x14, 0x4C, 0xD6, 0x6B, 0x7B,
-    0x33, 0xA4, 0xB9, 0xE5, 0x2C, 0x76, 0xC4, 0xE1,
-    0x12, 0x05, 0x0F, 0xF5, 0x38, 0x5B, 0x7F, 0x0B
-  },
-  {
-    0xC6, 0xDB, 0xC6, 0x1D, 0xEC, 0x6E, 0xAE, 0xAC,
-    0x81, 0xE3, 0xD5, 0xF7, 0x55, 0x20, 0x3C, 0x8E,
-    0x22, 0x05, 0x51, 0x53, 0x4A, 0x0B, 0x2F, 0xD1,
-    0x05, 0xA9, 0x18, 0x89, 0x94, 0x5A, 0x63, 0x85,
-    0x50, 0x20, 0x4F, 0x44, 0x09, 0x3D, 0xD9, 0x98,
-    0xC0, 0x76, 0x20, 0x5D, 0xFF, 0xAD, 0x70, 0x3A,
-    0x0E, 0x5C, 0xD3, 0xC7, 0xF4, 0x38, 0xA7, 0xE6,
-    0x34, 0xCD, 0x59, 0xFE, 0xDE, 0xDB, 0x53, 0x9E
-  },
-  {
-    0xEB, 0xA5, 0x1A, 0xCF, 0xFB, 0x4C, 0xEA, 0x31,
-    0xDB, 0x4B, 0x8D, 0x87, 0xE9, 0xBF, 0x7D, 0xD4,
-    0x8F, 0xE9, 0x7B, 0x02, 0x53, 0xAE, 0x67, 0xAA,
-    0x58, 0x0F, 0x9A, 0xC4, 0xA9, 0xD9, 0x41, 0xF2,
-    0xBE, 0xA5, 0x18, 0xEE, 0x28, 0x68, 0x18, 0xCC,
-    0x9F, 0x63, 0x3F, 0x2A, 0x3B, 0x9F, 0xB6, 0x8E,
-    0x59, 0x4B, 0x48, 0xCD, 0xD6, 0xD5, 0x15, 0xBF,
-    0x1D, 0x52, 0xBA, 0x6C, 0x85, 0xA2, 0x03, 0xA7
-  },
-  {
-    0x86, 0x22, 0x1F, 0x3A, 0xDA, 0x52, 0x03, 0x7B,
-    0x72, 0x22, 0x4F, 0x10, 0x5D, 0x79, 0x99, 0x23,
-    0x1C, 0x5E, 0x55, 0x34, 0xD0, 0x3D, 0xA9, 0xD9,
-    0xC0, 0xA1, 0x2A, 0xCB, 0x68, 0x46, 0x0C, 0xD3,
-    0x75, 0xDA, 0xF8, 0xE2, 0x43, 0x86, 0x28, 0x6F,
-    0x96, 0x68, 0xF7, 0x23, 0x26, 0xDB, 0xF9, 0x9B,
-    0xA0, 0x94, 0x39, 0x24, 0x37, 0xD3, 0x98, 0xE9,
-    0x5B, 0xB8, 0x16, 0x1D, 0x71, 0x7F, 0x89, 0x91
-  },
-  {
-    0x55, 0x95, 0xE0, 0x5C, 0x13, 0xA7, 0xEC, 0x4D,
-    0xC8, 0xF4, 0x1F, 0xB7, 0x0C, 0xB5, 0x0A, 0x71,
-    0xBC, 0xE1, 0x7C, 0x02, 0x4F, 0xF6, 0xDE, 0x7A,
-    0xF6, 0x18, 0xD0, 0xCC, 0x4E, 0x9C, 0x32, 0xD9,
-    0x57, 0x0D, 0x6D, 0x3E, 0xA4, 0x5B, 0x86, 0x52,
-    0x54, 0x91, 0x03, 0x0C, 0x0D, 0x8F, 0x2B, 0x18,
-    0x36, 0xD5, 0x77, 0x8C, 0x1C, 0xE7, 0x35, 0xC1,
-    0x77, 0x07, 0xDF, 0x36, 0x4D, 0x05, 0x43, 0x47
-  },
-  {
-    0xCE, 0x0F, 0x4F, 0x6A, 0xCA, 0x89, 0x59, 0x0A,
-    0x37, 0xFE, 0x03, 0x4D, 0xD7, 0x4D, 0xD5, 0xFA,
-    0x65, 0xEB, 0x1C, 0xBD, 0x0A, 0x41, 0x50, 0x8A,
-    0xAD, 0xDC, 0x09, 0x35, 0x1A, 0x3C, 0xEA, 0x6D,
-    0x18, 0xCB, 0x21, 0x89, 0xC5, 0x4B, 0x70, 0x0C,
-    0x00, 0x9F, 0x4C, 0xBF, 0x05, 0x21, 0xC7, 0xEA,
-    0x01, 0xBE, 0x61, 0xC5, 0xAE, 0x09, 0xCB, 0x54,
-    0xF2, 0x7B, 0xC1, 0xB4, 0x4D, 0x65, 0x8C, 0x82
-  },
-  {
-    0x7E, 0xE8, 0x0B, 0x06, 0xA2, 0x15, 0xA3, 0xBC,
-    0xA9, 0x70, 0xC7, 0x7C, 0xDA, 0x87, 0x61, 0x82,
-    0x2B, 0xC1, 0x03, 0xD4, 0x4F, 0xA4, 0xB3, 0x3F,
-    0x4D, 0x07, 0xDC, 0xB9, 0x97, 0xE3, 0x6D, 0x55,
-    0x29, 0x8B, 0xCE, 0xAE, 0x12, 0x24, 0x1B, 0x3F,
-    0xA0, 0x7F, 0xA6, 0x3B, 0xE5, 0x57, 0x60, 0x68,
-    0xDA, 0x38, 0x7B, 0x8D, 0x58, 0x59, 0xAE, 0xAB,
-    0x70, 0x13, 0x69, 0x84, 0x8B, 0x17, 0x6D, 0x42
-  },
-  {
-    0x94, 0x0A, 0x84, 0xB6, 0xA8, 0x4D, 0x10, 0x9A,
-    0xAB, 0x20, 0x8C, 0x02, 0x4C, 0x6C, 0xE9, 0x64,
-    0x76, 0x76, 0xBA, 0x0A, 0xAA, 0x11, 0xF8, 0x6D,
-    0xBB, 0x70, 0x18, 0xF9, 0xFD, 0x22, 0x20, 0xA6,
-    0xD9, 0x01, 0xA9, 0x02, 0x7F, 0x9A, 0xBC, 0xF9,
-    0x35, 0x37, 0x27, 0x27, 0xCB, 0xF0, 0x9E, 0xBD,
-    0x61, 0xA2, 0xA2, 0xEE, 0xB8, 0x76, 0x53, 0xE8,
-    0xEC, 0xAD, 0x1B, 0xAB, 0x85, 0xDC, 0x83, 0x27
-  },
-  {
-    0x20, 0x20, 0xB7, 0x82, 0x64, 0xA8, 0x2D, 0x9F,
-    0x41, 0x51, 0x14, 0x1A, 0xDB, 0xA8, 0xD4, 0x4B,
-    0xF2, 0x0C, 0x5E, 0xC0, 0x62, 0xEE, 0xE9, 0xB5,
-    0x95, 0xA1, 0x1F, 0x9E, 0x84, 0x90, 0x1B, 0xF1,
-    0x48, 0xF2, 0x98, 0xE0, 0xC9, 0xF8, 0x77, 0x7D,
-    0xCD, 0xBC, 0x7C, 0xC4, 0x67, 0x0A, 0xAC, 0x35,
-    0x6C, 0xC2, 0xAD, 0x8C, 0xCB, 0x16, 0x29, 0xF1,
-    0x6F, 0x6A, 0x76, 0xBC, 0xEF, 0xBE, 0xE7, 0x60
-  },
-  {
-    0xD1, 0xB8, 0x97, 0xB0, 0xE0, 0x75, 0xBA, 0x68,
-    0xAB, 0x57, 0x2A, 0xDF, 0x9D, 0x9C, 0x43, 0x66,
-    0x63, 0xE4, 0x3E, 0xB3, 0xD8, 0xE6, 0x2D, 0x92,
-    0xFC, 0x49, 0xC9, 0xBE, 0x21, 0x4E, 0x6F, 0x27,
-    0x87, 0x3F, 0xE2, 0x15, 0xA6, 0x51, 0x70, 0xE6,
-    0xBE, 0xA9, 0x02, 0x40, 0x8A, 0x25, 0xB4, 0x95,
-    0x06, 0xF4, 0x7B, 0xAB, 0xD0, 0x7C, 0xEC, 0xF7,
-    0x11, 0x3E, 0xC1, 0x0C, 0x5D, 0xD3, 0x12, 0x52
-  },
-  {
-    0xB1, 0x4D, 0x0C, 0x62, 0xAB, 0xFA, 0x46, 0x9A,
-    0x35, 0x71, 0x77, 0xE5, 0x94, 0xC1, 0x0C, 0x19,
-    0x42, 0x43, 0xED, 0x20, 0x25, 0xAB, 0x8A, 0xA5,
-    0xAD, 0x2F, 0xA4, 0x1A, 0xD3, 0x18, 0xE0, 0xFF,
-    0x48, 0xCD, 0x5E, 0x60, 0xBE, 0xC0, 0x7B, 0x13,
-    0x63, 0x4A, 0x71, 0x1D, 0x23, 0x26, 0xE4, 0x88,
-    0xA9, 0x85, 0xF3, 0x1E, 0x31, 0x15, 0x33, 0x99,
-    0xE7, 0x30, 0x88, 0xEF, 0xC8, 0x6A, 0x5C, 0x55
-  },
-  {
-    0x41, 0x69, 0xC5, 0xCC, 0x80, 0x8D, 0x26, 0x97,
-    0xDC, 0x2A, 0x82, 0x43, 0x0D, 0xC2, 0x3E, 0x3C,
-    0xD3, 0x56, 0xDC, 0x70, 0xA9, 0x45, 0x66, 0x81,
-    0x05, 0x02, 0xB8, 0xD6, 0x55, 0xB3, 0x9A, 0xBF,
-    0x9E, 0x7F, 0x90, 0x2F, 0xE7, 0x17, 0xE0, 0x38,
-    0x92, 0x19, 0x85, 0x9E, 0x19, 0x45, 0xDF, 0x1A,
-    0xF6, 0xAD, 0xA4, 0x2E, 0x4C, 0xCD, 0xA5, 0x5A,
-    0x19, 0x7B, 0x71, 0x00, 0xA3, 0x0C, 0x30, 0xA1
-  },
-  {
-    0x25, 0x8A, 0x4E, 0xDB, 0x11, 0x3D, 0x66, 0xC8,
-    0x39, 0xC8, 0xB1, 0xC9, 0x1F, 0x15, 0xF3, 0x5A,
-    0xDE, 0x60, 0x9F, 0x11, 0xCD, 0x7F, 0x86, 0x81,
-    0xA4, 0x04, 0x5B, 0x9F, 0xEF, 0x7B, 0x0B, 0x24,
-    0xC8, 0x2C, 0xDA, 0x06, 0xA5, 0xF2, 0x06, 0x7B,
-    0x36, 0x88, 0x25, 0xE3, 0x91, 0x4E, 0x53, 0xD6,
-    0x94, 0x8E, 0xDE, 0x92, 0xEF, 0xD6, 0xE8, 0x38,
-    0x7F, 0xA2, 0xE5, 0x37, 0x23, 0x9B, 0x5B, 0xEE
-  },
-  {
-    0x79, 0xD2, 0xD8, 0x69, 0x6D, 0x30, 0xF3, 0x0F,
-    0xB3, 0x46, 0x57, 0x76, 0x11, 0x71, 0xA1, 0x1E,
-    0x6C, 0x3F, 0x1E, 0x64, 0xCB, 0xE7, 0xBE, 0xBE,
-    0xE1, 0x59, 0xCB, 0x95, 0xBF, 0xAF, 0x81, 0x2B,
-    0x4F, 0x41, 0x1E, 0x2F, 0x26, 0xD9, 0xC4, 0x21,
-    0xDC, 0x2C, 0x28, 0x4A, 0x33, 0x42, 0xD8, 0x23,
-    0xEC, 0x29, 0x38, 0x49, 0xE4, 0x2D, 0x1E, 0x46,
-    0xB0, 0xA4, 0xAC, 0x1E, 0x3C, 0x86, 0xAB, 0xAA
-  },
-  {
-    0x8B, 0x94, 0x36, 0x01, 0x0D, 0xC5, 0xDE, 0xE9,
-    0x92, 0xAE, 0x38, 0xAE, 0xA9, 0x7F, 0x2C, 0xD6,
-    0x3B, 0x94, 0x6D, 0x94, 0xFE, 0xDD, 0x2E, 0xC9,
-    0x67, 0x1D, 0xCD, 0xE3, 0xBD, 0x4C, 0xE9, 0x56,
-    0x4D, 0x55, 0x5C, 0x66, 0xC1, 0x5B, 0xB2, 0xB9,
-    0x00, 0xDF, 0x72, 0xED, 0xB6, 0xB8, 0x91, 0xEB,
-    0xCA, 0xDF, 0xEF, 0xF6, 0x3C, 0x9E, 0xA4, 0x03,
-    0x6A, 0x99, 0x8B, 0xE7, 0x97, 0x39, 0x81, 0xE7
-  },
-  {
-    0xC8, 0xF6, 0x8E, 0x69, 0x6E, 0xD2, 0x82, 0x42,
-    0xBF, 0x99, 0x7F, 0x5B, 0x3B, 0x34, 0x95, 0x95,
-    0x08, 0xE4, 0x2D, 0x61, 0x38, 0x10, 0xF1, 0xE2,
-    0xA4, 0x35, 0xC9, 0x6E, 0xD2, 0xFF, 0x56, 0x0C,
-    0x70, 0x22, 0xF3, 0x61, 0xA9, 0x23, 0x4B, 0x98,
-    0x37, 0xFE, 0xEE, 0x90, 0xBF, 0x47, 0x92, 0x2E,
-    0xE0, 0xFD, 0x5F, 0x8D, 0xDF, 0x82, 0x37, 0x18,
-    0xD8, 0x6D, 0x1E, 0x16, 0xC6, 0x09, 0x00, 0x71
-  },
-  {
-    0xB0, 0x2D, 0x3E, 0xEE, 0x48, 0x60, 0xD5, 0x86,
-    0x8B, 0x2C, 0x39, 0xCE, 0x39, 0xBF, 0xE8, 0x10,
-    0x11, 0x29, 0x05, 0x64, 0xDD, 0x67, 0x8C, 0x85,
-    0xE8, 0x78, 0x3F, 0x29, 0x30, 0x2D, 0xFC, 0x13,
-    0x99, 0xBA, 0x95, 0xB6, 0xB5, 0x3C, 0xD9, 0xEB,
-    0xBF, 0x40, 0x0C, 0xCA, 0x1D, 0xB0, 0xAB, 0x67,
-    0xE1, 0x9A, 0x32, 0x5F, 0x2D, 0x11, 0x58, 0x12,
-    0xD2, 0x5D, 0x00, 0x97, 0x8A, 0xD1, 0xBC, 0xA4
-  },
-  {
-    0x76, 0x93, 0xEA, 0x73, 0xAF, 0x3A, 0xC4, 0xDA,
-    0xD2, 0x1C, 0xA0, 0xD8, 0xDA, 0x85, 0xB3, 0x11,
-    0x8A, 0x7D, 0x1C, 0x60, 0x24, 0xCF, 0xAF, 0x55,
-    0x76, 0x99, 0x86, 0x82, 0x17, 0xBC, 0x0C, 0x2F,
-    0x44, 0xA1, 0x99, 0xBC, 0x6C, 0x0E, 0xDD, 0x51,
-    0x97, 0x98, 0xBA, 0x05, 0xBD, 0x5B, 0x1B, 0x44,
-    0x84, 0x34, 0x6A, 0x47, 0xC2, 0xCA, 0xDF, 0x6B,
-    0xF3, 0x0B, 0x78, 0x5C, 0xC8, 0x8B, 0x2B, 0xAF
-  },
-  {
-    0xA0, 0xE5, 0xC1, 0xC0, 0x03, 0x1C, 0x02, 0xE4,
-    0x8B, 0x7F, 0x09, 0xA5, 0xE8, 0x96, 0xEE, 0x9A,
-    0xEF, 0x2F, 0x17, 0xFC, 0x9E, 0x18, 0xE9, 0x97,
-    0xD7, 0xF6, 0xCA, 0xC7, 0xAE, 0x31, 0x64, 0x22,
-    0xC2, 0xB1, 0xE7, 0x79, 0x84, 0xE5, 0xF3, 0xA7,
-    0x3C, 0xB4, 0x5D, 0xEE, 0xD5, 0xD3, 0xF8, 0x46,
-    0x00, 0x10, 0x5E, 0x6E, 0xE3, 0x8F, 0x2D, 0x09,
-    0x0C, 0x7D, 0x04, 0x42, 0xEA, 0x34, 0xC4, 0x6D
-  },
-  {
-    0x41, 0xDA, 0xA6, 0xAD, 0xCF, 0xDB, 0x69, 0xF1,
-    0x44, 0x0C, 0x37, 0xB5, 0x96, 0x44, 0x01, 0x65,
-    0xC1, 0x5A, 0xDA, 0x59, 0x68, 0x13, 0xE2, 0xE2,
-    0x2F, 0x06, 0x0F, 0xCD, 0x55, 0x1F, 0x24, 0xDE,
-    0xE8, 0xE0, 0x4B, 0xA6, 0x89, 0x03, 0x87, 0x88,
-    0x6C, 0xEE, 0xC4, 0xA7, 0xA0, 0xD7, 0xFC, 0x6B,
-    0x44, 0x50, 0x63, 0x92, 0xEC, 0x38, 0x22, 0xC0,
-    0xD8, 0xC1, 0xAC, 0xFC, 0x7D, 0x5A, 0xEB, 0xE8
-  },
-  {
-    0x14, 0xD4, 0xD4, 0x0D, 0x59, 0x84, 0xD8, 0x4C,
-    0x5C, 0xF7, 0x52, 0x3B, 0x77, 0x98, 0xB2, 0x54,
-    0xE2, 0x75, 0xA3, 0xA8, 0xCC, 0x0A, 0x1B, 0xD0,
-    0x6E, 0xBC, 0x0B, 0xEE, 0x72, 0x68, 0x56, 0xAC,
-    0xC3, 0xCB, 0xF5, 0x16, 0xFF, 0x66, 0x7C, 0xDA,
-    0x20, 0x58, 0xAD, 0x5C, 0x34, 0x12, 0x25, 0x44,
-    0x60, 0xA8, 0x2C, 0x92, 0x18, 0x70, 0x41, 0x36,
-    0x3C, 0xC7, 0x7A, 0x4D, 0xC2, 0x15, 0xE4, 0x87
-  },
-  {
-    0xD0, 0xE7, 0xA1, 0xE2, 0xB9, 0xA4, 0x47, 0xFE,
-    0xE8, 0x3E, 0x22, 0x77, 0xE9, 0xFF, 0x80, 0x10,
-    0xC2, 0xF3, 0x75, 0xAE, 0x12, 0xFA, 0x7A, 0xAA,
-    0x8C, 0xA5, 0xA6, 0x31, 0x78, 0x68, 0xA2, 0x6A,
-    0x36, 0x7A, 0x0B, 0x69, 0xFB, 0xC1, 0xCF, 0x32,
-    0xA5, 0x5D, 0x34, 0xEB, 0x37, 0x06, 0x63, 0x01,
-    0x6F, 0x3D, 0x21, 0x10, 0x23, 0x0E, 0xBA, 0x75,
-    0x40, 0x28, 0xA5, 0x6F, 0x54, 0xAC, 0xF5, 0x7C
-  },
-  {
-    0xE7, 0x71, 0xAA, 0x8D, 0xB5, 0xA3, 0xE0, 0x43,
-    0xE8, 0x17, 0x8F, 0x39, 0xA0, 0x85, 0x7B, 0xA0,
-    0x4A, 0x3F, 0x18, 0xE4, 0xAA, 0x05, 0x74, 0x3C,
-    0xF8, 0xD2, 0x22, 0xB0, 0xB0, 0x95, 0x82, 0x53,
-    0x50, 0xBA, 0x42, 0x2F, 0x63, 0x38, 0x2A, 0x23,
-    0xD9, 0x2E, 0x41, 0x49, 0x07, 0x4E, 0x81, 0x6A,
-    0x36, 0xC1, 0xCD, 0x28, 0x28, 0x4D, 0x14, 0x62,
-    0x67, 0x94, 0x0B, 0x31, 0xF8, 0x81, 0x8E, 0xA2
-  },
-  {
-    0xFE, 0xB4, 0xFD, 0x6F, 0x9E, 0x87, 0xA5, 0x6B,
-    0xEF, 0x39, 0x8B, 0x32, 0x84, 0xD2, 0xBD, 0xA5,
-    0xB5, 0xB0, 0xE1, 0x66, 0x58, 0x3A, 0x66, 0xB6,
-    0x1E, 0x53, 0x84, 0x57, 0xFF, 0x05, 0x84, 0x87,
-    0x2C, 0x21, 0xA3, 0x29, 0x62, 0xB9, 0x92, 0x8F,
-    0xFA, 0xB5, 0x8D, 0xE4, 0xAF, 0x2E, 0xDD, 0x4E,
-    0x15, 0xD8, 0xB3, 0x55, 0x70, 0x52, 0x32, 0x07,
-    0xFF, 0x4E, 0x2A, 0x5A, 0xA7, 0x75, 0x4C, 0xAA
-  },
-  {
-    0x46, 0x2F, 0x17, 0xBF, 0x00, 0x5F, 0xB1, 0xC1,
-    0xB9, 0xE6, 0x71, 0x77, 0x9F, 0x66, 0x52, 0x09,
-    0xEC, 0x28, 0x73, 0xE3, 0xE4, 0x11, 0xF9, 0x8D,
-    0xAB, 0xF2, 0x40, 0xA1, 0xD5, 0xEC, 0x3F, 0x95,
-    0xCE, 0x67, 0x96, 0xB6, 0xFC, 0x23, 0xFE, 0x17,
-    0x19, 0x03, 0xB5, 0x02, 0x02, 0x34, 0x67, 0xDE,
-    0xC7, 0x27, 0x3F, 0xF7, 0x48, 0x79, 0xB9, 0x29,
-    0x67, 0xA2, 0xA4, 0x3A, 0x5A, 0x18, 0x3D, 0x33
-  },
-  {
-    0xD3, 0x33, 0x81, 0x93, 0xB6, 0x45, 0x53, 0xDB,
-    0xD3, 0x8D, 0x14, 0x4B, 0xEA, 0x71, 0xC5, 0x91,
-    0x5B, 0xB1, 0x10, 0xE2, 0xD8, 0x81, 0x80, 0xDB,
-    0xC5, 0xDB, 0x36, 0x4F, 0xD6, 0x17, 0x1D, 0xF3,
-    0x17, 0xFC, 0x72, 0x68, 0x83, 0x1B, 0x5A, 0xEF,
-    0x75, 0xE4, 0x34, 0x2B, 0x2F, 0xAD, 0x87, 0x97,
-    0xBA, 0x39, 0xED, 0xDC, 0xEF, 0x80, 0xE6, 0xEC,
-    0x08, 0x15, 0x93, 0x50, 0xB1, 0xAD, 0x69, 0x6D
-  },
-  {
-    0xE1, 0x59, 0x0D, 0x58, 0x5A, 0x3D, 0x39, 0xF7,
-    0xCB, 0x59, 0x9A, 0xBD, 0x47, 0x90, 0x70, 0x96,
-    0x64, 0x09, 0xA6, 0x84, 0x6D, 0x43, 0x77, 0xAC,
-    0xF4, 0x47, 0x1D, 0x06, 0x5D, 0x5D, 0xB9, 0x41,
-    0x29, 0xCC, 0x9B, 0xE9, 0x25, 0x73, 0xB0, 0x5E,
-    0xD2, 0x26, 0xBE, 0x1E, 0x9B, 0x7C, 0xB0, 0xCA,
-    0xBE, 0x87, 0x91, 0x85, 0x89, 0xF8, 0x0D, 0xAD,
-    0xD4, 0xEF, 0x5E, 0xF2, 0x5A, 0x93, 0xD2, 0x8E
-  },
-  {
-    0xF8, 0xF3, 0x72, 0x6A, 0xC5, 0xA2, 0x6C, 0xC8,
-    0x01, 0x32, 0x49, 0x3A, 0x6F, 0xED, 0xCB, 0x0E,
-    0x60, 0x76, 0x0C, 0x09, 0xCF, 0xC8, 0x4C, 0xAD,
-    0x17, 0x81, 0x75, 0x98, 0x68, 0x19, 0x66, 0x5E,
-    0x76, 0x84, 0x2D, 0x7B, 0x9F, 0xED, 0xF7, 0x6D,
-    0xDD, 0xEB, 0xF5, 0xD3, 0xF5, 0x6F, 0xAA, 0xAD,
-    0x44, 0x77, 0x58, 0x7A, 0xF2, 0x16, 0x06, 0xD3,
-    0x96, 0xAE, 0x57, 0x0D, 0x8E, 0x71, 0x9A, 0xF2
-  },
-  {
-    0x30, 0x18, 0x60, 0x55, 0xC0, 0x79, 0x49, 0x94,
-    0x81, 0x83, 0xC8, 0x50, 0xE9, 0xA7, 0x56, 0xCC,
-    0x09, 0x93, 0x7E, 0x24, 0x7D, 0x9D, 0x92, 0x8E,
-    0x86, 0x9E, 0x20, 0xBA, 0xFC, 0x3C, 0xD9, 0x72,
-    0x17, 0x19, 0xD3, 0x4E, 0x04, 0xA0, 0x89, 0x9B,
-    0x92, 0xC7, 0x36, 0x08, 0x45, 0x50, 0x18, 0x68,
-    0x86, 0xEF, 0xBA, 0x2E, 0x79, 0x0D, 0x8B, 0xE6,
-    0xEB, 0xF0, 0x40, 0xB2, 0x09, 0xC4, 0x39, 0xA4
-  },
-  {
-    0xF3, 0xC4, 0x27, 0x6C, 0xB8, 0x63, 0x63, 0x77,
-    0x12, 0xC2, 0x41, 0xC4, 0x44, 0xC5, 0xCC, 0x1E,
-    0x35, 0x54, 0xE0, 0xFD, 0xDB, 0x17, 0x4D, 0x03,
-    0x58, 0x19, 0xDD, 0x83, 0xEB, 0x70, 0x0B, 0x4C,
-    0xE8, 0x8D, 0xF3, 0xAB, 0x38, 0x41, 0xBA, 0x02,
-    0x08, 0x5E, 0x1A, 0x99, 0xB4, 0xE1, 0x73, 0x10,
-    0xC5, 0x34, 0x10, 0x75, 0xC0, 0x45, 0x8B, 0xA3,
-    0x76, 0xC9, 0x5A, 0x68, 0x18, 0xFB, 0xB3, 0xE2
-  },
-  {
-    0x0A, 0xA0, 0x07, 0xC4, 0xDD, 0x9D, 0x58, 0x32,
-    0x39, 0x30, 0x40, 0xA1, 0x58, 0x3C, 0x93, 0x0B,
-    0xCA, 0x7D, 0xC5, 0xE7, 0x7E, 0xA5, 0x3A, 0xDD,
-    0x7E, 0x2B, 0x3F, 0x7C, 0x8E, 0x23, 0x13, 0x68,
-    0x04, 0x35, 0x20, 0xD4, 0xA3, 0xEF, 0x53, 0xC9,
-    0x69, 0xB6, 0xBB, 0xFD, 0x02, 0x59, 0x46, 0xF6,
-    0x32, 0xBD, 0x7F, 0x76, 0x5D, 0x53, 0xC2, 0x10,
-    0x03, 0xB8, 0xF9, 0x83, 0xF7, 0x5E, 0x2A, 0x6A
-  },
-  {
-    0x08, 0xE9, 0x46, 0x47, 0x20, 0x53, 0x3B, 0x23,
-    0xA0, 0x4E, 0xC2, 0x4F, 0x7A, 0xE8, 0xC1, 0x03,
-    0x14, 0x5F, 0x76, 0x53, 0x87, 0xD7, 0x38, 0x77,
-    0x7D, 0x3D, 0x34, 0x34, 0x77, 0xFD, 0x1C, 0x58,
-    0xDB, 0x05, 0x21, 0x42, 0xCA, 0xB7, 0x54, 0xEA,
-    0x67, 0x43, 0x78, 0xE1, 0x87, 0x66, 0xC5, 0x35,
-    0x42, 0xF7, 0x19, 0x70, 0x17, 0x1C, 0xC4, 0xF8,
-    0x16, 0x94, 0x24, 0x6B, 0x71, 0x7D, 0x75, 0x64
-  },
-  {
-    0xD3, 0x7F, 0xF7, 0xAD, 0x29, 0x79, 0x93, 0xE7,
-    0xEC, 0x21, 0xE0, 0xF1, 0xB4, 0xB5, 0xAE, 0x71,
-    0x9C, 0xDC, 0x83, 0xC5, 0xDB, 0x68, 0x75, 0x27,
-    0xF2, 0x75, 0x16, 0xCB, 0xFF, 0xA8, 0x22, 0x88,
-    0x8A, 0x68, 0x10, 0xEE, 0x5C, 0x1C, 0xA7, 0xBF,
-    0xE3, 0x32, 0x11, 0x19, 0xBE, 0x1A, 0xB7, 0xBF,
-    0xA0, 0xA5, 0x02, 0x67, 0x1C, 0x83, 0x29, 0x49,
-    0x4D, 0xF7, 0xAD, 0x6F, 0x52, 0x2D, 0x44, 0x0F
-  },
-  {
-    0xDD, 0x90, 0x42, 0xF6, 0xE4, 0x64, 0xDC, 0xF8,
-    0x6B, 0x12, 0x62, 0xF6, 0xAC, 0xCF, 0xAF, 0xBD,
-    0x8C, 0xFD, 0x90, 0x2E, 0xD3, 0xED, 0x89, 0xAB,
-    0xF7, 0x8F, 0xFA, 0x48, 0x2D, 0xBD, 0xEE, 0xB6,
-    0x96, 0x98, 0x42, 0x39, 0x4C, 0x9A, 0x11, 0x68,
-    0xAE, 0x3D, 0x48, 0x1A, 0x01, 0x78, 0x42, 0xF6,
-    0x60, 0x00, 0x2D, 0x42, 0x44, 0x7C, 0x6B, 0x22,
-    0xF7, 0xB7, 0x2F, 0x21, 0xAA, 0xE0, 0x21, 0xC9
-  },
-  {
-    0xBD, 0x96, 0x5B, 0xF3, 0x1E, 0x87, 0xD7, 0x03,
-    0x27, 0x53, 0x6F, 0x2A, 0x34, 0x1C, 0xEB, 0xC4,
-    0x76, 0x8E, 0xCA, 0x27, 0x5F, 0xA0, 0x5E, 0xF9,
-    0x8F, 0x7F, 0x1B, 0x71, 0xA0, 0x35, 0x12, 0x98,
-    0xDE, 0x00, 0x6F, 0xBA, 0x73, 0xFE, 0x67, 0x33,
-    0xED, 0x01, 0xD7, 0x58, 0x01, 0xB4, 0xA9, 0x28,
-    0xE5, 0x42, 0x31, 0xB3, 0x8E, 0x38, 0xC5, 0x62,
-    0xB2, 0xE3, 0x3E, 0xA1, 0x28, 0x49, 0x92, 0xFA
-  },
-  {
-    0x65, 0x67, 0x6D, 0x80, 0x06, 0x17, 0x97, 0x2F,
-    0xBD, 0x87, 0xE4, 0xB9, 0x51, 0x4E, 0x1C, 0x67,
-    0x40, 0x2B, 0x7A, 0x33, 0x10, 0x96, 0xD3, 0xBF,
-    0xAC, 0x22, 0xF1, 0xAB, 0xB9, 0x53, 0x74, 0xAB,
-    0xC9, 0x42, 0xF1, 0x6E, 0x9A, 0xB0, 0xEA, 0xD3,
-    0x3B, 0x87, 0xC9, 0x19, 0x68, 0xA6, 0xE5, 0x09,
-    0xE1, 0x19, 0xFF, 0x07, 0x78, 0x7B, 0x3E, 0xF4,
-    0x83, 0xE1, 0xDC, 0xDC, 0xCF, 0x6E, 0x30, 0x22
-  },
-  {
-    0x93, 0x9F, 0xA1, 0x89, 0x69, 0x9C, 0x5D, 0x2C,
-    0x81, 0xDD, 0xD1, 0xFF, 0xC1, 0xFA, 0x20, 0x7C,
-    0x97, 0x0B, 0x6A, 0x36, 0x85, 0xBB, 0x29, 0xCE,
-    0x1D, 0x3E, 0x99, 0xD4, 0x2F, 0x2F, 0x74, 0x42,
-    0xDA, 0x53, 0xE9, 0x5A, 0x72, 0x90, 0x73, 0x14,
-    0xF4, 0x58, 0x83, 0x99, 0xA3, 0xFF, 0x5B, 0x0A,
-    0x92, 0xBE, 0xB3, 0xF6, 0xBE, 0x26, 0x94, 0xF9,
-    0xF8, 0x6E, 0xCF, 0x29, 0x52, 0xD5, 0xB4, 0x1C
-  },
-  {
-    0xC5, 0x16, 0x54, 0x17, 0x01, 0x86, 0x3F, 0x91,
-    0x00, 0x5F, 0x31, 0x41, 0x08, 0xCE, 0xEC, 0xE3,
-    0xC6, 0x43, 0xE0, 0x4F, 0xC8, 0xC4, 0x2F, 0xD2,
-    0xFF, 0x55, 0x62, 0x20, 0xE6, 0x16, 0xAA, 0xA6,
-    0xA4, 0x8A, 0xEB, 0x97, 0xA8, 0x4B, 0xAD, 0x74,
-    0x78, 0x2E, 0x8D, 0xFF, 0x96, 0xA1, 0xA2, 0xFA,
-    0x94, 0x93, 0x39, 0xD7, 0x22, 0xED, 0xCA, 0xA3,
-    0x2B, 0x57, 0x06, 0x70, 0x41, 0xDF, 0x88, 0xCC
-  },
-  {
-    0x98, 0x7F, 0xD6, 0xE0, 0xD6, 0x85, 0x7C, 0x55,
-    0x3E, 0xAE, 0xBB, 0x3D, 0x34, 0x97, 0x0A, 0x2C,
-    0x2F, 0x6E, 0x89, 0xA3, 0x54, 0x8F, 0x49, 0x25,
-    0x21, 0x72, 0x2B, 0x80, 0xA1, 0xC2, 0x1A, 0x15,
-    0x38, 0x92, 0x34, 0x6D, 0x2C, 0xBA, 0x64, 0x44,
-    0x21, 0x2D, 0x56, 0xDA, 0x9A, 0x26, 0xE3, 0x24,
-    0xDC, 0xCB, 0xC0, 0xDC, 0xDE, 0x85, 0xD4, 0xD2,
-    0xEE, 0x43, 0x99, 0xEE, 0xC5, 0xA6, 0x4E, 0x8F
-  },
-  {
-    0xAE, 0x56, 0xDE, 0xB1, 0xC2, 0x32, 0x8D, 0x9C,
-    0x40, 0x17, 0x70, 0x6B, 0xCE, 0x6E, 0x99, 0xD4,
-    0x13, 0x49, 0x05, 0x3B, 0xA9, 0xD3, 0x36, 0xD6,
-    0x77, 0xC4, 0xC2, 0x7D, 0x9F, 0xD5, 0x0A, 0xE6,
-    0xAE, 0xE1, 0x7E, 0x85, 0x31, 0x54, 0xE1, 0xF4,
-    0xFE, 0x76, 0x72, 0x34, 0x6D, 0xA2, 0xEA, 0xA3,
-    0x1E, 0xEA, 0x53, 0xFC, 0xF2, 0x4A, 0x22, 0x80,
-    0x4F, 0x11, 0xD0, 0x3D, 0xA6, 0xAB, 0xFC, 0x2B
-  },
-  {
-    0x49, 0xD6, 0xA6, 0x08, 0xC9, 0xBD, 0xE4, 0x49,
-    0x18, 0x70, 0x49, 0x85, 0x72, 0xAC, 0x31, 0xAA,
-    0xC3, 0xFA, 0x40, 0x93, 0x8B, 0x38, 0xA7, 0x81,
-    0x8F, 0x72, 0x38, 0x3E, 0xB0, 0x40, 0xAD, 0x39,
-    0x53, 0x2B, 0xC0, 0x65, 0x71, 0xE1, 0x3D, 0x76,
-    0x7E, 0x69, 0x45, 0xAB, 0x77, 0xC0, 0xBD, 0xC3,
-    0xB0, 0x28, 0x42, 0x53, 0x34, 0x3F, 0x9F, 0x6C,
-    0x12, 0x44, 0xEB, 0xF2, 0xFF, 0x0D, 0xF8, 0x66
-  },
-  {
-    0xDA, 0x58, 0x2A, 0xD8, 0xC5, 0x37, 0x0B, 0x44,
-    0x69, 0xAF, 0x86, 0x2A, 0xA6, 0x46, 0x7A, 0x22,
-    0x93, 0xB2, 0xB2, 0x8B, 0xD8, 0x0A, 0xE0, 0xE9,
-    0x1F, 0x42, 0x5A, 0xD3, 0xD4, 0x72, 0x49, 0xFD,
-    0xF9, 0x88, 0x25, 0xCC, 0x86, 0xF1, 0x40, 0x28,
-    0xC3, 0x30, 0x8C, 0x98, 0x04, 0xC7, 0x8B, 0xFE,
-    0xEE, 0xEE, 0x46, 0x14, 0x44, 0xCE, 0x24, 0x36,
-    0x87, 0xE1, 0xA5, 0x05, 0x22, 0x45, 0x6A, 0x1D
-  },
-  {
-    0xD5, 0x26, 0x6A, 0xA3, 0x33, 0x11, 0x94, 0xAE,
-    0xF8, 0x52, 0xEE, 0xD8, 0x6D, 0x7B, 0x5B, 0x26,
-    0x33, 0xA0, 0xAF, 0x1C, 0x73, 0x59, 0x06, 0xF2,
-    0xE1, 0x32, 0x79, 0xF1, 0x49, 0x31, 0xA9, 0xFC,
-    0x3B, 0x0E, 0xAC, 0x5C, 0xE9, 0x24, 0x52, 0x73,
-    0xBD, 0x1A, 0xA9, 0x29, 0x05, 0xAB, 0xE1, 0x62,
-    0x78, 0xEF, 0x7E, 0xFD, 0x47, 0x69, 0x47, 0x89,
-    0xA7, 0x28, 0x3B, 0x77, 0xDA, 0x3C, 0x70, 0xF8
-  },
-  {
-    0x29, 0x62, 0x73, 0x4C, 0x28, 0x25, 0x21, 0x86,
-    0xA9, 0xA1, 0x11, 0x1C, 0x73, 0x2A, 0xD4, 0xDE,
-    0x45, 0x06, 0xD4, 0xB4, 0x48, 0x09, 0x16, 0x30,
-    0x3E, 0xB7, 0x99, 0x1D, 0x65, 0x9C, 0xCD, 0xA0,
-    0x7A, 0x99, 0x11, 0x91, 0x4B, 0xC7, 0x5C, 0x41,
-    0x8A, 0xB7, 0xA4, 0x54, 0x17, 0x57, 0xAD, 0x05,
-    0x47, 0x96, 0xE2, 0x67, 0x97, 0xFE, 0xAF, 0x36,
-    0xE9, 0xF6, 0xAD, 0x43, 0xF1, 0x4B, 0x35, 0xA4
-  },
-  {
-    0xE8, 0xB7, 0x9E, 0xC5, 0xD0, 0x6E, 0x11, 0x1B,
-    0xDF, 0xAF, 0xD7, 0x1E, 0x9F, 0x57, 0x60, 0xF0,
-    0x0A, 0xC8, 0xAC, 0x5D, 0x8B, 0xF7, 0x68, 0xF9,
-    0xFF, 0x6F, 0x08, 0xB8, 0xF0, 0x26, 0x09, 0x6B,
-    0x1C, 0xC3, 0xA4, 0xC9, 0x73, 0x33, 0x30, 0x19,
-    0xF1, 0xE3, 0x55, 0x3E, 0x77, 0xDA, 0x3F, 0x98,
-    0xCB, 0x9F, 0x54, 0x2E, 0x0A, 0x90, 0xE5, 0xF8,
-    0xA9, 0x40, 0xCC, 0x58, 0xE5, 0x98, 0x44, 0xB3
-  },
-  {
-    0xDF, 0xB3, 0x20, 0xC4, 0x4F, 0x9D, 0x41, 0xD1,
-    0xEF, 0xDC, 0xC0, 0x15, 0xF0, 0x8D, 0xD5, 0x53,
-    0x9E, 0x52, 0x6E, 0x39, 0xC8, 0x7D, 0x50, 0x9A,
-    0xE6, 0x81, 0x2A, 0x96, 0x9E, 0x54, 0x31, 0xBF,
-    0x4F, 0xA7, 0xD9, 0x1F, 0xFD, 0x03, 0xB9, 0x81,
-    0xE0, 0xD5, 0x44, 0xCF, 0x72, 0xD7, 0xB1, 0xC0,
-    0x37, 0x4F, 0x88, 0x01, 0x48, 0x2E, 0x6D, 0xEA,
-    0x2E, 0xF9, 0x03, 0x87, 0x7E, 0xBA, 0x67, 0x5E
-  },
-  {
-    0xD8, 0x86, 0x75, 0x11, 0x8F, 0xDB, 0x55, 0xA5,
-    0xFB, 0x36, 0x5A, 0xC2, 0xAF, 0x1D, 0x21, 0x7B,
-    0xF5, 0x26, 0xCE, 0x1E, 0xE9, 0xC9, 0x4B, 0x2F,
-    0x00, 0x90, 0xB2, 0xC5, 0x8A, 0x06, 0xCA, 0x58,
-    0x18, 0x7D, 0x7F, 0xE5, 0x7C, 0x7B, 0xED, 0x9D,
-    0x26, 0xFC, 0xA0, 0x67, 0xB4, 0x11, 0x0E, 0xEF,
-    0xCD, 0x9A, 0x0A, 0x34, 0x5D, 0xE8, 0x72, 0xAB,
-    0xE2, 0x0D, 0xE3, 0x68, 0x00, 0x1B, 0x07, 0x45
-  },
-  {
-    0xB8, 0x93, 0xF2, 0xFC, 0x41, 0xF7, 0xB0, 0xDD,
-    0x6E, 0x2F, 0x6A, 0xA2, 0xE0, 0x37, 0x0C, 0x0C,
-    0xFF, 0x7D, 0xF0, 0x9E, 0x3A, 0xCF, 0xCC, 0x0E,
-    0x92, 0x0B, 0x6E, 0x6F, 0xAD, 0x0E, 0xF7, 0x47,
-    0xC4, 0x06, 0x68, 0x41, 0x7D, 0x34, 0x2B, 0x80,
-    0xD2, 0x35, 0x1E, 0x8C, 0x17, 0x5F, 0x20, 0x89,
-    0x7A, 0x06, 0x2E, 0x97, 0x65, 0xE6, 0xC6, 0x7B,
-    0x53, 0x9B, 0x6B, 0xA8, 0xB9, 0x17, 0x05, 0x45
-  },
-  {
-    0x6C, 0x67, 0xEC, 0x56, 0x97, 0xAC, 0xCD, 0x23,
-    0x5C, 0x59, 0xB4, 0x86, 0xD7, 0xB7, 0x0B, 0xAE,
-    0xED, 0xCB, 0xD4, 0xAA, 0x64, 0xEB, 0xD4, 0xEE,
-    0xF3, 0xC7, 0xEA, 0xC1, 0x89, 0x56, 0x1A, 0x72,
-    0x62, 0x50, 0xAE, 0xC4, 0xD4, 0x8C, 0xAD, 0xCA,
-    0xFB, 0xBE, 0x2C, 0xE3, 0xC1, 0x6C, 0xE2, 0xD6,
-    0x91, 0xA8, 0xCC, 0xE0, 0x6E, 0x88, 0x79, 0x55,
-    0x6D, 0x44, 0x83, 0xED, 0x71, 0x65, 0xC0, 0x63
-  },
-  {
-    0xF1, 0xAA, 0x2B, 0x04, 0x4F, 0x8F, 0x0C, 0x63,
-    0x8A, 0x3F, 0x36, 0x2E, 0x67, 0x7B, 0x5D, 0x89,
-    0x1D, 0x6F, 0xD2, 0xAB, 0x07, 0x65, 0xF6, 0xEE,
-    0x1E, 0x49, 0x87, 0xDE, 0x05, 0x7E, 0xAD, 0x35,
-    0x78, 0x83, 0xD9, 0xB4, 0x05, 0xB9, 0xD6, 0x09,
-    0xEE, 0xA1, 0xB8, 0x69, 0xD9, 0x7F, 0xB1, 0x6D,
-    0x9B, 0x51, 0x01, 0x7C, 0x55, 0x3F, 0x3B, 0x93,
-    0xC0, 0xA1, 0xE0, 0xF1, 0x29, 0x6F, 0xED, 0xCD
-  },
-  {
-    0xCB, 0xAA, 0x25, 0x95, 0x72, 0xD4, 0xAE, 0xBF,
-    0xC1, 0x91, 0x7A, 0xCD, 0xDC, 0x58, 0x2B, 0x9F,
-    0x8D, 0xFA, 0xA9, 0x28, 0xA1, 0x98, 0xCA, 0x7A,
-    0xCD, 0x0F, 0x2A, 0xA7, 0x6A, 0x13, 0x4A, 0x90,
-    0x25, 0x2E, 0x62, 0x98, 0xA6, 0x5B, 0x08, 0x18,
-    0x6A, 0x35, 0x0D, 0x5B, 0x76, 0x26, 0x69, 0x9F,
-    0x8C, 0xB7, 0x21, 0xA3, 0xEA, 0x59, 0x21, 0xB7,
-    0x53, 0xAE, 0x3A, 0x2D, 0xCE, 0x24, 0xBA, 0x3A
-  },
-  {
-    0xFA, 0x15, 0x49, 0xC9, 0x79, 0x6C, 0xD4, 0xD3,
-    0x03, 0xDC, 0xF4, 0x52, 0xC1, 0xFB, 0xD5, 0x74,
-    0x4F, 0xD9, 0xB9, 0xB4, 0x70, 0x03, 0xD9, 0x20,
-    0xB9, 0x2D, 0xE3, 0x48, 0x39, 0xD0, 0x7E, 0xF2,
-    0xA2, 0x9D, 0xED, 0x68, 0xF6, 0xFC, 0x9E, 0x6C,
-    0x45, 0xE0, 0x71, 0xA2, 0xE4, 0x8B, 0xD5, 0x0C,
-    0x50, 0x84, 0xE9, 0x6B, 0x65, 0x7D, 0xD0, 0x40,
-    0x40, 0x45, 0xA1, 0xDD, 0xEF, 0xE2, 0x82, 0xED
-  },
-  {
-    0x5C, 0xF2, 0xAC, 0x89, 0x7A, 0xB4, 0x44, 0xDC,
-    0xB5, 0xC8, 0xD8, 0x7C, 0x49, 0x5D, 0xBD, 0xB3,
-    0x4E, 0x18, 0x38, 0xB6, 0xB6, 0x29, 0x42, 0x7C,
-    0xAA, 0x51, 0x70, 0x2A, 0xD0, 0xF9, 0x68, 0x85,
-    0x25, 0xF1, 0x3B, 0xEC, 0x50, 0x3A, 0x3C, 0x3A,
-    0x2C, 0x80, 0xA6, 0x5E, 0x0B, 0x57, 0x15, 0xE8,
-    0xAF, 0xAB, 0x00, 0xFF, 0xA5, 0x6E, 0xC4, 0x55,
-    0xA4, 0x9A, 0x1A, 0xD3, 0x0A, 0xA2, 0x4F, 0xCD
-  },
-  {
-    0x9A, 0xAF, 0x80, 0x20, 0x7B, 0xAC, 0xE1, 0x7B,
-    0xB7, 0xAB, 0x14, 0x57, 0x57, 0xD5, 0x69, 0x6B,
-    0xDE, 0x32, 0x40, 0x6E, 0xF2, 0x2B, 0x44, 0x29,
-    0x2E, 0xF6, 0x5D, 0x45, 0x19, 0xC3, 0xBB, 0x2A,
-    0xD4, 0x1A, 0x59, 0xB6, 0x2C, 0xC3, 0xE9, 0x4B,
-    0x6F, 0xA9, 0x6D, 0x32, 0xA7, 0xFA, 0xAD, 0xAE,
-    0x28, 0xAF, 0x7D, 0x35, 0x09, 0x72, 0x19, 0xAA,
-    0x3F, 0xD8, 0xCD, 0xA3, 0x1E, 0x40, 0xC2, 0x75
-  },
-  {
-    0xAF, 0x88, 0xB1, 0x63, 0x40, 0x2C, 0x86, 0x74,
-    0x5C, 0xB6, 0x50, 0xC2, 0x98, 0x8F, 0xB9, 0x52,
-    0x11, 0xB9, 0x4B, 0x03, 0xEF, 0x29, 0x0E, 0xED,
-    0x96, 0x62, 0x03, 0x42, 0x41, 0xFD, 0x51, 0xCF,
-    0x39, 0x8F, 0x80, 0x73, 0xE3, 0x69, 0x35, 0x4C,
-    0x43, 0xEA, 0xE1, 0x05, 0x2F, 0x9B, 0x63, 0xB0,
-    0x81, 0x91, 0xCA, 0xA1, 0x38, 0xAA, 0x54, 0xFE,
-    0xA8, 0x89, 0xCC, 0x70, 0x24, 0x23, 0x68, 0x97
-  },
-  {
-    0x48, 0xFA, 0x7D, 0x64, 0xE1, 0xCE, 0xEE, 0x27,
-    0xB9, 0x86, 0x4D, 0xB5, 0xAD, 0xA4, 0xB5, 0x3D,
-    0x00, 0xC9, 0xBC, 0x76, 0x26, 0x55, 0x58, 0x13,
-    0xD3, 0xCD, 0x67, 0x30, 0xAB, 0x3C, 0xC0, 0x6F,
-    0xF3, 0x42, 0xD7, 0x27, 0x90, 0x5E, 0x33, 0x17,
-    0x1B, 0xDE, 0x6E, 0x84, 0x76, 0xE7, 0x7F, 0xB1,
-    0x72, 0x08, 0x61, 0xE9, 0x4B, 0x73, 0xA2, 0xC5,
-    0x38, 0xD2, 0x54, 0x74, 0x62, 0x85, 0xF4, 0x30
-  },
-  {
-    0x0E, 0x6F, 0xD9, 0x7A, 0x85, 0xE9, 0x04, 0xF8,
-    0x7B, 0xFE, 0x85, 0xBB, 0xEB, 0x34, 0xF6, 0x9E,
-    0x1F, 0x18, 0x10, 0x5C, 0xF4, 0xED, 0x4F, 0x87,
-    0xAE, 0xC3, 0x6C, 0x6E, 0x8B, 0x5F, 0x68, 0xBD,
-    0x2A, 0x6F, 0x3D, 0xC8, 0xA9, 0xEC, 0xB2, 0xB6,
-    0x1D, 0xB4, 0xEE, 0xDB, 0x6B, 0x2E, 0xA1, 0x0B,
-    0xF9, 0xCB, 0x02, 0x51, 0xFB, 0x0F, 0x8B, 0x34,
-    0x4A, 0xBF, 0x7F, 0x36, 0x6B, 0x6D, 0xE5, 0xAB
-  },
-  {
-    0x06, 0x62, 0x2D, 0xA5, 0x78, 0x71, 0x76, 0x28,
-    0x7F, 0xDC, 0x8F, 0xED, 0x44, 0x0B, 0xAD, 0x18,
-    0x7D, 0x83, 0x00, 0x99, 0xC9, 0x4E, 0x6D, 0x04,
-    0xC8, 0xE9, 0xC9, 0x54, 0xCD, 0xA7, 0x0C, 0x8B,
-    0xB9, 0xE1, 0xFC, 0x4A, 0x6D, 0x0B, 0xAA, 0x83,
-    0x1B, 0x9B, 0x78, 0xEF, 0x66, 0x48, 0x68, 0x1A,
-    0x48, 0x67, 0xA1, 0x1D, 0xA9, 0x3E, 0xE3, 0x6E,
-    0x5E, 0x6A, 0x37, 0xD8, 0x7F, 0xC6, 0x3F, 0x6F
-  },
-  {
-    0x1D, 0xA6, 0x77, 0x2B, 0x58, 0xFA, 0xBF, 0x9C,
-    0x61, 0xF6, 0x8D, 0x41, 0x2C, 0x82, 0xF1, 0x82,
-    0xC0, 0x23, 0x6D, 0x7D, 0x57, 0x5E, 0xF0, 0xB5,
-    0x8D, 0xD2, 0x24, 0x58, 0xD6, 0x43, 0xCD, 0x1D,
-    0xFC, 0x93, 0xB0, 0x38, 0x71, 0xC3, 0x16, 0xD8,
-    0x43, 0x0D, 0x31, 0x29, 0x95, 0xD4, 0x19, 0x7F,
-    0x08, 0x74, 0xC9, 0x91, 0x72, 0xBA, 0x00, 0x4A,
-    0x01, 0xEE, 0x29, 0x5A, 0xBA, 0xC2, 0x4E, 0x46
-  },
-  {
-    0x3C, 0xD2, 0xD9, 0x32, 0x0B, 0x7B, 0x1D, 0x5F,
-    0xB9, 0xAA, 0xB9, 0x51, 0xA7, 0x60, 0x23, 0xFA,
-    0x66, 0x7B, 0xE1, 0x4A, 0x91, 0x24, 0xE3, 0x94,
-    0x51, 0x39, 0x18, 0xA3, 0xF4, 0x40, 0x96, 0xAE,
-    0x49, 0x04, 0xBA, 0x0F, 0xFC, 0x15, 0x0B, 0x63,
-    0xBC, 0x7A, 0xB1, 0xEE, 0xB9, 0xA6, 0xE2, 0x57,
-    0xE5, 0xC8, 0xF0, 0x00, 0xA7, 0x03, 0x94, 0xA5,
-    0xAF, 0xD8, 0x42, 0x71, 0x5D, 0xE1, 0x5F, 0x29
-  },
-  {
-    0x04, 0xCD, 0xC1, 0x4F, 0x74, 0x34, 0xE0, 0xB4,
-    0xBE, 0x70, 0xCB, 0x41, 0xDB, 0x4C, 0x77, 0x9A,
-    0x88, 0xEA, 0xEF, 0x6A, 0xCC, 0xEB, 0xCB, 0x41,
-    0xF2, 0xD4, 0x2F, 0xFF, 0xE7, 0xF3, 0x2A, 0x8E,
-    0x28, 0x1B, 0x5C, 0x10, 0x3A, 0x27, 0x02, 0x1D,
-    0x0D, 0x08, 0x36, 0x22, 0x50, 0x75, 0x3C, 0xDF,
-    0x70, 0x29, 0x21, 0x95, 0xA5, 0x3A, 0x48, 0x72,
-    0x8C, 0xEB, 0x58, 0x44, 0xC2, 0xD9, 0x8B, 0xAB
-  },
-  {
-    0x90, 0x71, 0xB7, 0xA8, 0xA0, 0x75, 0xD0, 0x09,
-    0x5B, 0x8F, 0xB3, 0xAE, 0x51, 0x13, 0x78, 0x57,
-    0x35, 0xAB, 0x98, 0xE2, 0xB5, 0x2F, 0xAF, 0x91,
-    0xD5, 0xB8, 0x9E, 0x44, 0xAA, 0xC5, 0xB5, 0xD4,
-    0xEB, 0xBF, 0x91, 0x22, 0x3B, 0x0F, 0xF4, 0xC7,
-    0x19, 0x05, 0xDA, 0x55, 0x34, 0x2E, 0x64, 0x65,
-    0x5D, 0x6E, 0xF8, 0xC8, 0x9A, 0x47, 0x68, 0xC3,
-    0xF9, 0x3A, 0x6D, 0xC0, 0x36, 0x6B, 0x5B, 0xC8
-  },
-  {
-    0xEB, 0xB3, 0x02, 0x40, 0xDD, 0x96, 0xC7, 0xBC,
-    0x8D, 0x0A, 0xBE, 0x49, 0xAA, 0x4E, 0xDC, 0xBB,
-    0x4A, 0xFD, 0xC5, 0x1F, 0xF9, 0xAA, 0xF7, 0x20,
-    0xD3, 0xF9, 0xE7, 0xFB, 0xB0, 0xF9, 0xC6, 0xD6,
-    0x57, 0x13, 0x50, 0x50, 0x17, 0x69, 0xFC, 0x4E,
-    0xBD, 0x0B, 0x21, 0x41, 0x24, 0x7F, 0xF4, 0x00,
-    0xD4, 0xFD, 0x4B, 0xE4, 0x14, 0xED, 0xF3, 0x77,
-    0x57, 0xBB, 0x90, 0xA3, 0x2A, 0xC5, 0xC6, 0x5A
-  },
-  {
-    0x85, 0x32, 0xC5, 0x8B, 0xF3, 0xC8, 0x01, 0x5D,
-    0x9D, 0x1C, 0xBE, 0x00, 0xEE, 0xF1, 0xF5, 0x08,
-    0x2F, 0x8F, 0x36, 0x32, 0xFB, 0xE9, 0xF1, 0xED,
-    0x4F, 0x9D, 0xFB, 0x1F, 0xA7, 0x9E, 0x82, 0x83,
-    0x06, 0x6D, 0x77, 0xC4, 0x4C, 0x4A, 0xF9, 0x43,
-    0xD7, 0x6B, 0x30, 0x03, 0x64, 0xAE, 0xCB, 0xD0,
-    0x64, 0x8C, 0x8A, 0x89, 0x39, 0xBD, 0x20, 0x41,
-    0x23, 0xF4, 0xB5, 0x62, 0x60, 0x42, 0x2D, 0xEC
-  },
-  {
-    0xFE, 0x98, 0x46, 0xD6, 0x4F, 0x7C, 0x77, 0x08,
-    0x69, 0x6F, 0x84, 0x0E, 0x2D, 0x76, 0xCB, 0x44,
-    0x08, 0xB6, 0x59, 0x5C, 0x2F, 0x81, 0xEC, 0x6A,
-    0x28, 0xA7, 0xF2, 0xF2, 0x0C, 0xB8, 0x8C, 0xFE,
-    0x6A, 0xC0, 0xB9, 0xE9, 0xB8, 0x24, 0x4F, 0x08,
-    0xBD, 0x70, 0x95, 0xC3, 0x50, 0xC1, 0xD0, 0x84,
-    0x2F, 0x64, 0xFB, 0x01, 0xBB, 0x7F, 0x53, 0x2D,
-    0xFC, 0xD4, 0x73, 0x71, 0xB0, 0xAE, 0xEB, 0x79
-  },
-  {
-    0x28, 0xF1, 0x7E, 0xA6, 0xFB, 0x6C, 0x42, 0x09,
-    0x2D, 0xC2, 0x64, 0x25, 0x7E, 0x29, 0x74, 0x63,
-    0x21, 0xFB, 0x5B, 0xDA, 0xEA, 0x98, 0x73, 0xC2,
-    0xA7, 0xFA, 0x9D, 0x8F, 0x53, 0x81, 0x8E, 0x89,
-    0x9E, 0x16, 0x1B, 0xC7, 0x7D, 0xFE, 0x80, 0x90,
-    0xAF, 0xD8, 0x2B, 0xF2, 0x26, 0x6C, 0x5C, 0x1B,
-    0xC9, 0x30, 0xA8, 0xD1, 0x54, 0x76, 0x24, 0x43,
-    0x9E, 0x66, 0x2E, 0xF6, 0x95, 0xF2, 0x6F, 0x24
-  },
-  {
-    0xEC, 0x6B, 0x7D, 0x7F, 0x03, 0x0D, 0x48, 0x50,
-    0xAC, 0xAE, 0x3C, 0xB6, 0x15, 0xC2, 0x1D, 0xD2,
-    0x52, 0x06, 0xD6, 0x3E, 0x84, 0xD1, 0xDB, 0x8D,
-    0x95, 0x73, 0x70, 0x73, 0x7B, 0xA0, 0xE9, 0x84,
-    0x67, 0xEA, 0x0C, 0xE2, 0x74, 0xC6, 0x61, 0x99,
-    0x90, 0x1E, 0xAE, 0xC1, 0x8A, 0x08, 0x52, 0x57,
-    0x15, 0xF5, 0x3B, 0xFD, 0xB0, 0xAA, 0xCB, 0x61,
-    0x3D, 0x34, 0x2E, 0xBD, 0xCE, 0xED, 0xDC, 0x3B
-  },
-  {
-    0xB4, 0x03, 0xD3, 0x69, 0x1C, 0x03, 0xB0, 0xD3,
-    0x41, 0x8D, 0xF3, 0x27, 0xD5, 0x86, 0x0D, 0x34,
-    0xBB, 0xFC, 0xC4, 0x51, 0x9B, 0xFB, 0xCE, 0x36,
-    0xBF, 0x33, 0xB2, 0x08, 0x38, 0x5F, 0xAD, 0xB9,
-    0x18, 0x6B, 0xC7, 0x8A, 0x76, 0xC4, 0x89, 0xD8,
-    0x9F, 0xD5, 0x7E, 0x7D, 0xC7, 0x54, 0x12, 0xD2,
-    0x3B, 0xCD, 0x1D, 0xAE, 0x84, 0x70, 0xCE, 0x92,
-    0x74, 0x75, 0x4B, 0xB8, 0x58, 0x5B, 0x13, 0xC5
-  },
-  {
-    0x31, 0xFC, 0x79, 0x73, 0x8B, 0x87, 0x72, 0xB3,
-    0xF5, 0x5C, 0xD8, 0x17, 0x88, 0x13, 0xB3, 0xB5,
-    0x2D, 0x0D, 0xB5, 0xA4, 0x19, 0xD3, 0x0B, 0xA9,
-    0x49, 0x5C, 0x4B, 0x9D, 0xA0, 0x21, 0x9F, 0xAC,
-    0x6D, 0xF8, 0xE7, 0xC2, 0x3A, 0x81, 0x15, 0x51,
-    0xA6, 0x2B, 0x82, 0x7F, 0x25, 0x6E, 0xCD, 0xB8,
-    0x12, 0x4A, 0xC8, 0xA6, 0x79, 0x2C, 0xCF, 0xEC,
-    0xC3, 0xB3, 0x01, 0x27, 0x22, 0xE9, 0x44, 0x63
-  },
-  {
-    0xBB, 0x20, 0x39, 0xEC, 0x28, 0x70, 0x91, 0xBC,
-    0xC9, 0x64, 0x2F, 0xC9, 0x00, 0x49, 0xE7, 0x37,
-    0x32, 0xE0, 0x2E, 0x57, 0x7E, 0x28, 0x62, 0xB3,
-    0x22, 0x16, 0xAE, 0x9B, 0xED, 0xCD, 0x73, 0x0C,
-    0x4C, 0x28, 0x4E, 0xF3, 0x96, 0x8C, 0x36, 0x8B,
-    0x7D, 0x37, 0x58, 0x4F, 0x97, 0xBD, 0x4B, 0x4D,
-    0xC6, 0xEF, 0x61, 0x27, 0xAC, 0xFE, 0x2E, 0x6A,
-    0xE2, 0x50, 0x91, 0x24, 0xE6, 0x6C, 0x8A, 0xF4
-  },
-  {
-    0xF5, 0x3D, 0x68, 0xD1, 0x3F, 0x45, 0xED, 0xFC,
-    0xB9, 0xBD, 0x41, 0x5E, 0x28, 0x31, 0xE9, 0x38,
-    0x35, 0x0D, 0x53, 0x80, 0xD3, 0x43, 0x22, 0x78,
-    0xFC, 0x1C, 0x0C, 0x38, 0x1F, 0xCB, 0x7C, 0x65,
-    0xC8, 0x2D, 0xAF, 0xE0, 0x51, 0xD8, 0xC8, 0xB0,
-    0xD4, 0x4E, 0x09, 0x74, 0xA0, 0xE5, 0x9E, 0xC7,
-    0xBF, 0x7E, 0xD0, 0x45, 0x9F, 0x86, 0xE9, 0x6F,
-    0x32, 0x9F, 0xC7, 0x97, 0x52, 0x51, 0x0F, 0xD3
-  },
-  {
-    0x8D, 0x56, 0x8C, 0x79, 0x84, 0xF0, 0xEC, 0xDF,
-    0x76, 0x40, 0xFB, 0xC4, 0x83, 0xB5, 0xD8, 0xC9,
-    0xF8, 0x66, 0x34, 0xF6, 0xF4, 0x32, 0x91, 0x84,
-    0x1B, 0x30, 0x9A, 0x35, 0x0A, 0xB9, 0xC1, 0x13,
-    0x7D, 0x24, 0x06, 0x6B, 0x09, 0xDA, 0x99, 0x44,
-    0xBA, 0xC5, 0x4D, 0x5B, 0xB6, 0x58, 0x0D, 0x83,
-    0x60, 0x47, 0xAA, 0xC7, 0x4A, 0xB7, 0x24, 0xB8,
-    0x87, 0xEB, 0xF9, 0x3D, 0x4B, 0x32, 0xEC, 0xA9
-  },
-  {
-    0xC0, 0xB6, 0x5C, 0xE5, 0xA9, 0x6F, 0xF7, 0x74,
-    0xC4, 0x56, 0xCA, 0xC3, 0xB5, 0xF2, 0xC4, 0xCD,
-    0x35, 0x9B, 0x4F, 0xF5, 0x3E, 0xF9, 0x3A, 0x3D,
-    0xA0, 0x77, 0x8B, 0xE4, 0x90, 0x0D, 0x1E, 0x8D,
-    0xA1, 0x60, 0x1E, 0x76, 0x9E, 0x8F, 0x1B, 0x02,
-    0xD2, 0xA2, 0xF8, 0xC5, 0xB9, 0xFA, 0x10, 0xB4,
-    0x4F, 0x1C, 0x18, 0x69, 0x85, 0x46, 0x8F, 0xEE,
-    0xB0, 0x08, 0x73, 0x02, 0x83, 0xA6, 0x65, 0x7D
-  },
-  {
-    0x49, 0x00, 0xBB, 0xA6, 0xF5, 0xFB, 0x10, 0x3E,
-    0xCE, 0x8E, 0xC9, 0x6A, 0xDA, 0x13, 0xA5, 0xC3,
-    0xC8, 0x54, 0x88, 0xE0, 0x55, 0x51, 0xDA, 0x6B,
-    0x6B, 0x33, 0xD9, 0x88, 0xE6, 0x11, 0xEC, 0x0F,
-    0xE2, 0xE3, 0xC2, 0xAA, 0x48, 0xEA, 0x6A, 0xE8,
-    0x98, 0x6A, 0x3A, 0x23, 0x1B, 0x22, 0x3C, 0x5D,
-    0x27, 0xCE, 0xC2, 0xEA, 0xDD, 0xE9, 0x1C, 0xE0,
-    0x79, 0x81, 0xEE, 0x65, 0x28, 0x62, 0xD1, 0xE4
-  },
-  {
-    0xC7, 0xF5, 0xC3, 0x7C, 0x72, 0x85, 0xF9, 0x27,
-    0xF7, 0x64, 0x43, 0x41, 0x4D, 0x43, 0x57, 0xFF,
-    0x78, 0x96, 0x47, 0xD7, 0xA0, 0x05, 0xA5, 0xA7,
-    0x87, 0xE0, 0x3C, 0x34, 0x6B, 0x57, 0xF4, 0x9F,
-    0x21, 0xB6, 0x4F, 0xA9, 0xCF, 0x4B, 0x7E, 0x45,
-    0x57, 0x3E, 0x23, 0x04, 0x90, 0x17, 0x56, 0x71,
-    0x21, 0xA9, 0xC3, 0xD4, 0xB2, 0xB7, 0x3E, 0xC5,
-    0xE9, 0x41, 0x35, 0x77, 0x52, 0x5D, 0xB4, 0x5A
-  },
-  {
-    0xEC, 0x70, 0x96, 0x33, 0x07, 0x36, 0xFD, 0xB2,
-    0xD6, 0x4B, 0x56, 0x53, 0xE7, 0x47, 0x5D, 0xA7,
-    0x46, 0xC2, 0x3A, 0x46, 0x13, 0xA8, 0x26, 0x87,
-    0xA2, 0x80, 0x62, 0xD3, 0x23, 0x63, 0x64, 0x28,
-    0x4A, 0xC0, 0x17, 0x20, 0xFF, 0xB4, 0x06, 0xCF,
-    0xE2, 0x65, 0xC0, 0xDF, 0x62, 0x6A, 0x18, 0x8C,
-    0x9E, 0x59, 0x63, 0xAC, 0xE5, 0xD3, 0xD5, 0xBB,
-    0x36, 0x3E, 0x32, 0xC3, 0x8C, 0x21, 0x90, 0xA6
-  },
-  {
-    0x82, 0xE7, 0x44, 0xC7, 0x5F, 0x46, 0x49, 0xEC,
-    0x52, 0xB8, 0x07, 0x71, 0xA7, 0x7D, 0x47, 0x5A,
-    0x3B, 0xC0, 0x91, 0x98, 0x95, 0x56, 0x96, 0x0E,
-    0x27, 0x6A, 0x5F, 0x9E, 0xAD, 0x92, 0xA0, 0x3F,
-    0x71, 0x87, 0x42, 0xCD, 0xCF, 0xEA, 0xEE, 0x5C,
-    0xB8, 0x5C, 0x44, 0xAF, 0x19, 0x8A, 0xDC, 0x43,
-    0xA4, 0xA4, 0x28, 0xF5, 0xF0, 0xC2, 0xDD, 0xB0,
-    0xBE, 0x36, 0x05, 0x9F, 0x06, 0xD7, 0xDF, 0x73
-  },
-  {
-    0x28, 0x34, 0xB7, 0xA7, 0x17, 0x0F, 0x1F, 0x5B,
-    0x68, 0x55, 0x9A, 0xB7, 0x8C, 0x10, 0x50, 0xEC,
-    0x21, 0xC9, 0x19, 0x74, 0x0B, 0x78, 0x4A, 0x90,
-    0x72, 0xF6, 0xE5, 0xD6, 0x9F, 0x82, 0x8D, 0x70,
-    0xC9, 0x19, 0xC5, 0x03, 0x9F, 0xB1, 0x48, 0xE3,
-    0x9E, 0x2C, 0x8A, 0x52, 0x11, 0x83, 0x78, 0xB0,
-    0x64, 0xCA, 0x8D, 0x50, 0x01, 0xCD, 0x10, 0xA5,
-    0x47, 0x83, 0x87, 0xB9, 0x66, 0x71, 0x5E, 0xD6
-  },
-  {
-    0x16, 0xB4, 0xAD, 0xA8, 0x83, 0xF7, 0x2F, 0x85,
-    0x3B, 0xB7, 0xEF, 0x25, 0x3E, 0xFC, 0xAB, 0x0C,
-    0x3E, 0x21, 0x61, 0x68, 0x7A, 0xD6, 0x15, 0x43,
-    0xA0, 0xD2, 0x82, 0x4F, 0x91, 0xC1, 0xF8, 0x13,
-    0x47, 0xD8, 0x6B, 0xE7, 0x09, 0xB1, 0x69, 0x96,
-    0xE1, 0x7F, 0x2D, 0xD4, 0x86, 0x92, 0x7B, 0x02,
-    0x88, 0xAD, 0x38, 0xD1, 0x30, 0x63, 0xC4, 0xA9,
-    0x67, 0x2C, 0x39, 0x39, 0x7D, 0x37, 0x89, 0xB6
-  },
-  {
-    0x78, 0xD0, 0x48, 0xF3, 0xA6, 0x9D, 0x8B, 0x54,
-    0xAE, 0x0E, 0xD6, 0x3A, 0x57, 0x3A, 0xE3, 0x50,
-    0xD8, 0x9F, 0x7C, 0x6C, 0xF1, 0xF3, 0x68, 0x89,
-    0x30, 0xDE, 0x89, 0x9A, 0xFA, 0x03, 0x76, 0x97,
-    0x62, 0x9B, 0x31, 0x4E, 0x5C, 0xD3, 0x03, 0xAA,
-    0x62, 0xFE, 0xEA, 0x72, 0xA2, 0x5B, 0xF4, 0x2B,
-    0x30, 0x4B, 0x6C, 0x6B, 0xCB, 0x27, 0xFA, 0xE2,
-    0x1C, 0x16, 0xD9, 0x25, 0xE1, 0xFB, 0xDA, 0xC3
-  },
-  {
-    0x0F, 0x74, 0x6A, 0x48, 0x74, 0x92, 0x87, 0xAD,
-    0xA7, 0x7A, 0x82, 0x96, 0x1F, 0x05, 0xA4, 0xDA,
-    0x4A, 0xBD, 0xB7, 0xD7, 0x7B, 0x12, 0x20, 0xF8,
-    0x36, 0xD0, 0x9E, 0xC8, 0x14, 0x35, 0x9C, 0x0E,
-    0xC0, 0x23, 0x9B, 0x8C, 0x7B, 0x9F, 0xF9, 0xE0,
-    0x2F, 0x56, 0x9D, 0x1B, 0x30, 0x1E, 0xF6, 0x7C,
-    0x46, 0x12, 0xD1, 0xDE, 0x4F, 0x73, 0x0F, 0x81,
-    0xC1, 0x2C, 0x40, 0xCC, 0x06, 0x3C, 0x5C, 0xAA
-  },
-  {
-    0xF0, 0xFC, 0x85, 0x9D, 0x3B, 0xD1, 0x95, 0xFB,
-    0xDC, 0x2D, 0x59, 0x1E, 0x4C, 0xDA, 0xC1, 0x51,
-    0x79, 0xEC, 0x0F, 0x1D, 0xC8, 0x21, 0xC1, 0x1D,
-    0xF1, 0xF0, 0xC1, 0xD2, 0x6E, 0x62, 0x60, 0xAA,
-    0xA6, 0x5B, 0x79, 0xFA, 0xFA, 0xCA, 0xFD, 0x7D,
-    0x3A, 0xD6, 0x1E, 0x60, 0x0F, 0x25, 0x09, 0x05,
-    0xF5, 0x87, 0x8C, 0x87, 0x45, 0x28, 0x97, 0x64,
-    0x7A, 0x35, 0xB9, 0x95, 0xBC, 0xAD, 0xC3, 0xA3
-  },
-  {
-    0x26, 0x20, 0xF6, 0x87, 0xE8, 0x62, 0x5F, 0x6A,
-    0x41, 0x24, 0x60, 0xB4, 0x2E, 0x2C, 0xEF, 0x67,
-    0x63, 0x42, 0x08, 0xCE, 0x10, 0xA0, 0xCB, 0xD4,
-    0xDF, 0xF7, 0x04, 0x4A, 0x41, 0xB7, 0x88, 0x00,
-    0x77, 0xE9, 0xF8, 0xDC, 0x3B, 0x8D, 0x12, 0x16,
-    0xD3, 0x37, 0x6A, 0x21, 0xE0, 0x15, 0xB5, 0x8F,
-    0xB2, 0x79, 0xB5, 0x21, 0xD8, 0x3F, 0x93, 0x88,
-    0xC7, 0x38, 0x2C, 0x85, 0x05, 0x59, 0x0B, 0x9B
-  },
-  {
-    0x22, 0x7E, 0x3A, 0xED, 0x8D, 0x2C, 0xB1, 0x0B,
-    0x91, 0x8F, 0xCB, 0x04, 0xF9, 0xDE, 0x3E, 0x6D,
-    0x0A, 0x57, 0xE0, 0x84, 0x76, 0xD9, 0x37, 0x59,
-    0xCD, 0x7B, 0x2E, 0xD5, 0x4A, 0x1C, 0xBF, 0x02,
-    0x39, 0xC5, 0x28, 0xFB, 0x04, 0xBB, 0xF2, 0x88,
-    0x25, 0x3E, 0x60, 0x1D, 0x3B, 0xC3, 0x8B, 0x21,
-    0x79, 0x4A, 0xFE, 0xF9, 0x0B, 0x17, 0x09, 0x4A,
-    0x18, 0x2C, 0xAC, 0x55, 0x77, 0x45, 0xE7, 0x5F
-  },
-  {
-    0x1A, 0x92, 0x99, 0x01, 0xB0, 0x9C, 0x25, 0xF2,
-    0x7D, 0x6B, 0x35, 0xBE, 0x7B, 0x2F, 0x1C, 0x47,
-    0x45, 0x13, 0x1F, 0xDE, 0xBC, 0xA7, 0xF3, 0xE2,
-    0x45, 0x19, 0x26, 0x72, 0x04, 0x34, 0xE0, 0xDB,
-    0x6E, 0x74, 0xFD, 0x69, 0x3A, 0xD2, 0x9B, 0x77,
-    0x7D, 0xC3, 0x35, 0x5C, 0x59, 0x2A, 0x36, 0x1C,
-    0x48, 0x73, 0xB0, 0x11, 0x33, 0xA5, 0x7C, 0x2E,
-    0x3B, 0x70, 0x75, 0xCB, 0xDB, 0x86, 0xF4, 0xFC
-  },
-  {
-    0x5F, 0xD7, 0x96, 0x8B, 0xC2, 0xFE, 0x34, 0xF2,
-    0x20, 0xB5, 0xE3, 0xDC, 0x5A, 0xF9, 0x57, 0x17,
-    0x42, 0xD7, 0x3B, 0x7D, 0x60, 0x81, 0x9F, 0x28,
-    0x88, 0xB6, 0x29, 0x07, 0x2B, 0x96, 0xA9, 0xD8,
-    0xAB, 0x2D, 0x91, 0xB8, 0x2D, 0x0A, 0x9A, 0xAB,
-    0xA6, 0x1B, 0xBD, 0x39, 0x95, 0x81, 0x32, 0xFC,
-    0xC4, 0x25, 0x70, 0x23, 0xD1, 0xEC, 0xA5, 0x91,
-    0xB3, 0x05, 0x4E, 0x2D, 0xC8, 0x1C, 0x82, 0x00
-  },
-  {
-    0xDF, 0xCC, 0xE8, 0xCF, 0x32, 0x87, 0x0C, 0xC6,
-    0xA5, 0x03, 0xEA, 0xDA, 0xFC, 0x87, 0xFD, 0x6F,
-    0x78, 0x91, 0x8B, 0x9B, 0x4D, 0x07, 0x37, 0xDB,
-    0x68, 0x10, 0xBE, 0x99, 0x6B, 0x54, 0x97, 0xE7,
-    0xE5, 0xCC, 0x80, 0xE3, 0x12, 0xF6, 0x1E, 0x71,
-    0xFF, 0x3E, 0x96, 0x24, 0x43, 0x60, 0x73, 0x15,
-    0x64, 0x03, 0xF7, 0x35, 0xF5, 0x6B, 0x0B, 0x01,
-    0x84, 0x5C, 0x18, 0xF6, 0xCA, 0xF7, 0x72, 0xE6
-  },
-  {
-    0x02, 0xF7, 0xEF, 0x3A, 0x9C, 0xE0, 0xFF, 0xF9,
-    0x60, 0xF6, 0x70, 0x32, 0xB2, 0x96, 0xEF, 0xCA,
-    0x30, 0x61, 0xF4, 0x93, 0x4D, 0x69, 0x07, 0x49,
-    0xF2, 0xD0, 0x1C, 0x35, 0xC8, 0x1C, 0x14, 0xF3,
-    0x9A, 0x67, 0xFA, 0x35, 0x0B, 0xC8, 0xA0, 0x35,
-    0x9B, 0xF1, 0x72, 0x4B, 0xFF, 0xC3, 0xBC, 0xA6,
-    0xD7, 0xC7, 0xBB, 0xA4, 0x79, 0x1F, 0xD5, 0x22,
-    0xA3, 0xAD, 0x35, 0x3C, 0x02, 0xEC, 0x5A, 0xA8
-  },
-  {
-    0x64, 0xBE, 0x5C, 0x6A, 0xBA, 0x65, 0xD5, 0x94,
-    0x84, 0x4A, 0xE7, 0x8B, 0xB0, 0x22, 0xE5, 0xBE,
-    0xBE, 0x12, 0x7F, 0xD6, 0xB6, 0xFF, 0xA5, 0xA1,
-    0x37, 0x03, 0x85, 0x5A, 0xB6, 0x3B, 0x62, 0x4D,
-    0xCD, 0x1A, 0x36, 0x3F, 0x99, 0x20, 0x3F, 0x63,
-    0x2E, 0xC3, 0x86, 0xF3, 0xEA, 0x76, 0x7F, 0xC9,
-    0x92, 0xE8, 0xED, 0x96, 0x86, 0x58, 0x6A, 0xA2,
-    0x75, 0x55, 0xA8, 0x59, 0x9D, 0x5B, 0x80, 0x8F
-  },
-  {
-    0xF7, 0x85, 0x85, 0x50, 0x5C, 0x4E, 0xAA, 0x54,
-    0xA8, 0xB5, 0xBE, 0x70, 0xA6, 0x1E, 0x73, 0x5E,
-    0x0F, 0xF9, 0x7A, 0xF9, 0x44, 0xDD, 0xB3, 0x00,
-    0x1E, 0x35, 0xD8, 0x6C, 0x4E, 0x21, 0x99, 0xD9,
-    0x76, 0x10, 0x4B, 0x6A, 0xE3, 0x17, 0x50, 0xA3,
-    0x6A, 0x72, 0x6E, 0xD2, 0x85, 0x06, 0x4F, 0x59,
-    0x81, 0xB5, 0x03, 0x88, 0x9F, 0xEF, 0x82, 0x2F,
-    0xCD, 0xC2, 0x89, 0x8D, 0xDD, 0xB7, 0x88, 0x9A
-  },
-  {
-    0xE4, 0xB5, 0x56, 0x60, 0x33, 0x86, 0x95, 0x72,
-    0xED, 0xFD, 0x87, 0x47, 0x9A, 0x5B, 0xB7, 0x3C,
-    0x80, 0xE8, 0x75, 0x9B, 0x91, 0x23, 0x28, 0x79,
-    0xD9, 0x6B, 0x1D, 0xDA, 0x36, 0xC0, 0x12, 0x07,
-    0x6E, 0xE5, 0xA2, 0xED, 0x7A, 0xE2, 0xDE, 0x63,
-    0xEF, 0x84, 0x06, 0xA0, 0x6A, 0xEA, 0x82, 0xC1,
-    0x88, 0x03, 0x1B, 0x56, 0x0B, 0xEA, 0xFB, 0x58,
-    0x3F, 0xB3, 0xDE, 0x9E, 0x57, 0x95, 0x2A, 0x7E
-  },
-  {
-    0xE1, 0xB3, 0xE7, 0xED, 0x86, 0x7F, 0x6C, 0x94,
-    0x84, 0xA2, 0xA9, 0x7F, 0x77, 0x15, 0xF2, 0x5E,
-    0x25, 0x29, 0x4E, 0x99, 0x2E, 0x41, 0xF6, 0xA7,
-    0xC1, 0x61, 0xFF, 0xC2, 0xAD, 0xC6, 0xDA, 0xAE,
-    0xB7, 0x11, 0x31, 0x02, 0xD5, 0xE6, 0x09, 0x02,
-    0x87, 0xFE, 0x6A, 0xD9, 0x4C, 0xE5, 0xD6, 0xB7,
-    0x39, 0xC6, 0xCA, 0x24, 0x0B, 0x05, 0xC7, 0x6F,
-    0xB7, 0x3F, 0x25, 0xDD, 0x02, 0x4B, 0xF9, 0x35
-  },
-  {
-    0x85, 0xFD, 0x08, 0x5F, 0xDC, 0x12, 0xA0, 0x80,
-    0x98, 0x3D, 0xF0, 0x7B, 0xD7, 0x01, 0x2B, 0x0D,
-    0x40, 0x2A, 0x0F, 0x40, 0x43, 0xFC, 0xB2, 0x77,
-    0x5A, 0xDF, 0x0B, 0xAD, 0x17, 0x4F, 0x9B, 0x08,
-    0xD1, 0x67, 0x6E, 0x47, 0x69, 0x85, 0x78, 0x5C,
-    0x0A, 0x5D, 0xCC, 0x41, 0xDB, 0xFF, 0x6D, 0x95,
-    0xEF, 0x4D, 0x66, 0xA3, 0xFB, 0xDC, 0x4A, 0x74,
-    0xB8, 0x2B, 0xA5, 0x2D, 0xA0, 0x51, 0x2B, 0x74
-  },
-  {
-    0xAE, 0xD8, 0xFA, 0x76, 0x4B, 0x0F, 0xBF, 0xF8,
-    0x21, 0xE0, 0x52, 0x33, 0xD2, 0xF7, 0xB0, 0x90,
-    0x0E, 0xC4, 0x4D, 0x82, 0x6F, 0x95, 0xE9, 0x3C,
-    0x34, 0x3C, 0x1B, 0xC3, 0xBA, 0x5A, 0x24, 0x37,
-    0x4B, 0x1D, 0x61, 0x6E, 0x7E, 0x7A, 0xBA, 0x45,
-    0x3A, 0x0A, 0xDA, 0x5E, 0x4F, 0xAB, 0x53, 0x82,
-    0x40, 0x9E, 0x0D, 0x42, 0xCE, 0x9C, 0x2B, 0xC7,
-    0xFB, 0x39, 0xA9, 0x9C, 0x34, 0x0C, 0x20, 0xF0
-  },
-  {
-    0x7B, 0xA3, 0xB2, 0xE2, 0x97, 0x23, 0x35, 0x22,
-    0xEE, 0xB3, 0x43, 0xBD, 0x3E, 0xBC, 0xFD, 0x83,
-    0x5A, 0x04, 0x00, 0x77, 0x35, 0xE8, 0x7F, 0x0C,
-    0xA3, 0x00, 0xCB, 0xEE, 0x6D, 0x41, 0x65, 0x65,
-    0x16, 0x21, 0x71, 0x58, 0x1E, 0x40, 0x20, 0xFF,
-    0x4C, 0xF1, 0x76, 0x45, 0x0F, 0x12, 0x91, 0xEA,
-    0x22, 0x85, 0xCB, 0x9E, 0xBF, 0xFE, 0x4C, 0x56,
-    0x66, 0x06, 0x27, 0x68, 0x51, 0x45, 0x05, 0x1C
-  },
-  {
-    0xDE, 0x74, 0x8B, 0xCF, 0x89, 0xEC, 0x88, 0x08,
-    0x47, 0x21, 0xE1, 0x6B, 0x85, 0xF3, 0x0A, 0xDB,
-    0x1A, 0x61, 0x34, 0xD6, 0x64, 0xB5, 0x84, 0x35,
-    0x69, 0xBA, 0xBC, 0x5B, 0xBD, 0x1A, 0x15, 0xCA,
-    0x9B, 0x61, 0x80, 0x3C, 0x90, 0x1A, 0x4F, 0xEF,
-    0x32, 0x96, 0x5A, 0x17, 0x49, 0xC9, 0xF3, 0xA4,
-    0xE2, 0x43, 0xE1, 0x73, 0x93, 0x9D, 0xC5, 0xA8,
-    0xDC, 0x49, 0x5C, 0x67, 0x1A, 0xB5, 0x21, 0x45
-  },
-  {
-    0xAA, 0xF4, 0xD2, 0xBD, 0xF2, 0x00, 0xA9, 0x19,
-    0x70, 0x6D, 0x98, 0x42, 0xDC, 0xE1, 0x6C, 0x98,
-    0x14, 0x0D, 0x34, 0xBC, 0x43, 0x3D, 0xF3, 0x20,
-    0xAB, 0xA9, 0xBD, 0x42, 0x9E, 0x54, 0x9A, 0xA7,
-    0xA3, 0x39, 0x76, 0x52, 0xA4, 0xD7, 0x68, 0x27,
-    0x77, 0x86, 0xCF, 0x99, 0x3C, 0xDE, 0x23, 0x38,
-    0x67, 0x3E, 0xD2, 0xE6, 0xB6, 0x6C, 0x96, 0x1F,
-    0xEF, 0xB8, 0x2C, 0xD2, 0x0C, 0x93, 0x33, 0x8F
-  },
-  {
-    0xC4, 0x08, 0x21, 0x89, 0x68, 0xB7, 0x88, 0xBF,
-    0x86, 0x4F, 0x09, 0x97, 0xE6, 0xBC, 0x4C, 0x3D,
-    0xBA, 0x68, 0xB2, 0x76, 0xE2, 0x12, 0x5A, 0x48,
-    0x43, 0x29, 0x60, 0x52, 0xFF, 0x93, 0xBF, 0x57,
-    0x67, 0xB8, 0xCD, 0xCE, 0x71, 0x31, 0xF0, 0x87,
-    0x64, 0x30, 0xC1, 0x16, 0x5F, 0xEC, 0x6C, 0x4F,
-    0x47, 0xAD, 0xAA, 0x4F, 0xD8, 0xBC, 0xFA, 0xCE,
-    0xF4, 0x63, 0xB5, 0xD3, 0xD0, 0xFA, 0x61, 0xA0
-  },
-  {
-    0x76, 0xD2, 0xD8, 0x19, 0xC9, 0x2B, 0xCE, 0x55,
-    0xFA, 0x8E, 0x09, 0x2A, 0xB1, 0xBF, 0x9B, 0x9E,
-    0xAB, 0x23, 0x7A, 0x25, 0x26, 0x79, 0x86, 0xCA,
-    0xCF, 0x2B, 0x8E, 0xE1, 0x4D, 0x21, 0x4D, 0x73,
-    0x0D, 0xC9, 0xA5, 0xAA, 0x2D, 0x7B, 0x59, 0x6E,
-    0x86, 0xA1, 0xFD, 0x8F, 0xA0, 0x80, 0x4C, 0x77,
-    0x40, 0x2D, 0x2F, 0xCD, 0x45, 0x08, 0x36, 0x88,
-    0xB2, 0x18, 0xB1, 0xCD, 0xFA, 0x0D, 0xCB, 0xCB
-  },
-  {
-    0x72, 0x06, 0x5E, 0xE4, 0xDD, 0x91, 0xC2, 0xD8,
-    0x50, 0x9F, 0xA1, 0xFC, 0x28, 0xA3, 0x7C, 0x7F,
-    0xC9, 0xFA, 0x7D, 0x5B, 0x3F, 0x8A, 0xD3, 0xD0,
-    0xD7, 0xA2, 0x56, 0x26, 0xB5, 0x7B, 0x1B, 0x44,
-    0x78, 0x8D, 0x4C, 0xAF, 0x80, 0x62, 0x90, 0x42,
-    0x5F, 0x98, 0x90, 0xA3, 0xA2, 0xA3, 0x5A, 0x90,
-    0x5A, 0xB4, 0xB3, 0x7A, 0xCF, 0xD0, 0xDA, 0x6E,
-    0x45, 0x17, 0xB2, 0x52, 0x5C, 0x96, 0x51, 0xE4
-  },
-  {
-    0x64, 0x47, 0x5D, 0xFE, 0x76, 0x00, 0xD7, 0x17,
-    0x1B, 0xEA, 0x0B, 0x39, 0x4E, 0x27, 0xC9, 0xB0,
-    0x0D, 0x8E, 0x74, 0xDD, 0x1E, 0x41, 0x6A, 0x79,
-    0x47, 0x36, 0x82, 0xAD, 0x3D, 0xFD, 0xBB, 0x70,
-    0x66, 0x31, 0x55, 0x80, 0x55, 0xCF, 0xC8, 0xA4,
-    0x0E, 0x07, 0xBD, 0x01, 0x5A, 0x45, 0x40, 0xDC,
-    0xDE, 0xA1, 0x58, 0x83, 0xCB, 0xBF, 0x31, 0x41,
-    0x2D, 0xF1, 0xDE, 0x1C, 0xD4, 0x15, 0x2B, 0x91
-  },
-  {
-    0x12, 0xCD, 0x16, 0x74, 0xA4, 0x48, 0x8A, 0x5D,
-    0x7C, 0x2B, 0x31, 0x60, 0xD2, 0xE2, 0xC4, 0xB5,
-    0x83, 0x71, 0xBE, 0xDA, 0xD7, 0x93, 0x41, 0x8D,
-    0x6F, 0x19, 0xC6, 0xEE, 0x38, 0x5D, 0x70, 0xB3,
-    0xE0, 0x67, 0x39, 0x36, 0x9D, 0x4D, 0xF9, 0x10,
-    0xED, 0xB0, 0xB0, 0xA5, 0x4C, 0xBF, 0xF4, 0x3D,
-    0x54, 0x54, 0x4C, 0xD3, 0x7A, 0xB3, 0xA0, 0x6C,
-    0xFA, 0x0A, 0x3D, 0xDA, 0xC8, 0xB6, 0x6C, 0x89
-  },
-  {
-    0x60, 0x75, 0x69, 0x66, 0x47, 0x9D, 0xED, 0xC6,
-    0xDD, 0x4B, 0xCF, 0xF8, 0xEA, 0x7D, 0x1D, 0x4C,
-    0xE4, 0xD4, 0xAF, 0x2E, 0x7B, 0x09, 0x7E, 0x32,
-    0xE3, 0x76, 0x35, 0x18, 0x44, 0x11, 0x47, 0xCC,
-    0x12, 0xB3, 0xC0, 0xEE, 0x6D, 0x2E, 0xCA, 0xBF,
-    0x11, 0x98, 0xCE, 0xC9, 0x2E, 0x86, 0xA3, 0x61,
-    0x6F, 0xBA, 0x4F, 0x4E, 0x87, 0x2F, 0x58, 0x25,
-    0x33, 0x0A, 0xDB, 0xB4, 0xC1, 0xDE, 0xE4, 0x44
-  },
-  {
-    0xA7, 0x80, 0x3B, 0xCB, 0x71, 0xBC, 0x1D, 0x0F,
-    0x43, 0x83, 0xDD, 0xE1, 0xE0, 0x61, 0x2E, 0x04,
-    0xF8, 0x72, 0xB7, 0x15, 0xAD, 0x30, 0x81, 0x5C,
-    0x22, 0x49, 0xCF, 0x34, 0xAB, 0xB8, 0xB0, 0x24,
-    0x91, 0x5C, 0xB2, 0xFC, 0x9F, 0x4E, 0x7C, 0xC4,
-    0xC8, 0xCF, 0xD4, 0x5B, 0xE2, 0xD5, 0xA9, 0x1E,
-    0xAB, 0x09, 0x41, 0xC7, 0xD2, 0x70, 0xE2, 0xDA,
-    0x4C, 0xA4, 0xA9, 0xF7, 0xAC, 0x68, 0x66, 0x3A
-  },
-  {
-    0xB8, 0x4E, 0xF6, 0xA7, 0x22, 0x9A, 0x34, 0xA7,
-    0x50, 0xD9, 0xA9, 0x8E, 0xE2, 0x52, 0x98, 0x71,
-    0x81, 0x6B, 0x87, 0xFB, 0xE3, 0xBC, 0x45, 0xB4,
-    0x5F, 0xA5, 0xAE, 0x82, 0xD5, 0x14, 0x15, 0x40,
-    0x21, 0x11, 0x65, 0xC3, 0xC5, 0xD7, 0xA7, 0x47,
-    0x6B, 0xA5, 0xA4, 0xAA, 0x06, 0xD6, 0x64, 0x76,
-    0xF0, 0xD9, 0xDC, 0x49, 0xA3, 0xF1, 0xEE, 0x72,
-    0xC3, 0xAC, 0xAB, 0xD4, 0x98, 0x96, 0x74, 0x14
-  },
-  {
-    0xFA, 0xE4, 0xB6, 0xD8, 0xEF, 0xC3, 0xF8, 0xC8,
-    0xE6, 0x4D, 0x00, 0x1D, 0xAB, 0xEC, 0x3A, 0x21,
-    0xF5, 0x44, 0xE8, 0x27, 0x14, 0x74, 0x52, 0x51,
-    0xB2, 0xB4, 0xB3, 0x93, 0xF2, 0xF4, 0x3E, 0x0D,
-    0xA3, 0xD4, 0x03, 0xC6, 0x4D, 0xB9, 0x5A, 0x2C,
-    0xB6, 0xE2, 0x3E, 0xBB, 0x7B, 0x9E, 0x94, 0xCD,
-    0xD5, 0xDD, 0xAC, 0x54, 0xF0, 0x7C, 0x4A, 0x61,
-    0xBD, 0x3C, 0xB1, 0x0A, 0xA6, 0xF9, 0x3B, 0x49
-  },
-  {
-    0x34, 0xF7, 0x28, 0x66, 0x05, 0xA1, 0x22, 0x36,
-    0x95, 0x40, 0x14, 0x1D, 0xED, 0x79, 0xB8, 0x95,
-    0x72, 0x55, 0xDA, 0x2D, 0x41, 0x55, 0xAB, 0xBF,
-    0x5A, 0x8D, 0xBB, 0x89, 0xC8, 0xEB, 0x7E, 0xDE,
-    0x8E, 0xEE, 0xF1, 0xDA, 0xA4, 0x6D, 0xC2, 0x9D,
-    0x75, 0x1D, 0x04, 0x5D, 0xC3, 0xB1, 0xD6, 0x58,
-    0xBB, 0x64, 0xB8, 0x0F, 0xF8, 0x58, 0x9E, 0xDD,
-    0xB3, 0x82, 0x4B, 0x13, 0xDA, 0x23, 0x5A, 0x6B
-  },
-  {
-    0x3B, 0x3B, 0x48, 0x43, 0x4B, 0xE2, 0x7B, 0x9E,
-    0xAB, 0xAB, 0xBA, 0x43, 0xBF, 0x6B, 0x35, 0xF1,
-    0x4B, 0x30, 0xF6, 0xA8, 0x8D, 0xC2, 0xE7, 0x50,
-    0xC3, 0x58, 0x47, 0x0D, 0x6B, 0x3A, 0xA3, 0xC1,
-    0x8E, 0x47, 0xDB, 0x40, 0x17, 0xFA, 0x55, 0x10,
-    0x6D, 0x82, 0x52, 0xF0, 0x16, 0x37, 0x1A, 0x00,
-    0xF5, 0xF8, 0xB0, 0x70, 0xB7, 0x4B, 0xA5, 0xF2,
-    0x3C, 0xFF, 0xC5, 0x51, 0x1C, 0x9F, 0x09, 0xF0
-  },
-  {
-    0xBA, 0x28, 0x9E, 0xBD, 0x65, 0x62, 0xC4, 0x8C,
-    0x3E, 0x10, 0xA8, 0xAD, 0x6C, 0xE0, 0x2E, 0x73,
-    0x43, 0x3D, 0x1E, 0x93, 0xD7, 0xC9, 0x27, 0x9D,
-    0x4D, 0x60, 0xA7, 0xE8, 0x79, 0xEE, 0x11, 0xF4,
-    0x41, 0xA0, 0x00, 0xF4, 0x8E, 0xD9, 0xF7, 0xC4,
-    0xED, 0x87, 0xA4, 0x51, 0x36, 0xD7, 0xDC, 0xCD,
-    0xCA, 0x48, 0x21, 0x09, 0xC7, 0x8A, 0x51, 0x06,
-    0x2B, 0x3B, 0xA4, 0x04, 0x4A, 0xDA, 0x24, 0x69
-  },
-  {
-    0x02, 0x29, 0x39, 0xE2, 0x38, 0x6C, 0x5A, 0x37,
-    0x04, 0x98, 0x56, 0xC8, 0x50, 0xA2, 0xBB, 0x10,
-    0xA1, 0x3D, 0xFE, 0xA4, 0x21, 0x2B, 0x4C, 0x73,
-    0x2A, 0x88, 0x40, 0xA9, 0xFF, 0xA5, 0xFA, 0xF5,
-    0x48, 0x75, 0xC5, 0x44, 0x88, 0x16, 0xB2, 0x78,
-    0x5A, 0x00, 0x7D, 0xA8, 0xA8, 0xD2, 0xBC, 0x7D,
-    0x71, 0xA5, 0x4E, 0x4E, 0x65, 0x71, 0xF1, 0x0B,
-    0x60, 0x0C, 0xBD, 0xB2, 0x5D, 0x13, 0xED, 0xE3
-  },
-  {
-    0xE6, 0xFE, 0xC1, 0x9D, 0x89, 0xCE, 0x87, 0x17,
-    0xB1, 0xA0, 0x87, 0x02, 0x46, 0x70, 0xFE, 0x02,
-    0x6F, 0x6C, 0x7C, 0xBD, 0xA1, 0x1C, 0xAE, 0xF9,
-    0x59, 0xBB, 0x2D, 0x35, 0x1B, 0xF8, 0x56, 0xF8,
-    0x05, 0x5D, 0x1C, 0x0E, 0xBD, 0xAA, 0xA9, 0xD1,
-    0xB1, 0x78, 0x86, 0xFC, 0x2C, 0x56, 0x2B, 0x5E,
-    0x99, 0x64, 0x2F, 0xC0, 0x64, 0x71, 0x0C, 0x0D,
-    0x34, 0x88, 0xA0, 0x2B, 0x5E, 0xD7, 0xF6, 0xFD
-  },
-  {
-    0x94, 0xC9, 0x6F, 0x02, 0xA8, 0xF5, 0x76, 0xAC,
-    0xA3, 0x2B, 0xA6, 0x1C, 0x2B, 0x20, 0x6F, 0x90,
-    0x72, 0x85, 0xD9, 0x29, 0x9B, 0x83, 0xAC, 0x17,
-    0x5C, 0x20, 0x9A, 0x8D, 0x43, 0xD5, 0x3B, 0xFE,
-    0x68, 0x3D, 0xD1, 0xD8, 0x3E, 0x75, 0x49, 0xCB,
-    0x90, 0x6C, 0x28, 0xF5, 0x9A, 0xB7, 0xC4, 0x6F,
-    0x87, 0x51, 0x36, 0x6A, 0x28, 0xC3, 0x9D, 0xD5,
-    0xFE, 0x26, 0x93, 0xC9, 0x01, 0x96, 0x66, 0xC8
-  },
-  {
-    0x31, 0xA0, 0xCD, 0x21, 0x5E, 0xBD, 0x2C, 0xB6,
-    0x1D, 0xE5, 0xB9, 0xED, 0xC9, 0x1E, 0x61, 0x95,
-    0xE3, 0x1C, 0x59, 0xA5, 0x64, 0x8D, 0x5C, 0x9F,
-    0x73, 0x7E, 0x12, 0x5B, 0x26, 0x05, 0x70, 0x8F,
-    0x2E, 0x32, 0x5A, 0xB3, 0x38, 0x1C, 0x8D, 0xCE,
-    0x1A, 0x3E, 0x95, 0x88, 0x86, 0xF1, 0xEC, 0xDC,
-    0x60, 0x31, 0x8F, 0x88, 0x2C, 0xFE, 0x20, 0xA2,
-    0x41, 0x91, 0x35, 0x2E, 0x61, 0x7B, 0x0F, 0x21
-  },
-  {
-    0x91, 0xAB, 0x50, 0x4A, 0x52, 0x2D, 0xCE, 0x78,
-    0x77, 0x9F, 0x4C, 0x6C, 0x6B, 0xA2, 0xE6, 0xB6,
-    0xDB, 0x55, 0x65, 0xC7, 0x6D, 0x3E, 0x7E, 0x7C,
-    0x92, 0x0C, 0xAF, 0x7F, 0x75, 0x7E, 0xF9, 0xDB,
-    0x7C, 0x8F, 0xCF, 0x10, 0xE5, 0x7F, 0x03, 0x37,
-    0x9E, 0xA9, 0xBF, 0x75, 0xEB, 0x59, 0x89, 0x5D,
-    0x96, 0xE1, 0x49, 0x80, 0x0B, 0x6A, 0xAE, 0x01,
-    0xDB, 0x77, 0x8B, 0xB9, 0x0A, 0xFB, 0xC9, 0x89
-  },
-  {
-    0xD8, 0x5C, 0xAB, 0xC6, 0xBD, 0x5B, 0x1A, 0x01,
-    0xA5, 0xAF, 0xD8, 0xC6, 0x73, 0x47, 0x40, 0xDA,
-    0x9F, 0xD1, 0xC1, 0xAC, 0xC6, 0xDB, 0x29, 0xBF,
-    0xC8, 0xA2, 0xE5, 0xB6, 0x68, 0xB0, 0x28, 0xB6,
-    0xB3, 0x15, 0x4B, 0xFB, 0x87, 0x03, 0xFA, 0x31,
-    0x80, 0x25, 0x1D, 0x58, 0x9A, 0xD3, 0x80, 0x40,
-    0xCE, 0xB7, 0x07, 0xC4, 0xBA, 0xD1, 0xB5, 0x34,
-    0x3C, 0xB4, 0x26, 0xB6, 0x1E, 0xAA, 0x49, 0xC1
-  },
-  {
-    0xD6, 0x2E, 0xFB, 0xEC, 0x2C, 0xA9, 0xC1, 0xF8,
-    0xBD, 0x66, 0xCE, 0x8B, 0x3F, 0x6A, 0x89, 0x8C,
-    0xB3, 0xF7, 0x56, 0x6B, 0xA6, 0x56, 0x8C, 0x61,
-    0x8A, 0xD1, 0xFE, 0xB2, 0xB6, 0x5B, 0x76, 0xC3,
-    0xCE, 0x1D, 0xD2, 0x0F, 0x73, 0x95, 0x37, 0x2F,
-    0xAF, 0x28, 0x42, 0x7F, 0x61, 0xC9, 0x27, 0x80,
-    0x49, 0xCF, 0x01, 0x40, 0xDF, 0x43, 0x4F, 0x56,
-    0x33, 0x04, 0x8C, 0x86, 0xB8, 0x1E, 0x03, 0x99
-  },
-  {
-    0x7C, 0x8F, 0xDC, 0x61, 0x75, 0x43, 0x9E, 0x2C,
-    0x3D, 0xB1, 0x5B, 0xAF, 0xA7, 0xFB, 0x06, 0x14,
-    0x3A, 0x6A, 0x23, 0xBC, 0x90, 0xF4, 0x49, 0xE7,
-    0x9D, 0xEE, 0xF7, 0x3C, 0x3D, 0x49, 0x2A, 0x67,
-    0x17, 0x15, 0xC1, 0x93, 0xB6, 0xFE, 0xA9, 0xF0,
-    0x36, 0x05, 0x0B, 0x94, 0x60, 0x69, 0x85, 0x6B,
-    0x89, 0x7E, 0x08, 0xC0, 0x07, 0x68, 0xF5, 0xEE,
-    0x5D, 0xDC, 0xF7, 0x0B, 0x7C, 0xD6, 0xD0, 0xE0
-  },
-  {
-    0x58, 0x60, 0x2E, 0xE7, 0x46, 0x8E, 0x6B, 0xC9,
-    0xDF, 0x21, 0xBD, 0x51, 0xB2, 0x3C, 0x00, 0x5F,
-    0x72, 0xD6, 0xCB, 0x01, 0x3F, 0x0A, 0x1B, 0x48,
-    0xCB, 0xEC, 0x5E, 0xCA, 0x29, 0x92, 0x99, 0xF9,
-    0x7F, 0x09, 0xF5, 0x4A, 0x9A, 0x01, 0x48, 0x3E,
-    0xAE, 0xB3, 0x15, 0xA6, 0x47, 0x8B, 0xAD, 0x37,
-    0xBA, 0x47, 0xCA, 0x13, 0x47, 0xC7, 0xC8, 0xFC,
-    0x9E, 0x66, 0x95, 0x59, 0x2C, 0x91, 0xD7, 0x23
-  },
-  {
-    0x27, 0xF5, 0xB7, 0x9E, 0xD2, 0x56, 0xB0, 0x50,
-    0x99, 0x3D, 0x79, 0x34, 0x96, 0xED, 0xF4, 0x80,
-    0x7C, 0x1D, 0x85, 0xA7, 0xB0, 0xA6, 0x7C, 0x9C,
-    0x4F, 0xA9, 0x98, 0x60, 0x75, 0x0B, 0x0A, 0xE6,
-    0x69, 0x89, 0x67, 0x0A, 0x8F, 0xFD, 0x78, 0x56,
-    0xD7, 0xCE, 0x41, 0x15, 0x99, 0xE5, 0x8C, 0x4D,
-    0x77, 0xB2, 0x32, 0xA6, 0x2B, 0xEF, 0x64, 0xD1,
-    0x52, 0x75, 0xBE, 0x46, 0xA6, 0x82, 0x35, 0xFF
-  },
-  {
-    0x39, 0x57, 0xA9, 0x76, 0xB9, 0xF1, 0x88, 0x7B,
-    0xF0, 0x04, 0xA8, 0xDC, 0xA9, 0x42, 0xC9, 0x2D,
-    0x2B, 0x37, 0xEA, 0x52, 0x60, 0x0F, 0x25, 0xE0,
-    0xC9, 0xBC, 0x57, 0x07, 0xD0, 0x27, 0x9C, 0x00,
-    0xC6, 0xE8, 0x5A, 0x83, 0x9B, 0x0D, 0x2D, 0x8E,
-    0xB5, 0x9C, 0x51, 0xD9, 0x47, 0x88, 0xEB, 0xE6,
-    0x24, 0x74, 0xA7, 0x91, 0xCA, 0xDF, 0x52, 0xCC,
-    0xCF, 0x20, 0xF5, 0x07, 0x0B, 0x65, 0x73, 0xFC
-  },
-  {
-    0xEA, 0xA2, 0x37, 0x6D, 0x55, 0x38, 0x0B, 0xF7,
-    0x72, 0xEC, 0xCA, 0x9C, 0xB0, 0xAA, 0x46, 0x68,
-    0xC9, 0x5C, 0x70, 0x71, 0x62, 0xFA, 0x86, 0xD5,
-    0x18, 0xC8, 0xCE, 0x0C, 0xA9, 0xBF, 0x73, 0x62,
-    0xB9, 0xF2, 0xA0, 0xAD, 0xC3, 0xFF, 0x59, 0x92,
-    0x2D, 0xF9, 0x21, 0xB9, 0x45, 0x67, 0xE8, 0x1E,
-    0x45, 0x2F, 0x6C, 0x1A, 0x07, 0xFC, 0x81, 0x7C,
-    0xEB, 0xE9, 0x96, 0x04, 0xB3, 0x50, 0x5D, 0x38
-  },
-  {
-    0xC1, 0xE2, 0xC7, 0x8B, 0x6B, 0x27, 0x34, 0xE2,
-    0x48, 0x0E, 0xC5, 0x50, 0x43, 0x4C, 0xB5, 0xD6,
-    0x13, 0x11, 0x1A, 0xDC, 0xC2, 0x1D, 0x47, 0x55,
-    0x45, 0xC3, 0xB1, 0xB7, 0xE6, 0xFF, 0x12, 0x44,
-    0x44, 0x76, 0xE5, 0xC0, 0x55, 0x13, 0x2E, 0x22,
-    0x29, 0xDC, 0x0F, 0x80, 0x70, 0x44, 0xBB, 0x91,
-    0x9B, 0x1A, 0x56, 0x62, 0xDD, 0x38, 0xA9, 0xEE,
-    0x65, 0xE2, 0x43, 0xA3, 0x91, 0x1A, 0xED, 0x1A
-  },
-  {
-    0x8A, 0xB4, 0x87, 0x13, 0x38, 0x9D, 0xD0, 0xFC,
-    0xF9, 0xF9, 0x65, 0xD3, 0xCE, 0x66, 0xB1, 0xE5,
-    0x59, 0xA1, 0xF8, 0xC5, 0x87, 0x41, 0xD6, 0x76,
-    0x83, 0xCD, 0x97, 0x13, 0x54, 0xF4, 0x52, 0xE6,
-    0x2D, 0x02, 0x07, 0xA6, 0x5E, 0x43, 0x6C, 0x5D,
-    0x5D, 0x8F, 0x8E, 0xE7, 0x1C, 0x6A, 0xBF, 0xE5,
-    0x0E, 0x66, 0x90, 0x04, 0xC3, 0x02, 0xB3, 0x1A,
-    0x7E, 0xA8, 0x31, 0x1D, 0x4A, 0x91, 0x60, 0x51
-  },
-  {
-    0x24, 0xCE, 0x0A, 0xDD, 0xAA, 0x4C, 0x65, 0x03,
-    0x8B, 0xD1, 0xB1, 0xC0, 0xF1, 0x45, 0x2A, 0x0B,
-    0x12, 0x87, 0x77, 0xAA, 0xBC, 0x94, 0xA2, 0x9D,
-    0xF2, 0xFD, 0x6C, 0x7E, 0x2F, 0x85, 0xF8, 0xAB,
-    0x9A, 0xC7, 0xEF, 0xF5, 0x16, 0xB0, 0xE0, 0xA8,
-    0x25, 0xC8, 0x4A, 0x24, 0xCF, 0xE4, 0x92, 0xEA,
-    0xAD, 0x0A, 0x63, 0x08, 0xE4, 0x6D, 0xD4, 0x2F,
-    0xE8, 0x33, 0x3A, 0xB9, 0x71, 0xBB, 0x30, 0xCA
-  },
-  {
-    0x51, 0x54, 0xF9, 0x29, 0xEE, 0x03, 0x04, 0x5B,
-    0x6B, 0x0C, 0x00, 0x04, 0xFA, 0x77, 0x8E, 0xDE,
-    0xE1, 0xD1, 0x39, 0x89, 0x32, 0x67, 0xCC, 0x84,
-    0x82, 0x5A, 0xD7, 0xB3, 0x6C, 0x63, 0xDE, 0x32,
-    0x79, 0x8E, 0x4A, 0x16, 0x6D, 0x24, 0x68, 0x65,
-    0x61, 0x35, 0x4F, 0x63, 0xB0, 0x07, 0x09, 0xA1,
-    0x36, 0x4B, 0x3C, 0x24, 0x1D, 0xE3, 0xFE, 0xBF,
-    0x07, 0x54, 0x04, 0x58, 0x97, 0x46, 0x7C, 0xD4
-  },
-  {
-    0xE7, 0x4E, 0x90, 0x79, 0x20, 0xFD, 0x87, 0xBD,
-    0x5A, 0xD6, 0x36, 0xDD, 0x11, 0x08, 0x5E, 0x50,
-    0xEE, 0x70, 0x45, 0x9C, 0x44, 0x3E, 0x1C, 0xE5,
-    0x80, 0x9A, 0xF2, 0xBC, 0x2E, 0xBA, 0x39, 0xF9,
-    0xE6, 0xD7, 0x12, 0x8E, 0x0E, 0x37, 0x12, 0xC3,
-    0x16, 0xDA, 0x06, 0xF4, 0x70, 0x5D, 0x78, 0xA4,
-    0x83, 0x8E, 0x28, 0x12, 0x1D, 0x43, 0x44, 0xA2,
-    0xC7, 0x9C, 0x5E, 0x0D, 0xB3, 0x07, 0xA6, 0x77
-  },
-  {
-    0xBF, 0x91, 0xA2, 0x23, 0x34, 0xBA, 0xC2, 0x0F,
-    0x3F, 0xD8, 0x06, 0x63, 0xB3, 0xCD, 0x06, 0xC4,
-    0xE8, 0x80, 0x2F, 0x30, 0xE6, 0xB5, 0x9F, 0x90,
-    0xD3, 0x03, 0x5C, 0xC9, 0x79, 0x8A, 0x21, 0x7E,
-    0xD5, 0xA3, 0x1A, 0xBB, 0xDA, 0x7F, 0xA6, 0x84,
-    0x28, 0x27, 0xBD, 0xF2, 0xA7, 0xA1, 0xC2, 0x1F,
-    0x6F, 0xCF, 0xCC, 0xBB, 0x54, 0xC6, 0xC5, 0x29,
-    0x26, 0xF3, 0x2D, 0xA8, 0x16, 0x26, 0x9B, 0xE1
-  },
-  {
-    0xD9, 0xD5, 0xC7, 0x4B, 0xE5, 0x12, 0x1B, 0x0B,
-    0xD7, 0x42, 0xF2, 0x6B, 0xFF, 0xB8, 0xC8, 0x9F,
-    0x89, 0x17, 0x1F, 0x3F, 0x93, 0x49, 0x13, 0x49,
-    0x2B, 0x09, 0x03, 0xC2, 0x71, 0xBB, 0xE2, 0xB3,
-    0x39, 0x5E, 0xF2, 0x59, 0x66, 0x9B, 0xEF, 0x43,
-    0xB5, 0x7F, 0x7F, 0xCC, 0x30, 0x27, 0xDB, 0x01,
-    0x82, 0x3F, 0x6B, 0xAE, 0xE6, 0x6E, 0x4F, 0x9F,
-    0xEA, 0xD4, 0xD6, 0x72, 0x6C, 0x74, 0x1F, 0xCE
-  },
-  {
-    0x50, 0xC8, 0xB8, 0xCF, 0x34, 0xCD, 0x87, 0x9F,
-    0x80, 0xE2, 0xFA, 0xAB, 0x32, 0x30, 0xB0, 0xC0,
-    0xE1, 0xCC, 0x3E, 0x9D, 0xCA, 0xDE, 0xB1, 0xB9,
-    0xD9, 0x7A, 0xB9, 0x23, 0x41, 0x5D, 0xD9, 0xA1,
-    0xFE, 0x38, 0xAD, 0xDD, 0x5C, 0x11, 0x75, 0x6C,
-    0x67, 0x99, 0x0B, 0x25, 0x6E, 0x95, 0xAD, 0x6D,
-    0x8F, 0x9F, 0xED, 0xCE, 0x10, 0xBF, 0x1C, 0x90,
-    0x67, 0x9C, 0xDE, 0x0E, 0xCF, 0x1B, 0xE3, 0x47
-  },
-  {
-    0x0A, 0x38, 0x6E, 0x7C, 0xD5, 0xDD, 0x9B, 0x77,
-    0xA0, 0x35, 0xE0, 0x9F, 0xE6, 0xFE, 0xE2, 0xC8,
-    0xCE, 0x61, 0xB5, 0x38, 0x3C, 0x87, 0xEA, 0x43,
-    0x20, 0x50, 0x59, 0xC5, 0xE4, 0xCD, 0x4F, 0x44,
-    0x08, 0x31, 0x9B, 0xB0, 0xA8, 0x23, 0x60, 0xF6,
-    0xA5, 0x8E, 0x6C, 0x9C, 0xE3, 0xF4, 0x87, 0xC4,
-    0x46, 0x06, 0x3B, 0xF8, 0x13, 0xBC, 0x6B, 0xA5,
-    0x35, 0xE1, 0x7F, 0xC1, 0x82, 0x6C, 0xFC, 0x91
-  },
-  {
-    0x1F, 0x14, 0x59, 0xCB, 0x6B, 0x61, 0xCB, 0xAC,
-    0x5F, 0x0E, 0xFE, 0x8F, 0xC4, 0x87, 0x53, 0x8F,
-    0x42, 0x54, 0x89, 0x87, 0xFC, 0xD5, 0x62, 0x21,
-    0xCF, 0xA7, 0xBE, 0xB2, 0x25, 0x04, 0x76, 0x9E,
-    0x79, 0x2C, 0x45, 0xAD, 0xFB, 0x1D, 0x6B, 0x3D,
-    0x60, 0xD7, 0xB7, 0x49, 0xC8, 0xA7, 0x5B, 0x0B,
-    0xDF, 0x14, 0xE8, 0xEA, 0x72, 0x1B, 0x95, 0xDC,
-    0xA5, 0x38, 0xCA, 0x6E, 0x25, 0x71, 0x12, 0x09
-  },
-  {
-    0xE5, 0x8B, 0x38, 0x36, 0xB7, 0xD8, 0xFE, 0xDB,
-    0xB5, 0x0C, 0xA5, 0x72, 0x5C, 0x65, 0x71, 0xE7,
-    0x4C, 0x07, 0x85, 0xE9, 0x78, 0x21, 0xDA, 0xB8,
-    0xB6, 0x29, 0x8C, 0x10, 0xE4, 0xC0, 0x79, 0xD4,
-    0xA6, 0xCD, 0xF2, 0x2F, 0x0F, 0xED, 0xB5, 0x50,
-    0x32, 0x92, 0x5C, 0x16, 0x74, 0x81, 0x15, 0xF0,
-    0x1A, 0x10, 0x5E, 0x77, 0xE0, 0x0C, 0xEE, 0x3D,
-    0x07, 0x92, 0x4D, 0xC0, 0xD8, 0xF9, 0x06, 0x59
-  },
-  {
-    0xB9, 0x29, 0xCC, 0x65, 0x05, 0xF0, 0x20, 0x15,
-    0x86, 0x72, 0xDE, 0xDA, 0x56, 0xD0, 0xDB, 0x08,
-    0x1A, 0x2E, 0xE3, 0x4C, 0x00, 0xC1, 0x10, 0x00,
-    0x29, 0xBD, 0xF8, 0xEA, 0x98, 0x03, 0x4F, 0xA4,
-    0xBF, 0x3E, 0x86, 0x55, 0xEC, 0x69, 0x7F, 0xE3,
-    0x6F, 0x40, 0x55, 0x3C, 0x5B, 0xB4, 0x68, 0x01,
-    0x64, 0x4A, 0x62, 0x7D, 0x33, 0x42, 0xF4, 0xFC,
-    0x92, 0xB6, 0x1F, 0x03, 0x29, 0x0F, 0xB3, 0x81
-  },
-  {
-    0x72, 0xD3, 0x53, 0x99, 0x4B, 0x49, 0xD3, 0xE0,
-    0x31, 0x53, 0x92, 0x9A, 0x1E, 0x4D, 0x4F, 0x18,
-    0x8E, 0xE5, 0x8A, 0xB9, 0xE7, 0x2E, 0xE8, 0xE5,
-    0x12, 0xF2, 0x9B, 0xC7, 0x73, 0x91, 0x38, 0x19,
-    0xCE, 0x05, 0x7D, 0xDD, 0x70, 0x02, 0xC0, 0x43,
-    0x3E, 0xE0, 0xA1, 0x61, 0x14, 0xE3, 0xD1, 0x56,
-    0xDD, 0x2C, 0x4A, 0x7E, 0x80, 0xEE, 0x53, 0x37,
-    0x8B, 0x86, 0x70, 0xF2, 0x3E, 0x33, 0xEF, 0x56
-  },
-  {
-    0xC7, 0x0E, 0xF9, 0xBF, 0xD7, 0x75, 0xD4, 0x08,
-    0x17, 0x67, 0x37, 0xA0, 0x73, 0x6D, 0x68, 0x51,
-    0x7C, 0xE1, 0xAA, 0xAD, 0x7E, 0x81, 0xA9, 0x3C,
-    0x8C, 0x1E, 0xD9, 0x67, 0xEA, 0x21, 0x4F, 0x56,
-    0xC8, 0xA3, 0x77, 0xB1, 0x76, 0x3E, 0x67, 0x66,
-    0x15, 0xB6, 0x0F, 0x39, 0x88, 0x24, 0x1E, 0xAE,
-    0x6E, 0xAB, 0x96, 0x85, 0xA5, 0x12, 0x49, 0x29,
-    0xD2, 0x81, 0x88, 0xF2, 0x9E, 0xAB, 0x06, 0xF7
-  },
-  {
-    0xC2, 0x30, 0xF0, 0x80, 0x26, 0x79, 0xCB, 0x33,
-    0x82, 0x2E, 0xF8, 0xB3, 0xB2, 0x1B, 0xF7, 0xA9,
-    0xA2, 0x89, 0x42, 0x09, 0x29, 0x01, 0xD7, 0xDA,
-    0xC3, 0x76, 0x03, 0x00, 0x83, 0x10, 0x26, 0xCF,
-    0x35, 0x4C, 0x92, 0x32, 0xDF, 0x3E, 0x08, 0x4D,
-    0x99, 0x03, 0x13, 0x0C, 0x60, 0x1F, 0x63, 0xC1,
-    0xF4, 0xA4, 0xA4, 0xB8, 0x10, 0x6E, 0x46, 0x8C,
-    0xD4, 0x43, 0xBB, 0xE5, 0xA7, 0x34, 0xF4, 0x5F
-  },
-  {
-    0x6F, 0x43, 0x09, 0x4C, 0xAF, 0xB5, 0xEB, 0xF1,
-    0xF7, 0xA4, 0x93, 0x7E, 0xC5, 0x0F, 0x56, 0xA4,
-    0xC9, 0xDA, 0x30, 0x3C, 0xBB, 0x55, 0xAC, 0x1F,
-    0x27, 0xF1, 0xF1, 0x97, 0x6C, 0xD9, 0x6B, 0xED,
-    0xA9, 0x46, 0x4F, 0x0E, 0x7B, 0x9C, 0x54, 0x62,
-    0x0B, 0x8A, 0x9F, 0xBA, 0x98, 0x31, 0x64, 0xB8,
-    0xBE, 0x35, 0x78, 0x42, 0x5A, 0x02, 0x4F, 0x5F,
-    0xE1, 0x99, 0xC3, 0x63, 0x56, 0xB8, 0x89, 0x72
-  },
-  {
-    0x37, 0x45, 0x27, 0x3F, 0x4C, 0x38, 0x22, 0x5D,
-    0xB2, 0x33, 0x73, 0x81, 0x87, 0x1A, 0x0C, 0x6A,
-    0xAF, 0xD3, 0xAF, 0x9B, 0x01, 0x8C, 0x88, 0xAA,
-    0x02, 0x02, 0x58, 0x50, 0xA5, 0xDC, 0x3A, 0x42,
-    0xA1, 0xA3, 0xE0, 0x3E, 0x56, 0xCB, 0xF1, 0xB0,
-    0x87, 0x6D, 0x63, 0xA4, 0x41, 0xF1, 0xD2, 0x85,
-    0x6A, 0x39, 0xB8, 0x80, 0x1E, 0xB5, 0xAF, 0x32,
-    0x52, 0x01, 0xC4, 0x15, 0xD6, 0x5E, 0x97, 0xFE
-  },
-  {
-    0xC5, 0x0C, 0x44, 0xCC, 0xA3, 0xEC, 0x3E, 0xDA,
-    0xAE, 0x77, 0x9A, 0x7E, 0x17, 0x94, 0x50, 0xEB,
-    0xDD, 0xA2, 0xF9, 0x70, 0x67, 0xC6, 0x90, 0xAA,
-    0x6C, 0x5A, 0x4A, 0xC7, 0xC3, 0x01, 0x39, 0xBB,
-    0x27, 0xC0, 0xDF, 0x4D, 0xB3, 0x22, 0x0E, 0x63,
-    0xCB, 0x11, 0x0D, 0x64, 0xF3, 0x7F, 0xFE, 0x07,
-    0x8D, 0xB7, 0x26, 0x53, 0xE2, 0xDA, 0xAC, 0xF9,
-    0x3A, 0xE3, 0xF0, 0xA2, 0xD1, 0xA7, 0xEB, 0x2E
-  },
-  {
-    0x8A, 0xEF, 0x26, 0x3E, 0x38, 0x5C, 0xBC, 0x61,
-    0xE1, 0x9B, 0x28, 0x91, 0x42, 0x43, 0x26, 0x2A,
-    0xF5, 0xAF, 0xE8, 0x72, 0x6A, 0xF3, 0xCE, 0x39,
-    0xA7, 0x9C, 0x27, 0x02, 0x8C, 0xF3, 0xEC, 0xD3,
-    0xF8, 0xD2, 0xDF, 0xD9, 0xCF, 0xC9, 0xAD, 0x91,
-    0xB5, 0x8F, 0x6F, 0x20, 0x77, 0x8F, 0xD5, 0xF0,
-    0x28, 0x94, 0xA3, 0xD9, 0x1C, 0x7D, 0x57, 0xD1,
-    0xE4, 0xB8, 0x66, 0xA7, 0xF3, 0x64, 0xB6, 0xBE
-  },
-  {
-    0x28, 0x69, 0x61, 0x41, 0xDE, 0x6E, 0x2D, 0x9B,
-    0xCB, 0x32, 0x35, 0x57, 0x8A, 0x66, 0x16, 0x6C,
-    0x14, 0x48, 0xD3, 0xE9, 0x05, 0xA1, 0xB4, 0x82,
-    0xD4, 0x23, 0xBE, 0x4B, 0xC5, 0x36, 0x9B, 0xC8,
-    0xC7, 0x4D, 0xAE, 0x0A, 0xCC, 0x9C, 0xC1, 0x23,
-    0xE1, 0xD8, 0xDD, 0xCE, 0x9F, 0x97, 0x91, 0x7E,
-    0x8C, 0x01, 0x9C, 0x55, 0x2D, 0xA3, 0x2D, 0x39,
-    0xD2, 0x21, 0x9B, 0x9A, 0xBF, 0x0F, 0xA8, 0xC8
-  },
-  {
-    0x2F, 0xB9, 0xEB, 0x20, 0x85, 0x83, 0x01, 0x81,
-    0x90, 0x3A, 0x9D, 0xAF, 0xE3, 0xDB, 0x42, 0x8E,
-    0xE1, 0x5B, 0xE7, 0x66, 0x22, 0x24, 0xEF, 0xD6,
-    0x43, 0x37, 0x1F, 0xB2, 0x56, 0x46, 0xAE, 0xE7,
-    0x16, 0xE5, 0x31, 0xEC, 0xA6, 0x9B, 0x2B, 0xDC,
-    0x82, 0x33, 0xF1, 0xA8, 0x08, 0x1F, 0xA4, 0x3D,
-    0xA1, 0x50, 0x03, 0x02, 0x97, 0x5A, 0x77, 0xF4,
-    0x2F, 0xA5, 0x92, 0x13, 0x67, 0x10, 0xE9, 0xDC
-  },
-  {
-    0x66, 0xF9, 0xA7, 0x14, 0x3F, 0x7A, 0x33, 0x14,
-    0xA6, 0x69, 0xBF, 0x2E, 0x24, 0xBB, 0xB3, 0x50,
-    0x14, 0x26, 0x1D, 0x63, 0x9F, 0x49, 0x5B, 0x6C,
-    0x9C, 0x1F, 0x10, 0x4F, 0xE8, 0xE3, 0x20, 0xAC,
-    0xA6, 0x0D, 0x45, 0x50, 0xD6, 0x9D, 0x52, 0xED,
-    0xBD, 0x5A, 0x3C, 0xDE, 0xB4, 0x01, 0x4A, 0xE6,
-    0x5B, 0x1D, 0x87, 0xAA, 0x77, 0x0B, 0x69, 0xAE,
-    0x5C, 0x15, 0xF4, 0x33, 0x0B, 0x0B, 0x0A, 0xD8
-  },
-  {
-    0xF4, 0xC4, 0xDD, 0x1D, 0x59, 0x4C, 0x35, 0x65,
-    0xE3, 0xE2, 0x5C, 0xA4, 0x3D, 0xAD, 0x82, 0xF6,
-    0x2A, 0xBE, 0xA4, 0x83, 0x5E, 0xD4, 0xCD, 0x81,
-    0x1B, 0xCD, 0x97, 0x5E, 0x46, 0x27, 0x98, 0x28,
-    0xD4, 0x4D, 0x4C, 0x62, 0xC3, 0x67, 0x9F, 0x1B,
-    0x7F, 0x7B, 0x9D, 0xD4, 0x57, 0x1D, 0x7B, 0x49,
-    0x55, 0x73, 0x47, 0xB8, 0xC5, 0x46, 0x0C, 0xBD,
-    0xC1, 0xBE, 0xF6, 0x90, 0xFB, 0x2A, 0x08, 0xC0
-  },
-  {
-    0x8F, 0x1D, 0xC9, 0x64, 0x9C, 0x3A, 0x84, 0x55,
-    0x1F, 0x8F, 0x6E, 0x91, 0xCA, 0xC6, 0x82, 0x42,
-    0xA4, 0x3B, 0x1F, 0x8F, 0x32, 0x8E, 0xE9, 0x22,
-    0x80, 0x25, 0x73, 0x87, 0xFA, 0x75, 0x59, 0xAA,
-    0x6D, 0xB1, 0x2E, 0x4A, 0xEA, 0xDC, 0x2D, 0x26,
-    0x09, 0x91, 0x78, 0x74, 0x9C, 0x68, 0x64, 0xB3,
-    0x57, 0xF3, 0xF8, 0x3B, 0x2F, 0xB3, 0xEF, 0xA8,
-    0xD2, 0xA8, 0xDB, 0x05, 0x6B, 0xED, 0x6B, 0xCC
-  },
-  {
-    0x31, 0x39, 0xC1, 0xA7, 0xF9, 0x7A, 0xFD, 0x16,
-    0x75, 0xD4, 0x60, 0xEB, 0xBC, 0x07, 0xF2, 0x72,
-    0x8A, 0xA1, 0x50, 0xDF, 0x84, 0x96, 0x24, 0x51,
-    0x1E, 0xE0, 0x4B, 0x74, 0x3B, 0xA0, 0xA8, 0x33,
-    0x09, 0x2F, 0x18, 0xC1, 0x2D, 0xC9, 0x1B, 0x4D,
-    0xD2, 0x43, 0xF3, 0x33, 0x40, 0x2F, 0x59, 0xFE,
-    0x28, 0xAB, 0xDB, 0xBB, 0xAE, 0x30, 0x1E, 0x7B,
-    0x65, 0x9C, 0x7A, 0x26, 0xD5, 0xC0, 0xF9, 0x79
-  },
-  {
-    0x06, 0xF9, 0x4A, 0x29, 0x96, 0x15, 0x8A, 0x81,
-    0x9F, 0xE3, 0x4C, 0x40, 0xDE, 0x3C, 0xF0, 0x37,
-    0x9F, 0xD9, 0xFB, 0x85, 0xB3, 0xE3, 0x63, 0xBA,
-    0x39, 0x26, 0xA0, 0xE7, 0xD9, 0x60, 0xE3, 0xF4,
-    0xC2, 0xE0, 0xC7, 0x0C, 0x7C, 0xE0, 0xCC, 0xB2,
-    0xA6, 0x4F, 0xC2, 0x98, 0x69, 0xF6, 0xE7, 0xAB,
-    0x12, 0xBD, 0x4D, 0x3F, 0x14, 0xFC, 0xE9, 0x43,
-    0x27, 0x90, 0x27, 0xE7, 0x85, 0xFB, 0x5C, 0x29
-  },
-  {
-    0xC2, 0x9C, 0x39, 0x9E, 0xF3, 0xEE, 0xE8, 0x96,
-    0x1E, 0x87, 0x56, 0x5C, 0x1C, 0xE2, 0x63, 0x92,
-    0x5F, 0xC3, 0xD0, 0xCE, 0x26, 0x7D, 0x13, 0xE4,
-    0x8D, 0xD9, 0xE7, 0x32, 0xEE, 0x67, 0xB0, 0xF6,
-    0x9F, 0xAD, 0x56, 0x40, 0x1B, 0x0F, 0x10, 0xFC,
-    0xAA, 0xC1, 0x19, 0x20, 0x10, 0x46, 0xCC, 0xA2,
-    0x8C, 0x5B, 0x14, 0xAB, 0xDE, 0xA3, 0x21, 0x2A,
-    0xE6, 0x55, 0x62, 0xF7, 0xF1, 0x38, 0xDB, 0x3D
-  },
-  {
-    0x4C, 0xEC, 0x4C, 0x9D, 0xF5, 0x2E, 0xEF, 0x05,
-    0xC3, 0xF6, 0xFA, 0xAA, 0x97, 0x91, 0xBC, 0x74,
-    0x45, 0x93, 0x71, 0x83, 0x22, 0x4E, 0xCC, 0x37,
-    0xA1, 0xE5, 0x8D, 0x01, 0x32, 0xD3, 0x56, 0x17,
-    0x53, 0x1D, 0x7E, 0x79, 0x5F, 0x52, 0xAF, 0x7B,
-    0x1E, 0xB9, 0xD1, 0x47, 0xDE, 0x12, 0x92, 0xD3,
-    0x45, 0xFE, 0x34, 0x18, 0x23, 0xF8, 0xE6, 0xBC,
-    0x1E, 0x5B, 0xAD, 0xCA, 0x5C, 0x65, 0x61, 0x08
-  },
-  {
-    0x89, 0x8B, 0xFB, 0xAE, 0x93, 0xB3, 0xE1, 0x8D,
-    0x00, 0x69, 0x7E, 0xAB, 0x7D, 0x97, 0x04, 0xFA,
-    0x36, 0xEC, 0x33, 0x9D, 0x07, 0x61, 0x31, 0xCE,
-    0xFD, 0xF3, 0x0E, 0xDB, 0xE8, 0xD9, 0xCC, 0x81,
-    0xC3, 0xA8, 0x0B, 0x12, 0x96, 0x59, 0xB1, 0x63,
-    0xA3, 0x23, 0xBA, 0xB9, 0x79, 0x3D, 0x4F, 0xEE,
-    0xD9, 0x2D, 0x54, 0xDA, 0xE9, 0x66, 0xC7, 0x75,
-    0x29, 0x76, 0x4A, 0x09, 0xBE, 0x88, 0xDB, 0x45
-  },
-  {
-    0xEE, 0x9B, 0xD0, 0x46, 0x9D, 0x3A, 0xAF, 0x4F,
-    0x14, 0x03, 0x5B, 0xE4, 0x8A, 0x2C, 0x3B, 0x84,
-    0xD9, 0xB4, 0xB1, 0xFF, 0xF1, 0xD9, 0x45, 0xE1,
-    0xF1, 0xC1, 0xD3, 0x89, 0x80, 0xA9, 0x51, 0xBE,
-    0x19, 0x7B, 0x25, 0xFE, 0x22, 0xC7, 0x31, 0xF2,
-    0x0A, 0xEA, 0xCC, 0x93, 0x0B, 0xA9, 0xC4, 0xA1,
-    0xF4, 0x76, 0x22, 0x27, 0x61, 0x7A, 0xD3, 0x50,
-    0xFD, 0xAB, 0xB4, 0xE8, 0x02, 0x73, 0xA0, 0xF4
-  },
-  {
-    0x3D, 0x4D, 0x31, 0x13, 0x30, 0x05, 0x81, 0xCD,
-    0x96, 0xAC, 0xBF, 0x09, 0x1C, 0x3D, 0x0F, 0x3C,
-    0x31, 0x01, 0x38, 0xCD, 0x69, 0x79, 0xE6, 0x02,
-    0x6C, 0xDE, 0x62, 0x3E, 0x2D, 0xD1, 0xB2, 0x4D,
-    0x4A, 0x86, 0x38, 0xBE, 0xD1, 0x07, 0x33, 0x44,
-    0x78, 0x3A, 0xD0, 0x64, 0x9C, 0xC6, 0x30, 0x5C,
-    0xCE, 0xC0, 0x4B, 0xEB, 0x49, 0xF3, 0x1C, 0x63,
-    0x30, 0x88, 0xA9, 0x9B, 0x65, 0x13, 0x02, 0x67
-  },
-  {
-    0x95, 0xC0, 0x59, 0x1A, 0xD9, 0x1F, 0x92, 0x1A,
-    0xC7, 0xBE, 0x6D, 0x9C, 0xE3, 0x7E, 0x06, 0x63,
-    0xED, 0x80, 0x11, 0xC1, 0xCF, 0xD6, 0xD0, 0x16,
-    0x2A, 0x55, 0x72, 0xE9, 0x43, 0x68, 0xBA, 0xC0,
-    0x20, 0x24, 0x48, 0x5E, 0x6A, 0x39, 0x85, 0x4A,
-    0xA4, 0x6F, 0xE3, 0x8E, 0x97, 0xD6, 0xC6, 0xB1,
-    0x94, 0x7C, 0xD2, 0x72, 0xD8, 0x6B, 0x06, 0xBB,
-    0x5B, 0x2F, 0x78, 0xB9, 0xB6, 0x8D, 0x55, 0x9D
-  },
-  {
-    0x22, 0x7B, 0x79, 0xDE, 0xD3, 0x68, 0x15, 0x3B,
-    0xF4, 0x6C, 0x0A, 0x3C, 0xA9, 0x78, 0xBF, 0xDB,
-    0xEF, 0x31, 0xF3, 0x02, 0x4A, 0x56, 0x65, 0x84,
-    0x24, 0x68, 0x49, 0x0B, 0x0F, 0xF7, 0x48, 0xAE,
-    0x04, 0xE7, 0x83, 0x2E, 0xD4, 0xC9, 0xF4, 0x9D,
-    0xE9, 0xB1, 0x70, 0x67, 0x09, 0xD6, 0x23, 0xE5,
-    0xC8, 0xC1, 0x5E, 0x3C, 0xAE, 0xCA, 0xE8, 0xD5,
-    0xE4, 0x33, 0x43, 0x0F, 0xF7, 0x2F, 0x20, 0xEB
-  },
-  {
-    0x5D, 0x34, 0xF3, 0x95, 0x2F, 0x01, 0x05, 0xEE,
-    0xF8, 0x8A, 0xE8, 0xB6, 0x4C, 0x6C, 0xE9, 0x5E,
-    0xBF, 0xAD, 0xE0, 0xE0, 0x2C, 0x69, 0xB0, 0x87,
-    0x62, 0xA8, 0x71, 0x2D, 0x2E, 0x49, 0x11, 0xAD,
-    0x3F, 0x94, 0x1F, 0xC4, 0x03, 0x4D, 0xC9, 0xB2,
-    0xE4, 0x79, 0xFD, 0xBC, 0xD2, 0x79, 0xB9, 0x02,
-    0xFA, 0xF5, 0xD8, 0x38, 0xBB, 0x2E, 0x0C, 0x64,
-    0x95, 0xD3, 0x72, 0xB5, 0xB7, 0x02, 0x98, 0x13
-  },
-  {
-    0x7F, 0x93, 0x9B, 0xF8, 0x35, 0x3A, 0xBC, 0xE4,
-    0x9E, 0x77, 0xF1, 0x4F, 0x37, 0x50, 0xAF, 0x20,
-    0xB7, 0xB0, 0x39, 0x02, 0xE1, 0xA1, 0xE7, 0xFB,
-    0x6A, 0xAF, 0x76, 0xD0, 0x25, 0x9C, 0xD4, 0x01,
-    0xA8, 0x31, 0x90, 0xF1, 0x56, 0x40, 0xE7, 0x4F,
-    0x3E, 0x6C, 0x5A, 0x90, 0xE8, 0x39, 0xC7, 0x82,
-    0x1F, 0x64, 0x74, 0x75, 0x7F, 0x75, 0xC7, 0xBF,
-    0x90, 0x02, 0x08, 0x4D, 0xDC, 0x7A, 0x62, 0xDC
-  },
-  {
-    0x06, 0x2B, 0x61, 0xA2, 0xF9, 0xA3, 0x3A, 0x71,
-    0xD7, 0xD0, 0xA0, 0x61, 0x19, 0x64, 0x4C, 0x70,
-    0xB0, 0x71, 0x6A, 0x50, 0x4D, 0xE7, 0xE5, 0xE1,
-    0xBE, 0x49, 0xBD, 0x7B, 0x86, 0xE7, 0xED, 0x68,
-    0x17, 0x71, 0x4F, 0x9F, 0x0F, 0xC3, 0x13, 0xD0,
-    0x61, 0x29, 0x59, 0x7E, 0x9A, 0x22, 0x35, 0xEC,
-    0x85, 0x21, 0xDE, 0x36, 0xF7, 0x29, 0x0A, 0x90,
-    0xCC, 0xFC, 0x1F, 0xFA, 0x6D, 0x0A, 0xEE, 0x29
-  },
-  {
-    0xF2, 0x9E, 0x01, 0xEE, 0xAE, 0x64, 0x31, 0x1E,
-    0xB7, 0xF1, 0xC6, 0x42, 0x2F, 0x94, 0x6B, 0xF7,
-    0xBE, 0xA3, 0x63, 0x79, 0x52, 0x3E, 0x7B, 0x2B,
-    0xBA, 0xBA, 0x7D, 0x1D, 0x34, 0xA2, 0x2D, 0x5E,
-    0xA5, 0xF1, 0xC5, 0xA0, 0x9D, 0x5C, 0xE1, 0xFE,
-    0x68, 0x2C, 0xCE, 0xD9, 0xA4, 0x79, 0x8D, 0x1A,
-    0x05, 0xB4, 0x6C, 0xD7, 0x2D, 0xFF, 0x5C, 0x1B,
-    0x35, 0x54, 0x40, 0xB2, 0xA2, 0xD4, 0x76, 0xBC
-  },
-  {
-    0xEC, 0x38, 0xCD, 0x3B, 0xBA, 0xB3, 0xEF, 0x35,
-    0xD7, 0xCB, 0x6D, 0x5C, 0x91, 0x42, 0x98, 0x35,
-    0x1D, 0x8A, 0x9D, 0xC9, 0x7F, 0xCE, 0xE0, 0x51,
-    0xA8, 0xA0, 0x2F, 0x58, 0xE3, 0xED, 0x61, 0x84,
-    0xD0, 0xB7, 0x81, 0x0A, 0x56, 0x15, 0x41, 0x1A,
-    0xB1, 0xB9, 0x52, 0x09, 0xC3, 0xC8, 0x10, 0x11,
-    0x4F, 0xDE, 0xB2, 0x24, 0x52, 0x08, 0x4E, 0x77,
-    0xF3, 0xF8, 0x47, 0xC6, 0xDB, 0xAA, 0xFE, 0x16
-  },
-  {
-    0xC2, 0xAE, 0xF5, 0xE0, 0xCA, 0x43, 0xE8, 0x26,
-    0x41, 0x56, 0x5B, 0x8C, 0xB9, 0x43, 0xAA, 0x8B,
-    0xA5, 0x35, 0x50, 0xCA, 0xEF, 0x79, 0x3B, 0x65,
-    0x32, 0xFA, 0xFA, 0xD9, 0x4B, 0x81, 0x60, 0x82,
-    0xF0, 0x11, 0x3A, 0x3E, 0xA2, 0xF6, 0x36, 0x08,
-    0xAB, 0x40, 0x43, 0x7E, 0xCC, 0x0F, 0x02, 0x29,
-    0xCB, 0x8F, 0xA2, 0x24, 0xDC, 0xF1, 0xC4, 0x78,
-    0xA6, 0x7D, 0x9B, 0x64, 0x16, 0x2B, 0x92, 0xD1
-  },
-  {
-    0x15, 0xF5, 0x34, 0xEF, 0xFF, 0x71, 0x05, 0xCD,
-    0x1C, 0x25, 0x4D, 0x07, 0x4E, 0x27, 0xD5, 0x89,
-    0x8B, 0x89, 0x31, 0x3B, 0x7D, 0x36, 0x6D, 0xC2,
-    0xD7, 0xD8, 0x71, 0x13, 0xFA, 0x7D, 0x53, 0xAA,
-    0xE1, 0x3F, 0x6D, 0xBA, 0x48, 0x7A, 0xD8, 0x10,
-    0x3D, 0x5E, 0x85, 0x4C, 0x91, 0xFD, 0xB6, 0xE1,
-    0xE7, 0x4B, 0x2E, 0xF6, 0xD1, 0x43, 0x17, 0x69,
-    0xC3, 0x07, 0x67, 0xDD, 0xE0, 0x67, 0xA3, 0x5C
-  },
-  {
-    0x89, 0xAC, 0xBC, 0xA0, 0xB1, 0x69, 0x89, 0x7A,
-    0x0A, 0x27, 0x14, 0xC2, 0xDF, 0x8C, 0x95, 0xB5,
-    0xB7, 0x9C, 0xB6, 0x93, 0x90, 0x14, 0x2B, 0x7D,
-    0x60, 0x18, 0xBB, 0x3E, 0x30, 0x76, 0xB0, 0x99,
-    0xB7, 0x9A, 0x96, 0x41, 0x52, 0xA9, 0xD9, 0x12,
-    0xB1, 0xB8, 0x64, 0x12, 0xB7, 0xE3, 0x72, 0xE9,
-    0xCE, 0xCA, 0xD7, 0xF2, 0x5D, 0x4C, 0xBA, 0xB8,
-    0xA3, 0x17, 0xBE, 0x36, 0x49, 0x2A, 0x67, 0xD7
-  },
-  {
-    0xE3, 0xC0, 0x73, 0x91, 0x90, 0xED, 0x84, 0x9C,
-    0x9C, 0x96, 0x2F, 0xD9, 0xDB, 0xB5, 0x5E, 0x20,
-    0x7E, 0x62, 0x4F, 0xCA, 0xC1, 0xEB, 0x41, 0x76,
-    0x91, 0x51, 0x54, 0x99, 0xEE, 0xA8, 0xD8, 0x26,
-    0x7B, 0x7E, 0x8F, 0x12, 0x87, 0xA6, 0x36, 0x33,
-    0xAF, 0x50, 0x11, 0xFD, 0xE8, 0xC4, 0xDD, 0xF5,
-    0x5B, 0xFD, 0xF7, 0x22, 0xED, 0xF8, 0x88, 0x31,
-    0x41, 0x4F, 0x2C, 0xFA, 0xED, 0x59, 0xCB, 0x9A
-  },
-  {
-    0x8D, 0x6C, 0xF8, 0x7C, 0x08, 0x38, 0x0D, 0x2D,
-    0x15, 0x06, 0xEE, 0xE4, 0x6F, 0xD4, 0x22, 0x2D,
-    0x21, 0xD8, 0xC0, 0x4E, 0x58, 0x5F, 0xBF, 0xD0,
-    0x82, 0x69, 0xC9, 0x8F, 0x70, 0x28, 0x33, 0xA1,
-    0x56, 0x32, 0x6A, 0x07, 0x24, 0x65, 0x64, 0x00,
-    0xEE, 0x09, 0x35, 0x1D, 0x57, 0xB4, 0x40, 0x17,
-    0x5E, 0x2A, 0x5D, 0xE9, 0x3C, 0xC5, 0xF8, 0x0D,
-    0xB6, 0xDA, 0xF8, 0x35, 0x76, 0xCF, 0x75, 0xFA
-  },
-  {
-    0xDA, 0x24, 0xBE, 0xDE, 0x38, 0x36, 0x66, 0xD5,
-    0x63, 0xEE, 0xED, 0x37, 0xF6, 0x31, 0x9B, 0xAF,
-    0x20, 0xD5, 0xC7, 0x5D, 0x16, 0x35, 0xA6, 0xBA,
-    0x5E, 0xF4, 0xCF, 0xA1, 0xAC, 0x95, 0x48, 0x7E,
-    0x96, 0xF8, 0xC0, 0x8A, 0xF6, 0x00, 0xAA, 0xB8,
-    0x7C, 0x98, 0x6E, 0xBA, 0xD4, 0x9F, 0xC7, 0x0A,
-    0x58, 0xB4, 0x89, 0x0B, 0x9C, 0x87, 0x6E, 0x09,
-    0x10, 0x16, 0xDA, 0xF4, 0x9E, 0x1D, 0x32, 0x2E
-  },
-  {
-    0xF9, 0xD1, 0xD1, 0xB1, 0xE8, 0x7E, 0xA7, 0xAE,
-    0x75, 0x3A, 0x02, 0x97, 0x50, 0xCC, 0x1C, 0xF3,
-    0xD0, 0x15, 0x7D, 0x41, 0x80, 0x5E, 0x24, 0x5C,
-    0x56, 0x17, 0xBB, 0x93, 0x4E, 0x73, 0x2F, 0x0A,
-    0xE3, 0x18, 0x0B, 0x78, 0xE0, 0x5B, 0xFE, 0x76,
-    0xC7, 0xC3, 0x05, 0x1E, 0x3E, 0x3A, 0xC7, 0x8B,
-    0x9B, 0x50, 0xC0, 0x51, 0x42, 0x65, 0x7E, 0x1E,
-    0x03, 0x21, 0x5D, 0x6E, 0xC7, 0xBF, 0xD0, 0xFC
-  },
-  {
-    0x11, 0xB7, 0xBC, 0x16, 0x68, 0x03, 0x20, 0x48,
-    0xAA, 0x43, 0x34, 0x3D, 0xE4, 0x76, 0x39, 0x5E,
-    0x81, 0x4B, 0xBB, 0xC2, 0x23, 0x67, 0x8D, 0xB9,
-    0x51, 0xA1, 0xB0, 0x3A, 0x02, 0x1E, 0xFA, 0xC9,
-    0x48, 0xCF, 0xBE, 0x21, 0x5F, 0x97, 0xFE, 0x9A,
-    0x72, 0xA2, 0xF6, 0xBC, 0x03, 0x9E, 0x39, 0x56,
-    0xBF, 0xA4, 0x17, 0xC1, 0xA9, 0xF1, 0x0D, 0x6D,
-    0x7B, 0xA5, 0xD3, 0xD3, 0x2F, 0xF3, 0x23, 0xE5
-  },
-  {
-    0xB8, 0xD9, 0x00, 0x0E, 0x4F, 0xC2, 0xB0, 0x66,
-    0xED, 0xB9, 0x1A, 0xFE, 0xE8, 0xE7, 0xEB, 0x0F,
-    0x24, 0xE3, 0xA2, 0x01, 0xDB, 0x8B, 0x67, 0x93,
-    0xC0, 0x60, 0x85, 0x81, 0xE6, 0x28, 0xED, 0x0B,
-    0xCC, 0x4E, 0x5A, 0xA6, 0x78, 0x79, 0x92, 0xA4,
-    0xBC, 0xC4, 0x4E, 0x28, 0x80, 0x93, 0xE6, 0x3E,
-    0xE8, 0x3A, 0xBD, 0x0B, 0xC3, 0xEC, 0x6D, 0x09,
-    0x34, 0xA6, 0x74, 0xA4, 0xDA, 0x13, 0x83, 0x8A
-  },
-  {
-    0xCE, 0x32, 0x5E, 0x29, 0x4F, 0x9B, 0x67, 0x19,
-    0xD6, 0xB6, 0x12, 0x78, 0x27, 0x6A, 0xE0, 0x6A,
-    0x25, 0x64, 0xC0, 0x3B, 0xB0, 0xB7, 0x83, 0xFA,
-    0xFE, 0x78, 0x5B, 0xDF, 0x89, 0xC7, 0xD5, 0xAC,
-    0xD8, 0x3E, 0x78, 0x75, 0x6D, 0x30, 0x1B, 0x44,
-    0x56, 0x99, 0x02, 0x4E, 0xAE, 0xB7, 0x7B, 0x54,
-    0xD4, 0x77, 0x33, 0x6E, 0xC2, 0xA4, 0xF3, 0x32,
-    0xF2, 0xB3, 0xF8, 0x87, 0x65, 0xDD, 0xB0, 0xC3
-  },
-  {
-    0x29, 0xAC, 0xC3, 0x0E, 0x96, 0x03, 0xAE, 0x2F,
-    0xCC, 0xF9, 0x0B, 0xF9, 0x7E, 0x6C, 0xC4, 0x63,
-    0xEB, 0xE2, 0x8C, 0x1B, 0x2F, 0x9B, 0x4B, 0x76,
-    0x5E, 0x70, 0x53, 0x7C, 0x25, 0xC7, 0x02, 0xA2,
-    0x9D, 0xCB, 0xFB, 0xF1, 0x4C, 0x99, 0xC5, 0x43,
-    0x45, 0xBA, 0x2B, 0x51, 0xF1, 0x7B, 0x77, 0xB5,
-    0xF1, 0x5D, 0xB9, 0x2B, 0xBA, 0xD8, 0xFA, 0x95,
-    0xC4, 0x71, 0xF5, 0xD0, 0x70, 0xA1, 0x37, 0xCC
-  },
-  {
-    0x33, 0x79, 0xCB, 0xAA, 0xE5, 0x62, 0xA8, 0x7B,
-    0x4C, 0x04, 0x25, 0x55, 0x0F, 0xFD, 0xD6, 0xBF,
-    0xE1, 0x20, 0x3F, 0x0D, 0x66, 0x6C, 0xC7, 0xEA,
-    0x09, 0x5B, 0xE4, 0x07, 0xA5, 0xDF, 0xE6, 0x1E,
-    0xE9, 0x14, 0x41, 0xCD, 0x51, 0x54, 0xB3, 0xE5,
-    0x3B, 0x4F, 0x5F, 0xB3, 0x1A, 0xD4, 0xC7, 0xA9,
-    0xAD, 0x5C, 0x7A, 0xF4, 0xAE, 0x67, 0x9A, 0xA5,
-    0x1A, 0x54, 0x00, 0x3A, 0x54, 0xCA, 0x6B, 0x2D
-  },
-  {
-    0x30, 0x95, 0xA3, 0x49, 0xD2, 0x45, 0x70, 0x8C,
-    0x7C, 0xF5, 0x50, 0x11, 0x87, 0x03, 0xD7, 0x30,
-    0x2C, 0x27, 0xB6, 0x0A, 0xF5, 0xD4, 0xE6, 0x7F,
-    0xC9, 0x78, 0xF8, 0xA4, 0xE6, 0x09, 0x53, 0xC7,
-    0xA0, 0x4F, 0x92, 0xFC, 0xF4, 0x1A, 0xEE, 0x64,
-    0x32, 0x1C, 0xCB, 0x70, 0x7A, 0x89, 0x58, 0x51,
-    0x55, 0x2B, 0x1E, 0x37, 0xB0, 0x0B, 0xC5, 0xE6,
-    0xB7, 0x2F, 0xA5, 0xBC, 0xEF, 0x9E, 0x3F, 0xFF
-  },
-  {
-    0x07, 0x26, 0x2D, 0x73, 0x8B, 0x09, 0x32, 0x1F,
-    0x4D, 0xBC, 0xCE, 0xC4, 0xBB, 0x26, 0xF4, 0x8C,
-    0xB0, 0xF0, 0xED, 0x24, 0x6C, 0xE0, 0xB3, 0x1B,
-    0x9A, 0x6E, 0x7B, 0xC6, 0x83, 0x04, 0x9F, 0x1F,
-    0x3E, 0x55, 0x45, 0xF2, 0x8C, 0xE9, 0x32, 0xDD,
-    0x98, 0x5C, 0x5A, 0xB0, 0xF4, 0x3B, 0xD6, 0xDE,
-    0x07, 0x70, 0x56, 0x0A, 0xF3, 0x29, 0x06, 0x5E,
-    0xD2, 0xE4, 0x9D, 0x34, 0x62, 0x4C, 0x2C, 0xBB
-  },
-  {
-    0xB6, 0x40, 0x5E, 0xCA, 0x8E, 0xE3, 0x31, 0x6C,
-    0x87, 0x06, 0x1C, 0xC6, 0xEC, 0x18, 0xDB, 0xA5,
-    0x3E, 0x6C, 0x25, 0x0C, 0x63, 0xBA, 0x1F, 0x3B,
-    0xAE, 0x9E, 0x55, 0xDD, 0x34, 0x98, 0x03, 0x6A,
-    0xF0, 0x8C, 0xD2, 0x72, 0xAA, 0x24, 0xD7, 0x13,
-    0xC6, 0x02, 0x0D, 0x77, 0xAB, 0x2F, 0x39, 0x19,
-    0xAF, 0x1A, 0x32, 0xF3, 0x07, 0x42, 0x06, 0x18,
-    0xAB, 0x97, 0xE7, 0x39, 0x53, 0x99, 0x4F, 0xB4
-  },
-  {
-    0x7E, 0xE6, 0x82, 0xF6, 0x31, 0x48, 0xEE, 0x45,
-    0xF6, 0xE5, 0x31, 0x5D, 0xA8, 0x1E, 0x5C, 0x6E,
-    0x55, 0x7C, 0x2C, 0x34, 0x64, 0x1F, 0xC5, 0x09,
-    0xC7, 0xA5, 0x70, 0x10, 0x88, 0xC3, 0x8A, 0x74,
-    0x75, 0x61, 0x68, 0xE2, 0xCD, 0x8D, 0x35, 0x1E,
-    0x88, 0xFD, 0x1A, 0x45, 0x1F, 0x36, 0x0A, 0x01,
-    0xF5, 0xB2, 0x58, 0x0F, 0x9B, 0x5A, 0x2E, 0x8C,
-    0xFC, 0x13, 0x8F, 0x3D, 0xD5, 0x9A, 0x3F, 0xFC
-  },
-  {
-    0x1D, 0x26, 0x3C, 0x17, 0x9D, 0x6B, 0x26, 0x8F,
-    0x6F, 0xA0, 0x16, 0xF3, 0xA4, 0xF2, 0x9E, 0x94,
-    0x38, 0x91, 0x12, 0x5E, 0xD8, 0x59, 0x3C, 0x81,
-    0x25, 0x60, 0x59, 0xF5, 0xA7, 0xB4, 0x4A, 0xF2,
-    0xDC, 0xB2, 0x03, 0x0D, 0x17, 0x5C, 0x00, 0xE6,
-    0x2E, 0xCA, 0xF7, 0xEE, 0x96, 0x68, 0x2A, 0xA0,
-    0x7A, 0xB2, 0x0A, 0x61, 0x10, 0x24, 0xA2, 0x85,
-    0x32, 0xB1, 0xC2, 0x5B, 0x86, 0x65, 0x79, 0x02
-  },
-  {
-    0x10, 0x6D, 0x13, 0x2C, 0xBD, 0xB4, 0xCD, 0x25,
-    0x97, 0x81, 0x28, 0x46, 0xE2, 0xBC, 0x1B, 0xF7,
-    0x32, 0xFE, 0xC5, 0xF0, 0xA5, 0xF6, 0x5D, 0xBB,
-    0x39, 0xEC, 0x4E, 0x6D, 0xC6, 0x4A, 0xB2, 0xCE,
-    0x6D, 0x24, 0x63, 0x0D, 0x0F, 0x15, 0xA8, 0x05,
-    0xC3, 0x54, 0x00, 0x25, 0xD8, 0x4A, 0xFA, 0x98,
-    0xE3, 0x67, 0x03, 0xC3, 0xDB, 0xEE, 0x71, 0x3E,
-    0x72, 0xDD, 0xE8, 0x46, 0x5B, 0xC1, 0xBE, 0x7E
-  },
-  {
-    0x0E, 0x79, 0x96, 0x82, 0x26, 0x65, 0x06, 0x67,
-    0xA8, 0xD8, 0x62, 0xEA, 0x8D, 0xA4, 0x89, 0x1A,
-    0xF5, 0x6A, 0x4E, 0x3A, 0x8B, 0x6D, 0x17, 0x50,
-    0xE3, 0x94, 0xF0, 0xDE, 0xA7, 0x6D, 0x64, 0x0D,
-    0x85, 0x07, 0x7B, 0xCE, 0xC2, 0xCC, 0x86, 0x88,
-    0x6E, 0x50, 0x67, 0x51, 0xB4, 0xF6, 0xA5, 0x83,
-    0x8F, 0x7F, 0x0B, 0x5F, 0xEF, 0x76, 0x5D, 0x9D,
-    0xC9, 0x0D, 0xCD, 0xCB, 0xAF, 0x07, 0x9F, 0x08
-  },
-  {
-    0x52, 0x11, 0x56, 0xA8, 0x2A, 0xB0, 0xC4, 0xE5,
-    0x66, 0xE5, 0x84, 0x4D, 0x5E, 0x31, 0xAD, 0x9A,
-    0xAF, 0x14, 0x4B, 0xBD, 0x5A, 0x46, 0x4F, 0xDC,
-    0xA3, 0x4D, 0xBD, 0x57, 0x17, 0xE8, 0xFF, 0x71,
-    0x1D, 0x3F, 0xFE, 0xBB, 0xFA, 0x08, 0x5D, 0x67,
-    0xFE, 0x99, 0x6A, 0x34, 0xF6, 0xD3, 0xE4, 0xE6,
-    0x0B, 0x13, 0x96, 0xBF, 0x4B, 0x16, 0x10, 0xC2,
-    0x63, 0xBD, 0xBB, 0x83, 0x4D, 0x56, 0x08, 0x16
-  },
-  {
-    0x1A, 0xBA, 0x88, 0xBE, 0xFC, 0x55, 0xBC, 0x25,
-    0xEF, 0xBC, 0xE0, 0x2D, 0xB8, 0xB9, 0x93, 0x3E,
-    0x46, 0xF5, 0x76, 0x61, 0xBA, 0xEA, 0xBE, 0xB2,
-    0x1C, 0xC2, 0x57, 0x4D, 0x2A, 0x51, 0x8A, 0x3C,
-    0xBA, 0x5D, 0xC5, 0xA3, 0x8E, 0x49, 0x71, 0x34,
-    0x40, 0xB2, 0x5F, 0x9C, 0x74, 0x4E, 0x75, 0xF6,
-    0xB8, 0x5C, 0x9D, 0x8F, 0x46, 0x81, 0xF6, 0x76,
-    0x16, 0x0F, 0x61, 0x05, 0x35, 0x7B, 0x84, 0x06
-  },
-  {
-    0x5A, 0x99, 0x49, 0xFC, 0xB2, 0xC4, 0x73, 0xCD,
-    0xA9, 0x68, 0xAC, 0x1B, 0x5D, 0x08, 0x56, 0x6D,
-    0xC2, 0xD8, 0x16, 0xD9, 0x60, 0xF5, 0x7E, 0x63,
-    0xB8, 0x98, 0xFA, 0x70, 0x1C, 0xF8, 0xEB, 0xD3,
-    0xF5, 0x9B, 0x12, 0x4D, 0x95, 0xBF, 0xBB, 0xED,
-    0xC5, 0xF1, 0xCF, 0x0E, 0x17, 0xD5, 0xEA, 0xED,
-    0x0C, 0x02, 0xC5, 0x0B, 0x69, 0xD8, 0xA4, 0x02,
-    0xCA, 0xBC, 0xCA, 0x44, 0x33, 0xB5, 0x1F, 0xD4
-  },
-  {
-    0xB0, 0xCE, 0xAD, 0x09, 0x80, 0x7C, 0x67, 0x2A,
-    0xF2, 0xEB, 0x2B, 0x0F, 0x06, 0xDD, 0xE4, 0x6C,
-    0xF5, 0x37, 0x0E, 0x15, 0xA4, 0x09, 0x6B, 0x1A,
-    0x7D, 0x7C, 0xBB, 0x36, 0xEC, 0x31, 0xC2, 0x05,
-    0xFB, 0xEF, 0xCA, 0x00, 0xB7, 0xA4, 0x16, 0x2F,
-    0xA8, 0x9F, 0xB4, 0xFB, 0x3E, 0xB7, 0x8D, 0x79,
-    0x77, 0x0C, 0x23, 0xF4, 0x4E, 0x72, 0x06, 0x66,
-    0x4C, 0xE3, 0xCD, 0x93, 0x1C, 0x29, 0x1E, 0x5D
-  },
-  {
-    0xBB, 0x66, 0x64, 0x93, 0x1E, 0xC9, 0x70, 0x44,
-    0xE4, 0x5B, 0x2A, 0xE4, 0x20, 0xAE, 0x1C, 0x55,
-    0x1A, 0x88, 0x74, 0xBC, 0x93, 0x7D, 0x08, 0xE9,
-    0x69, 0x39, 0x9C, 0x39, 0x64, 0xEB, 0xDB, 0xA8,
-    0x34, 0x6C, 0xDD, 0x5D, 0x09, 0xCA, 0xAF, 0xE4,
-    0xC2, 0x8B, 0xA7, 0xEC, 0x78, 0x81, 0x91, 0xCE,
-    0xCA, 0x65, 0xDD, 0xD6, 0xF9, 0x5F, 0x18, 0x58,
-    0x3E, 0x04, 0x0D, 0x0F, 0x30, 0xD0, 0x36, 0x4D
-  },
-  {
-    0x65, 0xBC, 0x77, 0x0A, 0x5F, 0xAA, 0x37, 0x92,
-    0x36, 0x98, 0x03, 0x68, 0x3E, 0x84, 0x4B, 0x0B,
-    0xE7, 0xEE, 0x96, 0xF2, 0x9F, 0x6D, 0x6A, 0x35,
-    0x56, 0x80, 0x06, 0xBD, 0x55, 0x90, 0xF9, 0xA4,
-    0xEF, 0x63, 0x9B, 0x7A, 0x80, 0x61, 0xC7, 0xB0,
-    0x42, 0x4B, 0x66, 0xB6, 0x0A, 0xC3, 0x4A, 0xF3,
-    0x11, 0x99, 0x05, 0xF3, 0x3A, 0x9D, 0x8C, 0x3A,
-    0xE1, 0x83, 0x82, 0xCA, 0x9B, 0x68, 0x99, 0x00
-  },
-  {
-    0xEA, 0x9B, 0x4D, 0xCA, 0x33, 0x33, 0x36, 0xAA,
-    0xF8, 0x39, 0xA4, 0x5C, 0x6E, 0xAA, 0x48, 0xB8,
-    0xCB, 0x4C, 0x7D, 0xDA, 0xBF, 0xFE, 0xA4, 0xF6,
-    0x43, 0xD6, 0x35, 0x7E, 0xA6, 0x62, 0x8A, 0x48,
-    0x0A, 0x5B, 0x45, 0xF2, 0xB0, 0x52, 0xC1, 0xB0,
-    0x7D, 0x1F, 0xED, 0xCA, 0x91, 0x8B, 0x6F, 0x11,
-    0x39, 0xD8, 0x0F, 0x74, 0xC2, 0x45, 0x10, 0xDC,
-    0xBA, 0xA4, 0xBE, 0x70, 0xEA, 0xCC, 0x1B, 0x06
-  },
-  {
-    0xE6, 0x34, 0x2F, 0xB4, 0xA7, 0x80, 0xAD, 0x97,
-    0x5D, 0x0E, 0x24, 0xBC, 0xE1, 0x49, 0x98, 0x9B,
-    0x91, 0xD3, 0x60, 0x55, 0x7E, 0x87, 0x99, 0x4F,
-    0x6B, 0x45, 0x7B, 0x89, 0x55, 0x75, 0xCC, 0x02,
-    0xD0, 0xC1, 0x5B, 0xAD, 0x3C, 0xE7, 0x57, 0x7F,
-    0x4C, 0x63, 0x92, 0x7F, 0xF1, 0x3F, 0x3E, 0x38,
-    0x1F, 0xF7, 0xE7, 0x2B, 0xDB, 0xE7, 0x45, 0x32,
-    0x48, 0x44, 0xA9, 0xD2, 0x7E, 0x3F, 0x1C, 0x01
-  },
-  {
-    0x3E, 0x20, 0x9C, 0x9B, 0x33, 0xE8, 0xE4, 0x61,
-    0x17, 0x8A, 0xB4, 0x6B, 0x1C, 0x64, 0xB4, 0x9A,
-    0x07, 0xFB, 0x74, 0x5F, 0x1C, 0x8B, 0xC9, 0x5F,
-    0xBF, 0xB9, 0x4C, 0x6B, 0x87, 0xC6, 0x95, 0x16,
-    0x65, 0x1B, 0x26, 0x4E, 0xF9, 0x80, 0x93, 0x7F,
-    0xAD, 0x41, 0x23, 0x8B, 0x91, 0xDD, 0xC0, 0x11,
-    0xA5, 0xDD, 0x77, 0x7C, 0x7E, 0xFD, 0x44, 0x94,
-    0xB4, 0xB6, 0xEC, 0xD3, 0xA9, 0xC2, 0x2A, 0xC0
-  },
-  {
-    0xFD, 0x6A, 0x3D, 0x5B, 0x18, 0x75, 0xD8, 0x04,
-    0x86, 0xD6, 0xE6, 0x96, 0x94, 0xA5, 0x6D, 0xBB,
-    0x04, 0xA9, 0x9A, 0x4D, 0x05, 0x1F, 0x15, 0xDB,
-    0x26, 0x89, 0x77, 0x6B, 0xA1, 0xC4, 0x88, 0x2E,
-    0x6D, 0x46, 0x2A, 0x60, 0x3B, 0x70, 0x15, 0xDC,
-    0x9F, 0x4B, 0x74, 0x50, 0xF0, 0x53, 0x94, 0x30,
-    0x3B, 0x86, 0x52, 0xCF, 0xB4, 0x04, 0xA2, 0x66,
-    0x96, 0x2C, 0x41, 0xBA, 0xE6, 0xE1, 0x8A, 0x94
-  },
-  {
-    0x95, 0x1E, 0x27, 0x51, 0x7E, 0x6B, 0xAD, 0x9E,
-    0x41, 0x95, 0xFC, 0x86, 0x71, 0xDE, 0xE3, 0xE7,
-    0xE9, 0xBE, 0x69, 0xCE, 0xE1, 0x42, 0x2C, 0xB9,
-    0xFE, 0xCF, 0xCE, 0x0D, 0xBA, 0x87, 0x5F, 0x7B,
-    0x31, 0x0B, 0x93, 0xEE, 0x3A, 0x3D, 0x55, 0x8F,
-    0x94, 0x1F, 0x63, 0x5F, 0x66, 0x8F, 0xF8, 0x32,
-    0xD2, 0xC1, 0xD0, 0x33, 0xC5, 0xE2, 0xF0, 0x99,
-    0x7E, 0x4C, 0x66, 0xF1, 0x47, 0x34, 0x4E, 0x02
-  },
-  {
-    0x8E, 0xBA, 0x2F, 0x87, 0x4F, 0x1A, 0xE8, 0x40,
-    0x41, 0x90, 0x3C, 0x7C, 0x42, 0x53, 0xC8, 0x22,
-    0x92, 0x53, 0x0F, 0xC8, 0x50, 0x95, 0x50, 0xBF,
-    0xDC, 0x34, 0xC9, 0x5C, 0x7E, 0x28, 0x89, 0xD5,
-    0x65, 0x0B, 0x0A, 0xD8, 0xCB, 0x98, 0x8E, 0x5C,
-    0x48, 0x94, 0xCB, 0x87, 0xFB, 0xFB, 0xB1, 0x96,
-    0x12, 0xEA, 0x93, 0xCC, 0xC4, 0xC5, 0xCA, 0xD1,
-    0x71, 0x58, 0xB9, 0x76, 0x34, 0x64, 0xB4, 0x92
-  },
-  {
-    0x16, 0xF7, 0x12, 0xEA, 0xA1, 0xB7, 0xC6, 0x35,
-    0x47, 0x19, 0xA8, 0xE7, 0xDB, 0xDF, 0xAF, 0x55,
-    0xE4, 0x06, 0x3A, 0x4D, 0x27, 0x7D, 0x94, 0x75,
-    0x50, 0x01, 0x9B, 0x38, 0xDF, 0xB5, 0x64, 0x83,
-    0x09, 0x11, 0x05, 0x7D, 0x50, 0x50, 0x61, 0x36,
-    0xE2, 0x39, 0x4C, 0x3B, 0x28, 0x94, 0x5C, 0xC9,
-    0x64, 0x96, 0x7D, 0x54, 0xE3, 0x00, 0x0C, 0x21,
-    0x81, 0x62, 0x6C, 0xFB, 0x9B, 0x73, 0xEF, 0xD2
-  },
-  {
-    0xC3, 0x96, 0x39, 0xE7, 0xD5, 0xC7, 0xFB, 0x8C,
-    0xDD, 0x0F, 0xD3, 0xE6, 0xA5, 0x20, 0x96, 0x03,
-    0x94, 0x37, 0x12, 0x2F, 0x21, 0xC7, 0x8F, 0x16,
-    0x79, 0xCE, 0xA9, 0xD7, 0x8A, 0x73, 0x4C, 0x56,
-    0xEC, 0xBE, 0xB2, 0x86, 0x54, 0xB4, 0xF1, 0x8E,
-    0x34, 0x2C, 0x33, 0x1F, 0x6F, 0x72, 0x29, 0xEC,
-    0x4B, 0x4B, 0xC2, 0x81, 0xB2, 0xD8, 0x0A, 0x6E,
-    0xB5, 0x00, 0x43, 0xF3, 0x17, 0x96, 0xC8, 0x8C
-  },
-  {
-    0x72, 0xD0, 0x81, 0xAF, 0x99, 0xF8, 0xA1, 0x73,
-    0xDC, 0xC9, 0xA0, 0xAC, 0x4E, 0xB3, 0x55, 0x74,
-    0x05, 0x63, 0x9A, 0x29, 0x08, 0x4B, 0x54, 0xA4,
-    0x01, 0x72, 0x91, 0x2A, 0x2F, 0x8A, 0x39, 0x51,
-    0x29, 0xD5, 0x53, 0x6F, 0x09, 0x18, 0xE9, 0x02,
-    0xF9, 0xE8, 0xFA, 0x60, 0x00, 0x99, 0x5F, 0x41,
-    0x68, 0xDD, 0xC5, 0xF8, 0x93, 0x01, 0x1B, 0xE6,
-    0xA0, 0xDB, 0xC9, 0xB8, 0xA1, 0xA3, 0xF5, 0xBB
-  },
-  {
-    0xC1, 0x1A, 0xA8, 0x1E, 0x5E, 0xFD, 0x24, 0xD5,
-    0xFC, 0x27, 0xEE, 0x58, 0x6C, 0xFD, 0x88, 0x47,
-    0xFB, 0xB0, 0xE2, 0x76, 0x01, 0xCC, 0xEC, 0xE5,
-    0xEC, 0xCA, 0x01, 0x98, 0xE3, 0xC7, 0x76, 0x53,
-    0x93, 0xBB, 0x74, 0x45, 0x7C, 0x7E, 0x7A, 0x27,
-    0xEB, 0x91, 0x70, 0x35, 0x0E, 0x1F, 0xB5, 0x38,
-    0x57, 0x17, 0x75, 0x06, 0xBE, 0x3E, 0x76, 0x2C,
-    0xC0, 0xF1, 0x4D, 0x8C, 0x3A, 0xFE, 0x90, 0x77
-  },
-  {
-    0xC2, 0x8F, 0x21, 0x50, 0xB4, 0x52, 0xE6, 0xC0,
-    0xC4, 0x24, 0xBC, 0xDE, 0x6F, 0x8D, 0x72, 0x00,
-    0x7F, 0x93, 0x10, 0xFE, 0xD7, 0xF2, 0xF8, 0x7D,
-    0xE0, 0xDB, 0xB6, 0x4F, 0x44, 0x79, 0xD6, 0xC1,
-    0x44, 0x1B, 0xA6, 0x6F, 0x44, 0xB2, 0xAC, 0xCE,
-    0xE6, 0x16, 0x09, 0x17, 0x7E, 0xD3, 0x40, 0x12,
-    0x8B, 0x40, 0x7E, 0xCE, 0xC7, 0xC6, 0x4B, 0xBE,
-    0x50, 0xD6, 0x3D, 0x22, 0xD8, 0x62, 0x77, 0x27
-  },
-  {
-    0xF6, 0x3D, 0x88, 0x12, 0x28, 0x77, 0xEC, 0x30,
-    0xB8, 0xC8, 0xB0, 0x0D, 0x22, 0xE8, 0x90, 0x00,
-    0xA9, 0x66, 0x42, 0x61, 0x12, 0xBD, 0x44, 0x16,
-    0x6E, 0x2F, 0x52, 0x5B, 0x76, 0x9C, 0xCB, 0xE9,
-    0xB2, 0x86, 0xD4, 0x37, 0xA0, 0x12, 0x91, 0x30,
-    0xDD, 0xE1, 0xA8, 0x6C, 0x43, 0xE0, 0x4B, 0xED,
-    0xB5, 0x94, 0xE6, 0x71, 0xD9, 0x82, 0x83, 0xAF,
-    0xE6, 0x4C, 0xE3, 0x31, 0xDE, 0x98, 0x28, 0xFD
-  },
-  {
-    0x34, 0x8B, 0x05, 0x32, 0x88, 0x0B, 0x88, 0xA6,
-    0x61, 0x4A, 0x8D, 0x74, 0x08, 0xC3, 0xF9, 0x13,
-    0x35, 0x7F, 0xBB, 0x60, 0xE9, 0x95, 0xC6, 0x02,
-    0x05, 0xBE, 0x91, 0x39, 0xE7, 0x49, 0x98, 0xAE,
-    0xDE, 0x7F, 0x45, 0x81, 0xE4, 0x2F, 0x6B, 0x52,
-    0x69, 0x8F, 0x7F, 0xA1, 0x21, 0x97, 0x08, 0xC1,
-    0x44, 0x98, 0x06, 0x7F, 0xD1, 0xE0, 0x95, 0x02,
-    0xDE, 0x83, 0xA7, 0x7D, 0xD2, 0x81, 0x15, 0x0C
-  },
-  {
-    0x51, 0x33, 0xDC, 0x8B, 0xEF, 0x72, 0x53, 0x59,
-    0xDF, 0xF5, 0x97, 0x92, 0xD8, 0x5E, 0xAF, 0x75,
-    0xB7, 0xE1, 0xDC, 0xD1, 0x97, 0x8B, 0x01, 0xC3,
-    0x5B, 0x1B, 0x85, 0xFC, 0xEB, 0xC6, 0x33, 0x88,
-    0xAD, 0x99, 0xA1, 0x7B, 0x63, 0x46, 0xA2, 0x17,
-    0xDC, 0x1A, 0x96, 0x22, 0xEB, 0xD1, 0x22, 0xEC,
-    0xF6, 0x91, 0x3C, 0x4D, 0x31, 0xA6, 0xB5, 0x2A,
-    0x69, 0x5B, 0x86, 0xAF, 0x00, 0xD7, 0x41, 0xA0
-  },
-  {
-    0x27, 0x53, 0xC4, 0xC0, 0xE9, 0x8E, 0xCA, 0xD8,
-    0x06, 0xE8, 0x87, 0x80, 0xEC, 0x27, 0xFC, 0xCD,
-    0x0F, 0x5C, 0x1A, 0xB5, 0x47, 0xF9, 0xE4, 0xBF,
-    0x16, 0x59, 0xD1, 0x92, 0xC2, 0x3A, 0xA2, 0xCC,
-    0x97, 0x1B, 0x58, 0xB6, 0x80, 0x25, 0x80, 0xBA,
-    0xEF, 0x8A, 0xDC, 0x3B, 0x77, 0x6E, 0xF7, 0x08,
-    0x6B, 0x25, 0x45, 0xC2, 0x98, 0x7F, 0x34, 0x8E,
-    0xE3, 0x71, 0x9C, 0xDE, 0xF2, 0x58, 0xC4, 0x03
-  },
-  {
-    0xB1, 0x66, 0x35, 0x73, 0xCE, 0x4B, 0x9D, 0x8C,
-    0xAE, 0xFC, 0x86, 0x50, 0x12, 0xF3, 0xE3, 0x97,
-    0x14, 0xB9, 0x89, 0x8A, 0x5D, 0xA6, 0xCE, 0x17,
-    0xC2, 0x5A, 0x6A, 0x47, 0x93, 0x1A, 0x9D, 0xDB,
-    0x9B, 0xBE, 0x98, 0xAD, 0xAA, 0x55, 0x3B, 0xEE,
-    0xD4, 0x36, 0xE8, 0x95, 0x78, 0x45, 0x54, 0x16,
-    0xC2, 0xA5, 0x2A, 0x52, 0x5C, 0xF2, 0x86, 0x2B,
-    0x8D, 0x1D, 0x49, 0xA2, 0x53, 0x1B, 0x73, 0x91
-  },
-  {
-    0x64, 0xF5, 0x8B, 0xD6, 0xBF, 0xC8, 0x56, 0xF5,
-    0xE8, 0x73, 0xB2, 0xA2, 0x95, 0x6E, 0xA0, 0xED,
-    0xA0, 0xD6, 0xDB, 0x0D, 0xA3, 0x9C, 0x8C, 0x7F,
-    0xC6, 0x7C, 0x9F, 0x9F, 0xEE, 0xFC, 0xFF, 0x30,
-    0x72, 0xCD, 0xF9, 0xE6, 0xEA, 0x37, 0xF6, 0x9A,
-    0x44, 0xF0, 0xC6, 0x1A, 0xA0, 0xDA, 0x36, 0x93,
-    0xC2, 0xDB, 0x5B, 0x54, 0x96, 0x0C, 0x02, 0x81,
-    0xA0, 0x88, 0x15, 0x1D, 0xB4, 0x2B, 0x11, 0xE8
-  },
-  {
-    0x07, 0x64, 0xC7, 0xBE, 0x28, 0x12, 0x5D, 0x90,
-    0x65, 0xC4, 0xB9, 0x8A, 0x69, 0xD6, 0x0A, 0xED,
-    0xE7, 0x03, 0x54, 0x7C, 0x66, 0xA1, 0x2E, 0x17,
-    0xE1, 0xC6, 0x18, 0x99, 0x41, 0x32, 0xF5, 0xEF,
-    0x82, 0x48, 0x2C, 0x1E, 0x3F, 0xE3, 0x14, 0x6C,
-    0xC6, 0x53, 0x76, 0xCC, 0x10, 0x9F, 0x01, 0x38,
-    0xED, 0x9A, 0x80, 0xE4, 0x9F, 0x1F, 0x3C, 0x7D,
-    0x61, 0x0D, 0x2F, 0x24, 0x32, 0xF2, 0x06, 0x05
-  },
-  {
-    0xF7, 0x48, 0x78, 0x43, 0x98, 0xA2, 0xFF, 0x03,
-    0xEB, 0xEB, 0x07, 0xE1, 0x55, 0xE6, 0x61, 0x16,
-    0xA8, 0x39, 0x74, 0x1A, 0x33, 0x6E, 0x32, 0xDA,
-    0x71, 0xEC, 0x69, 0x60, 0x01, 0xF0, 0xAD, 0x1B,
-    0x25, 0xCD, 0x48, 0xC6, 0x9C, 0xFC, 0xA7, 0x26,
-    0x5E, 0xCA, 0x1D, 0xD7, 0x19, 0x04, 0xA0, 0xCE,
-    0x74, 0x8A, 0xC4, 0x12, 0x4F, 0x35, 0x71, 0x07,
-    0x6D, 0xFA, 0x71, 0x16, 0xA9, 0xCF, 0x00, 0xE9
-  },
-  {
-    0x3F, 0x0D, 0xBC, 0x01, 0x86, 0xBC, 0xEB, 0x6B,
-    0x78, 0x5B, 0xA7, 0x8D, 0x2A, 0x2A, 0x01, 0x3C,
-    0x91, 0x0B, 0xE1, 0x57, 0xBD, 0xAF, 0xFA, 0xE8,
-    0x1B, 0xB6, 0x66, 0x3B, 0x1A, 0x73, 0x72, 0x2F,
-    0x7F, 0x12, 0x28, 0x79, 0x5F, 0x3E, 0xCA, 0xDA,
-    0x87, 0xCF, 0x6E, 0xF0, 0x07, 0x84, 0x74, 0xAF,
-    0x73, 0xF3, 0x1E, 0xCA, 0x0C, 0xC2, 0x00, 0xED,
-    0x97, 0x5B, 0x68, 0x93, 0xF7, 0x61, 0xCB, 0x6D
-  },
-  {
-    0xD4, 0x76, 0x2C, 0xD4, 0x59, 0x98, 0x76, 0xCA,
-    0x75, 0xB2, 0xB8, 0xFE, 0x24, 0x99, 0x44, 0xDB,
-    0xD2, 0x7A, 0xCE, 0x74, 0x1F, 0xDA, 0xB9, 0x36,
-    0x16, 0xCB, 0xC6, 0xE4, 0x25, 0x46, 0x0F, 0xEB,
-    0x51, 0xD4, 0xE7, 0xAD, 0xCC, 0x38, 0x18, 0x0E,
-    0x7F, 0xC4, 0x7C, 0x89, 0x02, 0x4A, 0x7F, 0x56,
-    0x19, 0x1A, 0xDB, 0x87, 0x8D, 0xFD, 0xE4, 0xEA,
-    0xD6, 0x22, 0x23, 0xF5, 0xA2, 0x61, 0x0E, 0xFE
-  },
-  {
-    0xCD, 0x36, 0xB3, 0xD5, 0xB4, 0xC9, 0x1B, 0x90,
-    0xFC, 0xBB, 0xA7, 0x95, 0x13, 0xCF, 0xEE, 0x19,
-    0x07, 0xD8, 0x64, 0x5A, 0x16, 0x2A, 0xFD, 0x0C,
-    0xD4, 0xCF, 0x41, 0x92, 0xD4, 0xA5, 0xF4, 0xC8,
-    0x92, 0x18, 0x3A, 0x8E, 0xAC, 0xDB, 0x2B, 0x6B,
-    0x6A, 0x9D, 0x9A, 0xA8, 0xC1, 0x1A, 0xC1, 0xB2,
-    0x61, 0xB3, 0x80, 0xDB, 0xEE, 0x24, 0xCA, 0x46,
-    0x8F, 0x1B, 0xFD, 0x04, 0x3C, 0x58, 0xEE, 0xFE
-  },
-  {
-    0x98, 0x59, 0x34, 0x52, 0x28, 0x16, 0x61, 0xA5,
-    0x3C, 0x48, 0xA9, 0xD8, 0xCD, 0x79, 0x08, 0x26,
-    0xC1, 0xA1, 0xCE, 0x56, 0x77, 0x38, 0x05, 0x3D,
-    0x0B, 0xEE, 0x4A, 0x91, 0xA3, 0xD5, 0xBD, 0x92,
-    0xEE, 0xFD, 0xBA, 0xBE, 0xBE, 0x32, 0x04, 0xF2,
-    0x03, 0x1C, 0xA5, 0xF7, 0x81, 0xBD, 0xA9, 0x9E,
-    0xF5, 0xD8, 0xAE, 0x56, 0xE5, 0xB0, 0x4A, 0x9E,
-    0x1E, 0xCD, 0x21, 0xB0, 0xEB, 0x05, 0xD3, 0xE1
-  },
-  {
-    0x77, 0x1F, 0x57, 0xDD, 0x27, 0x75, 0xCC, 0xDA,
-    0xB5, 0x59, 0x21, 0xD3, 0xE8, 0xE3, 0x0C, 0xCF,
-    0x48, 0x4D, 0x61, 0xFE, 0x1C, 0x1B, 0x9C, 0x2A,
-    0xE8, 0x19, 0xD0, 0xFB, 0x2A, 0x12, 0xFA, 0xB9,
-    0xBE, 0x70, 0xC4, 0xA7, 0xA1, 0x38, 0xDA, 0x84,
-    0xE8, 0x28, 0x04, 0x35, 0xDA, 0xAD, 0xE5, 0xBB,
-    0xE6, 0x6A, 0xF0, 0x83, 0x6A, 0x15, 0x4F, 0x81,
-    0x7F, 0xB1, 0x7F, 0x33, 0x97, 0xE7, 0x25, 0xA3
-  },
-  {
-    0xC6, 0x08, 0x97, 0xC6, 0xF8, 0x28, 0xE2, 0x1F,
-    0x16, 0xFB, 0xB5, 0xF1, 0x5B, 0x32, 0x3F, 0x87,
-    0xB6, 0xC8, 0x95, 0x5E, 0xAB, 0xF1, 0xD3, 0x80,
-    0x61, 0xF7, 0x07, 0xF6, 0x08, 0xAB, 0xDD, 0x99,
-    0x3F, 0xAC, 0x30, 0x70, 0x63, 0x3E, 0x28, 0x6C,
-    0xF8, 0x33, 0x9C, 0xE2, 0x95, 0xDD, 0x35, 0x2D,
-    0xF4, 0xB4, 0xB4, 0x0B, 0x2F, 0x29, 0xDA, 0x1D,
-    0xD5, 0x0B, 0x3A, 0x05, 0xD0, 0x79, 0xE6, 0xBB
-  },
-  {
-    0x82, 0x10, 0xCD, 0x2C, 0x2D, 0x3B, 0x13, 0x5C,
-    0x2C, 0xF0, 0x7F, 0xA0, 0xD1, 0x43, 0x3C, 0xD7,
-    0x71, 0xF3, 0x25, 0xD0, 0x75, 0xC6, 0x46, 0x9D,
-    0x9C, 0x7F, 0x1B, 0xA0, 0x94, 0x3C, 0xD4, 0xAB,
-    0x09, 0x80, 0x8C, 0xAB, 0xF4, 0xAC, 0xB9, 0xCE,
-    0x5B, 0xB8, 0x8B, 0x49, 0x89, 0x29, 0xB4, 0xB8,
-    0x47, 0xF6, 0x81, 0xAD, 0x2C, 0x49, 0x0D, 0x04,
-    0x2D, 0xB2, 0xAE, 0xC9, 0x42, 0x14, 0xB0, 0x6B
-  },
-  {
-    0x1D, 0x4E, 0xDF, 0xFF, 0xD8, 0xFD, 0x80, 0xF7,
-    0xE4, 0x10, 0x78, 0x40, 0xFA, 0x3A, 0xA3, 0x1E,
-    0x32, 0x59, 0x84, 0x91, 0xE4, 0xAF, 0x70, 0x13,
-    0xC1, 0x97, 0xA6, 0x5B, 0x7F, 0x36, 0xDD, 0x3A,
-    0xC4, 0xB4, 0x78, 0x45, 0x61, 0x11, 0xCD, 0x43,
-    0x09, 0xD9, 0x24, 0x35, 0x10, 0x78, 0x2F, 0xA3,
-    0x1B, 0x7C, 0x4C, 0x95, 0xFA, 0x95, 0x15, 0x20,
-    0xD0, 0x20, 0xEB, 0x7E, 0x5C, 0x36, 0xE4, 0xEF
-  },
-  {
-    0xAF, 0x8E, 0x6E, 0x91, 0xFA, 0xB4, 0x6C, 0xE4,
-    0x87, 0x3E, 0x1A, 0x50, 0xA8, 0xEF, 0x44, 0x8C,
-    0xC2, 0x91, 0x21, 0xF7, 0xF7, 0x4D, 0xEE, 0xF3,
-    0x4A, 0x71, 0xEF, 0x89, 0xCC, 0x00, 0xD9, 0x27,
-    0x4B, 0xC6, 0xC2, 0x45, 0x4B, 0xBB, 0x32, 0x30,
-    0xD8, 0xB2, 0xEC, 0x94, 0xC6, 0x2B, 0x1D, 0xEC,
-    0x85, 0xF3, 0x59, 0x3B, 0xFA, 0x30, 0xEA, 0x6F,
-    0x7A, 0x44, 0xD7, 0xC0, 0x94, 0x65, 0xA2, 0x53
-  },
-  {
-    0x29, 0xFD, 0x38, 0x4E, 0xD4, 0x90, 0x6F, 0x2D,
-    0x13, 0xAA, 0x9F, 0xE7, 0xAF, 0x90, 0x59, 0x90,
-    0x93, 0x8B, 0xED, 0x80, 0x7F, 0x18, 0x32, 0x45,
-    0x4A, 0x37, 0x2A, 0xB4, 0x12, 0xEE, 0xA1, 0xF5,
-    0x62, 0x5A, 0x1F, 0xCC, 0x9A, 0xC8, 0x34, 0x3B,
-    0x7C, 0x67, 0xC5, 0xAB, 0xA6, 0xE0, 0xB1, 0xCC,
-    0x46, 0x44, 0x65, 0x49, 0x13, 0x69, 0x2C, 0x6B,
-    0x39, 0xEB, 0x91, 0x87, 0xCE, 0xAC, 0xD3, 0xEC
-  },
-  {
-    0xA2, 0x68, 0xC7, 0x88, 0x5D, 0x98, 0x74, 0xA5,
-    0x1C, 0x44, 0xDF, 0xFE, 0xD8, 0xEA, 0x53, 0xE9,
-    0x4F, 0x78, 0x45, 0x6E, 0x0B, 0x2E, 0xD9, 0x9F,
-    0xF5, 0xA3, 0x92, 0x47, 0x60, 0x81, 0x38, 0x26,
-    0xD9, 0x60, 0xA1, 0x5E, 0xDB, 0xED, 0xBB, 0x5D,
-    0xE5, 0x22, 0x6B, 0xA4, 0xB0, 0x74, 0xE7, 0x1B,
-    0x05, 0xC5, 0x5B, 0x97, 0x56, 0xBB, 0x79, 0xE5,
-    0x5C, 0x02, 0x75, 0x4C, 0x2C, 0x7B, 0x6C, 0x8A
-  },
-  {
-    0x0C, 0xF8, 0x54, 0x54, 0x88, 0xD5, 0x6A, 0x86,
-    0x81, 0x7C, 0xD7, 0xEC, 0xB1, 0x0F, 0x71, 0x16,
-    0xB7, 0xEA, 0x53, 0x0A, 0x45, 0xB6, 0xEA, 0x49,
-    0x7B, 0x6C, 0x72, 0xC9, 0x97, 0xE0, 0x9E, 0x3D,
-    0x0D, 0xA8, 0x69, 0x8F, 0x46, 0xBB, 0x00, 0x6F,
-    0xC9, 0x77, 0xC2, 0xCD, 0x3D, 0x11, 0x77, 0x46,
-    0x3A, 0xC9, 0x05, 0x7F, 0xDD, 0x16, 0x62, 0xC8,
-    0x5D, 0x0C, 0x12, 0x64, 0x43, 0xC1, 0x04, 0x73
-  },
-  {
-    0xB3, 0x96, 0x14, 0x26, 0x8F, 0xDD, 0x87, 0x81,
-    0x51, 0x5E, 0x2C, 0xFE, 0xBF, 0x89, 0xB4, 0xD5,
-    0x40, 0x2B, 0xAB, 0x10, 0xC2, 0x26, 0xE6, 0x34,
-    0x4E, 0x6B, 0x9A, 0xE0, 0x00, 0xFB, 0x0D, 0x6C,
-    0x79, 0xCB, 0x2F, 0x3E, 0xC8, 0x0E, 0x80, 0xEA,
-    0xEB, 0x19, 0x80, 0xD2, 0xF8, 0x69, 0x89, 0x16,
-    0xBD, 0x2E, 0x9F, 0x74, 0x72, 0x36, 0x65, 0x51,
-    0x16, 0x64, 0x9C, 0xD3, 0xCA, 0x23, 0xA8, 0x37
-  },
-  {
-    0x74, 0xBE, 0xF0, 0x92, 0xFC, 0x6F, 0x1E, 0x5D,
-    0xBA, 0x36, 0x63, 0xA3, 0xFB, 0x00, 0x3B, 0x2A,
-    0x5B, 0xA2, 0x57, 0x49, 0x65, 0x36, 0xD9, 0x9F,
-    0x62, 0xB9, 0xD7, 0x3F, 0x8F, 0x9E, 0xB3, 0xCE,
-    0x9F, 0xF3, 0xEE, 0xC7, 0x09, 0xEB, 0x88, 0x36,
-    0x55, 0xEC, 0x9E, 0xB8, 0x96, 0xB9, 0x12, 0x8F,
-    0x2A, 0xFC, 0x89, 0xCF, 0x7D, 0x1A, 0xB5, 0x8A,
-    0x72, 0xF4, 0xA3, 0xBF, 0x03, 0x4D, 0x2B, 0x4A
-  },
-  {
-    0x3A, 0x98, 0x8D, 0x38, 0xD7, 0x56, 0x11, 0xF3,
-    0xEF, 0x38, 0xB8, 0x77, 0x49, 0x80, 0xB3, 0x3E,
-    0x57, 0x3B, 0x6C, 0x57, 0xBE, 0xE0, 0x46, 0x9B,
-    0xA5, 0xEE, 0xD9, 0xB4, 0x4F, 0x29, 0x94, 0x5E,
-    0x73, 0x47, 0x96, 0x7F, 0xBA, 0x2C, 0x16, 0x2E,
-    0x1C, 0x3B, 0xE7, 0xF3, 0x10, 0xF2, 0xF7, 0x5E,
-    0xE2, 0x38, 0x1E, 0x7B, 0xFD, 0x6B, 0x3F, 0x0B,
-    0xAE, 0xA8, 0xD9, 0x5D, 0xFB, 0x1D, 0xAF, 0xB1
-  },
-  {
-    0x58, 0xAE, 0xDF, 0xCE, 0x6F, 0x67, 0xDD, 0xC8,
-    0x5A, 0x28, 0xC9, 0x92, 0xF1, 0xC0, 0xBD, 0x09,
-    0x69, 0xF0, 0x41, 0xE6, 0x6F, 0x1E, 0xE8, 0x80,
-    0x20, 0xA1, 0x25, 0xCB, 0xFC, 0xFE, 0xBC, 0xD6,
-    0x17, 0x09, 0xC9, 0xC4, 0xEB, 0xA1, 0x92, 0xC1,
-    0x5E, 0x69, 0xF0, 0x20, 0xD4, 0x62, 0x48, 0x60,
-    0x19, 0xFA, 0x8D, 0xEA, 0x0C, 0xD7, 0xA4, 0x29,
-    0x21, 0xA1, 0x9D, 0x2F, 0xE5, 0x46, 0xD4, 0x3D
-  },
-  {
-    0x93, 0x47, 0xBD, 0x29, 0x14, 0x73, 0xE6, 0xB4,
-    0xE3, 0x68, 0x43, 0x7B, 0x8E, 0x56, 0x1E, 0x06,
-    0x5F, 0x64, 0x9A, 0x6D, 0x8A, 0xDA, 0x47, 0x9A,
-    0xD0, 0x9B, 0x19, 0x99, 0xA8, 0xF2, 0x6B, 0x91,
-    0xCF, 0x61, 0x20, 0xFD, 0x3B, 0xFE, 0x01, 0x4E,
-    0x83, 0xF2, 0x3A, 0xCF, 0xA4, 0xC0, 0xAD, 0x7B,
-    0x37, 0x12, 0xB2, 0xC3, 0xC0, 0x73, 0x32, 0x70,
-    0x66, 0x31, 0x12, 0xCC, 0xD9, 0x28, 0x5C, 0xD9
-  },
-  {
-    0xB3, 0x21, 0x63, 0xE7, 0xC5, 0xDB, 0xB5, 0xF5,
-    0x1F, 0xDC, 0x11, 0xD2, 0xEA, 0xC8, 0x75, 0xEF,
-    0xBB, 0xCB, 0x7E, 0x76, 0x99, 0x09, 0x0A, 0x7E,
-    0x7F, 0xF8, 0xA8, 0xD5, 0x07, 0x95, 0xAF, 0x5D,
-    0x74, 0xD9, 0xFF, 0x98, 0x54, 0x3E, 0xF8, 0xCD,
-    0xF8, 0x9A, 0xC1, 0x3D, 0x04, 0x85, 0x27, 0x87,
-    0x56, 0xE0, 0xEF, 0x00, 0xC8, 0x17, 0x74, 0x56,
-    0x61, 0xE1, 0xD5, 0x9F, 0xE3, 0x8E, 0x75, 0x37
-  },
-  {
-    0x10, 0x85, 0xD7, 0x83, 0x07, 0xB1, 0xC4, 0xB0,
-    0x08, 0xC5, 0x7A, 0x2E, 0x7E, 0x5B, 0x23, 0x46,
-    0x58, 0xA0, 0xA8, 0x2E, 0x4F, 0xF1, 0xE4, 0xAA,
-    0xAC, 0x72, 0xB3, 0x12, 0xFD, 0xA0, 0xFE, 0x27,
-    0xD2, 0x33, 0xBC, 0x5B, 0x10, 0xE9, 0xCC, 0x17,
-    0xFD, 0xC7, 0x69, 0x7B, 0x54, 0x0C, 0x7D, 0x95,
-    0xEB, 0x21, 0x5A, 0x19, 0xA1, 0xA0, 0xE2, 0x0E,
-    0x1A, 0xBF, 0xA1, 0x26, 0xEF, 0xD5, 0x68, 0xC7
-  },
-  {
-    0x4E, 0x5C, 0x73, 0x4C, 0x7D, 0xDE, 0x01, 0x1D,
-    0x83, 0xEA, 0xC2, 0xB7, 0x34, 0x7B, 0x37, 0x35,
-    0x94, 0xF9, 0x2D, 0x70, 0x91, 0xB9, 0xCA, 0x34,
-    0xCB, 0x9C, 0x6F, 0x39, 0xBD, 0xF5, 0xA8, 0xD2,
-    0xF1, 0x34, 0x37, 0x9E, 0x16, 0xD8, 0x22, 0xF6,
-    0x52, 0x21, 0x70, 0xCC, 0xF2, 0xDD, 0xD5, 0x5C,
-    0x84, 0xB9, 0xE6, 0xC6, 0x4F, 0xC9, 0x27, 0xAC,
-    0x4C, 0xF8, 0xDF, 0xB2, 0xA1, 0x77, 0x01, 0xF2
-  },
-  {
-    0x69, 0x5D, 0x83, 0xBD, 0x99, 0x0A, 0x11, 0x17,
-    0xB3, 0xD0, 0xCE, 0x06, 0xCC, 0x88, 0x80, 0x27,
-    0xD1, 0x2A, 0x05, 0x4C, 0x26, 0x77, 0xFD, 0x82,
-    0xF0, 0xD4, 0xFB, 0xFC, 0x93, 0x57, 0x55, 0x23,
-    0xE7, 0x99, 0x1A, 0x5E, 0x35, 0xA3, 0x75, 0x2E,
-    0x9B, 0x70, 0xCE, 0x62, 0x99, 0x2E, 0x26, 0x8A,
-    0x87, 0x77, 0x44, 0xCD, 0xD4, 0x35, 0xF5, 0xF1,
-    0x30, 0x86, 0x9C, 0x9A, 0x20, 0x74, 0xB3, 0x38
-  },
-  {
-    0xA6, 0x21, 0x37, 0x43, 0x56, 0x8E, 0x3B, 0x31,
-    0x58, 0xB9, 0x18, 0x43, 0x01, 0xF3, 0x69, 0x08,
-    0x47, 0x55, 0x4C, 0x68, 0x45, 0x7C, 0xB4, 0x0F,
-    0xC9, 0xA4, 0xB8, 0xCF, 0xD8, 0xD4, 0xA1, 0x18,
-    0xC3, 0x01, 0xA0, 0x77, 0x37, 0xAE, 0xDA, 0x0F,
-    0x92, 0x9C, 0x68, 0x91, 0x3C, 0x5F, 0x51, 0xC8,
-    0x03, 0x94, 0xF5, 0x3B, 0xFF, 0x1C, 0x3E, 0x83,
-    0xB2, 0xE4, 0x0C, 0xA9, 0x7E, 0xBA, 0x9E, 0x15
-  },
-  {
-    0xD4, 0x44, 0xBF, 0xA2, 0x36, 0x2A, 0x96, 0xDF,
-    0x21, 0x3D, 0x07, 0x0E, 0x33, 0xFA, 0x84, 0x1F,
-    0x51, 0x33, 0x4E, 0x4E, 0x76, 0x86, 0x6B, 0x81,
-    0x39, 0xE8, 0xAF, 0x3B, 0xB3, 0x39, 0x8B, 0xE2,
-    0xDF, 0xAD, 0xDC, 0xBC, 0x56, 0xB9, 0x14, 0x6D,
-    0xE9, 0xF6, 0x81, 0x18, 0xDC, 0x58, 0x29, 0xE7,
-    0x4B, 0x0C, 0x28, 0xD7, 0x71, 0x19, 0x07, 0xB1,
-    0x21, 0xF9, 0x16, 0x1C, 0xB9, 0x2B, 0x69, 0xA9
-  },
-  {
-    0x14, 0x27, 0x09, 0xD6, 0x2E, 0x28, 0xFC, 0xCC,
-    0xD0, 0xAF, 0x97, 0xFA, 0xD0, 0xF8, 0x46, 0x5B,
-    0x97, 0x1E, 0x82, 0x20, 0x1D, 0xC5, 0x10, 0x70,
-    0xFA, 0xA0, 0x37, 0x2A, 0xA4, 0x3E, 0x92, 0x48,
-    0x4B, 0xE1, 0xC1, 0xE7, 0x3B, 0xA1, 0x09, 0x06,
-    0xD5, 0xD1, 0x85, 0x3D, 0xB6, 0xA4, 0x10, 0x6E,
-    0x0A, 0x7B, 0xF9, 0x80, 0x0D, 0x37, 0x3D, 0x6D,
-    0xEE, 0x2D, 0x46, 0xD6, 0x2E, 0xF2, 0xA4, 0x61
-  },
-};
-
-
-
-
-static const uint8_t blake2sp_kat[KAT_LENGTH][BLAKE2S_OUTBYTES] =
-{
-  {
-    0xDD, 0x0E, 0x89, 0x17, 0x76, 0x93, 0x3F, 0x43,
-    0xC7, 0xD0, 0x32, 0xB0, 0x8A, 0x91, 0x7E, 0x25,
-    0x74, 0x1F, 0x8A, 0xA9, 0xA1, 0x2C, 0x12, 0xE1,
-    0xCA, 0xC8, 0x80, 0x15, 0x00, 0xF2, 0xCA, 0x4F
-  },
-  {
-    0xA6, 0xB9, 0xEE, 0xCC, 0x25, 0x22, 0x7A, 0xD7,
-    0x88, 0xC9, 0x9D, 0x3F, 0x23, 0x6D, 0xEB, 0xC8,
-    0xDA, 0x40, 0x88, 0x49, 0xE9, 0xA5, 0x17, 0x89,
-    0x78, 0x72, 0x7A, 0x81, 0x45, 0x7F, 0x72, 0x39
-  },
-  {
-    0xDA, 0xCA, 0xDE, 0xCE, 0x7A, 0x8E, 0x6B, 0xF3,
-    0xAB, 0xFE, 0x32, 0x4C, 0xA6, 0x95, 0x43, 0x69,
-    0x84, 0xB8, 0x19, 0x5D, 0x29, 0xF6, 0xBB, 0xD8,
-    0x96, 0xE4, 0x1E, 0x18, 0xE2, 0x1C, 0x91, 0x45
-  },
-  {
-    0xED, 0x14, 0x41, 0x3B, 0x40, 0xDA, 0x68, 0x9F,
-    0x1F, 0x7F, 0xED, 0x2B, 0x08, 0xDF, 0xF4, 0x5B,
-    0x80, 0x92, 0xDB, 0x5E, 0xC2, 0xC3, 0x61, 0x0E,
-    0x02, 0x72, 0x4D, 0x20, 0x2F, 0x42, 0x3C, 0x46
-  },
-  {
-    0x9B, 0x8A, 0x52, 0x7B, 0x52, 0x72, 0x25, 0x0A,
-    0x1E, 0xC3, 0x97, 0x38, 0x8F, 0x04, 0x09, 0x14,
-    0x95, 0x48, 0x06, 0xE7, 0x94, 0xDB, 0x04, 0xB7,
-    0x0A, 0x46, 0x11, 0xBC, 0x59, 0x58, 0x6A, 0x83
-  },
-  {
-    0x2B, 0xB6, 0x33, 0x37, 0x29, 0x00, 0x0B, 0xE3,
-    0xD5, 0xA2, 0x1B, 0x98, 0xF8, 0xE7, 0xEA, 0xD0,
-    0x77, 0xF1, 0x51, 0xA5, 0x39, 0x39, 0x19, 0xEB,
-    0x67, 0xC8, 0x76, 0xEE, 0x00, 0xBB, 0xBB, 0x04
-  },
-  {
-    0x63, 0xC0, 0x14, 0x08, 0x15, 0x4A, 0xD1, 0x9D,
-    0x7F, 0xB7, 0x39, 0xF3, 0x11, 0x78, 0x17, 0x80,
-    0x46, 0x2C, 0xF2, 0xEE, 0xCC, 0xE6, 0x0F, 0x06,
-    0x4E, 0x85, 0x34, 0x87, 0xC2, 0x72, 0xE3, 0xEB
-  },
-  {
-    0x3D, 0x05, 0x1A, 0x11, 0x76, 0x01, 0x9C, 0xA3,
-    0x7B, 0xF3, 0x3D, 0x60, 0x42, 0x7F, 0x8D, 0x9D,
-    0x1C, 0x3A, 0xBD, 0x59, 0x82, 0x97, 0xCF, 0xB4,
-    0x23, 0x5F, 0x74, 0x7D, 0x7C, 0x7C, 0x7F, 0xEC
-  },
-  {
-    0x39, 0x1E, 0xA9, 0x12, 0xDF, 0x4D, 0x4D, 0x79,
-    0xA4, 0x64, 0x6D, 0x9D, 0xA2, 0x54, 0x9A, 0x44,
-    0x6D, 0x22, 0x40, 0xF6, 0x24, 0x15, 0xD0, 0x70,
-    0xA2, 0xE0, 0x93, 0x99, 0x2B, 0x47, 0x1F, 0xBA
-  },
-  {
-    0x32, 0x46, 0x40, 0x44, 0x0E, 0xA5, 0xC3, 0x08,
-    0x2D, 0xDC, 0x30, 0x9E, 0x78, 0x09, 0xD7, 0x41,
-    0xD6, 0xCC, 0x1B, 0x2D, 0x49, 0x0F, 0xF8, 0xC0,
-    0x52, 0x12, 0x8A, 0x6E, 0xEB, 0x40, 0x9D, 0x62
-  },
-  {
-    0xAB, 0x85, 0x5E, 0x6F, 0xA3, 0x9A, 0x5E, 0x8F,
-    0xC9, 0x0E, 0xAC, 0xB9, 0x99, 0xC7, 0xF7, 0x8A,
-    0xE7, 0x1E, 0x59, 0xC3, 0xD9, 0x7D, 0x60, 0xAF,
-    0xE5, 0x17, 0xD5, 0x87, 0x92, 0x3B, 0x77, 0x11
-  },
-  {
-    0x2A, 0x39, 0xDA, 0x45, 0x86, 0xEF, 0xC4, 0x77,
-    0x85, 0xA7, 0xA8, 0xDA, 0x85, 0x68, 0x3A, 0x51,
-    0x72, 0x4C, 0xDE, 0xF5, 0x41, 0x3B, 0x35, 0x6D,
-    0xC4, 0xFB, 0x50, 0x05, 0x13, 0xF8, 0xFA, 0x2E
-  },
-  {
-    0x8A, 0x00, 0x57, 0xC1, 0xF7, 0x8A, 0xD6, 0x21,
-    0x45, 0x55, 0xC0, 0x67, 0x07, 0x33, 0xE2, 0x9A,
-    0x4C, 0x7E, 0x95, 0x62, 0x27, 0x66, 0x0E, 0xFE,
-    0xB1, 0xD7, 0xFC, 0x79, 0xF5, 0x8E, 0xC6, 0xF2
-  },
-  {
-    0x07, 0x64, 0xB0, 0x01, 0x7F, 0x5B, 0xD9, 0x51,
-    0xF0, 0x1D, 0x9F, 0xDF, 0x95, 0xC0, 0xCB, 0x41,
-    0x38, 0x98, 0x5D, 0x84, 0x79, 0x9C, 0xD4, 0x29,
-    0x84, 0xE2, 0x5B, 0x51, 0x28, 0x00, 0xE7, 0x3C
-  },
-  {
-    0xCC, 0x02, 0x49, 0x56, 0x93, 0xC8, 0xE1, 0x84,
-    0xAD, 0x2E, 0xD0, 0x9D, 0x53, 0x3D, 0xC3, 0x3B,
-    0x76, 0xA7, 0x78, 0x3D, 0x62, 0x07, 0xFC, 0xAC,
-    0xCB, 0x64, 0xF3, 0xED, 0x2C, 0x6D, 0x66, 0xE0
-  },
-  {
-    0xC0, 0xDF, 0x49, 0xC2, 0x06, 0xA3, 0x42, 0x88,
-    0x14, 0x32, 0x16, 0x84, 0x7D, 0xF3, 0x34, 0xD4,
-    0x56, 0x9D, 0xAD, 0x73, 0xC2, 0xB1, 0xFF, 0x62,
-    0x84, 0x88, 0x4F, 0xD3, 0x89, 0x41, 0xFB, 0x95
-  },
-  {
-    0xB9, 0x19, 0x45, 0x19, 0xE4, 0x97, 0x8A, 0x9D,
-    0xC8, 0x93, 0xB2, 0x8B, 0xD8, 0x08, 0xCD, 0xFA,
-    0xBB, 0x1B, 0xD5, 0x10, 0xD8, 0x62, 0xB3, 0x17,
-    0x1F, 0xF6, 0xE0, 0x17, 0xA4, 0x1B, 0x80, 0x4C
-  },
-  {
-    0xBB, 0xA9, 0x27, 0xAC, 0xF1, 0x1B, 0xEB, 0xD3,
-    0x62, 0xA3, 0xA3, 0xEB, 0x78, 0xC4, 0xBB, 0x65,
-    0xE6, 0x02, 0xA8, 0x70, 0x9F, 0xCE, 0xF3, 0x8D,
-    0xC6, 0xC8, 0xB7, 0xBD, 0xA6, 0x64, 0xC3, 0x2C
-  },
-  {
-    0xEC, 0xB4, 0x90, 0x0A, 0x63, 0x92, 0x4E, 0x72,
-    0x0D, 0x40, 0xF2, 0xD2, 0xB1, 0x4D, 0x1B, 0xB3,
-    0x9C, 0x37, 0x01, 0xAD, 0x73, 0x46, 0xBD, 0x0B,
-    0x67, 0x23, 0x42, 0x70, 0xBF, 0xBE, 0x7E, 0x70
-  },
-  {
-    0xF8, 0x31, 0x5A, 0x21, 0xB2, 0x5E, 0x6B, 0xA8,
-    0xBF, 0x59, 0xB1, 0x7B, 0x05, 0x91, 0x3B, 0x8C,
-    0xA4, 0x65, 0x9F, 0x1C, 0xD8, 0x38, 0xFC, 0xC7,
-    0x73, 0xC9, 0xEB, 0x12, 0xE7, 0x00, 0x4E, 0x09
-  },
-  {
-    0x4B, 0x77, 0xAF, 0x67, 0xA9, 0x23, 0x2B, 0xF1,
-    0x18, 0x4E, 0x57, 0x81, 0x82, 0x94, 0x03, 0x1E,
-    0x55, 0xF1, 0xF8, 0x53, 0xC9, 0x4D, 0xBA, 0xB5,
-    0x57, 0x75, 0x47, 0x33, 0x0D, 0x65, 0xAA, 0x61
-  },
-  {
-    0x76, 0x85, 0x68, 0x39, 0x0F, 0xD2, 0xB8, 0x70,
-    0x94, 0x11, 0x4E, 0xD4, 0xCF, 0x72, 0x3E, 0xA3,
-    0x20, 0xFE, 0x97, 0x7B, 0x53, 0x18, 0x03, 0x05,
-    0xC3, 0x84, 0x33, 0x54, 0x79, 0xF0, 0xB5, 0x9B
-  },
-  {
-    0xA4, 0x31, 0xCB, 0x27, 0x0F, 0x3E, 0x2C, 0x9B,
-    0x7A, 0x95, 0x93, 0xB1, 0x55, 0xCC, 0xEC, 0xFF,
-    0x5B, 0x5C, 0x4A, 0x2D, 0xCD, 0x5D, 0x6B, 0xB1,
-    0xC4, 0x85, 0xAA, 0x28, 0x69, 0x97, 0xF9, 0x15
-  },
-  {
-    0xD6, 0x91, 0xFA, 0x6A, 0x79, 0x0B, 0x1A, 0x51,
-    0x79, 0x80, 0x08, 0x7F, 0x50, 0xB0, 0x3D, 0xED,
-    0x8C, 0x6E, 0xD4, 0x86, 0xD0, 0x84, 0x22, 0x1C,
-    0x82, 0x7D, 0x9B, 0xD9, 0x22, 0xBE, 0xB8, 0xC0
-  },
-  {
-    0x8F, 0x97, 0x8A, 0x49, 0x32, 0xF4, 0x45, 0x98,
-    0x13, 0xE8, 0xFE, 0x15, 0x68, 0x6E, 0x4E, 0xFA,
-    0x25, 0xC2, 0xC5, 0xFF, 0x5A, 0x3A, 0x4F, 0x8C,
-    0x9B, 0x14, 0x96, 0x5D, 0x2F, 0x0B, 0xE4, 0x61
-  },
-  {
-    0x1E, 0xFB, 0xD0, 0xC1, 0x31, 0x44, 0x91, 0x42,
-    0xF2, 0x29, 0x5F, 0x2D, 0x42, 0x41, 0x1D, 0xFE,
-    0x0F, 0x48, 0xD4, 0xAC, 0xAE, 0x76, 0x2D, 0x8D,
-    0xF6, 0x7A, 0x57, 0x0B, 0xF7, 0xB1, 0xDC, 0xD5
-  },
-  {
-    0xD5, 0x3B, 0xA9, 0x33, 0x46, 0x14, 0x3A, 0xB8,
-    0xE0, 0xD3, 0xD1, 0xBF, 0x27, 0x27, 0x06, 0xD1,
-    0x69, 0xE6, 0x6C, 0x69, 0xC7, 0xB8, 0xF4, 0xA5,
-    0xE8, 0x2F, 0xEF, 0x44, 0x07, 0x02, 0xBC, 0xF2
-  },
-  {
-    0xF7, 0x1A, 0x3E, 0xC0, 0x1A, 0xA3, 0x82, 0xEA,
-    0x76, 0x99, 0x2B, 0x43, 0x0A, 0x7F, 0x42, 0xC7,
-    0xAD, 0x2A, 0x86, 0xAE, 0xA9, 0xC1, 0x9E, 0x76,
-    0xCD, 0x17, 0x32, 0xEC, 0x68, 0x30, 0xDE, 0x6F
-  },
-  {
-    0x80, 0xA6, 0xAB, 0x7B, 0x71, 0x04, 0x64, 0xF9,
-    0x3E, 0x6C, 0xBA, 0x96, 0x86, 0x4A, 0xA6, 0x40,
-    0x9B, 0xCA, 0xFC, 0x1B, 0xF4, 0xB3, 0x2A, 0x30,
-    0x93, 0x72, 0xE8, 0x57, 0xE8, 0x04, 0x06, 0x8C
-  },
-  {
-    0xDB, 0xDE, 0x81, 0xE5, 0x1A, 0x52, 0x17, 0x4B,
-    0x10, 0x14, 0x90, 0x1B, 0x53, 0xBE, 0xF8, 0x8D,
-    0xE9, 0x3B, 0x29, 0xE2, 0x74, 0x34, 0x7E, 0x8E,
-    0x9A, 0x7B, 0x03, 0x74, 0x56, 0x62, 0x9F, 0x35
-  },
-  {
-    0x75, 0xF2, 0x74, 0x46, 0x6B, 0x1A, 0x2D, 0x0F,
-    0xD8, 0x45, 0xBB, 0xB5, 0x7C, 0x38, 0xC9, 0x89,
-    0x51, 0x6E, 0x15, 0x68, 0x32, 0x0A, 0xB5, 0x17,
-    0xB1, 0x63, 0xEA, 0xF7, 0x09, 0x23, 0x4C, 0xC7
-  },
-  {
-    0xAF, 0xE1, 0xA0, 0x59, 0x1C, 0x49, 0x1D, 0x41,
-    0x6E, 0xB6, 0x4F, 0x62, 0x86, 0xF3, 0xBA, 0x29,
-    0xD4, 0xC9, 0x99, 0x82, 0x14, 0xA3, 0x83, 0x1C,
-    0x39, 0x01, 0x4A, 0xC0, 0x30, 0x55, 0x79, 0x45
-  },
-  {
-    0x67, 0xFF, 0x6A, 0xCD, 0xBE, 0x8A, 0x99, 0xA1,
-    0x66, 0xA5, 0xD9, 0xCF, 0x32, 0x13, 0x65, 0x06,
-    0xB5, 0x48, 0xD6, 0xC9, 0x47, 0xC2, 0x4C, 0x69,
-    0x9C, 0xEA, 0x3A, 0xFD, 0x92, 0xAD, 0xFA, 0xCA
-  },
-  {
-    0xBF, 0xB4, 0xD0, 0xC7, 0x11, 0x20, 0x75, 0x26,
-    0x2C, 0x2D, 0xD2, 0x48, 0xF3, 0x34, 0xB2, 0xEF,
-    0x15, 0x40, 0x08, 0x7E, 0xCC, 0x73, 0x82, 0xBC,
-    0x2A, 0x27, 0x25, 0x75, 0xC5, 0x00, 0x9F, 0x70
-  },
-  {
-    0x17, 0xC9, 0x4B, 0x9C, 0x53, 0x72, 0x43, 0xF2,
-    0x33, 0x5B, 0x86, 0x39, 0x49, 0xB2, 0xB9, 0x1C,
-    0x98, 0xA6, 0x95, 0x6D, 0x7C, 0x10, 0xAA, 0x98,
-    0x99, 0x59, 0xA8, 0x0F, 0x91, 0x0C, 0x25, 0x22
-  },
-  {
-    0xF6, 0x33, 0x8F, 0x43, 0x4D, 0x31, 0x94, 0x10,
-    0x19, 0x6D, 0x95, 0x19, 0xAB, 0xCA, 0xEF, 0xF7,
-    0xD5, 0x54, 0x39, 0xFD, 0x2A, 0xA5, 0xBA, 0xBF,
-    0x7A, 0x7E, 0x79, 0x13, 0xB2, 0x94, 0xED, 0x4D
-  },
-  {
-    0x08, 0xEF, 0x7D, 0x65, 0xF9, 0xBB, 0xF3, 0xDA,
-    0x1F, 0x78, 0x84, 0xAE, 0x9B, 0x75, 0x90, 0x1F,
-    0xD8, 0x52, 0x95, 0x66, 0x2A, 0x6E, 0xA7, 0x1D,
-    0xE0, 0x8B, 0xEE, 0x38, 0x34, 0x57, 0x62, 0x78
-  },
-  {
-    0x16, 0x47, 0xEC, 0xC2, 0xBA, 0x13, 0xF8, 0xB9,
-    0x3B, 0x2F, 0xBC, 0xDC, 0x4E, 0x8F, 0x1D, 0xFA,
-    0x47, 0xFE, 0x3B, 0xE1, 0x2A, 0xAA, 0x0E, 0x45,
-    0x9B, 0x0E, 0x5A, 0x87, 0xF3, 0xA6, 0x9B, 0xB0
-  },
-  {
-    0xFF, 0x92, 0x7A, 0x71, 0x78, 0x81, 0xF6, 0xFD,
-    0x8E, 0xD8, 0xBF, 0x5D, 0x5E, 0x35, 0xBD, 0x80,
-    0x16, 0x15, 0x73, 0xE5, 0x82, 0x94, 0x04, 0xC3,
-    0x2D, 0x2A, 0x27, 0x6A, 0x01, 0xF4, 0xB9, 0x06
-  },
-  {
-    0xC8, 0xCA, 0xF1, 0x36, 0xFF, 0x20, 0x9C, 0x82,
-    0xE0, 0x24, 0x0C, 0x1E, 0x62, 0xA3, 0xBC, 0x7E,
-    0x9C, 0xAC, 0x87, 0x3B, 0x01, 0x1C, 0xF7, 0xC5,
-    0xE6, 0x7E, 0xC1, 0x87, 0xA5, 0xFB, 0xCD, 0x96
-  },
-  {
-    0xD9, 0xAC, 0xC7, 0x3E, 0x3F, 0x42, 0x1E, 0x18,
-    0x83, 0xB5, 0xED, 0x53, 0xD8, 0x2A, 0x9A, 0xEC,
-    0x8F, 0x5D, 0xC9, 0x80, 0xC4, 0x2B, 0xCA, 0xEB,
-    0x0E, 0x7D, 0x89, 0x76, 0xA3, 0x38, 0xEF, 0x51
-  },
-  {
-    0x9F, 0x17, 0x3F, 0xCF, 0x08, 0xA5, 0x36, 0x21,
-    0x93, 0xF3, 0x52, 0xC8, 0x25, 0x6A, 0xE5, 0x34,
-    0xAE, 0x9C, 0xE7, 0xBF, 0xA4, 0xBC, 0x09, 0xFA,
-    0xC9, 0x00, 0x98, 0xF9, 0x8A, 0x71, 0x62, 0x94
-  },
-  {
-    0x0A, 0x72, 0x45, 0x79, 0xDC, 0x80, 0xBC, 0x0C,
-    0x90, 0x04, 0xE5, 0x1B, 0xE7, 0xEF, 0xF3, 0xAF,
-    0xA5, 0x30, 0x75, 0xAB, 0x4A, 0x32, 0x55, 0x77,
-    0x33, 0x58, 0x6E, 0x82, 0x0F, 0xD3, 0x64, 0x23
-  },
-  {
-    0x38, 0xF7, 0xC3, 0x40, 0xF4, 0xB1, 0x59, 0xB1,
-    0xE5, 0x94, 0xF6, 0xEB, 0x83, 0x28, 0x49, 0x17,
-    0xB7, 0xAA, 0x19, 0xC7, 0x4F, 0x57, 0x11, 0x7A,
-    0x4E, 0x08, 0xCF, 0x7C, 0x4E, 0x32, 0xA2, 0x3C
-  },
-  {
-    0x1C, 0x67, 0x4B, 0xE2, 0x57, 0xE9, 0xB3, 0x31,
-    0x34, 0xD4, 0x16, 0x8F, 0x15, 0x2F, 0x8B, 0x63,
-    0xDF, 0xD7, 0x80, 0xC9, 0x7D, 0xC4, 0xDC, 0x37,
-    0xAC, 0x26, 0xCC, 0x0A, 0xEF, 0xB7, 0x9C, 0x1A
-  },
-  {
-    0x2F, 0x0C, 0x59, 0x76, 0x16, 0xD5, 0x75, 0x17,
-    0x14, 0xA5, 0xFB, 0x4E, 0xBF, 0x3C, 0x48, 0x1A,
-    0x96, 0xC3, 0xAD, 0x14, 0x5E, 0xBD, 0xE0, 0x65,
-    0x09, 0xF3, 0xA2, 0xE5, 0xF2, 0xC1, 0x3F, 0xC8
-  },
-  {
-    0xFD, 0xDC, 0x69, 0xE0, 0xC9, 0x83, 0xCD, 0x82,
-    0x83, 0xED, 0x81, 0x88, 0xBE, 0xC4, 0xE5, 0xF4,
-    0x1D, 0xEA, 0x3D, 0x01, 0xB9, 0xE7, 0x4C, 0x4B,
-    0xAF, 0x73, 0x41, 0xD8, 0xB4, 0xBF, 0x55, 0x3D
-  },
-  {
-    0x24, 0xD0, 0x83, 0xCB, 0xA0, 0x38, 0xC8, 0x7E,
-    0x9A, 0xCB, 0x86, 0x81, 0x82, 0x02, 0x08, 0xB7,
-    0x5C, 0xB3, 0x29, 0x3A, 0x96, 0xC9, 0xEF, 0xA7,
-    0x5D, 0x2C, 0x63, 0xF1, 0x6B, 0x85, 0xFE, 0x1E
-  },
-  {
-    0x7F, 0x6A, 0x64, 0x9C, 0xCA, 0x89, 0xB2, 0x53,
-    0xFF, 0xBD, 0x20, 0xC0, 0x16, 0x98, 0x01, 0x00,
-    0xA8, 0x7C, 0x16, 0x81, 0x09, 0x62, 0x8F, 0xCC,
-    0x66, 0x52, 0x5D, 0x8B, 0xAA, 0xFE, 0x50, 0x5F
-  },
-  {
-    0x6D, 0xA3, 0x73, 0xB4, 0xC1, 0x87, 0x92, 0xB3,
-    0x20, 0x9A, 0xDD, 0x15, 0xA5, 0x07, 0x4A, 0x1D,
-    0x70, 0xC1, 0x0B, 0xB3, 0x94, 0x80, 0xCA, 0x3F,
-    0xE5, 0xC4, 0x39, 0xD9, 0x5F, 0xC2, 0x86, 0xCA
-  },
-  {
-    0x27, 0x0A, 0xFF, 0xA6, 0x42, 0x6F, 0x1A, 0x51,
-    0x5C, 0x9B, 0x76, 0xDF, 0xC2, 0x7D, 0x18, 0x1F,
-    0xC2, 0xFD, 0x57, 0xD0, 0x82, 0xA3, 0xBA, 0x2C,
-    0x1E, 0xEF, 0x07, 0x15, 0x33, 0xA6, 0xDF, 0xB7
-  },
-  {
-    0xC2, 0x2E, 0x15, 0xCF, 0xC5, 0xA3, 0xD1, 0x4B,
-    0x64, 0xD1, 0x31, 0xF3, 0x5F, 0xB3, 0x5D, 0xD5,
-    0xE6, 0xC5, 0x7D, 0xC4, 0xAF, 0xC5, 0x52, 0x27,
-    0x75, 0x01, 0xEC, 0xA7, 0x64, 0xDA, 0x74, 0xBF
-  },
-  {
-    0xAD, 0x68, 0x3E, 0x96, 0xB8, 0xAC, 0x65, 0x8C,
-    0x4F, 0x3F, 0x10, 0xAD, 0x22, 0xD9, 0x9B, 0x07,
-    0xCB, 0x5E, 0xF9, 0xE3, 0x1C, 0xBE, 0x11, 0xE7,
-    0xF7, 0xDC, 0x29, 0xF2, 0xAE, 0xE5, 0x02, 0x4C
-  },
-  {
-    0x78, 0xD3, 0xCE, 0xDA, 0x1C, 0xE0, 0x52, 0x93,
-    0xF4, 0x30, 0xF6, 0x16, 0x7B, 0x33, 0xC9, 0x9F,
-    0x0B, 0x1D, 0x6D, 0xAD, 0xE5, 0x21, 0x43, 0xC2,
-    0x92, 0x55, 0x77, 0xC0, 0xBA, 0x82, 0x53, 0xEB
-  },
-  {
-    0xE0, 0x06, 0x45, 0x63, 0x44, 0xF9, 0x0F, 0x50,
-    0x1C, 0x25, 0x81, 0x3F, 0x9B, 0xE2, 0xA3, 0xF4,
-    0x0B, 0x98, 0x74, 0xFA, 0x05, 0x63, 0x98, 0x1C,
-    0xD4, 0x56, 0xEE, 0x8D, 0x44, 0x80, 0x7C, 0x93
-  },
-  {
-    0x39, 0x08, 0xE8, 0xD5, 0x47, 0xC0, 0xAF, 0xB1,
-    0x13, 0x49, 0x49, 0x46, 0x63, 0x04, 0xA1, 0x45,
-    0x02, 0x7E, 0x6B, 0xB7, 0xA7, 0x4D, 0xD1, 0xC1,
-    0x62, 0xCD, 0xF0, 0xBC, 0xF7, 0x72, 0x37, 0xE8
-  },
-  {
-    0x1B, 0x6C, 0x87, 0xA3, 0x48, 0x38, 0xC7, 0xCD,
-    0x5F, 0xD0, 0x89, 0x14, 0x22, 0x4E, 0x90, 0xC2,
-    0x2A, 0xBF, 0x5A, 0x97, 0xB1, 0x06, 0x46, 0xD9,
-    0x8C, 0x49, 0x16, 0xD3, 0xA8, 0x93, 0x9E, 0x62
-  },
-  {
-    0xB0, 0xD3, 0x8F, 0x82, 0xF2, 0x48, 0x91, 0x69,
-    0x52, 0xB3, 0x16, 0xB6, 0xD3, 0x6D, 0x9E, 0x02,
-    0x2D, 0xF6, 0xEE, 0xCC, 0x26, 0xC7, 0x62, 0xA6,
-    0x55, 0xCF, 0x5F, 0x0A, 0xE6, 0x49, 0xE2, 0xBD
-  },
-  {
-    0x8D, 0x66, 0xFC, 0x9C, 0xED, 0xA5, 0xED, 0xDF,
-    0xB1, 0xE0, 0x4D, 0x09, 0x6C, 0xA7, 0x0E, 0xF5,
-    0x06, 0x50, 0xFB, 0x87, 0xCC, 0x6A, 0x9F, 0xFB,
-    0xB3, 0xD2, 0x0B, 0xCE, 0x7B, 0x5A, 0x60, 0x74
-  },
-  {
-    0x06, 0x43, 0x54, 0xE8, 0xE1, 0x1C, 0xF7, 0x13,
-    0xB2, 0xC7, 0x2B, 0xA6, 0x7A, 0xC7, 0xD7, 0x6E,
-    0x41, 0xBA, 0x61, 0xDB, 0x9C, 0x2D, 0xEA, 0x52,
-    0x2E, 0x0B, 0xDA, 0x17, 0xCB, 0xA5, 0xE3, 0x92
-  },
-  {
-    0xC8, 0xEF, 0x5F, 0x49, 0x8B, 0xD1, 0xBC, 0x70,
-    0x7F, 0xBC, 0x7B, 0x5C, 0xBC, 0x2D, 0xFF, 0x04,
-    0x93, 0x14, 0x4A, 0xC5, 0x27, 0x86, 0xDB, 0x3C,
-    0x79, 0x3E, 0xF4, 0xAE, 0x8A, 0x83, 0x88, 0x47
-  },
-  {
-    0x8A, 0x23, 0x97, 0xDF, 0x31, 0xE7, 0xF0, 0xCC,
-    0x29, 0x0D, 0xA9, 0xA8, 0xBB, 0xE4, 0xF5, 0xF7,
-    0xA3, 0xA1, 0x37, 0x50, 0x73, 0x0D, 0xB6, 0x2D,
-    0xC2, 0x54, 0x0F, 0xDB, 0xD6, 0x18, 0x85, 0x89
-  },
-  {
-    0xF1, 0x2D, 0x0B, 0x13, 0xC6, 0xAD, 0xFB, 0x3B,
-    0xE5, 0x0A, 0x51, 0xEB, 0x6B, 0xAF, 0x65, 0xAB,
-    0xFB, 0x17, 0x00, 0xBA, 0xA8, 0x7E, 0x52, 0x7D,
-    0xBE, 0x3E, 0x67, 0x5A, 0x7A, 0x99, 0x46, 0x61
-  },
-  {
-    0x10, 0x24, 0xC9, 0x40, 0xBE, 0x73, 0x41, 0x44,
-    0x9B, 0x50, 0x10, 0x52, 0x2B, 0x50, 0x9F, 0x65,
-    0xBB, 0xDC, 0x12, 0x87, 0xB4, 0x55, 0xC2, 0xBB,
-    0x7F, 0x72, 0xB2, 0xC9, 0x2F, 0xD0, 0xD1, 0x89
-  },
-  {
-    0x52, 0x60, 0x3B, 0x6C, 0xBF, 0xAD, 0x49, 0x66,
-    0xCB, 0x04, 0x4C, 0xB2, 0x67, 0x56, 0x83, 0x85,
-    0xCF, 0x35, 0xF2, 0x1E, 0x6C, 0x45, 0xCF, 0x30,
-    0xAE, 0xD1, 0x98, 0x32, 0xCB, 0x51, 0xE9, 0xF5
-  },
-  {
-    0xFF, 0xF2, 0x4D, 0x3C, 0xC7, 0x29, 0xD3, 0x95,
-    0xDA, 0xF9, 0x78, 0xB0, 0x15, 0x73, 0x06, 0xCB,
-    0x49, 0x57, 0x97, 0xE6, 0xC8, 0xDC, 0xA1, 0x73,
-    0x1D, 0x2F, 0x6F, 0x81, 0xB8, 0x49, 0xBA, 0xAE
-  },
-  {
-    0x41, 0xEE, 0xE9, 0x0D, 0x47, 0xEC, 0x27, 0x72,
-    0xCD, 0x35, 0x2D, 0xFD, 0x67, 0xE0, 0x60, 0x5F,
-    0xBD, 0xFC, 0x5F, 0xD6, 0xD8, 0x26, 0x45, 0x1E,
-    0x3D, 0x06, 0x4D, 0x38, 0x28, 0xBD, 0x3B, 0xAE
-  },
-  {
-    0x30, 0x0B, 0x6B, 0x36, 0xE5, 0x9F, 0x85, 0x1D,
-    0xDD, 0xC2, 0x9B, 0xFA, 0x93, 0x08, 0x25, 0x20,
-    0xCD, 0x77, 0xC5, 0x1E, 0x00, 0x7E, 0x00, 0xD2,
-    0xD7, 0x8B, 0x26, 0xF4, 0xAF, 0x96, 0x15, 0x32
-  },
-  {
-    0x9E, 0xF3, 0x03, 0x14, 0x83, 0x4E, 0x40, 0x1C,
-    0x87, 0x1A, 0x20, 0x04, 0xE3, 0x8D, 0x5C, 0xE3,
-    0x2E, 0xD2, 0x8E, 0x11, 0x37, 0xF1, 0x97, 0x0F,
-    0x4F, 0x43, 0x78, 0xC7, 0x37, 0x06, 0x76, 0x3D
-  },
-  {
-    0x3F, 0xBD, 0xCD, 0xE7, 0xB6, 0x43, 0x04, 0x02,
-    0x5E, 0xC0, 0x58, 0x26, 0x09, 0x03, 0x1E, 0xC2,
-    0x66, 0xD5, 0x0F, 0x56, 0x83, 0x5A, 0xE0, 0xCB,
-    0x72, 0xD8, 0xCD, 0xB4, 0xCF, 0xAF, 0x44, 0x19
-  },
-  {
-    0xE9, 0x0E, 0xAD, 0x3B, 0x98, 0x2B, 0x43, 0x5B,
-    0x66, 0x36, 0x6A, 0x49, 0x6C, 0x3F, 0x8A, 0xE6,
-    0x5B, 0x17, 0x61, 0x37, 0x00, 0xF5, 0x47, 0x67,
-    0x3F, 0x62, 0x15, 0x35, 0x41, 0x91, 0x28, 0x64
-  },
-  {
-    0xAB, 0xE3, 0x54, 0x7B, 0x33, 0x6D, 0x6E, 0x24,
-    0x0D, 0x7F, 0xE6, 0x82, 0xD7, 0x4B, 0x9C, 0xC7,
-    0xE8, 0xD7, 0xF9, 0xB5, 0x66, 0x48, 0x58, 0xB9,
-    0x4D, 0xF5, 0x9E, 0x9F, 0xC3, 0x30, 0xD9, 0xE5
-  },
-  {
-    0xB2, 0x99, 0x64, 0x20, 0x95, 0xB8, 0x28, 0x6C,
-    0x52, 0x1C, 0xDB, 0x21, 0xED, 0x0F, 0xE0, 0x57,
-    0x27, 0x80, 0x21, 0xBB, 0x40, 0x38, 0xEB, 0x5A,
-    0x3D, 0x79, 0x54, 0x2F, 0x5D, 0x75, 0x1F, 0x54
-  },
-  {
-    0xE4, 0xD7, 0x58, 0x35, 0x9F, 0x08, 0x67, 0x93,
-    0xA8, 0x37, 0x54, 0xAC, 0xA6, 0x96, 0x8C, 0x3E,
-    0x9F, 0xD9, 0x4B, 0x40, 0x49, 0x7F, 0x2E, 0xC2,
-    0x24, 0xA2, 0x91, 0x60, 0x63, 0xA2, 0x14, 0xA3
-  },
-  {
-    0x59, 0xA3, 0x04, 0xFC, 0x03, 0xAB, 0x75, 0xD5,
-    0x57, 0xDB, 0x04, 0xEB, 0xD0, 0x2D, 0xD4, 0xC6,
-    0xB8, 0x10, 0xA1, 0x38, 0xBB, 0xFE, 0xEA, 0x5D,
-    0xFC, 0xEE, 0xAA, 0x2B, 0x75, 0xB0, 0x64, 0x91
-  },
-  {
-    0x39, 0x95, 0x10, 0x22, 0x15, 0xF5, 0xFE, 0x92,
-    0x10, 0xEB, 0x30, 0xD9, 0x52, 0xD8, 0xC9, 0x19,
-    0x58, 0x9E, 0x71, 0x45, 0xFC, 0xD4, 0x95, 0xEA,
-    0x78, 0xD0, 0x2B, 0x9C, 0x14, 0x8F, 0xAF, 0x09
-  },
-  {
-    0x47, 0x2E, 0xE7, 0x11, 0x56, 0x35, 0x06, 0xA5,
-    0xF0, 0x08, 0x3F, 0xE8, 0x2B, 0x08, 0xB9, 0x92,
-    0x3C, 0xF6, 0xC8, 0x40, 0x4D, 0x0C, 0xBA, 0xCB,
-    0xF8, 0x48, 0x64, 0xF6, 0x48, 0x54, 0x2A, 0xC0
-  },
-  {
-    0x68, 0xFD, 0xB8, 0x2A, 0xDA, 0xE7, 0x9B, 0xEF,
-    0x59, 0x0A, 0xBA, 0x62, 0xD7, 0xAC, 0x55, 0x32,
-    0x12, 0x06, 0x1C, 0x36, 0xE3, 0x6F, 0x12, 0xC0,
-    0xEF, 0xA2, 0x9A, 0x17, 0x62, 0xDE, 0x3B, 0x6A
-  },
-  {
-    0x75, 0x85, 0xC0, 0x77, 0x33, 0x83, 0xF1, 0x74,
-    0xFD, 0x66, 0x65, 0x49, 0xA8, 0x35, 0x2B, 0x30,
-    0x5B, 0xF6, 0x85, 0x5B, 0xC9, 0x8B, 0xEA, 0x28,
-    0xC3, 0x91, 0xB3, 0xC0, 0x34, 0xDA, 0x5A, 0x5A
-  },
-  {
-    0xAC, 0xC5, 0x75, 0xFE, 0x2C, 0xD7, 0xBA, 0x2A,
-    0x31, 0xFC, 0x7D, 0x67, 0x0A, 0x92, 0x34, 0xAF,
-    0x68, 0x50, 0x33, 0x86, 0xE9, 0x59, 0x07, 0x3D,
-    0x16, 0xA8, 0x1B, 0x33, 0xB9, 0x22, 0xB5, 0x0E
-  },
-  {
-    0x9E, 0xC7, 0xD2, 0x99, 0x59, 0x43, 0xD3, 0x9D,
-    0x6B, 0x97, 0x14, 0x93, 0xB8, 0x97, 0xA0, 0xEE,
-    0x2D, 0x33, 0x92, 0xA7, 0x2D, 0xB8, 0x75, 0xC2,
-    0x40, 0x5D, 0x35, 0x71, 0x78, 0xFB, 0x69, 0x11
-  },
-  {
-    0x2D, 0x7E, 0xF1, 0x94, 0x01, 0x42, 0x5A, 0xBA,
-    0x45, 0x0E, 0x82, 0xD3, 0x6D, 0x0F, 0xE7, 0xB2,
-    0x08, 0x5E, 0xA0, 0xAF, 0x60, 0x45, 0xA5, 0x99,
-    0x4C, 0xF4, 0x31, 0xEA, 0x59, 0x93, 0x9C, 0xC9
-  },
-  {
-    0xF3, 0x2F, 0xD8, 0x55, 0xF0, 0x11, 0xC7, 0x18,
-    0x02, 0x7F, 0x2E, 0xBE, 0x37, 0x7D, 0x69, 0x39,
-    0xF1, 0x23, 0x70, 0xCA, 0xFF, 0x15, 0x1C, 0x1E,
-    0x5A, 0xCE, 0x43, 0x8D, 0x70, 0x3C, 0x6D, 0x9F
-  },
-  {
-    0xB2, 0xBD, 0x83, 0xD2, 0x31, 0x0D, 0x3D, 0x7B,
-    0x1D, 0x2D, 0x5A, 0xAF, 0x43, 0x59, 0xFA, 0xE2,
-    0x86, 0x12, 0x96, 0x27, 0x19, 0xFD, 0xDE, 0x4D,
-    0xDA, 0xF6, 0x9E, 0x78, 0x20, 0xF3, 0x3F, 0x61
-  },
-  {
-    0x1A, 0x7A, 0x9D, 0x0F, 0x44, 0xDD, 0xFA, 0x7F,
-    0xC2, 0xF4, 0x77, 0x0C, 0xAD, 0x74, 0x22, 0xFA,
-    0x6C, 0x4E, 0x37, 0xE6, 0xCB, 0x03, 0x6D, 0x89,
-    0x9E, 0x10, 0x27, 0x50, 0xE5, 0x94, 0xFF, 0xCD
-  },
-  {
-    0xDC, 0x69, 0xF6, 0x14, 0x1C, 0x8E, 0x10, 0x3F,
-    0xF6, 0x1F, 0x62, 0x98, 0xA2, 0xC4, 0x4F, 0x52,
-    0xD1, 0x47, 0x36, 0x6D, 0xDB, 0xD9, 0xC7, 0x9C,
-    0xC3, 0x08, 0xFE, 0x84, 0x33, 0x6A, 0x95, 0x64
-  },
-  {
-    0xE3, 0x4E, 0xD4, 0x17, 0xB0, 0x79, 0x1D, 0x9A,
-    0x77, 0xEE, 0x1E, 0x50, 0xCC, 0x2C, 0x20, 0x7E,
-    0x54, 0x0C, 0x77, 0x14, 0x04, 0x21, 0xC4, 0x6C,
-    0xE0, 0x86, 0x28, 0x78, 0xAA, 0xEB, 0x27, 0x09
-  },
-  {
-    0x21, 0x74, 0x42, 0x5C, 0x8C, 0xCA, 0xE3, 0x98,
-    0xC4, 0xFF, 0x06, 0xF8, 0x48, 0x99, 0x1C, 0x5E,
-    0x9B, 0xC0, 0xF3, 0x46, 0x11, 0x11, 0x70, 0x6F,
-    0xB9, 0x5D, 0x0B, 0xE1, 0xC6, 0x8E, 0x47, 0x60
-  },
-  {
-    0x18, 0x94, 0x58, 0x2A, 0x8A, 0x25, 0xFE, 0x8F,
-    0x84, 0x7A, 0x4A, 0x03, 0x25, 0x74, 0xB7, 0x7B,
-    0x8B, 0x36, 0xBF, 0x19, 0x99, 0x75, 0x26, 0xBB,
-    0x4B, 0xC8, 0x5F, 0x38, 0x24, 0x53, 0x7F, 0xEB
-  },
-  {
-    0x17, 0xED, 0x18, 0x8A, 0xE3, 0xC9, 0x53, 0xD6,
-    0x55, 0x44, 0x59, 0x83, 0xB8, 0x32, 0x5B, 0xAF,
-    0xFF, 0x32, 0xE2, 0x22, 0xB2, 0xDF, 0xEB, 0x16,
-    0xE8, 0x61, 0x7A, 0xBF, 0x86, 0xEE, 0x7C, 0xC5
-  },
-  {
-    0xF1, 0x48, 0x9A, 0xD1, 0xC3, 0x54, 0xCD, 0xE9,
-    0x78, 0x92, 0x37, 0xEA, 0x6D, 0xBF, 0x67, 0xFC,
-    0x1E, 0x44, 0xD1, 0xAC, 0xC8, 0xDC, 0x66, 0xAD,
-    0x83, 0x87, 0x27, 0xF4, 0x7D, 0x9A, 0x91, 0xFE
-  },
-  {
-    0x36, 0x7F, 0x22, 0x16, 0x5B, 0x8B, 0x66, 0xE9,
-    0x7F, 0x66, 0x70, 0xF3, 0x4E, 0xBA, 0x27, 0x49,
-    0xD2, 0x64, 0x3B, 0x21, 0xBE, 0xAD, 0xAD, 0xFE,
-    0xFE, 0xA2, 0x57, 0x4B, 0x7C, 0x9B, 0x21, 0x96
-  },
-  {
-    0x3D, 0x8D, 0xFE, 0xA1, 0x7E, 0xEA, 0x5D, 0x64,
-    0x5A, 0xC1, 0xD4, 0x1A, 0x5B, 0x59, 0x22, 0x6C,
-    0x48, 0x6C, 0x36, 0xBD, 0x77, 0xED, 0x44, 0xBB,
-    0x34, 0x91, 0x70, 0xD0, 0x80, 0xE3, 0x0E, 0x68
-  },
-  {
-    0x41, 0x15, 0xF8, 0x9E, 0x0B, 0x3B, 0x5C, 0x8F,
-    0x61, 0x22, 0xC0, 0x25, 0x00, 0x17, 0x1D, 0xCF,
-    0xFB, 0xCE, 0xA4, 0x66, 0x2A, 0x8C, 0x5F, 0x8C,
-    0x1C, 0x01, 0xA9, 0xCA, 0x7B, 0x10, 0x27, 0xBB
-  },
-  {
-    0xED, 0x6E, 0x91, 0x0B, 0x96, 0x02, 0x55, 0xD7,
-    0xD7, 0x92, 0xEB, 0xE6, 0x7F, 0x26, 0x0A, 0x14,
-    0x3C, 0xFA, 0xC1, 0x05, 0x1D, 0xFC, 0x05, 0x90,
-    0x25, 0xEE, 0x0C, 0x1B, 0xFC, 0xBC, 0x56, 0x81
-  },
-  {
-    0x55, 0x8F, 0xA8, 0xAF, 0xA1, 0x2B, 0xBE, 0xE5,
-    0x4A, 0xF7, 0x8F, 0x6B, 0x74, 0x45, 0xF9, 0x96,
-    0x65, 0xD4, 0xE3, 0x56, 0xBC, 0x07, 0xD3, 0xEF,
-    0xFD, 0x8F, 0xD6, 0x5A, 0xB9, 0xC7, 0x47, 0x16
-  },
-  {
-    0x5B, 0x60, 0x12, 0x76, 0x20, 0x53, 0xB8, 0x73,
-    0x4A, 0xF0, 0xE5, 0x55, 0xE6, 0xA2, 0xBB, 0x4F,
-    0xD4, 0x84, 0x0A, 0xF3, 0xB0, 0x4F, 0xCF, 0x63,
-    0x50, 0xA2, 0xB8, 0xA5, 0x1B, 0x67, 0x96, 0xAD
-  },
-  {
-    0xAB, 0x7A, 0xCC, 0xA5, 0xD7, 0x77, 0x10, 0xBA,
-    0xD3, 0x7B, 0xA0, 0xFF, 0x4C, 0xEA, 0xE2, 0x7E,
-    0x84, 0x71, 0x79, 0xF7, 0xFD, 0x7A, 0xEC, 0x88,
-    0x69, 0xC6, 0x49, 0xB3, 0x3F, 0x8D, 0x25, 0x77
-  },
-  {
-    0xFF, 0x77, 0x30, 0xB4, 0x74, 0xEC, 0x21, 0x45,
-    0xA9, 0x2D, 0xD1, 0xCF, 0xFE, 0x45, 0xC3, 0x42,
-    0xC6, 0xFD, 0x6B, 0xAC, 0x58, 0x0F, 0xF9, 0x5A,
-    0x75, 0xED, 0xA3, 0xBF, 0x90, 0xEB, 0x4F, 0x01
-  },
-  {
-    0xD1, 0x0F, 0x06, 0x1D, 0x5B, 0x9C, 0xB4, 0x4E,
-    0xE0, 0x78, 0xA9, 0x6B, 0x33, 0x18, 0x57, 0x9E,
-    0x5E, 0xF5, 0x0A, 0xEF, 0x3E, 0xD9, 0x6E, 0x4F,
-    0x62, 0x14, 0x9B, 0x2E, 0x9F, 0x7C, 0x66, 0x0C
-  },
-  {
-    0x67, 0xD2, 0x2B, 0x8E, 0xDF, 0x20, 0x01, 0xD8,
-    0x64, 0x22, 0x13, 0x6A, 0xC6, 0x51, 0x6C, 0xF3,
-    0x9F, 0x7F, 0xC6, 0xA7, 0x02, 0x98, 0x92, 0xFD,
-    0x75, 0xC9, 0x87, 0x90, 0x96, 0x4A, 0x72, 0x0B
-  },
-  {
-    0x7A, 0x5E, 0xC5, 0xBA, 0x76, 0x25, 0x9B, 0x07,
-    0xB4, 0xDA, 0x03, 0xF3, 0x81, 0xFE, 0x7B, 0xEA,
-    0x48, 0x65, 0xC8, 0x6C, 0x42, 0x4A, 0xBA, 0xA0,
-    0xDD, 0x1E, 0xCF, 0x74, 0xF8, 0x7D, 0x2A, 0xC0
-  },
-  {
-    0xE0, 0xFF, 0x60, 0xD6, 0x90, 0x29, 0xE6, 0xBD,
-    0x1C, 0x15, 0x95, 0x3E, 0x91, 0x50, 0x9C, 0x0C,
-    0x59, 0xED, 0x5D, 0xA5, 0x00, 0x01, 0x99, 0xF2,
-    0x16, 0xD2, 0x9F, 0x96, 0x07, 0x9C, 0x2F, 0xEF
-  },
-  {
-    0xFC, 0x13, 0xEA, 0xD8, 0x41, 0x01, 0x8F, 0x59,
-    0x90, 0x3B, 0x40, 0xF2, 0x02, 0x0C, 0x66, 0x38,
-    0xA6, 0x6A, 0x54, 0xC3, 0xA3, 0x38, 0x41, 0x4D,
-    0x97, 0xA5, 0xC3, 0x94, 0xF3, 0x26, 0x6F, 0x33
-  },
-  {
-    0x0C, 0x2F, 0x62, 0xB8, 0x98, 0xFB, 0x2F, 0x63,
-    0x61, 0x7E, 0x78, 0x73, 0x45, 0x26, 0x3C, 0xB9,
-    0xCF, 0x60, 0x65, 0x4B, 0x55, 0x3B, 0x20, 0x3E,
-    0xE4, 0x9D, 0xCB, 0xB8, 0xF2, 0xA6, 0xAF, 0xAC
-  },
-  {
-    0xD7, 0xD6, 0xCB, 0x55, 0x2A, 0xEB, 0x36, 0xEB,
-    0x96, 0xB1, 0xD5, 0xE0, 0x52, 0xF8, 0xD9, 0x21,
-    0xC3, 0x24, 0x5A, 0x97, 0x0D, 0x0B, 0xC8, 0x41,
-    0x0C, 0xD6, 0x5E, 0xA1, 0x04, 0xC8, 0xE7, 0x79
-  },
-  {
-    0xB7, 0x14, 0x1F, 0x30, 0x5E, 0xFD, 0xFE, 0xE5,
-    0x56, 0xBD, 0x13, 0xE0, 0x40, 0x0D, 0x1E, 0x8C,
-    0xFD, 0x65, 0x48, 0xBF, 0x81, 0xEE, 0x5D, 0x15,
-    0x32, 0x7E, 0x49, 0x95, 0xCA, 0x8A, 0xD6, 0xFD
-  },
-  {
-    0xB6, 0xB6, 0x38, 0xD2, 0x2B, 0x7A, 0x12, 0x82,
-    0x53, 0x74, 0xF7, 0x03, 0x48, 0xD7, 0x44, 0x8D,
-    0x4E, 0x7D, 0x90, 0x8C, 0xF6, 0xE7, 0xBB, 0xEF,
-    0x8C, 0x93, 0xEF, 0x67, 0x9B, 0x2A, 0x54, 0x78
-  },
-  {
-    0x0D, 0xF4, 0x58, 0x56, 0x41, 0xFA, 0x09, 0xF6,
-    0xCB, 0xA4, 0xCC, 0x16, 0x5A, 0x10, 0xAD, 0xDE,
-    0x34, 0xF8, 0x0D, 0x42, 0x5A, 0x70, 0xDB, 0x67,
-    0xE2, 0xFD, 0x23, 0x7B, 0x62, 0x7F, 0x43, 0x8A
-  },
-  {
-    0x10, 0x6B, 0x2B, 0x35, 0x4D, 0x95, 0xAC, 0xEC,
-    0xD0, 0xD9, 0x58, 0x8F, 0xBC, 0x23, 0x1F, 0x8B,
-    0xEA, 0x2E, 0x94, 0xEA, 0x66, 0x2D, 0xDD, 0x3F,
-    0x13, 0x9E, 0x1B, 0x67, 0x87, 0x46, 0x1E, 0xED
-  },
-  {
-    0xAE, 0x5C, 0x69, 0xEE, 0xFE, 0x90, 0x89, 0xB2,
-    0x9C, 0x6C, 0x1A, 0x23, 0x70, 0xD2, 0x05, 0x52,
-    0xBA, 0x40, 0xC3, 0xD5, 0xE3, 0x71, 0x3C, 0x12,
-    0xDE, 0xFC, 0xAE, 0x99, 0x7F, 0x43, 0x3E, 0xCD
-  },
-  {
-    0x1A, 0xAE, 0xF5, 0x5D, 0x4F, 0xA8, 0x92, 0xB6,
-    0x35, 0xFB, 0x2A, 0x7A, 0x25, 0xF9, 0xA8, 0xE0,
-    0x3B, 0x9F, 0xFB, 0x08, 0x2A, 0xE9, 0xC0, 0x7C,
-    0x20, 0x42, 0xA0, 0x49, 0xC6, 0x51, 0x5E, 0x45
-  },
-  {
-    0x29, 0x7D, 0xAA, 0xC4, 0xD5, 0x4D, 0xC4, 0x1C,
-    0x83, 0xE3, 0x23, 0x94, 0x59, 0x9F, 0x17, 0x1C,
-    0xDA, 0xA9, 0xDD, 0xB7, 0x17, 0x26, 0xDA, 0x4E,
-    0xCE, 0x3C, 0xCF, 0x95, 0xC1, 0x1F, 0x56, 0xDF
-  },
-  {
-    0x2C, 0x45, 0xAC, 0xF4, 0x91, 0xEC, 0x2F, 0x4B,
-    0x7E, 0x30, 0x9E, 0x7E, 0xDD, 0x81, 0x5B, 0xE5,
-    0xA5, 0x4C, 0x44, 0x58, 0xD1, 0xA5, 0x7C, 0x4F,
-    0x9B, 0x76, 0x3B, 0x0C, 0x67, 0x18, 0xD4, 0x3E
-  },
-  {
-    0x2F, 0x92, 0xF9, 0x01, 0x70, 0xD3, 0xAE, 0x95,
-    0xAB, 0xFA, 0xC3, 0xA6, 0x98, 0x9A, 0x2A, 0x60,
-    0xCB, 0x28, 0xB8, 0x58, 0x78, 0x2B, 0xE7, 0xEA,
-    0x17, 0x9B, 0x48, 0xA7, 0x27, 0x6D, 0xD8, 0x60
-  },
-  {
-    0xB4, 0x01, 0xE8, 0x4B, 0x15, 0xAC, 0xC4, 0x70,
-    0x93, 0x6D, 0x6E, 0x37, 0xF7, 0x88, 0x83, 0x33,
-    0x09, 0x27, 0x31, 0x13, 0x3B, 0x25, 0x1B, 0xEA,
-    0x22, 0x16, 0x58, 0xCA, 0x19, 0xA7, 0x56, 0x69
-  },
-  {
-    0xF8, 0xB3, 0x40, 0xD2, 0xB9, 0xB3, 0x3D, 0x43,
-    0xA0, 0xA6, 0x6F, 0x34, 0x97, 0x82, 0x0A, 0xFA,
-    0xAE, 0xE4, 0x34, 0xC4, 0xE3, 0xC0, 0xC1, 0x7E,
-    0x89, 0x8B, 0x83, 0x01, 0xC5, 0x7A, 0x26, 0xBD
-  },
-  {
-    0x56, 0x6D, 0xA2, 0x83, 0x99, 0x03, 0x89, 0x13,
-    0x8A, 0xA6, 0xF2, 0xAA, 0xA3, 0xB9, 0xE4, 0x0C,
-    0xBF, 0x90, 0x84, 0x0E, 0xC7, 0x62, 0xBD, 0x96,
-    0xB7, 0xE3, 0x3A, 0x31, 0x13, 0xB1, 0x01, 0x08
-  },
-  {
-    0x34, 0x06, 0x72, 0xB7, 0x04, 0x67, 0x60, 0x42,
-    0xC9, 0xBF, 0x3F, 0x33, 0x7B, 0xA7, 0x9F, 0x11,
-    0x33, 0x6A, 0xEB, 0xB5, 0xEC, 0x5D, 0x31, 0xDF,
-    0x54, 0xEB, 0x6A, 0xD3, 0xB0, 0x43, 0x04, 0x42
-  },
-  {
-    0x50, 0x50, 0xB7, 0x3B, 0x93, 0x16, 0xEE, 0xA2,
-    0xF1, 0x49, 0xBF, 0xFD, 0x22, 0xAE, 0xE3, 0x84,
-    0xDC, 0x54, 0x03, 0xB1, 0x8E, 0x16, 0xFA, 0x88,
-    0x82, 0x5E, 0x18, 0x16, 0x09, 0x49, 0x6F, 0xD2
-  },
-  {
-    0x13, 0x65, 0xCC, 0x6F, 0xB9, 0x26, 0x0E, 0x86,
-    0x88, 0x9B, 0x3A, 0xFB, 0xD1, 0xC8, 0xBC, 0x12,
-    0x92, 0x31, 0x97, 0x71, 0x5D, 0xB2, 0x66, 0xCC,
-    0x7A, 0x01, 0xCA, 0x57, 0x15, 0x9F, 0x75, 0x96
-  },
-  {
-    0x29, 0x46, 0x6F, 0x51, 0xC0, 0x11, 0xFD, 0x10,
-    0x18, 0x14, 0x94, 0xA9, 0x37, 0x9B, 0x61, 0x59,
-    0xB8, 0x08, 0xAE, 0x0F, 0xCB, 0x01, 0x61, 0xF8,
-    0xF0, 0x79, 0x09, 0xFF, 0x04, 0x1B, 0x19, 0x65
-  },
-  {
-    0x65, 0x91, 0xA3, 0xC3, 0xC7, 0x67, 0xB3, 0x8D,
-    0x80, 0x5E, 0xD3, 0xF7, 0xEB, 0x67, 0x63, 0xE8,
-    0xB3, 0xD2, 0xD6, 0x42, 0xE7, 0x30, 0x77, 0x45,
-    0xCD, 0x34, 0x18, 0xEF, 0xF6, 0x9A, 0x19, 0xED
-  },
-  {
-    0x1D, 0x84, 0xB0, 0x4B, 0x13, 0x38, 0xB0, 0xD2,
-    0xE3, 0xC9, 0x8F, 0x7A, 0xEA, 0x3E, 0x98, 0xEF,
-    0xFC, 0x53, 0x0A, 0x50, 0x44, 0xB9, 0x3B, 0x96,
-    0xC6, 0x7E, 0xE3, 0x79, 0xD6, 0x2E, 0x81, 0x5F
-  },
-  {
-    0x6F, 0xA2, 0x95, 0x27, 0x25, 0x32, 0xE9, 0x83,
-    0xE1, 0x66, 0xB1, 0x2E, 0x49, 0x99, 0xC0, 0x52,
-    0xF8, 0x9D, 0x9F, 0x30, 0xAE, 0x14, 0x81, 0xF3,
-    0xD6, 0x0E, 0xAE, 0x85, 0xF8, 0xEE, 0x17, 0x8A
-  },
-  {
-    0x4E, 0xD8, 0xCA, 0xA9, 0x8E, 0xC3, 0x9F, 0x6A,
-    0x62, 0x9F, 0x9A, 0x65, 0x4A, 0x44, 0x7E, 0x7E,
-    0x3E, 0x4F, 0xAE, 0xEC, 0xF3, 0x4D, 0xCF, 0x65,
-    0x8D, 0x2D, 0x4B, 0x98, 0xB7, 0xA2, 0xEC, 0x1A
-  },
-  {
-    0xCF, 0xAB, 0x82, 0x99, 0xA0, 0xDA, 0x0C, 0x2A,
-    0x7E, 0x8F, 0xF5, 0x4D, 0x0A, 0x67, 0x6D, 0x14,
-    0x1A, 0xB2, 0x6B, 0xC0, 0x01, 0x2E, 0x5F, 0x66,
-    0x8E, 0x85, 0xD8, 0x14, 0xBC, 0x98, 0x88, 0xB0
-  },
-  {
-    0xA6, 0x26, 0x54, 0x3C, 0x27, 0x1F, 0xCC, 0xC3,
-    0xE4, 0x45, 0x0B, 0x48, 0xD6, 0x6B, 0xC9, 0xCB,
-    0xDE, 0xB2, 0x5E, 0x5D, 0x07, 0x7A, 0x62, 0x13,
-    0xCD, 0x90, 0xCB, 0xBD, 0x0F, 0xD2, 0x20, 0x76
-  },
-  {
-    0x05, 0xCF, 0x3A, 0x90, 0x04, 0x91, 0x16, 0xDC,
-    0x60, 0xEF, 0xC3, 0x15, 0x36, 0xAA, 0xA3, 0xD1,
-    0x67, 0x76, 0x29, 0x94, 0x89, 0x28, 0x76, 0xDC,
-    0xB7, 0xEF, 0x3F, 0xBE, 0xCD, 0x74, 0x49, 0xC0
-  },
-  {
-    0xCC, 0xD6, 0x1C, 0x92, 0x6C, 0xC1, 0xE5, 0xE9,
-    0x12, 0x8C, 0x02, 0x1C, 0x0C, 0x6E, 0x92, 0xAE,
-    0xFC, 0x4F, 0xFB, 0xDE, 0x39, 0x4D, 0xD6, 0xF3,
-    0xB7, 0xD8, 0x7A, 0x8C, 0xED, 0x89, 0x60, 0x14
-  },
-  {
-    0x3F, 0xFA, 0x4F, 0x6D, 0xAF, 0xA5, 0x7F, 0x1C,
-    0x50, 0xF1, 0xAF, 0xA4, 0xF8, 0x12, 0x92, 0xAE,
-    0x71, 0xA0, 0x6F, 0xE4, 0xF8, 0xFF, 0x46, 0xC5,
-    0x1D, 0x32, 0xFF, 0x26, 0x13, 0x48, 0x9F, 0x2B
-  },
-  {
-    0x19, 0xD3, 0x92, 0x1C, 0xFC, 0x0F, 0x1A, 0x2B,
-    0xB8, 0x13, 0xB3, 0xDF, 0xA9, 0x6D, 0xF9, 0x0E,
-    0x2C, 0x6B, 0x87, 0xD7, 0x8E, 0x92, 0x38, 0xF8,
-    0x5B, 0xBC, 0x77, 0xAE, 0x9A, 0x73, 0xF9, 0x8F
-  },
-  {
-    0xF5, 0xC9, 0x16, 0xFF, 0x2B, 0xAD, 0xDE, 0x3E,
-    0x29, 0xA5, 0xF9, 0x40, 0x23, 0x3E, 0xA3, 0x40,
-    0x07, 0xD8, 0xF1, 0x82, 0xA4, 0x8A, 0x80, 0x8B,
-    0x46, 0xBB, 0x80, 0x58, 0x00, 0x3F, 0x19, 0x03
-  },
-  {
-    0x6B, 0xA0, 0x7A, 0x1A, 0xF7, 0x58, 0xE6, 0x82,
-    0xD3, 0xE0, 0x9A, 0xDD, 0x2D, 0x3D, 0xCD, 0xF3,
-    0x5D, 0x95, 0x53, 0xF6, 0x79, 0x98, 0x54, 0xA2,
-    0x7E, 0x53, 0x60, 0x63, 0xC5, 0x7F, 0x81, 0xA5
-  },
-  {
-    0xB7, 0x83, 0x78, 0xFB, 0x44, 0x6C, 0x54, 0x4B,
-    0x04, 0xD4, 0xA1, 0x52, 0xAC, 0x49, 0x57, 0x31,
-    0x61, 0xB3, 0xDD, 0xEB, 0xF6, 0x93, 0x86, 0x77,
-    0x0A, 0x55, 0xA7, 0xD4, 0x7B, 0x88, 0x0E, 0x5D
-  },
-  {
-    0xB5, 0x19, 0x53, 0x8F, 0xE1, 0x62, 0x6F, 0x0C,
-    0x59, 0x59, 0x45, 0xAD, 0xA5, 0x8A, 0x34, 0x4F,
-    0xAA, 0xC0, 0x06, 0x17, 0x61, 0xCC, 0x9D, 0x4A,
-    0x84, 0x14, 0x19, 0xBD, 0x32, 0xEE, 0xC0, 0xD9
-  },
-  {
-    0x96, 0xE4, 0x88, 0xB0, 0x27, 0x89, 0x64, 0x13,
-    0xF4, 0x03, 0x4B, 0x03, 0x54, 0xF4, 0x84, 0x84,
-    0xF6, 0xCF, 0xC1, 0x0F, 0x8E, 0xC5, 0x7B, 0x02,
-    0x6F, 0xD2, 0x1A, 0x3B, 0x88, 0x36, 0x1A, 0x74
-  },
-  {
-    0x77, 0x0C, 0x8A, 0x5F, 0x47, 0xBF, 0xD7, 0x69,
-    0xCE, 0xD3, 0x5A, 0x71, 0xAF, 0xC3, 0xCA, 0x1F,
-    0xF4, 0xC1, 0xF1, 0xE7, 0xCC, 0x3D, 0x23, 0x56,
-    0xDE, 0x94, 0x50, 0x04, 0x36, 0x8D, 0x81, 0x45
-  },
-  {
-    0x6D, 0xF9, 0xD8, 0xD0, 0xD3, 0xA8, 0xD9, 0x8C,
-    0x83, 0x50, 0xD7, 0x16, 0x2B, 0xD1, 0x55, 0x79,
-    0xD5, 0x70, 0x7A, 0xDD, 0x76, 0x11, 0xA0, 0x0E,
-    0xEB, 0x6C, 0xA5, 0x74, 0x3E, 0xD7, 0x8C, 0xB7
-  },
-  {
-    0x4F, 0x0F, 0xE8, 0xFC, 0x17, 0x90, 0x15, 0x91,
-    0xCF, 0x34, 0x87, 0x30, 0xE1, 0x87, 0xDE, 0x52,
-    0x3D, 0x6D, 0x75, 0x68, 0xC1, 0xFB, 0xD8, 0x24,
-    0x85, 0x91, 0x39, 0x85, 0xEB, 0x67, 0x97, 0x1C
-  },
-  {
-    0x0E, 0xF3, 0xBB, 0x35, 0xCF, 0x37, 0x2B, 0xD9,
-    0x4E, 0x3F, 0x80, 0xEE, 0xCE, 0xBD, 0x50, 0xEF,
-    0x0D, 0x03, 0x08, 0xE0, 0x1E, 0x0E, 0xD6, 0xDE,
-    0x0F, 0x5A, 0x8A, 0x8C, 0x81, 0x8A, 0x00, 0x74
-  },
-  {
-    0xC0, 0x38, 0xD3, 0xE8, 0x09, 0xA5, 0xE3, 0xA5,
-    0x8D, 0xB2, 0xF9, 0x1C, 0x15, 0xAE, 0x12, 0x43,
-    0x95, 0x78, 0xF7, 0x54, 0x85, 0xCD, 0x84, 0xF5,
-    0x56, 0xC6, 0x97, 0x1E, 0x8E, 0x25, 0x06, 0x20
-  },
-  {
-    0xCE, 0x39, 0x9A, 0x0F, 0x08, 0x27, 0x7D, 0x8D,
-    0x48, 0x16, 0x09, 0x50, 0x60, 0xEB, 0xBF, 0x33,
-    0xDA, 0x01, 0x6F, 0xB4, 0x3A, 0x6C, 0x35, 0x6D,
-    0x5A, 0x3F, 0xE4, 0xBB, 0x57, 0x4C, 0x5E, 0x7B
-  },
-  {
-    0x86, 0x9F, 0x7E, 0x31, 0x6B, 0x19, 0x4F, 0x95,
-    0x31, 0xBC, 0xAF, 0x33, 0xF7, 0x91, 0x3F, 0x1B,
-    0x9C, 0xFC, 0x6B, 0xB5, 0xDC, 0xF8, 0x6B, 0x69,
-    0x2B, 0xF8, 0xCA, 0xB2, 0x9B, 0x8A, 0xA9, 0x6F
-  },
-  {
-    0x32, 0x7D, 0xFA, 0x46, 0x44, 0x59, 0xD9, 0xE4,
-    0x8F, 0x5E, 0x55, 0xC7, 0xF5, 0xBA, 0xA6, 0x8F,
-    0xC4, 0xA2, 0x5A, 0xD6, 0x22, 0xBC, 0x7B, 0xF0,
-    0x1A, 0xCA, 0x82, 0xFD, 0x5E, 0x72, 0x31, 0x4C
-  },
-  {
-    0xE0, 0x0D, 0xAD, 0x31, 0x51, 0xB9, 0x08, 0x5E,
-    0xAE, 0x78, 0x69, 0x84, 0xFE, 0x20, 0x73, 0x52,
-    0x32, 0xB7, 0xFF, 0x7F, 0x1B, 0x1D, 0xB7, 0x96,
-    0x1F, 0xD0, 0xD0, 0xE0, 0xF6, 0x05, 0xDB, 0x9A
-  },
-  {
-    0x07, 0x6F, 0x64, 0x45, 0x20, 0xD0, 0xB4, 0x73,
-    0x2D, 0x6C, 0x53, 0x1C, 0x93, 0x49, 0x08, 0x90,
-    0x26, 0x93, 0x6D, 0x99, 0x82, 0x04, 0x61, 0xDA,
-    0x87, 0x74, 0x9A, 0x52, 0x0F, 0xBE, 0x90, 0xCE
-  },
-  {
-    0xB4, 0x41, 0x4C, 0xA1, 0x37, 0x3B, 0xE4, 0x6F,
-    0x15, 0xCE, 0xA6, 0xB1, 0x25, 0x5A, 0x7D, 0x18,
-    0x86, 0xC6, 0xFD, 0xB0, 0x8E, 0xD5, 0xAF, 0x96,
-    0x57, 0xD5, 0xAA, 0xC3, 0x17, 0xDE, 0x3A, 0x29
-  },
-  {
-    0x8D, 0x1A, 0xB0, 0x26, 0x3D, 0xAB, 0x7B, 0x86,
-    0xEC, 0xEE, 0x21, 0x91, 0x62, 0xD9, 0x99, 0xA0,
-    0x12, 0x45, 0x57, 0x22, 0x69, 0xDE, 0x31, 0x10,
-    0x0E, 0x5D, 0x88, 0xFC, 0x1B, 0x1E, 0xAA, 0x69
-  },
-  {
-    0xB4, 0x8D, 0x1C, 0x1F, 0x83, 0x92, 0x4A, 0x02,
-    0xA2, 0x3E, 0x5E, 0x0F, 0x97, 0x1E, 0x16, 0xE8,
-    0x7F, 0xC4, 0x88, 0x48, 0x53, 0x83, 0x34, 0x85,
-    0x19, 0x1A, 0x2B, 0x60, 0x72, 0x2F, 0xE2, 0x69
-  },
-  {
-    0xF2, 0xED, 0xD5, 0xF7, 0x50, 0xA2, 0x0A, 0x54,
-    0x1D, 0x3F, 0x6B, 0xD5, 0xDF, 0x80, 0x83, 0x8F,
-    0x11, 0x82, 0x5B, 0x25, 0xA9, 0x8F, 0x3D, 0xA5,
-    0xE1, 0x52, 0x3B, 0xFF, 0x81, 0x3B, 0xB5, 0x60
-  },
-  {
-    0x07, 0x16, 0x60, 0x04, 0xEF, 0x88, 0xE1, 0x61,
-    0x4E, 0xBD, 0xC8, 0x87, 0xDF, 0xC7, 0xDA, 0x42,
-    0xEB, 0xCD, 0xA0, 0x2D, 0x92, 0xC1, 0x2F, 0x18,
-    0xD1, 0x18, 0x6C, 0xE3, 0xC9, 0x87, 0x10, 0xE4
-  },
-  {
-    0x69, 0xF8, 0x3A, 0xA1, 0x01, 0xD6, 0x9B, 0x8F,
-    0x12, 0x20, 0xDC, 0x1C, 0x53, 0x8D, 0x89, 0x34,
-    0x45, 0x84, 0x20, 0xBE, 0x33, 0x5F, 0xEB, 0x46,
-    0xFF, 0xC4, 0x7A, 0x2C, 0x8E, 0x2E, 0x6A, 0x8A
-  },
-  {
-    0xE1, 0x46, 0x9F, 0x16, 0xC6, 0xFC, 0xA1, 0x51,
-    0x19, 0xA2, 0x72, 0xE5, 0x85, 0xC7, 0xF5, 0x04,
-    0x21, 0xBC, 0x8A, 0x41, 0x4C, 0x86, 0x4F, 0xC7,
-    0x6B, 0x01, 0x04, 0x8D, 0x4C, 0x6F, 0xC5, 0xD2
-  },
-  {
-    0x67, 0x63, 0x34, 0x3A, 0x1C, 0x80, 0xF1, 0x92,
-    0x83, 0xA8, 0x0A, 0xF8, 0x54, 0xE7, 0xE9, 0x06,
-    0x5C, 0x2A, 0x83, 0x49, 0xEF, 0x11, 0xF1, 0x1B,
-    0xFB, 0x76, 0xBA, 0x9F, 0x97, 0x04, 0x85, 0x39
-  },
-  {
-    0x1A, 0xE3, 0xA0, 0xB8, 0xB2, 0xC7, 0x88, 0x5B,
-    0xA3, 0x18, 0xAD, 0x6F, 0xD4, 0x49, 0xFC, 0x4D,
-    0x7F, 0x84, 0x04, 0xB5, 0x9C, 0xF3, 0x27, 0x5F,
-    0xCD, 0xEA, 0x13, 0x56, 0x34, 0x25, 0x77, 0x2D
-  },
-  {
-    0x3A, 0x71, 0x18, 0x4C, 0xBE, 0x8E, 0xB5, 0x8E,
-    0x68, 0x12, 0xBA, 0x7A, 0x7A, 0x1D, 0xCA, 0x0C,
-    0xA2, 0x8E, 0xEC, 0x63, 0x78, 0x2F, 0x2E, 0x6E,
-    0x3C, 0x0B, 0x87, 0x07, 0x3F, 0x53, 0x3F, 0xFD
-  },
-  {
-    0x18, 0x4C, 0xCF, 0x2A, 0x52, 0xF3, 0x88, 0xC9,
-    0xF8, 0x97, 0xA8, 0x57, 0xFE, 0x7C, 0xCE, 0xC2,
-    0x95, 0x99, 0x11, 0xA8, 0xD1, 0xE0, 0x9E, 0xE8,
-    0x80, 0x4D, 0x8D, 0x5D, 0x50, 0x8D, 0xD9, 0x18
-  },
-  {
-    0xA6, 0x6D, 0x40, 0x9A, 0xF7, 0xAF, 0xD7, 0x5B,
-    0xE8, 0x31, 0xDD, 0x49, 0x8C, 0x19, 0x6E, 0xF1,
-    0x2C, 0x73, 0xC3, 0x11, 0x29, 0xEC, 0x02, 0xD5,
-    0xF1, 0x2A, 0xB0, 0x2A, 0x2C, 0x63, 0xA2, 0x5E
-  },
-  {
-    0x58, 0xB3, 0x74, 0x97, 0xFC, 0xF0, 0xBE, 0x0E,
-    0x0C, 0xF1, 0x73, 0x40, 0x45, 0xC2, 0x95, 0xB2,
-    0x86, 0xC7, 0x6A, 0x7C, 0x04, 0x8E, 0x87, 0xC5,
-    0x40, 0x28, 0xED, 0x36, 0x91, 0x5B, 0x5D, 0xF3
-  },
-  {
-    0x2C, 0x73, 0x33, 0x54, 0x0A, 0x83, 0x2D, 0x64,
-    0x45, 0x6E, 0x43, 0x05, 0x8C, 0x50, 0xD9, 0x3C,
-    0x93, 0x2A, 0xD9, 0xB1, 0x8B, 0x3F, 0xC3, 0xA0,
-    0x59, 0x92, 0x07, 0xCD, 0xA3, 0xB3, 0xC7, 0xA6
-  },
-  {
-    0x3D, 0xC0, 0x62, 0xFF, 0xB5, 0x7D, 0x83, 0x5F,
-    0xE3, 0xAA, 0x40, 0x94, 0x66, 0x82, 0x2F, 0x91,
-    0x86, 0x91, 0x84, 0x23, 0x94, 0x75, 0x05, 0x16,
-    0x5F, 0xDC, 0xDF, 0xB7, 0x30, 0x6F, 0x72, 0x59
-  },
-  {
-    0x89, 0x20, 0x48, 0x44, 0xAC, 0xB9, 0x2F, 0x35,
-    0x3B, 0xFC, 0x89, 0xA3, 0xCE, 0x8A, 0x98, 0x17,
-    0x21, 0x9C, 0x10, 0x13, 0x85, 0xC5, 0x93, 0xCF,
-    0x60, 0xE0, 0xBE, 0xFA, 0x96, 0x38, 0xE1, 0x4E
-  },
-  {
-    0x78, 0x2B, 0xA9, 0x02, 0xE9, 0x12, 0x32, 0x94,
-    0x1C, 0x78, 0xC4, 0x9C, 0xD9, 0x77, 0x1A, 0x5D,
-    0x99, 0x92, 0xF9, 0xB0, 0x7D, 0x9C, 0x0A, 0x2D,
-    0xF8, 0x2D, 0x38, 0x5D, 0x15, 0xC4, 0x2B, 0xB3
-  },
-  {
-    0x0D, 0xC3, 0xFF, 0x7D, 0xF0, 0xDF, 0xC0, 0x23,
-    0x76, 0x3D, 0x76, 0x34, 0xE1, 0x8D, 0xA2, 0x73,
-    0x93, 0xFC, 0x9F, 0xDB, 0x1C, 0x15, 0x46, 0x46,
-    0x86, 0x10, 0x75, 0xF0, 0xA8, 0x7D, 0x0E, 0x90
-  },
-  {
-    0xB9, 0x5C, 0x65, 0xFB, 0x6F, 0x25, 0x4E, 0xDB,
-    0xDE, 0x8C, 0x03, 0x7D, 0x5C, 0x8B, 0x20, 0x39,
-    0x34, 0x0F, 0x4A, 0xC2, 0xB0, 0x23, 0xA6, 0xAA,
-    0x28, 0xA8, 0xFC, 0xD2, 0xD2, 0x68, 0x9C, 0xF4
-  },
-  {
-    0x87, 0xE8, 0xF5, 0x15, 0x72, 0xA5, 0xD6, 0xA2,
-    0x39, 0xF8, 0x5B, 0xC5, 0x3E, 0x11, 0x74, 0xE1,
-    0x5B, 0xE1, 0x2F, 0xCD, 0xF1, 0x51, 0xA0, 0xB9,
-    0xA2, 0xB4, 0x36, 0x40, 0xCA, 0xF7, 0x4C, 0x1D
-  },
-  {
-    0x2A, 0x6F, 0x3E, 0x46, 0x2C, 0x40, 0x5C, 0x35,
-    0x4F, 0xE8, 0x0F, 0xCC, 0xCE, 0xD1, 0xC9, 0xBE,
-    0x44, 0x32, 0x5D, 0x29, 0xE0, 0x7D, 0xA3, 0x09,
-    0x60, 0xB6, 0x25, 0xA7, 0x6E, 0xA4, 0x2F, 0x83
-  },
-  {
-    0x20, 0xB4, 0x6C, 0x8F, 0xBF, 0xCA, 0x97, 0x45,
-    0x32, 0x62, 0x46, 0x0F, 0x84, 0x98, 0xA7, 0xE2,
-    0xAF, 0x15, 0xAC, 0x79, 0xB5, 0x9D, 0xDF, 0xB0,
-    0x27, 0xBB, 0x52, 0xF2, 0xD6, 0x8E, 0x8F, 0x51
-  },
-  {
-    0x31, 0xB0, 0x76, 0x3C, 0xB9, 0xBA, 0x92, 0x40,
-    0x3D, 0xCA, 0x1A, 0xBD, 0xD7, 0x34, 0x2D, 0x7D,
-    0xE9, 0x4C, 0x58, 0x1E, 0x76, 0xF7, 0xC9, 0xA6,
-    0x1E, 0x51, 0x59, 0x28, 0xE1, 0x0B, 0x4E, 0x77
-  },
-  {
-    0xE1, 0x91, 0xE1, 0x17, 0x06, 0x3C, 0xFA, 0xC9,
-    0x64, 0x2C, 0xD9, 0x3C, 0xB4, 0x2B, 0x39, 0xED,
-    0xDD, 0x9E, 0x4A, 0xB6, 0x5F, 0x1D, 0x03, 0x97,
-    0xE3, 0xE1, 0x7D, 0xD0, 0x4C, 0xAB, 0x11, 0x80
-  },
-  {
-    0x22, 0x5A, 0x20, 0x21, 0x07, 0xA7, 0x47, 0x03,
-    0xE0, 0x41, 0xC6, 0xCC, 0xA4, 0xEA, 0xCF, 0x4F,
-    0x21, 0xEE, 0xA6, 0xF2, 0x2A, 0x14, 0x6D, 0x8D,
-    0xA2, 0xAB, 0x8C, 0xF6, 0x19, 0x72, 0x29, 0xA5
-  },
-  {
-    0xEF, 0xC4, 0x83, 0x6B, 0xE4, 0xAC, 0x3E, 0x97,
-    0x91, 0xD2, 0xEC, 0x62, 0x22, 0x6E, 0x7D, 0xF6,
-    0x41, 0x18, 0xF4, 0x56, 0x5C, 0x19, 0xE6, 0xC9,
-    0xE8, 0x40, 0x63, 0xF5, 0x66, 0x1C, 0x7B, 0x2F
-  },
-  {
-    0x3A, 0x76, 0xB0, 0x15, 0x2C, 0x0E, 0x1D, 0x1F,
-    0xD7, 0xAC, 0x9D, 0x91, 0xA2, 0x8A, 0x18, 0xE1,
-    0xA4, 0xC0, 0x60, 0x80, 0xF2, 0xB7, 0xEC, 0xEF,
-    0xB6, 0xEF, 0xFE, 0x28, 0xB8, 0xCF, 0xC7, 0x65
-  },
-  {
-    0x0D, 0x46, 0xAD, 0x03, 0x90, 0x70, 0x11, 0x58,
-    0x28, 0xF9, 0x4E, 0xB6, 0xB7, 0x29, 0x63, 0xE6,
-    0x0A, 0x7D, 0x2D, 0xB7, 0xCA, 0x89, 0x91, 0xD2,
-    0x25, 0xC3, 0x87, 0x7B, 0x14, 0x9B, 0x0A, 0x8A
-  },
-  {
-    0xE4, 0x4C, 0xFC, 0x42, 0x11, 0x8F, 0x09, 0x6B,
-    0xFC, 0x51, 0x52, 0x1C, 0xB1, 0x8D, 0x5D, 0x65,
-    0x25, 0x58, 0x6B, 0x98, 0x9F, 0x4E, 0xE2, 0xB8,
-    0x28, 0xC5, 0x19, 0x9F, 0xEA, 0xB9, 0x4B, 0x82
-  },
-  {
-    0x6D, 0x4B, 0xD2, 0xE0, 0x73, 0xEC, 0x49, 0x66,
-    0x84, 0x7F, 0x5C, 0xBE, 0x88, 0xDD, 0xFA, 0xBA,
-    0x2B, 0xE4, 0xCA, 0xF2, 0xF3, 0x33, 0x55, 0x2B,
-    0x85, 0x53, 0xDA, 0x53, 0x34, 0x87, 0xC2, 0x5B
-  },
-  {
-    0xBB, 0xC4, 0x6D, 0xB4, 0x37, 0xD1, 0x07, 0xC9,
-    0x67, 0xCA, 0x6D, 0x91, 0x45, 0x5B, 0xBD, 0xFE,
-    0x05, 0x21, 0x18, 0xAB, 0xD1, 0xD0, 0x69, 0xF0,
-    0x43, 0x59, 0x48, 0x7E, 0x13, 0xAE, 0xA0, 0xE1
-  },
-  {
-    0xB9, 0x74, 0xC1, 0x4D, 0xB7, 0xD3, 0x17, 0x4D,
-    0xD0, 0x60, 0x84, 0xBB, 0x30, 0x31, 0x08, 0xB2,
-    0xF0, 0xDA, 0xF5, 0x0E, 0xCC, 0xC3, 0x29, 0x35,
-    0x43, 0x79, 0x5C, 0x96, 0x36, 0xC6, 0x24, 0x82
-  },
-  {
-    0x0E, 0xEE, 0x23, 0x5B, 0x06, 0x93, 0x6A, 0xED,
-    0x71, 0x73, 0xC8, 0xC1, 0x9A, 0xA7, 0xC2, 0x17,
-    0xB9, 0xEE, 0xDA, 0xEB, 0x1A, 0x88, 0xF3, 0x05,
-    0x52, 0xE9, 0x22, 0x51, 0x45, 0x14, 0x9E, 0x82
-  },
-  {
-    0x36, 0xD0, 0x89, 0xE0, 0x25, 0xB5, 0x68, 0x69,
-    0x37, 0x74, 0x28, 0x25, 0xE6, 0xEE, 0x3D, 0x83,
-    0xE7, 0xD7, 0xA5, 0x0C, 0x82, 0x3C, 0x82, 0x88,
-    0x34, 0x60, 0xF3, 0x85, 0x14, 0x7D, 0xC1, 0x7B
-  },
-  {
-    0x77, 0xEE, 0x4F, 0xFC, 0x9F, 0x5D, 0xD6, 0x05,
-    0x47, 0x0D, 0xC0, 0xE7, 0x4D, 0x6B, 0x17, 0xC5,
-    0x13, 0x0D, 0x8B, 0x73, 0x91, 0x3F, 0x36, 0xD5,
-    0xF8, 0x78, 0x7E, 0x61, 0x9A, 0x94, 0x7C, 0xA0
-  },
-  {
-    0x0F, 0xE6, 0xC2, 0xAB, 0x75, 0x42, 0x33, 0x36,
-    0x0D, 0x68, 0xB9, 0xAC, 0x80, 0xCD, 0x61, 0x18,
-    0x4B, 0xFA, 0xA7, 0xD3, 0x56, 0x29, 0x41, 0x80,
-    0x02, 0x5F, 0xE4, 0x06, 0x39, 0xC7, 0x6C, 0x36
-  },
-  {
-    0x99, 0x60, 0x88, 0xC7, 0x94, 0x56, 0xEC, 0xDD,
-    0xA1, 0xFB, 0xC0, 0x2E, 0xE1, 0xBA, 0x42, 0xD9,
-    0x1D, 0x85, 0x8C, 0x31, 0x0A, 0x5A, 0x8B, 0x46,
-    0x74, 0xFE, 0x6A, 0x7C, 0x14, 0x44, 0x14, 0xA1
-  },
-  {
-    0x9E, 0x33, 0x8A, 0xED, 0x0B, 0xC7, 0x1C, 0x0C,
-    0x97, 0xF1, 0x98, 0x55, 0xBF, 0x49, 0x17, 0x4F,
-    0x70, 0xA9, 0xD7, 0x70, 0x14, 0x87, 0x36, 0x63,
-    0x21, 0x34, 0x27, 0x50, 0x2B, 0xD8, 0x5D, 0x9F
-  },
-  {
-    0x4A, 0x84, 0x3D, 0x26, 0xAD, 0xEC, 0x52, 0x0E,
-    0x4B, 0x5D, 0xBF, 0x01, 0x45, 0xCC, 0x4F, 0x50,
-    0x24, 0xFA, 0xFC, 0xDC, 0x20, 0x25, 0x82, 0x4A,
-    0x8C, 0x64, 0x65, 0x06, 0x17, 0x68, 0x7E, 0xE7
-  },
-  {
-    0xC9, 0x16, 0x78, 0xC4, 0xA6, 0x4E, 0x2F, 0xA4,
-    0xB7, 0x4D, 0xE6, 0x1A, 0xD0, 0xC0, 0x6F, 0xF0,
-    0x6B, 0x5D, 0x67, 0x2F, 0xA7, 0xC6, 0x87, 0x7A,
-    0x40, 0x14, 0xCE, 0x9E, 0x91, 0xBE, 0x38, 0xD7
-  },
-  {
-    0xFF, 0x77, 0x77, 0x40, 0x5D, 0x32, 0x7A, 0xDB,
-    0x58, 0x30, 0x1C, 0x71, 0x1E, 0xCD, 0xC2, 0xBC,
-    0xE1, 0xBF, 0xA8, 0x29, 0xFF, 0xC9, 0xB1, 0x17,
-    0xF2, 0x1A, 0x2B, 0x19, 0x8D, 0x0D, 0x68, 0x84
-  },
-  {
-    0x0A, 0x8D, 0xDA, 0xF1, 0x72, 0x8C, 0x5C, 0xD9,
-    0x3A, 0x25, 0x5D, 0x56, 0x23, 0xC3, 0xDA, 0xDA,
-    0x2D, 0x3D, 0x05, 0x71, 0xBF, 0x14, 0x38, 0xAD,
-    0xC8, 0xC9, 0x64, 0xA9, 0xAA, 0xD1, 0x18, 0xCB
-  },
-  {
-    0xC1, 0x33, 0xAB, 0xBD, 0x0D, 0x2D, 0x80, 0x8A,
-    0x67, 0xB6, 0x74, 0x5B, 0x4B, 0x36, 0x50, 0xB4,
-    0xA6, 0x4D, 0xC2, 0x76, 0xCF, 0x98, 0xE3, 0x03,
-    0x57, 0xB6, 0xAB, 0xD5, 0xC1, 0xD2, 0x2A, 0x9B
-  },
-  {
-    0xC5, 0x9E, 0xE5, 0xC1, 0x96, 0xBA, 0x3C, 0xFE,
-    0xF9, 0x40, 0x87, 0x79, 0x82, 0x07, 0xBD, 0xCE,
-    0xF1, 0x39, 0xCE, 0x2C, 0xF7, 0x8D, 0xCE, 0xD6,
-    0x19, 0x8F, 0x0F, 0xA3, 0xA4, 0x09, 0x13, 0x1C
-  },
-  {
-    0xC7, 0xFD, 0xAD, 0xE5, 0x9C, 0x46, 0x99, 0x38,
-    0x5E, 0xBA, 0x59, 0xE7, 0x56, 0xC2, 0xB1, 0x71,
-    0xB0, 0x23, 0xDE, 0xAE, 0x08, 0x2E, 0x5A, 0x6E,
-    0x3B, 0xFB, 0xDC, 0x10, 0x73, 0xA3, 0x20, 0x03
-  },
-  {
-    0x97, 0x53, 0x27, 0xC5, 0xF4, 0xDE, 0xC6, 0x41,
-    0x4B, 0x6E, 0x00, 0xCB, 0x04, 0x23, 0x37, 0xB8,
-    0xD2, 0xA6, 0x56, 0x46, 0x37, 0xA7, 0x44, 0x2A,
-    0xEC, 0x7B, 0xE8, 0xF8, 0xC8, 0x9A, 0x2F, 0x1C
-  },
-  {
-    0xA2, 0xF7, 0x24, 0x6D, 0xF4, 0xA2, 0x4E, 0xFB,
-    0xAC, 0xD3, 0xFD, 0x60, 0x68, 0x3A, 0xBC, 0x86,
-    0x8B, 0xEF, 0x25, 0x32, 0x70, 0x52, 0xCF, 0x2F,
-    0x1D, 0x93, 0xEC, 0xE4, 0xFF, 0xCD, 0x73, 0xC6
-  },
-  {
-    0x49, 0x7F, 0xB2, 0xAC, 0xAC, 0xF1, 0x23, 0xF3,
-    0x59, 0x5E, 0x40, 0xFC, 0x51, 0xA7, 0xBD, 0x24,
-    0x45, 0x8B, 0xBC, 0xBA, 0x4A, 0x29, 0x40, 0xA5,
-    0xCB, 0x03, 0xD6, 0x08, 0xFB, 0xDF, 0x28, 0x25
-  },
-  {
-    0x0E, 0x97, 0xD2, 0x27, 0x93, 0xCE, 0x6F, 0x28,
-    0x3D, 0x5C, 0x74, 0x0D, 0x30, 0x8A, 0x27, 0xAD,
-    0x7C, 0x3B, 0x0D, 0x9A, 0xFC, 0xD3, 0xD9, 0xE9,
-    0xB9, 0xCA, 0xC5, 0x6B, 0x10, 0x29, 0x0C, 0x8F
-  },
-  {
-    0x66, 0x30, 0xB3, 0x56, 0x18, 0xE7, 0x00, 0xD9,
-    0x10, 0x68, 0x38, 0x93, 0x79, 0x5E, 0xF7, 0x0B,
-    0xF0, 0x7E, 0xB1, 0x56, 0xF5, 0x5F, 0xFE, 0x3B,
-    0x69, 0xAD, 0x88, 0xA4, 0xB8, 0xB0, 0xBF, 0xA1
-  },
-  {
-    0x02, 0xF7, 0x42, 0xC6, 0xE9, 0x52, 0x78, 0x12,
-    0x1A, 0x05, 0xE4, 0x42, 0x05, 0x44, 0x4F, 0xC5,
-    0xEA, 0x6A, 0xF5, 0xE7, 0x41, 0xC5, 0x35, 0xBC,
-    0x2C, 0xBC, 0x3B, 0x23, 0x5A, 0x2E, 0xA2, 0xB0
-  },
-  {
-    0x46, 0x22, 0xF3, 0x6E, 0xB8, 0x98, 0x38, 0x3F,
-    0x60, 0xD5, 0xBE, 0xD8, 0x09, 0xAC, 0x5C, 0x47,
-    0x45, 0xC5, 0xD6, 0xAB, 0x84, 0xBC, 0xAD, 0xF7,
-    0x9C, 0xF2, 0xA9, 0x6D, 0x4E, 0xC8, 0x88, 0x18
-  },
-  {
-    0xCC, 0xD1, 0x1F, 0xAA, 0xA0, 0x58, 0x1E, 0xC3,
-    0x2C, 0x3A, 0x40, 0x3F, 0x92, 0xEF, 0x43, 0xD5,
-    0xDC, 0xF1, 0x95, 0xC1, 0xA1, 0x01, 0xDB, 0xFD,
-    0x49, 0x5D, 0xBB, 0x4D, 0xCE, 0x80, 0x69, 0xE0
-  },
-  {
-    0x06, 0x02, 0x4D, 0x6B, 0x07, 0xE0, 0x00, 0xBC,
-    0xE6, 0x13, 0x47, 0x0A, 0x28, 0x80, 0x51, 0x9B,
-    0x8B, 0xE4, 0xA3, 0x6B, 0xF3, 0x3C, 0x99, 0xC9,
-    0x17, 0x89, 0x3E, 0xC7, 0x5D, 0xD9, 0x0F, 0xE3
-  },
-  {
-    0xD9, 0x3A, 0xF9, 0x47, 0xB1, 0x46, 0x3A, 0x81,
-    0x7D, 0xB4, 0x41, 0xA4, 0x74, 0x58, 0x8D, 0x6F,
-    0x99, 0x6D, 0x24, 0x39, 0x83, 0xE8, 0x3C, 0x7E,
-    0xEE, 0x90, 0xE1, 0xEF, 0xA4, 0x40, 0xD9, 0xBA
-  },
-  {
-    0x94, 0x89, 0x89, 0x45, 0xA7, 0xDB, 0x25, 0x9E,
-    0x1B, 0x2E, 0x7C, 0xBE, 0xA4, 0x8A, 0xA0, 0xC6,
-    0xD6, 0x57, 0x0D, 0x18, 0x17, 0x9F, 0x06, 0x18,
-    0x47, 0x1C, 0x88, 0xF3, 0xEC, 0x3B, 0x0F, 0xC3
-  },
-  {
-    0x4C, 0x2D, 0x93, 0x52, 0x56, 0x39, 0x2A, 0xA2,
-    0xBE, 0x6E, 0x10, 0x78, 0xC0, 0x59, 0x38, 0x15,
-    0xAB, 0xEF, 0x46, 0x9D, 0xE9, 0x69, 0xB5, 0x7B,
-    0x88, 0x1B, 0x93, 0xAF, 0x55, 0x84, 0x65, 0xFA
-  },
-  {
-    0xAA, 0xC7, 0xBE, 0x16, 0xE5, 0x2F, 0x79, 0x0E,
-    0x4F, 0xF7, 0x0B, 0x24, 0x01, 0x5C, 0xB1, 0x1B,
-    0x40, 0x61, 0x6E, 0x94, 0xDB, 0x13, 0x88, 0x2B,
-    0x41, 0xD3, 0xDD, 0x8C, 0x8C, 0x19, 0x52, 0xB7
-  },
-  {
-    0x04, 0x34, 0xB4, 0x7C, 0x0E, 0xE7, 0xE6, 0xF5,
-    0x39, 0x06, 0x79, 0x9A, 0x43, 0x20, 0x9D, 0x3F,
-    0xC3, 0x7D, 0x3F, 0xD1, 0xF7, 0x45, 0x55, 0xDE,
-    0x67, 0xAB, 0xAC, 0xB9, 0x51, 0xB0, 0x06, 0xF4
-  },
-  {
-    0x04, 0x42, 0xFB, 0xDD, 0x5B, 0x58, 0x49, 0x6E,
-    0xC7, 0x81, 0x59, 0xCC, 0xAA, 0x88, 0x7C, 0x88,
-    0xA8, 0x61, 0xFC, 0xCA, 0x70, 0xE7, 0xAB, 0xC9,
-    0x76, 0xF2, 0x4C, 0x11, 0x58, 0x8B, 0xE6, 0xEE
-  },
-  {
-    0xA7, 0x3E, 0x68, 0xBB, 0x18, 0xB0, 0x07, 0x64,
-    0x8E, 0x76, 0xB5, 0x52, 0x8D, 0x1E, 0x50, 0xE7,
-    0xFA, 0x65, 0x4D, 0xA3, 0x97, 0x0E, 0xC3, 0x49,
-    0xBF, 0x59, 0x1A, 0x30, 0xD9, 0x32, 0xC8, 0xF6
-  },
-  {
-    0x84, 0x9C, 0xF8, 0x73, 0x16, 0x2B, 0xA7, 0x2C,
-    0x4B, 0x80, 0x08, 0xE6, 0x8F, 0x93, 0x2F, 0xB3,
-    0xA0, 0x15, 0xA7, 0x4F, 0xCF, 0x95, 0x71, 0x98,
-    0xD5, 0x6A, 0x0D, 0xC4, 0x62, 0x5A, 0x74, 0xF5
-  },
-  {
-    0xA6, 0xDE, 0xC6, 0xFC, 0x89, 0x49, 0x34, 0x9C,
-    0x4E, 0x9A, 0x9C, 0x62, 0x36, 0x87, 0xFB, 0xA4,
-    0xC9, 0xB2, 0x75, 0xBD, 0xB2, 0x30, 0x50, 0x9B,
-    0x72, 0xE3, 0xD6, 0x71, 0x19, 0x14, 0xE2, 0xD8
-  },
-  {
-    0x58, 0xAF, 0xC2, 0xB2, 0x4A, 0x19, 0xFD, 0xBF,
-    0x76, 0xA0, 0x9B, 0x70, 0xB1, 0xE3, 0xB7, 0x7F,
-    0xCB, 0xD4, 0x06, 0x50, 0x01, 0xD9, 0x63, 0x66,
-    0x40, 0xEB, 0x5A, 0x26, 0x28, 0xF4, 0x42, 0xCC
-  },
-  {
-    0x47, 0x3A, 0x43, 0xAA, 0x1D, 0x6A, 0x02, 0x87,
-    0x67, 0x43, 0x2A, 0x83, 0x0A, 0xD1, 0x22, 0x1E,
-    0x02, 0x9C, 0x58, 0x9A, 0xF9, 0xFD, 0x4D, 0x68,
-    0xD5, 0x6C, 0x4F, 0xB8, 0x20, 0x25, 0x93, 0x52
-  },
-  {
-    0xA0, 0xAE, 0xB4, 0xA5, 0xAD, 0x89, 0x9A, 0xF2,
-    0xE2, 0x91, 0xB2, 0xE7, 0x9D, 0xBB, 0x6B, 0x0B,
-    0xF5, 0x6B, 0x58, 0x44, 0x67, 0x6B, 0x95, 0x5D,
-    0x94, 0x5B, 0x6C, 0x4A, 0xE1, 0xC0, 0x1E, 0xED
-  },
-  {
-    0xCF, 0xC3, 0x02, 0x9A, 0x9E, 0xEB, 0x15, 0x22,
-    0x22, 0xD9, 0x66, 0x53, 0x49, 0x2E, 0x46, 0xCA,
-    0x64, 0xCA, 0x4F, 0x0D, 0x64, 0x68, 0x30, 0x28,
-    0xD3, 0xAE, 0xE5, 0xA4, 0x9C, 0xB4, 0x71, 0x63
-  },
-  {
-    0x74, 0x67, 0xCF, 0x77, 0x61, 0xCD, 0x9F, 0x55,
-    0x61, 0x8D, 0x30, 0xC9, 0xD8, 0xC5, 0xB4, 0x1E,
-    0x47, 0x01, 0x51, 0x0C, 0x7D, 0x16, 0xAB, 0x4E,
-    0x5D, 0x89, 0xA5, 0xD7, 0x71, 0x46, 0xB0, 0x92
-  },
-  {
-    0xC0, 0x16, 0xD8, 0x42, 0x4E, 0x53, 0x1E, 0xFC,
-    0x57, 0x37, 0xC0, 0x3F, 0xC9, 0x0A, 0x5E, 0xFC,
-    0x9F, 0x90, 0x22, 0xE4, 0xD5, 0xBA, 0x3B, 0x06,
-    0x95, 0xF7, 0xAE, 0x53, 0x82, 0x60, 0xC2, 0xEE
-  },
-  {
-    0x5D, 0x38, 0x11, 0x89, 0xE6, 0x00, 0x0F, 0xC1,
-    0x17, 0xC7, 0x1F, 0x59, 0xF7, 0x86, 0xFB, 0x4B,
-    0x79, 0xFD, 0xD4, 0xEC, 0x5D, 0x4C, 0xD3, 0x0A,
-    0xAC, 0x21, 0x57, 0xF7, 0x5D, 0xEA, 0xD7, 0x78
-  },
-  {
-    0x7C, 0x9C, 0xDD, 0x15, 0xC4, 0xC9, 0xAB, 0xCA,
-    0xCB, 0xFE, 0x6F, 0x66, 0x4A, 0x7F, 0x5F, 0x8B,
-    0x2E, 0x25, 0x91, 0x83, 0x29, 0x1A, 0xE5, 0xCC,
-    0x91, 0x30, 0xA0, 0xB2, 0x41, 0xE5, 0x73, 0x7F
-  },
-  {
-    0xB8, 0x81, 0x31, 0x72, 0xF5, 0x21, 0x8A, 0xC3,
-    0xEB, 0x68, 0x7B, 0xC4, 0xAF, 0xAF, 0xF8, 0x3F,
-    0xBC, 0xA4, 0xE9, 0xC1, 0xA4, 0x62, 0x96, 0x33,
-    0x01, 0xDD, 0x44, 0x59, 0x85, 0x01, 0x50, 0xA2
-  },
-  {
-    0xE3, 0xD1, 0x30, 0xE3, 0x6A, 0x02, 0x8E, 0xA8,
-    0x0C, 0x57, 0xA2, 0xAA, 0x48, 0x19, 0xFD, 0x34,
-    0xE4, 0xDB, 0xBE, 0xB1, 0x4A, 0x49, 0x58, 0x94,
-    0xB1, 0x5A, 0x87, 0x87, 0xDB, 0x1A, 0x9F, 0x9C
-  },
-  {
-    0xFF, 0xF1, 0xB4, 0x40, 0x0F, 0x48, 0x9E, 0x07,
-    0xD2, 0x23, 0x51, 0xC1, 0xF0, 0x95, 0x65, 0xE2,
-    0x65, 0xB6, 0x8A, 0xD2, 0x9F, 0x63, 0x29, 0x87,
-    0x9E, 0x6B, 0x5F, 0x7F, 0x6B, 0x41, 0x93, 0x50
-  },
-  {
-    0x55, 0x9E, 0xD5, 0xBB, 0x3E, 0x5F, 0x39, 0x85,
-    0xFB, 0x57, 0x82, 0x28, 0xBF, 0x8C, 0x0F, 0x0B,
-    0x17, 0x3F, 0x8D, 0x11, 0x53, 0xFA, 0xEB, 0x9F,
-    0xEC, 0x75, 0x6F, 0xFD, 0x18, 0xA8, 0x72, 0x38
-  },
-  {
-    0x88, 0x13, 0x12, 0x53, 0x01, 0x4D, 0x23, 0xC5,
-    0xE3, 0x8E, 0x78, 0xBD, 0xA1, 0x94, 0x55, 0xD8,
-    0xA0, 0x23, 0xBD, 0x7A, 0x7E, 0x72, 0x74, 0x57,
-    0xA1, 0x52, 0xA8, 0x1D, 0x0B, 0x17, 0x18, 0xA7
-  },
-  {
-    0xF4, 0xD3, 0xFA, 0xE7, 0xCD, 0xE6, 0xBB, 0x66,
-    0x71, 0x5A, 0x19, 0x8F, 0xA4, 0x8D, 0x21, 0x0C,
-    0x10, 0xF8, 0xDF, 0x32, 0x04, 0xAE, 0x5E, 0x33,
-    0xA6, 0x02, 0x46, 0x7F, 0x1B, 0x62, 0x26, 0x85
-  },
-  {
-    0xE6, 0x2B, 0x62, 0x2A, 0xC8, 0xA2, 0x13, 0x66,
-    0xBF, 0x2D, 0xED, 0x30, 0xF4, 0x08, 0x2A, 0x53,
-    0xE7, 0x7A, 0x9A, 0xA6, 0x96, 0xB1, 0xF3, 0xEE,
-    0x8C, 0xFE, 0x99, 0xC5, 0x93, 0x12, 0xD9, 0xC7
-  },
-  {
-    0x3D, 0x39, 0xFF, 0xA8, 0x55, 0x12, 0xC3, 0xC8,
-    0x89, 0x0D, 0x4B, 0xDF, 0x31, 0x88, 0x9C, 0xA6,
-    0x6E, 0x5C, 0xEC, 0xB6, 0x3C, 0xFE, 0xED, 0x57,
-    0xB9, 0x26, 0x37, 0x08, 0xE7, 0x4C, 0x55, 0x0B
-  },
-  {
-    0xB1, 0x70, 0x3B, 0x8A, 0x00, 0xE2, 0x61, 0x24,
-    0x97, 0xD1, 0x1C, 0x64, 0x9D, 0x15, 0x0A, 0x6C,
-    0x96, 0x3B, 0xF4, 0xFD, 0x38, 0xFE, 0xB1, 0xC3,
-    0x81, 0xFE, 0x0D, 0x9B, 0x04, 0xC0, 0x2B, 0x22
-  },
-  {
-    0x12, 0xFB, 0xAD, 0x9D, 0x37, 0x82, 0x81, 0x2D,
-    0x71, 0x17, 0x9A, 0x50, 0xFB, 0xD9, 0xB4, 0x56,
-    0x6C, 0x7B, 0x06, 0xF5, 0xD7, 0x7C, 0x6F, 0x32,
-    0x97, 0x17, 0xFB, 0x4A, 0xE2, 0xC5, 0xB4, 0xEC
-  },
-  {
-    0x76, 0x8B, 0x65, 0x9A, 0x82, 0x4B, 0x43, 0xF9,
-    0xCA, 0x56, 0x60, 0xB9, 0xDD, 0xF0, 0x5F, 0x8B,
-    0xA2, 0xBC, 0x49, 0x93, 0x86, 0x6B, 0x7C, 0x9B,
-    0xE6, 0x87, 0x91, 0xF5, 0xB2, 0x46, 0x44, 0xB3
-  },
-  {
-    0xC0, 0x20, 0x4E, 0x23, 0xCA, 0x86, 0xBE, 0x20,
-    0x5E, 0xED, 0x0C, 0xC3, 0xDD, 0x72, 0x25, 0xCE,
-    0x5F, 0xFE, 0x1E, 0xE1, 0x2D, 0xAC, 0xB9, 0x3C,
-    0x5D, 0x06, 0x29, 0xB7, 0x69, 0x9C, 0xD7, 0x33
-  },
-  {
-    0xF4, 0x32, 0x96, 0x96, 0x1F, 0x8E, 0xAE, 0xCC,
-    0xD8, 0x54, 0x41, 0x3D, 0xC5, 0xAD, 0xDA, 0x62,
-    0x39, 0x3A, 0x34, 0x46, 0x27, 0xE8, 0x6C, 0x06,
-    0x6E, 0x79, 0x07, 0x55, 0x00, 0x40, 0x74, 0x4F
-  },
-  {
-    0x82, 0xF4, 0x46, 0x9E, 0x80, 0x78, 0x90, 0x21,
-    0xC6, 0x1D, 0xB7, 0xE3, 0x2F, 0x36, 0xAC, 0xBE,
-    0x59, 0x1A, 0x64, 0xF2, 0x60, 0x59, 0x26, 0x57,
-    0x70, 0xAE, 0x65, 0x8D, 0x62, 0xBD, 0xE7, 0xEF
-  },
-  {
-    0x2A, 0x85, 0x67, 0x1A, 0x55, 0xC8, 0x9F, 0xA1,
-    0x56, 0xE2, 0x96, 0xF7, 0x5D, 0xF1, 0xC7, 0xDB,
-    0xAB, 0x17, 0x8E, 0xBB, 0xA6, 0x52, 0x04, 0xA7,
-    0xE8, 0x17, 0x8C, 0x91, 0x6A, 0xD0, 0x87, 0xF8
-  },
-  {
-    0x33, 0xE2, 0x45, 0x00, 0x28, 0x08, 0xF6, 0x93,
-    0x4B, 0x9B, 0xE3, 0xA6, 0xFA, 0x8E, 0x86, 0x70,
-    0xC9, 0x0B, 0xAA, 0x62, 0x57, 0x17, 0xB9, 0x20,
-    0x1E, 0xB9, 0xB9, 0xDD, 0x91, 0x2F, 0x5C, 0xE2
-  },
-  {
-    0x58, 0xEE, 0x5E, 0x79, 0x91, 0x84, 0xAD, 0x9D,
-    0xA9, 0xA1, 0x7C, 0x5B, 0x46, 0xA4, 0x81, 0x0E,
-    0x28, 0xBD, 0xD0, 0x8C, 0x35, 0x81, 0x63, 0x4C,
-    0x83, 0x50, 0x30, 0x53, 0x9B, 0x79, 0x54, 0x4D
-  },
-  {
-    0x26, 0xD8, 0xFA, 0x08, 0xDB, 0x30, 0x8E, 0xDF,
-    0x2F, 0x96, 0xF8, 0x2A, 0xF6, 0xB6, 0x0C, 0x17,
-    0xD8, 0xF1, 0xFF, 0x85, 0x8C, 0x52, 0xF2, 0xD0,
-    0xF3, 0x83, 0x10, 0x78, 0x12, 0x75, 0x26, 0xA3
-  },
-  {
-    0x25, 0xA5, 0x8D, 0xF4, 0x03, 0x92, 0x47, 0xA2,
-    0x2F, 0x68, 0xFF, 0x2B, 0x71, 0x76, 0x6B, 0x7B,
-    0x56, 0x00, 0xDD, 0xF4, 0x01, 0xD9, 0x9F, 0xF2,
-    0xC1, 0x95, 0x5A, 0xE7, 0xBB, 0x43, 0xE5, 0x6A
-  },
-  {
-    0xBE, 0x43, 0xE8, 0x68, 0x61, 0x60, 0xE9, 0x07,
-    0xBA, 0x54, 0x7D, 0x5A, 0x87, 0x9D, 0x10, 0xF7,
-    0x88, 0xAF, 0xC8, 0x42, 0xB8, 0xEB, 0xB9, 0xF3,
-    0xF7, 0x88, 0x53, 0x25, 0x15, 0x91, 0x2A, 0xE4
-  },
-  {
-    0xAA, 0x4A, 0xCB, 0x95, 0xD8, 0x79, 0x19, 0x2A,
-    0x69, 0x08, 0xE8, 0x8A, 0xE3, 0xD6, 0x58, 0x9F,
-    0x4E, 0x3E, 0xB3, 0xD4, 0xE0, 0x3A, 0x80, 0x6C,
-    0xCD, 0xB9, 0xB5, 0xD6, 0xA9, 0x58, 0x6F, 0xDF
-  },
-  {
-    0x84, 0x66, 0xD5, 0xE4, 0x4C, 0xE9, 0x5B, 0x4F,
-    0xA1, 0x79, 0x99, 0x24, 0x44, 0xB8, 0xC2, 0x48,
-    0x5B, 0x88, 0x64, 0x48, 0xA6, 0xDC, 0xCF, 0xCF,
-    0x0B, 0xC3, 0x0B, 0xC5, 0xF0, 0xF5, 0x6B, 0x01
-  },
-  {
-    0x00, 0x56, 0xD7, 0xE0, 0xAC, 0x33, 0x35, 0x57,
-    0x83, 0x65, 0x9B, 0x38, 0xEC, 0x8B, 0xEC, 0xCB,
-    0xF7, 0x83, 0x93, 0x99, 0x67, 0xFE, 0x37, 0xAE,
-    0xAC, 0xF3, 0x69, 0xDD, 0xB6, 0x70, 0xAD, 0xA0
-  },
-  {
-    0x90, 0x4F, 0x42, 0xF3, 0x45, 0x53, 0x0A, 0xC8,
-    0xA3, 0x52, 0xD0, 0x9B, 0x68, 0x72, 0xC5, 0xBC,
-    0xA3, 0x66, 0x1A, 0xBC, 0xA6, 0xCA, 0x64, 0xC8,
-    0x09, 0x9F, 0x2F, 0xB6, 0x86, 0x7C, 0x30, 0xFE
-  },
-  {
-    0xA8, 0xC3, 0xBF, 0x46, 0xF0, 0xB8, 0x8B, 0xBD,
-    0x16, 0xFD, 0xA4, 0xA8, 0xB5, 0xCA, 0x81, 0xF5,
-    0x24, 0x35, 0x20, 0xC3, 0x85, 0xD3, 0x8C, 0x0B,
-    0x4D, 0x23, 0x52, 0xAB, 0x34, 0xEA, 0x35, 0xE6
-  },
-  {
-    0x8D, 0x33, 0x17, 0xFC, 0x60, 0x6E, 0x56, 0x6D,
-    0x30, 0x2E, 0xDA, 0xB5, 0x5E, 0x80, 0x16, 0x11,
-    0xD8, 0xC1, 0x3F, 0x4A, 0x9A, 0x19, 0xD1, 0x85,
-    0x97, 0x8D, 0xEF, 0x72, 0x83, 0x9C, 0xDA, 0xA3
-  },
-  {
-    0x97, 0x38, 0x80, 0x11, 0xF5, 0x7A, 0x49, 0x86,
-    0x90, 0xEC, 0x79, 0x88, 0xEF, 0xF9, 0x03, 0xFF,
-    0x9B, 0x23, 0x58, 0xF5, 0xB6, 0x1B, 0xAA, 0x20,
-    0xF7, 0x32, 0x90, 0xD6, 0x29, 0x6C, 0x1C, 0x0B
-  },
-  {
-    0xCF, 0xB8, 0x0C, 0xAB, 0x89, 0x90, 0x95, 0x08,
-    0x09, 0x12, 0x3F, 0xBF, 0x85, 0xE9, 0x76, 0x45,
-    0x47, 0x08, 0xE0, 0xAF, 0xED, 0x69, 0x8E, 0x33,
-    0x52, 0xA3, 0x16, 0x35, 0x90, 0x9D, 0xB3, 0xE5
-  },
-  {
-    0x0D, 0xAA, 0xCA, 0x55, 0x13, 0x2A, 0x23, 0x5B,
-    0x83, 0x1A, 0x5E, 0xFF, 0x4E, 0xA4, 0x67, 0xCD,
-    0x10, 0xAF, 0x44, 0x20, 0x08, 0x47, 0x73, 0x5A,
-    0x1F, 0xFD, 0x51, 0xFA, 0x37, 0xEA, 0xA2, 0xA2
-  },
-  {
-    0x69, 0xB2, 0x14, 0x97, 0xEB, 0xB8, 0x24, 0xBA,
-    0x66, 0x53, 0x68, 0x18, 0x88, 0x25, 0xE6, 0xF6,
-    0xF1, 0x4C, 0xF2, 0xC3, 0xF7, 0xB5, 0x53, 0x0B,
-    0xB3, 0x4F, 0xA6, 0x58, 0xEE, 0xD9, 0xA7, 0x39
-  },
-  {
-    0xB9, 0xA1, 0x9F, 0x50, 0x9B, 0xE0, 0x3F, 0xBC,
-    0x40, 0xE2, 0x43, 0xA5, 0x8A, 0x3D, 0xED, 0x11,
-    0xF0, 0xD5, 0x1F, 0x80, 0xE3, 0xE2, 0x9A, 0x50,
-    0x56, 0x44, 0xCC, 0x05, 0x74, 0x38, 0x14, 0xEC
-  },
-  {
-    0xC4, 0xBC, 0xB2, 0x00, 0x25, 0x55, 0xD5, 0x44,
-    0xFD, 0x0B, 0x02, 0x77, 0x06, 0x23, 0x89, 0x1E,
-    0x70, 0xEE, 0xEC, 0x77, 0x44, 0x86, 0x5D, 0xD6,
-    0x45, 0x5A, 0xD6, 0x65, 0xCC, 0x82, 0xE8, 0x61
-  },
-  {
-    0x91, 0x2D, 0x24, 0xDC, 0x3D, 0x69, 0x23, 0xA4,
-    0x83, 0xC2, 0x63, 0xEB, 0xA8, 0x1B, 0x7A, 0x87,
-    0x97, 0xF2, 0x3C, 0xBF, 0x2F, 0x78, 0xB5, 0x1E,
-    0x22, 0x26, 0x63, 0x9F, 0x84, 0xA5, 0x90, 0x47
-  },
-  {
-    0x56, 0x82, 0x7A, 0x18, 0x88, 0x3A, 0xFD, 0xF9,
-    0xCE, 0xEC, 0x56, 0x2B, 0x20, 0x66, 0xD8, 0xAC,
-    0xB2, 0xC1, 0x95, 0x05, 0xEC, 0xE6, 0xF7, 0xA8,
-    0x3E, 0x9F, 0x33, 0x46, 0xCB, 0xB8, 0x28, 0xC9
-  },
-  {
-    0x25, 0x1D, 0x8D, 0x09, 0xFC, 0x48, 0xDD, 0x1D,
-    0x6A, 0xF8, 0xFF, 0xDF, 0x39, 0x50, 0x91, 0xA4,
-    0x6E, 0x05, 0xB8, 0xB7, 0xC5, 0xEC, 0x0C, 0x79,
-    0xB6, 0x8A, 0x89, 0x04, 0xC8, 0x27, 0xBD, 0xEA
-  },
-  {
-    0xC2, 0xD1, 0x4D, 0x69, 0xFD, 0x0B, 0xBD, 0x1C,
-    0x0F, 0xE8, 0xC8, 0x45, 0xD5, 0xFD, 0x6A, 0x8F,
-    0x74, 0x01, 0x51, 0xB1, 0xD8, 0xEB, 0x4D, 0x26,
-    0x36, 0x4B, 0xB0, 0x2D, 0xAE, 0x0C, 0x13, 0xBC
-  },
-  {
-    0x2E, 0x5F, 0xE2, 0x1F, 0x8F, 0x1B, 0x63, 0x97,
-    0xA3, 0x8A, 0x60, 0x3D, 0x60, 0xB6, 0xF5, 0x3C,
-    0x3B, 0x5D, 0xB2, 0x0A, 0xA5, 0x6C, 0x6D, 0x44,
-    0xBE, 0xBD, 0x48, 0x28, 0xCE, 0x28, 0xF9, 0x0F
-  },
-  {
-    0x25, 0x05, 0x9F, 0x10, 0x60, 0x5E, 0x67, 0xAD,
-    0xFE, 0x68, 0x13, 0x50, 0x66, 0x6E, 0x15, 0xAE,
-    0x97, 0x6A, 0x5A, 0x57, 0x1C, 0x13, 0xCF, 0x5B,
-    0xC8, 0x05, 0x3F, 0x43, 0x0E, 0x12, 0x0A, 0x52
-  },
-};
-
-
-
-
-static const uint8_t blake2sp_keyed_kat[KAT_LENGTH][BLAKE2S_OUTBYTES] =
-{
-  {
-    0x71, 0x5C, 0xB1, 0x38, 0x95, 0xAE, 0xB6, 0x78,
-    0xF6, 0x12, 0x41, 0x60, 0xBF, 0xF2, 0x14, 0x65,
-    0xB3, 0x0F, 0x4F, 0x68, 0x74, 0x19, 0x3F, 0xC8,
-    0x51, 0xB4, 0x62, 0x10, 0x43, 0xF0, 0x9C, 0xC6
-  },
-  {
-    0x40, 0x57, 0x8F, 0xFA, 0x52, 0xBF, 0x51, 0xAE,
-    0x18, 0x66, 0xF4, 0x28, 0x4D, 0x3A, 0x15, 0x7F,
-    0xC1, 0xBC, 0xD3, 0x6A, 0xC1, 0x3C, 0xBD, 0xCB,
-    0x03, 0x77, 0xE4, 0xD0, 0xCD, 0x0B, 0x66, 0x03
-  },
-  {
-    0x67, 0xE3, 0x09, 0x75, 0x45, 0xBA, 0xD7, 0xE8,
-    0x52, 0xD7, 0x4D, 0x4E, 0xB5, 0x48, 0xEC, 0xA7,
-    0xC2, 0x19, 0xC2, 0x02, 0xA7, 0xD0, 0x88, 0xDB,
-    0x0E, 0xFE, 0xAC, 0x0E, 0xAC, 0x30, 0x42, 0x49
-  },
-  {
-    0x8D, 0xBC, 0xC0, 0x58, 0x9A, 0x3D, 0x17, 0x29,
-    0x6A, 0x7A, 0x58, 0xE2, 0xF1, 0xEF, 0xF0, 0xE2,
-    0xAA, 0x42, 0x10, 0xB5, 0x8D, 0x1F, 0x88, 0xB8,
-    0x6D, 0x7B, 0xA5, 0xF2, 0x9D, 0xD3, 0xB5, 0x83
-  },
-  {
-    0xA9, 0xA9, 0x65, 0x2C, 0x8C, 0x67, 0x75, 0x94,
-    0xC8, 0x72, 0x12, 0xD8, 0x9D, 0x5A, 0x75, 0xFB,
-    0x31, 0xEF, 0x4F, 0x47, 0xC6, 0x58, 0x2C, 0xDE,
-    0x5F, 0x1E, 0xF6, 0x6B, 0xD4, 0x94, 0x53, 0x3A
-  },
-  {
-    0x05, 0xA7, 0x18, 0x0E, 0x59, 0x50, 0x54, 0x73,
-    0x99, 0x48, 0xC5, 0xE3, 0x38, 0xC9, 0x5F, 0xE0,
-    0xB7, 0xFC, 0x61, 0xAC, 0x58, 0xA7, 0x35, 0x74,
-    0x74, 0x56, 0x33, 0xBB, 0xC1, 0xF7, 0x70, 0x31
-  },
-  {
-    0x81, 0x4D, 0xE8, 0x31, 0x53, 0xB8, 0xD7, 0x5D,
-    0xFA, 0xDE, 0x29, 0xFD, 0x39, 0xAC, 0x72, 0xDD,
-    0x09, 0xCA, 0x0F, 0x9B, 0xC8, 0xB7, 0xAB, 0x6A,
-    0x06, 0xBA, 0xEE, 0x7D, 0xD0, 0xF9, 0xF0, 0x83
-  },
-  {
-    0xDF, 0xD4, 0x19, 0x44, 0x91, 0x29, 0xFF, 0x60,
-    0x4F, 0x0A, 0x14, 0x8B, 0x4C, 0x7D, 0x68, 0xF1,
-    0x17, 0x4F, 0x7D, 0x0F, 0x8C, 0x8D, 0x2C, 0xE7,
-    0x7F, 0x44, 0x8F, 0xD3, 0x41, 0x9C, 0x6F, 0xB0
-  },
-  {
-    0xB9, 0xED, 0x22, 0xE7, 0xDD, 0x8D, 0xD1, 0x4E,
-    0xE8, 0xC9, 0x5B, 0x20, 0xE7, 0x63, 0x2E, 0x85,
-    0x53, 0xA2, 0x68, 0xD9, 0xFF, 0x86, 0x33, 0xED,
-    0x3C, 0x21, 0xD1, 0xB8, 0xC9, 0xA7, 0x0B, 0xE1
-  },
-  {
-    0x95, 0xF0, 0x31, 0x67, 0x1A, 0x4E, 0x3C, 0x54,
-    0x44, 0x1C, 0xEE, 0x9D, 0xBE, 0xF4, 0xB7, 0xAC,
-    0xA4, 0x46, 0x18, 0xA3, 0xA3, 0x33, 0xAD, 0x74,
-    0x06, 0xD1, 0x97, 0xAC, 0x5B, 0xA0, 0x79, 0x1A
-  },
-  {
-    0xE2, 0x92, 0x5B, 0x9D, 0x5C, 0xA0, 0xFF, 0x62,
-    0x88, 0xC5, 0xEA, 0x1A, 0xF2, 0xD2, 0x2B, 0x0A,
-    0x6B, 0x79, 0xE2, 0xDA, 0xE0, 0x8B, 0xFD, 0x36,
-    0xC3, 0xBE, 0x10, 0xBB, 0x8D, 0x71, 0xD8, 0x39
-  },
-  {
-    0x16, 0x24, 0x9C, 0x74, 0x4E, 0x49, 0x51, 0x45,
-    0x1D, 0x4C, 0x89, 0x4F, 0xB5, 0x9A, 0x3E, 0xCB,
-    0x3F, 0xBF, 0xB7, 0xA4, 0x5F, 0x96, 0xF8, 0x5D,
-    0x15, 0x80, 0xAC, 0x0B, 0x84, 0x2D, 0x96, 0xDA
-  },
-  {
-    0x43, 0x2B, 0xC9, 0x1C, 0x52, 0xAC, 0xEB, 0x9D,
-    0xAE, 0xD8, 0x83, 0x28, 0x81, 0x64, 0x86, 0x50,
-    0xC1, 0xB8, 0x1D, 0x11, 0x7A, 0xBD, 0x68, 0xE0,
-    0x84, 0x51, 0x50, 0x8A, 0x63, 0xBE, 0x00, 0x81
-  },
-  {
-    0xCD, 0xE8, 0x20, 0x2B, 0xCF, 0xA3, 0xF3, 0xE9,
-    0x5D, 0x79, 0xBA, 0xCC, 0x16, 0x5D, 0x52, 0x70,
-    0x0E, 0xF7, 0x1D, 0x87, 0x4A, 0x3C, 0x63, 0x7E,
-    0x63, 0x4F, 0x64, 0x44, 0x73, 0x72, 0x0D, 0x6B
-  },
-  {
-    0x16, 0x21, 0x62, 0x1F, 0x5C, 0x3E, 0xE4, 0x46,
-    0x89, 0x9D, 0x3C, 0x8A, 0xAE, 0x49, 0x17, 0xB1,
-    0xE6, 0xDB, 0x4A, 0x0E, 0xD0, 0x42, 0x31, 0x5F,
-    0xB2, 0xC1, 0x74, 0x82, 0x5E, 0x0A, 0x18, 0x19
-  },
-  {
-    0x33, 0x6E, 0x8E, 0xBC, 0x71, 0xE2, 0x09, 0x5C,
-    0x27, 0xF8, 0x64, 0xA3, 0x12, 0x1E, 0xFD, 0x0F,
-    0xAA, 0x7A, 0x41, 0x28, 0x57, 0x25, 0xA5, 0x92,
-    0xF6, 0x1B, 0xED, 0xED, 0x9D, 0xDE, 0x86, 0xED
-  },
-  {
-    0x07, 0x9B, 0xE0, 0x41, 0x0E, 0x78, 0x9B, 0x36,
-    0xEE, 0x7F, 0x55, 0xC1, 0x9F, 0xAA, 0xC6, 0x91,
-    0x65, 0x6E, 0xB0, 0x52, 0x1F, 0x42, 0x94, 0x9B,
-    0x84, 0xEE, 0x29, 0xFE, 0x2A, 0x0E, 0x7F, 0x36
-  },
-  {
-    0x17, 0x27, 0x0C, 0x4F, 0x34, 0x88, 0x08, 0x2D,
-    0x9F, 0xF9, 0x93, 0x7E, 0xAB, 0x3C, 0xA9, 0x9C,
-    0x97, 0xC5, 0xB4, 0x59, 0x61, 0x47, 0x37, 0x2D,
-    0xD4, 0xE9, 0x8A, 0xCF, 0x13, 0xDB, 0x28, 0x10
-  },
-  {
-    0x18, 0x3C, 0x38, 0x75, 0x4D, 0x03, 0x41, 0xCE,
-    0x07, 0xC1, 0x7A, 0x6C, 0xB6, 0xC2, 0xFD, 0x8B,
-    0xBC, 0xC1, 0x40, 0x4F, 0xDD, 0x01, 0x41, 0x99,
-    0xC7, 0x8B, 0xE1, 0xA9, 0x75, 0x59, 0xA9, 0x28
-  },
-  {
-    0x6E, 0x52, 0xD7, 0x28, 0xA4, 0x05, 0xA6, 0xE1,
-    0xF8, 0x75, 0x87, 0xBB, 0xC2, 0xAC, 0x91, 0xC5,
-    0xC0, 0x9B, 0x2D, 0x82, 0x8A, 0xC8, 0x1E, 0x5C,
-    0x4A, 0x81, 0xD0, 0x3D, 0xD4, 0xAA, 0x8D, 0x5C
-  },
-  {
-    0xF4, 0xE0, 0x8E, 0x05, 0x9B, 0x74, 0x14, 0x4B,
-    0xF9, 0x48, 0x14, 0x6D, 0x14, 0xA2, 0xC8, 0x1E,
-    0x46, 0xDC, 0x15, 0xFF, 0x26, 0xEB, 0x52, 0x34,
-    0x4C, 0xDD, 0x47, 0x4A, 0xBE, 0xA1, 0x4B, 0xC0
-  },
-  {
-    0x0F, 0x2E, 0x0A, 0x10, 0x0E, 0xD8, 0xA1, 0x17,
-    0x85, 0x96, 0x2A, 0xD4, 0x59, 0x6A, 0xF9, 0x55,
-    0xE3, 0x0B, 0x9A, 0xEF, 0x93, 0x0A, 0x24, 0x8D,
-    0xA9, 0x32, 0x2B, 0x70, 0x2D, 0x4B, 0x68, 0x72
-  },
-  {
-    0x51, 0x90, 0xFC, 0xC7, 0x32, 0xF4, 0x04, 0xAA,
-    0xD4, 0x36, 0x4A, 0xC7, 0x96, 0x0C, 0xFD, 0x5B,
-    0x4E, 0x34, 0x86, 0x29, 0xC3, 0x72, 0xEE, 0xB3,
-    0x25, 0xB5, 0xC6, 0xC7, 0xCB, 0xCE, 0x59, 0xAB
-  },
-  {
-    0xC0, 0xC4, 0xCB, 0x86, 0xEA, 0x25, 0xEA, 0x95,
-    0x7E, 0xEC, 0x5B, 0x22, 0xD2, 0x55, 0x0A, 0x16,
-    0x49, 0xE6, 0xDF, 0xFA, 0x31, 0x6B, 0xB8, 0xF4,
-    0xC9, 0x1B, 0x8F, 0xF7, 0xA2, 0x4B, 0x25, 0x31
-  },
-  {
-    0x2C, 0x9E, 0xDA, 0x13, 0x5A, 0x30, 0xAE, 0xCA,
-    0xF3, 0xAC, 0xB3, 0xD2, 0x3A, 0x30, 0x35, 0xFB,
-    0xAB, 0xBA, 0x98, 0x33, 0x31, 0x65, 0xD8, 0x7F,
-    0xCB, 0xF8, 0xFE, 0x10, 0x33, 0x6E, 0xCF, 0x20
-  },
-  {
-    0x3C, 0xD6, 0x69, 0xE8, 0xD5, 0x62, 0x62, 0xA2,
-    0x37, 0x13, 0x67, 0x22, 0x4D, 0xAE, 0x6D, 0x75,
-    0x9E, 0xE1, 0x52, 0xC3, 0x15, 0x33, 0xB2, 0x63,
-    0xFA, 0x2E, 0x64, 0x92, 0x08, 0x77, 0xB2, 0xA7
-  },
-  {
-    0x18, 0xA9, 0xA0, 0xC2, 0xD0, 0xEA, 0x6C, 0x3B,
-    0xB3, 0x32, 0x83, 0x0F, 0x89, 0x18, 0xB0, 0x68,
-    0x4F, 0x5D, 0x39, 0x94, 0xDF, 0x48, 0x67, 0x46,
-    0x2D, 0xD0, 0x6E, 0xF0, 0x86, 0x24, 0x24, 0xCC
-  },
-  {
-    0x73, 0x90, 0xEA, 0x41, 0x04, 0xA9, 0xF4, 0xEE,
-    0xA9, 0x0F, 0x81, 0xE2, 0x6A, 0x12, 0x9D, 0xCF,
-    0x9F, 0x4A, 0xF3, 0x83, 0x52, 0xD9, 0xCB, 0x6A,
-    0x81, 0x2C, 0xC8, 0x05, 0x69, 0x09, 0x05, 0x0E
-  },
-  {
-    0xE4, 0x9E, 0x01, 0x14, 0xC6, 0x29, 0xB4, 0x94,
-    0xB1, 0x1E, 0xA9, 0x8E, 0xCD, 0x40, 0x32, 0x73,
-    0x1F, 0x15, 0x3B, 0x46, 0x50, 0xAC, 0xAC, 0xD7,
-    0xE0, 0xF6, 0xE7, 0xDE, 0x3D, 0xF0, 0x19, 0x77
-  },
-  {
-    0x27, 0xC5, 0x70, 0x2B, 0xE1, 0x04, 0xB3, 0xA9,
-    0x4F, 0xC4, 0x34, 0x23, 0xAE, 0xEE, 0x83, 0xAC,
-    0x3C, 0xA7, 0x3B, 0x7F, 0x87, 0x83, 0x9A, 0x6B,
-    0x2E, 0x29, 0x60, 0x79, 0x03, 0xB7, 0xF2, 0x87
-  },
-  {
-    0x81, 0xD2, 0xE1, 0x2E, 0xB2, 0xF4, 0x27, 0x60,
-    0xC6, 0xE3, 0xBA, 0xA7, 0x8F, 0x84, 0x07, 0x3A,
-    0xE6, 0xF5, 0x61, 0x60, 0x70, 0xFE, 0x25, 0xBE,
-    0xDE, 0x7C, 0x7C, 0x82, 0x48, 0xAB, 0x1F, 0xBA
-  },
-  {
-    0xFA, 0xB2, 0x35, 0xD5, 0x93, 0x48, 0xAB, 0x8C,
-    0xE4, 0x9B, 0xEC, 0x77, 0xC0, 0xF1, 0x93, 0x28,
-    0xFD, 0x04, 0x5D, 0xFD, 0x60, 0x8A, 0x53, 0x03,
-    0x36, 0xDF, 0x4F, 0x94, 0xE1, 0x72, 0xA5, 0xC8
-  },
-  {
-    0x8A, 0xAA, 0x8D, 0x80, 0x5C, 0x58, 0x88, 0x1F,
-    0xF3, 0x79, 0xFB, 0xD4, 0x2C, 0x6B, 0xF6, 0xF1,
-    0x4C, 0x6C, 0x73, 0xDF, 0x80, 0x71, 0xB3, 0xB2,
-    0x28, 0x98, 0x11, 0x09, 0xCC, 0xC0, 0x15, 0xF9
-  },
-  {
-    0x91, 0xFD, 0xD2, 0x62, 0x20, 0x39, 0x16, 0x39,
-    0x47, 0x40, 0x95, 0x2B, 0xCE, 0x72, 0xB6, 0x4B,
-    0xAB, 0xB6, 0xF7, 0x21, 0x34, 0x4D, 0xEE, 0x82,
-    0x50, 0xBF, 0x0E, 0x46, 0xF1, 0xBA, 0x18, 0x8F
-  },
-  {
-    0xF7, 0xE5, 0x7B, 0x8F, 0x85, 0xF4, 0x7D, 0x59,
-    0x03, 0xAD, 0x4C, 0xCB, 0x8A, 0xF6, 0x2A, 0x3E,
-    0x85, 0x8A, 0xAB, 0x2B, 0x8C, 0xC2, 0x26, 0x49,
-    0x4F, 0x7B, 0x00, 0xBE, 0xDB, 0xF5, 0xB0, 0xD0
-  },
-  {
-    0xF7, 0x6F, 0x21, 0xAD, 0xDA, 0xE9, 0x6A, 0x96,
-    0x46, 0xFC, 0x06, 0xF9, 0xBF, 0x52, 0xAE, 0x08,
-    0x48, 0xF1, 0x8C, 0x35, 0x26, 0xB1, 0x29, 0xE1,
-    0x5B, 0x2C, 0x35, 0x5E, 0x2E, 0x79, 0xE5, 0xDA
-  },
-  {
-    0x8A, 0xEB, 0x1C, 0x79, 0x5F, 0x34, 0x90, 0x01,
-    0x5E, 0xF4, 0xCD, 0x61, 0xA2, 0x80, 0x7B, 0x23,
-    0x0E, 0xFD, 0xC8, 0x46, 0x01, 0x73, 0xDA, 0xD0,
-    0x26, 0xA4, 0xA0, 0xFC, 0xC2, 0xFB, 0xF2, 0x2A
-  },
-  {
-    0xC5, 0x64, 0xFF, 0xC6, 0x23, 0x07, 0x77, 0x65,
-    0xBB, 0x97, 0x87, 0x58, 0x56, 0x54, 0xCE, 0x74,
-    0x5D, 0xBD, 0x10, 0x8C, 0xEF, 0x24, 0x8A, 0xB0,
-    0x0A, 0xD1, 0xA2, 0x64, 0x7D, 0x99, 0x03, 0x87
-  },
-  {
-    0xFE, 0x89, 0x42, 0xA3, 0xE5, 0xF5, 0xE8, 0xCD,
-    0x70, 0x51, 0x04, 0xF8, 0x82, 0x10, 0x72, 0x6E,
-    0x53, 0xDD, 0x7E, 0xB3, 0xF9, 0xA2, 0x02, 0xBF,
-    0x93, 0x14, 0xB3, 0xB9, 0x06, 0x5E, 0xB7, 0x12
-  },
-  {
-    0xDC, 0x29, 0x53, 0x59, 0xD4, 0x36, 0xEE, 0xA7,
-    0x80, 0x84, 0xE7, 0xB0, 0x77, 0xFE, 0x09, 0xB1,
-    0x9C, 0x5B, 0xF3, 0xD2, 0xA7, 0x96, 0xDA, 0xB0,
-    0x19, 0xE4, 0x20, 0x05, 0x99, 0xFD, 0x82, 0x02
-  },
-  {
-    0x70, 0xB3, 0xF7, 0x2F, 0x74, 0x90, 0x32, 0xE2,
-    0x5E, 0x38, 0x3B, 0x96, 0x43, 0x78, 0xEA, 0x1C,
-    0x54, 0x3E, 0x9C, 0x15, 0xDE, 0x3A, 0x27, 0xD8,
-    0x6D, 0x2A, 0x9D, 0x22, 0x31, 0xEF, 0xF4, 0x8A
-  },
-  {
-    0x79, 0x82, 0xB5, 0x4C, 0x08, 0xDB, 0x2B, 0xFB,
-    0x6F, 0x45, 0xF3, 0x5B, 0xC3, 0x23, 0xBC, 0x09,
-    0x37, 0x79, 0xB6, 0xBB, 0x0E, 0x3E, 0xEA, 0x3E,
-    0x8C, 0x98, 0xB1, 0xDE, 0x99, 0xD3, 0xC5, 0x5E
-  },
-  {
-    0x75, 0xE4, 0x16, 0x22, 0x57, 0x01, 0x4B, 0xED,
-    0xCC, 0x05, 0xC2, 0x94, 0x4D, 0xCE, 0x0D, 0xF0,
-    0xC3, 0x5E, 0xBA, 0x13, 0x19, 0x54, 0x06, 0x4F,
-    0x6E, 0x4E, 0x09, 0x5F, 0xD0, 0x84, 0x45, 0xEE
-  },
-  {
-    0x4A, 0x12, 0x9E, 0xA6, 0xCD, 0xBA, 0xBC, 0x2D,
-    0x39, 0x24, 0x79, 0x37, 0x2F, 0x97, 0x5B, 0x9C,
-    0xF5, 0xA1, 0xB7, 0xDE, 0xB6, 0x9A, 0x32, 0x66,
-    0xF0, 0x3E, 0xBC, 0x6D, 0x11, 0x13, 0x93, 0xC4
-  },
-  {
-    0x8F, 0xED, 0x70, 0xF2, 0x79, 0x55, 0xDC, 0x8A,
-    0xD9, 0xF1, 0xB7, 0xB3, 0xF6, 0xF5, 0xDF, 0xBD,
-    0x96, 0x2A, 0x33, 0x59, 0x2B, 0x42, 0xDE, 0x85,
-    0x6D, 0x42, 0x1E, 0x29, 0x12, 0xBA, 0xB8, 0x6B
-  },
-  {
-    0xE2, 0xF2, 0x06, 0x60, 0x37, 0x6F, 0x2B, 0x18,
-    0x39, 0x66, 0x7C, 0xBF, 0xE5, 0xE1, 0x6E, 0xF0,
-    0x75, 0xAC, 0x39, 0x43, 0x64, 0x4F, 0x35, 0x32,
-    0x28, 0x2F, 0x8B, 0xB0, 0x72, 0x3B, 0x99, 0x86
-  },
-  {
-    0xAB, 0xF8, 0x4C, 0x91, 0x3A, 0x83, 0xDF, 0x98,
-    0xC7, 0x00, 0x29, 0x81, 0x9C, 0x06, 0x5F, 0x6D,
-    0x6D, 0xE4, 0xF6, 0xD4, 0x3A, 0xBF, 0x60, 0x0D,
-    0xAD, 0xE0, 0x35, 0xB2, 0x3B, 0xED, 0x7B, 0xAA
-  },
-  {
-    0x45, 0x9C, 0x15, 0xD4, 0x85, 0x6C, 0x7E, 0xCF,
-    0x82, 0x62, 0x03, 0x51, 0xC3, 0xC1, 0xC7, 0x6C,
-    0x40, 0x3F, 0x3E, 0x97, 0x07, 0x74, 0x13, 0x87,
-    0xE2, 0x99, 0x07, 0x3F, 0xB1, 0x70, 0x4B, 0x2B
-  },
-  {
-    0x9A, 0xB9, 0x12, 0xED, 0xA0, 0x76, 0x8A, 0xBD,
-    0xF8, 0x26, 0xB6, 0xE0, 0x5D, 0x0D, 0x73, 0x58,
-    0x39, 0xE6, 0xA5, 0xF0, 0x2E, 0x04, 0xC4, 0xCC,
-    0x75, 0x65, 0x0B, 0x2C, 0x8C, 0xAB, 0x67, 0x49
-  },
-  {
-    0x47, 0x40, 0xEB, 0xEC, 0xAC, 0x90, 0x03, 0x1B,
-    0xB7, 0xE6, 0x8E, 0x51, 0xC5, 0x53, 0x91, 0xAF,
-    0xB1, 0x89, 0xB3, 0x17, 0xF2, 0xDE, 0x55, 0x87,
-    0x66, 0xF7, 0x8F, 0x5C, 0xB7, 0x1F, 0x81, 0xB6
-  },
-  {
-    0x3C, 0xC4, 0x7F, 0x0E, 0xF6, 0x48, 0x21, 0x58,
-    0x7C, 0x93, 0x7C, 0xDD, 0xBA, 0x85, 0xC9, 0x93,
-    0xD3, 0xCE, 0x2D, 0xD0, 0xCE, 0xD4, 0x0D, 0x3B,
-    0xE3, 0x3C, 0xB7, 0xDC, 0x7E, 0xDA, 0xBC, 0xF1
-  },
-  {
-    0x9F, 0x47, 0x6A, 0x22, 0xDB, 0x54, 0xD6, 0xBB,
-    0x9B, 0xEF, 0xDB, 0x26, 0x0C, 0x66, 0x57, 0x8A,
-    0xE1, 0xD8, 0xA5, 0xF8, 0x7D, 0x3D, 0x8C, 0x01,
-    0x7F, 0xDB, 0x74, 0x75, 0x08, 0x0F, 0xA8, 0xE1
-  },
-  {
-    0x8B, 0x68, 0xC6, 0xFB, 0x07, 0x06, 0xA7, 0x95,
-    0xF3, 0xA8, 0x39, 0xD6, 0xFE, 0x25, 0xFD, 0x4A,
-    0xA7, 0xF9, 0x2E, 0x66, 0x4F, 0x76, 0x2D, 0x61,
-    0x53, 0x81, 0xBC, 0x85, 0x9A, 0xFA, 0x29, 0x2C
-  },
-  {
-    0xF6, 0x40, 0xD2, 0x25, 0xA6, 0xBC, 0xD2, 0xFC,
-    0x8A, 0xCC, 0xAF, 0xBE, 0xD5, 0xA8, 0x4B, 0x5B,
-    0xBB, 0x5D, 0x8A, 0xE5, 0xDB, 0x06, 0xA1, 0x0B,
-    0x6D, 0x9D, 0x93, 0x16, 0x0B, 0x39, 0x2E, 0xE0
-  },
-  {
-    0x70, 0x48, 0x60, 0xA7, 0xF5, 0xBA, 0x68, 0xDB,
-    0x27, 0x03, 0x1C, 0x15, 0xF2, 0x25, 0x50, 0x0D,
-    0x69, 0x2A, 0xB2, 0x47, 0x53, 0x42, 0x81, 0xC4,
-    0xF6, 0x84, 0xF6, 0xC6, 0xC8, 0xCD, 0x88, 0xC7
-  },
-  {
-    0xC1, 0xA7, 0x5B, 0xDD, 0xA1, 0x2B, 0x8B, 0x2A,
-    0xB1, 0xB9, 0x24, 0x84, 0x38, 0x58, 0x18, 0x3A,
-    0x09, 0xD2, 0x02, 0x42, 0x1F, 0xDB, 0xCD, 0xF0,
-    0xE6, 0x3E, 0xAE, 0x46, 0xF3, 0x7D, 0x91, 0xED
-  },
-  {
-    0x9A, 0x8C, 0xAB, 0x7A, 0x5F, 0x2E, 0x57, 0x62,
-    0x21, 0xA6, 0xA8, 0x5E, 0x5F, 0xDD, 0xEE, 0x75,
-    0x67, 0x8E, 0x06, 0x53, 0x24, 0xA6, 0x1D, 0xB0,
-    0x3A, 0x39, 0x26, 0x1D, 0xDF, 0x75, 0xE3, 0xF4
-  },
-  {
-    0x05, 0xC2, 0xB2, 0x6B, 0x03, 0xCE, 0x6C, 0xA5,
-    0x87, 0x1B, 0xE0, 0xDE, 0x84, 0xEE, 0x27, 0x86,
-    0xA7, 0x9B, 0xCD, 0x9F, 0x30, 0x03, 0x3E, 0x81,
-    0x9B, 0x4A, 0x87, 0xCC, 0xA2, 0x7A, 0xFC, 0x6A
-  },
-  {
-    0xB0, 0xB0, 0x99, 0x3C, 0x6D, 0x0C, 0x6E, 0xD5,
-    0xC3, 0x59, 0x04, 0x80, 0xF8, 0x65, 0xF4, 0x67,
-    0xF4, 0x33, 0x1A, 0x58, 0xDD, 0x8E, 0x47, 0xBD,
-    0x98, 0xEB, 0xBC, 0xDB, 0x8E, 0xB4, 0xF9, 0x4D
-  },
-  {
-    0xE5, 0x7C, 0x10, 0x3C, 0xF7, 0xB6, 0xBB, 0xEB,
-    0x8A, 0x0D, 0xC8, 0xF0, 0x48, 0x62, 0x5C, 0x3F,
-    0x4C, 0xE4, 0xF1, 0xA5, 0xAD, 0x4D, 0x07, 0x9C,
-    0x11, 0x87, 0xBF, 0xE9, 0xEE, 0x3B, 0x8A, 0x5F
-  },
-  {
-    0xF1, 0x00, 0x23, 0xE1, 0x5F, 0x3B, 0x72, 0xB7,
-    0x38, 0xAD, 0x61, 0xAE, 0x65, 0xAB, 0x9A, 0x07,
-    0xE7, 0x77, 0x4E, 0x2D, 0x7A, 0xB0, 0x2D, 0xBA,
-    0x4E, 0x0C, 0xAF, 0x56, 0x02, 0xC8, 0x01, 0x78
-  },
-  {
-    0x9A, 0x8F, 0xB3, 0xB5, 0x38, 0xC1, 0xD6, 0xC4,
-    0x50, 0x51, 0xFA, 0x9E, 0xD9, 0xB0, 0x7D, 0x3E,
-    0x89, 0xB4, 0x43, 0x03, 0x30, 0x01, 0x4A, 0x1E,
-    0xFA, 0x28, 0x23, 0xC0, 0x82, 0x3C, 0xF2, 0x37
-  },
-  {
-    0x30, 0x75, 0xC5, 0xBC, 0x7C, 0x3A, 0xD7, 0xE3,
-    0x92, 0x01, 0x01, 0xBC, 0x68, 0x99, 0xC5, 0x8E,
-    0xA7, 0x01, 0x67, 0xA7, 0x77, 0x2C, 0xA2, 0x8E,
-    0x38, 0xE2, 0xC1, 0xB0, 0xD3, 0x25, 0xE5, 0xA0
-  },
-  {
-    0xE8, 0x55, 0x94, 0x70, 0x0E, 0x39, 0x22, 0xA1,
-    0xE8, 0xE4, 0x1E, 0xB8, 0xB0, 0x64, 0xE7, 0xAC,
-    0x6D, 0x94, 0x9D, 0x13, 0xB5, 0xA3, 0x45, 0x23,
-    0xE5, 0xA6, 0xBE, 0xAC, 0x03, 0xC8, 0xAB, 0x29
-  },
-  {
-    0x1D, 0x37, 0x01, 0xA5, 0x66, 0x1B, 0xD3, 0x1A,
-    0xB2, 0x05, 0x62, 0xBD, 0x07, 0xB7, 0x4D, 0xD1,
-    0x9A, 0xC8, 0xF3, 0x52, 0x4B, 0x73, 0xCE, 0x7B,
-    0xC9, 0x96, 0xB7, 0x88, 0xAF, 0xD2, 0xF3, 0x17
-  },
-  {
-    0x87, 0x4E, 0x19, 0x38, 0x03, 0x3D, 0x7D, 0x38,
-    0x35, 0x97, 0xA2, 0xA6, 0x5F, 0x58, 0xB5, 0x54,
-    0xE4, 0x11, 0x06, 0xF6, 0xD1, 0xD5, 0x0E, 0x9B,
-    0xA0, 0xEB, 0x68, 0x5F, 0x6B, 0x6D, 0xA0, 0x71
-  },
-  {
-    0x93, 0xF2, 0xF3, 0xD6, 0x9B, 0x2D, 0x36, 0x52,
-    0x95, 0x56, 0xEC, 0xCA, 0xF9, 0xF9, 0x9A, 0xDB,
-    0xE8, 0x95, 0xE1, 0x57, 0x22, 0x31, 0xE6, 0x49,
-    0xB5, 0x05, 0x84, 0xB5, 0xD7, 0xD0, 0x8A, 0xF8
-  },
-  {
-    0x06, 0xE0, 0x6D, 0x61, 0x0F, 0x2E, 0xEB, 0xBA,
-    0x36, 0x76, 0x82, 0x3E, 0x77, 0x44, 0xD7, 0x51,
-    0xAF, 0xF7, 0x30, 0x76, 0xED, 0x65, 0xF3, 0xCF,
-    0xF5, 0xE7, 0x2F, 0xD2, 0x27, 0x99, 0x9C, 0x77
-  },
-  {
-    0x8D, 0xF7, 0x57, 0xB3, 0xA1, 0xE0, 0xF4, 0x80,
-    0xFA, 0x76, 0xC7, 0xF3, 0x58, 0xED, 0x03, 0x98,
-    0xBE, 0x3F, 0x2A, 0x8F, 0x7B, 0x90, 0xEA, 0x8C,
-    0x80, 0x75, 0x99, 0xDE, 0xDA, 0x1D, 0x05, 0x34
-  },
-  {
-    0xEE, 0xC9, 0xC5, 0xC6, 0x3C, 0xC5, 0x16, 0x9D,
-    0x96, 0x7B, 0xB1, 0x62, 0x4E, 0x9E, 0xE5, 0xCE,
-    0xD9, 0x28, 0x97, 0x73, 0x6E, 0xFB, 0xD1, 0x57,
-    0x54, 0x8D, 0x82, 0xE8, 0x7C, 0xC7, 0x2F, 0x25
-  },
-  {
-    0xCC, 0x2B, 0x58, 0x32, 0xAD, 0x27, 0x2C, 0xC5,
-    0x5C, 0x10, 0xD4, 0xF8, 0xC7, 0xF8, 0xBB, 0x38,
-    0xE6, 0xE4, 0xEB, 0x92, 0x2F, 0x93, 0x86, 0x83,
-    0x0F, 0x90, 0xB1, 0xE3, 0xDA, 0x39, 0x37, 0xD5
-  },
-  {
-    0x36, 0x89, 0x85, 0xD5, 0x38, 0x7C, 0x0B, 0xFC,
-    0x92, 0x8A, 0xC2, 0x54, 0xFA, 0x6D, 0x16, 0x67,
-    0x3E, 0x70, 0x94, 0x75, 0x66, 0x96, 0x1B, 0x5F,
-    0xB3, 0x32, 0x5A, 0x58, 0x8A, 0xB3, 0x17, 0x3A
-  },
-  {
-    0xF1, 0xE4, 0x42, 0xAF, 0xB8, 0x72, 0x15, 0x1F,
-    0x81, 0x34, 0x95, 0x6C, 0x54, 0x8A, 0xE3, 0x24,
-    0x0D, 0x07, 0xE6, 0xE3, 0x38, 0xD4, 0xA7, 0xA6,
-    0xAF, 0x8D, 0xA4, 0x11, 0x9A, 0xB0, 0xE2, 0xB0
-  },
-  {
-    0xB0, 0x12, 0xC7, 0x54, 0x6A, 0x39, 0xC4, 0x0C,
-    0xAD, 0xEC, 0xE4, 0xE0, 0x4E, 0x7F, 0x33, 0xC5,
-    0x93, 0xAD, 0x18, 0x2E, 0xBC, 0x5A, 0x46, 0xD2,
-    0xDB, 0xF4, 0xAD, 0x1A, 0x92, 0xF5, 0x9E, 0x7B
-  },
-  {
-    0x6C, 0x60, 0x97, 0xCD, 0x20, 0x33, 0x09, 0x6B,
-    0x4D, 0xF3, 0x17, 0xDE, 0x8A, 0x90, 0x8B, 0x7D,
-    0x0C, 0x72, 0x94, 0x39, 0x0C, 0x5A, 0x39, 0x9C,
-    0x30, 0x1B, 0xF2, 0xA2, 0x65, 0x2E, 0x82, 0x62
-  },
-  {
-    0xBA, 0x83, 0xFE, 0xB5, 0x10, 0xB4, 0x9A, 0xDE,
-    0x4F, 0xAE, 0xFB, 0xE9, 0x42, 0x78, 0x1E, 0xAF,
-    0xD4, 0x1A, 0xD5, 0xD4, 0x36, 0x88, 0x85, 0x31,
-    0xB6, 0x88, 0x59, 0xF2, 0x2C, 0x2D, 0x16, 0x4A
-  },
-  {
-    0x5A, 0x06, 0x9E, 0x43, 0x92, 0x19, 0x5A, 0xC9,
-    0xD2, 0x84, 0xA4, 0x7F, 0x3B, 0xD8, 0x54, 0xAF,
-    0x8F, 0xD0, 0xD7, 0xFD, 0xC3, 0x48, 0x3D, 0x2C,
-    0x5F, 0x34, 0x24, 0xCC, 0xFD, 0xA1, 0x5C, 0x8E
-  },
-  {
-    0x7E, 0x88, 0xD6, 0x4B, 0xBB, 0xE2, 0x02, 0x4F,
-    0x44, 0x54, 0xBA, 0x13, 0x98, 0xB3, 0xD8, 0x65,
-    0x2D, 0xCE, 0xC8, 0x20, 0xB1, 0x4C, 0x3B, 0x0A,
-    0xBF, 0xBF, 0x0F, 0x4F, 0x33, 0x06, 0xBB, 0x5E
-  },
-  {
-    0xF8, 0x74, 0x2F, 0xF4, 0x6D, 0xFD, 0xF3, 0xEC,
-    0x82, 0x64, 0xF9, 0x94, 0x5B, 0x20, 0x41, 0x94,
-    0x62, 0xF0, 0x69, 0xE8, 0x33, 0xC5, 0x94, 0xEC,
-    0x80, 0xFF, 0xAC, 0x5E, 0x7E, 0x51, 0x34, 0xF9
-  },
-  {
-    0xD3, 0xE0, 0xB7, 0x38, 0xD2, 0xE9, 0x2F, 0x3C,
-    0x47, 0xC7, 0x94, 0x66, 0x66, 0x09, 0xC0, 0xF5,
-    0x50, 0x4F, 0x67, 0xEC, 0x4E, 0x76, 0x0E, 0xEE,
-    0xCC, 0xF8, 0x64, 0x4E, 0x68, 0x33, 0x34, 0x11
-  },
-  {
-    0x0C, 0x90, 0xCE, 0x10, 0xED, 0xF0, 0xCE, 0x1D,
-    0x47, 0xEE, 0xB5, 0x0B, 0x5B, 0x7A, 0xFF, 0x8E,
-    0xE8, 0xA4, 0x3B, 0x64, 0xA8, 0x89, 0xC1, 0xC6,
-    0xC6, 0xB8, 0xE3, 0x1A, 0x3C, 0xFC, 0x45, 0xEE
-  },
-  {
-    0x83, 0x91, 0x7A, 0xC1, 0xCD, 0xAD, 0xE8, 0xF0,
-    0xE3, 0xBF, 0x42, 0x6F, 0xEA, 0xC1, 0x38, 0x8B,
-    0x3F, 0xCB, 0xE3, 0xE1, 0xBF, 0x98, 0x79, 0x8C,
-    0x81, 0x58, 0xBF, 0x75, 0x8E, 0x8D, 0x5D, 0x4E
-  },
-  {
-    0xDC, 0x8E, 0xB0, 0xC0, 0x13, 0xFA, 0x9D, 0x06,
-    0x4E, 0xE3, 0x76, 0x23, 0x36, 0x9F, 0xB3, 0x94,
-    0xAF, 0x97, 0x4B, 0x1A, 0xAC, 0x82, 0x40, 0x5B,
-    0x88, 0x97, 0x6C, 0xD8, 0xFC, 0xA1, 0x25, 0x30
-  },
-  {
-    0x9A, 0xF4, 0xFC, 0x92, 0xEA, 0x8D, 0x6B, 0x5F,
-    0xE7, 0x99, 0x0E, 0x3A, 0x02, 0x70, 0x1E, 0xC2,
-    0x2B, 0x2D, 0xFD, 0x71, 0x00, 0xB9, 0x0D, 0x05,
-    0x51, 0x86, 0x94, 0x17, 0x95, 0x5E, 0x44, 0xC8
-  },
-  {
-    0xC7, 0x22, 0xCE, 0xC1, 0x31, 0xBA, 0xA1, 0x63,
-    0xF4, 0x7E, 0x4B, 0x33, 0x9E, 0x1F, 0xB9, 0xB4,
-    0xAC, 0xA2, 0x48, 0xC4, 0x75, 0x93, 0x45, 0xEA,
-    0xDB, 0xD6, 0xC6, 0xA7, 0xDD, 0xB5, 0x04, 0x77
-  },
-  {
-    0x18, 0x37, 0xB1, 0x20, 0xD4, 0xE4, 0x04, 0x6C,
-    0x6D, 0xE8, 0xCC, 0xAF, 0x09, 0xF1, 0xCA, 0xF3,
-    0x02, 0xAD, 0x56, 0x23, 0x4E, 0x6B, 0x42, 0x2C,
-    0xE9, 0x0A, 0x61, 0xBF, 0x06, 0xAE, 0xE4, 0x3D
-  },
-  {
-    0x87, 0xAC, 0x9D, 0x0F, 0x8A, 0x0B, 0x11, 0xBF,
-    0xED, 0xD6, 0x99, 0x1A, 0x6D, 0xAF, 0x34, 0xC8,
-    0xAA, 0x5D, 0x7E, 0x8A, 0xE1, 0xB9, 0xDF, 0x4A,
-    0xF7, 0x38, 0x00, 0x5F, 0xE7, 0x8C, 0xE9, 0x3C
-  },
-  {
-    0xE2, 0x1F, 0xB6, 0x68, 0xEB, 0xB8, 0xBF, 0x2D,
-    0x82, 0x08, 0x6D, 0xED, 0xCB, 0x3A, 0x53, 0x71,
-    0xC2, 0xC4, 0x6F, 0xA1, 0xAC, 0x11, 0xD2, 0xE2,
-    0xC5, 0x66, 0xD1, 0x4A, 0xD3, 0xC3, 0x65, 0x3F
-  },
-  {
-    0x5A, 0x9A, 0x69, 0x81, 0x5E, 0x4D, 0x3E, 0xB7,
-    0x72, 0xED, 0x90, 0x8F, 0xE6, 0x58, 0xCE, 0x50,
-    0x87, 0x31, 0x0E, 0xC1, 0xD5, 0x0C, 0xB9, 0x4F,
-    0x56, 0x28, 0x33, 0x9A, 0x61, 0xDC, 0xD9, 0xEE
-  },
-  {
-    0xAA, 0xC2, 0x85, 0xF1, 0x20, 0x8F, 0x70, 0xA6,
-    0x47, 0x97, 0xD0, 0xA9, 0x40, 0x0D, 0xA6, 0x46,
-    0x53, 0x30, 0x18, 0x38, 0xFE, 0xF6, 0x69, 0x0B,
-    0x87, 0xCD, 0xA9, 0x15, 0x9E, 0xE0, 0x7E, 0xF4
-  },
-  {
-    0x05, 0x64, 0x3C, 0x1C, 0x6F, 0x26, 0x59, 0x25,
-    0xA6, 0x50, 0x93, 0xF9, 0xDE, 0x8A, 0x19, 0x1C,
-    0x4F, 0x6F, 0xD1, 0x41, 0x8F, 0xBF, 0x66, 0xBE,
-    0x80, 0x59, 0xA9, 0x1B, 0xA8, 0xDC, 0xDA, 0x61
-  },
-  {
-    0x1C, 0x6C, 0xDE, 0x5B, 0x78, 0x10, 0x3C, 0x9E,
-    0x6F, 0x04, 0x6D, 0xFE, 0x30, 0xF5, 0x12, 0x1C,
-    0xF9, 0xD4, 0x03, 0x9E, 0xFE, 0x22, 0x25, 0x40,
-    0xA4, 0x1B, 0xBC, 0x06, 0xE4, 0x69, 0xFE, 0xB6
-  },
-  {
-    0xB4, 0x9B, 0xB4, 0x6D, 0x1B, 0x19, 0x3B, 0x04,
-    0x5E, 0x74, 0x12, 0x05, 0x9F, 0xE7, 0x2D, 0x55,
-    0x25, 0x52, 0xA8, 0xFB, 0x6C, 0x36, 0x41, 0x07,
-    0x23, 0xDC, 0x7D, 0x05, 0xFC, 0xCE, 0xDE, 0xD3
-  },
-  {
-    0xB6, 0x12, 0xD3, 0xD2, 0x1F, 0xC4, 0xDE, 0x3C,
-    0x79, 0x1A, 0xF7, 0x35, 0xE5, 0x9F, 0xB7, 0x17,
-    0xD8, 0x39, 0x72, 0x3B, 0x42, 0x50, 0x8E, 0x9E,
-    0xBF, 0x78, 0x06, 0xD9, 0x3E, 0x9C, 0x83, 0x7F
-  },
-  {
-    0x7C, 0x33, 0x90, 0xA3, 0xE5, 0xCB, 0x27, 0xD1,
-    0x86, 0x8B, 0xA4, 0x55, 0xCF, 0xEB, 0x32, 0x22,
-    0xFD, 0xE2, 0x7B, 0xCD, 0xA4, 0xBF, 0x24, 0x8E,
-    0x3D, 0x29, 0xCF, 0x1F, 0x34, 0x32, 0x9F, 0x25
-  },
-  {
-    0xBD, 0x42, 0xEE, 0xA7, 0xB3, 0x54, 0x86, 0xCD,
-    0xD0, 0x90, 0x7C, 0xB4, 0x71, 0x2E, 0xDE, 0x2F,
-    0x4D, 0xEE, 0xCC, 0xBC, 0xA1, 0x91, 0x60, 0x38,
-    0x65, 0xA1, 0xCC, 0x80, 0x9F, 0x12, 0xB4, 0x46
-  },
-  {
-    0xD1, 0xDD, 0x62, 0x01, 0x74, 0x0C, 0xFA, 0xAD,
-    0x53, 0xCE, 0xCC, 0xB7, 0x56, 0xB1, 0x10, 0xF3,
-    0xD5, 0x0F, 0x81, 0x7B, 0x43, 0xD7, 0x55, 0x95,
-    0x57, 0xE5, 0x7A, 0xAD, 0x14, 0x3A, 0x85, 0xD9
-  },
-  {
-    0x58, 0x29, 0x64, 0x3C, 0x1B, 0x10, 0xE1, 0xC8,
-    0xCC, 0xF2, 0x0C, 0x9B, 0x4A, 0xF8, 0x21, 0xEA,
-    0x05, 0x2D, 0x7F, 0x0F, 0x7C, 0x22, 0xF7, 0x38,
-    0x0B, 0xBB, 0xCF, 0xAF, 0xB9, 0x77, 0xE2, 0x1F
-  },
-  {
-    0xFC, 0x4C, 0xF2, 0xA7, 0xFB, 0xE0, 0xB1, 0xE8,
-    0xAE, 0xFB, 0xE4, 0xB4, 0xB7, 0x9E, 0xD8, 0x4E,
-    0xC9, 0x7B, 0x03, 0x4F, 0x51, 0xB4, 0xE9, 0x7F,
-    0x76, 0x0B, 0x20, 0x63, 0x97, 0x65, 0xB9, 0x33
-  },
-  {
-    0x4D, 0x7C, 0x3B, 0x34, 0x38, 0xA0, 0xBD, 0xA2,
-    0x8E, 0x7A, 0x96, 0xE4, 0x20, 0x27, 0xD8, 0x13,
-    0xE8, 0x8A, 0xE6, 0x28, 0x85, 0x49, 0x98, 0x33,
-    0xD3, 0xC5, 0xF6, 0x35, 0x9E, 0xF7, 0xED, 0xBC
-  },
-  {
-    0x34, 0xCB, 0xD3, 0x20, 0x68, 0xEF, 0x7E, 0x82,
-    0x09, 0x9E, 0x58, 0x0B, 0xF9, 0xE2, 0x64, 0x23,
-    0xE9, 0x81, 0xE3, 0x1B, 0x1B, 0xBC, 0xE6, 0x1A,
-    0xEA, 0xB1, 0x4C, 0x32, 0xA2, 0x73, 0xE4, 0xCB
-  },
-  {
-    0xA0, 0x5D, 0xDA, 0x7D, 0x0D, 0xA9, 0xE0, 0x94,
-    0xAE, 0x22, 0x53, 0x3F, 0x79, 0xE7, 0xDC, 0xCD,
-    0x26, 0xB1, 0x75, 0x7C, 0xEF, 0xB9, 0x5B, 0xCF,
-    0x62, 0xC4, 0xFF, 0x9C, 0x26, 0x92, 0xE1, 0xC0
-  },
-  {
-    0x22, 0x4C, 0xCF, 0xFA, 0x7C, 0xCA, 0x4C, 0xE3,
-    0x4A, 0xFD, 0x47, 0xF6, 0x2A, 0xDE, 0x53, 0xC5,
-    0xE8, 0x48, 0x9B, 0x04, 0xAC, 0x9C, 0x41, 0xF7,
-    0xFA, 0xD0, 0xC8, 0xED, 0xEB, 0x89, 0xE9, 0x41
-  },
-  {
-    0x6B, 0xC6, 0x07, 0x64, 0x83, 0xAA, 0x11, 0xC0,
-    0x7F, 0xBA, 0x55, 0xC0, 0xF9, 0xA1, 0xB5, 0xDA,
-    0x87, 0xEC, 0xBF, 0xFE, 0xA7, 0x55, 0x98, 0xCC,
-    0x31, 0x8A, 0x51, 0x4C, 0xEC, 0x7B, 0x3B, 0x6A
-  },
-  {
-    0x9A, 0x03, 0x60, 0xE2, 0x3A, 0x22, 0xF4, 0xF7,
-    0x6C, 0x0E, 0x95, 0x28, 0xDA, 0xFD, 0x12, 0x9B,
-    0xB4, 0x67, 0x5F, 0xB8, 0x8D, 0x44, 0xEA, 0xF8,
-    0x57, 0x77, 0x30, 0x0C, 0xEC, 0x9B, 0xCC, 0x79
-  },
-  {
-    0x79, 0x01, 0x99, 0xB4, 0xCA, 0x90, 0xDE, 0xDC,
-    0xCF, 0xE3, 0x24, 0x74, 0xE8, 0x5B, 0x17, 0x4F,
-    0x06, 0x9E, 0x35, 0x42, 0xBE, 0x31, 0x04, 0xC1,
-    0x12, 0x5C, 0x2F, 0xDB, 0xD6, 0x9D, 0x32, 0xC7
-  },
-  {
-    0x55, 0x83, 0x99, 0x25, 0x83, 0x4C, 0xA3, 0xE8,
-    0x25, 0xE9, 0x92, 0x41, 0x87, 0x4D, 0x16, 0xD6,
-    0xC2, 0x62, 0x36, 0x29, 0xC4, 0xC2, 0xAD, 0xDD,
-    0xF0, 0xDB, 0xA0, 0x1E, 0x6C, 0xE8, 0xA0, 0xDC
-  },
-  {
-    0x61, 0x5F, 0xF8, 0x46, 0xD9, 0x93, 0x00, 0x7D,
-    0x38, 0xDE, 0x1A, 0xEC, 0xB3, 0x17, 0x82, 0x89,
-    0xDE, 0xD0, 0x9E, 0x6B, 0xB5, 0xCB, 0xD6, 0x0F,
-    0x69, 0xC6, 0xAA, 0x36, 0x38, 0x30, 0x20, 0xF7
-  },
-  {
-    0xF0, 0xE4, 0x0B, 0x4E, 0xD4, 0x0D, 0x34, 0x85,
-    0x1E, 0x72, 0xB4, 0xEE, 0x4D, 0x00, 0xEA, 0x6A,
-    0x40, 0xEA, 0x1C, 0x1B, 0xF9, 0xE5, 0xC2, 0x69,
-    0x71, 0x0C, 0x9D, 0x51, 0xCB, 0xB8, 0xA3, 0xC9
-  },
-  {
-    0x0B, 0x07, 0xB2, 0x33, 0x3B, 0x08, 0xD0, 0x8C,
-    0x11, 0xCA, 0x34, 0xAB, 0x44, 0x9B, 0x71, 0xD2,
-    0x9A, 0x0F, 0x43, 0xE1, 0xF7, 0x78, 0xE0, 0x73,
-    0xE7, 0x90, 0x06, 0xCC, 0xB7, 0x30, 0xED, 0x62
-  },
-  {
-    0xD1, 0xF4, 0xC2, 0x9D, 0x9F, 0x23, 0xEA, 0x35,
-    0xEC, 0x40, 0x35, 0xB3, 0x77, 0xD5, 0x06, 0x53,
-    0x8E, 0x72, 0x8B, 0xC7, 0x39, 0xC1, 0x45, 0x96,
-    0x80, 0xCF, 0x1C, 0xC6, 0x94, 0x24, 0x92, 0x4D
-  },
-  {
-    0x12, 0x79, 0xCF, 0x6F, 0x66, 0x9F, 0x92, 0xF6,
-    0xBF, 0xC2, 0x5D, 0x60, 0x5B, 0x94, 0x40, 0xC7,
-    0xDC, 0xCB, 0xD2, 0x5D, 0xF2, 0x8D, 0xC7, 0x35,
-    0x3A, 0xBC, 0x1C, 0x05, 0x30, 0x40, 0x5D, 0xC4
-  },
-  {
-    0x1F, 0xA0, 0xAF, 0x00, 0x77, 0x5D, 0xC2, 0xCE,
-    0x76, 0x50, 0x6D, 0x32, 0x80, 0xF4, 0x72, 0xD2,
-    0xF6, 0xFF, 0x97, 0xA2, 0x15, 0x1F, 0xAA, 0x82,
-    0x79, 0x42, 0xFE, 0xA4, 0x4A, 0xD0, 0xBA, 0x1F
-  },
-  {
-    0x3E, 0x1A, 0xD5, 0x4A, 0x5F, 0x83, 0x5B, 0x98,
-    0x3B, 0xD2, 0xAA, 0xB0, 0xED, 0x2A, 0x4C, 0x0B,
-    0xDD, 0x72, 0x16, 0x20, 0x9C, 0x36, 0xA7, 0x9E,
-    0x9E, 0x2A, 0xAB, 0xB9, 0x9F, 0xAF, 0x35, 0x12
-  },
-  {
-    0xC6, 0xED, 0x39, 0xE2, 0xD8, 0xB6, 0x36, 0xEC,
-    0xCB, 0xA2, 0x45, 0xEF, 0x4E, 0x88, 0x64, 0xF4,
-    0xCD, 0x94, 0x6B, 0xE2, 0x16, 0xB9, 0xBE, 0x48,
-    0x30, 0x3E, 0x08, 0xB9, 0x2D, 0xD0, 0x94, 0x34
-  },
-  {
-    0xE2, 0x47, 0x36, 0xC1, 0x3E, 0xCB, 0x9F, 0x36,
-    0xA0, 0xD8, 0x29, 0xD4, 0x79, 0x8D, 0x76, 0x99,
-    0xC1, 0x4C, 0xC6, 0x5B, 0x6D, 0xC4, 0x4E, 0xD6,
-    0xF1, 0x0C, 0xD4, 0x85, 0x3D, 0x6E, 0x07, 0x57
-  },
-  {
-    0x38, 0x9B, 0xE8, 0x80, 0x52, 0xA3, 0x81, 0x27,
-    0x2C, 0x6D, 0xF7, 0x41, 0xA8, 0x8A, 0xD3, 0x49,
-    0xB7, 0x12, 0x71, 0x84, 0x35, 0x48, 0x0A, 0x81,
-    0x90, 0xB7, 0x04, 0x77, 0x1D, 0x2D, 0xE6, 0x37
-  },
-  {
-    0x88, 0x9F, 0x2D, 0x57, 0x8A, 0x5D, 0xAE, 0xFD,
-    0x34, 0x1C, 0x21, 0x09, 0x84, 0xE1, 0x26, 0xD1,
-    0xD9, 0x6D, 0xA2, 0xDE, 0xE3, 0xC8, 0x1F, 0x7A,
-    0x60, 0x80, 0xBF, 0x84, 0x56, 0x9B, 0x31, 0x14
-  },
-  {
-    0xE9, 0x36, 0x09, 0x5B, 0x9B, 0x98, 0x2F, 0xFC,
-    0x85, 0x6D, 0x2F, 0x52, 0x76, 0xA4, 0xE5, 0x29,
-    0xEC, 0x73, 0x95, 0xDA, 0x31, 0x6D, 0x62, 0x87,
-    0x02, 0xFB, 0x28, 0x1A, 0xDA, 0x6F, 0x38, 0x99
-  },
-  {
-    0xEF, 0x89, 0xCE, 0x1D, 0x6F, 0x8B, 0x48, 0xEA,
-    0x5C, 0xD6, 0xAE, 0xAB, 0x6A, 0x83, 0xD0, 0xCC,
-    0x98, 0xC9, 0xA3, 0xA2, 0x07, 0xA1, 0x08, 0x57,
-    0x32, 0xF0, 0x47, 0xD9, 0x40, 0x38, 0xC2, 0x88
-  },
-  {
-    0xF9, 0x25, 0x01, 0x6D, 0x79, 0xF2, 0xAC, 0xA8,
-    0xC4, 0x9E, 0xDF, 0xCD, 0x66, 0x21, 0xD5, 0xBE,
-    0x3C, 0x8C, 0xEC, 0x61, 0xBD, 0x58, 0x71, 0xD8,
-    0xC1, 0xD3, 0xA5, 0x65, 0xF3, 0x5E, 0x0C, 0x9F
-  },
-  {
-    0x63, 0xE8, 0x63, 0x4B, 0x75, 0x7A, 0x38, 0xF9,
-    0x2B, 0x92, 0xFD, 0x23, 0x89, 0x3B, 0xA2, 0x99,
-    0x85, 0x3A, 0x86, 0x13, 0x67, 0x9F, 0xDF, 0x7E,
-    0x05, 0x11, 0x09, 0x5C, 0x0F, 0x04, 0x7B, 0xCA
-  },
-  {
-    0xCF, 0x2C, 0xCA, 0x07, 0x72, 0xB7, 0x05, 0xEB,
-    0x57, 0xD2, 0x89, 0x43, 0xF8, 0x3D, 0x35, 0x3F,
-    0xE2, 0x91, 0xE5, 0xB3, 0x77, 0x78, 0x0B, 0x37,
-    0x4C, 0x8B, 0xA4, 0x66, 0x58, 0x30, 0xBE, 0x87
-  },
-  {
-    0x46, 0xDF, 0x5B, 0x87, 0xC8, 0x0E, 0x7E, 0x40,
-    0x74, 0xAE, 0xE6, 0x85, 0x59, 0x42, 0x47, 0x42,
-    0x84, 0x5B, 0x9B, 0x35, 0x0F, 0x51, 0xBA, 0x55,
-    0xB0, 0x74, 0xBB, 0xAE, 0x4C, 0x62, 0x6A, 0xAB
-  },
-  {
-    0x65, 0x8A, 0xA4, 0xF9, 0xD2, 0xBC, 0xBD, 0x4F,
-    0x7F, 0x8E, 0xB6, 0x3E, 0x68, 0xF5, 0x36, 0x7E,
-    0xDB, 0xC5, 0x00, 0xA0, 0xB1, 0xFB, 0xB4, 0x1E,
-    0x9D, 0xF1, 0x41, 0xBC, 0xBA, 0x8F, 0xCD, 0x53
-  },
-  {
-    0xEE, 0x80, 0x55, 0x50, 0x08, 0xA7, 0x16, 0x55,
-    0xE0, 0x81, 0x09, 0x2B, 0xBA, 0x6F, 0x67, 0x0E,
-    0xD9, 0x8A, 0xF9, 0xA0, 0x9F, 0xB5, 0xAF, 0xB9,
-    0x4C, 0xBC, 0x5C, 0x75, 0x48, 0x14, 0xDB, 0x4F
-  },
-  {
-    0x2C, 0x5F, 0x9D, 0x04, 0x82, 0x20, 0xB0, 0x41,
-    0xB6, 0xD4, 0x52, 0x4B, 0x44, 0x90, 0xCF, 0x8C,
-    0x66, 0xFC, 0xB8, 0xE1, 0x4B, 0x0D, 0x64, 0x88,
-    0x7A, 0xA1, 0xE4, 0x76, 0x1A, 0x60, 0x2B, 0x39
-  },
-  {
-    0x44, 0xCB, 0x63, 0x11, 0xD0, 0x75, 0x0B, 0x7E,
-    0x33, 0xF7, 0x33, 0x3A, 0xA7, 0x8A, 0xAC, 0xA9,
-    0xC3, 0x4A, 0xD5, 0xF7, 0x9C, 0x1B, 0x15, 0x91,
-    0xEC, 0x33, 0x95, 0x1E, 0x69, 0xC4, 0xC4, 0x61
-  },
-  {
-    0x0C, 0x6C, 0xE3, 0x2A, 0x3E, 0xA0, 0x56, 0x12,
-    0xC5, 0xF8, 0x09, 0x0F, 0x6A, 0x7E, 0x87, 0xF5,
-    0xAB, 0x30, 0xE4, 0x1B, 0x70, 0x7D, 0xCB, 0xE5,
-    0x41, 0x55, 0x62, 0x0A, 0xD7, 0x70, 0xA3, 0x40
-  },
-  {
-    0xC6, 0x59, 0x38, 0xDD, 0x3A, 0x05, 0x3C, 0x72,
-    0x9C, 0xF5, 0xB7, 0xC8, 0x9F, 0x39, 0x0B, 0xFE,
-    0xBB, 0x51, 0x12, 0x76, 0x6B, 0xB0, 0x0A, 0xA5,
-    0xFA, 0x31, 0x64, 0xDF, 0xDF, 0x3B, 0x56, 0x47
-  },
-  {
-    0x7D, 0xE7, 0xF0, 0xD5, 0x9A, 0x90, 0x39, 0xAF,
-    0xF3, 0xAA, 0xF3, 0x2C, 0x3E, 0xE5, 0x2E, 0x79,
-    0x17, 0x53, 0x57, 0x29, 0x06, 0x21, 0x68, 0xD2,
-    0x49, 0x0B, 0x6B, 0x6C, 0xE2, 0x44, 0xB3, 0x80
-  },
-  {
-    0x89, 0x58, 0x98, 0xF5, 0x3A, 0x8F, 0x39, 0xE4,
-    0x24, 0x10, 0xDA, 0x77, 0xB6, 0xC4, 0x81, 0x5B,
-    0x0B, 0xB2, 0x39, 0x5E, 0x39, 0x22, 0xF5, 0xBE,
-    0xD0, 0xE1, 0xFB, 0xF2, 0xA4, 0xC6, 0xDF, 0xEB
-  },
-  {
-    0xC9, 0x05, 0xA8, 0x49, 0x84, 0x34, 0x8A, 0x64,
-    0xDB, 0x1F, 0x54, 0x20, 0x83, 0x74, 0x8A, 0xD9,
-    0x0A, 0x4B, 0xAD, 0x98, 0x33, 0xCB, 0x6D, 0xA3,
-    0x87, 0x29, 0x34, 0x31, 0xF1, 0x9E, 0x7C, 0x9C
-  },
-  {
-    0xED, 0x37, 0xD1, 0xA4, 0xD0, 0x6C, 0x90, 0xD1,
-    0x95, 0x78, 0x48, 0x66, 0x7E, 0x95, 0x48, 0xFE,
-    0xBB, 0x5D, 0x42, 0x3E, 0xAB, 0x4F, 0x56, 0x78,
-    0x5C, 0xC4, 0xB5, 0x41, 0x6B, 0x78, 0x00, 0x08
-  },
-  {
-    0x0B, 0xC6, 0x5D, 0x99, 0x97, 0xFB, 0x73, 0x4A,
-    0x56, 0x1F, 0xB1, 0xE9, 0xF8, 0xC0, 0x95, 0x8A,
-    0x02, 0xC7, 0xA4, 0xDB, 0xD0, 0x96, 0xEB, 0xEF,
-    0x1A, 0x17, 0x51, 0xAE, 0xD9, 0x59, 0xEE, 0xD7
-  },
-  {
-    0x7C, 0x5F, 0x43, 0x2E, 0xB8, 0xB7, 0x35, 0x2A,
-    0x94, 0x94, 0xDE, 0xA4, 0xD5, 0x3C, 0x21, 0x38,
-    0x70, 0x31, 0xCE, 0x70, 0xE8, 0x5D, 0x94, 0x08,
-    0xFC, 0x6F, 0x8C, 0xD9, 0x8A, 0x6A, 0xAA, 0x1E
-  },
-  {
-    0xB8, 0xBF, 0x8E, 0x2C, 0x34, 0xE0, 0x33, 0x98,
-    0x36, 0x39, 0x90, 0x9E, 0xAA, 0x37, 0x64, 0x0D,
-    0x87, 0x7B, 0x04, 0x8F, 0xE2, 0x99, 0xB4, 0x70,
-    0xAF, 0x2D, 0x0B, 0xA8, 0x2A, 0x5F, 0x14, 0xC0
-  },
-  {
-    0x88, 0xA9, 0xDD, 0x13, 0xD5, 0xDA, 0xDB, 0xDE,
-    0xE6, 0xBF, 0xF7, 0xEE, 0x1E, 0xF8, 0xC7, 0x1C,
-    0xC1, 0x93, 0xAA, 0x4B, 0xF3, 0xE8, 0x4F, 0x8F,
-    0xE8, 0x0C, 0xB0, 0x75, 0x68, 0x3C, 0x07, 0x79
-  },
-  {
-    0x9A, 0xED, 0xB8, 0x87, 0x6D, 0xD2, 0x1C, 0x8C,
-    0x84, 0xD2, 0xE7, 0x02, 0xA1, 0x36, 0x25, 0x98,
-    0x04, 0x62, 0xF6, 0x8B, 0xF0, 0xA1, 0xB7, 0x25,
-    0x4A, 0xD8, 0x06, 0xC3, 0x84, 0x03, 0xC9, 0xDE
-  },
-  {
-    0xD0, 0x97, 0x57, 0x3D, 0xF2, 0xD6, 0xB2, 0x48,
-    0x9A, 0x47, 0x94, 0x84, 0x86, 0x98, 0x00, 0xA1,
-    0xF8, 0x33, 0xEA, 0x16, 0x9E, 0xFF, 0x32, 0xAE,
-    0x3C, 0xE6, 0x3A, 0x20, 0x79, 0x54, 0x8D, 0x78
-  },
-  {
-    0xD1, 0x8F, 0x27, 0xA3, 0xE5, 0x55, 0xD7, 0xF9,
-    0x1A, 0x00, 0x7C, 0x67, 0xAC, 0xEE, 0xDE, 0x39,
-    0x1F, 0x75, 0xA6, 0x1F, 0xA4, 0x2A, 0x0B, 0x45,
-    0x66, 0xEB, 0x58, 0x2C, 0xA0, 0x5E, 0xBC, 0xE7
-  },
-  {
-    0xDF, 0x1D, 0xAA, 0x90, 0xB1, 0x70, 0x23, 0x13,
-    0xE6, 0xA5, 0x90, 0x1C, 0x7A, 0xFC, 0x5E, 0xD9,
-    0x65, 0x77, 0x17, 0xA7, 0x15, 0xFA, 0x53, 0xA4,
-    0x18, 0x9E, 0xC1, 0xE5, 0xDF, 0x29, 0x3A, 0x68
-  },
-  {
-    0x04, 0xE3, 0xA4, 0x96, 0xB6, 0x69, 0x96, 0xC6,
-    0x6E, 0x32, 0x91, 0x9E, 0xD1, 0xF9, 0x4C, 0x36,
-    0xEE, 0xBB, 0xF2, 0x40, 0x63, 0x3A, 0x2F, 0x73,
-    0x98, 0x45, 0xF0, 0x29, 0x5D, 0x34, 0xAF, 0xBA
-  },
-  {
-    0x8C, 0x45, 0xD8, 0x8C, 0x4E, 0x9C, 0x9D, 0x0C,
-    0x8C, 0x67, 0x7F, 0xE4, 0x8F, 0xA5, 0x44, 0x9B,
-    0xA3, 0x01, 0x78, 0xD4, 0x0A, 0xF0, 0xF0, 0x21,
-    0x79, 0x21, 0xC6, 0x2E, 0x4B, 0x60, 0xCD, 0xD3
-  },
-  {
-    0xE1, 0x49, 0xA6, 0xB1, 0x3B, 0xDE, 0xDE, 0xA2,
-    0xEE, 0xEE, 0x00, 0x9C, 0xE9, 0x44, 0x5E, 0x8D,
-    0xCF, 0x76, 0xB7, 0x6E, 0x55, 0xA5, 0x01, 0xD8,
-    0xF5, 0xB4, 0x3F, 0xF8, 0x96, 0x79, 0x6A, 0xD1
-  },
-  {
-    0xA8, 0x37, 0xC4, 0xC7, 0xC6, 0xF5, 0xCF, 0xB9,
-    0x9E, 0x10, 0x85, 0xFD, 0x43, 0x28, 0x7A, 0x41,
-    0x05, 0xCB, 0x28, 0xB7, 0x6F, 0xC3, 0x8B, 0x60,
-    0x55, 0xC5, 0xDC, 0xFF, 0x78, 0xB8, 0x25, 0x65
-  },
-  {
-    0x42, 0x41, 0x1F, 0x28, 0x78, 0x0B, 0x4F, 0x16,
-    0x38, 0x54, 0x0B, 0x87, 0x05, 0x21, 0xEC, 0x45,
-    0xBC, 0xEB, 0x1E, 0x0C, 0x71, 0x31, 0xF7, 0xE1,
-    0xC4, 0x67, 0x2E, 0x43, 0x6C, 0x88, 0xC8, 0xE9
-  },
-  {
-    0x34, 0xB4, 0xE8, 0x76, 0x76, 0x94, 0x71, 0xDF,
-    0x55, 0x2E, 0x55, 0x22, 0xCE, 0xA7, 0x84, 0xFA,
-    0x53, 0xAC, 0x61, 0xBE, 0xDE, 0x8C, 0xFE, 0x29,
-    0x14, 0x09, 0xE6, 0x8B, 0x69, 0xE8, 0x77, 0x6F
-  },
-  {
-    0x8F, 0x31, 0xD6, 0x37, 0xA9, 0x1D, 0xBD, 0x0E,
-    0xCB, 0x0B, 0xA0, 0xE6, 0x94, 0xBE, 0xC1, 0x44,
-    0x76, 0x58, 0xCE, 0x6C, 0x27, 0xEA, 0x9B, 0x95,
-    0xFF, 0x36, 0x70, 0x1C, 0xAF, 0x36, 0xF0, 0x01
-  },
-  {
-    0xB5, 0xC8, 0x95, 0xEB, 0x07, 0x1E, 0x3D, 0x38,
-    0x52, 0x8D, 0x47, 0x5D, 0x3B, 0xB0, 0xBA, 0x88,
-    0xB7, 0x17, 0x95, 0xE4, 0x0A, 0x98, 0x2E, 0x2A,
-    0xC2, 0xD8, 0x44, 0x22, 0xA0, 0xF2, 0x68, 0x5D
-  },
-  {
-    0xE9, 0x06, 0x25, 0x7C, 0x41, 0x9D, 0x94, 0x1E,
-    0xD2, 0xB8, 0xA9, 0xC1, 0x27, 0x81, 0xDB, 0x97,
-    0x59, 0xA3, 0xFC, 0xF3, 0xDC, 0x7C, 0xDB, 0x03,
-    0x15, 0x99, 0xE1, 0x08, 0x6B, 0x67, 0x2F, 0x10
-  },
-  {
-    0x98, 0xAD, 0x24, 0x39, 0x7C, 0x6E, 0xAE, 0x4C,
-    0xF7, 0x3E, 0xA8, 0xBB, 0xEF, 0x5A, 0x0B, 0x74,
-    0xD2, 0x1A, 0xD1, 0x5F, 0x33, 0x92, 0x0F, 0x44,
-    0x07, 0x0A, 0x98, 0xBD, 0xF5, 0x3D, 0x0B, 0x3A
-  },
-  {
-    0xDD, 0x51, 0x0C, 0xA5, 0x5B, 0x11, 0x70, 0xF9,
-    0xCE, 0xFD, 0xBB, 0x16, 0xFC, 0x14, 0x52, 0x62,
-    0xAA, 0x36, 0x3A, 0x87, 0x0A, 0x01, 0xE1, 0xBC,
-    0x4F, 0xBE, 0x40, 0x23, 0x4B, 0x4B, 0x6F, 0x2F
-  },
-  {
-    0xF2, 0xD8, 0xD9, 0x31, 0xB9, 0x2E, 0x1C, 0xB6,
-    0x98, 0xE5, 0x6E, 0xD0, 0x28, 0x19, 0xEA, 0x11,
-    0xD2, 0x66, 0x19, 0xB8, 0x3A, 0x62, 0x09, 0xAD,
-    0x67, 0x22, 0x53, 0x68, 0xFE, 0x11, 0x95, 0x71
-  },
-  {
-    0xE4, 0x63, 0x70, 0x55, 0xDB, 0x91, 0xF9, 0x43,
-    0x7C, 0xF4, 0x60, 0xEF, 0x40, 0xB5, 0x14, 0x5F,
-    0x69, 0x98, 0x26, 0x6A, 0x5E, 0x74, 0xE9, 0x6A,
-    0x00, 0x78, 0x2C, 0x62, 0xCF, 0x30, 0xCF, 0x1C
-  },
-  {
-    0x35, 0x63, 0x53, 0x0A, 0x89, 0xD3, 0x2B, 0x75,
-    0xF7, 0x8D, 0x83, 0xE9, 0x87, 0x2A, 0xD4, 0xC5,
-    0x75, 0xF5, 0x20, 0x39, 0x9D, 0x65, 0x03, 0x5D,
-    0xED, 0x99, 0xE5, 0xEE, 0xC5, 0x80, 0x71, 0x50
-  },
-  {
-    0x8E, 0x79, 0xF9, 0x2C, 0x86, 0x5B, 0xEB, 0x3E,
-    0x1C, 0xDB, 0xF0, 0x8F, 0x75, 0x4A, 0x26, 0x06,
-    0xE8, 0x53, 0x49, 0x05, 0x3D, 0x66, 0xD6, 0x16,
-    0x02, 0x4A, 0x81, 0x3F, 0xCA, 0x54, 0x1A, 0x4D
-  },
-  {
-    0x86, 0x42, 0x26, 0xF2, 0x83, 0x9C, 0x76, 0xB1,
-    0xD5, 0xF7, 0xC1, 0x3D, 0x98, 0xC2, 0xA5, 0x15,
-    0x8C, 0x2A, 0xBB, 0x71, 0xD9, 0xD8, 0xF0, 0xFA,
-    0x1F, 0x7C, 0x3F, 0x74, 0x68, 0x00, 0x16, 0x03
-  },
-  {
-    0xD3, 0xE3, 0xF5, 0xB8, 0xCE, 0xEB, 0xB1, 0x11,
-    0x84, 0x80, 0x35, 0x35, 0x90, 0x0B, 0x6E, 0xED,
-    0xDA, 0x60, 0x6E, 0xEB, 0x36, 0x97, 0x51, 0xA7,
-    0xCD, 0xA3, 0x6C, 0xA3, 0x02, 0x29, 0xFB, 0x02
-  },
-  {
-    0x8C, 0x7D, 0x6B, 0x98, 0x72, 0x69, 0x16, 0x90,
-    0x31, 0xF7, 0x1F, 0xD7, 0xE4, 0xC4, 0x45, 0x01,
-    0x2D, 0x3E, 0x6A, 0x3C, 0x88, 0x09, 0xF6, 0x47,
-    0x9B, 0xD6, 0x67, 0xCF, 0x31, 0x1E, 0x27, 0x6E
-  },
-  {
-    0xB9, 0x04, 0xB5, 0x71, 0x1B, 0xF1, 0x9E, 0x85,
-    0x32, 0xF7, 0xAD, 0x64, 0x27, 0x41, 0x0A, 0x62,
-    0xA1, 0xF7, 0x7F, 0x77, 0xB9, 0xB6, 0xD7, 0x1D,
-    0x2F, 0xC4, 0x3B, 0xC9, 0x0F, 0x73, 0x23, 0x5A
-  },
-  {
-    0x45, 0x36, 0x63, 0x43, 0x15, 0xC8, 0x67, 0x28,
-    0xF5, 0xAB, 0x74, 0x49, 0xEB, 0x2D, 0x04, 0x02,
-    0x0E, 0x9E, 0xAE, 0x8D, 0xD6, 0x79, 0x55, 0x00,
-    0xE9, 0xEC, 0x9A, 0x00, 0x66, 0x38, 0x6E, 0x69
-  },
-  {
-    0xFD, 0x5E, 0x49, 0xFE, 0xD4, 0x9D, 0xC4, 0x4B,
-    0xDE, 0x89, 0xF4, 0x60, 0xA9, 0x50, 0x19, 0x1E,
-    0xBB, 0x06, 0x7C, 0x69, 0x8A, 0x3F, 0x21, 0xEA,
-    0x14, 0x30, 0x8C, 0x74, 0x13, 0xB9, 0x16, 0x81
-  },
-  {
-    0x31, 0xF0, 0x1D, 0x03, 0x0B, 0x9B, 0x22, 0xD0,
-    0x0A, 0x0F, 0x71, 0xED, 0x2C, 0xEB, 0x5D, 0x2D,
-    0xC8, 0x1A, 0xF2, 0xC2, 0x4B, 0xF5, 0x67, 0x0F,
-    0xDE, 0x19, 0xA6, 0x85, 0xE8, 0xD1, 0x39, 0x2E
-  },
-  {
-    0x5F, 0x84, 0xD9, 0xDE, 0x28, 0x4B, 0x1E, 0x4F,
-    0x67, 0x8E, 0x31, 0xAB, 0x6A, 0x76, 0xF5, 0x66,
-    0x1B, 0x5A, 0xEA, 0xA7, 0x68, 0x53, 0x93, 0x84,
-    0xAA, 0x38, 0xF9, 0xE4, 0x9C, 0xCE, 0x6E, 0x6E
-  },
-  {
-    0xB2, 0x07, 0x9E, 0x59, 0x97, 0xA4, 0xEA, 0xD3,
-    0xA7, 0x1F, 0xEF, 0xC0, 0x2F, 0x90, 0xA7, 0x48,
-    0x3A, 0x10, 0xFD, 0x2E, 0x6F, 0x31, 0xBD, 0xA9,
-    0xD2, 0x08, 0x44, 0x85, 0xCC, 0x01, 0x6B, 0xBD
-  },
-  {
-    0xE0, 0xF8, 0x4D, 0x7F, 0x52, 0x5B, 0x6F, 0xED,
-    0x79, 0x1F, 0x77, 0x28, 0x9A, 0xE5, 0x8F, 0x7D,
-    0x50, 0xA2, 0x94, 0x32, 0xD4, 0x2C, 0x25, 0xC1,
-    0xE8, 0x39, 0x29, 0xB8, 0x38, 0x89, 0x1D, 0x79
-  },
-  {
-    0x70, 0x46, 0x96, 0x90, 0x95, 0x6D, 0x79, 0x18,
-    0xAC, 0xE7, 0xBA, 0x5F, 0x41, 0x30, 0x2D, 0xA1,
-    0x38, 0xC9, 0xB5, 0x6E, 0xCD, 0x41, 0x55, 0x44,
-    0xFA, 0xCE, 0x8D, 0x99, 0x8C, 0x21, 0xAB, 0xEB
-  },
-  {
-    0x45, 0xC9, 0x1A, 0x62, 0x24, 0x9B, 0x39, 0xCD,
-    0xA9, 0x4E, 0x50, 0x82, 0x95, 0xBE, 0xC7, 0x66,
-    0x71, 0x19, 0x44, 0x77, 0x65, 0xEF, 0x80, 0xEF,
-    0xA8, 0x2D, 0x1E, 0x92, 0xD5, 0x70, 0x67, 0xD8
-  },
-  {
-    0x1D, 0x9E, 0x00, 0x73, 0xEE, 0xD0, 0x73, 0x15,
-    0x54, 0xC3, 0xBE, 0xAA, 0x47, 0x46, 0x0D, 0x51,
-    0x1A, 0xD2, 0x61, 0xDD, 0x4D, 0x4A, 0x3B, 0xED,
-    0x9D, 0x8D, 0x20, 0x2F, 0x22, 0xF2, 0x15, 0x89
-  },
-  {
-    0x40, 0x82, 0x62, 0x73, 0x6D, 0x8A, 0xEC, 0x0B,
-    0x84, 0x7D, 0xBA, 0x25, 0x02, 0x58, 0x60, 0x8A,
-    0x43, 0x45, 0xA6, 0x3A, 0x1E, 0xB1, 0x95, 0xE5,
-    0xC7, 0xAE, 0x2E, 0xE8, 0x74, 0xC3, 0x4D, 0xA8
-  },
-  {
-    0x23, 0xD2, 0xB7, 0x04, 0x39, 0x46, 0x99, 0x49,
-    0x98, 0x23, 0x90, 0x53, 0x8D, 0x7E, 0x5A, 0xDE,
-    0x9F, 0x18, 0xC8, 0xE3, 0xBB, 0xF6, 0x60, 0x5A,
-    0xFC, 0xF4, 0x9B, 0x00, 0xC0, 0x61, 0xE8, 0x37
-  },
-  {
-    0x23, 0x2F, 0xB1, 0x87, 0xD2, 0x71, 0xBE, 0xA9,
-    0x12, 0xEF, 0xD4, 0x07, 0xFF, 0xE0, 0x80, 0x56,
-    0xD6, 0xA4, 0x2E, 0x53, 0x21, 0xEC, 0x79, 0x2D,
-    0xF3, 0xD5, 0x84, 0xA9, 0x4F, 0x63, 0x0A, 0xB2
-  },
-  {
-    0x13, 0x8E, 0x19, 0x44, 0xE4, 0xB5, 0x4D, 0xE8,
-    0x68, 0x1D, 0x7E, 0x48, 0xC4, 0xF0, 0x81, 0x48,
-    0xE4, 0x0A, 0x56, 0x7E, 0x5C, 0xAD, 0x94, 0x6A,
-    0x6A, 0xF4, 0xE8, 0xD5, 0xD2, 0x6F, 0x75, 0xC7
-  },
-  {
-    0x80, 0xC1, 0x51, 0x32, 0x5F, 0xBF, 0xC6, 0x78,
-    0xB7, 0xBE, 0x4E, 0x40, 0xB3, 0x0F, 0x29, 0xFE,
-    0x31, 0xCD, 0xBE, 0x1C, 0x84, 0x12, 0x6E, 0x00,
-    0x6D, 0xF3, 0xC1, 0x85, 0x24, 0xBD, 0x2D, 0x6C
-  },
-  {
-    0xA6, 0x42, 0x26, 0x73, 0x01, 0x66, 0x9D, 0xF2,
-    0x61, 0xB8, 0x39, 0xF8, 0x73, 0x65, 0x76, 0x29,
-    0x05, 0xFF, 0x32, 0x0A, 0x0A, 0x2F, 0xC4, 0xBD,
-    0xC4, 0x8E, 0x5A, 0x8E, 0x15, 0xD1, 0x32, 0x33
-  },
-  {
-    0x0F, 0x8B, 0x10, 0x99, 0x38, 0x60, 0x93, 0x7A,
-    0x74, 0xCC, 0x2D, 0xE4, 0x0A, 0x27, 0x31, 0xDD,
-    0x99, 0x54, 0xB6, 0x54, 0xBB, 0x94, 0xC3, 0x4E,
-    0x87, 0x66, 0x52, 0xE9, 0x8D, 0x4B, 0xBD, 0x16
-  },
-  {
-    0xE6, 0x34, 0xA5, 0x85, 0x12, 0x49, 0x32, 0x73,
-    0x26, 0x0F, 0x10, 0xD4, 0x49, 0x53, 0xCD, 0x99,
-    0x8E, 0x34, 0xCB, 0x82, 0x81, 0xC4, 0x1B, 0xF4,
-    0x2E, 0x0A, 0xE2, 0xF2, 0x5C, 0xBD, 0x1F, 0x75
-  },
-  {
-    0xBD, 0xE6, 0xAF, 0x9B, 0xAF, 0x3C, 0x07, 0xE9,
-    0x54, 0x23, 0xCA, 0xB5, 0x04, 0xDE, 0xE7, 0x0E,
-    0xDC, 0xC3, 0x31, 0x8B, 0x22, 0xDD, 0x1E, 0xB6,
-    0xFD, 0x85, 0xBE, 0x44, 0x7A, 0xC9, 0xF2, 0x09
-  },
-  {
-    0x91, 0x4B, 0x37, 0xAB, 0x5B, 0x8C, 0xFD, 0xE6,
-    0xA4, 0x80, 0x46, 0x6A, 0x0D, 0x82, 0x43, 0x2C,
-    0x7D, 0x76, 0x32, 0x8E, 0x9A, 0x88, 0xEF, 0x5B,
-    0x4F, 0x52, 0x42, 0x9F, 0x7A, 0x3F, 0xFC, 0x7D
-  },
-  {
-    0x55, 0xBE, 0x66, 0xE9, 0xA5, 0xAA, 0x67, 0x1A,
-    0x23, 0x88, 0x2E, 0xF3, 0xE7, 0xD9, 0xD3, 0x6E,
-    0xA9, 0x54, 0x87, 0xDC, 0x71, 0xB7, 0x25, 0xA5,
-    0xAD, 0x4B, 0x79, 0x8A, 0x87, 0x91, 0x43, 0xD0
-  },
-  {
-    0x3F, 0xD0, 0x45, 0x89, 0x4B, 0x83, 0x6E, 0x44,
-    0xE9, 0xCA, 0x75, 0xFB, 0xE3, 0xEA, 0xDC, 0x48,
-    0x6C, 0xBB, 0xD0, 0xD8, 0xCE, 0xE1, 0xB3, 0xCF,
-    0x14, 0xF7, 0x6E, 0x7F, 0x1E, 0x77, 0xAE, 0xF3
-  },
-  {
-    0xCE, 0x60, 0x34, 0x3D, 0xC4, 0x87, 0x4B, 0x66,
-    0x04, 0xE1, 0xFB, 0x23, 0x1E, 0x37, 0xEC, 0x1E,
-    0xEC, 0x3F, 0x06, 0x56, 0x6E, 0x42, 0x8A, 0xE7,
-    0x64, 0xEF, 0xFF, 0xA2, 0x30, 0xAD, 0xD4, 0x85
-  },
-  {
-    0xE3, 0x8C, 0x9D, 0xF0, 0x24, 0xDE, 0x21, 0x53,
-    0xD2, 0x26, 0x73, 0x8A, 0x0E, 0x5B, 0xA9, 0xB8,
-    0xC6, 0x78, 0x4D, 0xAC, 0xA6, 0x5C, 0x22, 0xA7,
-    0x62, 0x8E, 0xB5, 0x8E, 0xA0, 0xD4, 0x95, 0xA7
-  },
-  {
-    0x8D, 0xFE, 0xC0, 0xD4, 0xF3, 0x65, 0x8A, 0x20,
-    0xA0, 0xBA, 0xD6, 0x6F, 0x21, 0x60, 0x83, 0x2B,
-    0x16, 0x4E, 0x70, 0x0A, 0x21, 0xEC, 0x5A, 0x01,
-    0x65, 0xC3, 0x67, 0x72, 0xB2, 0x08, 0x61, 0x11
-  },
-  {
-    0x44, 0x01, 0xB5, 0x0E, 0x09, 0x86, 0x5F, 0x42,
-    0x38, 0x24, 0x3B, 0x82, 0x25, 0xCA, 0x40, 0xA0,
-    0x8D, 0xBB, 0x46, 0x85, 0xF5, 0xF8, 0x62, 0xFB,
-    0xDD, 0x72, 0x98, 0x04, 0x31, 0xA8, 0x5D, 0x3F
-  },
-  {
-    0x86, 0x68, 0x94, 0x27, 0x88, 0xC4, 0xCE, 0x8A,
-    0x33, 0x19, 0x0F, 0xFC, 0xFA, 0xD1, 0xC6, 0x78,
-    0xC4, 0xFA, 0x41, 0xE9, 0x94, 0x17, 0x09, 0x4E,
-    0x24, 0x0F, 0x4A, 0x43, 0xF3, 0x87, 0xA3, 0xB6
-  },
-  {
-    0xA7, 0x28, 0x8D, 0x5E, 0x09, 0x80, 0x9B, 0x69,
-    0x69, 0x84, 0xEC, 0xD5, 0x32, 0x6C, 0xDD, 0x84,
-    0xFB, 0xE3, 0x5F, 0xCF, 0x67, 0x23, 0x5D, 0x81,
-    0x1C, 0x82, 0x00, 0x25, 0x36, 0xA3, 0xC5, 0xE1
-  },
-  {
-    0x8E, 0x92, 0x5C, 0x3C, 0x14, 0x6B, 0xAC, 0xF3,
-    0x35, 0x1E, 0xC5, 0x32, 0x41, 0xAC, 0xE5, 0xF7,
-    0x3E, 0x8F, 0xC9, 0xBD, 0x8C, 0x61, 0xCA, 0xD9,
-    0x7F, 0xD7, 0x72, 0xB0, 0x7E, 0x1B, 0x83, 0x73
-  },
-  {
-    0xC7, 0xEB, 0x9E, 0x6D, 0xED, 0x2F, 0x99, 0x3D,
-    0x48, 0xB0, 0x17, 0x0D, 0xA2, 0x7C, 0x5B, 0x75,
-    0x3B, 0x12, 0x17, 0x6B, 0xE1, 0x26, 0xC7, 0xBA,
-    0x2D, 0x6A, 0xF8, 0x5F, 0x85, 0x93, 0xB7, 0x52
-  },
-  {
-    0xCA, 0x27, 0xF1, 0x6F, 0x94, 0xE4, 0xEC, 0x0E,
-    0x62, 0x8E, 0x7F, 0x8A, 0xEF, 0xC6, 0x65, 0x7B,
-    0xED, 0xC9, 0x37, 0x42, 0x96, 0x59, 0x40, 0xAE,
-    0x78, 0x6A, 0x73, 0xB5, 0xFD, 0x59, 0x3B, 0x97
-  },
-  {
-    0x8C, 0x21, 0xE6, 0x56, 0x8B, 0xC6, 0xDC, 0x00,
-    0xE3, 0xD6, 0xEB, 0xC0, 0x9E, 0xA9, 0xC2, 0xCE,
-    0x00, 0x6C, 0xD3, 0x11, 0xD3, 0xB3, 0xE9, 0xCC,
-    0x9D, 0x8D, 0xDB, 0xFB, 0x3C, 0x5A, 0x77, 0x76
-  },
-  {
-    0x52, 0x56, 0x66, 0x96, 0x8B, 0x3B, 0x7D, 0x00,
-    0x7B, 0xB9, 0x26, 0xB6, 0xEF, 0xDC, 0x7E, 0x21,
-    0x2A, 0x31, 0x15, 0x4C, 0x9A, 0xE1, 0x8D, 0x43,
-    0xEE, 0x0E, 0xB7, 0xE6, 0xB1, 0xA9, 0x38, 0xD3
-  },
-  {
-    0xE0, 0x9A, 0x4F, 0xA5, 0xC2, 0x8B, 0xDC, 0xD7,
-    0xC8, 0x39, 0x84, 0x0E, 0x0A, 0x38, 0x3E, 0x4F,
-    0x7A, 0x10, 0x2D, 0x0B, 0x1B, 0xC8, 0x49, 0xC9,
-    0x49, 0x62, 0x7C, 0x41, 0x00, 0xC1, 0x7D, 0xD3
-  },
-  {
-    0xC1, 0x9F, 0x3E, 0x29, 0x5D, 0xB2, 0xFC, 0x0E,
-    0x74, 0x81, 0xC4, 0xF1, 0x6A, 0xF0, 0x11, 0x55,
-    0xDD, 0xB0, 0xD7, 0xD1, 0x38, 0x3D, 0x4A, 0x1F,
-    0xF1, 0x69, 0x9D, 0xB7, 0x11, 0x77, 0x34, 0x0C
-  },
-  {
-    0x76, 0x9E, 0x67, 0x8C, 0x0A, 0x09, 0x09, 0xA2,
-    0x02, 0x1C, 0x4D, 0xC2, 0x6B, 0x1A, 0x3C, 0x9B,
-    0xC5, 0x57, 0xAD, 0xB2, 0x1A, 0x50, 0x83, 0x4C,
-    0xDC, 0x5C, 0x92, 0x93, 0xF7, 0x53, 0x65, 0xF8
-  },
-  {
-    0xB6, 0x48, 0x74, 0xAD, 0xAB, 0x6B, 0xCB, 0x85,
-    0xB9, 0x4B, 0xD9, 0xA6, 0xC5, 0x65, 0xD0, 0xD2,
-    0xBC, 0x35, 0x44, 0x5D, 0x75, 0x28, 0xBC, 0x85,
-    0xB4, 0x1F, 0xDC, 0x79, 0xDC, 0x76, 0xE3, 0x4F
-  },
-  {
-    0xFA, 0xF2, 0x50, 0xDE, 0x15, 0x82, 0x0F, 0x7F,
-    0xC6, 0x10, 0xDD, 0x53, 0xEE, 0xAE, 0x44, 0x60,
-    0x1C, 0x3E, 0xFF, 0xA3, 0xAC, 0xCD, 0x08, 0x8E,
-    0xB6, 0x69, 0x05, 0xBB, 0x26, 0x53, 0xBE, 0x8C
-  },
-  {
-    0x1E, 0x20, 0x38, 0x73, 0x9B, 0x2C, 0x01, 0x8B,
-    0x0E, 0x9E, 0x0E, 0x1E, 0x52, 0x2F, 0xD9, 0x65,
-    0x12, 0x87, 0xEE, 0x6E, 0x36, 0x65, 0x91, 0x9B,
-    0x24, 0xC2, 0x12, 0x4F, 0x0C, 0x1A, 0x3F, 0x3A
-  },
-  {
-    0x5F, 0xEC, 0x3A, 0xA0, 0x08, 0x61, 0xDE, 0x1A,
-    0xC5, 0xDA, 0xB3, 0xC1, 0x37, 0x06, 0x5D, 0x1E,
-    0x01, 0xBB, 0x03, 0xF6, 0x9D, 0xCC, 0x7D, 0x1C,
-    0xF7, 0xCA, 0x4F, 0x43, 0x56, 0xAE, 0xC9, 0xA3
-  },
-  {
-    0x44, 0x51, 0xFE, 0x6B, 0xBE, 0xF3, 0x93, 0x43,
-    0x91, 0x92, 0x44, 0xC5, 0x1D, 0xAE, 0x1E, 0xA9,
-    0xA9, 0x54, 0xCF, 0x2C, 0x09, 0x66, 0xAB, 0x04,
-    0x5B, 0x15, 0x52, 0x1E, 0xCF, 0x35, 0x00, 0x81
-  },
-  {
-    0x8C, 0x62, 0x2F, 0xA2, 0x16, 0x0E, 0x8E, 0x99,
-    0x18, 0x13, 0xF1, 0x80, 0xBF, 0xEC, 0x0B, 0x43,
-    0x1C, 0x6D, 0xBF, 0xA2, 0x95, 0x6D, 0x91, 0x75,
-    0x81, 0x6A, 0x23, 0xC3, 0x82, 0xC4, 0xF2, 0x00
-  },
-  {
-    0x81, 0x7D, 0x5C, 0x8F, 0x92, 0xE7, 0xB5, 0xCA,
-    0x57, 0xF5, 0xE1, 0x63, 0x90, 0x16, 0xAD, 0x57,
-    0x60, 0xE4, 0x46, 0xD6, 0xE9, 0xCA, 0xA7, 0x49,
-    0x84, 0x14, 0xAC, 0xE8, 0x22, 0x80, 0xB5, 0xCD
-  },
-  {
-    0xA6, 0xA1, 0xAD, 0x58, 0xCE, 0xE5, 0x4E, 0x69,
-    0xCB, 0xBC, 0xAA, 0x87, 0xDF, 0x07, 0xA6, 0x70,
-    0x7E, 0xB2, 0x24, 0x73, 0x9C, 0x21, 0x76, 0x13,
-    0x46, 0x0A, 0xB4, 0x54, 0xB4, 0x59, 0xCA, 0x9C
-  },
-  {
-    0x63, 0xB8, 0x47, 0x27, 0x52, 0x26, 0x60, 0x5B,
-    0xE6, 0x76, 0x81, 0x25, 0x8F, 0x7D, 0x00, 0xBB,
-    0xB3, 0x07, 0xC6, 0x6F, 0x19, 0x59, 0xBF, 0x2E,
-    0x46, 0x7A, 0x41, 0xAE, 0xE7, 0x14, 0xE5, 0x5C
-  },
-  {
-    0xFE, 0x52, 0xEB, 0xE5, 0xCF, 0xCF, 0xE6, 0xA2,
-    0x29, 0x7B, 0x53, 0x9F, 0xA3, 0xDA, 0xDB, 0xD6,
-    0xEB, 0xD2, 0x01, 0xAA, 0x2C, 0xA1, 0x35, 0x63,
-    0xE3, 0xD7, 0xF1, 0x4D, 0x15, 0xAB, 0xFF, 0x63
-  },
-  {
-    0xB7, 0xBE, 0xF9, 0xFA, 0x5A, 0x3D, 0x10, 0x42,
-    0x62, 0x46, 0xB5, 0xF6, 0x58, 0xC0, 0x8F, 0xDF,
-    0x80, 0x66, 0xEA, 0xA3, 0xE5, 0x5A, 0x2F, 0x7D,
-    0xA1, 0x59, 0x1E, 0x05, 0xC8, 0x7D, 0xF8, 0xC7
-  },
-  {
-    0xDE, 0xD1, 0xD6, 0xCA, 0xA9, 0xF8, 0xF3, 0xBD,
-    0xA9, 0x2C, 0xEA, 0x7F, 0x65, 0x49, 0xB1, 0xFB,
-    0x86, 0xA2, 0x21, 0x14, 0x78, 0xC4, 0xEC, 0x28,
-    0x9B, 0x83, 0x7E, 0xFC, 0x2B, 0x5C, 0x27, 0xD7
-  },
-  {
-    0x9F, 0x30, 0x00, 0x8A, 0x2E, 0xB0, 0x50, 0xF1,
-    0x8E, 0x56, 0xA7, 0x6B, 0xE9, 0x20, 0x91, 0xB2,
-    0xFD, 0xC1, 0x64, 0xD5, 0x6E, 0x32, 0xC8, 0x7D,
-    0xD6, 0x4C, 0x9E, 0x3A, 0x61, 0x10, 0x41, 0xB1
-  },
-  {
-    0x01, 0x0B, 0x6A, 0x3B, 0x11, 0x86, 0x00, 0x88,
-    0xF0, 0xAB, 0xC8, 0x0A, 0x89, 0x72, 0xCB, 0xBC,
-    0x32, 0x9D, 0x52, 0x75, 0x34, 0x29, 0x50, 0xEB,
-    0x9A, 0x04, 0x5A, 0xFD, 0xC8, 0xBB, 0xED, 0x24
-  },
-  {
-    0x0C, 0xD2, 0x10, 0xAA, 0xC1, 0x1F, 0x1C, 0x1C,
-    0xED, 0x49, 0x7F, 0x67, 0x3E, 0x53, 0xDB, 0x68,
-    0xC3, 0xEC, 0x36, 0x07, 0xF0, 0xC5, 0x78, 0x7D,
-    0xDC, 0x60, 0xA3, 0x55, 0xDF, 0xE5, 0x6C, 0x25
-  },
-  {
-    0x0E, 0x56, 0xFD, 0x01, 0xDA, 0x3B, 0x4F, 0x8B,
-    0xE2, 0xC9, 0x90, 0x55, 0x2A, 0xAC, 0x8D, 0x1E,
-    0x8D, 0xA2, 0x09, 0xBC, 0xF4, 0xAA, 0xD4, 0xFF,
-    0xB5, 0x42, 0x7F, 0xD6, 0x31, 0x72, 0x46, 0x3E
-  },
-  {
-    0xD6, 0xD5, 0xCD, 0xB1, 0x14, 0x40, 0xE3, 0x4A,
-    0xCA, 0x3A, 0x2F, 0xCF, 0x30, 0xF5, 0x9E, 0x08,
-    0xB1, 0x1A, 0x2A, 0x3D, 0xE5, 0x39, 0xE3, 0xE6,
-    0x51, 0x3E, 0xD7, 0x8A, 0x4F, 0xEE, 0x51, 0x3B
-  },
-  {
-    0xAA, 0x35, 0xAC, 0x90, 0x68, 0x06, 0x70, 0xC7,
-    0x32, 0xED, 0x1E, 0xF3, 0x7E, 0x8C, 0xBA, 0xAE,
-    0x49, 0xA4, 0xD8, 0x8E, 0xCF, 0x4D, 0xF2, 0xB6,
-    0x89, 0xA0, 0xF1, 0x01, 0xB7, 0x56, 0xAE, 0x47
-  },
-  {
-    0x27, 0x8E, 0x56, 0x12, 0x88, 0x72, 0x26, 0x30,
-    0xE2, 0x6A, 0x5F, 0xC9, 0x54, 0xBF, 0x2D, 0xCD,
-    0x6A, 0x65, 0x81, 0x67, 0x39, 0xAB, 0xEE, 0x7B,
-    0xE1, 0x43, 0x07, 0xA9, 0x61, 0x74, 0xE5, 0xB0
-  },
-  {
-    0xAB, 0x4B, 0x2C, 0xA1, 0xA2, 0xB3, 0x49, 0x98,
-    0x15, 0x24, 0xB6, 0x15, 0x54, 0x62, 0xF0, 0xFF,
-    0x10, 0x60, 0xBF, 0x9B, 0xFA, 0x07, 0xFB, 0x9E,
-    0xC6, 0x9C, 0xA4, 0x71, 0x64, 0x5B, 0x6A, 0x18
-  },
-  {
-    0x18, 0xA9, 0xBB, 0xEC, 0x3C, 0x8E, 0x1F, 0x8E,
-    0xE9, 0x57, 0x12, 0x97, 0xA9, 0x34, 0x36, 0xDE,
-    0x42, 0x7C, 0xD2, 0x70, 0xEC, 0x69, 0xDF, 0xE8,
-    0x88, 0xDB, 0x7D, 0xBF, 0x10, 0xB6, 0x49, 0x93
-  },
-  {
-    0xBA, 0xFC, 0x7E, 0x43, 0xD2, 0x65, 0xA1, 0x73,
-    0x02, 0x1A, 0x9D, 0x9E, 0x58, 0x3D, 0x60, 0xED,
-    0x42, 0xA8, 0x03, 0xFA, 0xCD, 0x6B, 0x83, 0x60,
-    0xDE, 0x1F, 0x91, 0x68, 0x35, 0x38, 0x9B, 0xF0
-  },
-  {
-    0xA5, 0xB6, 0x7B, 0xE9, 0x50, 0xFB, 0xC2, 0xF0,
-    0xDD, 0x32, 0x3A, 0x79, 0xA1, 0x9E, 0x3E, 0xD1,
-    0xF4, 0xAE, 0x4B, 0xA7, 0x89, 0x4F, 0x93, 0x0E,
-    0xA5, 0xEF, 0x73, 0x4D, 0xE7, 0xDB, 0x83, 0xAE
-  },
-  {
-    0xBF, 0x1E, 0x65, 0xF3, 0xCD, 0x84, 0x98, 0x88,
-    0x4D, 0x9D, 0x5C, 0x19, 0xEB, 0xF7, 0xB9, 0x16,
-    0x06, 0x76, 0x37, 0x60, 0x4E, 0x26, 0xDB, 0xE2,
-    0xB7, 0x28, 0x8E, 0xCB, 0x11, 0x42, 0x60, 0x68
-  },
-  {
-    0xC3, 0x34, 0x2C, 0xF9, 0xCB, 0xBF, 0x29, 0xD4,
-    0x06, 0xD7, 0x89, 0x5D, 0xD4, 0xD9, 0x54, 0x8D,
-    0x4A, 0xC7, 0x8B, 0x4D, 0x00, 0xE9, 0xB6, 0x3E,
-    0x20, 0x3E, 0x5E, 0x19, 0xE9, 0x97, 0x46, 0x20
-  },
-  {
-    0x1C, 0x0B, 0xE6, 0x02, 0x77, 0x43, 0x4B, 0x0E,
-    0x00, 0x4B, 0x7B, 0x38, 0x8A, 0x37, 0x55, 0x9F,
-    0x84, 0xB3, 0x0C, 0x6C, 0xF8, 0x60, 0x0F, 0x52,
-    0x8B, 0xFC, 0xD3, 0x3C, 0xAF, 0x52, 0xCB, 0x1E
-  },
-  {
-    0x73, 0x95, 0x45, 0x30, 0xD0, 0x3F, 0x10, 0xBE,
-    0xF5, 0x2A, 0xD5, 0xBC, 0x7F, 0xB4, 0xC0, 0x76,
-    0xF8, 0x3F, 0x63, 0x31, 0xC8, 0xBD, 0x1E, 0xEE,
-    0xC3, 0x88, 0x7F, 0x4A, 0xA2, 0x06, 0x92, 0x40
-  },
-  {
-    0x69, 0xC1, 0x1E, 0xE0, 0x49, 0x44, 0xDE, 0xA9,
-    0x85, 0xAC, 0x9F, 0x13, 0x96, 0x0E, 0x73, 0x98,
-    0x0E, 0x1B, 0xB0, 0xE3, 0x09, 0xF4, 0x38, 0x4A,
-    0x16, 0x76, 0xF8, 0xEF, 0xAB, 0x38, 0x42, 0x88
-  },
-  {
-    0x36, 0xFB, 0x8F, 0xDE, 0x0E, 0xC2, 0x8C, 0xE8,
-    0x53, 0xFB, 0x71, 0x75, 0xC1, 0xB7, 0x9D, 0xA3,
-    0xB5, 0xE8, 0xC3, 0x91, 0x86, 0xE7, 0x8A, 0xAE,
-    0xCE, 0x54, 0x64, 0xDB, 0xD9, 0xFE, 0x2A, 0xA2
-  },
-  {
-    0x6B, 0xB2, 0xA0, 0x9D, 0xFC, 0xAF, 0x96, 0x96,
-    0x2D, 0xE0, 0x0C, 0x8A, 0x08, 0x2D, 0x6D, 0xF9,
-    0x32, 0x2B, 0x49, 0x66, 0xAE, 0x8D, 0x2E, 0xCF,
-    0x73, 0x24, 0x11, 0xA7, 0x6A, 0x1A, 0x0E, 0xE6
-  },
-  {
-    0x74, 0x12, 0xE7, 0xDD, 0x1B, 0xF1, 0xAA, 0x93,
-    0x97, 0x41, 0x1B, 0xBA, 0x4D, 0x3E, 0x02, 0x76,
-    0xD2, 0xE7, 0xA1, 0xA2, 0x9A, 0x24, 0x77, 0x15,
-    0x7A, 0xD6, 0x03, 0x60, 0xD3, 0x3D, 0x4E, 0x76
-  },
-  {
-    0xDD, 0xDE, 0xAF, 0xCF, 0xC7, 0x23, 0x21, 0xC8,
-    0x49, 0xFB, 0x25, 0x94, 0x7A, 0xB4, 0x2C, 0x1A,
-    0xF2, 0xA5, 0xE4, 0x3F, 0xEF, 0x68, 0x1B, 0xE4,
-    0x2C, 0x7E, 0xAF, 0x36, 0x60, 0x08, 0x0A, 0xD3
-  },
-  {
-    0x9D, 0xEF, 0xEB, 0xAD, 0xBD, 0xCB, 0x0A, 0x0E,
-    0x7F, 0xF9, 0x92, 0xF9, 0x47, 0xCE, 0xD3, 0xD0,
-    0xA4, 0xC8, 0x99, 0xE6, 0x4F, 0xE7, 0x73, 0x60,
-    0xE8, 0x1E, 0x1F, 0x0E, 0x97, 0xF8, 0xC1, 0xA2
-  },
-  {
-    0x84, 0x4C, 0x59, 0xFB, 0xE6, 0x47, 0x6F, 0xD1,
-    0x89, 0x23, 0x99, 0x54, 0xF1, 0x7E, 0x36, 0xE1,
-    0xF6, 0x9E, 0x24, 0xAA, 0xED, 0x5D, 0x5C, 0x8B,
-    0x84, 0x05, 0xEF, 0x2A, 0x83, 0x0C, 0xC2, 0xA0
-  },
-  {
-    0xFF, 0x3F, 0xAF, 0xB6, 0x77, 0x86, 0xE0, 0x1A,
-    0x0C, 0x38, 0xEA, 0xDF, 0x99, 0xC4, 0xCA, 0xE8,
-    0x02, 0x9D, 0xA8, 0xCF, 0x29, 0x87, 0x5F, 0xC4,
-    0x19, 0xBF, 0x68, 0x00, 0x09, 0xB3, 0xBD, 0xB3
-  },
-  {
-    0xCA, 0x67, 0x60, 0xF3, 0x45, 0x67, 0x8F, 0x30,
-    0xA2, 0x8D, 0x62, 0x82, 0x94, 0x27, 0x2A, 0x19,
-    0xE3, 0x07, 0x2E, 0xBC, 0x61, 0xB1, 0x9F, 0xF1,
-    0x3B, 0x31, 0x89, 0x73, 0xE9, 0x7C, 0x27, 0x38
-  },
-  {
-    0xC0, 0x8E, 0x1A, 0x90, 0x47, 0xC5, 0x05, 0x26,
-    0x4A, 0x16, 0x44, 0x7C, 0x9E, 0xD9, 0x81, 0xA7,
-    0x19, 0xD3, 0x81, 0xF2, 0x8E, 0x60, 0x5F, 0xD7,
-    0xCA, 0xA9, 0xE8, 0xBD, 0xBB, 0x42, 0x99, 0x6A
-  },
-  {
-    0xF1, 0x73, 0xBA, 0x9D, 0x45, 0x84, 0xCD, 0x12,
-    0x60, 0x50, 0xC6, 0x9F, 0xC2, 0x19, 0xA9, 0x19,
-    0x0A, 0x0B, 0xF0, 0xAE, 0xCE, 0xCB, 0xE6, 0x11,
-    0xBE, 0xED, 0x19, 0x3D, 0xA6, 0xCA, 0x4D, 0xE7
-  },
-  {
-    0xB1, 0x84, 0x87, 0x65, 0x20, 0xDE, 0xD8, 0xBD,
-    0x7D, 0xE2, 0x5E, 0xAE, 0xFB, 0xD3, 0xE0, 0x36,
-    0x88, 0xC3, 0xBE, 0x39, 0xC1, 0x9F, 0xB7, 0x3E,
-    0x1F, 0x0E, 0xCC, 0xAC, 0x7C, 0xC0, 0xF0, 0x14
-  },
-  {
-    0x90, 0x25, 0xDB, 0x07, 0x58, 0xBD, 0xFB, 0x48,
-    0xF0, 0x66, 0x7E, 0xBD, 0x7E, 0x12, 0x02, 0x46,
-    0x59, 0x8F, 0xED, 0x01, 0xC2, 0x58, 0x76, 0x4F,
-    0xA0, 0xFA, 0xE3, 0x34, 0xA2, 0xA0, 0x0A, 0x97
-  },
-  {
-    0xE8, 0x3D, 0x80, 0x86, 0xFA, 0xBC, 0x46, 0x0D,
-    0x5E, 0xFC, 0x45, 0x9F, 0x95, 0xA2, 0x68, 0xF5,
-    0xDC, 0x4A, 0xC2, 0x84, 0x09, 0x3C, 0x24, 0x7C,
-    0xA6, 0xEC, 0x84, 0x1A, 0xD6, 0x18, 0x3F, 0xE1
-  },
-  {
-    0xCC, 0x9D, 0xF4, 0x1D, 0x35, 0xAA, 0x75, 0x92,
-    0x8C, 0x18, 0x5F, 0x73, 0x93, 0x66, 0x61, 0x10,
-    0xB8, 0x0F, 0x09, 0x86, 0xA2, 0x21, 0xC3, 0x70,
-    0xF4, 0x5C, 0x2E, 0xB9, 0x01, 0x6C, 0x9A, 0x3B
-  },
-  {
-    0x92, 0xF9, 0xA5, 0x94, 0x95, 0x45, 0x90, 0xFA,
-    0x81, 0x98, 0x17, 0xE5, 0xD1, 0xC2, 0x8A, 0xAB,
-    0x2B, 0x1C, 0xC5, 0x04, 0xD8, 0x6D, 0xBA, 0x44,
-    0x36, 0x76, 0xBD, 0xF8, 0x66, 0x79, 0x68, 0x11
-  },
-  {
-    0x72, 0x95, 0x62, 0xA1, 0xE0, 0x7B, 0x0E, 0x26,
-    0x05, 0x49, 0x48, 0x09, 0xBD, 0x48, 0x0F, 0x15,
-    0x37, 0xCE, 0xA1, 0x0D, 0xCA, 0xD4, 0x3E, 0xF9,
-    0xF6, 0x8C, 0x66, 0xE8, 0x25, 0xDC, 0x46, 0xB1
-  },
-  {
-    0x26, 0xF1, 0x60, 0xAB, 0x96, 0xF5, 0x58, 0x20,
-    0x45, 0x14, 0x6E, 0xAF, 0xF2, 0xE2, 0xA8, 0xD4,
-    0xDA, 0xB2, 0x98, 0xB4, 0xC5, 0x7E, 0x11, 0x7C,
-    0xDF, 0xC5, 0xD0, 0x25, 0xC9, 0x2A, 0x22, 0x68
-  },
-  {
-    0x87, 0xEB, 0xE7, 0x21, 0x38, 0x38, 0x73, 0xD2,
-    0x47, 0xF8, 0x61, 0x82, 0xE3, 0xF5, 0x99, 0xA7,
-    0x63, 0x4F, 0xCA, 0xEC, 0x5E, 0x07, 0xB1, 0xE8,
-    0x3E, 0xBB, 0x79, 0x62, 0x5B, 0xA3, 0x54, 0xE6
-  },
-  {
-    0xE0, 0x8D, 0x38, 0x9F, 0x75, 0x69, 0x4A, 0xDC,
-    0x99, 0x6C, 0x22, 0xF5, 0x5D, 0x4F, 0x85, 0x9F,
-    0xFD, 0x0C, 0x13, 0x19, 0xFF, 0x9C, 0xED, 0xF7,
-    0x8C, 0x31, 0xBE, 0x84, 0xB6, 0xF2, 0x1A, 0xBC
-  },
-  {
-    0x13, 0x63, 0xE2, 0x29, 0x13, 0xC6, 0xE1, 0x8E,
-    0x7A, 0xA6, 0x5B, 0x83, 0xE7, 0x51, 0xC8, 0xA2,
-    0xC6, 0x1B, 0x0F, 0x30, 0x71, 0x55, 0x86, 0x5A,
-    0x57, 0xDB, 0xA5, 0x69, 0xA9, 0x9C, 0x7B, 0x0E
-  },
-  {
-    0x88, 0x78, 0x08, 0x8E, 0xB2, 0xD1, 0xF6, 0xD0,
-    0xBB, 0x48, 0x1B, 0x4B, 0xB1, 0x87, 0xDA, 0x04,
-    0xBC, 0xD8, 0xC2, 0xC6, 0x39, 0xF0, 0x05, 0xB0,
-    0x80, 0x54, 0xCC, 0x41, 0x75, 0x39, 0x05, 0xFB
-  },
-  {
-    0x04, 0x18, 0xD6, 0x0D, 0x05, 0xB4, 0xE1, 0x24,
-    0x64, 0x6E, 0xE5, 0x0E, 0x77, 0x49, 0xA1, 0xD2,
-    0x09, 0x45, 0x7B, 0xC5, 0x43, 0xE3, 0xCC, 0x11,
-    0x30, 0x27, 0x4A, 0xEA, 0x0F, 0x7B, 0xF3, 0xC1
-  },
-  {
-    0x7A, 0x39, 0x7E, 0x50, 0x3F, 0x29, 0x3B, 0xC4,
-    0x2D, 0x5F, 0x7E, 0xF5, 0xEC, 0x37, 0x87, 0x24,
-    0x60, 0xA4, 0xF5, 0xB5, 0xCC, 0xDE, 0x77, 0xFB,
-    0x4D, 0x47, 0xAC, 0x06, 0x81, 0xE5, 0xA0, 0x49
-  },
-  {
-    0x5C, 0x0D, 0x29, 0x83, 0xE7, 0x2A, 0x6D, 0xD4,
-    0xE6, 0x52, 0xD7, 0x23, 0xC1, 0xDF, 0xC1, 0x2B,
-    0x41, 0x4C, 0x87, 0x3D, 0x4A, 0xB4, 0xA0, 0xA1,
-    0x50, 0x40, 0x8E, 0xB3, 0x43, 0x47, 0xE9, 0x95
-  },
-  {
-    0x56, 0x23, 0x36, 0x54, 0x53, 0xC0, 0x49, 0x89,
-    0xC7, 0xCF, 0x33, 0x63, 0x5E, 0x0F, 0xC4, 0xCD,
-    0xDD, 0x68, 0x6F, 0xC9, 0x5A, 0x33, 0xDF, 0xED,
-    0xCF, 0x33, 0x35, 0x79, 0x4C, 0x7D, 0xC3, 0x44
-  },
-  {
-    0x11, 0xF6, 0xDA, 0xD1, 0x88, 0x02, 0x8F, 0xDF,
-    0x13, 0x78, 0xA2, 0x56, 0xE4, 0x57, 0x0E, 0x90,
-    0x63, 0x10, 0x7B, 0x8F, 0x79, 0xDC, 0x66, 0x3F,
-    0xA5, 0x55, 0x6F, 0x56, 0xFD, 0x44, 0xA0, 0xF0
-  },
-  {
-    0x0E, 0xD8, 0x16, 0x17, 0x97, 0xEC, 0xEE, 0x88,
-    0x1E, 0x7D, 0x0E, 0x3F, 0x4C, 0x5F, 0xB8, 0x39,
-    0xC8, 0x4E, 0xB7, 0xA9, 0x24, 0x26, 0x57, 0xCC,
-    0x48, 0x30, 0x68, 0x07, 0xB3, 0x2B, 0xEF, 0xDE
-  },
-  {
-    0x73, 0x66, 0x67, 0xC9, 0x36, 0x4C, 0xE1, 0x2D,
-    0xB8, 0xF6, 0xB1, 0x43, 0xC6, 0xC1, 0x78, 0xCD,
-    0xEF, 0x1E, 0x14, 0x45, 0xBC, 0x5A, 0x2F, 0x26,
-    0x34, 0xF0, 0x8E, 0x99, 0x32, 0x27, 0x3C, 0xAA
-  },
-  {
-    0xE1, 0x5F, 0x36, 0x8B, 0x44, 0x06, 0xC1, 0xF6,
-    0x55, 0x57, 0xC8, 0x35, 0x5C, 0xBE, 0x69, 0x4B,
-    0x63, 0x3E, 0x26, 0xF1, 0x55, 0xF5, 0x2B, 0x7D,
-    0xA9, 0x4C, 0xFB, 0x23, 0xFD, 0x4A, 0x5D, 0x96
-  },
-  {
-    0x43, 0x7A, 0xB2, 0xD7, 0x4F, 0x50, 0xCA, 0x86,
-    0xCC, 0x3D, 0xE9, 0xBE, 0x70, 0xE4, 0x55, 0x48,
-    0x25, 0xE3, 0x3D, 0x82, 0x4B, 0x3A, 0x49, 0x23,
-    0x62, 0xE2, 0xE9, 0xD6, 0x11, 0xBC, 0x57, 0x9D
-  },
-  {
-    0x2B, 0x91, 0x58, 0xC7, 0x22, 0x89, 0x8E, 0x52,
-    0x6D, 0x2C, 0xDD, 0x3F, 0xC0, 0x88, 0xE9, 0xFF,
-    0xA7, 0x9A, 0x9B, 0x73, 0xB7, 0xD2, 0xD2, 0x4B,
-    0xC4, 0x78, 0xE2, 0x1C, 0xDB, 0x3B, 0x67, 0x63
-  },
-  {
-    0x0C, 0x8A, 0x36, 0x59, 0x7D, 0x74, 0x61, 0xC6,
-    0x3A, 0x94, 0x73, 0x28, 0x21, 0xC9, 0x41, 0x85,
-    0x6C, 0x66, 0x83, 0x76, 0x60, 0x6C, 0x86, 0xA5,
-    0x2D, 0xE0, 0xEE, 0x41, 0x04, 0xC6, 0x15, 0xDB
-  },
-};
-
-
-
-
-static const uint8_t blake2bp_kat[KAT_LENGTH][BLAKE2B_OUTBYTES] =
-{
-  {
-    0xB5, 0xEF, 0x81, 0x1A, 0x80, 0x38, 0xF7, 0x0B,
-    0x62, 0x8F, 0xA8, 0xB2, 0x94, 0xDA, 0xAE, 0x74,
-    0x92, 0xB1, 0xEB, 0xE3, 0x43, 0xA8, 0x0E, 0xAA,
-    0xBB, 0xF1, 0xF6, 0xAE, 0x66, 0x4D, 0xD6, 0x7B,
-    0x9D, 0x90, 0xB0, 0x12, 0x07, 0x91, 0xEA, 0xB8,
-    0x1D, 0xC9, 0x69, 0x85, 0xF2, 0x88, 0x49, 0xF6,
-    0xA3, 0x05, 0x18, 0x6A, 0x85, 0x50, 0x1B, 0x40,
-    0x51, 0x14, 0xBF, 0xA6, 0x78, 0xDF, 0x93, 0x80
-  },
-  {
-    0xA1, 0x39, 0x28, 0x0E, 0x72, 0x75, 0x7B, 0x72,
-    0x3E, 0x64, 0x73, 0xD5, 0xBE, 0x59, 0xF3, 0x6E,
-    0x9D, 0x50, 0xFC, 0x5C, 0xD7, 0xD4, 0x58, 0x5C,
-    0xBC, 0x09, 0x80, 0x48, 0x95, 0xA3, 0x6C, 0x52,
-    0x12, 0x42, 0xFB, 0x27, 0x89, 0xF8, 0x5C, 0xB9,
-    0xE3, 0x54, 0x91, 0xF3, 0x1D, 0x4A, 0x69, 0x52,
-    0xF9, 0xD8, 0xE0, 0x97, 0xAE, 0xF9, 0x4F, 0xA1,
-    0xCA, 0x0B, 0x12, 0x52, 0x57, 0x21, 0xF0, 0x3D
-  },
-  {
-    0xEF, 0x8C, 0xDA, 0x96, 0x35, 0xD5, 0x06, 0x3A,
-    0xF8, 0x11, 0x15, 0xDA, 0x3C, 0x52, 0x32, 0x5A,
-    0x86, 0xE8, 0x40, 0x74, 0xF9, 0xF7, 0x24, 0xB7,
-    0xCB, 0xD0, 0xB0, 0x85, 0x6F, 0xF0, 0x01, 0x77,
-    0xCD, 0xD2, 0x83, 0xC2, 0x98, 0x32, 0x6C, 0xD0,
-    0x91, 0x77, 0x54, 0xC5, 0x24, 0x1F, 0x14, 0x80,
-    0xFB, 0x50, 0x9C, 0xF2, 0xD2, 0xC4, 0x49, 0x81,
-    0x80, 0x77, 0xAE, 0x35, 0xFC, 0x33, 0x07, 0x37
-  },
-  {
-    0x8C, 0xF9, 0x33, 0xA2, 0xD3, 0x61, 0xA3, 0xE6,
-    0xA1, 0x36, 0xDB, 0xE4, 0xA0, 0x1E, 0x79, 0x03,
-    0x79, 0x7A, 0xD6, 0xCE, 0x76, 0x6E, 0x2B, 0x91,
-    0xB9, 0xB4, 0xA4, 0x03, 0x51, 0x27, 0xD6, 0x5F,
-    0x4B, 0xE8, 0x65, 0x50, 0x11, 0x94, 0x18, 0xE2,
-    0x2D, 0xA0, 0x0F, 0xD0, 0x6B, 0xF2, 0xB2, 0x75,
-    0x96, 0xB3, 0x7F, 0x06, 0xBE, 0x0A, 0x15, 0x4A,
-    0xAF, 0x7E, 0xCA, 0x54, 0xC4, 0x52, 0x0B, 0x97
-  },
-  {
-    0x24, 0xDC, 0x1E, 0x6D, 0xC4, 0xE5, 0x1A, 0x3A,
-    0x3C, 0x8D, 0xA6, 0x7A, 0xAC, 0xB4, 0xC5, 0x41,
-    0xE4, 0x18, 0x18, 0xD1, 0x80, 0xE5, 0xBB, 0x69,
-    0x75, 0x3D, 0xBB, 0xFF, 0x2F, 0x44, 0xD0, 0xE7,
-    0xDA, 0x83, 0x03, 0x86, 0xBF, 0xC8, 0x3B, 0x27,
-    0xA5, 0x9D, 0xBB, 0x62, 0xB9, 0x64, 0xFC, 0x8E,
-    0xA6, 0xCB, 0xDF, 0x30, 0x49, 0xBF, 0xF8, 0x1F,
-    0x24, 0xF3, 0x48, 0xDB, 0x4E, 0xFD, 0x0D, 0x07
-  },
-  {
-    0xBC, 0x23, 0xF5, 0xAB, 0xDF, 0xFD, 0x6A, 0x32,
-    0xA5, 0xD4, 0x08, 0x11, 0x26, 0x2E, 0xD4, 0x47,
-    0x9E, 0xF7, 0x0B, 0x42, 0x33, 0xCA, 0x20, 0x5B,
-    0xC5, 0xB9, 0xBF, 0x85, 0x96, 0x73, 0x19, 0x82,
-    0xD0, 0x41, 0x69, 0xA9, 0x04, 0xDD, 0x43, 0xB0,
-    0xE0, 0xF9, 0x48, 0x99, 0xF7, 0x33, 0x02, 0x2D,
-    0x24, 0xD8, 0x4F, 0xAD, 0x0A, 0x99, 0x16, 0x00,
-    0xF1, 0x97, 0x9B, 0x27, 0x2A, 0xD6, 0x20, 0x73
-  },
-  {
-    0xEF, 0x10, 0x7F, 0xCD, 0x0D, 0x92, 0xD8, 0x4E,
-    0xF5, 0xEF, 0x94, 0x63, 0xE6, 0xE9, 0x62, 0x41,
-    0x25, 0x45, 0x29, 0xD2, 0xB9, 0x7F, 0xDB, 0xE5,
-    0x64, 0x19, 0x07, 0x0A, 0xDB, 0xC7, 0xD5, 0x70,
-    0x6F, 0xEB, 0x8F, 0x44, 0x95, 0x79, 0x81, 0x9E,
-    0xD4, 0xBE, 0x61, 0x97, 0x85, 0xFF, 0xFA, 0xAF,
-    0x0D, 0x97, 0x89, 0xCF, 0xE7, 0x26, 0x24, 0x9A,
-    0xB0, 0x8C, 0x94, 0x68, 0xCB, 0x5F, 0xDE, 0x22
-  },
-  {
-    0x23, 0x1F, 0xBF, 0xB7, 0xA1, 0xDD, 0xC5, 0xB7,
-    0x49, 0x33, 0xA2, 0x85, 0xA4, 0x22, 0x4C, 0x04,
-    0x9C, 0xBA, 0x14, 0x85, 0xCE, 0x35, 0x64, 0x0D,
-    0x9C, 0x51, 0x6E, 0xD7, 0x8E, 0xAA, 0x22, 0x6D,
-    0x36, 0xF6, 0x5B, 0x25, 0x89, 0xB8, 0x26, 0xC4,
-    0x59, 0xFA, 0x6A, 0x91, 0xC4, 0x26, 0xFD, 0x2A,
-    0x8A, 0xB4, 0x61, 0xC9, 0x76, 0x7E, 0x7B, 0xDD,
-    0x99, 0x6B, 0xEF, 0x5A, 0x78, 0xF4, 0x81, 0xB7
-  },
-  {
-    0x3A, 0x83, 0x1F, 0x2D, 0xA9, 0x69, 0xB9, 0xB7,
-    0x36, 0x0E, 0x74, 0xEE, 0x53, 0xB5, 0x18, 0x98,
-    0x0A, 0x5E, 0xBC, 0xDF, 0xD4, 0xEE, 0x23, 0xED,
-    0x80, 0x5C, 0x26, 0x39, 0x4D, 0x18, 0x24, 0x20,
-    0x8D, 0x7E, 0x8F, 0x63, 0x27, 0xD4, 0xEC, 0x87,
-    0x97, 0x9C, 0xE4, 0xAF, 0x8A, 0xB0, 0x97, 0xD6,
-    0x9E, 0x26, 0x1C, 0xA3, 0x2D, 0xB0, 0xEE, 0xFD,
-    0xBC, 0x18, 0xD1, 0x63, 0x77, 0xA6, 0xBD, 0x20
-  },
-  {
-    0x83, 0x49, 0xA2, 0x0F, 0xDD, 0xBA, 0xE1, 0xD8,
-    0x47, 0x2B, 0x67, 0xF0, 0x34, 0x7A, 0xA0, 0xFD,
-    0x40, 0x4D, 0x65, 0xC6, 0xFA, 0x14, 0x72, 0xB3,
-    0x10, 0x39, 0x0D, 0x75, 0x65, 0xBA, 0x6B, 0xC1,
-    0x02, 0x60, 0xD3, 0xDC, 0xE6, 0xA1, 0x4F, 0x4D,
-    0xD9, 0xB8, 0xB3, 0xE0, 0xA0, 0xC4, 0x7F, 0x6D,
-    0xB7, 0xE7, 0x10, 0x0A, 0x7A, 0x9B, 0x64, 0xA8,
-    0x44, 0xF0, 0x10, 0x64, 0xD0, 0x79, 0x05, 0xC5
-  },
-  {
-    0x23, 0x9A, 0xE3, 0xD6, 0x85, 0x9C, 0x7C, 0x97,
-    0x2A, 0x5D, 0xC8, 0xB9, 0xC5, 0x5A, 0xEB, 0x93,
-    0x85, 0x90, 0xCF, 0xB8, 0x55, 0x2A, 0xA3, 0x05,
-    0xA6, 0xF6, 0xF3, 0x1F, 0xFA, 0x95, 0xA8, 0x40,
-    0xF4, 0xEC, 0x36, 0xF6, 0xFB, 0x8F, 0x83, 0xB6,
-    0x9C, 0x1D, 0xA9, 0x81, 0xFC, 0x9B, 0xA1, 0x63,
-    0x60, 0xDB, 0x0F, 0x4F, 0x7C, 0x68, 0xEB, 0x54,
-    0x3E, 0xD5, 0x8B, 0x28, 0x75, 0x6A, 0x1E, 0x0D
-  },
-  {
-    0x7C, 0x56, 0x73, 0x28, 0x63, 0x08, 0x40, 0x8F,
-    0xBC, 0x62, 0x24, 0x0E, 0x07, 0x47, 0x28, 0xB2,
-    0x7A, 0x57, 0x5C, 0xAD, 0x2A, 0x15, 0x6E, 0x00,
-    0xB5, 0xC0, 0x8B, 0x21, 0x8D, 0x88, 0x87, 0x79,
-    0x1E, 0x47, 0xBF, 0x10, 0xB0, 0xBC, 0x61, 0xA5,
-    0x82, 0x54, 0x5A, 0x24, 0x69, 0x63, 0x9C, 0xE6,
-    0x28, 0xC4, 0x0F, 0x20, 0xEA, 0x8B, 0x84, 0x9C,
-    0xD0, 0x05, 0x44, 0x5F, 0x29, 0xA0, 0x8C, 0xCE
-  },
-  {
-    0xDD, 0x07, 0x7E, 0x76, 0x9E, 0x0D, 0xEF, 0x78,
-    0xDD, 0x7A, 0xAD, 0xD5, 0x7D, 0x58, 0x42, 0x1B,
-    0xDA, 0x3A, 0x1A, 0x4E, 0x69, 0x72, 0x05, 0x9F,
-    0x8E, 0x64, 0x9C, 0xD6, 0xBC, 0xA4, 0x4A, 0x13,
-    0xAB, 0x71, 0xEB, 0x53, 0x5D, 0x24, 0x49, 0x22,
-    0x94, 0x84, 0x65, 0xD7, 0x3B, 0xD6, 0x4E, 0xFB,
-    0x09, 0x10, 0x46, 0x94, 0x90, 0x66, 0x65, 0x36,
-    0x03, 0x57, 0x5A, 0x2E, 0x89, 0x1E, 0xBD, 0x54
-  },
-  {
-    0xB3, 0x6C, 0xEF, 0x28, 0x53, 0x2B, 0x40, 0xD8,
-    0x17, 0x86, 0x28, 0xF0, 0xFA, 0xB5, 0xE5, 0xB4,
-    0xA1, 0xDE, 0xC0, 0xC0, 0xE9, 0x11, 0xD7, 0x27,
-    0xBF, 0x09, 0x49, 0x0F, 0x5E, 0x8D, 0x9F, 0xAC,
-    0x57, 0x21, 0x3F, 0xD2, 0xA2, 0xD1, 0x2E, 0xD3,
-    0xD7, 0x7A, 0x41, 0xF5, 0xE2, 0xFE, 0xCC, 0x40,
-    0xE4, 0xEE, 0xCA, 0x16, 0x12, 0xF5, 0x1C, 0x45,
-    0x23, 0x31, 0xAE, 0x93, 0x96, 0x62, 0x35, 0xBC
-  },
-  {
-    0xDE, 0x73, 0x7D, 0xBC, 0x61, 0x2E, 0xBD, 0x31,
-    0xBC, 0x49, 0xA2, 0xD7, 0xC6, 0x44, 0xD4, 0xB1,
-    0x37, 0x81, 0x74, 0x19, 0x42, 0x1C, 0x32, 0xF4,
-    0xE7, 0x51, 0x14, 0xD8, 0x99, 0xE3, 0x13, 0x1D,
-    0x45, 0xCA, 0x54, 0x51, 0x24, 0x8F, 0x24, 0x16,
-    0x9F, 0xBF, 0x17, 0xEE, 0x60, 0xA9, 0xB7, 0x07,
-    0x98, 0xA4, 0xB9, 0x37, 0xCE, 0xA6, 0x27, 0x95,
-    0x28, 0x96, 0x39, 0xD1, 0x8F, 0xCD, 0x89, 0xE4
-  },
-  {
-    0xB4, 0xC1, 0xBB, 0xCB, 0xBC, 0xCD, 0xFC, 0xE4,
-    0xD2, 0xBE, 0x9D, 0xCD, 0xB9, 0x83, 0xC1, 0xB0,
-    0x20, 0xC5, 0xF7, 0x20, 0xDA, 0x5B, 0xEC, 0xF4,
-    0xCB, 0x2A, 0x9A, 0x3D, 0x1B, 0x8D, 0x23, 0xCE,
-    0xA7, 0xA9, 0xF5, 0xFD, 0x70, 0xD3, 0x74, 0x0E,
-    0xCD, 0x67, 0xCE, 0x7D, 0x1E, 0x9C, 0x5E, 0x31,
-    0xA3, 0x30, 0x2D, 0xF6, 0x6A, 0x9B, 0x5D, 0x54,
-    0x30, 0x44, 0x90, 0xFB, 0xE1, 0xC4, 0xA8, 0xB9
-  },
-  {
-    0xB1, 0xD6, 0x5E, 0x70, 0xC6, 0x9B, 0xA7, 0xE3,
-    0xA7, 0x28, 0xE8, 0xB6, 0x44, 0x94, 0x93, 0xF2,
-    0x37, 0x51, 0x0B, 0x23, 0xB6, 0xE7, 0x7D, 0x95,
-    0x84, 0xD0, 0x5F, 0xF4, 0xD3, 0xF0, 0x87, 0x80,
-    0x92, 0x9D, 0x74, 0xFA, 0x5B, 0xED, 0x9B, 0x75,
-    0xD4, 0xD6, 0xD1, 0xCA, 0x91, 0xAB, 0x8D, 0x26,
-    0x37, 0xDC, 0x2E, 0x79, 0xBA, 0x0F, 0xE0, 0x59,
-    0x4A, 0xCD, 0x68, 0xFB, 0x3C, 0xC6, 0x60, 0xB9
-  },
-  {
-    0xDA, 0x79, 0xF7, 0x29, 0xEA, 0xB9, 0x8C, 0x04,
-    0xF3, 0x7F, 0xCC, 0x85, 0x4B, 0x69, 0xA8, 0x4E,
-    0x46, 0x7D, 0xEA, 0x1E, 0x77, 0x82, 0xE7, 0xAF,
-    0x02, 0xCB, 0x44, 0xA4, 0x9D, 0x21, 0x0D, 0x25,
-    0x23, 0x68, 0x3D, 0x42, 0x0A, 0xC1, 0xDE, 0xC8,
-    0xAD, 0x1F, 0xB4, 0x0E, 0x65, 0xAB, 0x3F, 0xE2,
-    0x51, 0xA8, 0x51, 0xE2, 0x83, 0xD8, 0x58, 0x38,
-    0x08, 0x42, 0x61, 0x30, 0x1E, 0xCD, 0x08, 0x9B
-  },
-  {
-    0x71, 0x40, 0x40, 0x40, 0x39, 0x21, 0xAE, 0x55,
-    0x48, 0xA2, 0x03, 0x39, 0xD6, 0x9E, 0x09, 0x3F,
-    0x60, 0x9A, 0xA9, 0x9C, 0x22, 0xDB, 0x72, 0x59,
-    0x1D, 0x1E, 0xF4, 0xFC, 0xB0, 0xAF, 0x01, 0x61,
-    0x73, 0xE5, 0x77, 0xD8, 0xC1, 0xA3, 0x06, 0x3B,
-    0x44, 0x3A, 0x0E, 0x48, 0xF3, 0x13, 0xCF, 0x2E,
-    0x0F, 0x9B, 0x0C, 0x2E, 0xF9, 0x6A, 0x96, 0xC4,
-    0x24, 0x32, 0x2C, 0xCC, 0x0C, 0xD5, 0x30, 0x4C
-  },
-  {
-    0x8B, 0x2E, 0x8C, 0x3F, 0x0E, 0x3C, 0x31, 0x9B,
-    0xA6, 0x7E, 0x86, 0x01, 0x4B, 0xDA, 0x68, 0x3E,
-    0x53, 0x57, 0xA0, 0x40, 0x37, 0xB4, 0x56, 0x32,
-    0x86, 0xAC, 0x89, 0xCD, 0xDB, 0x7E, 0xE0, 0x4C,
-    0xF6, 0x67, 0x5F, 0x9A, 0xB6, 0x1F, 0xC8, 0x33,
-    0x2D, 0x21, 0x8D, 0x2B, 0xCA, 0x97, 0x15, 0xE7,
-    0xDB, 0xE5, 0x83, 0x72, 0xD1, 0xEE, 0xBF, 0x6B,
-    0xC2, 0x94, 0x84, 0x71, 0xCF, 0xCE, 0xBB, 0x77
-  },
-  {
-    0x32, 0xEE, 0x95, 0x49, 0xD4, 0xE3, 0x2F, 0x4B,
-    0xE9, 0xC5, 0x00, 0xBD, 0x85, 0x43, 0xAF, 0xD0,
-    0xB6, 0x97, 0x82, 0xD0, 0xB3, 0xFF, 0x7E, 0xD4,
-    0x7A, 0x88, 0x1A, 0x0E, 0x49, 0x1F, 0x37, 0x65,
-    0x0A, 0x21, 0xB2, 0x6C, 0x3F, 0x5D, 0x0A, 0x64,
-    0xE0, 0x90, 0x58, 0xB3, 0x00, 0x4A, 0x23, 0x68,
-    0xB9, 0x50, 0xE4, 0x72, 0x30, 0xC2, 0x29, 0x66,
-    0xD3, 0xF7, 0x9D, 0xA7, 0xBA, 0xA0, 0xB8, 0x7F
-  },
-  {
-    0xCA, 0xE7, 0xF2, 0x92, 0x71, 0x37, 0x82, 0xC4,
-    0x71, 0xFE, 0x31, 0x78, 0xA9, 0x42, 0x0C, 0xD4,
-    0xC1, 0x1F, 0xCD, 0x3F, 0x6D, 0xBE, 0x5D, 0x15,
-    0xC8, 0x4A, 0xB7, 0x35, 0x3C, 0x73, 0x9E, 0xF0,
-    0x64, 0x16, 0x39, 0xA2, 0xF9, 0x2A, 0xED, 0x31,
-    0xC5, 0x6A, 0x20, 0x21, 0xCC, 0x5E, 0x58, 0xCB,
-    0xEA, 0xD3, 0x74, 0xE2, 0xDC, 0x8A, 0x0D, 0xBC,
-    0xE5, 0x45, 0x0F, 0xE7, 0xA0, 0x18, 0xCF, 0xA4
-  },
-  {
-    0xF1, 0x7F, 0xEF, 0xAE, 0xAE, 0x7D, 0x40, 0xCD,
-    0x88, 0x5D, 0xAC, 0x0B, 0xC3, 0x50, 0xC0, 0x27,
-    0x36, 0x68, 0xEA, 0x02, 0x22, 0xDF, 0x5C, 0x75,
-    0x69, 0x4F, 0x5C, 0xB3, 0xA3, 0x21, 0x51, 0x9F,
-    0x6E, 0x0E, 0xC4, 0x3B, 0xA0, 0xC8, 0x59, 0x3D,
-    0xC7, 0x34, 0x13, 0x41, 0xE5, 0x19, 0x48, 0x8F,
-    0x20, 0xAB, 0xD5, 0xB8, 0x12, 0x4D, 0xFA, 0xCE,
-    0xA5, 0xCD, 0xE0, 0x96, 0x5B, 0x69, 0x70, 0xF9
-  },
-  {
-    0xE2, 0xCF, 0x86, 0xDD, 0xC8, 0x42, 0x4E, 0xE5,
-    0x47, 0xEB, 0x72, 0x45, 0xB7, 0x32, 0x5E, 0x02,
-    0xF2, 0xE3, 0xAC, 0x01, 0x3C, 0x8D, 0x38, 0x6B,
-    0x3D, 0x2E, 0x09, 0x20, 0x8A, 0x9B, 0xCC, 0x0B,
-    0x44, 0xC4, 0xC4, 0x38, 0xEA, 0xAF, 0x52, 0xD2,
-    0x07, 0x7E, 0x91, 0x77, 0xEB, 0x8E, 0xE1, 0xD5,
-    0x90, 0x75, 0xB5, 0x25, 0x92, 0x20, 0x20, 0x62,
-    0x22, 0x93, 0x54, 0xBF, 0x23, 0xC9, 0x62, 0x39
-  },
-  {
-    0x38, 0xF2, 0x6A, 0x11, 0x02, 0xCB, 0x16, 0x2D,
-    0x35, 0x1F, 0x84, 0x3B, 0x3C, 0x49, 0xF6, 0xFF,
-    0x85, 0x44, 0x16, 0x33, 0xB6, 0x70, 0x4A, 0x28,
-    0x6A, 0xF8, 0x1C, 0xCB, 0xAE, 0x5A, 0x67, 0xD3,
-    0x01, 0x5C, 0xC0, 0xEF, 0xAF, 0xB7, 0x05, 0x7D,
-    0xC2, 0xB2, 0x8D, 0x67, 0x66, 0xE8, 0x2A, 0x06,
-    0x8A, 0x4C, 0x0B, 0x52, 0x4B, 0x66, 0xD0, 0xA6,
-    0x32, 0x77, 0x5D, 0x93, 0x06, 0x15, 0x75, 0xF9
-  },
-  {
-    0xA2, 0xC4, 0x30, 0x2D, 0xAC, 0xA7, 0xA7, 0xC6,
-    0x32, 0xF6, 0x76, 0x30, 0x4E, 0x62, 0x75, 0xC1,
-    0xC1, 0xF0, 0xDB, 0xFE, 0x38, 0xDC, 0x57, 0x1C,
-    0xB2, 0x3E, 0x1F, 0x7B, 0xA5, 0xDC, 0x18, 0x18,
-    0x0F, 0xC4, 0x8A, 0x01, 0x5F, 0x92, 0x7C, 0x89,
-    0x96, 0x7C, 0x1E, 0x10, 0x4E, 0x66, 0xF5, 0xEA,
-    0x5B, 0x2D, 0xD3, 0x1D, 0x78, 0x1C, 0x38, 0x49,
-    0xBF, 0xC6, 0x49, 0x22, 0x0C, 0x38, 0x5C, 0x82
-  },
-  {
-    0xC1, 0x9C, 0x6B, 0x3F, 0xB5, 0x35, 0x2B, 0xB3,
-    0x94, 0xC2, 0x68, 0x46, 0x52, 0x3C, 0x25, 0xE8,
-    0x26, 0x5D, 0x50, 0x5F, 0x50, 0x1F, 0x96, 0x03,
-    0xA4, 0xF8, 0xBD, 0x55, 0x38, 0x6C, 0xF4, 0xCC,
-    0x9F, 0x4D, 0x71, 0xF3, 0x8F, 0xF4, 0x45, 0xF4,
-    0xEF, 0xC8, 0x30, 0x98, 0xD4, 0x79, 0x69, 0x33,
-    0x4E, 0x79, 0xA2, 0xBC, 0xB4, 0x02, 0x6B, 0xC6,
-    0x3B, 0x79, 0x59, 0xDE, 0xDB, 0x62, 0xB7, 0xBD
-  },
-  {
-    0x1F, 0x4A, 0xB9, 0x84, 0x0A, 0x1C, 0xFA, 0x8F,
-    0xE6, 0xC5, 0x62, 0x2D, 0x9B, 0x53, 0x8B, 0xEC,
-    0xB8, 0x80, 0x7A, 0x87, 0x78, 0xB6, 0x9D, 0x93,
-    0x05, 0xF9, 0x08, 0x57, 0x65, 0x73, 0xB2, 0x0C,
-    0xA3, 0x70, 0x4E, 0x89, 0x12, 0x97, 0x26, 0xD5,
-    0x02, 0xE1, 0x98, 0x58, 0x8D, 0x07, 0x26, 0x68,
-    0xBF, 0x03, 0x63, 0x0B, 0x5B, 0x5A, 0x92, 0x32,
-    0xFF, 0x39, 0x25, 0x27, 0x24, 0x9D, 0xF9, 0x9B
-  },
-  {
-    0xFE, 0x03, 0x17, 0x7B, 0x58, 0xB4, 0x88, 0x83,
-    0xA8, 0x6D, 0x42, 0x68, 0x33, 0x4B, 0x95, 0x91,
-    0xD9, 0xFB, 0xD8, 0xBF, 0x7C, 0xC2, 0xAA, 0xCC,
-    0x50, 0x25, 0xEF, 0x47, 0x6B, 0x45, 0x33, 0xBA,
-    0x7B, 0xD7, 0x81, 0xDF, 0x01, 0x11, 0x47, 0xB3,
-    0xCF, 0x51, 0x1D, 0x8B, 0x3D, 0xCD, 0x8C, 0x78,
-    0x0D, 0x30, 0xD7, 0xDA, 0x71, 0x8C, 0x22, 0x44,
-    0x23, 0x19, 0x81, 0x7B, 0xE3, 0x18, 0x6B, 0xC5
-  },
-  {
-    0xF4, 0xC3, 0xB0, 0x59, 0x10, 0x5B, 0x6A, 0xA5,
-    0xFE, 0x78, 0x84, 0x3A, 0x07, 0xD9, 0x4F, 0x71,
-    0x20, 0x62, 0xCB, 0x5A, 0x4D, 0xD6, 0x05, 0x9F,
-    0x97, 0x90, 0x4D, 0x0C, 0x57, 0x97, 0x3B, 0xA8,
-    0xDF, 0x71, 0xD1, 0x5A, 0x51, 0x1A, 0x06, 0x68,
-    0x64, 0xFE, 0x45, 0x5E, 0xDC, 0x9E, 0x5F, 0x16,
-    0x52, 0x4C, 0xEC, 0x7E, 0xE2, 0x48, 0xEE, 0x3E,
-    0xC9, 0x29, 0x06, 0x3B, 0xD1, 0x07, 0x98, 0xDA
-  },
-  {
-    0x57, 0xA1, 0x6F, 0x96, 0x4B, 0x18, 0x1B, 0x12,
-    0x03, 0xA5, 0x80, 0x3B, 0x73, 0x81, 0x7D, 0x77,
-    0x44, 0x83, 0x82, 0x6C, 0xEA, 0x11, 0x3B, 0x9C,
-    0xCF, 0xCF, 0x0E, 0xB8, 0x7C, 0xB2, 0x30, 0x64,
-    0x28, 0x49, 0x62, 0xD8, 0x47, 0xBB, 0x1F, 0xAE,
-    0x8C, 0xBF, 0x5C, 0xC6, 0x3B, 0x3C, 0xEA, 0xA1,
-    0x24, 0x1E, 0xA4, 0x2C, 0x63, 0xF8, 0x98, 0x01,
-    0x1F, 0xC4, 0xDB, 0xCA, 0xE6, 0xF5, 0xE8, 0xC5
-  },
-  {
-    0x79, 0x52, 0xFC, 0x83, 0xAC, 0xF1, 0x3A, 0x95,
-    0xCA, 0x9C, 0x27, 0xA2, 0x15, 0x6D, 0x9C, 0x1B,
-    0x63, 0x00, 0xB0, 0xEF, 0x79, 0x0F, 0x57, 0x2B,
-    0xC3, 0x94, 0xC6, 0x77, 0xF7, 0xC1, 0x46, 0x29,
-    0xEB, 0xD8, 0xE7, 0xD5, 0xD7, 0xC7, 0xF1, 0xA5,
-    0xEB, 0xBD, 0xC3, 0x90, 0xCC, 0x08, 0xCD, 0x58,
-    0xC2, 0x00, 0x89, 0x00, 0xCB, 0x55, 0xEB, 0x05,
-    0xE4, 0x44, 0xA6, 0x8C, 0x3B, 0x39, 0x3E, 0x60
-  },
-  {
-    0x2C, 0x22, 0x40, 0xD6, 0xB5, 0x41, 0xF4, 0x29,
-    0x4F, 0xF9, 0x76, 0x79, 0x1D, 0x35, 0xE6, 0xA2,
-    0xD4, 0x92, 0xF5, 0x7A, 0x91, 0x5F, 0xBA, 0xC5,
-    0x83, 0x26, 0x60, 0xC1, 0x0E, 0x9C, 0x96, 0x46,
-    0x5C, 0x7B, 0xD5, 0xFC, 0xA7, 0x51, 0xBF, 0x68,
-    0xE2, 0x67, 0x3A, 0x63, 0x8E, 0x3A, 0xF7, 0x35,
-    0xB0, 0x20, 0x91, 0xD7, 0x5D, 0x1A, 0x7F, 0x89,
-    0xE3, 0xF7, 0x61, 0xC5, 0xDF, 0x82, 0x1A, 0x6B
-  },
-  {
-    0x59, 0xDC, 0x84, 0x6D, 0x34, 0x05, 0xCC, 0xD8,
-    0x06, 0xF8, 0xFA, 0x20, 0xC8, 0x96, 0x9E, 0xF6,
-    0x8A, 0x43, 0x85, 0xEF, 0x6C, 0x27, 0x4E, 0xEE,
-    0x6D, 0xC0, 0x69, 0x2C, 0x3E, 0xCF, 0xB1, 0xA8,
-    0x34, 0xCE, 0x64, 0x43, 0x76, 0xC5, 0x2B, 0x80,
-    0x42, 0x1B, 0xAE, 0x94, 0xD6, 0xC7, 0xFD, 0xCC,
-    0xA5, 0xA8, 0xF1, 0x85, 0x9C, 0x45, 0xA1, 0x0C,
-    0x4E, 0xB2, 0x74, 0x82, 0x6F, 0x1F, 0x08, 0x9F
-  },
-  {
-    0xB7, 0x52, 0x96, 0x27, 0x07, 0xA1, 0x7B, 0x66,
-    0x4F, 0xAE, 0xB3, 0x13, 0xE2, 0xB9, 0x52, 0xDC,
-    0x03, 0xE7, 0x4A, 0x7E, 0x94, 0x47, 0x09, 0x8A,
-    0xA6, 0xD4, 0xEA, 0x5B, 0xD2, 0x87, 0xD0, 0x7A,
-    0x12, 0x25, 0xEC, 0xED, 0xA9, 0x81, 0x15, 0x70,
-    0x58, 0x0A, 0x51, 0x2B, 0x2B, 0x20, 0xB3, 0xFC,
-    0xFC, 0xA7, 0x0B, 0x44, 0xF6, 0x45, 0x4E, 0xF3,
-    0xC3, 0x52, 0x4C, 0xCA, 0x6B, 0x69, 0x47, 0x5B
-  },
-  {
-    0xDA, 0x0D, 0x8E, 0x54, 0x61, 0xF8, 0x10, 0x24,
-    0xEF, 0xFE, 0xED, 0x5D, 0x70, 0x76, 0xA0, 0x4F,
-    0xED, 0xED, 0xAC, 0x57, 0xE7, 0xC9, 0x8A, 0x59,
-    0x45, 0xBF, 0xDE, 0x66, 0x75, 0x58, 0x18, 0x85,
-    0x1B, 0xE1, 0x13, 0x6B, 0x71, 0xF4, 0x33, 0xA5,
-    0x6B, 0xDA, 0x18, 0x41, 0xAE, 0x71, 0x39, 0x2C,
-    0x4B, 0x82, 0x90, 0x82, 0x63, 0x59, 0xF5, 0x87,
-    0x22, 0x3C, 0x3E, 0xF7, 0x37, 0xFF, 0x73, 0x2A
-  },
-  {
-    0xED, 0xB8, 0x6A, 0x23, 0x7C, 0x6F, 0x13, 0x7D,
-    0xFB, 0xB3, 0x47, 0x01, 0x1E, 0xDB, 0x4C, 0x6E,
-    0x86, 0x1F, 0x4D, 0x58, 0x14, 0x60, 0x85, 0x46,
-    0x34, 0x41, 0x04, 0x2F, 0xA3, 0x63, 0x16, 0xF1,
-    0xFA, 0xF8, 0x87, 0x11, 0xBB, 0x0F, 0x18, 0x11,
-    0xDF, 0xBB, 0xBF, 0xA7, 0xB5, 0x1F, 0x9C, 0xE2,
-    0xD4, 0x96, 0x05, 0x24, 0x3E, 0xD0, 0x16, 0xCB,
-    0xAD, 0x68, 0x85, 0xEA, 0xE2, 0x03, 0x67, 0x4F
-  },
-  {
-    0xE6, 0xD8, 0xE0, 0xFB, 0xAA, 0x29, 0xDB, 0xEB,
-    0x60, 0xF3, 0xC7, 0xF9, 0x85, 0xBA, 0xD7, 0x54,
-    0xD7, 0x21, 0xAA, 0xC6, 0x3D, 0xA6, 0xF4, 0x49,
-    0x0C, 0x9D, 0x7E, 0xA2, 0x31, 0xD2, 0x62, 0x2F,
-    0xDF, 0xDE, 0xF1, 0x48, 0xD0, 0xCA, 0x44, 0x2B,
-    0x8D, 0x59, 0xCF, 0x3E, 0x4F, 0x98, 0x35, 0xCB,
-    0xC2, 0x40, 0xAF, 0x40, 0xFB, 0xA6, 0x3A, 0x2E,
-    0xA5, 0xA2, 0x35, 0xD4, 0x6E, 0xEA, 0x6E, 0xAC
-  },
-  {
-    0xD4, 0xE4, 0x63, 0xC4, 0x88, 0x29, 0x87, 0xEB,
-    0x44, 0xA5, 0xED, 0x0C, 0x82, 0x1D, 0x68, 0xB0,
-    0xFE, 0xF9, 0x9D, 0x6F, 0x53, 0xA5, 0x7B, 0xF3,
-    0x19, 0xBD, 0xAC, 0x25, 0xAC, 0x38, 0xEB, 0x0B,
-    0x23, 0xE1, 0x13, 0x8C, 0x00, 0x12, 0xF5, 0xF3,
-    0x83, 0x46, 0xA1, 0xDE, 0x9D, 0x4A, 0x99, 0x2A,
-    0x64, 0xB9, 0x42, 0x83, 0x4A, 0x85, 0x6E, 0xFB,
-    0xAA, 0x06, 0x20, 0xBD, 0xA2, 0x9F, 0x6A, 0x86
-  },
-  {
-    0x42, 0xD8, 0x10, 0xD0, 0x1C, 0x2D, 0xA2, 0x47,
-    0x35, 0xF0, 0x4A, 0x5E, 0x90, 0x13, 0x38, 0xFD,
-    0xFC, 0x2D, 0xE1, 0x71, 0x5F, 0xF6, 0x64, 0x3A,
-    0x37, 0x2F, 0x88, 0x0E, 0x6C, 0x5C, 0x6C, 0x13,
-    0xD2, 0xB3, 0xAD, 0x70, 0x77, 0x46, 0x9D, 0x64,
-    0x33, 0x54, 0x05, 0x4D, 0x32, 0xDD, 0x80, 0x49,
-    0xEA, 0x63, 0x73, 0x2B, 0x57, 0x45, 0xBD, 0xB2,
-    0x3B, 0xE2, 0xB5, 0x8E, 0x48, 0xC1, 0x01, 0x3A
-  },
-  {
-    0xCF, 0xBF, 0x54, 0x30, 0x07, 0x6F, 0x82, 0x5A,
-    0x3B, 0xBB, 0x88, 0xC1, 0xBC, 0x0A, 0xEF, 0x61,
-    0x25, 0x9E, 0x8F, 0x4D, 0x5F, 0xA3, 0x3C, 0x39,
-    0x82, 0x50, 0x62, 0xF1, 0x5D, 0x19, 0xFD, 0x4A,
-    0x01, 0x82, 0xCD, 0x97, 0x36, 0xD2, 0xAE, 0xC9,
-    0x74, 0x9C, 0xCF, 0x83, 0x18, 0x6C, 0x35, 0x74,
-    0xAB, 0x94, 0x42, 0x65, 0x40, 0x66, 0x0A, 0x9D,
-    0xB8, 0xC3, 0xAA, 0xBB, 0xCB, 0xDD, 0x9D, 0x0F
-  },
-  {
-    0x6C, 0x24, 0x34, 0xA1, 0xAF, 0xA1, 0x57, 0xAC,
-    0xCC, 0x34, 0xA5, 0xC4, 0x87, 0x2D, 0xFF, 0x69,
-    0xFE, 0x7F, 0x31, 0x96, 0xCB, 0x1A, 0x75, 0x0C,
-    0x54, 0x1D, 0x8B, 0x73, 0x92, 0x28, 0x88, 0xBA,
-    0xBE, 0x89, 0xB1, 0xC3, 0x82, 0x02, 0x21, 0x86,
-    0x20, 0xD8, 0x8D, 0x77, 0xDA, 0xD9, 0xDF, 0xBA,
-    0xB3, 0xFB, 0xF7, 0x40, 0xB2, 0xD1, 0xD8, 0xF3,
-    0x7E, 0xAD, 0x25, 0x8E, 0x2E, 0xF1, 0x06, 0x52
-  },
-  {
-    0x48, 0xB7, 0x26, 0x8A, 0xA4, 0x34, 0x2F, 0xAB,
-    0x02, 0x1D, 0x14, 0x72, 0xE9, 0x25, 0x7F, 0x76,
-    0x58, 0x5C, 0xC5, 0x68, 0x10, 0xC8, 0xF2, 0xA6,
-    0xE1, 0xD4, 0xA8, 0x94, 0x6B, 0x77, 0x71, 0x42,
-    0xD4, 0x4A, 0xE5, 0x13, 0xA8, 0x80, 0x9F, 0x2D,
-    0x6D, 0xC7, 0x26, 0x30, 0x5F, 0x79, 0x44, 0x60,
-    0x4D, 0x95, 0x2D, 0x4A, 0x9F, 0x08, 0x5C, 0x5C,
-    0x10, 0x50, 0xBA, 0xFD, 0xD2, 0x1D, 0x1E, 0x60
-  },
-  {
-    0xCE, 0xCF, 0xCE, 0x4B, 0x12, 0xC6, 0xCF, 0x53,
-    0xD1, 0xB1, 0xB2, 0xD4, 0x18, 0xA4, 0x93, 0xE3,
-    0xF4, 0x29, 0x17, 0x03, 0x21, 0xE8, 0x1A, 0xA2,
-    0x52, 0x63, 0xAA, 0xA7, 0x15, 0xD5, 0xCA, 0x38,
-    0x9F, 0x65, 0xC3, 0xAC, 0xF9, 0x9B, 0x18, 0x0E,
-    0x44, 0x6B, 0x50, 0xE6, 0x01, 0xFC, 0xBF, 0x44,
-    0x61, 0xD0, 0x42, 0x6A, 0x85, 0x92, 0xA0, 0x77,
-    0x42, 0x20, 0x18, 0x57, 0x12, 0x5F, 0x71, 0xEE
-  },
-  {
-    0x38, 0x5A, 0x75, 0x22, 0x42, 0xEB, 0x9E, 0xD5,
-    0x6B, 0x07, 0x4B, 0x70, 0x2C, 0x91, 0xE7, 0x5A,
-    0xEC, 0x0B, 0xE9, 0x06, 0x4B, 0xD9, 0xCF, 0x88,
-    0x03, 0x04, 0xC2, 0x13, 0x27, 0x0C, 0xB2, 0xEA,
-    0xE8, 0xE2, 0x1D, 0x9A, 0xE8, 0xC6, 0x08, 0x15,
-    0x19, 0xF7, 0x5D, 0xFA, 0xBB, 0x00, 0x3B, 0x24,
-    0x32, 0xB0, 0x47, 0x55, 0xB8, 0xC3, 0x2C, 0x97,
-    0xAC, 0x29, 0x14, 0xE8, 0xBF, 0x45, 0xB2, 0x34
-  },
-  {
-    0xD8, 0x9A, 0x12, 0x4A, 0x9B, 0x95, 0x8B, 0xA2,
-    0x3D, 0x09, 0x20, 0x7A, 0xCF, 0xA6, 0x2A, 0x33,
-    0xB8, 0x70, 0x89, 0xB2, 0x86, 0xE8, 0x43, 0x8B,
-    0xDC, 0x01, 0xE2, 0x33, 0xAB, 0x2A, 0x86, 0x30,
-    0xA1, 0xEE, 0xB6, 0xB2, 0xB9, 0xBA, 0x6B, 0x7D,
-    0x21, 0x00, 0x10, 0x77, 0x33, 0xDE, 0xAF, 0x4C,
-    0x20, 0x47, 0x8C, 0x26, 0xF2, 0x49, 0xC6, 0x89,
-    0xC5, 0x26, 0x84, 0x73, 0xE2, 0xE9, 0xFA, 0x60
-  },
-  {
-    0x43, 0xDE, 0x10, 0x92, 0xFF, 0x9F, 0xF5, 0x28,
-    0x20, 0x6C, 0x6F, 0xCF, 0x81, 0x32, 0x2E, 0xAD,
-    0x3D, 0x22, 0xEA, 0xA4, 0xC8, 0x54, 0x52, 0x15,
-    0x77, 0xDF, 0x33, 0x62, 0x47, 0x49, 0x5C, 0xE1,
-    0x72, 0xFC, 0x87, 0x39, 0x95, 0x30, 0x0B, 0x21,
-    0xB9, 0x46, 0x10, 0xC9, 0xD2, 0xF6, 0x33, 0xB5,
-    0x33, 0xBD, 0xE4, 0x56, 0x8C, 0xA0, 0x9C, 0x38,
-    0x0E, 0x84, 0x68, 0xFE, 0x6A, 0xD8, 0xD8, 0x1D
-  },
-  {
-    0x86, 0x8B, 0x60, 0x11, 0x99, 0xEF, 0x00, 0x0B,
-    0x70, 0x5C, 0xD6, 0x4D, 0x39, 0x30, 0x26, 0x2A,
-    0x5A, 0xB9, 0x10, 0xE3, 0x4E, 0x2D, 0x78, 0xE8,
-    0x58, 0x7B, 0x4E, 0x01, 0x0D, 0x37, 0x6D, 0xD4,
-    0xA0, 0x0D, 0xE4, 0x48, 0x67, 0xD0, 0xE9, 0x33,
-    0xEE, 0x39, 0xA1, 0xFA, 0x91, 0x47, 0xD4, 0x99,
-    0xD1, 0x84, 0xF3, 0xA9, 0xCF, 0x35, 0x4F, 0x2D,
-    0x3C, 0x51, 0x14, 0x6F, 0xF7, 0x15, 0x2D, 0x68
-  },
-  {
-    0x15, 0x17, 0xF8, 0xF0, 0x44, 0x2F, 0x0D, 0x50,
-    0xBB, 0xC0, 0xAA, 0xB6, 0x84, 0x6F, 0xDC, 0xE3,
-    0xB7, 0x0F, 0xAE, 0xA4, 0xBB, 0x51, 0x13, 0xAC,
-    0xB2, 0x3A, 0xBE, 0x10, 0x1D, 0x99, 0xA4, 0x0A,
-    0x1B, 0x76, 0xC1, 0xE8, 0xDC, 0x2E, 0xA1, 0x93,
-    0x62, 0x94, 0x82, 0x3A, 0xD8, 0x35, 0x4C, 0x11,
-    0xE2, 0xE9, 0x6C, 0x67, 0x12, 0xBE, 0x4C, 0xF7,
-    0x7C, 0x58, 0x3F, 0xD0, 0x6B, 0x5E, 0x5C, 0x55
-  },
-  {
-    0xAF, 0x4C, 0x6C, 0x67, 0xC5, 0xCA, 0x38, 0x38,
-    0x73, 0x48, 0xCA, 0x3E, 0xC2, 0xBE, 0xD7, 0xFB,
-    0xA8, 0xC2, 0xB3, 0xD2, 0x2D, 0xE1, 0x48, 0xD0,
-    0x8A, 0x61, 0x8C, 0x29, 0x70, 0x23, 0xFB, 0x7B,
-    0x6D, 0x2C, 0x15, 0x3D, 0x5E, 0xFC, 0xD1, 0x68,
-    0x89, 0x99, 0x91, 0x0B, 0x20, 0xE1, 0xEA, 0xC7,
-    0xC1, 0x00, 0xA2, 0xC5, 0xA6, 0xC1, 0xAC, 0xF5,
-    0xE9, 0x8F, 0x14, 0x3B, 0x41, 0xDC, 0x8A, 0x12
-  },
-  {
-    0xA2, 0xAD, 0x94, 0x24, 0x3B, 0x8E, 0xEA, 0x68,
-    0xF5, 0xFA, 0xDD, 0x69, 0x08, 0xAD, 0xB0, 0xDA,
-    0xCD, 0xAA, 0x6A, 0x6D, 0x24, 0xC2, 0x50, 0xD3,
-    0x39, 0x40, 0x3D, 0xBA, 0x82, 0x31, 0xBD, 0x51,
-    0xE8, 0x87, 0xCB, 0x5B, 0x1B, 0x7B, 0xDE, 0x27,
-    0x74, 0xC6, 0xB0, 0x8A, 0xCC, 0xE0, 0xF7, 0x49,
-    0x56, 0x48, 0xDA, 0x3B, 0xEB, 0xC7, 0xB1, 0xC2,
-    0x82, 0x15, 0x08, 0xC4, 0xD3, 0x82, 0xF7, 0x30
-  },
-  {
-    0x28, 0xF8, 0x8C, 0xDB, 0xE9, 0x03, 0xAD, 0x63,
-    0xA0, 0x23, 0x31, 0xDE, 0x1A, 0x32, 0xAF, 0x6D,
-    0xBB, 0xA8, 0x2D, 0x7F, 0xC0, 0x79, 0x87, 0x02,
-    0x72, 0x49, 0x33, 0xDA, 0x77, 0x38, 0x07, 0xBC,
-    0x80, 0x42, 0x78, 0x13, 0x47, 0x81, 0xF1, 0x26,
-    0x23, 0x32, 0x20, 0xE3, 0x07, 0x92, 0x81, 0x31,
-    0xB2, 0x47, 0x10, 0xB4, 0x67, 0x4E, 0xD7, 0x05,
-    0x11, 0x2F, 0x95, 0xD1, 0xAA, 0x37, 0xA2, 0xDC
-  },
-  {
-    0x5B, 0xB2, 0x92, 0x65, 0xE2, 0x46, 0xB8, 0x84,
-    0xFF, 0x40, 0x91, 0x4F, 0xFA, 0x93, 0xD9, 0xA1,
-    0x2E, 0xDC, 0x19, 0xEE, 0xE9, 0xCC, 0x8A, 0x83,
-    0x63, 0x1D, 0x68, 0xBD, 0x46, 0xAA, 0xD3, 0x35,
-    0x4B, 0xA6, 0x67, 0x4B, 0x91, 0x3F, 0x4F, 0x82,
-    0x3E, 0x79, 0x1F, 0x0C, 0xB1, 0x9E, 0xA6, 0xA6,
-    0x7C, 0x6E, 0x32, 0xE9, 0xBE, 0x0D, 0x0F, 0xF5,
-    0x76, 0x0F, 0x16, 0xDD, 0x75, 0xA8, 0x7B, 0x5D
-  },
-  {
-    0xBF, 0x3C, 0x06, 0xDC, 0x6D, 0x94, 0xE3, 0x85,
-    0x9A, 0x4D, 0xAA, 0x50, 0xEC, 0xA1, 0xAF, 0x53,
-    0x57, 0xE3, 0x45, 0x79, 0xE5, 0x99, 0xF8, 0x20,
-    0x49, 0xE1, 0xCC, 0xA7, 0xA7, 0xD4, 0xF3, 0x3F,
-    0xEA, 0x44, 0x3B, 0x44, 0x69, 0x1B, 0xD4, 0x36,
-    0x88, 0xF5, 0x55, 0x05, 0x31, 0xCF, 0x22, 0xB7,
-    0x12, 0x77, 0x89, 0x0B, 0xFF, 0xAE, 0x1E, 0xCE,
-    0x78, 0x3F, 0x56, 0x63, 0xA1, 0xC4, 0xD7, 0x1A
-  },
-  {
-    0xC9, 0x0D, 0xF5, 0x32, 0xF2, 0xF1, 0x49, 0x3A,
-    0x11, 0x55, 0xBE, 0x8C, 0x2A, 0x44, 0x00, 0x92,
-    0x20, 0x49, 0x97, 0x4E, 0x7D, 0x4F, 0x4B, 0x54,
-    0xF8, 0x20, 0xC2, 0x26, 0x9D, 0x3B, 0x16, 0x1B,
-    0x6E, 0x88, 0xEB, 0x77, 0x6B, 0x85, 0x9B, 0x89,
-    0xB8, 0x56, 0x7F, 0xBC, 0x55, 0x0C, 0x4F, 0x54,
-    0xAA, 0xD2, 0x7A, 0x16, 0x10, 0x65, 0x6D, 0x62,
-    0x5C, 0x32, 0x7F, 0x66, 0x5D, 0xCA, 0x70, 0x7C
-  },
-  {
-    0x3D, 0x39, 0xEE, 0xCC, 0x9E, 0x90, 0x42, 0x36,
-    0xDC, 0x85, 0x7B, 0xA4, 0x9D, 0x55, 0xD3, 0xBA,
-    0xD7, 0x65, 0x72, 0xA9, 0x1A, 0x75, 0x95, 0x03,
-    0x37, 0x6B, 0x77, 0x08, 0xD6, 0x2D, 0x5A, 0x78,
-    0x5C, 0x23, 0x06, 0x80, 0x59, 0xCF, 0x68, 0x89,
-    0x7F, 0x23, 0xEE, 0xC5, 0x07, 0x21, 0x9B, 0x0A,
-    0x02, 0xED, 0xA2, 0xD8, 0xBC, 0x94, 0xFA, 0x69,
-    0x89, 0xA5, 0x14, 0x82, 0x22, 0x03, 0xC8, 0xD1
-  },
-  {
-    0xE0, 0x8C, 0x54, 0xD9, 0x98, 0xF9, 0x2B, 0x7A,
-    0x54, 0xA2, 0x4C, 0xA6, 0xAE, 0xB1, 0x53, 0xA6,
-    0x4F, 0x9C, 0x9F, 0x1F, 0xC3, 0x36, 0x58, 0xB3,
-    0xED, 0xAC, 0x2C, 0x4B, 0xB5, 0x26, 0x31, 0x58,
-    0xDA, 0xDF, 0x00, 0xD3, 0x51, 0x9A, 0x11, 0x9A,
-    0x56, 0x14, 0xC7, 0xF3, 0x79, 0x40, 0xE5, 0x5D,
-    0x13, 0xCC, 0xE4, 0x66, 0xCB, 0x71, 0xA4, 0x07,
-    0xC3, 0x9F, 0xC5, 0x1E, 0x1E, 0xFE, 0x18, 0xDA
-  },
-  {
-    0x74, 0x76, 0x76, 0x07, 0x04, 0x1D, 0xD4, 0xB7,
-    0xC5, 0x6B, 0x18, 0x9E, 0xE8, 0xF2, 0x77, 0x31,
-    0xA5, 0x16, 0x72, 0x23, 0xEB, 0x7A, 0xF9, 0xB9,
-    0x39, 0xE1, 0x18, 0xF8, 0x7D, 0x80, 0xB4, 0x9E,
-    0xA8, 0xD0, 0xD0, 0x1F, 0x74, 0xF3, 0x98, 0xB1,
-    0x72, 0xA8, 0xAD, 0x0D, 0xBF, 0x99, 0x41, 0x4F,
-    0x08, 0xD2, 0xB7, 0xD8, 0xD7, 0x52, 0x16, 0xA1,
-    0x82, 0x25, 0x27, 0x3D, 0x8D, 0x7F, 0xD0, 0x5D
-  },
-  {
-    0xFE, 0xE8, 0x9A, 0x92, 0xCC, 0xF9, 0xF1, 0xEB,
-    0x08, 0x4A, 0xAB, 0xA9, 0x54, 0x97, 0xEF, 0x0F,
-    0x30, 0x13, 0x4C, 0x19, 0x1C, 0xF9, 0x0A, 0x49,
-    0xD2, 0x2C, 0x7D, 0x2F, 0x66, 0x14, 0x99, 0x3C,
-    0xBE, 0x1A, 0x4B, 0x65, 0x13, 0xED, 0xC1, 0x53,
-    0x86, 0x8A, 0x3D, 0x56, 0x2B, 0x5B, 0x02, 0x26,
-    0xBA, 0x8E, 0x1B, 0x0D, 0xCB, 0x69, 0xED, 0x45,
-    0xAF, 0x47, 0xCE, 0x4F, 0x86, 0xBA, 0x47, 0x4A
-  },
-  {
-    0xCD, 0xAE, 0x94, 0xB6, 0xD1, 0xD8, 0x35, 0xF6,
-    0xC7, 0x4C, 0x76, 0xEC, 0x3A, 0x2D, 0xB6, 0x5B,
-    0xBD, 0xFA, 0xE1, 0x9D, 0x7B, 0x05, 0x0D, 0xC9,
-    0x5D, 0x65, 0x87, 0x33, 0xB8, 0xB2, 0x2C, 0x6F,
-    0x9E, 0x0B, 0x63, 0xCC, 0x90, 0x5A, 0x29, 0xEA,
-    0x88, 0x78, 0xCA, 0x39, 0x45, 0x56, 0xB3, 0x67,
-    0x3C, 0x62, 0x79, 0x15, 0x46, 0xA9, 0xA1, 0xF0,
-    0xD1, 0x56, 0x5F, 0xAD, 0xC5, 0x35, 0x36, 0xC1
-  },
-  {
-    0xC7, 0x22, 0x8B, 0x6F, 0x00, 0x00, 0x17, 0xD2,
-    0xBE, 0x4B, 0xF2, 0xAE, 0x48, 0xAD, 0xDB, 0x78,
-    0x5E, 0x27, 0x35, 0xBF, 0x3C, 0x61, 0x4D, 0x3C,
-    0x34, 0x23, 0x1F, 0x1D, 0x0C, 0x88, 0x7D, 0x3A,
-    0x8E, 0x88, 0x88, 0x0B, 0x67, 0xAD, 0x3B, 0x2F,
-    0x65, 0x23, 0xDD, 0x67, 0x19, 0x34, 0x2C, 0xD4,
-    0xF0, 0x59, 0x35, 0xD2, 0xE5, 0x26, 0x7F, 0x36,
-    0x80, 0xE7, 0x73, 0xBD, 0x5E, 0xAD, 0xFE, 0x1D
-  },
-  {
-    0x12, 0x27, 0x44, 0xFE, 0x3F, 0xFF, 0x9A, 0x05,
-    0x5F, 0x0F, 0x3B, 0xDE, 0x01, 0xEB, 0x2F, 0x44,
-    0x6B, 0x0C, 0xDA, 0xF3, 0xAE, 0xD7, 0x2C, 0xAA,
-    0x29, 0x40, 0x74, 0x19, 0x20, 0x12, 0x0A, 0x96,
-    0x4F, 0xCF, 0xF8, 0x70, 0x99, 0xB0, 0x8E, 0xF3,
-    0x34, 0x96, 0xE3, 0x99, 0x03, 0x2A, 0x82, 0xDA,
-    0xAD, 0x4F, 0xED, 0x30, 0x31, 0x17, 0x2F, 0x77,
-    0x47, 0x92, 0x58, 0xFA, 0x39, 0xDB, 0x92, 0xFD
-  },
-  {
-    0x1F, 0xB4, 0xE3, 0x67, 0xEA, 0xB6, 0x42, 0xB7,
-    0x2E, 0x43, 0xAD, 0x4A, 0xBD, 0xFC, 0xAD, 0x74,
-    0x62, 0x0C, 0x3F, 0x6C, 0x63, 0xA8, 0x91, 0x31,
-    0x28, 0xD2, 0x22, 0x6E, 0xB1, 0x92, 0xF9, 0x99,
-    0x2E, 0xB9, 0xC8, 0xF7, 0x6A, 0xE2, 0x06, 0xD3,
-    0xF5, 0xDE, 0xC7, 0x26, 0xA5, 0xA6, 0x86, 0xB4,
-    0xAE, 0x37, 0xB5, 0x57, 0xAB, 0x57, 0xF9, 0x56,
-    0x48, 0x53, 0x34, 0xF7, 0x3D, 0xCE, 0x02, 0xE0
-  },
-  {
-    0x04, 0x25, 0xCA, 0xAA, 0x92, 0x3B, 0x47, 0xB3,
-    0x50, 0x45, 0xEB, 0x50, 0x82, 0x9C, 0x04, 0x8B,
-    0xC8, 0x90, 0x44, 0x4A, 0xFE, 0xEF, 0xC0, 0xAF,
-    0xC9, 0xD1, 0x87, 0x7B, 0x82, 0x1E, 0x04, 0x3C,
-    0x9C, 0x7B, 0x9D, 0x6D, 0xC3, 0x3F, 0xBB, 0xDF,
-    0xA5, 0x37, 0xC1, 0xEC, 0xE3, 0x11, 0x96, 0x5B,
-    0x2F, 0xEE, 0x89, 0x82, 0xBC, 0x46, 0xA2, 0xA7,
-    0x50, 0xBF, 0xC7, 0x1D, 0x79, 0xDB, 0xEA, 0x04
-  },
-  {
-    0x6B, 0x9D, 0x86, 0xF1, 0x5C, 0x09, 0x0A, 0x00,
-    0xFC, 0x3D, 0x90, 0x7F, 0x90, 0x6C, 0x5E, 0xB7,
-    0x92, 0x65, 0xE5, 0x8B, 0x88, 0xEB, 0x64, 0x29,
-    0x4B, 0x4C, 0xC4, 0xE2, 0xB8, 0x9B, 0x1A, 0x7C,
-    0x5E, 0xE3, 0x12, 0x7E, 0xD2, 0x1B, 0x45, 0x68,
-    0x62, 0xDE, 0x6B, 0x2A, 0xBD, 0xA5, 0x9E, 0xAA,
-    0xCF, 0x2D, 0xCB, 0xE9, 0x22, 0xCA, 0x75, 0x5E,
-    0x40, 0x73, 0x5B, 0xE8, 0x1D, 0x9C, 0x88, 0xA5
-  },
-  {
-    0x14, 0x6A, 0x18, 0x7A, 0x99, 0xE8, 0xA2, 0xD2,
-    0x33, 0xE0, 0xEB, 0x37, 0x3D, 0x43, 0x7B, 0x02,
-    0xBF, 0xA8, 0xD6, 0x51, 0x5B, 0x3C, 0xA1, 0xDE,
-    0x48, 0xA6, 0xB6, 0xAC, 0xF7, 0x43, 0x7E, 0xB7,
-    0xE7, 0xAC, 0x3F, 0x2D, 0x19, 0xEF, 0x3B, 0xB9,
-    0xB8, 0x33, 0xCC, 0x57, 0x61, 0xDB, 0xA2, 0x2D,
-    0x1A, 0xD0, 0x60, 0xBE, 0x76, 0xCD, 0xCB, 0x81,
-    0x2D, 0x64, 0xD5, 0x78, 0xE9, 0x89, 0xA5, 0xA4
-  },
-  {
-    0x25, 0x75, 0x4C, 0xA6, 0x66, 0x9C, 0x48, 0x70,
-    0x84, 0x03, 0x88, 0xEA, 0x64, 0xE9, 0x5B, 0xD2,
-    0xE0, 0x81, 0x0D, 0x36, 0x3C, 0x4C, 0xF6, 0xA1,
-    0x6E, 0xA1, 0xBD, 0x06, 0x68, 0x6A, 0x93, 0xC8,
-    0xA1, 0x25, 0xF2, 0x30, 0x22, 0x9D, 0x94, 0x84,
-    0x85, 0xE1, 0xA8, 0x2D, 0xE4, 0x82, 0x00, 0x35,
-    0x8F, 0x3E, 0x02, 0xB5, 0x05, 0xDA, 0xBC, 0x4F,
-    0x13, 0x9C, 0x03, 0x79, 0xDC, 0x2B, 0x30, 0x80
-  },
-  {
-    0x0E, 0x26, 0xCB, 0xC7, 0x8D, 0xC7, 0x54, 0xEC,
-    0xA0, 0x6C, 0xF8, 0xCB, 0x31, 0xFC, 0xBA, 0xBB,
-    0x18, 0x88, 0x92, 0xC1, 0x04, 0x50, 0x89, 0x05,
-    0x49, 0xB2, 0xD4, 0x03, 0xA2, 0xA3, 0xC4, 0x57,
-    0x70, 0x01, 0xF7, 0x4A, 0x76, 0xBD, 0x38, 0x99,
-    0x0D, 0x75, 0x5B, 0xAE, 0x05, 0x26, 0x64, 0x83,
-    0x29, 0xF6, 0x35, 0x45, 0xED, 0x16, 0x99, 0x5C,
-    0xB1, 0xE6, 0x34, 0x3F, 0x18, 0x9F, 0x8E, 0x6F
-  },
-  {
-    0x58, 0xE7, 0x98, 0x0B, 0x8B, 0x1A, 0x0B, 0x88,
-    0xDA, 0x9D, 0xA8, 0x64, 0x0F, 0x2B, 0x96, 0xE3,
-    0xE0, 0x48, 0x36, 0x61, 0x30, 0xC2, 0x66, 0x21,
-    0x7D, 0xDC, 0x79, 0x53, 0x50, 0x8F, 0x4A, 0x40,
-    0xD1, 0x67, 0x4D, 0xAB, 0xD3, 0x92, 0x89, 0xE3,
-    0xF1, 0x0C, 0x61, 0x19, 0x68, 0xCC, 0xD1, 0xE9,
-    0xCC, 0xC1, 0x8C, 0xAD, 0xC7, 0x77, 0x4A, 0x99,
-    0x7D, 0xD1, 0xFA, 0x94, 0xE8, 0x35, 0x47, 0x07
-  },
-  {
-    0x69, 0x6F, 0xB8, 0x47, 0x63, 0xE0, 0x23, 0x58,
-    0x4B, 0x35, 0x90, 0x7A, 0x8B, 0x8A, 0xAA, 0x9E,
-    0x0E, 0x78, 0x6F, 0x2C, 0xA5, 0x91, 0x45, 0x41,
-    0x91, 0x58, 0x48, 0xFB, 0x6D, 0xDA, 0xB8, 0xD3,
-    0xD2, 0xEA, 0xB6, 0x00, 0xC1, 0x38, 0xCE, 0x67,
-    0x17, 0xB0, 0xC7, 0x02, 0x59, 0xD3, 0x19, 0x3E,
-    0xA1, 0x56, 0x95, 0xC8, 0x50, 0x53, 0x7F, 0x2C,
-    0x70, 0x6C, 0xA4, 0xAF, 0x15, 0x8E, 0x95, 0x7E
-  },
-  {
-    0x23, 0xDE, 0x6E, 0x73, 0x07, 0x9C, 0x8C, 0x20,
-    0x47, 0xA7, 0x84, 0x6A, 0x83, 0xCC, 0xAC, 0xAB,
-    0xD3, 0x71, 0x16, 0x3B, 0x7B, 0x6D, 0x54, 0xEB,
-    0x03, 0x2B, 0xC4, 0x9B, 0x66, 0x97, 0x42, 0xBE,
-    0x71, 0x7B, 0x99, 0xDA, 0x12, 0xC6, 0x46, 0xAD,
-    0x52, 0x57, 0x06, 0xF2, 0x22, 0xE1, 0xDF, 0x4A,
-    0x91, 0xDD, 0x0C, 0xC6, 0x4D, 0xF1, 0x82, 0xDA,
-    0x00, 0x73, 0x1D, 0x43, 0x9C, 0x46, 0xF8, 0xD2
-  },
-  {
-    0xBB, 0x74, 0xF3, 0x6A, 0x9D, 0xB6, 0x96, 0xC9,
-    0x33, 0x35, 0xE6, 0xC4, 0x6A, 0xAB, 0x58, 0xDB,
-    0x10, 0xCB, 0x07, 0xEA, 0x4F, 0x1B, 0x71, 0x93,
-    0x63, 0x05, 0x22, 0x83, 0x90, 0x95, 0x94, 0x78,
-    0xF8, 0x73, 0x4E, 0x21, 0x54, 0x90, 0xE9, 0xAE,
-    0x2A, 0x3E, 0xC8, 0xF7, 0xF7, 0x67, 0x33, 0xAE,
-    0x3F, 0x8B, 0x9A, 0x3F, 0xD7, 0xC4, 0x06, 0xC6,
-    0xCA, 0xC7, 0x09, 0x97, 0x5C, 0x40, 0xF8, 0x56
-  },
-  {
-    0xEC, 0x63, 0x04, 0xD3, 0x8E, 0x23, 0x2C, 0x09,
-    0x6A, 0xB5, 0x86, 0xCA, 0xDF, 0x27, 0x02, 0x6D,
-    0xC5, 0xE5, 0x32, 0x17, 0xD0, 0xE8, 0xB0, 0xC6,
-    0x0A, 0xDA, 0xAE, 0x22, 0xF4, 0xE8, 0xC2, 0x2D,
-    0x30, 0xBC, 0x51, 0x77, 0xF1, 0xC8, 0x3A, 0xCD,
-    0x92, 0x5E, 0x02, 0xA2, 0xDA, 0x89, 0x59, 0x5F,
-    0xC1, 0x06, 0x09, 0x0E, 0x2E, 0x53, 0xED, 0xB3,
-    0x1C, 0xDB, 0x76, 0xFF, 0x37, 0xEB, 0x61, 0x80
-  },
-  {
-    0x92, 0xF9, 0xFC, 0x6B, 0xC5, 0x9A, 0x54, 0x3F,
-    0x0D, 0xC9, 0xA1, 0x79, 0x8F, 0xB1, 0xE5, 0xD5,
-    0x23, 0x47, 0x4E, 0x48, 0xFF, 0x3E, 0x29, 0x49,
-    0x7F, 0x72, 0x80, 0xD1, 0xC4, 0x08, 0xC8, 0x66,
-    0x33, 0x48, 0xFE, 0x2A, 0xF7, 0x8F, 0x6C, 0x4E,
-    0x5E, 0xF5, 0xC0, 0xA0, 0x17, 0xF3, 0xD3, 0xF2,
-    0x15, 0xEC, 0xDD, 0x7A, 0x40, 0x0A, 0xC5, 0x77,
-    0x3B, 0x9E, 0x25, 0x60, 0x68, 0x84, 0x5A, 0x92
-  },
-  {
-    0x4A, 0x25, 0xB5, 0x62, 0xF2, 0xFA, 0x01, 0xDD,
-    0xEE, 0x7E, 0xA2, 0xE9, 0xFB, 0xF5, 0x2F, 0x8C,
-    0x75, 0x6D, 0x28, 0xDB, 0x4A, 0x8B, 0xF7, 0x0E,
-    0x74, 0x0E, 0x90, 0x27, 0x42, 0x6E, 0x51, 0x63,
-    0x9D, 0xF8, 0x78, 0x8D, 0x13, 0x38, 0x56, 0x85,
-    0x8D, 0x01, 0xFD, 0xDB, 0xDD, 0x5B, 0x98, 0x79,
-    0x44, 0xC3, 0x00, 0xDC, 0x7F, 0x82, 0x41, 0xFB,
-    0xCE, 0xFA, 0x4F, 0x12, 0x94, 0x8A, 0xFE, 0xAE
-  },
-  {
-    0x34, 0x21, 0x2D, 0xD9, 0xF0, 0x65, 0x1F, 0x81,
-    0x80, 0x9A, 0x14, 0xED, 0xBC, 0xF7, 0xF3, 0xAC,
-    0xDE, 0xDE, 0x78, 0x72, 0xC7, 0xA4, 0x84, 0x7B,
-    0xEA, 0x9F, 0x7A, 0xB7, 0x59, 0x73, 0x82, 0x47,
-    0x7A, 0x4C, 0xB8, 0x47, 0x9A, 0x27, 0x63, 0x21,
-    0x23, 0x5E, 0x90, 0x21, 0x57, 0x94, 0x46, 0xA4,
-    0x38, 0x8A, 0x99, 0xE5, 0x60, 0xA3, 0x90, 0x7A,
-    0xEE, 0xF2, 0xB4, 0x38, 0xFE, 0x6B, 0x90, 0xC4
-  },
-  {
-    0xD6, 0x2C, 0xF7, 0xAB, 0xBC, 0x7D, 0x7B, 0xCD,
-    0x5B, 0xEB, 0x1E, 0xE4, 0x8C, 0x43, 0xB8, 0x04,
-    0xFD, 0x0D, 0xB4, 0x55, 0xE7, 0xF4, 0xFE, 0xBB,
-    0xCF, 0xF1, 0x4B, 0x05, 0xBE, 0x90, 0x47, 0xE2,
-    0x7E, 0x51, 0x8D, 0x6D, 0x3A, 0x6A, 0xDA, 0x4D,
-    0x58, 0x63, 0xB7, 0xEC, 0x7F, 0x84, 0x92, 0x45,
-    0x89, 0x40, 0xAC, 0x6B, 0xDD, 0xB5, 0x06, 0x59,
-    0x2C, 0xCB, 0xC8, 0x96, 0xAF, 0xBB, 0x77, 0xA3
-  },
-  {
-    0x33, 0xA3, 0xA2, 0x63, 0x6F, 0x91, 0x98, 0xD3,
-    0x7A, 0x5F, 0xF1, 0xBF, 0xF9, 0xEB, 0x10, 0x02,
-    0x4B, 0x28, 0x46, 0x80, 0x39, 0xF4, 0x91, 0x40,
-    0x2D, 0x39, 0xB7, 0x08, 0xC5, 0x5D, 0x27, 0xE5,
-    0xE8, 0xDF, 0x5E, 0x3E, 0x19, 0x49, 0x95, 0x82,
-    0x35, 0xCA, 0xD9, 0x80, 0x74, 0x20, 0x96, 0xF2,
-    0x77, 0x9A, 0x1D, 0x71, 0xDA, 0xD5, 0x8F, 0xAF,
-    0xA3, 0xCD, 0x02, 0xCB, 0x5E, 0xAA, 0x98, 0xC5
-  },
-  {
-    0xB7, 0xA3, 0x89, 0x90, 0xE6, 0xF4, 0x56, 0x4A,
-    0xA3, 0xD9, 0x3A, 0x79, 0x37, 0x10, 0x0C, 0x29,
-    0xF9, 0x40, 0xAF, 0xF7, 0xCB, 0x20, 0x86, 0x5A,
-    0x1C, 0x21, 0x89, 0x81, 0xA5, 0x42, 0x04, 0x86,
-    0x08, 0x17, 0x81, 0xF8, 0xD5, 0x0C, 0x86, 0x62,
-    0x5C, 0xC5, 0xD7, 0x6D, 0x0F, 0x5C, 0xCC, 0x4E,
-    0xB6, 0x5D, 0x43, 0x66, 0x09, 0x62, 0x4F, 0x21,
-    0xD0, 0x53, 0x39, 0xAB, 0x0C, 0xF7, 0x9F, 0x4C
-  },
-  {
-    0x9D, 0x66, 0x5A, 0x3F, 0xDD, 0x10, 0x45, 0x9E,
-    0x77, 0xF0, 0x3A, 0xC8, 0xC0, 0xE2, 0x39, 0x01,
-    0x94, 0x89, 0x69, 0x3C, 0xC9, 0x31, 0x5A, 0xA3,
-    0xFF, 0x11, 0x29, 0x11, 0xD2, 0xAC, 0xF0, 0xB7,
-    0xD2, 0x76, 0xAC, 0x76, 0x9B, 0xED, 0xFD, 0x85,
-    0x2D, 0x28, 0x89, 0xDD, 0x12, 0xDB, 0x91, 0x39,
-    0x8B, 0x01, 0xC4, 0xF4, 0xA5, 0xDA, 0x27, 0x80,
-    0xB1, 0xDE, 0xFE, 0x0D, 0x95, 0xB6, 0x32, 0x70
-  },
-  {
-    0x70, 0xFB, 0x9E, 0xFD, 0x5B, 0xCA, 0x7F, 0x19,
-    0xB6, 0xE3, 0x1D, 0x64, 0x0D, 0xCF, 0x88, 0xD7,
-    0x7E, 0x76, 0x8A, 0xE2, 0x27, 0xEC, 0xB3, 0xFD,
-    0x6B, 0x47, 0x13, 0x78, 0x94, 0xF5, 0x49, 0xBF,
-    0x1C, 0xF0, 0x6E, 0x5D, 0xB4, 0x54, 0x60, 0x44,
-    0xDD, 0x9F, 0x46, 0x5C, 0x9C, 0x85, 0xF7, 0x28,
-    0x4F, 0xE5, 0x4D, 0x2B, 0x71, 0x52, 0x69, 0x9B,
-    0xE4, 0xBD, 0x55, 0x5A, 0x90, 0x9A, 0x88, 0xA9
-  },
-  {
-    0x7A, 0xFD, 0xB0, 0x19, 0x30, 0x87, 0xE0, 0xC9,
-    0xF8, 0xB4, 0xDD, 0x8B, 0x48, 0xD9, 0xF2, 0x0A,
-    0xCE, 0x27, 0x13, 0xAF, 0xC7, 0x1B, 0xCC, 0x93,
-    0x82, 0xB5, 0x42, 0x90, 0xAE, 0xBF, 0xFE, 0xB2,
-    0xD1, 0x38, 0xF4, 0xDC, 0xF0, 0x28, 0xF9, 0xC4,
-    0x3C, 0xC1, 0x80, 0x89, 0x84, 0x77, 0xA3, 0x9E,
-    0x3F, 0x53, 0xA8, 0xD1, 0xBF, 0x67, 0xCE, 0xB6,
-    0x08, 0x26, 0x1F, 0xAE, 0x6D, 0xDB, 0x1A, 0xBC
-  },
-  {
-    0x05, 0x99, 0x0D, 0x7D, 0x7D, 0xF1, 0xD4, 0x84,
-    0xF5, 0xB1, 0xCA, 0xE9, 0xEE, 0x5D, 0xFC, 0xB4,
-    0x3F, 0x2C, 0xBE, 0x18, 0x6C, 0x1A, 0x5B, 0x18,
-    0x1A, 0x37, 0x31, 0xD4, 0xB1, 0x54, 0x8E, 0xBF,
-    0xF5, 0xBF, 0x61, 0xCB, 0x0F, 0x6D, 0x9F, 0xC2,
-    0x30, 0xF2, 0x5E, 0x86, 0x78, 0xB7, 0x99, 0xE0,
-    0xE8, 0x30, 0x26, 0xA0, 0x86, 0x6B, 0xF0, 0xAC,
-    0xAB, 0x08, 0x9E, 0x10, 0x2E, 0x67, 0xAB, 0x6B
-  },
-  {
-    0x1A, 0xF7, 0xA5, 0xCE, 0x58, 0x7C, 0x8D, 0x87,
-    0xC7, 0xB7, 0x9F, 0xA3, 0xE7, 0x23, 0xD7, 0x4C,
-    0xE0, 0x26, 0xB5, 0x28, 0x67, 0x52, 0xFD, 0x0C,
-    0x37, 0x42, 0xC6, 0xF0, 0x41, 0x8E, 0xD7, 0x85,
-    0x99, 0x0D, 0x21, 0xF2, 0x8D, 0xA8, 0x39, 0xCE,
-    0x82, 0x12, 0xED, 0x55, 0x0C, 0x37, 0x3E, 0x6D,
-    0x3A, 0x75, 0xD5, 0x5C, 0x31, 0x77, 0x04, 0x41,
-    0xEE, 0xAF, 0xF2, 0xD5, 0x0F, 0x6E, 0x61, 0xB6
-  },
-  {
-    0xDD, 0xEE, 0x0C, 0x76, 0xC9, 0xBD, 0xD3, 0x2D,
-    0x70, 0x49, 0x35, 0x4C, 0xFC, 0x85, 0xDC, 0x68,
-    0x67, 0xE2, 0x49, 0x2E, 0x47, 0xFE, 0xB0, 0x8E,
-    0x39, 0x83, 0xD0, 0xB6, 0x78, 0x84, 0x5D, 0x7E,
-    0xC6, 0xC9, 0x79, 0x3C, 0x33, 0x26, 0xBF, 0xDC,
-    0x1E, 0x11, 0x32, 0x76, 0xD1, 0x77, 0xFE, 0x38,
-    0x82, 0x52, 0x04, 0xDD, 0x00, 0x07, 0x39, 0x89,
-    0xC0, 0x81, 0xCC, 0x3B, 0x71, 0xC6, 0x8D, 0x5F
-  },
-  {
-    0xDE, 0x07, 0x06, 0x48, 0xB3, 0x7C, 0x47, 0xDC,
-    0x9F, 0x2F, 0x6D, 0x2A, 0xB2, 0x07, 0x73, 0xCD,
-    0x82, 0xFA, 0x57, 0x25, 0xA6, 0x90, 0x0E, 0xB7,
-    0x1C, 0xDD, 0xB0, 0xC9, 0xF3, 0x9B, 0x31, 0xDF,
-    0x6D, 0x07, 0x73, 0x24, 0x6E, 0x8E, 0xF9, 0x03,
-    0x49, 0x67, 0x75, 0x2D, 0xB7, 0xED, 0x22, 0x73,
-    0x3F, 0x43, 0x79, 0x94, 0x8D, 0xC3, 0x96, 0xDC,
-    0x35, 0xAD, 0xBB, 0xE9, 0xF6, 0x53, 0x77, 0x40
-  },
-  {
-    0xA6, 0x45, 0x6F, 0xBC, 0xFF, 0x9E, 0x3D, 0x5B,
-    0x11, 0x6A, 0x0E, 0x33, 0x1A, 0x1F, 0x97, 0x4F,
-    0x07, 0x0E, 0x95, 0x56, 0x09, 0x78, 0x1F, 0xA5,
-    0x99, 0xD6, 0x08, 0xA3, 0x1D, 0xA7, 0x6A, 0xD8,
-    0xAB, 0xFE, 0x34, 0x66, 0x17, 0xC2, 0x57, 0x86,
-    0x51, 0x3B, 0x2C, 0x44, 0xBF, 0xE2, 0xCB, 0x45,
-    0x7C, 0x43, 0xFA, 0x6F, 0x45, 0x36, 0x1C, 0xA9,
-    0xC6, 0x34, 0x13, 0x11, 0xB7, 0xDD, 0xFB, 0xD5
-  },
-  {
-    0x5C, 0x95, 0xD3, 0x82, 0x02, 0x18, 0x91, 0x04,
-    0x8B, 0x5E, 0xC8, 0x1C, 0xC8, 0x8E, 0x66, 0xB1,
-    0xB4, 0xD8, 0x0A, 0x00, 0xB5, 0xEE, 0x66, 0xB3,
-    0xC0, 0x30, 0x77, 0x49, 0xE6, 0xF2, 0x4D, 0x17,
-    0x0D, 0x23, 0xFA, 0xCC, 0x8E, 0xB2, 0x53, 0xB3,
-    0x56, 0x2B, 0xF8, 0xA4, 0x5C, 0x37, 0x99, 0x0C,
-    0xD2, 0xD3, 0xE4, 0x43, 0xB1, 0x8C, 0x68, 0xBB,
-    0xCC, 0x6C, 0x83, 0x1D, 0xFD, 0xE2, 0xF8, 0xE5
-  },
-  {
-    0xE3, 0x74, 0x00, 0xDB, 0xD9, 0x21, 0x0F, 0x31,
-    0x37, 0xAC, 0xAF, 0x49, 0x24, 0x2F, 0xA1, 0x23,
-    0xA0, 0x52, 0x95, 0x8A, 0x4C, 0x0D, 0x98, 0x90,
-    0x62, 0x47, 0xD5, 0x35, 0xA3, 0x51, 0xFD, 0x52,
-    0x29, 0x6E, 0x70, 0x10, 0x32, 0x5B, 0xDA, 0x84,
-    0x1F, 0xA2, 0xAA, 0xB4, 0x47, 0x63, 0x76, 0x3C,
-    0x55, 0x04, 0xD7, 0xB3, 0x0C, 0x6D, 0x79, 0xFC,
-    0x1D, 0xC8, 0xCF, 0x10, 0x24, 0x46, 0x6D, 0xB0
-  },
-  {
-    0x52, 0x73, 0xA3, 0xA1, 0x3C, 0xF0, 0xEC, 0x72,
-    0x00, 0x44, 0x2C, 0xBD, 0x7B, 0x37, 0x44, 0x66,
-    0xA7, 0x19, 0x0D, 0xDC, 0xA1, 0x31, 0xD9, 0x63,
-    0xF8, 0xF8, 0x39, 0x65, 0xAE, 0xD3, 0xDD, 0x86,
-    0xE9, 0xD4, 0x5A, 0xB4, 0x89, 0xB9, 0xC5, 0x62,
-    0x47, 0xC9, 0xF2, 0xAA, 0x69, 0xFD, 0x7E, 0x31,
-    0x87, 0xB8, 0xFA, 0x0D, 0xAC, 0x77, 0xC4, 0x7C,
-    0xB2, 0x95, 0xBA, 0x62, 0x96, 0x78, 0x43, 0x94
-  },
-  {
-    0x2A, 0xDB, 0x93, 0x49, 0xA9, 0xEC, 0x37, 0xFF,
-    0x49, 0x62, 0xF4, 0x21, 0x7E, 0x80, 0xEB, 0xDC,
-    0xD3, 0x60, 0x96, 0x7B, 0x51, 0x3D, 0x12, 0x02,
-    0xD9, 0x98, 0x28, 0x31, 0x15, 0x5D, 0x2F, 0x43,
-    0xEB, 0x9A, 0xDD, 0x63, 0xB5, 0xEC, 0x10, 0xD3,
-    0xD0, 0x43, 0x0D, 0xC9, 0xCF, 0x76, 0x48, 0x11,
-    0x7F, 0xC6, 0x0B, 0xAB, 0xBF, 0x8E, 0xBF, 0x19,
-    0xFA, 0xCE, 0xE5, 0x50, 0x45, 0x5B, 0x60, 0xC9
-  },
-  {
-    0xAC, 0xAA, 0xDA, 0x3E, 0x47, 0x37, 0xC6, 0x63,
-    0xEB, 0xF0, 0x3C, 0x02, 0x49, 0xCC, 0xA6, 0xF3,
-    0x17, 0x9A, 0x03, 0x84, 0xEA, 0x2A, 0xB1, 0x35,
-    0xD4, 0xD7, 0xA2, 0xBB, 0x8A, 0x2F, 0x40, 0x53,
-    0x9C, 0xDC, 0xE8, 0xA3, 0x76, 0x0F, 0xD1, 0x3D,
-    0xEE, 0xEC, 0xD1, 0x60, 0x61, 0x7F, 0x72, 0xDE,
-    0x63, 0x75, 0x4E, 0x21, 0x57, 0xCA, 0xDC, 0xF0,
-    0x67, 0x32, 0x9C, 0x2A, 0x51, 0x98, 0xF8, 0xE0
-  },
-  {
-    0xEF, 0x15, 0xE6, 0xDB, 0x96, 0xE6, 0xD0, 0xC1,
-    0x8C, 0x70, 0xAD, 0xC3, 0xCD, 0xB3, 0x2B, 0x28,
-    0x67, 0x74, 0x02, 0xE8, 0xEA, 0x44, 0x11, 0xEA,
-    0x2F, 0x34, 0x68, 0xED, 0x93, 0x82, 0xE1, 0x9B,
-    0xFE, 0xCA, 0xF5, 0xAC, 0xB8, 0x28, 0xA5, 0x2B,
-    0xE1, 0x6B, 0x98, 0x1E, 0x48, 0x7E, 0x5B, 0xB4,
-    0xA1, 0x43, 0x08, 0x65, 0x35, 0x8E, 0x97, 0x9F,
-    0xB1, 0x07, 0x1F, 0xB9, 0x51, 0x14, 0xFF, 0xDD
-  },
-  {
-    0x05, 0x7E, 0xAB, 0x8F, 0xA6, 0x1C, 0x23, 0x09,
-    0x67, 0xD9, 0x5D, 0xFB, 0x75, 0x45, 0x57, 0x0E,
-    0x34, 0x1A, 0xE3, 0xC6, 0x73, 0x7C, 0x7D, 0xB2,
-    0xA2, 0x27, 0xD9, 0x0F, 0xF3, 0x15, 0xD0, 0x98,
-    0xD4, 0x76, 0xF7, 0x15, 0x77, 0x9E, 0x67, 0x72,
-    0xB4, 0xED, 0x37, 0x54, 0x82, 0x66, 0xE6, 0x59,
-    0x8C, 0x6F, 0x09, 0x69, 0x13, 0xC2, 0xFD, 0xD8,
-    0xD6, 0xE4, 0x4F, 0xE2, 0xB5, 0x4D, 0x97, 0x80
-  },
-  {
-    0xED, 0xE6, 0x8D, 0x1B, 0x13, 0xE7, 0xEF, 0x78,
-    0xD9, 0xC4, 0xEE, 0x10, 0xEC, 0xEB, 0x1D, 0x2A,
-    0xEE, 0xC3, 0xB8, 0x15, 0x7F, 0xDB, 0x91, 0x41,
-    0x8C, 0x22, 0x19, 0xF6, 0x41, 0x49, 0x74, 0x70,
-    0x17, 0xAC, 0xA7, 0xD4, 0x65, 0xB8, 0xB4, 0x7F,
-    0xFA, 0x53, 0x64, 0x4B, 0x8B, 0xC6, 0xDA, 0x12,
-    0xDD, 0x45, 0xD1, 0x05, 0x5E, 0x47, 0xB4, 0xD8,
-    0x39, 0x0E, 0xB2, 0xBD, 0x60, 0x2B, 0xA0, 0x30
-  },
-  {
-    0x27, 0xF8, 0x56, 0xE6, 0x3E, 0xB9, 0x4D, 0x08,
-    0xFB, 0xBE, 0x50, 0x22, 0xB0, 0xED, 0xDB, 0xC7,
-    0xD8, 0xDB, 0x86, 0x5E, 0xF4, 0xFE, 0xC2, 0x05,
-    0x86, 0xDF, 0x3D, 0xD9, 0x02, 0xA0, 0x5B, 0x26,
-    0x35, 0x9E, 0x26, 0x7C, 0x78, 0x8D, 0x7C, 0x88,
-    0x03, 0x2E, 0x76, 0x6B, 0x11, 0x87, 0x40, 0x20,
-    0x0F, 0x49, 0xCB, 0x4D, 0x6E, 0xDB, 0x15, 0x61,
-    0xB2, 0xDE, 0x7D, 0xC6, 0x5E, 0xE6, 0x42, 0x3B
-  },
-  {
-    0xE9, 0xE9, 0x8D, 0x6D, 0xE0, 0xEF, 0x53, 0xFD,
-    0x24, 0x27, 0x66, 0x1E, 0x1A, 0xCF, 0x10, 0x3D,
-    0x4C, 0xAA, 0x4D, 0xC6, 0x10, 0x03, 0x62, 0x09,
-    0xEC, 0x99, 0x74, 0x19, 0xC1, 0x20, 0x63, 0x1C,
-    0x2C, 0x09, 0x4A, 0x8E, 0xE7, 0x82, 0x2D, 0x43,
-    0xF8, 0x77, 0x80, 0x11, 0xC6, 0x03, 0x11, 0x1F,
-    0x26, 0x28, 0xF8, 0x97, 0xC9, 0xB4, 0x31, 0x31,
-    0x54, 0x77, 0x75, 0x6B, 0x03, 0x2E, 0x1F, 0x8D
-  },
-  {
-    0x52, 0xEB, 0x1E, 0x6C, 0x8A, 0x54, 0x49, 0x2C,
-    0xA7, 0x60, 0xB5, 0x6C, 0xA8, 0x7D, 0xA3, 0xE1,
-    0xA9, 0xA6, 0xD8, 0xA4, 0x21, 0x92, 0x19, 0x35,
-    0x1D, 0x18, 0x71, 0x5A, 0x9A, 0x2C, 0x26, 0x70,
-    0x8B, 0xB7, 0x12, 0xCD, 0xAC, 0x04, 0x34, 0x48,
-    0x2E, 0x55, 0x1C, 0xB0, 0x9E, 0x3F, 0x16, 0x33,
-    0x8D, 0xE2, 0x9B, 0xE2, 0xC6, 0x67, 0x40, 0xC3,
-    0x44, 0xDF, 0x54, 0x88, 0xC5, 0xC2, 0xBB, 0x26
-  },
-  {
-    0x47, 0x3F, 0xA6, 0xC5, 0x1A, 0x48, 0x10, 0x5F,
-    0x72, 0x1C, 0x5C, 0xB8, 0xDB, 0xA6, 0x1C, 0x64,
-    0xA1, 0xE3, 0xDD, 0xCC, 0xC3, 0x25, 0x0E, 0x68,
-    0x22, 0x62, 0xF2, 0x12, 0xC0, 0x1A, 0xB4, 0x87,
-    0x4A, 0xFF, 0x68, 0x8F, 0xEA, 0x96, 0x37, 0x73,
-    0x9E, 0x2A, 0x25, 0xD2, 0xEE, 0x88, 0xDB, 0xDC,
-    0xC4, 0xF0, 0x4D, 0x01, 0x47, 0x9B, 0x30, 0x17,
-    0x17, 0x53, 0x3A, 0x64, 0x32, 0xB8, 0x50, 0xCD
-  },
-  {
-    0x6B, 0x76, 0x60, 0xD4, 0x10, 0xEA, 0xE5, 0xF3,
-    0x5A, 0xD0, 0xAE, 0x85, 0xE6, 0x3D, 0xA4, 0x53,
-    0xEB, 0xB0, 0x57, 0xE4, 0x3F, 0x42, 0xE8, 0x42,
-    0xCB, 0xF6, 0x25, 0x0D, 0xA6, 0x78, 0x66, 0xB4,
-    0x24, 0x0D, 0x57, 0xC8, 0x3B, 0x77, 0x1B, 0x0F,
-    0x70, 0x66, 0x3E, 0x17, 0xFB, 0xD9, 0x08, 0x7F,
-    0x76, 0xB4, 0xCE, 0x6B, 0xCD, 0x0B, 0x50, 0x2E,
-    0x33, 0x74, 0xB1, 0x50, 0x9B, 0xBA, 0x55, 0xA8
-  },
-  {
-    0xA4, 0xD0, 0x8A, 0xCA, 0x7A, 0x9E, 0xA6, 0x43,
-    0x99, 0x99, 0xEA, 0x21, 0xE4, 0xCF, 0xE9, 0x86,
-    0x9B, 0xB9, 0x0E, 0x3A, 0x01, 0x48, 0x71, 0xAD,
-    0x88, 0xED, 0x3A, 0x97, 0xAA, 0x89, 0x15, 0x95,
-    0x1C, 0x3F, 0xD0, 0xB3, 0x93, 0x3A, 0x50, 0x85,
-    0x88, 0x93, 0x8A, 0xF7, 0x54, 0x49, 0x44, 0xEF,
-    0x43, 0xC4, 0x40, 0xAA, 0x8F, 0xF1, 0xE5, 0xA8,
-    0x18, 0xA4, 0x66, 0x43, 0x5D, 0xE7, 0x0F, 0xA8
-  },
-  {
-    0x85, 0xE0, 0xE9, 0xB5, 0x0D, 0x2D, 0xB0, 0x22,
-    0xC2, 0x39, 0xD7, 0x23, 0x2A, 0xE4, 0x7C, 0x02,
-    0x59, 0x22, 0xE4, 0xF0, 0x7E, 0x2A, 0xFC, 0x65,
-    0x6C, 0xDC, 0x55, 0x53, 0xA2, 0x7D, 0x95, 0xBF,
-    0xA5, 0x8A, 0x57, 0x4D, 0x4E, 0xC3, 0xA9, 0x73,
-    0x28, 0x1A, 0x8F, 0x4E, 0x46, 0xA7, 0x1A, 0xB0,
-    0x34, 0x1C, 0x25, 0x77, 0x28, 0x74, 0x63, 0xE2,
-    0x51, 0x04, 0x4D, 0xB2, 0x39, 0x8D, 0x55, 0xE2
-  },
-  {
-    0x81, 0xA0, 0xD0, 0x24, 0x42, 0x90, 0x51, 0x91,
-    0x16, 0x33, 0x70, 0xAE, 0x29, 0xC7, 0xF8, 0x9C,
-    0x0F, 0x48, 0xBC, 0x1A, 0x1E, 0xB2, 0x94, 0x70,
-    0x47, 0xDA, 0x1C, 0x62, 0x2B, 0x86, 0x77, 0xE9,
-    0xEA, 0x9B, 0xEC, 0xED, 0x55, 0xD3, 0x3A, 0xDB,
-    0x15, 0x53, 0xBD, 0x58, 0x4A, 0xD2, 0xF8, 0x6A,
-    0x62, 0x07, 0xE8, 0x4E, 0x40, 0xE4, 0x60, 0x7E,
-    0x11, 0x65, 0x0E, 0xE2, 0x87, 0x9F, 0x4E, 0x0B
-  },
-  {
-    0x87, 0x79, 0x0D, 0xF6, 0xCF, 0x73, 0x94, 0x45,
-    0x1B, 0xCC, 0x73, 0x0E, 0x53, 0xFC, 0x57, 0xBE,
-    0x56, 0x45, 0x22, 0x77, 0x1E, 0x14, 0x43, 0x2A,
-    0x80, 0xAB, 0x0B, 0x06, 0xB7, 0xB1, 0xD2, 0x09,
-    0xAD, 0x69, 0x89, 0x95, 0x12, 0x53, 0x85, 0xDB,
-    0x8B, 0x3C, 0x09, 0x59, 0xB8, 0xA5, 0x33, 0x9E,
-    0xDA, 0x0A, 0xE6, 0x78, 0x59, 0xD8, 0x47, 0xF4,
-    0x4C, 0x81, 0x59, 0x72, 0x72, 0xCB, 0xF1, 0x95
-  },
-  {
-    0xCC, 0x06, 0x4E, 0xA8, 0x53, 0xDC, 0x01, 0x52,
-    0xCC, 0x03, 0xFE, 0xB5, 0xFB, 0x5D, 0xE7, 0x8B,
-    0x9B, 0x88, 0xE9, 0x61, 0x55, 0xD5, 0x35, 0x8B,
-    0xCE, 0x84, 0xA5, 0x4C, 0x0E, 0x0C, 0x42, 0xFB,
-    0xDA, 0x09, 0x2F, 0x22, 0xD0, 0x56, 0xDF, 0x99,
-    0x93, 0x26, 0x2E, 0x2B, 0xA4, 0x4A, 0x5B, 0x2D,
-    0x53, 0xC3, 0x75, 0x9D, 0x09, 0x45, 0xFE, 0xBA,
-    0xA6, 0xFD, 0x51, 0xB8, 0xFF, 0x38, 0xD8, 0x39
-  },
-  {
-    0x7E, 0x51, 0x7F, 0xC3, 0x83, 0xEE, 0x8C, 0x9F,
-    0x0A, 0x01, 0x68, 0x1D, 0x39, 0xE7, 0x3B, 0xEB,
-    0xA5, 0x96, 0x95, 0x95, 0xCE, 0x77, 0x92, 0x7F,
-    0x91, 0x69, 0x1F, 0x33, 0xBB, 0x3E, 0x13, 0x07,
-    0xEE, 0x03, 0x61, 0x6C, 0x27, 0xE6, 0x79, 0x51,
-    0x86, 0xF6, 0x94, 0x0F, 0xED, 0xD9, 0xD5, 0xC7,
-    0xF2, 0x1B, 0x6D, 0x2A, 0xAF, 0x70, 0x29, 0x9C,
-    0xDD, 0x83, 0x51, 0x25, 0x05, 0x0A, 0x8B, 0x3C
-  },
-  {
-    0x84, 0x5F, 0xCF, 0xA6, 0x7F, 0x6E, 0x06, 0x55,
-    0x10, 0xD2, 0x62, 0xF1, 0xDD, 0x69, 0x39, 0xEA,
-    0x4C, 0x0A, 0x4A, 0x59, 0xC8, 0xEE, 0x39, 0x77,
-    0xDB, 0x70, 0x05, 0xE1, 0xAE, 0xE4, 0x20, 0xBD,
-    0x3F, 0x38, 0x26, 0xEC, 0xFE, 0x59, 0x01, 0x5B,
-    0x4D, 0xFA, 0x0B, 0xD5, 0xBB, 0xF8, 0xD8, 0xA4,
-    0x34, 0x48, 0x5D, 0xC1, 0x1C, 0xB9, 0xCC, 0x85,
-    0x97, 0xCB, 0x8C, 0x95, 0x66, 0x11, 0x5F, 0x31
-  },
-  {
-    0x17, 0xCF, 0x2C, 0x23, 0x21, 0x5B, 0xCD, 0xFC,
-    0x24, 0x3D, 0x8A, 0x94, 0x5F, 0x3C, 0x5C, 0x25,
-    0x1D, 0x27, 0x18, 0xA3, 0xF7, 0x5F, 0xED, 0x6F,
-    0x33, 0x20, 0xBC, 0xC6, 0xFD, 0x92, 0x73, 0x86,
-    0xD5, 0x6F, 0x87, 0x19, 0xCC, 0xA0, 0x2E, 0xC5,
-    0xE9, 0x9C, 0xDA, 0xC4, 0xEA, 0x10, 0x95, 0xB4,
-    0x65, 0xBA, 0x9A, 0x29, 0x8B, 0x1D, 0x23, 0x8E,
-    0x38, 0xB3, 0xFA, 0x15, 0xE8, 0xB1, 0x4E, 0xE4
-  },
-  {
-    0xD7, 0x89, 0xCE, 0xC7, 0xD7, 0x52, 0x0F, 0x10,
-    0xE8, 0xB8, 0xB6, 0xC8, 0x40, 0x95, 0x89, 0xDF,
-    0x57, 0xB8, 0x56, 0xB8, 0x24, 0x55, 0x68, 0xF6,
-    0x4E, 0x2D, 0x21, 0x83, 0xE3, 0x59, 0xA7, 0x84,
-    0xC8, 0xD2, 0x6C, 0xF9, 0xB7, 0x20, 0xF5, 0xDF,
-    0x56, 0x7B, 0x01, 0xF3, 0xF4, 0x8D, 0xE6, 0x4D,
-    0x4F, 0x0D, 0xB1, 0x56, 0xBE, 0x52, 0x5D, 0x7C,
-    0x7A, 0x66, 0x5A, 0xAD, 0xC5, 0x91, 0xF0, 0xB6
-  },
-  {
-    0xB5, 0xE2, 0x46, 0xA9, 0x02, 0x77, 0x10, 0xC0,
-    0xB0, 0x55, 0xC7, 0x1F, 0x11, 0x67, 0xE0, 0xEE,
-    0x36, 0xEB, 0xC4, 0x32, 0xCF, 0x5D, 0x14, 0x27,
-    0x75, 0xA7, 0xAE, 0xCC, 0xCE, 0xA7, 0x83, 0x25,
-    0xED, 0x8C, 0x12, 0xF5, 0x0F, 0xBE, 0x64, 0x8A,
-    0xDD, 0xF0, 0x59, 0xB8, 0xC0, 0x2A, 0x61, 0x49,
-    0x2F, 0x83, 0x57, 0xBE, 0xE1, 0x42, 0xE7, 0xF7,
-    0xDE, 0x04, 0x33, 0x78, 0xDB, 0xCF, 0x2D, 0x33
-  },
-  {
-    0xB5, 0x23, 0xFD, 0x77, 0xAB, 0x9E, 0xEE, 0x42,
-    0x48, 0x72, 0xBC, 0x2E, 0x83, 0xFC, 0x0A, 0x77,
-    0xFF, 0x8A, 0x90, 0xC9, 0xA0, 0xCE, 0x9E, 0x8C,
-    0x87, 0x68, 0x0A, 0x0F, 0x62, 0x86, 0x33, 0x1F,
-    0x15, 0xC9, 0x3A, 0x2A, 0xFE, 0xCF, 0x75, 0x66,
-    0x65, 0x3F, 0x24, 0xD9, 0x30, 0xC3, 0x23, 0x19,
-    0x2D, 0x30, 0x43, 0xB9, 0x05, 0x72, 0x1C, 0xBD,
-    0xB6, 0x31, 0x11, 0xCA, 0x42, 0xF2, 0x8F, 0x4E
-  },
-  {
-    0x43, 0x59, 0xA4, 0x58, 0x76, 0xBF, 0x6A, 0xCC,
-    0x0A, 0xEC, 0xE7, 0xB9, 0xB4, 0xB4, 0xA8, 0x38,
-    0xB9, 0xDB, 0xA5, 0x77, 0x6A, 0x3B, 0x14, 0xDA,
-    0x2F, 0xBA, 0x91, 0x02, 0xE7, 0x8B, 0xF6, 0x48,
-    0xFF, 0xB4, 0xD8, 0x67, 0xBA, 0xE8, 0x5F, 0xD9,
-    0xB7, 0x13, 0x12, 0xDC, 0x46, 0x02, 0xD0, 0xD4,
-    0x9C, 0x90, 0x7B, 0xB9, 0x28, 0x9B, 0x22, 0x95,
-    0x96, 0x1E, 0x54, 0x13, 0x81, 0x23, 0xF5, 0x4A
-  },
-  {
-    0xD3, 0xF2, 0xC8, 0xE7, 0x4F, 0x34, 0x3A, 0x4E,
-    0x71, 0x90, 0xD4, 0x75, 0xCF, 0x9A, 0xF7, 0x54,
-    0xEE, 0xD5, 0x57, 0x72, 0x62, 0xB3, 0x5B, 0xD9,
-    0xA9, 0xC4, 0x2B, 0x58, 0xCE, 0x88, 0x26, 0x2E,
-    0x31, 0x14, 0x91, 0x7F, 0xB9, 0xE6, 0x83, 0xC6,
-    0x2D, 0x9F, 0x89, 0x47, 0xB5, 0x8A, 0x29, 0x4D,
-    0xA5, 0x06, 0xFB, 0x86, 0xB3, 0xED, 0xF2, 0x5C,
-    0xB9, 0xE2, 0xD2, 0xDF, 0x61, 0x1C, 0xD4, 0x48
-  },
-  {
-    0x41, 0xB8, 0x90, 0xF8, 0xE8, 0x45, 0x0D, 0xAD,
-    0xB6, 0x95, 0x9A, 0xCC, 0xBA, 0x19, 0x49, 0x17,
-    0xE0, 0x2F, 0x30, 0x67, 0x82, 0x1D, 0x4E, 0x99,
-    0x5A, 0x37, 0xAC, 0x18, 0xBA, 0x3E, 0x47, 0xC7,
-    0x50, 0x6E, 0x7A, 0x3D, 0xD1, 0xE1, 0x12, 0xE6,
-    0xEC, 0x41, 0xBE, 0xF5, 0x30, 0x85, 0x11, 0x20,
-    0x89, 0x4A, 0x7B, 0x34, 0xB3, 0xDB, 0xCD, 0xAE,
-    0x40, 0x73, 0x27, 0xF0, 0xC5, 0x73, 0x6E, 0xDF
-  },
-  {
-    0x19, 0xD7, 0x14, 0x4F, 0x0C, 0x85, 0x1E, 0xB8,
-    0xB0, 0x53, 0xA3, 0xA4, 0x35, 0x86, 0x52, 0x6D,
-    0xC5, 0xC7, 0x73, 0xE4, 0x97, 0x97, 0x51, 0x64,
-    0xD1, 0x11, 0x51, 0x36, 0x43, 0x68, 0xDF, 0x24,
-    0xBC, 0x44, 0xD5, 0x36, 0x07, 0x23, 0x04, 0xD7,
-    0x06, 0x31, 0xA8, 0x40, 0xB6, 0x36, 0xB9, 0x66,
-    0xFD, 0x02, 0x8F, 0x61, 0x06, 0x2B, 0xFC, 0x52,
-    0x85, 0x67, 0x01, 0x53, 0xA6, 0x36, 0x3A, 0x0A
-  },
-  {
-    0xC2, 0x18, 0x4C, 0x1A, 0x81, 0xE9, 0x83, 0xBE,
-    0x2C, 0x96, 0xE4, 0xCF, 0xD6, 0x5A, 0xFB, 0xDA,
-    0x1A, 0xC6, 0xEF, 0x35, 0x26, 0x6E, 0xE4, 0xB3,
-    0xAB, 0x1F, 0xB0, 0x3A, 0xBA, 0xDD, 0xFD, 0xD4,
-    0x03, 0xFF, 0xFC, 0xAF, 0xB4, 0xAD, 0xE0, 0xE9,
-    0x2D, 0xA3, 0x82, 0xDA, 0x8C, 0x40, 0x22, 0x2E,
-    0x10, 0xE9, 0xFD, 0xE8, 0x56, 0xC5, 0x1B, 0xDA,
-    0xCD, 0xE7, 0x41, 0xA6, 0x49, 0xF7, 0x33, 0x5D
-  },
-  {
-    0x48, 0x8C, 0x0D, 0x65, 0x2E, 0x42, 0xFD, 0x78,
-    0xAB, 0x3A, 0x2D, 0xC2, 0x8C, 0xF3, 0xEB, 0x35,
-    0xFC, 0xDD, 0xC8, 0xDE, 0xF7, 0xEA, 0xD4, 0x81,
-    0x7B, 0xFF, 0xB6, 0x4C, 0x1A, 0xE0, 0xF2, 0x08,
-    0xF7, 0x8C, 0xF4, 0x09, 0x76, 0xF7, 0xE2, 0xA2,
-    0xCB, 0x2D, 0xD3, 0x0F, 0x1C, 0x99, 0x13, 0x02,
-    0x08, 0xCE, 0xB6, 0x92, 0xC6, 0x68, 0x80, 0xD9,
-    0x52, 0x8C, 0xD6, 0xD3, 0x8A, 0xD2, 0x9D, 0xB2
-  },
-  {
-    0x51, 0x5B, 0x65, 0xBF, 0x65, 0x68, 0x83, 0x99,
-    0x57, 0x5F, 0x0E, 0x06, 0x77, 0xBB, 0x6A, 0x91,
-    0x9B, 0x66, 0x33, 0x55, 0x46, 0xD6, 0xCA, 0xE3,
-    0x36, 0xF5, 0xC6, 0xFE, 0xAE, 0x5E, 0x2B, 0xF7,
-    0x45, 0xE3, 0xA7, 0xB1, 0x3C, 0x32, 0x05, 0xDD,
-    0x8B, 0x5B, 0x92, 0xCF, 0x05, 0x3B, 0xE9, 0x69,
-    0xDF, 0x71, 0x20, 0xFC, 0xEF, 0x77, 0xE3, 0x89,
-    0x5F, 0x56, 0x0F, 0xD2, 0x32, 0xFB, 0x89, 0x50
-  },
-  {
-    0x3F, 0xDB, 0xC7, 0xD6, 0x9F, 0x4B, 0x53, 0xC2,
-    0x25, 0x66, 0x3D, 0xA3, 0x0D, 0x80, 0xF7, 0x2E,
-    0x54, 0x28, 0x10, 0x44, 0xA2, 0x2B, 0x98, 0x82,
-    0xC6, 0x63, 0x8F, 0x55, 0x26, 0x83, 0x4B, 0xD3,
-    0x16, 0x01, 0xCA, 0x5E, 0xB2, 0xCC, 0xA4, 0xF5,
-    0xFF, 0xCF, 0x67, 0x5D, 0xCB, 0xCF, 0xCA, 0x60,
-    0xC8, 0xA3, 0x61, 0x2D, 0x1A, 0xA9, 0xDA, 0xB6,
-    0x93, 0xB2, 0x35, 0x60, 0x69, 0x60, 0x3A, 0x0E
-  },
-  {
-    0x4F, 0xF6, 0xC3, 0x1A, 0x8F, 0xC0, 0x01, 0xAC,
-    0x3B, 0x7A, 0xE0, 0x20, 0xC5, 0xF7, 0xC4, 0x5E,
-    0xFB, 0x62, 0x71, 0xA2, 0xD7, 0xCC, 0xAB, 0x87,
-    0x13, 0xE5, 0x48, 0xB7, 0x29, 0xF0, 0xFF, 0xF9,
-    0xC8, 0x2F, 0xD4, 0xDB, 0x5C, 0xF6, 0x56, 0x43,
-    0xD4, 0x07, 0x6A, 0x3F, 0xB1, 0x7B, 0x3E, 0x89,
-    0x3C, 0x30, 0x2D, 0xC7, 0x5B, 0x61, 0x22, 0xFF,
-    0x86, 0x81, 0xD0, 0x37, 0x12, 0x0E, 0x27, 0x6A
-  },
-  {
-    0x43, 0xDF, 0xF2, 0x60, 0xDF, 0xEF, 0x1C, 0xB2,
-    0xD6, 0x16, 0x00, 0xE2, 0x40, 0xAA, 0xD6, 0xB7,
-    0x20, 0xE5, 0xF4, 0xF8, 0x30, 0x86, 0xE2, 0x6A,
-    0x49, 0xA0, 0xCE, 0x3E, 0x0C, 0xA4, 0x4B, 0x9A,
-    0x60, 0xFC, 0xF4, 0x6A, 0x8C, 0x3F, 0x1B, 0xB1,
-    0xA6, 0xF5, 0x76, 0x2B, 0x66, 0x51, 0x3F, 0xE3,
-    0xF7, 0xC5, 0xB0, 0xBC, 0x15, 0x0C, 0x08, 0x49,
-    0x1A, 0xCB, 0xC4, 0x36, 0x1C, 0xAB, 0xCF, 0xDF
-  },
-  {
-    0xB4, 0xDE, 0xA9, 0x4C, 0x9D, 0x36, 0x75, 0xBE,
-    0x05, 0x12, 0xEF, 0xDE, 0xA8, 0x16, 0x38, 0x70,
-    0xFE, 0x34, 0x25, 0xDC, 0xD7, 0x61, 0xF3, 0x63,
-    0xC4, 0x3A, 0x0C, 0xA5, 0x71, 0x6B, 0x76, 0x54,
-    0x06, 0x63, 0xFB, 0x2B, 0xE4, 0x9E, 0x2D, 0xB1,
-    0x06, 0x48, 0x5C, 0x9C, 0xDD, 0x3C, 0x16, 0x48,
-    0x98, 0xA9, 0x54, 0xB5, 0x87, 0x48, 0xC4, 0x2F,
-    0xEA, 0x16, 0xA4, 0x0F, 0xC4, 0x53, 0xD2, 0x10
-  },
-  {
-    0xE5, 0x27, 0x7B, 0x6F, 0x93, 0xEA, 0x1D, 0xE3,
-    0xE2, 0xD9, 0xFC, 0xD8, 0xC6, 0x79, 0x79, 0x3C,
-    0x6C, 0xCB, 0x8A, 0x3B, 0xE2, 0x6E, 0x8E, 0x31,
-    0x14, 0xF3, 0x5D, 0xA4, 0xF2, 0xAC, 0x01, 0x4F,
-    0x55, 0xC2, 0xF1, 0x5E, 0x09, 0xE9, 0x4A, 0xA0,
-    0x71, 0x29, 0x81, 0x67, 0xA2, 0xFB, 0x9B, 0xE3,
-    0x11, 0x70, 0x1F, 0xFB, 0xA9, 0xD3, 0xEE, 0xFF,
-    0x8F, 0xFC, 0x79, 0x93, 0xA3, 0xCE, 0xCE, 0x18
-  },
-  {
-    0xF0, 0x95, 0xA7, 0xC6, 0xE2, 0xB9, 0x16, 0x64,
-    0x73, 0x4F, 0x3E, 0x23, 0xF1, 0x8E, 0xB2, 0xBA,
-    0x9B, 0x00, 0xE7, 0x1F, 0xBF, 0xCB, 0x99, 0x31,
-    0xC0, 0xA6, 0x14, 0x79, 0x2A, 0x9D, 0x86, 0x75,
-    0x62, 0x2A, 0x87, 0x4C, 0x1B, 0xF5, 0x24, 0x1A,
-    0x2A, 0x87, 0x41, 0xED, 0x1C, 0x89, 0x3B, 0xDF,
-    0xA8, 0xE2, 0x8C, 0x2E, 0x20, 0xBB, 0x1C, 0x58,
-    0xEB, 0x4D, 0xE7, 0xD8, 0x01, 0x11, 0x6C, 0x78
-  },
-  {
-    0xDF, 0xA1, 0xFD, 0x80, 0x3A, 0x1D, 0x4A, 0x3E,
-    0x66, 0x1D, 0xF0, 0x1F, 0x49, 0x43, 0xEA, 0x66,
-    0x26, 0x0A, 0x18, 0xFE, 0xCE, 0x13, 0x4D, 0x62,
-    0xF9, 0x7D, 0xAC, 0xDB, 0x8B, 0x3B, 0xF9, 0xC8,
-    0x00, 0xAF, 0xE5, 0x79, 0xCF, 0xD1, 0x3F, 0xC0,
-    0x14, 0x8B, 0xDE, 0xFB, 0xFF, 0x4E, 0x76, 0x83,
-    0x56, 0x1C, 0x06, 0xA6, 0xF7, 0x22, 0x5E, 0x47,
-    0x81, 0x99, 0x3B, 0x4F, 0x4F, 0x2B, 0xCB, 0xFA
-  },
-  {
-    0x2B, 0x86, 0xCE, 0xB2, 0x70, 0xF6, 0x90, 0x8D,
-    0x8B, 0x16, 0x00, 0x75, 0xEA, 0x7F, 0x57, 0x16,
-    0x3A, 0xF5, 0xD5, 0xC6, 0xF8, 0xAA, 0xC5, 0x20,
-    0x40, 0xCC, 0x68, 0x7C, 0x17, 0xAB, 0xF3, 0xC7,
-    0x78, 0xC1, 0x39, 0x06, 0xE0, 0xE6, 0xF2, 0x9A,
-    0x6A, 0xB1, 0x23, 0xDE, 0xEB, 0xCE, 0x39, 0x1F,
-    0x90, 0x7D, 0x75, 0xD3, 0xA2, 0xCE, 0xFA, 0x0E,
-    0xFC, 0xB8, 0x80, 0xA0, 0xE7, 0x0D, 0x71, 0x96
-  },
-  {
-    0x32, 0x46, 0x6B, 0xCB, 0xDE, 0xD5, 0x38, 0xE5,
-    0x68, 0x79, 0x54, 0x30, 0x35, 0x25, 0x36, 0xFE,
-    0xB9, 0x19, 0xBF, 0x4D, 0x97, 0xCC, 0x44, 0xAB,
-    0x1D, 0x80, 0x50, 0x40, 0xF4, 0xBC, 0x4C, 0x2E,
-    0x79, 0x52, 0x72, 0x10, 0x18, 0x95, 0x8B, 0x4E,
-    0xE7, 0x83, 0x03, 0x59, 0x0E, 0xF6, 0xAC, 0x45,
-    0x0D, 0xF9, 0x2E, 0xC7, 0x7F, 0x47, 0x70, 0x54,
-    0xBF, 0xF8, 0x67, 0xB8, 0x89, 0x71, 0xD4, 0x21
-  },
-  {
-    0xEA, 0x64, 0xB0, 0x03, 0xA1, 0x35, 0x76, 0x61,
-    0x21, 0xCF, 0xBC, 0xCB, 0xDC, 0x08, 0xDC, 0xA2,
-    0x40, 0x29, 0x26, 0xBE, 0x78, 0xCE, 0xA3, 0xD0,
-    0xA7, 0x25, 0x3D, 0x9E, 0xC9, 0xE6, 0x3B, 0x8A,
-    0xCD, 0xD9, 0x94, 0x55, 0x99, 0x17, 0xE0, 0xE0,
-    0x3B, 0x5E, 0x15, 0x5F, 0x94, 0x4D, 0x71, 0x98,
-    0xD9, 0x92, 0x45, 0xA7, 0x94, 0xCE, 0x19, 0xC9,
-    0xB4, 0xDF, 0x4D, 0xA4, 0xA3, 0x39, 0x93, 0x34
-  },
-  {
-    0x05, 0xAD, 0x0F, 0x27, 0x1F, 0xAF, 0x7E, 0x36,
-    0x13, 0x20, 0x51, 0x84, 0x52, 0x81, 0x3F, 0xF9,
-    0xFB, 0x99, 0x76, 0xAC, 0x37, 0x80, 0x50, 0xB6,
-    0xEE, 0xFB, 0x05, 0xF7, 0x86, 0x7B, 0x57, 0x7B,
-    0x8F, 0x14, 0x47, 0x57, 0x94, 0xCF, 0xF6, 0x1B,
-    0x2B, 0xC0, 0x62, 0xD3, 0x46, 0xA7, 0xC6, 0x5C,
-    0x6E, 0x00, 0x67, 0xC6, 0x0A, 0x37, 0x4A, 0xF7,
-    0x94, 0x0F, 0x10, 0xAA, 0x44, 0x9D, 0x5F, 0xB9
-  },
-  {
-    0xB5, 0x45, 0x88, 0x02, 0x94, 0xAF, 0xA1, 0x53,
-    0xF8, 0xB9, 0xF4, 0x9C, 0x73, 0xD9, 0x52, 0xB5,
-    0xD1, 0x22, 0x8F, 0x1A, 0x1A, 0xB5, 0xEB, 0xCB,
-    0x05, 0xFF, 0x79, 0xE5, 0x60, 0xC0, 0x30, 0xF7,
-    0x50, 0x0F, 0xE2, 0x56, 0xA4, 0x0B, 0x6A, 0x0E,
-    0x6C, 0xB3, 0xD4, 0x2A, 0xCD, 0x4B, 0x98, 0x59,
-    0x5C, 0x5B, 0x51, 0xEA, 0xEC, 0x5A, 0xD6, 0x9C,
-    0xD4, 0x0F, 0x1F, 0xC1, 0x6D, 0x2D, 0x5F, 0x50
-  },
-  {
-    0xBB, 0xFB, 0x94, 0x77, 0xEC, 0x6A, 0x9F, 0x0C,
-    0x25, 0x40, 0x5A, 0xCD, 0x8A, 0x30, 0xD5, 0xDD,
-    0x7C, 0x73, 0x57, 0x1F, 0x1D, 0x1A, 0x6E, 0x8C,
-    0xE7, 0x2F, 0x8B, 0x9C, 0x94, 0x1C, 0xF7, 0x79,
-    0xB7, 0x64, 0x03, 0xAC, 0x7F, 0x04, 0x50, 0x05,
-    0x25, 0x84, 0x39, 0x0A, 0x14, 0xEA, 0xA3, 0x7C,
-    0x20, 0xB5, 0xBD, 0xB0, 0x38, 0x10, 0x54, 0xA9,
-    0xA4, 0x95, 0x34, 0xF8, 0x14, 0x66, 0xBA, 0x9D
-  },
-  {
-    0xC8, 0x28, 0x7E, 0x93, 0x3D, 0x95, 0x04, 0xBF,
-    0xFD, 0x7B, 0xE2, 0xAC, 0x02, 0x2B, 0x32, 0xF3,
-    0xF4, 0x6D, 0x87, 0xA7, 0xA0, 0xE7, 0x9B, 0xB2,
-    0xA1, 0xCB, 0xAA, 0xCC, 0x2E, 0x84, 0xCD, 0x70,
-    0x84, 0x5D, 0x0D, 0x42, 0x78, 0x48, 0xA6, 0xD7,
-    0x88, 0xD3, 0x96, 0x22, 0xE1, 0x0F, 0x43, 0x42,
-    0x23, 0x7E, 0xEF, 0xA6, 0xD3, 0xC0, 0x12, 0xDA,
-    0xE9, 0x6C, 0xC8, 0xA6, 0x50, 0xCC, 0x2E, 0x30
-  },
-  {
-    0xC4, 0x59, 0x6F, 0xCB, 0x0A, 0x28, 0xD2, 0x4A,
-    0xAD, 0x70, 0xCF, 0x18, 0x53, 0xEC, 0x29, 0xDA,
-    0xC0, 0xFB, 0x20, 0x2D, 0x8E, 0xC1, 0x40, 0xDA,
-    0x30, 0x00, 0x88, 0xBB, 0x85, 0xB9, 0x2C, 0x30,
-    0x29, 0x19, 0x46, 0xAD, 0x30, 0x7C, 0x09, 0x6E,
-    0x3B, 0x28, 0x66, 0x33, 0x5C, 0x93, 0x17, 0xAF,
-    0xE2, 0x8C, 0xAD, 0xAB, 0x5D, 0x62, 0xC3, 0x54,
-    0x32, 0x9C, 0x98, 0xD9, 0x93, 0xC5, 0xBE, 0x1C
-  },
-  {
-    0xE8, 0x8C, 0x38, 0xE6, 0x7E, 0x8D, 0x19, 0x83,
-    0x58, 0x08, 0x85, 0x46, 0x70, 0x77, 0x9E, 0xCA,
-    0x60, 0xBA, 0xD8, 0x54, 0xC5, 0x77, 0x87, 0x90,
-    0xA0, 0x72, 0x54, 0xA3, 0x0A, 0x14, 0xAE, 0x82,
-    0xB6, 0x1B, 0xB1, 0x69, 0x11, 0xFE, 0x57, 0x77,
-    0x1D, 0x19, 0xE9, 0xB7, 0xF5, 0x02, 0x3C, 0x0D,
-    0x4E, 0x8A, 0x8D, 0x37, 0x2E, 0x3D, 0x85, 0xE4,
-    0x3B, 0x03, 0xE5, 0xE0, 0x0E, 0x6E, 0xBA, 0x4B
-  },
-  {
-    0x2D, 0x66, 0x3E, 0x03, 0xE6, 0xF3, 0x55, 0x2C,
-    0xCD, 0xFB, 0xA4, 0x96, 0xA1, 0x4C, 0xC6, 0x22,
-    0x4C, 0xEB, 0x1E, 0xB6, 0x1A, 0xA2, 0x65, 0xE6,
-    0xA7, 0xD4, 0xA2, 0x6E, 0x54, 0x10, 0x61, 0x04,
-    0xA9, 0x6E, 0x33, 0x09, 0x59, 0xF9, 0x71, 0x3B,
-    0x34, 0x87, 0xC1, 0xB9, 0x49, 0x7C, 0xCF, 0x82,
-    0x61, 0x1D, 0xBF, 0xA3, 0x4F, 0xF1, 0x1D, 0x31,
-    0x33, 0xB5, 0xB5, 0xD1, 0xF1, 0xE4, 0xF8, 0xD0
-  },
-  {
-    0x70, 0x7D, 0x6A, 0x58, 0x42, 0x1B, 0x8F, 0x7E,
-    0x44, 0xFF, 0x1F, 0x83, 0x62, 0xBC, 0x70, 0x0F,
-    0x71, 0xEF, 0x7C, 0x39, 0x35, 0xE0, 0x76, 0x4B,
-    0xD1, 0x4D, 0x39, 0x0C, 0x1C, 0x72, 0x79, 0x2A,
-    0xF9, 0xC2, 0xC0, 0x2F, 0xB7, 0x2A, 0x2B, 0x9D,
-    0x9A, 0x07, 0x29, 0xCB, 0x3E, 0x99, 0x62, 0x6C,
-    0xF0, 0x34, 0xDF, 0x54, 0xB5, 0x06, 0xB5, 0xB1,
-    0x64, 0x64, 0xF4, 0x75, 0x86, 0x4F, 0x25, 0x90
-  },
-  {
-    0x9D, 0x88, 0xF8, 0xBA, 0xA4, 0xEB, 0x0F, 0x9A,
-    0xB2, 0x29, 0x2E, 0x49, 0x82, 0xAC, 0x80, 0x44,
-    0x53, 0x58, 0x22, 0x7D, 0x7F, 0x9C, 0xE7, 0xA4,
-    0xA6, 0x29, 0xF1, 0x80, 0xF7, 0x14, 0x1E, 0x08,
-    0xFE, 0x63, 0x55, 0xC6, 0x45, 0x21, 0xA6, 0x9B,
-    0xA2, 0xBF, 0xBD, 0x1C, 0x4A, 0x3E, 0xA0, 0x48,
-    0xD0, 0xBC, 0x8A, 0xB3, 0x70, 0x1F, 0x30, 0xEA,
-    0x83, 0xFB, 0xE0, 0x24, 0x74, 0xD8, 0x92, 0xBF
-  },
-  {
-    0x65, 0xEA, 0x4D, 0xB0, 0x4A, 0x75, 0x81, 0xC1,
-    0x81, 0x94, 0xA8, 0x92, 0x1A, 0xFD, 0xFA, 0x4F,
-    0x8D, 0x9A, 0xF6, 0x29, 0xDE, 0xD2, 0x77, 0x2C,
-    0x65, 0x8E, 0x08, 0x48, 0x5F, 0x67, 0xAD, 0x2C,
-    0xE2, 0x1A, 0x98, 0xCD, 0x29, 0x3F, 0xF2, 0x8D,
-    0x4D, 0xFC, 0xDF, 0x65, 0x8C, 0xDC, 0x7A, 0xE6,
-    0x70, 0x27, 0x84, 0x8E, 0x71, 0xCC, 0xC1, 0x15,
-    0xA3, 0xFF, 0xBA, 0xC4, 0xFA, 0x61, 0xBB, 0x73
-  },
-  {
-    0x0B, 0x4A, 0x68, 0x92, 0x9E, 0x7F, 0x15, 0xCA,
-    0x91, 0xBB, 0x44, 0x39, 0xF2, 0x40, 0x37, 0x02,
-    0x03, 0x4C, 0xD4, 0x74, 0x8E, 0x46, 0x92, 0x7A,
-    0xBA, 0x95, 0xCB, 0xEF, 0x80, 0x04, 0x8B, 0x25,
-    0xA6, 0x75, 0x97, 0x0F, 0xAC, 0x33, 0xC8, 0x74,
-    0xAB, 0xD3, 0xD8, 0x3A, 0xA0, 0xF3, 0x7B, 0xE2,
-    0x30, 0x83, 0x10, 0xE8, 0xDD, 0x79, 0x4F, 0x81,
-    0x92, 0x93, 0x0E, 0xD5, 0x6E, 0x70, 0xA8, 0xE4
-  },
-  {
-    0xC1, 0xC5, 0xD8, 0xAC, 0xFE, 0x3F, 0xDE, 0x67,
-    0x4E, 0xDD, 0x36, 0x20, 0x15, 0x7A, 0x8B, 0x6B,
-    0x4C, 0x8E, 0x67, 0xC6, 0xA7, 0xA9, 0x72, 0x67,
-    0x41, 0xD9, 0xC3, 0x05, 0xE2, 0xA5, 0x2A, 0x87,
-    0x97, 0xFD, 0xA0, 0xB2, 0xF1, 0x3A, 0xC7, 0x87,
-    0x34, 0xDB, 0x2F, 0x4F, 0xC8, 0x3E, 0xF3, 0x24,
-    0x14, 0xD9, 0x31, 0xEB, 0xAE, 0xAE, 0xCD, 0x82,
-    0x6D, 0x7C, 0x2B, 0xE2, 0x03, 0xBD, 0xC2, 0xD1
-  },
-  {
-    0x2D, 0xAD, 0xC8, 0xC9, 0xF7, 0x42, 0x5A, 0x01,
-    0x14, 0x49, 0x12, 0x87, 0xBD, 0xC6, 0x8E, 0xAE,
-    0x4F, 0xB6, 0x19, 0x4D, 0x1A, 0x10, 0x9D, 0xB9,
-    0xB6, 0xE8, 0xA2, 0xAC, 0x94, 0xD4, 0xE4, 0x40,
-    0x90, 0x99, 0x85, 0xC4, 0x29, 0x1F, 0xE8, 0x9F,
-    0xD8, 0x28, 0x1F, 0x8F, 0xCE, 0xF6, 0xF6, 0xBC,
-    0x32, 0x55, 0x0E, 0x53, 0xCB, 0x7A, 0x49, 0x42,
-    0x89, 0x81, 0xE8, 0xD5, 0x3C, 0xF5, 0xA2, 0x12
-  },
-  {
-    0xE5, 0x55, 0xF2, 0xA5, 0x8A, 0xCA, 0xC5, 0x50,
-    0x3F, 0x9E, 0x2D, 0x97, 0xB2, 0x46, 0x87, 0x2B,
-    0x4C, 0xA7, 0x8B, 0xD5, 0x6D, 0x47, 0xB7, 0x65,
-    0xF0, 0x52, 0xAA, 0xB3, 0xDC, 0x77, 0xDB, 0xE9,
-    0x93, 0x93, 0x6F, 0x22, 0x52, 0xF0, 0xAB, 0x2E,
-    0x01, 0xFB, 0x08, 0x74, 0x72, 0xCC, 0xB5, 0xA1,
-    0x21, 0xDD, 0xFF, 0xDE, 0x53, 0x1D, 0x3D, 0xC4,
-    0x02, 0x2A, 0x7D, 0x19, 0x56, 0xCE, 0x0E, 0x20
-  },
-  {
-    0x9B, 0x4E, 0xAE, 0x12, 0x95, 0x00, 0x0A, 0xEA,
-    0x79, 0x83, 0xEC, 0x3B, 0xCB, 0x48, 0x57, 0xCC,
-    0x71, 0x25, 0xFD, 0x73, 0x06, 0x78, 0x7C, 0x63,
-    0x13, 0x24, 0x73, 0xCF, 0xE8, 0xF4, 0xEB, 0x45,
-    0x31, 0x8A, 0x60, 0xDA, 0xAD, 0x64, 0x6D, 0x63,
-    0xA2, 0x7C, 0x4B, 0x9D, 0x1F, 0x50, 0x73, 0x70,
-    0x0A, 0x30, 0x57, 0xDE, 0x22, 0xA7, 0xFD, 0xF0,
-    0x9A, 0x87, 0xAA, 0xC6, 0x6E, 0xBE, 0x47, 0x58
-  },
-  {
-    0x96, 0x64, 0xAC, 0xC2, 0xDC, 0x72, 0x98, 0xB9,
-    0x86, 0x8D, 0xB4, 0x95, 0xEE, 0xBC, 0x6B, 0x59,
-    0x65, 0x7D, 0x13, 0x9A, 0x6A, 0xF0, 0x60, 0xA7,
-    0x2F, 0xB6, 0x91, 0x24, 0xBD, 0xD3, 0xA6, 0x59,
-    0x18, 0x88, 0xF0, 0x35, 0x4F, 0x70, 0x2B, 0x1B,
-    0x88, 0x86, 0x84, 0x41, 0x10, 0x58, 0xA3, 0x75,
-    0x9F, 0x7F, 0xD3, 0x7F, 0x06, 0xEA, 0xFB, 0x3B,
-    0x58, 0xEC, 0xF2, 0x6F, 0x45, 0x53, 0xBE, 0x27
-  },
-  {
-    0xFC, 0x16, 0xE0, 0x92, 0x5A, 0x35, 0xAA, 0xD4,
-    0x7A, 0xD6, 0x95, 0x54, 0xB2, 0x57, 0x96, 0xFC,
-    0xF9, 0x26, 0x0C, 0xB5, 0x0E, 0x6C, 0xC3, 0x74,
-    0x75, 0x35, 0x55, 0x9E, 0x99, 0xC8, 0x58, 0x81,
-    0xC7, 0x58, 0x89, 0xAC, 0x79, 0x3A, 0xB7, 0x8B,
-    0x88, 0xB0, 0x5F, 0xB1, 0x60, 0x89, 0x56, 0x55,
-    0xE4, 0xD6, 0x63, 0xA2, 0xA0, 0x9B, 0xA9, 0xFA,
-    0x61, 0x4A, 0x10, 0xC2, 0x29, 0x47, 0x21, 0x0D
-  },
-  {
-    0x22, 0x5E, 0x73, 0x41, 0xF8, 0x57, 0x52, 0x4F,
-    0x78, 0x90, 0x37, 0x6C, 0x50, 0xE6, 0x35, 0x4B,
-    0x16, 0xC1, 0xCD, 0xFB, 0xF5, 0x8F, 0xE5, 0xF3,
-    0xA4, 0x03, 0x94, 0x93, 0xB5, 0xDD, 0x40, 0x8D,
-    0x79, 0xD4, 0x8C, 0x56, 0xE1, 0xF8, 0x9B, 0x68,
-    0x7F, 0xBE, 0x33, 0x62, 0xA7, 0x7F, 0xA7, 0x5A,
-    0x54, 0x37, 0x4B, 0x7A, 0x48, 0x5E, 0x91, 0xB1,
-    0x89, 0xAF, 0x2E, 0x2F, 0x74, 0x9E, 0x2A, 0xDB
-  },
-  {
-    0xA0, 0x7A, 0x4C, 0x02, 0x3A, 0xC7, 0x04, 0xCE,
-    0x7C, 0x09, 0xDD, 0x6C, 0x92, 0xC6, 0xF1, 0x84,
-    0xF5, 0x3E, 0x8D, 0xD9, 0x6F, 0xE3, 0xBE, 0x9E,
-    0x93, 0xC3, 0x9C, 0x53, 0x44, 0x85, 0xB6, 0x4B,
-    0x39, 0xD5, 0xBE, 0x7F, 0x7B, 0x71, 0x70, 0x60,
-    0x4D, 0xE7, 0x7C, 0xE5, 0xA4, 0x37, 0xA9, 0x8E,
-    0x71, 0x2C, 0xC4, 0x4F, 0x19, 0xE2, 0x1D, 0x41,
-    0xF0, 0xE6, 0xE3, 0xEC, 0x1E, 0x00, 0xAC, 0x55
-  },
-  {
-    0x62, 0x85, 0x84, 0x63, 0x58, 0x2D, 0x22, 0xE6,
-    0x8E, 0x52, 0x27, 0xBF, 0xBA, 0xB5, 0x40, 0x04,
-    0x8F, 0x65, 0xED, 0xD6, 0xA6, 0x75, 0x5F, 0x6F,
-    0xAB, 0x53, 0xC0, 0x25, 0xB6, 0x63, 0xCA, 0x37,
-    0x7A, 0x0E, 0xD5, 0xEF, 0xD6, 0xAF, 0x16, 0x6C,
-    0xA5, 0x5A, 0x9C, 0x73, 0x3F, 0xCA, 0x80, 0x5A,
-    0xC4, 0xE4, 0x09, 0xCA, 0x56, 0x17, 0x7A, 0xA7,
-    0x49, 0x40, 0xDB, 0x9F, 0x40, 0xC3, 0xB9, 0xFF
-  },
-  {
-    0xA1, 0xAC, 0x53, 0x9D, 0x1A, 0xBB, 0xC2, 0xB0,
-    0x96, 0xFF, 0xAB, 0x81, 0x3B, 0x64, 0x45, 0x7F,
-    0xE6, 0xEB, 0x3B, 0x50, 0xFC, 0xD8, 0x89, 0x53,
-    0xD0, 0xCD, 0x9F, 0x65, 0x02, 0xF6, 0x89, 0x62,
-    0x0A, 0xD4, 0x42, 0xB5, 0x51, 0x70, 0x90, 0xB5,
-    0x0C, 0xFF, 0xB9, 0x58, 0x86, 0x6D, 0x7C, 0x16,
-    0x1D, 0x8A, 0x7D, 0x75, 0x60, 0xC8, 0x93, 0xE1,
-    0xDE, 0xF6, 0xAE, 0xC4, 0x37, 0xAD, 0x6D, 0x06
-  },
-  {
-    0xB5, 0x86, 0xB7, 0x5D, 0xA7, 0x0F, 0x6C, 0xC0,
-    0x62, 0x7E, 0xF3, 0xCF, 0x12, 0x37, 0xC9, 0x4B,
-    0x12, 0xD0, 0xF7, 0x4D, 0xCB, 0xA2, 0x6A, 0x9E,
-    0x7C, 0x7B, 0xC6, 0xC2, 0x1A, 0x33, 0x53, 0x37,
-    0xBF, 0x9F, 0x5B, 0x83, 0x0C, 0x63, 0x24, 0xAF,
-    0xA6, 0xEF, 0x64, 0x9E, 0x95, 0xAF, 0x87, 0x90,
-    0x87, 0x52, 0x34, 0xC6, 0xE6, 0x61, 0xD3, 0xF5,
-    0xE9, 0x8C, 0xA0, 0x12, 0xAE, 0x81, 0x48, 0x8A
-  },
-  {
-    0x56, 0x68, 0xA2, 0x98, 0x21, 0x37, 0xCB, 0xC6,
-    0x22, 0xEF, 0x8D, 0x06, 0xCF, 0x4E, 0x86, 0x16,
-    0x8C, 0xDD, 0x4A, 0x89, 0x9C, 0xD4, 0x46, 0x2A,
-    0xF6, 0xC3, 0xD4, 0x15, 0x42, 0x61, 0x56, 0xA5,
-    0xD8, 0xDD, 0x67, 0xC9, 0x60, 0x4F, 0x31, 0xB5,
-    0x7D, 0x6C, 0x9D, 0x59, 0x72, 0x50, 0x45, 0x7E,
-    0x4A, 0xB5, 0x2A, 0x58, 0x11, 0x55, 0x42, 0xAC,
-    0xF2, 0x7F, 0x92, 0x59, 0x30, 0xF6, 0xA1, 0x12
-  },
-  {
-    0xF2, 0xB1, 0xBD, 0x16, 0xD8, 0x8E, 0x37, 0xF3,
-    0xA5, 0x18, 0xD1, 0x93, 0xED, 0x06, 0x1A, 0x1D,
-    0xF7, 0xB4, 0x43, 0xA1, 0x8C, 0xE9, 0xF8, 0x44,
-    0x45, 0xEF, 0x86, 0xEF, 0xFB, 0xDF, 0xF1, 0x60,
-    0x55, 0x02, 0x3C, 0xD4, 0xE7, 0x8D, 0x03, 0x4D,
-    0xE4, 0x03, 0x2A, 0x77, 0xDD, 0xC1, 0xD3, 0x43,
-    0x52, 0xFE, 0x61, 0x7F, 0x82, 0x56, 0x24, 0x45,
-    0x9B, 0xC3, 0x26, 0x9F, 0x70, 0x4F, 0x34, 0x5B
-  },
-  {
-    0xF0, 0x85, 0xF3, 0xD8, 0xBD, 0x13, 0x8E, 0x05,
-    0x69, 0x24, 0x3F, 0x74, 0x52, 0x3E, 0x87, 0xFF,
-    0x37, 0x6F, 0x04, 0xEA, 0xBD, 0x5A, 0x2F, 0x6E,
-    0x53, 0xDF, 0x38, 0x99, 0x00, 0x0E, 0x2E, 0x94,
-    0xAF, 0x0D, 0x2B, 0xC7, 0x1C, 0x3F, 0x71, 0x10,
-    0x25, 0xC5, 0x38, 0xA6, 0xC8, 0xB1, 0x0B, 0x09,
-    0x04, 0xDF, 0xC3, 0x46, 0xAD, 0xAD, 0x7E, 0xF3,
-    0x6B, 0x1A, 0xE8, 0x8A, 0x6C, 0xFE, 0xAB, 0xBD
-  },
-  {
-    0x82, 0x91, 0xA4, 0xAF, 0xD2, 0xE4, 0xB7, 0x16,
-    0x61, 0x77, 0x3A, 0x46, 0xB3, 0xD4, 0x45, 0x5A,
-    0x8D, 0x33, 0xA7, 0x26, 0xD9, 0xD3, 0x87, 0x30,
-    0x83, 0xAB, 0x33, 0x70, 0x20, 0xC2, 0x7B, 0x4D,
-    0xD6, 0x43, 0xE2, 0x8C, 0x2F, 0xE4, 0x7A, 0xB2,
-    0xFB, 0xF5, 0xD1, 0x40, 0x81, 0xA3, 0xFC, 0x1C,
-    0x83, 0x9B, 0x12, 0xEA, 0x31, 0xD1, 0x3C, 0xF4,
-    0x9E, 0xEE, 0x97, 0xEF, 0x2E, 0xD7, 0xFA, 0x3E
-  },
-  {
-    0xB1, 0x26, 0xAE, 0x46, 0xA7, 0xA4, 0x59, 0x5E,
-    0x31, 0x60, 0x7E, 0xF8, 0x07, 0xA5, 0x60, 0x1F,
-    0x4E, 0xCD, 0x9E, 0x7D, 0x66, 0xC8, 0x2D, 0xAE,
-    0xB9, 0x71, 0x5F, 0x8D, 0xA1, 0xC1, 0x7D, 0x7D,
-    0x71, 0xC3, 0xE6, 0x82, 0x50, 0xC9, 0xDC, 0x01,
-    0xAC, 0x40, 0xA3, 0x6D, 0x2E, 0x63, 0x8B, 0xEF,
-    0x3D, 0x7B, 0xC7, 0x0E, 0xA2, 0xD0, 0xE3, 0x31,
-    0xE3, 0xD3, 0x3E, 0x17, 0x04, 0xEB, 0xA9, 0x2D
-  },
-  {
-    0x63, 0xB1, 0x4D, 0x8E, 0xD2, 0x47, 0x9C, 0xAA,
-    0x17, 0xC3, 0xE4, 0xCF, 0x20, 0x3B, 0x23, 0x3A,
-    0x7E, 0x37, 0x3E, 0xDB, 0x0C, 0x2F, 0x19, 0x71,
-    0x29, 0xA9, 0xA3, 0x6C, 0x5B, 0x3E, 0x1F, 0x38,
-    0x38, 0xF2, 0xE8, 0x2A, 0xC2, 0xC2, 0xAD, 0x9D,
-    0x52, 0xB3, 0x35, 0x79, 0x0B, 0xFF, 0x57, 0x73,
-    0x04, 0xA3, 0x78, 0xE3, 0x8E, 0xB6, 0xBB, 0x41,
-    0x62, 0x03, 0x0C, 0xE2, 0xA8, 0xBA, 0x29, 0x3C
-  },
-  {
-    0x34, 0x42, 0x2A, 0x32, 0x29, 0x66, 0x99, 0x28,
-    0xC4, 0x90, 0xF5, 0x7B, 0x8E, 0x76, 0x88, 0x52,
-    0xE5, 0xB7, 0xC0, 0x0D, 0xCA, 0xD6, 0x0B, 0x01,
-    0x2A, 0x5D, 0xB3, 0x9A, 0x2D, 0x59, 0x7C, 0x3D,
-    0x0A, 0x63, 0xBE, 0x6A, 0x26, 0x3E, 0xA5, 0x36,
-    0x08, 0xB7, 0x06, 0x92, 0xD7, 0x8E, 0x1B, 0x42,
-    0x7E, 0xAC, 0xEC, 0x01, 0xF4, 0xBE, 0xE0, 0xBD,
-    0xBB, 0x8F, 0x08, 0x81, 0x48, 0x8E, 0xFC, 0x28
-  },
-  {
-    0xE2, 0x6B, 0x7E, 0xD6, 0xB9, 0x07, 0xB5, 0x4C,
-    0xA2, 0x65, 0x67, 0xF1, 0x1E, 0xE5, 0xBB, 0x6D,
-    0x73, 0x9A, 0x00, 0x08, 0xA5, 0x34, 0x37, 0xAD,
-    0x75, 0x90, 0xA3, 0x13, 0x4C, 0xEB, 0x95, 0x19,
-    0x6E, 0x49, 0xB3, 0x44, 0x3F, 0x32, 0x49, 0x22,
-    0x51, 0x75, 0x23, 0xC0, 0xCD, 0x5A, 0x00, 0xD7,
-    0x7E, 0x4C, 0x4D, 0xE7, 0xA0, 0xDE, 0x96, 0x8A,
-    0x84, 0xFB, 0x1B, 0x3B, 0xE7, 0xB3, 0xB9, 0x63
-  },
-  {
-    0x26, 0x01, 0x97, 0xCA, 0xFB, 0xF4, 0x56, 0xB4,
-    0x11, 0xFA, 0x26, 0xD3, 0x83, 0xD6, 0x4D, 0x61,
-    0xE8, 0x1E, 0x5E, 0x52, 0xF8, 0x4C, 0xD9, 0xD5,
-    0x73, 0x86, 0xC7, 0x76, 0x23, 0x0C, 0x65, 0xA2,
-    0x68, 0x1C, 0xD2, 0xFD, 0xFD, 0x28, 0x67, 0x9F,
-    0x67, 0xFE, 0x1B, 0xD7, 0x46, 0x9C, 0xF7, 0x26,
-    0x95, 0x85, 0xFC, 0xCB, 0xAE, 0xCC, 0x22, 0xF5,
-    0x03, 0xD6, 0xE3, 0xFC, 0x39, 0x30, 0x14, 0x36
-  },
-  {
-    0xCB, 0xD5, 0xAB, 0xE3, 0x7B, 0xCC, 0x4F, 0x9A,
-    0x12, 0x70, 0xAD, 0xD0, 0xA5, 0x27, 0x0F, 0x42,
-    0x83, 0x9C, 0x7D, 0x24, 0x93, 0x20, 0xD1, 0xF1,
-    0xD8, 0x85, 0x53, 0xD0, 0x5F, 0xAF, 0x9A, 0x26,
-    0x79, 0xF4, 0x9B, 0x49, 0xC9, 0xE2, 0x0C, 0x1C,
-    0x85, 0xC6, 0x29, 0xAA, 0x0F, 0x09, 0x0C, 0xAE,
-    0x8F, 0x6E, 0x32, 0xC6, 0xCA, 0xD7, 0x17, 0x21,
-    0xFD, 0x06, 0x23, 0xE4, 0xED, 0x25, 0xB2, 0x56
-  },
-  {
-    0x78, 0x0E, 0x31, 0x4F, 0xD6, 0x97, 0xD2, 0xA9,
-    0x7D, 0x22, 0x1A, 0x22, 0xC3, 0x90, 0x11, 0xE2,
-    0x50, 0x69, 0x16, 0x3C, 0xD0, 0x8F, 0x00, 0x70,
-    0xD0, 0x67, 0xE8, 0xCD, 0xB0, 0xBC, 0x86, 0x73,
-    0xFD, 0xB0, 0xEC, 0x4F, 0x46, 0xE3, 0x1D, 0x74,
-    0x8C, 0xD3, 0xBB, 0x3D, 0x61, 0xB9, 0x01, 0x0A,
-    0x66, 0x12, 0xF3, 0x41, 0xD4, 0x71, 0xD9, 0xC5,
-    0xA2, 0xDE, 0x6B, 0x6D, 0xD5, 0x38, 0xA6, 0xB5
-  },
-  {
-    0x40, 0x8F, 0x16, 0xCE, 0x86, 0xF8, 0x01, 0xD0,
-    0x8B, 0xD0, 0x51, 0x36, 0x4B, 0x3E, 0xCD, 0x9A,
-    0x39, 0x45, 0x71, 0x58, 0x88, 0xDF, 0x46, 0x63,
-    0x21, 0x9A, 0x19, 0x0B, 0x35, 0x04, 0xE4, 0x61,
-    0x8E, 0x7B, 0xF5, 0x51, 0x71, 0x17, 0x8B, 0x04,
-    0x00, 0xFB, 0xEB, 0xFA, 0xA0, 0x1F, 0x6E, 0xEA,
-    0xB5, 0x4F, 0xF5, 0xE3, 0x1E, 0x6D, 0x7A, 0x55,
-    0xB8, 0x4A, 0xDB, 0x9E, 0x03, 0xDF, 0x48, 0x36
-  },
-  {
-    0x0B, 0xF9, 0x88, 0x69, 0xEC, 0x05, 0x80, 0x19,
-    0x9C, 0xA3, 0x70, 0x8E, 0xC9, 0xC4, 0x2C, 0x37,
-    0x6C, 0x5C, 0x36, 0xE0, 0xFB, 0x74, 0x92, 0x42,
-    0x57, 0x23, 0x98, 0xA0, 0xDA, 0x57, 0xF9, 0x8D,
-    0x1C, 0x4C, 0xD2, 0x96, 0x3B, 0x37, 0xC3, 0xC6,
-    0x5A, 0x10, 0xF1, 0x06, 0xB5, 0x6D, 0xCB, 0x96,
-    0xDC, 0xDD, 0x32, 0x57, 0x96, 0x29, 0x7A, 0xDB,
-    0xF6, 0xEE, 0x62, 0x70, 0xED, 0xD4, 0x59, 0x2A
-  },
-  {
-    0x05, 0x2C, 0x32, 0x98, 0x43, 0x87, 0xB1, 0x93,
-    0x0D, 0x3A, 0x96, 0xBE, 0x72, 0x36, 0x85, 0x35,
-    0x44, 0x4F, 0x13, 0x07, 0x57, 0xBF, 0x87, 0xE0,
-    0x76, 0x2D, 0x8B, 0x1C, 0x4F, 0x65, 0x70, 0xF4,
-    0xDC, 0x67, 0x4C, 0x4E, 0x6F, 0x5E, 0x21, 0xAB,
-    0xD0, 0xB3, 0x5E, 0x1C, 0xA1, 0x9D, 0xB8, 0x40,
-    0x68, 0x8D, 0x1B, 0x6E, 0x9E, 0xC9, 0x1F, 0x37,
-    0x30, 0xE8, 0xB2, 0x88, 0x0E, 0xC2, 0xC3, 0xDF
-  },
-  {
-    0x4B, 0xB7, 0x14, 0x09, 0xC1, 0x5A, 0x0D, 0x39,
-    0x32, 0xC5, 0x99, 0xEF, 0x0F, 0xF3, 0xEF, 0xF5,
-    0xC7, 0x60, 0x2D, 0x70, 0x00, 0xCD, 0xA9, 0x74,
-    0x08, 0x2C, 0x4A, 0x46, 0x82, 0x24, 0x9A, 0x19,
-    0xD4, 0x3A, 0x5C, 0x14, 0xE0, 0xAE, 0xEF, 0x89,
-    0x78, 0x21, 0x05, 0x63, 0x80, 0xAF, 0xF2, 0x75,
-    0x20, 0x1D, 0x74, 0x59, 0x14, 0x84, 0x96, 0xEA,
-    0xE9, 0x42, 0x0E, 0x71, 0x82, 0x88, 0xB4, 0x14
-  },
-  {
-    0x47, 0x95, 0xB2, 0x51, 0xCC, 0x7B, 0x35, 0xE6,
-    0x96, 0x92, 0xDB, 0x7F, 0xB4, 0x0E, 0xFD, 0x34,
-    0xF2, 0x94, 0xF5, 0x1A, 0xEC, 0x15, 0xD6, 0xC8,
-    0x67, 0x3E, 0x59, 0xF2, 0x04, 0xBE, 0xCF, 0x4C,
-    0xF9, 0xDF, 0x84, 0x95, 0x23, 0xF1, 0xDB, 0x73,
-    0xBE, 0x2A, 0x66, 0xC8, 0x39, 0xD8, 0x01, 0x97,
-    0x4D, 0x43, 0x3B, 0x47, 0x80, 0x67, 0x01, 0xA1,
-    0x63, 0xA7, 0x94, 0xB2, 0x6A, 0x84, 0x6B, 0x06
-  },
-  {
-    0xDD, 0x50, 0xF9, 0x65, 0xB6, 0x0B, 0xAF, 0x16,
-    0x8F, 0x5E, 0xA0, 0x5A, 0xC2, 0x0B, 0x8A, 0x78,
-    0xF4, 0x47, 0x5C, 0x18, 0x61, 0x0B, 0x9D, 0x9F,
-    0xC2, 0xB7, 0xC3, 0xAD, 0x5C, 0x6F, 0x97, 0xA4,
-    0xCF, 0x5E, 0xA4, 0x8E, 0xE4, 0x0A, 0x3C, 0xA2,
-    0x29, 0x3C, 0xC4, 0x21, 0x40, 0x82, 0xCF, 0x0F,
-    0x8E, 0xC8, 0x95, 0x55, 0x32, 0x69, 0xE1, 0x4D,
-    0xA9, 0xBD, 0x1A, 0x19, 0x65, 0x62, 0xCA, 0x59
-  },
-  {
-    0xE0, 0xB5, 0x4B, 0x61, 0x7F, 0x44, 0x92, 0x2C,
-    0x7F, 0x61, 0xC6, 0xA5, 0x4C, 0x98, 0xC6, 0x1E,
-    0x93, 0x2D, 0xED, 0x1F, 0xA9, 0x34, 0x02, 0x66,
-    0xEE, 0xA2, 0x5F, 0x01, 0xE8, 0x18, 0x0D, 0x1D,
-    0xDC, 0x6A, 0xD8, 0xDD, 0x6A, 0x0B, 0x8F, 0xAB,
-    0x8C, 0x73, 0xAE, 0xBB, 0x97, 0x73, 0x17, 0x1B,
-    0xBA, 0x04, 0xA7, 0x81, 0xB1, 0x13, 0x14, 0xD5,
-    0xA3, 0x0A, 0x9D, 0x1C, 0x28, 0x12, 0xCA, 0x7C
-  },
-  {
-    0x2D, 0xC4, 0xAD, 0x06, 0x89, 0xA4, 0x46, 0x0B,
-    0x5B, 0x39, 0x9E, 0x91, 0x1B, 0xDB, 0x41, 0x58,
-    0x6A, 0xC8, 0xAD, 0x36, 0x7B, 0x7A, 0xA3, 0x9E,
-    0x3E, 0xAE, 0xC8, 0x89, 0x9A, 0x2D, 0x3C, 0xE3,
-    0x8E, 0x34, 0xAB, 0x46, 0x08, 0x23, 0x4D, 0x75,
-    0xEB, 0x67, 0x37, 0xFE, 0x21, 0x58, 0x24, 0xC2,
-    0xA9, 0x78, 0x83, 0x59, 0x6F, 0x6F, 0x18, 0xDD,
-    0xEB, 0xBF, 0x16, 0x27, 0xDE, 0xD9, 0x1D, 0x84
-  },
-  {
-    0xF5, 0x6A, 0x11, 0xCB, 0xBF, 0x8A, 0x99, 0x7E,
-    0x14, 0x77, 0xEC, 0x76, 0xE5, 0x3C, 0x89, 0x4B,
-    0x14, 0x8D, 0x69, 0x25, 0xA4, 0x33, 0x6F, 0x0C,
-    0xB7, 0xAA, 0xB9, 0xD8, 0x02, 0xAC, 0x9B, 0x45,
-    0x36, 0xF4, 0x80, 0x10, 0x1F, 0x3F, 0x9A, 0x77,
-    0xEE, 0xCD, 0xCB, 0xAE, 0x7A, 0xA6, 0xEA, 0x44,
-    0x7A, 0x85, 0xDA, 0x90, 0xB5, 0x01, 0xF7, 0xDB,
-    0x2E, 0xF8, 0xDD, 0xF5, 0xDE, 0x17, 0x33, 0x63
-  },
-  {
-    0x6E, 0x17, 0x1D, 0x19, 0x6D, 0x0F, 0xC8, 0x2F,
-    0xB4, 0x73, 0xE2, 0x9D, 0xA8, 0xF4, 0x0F, 0x37,
-    0xEE, 0x97, 0x41, 0xAC, 0x3E, 0xAF, 0x17, 0x5D,
-    0xD4, 0x9F, 0xDB, 0x56, 0x53, 0x0D, 0xB5, 0x98,
-    0x98, 0xBA, 0xF3, 0xCE, 0xE7, 0x2E, 0xEF, 0x5E,
-    0x77, 0x27, 0x6C, 0xAD, 0xAB, 0xCD, 0x75, 0x2C,
-    0xA3, 0xA1, 0xB8, 0x64, 0xC1, 0x0A, 0xD2, 0x8D,
-    0x27, 0xEA, 0xAD, 0x86, 0xE3, 0xF2, 0x1D, 0x33
-  },
-  {
-    0x95, 0x20, 0x12, 0x33, 0x0D, 0x92, 0xBB, 0x9C,
-    0x18, 0x92, 0xF2, 0x5B, 0x7B, 0x5A, 0xA0, 0xFE,
-    0xD3, 0xC0, 0x39, 0x8A, 0x17, 0x08, 0x50, 0x9A,
-    0x66, 0x14, 0x74, 0xA3, 0xF5, 0xE5, 0x11, 0xD0,
-    0x9F, 0x21, 0xC3, 0x00, 0x08, 0x00, 0x2F, 0x10,
-    0x42, 0xD8, 0x3D, 0x2F, 0x7B, 0x11, 0x33, 0x6B,
-    0x8C, 0x2F, 0xE1, 0xD9, 0x79, 0xC1, 0xE3, 0x86,
-    0xE0, 0x20, 0x97, 0x48, 0x9B, 0x2D, 0xFC, 0xF5
-  },
-  {
-    0x2D, 0xCE, 0x47, 0xC3, 0x3A, 0x7E, 0x7F, 0x21,
-    0x5D, 0x34, 0xA5, 0x47, 0x1B, 0xCD, 0x11, 0x10,
-    0x60, 0x6C, 0x77, 0x13, 0x8F, 0x19, 0xD4, 0x17,
-    0x41, 0xED, 0x5D, 0x1B, 0x89, 0xE8, 0xF7, 0xC7,
-    0x74, 0xEE, 0xC4, 0xBB, 0xC1, 0x02, 0x76, 0x6E,
-    0xA1, 0x53, 0x2F, 0x2E, 0x43, 0x13, 0x4A, 0xD3,
-    0x66, 0xBD, 0xCC, 0x27, 0xD1, 0xA0, 0xCC, 0x95,
-    0x9E, 0x16, 0x48, 0x65, 0x9E, 0x44, 0xCB, 0xBE
-  },
-  {
-    0x7F, 0x06, 0x59, 0x59, 0x7E, 0x7A, 0xD1, 0x22,
-    0xD1, 0xC9, 0xED, 0x91, 0x93, 0x0B, 0x07, 0xDE,
-    0x40, 0xE2, 0x55, 0x20, 0x1A, 0x33, 0xEB, 0x2B,
-    0x31, 0x81, 0x37, 0x6E, 0x36, 0x8D, 0xF7, 0x76,
-    0x4C, 0x0C, 0x14, 0xBF, 0x79, 0x9F, 0x16, 0x1B,
-    0x9B, 0x00, 0x79, 0x57, 0x8B, 0x47, 0x09, 0x71,
-    0x3E, 0x24, 0xE4, 0x2F, 0xE7, 0xDD, 0x71, 0xB5,
-    0x09, 0x43, 0xF4, 0x40, 0xE2, 0x3C, 0xD1, 0xBE
-  },
-  {
-    0x1E, 0x66, 0xF7, 0xB3, 0x58, 0x80, 0x5D, 0xDD,
-    0xFF, 0xC5, 0x82, 0x68, 0x3E, 0x0B, 0xAD, 0x81,
-    0x8C, 0x87, 0x34, 0x03, 0xD4, 0xBA, 0x15, 0x06,
-    0xB9, 0x2F, 0xB3, 0x20, 0xCA, 0x8C, 0xF9, 0xCE,
-    0xE8, 0x15, 0x47, 0x15, 0xD6, 0xDB, 0x6F, 0x04,
-    0x09, 0x3D, 0x4B, 0x3F, 0xD8, 0xA6, 0xFC, 0x8E,
-    0x7E, 0xDD, 0xEA, 0xF2, 0x79, 0x5B, 0x3D, 0x22,
-    0xDE, 0x7C, 0x75, 0xEC, 0xFF, 0x6F, 0x92, 0xAF
-  },
-  {
-    0x1F, 0x60, 0xC1, 0x8D, 0xB1, 0x68, 0xD9, 0x0D,
-    0x2B, 0x46, 0x60, 0xE7, 0x58, 0xA3, 0xCD, 0x28,
-    0x02, 0x3D, 0x4C, 0x0B, 0x84, 0x8B, 0x5E, 0x33,
-    0xEA, 0x5C, 0xC1, 0x56, 0x29, 0xFD, 0x35, 0x2E,
-    0xAC, 0xB1, 0x4F, 0x05, 0xFD, 0xEC, 0x07, 0xAC,
-    0x23, 0xDA, 0x92, 0x04, 0x74, 0x5F, 0xA9, 0x73,
-    0xC3, 0x29, 0x55, 0x13, 0x5F, 0x8E, 0xC7, 0x41,
-    0x0A, 0x1C, 0xB5, 0x3B, 0xC7, 0x58, 0x06, 0x84
-  },
-  {
-    0xB9, 0xDF, 0x57, 0xB3, 0x45, 0xEE, 0x6F, 0x87,
-    0x0E, 0xE0, 0xE6, 0x3C, 0x55, 0x8B, 0x81, 0xC1,
-    0xBC, 0x38, 0x42, 0x97, 0x6F, 0xD3, 0xCF, 0xB1,
-    0xB5, 0x3B, 0x76, 0x6B, 0xF4, 0x36, 0xD1, 0xD1,
-    0x75, 0xF4, 0xD4, 0xC5, 0xF1, 0xBD, 0x8D, 0x7A,
-    0xF6, 0x5B, 0x5D, 0x18, 0xA7, 0x2F, 0x95, 0x71,
-    0xF2, 0x34, 0x70, 0x19, 0x32, 0xAF, 0xB7, 0xC3,
-    0xC9, 0x4A, 0x8C, 0x8F, 0xA0, 0x23, 0xDB, 0x4F
-  },
-  {
-    0xD8, 0xC8, 0x24, 0x95, 0xA2, 0xB5, 0xF6, 0x64,
-    0x51, 0xF8, 0xC5, 0xB2, 0xE8, 0xA1, 0x73, 0x33,
-    0xC2, 0xBE, 0x32, 0x20, 0xCE, 0x06, 0xA8, 0x14,
-    0xC2, 0xCE, 0xA9, 0x5C, 0xC8, 0x65, 0x92, 0xAA,
-    0x02, 0x15, 0xBF, 0x29, 0x46, 0x14, 0xA3, 0x28,
-    0xCF, 0x07, 0x22, 0x2B, 0x73, 0xF9, 0x3F, 0x24,
-    0x2A, 0x94, 0x8B, 0xCA, 0xE9, 0x56, 0x5F, 0xC9,
-    0x70, 0x57, 0xB5, 0x2E, 0x02, 0x80, 0xEB, 0x82
-  },
-  {
-    0x81, 0x34, 0xCE, 0x66, 0xD9, 0x5C, 0x40, 0x88,
-    0xA5, 0x66, 0xD4, 0xE4, 0x35, 0x99, 0x06, 0x9A,
-    0xD0, 0x45, 0x53, 0xB0, 0xFE, 0xA3, 0xD7, 0x48,
-    0x19, 0xA6, 0xFD, 0x76, 0x6F, 0x43, 0x67, 0x42,
-    0xF6, 0xB6, 0xEC, 0xC8, 0x27, 0x93, 0x98, 0x60,
-    0x9F, 0x60, 0xB4, 0xE4, 0xBB, 0x44, 0xFD, 0x72,
-    0xCD, 0xFB, 0xFF, 0x18, 0xD8, 0x03, 0x8A, 0xA7,
-    0x12, 0x30, 0x83, 0x8B, 0x12, 0x6B, 0xC3, 0x00
-  },
-  {
-    0x3D, 0xA8, 0x9F, 0x5C, 0x52, 0xB0, 0x52, 0xE0,
-    0x42, 0xE5, 0x11, 0x7B, 0x96, 0x80, 0x6E, 0xDB,
-    0x1C, 0x55, 0x22, 0x7E, 0x85, 0x14, 0xB3, 0x9E,
-    0x8B, 0x22, 0xBE, 0xA4, 0xC9, 0x53, 0x30, 0x80,
-    0xA4, 0xD7, 0xA9, 0x24, 0x92, 0xB7, 0x51, 0x76,
-    0x9B, 0x0E, 0x11, 0x9E, 0xF4, 0xDB, 0x2B, 0xB8,
-    0x8D, 0x5C, 0x1E, 0x75, 0xB4, 0x03, 0x10, 0x74,
-    0xD7, 0xF2, 0x1A, 0x78, 0x01, 0x4A, 0x1F, 0x96
-  },
-  {
-    0x9B, 0xDC, 0xB4, 0x69, 0xC2, 0x66, 0x5D, 0xD8,
-    0x46, 0x83, 0xE5, 0x81, 0x01, 0xFD, 0xAE, 0x5C,
-    0x88, 0x29, 0x2A, 0x4E, 0x05, 0xC4, 0x00, 0xCA,
-    0x08, 0x26, 0xDA, 0x79, 0x38, 0x2B, 0x8A, 0x28,
-    0x26, 0xFF, 0x24, 0xFC, 0xD5, 0x56, 0xC9, 0xD5,
-    0xB5, 0xAA, 0x89, 0x2F, 0x02, 0xB1, 0x67, 0x04,
-    0x77, 0x27, 0x9B, 0xD7, 0x5F, 0x1B, 0x2B, 0x7B,
-    0x67, 0x5E, 0xFA, 0xC3, 0x80, 0x60, 0x70, 0x36
-  },
-  {
-    0x6C, 0x77, 0x85, 0x7B, 0x38, 0x53, 0x3E, 0x41,
-    0x4A, 0xF7, 0x38, 0x7C, 0x98, 0x56, 0x8D, 0x71,
-    0xC8, 0xF0, 0xE3, 0x5E, 0x22, 0xB0, 0x2E, 0x2A,
-    0x1C, 0x0D, 0xC6, 0xD5, 0x7E, 0x37, 0xD8, 0x68,
-    0x72, 0x5A, 0xD8, 0x23, 0x58, 0x6A, 0x0B, 0xEE,
-    0xF3, 0x98, 0x89, 0xCC, 0x31, 0xF1, 0xF7, 0xFA,
-    0xD0, 0x96, 0x0A, 0x12, 0x5E, 0x29, 0xDF, 0xEA,
-    0x74, 0x55, 0x12, 0xD1, 0x79, 0xE5, 0xF5, 0x89
-  },
-  {
-    0x88, 0xC9, 0x83, 0x3A, 0x6D, 0x44, 0xFC, 0x25,
-    0xBB, 0x64, 0xF3, 0xE9, 0x8E, 0x83, 0x8F, 0xB4,
-    0xFF, 0x56, 0x48, 0x96, 0xDC, 0xD3, 0x58, 0x3A,
-    0x8B, 0x57, 0xC9, 0x46, 0x6E, 0x74, 0x0C, 0x62,
-    0x8B, 0x2D, 0x26, 0xEA, 0x14, 0x7C, 0xB3, 0x11,
-    0x10, 0xFB, 0xAD, 0xCF, 0x9D, 0x01, 0x08, 0xAC,
-    0xCE, 0xBE, 0x04, 0x31, 0x7D, 0x19, 0xFC, 0x03,
-    0x66, 0xDE, 0x0C, 0x28, 0xA1, 0xA4, 0x5E, 0x2A
-  },
-  {
-    0x0A, 0xAB, 0xB3, 0xA1, 0x78, 0x46, 0x4A, 0x01,
-    0x47, 0x64, 0x5F, 0x05, 0x71, 0x2A, 0x0A, 0x15,
-    0x55, 0xC5, 0xB9, 0xA3, 0xE9, 0x99, 0xAB, 0x25,
-    0x5A, 0xCA, 0x35, 0xC5, 0x03, 0x81, 0xF4, 0x90,
-    0x55, 0x1A, 0x40, 0x89, 0x31, 0xAA, 0x6B, 0xE9,
-    0xA4, 0xEF, 0x49, 0x7A, 0x16, 0x5B, 0x36, 0x66,
-    0x3B, 0x1E, 0x1F, 0x05, 0x13, 0x48, 0x02, 0xB1,
-    0x78, 0xB7, 0xC7, 0x04, 0x68, 0xCB, 0x98, 0xE8
-  },
-  {
-    0x58, 0x50, 0xD8, 0x93, 0x70, 0x6B, 0x3B, 0xC2,
-    0xDB, 0xBA, 0x9C, 0xFA, 0xB0, 0x28, 0xBE, 0xD8,
-    0x19, 0xA2, 0x83, 0x11, 0xD2, 0xD6, 0xF0, 0xCD,
-    0x8E, 0x27, 0x2E, 0xE6, 0x77, 0xBC, 0x87, 0x8A,
-    0x0C, 0xED, 0x6C, 0x0D, 0xEA, 0x9E, 0x5C, 0xC9,
-    0x4B, 0x2B, 0x4F, 0x59, 0x1A, 0x40, 0xEC, 0x9F,
-    0xB1, 0x82, 0x22, 0xD6, 0xDE, 0xAC, 0xE1, 0xF9,
-    0xC0, 0x83, 0xDC, 0x05, 0xDE, 0x11, 0x7A, 0x53
-  },
-  {
-    0xBE, 0xE6, 0x96, 0xA4, 0x76, 0x4F, 0x94, 0x25,
-    0xD9, 0x1B, 0x14, 0x17, 0x38, 0x62, 0x5A, 0x04,
-    0x47, 0xA8, 0x22, 0xBB, 0xA7, 0xA8, 0x47, 0x78,
-    0xCC, 0x3A, 0x77, 0xA3, 0x86, 0xCB, 0x18, 0x24,
-    0x87, 0xDB, 0x51, 0x3B, 0xB8, 0xF3, 0x6F, 0xC2,
-    0xF7, 0xE6, 0xD2, 0x89, 0x6E, 0x44, 0x56, 0xA5,
-    0x23, 0x46, 0xC4, 0x94, 0x8E, 0x3E, 0xC6, 0x34,
-    0xCB, 0xF1, 0x8F, 0x39, 0xC4, 0x46, 0xCB, 0xAB
-  },
-  {
-    0x3D, 0x9F, 0x75, 0xD3, 0xE5, 0x0D, 0x9B, 0xA3,
-    0xBC, 0xAC, 0x4A, 0x4E, 0x11, 0x6B, 0x9B, 0x30,
-    0x8D, 0xC6, 0x45, 0x99, 0xA3, 0x86, 0x4A, 0x9D,
-    0xAF, 0xD7, 0x5C, 0xB7, 0x1F, 0x2D, 0xE3, 0x10,
-    0x9F, 0x79, 0x56, 0xA7, 0xD2, 0xDD, 0x37, 0x4F,
-    0x84, 0x06, 0xD7, 0x7F, 0x79, 0x63, 0x11, 0xE3,
-    0xD3, 0x00, 0x89, 0xE5, 0x4D, 0xD6, 0xCE, 0x8A,
-    0xBB, 0x02, 0xA8, 0x5A, 0x85, 0xAE, 0x92, 0xE4
-  },
-  {
-    0xEF, 0x39, 0x51, 0x47, 0x5A, 0x16, 0xDF, 0x64,
-    0x98, 0x32, 0x24, 0x04, 0x65, 0x30, 0xDC, 0x7C,
-    0xB0, 0x53, 0xD2, 0x93, 0x94, 0x75, 0x39, 0x11,
-    0xC4, 0x94, 0x99, 0x50, 0xF2, 0x3E, 0x8A, 0x92,
-    0xC7, 0x09, 0xF4, 0x63, 0x69, 0xB2, 0x3A, 0x0D,
-    0x70, 0x3A, 0x6F, 0x36, 0x49, 0x0F, 0x75, 0xBE,
-    0x1E, 0x3E, 0x81, 0x29, 0xA8, 0x29, 0xF3, 0xDC,
-    0xD7, 0x2D, 0x0E, 0x55, 0x49, 0x7B, 0x81, 0x33
-  },
-  {
-    0xD4, 0x19, 0x7D, 0x2A, 0x68, 0x5B, 0xCA, 0x6B,
-    0xFB, 0xDD, 0x0E, 0x3D, 0x84, 0xC7, 0x48, 0x01,
-    0x35, 0x48, 0xBC, 0x84, 0x9F, 0xE6, 0x49, 0xDA,
-    0xE7, 0xC4, 0xA2, 0x77, 0xFC, 0xBD, 0x8F, 0x81,
-    0x8A, 0x9E, 0xDF, 0xA6, 0xCA, 0x14, 0xD7, 0xFE,
-    0xEA, 0x72, 0x6B, 0x23, 0xB4, 0xA3, 0x3A, 0xA8,
-    0xA3, 0xF5, 0xA6, 0x61, 0x67, 0x21, 0x5C, 0x61,
-    0x48, 0xC0, 0x6B, 0x94, 0xCD, 0x8B, 0xFE, 0x37
-  },
-  {
-    0x7A, 0x24, 0x40, 0x33, 0x35, 0xB8, 0x64, 0x10,
-    0xD8, 0xD6, 0x93, 0xF1, 0x63, 0xD6, 0x19, 0x8A,
-    0x68, 0x0F, 0x7E, 0x3A, 0xC0, 0x25, 0xEC, 0x44,
-    0x74, 0x24, 0x9B, 0x01, 0x16, 0x77, 0xFE, 0x1C,
-    0x86, 0x6A, 0xAF, 0x45, 0x3D, 0xB0, 0xE8, 0xF6,
-    0x54, 0x33, 0x51, 0x50, 0x86, 0x3A, 0xCE, 0x57,
-    0x66, 0x50, 0x80, 0x31, 0x91, 0x27, 0x8E, 0x9D,
-    0x4B, 0x54, 0x7A, 0x43, 0x4C, 0x56, 0x54, 0xE2
-  },
-  {
-    0xAF, 0x07, 0xC6, 0x7D, 0x58, 0x74, 0x3A, 0xEB,
-    0x18, 0x50, 0xEB, 0x53, 0xB2, 0xDA, 0x78, 0xEC,
-    0xF7, 0x09, 0x58, 0x18, 0x32, 0x5B, 0xEB, 0x86,
-    0x6F, 0xF3, 0x13, 0xE3, 0x94, 0xC0, 0x07, 0xE0,
-    0xC0, 0xB5, 0xA1, 0xCD, 0x7A, 0xE6, 0xBB, 0x37,
-    0xCD, 0x27, 0x81, 0xB5, 0x2D, 0x15, 0x4D, 0x18,
-    0x86, 0x5D, 0x5E, 0x37, 0xDB, 0xAA, 0x5F, 0x96,
-    0x73, 0x9B, 0xF7, 0x69, 0x59, 0x96, 0xAE, 0x30
-  },
-  {
-    0x28, 0xB3, 0xC2, 0x60, 0xFA, 0x7F, 0x23, 0xB9,
-    0xCC, 0xAD, 0xD6, 0x15, 0xA1, 0x14, 0x69, 0x49,
-    0x8A, 0xDB, 0x18, 0xD7, 0xA9, 0xF6, 0x84, 0xFD,
-    0xE4, 0x35, 0xC0, 0x65, 0x33, 0xF5, 0xF5, 0x08,
-    0xB2, 0x9B, 0x5E, 0xCD, 0x0E, 0xCD, 0x57, 0x36,
-    0x9F, 0x22, 0xF1, 0xC5, 0x4E, 0x61, 0xBE, 0x6C,
-    0xD1, 0x04, 0xC8, 0xF7, 0xD3, 0xE1, 0x84, 0x7A,
-    0xAD, 0x67, 0x07, 0x3A, 0x47, 0x86, 0xE1, 0xDB
-  },
-  {
-    0xD6, 0x43, 0x23, 0x33, 0x25, 0x23, 0x9E, 0x2E,
-    0xBD, 0x41, 0x1F, 0x0E, 0x00, 0x23, 0x30, 0x56,
-    0x2E, 0xB1, 0xBB, 0x08, 0xE6, 0x88, 0x24, 0xB7,
-    0x1B, 0x98, 0x19, 0x9C, 0x76, 0xD5, 0x31, 0x58,
-    0xD9, 0x1D, 0xDD, 0x6F, 0x4F, 0x82, 0x61, 0xEC,
-    0x1D, 0x72, 0xFC, 0x77, 0xC2, 0xCC, 0x23, 0x7E,
-    0xDA, 0x15, 0xF0, 0x25, 0x7C, 0xF0, 0x7B, 0x84,
-    0xCF, 0x1F, 0xBD, 0x1D, 0xBA, 0xFA, 0x1D, 0xFC
-  },
-  {
-    0x3D, 0x7B, 0x44, 0xCC, 0x82, 0xEF, 0xCA, 0xFC,
-    0xAB, 0xA6, 0xB1, 0x91, 0x05, 0x48, 0x95, 0x8C,
-    0x18, 0x0A, 0x0E, 0x8D, 0x84, 0xBC, 0x66, 0x3E,
-    0x8E, 0xF9, 0x53, 0x3B, 0xD8, 0x0C, 0x4B, 0xBA,
-    0xAA, 0x25, 0x5B, 0x19, 0x81, 0xF7, 0x56, 0xEB,
-    0x10, 0x79, 0xAD, 0x0F, 0x34, 0x71, 0xA1, 0xFC,
-    0x9D, 0x7A, 0x43, 0x23, 0x39, 0x30, 0x3A, 0x57,
-    0x81, 0xA3, 0x45, 0x35, 0x30, 0x9E, 0x5A, 0x24
-  },
-  {
-    0xEB, 0x08, 0x12, 0xC9, 0x67, 0x06, 0x46, 0xD5,
-    0x63, 0x19, 0x8B, 0x11, 0x7A, 0xAF, 0xC5, 0x6F,
-    0xA1, 0xB6, 0x56, 0x0F, 0x88, 0xB5, 0x75, 0x4E,
-    0xBF, 0xC3, 0x1B, 0x35, 0x52, 0x16, 0xD8, 0xD7,
-    0x4D, 0x34, 0x1E, 0x35, 0xB2, 0x43, 0xBC, 0x93,
-    0x8C, 0xF5, 0x46, 0xAF, 0x1F, 0x73, 0xC1, 0xB0,
-    0x04, 0x55, 0xDC, 0x06, 0xB2, 0xC6, 0xC5, 0x35,
-    0x27, 0x9E, 0x87, 0x67, 0x49, 0x8F, 0x14, 0xE6
-  },
-  {
-    0x7B, 0xBA, 0x7D, 0x73, 0x04, 0x02, 0x1C, 0x75,
-    0xB5, 0xD6, 0xCE, 0x66, 0xB4, 0xEF, 0xA5, 0x50,
-    0x19, 0xD9, 0x42, 0xD2, 0x08, 0xAF, 0xAC, 0x82,
-    0x11, 0xAA, 0x7E, 0x5E, 0x11, 0x1E, 0x27, 0x69,
-    0x76, 0x70, 0xE4, 0xEC, 0x91, 0xBA, 0x30, 0x8E,
-    0xBD, 0xFB, 0x19, 0x15, 0x4C, 0x3B, 0xAD, 0x05,
-    0x26, 0xA6, 0x25, 0x41, 0xAE, 0x5D, 0x43, 0xD0,
-    0xF5, 0x47, 0xB9, 0xD9, 0x8E, 0x07, 0x36, 0x60
-  },
-  {
-    0xA8, 0xE2, 0xA9, 0x46, 0x8D, 0xA3, 0xE3, 0x54,
-    0x3A, 0x23, 0xA5, 0x78, 0x78, 0x0E, 0x25, 0x62,
-    0xC7, 0xCE, 0x57, 0xFD, 0x11, 0x20, 0xE1, 0xC0,
-    0x24, 0xD7, 0xEA, 0x32, 0x90, 0x31, 0x70, 0x46,
-    0x61, 0x6E, 0x14, 0xCD, 0x0F, 0x15, 0xA8, 0x6B,
-    0x99, 0x39, 0x54, 0x9B, 0x14, 0x76, 0x11, 0xB6,
-    0xA5, 0x5D, 0x85, 0xAB, 0xC2, 0x5F, 0x63, 0x95,
-    0x46, 0xB8, 0x9D, 0xD2, 0x3D, 0x39, 0xA9, 0x85
-  },
-  {
-    0xCE, 0x87, 0x4C, 0xD6, 0xE1, 0x95, 0x8B, 0x9D,
-    0x7F, 0x11, 0xFF, 0x44, 0xAB, 0x08, 0x32, 0xE8,
-    0x48, 0x70, 0x2C, 0x8F, 0x26, 0x65, 0x6B, 0xA1,
-    0x0B, 0xF5, 0x72, 0x0A, 0x7C, 0xAA, 0x1F, 0x59,
-    0x08, 0xC9, 0x9A, 0x96, 0x03, 0xA9, 0x8B, 0x41,
-    0x6C, 0x57, 0x22, 0x8C, 0x81, 0x9C, 0xEA, 0xF8,
-    0x27, 0x01, 0x3B, 0x2E, 0x6D, 0x6B, 0x2D, 0xAE,
-    0x59, 0xDF, 0xF1, 0x04, 0xB9, 0x02, 0xC3, 0x1B
-  },
-  {
-    0x30, 0xFF, 0xFE, 0x37, 0x21, 0x8D, 0xB1, 0x94,
-    0xB2, 0x32, 0x73, 0x49, 0x8F, 0x45, 0x44, 0xD3,
-    0x84, 0x14, 0xBE, 0xE4, 0x1B, 0x17, 0x55, 0xA0,
-    0xC6, 0xC2, 0xDB, 0xCB, 0x41, 0x19, 0x42, 0xD5,
-    0xEC, 0xB9, 0xD4, 0x52, 0x3F, 0xB4, 0x79, 0x4B,
-    0xA3, 0x6E, 0x57, 0x9A, 0xF2, 0xF8, 0xDD, 0x85,
-    0x19, 0x99, 0x23, 0x31, 0x83, 0xFA, 0xB2, 0x7B,
-    0x47, 0xAD, 0xD8, 0x7D, 0xF3, 0x59, 0x14, 0xBB
-  },
-  {
-    0xCE, 0xF4, 0x43, 0x1D, 0xCE, 0x9F, 0xF5, 0x5A,
-    0x00, 0x30, 0x0E, 0xC8, 0x64, 0x9E, 0x27, 0x58,
-    0x36, 0x18, 0x22, 0x43, 0x69, 0xF6, 0x0A, 0x5C,
-    0x89, 0x6B, 0x2A, 0x31, 0x10, 0xB0, 0x32, 0xB8,
-    0x7C, 0x9E, 0xE4, 0xF2, 0x6C, 0x5F, 0x0B, 0xDB,
-    0x50, 0x3E, 0xA7, 0x44, 0x7A, 0x5D, 0xB3, 0xF7,
-    0x07, 0xFE, 0x34, 0x10, 0xDA, 0xCD, 0xD7, 0x57,
-    0x22, 0x19, 0xBD, 0xEA, 0x8E, 0x17, 0xDC, 0x04
-  },
-  {
-    0x8F, 0xF0, 0xBC, 0xB7, 0x5F, 0x00, 0x61, 0xB5,
-    0xF9, 0x09, 0x29, 0x8F, 0x56, 0x9E, 0x45, 0xC7,
-    0x5E, 0xD2, 0xD6, 0x4A, 0x81, 0x89, 0xCE, 0xBD,
-    0x4E, 0x02, 0x56, 0x6E, 0x1A, 0x1B, 0x8B, 0xE5,
-    0x3A, 0x78, 0x32, 0x28, 0x55, 0x8E, 0x28, 0xB5,
-    0xF8, 0x7C, 0xCC, 0x2F, 0x42, 0x8F, 0x7F, 0x87,
-    0x97, 0x44, 0xB5, 0x25, 0xB2, 0x49, 0x62, 0xB3,
-    0x60, 0x4B, 0x12, 0x0F, 0x06, 0x77, 0x9F, 0x2E
-  },
-  {
-    0x7F, 0x8D, 0xDF, 0xFB, 0x4D, 0xC1, 0x51, 0x91,
-    0xDE, 0x3D, 0xDB, 0xE4, 0xA0, 0xF8, 0x8B, 0x7A,
-    0xB0, 0x2D, 0x48, 0xE2, 0x5C, 0xFC, 0x1F, 0xE9,
-    0x1D, 0xA5, 0x57, 0xE8, 0x85, 0xD0, 0x12, 0xB8,
-    0xF6, 0x55, 0x26, 0xC5, 0xB7, 0xB1, 0x01, 0x3F,
-    0xC8, 0x16, 0x58, 0x50, 0x43, 0xA3, 0x45, 0x60,
-    0x5A, 0x39, 0xD8, 0xDA, 0xD7, 0x0D, 0x8A, 0x64,
-    0x48, 0x51, 0x32, 0x50, 0xAA, 0xC4, 0xF3, 0xD5
-  },
-  {
-    0xB1, 0xFE, 0x8C, 0x68, 0xAE, 0xF6, 0xB4, 0xD4,
-    0xB2, 0x33, 0x54, 0xEB, 0x8C, 0x1D, 0x8F, 0x5A,
-    0x56, 0xE3, 0x2E, 0x76, 0xB9, 0x6A, 0xC8, 0x44,
-    0x3B, 0x2A, 0xB8, 0x35, 0xE4, 0xC8, 0xB6, 0x74,
-    0xB3, 0x3E, 0x4C, 0x6C, 0x6D, 0xC1, 0x21, 0xD7,
-    0xC2, 0xD3, 0x4B, 0x59, 0xB3, 0x7A, 0x56, 0x8A,
-    0x1C, 0x98, 0xD5, 0x00, 0x32, 0x4E, 0x53, 0x08,
-    0x87, 0x85, 0xB6, 0xB0, 0x80, 0x63, 0x47, 0xD1
-  },
-  {
-    0x8E, 0x87, 0x34, 0xFC, 0xF9, 0x25, 0x9E, 0xE3,
-    0x7F, 0xE9, 0xC6, 0xCD, 0xA2, 0x82, 0xC2, 0xD5,
-    0xEB, 0x83, 0xD0, 0xCF, 0x43, 0x9C, 0x86, 0x19,
-    0xD4, 0xB0, 0x42, 0xFF, 0x69, 0x96, 0x6B, 0x03,
-    0x56, 0x5B, 0xE4, 0xDF, 0x96, 0x39, 0x3F, 0xE6,
-    0xBF, 0x35, 0xAF, 0xA1, 0x6E, 0x02, 0x73, 0xB6,
-    0xD3, 0x39, 0xC0, 0x09, 0x95, 0xBF, 0x6F, 0x60,
-    0xA7, 0x14, 0xEF, 0x18, 0x0E, 0xBB, 0x93, 0x15
-  },
-  {
-    0xAE, 0x15, 0x6D, 0x43, 0xA7, 0x2C, 0x04, 0x29,
-    0x42, 0x59, 0x58, 0x78, 0xA7, 0x83, 0x07, 0x97,
-    0x60, 0xF5, 0x21, 0xED, 0xB8, 0xB2, 0xC3, 0xD4,
-    0x1A, 0x56, 0x6B, 0x7C, 0xF7, 0x4A, 0x4A, 0x08,
-    0xEA, 0x0F, 0x11, 0x9D, 0x24, 0x0A, 0x62, 0xEC,
-    0x73, 0xB9, 0x50, 0x97, 0x88, 0xFA, 0x3A, 0xED,
-    0xF1, 0x20, 0xEE, 0x88, 0xCB, 0x95, 0x1B, 0x69,
-    0x3F, 0x8F, 0x7C, 0xAF, 0x8C, 0xBA, 0x37, 0x7F
-  },
-  {
-    0x93, 0x30, 0xAA, 0xCA, 0x8C, 0x08, 0x84, 0x46,
-    0x58, 0xC2, 0x95, 0x06, 0xB1, 0xC3, 0x42, 0x72,
-    0xE2, 0xB3, 0xC7, 0xB4, 0xE7, 0x5E, 0x6F, 0xE9,
-    0x9A, 0x01, 0x07, 0xEC, 0x5D, 0xA4, 0x53, 0x0F,
-    0xB1, 0xC8, 0x8C, 0xAA, 0x66, 0xDD, 0x9C, 0x47,
-    0x1E, 0x01, 0xCA, 0x21, 0xA1, 0x3A, 0x5D, 0x6F,
-    0x82, 0x15, 0xDE, 0xD3, 0x14, 0x7E, 0x94, 0xDE,
-    0x20, 0x88, 0x57, 0x1F, 0xD1, 0xBF, 0x23, 0xB6
-  },
-  {
-    0xC1, 0x29, 0xF2, 0x2C, 0x50, 0xF5, 0x99, 0x72,
-    0x32, 0xE2, 0xB9, 0xF9, 0x3D, 0xFA, 0xA0, 0x0A,
-    0xD8, 0xA5, 0x34, 0x29, 0xF9, 0xD1, 0x5B, 0x98,
-    0x42, 0xE3, 0xAE, 0x08, 0xD8, 0x49, 0xEB, 0xDD,
-    0x45, 0x23, 0x8C, 0x85, 0xF9, 0x2C, 0x6F, 0x91,
-    0x7E, 0x0F, 0x8F, 0x6F, 0x94, 0xE2, 0x34, 0xBE,
-    0x07, 0x61, 0x68, 0xE0, 0xDF, 0x43, 0xD0, 0x28,
-    0x45, 0x52, 0x79, 0xA6, 0xFF, 0x65, 0xDC, 0x84
-  },
-  {
-    0x0E, 0x2B, 0x4B, 0xC2, 0xF6, 0xA7, 0x5B, 0xE4,
-    0xB7, 0xC9, 0xD4, 0xB5, 0x3D, 0x10, 0x4D, 0xA0,
-    0x65, 0x85, 0x8D, 0x38, 0x7B, 0x34, 0x0B, 0xC1,
-    0x63, 0x4F, 0x3A, 0x83, 0x32, 0xD5, 0x4C, 0xAA,
-    0x94, 0x30, 0x24, 0xB2, 0x13, 0xDC, 0x8D, 0x4F,
-    0x21, 0x9E, 0xC8, 0xE1, 0xDE, 0xCA, 0xC7, 0xD5,
-    0xC6, 0xAE, 0x69, 0xC9, 0xEF, 0xD8, 0x81, 0x49,
-    0x36, 0x78, 0x38, 0x20, 0x5D, 0x0D, 0xC7, 0xC0
-  },
-  {
-    0x83, 0xB5, 0x43, 0x85, 0x3B, 0x81, 0x42, 0xA8,
-    0x3B, 0xEF, 0xF0, 0x73, 0x5F, 0x20, 0x18, 0x91,
-    0xE7, 0xFF, 0xC6, 0x7D, 0xBD, 0xCD, 0x21, 0xA4,
-    0x22, 0xBB, 0x33, 0x6D, 0xE3, 0x29, 0x72, 0xAE,
-    0x03, 0x92, 0x64, 0x6F, 0x68, 0x27, 0xD8, 0x0C,
-    0xDA, 0x65, 0x4F, 0xD3, 0xA0, 0x77, 0x4C, 0xD2,
-    0xF9, 0x95, 0x51, 0x7C, 0xF0, 0x64, 0xC6, 0x17,
-    0xF2, 0x1A, 0x54, 0x27, 0x5F, 0xE5, 0x0C, 0x8D
-  },
-  {
-    0x09, 0xBE, 0x15, 0xEB, 0x6A, 0x5C, 0x22, 0x6F,
-    0x6D, 0x95, 0x08, 0xCB, 0xA4, 0xA2, 0x51, 0x9F,
-    0xBA, 0x17, 0x2A, 0xF8, 0x37, 0x58, 0x27, 0xD7,
-    0x54, 0xA7, 0xA1, 0xBC, 0x19, 0x25, 0xD1, 0x3F,
-    0x5E, 0x63, 0x43, 0xF3, 0xE1, 0x4D, 0x08, 0xA0,
-    0x6E, 0x8D, 0x37, 0xF8, 0xEC, 0x56, 0xFB, 0x43,
-    0x8E, 0x62, 0x36, 0x66, 0xB6, 0xFB, 0x0E, 0x23,
-    0xFB, 0x50, 0x47, 0x7D, 0x41, 0x1B, 0x0C, 0x3A
-  },
-  {
-    0xC3, 0x57, 0x97, 0xE9, 0x83, 0x2D, 0x3E, 0x23,
-    0x23, 0x33, 0x5B, 0x8C, 0x19, 0xC5, 0xFA, 0x74,
-    0x91, 0x60, 0x2D, 0xBF, 0x6B, 0xEA, 0x77, 0xFA,
-    0xEE, 0xC9, 0x51, 0x0B, 0xC2, 0xE8, 0x91, 0xC8,
-    0xC3, 0x46, 0x21, 0x99, 0xF6, 0x04, 0x18, 0xD2,
-    0xE0, 0xAB, 0xFF, 0xE3, 0x1B, 0x61, 0x3B, 0xB9,
-    0x80, 0xEA, 0x32, 0xB7, 0x6C, 0x82, 0x43, 0x8D,
-    0x02, 0x5F, 0x67, 0x8C, 0xAF, 0x48, 0x24, 0xA4
-  },
-  {
-    0xCF, 0xC0, 0x57, 0xFD, 0xA7, 0x8A, 0x50, 0x31,
-    0x8F, 0x49, 0x78, 0xFF, 0xFF, 0xAF, 0x77, 0x17,
-    0x98, 0xE1, 0x2C, 0x3E, 0xA8, 0xC7, 0x98, 0x19,
-    0x5B, 0xC5, 0xB4, 0xE6, 0x89, 0x1E, 0x61, 0xAA,
-    0x25, 0xF7, 0xAF, 0x4A, 0xA7, 0x28, 0x6A, 0xC8,
-    0x50, 0x76, 0x62, 0xC9, 0x07, 0xED, 0x91, 0x3E,
-    0xDA, 0x65, 0x8F, 0x63, 0xFC, 0x47, 0x99, 0x7C,
-    0x59, 0xB8, 0x59, 0x70, 0xF8, 0x78, 0xCA, 0x18
-  },
-  {
-    0xD8, 0xEB, 0xE0, 0xE6, 0x38, 0xFC, 0x53, 0x5B,
-    0x52, 0xCB, 0x0A, 0xFC, 0xE0, 0xF8, 0x2D, 0xDE,
-    0x28, 0x57, 0x01, 0xAF, 0xF3, 0x29, 0xA5, 0x4B,
-    0xA0, 0x6D, 0xFD, 0x3D, 0x1B, 0x4B, 0x31, 0xF9,
-    0xF4, 0xB2, 0x4D, 0x9D, 0x68, 0x36, 0xF1, 0x22,
-    0x3D, 0x6D, 0xE6, 0x6B, 0xAE, 0x78, 0x88, 0xFE,
-    0xBC, 0x20, 0x40, 0xCF, 0xE9, 0x30, 0xE6, 0x9C,
-    0xED, 0x59, 0xDA, 0x6D, 0xA8, 0xA0, 0xA6, 0xA6
-  },
-  {
-    0x16, 0xB8, 0xC5, 0x5C, 0xF2, 0xF1, 0x35, 0xA4,
-    0x32, 0x59, 0x0D, 0x2D, 0x4C, 0xFA, 0x38, 0x59,
-    0x2F, 0x59, 0x35, 0xF8, 0xE7, 0x1C, 0xE0, 0x8A,
-    0x02, 0x06, 0xA0, 0xE5, 0xAB, 0xEA, 0x90, 0xB2,
-    0xE1, 0x07, 0xEB, 0x86, 0xB9, 0x18, 0x82, 0x3B,
-    0xDD, 0x3B, 0xD2, 0x66, 0x07, 0x22, 0xC8, 0xDB,
-    0xFA, 0x66, 0xAB, 0xB9, 0xF8, 0x63, 0x8E, 0x46,
-    0x34, 0x02, 0xF6, 0x57, 0xA1, 0x68, 0x64, 0x0A
-  },
-  {
-    0x6A, 0x6E, 0x89, 0x38, 0x4F, 0x53, 0x5F, 0x02,
-    0x17, 0x6C, 0x48, 0xA9, 0x93, 0xD3, 0x68, 0x7B,
-    0x38, 0x9B, 0xFC, 0x03, 0x05, 0x0C, 0x77, 0x70,
-    0x86, 0x35, 0x5C, 0x1A, 0x55, 0x59, 0x77, 0x42,
-    0xF0, 0xB7, 0x48, 0x34, 0xA7, 0x1D, 0x05, 0x2A,
-    0xE8, 0xA8, 0x3D, 0xC3, 0x4A, 0x8F, 0xD7, 0xBA,
-    0x5A, 0xA6, 0x9D, 0xBD, 0x61, 0x2A, 0x4C, 0x22,
-    0xDF, 0x4F, 0x74, 0xE2, 0x52, 0x8F, 0xB7, 0xA3
-  },
-  {
-    0x1E, 0x40, 0x38, 0xCF, 0xA5, 0x0D, 0x8B, 0x13,
-    0xEF, 0x68, 0xBE, 0xC3, 0xB0, 0xFF, 0xD5, 0x62,
-    0xA0, 0x7A, 0xD6, 0x34, 0xB5, 0x82, 0x82, 0x57,
-    0xDB, 0xA8, 0x73, 0x04, 0xF8, 0x23, 0xA9, 0x00,
-    0x49, 0x2A, 0x31, 0x37, 0x19, 0x8B, 0x60, 0x5C,
-    0xC7, 0xF7, 0x7C, 0x33, 0xB8, 0xCA, 0x3D, 0x94,
-    0x0F, 0xD9, 0xB3, 0x38, 0xCF, 0x6B, 0x7B, 0x36,
-    0xE7, 0xD9, 0xD9, 0x27, 0x20, 0x97, 0x93, 0xD0
-  },
-  {
-    0x5B, 0xA6, 0xCD, 0x98, 0x8F, 0xF9, 0xA4, 0x81,
-    0x91, 0x42, 0x21, 0x7E, 0xD6, 0x5D, 0x43, 0x7B,
-    0x41, 0x3B, 0xA5, 0x02, 0x6B, 0x55, 0x4D, 0x8D,
-    0x94, 0xEA, 0x27, 0x02, 0xC0, 0x96, 0xD1, 0x01,
-    0x47, 0x75, 0xDB, 0xA2, 0xCA, 0xE9, 0x6F, 0x1E,
-    0x2E, 0x72, 0x29, 0xC3, 0x78, 0xF2, 0x0B, 0x03,
-    0x89, 0xE1, 0x19, 0x54, 0x7F, 0xDD, 0x35, 0x22,
-    0x4A, 0x61, 0x7F, 0xCD, 0xCD, 0x0C, 0xB3, 0xAF
-  },
-  {
-    0x2D, 0x20, 0x96, 0x12, 0x30, 0xE2, 0x50, 0xF8,
-    0x1D, 0xDC, 0xD2, 0xD2, 0xAB, 0x3E, 0xF0, 0xDA,
-    0xCF, 0x96, 0x85, 0x1E, 0xBA, 0xE5, 0x96, 0x34,
-    0x47, 0x19, 0x2C, 0xDB, 0x89, 0xE4, 0x8E, 0x84,
-    0xF3, 0x96, 0xEC, 0x9A, 0x09, 0x25, 0x27, 0x84,
-    0xE1, 0x73, 0xAD, 0xA5, 0x2A, 0x9C, 0x81, 0xAC,
-    0xDA, 0xB3, 0xD8, 0xD6, 0x83, 0x80, 0x24, 0x7A,
-    0xE9, 0x75, 0x23, 0x9B, 0x01, 0x7D, 0xC1, 0xCE
-  },
-  {
-    0x35, 0x38, 0x3E, 0xA7, 0x76, 0x2B, 0x55, 0x31,
-    0x0A, 0x7D, 0x57, 0xFB, 0xD5, 0xA5, 0x49, 0x97,
-    0x57, 0x9B, 0x0B, 0xA3, 0x9A, 0x4E, 0xB8, 0x87,
-    0x94, 0x2B, 0xD1, 0x4F, 0xD8, 0x48, 0x31, 0x88,
-    0xE5, 0x00, 0x48, 0x83, 0x8D, 0x6C, 0x02, 0xDC,
-    0x75, 0x89, 0x59, 0xA9, 0xF7, 0x4D, 0x83, 0x37,
-    0x27, 0x43, 0xE8, 0x64, 0xC6, 0x01, 0xED, 0x70,
-    0x40, 0xA9, 0xE8, 0x71, 0x52, 0xD4, 0xCF, 0xFB
-  },
-  {
-    0x0B, 0x22, 0x3B, 0x6A, 0x1C, 0x2D, 0x3A, 0xB3,
-    0xF9, 0x07, 0x7A, 0x31, 0x7B, 0x7F, 0xE3, 0x2F,
-    0x6F, 0x95, 0x7B, 0x7B, 0x17, 0x41, 0xF2, 0x71,
-    0x77, 0x71, 0x83, 0x4D, 0x37, 0x96, 0xA1, 0x9B,
-    0xA3, 0x62, 0x73, 0xC9, 0xEE, 0xD6, 0x4C, 0x07,
-    0xFA, 0x4E, 0x9A, 0xF7, 0xA9, 0x8A, 0xCE, 0x9C,
-    0x78, 0x9A, 0x79, 0xA5, 0xA0, 0xF9, 0x4D, 0x04,
-    0x05, 0xAA, 0xF0, 0x4A, 0xF3, 0x1E, 0xD7, 0x97
-  },
-  {
-    0x5A, 0x00, 0x7F, 0x58, 0x95, 0x52, 0x4A, 0x5E,
-    0x80, 0x37, 0x03, 0x6E, 0x0F, 0x26, 0x39, 0xFD,
-    0xA8, 0xC5, 0xC1, 0x51, 0x2D, 0x76, 0xE9, 0xD1,
-    0x9B, 0x3D, 0xD2, 0xD5, 0xBA, 0x43, 0xF5, 0x07,
-    0x97, 0x41, 0xA4, 0x58, 0x31, 0x3C, 0x5E, 0x02,
-    0x40, 0x0C, 0xE0, 0x2C, 0xB6, 0x56, 0x80, 0xBE,
-    0x28, 0x2E, 0xAC, 0xD9, 0xA2, 0x54, 0xEF, 0x1C,
-    0xDD, 0xEE, 0xBD, 0xCE, 0xE8, 0x5D, 0x41, 0x87
-  },
-  {
-    0xBE, 0x4D, 0xD1, 0xCC, 0xBD, 0xE1, 0x67, 0x00,
-    0x04, 0xD0, 0xEF, 0xAB, 0x65, 0x43, 0xE9, 0x1C,
-    0x4E, 0x46, 0x64, 0xE5, 0xA2, 0xA8, 0x8B, 0xAC,
-    0x6D, 0xD2, 0x7D, 0x27, 0x64, 0x8D, 0x30, 0x2A,
-    0x06, 0x5B, 0xE6, 0x07, 0x8B, 0x22, 0xE4, 0xC4,
-    0xAB, 0x4F, 0x7F, 0x7C, 0xBF, 0xAF, 0xC1, 0xAD,
-    0x86, 0xEC, 0x2A, 0x50, 0x4F, 0xE5, 0x85, 0x17,
-    0x66, 0xF7, 0xA3, 0x24, 0x47, 0x57, 0xCB, 0x6F
-  },
-  {
-    0x0F, 0xB4, 0x48, 0x3F, 0x96, 0x59, 0x29, 0x6C,
-    0xB9, 0x24, 0x5B, 0x57, 0x79, 0x2A, 0x1E, 0x6A,
-    0x99, 0xF2, 0x87, 0x90, 0x07, 0x72, 0x87, 0x96,
-    0x8A, 0xB3, 0xEF, 0x35, 0x89, 0xE6, 0x90, 0x24,
-    0x06, 0xF1, 0xF3, 0x9D, 0xCC, 0xE0, 0x06, 0x1D,
-    0xEA, 0x94, 0x0F, 0xC8, 0xC1, 0xC4, 0x9F, 0x4B,
-    0x54, 0x5E, 0xED, 0x59, 0xE9, 0x6D, 0xDA, 0xE9,
-    0x6A, 0x6C, 0x35, 0xB5, 0x59, 0x3C, 0x29, 0x77
-  },
-  {
-    0x41, 0xD1, 0xFA, 0xDC, 0x60, 0xA4, 0x6C, 0x9A,
-    0xD0, 0x12, 0x0A, 0x3F, 0x54, 0xD0, 0x05, 0xF5,
-    0xA1, 0x07, 0x5E, 0x2F, 0x71, 0xEE, 0x0D, 0xA6,
-    0x18, 0xBA, 0xC1, 0x46, 0x1E, 0xFA, 0xE9, 0x69,
-    0xEC, 0xCD, 0x7A, 0xA5, 0x75, 0xC4, 0xCD, 0xAE,
-    0x97, 0x1D, 0xED, 0x13, 0xAE, 0x13, 0xC5, 0x06,
-    0x87, 0x2C, 0xEC, 0xB5, 0xB2, 0x08, 0xFA, 0x72,
-    0xA9, 0x48, 0x40, 0x02, 0x3E, 0xDB, 0x3E, 0xFE
-  },
-  {
-    0x2F, 0x7F, 0xDC, 0x1D, 0xA4, 0x4B, 0x6E, 0x5D,
-    0x2D, 0xEC, 0xDE, 0x82, 0x1A, 0xAF, 0x4B, 0x49,
-    0x16, 0x8C, 0x02, 0xE8, 0xD5, 0xF2, 0x5D, 0x5C,
-    0x69, 0x98, 0x71, 0x08, 0x3A, 0xEB, 0xD9, 0x28,
-    0xB7, 0x4D, 0xC2, 0x2D, 0xCB, 0xED, 0xFA, 0xBA,
-    0x93, 0x16, 0xAE, 0xFC, 0xA8, 0x48, 0xD1, 0x5F,
-    0x05, 0x17, 0x32, 0x99, 0x03, 0xD3, 0x4B, 0x83,
-    0x70, 0xDD, 0xF9, 0xBD, 0x58, 0xC6, 0xD0, 0xCD
-  },
-  {
-    0x88, 0x55, 0x8A, 0x46, 0x4E, 0xE1, 0xA8, 0x80,
-    0x3B, 0x23, 0x95, 0xAF, 0x6A, 0x64, 0x90, 0x84,
-    0x2B, 0x5C, 0xD4, 0x3D, 0x41, 0xF6, 0xC0, 0x7C,
-    0xD6, 0xC5, 0xF8, 0x5F, 0x82, 0xF5, 0x84, 0x32,
-    0xA0, 0xB1, 0x62, 0xB4, 0x38, 0xBF, 0x0C, 0xB7,
-    0x08, 0x2A, 0x76, 0x73, 0xE2, 0x87, 0xD6, 0xB9,
-    0x0F, 0x8D, 0x0D, 0xC8, 0xAA, 0x5C, 0xEB, 0xA3,
-    0x6B, 0xFA, 0x77, 0xB1, 0x5B, 0xA0, 0x69, 0x16
-  },
-  {
-    0xEC, 0xC1, 0x49, 0x91, 0x7B, 0x26, 0x63, 0x98,
-    0xB6, 0xF3, 0x29, 0x7E, 0x96, 0x96, 0x73, 0xB1,
-    0x4E, 0xAE, 0x69, 0xCE, 0x43, 0x67, 0x1F, 0xD3,
-    0xC6, 0xC2, 0x15, 0xC7, 0xCF, 0x42, 0xDE, 0xA1,
-    0x02, 0xFC, 0x6B, 0xD9, 0x0C, 0x87, 0xDB, 0xD4,
-    0x29, 0x02, 0x51, 0x12, 0x9C, 0xC1, 0x9B, 0x38,
-    0xCC, 0xF0, 0x0C, 0xBD, 0xB1, 0x6D, 0xD8, 0xDE,
-    0x51, 0x58, 0x60, 0x1A, 0x41, 0x6B, 0x1F, 0x00
-  },
-  {
-    0xED, 0x30, 0x12, 0xF8, 0x9D, 0x71, 0xED, 0x13,
-    0xBB, 0x82, 0x72, 0xEC, 0xDC, 0x3D, 0x0F, 0x51,
-    0xE1, 0x4A, 0x37, 0xC1, 0xEF, 0x77, 0x57, 0x77,
-    0x7A, 0xDA, 0x67, 0x12, 0x78, 0x4B, 0xE1, 0x6E,
-    0xCF, 0xD3, 0xE6, 0x40, 0x58, 0x30, 0xF5, 0x1D,
-    0xB3, 0x3D, 0xCB, 0x85, 0x52, 0x92, 0x93, 0xE2,
-    0x3E, 0x47, 0x3A, 0xBF, 0x8C, 0x5C, 0x76, 0x55,
-    0xD0, 0xC4, 0xF1, 0x52, 0xD0, 0x48, 0xBA, 0xB2
-  },
-  {
-    0x09, 0x7A, 0x81, 0x19, 0x1E, 0x10, 0x05, 0x67,
-    0x6D, 0x6E, 0x22, 0xA9, 0x63, 0x48, 0xFA, 0x4A,
-    0x7C, 0x95, 0x61, 0xFD, 0x4D, 0x22, 0x8E, 0xB2,
-    0x5F, 0x29, 0x47, 0x56, 0xBB, 0x87, 0xA2, 0xBA,
-    0x88, 0x47, 0x5B, 0x03, 0x6F, 0x79, 0xFE, 0x37,
-    0x3D, 0x75, 0x40, 0x87, 0x05, 0x52, 0x00, 0x1D,
-    0x54, 0x79, 0x5F, 0x25, 0x92, 0x39, 0xBE, 0x6D,
-    0x32, 0xC4, 0x87, 0xD1, 0x94, 0x4F, 0x1F, 0xE7
-  },
-  {
-    0x3F, 0xC7, 0x98, 0xE4, 0x69, 0xD3, 0x90, 0x86,
-    0xBA, 0x0B, 0xB4, 0x06, 0x3E, 0x80, 0x5F, 0xDF,
-    0xB2, 0x20, 0x8D, 0xE4, 0x99, 0x18, 0x41, 0x73,
-    0xF9, 0xA2, 0x36, 0x4D, 0x56, 0xBC, 0xD5, 0x63,
-    0xED, 0x61, 0x9B, 0xB6, 0x87, 0x32, 0x24, 0x25,
-    0x01, 0x4A, 0x1A, 0xAD, 0x3B, 0xCF, 0x50, 0xD2,
-    0x2D, 0x83, 0xA9, 0x9D, 0x09, 0x73, 0x0A, 0x92,
-    0xEC, 0x65, 0x46, 0xB3, 0xFC, 0x40, 0xA2, 0xC6
-  },
-  {
-    0x69, 0x12, 0xB4, 0xB3, 0x41, 0xC7, 0xDD, 0x70,
-    0x68, 0x37, 0x38, 0xBA, 0x0E, 0x7D, 0xEB, 0xBA,
-    0xBF, 0xCA, 0x5F, 0x4F, 0xB0, 0x76, 0x0C, 0x84,
-    0x97, 0x76, 0xE9, 0x20, 0x75, 0x0B, 0xF1, 0x37,
-    0x89, 0xA6, 0x99, 0x97, 0x96, 0x23, 0x4E, 0x9E,
-    0x24, 0x07, 0x15, 0xB2, 0x67, 0x67, 0x78, 0x2B,
-    0x85, 0xA6, 0x4D, 0x68, 0x0C, 0x6D, 0x4C, 0xD4,
-    0x26, 0xAD, 0x72, 0xB2, 0xFC, 0xE0, 0x81, 0xE8
-  },
-  {
-    0xCE, 0xCD, 0x14, 0x01, 0x50, 0x15, 0x7D, 0xC9,
-    0x06, 0xC0, 0xFF, 0x7F, 0x87, 0xC0, 0x08, 0x8F,
-    0x31, 0x64, 0x80, 0x78, 0x3B, 0x4F, 0xE0, 0xA5,
-    0x94, 0x45, 0x10, 0xC6, 0x4A, 0x87, 0xE3, 0xED,
-    0x06, 0x67, 0x97, 0xA2, 0x7C, 0xE9, 0xD0, 0xF2,
-    0x84, 0xDC, 0xA5, 0x18, 0x44, 0x18, 0x08, 0xAC,
-    0x18, 0x29, 0x0A, 0xFD, 0xC0, 0x31, 0x29, 0x4B,
-    0x31, 0xAA, 0x8B, 0x4A, 0x9F, 0xCD, 0x78, 0xF8
-  },
-  {
-    0x2A, 0x2B, 0xED, 0x5D, 0x6A, 0xC0, 0x89, 0x28,
-    0x11, 0xA4, 0x09, 0xD9, 0xF1, 0xFF, 0x63, 0x03,
-    0xCC, 0xF9, 0x55, 0x44, 0x57, 0x46, 0x99, 0xCD,
-    0xA7, 0xF7, 0x35, 0x03, 0x01, 0xF6, 0xD0, 0xC4,
-    0xE8, 0x6E, 0x63, 0x5C, 0x80, 0x87, 0x56, 0x66,
-    0xE2, 0xBB, 0x39, 0x07, 0x51, 0x0D, 0x0E, 0x72,
-    0x12, 0x0F, 0x04, 0x86, 0x5E, 0xDC, 0x4C, 0x6C,
-    0xEE, 0xCB, 0x44, 0x62, 0xD6, 0xAF, 0x60, 0xFB
-  },
-  {
-    0x03, 0x85, 0xAE, 0x9B, 0x73, 0x5D, 0xC5, 0x9F,
-    0x30, 0x4D, 0x41, 0x4C, 0xA0, 0x43, 0x74, 0x9A,
-    0xB5, 0x1A, 0xB6, 0x65, 0xEE, 0x01, 0xBE, 0x5E,
-    0x52, 0xDC, 0xF7, 0x25, 0xEE, 0x7D, 0xFE, 0xFE,
-    0xA6, 0xAD, 0x73, 0xF3, 0x35, 0xEE, 0xCF, 0x2A,
-    0x51, 0x02, 0xE8, 0x88, 0x07, 0xFD, 0xC7, 0x5A,
-    0xE6, 0xDC, 0x49, 0x0D, 0x7B, 0x8B, 0x5F, 0x11,
-    0x63, 0x03, 0xEF, 0x60, 0xA5, 0xF1, 0x7C, 0x06
-  },
-  {
-    0x0C, 0xA3, 0xFF, 0x03, 0x89, 0x65, 0xC0, 0x3B,
-    0xC6, 0x5B, 0xBE, 0x2D, 0x86, 0x6C, 0xE9, 0xE0,
-    0xE4, 0xE7, 0xD0, 0x3D, 0xC7, 0xF8, 0x6B, 0xA5,
-    0x65, 0x0F, 0x82, 0xDD, 0xB3, 0xA9, 0xAA, 0x84,
-    0x6B, 0x2B, 0x1F, 0x55, 0x3B, 0xD8, 0x9F, 0xB4,
-    0xF9, 0xB6, 0x2E, 0x3C, 0x7F, 0xAF, 0x9E, 0xC3,
-    0x10, 0x9F, 0xA9, 0x0E, 0xE5, 0x6C, 0x24, 0x63,
-    0xE6, 0xEF, 0xD1, 0xAB, 0xAD, 0x8E, 0x28, 0xE6
-  },
-  {
-    0x6D, 0xFD, 0x4F, 0x22, 0x18, 0x4E, 0xD0, 0x91,
-    0xFD, 0x5A, 0xBA, 0x03, 0x9F, 0xCD, 0x3D, 0xB9,
-    0x22, 0xF5, 0xE5, 0x9B, 0xF8, 0x38, 0xC0, 0x37,
-    0x35, 0x7F, 0xAD, 0x93, 0x4B, 0x45, 0x10, 0x60,
-    0x3F, 0x43, 0xA7, 0x31, 0x9F, 0xFF, 0xA6, 0x23,
-    0x86, 0xF8, 0x78, 0x8F, 0xDF, 0x9D, 0xED, 0x40,
-    0xC6, 0x66, 0xB4, 0xBD, 0xCA, 0x86, 0xD9, 0x32,
-    0x8F, 0xE5, 0x5A, 0xD8, 0x6B, 0x37, 0x2F, 0xC8
-  },
-  {
-    0xA3, 0x18, 0x97, 0x61, 0x02, 0x74, 0x7D, 0x80,
-    0x0F, 0x58, 0x4D, 0xF6, 0x5B, 0xFB, 0x44, 0x3B,
-    0x85, 0x6F, 0x00, 0x9E, 0x74, 0xF7, 0x29, 0x46,
-    0xD0, 0x07, 0x6C, 0xED, 0xAC, 0x04, 0x37, 0x6F,
-    0xAB, 0x97, 0x34, 0x53, 0xAD, 0xAD, 0xC3, 0x10,
-    0xF7, 0x20, 0x81, 0xCB, 0xBA, 0x96, 0x26, 0x4F,
-    0xFE, 0x2B, 0x21, 0xA3, 0xB1, 0x8B, 0xE9, 0xD8,
-    0x8C, 0x42, 0x46, 0xCB, 0xA6, 0xD3, 0x09, 0x01
-  },
-  {
-    0xB5, 0xE6, 0xE4, 0xFC, 0xA0, 0xCF, 0x98, 0x48,
-    0xA0, 0x05, 0x89, 0xC6, 0x54, 0x57, 0xDB, 0x68,
-    0xB3, 0x25, 0x3A, 0x6E, 0x17, 0x78, 0x85, 0x41,
-    0x47, 0x2E, 0x1F, 0xB9, 0x48, 0x17, 0xF8, 0x04,
-    0x05, 0x4D, 0x07, 0xA5, 0xD3, 0x2D, 0xFA, 0x0C,
-    0xDB, 0x6F, 0xB4, 0x4E, 0xED, 0x50, 0xD2, 0x0E,
-    0x5F, 0x22, 0x64, 0x36, 0x11, 0x32, 0xFA, 0x5F,
-    0xCF, 0xD6, 0xE1, 0xB3, 0x67, 0xC1, 0xBE, 0x28
-  },
-  {
-    0x2E, 0xA4, 0x57, 0x38, 0x29, 0x25, 0xE0, 0x3C,
-    0xF8, 0x11, 0x10, 0x05, 0x0E, 0x63, 0x6A, 0xD6,
-    0x78, 0xE0, 0xAA, 0x3C, 0xBC, 0x69, 0x00, 0xBD,
-    0xEF, 0x27, 0x8A, 0xAA, 0x18, 0xF2, 0x35, 0xE2,
-    0x51, 0x60, 0xA2, 0x0E, 0x23, 0xFE, 0x0E, 0x62,
-    0xA8, 0x51, 0x1B, 0x5D, 0xD0, 0x59, 0x2F, 0x79,
-    0xCB, 0xC8, 0xEB, 0x7D, 0xEA, 0x64, 0xAC, 0x86,
-    0x67, 0x49, 0x43, 0x45, 0xC6, 0x89, 0x2D, 0xD4
-  },
-  {
-    0x96, 0xB3, 0x49, 0x8B, 0xCC, 0xD7, 0x8B, 0x5A,
-    0x40, 0x1B, 0x27, 0x38, 0x78, 0x7D, 0x28, 0xA9,
-    0x8A, 0x0E, 0xDF, 0xDC, 0x7C, 0x0B, 0x5F, 0xF9,
-    0x43, 0xCF, 0xE1, 0xB1, 0x4E, 0x9C, 0xF5, 0xD9,
-    0xED, 0x43, 0x10, 0x7D, 0xFB, 0xDD, 0x9E, 0x97,
-    0x28, 0xD5, 0xFD, 0xD6, 0xF7, 0x1F, 0xBC, 0x77,
-    0x0E, 0xAD, 0xDC, 0x4F, 0x2E, 0x40, 0x9A, 0xBE,
-    0x71, 0x92, 0x7B, 0xAE, 0x1F, 0x8F, 0x73, 0xD1
-  },
-  {
-    0xCE, 0x1B, 0xFB, 0x9A, 0xFE, 0xD2, 0x8A, 0xF4,
-    0xDC, 0x75, 0x35, 0xAD, 0xEF, 0x71, 0xB8, 0xF1,
-    0xB8, 0x0A, 0x8D, 0x72, 0x94, 0xB4, 0x11, 0xFD,
-    0x1E, 0xD3, 0x93, 0xCF, 0x23, 0x2D, 0x3A, 0x5C,
-    0x5D, 0xF2, 0x3D, 0xBB, 0x1D, 0xB2, 0x6D, 0xDD,
-    0xF6, 0xF7, 0x45, 0xF8, 0xBC, 0x24, 0xC3, 0x78,
-    0x1F, 0x2D, 0xBB, 0xC8, 0x18, 0xA0, 0x0A, 0xE1,
-    0xFB, 0x9D, 0x64, 0x63, 0xE9, 0x5F, 0x29, 0x86
-  },
-  {
-    0xE6, 0x4D, 0x37, 0x35, 0x6B, 0x29, 0x6B, 0x36,
-    0x93, 0x0E, 0xAB, 0xE4, 0x54, 0xDB, 0x11, 0xB2,
-    0x09, 0x7B, 0x0C, 0x04, 0x0B, 0xED, 0x57, 0x98,
-    0x87, 0x8D, 0x38, 0xA8, 0xC4, 0xD1, 0xC6, 0xF3,
-    0x26, 0x1F, 0x36, 0xBF, 0xF7, 0x64, 0xE3, 0xB4,
-    0xD6, 0x06, 0xB3, 0x17, 0xE5, 0xFF, 0x50, 0x04,
-    0x18, 0x45, 0x92, 0xB0, 0xB7, 0xDD, 0xFB, 0x8C,
-    0x2F, 0xD8, 0x35, 0x23, 0x26, 0xCD, 0xDD, 0xB1
-  },
-  {
-    0x85, 0xE6, 0xFE, 0x54, 0xE1, 0xE7, 0x60, 0x46,
-    0xAF, 0x68, 0xF5, 0xC6, 0x04, 0x4C, 0x1E, 0x3F,
-    0xFF, 0x3B, 0xFC, 0xA0, 0xBA, 0xEC, 0xAE, 0xF6,
-    0xA1, 0xDF, 0x90, 0x35, 0x0D, 0xF2, 0xB0, 0xBE,
-    0xC6, 0xA4, 0x20, 0xEE, 0x8F, 0x49, 0xAD, 0x44,
-    0x64, 0xEC, 0x4C, 0x1E, 0x7D, 0x71, 0xF6, 0x67,
-    0x61, 0x4A, 0xCE, 0xBD, 0xAD, 0xA3, 0xDF, 0x32,
-    0x07, 0x79, 0x07, 0x83, 0x23, 0xF6, 0xA8, 0xAF
-  },
-  {
-    0xB1, 0x2F, 0xF1, 0xEB, 0x3B, 0xAB, 0x32, 0x0D,
-    0x78, 0x55, 0xB5, 0x49, 0xD7, 0x2B, 0x72, 0x47,
-    0x59, 0x91, 0x68, 0x11, 0xCB, 0xCF, 0x3E, 0x1A,
-    0x12, 0x82, 0x3F, 0x98, 0xB6, 0x4A, 0xB5, 0xC4,
-    0x59, 0x41, 0x61, 0x0F, 0x6B, 0x47, 0x1E, 0x35,
-    0xFF, 0x79, 0x28, 0x29, 0xDD, 0x5A, 0xDE, 0x51,
-    0x79, 0x12, 0x57, 0x38, 0xF3, 0xF2, 0x37, 0x28,
-    0x63, 0x0F, 0x1E, 0xEC, 0x57, 0x77, 0x5A, 0x19
-  },
-  {
-    0xB4, 0xDB, 0xE7, 0x2A, 0x1E, 0x21, 0x69, 0x7A,
-    0x47, 0x44, 0xBE, 0x65, 0x00, 0x0C, 0xB1, 0xBA,
-    0xD3, 0x7C, 0xE2, 0x14, 0x16, 0xEE, 0x6F, 0xCE,
-    0xA8, 0x4E, 0xBA, 0xF1, 0x2A, 0x59, 0xC1, 0x1D,
-    0x7C, 0x08, 0x0D, 0xF9, 0x2F, 0xB2, 0xAA, 0x8F,
-    0x1C, 0x4E, 0xE8, 0xE2, 0xA2, 0x2D, 0x30, 0xBE,
-    0x49, 0x85, 0x82, 0xD7, 0xC5, 0xFB, 0xBA, 0x16,
-    0x5A, 0x47, 0x26, 0x89, 0xAF, 0xF6, 0x01, 0xB6
-  },
-  {
-    0x34, 0x82, 0x18, 0xBE, 0x4D, 0xE0, 0x8D, 0xFB,
-    0x24, 0x5B, 0xF2, 0x52, 0x86, 0xE3, 0x66, 0x18,
-    0x63, 0x1D, 0x3B, 0xDB, 0x58, 0x27, 0xD9, 0xF7,
-    0x4F, 0xA0, 0x43, 0x01, 0x66, 0x11, 0x31, 0xA4,
-    0xD5, 0x5C, 0x76, 0x09, 0xB1, 0xA6, 0xA0, 0x3B,
-    0x85, 0x3F, 0x07, 0x33, 0xE0, 0xAE, 0xC0, 0x26,
-    0x16, 0xA0, 0xA4, 0x0E, 0x84, 0x91, 0xF4, 0x94,
-    0xD7, 0x6C, 0x15, 0x43, 0xCF, 0xC6, 0x82, 0x14
-  },
-  {
-    0x42, 0x87, 0xE1, 0x9B, 0xAB, 0x1D, 0x4F, 0x75,
-    0xE1, 0xD1, 0x97, 0xCB, 0xB4, 0x3F, 0x11, 0x33,
-    0x13, 0x07, 0xF2, 0xF7, 0x5B, 0x8D, 0x0D, 0x50,
-    0x27, 0x8E, 0xEC, 0x54, 0x09, 0x99, 0xA0, 0x09,
-    0xC0, 0x33, 0x73, 0x52, 0x96, 0x07, 0xFD, 0xA6,
-    0x05, 0xAA, 0x0F, 0x07, 0x39, 0xE2, 0x0B, 0xD1,
-    0xFD, 0xAA, 0x27, 0xD7, 0xC0, 0xCD, 0xC8, 0x28,
-    0x4D, 0x98, 0xE6, 0xC7, 0x55, 0xA7, 0x56, 0x2E
-  },
-  {
-    0x08, 0x56, 0x0C, 0x99, 0x88, 0xC8, 0xCE, 0x5A,
-    0x88, 0x76, 0xA6, 0x00, 0xB6, 0xE5, 0x12, 0xB4,
-    0xE2, 0x43, 0xA4, 0xA4, 0x30, 0x0A, 0xD5, 0xAB,
-    0x2F, 0xF0, 0x63, 0x7C, 0xC5, 0x6A, 0x04, 0x41,
-    0x64, 0x5B, 0x3D, 0xEB, 0x16, 0x84, 0x06, 0x4E,
-    0xA4, 0x3B, 0xAE, 0x1C, 0xB6, 0x2D, 0x3B, 0xC4,
-    0x15, 0x37, 0xFE, 0x8D, 0x7D, 0xEC, 0xA7, 0x17,
-    0x29, 0x37, 0x77, 0x6B, 0xBE, 0xD7, 0x93, 0xA9
-  },
-  {
-    0xB5, 0x36, 0x16, 0x23, 0x94, 0x77, 0x6F, 0xA7,
-    0xDD, 0x5E, 0x9F, 0xDD, 0x01, 0x53, 0x0F, 0xDA,
-    0x52, 0xBE, 0x1D, 0x39, 0xBD, 0x60, 0x9B, 0x3F,
-    0x3B, 0xD0, 0x47, 0x6B, 0x81, 0x60, 0xAA, 0x18,
-    0xAB, 0x2D, 0x37, 0xD2, 0x99, 0x16, 0x28, 0xBE,
-    0x2F, 0xCC, 0x12, 0x56, 0xCD, 0x48, 0x55, 0x25,
-    0xD1, 0xFA, 0x35, 0x6B, 0x04, 0xD3, 0x0E, 0x4A,
-    0x0F, 0x9F, 0xFF, 0xC9, 0x93, 0x5C, 0xF4, 0x32
-  },
-  {
-    0x02, 0xAB, 0xC9, 0x71, 0x75, 0xED, 0xB4, 0x7A,
-    0x4C, 0xB4, 0xBD, 0x38, 0xD8, 0x2F, 0x86, 0xAA,
-    0x09, 0x9C, 0x8B, 0x8F, 0xA8, 0xAB, 0x3F, 0xE1,
-    0xCE, 0x10, 0x5A, 0x22, 0xBD, 0x61, 0x65, 0x78,
-    0xC6, 0xDD, 0x15, 0x15, 0xDF, 0xB0, 0x39, 0x7E,
-    0x1D, 0x9D, 0x06, 0x71, 0x91, 0x6D, 0xE4, 0xB5,
-    0x22, 0xE7, 0x4E, 0x63, 0x75, 0x23, 0x68, 0x93,
-    0xC8, 0xFD, 0xA6, 0xD2, 0x36, 0xBC, 0x8D, 0xA1
-  },
-  {
-    0x21, 0xE1, 0xEB, 0x73, 0x12, 0x76, 0xA8, 0x35,
-    0xA6, 0xDD, 0xEA, 0x71, 0x78, 0xB2, 0x3E, 0xBC,
-    0x9A, 0xEC, 0xAA, 0xBC, 0x7C, 0xCD, 0x70, 0x65,
-    0x87, 0xD7, 0x1B, 0x85, 0x44, 0x97, 0x93, 0xB0,
-    0x7E, 0x7B, 0x17, 0x9A, 0x3D, 0xA7, 0xA5, 0x71,
-    0x98, 0x29, 0x97, 0xE8, 0xF5, 0xA6, 0x7F, 0x8C,
-    0x93, 0xDA, 0xF1, 0x1A, 0xAA, 0x23, 0xF0, 0x7E,
-    0x4D, 0xF7, 0xA1, 0x31, 0x05, 0xA5, 0x42, 0x09
-  },
-  {
-    0x1C, 0xC5, 0x37, 0xD3, 0xE5, 0x0E, 0xD9, 0xFD,
-    0xCD, 0xC4, 0xF3, 0xCC, 0xB4, 0x81, 0x93, 0x75,
-    0x41, 0x53, 0x04, 0xD8, 0xE5, 0xA6, 0xC0, 0x58,
-    0x05, 0xB6, 0xB5, 0xD9, 0xE1, 0xFC, 0x18, 0x25,
-    0x68, 0x64, 0xF1, 0x0C, 0xD8, 0x12, 0xF8, 0x48,
-    0x01, 0xB8, 0x61, 0x6A, 0x92, 0xB4, 0x07, 0x95,
-    0xA1, 0x55, 0x93, 0x24, 0x64, 0xF6, 0x2D, 0xBF,
-    0x6E, 0xBD, 0x2F, 0x9A, 0xC3, 0xEE, 0x28, 0x16
-  },
-  {
-    0x6F, 0x6C, 0xD2, 0x60, 0x05, 0xC8, 0xA5, 0x61,
-    0xCF, 0xF5, 0x1E, 0x30, 0x1D, 0x1A, 0x06, 0x8F,
-    0xC2, 0x8B, 0x9B, 0x65, 0x0D, 0xDD, 0x27, 0xAE,
-    0x97, 0xB5, 0x22, 0xDA, 0xE9, 0x63, 0x91, 0x34,
-    0xD5, 0xA1, 0x50, 0x58, 0x7B, 0x0A, 0x90, 0x1F,
-    0x3B, 0x9A, 0xAB, 0xC7, 0xE3, 0x97, 0x84, 0x98,
-    0x4C, 0xC5, 0x85, 0x23, 0x5D, 0x8E, 0x17, 0xCE,
-    0x9E, 0x3B, 0x42, 0x10, 0x5B, 0xF9, 0x03, 0x4C
-  },
-  {
-    0x69, 0xC1, 0x7C, 0x28, 0x64, 0xC3, 0x37, 0x9F,
-    0xAF, 0xB7, 0x14, 0xC0, 0x47, 0x5E, 0x00, 0xCF,
-    0x7C, 0x9B, 0x37, 0x7D, 0x57, 0xA8, 0xBC, 0x96,
-    0x98, 0xB4, 0xD3, 0x4A, 0x54, 0x85, 0x41, 0x76,
-    0xA2, 0xF8, 0xD1, 0x5A, 0xFB, 0x54, 0x77, 0x56,
-    0x04, 0x78, 0x73, 0x90, 0xD6, 0x00, 0x74, 0xCD,
-    0x4B, 0xCA, 0x69, 0x02, 0xEA, 0x23, 0xD3, 0xAE,
-    0x1A, 0xC0, 0x83, 0x40, 0x9F, 0xE3, 0x8A, 0x4D
-  },
-  {
-    0x86, 0x69, 0xB0, 0xAD, 0x35, 0x82, 0x9E, 0xDC,
-    0x2A, 0x8A, 0x09, 0x85, 0x2B, 0x0E, 0xE9, 0xB3,
-    0x90, 0x3B, 0xF6, 0xC1, 0xF8, 0x2F, 0x90, 0xA3,
-    0xF0, 0xED, 0x95, 0x24, 0x19, 0x2F, 0x10, 0x91,
-    0xFD, 0x64, 0x84, 0xE0, 0x4C, 0x3F, 0xEA, 0x8B,
-    0x02, 0x2F, 0x4A, 0x89, 0x50, 0xDB, 0x17, 0xD4,
-    0x73, 0x41, 0x45, 0xC0, 0xCE, 0xC5, 0xDC, 0x38,
-    0x74, 0x55, 0xC1, 0x26, 0x90, 0x3F, 0x77, 0x66
-  },
-  {
-    0x3F, 0x35, 0xC4, 0x5D, 0x24, 0xFC, 0xFB, 0x4A,
-    0xCC, 0xA6, 0x51, 0x07, 0x6C, 0x08, 0x00, 0x0E,
-    0x27, 0x9E, 0xBB, 0xFF, 0x37, 0xA1, 0x33, 0x3C,
-    0xE1, 0x9F, 0xD5, 0x77, 0x20, 0x2D, 0xBD, 0x24,
-    0xB5, 0x8C, 0x51, 0x4E, 0x36, 0xDD, 0x9B, 0xA6,
-    0x4A, 0xF4, 0xD7, 0x8E, 0xEA, 0x4E, 0x2D, 0xD1,
-    0x3B, 0xC1, 0x8D, 0x79, 0x88, 0x87, 0xDD, 0x97,
-    0x13, 0x76, 0xBC, 0xAE, 0x00, 0x87, 0xE1, 0x7E
-  },
-};
-
-
-
-
-static const uint8_t blake2bp_keyed_kat[KAT_LENGTH][BLAKE2B_OUTBYTES] =
-{
-  {
-    0x9D, 0x94, 0x61, 0x07, 0x3E, 0x4E, 0xB6, 0x40,
-    0xA2, 0x55, 0x35, 0x7B, 0x83, 0x9F, 0x39, 0x4B,
-    0x83, 0x8C, 0x6F, 0xF5, 0x7C, 0x9B, 0x68, 0x6A,
-    0x3F, 0x76, 0x10, 0x7C, 0x10, 0x66, 0x72, 0x8F,
-    0x3C, 0x99, 0x56, 0xBD, 0x78, 0x5C, 0xBC, 0x3B,
-    0xF7, 0x9D, 0xC2, 0xAB, 0x57, 0x8C, 0x5A, 0x0C,
-    0x06, 0x3B, 0x9D, 0x9C, 0x40, 0x58, 0x48, 0xDE,
-    0x1D, 0xBE, 0x82, 0x1C, 0xD0, 0x5C, 0x94, 0x0A
-  },
-  {
-    0xFF, 0x8E, 0x90, 0xA3, 0x7B, 0x94, 0x62, 0x39,
-    0x32, 0xC5, 0x9F, 0x75, 0x59, 0xF2, 0x60, 0x35,
-    0x02, 0x9C, 0x37, 0x67, 0x32, 0xCB, 0x14, 0xD4,
-    0x16, 0x02, 0x00, 0x1C, 0xBB, 0x73, 0xAD, 0xB7,
-    0x92, 0x93, 0xA2, 0xDB, 0xDA, 0x5F, 0x60, 0x70,
-    0x30, 0x25, 0x14, 0x4D, 0x15, 0x8E, 0x27, 0x35,
-    0x52, 0x95, 0x96, 0x25, 0x1C, 0x73, 0xC0, 0x34,
-    0x5C, 0xA6, 0xFC, 0xCB, 0x1F, 0xB1, 0xE9, 0x7E
-  },
-  {
-    0xD6, 0x22, 0x0C, 0xA1, 0x95, 0xA0, 0xF3, 0x56,
-    0xA4, 0x79, 0x5E, 0x07, 0x1C, 0xEE, 0x1F, 0x54,
-    0x12, 0xEC, 0xD9, 0x5D, 0x8A, 0x5E, 0x01, 0xD7,
-    0xC2, 0xB8, 0x67, 0x50, 0xCA, 0x53, 0xD7, 0xF6,
-    0x4C, 0x29, 0xCB, 0xB3, 0xD2, 0x89, 0xC6, 0xF4,
-    0xEC, 0xC6, 0xC0, 0x1E, 0x3C, 0xA9, 0x33, 0x89,
-    0x71, 0x17, 0x03, 0x88, 0xE3, 0xE4, 0x02, 0x28,
-    0x47, 0x90, 0x06, 0xD1, 0xBB, 0xEB, 0xAD, 0x51
-  },
-  {
-    0x30, 0x30, 0x2C, 0x3F, 0xC9, 0x99, 0x06, 0x5D,
-    0x10, 0xDC, 0x98, 0x2C, 0x8F, 0xEE, 0xF4, 0x1B,
-    0xBB, 0x66, 0x42, 0x71, 0x8F, 0x62, 0x4A, 0xF6,
-    0xE3, 0xEA, 0xBE, 0xA0, 0x83, 0xE7, 0xFE, 0x78,
-    0x53, 0x40, 0xDB, 0x4B, 0x08, 0x97, 0xEF, 0xFF,
-    0x39, 0xCE, 0xE1, 0xDC, 0x1E, 0xB7, 0x37, 0xCD,
-    0x1E, 0xEA, 0x0F, 0xE7, 0x53, 0x84, 0x98, 0x4E,
-    0x7D, 0x8F, 0x44, 0x6F, 0xAA, 0x68, 0x3B, 0x80
-  },
-  {
-    0x32, 0xF3, 0x98, 0xA6, 0x0C, 0x1E, 0x53, 0xF1,
-    0xF8, 0x1D, 0x6D, 0x8D, 0xA2, 0xEC, 0x11, 0x75,
-    0x42, 0x2D, 0x6B, 0x2C, 0xFA, 0x0C, 0x0E, 0x66,
-    0xD8, 0xC4, 0xE7, 0x30, 0xB2, 0x96, 0xA4, 0xB5,
-    0x3E, 0x39, 0x2E, 0x39, 0x85, 0x98, 0x22, 0xA1,
-    0x45, 0xAE, 0x5F, 0x1A, 0x24, 0xC2, 0x7F, 0x55,
-    0x33, 0x9E, 0x2B, 0x4B, 0x44, 0x58, 0xE8, 0xC5,
-    0xEB, 0x19, 0xAA, 0x14, 0x20, 0x64, 0x27, 0xAA
-  },
-  {
-    0x23, 0x6D, 0xB9, 0x33, 0xF1, 0x8A, 0x9D, 0xBD,
-    0x4E, 0x50, 0xB7, 0x29, 0x53, 0x90, 0x65, 0xBD,
-    0xA4, 0x20, 0xDF, 0x97, 0xAC, 0x78, 0x0B, 0xE4,
-    0x3F, 0x59, 0x10, 0x3C, 0x47, 0x2E, 0x0B, 0xCC,
-    0xA6, 0xD4, 0x97, 0x38, 0x97, 0x86, 0xAF, 0x22,
-    0xBA, 0x94, 0x30, 0xB7, 0x4D, 0x6F, 0x74, 0xB1,
-    0x3F, 0x6F, 0x94, 0x9E, 0x25, 0x6A, 0x14, 0x0A,
-    0xA3, 0x4B, 0x47, 0x70, 0x0B, 0x10, 0x03, 0x43
-  },
-  {
-    0x23, 0x8C, 0x9D, 0x08, 0x02, 0x85, 0xE3, 0x54,
-    0x35, 0xCB, 0x53, 0x15, 0x5D, 0x9F, 0x79, 0x2C,
-    0xA1, 0xBB, 0x27, 0xDE, 0x4F, 0x9B, 0x6C, 0x87,
-    0x26, 0xE1, 0x1C, 0x02, 0x8E, 0x7B, 0x87, 0x87,
-    0x33, 0x54, 0x91, 0x12, 0xA3, 0x28, 0xB5, 0x0E,
-    0x8C, 0xD8, 0xBA, 0x27, 0x87, 0x21, 0x7E, 0x46,
-    0xB8, 0x16, 0x8D, 0x57, 0x11, 0x3D, 0xD4, 0x04,
-    0xD9, 0x14, 0xE2, 0x9A, 0x6A, 0x54, 0x70, 0xE6
-  },
-  {
-    0x9A, 0x02, 0x1E, 0xBD, 0x50, 0x4A, 0x97, 0x59,
-    0x6D, 0x0E, 0x85, 0x04, 0x8A, 0xE1, 0xDA, 0x89,
-    0x99, 0xE3, 0xA0, 0x47, 0x01, 0x6F, 0x17, 0xC6,
-    0xC5, 0x55, 0x6C, 0x27, 0x31, 0xE9, 0xB1, 0x39,
-    0x26, 0x1F, 0x84, 0x3F, 0xAD, 0x6B, 0xD4, 0x3F,
-    0x7C, 0x7C, 0x58, 0x7F, 0x69, 0x8D, 0x69, 0xB6,
-    0x82, 0xE5, 0x68, 0xB4, 0x42, 0xAC, 0x45, 0x88,
-    0x98, 0x57, 0xB7, 0x69, 0x07, 0x34, 0xCD, 0xBB
-  },
-  {
-    0x3A, 0xBA, 0x07, 0xAE, 0x98, 0x0E, 0x33, 0x86,
-    0x37, 0x47, 0x9D, 0xCA, 0x1E, 0x35, 0x28, 0x00,
-    0xF4, 0x58, 0x8E, 0x62, 0xD8, 0x23, 0x36, 0x5A,
-    0xA6, 0x9C, 0x5B, 0x25, 0xFC, 0xE1, 0x29, 0x68,
-    0xD2, 0x6C, 0x9B, 0xDB, 0xEE, 0x9A, 0x32, 0xBF,
-    0xFD, 0x42, 0xE6, 0xB2, 0x2C, 0x81, 0x38, 0xA6,
-    0x1C, 0x1F, 0xCE, 0x49, 0xFF, 0xBC, 0x19, 0x0E,
-    0x1E, 0x15, 0x16, 0x01, 0x53, 0xCC, 0xB6, 0xB4
-  },
-  {
-    0x77, 0x4C, 0xDF, 0x9A, 0xBB, 0x50, 0x81, 0xFE,
-    0x07, 0xEB, 0x57, 0x25, 0xE6, 0x06, 0x9B, 0x8D,
-    0x6C, 0x7E, 0x60, 0x04, 0xA2, 0x4D, 0x70, 0xF7,
-    0xDF, 0xAB, 0xFC, 0x03, 0x82, 0x5B, 0xBC, 0x3B,
-    0x30, 0xE6, 0x20, 0xB6, 0x04, 0x1F, 0x3C, 0xC2,
-    0x89, 0x6B, 0x14, 0xAB, 0x66, 0x0A, 0xF7, 0x2E,
-    0x24, 0x95, 0x10, 0xAC, 0x2F, 0xE8, 0x10, 0xCC,
-    0x77, 0x63, 0xA2, 0xE5, 0xC3, 0xFC, 0xA7, 0xFC
-  },
-  {
-    0x9E, 0x08, 0x9F, 0x51, 0x65, 0x7B, 0x29, 0xC2,
-    0x66, 0x8E, 0x28, 0x50, 0x52, 0x4E, 0x53, 0xAE,
-    0xAA, 0xA7, 0x30, 0x6F, 0x2A, 0xD5, 0xA2, 0x32,
-    0xB5, 0xF0, 0x7F, 0x68, 0x8D, 0x8A, 0xB2, 0xB4,
-    0x25, 0xDF, 0x7E, 0xA5, 0xBD, 0x3E, 0x9F, 0xFD,
-    0x61, 0x68, 0x38, 0x90, 0x15, 0x1D, 0x78, 0xBB,
-    0x94, 0x03, 0x11, 0x85, 0xAC, 0xA4, 0x81, 0xE2,
-    0x14, 0x0F, 0xE3, 0x79, 0x85, 0x36, 0x76, 0x43
-  },
-  {
-    0xB3, 0x5B, 0xD5, 0x4E, 0x4F, 0x81, 0x69, 0x6B,
-    0x4F, 0x22, 0x31, 0x6A, 0x1E, 0x33, 0x7D, 0x98,
-    0xD1, 0xC6, 0xB0, 0x61, 0x10, 0x99, 0x87, 0x63,
-    0xB5, 0x91, 0x33, 0x35, 0x92, 0x3A, 0x40, 0x76,
-    0xCB, 0x80, 0xD6, 0xD8, 0xA5, 0x18, 0x62, 0x91,
-    0x13, 0x47, 0x7B, 0x30, 0xA1, 0x32, 0xA6, 0xB2,
-    0x7F, 0xC1, 0xEE, 0x79, 0xF6, 0xB2, 0xE0, 0xD3,
-    0x5D, 0x5B, 0xC2, 0x97, 0x27, 0x46, 0x3D, 0xB5
-  },
-  {
-    0x12, 0x39, 0x30, 0xD5, 0xA4, 0xB7, 0x3B, 0x49,
-    0x1F, 0x50, 0xE5, 0x6E, 0x2B, 0x73, 0x97, 0xA4,
-    0x3D, 0x2E, 0x47, 0x87, 0x23, 0x76, 0x02, 0xB6,
-    0x6F, 0xE0, 0xA8, 0x47, 0xBD, 0x13, 0xCB, 0xE8,
-    0xB3, 0x7D, 0xC7, 0x03, 0xD7, 0xB2, 0xB4, 0xEA,
-    0xA8, 0xBF, 0xB9, 0xA5, 0x8A, 0x7D, 0x71, 0x9C,
-    0x90, 0x8F, 0x19, 0x66, 0xA2, 0xF1, 0x9F, 0xE6,
-    0xEB, 0x1A, 0x78, 0x96, 0x2A, 0xFA, 0x5B, 0xF9
-  },
-  {
-    0x08, 0x9C, 0xBC, 0x7E, 0xE1, 0xB1, 0x2C, 0x0C,
-    0xC9, 0xC8, 0x3F, 0xF6, 0x66, 0xFE, 0xC8, 0x02,
-    0x6B, 0xB7, 0x1B, 0x90, 0x84, 0x97, 0x9B, 0x0E,
-    0xA8, 0xB7, 0x23, 0xBB, 0xBE, 0x8B, 0x00, 0xD4,
-    0x10, 0x08, 0xB6, 0x04, 0x99, 0xF2, 0x4F, 0x24,
-    0x1B, 0x63, 0x28, 0x1F, 0xE5, 0xB4, 0xD8, 0x89,
-    0x66, 0x30, 0x9C, 0x0D, 0x7E, 0x64, 0x66, 0x91,
-    0x05, 0xE5, 0x1E, 0x69, 0xD7, 0xAF, 0x8C, 0xE5
-  },
-  {
-    0x6B, 0x3C, 0x67, 0x89, 0x47, 0xF6, 0x12, 0x52,
-    0x65, 0x7C, 0x35, 0x49, 0x78, 0xC1, 0x01, 0xB2,
-    0xFD, 0xD2, 0x72, 0x9E, 0xC3, 0x49, 0x27, 0xDD,
-    0x5E, 0xFF, 0x0A, 0x7C, 0x0A, 0x86, 0x58, 0x26,
-    0xE8, 0x33, 0xC3, 0x63, 0x23, 0x21, 0x31, 0xB1,
-    0x05, 0x93, 0xBE, 0x1C, 0xCF, 0x6B, 0xA5, 0x4E,
-    0xCC, 0x14, 0x31, 0x2F, 0x45, 0xBF, 0xFC, 0x24,
-    0x04, 0x62, 0x9F, 0xF8, 0x02, 0x67, 0xF0, 0x94
-  },
-  {
-    0xAA, 0x0C, 0x23, 0xEA, 0x1C, 0x6F, 0xE2, 0xE9,
-    0x0A, 0x77, 0x18, 0xEF, 0x4A, 0xA4, 0x75, 0x1F,
-    0xF6, 0xBE, 0xB9, 0xD4, 0x61, 0x63, 0x59, 0x5B,
-    0x5D, 0x4F, 0xB8, 0x96, 0x00, 0x52, 0x5C, 0x5B,
-    0x6C, 0xF1, 0x9E, 0xCD, 0xB2, 0x47, 0x78, 0x72,
-    0xA7, 0xA1, 0x2D, 0x40, 0xE5, 0x06, 0x36, 0x08,
-    0xE5, 0xF0, 0x00, 0x8E, 0x79, 0x72, 0xA9, 0xC0,
-    0x1A, 0x4B, 0xE2, 0xAF, 0xE9, 0x53, 0x2F, 0x9C
-  },
-  {
-    0x63, 0x34, 0x7A, 0xB4, 0xCB, 0xB6, 0xF2, 0x89,
-    0x52, 0x99, 0x2C, 0x07, 0x9D, 0x18, 0xD4, 0x20,
-    0x01, 0xB7, 0xF3, 0xA9, 0xD0, 0xFD, 0x90, 0xB0,
-    0xA4, 0x77, 0x1F, 0x69, 0x72, 0xF0, 0xC5, 0x32,
-    0x89, 0xC8, 0xAE, 0xE1, 0x43, 0x29, 0x4B, 0x50,
-    0xC6, 0x34, 0x12, 0x58, 0x5C, 0xDC, 0xE4, 0xFF,
-    0x7B, 0xED, 0x11, 0x2C, 0xD0, 0x3C, 0x9B, 0x1D,
-    0xF3, 0xDE, 0xF0, 0xCC, 0x32, 0x0D, 0x6B, 0x70
-  },
-  {
-    0x23, 0x96, 0xC0, 0xCB, 0x9E, 0xDA, 0xAC, 0xA9,
-    0xD8, 0xB1, 0x04, 0x65, 0x2C, 0xB7, 0xF1, 0x25,
-    0xF1, 0x93, 0x55, 0x1A, 0xE5, 0xD7, 0xBC, 0x94,
-    0x63, 0x30, 0x7C, 0x9E, 0x69, 0xCA, 0x7D, 0xA2,
-    0x3A, 0x9F, 0xBC, 0xBC, 0xB8, 0x66, 0x69, 0xD5,
-    0xBA, 0x63, 0x43, 0x85, 0x93, 0xE1, 0x32, 0xF9,
-    0x92, 0xB5, 0x7C, 0x00, 0x17, 0xC8, 0x6D, 0xDB,
-    0x9B, 0x47, 0x28, 0x6E, 0xF5, 0xB6, 0x87, 0x18
-  },
-  {
-    0xA9, 0x4B, 0x80, 0x22, 0x57, 0xFD, 0x03, 0x1E,
-    0xE6, 0x0F, 0x1B, 0xE1, 0x84, 0x38, 0x3A, 0x76,
-    0x32, 0x85, 0x39, 0xF9, 0xD8, 0x06, 0x08, 0x72,
-    0xEF, 0x35, 0x73, 0xBE, 0xB6, 0xF2, 0x73, 0x68,
-    0x08, 0x95, 0x90, 0xED, 0xBB, 0x21, 0xF4, 0xD8,
-    0xF1, 0x81, 0xBA, 0x66, 0x20, 0x75, 0xF9, 0x19,
-    0x05, 0x97, 0x4B, 0xEE, 0xEF, 0x1F, 0xC5, 0xCB,
-    0x9B, 0xCF, 0xB2, 0x8A, 0xAE, 0x1E, 0x4D, 0xE3
-  },
-  {
-    0x52, 0xC7, 0xD3, 0x39, 0x9A, 0x03, 0x80, 0x04,
-    0xBE, 0xA5, 0x2D, 0x3E, 0xA9, 0xE9, 0x1E, 0x25,
-    0x44, 0xC8, 0x65, 0x2A, 0xB8, 0xF5, 0x28, 0x5C,
-    0x9D, 0x32, 0x18, 0x63, 0x7A, 0x6D, 0x9F, 0xCA,
-    0xF0, 0xD9, 0x65, 0xB3, 0x58, 0x8E, 0xE6, 0xD7,
-    0x3F, 0xA5, 0x99, 0xDE, 0xCA, 0x1F, 0x41, 0xDE,
-    0xD8, 0x02, 0x5B, 0xF7, 0x76, 0x8E, 0x0E, 0x20,
-    0x0E, 0x8C, 0xD3, 0xFF, 0x86, 0x8C, 0x38, 0x00
-  },
-  {
-    0xB6, 0x29, 0xF5, 0x71, 0x62, 0x87, 0x6A, 0xDB,
-    0x8F, 0xA9, 0x57, 0x2E, 0xBA, 0x4E, 0x1E, 0xCD,
-    0x75, 0xA6, 0x56, 0x73, 0x08, 0xDE, 0x90, 0xDB,
-    0xB8, 0xFF, 0xDE, 0x77, 0xDE, 0x82, 0x13, 0xA4,
-    0xD7, 0xF7, 0xCB, 0x85, 0xAE, 0x1B, 0x71, 0xE6,
-    0x45, 0x7B, 0xC4, 0xE8, 0x9C, 0x0D, 0x9D, 0xE2,
-    0x41, 0xB6, 0xB9, 0xF3, 0x74, 0xB7, 0x34, 0x19,
-    0x4D, 0xB2, 0xB2, 0x67, 0x02, 0xD7, 0xCB, 0x7C
-  },
-  {
-    0x72, 0x28, 0x46, 0xDD, 0xAC, 0xAA, 0x94, 0xFD,
-    0xE6, 0x63, 0x2A, 0x2D, 0xC7, 0xDC, 0x70, 0x8B,
-    0xDF, 0x98, 0x31, 0x1C, 0x9F, 0xB6, 0x3C, 0x61,
-    0xE5, 0x25, 0xFD, 0x4B, 0x0D, 0x87, 0xB6, 0x38,
-    0x8B, 0x5A, 0xF7, 0x04, 0x20, 0x18, 0xDD, 0xCA,
-    0x06, 0x5E, 0x8A, 0x55, 0xBB, 0xFD, 0x68, 0xEE,
-    0x61, 0xFC, 0xD3, 0xC6, 0x87, 0x8F, 0x5B, 0x09,
-    0xBC, 0xC2, 0x7B, 0xED, 0x61, 0xDD, 0x93, 0xED
-  },
-  {
-    0x1C, 0xED, 0x6A, 0x0C, 0x78, 0x9D, 0xDB, 0x29,
-    0x56, 0x78, 0xAD, 0x43, 0xA3, 0x22, 0xD8, 0x96,
-    0x61, 0x7F, 0xDE, 0x27, 0x5F, 0x13, 0x8C, 0xCC,
-    0xFB, 0x13, 0x26, 0xCD, 0x3F, 0x76, 0x09, 0xC2,
-    0xAA, 0xA5, 0xEC, 0x10, 0x26, 0x97, 0x17, 0x3E,
-    0x12, 0x1A, 0xE1, 0x63, 0x02, 0x4F, 0x42, 0x8C,
-    0x98, 0x28, 0x35, 0xB4, 0xFA, 0x6D, 0xA6, 0xD6,
-    0x78, 0xAE, 0xB9, 0xEE, 0x10, 0x6A, 0x3F, 0x6C
-  },
-  {
-    0xE8, 0x69, 0x14, 0x8C, 0x05, 0x45, 0xB3, 0x58,
-    0x0E, 0x39, 0x5A, 0xFD, 0xC7, 0x45, 0xCD, 0x24,
-    0x3B, 0x6B, 0x5F, 0xE3, 0xB6, 0x7E, 0x29, 0x43,
-    0xF6, 0xF8, 0xD9, 0xF2, 0x4F, 0xFA, 0x40, 0xE8,
-    0x81, 0x75, 0x6E, 0x1C, 0x18, 0xD9, 0x2F, 0x3E,
-    0xBE, 0x84, 0x55, 0x9B, 0x57, 0xE2, 0xEE, 0x3A,
-    0x65, 0xD9, 0xEC, 0xE0, 0x49, 0x72, 0xB3, 0x5D,
-    0x4C, 0x4E, 0xBE, 0x78, 0x6C, 0x88, 0xDA, 0x62
-  },
-  {
-    0xDA, 0xDA, 0x15, 0x5E, 0x55, 0x42, 0x32, 0xB1,
-    0x6E, 0xCA, 0xD9, 0x31, 0xCB, 0x42, 0xE3, 0x25,
-    0xB5, 0x86, 0xDB, 0xF1, 0xCB, 0xD0, 0xCE, 0x38,
-    0x14, 0x45, 0x16, 0x6B, 0xD1, 0xBF, 0xA3, 0x32,
-    0x49, 0x85, 0xE7, 0x7C, 0x6F, 0x0D, 0x51, 0x2A,
-    0x02, 0x6E, 0x09, 0xD4, 0x86, 0x1C, 0x3B, 0xB8,
-    0x52, 0x9D, 0x72, 0x02, 0xEA, 0xC1, 0xC0, 0x44,
-    0x27, 0x44, 0xD3, 0x7C, 0x7F, 0x5A, 0xB8, 0xAF
-  },
-  {
-    0x2D, 0x14, 0x8C, 0x8E, 0x8F, 0x76, 0xFA, 0xAC,
-    0x6F, 0x7F, 0x01, 0xF2, 0x03, 0x9E, 0xA0, 0x2A,
-    0x42, 0xD9, 0x32, 0x57, 0x94, 0xC2, 0xC7, 0xA0,
-    0x0F, 0x83, 0xF4, 0xA7, 0x79, 0x8A, 0xFB, 0xA9,
-    0x93, 0xFF, 0x94, 0x91, 0x1E, 0x09, 0x8B, 0x00,
-    0x1A, 0x0B, 0xDF, 0xF4, 0xC8, 0x5A, 0x2A, 0x61,
-    0x31, 0xE0, 0xCF, 0xE7, 0x0F, 0x1D, 0x2E, 0x07,
-    0xAF, 0x02, 0x09, 0xDA, 0x77, 0x96, 0x09, 0x1F
-  },
-  {
-    0x99, 0x98, 0x3A, 0x75, 0x9C, 0xCF, 0x9C, 0xAC,
-    0xAE, 0x70, 0x2D, 0xCB, 0xFC, 0xDF, 0x72, 0x04,
-    0xDD, 0xF0, 0x33, 0x4B, 0xC6, 0x5D, 0xAD, 0x84,
-    0x6F, 0x83, 0x1F, 0x9F, 0x9D, 0x8A, 0x45, 0x3F,
-    0x0D, 0x24, 0x93, 0x5C, 0x4C, 0x65, 0x7F, 0xFF,
-    0x2E, 0xBB, 0xDB, 0xAF, 0x7B, 0xCE, 0x6A, 0xAC,
-    0xDB, 0xB8, 0x87, 0x6F, 0x16, 0x04, 0x59, 0xB1,
-    0xA4, 0xAA, 0xC9, 0x56, 0x97, 0xE0, 0x0D, 0x98
-  },
-  {
-    0x7E, 0x4A, 0x02, 0x12, 0x6D, 0x75, 0x52, 0xF4,
-    0xC9, 0xB9, 0x4D, 0x80, 0xE3, 0xCF, 0x7B, 0x89,
-    0x7E, 0x09, 0x84, 0xE4, 0x06, 0xF0, 0x78, 0x13,
-    0x5C, 0xF4, 0x56, 0xC0, 0xD5, 0x1E, 0x13, 0x91,
-    0xFF, 0x18, 0xA8, 0x8F, 0x93, 0x12, 0x2C, 0x83,
-    0x2C, 0xAC, 0x7D, 0x79, 0x6A, 0x6B, 0x42, 0x51,
-    0x9B, 0x1D, 0xB4, 0xEA, 0xD8, 0xF4, 0x98, 0x40,
-    0xCE, 0xB5, 0x52, 0x33, 0x6B, 0x29, 0xDE, 0x44
-  },
-  {
-    0xD7, 0xE1, 0x6F, 0xD1, 0x59, 0x65, 0x8A, 0xD7,
-    0xEE, 0x25, 0x1E, 0x51, 0x7D, 0xCE, 0x5A, 0x29,
-    0xF4, 0x6F, 0xD4, 0xB8, 0xD3, 0x19, 0xDB, 0x80,
-    0x5F, 0xC2, 0x5A, 0xA6, 0x20, 0x35, 0x0F, 0xF4,
-    0x23, 0xAD, 0x8D, 0x05, 0x37, 0xCD, 0x20, 0x69,
-    0x43, 0x2E, 0xBF, 0xF2, 0x92, 0x36, 0xF8, 0xC2,
-    0xA8, 0xA0, 0x4D, 0x04, 0xB3, 0xB4, 0x8C, 0x59,
-    0xA3, 0x55, 0xFC, 0xC6, 0x2D, 0x27, 0xF8, 0xEE
-  },
-  {
-    0x0D, 0x45, 0x17, 0xD4, 0xF1, 0xD0, 0x47, 0x30,
-    0xC6, 0x91, 0x69, 0x18, 0xA0, 0x4C, 0x9E, 0x90,
-    0xCC, 0xA3, 0xAC, 0x1C, 0x63, 0xD6, 0x45, 0x97,
-    0x8A, 0x7F, 0x07, 0x03, 0x9F, 0x92, 0x20, 0x64,
-    0x7C, 0x25, 0xC0, 0x4E, 0x85, 0xF6, 0xE2, 0x28,
-    0x6D, 0x2E, 0x35, 0x46, 0x0D, 0x0B, 0x2C, 0x1E,
-    0x25, 0xAF, 0x9D, 0x35, 0x37, 0xEF, 0x33, 0xFD,
-    0x7F, 0xE5, 0x1E, 0x2B, 0xA8, 0x76, 0x4B, 0x36
-  },
-  {
-    0x56, 0xB7, 0x2E, 0x51, 0x37, 0xC6, 0x89, 0xB2,
-    0x73, 0x66, 0xFB, 0x22, 0xC7, 0xC6, 0x75, 0x44,
-    0xF6, 0xBC, 0xE5, 0x76, 0x19, 0x41, 0x31, 0xC5,
-    0xBF, 0xAB, 0x1C, 0xF9, 0x3C, 0x2B, 0x51, 0xAA,
-    0xA3, 0x03, 0x36, 0x8A, 0xA8, 0x44, 0xD5, 0x8D,
-    0xF0, 0xEE, 0x5D, 0x4E, 0x31, 0x9F, 0xCD, 0x8E,
-    0xFF, 0xC6, 0x02, 0xCE, 0xE4, 0x35, 0x1B, 0xD2,
-    0xF5, 0x51, 0x43, 0x0B, 0x92, 0x11, 0xE7, 0x3C
-  },
-  {
-    0xF3, 0x35, 0xCC, 0x22, 0xFF, 0xEA, 0x5A, 0xA5,
-    0x9C, 0xDF, 0xC8, 0xF5, 0x02, 0x89, 0xCC, 0x92,
-    0x31, 0x9B, 0x8B, 0x14, 0x40, 0x8D, 0x7A, 0x5A,
-    0xA1, 0x23, 0x2A, 0xE2, 0x3A, 0xA1, 0xEA, 0x7F,
-    0x77, 0x48, 0xCF, 0xEF, 0x03, 0x20, 0x10, 0xF8,
-    0x62, 0x6D, 0x93, 0x18, 0xED, 0xBA, 0x98, 0xD4,
-    0x16, 0x62, 0x03, 0x35, 0xC9, 0x01, 0xED, 0x02,
-    0xEA, 0xBD, 0x27, 0x6A, 0x1B, 0x82, 0x9C, 0x9D
-  },
-  {
-    0xA9, 0x9A, 0x3D, 0x10, 0xF9, 0x5B, 0x44, 0x2F,
-    0xFF, 0xF7, 0xC4, 0x18, 0xFA, 0x94, 0x9D, 0x48,
-    0x30, 0x86, 0x9B, 0x0E, 0x60, 0xEC, 0x8B, 0x97,
-    0x2C, 0x30, 0xA3, 0x16, 0x9C, 0x27, 0xBE, 0xB5,
-    0xCF, 0x33, 0x05, 0x94, 0xF0, 0x14, 0xB6, 0x6B,
-    0x22, 0x00, 0xA7, 0xF0, 0x86, 0xD2, 0xC2, 0xF3,
-    0xF9, 0xFD, 0x85, 0x32, 0xA5, 0x71, 0x88, 0x76,
-    0xDF, 0xCA, 0x66, 0x1B, 0xA0, 0xF7, 0xB3, 0x6D
-  },
-  {
-    0x15, 0x8E, 0x25, 0x70, 0xD0, 0x84, 0xA4, 0x86,
-    0x9D, 0x96, 0x93, 0x43, 0xC0, 0x10, 0x86, 0x07,
-    0x17, 0xFF, 0x74, 0x11, 0x61, 0x88, 0x17, 0x5F,
-    0x2E, 0xD7, 0x4C, 0xD5, 0x78, 0xFA, 0x0D, 0x80,
-    0x91, 0xB0, 0x3F, 0xAD, 0x0C, 0x65, 0xCF, 0x59,
-    0xAB, 0x91, 0xDD, 0x73, 0xB3, 0x7F, 0xE3, 0xF5,
-    0x8A, 0x58, 0xE7, 0xB4, 0x47, 0x9C, 0x87, 0x5A,
-    0xCD, 0x63, 0xEC, 0x52, 0x58, 0x12, 0x35, 0x3F
-  },
-  {
-    0x7C, 0x49, 0x50, 0x1C, 0x58, 0x08, 0xB1, 0x5C,
-    0x0D, 0x31, 0xBD, 0xD5, 0xBB, 0x56, 0x31, 0xD5,
-    0x3A, 0xE0, 0x0D, 0xF4, 0x31, 0x02, 0x5F, 0xEA,
-    0x51, 0xEB, 0x47, 0x62, 0x54, 0x4E, 0xFD, 0xEE,
-    0x97, 0x8A, 0x83, 0x50, 0x8D, 0xEA, 0x6B, 0xFD,
-    0x3B, 0x93, 0x1A, 0x0E, 0x95, 0x83, 0xCC, 0xFC,
-    0x04, 0x9E, 0xA8, 0x46, 0x44, 0x70, 0x5D, 0x31,
-    0x9F, 0xDC, 0x5C, 0x16, 0x3B, 0xF4, 0x82, 0x24
-  },
-  {
-    0xFE, 0xF4, 0x36, 0xB3, 0x5F, 0x71, 0x7D, 0x59,
-    0xAC, 0xA1, 0x7E, 0x9B, 0xF5, 0xFF, 0xDA, 0x28,
-    0xF5, 0xF4, 0x01, 0x94, 0x3E, 0xFE, 0x93, 0xEB,
-    0x58, 0x0F, 0xFB, 0x98, 0xF1, 0x3B, 0xEA, 0x80,
-    0x94, 0x69, 0xA3, 0x44, 0xE7, 0x82, 0xA4, 0x43,
-    0xC6, 0x4E, 0xB2, 0x5A, 0xD0, 0x9D, 0x8D, 0xE2,
-    0x05, 0xFE, 0xE7, 0xD5, 0x63, 0x96, 0x86, 0xA1,
-    0x9E, 0x7C, 0x42, 0xB4, 0x0F, 0x70, 0x6A, 0x08
-  },
-  {
-    0x4D, 0x47, 0xA6, 0x7A, 0x5F, 0x8E, 0x17, 0xB7,
-    0x22, 0xDF, 0x98, 0x58, 0xAE, 0xB6, 0x7B, 0x99,
-    0x56, 0xB4, 0x59, 0x62, 0xEC, 0x35, 0x3D, 0xC2,
-    0xE2, 0x7F, 0x0F, 0x50, 0x1C, 0x39, 0x8E, 0x34,
-    0x39, 0x7B, 0xEB, 0xE0, 0x2B, 0x54, 0x92, 0x7E,
-    0x2D, 0x31, 0xF1, 0x2E, 0xCF, 0x55, 0xE8, 0x82,
-    0x69, 0xFA, 0xB5, 0x37, 0x0E, 0x7F, 0xA5, 0x70,
-    0x35, 0x26, 0x6F, 0x89, 0xD5, 0xC2, 0x64, 0x41
-  },
-  {
-    0x1B, 0x58, 0xDC, 0x7A, 0xAC, 0x36, 0x3B, 0x00,
-    0x44, 0x6E, 0xA8, 0x03, 0xBC, 0xD7, 0x49, 0xC3,
-    0xF5, 0xCA, 0xBE, 0xAA, 0xF2, 0x23, 0x99, 0x4C,
-    0x0C, 0x3E, 0xCC, 0x1B, 0x28, 0x47, 0x73, 0x44,
-    0xD7, 0xBF, 0x97, 0xC0, 0x8A, 0x95, 0x9D, 0x1A,
-    0xC2, 0x06, 0x0B, 0x47, 0x27, 0x89, 0x86, 0x92,
-    0x91, 0x88, 0xAD, 0x73, 0xDE, 0x67, 0x07, 0x8B,
-    0xA6, 0x80, 0x96, 0x3B, 0x9D, 0x3B, 0x12, 0xA4
-  },
-  {
-    0x3C, 0x52, 0x2C, 0x84, 0x3E, 0x69, 0x74, 0xEC,
-    0x75, 0x0D, 0xF2, 0x20, 0xD4, 0x1A, 0x00, 0x4A,
-    0xC2, 0xAD, 0xF0, 0x94, 0x56, 0xFA, 0x78, 0x7F,
-    0x7C, 0x65, 0x43, 0xAB, 0x17, 0x97, 0x9C, 0x77,
-    0x7B, 0x3E, 0x79, 0xD1, 0x78, 0x7D, 0xA5, 0xA8,
-    0x3F, 0x17, 0x8D, 0xA9, 0xF0, 0x4C, 0xF6, 0xF5,
-    0xB2, 0x55, 0xDD, 0xCB, 0x18, 0x74, 0x84, 0x1B,
-    0xBF, 0x70, 0x16, 0xE6, 0x13, 0x2B, 0x99, 0x8A
-  },
-  {
-    0x5A, 0x4F, 0xEB, 0x8F, 0x70, 0x75, 0xB4, 0xDC,
-    0x9C, 0xA1, 0x6C, 0x6F, 0x05, 0xCD, 0x6B, 0x70,
-    0x27, 0x48, 0x5F, 0xFE, 0xD9, 0x15, 0x7D, 0x82,
-    0x4D, 0x9D, 0x1A, 0x17, 0x20, 0xEE, 0xEE, 0xEA,
-    0x3F, 0x6C, 0x12, 0x5F, 0xDA, 0x4B, 0xA4, 0x40,
-    0x9D, 0x79, 0x80, 0x49, 0xFD, 0x18, 0x82, 0xC6,
-    0x90, 0x28, 0x8F, 0x33, 0x54, 0x7A, 0x3D, 0x8D,
-    0x62, 0x60, 0xB6, 0x54, 0x54, 0x88, 0x53, 0xD7
-  },
-  {
-    0xBC, 0xAA, 0x79, 0x36, 0x32, 0x56, 0x9E, 0x2F,
-    0x84, 0x17, 0xCC, 0x60, 0x32, 0x53, 0x53, 0x5B,
-    0xD7, 0xD8, 0x5F, 0x38, 0x53, 0x19, 0x92, 0x59,
-    0x1E, 0x56, 0xC1, 0xA4, 0xB6, 0xF5, 0x8E, 0xE7,
-    0xF8, 0x18, 0xFA, 0xE0, 0x27, 0x88, 0x8A, 0x86,
-    0x28, 0x43, 0x05, 0x10, 0x1E, 0xC0, 0x46, 0x61,
-    0xF5, 0x99, 0x53, 0x47, 0xA4, 0x67, 0xED, 0x8B,
-    0x92, 0x79, 0xF1, 0xAC, 0xC2, 0xB4, 0xBB, 0x1F
-  },
-  {
-    0x34, 0xAF, 0x91, 0xCC, 0x22, 0xA6, 0x9B, 0xCB,
-    0x55, 0xDD, 0xBF, 0x7F, 0x0F, 0x43, 0xEC, 0x56,
-    0x48, 0x40, 0x43, 0x32, 0x13, 0xEA, 0x55, 0xD9,
-    0xF8, 0x1A, 0xC4, 0x75, 0x20, 0x8D, 0x74, 0x85,
-    0x1D, 0xB7, 0x0F, 0xE4, 0x96, 0xAF, 0x9D, 0xA1,
-    0xD3, 0x93, 0xEC, 0xF8, 0x78, 0x69, 0x5D, 0xD3,
-    0x3F, 0xD5, 0x43, 0x49, 0xA6, 0xF8, 0x24, 0xAE,
-    0xED, 0x18, 0x3C, 0xB1, 0xB0, 0x8C, 0x54, 0x85
-  },
-  {
-    0xB8, 0xB7, 0xAD, 0x2E, 0xA2, 0xB6, 0xFA, 0x06,
-    0xD0, 0x0B, 0xCD, 0x59, 0x9C, 0x99, 0x71, 0xC5,
-    0xB4, 0xE1, 0x65, 0x58, 0xE1, 0x52, 0x12, 0xC9,
-    0xBF, 0xD3, 0x73, 0xE4, 0xBC, 0x79, 0x17, 0x05,
-    0x26, 0x01, 0xFF, 0xDB, 0x68, 0x01, 0xBE, 0x80,
-    0xBA, 0x50, 0x9D, 0xB8, 0x2A, 0x0B, 0x71, 0x95,
-    0x92, 0x91, 0x33, 0xAD, 0x53, 0x99, 0x56, 0x06,
-    0x52, 0x33, 0xF4, 0x9D, 0x07, 0x1C, 0x84, 0xE4
-  },
-  {
-    0xDC, 0xEE, 0x9C, 0x45, 0xBC, 0x5D, 0x1F, 0xE6,
-    0x30, 0xB1, 0x8B, 0x06, 0x3C, 0xE8, 0x2C, 0x38,
-    0x57, 0xE3, 0x0D, 0x20, 0xC6, 0x4B, 0x5C, 0xC2,
-    0x58, 0x84, 0x94, 0x3E, 0x7A, 0xE9, 0x4E, 0xDF,
-    0xF8, 0x50, 0xEB, 0x0E, 0x82, 0x44, 0x02, 0x3D,
-    0x3D, 0x07, 0xA8, 0xA0, 0x07, 0x06, 0xF0, 0x58,
-    0x2C, 0xC1, 0x02, 0xB6, 0x6C, 0x6D, 0xDA, 0x86,
-    0xE8, 0xF2, 0xDF, 0x32, 0x56, 0x59, 0x88, 0x6F
-  },
-  {
-    0x04, 0xF6, 0xE8, 0x22, 0xF1, 0x7C, 0xC7, 0xA5,
-    0x94, 0x6D, 0xF8, 0x0D, 0x95, 0x8A, 0xEF, 0x06,
-    0x5D, 0x87, 0x49, 0x16, 0xE1, 0x03, 0xA6, 0x83,
-    0x0C, 0x6E, 0x46, 0xB6, 0x05, 0x59, 0x18, 0x18,
-    0x0D, 0x14, 0x52, 0x29, 0x3C, 0x58, 0xA9, 0x74,
-    0x9C, 0xBC, 0x8F, 0x0A, 0xC4, 0x08, 0xA9, 0xCA,
-    0x89, 0x57, 0x61, 0xCF, 0xC4, 0x51, 0x16, 0x46,
-    0x41, 0xA1, 0x79, 0xFB, 0x5C, 0xD8, 0xFE, 0xBC
-  },
-  {
-    0x51, 0x1F, 0xDB, 0x7C, 0x88, 0x26, 0x85, 0x35,
-    0xE9, 0x7E, 0x4E, 0xD8, 0x92, 0xF3, 0xC0, 0x65,
-    0x83, 0x2B, 0x26, 0x59, 0x14, 0xFC, 0x61, 0x07,
-    0xA1, 0xD2, 0x7D, 0xBB, 0x7D, 0x51, 0xC3, 0x7E,
-    0x95, 0x98, 0x15, 0x06, 0xC1, 0x14, 0x72, 0x44,
-    0xD5, 0xBA, 0xE9, 0x0E, 0xE9, 0x0D, 0x08, 0x49,
-    0x84, 0xBA, 0xA7, 0x58, 0x7F, 0x41, 0xFF, 0x6F,
-    0x4B, 0xA7, 0x22, 0xC8, 0xB9, 0x2A, 0xEB, 0x99
-  },
-  {
-    0x2B, 0xA2, 0xBD, 0x17, 0xE9, 0x26, 0x27, 0x5B,
-    0x06, 0x83, 0xB2, 0x36, 0xBF, 0xE3, 0x76, 0x30,
-    0x26, 0x6E, 0x37, 0xF4, 0x18, 0x2F, 0x53, 0xA9,
-    0x82, 0x34, 0xE9, 0x15, 0xAB, 0x64, 0xC9, 0x59,
-    0x96, 0xC6, 0xCB, 0x7A, 0xE8, 0x80, 0xC3, 0xDF,
-    0xCB, 0x47, 0xD0, 0x5A, 0xAD, 0xD2, 0x1A, 0xBF,
-    0x8E, 0x40, 0xB7, 0x3F, 0x40, 0xF3, 0x98, 0xDC,
-    0x5B, 0x02, 0x14, 0x14, 0x57, 0x45, 0x6A, 0x09
-  },
-  {
-    0x9B, 0x66, 0x8D, 0x9B, 0x44, 0x47, 0xE3, 0x76,
-    0xF6, 0xC6, 0xCF, 0xA6, 0x8D, 0xBC, 0x79, 0x19,
-    0x83, 0x81, 0xAB, 0x60, 0x5F, 0x55, 0xD5, 0xA7,
-    0xEF, 0x68, 0x3B, 0xCE, 0xD4, 0x6F, 0x9A, 0xFD,
-    0x36, 0x85, 0x41, 0x1A, 0x66, 0xE2, 0x34, 0x6F,
-    0x96, 0x07, 0x77, 0xD0, 0xC9, 0x22, 0x71, 0x24,
-    0x30, 0xE0, 0x18, 0xBF, 0xAE, 0x86, 0x53, 0x01,
-    0x7E, 0xA2, 0x0E, 0xCD, 0x5F, 0x1F, 0x95, 0x6C
-  },
-  {
-    0x56, 0x81, 0x02, 0x4F, 0x53, 0x85, 0x88, 0xA0,
-    0x1B, 0x2C, 0x83, 0x94, 0xCA, 0xE8, 0x73, 0xC6,
-    0xD8, 0x5D, 0x6A, 0xA0, 0x6E, 0xDD, 0xB3, 0xA5,
-    0x02, 0x09, 0x6F, 0xC0, 0x82, 0xBB, 0x89, 0xCB,
-    0x24, 0x15, 0x31, 0xB3, 0x15, 0x75, 0x0D, 0x31,
-    0xBB, 0x0B, 0x63, 0x01, 0x28, 0xD1, 0x9D, 0x11,
-    0x39, 0x2B, 0xCF, 0x4B, 0x34, 0x78, 0xD5, 0x23,
-    0xD7, 0xD2, 0x13, 0xE4, 0x75, 0x0F, 0x55, 0x92
-  },
-  {
-    0x2A, 0xA9, 0x1B, 0xA6, 0xDE, 0x60, 0x17, 0xF1,
-    0x93, 0x0F, 0xC7, 0xD9, 0x6D, 0xCC, 0xD6, 0x70,
-    0x74, 0x8B, 0x7E, 0xB1, 0xD0, 0x94, 0xDF, 0xB4,
-    0xB3, 0xB1, 0x47, 0x8A, 0x61, 0x2E, 0xBF, 0x03,
-    0xDD, 0xD7, 0x21, 0x27, 0x9A, 0x26, 0x6D, 0xE3,
-    0x88, 0x45, 0xE6, 0x12, 0xC9, 0x30, 0x98, 0xC2,
-    0xEF, 0xFF, 0x34, 0xFE, 0x50, 0x06, 0x17, 0x20,
-    0x5B, 0x1D, 0xE2, 0xFE, 0xA1, 0xD8, 0x02, 0x46
-  },
-  {
-    0x82, 0x4D, 0x89, 0xC0, 0x63, 0x7C, 0xE1, 0x78,
-    0xB6, 0x30, 0x68, 0x4C, 0x72, 0x9E, 0x26, 0x65,
-    0x3F, 0x34, 0xEA, 0xC7, 0xE9, 0x04, 0x12, 0xE9,
-    0x63, 0xD3, 0xF1, 0x9D, 0x64, 0x51, 0xE8, 0x25,
-    0x85, 0x21, 0x67, 0xC4, 0x8D, 0xF7, 0xCC, 0x55,
-    0xB2, 0x57, 0xB2, 0x50, 0xA7, 0x0C, 0x7B, 0xCC,
-    0xFA, 0x9A, 0xA1, 0x5C, 0x18, 0x8A, 0xC4, 0x63,
-    0x7A, 0x52, 0x22, 0x89, 0xC0, 0x87, 0x6A, 0xD4
-  },
-  {
-    0x87, 0xE4, 0xAE, 0x11, 0xDA, 0x1A, 0x2C, 0xA8,
-    0x82, 0x2A, 0xE3, 0x30, 0xDC, 0x97, 0xAB, 0x2E,
-    0x47, 0xFF, 0x62, 0x32, 0x30, 0x93, 0xC2, 0xB7,
-    0xA6, 0xC0, 0xE2, 0xC1, 0x68, 0x21, 0xCD, 0x7C,
-    0xEC, 0x92, 0x18, 0x4D, 0xF4, 0xBB, 0x6E, 0x2B,
-    0x62, 0x6A, 0x44, 0x78, 0x03, 0x90, 0x63, 0xAF,
-    0xEE, 0xB0, 0xD2, 0x87, 0xF2, 0x42, 0x19, 0x20,
-    0x78, 0x98, 0xCC, 0xE7, 0xAD, 0xE0, 0x63, 0x9C
-  },
-  {
-    0xDD, 0x7F, 0x2F, 0x44, 0xA4, 0x02, 0xA0, 0x1E,
-    0x82, 0x16, 0xB1, 0x03, 0xA4, 0xE7, 0x23, 0x5C,
-    0x28, 0x30, 0x31, 0x9D, 0x56, 0xAF, 0x63, 0x9F,
-    0x23, 0xC4, 0x8C, 0x27, 0x59, 0xAB, 0xA6, 0xEB,
-    0x5E, 0xEE, 0xE3, 0x8C, 0x29, 0x8E, 0xBE, 0x41,
-    0x98, 0x26, 0x7A, 0x00, 0xEB, 0x2A, 0x08, 0xD9,
-    0x3A, 0x50, 0x37, 0x03, 0x17, 0x1C, 0x77, 0x33,
-    0x38, 0x62, 0x10, 0x10, 0x55, 0xBD, 0x7A, 0xD2
-  },
-  {
-    0x4C, 0xB8, 0x46, 0x59, 0x61, 0x93, 0xF7, 0xF2,
-    0x78, 0xAA, 0xAA, 0xC5, 0xCC, 0xFF, 0xD5, 0x35,
-    0x7A, 0xB0, 0xD1, 0x24, 0x5F, 0x69, 0x79, 0xD1,
-    0x41, 0xA4, 0x71, 0xBD, 0xAB, 0x55, 0xE2, 0x38,
-    0xB1, 0xAE, 0xD6, 0x7B, 0x73, 0x39, 0x95, 0x04,
-    0xB9, 0x7D, 0xF1, 0xA2, 0x5E, 0xB6, 0xFE, 0x27,
-    0x2B, 0x5C, 0xD4, 0x96, 0xA7, 0xC8, 0xA0, 0x60,
-    0x92, 0x6E, 0x74, 0x04, 0xFD, 0xA0, 0x79, 0x0D
-  },
-  {
-    0x6F, 0x44, 0xEC, 0xDA, 0xE1, 0x4E, 0x3B, 0x81,
-    0xA1, 0x91, 0x22, 0x03, 0x01, 0x5F, 0x59, 0x18,
-    0xEA, 0xC6, 0xFB, 0xF4, 0x96, 0x60, 0x10, 0xF4,
-    0x9D, 0x2B, 0xC2, 0xBC, 0xEF, 0xE7, 0xB1, 0xDF,
-    0xEC, 0x5C, 0x83, 0x5D, 0x7D, 0x87, 0xA4, 0x43,
-    0x71, 0xF1, 0x5A, 0x6C, 0x08, 0x42, 0x52, 0xB9,
-    0x34, 0x65, 0x26, 0x42, 0x72, 0xA4, 0x10, 0xD5,
-    0x0F, 0x89, 0xA1, 0x17, 0xF3, 0x1A, 0xF4, 0x63
-  },
-  {
-    0x1F, 0x70, 0x5F, 0x6E, 0x9F, 0x07, 0x0D, 0x87,
-    0xFD, 0xE8, 0xE2, 0x77, 0x46, 0x74, 0xFA, 0x9B,
-    0xF1, 0x20, 0xD2, 0x88, 0xEB, 0x0B, 0xE7, 0xAA,
-    0x12, 0x8D, 0xFB, 0x5D, 0x10, 0x11, 0xCE, 0x1F,
-    0xDA, 0x99, 0xB2, 0x55, 0x22, 0x66, 0x65, 0xD8,
-    0x3F, 0x63, 0x4E, 0x8F, 0xCA, 0xBD, 0xA9, 0xA2,
-    0x3C, 0x03, 0x51, 0x5E, 0x9C, 0xFE, 0xCE, 0x6E,
-    0x94, 0xA8, 0xEC, 0x92, 0xE4, 0xED, 0xEC, 0xB7
-  },
-  {
-    0x2D, 0x96, 0xC5, 0xB0, 0x15, 0x74, 0x72, 0x2B,
-    0x81, 0x7F, 0xEB, 0x48, 0x6C, 0x5F, 0xC9, 0x8F,
-    0x5F, 0x84, 0x61, 0xF4, 0xCE, 0xE9, 0x90, 0x5A,
-    0xF2, 0x06, 0xD4, 0x72, 0x33, 0x86, 0xD1, 0xC4,
-    0xC7, 0xCA, 0xC5, 0x84, 0x00, 0x28, 0xD7, 0xAF,
-    0xED, 0x0E, 0x38, 0xAD, 0x13, 0x96, 0x28, 0xEB,
-    0x6A, 0xF9, 0x2B, 0x4B, 0x88, 0xEB, 0xF0, 0x9B,
-    0x1F, 0xA0, 0x47, 0xFB, 0xE1, 0x0B, 0xC3, 0x1D
-  },
-  {
-    0x65, 0xDA, 0x78, 0x0A, 0x0A, 0x37, 0x47, 0x9D,
-    0xD8, 0xF4, 0xD6, 0x55, 0x64, 0xF9, 0xA7, 0x08,
-    0x9E, 0x42, 0x07, 0xEB, 0x16, 0xAC, 0xA3, 0xF6,
-    0x55, 0x31, 0xCF, 0xEE, 0x76, 0x25, 0xBA, 0x13,
-    0x80, 0xA4, 0x97, 0xB6, 0x24, 0x72, 0xFC, 0x7E,
-    0x00, 0x07, 0xA6, 0xB0, 0x35, 0x61, 0x04, 0x16,
-    0xA5, 0xF8, 0x2C, 0x10, 0x82, 0xFA, 0x06, 0x5C,
-    0x46, 0xDD, 0xEE, 0x49, 0x40, 0xD1, 0xFC, 0x46
-  },
-  {
-    0x1C, 0x09, 0xA3, 0xB3, 0x80, 0xB8, 0xA7, 0xFC,
-    0x33, 0x3F, 0xD2, 0x71, 0x4D, 0xF7, 0x12, 0x9B,
-    0x44, 0xA4, 0x67, 0x68, 0xBA, 0xCF, 0x0A, 0x67,
-    0xA3, 0x8A, 0x47, 0xB3, 0xAB, 0x31, 0xF5, 0x1B,
-    0x05, 0x33, 0xC2, 0xAA, 0x2B, 0x4B, 0x7B, 0xBB,
-    0x6A, 0xE5, 0xED, 0xF3, 0xDC, 0xB0, 0xEC, 0xC1,
-    0xA2, 0x83, 0xE8, 0x43, 0xF2, 0x90, 0x7B, 0x34,
-    0x1F, 0x17, 0x9A, 0xFD, 0x8B, 0x67, 0xDA, 0x90
-  },
-  {
-    0x67, 0x88, 0x8B, 0x83, 0xFA, 0xAF, 0xBB, 0x62,
-    0x29, 0x34, 0xB8, 0xD5, 0x59, 0x63, 0xE1, 0x86,
-    0x15, 0x3E, 0x59, 0x51, 0x88, 0x7C, 0x7F, 0x4A,
-    0x76, 0x35, 0xC7, 0x98, 0xD9, 0xA5, 0x82, 0x94,
-    0xBE, 0x26, 0xA3, 0xC5, 0x49, 0xC9, 0xFD, 0x59,
-    0x86, 0xAB, 0xD1, 0x9F, 0x40, 0x1E, 0xE2, 0x4E,
-    0xDA, 0x36, 0x02, 0x04, 0x2A, 0xD3, 0x83, 0x35,
-    0x7A, 0x31, 0x7D, 0x38, 0x07, 0x3B, 0x38, 0xCE
-  },
-  {
-    0xB4, 0xF7, 0x99, 0x63, 0xCA, 0x31, 0xBB, 0x62,
-    0x26, 0x5D, 0xD9, 0x29, 0xAF, 0x7D, 0x51, 0x27,
-    0x2F, 0xA6, 0x63, 0x1D, 0xE7, 0xFA, 0x35, 0xF7,
-    0xA6, 0xB0, 0x3F, 0x9F, 0xCF, 0xDB, 0x8E, 0x3B,
-    0x5B, 0xAC, 0xE3, 0x35, 0x91, 0xB7, 0xEC, 0x2C,
-    0xFA, 0xB4, 0x9C, 0x91, 0xA6, 0xDB, 0x1F, 0xF8,
-    0xF6, 0x78, 0x6D, 0x08, 0xF4, 0x4E, 0x80, 0x62,
-    0xD2, 0xFF, 0x69, 0x6A, 0x7D, 0x98, 0x41, 0x42
-  },
-  {
-    0x40, 0x84, 0x83, 0x69, 0x7B, 0xB6, 0xF9, 0xD0,
-    0x11, 0xA1, 0xF2, 0x9A, 0x23, 0xC2, 0x78, 0xA8,
-    0x1D, 0x37, 0x57, 0x8D, 0xCC, 0xCF, 0x42, 0x3B,
-    0xDF, 0x48, 0x93, 0x37, 0xF1, 0x82, 0xEA, 0xB7,
-    0x9A, 0x50, 0xB0, 0x5F, 0x3D, 0x2C, 0xCC, 0x49,
-    0x13, 0x37, 0xC7, 0xE4, 0x1F, 0x30, 0x79, 0x3B,
-    0xD2, 0x7D, 0x76, 0x61, 0xC2, 0xE3, 0x04, 0xC9,
-    0x46, 0xA5, 0xA4, 0x01, 0xAF, 0x8D, 0x94, 0x6F
-  },
-  {
-    0xEE, 0xB5, 0xAD, 0xE1, 0xAB, 0x97, 0xE7, 0x15,
-    0x43, 0x43, 0xA4, 0x6E, 0xB4, 0xCD, 0xD2, 0xA7,
-    0x73, 0xF3, 0x63, 0x01, 0xED, 0xC6, 0xA1, 0xBC,
-    0x1D, 0xD6, 0x48, 0x0E, 0x08, 0xF5, 0x87, 0x65,
-    0xCB, 0x93, 0x87, 0x82, 0x92, 0x3B, 0xC0, 0x1F,
-    0x8E, 0x0C, 0x61, 0xC6, 0xBE, 0x0D, 0xD1, 0xAB,
-    0x4C, 0x18, 0xCB, 0x15, 0xED, 0x52, 0x10, 0x11,
-    0x24, 0x05, 0xF1, 0xEA, 0x8F, 0x2E, 0x8C, 0x4E
-  },
-  {
-    0x71, 0x4A, 0xD1, 0x85, 0xF1, 0xEE, 0xC4, 0x3F,
-    0x46, 0xB6, 0x7E, 0x99, 0x2D, 0x2D, 0x38, 0xBC,
-    0x31, 0x49, 0xE3, 0x7D, 0xA7, 0xB4, 0x47, 0x48,
-    0xD4, 0xD1, 0x4C, 0x16, 0x1E, 0x08, 0x78, 0x02,
-    0x04, 0x42, 0x14, 0x95, 0x79, 0xA8, 0x65, 0xD8,
-    0x04, 0xB0, 0x49, 0xCD, 0x01, 0x55, 0xBA, 0x98,
-    0x33, 0x78, 0x75, 0x7A, 0x13, 0x88, 0x30, 0x1B,
-    0xDC, 0x0F, 0xAE, 0x2C, 0xEA, 0xEA, 0x07, 0xDD
-  },
-  {
-    0x22, 0xB8, 0x24, 0x9E, 0xAF, 0x72, 0x29, 0x64,
-    0xCE, 0x42, 0x4F, 0x71, 0xA7, 0x4D, 0x03, 0x8F,
-    0xF9, 0xB6, 0x15, 0xFB, 0xA5, 0xC7, 0xC2, 0x2C,
-    0xB6, 0x27, 0x97, 0xF5, 0x39, 0x82, 0x24, 0xC3,
-    0xF0, 0x72, 0xEB, 0xC1, 0xDA, 0xCB, 0xA3, 0x2F,
-    0xC6, 0xF6, 0x63, 0x60, 0xB3, 0xE1, 0x65, 0x8D,
-    0x0F, 0xA0, 0xDA, 0x1E, 0xD1, 0xC1, 0xDA, 0x66,
-    0x2A, 0x20, 0x37, 0xDA, 0x82, 0x3A, 0x33, 0x83
-  },
-  {
-    0xB8, 0xE9, 0x03, 0xE6, 0x91, 0xB9, 0x92, 0x78,
-    0x25, 0x28, 0xF8, 0xDB, 0x96, 0x4D, 0x08, 0xE3,
-    0xBA, 0xAF, 0xBD, 0x08, 0xBA, 0x60, 0xC7, 0x2A,
-    0xEC, 0x0C, 0x28, 0xEC, 0x6B, 0xFE, 0xCA, 0x4B,
-    0x2E, 0xC4, 0xC4, 0x6F, 0x22, 0xBF, 0x62, 0x1A,
-    0x5D, 0x74, 0xF7, 0x5C, 0x0D, 0x29, 0x69, 0x3E,
-    0x56, 0xC5, 0xC5, 0x84, 0xF4, 0x39, 0x9E, 0x94,
-    0x2F, 0x3B, 0xD8, 0xD3, 0x86, 0x13, 0xE6, 0x39
-  },
-  {
-    0xD5, 0xB4, 0x66, 0xFF, 0x1F, 0xD6, 0x8C, 0xFA,
-    0x8E, 0xDF, 0x0B, 0x68, 0x02, 0x44, 0x8F, 0x30,
-    0x2D, 0xCC, 0xDA, 0xF5, 0x66, 0x28, 0x78, 0x6B,
-    0x9D, 0xA0, 0xF6, 0x62, 0xFD, 0xA6, 0x90, 0x26,
-    0x6B, 0xD4, 0x0A, 0xB6, 0xF0, 0xBE, 0xC0, 0x43,
-    0xF1, 0x01, 0x28, 0xB3, 0x3D, 0x05, 0xDB, 0x82,
-    0xD4, 0xAB, 0x26, 0x8A, 0x4F, 0x91, 0xAC, 0x42,
-    0x86, 0x79, 0x5F, 0xC0, 0xF7, 0xCB, 0x48, 0x5C
-  },
-  {
-    0x0A, 0x1E, 0x8C, 0x0A, 0x8C, 0x48, 0xB8, 0x4B,
-    0x71, 0xBA, 0x0F, 0xE5, 0x6F, 0xA0, 0x56, 0x09,
-    0x8C, 0xA6, 0x92, 0xE9, 0x2F, 0x27, 0x6E, 0x85,
-    0xB3, 0x38, 0x26, 0xCD, 0x78, 0x75, 0xFC, 0xF8,
-    0x83, 0x85, 0x13, 0x1B, 0x43, 0xDF, 0x74, 0x53,
-    0x2E, 0xAA, 0x86, 0xCF, 0x17, 0x1F, 0x50, 0x76,
-    0xE6, 0xD1, 0x7B, 0x1C, 0x75, 0xFB, 0xA1, 0xDB,
-    0x00, 0x1B, 0x6E, 0x66, 0x97, 0x7C, 0xB8, 0xD7
-  },
-  {
-    0x65, 0xAA, 0x17, 0x99, 0x14, 0x36, 0x93, 0xAB,
-    0xD9, 0xCB, 0x21, 0x8D, 0x9B, 0x5E, 0xC6, 0x0C,
-    0x0E, 0xDD, 0xB0, 0x67, 0xE6, 0xA3, 0x2F, 0x76,
-    0x79, 0x60, 0x10, 0xAC, 0xB1, 0x1A, 0xD0, 0x13,
-    0x6C, 0xE4, 0x9F, 0x97, 0x6E, 0x74, 0xF8, 0x95,
-    0x04, 0x2F, 0x7C, 0xBF, 0x13, 0xFB, 0x73, 0xD1,
-    0x9D, 0xC8, 0x89, 0xD7, 0xE9, 0x03, 0x46, 0x9D,
-    0xEB, 0x33, 0x73, 0x1F, 0x24, 0x06, 0xB6, 0x63
-  },
-  {
-    0xDE, 0xB7, 0x12, 0xB9, 0xCC, 0x64, 0xF5, 0x88,
-    0x14, 0x86, 0x0B, 0x51, 0xFA, 0x89, 0xAD, 0x8A,
-    0x92, 0x6A, 0x69, 0x08, 0xC7, 0x96, 0xDE, 0x55,
-    0x7F, 0x90, 0xCF, 0xAD, 0xB0, 0xC6, 0x2C, 0x07,
-    0x87, 0x2F, 0x33, 0xFE, 0x18, 0x4E, 0x5E, 0x21,
-    0x2A, 0x3C, 0x5C, 0x37, 0x31, 0x74, 0x18, 0x44,
-    0x6E, 0xFD, 0x95, 0x61, 0x3F, 0x61, 0x8A, 0x35,
-    0xF7, 0xD2, 0x78, 0x9E, 0xFE, 0x0D, 0x96, 0x60
-  },
-  {
-    0xB4, 0x2F, 0x4A, 0x40, 0xB3, 0xC8, 0x8B, 0xCE,
-    0xCF, 0xE3, 0x28, 0xC8, 0x46, 0xBF, 0x06, 0x48,
-    0xA1, 0x69, 0x90, 0xCA, 0x53, 0x91, 0x95, 0xC0,
-    0xC1, 0xDC, 0x8D, 0x70, 0x30, 0x80, 0x67, 0x68,
-    0x5A, 0xF6, 0x77, 0xAD, 0x65, 0xAC, 0x0C, 0x7A,
-    0x9B, 0xCF, 0xA8, 0xF7, 0xAC, 0xC0, 0xAA, 0xCF,
-    0x45, 0xCA, 0x18, 0xAC, 0x83, 0x1F, 0xED, 0x64,
-    0x4E, 0xC3, 0xD9, 0x28, 0x31, 0x01, 0xFF, 0xEF
-  },
-  {
-    0xED, 0xCF, 0x6C, 0x81, 0xCC, 0xF1, 0x6E, 0x11,
-    0xDD, 0xF7, 0x19, 0xA3, 0x3D, 0xD0, 0xE5, 0x34,
-    0x9C, 0xAB, 0xAC, 0x5C, 0xFA, 0xE5, 0x97, 0x00,
-    0x98, 0x40, 0xE1, 0xC3, 0x93, 0x62, 0xC0, 0xF1,
-    0x19, 0x82, 0xFE, 0x2C, 0x27, 0x65, 0x85, 0x9A,
-    0x94, 0x26, 0x2D, 0xA2, 0x8D, 0xD3, 0x37, 0x3D,
-    0x52, 0x26, 0x93, 0x89, 0x75, 0x11, 0xEB, 0xA5,
-    0xE0, 0x7B, 0x8B, 0xC6, 0xB6, 0x06, 0x4D, 0xC0
-  },
-  {
-    0x46, 0xB9, 0x62, 0xD2, 0x28, 0x36, 0x94, 0xD2,
-    0x79, 0x75, 0xDC, 0xBF, 0x32, 0x56, 0x4C, 0x9B,
-    0x04, 0x03, 0x2B, 0x30, 0xA9, 0x3E, 0x05, 0x8F,
-    0xB7, 0x7B, 0x2B, 0x71, 0x8B, 0x4A, 0xD5, 0xFB,
-    0x78, 0x9A, 0xB7, 0xD7, 0xAA, 0x90, 0x85, 0x2D,
-    0xA2, 0xBF, 0xB6, 0xB3, 0x93, 0xB0, 0x9F, 0x98,
-    0xE8, 0x69, 0xB1, 0x6E, 0x41, 0x0E, 0x7D, 0xE2,
-    0x30, 0xB1, 0x79, 0xF6, 0x2E, 0xB5, 0x74, 0x71
-  },
-  {
-    0x29, 0x03, 0x6C, 0x3F, 0x53, 0x82, 0xE3, 0x5D,
-    0xE7, 0xA6, 0x9F, 0xA7, 0xA6, 0x3E, 0xC7, 0xBD,
-    0xCB, 0xC4, 0xE0, 0xCC, 0x5A, 0x7B, 0x64, 0x14,
-    0xCF, 0x44, 0xBF, 0x9A, 0x83, 0x83, 0xEF, 0xB5,
-    0x97, 0x23, 0x50, 0x6F, 0x0D, 0x51, 0xAD, 0x50,
-    0xAC, 0x1E, 0xAC, 0xF7, 0x04, 0x30, 0x8E, 0x8A,
-    0xEC, 0xB9, 0x66, 0xF6, 0xAC, 0x94, 0x1D, 0xB1,
-    0xCD, 0xE4, 0xB5, 0x9E, 0x84, 0xC1, 0xEB, 0xBA
-  },
-  {
-    0x17, 0x3F, 0x8A, 0xB8, 0x93, 0x3E, 0xB0, 0x7C,
-    0xC5, 0xFD, 0x6E, 0x4B, 0xCE, 0xBA, 0xE1, 0xFF,
-    0x35, 0xC7, 0x87, 0x9B, 0x93, 0x8A, 0x5A, 0x15,
-    0x79, 0xEA, 0x02, 0xF3, 0x83, 0x32, 0x48, 0x86,
-    0xC7, 0x0E, 0xD9, 0x10, 0x9D, 0xE1, 0x69, 0x0B,
-    0x8E, 0xE8, 0x01, 0xBC, 0x95, 0x9B, 0x21, 0xD3,
-    0x81, 0x17, 0xEB, 0xB8, 0x4A, 0xB5, 0x6F, 0x88,
-    0xF8, 0xA3, 0x72, 0x62, 0x00, 0x2D, 0xD9, 0x8E
-  },
-  {
-    0xC6, 0xAF, 0xA6, 0xA1, 0x91, 0x93, 0x1F, 0xD4,
-    0x5C, 0x3B, 0xAD, 0xBA, 0x72, 0x6E, 0x68, 0xA9,
-    0xBC, 0x73, 0x88, 0xC8, 0xCF, 0x37, 0xAD, 0xEC,
-    0x7C, 0x64, 0x56, 0x1C, 0xF4, 0x81, 0xFD, 0x25,
-    0x9A, 0x64, 0x6C, 0x8B, 0xD8, 0x43, 0xE7, 0x70,
-    0x9E, 0x11, 0xE6, 0x4D, 0xCF, 0xD5, 0xDF, 0xFF,
-    0xED, 0x79, 0x23, 0x5C, 0x68, 0x9B, 0x42, 0x00,
-    0xFE, 0x7A, 0xC8, 0xDF, 0xDA, 0xDD, 0xEC, 0xE0
-  },
-  {
-    0xA6, 0xDC, 0xCD, 0x8C, 0x19, 0x26, 0x64, 0x88,
-    0xBF, 0x77, 0xB9, 0xF2, 0x4B, 0x91, 0x43, 0xDE,
-    0xF1, 0xFE, 0xD6, 0x1D, 0x0C, 0x60, 0xB5, 0x00,
-    0x0A, 0x52, 0x3F, 0x45, 0x0D, 0xA2, 0x3D, 0x74,
-    0xE4, 0xE3, 0xF6, 0xEF, 0x04, 0x09, 0x0D, 0x10,
-    0x66, 0xB6, 0xAC, 0xE8, 0x5A, 0xBC, 0x0F, 0x03,
-    0x01, 0x73, 0xF5, 0x28, 0x17, 0x72, 0x7C, 0x4E,
-    0x40, 0x43, 0x2D, 0xD3, 0x4C, 0x6E, 0xF9, 0xF0
-  },
-  {
-    0xAA, 0xF8, 0x90, 0x8D, 0x54, 0x6E, 0x4F, 0x1E,
-    0x31, 0x4C, 0x00, 0xE9, 0xD2, 0xE8, 0x85, 0x5C,
-    0xB2, 0x56, 0x44, 0x5A, 0xAE, 0x3E, 0xCA, 0x44,
-    0x23, 0x83, 0x22, 0xAE, 0xC7, 0x40, 0x34, 0xA1,
-    0x45, 0x8A, 0x29, 0x36, 0x75, 0xDA, 0xD9, 0x49,
-    0x40, 0x8D, 0xE5, 0x55, 0x4F, 0x22, 0xD7, 0x34,
-    0x54, 0xF3, 0xF0, 0x70, 0x9C, 0xBC, 0xCC, 0x85,
-    0xCB, 0x05, 0x3A, 0x6F, 0x50, 0x38, 0x91, 0xA1
-  },
-  {
-    0x52, 0x5F, 0x4A, 0xAB, 0x9C, 0x32, 0x7D, 0x2A,
-    0x6A, 0x3C, 0x9D, 0xF8, 0x1F, 0xB7, 0xBE, 0x97,
-    0xEE, 0x03, 0xE3, 0xF7, 0xCE, 0x33, 0x21, 0x1C,
-    0x47, 0x78, 0x8A, 0xCD, 0x13, 0x46, 0x40, 0xDD,
-    0x90, 0xAD, 0x74, 0x99, 0x2D, 0x3D, 0xD6, 0xAC,
-    0x80, 0x63, 0x50, 0xF3, 0xBA, 0xBC, 0x7F, 0xE1,
-    0x98, 0xA6, 0x1D, 0xB3, 0x2D, 0x4A, 0xD1, 0xD6,
-    0x56, 0x9A, 0xE8, 0x41, 0x31, 0x04, 0xDE, 0xA4
-  },
-  {
-    0x2D, 0xAC, 0xCD, 0x88, 0x71, 0x9D, 0x0A, 0x00,
-    0xB5, 0x2C, 0x6E, 0xB7, 0x9E, 0x1C, 0xA8, 0xB4,
-    0xA1, 0xB4, 0xB4, 0x4F, 0xFA, 0x20, 0x88, 0x9F,
-    0x23, 0x63, 0xEF, 0x5C, 0x0D, 0x73, 0x7F, 0x1F,
-    0x81, 0xF5, 0x0D, 0xA1, 0xCA, 0xAC, 0x23, 0x1D,
-    0x6F, 0xCB, 0x48, 0x89, 0x5E, 0x72, 0x99, 0xB7,
-    0x7A, 0xF8, 0x1F, 0x0A, 0xA4, 0xA7, 0x61, 0x8A,
-    0xD2, 0x4B, 0x7A, 0xAF, 0xC8, 0xE3, 0xA2, 0xBE
-  },
-  {
-    0x7D, 0x28, 0x6F, 0x1F, 0x72, 0x1E, 0xC2, 0xD2,
-    0x11, 0x5E, 0xF4, 0xCC, 0xD8, 0x28, 0x58, 0xA4,
-    0xD5, 0x12, 0x21, 0x13, 0x55, 0xD4, 0xFC, 0x58,
-    0xE5, 0x34, 0xBF, 0xA5, 0x9C, 0x2E, 0x1B, 0xF5,
-    0x52, 0xA9, 0x6D, 0xC4, 0xB3, 0xE4, 0x6B, 0x01,
-    0x28, 0x65, 0xDA, 0x88, 0x13, 0x4C, 0xF0, 0x4E,
-    0x73, 0x1B, 0x19, 0x30, 0x75, 0x9E, 0x15, 0x8F,
-    0xF6, 0x20, 0xB6, 0xEC, 0x5A, 0xAF, 0xD0, 0x12
-  },
-  {
-    0x21, 0x82, 0x6B, 0x95, 0x29, 0xC4, 0xBC, 0x51,
-    0x91, 0x47, 0xF5, 0xF9, 0xFE, 0x6D, 0xB8, 0x78,
-    0x34, 0x52, 0x15, 0xE5, 0x09, 0x4F, 0x4E, 0x99,
-    0xB1, 0x31, 0xED, 0x54, 0xE2, 0x49, 0x53, 0xCE,
-    0xE9, 0xAD, 0xB7, 0x18, 0xD1, 0x74, 0x3E, 0x6C,
-    0x27, 0xFC, 0x94, 0x51, 0x6A, 0x99, 0x22, 0xFB,
-    0x97, 0x5A, 0x78, 0x16, 0xB8, 0xAA, 0xB0, 0x21,
-    0x12, 0x60, 0x8C, 0x03, 0x2B, 0xF1, 0x38, 0xE3
-  },
-  {
-    0xC1, 0x68, 0x9C, 0x69, 0x8A, 0xB0, 0x65, 0xF6,
-    0x2E, 0xEE, 0x65, 0xDD, 0xCA, 0x67, 0x6B, 0xAA,
-    0x45, 0xB5, 0x2F, 0x30, 0x8A, 0xFA, 0x80, 0x4A,
-    0xB4, 0xAA, 0x6A, 0xB8, 0x4B, 0x7A, 0xC1, 0xAA,
-    0x1D, 0xFF, 0x07, 0x17, 0x56, 0x10, 0xB1, 0x2A,
-    0xE1, 0x1F, 0x27, 0xB7, 0xC4, 0x30, 0xAF, 0xD5,
-    0x75, 0x56, 0xBD, 0x18, 0x1D, 0x02, 0x83, 0x2C,
-    0xD8, 0xD0, 0xA5, 0xFD, 0xC3, 0x02, 0x01, 0x24
-  },
-  {
-    0xA1, 0xA6, 0x28, 0x17, 0x47, 0xE3, 0x4D, 0x3E,
-    0xDE, 0x5E, 0x93, 0x34, 0x01, 0x74, 0x7C, 0xA7,
-    0xF7, 0x66, 0x28, 0xB6, 0x14, 0xC8, 0xA3, 0x94,
-    0xF5, 0x02, 0x56, 0x2B, 0xFE, 0xE0, 0xB9, 0x94,
-    0xEC, 0xB6, 0x5F, 0xBF, 0xE1, 0xFF, 0x70, 0x67,
-    0xDC, 0xB0, 0x1D, 0x02, 0xA9, 0x2B, 0xA4, 0x62,
-    0x20, 0x75, 0x87, 0xCE, 0xF7, 0xDC, 0x2C, 0xFD,
-    0xB4, 0x58, 0x48, 0x48, 0xAD, 0x55, 0x91, 0x4A
-  },
-  {
-    0x00, 0x70, 0xA0, 0x19, 0x0A, 0xA6, 0x96, 0x57,
-    0x2D, 0x85, 0x3F, 0x1D, 0x24, 0xAB, 0x63, 0x08,
-    0x48, 0xAC, 0x56, 0xAD, 0x5C, 0x2E, 0xBF, 0xCF,
-    0xDE, 0x27, 0xD1, 0x11, 0xCD, 0x55, 0x93, 0x9C,
-    0x1E, 0x4D, 0x07, 0x87, 0x2D, 0xDE, 0x7C, 0xE7,
-    0x8B, 0x53, 0x4B, 0x53, 0x0F, 0x0A, 0x39, 0x6E,
-    0x86, 0xAF, 0x9D, 0x57, 0x53, 0x54, 0xB5, 0xD7,
-    0xE3, 0x4A, 0xCD, 0xE1, 0x8C, 0xC7, 0x67, 0xAE
-  },
-  {
-    0x51, 0xB9, 0xB5, 0xED, 0x19, 0x3F, 0xD4, 0xB1,
-    0xA3, 0xA9, 0x2B, 0x46, 0xBD, 0x4B, 0xD1, 0xF6,
-    0xEC, 0x6B, 0x38, 0xA6, 0x0F, 0x2D, 0x02, 0x61,
-    0xD7, 0x2A, 0xBF, 0xD1, 0x64, 0x36, 0x12, 0x8D,
-    0xCB, 0xF2, 0x2C, 0x25, 0xE3, 0xE3, 0xC4, 0x3F,
-    0xE4, 0xD2, 0x9D, 0xB9, 0x12, 0x4D, 0x03, 0x33,
-    0x30, 0x18, 0x45, 0x92, 0xD2, 0x0C, 0x5B, 0x08,
-    0x2C, 0x23, 0x20, 0x64, 0x54, 0xCB, 0x3D, 0xD7
-  },
-  {
-    0x57, 0x8F, 0x24, 0x27, 0x46, 0x91, 0x4E, 0x36,
-    0xD0, 0xD9, 0xD4, 0x80, 0x96, 0x89, 0x57, 0x12,
-    0x16, 0xA4, 0x3E, 0x47, 0x33, 0x32, 0x39, 0x51,
-    0x62, 0x0F, 0x5E, 0xE7, 0x8C, 0xCF, 0xEE, 0x91,
-    0x9B, 0xF5, 0x5F, 0x28, 0x7B, 0x45, 0xA7, 0x3D,
-    0x44, 0x85, 0xAC, 0x74, 0x22, 0x87, 0x92, 0x39,
-    0x65, 0x3B, 0x05, 0x91, 0xC3, 0x6C, 0x86, 0x69,
-    0x41, 0xF8, 0xAF, 0xFE, 0x4A, 0xE5, 0x6E, 0x9E
-  },
-  {
-    0x94, 0x71, 0x30, 0xEF, 0x0B, 0x94, 0x8E, 0xE0,
-    0x45, 0x81, 0xAB, 0xA3, 0xE2, 0xCC, 0x4C, 0xEF,
-    0xC3, 0x8C, 0xCE, 0xDC, 0x86, 0x17, 0x92, 0xB7,
-    0xB5, 0xDC, 0xD9, 0xD9, 0x36, 0x1C, 0x72, 0x4A,
-    0x12, 0x20, 0x03, 0xBF, 0x79, 0x6C, 0xE0, 0x97,
-    0x98, 0x00, 0xAD, 0xAB, 0xC7, 0x45, 0x6F, 0x17,
-    0x3A, 0xE5, 0x26, 0x93, 0x15, 0xAF, 0xC0, 0x1B,
-    0x60, 0x6D, 0xB2, 0x9C, 0x75, 0x50, 0xE8, 0xCA
-  },
-  {
-    0xC8, 0x52, 0xE6, 0x77, 0xF7, 0x7B, 0x14, 0xB5,
-    0x85, 0xBD, 0x10, 0x2A, 0x0F, 0x14, 0x42, 0x43,
-    0x05, 0x9D, 0xAB, 0xEC, 0x7C, 0xB0, 0x1F, 0xFA,
-    0x61, 0xDF, 0x19, 0xFC, 0xE8, 0xAB, 0x43, 0x6B,
-    0xF5, 0xE2, 0xD5, 0xC7, 0x9A, 0xA2, 0xD7, 0xB6,
-    0x77, 0xF6, 0xC3, 0x75, 0xE9, 0x34, 0x3D, 0x34,
-    0x2E, 0x4F, 0xF4, 0xE3, 0xAB, 0x00, 0x1B, 0xC7,
-    0x98, 0x8C, 0x3C, 0x7A, 0x83, 0xCC, 0xB6, 0x9F
-  },
-  {
-    0x01, 0x19, 0x75, 0x26, 0x91, 0x7A, 0xC2, 0xC7,
-    0xBC, 0x53, 0x95, 0x19, 0xE6, 0x8B, 0xB2, 0x79,
-    0x81, 0x35, 0xF6, 0x03, 0x3E, 0xD5, 0x8F, 0x5C,
-    0x45, 0x1E, 0x0C, 0xE9, 0x46, 0xAF, 0xF0, 0xF9,
-    0x8D, 0xFD, 0xD1, 0x51, 0x01, 0x73, 0x1A, 0xC1,
-    0x66, 0x12, 0x6E, 0xAF, 0xB5, 0xE7, 0xCB, 0xE2,
-    0xE2, 0x72, 0xEE, 0x23, 0x3F, 0x34, 0xE5, 0xF3,
-    0xF8, 0xEA, 0x3D, 0x2D, 0x12, 0x24, 0x82, 0xFB
-  },
-  {
-    0x05, 0x9C, 0x90, 0x85, 0x89, 0x5E, 0xB7, 0x18,
-    0x30, 0x4E, 0x2D, 0xDA, 0x78, 0x68, 0x6B, 0xD9,
-    0x57, 0x49, 0x81, 0x5A, 0x5E, 0xE9, 0x02, 0x51,
-    0x0B, 0x00, 0x9A, 0xF6, 0x92, 0x48, 0xB6, 0xA7,
-    0xA7, 0x2F, 0xF8, 0xA6, 0x28, 0xD8, 0x17, 0x73,
-    0xE1, 0x1D, 0x5A, 0x1E, 0x7F, 0x69, 0x7A, 0x44,
-    0x9B, 0x7A, 0x1E, 0x27, 0x12, 0xD5, 0xCF, 0xAE,
-    0x7A, 0xB2, 0x65, 0x07, 0xD1, 0x11, 0x29, 0x18
-  },
-  {
-    0x29, 0x52, 0x43, 0xBD, 0x75, 0x8C, 0xF2, 0x1C,
-    0x80, 0x31, 0x25, 0xFC, 0xF3, 0x21, 0xDE, 0x5F,
-    0x97, 0x98, 0x7C, 0x8D, 0xB3, 0xBB, 0x3C, 0xB5,
-    0x1F, 0xF9, 0x7C, 0x4C, 0xDA, 0xC9, 0xD3, 0xBF,
-    0x0A, 0x67, 0xCE, 0xE7, 0xED, 0x35, 0x0A, 0x41,
-    0xFD, 0xE6, 0xAB, 0xCC, 0x25, 0x4F, 0xBC, 0x9F,
-    0x8E, 0x6B, 0x3E, 0x3C, 0xCE, 0xCB, 0xD0, 0xE4,
-    0xA6, 0x40, 0xA2, 0x0F, 0x36, 0x2B, 0xA3, 0xA0
-  },
-  {
-    0xDD, 0x82, 0x32, 0xD2, 0x41, 0x2C, 0xCE, 0xEC,
-    0xB5, 0x12, 0x31, 0x91, 0xF6, 0xE9, 0x22, 0x1E,
-    0x85, 0x1E, 0xCC, 0xE0, 0xFA, 0xEB, 0xF0, 0x50,
-    0x5F, 0x2A, 0xEE, 0xFF, 0x8A, 0x8C, 0x92, 0xD4,
-    0x1D, 0xAC, 0xF1, 0x77, 0xBD, 0xAE, 0x27, 0x76,
-    0x3E, 0xA4, 0xA8, 0x62, 0x05, 0xEF, 0x76, 0x34,
-    0xF7, 0xA6, 0x87, 0xCC, 0x44, 0xBB, 0xBB, 0xDE,
-    0xEE, 0x5E, 0x11, 0xE6, 0x5F, 0x9F, 0xBD, 0x69
-  },
-  {
-    0xB0, 0x46, 0xB6, 0x83, 0x71, 0x6D, 0x31, 0xC9,
-    0x14, 0xC7, 0x0B, 0x10, 0xF7, 0x64, 0x6D, 0xA3,
-    0x1E, 0xFA, 0xB2, 0x23, 0x63, 0x47, 0x45, 0x9C,
-    0xF8, 0xFA, 0x2C, 0x09, 0x12, 0x34, 0x31, 0xF7,
-    0x28, 0x07, 0xF1, 0x1D, 0x86, 0x7C, 0x37, 0x70,
-    0xB1, 0xF0, 0x61, 0xD5, 0x6C, 0xA0, 0xE5, 0xB1,
-    0xE8, 0x8A, 0x6B, 0x44, 0xA3, 0x3C, 0xF9, 0x3E,
-    0x18, 0xBC, 0xC9, 0xCE, 0xBB, 0xA5, 0xAD, 0xE7
-  },
-  {
-    0x20, 0xE5, 0xA2, 0x55, 0x05, 0x8B, 0xE5, 0x1E,
-    0x1A, 0x62, 0x9B, 0x4E, 0xBF, 0x81, 0xE5, 0xCB,
-    0xE0, 0x78, 0x1C, 0xB6, 0x7C, 0xA4, 0xE5, 0x7B,
-    0xA8, 0x6B, 0x30, 0x88, 0x96, 0xBC, 0xE7, 0x38,
-    0x20, 0xEB, 0x08, 0x43, 0x1C, 0xE8, 0xC9, 0xBC,
-    0x58, 0x10, 0xCC, 0x8D, 0x8B, 0x9C, 0x9D, 0x6F,
-    0xCF, 0x83, 0x4E, 0x42, 0xEA, 0x33, 0xEF, 0x73,
-    0xCE, 0xC4, 0x7D, 0x71, 0x3B, 0x6D, 0x8D, 0xFD
-  },
-  {
-    0x1E, 0x48, 0x04, 0xF9, 0xC0, 0xB1, 0xE8, 0x2B,
-    0x9E, 0xD3, 0x63, 0xBD, 0xE4, 0x47, 0x28, 0xAC,
-    0xF7, 0xD0, 0x90, 0xA1, 0xBF, 0xE2, 0xDD, 0xF8,
-    0x81, 0x9D, 0x65, 0x92, 0xEF, 0x45, 0x3B, 0x83,
-    0x5B, 0xD2, 0xEF, 0xE8, 0xB0, 0x20, 0x6E, 0x29,
-    0x25, 0x5B, 0x07, 0xFB, 0x90, 0xC7, 0xD3, 0x0D,
-    0x2C, 0x11, 0x48, 0x00, 0xB8, 0x6C, 0xB0, 0xE3,
-    0xE0, 0x7D, 0x38, 0x7E, 0x98, 0xCE, 0x95, 0x37
-  },
-  {
-    0x41, 0xC9, 0x53, 0xD8, 0xD2, 0x2A, 0x86, 0xC3,
-    0x63, 0x4D, 0xF4, 0x22, 0xB6, 0xDE, 0x4A, 0x4F,
-    0x14, 0x96, 0x66, 0xBE, 0x8C, 0x4F, 0x58, 0x1B,
-    0x26, 0x23, 0xEE, 0x65, 0xC3, 0x92, 0xA5, 0xC3,
-    0x28, 0x36, 0x63, 0x9E, 0xF5, 0x6B, 0x93, 0x68,
-    0x62, 0x20, 0xF4, 0x5C, 0xE6, 0x5B, 0x4F, 0xA8,
-    0x58, 0x9C, 0x91, 0x25, 0x64, 0x17, 0x90, 0xB6,
-    0x92, 0x5F, 0xAA, 0xD9, 0x48, 0xB8, 0xBE, 0x04
-  },
-  {
-    0x8B, 0xFC, 0xA4, 0xC8, 0xDF, 0xE3, 0xFD, 0xE4,
-    0x25, 0x7B, 0x75, 0xC3, 0xDB, 0x01, 0x86, 0x2E,
-    0xD3, 0x11, 0x67, 0xDE, 0x66, 0xC2, 0xE0, 0x3A,
-    0x25, 0x56, 0xC4, 0xF4, 0x6C, 0x9D, 0xFF, 0xC1,
-    0xAC, 0x45, 0xF7, 0xBC, 0x59, 0xA6, 0x7A, 0xB9,
-    0x36, 0x24, 0xBE, 0xB8, 0x6D, 0xDD, 0x0D, 0x02,
-    0x60, 0x3F, 0x0D, 0xCD, 0x03, 0x64, 0xF0, 0xF8,
-    0x08, 0x81, 0x9B, 0xE9, 0x6C, 0xD8, 0xD3, 0xB6
-  },
-  {
-    0xF6, 0xBF, 0x59, 0xD8, 0xD4, 0x5A, 0x55, 0x71,
-    0x11, 0xA2, 0x36, 0xCB, 0xBA, 0x52, 0x61, 0x9A,
-    0xE3, 0xDF, 0xCC, 0x43, 0x16, 0x94, 0x38, 0x43,
-    0xAF, 0xD1, 0x28, 0x1B, 0x28, 0x21, 0x4A, 0x4A,
-    0x5E, 0x85, 0x1E, 0xF8, 0xC5, 0x4F, 0x50, 0x5E,
-    0x3C, 0x4B, 0x60, 0x0E, 0xFF, 0xBE, 0xBB, 0x3E,
-    0xAC, 0x17, 0x08, 0x7F, 0x22, 0x27, 0x58, 0x12,
-    0x63, 0xF1, 0x7D, 0x7E, 0x5F, 0x68, 0xEA, 0x83
-  },
-  {
-    0x1B, 0xC9, 0xED, 0xE4, 0xD4, 0x1A, 0x4D, 0xF6,
-    0xE8, 0xE6, 0xF4, 0x7C, 0x2F, 0x4A, 0xD8, 0x73,
-    0x37, 0xB6, 0x9B, 0x19, 0xF7, 0x10, 0xF7, 0x66,
-    0xE1, 0xFA, 0xF5, 0xAA, 0x05, 0xA4, 0x3B, 0x66,
-    0x45, 0x39, 0x6E, 0x7F, 0xBE, 0xF4, 0x3B, 0xB7,
-    0x79, 0x5D, 0x39, 0x40, 0x7B, 0x58, 0x15, 0xB9,
-    0x2E, 0xCC, 0x23, 0xA6, 0xC1, 0x24, 0x14, 0x21,
-    0x15, 0x3A, 0x55, 0xD5, 0x1F, 0x12, 0xBF, 0xD8
-  },
-  {
-    0x76, 0xB3, 0x8B, 0x36, 0x31, 0x55, 0x5D, 0xBC,
-    0xFB, 0x21, 0x21, 0x8F, 0xF9, 0xE4, 0x12, 0xA2,
-    0x29, 0x88, 0x9E, 0xF2, 0xCE, 0x8A, 0xD7, 0x05,
-    0xE9, 0x0F, 0x96, 0xAA, 0xBB, 0xD5, 0xBE, 0x7E,
-    0x53, 0x29, 0xA4, 0x26, 0x53, 0x4C, 0x81, 0x5A,
-    0x56, 0x53, 0x77, 0x13, 0x18, 0x72, 0x66, 0x41,
-    0x42, 0x4E, 0x3B, 0x88, 0x29, 0x2F, 0xB1, 0xD8,
-    0x95, 0x44, 0x40, 0x6A, 0xDE, 0x9B, 0xCC, 0xB5
-  },
-  {
-    0xE5, 0x3F, 0x60, 0x07, 0x40, 0x22, 0x4E, 0x4D,
-    0x10, 0xD3, 0x1D, 0x24, 0x38, 0x00, 0x31, 0x43,
-    0xAF, 0xDB, 0x43, 0x6E, 0xB1, 0x79, 0x1B, 0x15,
-    0x0D, 0xE3, 0x56, 0x76, 0xF0, 0xE3, 0x2F, 0x80,
-    0xB0, 0xB6, 0x5F, 0x0A, 0xCF, 0x48, 0x1A, 0x5F,
-    0xBF, 0x95, 0x96, 0xC0, 0xCB, 0x0A, 0x27, 0xC7,
-    0xAF, 0xC1, 0x1D, 0x1E, 0x2C, 0x4D, 0x54, 0x02,
-    0x47, 0x5E, 0x4F, 0xFC, 0xC1, 0xCD, 0xA8, 0x11
-  },
-  {
-    0x62, 0x06, 0xB9, 0x1F, 0xC0, 0xB6, 0xF1, 0x21,
-    0x1E, 0x9F, 0xDE, 0xCD, 0xC9, 0xD5, 0x1A, 0x6F,
-    0x1E, 0xEE, 0x65, 0x54, 0xB1, 0x38, 0xAD, 0xCD,
-    0x4A, 0x82, 0x3D, 0xF0, 0x0D, 0xDE, 0xF6, 0x75,
-    0x9A, 0x9B, 0xFD, 0x7A, 0x4E, 0x98, 0x1E, 0x04,
-    0x52, 0x36, 0x83, 0x8F, 0x4A, 0xF6, 0x93, 0xF6,
-    0x93, 0x77, 0x93, 0x14, 0x84, 0xB3, 0xE8, 0x1E,
-    0x3E, 0x3B, 0xC2, 0xCB, 0x7E, 0xF7, 0x9F, 0xE9
-  },
-  {
-    0x76, 0xFD, 0x02, 0xDA, 0xDD, 0x96, 0x3B, 0xC0,
-    0x35, 0x39, 0x91, 0x46, 0xCE, 0x42, 0x98, 0x8C,
-    0xC0, 0x99, 0xD3, 0xCF, 0x4D, 0x32, 0xDF, 0x5C,
-    0x0B, 0xBF, 0x64, 0x10, 0x12, 0x46, 0xB1, 0xC7,
-    0x08, 0xD1, 0x67, 0xE2, 0x95, 0x95, 0xD1, 0x1D,
-    0x09, 0xB3, 0xF6, 0x34, 0x86, 0xB4, 0x05, 0x26,
-    0xAC, 0x1D, 0xFE, 0x31, 0xBC, 0x22, 0xDE, 0xC7,
-    0x0B, 0x74, 0x5E, 0x90, 0xE2, 0xEA, 0xAF, 0x5A
-  },
-  {
-    0xF0, 0xA1, 0xFB, 0xE3, 0x11, 0x63, 0xE4, 0x21,
-    0x01, 0x50, 0x72, 0x18, 0x3D, 0x68, 0xEE, 0x51,
-    0x91, 0xA9, 0x9C, 0xFD, 0xA1, 0x69, 0xBA, 0x5A,
-    0x19, 0x54, 0xC9, 0xF3, 0x10, 0x7D, 0x4E, 0xCA,
-    0x06, 0x3E, 0x13, 0x7A, 0x71, 0x14, 0xD3, 0x97,
-    0xC9, 0xDB, 0x67, 0x2B, 0x9F, 0x47, 0x8D, 0x41,
-    0xC3, 0x4E, 0x99, 0x1B, 0x06, 0x69, 0xA9, 0x51,
-    0x53, 0x92, 0x90, 0xC8, 0xED, 0x65, 0xE4, 0x6A
-  },
-  {
-    0x13, 0xC7, 0x2A, 0x6A, 0xA5, 0x71, 0xB1, 0x43,
-    0xDC, 0xCF, 0x45, 0xAD, 0xCD, 0x98, 0xEA, 0xE6,
-    0x99, 0xA1, 0x54, 0xB1, 0x10, 0xF2, 0x5E, 0x7E,
-    0x9E, 0x82, 0xB7, 0x65, 0xB9, 0xA0, 0x89, 0x23,
-    0x68, 0x8E, 0x8E, 0x0F, 0xF3, 0x11, 0xA6, 0x8A,
-    0x77, 0x1E, 0x14, 0x50, 0x96, 0xD6, 0x07, 0x76,
-    0xC6, 0xD6, 0xEE, 0x70, 0xAD, 0x6F, 0x69, 0xFA,
-    0x2B, 0x76, 0x77, 0x63, 0x40, 0x55, 0xA0, 0x0E
-  },
-  {
-    0x0E, 0x06, 0x2B, 0xFE, 0x81, 0x8E, 0xE1, 0x0F,
-    0x33, 0x48, 0x1D, 0xEA, 0x43, 0x02, 0x8B, 0x2C,
-    0xFB, 0xB4, 0x9E, 0xC9, 0x5E, 0x0F, 0x75, 0xA9,
-    0xE1, 0x6D, 0x40, 0x4B, 0xC5, 0x19, 0xB9, 0xAD,
-    0x50, 0xB4, 0xA7, 0x33, 0x69, 0x2C, 0xA5, 0x4E,
-    0xFB, 0x68, 0x04, 0x69, 0xED, 0x83, 0xDD, 0xEF,
-    0xBD, 0xDD, 0xB1, 0x39, 0x04, 0x2E, 0x0E, 0x1C,
-    0x09, 0xC3, 0xEB, 0x79, 0x03, 0xFA, 0x08, 0xDF
-  },
-  {
-    0x45, 0x3B, 0xE4, 0xAA, 0xB9, 0xF4, 0x23, 0xB3,
-    0x36, 0x52, 0xA0, 0xB5, 0xD0, 0x2A, 0x9A, 0xF8,
-    0x55, 0xDD, 0x0D, 0x42, 0xDD, 0x83, 0x11, 0x0B,
-    0xA3, 0xBC, 0x4B, 0x39, 0x94, 0xEA, 0x3F, 0x88,
-    0x5A, 0x71, 0x30, 0x89, 0x75, 0x08, 0x9B, 0x49,
-    0x03, 0xE2, 0xE4, 0xD6, 0xBA, 0x6D, 0xC2, 0xE8,
-    0x40, 0x31, 0xFF, 0xE9, 0xC8, 0x56, 0x39, 0x75,
-    0xC8, 0x61, 0x6A, 0xCA, 0x07, 0x42, 0xE8, 0x29
-  },
-  {
-    0x53, 0x61, 0xE3, 0xE8, 0x93, 0xDD, 0x36, 0x0B,
-    0xCB, 0xF5, 0x1C, 0x79, 0x3E, 0xC0, 0x92, 0xA6,
-    0xB0, 0x52, 0x05, 0x4F, 0x5F, 0x00, 0x0B, 0x9F,
-    0xCE, 0x50, 0x7B, 0x66, 0x45, 0xF8, 0xD4, 0x70,
-    0x13, 0xA8, 0x70, 0x6A, 0x58, 0xD4, 0xB1, 0x06,
-    0x29, 0xCC, 0x82, 0xB8, 0xD2, 0xD7, 0x96, 0xFD,
-    0xD3, 0x7B, 0x60, 0x8A, 0x58, 0x79, 0x52, 0xD6,
-    0x55, 0x3E, 0x01, 0xD1, 0xAF, 0x0E, 0x04, 0xB8
-  },
-  {
-    0x74, 0xB5, 0x67, 0x39, 0xF0, 0x1F, 0x82, 0x09,
-    0xA4, 0x04, 0x44, 0xDF, 0x4C, 0xCD, 0xEE, 0xEA,
-    0x8F, 0x97, 0xE8, 0xE7, 0x6E, 0xFA, 0x3C, 0x04,
-    0x33, 0x7F, 0x69, 0x94, 0x5C, 0x4D, 0x44, 0xC0,
-    0x85, 0xF1, 0xF4, 0x78, 0x96, 0x96, 0x36, 0x1E,
-    0x3C, 0x97, 0x77, 0x4A, 0x93, 0x5F, 0x86, 0x0D,
-    0x67, 0x46, 0x86, 0xDC, 0xBA, 0x3D, 0x45, 0xEC,
-    0xD8, 0x63, 0x9A, 0x64, 0xAE, 0xA0, 0x62, 0x1B
-  },
-  {
-    0xB4, 0xD3, 0x15, 0x87, 0xB9, 0x2B, 0x53, 0x61,
-    0xCD, 0xC2, 0xD3, 0xC4, 0x10, 0x86, 0xC1, 0x55,
-    0x3E, 0x7B, 0x55, 0xA1, 0xF6, 0x1E, 0x94, 0xD2,
-    0xBC, 0x30, 0xBC, 0x25, 0x1D, 0xAF, 0x8A, 0x5E,
-    0xBF, 0xC5, 0x07, 0x09, 0xCC, 0x04, 0xCB, 0xAF,
-    0x4B, 0x3B, 0x4D, 0xA2, 0xD2, 0x6B, 0x81, 0x23,
-    0x8F, 0xBA, 0x71, 0x8F, 0xA9, 0x17, 0x59, 0xB8,
-    0x0B, 0xD3, 0x10, 0x3A, 0xEC, 0x11, 0xE0, 0x6F
-  },
-  {
-    0xAA, 0xF6, 0x12, 0x7F, 0x00, 0xA0, 0x3D, 0x96,
-    0x40, 0x6B, 0x9F, 0xB4, 0xAC, 0x70, 0x16, 0x0D,
-    0xB5, 0x22, 0x42, 0x9B, 0x5C, 0xD9, 0x4E, 0x7F,
-    0xA0, 0x30, 0x3A, 0x74, 0x94, 0x78, 0xFE, 0x31,
-    0x89, 0xC8, 0xEA, 0x23, 0x93, 0x0A, 0x66, 0x25,
-    0x2A, 0x80, 0x26, 0x74, 0xDC, 0xAF, 0x77, 0x00,
-    0x46, 0x82, 0x0D, 0xD9, 0x64, 0xC6, 0x6F, 0x0F,
-    0x54, 0x75, 0x1A, 0x72, 0xF9, 0x7D, 0x9C, 0x35
-  },
-  {
-    0x2C, 0x30, 0xD4, 0x8D, 0xF9, 0x98, 0x4E, 0x02,
-    0xF7, 0x5A, 0x94, 0x54, 0x92, 0x17, 0x18, 0x4D,
-    0xD0, 0x2A, 0xAD, 0x3B, 0x57, 0x68, 0x3D, 0x09,
-    0xB5, 0xA8, 0xC2, 0xEF, 0x53, 0xA9, 0x6A, 0xFB,
-    0x73, 0xFE, 0xB6, 0xF9, 0x14, 0xE2, 0xD8, 0x15,
-    0xBB, 0x3B, 0x08, 0x65, 0x43, 0x32, 0xFC, 0xFE,
-    0x79, 0xF8, 0x0E, 0xC5, 0xF0, 0x51, 0xDA, 0x10,
-    0xD7, 0x21, 0x41, 0x3D, 0xDD, 0xE8, 0xFA, 0x60
-  },
-  {
-    0x92, 0xE2, 0xC5, 0xF7, 0x5D, 0x0C, 0xEA, 0xFC,
-    0x81, 0x8F, 0xA7, 0x93, 0x59, 0x39, 0xE4, 0x8B,
-    0x91, 0x59, 0x41, 0xEF, 0x73, 0x4D, 0x75, 0x27,
-    0x0E, 0xB3, 0x21, 0xBA, 0x20, 0x80, 0xEF, 0x6D,
-    0x25, 0x5E, 0x90, 0xEF, 0x96, 0xC6, 0x4C, 0xFF,
-    0x1D, 0x8C, 0x18, 0xF3, 0x3C, 0x2E, 0xAB, 0x10,
-    0x7F, 0xEF, 0x53, 0xE0, 0xD8, 0xBB, 0x16, 0x05,
-    0x16, 0x80, 0x74, 0x80, 0xFC, 0xBA, 0x53, 0x73
-  },
-  {
-    0x6E, 0x03, 0xA9, 0x1E, 0x20, 0x44, 0x46, 0x27,
-    0xE3, 0xD2, 0xE2, 0x22, 0x26, 0xCF, 0x47, 0x00,
-    0x26, 0x69, 0x44, 0x34, 0xED, 0x64, 0x79, 0x82,
-    0x8C, 0xB6, 0xDC, 0x8F, 0x27, 0x96, 0x0A, 0xEE,
-    0xE2, 0xF4, 0xAB, 0x87, 0x2A, 0x5C, 0xA2, 0xF7,
-    0xF6, 0x52, 0xF7, 0xDC, 0x77, 0xD5, 0xF9, 0x6D,
-    0x85, 0x82, 0x8B, 0x8F, 0x9C, 0x2D, 0x6C, 0x23,
-    0x9E, 0x79, 0x77, 0x24, 0xA1, 0x31, 0x31, 0xB1
-  },
-  {
-    0xBA, 0x43, 0x2D, 0xB0, 0xA3, 0x31, 0xBB, 0x8C,
-    0x39, 0xB1, 0x7B, 0xEE, 0x34, 0x46, 0x2B, 0x26,
-    0xDD, 0xB7, 0xAD, 0x91, 0xB6, 0xC7, 0x5A, 0xEC,
-    0x27, 0x65, 0xFB, 0xAE, 0x3A, 0x0E, 0x60, 0xEC,
-    0x54, 0x6D, 0x45, 0xF8, 0xE5, 0x84, 0x37, 0xB9,
-    0xD7, 0x7C, 0x3D, 0x2E, 0x8D, 0x7C, 0xE0, 0x69,
-    0x73, 0x15, 0x66, 0x51, 0xD4, 0x08, 0x22, 0x2A,
-    0xA2, 0x90, 0xCB, 0x58, 0xCA, 0xBC, 0x0A, 0xE5
-  },
-  {
-    0x83, 0xA0, 0x1E, 0x23, 0xAB, 0x27, 0x7B, 0x1F,
-    0xC2, 0x8C, 0xD8, 0xBB, 0x8D, 0xA7, 0xE9, 0x4C,
-    0x70, 0xF1, 0xDE, 0xE3, 0x2D, 0x19, 0x55, 0xCE,
-    0xE2, 0x50, 0xEE, 0x58, 0x41, 0x9A, 0x1F, 0xEE,
-    0x10, 0xA8, 0x99, 0x17, 0x97, 0xCE, 0x3D, 0x20,
-    0x93, 0x80, 0xCA, 0x9F, 0x98, 0x93, 0x39, 0xE2,
-    0xD8, 0xA8, 0x1C, 0x67, 0xD7, 0x37, 0xD8, 0x28,
-    0x8C, 0x7F, 0xAE, 0x46, 0x02, 0x83, 0x4A, 0x8B
-  },
-  {
-    0x0E, 0xA3, 0x21, 0x72, 0xCC, 0x19, 0x1D, 0xFC,
-    0x13, 0x1C, 0xD8, 0x8A, 0xA0, 0x3F, 0xF4, 0x18,
-    0x5C, 0x0B, 0xFA, 0x7B, 0x19, 0x11, 0x12, 0x19,
-    0xEE, 0xCB, 0x45, 0xB0, 0xFF, 0x60, 0x4D, 0x3E,
-    0xDB, 0x00, 0x55, 0x0A, 0xBB, 0xA1, 0x11, 0x52,
-    0x2B, 0x77, 0xAE, 0x61, 0xC9, 0xA8, 0xD6, 0xE9,
-    0x4F, 0xCA, 0x9D, 0x96, 0xC3, 0x8D, 0x6B, 0x7C,
-    0xCE, 0x27, 0x52, 0xF0, 0xD0, 0xC3, 0x7E, 0x78
-  },
-  {
-    0x54, 0xAD, 0xD6, 0x55, 0x2B, 0x08, 0x85, 0x8B,
-    0x23, 0xD6, 0x64, 0x5F, 0x6C, 0xE7, 0x9E, 0x92,
-    0xF3, 0x8B, 0x66, 0xAE, 0x91, 0x86, 0x77, 0xE6,
-    0xD9, 0x1F, 0x71, 0x87, 0xC4, 0x16, 0x05, 0x24,
-    0xDF, 0xA8, 0xD0, 0x1F, 0x00, 0xEA, 0x93, 0xDD,
-    0x29, 0x9F, 0x3C, 0xC4, 0x09, 0x01, 0xBD, 0x33,
-    0x27, 0xA0, 0xF1, 0x8C, 0xCD, 0x7B, 0x6B, 0x8E,
-    0x4E, 0x47, 0xCD, 0x28, 0xCF, 0x83, 0x8F, 0xAB
-  },
-  {
-    0xEF, 0x84, 0x74, 0x6D, 0xC2, 0x01, 0x56, 0xB6,
-    0x6B, 0xA5, 0xC7, 0x8A, 0x50, 0x83, 0x0A, 0xBD,
-    0x2A, 0xEF, 0x90, 0xE6, 0x67, 0xB9, 0x7E, 0xB5,
-    0x22, 0x91, 0xBC, 0x86, 0x9D, 0x8A, 0xA2, 0x45,
-    0x59, 0xA1, 0x42, 0xC6, 0x8F, 0xEA, 0x2E, 0xF3,
-    0x2A, 0xF2, 0x2D, 0xFC, 0xEA, 0x4C, 0x90, 0xB3,
-    0xD4, 0x90, 0x8C, 0xC9, 0xEA, 0x5C, 0xFC, 0x4E,
-    0x91, 0xBF, 0x11, 0xCE, 0x6A, 0x7E, 0x57, 0x61
-  },
-  {
-    0x5A, 0x1B, 0xF3, 0x81, 0xA0, 0x41, 0x19, 0xF9,
-    0x42, 0xE4, 0x63, 0xAB, 0xA2, 0xB1, 0x64, 0x38,
-    0x82, 0x46, 0x8A, 0xEC, 0xC1, 0xB1, 0xAA, 0x1E,
-    0x7B, 0xCA, 0xAB, 0x3B, 0x47, 0x8F, 0xC5, 0xF0,
-    0x56, 0xF1, 0x0D, 0xA9, 0x03, 0x7D, 0x40, 0xFA,
-    0x7F, 0x55, 0x70, 0x8E, 0x10, 0x3B, 0xDA, 0x96,
-    0x5E, 0x92, 0x0C, 0xF6, 0x7C, 0xE3, 0xAD, 0xF7,
-    0xE2, 0x00, 0xE8, 0x61, 0x01, 0x4D, 0xEC, 0xC6
-  },
-  {
-    0xAC, 0xF7, 0x8A, 0xA3, 0x28, 0x45, 0x96, 0xF3,
-    0x30, 0xB7, 0xE8, 0x47, 0x51, 0xB9, 0x4C, 0x31,
-    0x4C, 0xD8, 0x36, 0x36, 0x27, 0xBA, 0x99, 0x78,
-    0x81, 0x30, 0x85, 0x78, 0x87, 0x37, 0x59, 0x89,
-    0x5D, 0x13, 0xDF, 0xFF, 0xA5, 0xE5, 0x74, 0x50,
-    0x13, 0x61, 0xF0, 0x43, 0xC7, 0x4F, 0x57, 0xD2,
-    0xD0, 0xF1, 0x5C, 0x7A, 0x41, 0xC7, 0xC4, 0x5E,
-    0x3C, 0x09, 0xAD, 0x89, 0xD6, 0x99, 0xA9, 0x77
-  },
-  {
-    0x18, 0xB3, 0xE9, 0x04, 0x38, 0x44, 0xD4, 0xF3,
-    0xA2, 0xD0, 0x21, 0xF5, 0x4C, 0x38, 0xFA, 0xCC,
-    0x36, 0x4F, 0x84, 0xBA, 0x10, 0x58, 0xF2, 0x10,
-    0x09, 0xFC, 0x37, 0x1D, 0x2E, 0x4F, 0x38, 0xC7,
-    0x27, 0x51, 0x8A, 0xAB, 0xA6, 0xA2, 0x9E, 0x0F,
-    0xDA, 0xE6, 0xE7, 0x60, 0xA4, 0xF1, 0xA6, 0xD7,
-    0x58, 0xEB, 0xE4, 0x2C, 0x2A, 0xFC, 0x9D, 0x2C,
-    0xDC, 0x6D, 0xD5, 0x80, 0x77, 0x8C, 0x4B, 0x32
-  },
-  {
-    0x18, 0x96, 0xB2, 0x31, 0x70, 0x33, 0xCF, 0x31,
-    0x04, 0x68, 0x73, 0xD8, 0x7F, 0x26, 0xE6, 0xA4,
-    0x2A, 0x9D, 0x77, 0x0B, 0xBA, 0xF6, 0xE0, 0x62,
-    0xDF, 0x11, 0xF9, 0xB4, 0xA0, 0xEA, 0xB2, 0x75,
-    0xAA, 0xB1, 0x2C, 0xAA, 0xC2, 0xD3, 0xF5, 0x29,
-    0xEB, 0x20, 0xD0, 0x70, 0xFD, 0x84, 0x4D, 0x86,
-    0xD0, 0xA5, 0x71, 0xCD, 0xF6, 0x28, 0x5F, 0x80,
-    0xE2, 0x30, 0x8B, 0xB8, 0x2C, 0x6C, 0x5B, 0x3B
-  },
-  {
-    0x8C, 0x3D, 0xC4, 0x01, 0x94, 0xAA, 0x02, 0x1F,
-    0x3C, 0x4A, 0x1F, 0x9A, 0x05, 0x5E, 0x4D, 0x41,
-    0x9E, 0xB3, 0xA2, 0x6D, 0x4C, 0x2F, 0x1A, 0x8C,
-    0x7E, 0x18, 0x8B, 0x73, 0x48, 0x13, 0x40, 0x80,
-    0xB6, 0x3F, 0x6E, 0x57, 0x0A, 0xD1, 0x1C, 0x28,
-    0x78, 0x66, 0x53, 0x55, 0x41, 0x9C, 0x10, 0x20,
-    0xDE, 0x4B, 0x65, 0x5E, 0x7A, 0x6C, 0x2C, 0xCD,
-    0xE9, 0x07, 0x2C, 0xD4, 0x27, 0xFE, 0x8C, 0x4E
-  },
-  {
-    0x70, 0xAE, 0x04, 0x30, 0xD5, 0x45, 0xEC, 0x42,
-    0x7F, 0x85, 0x41, 0x21, 0x1D, 0x4F, 0xE0, 0x42,
-    0xB9, 0x82, 0x3A, 0xCE, 0xC0, 0x4B, 0x15, 0xC9,
-    0x0B, 0x7F, 0x4B, 0x8B, 0xDD, 0x3D, 0xC7, 0x85,
-    0x19, 0x90, 0xF3, 0x70, 0xE7, 0x14, 0x16, 0x75,
-    0x10, 0x66, 0x49, 0xD3, 0x91, 0x51, 0x09, 0x03,
-    0x18, 0x23, 0x1E, 0x4D, 0xED, 0x51, 0x22, 0x5D,
-    0x9A, 0x6F, 0xA6, 0xC4, 0x24, 0x69, 0x5D, 0xE2
-  },
-  {
-    0x07, 0x33, 0x6C, 0x42, 0xBD, 0x51, 0x49, 0x0E,
-    0xF8, 0x4D, 0xFB, 0xDF, 0xAB, 0x74, 0x66, 0xF6,
-    0xB6, 0x39, 0x99, 0xA5, 0xC0, 0x88, 0x72, 0xDF,
-    0xED, 0xA0, 0x20, 0x6F, 0xDA, 0x80, 0xB9, 0xA6,
-    0x2D, 0xE7, 0x28, 0xE3, 0xE3, 0xC3, 0xFD, 0x6B,
-    0x7D, 0x21, 0xA4, 0x38, 0xAA, 0xD1, 0xB8, 0xDD,
-    0x22, 0x38, 0x63, 0xC0, 0xD2, 0x6A, 0xCA, 0x27,
-    0x79, 0x01, 0x74, 0xD9, 0xD4, 0x42, 0xA6, 0x4C
-  },
-  {
-    0x79, 0x26, 0x70, 0x88, 0x59, 0xE6, 0xE2, 0xAB,
-    0x68, 0xF6, 0x04, 0xDA, 0x69, 0xA9, 0xFB, 0x50,
-    0x87, 0xBB, 0x33, 0xF4, 0xE8, 0xD8, 0x95, 0x73,
-    0x0E, 0x30, 0x1A, 0xB2, 0xD7, 0xDF, 0x74, 0x8B,
-    0x67, 0xDF, 0x0B, 0x6B, 0x86, 0x22, 0xE5, 0x2D,
-    0xD5, 0x7D, 0x8D, 0x3A, 0xD8, 0x7D, 0x58, 0x20,
-    0xD4, 0xEC, 0xFD, 0x24, 0x17, 0x8B, 0x2D, 0x2B,
-    0x78, 0xD6, 0x4F, 0x4F, 0xBD, 0x38, 0x75, 0x82
-  },
-  {
-    0x92, 0x80, 0xF4, 0xD1, 0x15, 0x70, 0x32, 0xAB,
-    0x31, 0x5C, 0x10, 0x0D, 0x63, 0x62, 0x83, 0xFB,
-    0xF4, 0xFB, 0xA2, 0xFB, 0xAD, 0x0F, 0x8B, 0xC0,
-    0x20, 0x72, 0x1D, 0x76, 0xBC, 0x1C, 0x89, 0x73,
-    0xCE, 0xD2, 0x88, 0x71, 0xCC, 0x90, 0x7D, 0xAB,
-    0x60, 0xE5, 0x97, 0x56, 0x98, 0x7B, 0x0E, 0x0F,
-    0x86, 0x7F, 0xA2, 0xFE, 0x9D, 0x90, 0x41, 0xF2,
-    0xC9, 0x61, 0x80, 0x74, 0xE4, 0x4F, 0xE5, 0xE9
-  },
-  {
-    0x55, 0x30, 0xC2, 0xD5, 0x9F, 0x14, 0x48, 0x72,
-    0xE9, 0x87, 0xE4, 0xE2, 0x58, 0xA7, 0xD8, 0xC3,
-    0x8C, 0xE8, 0x44, 0xE2, 0xCC, 0x2E, 0xED, 0x94,
-    0x0F, 0xFC, 0x68, 0x3B, 0x49, 0x88, 0x15, 0xE5,
-    0x3A, 0xDB, 0x1F, 0xAA, 0xF5, 0x68, 0x94, 0x61,
-    0x22, 0x80, 0x5A, 0xC3, 0xB8, 0xE2, 0xFE, 0xD4,
-    0x35, 0xFE, 0xD6, 0x16, 0x2E, 0x76, 0xF5, 0x64,
-    0xE5, 0x86, 0xBA, 0x46, 0x44, 0x24, 0xE8, 0x85
-  },
-  {
-    0xDA, 0x85, 0x0A, 0x2F, 0x54, 0xE9, 0x44, 0x89,
-    0x17, 0xD0, 0xDC, 0xAA, 0x63, 0x93, 0x7B, 0x95,
-    0xA4, 0xDA, 0x1E, 0xAC, 0x8A, 0xF4, 0xDD, 0xF2,
-    0x11, 0x3E, 0x5C, 0x8B, 0x0D, 0x4D, 0xB2, 0x66,
-    0x9A, 0xF3, 0xC2, 0xAC, 0xB0, 0x80, 0x3D, 0x05,
-    0x32, 0x3F, 0x3E, 0xC5, 0x5A, 0xBD, 0x33, 0xBD,
-    0xF9, 0xB2, 0xBE, 0x89, 0x0E, 0xE7, 0x9E, 0x7F,
-    0x3F, 0xCE, 0x4E, 0x19, 0x86, 0x96, 0xA7, 0xA3
-  },
-  {
-    0xF1, 0x60, 0x95, 0xDD, 0x9F, 0x1E, 0xEB, 0x77,
-    0xD5, 0xB9, 0x2F, 0x4B, 0x1F, 0xAC, 0x3A, 0x2C,
-    0x5D, 0xA6, 0xAE, 0x5D, 0x0A, 0xB3, 0xF2, 0x54,
-    0xE2, 0xA7, 0xFE, 0x52, 0x67, 0x24, 0x11, 0xD0,
-    0x1C, 0xFA, 0x6A, 0xC0, 0x5B, 0xF3, 0x9E, 0xF6,
-    0x5F, 0x4B, 0x22, 0x26, 0x4B, 0x41, 0xC3, 0xF3,
-    0x63, 0x56, 0x3A, 0xBF, 0x0E, 0x92, 0x42, 0x90,
-    0xC1, 0xC6, 0x80, 0xB1, 0x8A, 0xA6, 0x5B, 0x44
-  },
-  {
-    0x76, 0xD0, 0x0A, 0x09, 0xC5, 0xBD, 0xD3, 0x9E,
-    0xD3, 0x28, 0x71, 0x72, 0x2C, 0xFA, 0x00, 0x47,
-    0x67, 0x4B, 0xEC, 0x8D, 0x35, 0x17, 0x5A, 0xF9,
-    0x0D, 0x7A, 0xE9, 0x10, 0x74, 0x40, 0xA2, 0xA0,
-    0x63, 0x88, 0x56, 0xD8, 0x38, 0x4C, 0x81, 0x7D,
-    0x77, 0x2A, 0x4A, 0x59, 0x7A, 0x89, 0x55, 0x49,
-    0xC8, 0x48, 0x66, 0x37, 0x56, 0x31, 0xCB, 0xA0,
-    0x42, 0xF0, 0xEF, 0x6F, 0xFE, 0xB8, 0x9D, 0x44
-  },
-  {
-    0xA6, 0x51, 0x13, 0x7B, 0x2C, 0x47, 0xFB, 0x79,
-    0x51, 0xE7, 0xBD, 0xA7, 0x15, 0x43, 0xA6, 0xEB,
-    0xC6, 0x24, 0x2A, 0xCA, 0xB4, 0x34, 0x7D, 0x38,
-    0x8B, 0xE8, 0x35, 0x0F, 0x0C, 0x3F, 0xA3, 0xDF,
-    0x8D, 0x95, 0x2C, 0x7C, 0x8A, 0x3D, 0xAF, 0x01,
-    0xE0, 0x6C, 0x1D, 0xA6, 0x94, 0x96, 0xBB, 0xA8,
-    0xDE, 0x62, 0xD8, 0x6B, 0x50, 0x93, 0x25, 0x6F,
-    0x77, 0xA1, 0x87, 0xB5, 0x3D, 0xB0, 0x39, 0x88
-  },
-  {
-    0xF3, 0x2F, 0x15, 0x0C, 0x2D, 0x67, 0xC0, 0xC4,
-    0x37, 0x40, 0x1B, 0x70, 0xF6, 0x0B, 0x38, 0xF0,
-    0xA3, 0xA4, 0x70, 0x59, 0x03, 0x3E, 0x75, 0x05,
-    0xE6, 0x9A, 0x1D, 0x30, 0x12, 0x96, 0x03, 0x0B,
-    0xC9, 0xB2, 0x95, 0x19, 0xC7, 0xF8, 0xB7, 0xD5,
-    0x9A, 0x71, 0xFA, 0xB9, 0x05, 0x57, 0xDC, 0x3D,
-    0xC8, 0x23, 0xFA, 0xC9, 0x5B, 0x9E, 0x85, 0xE6,
-    0x52, 0x52, 0x8C, 0xBF, 0xB0, 0x1B, 0x11, 0x78
-  },
-  {
-    0x27, 0x02, 0x56, 0x61, 0x36, 0xC4, 0x92, 0xF4,
-    0x10, 0x89, 0xB0, 0x60, 0x10, 0x84, 0x60, 0xFA,
-    0x30, 0x22, 0xC9, 0xC2, 0x5D, 0x34, 0x3B, 0xCB,
-    0xD8, 0xAF, 0x2A, 0xF1, 0x9C, 0x17, 0xEF, 0x4C,
-    0xA9, 0xF2, 0x22, 0x4F, 0xE7, 0xC4, 0x70, 0x0A,
-    0x10, 0x19, 0x8E, 0xE5, 0x24, 0x8F, 0x30, 0x0B,
-    0x54, 0x8E, 0xBF, 0x5C, 0x8E, 0x71, 0x16, 0x32,
-    0x0C, 0xC8, 0x93, 0xFF, 0x7E, 0x23, 0x1F, 0xFB
-  },
-  {
-    0xFF, 0xE6, 0x87, 0x9F, 0x46, 0xB6, 0x29, 0x2B,
-    0x21, 0x96, 0x97, 0x2E, 0x3F, 0xDF, 0x4F, 0xE9,
-    0xEA, 0x4A, 0x81, 0x6D, 0x18, 0x07, 0xA3, 0x1C,
-    0xAE, 0xAD, 0x6A, 0xAC, 0x5F, 0x06, 0x3C, 0x8F,
-    0xE8, 0x77, 0x79, 0x75, 0x59, 0xA7, 0x59, 0xA0,
-    0x0F, 0x8B, 0xA8, 0xF6, 0x68, 0xD8, 0x96, 0x8F,
-    0xB3, 0x1D, 0x8A, 0x3B, 0x84, 0x57, 0x35, 0x90,
-    0x2C, 0x5E, 0x42, 0xE2, 0x89, 0xEE, 0x0B, 0x62
-  },
-  {
-    0x14, 0x48, 0x84, 0x28, 0x68, 0x22, 0xC2, 0x51,
-    0x2D, 0x61, 0xB0, 0x46, 0xE6, 0x74, 0xD8, 0x6B,
-    0x26, 0x4E, 0x9C, 0xC6, 0x89, 0x3E, 0xFF, 0x36,
-    0x73, 0x11, 0x24, 0xF5, 0x9D, 0x1A, 0x82, 0x00,
-    0x1E, 0x63, 0xF3, 0xE8, 0x05, 0x1C, 0xFE, 0x52,
-    0xE7, 0x59, 0x7E, 0x28, 0x73, 0x8E, 0x3C, 0x3A,
-    0x70, 0xF1, 0xBE, 0xD9, 0x68, 0x0E, 0x2C, 0x0E,
-    0xF3, 0x72, 0x8B, 0x10, 0xA5, 0x6E, 0xD9, 0x87
-  },
-  {
-    0x17, 0xC3, 0xF1, 0x46, 0xEE, 0x8D, 0xEC, 0x3B,
-    0xAF, 0xCB, 0x51, 0xC0, 0xDA, 0x37, 0xF1, 0x78,
-    0x71, 0xF2, 0x34, 0xC4, 0xA0, 0xFB, 0x7F, 0xA6,
-    0xD0, 0x70, 0x7A, 0x54, 0x3E, 0x3C, 0xBF, 0x3A,
-    0xDB, 0x81, 0xE3, 0x0C, 0x1E, 0x0A, 0xE9, 0xE1,
-    0xAC, 0xE7, 0x22, 0x3B, 0xDA, 0x99, 0xBD, 0x59,
-    0x19, 0xA3, 0xCF, 0xCC, 0x92, 0xC6, 0xA7, 0x55,
-    0xE4, 0x56, 0xF0, 0x93, 0x82, 0x3B, 0xD3, 0x3E
-  },
-  {
-    0x1B, 0x83, 0x7A, 0xF2, 0x33, 0xA8, 0xA6, 0x8B,
-    0xE7, 0x09, 0x52, 0xF7, 0x83, 0xC4, 0x96, 0x1A,
-    0x81, 0x52, 0xD1, 0xE0, 0xB0, 0xFA, 0x32, 0x5F,
-    0xF0, 0x86, 0xEA, 0x5B, 0x5F, 0x13, 0x12, 0xB8,
-    0x9C, 0x42, 0xE0, 0x1B, 0x8C, 0x3A, 0x47, 0x7C,
-    0xB5, 0x40, 0xC0, 0x6B, 0x2F, 0x37, 0xEE, 0x0E,
-    0x39, 0x24, 0xD7, 0x45, 0xB4, 0xFF, 0x5C, 0x6A,
-    0xF7, 0xD6, 0x1E, 0x0E, 0x37, 0xAC, 0x19, 0x31
-  },
-  {
-    0x78, 0x97, 0x88, 0x0C, 0x1E, 0xB0, 0x0F, 0xD2,
-    0x56, 0x7A, 0xE8, 0xA5, 0x9E, 0x64, 0x82, 0xAF,
-    0xE1, 0x73, 0x49, 0xCF, 0x93, 0x92, 0x4A, 0x91,
-    0x5F, 0x8C, 0x59, 0x26, 0x93, 0xD4, 0x52, 0x07,
-    0x55, 0x19, 0x68, 0x9D, 0xFC, 0xD2, 0x93, 0xE3,
-    0x76, 0x89, 0x7B, 0x3B, 0x0E, 0x03, 0x6F, 0x11,
-    0x4F, 0xE8, 0x1E, 0xBC, 0xB3, 0x15, 0x36, 0x71,
-    0xBD, 0x23, 0xBC, 0x2B, 0xED, 0x46, 0xF9, 0xC2
-  },
-  {
-    0xCA, 0x7B, 0x6C, 0x77, 0x5D, 0x20, 0x1E, 0x5B,
-    0x5A, 0x77, 0x22, 0x61, 0xDE, 0x52, 0x8E, 0x47,
-    0x5F, 0x4B, 0xDE, 0x51, 0x76, 0x60, 0x52, 0x9F,
-    0x41, 0xBE, 0xEB, 0x15, 0x78, 0xB2, 0x4B, 0xCB,
-    0x94, 0xB9, 0x41, 0x0F, 0x9B, 0xF3, 0x36, 0xC1,
-    0x09, 0xF9, 0xD4, 0x70, 0x93, 0xA1, 0x0B, 0xA6,
-    0xDE, 0xBE, 0x50, 0x43, 0x80, 0xD9, 0xD1, 0x50,
-    0x73, 0xBD, 0xD1, 0x11, 0xC8, 0xD1, 0x29, 0xFA
-  },
-  {
-    0x57, 0x18, 0xE0, 0xD4, 0x5D, 0xEB, 0xC3, 0x00,
-    0x2D, 0x52, 0xB2, 0x2C, 0x52, 0x73, 0x29, 0xAE,
-    0x5E, 0xBF, 0x27, 0xE8, 0xFA, 0x9C, 0x8F, 0xEA,
-    0xB4, 0x6C, 0x40, 0xBC, 0x64, 0x22, 0xCA, 0x03,
-    0x35, 0x30, 0x4C, 0xF9, 0xE7, 0xF1, 0x41, 0xDE,
-    0x7F, 0xA6, 0xAD, 0xB6, 0x78, 0x9B, 0xDB, 0xF3,
-    0x8D, 0x14, 0xDA, 0xBA, 0x3E, 0x62, 0x97, 0xD2,
-    0x5B, 0xF1, 0x7D, 0xE1, 0x70, 0xD6, 0xE3, 0xC8
-  },
-  {
-    0x48, 0xD0, 0xED, 0x24, 0x9F, 0x90, 0x28, 0x41,
-    0x99, 0x7C, 0x25, 0x5D, 0xAF, 0x99, 0x08, 0x9C,
-    0x9A, 0x31, 0x24, 0x69, 0x8B, 0x16, 0x4A, 0x30,
-    0x28, 0x33, 0x0F, 0xDD, 0x4C, 0xEE, 0x41, 0xE1,
-    0x68, 0x3F, 0xA4, 0xD9, 0xDC, 0x66, 0xB2, 0xA7,
-    0x9C, 0x8A, 0xA4, 0xC8, 0x28, 0x4E, 0x27, 0xBE,
-    0xE2, 0xA4, 0x28, 0xA6, 0x71, 0x9D, 0x6E, 0xC6,
-    0x55, 0xED, 0x76, 0x9D, 0xCB, 0x62, 0x4E, 0x24
-  },
-  {
-    0x79, 0x4E, 0x0B, 0x64, 0xAC, 0xE1, 0xFE, 0x5A,
-    0xE3, 0x79, 0x93, 0x70, 0x68, 0xD8, 0x2D, 0xF0,
-    0x48, 0x68, 0x61, 0x6C, 0xAE, 0x0C, 0x17, 0xD3,
-    0x05, 0x72, 0xC2, 0x02, 0x4E, 0x77, 0x48, 0x94,
-    0xE0, 0x66, 0x8C, 0x47, 0x2D, 0x62, 0x3C, 0x90,
-    0x3C, 0xC5, 0x88, 0x5F, 0x17, 0x84, 0x94, 0x51,
-    0x10, 0x32, 0x9E, 0xB4, 0x98, 0xA8, 0x95, 0xA9,
-    0xE5, 0x9A, 0x75, 0xE5, 0x27, 0x15, 0x8A, 0x5C
-  },
-  {
-    0x21, 0x79, 0xAA, 0x82, 0x0E, 0x03, 0xFA, 0x33,
-    0xD9, 0xBD, 0xE5, 0x56, 0x8C, 0x26, 0x2E, 0x2D,
-    0x34, 0x17, 0xA4, 0x02, 0xE0, 0x7A, 0x59, 0x1F,
-    0x9D, 0x55, 0x70, 0x68, 0x2D, 0xB5, 0xF9, 0xBB,
-    0xA4, 0xBB, 0x9D, 0x5A, 0x82, 0xEE, 0x5E, 0xFD,
-    0xB4, 0xF6, 0x5B, 0xBB, 0xFE, 0xEE, 0x2F, 0x4A,
-    0xB9, 0xE4, 0x6C, 0xF2, 0xCE, 0x7E, 0x3B, 0x05,
-    0x43, 0x27, 0xA7, 0x18, 0xD3, 0xF1, 0x08, 0x06
-  },
-  {
-    0xB0, 0xA4, 0x8C, 0x6A, 0xDA, 0x54, 0x87, 0x25,
-    0x79, 0x9B, 0x59, 0x86, 0xBA, 0xB4, 0x32, 0x69,
-    0x79, 0x60, 0x92, 0x24, 0xD8, 0x97, 0x18, 0x4B,
-    0x89, 0x97, 0x10, 0x4E, 0x0C, 0x6A, 0x24, 0xB3,
-    0xAB, 0xE5, 0x62, 0x16, 0x54, 0x22, 0xA4, 0x5D,
-    0x8A, 0xC8, 0x19, 0xB9, 0x9D, 0x37, 0x56, 0xEB,
-    0xBB, 0x64, 0xF8, 0x43, 0xE3, 0xE0, 0x93, 0x4D,
-    0xEC, 0x48, 0x7A, 0xED, 0x12, 0x13, 0x72, 0x79
-  },
-  {
-    0x84, 0x8D, 0x7F, 0x2E, 0xAD, 0x41, 0x29, 0x1D,
-    0x05, 0x38, 0x68, 0x0C, 0x64, 0x9D, 0x07, 0x89,
-    0x7E, 0x45, 0xC7, 0x0A, 0x0A, 0xA4, 0xF9, 0x35,
-    0x3F, 0x82, 0xC3, 0xF6, 0xFB, 0xB8, 0xE8, 0x48,
-    0x9C, 0x75, 0x3E, 0x90, 0xDB, 0xE8, 0x89, 0x00,
-    0x41, 0xA1, 0xAE, 0xEF, 0x84, 0xCD, 0x31, 0x36,
-    0x43, 0x4F, 0x53, 0x0E, 0x9D, 0xD9, 0xC2, 0x3F,
-    0xA5, 0x4F, 0xE1, 0x24, 0xEA, 0xFB, 0x72, 0xAD
-  },
-  {
-    0x0E, 0xD1, 0x46, 0x26, 0xEE, 0x6D, 0x0C, 0x8E,
-    0xD3, 0xF0, 0xC2, 0x00, 0xC1, 0x29, 0x85, 0x0F,
-    0xFF, 0x76, 0x31, 0x8F, 0xFF, 0xA1, 0xDD, 0xD7,
-    0xDD, 0x56, 0x3A, 0x01, 0xB7, 0x77, 0x97, 0x06,
-    0x86, 0x2B, 0x23, 0x99, 0x59, 0xB6, 0x15, 0xAE,
-    0x2E, 0xBE, 0x27, 0xC4, 0x50, 0x37, 0xE6, 0xFF,
-    0xAF, 0x99, 0x14, 0xDA, 0x8F, 0xF2, 0x77, 0x2B,
-    0xA5, 0xEE, 0x08, 0x11, 0xCD, 0x9E, 0xD5, 0x32
-  },
-  {
-    0x52, 0x03, 0xC0, 0x76, 0x38, 0xC4, 0xB6, 0x5F,
-    0x78, 0x43, 0x1E, 0x8B, 0x02, 0xE2, 0x0F, 0x6D,
-    0x68, 0x3F, 0x19, 0xFA, 0x8F, 0x83, 0xB5, 0x13,
-    0x4C, 0xD0, 0xF4, 0xE4, 0x68, 0xC9, 0x7E, 0xAC,
-    0xB5, 0x26, 0x7C, 0x7D, 0x3E, 0xAB, 0x58, 0x3C,
-    0xCA, 0xAC, 0xD0, 0xDB, 0xA4, 0xD5, 0x8A, 0xCE,
-    0x52, 0x19, 0x3A, 0x51, 0x78, 0xA7, 0xB1, 0x2D,
-    0x27, 0x95, 0xF5, 0xFD, 0xE8, 0xA3, 0x7B, 0xB9
-  },
-  {
-    0x48, 0xBE, 0x43, 0xD5, 0xE0, 0x04, 0x36, 0x88,
-    0xDF, 0x35, 0x32, 0xF7, 0x12, 0x1A, 0xFF, 0xFA,
-    0x16, 0x7D, 0xAB, 0xE4, 0xA4, 0x84, 0xFB, 0x75,
-    0xA0, 0x3A, 0xF3, 0x04, 0xA5, 0xC6, 0xF8, 0x25,
-    0xF3, 0x6C, 0xEC, 0xCB, 0xBB, 0xC0, 0x75, 0xEE,
-    0xF3, 0x20, 0xC4, 0xCD, 0x8D, 0x7E, 0xF8, 0xCB,
-    0x49, 0xE6, 0xDD, 0x59, 0x73, 0x37, 0x9E, 0xEC,
-    0x4C, 0x23, 0x3C, 0x45, 0x43, 0xD1, 0x32, 0xCE
-  },
-  {
-    0xB5, 0x46, 0x4E, 0x6A, 0xBA, 0xF5, 0xD3, 0xD4,
-    0x08, 0x3D, 0x1D, 0x7D, 0x2A, 0x8B, 0x0B, 0xAB,
-    0x78, 0xB6, 0x17, 0x09, 0x50, 0x0B, 0xBF, 0x77,
-    0x82, 0x3F, 0x60, 0x2D, 0x57, 0xD5, 0x13, 0xCA,
-    0x9E, 0x9F, 0xFF, 0x65, 0xEF, 0xAA, 0x89, 0x9C,
-    0xFE, 0x7B, 0xF8, 0x8A, 0x01, 0x88, 0x82, 0x9C,
-    0x24, 0xE4, 0x98, 0xAD, 0x00, 0x23, 0x5A, 0xBE,
-    0x8E, 0xEF, 0xA7, 0x19, 0xFA, 0x6A, 0xE6, 0xF6
-  },
-  {
-    0xAF, 0xE5, 0xE5, 0xE8, 0x3F, 0x19, 0xAD, 0xAD,
-    0x9E, 0x95, 0x90, 0x3E, 0xA9, 0xB2, 0x98, 0x10,
-    0x7D, 0x37, 0xDD, 0x38, 0x63, 0x2C, 0x95, 0x90,
-    0xBB, 0xFF, 0xC6, 0x24, 0xD4, 0xDE, 0x95, 0x8C,
-    0xB6, 0xB6, 0x1A, 0xF0, 0x80, 0xF0, 0x37, 0xAD,
-    0x17, 0xD0, 0x35, 0xB6, 0xBF, 0x58, 0xF7, 0x80,
-    0xFA, 0xDF, 0x70, 0xF3, 0xC9, 0x59, 0x66, 0x8A,
-    0x1B, 0x47, 0x21, 0x98, 0xA5, 0x9A, 0x8A, 0x00
-  },
-  {
-    0xEF, 0xA2, 0xC7, 0xC8, 0x02, 0xE2, 0x10, 0xD2,
-    0xD8, 0x0F, 0xB3, 0x50, 0xB3, 0xC2, 0xCB, 0x31,
-    0x56, 0x13, 0x18, 0x11, 0xE7, 0x18, 0xEE, 0xE5,
-    0xC9, 0xC6, 0x64, 0x0F, 0x87, 0x68, 0x2A, 0x55,
-    0x81, 0x2B, 0x10, 0xF4, 0x03, 0x10, 0xBA, 0xA7,
-    0xB8, 0x2B, 0x27, 0x3E, 0xF3, 0xAC, 0xC5, 0x5F,
-    0xED, 0xE0, 0xB5, 0xF1, 0x94, 0x9D, 0xE4, 0x29,
-    0x3D, 0x91, 0xB5, 0x89, 0xA2, 0x17, 0x5F, 0xF7
-  },
-  {
-    0xD6, 0xC6, 0x2A, 0x61, 0x82, 0x71, 0xF3, 0xBC,
-    0xBE, 0x00, 0x79, 0x24, 0xA0, 0xC9, 0x81, 0x2F,
-    0x83, 0x17, 0x44, 0x5F, 0xB6, 0xFB, 0x19, 0xEB,
-    0x58, 0x9A, 0x62, 0x9F, 0x51, 0x2F, 0xB3, 0x8A,
-    0x0B, 0x4E, 0x24, 0x7D, 0xEA, 0x88, 0xC5, 0x6A,
-    0x1B, 0xAF, 0x17, 0x88, 0x33, 0x65, 0xB4, 0x36,
-    0xF2, 0x84, 0x46, 0xFF, 0x66, 0xEA, 0x43, 0x18,
-    0x0B, 0xD0, 0x1E, 0xB5, 0xA6, 0x50, 0x9B, 0xD5
-  },
-  {
-    0x0B, 0x41, 0x16, 0x6B, 0xE6, 0x2F, 0x65, 0xE1,
-    0x93, 0xB3, 0xB8, 0x65, 0xE6, 0xC4, 0x7A, 0xAD,
-    0x26, 0x0A, 0xF5, 0xFC, 0xEE, 0xC9, 0xAB, 0x44,
-    0xAB, 0xAA, 0x46, 0x0A, 0x0C, 0x02, 0x46, 0xB6,
-    0xC6, 0x9B, 0x67, 0xD7, 0x1D, 0x3A, 0xDF, 0xEC,
-    0x60, 0xDC, 0x8E, 0x77, 0x37, 0x2F, 0x09, 0x49,
-    0x52, 0x34, 0x4F, 0xE1, 0x0C, 0x0D, 0x59, 0xEF,
-    0xEC, 0x0E, 0x11, 0xC4, 0xA5, 0x16, 0x93, 0x6D
-  },
-  {
-    0x79, 0xD5, 0xF9, 0xFF, 0xC0, 0x5E, 0xCF, 0x33,
-    0x7D, 0xE9, 0xF1, 0xE0, 0xF1, 0xD8, 0x9B, 0x30,
-    0xAC, 0xFE, 0xBB, 0xB8, 0x8A, 0x69, 0x35, 0x86,
-    0x78, 0x18, 0xCD, 0x8D, 0x45, 0xDA, 0x3D, 0x25,
-    0x18, 0xDE, 0x61, 0xA7, 0xFE, 0x28, 0x75, 0x1B,
-    0x61, 0x8F, 0x7A, 0x87, 0x5E, 0x11, 0x89, 0x8F,
-    0xFF, 0x74, 0x15, 0x7A, 0xB9, 0x06, 0x81, 0xBD,
-    0x53, 0xFA, 0x69, 0x62, 0x67, 0x1E, 0xD9, 0x9D
-  },
-  {
-    0xBE, 0xA9, 0x83, 0xD7, 0x6F, 0x24, 0xB1, 0xEE,
-    0xDE, 0x1D, 0x06, 0x71, 0x48, 0x05, 0x76, 0x8F,
-    0xAA, 0xAD, 0x47, 0x08, 0xC9, 0xA4, 0xFF, 0x9C,
-    0xD2, 0x42, 0x2F, 0x70, 0x6B, 0x6F, 0x0C, 0x30,
-    0x6D, 0x8B, 0x67, 0xF3, 0x40, 0x89, 0xC6, 0x5E,
-    0xD3, 0x88, 0x0C, 0x75, 0xF6, 0x7B, 0xBC, 0x4D,
-    0x89, 0xAD, 0x87, 0x12, 0x0A, 0x77, 0xD0, 0xFF,
-    0xE4, 0x36, 0xFB, 0x7B, 0x58, 0xB2, 0xCA, 0x41
-  },
-  {
-    0x46, 0x6F, 0xD9, 0x15, 0xEF, 0xD9, 0x50, 0xBC,
-    0x96, 0x65, 0x78, 0xCD, 0x92, 0xC6, 0x85, 0x92,
-    0x9D, 0x7B, 0x51, 0xA6, 0x3D, 0xB1, 0x42, 0xC7,
-    0xB9, 0xA9, 0x3D, 0x16, 0x52, 0x04, 0x95, 0x31,
-    0x9B, 0x87, 0xF6, 0x58, 0xE6, 0xAF, 0xDA, 0x1B,
-    0x42, 0x77, 0x3E, 0x2D, 0x49, 0xDA, 0x81, 0x45,
-    0x94, 0xA5, 0x54, 0x90, 0x89, 0xEF, 0xB1, 0xF3,
-    0xAB, 0x5F, 0x15, 0x90, 0xCA, 0x0A, 0x02, 0xAF
-  },
-  {
-    0xF6, 0x46, 0x11, 0x13, 0x7A, 0xD2, 0x95, 0x46,
-    0x70, 0xEA, 0xEC, 0xD6, 0x26, 0xD2, 0x12, 0xCF,
-    0xC5, 0xB9, 0xF6, 0xBB, 0x41, 0xAA, 0xEB, 0xB1,
-    0xD7, 0x1E, 0x89, 0x79, 0x2E, 0xB1, 0x31, 0x7A,
-    0xED, 0xC6, 0x38, 0x13, 0xFE, 0x63, 0xDE, 0x40,
-    0x17, 0x98, 0xDF, 0x75, 0x6C, 0xA1, 0xF2, 0x20,
-    0x35, 0xA0, 0xFA, 0xBD, 0x37, 0xFB, 0x11, 0x03,
-    0x43, 0x7F, 0x89, 0x1E, 0xAD, 0x5E, 0x64, 0x29
-  },
-  {
-    0x32, 0xE1, 0xF9, 0x38, 0xA2, 0x7F, 0xAA, 0xD8,
-    0xAC, 0x4A, 0x13, 0xFD, 0x4F, 0x6A, 0x8B, 0xF3,
-    0xDA, 0xBE, 0x4B, 0xC7, 0x2A, 0xF1, 0x1C, 0x8F,
-    0x0E, 0x1A, 0x06, 0x56, 0x7E, 0xD7, 0x04, 0xB8,
-    0xE7, 0x8E, 0x11, 0x40, 0xA0, 0xC7, 0x72, 0x4E,
-    0x3E, 0xFB, 0x70, 0xD2, 0x38, 0x07, 0xCF, 0x38,
-    0xE6, 0x27, 0xE3, 0x26, 0xAF, 0xC1, 0x64, 0xCD,
-    0xED, 0x52, 0xB4, 0x41, 0x39, 0xFF, 0xB3, 0xF3
-  },
-  {
-    0x48, 0x33, 0xAC, 0x92, 0xE3, 0x02, 0xAC, 0x2B,
-    0x67, 0xB0, 0x2B, 0x88, 0x27, 0x14, 0x3B, 0xAD,
-    0xA1, 0x5C, 0xED, 0x22, 0x0E, 0x1D, 0x1F, 0x5B,
-    0x71, 0x12, 0x0C, 0x51, 0xEE, 0x54, 0xC1, 0x9D,
-    0x30, 0x1F, 0x29, 0x60, 0xBD, 0xB5, 0xA2, 0xCE,
-    0x27, 0xD4, 0x41, 0xD1, 0x4A, 0xF0, 0x80, 0xCB,
-    0x01, 0x0A, 0x8A, 0x23, 0xEE, 0xFF, 0x58, 0x11,
-    0xDF, 0xA4, 0x4D, 0x1D, 0x7B, 0x35, 0x8B, 0x48
-  },
-  {
-    0x9A, 0x03, 0x88, 0xCE, 0xE1, 0xAD, 0x01, 0x46,
-    0x17, 0x7C, 0x48, 0xB5, 0xA0, 0x8A, 0x2D, 0xB3,
-    0xC4, 0x89, 0xE8, 0x4C, 0xE2, 0xAB, 0xA8, 0xC6,
-    0x45, 0x11, 0x2A, 0x02, 0x1E, 0x41, 0x1C, 0xF8,
-    0x29, 0x12, 0x7F, 0xA2, 0xF1, 0xD1, 0xAE, 0x1B,
-    0xAF, 0x3A, 0x33, 0xEA, 0x53, 0x09, 0x84, 0x77,
-    0xA7, 0xD1, 0x2B, 0xA7, 0x48, 0xD2, 0xAF, 0x24,
-    0xD1, 0x66, 0x02, 0xE9, 0x19, 0x07, 0x76, 0x23
-  },
-  {
-    0xE3, 0xDF, 0x00, 0x74, 0xA9, 0x37, 0x35, 0x13,
-    0x0D, 0x99, 0x22, 0xD2, 0xBE, 0x91, 0x6F, 0x35,
-    0x34, 0x3D, 0x98, 0x8C, 0xE5, 0x9D, 0x76, 0x97,
-    0x15, 0xA9, 0x83, 0xB4, 0xBA, 0x80, 0x7C, 0xE1,
-    0xEE, 0x70, 0xA3, 0x13, 0xE5, 0x92, 0x31, 0x58,
-    0x4F, 0x55, 0x6E, 0xBB, 0xA1, 0xB9, 0x0B, 0x1B,
-    0xB6, 0xA6, 0xC5, 0x81, 0xA4, 0xB4, 0x7C, 0x3F,
-    0xF5, 0x21, 0x89, 0x65, 0x2A, 0xAB, 0x36, 0xF5
-  },
-  {
-    0x91, 0x91, 0xCF, 0x46, 0x1B, 0x69, 0x59, 0xBE,
-    0xC9, 0x3E, 0xAE, 0x7F, 0xB1, 0xC6, 0xE3, 0x70,
-    0x73, 0xD1, 0xA6, 0x15, 0x27, 0xAD, 0x75, 0xD1,
-    0x0B, 0x7F, 0x89, 0x49, 0xD9, 0xB8, 0xAF, 0x70,
-    0xA2, 0x3A, 0xD1, 0x31, 0x2E, 0xD5, 0x1F, 0x70,
-    0xF0, 0xE9, 0xDF, 0x60, 0x1D, 0xDA, 0xE2, 0x38,
-    0x90, 0x6C, 0x0F, 0xE3, 0xF7, 0x66, 0xB1, 0x4F,
-    0x11, 0x3B, 0x26, 0xBC, 0x85, 0x42, 0xD1, 0xD2
-  },
-  {
-    0x2A, 0x8B, 0xAD, 0xE2, 0x72, 0xEE, 0x7A, 0xC6,
-    0x43, 0xC5, 0xE3, 0x71, 0x47, 0xFA, 0xAC, 0x92,
-    0xC3, 0x97, 0x0B, 0xD3, 0x86, 0x2F, 0x53, 0x1E,
-    0x5D, 0xCE, 0xA5, 0xCE, 0xAC, 0xD1, 0x83, 0x74,
-    0x53, 0xAA, 0x49, 0x8D, 0x78, 0x5B, 0x4D, 0x1F,
-    0x89, 0xE1, 0xB2, 0xA7, 0x39, 0xCA, 0x4A, 0x38,
-    0x49, 0x87, 0x30, 0x27, 0x46, 0xB4, 0xF1, 0x13,
-    0x42, 0x43, 0x02, 0xC4, 0xA1, 0xE0, 0xF9, 0xDF
-  },
-  {
-    0x32, 0x3E, 0x67, 0x93, 0xC7, 0xDD, 0x9B, 0x4D,
-    0x7B, 0xB7, 0xFB, 0xF2, 0x15, 0x31, 0xD3, 0x7F,
-    0x72, 0x64, 0x53, 0x2C, 0x58, 0xF1, 0x22, 0x55,
-    0x48, 0xD0, 0x6E, 0x69, 0x40, 0xC6, 0x3E, 0x91,
-    0x27, 0x09, 0x90, 0xE7, 0xF5, 0x64, 0x32, 0x03,
-    0xC9, 0x87, 0x64, 0x7E, 0x5C, 0xF6, 0x61, 0x03,
-    0xE7, 0x9B, 0x71, 0x4C, 0x58, 0x1B, 0xD8, 0x77,
-    0x2E, 0x19, 0xD0, 0xF0, 0x05, 0xDC, 0x86, 0x33
-  },
-  {
-    0xF9, 0x22, 0x07, 0x6D, 0x29, 0x5D, 0x23, 0xE2,
-    0x98, 0x58, 0x30, 0xAA, 0xD2, 0xF2, 0x3F, 0x65,
-    0x2F, 0x7F, 0x4D, 0xB4, 0x2C, 0x11, 0x9E, 0xD2,
-    0x20, 0xA5, 0x45, 0x14, 0x88, 0xA4, 0x53, 0xF5,
-    0x9F, 0xA8, 0xA2, 0xDE, 0x23, 0x03, 0x00, 0x0D,
-    0x6B, 0xFD, 0x8C, 0x48, 0x23, 0xA8, 0x5F, 0xAD,
-    0xB4, 0xFB, 0x8E, 0x7E, 0xAC, 0x12, 0x2B, 0xF0,
-    0x12, 0x47, 0xD7, 0x6F, 0x65, 0x24, 0x7D, 0x45
-  },
-  {
-    0xDC, 0x40, 0x00, 0x95, 0x60, 0x95, 0x92, 0x91,
-    0x55, 0x8E, 0xBE, 0x07, 0x20, 0x64, 0xCE, 0x67,
-    0x12, 0xC9, 0x21, 0xB5, 0x40, 0x9B, 0x44, 0xE0,
-    0x4F, 0x9A, 0x56, 0x5E, 0xEA, 0xDD, 0x39, 0xA7,
-    0x71, 0x6E, 0x21, 0xB4, 0x6D, 0xD8, 0x61, 0x65,
-    0x17, 0xA2, 0x1A, 0x0C, 0x03, 0x41, 0x9E, 0x94,
-    0xDB, 0x82, 0x0A, 0x35, 0x3F, 0x15, 0x2D, 0x10,
-    0x83, 0x84, 0xBE, 0x94, 0x70, 0x09, 0x3F, 0x89
-  },
-  {
-    0x7F, 0xA4, 0xBE, 0x91, 0xCA, 0x52, 0x07, 0xFF,
-    0x08, 0x7D, 0xE9, 0x2F, 0x1D, 0xB0, 0x9B, 0xF7,
-    0x1A, 0x67, 0x87, 0x8B, 0xED, 0x19, 0x3A, 0x5C,
-    0x2C, 0xC4, 0xE3, 0x53, 0x23, 0xB8, 0xDF, 0x99,
-    0xA2, 0x6E, 0xCB, 0x98, 0x88, 0xD7, 0xB3, 0x4A,
-    0x73, 0x9D, 0x64, 0x1A, 0x0E, 0xCD, 0x0A, 0x66,
-    0x47, 0xA6, 0xA0, 0x64, 0x26, 0xF3, 0xCC, 0x1F,
-    0xEF, 0xDF, 0x90, 0x69, 0x92, 0x2F, 0xAE, 0x4C
-  },
-  {
-    0xBA, 0xD3, 0xCD, 0x75, 0x90, 0x5D, 0x7B, 0xFD,
-    0xA3, 0x32, 0x2B, 0x44, 0xA7, 0xD3, 0x58, 0x87,
-    0x14, 0xD3, 0x33, 0xEE, 0x86, 0x85, 0x5A, 0x87,
-    0x27, 0x47, 0xE7, 0x04, 0xF6, 0x11, 0x94, 0x84,
-    0xBD, 0xB7, 0xD0, 0x77, 0xFA, 0x08, 0xED, 0xC4,
-    0xA7, 0x9D, 0xE0, 0xF4, 0x3F, 0xCA, 0x8D, 0x43,
-    0x6E, 0x8A, 0x10, 0x08, 0x57, 0xF5, 0x9B, 0xC7,
-    0xB0, 0x55, 0xB9, 0x87, 0xF9, 0x7A, 0xC6, 0xB9
-  },
-  {
-    0xB7, 0xDE, 0xE8, 0xE8, 0x33, 0x9D, 0xB2, 0x97,
-    0xFD, 0xAA, 0x3C, 0xA5, 0xC1, 0xDC, 0x19, 0x88,
-    0xD9, 0x7F, 0x5F, 0xB6, 0x20, 0x8C, 0x64, 0xDE,
-    0xA9, 0x5E, 0x1C, 0x78, 0xF3, 0x37, 0xCE, 0x20,
-    0xA2, 0xB4, 0xDF, 0x17, 0xA7, 0xB8, 0x23, 0x6A,
-    0x90, 0xD6, 0x28, 0x67, 0x33, 0x16, 0x35, 0x72,
-    0xC8, 0x67, 0xD9, 0x3D, 0xE8, 0x9E, 0xF6, 0x2F,
-    0xA0, 0x5D, 0xAB, 0x70, 0x7E, 0xC3, 0xA7, 0x70
-  },
-  {
-    0xA0, 0xF7, 0xE9, 0x3C, 0xF3, 0x25, 0x02, 0xB9,
-    0xFD, 0x79, 0xEC, 0x20, 0x54, 0x62, 0x07, 0xF3,
-    0x31, 0xC5, 0x29, 0x9E, 0xCE, 0xF3, 0x50, 0xD6,
-    0x6E, 0xA8, 0x55, 0xC8, 0x7F, 0xBD, 0xDF, 0x18,
-    0xE6, 0x91, 0xC2, 0x0D, 0x04, 0x5A, 0x30, 0x8F,
-    0x83, 0xF6, 0xCB, 0x8F, 0xCA, 0x69, 0xD7, 0xE2,
-    0xB3, 0x9B, 0x34, 0xD2, 0xF8, 0x77, 0x27, 0x6C,
-    0x19, 0x6B, 0xF5, 0x14, 0xBA, 0xC6, 0x02, 0x70
-  },
-  {
-    0x6F, 0x50, 0x93, 0xCF, 0xC8, 0x83, 0x00, 0xBF,
-    0x68, 0x8E, 0x88, 0x4B, 0x4C, 0x5E, 0xC2, 0xC3,
-    0x1A, 0x8C, 0xC2, 0x8D, 0x63, 0x31, 0xAD, 0x7C,
-    0xA7, 0x1D, 0x97, 0x60, 0x21, 0x64, 0x82, 0x05,
-    0x28, 0x15, 0xD4, 0x4F, 0xC6, 0x9E, 0x18, 0xA8,
-    0xDC, 0x8B, 0xD7, 0x1B, 0x31, 0xF2, 0xB5, 0x89,
-    0xA7, 0xC0, 0x78, 0x0B, 0x61, 0x99, 0x38, 0x5F,
-    0x8D, 0xAE, 0x6C, 0x9B, 0x79, 0x74, 0xC4, 0xCB
-  },
-  {
-    0x3C, 0xFF, 0x46, 0xAC, 0x35, 0x46, 0xF6, 0x5A,
-    0xD7, 0xA7, 0x20, 0x87, 0x1A, 0xFA, 0x20, 0xA9,
-    0x21, 0x6D, 0xDA, 0x5C, 0x45, 0x18, 0x81, 0x56,
-    0xA5, 0xBB, 0xED, 0xF2, 0x15, 0x46, 0xD4, 0xBB,
-    0x39, 0x40, 0xB2, 0x1A, 0x41, 0xA3, 0x94, 0x03,
-    0xE3, 0xCF, 0xD5, 0xE7, 0xA0, 0xE7, 0x90, 0x4D,
-    0xA9, 0x5F, 0x4D, 0x8E, 0x0C, 0x5B, 0xF5, 0xB7,
-    0x0E, 0xB0, 0x29, 0x55, 0x6E, 0xFD, 0x49, 0x7E
-  },
-  {
-    0xAF, 0x66, 0x8A, 0x80, 0x5E, 0x6D, 0x70, 0x4B,
-    0x1E, 0x58, 0x1F, 0x1E, 0x8E, 0x3C, 0x00, 0xCF,
-    0x4C, 0xF3, 0xE5, 0x46, 0x14, 0x7C, 0x40, 0x6D,
-    0x17, 0xCA, 0x97, 0x4D, 0x19, 0xA0, 0x14, 0xC7,
-    0x8B, 0x44, 0xE7, 0x2D, 0xDE, 0xEB, 0x65, 0x26,
-    0x07, 0xE8, 0x6D, 0x69, 0x02, 0x59, 0xDC, 0xAB,
-    0x0D, 0xDA, 0x81, 0xC7, 0x7C, 0x7E, 0xE2, 0x72,
-    0x1E, 0x82, 0xBB, 0xB1, 0x39, 0x43, 0x07, 0x1D
-  },
-  {
-    0x79, 0xDD, 0xEB, 0x5C, 0x54, 0xDE, 0xD1, 0xE4,
-    0x48, 0x40, 0x71, 0xC4, 0x6B, 0xB4, 0x28, 0x02,
-    0xD2, 0x3B, 0x3A, 0x08, 0xC1, 0x23, 0x11, 0xBE,
-    0x36, 0x3C, 0x7C, 0x7A, 0x02, 0x5A, 0x17, 0x64,
-    0xC8, 0xD8, 0x50, 0x69, 0xFD, 0xA8, 0xD5, 0x17,
-    0x77, 0x7D, 0x8D, 0xD8, 0x09, 0xE3, 0xD4, 0xA9,
-    0x56, 0x04, 0x1A, 0x70, 0x79, 0xF9, 0x16, 0x7B,
-    0x0F, 0xE9, 0x71, 0x2E, 0x5F, 0x12, 0x29, 0xF5
-  },
-  {
-    0x99, 0x8E, 0x82, 0xF4, 0x26, 0x3D, 0x53, 0xAE,
-    0xDA, 0xC9, 0x39, 0xEB, 0xB6, 0xEB, 0x8B, 0x19,
-    0x69, 0x74, 0x6C, 0xB8, 0x15, 0xBD, 0x72, 0x1F,
-    0x17, 0xA4, 0x8B, 0xEE, 0x9E, 0xCF, 0xF2, 0xFE,
-    0x59, 0x8C, 0x53, 0x9C, 0x41, 0x9A, 0x60, 0xE0,
-    0xD5, 0xA0, 0x4F, 0x1C, 0xB5, 0x23, 0xA2, 0xFD,
-    0x05, 0x38, 0xBB, 0x17, 0x8E, 0x44, 0x75, 0x8D,
-    0x31, 0x59, 0xAB, 0x9E, 0x02, 0x84, 0x01, 0xA3
-  },
-  {
-    0x33, 0x96, 0xCF, 0xD5, 0xCD, 0xE1, 0x4A, 0xEC,
-    0x1A, 0xAE, 0xD3, 0xE1, 0x22, 0x52, 0xCF, 0xD6,
-    0xE3, 0x42, 0xED, 0x25, 0x5E, 0x8E, 0x9E, 0x1B,
-    0xE1, 0x0F, 0x1F, 0x27, 0x38, 0x77, 0xF3, 0x63,
-    0x33, 0x81, 0xE3, 0xC9, 0x61, 0xE6, 0x7E, 0xC4,
-    0x1E, 0x8F, 0x9E, 0x16, 0x11, 0x0F, 0xC0, 0x3D,
-    0xDE, 0x88, 0xBF, 0xC0, 0x96, 0xFC, 0x15, 0x14,
-    0x46, 0x1D, 0x70, 0xD0, 0xBE, 0xCE, 0x0A, 0xF6
-  },
-  {
-    0x77, 0x7D, 0x9D, 0xC5, 0x5A, 0x2F, 0x57, 0xA4,
-    0x6E, 0xA0, 0x6A, 0x2F, 0x4C, 0xB9, 0x76, 0x0D,
-    0x00, 0xD7, 0xA8, 0x62, 0xD0, 0xA2, 0xAA, 0x19,
-    0x46, 0x7B, 0x57, 0x0F, 0x7C, 0x7D, 0x5E, 0xA7,
-    0x62, 0x9A, 0x95, 0xEB, 0x20, 0x0E, 0x1F, 0x9D,
-    0xB0, 0x66, 0x10, 0xCF, 0x8E, 0x30, 0xD5, 0xE6,
-    0xAD, 0x0A, 0x7B, 0x63, 0x29, 0x77, 0xFC, 0x21,
-    0xBB, 0x17, 0x89, 0x67, 0xF3, 0xB0, 0xE0, 0x9B
-  },
-  {
-    0x32, 0xEE, 0x35, 0x7F, 0xC9, 0x16, 0x36, 0xA8,
-    0x55, 0xBA, 0x01, 0xA0, 0xB8, 0xDA, 0x6F, 0x35,
-    0x53, 0xB1, 0xD5, 0x20, 0xAD, 0xCF, 0xE8, 0xFE,
-    0x9D, 0xEB, 0xCC, 0xB2, 0x6C, 0x5C, 0x4C, 0xE8,
-    0x50, 0x5B, 0xB1, 0xEF, 0xB5, 0xED, 0x5B, 0xAA,
-    0x4C, 0x52, 0x45, 0xB5, 0x0D, 0x74, 0x46, 0x3F,
-    0x07, 0x67, 0xB2, 0xC7, 0x83, 0xC4, 0x7A, 0x93,
-    0xB0, 0xFD, 0xA6, 0x68, 0x95, 0x69, 0x3C, 0xE6
-  },
-  {
-    0x34, 0x0C, 0x0A, 0x7C, 0xE4, 0x96, 0xFE, 0xBD,
-    0xA1, 0x3F, 0xA2, 0x40, 0x7A, 0x21, 0xDC, 0x19,
-    0x83, 0x9B, 0xED, 0xAE, 0x1A, 0x08, 0x6A, 0xD0,
-    0xFE, 0xD3, 0x91, 0x7D, 0xF9, 0xBF, 0x40, 0x94,
-    0x4A, 0x78, 0x7F, 0x64, 0x1E, 0x90, 0xDD, 0xBA,
-    0xE0, 0x3A, 0x93, 0x37, 0x72, 0x3E, 0x51, 0x66,
-    0x8F, 0xB8, 0x93, 0x77, 0x2C, 0x0F, 0xBD, 0xB3,
-    0xEB, 0x7E, 0xF7, 0x90, 0xDF, 0xCB, 0xB9, 0xAB
-  },
-  {
-    0xD8, 0x6A, 0x5B, 0xAA, 0x33, 0x65, 0xAB, 0xD8,
-    0xF4, 0x42, 0xCD, 0x6E, 0xBB, 0x93, 0x11, 0x38,
-    0x19, 0xF0, 0xB4, 0x60, 0x61, 0xE1, 0x34, 0x04,
-    0xEF, 0xAA, 0x1A, 0x58, 0xE1, 0xFF, 0x27, 0x2A,
-    0xD4, 0xBF, 0xD3, 0x08, 0x15, 0xAD, 0xD8, 0x8A,
-    0xD9, 0x8F, 0xCE, 0x9A, 0xF0, 0x18, 0x37, 0x4C,
-    0xA6, 0x0D, 0x89, 0x79, 0x0F, 0x71, 0xA6, 0x07,
-    0x5F, 0x3D, 0x68, 0xD3, 0x20, 0x21, 0xA9, 0xEB
-  },
-  {
-    0xA6, 0x7E, 0x6E, 0xC6, 0x57, 0xC9, 0x5E, 0xAB,
-    0x3C, 0x3C, 0x32, 0xE4, 0x1F, 0xBF, 0x39, 0xCF,
-    0x20, 0x33, 0xAB, 0x4B, 0xE2, 0xE2, 0xB8, 0x21,
-    0x10, 0x4A, 0xDB, 0xE6, 0x9D, 0x16, 0xE9, 0x48,
-    0xDC, 0xE4, 0xC4, 0xC6, 0xA3, 0xCF, 0x22, 0x76,
-    0x90, 0x1F, 0x7D, 0x4F, 0xFD, 0x69, 0x65, 0x46,
-    0x49, 0x88, 0x2C, 0x01, 0x4D, 0x2C, 0x10, 0xA1,
-    0x30, 0x2B, 0x79, 0xC6, 0x15, 0x69, 0xCD, 0x36
-  },
-  {
-    0x55, 0xCE, 0x19, 0x2A, 0xE4, 0xB3, 0xEA, 0xF8,
-    0x55, 0x59, 0x0E, 0x2D, 0x44, 0xE6, 0x25, 0xD9,
-    0xBA, 0x14, 0x6E, 0xB7, 0x50, 0x48, 0xE6, 0xB5,
-    0x6E, 0x02, 0x50, 0x31, 0xEF, 0xBA, 0x0B, 0xDA,
-    0x8A, 0xAA, 0xFA, 0x04, 0x70, 0xB7, 0xAC, 0x3D,
-    0x40, 0x6E, 0x5A, 0xBA, 0x3E, 0x83, 0x2F, 0x27,
-    0xA5, 0x07, 0x24, 0x6D, 0x1B, 0x5F, 0x33, 0xDE,
-    0xA1, 0xF7, 0x24, 0xE2, 0xB8, 0x1B, 0x0C, 0x98
-  },
-  {
-    0xB3, 0xA2, 0x0C, 0x1F, 0xB0, 0xB4, 0xF0, 0xD3,
-    0x77, 0x26, 0xC2, 0x3B, 0x58, 0x77, 0xDD, 0x8E,
-    0x72, 0xF6, 0x98, 0x86, 0xE0, 0x9A, 0x8C, 0x68,
-    0xCF, 0xC3, 0x01, 0xD2, 0xA3, 0xF2, 0xF9, 0x5C,
-    0xEF, 0xCF, 0xAB, 0xB8, 0x88, 0x99, 0x03, 0xC7,
-    0x32, 0xF4, 0xE8, 0x14, 0x32, 0xD3, 0xF6, 0x78,
-    0xCC, 0xDF, 0xC3, 0x98, 0xAC, 0xD8, 0xA2, 0xF0,
-    0x66, 0x41, 0x10, 0x04, 0x50, 0xD8, 0x9F, 0x32
-  },
-  {
-    0xF7, 0x27, 0x2D, 0x93, 0xC7, 0x01, 0x2D, 0x38,
-    0xB2, 0x7F, 0x0C, 0x9A, 0xE2, 0x01, 0x79, 0x58,
-    0xBB, 0xA6, 0x66, 0xA9, 0xDE, 0x1E, 0x88, 0x12,
-    0xE9, 0x74, 0x37, 0xAE, 0xB2, 0xE0, 0x3C, 0x99,
-    0x94, 0x38, 0xF0, 0xBE, 0x33, 0x3D, 0x09, 0xAD,
-    0xDB, 0xCF, 0xAA, 0xC7, 0xAA, 0x73, 0xF7, 0xB6,
-    0xCC, 0xEC, 0x67, 0xDC, 0x07, 0x79, 0x98, 0xDE,
-    0xDB, 0x8C, 0x13, 0x32, 0xBA, 0xC0, 0xFB, 0xA8
-  },
-  {
-    0x1F, 0xE7, 0xB3, 0xDE, 0x34, 0xC0, 0x47, 0x9C,
-    0xA8, 0x40, 0x5F, 0x3C, 0xBC, 0xD2, 0xDB, 0x64,
-    0xBB, 0x18, 0xDB, 0xB2, 0x91, 0xA5, 0xFE, 0xAA,
-    0x16, 0xC5, 0x22, 0x8C, 0x93, 0xEE, 0x21, 0xC7,
-    0x11, 0xD6, 0x8A, 0x01, 0x0C, 0x2A, 0xE8, 0x80,
-    0x05, 0xEB, 0xAC, 0x95, 0x9E, 0x3A, 0x32, 0x24,
-    0x52, 0xF8, 0x62, 0xDD, 0xE9, 0x4B, 0xB9, 0x41,
-    0x81, 0x3E, 0x52, 0x4D, 0x23, 0x47, 0xFE, 0xEE
-  },
-  {
-    0x4E, 0xE1, 0xD3, 0x88, 0x05, 0xC3, 0x22, 0x84,
-    0xEC, 0xEB, 0xE9, 0x2E, 0x3D, 0xF6, 0xCD, 0x98,
-    0xC7, 0xD6, 0x68, 0x0E, 0xAB, 0x0D, 0x68, 0x66,
-    0x4F, 0x96, 0x70, 0x6C, 0x45, 0x63, 0x3B, 0x1E,
-    0x26, 0x82, 0x22, 0xAA, 0x5A, 0x52, 0x79, 0xEF,
-    0x01, 0xFC, 0x28, 0x54, 0x32, 0xAB, 0xEE, 0xD7,
-    0x4B, 0xA3, 0xDF, 0x18, 0x9F, 0x50, 0xA9, 0x89,
-    0xD5, 0x8E, 0x71, 0x30, 0x62, 0x2D, 0xAA, 0x59
-  },
-  {
-    0x0E, 0x14, 0x05, 0x87, 0x1C, 0x87, 0xA5, 0xEA,
-    0x40, 0x83, 0x42, 0xF3, 0x9D, 0x34, 0x94, 0xF9,
-    0x39, 0xF7, 0x3C, 0x22, 0x60, 0xC2, 0xA4, 0x3A,
-    0x5C, 0x9F, 0x1B, 0x57, 0x33, 0x0C, 0xCA, 0x40,
-    0x93, 0xFC, 0x1F, 0x42, 0xF9, 0x6D, 0x83, 0x00,
-    0x56, 0x77, 0x03, 0x7D, 0xB5, 0x1A, 0xEF, 0x26,
-    0xF0, 0x54, 0x38, 0x05, 0x7A, 0xE7, 0x9E, 0xD1,
-    0x44, 0x64, 0xFD, 0x8E, 0x57, 0xD1, 0x55, 0x86
-  },
-  {
-    0x17, 0xC5, 0xCA, 0xB4, 0x09, 0x10, 0x73, 0x62,
-    0x1B, 0x5C, 0x24, 0xC3, 0x36, 0x31, 0x6D, 0x0C,
-    0xF6, 0x49, 0xBA, 0x1E, 0xFF, 0xEB, 0xFC, 0x87,
-    0xE0, 0x43, 0x9C, 0xDF, 0x57, 0x88, 0x87, 0xB2,
-    0x21, 0x65, 0x6D, 0x33, 0x9A, 0x6F, 0xD1, 0x98,
-    0xAB, 0xAE, 0xE6, 0x7E, 0xA1, 0x88, 0xDD, 0x66,
-    0x56, 0x78, 0x23, 0xFC, 0x22, 0x0C, 0x52, 0xB5,
-    0x74, 0x90, 0x25, 0x14, 0x69, 0xD2, 0x5D, 0x8C
-  },
-  {
-    0x57, 0xDC, 0x27, 0x97, 0xD1, 0x42, 0x68, 0x1C,
-    0x94, 0xFE, 0x48, 0x86, 0x26, 0x98, 0x6E, 0xD4,
-    0xB2, 0x67, 0x03, 0xCB, 0xF6, 0xBF, 0xE5, 0x93,
-    0x91, 0x64, 0x36, 0x57, 0x06, 0x5B, 0x2D, 0x46,
-    0xE4, 0xB1, 0xDD, 0xB3, 0xAA, 0x83, 0x2C, 0x9B,
-    0xD4, 0x49, 0x75, 0x5A, 0xC8, 0xB1, 0xBF, 0x93,
-    0x68, 0x97, 0xFB, 0xC6, 0xAD, 0xE3, 0x78, 0xF2,
-    0xBD, 0x64, 0x93, 0xE4, 0x86, 0xF4, 0x20, 0x29
-  },
-  {
-    0x44, 0x12, 0xDD, 0x6B, 0xED, 0x6D, 0xB2, 0xA8,
-    0x03, 0xC2, 0xE0, 0xDF, 0x8F, 0x58, 0x29, 0xE7,
-    0xA4, 0xB0, 0x41, 0x78, 0x89, 0x51, 0x0D, 0xF7,
-    0xDF, 0xEE, 0x49, 0x57, 0x4A, 0x71, 0xEC, 0x0D,
-    0x9E, 0x0D, 0x46, 0x06, 0x50, 0x17, 0xC7, 0x2D,
-    0xD9, 0x74, 0x39, 0x33, 0xCA, 0x83, 0x9A, 0x76,
-    0x8D, 0xD1, 0x5A, 0xB0, 0xB7, 0xC1, 0x4C, 0x62,
-    0x6A, 0x35, 0x41, 0x09, 0x69, 0x01, 0x96, 0xAE
-  },
-  {
-    0xD0, 0xEB, 0xC7, 0x71, 0x03, 0x1B, 0x7C, 0x16,
-    0x00, 0x21, 0xC9, 0xB6, 0xFB, 0xB2, 0xB6, 0x70,
-    0xE3, 0xB4, 0x02, 0x70, 0x02, 0x69, 0x07, 0xA3,
-    0x91, 0x63, 0xDB, 0x18, 0x73, 0xEC, 0xC3, 0xB8,
-    0x00, 0x11, 0x1D, 0xD7, 0xBF, 0x13, 0x8F, 0x83,
-    0xA6, 0x10, 0xDC, 0x04, 0x6D, 0xA2, 0x68, 0xB7,
-    0x2B, 0x8C, 0x90, 0x86, 0x92, 0x23, 0x77, 0xDB,
-    0xED, 0x73, 0x94, 0x82, 0x43, 0xCA, 0x1E, 0x14
-  },
-  {
-    0x10, 0xC4, 0xBA, 0x31, 0x55, 0x91, 0x69, 0x8D,
-    0xFB, 0x91, 0xA5, 0x73, 0x37, 0x63, 0x18, 0x84,
-    0xB4, 0x73, 0x8D, 0x9F, 0x59, 0x80, 0x78, 0x51,
-    0xA6, 0x79, 0x84, 0x0C, 0xC2, 0x87, 0xAC, 0xE3,
-    0x01, 0x1C, 0xCD, 0xC8, 0xF4, 0xA4, 0x85, 0xBB,
-    0x19, 0x73, 0x40, 0x4E, 0xF9, 0xEE, 0x9B, 0x9C,
-    0xF1, 0xEA, 0xDB, 0xC5, 0x40, 0x74, 0xC6, 0xD1,
-    0x13, 0xDE, 0x8F, 0xC9, 0x1D, 0x07, 0x97, 0xEB
-  },
-  {
-    0x14, 0x64, 0x34, 0x7B, 0xE3, 0x2C, 0x79, 0x59,
-    0x17, 0x2B, 0x74, 0x72, 0xD1, 0x1F, 0xE0, 0x78,
-    0x44, 0xA5, 0x2E, 0x2D, 0x3B, 0x2D, 0x05, 0x8C,
-    0xC6, 0xBC, 0xC0, 0xA8, 0xA2, 0x75, 0xD6, 0xB8,
-    0x2B, 0x2D, 0x62, 0x63, 0x75, 0x5E, 0xAF, 0x2A,
-    0x65, 0x88, 0xB6, 0xA1, 0xEB, 0x79, 0x9A, 0xF8,
-    0x3A, 0x4C, 0xE7, 0x53, 0xF8, 0xC7, 0x5A, 0x22,
-    0x84, 0xD0, 0x28, 0x5B, 0xAB, 0x5F, 0x7C, 0x1C
-  },
-  {
-    0xF4, 0x09, 0x23, 0x1E, 0xD1, 0x87, 0xF5, 0xC4,
-    0xE8, 0x33, 0xFA, 0x9E, 0x30, 0x42, 0xAC, 0xA6,
-    0xC8, 0x58, 0xB0, 0x8B, 0x49, 0x6B, 0x25, 0x31,
-    0xF8, 0x4F, 0xD5, 0xCE, 0xA9, 0x3E, 0xCD, 0x06,
-    0xDA, 0xFE, 0x0A, 0x10, 0xC3, 0xFF, 0x23, 0x76,
-    0xC7, 0x4D, 0xC8, 0x0D, 0xA0, 0x7D, 0xA0, 0x18,
-    0x64, 0xFB, 0xF2, 0x68, 0x59, 0x60, 0xB5, 0x40,
-    0xB3, 0xA2, 0xE9, 0x42, 0xCB, 0x8D, 0x90, 0x9F
-  },
-  {
-    0x39, 0x51, 0x32, 0xC5, 0x80, 0xC3, 0x55, 0xB5,
-    0xB0, 0xE2, 0x35, 0x33, 0x6C, 0x8D, 0xC1, 0x08,
-    0x5E, 0x59, 0x59, 0x64, 0x04, 0x3D, 0x38, 0x9E,
-    0x08, 0x1E, 0xFE, 0x48, 0x5B, 0xA4, 0xC6, 0x37,
-    0x72, 0xDB, 0x8D, 0x7E, 0x0F, 0x18, 0x6C, 0x50,
-    0x98, 0x2E, 0x12, 0x23, 0xEA, 0x78, 0x5A, 0xDC,
-    0x74, 0x0B, 0x0C, 0xF2, 0x18, 0x70, 0x74, 0x58,
-    0xB8, 0xB8, 0x03, 0x40, 0x42, 0xF9, 0x23, 0xC2
-  },
-  {
-    0xF9, 0x2A, 0xBA, 0xCA, 0x21, 0x32, 0x29, 0x66,
-    0x06, 0x49, 0xEF, 0x2D, 0x8F, 0x88, 0x11, 0x5B,
-    0x5B, 0xED, 0x8A, 0xB5, 0xB9, 0xBC, 0xA9, 0xA1,
-    0xB4, 0xC5, 0x24, 0x57, 0x03, 0x53, 0x10, 0xC4,
-    0x1A, 0x6B, 0xEA, 0x2B, 0x23, 0xB7, 0x91, 0x8B,
-    0x5B, 0x8B, 0xF3, 0x8B, 0x52, 0xEA, 0xC6, 0xFF,
-    0x3B, 0x62, 0x13, 0xA5, 0x22, 0xF3, 0x81, 0xBE,
-    0x7F, 0xF0, 0x90, 0x6D, 0xBA, 0x7B, 0xD0, 0x0C
-  },
-  {
-    0xCB, 0xAD, 0xE7, 0xAD, 0x3B, 0x5D, 0xEE, 0x0F,
-    0xF1, 0xA4, 0x6B, 0x08, 0x2C, 0xF4, 0xE1, 0xE1,
-    0xDC, 0x21, 0x62, 0x0D, 0xD2, 0xCC, 0x0E, 0xDC,
-    0x2C, 0x70, 0x7A, 0x21, 0x62, 0xD2, 0x14, 0x99,
-    0x69, 0xAB, 0xBB, 0x29, 0xC5, 0x72, 0x0B, 0x04,
-    0xBD, 0x15, 0x68, 0xA9, 0x55, 0x61, 0x95, 0xE6,
-    0x7F, 0x24, 0x32, 0x2D, 0xD9, 0xAA, 0x4E, 0x83,
-    0x65, 0x19, 0x1A, 0xA5, 0xB6, 0xC4, 0x45, 0x79
-  },
-  {
-    0xF5, 0x1B, 0x4A, 0xE4, 0xD4, 0xC5, 0x4A, 0x29,
-    0xCF, 0x71, 0x35, 0xA8, 0xFE, 0x1E, 0xAB, 0xD5,
-    0xE1, 0xBC, 0xBF, 0x82, 0x08, 0x96, 0x96, 0x7D,
-    0xC4, 0x1E, 0x38, 0x49, 0xDA, 0xC2, 0x25, 0x07,
-    0x69, 0x42, 0x10, 0xCA, 0x11, 0xC4, 0xEB, 0xF1,
-    0xC2, 0x9A, 0x8D, 0x4F, 0x71, 0xB3, 0x0F, 0x76,
-    0xC9, 0xB6, 0x01, 0x0A, 0xD9, 0x5B, 0xDF, 0xB0,
-    0xDE, 0x83, 0x79, 0x25, 0xF0, 0x61, 0x25, 0x97
-  },
-  {
-    0xCE, 0x38, 0x72, 0x11, 0x5D, 0x83, 0x3B, 0x34,
-    0x56, 0xCA, 0x94, 0x2E, 0x6E, 0x38, 0x5F, 0x28,
-    0xA9, 0x03, 0xBE, 0xAB, 0xFB, 0x75, 0x3F, 0x8A,
-    0xFC, 0xCC, 0x12, 0xF2, 0x58, 0x2C, 0xE1, 0xF3,
-    0x62, 0x12, 0xBD, 0x05, 0xE0, 0x5A, 0x46, 0xFC,
-    0x88, 0xD3, 0x19, 0x50, 0xB4, 0x91, 0x1A, 0xE5,
-    0xDC, 0xD8, 0xFF, 0x7A, 0x0B, 0x50, 0x47, 0x4C,
-    0xB4, 0x88, 0xCC, 0xF2, 0xA8, 0x9C, 0xD0, 0xEB
-  },
-  {
-    0x9B, 0xB7, 0x4C, 0xBD, 0x47, 0xA6, 0x24, 0xCB,
-    0xEA, 0xFC, 0xC1, 0x6D, 0x46, 0x29, 0x47, 0xBB,
-    0xEA, 0x13, 0x70, 0xB8, 0x5C, 0x96, 0x1A, 0x40,
-    0x7D, 0xF9, 0x86, 0x3E, 0x54, 0xE6, 0xD9, 0xE6,
-    0xA8, 0xD2, 0xEF, 0x0C, 0x64, 0x97, 0x20, 0x5E,
-    0x5E, 0xB7, 0xC3, 0xE5, 0x9E, 0x69, 0x8D, 0x99,
-    0x24, 0x63, 0xCA, 0x9D, 0xD4, 0xCF, 0x28, 0xCF,
-    0x9A, 0x2D, 0x4E, 0x30, 0xC1, 0x33, 0xE8, 0x55
-  },
-  {
-    0x72, 0x96, 0x33, 0x82, 0x0B, 0xF0, 0x13, 0xD9,
-    0xD2, 0xBD, 0x37, 0x3C, 0xCA, 0xC7, 0xBC, 0x9F,
-    0x37, 0x16, 0xF6, 0x9E, 0x16, 0xA4, 0x4E, 0x94,
-    0x9C, 0x7A, 0x9A, 0x93, 0xDC, 0xA1, 0x26, 0xBB,
-    0x1A, 0xA5, 0x4E, 0x5E, 0x70, 0x40, 0x70, 0x7F,
-    0x02, 0x87, 0x6A, 0xFD, 0x02, 0x0A, 0xF4, 0x72,
-    0x63, 0x9D, 0x49, 0xF5, 0x42, 0x0D, 0x29, 0x4C,
-    0x3A, 0xA3, 0x1D, 0x06, 0x7E, 0x3E, 0x85, 0x75
-  },
-  {
-    0x06, 0x86, 0x1D, 0xB3, 0x07, 0xC6, 0x78, 0x08,
-    0x6E, 0x8B, 0x2A, 0xEC, 0xDF, 0x18, 0x29, 0xD2,
-    0x88, 0x3D, 0x28, 0xB7, 0x31, 0xAB, 0xD0, 0xF1,
-    0xE7, 0x2F, 0x1C, 0xED, 0x6C, 0x7A, 0xD4, 0x17,
-    0x2E, 0xCA, 0x63, 0x22, 0xA8, 0x3F, 0xB6, 0xA6,
-    0x5A, 0xFA, 0x37, 0xE9, 0x4A, 0x3E, 0x2B, 0xA2,
-    0x05, 0xB8, 0x7B, 0xF3, 0x82, 0xD9, 0x15, 0x88,
-    0x49, 0x7A, 0x46, 0x50, 0x88, 0x3B, 0xD8, 0x75
-  },
-  {
-    0x35, 0x6E, 0xCE, 0xAF, 0x17, 0x02, 0xB3, 0x70,
-    0xF4, 0xAA, 0xB8, 0xEA, 0x82, 0x84, 0x86, 0xF3,
-    0x30, 0x13, 0xF7, 0x44, 0xB3, 0x9E, 0x7E, 0xA2,
-    0x6C, 0x69, 0x18, 0xD6, 0x0E, 0x1A, 0xBC, 0xF4,
-    0x4F, 0xB1, 0x6E, 0xDC, 0xA7, 0x72, 0x0A, 0xCF,
-    0xC6, 0xA7, 0x01, 0xBF, 0x1E, 0x2C, 0x35, 0xDD,
-    0xBD, 0x69, 0x5A, 0x8D, 0x40, 0x8E, 0x8C, 0x96,
-    0x32, 0xE8, 0xCD, 0x27, 0x23, 0x0C, 0xAD, 0x8D
-  },
-  {
-    0x48, 0x9A, 0x39, 0xD0, 0xFC, 0x3C, 0xDE, 0xAF,
-    0x42, 0x89, 0x2E, 0xD8, 0x03, 0x85, 0xC1, 0x1C,
-    0xE2, 0x93, 0xC9, 0x32, 0x21, 0x5B, 0xB2, 0x31,
-    0x88, 0x69, 0x2A, 0x86, 0xE6, 0x1B, 0xCA, 0xD9,
-    0x2C, 0x2A, 0x1D, 0x11, 0x42, 0x60, 0x1B, 0x1B,
-    0xDF, 0x09, 0x82, 0xD1, 0xCD, 0x1E, 0x05, 0xC0,
-    0x52, 0xDE, 0x81, 0x9E, 0x64, 0xF2, 0x47, 0xDB,
-    0x35, 0x91, 0x5D, 0xD1, 0xDB, 0x79, 0xA3, 0xB5
-  },
-  {
-    0xC0, 0x2F, 0x46, 0x4B, 0x4D, 0xD1, 0x81, 0x17,
-    0xE3, 0x0A, 0x8D, 0xB8, 0xEF, 0x1D, 0xA0, 0x67,
-    0x13, 0x4B, 0x60, 0x4E, 0xFA, 0x19, 0x51, 0x76,
-    0x7E, 0xE6, 0x32, 0xDC, 0x02, 0x4D, 0x64, 0xC0,
-    0x0F, 0x24, 0x49, 0xF0, 0x42, 0xDB, 0x3A, 0xEA,
-    0x01, 0x74, 0xEB, 0xCD, 0xBB, 0x4F, 0xF5, 0x9D,
-    0xAE, 0x75, 0x4F, 0x72, 0x39, 0x46, 0xF1, 0xB9,
-    0x0A, 0x77, 0xFD, 0x95, 0x23, 0x69, 0x0B, 0x7B
-  },
-  {
-    0xFB, 0x31, 0xE6, 0xDD, 0xB8, 0x6D, 0xBF, 0xF3,
-    0x72, 0x64, 0x6D, 0x1E, 0x3A, 0x3F, 0x31, 0xDD,
-    0x61, 0x15, 0x9F, 0xC3, 0x93, 0x65, 0x8C, 0x2E,
-    0xE9, 0x57, 0x10, 0x3B, 0xF2, 0x11, 0x6B, 0xDE,
-    0xF8, 0x2C, 0x33, 0xE8, 0x69, 0xF3, 0xC8, 0x3A,
-    0xC3, 0xC2, 0xF6, 0x38, 0x0C, 0xF6, 0x92, 0xF7,
-    0xB1, 0xDC, 0xBA, 0xE0, 0xBB, 0x22, 0x7A, 0xD3,
-    0x47, 0xE7, 0x54, 0x13, 0x74, 0x66, 0xC6, 0x9F
-  },
-  {
-    0x00, 0x60, 0x62, 0xAB, 0xE1, 0x6C, 0x2F, 0xE7,
-    0x9A, 0xF8, 0x80, 0x85, 0xE0, 0xB5, 0x82, 0xB1,
-    0x06, 0xE7, 0xF7, 0x9F, 0x01, 0xA4, 0x39, 0x46,
-    0xC7, 0x8B, 0x19, 0xF9, 0xBD, 0xD7, 0x25, 0x99,
-    0x76, 0x36, 0xA3, 0x32, 0xEB, 0x9A, 0x3A, 0xAA,
-    0x6D, 0xE0, 0xD4, 0xA8, 0xE9, 0xE2, 0x8E, 0x8C,
-    0x77, 0x87, 0x74, 0x22, 0x4C, 0x66, 0x5B, 0xF7,
-    0xBC, 0x36, 0x44, 0xFC, 0xE4, 0x11, 0x22, 0x8C
-  },
-  {
-    0xD4, 0x4A, 0x6D, 0xB3, 0xDE, 0x9F, 0xD4, 0xE4,
-    0xA7, 0xEF, 0x15, 0x5A, 0x01, 0xBC, 0xCB, 0x91,
-    0xC1, 0xBC, 0xF1, 0xCB, 0x53, 0x22, 0x56, 0x89,
-    0xA7, 0x7A, 0x0D, 0x23, 0xB4, 0xD3, 0x9A, 0x89,
-    0xA1, 0x89, 0xF2, 0x89, 0x80, 0xF9, 0x1C, 0x56,
-    0xEA, 0xC5, 0x87, 0x9E, 0xAE, 0x93, 0x3C, 0xED,
-    0x7F, 0x26, 0x7E, 0x2F, 0x70, 0x40, 0xEB, 0x38,
-    0x0F, 0xDB, 0xBF, 0x34, 0xA6, 0xB7, 0xB6, 0x15
-  },
-  {
-    0x5A, 0xFB, 0xFE, 0xA1, 0xDE, 0xDA, 0x5A, 0xEA,
-    0xB9, 0x2E, 0x4D, 0x0C, 0x31, 0xD1, 0x6A, 0x9A,
-    0x86, 0xBF, 0x7C, 0x75, 0x23, 0x27, 0x4A, 0x05,
-    0xC5, 0x05, 0x29, 0xF5, 0xC1, 0x39, 0xDB, 0x10,
-    0x93, 0x3A, 0x52, 0xC6, 0x22, 0x9C, 0xD3, 0x11,
-    0x08, 0xF0, 0x83, 0xFB, 0x0C, 0x85, 0xCF, 0x52,
-    0x83, 0x1B, 0x5A, 0x05, 0xF2, 0x55, 0x0A, 0x77,
-    0xB5, 0x70, 0x3C, 0xC6, 0x68, 0x91, 0x2D, 0xBC
-  },
-  {
-    0xD1, 0x7F, 0xCA, 0xD4, 0xE0, 0xD8, 0xBD, 0xE2,
-    0xED, 0xFD, 0xA1, 0x68, 0xBA, 0x47, 0x10, 0x4B,
-    0xBC, 0xA4, 0xD2, 0x6D, 0xA2, 0xD3, 0x1A, 0x07,
-    0x0B, 0x0F, 0xBA, 0x0B, 0x26, 0xEE, 0xDD, 0x95,
-    0xEE, 0xC1, 0xFC, 0x34, 0xD7, 0x6C, 0xD4, 0xA1,
-    0xCB, 0x15, 0xF2, 0x62, 0x16, 0x88, 0xA9, 0xCC,
-    0x0E, 0x96, 0x35, 0x8D, 0xE9, 0x93, 0x22, 0x2B,
-    0xB3, 0xE3, 0xCD, 0x0B, 0xFD, 0xCB, 0x74, 0x6C
-  },
-  {
-    0xBD, 0x6A, 0x59, 0x21, 0x63, 0x37, 0xB4, 0x5D,
-    0x6B, 0x71, 0xAE, 0xAC, 0x01, 0x36, 0x6B, 0xFE,
-    0x96, 0x60, 0xE0, 0xFB, 0xC2, 0x95, 0x9A, 0xDB,
-    0xB6, 0x8D, 0x52, 0x6C, 0x43, 0xD4, 0x8F, 0xFF,
-    0xFE, 0x2F, 0xFC, 0x43, 0x05, 0x88, 0xE7, 0x8E,
-    0x66, 0x54, 0x6A, 0x3C, 0x70, 0x9B, 0x0A, 0xCE,
-    0xA1, 0x7C, 0xBC, 0x5A, 0x21, 0x8C, 0x53, 0xCD,
-    0x47, 0xAA, 0x48, 0x71, 0xC1, 0xDD, 0x98, 0x4A
-  },
-  {
-    0x83, 0xEA, 0x5A, 0xE1, 0x89, 0x11, 0x45, 0xC4,
-    0x1A, 0x7C, 0x6C, 0x87, 0xFE, 0x92, 0x24, 0x87,
-    0xF5, 0xD2, 0x82, 0x93, 0x35, 0x69, 0xB7, 0xAE,
-    0x0E, 0x34, 0x56, 0x53, 0x38, 0x1E, 0xDE, 0x6D,
-    0x4B, 0x16, 0xE1, 0x44, 0xD1, 0xC3, 0xE8, 0xF0,
-    0x60, 0x5D, 0xAA, 0x0D, 0xB5, 0x96, 0x5A, 0x7B,
-    0x79, 0xD9, 0x1A, 0x8A, 0xFE, 0x11, 0xF1, 0xE0,
-    0xBC, 0x54, 0x9A, 0xC0, 0x74, 0xA0, 0x1A, 0xB7
-  },
-  {
-    0x37, 0x50, 0x50, 0xCF, 0x2E, 0x43, 0x0D, 0x0E,
-    0x29, 0x87, 0x58, 0x35, 0x20, 0x8E, 0x89, 0x06,
-    0xD7, 0x05, 0x2E, 0x47, 0x29, 0x2C, 0x5A, 0x38,
-    0xA6, 0x30, 0x82, 0x87, 0x3D, 0x31, 0xD5, 0x83,
-    0x13, 0x5C, 0x07, 0xA2, 0x0C, 0x52, 0xD9, 0x5B,
-    0x2D, 0x5D, 0xC3, 0xEA, 0xDE, 0x6B, 0xE1, 0x43,
-    0xCA, 0x34, 0x38, 0xF4, 0x4D, 0x02, 0x0A, 0xAE,
-    0x16, 0x0E, 0xD7, 0x7A, 0xB9, 0x88, 0x4F, 0x7D
-  },
-  {
-    0x30, 0x28, 0xB0, 0xE8, 0x24, 0x95, 0x7F, 0xF3,
-    0xB3, 0x05, 0xE9, 0x7F, 0xF5, 0x92, 0xAA, 0x8E,
-    0xF2, 0x9B, 0x3B, 0xEC, 0x1D, 0xC4, 0x7B, 0x76,
-    0x13, 0x3D, 0x10, 0x3F, 0xFE, 0x38, 0x71, 0xBF,
-    0x05, 0x12, 0xA2, 0x31, 0xAF, 0xCB, 0x1D, 0xF8,
-    0x65, 0x97, 0xEC, 0x5E, 0x46, 0xE9, 0x23, 0xC8,
-    0xB9, 0x85, 0xC2, 0x85, 0x08, 0x57, 0xC6, 0x40,
-    0x01, 0xB2, 0xC5, 0x51, 0xEA, 0x83, 0x3D, 0x0E
-  },
-  {
-    0x08, 0x7C, 0xCB, 0x1E, 0x5B, 0xD1, 0x72, 0x22,
-    0xB8, 0xAF, 0x20, 0x6D, 0xD6, 0x39, 0x08, 0xF8,
-    0x91, 0x72, 0x97, 0x62, 0x1A, 0x8C, 0xB9, 0x33,
-    0x0A, 0xE0, 0xBA, 0x4A, 0xF3, 0xE9, 0xD6, 0x0C,
-    0x98, 0xFC, 0xF1, 0xEF, 0xFC, 0xEC, 0x20, 0x13,
-    0x6B, 0x4F, 0x91, 0x88, 0x12, 0x6D, 0xFA, 0x04,
-    0x4E, 0x1C, 0x1C, 0xCD, 0xA3, 0xCE, 0xD8, 0x73,
-    0x73, 0xD9, 0x37, 0x9C, 0xCB, 0xED, 0xBD, 0xB3
-  },
-  {
-    0x7F, 0x17, 0x06, 0x24, 0x98, 0xBF, 0xA2, 0xBB,
-    0x58, 0x56, 0xCD, 0x0A, 0x62, 0xC5, 0x68, 0xC5,
-    0xC6, 0xB8, 0x97, 0x43, 0x24, 0x74, 0xEF, 0xB2,
-    0xE6, 0xA2, 0xEE, 0x18, 0xCA, 0xFF, 0xD2, 0x1E,
-    0x1E, 0xF3, 0x0D, 0x06, 0x47, 0x23, 0x85, 0x0F,
-    0x79, 0x90, 0xD2, 0x1B, 0xA3, 0x4E, 0x8F, 0x2B,
-    0x3B, 0xB0, 0x67, 0x02, 0x3A, 0x77, 0x27, 0x82,
-    0x15, 0x8A, 0x27, 0xC6, 0xC4, 0x67, 0xC9, 0x28
-  },
-  {
-    0x6B, 0xA9, 0x86, 0xA9, 0x42, 0x49, 0x7F, 0xD3,
-    0x84, 0x62, 0x97, 0x2F, 0x50, 0xA6, 0x19, 0x68,
-    0xC0, 0x65, 0x2D, 0xAC, 0x56, 0xCE, 0x9B, 0x9A,
-    0xC1, 0xBC, 0x06, 0x1A, 0xB6, 0x34, 0xFE, 0x5A,
-    0x77, 0xAC, 0xD0, 0x27, 0x5F, 0x83, 0x96, 0xE3,
-    0xC0, 0xBE, 0xF0, 0x12, 0xAE, 0x93, 0xB7, 0x27,
-    0x58, 0xB8, 0xD7, 0x67, 0x9C, 0x87, 0xE8, 0x47,
-    0xE6, 0x30, 0x17, 0xB5, 0x5A, 0x69, 0xC5, 0xC6
-  },
-  {
-    0x96, 0x7C, 0x81, 0xF5, 0x61, 0x95, 0x18, 0x33,
-    0xFA, 0x56, 0x6F, 0x6B, 0x36, 0x07, 0x7E, 0xAD,
-    0xB2, 0xA6, 0x15, 0xCC, 0x15, 0xF0, 0xED, 0xBB,
-    0xAE, 0x4F, 0x84, 0x4D, 0xDC, 0x8E, 0x9C, 0x1F,
-    0xB8, 0x3D, 0x31, 0xA9, 0x3F, 0xCB, 0x17, 0x74,
-    0xD7, 0x40, 0xD6, 0x92, 0x08, 0xCA, 0x59, 0x30,
-    0xBC, 0xFA, 0xC4, 0xA1, 0xF9, 0x44, 0x46, 0x9F,
-    0xEF, 0xD1, 0x9B, 0x6E, 0x93, 0x75, 0xE0, 0xB5
-  },
-  {
-    0xE8, 0xAE, 0xF1, 0x78, 0xE6, 0xDA, 0x3E, 0xF5,
-    0xCA, 0xED, 0x65, 0x30, 0xF7, 0xEB, 0x25, 0x60,
-    0x82, 0x56, 0xC2, 0x37, 0x7C, 0x4C, 0xF9, 0x6B,
-    0x0C, 0xFD, 0x0D, 0x76, 0xEE, 0xB4, 0xBB, 0x86,
-    0xEE, 0xFF, 0x7B, 0x7D, 0xF1, 0x58, 0x5C, 0x8D,
-    0x7A, 0x20, 0xC0, 0x63, 0x3A, 0x67, 0x90, 0x7F,
-    0x6D, 0x28, 0x67, 0xC3, 0x26, 0x4A, 0x91, 0xC0,
-    0x51, 0xAB, 0xAE, 0x6E, 0xEA, 0x5A, 0x91, 0xD8
-  },
-  {
-    0x64, 0x81, 0xDC, 0xC8, 0x15, 0x7A, 0xE6, 0x28,
-    0xB5, 0xCD, 0x52, 0x6B, 0xAC, 0x8F, 0x93, 0x31,
-    0x56, 0xDE, 0xDA, 0xC9, 0x56, 0xA2, 0xB2, 0x2A,
-    0x97, 0x4B, 0xF5, 0xF7, 0xEC, 0x2D, 0xB5, 0x80,
-    0x6F, 0x53, 0xDD, 0x0E, 0x2D, 0xD5, 0x3D, 0xB8,
-    0x7C, 0xD8, 0xF5, 0x8A, 0x58, 0x6F, 0x9B, 0x3C,
-    0x5C, 0x52, 0x23, 0x31, 0xA3, 0x11, 0x74, 0xC4,
-    0xE7, 0xB9, 0xB6, 0xF7, 0xF0, 0x57, 0xC2, 0x8F
-  },
-  {
-    0xA7, 0x1E, 0xA4, 0x5C, 0xE6, 0x61, 0x6A, 0x3D,
-    0x2F, 0x0A, 0x59, 0x2D, 0x5D, 0x02, 0x86, 0x93,
-    0x2D, 0xA6, 0x3C, 0x6D, 0xB1, 0x1D, 0x59, 0xC6,
-    0x69, 0x1C, 0x35, 0xA5, 0x6F, 0x7E, 0xE4, 0xF8,
-    0x0B, 0x6F, 0xC3, 0x40, 0xB4, 0xDB, 0xC1, 0x84,
-    0x4C, 0x50, 0x40, 0xE6, 0x68, 0xD2, 0x89, 0x2F,
-    0x4A, 0x4A, 0xE8, 0x53, 0x3F, 0x1B, 0x67, 0x71,
-    0xBC, 0xFC, 0xE7, 0xC3, 0xA2, 0x3E, 0x0D, 0x97
-  },
-  {
-    0x96, 0x93, 0x44, 0x87, 0x70, 0xFE, 0xAE, 0x42,
-    0x17, 0x26, 0xEB, 0x20, 0x3B, 0x01, 0xC7, 0x08,
-    0x23, 0xD5, 0xF4, 0x4C, 0xC5, 0x21, 0x3E, 0x6A,
-    0x68, 0x28, 0x47, 0x29, 0xBD, 0x11, 0x7D, 0x9B,
-    0xD1, 0x8F, 0xEC, 0x4A, 0x0A, 0x82, 0x4A, 0x24,
-    0x08, 0x0F, 0x29, 0x8B, 0xAC, 0xD2, 0x96, 0xD7,
-    0xB4, 0x97, 0x83, 0x8F, 0xBD, 0x7B, 0x0D, 0x57,
-    0x5C, 0x52, 0x49, 0x2B, 0x3E, 0x6F, 0x92, 0x6B
-  },
-  {
-    0x37, 0xA1, 0x50, 0x66, 0xF2, 0xB9, 0xF9, 0x4C,
-    0x24, 0x61, 0x1B, 0xC4, 0x53, 0xED, 0x02, 0x74,
-    0x07, 0x8D, 0x1F, 0x70, 0xB2, 0xD3, 0x4C, 0x8B,
-    0x96, 0x36, 0x08, 0x48, 0x9D, 0xCB, 0xE8, 0xDF,
-    0x44, 0x8E, 0xDD, 0x9C, 0x73, 0x36, 0x2B, 0xB2,
-    0xB6, 0x6B, 0xEE, 0xF6, 0x1F, 0xCE, 0x60, 0x10,
-    0x6F, 0x70, 0x19, 0xED, 0x37, 0x3C, 0x69, 0x22,
-    0x59, 0xD9, 0x55, 0x6A, 0x94, 0x0B, 0x1A, 0x06
-  },
-  {
-    0xBD, 0x44, 0xE7, 0x39, 0xE1, 0xF9, 0xDB, 0x1C,
-    0x6B, 0xAF, 0x42, 0xCA, 0x4A, 0x12, 0xAC, 0x09,
-    0x9B, 0x96, 0xF6, 0xB3, 0x6C, 0x4B, 0xCB, 0x1B,
-    0x72, 0xEE, 0xFF, 0x08, 0xA6, 0x49, 0x68, 0x35,
-    0xEC, 0x65, 0x15, 0x0B, 0xE8, 0xFE, 0x16, 0xCB,
-    0xE3, 0x27, 0x07, 0xE3, 0x47, 0x54, 0x7D, 0xC5,
-    0xA5, 0x83, 0xD2, 0x65, 0x74, 0x6F, 0xA5, 0x95,
-    0xC5, 0xE7, 0x73, 0x0F, 0xCF, 0x24, 0x58, 0x1E
-  },
-  {
-    0xFA, 0xB2, 0x03, 0x8E, 0x94, 0x98, 0xA1, 0xC3,
-    0x9E, 0x05, 0x78, 0xA0, 0xA5, 0xEA, 0x6B, 0x44,
-    0xF3, 0xC1, 0xB4, 0x1A, 0xE5, 0x67, 0xF9, 0x91,
-    0x4A, 0x95, 0xB1, 0x31, 0xC4, 0x8D, 0x12, 0x1E,
-    0xCA, 0xCE, 0xA8, 0x95, 0xA0, 0x9B, 0x1D, 0x4E,
-    0x04, 0x42, 0xBE, 0xC9, 0xC5, 0x0C, 0x50, 0xE0,
-    0x0A, 0x9F, 0xAF, 0xEF, 0xFA, 0xE0, 0x70, 0x88,
-    0x4C, 0x26, 0x25, 0xA8, 0xB1, 0xA2, 0x17, 0x26
-  },
-  {
-    0x05, 0xA1, 0xB7, 0x6B, 0x2F, 0xD5, 0x62, 0x11,
-    0xE0, 0xF2, 0xD7, 0x5A, 0x25, 0x16, 0x54, 0xA7,
-    0x72, 0xF5, 0x5E, 0x18, 0xCA, 0x02, 0x2A, 0xF5,
-    0x2C, 0xB3, 0x30, 0x19, 0x1E, 0x98, 0xA3, 0xB8,
-    0xEB, 0x87, 0xE5, 0x11, 0x7B, 0xAE, 0x58, 0x04,
-    0x4D, 0x94, 0x4C, 0x1F, 0x18, 0x85, 0x45, 0x12,
-    0x25, 0x41, 0x77, 0x35, 0xFC, 0x72, 0xF7, 0x39,
-    0x36, 0x69, 0x3C, 0xFF, 0x45, 0x46, 0x9F, 0x8C
-  },
-  {
-    0x2A, 0x30, 0xC9, 0x6B, 0xDA, 0xC7, 0x8A, 0x39,
-    0x94, 0xEE, 0xCA, 0xA5, 0xA5, 0x3F, 0x82, 0x7F,
-    0x58, 0xE1, 0x32, 0x31, 0xA0, 0xD1, 0x13, 0x08,
-    0x6C, 0x06, 0xB1, 0xBD, 0xAB, 0xDA, 0x38, 0xD0,
-    0x8F, 0x1A, 0xE2, 0x7D, 0xE2, 0x5F, 0xD2, 0x2E,
-    0xEA, 0x70, 0xC0, 0x5F, 0x01, 0x32, 0xBF, 0x7A,
-    0x50, 0x1C, 0x82, 0xAE, 0x62, 0x15, 0xBF, 0xEF,
-    0x3C, 0x01, 0x63, 0x98, 0xBA, 0xF2, 0xCB, 0x62
-  },
-  {
-    0x48, 0xDB, 0x53, 0x76, 0x5B, 0x82, 0xBD, 0x6F,
-    0x25, 0x33, 0xEA, 0xE1, 0x7F, 0x67, 0x69, 0xD7,
-    0xA4, 0xE3, 0xB2, 0x43, 0x74, 0x60, 0x1C, 0xDD,
-    0x8E, 0xC0, 0xCA, 0x3A, 0xAB, 0x30, 0x93, 0xFD,
-    0x2B, 0x99, 0x24, 0x38, 0x46, 0x0B, 0xAF, 0x8D,
-    0xA5, 0x8F, 0xB9, 0xA8, 0x9B, 0x2C, 0x58, 0xF9,
-    0x68, 0xE6, 0x36, 0x17, 0xCB, 0xEB, 0x18, 0x44,
-    0xB0, 0x2D, 0x6A, 0x27, 0xC5, 0xB4, 0xAD, 0x41
-  },
-  {
-    0x5C, 0x8B, 0x2E, 0x0E, 0x1B, 0x5C, 0x8F, 0x45,
-    0x7D, 0x7F, 0x7B, 0xD9, 0xF0, 0x5A, 0x97, 0xE5,
-    0x8D, 0xDA, 0x1D, 0x28, 0xDB, 0x9F, 0x34, 0xD1,
-    0xCE, 0x73, 0x25, 0x28, 0xF9, 0x68, 0xBE, 0xDD,
-    0x9E, 0x1C, 0xC9, 0x35, 0x2D, 0x0A, 0x5D, 0xF6,
-    0x67, 0x29, 0x28, 0xBD, 0xD3, 0xEA, 0x6F, 0x5C,
-    0xB0, 0x60, 0x77, 0xCF, 0x3A, 0xD3, 0xA7, 0x6E,
-    0x29, 0xB2, 0x2E, 0x82, 0xBA, 0xC6, 0x7B, 0x61
-  },
-  {
-    0x5B, 0x73, 0x91, 0xAA, 0x52, 0xF2, 0x76, 0xFA,
-    0xB9, 0xC1, 0x38, 0x77, 0xF1, 0x22, 0x32, 0x70,
-    0x84, 0x97, 0xFC, 0x02, 0x8F, 0xAA, 0x17, 0x32,
-    0xA5, 0xDB, 0x07, 0x9E, 0x7F, 0xE0, 0x73, 0xED,
-    0x0C, 0xC9, 0x52, 0x9C, 0xFC, 0x86, 0x3A, 0x4E,
-    0xCB, 0xA4, 0xDC, 0x2F, 0x1E, 0xA9, 0xF6, 0xBD,
-    0x69, 0x04, 0xF3, 0xA0, 0xC1, 0x07, 0x19, 0x3C,
-    0x5E, 0x71, 0x1C, 0xB9, 0x11, 0xF3, 0x80, 0x25
-  },
-  {
-    0x1D, 0x5A, 0xF7, 0x0F, 0x09, 0xA5, 0xFC, 0x69,
-    0x16, 0xEF, 0x59, 0xA3, 0x8A, 0x86, 0x92, 0x6D,
-    0xCA, 0xAE, 0x39, 0xA8, 0x95, 0x4D, 0x73, 0xFC,
-    0x80, 0xA3, 0x50, 0x75, 0x1A, 0xDD, 0xA3, 0x8C,
-    0x9D, 0x59, 0x75, 0x06, 0xDC, 0x05, 0xE1, 0xED,
-    0x37, 0xBD, 0x2D, 0xB1, 0x59, 0x0F, 0x99, 0xAA,
-    0x29, 0x6A, 0xEA, 0x13, 0xAB, 0x84, 0x43, 0xD5,
-    0xA9, 0x23, 0x47, 0xFB, 0x85, 0xFC, 0x81, 0x6D
-  },
-  {
-    0x80, 0xE3, 0x70, 0x92, 0x97, 0xD4, 0x41, 0x14,
-    0xB9, 0xFB, 0xDF, 0x55, 0x67, 0xF0, 0x5F, 0x33,
-    0x00, 0x94, 0xCF, 0x09, 0xF4, 0xC0, 0xEF, 0xCF,
-    0xAC, 0x05, 0x09, 0x5C, 0x36, 0x08, 0x10, 0x77,
-    0x30, 0xC1, 0xAA, 0x07, 0xFF, 0x23, 0x00, 0x25,
-    0x62, 0xC7, 0xE8, 0x41, 0xA9, 0xF5, 0x66, 0x24,
-    0xFF, 0xE2, 0xAB, 0xEC, 0x61, 0x1E, 0xB9, 0xE7,
-    0x3E, 0x1C, 0xCB, 0xD8, 0xF6, 0x2B, 0x11, 0x49
-  },
-  {
-    0xF9, 0x94, 0x5C, 0x19, 0x06, 0x77, 0x84, 0x61,
-    0x94, 0x13, 0x2B, 0x49, 0x6E, 0xC6, 0x01, 0x2C,
-    0x08, 0x75, 0x0E, 0x02, 0x5F, 0xD5, 0x52, 0xED,
-    0x32, 0x4D, 0x3A, 0x49, 0xD8, 0x63, 0x66, 0xC0,
-    0x3D, 0xCC, 0xDE, 0x8D, 0x5B, 0x5A, 0xC9, 0xA4,
-    0xBC, 0xB7, 0x19, 0x5E, 0x63, 0xBC, 0xAA, 0x93,
-    0x9E, 0x8E, 0xDA, 0x18, 0xF1, 0x16, 0x94, 0xB6,
-    0xFA, 0x69, 0x37, 0x39, 0x3B, 0xFF, 0xDB, 0xF4
-  },
-  {
-    0x8D, 0x8F, 0x2E, 0xD9, 0xAE, 0x39, 0x80, 0x9A,
-    0xAC, 0xAD, 0x2F, 0xCE, 0xDB, 0xD2, 0xDC, 0xA7,
-    0x30, 0xC7, 0x83, 0xE6, 0x2F, 0xF7, 0x0B, 0x8D,
-    0x3C, 0x53, 0x62, 0xF0, 0x73, 0xF8, 0x34, 0x67,
-    0x19, 0x7D, 0x37, 0x56, 0xB4, 0x45, 0x19, 0x5F,
-    0xE7, 0x52, 0x11, 0x73, 0x64, 0xD9, 0x2C, 0xF4,
-    0x2C, 0x02, 0x6E, 0x40, 0x9D, 0x5F, 0xF7, 0xA9,
-    0x53, 0x3E, 0xAB, 0x78, 0xF1, 0x75, 0x4A, 0x2D
-  },
-  {
-    0x3A, 0xC9, 0x9A, 0xC5, 0x3A, 0xC4, 0x9A, 0x56,
-    0xFA, 0xA1, 0x86, 0x46, 0xB8, 0xE0, 0x8A, 0x2D,
-    0x35, 0xBE, 0x80, 0xDF, 0x3E, 0xFB, 0xBB, 0xA6,
-    0xBD, 0xA4, 0xAE, 0x90, 0x2B, 0x8D, 0x3E, 0x17,
-    0x0A, 0x7B, 0xE8, 0x60, 0x5C, 0x34, 0xA4, 0xDC,
-    0x9A, 0x73, 0x62, 0xB1, 0xC2, 0x01, 0xD7, 0x02,
-    0x39, 0x1B, 0xD7, 0xD5, 0x20, 0x7F, 0x95, 0xFA,
-    0x39, 0x0C, 0xE3, 0x3C, 0x43, 0x14, 0xD4, 0x11
-  },
-  {
-    0xE4, 0x69, 0x4B, 0xDB, 0x31, 0x01, 0x6F, 0x25,
-    0x53, 0x2C, 0x04, 0x3C, 0x5C, 0x63, 0x08, 0xCC,
-    0x61, 0x9B, 0x0F, 0x87, 0x16, 0xF0, 0xC2, 0x9E,
-    0xEB, 0x9F, 0x34, 0x0F, 0x47, 0xB0, 0x7B, 0x4A,
-    0x4C, 0xE0, 0x98, 0x4C, 0x47, 0x24, 0xB1, 0x2A,
-    0xB3, 0xD3, 0x2A, 0xF5, 0x16, 0xAD, 0xA2, 0x64,
-    0x4C, 0xA6, 0x55, 0x8C, 0x1C, 0xB5, 0x81, 0x5C,
-    0x12, 0x12, 0xA9, 0xB5, 0xFA, 0x83, 0x44, 0x12
-  },
-  {
-    0xC6, 0x3C, 0x70, 0x3E, 0x62, 0x10, 0x8A, 0xA0,
-    0xED, 0xC6, 0x83, 0xF3, 0x67, 0x8A, 0x00, 0x78,
-    0x8F, 0xB1, 0x00, 0xC0, 0x96, 0x0B, 0x4E, 0x98,
-    0xB7, 0x6A, 0x48, 0xE4, 0xE5, 0x92, 0x3D, 0x34,
-    0x13, 0x44, 0x8D, 0xB8, 0x87, 0x5E, 0x3B, 0xCE,
-    0xA7, 0xB6, 0xB8, 0x5D, 0x9E, 0x3E, 0xEA, 0xB7,
-    0x2C, 0xD1, 0x50, 0x96, 0xFB, 0xBB, 0x2C, 0xC4,
-    0x27, 0x03, 0x17, 0xFC, 0x34, 0xD4, 0x04, 0x71
-  },
-  {
-    0x90, 0x80, 0xB7, 0xE8, 0x41, 0xEF, 0x51, 0x9C,
-    0x54, 0x17, 0xE6, 0x90, 0xAA, 0xF4, 0x32, 0x79,
-    0x07, 0xA8, 0x3D, 0xBC, 0xB7, 0x38, 0xD0, 0xF7,
-    0x30, 0x8B, 0x1D, 0x61, 0x1D, 0xEF, 0x16, 0x9A,
-    0x4F, 0x47, 0x42, 0x3E, 0x69, 0x0F, 0x27, 0xA7,
-    0xE2, 0x74, 0x1A, 0xE7, 0x86, 0x5D, 0xA2, 0x3C,
-    0x5D, 0x3F, 0x13, 0xC3, 0x16, 0x06, 0x3C, 0x7A,
-    0xA1, 0xA9, 0x58, 0xE5, 0xBE, 0x83, 0x8F, 0x04
-  },
-  {
-    0x29, 0x8D, 0xF6, 0x46, 0x91, 0x5F, 0x04, 0xD6,
-    0x65, 0xE9, 0x67, 0x5E, 0x6A, 0x10, 0x31, 0x87,
-    0x0D, 0x28, 0xEB, 0x7A, 0x04, 0x05, 0x66, 0x3E,
-    0xAC, 0x3B, 0x10, 0xD1, 0xB4, 0xFA, 0x2E, 0x86,
-    0x8E, 0x63, 0x73, 0xA5, 0x86, 0xCD, 0x73, 0xE0,
-    0x6D, 0x8E, 0x7A, 0xD7, 0x71, 0xB4, 0xFB, 0x0A,
-    0x8B, 0x4F, 0xC2, 0xDC, 0x6C, 0xE0, 0x9C, 0x64,
-    0x2E, 0xE8, 0x99, 0x26, 0xFD, 0xC6, 0x52, 0x60
-  },
-  {
-    0x4F, 0x2D, 0xE9, 0xC4, 0xF4, 0x34, 0x8B, 0xDB,
-    0x32, 0x3A, 0x66, 0x83, 0x72, 0xE7, 0x71, 0x42,
-    0x99, 0xC7, 0x76, 0xF9, 0x60, 0x2F, 0x3A, 0xF8,
-    0xFB, 0x77, 0x46, 0xF1, 0x76, 0x86, 0x8D, 0xF3,
-    0x54, 0x2B, 0x2F, 0xA6, 0x9E, 0xAE, 0x38, 0xB6,
-    0xA2, 0x6A, 0x06, 0xCA, 0x89, 0x42, 0xF8, 0x82,
-    0x78, 0xC6, 0x4E, 0x3D, 0x01, 0x7F, 0xEE, 0x67,
-    0xA9, 0x4E, 0xA0, 0x23, 0xB2, 0xB5, 0xBE, 0x5F
-  },
-  {
-    0x40, 0x18, 0xC5, 0xEE, 0x90, 0x93, 0xA6, 0x81,
-    0x11, 0x2F, 0x4C, 0xE1, 0x93, 0xA1, 0xD6, 0x5E,
-    0x05, 0x48, 0x72, 0x5F, 0x96, 0xAE, 0x31, 0x53,
-    0x87, 0xCD, 0x76, 0x5C, 0x2B, 0x9C, 0x30, 0x68,
-    0xAE, 0x4C, 0xBE, 0x5C, 0xD5, 0x40, 0x2C, 0x11,
-    0xC5, 0x5A, 0x9D, 0x78, 0x5F, 0xFD, 0xFC, 0x2B,
-    0xDE, 0x6E, 0x7A, 0xCF, 0x19, 0x61, 0x74, 0x75,
-    0xDA, 0xE0, 0xEB, 0x01, 0x44, 0x56, 0xCE, 0x45
-  },
-  {
-    0x6F, 0xCE, 0x66, 0x75, 0xE8, 0x6D, 0x7E, 0x85,
-    0x70, 0x4C, 0x96, 0xC2, 0x95, 0x70, 0x3C, 0xD9,
-    0x54, 0x98, 0x59, 0x0E, 0x50, 0x76, 0x4D, 0x23,
-    0xD7, 0xA7, 0xA3, 0xA3, 0x22, 0x68, 0xA0, 0xB3,
-    0xC9, 0x91, 0xE8, 0xF7, 0x84, 0x87, 0x69, 0x9A,
-    0x55, 0x4B, 0x58, 0x1E, 0x33, 0x9C, 0x09, 0xAE,
-    0xC9, 0x82, 0xE0, 0xBA, 0xA4, 0x31, 0x87, 0x93,
-    0x62, 0x06, 0x35, 0xE1, 0xE2, 0xC8, 0xD9, 0xF2
-  },
-  {
-    0xEB, 0xA9, 0x37, 0x85, 0x91, 0x97, 0xC7, 0xFD,
-    0x41, 0x2D, 0xBC, 0x9A, 0xFC, 0x0D, 0x67, 0xCC,
-    0x19, 0x81, 0x60, 0xB5, 0xA9, 0xCC, 0xEE, 0x87,
-    0xC4, 0x1A, 0x86, 0x64, 0x85, 0x9F, 0x3E, 0xFD,
-    0x96, 0x13, 0x66, 0xA8, 0x09, 0xC7, 0xC6, 0xBC,
-    0x6F, 0xA8, 0x44, 0x92, 0x68, 0x14, 0xE0, 0xB4,
-    0xEF, 0xA3, 0x7E, 0xDE, 0x2C, 0x88, 0x44, 0x26,
-    0x8D, 0x7F, 0x35, 0x56, 0xE4, 0x46, 0x58, 0x1D
-  },
-  {
-    0x83, 0xF4, 0x33, 0xE4, 0xF1, 0xC5, 0x07, 0x97,
-    0x49, 0x3C, 0x58, 0xC2, 0x64, 0xCF, 0xFA, 0x70,
-    0xC4, 0xA7, 0xA2, 0x4C, 0x33, 0x4D, 0xBA, 0xA3,
-    0xC5, 0x74, 0x89, 0xD9, 0x70, 0xD4, 0x9D, 0x69,
-    0x49, 0xFE, 0x45, 0xB7, 0x04, 0xF2, 0x65, 0xEF,
-    0xD2, 0xAE, 0xE1, 0xAC, 0x1B, 0x46, 0xF4, 0xAA,
-    0x3E, 0x4F, 0xAD, 0x68, 0xB3, 0x79, 0x61, 0xD2,
-    0xC7, 0x28, 0x0A, 0xE1, 0x96, 0x72, 0xC8, 0x50
-  },
-  {
-    0xB5, 0x57, 0xEC, 0xE1, 0x22, 0x72, 0x49, 0x3D,
-    0xC2, 0x7E, 0x88, 0xA0, 0x5A, 0xDC, 0xD8, 0x61,
-    0x87, 0x5A, 0x0C, 0xD0, 0x0B, 0xD6, 0x8A, 0xDC,
-    0x3A, 0x30, 0x1D, 0x26, 0x3A, 0x9C, 0xD9, 0x93,
-    0xA9, 0x6A, 0xE1, 0x4C, 0xFC, 0xDD, 0xCB, 0x99,
-    0x7C, 0xC9, 0x86, 0x23, 0x93, 0x50, 0x50, 0xEA,
-    0x43, 0x55, 0x2A, 0x34, 0x11, 0x07, 0x18, 0x7D,
-    0xE7, 0x5C, 0x4E, 0xDE, 0xD7, 0xC7, 0x86, 0xBD
-  },
-  {
-    0x95, 0x89, 0xC0, 0x81, 0x3B, 0x73, 0x93, 0xDB,
-    0xAA, 0xAF, 0xE4, 0x7A, 0xF5, 0xB4, 0x08, 0xB2,
-    0x3C, 0x8A, 0x8C, 0x8B, 0xAC, 0x62, 0x55, 0x4B,
-    0x8F, 0xA1, 0x32, 0xA3, 0x58, 0xCE, 0x30, 0x83,
-    0xB1, 0xD4, 0xE3, 0x97, 0x07, 0xCD, 0x54, 0xA5,
-    0x5F, 0x67, 0x3D, 0x48, 0x11, 0x6E, 0xB1, 0xF9,
-    0xED, 0x8D, 0xE9, 0xC9, 0x43, 0xCD, 0x2D, 0xE4,
-    0x60, 0xA6, 0x8B, 0xDD, 0xF7, 0x1E, 0x98, 0x03
-  },
-  {
-    0xAE, 0x4C, 0xCF, 0x27, 0xAB, 0x00, 0xA4, 0x0C,
-    0x36, 0x37, 0xD3, 0xD2, 0xCE, 0x51, 0xA8, 0x3E,
-    0xFB, 0xA6, 0x2D, 0x4A, 0x6F, 0xDA, 0xD6, 0x95,
-    0x06, 0x3F, 0xBC, 0x60, 0xA2, 0xD8, 0x2E, 0xC5,
-    0xA5, 0x4A, 0xCB, 0xE0, 0x9B, 0xA9, 0x38, 0x8F,
-    0x49, 0xAA, 0xC2, 0x7C, 0x99, 0x2D, 0x84, 0x63,
-    0x20, 0x36, 0xE1, 0xBD, 0xD4, 0xC5, 0x29, 0xBB,
-    0xF1, 0x85, 0x1E, 0xAE, 0x0C, 0x6E, 0xA9, 0x02
-  },
-  {
-    0xA3, 0x94, 0x4B, 0x2C, 0x31, 0xCB, 0x49, 0x40,
-    0x80, 0xB7, 0xEE, 0x1D, 0xB0, 0x81, 0x68, 0x53,
-    0xE4, 0x25, 0xB5, 0x4C, 0x48, 0xD6, 0x31, 0x44,
-    0x7E, 0xA5, 0x2C, 0x1D, 0x29, 0x52, 0x07, 0x9B,
-    0xD8, 0x8F, 0xAB, 0x9E, 0xD0, 0xB7, 0xD8, 0xC0,
-    0xBA, 0xAF, 0x0C, 0x4E, 0xCA, 0x19, 0x10, 0xDB,
-    0x6F, 0x98, 0x53, 0x4F, 0x0D, 0x42, 0xE5, 0xEB,
-    0xB6, 0xC0, 0xA7, 0x5E, 0xF0, 0xD8, 0xB2, 0xC0
-  },
-  {
-    0xCF, 0xA1, 0xA2, 0x24, 0x68, 0x5A, 0x5F, 0xB2,
-    0x01, 0x04, 0x58, 0x20, 0x1C, 0xEB, 0x0C, 0xDA,
-    0x21, 0xC8, 0x2B, 0x16, 0x02, 0xDC, 0x41, 0x35,
-    0x85, 0xFB, 0xCE, 0x80, 0x97, 0x6F, 0x06, 0x1C,
-    0x23, 0x5B, 0x13, 0x67, 0x71, 0x24, 0x98, 0x14,
-    0x4A, 0xC1, 0x6A, 0x98, 0x54, 0xF6, 0xFB, 0x32,
-    0x3C, 0xBE, 0xB6, 0x23, 0x69, 0xCF, 0x9B, 0x75,
-    0x2B, 0x92, 0x52, 0xA2, 0xA7, 0xAC, 0xE1, 0xFD
-  },
-  {
-    0xFA, 0x62, 0xC6, 0xCF, 0xC8, 0xF0, 0x79, 0xE5,
-    0x8F, 0x3D, 0x3F, 0xEF, 0xD7, 0xC2, 0x24, 0xE7,
-    0x1E, 0xBC, 0x69, 0xA9, 0x5B, 0x18, 0x35, 0xCC,
-    0xC3, 0x2F, 0x35, 0x07, 0x77, 0x05, 0x11, 0x02,
-    0x61, 0x54, 0x92, 0xD6, 0x7F, 0xB6, 0xDE, 0x62,
-    0xCF, 0x2A, 0xD5, 0xB1, 0x84, 0x67, 0xFE, 0x87,
-    0x15, 0x74, 0x88, 0x82, 0xDB, 0x89, 0xFF, 0x86,
-    0xEF, 0xDF, 0x2F, 0x96, 0xF8, 0x13, 0x5E, 0xD2
-  },
-  {
-    0xCC, 0x63, 0x3F, 0xD4, 0xEA, 0x6A, 0xC4, 0x08,
-    0xC3, 0x87, 0x57, 0x56, 0xB9, 0x01, 0x28, 0x8A,
-    0x1D, 0xE1, 0x91, 0x89, 0x28, 0x32, 0xBE, 0x2E,
-    0x90, 0x26, 0xDC, 0x65, 0xC2, 0xFF, 0x00, 0x00,
-    0x9F, 0x14, 0x36, 0xDD, 0xFF, 0x42, 0x06, 0x26,
-    0x0A, 0x3D, 0x66, 0xEF, 0x61, 0x92, 0x14, 0x3E,
-    0x57, 0x2F, 0x1E, 0x4B, 0xB8, 0xE5, 0xA7, 0x4B,
-    0x12, 0x05, 0x5E, 0x42, 0x41, 0x1C, 0x18, 0xBC
-  },
-  {
-    0x44, 0xD2, 0xBF, 0x7F, 0x36, 0x96, 0xB8, 0x93,
-    0x3F, 0x25, 0x5B, 0x9B, 0xE1, 0xA4, 0xA6, 0xAE,
-    0x33, 0x16, 0xC2, 0x5D, 0x03, 0x95, 0xF5, 0x90,
-    0xB9, 0xB9, 0x89, 0x8F, 0x12, 0x7E, 0x40, 0xD3,
-    0xF4, 0x12, 0x4D, 0x7B, 0xDB, 0xC8, 0x72, 0x5F,
-    0x00, 0xB0, 0xD2, 0x81, 0x50, 0xFF, 0x05, 0xB4,
-    0xA7, 0x9E, 0x5E, 0x04, 0xE3, 0x4A, 0x47, 0xE9,
-    0x08, 0x7B, 0x3F, 0x79, 0xD4, 0x13, 0xAB, 0x7F
-  },
-  {
-    0x96, 0xFB, 0xCB, 0xB6, 0x0B, 0xD3, 0x13, 0xB8,
-    0x84, 0x50, 0x33, 0xE5, 0xBC, 0x05, 0x8A, 0x38,
-    0x02, 0x74, 0x38, 0x57, 0x2D, 0x7E, 0x79, 0x57,
-    0xF3, 0x68, 0x4F, 0x62, 0x68, 0xAA, 0xDD, 0x3A,
-    0xD0, 0x8D, 0x21, 0x76, 0x7E, 0xD6, 0x87, 0x86,
-    0x85, 0x33, 0x1B, 0xA9, 0x85, 0x71, 0x48, 0x7E,
-    0x12, 0x47, 0x0A, 0xAD, 0x66, 0x93, 0x26, 0x71,
-    0x6E, 0x46, 0x66, 0x7F, 0x69, 0xF8, 0xD7, 0xE8
-  },
-};
-
-
-
-
-#endif
-
-
-
diff --git a/cbits/blake2/ref/blake2.h b/cbits/blake2/ref/blake2.h
--- a/cbits/blake2/ref/blake2.h
+++ b/cbits/blake2/ref/blake2.h
@@ -1,22 +1,29 @@
 /*
    BLAKE2 reference source code package - reference C implementations
 
-   Written in 2012 by Samuel Neves <sneves@dei.uc.pt>
+   Copyright 2012, Samuel Neves <sneves@dei.uc.pt>.  You may use this under the
+   terms of the CC0, the OpenSSL Licence, or the Apache Public License 2.0, at
+   your option.  The terms of these licenses can be found at:
 
-   To the extent possible under law, the author(s) have dedicated all copyright
-   and related and neighboring rights to this software to the public domain
-   worldwide. This software is distributed without any warranty.
+   - CC0 1.0 Universal : http://creativecommons.org/publicdomain/zero/1.0
+   - OpenSSL license   : https://www.openssl.org/source/license.html
+   - Apache 2.0        : http://www.apache.org/licenses/LICENSE-2.0
 
-   You should have received a copy of the CC0 Public Domain Dedication along with
-   this software. If not, see <http://creativecommons.org/publicdomain/zero/1.0/>.
+   More information about the BLAKE2 hash function can be found at
+   https://blake2.net.
 */
-#pragma once
-#ifndef __BLAKE2_H__
-#define __BLAKE2_H__
+#ifndef BLAKE2_H
+#define BLAKE2_H
 
 #include <stddef.h>
 #include <stdint.h>
 
+#if defined(_MSC_VER)
+#define BLAKE2_PACKED(x) __pragma(pack(push, 1)) x __pragma(pack(pop))
+#else
+#define BLAKE2_PACKED(x) x __attribute__((packed))
+#endif
+
 #if defined(__cplusplus)
 extern "C" {
 #endif
@@ -39,112 +46,150 @@
     BLAKE2B_PERSONALBYTES = 16
   };
 
-#pragma pack(push, 1)
-  typedef struct __blake2s_param
-  {
-    uint8_t  digest_length; // 1
-    uint8_t  key_length;    // 2
-    uint8_t  fanout;        // 3
-    uint8_t  depth;         // 4
-    uint32_t leaf_length;   // 8
-    uint8_t  node_offset[6];// 14
-    uint8_t  node_depth;    // 15
-    uint8_t  inner_length;  // 16
-    // uint8_t  reserved[0];
-    uint8_t  salt[BLAKE2S_SALTBYTES]; // 24
-    uint8_t  personal[BLAKE2S_PERSONALBYTES];  // 32
-  } blake2s_param;
-
-  typedef struct __blake2s_state
+  typedef struct blake2s_state__
   {
     uint32_t h[8];
     uint32_t t[2];
     uint32_t f[2];
-    uint8_t  buf[2 * BLAKE2S_BLOCKBYTES];
+    uint8_t  buf[BLAKE2S_BLOCKBYTES];
     size_t   buflen;
+    size_t   outlen;
     uint8_t  last_node;
   } blake2s_state;
 
-  typedef struct __blake2b_param
-  {
-    uint8_t  digest_length; // 1
-    uint8_t  key_length;    // 2
-    uint8_t  fanout;        // 3
-    uint8_t  depth;         // 4
-    uint32_t leaf_length;   // 8
-    uint64_t node_offset;   // 16
-    uint8_t  node_depth;    // 17
-    uint8_t  inner_length;  // 18
-    uint8_t  reserved[14];  // 32
-    uint8_t  salt[BLAKE2B_SALTBYTES]; // 48
-    uint8_t  personal[BLAKE2B_PERSONALBYTES];  // 64
-  } blake2b_param;
-
-  typedef struct __blake2b_state
+  typedef struct blake2b_state__
   {
     uint64_t h[8];
     uint64_t t[2];
     uint64_t f[2];
-    uint8_t  buf[2 * BLAKE2B_BLOCKBYTES];
+    uint8_t  buf[BLAKE2B_BLOCKBYTES];
     size_t   buflen;
+    size_t   outlen;
     uint8_t  last_node;
   } blake2b_state;
 
-  typedef struct __blake2sp_state
+  typedef struct blake2sp_state__
   {
     blake2s_state S[8][1];
     blake2s_state R[1];
-    uint8_t buf[8 * BLAKE2S_BLOCKBYTES];
-    size_t  buflen;
+    uint8_t       buf[8 * BLAKE2S_BLOCKBYTES];
+    size_t        buflen;
+    size_t        outlen;
   } blake2sp_state;
 
-  typedef struct __blake2bp_state
+  typedef struct blake2bp_state__
   {
     blake2b_state S[4][1];
     blake2b_state R[1];
-    uint8_t buf[4 * BLAKE2B_BLOCKBYTES];
-    size_t  buflen;
+    uint8_t       buf[4 * BLAKE2B_BLOCKBYTES];
+    size_t        buflen;
+    size_t        outlen;
   } blake2bp_state;
-#pragma pack(pop)
 
-  // Streaming API
-  int blake2s_init( blake2s_state *S, const uint8_t outlen );
-  int blake2s_init_key( blake2s_state *S, const uint8_t outlen, const void *key, const uint8_t keylen );
+
+  BLAKE2_PACKED(struct blake2s_param__
+  {
+    uint8_t  digest_length; /* 1 */
+    uint8_t  key_length;    /* 2 */
+    uint8_t  fanout;        /* 3 */
+    uint8_t  depth;         /* 4 */
+    uint32_t leaf_length;   /* 8 */
+    uint32_t node_offset;  /* 12 */
+    uint16_t xof_length;    /* 14 */
+    uint8_t  node_depth;    /* 15 */
+    uint8_t  inner_length;  /* 16 */
+    /* uint8_t  reserved[0]; */
+    uint8_t  salt[BLAKE2S_SALTBYTES]; /* 24 */
+    uint8_t  personal[BLAKE2S_PERSONALBYTES];  /* 32 */
+  });
+
+  typedef struct blake2s_param__ blake2s_param;
+
+  BLAKE2_PACKED(struct blake2b_param__
+  {
+    uint8_t  digest_length; /* 1 */
+    uint8_t  key_length;    /* 2 */
+    uint8_t  fanout;        /* 3 */
+    uint8_t  depth;         /* 4 */
+    uint32_t leaf_length;   /* 8 */
+    uint32_t node_offset;   /* 12 */
+    uint32_t xof_length;    /* 16 */
+    uint8_t  node_depth;    /* 17 */
+    uint8_t  inner_length;  /* 18 */
+    uint8_t  reserved[14];  /* 32 */
+    uint8_t  salt[BLAKE2B_SALTBYTES]; /* 48 */
+    uint8_t  personal[BLAKE2B_PERSONALBYTES];  /* 64 */
+  });
+
+  typedef struct blake2b_param__ blake2b_param;
+
+  typedef struct blake2xs_state__
+  {
+    blake2s_state S[1];
+    blake2s_param P[1];
+  } blake2xs_state;
+
+  typedef struct blake2xb_state__
+  {
+    blake2b_state S[1];
+    blake2b_param P[1];
+  } blake2xb_state;
+
+  /* Padded structs result in a compile-time error */
+  enum {
+    BLAKE2_DUMMY_1 = 1/(sizeof(blake2s_param) == BLAKE2S_OUTBYTES),
+    BLAKE2_DUMMY_2 = 1/(sizeof(blake2b_param) == BLAKE2B_OUTBYTES)
+  };
+
+  /* Streaming API */
+  int blake2s_init( blake2s_state *S, size_t outlen );
+  int blake2s_init_key( blake2s_state *S, size_t outlen, const void *key, size_t keylen );
   int blake2s_init_param( blake2s_state *S, const blake2s_param *P );
-  int blake2s_update( blake2s_state *S, const uint8_t *in, uint64_t inlen );
-  int blake2s_final( blake2s_state *S, uint8_t *out, uint8_t outlen );
+  int blake2s_update( blake2s_state *S, const void *in, size_t inlen );
+  int blake2s_final( blake2s_state *S, void *out, size_t outlen );
 
-  int blake2b_init( blake2b_state *S, const uint8_t outlen );
-  int blake2b_init_key( blake2b_state *S, const uint8_t outlen, const void *key, const uint8_t keylen );
+  int blake2b_init( blake2b_state *S, size_t outlen );
+  int blake2b_init_key( blake2b_state *S, size_t outlen, const void *key, size_t keylen );
   int blake2b_init_param( blake2b_state *S, const blake2b_param *P );
-  int blake2b_update( blake2b_state *S, const uint8_t *in, uint64_t inlen );
-  int blake2b_final( blake2b_state *S, uint8_t *out, uint8_t outlen );
+  int blake2b_update( blake2b_state *S, const void *in, size_t inlen );
+  int blake2b_final( blake2b_state *S, void *out, size_t outlen );
 
-  int blake2sp_init( blake2sp_state *S, const uint8_t outlen );
-  int blake2sp_init_key( blake2sp_state *S, const uint8_t outlen, const void *key, const uint8_t keylen );
-  int blake2sp_update( blake2sp_state *S, const uint8_t *in, uint64_t inlen );
-  int blake2sp_final( blake2sp_state *S, uint8_t *out, uint8_t outlen );
+  int blake2sp_init( blake2sp_state *S, size_t outlen );
+  int blake2sp_init_key( blake2sp_state *S, size_t outlen, const void *key, size_t keylen );
+  int blake2sp_update( blake2sp_state *S, const void *in, size_t inlen );
+  int blake2sp_final( blake2sp_state *S, void *out, size_t outlen );
 
-  int blake2bp_init( blake2bp_state *S, const uint8_t outlen );
-  int blake2bp_init_key( blake2bp_state *S, const uint8_t outlen, const void *key, const uint8_t keylen );
-  int blake2bp_update( blake2bp_state *S, const uint8_t *in, uint64_t inlen );
-  int blake2bp_final( blake2bp_state *S, uint8_t *out, uint8_t outlen );
+  int blake2bp_init( blake2bp_state *S, size_t outlen );
+  int blake2bp_init_key( blake2bp_state *S, size_t outlen, const void *key, size_t keylen );
+  int blake2bp_update( blake2bp_state *S, const void *in, size_t inlen );
+  int blake2bp_final( blake2bp_state *S, void *out, size_t outlen );
 
-  // Simple API
-  int blake2s( uint8_t *out, const void *in, const void *key, const uint8_t outlen, const uint64_t inlen, uint8_t keylen );
-  int blake2b( uint8_t *out, const void *in, const void *key, const uint8_t outlen, const uint64_t inlen, uint8_t keylen );
+  /* Variable output length API */
+  int blake2xs_init( blake2xs_state *S, const size_t outlen );
+  int blake2xs_init_key( blake2xs_state *S, const size_t outlen, const void *key, size_t keylen );
+  int blake2xs_update( blake2xs_state *S, const void *in, size_t inlen );
+  int blake2xs_final(blake2xs_state *S, void *out, size_t outlen);
 
-  int blake2sp( uint8_t *out, const void *in, const void *key, const uint8_t outlen, const uint64_t inlen, uint8_t keylen );
-  int blake2bp( uint8_t *out, const void *in, const void *key, const uint8_t outlen, const uint64_t inlen, uint8_t keylen );
+  int blake2xb_init( blake2xb_state *S, const size_t outlen );
+  int blake2xb_init_key( blake2xb_state *S, const size_t outlen, const void *key, size_t keylen );
+  int blake2xb_update( blake2xb_state *S, const void *in, size_t inlen );
+  int blake2xb_final(blake2xb_state *S, void *out, size_t outlen);
 
-  static inline int blake2( uint8_t *out, const void *in, const void *key, const uint8_t outlen, const uint64_t inlen, uint8_t keylen )
-  {
-    return blake2b( out, in, key, outlen, inlen, keylen );
-  }
+  /* Simple API */
+  int blake2s( void *out, size_t outlen, const void *in, size_t inlen, const void *key, size_t keylen );
+  int blake2b( void *out, size_t outlen, const void *in, size_t inlen, const void *key, size_t keylen );
 
+  int blake2sp( void *out, size_t outlen, const void *in, size_t inlen, const void *key, size_t keylen );
+  int blake2bp( void *out, size_t outlen, const void *in, size_t inlen, const void *key, size_t keylen );
+
+  int blake2xs( void *out, size_t outlen, const void *in, size_t inlen, const void *key, size_t keylen );
+  int blake2xb( void *out, size_t outlen, const void *in, size_t inlen, const void *key, size_t keylen );
+
+  /* This is simply an alias for blake2b */
+  int blake2( void *out, size_t outlen, const void *in, size_t inlen, const void *key, size_t keylen );
+
 #if defined(__cplusplus)
 }
 #endif
 
 #endif
-
diff --git a/cbits/blake2/ref/blake2b-ref.c b/cbits/blake2/ref/blake2b-ref.c
--- a/cbits/blake2/ref/blake2b-ref.c
+++ b/cbits/blake2/ref/blake2b-ref.c
@@ -1,14 +1,16 @@
 /*
    BLAKE2 reference source code package - reference C implementations
 
-   Written in 2012 by Samuel Neves <sneves@dei.uc.pt>
+   Copyright 2012, Samuel Neves <sneves@dei.uc.pt>.  You may use this under the
+   terms of the CC0, the OpenSSL Licence, or the Apache Public License 2.0, at
+   your option.  The terms of these licenses can be found at:
 
-   To the extent possible under law, the author(s) have dedicated all copyright
-   and related and neighboring rights to this software to the public domain
-   worldwide. This software is distributed without any warranty.
+   - CC0 1.0 Universal : http://creativecommons.org/publicdomain/zero/1.0
+   - OpenSSL license   : https://www.openssl.org/source/license.html
+   - Apache 2.0        : http://www.apache.org/licenses/LICENSE-2.0
 
-   You should have received a copy of the CC0 Public Domain Dedication along with
-   this software. If not, see <http://creativecommons.org/publicdomain/zero/1.0/>.
+   More information about the BLAKE2 hash function can be found at
+   https://blake2.net.
 */
 
 #include <stdint.h>
@@ -43,135 +45,69 @@
 };
 
 
-static inline int blake2b_set_lastnode( blake2b_state *S )
-{
-  S->f[1] = -1;
-  return 0;
-}
-
-static inline int blake2b_clear_lastnode( blake2b_state *S )
+static void blake2b_set_lastnode( blake2b_state *S )
 {
-  S->f[1] = 0;
-  return 0;
+  S->f[1] = (uint64_t)-1;
 }
 
 /* Some helper functions, not necessarily useful */
-static inline int blake2b_set_lastblock( blake2b_state *S )
+static int blake2b_is_lastblock( const blake2b_state *S )
 {
-  if( S->last_node ) blake2b_set_lastnode( S );
-
-  S->f[0] = -1;
-  return 0;
+  return S->f[0] != 0;
 }
 
-static inline int blake2b_clear_lastblock( blake2b_state *S )
+static void blake2b_set_lastblock( blake2b_state *S )
 {
-  if( S->last_node ) blake2b_clear_lastnode( S );
+  if( S->last_node ) blake2b_set_lastnode( S );
 
-  S->f[0] = 0;
-  return 0;
+  S->f[0] = (uint64_t)-1;
 }
 
-static inline int blake2b_increment_counter( blake2b_state *S, const uint64_t inc )
+static void blake2b_increment_counter( blake2b_state *S, const uint64_t inc )
 {
   S->t[0] += inc;
   S->t[1] += ( S->t[0] < inc );
-  return 0;
 }
 
-
-
-// Parameter-related functions
-static inline int blake2b_param_set_digest_length( blake2b_param *P, const uint8_t digest_length )
-{
-  P->digest_length = digest_length;
-  return 0;
-}
-
-static inline int blake2b_param_set_fanout( blake2b_param *P, const uint8_t fanout )
-{
-  P->fanout = fanout;
-  return 0;
-}
-
-static inline int blake2b_param_set_max_depth( blake2b_param *P, const uint8_t depth )
-{
-  P->depth = depth;
-  return 0;
-}
-
-static inline int blake2b_param_set_leaf_length( blake2b_param *P, const uint32_t leaf_length )
-{
-  store32( &P->leaf_length, leaf_length );
-  return 0;
-}
-
-static inline int blake2b_param_set_node_offset( blake2b_param *P, const uint64_t node_offset )
-{
-  store64( &P->node_offset, node_offset );
-  return 0;
-}
-
-static inline int blake2b_param_set_node_depth( blake2b_param *P, const uint8_t node_depth )
-{
-  P->node_depth = node_depth;
-  return 0;
-}
-
-static inline int blake2b_param_set_inner_length( blake2b_param *P, const uint8_t inner_length )
-{
-  P->inner_length = inner_length;
-  return 0;
-}
-
-static inline int blake2b_param_set_salt( blake2b_param *P, const uint8_t salt[BLAKE2B_SALTBYTES] )
-{
-  memcpy( P->salt, salt, BLAKE2B_SALTBYTES );
-  return 0;
-}
-
-static inline int blake2b_param_set_personal( blake2b_param *P, const uint8_t personal[BLAKE2B_PERSONALBYTES] )
-{
-  memcpy( P->personal, personal, BLAKE2B_PERSONALBYTES );
-  return 0;
-}
-
-static inline int blake2b_init0( blake2b_state *S )
+static void blake2b_init0( blake2b_state *S )
 {
+  size_t i;
   memset( S, 0, sizeof( blake2b_state ) );
 
-  for( int i = 0; i < 8; ++i ) S->h[i] = blake2b_IV[i];
-
-  return 0;
+  for( i = 0; i < 8; ++i ) S->h[i] = blake2b_IV[i];
 }
 
 /* init xors IV with input parameter block */
 int blake2b_init_param( blake2b_state *S, const blake2b_param *P )
 {
-  blake2b_init0( S );
   const uint8_t *p = ( const uint8_t * )( P );
+  size_t i;
 
+  blake2b_init0( S );
+
   /* IV XOR ParamBlock */
-  for( size_t i = 0; i < 8; ++i )
+  for( i = 0; i < 8; ++i )
     S->h[i] ^= load64( p + sizeof( S->h[i] ) * i );
 
+  S->outlen = P->digest_length;
   return 0;
 }
 
 
 
-int blake2b_init( blake2b_state *S, const uint8_t outlen )
+int blake2b_init( blake2b_state *S, size_t outlen )
 {
   blake2b_param P[1];
 
   if ( ( !outlen ) || ( outlen > BLAKE2B_OUTBYTES ) ) return -1;
 
-  P->digest_length = outlen;
+  P->digest_length = (uint8_t)outlen;
   P->key_length    = 0;
   P->fanout        = 1;
   P->depth         = 1;
   store32( &P->leaf_length, 0 );
-  store64( &P->node_offset, 0 );
+  store32( &P->node_offset, 0 );
+  store32( &P->xof_length, 0 );
   P->node_depth    = 0;
   P->inner_length  = 0;
   memset( P->reserved, 0, sizeof( P->reserved ) );
@@ -181,7 +117,7 @@
 }
 
 
-int blake2b_init_key( blake2b_state *S, const uint8_t outlen, const void *key, const uint8_t keylen )
+int blake2b_init_key( blake2b_state *S, size_t outlen, const void *key, size_t keylen )
 {
   blake2b_param P[1];
 
@@ -189,12 +125,13 @@
 
   if ( !key || !keylen || keylen > BLAKE2B_KEYBYTES ) return -1;
 
-  P->digest_length = outlen;
-  P->key_length    = keylen;
+  P->digest_length = (uint8_t)outlen;
+  P->key_length    = (uint8_t)keylen;
   P->fanout        = 1;
   P->depth         = 1;
   store32( &P->leaf_length, 0 );
-  store64( &P->node_offset, 0 );
+  store32( &P->node_offset, 0 );
+  store32( &P->xof_length, 0 );
   P->node_depth    = 0;
   P->inner_length  = 0;
   memset( P->reserved, 0, sizeof( P->reserved ) );
@@ -213,39 +150,20 @@
   return 0;
 }
 
-static int blake2b_compress( blake2b_state *S, const uint8_t block[BLAKE2B_BLOCKBYTES] )
-{
-  uint64_t m[16];
-  uint64_t v[16];
-  int i;
-
-  for( i = 0; i < 16; ++i )
-    m[i] = load64( block + i * sizeof( m[i] ) );
-
-  for( i = 0; i < 8; ++i )
-    v[i] = S->h[i];
-
-  v[ 8] = blake2b_IV[0];
-  v[ 9] = blake2b_IV[1];
-  v[10] = blake2b_IV[2];
-  v[11] = blake2b_IV[3];
-  v[12] = S->t[0] ^ blake2b_IV[4];
-  v[13] = S->t[1] ^ blake2b_IV[5];
-  v[14] = S->f[0] ^ blake2b_IV[6];
-  v[15] = S->f[1] ^ blake2b_IV[7];
-#define G(r,i,a,b,c,d) \
-  do { \
+#define G(r,i,a,b,c,d)                      \
+  do {                                      \
     a = a + b + m[blake2b_sigma[r][2*i+0]]; \
-    d = rotr64(d ^ a, 32); \
-    c = c + d; \
-    b = rotr64(b ^ c, 24); \
+    d = rotr64(d ^ a, 32);                  \
+    c = c + d;                              \
+    b = rotr64(b ^ c, 24);                  \
     a = a + b + m[blake2b_sigma[r][2*i+1]]; \
-    d = rotr64(d ^ a, 16); \
-    c = c + d; \
-    b = rotr64(b ^ c, 63); \
+    d = rotr64(d ^ a, 16);                  \
+    c = c + d;                              \
+    b = rotr64(b ^ c, 63);                  \
   } while(0)
-#define ROUND(r)  \
-  do { \
+
+#define ROUND(r)                    \
+  do {                              \
     G(r,0,v[ 0],v[ 4],v[ 8],v[12]); \
     G(r,1,v[ 1],v[ 5],v[ 9],v[13]); \
     G(r,2,v[ 2],v[ 6],v[10],v[14]); \
@@ -255,6 +173,30 @@
     G(r,6,v[ 2],v[ 7],v[ 8],v[13]); \
     G(r,7,v[ 3],v[ 4],v[ 9],v[14]); \
   } while(0)
+
+static void blake2b_compress( blake2b_state *S, const uint8_t block[BLAKE2B_BLOCKBYTES] )
+{
+  uint64_t m[16];
+  uint64_t v[16];
+  size_t i;
+
+  for( i = 0; i < 16; ++i ) {
+    m[i] = load64( block + i * sizeof( m[i] ) );
+  }
+
+  for( i = 0; i < 8; ++i ) {
+    v[i] = S->h[i];
+  }
+
+  v[ 8] = blake2b_IV[0];
+  v[ 9] = blake2b_IV[1];
+  v[10] = blake2b_IV[2];
+  v[11] = blake2b_IV[3];
+  v[12] = blake2b_IV[4] ^ S->t[0];
+  v[13] = blake2b_IV[5] ^ S->t[1];
+  v[14] = blake2b_IV[6] ^ S->f[0];
+  v[15] = blake2b_IV[7] ^ S->f[1];
+
   ROUND( 0 );
   ROUND( 1 );
   ROUND( 2 );
@@ -268,75 +210,67 @@
   ROUND( 10 );
   ROUND( 11 );
 
-  for( i = 0; i < 8; ++i )
+  for( i = 0; i < 8; ++i ) {
     S->h[i] = S->h[i] ^ v[i] ^ v[i + 8];
+  }
+}
 
 #undef G
 #undef ROUND
-  return 0;
-}
 
-/* inlen now in bytes */
-int blake2b_update( blake2b_state *S, const uint8_t *in, uint64_t inlen )
+int blake2b_update( blake2b_state *S, const void *pin, size_t inlen )
 {
-  while( inlen > 0 )
+  const unsigned char * in = (const unsigned char *)pin;
+  if( inlen > 0 )
   {
     size_t left = S->buflen;
-    size_t fill = 2 * BLAKE2B_BLOCKBYTES - left;
-
+    size_t fill = BLAKE2B_BLOCKBYTES - left;
     if( inlen > fill )
     {
-      memcpy( S->buf + left, in, fill ); // Fill buffer
-      S->buflen += fill;
+      S->buflen = 0;
+      memcpy( S->buf + left, in, fill ); /* Fill buffer */
       blake2b_increment_counter( S, BLAKE2B_BLOCKBYTES );
-      blake2b_compress( S, S->buf ); // Compress
-      memcpy( S->buf, S->buf + BLAKE2B_BLOCKBYTES, BLAKE2B_BLOCKBYTES ); // Shift buffer left
-      S->buflen -= BLAKE2B_BLOCKBYTES;
-      in += fill;
-      inlen -= fill;
-    }
-    else // inlen <= fill
-    {
-      memcpy( S->buf + left, in, inlen );
-      S->buflen += inlen; // Be lazy, do not compress
-      in += inlen;
-      inlen -= inlen;
+      blake2b_compress( S, S->buf ); /* Compress */
+      in += fill; inlen -= fill;
+      while(inlen > BLAKE2B_BLOCKBYTES) {
+        blake2b_increment_counter(S, BLAKE2B_BLOCKBYTES);
+        blake2b_compress( S, in );
+        in += BLAKE2B_BLOCKBYTES;
+        inlen -= BLAKE2B_BLOCKBYTES;
+      }
     }
+    memcpy( S->buf + S->buflen, in, inlen );
+    S->buflen += inlen;
   }
-
   return 0;
 }
 
-/* Is this correct? */
-int blake2b_final( blake2b_state *S, uint8_t *out, uint8_t outlen )
+int blake2b_final( blake2b_state *S, void *out, size_t outlen )
 {
   uint8_t buffer[BLAKE2B_OUTBYTES] = {0};
+  size_t i;
 
-  if( outlen > BLAKE2B_OUTBYTES )
+  if( out == NULL || outlen < S->outlen )
     return -1;
 
-  if( S->buflen > BLAKE2B_BLOCKBYTES )
-  {
-    blake2b_increment_counter( S, BLAKE2B_BLOCKBYTES );
-    blake2b_compress( S, S->buf );
-    S->buflen -= BLAKE2B_BLOCKBYTES;
-    memcpy( S->buf, S->buf + BLAKE2B_BLOCKBYTES, S->buflen );
-  }
+  if( blake2b_is_lastblock( S ) )
+    return -1;
 
   blake2b_increment_counter( S, S->buflen );
   blake2b_set_lastblock( S );
-  memset( S->buf + S->buflen, 0, 2 * BLAKE2B_BLOCKBYTES - S->buflen ); /* Padding */
+  memset( S->buf + S->buflen, 0, BLAKE2B_BLOCKBYTES - S->buflen ); /* Padding */
   blake2b_compress( S, S->buf );
 
-  for( int i = 0; i < 8; ++i ) /* Output full hash to temp buffer */
+  for( i = 0; i < 8; ++i ) /* Output full hash to temp buffer */
     store64( buffer + sizeof( S->h[i] ) * i, S->h[i] );
 
-  memcpy( out, buffer, outlen );
+  memcpy( out, buffer, S->outlen );
+  secure_zero_memory(buffer, sizeof(buffer));
   return 0;
 }
 
 /* inlen, at least, should be uint64_t. Others can be size_t. */
-int blake2b( uint8_t *out, const void *in, const void *key, const uint8_t outlen, const uint64_t inlen, uint8_t keylen )
+int blake2b( void *out, size_t outlen, const void *in, size_t inlen, const void *key, size_t keylen )
 {
   blake2b_state S[1];
 
@@ -365,41 +299,81 @@
   return 0;
 }
 
+int blake2( void *out, size_t outlen, const void *in, size_t inlen, const void *key, size_t keylen ) {
+  return blake2b(out, outlen, in, inlen, key, keylen);
+}
+
 #if defined(SUPERCOP)
 int crypto_hash( unsigned char *out, unsigned char *in, unsigned long long inlen )
 {
-  return blake2b( out, in, NULL, BLAKE2B_OUTBYTES, inlen, 0 );
+  return blake2b( out, BLAKE2B_OUTBYTES, in, inlen, NULL, 0 );
 }
 #endif
 
 #if defined(BLAKE2B_SELFTEST)
 #include <string.h>
 #include "blake2-kat.h"
-int main( int argc, char **argv )
+int main( void )
 {
   uint8_t key[BLAKE2B_KEYBYTES];
-  uint8_t buf[KAT_LENGTH];
+  uint8_t buf[BLAKE2_KAT_LENGTH];
+  size_t i, step;
 
-  for( size_t i = 0; i < BLAKE2B_KEYBYTES; ++i )
+  for( i = 0; i < BLAKE2B_KEYBYTES; ++i )
     key[i] = ( uint8_t )i;
 
-  for( size_t i = 0; i < KAT_LENGTH; ++i )
+  for( i = 0; i < BLAKE2_KAT_LENGTH; ++i )
     buf[i] = ( uint8_t )i;
 
-  for( size_t i = 0; i < KAT_LENGTH; ++i )
+  /* Test simple API */
+  for( i = 0; i < BLAKE2_KAT_LENGTH; ++i )
   {
     uint8_t hash[BLAKE2B_OUTBYTES];
-    blake2b( hash, buf, key, BLAKE2B_OUTBYTES, i, BLAKE2B_KEYBYTES );
+    blake2b( hash, BLAKE2B_OUTBYTES, buf, i, key, BLAKE2B_KEYBYTES );
 
     if( 0 != memcmp( hash, blake2b_keyed_kat[i], BLAKE2B_OUTBYTES ) )
     {
-      puts( "error" );
-      return -1;
+      goto fail;
     }
   }
 
+  /* Test streaming API */
+  for(step = 1; step < BLAKE2B_BLOCKBYTES; ++step) {
+    for (i = 0; i < BLAKE2_KAT_LENGTH; ++i) {
+      uint8_t hash[BLAKE2B_OUTBYTES];
+      blake2b_state S;
+      uint8_t * p = buf;
+      size_t mlen = i;
+      int err = 0;
+
+      if( (err = blake2b_init_key(&S, BLAKE2B_OUTBYTES, key, BLAKE2B_KEYBYTES)) < 0 ) {
+        goto fail;
+      }
+
+      while (mlen >= step) {
+        if ( (err = blake2b_update(&S, p, step)) < 0 ) {
+          goto fail;
+        }
+        mlen -= step;
+        p += step;
+      }
+      if ( (err = blake2b_update(&S, p, mlen)) < 0) {
+        goto fail;
+      }
+      if ( (err = blake2b_final(&S, hash, BLAKE2B_OUTBYTES)) < 0) {
+        goto fail;
+      }
+
+      if (0 != memcmp(hash, blake2b_keyed_kat[i], BLAKE2B_OUTBYTES)) {
+        goto fail;
+      }
+    }
+  }
+
   puts( "ok" );
   return 0;
+fail:
+  puts("error");
+  return -1;
 }
 #endif
-
diff --git a/cbits/blake2/ref/blake2bp-ref.c b/cbits/blake2/ref/blake2bp-ref.c
--- a/cbits/blake2/ref/blake2bp-ref.c
+++ b/cbits/blake2/ref/blake2bp-ref.c
@@ -1,14 +1,16 @@
 /*
    BLAKE2 reference source code package - reference C implementations
 
-   Written in 2012 by Samuel Neves <sneves@dei.uc.pt>
+   Copyright 2012, Samuel Neves <sneves@dei.uc.pt>.  You may use this under the
+   terms of the CC0, the OpenSSL Licence, or the Apache Public License 2.0, at
+   your option.  The terms of these licenses can be found at:
 
-   To the extent possible under law, the author(s) have dedicated all copyright
-   and related and neighboring rights to this software to the public domain
-   worldwide. This software is distributed without any warranty.
+   - CC0 1.0 Universal : http://creativecommons.org/publicdomain/zero/1.0
+   - OpenSSL license   : https://www.openssl.org/source/license.html
+   - Apache 2.0        : http://www.apache.org/licenses/LICENSE-2.0
 
-   You should have received a copy of the CC0 Public Domain Dedication along with
-   this software. If not, see <http://creativecommons.org/publicdomain/zero/1.0/>.
+   More information about the BLAKE2 hash function can be found at
+   https://blake2.net.
 */
 
 #include <stdio.h>
@@ -25,32 +27,48 @@
 
 #define PARALLELISM_DEGREE 4
 
-static inline int blake2bp_init_leaf( blake2b_state *S, uint8_t outlen, uint8_t keylen, uint64_t offset )
+/*
+  blake2b_init_param defaults to setting the expecting output length
+  from the digest_length parameter block field.
+
+  In some cases, however, we do not want this, as the output length
+  of these instances is given by inner_length instead.
+*/
+static int blake2bp_init_leaf_param( blake2b_state *S, const blake2b_param *P )
 {
+  int err = blake2b_init_param(S, P);
+  S->outlen = P->inner_length;
+  return err;
+}
+
+static int blake2bp_init_leaf( blake2b_state *S, size_t outlen, size_t keylen, uint64_t offset )
+{
   blake2b_param P[1];
-  P->digest_length = outlen;
-  P->key_length = keylen;
+  P->digest_length = (uint8_t)outlen;
+  P->key_length = (uint8_t)keylen;
   P->fanout = PARALLELISM_DEGREE;
   P->depth = 2;
   store32( &P->leaf_length, 0 );
-  store64( &P->node_offset, offset );
+  store32( &P->node_offset, offset );
+  store32( &P->xof_length, 0 );
   P->node_depth = 0;
   P->inner_length = BLAKE2B_OUTBYTES;
   memset( P->reserved, 0, sizeof( P->reserved ) );
   memset( P->salt, 0, sizeof( P->salt ) );
   memset( P->personal, 0, sizeof( P->personal ) );
-  return blake2b_init_param( S, P );
+  return blake2bp_init_leaf_param( S, P );
 }
 
-static inline int blake2bp_init_root( blake2b_state *S, uint8_t outlen, uint8_t keylen )
+static int blake2bp_init_root( blake2b_state *S, size_t outlen, size_t keylen )
 {
   blake2b_param P[1];
-  P->digest_length = outlen;
-  P->key_length = keylen;
+  P->digest_length = (uint8_t)outlen;
+  P->key_length = (uint8_t)keylen;
   P->fanout = PARALLELISM_DEGREE;
   P->depth = 2;
   store32( &P->leaf_length, 0 );
-  store64( &P->node_offset, 0 );
+  store32( &P->node_offset, 0 );
+  store32( &P->xof_length, 0 );
   P->node_depth = 1;
   P->inner_length = BLAKE2B_OUTBYTES;
   memset( P->reserved, 0, sizeof( P->reserved ) );
@@ -60,17 +78,20 @@
 }
 
 
-int blake2bp_init( blake2bp_state *S, const uint8_t outlen )
+int blake2bp_init( blake2bp_state *S, size_t outlen )
 {
+  size_t i;
+
   if( !outlen || outlen > BLAKE2B_OUTBYTES ) return -1;
 
   memset( S->buf, 0, sizeof( S->buf ) );
   S->buflen = 0;
+  S->outlen = outlen;
 
   if( blake2bp_init_root( S->R, outlen, 0 ) < 0 )
     return -1;
 
-  for( size_t i = 0; i < PARALLELISM_DEGREE; ++i )
+  for( i = 0; i < PARALLELISM_DEGREE; ++i )
     if( blake2bp_init_leaf( S->S[i], outlen, 0, i ) < 0 ) return -1;
 
   S->R->last_node = 1;
@@ -78,19 +99,22 @@
   return 0;
 }
 
-int blake2bp_init_key( blake2bp_state *S, const uint8_t outlen, const void *key, const uint8_t keylen )
+int blake2bp_init_key( blake2bp_state *S, size_t outlen, const void *key, size_t keylen )
 {
+  size_t i;
+
   if( !outlen || outlen > BLAKE2B_OUTBYTES ) return -1;
 
   if( !key || !keylen || keylen > BLAKE2B_KEYBYTES ) return -1;
 
   memset( S->buf, 0, sizeof( S->buf ) );
   S->buflen = 0;
+  S->outlen = outlen;
 
   if( blake2bp_init_root( S->R, outlen, keylen ) < 0 )
     return -1;
 
-  for( size_t i = 0; i < PARALLELISM_DEGREE; ++i )
+  for( i = 0; i < PARALLELISM_DEGREE; ++i )
     if( blake2bp_init_leaf( S->S[i], outlen, keylen, i ) < 0 ) return -1;
 
   S->R->last_node = 1;
@@ -100,7 +124,7 @@
     memset( block, 0, BLAKE2B_BLOCKBYTES );
     memcpy( block, key, keylen );
 
-    for( size_t i = 0; i < PARALLELISM_DEGREE; ++i )
+    for( i = 0; i < PARALLELISM_DEGREE; ++i )
       blake2b_update( S->S[i], block, BLAKE2B_BLOCKBYTES );
 
     secure_zero_memory( block, BLAKE2B_BLOCKBYTES ); /* Burn the key from stack */
@@ -109,16 +133,18 @@
 }
 
 
-int blake2bp_update( blake2bp_state *S, const uint8_t *in, uint64_t inlen )
+int blake2bp_update( blake2bp_state *S, const void *pin, size_t inlen )
 {
+  const unsigned char * in = (const unsigned char *)pin;
   size_t left = S->buflen;
   size_t fill = sizeof( S->buf ) - left;
+  size_t i;
 
   if( left && inlen >= fill )
   {
     memcpy( S->buf + left, in, fill );
 
-    for( size_t i = 0; i < PARALLELISM_DEGREE; ++i )
+    for( i = 0; i < PARALLELISM_DEGREE; ++i )
       blake2b_update( S->S[i], S->buf + i * BLAKE2B_BLOCKBYTES, BLAKE2B_BLOCKBYTES );
 
     in += fill;
@@ -130,19 +156,19 @@
   #pragma omp parallel shared(S), num_threads(PARALLELISM_DEGREE)
 #else
 
-  for( size_t id__ = 0; id__ < PARALLELISM_DEGREE; ++id__ )
+  for( i = 0; i < PARALLELISM_DEGREE; ++i )
 #endif
   {
 #if defined(_OPENMP)
-    size_t      id__ = omp_get_thread_num();
+    size_t      i = omp_get_thread_num();
 #endif
-    uint64_t inlen__ = inlen;
-    const uint8_t *in__ = ( const uint8_t * )in;
-    in__ += id__ * BLAKE2B_BLOCKBYTES;
+    size_t inlen__ = inlen;
+    const unsigned char *in__ = ( const unsigned char * )in;
+    in__ += i * BLAKE2B_BLOCKBYTES;
 
     while( inlen__ >= PARALLELISM_DEGREE * BLAKE2B_BLOCKBYTES )
     {
-      blake2b_update( S->S[id__], in__, BLAKE2B_BLOCKBYTES );
+      blake2b_update( S->S[i], in__, BLAKE2B_BLOCKBYTES );
       in__ += PARALLELISM_DEGREE * BLAKE2B_BLOCKBYTES;
       inlen__ -= PARALLELISM_DEGREE * BLAKE2B_BLOCKBYTES;
     }
@@ -158,11 +184,16 @@
   return 0;
 }
 
-int blake2bp_final( blake2bp_state *S, uint8_t *out, const uint8_t outlen )
+int blake2bp_final( blake2bp_state *S, void *out, size_t outlen )
 {
   uint8_t hash[PARALLELISM_DEGREE][BLAKE2B_OUTBYTES];
+  size_t i;
 
-  for( size_t i = 0; i < PARALLELISM_DEGREE; ++i )
+  if(out == NULL || outlen < S->outlen) {
+    return -1;
+  }
+
+  for( i = 0; i < PARALLELISM_DEGREE; ++i )
   {
     if( S->buflen > i * BLAKE2B_BLOCKBYTES )
     {
@@ -176,18 +207,18 @@
     blake2b_final( S->S[i], hash[i], BLAKE2B_OUTBYTES );
   }
 
-  for( size_t i = 0; i < PARALLELISM_DEGREE; ++i )
+  for( i = 0; i < PARALLELISM_DEGREE; ++i )
     blake2b_update( S->R, hash[i], BLAKE2B_OUTBYTES );
 
-  
-  return blake2b_final( S->R, out, outlen );
+  return blake2b_final( S->R, out, S->outlen );
 }
 
-int blake2bp( uint8_t *out, const void *in, const void *key, uint8_t outlen, uint64_t inlen, uint8_t keylen )
+int blake2bp( void *out, size_t outlen, const void *in, size_t inlen, const void *key, size_t keylen )
 {
   uint8_t hash[PARALLELISM_DEGREE][BLAKE2B_OUTBYTES];
   blake2b_state S[PARALLELISM_DEGREE][1];
   blake2b_state FS[1];
+  size_t i;
 
   /* Verify parameters */
   if ( NULL == in && inlen > 0 ) return -1;
@@ -200,10 +231,10 @@
 
   if( keylen > BLAKE2B_KEYBYTES ) return -1;
 
-  for( size_t i = 0; i < PARALLELISM_DEGREE; ++i )
+  for( i = 0; i < PARALLELISM_DEGREE; ++i )
     if( blake2bp_init_leaf( S[i], outlen, keylen, i ) < 0 ) return -1;
 
-  S[PARALLELISM_DEGREE - 1]->last_node = 1; // mark last node
+  S[PARALLELISM_DEGREE - 1]->last_node = 1; /* mark last node */
 
   if( keylen > 0 )
   {
@@ -211,7 +242,7 @@
     memset( block, 0, BLAKE2B_BLOCKBYTES );
     memcpy( block, key, keylen );
 
-    for( size_t i = 0; i < PARALLELISM_DEGREE; ++i )
+    for( i = 0; i < PARALLELISM_DEGREE; ++i )
       blake2b_update( S[i], block, BLAKE2B_BLOCKBYTES );
 
     secure_zero_memory( block, BLAKE2B_BLOCKBYTES ); /* Burn the key from stack */
@@ -221,39 +252,39 @@
   #pragma omp parallel shared(S,hash), num_threads(PARALLELISM_DEGREE)
 #else
 
-  for( size_t id__ = 0; id__ < PARALLELISM_DEGREE; ++id__ )
+  for( i = 0; i < PARALLELISM_DEGREE; ++i )
 #endif
   {
 #if defined(_OPENMP)
-    size_t      id__ = omp_get_thread_num();
+    size_t      i = omp_get_thread_num();
 #endif
-    uint64_t inlen__ = inlen;
-    const uint8_t *in__ = ( const uint8_t * )in;
-    in__ += id__ * BLAKE2B_BLOCKBYTES;
+    size_t inlen__ = inlen;
+    const unsigned char *in__ = ( const unsigned char * )in;
+    in__ += i * BLAKE2B_BLOCKBYTES;
 
     while( inlen__ >= PARALLELISM_DEGREE * BLAKE2B_BLOCKBYTES )
     {
-      blake2b_update( S[id__], in__, BLAKE2B_BLOCKBYTES );
+      blake2b_update( S[i], in__, BLAKE2B_BLOCKBYTES );
       in__ += PARALLELISM_DEGREE * BLAKE2B_BLOCKBYTES;
       inlen__ -= PARALLELISM_DEGREE * BLAKE2B_BLOCKBYTES;
     }
 
-    if( inlen__ > id__ * BLAKE2B_BLOCKBYTES )
+    if( inlen__ > i * BLAKE2B_BLOCKBYTES )
     {
-      const size_t left = inlen__ - id__ * BLAKE2B_BLOCKBYTES;
+      const size_t left = inlen__ - i * BLAKE2B_BLOCKBYTES;
       const size_t len = left <= BLAKE2B_BLOCKBYTES ? left : BLAKE2B_BLOCKBYTES;
-      blake2b_update( S[id__], in__, len );
+      blake2b_update( S[i], in__, len );
     }
 
-    blake2b_final( S[id__], hash[id__], BLAKE2B_OUTBYTES );
+    blake2b_final( S[i], hash[i], BLAKE2B_OUTBYTES );
   }
 
   if( blake2bp_init_root( FS, outlen, keylen ) < 0 )
     return -1;
 
-  FS->last_node = 1; // Mark as last node
+  FS->last_node = 1; /* Mark as last node */
 
-  for( size_t i = 0; i < PARALLELISM_DEGREE; ++i )
+  for( i = 0; i < PARALLELISM_DEGREE; ++i )
     blake2b_update( FS, hash[i], BLAKE2B_OUTBYTES );
 
   return blake2b_final( FS, out, outlen );;
@@ -262,30 +293,67 @@
 #if defined(BLAKE2BP_SELFTEST)
 #include <string.h>
 #include "blake2-kat.h"
-int main( int argc, char **argv )
+int main( void )
 {
   uint8_t key[BLAKE2B_KEYBYTES];
-  uint8_t buf[KAT_LENGTH];
+  uint8_t buf[BLAKE2_KAT_LENGTH];
+  size_t i, step;
 
-  for( size_t i = 0; i < BLAKE2B_KEYBYTES; ++i )
+  for( i = 0; i < BLAKE2B_KEYBYTES; ++i )
     key[i] = ( uint8_t )i;
 
-  for( size_t i = 0; i < KAT_LENGTH; ++i )
+  for( i = 0; i < BLAKE2_KAT_LENGTH; ++i )
     buf[i] = ( uint8_t )i;
 
-  for( size_t i = 0; i < KAT_LENGTH; ++i )
+  /* Test simple API */
+  for( i = 0; i < BLAKE2_KAT_LENGTH; ++i )
   {
     uint8_t hash[BLAKE2B_OUTBYTES];
-    blake2bp( hash, buf, key, BLAKE2B_OUTBYTES, i, BLAKE2B_KEYBYTES );
+    blake2bp( hash, BLAKE2B_OUTBYTES, buf, i, key, BLAKE2B_KEYBYTES );
 
     if( 0 != memcmp( hash, blake2bp_keyed_kat[i], BLAKE2B_OUTBYTES ) )
     {
-      puts( "error" );
-      return -1;
+      goto fail;
     }
   }
 
+  /* Test streaming API */
+  for(step = 1; step < BLAKE2B_BLOCKBYTES; ++step) {
+    for (i = 0; i < BLAKE2_KAT_LENGTH; ++i) {
+      uint8_t hash[BLAKE2B_OUTBYTES];
+      blake2bp_state S;
+      uint8_t * p = buf;
+      size_t mlen = i;
+      int err = 0;
+
+      if( (err = blake2bp_init_key(&S, BLAKE2B_OUTBYTES, key, BLAKE2B_KEYBYTES)) < 0 ) {
+        goto fail;
+      }
+
+      while (mlen >= step) {
+        if ( (err = blake2bp_update(&S, p, step)) < 0 ) {
+          goto fail;
+        }
+        mlen -= step;
+        p += step;
+      }
+      if ( (err = blake2bp_update(&S, p, mlen)) < 0) {
+        goto fail;
+      }
+      if ( (err = blake2bp_final(&S, hash, BLAKE2B_OUTBYTES)) < 0) {
+        goto fail;
+      }
+
+      if (0 != memcmp(hash, blake2bp_keyed_kat[i], BLAKE2B_OUTBYTES)) {
+        goto fail;
+      }
+    }
+  }
+
   puts( "ok" );
   return 0;
+fail:
+  puts("error");
+  return -1;
 }
 #endif
diff --git a/cbits/blake2/ref/blake2s-ref.c b/cbits/blake2/ref/blake2s-ref.c
--- a/cbits/blake2/ref/blake2s-ref.c
+++ b/cbits/blake2/ref/blake2s-ref.c
@@ -1,14 +1,16 @@
 /*
    BLAKE2 reference source code package - reference C implementations
 
-   Written in 2012 by Samuel Neves <sneves@dei.uc.pt>
+   Copyright 2012, Samuel Neves <sneves@dei.uc.pt>.  You may use this under the
+   terms of the CC0, the OpenSSL Licence, or the Apache Public License 2.0, at
+   your option.  The terms of these licenses can be found at:
 
-   To the extent possible under law, the author(s) have dedicated all copyright
-   and related and neighboring rights to this software to the public domain
-   worldwide. This software is distributed without any warranty.
+   - CC0 1.0 Universal : http://creativecommons.org/publicdomain/zero/1.0
+   - OpenSSL license   : https://www.openssl.org/source/license.html
+   - Apache 2.0        : http://www.apache.org/licenses/LICENSE-2.0
 
-   You should have received a copy of the CC0 Public Domain Dedication along with
-   this software. If not, see <http://creativecommons.org/publicdomain/zero/1.0/>.
+   More information about the BLAKE2 hash function can be found at
+   https://blake2.net.
 */
 
 #include <stdint.h>
@@ -38,143 +40,79 @@
   { 10,  2,  8,  4,  7,  6,  1,  5, 15, 11,  9, 14,  3, 12, 13 , 0 } ,
 };
 
-static inline int blake2s_set_lastnode( blake2s_state *S )
-{
-  S->f[1] = -1;
-  return 0;
-}
-
-static inline int blake2s_clear_lastnode( blake2s_state *S )
+static void blake2s_set_lastnode( blake2s_state *S )
 {
-  S->f[1] = 0;
-  return 0;
+  S->f[1] = (uint32_t)-1;
 }
 
 /* Some helper functions, not necessarily useful */
-static inline int blake2s_set_lastblock( blake2s_state *S )
+static int blake2s_is_lastblock( const blake2s_state *S )
 {
-  if( S->last_node ) blake2s_set_lastnode( S );
-
-  S->f[0] = -1;
-  return 0;
+  return S->f[0] != 0;
 }
 
-static inline int blake2s_clear_lastblock( blake2s_state *S )
+static void blake2s_set_lastblock( blake2s_state *S )
 {
-  if( S->last_node ) blake2s_clear_lastnode( S );
+  if( S->last_node ) blake2s_set_lastnode( S );
 
-  S->f[0] = 0;
-  return 0;
+  S->f[0] = (uint32_t)-1;
 }
 
-static inline int blake2s_increment_counter( blake2s_state *S, const uint32_t inc )
+static void blake2s_increment_counter( blake2s_state *S, const uint32_t inc )
 {
   S->t[0] += inc;
   S->t[1] += ( S->t[0] < inc );
-  return 0;
 }
 
-// Parameter-related functions
-static inline int blake2s_param_set_digest_length( blake2s_param *P, const uint8_t digest_length )
-{
-  P->digest_length = digest_length;
-  return 0;
-}
-
-static inline int blake2s_param_set_fanout( blake2s_param *P, const uint8_t fanout )
-{
-  P->fanout = fanout;
-  return 0;
-}
-
-static inline int blake2s_param_set_max_depth( blake2s_param *P, const uint8_t depth )
-{
-  P->depth = depth;
-  return 0;
-}
-
-static inline int blake2s_param_set_leaf_length( blake2s_param *P, const uint32_t leaf_length )
-{
-  store32( &P->leaf_length, leaf_length );
-  return 0;
-}
-
-static inline int blake2s_param_set_node_offset( blake2s_param *P, const uint64_t node_offset )
-{
-  store48( P->node_offset, node_offset );
-  return 0;
-}
-
-static inline int blake2s_param_set_node_depth( blake2s_param *P, const uint8_t node_depth )
-{
-  P->node_depth = node_depth;
-  return 0;
-}
-
-static inline int blake2s_param_set_inner_length( blake2s_param *P, const uint8_t inner_length )
-{
-  P->inner_length = inner_length;
-  return 0;
-}
-
-static inline int blake2s_param_set_salt( blake2s_param *P, const uint8_t salt[BLAKE2S_SALTBYTES] )
-{
-  memcpy( P->salt, salt, BLAKE2S_SALTBYTES );
-  return 0;
-}
-
-static inline int blake2s_param_set_personal( blake2s_param *P, const uint8_t personal[BLAKE2S_PERSONALBYTES] )
-{
-  memcpy( P->personal, personal, BLAKE2S_PERSONALBYTES );
-  return 0;
-}
-
-static inline int blake2s_init0( blake2s_state *S )
+static void blake2s_init0( blake2s_state *S )
 {
+  size_t i;
   memset( S, 0, sizeof( blake2s_state ) );
 
-  for( int i = 0; i < 8; ++i ) S->h[i] = blake2s_IV[i];
-
-  return 0;
+  for( i = 0; i < 8; ++i ) S->h[i] = blake2s_IV[i];
 }
 
 /* init2 xors IV with input parameter block */
 int blake2s_init_param( blake2s_state *S, const blake2s_param *P )
 {
+  const unsigned char *p = ( const unsigned char * )( P );
+  size_t i;
+
   blake2s_init0( S );
-  const uint32_t *p = ( const uint32_t * )( P );
 
   /* IV XOR ParamBlock */
-  for( size_t i = 0; i < 8; ++i )
-    S->h[i] ^= load32( &p[i] );
+  for( i = 0; i < 8; ++i )
+    S->h[i] ^= load32( &p[i * 4] );
 
+  S->outlen = P->digest_length;
   return 0;
 }
 
 
-// Sequential blake2s initialization
-int blake2s_init( blake2s_state *S, const uint8_t outlen )
+/* Sequential blake2s initialization */
+int blake2s_init( blake2s_state *S, size_t outlen )
 {
   blake2s_param P[1];
 
   /* Move interval verification here? */
   if ( ( !outlen ) || ( outlen > BLAKE2S_OUTBYTES ) ) return -1;
 
-  P->digest_length = outlen;
+  P->digest_length = (uint8_t)outlen;
   P->key_length    = 0;
   P->fanout        = 1;
   P->depth         = 1;
   store32( &P->leaf_length, 0 );
-  store48( &P->node_offset, 0 );
+  store32( &P->node_offset, 0 );
+  store16( &P->xof_length, 0 );
   P->node_depth    = 0;
   P->inner_length  = 0;
-  // memset(P->reserved, 0, sizeof(P->reserved) );
+  /* memset(P->reserved, 0, sizeof(P->reserved) ); */
   memset( P->salt,     0, sizeof( P->salt ) );
   memset( P->personal, 0, sizeof( P->personal ) );
   return blake2s_init_param( S, P );
 }
 
-int blake2s_init_key( blake2s_state *S, const uint8_t outlen, const void *key, const uint8_t keylen )
+int blake2s_init_key( blake2s_state *S, size_t outlen, const void *key, size_t keylen )
 {
   blake2s_param P[1];
 
@@ -182,15 +120,16 @@
 
   if ( !key || !keylen || keylen > BLAKE2S_KEYBYTES ) return -1;
 
-  P->digest_length = outlen;
-  P->key_length    = keylen;
+  P->digest_length = (uint8_t)outlen;
+  P->key_length    = (uint8_t)keylen;
   P->fanout        = 1;
   P->depth         = 1;
   store32( &P->leaf_length, 0 );
-  store48( &P->node_offset, 0 );
+  store32( &P->node_offset, 0 );
+  store16( &P->xof_length, 0 );
   P->node_depth    = 0;
   P->inner_length  = 0;
-  // memset(P->reserved, 0, sizeof(P->reserved) );
+  /* memset(P->reserved, 0, sizeof(P->reserved) ); */
   memset( P->salt,     0, sizeof( P->salt ) );
   memset( P->personal, 0, sizeof( P->personal ) );
 
@@ -206,16 +145,43 @@
   return 0;
 }
 
-static int blake2s_compress( blake2s_state *S, const uint8_t block[BLAKE2S_BLOCKBYTES] )
+#define G(r,i,a,b,c,d)                      \
+  do {                                      \
+    a = a + b + m[blake2s_sigma[r][2*i+0]]; \
+    d = rotr32(d ^ a, 16);                  \
+    c = c + d;                              \
+    b = rotr32(b ^ c, 12);                  \
+    a = a + b + m[blake2s_sigma[r][2*i+1]]; \
+    d = rotr32(d ^ a, 8);                   \
+    c = c + d;                              \
+    b = rotr32(b ^ c, 7);                   \
+  } while(0)
+
+#define ROUND(r)                    \
+  do {                              \
+    G(r,0,v[ 0],v[ 4],v[ 8],v[12]); \
+    G(r,1,v[ 1],v[ 5],v[ 9],v[13]); \
+    G(r,2,v[ 2],v[ 6],v[10],v[14]); \
+    G(r,3,v[ 3],v[ 7],v[11],v[15]); \
+    G(r,4,v[ 0],v[ 5],v[10],v[15]); \
+    G(r,5,v[ 1],v[ 6],v[11],v[12]); \
+    G(r,6,v[ 2],v[ 7],v[ 8],v[13]); \
+    G(r,7,v[ 3],v[ 4],v[ 9],v[14]); \
+  } while(0)
+
+static void blake2s_compress( blake2s_state *S, const uint8_t in[BLAKE2S_BLOCKBYTES] )
 {
   uint32_t m[16];
   uint32_t v[16];
+  size_t i;
 
-  for( size_t i = 0; i < 16; ++i )
-    m[i] = load32( block + i * sizeof( m[i] ) );
+  for( i = 0; i < 16; ++i ) {
+    m[i] = load32( in + i * sizeof( m[i] ) );
+  }
 
-  for( size_t i = 0; i < 8; ++i )
+  for( i = 0; i < 8; ++i ) {
     v[i] = S->h[i];
+  }
 
   v[ 8] = blake2s_IV[0];
   v[ 9] = blake2s_IV[1];
@@ -225,28 +191,7 @@
   v[13] = S->t[1] ^ blake2s_IV[5];
   v[14] = S->f[0] ^ blake2s_IV[6];
   v[15] = S->f[1] ^ blake2s_IV[7];
-#define G(r,i,a,b,c,d) \
-  do { \
-    a = a + b + m[blake2s_sigma[r][2*i+0]]; \
-    d = rotr32(d ^ a, 16); \
-    c = c + d; \
-    b = rotr32(b ^ c, 12); \
-    a = a + b + m[blake2s_sigma[r][2*i+1]]; \
-    d = rotr32(d ^ a, 8); \
-    c = c + d; \
-    b = rotr32(b ^ c, 7); \
-  } while(0)
-#define ROUND(r)  \
-  do { \
-    G(r,0,v[ 0],v[ 4],v[ 8],v[12]); \
-    G(r,1,v[ 1],v[ 5],v[ 9],v[13]); \
-    G(r,2,v[ 2],v[ 6],v[10],v[14]); \
-    G(r,3,v[ 3],v[ 7],v[11],v[15]); \
-    G(r,4,v[ 0],v[ 5],v[10],v[15]); \
-    G(r,5,v[ 1],v[ 6],v[11],v[12]); \
-    G(r,6,v[ 2],v[ 7],v[ 8],v[13]); \
-    G(r,7,v[ 3],v[ 4],v[ 9],v[14]); \
-  } while(0)
+
   ROUND( 0 );
   ROUND( 1 );
   ROUND( 2 );
@@ -258,73 +203,66 @@
   ROUND( 8 );
   ROUND( 9 );
 
-  for( size_t i = 0; i < 8; ++i )
+  for( i = 0; i < 8; ++i ) {
     S->h[i] = S->h[i] ^ v[i] ^ v[i + 8];
+  }
+}
 
 #undef G
 #undef ROUND
-  return 0;
-}
 
-
-int blake2s_update( blake2s_state *S, const uint8_t *in, uint64_t inlen )
+int blake2s_update( blake2s_state *S, const void *pin, size_t inlen )
 {
-  while( inlen > 0 )
+  const unsigned char * in = (const unsigned char *)pin;
+  if( inlen > 0 )
   {
     size_t left = S->buflen;
-    size_t fill = 2 * BLAKE2S_BLOCKBYTES - left;
-
+    size_t fill = BLAKE2S_BLOCKBYTES - left;
     if( inlen > fill )
     {
-      memcpy( S->buf + left, in, fill ); // Fill buffer
-      S->buflen += fill;
+      S->buflen = 0;
+      memcpy( S->buf + left, in, fill ); /* Fill buffer */
       blake2s_increment_counter( S, BLAKE2S_BLOCKBYTES );
-      blake2s_compress( S, S->buf ); // Compress
-      memcpy( S->buf, S->buf + BLAKE2S_BLOCKBYTES, BLAKE2S_BLOCKBYTES ); // Shift buffer left
-      S->buflen -= BLAKE2S_BLOCKBYTES;
-      in += fill;
-      inlen -= fill;
-    }
-    else // inlen <= fill
-    {
-      memcpy( S->buf + left, in, inlen );
-      S->buflen += inlen; // Be lazy, do not compress
-      in += inlen;
-      inlen -= inlen;
+      blake2s_compress( S, S->buf ); /* Compress */
+      in += fill; inlen -= fill;
+      while(inlen > BLAKE2S_BLOCKBYTES) {
+        blake2s_increment_counter(S, BLAKE2S_BLOCKBYTES);
+        blake2s_compress( S, in );
+        in += BLAKE2S_BLOCKBYTES;
+        inlen -= BLAKE2S_BLOCKBYTES;
+      }
     }
+    memcpy( S->buf + S->buflen, in, inlen );
+    S->buflen += inlen;
   }
-
   return 0;
 }
 
-int blake2s_final( blake2s_state *S, uint8_t *out, uint8_t outlen )
+int blake2s_final( blake2s_state *S, void *out, size_t outlen )
 {
   uint8_t buffer[BLAKE2S_OUTBYTES] = {0};
+  size_t i;
 
-  if( outlen > BLAKE2S_OUTBYTES )
+  if( out == NULL || outlen < S->outlen )
     return -1;
 
-  if( S->buflen > BLAKE2S_BLOCKBYTES )
-  {
-    blake2s_increment_counter( S, BLAKE2S_BLOCKBYTES );
-    blake2s_compress( S, S->buf );
-    S->buflen -= BLAKE2S_BLOCKBYTES;
-    memcpy( S->buf, S->buf + BLAKE2S_BLOCKBYTES, S->buflen );
-  }
+  if( blake2s_is_lastblock( S ) )
+    return -1;
 
   blake2s_increment_counter( S, ( uint32_t )S->buflen );
   blake2s_set_lastblock( S );
-  memset( S->buf + S->buflen, 0, 2 * BLAKE2S_BLOCKBYTES - S->buflen ); /* Padding */
+  memset( S->buf + S->buflen, 0, BLAKE2S_BLOCKBYTES - S->buflen ); /* Padding */
   blake2s_compress( S, S->buf );
 
-  for( int i = 0; i < 8; ++i ) /* Output full hash to temp buffer */
+  for( i = 0; i < 8; ++i ) /* Output full hash to temp buffer */
     store32( buffer + sizeof( S->h[i] ) * i, S->h[i] );
-    
+
   memcpy( out, buffer, outlen );
+  secure_zero_memory(buffer, sizeof(buffer));
   return 0;
 }
 
-int blake2s( uint8_t *out, const void *in, const void *key, const uint8_t outlen, const uint64_t inlen, uint8_t keylen )
+int blake2s( void *out, size_t outlen, const void *in, size_t inlen, const void *key, size_t keylen )
 {
   blake2s_state S[1];
 
@@ -356,39 +294,74 @@
 #if defined(SUPERCOP)
 int crypto_hash( unsigned char *out, unsigned char *in, unsigned long long inlen )
 {
-  return blake2s( out, in, NULL, BLAKE2S_OUTBYTES, inlen, 0 );
+  return blake2s( out, BLAKE2S_OUTBYTES in, inlen, NULL, 0 );
 }
 #endif
 
 #if defined(BLAKE2S_SELFTEST)
 #include <string.h>
 #include "blake2-kat.h"
-int main( int argc, char **argv )
+int main( void )
 {
   uint8_t key[BLAKE2S_KEYBYTES];
-  uint8_t buf[KAT_LENGTH];
+  uint8_t buf[BLAKE2_KAT_LENGTH];
+  size_t i, step;
 
-  for( size_t i = 0; i < BLAKE2S_KEYBYTES; ++i )
+  for( i = 0; i < BLAKE2S_KEYBYTES; ++i )
     key[i] = ( uint8_t )i;
 
-  for( size_t i = 0; i < KAT_LENGTH; ++i )
+  for( i = 0; i < BLAKE2_KAT_LENGTH; ++i )
     buf[i] = ( uint8_t )i;
 
-  for( size_t i = 0; i < KAT_LENGTH; ++i )
+  /* Test simple API */
+  for( i = 0; i < BLAKE2_KAT_LENGTH; ++i )
   {
     uint8_t hash[BLAKE2S_OUTBYTES];
-    blake2s( hash, buf, key, BLAKE2S_OUTBYTES, i, BLAKE2S_KEYBYTES );
+    blake2s( hash, BLAKE2S_OUTBYTES, buf, i, key, BLAKE2S_KEYBYTES );
 
     if( 0 != memcmp( hash, blake2s_keyed_kat[i], BLAKE2S_OUTBYTES ) )
     {
-      puts( "error" );
-      return -1;
+      goto fail;
     }
   }
 
+  /* Test streaming API */
+  for(step = 1; step < BLAKE2S_BLOCKBYTES; ++step) {
+    for (i = 0; i < BLAKE2_KAT_LENGTH; ++i) {
+      uint8_t hash[BLAKE2S_OUTBYTES];
+      blake2s_state S;
+      uint8_t * p = buf;
+      size_t mlen = i;
+      int err = 0;
+
+      if( (err = blake2s_init_key(&S, BLAKE2S_OUTBYTES, key, BLAKE2S_KEYBYTES)) < 0 ) {
+        goto fail;
+      }
+
+      while (mlen >= step) {
+        if ( (err = blake2s_update(&S, p, step)) < 0 ) {
+          goto fail;
+        }
+        mlen -= step;
+        p += step;
+      }
+      if ( (err = blake2s_update(&S, p, mlen)) < 0) {
+        goto fail;
+      }
+      if ( (err = blake2s_final(&S, hash, BLAKE2S_OUTBYTES)) < 0) {
+        goto fail;
+      }
+
+      if (0 != memcmp(hash, blake2s_keyed_kat[i], BLAKE2S_OUTBYTES)) {
+        goto fail;
+      }
+    }
+  }
+
   puts( "ok" );
   return 0;
+fail:
+  puts("error");
+  return -1;
 }
 #endif
-
-
diff --git a/cbits/blake2/ref/blake2sp-ref.c b/cbits/blake2/ref/blake2sp-ref.c
--- a/cbits/blake2/ref/blake2sp-ref.c
+++ b/cbits/blake2/ref/blake2sp-ref.c
@@ -1,14 +1,16 @@
 /*
    BLAKE2 reference source code package - reference C implementations
 
-   Written in 2012 by Samuel Neves <sneves@dei.uc.pt>
+   Copyright 2012, Samuel Neves <sneves@dei.uc.pt>.  You may use this under the
+   terms of the CC0, the OpenSSL Licence, or the Apache Public License 2.0, at
+   your option.  The terms of these licenses can be found at:
 
-   To the extent possible under law, the author(s) have dedicated all copyright
-   and related and neighboring rights to this software to the public domain
-   worldwide. This software is distributed without any warranty.
+   - CC0 1.0 Universal : http://creativecommons.org/publicdomain/zero/1.0
+   - OpenSSL license   : https://www.openssl.org/source/license.html
+   - Apache 2.0        : http://www.apache.org/licenses/LICENSE-2.0
 
-   You should have received a copy of the CC0 Public Domain Dedication along with
-   this software. If not, see <http://creativecommons.org/publicdomain/zero/1.0/>.
+   More information about the BLAKE2 hash function can be found at
+   https://blake2.net.
 */
 
 #include <stdlib.h>
@@ -24,31 +26,47 @@
 
 #define PARALLELISM_DEGREE 8
 
-static inline int blake2sp_init_leaf( blake2s_state *S, uint8_t outlen, uint8_t keylen, uint64_t offset )
+/*
+  blake2sp_init_param defaults to setting the expecting output length
+  from the digest_length parameter block field.
+
+  In some cases, however, we do not want this, as the output length
+  of these instances is given by inner_length instead.
+*/
+static int blake2sp_init_leaf_param( blake2s_state *S, const blake2s_param *P )
 {
+  int err = blake2s_init_param(S, P);
+  S->outlen = P->inner_length;
+  return err;
+}
+
+static int blake2sp_init_leaf( blake2s_state *S, size_t outlen, size_t keylen, uint64_t offset )
+{
   blake2s_param P[1];
-  P->digest_length = outlen;
-  P->key_length = keylen;
+  P->digest_length = (uint8_t)outlen;
+  P->key_length = (uint8_t)keylen;
   P->fanout = PARALLELISM_DEGREE;
   P->depth = 2;
   store32( &P->leaf_length, 0 );
-  store48( P->node_offset, offset );
+  store32( &P->node_offset, offset );
+  store16( &P->xof_length, 0 );
   P->node_depth = 0;
   P->inner_length = BLAKE2S_OUTBYTES;
   memset( P->salt, 0, sizeof( P->salt ) );
   memset( P->personal, 0, sizeof( P->personal ) );
-  return blake2s_init_param( S, P );
+  return blake2sp_init_leaf_param( S, P );
 }
 
-static inline int blake2sp_init_root( blake2s_state *S, uint8_t outlen, uint8_t keylen )
+static int blake2sp_init_root( blake2s_state *S, size_t outlen, size_t keylen )
 {
   blake2s_param P[1];
-  P->digest_length = outlen;
-  P->key_length = keylen;
+  P->digest_length = (uint8_t)outlen;
+  P->key_length = (uint8_t)keylen;
   P->fanout = PARALLELISM_DEGREE;
   P->depth = 2;
   store32( &P->leaf_length, 0 );
-  store48( P->node_offset, 0ULL );
+  store32( &P->node_offset, 0 );
+  store16( &P->xof_length, 0 );
   P->node_depth = 1;
   P->inner_length = BLAKE2S_OUTBYTES;
   memset( P->salt, 0, sizeof( P->salt ) );
@@ -57,17 +75,20 @@
 }
 
 
-int blake2sp_init( blake2sp_state *S, const uint8_t outlen )
+int blake2sp_init( blake2sp_state *S, size_t outlen )
 {
+  size_t i;
+
   if( !outlen || outlen > BLAKE2S_OUTBYTES ) return -1;
 
   memset( S->buf, 0, sizeof( S->buf ) );
   S->buflen = 0;
+  S->outlen = outlen;
 
   if( blake2sp_init_root( S->R, outlen, 0 ) < 0 )
     return -1;
 
-  for( size_t i = 0; i < PARALLELISM_DEGREE; ++i )
+  for( i = 0; i < PARALLELISM_DEGREE; ++i )
     if( blake2sp_init_leaf( S->S[i], outlen, 0, i ) < 0 ) return -1;
 
   S->R->last_node = 1;
@@ -75,19 +96,22 @@
   return 0;
 }
 
-int blake2sp_init_key( blake2sp_state *S, const uint8_t outlen, const void *key, const uint8_t keylen )
+int blake2sp_init_key( blake2sp_state *S, size_t outlen, const void *key, size_t keylen )
 {
+  size_t i;
+
   if( !outlen || outlen > BLAKE2S_OUTBYTES ) return -1;
 
   if( !key || !keylen || keylen > BLAKE2S_KEYBYTES ) return -1;
 
   memset( S->buf, 0, sizeof( S->buf ) );
   S->buflen = 0;
+  S->outlen = outlen;
 
   if( blake2sp_init_root( S->R, outlen, keylen ) < 0 )
     return -1;
 
-  for( size_t i = 0; i < PARALLELISM_DEGREE; ++i )
+  for( i = 0; i < PARALLELISM_DEGREE; ++i )
     if( blake2sp_init_leaf( S->S[i], outlen, keylen, i ) < 0 ) return -1;
 
   S->R->last_node = 1;
@@ -97,7 +121,7 @@
     memset( block, 0, BLAKE2S_BLOCKBYTES );
     memcpy( block, key, keylen );
 
-    for( size_t i = 0; i < PARALLELISM_DEGREE; ++i )
+    for( i = 0; i < PARALLELISM_DEGREE; ++i )
       blake2s_update( S->S[i], block, BLAKE2S_BLOCKBYTES );
 
     secure_zero_memory( block, BLAKE2S_BLOCKBYTES ); /* Burn the key from stack */
@@ -106,16 +130,18 @@
 }
 
 
-int blake2sp_update( blake2sp_state *S, const uint8_t *in, uint64_t inlen )
+int blake2sp_update( blake2sp_state *S, const void *pin, size_t inlen )
 {
+  const unsigned char * in = (const unsigned char *)pin;
   size_t left = S->buflen;
   size_t fill = sizeof( S->buf ) - left;
+  size_t i;
 
   if( left && inlen >= fill )
   {
     memcpy( S->buf + left, in, fill );
 
-    for( size_t i = 0; i < PARALLELISM_DEGREE; ++i )
+    for( i = 0; i < PARALLELISM_DEGREE; ++i )
       blake2s_update( S->S[i], S->buf + i * BLAKE2S_BLOCKBYTES, BLAKE2S_BLOCKBYTES );
 
     in += fill;
@@ -126,20 +152,19 @@
 #if defined(_OPENMP)
   #pragma omp parallel shared(S), num_threads(PARALLELISM_DEGREE)
 #else
-
-  for( size_t id__ = 0; id__ < PARALLELISM_DEGREE; ++id__ )
+  for( i = 0; i < PARALLELISM_DEGREE; ++i )
 #endif
   {
 #if defined(_OPENMP)
-    size_t      id__ = omp_get_thread_num();
+    size_t      i = omp_get_thread_num();
 #endif
-    uint64_t inlen__ = inlen;
-    const uint8_t *in__ = ( const uint8_t * )in;
-    in__ += id__ * BLAKE2S_BLOCKBYTES;
+    size_t inlen__ = inlen;
+    const unsigned char *in__ = ( const unsigned char * )in;
+    in__ += i * BLAKE2S_BLOCKBYTES;
 
     while( inlen__ >= PARALLELISM_DEGREE * BLAKE2S_BLOCKBYTES )
     {
-      blake2s_update( S->S[id__], in__, BLAKE2S_BLOCKBYTES );
+      blake2s_update( S->S[i], in__, BLAKE2S_BLOCKBYTES );
       in__ += PARALLELISM_DEGREE * BLAKE2S_BLOCKBYTES;
       inlen__ -= PARALLELISM_DEGREE * BLAKE2S_BLOCKBYTES;
     }
@@ -156,11 +181,16 @@
 }
 
 
-int blake2sp_final( blake2sp_state *S, uint8_t *out, const uint8_t outlen )
+int blake2sp_final( blake2sp_state *S, void *out, size_t outlen )
 {
   uint8_t hash[PARALLELISM_DEGREE][BLAKE2S_OUTBYTES];
+  size_t i;
 
-  for( size_t i = 0; i < PARALLELISM_DEGREE; ++i )
+  if(out == NULL || outlen < S->outlen) {
+    return -1;
+  }
+
+  for( i = 0; i < PARALLELISM_DEGREE; ++i )
   {
     if( S->buflen > i * BLAKE2S_BLOCKBYTES )
     {
@@ -174,18 +204,19 @@
     blake2s_final( S->S[i], hash[i], BLAKE2S_OUTBYTES );
   }
 
-  for( size_t i = 0; i < PARALLELISM_DEGREE; ++i )
+  for( i = 0; i < PARALLELISM_DEGREE; ++i )
     blake2s_update( S->R, hash[i], BLAKE2S_OUTBYTES );
 
-  return blake2s_final( S->R, out, outlen );
+  return blake2s_final( S->R, out, S->outlen );
 }
 
 
-int blake2sp( uint8_t *out, const void *in, const void *key, uint8_t outlen, uint64_t inlen, uint8_t keylen )
+int blake2sp( void *out, size_t outlen, const void *in, size_t inlen, const void *key, size_t keylen )
 {
   uint8_t hash[PARALLELISM_DEGREE][BLAKE2S_OUTBYTES];
   blake2s_state S[PARALLELISM_DEGREE][1];
   blake2s_state FS[1];
+  size_t i;
 
   /* Verify parameters */
   if ( NULL == in && inlen > 0 ) return -1;
@@ -198,10 +229,10 @@
 
   if( keylen > BLAKE2S_KEYBYTES ) return -1;
 
-  for( size_t i = 0; i < PARALLELISM_DEGREE; ++i )
+  for( i = 0; i < PARALLELISM_DEGREE; ++i )
     if( blake2sp_init_leaf( S[i], outlen, keylen, i ) < 0 ) return -1;
 
-  S[PARALLELISM_DEGREE - 1]->last_node = 1; // mark last node
+  S[PARALLELISM_DEGREE - 1]->last_node = 1; /* mark last node */
 
   if( keylen > 0 )
   {
@@ -209,7 +240,7 @@
     memset( block, 0, BLAKE2S_BLOCKBYTES );
     memcpy( block, key, keylen );
 
-    for( size_t i = 0; i < PARALLELISM_DEGREE; ++i )
+    for( i = 0; i < PARALLELISM_DEGREE; ++i )
       blake2s_update( S[i], block, BLAKE2S_BLOCKBYTES );
 
     secure_zero_memory( block, BLAKE2S_BLOCKBYTES ); /* Burn the key from stack */
@@ -219,31 +250,31 @@
   #pragma omp parallel shared(S,hash), num_threads(PARALLELISM_DEGREE)
 #else
 
-  for( size_t id__ = 0; id__ < PARALLELISM_DEGREE; ++id__ )
+  for( i = 0; i < PARALLELISM_DEGREE; ++i )
 #endif
   {
 #if defined(_OPENMP)
-    size_t      id__ = omp_get_thread_num();
+    size_t      i = omp_get_thread_num();
 #endif
-    uint64_t inlen__ = inlen;
-    const uint8_t *in__ = ( const uint8_t * )in;
-    in__ += id__ * BLAKE2S_BLOCKBYTES;
+    size_t inlen__ = inlen;
+    const unsigned char *in__ = ( const unsigned char * )in;
+    in__ += i * BLAKE2S_BLOCKBYTES;
 
     while( inlen__ >= PARALLELISM_DEGREE * BLAKE2S_BLOCKBYTES )
     {
-      blake2s_update( S[id__], in__, BLAKE2S_BLOCKBYTES );
+      blake2s_update( S[i], in__, BLAKE2S_BLOCKBYTES );
       in__ += PARALLELISM_DEGREE * BLAKE2S_BLOCKBYTES;
       inlen__ -= PARALLELISM_DEGREE * BLAKE2S_BLOCKBYTES;
     }
 
-    if( inlen__ > id__ * BLAKE2S_BLOCKBYTES )
+    if( inlen__ > i * BLAKE2S_BLOCKBYTES )
     {
-      const size_t left = inlen__ - id__ * BLAKE2S_BLOCKBYTES;
+      const size_t left = inlen__ - i * BLAKE2S_BLOCKBYTES;
       const size_t len = left <= BLAKE2S_BLOCKBYTES ? left : BLAKE2S_BLOCKBYTES;
-      blake2s_update( S[id__], in__, len );
+      blake2s_update( S[i], in__, len );
     }
 
-    blake2s_final( S[id__], hash[id__], BLAKE2S_OUTBYTES );
+    blake2s_final( S[i], hash[i], BLAKE2S_OUTBYTES );
   }
 
   if( blake2sp_init_root( FS, outlen, keylen ) < 0 )
@@ -251,7 +282,7 @@
 
   FS->last_node = 1;
 
-  for( size_t i = 0; i < PARALLELISM_DEGREE; ++i )
+  for( i = 0; i < PARALLELISM_DEGREE; ++i )
     blake2s_update( FS, hash[i], BLAKE2S_OUTBYTES );
 
   return blake2s_final( FS, out, outlen );
@@ -262,36 +293,67 @@
 #if defined(BLAKE2SP_SELFTEST)
 #include <string.h>
 #include "blake2-kat.h"
-int main( int argc, char **argv )
+int main( void )
 {
   uint8_t key[BLAKE2S_KEYBYTES];
-  uint8_t buf[KAT_LENGTH];
+  uint8_t buf[BLAKE2_KAT_LENGTH];
+  size_t i, step;
 
-  for( size_t i = 0; i < BLAKE2S_KEYBYTES; ++i )
+  for( i = 0; i < BLAKE2S_KEYBYTES; ++i )
     key[i] = ( uint8_t )i;
 
-  for( size_t i = 0; i < KAT_LENGTH; ++i )
+  for( i = 0; i < BLAKE2_KAT_LENGTH; ++i )
     buf[i] = ( uint8_t )i;
 
-  for( size_t i = 0; i < KAT_LENGTH; ++i )
+  /* Test simple API */
+  for( i = 0; i < BLAKE2_KAT_LENGTH; ++i )
   {
     uint8_t hash[BLAKE2S_OUTBYTES];
-    blake2sp( hash, buf, key, BLAKE2S_OUTBYTES, i, BLAKE2S_KEYBYTES );
+    blake2sp( hash, BLAKE2S_OUTBYTES, buf, i, key, BLAKE2S_KEYBYTES );
 
     if( 0 != memcmp( hash, blake2sp_keyed_kat[i], BLAKE2S_OUTBYTES ) )
     {
-      puts( "error" );
-      return -1;
+      goto fail;
     }
   }
 
-  puts( "ok" );
-  return 0;
-}
-#endif
-
-
+  /* Test streaming API */
+  for(step = 1; step < BLAKE2S_BLOCKBYTES; ++step) {
+    for (i = 0; i < BLAKE2_KAT_LENGTH; ++i) {
+      uint8_t hash[BLAKE2S_OUTBYTES];
+      blake2sp_state S;
+      uint8_t * p = buf;
+      size_t mlen = i;
+      int err = 0;
 
+      if( (err = blake2sp_init_key(&S, BLAKE2S_OUTBYTES, key, BLAKE2S_KEYBYTES)) < 0 ) {
+        goto fail;
+      }
 
+      while (mlen >= step) {
+        if ( (err = blake2sp_update(&S, p, step)) < 0 ) {
+          goto fail;
+        }
+        mlen -= step;
+        p += step;
+      }
+      if ( (err = blake2sp_update(&S, p, mlen)) < 0) {
+        goto fail;
+      }
+      if ( (err = blake2sp_final(&S, hash, BLAKE2S_OUTBYTES)) < 0) {
+        goto fail;
+      }
 
+      if (0 != memcmp(hash, blake2sp_keyed_kat[i], BLAKE2S_OUTBYTES)) {
+        goto fail;
+      }
+    }
+  }
 
+  puts( "ok" );
+  return 0;
+fail:
+  puts("error");
+  return -1;
+}
+#endif
diff --git a/cbits/blake2/sse/blake2-config.h b/cbits/blake2/sse/blake2-config.h
--- a/cbits/blake2/sse/blake2-config.h
+++ b/cbits/blake2/sse/blake2-config.h
@@ -1,21 +1,22 @@
 /*
    BLAKE2 reference source code package - optimized C implementations
 
-   Written in 2012 by Samuel Neves <sneves@dei.uc.pt>
+   Copyright 2012, Samuel Neves <sneves@dei.uc.pt>.  You may use this under the
+   terms of the CC0, the OpenSSL Licence, or the Apache Public License 2.0, at
+   your option.  The terms of these licenses can be found at:
 
-   To the extent possible under law, the author(s) have dedicated all copyright
-   and related and neighboring rights to this software to the public domain
-   worldwide. This software is distributed without any warranty.
+   - CC0 1.0 Universal : http://creativecommons.org/publicdomain/zero/1.0
+   - OpenSSL license   : https://www.openssl.org/source/license.html
+   - Apache 2.0        : http://www.apache.org/licenses/LICENSE-2.0
 
-   You should have received a copy of the CC0 Public Domain Dedication along with
-   this software. If not, see <http://creativecommons.org/publicdomain/zero/1.0/>.
+   More information about the BLAKE2 hash function can be found at
+   https://blake2.net.
 */
-#pragma once
-#ifndef __BLAKE2_CONFIG_H__
-#define __BLAKE2_CONFIG_H__
+#ifndef BLAKE2_CONFIG_H
+#define BLAKE2_CONFIG_H
 
-// These don't work everywhere
-#if defined(__SSE2__)
+/* These don't work everywhere */
+#if defined(__SSE2__) || defined(__x86_64__) || defined(__amd64__)
 #define HAVE_SSE2
 #endif
 
@@ -69,4 +70,3 @@
 #endif
 
 #endif
-
diff --git a/cbits/blake2/sse/blake2-impl.h b/cbits/blake2/sse/blake2-impl.h
--- a/cbits/blake2/sse/blake2-impl.h
+++ b/cbits/blake2/sse/blake2-impl.h
@@ -1,22 +1,36 @@
 /*
-   BLAKE2 reference source code package - optimized C implementations
+   BLAKE2 reference source code package - reference C implementations
 
-   Written in 2012 by Samuel Neves <sneves@dei.uc.pt>
+   Copyright 2012, Samuel Neves <sneves@dei.uc.pt>.  You may use this under the
+   terms of the CC0, the OpenSSL Licence, or the Apache Public License 2.0, at
+   your option.  The terms of these licenses can be found at:
 
-   To the extent possible under law, the author(s) have dedicated all copyright
-   and related and neighboring rights to this software to the public domain
-   worldwide. This software is distributed without any warranty.
+   - CC0 1.0 Universal : http://creativecommons.org/publicdomain/zero/1.0
+   - OpenSSL license   : https://www.openssl.org/source/license.html
+   - Apache 2.0        : http://www.apache.org/licenses/LICENSE-2.0
 
-   You should have received a copy of the CC0 Public Domain Dedication along with
-   this software. If not, see <http://creativecommons.org/publicdomain/zero/1.0/>.
+   More information about the BLAKE2 hash function can be found at
+   https://blake2.net.
 */
-#pragma once
-#ifndef __BLAKE2_IMPL_H__
-#define __BLAKE2_IMPL_H__
+#ifndef BLAKE2_IMPL_H
+#define BLAKE2_IMPL_H
 
 #include <stdint.h>
+#include <string.h>
 
-static inline uint32_t load32( const void *src )
+#if !defined(__cplusplus) && (!defined(__STDC_VERSION__) || __STDC_VERSION__ < 199901L)
+  #if   defined(_MSC_VER)
+    #define BLAKE2_INLINE __inline
+  #elif defined(__GNUC__)
+    #define BLAKE2_INLINE __inline__
+  #else
+    #define BLAKE2_INLINE
+  #endif
+#else
+  #define BLAKE2_INLINE inline
+#endif
+
+static BLAKE2_INLINE uint32_t load32( const void *src )
 {
 #if defined(NATIVE_LITTLE_ENDIAN)
   uint32_t w;
@@ -24,15 +38,14 @@
   return w;
 #else
   const uint8_t *p = ( const uint8_t * )src;
-  uint32_t w = *p++;
-  w |= ( uint32_t )( *p++ ) <<  8;
-  w |= ( uint32_t )( *p++ ) << 16;
-  w |= ( uint32_t )( *p++ ) << 24;
-  return w;
+  return (( uint32_t )( p[0] ) <<  0) |
+         (( uint32_t )( p[1] ) <<  8) |
+         (( uint32_t )( p[2] ) << 16) |
+         (( uint32_t )( p[3] ) << 24) ;
 #endif
 }
 
-static inline uint64_t load64( const void *src )
+static BLAKE2_INLINE uint64_t load64( const void *src )
 {
 #if defined(NATIVE_LITTLE_ENDIAN)
   uint64_t w;
@@ -40,97 +53,108 @@
   return w;
 #else
   const uint8_t *p = ( const uint8_t * )src;
-  uint64_t w = *p++;
-  w |= ( uint64_t )( *p++ ) <<  8;
-  w |= ( uint64_t )( *p++ ) << 16;
-  w |= ( uint64_t )( *p++ ) << 24;
-  w |= ( uint64_t )( *p++ ) << 32;
-  w |= ( uint64_t )( *p++ ) << 40;
-  w |= ( uint64_t )( *p++ ) << 48;
-  w |= ( uint64_t )( *p++ ) << 56;
-  return w;
+  return (( uint64_t )( p[0] ) <<  0) |
+         (( uint64_t )( p[1] ) <<  8) |
+         (( uint64_t )( p[2] ) << 16) |
+         (( uint64_t )( p[3] ) << 24) |
+         (( uint64_t )( p[4] ) << 32) |
+         (( uint64_t )( p[5] ) << 40) |
+         (( uint64_t )( p[6] ) << 48) |
+         (( uint64_t )( p[7] ) << 56) ;
 #endif
 }
 
-static inline void store32( void *dst, uint32_t w )
+static BLAKE2_INLINE uint16_t load16( const void *src )
 {
 #if defined(NATIVE_LITTLE_ENDIAN)
-  memcpy(dst, &w, sizeof w);
+  uint16_t w;
+  memcpy(&w, src, sizeof w);
+  return w;
 #else
-  uint8_t *p = ( uint8_t * )dst;
-  *p++ = ( uint8_t )w; w >>= 8;
-  *p++ = ( uint8_t )w; w >>= 8;
-  *p++ = ( uint8_t )w; w >>= 8;
-  *p++ = ( uint8_t )w;
+  const uint8_t *p = ( const uint8_t * )src;
+  return (( uint16_t )( p[0] ) <<  0) |
+         (( uint16_t )( p[1] ) <<  8) ;
 #endif
 }
 
-static inline void store64( void *dst, uint64_t w )
+static BLAKE2_INLINE void store16( void *dst, uint16_t w )
 {
 #if defined(NATIVE_LITTLE_ENDIAN)
   memcpy(dst, &w, sizeof w);
 #else
   uint8_t *p = ( uint8_t * )dst;
   *p++ = ( uint8_t )w; w >>= 8;
-  *p++ = ( uint8_t )w; w >>= 8;
-  *p++ = ( uint8_t )w; w >>= 8;
-  *p++ = ( uint8_t )w; w >>= 8;
-  *p++ = ( uint8_t )w; w >>= 8;
-  *p++ = ( uint8_t )w; w >>= 8;
-  *p++ = ( uint8_t )w; w >>= 8;
   *p++ = ( uint8_t )w;
 #endif
 }
 
-static inline uint64_t load48( const void *src )
+static BLAKE2_INLINE void store32( void *dst, uint32_t w )
 {
-  const uint8_t *p = ( const uint8_t * )src;
-  uint64_t w = *p++;
-  w |= ( uint64_t )( *p++ ) <<  8;
-  w |= ( uint64_t )( *p++ ) << 16;
-  w |= ( uint64_t )( *p++ ) << 24;
-  w |= ( uint64_t )( *p++ ) << 32;
-  w |= ( uint64_t )( *p++ ) << 40;
-  return w;
+#if defined(NATIVE_LITTLE_ENDIAN)
+  memcpy(dst, &w, sizeof w);
+#else
+  uint8_t *p = ( uint8_t * )dst;
+  p[0] = (uint8_t)(w >>  0);
+  p[1] = (uint8_t)(w >>  8);
+  p[2] = (uint8_t)(w >> 16);
+  p[3] = (uint8_t)(w >> 24);
+#endif
 }
 
-static inline void store48( void *dst, uint64_t w )
+static BLAKE2_INLINE void store64( void *dst, uint64_t w )
 {
+#if defined(NATIVE_LITTLE_ENDIAN)
+  memcpy(dst, &w, sizeof w);
+#else
   uint8_t *p = ( uint8_t * )dst;
-  *p++ = ( uint8_t )w; w >>= 8;
-  *p++ = ( uint8_t )w; w >>= 8;
-  *p++ = ( uint8_t )w; w >>= 8;
-  *p++ = ( uint8_t )w; w >>= 8;
-  *p++ = ( uint8_t )w; w >>= 8;
-  *p++ = ( uint8_t )w;
+  p[0] = (uint8_t)(w >>  0);
+  p[1] = (uint8_t)(w >>  8);
+  p[2] = (uint8_t)(w >> 16);
+  p[3] = (uint8_t)(w >> 24);
+  p[4] = (uint8_t)(w >> 32);
+  p[5] = (uint8_t)(w >> 40);
+  p[6] = (uint8_t)(w >> 48);
+  p[7] = (uint8_t)(w >> 56);
+#endif
 }
 
-static inline uint32_t rotl32( const uint32_t w, const unsigned c )
+static BLAKE2_INLINE uint64_t load48( const void *src )
 {
-  return ( w << c ) | ( w >> ( 32 - c ) );
+  const uint8_t *p = ( const uint8_t * )src;
+  return (( uint64_t )( p[0] ) <<  0) |
+         (( uint64_t )( p[1] ) <<  8) |
+         (( uint64_t )( p[2] ) << 16) |
+         (( uint64_t )( p[3] ) << 24) |
+         (( uint64_t )( p[4] ) << 32) |
+         (( uint64_t )( p[5] ) << 40) ;
 }
 
-static inline uint64_t rotl64( const uint64_t w, const unsigned c )
+static BLAKE2_INLINE void store48( void *dst, uint64_t w )
 {
-  return ( w << c ) | ( w >> ( 64 - c ) );
+  uint8_t *p = ( uint8_t * )dst;
+  p[0] = (uint8_t)(w >>  0);
+  p[1] = (uint8_t)(w >>  8);
+  p[2] = (uint8_t)(w >> 16);
+  p[3] = (uint8_t)(w >> 24);
+  p[4] = (uint8_t)(w >> 32);
+  p[5] = (uint8_t)(w >> 40);
 }
 
-static inline uint32_t rotr32( const uint32_t w, const unsigned c )
+static BLAKE2_INLINE uint32_t rotr32( const uint32_t w, const unsigned c )
 {
   return ( w >> c ) | ( w << ( 32 - c ) );
 }
 
-static inline uint64_t rotr64( const uint64_t w, const unsigned c )
+static BLAKE2_INLINE uint64_t rotr64( const uint64_t w, const unsigned c )
 {
   return ( w >> c ) | ( w << ( 64 - c ) );
 }
 
 /* prevents compiler optimizing out memset() */
-static inline void secure_zero_memory( void *v, size_t n )
+static BLAKE2_INLINE void secure_zero_memory(void *v, size_t n)
 {
-  volatile uint8_t *p = ( volatile uint8_t * )v;
-  while( n-- ) *p++ = 0;
+  static void *(*const volatile memset_v)(void *, int, size_t) = &memset;
+  memset_v(v, 0, n);
 }
 
 #endif
-
diff --git a/cbits/blake2/sse/blake2.h b/cbits/blake2/sse/blake2.h
--- a/cbits/blake2/sse/blake2.h
+++ b/cbits/blake2/sse/blake2.h
@@ -1,22 +1,29 @@
 /*
-   BLAKE2 reference source code package - optimized C implementations
+   BLAKE2 reference source code package - reference C implementations
 
-   Written in 2012 by Samuel Neves <sneves@dei.uc.pt>
+   Copyright 2012, Samuel Neves <sneves@dei.uc.pt>.  You may use this under the
+   terms of the CC0, the OpenSSL Licence, or the Apache Public License 2.0, at
+   your option.  The terms of these licenses can be found at:
 
-   To the extent possible under law, the author(s) have dedicated all copyright
-   and related and neighboring rights to this software to the public domain
-   worldwide. This software is distributed without any warranty.
+   - CC0 1.0 Universal : http://creativecommons.org/publicdomain/zero/1.0
+   - OpenSSL license   : https://www.openssl.org/source/license.html
+   - Apache 2.0        : http://www.apache.org/licenses/LICENSE-2.0
 
-   You should have received a copy of the CC0 Public Domain Dedication along with
-   this software. If not, see <http://creativecommons.org/publicdomain/zero/1.0/>.
+   More information about the BLAKE2 hash function can be found at
+   https://blake2.net.
 */
-#pragma once
-#ifndef __BLAKE2_H__
-#define __BLAKE2_H__
+#ifndef BLAKE2_H
+#define BLAKE2_H
 
 #include <stddef.h>
 #include <stdint.h>
 
+#if defined(_MSC_VER)
+#define BLAKE2_PACKED(x) __pragma(pack(push, 1)) x __pragma(pack(pop))
+#else
+#define BLAKE2_PACKED(x) x __attribute__((packed))
+#endif
+
 #if defined(__cplusplus)
 extern "C" {
 #endif
@@ -39,112 +46,150 @@
     BLAKE2B_PERSONALBYTES = 16
   };
 
-#pragma pack(push, 1)
-  typedef struct __blake2s_param
-  {
-    uint8_t  digest_length; // 1
-    uint8_t  key_length;    // 2
-    uint8_t  fanout;        // 3
-    uint8_t  depth;         // 4
-    uint32_t leaf_length;   // 8
-    uint8_t  node_offset[6];// 14
-    uint8_t  node_depth;    // 15
-    uint8_t  inner_length;  // 16
-    // uint8_t  reserved[0];
-    uint8_t  salt[BLAKE2S_SALTBYTES]; // 24
-    uint8_t  personal[BLAKE2S_PERSONALBYTES];  // 32
-  } blake2s_param;
-
-  typedef struct __blake2s_state
+  typedef struct blake2s_state__
   {
     uint32_t h[8];
     uint32_t t[2];
     uint32_t f[2];
-    uint8_t  buf[2 * BLAKE2S_BLOCKBYTES];
+    uint8_t  buf[BLAKE2S_BLOCKBYTES];
     size_t   buflen;
+    size_t   outlen;
     uint8_t  last_node;
   } blake2s_state;
 
-  typedef struct __blake2b_param
-  {
-    uint8_t  digest_length; // 1
-    uint8_t  key_length;    // 2
-    uint8_t  fanout;        // 3
-    uint8_t  depth;         // 4
-    uint32_t leaf_length;   // 8
-    uint64_t node_offset;   // 16
-    uint8_t  node_depth;    // 17
-    uint8_t  inner_length;  // 18
-    uint8_t  reserved[14];  // 32
-    uint8_t  salt[BLAKE2B_SALTBYTES]; // 48
-    uint8_t  personal[BLAKE2B_PERSONALBYTES];  // 64
-  } blake2b_param;
-
-  typedef struct __blake2b_state
+  typedef struct blake2b_state__
   {
     uint64_t h[8];
     uint64_t t[2];
     uint64_t f[2];
-    uint8_t  buf[2 * BLAKE2B_BLOCKBYTES];
+    uint8_t  buf[BLAKE2B_BLOCKBYTES];
     size_t   buflen;
+    size_t   outlen;
     uint8_t  last_node;
   } blake2b_state;
 
-  typedef struct __blake2sp_state
+  typedef struct blake2sp_state__
   {
     blake2s_state S[8][1];
     blake2s_state R[1];
-    uint8_t buf[8 * BLAKE2S_BLOCKBYTES];
-    size_t  buflen;
+    uint8_t       buf[8 * BLAKE2S_BLOCKBYTES];
+    size_t        buflen;
+    size_t        outlen;
   } blake2sp_state;
 
-  typedef struct __blake2bp_state
+  typedef struct blake2bp_state__
   {
     blake2b_state S[4][1];
     blake2b_state R[1];
-    uint8_t buf[4 * BLAKE2B_BLOCKBYTES];
-    size_t  buflen;
+    uint8_t       buf[4 * BLAKE2B_BLOCKBYTES];
+    size_t        buflen;
+    size_t        outlen;
   } blake2bp_state;
-#pragma pack(pop)
 
-  // Streaming API
-  int blake2s_init( blake2s_state *S, const uint8_t outlen );
-  int blake2s_init_key( blake2s_state *S, const uint8_t outlen, const void *key, const uint8_t keylen );
+
+  BLAKE2_PACKED(struct blake2s_param__
+  {
+    uint8_t  digest_length; /* 1 */
+    uint8_t  key_length;    /* 2 */
+    uint8_t  fanout;        /* 3 */
+    uint8_t  depth;         /* 4 */
+    uint32_t leaf_length;   /* 8 */
+    uint32_t node_offset;  /* 12 */
+    uint16_t xof_length;    /* 14 */
+    uint8_t  node_depth;    /* 15 */
+    uint8_t  inner_length;  /* 16 */
+    /* uint8_t  reserved[0]; */
+    uint8_t  salt[BLAKE2S_SALTBYTES]; /* 24 */
+    uint8_t  personal[BLAKE2S_PERSONALBYTES];  /* 32 */
+  });
+
+  typedef struct blake2s_param__ blake2s_param;
+
+  BLAKE2_PACKED(struct blake2b_param__
+  {
+    uint8_t  digest_length; /* 1 */
+    uint8_t  key_length;    /* 2 */
+    uint8_t  fanout;        /* 3 */
+    uint8_t  depth;         /* 4 */
+    uint32_t leaf_length;   /* 8 */
+    uint32_t node_offset;   /* 12 */
+    uint32_t xof_length;    /* 16 */
+    uint8_t  node_depth;    /* 17 */
+    uint8_t  inner_length;  /* 18 */
+    uint8_t  reserved[14];  /* 32 */
+    uint8_t  salt[BLAKE2B_SALTBYTES]; /* 48 */
+    uint8_t  personal[BLAKE2B_PERSONALBYTES];  /* 64 */
+  });
+
+  typedef struct blake2b_param__ blake2b_param;
+
+  typedef struct blake2xs_state__
+  {
+    blake2s_state S[1];
+    blake2s_param P[1];
+  } blake2xs_state;
+
+  typedef struct blake2xb_state__
+  {
+    blake2b_state S[1];
+    blake2b_param P[1];
+  } blake2xb_state;
+
+  /* Padded structs result in a compile-time error */
+  enum {
+    BLAKE2_DUMMY_1 = 1/(sizeof(blake2s_param) == BLAKE2S_OUTBYTES),
+    BLAKE2_DUMMY_2 = 1/(sizeof(blake2b_param) == BLAKE2B_OUTBYTES)
+  };
+
+  /* Streaming API */
+  int blake2s_init( blake2s_state *S, size_t outlen );
+  int blake2s_init_key( blake2s_state *S, size_t outlen, const void *key, size_t keylen );
   int blake2s_init_param( blake2s_state *S, const blake2s_param *P );
-  int blake2s_update( blake2s_state *S, const uint8_t *in, uint64_t inlen );
-  int blake2s_final( blake2s_state *S, uint8_t *out, uint8_t outlen );
+  int blake2s_update( blake2s_state *S, const void *in, size_t inlen );
+  int blake2s_final( blake2s_state *S, void *out, size_t outlen );
 
-  int blake2b_init( blake2b_state *S, const uint8_t outlen );
-  int blake2b_init_key( blake2b_state *S, const uint8_t outlen, const void *key, const uint8_t keylen );
+  int blake2b_init( blake2b_state *S, size_t outlen );
+  int blake2b_init_key( blake2b_state *S, size_t outlen, const void *key, size_t keylen );
   int blake2b_init_param( blake2b_state *S, const blake2b_param *P );
-  int blake2b_update( blake2b_state *S, const uint8_t *in, uint64_t inlen );
-  int blake2b_final( blake2b_state *S, uint8_t *out, uint8_t outlen );
+  int blake2b_update( blake2b_state *S, const void *in, size_t inlen );
+  int blake2b_final( blake2b_state *S, void *out, size_t outlen );
 
-  int blake2sp_init( blake2sp_state *S, const uint8_t outlen );
-  int blake2sp_init_key( blake2sp_state *S, const uint8_t outlen, const void *key, const uint8_t keylen );
-  int blake2sp_update( blake2sp_state *S, const uint8_t *in, uint64_t inlen );
-  int blake2sp_final( blake2sp_state *S, uint8_t *out, uint8_t outlen );
+  int blake2sp_init( blake2sp_state *S, size_t outlen );
+  int blake2sp_init_key( blake2sp_state *S, size_t outlen, const void *key, size_t keylen );
+  int blake2sp_update( blake2sp_state *S, const void *in, size_t inlen );
+  int blake2sp_final( blake2sp_state *S, void *out, size_t outlen );
 
-  int blake2bp_init( blake2bp_state *S, const uint8_t outlen );
-  int blake2bp_init_key( blake2bp_state *S, const uint8_t outlen, const void *key, const uint8_t keylen );
-  int blake2bp_update( blake2bp_state *S, const uint8_t *in, uint64_t inlen );
-  int blake2bp_final( blake2bp_state *S, uint8_t *out, uint8_t outlen );
+  int blake2bp_init( blake2bp_state *S, size_t outlen );
+  int blake2bp_init_key( blake2bp_state *S, size_t outlen, const void *key, size_t keylen );
+  int blake2bp_update( blake2bp_state *S, const void *in, size_t inlen );
+  int blake2bp_final( blake2bp_state *S, void *out, size_t outlen );
 
-  // Simple API
-  int blake2s( uint8_t *out, const void *in, const void *key, const uint8_t outlen, const uint64_t inlen, uint8_t keylen );
-  int blake2b( uint8_t *out, const void *in, const void *key, const uint8_t outlen, const uint64_t inlen, uint8_t keylen );
+  /* Variable output length API */
+  int blake2xs_init( blake2xs_state *S, const size_t outlen );
+  int blake2xs_init_key( blake2xs_state *S, const size_t outlen, const void *key, size_t keylen );
+  int blake2xs_update( blake2xs_state *S, const void *in, size_t inlen );
+  int blake2xs_final(blake2xs_state *S, void *out, size_t outlen);
 
-  int blake2sp( uint8_t *out, const void *in, const void *key, const uint8_t outlen, const uint64_t inlen, uint8_t keylen );
-  int blake2bp( uint8_t *out, const void *in, const void *key, const uint8_t outlen, const uint64_t inlen, uint8_t keylen );
+  int blake2xb_init( blake2xb_state *S, const size_t outlen );
+  int blake2xb_init_key( blake2xb_state *S, const size_t outlen, const void *key, size_t keylen );
+  int blake2xb_update( blake2xb_state *S, const void *in, size_t inlen );
+  int blake2xb_final(blake2xb_state *S, void *out, size_t outlen);
 
-  static inline int blake2( uint8_t *out, const void *in, const void *key, const uint8_t outlen, const uint64_t inlen, uint8_t keylen )
-  {
-    return blake2b( out, in, key, outlen, inlen, keylen );
-  }
+  /* Simple API */
+  int blake2s( void *out, size_t outlen, const void *in, size_t inlen, const void *key, size_t keylen );
+  int blake2b( void *out, size_t outlen, const void *in, size_t inlen, const void *key, size_t keylen );
 
+  int blake2sp( void *out, size_t outlen, const void *in, size_t inlen, const void *key, size_t keylen );
+  int blake2bp( void *out, size_t outlen, const void *in, size_t inlen, const void *key, size_t keylen );
+
+  int blake2xs( void *out, size_t outlen, const void *in, size_t inlen, const void *key, size_t keylen );
+  int blake2xb( void *out, size_t outlen, const void *in, size_t inlen, const void *key, size_t keylen );
+
+  /* This is simply an alias for blake2b */
+  int blake2( void *out, size_t outlen, const void *in, size_t inlen, const void *key, size_t keylen );
+
 #if defined(__cplusplus)
 }
 #endif
 
 #endif
-
diff --git a/cbits/blake2/sse/blake2b-load-sse2.h b/cbits/blake2/sse/blake2b-load-sse2.h
--- a/cbits/blake2/sse/blake2b-load-sse2.h
+++ b/cbits/blake2/sse/blake2b-load-sse2.h
@@ -1,18 +1,19 @@
 /*
    BLAKE2 reference source code package - optimized C implementations
 
-   Written in 2012 by Samuel Neves <sneves@dei.uc.pt>
+   Copyright 2012, Samuel Neves <sneves@dei.uc.pt>.  You may use this under the
+   terms of the CC0, the OpenSSL Licence, or the Apache Public License 2.0, at
+   your option.  The terms of these licenses can be found at:
 
-   To the extent possible under law, the author(s) have dedicated all copyright
-   and related and neighboring rights to this software to the public domain
-   worldwide. This software is distributed without any warranty.
+   - CC0 1.0 Universal : http://creativecommons.org/publicdomain/zero/1.0
+   - OpenSSL license   : https://www.openssl.org/source/license.html
+   - Apache 2.0        : http://www.apache.org/licenses/LICENSE-2.0
 
-   You should have received a copy of the CC0 Public Domain Dedication along with
-   this software. If not, see <http://creativecommons.org/publicdomain/zero/1.0/>.
+   More information about the BLAKE2 hash function can be found at
+   https://blake2.net.
 */
-#pragma once
-#ifndef __BLAKE2B_LOAD_SSE2_H__
-#define __BLAKE2B_LOAD_SSE2_H__
+#ifndef BLAKE2B_LOAD_SSE2_H
+#define BLAKE2B_LOAD_SSE2_H
 
 #define LOAD_MSG_0_1(b0, b1) b0 = _mm_set_epi64x(m2, m0); b1 = _mm_set_epi64x(m6, m4)
 #define LOAD_MSG_0_2(b0, b1) b0 = _mm_set_epi64x(m3, m1); b1 = _mm_set_epi64x(m7, m5)
@@ -65,4 +66,3 @@
 
 
 #endif
-
diff --git a/cbits/blake2/sse/blake2b-load-sse41.h b/cbits/blake2/sse/blake2b-load-sse41.h
--- a/cbits/blake2/sse/blake2b-load-sse41.h
+++ b/cbits/blake2/sse/blake2b-load-sse41.h
@@ -1,18 +1,19 @@
 /*
    BLAKE2 reference source code package - optimized C implementations
 
-   Written in 2012 by Samuel Neves <sneves@dei.uc.pt>
+   Copyright 2012, Samuel Neves <sneves@dei.uc.pt>.  You may use this under the
+   terms of the CC0, the OpenSSL Licence, or the Apache Public License 2.0, at
+   your option.  The terms of these licenses can be found at:
 
-   To the extent possible under law, the author(s) have dedicated all copyright
-   and related and neighboring rights to this software to the public domain
-   worldwide. This software is distributed without any warranty.
+   - CC0 1.0 Universal : http://creativecommons.org/publicdomain/zero/1.0
+   - OpenSSL license   : https://www.openssl.org/source/license.html
+   - Apache 2.0        : http://www.apache.org/licenses/LICENSE-2.0
 
-   You should have received a copy of the CC0 Public Domain Dedication along with
-   this software. If not, see <http://creativecommons.org/publicdomain/zero/1.0/>.
+   More information about the BLAKE2 hash function can be found at
+   https://blake2.net.
 */
-#pragma once
-#ifndef __BLAKE2B_LOAD_SSE41_H__
-#define __BLAKE2B_LOAD_SSE41_H__
+#ifndef BLAKE2B_LOAD_SSE41_H
+#define BLAKE2B_LOAD_SSE41_H
 
 #define LOAD_MSG_0_1(b0, b1) \
 do \
@@ -399,4 +400,3 @@
 
 
 #endif
-
diff --git a/cbits/blake2/sse/blake2b-round.h b/cbits/blake2/sse/blake2b-round.h
--- a/cbits/blake2/sse/blake2b-round.h
+++ b/cbits/blake2/sse/blake2b-round.h
@@ -1,18 +1,19 @@
 /*
    BLAKE2 reference source code package - optimized C implementations
 
-   Written in 2012 by Samuel Neves <sneves@dei.uc.pt>
+   Copyright 2012, Samuel Neves <sneves@dei.uc.pt>.  You may use this under the
+   terms of the CC0, the OpenSSL Licence, or the Apache Public License 2.0, at
+   your option.  The terms of these licenses can be found at:
 
-   To the extent possible under law, the author(s) have dedicated all copyright
-   and related and neighboring rights to this software to the public domain
-   worldwide. This software is distributed without any warranty.
+   - CC0 1.0 Universal : http://creativecommons.org/publicdomain/zero/1.0
+   - OpenSSL license   : https://www.openssl.org/source/license.html
+   - Apache 2.0        : http://www.apache.org/licenses/LICENSE-2.0
 
-   You should have received a copy of the CC0 Public Domain Dedication along with
-   this software. If not, see <http://creativecommons.org/publicdomain/zero/1.0/>.
+   More information about the BLAKE2 hash function can be found at
+   https://blake2.net.
 */
-#pragma once
-#ifndef __BLAKE2B_ROUND_H__
-#define __BLAKE2B_ROUND_H__
+#ifndef BLAKE2B_ROUND_H
+#define BLAKE2B_ROUND_H
 
 #define LOADU(p)  _mm_loadu_si128( (const __m128i *)(p) )
 #define STOREU(p,r) _mm_storeu_si128((__m128i *)(p), r)
@@ -59,7 +60,7 @@
   \
   row2l = _mm_roti_epi64(row2l, -24); \
   row2h = _mm_roti_epi64(row2h, -24); \
- 
+
 #define G2(row1l,row2l,row3l,row4l,row1h,row2h,row3h,row4h,b0,b1) \
   row1l = _mm_add_epi64(_mm_add_epi64(row1l, b0), row2l); \
   row1h = _mm_add_epi64(_mm_add_epi64(row1h, b1), row2h); \
@@ -78,7 +79,7 @@
   \
   row2l = _mm_roti_epi64(row2l, -63); \
   row2h = _mm_roti_epi64(row2h, -63); \
- 
+
 #if defined(HAVE_SSSE3)
 #define DIAGONALIZE(row1l,row2l,row3l,row4l,row1h,row2h,row3h,row4h) \
   t0 = _mm_alignr_epi8(row2h, row2l, 8); \
@@ -154,4 +155,3 @@
   UNDIAGONALIZE(row1l,row2l,row3l,row4l,row1h,row2h,row3h,row4h);
 
 #endif
-
diff --git a/cbits/blake2/sse/blake2b.c b/cbits/blake2/sse/blake2b.c
--- a/cbits/blake2/sse/blake2b.c
+++ b/cbits/blake2/sse/blake2b.c
@@ -1,14 +1,16 @@
 /*
    BLAKE2 reference source code package - optimized C implementations
 
-   Written in 2012 by Samuel Neves <sneves@dei.uc.pt>
+   Copyright 2012, Samuel Neves <sneves@dei.uc.pt>.  You may use this under the
+   terms of the CC0, the OpenSSL Licence, or the Apache Public License 2.0, at
+   your option.  The terms of these licenses can be found at:
 
-   To the extent possible under law, the author(s) have dedicated all copyright
-   and related and neighboring rights to this software to the public domain
-   worldwide. This software is distributed without any warranty.
+   - CC0 1.0 Universal : http://creativecommons.org/publicdomain/zero/1.0
+   - OpenSSL license   : https://www.openssl.org/source/license.html
+   - Apache 2.0        : http://www.apache.org/licenses/LICENSE-2.0
 
-   You should have received a copy of the CC0 Public Domain Dedication along with
-   this software. If not, see <http://creativecommons.org/publicdomain/zero/1.0/>.
+   More information about the BLAKE2 hash function can be found at
+   https://blake2.net.
 */
 
 #include <stdint.h>
@@ -47,196 +49,93 @@
   0x1f83d9abfb41bd6bULL, 0x5be0cd19137e2179ULL
 };
 
-static const uint8_t blake2b_sigma[12][16] =
-{
-  {  0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14, 15 } ,
-  { 14, 10,  4,  8,  9, 15, 13,  6,  1, 12,  0,  2, 11,  7,  5,  3 } ,
-  { 11,  8, 12,  0,  5,  2, 15, 13, 10, 14,  3,  6,  7,  1,  9,  4 } ,
-  {  7,  9,  3,  1, 13, 12, 11, 14,  2,  6,  5, 10,  4,  0, 15,  8 } ,
-  {  9,  0,  5,  7,  2,  4, 10, 15, 14,  1, 11, 12,  6,  8,  3, 13 } ,
-  {  2, 12,  6, 10,  0, 11,  8,  3,  4, 13,  7,  5, 15, 14,  1,  9 } ,
-  { 12,  5,  1, 15, 14, 13,  4, 10,  0,  7,  6,  3,  9,  2,  8, 11 } ,
-  { 13, 11,  7, 14, 12,  1,  3,  9,  5,  0, 15,  4,  8,  6,  2, 10 } ,
-  {  6, 15, 14,  9, 11,  3,  0,  8, 12,  2, 13,  7,  1,  4, 10,  5 } ,
-  { 10,  2,  8,  4,  7,  6,  1,  5, 15, 11,  9, 14,  3, 12, 13 , 0 } ,
-  {  0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14, 15 } ,
-  { 14, 10,  4,  8,  9, 15, 13,  6,  1, 12,  0,  2, 11,  7,  5,  3 }
-};
-
-
-/* Some helper functions, not necessarily useful */
-static inline int blake2b_set_lastnode( blake2b_state *S )
+/* Some helper functions */
+static void blake2b_set_lastnode( blake2b_state *S )
 {
-  S->f[1] = -1;
-  return 0;
+  S->f[1] = (uint64_t)-1;
 }
 
-static inline int blake2b_clear_lastnode( blake2b_state *S )
+static int blake2b_is_lastblock( const blake2b_state *S )
 {
-  S->f[1] = 0;
-  return 0;
+  return S->f[0] != 0;
 }
 
-static inline int blake2b_set_lastblock( blake2b_state *S )
+static void blake2b_set_lastblock( blake2b_state *S )
 {
   if( S->last_node ) blake2b_set_lastnode( S );
 
-  S->f[0] = -1;
-  return 0;
-}
-
-static inline int blake2b_clear_lastblock( blake2b_state *S )
-{
-  if( S->last_node ) blake2b_clear_lastnode( S );
-
-  S->f[0] = 0;
-  return 0;
+  S->f[0] = (uint64_t)-1;
 }
 
-
-static inline int blake2b_increment_counter( blake2b_state *S, const uint64_t inc )
+static void blake2b_increment_counter( blake2b_state *S, const uint64_t inc )
 {
-#if __x86_64__
-  // ADD/ADC chain
-  __uint128_t t = ( ( __uint128_t )S->t[1] << 64 ) | S->t[0];
-  t += inc;
-  S->t[0] = ( uint64_t )( t >>  0 );
-  S->t[1] = ( uint64_t )( t >> 64 );
-#else
   S->t[0] += inc;
   S->t[1] += ( S->t[0] < inc );
-#endif
-  return 0;
 }
 
-
-// Parameter-related functions
-static inline int blake2b_param_set_digest_length( blake2b_param *P, const uint8_t digest_length )
-{
-  P->digest_length = digest_length;
-  return 0;
-}
-
-static inline int blake2b_param_set_fanout( blake2b_param *P, const uint8_t fanout )
-{
-  P->fanout = fanout;
-  return 0;
-}
-
-static inline int blake2b_param_set_max_depth( blake2b_param *P, const uint8_t depth )
-{
-  P->depth = depth;
-  return 0;
-}
-
-static inline int blake2b_param_set_leaf_length( blake2b_param *P, const uint32_t leaf_length )
-{
-  P->leaf_length = leaf_length;
-  return 0;
-}
-
-static inline int blake2b_param_set_node_offset( blake2b_param *P, const uint64_t node_offset )
-{
-  P->node_offset = node_offset;
-  return 0;
-}
-
-static inline int blake2b_param_set_node_depth( blake2b_param *P, const uint8_t node_depth )
-{
-  P->node_depth = node_depth;
-  return 0;
-}
-
-static inline int blake2b_param_set_inner_length( blake2b_param *P, const uint8_t inner_length )
-{
-  P->inner_length = inner_length;
-  return 0;
-}
-
-static inline int blake2b_param_set_salt( blake2b_param *P, const uint8_t salt[BLAKE2B_SALTBYTES] )
-{
-  memcpy( P->salt, salt, BLAKE2B_SALTBYTES );
-  return 0;
-}
-
-static inline int blake2b_param_set_personal( blake2b_param *P, const uint8_t personal[BLAKE2B_PERSONALBYTES] )
-{
-  memcpy( P->personal, personal, BLAKE2B_PERSONALBYTES );
-  return 0;
-}
-
-static inline int blake2b_init0( blake2b_state *S )
-{
-  memset( S, 0, sizeof( blake2b_state ) );
-
-  for( int i = 0; i < 8; ++i ) S->h[i] = blake2b_IV[i];
-
-  return 0;
-}
-
 /* init xors IV with input parameter block */
-__attribute__((visibility ("hidden")))
 int blake2b_init_param( blake2b_state *S, const blake2b_param *P )
 {
-  //blake2b_init0( S );
-  const uint8_t * v = ( const uint8_t * )( blake2b_IV );
-  const uint8_t * p = ( const uint8_t * )( P );
-  uint8_t * h = ( uint8_t * )( S->h );
+  size_t i;
+  /*blake2b_init0( S ); */
+  const unsigned char * v = ( const unsigned char * )( blake2b_IV );
+  const unsigned char * p = ( const unsigned char * )( P );
+  unsigned char * h = ( unsigned char * )( S->h );
   /* IV XOR ParamBlock */
   memset( S, 0, sizeof( blake2b_state ) );
 
-  for( int i = 0; i < BLAKE2B_OUTBYTES; ++i ) h[i] = v[i] ^ p[i];
+  for( i = 0; i < BLAKE2B_OUTBYTES; ++i ) h[i] = v[i] ^ p[i];
 
+  S->outlen = P->digest_length;
   return 0;
 }
 
 
 /* Some sort of default parameter block initialization, for sequential blake2b */
-__attribute__((visibility ("hidden")))
-int blake2b_init( blake2b_state *S, const uint8_t outlen )
+int blake2b_init( blake2b_state *S, size_t outlen )
 {
+  blake2b_param P[1];
+
   if ( ( !outlen ) || ( outlen > BLAKE2B_OUTBYTES ) ) return -1;
 
-  const blake2b_param P =
-  {
-    outlen,
-    0,
-    1,
-    1,
-    0,
-    0,
-    0,
-    0,
-    {0},
-    {0},
-    {0}
-  };
-  return blake2b_init_param( S, &P );
+  P->digest_length = (uint8_t)outlen;
+  P->key_length    = 0;
+  P->fanout        = 1;
+  P->depth         = 1;
+  store32( &P->leaf_length, 0 );
+  store32( &P->node_offset, 0 );
+  store32( &P->xof_length, 0 );
+  P->node_depth    = 0;
+  P->inner_length  = 0;
+  memset( P->reserved, 0, sizeof( P->reserved ) );
+  memset( P->salt,     0, sizeof( P->salt ) );
+  memset( P->personal, 0, sizeof( P->personal ) );
+
+  return blake2b_init_param( S, P );
 }
 
-__attribute__((visibility ("hidden")))
-int blake2b_init_key( blake2b_state *S, const uint8_t outlen, const void *key, const uint8_t keylen )
+int blake2b_init_key( blake2b_state *S, size_t outlen, const void *key, size_t keylen )
 {
+  blake2b_param P[1];
+
   if ( ( !outlen ) || ( outlen > BLAKE2B_OUTBYTES ) ) return -1;
 
   if ( ( !keylen ) || keylen > BLAKE2B_KEYBYTES ) return -1;
 
-  const blake2b_param P =
-  {
-    outlen,
-    keylen,
-    1,
-    1,
-    0,
-    0,
-    0,
-    0,
-    {0},
-    {0},
-    {0}
-  };
+  P->digest_length = (uint8_t)outlen;
+  P->key_length    = (uint8_t)keylen;
+  P->fanout        = 1;
+  P->depth         = 1;
+  store32( &P->leaf_length, 0 );
+  store32( &P->node_offset, 0 );
+  store32( &P->xof_length, 0 );
+  P->node_depth    = 0;
+  P->inner_length  = 0;
+  memset( P->reserved, 0, sizeof( P->reserved ) );
+  memset( P->salt,     0, sizeof( P->salt ) );
+  memset( P->personal, 0, sizeof( P->personal ) );
 
-  if( blake2b_init_param( S, &P ) < 0 )
+  if( blake2b_init_param( S, P ) < 0 )
     return 0;
 
   {
@@ -249,7 +148,7 @@
   return 0;
 }
 
-static inline int blake2b_compress( blake2b_state *S, const uint8_t block[BLAKE2B_BLOCKBYTES] )
+static void blake2b_compress( blake2b_state *S, const uint8_t block[BLAKE2B_BLOCKBYTES] )
 {
   __m128i row1l, row1h;
   __m128i row2l, row2h;
@@ -271,22 +170,22 @@
   const __m128i m6 = LOADU( block + 96 );
   const __m128i m7 = LOADU( block + 112 );
 #else
-  const uint64_t  m0 = ( ( uint64_t * )block )[ 0];
-  const uint64_t  m1 = ( ( uint64_t * )block )[ 1];
-  const uint64_t  m2 = ( ( uint64_t * )block )[ 2];
-  const uint64_t  m3 = ( ( uint64_t * )block )[ 3];
-  const uint64_t  m4 = ( ( uint64_t * )block )[ 4];
-  const uint64_t  m5 = ( ( uint64_t * )block )[ 5];
-  const uint64_t  m6 = ( ( uint64_t * )block )[ 6];
-  const uint64_t  m7 = ( ( uint64_t * )block )[ 7];
-  const uint64_t  m8 = ( ( uint64_t * )block )[ 8];
-  const uint64_t  m9 = ( ( uint64_t * )block )[ 9];
-  const uint64_t m10 = ( ( uint64_t * )block )[10];
-  const uint64_t m11 = ( ( uint64_t * )block )[11];
-  const uint64_t m12 = ( ( uint64_t * )block )[12];
-  const uint64_t m13 = ( ( uint64_t * )block )[13];
-  const uint64_t m14 = ( ( uint64_t * )block )[14];
-  const uint64_t m15 = ( ( uint64_t * )block )[15];
+  const uint64_t  m0 = load64(block +  0 * sizeof(uint64_t));
+  const uint64_t  m1 = load64(block +  1 * sizeof(uint64_t));
+  const uint64_t  m2 = load64(block +  2 * sizeof(uint64_t));
+  const uint64_t  m3 = load64(block +  3 * sizeof(uint64_t));
+  const uint64_t  m4 = load64(block +  4 * sizeof(uint64_t));
+  const uint64_t  m5 = load64(block +  5 * sizeof(uint64_t));
+  const uint64_t  m6 = load64(block +  6 * sizeof(uint64_t));
+  const uint64_t  m7 = load64(block +  7 * sizeof(uint64_t));
+  const uint64_t  m8 = load64(block +  8 * sizeof(uint64_t));
+  const uint64_t  m9 = load64(block +  9 * sizeof(uint64_t));
+  const uint64_t m10 = load64(block + 10 * sizeof(uint64_t));
+  const uint64_t m11 = load64(block + 11 * sizeof(uint64_t));
+  const uint64_t m12 = load64(block + 12 * sizeof(uint64_t));
+  const uint64_t m13 = load64(block + 13 * sizeof(uint64_t));
+  const uint64_t m14 = load64(block + 14 * sizeof(uint64_t));
+  const uint64_t m15 = load64(block + 15 * sizeof(uint64_t));
 #endif
   row1l = LOADU( &S->h[0] );
   row1h = LOADU( &S->h[2] );
@@ -316,64 +215,56 @@
   row2h = _mm_xor_si128( row4h, row2h );
   STOREU( &S->h[4], _mm_xor_si128( LOADU( &S->h[4] ), row2l ) );
   STOREU( &S->h[6], _mm_xor_si128( LOADU( &S->h[6] ), row2h ) );
-  return 0;
 }
 
-__attribute__((visibility ("hidden")))
-int blake2b_update( blake2b_state *S, const uint8_t *in, uint64_t inlen )
+
+int blake2b_update( blake2b_state *S, const void *pin, size_t inlen )
 {
-  while( inlen > 0 )
+  const unsigned char * in = (const unsigned char *)pin;
+  if( inlen > 0 )
   {
     size_t left = S->buflen;
-    size_t fill = 2 * BLAKE2B_BLOCKBYTES - left;
-
+    size_t fill = BLAKE2B_BLOCKBYTES - left;
     if( inlen > fill )
     {
-      memcpy( S->buf + left, in, fill ); // Fill buffer
-      S->buflen += fill;
+      S->buflen = 0;
+      memcpy( S->buf + left, in, fill ); /* Fill buffer */
       blake2b_increment_counter( S, BLAKE2B_BLOCKBYTES );
-      blake2b_compress( S, S->buf ); // Compress
-      memcpy( S->buf, S->buf + BLAKE2B_BLOCKBYTES, BLAKE2B_BLOCKBYTES ); // Shift buffer left
-      S->buflen -= BLAKE2B_BLOCKBYTES;
-      in += fill;
-      inlen -= fill;
-    }
-    else // inlen <= fill
-    {
-      memcpy( S->buf + left, in, inlen );
-      S->buflen += inlen; // Be lazy, do not compress
-      in += inlen;
-      inlen -= inlen;
+      blake2b_compress( S, S->buf ); /* Compress */
+      in += fill; inlen -= fill;
+      while(inlen > BLAKE2B_BLOCKBYTES) {
+        blake2b_increment_counter(S, BLAKE2B_BLOCKBYTES);
+        blake2b_compress( S, in );
+        in += BLAKE2B_BLOCKBYTES;
+        inlen -= BLAKE2B_BLOCKBYTES;
+      }
     }
+    memcpy( S->buf + S->buflen, in, inlen );
+    S->buflen += inlen;
   }
-
   return 0;
 }
 
-__attribute__((visibility ("hidden")))
-int blake2b_final( blake2b_state *S, uint8_t *out, uint8_t outlen )
+
+int blake2b_final( blake2b_state *S, void *out, size_t outlen )
 {
-  if( outlen > BLAKE2B_OUTBYTES )
+  if( out == NULL || outlen < S->outlen )
     return -1;
 
-  if( S->buflen > BLAKE2B_BLOCKBYTES )
-  {
-    blake2b_increment_counter( S, BLAKE2B_BLOCKBYTES );
-    blake2b_compress( S, S->buf );
-    S->buflen -= BLAKE2B_BLOCKBYTES;
-    memcpy( S->buf, S->buf + BLAKE2B_BLOCKBYTES, S->buflen );
-  }
+  if( blake2b_is_lastblock( S ) )
+    return -1;
 
   blake2b_increment_counter( S, S->buflen );
   blake2b_set_lastblock( S );
-  memset( S->buf + S->buflen, 0, 2 * BLAKE2B_BLOCKBYTES - S->buflen ); /* Padding */
+  memset( S->buf + S->buflen, 0, BLAKE2B_BLOCKBYTES - S->buflen ); /* Padding */
   blake2b_compress( S, S->buf );
-  memcpy( out, &S->h[0], outlen );
+
+  memcpy( out, &S->h[0], S->outlen );
   return 0;
 }
 
-__attribute__((visibility ("hidden")))
-int blake2b( uint8_t *out, const void *in, const void *key, const uint8_t outlen, const uint64_t inlen, uint8_t keylen )
+
+int blake2b( void *out, size_t outlen, const void *in, size_t inlen, const void *key, size_t keylen )
 {
   blake2b_state S[1];
 
@@ -401,3 +292,82 @@
   blake2b_final( S, out, outlen );
   return 0;
 }
+
+int blake2( void *out, size_t outlen, const void *in, size_t inlen, const void *key, size_t keylen ) {
+  return blake2b(out, outlen, in, inlen, key, keylen);
+}
+
+#if defined(SUPERCOP)
+int crypto_hash( unsigned char *out, unsigned char *in, unsigned long long inlen )
+{
+  return blake2b( out, BLAKE2B_OUTBYTES, in, inlen, NULL, 0 );
+}
+#endif
+
+#if defined(BLAKE2B_SELFTEST)
+#include <string.h>
+#include "blake2-kat.h"
+int main( void )
+{
+  uint8_t key[BLAKE2B_KEYBYTES];
+  uint8_t buf[BLAKE2_KAT_LENGTH];
+  size_t i, step;
+
+  for( i = 0; i < BLAKE2B_KEYBYTES; ++i )
+    key[i] = ( uint8_t )i;
+
+  for( i = 0; i < BLAKE2_KAT_LENGTH; ++i )
+    buf[i] = ( uint8_t )i;
+
+  /* Test simple API */
+  for( i = 0; i < BLAKE2_KAT_LENGTH; ++i )
+  {
+    uint8_t hash[BLAKE2B_OUTBYTES];
+    blake2b( hash, BLAKE2B_OUTBYTES, buf, i, key, BLAKE2B_KEYBYTES );
+
+    if( 0 != memcmp( hash, blake2b_keyed_kat[i], BLAKE2B_OUTBYTES ) )
+    {
+      goto fail;
+    }
+  }
+
+  /* Test streaming API */
+  for(step = 1; step < BLAKE2B_BLOCKBYTES; ++step) {
+    for (i = 0; i < BLAKE2_KAT_LENGTH; ++i) {
+      uint8_t hash[BLAKE2B_OUTBYTES];
+      blake2b_state S;
+      uint8_t * p = buf;
+      size_t mlen = i;
+      int err = 0;
+
+      if( (err = blake2b_init_key(&S, BLAKE2B_OUTBYTES, key, BLAKE2B_KEYBYTES)) < 0 ) {
+        goto fail;
+      }
+
+      while (mlen >= step) {
+        if ( (err = blake2b_update(&S, p, step)) < 0 ) {
+          goto fail;
+        }
+        mlen -= step;
+        p += step;
+      }
+      if ( (err = blake2b_update(&S, p, mlen)) < 0) {
+        goto fail;
+      }
+      if ( (err = blake2b_final(&S, hash, BLAKE2B_OUTBYTES)) < 0) {
+        goto fail;
+      }
+
+      if (0 != memcmp(hash, blake2b_keyed_kat[i], BLAKE2B_OUTBYTES)) {
+        goto fail;
+      }
+    }
+  }
+
+  puts( "ok" );
+  return 0;
+fail:
+  puts("error");
+  return -1;
+}
+#endif
diff --git a/cbits/blake2/sse/blake2bp.c b/cbits/blake2/sse/blake2bp.c
--- a/cbits/blake2/sse/blake2bp.c
+++ b/cbits/blake2/sse/blake2bp.c
@@ -1,14 +1,16 @@
 /*
    BLAKE2 reference source code package - optimized C implementations
 
-   Written in 2012 by Samuel Neves <sneves@dei.uc.pt>
+   Copyright 2012, Samuel Neves <sneves@dei.uc.pt>.  You may use this under the
+   terms of the CC0, the OpenSSL Licence, or the Apache Public License 2.0, at
+   your option.  The terms of these licenses can be found at:
 
-   To the extent possible under law, the author(s) have dedicated all copyright
-   and related and neighboring rights to this software to the public domain
-   worldwide. This software is distributed without any warranty.
+   - CC0 1.0 Universal : http://creativecommons.org/publicdomain/zero/1.0
+   - OpenSSL license   : https://www.openssl.org/source/license.html
+   - Apache 2.0        : http://www.apache.org/licenses/LICENSE-2.0
 
-   You should have received a copy of the CC0 Public Domain Dedication along with
-   this software. If not, see <http://creativecommons.org/publicdomain/zero/1.0/>.
+   More information about the BLAKE2 hash function can be found at
+   https://blake2.net.
 */
 
 #include <stdio.h>
@@ -25,32 +27,48 @@
 
 #define PARALLELISM_DEGREE 4
 
-static inline int blake2bp_init_leaf( blake2b_state *S, uint8_t outlen, uint8_t keylen, uint64_t offset )
+/*
+  blake2b_init_param defaults to setting the expecting output length
+  from the digest_length parameter block field.
+
+  In some cases, however, we do not want this, as the output length
+  of these instances is given by inner_length instead.
+*/
+static int blake2bp_init_leaf_param( blake2b_state *S, const blake2b_param *P )
 {
+  int err = blake2b_init_param(S, P);
+  S->outlen = P->inner_length;
+  return err;
+}
+
+static int blake2bp_init_leaf( blake2b_state *S, size_t outlen, size_t keylen, uint64_t offset )
+{
   blake2b_param P[1];
-  P->digest_length = outlen;
-  P->key_length = keylen;
+  P->digest_length = (uint8_t)outlen;
+  P->key_length = (uint8_t)keylen;
   P->fanout = PARALLELISM_DEGREE;
   P->depth = 2;
   P->leaf_length = 0;
   P->node_offset = offset;
+  P->xof_length = 0;
   P->node_depth = 0;
   P->inner_length = BLAKE2B_OUTBYTES;
   memset( P->reserved, 0, sizeof( P->reserved ) );
   memset( P->salt, 0, sizeof( P->salt ) );
   memset( P->personal, 0, sizeof( P->personal ) );
-  return blake2b_init_param( S, P );
+  return blake2bp_init_leaf_param( S, P );
 }
 
-static inline int blake2bp_init_root( blake2b_state *S, uint8_t outlen, uint8_t keylen )
+static int blake2bp_init_root( blake2b_state *S, size_t outlen, size_t keylen )
 {
   blake2b_param P[1];
-  P->digest_length = outlen;
-  P->key_length = keylen;
+  P->digest_length = (uint8_t)outlen;
+  P->key_length = (uint8_t)keylen;
   P->fanout = PARALLELISM_DEGREE;
   P->depth = 2;
   P->leaf_length = 0;
   P->node_offset = 0;
+  P->xof_length = 0;
   P->node_depth = 1;
   P->inner_length = BLAKE2B_OUTBYTES;
   memset( P->reserved, 0, sizeof( P->reserved ) );
@@ -59,18 +77,20 @@
   return blake2b_init_param( S, P );
 }
 
-__attribute__((visibility ("hidden")))
-int blake2bp_init( blake2bp_state *S, const uint8_t outlen )
+
+int blake2bp_init( blake2bp_state *S, size_t outlen )
 {
+  size_t i;
   if( !outlen || outlen > BLAKE2B_OUTBYTES ) return -1;
 
   memset( S->buf, 0, sizeof( S->buf ) );
   S->buflen = 0;
+  S->outlen = outlen;
 
   if( blake2bp_init_root( S->R, outlen, 0 ) < 0 )
     return -1;
 
-  for( size_t i = 0; i < PARALLELISM_DEGREE; ++i )
+  for( i = 0; i < PARALLELISM_DEGREE; ++i )
     if( blake2bp_init_leaf( S->S[i], outlen, 0, i ) < 0 ) return -1;
 
   S->R->last_node = 1;
@@ -78,20 +98,22 @@
   return 0;
 }
 
-__attribute__((visibility ("hidden")))
-int blake2bp_init_key( blake2bp_state *S, const uint8_t outlen, const void *key, const uint8_t keylen )
+int blake2bp_init_key( blake2bp_state *S, size_t outlen, const void *key, size_t keylen )
 {
+  size_t i;
+
   if( !outlen || outlen > BLAKE2B_OUTBYTES ) return -1;
 
   if( !key || !keylen || keylen > BLAKE2B_KEYBYTES ) return -1;
 
   memset( S->buf, 0, sizeof( S->buf ) );
   S->buflen = 0;
+  S->outlen = outlen;
 
   if( blake2bp_init_root( S->R, outlen, keylen ) < 0 )
     return -1;
 
-  for( size_t i = 0; i < PARALLELISM_DEGREE; ++i )
+  for( i = 0; i < PARALLELISM_DEGREE; ++i )
     if( blake2bp_init_leaf( S->S[i], outlen, keylen, i ) < 0 ) return -1;
 
   S->R->last_node = 1;
@@ -101,7 +123,7 @@
     memset( block, 0, BLAKE2B_BLOCKBYTES );
     memcpy( block, key, keylen );
 
-    for( size_t i = 0; i < PARALLELISM_DEGREE; ++i )
+    for( i = 0; i < PARALLELISM_DEGREE; ++i )
       blake2b_update( S->S[i], block, BLAKE2B_BLOCKBYTES );
 
     secure_zero_memory( block, BLAKE2B_BLOCKBYTES ); /* Burn the key from stack */
@@ -109,17 +131,19 @@
   return 0;
 }
 
-__attribute__((visibility ("hidden")))
-int blake2bp_update( blake2bp_state *S, const uint8_t *in, uint64_t inlen )
+
+int blake2bp_update( blake2bp_state *S, const void *pin, size_t inlen )
 {
+  const unsigned char * in = (const unsigned char *)pin;
   size_t left = S->buflen;
   size_t fill = sizeof( S->buf ) - left;
+  size_t i;
 
   if( left && inlen >= fill )
   {
     memcpy( S->buf + left, in, fill );
 
-    for( size_t i = 0; i < PARALLELISM_DEGREE; ++i )
+    for( i = 0; i < PARALLELISM_DEGREE; ++i )
       blake2b_update( S->S[i], S->buf + i * BLAKE2B_BLOCKBYTES, BLAKE2B_BLOCKBYTES );
 
     in += fill;
@@ -131,19 +155,19 @@
   #pragma omp parallel shared(S), num_threads(PARALLELISM_DEGREE)
 #else
 
-  for( size_t id__ = 0; id__ < PARALLELISM_DEGREE; ++id__ )
+  for( i = 0; i < PARALLELISM_DEGREE; ++i )
 #endif
   {
 #if defined(_OPENMP)
-    size_t      id__ = omp_get_thread_num();
+    size_t      i = omp_get_thread_num();
 #endif
-    uint64_t inlen__ = inlen;
-    const uint8_t *in__ = ( const uint8_t * )in;
-    in__ += id__ * BLAKE2B_BLOCKBYTES;
+    size_t inlen__ = inlen;
+    const unsigned char *in__ = ( const unsigned char * )in;
+    in__ += i * BLAKE2B_BLOCKBYTES;
 
     while( inlen__ >= PARALLELISM_DEGREE * BLAKE2B_BLOCKBYTES )
     {
-      blake2b_update( S->S[id__], in__, BLAKE2B_BLOCKBYTES );
+      blake2b_update( S->S[i], in__, BLAKE2B_BLOCKBYTES );
       in__ += PARALLELISM_DEGREE * BLAKE2B_BLOCKBYTES;
       inlen__ -= PARALLELISM_DEGREE * BLAKE2B_BLOCKBYTES;
     }
@@ -160,12 +184,17 @@
 }
 
 
-__attribute__((visibility ("hidden")))
-int blake2bp_final( blake2bp_state *S, uint8_t *out, const uint8_t outlen )
+
+int blake2bp_final( blake2bp_state *S, void *out, size_t outlen )
 {
   uint8_t hash[PARALLELISM_DEGREE][BLAKE2B_OUTBYTES];
+  size_t i;
 
-  for( size_t i = 0; i < PARALLELISM_DEGREE; ++i )
+  if(out == NULL || outlen < S->outlen) {
+    return -1;
+  }
+
+  for( i = 0; i < PARALLELISM_DEGREE; ++i )
   {
     if( S->buflen > i * BLAKE2B_BLOCKBYTES )
     {
@@ -179,18 +208,18 @@
     blake2b_final( S->S[i], hash[i], BLAKE2B_OUTBYTES );
   }
 
-  for( size_t i = 0; i < PARALLELISM_DEGREE; ++i )
+  for( i = 0; i < PARALLELISM_DEGREE; ++i )
     blake2b_update( S->R, hash[i], BLAKE2B_OUTBYTES );
 
-  return blake2b_final( S->R, out, outlen );
+  return blake2b_final( S->R, out, S->outlen );
 }
 
-__attribute__((visibility ("hidden")))
-int blake2bp( uint8_t *out, const void *in, const void *key, uint8_t outlen, uint64_t inlen, uint8_t keylen )
+int blake2bp( void *out, size_t outlen, const void *in, size_t inlen, const void *key, size_t keylen )
 {
   uint8_t hash[PARALLELISM_DEGREE][BLAKE2B_OUTBYTES];
   blake2b_state S[PARALLELISM_DEGREE][1];
   blake2b_state FS[1];
+  size_t i;
 
   /* Verify parameters */
   if ( NULL == in && inlen > 0 ) return -1;
@@ -203,10 +232,10 @@
 
   if( keylen > BLAKE2B_KEYBYTES ) return -1;
 
-  for( size_t i = 0; i < PARALLELISM_DEGREE; ++i )
+  for( i = 0; i < PARALLELISM_DEGREE; ++i )
     if( blake2bp_init_leaf( S[i], outlen, keylen, i ) < 0 ) return -1;
 
-  S[PARALLELISM_DEGREE - 1]->last_node = 1; // mark last node
+  S[PARALLELISM_DEGREE - 1]->last_node = 1; /* mark last node */
 
   if( keylen > 0 )
   {
@@ -214,7 +243,7 @@
     memset( block, 0, BLAKE2B_BLOCKBYTES );
     memcpy( block, key, keylen );
 
-    for( size_t i = 0; i < PARALLELISM_DEGREE; ++i )
+    for( i = 0; i < PARALLELISM_DEGREE; ++i )
       blake2b_update( S[i], block, BLAKE2B_BLOCKBYTES );
 
     secure_zero_memory( block, BLAKE2B_BLOCKBYTES ); /* Burn the key from stack */
@@ -224,40 +253,109 @@
   #pragma omp parallel shared(S,hash), num_threads(PARALLELISM_DEGREE)
 #else
 
-  for( size_t id__ = 0; id__ < PARALLELISM_DEGREE; ++id__ )
+  for( i = 0; i < PARALLELISM_DEGREE; ++i )
 #endif
   {
 #if defined(_OPENMP)
-    size_t      id__ = omp_get_thread_num();
+    size_t      i = omp_get_thread_num();
 #endif
-    uint64_t inlen__ = inlen;
-    const uint8_t *in__ = ( const uint8_t * )in;
-    in__ += id__ * BLAKE2B_BLOCKBYTES;
+    size_t inlen__ = inlen;
+    const unsigned char *in__ = ( const unsigned char * )in;
+    in__ += i * BLAKE2B_BLOCKBYTES;
 
     while( inlen__ >= PARALLELISM_DEGREE * BLAKE2B_BLOCKBYTES )
     {
-      blake2b_update( S[id__], in__, BLAKE2B_BLOCKBYTES );
+      blake2b_update( S[i], in__, BLAKE2B_BLOCKBYTES );
       in__ += PARALLELISM_DEGREE * BLAKE2B_BLOCKBYTES;
       inlen__ -= PARALLELISM_DEGREE * BLAKE2B_BLOCKBYTES;
     }
 
-    if( inlen__ > id__ * BLAKE2B_BLOCKBYTES )
+    if( inlen__ > i * BLAKE2B_BLOCKBYTES )
     {
-      const size_t left = inlen__ - id__ * BLAKE2B_BLOCKBYTES;
+      const size_t left = inlen__ - i * BLAKE2B_BLOCKBYTES;
       const size_t len = left <= BLAKE2B_BLOCKBYTES ? left : BLAKE2B_BLOCKBYTES;
-      blake2b_update( S[id__], in__, len );
+      blake2b_update( S[i], in__, len );
     }
 
-    blake2b_final( S[id__], hash[id__], BLAKE2B_OUTBYTES );
+    blake2b_final( S[i], hash[i], BLAKE2B_OUTBYTES );
   }
 
   if( blake2bp_init_root( FS, outlen, keylen ) < 0 )
     return -1;
 
-  FS->last_node = 1; // Mark as last node
+  FS->last_node = 1; /* Mark as last node */
 
-  for( size_t i = 0; i < PARALLELISM_DEGREE; ++i )
+  for( i = 0; i < PARALLELISM_DEGREE; ++i )
     blake2b_update( FS, hash[i], BLAKE2B_OUTBYTES );
 
   return blake2b_final( FS, out, outlen );
 }
+
+
+#if defined(BLAKE2BP_SELFTEST)
+#include <string.h>
+#include "blake2-kat.h"
+int main( void )
+{
+  uint8_t key[BLAKE2B_KEYBYTES];
+  uint8_t buf[BLAKE2_KAT_LENGTH];
+  size_t i, step;
+
+  for( i = 0; i < BLAKE2B_KEYBYTES; ++i )
+    key[i] = ( uint8_t )i;
+
+  for( i = 0; i < BLAKE2_KAT_LENGTH; ++i )
+    buf[i] = ( uint8_t )i;
+
+  /* Test simple API */
+  for( i = 0; i < BLAKE2_KAT_LENGTH; ++i )
+  {
+    uint8_t hash[BLAKE2B_OUTBYTES];
+    blake2bp( hash, BLAKE2B_OUTBYTES, buf, i, key, BLAKE2B_KEYBYTES );
+
+    if( 0 != memcmp( hash, blake2bp_keyed_kat[i], BLAKE2B_OUTBYTES ) )
+    {
+      goto fail;
+    }
+  }
+
+  /* Test streaming API */
+  for(step = 1; step < BLAKE2B_BLOCKBYTES; ++step) {
+    for (i = 0; i < BLAKE2_KAT_LENGTH; ++i) {
+      uint8_t hash[BLAKE2B_OUTBYTES];
+      blake2bp_state S;
+      uint8_t * p = buf;
+      size_t mlen = i;
+      int err = 0;
+
+      if( (err = blake2bp_init_key(&S, BLAKE2B_OUTBYTES, key, BLAKE2B_KEYBYTES)) < 0 ) {
+        goto fail;
+      }
+
+      while (mlen >= step) {
+        if ( (err = blake2bp_update(&S, p, step)) < 0 ) {
+          goto fail;
+        }
+        mlen -= step;
+        p += step;
+      }
+      if ( (err = blake2bp_update(&S, p, mlen)) < 0) {
+        goto fail;
+      }
+      if ( (err = blake2bp_final(&S, hash, BLAKE2B_OUTBYTES)) < 0) {
+        goto fail;
+      }
+
+      if (0 != memcmp(hash, blake2bp_keyed_kat[i], BLAKE2B_OUTBYTES)) {
+        goto fail;
+      }
+    }
+  }
+
+  puts( "ok" );
+  return 0;
+fail:
+  puts("error");
+  return -1;
+}
+#endif
diff --git a/cbits/blake2/sse/blake2s-load-sse2.h b/cbits/blake2/sse/blake2s-load-sse2.h
--- a/cbits/blake2/sse/blake2s-load-sse2.h
+++ b/cbits/blake2/sse/blake2s-load-sse2.h
@@ -1,18 +1,19 @@
 /*
    BLAKE2 reference source code package - optimized C implementations
 
-   Written in 2012 by Samuel Neves <sneves@dei.uc.pt>
+   Copyright 2012, Samuel Neves <sneves@dei.uc.pt>.  You may use this under the
+   terms of the CC0, the OpenSSL Licence, or the Apache Public License 2.0, at
+   your option.  The terms of these licenses can be found at:
 
-   To the extent possible under law, the author(s) have dedicated all copyright
-   and related and neighboring rights to this software to the public domain
-   worldwide. This software is distributed without any warranty.
+   - CC0 1.0 Universal : http://creativecommons.org/publicdomain/zero/1.0
+   - OpenSSL license   : https://www.openssl.org/source/license.html
+   - Apache 2.0        : http://www.apache.org/licenses/LICENSE-2.0
 
-   You should have received a copy of the CC0 Public Domain Dedication along with
-   this software. If not, see <http://creativecommons.org/publicdomain/zero/1.0/>.
+   More information about the BLAKE2 hash function can be found at
+   https://blake2.net.
 */
-#pragma once
-#ifndef __BLAKE2S_LOAD_SSE2_H__
-#define __BLAKE2S_LOAD_SSE2_H__
+#ifndef BLAKE2S_LOAD_SSE2_H
+#define BLAKE2S_LOAD_SSE2_H
 
 #define LOAD_MSG_0_1(buf) buf = _mm_set_epi32(m6,m4,m2,m0)
 #define LOAD_MSG_0_2(buf) buf = _mm_set_epi32(m7,m5,m3,m1)
diff --git a/cbits/blake2/sse/blake2s-load-sse41.h b/cbits/blake2/sse/blake2s-load-sse41.h
--- a/cbits/blake2/sse/blake2s-load-sse41.h
+++ b/cbits/blake2/sse/blake2s-load-sse41.h
@@ -1,18 +1,19 @@
 /*
    BLAKE2 reference source code package - optimized C implementations
 
-   Written in 2012 by Samuel Neves <sneves@dei.uc.pt>
+   Copyright 2012, Samuel Neves <sneves@dei.uc.pt>.  You may use this under the
+   terms of the CC0, the OpenSSL Licence, or the Apache Public License 2.0, at
+   your option.  The terms of these licenses can be found at:
 
-   To the extent possible under law, the author(s) have dedicated all copyright
-   and related and neighboring rights to this software to the public domain
-   worldwide. This software is distributed without any warranty.
+   - CC0 1.0 Universal : http://creativecommons.org/publicdomain/zero/1.0
+   - OpenSSL license   : https://www.openssl.org/source/license.html
+   - Apache 2.0        : http://www.apache.org/licenses/LICENSE-2.0
 
-   You should have received a copy of the CC0 Public Domain Dedication along with
-   this software. If not, see <http://creativecommons.org/publicdomain/zero/1.0/>.
+   More information about the BLAKE2 hash function can be found at
+   https://blake2.net.
 */
-#pragma once
-#ifndef __BLAKE2S_LOAD_SSE41_H__
-#define __BLAKE2S_LOAD_SSE41_H__
+#ifndef BLAKE2S_LOAD_SSE41_H
+#define BLAKE2S_LOAD_SSE41_H
 
 #define LOAD_MSG_0_1(buf) \
 buf = TOI(_mm_shuffle_ps(TOF(m0), TOF(m1), _MM_SHUFFLE(2,0,2,0)));
@@ -226,4 +227,3 @@
 buf = _mm_shuffle_epi32(t2,_MM_SHUFFLE(0,1,2,3));
 
 #endif
-
diff --git a/cbits/blake2/sse/blake2s-load-xop.h b/cbits/blake2/sse/blake2s-load-xop.h
--- a/cbits/blake2/sse/blake2s-load-xop.h
+++ b/cbits/blake2/sse/blake2s-load-xop.h
@@ -1,31 +1,34 @@
 /*
    BLAKE2 reference source code package - optimized C implementations
 
-   Written in 2012 by Samuel Neves <sneves@dei.uc.pt>
+   Copyright 2012, Samuel Neves <sneves@dei.uc.pt>.  You may use this under the
+   terms of the CC0, the OpenSSL Licence, or the Apache Public License 2.0, at
+   your option.  The terms of these licenses can be found at:
 
-   To the extent possible under law, the author(s) have dedicated all copyright
-   and related and neighboring rights to this software to the public domain
-   worldwide. This software is distributed without any warranty.
+   - CC0 1.0 Universal : http://creativecommons.org/publicdomain/zero/1.0
+   - OpenSSL license   : https://www.openssl.org/source/license.html
+   - Apache 2.0        : http://www.apache.org/licenses/LICENSE-2.0
 
-   You should have received a copy of the CC0 Public Domain Dedication along with
-   this software. If not, see <http://creativecommons.org/publicdomain/zero/1.0/>.
+   More information about the BLAKE2 hash function can be found at
+   https://blake2.net.
 */
-#pragma once
-#ifndef __BLAKE2S_LOAD_XOP_H__
-#define __BLAKE2S_LOAD_XOP_H__
+#ifndef BLAKE2S_LOAD_XOP_H
+#define BLAKE2S_LOAD_XOP_H
 
-#define TOB(x) ((x)*4*0x01010101 + 0x03020100) // ..or not TOB
+#define TOB(x) ((x)*4*0x01010101 + 0x03020100) /* ..or not TOB */
 
+#if 0
 /* Basic VPPERM emulation, for testing purposes */
-/*static __m128i _mm_perm_epi8(const __m128i src1, const __m128i src2, const __m128i sel)
+static __m128i _mm_perm_epi8(const __m128i src1, const __m128i src2, const __m128i sel)
 {
    const __m128i sixteen = _mm_set1_epi8(16);
    const __m128i t0 = _mm_shuffle_epi8(src1, sel);
    const __m128i s1 = _mm_shuffle_epi8(src2, _mm_sub_epi8(sel, sixteen));
    const __m128i mask = _mm_or_si128(_mm_cmpeq_epi8(sel, sixteen),
-                                     _mm_cmpgt_epi8(sel, sixteen)); // (>=16) = 0xff : 00
+                                     _mm_cmpgt_epi8(sel, sixteen)); /* (>=16) = 0xff : 00 */
    return _mm_blendv_epi8(t0, s1, mask);
-}*/
+}
+#endif
 
 #define LOAD_MSG_0_1(buf) \
 buf = _mm_perm_epi8(m0, m1, _mm_set_epi32(TOB(6),TOB(4),TOB(2),TOB(0)) );
@@ -166,7 +169,7 @@
 #define LOAD_MSG_8_3(buf) \
 t0 = _mm_perm_epi8(m0, m2, _mm_set_epi32(TOB(6),TOB(1),TOB(0),TOB(0)) ); \
 buf = _mm_perm_epi8(t0, m3, _mm_set_epi32(TOB(3),TOB(2),TOB(5),TOB(4)) ); \
- 
+
 #define LOAD_MSG_8_4(buf) \
 buf = _mm_perm_epi8(m0, m1, _mm_set_epi32(TOB(5),TOB(4),TOB(7),TOB(2)) );
 
@@ -186,4 +189,3 @@
 buf = _mm_perm_epi8(t1, m3, _mm_set_epi32(TOB(3),TOB(4),TOB(6),TOB(0)) );
 
 #endif
-
diff --git a/cbits/blake2/sse/blake2s-round.h b/cbits/blake2/sse/blake2s-round.h
--- a/cbits/blake2/sse/blake2s-round.h
+++ b/cbits/blake2/sse/blake2s-round.h
@@ -1,18 +1,19 @@
 /*
    BLAKE2 reference source code package - optimized C implementations
 
-   Written in 2012 by Samuel Neves <sneves@dei.uc.pt>
+   Copyright 2012, Samuel Neves <sneves@dei.uc.pt>.  You may use this under the
+   terms of the CC0, the OpenSSL Licence, or the Apache Public License 2.0, at
+   your option.  The terms of these licenses can be found at:
 
-   To the extent possible under law, the author(s) have dedicated all copyright
-   and related and neighboring rights to this software to the public domain
-   worldwide. This software is distributed without any warranty.
+   - CC0 1.0 Universal : http://creativecommons.org/publicdomain/zero/1.0
+   - OpenSSL license   : https://www.openssl.org/source/license.html
+   - Apache 2.0        : http://www.apache.org/licenses/LICENSE-2.0
 
-   You should have received a copy of the CC0 Public Domain Dedication along with
-   this software. If not, see <http://creativecommons.org/publicdomain/zero/1.0/>.
+   More information about the BLAKE2 hash function can be found at
+   https://blake2.net.
 */
-#pragma once
-#ifndef __BLAKE2S_ROUND_H__
-#define __BLAKE2S_ROUND_H__
+#ifndef BLAKE2S_ROUND_H
+#define BLAKE2S_ROUND_H
 
 #define LOADU(p)  _mm_loadu_si128( (const __m128i *)(p) )
 #define STOREU(p,r) _mm_storeu_si128((__m128i *)(p), r)
@@ -83,6 +84,5 @@
   LOAD_MSG_ ##r ##_4(buf4); \
   G2(row1,row2,row3,row4,buf4); \
   UNDIAGONALIZE(row1,row2,row3,row4); \
- 
-#endif
 
+#endif
diff --git a/cbits/blake2/sse/blake2s.c b/cbits/blake2/sse/blake2s.c
--- a/cbits/blake2/sse/blake2s.c
+++ b/cbits/blake2/sse/blake2s.c
@@ -1,14 +1,16 @@
 /*
    BLAKE2 reference source code package - optimized C implementations
 
-   Written in 2012 by Samuel Neves <sneves@dei.uc.pt>
+   Copyright 2012, Samuel Neves <sneves@dei.uc.pt>.  You may use this under the
+   terms of the CC0, the OpenSSL Licence, or the Apache Public License 2.0, at
+   your option.  The terms of these licenses can be found at:
 
-   To the extent possible under law, the author(s) have dedicated all copyright
-   and related and neighboring rights to this software to the public domain
-   worldwide. This software is distributed without any warranty.
+   - CC0 1.0 Universal : http://creativecommons.org/publicdomain/zero/1.0
+   - OpenSSL license   : https://www.openssl.org/source/license.html
+   - Apache 2.0        : http://www.apache.org/licenses/LICENSE-2.0
 
-   You should have received a copy of the CC0 Public Domain Dedication along with
-   this software. If not, see <http://creativecommons.org/publicdomain/zero/1.0/>.
+   More information about the BLAKE2 hash function can be found at
+   https://blake2.net.
 */
 
 #include <stdint.h>
@@ -43,187 +45,98 @@
   0x510E527FUL, 0x9B05688CUL, 0x1F83D9ABUL, 0x5BE0CD19UL
 };
 
-static const uint8_t blake2s_sigma[10][16] =
-{
-  {  0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14, 15 } ,
-  { 14, 10,  4,  8,  9, 15, 13,  6,  1, 12,  0,  2, 11,  7,  5,  3 } ,
-  { 11,  8, 12,  0,  5,  2, 15, 13, 10, 14,  3,  6,  7,  1,  9,  4 } ,
-  {  7,  9,  3,  1, 13, 12, 11, 14,  2,  6,  5, 10,  4,  0, 15,  8 } ,
-  {  9,  0,  5,  7,  2,  4, 10, 15, 14,  1, 11, 12,  6,  8,  3, 13 } ,
-  {  2, 12,  6, 10,  0, 11,  8,  3,  4, 13,  7,  5, 15, 14,  1,  9 } ,
-  { 12,  5,  1, 15, 14, 13,  4, 10,  0,  7,  6,  3,  9,  2,  8, 11 } ,
-  { 13, 11,  7, 14, 12,  1,  3,  9,  5,  0, 15,  4,  8,  6,  2, 10 } ,
-  {  6, 15, 14,  9, 11,  3,  0,  8, 12,  2, 13,  7,  1,  4, 10,  5 } ,
-  { 10,  2,  8,  4,  7,  6,  1,  5, 15, 11,  9, 14,  3, 12, 13 , 0 } ,
-};
-
-
-/* Some helper functions, not necessarily useful */
-static inline int blake2s_set_lastnode( blake2s_state *S )
+/* Some helper functions */
+static void blake2s_set_lastnode( blake2s_state *S )
 {
-  S->f[1] = -1;
-  return 0;
+  S->f[1] = (uint32_t)-1;
 }
 
-static inline int blake2s_clear_lastnode( blake2s_state *S )
+static int blake2s_is_lastblock( const blake2s_state *S )
 {
-  S->f[1] = 0;
-  return 0;
+  return S->f[0] != 0;
 }
 
-static inline int blake2s_set_lastblock( blake2s_state *S )
+static void blake2s_set_lastblock( blake2s_state *S )
 {
   if( S->last_node ) blake2s_set_lastnode( S );
 
-  S->f[0] = -1;
-  return 0;
-}
-
-static inline int blake2s_clear_lastblock( blake2s_state *S )
-{
-  if( S->last_node ) blake2s_clear_lastnode( S );
-
-  S->f[0] = 0;
-  return 0;
+  S->f[0] = (uint32_t)-1;
 }
 
-static inline int blake2s_increment_counter( blake2s_state *S, const uint32_t inc )
+static void blake2s_increment_counter( blake2s_state *S, const uint32_t inc )
 {
   uint64_t t = ( ( uint64_t )S->t[1] << 32 ) | S->t[0];
   t += inc;
   S->t[0] = ( uint32_t )( t >>  0 );
   S->t[1] = ( uint32_t )( t >> 32 );
-  return 0;
 }
 
-
-// Parameter-related functions
-static inline int blake2s_param_set_digest_length( blake2s_param *P, const uint8_t digest_length )
-{
-  P->digest_length = digest_length;
-  return 0;
-}
-
-static inline int blake2s_param_set_fanout( blake2s_param *P, const uint8_t fanout )
-{
-  P->fanout = fanout;
-  return 0;
-}
-
-static inline int blake2s_param_set_max_depth( blake2s_param *P, const uint8_t depth )
-{
-  P->depth = depth;
-  return 0;
-}
-
-static inline int blake2s_param_set_leaf_length( blake2s_param *P, const uint32_t leaf_length )
-{
-  P->leaf_length = leaf_length;
-  return 0;
-}
-
-static inline int blake2s_param_set_node_offset( blake2s_param *P, const uint64_t node_offset )
-{
-  store48( P->node_offset, node_offset );
-  return 0;
-}
-
-static inline int blake2s_param_set_node_depth( blake2s_param *P, const uint8_t node_depth )
-{
-  P->node_depth = node_depth;
-  return 0;
-}
-
-static inline int blake2s_param_set_inner_length( blake2s_param *P, const uint8_t inner_length )
-{
-  P->inner_length = inner_length;
-  return 0;
-}
-
-static inline int blake2s_param_set_salt( blake2s_param *P, const uint8_t salt[BLAKE2S_SALTBYTES] )
-{
-  memcpy( P->salt, salt, BLAKE2S_SALTBYTES );
-  return 0;
-}
-
-static inline int blake2s_param_set_personal( blake2s_param *P, const uint8_t personal[BLAKE2S_PERSONALBYTES] )
-{
-  memcpy( P->personal, personal, BLAKE2S_PERSONALBYTES );
-  return 0;
-}
-
-static inline int blake2s_init0( blake2s_state *S )
-{
-  memset( S, 0, sizeof( blake2s_state ) );
-
-  for( int i = 0; i < 8; ++i ) S->h[i] = blake2s_IV[i];
-
-  return 0;
-}
-
 /* init2 xors IV with input parameter block */
-__attribute__((visibility ("hidden")))
 int blake2s_init_param( blake2s_state *S, const blake2s_param *P )
 {
-  //blake2s_init0( S );
+  size_t i;
+  /*blake2s_init0( S ); */
   const uint8_t * v = ( const uint8_t * )( blake2s_IV );
   const uint8_t * p = ( const uint8_t * )( P );
   uint8_t * h = ( uint8_t * )( S->h );
   /* IV XOR ParamBlock */
   memset( S, 0, sizeof( blake2s_state ) );
 
-  for( int i = 0; i < BLAKE2S_OUTBYTES; ++i ) h[i] = v[i] ^ p[i];
+  for( i = 0; i < BLAKE2S_OUTBYTES; ++i ) h[i] = v[i] ^ p[i];
 
+  S->outlen = P->digest_length;
   return 0;
 }
 
 
 /* Some sort of default parameter block initialization, for sequential blake2s */
-__attribute__((visibility ("hidden")))
-int blake2s_init( blake2s_state *S, const uint8_t outlen )
+int blake2s_init( blake2s_state *S, size_t outlen )
 {
+  blake2s_param P[1];
+
   /* Move interval verification here? */
   if ( ( !outlen ) || ( outlen > BLAKE2S_OUTBYTES ) ) return -1;
 
-  const blake2s_param P =
-  {
-    outlen,
-    0,
-    1,
-    1,
-    0,
-    {0},
-    0,
-    0,
-    {0},
-    {0}
-  };
-  return blake2s_init_param( S, &P );
+  P->digest_length = (uint8_t)outlen;
+  P->key_length    = 0;
+  P->fanout        = 1;
+  P->depth         = 1;
+  store32( &P->leaf_length, 0 );
+  store32( &P->node_offset, 0 );
+  store16( &P->xof_length, 0 );
+  P->node_depth    = 0;
+  P->inner_length  = 0;
+  /* memset(P->reserved, 0, sizeof(P->reserved) ); */
+  memset( P->salt,     0, sizeof( P->salt ) );
+  memset( P->personal, 0, sizeof( P->personal ) );
+
+  return blake2s_init_param( S, P );
 }
 
-__attribute__((visibility ("hidden")))
-int blake2s_init_key( blake2s_state *S, const uint8_t outlen, const void *key, const uint8_t keylen )
+
+int blake2s_init_key( blake2s_state *S, size_t outlen, const void *key, size_t keylen )
 {
+  blake2s_param P[1];
+
   /* Move interval verification here? */
   if ( ( !outlen ) || ( outlen > BLAKE2S_OUTBYTES ) ) return -1;
 
   if ( ( !key ) || ( !keylen ) || keylen > BLAKE2S_KEYBYTES ) return -1;
 
-  const blake2s_param P =
-  {
-    outlen,
-    keylen,
-    1,
-    1,
-    0,
-    {0},
-    0,
-    0,
-    {0},
-    {0}
-  };
+  P->digest_length = (uint8_t)outlen;
+  P->key_length    = (uint8_t)keylen;
+  P->fanout        = 1;
+  P->depth         = 1;
+  store32( &P->leaf_length, 0 );
+  store32( &P->node_offset, 0 );
+  store16( &P->xof_length, 0 );
+  P->node_depth    = 0;
+  P->inner_length  = 0;
+  /* memset(P->reserved, 0, sizeof(P->reserved) ); */
+  memset( P->salt,     0, sizeof( P->salt ) );
+  memset( P->personal, 0, sizeof( P->personal ) );
 
-  if( blake2s_init_param( S, &P ) < 0 )
+  if( blake2s_init_param( S, P ) < 0 )
     return -1;
 
   {
@@ -237,7 +150,7 @@
 }
 
 
-static inline int blake2s_compress( blake2s_state *S, const uint8_t block[BLAKE2S_BLOCKBYTES] )
+static void blake2s_compress( blake2s_state *S, const uint8_t block[BLAKE2S_BLOCKBYTES] )
 {
   __m128i row1, row2, row3, row4;
   __m128i buf1, buf2, buf3, buf4;
@@ -258,27 +171,27 @@
   const __m128i m2 = LOADU( block +  32 );
   const __m128i m3 = LOADU( block +  48 );
 #else
-  const uint32_t  m0 = ( ( uint32_t * )block )[ 0];
-  const uint32_t  m1 = ( ( uint32_t * )block )[ 1];
-  const uint32_t  m2 = ( ( uint32_t * )block )[ 2];
-  const uint32_t  m3 = ( ( uint32_t * )block )[ 3];
-  const uint32_t  m4 = ( ( uint32_t * )block )[ 4];
-  const uint32_t  m5 = ( ( uint32_t * )block )[ 5];
-  const uint32_t  m6 = ( ( uint32_t * )block )[ 6];
-  const uint32_t  m7 = ( ( uint32_t * )block )[ 7];
-  const uint32_t  m8 = ( ( uint32_t * )block )[ 8];
-  const uint32_t  m9 = ( ( uint32_t * )block )[ 9];
-  const uint32_t m10 = ( ( uint32_t * )block )[10];
-  const uint32_t m11 = ( ( uint32_t * )block )[11];
-  const uint32_t m12 = ( ( uint32_t * )block )[12];
-  const uint32_t m13 = ( ( uint32_t * )block )[13];
-  const uint32_t m14 = ( ( uint32_t * )block )[14];
-  const uint32_t m15 = ( ( uint32_t * )block )[15];
+  const uint32_t  m0 = load32(block +  0 * sizeof(uint32_t));
+  const uint32_t  m1 = load32(block +  1 * sizeof(uint32_t));
+  const uint32_t  m2 = load32(block +  2 * sizeof(uint32_t));
+  const uint32_t  m3 = load32(block +  3 * sizeof(uint32_t));
+  const uint32_t  m4 = load32(block +  4 * sizeof(uint32_t));
+  const uint32_t  m5 = load32(block +  5 * sizeof(uint32_t));
+  const uint32_t  m6 = load32(block +  6 * sizeof(uint32_t));
+  const uint32_t  m7 = load32(block +  7 * sizeof(uint32_t));
+  const uint32_t  m8 = load32(block +  8 * sizeof(uint32_t));
+  const uint32_t  m9 = load32(block +  9 * sizeof(uint32_t));
+  const uint32_t m10 = load32(block + 10 * sizeof(uint32_t));
+  const uint32_t m11 = load32(block + 11 * sizeof(uint32_t));
+  const uint32_t m12 = load32(block + 12 * sizeof(uint32_t));
+  const uint32_t m13 = load32(block + 13 * sizeof(uint32_t));
+  const uint32_t m14 = load32(block + 14 * sizeof(uint32_t));
+  const uint32_t m15 = load32(block + 15 * sizeof(uint32_t));
 #endif
   row1 = ff0 = LOADU( &S->h[0] );
   row2 = ff1 = LOADU( &S->h[4] );
-  row3 = _mm_setr_epi32( 0x6A09E667, 0xBB67AE85, 0x3C6EF372, 0xA54FF53A );
-  row4 = _mm_xor_si128( _mm_setr_epi32( 0x510E527F, 0x9B05688C, 0x1F83D9AB, 0x5BE0CD19 ), LOADU( &S->t[0] ) );
+  row3 = _mm_loadu_si128( (__m128i const *)&blake2s_IV[0] );
+  row4 = _mm_xor_si128( _mm_loadu_si128( (__m128i const *)&blake2s_IV[4] ), LOADU( &S->t[0] ) );
   ROUND( 0 );
   ROUND( 1 );
   ROUND( 2 );
@@ -291,73 +204,61 @@
   ROUND( 9 );
   STOREU( &S->h[0], _mm_xor_si128( ff0, _mm_xor_si128( row1, row3 ) ) );
   STOREU( &S->h[4], _mm_xor_si128( ff1, _mm_xor_si128( row2, row4 ) ) );
-  return 0;
 }
 
-/* inlen now in bytes */
-__attribute__((visibility ("hidden")))
-int blake2s_update( blake2s_state *S, const uint8_t *in, uint64_t inlen )
+int blake2s_update( blake2s_state *S, const void *pin, size_t inlen )
 {
-  while( inlen > 0 )
+  const unsigned char * in = (const unsigned char *)pin;
+  if( inlen > 0 )
   {
     size_t left = S->buflen;
-    size_t fill = 2 * BLAKE2S_BLOCKBYTES - left;
-
+    size_t fill = BLAKE2S_BLOCKBYTES - left;
     if( inlen > fill )
     {
-      memcpy( S->buf + left, in, fill ); // Fill buffer
-      S->buflen += fill;
+      S->buflen = 0;
+      memcpy( S->buf + left, in, fill ); /* Fill buffer */
       blake2s_increment_counter( S, BLAKE2S_BLOCKBYTES );
-      blake2s_compress( S, S->buf ); // Compress
-      memcpy( S->buf, S->buf + BLAKE2S_BLOCKBYTES, BLAKE2S_BLOCKBYTES ); // Shift buffer left
-      S->buflen -= BLAKE2S_BLOCKBYTES;
-      in += fill;
-      inlen -= fill;
-    }
-    else // inlen <= fill
-    {
-      memcpy( S->buf + left, in, inlen );
-      S->buflen += inlen; // Be lazy, do not compress
-      in += inlen;
-      inlen -= inlen;
+      blake2s_compress( S, S->buf ); /* Compress */
+      in += fill; inlen -= fill;
+      while(inlen > BLAKE2S_BLOCKBYTES) {
+        blake2s_increment_counter(S, BLAKE2S_BLOCKBYTES);
+        blake2s_compress( S, in );
+        in += BLAKE2S_BLOCKBYTES;
+        inlen -= BLAKE2S_BLOCKBYTES;
+      }
     }
+    memcpy( S->buf + S->buflen, in, inlen );
+    S->buflen += inlen;
   }
-
   return 0;
 }
 
-/* Is this correct? */
-__attribute__((visibility ("hidden")))
-int blake2s_final( blake2s_state *S, uint8_t *out, uint8_t outlen )
+int blake2s_final( blake2s_state *S, void *out, size_t outlen )
 {
   uint8_t buffer[BLAKE2S_OUTBYTES] = {0};
+  size_t i;
 
-  if( outlen > BLAKE2S_OUTBYTES )
+  if( out == NULL || outlen < S->outlen )
     return -1;
 
-  if( S->buflen > BLAKE2S_BLOCKBYTES )
-  {
-    blake2s_increment_counter( S, BLAKE2S_BLOCKBYTES );
-    blake2s_compress( S, S->buf );
-    S->buflen -= BLAKE2S_BLOCKBYTES;
-    memcpy( S->buf, S->buf + BLAKE2S_BLOCKBYTES, S->buflen );
-  }
+  if( blake2s_is_lastblock( S ) )
+    return -1;
 
-  blake2s_increment_counter( S, ( uint32_t )S->buflen );
+  blake2s_increment_counter( S, (uint32_t)S->buflen );
   blake2s_set_lastblock( S );
-  memset( S->buf + S->buflen, 0, 2 * BLAKE2S_BLOCKBYTES - S->buflen ); /* Padding */
+  memset( S->buf + S->buflen, 0, BLAKE2S_BLOCKBYTES - S->buflen ); /* Padding */
   blake2s_compress( S, S->buf );
 
-  for( int i = 0; i < 8; ++i ) /* Output full hash to temp buffer */
+  for( i = 0; i < 8; ++i ) /* Output full hash to temp buffer */
     store32( buffer + sizeof( S->h[i] ) * i, S->h[i] );
 
-  memcpy( out, buffer, outlen );
+  memcpy( out, buffer, S->outlen );
+  secure_zero_memory( buffer, sizeof(buffer) );
   return 0;
 }
 
 /* inlen, at least, should be uint64_t. Others can be size_t. */
-__attribute__((visibility ("hidden")))
-int blake2s( uint8_t *out, const void *in, const void *key, const uint8_t outlen, const uint64_t inlen, uint8_t keylen )
+int blake2s( void *out, size_t outlen, const void *in, size_t inlen, const void *key, size_t keylen )
 {
   blake2s_state S[1];
 
@@ -385,3 +286,78 @@
   blake2s_final( S, out, outlen );
   return 0;
 }
+
+#if defined(SUPERCOP)
+int crypto_hash( unsigned char *out, unsigned char *in, unsigned long long inlen )
+{
+  return blake2s( out, BLAKE2S_OUTBYTES, in, inlen, NULL, 0 );
+}
+#endif
+
+#if defined(BLAKE2S_SELFTEST)
+#include <string.h>
+#include "blake2-kat.h"
+int main( void )
+{
+  uint8_t key[BLAKE2S_KEYBYTES];
+  uint8_t buf[BLAKE2_KAT_LENGTH];
+  size_t i, step;
+
+  for( i = 0; i < BLAKE2S_KEYBYTES; ++i )
+    key[i] = ( uint8_t )i;
+
+  for( i = 0; i < BLAKE2_KAT_LENGTH; ++i )
+    buf[i] = ( uint8_t )i;
+
+  /* Test simple API */
+  for( i = 0; i < BLAKE2_KAT_LENGTH; ++i )
+  {
+    uint8_t hash[BLAKE2S_OUTBYTES];
+    blake2s( hash, BLAKE2S_OUTBYTES, buf, i, key, BLAKE2S_KEYBYTES );
+
+    if( 0 != memcmp( hash, blake2s_keyed_kat[i], BLAKE2S_OUTBYTES ) )
+    {
+      goto fail;
+    }
+  }
+
+  /* Test streaming API */
+  for(step = 1; step < BLAKE2S_BLOCKBYTES; ++step) {
+    for (i = 0; i < BLAKE2_KAT_LENGTH; ++i) {
+      uint8_t hash[BLAKE2S_OUTBYTES];
+      blake2s_state S;
+      uint8_t * p = buf;
+      size_t mlen = i;
+      int err = 0;
+
+      if( (err = blake2s_init_key(&S, BLAKE2S_OUTBYTES, key, BLAKE2S_KEYBYTES)) < 0 ) {
+        goto fail;
+      }
+
+      while (mlen >= step) {
+        if ( (err = blake2s_update(&S, p, step)) < 0 ) {
+          goto fail;
+        }
+        mlen -= step;
+        p += step;
+      }
+      if ( (err = blake2s_update(&S, p, mlen)) < 0) {
+        goto fail;
+      }
+      if ( (err = blake2s_final(&S, hash, BLAKE2S_OUTBYTES)) < 0) {
+        goto fail;
+      }
+
+      if (0 != memcmp(hash, blake2s_keyed_kat[i], BLAKE2S_OUTBYTES)) {
+        goto fail;
+      }
+    }
+  }
+
+  puts( "ok" );
+  return 0;
+fail:
+  puts("error");
+  return -1;
+}
+#endif
diff --git a/cbits/blake2/sse/blake2sp.c b/cbits/blake2/sse/blake2sp.c
--- a/cbits/blake2/sse/blake2sp.c
+++ b/cbits/blake2/sse/blake2sp.c
@@ -1,14 +1,16 @@
 /*
    BLAKE2 reference source code package - optimized C implementations
 
-   Written in 2012 by Samuel Neves <sneves@dei.uc.pt>
+   Copyright 2012, Samuel Neves <sneves@dei.uc.pt>.  You may use this under the
+   terms of the CC0, the OpenSSL Licence, or the Apache Public License 2.0, at
+   your option.  The terms of these licenses can be found at:
 
-   To the extent possible under law, the author(s) have dedicated all copyright
-   and related and neighboring rights to this software to the public domain
-   worldwide. This software is distributed without any warranty.
+   - CC0 1.0 Universal : http://creativecommons.org/publicdomain/zero/1.0
+   - OpenSSL license   : https://www.openssl.org/source/license.html
+   - Apache 2.0        : http://www.apache.org/licenses/LICENSE-2.0
 
-   You should have received a copy of the CC0 Public Domain Dedication along with
-   this software. If not, see <http://creativecommons.org/publicdomain/zero/1.0/>.
+   More information about the BLAKE2 hash function can be found at
+   https://blake2.net.
 */
 
 #include <stdlib.h>
@@ -24,31 +26,47 @@
 
 #define PARALLELISM_DEGREE 8
 
-static inline int blake2sp_init_leaf( blake2s_state *S, uint8_t outlen, uint8_t keylen, uint64_t offset )
+/*
+  blake2sp_init_param defaults to setting the expecting output length
+  from the digest_length parameter block field.
+
+  In some cases, however, we do not want this, as the output length
+  of these instances is given by inner_length instead.
+*/
+static int blake2sp_init_leaf_param( blake2s_state *S, const blake2s_param *P )
 {
+  int err = blake2s_init_param(S, P);
+  S->outlen = P->inner_length;
+  return err;
+}
+
+static int blake2sp_init_leaf( blake2s_state *S, size_t outlen, size_t keylen, uint64_t offset )
+{
   blake2s_param P[1];
-  P->digest_length = outlen;
-  P->key_length = keylen;
+  P->digest_length = (uint8_t)outlen;
+  P->key_length = (uint8_t)keylen;
   P->fanout = PARALLELISM_DEGREE;
   P->depth = 2;
   P->leaf_length = 0;
-  store48( P->node_offset, offset );
+  P->node_offset = offset;
+  P->xof_length = 0;
   P->node_depth = 0;
   P->inner_length = BLAKE2S_OUTBYTES;
   memset( P->salt, 0, sizeof( P->salt ) );
   memset( P->personal, 0, sizeof( P->personal ) );
-  return blake2s_init_param( S, P );
+  return blake2sp_init_leaf_param( S, P );
 }
 
-static inline int blake2sp_init_root( blake2s_state *S, uint8_t outlen, uint8_t keylen )
+static int blake2sp_init_root( blake2s_state *S, size_t outlen, size_t keylen )
 {
   blake2s_param P[1];
-  P->digest_length = outlen;
-  P->key_length = keylen;
+  P->digest_length = (uint8_t)outlen;
+  P->key_length = (uint8_t)keylen;
   P->fanout = PARALLELISM_DEGREE;
   P->depth = 2;
   P->leaf_length = 0;
-  store48( P->node_offset, 0ULL );
+  P->node_offset = 0;
+  P->xof_length = 0;
   P->node_depth = 1;
   P->inner_length = BLAKE2S_OUTBYTES;
   memset( P->salt, 0, sizeof( P->salt ) );
@@ -56,18 +74,21 @@
   return blake2s_init_param( S, P );
 }
 
-__attribute__((visibility ("hidden")))
-int blake2sp_init( blake2sp_state *S, const uint8_t outlen )
+
+int blake2sp_init( blake2sp_state *S, size_t outlen )
 {
+  size_t i;
+
   if( !outlen || outlen > BLAKE2S_OUTBYTES ) return -1;
 
   memset( S->buf, 0, sizeof( S->buf ) );
   S->buflen = 0;
+  S->outlen = outlen;
 
   if( blake2sp_init_root( S->R, outlen, 0 ) < 0 )
     return -1;
 
-  for( size_t i = 0; i < PARALLELISM_DEGREE; ++i )
+  for( i = 0; i < PARALLELISM_DEGREE; ++i )
     if( blake2sp_init_leaf( S->S[i], outlen, 0, i ) < 0 ) return -1;
 
   S->R->last_node = 1;
@@ -75,20 +96,22 @@
   return 0;
 }
 
-__attribute__((visibility ("hidden")))
-int blake2sp_init_key( blake2sp_state *S, const uint8_t outlen, const void *key, const uint8_t keylen )
+int blake2sp_init_key( blake2sp_state *S, size_t outlen, const void *key, size_t keylen )
 {
+  size_t i;
+
   if( !outlen || outlen > BLAKE2S_OUTBYTES ) return -1;
 
   if( !key || !keylen || keylen > BLAKE2S_KEYBYTES ) return -1;
 
   memset( S->buf, 0, sizeof( S->buf ) );
   S->buflen = 0;
+  S->outlen = outlen;
 
   if( blake2sp_init_root( S->R, outlen, keylen ) < 0 )
     return -1;
 
-  for( size_t i = 0; i < PARALLELISM_DEGREE; ++i )
+  for( i = 0; i < PARALLELISM_DEGREE; ++i )
     if( blake2sp_init_leaf( S->S[i], outlen, keylen, i ) < 0 ) return -1;
 
   S->R->last_node = 1;
@@ -98,7 +121,7 @@
     memset( block, 0, BLAKE2S_BLOCKBYTES );
     memcpy( block, key, keylen );
 
-    for( size_t i = 0; i < PARALLELISM_DEGREE; ++i )
+    for( i = 0; i < PARALLELISM_DEGREE; ++i )
       blake2s_update( S->S[i], block, BLAKE2S_BLOCKBYTES );
 
     secure_zero_memory( block, BLAKE2S_BLOCKBYTES ); /* Burn the key from stack */
@@ -106,17 +129,19 @@
   return 0;
 }
 
-__attribute__((visibility ("hidden")))
-int blake2sp_update( blake2sp_state *S, const uint8_t *in, uint64_t inlen )
+
+int blake2sp_update( blake2sp_state *S, const void *pin, size_t inlen )
 {
+  const unsigned char * in = (const unsigned char *)pin;
   size_t left = S->buflen;
   size_t fill = sizeof( S->buf ) - left;
+  size_t i;
 
   if( left && inlen >= fill )
   {
     memcpy( S->buf + left, in, fill );
 
-    for( size_t i = 0; i < PARALLELISM_DEGREE; ++i )
+    for( i = 0; i < PARALLELISM_DEGREE; ++i )
       blake2s_update( S->S[i], S->buf + i * BLAKE2S_BLOCKBYTES, BLAKE2S_BLOCKBYTES );
 
     in += fill;
@@ -128,19 +153,19 @@
   #pragma omp parallel shared(S), num_threads(PARALLELISM_DEGREE)
 #else
 
-  for( size_t id__ = 0; id__ < PARALLELISM_DEGREE; ++id__ )
+  for( i = 0; i < PARALLELISM_DEGREE; ++i )
 #endif
   {
 #if defined(_OPENMP)
-    size_t      id__ = omp_get_thread_num();
+    size_t      i = omp_get_thread_num();
 #endif
-    uint64_t inlen__ = inlen;
-    const uint8_t *in__ = ( const uint8_t * )in;
-    in__ += id__ * BLAKE2S_BLOCKBYTES;
+    size_t inlen__ = inlen;
+    const unsigned char *in__ = ( const unsigned char * )in;
+    in__ += i * BLAKE2S_BLOCKBYTES;
 
     while( inlen__ >= PARALLELISM_DEGREE * BLAKE2S_BLOCKBYTES )
     {
-      blake2s_update( S->S[id__], in__, BLAKE2S_BLOCKBYTES );
+      blake2s_update( S->S[i], in__, BLAKE2S_BLOCKBYTES );
       in__ += PARALLELISM_DEGREE * BLAKE2S_BLOCKBYTES;
       inlen__ -= PARALLELISM_DEGREE * BLAKE2S_BLOCKBYTES;
     }
@@ -156,12 +181,17 @@
   return 0;
 }
 
-__attribute__((visibility ("hidden")))
-int blake2sp_final( blake2sp_state *S, uint8_t *out, const uint8_t outlen )
+
+int blake2sp_final( blake2sp_state *S, void *out, size_t outlen )
 {
   uint8_t hash[PARALLELISM_DEGREE][BLAKE2S_OUTBYTES];
+  size_t i;
 
-  for( size_t i = 0; i < PARALLELISM_DEGREE; ++i )
+  if(out == NULL || outlen < S->outlen) {
+    return -1;
+  }
+
+  for( i = 0; i < PARALLELISM_DEGREE; ++i )
   {
     if( S->buflen > i * BLAKE2S_BLOCKBYTES )
     {
@@ -175,18 +205,19 @@
     blake2s_final( S->S[i], hash[i], BLAKE2S_OUTBYTES );
   }
 
-  for( size_t i = 0; i < PARALLELISM_DEGREE; ++i )
+  for( i = 0; i < PARALLELISM_DEGREE; ++i )
     blake2s_update( S->R, hash[i], BLAKE2S_OUTBYTES );
 
-  return blake2s_final( S->R, out, outlen );
+  return blake2s_final( S->R, out, S->outlen );
 }
 
-__attribute__((visibility ("hidden")))
-int blake2sp( uint8_t *out, const void *in, const void *key, uint8_t outlen, uint64_t inlen, uint8_t keylen )
+
+int blake2sp( void *out, size_t outlen, const void *in, size_t inlen, const void *key, size_t keylen )
 {
   uint8_t hash[PARALLELISM_DEGREE][BLAKE2S_OUTBYTES];
   blake2s_state S[PARALLELISM_DEGREE][1];
   blake2s_state FS[1];
+  size_t i;
 
   /* Verify parameters */
   if ( NULL == in && inlen > 0 ) return -1;
@@ -199,10 +230,10 @@
 
   if( keylen > BLAKE2S_KEYBYTES ) return -1;
 
-  for( size_t i = 0; i < PARALLELISM_DEGREE; ++i )
+  for( i = 0; i < PARALLELISM_DEGREE; ++i )
     if( blake2sp_init_leaf( S[i], outlen, keylen, i ) < 0 ) return -1;
 
-  S[PARALLELISM_DEGREE - 1]->last_node = 1; // mark last node
+  S[PARALLELISM_DEGREE - 1]->last_node = 1; /* mark last node */
 
   if( keylen > 0 )
   {
@@ -210,7 +241,7 @@
     memset( block, 0, BLAKE2S_BLOCKBYTES );
     memcpy( block, key, keylen );
 
-    for( size_t i = 0; i < PARALLELISM_DEGREE; ++i )
+    for( i = 0; i < PARALLELISM_DEGREE; ++i )
       blake2s_update( S[i], block, BLAKE2S_BLOCKBYTES );
 
     secure_zero_memory( block, BLAKE2S_BLOCKBYTES ); /* Burn the key from stack */
@@ -220,31 +251,31 @@
   #pragma omp parallel shared(S,hash), num_threads(PARALLELISM_DEGREE)
 #else
 
-  for( size_t id__ = 0; id__ < PARALLELISM_DEGREE; ++id__ )
+  for( i = 0; i < PARALLELISM_DEGREE; ++i )
 #endif
   {
 #if defined(_OPENMP)
-    size_t      id__ = omp_get_thread_num();
+    size_t      i = omp_get_thread_num();
 #endif
-    uint64_t inlen__ = inlen;
-    const uint8_t *in__ = ( const uint8_t * )in;
-    in__ += id__ * BLAKE2S_BLOCKBYTES;
+    size_t inlen__ = inlen;
+    const unsigned char *in__ = ( const unsigned char * )in;
+    in__ += i * BLAKE2S_BLOCKBYTES;
 
     while( inlen__ >= PARALLELISM_DEGREE * BLAKE2S_BLOCKBYTES )
     {
-      blake2s_update( S[id__], in__, BLAKE2S_BLOCKBYTES );
+      blake2s_update( S[i], in__, BLAKE2S_BLOCKBYTES );
       in__ += PARALLELISM_DEGREE * BLAKE2S_BLOCKBYTES;
       inlen__ -= PARALLELISM_DEGREE * BLAKE2S_BLOCKBYTES;
     }
 
-    if( inlen__ > id__ * BLAKE2S_BLOCKBYTES )
+    if( inlen__ > i * BLAKE2S_BLOCKBYTES )
     {
-      const size_t left = inlen__ - id__ * BLAKE2S_BLOCKBYTES;
+      const size_t left = inlen__ - i * BLAKE2S_BLOCKBYTES;
       const size_t len = left <= BLAKE2S_BLOCKBYTES ? left : BLAKE2S_BLOCKBYTES;
-      blake2s_update( S[id__], in__, len );
+      blake2s_update( S[i], in__, len );
     }
 
-    blake2s_final( S[id__], hash[id__], BLAKE2S_OUTBYTES );
+    blake2s_final( S[i], hash[i], BLAKE2S_OUTBYTES );
   }
 
   if( blake2sp_init_root( FS, outlen, keylen ) < 0 )
@@ -252,8 +283,76 @@
 
   FS->last_node = 1;
 
-  for( size_t i = 0; i < PARALLELISM_DEGREE; ++i )
+  for( i = 0; i < PARALLELISM_DEGREE; ++i )
     blake2s_update( FS, hash[i], BLAKE2S_OUTBYTES );
 
   return blake2s_final( FS, out, outlen );
 }
+
+#if defined(BLAKE2SP_SELFTEST)
+#include <string.h>
+#include "blake2-kat.h"
+int main( void )
+{
+  uint8_t key[BLAKE2S_KEYBYTES];
+  uint8_t buf[BLAKE2_KAT_LENGTH];
+  size_t i, step;
+
+  for( i = 0; i < BLAKE2S_KEYBYTES; ++i )
+    key[i] = ( uint8_t )i;
+
+  for( i = 0; i < BLAKE2_KAT_LENGTH; ++i )
+    buf[i] = ( uint8_t )i;
+
+  /* Test simple API */
+  for( i = 0; i < BLAKE2_KAT_LENGTH; ++i )
+  {
+    uint8_t hash[BLAKE2S_OUTBYTES];
+    blake2sp( hash, BLAKE2S_OUTBYTES, buf, i, key, BLAKE2S_KEYBYTES );
+
+    if( 0 != memcmp( hash, blake2sp_keyed_kat[i], BLAKE2S_OUTBYTES ) )
+    {
+      goto fail;
+    }
+  }
+
+  /* Test streaming API */
+  for(step = 1; step < BLAKE2S_BLOCKBYTES; ++step) {
+    for (i = 0; i < BLAKE2_KAT_LENGTH; ++i) {
+      uint8_t hash[BLAKE2S_OUTBYTES];
+      blake2sp_state S;
+      uint8_t * p = buf;
+      size_t mlen = i;
+      int err = 0;
+
+      if( (err = blake2sp_init_key(&S, BLAKE2S_OUTBYTES, key, BLAKE2S_KEYBYTES)) < 0 ) {
+        goto fail;
+      }
+
+      while (mlen >= step) {
+        if ( (err = blake2sp_update(&S, p, step)) < 0 ) {
+          goto fail;
+        }
+        mlen -= step;
+        p += step;
+      }
+      if ( (err = blake2sp_update(&S, p, mlen)) < 0) {
+        goto fail;
+      }
+      if ( (err = blake2sp_final(&S, hash, BLAKE2S_OUTBYTES)) < 0) {
+        goto fail;
+      }
+
+      if (0 != memcmp(hash, blake2sp_keyed_kat[i], BLAKE2S_OUTBYTES)) {
+        goto fail;
+      }
+    }
+  }
+
+  puts( "ok" );
+  return 0;
+fail:
+  puts("error");
+  return -1;
+}
+#endif
diff --git a/cbits/cryptonite_align.h b/cbits/cryptonite_align.h
--- a/cbits/cryptonite_align.h
+++ b/cbits/cryptonite_align.h
@@ -39,12 +39,70 @@
 	return le32_to_cpu(*((uint32_t *) p));		
 }
 
+static inline void store_le32_aligned(uint8_t *dst, const uint32_t v)
+{
+	*((uint32_t *) dst) = cpu_to_le32(v);
+}
+
+static inline void store_be32_aligned(uint8_t *dst, const uint32_t v)
+{
+	*((uint32_t *) dst) = cpu_to_be32(v);
+}
+
+static inline void store_le64_aligned(uint8_t *dst, const uint64_t v)
+{
+	*((uint64_t *) dst) = cpu_to_le64(v);
+}
+
+static inline void store_be64_aligned(uint8_t *dst, const uint64_t v)
+{
+	*((uint64_t *) dst) = cpu_to_be64(v);
+}
+
 #ifdef UNALIGNED_ACCESS_OK
 #define load_le32(a) load_le32_aligned(a)
 #else
 static inline uint32_t load_le32(const uint8_t *p)
 {
 	return ((uint32_t)p[0]) | ((uint32_t)p[1] <<  8) | ((uint32_t)p[2] << 16) | ((uint32_t)p[3] << 24);
+}
+#endif
+
+#ifdef UNALIGNED_ACCESS_OK
+#define store_le32(a, b) store_le32_aligned(a, b)
+#else
+static inline void store_le32(uint8_t *dst, const uint32_t v)
+{
+	dst[0] = v; dst[1] = v >> 8; dst[2] = v >> 16; dst[3] = v >> 24;
+}
+#endif
+
+#ifdef UNALIGNED_ACCESS_OK
+#define store_be32(a, b) store_be32_aligned(a, b)
+#else
+static inline void store_be32(uint8_t *dst, const uint32_t v)
+{
+	dst[3] = v; dst[2] = v >> 8; dst[1] = v >> 16; dst[0] = v >> 24;
+}
+#endif
+
+#ifdef UNALIGNED_ACCESS_OK
+#define store_le64(a, b) store_le64_aligned(a, b)
+#else
+static inline void store_le64(uint8_t *dst, const uint64_t v)
+{
+	dst[0] = v      ; dst[1] = v >> 8 ; dst[2] = v >> 16; dst[3] = v >> 24;
+	dst[4] = v >> 32; dst[5] = v >> 40; dst[6] = v >> 48; dst[7] = v >> 56;
+}
+#endif
+
+#ifdef UNALIGNED_ACCESS_OK
+#define store_be64(a, b) store_be64_aligned(a, b)
+#else
+static inline void store_be64(uint8_t *dst, const uint64_t v)
+{
+	dst[7] = v      ; dst[6] = v >> 8 ; dst[5] = v >> 16; dst[4] = v >> 24;
+	dst[3] = v >> 32; dst[2] = v >> 40; dst[1] = v >> 48; dst[0] = v >> 56;
 }
 #endif
 
diff --git a/cbits/cryptonite_keccak.c b/cbits/cryptonite_keccak.c
deleted file mode 100644
--- a/cbits/cryptonite_keccak.c
+++ /dev/null
@@ -1,159 +0,0 @@
-/*
- * Copyright (C) 2012 Vincent Hanquez <vincent@snarc.org>
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
- * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
- * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
- * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
- * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
- * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#include <stdint.h>
-#include <string.h>
-#include "cryptonite_bitfn.h"
-#include "cryptonite_keccak.h"
-
-#define KECCAK_NB_ROUNDS 24
-
-/* rounds constants */
-static const uint64_t keccak_rndc[24] =
-{
-	0x0000000000000001ULL, 0x0000000000008082ULL, 0x800000000000808aULL,
-	0x8000000080008000ULL, 0x000000000000808bULL, 0x0000000080000001ULL,
-	0x8000000080008081ULL, 0x8000000000008009ULL, 0x000000000000008aULL,
-	0x0000000000000088ULL, 0x0000000080008009ULL, 0x000000008000000aULL,
-	0x000000008000808bULL, 0x800000000000008bULL, 0x8000000000008089ULL,
-	0x8000000000008003ULL, 0x8000000000008002ULL, 0x8000000000000080ULL,
-	0x000000000000800aULL, 0x800000008000000aULL, 0x8000000080008081ULL,
-	0x8000000000008080ULL, 0x0000000080000001ULL, 0x8000000080008008ULL,
-};
-
-/* triangular numbers constants */
-static const int keccak_rotc[24] =
-	{ 1,3,6,10,15,21,28,36,45,55,2,14,27,41,56,8,25,43,62,18,39,61,20,44 };
-
-static const int keccak_piln[24] =
-	{ 10,7,11,17,18,3,5,16,8,21,24,4,15,23,19,13,12,2,20,14,22,9,6,1 };
-
-static inline void keccak_do_chunk(uint64_t state[25], uint64_t buf[], int bufsz)
-{
-	int i, j, r;
-	uint64_t tmp, bc[5];
-
-	/* merge buf with state */
-	for (i = 0; i < bufsz; i++)
-		state[i] ^= le64_to_cpu(buf[i]);
-
-	/* run keccak rounds */
-	for (r = 0; r < KECCAK_NB_ROUNDS; r++) {
-		/* compute the parity of each columns */
-		for (i = 0; i < 5; i++)
-			bc[i] = state[i] ^ state[i+5] ^ state[i+10] ^ state[i+15] ^ state[i+20];
-
-		for (i = 0; i < 5; i++) {
-			tmp = bc[(i + 4) % 5] ^ rol64(bc[(i + 1) % 5], 1);
-			for (j = 0; j < 25; j += 5)
-				state[j + i] ^= tmp;
-		}
-
-		/* rho pi */
-		tmp = state[1];
-		for (i = 0; i < 24; i++) {
-			j = keccak_piln[i];
-			bc[0] = state[j];
-			state[j] = rol64(tmp, keccak_rotc[i]);
-			tmp = bc[0];
-		}
-
-		/* bitwise combine along rows using a = a xor (not b and c) */
-		for (j = 0; j < 25; j += 5) {
-			for (i = 0; i < 5; i++)
-				bc[i] = state[j + i];
-			#define andn(b,c) (~(b) & (c))
-			state[j + 0] ^= andn(bc[1], bc[2]);
-			state[j + 1] ^= andn(bc[2], bc[3]);
-			state[j + 2] ^= andn(bc[3], bc[4]);
-			state[j + 3] ^= andn(bc[4], bc[0]);
-			state[j + 4] ^= andn(bc[0], bc[1]);
-			#undef andn
-		}
-
-		/* xor the round constant */
-		state[0] ^= keccak_rndc[r];
-	}
-}
-
-void cryptonite_keccak_init(struct keccak_ctx *ctx, uint32_t hashlen)
-{
-	int bufsz = 200 - 2 * (hashlen / 8);
-	memset(ctx, 0, sizeof(*ctx) + bufsz);
-	ctx->bufsz = bufsz;
-}
-
-void cryptonite_keccak_update(struct keccak_ctx *ctx, uint8_t *data, uint32_t len)
-{
-	uint32_t to_fill;
-
-	to_fill = ctx->bufsz - ctx->bufindex;
-
-	if (ctx->bufindex == ctx->bufsz) {
-		keccak_do_chunk(ctx->state, (uint64_t *) ctx->buf, ctx->bufsz / 8);
-		ctx->bufindex = 0;
-	}
-
-	/* process partial buffer if there's enough data to make a block */
-	if (ctx->bufindex && len >= to_fill) {
-		memcpy(ctx->buf + ctx->bufindex, data, to_fill);
-		keccak_do_chunk(ctx->state, (uint64_t *) ctx->buf, ctx->bufsz / 8);
-		len -= to_fill;
-		data += to_fill;
-		ctx->bufindex = 0;
-	}
-
-	/* process as much ctx->bufsz-block */
-	for (; len >= ctx->bufsz; len -= ctx->bufsz, data += ctx->bufsz)
-		keccak_do_chunk(ctx->state, (uint64_t *) data, ctx->bufsz / 8);
-
-	/* append data into buf */
-	if (len) {
-		memcpy(ctx->buf + ctx->bufindex, data, len);
-		ctx->bufindex += len;
-	}
-}
-
-void cryptonite_keccak_finalize(struct keccak_ctx *ctx, uint32_t hashlen, uint8_t *out)
-{
-	uint64_t w[25];
-
-	/* process full buffer if needed */
-	if (ctx->bufindex == ctx->bufsz) {
-		keccak_do_chunk(ctx->state, (uint64_t *) ctx->buf, ctx->bufsz / 8);
-		ctx->bufindex = 0;
-	}
-
-	/* add the 10*1 padding */
-	ctx->buf[ctx->bufindex++] = 1;
-	memset(ctx->buf + ctx->bufindex, 0, ctx->bufsz - ctx->bufindex);
-	ctx->buf[ctx->bufsz - 1] |= 0x80;
-
-	/* process */
-	keccak_do_chunk(ctx->state, (uint64_t *) ctx->buf, ctx->bufsz / 8);
-
-	/* output */
-	cpu_to_le64_array(w, ctx->state, 25);
-	memcpy(out, w, hashlen / 8);
-}
diff --git a/cbits/cryptonite_keccak.h b/cbits/cryptonite_keccak.h
deleted file mode 100644
--- a/cbits/cryptonite_keccak.h
+++ /dev/null
@@ -1,43 +0,0 @@
-/*
- * Copyright (C) 2012 Vincent Hanquez <vincent@snarc.org>
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
- * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
- * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
- * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
- * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
- * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-#ifndef CRYPTOHASH_SHA3_H
-#define CRYPTOHASH_SHA3_H
-
-#include <stdint.h>
-
-struct keccak_ctx
-{
-	uint32_t bufindex;
-	uint32_t bufsz;
-	uint64_t state[25];
-	uint8_t  buf[0]; /* maximum SHA3-224 = 144, otherwise buffer need decrease */
-};
-
-#define SHA3_CTX_SIZE		sizeof(struct keccak_ctx)
-
-void cryptonite_keccak_init(struct keccak_ctx *ctx, uint32_t hashlen);
-void cryptonite_keccak_update(struct keccak_ctx *ctx, uint8_t *data, uint32_t len);
-void cryptonite_keccak_finalize(struct keccak_ctx *ctx, uint32_t hashlen, uint8_t *out);
-
-#endif
diff --git a/cbits/cryptonite_pbkdf2.c b/cbits/cryptonite_pbkdf2.c
new file mode 100644
--- /dev/null
+++ b/cbits/cryptonite_pbkdf2.c
@@ -0,0 +1,390 @@
+/*
+ * fast-pbkdf2 - Optimal PBKDF2-HMAC calculation
+ * Written in 2015 by Joseph Birr-Pixton <jpixton@gmail.com>
+ * Ported to cryptonite in 2017 by Nicolas Di Prima <nicolas@primetype.co.uk>
+ *
+ * To the extent possible under law, the author(s) have dedicated all
+ * copyright and related and neighboring rights to this software to the
+ * public domain worldwide. This software is distributed without any
+ * warranty.
+ *
+ * You should have received a copy of the CC0 Public Domain Dedication
+ * along with this software. If not, see
+ * <http://creativecommons.org/publicdomain/zero/1.0/>.
+ */
+
+#include <assert.h>
+#include <string.h>
+
+#include "cryptonite_pbkdf2.h"
+#include "cryptonite_bitfn.h"
+#include "cryptonite_align.h"
+#include "cryptonite_sha1.h"
+#include "cryptonite_sha256.h"
+#include "cryptonite_sha512.h"
+
+/* --- MSVC doesn't support C99 --- */
+#ifdef _MSC_VER
+#define restrict
+#define _Pragma __pragma
+#endif
+
+/* --- Common useful things --- */
+#define MIN(a, b) ((a) > (b)) ? (b) : (a)
+
+/* Prepare block (of blocksz bytes) to contain md padding denoting a msg-size
+ * message (in bytes).  block has a prefix of used bytes.
+ *
+ * Message length is expressed in 32 bits (so suitable for sha1, sha256, sha512). */
+static inline void md_pad(uint8_t *block, size_t blocksz, size_t used, size_t msg)
+{
+  memset(block + used, 0, blocksz - used - 4);
+  block[used] = 0x80;
+  block += blocksz - 4;
+  store_be32(block, (uint32_t) (msg * 8));
+}
+
+/* Internal function/type names for hash-specific things. */
+#define HMAC_CTX(_name) HMAC_ ## _name ## _ctx
+#define HMAC_INIT(_name) HMAC_ ## _name ## _init
+#define HMAC_UPDATE(_name) HMAC_ ## _name ## _update
+#define HMAC_FINAL(_name) HMAC_ ## _name ## _final
+
+#define PBKDF2_F(_name) pbkdf2_f_ ## _name
+#define PBKDF2(_name) pbkdf2_ ## _name
+
+/* This macro expands to decls for the whole implementation for a given
+ * hash function.  Arguments are:
+ *
+ * _name like 'sha1', added to symbol names
+ * _blocksz block size, in bytes
+ * _hashsz digest output, in bytes
+ * _ctx hash context type
+ * _init hash context initialisation function
+ *    args: (_ctx *c)
+ * _update hash context update function
+ *    args: (_ctx *c, const void *data, size_t ndata)
+ * _final hash context finish function
+ *    args: (void *out, _ctx *c)
+ * _xform hash context raw block update function
+ *    args: (_ctx *c, const void *data)
+ * _xcpy hash context raw copy function (only need copy hash state)
+ *    args: (_ctx * restrict out, const _ctx *restrict in)
+ * _xtract hash context state extraction
+ *    args: args (_ctx *restrict c, uint8_t *restrict out)
+ * _xxor hash context xor function (only need xor hash state)
+ *    args: (_ctx *restrict out, const _ctx *restrict in)
+ *
+ * The resulting function is named PBKDF2(_name).
+ */
+#define DECL_PBKDF2(_name, _blocksz, _hashsz, _ctx,                           \
+                    _init, _update, _xform, _final, _xcpy, _xtract, _xxor)    \
+  typedef struct {                                                            \
+    _ctx inner;                                                               \
+    _ctx outer;                                                               \
+  } HMAC_CTX(_name);                                                          \
+                                                                              \
+  static inline void HMAC_INIT(_name)(HMAC_CTX(_name) *ctx,                   \
+                                      const uint8_t *key, size_t nkey)        \
+  {                                                                           \
+    /* Prepare key: */                                                        \
+    uint8_t k[_blocksz];                                                      \
+                                                                              \
+    /* Shorten long keys. */                                                  \
+    if (nkey > _blocksz)                                                      \
+    {                                                                         \
+      _init(&ctx->inner);                                                     \
+      _update(&ctx->inner, key, nkey);                                        \
+      _final(&ctx->inner, k);                                                 \
+                                                                              \
+      key = k;                                                                \
+      nkey = _hashsz;                                                         \
+    }                                                                         \
+                                                                              \
+    /* Standard doesn't cover case where blocksz < hashsz. */                 \
+    assert(nkey <= _blocksz);                                                 \
+                                                                              \
+    /* Right zero-pad short keys. */                                          \
+    if (k != key)                                                             \
+      memcpy(k, key, nkey);                                                   \
+    if (_blocksz > nkey)                                                      \
+      memset(k + nkey, 0, _blocksz - nkey);                                   \
+                                                                              \
+    /* Start inner hash computation */                                        \
+    uint8_t blk_inner[_blocksz];                                              \
+    uint8_t blk_outer[_blocksz];                                              \
+                                                                              \
+    for (size_t i = 0; i < _blocksz; i++)                                     \
+    {                                                                         \
+      blk_inner[i] = 0x36 ^ k[i];                                             \
+      blk_outer[i] = 0x5c ^ k[i];                                             \
+    }                                                                         \
+                                                                              \
+    _init(&ctx->inner);                                                       \
+    _update(&ctx->inner, blk_inner, sizeof blk_inner);                        \
+                                                                              \
+    /* And outer. */                                                          \
+    _init(&ctx->outer);                                                       \
+    _update(&ctx->outer, blk_outer, sizeof blk_outer);                        \
+  }                                                                           \
+                                                                              \
+  static inline void HMAC_UPDATE(_name)(HMAC_CTX(_name) *ctx,                 \
+                                        const void *data, size_t ndata)       \
+  {                                                                           \
+    _update(&ctx->inner, data, ndata);                                        \
+  }                                                                           \
+                                                                              \
+  static inline void HMAC_FINAL(_name)(HMAC_CTX(_name) *ctx,                  \
+                                       uint8_t out[_hashsz])                  \
+  {                                                                           \
+    _final(&ctx->inner, out);                                                 \
+    _update(&ctx->outer, out, _hashsz);                                       \
+    _final(&ctx->outer, out);                                                 \
+  }                                                                           \
+                                                                              \
+                                                                              \
+  /* --- PBKDF2 --- */                                                        \
+  static inline void PBKDF2_F(_name)(const HMAC_CTX(_name) *startctx,         \
+                                     uint32_t counter,                        \
+                                     const uint8_t *salt, size_t nsalt,       \
+                                     uint32_t iterations,                     \
+                                     uint8_t *out)                            \
+  {                                                                           \
+    uint8_t countbuf[4];                                                      \
+    store_be32(countbuf, counter);                                            \
+                                                                              \
+    /* Prepare loop-invariant padding block. */                               \
+    uint8_t Ublock[_blocksz];                                                 \
+    md_pad(Ublock, _blocksz, _hashsz, _blocksz + _hashsz);                    \
+                                                                              \
+    /* First iteration:                                                       \
+     *   U_1 = PRF(P, S || INT_32_BE(i))                                      \
+     */                                                                       \
+    HMAC_CTX(_name) ctx = *startctx;                                          \
+    HMAC_UPDATE(_name)(&ctx, salt, nsalt);                                    \
+    HMAC_UPDATE(_name)(&ctx, countbuf, sizeof countbuf);                      \
+    HMAC_FINAL(_name)(&ctx, Ublock);                                          \
+    _ctx result = ctx.outer;                                                  \
+                                                                              \
+    /* Subsequent iterations:                                                 \
+     *   U_c = PRF(P, U_{c-1})                                                \
+     */                                                                       \
+    for (uint32_t i = 1; i < iterations; i++)                                 \
+    {                                                                         \
+      /* Complete inner hash with previous U */                               \
+      _xcpy(&ctx.inner, &startctx->inner);                                    \
+      _xform(&ctx.inner, Ublock);                                             \
+      _xtract(&ctx.inner, Ublock);                                            \
+      /* Complete outer hash with inner output */                             \
+      _xcpy(&ctx.outer, &startctx->outer);                                    \
+      _xform(&ctx.outer, Ublock);                                             \
+      _xtract(&ctx.outer, Ublock);                                            \
+      _xxor(&result, &ctx.outer);                                             \
+    }                                                                         \
+                                                                              \
+    /* Reform result into output buffer. */                                   \
+    _xtract(&result, out);                                                    \
+  }                                                                           \
+                                                                              \
+  static inline void PBKDF2(_name)(const uint8_t *pw, size_t npw,             \
+                     const uint8_t *salt, size_t nsalt,                       \
+                     uint32_t iterations,                                     \
+                     uint8_t *out, size_t nout)                               \
+  {                                                                           \
+    assert(iterations);                                                       \
+    assert(out && nout);                                                      \
+                                                                              \
+    /* Starting point for inner loop. */                                      \
+    HMAC_CTX(_name) ctx;                                                      \
+    HMAC_INIT(_name)(&ctx, pw, npw);                                          \
+                                                                              \
+    /* How many blocks do we need? */                                         \
+    uint32_t blocks_needed = (uint32_t)(nout + _hashsz - 1) / _hashsz;        \
+                                                                              \
+    for (uint32_t counter = 1; counter <= blocks_needed; counter++)           \
+    {                                                                         \
+      uint8_t block[_hashsz];                                                 \
+      PBKDF2_F(_name)(&ctx, counter, salt, nsalt, iterations, block);         \
+                                                                              \
+      size_t offset = (counter - 1) * _hashsz;                                \
+      size_t taken = MIN(nout - offset, _hashsz);                             \
+      memcpy(out + offset, block, taken);                                     \
+    }                                                                         \
+  }
+
+static inline void sha1_extract(struct sha1_ctx *restrict ctx, uint8_t *restrict out)
+{
+	store_be32(out   , ctx->h[0]);
+	store_be32(out+4 , ctx->h[1]);
+	store_be32(out+8 , ctx->h[2]);
+	store_be32(out+12, ctx->h[3]);
+	store_be32(out+16, ctx->h[4]);
+}
+
+static inline void sha1_cpy(struct sha1_ctx *restrict out, const struct sha1_ctx *restrict in)
+{
+  out->h[0] = in->h[0];
+  out->h[1] = in->h[1];
+  out->h[2] = in->h[2];
+  out->h[3] = in->h[3];
+  out->h[4] = in->h[4];
+}
+
+static inline void sha1_xor(struct sha1_ctx *restrict out, const struct sha1_ctx *restrict in)
+{
+  out->h[0] ^= in->h[0];
+  out->h[1] ^= in->h[1];
+  out->h[2] ^= in->h[2];
+  out->h[3] ^= in->h[3];
+  out->h[4] ^= in->h[4];
+}
+
+void cryptonite_sha1_transform(struct sha1_ctx* ctx, uint8_t block[SHA1_BLOCK_SIZE])
+{
+  cryptonite_sha1_update(ctx, block, SHA1_BLOCK_SIZE);
+}
+
+DECL_PBKDF2(sha1,
+            SHA1_BLOCK_SIZE,
+            SHA1_DIGEST_SIZE,
+            struct sha1_ctx,
+            cryptonite_sha1_init,
+            cryptonite_sha1_update,
+            cryptonite_sha1_transform,
+            cryptonite_sha1_finalize,
+            sha1_cpy,
+            sha1_extract,
+            sha1_xor);
+
+static inline void sha256_extract(struct sha256_ctx *restrict ctx, uint8_t *restrict out)
+{
+	store_be32(out   , ctx->h[0]);
+	store_be32(out+4 , ctx->h[1]);
+	store_be32(out+8 , ctx->h[2]);
+	store_be32(out+12, ctx->h[3]);
+	store_be32(out+16, ctx->h[4]);
+	store_be32(out+20, ctx->h[5]);
+	store_be32(out+24, ctx->h[6]);
+	store_be32(out+28, ctx->h[7]);
+}
+
+static inline void sha256_cpy(struct sha256_ctx *restrict out, const struct sha256_ctx *restrict in)
+{
+	out->h[0] = in->h[0];
+	out->h[1] = in->h[1];
+	out->h[2] = in->h[2];
+	out->h[3] = in->h[3];
+	out->h[4] = in->h[4];
+	out->h[5] = in->h[5];
+	out->h[6] = in->h[6];
+	out->h[7] = in->h[7];
+}
+
+static inline void sha256_xor(struct sha256_ctx *restrict out, const struct sha256_ctx *restrict in)
+{
+	out->h[0] ^= in->h[0];
+	out->h[1] ^= in->h[1];
+	out->h[2] ^= in->h[2];
+	out->h[3] ^= in->h[3];
+	out->h[4] ^= in->h[4];
+	out->h[5] ^= in->h[5];
+	out->h[6] ^= in->h[6];
+	out->h[7] ^= in->h[7];
+}
+
+void cryptonite_sha256_transform(struct sha256_ctx* ctx, uint8_t block[SHA256_BLOCK_SIZE])
+{
+  cryptonite_sha256_update(ctx, block, SHA256_BLOCK_SIZE);
+}
+
+DECL_PBKDF2(sha256,
+            SHA256_BLOCK_SIZE,
+            SHA256_DIGEST_SIZE,
+            struct sha256_ctx,
+            cryptonite_sha256_init,
+            cryptonite_sha256_update,
+            cryptonite_sha256_transform,
+            cryptonite_sha256_finalize,
+            sha256_cpy,
+            sha256_extract,
+            sha256_xor);
+
+static inline void sha512_extract(struct sha512_ctx *restrict ctx, uint8_t *restrict out)
+{
+	store_be64(out   , ctx->h[0]);
+	store_be64(out+8 , ctx->h[1]);
+	store_be64(out+16, ctx->h[2]);
+	store_be64(out+24, ctx->h[3]);
+	store_be64(out+32, ctx->h[4]);
+	store_be64(out+40, ctx->h[5]);
+	store_be64(out+48, ctx->h[6]);
+	store_be64(out+56, ctx->h[7]);
+}
+
+static inline void sha512_cpy(struct sha512_ctx *restrict out, const struct sha512_ctx *restrict in)
+{
+	out->h[0] = in->h[0];
+	out->h[1] = in->h[1];
+	out->h[2] = in->h[2];
+	out->h[3] = in->h[3];
+	out->h[4] = in->h[4];
+	out->h[5] = in->h[5];
+	out->h[6] = in->h[6];
+	out->h[7] = in->h[7];
+}
+
+static inline void sha512_xor(struct sha512_ctx *restrict out, const struct sha512_ctx *restrict in)
+{
+	out->h[0] ^= in->h[0];
+	out->h[1] ^= in->h[1];
+	out->h[2] ^= in->h[2];
+	out->h[3] ^= in->h[3];
+	out->h[4] ^= in->h[4];
+	out->h[5] ^= in->h[5];
+	out->h[6] ^= in->h[6];
+	out->h[7] ^= in->h[7];
+}
+
+void cryptonite_sha512_transform(struct sha512_ctx* ctx, uint8_t block[SHA512_BLOCK_SIZE])
+{
+	cryptonite_sha512_update(ctx, block, SHA512_BLOCK_SIZE);
+}
+
+DECL_PBKDF2(sha512,
+            SHA512_BLOCK_SIZE,
+            SHA512_DIGEST_SIZE,
+            struct sha512_ctx,
+            cryptonite_sha512_init,
+            cryptonite_sha512_update,
+            cryptonite_sha512_transform,
+            cryptonite_sha512_finalize,
+            sha512_cpy,
+            sha512_extract,
+            sha512_xor);
+
+void cryptonite_fastpbkdf2_hmac_sha1( const uint8_t *pw, size_t npw
+                                    , const uint8_t *salt, size_t nsalt
+                                    , uint32_t iterations
+                                    , uint8_t *out, size_t nout
+                                    )
+{
+  PBKDF2(sha1)(pw, npw, salt, nsalt, iterations, out, nout);
+}
+
+void cryptonite_fastpbkdf2_hmac_sha256( const uint8_t *pw, size_t npw
+                                      , const uint8_t *salt, size_t nsalt
+                                      , uint32_t iterations
+                                      , uint8_t *out, size_t nout
+                                      )
+{
+  PBKDF2(sha256)(pw, npw, salt, nsalt, iterations, out, nout);
+}
+
+void cryptonite_fastpbkdf2_hmac_sha512( const uint8_t *pw, size_t npw
+                                      , const uint8_t *salt, size_t nsalt
+                                      , uint32_t iterations
+                                      , uint8_t *out, size_t nout
+                                      )
+{
+  PBKDF2(sha512)(pw, npw, salt, nsalt, iterations, out, nout);
+}
diff --git a/cbits/cryptonite_pbkdf2.h b/cbits/cryptonite_pbkdf2.h
new file mode 100644
--- /dev/null
+++ b/cbits/cryptonite_pbkdf2.h
@@ -0,0 +1,31 @@
+#ifndef CRYPTONITE_PBKDF2_H_
+#define CRYPTONITE_PBKDF2_H_
+
+#include <stdlib.h>
+#include <stdint.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+void cryptonite_fastpbkdf2_hmac_sha1( const uint8_t *pw, size_t npw
+                                    , const uint8_t *salt, size_t nsalt
+                                    , uint32_t iterations
+                                    , uint8_t *out, size_t nout
+                                    );
+void cryptonite_fastpbkdf2_hmac_sha256( const uint8_t *pw, size_t npw
+                                      , const uint8_t *salt, size_t nsalt
+                                      , uint32_t iterations
+                                      , uint8_t *out, size_t nout
+                                      );
+void cryptonite_fastpbkdf2_hmac_sha512( const uint8_t *pw, size_t npw
+                                      , const uint8_t *salt, size_t nsalt
+                                      , uint32_t iterations
+                                      , uint8_t *out, size_t nout
+                                      );
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/cbits/cryptonite_sha1.h b/cbits/cryptonite_sha1.h
--- a/cbits/cryptonite_sha1.h
+++ b/cbits/cryptonite_sha1.h
@@ -26,10 +26,12 @@
 
 #include <stdint.h>
 
+# define SHA1_BLOCK_SIZE 64
+
 struct sha1_ctx
 {
 	uint64_t sz;
-	uint8_t  buf[64];
+	uint8_t  buf[SHA1_BLOCK_SIZE];
 	uint32_t h[5];
 };
 
diff --git a/cbits/cryptonite_sha256.h b/cbits/cryptonite_sha256.h
--- a/cbits/cryptonite_sha256.h
+++ b/cbits/cryptonite_sha256.h
@@ -27,6 +27,8 @@
 
 #include <stdint.h>
 
+#define SHA256_BLOCK_SIZE 64
+
 struct sha256_ctx
 {
 	uint64_t sz;
diff --git a/cbits/cryptonite_sha3.c b/cbits/cryptonite_sha3.c
--- a/cbits/cryptonite_sha3.c
+++ b/cbits/cryptonite_sha3.c
@@ -98,13 +98,19 @@
 	}
 }
 
+/*
+ * Initialize a SHA-3 / SHAKE context: hashlen is the security level (and
+ * half the capacity) in bits
+ */
 void cryptonite_sha3_init(struct sha3_ctx *ctx, uint32_t hashlen)
 {
-	int bufsz = 200 - 2 * (hashlen / 8);
+	/* assert(hashlen >= SHA3_BITSIZE_MIN && hashlen <= SHA3_BITSIZE_MAX) */
+	int bufsz = SHA3_BUF_SIZE(hashlen);
 	memset(ctx, 0, sizeof(*ctx) + bufsz);
 	ctx->bufsz = bufsz;
 }
 
+/* Update a SHA-3 / SHAKE context */
 void cryptonite_sha3_update(struct sha3_ctx *ctx, const uint8_t *data, uint32_t len)
 {
 	uint32_t to_fill;
@@ -126,7 +132,7 @@
 	}
 
 	if (need_alignment(data, 8)) {
-		uint64_t tramp[200 - 2 * (224 / 8)];
+		uint64_t tramp[SHA3_BUF_SIZE_MAX/8];
 		ASSERT_ALIGNMENT(tramp, 8);
 		for (; len >= ctx->bufsz; len -= ctx->bufsz, data += ctx->bufsz) {
 			memcpy(tramp, data, ctx->bufsz / 8);
@@ -146,10 +152,8 @@
 	}
 }
 
-void cryptonite_sha3_finalize(struct sha3_ctx *ctx, uint32_t hashlen, uint8_t *out)
+void cryptonite_sha3_finalize_with_pad_byte(struct sha3_ctx *ctx, uint8_t pad_byte)
 {
-	uint64_t w[25];
-
 	/* process full buffer if needed */
 	if (ctx->bufindex == ctx->bufsz) {
 		sha3_do_chunk(ctx->state, (uint64_t *) ctx->buf, ctx->bufsz / 8);
@@ -157,14 +161,83 @@
 	}
 
 	/* add the 10*1 padding */
-	ctx->buf[ctx->bufindex++] = 0x06;
+	ctx->buf[ctx->bufindex++] = pad_byte;
 	memset(ctx->buf + ctx->bufindex, 0, ctx->bufsz - ctx->bufindex);
 	ctx->buf[ctx->bufsz - 1] |= 0x80;
 
 	/* process */
 	sha3_do_chunk(ctx->state, (uint64_t *) ctx->buf, ctx->bufsz / 8);
+	ctx->bufindex = 0;
+}
 
-	/* output */
-	cpu_to_le64_array(w, ctx->state, 25);
-	memcpy(out, w, hashlen / 8);
+/*
+ * Extract some bytes from a finalized SHA-3 / SHAKE context.
+ * May be called multiple times.
+ */
+void cryptonite_sha3_output(struct sha3_ctx *ctx, uint8_t *out, uint32_t len)
+{
+	uint64_t w[25];
+	uint8_t *wptr = (uint8_t *) w;
+	uint32_t still_avail;
+
+	still_avail = ctx->bufsz - ctx->bufindex;
+
+	if (ctx->bufindex == ctx->bufsz) {
+		/* squeeze the sponge again, without any input */
+		sha3_do_chunk(ctx->state, NULL, 0);
+		ctx->bufindex = 0;
+	}
+
+	/* use bytes already available if this block is fully consumed */
+	if (ctx->bufindex && len >= still_avail) {
+		cpu_to_le64_array(w, ctx->state, 25);
+		memcpy(out, wptr + ctx->bufindex, still_avail);
+		sha3_do_chunk(ctx->state, NULL, 0);
+		len -= still_avail;
+		out += still_avail;
+		ctx->bufindex = 0;
+	}
+
+	/* output as much ctx->bufsz-block */
+	for (; len > ctx->bufsz; len -= ctx->bufsz, out += ctx->bufsz) {
+		cpu_to_le64_array(w, ctx->state, 25);
+		memcpy(out, w, ctx->bufsz);
+		sha3_do_chunk(ctx->state, NULL, 0);
+	}
+
+	/* output from partial buffer */
+	if (len) {
+		cpu_to_le64_array(w, ctx->state, 25);
+		memcpy(out, wptr + ctx->bufindex, len);
+		ctx->bufindex += len;
+	}
+}
+
+/* Finalize a SHA-3 context and return the digest value */
+void cryptonite_sha3_finalize(struct sha3_ctx *ctx, uint32_t hashlen, uint8_t *out)
+{
+	cryptonite_sha3_finalize_with_pad_byte(ctx, 0x06);
+	cryptonite_sha3_output(ctx, out, hashlen / 8);
+}
+
+/* Finalize a SHAKE context. Output is read using cryptonite_sha3_output. */
+void cryptonite_sha3_finalize_shake(struct sha3_ctx *ctx)
+{
+	cryptonite_sha3_finalize_with_pad_byte(ctx, 0x1F);
+}
+
+void cryptonite_keccak_init(struct sha3_ctx *ctx, uint32_t hashlen)
+{
+	cryptonite_sha3_init(ctx, hashlen);
+}
+
+void cryptonite_keccak_update(struct sha3_ctx *ctx, uint8_t *data, uint32_t len)
+{
+	cryptonite_sha3_update(ctx, data, len);
+}
+
+void cryptonite_keccak_finalize(struct sha3_ctx *ctx, uint32_t hashlen, uint8_t *out)
+{
+	cryptonite_sha3_finalize_with_pad_byte(ctx, 1);
+	cryptonite_sha3_output(ctx, out, hashlen / 8);
 }
diff --git a/cbits/cryptonite_sha3.h b/cbits/cryptonite_sha3.h
--- a/cbits/cryptonite_sha3.h
+++ b/cbits/cryptonite_sha3.h
@@ -31,13 +31,36 @@
 	uint32_t bufindex;
 	uint32_t bufsz;
 	uint64_t state[25];
-	uint8_t  buf[0]; /* maximum SHA3-224 is 144 bytes, otherwise buffer can be decreases */
+	uint8_t  buf[0]; /* maximum SHAKE128 is 168 bytes, otherwise buffer can be decreased */
 };
 
 #define SHA3_CTX_SIZE		sizeof(struct sha3_ctx)
+#define SHA3_CTX_BUF_MAX_SIZE   (SHA3_CTX_SIZE + SHA3_BUF_SIZE_MAX)
+#define SHA3_BITSIZE_MIN   	128
+#define SHA3_BITSIZE_MAX    	512
 
+#define SHA3_BUF_SIZE(bitsize)  (200 - 2 * ((bitsize) / 8))
+
+#define SHA3_BUF_SIZE_MIN       SHA3_BUF_SIZE(SHA3_BITSIZE_MAX)
+#define SHA3_BUF_SIZE_MAX       SHA3_BUF_SIZE(SHA3_BITSIZE_MIN)
+
+/*
+ * buffer size:
+ *
+ * 128 bits (shake 128 bits) => 200 - 2 * (128 / 8) = 200 - 2*16 = 200 - 32  = 168 bytes
+ * 224 bits (SHA3 224 bits)  => 200 - 2 * (224 / 8) = 200 - 2*28 = 200 - 56  = 144 bytes
+ * 512 bits (SHA3 512 bits)  => 200 - 2 * (512 / 8) = 200 - 2*64 = 200 - 128 = 72 bytes
+ */
+
 void cryptonite_sha3_init(struct sha3_ctx *ctx, uint32_t hashlen);
 void cryptonite_sha3_update(struct sha3_ctx *ctx, const uint8_t *data, uint32_t len);
 void cryptonite_sha3_finalize(struct sha3_ctx *ctx, uint32_t hashlen, uint8_t *out);
+
+void cryptonite_sha3_finalize_shake(struct sha3_ctx *ctx);
+void cryptonite_sha3_output(struct sha3_ctx *ctx, uint8_t *out, uint32_t len);
+
+void cryptonite_keccak_init(struct sha3_ctx *ctx, uint32_t hashlen);
+void cryptonite_keccak_update(struct sha3_ctx *ctx, uint8_t *data, uint32_t len);
+void cryptonite_keccak_finalize(struct sha3_ctx *ctx, uint32_t hashlen, uint8_t *out);
 
 #endif
diff --git a/cbits/cryptonite_sha512.h b/cbits/cryptonite_sha512.h
--- a/cbits/cryptonite_sha512.h
+++ b/cbits/cryptonite_sha512.h
@@ -26,10 +26,12 @@
 
 #include <stdint.h>
 
+# define SHA512_BLOCK_SIZE 128
+
 struct sha512_ctx
 {
 	uint64_t sz[2];
-	uint8_t  buf[128];
+	uint8_t  buf[SHA512_BLOCK_SIZE];
 	uint64_t h[8];
 };
 
diff --git a/cbits/ed448/x448.c b/cbits/ed448/x448.c
--- a/cbits/ed448/x448.c
+++ b/cbits/ed448/x448.c
@@ -36,7 +36,7 @@
 
 typedef struct { decaf_word_t limb[X448_LIMBS]; } gf_s, gf[1];
 
-const unsigned char X448_BASE_POINT[X448_BYTES] = {5};
+static const unsigned char X448_BASE_POINT[X448_BYTES] = {5};
 
 static const gf ZERO = {{{0}}}, ONE = {{{1}}};
 
diff --git a/cbits/ed448/x448.h b/cbits/ed448/x448.h
--- a/cbits/ed448/x448.h
+++ b/cbits/ed448/x448.h
@@ -2,7 +2,7 @@
 #define X448_BYTES (448/8)
 
 /* The base point (5) */
-extern const unsigned char X448_BASE_POINT[X448_BYTES];
+//extern const unsigned char X448_BASE_POINT[X448_BYTES];
 
 /* Returns 0 on success, -1 on failure */
 int __attribute__((visibility("default")))
diff --git a/cryptonite.cabal b/cryptonite.cabal
--- a/cryptonite.cabal
+++ b/cryptonite.cabal
@@ -1,18 +1,18 @@
 Name:                cryptonite
-Version:             0.21
+Version:             0.22
 Synopsis:            Cryptography Primitives sink
 Description:
     A repository of cryptographic primitives.
     .
     * Symmetric ciphers: AES, DES, 3DES, Blowfish, Camellia, RC4, Salsa, XSalsa, ChaCha.
     .
-    * Hash: SHA1, SHA2, SHA3, MD2, MD4, MD5, Keccak, Skein, Ripemd, Tiger, Whirlpool, Blake2
+    * Hash: SHA1, SHA2, SHA3, SHAKE, MD2, MD4, MD5, Keccak, Skein, Ripemd, Tiger, Whirlpool, Blake2
     .
     * MAC: HMAC, Poly1305
     .
-    * Asymmetric crypto: DSA, RSA, DH, ECDH, ECDSA, ECC, Curve25519, Ed25519, Ed448
+    * Asymmetric crypto: DSA, RSA, DH, ECDH, ECDSA, ECC, Curve25519, Curve448, Ed25519
     .
-    * Key Derivation Function: PBKDF2, Scrypt, HKDF
+    * Key Derivation Function: PBKDF2, Scrypt, HKDF, Argon2
     .
     * Cryptographic Random generation: System Entropy, Deterministic Random Generator
     .
@@ -35,7 +35,7 @@
 Build-Type:          Simple
 Homepage:            https://github.com/haskell-crypto/cryptonite
 Bug-reports:         https://github.com/haskell-crypto/cryptonite/issues
-Cabal-Version:       >=1.10
+Cabal-Version:       >=1.18
 extra-doc-files:     README.md CHANGELOG.md
 extra-source-files:  cbits/*.h
                      cbits/aes/*.h
@@ -44,6 +44,8 @@
                      cbits/p256/*.h
                      cbits/blake2/ref/*.h
                      cbits/blake2/sse/*.h
+                     cbits/argon2/*.h
+                     cbits/argon2/*.c
                      cbits/aes/x86ni_impl.c
                      tests/*.hs
 
@@ -66,6 +68,11 @@
   Default:           False
   Manual:            True
 
+Flag support_sse
+  Description:       Use SSE optimized version when existing (BLAKE2, ARGON2)
+  Default:           False
+  Manual:            True
+
 Flag support_blake2_sse
   Description:       Use SSE optimized version of BLAKE2.
   Default:           False
@@ -118,6 +125,7 @@
                      Crypto.Number.Prime
                      Crypto.Number.Serialize
                      Crypto.Number.Serialize.Internal
+                     Crypto.KDF.Argon2
                      Crypto.KDF.PBKDF2
                      Crypto.KDF.Scrypt
                      Crypto.KDF.BCrypt
@@ -125,7 +133,9 @@
                      Crypto.Hash
                      Crypto.Hash.IO
                      Crypto.Hash.Algorithms
+                     Crypto.OTP
                      Crypto.PubKey.Curve25519
+                     Crypto.PubKey.Curve448
                      Crypto.PubKey.MaskGenFunction
                      Crypto.PubKey.DH
                      Crypto.PubKey.DSA
@@ -201,9 +211,12 @@
                      Crypto.Internal.Imports
                      Crypto.Internal.Words
                      Crypto.Internal.WordArray
+  if impl(ghc >= 7.8)
+    Other-modules:   Crypto.Hash.SHAKE
+                     Crypto.Internal.Nat
   Build-depends:     base >= 4.3 && < 5
                    , bytestring
-                   , memory >= 0.8
+                   , memory >= 0.12
                    , ghc-prim
   ghc-options:       -Wall -fwarn-tabs -optc-O3 -fno-warn-unused-imports
   default-language:  Haskell2010
@@ -228,7 +241,6 @@
                    , cbits/cryptonite_sha256.c
                    , cbits/cryptonite_sha512.c
                    , cbits/cryptonite_sha3.c
-                   , cbits/cryptonite_keccak.c
                    , cbits/cryptonite_md2.c
                    , cbits/cryptonite_md4.c
                    , cbits/cryptonite_md5.c
@@ -238,6 +250,7 @@
                    , cbits/cryptonite_tiger.c
                    , cbits/cryptonite_whirlpool.c
                    , cbits/cryptonite_scrypt.c
+                   , cbits/cryptonite_pbkdf2.c
   include-dirs:  cbits cbits/ed25519
 
   if arch(x86_64)
@@ -288,6 +301,12 @@
                   , cbits/blake2/ref/blake2bp-ref.c
     include-dirs: cbits/blake2/ref
 
+  if arch(x86_64) || flag(support_sse)
+    CPP-options:    -DSUPPORT_SSE
+
+  C-sources:      cbits/argon2/argon2.c
+  include-dirs:   cbits/argon2
+
   if os(windows)
     cpp-options:    -DWINDOWS
     Build-Depends:  Win32
@@ -321,17 +340,19 @@
                      KAT_AES.KATXTS
                      KAT_AES
                      KAT_AFIS
+                     KAT_Argon2
                      KAT_Blowfish
                      KAT_Camellia
                      KAT_Curve25519
+                     KAT_Curve448
                      KAT_DES
-                     KAT_Ed448
                      KAT_Ed25519
                      KAT_CMAC
                      KAT_HKDF
                      KAT_HMAC
                      KAT_MiyaguchiPreneel
                      KAT_PBKDF2
+                     KAT_OTP
                      KAT_PubKey.DSA
                      KAT_PubKey.ECC
                      KAT_PubKey.ECDSA
@@ -353,7 +374,6 @@
   Build-Depends:     base >= 3 && < 5
                    , bytestring
                    , memory
-                   , byteable
                    , tasty
                    , tasty-quickcheck
                    , tasty-hunit
diff --git a/tests/Hash.hs b/tests/Hash.hs
--- a/tests/Hash.hs
+++ b/tests/Hash.hs
@@ -1,6 +1,10 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE ViewPatterns #-}
+#if MIN_VERSION_base(4,7,0)
 {-# LANGUAGE ExistentialQuantification #-}
+{-# LANGUAGE DataKinds #-}
+#endif
 module Hash
     ( tests
     ) where
@@ -138,10 +142,48 @@
         "a69f73cca23a9ac5c8b567dc185a756e97c982164fe25859e0d1dcc1475c80a615b2123af1f5f94c11e3e9402c3ac558f500199d95b6d3e301758586281dcd26",
         "01dedd5de4ef14642445ba5f5b97c15e47b9ad931326e4b0727cd94cefc44fff23f07bf543139939b49128caf436dc1bdee54fcb24023a08d9403f9b4bf0d450",
         "28e361fe8c56e617caa56c28c7c36e5c13be552b77081be82b642f08bb7ef085b9a81910fe98269386b9aacfd2349076c9506126e198f6f6ad44c12017ca77b1" ])
+    , ("Blake2b-160", HashAlg Blake2b_160, [
+        "3345524abf6bbe1809449224b5972c41790b6cf2",
+        "3c523ed102ab45a37d54f5610d5a983162fde84f",
+        "a3d365b5fba5d36fbb19c03b7fde496058969c5a" ])
+    , ("Blake2b-224", HashAlg Blake2b_224, [
+        "836cc68931c2e4e3e838602eca1902591d216837bafddfe6f0c8cb07",
+        "477c3985751dd4d1b8c93827ea5310b33bb02a26463a050dffd3e857",
+        "a4a1b6851be66891a3deff406c4d7556879ebf952407450755f90eb6" ])
+    , ("Blake2b-256", HashAlg Blake2b_256, [
+        "0e5751c026e543b2e8ab2eb06099daa1d1e5df47778f7787faab45cdf12fe3a8",
+        "01718cec35cd3d796dd00020e0bfecb473ad23457d063b75eff29c0ffa2e58a9",
+        "036c13096926b3dfccfe3f233bd1b2f583b818b8b15c01be65af69238e900b2c" ])
+    , ("Blake2b-384", HashAlg Blake2b_384, [
+        "b32811423377f52d7862286ee1a72ee540524380fda1724a6f25d7978c6fd3244a6caf0498812673c5e05ef583825100",
+        "b7c81b228b6bd912930e8f0b5387989691c1cee1e65aade4da3b86a3c9f678fc8018f6ed9e2906720c8d2a3aeda9c03d",
+        "927a1f297873cbe887a93b2183c4e2eba53966ba92c6db8b87029a1d8c673471d09740676cced79c5016838973f630c3" ])
     , ("Blake2b-512", HashAlg Blake2b_512, [
         "786a02f742015903c6c6fd852552d272912f4740e15847618a86e217f71f5419d25e1031afee585313896444934eb04b903a685b1448b755d56f701afe9be2ce",
         "a8add4bdddfd93e4877d2746e62817b116364a1fa7bc148d95090bc7333b3673f82401cf7aa2e4cb1ecd90296e3f14cb5413f8ed77be73045b13914cdcd6a918",
         "af438eea5d8cdb209336a7e85bf58090dc21b49d823f89a7d064c119f127bd361af9c7d109edda0f0e91bdce078d1d86b8e6f25727c98f6d3bb6f50acb2dd376" ])
+    , ("Blake2s-160", HashAlg Blake2s_160, [
+        "354c9c33f735962418bdacb9479873429c34916f",
+        "5a604fec9713c369e84b0ed68daed7d7504ef240",
+        "759bef6d041bcbd861b8b51baaece6c8fffd0acf" ])
+    , ("Blake2s-224", HashAlg Blake2s_224, [
+        "1fa1291e65248b37b3433475b2a0dd63d54a11ecc4e3e034e7bc1ef4",
+        "e4e5cb6c7cae41982b397bf7b7d2d9d1949823ae78435326e8db4912",
+        "e220025fd46a9a635c3f7f60bb96a84c01019ac0817f5901e7eeaa2c" ])
+    , ("Blake2s-256", HashAlg Blake2s_256, [
+        "69217a3079908094e11121d042354a7c1f55b6482ca1a51e1b250dfd1ed0eef9",
+        "606beeec743ccbeff6cbcdf5d5302aa855c256c29b88c8ed331ea1a6bf3c8812",
+        "94662583a600a12dff357c0a6f1b514a710ef0f587a38e8d2e4d7f67e9c81667" ])
+#if MIN_VERSION_base(4,7,0)
+    , ("SHAKE128_4096", HashAlg (SHAKE128 :: SHAKE128 4096), [
+        "7f9c2ba4e88f827d616045507605853ed73b8093f6efbc88eb1a6eacfa66ef263cb1eea988004b93103cfb0aeefd2a686e01fa4a58e8a3639ca8a1e3f9ae57e235b8cc873c23dc62b8d260169afa2f75ab916a58d974918835d25e6a435085b2badfd6dfaac359a5efbb7bcc4b59d538df9a04302e10c8bc1cbf1a0b3a5120ea17cda7cfad765f5623474d368ccca8af0007cd9f5e4c849f167a580b14aabdefaee7eef47cb0fca9767be1fda69419dfb927e9df07348b196691abaeb580b32def58538b8d23f87732ea63b02b4fa0f4873360e2841928cd60dd4cee8cc0d4c922a96188d032675c8ac850933c7aff1533b94c834adbb69c6115bad4692d8619f90b0cdf8a7b9c264029ac185b70b83f2801f2f4b3f70c593ea3aeeb613a7f1b1de33fd75081f592305f2e4526edc09631b10958f464d889f31ba010250fda7f1368ec2967fc84ef2ae9aff268e0b1700affc6820b523a3d917135f2dff2ee06bfe72b3124721d4a26c04e53a75e30e73a7a9c4a95d91c55d495e9f51dd0b5e9d83c6d5e8ce803aa62b8d654db53d09b8dcff273cdfeb573fad8bcd45578bec2e770d01efde86e721a3f7c6cce275dabe6e2143f1af18da7efddc4c7b70b5e345db93cc936bea323491ccb38a388f546a9ff00dd4e1300b9b2153d2041d205b443e41b45a653f2a5c4492c1add544512dda2529833462b71a41a45be97290b6f",
+        "f4202e3c5852f9182a0430fd8144f0a74b95e7417ecae17db0f8cfeed0e3e66eb5585ec6f86021cacf272c798bcf97d368b886b18fec3a571f096086a523717a3732d50db2b0b7998b4117ae66a761ccf1847a1616f4c07d5178d0d965f9feba351420f8bfb6f5ab9a0cb102568eabf3dfa4e22279f8082dce8143eb78235a1a54914ab71abb07f2f3648468370b9fbb071e074f1c030a4030225f40c39480339f3dc71d0f04f71326de1381674cc89e259e219927fae8ea2799a03da862a55afafe670957a2af3318d919d0a3358f3b891236d6a8e8d19999d1076b529968faefbd880d77bb300829dca87e9c8e4c28e0800ff37490a5bd8c36c0b0bdb2701a5d58d03378b9dbd384389e3ef0fd4003b08998fd3f32fe1a0810fc0eccaad94bca8dd83b34559c333f0b16dfc2896ed87b30ba14c81f87cd8b4bb6317db89b0e7e94c0616f9a665fba5b0e6fb3549c9d7b68e66d08a86eb2faec05cc462a771806b93cc38b0a4feb9935c6c8945da6a589891ba5ee99753cfdd38e1abc7147fd74b7c7d1ce0609b6680a2e18888d84949b6e6cf6a2aa4113535aaee079459e3f257b569a9450523c41f5b5ba4b79b3ba5949140a74bb048de0657d04954bdd71dae76f61e2a1f88aecb91cfa5b36c1bf3350a798dc4dcf48628effe3a0c5340c756bd922f78d0e36ef7df12ce78c179cc721ad087e15ea496bf5f60b21b5822d",
+        "22fd225fb8f2c8d0d2097e1f8d38b6a9e619d39664dad3795f0336fda544d305e1be56a9953ecd6e4bec14b622f53da492eccbe257b9af84775a6bdf81aab6b1ba3492149b7ce4ea402c56e343939f78b9a9727193269798420c9323a9eb1fa63006e1482fcf15e3696aa1ae5cb66eb8aad4ac6041ca0b576b78785ad95bc5fb6f8a420ba9e1726552c0f2b97050ae69fc018d3f63b3a812a2d39ef64b8ae368472dec4341511b02cf77363c74f216055d5905412bc2bf57b4010b1bdce2882cb28fc7e4d470ed05219fc4d1ce11d11e10db369c807cd71891653638956b2f9d176e116188aff2fbb8519d9ad8c3fb52fa8bb4a0413364e89d9f9d7db627f2a2288babedcc314a19e45c6b7fb93b16a15d9953ff619ab4d523c481552588f711b450f854c858ebcb8cf49492d6240a753bde2109c486cac666bdba767c6e9254cc723f67855534c34d08ed486c67c1b8dd288c6010ce8e6c1c9b7f927acf4d71ee99729cee55ecec544245d0b51b31dd78eb99c2723e8ba5cf92ac7720e8933d9fd3596b90073f6980c5ed3f1cbfada26bdb6946e72391198e3d1cedebdba092324500e32b8e04e32550f6dd6c4befafa95acc206c5708300d2a8df2765751102f9738a1449c4c0d588f0076d0c1a5ee445eb85c97ada5837d5dc1d34ea081c8411d64a4d9ce9279bfe9feb25696cf741c705ed46f171e2239216d6c45dc8d15" ])
+    , ("SHAKE256_4096", HashAlg (SHAKE256 :: SHAKE256 4096), [
+        "46b9dd2b0ba88d13233b3feb743eeb243fcd52ea62b81b82b50c27646ed5762fd75dc4ddd8c0f200cb05019d67b592f6fc821c49479ab48640292eacb3b7c4be141e96616fb13957692cc7edd0b45ae3dc07223c8e92937bef84bc0eab862853349ec75546f58fb7c2775c38462c5010d846c185c15111e595522a6bcd16cf86f3d122109e3b1fdd943b6aec468a2d621a7c06c6a957c62b54dafc3be87567d677231395f6147293b68ceab7a9e0c58d864e8efde4e1b9a46cbe854713672f5caaae314ed9083dab4b099f8e300f01b8650f1f4b1d8fcf3f3cb53fb8e9eb2ea203bdc970f50ae55428a91f7f53ac266b28419c3778a15fd248d339ede785fb7f5a1aaa96d313eacc890936c173cdcd0fab882c45755feb3aed96d477ff96390bf9a66d1368b208e21f7c10d04a3dbd4e360633e5db4b602601c14cea737db3dcf722632cc77851cbdde2aaf0a33a07b373445df490cc8fc1e4160ff118378f11f0477de055a81a9eda57a4a2cfb0c83929d310912f729ec6cfa36c6ac6a75837143045d791cc85eff5b21932f23861bcf23a52b5da67eaf7baae0f5fb1369db78f3ac45f8c4ac5671d85735cdddb09d2b1e34a1fc066ff4a162cb263d6541274ae2fcc865f618abe27c124cd8b074ccd516301b91875824d09958f341ef274bdab0bae316339894304e35877b0c28a9b1fd166c796b9cc258a064a8f57e27f2a",
+        "2f671343d9b2e1604dc9dcf0753e5fe15c7c64a0d283cbbf722d411a0e36f6ca1d01d1369a23539cd80f7c054b6e5daf9c962cad5b8ed5bd11998b40d5734442bed798f6e5c915bd8bb07e0188d0a55c1290074f1c287af06352299184492cbdec9acba737ee292e5adaa445547355e72a03a3bac3aac770fe5d6b66600ff15d37d5b4789994ea2aeb097f550aa5e88e4d8ff0ba07b88c1c88573063f5d96df820abc2abd177ab037f351c375e553af917132cf2f563c79a619e1bb76e8e2266b0c5617d695f2c496a25f4073b6840c1833757ebb386f16757a8e16a21e9355e9b248f3b33be672da700266be99b8f8725e8ab06075f0219e655ebc188976364b7db139390d34a6ea67b4b223229183a94cf455ece91fdaf5b9c707fa4b40ec39816c1120c7aaaf47920977be900e6b9ca4b8940e192b927c475bd58e836f512ae3e52924e36ff8e9b1d0251047770a5e465905622b1f159be121ab93819c5e5c6dae299ac73bf1c4ed4a1e2c7fa3caa1039b05e94c9f993d04feb272b6e00bb0276939cf746c42936831fc8f2b4cb0cf94808ae0af405ce4bc67d1e7acfc6fd6590d3de91f795df5aaf57e2cee1845a303d0ea564be3f1299acdce67efe0d62cfc6d6829ff4ecc0a05153c24696c4d34c076453827e796f3062f94f62f4528b7cfc870f0dcd615b7c97b95da4b9be5830e8b3f66cce71e0f622c771994443e2",
+        "fffcaac0606c0edb7bc0d15f033accb68538159016e5ae8470bf9ebea89fa6c9fcc3e027d94f7f967b7246346bd9f6b8084e45a057b976847c4db03bf383c834054866f6a8282a497368c46e1852fc09e20f22c45607a27c8b2a4798ebefada54f8d3795b9f07606b1cd6e41f90d765480ef5c0d5790659cf1d210adfd412378b92e1dd9bd7fd95a1a66677fc6baa0e3a53c9031c1fb59cbad9f5dc5881a3c8e25c80ecb1abf0971488ada1f533dcbf8d37031335378574b8d3fad61159c9fae28caa543b3072ce308d369be340e78c6edc664cc6dde9b2f0a4ad2e60ce9c8b1e5722b8d5b73d0962b74fb9ed86307a180f53933339f9d56d3b345c2a0e98fcf5de7754f3845f6be30089f0e142ad4602f18abdc750bda7c91c3f32872e66640db46045ab4c276b379f1b834c2cbb1bd8601305649ec6b3bf20618695136dee6541492d1d985ea1fb765fd7a559e810eba30f2f710233ae5a411b94ddcaa01a08f1c31320d111c0714422cd5e987c9a76fc865de34003ab12664081be8017d23d977f2bf4ed9e3ce09ea3d64bb4ae8ebfa9d0721f57841008c297e2f455a0441a2bd618ca379dbd239a21e410defb4001b1e11f87e36bf894c222f76f12ddcc3771bbb17d5c0dfd86d89a3e13e084f6dc1c4762bcd393c1757db7afb1434221569e7ddaaffd6318253ec3df8cf5f826b81896d6474ee06a2e30ccc8c6a96bdd5" ])
+#endif
     ]
 
 runhash :: HashAlg -> ByteString -> ByteString
diff --git a/tests/KAT_Argon2.hs b/tests/KAT_Argon2.hs
new file mode 100644
--- /dev/null
+++ b/tests/KAT_Argon2.hs
@@ -0,0 +1,42 @@
+{-# LANGUAGE OverloadedStrings #-}
+module KAT_Argon2 (tests) where
+
+import           Crypto.Error
+import qualified Crypto.KDF.Argon2 as Argon2
+import qualified Data.ByteString as B
+import           Imports
+
+data KDFVector = KDFVector
+    { kdfPass      :: ByteString
+    , kdfSalt      :: ByteString
+    , kdfOptions   :: Argon2.Options
+    , kdfResult    :: ByteString
+    }
+
+argon2i_13 :: Argon2.TimeCost -> Argon2.MemoryCost -> Argon2.Options
+argon2i_13 iters memory = Argon2.Options
+    { Argon2.iterations  = iters
+    , Argon2.memory      = memory
+    , Argon2.parallelism = 1
+    , Argon2.variant     = Argon2.Argon2i
+    , Argon2.version     = Argon2.Version13
+    }
+
+vectors =
+    [ KDFVector "password" "somesalt" (argon2i_13 2 65536)
+        "\xc1\x62\x88\x32\x14\x7d\x97\x20\xc5\xbd\x1c\xfd\x61\x36\x70\x78\x72\x9f\x6d\xfb\x6f\x8f\xea\x9f\xf9\x81\x58\xe0\xd7\x81\x6e\xd0"
+    ]
+
+kdfTests :: [TestTree]
+kdfTests = map toKDFTest $ zip is vectors
+  where
+    toKDFTest (i, v) =
+        testCase (show i)
+            (CryptoPassed (kdfResult v) @=? Argon2.hash (kdfOptions v) (kdfPass v) (kdfSalt v) (B.length $ kdfResult v))
+
+    is :: [Int]
+    is = [1..]
+
+tests = testGroup "Argon2"
+    [ testGroup "KATs" kdfTests
+    ]
diff --git a/tests/KAT_Curve448.hs b/tests/KAT_Curve448.hs
new file mode 100644
--- /dev/null
+++ b/tests/KAT_Curve448.hs
@@ -0,0 +1,25 @@
+{-# LANGUAGE OverloadedStrings #-}
+module KAT_Curve448 ( tests ) where
+
+import           Crypto.Error
+import qualified Crypto.PubKey.Curve448 as Curve448
+import           Data.ByteArray as B
+import           Imports
+
+alicePrivate = throwCryptoError $ Curve448.secretKey ("\x9a\x8f\x49\x25\xd1\x51\x9f\x57\x75\xcf\x46\xb0\x4b\x58\x00\xd4\xee\x9e\xe8\xba\xe8\xbc\x55\x65\xd4\x98\xc2\x8d\xd9\xc9\xba\xf5\x74\xa9\x41\x97\x44\x89\x73\x91\x00\x63\x82\xa6\xf1\x27\xab\x1d\x9a\xc2\xd8\xc0\xa5\x98\x72\x6b" :: ByteString)
+alicePublic  = throwCryptoError $ Curve448.publicKey ("\x9b\x08\xf7\xcc\x31\xb7\xe3\xe6\x7d\x22\xd5\xae\xa1\x21\x07\x4a\x27\x3b\xd2\xb8\x3d\xe0\x9c\x63\xfa\xa7\x3d\x2c\x22\xc5\xd9\xbb\xc8\x36\x64\x72\x41\xd9\x53\xd4\x0c\x5b\x12\xda\x88\x12\x0d\x53\x17\x7f\x80\xe5\x32\xc4\x1f\xa0" :: ByteString)
+bobPrivate   = throwCryptoError $ Curve448.secretKey ("\x1c\x30\x6a\x7a\xc2\xa0\xe2\xe0\x99\x0b\x29\x44\x70\xcb\xa3\x39\xe6\x45\x37\x72\xb0\x75\x81\x1d\x8f\xad\x0d\x1d\x69\x27\xc1\x20\xbb\x5e\xe8\x97\x2b\x0d\x3e\x21\x37\x4c\x9c\x92\x1b\x09\xd1\xb0\x36\x6f\x10\xb6\x51\x73\x99\x2d" :: ByteString)
+bobPublic    = throwCryptoError $ Curve448.publicKey ("\x3e\xb7\xa8\x29\xb0\xcd\x20\xf5\xbc\xfc\x0b\x59\x9b\x6f\xec\xcf\x6d\xa4\x62\x71\x07\xbd\xb0\xd4\xf3\x45\xb4\x30\x27\xd8\xb9\x72\xfc\x3e\x34\xfb\x42\x32\xa1\x3c\xa7\x06\xdc\xb5\x7a\xec\x3d\xae\x07\xbd\xc1\xc6\x7b\xf3\x36\x09" :: ByteString)
+aliceMultBob = "\x07\xff\xf4\x18\x1a\xc6\xcc\x95\xec\x1c\x16\xa9\x4a\x0f\x74\xd1\x2d\xa2\x32\xce\x40\xa7\x75\x52\x28\x1d\x28\x2b\xb6\x0c\x0b\x56\xfd\x24\x64\xc3\x35\x54\x39\x36\x52\x1c\x24\x40\x30\x85\xd5\x9a\x44\x9a\x50\x37\x51\x4a\x87\x9d" :: ByteString
+
+katTests :: [TestTree]
+katTests =
+    [ testCase "0" (aliceMultBob @=? B.convert (Curve448.dh alicePublic bobPrivate))
+    , testCase "1" (aliceMultBob @=? B.convert (Curve448.dh bobPublic alicePrivate))
+    , testCase "2" (alicePublic  @=? Curve448.toPublic alicePrivate)
+    , testCase "3" (bobPublic    @=? Curve448.toPublic bobPrivate)
+    ]
+
+tests = testGroup "Curve448"
+    [ testGroup "KATs" katTests
+    ]
diff --git a/tests/KAT_Ed448.hs b/tests/KAT_Ed448.hs
deleted file mode 100644
--- a/tests/KAT_Ed448.hs
+++ /dev/null
@@ -1,25 +0,0 @@
-{-# LANGUAGE OverloadedStrings #-}
-module KAT_Ed448 ( tests ) where
-
-import           Crypto.Error
-import qualified Crypto.PubKey.Ed448 as Ed448
-import           Data.ByteArray as B
-import           Imports
-
-alicePrivate = throwCryptoError $ Ed448.secretKey ("\x9a\x8f\x49\x25\xd1\x51\x9f\x57\x75\xcf\x46\xb0\x4b\x58\x00\xd4\xee\x9e\xe8\xba\xe8\xbc\x55\x65\xd4\x98\xc2\x8d\xd9\xc9\xba\xf5\x74\xa9\x41\x97\x44\x89\x73\x91\x00\x63\x82\xa6\xf1\x27\xab\x1d\x9a\xc2\xd8\xc0\xa5\x98\x72\x6b" :: ByteString)
-alicePublic  = throwCryptoError $ Ed448.publicKey ("\x9b\x08\xf7\xcc\x31\xb7\xe3\xe6\x7d\x22\xd5\xae\xa1\x21\x07\x4a\x27\x3b\xd2\xb8\x3d\xe0\x9c\x63\xfa\xa7\x3d\x2c\x22\xc5\xd9\xbb\xc8\x36\x64\x72\x41\xd9\x53\xd4\x0c\x5b\x12\xda\x88\x12\x0d\x53\x17\x7f\x80\xe5\x32\xc4\x1f\xa0" :: ByteString)
-bobPrivate   = throwCryptoError $ Ed448.secretKey ("\x1c\x30\x6a\x7a\xc2\xa0\xe2\xe0\x99\x0b\x29\x44\x70\xcb\xa3\x39\xe6\x45\x37\x72\xb0\x75\x81\x1d\x8f\xad\x0d\x1d\x69\x27\xc1\x20\xbb\x5e\xe8\x97\x2b\x0d\x3e\x21\x37\x4c\x9c\x92\x1b\x09\xd1\xb0\x36\x6f\x10\xb6\x51\x73\x99\x2d" :: ByteString)
-bobPublic    = throwCryptoError $ Ed448.publicKey ("\x3e\xb7\xa8\x29\xb0\xcd\x20\xf5\xbc\xfc\x0b\x59\x9b\x6f\xec\xcf\x6d\xa4\x62\x71\x07\xbd\xb0\xd4\xf3\x45\xb4\x30\x27\xd8\xb9\x72\xfc\x3e\x34\xfb\x42\x32\xa1\x3c\xa7\x06\xdc\xb5\x7a\xec\x3d\xae\x07\xbd\xc1\xc6\x7b\xf3\x36\x09" :: ByteString)
-aliceMultBob = "\x07\xff\xf4\x18\x1a\xc6\xcc\x95\xec\x1c\x16\xa9\x4a\x0f\x74\xd1\x2d\xa2\x32\xce\x40\xa7\x75\x52\x28\x1d\x28\x2b\xb6\x0c\x0b\x56\xfd\x24\x64\xc3\x35\x54\x39\x36\x52\x1c\x24\x40\x30\x85\xd5\x9a\x44\x9a\x50\x37\x51\x4a\x87\x9d" :: ByteString
-
-katTests :: [TestTree]
-katTests =
-    [ testCase "0" (aliceMultBob @=? B.convert (Ed448.dh alicePublic bobPrivate))
-    , testCase "1" (aliceMultBob @=? B.convert (Ed448.dh bobPublic alicePrivate))
-    , testCase "2" (alicePublic  @=? Ed448.toPublic alicePrivate)
-    , testCase "3" (bobPublic    @=? Ed448.toPublic bobPrivate)
-    ]
-
-tests = testGroup "Ed448"
-    [ testGroup "KATs" katTests
-    ]
diff --git a/tests/KAT_OTP.hs b/tests/KAT_OTP.hs
new file mode 100644
--- /dev/null
+++ b/tests/KAT_OTP.hs
@@ -0,0 +1,102 @@
+{-# LANGUAGE OverloadedStrings #-}
+
+
+module KAT_OTP
+    ( tests
+    )
+where
+
+import Crypto.Hash.Algorithms (SHA1(..), SHA256(..), SHA512(..))
+import Crypto.OTP
+import Data.ByteString (ByteString)
+import Imports
+
+-- | Test values from Appendix D of http://tools.ietf.org/html/rfc4226
+hotpExpected :: [(Word64, Word32)]
+hotpExpected =
+    [ (0, 755224)
+    , (1, 287082)
+    , (3, 969429)
+    , (4, 338314)
+    , (5, 254676)
+    , (6, 287922)
+    , (7, 162583)
+    , (8, 399871)
+    , (9, 520489)
+    ]
+
+-- | Test data from Appendix B of http://tools.ietf.org/html/rfc6238
+-- Note that the shared keys for the non SHA-1 values are actually
+-- different (see the errata, or the Java example code).
+totpSHA1Expected :: [(Word64, Word32)]
+totpSHA1Expected =
+    [ (59        , 94287082)
+    , (1111111109, 07081804)
+    , (1111111111, 14050471)
+    , (1234567890, 89005924)
+    , (2000000000, 69279037)
+    , (20000000000, 65353130)
+    ]
+
+totpSHA256Expected :: [(Word64, Word32)]
+totpSHA256Expected =
+    [ (59        , 46119246)
+    , (1111111109, 68084774)
+    , (1111111111, 67062674)
+    , (1234567890, 91819424)
+    , (2000000000, 90698825)
+    , (20000000000, 77737706)
+    ]
+
+totpSHA512Expected :: [(Word64, Word32)]
+totpSHA512Expected =
+    [ (59        , 90693936)
+    , (1111111109, 25091201)
+    , (1111111111, 99943326)
+    , (1234567890, 93441116)
+    , (2000000000, 38618901)
+    , (20000000000, 47863826)
+    ]
+
+otpKey = "12345678901234567890" :: ByteString
+totpSHA256Key = "12345678901234567890123456789012" :: ByteString
+totpSHA512Key = "1234567890123456789012345678901234567890123456789012345678901234" :: ByteString
+
+makeKATs otp expected = concatMap (makeTest otp) (zip3 is counts otps)
+  where
+    is :: [Int]
+    is = [1..]
+
+    counts = map fst expected
+    otps  = map snd expected
+
+makeTest otp (i, count, password) =
+    [ testCase (show i) (assertEqual "" password (otp count))
+    ]
+
+Right totpSHA1Params = mkTOTPParams SHA1 0 30 OTP8 TwoSteps
+Right totpSHA256Params = mkTOTPParams SHA256 0 30 OTP8 TwoSteps
+Right totpSHA512Params = mkTOTPParams SHA512 0 30 OTP8 TwoSteps
+
+-- resynching with the expected value should just return the current counter + 1
+prop_resyncExpected ctr window = resynchronize SHA1 OTP6 window key ctr (otp, []) == Just (ctr + 1)
+  where
+    key = "1234" :: ByteString
+    otp = hotp SHA1 OTP6 key ctr
+
+
+tests = testGroup "OTP"
+    [ testGroup "HOTP"
+        [ testGroup "KATs" (makeKATs (hotp SHA1 OTP6 otpKey) hotpExpected)
+        , testGroup "properties"
+            [ testProperty "resync-expected" prop_resyncExpected
+            ]
+        ]
+    , testGroup "TOTP"
+        [ testGroup "KATs"
+            [ testGroup "SHA1" (makeKATs (totp totpSHA1Params otpKey . fromIntegral) totpSHA1Expected)
+            , testGroup "SHA256" (makeKATs (totp totpSHA256Params totpSHA256Key . fromIntegral) totpSHA256Expected)
+            , testGroup "SHA512" (makeKATs (totp totpSHA512Params totpSHA512Key . fromIntegral) totpSHA512Expected)
+            ]
+        ]
+    ]
diff --git a/tests/KAT_PBKDF2.hs b/tests/KAT_PBKDF2.hs
--- a/tests/KAT_PBKDF2.hs
+++ b/tests/KAT_PBKDF2.hs
@@ -3,7 +3,7 @@
 -- from <http://www.ietf.org/rfc/rfc6070.txt>
 module KAT_PBKDF2 (tests) where
 
-import Crypto.Hash (SHA1(..), SHA256(..))
+import Crypto.Hash (SHA1(..), SHA256(..), SHA512(..))
 import qualified Crypto.KDF.PBKDF2 as PBKDF2
 
 import Data.ByteString (ByteString)
@@ -42,14 +42,48 @@
         )
     ]
 
+vectors_hmac_sha512 :: [ (VectParams, ByteString) ]
+vectors_hmac_sha512 =
+    [   ( ("password", "salt", 1, 32)
+        , "\x86\x7f\x70\xcf\x1a\xde\x02\xcf\xf3\x75\x25\x99\xa3\xa5\x3d\xc4\xaf\x34\xc7\xa6\x69\x81\x5a\xe5\xd5\x13\x55\x4e\x1c\x8c\xf2\x52"
+        )
+    ,   ( ("password", "salt", 2, 32)
+        ,  "\xe1\xd9\xc1\x6a\xa6\x81\x70\x8a\x45\xf5\xc7\xc4\xe2\x15\xce\xb6\x6e\x01\x1a\x2e\x9f\x00\x40\x71\x3f\x18\xae\xfd\xb8\x66\xd5\x3c"
+        )
+    ,   ( ("password", "salt", 4096, 32)
+        ,  "\xd1\x97\xb1\xb3\x3d\xb0\x14\x3e\x01\x8b\x12\xf3\xd1\xd1\x47\x9e\x6c\xde\xbd\xcc\x97\xc5\xc0\xf8\x7f\x69\x02\xe0\x72\xf4\x57\xb5"
+        )
+    ,   ( ("passwordPASSWORDpassword", "saltSALTsaltSALTsaltSALTsaltSALTsalt", 1, 72)
+        , "n\x23\xf2\x76\x38\x08\x4b\x0f\x7e\xa1\x73\x4e\x0d\x98\x41\xf5\x5d\xd2\x9e\xa6\x0a\x83\x44\x66\xf3\x39\x6b\xac\x80\x1f\xac\x1e\xeb\x63\x80\x2f\x03\xa0\xb4\xac\xd7\x60\x3e\x36\x99\xc8\xb7\x44\x37\xbe\x83\xff\x01\xad\x7f\x55\xda\xc1\xef\x60\xf4\xd5\x64\x80\xc3\x5e\xe6\x8f\xd5\x2c\x69\x36"
+        )
+    ]
+
+
 tests = testGroup "PBKDF2"
     [ testGroup "KATs-HMAC-SHA1" (katTests (PBKDF2.prfHMAC SHA1) vectors_hmac_sha1)
+    , testGroup "KATs-HMAC-SHA1 (fast)" (katTestFastPBKDF2_SHA1 vectors_hmac_sha1)
     , testGroup "KATs-HMAC-SHA256" (katTests (PBKDF2.prfHMAC SHA256) vectors_hmac_sha256)
+    , testGroup "KATs-HMAC-SHA256 (fast)" (katTestFastPBKDF2_SHA256 vectors_hmac_sha256)
+    , testGroup "KATs-HMAC-SHA512" (katTests (PBKDF2.prfHMAC SHA512) vectors_hmac_sha512)
+    , testGroup "KATs-HMAC-SHA512 (fast)" (katTestFastPBKDF2_SHA512 vectors_hmac_sha512)
     ]
   where katTests prf vects = map (toKatTest prf) $ zip is vects
 
         toKatTest prf (i, ((pass, salt, iter, dkLen), output)) =
             testCase (show i) (output @=? PBKDF2.generate prf (PBKDF2.Parameters iter dkLen) pass salt)
+
+        katTestFastPBKDF2_SHA1 = map toKatTestFastPBKDF2_SHA1 . zip is
+        toKatTestFastPBKDF2_SHA1 (i, ((pass, salt, iter, dkLen), output)) =
+            testCase (show i) (output @=? PBKDF2.fastPBKDF2_SHA1 (PBKDF2.Parameters iter dkLen) pass salt)
+
+        katTestFastPBKDF2_SHA256 = map toKatTestFastPBKDF2_SHA256 . zip is
+        toKatTestFastPBKDF2_SHA256 (i, ((pass, salt, iter, dkLen), output)) =
+            testCase (show i) (output @=? PBKDF2.fastPBKDF2_SHA256 (PBKDF2.Parameters iter dkLen) pass salt)
+
+        katTestFastPBKDF2_SHA512 = map toKatTestFastPBKDF2_SHA512 . zip is
+        toKatTestFastPBKDF2_SHA512 (i, ((pass, salt, iter, dkLen), output)) =
+            testCase (show i) (output @=? PBKDF2.fastPBKDF2_SHA512 (PBKDF2.Parameters iter dkLen) pass salt)
+
 
         is :: [Int]
         is = [1..]
diff --git a/tests/Number.hs b/tests/Number.hs
--- a/tests/Number.hs
+++ b/tests/Number.hs
@@ -42,17 +42,19 @@
          in 0 <= r && r < range
     , testProperty "generate-prime" $ \testDRG (Int0_2901 baseBits') ->
         let baseBits = baseBits' `mod` 800
-            bits  = 48 + baseBits -- no point generating lower than 48 bits ..
+            bits  = 5 + baseBits -- generating lower than 5 bits causes an error ..
             prime = withTestDRG testDRG $ generatePrime bits
-        -- with small base bits numbers, the probability that we "cross" this bit size ness
-        -- to the next is quite high, as the number generated has two highest bit set.
-        --
-         in bits == numBits prime || (if baseBits < 64 then (bits + 1) == numBits prime else False)
+         in bits == numBits prime
+    , testProperty "generate-safe-prime" $ \testDRG (Int0_2901 baseBits') ->
+        let baseBits = baseBits' `mod` 200
+            bits = 6 + baseBits
+            prime = withTestDRG testDRG $ generateSafePrime bits
+         in bits == numBits prime
     , testProperty "marshalling" $ \qaInt ->
         getQAInteger qaInt == os2ip (i2osp (getQAInteger qaInt) :: Bytes)
     , testGroup "marshalling-kat-to-bytearray" $ map toSerializationKat $ zip [katZero..] serializationVectors
     , testGroup "marshalling-kat-to-integer" $ map toSerializationKatInteger $ zip [katZero..] serializationVectors
-    ] 
+    ]
   where
     toSerializationKat (i, (sz, n, ba)) = testCase (show i) (ba @=? i2ospOf_ sz n)
     toSerializationKatInteger (i, (_, n, ba)) = testCase (show i) (n @=? os2ip ba)
diff --git a/tests/Tests.hs b/tests/Tests.hs
--- a/tests/Tests.hs
+++ b/tests/Tests.hs
@@ -16,10 +16,12 @@
 import qualified KAT_CMAC
 import qualified KAT_HMAC
 import qualified KAT_HKDF
+import qualified KAT_Argon2
 import qualified KAT_PBKDF2
 import qualified KAT_Curve25519
-import qualified KAT_Ed448
+import qualified KAT_Curve448
 import qualified KAT_Ed25519
+import qualified KAT_OTP
 import qualified KAT_PubKey
 import qualified KAT_Scrypt
 -- symmetric cipher --------------------
@@ -47,14 +49,16 @@
         , KAT_HMAC.tests
         ]
     , KAT_Curve25519.tests
-    , KAT_Ed448.tests
+    , KAT_Curve448.tests
     , KAT_Ed25519.tests
     , KAT_PubKey.tests
+    , KAT_OTP.tests
     , testGroup "KDF"
         [ KAT_PBKDF2.tests
         , KAT_Scrypt.tests
         , BCrypt.tests
         , KAT_HKDF.tests
+        , KAT_Argon2.tests
         ]
     , testGroup "block-cipher"
         [ KAT_AES.tests
