From 73756ce262ef28378d4c3615efaa389a9ebb0914 Mon Sep 17 00:00:00 2001 From: Marek Kotewicz Date: Fri, 23 Feb 2018 10:12:52 +0100 Subject: [PATCH 1/3] simplify compression and move it out of rlp crate (#7957) * simplify compression and move it out of rlp crate * removed lazy_static dependency from rlp --- Cargo.lock | 13 +- Cargo.toml | 1 + ethcore/Cargo.toml | 1 + ethcore/src/blockchain/blockchain.rs | 17 +- ethcore/src/lib.rs | 1 + ethcore/src/state/account.rs | 7 +- util/kvdb-memorydb/Cargo.toml | 1 - util/kvdb-memorydb/src/lib.rs | 10 -- util/kvdb-rocksdb/Cargo.toml | 1 - util/kvdb-rocksdb/src/lib.rs | 26 +-- util/kvdb/src/lib.rs | 19 --- util/rlp/Cargo.toml | 1 - util/rlp/src/compression.rs | 194 ----------------------- util/rlp/src/lib.rs | 8 +- util/rlp/src/traits.rs | 11 -- util/rlp_compress/Cargo.toml | 9 ++ util/{rlp => rlp_compress}/src/common.rs | 6 +- util/rlp_compress/src/lib.rs | 110 +++++++++++++ util/rlp_compress/tests/compress.rs | 50 ++++++ 19 files changed, 202 insertions(+), 284 deletions(-) delete mode 100644 util/rlp/src/compression.rs create mode 100644 util/rlp_compress/Cargo.toml rename util/{rlp => rlp_compress}/src/common.rs (94%) create mode 100644 util/rlp_compress/src/lib.rs create mode 100644 util/rlp_compress/tests/compress.rs diff --git a/Cargo.lock b/Cargo.lock index 25e776ea289..1a6781d4a9c 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -499,6 +499,7 @@ dependencies = [ "rand 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)", "rayon 0.8.2 (registry+https://github.com/rust-lang/crates.io-index)", "rlp 0.2.1", + "rlp_compress 0.1.0", "rlp_derive 0.1.0", "rust-crypto 0.2.36 (registry+https://github.com/rust-lang/crates.io-index)", "rustc-hex 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1391,7 +1392,6 @@ version = "0.1.0" dependencies = [ "kvdb 0.1.0", "parking_lot 0.5.3 (registry+https://github.com/rust-lang/crates.io-index)", - "rlp 0.2.1", ] [[package]] @@ -1406,7 +1406,6 @@ dependencies = [ "num_cpus 1.7.0 (registry+https://github.com/rust-lang/crates.io-index)", "parking_lot 0.5.3 (registry+https://github.com/rust-lang/crates.io-index)", "regex 0.2.5 (registry+https://github.com/rust-lang/crates.io-index)", - "rlp 0.2.1", "rocksdb 0.4.5 (git+https://github.com/paritytech/rust-rocksdb)", "tempdir 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -2664,10 +2663,18 @@ dependencies = [ "byteorder 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)", "elastic-array 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", "ethereum-types 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", - "lazy_static 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", "rustc-hex 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "rlp_compress" +version = "0.1.0" +dependencies = [ + "elastic-array 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", + "lazy_static 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", + "rlp 0.2.1", +] + [[package]] name = "rlp_derive" version = "0.1.0" diff --git a/Cargo.toml b/Cargo.toml index fa3e17811d9..e89a09a597b 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -131,4 +131,5 @@ members = [ "miner", "transaction-pool", "whisper", + "util/rlp_compress" ] diff --git a/ethcore/Cargo.toml b/ethcore/Cargo.toml index a0e11ef1fe7..c67ce5cd41e 100644 --- a/ethcore/Cargo.toml +++ b/ethcore/Cargo.toml @@ -47,6 +47,7 @@ price-info = { path = "../price-info" } rayon = "0.8" rand = "0.4" rlp = { path = "../util/rlp" } +rlp_compress = { path = "../util/rlp_compress" } rlp_derive = { path = "../util/rlp_derive" } kvdb = { path = "../util/kvdb" } kvdb-rocksdb = { path = "../util/kvdb-rocksdb" } diff --git a/ethcore/src/blockchain/blockchain.rs b/ethcore/src/blockchain/blockchain.rs index bfe88b3fc24..f88ee04b654 100644 --- a/ethcore/src/blockchain/blockchain.rs +++ b/ethcore/src/blockchain/blockchain.rs @@ -25,6 +25,7 @@ use ethereum_types::{H256, Bloom, U256}; use parking_lot::{Mutex, RwLock}; use bytes::Bytes; use rlp::*; +use rlp_compress::{compress, decompress, blocks_swapper}; use header::*; use transaction::*; use views::*; @@ -254,7 +255,7 @@ impl BlockProvider for BlockChain { let result = match opt { Some(b) => { - let bytes: Bytes = UntrustedRlp::new(&b).decompress(RlpType::Blocks).into_vec(); + let bytes = decompress(&b, blocks_swapper()).into_vec(); let mut write = self.block_headers.write(); write.insert(*hash, bytes.clone()); Some(encoded::Header::new(bytes)) @@ -290,7 +291,7 @@ impl BlockProvider for BlockChain { let result = match opt { Some(b) => { - let bytes: Bytes = UntrustedRlp::new(&b).decompress(RlpType::Blocks).into_vec(); + let bytes = decompress(&b, blocks_swapper()).into_vec(); let mut write = self.block_bodies.write(); write.insert(*hash, bytes.clone()); Some(encoded::Body::new(bytes)) @@ -702,9 +703,8 @@ impl BlockChain { assert!(self.pending_best_block.read().is_none()); - let block_rlp = UntrustedRlp::new(bytes); - let compressed_header = block_rlp.at(0).unwrap().compress(RlpType::Blocks); - let compressed_body = UntrustedRlp::new(&Self::block_to_body(bytes)).compress(RlpType::Blocks); + let compressed_header = compress(block.header_rlp().as_raw(), blocks_swapper()); + let compressed_body = compress(&Self::block_to_body(bytes), blocks_swapper()); // store block in db batch.put(db::COL_HEADERS, &hash, &compressed_header); @@ -901,9 +901,12 @@ impl BlockChain { assert!(self.pending_best_block.read().is_none()); + let compressed_header = compress(block.header_rlp().as_raw(), blocks_swapper()); + let compressed_body = compress(&Self::block_to_body(bytes), blocks_swapper()); + // store block in db - batch.put_compressed(db::COL_HEADERS, &hash, block.header_rlp().as_raw().to_vec()); - batch.put_compressed(db::COL_BODIES, &hash, Self::block_to_body(bytes)); + batch.put(db::COL_HEADERS, &hash, &compressed_header); + batch.put(db::COL_BODIES, &hash, &compressed_body); let info = self.block_info(&header); diff --git a/ethcore/src/lib.rs b/ethcore/src/lib.rs index 8d020d5dffd..f4df2aa4acb 100644 --- a/ethcore/src/lib.rs +++ b/ethcore/src/lib.rs @@ -83,6 +83,7 @@ extern crate price_info; extern crate rand; extern crate rayon; extern crate rlp; +extern crate rlp_compress; extern crate keccak_hash as hash; extern crate heapsize; extern crate memorydb; diff --git a/ethcore/src/state/account.rs b/ethcore/src/state/account.rs index 9c5ec03d750..27917ad7b2a 100644 --- a/ethcore/src/state/account.rs +++ b/ethcore/src/state/account.rs @@ -485,7 +485,7 @@ impl fmt::Debug for Account { #[cfg(test)] mod tests { - use rlp::{UntrustedRlp, RlpType, Compressible}; + use rlp_compress::{compress, decompress, snapshot_swapper}; use ethereum_types::{H256, Address}; use memorydb::MemoryDB; use bytes::Bytes; @@ -495,10 +495,9 @@ mod tests { #[test] fn account_compress() { let raw = Account::new_basic(2.into(), 4.into()).rlp(); - let rlp = UntrustedRlp::new(&raw); - let compact_vec = rlp.compress(RlpType::Snapshot).into_vec(); + let compact_vec = compress(&raw, snapshot_swapper()); assert!(raw.len() > compact_vec.len()); - let again_raw = UntrustedRlp::new(&compact_vec).decompress(RlpType::Snapshot); + let again_raw = decompress(&compact_vec, snapshot_swapper()); assert_eq!(raw, again_raw.into_vec()); } diff --git a/util/kvdb-memorydb/Cargo.toml b/util/kvdb-memorydb/Cargo.toml index c8c201721eb..4dbad628c42 100644 --- a/util/kvdb-memorydb/Cargo.toml +++ b/util/kvdb-memorydb/Cargo.toml @@ -5,5 +5,4 @@ authors = ["Parity Technologies "] [dependencies] parking_lot = "0.5" -rlp = { path = "../rlp" } kvdb = { path = "../kvdb" } diff --git a/util/kvdb-memorydb/src/lib.rs b/util/kvdb-memorydb/src/lib.rs index 7026797eae5..0530c613e31 100644 --- a/util/kvdb-memorydb/src/lib.rs +++ b/util/kvdb-memorydb/src/lib.rs @@ -16,12 +16,10 @@ extern crate parking_lot; extern crate kvdb; -extern crate rlp; use std::collections::{BTreeMap, HashMap}; use parking_lot::RwLock; use kvdb::{DBValue, DBTransaction, KeyValueDB, DBOp, Result}; -use rlp::{RlpType, UntrustedRlp, Compressible}; /// A key-value database fulfilling the `KeyValueDB` trait, living in memory. /// This is generally intended for tests and is not particularly optimized. @@ -75,14 +73,6 @@ impl KeyValueDB for InMemory { col.insert(key.into_vec(), value); } }, - DBOp::InsertCompressed { col, key, value } => { - if let Some(col) = columns.get_mut(&col) { - let compressed = UntrustedRlp::new(&value).compress(RlpType::Blocks); - let mut value = DBValue::new(); - value.append_slice(&compressed); - col.insert(key.into_vec(), value); - } - }, DBOp::Delete { col, key } => { if let Some(col) = columns.get_mut(&col) { col.remove(&*key); diff --git a/util/kvdb-rocksdb/Cargo.toml b/util/kvdb-rocksdb/Cargo.toml index a669e3d1676..8e745945b34 100644 --- a/util/kvdb-rocksdb/Cargo.toml +++ b/util/kvdb-rocksdb/Cargo.toml @@ -11,7 +11,6 @@ log = "0.3" num_cpus = "1.0" parking_lot = "0.5" regex = "0.2" -rlp = { path = "../rlp" } rocksdb = { git = "https://github.com/paritytech/rust-rocksdb" } interleaved-ordered = "0.1.0" diff --git a/util/kvdb-rocksdb/src/lib.rs b/util/kvdb-rocksdb/src/lib.rs index aef4485546e..4f2220a11dd 100644 --- a/util/kvdb-rocksdb/src/lib.rs +++ b/util/kvdb-rocksdb/src/lib.rs @@ -26,7 +26,6 @@ extern crate rocksdb; extern crate ethereum_types; extern crate kvdb; -extern crate rlp; use std::cmp; use std::collections::HashMap; @@ -42,7 +41,6 @@ use rocksdb::{ use interleaved_ordered::{interleave_ordered, InterleaveOrdered}; use elastic_array::ElasticArray32; -use rlp::{UntrustedRlp, RlpType, Compressible}; use kvdb::{KeyValueDB, DBTransaction, DBValue, DBOp, Result}; #[cfg(target_os = "linux")] @@ -56,7 +54,6 @@ const DB_DEFAULT_MEMORY_BUDGET_MB: usize = 128; enum KeyState { Insert(DBValue), - InsertCompressed(DBValue), Delete, } @@ -406,10 +403,6 @@ impl Database { let c = Self::to_overlay_column(col); overlay[c].insert(key, KeyState::Insert(value)); }, - DBOp::InsertCompressed { col, key, value } => { - let c = Self::to_overlay_column(col); - overlay[c].insert(key, KeyState::InsertCompressed(value)); - }, DBOp::Delete { col, key } => { let c = Self::to_overlay_column(col); overlay[c].insert(key, KeyState::Delete); @@ -442,14 +435,6 @@ impl Database { batch.put(&key, &value)?; } }, - KeyState::InsertCompressed(ref value) => { - let compressed = UntrustedRlp::new(&value).compress(RlpType::Blocks); - if c > 0 { - batch.put_cf(cfs[c - 1], &key, &compressed)?; - } else { - batch.put(&key, &value)?; - } - } } } } @@ -498,10 +483,6 @@ impl Database { DBOp::Insert { col, key, value } => { col.map_or_else(|| batch.put(&key, &value), |c| batch.put_cf(cfs[c as usize], &key, &value))? }, - DBOp::InsertCompressed { col, key, value } => { - let compressed = UntrustedRlp::new(&value).compress(RlpType::Blocks); - col.map_or_else(|| batch.put(&key, &compressed), |c| batch.put_cf(cfs[c as usize], &key, &compressed))? - }, DBOp::Delete { col, key } => { col.map_or_else(|| batch.delete(&key), |c| batch.delete_cf(cfs[c as usize], &key))? }, @@ -522,12 +503,12 @@ impl Database { Some(DBAndColumns { ref db, ref cfs }) => { let overlay = &self.overlay.read()[Self::to_overlay_column(col)]; match overlay.get(key) { - Some(&KeyState::Insert(ref value)) | Some(&KeyState::InsertCompressed(ref value)) => Ok(Some(value.clone())), + Some(&KeyState::Insert(ref value)) => Ok(Some(value.clone())), Some(&KeyState::Delete) => Ok(None), None => { let flushing = &self.flushing.read()[Self::to_overlay_column(col)]; match flushing.get(key) { - Some(&KeyState::Insert(ref value)) | Some(&KeyState::InsertCompressed(ref value)) => Ok(Some(value.clone())), + Some(&KeyState::Insert(ref value)) => Ok(Some(value.clone())), Some(&KeyState::Delete) => Ok(None), None => { col.map_or_else( @@ -562,8 +543,7 @@ impl Database { let overlay = &self.overlay.read()[Self::to_overlay_column(col)]; let mut overlay_data = overlay.iter() .filter_map(|(k, v)| match *v { - KeyState::Insert(ref value) | - KeyState::InsertCompressed(ref value) => + KeyState::Insert(ref value) => Some((k.clone().into_vec().into_boxed_slice(), value.clone().into_vec().into_boxed_slice())), KeyState::Delete => None, }).collect::>(); diff --git a/util/kvdb/src/lib.rs b/util/kvdb/src/lib.rs index b5acc539a48..6a8412c0e8c 100644 --- a/util/kvdb/src/lib.rs +++ b/util/kvdb/src/lib.rs @@ -56,11 +56,6 @@ pub enum DBOp { key: ElasticArray32, value: DBValue, }, - InsertCompressed { - col: Option, - key: ElasticArray32, - value: DBValue, - }, Delete { col: Option, key: ElasticArray32, @@ -72,7 +67,6 @@ impl DBOp { pub fn key(&self) -> &[u8] { match *self { DBOp::Insert { ref key, .. } => key, - DBOp::InsertCompressed { ref key, .. } => key, DBOp::Delete { ref key, .. } => key, } } @@ -81,7 +75,6 @@ impl DBOp { pub fn col(&self) -> Option { match *self { DBOp::Insert { col, .. } => col, - DBOp::InsertCompressed { col, .. } => col, DBOp::Delete { col, .. } => col, } } @@ -122,18 +115,6 @@ impl DBTransaction { }); } - /// Insert a key-value pair in the transaction. Any existing value will be overwritten upon write. - /// Value will be RLP-compressed on flush - pub fn put_compressed(&mut self, col: Option, key: &[u8], value: Bytes) { - let mut ekey = ElasticArray32::new(); - ekey.append_slice(key); - self.ops.push(DBOp::InsertCompressed { - col: col, - key: ekey, - value: DBValue::from_vec(value), - }); - } - /// Delete value by key. pub fn delete(&mut self, col: Option, key: &[u8]) { let mut ekey = ElasticArray32::new(); diff --git a/util/rlp/Cargo.toml b/util/rlp/Cargo.toml index 7d661174267..dc1cc0aa94f 100644 --- a/util/rlp/Cargo.toml +++ b/util/rlp/Cargo.toml @@ -9,6 +9,5 @@ authors = ["Parity Technologies "] [dependencies] elastic-array = "0.9" ethereum-types = "0.2" -lazy_static = "1.0" rustc-hex = "1.0" byteorder = "1.0" diff --git a/util/rlp/src/compression.rs b/util/rlp/src/compression.rs deleted file mode 100644 index f76a3b7ab6d..00000000000 --- a/util/rlp/src/compression.rs +++ /dev/null @@ -1,194 +0,0 @@ -// Copyright 2015-2017 Parity Technologies -// -// Licensed under the Apache License, Version 2.0 or the MIT license -// , at your -// option. This file may not be copied, modified, or distributed -// except according to those terms. - -use std::collections::HashMap; -use elastic_array::ElasticArray1024; -use common::{BLOCKS_RLP_SWAPPER, SNAPSHOT_RLP_SWAPPER}; -use {UntrustedRlp, Compressible, encode, RlpStream}; - -/// Stores RLPs used for compression -pub struct InvalidRlpSwapper<'a> { - invalid_to_valid: HashMap<&'a [u8], &'a [u8]>, - valid_to_invalid: HashMap<&'a [u8], &'a [u8]>, -} - -impl<'a> InvalidRlpSwapper<'a> { - /// Construct a swapper from a list of common RLPs - pub fn new(rlps_to_swap: &[&'a [u8]], invalid_rlps: &[&'a [u8]]) -> Self { - if rlps_to_swap.len() > 0x7e { - panic!("Invalid usage, only 127 RLPs can be swappable."); - } - let mut invalid_to_valid = HashMap::new(); - let mut valid_to_invalid = HashMap::new(); - for (&rlp, &invalid) in rlps_to_swap.iter().zip(invalid_rlps.iter()) { - invalid_to_valid.insert(invalid, rlp); - valid_to_invalid.insert(rlp, invalid); - } - InvalidRlpSwapper { - invalid_to_valid: invalid_to_valid, - valid_to_invalid: valid_to_invalid - } - } - /// Get a valid RLP corresponding to an invalid one - fn get_valid(&self, invalid_rlp: &[u8]) -> Option<&[u8]> { - self.invalid_to_valid.get(invalid_rlp).cloned() - } - /// Get an invalid RLP corresponding to a valid one - fn get_invalid(&self, valid_rlp: &[u8]) -> Option<&[u8]> { - self.valid_to_invalid.get(valid_rlp).cloned() - } -} - -/// Type of RLP indicating its origin database. -pub enum RlpType { - /// RLP used in blocks database. - Blocks, - /// RLP used in snapshots. - Snapshot, -} - -fn to_elastic(slice: &[u8]) -> ElasticArray1024 { - let mut out = ElasticArray1024::new(); - out.append_slice(slice); - out -} - -fn map_rlp(rlp: &UntrustedRlp, f: F) -> Option> where - F: Fn(&UntrustedRlp) -> Option> { - match rlp.iter() - .fold((false, RlpStream::new_list(rlp.item_count().unwrap_or(0))), - |(is_some, mut acc), subrlp| { - let new = f(&subrlp); - if let Some(ref insert) = new { - acc.append_raw(&insert[..], 1); - } else { - acc.append_raw(subrlp.as_raw(), 1); - } - (is_some || new.is_some(), acc) - }) { - (true, s) => Some(s.drain()), - _ => None, - } -} - -/// Replace common RLPs with invalid shorter ones. -fn simple_compress(rlp: &UntrustedRlp, swapper: &InvalidRlpSwapper) -> ElasticArray1024 { - if rlp.is_data() { - to_elastic(swapper.get_invalid(rlp.as_raw()).unwrap_or_else(|| rlp.as_raw())) - } else { - map_rlp(rlp, |r| Some(simple_compress(r, swapper))).unwrap_or_else(|| to_elastic(rlp.as_raw())) - } -} - -/// Recover valid RLP from a compressed form. -fn simple_decompress(rlp: &UntrustedRlp, swapper: &InvalidRlpSwapper) -> ElasticArray1024 { - if rlp.is_data() { - to_elastic(swapper.get_valid(rlp.as_raw()).unwrap_or_else(|| rlp.as_raw())) - } else { - map_rlp(rlp, |r| Some(simple_decompress(r, swapper))).unwrap_or_else(|| to_elastic(rlp.as_raw())) - } -} - -/// Recover valid RLP from a compressed form, None if no decompression achieved. -/// Tries to decompress compressed data insides. -fn deep_decompress(rlp: &UntrustedRlp, swapper: &InvalidRlpSwapper) -> Option> { - let simple_swap = || - swapper.get_valid(rlp.as_raw()).map(to_elastic); - // Simply decompress data. - if rlp.is_data() { return simple_swap(); } - match rlp.item_count().unwrap_or(0) { - // Look for special compressed list, which contains nested data. - 2 if rlp.at(0).map(|r| r.as_raw() == &[0x81, 0x7f]).unwrap_or(false) => - rlp.at(1).ok().map_or(simple_swap(), - |r| deep_decompress(&r, swapper).map(|d| { let v = d.into_vec(); encode(&v) })), - // Iterate through RLP while checking if it has been compressed. - _ => map_rlp(rlp, |r| deep_decompress(r, swapper)), - } -} - -impl<'a> Compressible for UntrustedRlp<'a> { - type DataType = RlpType; - - fn compress(&self, t: RlpType) -> ElasticArray1024 { - match t { - RlpType::Snapshot => simple_compress(self, &SNAPSHOT_RLP_SWAPPER), - RlpType::Blocks => simple_compress(self, &BLOCKS_RLP_SWAPPER), - } - } - - fn decompress(&self, t: RlpType) -> ElasticArray1024 { - match t { - RlpType::Snapshot => simple_decompress(self, &SNAPSHOT_RLP_SWAPPER), - RlpType::Blocks => deep_decompress(self, &BLOCKS_RLP_SWAPPER).unwrap_or_else(|| to_elastic(self.as_raw())), - } - } -} - -#[cfg(test)] -mod tests { - use compression::InvalidRlpSwapper; - use {UntrustedRlp, Compressible, RlpType}; - - #[test] - fn invalid_rlp_swapper() { - let to_swap: &[&[u8]] = &[&[0x83, b'c', b'a', b't'], &[0x83, b'd', b'o', b'g']]; - let invalid_rlp: &[&[u8]] = &[&[0x81, 0x00], &[0x81, 0x01]]; - let swapper = InvalidRlpSwapper::new(to_swap, invalid_rlp); - assert_eq!(Some(invalid_rlp[0]), swapper.get_invalid(&[0x83, b'c', b'a', b't'])); - assert_eq!(None, swapper.get_invalid(&[0x83, b'b', b'a', b't'])); - assert_eq!(Some(to_swap[1]), swapper.get_valid(invalid_rlp[1])); - } - - #[test] - fn simple_compression() { - let basic_account_rlp = vec![248, 68, 4, 2, 160, 86, 232, 31, 23, 27, 204, 85, 166, 255, 131, 69, 230, 146, 192, 248, 110, 91, 72, 224, 27, 153, 108, 173, 192, 1, 98, 47, 181, 227, 99, 180, 33, 160, 197, 210, 70, 1, 134, 247, 35, 60, 146, 126, 125, 178, 220, 199, 3, 192, 229, 0, 182, 83, 202, 130, 39, 59, 123, 250, 216, 4, 93, 133, 164, 112]; - let rlp = UntrustedRlp::new(&basic_account_rlp); - let compressed = rlp.compress(RlpType::Snapshot).into_vec(); - assert_eq!(compressed, vec![198, 4, 2, 129, 0, 129, 1]); - let compressed_rlp = UntrustedRlp::new(&compressed); - assert_eq!(compressed_rlp.decompress(RlpType::Snapshot).into_vec(), basic_account_rlp); - } - - #[test] - fn data_compression() { - let data_basic_account_rlp = vec![184, 70, 248, 68, 4, 2, 160, 86, 232, 31, 23, 27, 204, 85, 166, 255, 131, 69, 230, 146, 192, 248, 110, 91, 72, 224, 27, 153, 108, 173, 192, 1, 98, 47, 181, 227, 99, 180, 33, 160, 197, 210, 70, 1, 134, 247, 35, 60, 146, 126, 125, 178, 220, 199, 3, 192, 229, 0, 182, 83, 202, 130, 39, 59, 123, 250, 216, 4, 93, 133, 164, 112]; - let compressed = vec![201, 129, 127, 198, 4, 2, 129, 0, 129, 1]; - let compressed_rlp = UntrustedRlp::new(&compressed); - assert_eq!(compressed_rlp.decompress(RlpType::Blocks).into_vec(), data_basic_account_rlp); - } - - #[test] - fn nested_list_rlp() { - let nested_basic_account_rlp = vec![228, 4, 226, 2, 160, 86, 232, 31, 23, 27, 204, 85, 166, 255, 131, 69, 230, 146, 192, 248, 110, 91, 72, 224, 27, 153, 108, 173, 192, 1, 98, 47, 181, 227, 99, 180, 33]; - let nested_rlp = UntrustedRlp::new(&nested_basic_account_rlp); - let compressed = nested_rlp.compress(RlpType::Blocks).into_vec(); - assert_eq!(compressed, vec![197, 4, 195, 2, 129, 0]); - let compressed_rlp = UntrustedRlp::new(&compressed); - assert_eq!(compressed_rlp.decompress(RlpType::Blocks).into_vec(), nested_basic_account_rlp); - let compressed = nested_rlp.compress(RlpType::Snapshot).into_vec(); - assert_eq!(compressed, vec![197, 4, 195, 2, 129, 0]); - let compressed_rlp = UntrustedRlp::new(&compressed); - assert_eq!(compressed_rlp.decompress(RlpType::Snapshot).into_vec(), nested_basic_account_rlp); - } - - #[test] - fn malformed_rlp() { - let malformed = vec![248, 81, 128, 128, 128, 128, 128, 160, 12, 51, 241, 93, 69, 218, 74, 138, 79, 115, 227, 44, 216, 81, 46, 132, 85, 235, 96, 45, 252, 48, 181, 29, 75, 141, 217, 215, 86, 160, 109, 130, 160, 140, 36, 93, 200, 109, 215, 100, 241, 246, 99, 135, 92, 168, 149, 170, 114, 9, 143, 4, 93, 25, 76, 54, 176, 119, 230, 170, 154, 105, 47, 121, 10, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128]; - let malformed_rlp = UntrustedRlp::new(&malformed); - assert_eq!(malformed_rlp.decompress(RlpType::Blocks).into_vec(), malformed); - } - - #[test] - fn large_block() { - let block = vec![249, 97, 87, 249, 2, 19, 160, 137, 152, 36, 115, 234, 67, 89, 207, 44, 42, 186, 128, 91, 242, 10, 16, 42, 193, 195, 2, 129, 60, 181, 150, 192, 178, 117, 15, 18, 100, 174, 249, 160, 29, 204, 77, 232, 222, 199, 93, 122, 171, 133, 181, 103, 182, 204, 212, 26, 211, 18, 69, 27, 148, 138, 116, 19, 240, 161, 66, 253, 64, 212, 147, 71, 148, 223, 125, 126, 5, 57, 51, 181, 204, 36, 55, 47, 135, 140, 144, 230, 45, 173, 173, 93, 66, 160, 93, 42, 52, 28, 156, 139, 242, 60, 121, 90, 117, 99, 92, 182, 196, 25, 131, 16, 155, 186, 239, 137, 33, 118, 105, 232, 230, 239, 213, 240, 207, 6, 160, 59, 72, 35, 216, 124, 37, 62, 178, 34, 97, 180, 254, 212, 103, 179, 45, 247, 168, 205, 145, 7, 157, 75, 247, 83, 230, 233, 248, 97, 132, 232, 161, 160, 122, 167, 249, 196, 203, 2, 173, 180, 106, 203, 129, 214, 232, 181, 87, 39, 60, 99, 135, 6, 40, 34, 163, 118, 140, 149, 79, 241, 238, 230, 201, 194, 185, 1, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 0, 64, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 134, 36, 160, 31, 187, 182, 29, 131, 58, 212, 207, 131, 71, 168, 13, 131, 45, 60, 7, 132, 89, 53, 51, 233, 147, 69, 84, 67, 32, 101, 116, 104, 101, 114, 109, 105, 110, 101, 32, 45, 32, 69, 85, 49, 160, 204, 49, 229, 99, 26, 47, 30, 50, 223, 117, 111, 168, 102, 158, 12, 186, 140, 98, 193, 196, 214, 29, 13, 87, 44, 31, 216, 48, 250, 251, 148, 69, 136, 225, 206, 131, 96, 2, 39, 50, 46, 249, 95, 61, 248, 109, 1, 133, 4, 227, 178, 146, 0, 130, 82, 8, 148, 123, 45, 95, 28, 247, 139, 190, 196, 52, 39, 251, 53, 226, 79, 251, 1, 98, 34, 68, 240, 136, 18, 81, 1, 26, 180, 46, 168, 0, 128, 129, 157, 160, 31, 164, 62, 186, 38, 56, 118, 133, 24, 180, 239, 139, 254, 154, 196, 115, 8, 246, 45, 233, 227, 165, 192, 193, 7, 111, 1, 169, 2, 204, 2, 144, 160, 42, 60, 78, 200, 5, 113, 98, 65, 250, 105, 0, 164, 152, 81, 235, 154, 100, 204, 182, 141, 174, 39, 107, 127, 219, 120, 63, 221, 237, 87, 57, 9, 249, 94, 203, 52, 133, 2, 84, 11, 228, 0, 131, 44, 233, 255, 148, 137, 61, 196, 25, 119, 102, 53, 248, 253, 27, 31, 169, 147, 75, 245, 41, 174, 242, 86, 7, 128, 185, 94, 100, 194, 32, 154, 203, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 60, 131, 110, 76, 27, 36, 34, 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 138, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 91, 96, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 92, 224, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 248, 249, 1, 245, 160, 89, 97, 73, 3, 84, 63, 105, 163, 169, 7, 237, 254, 220, 243, 13, 27, 0, 45, 215, 39, 235, 232, 237, 22, 162, 83, 99, 164, 247, 240, 48, 66, 160, 29, 204, 77, 232, 222, 199, 93, 122, 171, 133, 181, 103, 182, 204, 212, 26, 211, 18, 69, 27, 148, 138, 116, 19, 240, 161, 66, 253, 64, 212, 147, 71, 148, 137, 61, 196, 25, 119, 102, 53, 248, 253, 27, 31, 169, 147, 75, 245, 41, 174, 242, 86, 7, 160, 243, 100, 253, 32, 58, 153, 124, 189, 215, 216, 21, 229, 230, 182, 39, 222, 135, 217, 92, 155, 164, 143, 79, 14, 178, 128, 26, 245, 152, 197, 247, 33, 160, 98, 156, 249, 227, 33, 40, 127, 226, 250, 254, 222, 21, 37, 66, 5, 23, 142, 73, 121, 64, 233, 198, 110, 212, 131, 134, 126, 38, 218, 85, 149, 212, 160, 32, 179, 60, 112, 219, 114, 185, 205, 184, 204, 31, 210, 181, 8, 109, 97, 227, 206, 41, 177, 238, 122, 205, 193, 93, 163, 176, 107, 28, 181, 63, 19, 185, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 134, 36, 236, 76, 26, 58, 130, 131, 58, 210, 155, 131, 71, 183, 132, 130, 82, 8, 132, 89, 53, 19, 83, 160, 83, 109, 97, 114, 116, 80, 111, 111, 108, 45, 79, 76, 69, 66, 100, 120, 122, 50, 54, 106, 73, 50, 74, 65, 72, 109, 52, 48, 48, 48, 48, 48, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 203, 86, 242, 75, 191, 176, 245, 37, 106, 66, 34, 44, 77, 161, 164, 143, 56, 229, 102, 192, 191, 114, 46, 137, 15, 59, 249, 198, 20, 64, 167, 176, 167, 146, 234, 72, 147, 122, 168, 34, 174, 210, 94, 131, 105, 110, 180, 48, 248, 10, 127, 156, 194, 83, 60, 48, 89, 126, 86, 90, 218, 235, 170, 15, 206, 23, 82, 13, 250, 255, 240, 112, 168, 137, 111, 204, 205, 125, 24, 81, 118, 165, 92, 28, 127, 50, 223, 173, 231, 234, 212, 181, 9, 113, 72, 250, 97, 126, 194, 18, 102, 51, 189, 147, 246, 2, 201, 27, 206, 15, 130, 172, 1, 206, 219, 204, 49, 211, 162, 78, 101, 26, 16, 73, 106, 70, 209, 118, 140, 59, 133, 162, 114, 14, 92, 8, 26, 83, 213, 91, 136, 207, 228, 86, 13, 208, 64, 85, 211, 143, 252, 181, 128, 77, 187, 198, 50, 91, 26, 156, 109, 233, 136, 36, 216, 142, 87, 112, 45, 166, 235, 118, 128, 191, 66, 23, 48, 32, 3, 41, 37, 103, 8, 180, 236, 77, 106, 59, 18, 77, 206, 23, 154, 143, 236, 63, 235, 52, 105, 155, 38, 207, 31, 145, 193, 98, 251, 216, 224, 213, 250, 164, 22, 21, 227, 190, 223, 74, 29, 107, 0, 103, 187, 53, 129, 204, 202, 170, 156, 19, 67, 185, 100, 252, 5, 129, 164, 58, 228, 121, 214, 27, 53, 35, 16, 238, 93, 64, 94, 4, 250, 138, 102, 22, 128, 37, 229, 104, 40, 245, 216, 107, 16, 52, 202, 54, 98, 43, 162, 245, 56, 48, 150, 41, 3, 224, 167, 171, 5, 254, 106, 199, 0, 47, 238, 162, 27, 114, 168, 111, 231, 241, 102, 79, 138, 66, 168, 38, 157, 140, 76, 56, 155, 66, 109, 253, 243, 207, 79, 88, 167, 111, 251, 135, 38, 249, 85, 167, 36, 113, 7, 243, 34, 132, 113, 117, 8, 245, 93, 79, 171, 12, 223, 157, 41, 201, 221, 129, 60, 186, 164, 123, 1, 247, 202, 28, 61, 121, 156, 214, 55, 68, 36, 205, 113, 203, 45, 173, 24, 190, 32, 42, 207, 69, 189, 209, 221, 50, 18, 77, 60, 249, 233, 101, 216, 168, 47, 16, 155, 172, 248, 90, 115, 162, 134, 95, 6, 227, 202, 46, 26, 133, 135, 65, 251, 97, 109, 181, 141, 87, 156, 59, 40, 253, 87, 116, 244, 225, 242, 133, 77, 199, 120, 210, 152, 108, 90, 137, 127, 214, 137, 250, 180, 148, 113, 71, 68, 183, 216, 166, 169, 54, 174, 235, 51, 45, 172, 47, 5, 205, 154, 71, 241, 106, 228, 222, 150, 34, 95, 68, 251, 78, 244, 111, 59, 252, 138, 106, 31, 185, 107, 123, 22, 37, 184, 249, 117, 231, 56, 224, 137, 13, 254, 50, 240, 252, 220, 74, 33, 223, 163, 97, 74, 180, 232, 189, 92, 104, 193, 59, 255, 80, 10, 146, 236, 17, 80, 90, 139, 35, 212, 153, 19, 13, 159, 7, 184, 77, 193, 43, 251, 149, 176, 147, 169, 227, 236, 74, 98, 163, 193, 180, 4, 186, 19, 29, 212, 166, 177, 114, 30, 254, 241, 141, 95, 72, 99, 104, 101, 21, 141, 181, 85, 200, 184, 190, 11, 255, 74, 39, 89, 41, 204, 187, 96, 202, 188, 191, 157, 135, 239, 166, 155, 86, 32, 228, 198, 117, 41, 31, 54, 151, 229, 214, 56, 149, 187, 177, 123, 164, 182, 232, 188, 21, 94, 2, 155, 177, 124, 94, 151, 249, 116, 78, 62, 0, 194, 76, 156, 86, 227, 11, 25, 35, 6, 175, 77, 151, 60, 44, 114, 234, 153, 124, 79, 114, 88, 36, 178, 223, 229, 61, 90, 198, 60, 237, 224, 169, 115, 22, 152, 254, 235, 17, 130, 53, 1, 235, 67, 90, 238, 52, 170, 182, 73, 182, 138, 182, 189, 130, 170, 200, 91, 14, 150, 174, 100, 63, 29, 93, 171, 150, 154, 93, 72, 34, 156, 173, 108, 74, 29, 107, 197, 130, 86, 106, 178, 138, 210, 0, 92, 11, 78, 111, 226, 120, 169, 222, 50, 18, 156, 170, 98, 206, 97, 21, 28, 112, 234, 145, 2, 216, 188, 172, 150, 183, 39, 125, 17, 146, 49, 184, 242, 2, 60, 19, 162, 180, 210, 254, 249, 182, 240, 148, 184, 118, 113, 198, 27, 115, 165, 193, 97, 232, 201, 140, 63, 200, 153, 10, 162, 170, 69, 68, 152, 199, 103, 14, 164, 228, 120, 71, 47, 196, 217, 251, 181, 26, 112, 185, 116, 184, 77, 93, 236, 160, 235, 40, 0, 162, 199, 123, 223, 37, 53, 73, 177, 69, 207, 11, 137, 67, 204, 57, 231, 50, 185, 148, 48, 30, 102, 195, 248, 40, 189, 227, 187, 95, 166, 1, 7, 30, 112, 32, 101, 38, 72, 208, 52, 67, 131, 96, 34, 192, 156, 48, 92, 231, 188, 97, 103, 97, 41, 254, 33, 72, 190, 68, 184, 85, 114, 25, 94, 65, 144, 102, 176, 150, 76, 247, 146, 9, 188, 66, 4, 144, 98, 233, 196, 166, 7, 15, 54, 148, 247, 81, 52, 253, 27, 113, 235, 255, 230, 179, 168, 140, 95, 230, 163, 86, 235, 119, 185, 152, 223, 129, 48, 169, 170, 225, 224, 154, 164, 209, 129, 232, 92, 190, 187, 38, 217, 36, 113, 250, 61, 125, 168, 25, 70, 227, 39, 142, 12, 226, 20, 134, 82, 143, 147, 211, 173, 149, 223, 58, 27, 163, 18, 252, 148, 112, 19, 101, 144, 21, 105, 34, 200, 254, 11, 254, 8, 247, 210, 142, 194, 54, 150, 34, 171, 33, 203, 79, 79, 135, 186, 51, 68, 215, 106, 100, 21, 239, 178, 68, 230, 238, 72, 4, 31, 101, 161, 29, 204, 129, 234, 66, 195, 6, 69, 77, 48, 157, 137, 236, 96, 138, 119, 86, 147, 205, 172, 242, 28, 115, 188, 254, 216, 35, 89, 33, 27, 162, 243, 58, 102, 131, 50, 23, 169, 58, 218, 111, 6, 199, 164, 171, 104, 207, 34, 111, 229, 3, 207, 124, 96, 241, 95, 105, 113, 4, 16, 48, 163, 153, 0, 96, 174, 246, 3, 154, 124, 14, 132, 237, 184, 91, 217, 201, 53, 80, 39, 31, 113, 246, 67, 132, 85, 62, 153, 187, 240, 180, 117, 162, 17, 27, 190, 72, 178, 14, 101, 173, 200, 14, 196, 225, 212, 38, 153, 165, 147, 130, 51, 134, 40, 36, 7, 234, 179, 73, 28, 224, 4, 222, 10, 61, 65, 78, 23, 98, 246, 144, 9, 16, 180, 248, 56, 214, 162, 214, 18, 50, 67, 207, 3, 77, 7, 6, 28, 43, 131, 124, 117, 124, 213, 160, 67, 1, 44, 39, 15, 28, 149, 45, 54, 127, 157, 237, 193, 132, 174, 214, 8, 164, 106, 159, 213, 27, 173, 33, 24, 31, 110, 210, 95, 140, 236, 71, 68, 207, 225, 134, 105, 25, 226, 168, 119, 172, 1, 252, 11, 231, 182, 93, 254, 211, 58, 78, 192, 168, 67, 71, 11, 160, 76, 111, 234, 138, 119, 135, 51, 226, 113, 167, 146, 103, 97, 43, 192, 133, 252, 124, 42, 190, 217, 38, 95, 95, 222, 14, 245, 192, 116, 245, 68, 114, 253, 25, 229, 221, 0, 158, 27, 163, 45, 244, 200, 0, 205, 150, 162, 76, 224, 168, 203, 79, 114, 137, 18, 206, 12, 152, 241, 159, 245, 197, 175, 146, 16, 62, 152, 112, 233, 23, 132, 151, 100, 175, 26, 83, 0, 254, 150, 230, 94, 174, 77, 39, 57, 106, 155, 69, 85, 230, 239, 202, 205, 49, 17, 47, 72, 128, 251, 42, 157, 218, 234, 213, 127, 118, 152, 74, 139, 99, 120, 217, 116, 16, 73, 79, 40, 88, 107, 38, 132, 34, 101, 225, 109, 114, 91, 66, 69, 10, 44, 191, 6, 160, 208, 104, 123, 247, 247, 49, 151, 246, 216, 228, 157, 69, 140, 155, 98, 147, 202, 12, 79, 168, 40, 210, 164, 230, 241, 107, 109, 231, 243, 187, 252, 100, 70, 41, 140, 35, 231, 115, 98, 49, 192, 102, 46, 12, 82, 162, 226, 104, 86, 169, 42, 34, 213, 76, 89, 197, 131, 10, 25, 120, 204, 115, 231, 103, 217, 164, 13, 166, 139, 141, 77, 75, 27, 21, 84, 212, 209, 189, 148, 198, 213, 96, 234, 190, 213, 40, 210, 152, 141, 4, 110, 167, 209, 226, 236, 247, 139, 119, 215, 175, 30, 49, 225, 174, 42, 195, 251, 228, 170, 246, 94, 117, 128, 34, 177, 10, 15, 126, 165, 52, 159, 249, 67, 35, 200, 86, 65, 254, 141, 198, 219, 55, 225, 240, 111, 248, 101, 29, 235, 192, 112, 225, 19, 255, 139, 129, 46, 42, 9, 8, 74, 58, 254, 191, 49, 173, 189, 32, 5, 174, 81, 223, 94, 145, 85, 40, 194, 145, 251, 88, 168, 166, 143, 39, 33, 111, 230, 115, 77, 113, 83, 100, 211, 244, 163, 201, 141, 71, 193, 106, 138, 3, 215, 134, 217, 191, 10, 177, 250, 233, 247, 127, 162, 112, 206, 150, 187, 205, 141, 211, 181, 58, 199, 11, 220, 91, 180, 169, 182, 178, 224, 159, 144, 105, 146, 29, 162, 221, 106, 190, 209, 151, 126, 98, 187, 91, 50, 91, 198, 210, 78, 189, 155, 193, 208, 178, 164, 0, 189, 145, 189, 7, 162, 88, 156, 33, 118, 176, 125, 130, 199, 108, 240, 99, 125, 119, 202, 188, 53, 17, 140, 102, 26, 30, 23, 30, 214, 203, 93, 82, 6, 67, 28, 31, 12, 166, 105, 63, 132, 69, 166, 208, 252, 140, 56, 175, 245, 17, 170, 3, 193, 26, 168, 92, 40, 131, 82, 17, 144, 128, 91, 48, 220, 16, 209, 53, 226, 4, 225, 6, 253, 141, 25, 254, 146, 41, 63, 90, 19, 6, 75, 96, 130, 156, 14, 91, 231, 207, 128, 244, 15, 135, 63, 45, 235, 51, 134, 10, 75, 252, 212, 63, 51, 131, 253, 110, 144, 239, 182, 194, 107, 45, 103, 124, 83, 154, 173, 181, 51, 60, 63, 75, 172, 103, 222, 53, 31, 73, 93, 76, 159, 184, 24, 240, 41, 97, 72, 131, 54, 113, 170, 233, 182, 86, 62, 88, 131, 206, 86, 180, 32, 143, 172, 114, 41, 233, 121, 221, 190, 192, 97, 48, 196, 185, 135, 67, 79, 190, 66, 181, 196, 246, 211, 94, 250, 228, 62, 117, 159, 141, 54, 186, 81, 143, 113, 108, 102, 252, 182, 146, 233, 20, 135, 30, 255, 237, 33, 224, 68, 8, 175, 33, 58, 49, 16, 226, 113, 54, 90, 209, 159, 211, 193, 203, 187, 186, 156, 89, 81, 127, 211, 171, 113, 92, 238, 193, 159, 11, 242, 183, 97, 67, 211, 138, 203, 35, 113, 247, 64, 205, 71, 2, 127, 208, 90, 139, 132, 148, 180, 247, 7, 119, 195, 128, 96, 221, 195, 110, 44, 53, 114, 26, 196, 226, 219, 134, 195, 190, 205, 171, 29, 137, 224, 75, 167, 188, 94, 123, 199, 64, 167, 105, 191, 52, 247, 43, 224, 181, 250, 58, 109, 25, 1, 120, 7, 223, 250, 69, 199, 83, 15, 20, 136, 90, 247, 128, 109, 169, 243, 24, 220, 215, 188, 169, 46, 31, 131, 112, 79, 132, 93, 170, 127, 238, 207, 138, 110, 201, 232, 163, 214, 77, 45, 113, 103, 179, 197, 206, 83, 148, 6, 185, 231, 174, 111, 171, 162, 147, 39, 252, 36, 132, 173, 145, 77, 43, 223, 164, 46, 136, 129, 210, 219, 221, 202, 246, 182, 95, 135, 8, 55, 229, 71, 245, 57, 131, 217, 93, 90, 179, 195, 230, 102, 169, 80, 51, 197, 6, 48, 143, 112, 121, 27, 79, 174, 47, 88, 240, 47, 10, 62, 94, 177, 78, 234, 112, 136, 65, 84, 4, 245, 190, 138, 38, 98, 108, 187, 47, 236, 65, 95, 233, 245, 47, 126, 208, 199, 74, 229, 158, 20, 238, 148, 218, 241, 233, 229, 13, 14, 206, 95, 42, 22, 65, 191, 218, 73, 116, 90, 23, 4, 166, 32, 236, 51, 107, 252, 198, 10, 163, 100, 140, 221, 174, 111, 179, 171, 183, 159, 204, 229, 104, 156, 190, 99, 142, 130, 46, 142, 31, 244, 30, 114, 69, 86, 159, 173, 185, 88, 130, 238, 12, 216, 140, 134, 15, 104, 64, 131, 106, 95, 206, 11, 1, 183, 75, 167, 43, 63, 188, 39, 144, 14, 179, 140, 47, 140, 253, 202, 192, 215, 156, 108, 18, 211, 9, 75, 108, 47, 212, 81, 24, 149, 244, 189, 60, 199, 210, 251, 22, 15, 247, 145, 136, 59, 51, 228, 31, 227, 226, 12, 199, 36, 126, 167, 153, 168, 220, 216, 56, 68, 79, 99, 88, 13, 34, 125, 123, 33, 239, 167, 121, 240, 167, 65, 1, 82, 9, 126, 165, 52, 107, 207, 11, 48, 112, 3, 150, 102, 30, 177, 250, 211, 194, 239, 204, 242, 27, 31, 118, 231, 44, 200, 178, 138, 104, 164, 131, 113, 205, 95, 88, 165, 136, 177, 7, 111, 216, 83, 186, 110, 193, 241, 164, 24, 237, 204, 95, 250, 183, 26, 100, 70, 58, 91, 190, 43, 165, 31, 136, 139, 190, 27, 67, 52, 72, 65, 120, 121, 54, 81, 27, 209, 28, 74, 51, 58, 211, 86, 46, 92, 123, 222, 10, 44, 145, 78, 90, 26, 61, 64, 143, 228, 227, 254, 73, 218, 85, 93, 218, 33, 123, 181, 195, 9, 76, 237, 41, 119, 145, 131, 106, 4, 150, 58, 7, 156, 65, 113, 108, 28, 135, 43, 21, 245, 159, 20, 163, 123, 27, 20, 58, 212, 183, 242, 82, 228, 110, 80, 53, 164, 161, 180, 244, 125, 168, 207, 81, 4, 253, 95, 101, 88, 31, 63, 25, 134, 59, 130, 0, 90, 220, 24, 200, 221, 149, 76, 225, 16, 26, 77, 179, 172, 190, 145, 199, 145, 239, 140, 106, 131, 29, 211, 187, 12, 207, 40, 205, 237, 151, 159, 18, 76, 49, 193, 137, 196, 197, 105, 181, 171, 23, 172, 208, 115, 95, 139, 136, 150, 211, 251, 132, 247, 206, 93, 70, 19, 181, 13, 205, 216, 79, 238, 229, 123, 12, 38, 24, 233, 96, 205, 223, 126, 95, 54, 15, 145, 149, 40, 41, 34, 30, 17, 1, 153, 252, 244, 214, 40, 66, 158, 71, 219, 142, 206, 216, 251, 200, 191, 75, 34, 147, 163, 27, 127, 64, 195, 187, 129, 132, 63, 224, 112, 1, 154, 28, 76, 141, 165, 195, 155, 53, 84, 189, 57, 148, 144, 98, 14, 232, 213, 179, 55, 191, 169, 203, 103, 99, 120, 159, 254, 201, 113, 51, 23, 99, 116, 246, 200, 59, 122, 13, 165, 118, 14, 230, 35, 231, 158, 48, 20, 104, 147, 121, 161, 241, 83, 109, 58, 84, 246, 251, 170, 145, 99, 179, 150, 32, 203, 93, 193, 99, 13, 86, 8, 224, 237, 61, 69, 58, 27, 79, 229, 84, 129, 145, 109, 58, 2, 230, 50, 0, 38, 189, 160, 18, 89, 158, 44, 255, 190, 108, 59, 161, 43, 49, 238, 84, 229, 223, 183, 138, 75, 130, 84, 208, 112, 183, 75, 108, 229, 254, 186, 103, 207, 244, 244, 149, 217, 71, 217, 238, 59, 98, 49, 214, 251, 83, 43, 104, 84, 0, 244, 181, 253, 235, 119, 236, 31, 36, 163, 105, 46, 52, 21, 212, 81, 170, 106, 186, 162, 63, 24, 235, 197, 184, 239, 229, 147, 105, 73, 145, 164, 214, 128, 23, 141, 50, 203, 41, 135, 32, 169, 168, 152, 137, 199, 38, 93, 226, 205, 20, 190, 208, 216, 76, 204, 133, 134, 137, 99, 89, 32, 57, 235, 138, 176, 10, 63, 159, 110, 85, 155, 164, 250, 194, 190, 58, 202, 52, 237, 95, 54, 149, 206, 144, 74, 123, 152, 231, 41, 202, 121, 248, 243, 40, 247, 161, 225, 88, 148, 188, 79, 6, 235, 43, 132, 24, 200, 229, 86, 53, 166, 123, 116, 233, 203, 23, 212, 55, 0, 195, 238, 247, 152, 247, 216, 229, 23, 93, 244, 224, 96, 37, 6, 61, 24, 107, 51, 63, 254, 187, 179, 71, 7, 45, 170, 122, 160, 223, 44, 203, 190, 142, 134, 129, 210, 67, 41, 17, 118, 139, 196, 163, 243, 54, 81, 192, 212, 129, 52, 227, 168, 113, 238, 178, 185, 158, 213, 144, 12, 198, 236, 234, 35, 179, 157, 91, 138, 46, 220, 35, 65, 82, 11, 16, 125, 96, 248, 199, 155, 100, 48, 154, 106, 187, 141, 250, 191, 130, 222, 131, 227, 14, 138, 219, 23, 23, 190, 180, 155, 147, 58, 224, 150, 39, 182, 226, 239, 3, 45, 47, 99, 255, 32, 73, 242, 233, 180, 149, 238, 45, 103, 39, 196, 231, 138, 16, 51, 224, 221, 136, 174, 205, 149, 132, 92, 83, 186, 48, 133, 204, 210, 5, 40, 57, 22, 64, 160, 4, 73, 168, 178, 229, 222, 185, 235, 109, 196, 109, 183, 150, 158, 0, 56, 16, 41, 43, 193, 31, 204, 169, 219, 50, 167, 242, 107, 206, 105, 228, 246, 59, 53, 18, 42, 19, 217, 56, 220, 59, 46, 160, 107, 200, 164, 0, 5, 213, 178, 133, 187, 142, 174, 218, 60, 252, 237, 61, 66, 146, 207, 179, 93, 234, 83, 219, 93, 55, 107, 92, 139, 101, 151, 198, 135, 246, 223, 101, 139, 44, 166, 82, 97, 233, 217, 130, 67, 22, 88, 36, 131, 80, 179, 192, 34, 206, 119, 167, 17, 65, 217, 71, 250, 52, 253, 29, 4, 156, 63, 64, 81, 6, 67, 130, 79, 0, 95, 87, 36, 43, 4, 26, 51, 250, 24, 178, 197, 41, 20, 142, 187, 180, 239, 156, 102, 113, 15, 13, 18, 90, 70, 184, 7, 250, 193, 117, 127, 60, 0, 198, 218, 128, 116, 119, 124, 126, 160, 129, 231, 68, 189, 98, 48, 43, 120, 178, 91, 54, 242, 66, 112, 55, 188, 42, 179, 94, 60, 249, 136, 81, 149, 132, 98, 209, 181, 219, 223, 31, 40, 235, 55, 5, 69, 11, 63, 192, 51, 224, 119, 107, 193, 84, 178, 191, 58, 217, 222, 183, 118, 114, 95, 45, 48, 126, 184, 10, 207, 0, 217, 59, 167, 244, 219, 9, 238, 41, 13, 127, 191, 123, 139, 9, 74, 40, 164, 194, 205, 116, 204, 185, 230, 133, 148, 215, 50, 105, 173, 220, 113, 117, 98, 233, 80, 209, 185, 211, 232, 29, 157, 12, 206, 228, 187, 26, 240, 193, 21, 15, 69, 115, 120, 66, 2, 92, 165, 103, 29, 177, 151, 154, 211, 107, 177, 89, 16, 135, 243, 135, 178, 237, 184, 110, 191, 169, 230, 243, 106, 16, 95, 128, 124, 73, 132, 107, 116, 123, 38, 0, 72, 24, 171, 8, 113, 227, 43, 136, 168, 25, 174, 100, 201, 252, 212, 119, 246, 131, 95, 78, 65, 222, 89, 192, 87, 66, 102, 58, 237, 94, 56, 138, 71, 121, 65, 49, 22, 65, 29, 183, 56, 59, 27, 16, 176, 232, 120, 22, 104, 212, 83, 32, 55, 90, 2, 37, 108, 112, 146, 113, 34, 64, 78, 65, 80, 198, 101, 190, 60, 69, 60, 230, 72, 216, 215, 225, 166, 155, 122, 140, 137, 245, 89, 77, 237, 209, 242, 67, 37, 88, 5, 117, 101, 165, 98, 84, 139, 18, 57, 118, 67, 78, 254, 178, 60, 181, 124, 144, 169, 13, 20, 233, 60, 51, 55, 1, 215, 225, 224, 42, 191, 189, 227, 246, 25, 53, 164, 27, 1, 66, 112, 36, 211, 67, 195, 172, 119, 52, 81, 244, 10, 39, 11, 219, 160, 35, 230, 225, 176, 171, 74, 254, 100, 229, 4, 64, 140, 85, 94, 85, 197, 63, 234, 173, 243, 129, 52, 220, 154, 175, 195, 223, 23, 85, 20, 171, 79, 240, 185, 10, 14, 93, 185, 93, 100, 11, 41, 39, 106, 137, 70, 122, 173, 221, 195, 73, 174, 145, 7, 85, 1, 232, 126, 67, 38, 213, 104, 164, 213, 213, 5, 23, 233, 233, 47, 222, 14, 3, 33, 180, 180, 49, 136, 73, 46, 237, 209, 47, 197, 173, 95, 131, 4, 157, 40, 217, 217, 156, 31, 81, 103, 24, 116, 208, 225, 123, 11, 122, 143, 55, 224, 125, 121, 42, 109, 151, 120, 245, 141, 176, 100, 12, 237, 222, 197, 100, 79, 16, 168, 247, 103, 223, 85, 92, 26, 17, 23, 91, 90, 249, 228, 162, 166, 164, 178, 215, 48, 203, 209, 138, 42, 42, 87, 132, 134, 120, 39, 13, 50, 77, 187, 15, 42, 82, 80, 242, 210, 141, 28, 213, 194, 241, 75, 86, 159, 120, 217, 98, 94, 100, 129, 1, 228, 157, 183, 171, 186, 164, 245, 72, 107, 119, 241, 227, 77, 109, 120, 58, 248, 36, 82, 38, 188, 50, 177, 65, 227, 192, 169, 124, 7, 137, 254, 80, 151, 200, 73, 55, 99, 30, 150, 192, 13, 106, 41, 236, 18, 6, 73, 73, 16, 239, 162, 0, 218, 201, 184, 78, 184, 137, 253, 12, 130, 241, 245, 158, 233, 159, 0, 130, 99, 50, 12, 240, 186, 207, 221, 250, 179, 115, 138, 137, 154, 182, 72, 119, 204, 16, 18, 101, 107, 27, 98, 142, 16, 143, 116, 161, 238, 232, 227, 70, 247, 124, 150, 157, 67, 114, 24, 162, 246, 158, 205, 24, 77, 79, 107, 232, 141, 103, 99, 128, 101, 40, 241, 212, 127, 90, 40, 2, 229, 105, 51, 164, 70, 216, 95, 2, 240, 54, 224, 11, 241, 201, 181, 97, 113, 49, 10, 170, 203, 10, 7, 130, 42, 236, 195, 146, 175, 222, 91, 235, 145, 13, 33, 82, 81, 187, 250, 248, 59, 250, 222, 136, 69, 192, 178, 189, 103, 176, 235, 101, 89, 133, 145, 203, 35, 138, 157, 180, 144, 6, 172, 55, 58, 147, 217, 109, 95, 81, 141, 214, 209, 245, 146, 96, 23, 130, 101, 107, 180, 188, 69, 204, 224, 195, 29, 108, 199, 70, 239, 18, 199, 143, 68, 161, 121, 110, 132, 238, 186, 97, 217, 227, 106, 86, 162, 24, 170, 155, 34, 8, 92, 154, 199, 184, 210, 214, 20, 31, 200, 22, 169, 186, 176, 26, 52, 62, 5, 251, 241, 108, 67, 153, 104, 242, 20, 28, 143, 23, 92, 191, 96, 254, 141, 235, 113, 154, 10, 219, 117, 159, 56, 31, 140, 161, 225, 247, 236, 253, 126, 160, 115, 23, 15, 175, 190, 227, 94, 149, 166, 102, 173, 251, 60, 192, 100, 70, 126, 89, 88, 154, 70, 176, 82, 212, 137, 12, 243, 203, 215, 247, 252, 91, 27, 19, 104, 229, 123, 83, 164, 166, 1, 90, 189, 251, 6, 81, 168, 28, 250, 206, 104, 62, 122, 66, 100, 183, 204, 196, 12, 57, 237, 25, 151, 165, 202, 65, 176, 124, 4, 94, 99, 250, 31, 43, 245, 160, 19, 247, 137, 120, 147, 24, 227, 192, 34, 21, 113, 168, 214, 235, 104, 140, 252, 170, 127, 90, 181, 149, 35, 160, 69, 110, 233, 71, 194, 66, 156, 225, 152, 129, 163, 168, 162, 154, 99, 172, 144, 85, 253, 238, 250, 48, 69, 99, 139, 49, 133, 200, 148, 34, 238, 235, 163, 13, 229, 232, 206, 118, 9, 132, 186, 253, 112, 251, 185, 191, 253, 155, 31, 161, 100, 249, 50, 145, 99, 243, 16, 21, 182, 137, 81, 104, 165, 96, 66, 112, 137, 68, 233, 58, 217, 65, 209, 62, 125, 164, 71, 64, 3, 44, 47, 172, 14, 211, 105, 241, 194, 50, 196, 89, 82, 26, 174, 194, 101, 119, 171, 140, 162, 141, 123, 206, 115, 85, 248, 33, 85, 228, 42, 92, 97, 100, 0, 16, 52, 27, 111, 146, 22, 223, 104, 54, 254, 70, 119, 180, 9, 126, 226, 173, 218, 140, 232, 213, 96, 232, 138, 148, 131, 144, 15, 69, 136, 43, 252, 203, 249, 20, 198, 32, 153, 17, 9, 28, 69, 183, 178, 240, 203, 31, 197, 112, 215, 34, 199, 95, 180, 116, 231, 191, 216, 12, 90, 216, 161, 227, 246, 5, 183, 26, 243, 239, 47, 193, 208, 140, 195, 151, 178, 100, 250, 38, 182, 15, 156, 211, 44, 207, 216, 110, 150, 234, 92, 160, 204, 228, 246, 38, 224, 16, 83, 166, 33, 22, 163, 174, 99, 80, 3, 23, 142, 55, 3, 253, 128, 63, 222, 111, 158, 184, 10, 60, 153, 124, 202, 53, 189, 14, 118, 45, 87, 79, 252, 20, 226, 58, 249, 197, 29, 162, 78, 211, 147, 165, 240, 7, 60, 175, 73, 90, 61, 167, 239, 68, 104, 66, 207, 208, 194, 87, 148, 158, 184, 247, 129, 7, 150, 171, 62, 157, 62, 240, 137, 36, 88, 122, 225, 83, 173, 245, 238, 245, 249, 227, 252, 152, 40, 8, 3, 150, 155, 71, 121, 187, 46, 173, 248, 107, 78, 135, 232, 20, 174, 165, 135, 5, 106, 244, 62, 79, 249, 72, 99, 252, 177, 27, 158, 223, 235, 59, 34, 141, 45, 221, 238, 31, 102, 247, 65, 170, 15, 219, 210, 232, 80, 100, 68, 171, 37, 211, 156, 83, 147, 246, 219, 89, 41, 195, 110, 252, 146, 164, 200, 63, 22, 154, 235, 157, 224, 24, 13, 102, 218, 53, 116, 235, 195, 57, 44, 157, 20, 89, 193, 102, 118, 163, 6, 24, 185, 177, 103, 106, 237, 7, 242, 206, 186, 232, 186, 164, 89, 138, 96, 207, 218, 228, 8, 77, 218, 15, 219, 168, 183, 178, 106, 155, 150, 37, 27, 139, 195, 72, 245, 64, 122, 219, 34, 125, 244, 159, 107, 23, 200, 151, 221, 249, 115, 21, 122, 60, 189, 31, 36, 127, 78, 52, 175, 187, 142, 179, 50, 53, 30, 246, 156, 89, 21, 120, 137, 129, 51, 10, 219, 176, 167, 197, 56, 128, 1, 21, 249, 225, 157, 135, 91, 248, 216, 237, 108, 143, 105, 159, 168, 97, 56, 54, 26, 181, 62, 66, 194, 192, 246, 142, 174, 157, 28, 52, 18, 33, 44, 54, 106, 28, 19, 94, 56, 49, 80, 181, 104, 237, 198, 100, 25, 119, 50, 224, 202, 71, 203, 246, 127, 108, 93, 3, 58, 61, 195, 222, 215, 50, 146, 156, 110, 216, 51, 40, 228, 9, 192, 77, 26, 58, 144, 247, 220, 122, 136, 51, 97, 227, 255, 158, 63, 76, 105, 203, 118, 96, 163, 154, 19, 163, 65, 249, 170, 225, 220, 193, 235, 177, 57, 168, 2, 14, 44, 34, 130, 107, 145, 189, 125, 158, 223, 106, 229, 0, 175, 136, 163, 176, 151, 192, 102, 36, 251, 135, 128, 146, 36, 182, 219, 135, 150, 115, 34, 164, 3, 69, 39, 128, 31, 3, 250, 103, 109, 228, 88, 77, 91, 51, 229, 228, 39, 140, 87, 33, 182, 110, 20, 127, 154, 139, 110, 252, 14, 92, 5, 39, 245, 215, 141, 132, 66, 99, 195, 210, 248, 104, 29, 72, 126, 58, 54, 254, 137, 250, 235, 51, 200, 139, 32, 61, 174, 43, 194, 99, 179, 203, 207, 53, 245, 133, 177, 124, 73, 203, 155, 38, 11, 171, 223, 12, 171, 48, 169, 129, 190, 14, 43, 247, 147, 163, 204, 5, 102, 247, 251, 92, 79, 18, 195, 208, 25, 55, 228, 229, 55, 83, 17, 96, 4, 60, 85, 10, 218, 76, 101, 24, 172, 80, 228, 108, 45, 55, 129, 87, 97, 22, 86, 102, 70, 31, 187, 191, 1, 178, 184, 253, 120, 104, 197, 84, 242, 112, 17, 245, 82, 85, 96, 40, 21, 9, 4, 45, 209, 147, 162, 110, 90, 34, 41, 194, 135, 169, 75, 169, 114, 206, 220, 166, 81, 141, 187, 64, 120, 169, 165, 23, 66, 222, 214, 18, 184, 136, 116, 199, 67, 91, 151, 67, 123, 201, 40, 171, 30, 81, 53, 172, 11, 252, 52, 200, 191, 236, 81, 63, 28, 28, 79, 197, 11, 72, 49, 4, 124, 134, 233, 232, 35, 46, 146, 22, 245, 251, 182, 162, 76, 231, 32, 196, 244, 181, 102, 124, 215, 106, 183, 214, 60, 118, 51, 84, 203, 105, 179, 56, 73, 212, 219, 228, 251, 38, 126, 206, 115, 119, 115, 151, 21, 49, 80, 168, 206, 170, 174, 215, 59, 70, 84, 59, 126, 167, 254, 115, 232, 114, 60, 182, 40, 129, 177, 240, 200, 38, 37, 198, 209, 23, 76, 170, 118, 83, 1, 131, 247, 56, 26, 57, 127, 156, 31, 144, 27, 184, 203, 148, 35, 11, 202, 85, 112, 185, 103, 107, 238, 6, 233, 105, 127, 30, 36, 5, 87, 171, 241, 3, 56, 204, 132, 15, 217, 229, 139, 21, 217, 129, 72, 249, 87, 89, 79, 96, 37, 236, 89, 92, 155, 19, 126, 84, 218, 53, 184, 26, 224, 179, 7, 109, 243, 241, 91, 4, 121, 186, 223, 116, 222, 74, 23, 153, 101, 79, 27, 149, 143, 26, 68, 95, 238, 21, 43, 211, 107, 255, 231, 205, 156, 7, 52, 151, 74, 253, 249, 109, 51, 153, 31, 163, 151, 172, 121, 248, 150, 198, 13, 118, 76, 248, 18, 210, 184, 219, 23, 234, 59, 115, 254, 81, 254, 67, 110, 53, 177, 188, 60, 180, 25, 87, 10, 150, 44, 208, 115, 144, 16, 3, 244, 119, 137, 173, 22, 158, 135, 89, 82, 86, 224, 43, 127, 108, 234, 223, 64, 224, 50, 214, 124, 246, 207, 122, 29, 99, 234, 199, 48, 125, 106, 221, 148, 40, 5, 16, 140, 234, 185, 222, 239, 214, 67, 77, 22, 165, 135, 224, 121, 236, 251, 70, 6, 123, 22, 230, 117, 208, 172, 131, 59, 53, 108, 100, 173, 136, 63, 22, 130, 83, 137, 15, 28, 82, 36, 34, 221, 235, 226, 114, 79, 126, 119, 218, 50, 130, 122, 143, 128, 240, 138, 49, 95, 254, 117, 105, 94, 76, 117, 93, 6, 189, 236, 192, 252, 227, 60, 208, 190, 216, 173, 157, 42, 240, 134, 97, 184, 215, 46, 30, 152, 214, 186, 205, 122, 64, 241, 9, 165, 113, 56, 244, 89, 27, 38, 41, 168, 30, 3, 50, 249, 121, 35, 55, 79, 10, 253, 33, 221, 231, 112, 53, 230, 15, 241, 247, 11, 202, 123, 27, 169, 254, 215, 208, 212, 184, 229, 58, 145, 142, 227, 155, 8, 98, 108, 50, 239, 238, 82, 161, 80, 228, 170, 128, 65, 71, 94, 4, 135, 27, 30, 28, 176, 66, 87, 245, 58, 0, 242, 162, 155, 1, 230, 130, 191, 161, 30, 167, 132, 37, 170, 137, 45, 70, 182, 29, 64, 230, 204, 218, 12, 26, 236, 146, 21, 130, 38, 184, 0, 185, 21, 57, 51, 227, 123, 26, 216, 87, 227, 198, 78, 106, 171, 224, 255, 223, 12, 92, 86, 191, 171, 109, 68, 29, 196, 31, 189, 44, 47, 198, 240, 63, 119, 237, 15, 4, 66, 204, 61, 54, 105, 188, 52, 38, 85, 29, 10, 181, 57, 21, 63, 27, 248, 254, 144, 201, 69, 96, 72, 176, 206, 105, 209, 182, 227, 107, 31, 34, 36, 199, 71, 50, 233, 205, 40, 110, 204, 197, 190, 202, 175, 155, 208, 26, 241, 28, 118, 239, 86, 87, 198, 167, 203, 148, 79, 69, 114, 108, 111, 178, 8, 29, 141, 229, 254, 121, 55, 99, 138, 88, 211, 25, 213, 124, 32, 248, 28, 178, 12, 184, 96, 118, 178, 219, 74, 186, 235, 22, 144, 68, 124, 152, 163, 132, 152, 125, 193, 123, 203, 54, 115, 216, 254, 245, 228, 88, 47, 119, 152, 56, 194, 120, 93, 63, 251, 138, 157, 142, 83, 235, 111, 98, 208, 67, 226, 204, 115, 172, 14, 15, 217, 122, 68, 94, 214, 215, 29, 196, 49, 82, 155, 80, 204, 30, 180, 143, 142, 231, 118, 154, 68, 4, 61, 180, 33, 86, 157, 251, 119, 49, 46, 239, 175, 251, 115, 135, 182, 34, 219, 38, 134, 237, 12, 183, 159, 71, 196, 175, 119, 134, 146, 175, 239, 200, 85, 24, 217, 227, 238, 110, 252, 34, 213, 35, 175, 138, 193, 218, 182, 239, 83, 198, 26, 3, 30, 86, 54, 168, 174, 79, 129, 135, 146, 192, 218, 114, 151, 242, 108, 220, 232, 99, 46, 215, 49, 77, 5, 233, 222, 144, 69, 82, 85, 250, 180, 112, 61, 41, 7, 70, 35, 129, 219, 1, 102, 71, 40, 17, 52, 46, 102, 92, 75, 71, 121, 235, 18, 248, 78, 23, 237, 185, 36, 1, 253, 155, 195, 206, 244, 208, 255, 183, 10, 124, 207, 30, 200, 87, 15, 2, 31, 82, 248, 77, 199, 99, 110, 49, 133, 23, 175, 42, 20, 172, 13, 61, 178, 71, 197, 1, 87, 56, 214, 83, 138, 223, 121, 216, 209, 94, 188, 153, 136, 22, 101, 223, 251, 36, 70, 159, 160, 137, 55, 158, 136, 136, 94, 201, 249, 232, 129, 31, 163, 204, 148, 185, 219, 185, 188, 250, 87, 91, 233, 206, 199, 222, 41, 173, 48, 157, 166, 37, 53, 134, 142, 204, 169, 185, 136, 17, 238, 221, 67, 31, 233, 131, 78, 85, 250, 158, 115, 59, 6, 197, 0, 29, 209, 138, 21, 65, 208, 208, 100, 2, 249, 160, 42, 114, 168, 84, 100, 83, 98, 42, 113, 93, 199, 99, 3, 23, 187, 223, 35, 173, 167, 172, 12, 250, 132, 84, 191, 41, 161, 177, 90, 245, 36, 174, 96, 92, 4, 65, 80, 221, 118, 130, 137, 210, 181, 216, 234, 6, 114, 245, 247, 11, 183, 159, 78, 227, 93, 225, 188, 56, 210, 246, 105, 24, 127, 13, 3, 223, 213, 164, 180, 246, 129, 106, 153, 92, 20, 112, 229, 65, 37, 202, 16, 204, 79, 45, 14, 159, 111, 103, 125, 63, 209, 11, 212, 23, 29, 14, 106, 187, 95, 125, 231, 159, 247, 143, 149, 128, 20, 201, 139, 220, 243, 141, 124, 26, 171, 218, 135, 196, 74, 252, 154, 52, 245, 147, 236, 196, 248, 112, 70, 142, 237, 97, 191, 75, 100, 47, 234, 68, 85, 201, 28, 130, 3, 198, 86, 253, 79, 150, 148, 144, 204, 233, 54, 3, 5, 106, 19, 90, 161, 130, 16, 147, 168, 51, 234, 73, 72, 190, 54, 204, 146, 106, 213, 51, 33, 182, 127, 68, 91, 247, 225, 121, 4, 90, 117, 154, 82, 244, 70, 88, 15, 122, 187, 153, 136, 172, 52, 21, 174, 107, 175, 69, 121, 80, 180, 17, 154, 197, 30, 205, 200, 150, 198, 136, 64, 199, 22, 175, 74, 4, 195, 49, 111, 218, 52, 213, 176, 230, 58, 138, 61, 209, 13, 2, 114, 124, 80, 26, 50, 139, 86, 36, 192, 192, 36, 71, 80, 0, 59, 30, 135, 185, 103, 130, 115, 138, 250, 126, 155, 175, 240, 84, 122, 137, 200, 171, 68, 72, 164, 79, 79, 28, 90, 84, 110, 130, 122, 133, 165, 245, 35, 124, 195, 10, 99, 78, 140, 219, 139, 219, 107, 1, 172, 39, 0, 28, 150, 91, 243, 188, 215, 147, 12, 70, 161, 15, 172, 102, 17, 146, 175, 95, 79, 20, 209, 180, 207, 154, 153, 229, 190, 251, 73, 215, 11, 113, 37, 230, 193, 192, 218, 119, 83, 16, 237, 167, 193, 157, 157, 102, 102, 203, 198, 68, 237, 252, 121, 120, 132, 126, 65, 199, 197, 59, 186, 66, 182, 38, 126, 221, 17, 96, 102, 99, 218, 185, 124, 152, 18, 240, 92, 241, 171, 178, 231, 64, 223, 228, 161, 110, 182, 217, 95, 166, 165, 113, 6, 203, 8, 254, 9, 241, 90, 157, 60, 194, 125, 210, 73, 213, 243, 16, 159, 123, 119, 162, 42, 178, 159, 91, 130, 235, 17, 142, 202, 65, 31, 213, 60, 108, 95, 53, 161, 25, 85, 114, 18, 117, 199, 73, 71, 168, 243, 188, 126, 180, 37, 10, 239, 179, 38, 227, 177, 184, 213, 193, 130, 45, 115, 2, 196, 136, 54, 99, 161, 163, 212, 189, 9, 142, 113, 251, 137, 138, 187, 11, 117, 189, 246, 30, 193, 150, 187, 60, 70, 108, 189, 10, 152, 108, 36, 102, 189, 204, 224, 8, 100, 72, 219, 66, 97, 53, 90, 23, 109, 82, 49, 94, 227, 67, 207, 146, 127, 199, 212, 174, 5, 115, 160, 81, 23, 44, 130, 49, 248, 2, 67, 94, 32, 231, 7, 238, 13, 65, 115, 85, 211, 138, 184, 26, 88, 21, 69, 115, 129, 30, 63, 79, 116, 118, 207, 139, 204, 42, 88, 114, 154, 26, 166, 116, 28, 189, 75, 201, 163, 102, 236, 156, 198, 58, 122, 99, 97, 179, 132, 66, 245, 26, 90, 49, 91, 69, 117, 71, 163, 122, 152, 220, 240, 131, 139, 80, 95, 199, 50, 34, 131, 99, 154, 8, 240, 77, 238, 85, 0, 60, 144, 102, 5, 83, 16, 174, 3, 125, 158, 231, 212, 80, 67, 109, 64, 129, 65, 152, 126, 217, 180, 3, 123, 31, 139, 40, 177, 229, 154, 149, 0, 9, 108, 240, 174, 68, 247, 2, 95, 106, 173, 104, 173, 73, 133, 174, 64, 164, 216, 90, 210, 114, 220, 105, 214, 232, 155, 157, 25, 103, 74, 72, 105, 6, 96, 3, 14, 168, 64, 0, 14, 74, 135, 241, 67, 80, 41, 107, 78, 44, 201, 206, 166, 31, 187, 72, 108, 29, 225, 109, 224, 21, 189, 198, 90, 74, 132, 170, 45, 181, 124, 167, 55, 178, 176, 245, 3, 121, 248, 88, 55, 57, 84, 168, 38, 97, 212, 185, 211, 75, 237, 191, 148, 160, 19, 135, 106, 139, 109, 230, 29, 169, 143, 40, 88, 55, 125, 152, 99, 211, 249, 146, 19, 108, 39, 87, 216, 202, 57, 193, 173, 54, 237, 94, 199, 249, 113, 60, 220, 114, 138, 147, 252, 244, 211, 29, 16, 5, 38, 145, 100, 157, 148, 247, 85, 131, 132, 234, 56, 134, 249, 247, 149, 240, 128, 102, 26, 196, 211, 204, 188, 41, 146, 59, 238, 60, 118, 144, 97, 167, 147, 181, 37, 102, 245, 87, 136, 136, 183, 194, 224, 215, 16, 26, 176, 144, 248, 243, 216, 151, 198, 208, 45, 25, 158, 102, 99, 84, 117, 57, 69, 24, 248, 8, 171, 198, 227, 0, 97, 117, 125, 39, 56, 98, 7, 78, 237, 199, 252, 17, 128, 35, 21, 191, 162, 252, 97, 165, 185, 20, 182, 71, 25, 192, 235, 193, 9, 108, 32, 162, 82, 45, 226, 247, 149, 106, 183, 197, 123, 208, 64, 32, 231, 114, 123, 249, 204, 31, 126, 229, 191, 93, 154, 255, 251, 163, 84, 109, 176, 62, 9, 91, 54, 135, 174, 214, 219, 244, 55, 159, 138, 47, 141, 95, 225, 222, 146, 81, 136, 14, 49, 71, 142, 141, 198, 178, 143, 42, 126, 67, 81, 73, 244, 110, 174, 53, 160, 244, 221, 117, 44, 13, 86, 181, 20, 163, 145, 49, 126, 196, 202, 24, 55, 167, 72, 21, 88, 64, 190, 217, 248, 29, 46, 25, 147, 233, 239, 109, 41, 178, 123, 54, 78, 205, 11, 77, 66, 172, 204, 254, 48, 206, 14, 170, 65, 25, 4, 88, 231, 174, 21, 231, 98, 191, 171, 70, 249, 226, 12, 15, 173, 103, 0, 52, 83, 81, 236, 239, 45, 4, 3, 243, 172, 42, 73, 19, 244, 141, 114, 119, 169, 73, 185, 221, 81, 46, 251, 25, 248, 147, 227, 140, 25, 133, 123, 209, 122, 68, 120, 188, 68, 131, 220, 204, 48, 59, 131, 50, 0, 63, 164, 97, 145, 194, 192, 196, 187, 250, 118, 225, 50, 121, 49, 17, 98, 221, 231, 79, 222, 91, 99, 124, 27, 226, 73, 141, 116, 188, 90, 55, 204, 111, 53, 54, 36, 225, 24, 179, 36, 97, 25, 224, 43, 204, 164, 245, 213, 62, 220, 246, 111, 166, 164, 10, 239, 90, 231, 156, 71, 192, 68, 16, 48, 152, 110, 158, 120, 170, 117, 188, 129, 88, 26, 66, 1, 172, 32, 102, 243, 220, 12, 165, 248, 190, 83, 143, 22, 45, 166, 182, 87, 198, 76, 59, 235, 90, 82, 147, 207, 219, 77, 15, 175, 33, 94, 132, 155, 247, 0, 233, 108, 219, 2, 115, 43, 239, 200, 102, 48, 22, 29, 127, 98, 33, 131, 111, 232, 27, 45, 119, 14, 138, 8, 165, 210, 165, 59, 92, 49, 87, 238, 157, 19, 109, 116, 34, 152, 203, 239, 125, 242, 148, 246, 83, 229, 231, 67, 221, 170, 75, 187, 111, 96, 105, 206, 20, 123, 222, 223, 9, 33, 251, 167, 255, 69, 65, 196, 201, 26, 44, 149, 169, 81, 133, 65, 107, 143, 168, 33, 169, 39, 12, 34, 37, 116, 244, 21, 198, 162, 120, 221, 110, 71, 169, 248, 173, 37, 178, 128, 28, 26, 113, 92, 144, 75, 42, 223, 212, 129, 210, 141, 135, 166, 193, 192, 97, 52, 222, 254, 23, 148, 9, 112, 114, 64, 84, 12, 0, 125, 189, 173, 232, 223, 134, 210, 13, 236, 70, 153, 231, 212, 20, 224, 146, 173, 139, 57, 190, 134, 118, 153, 147, 141, 236, 92, 50, 237, 88, 178, 184, 155, 140, 69, 133, 101, 211, 123, 101, 137, 130, 38, 50, 225, 155, 224, 53, 213, 65, 112, 198, 206, 81, 96, 203, 29, 141, 206, 29, 232, 124, 216, 35, 8, 62, 149, 236, 178, 118, 57, 28, 94, 86, 43, 220, 48, 108, 137, 108, 195, 130, 28, 212, 104, 37, 93, 83, 174, 52, 92, 137, 136, 245, 238, 54, 132, 123, 121, 136, 105, 15, 23, 185, 141, 208, 44, 117, 156, 169, 74, 234, 83, 135, 181, 51, 173, 98, 228, 101, 216, 166, 90, 42, 211, 115, 53, 198, 255, 53, 31, 204, 244, 146, 83, 100, 59, 103, 100, 81, 139, 131, 47, 109, 149, 157, 235, 100, 64, 188, 73, 77, 255, 230, 192, 121, 88, 233, 145, 46, 214, 145, 195, 177, 107, 1, 169, 44, 54, 69, 197, 68, 16, 16, 211, 16, 41, 134, 144, 71, 40, 46, 249, 160, 144, 31, 188, 218, 244, 180, 195, 35, 145, 40, 126, 240, 86, 250, 200, 74, 203, 70, 69, 84, 247, 148, 178, 102, 232, 217, 29, 244, 63, 41, 26, 206, 12, 208, 188, 160, 66, 96, 29, 86, 185, 152, 172, 183, 67, 182, 163, 158, 61, 102, 22, 162, 176, 127, 184, 115, 86, 214, 84, 179, 215, 43, 8, 32, 27, 18, 198, 40, 69, 143, 122, 55, 55, 223, 36, 87, 74, 116, 38, 173, 95, 4, 148, 104, 217, 54, 158, 80, 118, 68, 201, 80, 167, 172, 236, 11, 8, 3, 182, 231, 105, 248, 122, 83, 91, 190, 108, 124, 232, 144, 34, 30, 140, 1, 223, 30, 13, 33, 206, 8, 1, 116, 227, 249, 185, 192, 4, 233, 99, 7, 81, 144, 170, 102, 29, 7, 5, 87, 164, 208, 142, 13, 147, 99, 116, 47, 176, 157, 71, 76, 229, 175, 151, 190, 117, 238, 161, 140, 126, 154, 114, 180, 109, 197, 60, 160, 11, 117, 113, 139, 72, 90, 145, 223, 126, 26, 201, 46, 122, 157, 144, 164, 170, 154, 74, 54, 76, 213, 67, 33, 232, 148, 219, 175, 216, 59, 68, 148, 51, 30, 162, 24, 112, 162, 40, 8, 181, 90, 210, 95, 250, 35, 209, 11, 162, 205, 2, 241, 95, 18, 61, 11, 6, 90, 79, 128, 18, 110, 247, 101, 192, 234, 27, 38, 155, 204, 170, 160, 194, 35, 212, 120, 110, 174, 173, 19, 10, 66, 171, 122, 206, 171, 1, 209, 22, 166, 136, 66, 166, 203, 93, 90, 27, 82, 13, 158, 240, 229, 146, 152, 71, 67, 152, 107, 142, 44, 196, 232, 54, 36, 188, 124, 55, 50, 233, 162, 60, 143, 197, 182, 77, 110, 109, 87, 254, 90, 79, 17, 102, 226, 93, 222, 158, 110, 239, 210, 198, 179, 5, 50, 42, 156, 176, 5, 177, 27, 249, 68, 0, 187, 12, 115, 74, 112, 137, 39, 176, 122, 69, 69, 138, 17, 215, 146, 56, 43, 68, 4, 249, 214, 116, 40, 27, 97, 79, 13, 190, 147, 73, 27, 111, 70, 178, 119, 109, 108, 188, 243, 136, 192, 39, 30, 74, 240, 247, 103, 121, 55, 51, 207, 225, 5, 98, 186, 68, 147, 229, 160, 13, 92, 57, 193, 90, 130, 235, 169, 255, 92, 162, 111, 143, 244, 67, 83, 68, 23, 140, 96, 32, 91, 24, 238, 76, 85, 235, 104, 111, 221, 13, 159, 85, 162, 98, 242, 60, 137, 64, 25, 248, 161, 233, 176, 134, 117, 35, 128, 69, 199, 149, 178, 73, 219, 5, 27, 165, 40, 31, 28, 17, 2, 217, 119, 10, 80, 102, 140, 22, 214, 243, 96, 35, 87, 61, 225, 211, 101, 235, 249, 232, 211, 175, 52, 136, 197, 21, 125, 175, 194, 6, 252, 236, 9, 18, 139, 76, 85, 88, 173, 19, 238, 191, 220, 28, 29, 225, 9, 88, 23, 211, 214, 102, 232, 121, 143, 243, 133, 66, 152, 113, 159, 120, 114, 177, 77, 51, 44, 176, 78, 165, 41, 182, 156, 139, 101, 89, 0, 43, 60, 178, 117, 161, 19, 17, 29, 9, 71, 38, 75, 70, 176, 161, 253, 47, 35, 75, 129, 198, 163, 219, 120, 3, 49, 32, 70, 134, 81, 62, 62, 236, 194, 82, 106, 132, 113, 138, 5, 40, 178, 48, 80, 151, 204, 209, 117, 201, 208, 89, 209, 130, 50, 66, 137, 242, 219, 157, 9, 186, 112, 202, 119, 138, 43, 241, 249, 46, 200, 126, 31, 27, 3, 119, 210, 152, 232, 126, 119, 116, 239, 79, 245, 79, 189, 48, 234, 24, 193, 98, 172, 103, 103, 7, 188, 95, 183, 218, 250, 187, 230, 48, 173, 251, 206, 246, 244, 233, 56, 163, 21, 23, 155, 101, 135, 29, 94, 4, 27, 194, 130, 146, 177, 228, 245, 191, 85, 9, 243, 101, 174, 242, 230, 183, 221, 66, 169, 52, 217, 74, 73, 47, 16, 174, 199, 174, 236, 138, 59, 88, 131, 209, 190, 146, 212, 5, 126, 237, 23, 43, 112, 107, 85, 53, 245, 47, 214, 10, 165, 155, 170, 227, 242, 91, 253, 25, 151, 177, 80, 22, 69, 42, 197, 119, 193, 18, 70, 115, 36, 18, 118, 57, 93, 194, 23, 84, 154, 40, 66, 194, 238, 31, 241, 251, 215, 147, 250, 144, 65, 168, 67, 128, 213, 2, 210, 39, 193, 34, 4, 29, 111, 112, 25, 249, 169, 1, 157, 135, 246, 133, 148, 202, 202, 72, 208, 231, 115, 19, 123, 246, 9, 168, 182, 85, 181, 26, 184, 157, 236, 238, 146, 87, 141, 13, 30, 82, 23, 22, 76, 35, 123, 61, 53, 148, 248, 52, 49, 84, 72, 238, 109, 106, 69, 159, 230, 51, 229, 164, 61, 192, 192, 52, 172, 173, 121, 35, 209, 109, 154, 199, 51, 45, 255, 29, 66, 154, 251, 78, 14, 205, 6, 166, 20, 118, 225, 82, 242, 122, 89, 184, 105, 91, 232, 232, 36, 254, 8, 147, 188, 247, 201, 227, 123, 132, 66, 178, 130, 166, 246, 162, 213, 195, 204, 53, 230, 201, 219, 161, 254, 65, 134, 224, 52, 61, 92, 115, 135, 127, 130, 225, 130, 188, 60, 35, 146, 126, 246, 50, 216, 171, 206, 209, 193, 222, 29, 57, 236, 252, 61, 184, 236, 74, 180, 23, 197, 160, 46, 25, 22, 144, 114, 224, 53, 164, 147, 179, 190, 98, 200, 197, 50, 153, 163, 153, 240, 205, 73, 94, 129, 40, 225, 2, 132, 61, 241, 227, 99, 9, 206, 10, 244, 61, 16, 2, 204, 37, 103, 242, 104, 28, 132, 115, 153, 186, 27, 102, 215, 98, 254, 149, 188, 50, 52, 184, 139, 133, 54, 210, 81, 77, 215, 134, 70, 70, 56, 83, 64, 237, 5, 175, 232, 241, 64, 34, 237, 149, 117, 112, 136, 26, 240, 126, 71, 131, 27, 248, 73, 249, 150, 227, 212, 13, 141, 158, 95, 83, 46, 225, 74, 116, 112, 90, 252, 58, 102, 95, 58, 186, 138, 60, 204, 74, 0, 235, 103, 141, 117, 40, 48, 175, 208, 192, 30, 88, 253, 35, 1, 212, 172, 63, 176, 12, 149, 222, 34, 41, 71, 192, 86, 224, 88, 217, 16, 133, 235, 4, 70, 205, 25, 154, 138, 33, 243, 32, 176, 250, 65, 82, 107, 42, 184, 230, 159, 165, 30, 54, 62, 111, 235, 222, 214, 173, 232, 15, 22, 52, 10, 66, 205, 42, 11, 144, 212, 214, 45, 177, 229, 128, 5, 189, 248, 35, 169, 215, 78, 15, 149, 188, 162, 209, 253, 193, 239, 244, 183, 37, 233, 157, 190, 203, 172, 86, 163, 49, 91, 41, 166, 98, 137, 88, 31, 76, 157, 204, 185, 162, 36, 169, 111, 212, 107, 59, 47, 16, 193, 109, 235, 128, 230, 166, 239, 157, 14, 23, 13, 176, 237, 152, 255, 147, 93, 114, 117, 39, 23, 178, 75, 67, 183, 124, 38, 140, 121, 186, 74, 115, 178, 9, 197, 118, 1, 23, 222, 221, 151, 92, 64, 145, 130, 131, 245, 205, 21, 189, 155, 201, 244, 155, 239, 101, 67, 186, 249, 9, 55, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 192, 52, 174, 242, 81, 205, 211, 61, 25, 139, 159, 177, 105, 41, 30, 42, 213, 46, 197, 53, 167, 58, 7, 239, 29, 185, 82, 211, 68, 212, 184, 107, 226, 41, 43, 224, 22, 195, 136, 195, 83, 229, 114, 175, 66, 156, 29, 234, 244, 207, 2, 130, 205, 111, 77, 101, 218, 137, 131, 12, 134, 83, 223, 104, 127, 53, 221, 160, 131, 7, 177, 14, 230, 144, 57, 252, 186, 129, 17, 232, 197, 196, 98, 209, 1, 45, 125, 38, 79, 78, 79, 205, 86, 137, 34, 148, 236, 104, 255, 148, 126, 139, 170, 152, 81, 124, 241, 99, 85, 64, 219, 190, 41, 26, 241, 189, 46, 120, 146, 174, 125, 38, 89, 232, 191, 159, 41, 60, 59, 124, 3, 83, 90, 193, 179, 178, 218, 237, 71, 118, 84, 146, 132, 171, 138, 85, 203, 68, 215, 196, 179, 144, 14, 177, 7, 131, 178, 35, 178, 60, 195, 206, 133, 204, 114, 45, 244, 85, 215, 54, 6, 195, 13, 21, 169, 53, 170, 193, 40, 111, 41, 129, 135, 1, 7, 231, 11, 30, 182, 1, 49, 39, 153, 125, 42, 194, 181, 161, 31, 225, 12, 7, 203, 136, 56, 221, 249, 243, 10, 70, 40, 7, 185, 44, 130, 246, 110, 117, 80, 156, 16, 107, 9, 208, 52, 225, 196, 107, 78, 99, 182, 163, 75, 85, 211, 230, 155, 237, 90, 188, 158, 228, 168, 219, 214, 1, 214, 10, 208, 65, 24, 6, 106, 197, 31, 24, 182, 90, 212, 193, 164, 165, 72, 252, 129, 220, 23, 60, 110, 87, 37, 248, 212, 75, 104, 132, 28, 240, 211, 62, 28, 98, 56, 14, 84, 116, 201, 72, 203, 112, 226, 194, 235, 85, 186, 124, 193, 204, 158, 88, 88, 154, 237, 87, 112, 209, 204, 251, 167, 218, 9, 3, 92, 176, 47, 83, 94, 17, 116, 73, 210, 76, 89, 65, 53, 117, 81, 135, 24, 123, 72, 228, 209, 12, 130, 113, 64, 15, 0, 129, 145, 180, 246, 137, 98, 85, 142, 28, 11, 98, 31, 212, 141, 27, 126, 36, 194, 225, 96, 107, 28, 56, 46, 129, 86, 211, 202, 198, 8, 130, 145, 168, 251, 168, 47, 190, 124, 154, 7, 24, 236, 155, 6, 216, 2, 52, 183, 14, 81, 237, 145, 106, 163, 57, 70, 110, 201, 195, 76, 225, 169, 141, 27, 123, 4, 168, 127, 46, 127, 235, 142, 233, 238, 31, 216, 199, 11, 226, 248, 73, 60, 46, 31, 130, 42, 199, 120, 19, 114, 194, 175, 145, 98, 24, 241, 112, 251, 162, 211, 147, 73, 105, 44, 119, 124, 155, 203, 208, 30, 84, 236, 50, 175, 194, 84, 2, 84, 57, 101, 137, 115, 18, 205, 178, 85, 140, 239, 187, 40, 123, 255, 215, 212, 221, 248, 8, 108, 82, 221, 132, 14, 109, 202, 131, 101, 219, 111, 5, 104, 94, 147, 8, 157, 43, 127, 65, 229, 59, 138, 201, 160, 29, 119, 166, 145, 221, 160, 237, 117, 188, 140, 19, 233, 86, 27, 112, 176, 201, 67, 209, 58, 131, 86, 64, 101, 220, 165, 73, 191, 134, 42, 233, 90, 100, 18, 227, 209, 125, 238, 13, 77, 212, 120, 177, 12, 53, 15, 253, 142, 192, 182, 156, 74, 171, 128, 12, 35, 10, 156, 182, 209, 168, 84, 192, 114, 145, 152, 124, 207, 225, 128, 108, 54, 189, 60, 250, 115, 88, 184, 129, 7, 54, 68, 99, 212, 251, 57, 193, 136, 36, 125, 173, 9, 110, 84, 241, 59, 165, 113, 22, 152, 51, 85, 215, 160, 211, 164, 74, 19, 92, 36, 28, 182, 244, 9, 168, 250, 79, 123, 164, 160, 207, 240, 29, 29, 91, 38, 31, 188, 16, 228, 118, 149, 198, 198, 123, 14, 133, 20, 110, 176, 129, 138, 94, 248, 218, 77, 108, 191, 3, 141, 69, 248, 163, 99, 44, 87, 208, 18, 202, 33, 184, 40, 2, 222, 223, 120, 144, 93, 173, 140, 217, 214, 57, 15, 78, 141, 161, 248, 165, 4, 189, 14, 213, 23, 46, 113, 141, 18, 31, 137, 224, 228, 19, 62, 168, 70, 248, 204, 171, 125, 122, 155, 19, 50, 210, 89, 69, 6, 23, 241, 173, 182, 133, 86, 219, 241, 9, 215, 247, 155, 68, 18, 22, 107, 167, 120, 118, 169, 9, 221, 231, 153, 100, 199, 129, 43, 239, 122, 102, 79, 161, 133, 75, 74, 184, 210, 30, 175, 5, 20, 8, 48, 208, 5, 219, 33, 224, 96, 252, 1, 42, 19, 38, 147, 44, 197, 172, 222, 84, 156, 79, 217, 103, 46, 60, 174, 144, 121, 208, 111, 207, 54, 16, 163, 104, 156, 10, 207, 160, 151, 193, 121, 38, 251, 43, 200, 28, 137, 109, 22, 140, 17, 13, 95, 69, 119, 61, 222, 131, 92, 105, 130, 56, 96, 236, 209, 218, 51, 172, 213, 244, 44, 64, 60, 88, 192, 199, 41, 83, 141, 237, 224, 62, 187, 134, 251, 89, 48, 18, 12, 121, 63, 28, 218, 86, 160, 86, 109, 99, 206, 2, 236, 50, 26, 239, 237, 63, 12, 102, 84, 252, 215, 145, 131, 231, 49, 212, 54, 43, 99, 224, 120, 178, 36, 106, 99, 92, 77, 4, 176, 3, 99, 0, 188, 98, 168, 58, 123, 240, 159, 102, 55, 108, 176, 198, 49, 8, 141, 220, 122, 216, 43, 55, 35, 106, 133, 53, 123, 69, 84, 167, 23, 9, 209, 194, 29, 186, 63, 184, 71, 241, 49, 33, 47, 88, 39, 65, 91, 85, 92, 198, 126, 212, 129, 102, 167, 100, 174, 89, 228, 134, 42, 212, 208, 194, 252, 67, 150, 198, 132, 209, 16, 209, 249, 44, 238, 138, 179, 128, 92, 6, 197, 10, 134, 97, 232, 147, 219, 143, 72, 209, 83, 35, 210, 182, 162, 183, 213, 125, 47, 156, 218, 18, 194, 137, 234, 117, 231, 112, 250, 48, 146, 123, 141, 174, 61, 213, 177, 251, 162, 214, 211, 122, 171, 155, 211, 117, 228, 198, 235, 155, 225, 14, 85, 57, 54, 8, 168, 75, 216, 68, 135, 19, 133, 24, 26, 138, 111, 72, 0, 250, 101, 237, 246, 137, 8, 38, 83, 123, 237, 250, 104, 106, 31, 217, 235, 103, 177, 73, 174, 208, 233, 230, 69, 77, 161, 21, 10, 223, 157, 62, 232, 133, 80, 117, 214, 254, 247, 93, 53, 45, 130, 226, 118, 216, 149, 78, 143, 25, 30, 110, 134, 48, 72, 1, 107, 197, 211, 48, 235, 82, 179, 54, 95, 171, 91, 36, 188, 53, 85, 24, 216, 236, 79, 62, 90, 52, 157, 175, 171, 127, 132, 118, 187, 200, 5, 60, 22, 6, 117, 78, 242, 169, 102, 46, 74, 185, 188, 138, 221, 79, 49, 13, 247, 196, 176, 199, 53, 220, 208, 175, 132, 8, 186, 175, 76, 125, 227, 33, 44, 193, 209, 17, 52, 110, 227, 212, 139, 93, 154, 218, 220, 57, 5, 255, 119, 252, 7, 69, 145, 109, 118, 76, 45, 48, 20, 218, 123, 26, 193, 203, 254, 58, 206, 189, 91, 87, 28, 112, 27, 204, 145, 8, 8, 203, 83, 199, 179, 70, 32, 208, 8, 44, 44, 217, 69, 93, 32, 74, 13, 105, 100, 232, 134, 89, 67, 98, 52, 242, 113, 109, 36, 244, 169, 115, 146, 186, 48, 75, 128, 102, 149, 174, 100, 5, 87, 23, 88, 161, 184, 135, 198, 80, 194, 179, 150, 4, 182, 153, 124, 63, 34, 251, 63, 73, 37, 18, 188, 143, 151, 211, 2, 11, 182, 108, 6, 109, 9, 192, 85, 67, 251, 113, 129, 185, 10, 81, 246, 134, 57, 249, 181, 39, 2, 172, 177, 69, 221, 100, 77, 234, 159, 108, 192, 187, 22, 239, 204, 26, 94, 199, 59, 193, 124, 97, 107, 238, 43, 72, 36, 172, 173, 100, 3, 161, 92, 128, 18, 51, 253, 186, 99, 120, 241, 227, 110, 163, 21, 128, 76, 0, 148, 199, 82, 165, 71, 150, 145, 226, 233, 70, 52, 185, 206, 113, 110, 186, 143, 46, 101, 113, 96, 134, 203, 115, 46, 55, 192, 157, 132, 213, 103, 74, 56, 60, 226, 172, 157, 32, 97, 223, 104, 48, 125, 83, 201, 108, 78, 237, 12, 215, 156, 61, 116, 134, 118, 63, 200, 81, 7, 47, 77, 30, 241, 4, 137, 72, 8, 91, 145, 131, 254, 195, 186, 45, 197, 110, 40, 219, 97, 152, 169, 225, 55, 192, 230, 111, 60, 241, 161, 50, 177, 243, 51, 234, 106, 27, 142, 1, 189, 193, 154, 186, 97, 14, 148, 58, 207, 191, 184, 68, 201, 243, 178, 192, 239, 119, 184, 134, 119, 241, 66, 223, 13, 66, 95, 251, 229, 94, 98, 209, 155, 193, 245, 65, 137, 119, 28, 21, 248, 157, 7, 38, 235, 152, 149, 26, 232, 137, 163, 244, 168, 119, 255, 98, 154, 244, 184, 192, 128, 41, 22, 106, 88, 67, 221, 88, 250, 13, 146, 186, 159, 222, 62, 120, 192, 209, 111, 237, 74, 128, 194, 125, 45, 48, 161, 135, 15, 178, 28, 138, 107, 200, 198, 196, 70, 193, 133, 132, 133, 166, 177, 202, 99, 13, 217, 192, 252, 46, 121, 76, 53, 138, 194, 89, 188, 116, 79, 121, 226, 110, 5, 152, 64, 100, 50, 210, 195, 168, 80, 1, 241, 155, 92, 104, 113, 111, 242, 97, 185, 175, 105, 220, 50, 208, 175, 77, 147, 100, 181, 2, 190, 96, 109, 124, 113, 30, 81, 143, 151, 17, 71, 202, 252, 10, 155, 190, 218, 183, 185, 200, 67, 199, 111, 150, 251, 13, 147, 58, 133, 186, 141, 249, 64, 223, 148, 110, 28, 236, 49, 22, 57, 17, 73, 146, 239, 146, 30, 234, 88, 167, 108, 235, 12, 88, 131, 33, 37, 202, 137, 81, 186, 89, 6, 6, 72, 210, 191, 90, 124, 235, 98, 144, 97, 245, 49, 67, 169, 106, 190, 157, 56, 227, 0, 196, 55, 177, 246, 5, 171, 178, 130, 214, 132, 191, 0, 218, 236, 129, 191, 155, 129, 241, 33, 208, 156, 254, 132, 121, 163, 189, 231, 51, 180, 21, 190, 87, 29, 5, 102, 185, 218, 136, 248, 113, 65, 209, 238, 177, 109, 248, 167, 189, 241, 181, 115, 24, 89, 95, 67, 115, 211, 244, 218, 63, 79, 148, 168, 238, 47, 110, 82, 130, 96, 55, 120, 139, 149, 120, 204, 85, 249, 232, 88, 139, 152, 111, 170, 143, 209, 129, 105, 87, 50, 12, 192, 50, 227, 191, 29, 194, 102, 243, 193, 142, 62, 49, 248, 188, 92, 11, 60, 228, 133, 100, 209, 8, 246, 85, 143, 169, 197, 81, 169, 72, 51, 102, 19, 210, 249, 185, 78, 200, 179, 42, 40, 111, 94, 84, 221, 156, 90, 2, 216, 95, 53, 92, 217, 172, 192, 97, 130, 77, 87, 163, 65, 112, 45, 250, 81, 131, 95, 4, 68, 136, 139, 240, 43, 141, 251, 195, 36, 31, 179, 197, 10, 76, 230, 247, 154, 134, 215, 76, 134, 240, 248, 151, 186, 16, 253, 99, 129, 147, 47, 55, 53, 116, 139, 65, 64, 44, 29, 168, 200, 169, 8, 118, 38, 100, 162, 124, 48, 46, 137, 246, 255, 39, 156, 70, 228, 139, 6, 35, 67, 229, 235, 18, 114, 66, 206, 217, 236, 11, 86, 119, 106, 120, 177, 150, 118, 52, 6, 204, 14, 4, 196, 40, 149, 120, 162, 11, 143, 168, 138, 248, 243, 62, 123, 15, 78, 255, 23, 100, 206, 115, 143, 144, 114, 210, 165, 115, 161, 73, 211, 146, 104, 185, 127, 166, 117, 50, 63, 25, 242, 101, 119, 219, 108, 208, 71, 204, 116, 138, 226, 175, 178, 243, 52, 238, 124, 85, 161, 173, 70, 233, 141, 108, 161, 84, 14, 226, 235, 12, 28, 16, 249, 79, 198, 120, 192, 204, 17, 138, 231, 159, 81, 25, 130, 216, 29, 246, 62, 212, 113, 237, 67, 131, 145, 221, 189, 143, 137, 244, 17, 214, 165, 13, 205, 92, 172, 241, 8, 205, 146, 131, 246, 97, 210, 91, 107, 167, 251, 32, 155, 208, 141, 74, 184, 228, 40, 237, 171, 12, 29, 152, 31, 144, 168, 66, 216, 171, 187, 23, 118, 55, 159, 194, 137, 51, 119, 14, 95, 153, 62, 186, 38, 69, 119, 144, 155, 50, 15, 54, 37, 88, 32, 225, 3, 105, 136, 254, 28, 104, 210, 231, 16, 238, 109, 37, 117, 150, 0, 253, 121, 33, 14, 83, 178, 187, 112, 57, 96, 197, 72, 0, 164, 107, 236, 45, 138, 56, 214, 34, 5, 141, 86, 227, 107, 107, 110, 121, 191, 132, 151, 203, 91, 158, 82, 180, 65, 249, 109, 94, 169, 45, 25, 99, 86, 87, 79, 140, 44, 141, 40, 166, 128, 206, 146, 244, 31, 200, 192, 125, 35, 161, 202, 241, 225, 82, 44, 114, 189, 42, 135, 50, 99, 166, 200, 107, 92, 178, 232, 4, 88, 33, 27, 122, 192, 174, 138, 147, 154, 54, 111, 75, 46, 159, 73, 34, 154, 255, 102, 16, 123, 161, 222, 172, 154, 208, 206, 23, 69, 76, 84, 152, 153, 178, 151, 12, 41, 104, 98, 214, 142, 202, 114, 183, 30, 242, 8, 237, 182, 133, 229, 57, 209, 32, 164, 139, 247, 137, 6, 42, 127, 100, 170, 141, 113, 52, 13, 52, 137, 66, 237, 43, 61, 149, 191, 124, 73, 232, 14, 109, 168, 151, 164, 237, 141, 6, 228, 197, 168, 143, 4, 171, 113, 28, 46, 228, 101, 111, 198, 205, 32, 110, 35, 49, 127, 95, 207, 11, 155, 221, 27, 85, 188, 14, 127, 211, 19, 208, 139, 67, 182, 153, 229, 29, 214, 156, 191, 29, 10, 66, 187, 194, 168, 194, 246, 234, 118, 170, 194, 82, 179, 242, 24, 58, 142, 24, 232, 103, 109, 114, 210, 10, 237, 8, 201, 66, 125, 245, 52, 129, 60, 10, 211, 199, 73, 152, 116, 175, 216, 111, 213, 141, 162, 172, 78, 204, 92, 182, 12, 158, 165, 129, 98, 54, 130, 236, 12, 47, 203, 63, 133, 20, 225, 128, 178, 150, 84, 94, 228, 236, 54, 44, 68, 65, 204, 84, 216, 7, 253, 22, 254, 225, 203, 108, 200, 59, 166, 91, 70, 119, 185, 166, 175, 76, 129, 175, 203, 58, 205, 39, 126, 15, 239, 104, 20, 95, 127, 161, 196, 28, 88, 51, 11, 232, 44, 119, 45, 25, 32, 240, 237, 147, 222, 74, 129, 161, 39, 7, 235, 65, 113, 108, 75, 194, 117, 54, 46, 48, 252, 23, 145, 253, 146, 26, 193, 71, 31, 93, 190, 129, 74, 30, 64, 22, 204, 73, 25, 56, 130, 29, 202, 84, 67, 84, 150, 164, 154, 229, 67, 49, 125, 31, 114, 44, 74, 83, 199, 26, 129, 218, 21, 91, 180, 169, 142, 104, 114, 150, 34, 97, 39, 153, 115, 240, 90, 71, 179, 198, 137, 15, 66, 82, 243, 142, 188, 61, 73, 39, 162, 29, 127, 183, 2, 204, 3, 194, 51, 47, 29, 7, 155, 6, 98, 225, 25, 98, 224, 30, 47, 152, 184, 23, 80, 115, 202, 48, 161, 23, 137, 32, 230, 210, 45, 42, 173, 117, 116, 181, 11, 250, 108, 100, 129, 45, 98, 77, 208, 215, 113, 103, 107, 140, 17, 213, 253, 202, 22, 158, 153, 224, 216, 53, 131, 125, 60, 138, 229, 199, 236, 168, 121, 174, 126, 204, 113, 113, 66, 147, 2, 58, 143, 50, 120, 123, 27, 55, 132, 118, 255, 152, 128, 137, 97, 145, 144, 164, 102, 71, 95, 59, 57, 109, 99, 172, 77, 159, 69, 81, 107, 38, 58, 81, 173, 30, 17, 123, 58, 208, 159, 212, 204, 195, 146, 48, 129, 223, 62, 74, 34, 161, 188, 185, 150, 124, 2, 175, 205, 241, 202, 161, 7, 50, 19, 78, 41, 248, 70, 9, 211, 53, 242, 147, 222, 158, 230, 133, 149, 90, 83, 177, 133, 78, 189, 246, 129, 242, 39, 93, 171, 33, 26, 131, 211, 140, 34, 230, 172, 138, 61, 193, 246, 253, 205, 210, 92, 248, 181, 219, 3, 47, 200, 24, 91, 124, 122, 15, 213, 192, 115, 177, 196, 142, 141, 121, 98, 28, 202, 32, 156, 46, 6, 34, 21, 164, 212, 186, 205, 85, 161, 61, 176, 237, 250, 33, 184, 250, 248, 154, 133, 16, 186, 207, 2, 199, 145, 74, 196, 234, 201, 66, 76, 221, 85, 66, 241, 112, 97, 15, 52, 249, 211, 90, 132, 14, 74, 167, 81, 28, 184, 221, 51, 158, 96, 161, 144, 80, 7, 154, 174, 61, 234, 66, 93, 40, 229, 187, 186, 239, 121, 90, 137, 103, 229, 48, 116, 19, 212, 231, 195, 114, 57, 28, 234, 149, 211, 73, 204, 202, 52, 71, 112, 132, 143, 103, 10, 83, 205, 185, 251, 62, 174, 243, 32, 121, 28, 252, 92, 167, 231, 119, 110, 129, 14, 233, 37, 69, 120, 15, 90, 41, 124, 169, 196, 161, 137, 0, 217, 44, 15, 93, 212, 239, 58, 181, 20, 176, 159, 162, 74, 229, 41, 99, 14, 145, 65, 31, 224, 179, 30, 132, 226, 71, 18, 132, 48, 78, 33, 247, 86, 205, 28, 197, 175, 204, 126, 44, 140, 66, 13, 112, 183, 84, 3, 143, 214, 80, 133, 126, 145, 143, 34, 77, 23, 146, 177, 165, 151, 70, 240, 223, 116, 115, 25, 212, 248, 27, 113, 47, 200, 90, 132, 56, 26, 94, 0, 76, 138, 174, 112, 47, 54, 107, 193, 149, 73, 53, 142, 218, 91, 57, 238, 46, 178, 154, 71, 19, 189, 166, 196, 94, 170, 218, 133, 118, 205, 225, 108, 153, 24, 237, 27, 111, 37, 90, 14, 100, 15, 229, 18, 128, 213, 4, 155, 143, 166, 39, 142, 206, 78, 189, 91, 166, 159, 129, 30, 7, 139, 72, 227, 164, 164, 161, 100, 94, 162, 55, 49, 248, 189, 179, 206, 146, 255, 91, 179, 82, 6, 138, 24, 141, 171, 146, 217, 50, 135, 32, 203, 177, 27, 91, 24, 204, 252, 137, 121, 90, 226, 43, 35, 226, 246, 38, 72, 212, 172, 188, 173, 69, 107, 148, 163, 88, 125, 144, 127, 44, 41, 190, 71, 0, 88, 70, 175, 189, 233, 55, 206, 220, 185, 192, 197, 165, 193, 87, 146, 249, 94, 72, 59, 57, 43, 52, 203, 194, 56, 221, 21, 130, 183, 78, 75, 154, 67, 18, 74, 151, 201, 38, 202, 108, 61, 8, 29, 98, 62, 172, 77, 155, 227, 189, 10, 116, 179, 50, 165, 152, 74, 209, 96, 200, 230, 180, 188, 191, 165, 245, 108, 36, 26, 37, 17, 167, 125, 120, 111, 236, 211, 66, 183, 1, 251, 79, 34, 26, 121, 28, 136, 33, 149, 17, 174, 43, 206, 137, 77, 10, 173, 243, 111, 73, 106, 241, 252, 70, 43, 147, 120, 40, 229, 121, 201, 69, 195, 63, 43, 87, 45, 203, 174, 214, 181, 35, 46, 226, 47, 44, 56, 123, 56, 73, 166, 252, 144, 150, 100, 73, 156, 177, 225, 105, 161, 41, 226, 162, 167, 132, 45, 62, 211, 104, 16, 89, 173, 255, 70, 194, 254, 186, 130, 50, 135, 121, 197, 147, 84, 97, 49, 107, 26, 164, 189, 151, 234, 39, 72, 117, 21, 92, 43, 119, 110, 45, 209, 172, 192, 131, 45, 2, 99, 179, 131, 248, 69, 144, 223, 23, 151, 0, 196, 64, 161, 172, 49, 56, 114, 108, 68, 134, 160, 209, 154, 30, 240, 206, 156, 140, 80, 70, 34, 218, 43, 187, 80, 209, 26, 166, 69, 4, 240, 135, 148, 68, 64, 170, 244, 134, 32, 69, 87, 50, 135, 112, 91, 71, 0, 134, 245, 80, 30, 27, 12, 234, 212, 223, 168, 27, 78, 19, 126, 77, 138, 121, 75, 51, 47, 44, 5, 253, 227, 88, 41, 226, 189, 183, 124, 184, 68, 210, 6, 171, 77, 78, 221, 154, 78, 229, 88, 147, 147, 21, 119, 13, 251, 71, 89, 237, 224, 152, 21, 88, 234, 234, 130, 74, 119, 115, 27, 8, 139, 155, 243, 195, 29, 196, 213, 5, 161, 117, 41, 246, 92, 204, 143, 186, 229, 59, 18, 76, 171, 224, 152, 224, 82, 193, 115, 208, 9, 84, 177, 130, 178, 122, 251, 216, 39, 253, 73, 199, 154, 88, 236, 215, 219, 154, 195, 11, 235, 165, 217, 212, 248, 65, 43, 0, 112, 35, 39, 18, 238, 212, 151, 187, 53, 30, 235, 202, 217, 163, 177, 80, 70, 97, 90, 98, 174, 5, 163, 246, 219, 124, 216, 253, 43, 114, 108, 69, 2, 242, 77, 85, 51, 91, 7, 226, 100, 238, 213, 183, 55, 47, 222, 65, 222, 75, 49, 102, 29, 20, 10, 103, 232, 107, 0, 27, 247, 112, 177, 121, 185, 250, 215, 18, 78, 186, 87, 112, 147, 225, 75, 236, 241, 197, 161, 123, 146, 132, 217, 240, 98, 201, 17, 53, 82, 60, 237, 232, 92, 177, 174, 1, 51, 12, 54, 226, 215, 58, 61, 186, 15, 135, 103, 195, 176, 10, 74, 110, 97, 106, 100, 112, 153, 16, 115, 248, 136, 36, 43, 245, 26, 211, 246, 143, 10, 112, 14, 176, 86, 8, 62, 93, 100, 135, 160, 125, 244, 49, 17, 192, 63, 42, 110, 36, 61, 93, 14, 16, 41, 98, 232, 84, 222, 245, 155, 24, 210, 135, 16, 84, 204, 214, 83, 67, 255, 217, 117, 85, 99, 107, 3, 247, 112, 24, 143, 221, 99, 49, 222, 12, 113, 185, 146, 231, 24, 10, 163, 80, 92, 208, 40, 35, 42, 4, 179, 164, 133, 228, 238, 37, 194, 173, 2, 132, 221, 127, 26, 108, 192, 48, 29, 100, 252, 150, 41, 204, 9, 103, 1, 14, 158, 249, 155, 88, 236, 122, 184, 21, 190, 12, 42, 239, 63, 211, 105, 218, 77, 199, 63, 86, 126, 40, 209, 229, 23, 173, 73, 180, 54, 17, 136, 94, 9, 80, 145, 207, 18, 196, 81, 163, 232, 195, 15, 97, 189, 3, 77, 171, 13, 209, 115, 43, 111, 139, 101, 26, 181, 212, 49, 27, 98, 60, 243, 94, 127, 50, 134, 131, 80, 13, 83, 89, 166, 11, 230, 42, 243, 219, 131, 143, 64, 179, 1, 44, 206, 1, 25, 71, 47, 102, 1, 174, 91, 96, 145, 66, 205, 155, 46, 175, 197, 35, 134, 19, 142, 96, 224, 80, 249, 187, 203, 133, 189, 178, 243, 148, 190, 210, 96, 235, 209, 39, 47, 228, 34, 95, 211, 22, 212, 179, 144, 17, 7, 167, 105, 181, 197, 163, 21, 92, 227, 106, 99, 97, 69, 82, 75, 81, 252, 134, 112, 88, 12, 199, 223, 255, 127, 120, 203, 252, 45, 155, 20, 111, 208, 148, 38, 62, 26, 44, 198, 171, 101, 105, 55, 59, 34, 149, 250, 144, 241, 173, 52, 152, 11, 206, 218, 250, 31, 106, 194, 66, 21, 172, 43, 23, 96, 152, 74, 41, 111, 46, 57, 67, 46, 115, 157, 120, 32, 244, 181, 120, 138, 172, 192, 72, 145, 198, 4, 153, 118, 250, 158, 115, 197, 143, 215, 34, 193, 194, 184, 38, 232, 194, 11, 238, 179, 12, 171, 247, 147, 122, 216, 224, 15, 240, 70, 64, 139, 209, 176, 39, 37, 185, 63, 97, 103, 177, 114, 120, 230, 242, 13, 34, 185, 145, 67, 129, 107, 21, 250, 38, 222, 4, 102, 72, 61, 149, 25, 82, 132, 101, 245, 189, 223, 10, 48, 15, 181, 35, 98, 9, 193, 88, 8, 9, 178, 105, 94, 34, 146, 236, 134, 168, 46, 201, 101, 93, 30, 11, 6, 30, 76, 87, 11, 46, 168, 244, 47, 150, 194, 127, 252, 157, 124, 161, 197, 169, 21, 17, 224, 26, 55, 22, 112, 96, 0, 46, 220, 143, 129, 166, 108, 155, 239, 158, 186, 125, 240, 44, 54, 141, 156, 129, 184, 216, 180, 189, 158, 14, 197, 64, 97, 152, 154, 39, 159, 106, 74, 166, 252, 70, 203, 206, 30, 218, 69, 26, 139, 113, 26, 68, 177, 99, 237, 180, 12, 66, 108, 95, 8, 136, 80, 81, 206, 131, 94, 203, 20, 229, 54, 14, 70, 50, 176, 87, 128, 171, 187, 37, 118, 77, 147, 114, 186, 163, 3, 198, 64, 85, 226, 183, 5, 182, 14, 213, 237, 27, 89, 154, 51, 218, 52, 253, 88, 56, 106, 3, 52, 10, 165, 125, 60, 174, 246, 189, 50, 27, 253, 116, 62, 247, 131, 198, 18, 119, 202, 10, 60, 233, 29, 6, 46, 39, 204, 152, 116, 182, 243, 99, 52, 230, 84, 207, 220, 58, 27, 222, 198, 85, 142, 186, 46, 182, 163, 65, 94, 109, 13, 50, 127, 209, 124, 50, 2, 55, 128, 139, 183, 23, 15, 168, 159, 36, 109, 138, 41, 12, 175, 132, 224, 65, 70, 52, 80, 2, 179, 46, 220, 218, 110, 187, 70, 230, 200, 212, 235, 95, 35, 160, 155, 161, 34, 168, 200, 173, 13, 3, 229, 241, 25, 186, 115, 182, 157, 24, 88, 100, 80, 207, 59, 128, 100, 106, 141, 146, 170, 121, 110, 112, 25, 5, 26, 101, 107, 30, 17, 72, 177, 162, 164, 54, 100, 210, 196, 191, 71, 5, 236, 4, 55, 242, 132, 64, 101, 37, 124, 222, 15, 39, 229, 111, 76, 210, 171, 236, 7, 93, 14, 216, 248, 45, 79, 218, 85, 211, 199, 250, 104, 33, 143, 222, 15, 88, 238, 164, 172, 135, 2, 101, 11, 255, 112, 8, 238, 139, 63, 190, 149, 130, 215, 130, 110, 68, 83, 56, 239, 253, 120, 96, 196, 38, 198, 153, 137, 110, 157, 87, 94, 69, 70, 176, 197, 220, 237, 73, 176, 217, 112, 186, 20, 16, 151, 251, 244, 204, 120, 42, 216, 194, 250, 127, 191, 45, 87, 138, 204, 145, 110, 119, 217, 185, 242, 50, 47, 102, 253, 107, 242, 121, 122, 204, 10, 232, 48, 214, 183, 190, 152, 249, 7, 228, 139, 181, 252, 84, 123, 199, 146, 175, 30, 152, 54, 4, 162, 26, 19, 103, 112, 216, 130, 148, 218, 40, 215, 53, 114, 87, 174, 194, 30, 148, 70, 183, 213, 103, 2, 24, 161, 173, 212, 50, 52, 10, 46, 252, 205, 46, 192, 187, 105, 16, 187, 193, 255, 182, 92, 222, 209, 193, 118, 129, 137, 218, 80, 242, 213, 89, 122, 224, 65, 158, 65, 104, 40, 15, 135, 86, 159, 63, 139, 29, 195, 230, 20, 180, 82, 142, 98, 48, 228, 204, 22, 199, 47, 96, 30, 125, 192, 222, 237, 243, 115, 222, 31, 182, 150, 172, 42, 17, 232, 108, 142, 241, 119, 143, 215, 117, 221, 37, 188, 136, 68, 166, 53, 120, 198, 16, 59, 74, 184, 175, 120, 42, 72, 102, 137, 171, 56, 141, 189, 173, 89, 128, 12, 114, 241, 189, 111, 136, 73, 132, 123, 93, 249, 199, 130, 191, 251, 1, 251, 208, 58, 108, 177, 41, 72, 20, 202, 120, 187, 38, 8, 163, 75, 63, 139, 91, 159, 26, 233, 162, 204, 152, 80, 228, 52, 96, 166, 8, 250, 206, 115, 97, 28, 220, 48, 59, 19, 66, 12, 137, 203, 7, 95, 23, 107, 3, 185, 110, 57, 39, 117, 13, 68, 70, 54, 238, 106, 230, 167, 242, 216, 208, 42, 154, 110, 41, 188, 51, 156, 153, 0, 199, 221, 58, 21, 57, 68, 24, 114, 67, 93, 90, 0, 252, 188, 145, 7, 24, 55, 189, 176, 50, 106, 154, 57, 17, 95, 223, 93, 17, 125, 163, 80, 18, 22, 229, 212, 90, 138, 222, 86, 8, 125, 63, 229, 145, 190, 200, 10, 39, 176, 9, 182, 211, 236, 122, 29, 134, 1, 186, 231, 227, 215, 194, 42, 240, 7, 196, 0, 179, 211, 150, 193, 21, 137, 84, 32, 92, 218, 185, 7, 200, 34, 179, 138, 244, 114, 167, 159, 23, 51, 124, 60, 253, 124, 75, 8, 65, 123, 59, 88, 219, 250, 242, 250, 112, 27, 222, 143, 17, 107, 48, 44, 172, 13, 223, 78, 218, 107, 93, 235, 5, 208, 23, 179, 176, 38, 213, 101, 154, 64, 132, 134, 83, 63, 77, 229, 126, 65, 142, 245, 167, 180, 96, 51, 24, 148, 105, 243, 63, 186, 163, 124, 34, 50, 179, 29, 215, 142, 5, 239, 54, 7, 196, 36, 81, 188, 247, 192, 3, 244, 124, 253, 168, 19, 233, 109, 231, 192, 175, 145, 117, 76, 63, 70, 62, 40, 182, 78, 254, 130, 186, 51, 198, 159, 107, 19, 156, 134, 103, 50, 90, 103, 74, 56, 89, 219, 199, 9, 95, 82, 84, 194, 128, 42, 20, 199, 148, 228, 7, 118, 119, 197, 45, 128, 9, 170, 208, 53, 183, 193, 219, 5, 217, 212, 134, 223, 36, 133, 92, 186, 235, 96, 221, 117, 0, 193, 177, 162, 117, 175, 70, 109, 31, 153, 192, 154, 149, 154, 14, 97, 150, 111, 227, 28, 62, 28, 87, 9, 143, 179, 167, 61, 34, 56, 49, 214, 103, 226, 6, 252, 32, 41, 67, 251, 82, 211, 79, 59, 118, 84, 13, 186, 17, 210, 208, 173, 195, 188, 134, 107, 74, 31, 134, 203, 90, 191, 112, 36, 15, 24, 25, 235, 139, 143, 62, 206, 200, 184, 140, 76, 38, 33, 145, 111, 208, 150, 137, 130, 192, 60, 198, 200, 136, 65, 8, 120, 228, 137, 230, 157, 86, 120, 28, 249, 236, 246, 108, 236, 190, 181, 14, 130, 11, 117, 191, 234, 124, 3, 114, 238, 202, 204, 12, 64, 157, 68, 242, 69, 222, 71, 38, 20, 167, 248, 156, 18, 118, 68, 41, 139, 228, 235, 148, 91, 226, 42, 148, 22, 166, 232, 244, 29, 159, 154, 36, 142, 96, 176, 49, 183, 130, 138, 26, 37, 220, 156, 202, 183, 34, 131, 245, 174, 136, 48, 154, 230, 37, 118, 121, 68, 231, 79, 63, 221, 46, 137, 160, 179, 87, 17, 218, 214, 63, 102, 102, 99, 169, 198, 113, 33, 76, 13, 61, 36, 89, 148, 49, 134, 239, 253, 12, 242, 28, 5, 21, 143, 242, 106, 146, 125, 164, 137, 207, 95, 235, 57, 211, 192, 118, 224, 242, 249, 16, 83, 56, 41, 181, 124, 108, 16, 28, 185, 71, 171, 15, 164, 118, 198, 66, 198, 194, 107, 83, 84, 163, 186, 219, 43, 221, 9, 3, 20, 103, 40, 59, 249, 24, 216, 106, 16, 99, 168, 109, 128, 169, 57, 46, 158, 81, 167, 201, 255, 62, 103, 14, 62, 238, 99, 254, 210, 106, 23, 120, 215, 2, 3, 73, 251, 237, 135, 128, 128, 206, 101, 77, 245, 27, 70, 53, 196, 81, 223, 13, 0, 204, 10, 222, 12, 164, 202, 100, 79, 25, 249, 121, 215, 148, 225, 91, 127, 75, 75, 163, 110, 205, 5, 204, 177, 254, 134, 245, 217, 178, 64, 239, 106, 55, 124, 16, 80, 124, 16, 81, 169, 61, 200, 221, 24, 221, 18, 233, 230, 164, 121, 212, 126, 79, 2, 216, 164, 249, 41, 255, 39, 98, 231, 12, 123, 13, 116, 220, 172, 166, 89, 112, 113, 250, 61, 176, 153, 84, 225, 187, 162, 79, 65, 106, 221, 173, 209, 157, 70, 33, 75, 158, 110, 152, 39, 200, 89, 91, 89, 253, 126, 84, 27, 158, 181, 101, 249, 32, 129, 198, 38, 144, 92, 64, 112, 208, 113, 60, 212, 72, 138, 49, 82, 95, 183, 174, 225, 77, 53, 121, 211, 223, 131, 161, 148, 220, 88, 131, 151, 69, 208, 240, 49, 163, 151, 121, 50, 79, 129, 137, 98, 57, 18, 33, 202, 150, 120, 255, 99, 34, 54, 85, 204, 172, 120, 77, 42, 123, 242, 129, 92, 196, 78, 101, 98, 25, 146, 73, 186, 132, 227, 246, 96, 236, 208, 63, 50, 90, 183, 134, 219, 143, 100, 54, 175, 20, 172, 107, 171, 169, 199, 50, 110, 252, 135, 93, 169, 144, 100, 236, 91, 122, 111, 40, 196, 143, 73, 177, 56, 50, 27, 21, 249, 185, 212, 182, 40, 134, 197, 187, 55, 165, 125, 48, 132, 76, 242, 184, 173, 177, 111, 150, 67, 58, 189, 122, 152, 228, 51, 241, 130, 42, 113, 112, 62, 70, 131, 4, 23, 177, 114, 212, 125, 157, 28, 8, 238, 223, 158, 211, 172, 145, 188, 65, 125, 62, 45, 220, 124, 226, 100, 34, 36, 153, 93, 76, 157, 89, 219, 60, 42, 88, 68, 158, 155, 181, 124, 242, 72, 167, 74, 56, 176, 56, 114, 203, 54, 170, 85, 155, 235, 79, 29, 201, 71, 124, 181, 127, 180, 139, 147, 47, 167, 26, 18, 67, 141, 150, 37, 197, 6, 170, 96, 68, 89, 209, 246, 182, 183, 53, 68, 239, 126, 147, 50, 210, 34, 248, 246, 109, 34, 41, 213, 229, 134, 154, 97, 241, 132, 17, 162, 180, 74, 151, 253, 150, 69, 251, 151, 63, 192, 219, 79, 253, 212, 137, 234, 196, 133, 215, 211, 147, 128, 54, 85, 93, 202, 30, 168, 167, 128, 125, 150, 188, 250, 23, 195, 249, 52, 179, 26, 207, 129, 227, 68, 78, 56, 2, 17, 86, 220, 89, 99, 19, 20, 173, 57, 203, 140, 66, 231, 27, 69, 214, 238, 201, 134, 89, 102, 254, 85, 249, 132, 115, 51, 39, 65, 184, 199, 187, 14, 44, 6, 217, 16, 227, 116, 185, 66, 201, 188, 95, 66, 178, 243, 103, 79, 144, 147, 139, 59, 123, 238, 28, 18, 202, 166, 75, 59, 246, 190, 150, 75, 73, 182, 251, 132, 15, 248, 96, 112, 253, 41, 3, 203, 44, 141, 147, 255, 69, 85, 78, 129, 60, 145, 81, 166, 224, 131, 132, 215, 210, 169, 5, 136, 178, 23, 30, 139, 153, 106, 40, 54, 139, 244, 214, 43, 132, 229, 221, 58, 81, 81, 57, 190, 168, 255, 114, 63, 122, 173, 6, 136, 110, 159, 188, 50, 188, 91, 56, 185, 99, 107, 139, 120, 176, 228, 142, 146, 209, 96, 27, 133, 77, 69, 254, 114, 99, 194, 195, 4, 80, 36, 220, 147, 252, 207, 142, 66, 65, 64, 226, 63, 85, 218, 66, 125, 108, 197, 49, 143, 59, 43, 182, 0, 253, 169, 234, 209, 57, 90, 190, 234, 14, 25, 237, 62, 155, 188, 246, 92, 78, 241, 21, 154, 242, 201, 59, 16, 147, 73, 252, 52, 13, 175, 51, 158, 248, 118, 159, 4, 186, 101, 250, 170, 10, 16, 135, 251, 224, 114, 97, 61, 25, 102, 23, 74, 58, 118, 158, 32, 74, 115, 104, 240, 131, 42, 187, 155, 134, 209, 171, 225, 85, 13, 71, 252, 156, 81, 126, 72, 110, 45, 207, 84, 113, 187, 61, 152, 107, 111, 80, 105, 35, 104, 81, 245, 68, 28, 51, 67, 212, 172, 99, 191, 248, 217, 91, 186, 232, 145, 201, 135, 56, 164, 52, 127, 137, 111, 186, 6, 164, 236, 112, 31, 232, 75, 224, 58, 209, 31, 205, 204, 46, 180, 127, 215, 44, 45, 13, 147, 165, 245, 241, 162, 178, 249, 226, 241, 113, 104, 80, 175, 59, 1, 43, 12, 25, 255, 146, 70, 208, 140, 140, 225, 122, 125, 181, 239, 73, 89, 5, 107, 9, 241, 8, 16, 223, 203, 176, 57, 33, 4, 115, 216, 80, 155, 249, 103, 241, 188, 44, 216, 37, 115, 171, 104, 154, 145, 134, 183, 58, 141, 141, 178, 123, 166, 222, 67, 68, 154, 167, 52, 235, 31, 112, 206, 223, 53, 6, 183, 5, 146, 93, 226, 30, 73, 237, 197, 140, 19, 34, 104, 116, 213, 152, 6, 75, 215, 218, 214, 66, 101, 19, 72, 244, 9, 81, 57, 43, 202, 165, 46, 36, 100, 31, 15, 218, 44, 181, 120, 172, 25, 99, 242, 188, 3, 83, 202, 190, 27, 251, 130, 200, 101, 175, 176, 105, 39, 227, 210, 240, 121, 137, 42, 27, 128, 5, 30, 234, 109, 232, 77, 59, 100, 180, 107, 5, 215, 28, 55, 228, 186, 224, 16, 156, 182, 238, 181, 59, 124, 105, 117, 32, 66, 83, 110, 109, 112, 68, 95, 77, 121, 139, 94, 176, 190, 6, 58, 109, 213, 214, 24, 253, 72, 61, 86, 209, 20, 88, 36, 146, 179, 79, 168, 66, 209, 168, 48, 253, 177, 239, 139, 166, 213, 72, 242, 160, 36, 254, 135, 57, 207, 55, 198, 205, 150, 198, 54, 140, 247, 242, 52, 106, 132, 71, 67, 233, 29, 181, 247, 189, 36, 48, 232, 111, 130, 149, 234, 243, 241, 165, 66, 221, 64, 173, 207, 0, 69, 201, 111, 209, 157, 16, 56, 217, 29, 157, 106, 232, 206, 148, 110, 71, 113, 29, 228, 195, 57, 249, 181, 71, 203, 211, 131, 64, 92, 141, 89, 58, 210, 70, 246, 227, 146, 137, 63, 41, 250, 187, 56, 160, 17, 174, 45, 28, 245, 204, 63, 18, 174, 162, 53, 208, 121, 187, 1, 121, 46, 50, 245, 207, 140, 5, 186, 237, 72, 158, 163, 44, 143, 197, 127, 34, 160, 41, 242, 108, 220, 123, 138, 205, 164, 23, 164, 18, 117, 123, 153, 22, 150, 73, 141, 43, 176, 88, 251, 198, 143, 93, 33, 20, 40, 143, 84, 197, 67, 255, 148, 57, 146, 198, 114, 33, 71, 30, 82, 192, 170, 52, 234, 239, 80, 64, 40, 102, 84, 166, 173, 142, 183, 193, 94, 230, 23, 141, 252, 243, 157, 35, 237, 118, 118, 42, 74, 1, 54, 87, 226, 144, 53, 58, 204, 32, 19, 74, 57, 167, 120, 21, 185, 51, 252, 176, 109, 2, 92, 125, 240, 132, 20, 197, 113, 129, 104, 179, 18, 64, 47, 115, 96, 209, 210, 76, 191, 39, 127, 230, 135, 242, 56, 42, 214, 109, 188, 170, 192, 204, 9, 204, 190, 58, 162, 143, 115, 247, 60, 155, 37, 146, 119, 159, 64, 247, 242, 239, 189, 181, 85, 25, 145, 123, 81, 123, 205, 83, 33, 144, 45, 196, 64, 114, 13, 18, 247, 116, 14, 202, 246, 213, 177, 225, 152, 217, 119, 24, 39, 253, 158, 222, 242, 242, 175, 77, 241, 126, 29, 93, 45, 170, 185, 71, 131, 214, 114, 43, 181, 150, 252, 39, 6, 87, 37, 134, 229, 17, 8, 15, 186, 181, 205, 161, 20, 235, 0, 12, 137, 197, 184, 41, 11, 222, 237, 139, 70, 19, 213, 30, 122, 10, 226, 173, 98, 29, 245, 52, 215, 124, 12, 134, 182, 57, 22, 177, 59, 226, 249, 248, 41, 180, 183, 47, 165, 116, 170, 152, 20, 74, 194, 122, 200, 136, 75, 176, 189, 240, 211, 88, 98, 205, 34, 105, 216, 138, 137, 72, 56, 215, 175, 140, 70, 137, 91, 54, 133, 221, 38, 226, 239, 139, 212, 80, 177, 248, 110, 195, 61, 196, 255, 7, 156, 229, 136, 198, 72, 3, 234, 106, 16, 83, 14, 210, 94, 51, 205, 43, 23, 224, 60, 41, 139, 192, 59, 25, 111, 190, 82, 39, 54, 189, 75, 126, 229, 83, 220, 32, 148, 43, 104, 248, 214, 206, 224, 215, 16, 60, 193, 15, 56, 193, 32, 170, 160, 23, 190, 102, 110, 19, 17, 72, 35, 17, 208, 211, 97, 113, 200, 24, 54, 117, 191, 45, 89, 163, 74, 198, 191, 150, 95, 253, 192, 22, 129, 130, 32, 152, 172, 103, 119, 229, 128, 56, 107, 92, 200, 44, 214, 191, 125, 210, 215, 82, 117, 251, 113, 109, 109, 226, 6, 169, 109, 74, 23, 249, 245, 34, 66, 19, 101, 185, 162, 211, 82, 34, 142, 17, 229, 51, 118, 89, 199, 214, 28, 129, 55, 42, 45, 223, 195, 53, 145, 14, 230, 108, 57, 10, 38, 30, 54, 47, 103, 228, 177, 43, 124, 215, 126, 179, 126, 224, 136, 52, 213, 200, 239, 248, 56, 200, 140, 211, 100, 66, 168, 7, 73, 198, 24, 116, 195, 168, 244, 221, 29, 96, 70, 60, 223, 74, 211, 190, 250, 31, 253, 102, 252, 5, 79, 214, 195, 57, 178, 97, 227, 185, 105, 107, 5, 36, 58, 5, 55, 206, 148, 62, 127, 7, 185, 106, 245, 3, 39, 244, 34, 213, 127, 5, 102, 234, 34, 21, 55, 212, 6, 181, 98, 25, 92, 178, 172, 22, 221, 208, 146, 54, 119, 64, 138, 248, 54, 134, 7, 72, 247, 6, 228, 125, 93, 153, 23, 141, 207, 95, 56, 117, 215, 95, 159, 159, 214, 117, 97, 43, 109, 88, 50, 163, 148, 70, 44, 108, 208, 165, 89, 202, 104, 76, 241, 196, 12, 40, 102, 154, 234, 158, 197, 135, 31, 129, 203, 135, 181, 145, 20, 117, 153, 231, 212, 228, 118, 193, 211, 167, 59, 198, 170, 28, 74, 11, 164, 211, 1, 189, 68, 202, 163, 110, 158, 216, 123, 31, 16, 30, 31, 111, 81, 108, 235, 56, 98, 114, 76, 29, 142, 234, 159, 214, 18, 38, 226, 183, 37, 36, 15, 56, 53, 141, 161, 85, 198, 76, 246, 223, 82, 137, 2, 27, 186, 111, 208, 68, 146, 181, 205, 85, 101, 70, 19, 33, 38, 254, 177, 231, 88, 176, 43, 130, 244, 94, 228, 81, 193, 13, 224, 8, 45, 35, 185, 9, 103, 112, 133, 124, 107, 172, 66, 48, 64, 33, 84, 14, 127, 69, 54, 46, 68, 14, 225, 255, 48, 107, 32, 75, 160, 60, 67, 158, 149, 12, 243, 130, 168, 250, 146, 60, 29, 121, 117, 186, 93, 171, 26, 187, 23, 130, 200, 105, 169, 14, 241, 206, 210, 146, 59, 79, 197, 56, 14, 119, 202, 166, 82, 77, 90, 96, 193, 7, 176, 83, 166, 12, 5, 99, 4, 173, 44, 162, 241, 216, 251, 218, 158, 2, 222, 159, 93, 5, 189, 82, 143, 147, 50, 220, 207, 150, 229, 93, 47, 39, 242, 159, 236, 141, 31, 209, 237, 21, 156, 8, 199, 201, 62, 55, 18, 132, 140, 65, 177, 159, 152, 137, 179, 4, 196, 88, 135, 212, 251, 156, 138, 108, 108, 84, 178, 243, 153, 151, 175, 177, 23, 163, 44, 180, 29, 98, 159, 125, 91, 169, 25, 131, 30, 65, 139, 56, 16, 177, 161, 230, 244, 121, 38, 207, 45, 64, 0, 235, 250, 149, 220, 128, 161, 118, 12, 148, 229, 107, 33, 108, 158, 197, 103, 236, 220, 167, 93, 108, 227, 34, 17, 54, 31, 131, 135, 182, 166, 130, 136, 244, 128, 130, 64, 45, 59, 203, 121, 207, 228, 46, 75, 96, 55, 66, 87, 173, 145, 207, 106, 111, 97, 224, 103, 86, 128, 36, 37, 105, 165, 77, 69, 13, 29, 220, 163, 123, 49, 209, 38, 212, 238, 25, 4, 232, 186, 232, 133, 3, 163, 79, 139, 249, 111, 69, 0, 187, 128, 212, 60, 242, 147, 148, 223, 17, 73, 194, 244, 125, 146, 191, 38, 15, 247, 52, 4, 91, 229, 37, 22, 64, 135, 77, 181, 241, 149, 80, 196, 124, 21, 200, 117, 76, 105, 121, 30, 188, 3, 65, 161, 205, 178, 242, 67, 111, 175, 58, 9, 95, 46, 201, 105, 23, 224, 249, 98, 100, 205, 255, 23, 50, 131, 30, 216, 87, 102, 59, 91, 156, 114, 45, 237, 187, 117, 192, 231, 51, 65, 183, 127, 231, 90, 69, 131, 6, 141, 83, 217, 17, 41, 150, 182, 89, 2, 191, 56, 69, 42, 120, 196, 10, 177, 255, 154, 238, 104, 210, 58, 33, 13, 163, 136, 178, 244, 61, 163, 206, 79, 81, 212, 50, 23, 56, 28, 182, 165, 29, 84, 29, 173, 150, 194, 201, 221, 239, 145, 151, 60, 119, 233, 183, 171, 240, 201, 10, 91, 26, 12, 55, 126, 52, 113, 9, 105, 150, 111, 58, 76, 222, 35, 54, 5, 36, 51, 229, 13, 222, 167, 248, 130, 166, 6, 108, 78, 44, 228, 219, 155, 216, 122, 66, 163, 52, 100, 111, 104, 166, 127, 253, 123, 15, 179, 63, 102, 161, 23, 86, 81, 41, 241, 164, 196, 71, 122, 216, 18, 22, 196, 39, 126, 223, 86, 220, 81, 90, 103, 74, 116, 226, 16, 125, 173, 210, 46, 194, 102, 224, 246, 149, 225, 35, 1, 248, 108, 64, 20, 74, 48, 89, 109, 173, 212, 114, 175, 87, 97, 217, 241, 107, 253, 67, 82, 32, 14, 1, 219, 60, 10, 73, 19, 183, 87, 110, 95, 252, 101, 56, 34, 67, 24, 180, 179, 55, 32, 247, 187, 98, 99, 235, 73, 77, 243, 29, 29, 93, 242, 60, 26, 51, 27, 102, 109, 98, 251, 98, 76, 235, 39, 89, 1, 108, 46, 238, 115, 33, 59, 45, 46, 4, 56, 141, 65, 192, 26, 110, 192, 216, 245, 71, 57, 65, 144, 246, 236, 191, 64, 159, 245, 245, 14, 36, 66, 6, 98, 18, 148, 99, 141, 82, 64, 51, 168, 215, 201, 82, 150, 68, 84, 237, 2, 185, 49, 39, 122, 245, 239, 219, 60, 142, 16, 78, 165, 59, 145, 226, 38, 19, 228, 26, 159, 176, 90, 32, 1, 163, 43, 127, 125, 232, 29, 223, 231, 232, 176, 78, 57, 34, 219, 177, 64, 17, 186, 201, 72, 51, 195, 59, 140, 226, 123, 219, 243, 10, 190, 99, 40, 236, 187, 46, 119, 180, 164, 197, 70, 134, 167, 185, 241, 187, 218, 249, 220, 62, 226, 47, 97, 251, 132, 155, 218, 32, 253, 182, 144, 98, 22, 209, 215, 16, 95, 246, 4, 58, 32, 214, 187, 1, 103, 224, 60, 163, 97, 233, 219, 15, 97, 6, 176, 177, 176, 174, 149, 111, 229, 17, 47, 10, 167, 193, 114, 2, 14, 131, 72, 117, 147, 68, 11, 217, 168, 7, 84, 89, 255, 130, 70, 149, 123, 55, 161, 5, 27, 3, 133, 147, 51, 133, 120, 139, 225, 134, 107, 121, 199, 129, 150, 117, 73, 6, 190, 67, 1, 127, 99, 203, 123, 26, 10, 131, 160, 255, 55, 205, 8, 109, 202, 165, 46, 13, 144, 141, 238, 4, 15, 30, 91, 78, 167, 56, 207, 181, 100, 89, 226, 166, 91, 6, 87, 42, 161, 18, 173, 46, 134, 84, 47, 192, 51, 192, 86, 143, 106, 143, 68, 251, 155, 48, 132, 148, 113, 151, 135, 133, 68, 135, 223, 141, 62, 40, 237, 173, 32, 255, 82, 138, 211, 98, 135, 17, 208, 76, 110, 10, 169, 109, 29, 94, 79, 56, 157, 83, 52, 181, 250, 138, 162, 188, 220, 51, 204, 209, 222, 189, 226, 142, 162, 134, 34, 176, 136, 149, 252, 25, 172, 22, 56, 41, 175, 96, 189, 47, 60, 197, 122, 228, 229, 174, 7, 187, 59, 62, 90, 104, 81, 171, 136, 40, 100, 33, 61, 107, 104, 93, 125, 99, 111, 143, 164, 107, 234, 102, 20, 82, 79, 151, 211, 159, 79, 36, 159, 15, 137, 116, 236, 128, 31, 195, 155, 61, 48, 44, 168, 114, 179, 176, 19, 154, 247, 138, 187, 48, 108, 202, 239, 31, 5, 253, 101, 72, 112, 65, 48, 8, 136, 4, 140, 125, 19, 45, 76, 151, 233, 69, 65, 39, 222, 33, 169, 153, 248, 69, 22, 63, 82, 47, 141, 89, 69, 102, 183, 148, 108, 230, 206, 254, 173, 111, 126, 205, 73, 85, 110, 8, 195, 112, 225, 241, 117, 201, 155, 66, 182, 43, 95, 192, 172, 85, 95, 200, 55, 150, 254, 183, 79, 51, 140, 194, 243, 218, 6, 207, 43, 112, 155, 165, 185, 81, 231, 61, 156, 78, 134, 159, 39, 52, 3, 54, 202, 111, 201, 137, 237, 153, 86, 65, 220, 47, 171, 44, 200, 196, 150, 157, 71, 245, 230, 122, 68, 43, 159, 42, 220, 239, 39, 59, 81, 215, 190, 128, 130, 45, 90, 180, 95, 118, 120, 37, 13, 88, 3, 66, 233, 214, 12, 132, 171, 162, 38, 115, 151, 111, 181, 74, 10, 105, 88, 147, 18, 179, 28, 209, 232, 145, 185, 92, 144, 230, 74, 12, 70, 230, 10, 109, 202, 47, 127, 142, 241, 226, 160, 99, 236, 6, 133, 69, 212, 154, 166, 91, 50, 29, 34, 28, 146, 191, 43, 169, 86, 236, 44, 39, 96, 174, 26, 12, 210, 205, 182, 94, 148, 21, 71, 7, 55, 243, 169, 236, 251, 148, 255, 130, 169, 82, 153, 21, 140, 25, 11, 83, 255, 108, 240, 128, 13, 36, 35, 182, 182, 242, 102, 57, 202, 171, 124, 196, 136, 92, 214, 60, 128, 224, 239, 59, 200, 208, 243, 143, 95, 97, 220, 171, 167, 40, 18, 63, 70, 152, 3, 129, 146, 154, 72, 146, 176, 144, 56, 0, 216, 206, 217, 145, 170, 82, 110, 208, 56, 155, 158, 133, 32, 72, 127, 55, 98, 223, 55, 57, 226, 184, 221, 143, 62, 205, 153, 184, 72, 233, 147, 245, 235, 115, 24, 146, 28, 29, 191, 188, 195, 216, 0, 79, 123, 176, 54, 74, 228, 161, 151, 255, 57, 132, 208, 222, 172, 239, 205, 243, 127, 50, 141, 9, 28, 72, 123, 85, 122, 138, 248, 107, 55, 73, 183, 2, 189, 140, 161, 129, 16, 183, 182, 207, 76, 105, 61, 159, 207, 220, 140, 223, 15, 72, 164, 232, 55, 246, 173, 204, 217, 67, 72, 116, 35, 22, 247, 217, 8, 97, 20, 37, 53, 199, 137, 14, 183, 78, 33, 179, 245, 104, 161, 143, 174, 147, 54, 58, 153, 221, 189, 50, 27, 25, 252, 142, 76, 18, 135, 116, 106, 21, 78, 71, 130, 246, 120, 35, 81, 60, 230, 156, 147, 127, 104, 209, 94, 21, 168, 51, 226, 215, 97, 176, 83, 122, 225, 117, 106, 49, 117, 171, 146, 184, 154, 203, 205, 153, 155, 84, 153, 95, 190, 76, 32, 248, 17, 43, 20, 48, 114, 56, 234, 90, 101, 59, 154, 217, 35, 15, 234, 180, 156, 178, 214, 117, 220, 215, 178, 12, 37, 247, 61, 212, 186, 28, 176, 157, 38, 125, 116, 68, 128, 229, 191, 65, 183, 125, 81, 130, 183, 131, 93, 244, 175, 42, 119, 240, 179, 174, 78, 1, 125, 226, 231, 160, 105, 14, 32, 19, 86, 170, 9, 226, 40, 148, 47, 70, 27, 37, 13, 56, 247, 89, 179, 103, 45, 105, 94, 115, 97, 185, 56, 13, 24, 135, 47, 150, 57, 56, 72, 31, 70, 31, 48, 75, 206, 216, 69, 184, 201, 237, 221, 113, 183, 214, 140, 167, 68, 69, 187, 226, 254, 182, 189, 142, 132, 1, 220, 204, 174, 248, 29, 216, 137, 194, 87, 139, 131, 224, 76, 73, 194, 165, 71, 63, 157, 208, 134, 167, 116, 14, 87, 226, 46, 76, 101, 73, 42, 99, 13, 76, 238, 140, 44, 48, 118, 246, 56, 74, 153, 113, 185, 44, 218, 130, 32, 218, 143, 177, 174, 194, 189, 188, 12, 248, 30, 201, 111, 41, 179, 117, 45, 168, 224, 254, 10, 90, 226, 81, 242, 96, 40, 61, 225, 156, 143, 248, 187, 220, 74, 237, 159, 165, 63, 246, 200, 229, 75, 103, 203, 208, 187, 92, 84, 138, 17, 36, 207, 108, 67, 138, 71, 82, 252, 122, 231, 150, 11, 109, 169, 15, 75, 46, 149, 100, 227, 59, 95, 15, 40, 246, 192, 66, 68, 36, 248, 149, 74, 54, 28, 207, 167, 237, 62, 186, 11, 49, 155, 38, 20, 117, 62, 18, 201, 9, 166, 33, 74, 232, 160, 202, 178, 77, 25, 107, 220, 210, 141, 40, 172, 79, 179, 55, 185, 100, 199, 98, 115, 207, 191, 151, 67, 174, 160, 99, 155, 76, 33, 141, 242, 154, 100, 87, 243, 208, 43, 160, 42, 126, 22, 177, 199, 150, 245, 244, 247, 186, 241, 222, 110, 37, 208, 33, 61, 184, 15, 72, 19, 103, 39, 215, 155, 210, 224, 71, 180, 11, 172, 63, 25, 19, 134, 108, 93, 35, 239, 49, 159, 42, 238, 79, 117, 86, 16, 121, 66, 93, 45, 199, 23, 187, 127, 36, 85, 208, 230, 132, 244, 81, 51, 107, 51, 72, 30, 81, 50, 238, 169, 204, 134, 134, 45, 5, 148, 235, 84, 132, 46, 226, 36, 102, 68, 51, 213, 138, 238, 72, 88, 110, 117, 31, 222, 121, 76, 130, 195, 232, 169, 252, 218, 169, 141, 41, 51, 63, 78, 122, 236, 42, 150, 182, 48, 40, 80, 44, 60, 40, 167, 42, 133, 21, 222, 175, 242, 236, 255, 53, 141, 153, 55, 223, 175, 247, 251, 102, 105, 54, 31, 47, 236, 176, 106, 191, 35, 249, 141, 170, 115, 8, 43, 117, 98, 108, 207, 43, 62, 247, 140, 37, 234, 0, 243, 31, 52, 42, 240, 226, 94, 128, 246, 249, 56, 37, 226, 92, 53, 36, 72, 144, 138, 181, 113, 54, 159, 116, 37, 26, 174, 73, 158, 179, 22, 173, 173, 76, 118, 38, 13, 255, 67, 194, 86, 90, 199, 243, 65, 3, 10, 210, 37, 198, 22, 139, 92, 210, 95, 166, 208, 227, 48, 255, 255, 78, 64, 150, 209, 86, 77, 140, 215, 139, 1, 112, 216, 14, 126, 41, 52, 81, 240, 166, 110, 246, 236, 70, 106, 95, 165, 112, 102, 214, 225, 248, 58, 57, 164, 225, 7, 167, 15, 66, 26, 243, 153, 184, 43, 67, 226, 136, 56, 251, 245, 85, 141, 129, 183, 244, 109, 227, 163, 251, 110, 135, 174, 205, 49, 67, 131, 32, 134, 231, 225, 203, 78, 160, 182, 78, 140, 213, 115, 82, 156, 130, 102, 106, 184, 123, 84, 13, 160, 185, 162, 47, 227, 197, 165, 83, 122, 68, 128, 131, 150, 125, 112, 150, 138, 8, 148, 69, 176, 172, 114, 73, 127, 86, 70, 212, 0, 157, 63, 184, 197, 6, 82, 157, 55, 154, 33, 170, 56, 181, 70, 206, 169, 92, 122, 27, 184, 159, 242, 206, 225, 177, 242, 162, 148, 117, 158, 172, 72, 76, 186, 59, 60, 8, 161, 188, 101, 31, 233, 37, 240, 69, 226, 40, 247, 105, 19, 211, 15, 90, 90, 102, 180, 61, 128, 50, 212, 248, 144, 135, 178, 49, 175, 106, 28, 225, 242, 203, 247, 6, 165, 202, 108, 36, 8, 155, 177, 240, 70, 84, 16, 250, 91, 0, 19, 54, 91, 196, 133, 73, 197, 2, 211, 143, 201, 123, 80, 142, 191, 119, 98, 18, 245, 100, 73, 93, 243, 201, 35, 54, 231, 238, 241, 5, 155, 127, 0, 254, 121, 146, 12, 127, 122, 195, 64, 99, 255, 95, 186, 185, 45, 7, 180, 159, 154, 64, 100, 182, 150, 27, 189, 63, 7, 52, 11, 159, 184, 38, 230, 77, 198, 241, 22, 194, 222, 20, 202, 53, 236, 141, 149, 64, 148, 242, 76, 79, 56, 46, 188, 118, 201, 56, 142, 141, 123, 75, 119, 211, 5, 54, 61, 145, 48, 231, 130, 81, 12, 80, 29, 248, 136, 242, 226, 149, 57, 110, 1, 184, 147, 187, 208, 86, 103, 131, 34, 214, 35, 146, 124, 252, 177, 76, 110, 156, 99, 118, 76, 153, 73, 89, 49, 37, 178, 14, 250, 151, 170, 254, 220, 59, 171, 75, 84, 164, 65, 121, 87, 122, 212, 27, 65, 94, 57, 60, 250, 249, 156, 80, 109, 238, 235, 92, 201, 39, 192, 86, 162, 30, 106, 104, 114, 182, 9, 183, 97, 95, 231, 16, 40, 87, 196, 43, 69, 29, 136, 219, 68, 42, 215, 122, 197, 109, 134, 88, 61, 55, 177, 209, 174, 109, 110, 217, 95, 201, 16, 133, 149, 147, 244, 155, 105, 39, 28, 105, 247, 251, 139, 219, 63, 176, 161, 71, 101, 63, 98, 218, 96, 33, 127, 192, 31, 69, 166, 61, 74, 143, 142, 88, 225, 134, 65, 235, 214, 145, 245, 107, 56, 238, 119, 101, 160, 247, 38, 236, 87, 124, 117, 93, 199, 107, 151, 217, 41, 30, 69, 61, 60, 228, 120, 38, 61, 202, 4, 196, 60, 107, 93, 230, 40, 247, 224, 159, 40, 66, 236, 243, 135, 202, 146, 209, 197, 56, 33, 126, 2, 150, 230, 154, 253, 35, 136, 132, 121, 244, 123, 201, 99, 100, 34, 233, 123, 210, 194, 205, 243, 251, 205, 118, 7, 211, 100, 55, 210, 42, 228, 153, 167, 251, 150, 182, 182, 23, 158, 81, 162, 157, 253, 5, 44, 163, 226, 150, 71, 84, 7, 94, 209, 240, 30, 86, 146, 182, 130, 210, 61, 179, 233, 42, 26, 151, 54, 91, 14, 155, 19, 142, 113, 38, 169, 23, 73, 254, 124, 16, 15, 81, 67, 86, 230, 56, 77, 86, 225, 157, 240, 176, 138, 0, 179, 194, 157, 235, 199, 57, 160, 108, 54, 67, 205, 162, 28, 140, 215, 230, 18, 47, 130, 185, 162, 65, 150, 58, 177, 194, 149, 41, 64, 20, 205, 76, 57, 68, 53, 128, 73, 52, 99, 239, 127, 206, 232, 68, 50, 48, 176, 235, 249, 65, 38, 39, 152, 147, 79, 184, 174, 106, 120, 67, 79, 81, 97, 56, 196, 246, 63, 10, 133, 104, 2, 134, 231, 66, 48, 202, 47, 125, 78, 73, 181, 93, 140, 185, 53, 223, 108, 194, 31, 97, 227, 137, 251, 150, 126, 82, 77, 115, 123, 6, 224, 250, 235, 144, 171, 159, 213, 113, 246, 46, 151, 87, 13, 119, 210, 206, 215, 189, 246, 27, 228, 25, 69, 4, 248, 63, 128, 9, 67, 54, 72, 217, 224, 134, 171, 137, 235, 100, 152, 160, 155, 85, 223, 5, 138, 178, 94, 25, 223, 12, 180, 199, 151, 120, 38, 4, 121, 192, 69, 126, 105, 16, 7, 22, 26, 187, 124, 6, 203, 17, 11, 231, 196, 67, 234, 38, 86, 246, 52, 16, 112, 156, 178, 231, 251, 108, 147, 239, 177, 185, 211, 79, 1, 136, 247, 203, 252, 140, 213, 247, 230, 147, 90, 110, 53, 207, 160, 70, 250, 109, 6, 44, 231, 3, 185, 25, 85, 200, 137, 200, 34, 92, 52, 151, 250, 44, 132, 111, 80, 243, 47, 234, 216, 229, 22, 231, 52, 195, 171, 132, 133, 33, 38, 232, 245, 226, 186, 146, 58, 40, 73, 163, 32, 82, 203, 121, 68, 128, 95, 107, 20, 11, 76, 242, 165, 111, 52, 144, 156, 147, 63, 100, 94, 226, 149, 56, 39, 32, 58, 34, 153, 138, 224, 4, 95, 129, 192, 92, 247, 139, 190, 177, 0, 50, 83, 231, 45, 59, 59, 13, 24, 117, 66, 5, 16, 145, 172, 84, 230, 74, 90, 94, 208, 92, 219, 54, 218, 134, 162, 251, 162, 99, 78, 191, 188, 71, 249, 101, 232, 123, 16, 123, 177, 248, 47, 254, 56, 11, 39, 62, 155, 143, 137, 174, 99, 73, 186, 53, 169, 27, 241, 40, 29, 166, 22, 41, 90, 31, 62, 28, 12, 230, 143, 15, 68, 119, 28, 126, 94, 55, 161, 151, 211, 129, 162, 206, 109, 158, 173, 85, 119, 18, 54, 107, 213, 68, 29, 99, 62, 188, 115, 105, 95, 2, 135, 83, 183, 67, 210, 255, 160, 128, 83, 141, 177, 169, 129, 223, 157, 30, 0, 68, 103, 164, 42, 103, 35, 179, 193, 54, 200, 250, 197, 233, 163, 86, 231, 73, 242, 217, 81, 48, 62, 230, 40, 173, 144, 84, 7, 199, 88, 61, 166, 38, 187, 80, 60, 136, 44, 242, 62, 224, 98, 169, 210, 116, 9, 233, 199, 224, 1, 82, 201, 179, 116, 145, 37, 75, 101, 153, 31, 55, 129, 184, 193, 179, 55, 174, 186, 144, 178, 179, 118, 148, 33, 84, 250, 164, 85, 137, 168, 250, 89, 21, 237, 153, 127, 29, 86, 131, 72, 118, 175, 255, 160, 160, 78, 202, 88, 140, 237, 161, 195, 157, 85, 15, 234, 31, 168, 47, 189, 111, 47, 243, 160, 208, 218, 128, 2, 3, 82, 214, 40, 174, 190, 92, 201, 109, 235, 231, 112, 248, 229, 169, 93, 38, 100, 47, 43, 17, 55, 160, 208, 158, 64, 96, 147, 178, 156, 194, 179, 197, 166, 34, 156, 165, 124, 160, 189, 213, 20, 144, 108, 45, 99, 202, 209, 121, 163, 23, 138, 219, 56, 251, 153, 134, 129, 8, 97, 220, 30, 228, 217, 13, 225, 75, 209, 193, 32, 9, 16, 195, 85, 27, 193, 112, 192, 21, 21, 37, 46, 24, 252, 43, 212, 110, 152, 164, 90, 125, 111, 218, 35, 67, 171, 237, 146, 80, 22, 243, 160, 105, 146, 234, 181, 180, 71, 41, 146, 102, 250, 55, 46, 175, 92, 103, 43, 197, 59, 67, 118, 181, 189, 30, 185, 114, 71, 82, 16, 177, 167, 54, 106, 253, 174, 16, 51, 123, 54, 138, 200, 171, 89, 180, 183, 101, 207, 34, 112, 59, 3, 70, 172, 251, 177, 30, 232, 31, 10, 182, 220, 90, 116, 128, 201, 9, 43, 165, 0, 240, 72, 63, 137, 152, 20, 249, 146, 189, 148, 197, 160, 236, 224, 27, 222, 150, 0, 116, 38, 147, 169, 95, 0, 248, 196, 168, 222, 48, 72, 33, 67, 78, 73, 34, 186, 173, 18, 62, 181, 23, 165, 248, 62, 244, 123, 26, 241, 223, 76, 3, 186, 242, 41, 210, 210, 237, 65, 61, 55, 58, 94, 241, 147, 119, 27, 74, 112, 249, 193, 147, 157, 20, 4, 128, 142, 54, 213, 217, 60, 47, 9, 109, 162, 197, 147, 81, 76, 167, 7, 175, 223, 128, 217, 229, 40, 157, 182, 157, 171, 75, 204, 114, 152, 7, 164, 198, 239, 88, 148, 178, 217, 122, 187, 151, 105, 66, 51, 164, 92, 78, 168, 118, 143, 117, 64, 252, 91, 214, 145, 212, 138, 131, 5, 225, 150, 184, 184, 6, 138, 153, 120, 154, 194, 161, 33, 99, 204, 177, 237, 41, 32, 157, 36, 164, 246, 212, 120, 128, 48, 82, 218, 165, 206, 206, 105, 150, 204, 206, 124, 214, 233, 139, 53, 2, 36, 13, 21, 44, 79, 163, 163, 164, 28, 181, 134, 74, 128, 3, 53, 190, 125, 115, 155, 58, 63, 198, 87, 227, 191, 172, 49, 217, 71, 178, 118, 68, 19, 105, 142, 170, 115, 32, 135, 82, 203, 62, 132, 241, 200, 132, 101, 220, 251, 229, 204, 138, 31, 106, 33, 253, 157, 217, 71, 132, 66, 165, 203, 227, 243, 231, 22, 249, 159, 131, 27, 33, 156, 16, 58, 211, 229, 167, 144, 173, 111, 0, 195, 144, 177, 116, 78, 103, 158, 13, 248, 193, 107, 210, 62, 245, 116, 118, 24, 127, 187, 225, 100, 120, 91, 10, 102, 4, 200, 220, 200, 230, 238, 51, 89, 166, 63, 147, 149, 104, 47, 62, 171, 171, 59, 23, 143, 241, 99, 30, 84, 138, 19, 223, 133, 9, 221, 142, 76, 204, 164, 189, 170, 45, 75, 123, 133, 106, 196, 83, 57, 213, 182, 237, 52, 36, 222, 231, 127, 66, 120, 60, 81, 164, 109, 202, 239, 232, 180, 138, 153, 2, 255, 32, 247, 187, 79, 240, 104, 129, 192, 138, 249, 160, 8, 121, 178, 118, 13, 166, 27, 59, 29, 190, 147, 216, 204, 246, 184, 122, 194, 184, 58, 155, 133, 170, 194, 86, 22, 250, 122, 210, 127, 128, 157, 175, 131, 19, 188, 121, 118, 158, 93, 19, 110, 23, 209, 26, 19, 197, 2, 55, 221, 229, 155, 177, 20, 89, 154, 211, 185, 72, 213, 202, 136, 238, 42, 251, 228, 224, 191, 158, 39, 162, 231, 2, 128, 188, 49, 36, 104, 158, 163, 95, 82, 92, 255, 213, 162, 147, 211, 189, 44, 190, 220, 166, 0, 102, 10, 162, 99, 13, 55, 222, 95, 172, 195, 4, 37, 44, 100, 97, 112, 244, 251, 65, 67, 114, 88, 179, 150, 13, 176, 190, 86, 221, 113, 80, 243, 68, 221, 148, 98, 24, 179, 251, 40, 158, 171, 97, 223, 158, 131, 74, 182, 28, 39, 38, 254, 13, 3, 35, 107, 161, 178, 99, 22, 87, 101, 77, 208, 8, 58, 138, 113, 13, 60, 26, 3, 89, 77, 215, 108, 69, 221, 115, 207, 213, 216, 93, 32, 85, 210, 87, 199, 212, 79, 2, 63, 85, 70, 221, 136, 237, 79, 99, 59, 92, 57, 58, 51, 217, 141, 103, 17, 219, 153, 125, 209, 188, 57, 180, 23, 146, 104, 85, 229, 209, 155, 46, 99, 89, 244, 120, 122, 124, 218, 56, 44, 25, 61, 129, 130, 228, 55, 241, 74, 32, 187, 145, 149, 209, 10, 230, 245, 20, 16, 94, 26, 128, 15, 207, 132, 34, 33, 15, 61, 105, 98, 250, 221, 91, 113, 81, 64, 11, 131, 255, 75, 225, 190, 50, 95, 170, 69, 209, 215, 178, 89, 223, 190, 175, 55, 159, 176, 99, 12, 21, 221, 201, 211, 132, 234, 58, 251, 204, 61, 85, 153, 173, 81, 11, 8, 239, 170, 130, 41, 53, 165, 199, 70, 111, 30, 79, 181, 39, 105, 105, 104, 159, 52, 124, 253, 38, 191, 242, 73, 99, 65, 106, 128, 191, 172, 116, 182, 53, 71, 143, 85, 113, 195, 169, 227, 233, 232, 50, 99, 69, 244, 53, 148, 212, 1, 204, 147, 138, 157, 119, 246, 39, 240, 9, 65, 207, 52, 81, 43, 68, 81, 155, 65, 168, 204, 178, 108, 223, 249, 218, 180, 228, 83, 136, 79, 230, 12, 138, 229, 11, 69, 2, 97, 77, 99, 174, 37, 180, 12, 83, 141, 139, 41, 108, 40, 93, 160, 232, 30, 232, 159, 126, 223, 93, 90, 45, 88, 245, 158, 141, 88, 241, 91, 120, 252, 230, 140, 200, 195, 248, 58, 98, 152, 93, 232, 127, 89, 95, 106, 173, 142, 242, 24, 115, 66, 215, 211, 201, 240, 36, 140, 223, 207, 165, 241, 180, 34, 11, 159, 155, 250, 94, 136, 164, 214, 95, 154, 30, 106, 97, 114, 217, 176, 92, 18, 198, 157, 255, 78, 82, 208, 161, 185, 45, 209, 137, 91, 97, 227, 8, 185, 59, 203, 189, 25, 50, 230, 220, 135, 167, 13, 227, 236, 142, 141, 8, 16, 173, 250, 39, 18, 9, 75, 191, 174, 189, 226, 50, 125, 158, 188, 26, 109, 99, 57, 200, 231, 153, 197, 250, 247, 224, 57, 218, 53, 34, 172, 142, 30, 196, 98, 117, 187, 203, 134, 45, 87, 207, 6, 40, 205, 151, 192, 214, 214, 139, 206, 36, 121, 162, 25, 28, 206, 229, 18, 154, 136, 107, 204, 65, 235, 122, 185, 132, 50, 165, 227, 161, 234, 187, 27, 231, 212, 27, 113, 54, 208, 235, 204, 46, 47, 85, 217, 212, 6, 5, 222, 164, 126, 75, 51, 39, 94, 145, 145, 159, 255, 29, 240, 196, 214, 43, 242, 169, 34, 138, 132, 111, 181, 251, 51, 100, 115, 156, 246, 20, 179, 242, 151, 174, 252, 146, 226, 109, 180, 228, 254, 82, 143, 136, 145, 239, 4, 163, 200, 121, 67, 9, 11, 192, 42, 211, 156, 37, 16, 169, 120, 181, 223, 204, 86, 98, 174, 15, 46, 85, 75, 156, 43, 98, 90, 90, 158, 8, 135, 228, 42, 231, 56, 201, 199, 80, 141, 242, 25, 34, 169, 190, 232, 245, 47, 73, 17, 195, 41, 168, 247, 75, 124, 125, 201, 38, 85, 69, 132, 255, 113, 31, 89, 209, 45, 8, 142, 77, 148, 109, 204, 246, 229, 34, 22, 213, 34, 255, 106, 3, 42, 161, 193, 77, 135, 204, 225, 218, 48, 3, 254, 213, 42, 199, 174, 123, 143, 86, 217, 94, 137, 239, 137, 99, 200, 251, 208, 39, 101, 154, 44, 7, 26, 125, 245, 76, 122, 201, 11, 190, 108, 134, 231, 225, 43, 8, 158, 154, 158, 37, 191, 27, 72, 150, 249, 39, 230, 240, 58, 76, 61, 59, 127, 14, 172, 38, 117, 115, 231, 148, 243, 194, 3, 213, 191, 219, 84, 101, 30, 210, 88, 191, 188, 113, 92, 66, 253, 166, 28, 146, 23, 51, 85, 65, 217, 233, 190, 248, 126, 238, 242, 244, 113, 189, 105, 192, 143, 189, 236, 37, 222, 28, 212, 33, 101, 138, 157, 203, 134, 87, 129, 74, 122, 251, 3, 202, 170, 239, 162, 148, 182, 203, 183, 157, 130, 115, 213, 90, 4, 96, 25, 196, 143, 234, 135, 14, 0, 103, 8, 178, 46, 205, 167, 74, 183, 57, 201, 148, 226, 211, 177, 145, 85, 144, 34, 66, 144, 101, 192, 93, 86, 205, 82, 35, 231, 189, 37, 56, 59, 121, 40, 108, 211, 252, 202, 71, 209, 174, 29, 171, 63, 75, 226, 253, 6, 106, 207, 195, 184, 134, 148, 172, 59, 167, 223, 138, 168, 181, 51, 85, 107, 239, 40, 201, 2, 236, 162, 34, 243, 200, 227, 21, 180, 114, 11, 33, 191, 87, 55, 119, 41, 126, 220, 86, 243, 165, 101, 67, 208, 29, 191, 16, 138, 156, 196, 200, 178, 9, 39, 202, 174, 182, 241, 166, 116, 90, 30, 185, 68, 199, 239, 177, 201, 163, 61, 195, 82, 180, 170, 34, 101, 201, 79, 150, 243, 34, 99, 197, 177, 224, 181, 203, 222, 205, 86, 60, 138, 175, 0, 84, 209, 163, 39, 233, 91, 106, 117, 23, 59, 6, 126, 120, 206, 73, 106, 245, 115, 17, 5, 19, 225, 61, 149, 216, 108, 251, 192, 196, 6, 155, 69, 58, 162, 106, 211, 167, 116, 191, 222, 187, 101, 51, 250, 76, 247, 187, 195, 40, 120, 236, 32, 86, 221, 8, 65, 202, 233, 74, 242, 25, 197, 188, 240, 41, 148, 107, 49, 198, 214, 142, 122, 186, 28, 193, 27, 2, 115, 140, 146, 126, 45, 52, 216, 53, 167, 60, 225, 147, 67, 50, 115, 24, 193, 230, 170, 141, 49, 253, 13, 251, 92, 207, 24, 157, 212, 223, 21, 158, 171, 90, 173, 218, 152, 1, 4, 74, 128, 245, 51, 167, 73, 61, 253, 20, 120, 152, 240, 195, 200, 169, 207, 207, 199, 179, 74, 115, 32, 172, 199, 119, 59, 66, 53, 124, 115, 104, 159, 26, 161, 110, 77, 238, 114, 225, 75, 25, 152, 24, 80, 84, 223, 99, 224, 99, 190, 88, 73, 235, 76, 117, 179, 228, 193, 205, 227, 61, 202, 175, 239, 231, 221, 176, 198, 240, 214, 66, 131, 123, 161, 255, 16, 184, 163, 207, 149, 32, 65, 160, 120, 224, 255, 106, 36, 131, 192, 71, 15, 168, 214, 81, 48, 126, 178, 172, 35, 174, 78, 144, 7, 159, 13, 254, 74, 177, 112, 85, 14, 86, 82, 92, 14, 214, 148, 241, 177, 165, 0, 15, 51, 162, 181, 60, 117, 39, 242, 239, 82, 227, 236, 216, 139, 193, 55, 113, 19, 133, 63, 76, 83, 4, 237, 100, 118, 87, 150, 163, 127, 176, 226, 140, 181, 2, 249, 73, 81, 192, 4, 196, 165, 197, 196, 81, 214, 193, 144, 239, 115, 210, 135, 229, 193, 131, 224, 18, 157, 211, 54, 189, 124, 73, 166, 180, 210, 23, 228, 78, 169, 106, 217, 242, 68, 86, 50, 138, 249, 136, 123, 99, 129, 144, 18, 33, 67, 117, 168, 140, 231, 225, 179, 70, 4, 209, 82, 40, 231, 4, 232, 248, 137, 234, 15, 194, 115, 71, 101, 219, 154, 36, 119, 29, 150, 31, 28, 6, 33, 251, 86, 176, 240, 192, 141, 246, 134, 158, 194, 124, 33, 173, 241, 9, 102, 21, 236, 162, 98, 17, 119, 128, 86, 87, 148, 250, 148, 219, 51, 133, 29, 252, 50, 108, 1, 22, 80, 80, 60, 104, 238, 72, 11, 179, 15, 206, 48, 189, 24, 108, 101, 203, 17, 117, 32, 196, 147, 250, 234, 49, 147, 132, 250, 105, 149, 170, 104, 192, 184, 115, 46, 248, 209, 182, 38, 60, 144, 231, 158, 96, 229, 121, 234, 12, 209, 120, 186, 192, 245, 124, 237, 19, 113, 117, 110, 163, 30, 26, 63, 49, 98, 8, 253, 24, 82, 51, 117, 64, 45, 250, 6, 74, 199, 184, 39, 122, 187, 75, 119, 101, 5, 62, 243, 82, 61, 239, 20, 65, 88, 194, 141, 218, 217, 127, 176, 235, 26, 88, 175, 75, 154, 86, 82, 111, 226, 147, 149, 229, 182, 17, 32, 95, 6, 116, 75, 7, 87, 108, 154, 94, 194, 250, 97, 106, 50, 125, 249, 29, 243, 218, 74, 218, 36, 136, 231, 41, 43, 199, 226, 225, 83, 248, 39, 115, 187, 233, 231, 28, 68, 168, 221, 37, 197, 152, 95, 128, 61, 109, 87, 87, 28, 45, 245, 191, 132, 168, 143, 181, 227, 13, 35, 22, 40, 179, 55, 230, 103, 145, 87, 61, 50, 104, 245, 173, 34, 19, 57, 22, 215, 86, 144, 0, 194, 139, 14, 235, 236, 119, 79, 186, 44, 185, 152, 190, 154, 91, 31, 132, 45, 68, 187, 97, 253, 122, 113, 4, 144, 92, 102, 7, 172, 235, 28, 36, 159, 27, 139, 245, 165, 97, 44, 80, 233, 55, 72, 221, 162, 147, 198, 151, 201, 174, 60, 186, 119, 78, 95, 141, 66, 99, 35, 32, 20, 61, 67, 71, 69, 166, 237, 165, 45, 194, 143, 44, 242, 96, 14, 54, 204, 121, 108, 115, 132, 172, 151, 47, 6, 217, 127, 202, 228, 166, 154, 94, 174, 198, 5, 62, 145, 112, 149, 165, 188, 55, 47, 13, 62, 75, 234, 208, 167, 136, 37, 209, 203, 188, 85, 72, 228, 173, 50, 51, 212, 69, 194, 112, 112, 26, 135, 27, 82, 219, 210, 93, 168, 193, 1, 167, 153, 116, 207, 12, 101, 157, 98, 8, 211, 170, 92, 200, 152, 33, 129, 81, 167, 2, 189, 245, 210, 6, 159, 83, 29, 211, 128, 148, 221, 28, 103, 45, 133, 245, 212, 39, 204, 94, 16, 92, 116, 251, 163, 18, 159, 160, 49, 38, 95, 212, 191, 235, 215, 248, 88, 202, 45, 45, 93, 244, 187, 79, 134, 75, 104, 83, 189, 31, 172, 21, 64, 217, 93, 123, 45, 161, 68, 50, 194, 147, 23, 19, 1, 37, 169, 199, 207, 140, 31, 184, 104, 81, 143, 200, 198, 14, 205, 209, 252, 228, 253, 247, 242, 132, 29, 43, 149, 212, 68, 29, 154, 221, 71, 150, 77, 169, 83, 200, 251, 152, 46, 214, 206, 245, 199, 53, 166, 12, 112, 216, 52, 135, 33, 2, 188, 75, 63, 110, 140, 42, 155, 136, 164, 175, 113, 54, 151, 16, 80, 8, 140, 220, 48, 252, 143, 70, 151, 255, 150, 253, 105, 192, 249, 80, 92, 142, 21, 76, 55, 223, 85, 224, 171, 61, 14, 81, 66, 24, 141, 70, 171, 223, 250, 200, 140, 132, 239, 151, 235, 4, 118, 218, 235, 51, 210, 0, 61, 54, 136, 131, 52, 98, 157, 243, 68, 99, 139, 159, 61, 208, 155, 124, 90, 189, 236, 37, 222, 28, 212, 33, 101, 138, 157, 203, 134, 87, 129, 74, 122, 251, 3, 202, 170, 239, 162, 148, 182, 203, 183, 157, 130, 115, 213, 90, 4, 96, 25, 196, 143, 234, 135, 14, 0, 103, 8, 178, 46, 205, 167, 74, 183, 57, 201, 148, 226, 211, 177, 145, 85, 144, 34, 66, 144, 101, 192, 93, 86, 205, 82, 35, 231, 189, 37, 56, 59, 121, 40, 108, 211, 252, 202, 71, 209, 174, 29, 171, 63, 75, 226, 253, 6, 106, 207, 195, 184, 134, 148, 172, 59, 167, 223, 138, 168, 181, 51, 85, 107, 239, 40, 201, 2, 236, 162, 34, 243, 200, 227, 21, 180, 114, 11, 33, 191, 87, 55, 119, 41, 126, 220, 86, 243, 171, 6, 126, 106, 15, 240, 10, 62, 186, 1, 93, 195, 223, 205, 122, 188, 96, 141, 116, 119, 239, 8, 101, 111, 226, 65, 153, 103, 109, 240, 238, 201, 133, 154, 97, 7, 164, 128, 8, 239, 201, 39, 153, 121, 233, 62, 104, 57, 194, 223, 107, 234, 83, 63, 117, 127, 15, 171, 177, 140, 226, 182, 166, 233, 207, 204, 175, 222, 11, 7, 78, 222, 243, 139, 61, 73, 157, 159, 146, 86, 223, 99, 13, 51, 57, 95, 141, 178, 3, 125, 3, 177, 21, 158, 43, 16, 64, 3, 35, 54, 6, 88, 72, 81, 133, 184, 179, 125, 243, 26, 144, 145, 51, 119, 72, 121, 218, 50, 190, 106, 233, 75, 190, 137, 222, 240, 124, 228, 52, 0, 69, 73, 216, 67, 65, 204, 4, 167, 173, 64, 105, 5, 164, 30, 17, 59, 1, 65, 159, 250, 254, 99, 159, 75, 170, 11, 40, 181, 130, 112, 214, 190, 10, 140, 254, 137, 249, 211, 65, 109, 159, 135, 11, 182, 194, 192, 112, 83, 73, 19, 73, 184, 58, 192, 204, 129, 60, 250, 180, 116, 136, 60, 214, 240, 155, 212, 2, 38, 34, 4, 89, 116, 98, 128, 174, 158, 113, 229, 236, 55, 95, 168, 88, 173, 231, 151, 32, 39, 127, 88, 222, 77, 27, 211, 1, 214, 34, 55, 204, 205, 186, 252, 201, 160, 99, 52, 38, 173, 187, 57, 126, 151, 1, 18, 5, 127, 67, 254, 222, 143, 200, 1, 241, 176, 10, 223, 156, 96, 61, 230, 53, 42, 22, 105, 153, 97, 225, 204, 98, 5, 67, 32, 247, 191, 186, 100, 32, 110, 216, 180, 108, 225, 54, 219, 68, 174, 71, 168, 205, 118, 38, 248, 144, 7, 160, 125, 112, 19, 125, 178, 165, 150, 239, 71, 163, 236, 204, 201, 40, 124, 125, 196, 17, 109, 238, 45, 177, 46, 107, 98, 48, 28, 191, 65, 86, 13, 133, 7, 60, 139, 16, 8, 235, 38, 185, 253, 187, 183, 207, 11, 233, 134, 246, 230, 241, 121, 110, 253, 126, 89, 29, 126, 177, 62, 51, 39, 95, 119, 123, 255, 188, 37, 244, 140, 187, 210, 55, 198, 175, 198, 218, 0, 8, 84, 103, 128, 73, 198, 0, 4, 235, 15, 193, 194, 239, 6, 56, 197, 251, 119, 135, 113, 166, 133, 243, 237, 192, 104, 180, 171, 13, 116, 144, 40, 192, 49, 119, 150, 69, 149, 23, 54, 234, 118, 49, 169, 242, 232, 80, 103, 30, 169, 52, 98, 49, 140, 255, 186, 65, 192, 224, 90, 86, 248, 173, 27, 183, 162, 183, 208, 145, 104, 210, 220, 136, 26, 227, 167, 161, 69, 73, 218, 119, 46, 126, 10, 224, 207, 60, 107, 47, 128, 194, 66, 127, 18, 104, 161, 209, 64, 0, 18, 45, 212, 82, 204, 204, 50, 98, 224, 32, 169, 240, 5, 180, 202, 189, 22, 201, 86, 250, 239, 212, 197, 56, 6, 45, 5, 24, 188, 98, 15, 75, 224, 227, 173, 61, 233, 116, 148, 98, 51, 165, 138, 170, 62, 94, 228, 187, 142, 57, 214, 181, 10, 6, 178, 122, 138, 242, 181, 54, 229, 80, 48, 48, 167, 54, 25, 245, 79, 63, 64, 72, 191, 44, 146, 70, 79, 109, 90, 32, 91, 141, 67, 251, 66, 37, 21, 155, 42, 3, 97, 61, 40, 106, 169, 225, 180, 5, 158, 116, 32, 148, 214, 27, 227, 40, 215, 227, 104, 91, 181, 203, 86, 76, 91, 0, 222, 98, 74, 178, 24, 1, 163, 217, 120, 207, 112, 153, 10, 231, 149, 147, 15, 90, 238, 106, 196, 130, 148, 98, 26, 208, 71, 47, 144, 72, 19, 23, 208, 43, 75, 38, 161, 225, 203, 133, 147, 249, 225, 233, 245, 225, 37, 222, 77, 227, 65, 12, 60, 155, 177, 76, 243, 93, 35, 168, 70, 180, 23, 148, 195, 239, 135, 63, 179, 193, 153, 73, 99, 230, 83, 220, 232, 190, 113, 86, 24, 130, 182, 79, 80, 250, 67, 144, 140, 128, 228, 110, 174, 255, 4, 37, 242, 168, 11, 2, 0, 184, 10, 140, 16, 71, 5, 82, 10, 253, 85, 168, 36, 76, 89, 222, 22, 115, 173, 206, 44, 252, 127, 242, 131, 111, 129, 79, 185, 20, 102, 38, 193, 74, 120, 182, 211, 9, 108, 225, 0, 250, 103, 67, 231, 218, 20, 11, 250, 33, 77, 157, 222, 239, 116, 253, 58, 232, 191, 196, 232, 100, 206, 56, 202, 68, 121, 33, 186, 22, 255, 114, 243, 66, 197, 25, 122, 223, 62, 11, 101, 92, 75, 36, 20, 165, 177, 66, 171, 215, 102, 109, 180, 38, 140, 26, 174, 159, 227, 113, 202, 106, 221, 58, 229, 111, 8, 248, 144, 140, 178, 225, 43, 151, 226, 211, 211, 49, 123, 98, 50, 50, 121, 68, 91, 154, 31, 106, 95, 52, 200, 208, 147, 73, 167, 95, 254, 81, 178, 41, 66, 7, 116, 143, 156, 147, 193, 60, 83, 116, 21, 105, 68, 133, 25, 39, 211, 80, 39, 0, 237, 159, 165, 230, 232, 7, 198, 140, 184, 38, 12, 210, 38, 149, 8, 36, 154, 108, 28, 100, 25, 144, 85, 86, 197, 68, 54, 175, 49, 167, 183, 4, 111, 174, 169, 125, 79, 201, 234, 129, 250, 49, 95, 233, 170, 26, 88, 76, 245, 178, 253, 34, 160, 61, 140, 30, 87, 105, 114, 35, 165, 10, 178, 35, 192, 237, 220, 249, 59, 18, 237, 162, 206, 250, 211, 218, 47, 74, 159, 162, 33, 208, 234, 96, 63, 104, 121, 36, 187, 162, 155, 7, 247, 173, 223, 10, 144, 21, 191, 60, 129, 109, 191, 65, 116, 54, 228, 29, 237, 174, 65, 145, 21, 240, 44, 63, 236, 88, 184, 28, 67, 55, 123, 9, 152, 72, 108, 108, 237, 194, 6, 42, 88, 221, 80, 109, 224, 123, 209, 53, 159, 7, 0, 49, 66, 54, 99, 36, 105, 97, 3, 7, 73, 159, 72, 142, 146, 141, 164, 150, 134, 74, 89, 192, 208, 96, 8, 3, 127, 118, 154, 48, 34, 209, 255, 145, 208, 178, 246, 209, 134, 55, 193, 124, 32, 34, 151, 212, 120, 155, 94, 137, 142, 201, 99, 196, 42, 162, 94, 109, 129, 3, 69, 73, 0, 91, 252, 83, 61, 226, 164, 137, 162, 17, 2, 83, 154, 202, 241, 189, 236, 182, 84, 162, 184, 79, 179, 52, 233, 176, 53, 151, 228, 80, 153, 220, 158, 133, 134, 160, 220, 171, 149, 170, 164, 64, 181, 27, 19, 249, 32, 77, 110, 194, 11, 18, 110, 79, 57, 198, 172, 56, 54, 217, 86, 88, 122, 150, 76, 94, 117, 149, 234, 147, 237, 22, 191, 87, 107, 204, 108, 95, 178, 38, 3, 158, 84, 85, 245, 208, 78, 59, 4, 1, 159, 0, 172, 90, 118, 165, 24, 228, 176, 56, 254, 90, 34, 4, 134, 245, 119, 34, 35, 210, 56, 140, 137, 216, 234, 218, 78, 202, 207, 205, 46, 116, 90, 200, 190, 160, 123, 213, 246, 177, 232, 114, 52, 141, 44, 223, 183, 194, 145, 57, 155, 69, 96, 68, 41, 176, 128, 233, 84, 209, 146, 5, 119, 144, 46, 204, 49, 231, 47, 249, 202, 62, 255, 213, 195, 148, 42, 216, 124, 122, 89, 131, 78, 158, 213, 218, 29, 32, 122, 56, 80, 233, 104, 42, 55, 189, 107, 194, 238, 245, 219, 88, 183, 209, 49, 211, 215, 169, 193, 248, 3, 217, 53, 165, 201, 20, 8, 208, 254, 23, 152, 88, 94, 8, 60, 214, 18, 234, 252, 251, 0, 95, 130, 207, 248, 26, 224, 84, 177, 80, 194, 83, 132, 147, 21, 166, 77, 40, 42, 220, 172, 151, 164, 190, 173, 177, 139, 255, 12, 10, 19, 62, 94, 92, 174, 4, 36, 9, 173, 249, 58, 100, 243, 221, 42, 221, 88, 19, 23, 252, 179, 226, 75, 43, 25, 8, 250, 174, 14, 39, 230, 247, 87, 97, 215, 51, 228, 46, 222, 103, 151, 200, 137, 73, 223, 202, 205, 127, 72, 132, 3, 195, 156, 97, 166, 22, 194, 236, 46, 57, 47, 49, 249, 90, 153, 15, 47, 198, 219, 110, 8, 203, 43, 140, 232, 191, 49, 44, 103, 30, 39, 168, 70, 136, 180, 23, 245, 82, 207, 240, 107, 65, 66, 74, 96, 178, 136, 191, 161, 92, 42, 225, 100, 210, 52, 229, 252, 189, 69, 110, 255, 244, 15, 21, 209, 140, 80, 203, 140, 85, 205, 8, 135, 86, 176, 166, 216, 91, 189, 196, 79, 80, 246, 106, 41, 248, 185, 195, 46, 179, 168, 109, 71, 121, 153, 143, 111, 63, 22, 69, 52, 37, 2, 155, 145, 104, 85, 43, 47, 69, 60, 65, 22, 19, 198, 104, 215, 56, 12, 184, 98, 37, 32, 199, 106, 71, 115, 176, 75, 122, 248, 39, 177, 189, 244, 72, 96, 135, 214, 77, 209, 140, 68, 180, 102, 233, 127, 212, 59, 4, 181, 231, 62, 225, 240, 62, 18, 179, 44, 59, 135, 47, 197, 182, 6, 100, 162, 56, 159, 43, 35, 209, 35, 197, 203, 143, 58, 139, 166, 13, 80, 9, 242, 49, 45, 99, 115, 238, 190, 236, 47, 250, 96, 28, 6, 119, 197, 178, 112, 171, 50, 41, 143, 171, 212, 168, 8, 51, 212, 90, 171, 75, 47, 156, 103, 80, 28, 172, 228, 49, 227, 215, 213, 62, 111, 153, 20, 112, 179, 11, 16, 60, 207, 161, 86, 116, 116, 250, 81, 74, 232, 151, 34, 165, 85, 139, 202, 161, 208, 179, 141, 201, 224, 108, 168, 30, 54, 32, 34, 4, 243, 35, 18, 47, 174, 240, 115, 229, 17, 185, 144, 180, 30, 239, 68, 235, 182, 77, 76, 207, 102, 165, 1, 200, 145, 125, 139, 253, 239, 40, 83, 255, 171, 78, 120, 109, 92, 120, 76, 120, 205, 116, 211, 161, 17, 76, 109, 126, 28, 241, 63, 183, 39, 177, 224, 192, 198, 137, 110, 225, 202, 64, 6, 239, 237, 121, 13, 35, 19, 205, 39, 43, 230, 203, 77, 184, 99, 145, 240, 37, 114, 134, 117, 17, 54, 9, 95, 193, 88, 65, 126, 39, 146, 126, 62, 114, 55, 187, 222, 121, 145, 149, 211, 121, 6, 17, 107, 175, 89, 122, 34, 44, 116, 218, 126, 187, 71, 191, 16, 228, 98, 23, 87, 77, 81, 13, 14, 38, 157, 141, 169, 233, 29, 98, 152, 8, 234, 96, 91, 77, 120, 220, 211, 46, 121, 180, 111, 168, 40, 242, 38, 236, 168, 111, 10, 85, 94, 133, 45, 74, 250, 28, 253, 107, 199, 6, 218, 55, 207, 103, 119, 97, 160, 250, 176, 135, 252, 21, 176, 224, 188, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 89, 53, 19, 83, 80, 184, 110, 48, 13, 148, 38, 57, 0, 0, 0, 0, 89, 53, 19, 83, 80, 184, 110, 48, 13, 148, 38, 57, 0, 0, 0, 0, 89, 53, 19, 83, 53, 157, 46, 228, 44, 100, 6, 157, 0, 0, 0, 0, 89, 53, 19, 83, 49, 100, 95, 92, 3, 214, 107, 168, 0, 0, 0, 0, 89, 53, 19, 83, 105, 200, 47, 192, 42, 36, 168, 23, 0, 0, 0, 0, 89, 53, 19, 83, 103, 248, 160, 44, 8, 171, 233, 143, 0, 0, 0, 0, 89, 53, 19, 83, 43, 27, 189, 16, 28, 10, 94, 76, 0, 0, 0, 0, 89, 53, 19, 68, 242, 185, 50, 196, 1, 216, 57, 65, 0, 0, 0, 0, 89, 53, 19, 139, 37, 34, 243, 88, 5, 112, 102, 11, 0, 0, 0, 0, 89, 53, 19, 83, 123, 8, 171, 64, 33, 188, 59, 16, 0, 0, 0, 0, 89, 53, 19, 163, 245, 104, 124, 68, 9, 98, 25, 235, 0, 0, 0, 0, 89, 53, 19, 139, 65, 107, 226, 4, 8, 144, 155, 158, 0, 0, 0, 0, 89, 53, 19, 234, 192, 216, 187, 232, 5, 154, 84, 215, 0, 0, 0, 0, 89, 53, 19, 191, 0, 65, 23, 88, 9, 157, 187, 194, 0, 0, 0, 0, 89, 53, 19, 68, 167, 194, 165, 224, 10, 219, 222, 27, 0, 0, 0, 0, 89, 53, 18, 125, 157, 130, 214, 120, 4, 43, 225, 191, 0, 0, 0, 0, 89, 53, 21, 136, 206, 70, 37, 64, 17, 207, 214, 132, 0, 0, 0, 0, 89, 53, 19, 234, 199, 35, 129, 64, 7, 207, 4, 156, 0, 0, 0, 0, 89, 53, 18, 125, 97, 236, 218, 12, 5, 48, 197, 88, 0, 0, 0, 0, 89, 53, 15, 12, 8, 154, 2, 16, 3, 86, 85, 126, 0, 0, 0, 0, 89, 53, 21, 208, 43, 160, 216, 240, 2, 140, 168, 206, 0, 0, 0, 0, 89, 53, 21, 136, 214, 251, 86, 200, 5, 246, 36, 108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 196, 143, 72, 43, 189, 196, 235, 72, 200, 143, 170, 119, 170, 14, 207, 160, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 177, 44, 72, 181, 35, 106, 117, 91, 162, 103, 79, 11, 78, 19, 252, 154, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 184, 42, 92, 84, 222, 230, 10, 98, 4, 230, 99, 133, 197, 27, 254, 186, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 162, 126, 6, 242, 61, 40, 168, 218, 169, 143, 71, 23, 196, 156, 153, 165, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 205, 239, 124, 102, 148, 144, 125, 146, 206, 3, 105, 225, 248, 47, 202, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 95, 181, 12, 13, 236, 84, 197, 170, 108, 219, 112, 173, 238, 156, 144, 75, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 81, 73, 188, 4, 159, 115, 0, 157, 56, 153, 159, 78, 129, 71, 60, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 209, 66, 138, 207, 127, 187, 145, 247, 131, 145, 228, 118, 103, 112, 67, 178, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 243, 190, 107, 187, 182, 254, 134, 98, 69, 119, 21, 167, 187, 240, 107, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 193, 218, 206, 184, 36, 238, 107, 27, 165, 73, 170, 187, 47, 157, 136, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 180, 158, 110, 146, 49, 211, 192, 184, 117, 18, 88, 103, 37, 136, 172, 79, 27, 160, 123, 142, 7, 160, 51, 68, 215, 216, 144, 248, 89, 147, 47, 63, 12, 16, 98, 29, 203, 214, 232, 245, 170, 92, 58, 10, 193, 138, 40, 201, 159, 227, 160, 120, 50, 119, 93, 239, 86, 22, 245, 98, 16, 169, 180, 14, 136, 163, 121, 187, 213, 145, 33, 8, 153, 67, 177, 91, 117, 75, 65, 71, 46, 130, 81, 192]; - let block_rlp = UntrustedRlp::new(&block); - let compressed = block_rlp.compress(RlpType::Blocks).into_vec(); - let compressed_rlp = UntrustedRlp::new(&compressed); - assert_eq!(compressed_rlp.decompress(RlpType::Blocks).into_vec(), block); - } -} diff --git a/util/rlp/src/lib.rs b/util/rlp/src/lib.rs index 677c4221f1b..a5889a4efc2 100644 --- a/util/rlp/src/lib.rs +++ b/util/rlp/src/lib.rs @@ -43,27 +43,21 @@ extern crate ethereum_types as bigint; extern crate elastic_array; extern crate rustc_hex; -#[macro_use] -extern crate lazy_static; - mod traits; mod error; mod rlpin; mod untrusted_rlp; mod stream; -mod compression; -mod common; mod impls; use std::borrow::Borrow; use elastic_array::ElasticArray1024; pub use error::DecoderError; -pub use traits::{Decodable, Encodable, Compressible}; +pub use traits::{Decodable, Encodable}; pub use untrusted_rlp::{UntrustedRlp, UntrustedRlpIterator, PayloadInfo, Prototype}; pub use rlpin::{Rlp, RlpIterator}; pub use stream::RlpStream; -pub use compression::RlpType; /// The RLP encoded empty data (used to mean "null value"). pub const NULL_RLP: [u8; 1] = [0x80; 1]; diff --git a/util/rlp/src/traits.rs b/util/rlp/src/traits.rs index e2bb2ab9173..193d0bf84ad 100644 --- a/util/rlp/src/traits.rs +++ b/util/rlp/src/traits.rs @@ -28,14 +28,3 @@ pub trait Encodable { s.drain() } } - -/// Trait for compressing and decompressing RLP by replacement of common terms. -pub trait Compressible: Sized { - /// Indicates the origin of RLP to be compressed. - type DataType; - - /// Compress given RLP type using appropriate methods. - fn compress(&self, t: Self::DataType) -> ElasticArray1024; - /// Decompress given RLP type using appropriate methods. - fn decompress(&self, t: Self::DataType) -> ElasticArray1024; -} diff --git a/util/rlp_compress/Cargo.toml b/util/rlp_compress/Cargo.toml new file mode 100644 index 00000000000..ee9e9b1e193 --- /dev/null +++ b/util/rlp_compress/Cargo.toml @@ -0,0 +1,9 @@ +[package] +name = "rlp_compress" +version = "0.1.0" +authors = ["Parity Technologies "] + +[dependencies] +rlp = { path = "../rlp" } +elastic-array = "0.9" +lazy_static = "1.0" diff --git a/util/rlp/src/common.rs b/util/rlp_compress/src/common.rs similarity index 94% rename from util/rlp/src/common.rs rename to util/rlp_compress/src/common.rs index 1f4e2c517e9..79f8a93c1f8 100644 --- a/util/rlp/src/common.rs +++ b/util/rlp_compress/src/common.rs @@ -8,16 +8,16 @@ //! Contains RLPs used for compression. -use compression::InvalidRlpSwapper; +use Swapper; lazy_static! { /// Swapper for snapshot compression. - pub static ref SNAPSHOT_RLP_SWAPPER: InvalidRlpSwapper<'static> = InvalidRlpSwapper::new(EMPTY_RLPS, INVALID_RLPS); + pub static ref SNAPSHOT_SWAPPER: Swapper<'static> = Swapper::new(EMPTY_RLPS, INVALID_RLPS); } lazy_static! { /// Swapper with common long RLPs, up to 127 can be added. - pub static ref BLOCKS_RLP_SWAPPER: InvalidRlpSwapper<'static> = InvalidRlpSwapper::new(COMMON_RLPS, INVALID_RLPS); + pub static ref BLOCKS_SWAPPER: Swapper<'static> = Swapper::new(COMMON_RLPS, INVALID_RLPS); } static EMPTY_RLPS: &'static [&'static [u8]] = &[ diff --git a/util/rlp_compress/src/lib.rs b/util/rlp_compress/src/lib.rs new file mode 100644 index 00000000000..89c5e832834 --- /dev/null +++ b/util/rlp_compress/src/lib.rs @@ -0,0 +1,110 @@ +// Copyright 2015-2018 Parity Technologies +// +// Licensed under the Apache License, Version 2.0 or the MIT license +// , at your +// option. This file may not be copied, modified, or distributed +// except according to those terms. + +extern crate elastic_array; +#[macro_use] +extern crate lazy_static; +extern crate rlp; + +mod common; + +use std::cmp; +use std::collections::HashMap; +use elastic_array::ElasticArray1024; +use rlp::{UntrustedRlp, RlpStream}; +use common::{SNAPSHOT_SWAPPER, BLOCKS_SWAPPER}; + +pub fn snapshot_swapper() -> &'static Swapper<'static> { + &SNAPSHOT_SWAPPER as &Swapper +} + +pub fn blocks_swapper() -> &'static Swapper<'static> { + &BLOCKS_SWAPPER as &Swapper +} + +/// A trait used to compress rlp. +pub trait Compressor { + /// Get compressed version of given rlp. + fn compressed(&self, rlp: &[u8]) -> Option<&[u8]>; +} + +/// A trait used to convert compressed rlp into it's original version. +pub trait Decompressor { + /// Get decompressed rlp. + fn decompressed(&self, compressed: &[u8]) -> Option<&[u8]>; +} + +/// Call this function to compress rlp. +pub fn compress(c: &[u8], swapper: &Compressor) -> ElasticArray1024 { + let rlp = UntrustedRlp::new(c); + if rlp.is_data() { + ElasticArray1024::from_slice(swapper.compressed(rlp.as_raw()).unwrap_or_else(|| rlp.as_raw())) + } else { + map_rlp(&rlp, |r| compress(r.as_raw(), swapper)) + } +} + +/// Call this function to decompress rlp. +pub fn decompress(c: &[u8], swapper: &Decompressor) -> ElasticArray1024 { + let rlp = UntrustedRlp::new(c); + if rlp.is_data() { + ElasticArray1024::from_slice(swapper.decompressed(rlp.as_raw()).unwrap_or_else(|| rlp.as_raw())) + } else { + map_rlp(&rlp, |r| decompress(r.as_raw(), swapper)) + } +} + +fn map_rlp ElasticArray1024>(rlp: &UntrustedRlp, f: F) -> ElasticArray1024 { + let mut stream = RlpStream::new_list(rlp.item_count().unwrap_or_default()); + for subrlp in rlp.iter() { + stream.append_raw(&f(&subrlp), 1); + } + stream.drain() +} + +/// Stores RLPs used for compression +pub struct Swapper<'a> { + compressed_to_rlp: HashMap<&'a [u8], &'a [u8]>, + rlp_to_compressed: HashMap<&'a [u8], &'a [u8]>, +} + +impl<'a> Swapper<'a> { + /// Construct a swapper from a list of common RLPs + pub fn new(rlps_to_swap: &[&'a [u8]], compressed: &[&'a [u8]]) -> Self { + if rlps_to_swap.len() > 0x7e { + panic!("Invalid usage, only 127 RLPs can be swappable."); + } + + let items = cmp::min(rlps_to_swap.len(), compressed.len()); + let mut compressed_to_rlp = HashMap::with_capacity(items); + let mut rlp_to_compressed = HashMap::with_capacity(items); + + for (&rlp, &compressed) in rlps_to_swap.iter().zip(compressed.iter()) { + compressed_to_rlp.insert(compressed, rlp); + rlp_to_compressed.insert(rlp, compressed); + } + + Swapper { + compressed_to_rlp, + rlp_to_compressed, + } + } +} + +impl<'a> Decompressor for Swapper<'a> { + fn decompressed(&self, compressed: &[u8]) -> Option<&[u8]> { + self.compressed_to_rlp.get(compressed).cloned() + } +} + +impl<'a> Compressor for Swapper<'a> { + fn compressed(&self, rlp: &[u8]) -> Option<&[u8]> { + self.rlp_to_compressed.get(rlp).cloned() + } +} + diff --git a/util/rlp_compress/tests/compress.rs b/util/rlp_compress/tests/compress.rs new file mode 100644 index 00000000000..a01dbde358c --- /dev/null +++ b/util/rlp_compress/tests/compress.rs @@ -0,0 +1,50 @@ +extern crate rlp_compress; + +use rlp_compress::{compress, decompress, Swapper, snapshot_swapper, blocks_swapper, Compressor, Decompressor}; + +#[test] +fn invalid_rlp_swapper() { + let to_swap: &[&[u8]] = &[&[0x83, b'c', b'a', b't'], &[0x83, b'd', b'o', b'g']]; + let invalid_rlp: &[&[u8]] = &[&[0x81, 0x00], &[0x81, 0x01]]; + let swapper = Swapper::new(to_swap, invalid_rlp); + assert_eq!(Some(invalid_rlp[0]), swapper.compressed(&[0x83, b'c', b'a', b't'])); + assert_eq!(None, swapper.compressed(&[0x83, b'b', b'a', b't'])); + assert_eq!(Some(to_swap[1]), swapper.decompressed(invalid_rlp[1])); +} + +#[test] +fn simple_compression() { + let basic_account_rlp = vec![248, 68, 4, 2, 160, 86, 232, 31, 23, 27, 204, 85, 166, 255, 131, 69, 230, 146, 192, 248, 110, 91, 72, 224, 27, 153, 108, 173, 192, 1, 98, 47, 181, 227, 99, 180, 33, 160, 197, 210, 70, 1, 134, 247, 35, 60, 146, 126, 125, 178, 220, 199, 3, 192, 229, 0, 182, 83, 202, 130, 39, 59, 123, 250, 216, 4, 93, 133, 164, 112]; + let compressed = compress(&basic_account_rlp, snapshot_swapper()); + assert_eq!(compressed.to_vec(), vec![198, 4, 2, 129, 0, 129, 1]); + let decompressed = decompress(&compressed, snapshot_swapper()); + assert_eq!(decompressed.to_vec(), basic_account_rlp); +} + +#[test] +fn nested_list_rlp() { + let nested_basic_account_rlp = vec![228, 4, 226, 2, 160, 86, 232, 31, 23, 27, 204, 85, 166, 255, 131, 69, 230, 146, 192, 248, 110, 91, 72, 224, 27, 153, 108, 173, 192, 1, 98, 47, 181, 227, 99, 180, 33]; + + let compressed = compress(&nested_basic_account_rlp, blocks_swapper()); + assert_eq!(compressed, vec![197, 4, 195, 2, 129, 0]); + let decompressed = decompress(&compressed, blocks_swapper()); + assert_eq!(decompressed.into_vec(), nested_basic_account_rlp); + let compressed = compress(&nested_basic_account_rlp, snapshot_swapper()); + assert_eq!(compressed, vec![197, 4, 195, 2, 129, 0]); + let decompressed = decompress(&compressed, snapshot_swapper()); + assert_eq!(decompressed.into_vec(), nested_basic_account_rlp); +} + +#[test] +fn malformed_rlp() { + let malformed = vec![248, 81, 128, 128, 128, 128, 128, 160, 12, 51, 241, 93, 69, 218, 74, 138, 79, 115, 227, 44, 216, 81, 46, 132, 85, 235, 96, 45, 252, 48, 181, 29, 75, 141, 217, 215, 86, 160, 109, 130, 160, 140, 36, 93, 200, 109, 215, 100, 241, 246, 99, 135, 92, 168, 149, 170, 114, 9, 143, 4, 93, 25, 76, 54, 176, 119, 230, 170, 154, 105, 47, 121, 10, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128]; + assert_eq!(decompress(&malformed, blocks_swapper()).into_vec(), malformed); +} + +#[test] +fn large_block() { + let block = vec![249, 97, 87, 249, 2, 19, 160, 137, 152, 36, 115, 234, 67, 89, 207, 44, 42, 186, 128, 91, 242, 10, 16, 42, 193, 195, 2, 129, 60, 181, 150, 192, 178, 117, 15, 18, 100, 174, 249, 160, 29, 204, 77, 232, 222, 199, 93, 122, 171, 133, 181, 103, 182, 204, 212, 26, 211, 18, 69, 27, 148, 138, 116, 19, 240, 161, 66, 253, 64, 212, 147, 71, 148, 223, 125, 126, 5, 57, 51, 181, 204, 36, 55, 47, 135, 140, 144, 230, 45, 173, 173, 93, 66, 160, 93, 42, 52, 28, 156, 139, 242, 60, 121, 90, 117, 99, 92, 182, 196, 25, 131, 16, 155, 186, 239, 137, 33, 118, 105, 232, 230, 239, 213, 240, 207, 6, 160, 59, 72, 35, 216, 124, 37, 62, 178, 34, 97, 180, 254, 212, 103, 179, 45, 247, 168, 205, 145, 7, 157, 75, 247, 83, 230, 233, 248, 97, 132, 232, 161, 160, 122, 167, 249, 196, 203, 2, 173, 180, 106, 203, 129, 214, 232, 181, 87, 39, 60, 99, 135, 6, 40, 34, 163, 118, 140, 149, 79, 241, 238, 230, 201, 194, 185, 1, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 0, 64, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 134, 36, 160, 31, 187, 182, 29, 131, 58, 212, 207, 131, 71, 168, 13, 131, 45, 60, 7, 132, 89, 53, 51, 233, 147, 69, 84, 67, 32, 101, 116, 104, 101, 114, 109, 105, 110, 101, 32, 45, 32, 69, 85, 49, 160, 204, 49, 229, 99, 26, 47, 30, 50, 223, 117, 111, 168, 102, 158, 12, 186, 140, 98, 193, 196, 214, 29, 13, 87, 44, 31, 216, 48, 250, 251, 148, 69, 136, 225, 206, 131, 96, 2, 39, 50, 46, 249, 95, 61, 248, 109, 1, 133, 4, 227, 178, 146, 0, 130, 82, 8, 148, 123, 45, 95, 28, 247, 139, 190, 196, 52, 39, 251, 53, 226, 79, 251, 1, 98, 34, 68, 240, 136, 18, 81, 1, 26, 180, 46, 168, 0, 128, 129, 157, 160, 31, 164, 62, 186, 38, 56, 118, 133, 24, 180, 239, 139, 254, 154, 196, 115, 8, 246, 45, 233, 227, 165, 192, 193, 7, 111, 1, 169, 2, 204, 2, 144, 160, 42, 60, 78, 200, 5, 113, 98, 65, 250, 105, 0, 164, 152, 81, 235, 154, 100, 204, 182, 141, 174, 39, 107, 127, 219, 120, 63, 221, 237, 87, 57, 9, 249, 94, 203, 52, 133, 2, 84, 11, 228, 0, 131, 44, 233, 255, 148, 137, 61, 196, 25, 119, 102, 53, 248, 253, 27, 31, 169, 147, 75, 245, 41, 174, 242, 86, 7, 128, 185, 94, 100, 194, 32, 154, 203, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 60, 131, 110, 76, 27, 36, 34, 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 138, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 91, 96, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 92, 224, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 248, 249, 1, 245, 160, 89, 97, 73, 3, 84, 63, 105, 163, 169, 7, 237, 254, 220, 243, 13, 27, 0, 45, 215, 39, 235, 232, 237, 22, 162, 83, 99, 164, 247, 240, 48, 66, 160, 29, 204, 77, 232, 222, 199, 93, 122, 171, 133, 181, 103, 182, 204, 212, 26, 211, 18, 69, 27, 148, 138, 116, 19, 240, 161, 66, 253, 64, 212, 147, 71, 148, 137, 61, 196, 25, 119, 102, 53, 248, 253, 27, 31, 169, 147, 75, 245, 41, 174, 242, 86, 7, 160, 243, 100, 253, 32, 58, 153, 124, 189, 215, 216, 21, 229, 230, 182, 39, 222, 135, 217, 92, 155, 164, 143, 79, 14, 178, 128, 26, 245, 152, 197, 247, 33, 160, 98, 156, 249, 227, 33, 40, 127, 226, 250, 254, 222, 21, 37, 66, 5, 23, 142, 73, 121, 64, 233, 198, 110, 212, 131, 134, 126, 38, 218, 85, 149, 212, 160, 32, 179, 60, 112, 219, 114, 185, 205, 184, 204, 31, 210, 181, 8, 109, 97, 227, 206, 41, 177, 238, 122, 205, 193, 93, 163, 176, 107, 28, 181, 63, 19, 185, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 134, 36, 236, 76, 26, 58, 130, 131, 58, 210, 155, 131, 71, 183, 132, 130, 82, 8, 132, 89, 53, 19, 83, 160, 83, 109, 97, 114, 116, 80, 111, 111, 108, 45, 79, 76, 69, 66, 100, 120, 122, 50, 54, 106, 73, 50, 74, 65, 72, 109, 52, 48, 48, 48, 48, 48, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 203, 86, 242, 75, 191, 176, 245, 37, 106, 66, 34, 44, 77, 161, 164, 143, 56, 229, 102, 192, 191, 114, 46, 137, 15, 59, 249, 198, 20, 64, 167, 176, 167, 146, 234, 72, 147, 122, 168, 34, 174, 210, 94, 131, 105, 110, 180, 48, 248, 10, 127, 156, 194, 83, 60, 48, 89, 126, 86, 90, 218, 235, 170, 15, 206, 23, 82, 13, 250, 255, 240, 112, 168, 137, 111, 204, 205, 125, 24, 81, 118, 165, 92, 28, 127, 50, 223, 173, 231, 234, 212, 181, 9, 113, 72, 250, 97, 126, 194, 18, 102, 51, 189, 147, 246, 2, 201, 27, 206, 15, 130, 172, 1, 206, 219, 204, 49, 211, 162, 78, 101, 26, 16, 73, 106, 70, 209, 118, 140, 59, 133, 162, 114, 14, 92, 8, 26, 83, 213, 91, 136, 207, 228, 86, 13, 208, 64, 85, 211, 143, 252, 181, 128, 77, 187, 198, 50, 91, 26, 156, 109, 233, 136, 36, 216, 142, 87, 112, 45, 166, 235, 118, 128, 191, 66, 23, 48, 32, 3, 41, 37, 103, 8, 180, 236, 77, 106, 59, 18, 77, 206, 23, 154, 143, 236, 63, 235, 52, 105, 155, 38, 207, 31, 145, 193, 98, 251, 216, 224, 213, 250, 164, 22, 21, 227, 190, 223, 74, 29, 107, 0, 103, 187, 53, 129, 204, 202, 170, 156, 19, 67, 185, 100, 252, 5, 129, 164, 58, 228, 121, 214, 27, 53, 35, 16, 238, 93, 64, 94, 4, 250, 138, 102, 22, 128, 37, 229, 104, 40, 245, 216, 107, 16, 52, 202, 54, 98, 43, 162, 245, 56, 48, 150, 41, 3, 224, 167, 171, 5, 254, 106, 199, 0, 47, 238, 162, 27, 114, 168, 111, 231, 241, 102, 79, 138, 66, 168, 38, 157, 140, 76, 56, 155, 66, 109, 253, 243, 207, 79, 88, 167, 111, 251, 135, 38, 249, 85, 167, 36, 113, 7, 243, 34, 132, 113, 117, 8, 245, 93, 79, 171, 12, 223, 157, 41, 201, 221, 129, 60, 186, 164, 123, 1, 247, 202, 28, 61, 121, 156, 214, 55, 68, 36, 205, 113, 203, 45, 173, 24, 190, 32, 42, 207, 69, 189, 209, 221, 50, 18, 77, 60, 249, 233, 101, 216, 168, 47, 16, 155, 172, 248, 90, 115, 162, 134, 95, 6, 227, 202, 46, 26, 133, 135, 65, 251, 97, 109, 181, 141, 87, 156, 59, 40, 253, 87, 116, 244, 225, 242, 133, 77, 199, 120, 210, 152, 108, 90, 137, 127, 214, 137, 250, 180, 148, 113, 71, 68, 183, 216, 166, 169, 54, 174, 235, 51, 45, 172, 47, 5, 205, 154, 71, 241, 106, 228, 222, 150, 34, 95, 68, 251, 78, 244, 111, 59, 252, 138, 106, 31, 185, 107, 123, 22, 37, 184, 249, 117, 231, 56, 224, 137, 13, 254, 50, 240, 252, 220, 74, 33, 223, 163, 97, 74, 180, 232, 189, 92, 104, 193, 59, 255, 80, 10, 146, 236, 17, 80, 90, 139, 35, 212, 153, 19, 13, 159, 7, 184, 77, 193, 43, 251, 149, 176, 147, 169, 227, 236, 74, 98, 163, 193, 180, 4, 186, 19, 29, 212, 166, 177, 114, 30, 254, 241, 141, 95, 72, 99, 104, 101, 21, 141, 181, 85, 200, 184, 190, 11, 255, 74, 39, 89, 41, 204, 187, 96, 202, 188, 191, 157, 135, 239, 166, 155, 86, 32, 228, 198, 117, 41, 31, 54, 151, 229, 214, 56, 149, 187, 177, 123, 164, 182, 232, 188, 21, 94, 2, 155, 177, 124, 94, 151, 249, 116, 78, 62, 0, 194, 76, 156, 86, 227, 11, 25, 35, 6, 175, 77, 151, 60, 44, 114, 234, 153, 124, 79, 114, 88, 36, 178, 223, 229, 61, 90, 198, 60, 237, 224, 169, 115, 22, 152, 254, 235, 17, 130, 53, 1, 235, 67, 90, 238, 52, 170, 182, 73, 182, 138, 182, 189, 130, 170, 200, 91, 14, 150, 174, 100, 63, 29, 93, 171, 150, 154, 93, 72, 34, 156, 173, 108, 74, 29, 107, 197, 130, 86, 106, 178, 138, 210, 0, 92, 11, 78, 111, 226, 120, 169, 222, 50, 18, 156, 170, 98, 206, 97, 21, 28, 112, 234, 145, 2, 216, 188, 172, 150, 183, 39, 125, 17, 146, 49, 184, 242, 2, 60, 19, 162, 180, 210, 254, 249, 182, 240, 148, 184, 118, 113, 198, 27, 115, 165, 193, 97, 232, 201, 140, 63, 200, 153, 10, 162, 170, 69, 68, 152, 199, 103, 14, 164, 228, 120, 71, 47, 196, 217, 251, 181, 26, 112, 185, 116, 184, 77, 93, 236, 160, 235, 40, 0, 162, 199, 123, 223, 37, 53, 73, 177, 69, 207, 11, 137, 67, 204, 57, 231, 50, 185, 148, 48, 30, 102, 195, 248, 40, 189, 227, 187, 95, 166, 1, 7, 30, 112, 32, 101, 38, 72, 208, 52, 67, 131, 96, 34, 192, 156, 48, 92, 231, 188, 97, 103, 97, 41, 254, 33, 72, 190, 68, 184, 85, 114, 25, 94, 65, 144, 102, 176, 150, 76, 247, 146, 9, 188, 66, 4, 144, 98, 233, 196, 166, 7, 15, 54, 148, 247, 81, 52, 253, 27, 113, 235, 255, 230, 179, 168, 140, 95, 230, 163, 86, 235, 119, 185, 152, 223, 129, 48, 169, 170, 225, 224, 154, 164, 209, 129, 232, 92, 190, 187, 38, 217, 36, 113, 250, 61, 125, 168, 25, 70, 227, 39, 142, 12, 226, 20, 134, 82, 143, 147, 211, 173, 149, 223, 58, 27, 163, 18, 252, 148, 112, 19, 101, 144, 21, 105, 34, 200, 254, 11, 254, 8, 247, 210, 142, 194, 54, 150, 34, 171, 33, 203, 79, 79, 135, 186, 51, 68, 215, 106, 100, 21, 239, 178, 68, 230, 238, 72, 4, 31, 101, 161, 29, 204, 129, 234, 66, 195, 6, 69, 77, 48, 157, 137, 236, 96, 138, 119, 86, 147, 205, 172, 242, 28, 115, 188, 254, 216, 35, 89, 33, 27, 162, 243, 58, 102, 131, 50, 23, 169, 58, 218, 111, 6, 199, 164, 171, 104, 207, 34, 111, 229, 3, 207, 124, 96, 241, 95, 105, 113, 4, 16, 48, 163, 153, 0, 96, 174, 246, 3, 154, 124, 14, 132, 237, 184, 91, 217, 201, 53, 80, 39, 31, 113, 246, 67, 132, 85, 62, 153, 187, 240, 180, 117, 162, 17, 27, 190, 72, 178, 14, 101, 173, 200, 14, 196, 225, 212, 38, 153, 165, 147, 130, 51, 134, 40, 36, 7, 234, 179, 73, 28, 224, 4, 222, 10, 61, 65, 78, 23, 98, 246, 144, 9, 16, 180, 248, 56, 214, 162, 214, 18, 50, 67, 207, 3, 77, 7, 6, 28, 43, 131, 124, 117, 124, 213, 160, 67, 1, 44, 39, 15, 28, 149, 45, 54, 127, 157, 237, 193, 132, 174, 214, 8, 164, 106, 159, 213, 27, 173, 33, 24, 31, 110, 210, 95, 140, 236, 71, 68, 207, 225, 134, 105, 25, 226, 168, 119, 172, 1, 252, 11, 231, 182, 93, 254, 211, 58, 78, 192, 168, 67, 71, 11, 160, 76, 111, 234, 138, 119, 135, 51, 226, 113, 167, 146, 103, 97, 43, 192, 133, 252, 124, 42, 190, 217, 38, 95, 95, 222, 14, 245, 192, 116, 245, 68, 114, 253, 25, 229, 221, 0, 158, 27, 163, 45, 244, 200, 0, 205, 150, 162, 76, 224, 168, 203, 79, 114, 137, 18, 206, 12, 152, 241, 159, 245, 197, 175, 146, 16, 62, 152, 112, 233, 23, 132, 151, 100, 175, 26, 83, 0, 254, 150, 230, 94, 174, 77, 39, 57, 106, 155, 69, 85, 230, 239, 202, 205, 49, 17, 47, 72, 128, 251, 42, 157, 218, 234, 213, 127, 118, 152, 74, 139, 99, 120, 217, 116, 16, 73, 79, 40, 88, 107, 38, 132, 34, 101, 225, 109, 114, 91, 66, 69, 10, 44, 191, 6, 160, 208, 104, 123, 247, 247, 49, 151, 246, 216, 228, 157, 69, 140, 155, 98, 147, 202, 12, 79, 168, 40, 210, 164, 230, 241, 107, 109, 231, 243, 187, 252, 100, 70, 41, 140, 35, 231, 115, 98, 49, 192, 102, 46, 12, 82, 162, 226, 104, 86, 169, 42, 34, 213, 76, 89, 197, 131, 10, 25, 120, 204, 115, 231, 103, 217, 164, 13, 166, 139, 141, 77, 75, 27, 21, 84, 212, 209, 189, 148, 198, 213, 96, 234, 190, 213, 40, 210, 152, 141, 4, 110, 167, 209, 226, 236, 247, 139, 119, 215, 175, 30, 49, 225, 174, 42, 195, 251, 228, 170, 246, 94, 117, 128, 34, 177, 10, 15, 126, 165, 52, 159, 249, 67, 35, 200, 86, 65, 254, 141, 198, 219, 55, 225, 240, 111, 248, 101, 29, 235, 192, 112, 225, 19, 255, 139, 129, 46, 42, 9, 8, 74, 58, 254, 191, 49, 173, 189, 32, 5, 174, 81, 223, 94, 145, 85, 40, 194, 145, 251, 88, 168, 166, 143, 39, 33, 111, 230, 115, 77, 113, 83, 100, 211, 244, 163, 201, 141, 71, 193, 106, 138, 3, 215, 134, 217, 191, 10, 177, 250, 233, 247, 127, 162, 112, 206, 150, 187, 205, 141, 211, 181, 58, 199, 11, 220, 91, 180, 169, 182, 178, 224, 159, 144, 105, 146, 29, 162, 221, 106, 190, 209, 151, 126, 98, 187, 91, 50, 91, 198, 210, 78, 189, 155, 193, 208, 178, 164, 0, 189, 145, 189, 7, 162, 88, 156, 33, 118, 176, 125, 130, 199, 108, 240, 99, 125, 119, 202, 188, 53, 17, 140, 102, 26, 30, 23, 30, 214, 203, 93, 82, 6, 67, 28, 31, 12, 166, 105, 63, 132, 69, 166, 208, 252, 140, 56, 175, 245, 17, 170, 3, 193, 26, 168, 92, 40, 131, 82, 17, 144, 128, 91, 48, 220, 16, 209, 53, 226, 4, 225, 6, 253, 141, 25, 254, 146, 41, 63, 90, 19, 6, 75, 96, 130, 156, 14, 91, 231, 207, 128, 244, 15, 135, 63, 45, 235, 51, 134, 10, 75, 252, 212, 63, 51, 131, 253, 110, 144, 239, 182, 194, 107, 45, 103, 124, 83, 154, 173, 181, 51, 60, 63, 75, 172, 103, 222, 53, 31, 73, 93, 76, 159, 184, 24, 240, 41, 97, 72, 131, 54, 113, 170, 233, 182, 86, 62, 88, 131, 206, 86, 180, 32, 143, 172, 114, 41, 233, 121, 221, 190, 192, 97, 48, 196, 185, 135, 67, 79, 190, 66, 181, 196, 246, 211, 94, 250, 228, 62, 117, 159, 141, 54, 186, 81, 143, 113, 108, 102, 252, 182, 146, 233, 20, 135, 30, 255, 237, 33, 224, 68, 8, 175, 33, 58, 49, 16, 226, 113, 54, 90, 209, 159, 211, 193, 203, 187, 186, 156, 89, 81, 127, 211, 171, 113, 92, 238, 193, 159, 11, 242, 183, 97, 67, 211, 138, 203, 35, 113, 247, 64, 205, 71, 2, 127, 208, 90, 139, 132, 148, 180, 247, 7, 119, 195, 128, 96, 221, 195, 110, 44, 53, 114, 26, 196, 226, 219, 134, 195, 190, 205, 171, 29, 137, 224, 75, 167, 188, 94, 123, 199, 64, 167, 105, 191, 52, 247, 43, 224, 181, 250, 58, 109, 25, 1, 120, 7, 223, 250, 69, 199, 83, 15, 20, 136, 90, 247, 128, 109, 169, 243, 24, 220, 215, 188, 169, 46, 31, 131, 112, 79, 132, 93, 170, 127, 238, 207, 138, 110, 201, 232, 163, 214, 77, 45, 113, 103, 179, 197, 206, 83, 148, 6, 185, 231, 174, 111, 171, 162, 147, 39, 252, 36, 132, 173, 145, 77, 43, 223, 164, 46, 136, 129, 210, 219, 221, 202, 246, 182, 95, 135, 8, 55, 229, 71, 245, 57, 131, 217, 93, 90, 179, 195, 230, 102, 169, 80, 51, 197, 6, 48, 143, 112, 121, 27, 79, 174, 47, 88, 240, 47, 10, 62, 94, 177, 78, 234, 112, 136, 65, 84, 4, 245, 190, 138, 38, 98, 108, 187, 47, 236, 65, 95, 233, 245, 47, 126, 208, 199, 74, 229, 158, 20, 238, 148, 218, 241, 233, 229, 13, 14, 206, 95, 42, 22, 65, 191, 218, 73, 116, 90, 23, 4, 166, 32, 236, 51, 107, 252, 198, 10, 163, 100, 140, 221, 174, 111, 179, 171, 183, 159, 204, 229, 104, 156, 190, 99, 142, 130, 46, 142, 31, 244, 30, 114, 69, 86, 159, 173, 185, 88, 130, 238, 12, 216, 140, 134, 15, 104, 64, 131, 106, 95, 206, 11, 1, 183, 75, 167, 43, 63, 188, 39, 144, 14, 179, 140, 47, 140, 253, 202, 192, 215, 156, 108, 18, 211, 9, 75, 108, 47, 212, 81, 24, 149, 244, 189, 60, 199, 210, 251, 22, 15, 247, 145, 136, 59, 51, 228, 31, 227, 226, 12, 199, 36, 126, 167, 153, 168, 220, 216, 56, 68, 79, 99, 88, 13, 34, 125, 123, 33, 239, 167, 121, 240, 167, 65, 1, 82, 9, 126, 165, 52, 107, 207, 11, 48, 112, 3, 150, 102, 30, 177, 250, 211, 194, 239, 204, 242, 27, 31, 118, 231, 44, 200, 178, 138, 104, 164, 131, 113, 205, 95, 88, 165, 136, 177, 7, 111, 216, 83, 186, 110, 193, 241, 164, 24, 237, 204, 95, 250, 183, 26, 100, 70, 58, 91, 190, 43, 165, 31, 136, 139, 190, 27, 67, 52, 72, 65, 120, 121, 54, 81, 27, 209, 28, 74, 51, 58, 211, 86, 46, 92, 123, 222, 10, 44, 145, 78, 90, 26, 61, 64, 143, 228, 227, 254, 73, 218, 85, 93, 218, 33, 123, 181, 195, 9, 76, 237, 41, 119, 145, 131, 106, 4, 150, 58, 7, 156, 65, 113, 108, 28, 135, 43, 21, 245, 159, 20, 163, 123, 27, 20, 58, 212, 183, 242, 82, 228, 110, 80, 53, 164, 161, 180, 244, 125, 168, 207, 81, 4, 253, 95, 101, 88, 31, 63, 25, 134, 59, 130, 0, 90, 220, 24, 200, 221, 149, 76, 225, 16, 26, 77, 179, 172, 190, 145, 199, 145, 239, 140, 106, 131, 29, 211, 187, 12, 207, 40, 205, 237, 151, 159, 18, 76, 49, 193, 137, 196, 197, 105, 181, 171, 23, 172, 208, 115, 95, 139, 136, 150, 211, 251, 132, 247, 206, 93, 70, 19, 181, 13, 205, 216, 79, 238, 229, 123, 12, 38, 24, 233, 96, 205, 223, 126, 95, 54, 15, 145, 149, 40, 41, 34, 30, 17, 1, 153, 252, 244, 214, 40, 66, 158, 71, 219, 142, 206, 216, 251, 200, 191, 75, 34, 147, 163, 27, 127, 64, 195, 187, 129, 132, 63, 224, 112, 1, 154, 28, 76, 141, 165, 195, 155, 53, 84, 189, 57, 148, 144, 98, 14, 232, 213, 179, 55, 191, 169, 203, 103, 99, 120, 159, 254, 201, 113, 51, 23, 99, 116, 246, 200, 59, 122, 13, 165, 118, 14, 230, 35, 231, 158, 48, 20, 104, 147, 121, 161, 241, 83, 109, 58, 84, 246, 251, 170, 145, 99, 179, 150, 32, 203, 93, 193, 99, 13, 86, 8, 224, 237, 61, 69, 58, 27, 79, 229, 84, 129, 145, 109, 58, 2, 230, 50, 0, 38, 189, 160, 18, 89, 158, 44, 255, 190, 108, 59, 161, 43, 49, 238, 84, 229, 223, 183, 138, 75, 130, 84, 208, 112, 183, 75, 108, 229, 254, 186, 103, 207, 244, 244, 149, 217, 71, 217, 238, 59, 98, 49, 214, 251, 83, 43, 104, 84, 0, 244, 181, 253, 235, 119, 236, 31, 36, 163, 105, 46, 52, 21, 212, 81, 170, 106, 186, 162, 63, 24, 235, 197, 184, 239, 229, 147, 105, 73, 145, 164, 214, 128, 23, 141, 50, 203, 41, 135, 32, 169, 168, 152, 137, 199, 38, 93, 226, 205, 20, 190, 208, 216, 76, 204, 133, 134, 137, 99, 89, 32, 57, 235, 138, 176, 10, 63, 159, 110, 85, 155, 164, 250, 194, 190, 58, 202, 52, 237, 95, 54, 149, 206, 144, 74, 123, 152, 231, 41, 202, 121, 248, 243, 40, 247, 161, 225, 88, 148, 188, 79, 6, 235, 43, 132, 24, 200, 229, 86, 53, 166, 123, 116, 233, 203, 23, 212, 55, 0, 195, 238, 247, 152, 247, 216, 229, 23, 93, 244, 224, 96, 37, 6, 61, 24, 107, 51, 63, 254, 187, 179, 71, 7, 45, 170, 122, 160, 223, 44, 203, 190, 142, 134, 129, 210, 67, 41, 17, 118, 139, 196, 163, 243, 54, 81, 192, 212, 129, 52, 227, 168, 113, 238, 178, 185, 158, 213, 144, 12, 198, 236, 234, 35, 179, 157, 91, 138, 46, 220, 35, 65, 82, 11, 16, 125, 96, 248, 199, 155, 100, 48, 154, 106, 187, 141, 250, 191, 130, 222, 131, 227, 14, 138, 219, 23, 23, 190, 180, 155, 147, 58, 224, 150, 39, 182, 226, 239, 3, 45, 47, 99, 255, 32, 73, 242, 233, 180, 149, 238, 45, 103, 39, 196, 231, 138, 16, 51, 224, 221, 136, 174, 205, 149, 132, 92, 83, 186, 48, 133, 204, 210, 5, 40, 57, 22, 64, 160, 4, 73, 168, 178, 229, 222, 185, 235, 109, 196, 109, 183, 150, 158, 0, 56, 16, 41, 43, 193, 31, 204, 169, 219, 50, 167, 242, 107, 206, 105, 228, 246, 59, 53, 18, 42, 19, 217, 56, 220, 59, 46, 160, 107, 200, 164, 0, 5, 213, 178, 133, 187, 142, 174, 218, 60, 252, 237, 61, 66, 146, 207, 179, 93, 234, 83, 219, 93, 55, 107, 92, 139, 101, 151, 198, 135, 246, 223, 101, 139, 44, 166, 82, 97, 233, 217, 130, 67, 22, 88, 36, 131, 80, 179, 192, 34, 206, 119, 167, 17, 65, 217, 71, 250, 52, 253, 29, 4, 156, 63, 64, 81, 6, 67, 130, 79, 0, 95, 87, 36, 43, 4, 26, 51, 250, 24, 178, 197, 41, 20, 142, 187, 180, 239, 156, 102, 113, 15, 13, 18, 90, 70, 184, 7, 250, 193, 117, 127, 60, 0, 198, 218, 128, 116, 119, 124, 126, 160, 129, 231, 68, 189, 98, 48, 43, 120, 178, 91, 54, 242, 66, 112, 55, 188, 42, 179, 94, 60, 249, 136, 81, 149, 132, 98, 209, 181, 219, 223, 31, 40, 235, 55, 5, 69, 11, 63, 192, 51, 224, 119, 107, 193, 84, 178, 191, 58, 217, 222, 183, 118, 114, 95, 45, 48, 126, 184, 10, 207, 0, 217, 59, 167, 244, 219, 9, 238, 41, 13, 127, 191, 123, 139, 9, 74, 40, 164, 194, 205, 116, 204, 185, 230, 133, 148, 215, 50, 105, 173, 220, 113, 117, 98, 233, 80, 209, 185, 211, 232, 29, 157, 12, 206, 228, 187, 26, 240, 193, 21, 15, 69, 115, 120, 66, 2, 92, 165, 103, 29, 177, 151, 154, 211, 107, 177, 89, 16, 135, 243, 135, 178, 237, 184, 110, 191, 169, 230, 243, 106, 16, 95, 128, 124, 73, 132, 107, 116, 123, 38, 0, 72, 24, 171, 8, 113, 227, 43, 136, 168, 25, 174, 100, 201, 252, 212, 119, 246, 131, 95, 78, 65, 222, 89, 192, 87, 66, 102, 58, 237, 94, 56, 138, 71, 121, 65, 49, 22, 65, 29, 183, 56, 59, 27, 16, 176, 232, 120, 22, 104, 212, 83, 32, 55, 90, 2, 37, 108, 112, 146, 113, 34, 64, 78, 65, 80, 198, 101, 190, 60, 69, 60, 230, 72, 216, 215, 225, 166, 155, 122, 140, 137, 245, 89, 77, 237, 209, 242, 67, 37, 88, 5, 117, 101, 165, 98, 84, 139, 18, 57, 118, 67, 78, 254, 178, 60, 181, 124, 144, 169, 13, 20, 233, 60, 51, 55, 1, 215, 225, 224, 42, 191, 189, 227, 246, 25, 53, 164, 27, 1, 66, 112, 36, 211, 67, 195, 172, 119, 52, 81, 244, 10, 39, 11, 219, 160, 35, 230, 225, 176, 171, 74, 254, 100, 229, 4, 64, 140, 85, 94, 85, 197, 63, 234, 173, 243, 129, 52, 220, 154, 175, 195, 223, 23, 85, 20, 171, 79, 240, 185, 10, 14, 93, 185, 93, 100, 11, 41, 39, 106, 137, 70, 122, 173, 221, 195, 73, 174, 145, 7, 85, 1, 232, 126, 67, 38, 213, 104, 164, 213, 213, 5, 23, 233, 233, 47, 222, 14, 3, 33, 180, 180, 49, 136, 73, 46, 237, 209, 47, 197, 173, 95, 131, 4, 157, 40, 217, 217, 156, 31, 81, 103, 24, 116, 208, 225, 123, 11, 122, 143, 55, 224, 125, 121, 42, 109, 151, 120, 245, 141, 176, 100, 12, 237, 222, 197, 100, 79, 16, 168, 247, 103, 223, 85, 92, 26, 17, 23, 91, 90, 249, 228, 162, 166, 164, 178, 215, 48, 203, 209, 138, 42, 42, 87, 132, 134, 120, 39, 13, 50, 77, 187, 15, 42, 82, 80, 242, 210, 141, 28, 213, 194, 241, 75, 86, 159, 120, 217, 98, 94, 100, 129, 1, 228, 157, 183, 171, 186, 164, 245, 72, 107, 119, 241, 227, 77, 109, 120, 58, 248, 36, 82, 38, 188, 50, 177, 65, 227, 192, 169, 124, 7, 137, 254, 80, 151, 200, 73, 55, 99, 30, 150, 192, 13, 106, 41, 236, 18, 6, 73, 73, 16, 239, 162, 0, 218, 201, 184, 78, 184, 137, 253, 12, 130, 241, 245, 158, 233, 159, 0, 130, 99, 50, 12, 240, 186, 207, 221, 250, 179, 115, 138, 137, 154, 182, 72, 119, 204, 16, 18, 101, 107, 27, 98, 142, 16, 143, 116, 161, 238, 232, 227, 70, 247, 124, 150, 157, 67, 114, 24, 162, 246, 158, 205, 24, 77, 79, 107, 232, 141, 103, 99, 128, 101, 40, 241, 212, 127, 90, 40, 2, 229, 105, 51, 164, 70, 216, 95, 2, 240, 54, 224, 11, 241, 201, 181, 97, 113, 49, 10, 170, 203, 10, 7, 130, 42, 236, 195, 146, 175, 222, 91, 235, 145, 13, 33, 82, 81, 187, 250, 248, 59, 250, 222, 136, 69, 192, 178, 189, 103, 176, 235, 101, 89, 133, 145, 203, 35, 138, 157, 180, 144, 6, 172, 55, 58, 147, 217, 109, 95, 81, 141, 214, 209, 245, 146, 96, 23, 130, 101, 107, 180, 188, 69, 204, 224, 195, 29, 108, 199, 70, 239, 18, 199, 143, 68, 161, 121, 110, 132, 238, 186, 97, 217, 227, 106, 86, 162, 24, 170, 155, 34, 8, 92, 154, 199, 184, 210, 214, 20, 31, 200, 22, 169, 186, 176, 26, 52, 62, 5, 251, 241, 108, 67, 153, 104, 242, 20, 28, 143, 23, 92, 191, 96, 254, 141, 235, 113, 154, 10, 219, 117, 159, 56, 31, 140, 161, 225, 247, 236, 253, 126, 160, 115, 23, 15, 175, 190, 227, 94, 149, 166, 102, 173, 251, 60, 192, 100, 70, 126, 89, 88, 154, 70, 176, 82, 212, 137, 12, 243, 203, 215, 247, 252, 91, 27, 19, 104, 229, 123, 83, 164, 166, 1, 90, 189, 251, 6, 81, 168, 28, 250, 206, 104, 62, 122, 66, 100, 183, 204, 196, 12, 57, 237, 25, 151, 165, 202, 65, 176, 124, 4, 94, 99, 250, 31, 43, 245, 160, 19, 247, 137, 120, 147, 24, 227, 192, 34, 21, 113, 168, 214, 235, 104, 140, 252, 170, 127, 90, 181, 149, 35, 160, 69, 110, 233, 71, 194, 66, 156, 225, 152, 129, 163, 168, 162, 154, 99, 172, 144, 85, 253, 238, 250, 48, 69, 99, 139, 49, 133, 200, 148, 34, 238, 235, 163, 13, 229, 232, 206, 118, 9, 132, 186, 253, 112, 251, 185, 191, 253, 155, 31, 161, 100, 249, 50, 145, 99, 243, 16, 21, 182, 137, 81, 104, 165, 96, 66, 112, 137, 68, 233, 58, 217, 65, 209, 62, 125, 164, 71, 64, 3, 44, 47, 172, 14, 211, 105, 241, 194, 50, 196, 89, 82, 26, 174, 194, 101, 119, 171, 140, 162, 141, 123, 206, 115, 85, 248, 33, 85, 228, 42, 92, 97, 100, 0, 16, 52, 27, 111, 146, 22, 223, 104, 54, 254, 70, 119, 180, 9, 126, 226, 173, 218, 140, 232, 213, 96, 232, 138, 148, 131, 144, 15, 69, 136, 43, 252, 203, 249, 20, 198, 32, 153, 17, 9, 28, 69, 183, 178, 240, 203, 31, 197, 112, 215, 34, 199, 95, 180, 116, 231, 191, 216, 12, 90, 216, 161, 227, 246, 5, 183, 26, 243, 239, 47, 193, 208, 140, 195, 151, 178, 100, 250, 38, 182, 15, 156, 211, 44, 207, 216, 110, 150, 234, 92, 160, 204, 228, 246, 38, 224, 16, 83, 166, 33, 22, 163, 174, 99, 80, 3, 23, 142, 55, 3, 253, 128, 63, 222, 111, 158, 184, 10, 60, 153, 124, 202, 53, 189, 14, 118, 45, 87, 79, 252, 20, 226, 58, 249, 197, 29, 162, 78, 211, 147, 165, 240, 7, 60, 175, 73, 90, 61, 167, 239, 68, 104, 66, 207, 208, 194, 87, 148, 158, 184, 247, 129, 7, 150, 171, 62, 157, 62, 240, 137, 36, 88, 122, 225, 83, 173, 245, 238, 245, 249, 227, 252, 152, 40, 8, 3, 150, 155, 71, 121, 187, 46, 173, 248, 107, 78, 135, 232, 20, 174, 165, 135, 5, 106, 244, 62, 79, 249, 72, 99, 252, 177, 27, 158, 223, 235, 59, 34, 141, 45, 221, 238, 31, 102, 247, 65, 170, 15, 219, 210, 232, 80, 100, 68, 171, 37, 211, 156, 83, 147, 246, 219, 89, 41, 195, 110, 252, 146, 164, 200, 63, 22, 154, 235, 157, 224, 24, 13, 102, 218, 53, 116, 235, 195, 57, 44, 157, 20, 89, 193, 102, 118, 163, 6, 24, 185, 177, 103, 106, 237, 7, 242, 206, 186, 232, 186, 164, 89, 138, 96, 207, 218, 228, 8, 77, 218, 15, 219, 168, 183, 178, 106, 155, 150, 37, 27, 139, 195, 72, 245, 64, 122, 219, 34, 125, 244, 159, 107, 23, 200, 151, 221, 249, 115, 21, 122, 60, 189, 31, 36, 127, 78, 52, 175, 187, 142, 179, 50, 53, 30, 246, 156, 89, 21, 120, 137, 129, 51, 10, 219, 176, 167, 197, 56, 128, 1, 21, 249, 225, 157, 135, 91, 248, 216, 237, 108, 143, 105, 159, 168, 97, 56, 54, 26, 181, 62, 66, 194, 192, 246, 142, 174, 157, 28, 52, 18, 33, 44, 54, 106, 28, 19, 94, 56, 49, 80, 181, 104, 237, 198, 100, 25, 119, 50, 224, 202, 71, 203, 246, 127, 108, 93, 3, 58, 61, 195, 222, 215, 50, 146, 156, 110, 216, 51, 40, 228, 9, 192, 77, 26, 58, 144, 247, 220, 122, 136, 51, 97, 227, 255, 158, 63, 76, 105, 203, 118, 96, 163, 154, 19, 163, 65, 249, 170, 225, 220, 193, 235, 177, 57, 168, 2, 14, 44, 34, 130, 107, 145, 189, 125, 158, 223, 106, 229, 0, 175, 136, 163, 176, 151, 192, 102, 36, 251, 135, 128, 146, 36, 182, 219, 135, 150, 115, 34, 164, 3, 69, 39, 128, 31, 3, 250, 103, 109, 228, 88, 77, 91, 51, 229, 228, 39, 140, 87, 33, 182, 110, 20, 127, 154, 139, 110, 252, 14, 92, 5, 39, 245, 215, 141, 132, 66, 99, 195, 210, 248, 104, 29, 72, 126, 58, 54, 254, 137, 250, 235, 51, 200, 139, 32, 61, 174, 43, 194, 99, 179, 203, 207, 53, 245, 133, 177, 124, 73, 203, 155, 38, 11, 171, 223, 12, 171, 48, 169, 129, 190, 14, 43, 247, 147, 163, 204, 5, 102, 247, 251, 92, 79, 18, 195, 208, 25, 55, 228, 229, 55, 83, 17, 96, 4, 60, 85, 10, 218, 76, 101, 24, 172, 80, 228, 108, 45, 55, 129, 87, 97, 22, 86, 102, 70, 31, 187, 191, 1, 178, 184, 253, 120, 104, 197, 84, 242, 112, 17, 245, 82, 85, 96, 40, 21, 9, 4, 45, 209, 147, 162, 110, 90, 34, 41, 194, 135, 169, 75, 169, 114, 206, 220, 166, 81, 141, 187, 64, 120, 169, 165, 23, 66, 222, 214, 18, 184, 136, 116, 199, 67, 91, 151, 67, 123, 201, 40, 171, 30, 81, 53, 172, 11, 252, 52, 200, 191, 236, 81, 63, 28, 28, 79, 197, 11, 72, 49, 4, 124, 134, 233, 232, 35, 46, 146, 22, 245, 251, 182, 162, 76, 231, 32, 196, 244, 181, 102, 124, 215, 106, 183, 214, 60, 118, 51, 84, 203, 105, 179, 56, 73, 212, 219, 228, 251, 38, 126, 206, 115, 119, 115, 151, 21, 49, 80, 168, 206, 170, 174, 215, 59, 70, 84, 59, 126, 167, 254, 115, 232, 114, 60, 182, 40, 129, 177, 240, 200, 38, 37, 198, 209, 23, 76, 170, 118, 83, 1, 131, 247, 56, 26, 57, 127, 156, 31, 144, 27, 184, 203, 148, 35, 11, 202, 85, 112, 185, 103, 107, 238, 6, 233, 105, 127, 30, 36, 5, 87, 171, 241, 3, 56, 204, 132, 15, 217, 229, 139, 21, 217, 129, 72, 249, 87, 89, 79, 96, 37, 236, 89, 92, 155, 19, 126, 84, 218, 53, 184, 26, 224, 179, 7, 109, 243, 241, 91, 4, 121, 186, 223, 116, 222, 74, 23, 153, 101, 79, 27, 149, 143, 26, 68, 95, 238, 21, 43, 211, 107, 255, 231, 205, 156, 7, 52, 151, 74, 253, 249, 109, 51, 153, 31, 163, 151, 172, 121, 248, 150, 198, 13, 118, 76, 248, 18, 210, 184, 219, 23, 234, 59, 115, 254, 81, 254, 67, 110, 53, 177, 188, 60, 180, 25, 87, 10, 150, 44, 208, 115, 144, 16, 3, 244, 119, 137, 173, 22, 158, 135, 89, 82, 86, 224, 43, 127, 108, 234, 223, 64, 224, 50, 214, 124, 246, 207, 122, 29, 99, 234, 199, 48, 125, 106, 221, 148, 40, 5, 16, 140, 234, 185, 222, 239, 214, 67, 77, 22, 165, 135, 224, 121, 236, 251, 70, 6, 123, 22, 230, 117, 208, 172, 131, 59, 53, 108, 100, 173, 136, 63, 22, 130, 83, 137, 15, 28, 82, 36, 34, 221, 235, 226, 114, 79, 126, 119, 218, 50, 130, 122, 143, 128, 240, 138, 49, 95, 254, 117, 105, 94, 76, 117, 93, 6, 189, 236, 192, 252, 227, 60, 208, 190, 216, 173, 157, 42, 240, 134, 97, 184, 215, 46, 30, 152, 214, 186, 205, 122, 64, 241, 9, 165, 113, 56, 244, 89, 27, 38, 41, 168, 30, 3, 50, 249, 121, 35, 55, 79, 10, 253, 33, 221, 231, 112, 53, 230, 15, 241, 247, 11, 202, 123, 27, 169, 254, 215, 208, 212, 184, 229, 58, 145, 142, 227, 155, 8, 98, 108, 50, 239, 238, 82, 161, 80, 228, 170, 128, 65, 71, 94, 4, 135, 27, 30, 28, 176, 66, 87, 245, 58, 0, 242, 162, 155, 1, 230, 130, 191, 161, 30, 167, 132, 37, 170, 137, 45, 70, 182, 29, 64, 230, 204, 218, 12, 26, 236, 146, 21, 130, 38, 184, 0, 185, 21, 57, 51, 227, 123, 26, 216, 87, 227, 198, 78, 106, 171, 224, 255, 223, 12, 92, 86, 191, 171, 109, 68, 29, 196, 31, 189, 44, 47, 198, 240, 63, 119, 237, 15, 4, 66, 204, 61, 54, 105, 188, 52, 38, 85, 29, 10, 181, 57, 21, 63, 27, 248, 254, 144, 201, 69, 96, 72, 176, 206, 105, 209, 182, 227, 107, 31, 34, 36, 199, 71, 50, 233, 205, 40, 110, 204, 197, 190, 202, 175, 155, 208, 26, 241, 28, 118, 239, 86, 87, 198, 167, 203, 148, 79, 69, 114, 108, 111, 178, 8, 29, 141, 229, 254, 121, 55, 99, 138, 88, 211, 25, 213, 124, 32, 248, 28, 178, 12, 184, 96, 118, 178, 219, 74, 186, 235, 22, 144, 68, 124, 152, 163, 132, 152, 125, 193, 123, 203, 54, 115, 216, 254, 245, 228, 88, 47, 119, 152, 56, 194, 120, 93, 63, 251, 138, 157, 142, 83, 235, 111, 98, 208, 67, 226, 204, 115, 172, 14, 15, 217, 122, 68, 94, 214, 215, 29, 196, 49, 82, 155, 80, 204, 30, 180, 143, 142, 231, 118, 154, 68, 4, 61, 180, 33, 86, 157, 251, 119, 49, 46, 239, 175, 251, 115, 135, 182, 34, 219, 38, 134, 237, 12, 183, 159, 71, 196, 175, 119, 134, 146, 175, 239, 200, 85, 24, 217, 227, 238, 110, 252, 34, 213, 35, 175, 138, 193, 218, 182, 239, 83, 198, 26, 3, 30, 86, 54, 168, 174, 79, 129, 135, 146, 192, 218, 114, 151, 242, 108, 220, 232, 99, 46, 215, 49, 77, 5, 233, 222, 144, 69, 82, 85, 250, 180, 112, 61, 41, 7, 70, 35, 129, 219, 1, 102, 71, 40, 17, 52, 46, 102, 92, 75, 71, 121, 235, 18, 248, 78, 23, 237, 185, 36, 1, 253, 155, 195, 206, 244, 208, 255, 183, 10, 124, 207, 30, 200, 87, 15, 2, 31, 82, 248, 77, 199, 99, 110, 49, 133, 23, 175, 42, 20, 172, 13, 61, 178, 71, 197, 1, 87, 56, 214, 83, 138, 223, 121, 216, 209, 94, 188, 153, 136, 22, 101, 223, 251, 36, 70, 159, 160, 137, 55, 158, 136, 136, 94, 201, 249, 232, 129, 31, 163, 204, 148, 185, 219, 185, 188, 250, 87, 91, 233, 206, 199, 222, 41, 173, 48, 157, 166, 37, 53, 134, 142, 204, 169, 185, 136, 17, 238, 221, 67, 31, 233, 131, 78, 85, 250, 158, 115, 59, 6, 197, 0, 29, 209, 138, 21, 65, 208, 208, 100, 2, 249, 160, 42, 114, 168, 84, 100, 83, 98, 42, 113, 93, 199, 99, 3, 23, 187, 223, 35, 173, 167, 172, 12, 250, 132, 84, 191, 41, 161, 177, 90, 245, 36, 174, 96, 92, 4, 65, 80, 221, 118, 130, 137, 210, 181, 216, 234, 6, 114, 245, 247, 11, 183, 159, 78, 227, 93, 225, 188, 56, 210, 246, 105, 24, 127, 13, 3, 223, 213, 164, 180, 246, 129, 106, 153, 92, 20, 112, 229, 65, 37, 202, 16, 204, 79, 45, 14, 159, 111, 103, 125, 63, 209, 11, 212, 23, 29, 14, 106, 187, 95, 125, 231, 159, 247, 143, 149, 128, 20, 201, 139, 220, 243, 141, 124, 26, 171, 218, 135, 196, 74, 252, 154, 52, 245, 147, 236, 196, 248, 112, 70, 142, 237, 97, 191, 75, 100, 47, 234, 68, 85, 201, 28, 130, 3, 198, 86, 253, 79, 150, 148, 144, 204, 233, 54, 3, 5, 106, 19, 90, 161, 130, 16, 147, 168, 51, 234, 73, 72, 190, 54, 204, 146, 106, 213, 51, 33, 182, 127, 68, 91, 247, 225, 121, 4, 90, 117, 154, 82, 244, 70, 88, 15, 122, 187, 153, 136, 172, 52, 21, 174, 107, 175, 69, 121, 80, 180, 17, 154, 197, 30, 205, 200, 150, 198, 136, 64, 199, 22, 175, 74, 4, 195, 49, 111, 218, 52, 213, 176, 230, 58, 138, 61, 209, 13, 2, 114, 124, 80, 26, 50, 139, 86, 36, 192, 192, 36, 71, 80, 0, 59, 30, 135, 185, 103, 130, 115, 138, 250, 126, 155, 175, 240, 84, 122, 137, 200, 171, 68, 72, 164, 79, 79, 28, 90, 84, 110, 130, 122, 133, 165, 245, 35, 124, 195, 10, 99, 78, 140, 219, 139, 219, 107, 1, 172, 39, 0, 28, 150, 91, 243, 188, 215, 147, 12, 70, 161, 15, 172, 102, 17, 146, 175, 95, 79, 20, 209, 180, 207, 154, 153, 229, 190, 251, 73, 215, 11, 113, 37, 230, 193, 192, 218, 119, 83, 16, 237, 167, 193, 157, 157, 102, 102, 203, 198, 68, 237, 252, 121, 120, 132, 126, 65, 199, 197, 59, 186, 66, 182, 38, 126, 221, 17, 96, 102, 99, 218, 185, 124, 152, 18, 240, 92, 241, 171, 178, 231, 64, 223, 228, 161, 110, 182, 217, 95, 166, 165, 113, 6, 203, 8, 254, 9, 241, 90, 157, 60, 194, 125, 210, 73, 213, 243, 16, 159, 123, 119, 162, 42, 178, 159, 91, 130, 235, 17, 142, 202, 65, 31, 213, 60, 108, 95, 53, 161, 25, 85, 114, 18, 117, 199, 73, 71, 168, 243, 188, 126, 180, 37, 10, 239, 179, 38, 227, 177, 184, 213, 193, 130, 45, 115, 2, 196, 136, 54, 99, 161, 163, 212, 189, 9, 142, 113, 251, 137, 138, 187, 11, 117, 189, 246, 30, 193, 150, 187, 60, 70, 108, 189, 10, 152, 108, 36, 102, 189, 204, 224, 8, 100, 72, 219, 66, 97, 53, 90, 23, 109, 82, 49, 94, 227, 67, 207, 146, 127, 199, 212, 174, 5, 115, 160, 81, 23, 44, 130, 49, 248, 2, 67, 94, 32, 231, 7, 238, 13, 65, 115, 85, 211, 138, 184, 26, 88, 21, 69, 115, 129, 30, 63, 79, 116, 118, 207, 139, 204, 42, 88, 114, 154, 26, 166, 116, 28, 189, 75, 201, 163, 102, 236, 156, 198, 58, 122, 99, 97, 179, 132, 66, 245, 26, 90, 49, 91, 69, 117, 71, 163, 122, 152, 220, 240, 131, 139, 80, 95, 199, 50, 34, 131, 99, 154, 8, 240, 77, 238, 85, 0, 60, 144, 102, 5, 83, 16, 174, 3, 125, 158, 231, 212, 80, 67, 109, 64, 129, 65, 152, 126, 217, 180, 3, 123, 31, 139, 40, 177, 229, 154, 149, 0, 9, 108, 240, 174, 68, 247, 2, 95, 106, 173, 104, 173, 73, 133, 174, 64, 164, 216, 90, 210, 114, 220, 105, 214, 232, 155, 157, 25, 103, 74, 72, 105, 6, 96, 3, 14, 168, 64, 0, 14, 74, 135, 241, 67, 80, 41, 107, 78, 44, 201, 206, 166, 31, 187, 72, 108, 29, 225, 109, 224, 21, 189, 198, 90, 74, 132, 170, 45, 181, 124, 167, 55, 178, 176, 245, 3, 121, 248, 88, 55, 57, 84, 168, 38, 97, 212, 185, 211, 75, 237, 191, 148, 160, 19, 135, 106, 139, 109, 230, 29, 169, 143, 40, 88, 55, 125, 152, 99, 211, 249, 146, 19, 108, 39, 87, 216, 202, 57, 193, 173, 54, 237, 94, 199, 249, 113, 60, 220, 114, 138, 147, 252, 244, 211, 29, 16, 5, 38, 145, 100, 157, 148, 247, 85, 131, 132, 234, 56, 134, 249, 247, 149, 240, 128, 102, 26, 196, 211, 204, 188, 41, 146, 59, 238, 60, 118, 144, 97, 167, 147, 181, 37, 102, 245, 87, 136, 136, 183, 194, 224, 215, 16, 26, 176, 144, 248, 243, 216, 151, 198, 208, 45, 25, 158, 102, 99, 84, 117, 57, 69, 24, 248, 8, 171, 198, 227, 0, 97, 117, 125, 39, 56, 98, 7, 78, 237, 199, 252, 17, 128, 35, 21, 191, 162, 252, 97, 165, 185, 20, 182, 71, 25, 192, 235, 193, 9, 108, 32, 162, 82, 45, 226, 247, 149, 106, 183, 197, 123, 208, 64, 32, 231, 114, 123, 249, 204, 31, 126, 229, 191, 93, 154, 255, 251, 163, 84, 109, 176, 62, 9, 91, 54, 135, 174, 214, 219, 244, 55, 159, 138, 47, 141, 95, 225, 222, 146, 81, 136, 14, 49, 71, 142, 141, 198, 178, 143, 42, 126, 67, 81, 73, 244, 110, 174, 53, 160, 244, 221, 117, 44, 13, 86, 181, 20, 163, 145, 49, 126, 196, 202, 24, 55, 167, 72, 21, 88, 64, 190, 217, 248, 29, 46, 25, 147, 233, 239, 109, 41, 178, 123, 54, 78, 205, 11, 77, 66, 172, 204, 254, 48, 206, 14, 170, 65, 25, 4, 88, 231, 174, 21, 231, 98, 191, 171, 70, 249, 226, 12, 15, 173, 103, 0, 52, 83, 81, 236, 239, 45, 4, 3, 243, 172, 42, 73, 19, 244, 141, 114, 119, 169, 73, 185, 221, 81, 46, 251, 25, 248, 147, 227, 140, 25, 133, 123, 209, 122, 68, 120, 188, 68, 131, 220, 204, 48, 59, 131, 50, 0, 63, 164, 97, 145, 194, 192, 196, 187, 250, 118, 225, 50, 121, 49, 17, 98, 221, 231, 79, 222, 91, 99, 124, 27, 226, 73, 141, 116, 188, 90, 55, 204, 111, 53, 54, 36, 225, 24, 179, 36, 97, 25, 224, 43, 204, 164, 245, 213, 62, 220, 246, 111, 166, 164, 10, 239, 90, 231, 156, 71, 192, 68, 16, 48, 152, 110, 158, 120, 170, 117, 188, 129, 88, 26, 66, 1, 172, 32, 102, 243, 220, 12, 165, 248, 190, 83, 143, 22, 45, 166, 182, 87, 198, 76, 59, 235, 90, 82, 147, 207, 219, 77, 15, 175, 33, 94, 132, 155, 247, 0, 233, 108, 219, 2, 115, 43, 239, 200, 102, 48, 22, 29, 127, 98, 33, 131, 111, 232, 27, 45, 119, 14, 138, 8, 165, 210, 165, 59, 92, 49, 87, 238, 157, 19, 109, 116, 34, 152, 203, 239, 125, 242, 148, 246, 83, 229, 231, 67, 221, 170, 75, 187, 111, 96, 105, 206, 20, 123, 222, 223, 9, 33, 251, 167, 255, 69, 65, 196, 201, 26, 44, 149, 169, 81, 133, 65, 107, 143, 168, 33, 169, 39, 12, 34, 37, 116, 244, 21, 198, 162, 120, 221, 110, 71, 169, 248, 173, 37, 178, 128, 28, 26, 113, 92, 144, 75, 42, 223, 212, 129, 210, 141, 135, 166, 193, 192, 97, 52, 222, 254, 23, 148, 9, 112, 114, 64, 84, 12, 0, 125, 189, 173, 232, 223, 134, 210, 13, 236, 70, 153, 231, 212, 20, 224, 146, 173, 139, 57, 190, 134, 118, 153, 147, 141, 236, 92, 50, 237, 88, 178, 184, 155, 140, 69, 133, 101, 211, 123, 101, 137, 130, 38, 50, 225, 155, 224, 53, 213, 65, 112, 198, 206, 81, 96, 203, 29, 141, 206, 29, 232, 124, 216, 35, 8, 62, 149, 236, 178, 118, 57, 28, 94, 86, 43, 220, 48, 108, 137, 108, 195, 130, 28, 212, 104, 37, 93, 83, 174, 52, 92, 137, 136, 245, 238, 54, 132, 123, 121, 136, 105, 15, 23, 185, 141, 208, 44, 117, 156, 169, 74, 234, 83, 135, 181, 51, 173, 98, 228, 101, 216, 166, 90, 42, 211, 115, 53, 198, 255, 53, 31, 204, 244, 146, 83, 100, 59, 103, 100, 81, 139, 131, 47, 109, 149, 157, 235, 100, 64, 188, 73, 77, 255, 230, 192, 121, 88, 233, 145, 46, 214, 145, 195, 177, 107, 1, 169, 44, 54, 69, 197, 68, 16, 16, 211, 16, 41, 134, 144, 71, 40, 46, 249, 160, 144, 31, 188, 218, 244, 180, 195, 35, 145, 40, 126, 240, 86, 250, 200, 74, 203, 70, 69, 84, 247, 148, 178, 102, 232, 217, 29, 244, 63, 41, 26, 206, 12, 208, 188, 160, 66, 96, 29, 86, 185, 152, 172, 183, 67, 182, 163, 158, 61, 102, 22, 162, 176, 127, 184, 115, 86, 214, 84, 179, 215, 43, 8, 32, 27, 18, 198, 40, 69, 143, 122, 55, 55, 223, 36, 87, 74, 116, 38, 173, 95, 4, 148, 104, 217, 54, 158, 80, 118, 68, 201, 80, 167, 172, 236, 11, 8, 3, 182, 231, 105, 248, 122, 83, 91, 190, 108, 124, 232, 144, 34, 30, 140, 1, 223, 30, 13, 33, 206, 8, 1, 116, 227, 249, 185, 192, 4, 233, 99, 7, 81, 144, 170, 102, 29, 7, 5, 87, 164, 208, 142, 13, 147, 99, 116, 47, 176, 157, 71, 76, 229, 175, 151, 190, 117, 238, 161, 140, 126, 154, 114, 180, 109, 197, 60, 160, 11, 117, 113, 139, 72, 90, 145, 223, 126, 26, 201, 46, 122, 157, 144, 164, 170, 154, 74, 54, 76, 213, 67, 33, 232, 148, 219, 175, 216, 59, 68, 148, 51, 30, 162, 24, 112, 162, 40, 8, 181, 90, 210, 95, 250, 35, 209, 11, 162, 205, 2, 241, 95, 18, 61, 11, 6, 90, 79, 128, 18, 110, 247, 101, 192, 234, 27, 38, 155, 204, 170, 160, 194, 35, 212, 120, 110, 174, 173, 19, 10, 66, 171, 122, 206, 171, 1, 209, 22, 166, 136, 66, 166, 203, 93, 90, 27, 82, 13, 158, 240, 229, 146, 152, 71, 67, 152, 107, 142, 44, 196, 232, 54, 36, 188, 124, 55, 50, 233, 162, 60, 143, 197, 182, 77, 110, 109, 87, 254, 90, 79, 17, 102, 226, 93, 222, 158, 110, 239, 210, 198, 179, 5, 50, 42, 156, 176, 5, 177, 27, 249, 68, 0, 187, 12, 115, 74, 112, 137, 39, 176, 122, 69, 69, 138, 17, 215, 146, 56, 43, 68, 4, 249, 214, 116, 40, 27, 97, 79, 13, 190, 147, 73, 27, 111, 70, 178, 119, 109, 108, 188, 243, 136, 192, 39, 30, 74, 240, 247, 103, 121, 55, 51, 207, 225, 5, 98, 186, 68, 147, 229, 160, 13, 92, 57, 193, 90, 130, 235, 169, 255, 92, 162, 111, 143, 244, 67, 83, 68, 23, 140, 96, 32, 91, 24, 238, 76, 85, 235, 104, 111, 221, 13, 159, 85, 162, 98, 242, 60, 137, 64, 25, 248, 161, 233, 176, 134, 117, 35, 128, 69, 199, 149, 178, 73, 219, 5, 27, 165, 40, 31, 28, 17, 2, 217, 119, 10, 80, 102, 140, 22, 214, 243, 96, 35, 87, 61, 225, 211, 101, 235, 249, 232, 211, 175, 52, 136, 197, 21, 125, 175, 194, 6, 252, 236, 9, 18, 139, 76, 85, 88, 173, 19, 238, 191, 220, 28, 29, 225, 9, 88, 23, 211, 214, 102, 232, 121, 143, 243, 133, 66, 152, 113, 159, 120, 114, 177, 77, 51, 44, 176, 78, 165, 41, 182, 156, 139, 101, 89, 0, 43, 60, 178, 117, 161, 19, 17, 29, 9, 71, 38, 75, 70, 176, 161, 253, 47, 35, 75, 129, 198, 163, 219, 120, 3, 49, 32, 70, 134, 81, 62, 62, 236, 194, 82, 106, 132, 113, 138, 5, 40, 178, 48, 80, 151, 204, 209, 117, 201, 208, 89, 209, 130, 50, 66, 137, 242, 219, 157, 9, 186, 112, 202, 119, 138, 43, 241, 249, 46, 200, 126, 31, 27, 3, 119, 210, 152, 232, 126, 119, 116, 239, 79, 245, 79, 189, 48, 234, 24, 193, 98, 172, 103, 103, 7, 188, 95, 183, 218, 250, 187, 230, 48, 173, 251, 206, 246, 244, 233, 56, 163, 21, 23, 155, 101, 135, 29, 94, 4, 27, 194, 130, 146, 177, 228, 245, 191, 85, 9, 243, 101, 174, 242, 230, 183, 221, 66, 169, 52, 217, 74, 73, 47, 16, 174, 199, 174, 236, 138, 59, 88, 131, 209, 190, 146, 212, 5, 126, 237, 23, 43, 112, 107, 85, 53, 245, 47, 214, 10, 165, 155, 170, 227, 242, 91, 253, 25, 151, 177, 80, 22, 69, 42, 197, 119, 193, 18, 70, 115, 36, 18, 118, 57, 93, 194, 23, 84, 154, 40, 66, 194, 238, 31, 241, 251, 215, 147, 250, 144, 65, 168, 67, 128, 213, 2, 210, 39, 193, 34, 4, 29, 111, 112, 25, 249, 169, 1, 157, 135, 246, 133, 148, 202, 202, 72, 208, 231, 115, 19, 123, 246, 9, 168, 182, 85, 181, 26, 184, 157, 236, 238, 146, 87, 141, 13, 30, 82, 23, 22, 76, 35, 123, 61, 53, 148, 248, 52, 49, 84, 72, 238, 109, 106, 69, 159, 230, 51, 229, 164, 61, 192, 192, 52, 172, 173, 121, 35, 209, 109, 154, 199, 51, 45, 255, 29, 66, 154, 251, 78, 14, 205, 6, 166, 20, 118, 225, 82, 242, 122, 89, 184, 105, 91, 232, 232, 36, 254, 8, 147, 188, 247, 201, 227, 123, 132, 66, 178, 130, 166, 246, 162, 213, 195, 204, 53, 230, 201, 219, 161, 254, 65, 134, 224, 52, 61, 92, 115, 135, 127, 130, 225, 130, 188, 60, 35, 146, 126, 246, 50, 216, 171, 206, 209, 193, 222, 29, 57, 236, 252, 61, 184, 236, 74, 180, 23, 197, 160, 46, 25, 22, 144, 114, 224, 53, 164, 147, 179, 190, 98, 200, 197, 50, 153, 163, 153, 240, 205, 73, 94, 129, 40, 225, 2, 132, 61, 241, 227, 99, 9, 206, 10, 244, 61, 16, 2, 204, 37, 103, 242, 104, 28, 132, 115, 153, 186, 27, 102, 215, 98, 254, 149, 188, 50, 52, 184, 139, 133, 54, 210, 81, 77, 215, 134, 70, 70, 56, 83, 64, 237, 5, 175, 232, 241, 64, 34, 237, 149, 117, 112, 136, 26, 240, 126, 71, 131, 27, 248, 73, 249, 150, 227, 212, 13, 141, 158, 95, 83, 46, 225, 74, 116, 112, 90, 252, 58, 102, 95, 58, 186, 138, 60, 204, 74, 0, 235, 103, 141, 117, 40, 48, 175, 208, 192, 30, 88, 253, 35, 1, 212, 172, 63, 176, 12, 149, 222, 34, 41, 71, 192, 86, 224, 88, 217, 16, 133, 235, 4, 70, 205, 25, 154, 138, 33, 243, 32, 176, 250, 65, 82, 107, 42, 184, 230, 159, 165, 30, 54, 62, 111, 235, 222, 214, 173, 232, 15, 22, 52, 10, 66, 205, 42, 11, 144, 212, 214, 45, 177, 229, 128, 5, 189, 248, 35, 169, 215, 78, 15, 149, 188, 162, 209, 253, 193, 239, 244, 183, 37, 233, 157, 190, 203, 172, 86, 163, 49, 91, 41, 166, 98, 137, 88, 31, 76, 157, 204, 185, 162, 36, 169, 111, 212, 107, 59, 47, 16, 193, 109, 235, 128, 230, 166, 239, 157, 14, 23, 13, 176, 237, 152, 255, 147, 93, 114, 117, 39, 23, 178, 75, 67, 183, 124, 38, 140, 121, 186, 74, 115, 178, 9, 197, 118, 1, 23, 222, 221, 151, 92, 64, 145, 130, 131, 245, 205, 21, 189, 155, 201, 244, 155, 239, 101, 67, 186, 249, 9, 55, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 192, 52, 174, 242, 81, 205, 211, 61, 25, 139, 159, 177, 105, 41, 30, 42, 213, 46, 197, 53, 167, 58, 7, 239, 29, 185, 82, 211, 68, 212, 184, 107, 226, 41, 43, 224, 22, 195, 136, 195, 83, 229, 114, 175, 66, 156, 29, 234, 244, 207, 2, 130, 205, 111, 77, 101, 218, 137, 131, 12, 134, 83, 223, 104, 127, 53, 221, 160, 131, 7, 177, 14, 230, 144, 57, 252, 186, 129, 17, 232, 197, 196, 98, 209, 1, 45, 125, 38, 79, 78, 79, 205, 86, 137, 34, 148, 236, 104, 255, 148, 126, 139, 170, 152, 81, 124, 241, 99, 85, 64, 219, 190, 41, 26, 241, 189, 46, 120, 146, 174, 125, 38, 89, 232, 191, 159, 41, 60, 59, 124, 3, 83, 90, 193, 179, 178, 218, 237, 71, 118, 84, 146, 132, 171, 138, 85, 203, 68, 215, 196, 179, 144, 14, 177, 7, 131, 178, 35, 178, 60, 195, 206, 133, 204, 114, 45, 244, 85, 215, 54, 6, 195, 13, 21, 169, 53, 170, 193, 40, 111, 41, 129, 135, 1, 7, 231, 11, 30, 182, 1, 49, 39, 153, 125, 42, 194, 181, 161, 31, 225, 12, 7, 203, 136, 56, 221, 249, 243, 10, 70, 40, 7, 185, 44, 130, 246, 110, 117, 80, 156, 16, 107, 9, 208, 52, 225, 196, 107, 78, 99, 182, 163, 75, 85, 211, 230, 155, 237, 90, 188, 158, 228, 168, 219, 214, 1, 214, 10, 208, 65, 24, 6, 106, 197, 31, 24, 182, 90, 212, 193, 164, 165, 72, 252, 129, 220, 23, 60, 110, 87, 37, 248, 212, 75, 104, 132, 28, 240, 211, 62, 28, 98, 56, 14, 84, 116, 201, 72, 203, 112, 226, 194, 235, 85, 186, 124, 193, 204, 158, 88, 88, 154, 237, 87, 112, 209, 204, 251, 167, 218, 9, 3, 92, 176, 47, 83, 94, 17, 116, 73, 210, 76, 89, 65, 53, 117, 81, 135, 24, 123, 72, 228, 209, 12, 130, 113, 64, 15, 0, 129, 145, 180, 246, 137, 98, 85, 142, 28, 11, 98, 31, 212, 141, 27, 126, 36, 194, 225, 96, 107, 28, 56, 46, 129, 86, 211, 202, 198, 8, 130, 145, 168, 251, 168, 47, 190, 124, 154, 7, 24, 236, 155, 6, 216, 2, 52, 183, 14, 81, 237, 145, 106, 163, 57, 70, 110, 201, 195, 76, 225, 169, 141, 27, 123, 4, 168, 127, 46, 127, 235, 142, 233, 238, 31, 216, 199, 11, 226, 248, 73, 60, 46, 31, 130, 42, 199, 120, 19, 114, 194, 175, 145, 98, 24, 241, 112, 251, 162, 211, 147, 73, 105, 44, 119, 124, 155, 203, 208, 30, 84, 236, 50, 175, 194, 84, 2, 84, 57, 101, 137, 115, 18, 205, 178, 85, 140, 239, 187, 40, 123, 255, 215, 212, 221, 248, 8, 108, 82, 221, 132, 14, 109, 202, 131, 101, 219, 111, 5, 104, 94, 147, 8, 157, 43, 127, 65, 229, 59, 138, 201, 160, 29, 119, 166, 145, 221, 160, 237, 117, 188, 140, 19, 233, 86, 27, 112, 176, 201, 67, 209, 58, 131, 86, 64, 101, 220, 165, 73, 191, 134, 42, 233, 90, 100, 18, 227, 209, 125, 238, 13, 77, 212, 120, 177, 12, 53, 15, 253, 142, 192, 182, 156, 74, 171, 128, 12, 35, 10, 156, 182, 209, 168, 84, 192, 114, 145, 152, 124, 207, 225, 128, 108, 54, 189, 60, 250, 115, 88, 184, 129, 7, 54, 68, 99, 212, 251, 57, 193, 136, 36, 125, 173, 9, 110, 84, 241, 59, 165, 113, 22, 152, 51, 85, 215, 160, 211, 164, 74, 19, 92, 36, 28, 182, 244, 9, 168, 250, 79, 123, 164, 160, 207, 240, 29, 29, 91, 38, 31, 188, 16, 228, 118, 149, 198, 198, 123, 14, 133, 20, 110, 176, 129, 138, 94, 248, 218, 77, 108, 191, 3, 141, 69, 248, 163, 99, 44, 87, 208, 18, 202, 33, 184, 40, 2, 222, 223, 120, 144, 93, 173, 140, 217, 214, 57, 15, 78, 141, 161, 248, 165, 4, 189, 14, 213, 23, 46, 113, 141, 18, 31, 137, 224, 228, 19, 62, 168, 70, 248, 204, 171, 125, 122, 155, 19, 50, 210, 89, 69, 6, 23, 241, 173, 182, 133, 86, 219, 241, 9, 215, 247, 155, 68, 18, 22, 107, 167, 120, 118, 169, 9, 221, 231, 153, 100, 199, 129, 43, 239, 122, 102, 79, 161, 133, 75, 74, 184, 210, 30, 175, 5, 20, 8, 48, 208, 5, 219, 33, 224, 96, 252, 1, 42, 19, 38, 147, 44, 197, 172, 222, 84, 156, 79, 217, 103, 46, 60, 174, 144, 121, 208, 111, 207, 54, 16, 163, 104, 156, 10, 207, 160, 151, 193, 121, 38, 251, 43, 200, 28, 137, 109, 22, 140, 17, 13, 95, 69, 119, 61, 222, 131, 92, 105, 130, 56, 96, 236, 209, 218, 51, 172, 213, 244, 44, 64, 60, 88, 192, 199, 41, 83, 141, 237, 224, 62, 187, 134, 251, 89, 48, 18, 12, 121, 63, 28, 218, 86, 160, 86, 109, 99, 206, 2, 236, 50, 26, 239, 237, 63, 12, 102, 84, 252, 215, 145, 131, 231, 49, 212, 54, 43, 99, 224, 120, 178, 36, 106, 99, 92, 77, 4, 176, 3, 99, 0, 188, 98, 168, 58, 123, 240, 159, 102, 55, 108, 176, 198, 49, 8, 141, 220, 122, 216, 43, 55, 35, 106, 133, 53, 123, 69, 84, 167, 23, 9, 209, 194, 29, 186, 63, 184, 71, 241, 49, 33, 47, 88, 39, 65, 91, 85, 92, 198, 126, 212, 129, 102, 167, 100, 174, 89, 228, 134, 42, 212, 208, 194, 252, 67, 150, 198, 132, 209, 16, 209, 249, 44, 238, 138, 179, 128, 92, 6, 197, 10, 134, 97, 232, 147, 219, 143, 72, 209, 83, 35, 210, 182, 162, 183, 213, 125, 47, 156, 218, 18, 194, 137, 234, 117, 231, 112, 250, 48, 146, 123, 141, 174, 61, 213, 177, 251, 162, 214, 211, 122, 171, 155, 211, 117, 228, 198, 235, 155, 225, 14, 85, 57, 54, 8, 168, 75, 216, 68, 135, 19, 133, 24, 26, 138, 111, 72, 0, 250, 101, 237, 246, 137, 8, 38, 83, 123, 237, 250, 104, 106, 31, 217, 235, 103, 177, 73, 174, 208, 233, 230, 69, 77, 161, 21, 10, 223, 157, 62, 232, 133, 80, 117, 214, 254, 247, 93, 53, 45, 130, 226, 118, 216, 149, 78, 143, 25, 30, 110, 134, 48, 72, 1, 107, 197, 211, 48, 235, 82, 179, 54, 95, 171, 91, 36, 188, 53, 85, 24, 216, 236, 79, 62, 90, 52, 157, 175, 171, 127, 132, 118, 187, 200, 5, 60, 22, 6, 117, 78, 242, 169, 102, 46, 74, 185, 188, 138, 221, 79, 49, 13, 247, 196, 176, 199, 53, 220, 208, 175, 132, 8, 186, 175, 76, 125, 227, 33, 44, 193, 209, 17, 52, 110, 227, 212, 139, 93, 154, 218, 220, 57, 5, 255, 119, 252, 7, 69, 145, 109, 118, 76, 45, 48, 20, 218, 123, 26, 193, 203, 254, 58, 206, 189, 91, 87, 28, 112, 27, 204, 145, 8, 8, 203, 83, 199, 179, 70, 32, 208, 8, 44, 44, 217, 69, 93, 32, 74, 13, 105, 100, 232, 134, 89, 67, 98, 52, 242, 113, 109, 36, 244, 169, 115, 146, 186, 48, 75, 128, 102, 149, 174, 100, 5, 87, 23, 88, 161, 184, 135, 198, 80, 194, 179, 150, 4, 182, 153, 124, 63, 34, 251, 63, 73, 37, 18, 188, 143, 151, 211, 2, 11, 182, 108, 6, 109, 9, 192, 85, 67, 251, 113, 129, 185, 10, 81, 246, 134, 57, 249, 181, 39, 2, 172, 177, 69, 221, 100, 77, 234, 159, 108, 192, 187, 22, 239, 204, 26, 94, 199, 59, 193, 124, 97, 107, 238, 43, 72, 36, 172, 173, 100, 3, 161, 92, 128, 18, 51, 253, 186, 99, 120, 241, 227, 110, 163, 21, 128, 76, 0, 148, 199, 82, 165, 71, 150, 145, 226, 233, 70, 52, 185, 206, 113, 110, 186, 143, 46, 101, 113, 96, 134, 203, 115, 46, 55, 192, 157, 132, 213, 103, 74, 56, 60, 226, 172, 157, 32, 97, 223, 104, 48, 125, 83, 201, 108, 78, 237, 12, 215, 156, 61, 116, 134, 118, 63, 200, 81, 7, 47, 77, 30, 241, 4, 137, 72, 8, 91, 145, 131, 254, 195, 186, 45, 197, 110, 40, 219, 97, 152, 169, 225, 55, 192, 230, 111, 60, 241, 161, 50, 177, 243, 51, 234, 106, 27, 142, 1, 189, 193, 154, 186, 97, 14, 148, 58, 207, 191, 184, 68, 201, 243, 178, 192, 239, 119, 184, 134, 119, 241, 66, 223, 13, 66, 95, 251, 229, 94, 98, 209, 155, 193, 245, 65, 137, 119, 28, 21, 248, 157, 7, 38, 235, 152, 149, 26, 232, 137, 163, 244, 168, 119, 255, 98, 154, 244, 184, 192, 128, 41, 22, 106, 88, 67, 221, 88, 250, 13, 146, 186, 159, 222, 62, 120, 192, 209, 111, 237, 74, 128, 194, 125, 45, 48, 161, 135, 15, 178, 28, 138, 107, 200, 198, 196, 70, 193, 133, 132, 133, 166, 177, 202, 99, 13, 217, 192, 252, 46, 121, 76, 53, 138, 194, 89, 188, 116, 79, 121, 226, 110, 5, 152, 64, 100, 50, 210, 195, 168, 80, 1, 241, 155, 92, 104, 113, 111, 242, 97, 185, 175, 105, 220, 50, 208, 175, 77, 147, 100, 181, 2, 190, 96, 109, 124, 113, 30, 81, 143, 151, 17, 71, 202, 252, 10, 155, 190, 218, 183, 185, 200, 67, 199, 111, 150, 251, 13, 147, 58, 133, 186, 141, 249, 64, 223, 148, 110, 28, 236, 49, 22, 57, 17, 73, 146, 239, 146, 30, 234, 88, 167, 108, 235, 12, 88, 131, 33, 37, 202, 137, 81, 186, 89, 6, 6, 72, 210, 191, 90, 124, 235, 98, 144, 97, 245, 49, 67, 169, 106, 190, 157, 56, 227, 0, 196, 55, 177, 246, 5, 171, 178, 130, 214, 132, 191, 0, 218, 236, 129, 191, 155, 129, 241, 33, 208, 156, 254, 132, 121, 163, 189, 231, 51, 180, 21, 190, 87, 29, 5, 102, 185, 218, 136, 248, 113, 65, 209, 238, 177, 109, 248, 167, 189, 241, 181, 115, 24, 89, 95, 67, 115, 211, 244, 218, 63, 79, 148, 168, 238, 47, 110, 82, 130, 96, 55, 120, 139, 149, 120, 204, 85, 249, 232, 88, 139, 152, 111, 170, 143, 209, 129, 105, 87, 50, 12, 192, 50, 227, 191, 29, 194, 102, 243, 193, 142, 62, 49, 248, 188, 92, 11, 60, 228, 133, 100, 209, 8, 246, 85, 143, 169, 197, 81, 169, 72, 51, 102, 19, 210, 249, 185, 78, 200, 179, 42, 40, 111, 94, 84, 221, 156, 90, 2, 216, 95, 53, 92, 217, 172, 192, 97, 130, 77, 87, 163, 65, 112, 45, 250, 81, 131, 95, 4, 68, 136, 139, 240, 43, 141, 251, 195, 36, 31, 179, 197, 10, 76, 230, 247, 154, 134, 215, 76, 134, 240, 248, 151, 186, 16, 253, 99, 129, 147, 47, 55, 53, 116, 139, 65, 64, 44, 29, 168, 200, 169, 8, 118, 38, 100, 162, 124, 48, 46, 137, 246, 255, 39, 156, 70, 228, 139, 6, 35, 67, 229, 235, 18, 114, 66, 206, 217, 236, 11, 86, 119, 106, 120, 177, 150, 118, 52, 6, 204, 14, 4, 196, 40, 149, 120, 162, 11, 143, 168, 138, 248, 243, 62, 123, 15, 78, 255, 23, 100, 206, 115, 143, 144, 114, 210, 165, 115, 161, 73, 211, 146, 104, 185, 127, 166, 117, 50, 63, 25, 242, 101, 119, 219, 108, 208, 71, 204, 116, 138, 226, 175, 178, 243, 52, 238, 124, 85, 161, 173, 70, 233, 141, 108, 161, 84, 14, 226, 235, 12, 28, 16, 249, 79, 198, 120, 192, 204, 17, 138, 231, 159, 81, 25, 130, 216, 29, 246, 62, 212, 113, 237, 67, 131, 145, 221, 189, 143, 137, 244, 17, 214, 165, 13, 205, 92, 172, 241, 8, 205, 146, 131, 246, 97, 210, 91, 107, 167, 251, 32, 155, 208, 141, 74, 184, 228, 40, 237, 171, 12, 29, 152, 31, 144, 168, 66, 216, 171, 187, 23, 118, 55, 159, 194, 137, 51, 119, 14, 95, 153, 62, 186, 38, 69, 119, 144, 155, 50, 15, 54, 37, 88, 32, 225, 3, 105, 136, 254, 28, 104, 210, 231, 16, 238, 109, 37, 117, 150, 0, 253, 121, 33, 14, 83, 178, 187, 112, 57, 96, 197, 72, 0, 164, 107, 236, 45, 138, 56, 214, 34, 5, 141, 86, 227, 107, 107, 110, 121, 191, 132, 151, 203, 91, 158, 82, 180, 65, 249, 109, 94, 169, 45, 25, 99, 86, 87, 79, 140, 44, 141, 40, 166, 128, 206, 146, 244, 31, 200, 192, 125, 35, 161, 202, 241, 225, 82, 44, 114, 189, 42, 135, 50, 99, 166, 200, 107, 92, 178, 232, 4, 88, 33, 27, 122, 192, 174, 138, 147, 154, 54, 111, 75, 46, 159, 73, 34, 154, 255, 102, 16, 123, 161, 222, 172, 154, 208, 206, 23, 69, 76, 84, 152, 153, 178, 151, 12, 41, 104, 98, 214, 142, 202, 114, 183, 30, 242, 8, 237, 182, 133, 229, 57, 209, 32, 164, 139, 247, 137, 6, 42, 127, 100, 170, 141, 113, 52, 13, 52, 137, 66, 237, 43, 61, 149, 191, 124, 73, 232, 14, 109, 168, 151, 164, 237, 141, 6, 228, 197, 168, 143, 4, 171, 113, 28, 46, 228, 101, 111, 198, 205, 32, 110, 35, 49, 127, 95, 207, 11, 155, 221, 27, 85, 188, 14, 127, 211, 19, 208, 139, 67, 182, 153, 229, 29, 214, 156, 191, 29, 10, 66, 187, 194, 168, 194, 246, 234, 118, 170, 194, 82, 179, 242, 24, 58, 142, 24, 232, 103, 109, 114, 210, 10, 237, 8, 201, 66, 125, 245, 52, 129, 60, 10, 211, 199, 73, 152, 116, 175, 216, 111, 213, 141, 162, 172, 78, 204, 92, 182, 12, 158, 165, 129, 98, 54, 130, 236, 12, 47, 203, 63, 133, 20, 225, 128, 178, 150, 84, 94, 228, 236, 54, 44, 68, 65, 204, 84, 216, 7, 253, 22, 254, 225, 203, 108, 200, 59, 166, 91, 70, 119, 185, 166, 175, 76, 129, 175, 203, 58, 205, 39, 126, 15, 239, 104, 20, 95, 127, 161, 196, 28, 88, 51, 11, 232, 44, 119, 45, 25, 32, 240, 237, 147, 222, 74, 129, 161, 39, 7, 235, 65, 113, 108, 75, 194, 117, 54, 46, 48, 252, 23, 145, 253, 146, 26, 193, 71, 31, 93, 190, 129, 74, 30, 64, 22, 204, 73, 25, 56, 130, 29, 202, 84, 67, 84, 150, 164, 154, 229, 67, 49, 125, 31, 114, 44, 74, 83, 199, 26, 129, 218, 21, 91, 180, 169, 142, 104, 114, 150, 34, 97, 39, 153, 115, 240, 90, 71, 179, 198, 137, 15, 66, 82, 243, 142, 188, 61, 73, 39, 162, 29, 127, 183, 2, 204, 3, 194, 51, 47, 29, 7, 155, 6, 98, 225, 25, 98, 224, 30, 47, 152, 184, 23, 80, 115, 202, 48, 161, 23, 137, 32, 230, 210, 45, 42, 173, 117, 116, 181, 11, 250, 108, 100, 129, 45, 98, 77, 208, 215, 113, 103, 107, 140, 17, 213, 253, 202, 22, 158, 153, 224, 216, 53, 131, 125, 60, 138, 229, 199, 236, 168, 121, 174, 126, 204, 113, 113, 66, 147, 2, 58, 143, 50, 120, 123, 27, 55, 132, 118, 255, 152, 128, 137, 97, 145, 144, 164, 102, 71, 95, 59, 57, 109, 99, 172, 77, 159, 69, 81, 107, 38, 58, 81, 173, 30, 17, 123, 58, 208, 159, 212, 204, 195, 146, 48, 129, 223, 62, 74, 34, 161, 188, 185, 150, 124, 2, 175, 205, 241, 202, 161, 7, 50, 19, 78, 41, 248, 70, 9, 211, 53, 242, 147, 222, 158, 230, 133, 149, 90, 83, 177, 133, 78, 189, 246, 129, 242, 39, 93, 171, 33, 26, 131, 211, 140, 34, 230, 172, 138, 61, 193, 246, 253, 205, 210, 92, 248, 181, 219, 3, 47, 200, 24, 91, 124, 122, 15, 213, 192, 115, 177, 196, 142, 141, 121, 98, 28, 202, 32, 156, 46, 6, 34, 21, 164, 212, 186, 205, 85, 161, 61, 176, 237, 250, 33, 184, 250, 248, 154, 133, 16, 186, 207, 2, 199, 145, 74, 196, 234, 201, 66, 76, 221, 85, 66, 241, 112, 97, 15, 52, 249, 211, 90, 132, 14, 74, 167, 81, 28, 184, 221, 51, 158, 96, 161, 144, 80, 7, 154, 174, 61, 234, 66, 93, 40, 229, 187, 186, 239, 121, 90, 137, 103, 229, 48, 116, 19, 212, 231, 195, 114, 57, 28, 234, 149, 211, 73, 204, 202, 52, 71, 112, 132, 143, 103, 10, 83, 205, 185, 251, 62, 174, 243, 32, 121, 28, 252, 92, 167, 231, 119, 110, 129, 14, 233, 37, 69, 120, 15, 90, 41, 124, 169, 196, 161, 137, 0, 217, 44, 15, 93, 212, 239, 58, 181, 20, 176, 159, 162, 74, 229, 41, 99, 14, 145, 65, 31, 224, 179, 30, 132, 226, 71, 18, 132, 48, 78, 33, 247, 86, 205, 28, 197, 175, 204, 126, 44, 140, 66, 13, 112, 183, 84, 3, 143, 214, 80, 133, 126, 145, 143, 34, 77, 23, 146, 177, 165, 151, 70, 240, 223, 116, 115, 25, 212, 248, 27, 113, 47, 200, 90, 132, 56, 26, 94, 0, 76, 138, 174, 112, 47, 54, 107, 193, 149, 73, 53, 142, 218, 91, 57, 238, 46, 178, 154, 71, 19, 189, 166, 196, 94, 170, 218, 133, 118, 205, 225, 108, 153, 24, 237, 27, 111, 37, 90, 14, 100, 15, 229, 18, 128, 213, 4, 155, 143, 166, 39, 142, 206, 78, 189, 91, 166, 159, 129, 30, 7, 139, 72, 227, 164, 164, 161, 100, 94, 162, 55, 49, 248, 189, 179, 206, 146, 255, 91, 179, 82, 6, 138, 24, 141, 171, 146, 217, 50, 135, 32, 203, 177, 27, 91, 24, 204, 252, 137, 121, 90, 226, 43, 35, 226, 246, 38, 72, 212, 172, 188, 173, 69, 107, 148, 163, 88, 125, 144, 127, 44, 41, 190, 71, 0, 88, 70, 175, 189, 233, 55, 206, 220, 185, 192, 197, 165, 193, 87, 146, 249, 94, 72, 59, 57, 43, 52, 203, 194, 56, 221, 21, 130, 183, 78, 75, 154, 67, 18, 74, 151, 201, 38, 202, 108, 61, 8, 29, 98, 62, 172, 77, 155, 227, 189, 10, 116, 179, 50, 165, 152, 74, 209, 96, 200, 230, 180, 188, 191, 165, 245, 108, 36, 26, 37, 17, 167, 125, 120, 111, 236, 211, 66, 183, 1, 251, 79, 34, 26, 121, 28, 136, 33, 149, 17, 174, 43, 206, 137, 77, 10, 173, 243, 111, 73, 106, 241, 252, 70, 43, 147, 120, 40, 229, 121, 201, 69, 195, 63, 43, 87, 45, 203, 174, 214, 181, 35, 46, 226, 47, 44, 56, 123, 56, 73, 166, 252, 144, 150, 100, 73, 156, 177, 225, 105, 161, 41, 226, 162, 167, 132, 45, 62, 211, 104, 16, 89, 173, 255, 70, 194, 254, 186, 130, 50, 135, 121, 197, 147, 84, 97, 49, 107, 26, 164, 189, 151, 234, 39, 72, 117, 21, 92, 43, 119, 110, 45, 209, 172, 192, 131, 45, 2, 99, 179, 131, 248, 69, 144, 223, 23, 151, 0, 196, 64, 161, 172, 49, 56, 114, 108, 68, 134, 160, 209, 154, 30, 240, 206, 156, 140, 80, 70, 34, 218, 43, 187, 80, 209, 26, 166, 69, 4, 240, 135, 148, 68, 64, 170, 244, 134, 32, 69, 87, 50, 135, 112, 91, 71, 0, 134, 245, 80, 30, 27, 12, 234, 212, 223, 168, 27, 78, 19, 126, 77, 138, 121, 75, 51, 47, 44, 5, 253, 227, 88, 41, 226, 189, 183, 124, 184, 68, 210, 6, 171, 77, 78, 221, 154, 78, 229, 88, 147, 147, 21, 119, 13, 251, 71, 89, 237, 224, 152, 21, 88, 234, 234, 130, 74, 119, 115, 27, 8, 139, 155, 243, 195, 29, 196, 213, 5, 161, 117, 41, 246, 92, 204, 143, 186, 229, 59, 18, 76, 171, 224, 152, 224, 82, 193, 115, 208, 9, 84, 177, 130, 178, 122, 251, 216, 39, 253, 73, 199, 154, 88, 236, 215, 219, 154, 195, 11, 235, 165, 217, 212, 248, 65, 43, 0, 112, 35, 39, 18, 238, 212, 151, 187, 53, 30, 235, 202, 217, 163, 177, 80, 70, 97, 90, 98, 174, 5, 163, 246, 219, 124, 216, 253, 43, 114, 108, 69, 2, 242, 77, 85, 51, 91, 7, 226, 100, 238, 213, 183, 55, 47, 222, 65, 222, 75, 49, 102, 29, 20, 10, 103, 232, 107, 0, 27, 247, 112, 177, 121, 185, 250, 215, 18, 78, 186, 87, 112, 147, 225, 75, 236, 241, 197, 161, 123, 146, 132, 217, 240, 98, 201, 17, 53, 82, 60, 237, 232, 92, 177, 174, 1, 51, 12, 54, 226, 215, 58, 61, 186, 15, 135, 103, 195, 176, 10, 74, 110, 97, 106, 100, 112, 153, 16, 115, 248, 136, 36, 43, 245, 26, 211, 246, 143, 10, 112, 14, 176, 86, 8, 62, 93, 100, 135, 160, 125, 244, 49, 17, 192, 63, 42, 110, 36, 61, 93, 14, 16, 41, 98, 232, 84, 222, 245, 155, 24, 210, 135, 16, 84, 204, 214, 83, 67, 255, 217, 117, 85, 99, 107, 3, 247, 112, 24, 143, 221, 99, 49, 222, 12, 113, 185, 146, 231, 24, 10, 163, 80, 92, 208, 40, 35, 42, 4, 179, 164, 133, 228, 238, 37, 194, 173, 2, 132, 221, 127, 26, 108, 192, 48, 29, 100, 252, 150, 41, 204, 9, 103, 1, 14, 158, 249, 155, 88, 236, 122, 184, 21, 190, 12, 42, 239, 63, 211, 105, 218, 77, 199, 63, 86, 126, 40, 209, 229, 23, 173, 73, 180, 54, 17, 136, 94, 9, 80, 145, 207, 18, 196, 81, 163, 232, 195, 15, 97, 189, 3, 77, 171, 13, 209, 115, 43, 111, 139, 101, 26, 181, 212, 49, 27, 98, 60, 243, 94, 127, 50, 134, 131, 80, 13, 83, 89, 166, 11, 230, 42, 243, 219, 131, 143, 64, 179, 1, 44, 206, 1, 25, 71, 47, 102, 1, 174, 91, 96, 145, 66, 205, 155, 46, 175, 197, 35, 134, 19, 142, 96, 224, 80, 249, 187, 203, 133, 189, 178, 243, 148, 190, 210, 96, 235, 209, 39, 47, 228, 34, 95, 211, 22, 212, 179, 144, 17, 7, 167, 105, 181, 197, 163, 21, 92, 227, 106, 99, 97, 69, 82, 75, 81, 252, 134, 112, 88, 12, 199, 223, 255, 127, 120, 203, 252, 45, 155, 20, 111, 208, 148, 38, 62, 26, 44, 198, 171, 101, 105, 55, 59, 34, 149, 250, 144, 241, 173, 52, 152, 11, 206, 218, 250, 31, 106, 194, 66, 21, 172, 43, 23, 96, 152, 74, 41, 111, 46, 57, 67, 46, 115, 157, 120, 32, 244, 181, 120, 138, 172, 192, 72, 145, 198, 4, 153, 118, 250, 158, 115, 197, 143, 215, 34, 193, 194, 184, 38, 232, 194, 11, 238, 179, 12, 171, 247, 147, 122, 216, 224, 15, 240, 70, 64, 139, 209, 176, 39, 37, 185, 63, 97, 103, 177, 114, 120, 230, 242, 13, 34, 185, 145, 67, 129, 107, 21, 250, 38, 222, 4, 102, 72, 61, 149, 25, 82, 132, 101, 245, 189, 223, 10, 48, 15, 181, 35, 98, 9, 193, 88, 8, 9, 178, 105, 94, 34, 146, 236, 134, 168, 46, 201, 101, 93, 30, 11, 6, 30, 76, 87, 11, 46, 168, 244, 47, 150, 194, 127, 252, 157, 124, 161, 197, 169, 21, 17, 224, 26, 55, 22, 112, 96, 0, 46, 220, 143, 129, 166, 108, 155, 239, 158, 186, 125, 240, 44, 54, 141, 156, 129, 184, 216, 180, 189, 158, 14, 197, 64, 97, 152, 154, 39, 159, 106, 74, 166, 252, 70, 203, 206, 30, 218, 69, 26, 139, 113, 26, 68, 177, 99, 237, 180, 12, 66, 108, 95, 8, 136, 80, 81, 206, 131, 94, 203, 20, 229, 54, 14, 70, 50, 176, 87, 128, 171, 187, 37, 118, 77, 147, 114, 186, 163, 3, 198, 64, 85, 226, 183, 5, 182, 14, 213, 237, 27, 89, 154, 51, 218, 52, 253, 88, 56, 106, 3, 52, 10, 165, 125, 60, 174, 246, 189, 50, 27, 253, 116, 62, 247, 131, 198, 18, 119, 202, 10, 60, 233, 29, 6, 46, 39, 204, 152, 116, 182, 243, 99, 52, 230, 84, 207, 220, 58, 27, 222, 198, 85, 142, 186, 46, 182, 163, 65, 94, 109, 13, 50, 127, 209, 124, 50, 2, 55, 128, 139, 183, 23, 15, 168, 159, 36, 109, 138, 41, 12, 175, 132, 224, 65, 70, 52, 80, 2, 179, 46, 220, 218, 110, 187, 70, 230, 200, 212, 235, 95, 35, 160, 155, 161, 34, 168, 200, 173, 13, 3, 229, 241, 25, 186, 115, 182, 157, 24, 88, 100, 80, 207, 59, 128, 100, 106, 141, 146, 170, 121, 110, 112, 25, 5, 26, 101, 107, 30, 17, 72, 177, 162, 164, 54, 100, 210, 196, 191, 71, 5, 236, 4, 55, 242, 132, 64, 101, 37, 124, 222, 15, 39, 229, 111, 76, 210, 171, 236, 7, 93, 14, 216, 248, 45, 79, 218, 85, 211, 199, 250, 104, 33, 143, 222, 15, 88, 238, 164, 172, 135, 2, 101, 11, 255, 112, 8, 238, 139, 63, 190, 149, 130, 215, 130, 110, 68, 83, 56, 239, 253, 120, 96, 196, 38, 198, 153, 137, 110, 157, 87, 94, 69, 70, 176, 197, 220, 237, 73, 176, 217, 112, 186, 20, 16, 151, 251, 244, 204, 120, 42, 216, 194, 250, 127, 191, 45, 87, 138, 204, 145, 110, 119, 217, 185, 242, 50, 47, 102, 253, 107, 242, 121, 122, 204, 10, 232, 48, 214, 183, 190, 152, 249, 7, 228, 139, 181, 252, 84, 123, 199, 146, 175, 30, 152, 54, 4, 162, 26, 19, 103, 112, 216, 130, 148, 218, 40, 215, 53, 114, 87, 174, 194, 30, 148, 70, 183, 213, 103, 2, 24, 161, 173, 212, 50, 52, 10, 46, 252, 205, 46, 192, 187, 105, 16, 187, 193, 255, 182, 92, 222, 209, 193, 118, 129, 137, 218, 80, 242, 213, 89, 122, 224, 65, 158, 65, 104, 40, 15, 135, 86, 159, 63, 139, 29, 195, 230, 20, 180, 82, 142, 98, 48, 228, 204, 22, 199, 47, 96, 30, 125, 192, 222, 237, 243, 115, 222, 31, 182, 150, 172, 42, 17, 232, 108, 142, 241, 119, 143, 215, 117, 221, 37, 188, 136, 68, 166, 53, 120, 198, 16, 59, 74, 184, 175, 120, 42, 72, 102, 137, 171, 56, 141, 189, 173, 89, 128, 12, 114, 241, 189, 111, 136, 73, 132, 123, 93, 249, 199, 130, 191, 251, 1, 251, 208, 58, 108, 177, 41, 72, 20, 202, 120, 187, 38, 8, 163, 75, 63, 139, 91, 159, 26, 233, 162, 204, 152, 80, 228, 52, 96, 166, 8, 250, 206, 115, 97, 28, 220, 48, 59, 19, 66, 12, 137, 203, 7, 95, 23, 107, 3, 185, 110, 57, 39, 117, 13, 68, 70, 54, 238, 106, 230, 167, 242, 216, 208, 42, 154, 110, 41, 188, 51, 156, 153, 0, 199, 221, 58, 21, 57, 68, 24, 114, 67, 93, 90, 0, 252, 188, 145, 7, 24, 55, 189, 176, 50, 106, 154, 57, 17, 95, 223, 93, 17, 125, 163, 80, 18, 22, 229, 212, 90, 138, 222, 86, 8, 125, 63, 229, 145, 190, 200, 10, 39, 176, 9, 182, 211, 236, 122, 29, 134, 1, 186, 231, 227, 215, 194, 42, 240, 7, 196, 0, 179, 211, 150, 193, 21, 137, 84, 32, 92, 218, 185, 7, 200, 34, 179, 138, 244, 114, 167, 159, 23, 51, 124, 60, 253, 124, 75, 8, 65, 123, 59, 88, 219, 250, 242, 250, 112, 27, 222, 143, 17, 107, 48, 44, 172, 13, 223, 78, 218, 107, 93, 235, 5, 208, 23, 179, 176, 38, 213, 101, 154, 64, 132, 134, 83, 63, 77, 229, 126, 65, 142, 245, 167, 180, 96, 51, 24, 148, 105, 243, 63, 186, 163, 124, 34, 50, 179, 29, 215, 142, 5, 239, 54, 7, 196, 36, 81, 188, 247, 192, 3, 244, 124, 253, 168, 19, 233, 109, 231, 192, 175, 145, 117, 76, 63, 70, 62, 40, 182, 78, 254, 130, 186, 51, 198, 159, 107, 19, 156, 134, 103, 50, 90, 103, 74, 56, 89, 219, 199, 9, 95, 82, 84, 194, 128, 42, 20, 199, 148, 228, 7, 118, 119, 197, 45, 128, 9, 170, 208, 53, 183, 193, 219, 5, 217, 212, 134, 223, 36, 133, 92, 186, 235, 96, 221, 117, 0, 193, 177, 162, 117, 175, 70, 109, 31, 153, 192, 154, 149, 154, 14, 97, 150, 111, 227, 28, 62, 28, 87, 9, 143, 179, 167, 61, 34, 56, 49, 214, 103, 226, 6, 252, 32, 41, 67, 251, 82, 211, 79, 59, 118, 84, 13, 186, 17, 210, 208, 173, 195, 188, 134, 107, 74, 31, 134, 203, 90, 191, 112, 36, 15, 24, 25, 235, 139, 143, 62, 206, 200, 184, 140, 76, 38, 33, 145, 111, 208, 150, 137, 130, 192, 60, 198, 200, 136, 65, 8, 120, 228, 137, 230, 157, 86, 120, 28, 249, 236, 246, 108, 236, 190, 181, 14, 130, 11, 117, 191, 234, 124, 3, 114, 238, 202, 204, 12, 64, 157, 68, 242, 69, 222, 71, 38, 20, 167, 248, 156, 18, 118, 68, 41, 139, 228, 235, 148, 91, 226, 42, 148, 22, 166, 232, 244, 29, 159, 154, 36, 142, 96, 176, 49, 183, 130, 138, 26, 37, 220, 156, 202, 183, 34, 131, 245, 174, 136, 48, 154, 230, 37, 118, 121, 68, 231, 79, 63, 221, 46, 137, 160, 179, 87, 17, 218, 214, 63, 102, 102, 99, 169, 198, 113, 33, 76, 13, 61, 36, 89, 148, 49, 134, 239, 253, 12, 242, 28, 5, 21, 143, 242, 106, 146, 125, 164, 137, 207, 95, 235, 57, 211, 192, 118, 224, 242, 249, 16, 83, 56, 41, 181, 124, 108, 16, 28, 185, 71, 171, 15, 164, 118, 198, 66, 198, 194, 107, 83, 84, 163, 186, 219, 43, 221, 9, 3, 20, 103, 40, 59, 249, 24, 216, 106, 16, 99, 168, 109, 128, 169, 57, 46, 158, 81, 167, 201, 255, 62, 103, 14, 62, 238, 99, 254, 210, 106, 23, 120, 215, 2, 3, 73, 251, 237, 135, 128, 128, 206, 101, 77, 245, 27, 70, 53, 196, 81, 223, 13, 0, 204, 10, 222, 12, 164, 202, 100, 79, 25, 249, 121, 215, 148, 225, 91, 127, 75, 75, 163, 110, 205, 5, 204, 177, 254, 134, 245, 217, 178, 64, 239, 106, 55, 124, 16, 80, 124, 16, 81, 169, 61, 200, 221, 24, 221, 18, 233, 230, 164, 121, 212, 126, 79, 2, 216, 164, 249, 41, 255, 39, 98, 231, 12, 123, 13, 116, 220, 172, 166, 89, 112, 113, 250, 61, 176, 153, 84, 225, 187, 162, 79, 65, 106, 221, 173, 209, 157, 70, 33, 75, 158, 110, 152, 39, 200, 89, 91, 89, 253, 126, 84, 27, 158, 181, 101, 249, 32, 129, 198, 38, 144, 92, 64, 112, 208, 113, 60, 212, 72, 138, 49, 82, 95, 183, 174, 225, 77, 53, 121, 211, 223, 131, 161, 148, 220, 88, 131, 151, 69, 208, 240, 49, 163, 151, 121, 50, 79, 129, 137, 98, 57, 18, 33, 202, 150, 120, 255, 99, 34, 54, 85, 204, 172, 120, 77, 42, 123, 242, 129, 92, 196, 78, 101, 98, 25, 146, 73, 186, 132, 227, 246, 96, 236, 208, 63, 50, 90, 183, 134, 219, 143, 100, 54, 175, 20, 172, 107, 171, 169, 199, 50, 110, 252, 135, 93, 169, 144, 100, 236, 91, 122, 111, 40, 196, 143, 73, 177, 56, 50, 27, 21, 249, 185, 212, 182, 40, 134, 197, 187, 55, 165, 125, 48, 132, 76, 242, 184, 173, 177, 111, 150, 67, 58, 189, 122, 152, 228, 51, 241, 130, 42, 113, 112, 62, 70, 131, 4, 23, 177, 114, 212, 125, 157, 28, 8, 238, 223, 158, 211, 172, 145, 188, 65, 125, 62, 45, 220, 124, 226, 100, 34, 36, 153, 93, 76, 157, 89, 219, 60, 42, 88, 68, 158, 155, 181, 124, 242, 72, 167, 74, 56, 176, 56, 114, 203, 54, 170, 85, 155, 235, 79, 29, 201, 71, 124, 181, 127, 180, 139, 147, 47, 167, 26, 18, 67, 141, 150, 37, 197, 6, 170, 96, 68, 89, 209, 246, 182, 183, 53, 68, 239, 126, 147, 50, 210, 34, 248, 246, 109, 34, 41, 213, 229, 134, 154, 97, 241, 132, 17, 162, 180, 74, 151, 253, 150, 69, 251, 151, 63, 192, 219, 79, 253, 212, 137, 234, 196, 133, 215, 211, 147, 128, 54, 85, 93, 202, 30, 168, 167, 128, 125, 150, 188, 250, 23, 195, 249, 52, 179, 26, 207, 129, 227, 68, 78, 56, 2, 17, 86, 220, 89, 99, 19, 20, 173, 57, 203, 140, 66, 231, 27, 69, 214, 238, 201, 134, 89, 102, 254, 85, 249, 132, 115, 51, 39, 65, 184, 199, 187, 14, 44, 6, 217, 16, 227, 116, 185, 66, 201, 188, 95, 66, 178, 243, 103, 79, 144, 147, 139, 59, 123, 238, 28, 18, 202, 166, 75, 59, 246, 190, 150, 75, 73, 182, 251, 132, 15, 248, 96, 112, 253, 41, 3, 203, 44, 141, 147, 255, 69, 85, 78, 129, 60, 145, 81, 166, 224, 131, 132, 215, 210, 169, 5, 136, 178, 23, 30, 139, 153, 106, 40, 54, 139, 244, 214, 43, 132, 229, 221, 58, 81, 81, 57, 190, 168, 255, 114, 63, 122, 173, 6, 136, 110, 159, 188, 50, 188, 91, 56, 185, 99, 107, 139, 120, 176, 228, 142, 146, 209, 96, 27, 133, 77, 69, 254, 114, 99, 194, 195, 4, 80, 36, 220, 147, 252, 207, 142, 66, 65, 64, 226, 63, 85, 218, 66, 125, 108, 197, 49, 143, 59, 43, 182, 0, 253, 169, 234, 209, 57, 90, 190, 234, 14, 25, 237, 62, 155, 188, 246, 92, 78, 241, 21, 154, 242, 201, 59, 16, 147, 73, 252, 52, 13, 175, 51, 158, 248, 118, 159, 4, 186, 101, 250, 170, 10, 16, 135, 251, 224, 114, 97, 61, 25, 102, 23, 74, 58, 118, 158, 32, 74, 115, 104, 240, 131, 42, 187, 155, 134, 209, 171, 225, 85, 13, 71, 252, 156, 81, 126, 72, 110, 45, 207, 84, 113, 187, 61, 152, 107, 111, 80, 105, 35, 104, 81, 245, 68, 28, 51, 67, 212, 172, 99, 191, 248, 217, 91, 186, 232, 145, 201, 135, 56, 164, 52, 127, 137, 111, 186, 6, 164, 236, 112, 31, 232, 75, 224, 58, 209, 31, 205, 204, 46, 180, 127, 215, 44, 45, 13, 147, 165, 245, 241, 162, 178, 249, 226, 241, 113, 104, 80, 175, 59, 1, 43, 12, 25, 255, 146, 70, 208, 140, 140, 225, 122, 125, 181, 239, 73, 89, 5, 107, 9, 241, 8, 16, 223, 203, 176, 57, 33, 4, 115, 216, 80, 155, 249, 103, 241, 188, 44, 216, 37, 115, 171, 104, 154, 145, 134, 183, 58, 141, 141, 178, 123, 166, 222, 67, 68, 154, 167, 52, 235, 31, 112, 206, 223, 53, 6, 183, 5, 146, 93, 226, 30, 73, 237, 197, 140, 19, 34, 104, 116, 213, 152, 6, 75, 215, 218, 214, 66, 101, 19, 72, 244, 9, 81, 57, 43, 202, 165, 46, 36, 100, 31, 15, 218, 44, 181, 120, 172, 25, 99, 242, 188, 3, 83, 202, 190, 27, 251, 130, 200, 101, 175, 176, 105, 39, 227, 210, 240, 121, 137, 42, 27, 128, 5, 30, 234, 109, 232, 77, 59, 100, 180, 107, 5, 215, 28, 55, 228, 186, 224, 16, 156, 182, 238, 181, 59, 124, 105, 117, 32, 66, 83, 110, 109, 112, 68, 95, 77, 121, 139, 94, 176, 190, 6, 58, 109, 213, 214, 24, 253, 72, 61, 86, 209, 20, 88, 36, 146, 179, 79, 168, 66, 209, 168, 48, 253, 177, 239, 139, 166, 213, 72, 242, 160, 36, 254, 135, 57, 207, 55, 198, 205, 150, 198, 54, 140, 247, 242, 52, 106, 132, 71, 67, 233, 29, 181, 247, 189, 36, 48, 232, 111, 130, 149, 234, 243, 241, 165, 66, 221, 64, 173, 207, 0, 69, 201, 111, 209, 157, 16, 56, 217, 29, 157, 106, 232, 206, 148, 110, 71, 113, 29, 228, 195, 57, 249, 181, 71, 203, 211, 131, 64, 92, 141, 89, 58, 210, 70, 246, 227, 146, 137, 63, 41, 250, 187, 56, 160, 17, 174, 45, 28, 245, 204, 63, 18, 174, 162, 53, 208, 121, 187, 1, 121, 46, 50, 245, 207, 140, 5, 186, 237, 72, 158, 163, 44, 143, 197, 127, 34, 160, 41, 242, 108, 220, 123, 138, 205, 164, 23, 164, 18, 117, 123, 153, 22, 150, 73, 141, 43, 176, 88, 251, 198, 143, 93, 33, 20, 40, 143, 84, 197, 67, 255, 148, 57, 146, 198, 114, 33, 71, 30, 82, 192, 170, 52, 234, 239, 80, 64, 40, 102, 84, 166, 173, 142, 183, 193, 94, 230, 23, 141, 252, 243, 157, 35, 237, 118, 118, 42, 74, 1, 54, 87, 226, 144, 53, 58, 204, 32, 19, 74, 57, 167, 120, 21, 185, 51, 252, 176, 109, 2, 92, 125, 240, 132, 20, 197, 113, 129, 104, 179, 18, 64, 47, 115, 96, 209, 210, 76, 191, 39, 127, 230, 135, 242, 56, 42, 214, 109, 188, 170, 192, 204, 9, 204, 190, 58, 162, 143, 115, 247, 60, 155, 37, 146, 119, 159, 64, 247, 242, 239, 189, 181, 85, 25, 145, 123, 81, 123, 205, 83, 33, 144, 45, 196, 64, 114, 13, 18, 247, 116, 14, 202, 246, 213, 177, 225, 152, 217, 119, 24, 39, 253, 158, 222, 242, 242, 175, 77, 241, 126, 29, 93, 45, 170, 185, 71, 131, 214, 114, 43, 181, 150, 252, 39, 6, 87, 37, 134, 229, 17, 8, 15, 186, 181, 205, 161, 20, 235, 0, 12, 137, 197, 184, 41, 11, 222, 237, 139, 70, 19, 213, 30, 122, 10, 226, 173, 98, 29, 245, 52, 215, 124, 12, 134, 182, 57, 22, 177, 59, 226, 249, 248, 41, 180, 183, 47, 165, 116, 170, 152, 20, 74, 194, 122, 200, 136, 75, 176, 189, 240, 211, 88, 98, 205, 34, 105, 216, 138, 137, 72, 56, 215, 175, 140, 70, 137, 91, 54, 133, 221, 38, 226, 239, 139, 212, 80, 177, 248, 110, 195, 61, 196, 255, 7, 156, 229, 136, 198, 72, 3, 234, 106, 16, 83, 14, 210, 94, 51, 205, 43, 23, 224, 60, 41, 139, 192, 59, 25, 111, 190, 82, 39, 54, 189, 75, 126, 229, 83, 220, 32, 148, 43, 104, 248, 214, 206, 224, 215, 16, 60, 193, 15, 56, 193, 32, 170, 160, 23, 190, 102, 110, 19, 17, 72, 35, 17, 208, 211, 97, 113, 200, 24, 54, 117, 191, 45, 89, 163, 74, 198, 191, 150, 95, 253, 192, 22, 129, 130, 32, 152, 172, 103, 119, 229, 128, 56, 107, 92, 200, 44, 214, 191, 125, 210, 215, 82, 117, 251, 113, 109, 109, 226, 6, 169, 109, 74, 23, 249, 245, 34, 66, 19, 101, 185, 162, 211, 82, 34, 142, 17, 229, 51, 118, 89, 199, 214, 28, 129, 55, 42, 45, 223, 195, 53, 145, 14, 230, 108, 57, 10, 38, 30, 54, 47, 103, 228, 177, 43, 124, 215, 126, 179, 126, 224, 136, 52, 213, 200, 239, 248, 56, 200, 140, 211, 100, 66, 168, 7, 73, 198, 24, 116, 195, 168, 244, 221, 29, 96, 70, 60, 223, 74, 211, 190, 250, 31, 253, 102, 252, 5, 79, 214, 195, 57, 178, 97, 227, 185, 105, 107, 5, 36, 58, 5, 55, 206, 148, 62, 127, 7, 185, 106, 245, 3, 39, 244, 34, 213, 127, 5, 102, 234, 34, 21, 55, 212, 6, 181, 98, 25, 92, 178, 172, 22, 221, 208, 146, 54, 119, 64, 138, 248, 54, 134, 7, 72, 247, 6, 228, 125, 93, 153, 23, 141, 207, 95, 56, 117, 215, 95, 159, 159, 214, 117, 97, 43, 109, 88, 50, 163, 148, 70, 44, 108, 208, 165, 89, 202, 104, 76, 241, 196, 12, 40, 102, 154, 234, 158, 197, 135, 31, 129, 203, 135, 181, 145, 20, 117, 153, 231, 212, 228, 118, 193, 211, 167, 59, 198, 170, 28, 74, 11, 164, 211, 1, 189, 68, 202, 163, 110, 158, 216, 123, 31, 16, 30, 31, 111, 81, 108, 235, 56, 98, 114, 76, 29, 142, 234, 159, 214, 18, 38, 226, 183, 37, 36, 15, 56, 53, 141, 161, 85, 198, 76, 246, 223, 82, 137, 2, 27, 186, 111, 208, 68, 146, 181, 205, 85, 101, 70, 19, 33, 38, 254, 177, 231, 88, 176, 43, 130, 244, 94, 228, 81, 193, 13, 224, 8, 45, 35, 185, 9, 103, 112, 133, 124, 107, 172, 66, 48, 64, 33, 84, 14, 127, 69, 54, 46, 68, 14, 225, 255, 48, 107, 32, 75, 160, 60, 67, 158, 149, 12, 243, 130, 168, 250, 146, 60, 29, 121, 117, 186, 93, 171, 26, 187, 23, 130, 200, 105, 169, 14, 241, 206, 210, 146, 59, 79, 197, 56, 14, 119, 202, 166, 82, 77, 90, 96, 193, 7, 176, 83, 166, 12, 5, 99, 4, 173, 44, 162, 241, 216, 251, 218, 158, 2, 222, 159, 93, 5, 189, 82, 143, 147, 50, 220, 207, 150, 229, 93, 47, 39, 242, 159, 236, 141, 31, 209, 237, 21, 156, 8, 199, 201, 62, 55, 18, 132, 140, 65, 177, 159, 152, 137, 179, 4, 196, 88, 135, 212, 251, 156, 138, 108, 108, 84, 178, 243, 153, 151, 175, 177, 23, 163, 44, 180, 29, 98, 159, 125, 91, 169, 25, 131, 30, 65, 139, 56, 16, 177, 161, 230, 244, 121, 38, 207, 45, 64, 0, 235, 250, 149, 220, 128, 161, 118, 12, 148, 229, 107, 33, 108, 158, 197, 103, 236, 220, 167, 93, 108, 227, 34, 17, 54, 31, 131, 135, 182, 166, 130, 136, 244, 128, 130, 64, 45, 59, 203, 121, 207, 228, 46, 75, 96, 55, 66, 87, 173, 145, 207, 106, 111, 97, 224, 103, 86, 128, 36, 37, 105, 165, 77, 69, 13, 29, 220, 163, 123, 49, 209, 38, 212, 238, 25, 4, 232, 186, 232, 133, 3, 163, 79, 139, 249, 111, 69, 0, 187, 128, 212, 60, 242, 147, 148, 223, 17, 73, 194, 244, 125, 146, 191, 38, 15, 247, 52, 4, 91, 229, 37, 22, 64, 135, 77, 181, 241, 149, 80, 196, 124, 21, 200, 117, 76, 105, 121, 30, 188, 3, 65, 161, 205, 178, 242, 67, 111, 175, 58, 9, 95, 46, 201, 105, 23, 224, 249, 98, 100, 205, 255, 23, 50, 131, 30, 216, 87, 102, 59, 91, 156, 114, 45, 237, 187, 117, 192, 231, 51, 65, 183, 127, 231, 90, 69, 131, 6, 141, 83, 217, 17, 41, 150, 182, 89, 2, 191, 56, 69, 42, 120, 196, 10, 177, 255, 154, 238, 104, 210, 58, 33, 13, 163, 136, 178, 244, 61, 163, 206, 79, 81, 212, 50, 23, 56, 28, 182, 165, 29, 84, 29, 173, 150, 194, 201, 221, 239, 145, 151, 60, 119, 233, 183, 171, 240, 201, 10, 91, 26, 12, 55, 126, 52, 113, 9, 105, 150, 111, 58, 76, 222, 35, 54, 5, 36, 51, 229, 13, 222, 167, 248, 130, 166, 6, 108, 78, 44, 228, 219, 155, 216, 122, 66, 163, 52, 100, 111, 104, 166, 127, 253, 123, 15, 179, 63, 102, 161, 23, 86, 81, 41, 241, 164, 196, 71, 122, 216, 18, 22, 196, 39, 126, 223, 86, 220, 81, 90, 103, 74, 116, 226, 16, 125, 173, 210, 46, 194, 102, 224, 246, 149, 225, 35, 1, 248, 108, 64, 20, 74, 48, 89, 109, 173, 212, 114, 175, 87, 97, 217, 241, 107, 253, 67, 82, 32, 14, 1, 219, 60, 10, 73, 19, 183, 87, 110, 95, 252, 101, 56, 34, 67, 24, 180, 179, 55, 32, 247, 187, 98, 99, 235, 73, 77, 243, 29, 29, 93, 242, 60, 26, 51, 27, 102, 109, 98, 251, 98, 76, 235, 39, 89, 1, 108, 46, 238, 115, 33, 59, 45, 46, 4, 56, 141, 65, 192, 26, 110, 192, 216, 245, 71, 57, 65, 144, 246, 236, 191, 64, 159, 245, 245, 14, 36, 66, 6, 98, 18, 148, 99, 141, 82, 64, 51, 168, 215, 201, 82, 150, 68, 84, 237, 2, 185, 49, 39, 122, 245, 239, 219, 60, 142, 16, 78, 165, 59, 145, 226, 38, 19, 228, 26, 159, 176, 90, 32, 1, 163, 43, 127, 125, 232, 29, 223, 231, 232, 176, 78, 57, 34, 219, 177, 64, 17, 186, 201, 72, 51, 195, 59, 140, 226, 123, 219, 243, 10, 190, 99, 40, 236, 187, 46, 119, 180, 164, 197, 70, 134, 167, 185, 241, 187, 218, 249, 220, 62, 226, 47, 97, 251, 132, 155, 218, 32, 253, 182, 144, 98, 22, 209, 215, 16, 95, 246, 4, 58, 32, 214, 187, 1, 103, 224, 60, 163, 97, 233, 219, 15, 97, 6, 176, 177, 176, 174, 149, 111, 229, 17, 47, 10, 167, 193, 114, 2, 14, 131, 72, 117, 147, 68, 11, 217, 168, 7, 84, 89, 255, 130, 70, 149, 123, 55, 161, 5, 27, 3, 133, 147, 51, 133, 120, 139, 225, 134, 107, 121, 199, 129, 150, 117, 73, 6, 190, 67, 1, 127, 99, 203, 123, 26, 10, 131, 160, 255, 55, 205, 8, 109, 202, 165, 46, 13, 144, 141, 238, 4, 15, 30, 91, 78, 167, 56, 207, 181, 100, 89, 226, 166, 91, 6, 87, 42, 161, 18, 173, 46, 134, 84, 47, 192, 51, 192, 86, 143, 106, 143, 68, 251, 155, 48, 132, 148, 113, 151, 135, 133, 68, 135, 223, 141, 62, 40, 237, 173, 32, 255, 82, 138, 211, 98, 135, 17, 208, 76, 110, 10, 169, 109, 29, 94, 79, 56, 157, 83, 52, 181, 250, 138, 162, 188, 220, 51, 204, 209, 222, 189, 226, 142, 162, 134, 34, 176, 136, 149, 252, 25, 172, 22, 56, 41, 175, 96, 189, 47, 60, 197, 122, 228, 229, 174, 7, 187, 59, 62, 90, 104, 81, 171, 136, 40, 100, 33, 61, 107, 104, 93, 125, 99, 111, 143, 164, 107, 234, 102, 20, 82, 79, 151, 211, 159, 79, 36, 159, 15, 137, 116, 236, 128, 31, 195, 155, 61, 48, 44, 168, 114, 179, 176, 19, 154, 247, 138, 187, 48, 108, 202, 239, 31, 5, 253, 101, 72, 112, 65, 48, 8, 136, 4, 140, 125, 19, 45, 76, 151, 233, 69, 65, 39, 222, 33, 169, 153, 248, 69, 22, 63, 82, 47, 141, 89, 69, 102, 183, 148, 108, 230, 206, 254, 173, 111, 126, 205, 73, 85, 110, 8, 195, 112, 225, 241, 117, 201, 155, 66, 182, 43, 95, 192, 172, 85, 95, 200, 55, 150, 254, 183, 79, 51, 140, 194, 243, 218, 6, 207, 43, 112, 155, 165, 185, 81, 231, 61, 156, 78, 134, 159, 39, 52, 3, 54, 202, 111, 201, 137, 237, 153, 86, 65, 220, 47, 171, 44, 200, 196, 150, 157, 71, 245, 230, 122, 68, 43, 159, 42, 220, 239, 39, 59, 81, 215, 190, 128, 130, 45, 90, 180, 95, 118, 120, 37, 13, 88, 3, 66, 233, 214, 12, 132, 171, 162, 38, 115, 151, 111, 181, 74, 10, 105, 88, 147, 18, 179, 28, 209, 232, 145, 185, 92, 144, 230, 74, 12, 70, 230, 10, 109, 202, 47, 127, 142, 241, 226, 160, 99, 236, 6, 133, 69, 212, 154, 166, 91, 50, 29, 34, 28, 146, 191, 43, 169, 86, 236, 44, 39, 96, 174, 26, 12, 210, 205, 182, 94, 148, 21, 71, 7, 55, 243, 169, 236, 251, 148, 255, 130, 169, 82, 153, 21, 140, 25, 11, 83, 255, 108, 240, 128, 13, 36, 35, 182, 182, 242, 102, 57, 202, 171, 124, 196, 136, 92, 214, 60, 128, 224, 239, 59, 200, 208, 243, 143, 95, 97, 220, 171, 167, 40, 18, 63, 70, 152, 3, 129, 146, 154, 72, 146, 176, 144, 56, 0, 216, 206, 217, 145, 170, 82, 110, 208, 56, 155, 158, 133, 32, 72, 127, 55, 98, 223, 55, 57, 226, 184, 221, 143, 62, 205, 153, 184, 72, 233, 147, 245, 235, 115, 24, 146, 28, 29, 191, 188, 195, 216, 0, 79, 123, 176, 54, 74, 228, 161, 151, 255, 57, 132, 208, 222, 172, 239, 205, 243, 127, 50, 141, 9, 28, 72, 123, 85, 122, 138, 248, 107, 55, 73, 183, 2, 189, 140, 161, 129, 16, 183, 182, 207, 76, 105, 61, 159, 207, 220, 140, 223, 15, 72, 164, 232, 55, 246, 173, 204, 217, 67, 72, 116, 35, 22, 247, 217, 8, 97, 20, 37, 53, 199, 137, 14, 183, 78, 33, 179, 245, 104, 161, 143, 174, 147, 54, 58, 153, 221, 189, 50, 27, 25, 252, 142, 76, 18, 135, 116, 106, 21, 78, 71, 130, 246, 120, 35, 81, 60, 230, 156, 147, 127, 104, 209, 94, 21, 168, 51, 226, 215, 97, 176, 83, 122, 225, 117, 106, 49, 117, 171, 146, 184, 154, 203, 205, 153, 155, 84, 153, 95, 190, 76, 32, 248, 17, 43, 20, 48, 114, 56, 234, 90, 101, 59, 154, 217, 35, 15, 234, 180, 156, 178, 214, 117, 220, 215, 178, 12, 37, 247, 61, 212, 186, 28, 176, 157, 38, 125, 116, 68, 128, 229, 191, 65, 183, 125, 81, 130, 183, 131, 93, 244, 175, 42, 119, 240, 179, 174, 78, 1, 125, 226, 231, 160, 105, 14, 32, 19, 86, 170, 9, 226, 40, 148, 47, 70, 27, 37, 13, 56, 247, 89, 179, 103, 45, 105, 94, 115, 97, 185, 56, 13, 24, 135, 47, 150, 57, 56, 72, 31, 70, 31, 48, 75, 206, 216, 69, 184, 201, 237, 221, 113, 183, 214, 140, 167, 68, 69, 187, 226, 254, 182, 189, 142, 132, 1, 220, 204, 174, 248, 29, 216, 137, 194, 87, 139, 131, 224, 76, 73, 194, 165, 71, 63, 157, 208, 134, 167, 116, 14, 87, 226, 46, 76, 101, 73, 42, 99, 13, 76, 238, 140, 44, 48, 118, 246, 56, 74, 153, 113, 185, 44, 218, 130, 32, 218, 143, 177, 174, 194, 189, 188, 12, 248, 30, 201, 111, 41, 179, 117, 45, 168, 224, 254, 10, 90, 226, 81, 242, 96, 40, 61, 225, 156, 143, 248, 187, 220, 74, 237, 159, 165, 63, 246, 200, 229, 75, 103, 203, 208, 187, 92, 84, 138, 17, 36, 207, 108, 67, 138, 71, 82, 252, 122, 231, 150, 11, 109, 169, 15, 75, 46, 149, 100, 227, 59, 95, 15, 40, 246, 192, 66, 68, 36, 248, 149, 74, 54, 28, 207, 167, 237, 62, 186, 11, 49, 155, 38, 20, 117, 62, 18, 201, 9, 166, 33, 74, 232, 160, 202, 178, 77, 25, 107, 220, 210, 141, 40, 172, 79, 179, 55, 185, 100, 199, 98, 115, 207, 191, 151, 67, 174, 160, 99, 155, 76, 33, 141, 242, 154, 100, 87, 243, 208, 43, 160, 42, 126, 22, 177, 199, 150, 245, 244, 247, 186, 241, 222, 110, 37, 208, 33, 61, 184, 15, 72, 19, 103, 39, 215, 155, 210, 224, 71, 180, 11, 172, 63, 25, 19, 134, 108, 93, 35, 239, 49, 159, 42, 238, 79, 117, 86, 16, 121, 66, 93, 45, 199, 23, 187, 127, 36, 85, 208, 230, 132, 244, 81, 51, 107, 51, 72, 30, 81, 50, 238, 169, 204, 134, 134, 45, 5, 148, 235, 84, 132, 46, 226, 36, 102, 68, 51, 213, 138, 238, 72, 88, 110, 117, 31, 222, 121, 76, 130, 195, 232, 169, 252, 218, 169, 141, 41, 51, 63, 78, 122, 236, 42, 150, 182, 48, 40, 80, 44, 60, 40, 167, 42, 133, 21, 222, 175, 242, 236, 255, 53, 141, 153, 55, 223, 175, 247, 251, 102, 105, 54, 31, 47, 236, 176, 106, 191, 35, 249, 141, 170, 115, 8, 43, 117, 98, 108, 207, 43, 62, 247, 140, 37, 234, 0, 243, 31, 52, 42, 240, 226, 94, 128, 246, 249, 56, 37, 226, 92, 53, 36, 72, 144, 138, 181, 113, 54, 159, 116, 37, 26, 174, 73, 158, 179, 22, 173, 173, 76, 118, 38, 13, 255, 67, 194, 86, 90, 199, 243, 65, 3, 10, 210, 37, 198, 22, 139, 92, 210, 95, 166, 208, 227, 48, 255, 255, 78, 64, 150, 209, 86, 77, 140, 215, 139, 1, 112, 216, 14, 126, 41, 52, 81, 240, 166, 110, 246, 236, 70, 106, 95, 165, 112, 102, 214, 225, 248, 58, 57, 164, 225, 7, 167, 15, 66, 26, 243, 153, 184, 43, 67, 226, 136, 56, 251, 245, 85, 141, 129, 183, 244, 109, 227, 163, 251, 110, 135, 174, 205, 49, 67, 131, 32, 134, 231, 225, 203, 78, 160, 182, 78, 140, 213, 115, 82, 156, 130, 102, 106, 184, 123, 84, 13, 160, 185, 162, 47, 227, 197, 165, 83, 122, 68, 128, 131, 150, 125, 112, 150, 138, 8, 148, 69, 176, 172, 114, 73, 127, 86, 70, 212, 0, 157, 63, 184, 197, 6, 82, 157, 55, 154, 33, 170, 56, 181, 70, 206, 169, 92, 122, 27, 184, 159, 242, 206, 225, 177, 242, 162, 148, 117, 158, 172, 72, 76, 186, 59, 60, 8, 161, 188, 101, 31, 233, 37, 240, 69, 226, 40, 247, 105, 19, 211, 15, 90, 90, 102, 180, 61, 128, 50, 212, 248, 144, 135, 178, 49, 175, 106, 28, 225, 242, 203, 247, 6, 165, 202, 108, 36, 8, 155, 177, 240, 70, 84, 16, 250, 91, 0, 19, 54, 91, 196, 133, 73, 197, 2, 211, 143, 201, 123, 80, 142, 191, 119, 98, 18, 245, 100, 73, 93, 243, 201, 35, 54, 231, 238, 241, 5, 155, 127, 0, 254, 121, 146, 12, 127, 122, 195, 64, 99, 255, 95, 186, 185, 45, 7, 180, 159, 154, 64, 100, 182, 150, 27, 189, 63, 7, 52, 11, 159, 184, 38, 230, 77, 198, 241, 22, 194, 222, 20, 202, 53, 236, 141, 149, 64, 148, 242, 76, 79, 56, 46, 188, 118, 201, 56, 142, 141, 123, 75, 119, 211, 5, 54, 61, 145, 48, 231, 130, 81, 12, 80, 29, 248, 136, 242, 226, 149, 57, 110, 1, 184, 147, 187, 208, 86, 103, 131, 34, 214, 35, 146, 124, 252, 177, 76, 110, 156, 99, 118, 76, 153, 73, 89, 49, 37, 178, 14, 250, 151, 170, 254, 220, 59, 171, 75, 84, 164, 65, 121, 87, 122, 212, 27, 65, 94, 57, 60, 250, 249, 156, 80, 109, 238, 235, 92, 201, 39, 192, 86, 162, 30, 106, 104, 114, 182, 9, 183, 97, 95, 231, 16, 40, 87, 196, 43, 69, 29, 136, 219, 68, 42, 215, 122, 197, 109, 134, 88, 61, 55, 177, 209, 174, 109, 110, 217, 95, 201, 16, 133, 149, 147, 244, 155, 105, 39, 28, 105, 247, 251, 139, 219, 63, 176, 161, 71, 101, 63, 98, 218, 96, 33, 127, 192, 31, 69, 166, 61, 74, 143, 142, 88, 225, 134, 65, 235, 214, 145, 245, 107, 56, 238, 119, 101, 160, 247, 38, 236, 87, 124, 117, 93, 199, 107, 151, 217, 41, 30, 69, 61, 60, 228, 120, 38, 61, 202, 4, 196, 60, 107, 93, 230, 40, 247, 224, 159, 40, 66, 236, 243, 135, 202, 146, 209, 197, 56, 33, 126, 2, 150, 230, 154, 253, 35, 136, 132, 121, 244, 123, 201, 99, 100, 34, 233, 123, 210, 194, 205, 243, 251, 205, 118, 7, 211, 100, 55, 210, 42, 228, 153, 167, 251, 150, 182, 182, 23, 158, 81, 162, 157, 253, 5, 44, 163, 226, 150, 71, 84, 7, 94, 209, 240, 30, 86, 146, 182, 130, 210, 61, 179, 233, 42, 26, 151, 54, 91, 14, 155, 19, 142, 113, 38, 169, 23, 73, 254, 124, 16, 15, 81, 67, 86, 230, 56, 77, 86, 225, 157, 240, 176, 138, 0, 179, 194, 157, 235, 199, 57, 160, 108, 54, 67, 205, 162, 28, 140, 215, 230, 18, 47, 130, 185, 162, 65, 150, 58, 177, 194, 149, 41, 64, 20, 205, 76, 57, 68, 53, 128, 73, 52, 99, 239, 127, 206, 232, 68, 50, 48, 176, 235, 249, 65, 38, 39, 152, 147, 79, 184, 174, 106, 120, 67, 79, 81, 97, 56, 196, 246, 63, 10, 133, 104, 2, 134, 231, 66, 48, 202, 47, 125, 78, 73, 181, 93, 140, 185, 53, 223, 108, 194, 31, 97, 227, 137, 251, 150, 126, 82, 77, 115, 123, 6, 224, 250, 235, 144, 171, 159, 213, 113, 246, 46, 151, 87, 13, 119, 210, 206, 215, 189, 246, 27, 228, 25, 69, 4, 248, 63, 128, 9, 67, 54, 72, 217, 224, 134, 171, 137, 235, 100, 152, 160, 155, 85, 223, 5, 138, 178, 94, 25, 223, 12, 180, 199, 151, 120, 38, 4, 121, 192, 69, 126, 105, 16, 7, 22, 26, 187, 124, 6, 203, 17, 11, 231, 196, 67, 234, 38, 86, 246, 52, 16, 112, 156, 178, 231, 251, 108, 147, 239, 177, 185, 211, 79, 1, 136, 247, 203, 252, 140, 213, 247, 230, 147, 90, 110, 53, 207, 160, 70, 250, 109, 6, 44, 231, 3, 185, 25, 85, 200, 137, 200, 34, 92, 52, 151, 250, 44, 132, 111, 80, 243, 47, 234, 216, 229, 22, 231, 52, 195, 171, 132, 133, 33, 38, 232, 245, 226, 186, 146, 58, 40, 73, 163, 32, 82, 203, 121, 68, 128, 95, 107, 20, 11, 76, 242, 165, 111, 52, 144, 156, 147, 63, 100, 94, 226, 149, 56, 39, 32, 58, 34, 153, 138, 224, 4, 95, 129, 192, 92, 247, 139, 190, 177, 0, 50, 83, 231, 45, 59, 59, 13, 24, 117, 66, 5, 16, 145, 172, 84, 230, 74, 90, 94, 208, 92, 219, 54, 218, 134, 162, 251, 162, 99, 78, 191, 188, 71, 249, 101, 232, 123, 16, 123, 177, 248, 47, 254, 56, 11, 39, 62, 155, 143, 137, 174, 99, 73, 186, 53, 169, 27, 241, 40, 29, 166, 22, 41, 90, 31, 62, 28, 12, 230, 143, 15, 68, 119, 28, 126, 94, 55, 161, 151, 211, 129, 162, 206, 109, 158, 173, 85, 119, 18, 54, 107, 213, 68, 29, 99, 62, 188, 115, 105, 95, 2, 135, 83, 183, 67, 210, 255, 160, 128, 83, 141, 177, 169, 129, 223, 157, 30, 0, 68, 103, 164, 42, 103, 35, 179, 193, 54, 200, 250, 197, 233, 163, 86, 231, 73, 242, 217, 81, 48, 62, 230, 40, 173, 144, 84, 7, 199, 88, 61, 166, 38, 187, 80, 60, 136, 44, 242, 62, 224, 98, 169, 210, 116, 9, 233, 199, 224, 1, 82, 201, 179, 116, 145, 37, 75, 101, 153, 31, 55, 129, 184, 193, 179, 55, 174, 186, 144, 178, 179, 118, 148, 33, 84, 250, 164, 85, 137, 168, 250, 89, 21, 237, 153, 127, 29, 86, 131, 72, 118, 175, 255, 160, 160, 78, 202, 88, 140, 237, 161, 195, 157, 85, 15, 234, 31, 168, 47, 189, 111, 47, 243, 160, 208, 218, 128, 2, 3, 82, 214, 40, 174, 190, 92, 201, 109, 235, 231, 112, 248, 229, 169, 93, 38, 100, 47, 43, 17, 55, 160, 208, 158, 64, 96, 147, 178, 156, 194, 179, 197, 166, 34, 156, 165, 124, 160, 189, 213, 20, 144, 108, 45, 99, 202, 209, 121, 163, 23, 138, 219, 56, 251, 153, 134, 129, 8, 97, 220, 30, 228, 217, 13, 225, 75, 209, 193, 32, 9, 16, 195, 85, 27, 193, 112, 192, 21, 21, 37, 46, 24, 252, 43, 212, 110, 152, 164, 90, 125, 111, 218, 35, 67, 171, 237, 146, 80, 22, 243, 160, 105, 146, 234, 181, 180, 71, 41, 146, 102, 250, 55, 46, 175, 92, 103, 43, 197, 59, 67, 118, 181, 189, 30, 185, 114, 71, 82, 16, 177, 167, 54, 106, 253, 174, 16, 51, 123, 54, 138, 200, 171, 89, 180, 183, 101, 207, 34, 112, 59, 3, 70, 172, 251, 177, 30, 232, 31, 10, 182, 220, 90, 116, 128, 201, 9, 43, 165, 0, 240, 72, 63, 137, 152, 20, 249, 146, 189, 148, 197, 160, 236, 224, 27, 222, 150, 0, 116, 38, 147, 169, 95, 0, 248, 196, 168, 222, 48, 72, 33, 67, 78, 73, 34, 186, 173, 18, 62, 181, 23, 165, 248, 62, 244, 123, 26, 241, 223, 76, 3, 186, 242, 41, 210, 210, 237, 65, 61, 55, 58, 94, 241, 147, 119, 27, 74, 112, 249, 193, 147, 157, 20, 4, 128, 142, 54, 213, 217, 60, 47, 9, 109, 162, 197, 147, 81, 76, 167, 7, 175, 223, 128, 217, 229, 40, 157, 182, 157, 171, 75, 204, 114, 152, 7, 164, 198, 239, 88, 148, 178, 217, 122, 187, 151, 105, 66, 51, 164, 92, 78, 168, 118, 143, 117, 64, 252, 91, 214, 145, 212, 138, 131, 5, 225, 150, 184, 184, 6, 138, 153, 120, 154, 194, 161, 33, 99, 204, 177, 237, 41, 32, 157, 36, 164, 246, 212, 120, 128, 48, 82, 218, 165, 206, 206, 105, 150, 204, 206, 124, 214, 233, 139, 53, 2, 36, 13, 21, 44, 79, 163, 163, 164, 28, 181, 134, 74, 128, 3, 53, 190, 125, 115, 155, 58, 63, 198, 87, 227, 191, 172, 49, 217, 71, 178, 118, 68, 19, 105, 142, 170, 115, 32, 135, 82, 203, 62, 132, 241, 200, 132, 101, 220, 251, 229, 204, 138, 31, 106, 33, 253, 157, 217, 71, 132, 66, 165, 203, 227, 243, 231, 22, 249, 159, 131, 27, 33, 156, 16, 58, 211, 229, 167, 144, 173, 111, 0, 195, 144, 177, 116, 78, 103, 158, 13, 248, 193, 107, 210, 62, 245, 116, 118, 24, 127, 187, 225, 100, 120, 91, 10, 102, 4, 200, 220, 200, 230, 238, 51, 89, 166, 63, 147, 149, 104, 47, 62, 171, 171, 59, 23, 143, 241, 99, 30, 84, 138, 19, 223, 133, 9, 221, 142, 76, 204, 164, 189, 170, 45, 75, 123, 133, 106, 196, 83, 57, 213, 182, 237, 52, 36, 222, 231, 127, 66, 120, 60, 81, 164, 109, 202, 239, 232, 180, 138, 153, 2, 255, 32, 247, 187, 79, 240, 104, 129, 192, 138, 249, 160, 8, 121, 178, 118, 13, 166, 27, 59, 29, 190, 147, 216, 204, 246, 184, 122, 194, 184, 58, 155, 133, 170, 194, 86, 22, 250, 122, 210, 127, 128, 157, 175, 131, 19, 188, 121, 118, 158, 93, 19, 110, 23, 209, 26, 19, 197, 2, 55, 221, 229, 155, 177, 20, 89, 154, 211, 185, 72, 213, 202, 136, 238, 42, 251, 228, 224, 191, 158, 39, 162, 231, 2, 128, 188, 49, 36, 104, 158, 163, 95, 82, 92, 255, 213, 162, 147, 211, 189, 44, 190, 220, 166, 0, 102, 10, 162, 99, 13, 55, 222, 95, 172, 195, 4, 37, 44, 100, 97, 112, 244, 251, 65, 67, 114, 88, 179, 150, 13, 176, 190, 86, 221, 113, 80, 243, 68, 221, 148, 98, 24, 179, 251, 40, 158, 171, 97, 223, 158, 131, 74, 182, 28, 39, 38, 254, 13, 3, 35, 107, 161, 178, 99, 22, 87, 101, 77, 208, 8, 58, 138, 113, 13, 60, 26, 3, 89, 77, 215, 108, 69, 221, 115, 207, 213, 216, 93, 32, 85, 210, 87, 199, 212, 79, 2, 63, 85, 70, 221, 136, 237, 79, 99, 59, 92, 57, 58, 51, 217, 141, 103, 17, 219, 153, 125, 209, 188, 57, 180, 23, 146, 104, 85, 229, 209, 155, 46, 99, 89, 244, 120, 122, 124, 218, 56, 44, 25, 61, 129, 130, 228, 55, 241, 74, 32, 187, 145, 149, 209, 10, 230, 245, 20, 16, 94, 26, 128, 15, 207, 132, 34, 33, 15, 61, 105, 98, 250, 221, 91, 113, 81, 64, 11, 131, 255, 75, 225, 190, 50, 95, 170, 69, 209, 215, 178, 89, 223, 190, 175, 55, 159, 176, 99, 12, 21, 221, 201, 211, 132, 234, 58, 251, 204, 61, 85, 153, 173, 81, 11, 8, 239, 170, 130, 41, 53, 165, 199, 70, 111, 30, 79, 181, 39, 105, 105, 104, 159, 52, 124, 253, 38, 191, 242, 73, 99, 65, 106, 128, 191, 172, 116, 182, 53, 71, 143, 85, 113, 195, 169, 227, 233, 232, 50, 99, 69, 244, 53, 148, 212, 1, 204, 147, 138, 157, 119, 246, 39, 240, 9, 65, 207, 52, 81, 43, 68, 81, 155, 65, 168, 204, 178, 108, 223, 249, 218, 180, 228, 83, 136, 79, 230, 12, 138, 229, 11, 69, 2, 97, 77, 99, 174, 37, 180, 12, 83, 141, 139, 41, 108, 40, 93, 160, 232, 30, 232, 159, 126, 223, 93, 90, 45, 88, 245, 158, 141, 88, 241, 91, 120, 252, 230, 140, 200, 195, 248, 58, 98, 152, 93, 232, 127, 89, 95, 106, 173, 142, 242, 24, 115, 66, 215, 211, 201, 240, 36, 140, 223, 207, 165, 241, 180, 34, 11, 159, 155, 250, 94, 136, 164, 214, 95, 154, 30, 106, 97, 114, 217, 176, 92, 18, 198, 157, 255, 78, 82, 208, 161, 185, 45, 209, 137, 91, 97, 227, 8, 185, 59, 203, 189, 25, 50, 230, 220, 135, 167, 13, 227, 236, 142, 141, 8, 16, 173, 250, 39, 18, 9, 75, 191, 174, 189, 226, 50, 125, 158, 188, 26, 109, 99, 57, 200, 231, 153, 197, 250, 247, 224, 57, 218, 53, 34, 172, 142, 30, 196, 98, 117, 187, 203, 134, 45, 87, 207, 6, 40, 205, 151, 192, 214, 214, 139, 206, 36, 121, 162, 25, 28, 206, 229, 18, 154, 136, 107, 204, 65, 235, 122, 185, 132, 50, 165, 227, 161, 234, 187, 27, 231, 212, 27, 113, 54, 208, 235, 204, 46, 47, 85, 217, 212, 6, 5, 222, 164, 126, 75, 51, 39, 94, 145, 145, 159, 255, 29, 240, 196, 214, 43, 242, 169, 34, 138, 132, 111, 181, 251, 51, 100, 115, 156, 246, 20, 179, 242, 151, 174, 252, 146, 226, 109, 180, 228, 254, 82, 143, 136, 145, 239, 4, 163, 200, 121, 67, 9, 11, 192, 42, 211, 156, 37, 16, 169, 120, 181, 223, 204, 86, 98, 174, 15, 46, 85, 75, 156, 43, 98, 90, 90, 158, 8, 135, 228, 42, 231, 56, 201, 199, 80, 141, 242, 25, 34, 169, 190, 232, 245, 47, 73, 17, 195, 41, 168, 247, 75, 124, 125, 201, 38, 85, 69, 132, 255, 113, 31, 89, 209, 45, 8, 142, 77, 148, 109, 204, 246, 229, 34, 22, 213, 34, 255, 106, 3, 42, 161, 193, 77, 135, 204, 225, 218, 48, 3, 254, 213, 42, 199, 174, 123, 143, 86, 217, 94, 137, 239, 137, 99, 200, 251, 208, 39, 101, 154, 44, 7, 26, 125, 245, 76, 122, 201, 11, 190, 108, 134, 231, 225, 43, 8, 158, 154, 158, 37, 191, 27, 72, 150, 249, 39, 230, 240, 58, 76, 61, 59, 127, 14, 172, 38, 117, 115, 231, 148, 243, 194, 3, 213, 191, 219, 84, 101, 30, 210, 88, 191, 188, 113, 92, 66, 253, 166, 28, 146, 23, 51, 85, 65, 217, 233, 190, 248, 126, 238, 242, 244, 113, 189, 105, 192, 143, 189, 236, 37, 222, 28, 212, 33, 101, 138, 157, 203, 134, 87, 129, 74, 122, 251, 3, 202, 170, 239, 162, 148, 182, 203, 183, 157, 130, 115, 213, 90, 4, 96, 25, 196, 143, 234, 135, 14, 0, 103, 8, 178, 46, 205, 167, 74, 183, 57, 201, 148, 226, 211, 177, 145, 85, 144, 34, 66, 144, 101, 192, 93, 86, 205, 82, 35, 231, 189, 37, 56, 59, 121, 40, 108, 211, 252, 202, 71, 209, 174, 29, 171, 63, 75, 226, 253, 6, 106, 207, 195, 184, 134, 148, 172, 59, 167, 223, 138, 168, 181, 51, 85, 107, 239, 40, 201, 2, 236, 162, 34, 243, 200, 227, 21, 180, 114, 11, 33, 191, 87, 55, 119, 41, 126, 220, 86, 243, 165, 101, 67, 208, 29, 191, 16, 138, 156, 196, 200, 178, 9, 39, 202, 174, 182, 241, 166, 116, 90, 30, 185, 68, 199, 239, 177, 201, 163, 61, 195, 82, 180, 170, 34, 101, 201, 79, 150, 243, 34, 99, 197, 177, 224, 181, 203, 222, 205, 86, 60, 138, 175, 0, 84, 209, 163, 39, 233, 91, 106, 117, 23, 59, 6, 126, 120, 206, 73, 106, 245, 115, 17, 5, 19, 225, 61, 149, 216, 108, 251, 192, 196, 6, 155, 69, 58, 162, 106, 211, 167, 116, 191, 222, 187, 101, 51, 250, 76, 247, 187, 195, 40, 120, 236, 32, 86, 221, 8, 65, 202, 233, 74, 242, 25, 197, 188, 240, 41, 148, 107, 49, 198, 214, 142, 122, 186, 28, 193, 27, 2, 115, 140, 146, 126, 45, 52, 216, 53, 167, 60, 225, 147, 67, 50, 115, 24, 193, 230, 170, 141, 49, 253, 13, 251, 92, 207, 24, 157, 212, 223, 21, 158, 171, 90, 173, 218, 152, 1, 4, 74, 128, 245, 51, 167, 73, 61, 253, 20, 120, 152, 240, 195, 200, 169, 207, 207, 199, 179, 74, 115, 32, 172, 199, 119, 59, 66, 53, 124, 115, 104, 159, 26, 161, 110, 77, 238, 114, 225, 75, 25, 152, 24, 80, 84, 223, 99, 224, 99, 190, 88, 73, 235, 76, 117, 179, 228, 193, 205, 227, 61, 202, 175, 239, 231, 221, 176, 198, 240, 214, 66, 131, 123, 161, 255, 16, 184, 163, 207, 149, 32, 65, 160, 120, 224, 255, 106, 36, 131, 192, 71, 15, 168, 214, 81, 48, 126, 178, 172, 35, 174, 78, 144, 7, 159, 13, 254, 74, 177, 112, 85, 14, 86, 82, 92, 14, 214, 148, 241, 177, 165, 0, 15, 51, 162, 181, 60, 117, 39, 242, 239, 82, 227, 236, 216, 139, 193, 55, 113, 19, 133, 63, 76, 83, 4, 237, 100, 118, 87, 150, 163, 127, 176, 226, 140, 181, 2, 249, 73, 81, 192, 4, 196, 165, 197, 196, 81, 214, 193, 144, 239, 115, 210, 135, 229, 193, 131, 224, 18, 157, 211, 54, 189, 124, 73, 166, 180, 210, 23, 228, 78, 169, 106, 217, 242, 68, 86, 50, 138, 249, 136, 123, 99, 129, 144, 18, 33, 67, 117, 168, 140, 231, 225, 179, 70, 4, 209, 82, 40, 231, 4, 232, 248, 137, 234, 15, 194, 115, 71, 101, 219, 154, 36, 119, 29, 150, 31, 28, 6, 33, 251, 86, 176, 240, 192, 141, 246, 134, 158, 194, 124, 33, 173, 241, 9, 102, 21, 236, 162, 98, 17, 119, 128, 86, 87, 148, 250, 148, 219, 51, 133, 29, 252, 50, 108, 1, 22, 80, 80, 60, 104, 238, 72, 11, 179, 15, 206, 48, 189, 24, 108, 101, 203, 17, 117, 32, 196, 147, 250, 234, 49, 147, 132, 250, 105, 149, 170, 104, 192, 184, 115, 46, 248, 209, 182, 38, 60, 144, 231, 158, 96, 229, 121, 234, 12, 209, 120, 186, 192, 245, 124, 237, 19, 113, 117, 110, 163, 30, 26, 63, 49, 98, 8, 253, 24, 82, 51, 117, 64, 45, 250, 6, 74, 199, 184, 39, 122, 187, 75, 119, 101, 5, 62, 243, 82, 61, 239, 20, 65, 88, 194, 141, 218, 217, 127, 176, 235, 26, 88, 175, 75, 154, 86, 82, 111, 226, 147, 149, 229, 182, 17, 32, 95, 6, 116, 75, 7, 87, 108, 154, 94, 194, 250, 97, 106, 50, 125, 249, 29, 243, 218, 74, 218, 36, 136, 231, 41, 43, 199, 226, 225, 83, 248, 39, 115, 187, 233, 231, 28, 68, 168, 221, 37, 197, 152, 95, 128, 61, 109, 87, 87, 28, 45, 245, 191, 132, 168, 143, 181, 227, 13, 35, 22, 40, 179, 55, 230, 103, 145, 87, 61, 50, 104, 245, 173, 34, 19, 57, 22, 215, 86, 144, 0, 194, 139, 14, 235, 236, 119, 79, 186, 44, 185, 152, 190, 154, 91, 31, 132, 45, 68, 187, 97, 253, 122, 113, 4, 144, 92, 102, 7, 172, 235, 28, 36, 159, 27, 139, 245, 165, 97, 44, 80, 233, 55, 72, 221, 162, 147, 198, 151, 201, 174, 60, 186, 119, 78, 95, 141, 66, 99, 35, 32, 20, 61, 67, 71, 69, 166, 237, 165, 45, 194, 143, 44, 242, 96, 14, 54, 204, 121, 108, 115, 132, 172, 151, 47, 6, 217, 127, 202, 228, 166, 154, 94, 174, 198, 5, 62, 145, 112, 149, 165, 188, 55, 47, 13, 62, 75, 234, 208, 167, 136, 37, 209, 203, 188, 85, 72, 228, 173, 50, 51, 212, 69, 194, 112, 112, 26, 135, 27, 82, 219, 210, 93, 168, 193, 1, 167, 153, 116, 207, 12, 101, 157, 98, 8, 211, 170, 92, 200, 152, 33, 129, 81, 167, 2, 189, 245, 210, 6, 159, 83, 29, 211, 128, 148, 221, 28, 103, 45, 133, 245, 212, 39, 204, 94, 16, 92, 116, 251, 163, 18, 159, 160, 49, 38, 95, 212, 191, 235, 215, 248, 88, 202, 45, 45, 93, 244, 187, 79, 134, 75, 104, 83, 189, 31, 172, 21, 64, 217, 93, 123, 45, 161, 68, 50, 194, 147, 23, 19, 1, 37, 169, 199, 207, 140, 31, 184, 104, 81, 143, 200, 198, 14, 205, 209, 252, 228, 253, 247, 242, 132, 29, 43, 149, 212, 68, 29, 154, 221, 71, 150, 77, 169, 83, 200, 251, 152, 46, 214, 206, 245, 199, 53, 166, 12, 112, 216, 52, 135, 33, 2, 188, 75, 63, 110, 140, 42, 155, 136, 164, 175, 113, 54, 151, 16, 80, 8, 140, 220, 48, 252, 143, 70, 151, 255, 150, 253, 105, 192, 249, 80, 92, 142, 21, 76, 55, 223, 85, 224, 171, 61, 14, 81, 66, 24, 141, 70, 171, 223, 250, 200, 140, 132, 239, 151, 235, 4, 118, 218, 235, 51, 210, 0, 61, 54, 136, 131, 52, 98, 157, 243, 68, 99, 139, 159, 61, 208, 155, 124, 90, 189, 236, 37, 222, 28, 212, 33, 101, 138, 157, 203, 134, 87, 129, 74, 122, 251, 3, 202, 170, 239, 162, 148, 182, 203, 183, 157, 130, 115, 213, 90, 4, 96, 25, 196, 143, 234, 135, 14, 0, 103, 8, 178, 46, 205, 167, 74, 183, 57, 201, 148, 226, 211, 177, 145, 85, 144, 34, 66, 144, 101, 192, 93, 86, 205, 82, 35, 231, 189, 37, 56, 59, 121, 40, 108, 211, 252, 202, 71, 209, 174, 29, 171, 63, 75, 226, 253, 6, 106, 207, 195, 184, 134, 148, 172, 59, 167, 223, 138, 168, 181, 51, 85, 107, 239, 40, 201, 2, 236, 162, 34, 243, 200, 227, 21, 180, 114, 11, 33, 191, 87, 55, 119, 41, 126, 220, 86, 243, 171, 6, 126, 106, 15, 240, 10, 62, 186, 1, 93, 195, 223, 205, 122, 188, 96, 141, 116, 119, 239, 8, 101, 111, 226, 65, 153, 103, 109, 240, 238, 201, 133, 154, 97, 7, 164, 128, 8, 239, 201, 39, 153, 121, 233, 62, 104, 57, 194, 223, 107, 234, 83, 63, 117, 127, 15, 171, 177, 140, 226, 182, 166, 233, 207, 204, 175, 222, 11, 7, 78, 222, 243, 139, 61, 73, 157, 159, 146, 86, 223, 99, 13, 51, 57, 95, 141, 178, 3, 125, 3, 177, 21, 158, 43, 16, 64, 3, 35, 54, 6, 88, 72, 81, 133, 184, 179, 125, 243, 26, 144, 145, 51, 119, 72, 121, 218, 50, 190, 106, 233, 75, 190, 137, 222, 240, 124, 228, 52, 0, 69, 73, 216, 67, 65, 204, 4, 167, 173, 64, 105, 5, 164, 30, 17, 59, 1, 65, 159, 250, 254, 99, 159, 75, 170, 11, 40, 181, 130, 112, 214, 190, 10, 140, 254, 137, 249, 211, 65, 109, 159, 135, 11, 182, 194, 192, 112, 83, 73, 19, 73, 184, 58, 192, 204, 129, 60, 250, 180, 116, 136, 60, 214, 240, 155, 212, 2, 38, 34, 4, 89, 116, 98, 128, 174, 158, 113, 229, 236, 55, 95, 168, 88, 173, 231, 151, 32, 39, 127, 88, 222, 77, 27, 211, 1, 214, 34, 55, 204, 205, 186, 252, 201, 160, 99, 52, 38, 173, 187, 57, 126, 151, 1, 18, 5, 127, 67, 254, 222, 143, 200, 1, 241, 176, 10, 223, 156, 96, 61, 230, 53, 42, 22, 105, 153, 97, 225, 204, 98, 5, 67, 32, 247, 191, 186, 100, 32, 110, 216, 180, 108, 225, 54, 219, 68, 174, 71, 168, 205, 118, 38, 248, 144, 7, 160, 125, 112, 19, 125, 178, 165, 150, 239, 71, 163, 236, 204, 201, 40, 124, 125, 196, 17, 109, 238, 45, 177, 46, 107, 98, 48, 28, 191, 65, 86, 13, 133, 7, 60, 139, 16, 8, 235, 38, 185, 253, 187, 183, 207, 11, 233, 134, 246, 230, 241, 121, 110, 253, 126, 89, 29, 126, 177, 62, 51, 39, 95, 119, 123, 255, 188, 37, 244, 140, 187, 210, 55, 198, 175, 198, 218, 0, 8, 84, 103, 128, 73, 198, 0, 4, 235, 15, 193, 194, 239, 6, 56, 197, 251, 119, 135, 113, 166, 133, 243, 237, 192, 104, 180, 171, 13, 116, 144, 40, 192, 49, 119, 150, 69, 149, 23, 54, 234, 118, 49, 169, 242, 232, 80, 103, 30, 169, 52, 98, 49, 140, 255, 186, 65, 192, 224, 90, 86, 248, 173, 27, 183, 162, 183, 208, 145, 104, 210, 220, 136, 26, 227, 167, 161, 69, 73, 218, 119, 46, 126, 10, 224, 207, 60, 107, 47, 128, 194, 66, 127, 18, 104, 161, 209, 64, 0, 18, 45, 212, 82, 204, 204, 50, 98, 224, 32, 169, 240, 5, 180, 202, 189, 22, 201, 86, 250, 239, 212, 197, 56, 6, 45, 5, 24, 188, 98, 15, 75, 224, 227, 173, 61, 233, 116, 148, 98, 51, 165, 138, 170, 62, 94, 228, 187, 142, 57, 214, 181, 10, 6, 178, 122, 138, 242, 181, 54, 229, 80, 48, 48, 167, 54, 25, 245, 79, 63, 64, 72, 191, 44, 146, 70, 79, 109, 90, 32, 91, 141, 67, 251, 66, 37, 21, 155, 42, 3, 97, 61, 40, 106, 169, 225, 180, 5, 158, 116, 32, 148, 214, 27, 227, 40, 215, 227, 104, 91, 181, 203, 86, 76, 91, 0, 222, 98, 74, 178, 24, 1, 163, 217, 120, 207, 112, 153, 10, 231, 149, 147, 15, 90, 238, 106, 196, 130, 148, 98, 26, 208, 71, 47, 144, 72, 19, 23, 208, 43, 75, 38, 161, 225, 203, 133, 147, 249, 225, 233, 245, 225, 37, 222, 77, 227, 65, 12, 60, 155, 177, 76, 243, 93, 35, 168, 70, 180, 23, 148, 195, 239, 135, 63, 179, 193, 153, 73, 99, 230, 83, 220, 232, 190, 113, 86, 24, 130, 182, 79, 80, 250, 67, 144, 140, 128, 228, 110, 174, 255, 4, 37, 242, 168, 11, 2, 0, 184, 10, 140, 16, 71, 5, 82, 10, 253, 85, 168, 36, 76, 89, 222, 22, 115, 173, 206, 44, 252, 127, 242, 131, 111, 129, 79, 185, 20, 102, 38, 193, 74, 120, 182, 211, 9, 108, 225, 0, 250, 103, 67, 231, 218, 20, 11, 250, 33, 77, 157, 222, 239, 116, 253, 58, 232, 191, 196, 232, 100, 206, 56, 202, 68, 121, 33, 186, 22, 255, 114, 243, 66, 197, 25, 122, 223, 62, 11, 101, 92, 75, 36, 20, 165, 177, 66, 171, 215, 102, 109, 180, 38, 140, 26, 174, 159, 227, 113, 202, 106, 221, 58, 229, 111, 8, 248, 144, 140, 178, 225, 43, 151, 226, 211, 211, 49, 123, 98, 50, 50, 121, 68, 91, 154, 31, 106, 95, 52, 200, 208, 147, 73, 167, 95, 254, 81, 178, 41, 66, 7, 116, 143, 156, 147, 193, 60, 83, 116, 21, 105, 68, 133, 25, 39, 211, 80, 39, 0, 237, 159, 165, 230, 232, 7, 198, 140, 184, 38, 12, 210, 38, 149, 8, 36, 154, 108, 28, 100, 25, 144, 85, 86, 197, 68, 54, 175, 49, 167, 183, 4, 111, 174, 169, 125, 79, 201, 234, 129, 250, 49, 95, 233, 170, 26, 88, 76, 245, 178, 253, 34, 160, 61, 140, 30, 87, 105, 114, 35, 165, 10, 178, 35, 192, 237, 220, 249, 59, 18, 237, 162, 206, 250, 211, 218, 47, 74, 159, 162, 33, 208, 234, 96, 63, 104, 121, 36, 187, 162, 155, 7, 247, 173, 223, 10, 144, 21, 191, 60, 129, 109, 191, 65, 116, 54, 228, 29, 237, 174, 65, 145, 21, 240, 44, 63, 236, 88, 184, 28, 67, 55, 123, 9, 152, 72, 108, 108, 237, 194, 6, 42, 88, 221, 80, 109, 224, 123, 209, 53, 159, 7, 0, 49, 66, 54, 99, 36, 105, 97, 3, 7, 73, 159, 72, 142, 146, 141, 164, 150, 134, 74, 89, 192, 208, 96, 8, 3, 127, 118, 154, 48, 34, 209, 255, 145, 208, 178, 246, 209, 134, 55, 193, 124, 32, 34, 151, 212, 120, 155, 94, 137, 142, 201, 99, 196, 42, 162, 94, 109, 129, 3, 69, 73, 0, 91, 252, 83, 61, 226, 164, 137, 162, 17, 2, 83, 154, 202, 241, 189, 236, 182, 84, 162, 184, 79, 179, 52, 233, 176, 53, 151, 228, 80, 153, 220, 158, 133, 134, 160, 220, 171, 149, 170, 164, 64, 181, 27, 19, 249, 32, 77, 110, 194, 11, 18, 110, 79, 57, 198, 172, 56, 54, 217, 86, 88, 122, 150, 76, 94, 117, 149, 234, 147, 237, 22, 191, 87, 107, 204, 108, 95, 178, 38, 3, 158, 84, 85, 245, 208, 78, 59, 4, 1, 159, 0, 172, 90, 118, 165, 24, 228, 176, 56, 254, 90, 34, 4, 134, 245, 119, 34, 35, 210, 56, 140, 137, 216, 234, 218, 78, 202, 207, 205, 46, 116, 90, 200, 190, 160, 123, 213, 246, 177, 232, 114, 52, 141, 44, 223, 183, 194, 145, 57, 155, 69, 96, 68, 41, 176, 128, 233, 84, 209, 146, 5, 119, 144, 46, 204, 49, 231, 47, 249, 202, 62, 255, 213, 195, 148, 42, 216, 124, 122, 89, 131, 78, 158, 213, 218, 29, 32, 122, 56, 80, 233, 104, 42, 55, 189, 107, 194, 238, 245, 219, 88, 183, 209, 49, 211, 215, 169, 193, 248, 3, 217, 53, 165, 201, 20, 8, 208, 254, 23, 152, 88, 94, 8, 60, 214, 18, 234, 252, 251, 0, 95, 130, 207, 248, 26, 224, 84, 177, 80, 194, 83, 132, 147, 21, 166, 77, 40, 42, 220, 172, 151, 164, 190, 173, 177, 139, 255, 12, 10, 19, 62, 94, 92, 174, 4, 36, 9, 173, 249, 58, 100, 243, 221, 42, 221, 88, 19, 23, 252, 179, 226, 75, 43, 25, 8, 250, 174, 14, 39, 230, 247, 87, 97, 215, 51, 228, 46, 222, 103, 151, 200, 137, 73, 223, 202, 205, 127, 72, 132, 3, 195, 156, 97, 166, 22, 194, 236, 46, 57, 47, 49, 249, 90, 153, 15, 47, 198, 219, 110, 8, 203, 43, 140, 232, 191, 49, 44, 103, 30, 39, 168, 70, 136, 180, 23, 245, 82, 207, 240, 107, 65, 66, 74, 96, 178, 136, 191, 161, 92, 42, 225, 100, 210, 52, 229, 252, 189, 69, 110, 255, 244, 15, 21, 209, 140, 80, 203, 140, 85, 205, 8, 135, 86, 176, 166, 216, 91, 189, 196, 79, 80, 246, 106, 41, 248, 185, 195, 46, 179, 168, 109, 71, 121, 153, 143, 111, 63, 22, 69, 52, 37, 2, 155, 145, 104, 85, 43, 47, 69, 60, 65, 22, 19, 198, 104, 215, 56, 12, 184, 98, 37, 32, 199, 106, 71, 115, 176, 75, 122, 248, 39, 177, 189, 244, 72, 96, 135, 214, 77, 209, 140, 68, 180, 102, 233, 127, 212, 59, 4, 181, 231, 62, 225, 240, 62, 18, 179, 44, 59, 135, 47, 197, 182, 6, 100, 162, 56, 159, 43, 35, 209, 35, 197, 203, 143, 58, 139, 166, 13, 80, 9, 242, 49, 45, 99, 115, 238, 190, 236, 47, 250, 96, 28, 6, 119, 197, 178, 112, 171, 50, 41, 143, 171, 212, 168, 8, 51, 212, 90, 171, 75, 47, 156, 103, 80, 28, 172, 228, 49, 227, 215, 213, 62, 111, 153, 20, 112, 179, 11, 16, 60, 207, 161, 86, 116, 116, 250, 81, 74, 232, 151, 34, 165, 85, 139, 202, 161, 208, 179, 141, 201, 224, 108, 168, 30, 54, 32, 34, 4, 243, 35, 18, 47, 174, 240, 115, 229, 17, 185, 144, 180, 30, 239, 68, 235, 182, 77, 76, 207, 102, 165, 1, 200, 145, 125, 139, 253, 239, 40, 83, 255, 171, 78, 120, 109, 92, 120, 76, 120, 205, 116, 211, 161, 17, 76, 109, 126, 28, 241, 63, 183, 39, 177, 224, 192, 198, 137, 110, 225, 202, 64, 6, 239, 237, 121, 13, 35, 19, 205, 39, 43, 230, 203, 77, 184, 99, 145, 240, 37, 114, 134, 117, 17, 54, 9, 95, 193, 88, 65, 126, 39, 146, 126, 62, 114, 55, 187, 222, 121, 145, 149, 211, 121, 6, 17, 107, 175, 89, 122, 34, 44, 116, 218, 126, 187, 71, 191, 16, 228, 98, 23, 87, 77, 81, 13, 14, 38, 157, 141, 169, 233, 29, 98, 152, 8, 234, 96, 91, 77, 120, 220, 211, 46, 121, 180, 111, 168, 40, 242, 38, 236, 168, 111, 10, 85, 94, 133, 45, 74, 250, 28, 253, 107, 199, 6, 218, 55, 207, 103, 119, 97, 160, 250, 176, 135, 252, 21, 176, 224, 188, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 89, 53, 19, 83, 80, 184, 110, 48, 13, 148, 38, 57, 0, 0, 0, 0, 89, 53, 19, 83, 80, 184, 110, 48, 13, 148, 38, 57, 0, 0, 0, 0, 89, 53, 19, 83, 53, 157, 46, 228, 44, 100, 6, 157, 0, 0, 0, 0, 89, 53, 19, 83, 49, 100, 95, 92, 3, 214, 107, 168, 0, 0, 0, 0, 89, 53, 19, 83, 105, 200, 47, 192, 42, 36, 168, 23, 0, 0, 0, 0, 89, 53, 19, 83, 103, 248, 160, 44, 8, 171, 233, 143, 0, 0, 0, 0, 89, 53, 19, 83, 43, 27, 189, 16, 28, 10, 94, 76, 0, 0, 0, 0, 89, 53, 19, 68, 242, 185, 50, 196, 1, 216, 57, 65, 0, 0, 0, 0, 89, 53, 19, 139, 37, 34, 243, 88, 5, 112, 102, 11, 0, 0, 0, 0, 89, 53, 19, 83, 123, 8, 171, 64, 33, 188, 59, 16, 0, 0, 0, 0, 89, 53, 19, 163, 245, 104, 124, 68, 9, 98, 25, 235, 0, 0, 0, 0, 89, 53, 19, 139, 65, 107, 226, 4, 8, 144, 155, 158, 0, 0, 0, 0, 89, 53, 19, 234, 192, 216, 187, 232, 5, 154, 84, 215, 0, 0, 0, 0, 89, 53, 19, 191, 0, 65, 23, 88, 9, 157, 187, 194, 0, 0, 0, 0, 89, 53, 19, 68, 167, 194, 165, 224, 10, 219, 222, 27, 0, 0, 0, 0, 89, 53, 18, 125, 157, 130, 214, 120, 4, 43, 225, 191, 0, 0, 0, 0, 89, 53, 21, 136, 206, 70, 37, 64, 17, 207, 214, 132, 0, 0, 0, 0, 89, 53, 19, 234, 199, 35, 129, 64, 7, 207, 4, 156, 0, 0, 0, 0, 89, 53, 18, 125, 97, 236, 218, 12, 5, 48, 197, 88, 0, 0, 0, 0, 89, 53, 15, 12, 8, 154, 2, 16, 3, 86, 85, 126, 0, 0, 0, 0, 89, 53, 21, 208, 43, 160, 216, 240, 2, 140, 168, 206, 0, 0, 0, 0, 89, 53, 21, 136, 214, 251, 86, 200, 5, 246, 36, 108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 196, 143, 72, 43, 189, 196, 235, 72, 200, 143, 170, 119, 170, 14, 207, 160, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 177, 44, 72, 181, 35, 106, 117, 91, 162, 103, 79, 11, 78, 19, 252, 154, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 184, 42, 92, 84, 222, 230, 10, 98, 4, 230, 99, 133, 197, 27, 254, 186, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 162, 126, 6, 242, 61, 40, 168, 218, 169, 143, 71, 23, 196, 156, 153, 165, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 205, 239, 124, 102, 148, 144, 125, 146, 206, 3, 105, 225, 248, 47, 202, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 95, 181, 12, 13, 236, 84, 197, 170, 108, 219, 112, 173, 238, 156, 144, 75, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 81, 73, 188, 4, 159, 115, 0, 157, 56, 153, 159, 78, 129, 71, 60, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 209, 66, 138, 207, 127, 187, 145, 247, 131, 145, 228, 118, 103, 112, 67, 178, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 243, 190, 107, 187, 182, 254, 134, 98, 69, 119, 21, 167, 187, 240, 107, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 193, 218, 206, 184, 36, 238, 107, 27, 165, 73, 170, 187, 47, 157, 136, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 180, 158, 110, 146, 49, 211, 192, 184, 117, 18, 88, 103, 37, 136, 172, 79, 27, 160, 123, 142, 7, 160, 51, 68, 215, 216, 144, 248, 89, 147, 47, 63, 12, 16, 98, 29, 203, 214, 232, 245, 170, 92, 58, 10, 193, 138, 40, 201, 159, 227, 160, 120, 50, 119, 93, 239, 86, 22, 245, 98, 16, 169, 180, 14, 136, 163, 121, 187, 213, 145, 33, 8, 153, 67, 177, 91, 117, 75, 65, 71, 46, 130, 81, 192]; + let compressed = compress(&block, blocks_swapper()); + let decompressed = decompress(&compressed, blocks_swapper()); + assert_eq!(decompressed.into_vec(), block); +} From 5cf668446164a82b7e9d15bf63b4c6e68fc7e098 Mon Sep 17 00:00:00 2001 From: Marek Kotewicz Date: Fri, 23 Feb 2018 10:29:11 +0100 Subject: [PATCH 2/3] fix traces, removed bloomchain crate, closes #7228, closes #7167 (#7979) --- Cargo.lock | 10 - ethcore/Cargo.toml | 1 - ethcore/src/blooms/bloom_group.rs | 47 -- ethcore/src/blooms/group_position.rs | 42 - ethcore/src/blooms/mod.rs | 23 - ethcore/src/lib.rs | 2 - ethcore/src/trace/config.rs | 7 - ethcore/src/trace/db.rs | 155 +--- ethcore/src/trace/types/filter.rs | 13 +- util/bloomchain/.gitignore | 3 - util/bloomchain/Cargo.toml | 15 - util/bloomchain/README.md | 9 - util/bloomchain/src/chain.rs | 158 ---- util/bloomchain/src/config.rs | 17 - util/bloomchain/src/database.rs | 7 - util/bloomchain/src/filter.rs | 11 - util/bloomchain/src/group/bridge.rs | 31 - util/bloomchain/src/group/chain.rs | 70 -- util/bloomchain/src/group/database.rs | 6 - util/bloomchain/src/group/group.rs | 17 - util/bloomchain/src/group/mod.rs | 16 - util/bloomchain/src/group/position/manager.rs | 28 - util/bloomchain/src/group/position/mod.rs | 5 - .../bloomchain/src/group/position/position.rs | 17 - util/bloomchain/src/lib.rs | 17 - util/bloomchain/src/number.rs | 2 - util/bloomchain/src/position/manager.rs | 142 ---- util/bloomchain/src/position/mod.rs | 5 - util/bloomchain/src/position/position.rs | 8 - util/bloomchain/tests/bloomchain.rs | 170 ---- util/bloomchain/tests/data/blooms.txt | 739 ------------------ util/bloomchain/tests/groupchain.rs | 172 ---- util/bloomchain/tests/util/db.rs | 39 - util/bloomchain/tests/util/each.rs | 24 - util/bloomchain/tests/util/from_hex.rs | 16 - util/bloomchain/tests/util/mod.rs | 9 - util/bloomchain/tests/util/random.rs | 24 - 37 files changed, 43 insertions(+), 2034 deletions(-) delete mode 100644 ethcore/src/blooms/bloom_group.rs delete mode 100644 ethcore/src/blooms/group_position.rs delete mode 100644 ethcore/src/blooms/mod.rs delete mode 100644 util/bloomchain/.gitignore delete mode 100644 util/bloomchain/Cargo.toml delete mode 100644 util/bloomchain/README.md delete mode 100644 util/bloomchain/src/chain.rs delete mode 100644 util/bloomchain/src/config.rs delete mode 100644 util/bloomchain/src/database.rs delete mode 100644 util/bloomchain/src/filter.rs delete mode 100644 util/bloomchain/src/group/bridge.rs delete mode 100644 util/bloomchain/src/group/chain.rs delete mode 100644 util/bloomchain/src/group/database.rs delete mode 100644 util/bloomchain/src/group/group.rs delete mode 100644 util/bloomchain/src/group/mod.rs delete mode 100644 util/bloomchain/src/group/position/manager.rs delete mode 100644 util/bloomchain/src/group/position/mod.rs delete mode 100644 util/bloomchain/src/group/position/position.rs delete mode 100644 util/bloomchain/src/lib.rs delete mode 100644 util/bloomchain/src/number.rs delete mode 100644 util/bloomchain/src/position/manager.rs delete mode 100644 util/bloomchain/src/position/mod.rs delete mode 100644 util/bloomchain/src/position/position.rs delete mode 100644 util/bloomchain/tests/bloomchain.rs delete mode 100644 util/bloomchain/tests/data/blooms.txt delete mode 100644 util/bloomchain/tests/groupchain.rs delete mode 100644 util/bloomchain/tests/util/db.rs delete mode 100644 util/bloomchain/tests/util/each.rs delete mode 100644 util/bloomchain/tests/util/from_hex.rs delete mode 100644 util/bloomchain/tests/util/mod.rs delete mode 100644 util/bloomchain/tests/util/random.rs diff --git a/Cargo.lock b/Cargo.lock index 1a6781d4a9c..5f1aab78b77 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -146,15 +146,6 @@ name = "bitflags" version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -[[package]] -name = "bloomchain" -version = "0.2.0" -dependencies = [ - "ethbloom 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", - "rand 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)", - "rustc-hex 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", -] - [[package]] name = "bn" version = "0.4.4" @@ -453,7 +444,6 @@ name = "ethcore" version = "1.9.0" dependencies = [ "ansi_term 0.10.2 (registry+https://github.com/rust-lang/crates.io-index)", - "bloomchain 0.2.0", "bn 0.4.4 (git+https://github.com/paritytech/bn)", "byteorder 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)", "common-types 0.1.0", diff --git a/ethcore/Cargo.toml b/ethcore/Cargo.toml index c67ce5cd41e..172239d844e 100644 --- a/ethcore/Cargo.toml +++ b/ethcore/Cargo.toml @@ -8,7 +8,6 @@ authors = ["Parity Technologies "] [dependencies] ansi_term = "0.10" -bloomchain = { path = "../util/bloomchain" } bn = { git = "https://github.com/paritytech/bn" } byteorder = "1.0" common-types = { path = "types" } diff --git a/ethcore/src/blooms/bloom_group.rs b/ethcore/src/blooms/bloom_group.rs deleted file mode 100644 index bb4a160b8a0..00000000000 --- a/ethcore/src/blooms/bloom_group.rs +++ /dev/null @@ -1,47 +0,0 @@ -// Copyright 2015-2017 Parity Technologies (UK) Ltd. -// This file is part of Parity. - -// Parity is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity. If not, see . - -use bloomchain::group as bc; -use heapsize::HeapSizeOf; -use ethereum_types::Bloom; - -/// Represents group of X consecutive blooms. -#[derive(Debug, Clone, RlpEncodableWrapper, RlpDecodableWrapper)] -pub struct BloomGroup { - blooms: Vec, -} - -impl From for BloomGroup { - fn from(group: bc::BloomGroup) -> Self { - BloomGroup { - blooms: group.blooms - } - } -} - -impl Into for BloomGroup { - fn into(self) -> bc::BloomGroup { - bc::BloomGroup { - blooms: self.blooms - } - } -} - -impl HeapSizeOf for BloomGroup { - fn heap_size_of_children(&self) -> usize { - self.blooms.heap_size_of_children() - } -} diff --git a/ethcore/src/blooms/group_position.rs b/ethcore/src/blooms/group_position.rs deleted file mode 100644 index b1ea8279261..00000000000 --- a/ethcore/src/blooms/group_position.rs +++ /dev/null @@ -1,42 +0,0 @@ -// Copyright 2015-2017 Parity Technologies (UK) Ltd. -// This file is part of Parity. - -// Parity is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity. If not, see . - -use bloomchain::group as bc; -use heapsize::HeapSizeOf; - -/// Represents `BloomGroup` position in database. -#[derive(PartialEq, Eq, Hash, Clone, Debug)] -pub struct GroupPosition { - /// Bloom level. - pub level: u8, - /// Group index. - pub index: u32, -} - -impl From for GroupPosition { - fn from(p: bc::GroupPosition) -> Self { - GroupPosition { - level: p.level as u8, - index: p.index as u32, - } - } -} - -impl HeapSizeOf for GroupPosition { - fn heap_size_of_children(&self) -> usize { - 0 - } -} diff --git a/ethcore/src/blooms/mod.rs b/ethcore/src/blooms/mod.rs deleted file mode 100644 index a66485782b3..00000000000 --- a/ethcore/src/blooms/mod.rs +++ /dev/null @@ -1,23 +0,0 @@ -// Copyright 2015-2017 Parity Technologies (UK) Ltd. -// This file is part of Parity. - -// Parity is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity. If not, see . - -//! Bridge between bloomchain crate types and ethcore. - -mod bloom_group; -mod group_position; - -pub use self::bloom_group::BloomGroup; -pub use self::group_position::GroupPosition; diff --git a/ethcore/src/lib.rs b/ethcore/src/lib.rs index f4df2aa4acb..3ae7e6e38b4 100644 --- a/ethcore/src/lib.rs +++ b/ethcore/src/lib.rs @@ -54,7 +54,6 @@ //! cargo build --release //! ``` -extern crate bloomchain; extern crate bn; extern crate byteorder; extern crate crossbeam; @@ -157,7 +156,6 @@ pub mod verification; pub mod views; mod cache_manager; -mod blooms; mod pod_account; mod account_db; mod builtin; diff --git a/ethcore/src/trace/config.rs b/ethcore/src/trace/config.rs index dbd8a97affe..59ce099de0b 100644 --- a/ethcore/src/trace/config.rs +++ b/ethcore/src/trace/config.rs @@ -15,7 +15,6 @@ // along with Parity. If not, see . //! Traces config. -use bloomchain::Config as BloomConfig; /// Traces config. #[derive(Debug, PartialEq, Clone)] @@ -23,8 +22,6 @@ pub struct Config { /// Indicates if tracing should be enabled or not. /// If it's None, it will be automatically configured. pub enabled: bool, - /// Traces blooms configuration. - pub blooms: BloomConfig, /// Preferef cache-size. pub pref_cache_size: usize, /// Max cache-size. @@ -35,10 +32,6 @@ impl Default for Config { fn default() -> Self { Config { enabled: false, - blooms: BloomConfig { - levels: 3, - elements_per_index: 16, - }, pref_cache_size: 15 * 1024 * 1024, max_cache_size: 20 * 1024 * 1024, } diff --git a/ethcore/src/trace/db.rs b/ethcore/src/trace/db.rs index 6c5ba945267..cbdb81a9c4b 100644 --- a/ethcore/src/trace/db.rs +++ b/ethcore/src/trace/db.rs @@ -15,19 +15,15 @@ // along with Parity. If not, see . //! Trace database. -use std::ops::Deref; use std::collections::{HashMap, VecDeque}; use std::sync::Arc; -use bloomchain::{Number, Config as BloomConfig}; -use bloomchain::group::{BloomGroupDatabase, BloomGroupChain, GroupPosition, BloomGroup}; use heapsize::HeapSizeOf; -use ethereum_types::{H256, H264}; +use ethereum_types::{H256, H264, Bloom}; use kvdb::{KeyValueDB, DBTransaction}; use parking_lot::RwLock; use header::BlockNumber; use trace::{LocalizedTrace, Config, Filter, Database as TraceDatabase, ImportRequest, DatabaseExtras}; use db::{self, Key, Writable, Readable, CacheUpdatePolicy}; -use blooms; use super::flat::{FlatTrace, FlatBlockTraces, FlatTransactionTraces}; use cache_manager::CacheManager; @@ -37,8 +33,8 @@ const TRACE_DB_VER: &'static [u8] = b"1.0"; enum TraceDBIndex { /// Block traces index. BlockTraces = 0, - /// Trace bloom group index. - BloomGroups = 1, + /// Blooms index. + Blooms = 2, } impl Key for H256 { @@ -52,80 +48,37 @@ impl Key for H256 { } } -/// Wrapper around `blooms::GroupPosition` so it could be -/// uniquely identified in the database. -#[derive(Debug, PartialEq, Eq, Hash, Clone)] -struct TraceGroupPosition(blooms::GroupPosition); - -impl From for TraceGroupPosition { - fn from(position: GroupPosition) -> Self { - TraceGroupPosition(From::from(position)) - } -} - -impl HeapSizeOf for TraceGroupPosition { - fn heap_size_of_children(&self) -> usize { - 0 - } -} - -/// Helper data structure created cause [u8; 6] does not implement Deref to &[u8]. -pub struct TraceGroupKey([u8; 6]); - -impl Deref for TraceGroupKey { - type Target = [u8]; - - fn deref(&self) -> &Self::Target { - &self.0 - } -} +impl Key for H256 { + type Target = H264; -impl Key for TraceGroupPosition { - type Target = TraceGroupKey; - - fn key(&self) -> Self::Target { - let mut result = [0u8; 6]; - result[0] = TraceDBIndex::BloomGroups as u8; - result[1] = self.0.level; - result[2] = self.0.index as u8; - result[3] = (self.0.index >> 8) as u8; - result[4] = (self.0.index >> 16) as u8; - result[5] = (self.0.index >> 24) as u8; - TraceGroupKey(result) + fn key(&self) -> H264 { + let mut result = H264::default(); + result[0] = TraceDBIndex::Blooms as u8; + result[1..33].copy_from_slice(self); + result } } #[derive(Debug, Hash, Eq, PartialEq)] enum CacheId { Trace(H256), - Bloom(TraceGroupPosition), + Bloom(H256), } /// Trace database. pub struct TraceDB where T: DatabaseExtras { // cache traces: RwLock>, - blooms: RwLock>, + blooms: RwLock>, cache_manager: RwLock>, // db tracesdb: Arc, - // config, - bloom_config: BloomConfig, // tracing enabled enabled: bool, // extras extras: Arc, } -impl BloomGroupDatabase for TraceDB where T: DatabaseExtras { - fn blooms_at(&self, position: &GroupPosition) -> Option { - let position = TraceGroupPosition::from(position.clone()); - let result = self.tracesdb.read_with_cache(db::COL_TRACE, &self.blooms, &position).map(Into::into); - self.note_used(CacheId::Bloom(position)); - result - } -} - impl TraceDB where T: DatabaseExtras { /// Creates new instance of `TraceDB`. pub fn new(config: Config, tracesdb: Arc, extras: Arc) -> Self { @@ -137,13 +90,12 @@ impl TraceDB where T: DatabaseExtras { tracesdb.write(batch).expect("failed to update version"); TraceDB { - traces: RwLock::new(HashMap::new()), - blooms: RwLock::new(HashMap::new()), cache_manager: RwLock::new(CacheManager::new(config.pref_cache_size, config.max_cache_size, 10 * 1024)), - tracesdb: tracesdb, - bloom_config: config.blooms, + tracesdb, enabled: config.enabled, - extras: extras, + extras, + traces: RwLock::default(), + blooms: RwLock::default(), } } @@ -188,6 +140,12 @@ impl TraceDB where T: DatabaseExtras { result } + fn bloom(&self, block_hash: &H256) -> Option { + let result = self.tracesdb.read_with_cache(db::COL_TRACE, &self.blooms, block_hash); + self.note_used(CacheId::Bloom(block_hash.clone())); + result + } + /// Returns vector of transaction traces for given block. fn transactions_traces(&self, block_hash: &H256) -> Option> { self.traces(block_hash).map(Into::into) @@ -264,47 +222,16 @@ impl TraceDatabase for TraceDB where T: DatabaseExtras { return; } - // now let's rebuild the blooms - if !request.enacted.is_empty() { - let range_start = request.block_number as Number + 1 - request.enacted.len(); - let range_end = range_start + request.retracted; - let replaced_range = range_start..range_end; - let enacted_blooms = request.enacted - .iter() - // all traces are expected to be found here. That's why `expect` has been used - // instead of `filter_map`. If some traces haven't been found, it meens that - // traces database is corrupted or incomplete. - .map(|block_hash| if block_hash == &request.block_hash { - request.traces.bloom() - } else { - self.traces(block_hash).expect("Traces database is incomplete.").bloom() - }) - .collect(); - - let chain = BloomGroupChain::new(self.bloom_config, self); - let trace_blooms = chain.replace(&replaced_range, enacted_blooms); - let blooms_to_insert = trace_blooms.into_iter() - .map(|p| (From::from(p.0), From::from(p.1))) - .collect::>(); - - let blooms_keys: Vec<_> = blooms_to_insert.keys().cloned().collect(); - let mut blooms = self.blooms.write(); - batch.extend_with_cache(db::COL_TRACE, &mut *blooms, blooms_to_insert, CacheUpdatePolicy::Remove); - // note_used must be called after locking blooms to avoid cache/traces deadlock on garbage collection - for key in blooms_keys { - self.note_used(CacheId::Bloom(key)); - } - } - // insert new block traces into the cache and the database - { - let mut traces = self.traces.write(); - // it's important to use overwrite here, - // cause this value might be queried by hash later - batch.write_with_cache(db::COL_TRACE, &mut *traces, request.block_hash, request.traces, CacheUpdatePolicy::Overwrite); - // note_used must be called after locking traces to avoid cache/traces deadlock on garbage collection - self.note_used(CacheId::Trace(request.block_hash.clone())); - } + let mut traces = self.traces.write(); + let mut blooms = self.blooms.write(); + // it's important to use overwrite here, + // cause this value might be queried by hash later + batch.write_with_cache(db::COL_TRACE, &mut *blooms, request.block_hash, request.traces.bloom(), CacheUpdatePolicy::Overwrite); + batch.write_with_cache(db::COL_TRACE, &mut *traces, request.block_hash, request.traces, CacheUpdatePolicy::Overwrite); + // note_used must be called after locking traces to avoid cache/traces deadlock on garbage collection + self.note_used(CacheId::Trace(request.block_hash)); + self.note_used(CacheId::Bloom(request.block_hash)); } fn trace(&self, block_number: BlockNumber, tx_position: usize, trace_position: Vec) -> Option { @@ -391,15 +318,17 @@ impl TraceDatabase for TraceDB where T: DatabaseExtras { } fn filter(&self, filter: &Filter) -> Vec { - let chain = BloomGroupChain::new(self.bloom_config, self); - let numbers = chain.filter(filter); - numbers.into_iter() - .flat_map(|n| { - let number = n as BlockNumber; - let hash = self.extras.block_hash(number) - .expect("Expected to find block hash. Extras db is probably corrupted"); - let traces = self.traces(&hash) - .expect("Expected to find a trace. Db is probably corrupted."); + let possibilities = filter.bloom_possibilities(); + // + 1, cause filters are inclusive + (filter.range.start..filter.range.end + 1).into_iter() + .map(|n| n as BlockNumber) + .filter_map(|n| self.extras.block_hash(n).map(|hash| (n, hash))) + .filter(|&(_,ref hash)| { + let bloom = self.bloom(hash).expect("hash exists; qed"); + possibilities.iter().any(|p| bloom.contains_bloom(p)) + }) + .flat_map(|(number, hash)| { + let traces = self.traces(&hash).expect("hash exists; qed"); self.matching_block_traces(filter, traces, hash, number) }) .collect() diff --git a/ethcore/src/trace/types/filter.rs b/ethcore/src/trace/types/filter.rs index 2923ace571c..d70f408d189 100644 --- a/ethcore/src/trace/types/filter.rs +++ b/ethcore/src/trace/types/filter.rs @@ -17,7 +17,6 @@ //! Trace filters type definitions use std::ops::Range; -use bloomchain::{Filter as BloomFilter, Number}; use ethereum_types::{Address, Bloom, BloomInput}; use trace::flat::FlatTrace; use super::trace::{Action, Res}; @@ -88,19 +87,9 @@ pub struct Filter { pub to_address: AddressesFilter, } -impl BloomFilter for Filter { - fn bloom_possibilities(&self) -> Vec { - self.bloom_possibilities() - } - - fn range(&self) -> Range { - self.range.clone() - } -} - impl Filter { /// Returns combinations of each address. - fn bloom_possibilities(&self) -> Vec { + pub fn bloom_possibilities(&self) -> Vec { self.to_address.with_blooms(self.from_address.blooms()) } diff --git a/util/bloomchain/.gitignore b/util/bloomchain/.gitignore deleted file mode 100644 index d4f917d3d50..00000000000 --- a/util/bloomchain/.gitignore +++ /dev/null @@ -1,3 +0,0 @@ -target -Cargo.lock -*.swp diff --git a/util/bloomchain/Cargo.toml b/util/bloomchain/Cargo.toml deleted file mode 100644 index a9bd8432c45..00000000000 --- a/util/bloomchain/Cargo.toml +++ /dev/null @@ -1,15 +0,0 @@ -[package] -description = "Standalone blockchain bloom filter" -homepage = "https://github.com/debris/bloomchain" -name = "bloomchain" -version = "0.2.0" -authors = ["debris "] -license = "MIT" -keywords = ["ethereum", "ethcore", "bloom", "chain", "filter"] - -[dependencies] -ethbloom = "0.4" - -[dev-dependencies] -rustc-hex = "1.0" -rand = "0.4" diff --git a/util/bloomchain/README.md b/util/bloomchain/README.md deleted file mode 100644 index f5a1fafc8c1..00000000000 --- a/util/bloomchain/README.md +++ /dev/null @@ -1,9 +0,0 @@ -# bloomchain -Standalone blockchain bloom filter. - -[![Build Status][travis-image]][travis-url] - -[travis-image]: https://travis-ci.org/paritytech/bloomchain.svg?branch=master -[travis-url]: https://travis-ci.org/paritytech/bloomchain - -[Documentation](http://paritytech.github.io/bloomchain/bloomchain/index.html) diff --git a/util/bloomchain/src/chain.rs b/util/bloomchain/src/chain.rs deleted file mode 100644 index ba7bc21b356..00000000000 --- a/util/bloomchain/src/chain.rs +++ /dev/null @@ -1,158 +0,0 @@ -use std::collections::{HashMap, HashSet}; -use std::ops::Range; -use number::Number; -use position::{Position, Manager as PositionManager}; -use bloom::Bloom; -use filter::Filter; -use config::Config; -use database::BloomDatabase; - -/// Prepares all bloom database operations. -pub struct BloomChain<'a> { - positioner: PositionManager, - db: &'a BloomDatabase, -} - -impl<'a> BloomChain<'a> { - /// Creates new bloom chain. - pub fn new(config: Config, db: &'a BloomDatabase) -> Self { - let positioner = PositionManager::new(config.elements_per_index, config.levels); - - BloomChain { - positioner: positioner, - db: db, - } - } - - /// Internal function which does bloom search recursively. - fn blocks(&self, range: &Range, bloom: &Bloom, level: usize, offset: usize) -> Option> { - let index = self.positioner.position(offset, level); - - match self.db.bloom_at(&index) { - None => return None, - Some(level_bloom) => match level { - // if we are on the lowest level - 0 if level_bloom.contains_bloom(bloom) => return Some(vec![offset]), - // return None if current level doesnt contain given bloom - _ if !level_bloom.contains_bloom(bloom) => return None, - // continue processing && go down - _ => () - } - }; - - let level_size = self.positioner.level_size(level - 1); - let from_position = self.positioner.position(range.start, level - 1); - let to_position = self.positioner.position(range.end, level - 1); - let res: Vec = self.positioner.lower_level_positions(&index).into_iter() - // chose only blooms in range - .filter(|li| li.index >= from_position.index && li.index <= to_position.index) - // map them to offsets - .map(|li| li.index * level_size) - // get all blocks that may contain our bloom - // filter existing ones - .filter_map(|off| self.blocks(range, bloom, level - 1, off)) - // flatten nested structures - .flat_map(|v| v) - .collect(); - Some(res) - } - - /// Inserts the bloom at all filter levels. - pub fn insert(&self, number: Number, bloom: Bloom) -> HashMap { - let mut result: HashMap = HashMap::new(); - - for level in 0..self.positioner.levels() { - let position = self.positioner.position(number, level); - let new_bloom = match self.db.bloom_at(&position) { - Some(mut old_bloom) => { - old_bloom.accrue_bloom(&bloom); - old_bloom - }, - None => bloom.clone(), - }; - - result.insert(position, new_bloom); - } - - result - } - - /// Resets data in range. - /// Inserts new data. - /// Inserted data may exceed reseted range. - pub fn replace(&self, range: &Range, blooms: Vec) -> HashMap { - let mut result: HashMap = HashMap::new(); - - // insert all new blooms at level 0 - for (i, bloom) in blooms.iter().enumerate() { - result.insert(self.positioner.position(range.start + i, 0), bloom.clone()); - } - - // reset the rest of blooms - for reset_number in range.start + blooms.len()..(range.end + 1) { - result.insert(self.positioner.position(reset_number, 0), Bloom::default()); - } - - for level in 1..self.positioner.levels() { - for i in 0..blooms.len() { - - let index = self.positioner.position(range.start + i, level); - let new_bloom = { - // use new blooms before db blooms where necessary - let bloom_at = | index | { result.get(&index).cloned().or_else(|| self.db.bloom_at(&index)) }; - - self.positioner.lower_level_positions(&index) - .into_iter() - // get blooms - // filter existing ones - .filter_map(bloom_at) - // BitOr all of them - .fold(Bloom::default(), |mut acc, bloom| { - acc.accrue_bloom(&bloom); - acc - }) - }; - - result.insert(index, new_bloom); - } - } - - result - } - - /// Returns all numbers with given bloom. - pub fn with_bloom(&self, range: &Range, bloom: &Bloom) -> Vec { - let mut result = vec![]; - // lets start from highest level - let max_level = self.positioner.max_level(); - let level_size = self.positioner.level_size(max_level); - let from_position = self.positioner.position(range.start, max_level); - let to_position = self.positioner.position(range.end, max_level); - - for index in from_position.index..to_position.index + 1 { - // offset will be used to calculate where we are right now - let offset = level_size * index; - - // go doooown! - if let Some(blocks) = self.blocks(range, bloom, max_level, offset) { - result.extend(blocks); - } - } - - result - } - - /// Filter the chain returing all numbers matching the filter. - pub fn filter(&self, filter: &Filter) -> Vec { - let range = filter.range(); - let mut blocks = filter.bloom_possibilities() - .into_iter() - .flat_map(|ref bloom| self.with_bloom(&range, bloom)) - .collect::>() - .into_iter() - .collect::>(); - - blocks.sort(); - blocks - } -} diff --git a/util/bloomchain/src/config.rs b/util/bloomchain/src/config.rs deleted file mode 100644 index 3e729922a17..00000000000 --- a/util/bloomchain/src/config.rs +++ /dev/null @@ -1,17 +0,0 @@ -/// `BloomChain` configuration. -#[derive(Debug, PartialEq, Clone, Copy)] -pub struct Config { - /// Number of levels. - pub levels: usize, - /// Number of elements in a single index. - pub elements_per_index: usize, -} - -impl Default for Config { - fn default() -> Self { - Config { - levels: 3, - elements_per_index: 16, - } - } -} diff --git a/util/bloomchain/src/database.rs b/util/bloomchain/src/database.rs deleted file mode 100644 index 9aba41e7c64..00000000000 --- a/util/bloomchain/src/database.rs +++ /dev/null @@ -1,7 +0,0 @@ -use position::Position; -use bloom::Bloom; - -/// Readonly `Bloom` database. -pub trait BloomDatabase { - fn bloom_at(&self, position: &Position) -> Option; -} diff --git a/util/bloomchain/src/filter.rs b/util/bloomchain/src/filter.rs deleted file mode 100644 index 06d657ba442..00000000000 --- a/util/bloomchain/src/filter.rs +++ /dev/null @@ -1,11 +0,0 @@ -use std::ops::Range; -use bloom::Bloom; -use number::Number; - -/// Should be used to filter blocks from `BloomChain`. -pub trait Filter { - /// All bloom possibilities that we are searching for. - fn bloom_possibilities(&self) -> Vec; - /// Range of search. - fn range(&self) -> Range; -} diff --git a/util/bloomchain/src/group/bridge.rs b/util/bloomchain/src/group/bridge.rs deleted file mode 100644 index b01650157c6..00000000000 --- a/util/bloomchain/src/group/bridge.rs +++ /dev/null @@ -1,31 +0,0 @@ -use bloom::Bloom; -use config::Config; -use database::BloomDatabase; -use position::Position; -use group::position::Manager as PositionManager; -use super::BloomGroupDatabase; - -/// Bridge between `BloomDatabase` and `BloomGroupDatabase`. -pub struct GroupDatabaseBridge<'a> { - positioner: PositionManager, - db: &'a BloomGroupDatabase, -} - -impl<'a> GroupDatabaseBridge<'a> { - pub fn new(config: Config, db: &'a BloomGroupDatabase) -> Self { - let positioner = PositionManager::new(config.elements_per_index); - - GroupDatabaseBridge { - positioner: positioner, - db: db, - } - } -} - -impl<'a> BloomDatabase for GroupDatabaseBridge<'a> { - fn bloom_at(&self, position: &Position) -> Option { - let position = self.positioner.position(position); - self.db.blooms_at(&position.group) - .and_then(|group| group.blooms.into_iter().nth(position.number)) - } -} diff --git a/util/bloomchain/src/group/chain.rs b/util/bloomchain/src/group/chain.rs deleted file mode 100644 index cfd7796f4d0..00000000000 --- a/util/bloomchain/src/group/chain.rs +++ /dev/null @@ -1,70 +0,0 @@ -use std::collections::HashMap; -use std::ops::Range; -use bloom::Bloom; -use chain::BloomChain; -use config::Config; -use number::Number; -use filter::Filter; -use position::Position as BloomPosition; -use super::{GroupDatabaseBridge, BloomGroupDatabase, BloomGroup, GroupPosition}; -use super::position::Manager as PositionManager; - -/// Performs all bloom database operations using `BloomGroup`s. -pub struct BloomGroupChain<'a> { - config: Config, - db: &'a BloomGroupDatabase, - bridge: GroupDatabaseBridge<'a>, -} - -impl<'a> BloomGroupChain<'a> { - pub fn new(config: Config, db: &'a BloomGroupDatabase) -> Self { - let bridge = GroupDatabaseBridge::new(config, db); - - BloomGroupChain { - config: config, - db: db, - bridge: bridge, - } - } - - fn group_blooms(&self, blooms: HashMap) -> HashMap { - let positioner = PositionManager::new(self.config.elements_per_index); - blooms.into_iter() - .fold(HashMap::new(), | mut acc, (position, bloom) | { - { - let position = positioner.position(&position); - let group = acc - .entry(position.group.clone()) - .or_insert_with(|| self.db - .blooms_at(&position.group) - .unwrap_or_else(|| BloomGroup::new(self.config.elements_per_index)) - ); - assert_eq!(self.config.elements_per_index, group.blooms.len()); - group.blooms[position.number] = bloom; - } - acc - }) - } - - pub fn insert(&self, number: Number, bloom: Bloom) -> HashMap { - let bloom_chain = BloomChain::new(self.config, &self.bridge); - let modified_blooms = bloom_chain.insert(number, bloom); - self.group_blooms(modified_blooms) - } - - pub fn replace(&self, range: &Range, blooms: Vec) -> HashMap { - let bloom_chain = BloomChain::new(self.config, &self.bridge); - let modified_blooms = bloom_chain.replace(range, blooms); - self.group_blooms(modified_blooms) - } - - pub fn with_bloom(&self, range: &Range, bloom: &Bloom) -> Vec { - let bloom_chain = BloomChain::new(self.config, &self.bridge); - bloom_chain.with_bloom(range, bloom) - } - - pub fn filter(&self, filter: &Filter) -> Vec { - let bloom_chain = BloomChain::new(self.config, &self.bridge); - bloom_chain.filter(filter) - } -} diff --git a/util/bloomchain/src/group/database.rs b/util/bloomchain/src/group/database.rs deleted file mode 100644 index 494184f3ebc..00000000000 --- a/util/bloomchain/src/group/database.rs +++ /dev/null @@ -1,6 +0,0 @@ -use group::{GroupPosition, BloomGroup}; - -/// Readonly `BloomGroup` database. -pub trait BloomGroupDatabase { - fn blooms_at(&self, position: &GroupPosition) -> Option; -} diff --git a/util/bloomchain/src/group/group.rs b/util/bloomchain/src/group/group.rs deleted file mode 100644 index 16dbea65e3d..00000000000 --- a/util/bloomchain/src/group/group.rs +++ /dev/null @@ -1,17 +0,0 @@ -use bloom::Bloom; - -/// Group of blooms that are in the same index. -#[derive(Clone)] -pub struct BloomGroup { - pub blooms: Vec, -} - -impl BloomGroup { - pub fn new(size: usize) -> Self { - let blooms = (0..size).into_iter().map(|_| Bloom::default()).collect(); - - BloomGroup { - blooms: blooms - } - } -} diff --git a/util/bloomchain/src/group/mod.rs b/util/bloomchain/src/group/mod.rs deleted file mode 100644 index b6cabf628fc..00000000000 --- a/util/bloomchain/src/group/mod.rs +++ /dev/null @@ -1,16 +0,0 @@ -//! Bloom grouping. -//! -//! Optimization gathering together blooms that are in the same index and are likely to be retrived together. - -mod bridge; -mod chain; -mod database; -mod group; -mod position; - -pub use self::bridge::GroupDatabaseBridge; -pub use self::chain::BloomGroupChain; - -pub use self::database::BloomGroupDatabase; -pub use self::group::BloomGroup; -pub use self::position::GroupPosition; diff --git a/util/bloomchain/src/group/position/manager.rs b/util/bloomchain/src/group/position/manager.rs deleted file mode 100644 index 611a5bb784c..00000000000 --- a/util/bloomchain/src/group/position/manager.rs +++ /dev/null @@ -1,28 +0,0 @@ -use super::{Position, GroupPosition}; -use position::Position as BloomPosition; - -pub struct Manager { - index_size: usize -} - -impl Manager { - pub fn new(index_size: usize) -> Self { - Manager { - index_size: index_size - } - } - - pub fn group_position(&self, pos: &BloomPosition) -> GroupPosition { - GroupPosition { - level: pos.level, - index: pos.index / self.index_size, - } - } - - pub fn position(&self, pos: &BloomPosition) -> Position { - Position { - group: self.group_position(pos), - number: pos.index % self.index_size, - } - } -} diff --git a/util/bloomchain/src/group/position/mod.rs b/util/bloomchain/src/group/position/mod.rs deleted file mode 100644 index fc95de4dd05..00000000000 --- a/util/bloomchain/src/group/position/mod.rs +++ /dev/null @@ -1,5 +0,0 @@ -mod position; -mod manager; - -pub use self::position::{Position, GroupPosition}; -pub use self::manager::Manager; diff --git a/util/bloomchain/src/group/position/position.rs b/util/bloomchain/src/group/position/position.rs deleted file mode 100644 index 88f26d69aba..00000000000 --- a/util/bloomchain/src/group/position/position.rs +++ /dev/null @@ -1,17 +0,0 @@ -/// Uniquely identifies bloom group position. -#[derive(Debug, PartialEq, Eq, Hash, Clone)] -pub struct GroupPosition { - /// Bloom level. - pub level: usize, - /// Index of the group. - pub index: usize, -} - -/// Uniquely identifies bloom position including the position in the group. -#[derive(Debug, PartialEq, Eq, Hash, Clone)] -pub struct Position { - /// Group position. - pub group: GroupPosition, - /// Number in group. - pub number: usize, -} diff --git a/util/bloomchain/src/lib.rs b/util/bloomchain/src/lib.rs deleted file mode 100644 index 997ae083912..00000000000 --- a/util/bloomchain/src/lib.rs +++ /dev/null @@ -1,17 +0,0 @@ -extern crate ethbloom as bloom; - -mod chain; -mod config; -mod database; -pub mod group; -mod number; -mod position; -mod filter; - -pub use bloom::{Bloom, BloomRef, Input}; -pub use chain::BloomChain; -pub use config::Config; -pub use database::BloomDatabase; -pub use number::Number; -pub use position::Position; -pub use filter::Filter; diff --git a/util/bloomchain/src/number.rs b/util/bloomchain/src/number.rs deleted file mode 100644 index 3ff82f19573..00000000000 --- a/util/bloomchain/src/number.rs +++ /dev/null @@ -1,2 +0,0 @@ -/// Represents block number. -pub type Number = usize; diff --git a/util/bloomchain/src/position/manager.rs b/util/bloomchain/src/position/manager.rs deleted file mode 100644 index a405878ab52..00000000000 --- a/util/bloomchain/src/position/manager.rs +++ /dev/null @@ -1,142 +0,0 @@ -//! Simplifies working with bloom indexes. - -use super::Position; - -/// Simplifies working with bloom indexes. -pub struct Manager { - index_size: usize, - level_sizes: Vec, -} - -impl Manager { - /// Creates new indexer. - pub fn new(index_size: usize, levels: usize) -> Self { - if levels == 0 { - panic!("Manager requires at least 1 level."); - } - - let mut level_sizes = vec![1]; - level_sizes.extend_from_slice(&(1..).into_iter() - .scan(1, |acc, _| { - *acc = *acc * index_size; - Some(*acc) - }) - .take(levels - 1) - .collect::>()); - - Manager { - index_size: index_size, - level_sizes: level_sizes, - } - } - - /// Unsafely get level size. - pub fn level_size(&self, level: usize) -> usize { - self.level_sizes[level as usize] - } - - /// Converts block number and level to `Position`. - pub fn position(&self, block_number: usize, level: usize) -> Position { - Position { - level: level, - index: block_number / self.level_size(level), - } - } - - /// Return bloom which are dependencies for given index. - /// - /// Bloom indexes are ordered from lowest to highest. - pub fn lower_level_positions(&self, index: &Position) -> Vec { - // this is the lowest level - if index.level == 0 { - return vec![]; - } - - let new_level = index.level - 1; - let offset = self.index_size * index.index; - - (0..self.index_size) - .map(|i| Position { - level: new_level, - index: offset + i - }) - .collect() - } - - /// Return number of levels. - pub fn levels(&self) -> usize { - self.level_sizes.len() - } - - /// Returns max indexer level. - pub fn max_level(&self) -> usize { - self.level_sizes.len() - 1 - } -} - -#[cfg(test)] -mod tests { - use position::Position; - use super::*; - #[test] - fn test_level_size() { - let indexer = Manager::new(16, 3); - assert_eq!(indexer.level_size(0), 1); - assert_eq!(indexer.level_size(1), 16); - assert_eq!(indexer.level_size(2), 256); - } - - #[test] - fn test_position() { - let indexer = Manager::new(16, 3); - - let bi0 = indexer.position(0, 0); - assert_eq!(bi0.level, 0); - assert_eq!(bi0.index, 0); - - let bi1 = indexer.position(1, 0); - assert_eq!(bi1.level, 0); - assert_eq!(bi1.index, 1); - - let bi2 = indexer.position(2, 0); - assert_eq!(bi2.level, 0); - assert_eq!(bi2.index, 2); - - let bi3 = indexer.position(3, 1); - assert_eq!(bi3.level, 1); - assert_eq!(bi3.index, 0); - - let bi4 = indexer.position(15, 1); - assert_eq!(bi4.level, 1); - assert_eq!(bi4.index, 0); - - let bi5 = indexer.position(16, 1); - assert_eq!(bi5.level, 1); - assert_eq!(bi5.index, 1); - - let bi6 = indexer.position(255, 2); - assert_eq!(bi6.level, 2); - assert_eq!(bi6.index, 0); - - let bi7 = indexer.position(256, 2); - assert_eq!(bi7.level, 2); - assert_eq!(bi7.index, 1); - } - - #[test] - fn test_lower_level_positions() { - let indexer = Manager::new(16, 3); - - let bi = indexer.position(256, 2); - assert_eq!(bi.level, 2); - assert_eq!(bi.index, 1); - - let mut ebis = vec![]; - for i in 16..32 { - ebis.push(Position { level: 1, index: i}); - } - - let bis = indexer.lower_level_positions(&bi); - assert_eq!(ebis, bis); - } -} diff --git a/util/bloomchain/src/position/mod.rs b/util/bloomchain/src/position/mod.rs deleted file mode 100644 index 4fa736a1636..00000000000 --- a/util/bloomchain/src/position/mod.rs +++ /dev/null @@ -1,5 +0,0 @@ -pub mod position; -pub mod manager; - -pub use self::position::Position; -pub use self::manager::Manager; diff --git a/util/bloomchain/src/position/position.rs b/util/bloomchain/src/position/position.rs deleted file mode 100644 index 32845cbcc5d..00000000000 --- a/util/bloomchain/src/position/position.rs +++ /dev/null @@ -1,8 +0,0 @@ -/// Uniquely identifies bloom position. -#[derive(Debug, PartialEq, Eq, Hash)] -pub struct Position { - /// Bloom level. - pub level: usize, - /// Index of the bloom. - pub index: usize, -} diff --git a/util/bloomchain/tests/bloomchain.rs b/util/bloomchain/tests/bloomchain.rs deleted file mode 100644 index 4a77407a7a2..00000000000 --- a/util/bloomchain/tests/bloomchain.rs +++ /dev/null @@ -1,170 +0,0 @@ -extern crate bloomchain; -extern crate rustc_hex; - -mod util; - -use bloomchain::{Bloom, BloomChain, Config}; -use util::{BloomMemoryDatabase, FromHex, for_each_bloom, generate_n_random_blooms}; - -#[test] -fn simple_bloom_search() { - let config = Config::default(); - let mut db = BloomMemoryDatabase::default(); - let bloom = Bloom::from_hex("00000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002020000000000000000000000000000000000000000000008000000001000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"); - - let modified_blooms = { - let chain = BloomChain::new(config, &db); - let block_number = 23; - chain.insert(block_number, bloom.clone()) - }; - - // number of modified blooms should always be equal number of levels - assert_eq!(modified_blooms.len(), config.levels); - db.insert_blooms(modified_blooms); - - let chain = BloomChain::new(config, &db); - assert_eq!(chain.with_bloom(&(0..100), &bloom), vec![23]); - assert_eq!(chain.with_bloom(&(0..22), &bloom), vec![]); - assert_eq!(chain.with_bloom(&(23..23), &bloom), vec![23]); - assert_eq!(chain.with_bloom(&(24..100), &bloom), vec![]); -} - -#[test] -fn partly_matching_bloom_searach() { - let config = Config::default(); - let mut db = BloomMemoryDatabase::default(); - let bloom0 = Bloom::from_hex("10100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"); - let bloom1 = Bloom::from_hex("11000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"); - let bloom2 = Bloom::from_hex("10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"); - - let modified_blooms_0 = { - let chain = BloomChain::new(config, &db); - let block_number = 14; - chain.insert(block_number, bloom0) - }; - - db.insert_blooms(modified_blooms_0); - - let modified_blooms_1 = { - let chain = BloomChain::new(config, &db); - let block_number = 15; - chain.insert(block_number, bloom1) - }; - - db.insert_blooms(modified_blooms_1); - - - let chain = BloomChain::new(config, &db); - assert_eq!(chain.with_bloom(&(0..100), &bloom2), vec![14, 15]); -} - -#[test] -fn bloom_replace() { - let config = Config::default(); - let mut db = BloomMemoryDatabase::default(); - let bloom0 = Bloom::from_hex("10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"); - let bloom1 = Bloom::from_hex("01000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"); - let bloom2 = Bloom::from_hex("00100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"); - let bloom3 = Bloom::from_hex("00010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"); - let bloom4 = Bloom::from_hex("00001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"); - let bloom5 = Bloom::from_hex("00000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"); - - let modified_blooms_0 = { - let chain = BloomChain::new(config, &db); - let block_number = 14; - chain.insert(block_number, bloom0.clone()) - }; - - db.insert_blooms(modified_blooms_0); - - let modified_blooms_1 = { - let chain = BloomChain::new(config, &db); - let block_number = 15; - chain.insert(block_number, bloom1.clone()) - }; - - db.insert_blooms(modified_blooms_1); - - let modified_blooms_2 = { - let chain = BloomChain::new(config, &db); - let block_number = 16; - chain.insert(block_number, bloom2.clone()) - }; - - db.insert_blooms(modified_blooms_2); - - let modified_blooms_3 = { - let chain = BloomChain::new(config, &db); - let block_number = 17; - chain.insert(block_number, bloom3.clone()) - }; - - db.insert_blooms(modified_blooms_3); - - - let reset_modified_blooms = { - let chain = BloomChain::new(config, &db); - chain.replace(&(15..17), vec![bloom4.clone(), bloom5.clone()]) - }; - - db.insert_blooms(reset_modified_blooms); - - let chain = BloomChain::new(config, &db); - assert_eq!(chain.with_bloom(&(0..100), &bloom0), vec![14]); - assert_eq!(chain.with_bloom(&(0..100), &bloom1), vec![]); - assert_eq!(chain.with_bloom(&(0..100), &bloom2), vec![]); - assert_eq!(chain.with_bloom(&(0..100), &bloom3), vec![]); - assert_eq!(chain.with_bloom(&(0..100), &bloom4), vec![15]); - assert_eq!(chain.with_bloom(&(0..100), &bloom5), vec![16]); -} - -#[test] -fn file_test_bloom_search() { - let config = Config::default(); - let mut db = BloomMemoryDatabase::default(); - let blooms_file = include_bytes!("data/blooms.txt"); - - for_each_bloom(blooms_file, | block_number, bloom | { - let modified_blooms = { - let chain = BloomChain::new(config, &db); - chain.insert(block_number, bloom) - }; - - // number of modified blooms should always be equal number of levels - assert_eq!(modified_blooms.len(), config.levels); - db.insert_blooms(modified_blooms); - }); - - for_each_bloom(blooms_file, | block_number, bloom | { - let chain = BloomChain::new(config, &db); - let blocks = chain.with_bloom(&(block_number..block_number), &bloom); - assert_eq!(blocks.len(), 1); - assert_eq!(blocks[0], block_number); - }); -} - -#[test] -fn random_bloom_replacement() { - let insertions = 10_000; - - let config = Config::default(); - let mut db = BloomMemoryDatabase::default(); - let blooms = generate_n_random_blooms(insertions); - - for (i, bloom) in blooms.iter().enumerate() { - - let modified_blooms = { - let chain = BloomChain::new(config, &db); - chain.replace(&(i..i), vec![bloom.clone()]) - }; - - db.insert_blooms(modified_blooms); - } - - for (i, bloom) in blooms.iter().enumerate() { - let chain = BloomChain::new(config, &db); - let blocks = chain.with_bloom(&(i..i), bloom); - assert_eq!(blocks.len(), 1); - assert_eq!(blocks[0], i); - } -} diff --git a/util/bloomchain/tests/data/blooms.txt b/util/bloomchain/tests/data/blooms.txt deleted file mode 100644 index 204186ec349..00000000000 --- a/util/bloomchain/tests/data/blooms.txt +++ /dev/null @@ -1,739 +0,0 @@ -300054 0x00000000000000000000000000000000000000000000020000001000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000008000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -300059 0x00000020000000000000000000000000000000000000000002000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000400000000000000000000002000 -300221 0x00000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002020000000000000000000000000000000000000000000008000000001000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -301826 0x00000020000000080000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000 -303166 0x00000000000000000000000000000000000000001000080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000808000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000020000000001000000000000000000000000000000000000000000000000000000000000000000 -303345 0x00000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002020000000000000000000000000000000000000000000008000000001000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -303379 0x00000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000800000000000000001000000000000000000000000000000000000000000000000000000000000000000020000000000000000000800000000000000000000000000000080000000006000008000000000000000000080000000000000000000000000000000000000000001000000000000000000000008000000000400000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000800000000000000000000000000000000000002004000000000000 -303388 0x00000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000800000040000000001000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000080000000006001008000000000000008000080000000000000000000000000000000000000000001000000000000000000000008000000000400000000000000000000000000000000000000000000000000000000000000000000000000000040000000000000800000000000000040000000000000000000002004000000000000 -303621 0x00000000000000000000008000000000200000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000040000080000000000000000000000080000000001100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000 -303670 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000400200000000000000 -303674 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000000000000000000000080000000000040000000000000000000000000000000000000000000000000000000000000000000000001000000000000200000000000000 -303683 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000400200000000000000 -303689 0x00000000000000000000000000000000000000004000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000080000000000000000000000000400000000000000000000000000000000000000000000000000000000001000000000040200000000000000 -303692 0x00000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000400000000000000000000000000000000000000000000000000000000001000000000040200000000000000 -303716 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000000000000000000000080000000000040000000000000000000000000000000000000000000000000000000000000000000000001000000000000200000000000000 -303717 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000000000000000000000080000000000040000000000000000000000000000000000000000000000000000000000000000000000001000000000000200000000000000 -303748 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000400200000000000000 -303756 0x00000000000000000000000000000000000000004000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000080000000000000000000000000400000000000000000000000000000000000000000000000000000000001000000000040200000000000000 -303758 0x00000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000400000000000000000000000000000000000000000000000000000000001000000000040200000000000000 -304090 0x00000000000000000000000000000000100000000000000000000000000000000000000000000000000200000000000000800000000000000000000000040000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000003000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000 -304095 0x04000000000000000000000000000000100000000000000000000000000000000000000000000000000200000000000000800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000008000000000000000000000000000000000000000000000000000000000003000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000 -304107 0x00000000000000000000000000000000100000000000000000000000000000000000000000000000000200000000000000800000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008800000000000000000400000000000000000000000000000000000000003000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -304113 0x00000000000000000000000000000000100000000000000000000000000000000000000000000000000200000000000000800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000002000000000000000000000000000000000000000000000000003008000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -304222 0x00000000000000000000000000000000100000000000000000000000000000000000000000000000000200000000000000800000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000800000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000003000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -304245 0x00000000000000000000000000000000100000000000000000000000000000000000000000000000000200000000000000800000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000080000000000000000000000000000000000000000000003000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -304247 0x000000080000000000000000000000800000020000000000000000000000000000000000000000000202000000000000008000004004000000000000000000000000000000000000000000000200000000200000000080000000000000000000000004000000000000000000000000000000001040000000000000000000000000000004000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000c0002000000000000000000000000000000001000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -304312 0x00000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000008000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000000020000000000002000000000000000000040000000000000200000000000000000000000000000000000000000000000000000000000000000000000000 -304319 0x00000000004000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000100000000000020000000000000008000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000008000000080000000000000000000000000008000000000000000000000000000000000008000000000000000000000000000000000000020000000000002000000000000000000040000000000000200000000000000000000000000000000000000000000000000000000000000000000000000 -304367 0x00000000000000000000001000000000000000000400020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000100000000000000000000000000000000000000000000000000000000002000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -304375 0x00000000004000000000001000000000000000000400020000000800000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000040000000000000000000020000000000000000000000000000000000000000000000000008000000000000010000000008000000000000000000000000000000000008000800000000000000000000000100000000000000000000000000000000000000000100000000000000002000000000002000000040010010000000000000000000000000000000000000000000000000000000000000000000000000000000000 -304407 0x00000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000002000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -304431 0x00000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000400000000000000000 -304433 0x00000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000400000000000000000 -304608 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000400000000000000000000040000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000 -304609 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000400000000000000000000040000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000 -304788 0x00000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000400000000000000000 -304794 0x00000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000400000000000000000 -304819 0x00000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000400000000000000000 -304835 0x00000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000002000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -304849 0x00000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000400000000000000000 -304856 0x00000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000002000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -304862 0x00000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000002000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -304872 0x00000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000400000000000000000 -304881 0x00000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000400000000000000000 -304902 0x00000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000400000000000000000 -304996 0x00000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000400000000000000000 -304999 0x00000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000002000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -305006 0x00000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000400000000000000000 -305010 0x00000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000002000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -305425 0x00000000004000000000000000000001000000000000020000000000000000000000000000000000000000000000000000000000008000000080000000000000000000000000000000008000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000010400000048000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000400000000000000000000000000002000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -305445 0x00000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000008000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000080000100000000002000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -305448 0x00000000004000000000000000000000000000000000020000000000000000000004000008000000000000000000000000000000000000000000000000000800000000000000000000008000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000008000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000080000100000000002000000000000000000040000000000000000000000100000000000000000000000000000000000000000000000000000000000000000 -305450 0x00000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000080000000000000000000000000000020000000000000000000000000000000000000000000000002000000000000000000040000000000000000000000000000000000000000000000000000000000004000000000000000000000000000 -305452 0x00000000004000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000002000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000008000000000000000000000000000000000008000000080000000000000000000000000000020000000000000000000000000000000000000000000008002000000000000000000040000000000000000000000000400000000000000000000000000000000004000000000000000000000000000 -305454 0x00000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000001000000040000000000000000000000000000000000000000000000000000000000000000000000000840000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -305457 0x00000000000000000000000000000000000000000000020000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000040000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -305463 0x00000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000040000000200080000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -305464 0x00000000004000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000008000000000000000000000000000000000240000000200480000000000000000000000000000000000000000000000000000002000000000000000000010000000008000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -305468 0x00000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008080000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000008800000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -305488 0x00000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000002000000000000008000000000000010000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -305492 0x00000000004000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000008000000000000000000000000000000008040000000000000000000000000000002000000000001000000000000000000000000000400000000000000010000000008000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000040000000000000000000000000000000000000000000200000000000000000000000000000000000000000000 -305501 0x00000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000008000000000000000000040000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000080000000000000 -305502 0x00000000004000000000000000000000000000000000020000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000008000000000000008000000000000000000040000000001000000000000000000000000000000000000000000000000000000000000000000000000000010000000008000000000000000000000000000000000008000000000000000000080000000000000000000000000000000000010000000000000000000000000000002000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000080000000000000 -305510 0x00000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000044000004000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -305616 0x00000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000008000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000008000000000000000000000000000000000008000000000000000000000000000000000000000000000000002000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -305620 0x0000000000400000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000040000000000000080000000000000000000000000000800000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000000000000000040000000001000000000a000000000000000010000000000000000008000000000000000000000000000000000008000000000000000000000000000000000000000000000000002000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -305622 0x00000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000080000000000000000000000000200000000000000000000008000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000080000000000000 -305624 0x00000000004000000000000000000000000000000000020000000000000000000000000000000000001000000000000000080000000000000000000000000200000000000000000000008000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000008000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000040000000004000000000000000000000000004000000000000000000000000000000000000080000000000000 -305626 0x00000000004000000000100000000000000000000000020000000000000000000000000002000000000000000000000000000000200000000000000000000000000000000000000000008000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000008000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000010000000004000000000002000000000000002000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -305627 0x00000001000000000000000000000200000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000000000040000000002000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -305629 0x00000001004000000000000000000200000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000040000000000000000000008000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000008000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000000000040000000002000000000000000000040000000000000000001040000000000000000000000000000000000000000000000000000000000000000000 -305634 0x00000000005080000000000000000000000000000000020000400000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000008000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000008020000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000040000000000000000000000000000000000000000000000000000000000000000400000000000000000000000 -305826 0x00000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000400000000000000002000000000000000000840000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -305827 0x00000000004000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000100000000000000000000000000040000000000000000000000000000000000000000000000000000000000000040000000000000000000000010000000008000000000000000000000000000000100008000000000000000000000000000000000000000000000000000000000000000000000400000000000000002004000000000000000840000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -305829 0x00000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000008000000000080000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000080000000000000000000000000000000000000002000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -305834 0x00000000004002000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000041000000000000000000000000000000000000008000000000080000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000008000020000000000000000000000000000008000000000000000000000000000000000000000000000080000000000000000000000000000000000000002000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -305839 0x00000000000000000000000000000000000010000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000008000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000040000000000000000000000000080000000000000000000000000000000000000000000000000000000000000 -305841 0x40000000004000000000000000000000000010000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000008000000000000000008000000008000000008000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000040000000000000000000000000080000000000000000000000000000000000000000000008000000000000000 -306889 0x00000020000000080000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000 -307290 0x00000020000000080000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000 -307508 0x00000000000000000000000000000000000000000000020000000000000000000000200000000000400000000000000000000000000000000000000000000000002000000000000000008000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -307509 0x00000000004000000000000000000000000000000000020000000000000000000000200000000000400000000000000000000000000000000000000000000000002000000000000000008000000000000000000000000000000000040000000000040000000000000000000000000000000000000000000000000000000000000000000000000010000000008000010000004000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -307513 0x00000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000004000000000000000000000000010000000000000000000008000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000000000200000000002000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -307519 0x00000000000000000000000000000000000000000000020000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000001000000000000002000000000000000000040000000000000000000000000000000000000000000080000000000000000000000000000000000000000000 -307528 0x00000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000040000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000020000000000000000000000000000000000000000000000000000000000000000100000000002000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -308010 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002020000000000080000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000 -308115 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000000000000000000000080000000000040000000000000000000000000000000000000000000000000000000000000000000000001000000000000200000000000000 -308124 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000400200000000000000 -308127 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000000000000000000000080000000000040000000000000000000000000000000000000000000000000000000000000000000000001000000000000200000000000000 -308157 0x00000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000440000000000000000000000000000000000000020000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000 -308183 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000002020000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000410000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -308190 0x00000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000440000000000000000000000000000000000000020000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000 -308216 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000002020000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000 -308224 0x00000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000440000000000000000000000000000000000000020000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000 -308257 0x00000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000400000000000000000 -308265 0x00000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000400000000000000000 -308267 0x00000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000400000000000000000 -308268 0x00000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000400000000000000000 -308285 0x00000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000400000000000000000 -308599 0x00000000000000000000000000000000000000000000080000000000000800000000000000000010000000000000000000200002000000000000000000000000000000000000000000020000001000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004010010000002000000000000000400000000000000000000000000000000000000000000040000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -309175 0x00000000002000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -309177 0x00000000002000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -309184 0x00000000002000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -309186 0x00000000002000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -309190 0x00000000002000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -309194 0x00000000002000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -309198 0x00000000002000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -309417 0x00000020000000080000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000 -309881 0x00400000000000000000000000000000000000000000004000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000 -309883 0x00400000000000000000000000000000000000000000004000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000 -309892 0x00400000000000000000000000000000000000000000004000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000 -310069 0x00000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000002000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -310114 0x00400000000000000000000000000000000000000000004000000000000000000000000000100000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -310116 0x00400000000000000000000000000000000000000000004000000000000000000000000000100000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -310177 0x00400000000000000000000000000000000000000000004000000000000000000000000000100000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -310533 0x00000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000002000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -310589 0x00000000000008000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -310592 0x00000000000008000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -310599 0x00000000000008000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -310601 0x00000000000008000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -310604 0x00000000000008000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -311317 0x00000000002000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -311758 0x00000020000000080000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000 -311858 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000040000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -311859 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000040000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -311865 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000040000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -311888 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000040000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -312096 0x00400000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000200000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -312124 0x00400000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000200000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -312367 0x00400000000000000000000000000000000400000000004000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -312371 0x00400000000000000000000000000000000400000000004000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -312383 0x00400000000000000000000000000000000400000000004000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -313355 0x00000000000008000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -313368 0x00000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000002000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -313507 0x00000000000000000000000000000000000000000200000000000000000000000000800000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000 -313526 0x00000000000000000000000000000000000000000200000000000000000000000000800000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -313724 0x00000000000008000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -313789 0x00000000000008000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -314190 0x00000020000000080000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000 -314375 0x00000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000040000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000008000000000000000008000400000000000000000000000000 -315698 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000040100000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -315705 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000040100000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -315780 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000040100000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -316726 0x00000000000000000000000000000000000000004000000000020000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000240000000000000000000000000000000400000000000000000000000020000000000000000000000000000000000000000000040000000000000000 -316747 0x00000020000000080000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000 -317179 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000000000000000000000080000000000040000000000000000000000000000000000000000000000000000000000000000000000001000000000000200000000000000 -317522 0x04000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000800000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080000000006001008000000000000008000080000000000000000000000000000000000000000001000000000100000000000008000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000040000000000000008000002004000000000000 -317526 0x00000000000000200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001004000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000 -317536 0x00000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000080000000000020000000000800000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080000000006000008000000000000000000080000000000000000000000000000000000000000001000000000000000000000008000000800400000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000002004000000000000 -317567 0x00000000000000200000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000001004000000000000000004000000020000000000000000000000000000000000000000000000000000000000000000000000000000000001000040000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000 -317588 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000 -317597 0x00000000000000000000000000000000000000004000000000020000000000000000000000000000000000400000000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000040000000000000000 -317606 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000000000000000004000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -317610 0x00000000000000200000000000000000000000000000000000020000000000000000000000000000000000400000000000000000000800000080000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000000000000000001044000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000400000000000000000000000000000000000000000000000000000000000000000000440000000000000000 -317643 0x00000000000000200000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000010000000000000000000000000000004000000000020000000000000000000000000000000000000000000001004000000000000000004000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000040000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000 -317646 0x00000000000000000000000000000000000000000000000000004000000000000000000000000000000000400000000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000010000000000000000000000000000004000000000020000000000000000000000000000000000000000000001000000000000000000004000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000 -317660 0x00000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000800000000000000001000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000080000000006000008000000000000000000080000000000000000000000000000000000000000001000000000000000000000008000000000400002000000000000000000000000000000000000000000000000000008000000000000000000000000000000000800000000000000000000000000000000000002004000000000000 -317957 0x00000000000000000000000000000000000000000200000000000000000000000000800000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000 -318030 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000040100000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -318032 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000040100000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -318033 0x00000000001000000000000000000000000000000000000000000000000000000000000800000008000000000000000000000000000000000000800000000000000001000000000000000000000000000000000000000000000000000000000000000000020000000000000000000800000000000004000000000000000080000000006000000000000000000000000080000000000000000000000000000000000000000005000000000000000000000000000000008400000000000000000000000000000000000000000000000000008000000000000000000000000020000000000000800000000000000000000000000000000000002004000000000000 -318034 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000040100000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -318036 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000040100000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -318063 0x00000000001000000000000000000000000000000000000000000000000000000000000800000008000000000000000000000000000000000000800000040000000001000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000004000000000000000080000000006000000000000000000000000080000000000000000000000000000000000000000005000000000000000000000000000000008400000000000000000000000000000000000000000000000000008000000000000000000000000040000000000000800000000000000000000000000000000000002004000000000000 -318074 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000100000010020000000000000000000200000000000000000080000000020000000000000000000800000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000008000000000000000000000000000000000000000000000000000008000000000000000000000000020000000000000000000000000000000000000000000000000102000000000000000 -318096 0x04000000001000000000000000000000000000000000000000000000000000000000000800000008000000000000000000000000000000000000800000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000080000000006000000000000000000000000080000000000000000000000000000000000000000005000000000100000000000000000000008400000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000800000000000000000000000000000008000002004000000000000 -318137 0x00000020000000080000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000 -318528 0x00000000001000000000000000000000000000000000000000000000000000000000000800000008000000000000000000000000020000000000800000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000080000000006000000000000000000000000080000000000000000000000000000000000000000005000000000000000000000000000000808400000000000000400000000000000000000000000000000000008000000000000000000000000000000000000000800000000000000000000000000000000000002004000000000000 -318627 0x00000000001000000000000000000000000000000000000000000000000000000000000800000008000000000000000000000000000000000000800000000000000001000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000004000000000000000080000000006000000000000000000000000080000000000000000000000000000000000000000005000000000000000000000000000000008400002000000000000000000000000000000000000000000000008000008000000000000000000000000000000000800000000000000000000000000000000000002004000000000000 -318639 0x00000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000800000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000002000000000000000000000010000000000000004800000000000000000000000080000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000080000000000000000000000000 -318650 0x00000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000800000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000010000000000000004000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000 -318653 0x00000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000004000000000000000000000000080000000000000000000000000000000000000000000000000000000200000000000000000000000000800000000000000000000000000000000000000000000000000000000000010000000000000000000000000800000000000000000000000000000000000000000000000000000 -318904 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000 -319523 0x00000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000400000000000000000000000004000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -321346 0x00000020000000080000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000 -321884 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000080000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000040000000000000000000200000000000000000000200000000000000000008000000000000000000000000000000000000000000000000000000000000000000 -321900 0x00000000000000000000000000000000000000000000000000020000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000400000000000000000000000020000000000000000000000000000000000000000000040000000000000000 -322038 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000080000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000040000000000000000000200000000000000000000200000000000000000008000000000000000000000000000000000000000000000000000000000000000000 -322041 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000080000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000040000000000000000000200000000000000000000200000000000000000008000000000000000000000000000000000000000000000000000000000000000000 -322043 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000080000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000040000000000000000000200000000000000000000200000000000000000008000000000000000000000000000000000000000000000000000000000000000000 -322047 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000080000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000040000000000000000000200000000000000000000200000000000000000008000000000000000000000000000000000000000000000000000000000000000000 -322048 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000080000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000040000000000000000000200000000000000000000200000000000000000008000000000000000000000000000000000000000000000000000000000000000000 -322056 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000080000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000040000000000000000000200000000000000000000200000000000000000008000000000000000000000000000000000000000000000000000000000000000000 -322059 0x00000000001000000000000000000000000000000000000000000000000000000000000800000008000000000000000000000000000000000000800000000000000011000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000080000000006000000000000000000000001080000800000000000000000000000000000000000005000000000000000000000000000000008400000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000800000000000000000000000000000000000002004000000000000 -322083 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000080000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000040000000000000000000200000000000000000000200000000000000000008000000000000000000000000000000000000000000000000000000000000000000 -322090 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000080000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000040000000000000000000200000000000000000000200000000000000000008000000000000000000000000000000000000000000000000000000000000000000 -322108 0x04000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000010020000000000000000000200000000000000000080000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000080000000000000000000000000000000000000000004000000000100000000000000000000008000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000800000000000000000000000000000008000100000000000000000 -322121 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000010000000000100000010020000000000000000000200000000000000000080000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000001080000800000000000000000000000000000000000004000000000000000000000000000000808000000000000000400000000000000000000000000000000000008000000000000000000000000000000000000000800000000000000000000000000000000000100000000000000000 -322122 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000000000000000100000010020000000000000000040200000000000000000080000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000080000000000000000000000000000000000000000004000000000000000000000000000000008000000000000000000000000000000000000000000000000000008000000000000000000000000040000000000000800000000000000000000000000000000000100000000000000000 -322128 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000010020000000000000000000200000000000000000088000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000080000000000000000000000000000000000000000004000000000000000000000000000000008000002000000000000000000000000000000000000000000000008000008000000000000000000000000000000000800000000000000000000000000000000000100000000000000000 -322454 0x00000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008010000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000010000000000000000000000000000000000000000000000000000000002000000000000000000040000000000000080000000000000000000000000000000000000000000000000000000000000000000000000 -322509 0x00000000004000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008010000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000008000080000000000000000000000000000008000000000200000000000000000010000000000000000000000000000000000000000000000000000000002000000000200000000040000000000000080000000000000000000000000000000000000000000000000000000000000000000000000 -322550 0x00000000000000000000000000000000000000000200000000000000000000000000800000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -322749 0x00000000001000000000000000000000000000000000000000000000000000000000000800000008000000000000000000000000000400000000800000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000080000000006400000000000000000000000080000000000000000000000000000000000000000005000000000000000000000000000000008400000000080000000000000000000000000000000000000000008000000000000000000000000000000000000000800000000000000000000000000000000000002004000000000000 -322750 0x00000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000080000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000020000000000000040000000000000000000000000000000000000000000002000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -322752 0x00000000004000000000000000000000000000000000020000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000008000000000000000000080000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000008000000000000000000000000000000000008000000000000000000080000020000000000000040000000000000000000000000000000000000000000002000000000000000000040000000000000000000000000000000000000000000000000000000000000000080000000000000000000000 -322758 0x00000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000008000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000080000000000000000000000000000000000000000000000000000000000000002000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -322760 0x00000004004000000000000000000000000000000000020000000000000000000000100000000000000000000000000000000000000000000000000000000000010000000000000000008000000000000000000000000000000000040000000000002000000000000000000000000000000000000000000004000000000000000000000000000010000000008000000000000000000000000000000000008000000000000000000000080000000000000000000000000000000000000000000000000000000000000002000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -322764 0x00000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000001000000000000000000000000000000000000000000000000000000000000001000000000000000002000000000000000000040000000000000000000000000000000000000000000000000000000020000000000000000000000000000000 -322765 0x00000000004000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000008000000000000000000000000000000000040000000000000000000000000400000000000000000000000000000000000000000000000000000000000010000000008000000000000000000000000000000000008000001000000000000000000000000000000000000000000000000000000000000001000000000000000002000000000200000000040000000000000000000000000000000000000000000000000000000020000000000000000000000000000000 -322767 0x00000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000008000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000000000000000000002080000000000000000040000000000000000000000000000000000000000000002000000000000000000000000000000000000000000 -322768 0x00000000004000000000000000000000000000000000120000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000008000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000400000000000000010000000008000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000000000000000000002080004000000000000040000000000000000000000000000000000000000000002000000000000000000000000000000000000000000 -322774 0x00000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009000000000000000008000000000000000000000000000000000000000000000000000000000000000000002001000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -322776 0x00000000004000000000000000000000000000000000020000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000040000000000000000000000000010000000000000000000000000040000000000000000000000000000000010000000008000000000000000000000000000000000009000000000000000008000000000000000000000000000000000000000000000000000000000000000000002001000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -322777 0x00000000004000000000008000100000000000000000020000000000000002000000000000000000000000000000000000000004000000000000000000000000000000000000000000008000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000008000000000000000000000020000000000008000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000040000000000000000000000000000000000000001000000000000000000000000000000000000000000000000 -324029 0x00000020000000080000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000 -324316 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000004000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -324318 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000004000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000 -324322 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000400000000000000000000000000000000000000000000000000000008000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -325807 0x00000020000000080000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000 -326760 0x00000000000000000000000000000000000000000000000000000040000000000000001000000000000000000000000000008000000000000000000000000000000000008000000000000000000000802000002000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000002000000000000008000000000000000 -327103 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000040100000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -327105 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000040100000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -327227 0x00000000000000000000000000000000000000000000000000020000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000400000000000000000000000020000000000000000000000000000000000000000000040000000000000000 -327399 0x00000000000000000000000000000000000000000000000000000000001000000000001000000000000000000000000000008000000000000000000000000000000000000000000000000000000000802000002000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000008000000000000000000000000000000000000000000000000080000000000000000000800008000000000000000 -327544 0x00000000000000000000000000000000000000000000000000000000001000000000001000000000000000000000000000008000000000000000000000000000000000000000000000000000000000802000002000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000008000000000000000000000000000000000000000000000000080000000000000000000800008000000000000000 -327690 0x00000000000000000000000000000100000000000000000000000000000000000000001000000000000000000000000000008000000000000000000000000000000000000000000000000000000000802000002000000000000000000000000001000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000 -328002 0x00000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000040000000000000010000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000400000000000000200000000000 -328269 0x00000020000000080000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000 -328529 0x00000000000000000000000000000000000000000000000000000000001000000000001000000000000000000000000000008000000000000000000000000000000000000000000000000000000000802000002000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000008000000000000000000000000000000000000000000000000080000000000000000000800008000000000000000 -328585 0x20000000000000000000100000000000000000000000000000000000000000000000001000000000000000000000000000008000000000000000000000000000000000000000000000000000000000802000002000000000000000000000000001000000000200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000 -328870 0x00000000000000000000000000000000000000000000000000000000001000000000001000000000000000000000000000008000000000000000000000000000000000000000000000000000000000802000002000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000008000000000000000000000000000000000000000000000000080000000000000000000800008000000000000000 -329480 0x00000000000000000000000000000000000000000000020000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000040000000000000000000200000000000000000000000020000000000000000000000000000000000000000000 -329484 0x00000000004000000000000008000000000000000000020000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000040000000000000000000000000000000000000000800000000000000000000000000000000000000000000010000000008000000000000000000000000000000000008000000000000000000000000040000000000000000000000000000000000000000000000000000000000002000000000000000000040000000000000000000200000000000000000000000020000000000000000000000000000000000000000000 -329485 0x00000000000000000000000000000000001000000000000000000000000000000000001000000000000000000000000000008000000000000000000000000000000000000000000000000000000000802000002000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000002000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000 -329491 0x00000000000000000000000000000000001000000000000000000000000000000000001000000000000000000000000000008000000000000000000000000000000000000000000000000000000000802000002000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000002000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000 -329513 0x00000000000000000000000000000000001000000000000000000000000000000000001000000000000000000000000000008000000000000000000000000000000000000000000000000000000000802000002000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000002000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000 -329519 0x00000000000000000000000000000000001000000000000000000000000000000000001000000000000000000000000000008000000000000000000000000000000000000000000000000000000000802000002000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000002000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000 -329659 0x00000000004000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000008000000000000000000000000000000000040000000000000000020000000000000000000000000000000000000000000000000000000000020000000010000000008000000000000000000000000000000000008000000400000000000000000000000000000000000000000000000000000000000000000000000000000002000000080000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000020000000 -329667 0x00000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000040000000000000100000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000040000000000000000000000000000000000000000000002000000000000000000000000000000000000000000 -329668 0x0000000000400000000000000000000000000000000022000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000004000000000000010000000000000000000000000000000000000000000000000001000000000000000000001000000000c000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000040000000000000000000000000000000000000000000002000000000000000000800000000000000000000000 -329673 0x00000000004000001000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000040000000000000004000000000000000000000000000000000000000000000000004000000000000000000010000000008000000000000000000000000000002000008000000000000000000000000000000000000000000000000000000000000000000000400400000000000002000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -329740 0x00000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000200000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000040000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000400000000000010000000000000 -329749 0x00000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000040000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000080000000000008000000000000000000000000000000000000000002000000000000000000000000000000000000000000002000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -329750 0x00000000004000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000008000000000000000000000000000000000040000000040000000000000000000000010000000000000000000000000000000000000000000000000000010000000008000000000000000000000080000000000008000000000000000000000000000000000000000002000000000000000000000000000000000000000000002000000000000000000040000000000000000000000000000000000000000000400000000000000000000000000000000000000000000 -329824 0x00000000000000000000000000000000000000000000200000000000000000000000001000000000000000000000000000008000000008000000000000000000000000000000000000000000000000802000002000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000 -329964 0x00000000000000000000000000000000000000000000000000000000100000000200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000 -330023 0x00000000000000000000000000000000000000000000000000000000100000000200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -330207 0x00000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000008000000000004000000000000000000000000000000000000000000000802000002000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000002000000000000000000000000000000008000000000000000000000000000000000000000000000000200000000000000000000000008000000000000000 -330473 0x00000000000400000000000000000000000000000000000000000000000000000000001000000000000000000000000000008000000000000001000000000000000000000000000000000000000000802000002000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000 -330511 0x00000000000000000000000000000000000000000000000000020000000000000000000000000000000000002000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000400000000000000000000000020000000000000000000000000000000000000000000040000000000000000 -330579 0x00000000000000000000000000000000000000000000000000000000000000000000005000000000000000000000000000008000000000000000000000000000000000000000000000000000000000802000002000000000000000000000000001000000000000000000000000001000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000 -330683 0x00000000000000000000000000000000000000000000080000000000004000000000001000000000000000000000000000008000000000000000000000000000000000000000000000000000000000802000002000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000000000002000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000 -330919 0x00020000000000000000000000000000000000000000000000000000000000000008001000000000000000000000000000008000000000000000000000000000000000000000000000000000000000802000002000000000000000000000000001000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000 -331009 0x00000000000000000004000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -331542 0x00000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000008000000000000000000000000000100000000000000000000000000000802000002000000000000000000000000001000000000000000000000000000000000000000004000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000 -332007 0x00000000000000000000000000000000000000000000000000000200000080000000001000000000000000000000000000008000000000000000000000000000000000000000000000000000000000802000002000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000008200000000000000000000000000000000000000000000000000000000000000000000000008000000000000000 -333256 0x00000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000008000000000000000000000000000000000000400000000000000000000802000002000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000010000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000 -333294 0x00000020000000080000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000 -333583 0x00000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000008000000000000000000000000000000000000000000000000000000000802000002000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000008000000000000000000200000000000000000000000000000000000000000000000000010008000000000000000 -333640 0x80000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000008000000000000000000000000000000000000000000000000000000000802000002000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000004000000008000000000000000000000000000000000000010000000000000000000000000000000000008000000000000000 -334263 0x00000000000000080000000000000000000000000000000000000000000000000100001000000000000010000000000000008000000000000000000000000000000000000000000000000000000000802000002000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000 -334279 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000040000020000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000000000 -334883 0x00000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000040000000000000010000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000400000000000000000000000000 -334915 0x00000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000004000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000000040000000000000010000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000400000000000000000000000000 -334919 0x00000020000000000000000000000000000000000000000000000000000000000000001000000000000020000000000000008000000000000000000000000000000000000020000000000000020000812000002000000000000000000000000001000000000000000000000000000000400000000000000000000000000000000000000000000000040000800000000010000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000002000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000008000400000000008000000000000000 -335076 0x00000000000000001000000000000000000000000000000000000000000000000000001000000000000000000100000000008000000000000000000000000000000000000000000000000000000000802000002000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000 -335348 0x00000000000000000000000000000000000000000000000000000000000000000000001000000000000000000080000000008000000000000000000000040000000000000000000000000000000000802000002000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000000008000008000000000 -335643 0x00000000000008000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -335649 0x00000000000008000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -335652 0x00000000000008000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -335684 0x00000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000008000000000000000000000000000000000000000000000000000002000802000002000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000008000000000004000000000000000000000000000000000000000000000000000000000000008000000000000000 -336089 0x0000000000000000000000000000000000000000000000000000000000020000000000100000000000000000000000000000800000000000000000000000000000000000000000000000000000000080200000a000000000000000000000000001000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000 -336231 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000080000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000040000000000000000000200000000000000000000200000000000000000008000000000000000000000000000000000000000000000000000000000000000000 -336234 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000080000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000040000000000000000000200000000000000000000200000000000000000008000000000000000000000000000000000000000000000000000000000000000000 -336242 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000080000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000040000000000000000000200000000000000000000200000000000000000008000000000000000000000000000000000000000000000000000000000000000000 -336243 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000080000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000040000000000000000000200000000000000000000200000000000000000008000000000000000000000000000000000000000000000000000000000000000000 -336244 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000080000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000040000000000000000000200000000000000000000200000000000000000008000000000000000000000000000000000000000000000000000000000000000000 -336245 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000080000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000040000000000000000000200000000000000000000200000000000000000008000000000000000000000000000000000000000000000000000000000000000000 -336247 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000080000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000040000000000000000000200000000000000000000200000000000000000008000000000000000000000000000000000000000000000000000000000000000000 -336248 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000080000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000040000000000000000000200000000000000000000200000000000000000008000000000000000000000000000000000000000000000000000000000000000000 -336255 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000080000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000040000000000000000000200000000000000000000200000000000000000008000000000000000000000000000000000000000000000000000000000000000000 -336260 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000080000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000040000000000000000000200000000000000000000200000000000000000008000000000000000000000000000000000000000000000000000000000000000000 -336263 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000080000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000040000000000000000000200000000000000000000200000000000000000008000000000000000000000000000000000000000000000000000000000000000000 -336264 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000080000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000040000000000000000000200000000000000000000200000000000000000008000000000000000000000000000000000000000000000000000000000000000000 -336266 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000080000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000040000000000000000000200000000000000000000200000000000000000008000000000000000000000000000000000000000000000000000000000000000000 -336334 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000080000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000040000000000000000000200000000000000000000200000000000000000008000000000000000000000000000000000000000000000000000000000000000000 -336336 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000080000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000040000000000000000000200000000000000000000200000000000000000008000000000000000000000000000000000000000000000000000000000000000000 -336337 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000080000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000040000000000000000000200000000000000000000200000000000000000008000000000000000000000000000000000000000000000000000000000000000000 -336338 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000080000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000040000000000000000000200000000000000000000200000000000000000008000000000000000000000000000000000000000000000000000000000000000000 -336439 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000080000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000040000000000000000000200000000000000000000200000000000000000008000000000000000000000000000000000000000000000000000000000000000000 -336451 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000080000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000040000000000000000000200000000000000000000200000000000000000008000000000000000000000000000000000000000000000000000000000000000000 -336452 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000080000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000040000000000000000000200000000000000000000200000000000000000008000000000000000000000000000000000000000000000000000000000000000000 -336453 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000080000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000040000000000000000000200000000000000000000200000000000000000008000000000000000000000000000000000000000000000000000000000000000000 -336461 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000080000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000040000000000000000000200000000000000000000200000000000000000008000000000000000000000000000000000000000000000000000000000000000000 -336495 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000080000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000040000000000000000000200000000000000000000200000000000000000008000000000000000000000000000000000000000000000000000000000000000000 -336497 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000080000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000040000000000000000000200000000000000000000200000000000000000008000000000000000000000000000000000000000000000000000000000000000000 -336507 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000080000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000040000000000000000000200000000000000000000200000000000000000008000000000000000000000000000000000000000000000000000000000000000000 -336508 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000080000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000040000000000000000000200000000000000000000200000000000000000008000000000000000000000000000000000000000000000000000000000000000000 -336509 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000080000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000040000000000000000000200000000000000000000200000000000000000008000000000000000000000000000000000000000000000000000000000000000000 -336510 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000080000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000040000000000000000000200000000000000000000200000000000000000008000000000000000000000000000000000000000000000000000000000000000000 -336518 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000080000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000040000000000000000000200000000000000000000200000000000000000008000000000000000000000000000000000000000000000000000000000000000000 -336520 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000080000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000040000000000000000000200000000000000000000200000000000000000008000000000000000000000000000000000000000000000000000000000000000000 -336521 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000080000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000040000000000000000000200000000000000000000200000000000000000008000000000000000000000000000000000000000000000000000000000000000000 -336522 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000080000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000040000000000000000000200000000000000000000200000000000000000008000000000000000000000000000000000000000000000000000000000000000000 -336526 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000080000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000040000000000000000000200000000000000000000200000000000000000008000000000000000000000000000000000000000000000000000000000000000000 -336527 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000080000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000040000000000000000000200000000000000000000200000000000000000008000000000000000000000000000000000000000000000000000000000000000000 -336528 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000080000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000040000000000000000000200000000000000000000200000000000000000008000000000000000000000000000000000000000000000000000000000000000000 -336543 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000080000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000040000000000000000000200000000000000000000200000000000000000008000000000000000000000000000000000000000000000000000000000000000000 -337012 0x00000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000008000000000000000001000000000000000000000000400000000000000802000002000000200000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000 -337642 0x00000000004000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000408000000000000000000000000000000000040000080000000000000000080000000000000000000000000000000000000000000000000000000000000010000000008000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000020000000000000000002000000000000000000040000000000000001000000000000000000000000000000000000000000000000000000000000000000000000 -337647 0x00000000000000000000000000000000000000000000020000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000040000000000000000000000000000000800000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -337649 0x00000000004000000000000000000000000000000000020000000000000080000000100000000000000000000000000000000000000000000000000000000000000000000000000000008002000000000000000000000000000000040000000000000000000000000000000800000000000000000000000000000000000000000000000002000010000000008000000000000000000000000000000000008000000000000000000000000000000000200000000000000000000000000000000000000000000000000002000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -337653 0x00000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000008000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000040000000000000000000040000002000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -337654 0x00000000004000000000008000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000002000000000000002000000000000000008000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000008000000000000000000000000000000000008000000000000000000000000000000000000000000000000000020000040000000000000000000040000002000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -337655 0x00000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000040000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000040000000400000000040000000000000000000000000000000000000000000000000000000000000000000000 -337656 0x00000000004000000000000000000000000400000000020000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000008000040000000000000000000000000000040000000000000000000000000000000000000000000000000000004000000000000000000000000000000010000000008000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000040000000400000000040000000000000000000000000000000000000000000000000000000000000000000000 -337663 0x00000000004000000000000000000000080000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000001000000000000000000000000000050000000000000000000000000040000000000000000000000000000000000000000004000000000000000010000000008000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000040000000000000000000000000000000000000000000000000080000000000000000000000000000000000000 -337664 0x00000000000000000000000000000000000000000000020000000010000000000000000000000000001000000000000000000000000000000000000000000000000200000000000000008000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -337669 0x00000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000020000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000008000000000 -337672 0x40000000004000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000020000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000020000000000000010000000008000000000000000000000000008000000008000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000008000008000000000 -337731 0x00000000000000000000000020000000000000000000000000000000000000000000001000000000000000000000000000008000000000000000800000000000000000000000000000000000000000802000002000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000 -338275 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010004000200000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -338281 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010004000200000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -338336 0x00000020000000080000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000 -338424 0x00000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000008004000000000000000000000000000000000000100000000000000000802000002000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000 -338435 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000008000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000004000000000000000000000000010000000000000000000000000000000000000 -338439 0x00000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000008000000000000000000000000000000000000000000000000000000010802000002000000000000000000000000001000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000008000000000000000000000000040000000000000000000000000000000000000000000000008000000000000000 -338661 0x00000000000000000000000000000000000000000000000000000000001000000000001000000000000000000000000000008000000000000000000000000000000000000000000000000000000000802000002000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000008000000000000000000000000000000000000000000000000080000000000000000000800008000000000000000 -338991 0x00000000000000000000000000200000000000000008000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000400800000000000000000000000000000010000000000000000000000000000000000000000000000000 -339173 0x00000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000008000000000000000000000000000000000000000000000000000000000802000002400000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000002000000000000000000000000000000088000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000 -339369 0x00000020000000000000000000200000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000000000008000400000000000000000000000000 -339427 0x00000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000008000000000000000000000000000000000000000000000000000000000802000002000020000000000000000000001000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000002000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000 -340633 0x00000000000000000000000000000000000000000000020000000004000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000008000000000000001000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -340635 0x00000000004000000000000000000000000000000000020000000004000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000008000000000000001000000000000200000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000008000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000040000000001000000000200000000000000000000000000000000000000000000000000000000000000000000 -340653 0x00000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000000000001000000002000000000000000000040000000000000000000000000000000000000000000000000000000010000000000000000000000000000000 -340658 0x0000000000400000000000000000000400000000000002000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000020000000000000000000001000000000800000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000000100000000a000000000000000000040000000000000000000000000000000000000000000000000000000010000000000000000000000000000000 -340674 0x00000000000800000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000100000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000040080000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -340675 0x00000000004800000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000008000000000000000000000000000000000008000000100000000000000000000000000000000000000000000000000000000000000000000000000000002000010000000000000040080000000000000000000000000000000000002000000000000000000080000000000000000000000000000 -340685 0x00000000000000000000000000000000000000000000020010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000040000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000008000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -340686 0x00004000004000000000000000000000000000000000820010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000040000000000000000000000000000000000000000000010000000000000000000000000000000000000000010000000008000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000008000000000000040000000000000000000000000000000000000000000000000002000000000000000000000000000000000000 -340700 0x00000000004000000000000000000000000000000000020001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000008000000000000000000000000000000000008000080000000000000000000000000000000000008000000000000000000000000000000000000000000002004200000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000001000 -340708 0x00000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000008000000000000000000000000000040000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000040000000000000000000000000000000000000000000000000080000000000000000000000000000000000000 -340710 0x00000000004000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000008000000000000000000000000000040000000000000100000000000000000800000000000000000000000000000000000000000000000000000010000000008000000000000000000000000000000000008000000000000000000000000000000000400000000000000000000000000000000000000000000000000002000002000000000000040000000000000000000000000000000000000000000000000080000000000000000000000000000000000000 -340712 0x00000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000080040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000008000000000200000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -340713 0x00000000004000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000080840000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000028000000100000000000000000000000000008000000000200000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000040000000000000000000000000000000000000000000000000000000000000000001000000000000000000000 -340718 0x00000000000000000000000000000000000000000000020000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000100000000000000000000000000000000000000000000000000000000000000000002000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000002000000000000 -340719 0x00000000004000000000000000000000000000000000020000000040000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000008000000000000080000002000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000008000000000000000000000000000000000008000000000000000000100000000000000000000000000000000000000000000000000000000000000000002000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000002000000000000 -340727 0x00000000004000000000040000002000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000200000000000080000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000008000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000002000000000000000000000000002000000000000000000040000000000000000000000000000000000000000000000000000000001000000000000000000000000000000 -340728 0x00000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000002000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000100000000000000000000000000000000000000000000000000002000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -340835 0x00000020000000080000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000 -340988 0x00000000000000000010000000000000000000000010000000000000000000000000001000000000000000000000000000008000000000000000000000000000000000000000000000000000000000802000002000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000010000000000008000000000000000 -341695 0x00000000000000000000000010000000000000000000000000000000000000000000001000000000000000000000000000008000000000000000000000000000000000000000000000000000000000802000002000000000000000000000000001000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000008000000000000001000000000000000000000000000000000000000000000000000000000008000000000000000 -341985 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000100000000000004000000000000001000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000 -341997 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000104000000000004000000000000001000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -342001 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000100000000000004000000000000001000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000 -342004 0x00000000000000000000000000000000000000004000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000100000000000004000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000040000000000000000 -342007 0x00000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000004000000000000001000000040000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000040000000000000000 -342008 0x00000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000004000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000040000000000000000 -342026 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000002000000004000000000000000000000000000000000000000000000000000000001000000000000000000004000000020000080000000000000000000000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000004000000000000000000000000000000000000000000000000000400000000000000000 -342027 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000400000000000000000 -342033 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000400000000000000000 -342035 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000400000000000000000 -342036 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000400000000000000000 -342041 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000004000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000080000000000000000000000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000000000 -342047 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000100000000000000000000000000000000002000000104000000000044100000000000001000002000000000000000000000001000000000000000000004000000000000080000000000000000000000000000000000000002000000000000000000000000020000000000000040000000000000000000000000000004000000000000000000000000000000000000000000000000000400000000000000000 -342053 0x00000000000000000000000000000000000000004000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000400000000000000004000000000000000000000000000000000000000000000000000040000000000000000 -342080 0x00000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000400000002000000000000000000000000000000000000000000040000000000000000000001040000000000000000000000000000000080000000010000000000000000000000000000000000000000000000000000000020000000000000000000000000000400000000000000004000000000000000000000000000000000000000000000000000440000000000000000 -342101 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000004000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000080000000000000000000000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000000000 -342107 0x00000000000000000000000000000000000000004000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000400000000000000004000000000000000000000000000000000000000000000000000040000000000000000 -342111 0x00000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000040000000000000000000000040000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000004000000000000000000000000000000000000000000000000000040000000000000000 -342115 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000004000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000080000000000000000000000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000000000 -342118 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000400000002000000004000000000000000000000000000000000000000000000000000000001000000000000000000004000000000000080000000010000000000000000000000000000000000000000000000000000000020000000000000040000000000000000000000000000004000000000000000000000000000000000000000000000000000400000000000000000 -342125 0x00000000000000000000000000000000000000004000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000400000000000000004000000000000000000000000000000000000000000000000000040000000000000000 -342140 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000008000000000000000000080000000000000000800000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000000000 -342141 0x00000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000004000000000000000000000000000000000000000000000000000040000000000000000 -342145 0x00000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000400000002000000000000000000000000000000000000000000040000000000000000000001040000000000000000000000000000000080000000010000000000000000000000000000000000000000000000000000000020000000000000000000000000000400000000000000004000000000000000000000000000000000000000000000000000440000000000000000 -342162 0x00000000000000000000000000000000000000004000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000400000000000000004000000000000000000000000000000000000000000000000000040000000000000000 -342173 0x00000000000000000000000000000000000000004000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000400000000000000004000000000000000000000000000000000000000000000000000040000000000000000 -342188 0x00000000000000000000000000000000000000004000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000400000000000000004000000000000000000000000000000000000000000000000000040000000000000000 -342272 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000008000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000400000000000000000 -342386 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000008000000000000000000000000000000000000000000000000000004000000000000000000000000000008000000000000000000000000001000000000000000000004000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000000000000000000000010000000004000000000000000000000000010000000000000000000400000000000000000 -342399 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000000000000000004000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000 -342466 0x00000000000000000000000000000000000000000000000000002000000000000000001000000000080000000000000000008000000000000000000000000000000000000000000000000000000000802000002000000000000000000000000001000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000 -342601 0x00000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000040000000000000000000000040000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000004000000000000000000000000000000000000000000000000000040000000000000000 -342616 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000008000000000000000000080000000000000000800000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000000000 -342618 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000008000000000000000000080000000000000000800000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000000000 -342924 0x00000000000000000000000000000000000010000000000000000000000000000000001000000000000000000000000000008000000000000000000000000000000000000000000000000000000000802000002000000000000000000000000001000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000 -342964 0x00000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000008000000000000000000000000000000000000000000000000000000000802000002000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000081000000000000000000000000000000000000000000000000000000000000000000000002000000000000002000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000 -343006 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000080000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c00000000000000000 -343021 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000004000000000000000000000000000000000000000000000000080000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000 -343059 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000008000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000 -343079 0x00000000000000000000000000000000000000004000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000200000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000200000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000040000000000000000 -343083 0x00000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000008000000000000000000000000000000000000000000040000000000000802000002000000000000000000000000001000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000002000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000 -343133 0x00000020000000080000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000 -343162 0x00000020000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000100000000000000000000000000008000400000000000000000000000000 -343185 0x00000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000000000010000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000008000400000000000000000000000000 -343339 0x00000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000008000000000000000000000000000000000000000080000000000000000802000002000000000000000000000000001800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000002000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000 -343946 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000040100000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -343966 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000040100000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -343971 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000040100000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -344121 0x00000000000000000000000000000000000000000000000000000040000000000000001000000000000000000000000000008000000000000000000000000000000000008000000000000000000000802000002000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000002000000000000008000000000000000 -344164 0x00000000000000000000000000000000000000000000000000000040000000000000001000000000000000000000000000008000000000000000000000000000000000008000000000000000000000802000002000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000002000000000000008000000000000000 -344839 0x00000000000000000000000000000000000000000000000000000000000000000200001000000000000000000000000000008000000000000000000000000000000000000000000000000000000000802000002000000008000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000002000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000 -345506 0x00000020000000080000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000 -346112 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000040100000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -346392 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000040100000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -346395 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000040100000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -346398 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000040100000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -346425 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000040100000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -346448 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000040100000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -346451 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000040100000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -346454 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000040100000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -346464 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000040100000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -346466 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000040100000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -347014 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000100000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000400000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -347301 0x00000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000008000000000000000000000000000000000000000200000000000000000802000002000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000008000000002000000000000000000000000000000000000000000000000000000000000000008000000000000000 -347333 0x00000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000008000000000000000000000000000000000000000200000000000000000802000002000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000008000000002000000000000000000000000000000000000000000000000000000000000000008000000000000000 -347613 0x00000000000000000000000000000000000000000800000000000000000000000000000000000000000001000000000000000000004000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010004000000002000000000000000000000000000000000000000000000000000000001000000040000000000000000000000800000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000001000000000000000000000 -347700 0x00000000000000000000000000000000000000000000000000000000002000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400010000000000000 -347705 0x00000000000000000000000000000000000000000000000000000000002000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400010000000000000 -347711 0x00000000000000000000000000000000000000004000000000020000002000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000040010000000000000 -347853 0x00000000000000000000000000000000000000000000000000000000002000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000 -347953 0x00000000000000000000000000000000000000000000000000000000002000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000080000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000 -347958 0x00000000000000000000000000000000000000004000000000020000002000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000040010000000000000 -347960 0x00000000000000000000000000000000000000000000000000020000002000000001000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000040010000000000000 -348019 0x00000020000000080000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000 -348244 0x00000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000008000000000000000000004000000000000000000000000000000000000802000002000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000002000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000 -348443 0x00000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000008000000000000000000000000000000000000000000000000400000000802000002000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000002000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000 -348675 0x00000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000008000000000000000000000000000000000080000000000000000000000802000002000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000008000000000000000000000400100000000000000000000000000000000000000000000000008000000000000000 -348743 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000040100000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -348936 0x00000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000008000000000000000000000000000000000000000000000000000000000802000002000000000000000000000000001000000000000000000000000000100000000000200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000008000000000000000000000000000000002000000000000000000000000000000000000000008000000000000000 -350544 0x00000020000000080000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000 -351473 0x00000000000000000000000000000000000000000000000000000000002000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000 -353157 0x00000020000000080000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000 -353181 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000004000000000008000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000400000000000000000 -353196 0x00000000000000000000000000000000000000004000000000020000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000004000000000000200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000400000000000000000000000000000080000000000000000000000000000000000000040000000000000000 -353273 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000080000000000000000800000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000 -353276 0x00000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000080000000000000000000000000000000000000040000000000000000 -353359 0x00000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000200000000000000000000080000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000100000040 -353360 0x00000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000040 -353361 0x00000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000040000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008002400000000000000000000000000 -353367 0x00000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000080000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000400000000008000000000000000 -353370 0x02000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000040000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000400000000000000000000000000 -353438 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000004000000000000000000000000000000080000000000000000000000000000000000000000000000000002000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000040 -353443 0x0000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000000000000000a000400000000000000000000000000 -353447 0x00000028000000000000000000000080000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000400000000000000000000000000 -353479 0x00000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000008000000000000000000000000000000000000000000000000000000000802000002000000000000000000002000001000000000000000000000000100000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000 -354071 0x02000000000000000000000000000000000000000000020000000000000000000000000040000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000001000000000020000000000000000000000200000000000000020000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000140000000000000000 -354151 0x00000000000000000000000000000000000000000000002000000000000000000000400000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004040000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000080000000400000000000000000000000000000000000000000000000000000000000000000000000000000 -354162 0x00000000000000000000000000004000000000000000000000000000000000000000410000000000200000000000000002000000000002000000000040000000000000000008000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000 -354233 0x00000000000000000000000000000000000000000000000000000000000000000000400040000004000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000024040000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000400000000000000000000000040000000000000000000000000000000000100000000000000000 -354585 0x00000000000000000000000000000000000000000000000000100000000000000000400000000000200000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004001000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000 -354866 0x00000000000000000000000000000000000000000000000000001000000000000000001000000000000000000000000000008000000000000000000000000000000000000000000000000000000000802000002000000000000000000000000001000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000000008000000000000001 -356461 0x00000000000000000000000000200000000000000000000000000000010000000000000000000000000000000000000000202000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -356488 0x00000000000000000000000000200000000000000000000000000000000000000000000000000000000000000010000000200000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000020000000000000080000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000 -356513 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000100001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000080000000000000a00000000000000000000000 -356526 0x00000020000000080000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000 -356535 0x00000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000 -356543 0x00000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000800080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000 -357195 0x00000000000000000000000000000000000000000000000000000000001000000000001000000000000000000000000000008000000000000000000000000000000000000000000000000000000000802000002000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000008000000000000000000000000000000000000000000000000080000000000000000000800008000000000000000 -357579 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000040100000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -357588 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000040100000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -357590 0x00000000000000000000000000000000000000004000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000200000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000200000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000040000000000000000 -357592 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000040100000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -357600 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000040100000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -357622 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000040100000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -357630 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000040100000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -358290 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000400000002000000004000000000000000000000000000000000000000000000000000000001000000000000000000004000000000000080000000010000000000000000000000000000000000000000000000000000000020000000000000040000000000000000000000000000004000000000000000000000000000000000000000000000000000400000000000000000 -358426 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000004000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000080000000000000000000000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000000000 -358556 0x00000000000000000000000000000000000000000000000000000000001000000000001000000000000000000000000000008000000000000000000000000000000000000000000000000000000000802000002000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000008000000000000000000000000000000000000000000000000080000000000000000000800008000000000000000 -358811 0x00000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000008000000000000000000000000000000000000000000000000000000000802000002000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000008000000000000000000000000000400000000000000000000000000000000002000000000008000000000000000 -359114 0x00000000000000000000000000000000000000000000000000000000001000000000001000000000000000000000000000008000000000000000000000000000000000000000000000000000000000802000002000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000008000000000000000000000000000000000000000000000000080000000000000000000800008000000000000000 -359375 0x00000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000040000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000400000000100000000000000000 -359378 0x00000020000000000010000000000000000004000000000000000200400000000000000000000000000000000002000000000000000000020000000000000000000000000000000000000000000000010000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000040000000000040010000000000000000000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000008000400000000000000400000000000 -359538 0x00000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000008000400000000000000000000000000 -361585 0x00000000000000000000000000000000000000000000000000000000001000000000001000000000000000000000000000008000000000000000000000000000000000000000000000000000000000802000002000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000008000000000000000000000000000000000000000000000000080000000000000000000800008000000000000000 -361588 0x00000000000000000000000000000000000000000000000000000000001000000000001000000000000000000000000000008000000000000000000000000000000000000000000000000000000000802000002000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000008000000000000000000000000000000000000000000000000080000000000000000000800008000000000000000 -361732 0x00000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000008000000000000000000000000000000000000000000000000000000000842000002000000000000000000000000001000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000008000000000000000000080000000000000000000000000000000000000000000000000000008000000000000000 -361757 0x00000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000040000000000000000000000040000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000040000000000000000 -361775 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000008000000000000000000080000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -362002 0x00000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000008000000000000000000000000000000010000000000000000000000000802000002000000000000000000000400001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000 -365791 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000040 -365793 0x00000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000010000000000000008000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000000400010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000400000000000000000000000000 -369141 0x00000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000008000000000000000000000000000000000000000000000000000000000802000002000000000000000000000000001000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000008000000200000000000000000000000000000000000000000000000000000000000000000008000000000010000 -369239 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000040100000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -369249 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000040100000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -369253 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000040100000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -369259 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000040100000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -369261 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000040100000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -369263 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000040100000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -369274 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000040100000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -369426 0x00000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000200000000000000000000080000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000100000040 -369428 0x20000020000000000000000000800000000004000000000000000200400000000000000040000000000000000000000000000000000000020000000000000000000000000000000000000000000000010000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000040000000000000010000000000004000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000000000000008000400800000000000000000000000 -369431 0x00000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000018000400000000000100000000000040 -369538 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000040 -369540 0x00000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000008000400000000000000000000000000 -370399 0x00000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000008000000000000000000000000000000000000000000001000000000000802000002000000000000000000000000001000000100000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000 -370517 0x00000000000000000000000000000080200000004000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000200000000080004000000000000000000000000002000000000000000000400000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000 -370545 0x00000000000000000000000000000080200000004000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000200000000080004000000000000000000000000002000000000000000000400000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000 -371190 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000040100000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -371280 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000040100000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -371286 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000040100000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -371288 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000040100000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -371299 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000040100000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -371307 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000040100000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -371327 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000040100000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -371329 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000040100000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -371352 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000040100000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -371360 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000040100000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -371362 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000040100000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -371369 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000040100000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -371378 0x00000000000000000000000000000080200000004000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000200000000080004000000000000000000000000002000000000000000000400000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000 -371450 0x00000000000000000000000000000080200000004000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000200000000080004000000000000000000000000002000000000000000000400000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000 -371489 0x00000000000000000000000000000080000080004000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000200000000000004000000000000000000000000002000000000000000000400000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000 -371509 0x00000000000000000000000000000080000080004000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000200000000000004000000000000000000000000002000000000000000000400000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000 -371532 0x00000000000000000000000000000080000000004000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -371658 0x00000000000000000000000000000080000080004000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000200000000000004000000000000000000000000002000000000000000000400000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000 -371660 0x00000000000000000000000000000080000000004000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -371876 0x00000000000000000000000000000080000080004000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000200000000000004000000000000000000000000002000000000000000000400000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000 -371904 0x00000000000000000000000000000080000080004000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000200000000000004000000000000000000000000002000000000000000000400000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000 -371906 0x00000000000000000000000000000080000000004000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -371912 0x00000000000000000000000000000080000080004000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000200000000000004000000000000000000000000002000000000000000000400000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000 -371914 0x00000000000000000000000000000080000000004000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -371918 0x00000000000000000000000000000080000080004000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000200000000000004000000000000000000000000002000000000000000000400000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000 -371931 0x00000000000000000000000000000080000080004000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000200000000000004000000000000000000000000002000000000000000000400000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000 -371933 0x00000000000000000000000000000080000000004000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -371938 0x00000000000000000000000000000080000080004000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000200000000000004000000000000000000000000002000000000000000000400000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000 -371940 0x00000000000000000000000000000080000000004000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -371973 0x00000000000000000000000000000080000080004000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000200000000000004000000000000000000000000002000000000000000000400000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000 -372006 0x00000000000000000000000000000080000080004000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000200000000000004000000000000000000000000002000000000000000000400000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000 -372014 0x00000000000000000000000000000080000000004000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -372847 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000040100000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -374209 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000040100000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -374225 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000040100000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -374365 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000004000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000010000000000000000000000000000000000000000000000000000000020000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -374388 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020001000000000000000000000200000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000 -375079 0x00000000000000000000000000000080000080004000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000200000000000004000000000000000000000000002000000000000000000400000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000 -375093 0x00000000000000000000000000000080000000004000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -375401 0x00000000000000000000000000000000000400000400000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000 -375440 0x00000000000000000000000000000000000400000400000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -375447 0x00000000000000000000000000000000000400000400000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -376493 0x00000000000000000000000000000080000000004000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -376573 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000040100000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -376588 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000040100000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -376644 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000040100000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -376650 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000040100000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -376668 0x00000020000000080000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000 -376906 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000040100000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -377026 0x00000000000000000000000000000000000000000000000000000000001000000000001000000000000000000000000000008000000000000000000000000000000000000000000000000000000000802000002000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000008000000000000000000000000000000000000000000000000080000000000000000000800008000000000000000 -377139 0x00000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000001000000000000080000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000080000000000000000000000000000000000000040000000000000000 -377506 0x00000000000000000000000000000080000000004000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -377523 0x00000000000000000000000000000080000080004000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000200000000000004000000000000000000000000002000000000000000000400000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000 -377525 0x00000000000000000000000000000080000000004000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -377581 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000040 -377586 0x00000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000000000010000000000000000000000000000000000000000000000040000000000000000000000100000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000400000000000000000000000000 -377608 0x00000000000000000000000000000000000000000200000000000000000000000000800000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -377627 0x00000000000000000000000000000000000000004000000000020000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000004000000000000200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000400000000000000000000000000000080000000000000000000000000000000000000040000000000000000 -377629 0x00000000000000000000000000000000000000004000000000020000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000004000000000000200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000400000000000000000000000000000080000000000000000000000000000000000000040000000000000000 -377703 0x00000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000001000000000000080000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000080000000000000000000000000000000000000040000000000000000 -377730 0x00000000000000000000000000000000000000000000000000000000001000000000001000000000000000000000000000008000000000000000000000000000000000000000000000000000000000802000002000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000008000000000000000000000000000000000000000000000000080000000000000000000800008000000000000000 -377746 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000004000000000008000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000400000000000000000 -377877 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000400000002000000004000000000000000000000000000000000000000000000000000000001000000000000000000004000000000000080000000010000000000000000000000000000000000000000000000000000000020000000000000040000000000000000000000000000004000000000000000000000000000000000000000000000000000400000000000000000 -377894 0x00000000000000200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001004000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000 -377905 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000400000002000000004000000000000000000000000000000000000000000000000000000001000000000000000000004000000000000080000000010000000000000000000000000000000000000000000000000000000020000000000000040000000000000000000000000000004000000000000000000000000000000000000000000000000000400000000000000000 -377917 0x00000000000000000000000000000000000000004000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000400000000000000004000000000000000000000000000000000000000000000000000040000000000000000 -377922 0x00000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000040000000000000000000000040000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000004000000000000000000000000000000000000000000000000000040000000000000000 -377925 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000040100000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -378345 0x00000000000000000000000000000000000000000000000000000000001000000000001000000000000000000000000000008000000000000000000000000000000000000000000000000000000000802000002000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000008000000000000000000000000000000000000000000000000080000000000000000000800008000000000000000 -378347 0x00000000000000000000000000000000000000000000000000000000001000000000001000000000000000000000000000008000000000000000000000000000000000000000000000000000000000802000002000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000008000000000000000000000000000000000000000000000000080000000000000000000800008000000000000000 -379027 0x00000020000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000040000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000008000400000000000000000000000000 -379032 0x00000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000008000400000000000000000000000000 -379039 0x08000020000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000400000000000000000000000000 -379158 0x00000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000008000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000400000000000000000002000040000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -379161 0x00000400004000000000000000000000000000000000020000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000008000000000000000000000000000000000040000000000000000000000000000000000000000040000000000000000000000000000000000000000000010000000008000000000000000000000000000000020008000000000000000000000000000000000000000000000000000000000000000000400000000000000000002000040000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -379163 0x00000000000000000000000000000000000000000000020000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000008000010000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000040000000000000000000000000000000000000000000000080000000000000000000000000000000000000000 -379164 0x00000000004000000000000000000000000000100000020000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000008000010000000000000000000000000000040000000000001000000000000000000000000000000000000000000000000000000000000000000000000010000000008000000000000000000000000000000000008000000000000000000000000000000000100000000000000000000000000000000000000000000000000002000000000000000000040000000000000000000000000000000000000000000000080000000000000000000000000000000000000000 -379167 0x00000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000140000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000040000000000000000000000000000000000000000000000000000000000000000200000000000000000000004 -379170 0x00000020000000080000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000 -379171 0x00000000004000000000000000800000000000000000020000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000008000000000000000000000000000002000140000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000008000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000040000000000000000000000000000000000000000000000000000000000000000200000000000000000000004 -379172 0x00000000000000000010000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000040000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000040000000000000000200000000000000000000000000000000000000000000000000000000000000000000000 -379176 0x00000000004000000010000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000040000000000000000000000000100000000000000000000000000000000000000000200000000000000000010000000008000000000000000000000000000000000008000000000000000000000000000000000000000000000000000040000000000000000000000000000000002000000000000000000040000000000000000200000000000000000000000000000000000001000000000000000000000000000000000 -379180 0x00000000000080000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000800000000008000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -379182 0x00000000004080000000000002000000000000000800020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000800000000000000000000050000000008000000000000000000000000800000000008000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -379210 0x00000000000000040000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000004000000000000000000000400000000000000000000002000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -379212 0x00000000004000040000000000000000000000000000020000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000008000000000000000000000200000000000008000000000000000000000000000000000000000004000000000000000000000400000000000000000000002000000000000000000040002000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -379214 0x00000001000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000008000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000080000000000000000000000000000000000000000000002000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -379216 0x00000001004000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000004000000000000000000000008000000000000008000000000000000000000000000000000040000000000000000000000000000000000020000000000000000000000000000000000000000000000000010000000008000000000000000000000000000000000008000000000000000000000000000000000000000080000000000000000000000000000000000000000020002000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -379217 0x00000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000800000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000040000000000000000000000020000000000000000000000000000000000000000000000000000000000000000 -379219 0x00000000004000000000000000000000000000000000020000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000040000000000000000000000000000000000000000008000000000000000000000000010000000000000000010000000008800000000000000000000000000000000008000020000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000040000000000000000000000020000000000000000000000000000000000000000000000000000000000000000 -379220 0x00000000000000000000000000200000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000100000000000100002000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -379224 0x00000000004000000000000000200000000000000000020000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000008000000000000000040000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000008000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000100000000000100002000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000400000000000000 -379235 0x00000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000040000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000040000000000000000080000000000000000000000000000000000000000800000000000000000000000000000 -379237 0x00000000004000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000040000000000000000000000000000000000000100000000008000000000000000000000000000000000000010000000008008000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000080000000000000040000000000000000080000000000000000000000000000000000000000800000000000000000000000000000 -381271 0x00000000000000000000000000000080000080004000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000200000000000004000000000000000000000000002000000000000000000400000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000 -381276 0x00000000000000000000000000000080000000004000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -381689 0x00000020000000080000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000 -382200 0x00000020000000000000000008000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000400000000000000000000000000 -382217 0x00000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000400000010000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000008000400000000000000000000000000 -382644 0x00000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000008000000000000000000000000000000000000000200000000000000000802000002000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000008000000002000000000000000000000000000000000000000000000000000000000000000008000000000000000 -383284 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000040100000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -383337 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000040100000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -383354 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000040100000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -383361 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000040100000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -383427 0x00000000000000000000000000000000000004000800000000000000000000000000000000000000000001000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000800000001000000000008000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000040000000000000000000 -383466 0x00000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000021000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000 -383469 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000001000008000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000000400000000000000000 -383515 0x00000000000000000000000000000000000004000800000000000000000000000000000000000000000001000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000800000001000000000008000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000040000000000000000000 -383519 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000010000000800000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000002000000000000000000000000000 -383630 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000400000000000000000 -383760 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000004000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000010000000000000000000000000000000000000000000000000000000020000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -383802 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000008000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000080000000000400000000000000000 -383815 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000400000000000000004000000000000000000000000000000000000000000000000000000001000000000000000000004000000000000000000000010000000000000000000000040000000000000000000000000000000020000000100000040000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000 -383844 0x00000000000000000000000000000000100000000000000000000000200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000 -383852 0x00000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000002000000000000000000000000000400000000000000004000000000000000080000000000000000000000000000000000000001000000000000000000004000000000000000000000010000000000000000000000000000000000000000000000000000000020000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000 -383859 0x00000000000000000000000000000000000000804000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000002000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000040000000000000000 -383864 0x00000000000000000000000000000000000000800000000000020000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000080000000000000000040000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000040000000000000000 -383968 0x00000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000001000000000000080000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000080000000000000000000000000000000000000040000000000000000 -383973 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000004000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000080000000000000000000000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000000000 -384127 0x00000000000000000000000000000000000004000800000000000000000000000000000000000000000001000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000800000001000000000008000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000040000000000000000000 -384138 0x00000020000000080000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000 -384149 0x00000000000000000000000000000000100000000000000000000000200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000 -384173 0x00000000000000000000000000000000100000000000000000000000200000000000000000000000000000000000000000000000000000000000000000000400000000000000000000080000000000000000000000000000000000008000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000001000000000000000000005000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000800000000000000000000000000000400000000000000000 -384301 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000040000000000000000000000000000000000000000400000000000000000 -384422 0x00000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000400000000000000000 -384506 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000400000000000000000 -384511 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000400000000000000000 -384546 0x00000000000000000000000000000000000004000800000000000000000000000000000000000000000001000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000800000001000000000008000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000040000000000000000000 -384771 0x00001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000800000 -384825 0x00001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000 -384861 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000100000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000 -384917 0x00000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000400000000000000000 -384923 0x00002000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000001000000 -384965 0x00000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000004000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000 -385067 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000008000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000400000000000000000 -385073 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000008000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000400000000000000000 -385356 0x00002000000000000000000000000000000000010000000000000000000000000000000400000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000004000000000000000000000000000000004000000000000000000000000000000000000000000000000000000001000000000000000000004000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000001000000 -386571 0x00000020000000080000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000 -386620 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000 -386736 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000280000000000000000000000000000000000000000020000000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000040000000000000000000000000000010000000020000000000000000000000000000000000000000000000000000000000000000010 -386786 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000280000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000040000000000000000000000000000010000000040000000000000000000000000000000000000000000000000000000000000000010 -386795 0x04000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000280000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000040000000000000000000000000000000000040000000000000000000000000000010000000000000000000000000000000000000000000000000000008000000000000000000010 -386804 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000280000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000040000000000400000000000000000000000040000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000010 -386812 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000280000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000042000000000000000000000000000000000040000000000000000008000000000010000000000000000000000000000000000000000000000000000000000000000000000000010 -386818 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000280000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000800000000000000000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000040000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000010 -386899 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000280000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000080000000000000000000000000000040000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000010 -386939 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000002000000000000000000000000000000000000000200000000000000000000000000000000000000000020000000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000010000000020000000000000000000000000000000000000000000000000000000000000000000 -386945 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000020000000000000000000800000000000000000000000000000000000000000200000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000 -386975 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000100000000000000000020000000000000000000000000000000000000000000000000000000000000000000 -387011 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000010000000000000800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000 -387014 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000001000000000000000000000040000000000000000000000000000000000000000000000040000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000 -387016 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000400000000800000000 -387032 0x04000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000 -387044 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000020000000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000020000000000000000000000000000000000000000000080000000000000000000000 -387045 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000400000000800000000 -387206 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000004000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000400000000000000000 -387225 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000004000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000400000000000000000 -387241 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000004000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000400000000000000000 -387276 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000008000000000000000004000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000021000000000000000000004000000000000000000000400000000000000000000000000000000080000000000000000000000000000000000000040000000000001000000000000000000000000000000000000000000000000000000000000000000000400000000000000000 -387284 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000040000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -387365 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000440000000000000000 -387615 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000800008000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000 -387627 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000800000000000000000400000000000000000 -387641 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800008000000000000000000000001000000000000004000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -387648 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000800008000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000 -387654 0x00000000000000000000000000000000000000004000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000800008000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000040000000000000000 -387658 0x00000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000000000000000000800008000000000000000000000001000000000000000000000000000000000000000000000000040000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000040000000000000000 -387683 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000800008000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000 -387688 0x00000000000000000000000000000000000000004000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000800008000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000040000000000000000 -387690 0x00000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000000000000000000800008000000000000000000000001000000000000000000000000000000000000000000000000040000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000040000000000000000 -387761 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000004000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000080000000000000000000000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000000000 -388108 0x00000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000 -388111 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000800000000 -388150 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000800000000 -388246 0x00000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000001000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000 -388285 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000 -388296 0x00000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000001000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000 -388516 0x00000020000000080000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000 -388860 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000020000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000 -388893 0x00000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000008000000000100000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000001000000000000000000000000000008000000000000000020000000000000000000010000000000001000000000000000000000000000000000000000000000000000000000000000400000000000000000 -388894 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000020000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000 -388907 0x00000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000104000000000004000000000000001000000000000000000000000000001000000000000000000004080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000004000000000000000400000000000000000 -388909 0x00000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000400000000000000000 -388912 0x00000000000000000000000000000000000000004000000000020000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000400000000000000000000000000000000000000000000000000004000000000000000040000000000000000 -388918 0x00000000000000000000000000000000000000000000000000020000002000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000000000000000000040000000000000000000080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000004000000000000000040000000000000000 -388923 0x00000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000008000000000100000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000001000000000000000000000080000000000000000000000000000000000000000000000000000000000008000000000000000020000000000000000000000000000000001000000000000000000000000000000000000000000000004000000000000000400000000000000000 -388940 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000020000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000 -388971 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000000000000000000004000000000000000000000000000000000000000800000000000000000000000000000000000 -388990 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000 -389012 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000 -389158 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000 -389206 0x00000000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000400000000000000000 -389238 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000000000000 -389277 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000100000000000008000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000400000000000000000 -389292 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000800000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000 -389301 0x00000000000000000000000000000000000000004000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000004000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000020000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000040000000000000000 -389309 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000020000000000000000000000000000000000000000000000000000000008000000000000000000080000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -389324 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000008000000000000000000000000004000000000000000000000000004000000000000000000000000000000000000000000000000000000001000000000000800000024000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000440000000000000000 -389328 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000000000000 -389343 0x00000000000000000000000000000000000000004000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000004000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000020000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000040000000000000000 -390001 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000001000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000 -390004 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000200000000000000000000000000000000000000020000000004000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -390024 0x00000000000000000008000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000 -390042 0x00000000000000000008000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000 -390236 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000 -390306 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000001000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000 -390867 0x00000020000000080000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000 -391685 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000010000000800000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000002000000000000000000000000000 -391690 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000010000000800000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000002000000000000000000000000000 -391691 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000010000000800000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000002000000000000000000000000000 -391697 0x00000000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000040000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000 -391713 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000 -391849 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000100000000000008000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000400000000000000000 -392002 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000 -392097 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000020000000000000000000000000000000000000000000000000000000008000000000000000000080000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -392104 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000004000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000010000000000000000000000000000000000000000000000000000000020000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -392110 0x00000800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000 -392294 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000001000000000000000000000000000000000000020000000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000004000000000000000000000000000000000000000000000000000000000 -392697 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000010000000000000000000000000000400000000000000000 -392960 0x00000000000000200000400000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000002000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -392970 0x00000000000000200000400000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000002000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -392990 0x00000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000002000000000000000000000000000000100000000000000000100000000000000000000000000000000000000000000000000000000000002000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -393302 0x00000010000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000400000000000000000 -393370 0x00000020000000080000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000 -393752 0x00000000000000000000000000000000001000000000000000000000000000000000001000000000000000000000000000008000000000000000000000000000000000000000000000000000000000802000002000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000002000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000 -394354 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000000000800000024000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -394389 0x00000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000002000000000000000000000000000000100000000000000000100000000000000000000000000000000000000000000000000000000000002000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -394390 0x00000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000002000000000000000000000000000000100000000000000000100000000000000000000000000000000000000000000000000000000000002000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -394391 0x00000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000002000000000000000000000000000000100000000000000000100000000000000000000000000000000000000000000000000000000000002000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -394393 0x00000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000002000000000000000000000000000000100000000000000000100000000000000000000000000000000000000000000000000000000000002000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -394394 0x00000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000002000000000000000000000000000000100000000000000000100000000000000000000000000000000000000000000000000000000000002000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -394395 0x00000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000002000000000000000000000000000000100000000000000000100000000000000000000000000000000000000000000000000000000000002000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -394426 0x00000000000000200000400000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000200000000000000000000000000000000000000000000000000000000000000000000000008000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -394800 0x00000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000100000010000000000000000000000000000000000000000000000000000000000020000800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000400000000000000000000000000 -395595 0x00000000000000000000000000000000000000000000000000000000000100000000001000000000000000000000000000008000000000000000000000000000000000000000000000000000000000802000002000000000000000000000000001000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000008000000800000000000000000000000000000000000000000000000000000000000000000008000000000000000 -395969 0x00000020000000080000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000 -396348 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000010000000000000000000000000000400000000000000000 -397108 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000000004000000004000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000 -397588 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000000004000000004000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000 -397591 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000000004000000004000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000 -398412 0x00000000000000000000000000000000000000000000000000000000001000000000001000000000000000000000000000008000000000000000000000000000000000000000000000000000000000802000002000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000008000000000000000000000000000000000000000000000000080000000000000000000800008000000000000000 -398456 0x00000020000000080000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000 -398477 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000040100000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -398679 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000040100000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -398968 0x00000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020200000000000000000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000 -398972 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000400000000000000000 -399058 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000200000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000 -399804 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000010000000000000000000000000000400000000000000000 -399849 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000000004000000004000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000 diff --git a/util/bloomchain/tests/groupchain.rs b/util/bloomchain/tests/groupchain.rs deleted file mode 100644 index ec396346ac3..00000000000 --- a/util/bloomchain/tests/groupchain.rs +++ /dev/null @@ -1,172 +0,0 @@ -extern crate bloomchain; -extern crate rustc_hex; - -mod util; - -use bloomchain::{Bloom, Config}; -use bloomchain::group::BloomGroupChain; -use util::{BloomGroupMemoryDatabase, FromHex, for_each_bloom, generate_n_random_blooms}; - -#[test] -fn simple_bloom_group_search() { - let config = Config::default(); - let mut db = BloomGroupMemoryDatabase::default(); - let bloom = Bloom::from_hex("00000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002020000000000000000000000000000000000000000000008000000001000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"); - - let modified_blooms = { - let chain = BloomGroupChain::new(config, &db); - let block_number = 23; - chain.insert(block_number, bloom.clone()) - }; - - // number of modified blooms should always be equal number of levels - assert_eq!(modified_blooms.len(), config.levels); - db.insert_blooms(modified_blooms); - - - let chain = BloomGroupChain::new(config, &db); - assert_eq!(chain.with_bloom(&(0..100), &bloom), vec![23]); - assert_eq!(chain.with_bloom(&(0..22), &bloom), vec![]); - assert_eq!(chain.with_bloom(&(23..23), &bloom), vec![23]); - assert_eq!(chain.with_bloom(&(24..100), &bloom), vec![]); -} - -#[test] -fn partly_matching_bloom_group_searach() { - let config = Config::default(); - let mut db = BloomGroupMemoryDatabase::default(); - let bloom0 = Bloom::from_hex("10100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"); - let bloom1 = Bloom::from_hex("11000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"); - let bloom2 = Bloom::from_hex("10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"); - - let modified_blooms_0 = { - let chain = BloomGroupChain::new(config, &db); - let block_number = 14; - chain.insert(block_number, bloom0) - }; - - db.insert_blooms(modified_blooms_0); - - let modified_blooms_1 = { - let chain = BloomGroupChain::new(config, &db); - let block_number = 15; - chain.insert(block_number, bloom1) - }; - - db.insert_blooms(modified_blooms_1); - - - let chain = BloomGroupChain::new(config, &db); - assert_eq!(chain.with_bloom(&(0..100), &bloom2), vec![14, 15]); -} - -#[test] -fn bloom_group_replace() { - let config = Config::default(); - let mut db = BloomGroupMemoryDatabase::default(); - let bloom0 = Bloom::from_hex("10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"); - let bloom1 = Bloom::from_hex("01000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"); - let bloom2 = Bloom::from_hex("00100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"); - let bloom3 = Bloom::from_hex("00010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"); - let bloom4 = Bloom::from_hex("00001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"); - let bloom5 = Bloom::from_hex("00000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"); - - let modified_blooms_0 = { - let chain = BloomGroupChain::new(config, &db); - let block_number = 14; - chain.insert(block_number, bloom0.clone()) - }; - - db.insert_blooms(modified_blooms_0); - - let modified_blooms_1 = { - let chain = BloomGroupChain::new(config, &db); - let block_number = 15; - chain.insert(block_number, bloom1.clone()) - }; - - db.insert_blooms(modified_blooms_1); - - let modified_blooms_2 = { - let chain = BloomGroupChain::new(config, &db); - let block_number = 16; - chain.insert(block_number, bloom2.clone()) - }; - - db.insert_blooms(modified_blooms_2); - - let modified_blooms_3 = { - let chain = BloomGroupChain::new(config, &db); - let block_number = 17; - chain.insert(block_number, bloom3.clone()) - }; - - db.insert_blooms(modified_blooms_3); - - - let reset_modified_blooms = { - let chain = BloomGroupChain::new(config, &db); - chain.replace(&(15..17), vec![bloom4.clone(), bloom5.clone()]) - }; - - db.insert_blooms(reset_modified_blooms); - - let chain = BloomGroupChain::new(config, &db); - assert_eq!(chain.with_bloom(&(0..100), &bloom0), vec![14]); - assert_eq!(chain.with_bloom(&(0..100), &bloom1), vec![]); - assert_eq!(chain.with_bloom(&(0..100), &bloom2), vec![]); - assert_eq!(chain.with_bloom(&(0..100), &bloom3), vec![]); - assert_eq!(chain.with_bloom(&(0..100), &bloom4), vec![15]); - assert_eq!(chain.with_bloom(&(0..100), &bloom5), vec![16]); -} - -#[test] -fn file_test_bloom_group_search() { - let config = Config::default(); - let mut db = BloomGroupMemoryDatabase::default(); - let blooms_file = include_bytes!("data/blooms.txt"); - - for_each_bloom(blooms_file, | block_number, bloom | { - let modified_blooms = { - let chain = BloomGroupChain::new(config, &db); - chain.insert(block_number, bloom) - }; - - // number of modified blooms should always be equal number of levels - assert_eq!(modified_blooms.len(), config.levels); - db.insert_blooms(modified_blooms); - }); - - for_each_bloom(blooms_file, | block_number, bloom | { - let chain = BloomGroupChain::new(config, &db); - let blocks = chain.with_bloom(&(block_number..block_number), &bloom); - assert_eq!(blocks.len(), 1); - assert_eq!(blocks[0], block_number); - }); -} - -#[test] -fn random_bloom_group_replacement() { - let insertions = 10_000; - - let config = Config::default(); - let mut db = BloomGroupMemoryDatabase::default(); - let blooms = generate_n_random_blooms(insertions); - - for (i, bloom) in blooms.iter().enumerate() { - - let modified_blooms = { - let chain = BloomGroupChain::new(config, &db); - chain.replace(&(i..i), vec![bloom.clone()]) - }; - - db.insert_blooms(modified_blooms); - } - - for (i, bloom) in blooms.iter().enumerate() { - let chain = BloomGroupChain::new(config, &db); - let blocks = chain.with_bloom(&(i..i), bloom); - assert_eq!(blocks.len(), 1); - assert_eq!(blocks[0], i); - } -} diff --git a/util/bloomchain/tests/util/db.rs b/util/bloomchain/tests/util/db.rs deleted file mode 100644 index 8101b37848d..00000000000 --- a/util/bloomchain/tests/util/db.rs +++ /dev/null @@ -1,39 +0,0 @@ -use std::collections::HashMap; -use bloomchain::{Position, Bloom, BloomDatabase}; -use bloomchain::group::{GroupPosition, BloomGroup, BloomGroupDatabase}; - -#[derive(Default)] -pub struct BloomMemoryDatabase { - mem: HashMap, -} - -impl BloomMemoryDatabase { - #[allow(dead_code)] - pub fn insert_blooms(&mut self, blooms: HashMap) { - self.mem.extend(blooms); - } -} - -impl BloomDatabase for BloomMemoryDatabase { - fn bloom_at(&self, position: &Position) -> Option { - self.mem.get(position).cloned() - } -} - -#[derive(Default)] -pub struct BloomGroupMemoryDatabase { - mem: HashMap, -} - -impl BloomGroupMemoryDatabase { - #[allow(dead_code)] - pub fn insert_blooms(&mut self, groups: HashMap) { - self.mem.extend(groups); - } -} - -impl BloomGroupDatabase for BloomGroupMemoryDatabase { - fn blooms_at(&self, position: &GroupPosition) -> Option { - self.mem.get(position).cloned() - } -} diff --git a/util/bloomchain/tests/util/each.rs b/util/bloomchain/tests/util/each.rs deleted file mode 100644 index 19ca1b67cf5..00000000000 --- a/util/bloomchain/tests/util/each.rs +++ /dev/null @@ -1,24 +0,0 @@ -use std::io::{BufReader, Read, BufRead}; -use bloomchain::Bloom; -use super::FromHex; - -pub fn for_each_bloom(bytes: &[u8], mut f: F) where F: FnMut(usize, Bloom) { - let mut reader = BufReader::new(bytes); - let mut line = String::new(); - while reader.read_line(&mut line).unwrap() > 0 { - { - let mut number_bytes = vec![]; - let mut bloom_bytes = [0; 512]; - - let mut line_reader = BufReader::new(line.as_ref() as &[u8]); - line_reader.read_until(b' ', &mut number_bytes).unwrap(); - line_reader.consume(2); - line_reader.read_exact(&mut bloom_bytes).unwrap(); - - let number = String::from_utf8(number_bytes).map(|s| s[..s.len() -1].to_owned()).unwrap().parse::().unwrap(); - let bloom = Bloom::from_hex(&String::from_utf8(bloom_bytes.to_vec()).unwrap()); - f(number, bloom); - } - line.clear(); - } -} diff --git a/util/bloomchain/tests/util/from_hex.rs b/util/bloomchain/tests/util/from_hex.rs deleted file mode 100644 index 9152d304fdf..00000000000 --- a/util/bloomchain/tests/util/from_hex.rs +++ /dev/null @@ -1,16 +0,0 @@ -use rustc_hex::FromHex as RustcFromHex; -use bloomchain::Bloom; - -pub trait FromHex { - fn from_hex(s: &str) -> Self where Self: Sized; -} - -impl FromHex for Bloom { - fn from_hex(s: &str) -> Self { - let mut res = [0u8; 256]; - let v = s.from_hex().unwrap(); - assert_eq!(res.len(), v.len()); - res.copy_from_slice(&v); - From::from(res) - } -} diff --git a/util/bloomchain/tests/util/mod.rs b/util/bloomchain/tests/util/mod.rs deleted file mode 100644 index 2a1e55af9a0..00000000000 --- a/util/bloomchain/tests/util/mod.rs +++ /dev/null @@ -1,9 +0,0 @@ -mod db; -mod each; -mod from_hex; -mod random; - -pub use self::db::{BloomMemoryDatabase, BloomGroupMemoryDatabase}; -pub use self::each::for_each_bloom; -pub use self::from_hex::FromHex; -pub use self::random::{generate_random_bloom, generate_n_random_blooms}; diff --git a/util/bloomchain/tests/util/random.rs b/util/bloomchain/tests/util/random.rs deleted file mode 100644 index 3d50b5ac10a..00000000000 --- a/util/bloomchain/tests/util/random.rs +++ /dev/null @@ -1,24 +0,0 @@ -extern crate rand; - -use self::rand::random; -use bloomchain::Bloom; - -pub fn generate_random_bloom() -> Bloom { - let mut res = [0u8; 256]; - let p0 = random::(); - let b0 = random::() % 8; - let p1 = random::(); - let b1 = random::() % 8; - let p2 = random::(); - let b2 = random::() % 8; - - res[p0 as usize] |= 1 << b0; - res[p1 as usize] |= 1 << b1; - res[p2 as usize] |= 1 << b2; - - From::from(res) -} - -pub fn generate_n_random_blooms(n: usize) -> Vec { - (0..n).map(|_| generate_random_bloom()).collect() -} From e4f863b4b0721ed993fdfe3333957f8231e8ae72 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20Silva?= Date: Fri, 23 Feb 2018 09:41:29 +0000 Subject: [PATCH 3/3] rpc: don't include current block in new_block_filter (#7982) --- rpc/src/v1/impls/eth_filter.rs | 5 +++-- rpc/src/v1/tests/mocked/eth.rs | 25 ++++++++++++++++++++++++- 2 files changed, 27 insertions(+), 3 deletions(-) diff --git a/rpc/src/v1/impls/eth_filter.rs b/rpc/src/v1/impls/eth_filter.rs index 4803c2541cb..0ff9f4c20f4 100644 --- a/rpc/src/v1/impls/eth_filter.rs +++ b/rpc/src/v1/impls/eth_filter.rs @@ -111,7 +111,8 @@ impl EthFilter for T { fn new_block_filter(&self) -> Result { let mut polls = self.polls().lock(); - let id = polls.create_poll(PollFilter::Block(self.best_block_number())); + // +1, since we don't want to include the current block + let id = polls.create_poll(PollFilter::Block(self.best_block_number() + 1)); Ok(id.into()) } @@ -129,7 +130,7 @@ impl EthFilter for T { None => Either::A(future::ok(FilterChanges::Empty)), Some(filter) => match *filter { PollFilter::Block(ref mut block_number) => { - // + 1, cause we want to return hashes including current block hash. + // +1, cause we want to return hashes including current block hash. let current_number = self.best_block_number() + 1; let hashes = (*block_number..current_number).into_iter() .map(BlockId::Number) diff --git a/rpc/src/v1/tests/mocked/eth.rs b/rpc/src/v1/tests/mocked/eth.rs index c66da9b1c09..1b15b960db9 100644 --- a/rpc/src/v1/tests/mocked/eth.rs +++ b/rpc/src/v1/tests/mocked/eth.rs @@ -22,7 +22,7 @@ use std::time::{Instant, Duration}; use ethereum_types::{H256, U256, Address}; use parking_lot::Mutex; use ethcore::account_provider::AccountProvider; -use ethcore::client::{TestBlockChainClient, EachBlockWith, Executed, TransactionId}; +use ethcore::client::{BlockChainClient, BlockId, EachBlockWith, Executed, TestBlockChainClient, TransactionId}; use ethcore::log_entry::{LocalizedLogEntry, LogEntry}; use ethcore::miner::MinerService; use ethcore::receipt::{LocalizedReceipt, TransactionOutcome}; @@ -284,6 +284,29 @@ fn rpc_logs_filter() { assert_eq!(tester.io.handle_request_sync(request_changes2), Some(response2.to_owned())); } +#[test] +fn rpc_blocks_filter() { + let tester = EthTester::default(); + let request_filter = r#"{"jsonrpc": "2.0", "method": "eth_newBlockFilter", "id": 1}"#; + let response = r#"{"jsonrpc":"2.0","result":"0x0","id":1}"#; + + assert_eq!(tester.io.handle_request_sync(request_filter), Some(response.to_owned())); + + let request_changes = r#"{"jsonrpc": "2.0", "method": "eth_getFilterChanges", "params": ["0x0"], "id": 1}"#; + let response = r#"{"jsonrpc":"2.0","result":[],"id":1}"#; + + assert_eq!(tester.io.handle_request_sync(request_changes), Some(response.to_owned())); + + tester.client.add_blocks(2, EachBlockWith::Nothing); + + let response = format!( + r#"{{"jsonrpc":"2.0","result":["0x{:x}","0x{:x}"],"id":1}}"#, + tester.client.block_hash(BlockId::Number(1)).unwrap(), + tester.client.block_hash(BlockId::Number(2)).unwrap()); + + assert_eq!(tester.io.handle_request_sync(request_changes), Some(response.to_owned())); +} + #[test] fn rpc_eth_submit_hashrate() { let tester = EthTester::default();