pax_global_header00006660000000000000000000000064136015236210014511gustar00rootroot0000000000000052 comment=11a718112e358dc5cd18220f74848cf1ee8c41b4 wyhash-0.0.1/000077500000000000000000000000001360152362100130125ustar00rootroot00000000000000wyhash-0.0.1/.gitignore000066400000000000000000000000411360152362100147750ustar00rootroot00000000000000*.out *.pprof ./go-wyhash *.test wyhash-0.0.1/LICENSE000066400000000000000000000022731360152362100140230ustar00rootroot00000000000000This is free and unencumbered software released into the public domain. Anyone is free to copy, modify, publish, use, compile, sell, or distribute this software, either in source code form or as a compiled binary, for any purpose, commercial or non-commercial, and by any means. In jurisdictions that recognize copyright laws, the author or authors of this software dedicate any and all copyright interest in the software to the public domain. We make this dedication for the benefit of the public at large and to the detriment of our heirs and successors. We intend this dedication to be an overt act of relinquishment in perpetuity of all present and future rights to this software under copyright law. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. For more information, please refer to wyhash-0.0.1/README.md000066400000000000000000000063171360152362100143000ustar00rootroot00000000000000 # wyhash [![GoDoc](https://godoc.org/github.com/zeebo/wyhash?status.svg)](https://godoc.org/github.com/zeebo/wyhash) [![Sourcegraph](https://sourcegraph.com/github.com/zeebo/wyhash/-/badge.svg)](https://sourcegraph.com/github.com/zeebo/wyhash?badge) [![Go Report Card](https://goreportcard.com/badge/github.com/zeebo/wyhash)](https://goreportcard.com/report/github.com/zeebo/wyhash) This package is a port of the [wyhash](https://github.com/wangyi-fudan/wyhash) library v3 to Go. --- # Hash Benchmarks Run on my `i7-6700K CPU @ 4.00GHz` | Bytes | Rate | |-----------|--------------------------------------| |` 0 ` |` 0.49 ns/op ` | |` 1-3 ` |` 3.46 ns/op (0.29 GB/s - 0.88 GB/s) `| |` 4-8 ` |` 3.40 ns/op (1.17 GB/s - 2.38 GB/s) `| |` 9-16 ` |` 3.64 ns/op (2.47 GB/s - 4.39 GB/s) `| |` 17-32 ` |` 4.63 ns/op (3.68 GB/s - 6.11 GB/s) `| |` 33-64 ` |` 7.51 ns/op (4.40 GB/s - 7.98 GB/s) `| |` 65-96 ` |` 9.22 ns/op (7.05 GB/s - 9.98 GB/s) `| |` 97-128 ` |` 10.7 ns/op (9.03 GB/s - 11.3 GB/s) `| |` 240 ` |` 17.5 ns/op (13.7 GB/s) ` | |` 512 ` |` 37.3 ns/op (13.7 GB/s) ` | |` 1024 ` |` 69.0 ns/op (14.8 GB/s) ` | |` 100KB ` |` 6059 ns/op (16.9 GB/s) ` | # RNG Benchmarks | Method | Speed | |-------------------|---------------| |` Uint64 ` |` 1.31 ns/op ` | |` Uint64n(large) ` |` 12.7 ns/op ` | |` Uint64n(med) ` |` 2.40 ns/op ` | |` Uint64n(small) ` |` 2.43 ns/op ` | |` Float64 ` |` 2.17 ns/op ` | # Usage #### func Float64 ```go func Float64() float64 ``` Float64 returns a float64 uniformly in [0, 1). Safe for concurrent callers. #### func Hash ```go func Hash(data []byte, seed uint64) uint64 ``` Hash returns a 64bit digest of the data with different ones for every seed. #### func HashString ```go func HashString(data string, seed uint64) uint64 ``` HashString returns a 64bit digest of the data with different ones for every seed. #### func Int ```go func Int() int ``` Int returns a random int. Safe for concurrent callers. #### func Intn ```go func Intn(n int) int ``` Intn returns a int uniformly in [0, n). Safe for concurrent callers. #### func Uint64 ```go func Uint64() uint64 ``` Uint64 returns a random uint64. Safe for concurrent callers. #### func Uint64n ```go func Uint64n(n uint64) uint64 ``` Uint64n returns a uint64 uniformly in [0, n). Safe for concurrent callers. #### type RNG ```go type RNG uint64 ``` RNG is a random number generator. The zero value is valid. #### func (*RNG) Float64 ```go func (r *RNG) Float64() (v float64) ``` Float64 returns a float64 uniformly in [0, 1). Not safe for concurrent callers. #### func (*RNG) Int ```go func (r *RNG) Int() int ``` Int returns a random int. Not safe for concurrent callers. #### func (*RNG) Intn ```go func (r *RNG) Intn(n int) int ``` Intn returns an int uniformly in [0, n). Not safe for concurrent callers. #### func (*RNG) Uint64 ```go func (r *RNG) Uint64() uint64 ``` Uint64 returns a random uint64. Not safe for concurrent callers. #### func (*RNG) Uint64n ```go func (r *RNG) Uint64n(n uint64) uint64 ``` Uint64n returns a uint64 uniformly in [0, n). Not safe for concurrent callers. wyhash-0.0.1/go.mod000066400000000000000000000000501360152362100141130ustar00rootroot00000000000000module github.com/zeebo/wyhash go 1.13 wyhash-0.0.1/go.sum000066400000000000000000000000001360152362100141330ustar00rootroot00000000000000wyhash-0.0.1/hash.go000066400000000000000000000130021360152362100142600ustar00rootroot00000000000000package wyhash import ( "encoding/binary" "math/bits" "unsafe" ) type ( ptr = unsafe.Pointer uptr = uintptr u32 = uint32 u64 = uint64 ) const ( _wyp0 = 0xa0761d6478bd642f _wyp1 = 0xe7037ed1a0b428db _wyp2 = 0x8ebc6af09c88c6e3 _wyp3 = 0x589965cc75374cc3 _wyp4 = 0x1d8e4e27c47d124f ) func i(p ptr, n uptr) ptr { return ptr(uptr(p) + n) } func _wymum(A, B u64) u64 { hi, lo := bits.Mul64(A, B) return hi ^ lo } func _wyr8(p ptr) u64 { return binary.LittleEndian.Uint64((*[8]byte)(p)[:]) } func _wyr4(p ptr) u64 { return u64(binary.LittleEndian.Uint32((*[4]byte)(p)[:])) } func _wyr3(p ptr, k uptr) u64 { b0 := u64(*(*byte)(p)) b1 := u64(*(*byte)(i(p, k>>1))) b2 := u64(*(*byte)(i(p, k-1))) return b0<<16 | b1<<8 | b2 } func _wyr9(p ptr) u64 { b := (*[8]byte)(p) return u64(u32(b[0])|u32(b[1])<<8|u32(b[2])<<16|u32(b[3])<<24)<<32 | u64(u32(b[4])|u32(b[5])<<8|u32(b[6])<<16|u32(b[7])<<24) } func hash(data string, seed u64) u64 { p, len := *(*ptr)(ptr(&data)), uptr(len(data)) see1, off := seed, len switch { case len <= 0x03: return _wymum(_wymum(_wyr3(p, len)^seed^_wyp0, seed^_wyp1)^seed, u64(len)^_wyp4) case len <= 0x08: return _wymum(_wymum(_wyr4(i(p, 0x00))^seed^_wyp0, _wyr4(i(p, len-0x04))^seed^_wyp1)^seed, u64(len)^_wyp4) case len <= 0x10: return _wymum(_wymum(_wyr9(i(p, 0x00))^seed^_wyp0, _wyr9(i(p, len-0x08))^seed^_wyp1)^seed, u64(len)^_wyp4) case len <= 0x18: return _wymum(_wymum(_wyr9(i(p, 0x00))^seed^_wyp0, _wyr9(i(p, 0x08))^seed^_wyp1)^_wymum(_wyr9(i(p, len-0x08))^seed^_wyp2, seed^_wyp3), u64(len)^_wyp4) case len <= 0x20: return _wymum(_wymum(_wyr9(i(p, 0x00))^seed^_wyp0, _wyr9(i(p, 0x08))^seed^_wyp1)^_wymum(_wyr9(i(p, 0x10))^seed^_wyp2, _wyr9(i(p, len-0x08))^seed^_wyp3), u64(len)^_wyp4) case len <= 0x100: seed = _wymum(_wyr8(i(p, 0x00))^seed^_wyp0, _wyr8(i(p, 0x08))^seed^_wyp1) see1 = _wymum(_wyr8(i(p, 0x10))^see1^_wyp2, _wyr8(i(p, 0x18))^see1^_wyp3) if len > 0x40 { seed = _wymum(_wyr8(i(p, 0x20))^seed^_wyp0, _wyr8(i(p, 0x28))^seed^_wyp1) see1 = _wymum(_wyr8(i(p, 0x30))^see1^_wyp2, _wyr8(i(p, 0x38))^see1^_wyp3) if len > 0x60 { seed = _wymum(_wyr8(i(p, 0x40))^seed^_wyp0, _wyr8(i(p, 0x48))^seed^_wyp1) see1 = _wymum(_wyr8(i(p, 0x50))^see1^_wyp2, _wyr8(i(p, 0x58))^see1^_wyp3) if len > 0x80 { seed = _wymum(_wyr8(i(p, 0x60))^seed^_wyp0, _wyr8(i(p, 0x68))^seed^_wyp1) see1 = _wymum(_wyr8(i(p, 0x70))^see1^_wyp2, _wyr8(i(p, 0x78))^see1^_wyp3) if len > 0xa0 { seed = _wymum(_wyr8(i(p, 0x80))^seed^_wyp0, _wyr8(i(p, 0x88))^seed^_wyp1) see1 = _wymum(_wyr8(i(p, 0x90))^see1^_wyp2, _wyr8(i(p, 0x98))^see1^_wyp3) if len > 0xc0 { seed = _wymum(_wyr8(i(p, 0xa0))^seed^_wyp0, _wyr8(i(p, 0xa8))^seed^_wyp1) see1 = _wymum(_wyr8(i(p, 0xb0))^see1^_wyp2, _wyr8(i(p, 0xb8))^see1^_wyp3) if len > 0xe0 { seed = _wymum(_wyr8(i(p, 0xc0))^seed^_wyp0, _wyr8(i(p, 0xc8))^seed^_wyp1) see1 = _wymum(_wyr8(i(p, 0xd0))^see1^_wyp2, _wyr8(i(p, 0xd8))^see1^_wyp3) } } } } } } off = (off-1)%0x20 + 1 p = i(p, len-off) default: for ; off > 0x100; off, p = off-0x100, i(p, 0x100) { seed = _wymum(_wyr8(i(p, 0x00))^seed^_wyp0, _wyr8(i(p, 0x08))^seed^_wyp1) ^ _wymum(_wyr8(i(p, 0x10))^seed^_wyp2, _wyr8(i(p, 0x18))^seed^_wyp3) see1 = _wymum(_wyr8(i(p, 0x20))^see1^_wyp1, _wyr8(i(p, 0x28))^see1^_wyp2) ^ _wymum(_wyr8(i(p, 0x30))^see1^_wyp3, _wyr8(i(p, 0x38))^see1^_wyp0) seed = _wymum(_wyr8(i(p, 0x40))^seed^_wyp0, _wyr8(i(p, 0x48))^seed^_wyp1) ^ _wymum(_wyr8(i(p, 0x50))^seed^_wyp2, _wyr8(i(p, 0x58))^seed^_wyp3) see1 = _wymum(_wyr8(i(p, 0x60))^see1^_wyp1, _wyr8(i(p, 0x68))^see1^_wyp2) ^ _wymum(_wyr8(i(p, 0x70))^see1^_wyp3, _wyr8(i(p, 0x78))^see1^_wyp0) seed = _wymum(_wyr8(i(p, 0x80))^seed^_wyp0, _wyr8(i(p, 0x88))^seed^_wyp1) ^ _wymum(_wyr8(i(p, 0x90))^seed^_wyp2, _wyr8(i(p, 0x98))^seed^_wyp3) see1 = _wymum(_wyr8(i(p, 0xa0))^see1^_wyp1, _wyr8(i(p, 0xa8))^see1^_wyp2) ^ _wymum(_wyr8(i(p, 0xb0))^see1^_wyp3, _wyr8(i(p, 0xb8))^see1^_wyp0) seed = _wymum(_wyr8(i(p, 0xc0))^seed^_wyp0, _wyr8(i(p, 0xc8))^seed^_wyp1) ^ _wymum(_wyr8(i(p, 0xd0))^seed^_wyp2, _wyr8(i(p, 0xd8))^seed^_wyp3) see1 = _wymum(_wyr8(i(p, 0xe0))^see1^_wyp1, _wyr8(i(p, 0xe8))^see1^_wyp2) ^ _wymum(_wyr8(i(p, 0xf0))^see1^_wyp3, _wyr8(i(p, 0xf8))^see1^_wyp0) } for ; off > 0x20; off, p = off-0x20, i(p, 0x20) { seed = _wymum(_wyr8(i(p, 0x00))^seed^_wyp0, _wyr8(i(p, 0x08))^seed^_wyp1) see1 = _wymum(_wyr8(i(p, 0x10))^see1^_wyp2, _wyr8(i(p, 0x18))^see1^_wyp3) } } switch { case off > 0x18: seed = _wymum(_wyr9(i(p, 0x00))^seed^_wyp0, _wyr9(i(p, 0x08))^seed^_wyp1) see1 = _wymum(_wyr9(i(p, 0x10))^see1^_wyp2, _wyr9(i(p, off-0x08))^see1^_wyp3) case off > 0x10: seed = _wymum(_wyr9(i(p, 0x00))^seed^_wyp0, _wyr9(i(p, 0x08))^seed^_wyp1) see1 = _wymum(_wyr9(i(p, off-0x08))^see1^_wyp2, see1^_wyp3) case off > 0x08: seed = _wymum(_wyr9(i(p, 0x00))^seed^_wyp0, _wyr9(i(p, off-0x08))^seed^_wyp1) case off > 0x03: seed = _wymum(_wyr4(i(p, 0x00))^seed^_wyp0, _wyr4(i(p, off-0x04))^seed^_wyp1) default: seed = _wymum(_wyr3(p, off)^seed^_wyp0, seed^_wyp1) } return _wymum(seed^see1, u64(len)^_wyp4) } // Hash returns a 64bit digest of the data with different ones for every seed. func Hash(data []byte, seed uint64) uint64 { if len(data) == 0 { return seed } return hash(*(*string)(ptr(&data)), seed) } // HashString returns a 64bit digest of the data with different ones for every seed. func HashString(data string, seed uint64) uint64 { if len(data) == 0 { return seed } return hash(*(*string)(ptr(&data)), seed) } wyhash-0.0.1/hash_test.go000066400000000000000000000013701360152362100153240ustar00rootroot00000000000000package wyhash import ( "fmt" "runtime" "testing" ) func TestHash(t *testing.T) { var data []byte for i, want := range vecs { data = append(data, byte(i)) got := Hash(data[:i], 0x0102030405060708) if i != 0 && got != want { t.Errorf("Hash(...%d)=%x, want %x", i, got, want) } } } func BenchmarkCompare(b *testing.B) { sizes := []int{ 0, 1, 3, 4, 8, 9, 16, 17, 32, 33, 64, 65, 96, 97, 128, 129, 240, 241, 512, 1024, 100 * 1024, } for _, size := range sizes { b.Run(fmt.Sprintf("%d", size), func(b *testing.B) { b.SetBytes(int64(size)) var acc uint64 d := string(make([]byte, size)) b.ReportAllocs() b.ResetTimer() for i := 0; i < b.N; i++ { acc = HashString(d, 0) } runtime.KeepAlive(acc) }) } } wyhash-0.0.1/package.go000066400000000000000000000017051360152362100147370ustar00rootroot00000000000000package wyhash import "sync" // global is a parallel rng for the package functions. var global struct { sync.Mutex RNG } // Int returns a random int. // Safe for concurrent callers. func Int() int { global.Lock() out := global.Int() global.Unlock() return out } // Intn returns a int uniformly in [0, n). // Safe for concurrent callers. func Intn(n int) int { global.Lock() out := global.Intn(n) global.Unlock() return out } // Uint64 returns a random uint64. // Safe for concurrent callers. func Uint64() uint64 { global.Lock() out := global.Uint64() global.Unlock() return out } // Uint64n returns a uint64 uniformly in [0, n). // Safe for concurrent callers. func Uint64n(n uint64) uint64 { global.Lock() out := global.Uint64n(n) global.Unlock() return out } // Float64 returns a float64 uniformly in [0, 1). // Safe for concurrent callers. func Float64() float64 { global.Lock() out := global.Float64() global.Unlock() return out } wyhash-0.0.1/rng.go000066400000000000000000000022411360152362100141260ustar00rootroot00000000000000package wyhash import "math/bits" // RNG is a random number generator. // The zero value is valid. type RNG uint64 // Int returns a random positive int. // Not safe for concurrent callers. func (r *RNG) Int() int { return int(uint(r.Uint64()) >> 1) } // Intn returns an int uniformly in [0, n). // Not safe for concurrent callers. func (r *RNG) Intn(n int) int { if n <= 0 { return 0 } return int(r.Uint64n(uint64(n))) } // Uint64 returns a random uint64. // Not safe for concurrent callers. func (r *RNG) Uint64() uint64 { *r += _wyp0 return _wymum(u64(*r)^_wyp1, u64(*r)) } // Uint64n returns a uint64 uniformly in [0, n). // Not safe for concurrent callers. func (r *RNG) Uint64n(n uint64) uint64 { if n == 0 { return 0 } x := r.Uint64() h, l := bits.Mul64(x, n) if l < n { t := -n if t >= n { t -= n if t >= n { t = t % n } } again: if l < t { x = r.Uint64() h, l = bits.Mul64(x, n) goto again } } return h } // Float64 returns a float64 uniformly in [0, 1). // Not safe for concurrent callers. func (r *RNG) Float64() (v float64) { again: v = float64(r.Uint64()>>11) / (1 << 53) if v == 1 { goto again } return } wyhash-0.0.1/rng_test.go000066400000000000000000000025731360152362100151750ustar00rootroot00000000000000package wyhash import ( "runtime" "testing" ) func TestRng(t *testing.T) { var rng RNG for i, want := range rngvecs { got := rng.Uint64() if got != want { t.Errorf("rng.Next()[%d]=%x, want %x", i, got, want) } } } func BenchmarkRNG(b *testing.B) { var blackholeInt int var blackholeUint64 uint64 var blackholeFloat64 float64 b.Run("Int", func(b *testing.B) { rng := RNG(2345) for i := 0; i < b.N; i++ { blackholeInt += rng.Int() } }) b.Run("Intn", func(b *testing.B) { rng := RNG(2345) for i := 0; i < b.N; i++ { blackholeInt += rng.Intn(1000) } }) b.Run("Uint64", func(b *testing.B) { rng := RNG(2345) for i := 0; i < b.N; i++ { blackholeUint64 += rng.Uint64() } }) b.Run("Uint64n", func(b *testing.B) { b.Run("Large", func(b *testing.B) { rng := RNG(2345) for i := 0; i < b.N; i++ { blackholeUint64 += rng.Uint64n(1<<63 + 1) } }) b.Run("Med", func(b *testing.B) { rng := RNG(2345) for i := 0; i < b.N; i++ { blackholeUint64 += rng.Uint64n(1<<31 + 1) } }) b.Run("Small", func(b *testing.B) { rng := RNG(2345) for i := 0; i < b.N; i++ { blackholeUint64 += rng.Uint64n(1000) } }) }) b.Run("Float64", func(b *testing.B) { rng := RNG(2345) for i := 0; i < b.N; i++ { blackholeFloat64 += rng.Float64() } }) runtime.KeepAlive(blackholeUint64) runtime.KeepAlive(blackholeFloat64) } wyhash-0.0.1/vecs_test.go000066400000000000000000001224501360152362100153440ustar00rootroot00000000000000package wyhash var rngvecs = [...]uint64{ 0x111cb3a78f59a58e, 0xceabd938ff4e856d, 0x61fb51318f47d2a4, 0x78bd03c491909760, 0x7c003d7fb14820de, 0x8769964729356b1f, 0xe214284dc87f9829, 0x29a283ebb1b295a2, 0xf4e11accbc44be57, 0x9a108fea1a03ac0a, 0x18d48308dd273c7e, 0xce6616261de32d8e, 0xdfc7e18b21bdf63a, 0xde0d48d5d9c81ec5, 0x39a8a6eadeeefa1a, 0xf119a8000e655799, } var vecs = [...]uint64{ 0x0102030405060708, 0x5d82bd5a3b138a63, 0x3158b891db8b2910, 0x1d9e97773c4c28e1, 0xdb9d8eaf7194120, 0x2e8b16a87392aebd, 0xb726b26fd3553666, 0xd406f08b541da1cb, 0xbac1d2ef199ea79a, 0xb6bf79997cff482a, 0x32b55a19e8688c1, 0x332f1c0a79fe6558, 0x80d49c5d8abdf8f6, 0x3a29b68f839f45e8, 0x1940857f0a979924, 0xf133b2e3314a866, 0x4c8587bfa95e2230, 0xe43f8945877db6bb, 0x9be0f0aa4c64a9a, 0x9c3c6d8e885b8854, 0xe44d752380640e1c, 0xa484026d049debe, 0x9e85973dc122a5f3, 0x7bd60d3610cbb677, 0xc2515f6b20926b77, 0xa499181a14bd1173, 0x76195e770d0c9565, 0xfed59fdf49417f22, 0x794eba485f43c099, 0x6d97ce6217bda963, 0xc244d2c409222b80, 0x57cf4e9197a412ef, 0xd7d02b1e8a711b65, 0x98e9c19c0554593c, 0x607c755a1ba7de65, 0x5c941df717e3cc19, 0xad06504b3f1b1c4d, 0x41622aff282ab9a4, 0xa8acaf2e45965e30, 0x14ec7f6fe43e106c, 0x103de774555ad2db, 0x5c20288e0ad6124, 0x8647bbb03ad91896, 0x6b0060782a5e94b5, 0x66f9428acb562236, 0xa923973b933a14ff, 0x32ef32e0ccf4a537, 0x1a09118a26fab3b6, 0x636ef63f8c72baa8, 0x8a60f839fe17fb62, 0x22d15da60f23032a, 0x67c85370d58574e1, 0xccccba2b204e929a, 0x67a3b47448d7c7a6, 0x38528068fd57daf5, 0x788c2131ae744e84, 0x7a129ab5ed19e3d2, 0xb4313699073b5363, 0xfd9615087c83e059, 0xdfaf108308fdc180, 0x29ac888c9b416e1, 0x7e4a934c51c69646, 0x9b71fc9518755e15, 0xa74eace12cef107a, 0x50703f638313222d, 0x65e62f6e3b2b45b1, 0x7718653d586fafad, 0x8cdc09f887c6a5ad, 0x2a726c490f38fd63, 0x24a2996757365bae, 0x58d4dfbac05069da, 0x74a0b8191fd31cbd, 0xafc7fe5ced03c1b6, 0x49a4d58699b5c8e0, 0xf92b6d87a01a1436, 0x10a9ca37669b060c, 0x751e7319643628c5, 0xc8717e7714d5b4c4, 0x7697ec5038e5178, 0xe9cd2924dea82766, 0x6931eb1a34eb1177, 0xe226a5d2953705f9, 0xe87d0ee8b68801c6, 0x45b0594b22f3e5e1, 0x2bf298d17e53c191, 0xa6b423b2c316819c, 0xf7ddd2a5d23492ef, 0xf4fb451daad1f1d4, 0x7b5885a67d45b3e5, 0x3c73664e30c29e83, 0xe47ee254ed2cbab8, 0x5e9ec1c88067b76a, 0x528f6844d503cb5, 0x6fc913ca9b2530ca, 0xb7e2bf535df8062a, 0x328a6e38e6eb8ee4, 0xc1910646b2d7ccda, 0xdbd843672a6e66f4, 0x69dcfb4c4131fccf, 0x47523e17a719e1f4, 0x3b0a58f4726ad84b, 0xf731a34cebb14bdd, 0xda38a955e5b70b89, 0x6cb164d6afe3023b, 0x7bae14eb44f1c287, 0xf27b7dff80fcb362, 0xb6934bca223433c8, 0x71aaa3867d9bf968, 0x4534f4527d7fc257, 0xbefc00e6c019e33, 0x312bc670c67084f6, 0xdad804abc41d79e3, 0x638fc2c128308356, 0xe78374bb6228c456, 0xccd9d615860a7218, 0x5576212c95078a04, 0xc4a3c89a4417b20c, 0x441b26ed49aaa4d4, 0xf8121cd094e2c764, 0x46ad579bdfe0a3e5, 0xb0c990faff8ea962, 0x8b95c45b60343e6a, 0xa059c32a793d8453, 0x8ce9a707fa431df9, 0xf1994049cc79022f, 0x2c45b684c226bdb1, 0x71ec3b4142dbcdc2, 0x8ecc0792f586113, 0x4a4a44ec0fd49e0f, 0x9701d310841e10f2, 0x5712753142b2f827, 0x15962ae538160539, 0x344b9ab65429dd18, 0x1b409dfc1da08b1, 0xd9a1572fa13597b0, 0x389b5be6fec6f35f, 0x9906901d31b1b9d5, 0x361cac80e1d1220a, 0xba88a1f74604a691, 0x269c771c8c2f20e6, 0xf462afd5bf52b9bf, 0xa553bad17dcdfe75, 0x51206b14321d8f54, 0x743854d81e18ba6c, 0x60a8db6db33b05c1, 0x1b46e3601b46bf27, 0xcf865164e53b29a5, 0x26ddf1c0092a14a5, 0x161d1196f3cc4cd2, 0xc95c0c84b6c720ab, 0x879527c4f30957cb, 0x7560873bad526848, 0xc4de83fb85613016, 0x2539bea0775dc271, 0x978a340add756c46, 0x77ac93eebafb2d1a, 0x984a00ecbb9ce859, 0xf37be45c10125c78, 0xaa8cc7992383c2cf, 0xb3c15df8854ab688, 0x96245c85e596ae91, 0xa23fb89cff076225, 0xd6d13f11b9976ce0, 0xbf39416c51a5e005, 0x8cf9d2b04d6fe15, 0x413df51a301baa3b, 0xbf84211fb3bee980, 0x551ceb9b194909dd, 0x1f5169402158ed4d, 0x1542d44ae19cae85, 0x2be1232c89aabb36, 0x87e47dce014c067e, 0xf4858b240e471c96, 0x383f3c5b424da532, 0x7581e72d5d03b88b, 0xbbeefdc3b52463d5, 0xc3d64d4a24b0552d, 0x49eb7112efe8ad8c, 0xec89e07030fb8021, 0x330e009df7249b05, 0x3246c8f8201be8c3, 0x579eedc1b85755ed, 0x884b522177907d94, 0xd83fe3a913d31c79, 0x445e094923ee4d1c, 0x6e79fef3795b89b7, 0xcae631ffe26500d2, 0x48cfa2117ab74350, 0x5dd62da3db9a70c8, 0x18bc8309ca460bfd, 0xc9f66fa7b5633c3a, 0x3b736b0d76e3c2d7, 0x2679d4987bf85415, 0xec2d6c5796e48478, 0xaac030146fa5c317, 0x49e26e83e068291f, 0xea7d872f5771e722, 0x68430f6b1b353174, 0xf6eabef3747728fd, 0x7ec54af3d795b4bf, 0xdaf085c724f7efd3, 0x5d137c971c737183, 0xc1a6d5b70bbbbd16, 0xc48fb2249686bcc2, 0x46b9959f158e4e65, 0x698a3546d45835, 0x196703541438f9a6, 0x1690333781d41205, 0xcbeb85c930b05782, 0xe84fe1e55051cab8, 0x2574536488d2cfcc, 0x6bd81f24d7bf6c6d, 0xec367456d884df17, 0xd09a9f3f835c57c6, 0xc36e8377bfcaea07, 0x35f17c3e9f4f3f76, 0x675f740fd1b2b3e8, 0x2916e113ebb76c94, 0x3064e34c6cf274c9, 0xeabfc917e8af3e8c, 0x9f4dddd596aa95b4, 0xd2a30664613f98fa, 0x154cec3a6433c850, 0xa09b836cafd598a6, 0xcce15dc7c8e13a3, 0xa05bd4846bbda6d4, 0x8b42e5c7445def81, 0xce66ba70616843e3, 0xa60b5e52b7e0ecc5, 0x1fee584e16315bd2, 0xd375171f60ac5bb8, 0xe9bfc34c6ae4282f, 0x446b40ea692a24d5, 0x3bec766a0fca6712, 0xf58e4ab033f1d491, 0x647c991f93f08ebf, 0x87d95902d0df5fb3, 0x6fa8f9ea317cd57a, 0x353543f7a818e3e, 0x1a07864afffa3504, 0x762746c124f1d23e, 0x3664d128dd8931c9, 0xf3ace3186f83c6c8, 0x41bf9973dc24adc0, 0xa0933eeecb0221bc, 0xe363f9c558884dc0, 0xcb60b90f93ae2cf9, 0x1eb05a38e8c904c7, 0x3d4e7ff9166c2f4e, 0x73f29dca92ae35a8, 0xa0c30802eff8db61, 0xac84e73ee8101809, 0xd235cb7037e3544b, 0x8f7f5df5a1416303, 0xfafdc58bea13c0ad, 0xebda20a79d5ef6a6, 0xe669a5fa53ad4400, 0x634c882fa91e082f, 0x53732076bf237c28, 0x18ef18d1e9f7568c, 0x737b7db92690b361, 0xc736f8e5f394dcd3, 0xac7ec474afe42f66, 0x6c3e5a3fe753c258, 0x58206c3b7f5a0ba0, 0x8db257a9f27d6309, 0x7a9c40a84be042a, 0xbd2162eb4631345a, 0x4263b60200f6c4e9, 0x9c47453c15481048, 0x9bae008a84ba4afa, 0xab00813e7878ab, 0x184ab8a435a6f4c, 0xcbd524671e9559d7, 0x8d59cf95632c91f0, 0xd354d53aa5386949, 0xa3de0643f5dd0567, 0xb000cd87a5d8a9f3, 0x1fa1e74c7446af24, 0x2176f059764cdb74, 0xa1a12d67be1adabd, 0x5da7eba72107dba8, 0xb52a987f555581f9, 0x3145404449e1750d, 0x367179f41a0be8ce, 0x258b7ffd455cd3c4, 0x46db13b54e470ee6, 0x4d7931e78a5bc0ef, 0x68e132606e107d46, 0xc354d4811559fcfe, 0x7c0c160892427d77, 0x55dcf8c748401c1c, 0x5a61de7c2d7af941, 0x5a8240f723c73064, 0x7da7fe11526a574, 0x3e0c2dbb55359dfe, 0x4c3bf8da4be10cfe, 0xcd01f0dbd054d7a1, 0x5990b7811071a0c, 0xf3e97e6765543401, 0xb265b75069c7214b, 0xa97f9166aff94f80, 0x838bdcea34ac1f56, 0xf858121d469a6134, 0x1ba62ef265fe156f, 0x20ab81fb01aa40a1, 0xa2f6d36c018d36d2, 0xc15af1edb87c1762, 0x22160324f6026f4b, 0x77d6777635e02477, 0x6f3386a005484c78, 0x668d754bab287d5f, 0xdc231fd436c7e94d, 0x6ccaafc9feb9c218, 0x41df74e7d3ca239b, 0x71cbf0a96bf44ab, 0xc15d90d054b1b55e, 0x8581c73f516acf32, 0xf705f61fe28771cf, 0x60bbe61240f592d9, 0xb839a4f50859a482, 0x79591405937372fe, 0x6de5d6c4f8f92300, 0x46d949643a643684, 0xb9ede88c8782f8a5, 0x497c4d6a7793adc6, 0x48991888dfc81e1c, 0x6b7faafb317c4c41, 0x53bd6c51280f0bb2, 0x596741dbd8a44616, 0x31c6ae3143d128e3, 0x33e44715c5ed4290, 0x3a02b92b0a578576, 0x516cb8ebffb63678, 0xce7f7fa8814bce61, 0x74055530dd7fd4d1, 0x4b622e051f201d09, 0xf99a20ed2cf9e2d8, 0x8a57797cc209cc2d, 0x32c35812d55855c7, 0x9b7470f07e1a4dba, 0x98f228223ab53475, 0x2834c2550d3ac2c1, 0x8315faa083c6208e, 0xcd5c4703998eeade, 0xf5773a8a1cf23b96, 0x5b4c39e95672362d, 0x5794a13dbcba29bb, 0x6376592ddb0213cd, 0xc5a25297b84d2a0f, 0xff1a87ce5561861d, 0xe4dfe12a01f78484, 0x4aa2dcbbc34004a5, 0x76bc79fa879f91fc, 0xf1bf23d9f3ea909e, 0x71c2f7450ce9e294, 0x80f4bc76f9d176ed, 0x35b6d05f71e86257, 0xca0d39c898b37b90, 0xd286854af9e136a6, 0x609a12b8dfec3ad0, 0x93da837da6e3df, 0xc548fa91ca62d877, 0xaba1a18ea8e41d6e, 0x81be1982b8e3505d, 0xd2d4839ffc9975de, 0x9b80dba9bf658a81, 0x412e6f7d61b02db4, 0xfc3249aea3990f69, 0x34f626586f7e93e8, 0x99bd9c499f058d0e, 0x99d777a8597383ac, 0xf60023ff01ba1266, 0x81f1f1c5a7291e26, 0x6a6685ef514effbb, 0xbca82be3d2e858a2, 0x9caee7ec637dbe0b, 0x563e4053283b6b6f, 0xf30ceb5a9b525b59, 0x1e7e3f0c638a83dd, 0x6d832cf0625c3031, 0xf4bdfb6055d660b8, 0xd28020d9adcb94a8, 0x6667e0edace14e55, 0x75f82f2db4acd97, 0x84f5d87c09e2671d, 0x43bc0f9ac4ca073d, 0xf6c825bf681eddba, 0xd37954892efb356c, 0x20913175c395d8c3, 0x76390d6829dd08af, 0x4008ba32eb48a6f9, 0xa1fca54bc23dfbda, 0xe837f2783f39baf, 0x3421812e323eab77, 0x3cbb9070b29ba9d4, 0x1b364fc7d2c218a6, 0x4911e66e892f5fe5, 0xb159d2c1d36f3f26, 0x73bb4c90b09896f, 0x239e5c156997e17f, 0xbde2b1cbef3d37b9, 0x6cdb037551aa22b1, 0xc5d100016e15105d, 0x75d953298f7a5c0c, 0x5e0cb818cfa927f5, 0x4086a4253e31931b, 0xcd7bef9b8f8d50ee, 0xd6e7cd98cb75385f, 0xdb4a284d0e5f21ff, 0xa057717cfbfdfeb9, 0x681f4bc6e7ff69b6, 0x723a3865970a4224, 0x96a56fd465e9aa1b, 0xa8fc2f10bc69d0cb, 0xf6e1c823bea4c2ba, 0x7d433f2caf9c699a, 0xb2ca370a33ee8b67, 0x1523ef2c054d7ce8, 0xf0327e37becaf055, 0xf6ae76267f115114, 0x333abd96a7965aa4, 0x2d805638cedcef4a, 0xcca12d1874a5d5a, 0x96d0af46d94cdb65, 0x406e2ac8ac8964ef, 0x8afc4320ef1a40fa, 0x23728eba4bb7ae7d, 0xa9c4030ee11b0440, 0xa9b6a9d9107461ae, 0x5561d5964995ac6f, 0x5427c4780a068df8, 0x8018a3a517fee425, 0x4c62284a3f3dab50, 0xa11d7501d7a94cff, 0x52a0008d769b43f, 0x4c14983f9225037, 0x784c3a192467767e, 0xcb58bc60151721fc, 0x554be0a0d5dd3ffc, 0xda21857679408805, 0x616163ad6b22a8f, 0xd3779e3a249db48f, 0x51d99ff7b656798b, 0x731b3c74f45ae55b, 0xc7be97cdc3a10281, 0xe0b0cdcee972088b, 0x71f9330c54d90ba2, 0x9725453a21c08f66, 0x9b7b454d5c2d3292, 0x70d09850dde14aee, 0x70e018565a4c1870, 0x893b4f136d0af90, 0x376661eca7c832cf, 0xa2b96bc4346674ad, 0xe0e8727f5b0ecf33, 0xd822eb839e4a54fa, 0xf82883988362ddd1, 0x931fecc2b638b667, 0xdb4753c7b3fa6f94, 0x14b30a9115bbcb53, 0x9c70fb2f1e9c50c, 0x3505e15b8d3c2190, 0x3d0517db9a223241, 0x85b02ab320e0f8ab, 0x8cc8d1c5b45c1aa, 0xabc98b3b4813f19e, 0xab94b10f0a72b6b6, 0xb92c992026694dba, 0x4aa6c8e9fa42f768, 0x41d9c7bd2f4f0aad, 0xf195d4c08c1cba3a, 0x68106c1d33a3a5d0, 0x982d444d1ee1a9bd, 0x30a4af3d68a11a44, 0xe23d3932363343ac, 0xebb2685e03409e40, 0x92a8b9674f135759, 0xf4784a3b75e20df6, 0x6140ff3ca5228b94, 0xbc711040b221affc, 0xedbae6455670a9e7, 0xf9c7131371e819df, 0xd3c2450448934a9e, 0xac09d2871d836a4c, 0x41b4bd7e991da990, 0x4c177bdc0022af93, 0xd62cd530c650fa0b, 0xb280ee732ecc30c, 0xa2210b6736a043db, 0x7197b51c55b4d2db, 0xa155933acdc5473e, 0x5e58c7dad7d285f, 0x7815c2b9d32b92f3, 0x7b9257dcd0a360aa, 0xdb21d4ae340b80d8, 0x275c8850fdc2b756, 0xdef506a200bd2e2c, 0x2dc9fd44ae4be2a1, 0xd902825b0e041ce6, 0x9934307a44fb29d2, 0xc63ee4a2826fe9a4, 0x4a29537222ad50cd, 0x212ffd257d8ee12a, 0xf6a0ef3b67d45e8e, 0x79cc903ab2f2fbcf, 0x11104516e5922cfc, 0x5c1cff65fb9b3c71, 0xd747652f5a56aa84, 0x71dfaecbd49b9f8e, 0xd81de9a5efceb22a, 0x390f7c086f7e884d, 0x951a09576da0f785, 0x30b8eaa497a33913, 0xf49bc4913fe2d015, 0xa71e35f4177eaff7, 0xac6f1c92680bfc8a, 0x723e4be95d7e5aa8, 0xf48d9054e2c86969, 0x310aab13a0a889cf, 0x611f7b21b0448c22, 0x3e8b6a22b2ebdb3b, 0x1b67194ec880ecc9, 0xd0d0858e41c6be61, 0xa810f377f0cb00a, 0x2c8404369568b06a, 0x9befbcb27531064e, 0x78c199da51ef050, 0x890484ee7ea53be4, 0xd1723fe9fc38c781, 0x80800834e9b015d8, 0xeff60b47784f7f35, 0xe1e0bb0d3e50e8ff, 0x217f7ea3fc88fac, 0xf131f104d8db30b0, 0xa9ca822e18b62bd2, 0x83fffb3082bd7fa, 0x575700537bc0ffa2, 0x240bdb1f8bed65a5, 0xec42667b38e03cfc, 0xc038da5a3064e179, 0x98edbf1338177c13, 0xc5e899480b5d0e3f, 0x7fd59b6d56dc8652, 0x8ad1c72f0c6e0316, 0x37b6555d28152844, 0xa0a846248a5b567e, 0x797758101342eb98, 0x7a49bd612a5aa7e3, 0x580f1a787bf312bf, 0x43d012039ce4a8aa, 0xd433ca771b018ea0, 0x1fa48f4557302fa3, 0xdfbc778208f8756f, 0x14c9e2504824d21f, 0x879b5bb50d3a9adb, 0xe7dd2ec6ca2b693c, 0xb89da1307e8e5acd, 0x38904c41b9ee2736, 0x250c1b97329226d4, 0xdc1231506b713e74, 0xc46a9c3e2e90a1c4, 0xe9cf4438d4c157ff, 0x617306b36bd1f9cc, 0xaba782c6dae2f774, 0x89575ff6b30390c2, 0x20b16de6edaabffe, 0x11611fbe306556d, 0x612efebe9e1b940b, 0x9dc64605cdff2111, 0x40aff8d86455be85, 0x12711dc83644b429, 0x9c46be77146f15b8, 0xe54f8f7b9549d42e, 0x9c08daefcdee648f, 0x32554f148fbf9e34, 0x538df847583483f1, 0x58e490bc17a8e806, 0x21ca95e9c04ce67b, 0x3c592b6f185a53f7, 0xc9578a8858395ae3, 0xe10ccf66c89b1fb3, 0x1019883394985a43, 0xf6f08fff5312b355, 0x1b011ff87375e249, 0x57e27ced2f83fc99, 0x67c0a5bbcf531ed5, 0x24abaf98b36736a6, 0xae4710b2d0bfddd3, 0x274b00c1808fc931, 0xd6255e24ca49d4ef, 0xd93c82d4df56f31c, 0xac1d91830280f35b, 0x65e34baebd2b600, 0xdbe115345e115daf, 0x7e18af06e0534846, 0x9abb739d51e6792f, 0x8abedd592aa6b06d, 0xa59a05bd111197a8, 0x525301d0cd1c10bd, 0x7c238caa25e0aa3a, 0x6e8ccd75159471db, 0xce044bc56a38dd99, 0xa487b281c4f3c44a, 0xcb277594169eaf9d, 0xf1876585da569153, 0x98990f0e9dd514b8, 0x82abf27b0b93c0e6, 0x891e92859c90ab88, 0xa5ec5dc59b6bd0af, 0xbc13767094c4c40d, 0xfdaaaa5b64878db9, 0x7db8a3c08db82047, 0x392f14dbe67cc97b, 0xfe913248725ceb31, 0x6c7f06a1b38a06a5, 0x7ef8875bbbaba7cc, 0x85a853b0cbcbc7c9, 0x92b8e6d3303002b2, 0x684b47e59736be55, 0x5a7166d852458324, 0x772fc13365ca285d, 0xf87cd35c4095f45e, 0x6c9ef9ef193694f6, 0x3acd2457f267252b, 0xbbe4b7b4027fb993, 0xf670f4cc8e93840d, 0x45ff0250e91fc246, 0x14c7fbb654f09c9d, 0xed6c41957fd10a9e, 0xa39af61f4d8b1e73, 0xac95f02bcd44a942, 0x321a4e2a3c23c2ad, 0x63a84747b1178d64, 0x5b9c166f4861b507, 0x421f11ce0ef102eb, 0x8b5cc0ee053683d3, 0x26ffa9a90dd9e2d0, 0xa99214073a7ce9e2, 0x63098caf5e8e8ae1, 0xdf52399a5fd422e5, 0x5b5d66b1dbf52f72, 0xd64465a429d03065, 0xe7facd32675e4cca, 0x9b25a5724743f91c, 0xcbb09bace844787, 0xa8a34993829d630f, 0xf5069b76b8a2f944, 0x7521ce7f3b3e994a, 0xc5eaad547f51e6dd, 0x24229aa15d407372, 0x80bbdc87fcc02b59, 0xfe5ae33053ab0d6e, 0x9b08588393c0836e, 0x720bf581e740062c, 0x26082b252d88120, 0x5f5750526b2813ec, 0xf05740fde0c9f981, 0xe8a1fb2f0f419fb0, 0xd91783e18a8bb504, 0x6af48944ac2a1636, 0x9c0e128c4225b749, 0x70447f1d24fc99df, 0x62f2dad8af773662, 0x88bb3ff2524a0c33, 0x7abe45e3476e33ea, 0x3206d6ab0fc885b7, 0x2821a247cca79387, 0x7cb2261f01c67ac3, 0x4ef42ee515b79843, 0x63ad53884374bb0f, 0xdd30e6cfd8a51d51, 0x989fa428475f2cc4, 0x4e89ade69b78f771, 0x8d708ed6b0b87bd9, 0xf210532f60bd9cc0, 0x3d7fef894d15953b, 0xc6985cbec359c0c3, 0x1b417784a45c2f5d, 0xffe69ff4fd50f43a, 0xd42759272111168d, 0xb283ffb5f3ba606c, 0xef0a3a89322b5a4f, 0x6b89bb4b99e5430a, 0xbd958293bda6ae42, 0x4fd53476a0c77997, 0xda1650421e9fea98, 0x65e7f04156c1b285, 0xfb04d8457cb10a12, 0x587466a5fc2fa69f, 0x6166ddec0fe2b34c, 0x3133ed62f705980c, 0x54d0ff676ff4c3ce, 0xfe9518300384319b, 0x94f29d1b61db9d38, 0x3657dde4654f5e3b, 0x276bb4f1af337470, 0xacb1749d4b3c3dd2, 0xa6fca0e7407bcb2a, 0xf985a3f0d2e04439, 0xfbd8c6434fa0d0c9, 0xe41d08c658377217, 0xde3f36c9109263a3, 0xe43ffb233dc97833, 0xea295298c8f2943e, 0x552b54361539086a, 0x638806de5c85519a, 0x6294456b6e33b3a7, 0x961ebeae9e0e5c2e, 0x649d3d22a0912d0e, 0xf0c0aec3fe9c257c, 0x3b275c5adae90a0f, 0x565e5425c9b025ef, 0xaef22a702ea83e04, 0x3e8c77cf8681d5c2, 0x5816bcb50e276608, 0x9ff1372b6952f7c2, 0xed09b59d184d338f, 0x2d048756a88998c5, 0x46d999449dc34db3, 0x4925334aa35a4e64, 0xf75593698d0a7475, 0xfce0d36d29626881, 0x2ce4e417b0431eeb, 0x92daa7d9798ab9c5, 0x730b26a13fb75c13, 0x11e753a51d17d296, 0x12673ec12b0e4a70, 0x606c23961336ea05, 0xb43bfcf2badf6710, 0xd8f449691e86c050, 0x6eb23567fa3cdd4b, 0x982a50af0a1ba771, 0x23f656da3c8e73cf, 0x7cf783afebac3203, 0x7338fe68209d65ee, 0xc69b15917b4efee3, 0xaf7bf7258a742491, 0xdf8e60fb14c45c79, 0xd46acae87129b027, 0x33efa1674e2c3c2f, 0x49597aefab6087b8, 0x60c82d2a37a540bd, 0x12b8362f2b383ef0, 0xdf8b9da25c52e0f1, 0x4ea4267a4457e830, 0x3eb4e346b228933c, 0x337e4bd862e2ddf5, 0x14ab54ab722a73c7, 0x6cd5d01526190463, 0x4ac9d51550cdad55, 0xfb5fe33e596d3c88, 0xa6c6c89a2e449b38, 0xe3f40e75caeca158, 0x73e4be6c244dd697, 0xf8f178a85b623a46, 0xe492c8e0147e7880, 0x2ef77837e81f0dde, 0xdee09a140351c74c, 0xb1bc13c43bdd15ac, 0xbb13d18c13a18bd2, 0x5f3a01f8976d2a6, 0x8923a7b3578a0e2f, 0xaef03c19b7d913e9, 0x5da62d2efb85aba7, 0xab63c2ce9746adb8, 0x1f9dac4b1b506646, 0xab709193773afbb7, 0xa8803f7d571a6dca, 0x990078d5734e3601, 0xdea358eed8526dac, 0x16e894055dfb54b8, 0xb1fd6c1ae2bbddd, 0x2cabdc3acc13c779, 0xeef160a5b683d47c, 0x6449e7dbee3d5a61, 0x70d662767b6f36d0, 0x898a0f871dbabe1, 0xea31445248ca1a30, 0xc44d738bb92cec90, 0xda16b8a91ea7c544, 0xdc94b81e3aa2b4cf, 0xa95e34f0457fcf74, 0x1b1c1007cc829b4d, 0xd4b36f92d5fb5608, 0x6ba2e8a332f88a24, 0x81f89956ad69663e, 0xecb31dc031468b98, 0x4a4cb8415edcfc28, 0xcedd92f6b45a1208, 0x2c69d923b1b2ee29, 0xa6b2fb187678dc7a, 0x619331176d0f8c07, 0x500877b384b6a650, 0xc997a0552426a1c5, 0x46276bcaa177c2a1, 0xfff2b06de9b36557, 0x9a11cc805e09abbd, 0xf4090679dbab934f, 0x6861f58f136f79d6, 0x857e29135cdfef7e, 0x46d2766f923a9f01, 0x9da237445d6928ad, 0xdcc559c717380b14, 0x48d5efb8445304a8, 0xf80168065fabb8b0, 0x3ab0ef546ed77553, 0xe4897e335397e1df, 0xf37204fd901ea84c, 0x85c6da5cfdb63c1a, 0xf5ba18206e8c4406, 0xbf64790b9bcb9e26, 0xabea732ab2c1b270, 0xdc17dce3518849b4, 0x9d68e365930ce4b4, 0x533a21a0ed5978a3, 0x2822e3e1e8e2f83, 0x1d1c6462e43c7d5f, 0x1b382d4da9f5fd42, 0x94ff161cca8d9dd0, 0x9356a841fb0ffaf1, 0x7a5b5385741a816e, 0x2c55ccb2c34984ba, 0x2bb3da994255da4b, 0xdc2aea987f538974, 0xc099646f9110a3bc, 0x4f96397736096bbf, 0x41af10b80625b3ab, 0xfa80650e80ac2b9e, 0x7aa2473259c02a72, 0x5021010f9f4d3c96, 0x64d5a295f59c2bea, 0xe447831844550c53, 0x405d9c210b8ec841, 0x9573f11fdd7c9e76, 0x74ea4be479878b53, 0x3591432f0d25f9e8, 0x192901db1e598314, 0xf6f88d2c098e00fd, 0x81cc1c35fa27019a, 0x638e3a20541be500, 0x709e3a1e3b9c0c01, 0x2eea812104c90667, 0x7f43b957aeb7a2b9, 0xf5b11ea5d1b3a0b3, 0x5f4ebb346a215e16, 0x36c168137fa0727d, 0xeb02467d82cd53cc, 0xf0bb1e103880cb21, 0x4d971c1e72086e6, 0xdb8287461d8261c2, 0x9b8f25a23342e3d6, 0x8ce792f78590b0ca, 0x42345eb5b479fba5, 0x99281b5b9ff6f79c, 0xf246518724416e74, 0xa6ffe2f66a149131, 0xa5db844c6454b5d5, 0xfc2ad50ebb83991c, 0x40678e19b3ccfefc, 0x587fc2abb2c032a8, 0xc7e473c49abff4de, 0xf52617f3f7a9379b, 0xb1f764430f02123c, 0x8aef7038785a4330, 0x764a08927284595a, 0xce1b08267e8fae0f, 0x52cd5484a6366be6, 0xdb26e55c6303d271, 0x8e24a4c8d312b76d, 0x59c6812f316eaff5, 0x49c2621fea1241ae, 0x770218b9e0bec7c8, 0x7bd9c166de868101, 0x281ba3094fec9a03, 0x2bb4110ecfa80e18, 0x2b18527650b7db1, 0x3329f21e7a3bd2f, 0x30155d0f67df5ed7, 0xa7712a264393fda8, 0xdcbaa3c2cea9248d, 0x297d26e423cc9f62, 0x49d65c95e20161d7, 0x4c4fc8a5169cb64b, 0x389e01d0321bb6b4, 0x62c8166ef9180f15, 0x764f83ee4c0d3ad4, 0x8b2720d52953629, 0xe3fb613636c9907f, 0xeb2f92bec8d7c755, 0xe5d694e6d7318590, 0xca2e5f37a39b680c, 0xb20155a1994b1fea, 0xb5e2d326c48fe240, 0x7a023bec9c697310, 0x28548e5e3b34ea2d, 0xdbeb3a0bb89e1425, 0xa4b53be22304a146, 0x2afaffc20781a565, 0xed921c060a89f227, 0xbe3e72810b39be5b, 0x23863d0f96a17515, 0xa9edebf68a5666ca, 0x2ee05a547198e84a, 0x32a09f5b96f8797e, 0x458ca94cb9c97fec, 0x1e69cc4b8af055d3, 0x308ea56de4a849ed, 0x57c6cc5f0ec1bf23, 0xe9e87b7cd98af3f4, 0x2d0648bade1e2098, 0xbf3f1286389bd124, 0xc8255c85d13220e9, 0x1cdf23e5c4c7188e, 0x668ee083bff4700e, 0x99f102d867439a1a, 0x83cc746429b7d9eb, 0x187175de275383db, 0x67c58c79fb59cb9, 0x8324a2947333179b, 0xa0582f6bc4790fa5, 0x603c5144945d22df, 0x371b2ad3abc5e6f6, 0xa50b941a059c6436, 0xca31fa404ca98651, 0x64120d16aab9f22, 0xaedc179e087dbd3a, 0x5e2c6de30d033445, 0x726122603bc01319, 0x7d9435e2dd882803, 0x67d23f4437a15e8e, 0xe1f3b124e3a2280c, 0xa1a2a929a4e663ac, 0xb957b1e676762f8c, 0x885fa76981ce210, 0xe8a141b62c2fedc5, 0xd3b6385ae82ecf7b, 0x8d19b7516396e234, 0xa893e0a0d14e3af9, 0xe404f8209f22d4b8, 0xe112df6b97354899, 0xade55fcba3a250b8, 0x5e6b502e11348c5e, 0x9655ff3498e9ada1, 0x141224f80f705cea, 0xe8de8f73a7ca1578, 0xad29487a3d267f31, 0x60a301ae7ce75cb0, 0x1d86114770f82890, 0x29a229b63192b030, 0x7b0d62e65c45619, 0x40c729ded344aba4, 0xe37bedb627552f89, 0x38f68ec810f9b7e7, 0xe4bb018a2169fa8d, 0x446f6c9f495497f8, 0xdd9a0f7ea3ca1f9, 0xbfd91b4814f0f36b, 0xc2680298e70d9f71, 0xfa66f29f41eda402, 0x5a8d25dc0b158f3c, 0x3a9ea7b3ab37c089, 0x126ed96f5c266294, 0x9689c6b2c807d8a8, 0x4d31d198f7bcf2cd, 0x4c1abb537257e0be, 0x8bd288495f71007, 0x1ba5c530ac3120f8, 0x4b1aac9b88f7bd7e, 0x7e6160ac6a804d8, 0x411224728d4538bc, 0x7759a1a3411240c8, 0x424f0b8de361596, 0x95aff14fc98a4f38, 0x71ee1d56fffcf8ad, 0x7f8333bcce3cedc0, 0x8b07ff784a42f4e6, 0x18291fbe4afdd42c, 0xf096d8767526f113, 0xc863af1e69585159, 0x8aa59b10d6383eff, 0xd32e395db36dc96e, 0x3e3cce1bd23adf2b, 0x629402f885999655, 0xf7e268e93b94b48a, 0x7e7eb3ec68aa6594, 0xca55b38c50fa1adb, 0x78456c2c22d89eff, 0x2763afde04239de7, 0x4509091b73c6d206, 0x89c56fac767c9a46, 0x8051485f595243ae, 0x59e52fed12700ac9, 0xb0a428c1bf194dae, 0xd0a684d95057b294, 0x9ce5962f7618436c, 0x99deab46884d4a05, 0x8fdd0fe409fc5646, 0x3b10b0f4aa9cafe6, 0x4aa15333249b163c, 0x4e57cfce3eeb605f, 0xe2fe209d6c3ccbd3, 0x7e13af633464615a, 0x5e10ca6f0e8a84f3, 0xfe8b4084f0ec5aa5, 0x328623447044953, 0xe8b3f72e5818260f, 0x5b740582a99bbb24, 0x9d7bbf9dc64f0e3, 0x8983b83c92feaa89, 0xc66eae008a07b10a, 0x584c8e827cd8a0dd, 0x41bae6914ca45e8e, 0x3090b63f6f622df, 0xdca40edcd5a676f7, 0x8d749f2eefa836b3, 0x238ae6e1b03a82e8, 0x8090a858c1b32065, 0x4878a4d1643173e1, 0x7aa360038e745a6d, 0x866358cf506d09ea, 0x7a94dc4ae445a1b1, 0xdbd32e77c7d38b59, 0x54ec15421b37b72b, 0xf263d9b023f578c2, 0x8e5a55b243d3656a, 0x12cff01bdbb9490a, 0xbdc62fea16d0e5e0, 0xa7350ce5b837c9ef, 0xd529f9b4d2fc22f7, 0xd29f18d500b1b03e, 0xbe7d7ab150104aa4, 0xd4ae39ac6edc10c6, 0xfeb4b45b2466397e, 0x84d1c859fd31a883, 0x7a4066d5758d7154, 0xe3b43b9507ecea07, 0xcd6cd0ec5e27f37d, 0x2f729f2a1cfb2309, 0xa33147e1adfbe8be, 0x65ba99d0083c2c6e, 0x23ada8b20d133246, 0xe80dc460c04e8ba6, 0xd49d3da020695bde, 0x17f759ca3099fcbf, 0x95da1c0564ac384f, 0x453ed930e179f8b, 0xc80e2b847cdd0cf3, 0xd646acae71b31912, 0x6528e9159713fd2e, 0x35ea58bdbaeb5319, 0x5e64c6a6f84398d2, 0x9aca0d3080f1eb89, 0x64cebfdc407a8880, 0xf151cb9941516d2e, 0xdac53eb197dd6337, 0x98ebdfbdbd1834fe, 0x82ddfce3f6b02d8e, 0x236e6b362bef1955, 0x2c0513763c5927bb, 0x21eaf7ee79603bad, 0xe93abaccc1ff085b, 0x905add0ebe2f015, 0xee137afcc633a360, 0x89c9fc7bef4920cb, 0xb93a31f31c466596, 0x2cf6e78759961ab7, 0xcead7a902f2e13e6, 0x4dcda4bfe42eebf8, 0x634d48ba469267e9, 0x97406d0521adaf06, 0x4dca8032dad4813e, 0xe38db500dc5c47ea, 0xc81c094d81fe231, 0xf6193fbbfac484ca, 0x4715c552f2060026, 0x414788b29eeab437, 0x92d2dc0aee28c361, 0x2490dc27761bdbd5, 0xec7a683707650891, 0x17ab4736c79ee936, 0xb2ddbd979fb71934, 0x847e69a15612fa35, 0xfc8d9fda2485aac5, 0x6a77448ac7c457da, 0x8166ac324c8e3513, 0xf331d1a4c93c8762, 0xd11cc584d0a7b518, 0xe869b92719792aef, 0x4c2ffb24dc475a86, 0xcc3b1e2034001ce, 0x15f88604f63725e3, 0x382cb9e6d29707c8, 0x58f8d0cbbf4d5109, 0xc18be94f372219e8, 0x42beb275369b4a22, 0x1c4207c796bbbe18, 0x96ae9d3fa94534cc, 0x2c63825c95e1f220, 0x7f3277fd4d10b80e, 0xc70dc7e8ed3620f2, 0x6e7bbce02efe054c, 0x3be42637dc9045ff, 0xb64ea52cdc81c64f, 0x4e01ba10d538353, 0x2de177f7ac36b89d, 0x37ba5fe057f6ac0a, 0x4b8b9fea9ac51663, 0x9aa9ad454bf7515, 0xa4bc88ada0aade4f, 0xabfcf055f8e81a6, 0x4e66b8ef78b84c46, 0xab436a4877c45e53, 0xeb1fd1f0a8f320fe, 0x934499a1fc367b0c, 0x97650b0d0aa3b1fb, 0x63ea2f9ea056865e, 0x4908a7a816cdefb5, 0xf92cee259cfadc41, 0x41af5f5bb660f085, 0xc884aa0229deaf80, 0xb961752f905cb18c, 0xaf697f9aa03e6d49, 0x7056649faa739ff9, 0x1da947514602e7c2, 0x8ebc319832a11a14, 0xe6531dd53b1161b0, 0x955c455694987f8e, 0xf72aa5e8cba3bae7, 0xe2115d41885bcf05, 0x228a5c0531f543ce, 0x2b1a46dcead1fc, 0xff23d3cc9a859ad9, 0x490116f97bcebae9, 0xf2ab6976f9ae0370, 0xd32bfb8905c00a9c, 0xff9bba297135aed2, 0x6dd1c5d4ac0b2a27, 0xbd6a460bb25daff6, 0x7140b1d991f9555, 0x86d6b75c5b434086, 0xc741d7ea999a4935, 0x14f8e00ce5f99d81, 0xce05354189bcd152, 0xbcd703faa75018a2, 0x3147e83256e4bbea, 0xd19c1da66222e0f9, 0x18d8b8f36249668c, 0x9810f02a468930b4, 0x593728f5ff85d5b2, 0x805db8207b38ad44, 0xdab14c300355fdb9, 0xaa3efd5d85c3f425, 0x2718a30208db056f, 0xb85a311921d0768a, 0x5b4339d76ba3da70, 0x9e28d9ced9498379, 0xfb60f1c1f521f149, 0x374b36fe72926f5a, 0xe4b898f672f81a68, 0x45c767aacbd0e9d0, 0x74da4f3638918d91, 0x30a9b262533bce95, 0xc878c03d6675cffd, 0x321500094afd8ac4, 0x8afd7199b95931a1, 0x87403caf13f0ba37, 0x9e44f2e682dadcdf, 0x9882aa55f52bed8c, 0x7ea3133f45e26426, 0xfbe2d55998099d99, 0xe825e60a73e8c147, 0x988e4314e0f34e05, 0x3f70090b54383231, 0x60f8a00bcd3b481a, 0x85e9af8bb6e85caf, 0xc88bcd1bed7f0681, 0x6403b20777bd35f4, 0x612637bf54ac6913, 0x6b921376784962fc, 0xae91a6aea8b4fd78, 0xb22808f8517c1a9a, 0x208c8dad953f8396, 0xbd707e3bd78d92c, 0xfcf579c396c6919f, 0x7f6920771314118c, 0xc13b4e72f90fa0bb, 0xfe1dcbc9f9ca1233, 0x87bf07064572e6dc, 0x44a2b0efba619fab, 0xb14394aa33892856, 0xd4c86d872ac82460, 0xba93a498b6b0c6b4, 0x33bdf188f8c20b7, 0x696b8851d6eae742, 0x5badf0f542fa1a5e, 0xa7bb252ca246abec, 0x7efb07d6c6deb493, 0x60ee2b2bb3a57091, 0xc1cfcf11cc6bc0f1, 0x5a3cbb5a8be364d9, 0x2daed95cbb30539b, 0x775f56ef77f571a1, 0xdd099037fdd470c6, 0x8b85187e4598a117, 0x35724622bf8f1c97, 0x3bc727cd68305745, 0x9d117e761598dd7, 0xc3f240fb6b1bb51, 0x30d977404539d571, 0xae11a465d23c5432, 0x4a91b83f7cfa8523, 0x43f5b4315ecee61c, 0xce391b7f48e8e0d7, 0xfaf877ec4861b3da, 0xc8d525e845ef7ed0, 0x7351030d3143d703, 0xa3797199d30a504f, 0x1e0a8e10bb22f05e, 0xde8876c396124297, 0x9472217a44754c0d, 0x121bcf92481ac966, 0x5a126d702c69d2fc, 0x3037b5532fd60fef, 0x704f4da03a2e50ca, 0xf4124daef907d4ab, 0xaf7c350fe8a45c01, 0x9bca7ac864e37728, 0xfbe8064ba3842a4b, 0xedf942e535a9e4f6, 0x8cdb93ee543fa05a, 0x8958dda3b840749a, 0x339605a9ff7e85ba, 0x39d469b72835f7bb, 0x68289723f8366e57, 0x6a2011a159bc3243, 0xe3caa46ad7757fb2, 0x862d3627d507b445, 0x8d972d106ad6011d, 0x82be9a19984a1590, 0x241db3742bcd69ce, 0x10bc8664c09717e2, 0xa65872dbf293719d, 0x3477481f5b0f71de, 0xe042fa62233db956, 0xa17033ae23ebc162, 0xba108f5e0501f880, 0x41aad362d316b933, 0xe66fea783e14b637, 0x46ecb0d2befcf011, 0xf14210bc4b49959a, 0xfe7c69294a13bc30, 0x9e6a00da7bfb8681, 0x782fa10d75b83ea8, 0xb5ec05210539f397, 0x77cf1915f294fb12, 0x9f622635badb35ee, 0x87d0e0a6cbf6a7af, 0x7119eb9379119d28, 0x8f79012999fb9763, 0x9efca7be3fb9a5bd, 0x1025d9397509aced, 0x80d65fb27562258d, 0x951f0ee83b2655df, 0xacc34cc80b20b393, 0x88a4f282f5e565ca, 0xc6ffab238d5ceea, 0xa7a9095e34d72048, 0xad61d959d68bbf5d, 0x32568c64f8f0a5de, 0xf83160861673061, 0xb5fa5e51c76997ff, 0x64d4de5742781e52, 0xa023304fadb196f8, 0xfe986bfe82756443, 0xc158cf51f91f7f7d, 0x4691c8eaa1b10577, 0xd1c8d71235e52400, 0xdbf786f957ba12c2, 0xe2fb160b5332df87, 0x5f7fcf91114b1017, 0x7662e0c15de910c1, 0x2527d365d14d8ae2, 0x580fafaeea29d032, 0x66e863690bad0e73, 0x9c9044faf68ec4e6, 0xf05571ea261e2065, 0x6c6ed48c17b7e7f0, 0xf19e7b78fa08c63a, 0x7416646b9e409533, 0xb4de69a14aa67574, 0x3603cedb5189f2ed, 0x6deffce07809a97b, 0x202dc8deca611fcf, 0x479a7fc8614e78bf, 0x4707e057f3b946b7, 0x320d34b79733f895, 0x5d15027221bd5c61, 0x89e6c3aa665b271d, 0x455eee764516147c, 0x4cb9432559bdf6a3, 0xf741cd4ccf398649, 0x47ea2a497141ee8e, 0x259ad177ef9b39b1, 0x2dc2b6012b3359be, 0xd8f5402bd5c84b68, 0xf2354f34580d5bf2, 0xf9944925fed2fc5, 0x10889fcff9626376, 0x855601fe6d1c4ab3, 0xd1d27d289e26e111, 0x5bfdcc4a74840c5b, 0x661c67425c0b8ed2, 0x188545f5c791e81, 0xee6d55a7288ffbbd, 0xbdadadf642ca461a, 0x58dedc6e4707b3b9, 0xf8f90e44a238bbc0, 0x2d080eb0c60efe5e, 0xcdd93f2328775d67, 0x85584a9092ada2fa, 0x3197f20191d717c6, 0xcb90462d13baaf0, 0xcbf7b340cc2d5500, 0x66b2c78eb896ac38, 0x4185023bd7532183, 0x258921643d4fd503, 0xdc3538910e43d299, 0xa125eeb56f4ea35f, 0x975ee5522ed55416, 0x9a5cffc3755b2c40, 0x4f6bf824c2978697, 0xf6acad4da2112a6c, 0xeef729e279f065fc, 0x8870380844cbd2e1, 0xf9638b8c6dccd913, 0xaa3c75ed1bf50ee2, 0xc3ad68705e963c6, 0xddb1e783f5bd4c4, 0x25966dac34dbd127, 0xaeb73187867a5d95, 0xc7a70b6237a3696c, 0x9754397892f2a306, 0xbb2f70d7201ed65b, 0xc03bb17ce7e72157, 0xe00fa8f210631d9c, 0xc6b26db70ff98e2e, 0x2803ca9f4c053c9e, 0x8973196fdc63cf1f, 0x5ac30861867b1cbf, 0xf61978ccfaccae6d, 0x5a258d19f6066cf7, 0x538ae497cef0797e, 0x46b161d08e8869b4, 0xe5952db11d1241be, 0xa5803bf4ff35ea54, 0x4b944b4775b00dab, 0x2a907d69351f28b8, 0x33253b094a49f0fb, 0xfdc480d9bdf00a8f, 0xbde7e9ff748d7925, 0xef2e2e3b5063029f, 0x46d0b544092af1b1, 0x727a6478f5377e6d, 0x18017a478a9558b1, 0xe6e410a1c3341848, 0x646b949022274e1d, 0xe880bdd94216f65c, 0x1b22e6182d673b47, 0x397c7d2dafa086fc, 0x403101ccb3944f66, 0xb7f2e5cf19158ed2, 0xaaf6330f29b2523b, 0x2011f8b68001c424, 0x113322571115b74, 0xd8c6a7dfcd315399, 0x39d28237be514d4f, 0x141adfbf0716b6c4, 0x3918808dae8371d7, 0x488060dce2c22de3, 0x2ea80004f6e41907, 0x3fc1aeba85d797e3, 0xa96a83baa42840eb, 0x9815211599959653, 0xdde13bd7a6bc5fad, 0x86ed41e87bac4567, 0x2820834cabd22ef2, 0x60e9d0aa669ce14c, 0xa163136db99e305e, 0x74d5410cfa2fbea5, 0xcc9f2153c0dc19e7, 0xb441a037f2a23015, 0x1c1b6c2a3c86a28a, 0x373b76f8ff495e64, 0xdba20a07b3696282, 0xbf2cf9ca6dafd272, 0x1bcf922ee8f3c681, 0x64667905aff73e28, 0xa6c5359178d4cc01, 0x6dde35e8b83a1850, 0x35914316ac4813ef, 0xc634b26b3287e6b3, 0x60db44b13c81b15b, 0xf8eb63794e63db19, 0xff61cbd1588ed55d, 0xe46022f14e11dbed, 0x3772eefcb935aa94, 0xc55a64c931a8329e, 0x27b3688ab788d398, 0xf8818829236397eb, 0x5a1c7f0ae3794339, 0xfadd6d98e41f5007, 0x54b86be34ea1b3d2, 0x6cd01325107053a7, 0x5ea58af10f0216af, 0xe116dd6ea75daa7f, 0x3b16649b3c589587, 0x6b714fd6e3cbac1b, 0x2f2d982df0ceff2c, 0x72275ce244d67a1d, 0xe97391b70f8d1e9a, 0x98000b840532f557, 0xee2585297a24f871, 0xa2dcccc2a7bbf340, 0x83a6680aa3dd5a64, 0xaceb26936e0738be, 0x8882d274c41b07e8, 0x6430acc0f330bb1b, 0x5469b35e45bf9756, 0x7ac282d58cd0585b, 0x45f563bbd0c28efb, 0x8f3f64cc0e2f5cf5, 0x5cf9f8db2db96761, 0xc241d88e91b0eea, 0xe1dd8bd7cb0cefc8, 0xb5c98a224ed272ab, 0x756c521b55b28d04, 0x71b0bbc6d3838a07, 0x2b7929bbb9459d95, 0xc24b355966a1d1a, 0x6999176f1374a2f6, 0xdcffc45274fa1ad, 0x660856fb6eddc2af, 0x6d6a0ac3029ed2f7, 0x30fa2b0c05e72461, 0x5fca5d99e9ce23d0, 0xa67dfd5ac54bc788, 0x877252fb88b98dc2, 0xcb59130b6604abbd, 0x8fffa206ee2e2b53, 0xf1af07c92620e9fd, 0xc7be4a49df51e910, 0x63adcc17fa21abe4, 0x1af1975299b6e23d, 0xd6584c9ede73c6d3, 0x4bbe393a03963a44, 0x28dd029ab6458be6, 0xa5db3b61abdb2924, 0xf56f8fcedd0e22cc, 0xeb6ab8b2879b103b, 0x7c5e734409af0cd8, 0xafb654fd6d8aad15, 0xd8f0ab269743c092, 0x136e793d41fb7a85, 0xc85ba3cc6d66ba42, 0xa22a2d3fd49a2f6a, 0x3ffb0f7357684cb0, 0x2ee755112b97aafb, 0xf8f2234919902327, 0x9e55b21d26535314, 0x7a35a95f504fee81, 0x9679bc705ec17d11, 0x8fff00b5e4456a15, 0x2e6d7eb71f670811, 0xec79fc887e997073, 0x34f7720b5fd5a260, 0x694ce1257a8174b0, 0xe5d5e36fbde90fd8, 0xc1a4623030d74019, 0x12952eba91db1f97, 0x9f83126e7bf69ccc, 0x9866eaaadb5a57e5, 0x8e307cd8461259b8, 0x5551e1c88967b337, 0x6cd6e9539d8baabe, 0xdcba28413dccb009, 0xd07ac83b1d3a1e3d, 0xdbed798281b19b3f, 0x9831aad5aca57d75, 0x6eba1b1214fa3d35, 0xfa44c1f6cafb4aec, 0x33ce963011265639, 0x9bf463f9a53c6855, 0x76e13ca82e5d61c5, 0x2526a05bd75d5609, 0xa1ccc4028bbdb9f7, 0xae222b97d5eaea92, 0x5084bfaa4351ee0f, 0x4cdece38d7d90a6c, 0xf34ba0f246e4920a, 0xdd16f374626a7c23, 0x7cf3f52c4f806f3, 0xd872fba42d959d58, 0xa50f310c7811a652, 0x1fffa7406088c2aa, 0x78ae61caa4d7651e, 0xc8dc009863bf9091, 0xb1615c8d52f678b8, 0x4e5130ecce994c67, 0x7ca49df5a2fd05c5, 0xd474a91aa606a31, 0xaeef73ba6780236, 0x6ea23bb59ed3b54c, 0x1389764a9deb4c0a, 0xe5dc90af779800fc, 0x66c71bb1d757050d, 0x594fbf04c1a3181c, 0xa8897ea3b120c630, 0xb932607c1935aa1a, 0x59aa1bba7f35cbfa, 0x5a76621f04c023ad, 0x7d04534e9b16859d, 0x94bda9c2321b6889, 0x9d6c7e898a3f0347, 0x7683ed7934e899e8, 0x95d5f3424627ad09, 0xf2c9afeb941c44a2, 0xb349ee9a66d74cae, 0xc398edfeb62958eb, 0x1ef8cce5bbdb0781, 0x4932f6817435d4fd, 0x2a2808e52479d8ee, 0xbdd001eb9ddc3481, 0x3d94b0c32a133e06, 0x259e8b2fed20de17, 0xd4ff3cef622a172, 0x5ce0d6a10d568d3e, 0xf92403e012a34899, 0xd8d497786a4ce862, 0xb8805b55decad8d1, 0x56c7a82b8cdf849e, 0x4b71fb3e19b7eec3, 0x553630dfd278e9fb, 0x82220e2432e48f6b, 0x1924354f2cd112f4, 0x3f92c65b9bc9f89c, 0x4e907e806913334f, 0x8759e674f3b74c31, 0xaf359194216563e5, 0x7330c88df2e15136, 0xd16f03438fe471d8, 0x15f2fad21a5647c0, 0xdd89067fb42f888c, 0x75684c60dd908491, 0x1e713dc7d20a7e1e, 0x939f35f9e712d15a, 0x930cb335814e928a, 0x93db94ce53340854, 0x9fcd39595a138225, 0xad4a80f692723759, 0x83ef39e9d1af0cb5, 0x95e12781d89e8109, 0x45a31c2eb7306b74, 0x78ad299c44ed4ee0, 0x9e9ef1d43a1cc9ff, 0xc5cc7f45757227b3, 0xcca81e1f15986117, 0x7ed77b0c7dc533ac, 0x9f15864ed07ff5b1, 0x2cbd116d43973550, 0x20494cd0635ee34d, 0xbee5db86d2f204c2, 0x1c88e914207792b8, 0x547a4b927f7b083b, 0x81dcb37e5fae1bd8, 0x1e2a7e5a14414e20, 0x47ee93eff23b6582, 0x9423e33319ca8d49, 0xb1df28ff96070c00, 0x720541418cc9019, 0x1b18f76b761d5fb3, 0x23d9c75116caba34, 0xa0bc9b9aff0666a8, 0x400d2e92e10a851, 0x138857b572349ed4, 0x1245840ef92833d6, 0x9ee8e25bd63dd4c5, 0x376c522b96753c31, 0xd4c3c9ce1c6bbc5b, 0xcee650d543d7368, 0xe5673109bb32bce3, 0x2310cd87dd5f4129, 0xda071ef4e8a12b0, 0x8dae848911e02264, 0x4059ccf9521c0d58, 0x24bbf4254ef1d21b, 0xcecd25a2dce322cd, 0x379d0c96a661d563, 0xd24d693bef06dfc6, 0xa088c83aaeaea2b6, 0xfede9007fe0b6347, 0xc92381dbf7e8dbd9, 0x42953c298ac0b23f, 0x39c1a8c1378f5c27, 0x969355098e5119e, 0xa4a379120f5d5d64, 0x2a44fc97f7a32cfc, 0x60cbf623a383a8d2, 0x7385e0dca513b7c0, 0xb433255f10c304ff, 0xa6e3772104c1fdf1, 0x9203e1db9e1d7e9f, 0xda8dbdf2c2555a01, 0xfb3f7282801d6c25, 0x150e4940290b86, 0x351065a682eb9096, 0xe1997731f33c59fe, 0x46f102f597b33da8, 0xacea60dcd1d59d9e, 0xfd310459099edcd4, 0x9213ced8ceb73a7, 0xecbad1fffae72fef, 0xab58709ac55e8de0, 0xf1f923668265f98f, 0x5b7a85e299270573, 0x969a88bdcc490e9c, 0x9ae9668d2e2815b2, 0x8a7439e14d3d6aa, 0xb0c6795dbd240196, 0x61aefdc3f25ebc46, 0x625744fe12806549, 0x52d28238f1cb8fb7, 0xd7d8b283662b01a3, 0xa825fbc63f8cb533, 0x6971cf9621b4fedc, 0xc44274b0f999146d, 0x2d66b38a209b192a, 0x7420cc70b582735a, 0xea9b1715ea5e0a27, 0x8468bc849fc0f533, 0x531e2dcaf676b3bc, 0xc1cb538d09a624c9, 0x650c19287fbfa69e, 0x914f6e9870ca19e2, 0x5801db8d543c9a0c, 0xadf2c4db58c10bfb, 0x80e2a9acfa471aa4, 0x1f578f737f86ac92, 0x60c05b246582ea20, 0x110c4916db227536, 0x8aff631af3db16f0, 0xf816153de927e872, 0x5f49b501ad2d3703, 0xa057aca656e97103, 0x88ba400efd05c841, 0xf37d4a395a382cab, 0x4584e046b3790d87, 0x41805e2e0467359d, 0x5bb8ae3e524645ed, 0xdec9a3798a2d2767, 0x3dca96ed0f189331, 0xaad75a05a419e095, 0xba1c375e2d4d3481, 0x2b9f7ebd75d5fac7, 0xf999a8f2447721a, 0x22829a3d26c99207, 0xf5631b487401fad2, 0xc66b948764c28281, 0x8f87905983795888, 0x49409d05814823f7, 0xae64af4a72839196, 0x262b7a3d09a87a3, 0x6e52e0e65c9b1e85, 0x39a77575b2d1c192, 0x74e4c5466180574b, 0x97bbd7a1c60dd8a8, 0x3b94e25c5439260c, 0xf19df588b37b5d4e, 0x8a8938c2c9c91aff, 0x2c3c131701680d7f, 0xecef693c81c4ad9c, 0xe992b2af56719b26, 0xe02fe5d25154ff19, 0xd8eebc479c3f0489, 0x815cc045b5d9cf82, 0x55da0b0cbc3f202d, 0x3f3865a07094ed81, 0x778b30cd6212c689, 0x2d31bb1ab6049211, 0xc5e770ba19c593ee, 0x3bfa64c25e29e9dc, 0x17179cd242bf023f, 0x46892d0dda2d6db6, 0xd9a959000804841, 0xcd7aaf1e87e27197, 0xa0b53e61000876b6, 0x58a24c2918fb3526, 0x56ba94322f68b827, 0x2e52bcc55829c242, 0x1b9a18bfaa357b53, 0x2c349f2685b48c12, 0x4e1ca0a599333742, 0xb608834554af6508, 0xcb3620320d523fb, 0x40456671b7bac05, 0x736db2d70a9d4080, 0x59a21200f6b02717, 0xca844ebae9085fb2, 0x1f60d2126831a935, 0x4d4a80069b3276ac, 0x918a43f8deb88f6a, 0x76acbf77f26fb5ed, 0xf9cd1b820e5c8dce, 0x864800e15904e9cf, 0xd96d265f7873d5b6, 0x216255edffba075b, 0xe044898bdbe90f69, 0xacbd41e74d1d364d, 0x77154c29c47aff34, 0xa09f291931cda980, 0xf510b23c90260532, 0x740c4b87a3b6fd56, 0x4e41ce10dd2f90cc, 0xbd2af567b6551cb1, 0xd582fedb606c3928, 0x43af224d35d7e77c, 0xf9b9f7598a50852, 0xa550d837b9074f1d, 0xacd49a04ba8f0ec7, 0xbed9d82cf50e6329, 0x94c637aa7bfe5657, 0x8edc6e0c5b475970, 0x838d14954179b024, 0x3058fff4dc9cb14b, 0xde7f13a8c94567a6, 0xf3583a0cb933ad3e, 0x82c1300fa6017556, 0x7554161566f3a2d4, 0x7db58f8562c16805, 0x6ba77c0269ea223e, 0xfef7301f147809bb, 0xea0d7e114e466660, 0xc05c93f89b9c9b23, 0xb592365ab9632503, 0x7d093c9c563e2e5b, 0xfc2357adebcc5752, 0x72e7da13cf19d8fb, 0xa01726df43028d83, 0x3bf72856ea9bc1f5, 0x3467d4f33f54ddfa, 0x204757b52bd81872, 0x3f512737da967b3, 0x90fb2793e72fd091, 0x18c648cb010b601b, 0xe09a54c6431bc0ea, 0x74a3796aacff1fd2, 0xcd5deae60e5f791, 0x280266830ae3cb7, 0x1ac41d12503cef97, 0xde6b90927903eea, 0xd5ccfc7f8870b609, 0x5a49ff21bf0608df, 0x39b83d4d0af98428, 0x6a21448d3e51763c, 0xa4374d46c5e4effb, 0x5950c656f6a43e14, 0x88a2775f7f1e2c98, 0x26787fa3dae530c1, 0xa59aee6884e04a0d, 0xaad85e16ae9551b, 0x94fefff705c86608, 0x270d1bbb9d534647, 0x3f683791df9aa44b, 0xe617796dbe0670bd, 0xec3786cc59a37a86, 0xd98b9a48794f470, 0x3f83dee9f84d3ae6, 0xe555c7bd8b587e52, 0xb583a06b60ddac71, 0xfb17661e17af0228, 0x6949e707c519b74f, 0xc481b76c13e1bfdb, 0xbebcce940b5bec59, 0x2396a419604a5f3a, 0xdd777b2b1896d2b7, 0xbfe07180995d42a6, 0xe5c8892d27fd185b, 0x1d9bbd5ff56f42fa, 0xdd0549ef75d19556, 0x4a653346c505e6e6, 0xecbb8fa9e3f7d0ac, 0xff57bb37211852a0, 0x6c8397e4ab6d0edd, 0x849732be3fcad3f6, 0x9dd4b4cce965182a, 0x12dbdd83365fd056, 0xe64c9639c1f46c1c, 0x8b53975e1ec7ff54, 0xbdb0018a170269c4, 0x913ca05cccf94064, 0x4892edc6537fb57e, 0x953e3e589d386450, 0x136c72cea24155b8, 0x5f948d352da2aa47, 0x8167fc1a50c7677, 0x69cf82c2f68984f5, 0x9d1aa744f9a4ed06, 0x5d12eb962db2e287, 0xa65f083f5ffb0944, 0xbe9e96f90fd61380, 0x47ce5773534f9c49, 0x92b690d693dc0a30, 0xa09b223d38379985, 0x5b6a84b9feb55ef9, 0x34b234671624c41c, 0x349f00aae51083a8, 0x776efa55e32109fc, 0x3fdf019d88487936, 0xd1f21f4b72c4b530, 0xa50061b1a84356d3, 0x2ca3524da681dfa7, 0xb0f7e87d89d8098, 0xe96495c433a06a1b, 0x1a0ced61c5db1d93, 0xea42587d662343db, 0x8f14ba1d7b2a9d2a, 0x107addff87c227ac, 0x974c2c3e6ffba094, 0x5dbd8a1b7f9beb84, 0x27b409389f875301, 0xe4d0d67fe14cfe22, 0x5ef696e884e2f048, 0x4a074499c5fccbd7, 0xbc108db2d1668a22, 0x7c85ac5334724941, 0xb8dd68ace4e49aad, 0x6a46c4c6b01444cb, 0xeaa3081d86717135, 0xd54ffbf3577657e6, 0xffc2d283dd7cdb3f, 0x2c79eed78aeddcfb, 0x1e3146a92bbddaa0, 0x2bbcfcd861a77998, 0xe381b1a57277c2a6, 0x6d674e856480daf9, 0xe4467bd24f53e677, 0xab84de940bcf5098, 0xc10c07ce86ca158a, 0x541f004709034a87, 0x19dc552546528604, 0x843c881c82859a9, 0xda1e4ec824a699df, 0x81668b78f173ec07, 0x57345c6025ffcb94, 0xaa42981c6e38b906, 0xa17c64d704e40438, 0x874e1f615b7c0312, 0xcc848e12b8070713, 0x41a00037f29cc167, 0x4512a190dbc4809c, 0xa97f02834d59608, 0xfc1b7cb08fe29a6b, 0xeb0348d7f73eab21, 0xabe2b2b5fc763294, 0xb4520f68722d6d5f, 0x96abca24bab60e84, 0xca75925d8dd62327, 0x93a5e62d20cf4642, 0x43ef80c70159040a, 0x41997b465377dd0d, 0x2d05364b2cb735b9, 0x3f5fc33d798224c9, 0x33954c13205488ff, 0x89977921efbeea1f, 0xaacfc4f4b0093a8e, 0xdfa5f5a0c2f996e7, 0xd88959f75bab5ab3, 0x4cbf8d33f3606a97, 0x65bfbd7c5b833ad2, 0x17986d6669583eec, 0xada46fdbb1356542, 0x1ccd7ff65fe1f8d5, 0xaca948bbe4933d48, 0xe22a9f5a555dedc7, 0x677483595602028c, 0xec52aa7175103914, 0x6bba17178565df20, 0xd10216fc3c48299c, 0xb8371b60c9a7397c, 0x65001778d7a2fb3, 0x9b2d7dbf5a4aff3b, 0x550c193b419c245b, 0x32822a01340ab562, 0xb3a5c240177edfb, 0xbd1d8d2ea66e5b98, 0x806d42d55f0c4bdf, 0x2081d014dd940ea1, 0x747b0377ea4420e2, 0x4c0e849f74223b91, 0x8a6c3bb9d3d0e495, 0xde6363e559bfed14, 0x9229db63e90425b1, 0x818482d841177cc8, 0x5a46b08b72497be, 0x6c5a55a226b279c5, 0xa9cda24de92f21e0, 0xdbc5af0bcc431d4e, 0xdddbfafa038da92a, 0xb8a0f1cf97a3e8e5, 0xfc06d66bb9b3ef42, 0x8c9825c73e796210, 0x8a0900d6a9b8da69, 0x287b0d2d9e0e3a50, 0xb3be91c97ac38319, 0x98b9075ac5d57334, 0x4cc864ec1a7672b1, 0x7d30cc990909ca46, 0x6ad67cfbfe123985, 0xf6db3247e059586, 0x8691ced4c414ba4c, 0x1efa88db081c4857, 0xf95b2acab2377db5, 0x1df703438b10e328, 0x931981e1ea10a0c2, 0x3927ca342868e745, 0x44fddab185abd2ce, 0x461fb3945deed2e4, 0x728c0d5019c4376e, 0x63c2171a5a84e7b0, 0xc4acbf6a711d6d93, 0xefcd13da15d3c201, 0x692f4021d2fcf83c, 0x5403d16967b819a7, 0x7980a02c830a9367, 0xea4a3aac103d1f39, 0xc72d3588bc5fd595, 0x4c4aa0bca2c2de48, 0x7c56d973a371a24, 0x2d6a5a72f924b680, 0x5caa612526869cd3, 0x4214b34ee420baae, 0x5fad8b1c406f34da, 0x2227cb2c0b6d764e, 0xf69e51a255d69b3b, 0x2c79a73a16c2c289, 0x19af01bb6cff8895, 0x79012e00a5126e73, 0xf98a52f67ae7049d, 0xdb44e841ef0f10ff, 0x44fa8c44a82c0408, 0x5bd8ecca4b691b29, 0x132010daf5e25e7a, 0x1e5286cddf8f3c09, 0x6c16ae8c904625f8, 0x9dfe77b40e217834, 0x1f415aeaefd00370, 0xe8ddbf2f59b0c4d0, 0x374c7fa0609f6423, 0x4a238e5d49c4e321, 0xd1d470805955fc2a, 0xcaaaf3c0c977637, 0x7bca17756a849529, 0x80de9eb0edb7074e, 0x2f973e780e3bb227, 0x6c8cc706080b31c8, 0x10fa36370ded98bd, 0x3e88129d8f098c2, 0x7c62270d6ca56f37, 0x427a383a1f71d9a6, 0xe85265ca1304c6ab, 0xc9232c2f2494e00f, 0xcb7edfb759f18b3c, 0x3c6f4021f76c1f77, 0x4bc4c6115845755, 0x8cb80d8288dec59a, 0xb29f8b12b85139f4, 0xc93bba23aedb2813, 0x4242fc339f6cfd77, 0x12cd090ad0abb9dc, 0x985bde7dc51e94db, 0xca3d6b30511c5f42, 0x71b36f60cd3c348a, 0x35b26135e22bb255, 0x22fe21ea51210a99, 0xa4e4f43719215964, 0xa6c0640ee361bede, 0xb596afb1999ecced, 0x13cd8fb26330dee5, 0x6c5ec6a3322f7b21, 0xadde162c398986cf, 0xbd6f0498638ea795, 0x9c87c364e2b71bb3, 0xda05bed3de47a659, 0xacfde13f461ad484, 0xf5379c25ecf8fc82, 0x42decb8e4e7ba36c, 0xd8dab0a52d6a0f71, 0x86f30415bb250a25, 0xa6ada2c8d4ef3196, 0xf46051f19f47e16, }