diff --git a/ethcore/src/blockchain.rs b/ethcore/src/blockchain.rs index cc9ff56fd..0e14b0502 100644 --- a/ethcore/src/blockchain.rs +++ b/ethcore/src/blockchain.rs @@ -22,6 +22,11 @@ use header::*; use extras::*; use transaction::*; use views::*; +use receipt::Receipt; +use chainfilter::{ChainFilter, BloomIndex, FilterDataSource}; + +const BLOOM_INDEX_SIZE: usize = 16; +const BLOOM_LEVELS: u8 = 3; /// Represents a tree route between `from` block and `to` block: pub struct TreeRoute { @@ -30,7 +35,7 @@ pub struct TreeRoute { /// Best common ancestor of these blocks. pub ancestor: H256, /// An index where best common ancestor would be. - pub index: usize + pub index: usize, } /// Represents blockchain's in-memory cache size in bytes. @@ -45,7 +50,63 @@ pub struct CacheSize { /// Logs cache size. pub block_logs: usize, /// Blooms cache size. - pub blocks_blooms: usize + pub blocks_blooms: usize, + /// Block receipts size. + pub block_receipts: usize, +} + +struct BloomIndexer { + index_size: usize, + levels: u8, +} + +impl BloomIndexer { + fn new(index_size: usize, levels: u8) -> Self { + BloomIndexer { + index_size: index_size, + levels: levels + } + } + + /// Calculates bloom's position in database. + fn location(&self, bloom_index: &BloomIndex) -> BlocksBloomLocation { + use std::{mem, ptr}; + + let hash = unsafe { + let mut hash: H256 = mem::zeroed(); + ptr::copy(&[bloom_index.index / self.index_size] as *const usize as *const u8, hash.as_mut_ptr(), 8); + hash[8] = bloom_index.level; + hash.reverse(); + hash + }; + + BlocksBloomLocation { + hash: hash, + index: bloom_index.index % self.index_size + } + } + + fn index_size(&self) -> usize { + self.index_size + } + + fn levels(&self) -> u8 { + self.levels + } +} + +/// Blockchain update info. +struct ExtrasUpdate { + /// Block hash. + hash: H256, + /// DB update batch. + batch: WriteBatch, + /// Inserted block familial details. + details: BlockDetails, + /// New best block (if it has changed). + new_best: Option, + /// Changed blocks bloom location hashes. + bloom_hashes: HashSet, } impl CacheSize { @@ -88,6 +149,9 @@ pub trait BlockProvider { /// Get the address of transaction with given hash. fn transaction_address(&self, hash: &H256) -> Option; + /// Get receipts of block with given hash. + fn block_receipts(&self, hash: &H256) -> Option; + /// Get the partial-header of a block. fn block_header(&self, hash: &H256) -> Option
{ self.block(hash).map(|bytes| BlockView::new(&bytes).header()) @@ -130,6 +194,9 @@ pub trait BlockProvider { fn genesis_header(&self) -> Header { self.block_header(&self.genesis_hash()).unwrap() } + + /// Returns numbers of blocks containing given bloom. + fn blocks_with_bloom(&self, bloom: &H2048, from_block: BlockNumber, to_block: BlockNumber) -> Vec; } #[derive(Debug, Hash, Eq, PartialEq, Clone)] @@ -161,11 +228,22 @@ pub struct BlockChain { transaction_addresses: RwLock>, block_logs: RwLock>, blocks_blooms: RwLock>, + block_receipts: RwLock>, extras_db: DB, blocks_db: DB, cache_man: RwLock, + + // blooms indexing + bloom_indexer: BloomIndexer, +} + +impl FilterDataSource for BlockChain { + fn bloom_at_index(&self, bloom_index: &BloomIndex) -> Option { + let location = self.bloom_indexer.location(bloom_index); + self.blocks_blooms(&location.hash).and_then(|blooms| blooms.blooms.into_iter().nth(location.index).cloned()) + } } impl BlockProvider for BlockChain { @@ -214,6 +292,17 @@ impl BlockProvider for BlockChain { fn transaction_address(&self, hash: &H256) -> Option { self.query_extras(hash, &self.transaction_addresses) } + + /// Get receipts of block with given hash. + fn block_receipts(&self, hash: &H256) -> Option { + self.query_extras(hash, &self.block_receipts) + } + + /// Returns numbers of blocks containing given bloom. + fn blocks_with_bloom(&self, bloom: &H2048, from_block: BlockNumber, to_block: BlockNumber) -> Vec { + let filter = ChainFilter::new(self, self.bloom_indexer.index_size(), self.bloom_indexer.levels()); + filter.blocks_with_bloom(bloom, from_block as usize, to_block as usize).into_iter().map(|b| b as BlockNumber).collect() + } } const COLLECTION_QUEUE_SIZE: usize = 8; @@ -270,9 +359,11 @@ impl BlockChain { transaction_addresses: RwLock::new(HashMap::new()), block_logs: RwLock::new(HashMap::new()), blocks_blooms: RwLock::new(HashMap::new()), + block_receipts: RwLock::new(HashMap::new()), extras_db: extras_db, blocks_db: blocks_db, cache_man: RwLock::new(cache_man), + bloom_indexer: BloomIndexer::new(BLOOM_INDEX_SIZE, BLOOM_LEVELS) }; // load best block @@ -389,13 +480,13 @@ impl BlockChain { while from_details.number > to_details.number { from_branch.push(current_from); current_from = from_details.parent.clone(); - from_details = self.block_details(&from_details.parent).unwrap(); + from_details = self.block_details(&from_details.parent).expect(&format!("1. Expected to find details for block {:?}", from_details.parent)); } while to_details.number > from_details.number { to_branch.push(current_to); current_to = to_details.parent.clone(); - to_details = self.block_details(&to_details.parent).unwrap(); + to_details = self.block_details(&to_details.parent).expect(&format!("2. Expected to find details for block {:?}", to_details.parent)); } assert_eq!(from_details.number, to_details.number); @@ -404,11 +495,11 @@ impl BlockChain { while current_from != current_to { from_branch.push(current_from); current_from = from_details.parent.clone(); - from_details = self.block_details(&from_details.parent).unwrap(); + from_details = self.block_details(&from_details.parent).expect(&format!("3. Expected to find details for block {:?}", from_details.parent)); to_branch.push(current_to); current_to = to_details.parent.clone(); - to_details = self.block_details(&to_details.parent).unwrap(); + to_details = self.block_details(&to_details.parent).expect(&format!("4. Expected to find details for block {:?}", from_details.parent)); } let index = from_branch.len(); @@ -425,7 +516,7 @@ impl BlockChain { /// Inserts the block into backing cache database. /// Expects the block to be valid and already verified. /// If the block is already known, does nothing. - pub fn insert_block(&self, bytes: &[u8]) { + pub fn insert_block(&self, bytes: &[u8], receipts: Vec) { // create views onto rlp let block = BlockView::new(bytes); let header = block.header_view(); @@ -437,34 +528,44 @@ impl BlockChain { // store block in db self.blocks_db.put(&hash, &bytes).unwrap(); - let (batch, new_best, details) = self.block_to_extras_insert_batch(bytes); + let update = self.block_to_extras_update(bytes, receipts); + self.apply_update(update); + } + /// Applies extras update. + fn apply_update(&self, update: ExtrasUpdate) { // update best block let mut best_block = self.best_block.write().unwrap(); - if let Some(b) = new_best { + if let Some(b) = update.new_best { *best_block = b; } - // update caches - let mut write = self.block_details.write().unwrap(); - write.remove(&header.parent_hash()); - write.insert(hash.clone(), details); - self.note_used(CacheID::Block(hash)); + // update details cache + let mut write_details = self.block_details.write().unwrap(); + write_details.remove(&update.details.parent); + write_details.insert(update.hash.clone(), update.details); + self.note_used(CacheID::Block(update.hash)); + + // update blocks blooms cache + let mut write_blocks_blooms = self.blocks_blooms.write().unwrap(); + for bloom_hash in &update.bloom_hashes { + write_blocks_blooms.remove(bloom_hash); + } // update extras database - self.extras_db.write(batch).unwrap(); + self.extras_db.write(update.batch).unwrap(); } /// Transforms block into WriteBatch that may be written into database /// Additionally, if it's new best block it returns new best block object. - fn block_to_extras_insert_batch(&self, bytes: &[u8]) -> (WriteBatch, Option, BlockDetails) { + fn block_to_extras_update(&self, bytes: &[u8], receipts: Vec) -> ExtrasUpdate { // create views onto rlp let block = BlockView::new(bytes); let header = block.header_view(); // prepare variables let hash = block.sha3(); - let mut parent_details = self.block_details(&header.parent_hash()).expect("Invalid parent hash."); + let mut parent_details = self.block_details(&header.parent_hash()).expect(format!("Invalid parent hash: {:?}", header.parent_hash()).as_ref()); let total_difficulty = parent_details.total_difficulty + header.difficulty(); let is_new_best = total_difficulty > self.best_block_total_difficulty(); let parent_hash = header.parent_hash(); @@ -495,9 +596,18 @@ impl BlockChain { }); } + // update block receipts + batch.put_extras(&hash, &BlockReceipts::new(receipts)); + // if it's not new best block, just return if !is_new_best { - return (batch, None, details); + return ExtrasUpdate { + hash: hash.clone(), + batch: batch, + details: details, + new_best: None, + bloom_hashes: HashSet::new() + }; } // if its new best block we need to make sure that all ancestors @@ -507,9 +617,17 @@ impl BlockChain { let best_details = self.block_details(&best_hash).expect("best block hash is invalid!"); let route = self.tree_route_aux((&best_details, &best_hash), (&details, &hash)); + let modified_blooms; + match route.blocks.len() { // its our parent - 1 => batch.put_extras(&header.number(), &hash), + 1 => { + batch.put_extras(&header.number(), &hash); + + // update block blooms + modified_blooms = ChainFilter::new(self, self.bloom_indexer.index_size(), self.bloom_indexer.levels()) + .add_bloom(&header.log_bloom(), header.number() as usize); + }, // it is a fork i if i > 1 => { let ancestor_number = self.block_number(&route.ancestor).unwrap(); @@ -517,27 +635,58 @@ impl BlockChain { for (index, hash) in route.blocks.iter().skip(route.index).enumerate() { batch.put_extras(&(start_number + index as BlockNumber), hash); } + + // get all blocks that are not part of canon chain (TODO: optimize it to one query) + let blooms: Vec = route.blocks.iter() + .skip(route.index) + .map(|hash| self.block(hash).unwrap()) + .map(|bytes| BlockView::new(&bytes).header_view().log_bloom()) + .collect(); + + // reset blooms chain head + modified_blooms = ChainFilter::new(self, self.bloom_indexer.index_size(), self.bloom_indexer.levels()) + .reset_chain_head(&blooms, start_number as usize, self.best_block_number() as usize); }, // route.blocks.len() could be 0 only if inserted block is best block, // and this is not possible at this stage _ => { unreachable!(); } }; + let bloom_hashes = modified_blooms.iter() + .map(|(bloom_index, _)| self.bloom_indexer.location(&bloom_index).hash) + .collect(); + + for (bloom_hash, blocks_blooms) in modified_blooms.into_iter() + .fold(HashMap::new(), | mut acc, (bloom_index, bloom) | { + { + let location = self.bloom_indexer.location(&bloom_index); + let mut blocks_blooms = acc + .entry(location.hash.clone()) + .or_insert_with(|| self.blocks_blooms(&location.hash).unwrap_or_else(BlocksBlooms::new)); + assert_eq!(self.bloom_indexer.index_size, blocks_blooms.blooms.len()); + blocks_blooms.blooms[location.index] = bloom; + } + acc + }) { + batch.put_extras(&bloom_hash, &blocks_blooms); + } + // this is new best block batch.put(b"best", &hash).unwrap(); let best_block = BestBlock { - hash: hash, + hash: hash.clone(), number: header.number(), total_difficulty: total_difficulty }; - (batch, Some(best_block), details) - } - - /// Returns true if transaction is known. - pub fn is_known_transaction(&self, hash: &H256) -> bool { - self.query_extras_exist(hash, &self.transaction_addresses) + ExtrasUpdate { + hash: hash, + batch: batch, + new_best: Some(best_block), + details: details, + bloom_hashes: bloom_hashes + } } /// Get best block hash. @@ -555,9 +704,9 @@ impl BlockChain { self.best_block.read().unwrap().total_difficulty } - /// Get the transactions' log blooms of a block. - pub fn log_blooms(&self, hash: &H256) -> Option { - self.query_extras(hash, &self.block_logs) + /// Get block blooms. + fn blocks_blooms(&self, hash: &H256) -> Option { + self.query_extras(hash, &self.blocks_blooms) } fn query_extras(&self, hash: &K, cache: &RwLock>) -> Option where @@ -601,7 +750,8 @@ impl BlockChain { block_details: self.block_details.read().unwrap().heap_size_of_children(), transaction_addresses: self.transaction_addresses.read().unwrap().heap_size_of_children(), block_logs: self.block_logs.read().unwrap().heap_size_of_children(), - blocks_blooms: self.blocks_blooms.read().unwrap().heap_size_of_children() + blocks_blooms: self.blocks_blooms.read().unwrap().heap_size_of_children(), + block_receipts: self.block_receipts.read().unwrap().heap_size_of_children() } } @@ -633,6 +783,7 @@ impl BlockChain { let mut transaction_addresses = self.transaction_addresses.write().unwrap(); let mut block_logs = self.block_logs.write().unwrap(); let mut blocks_blooms = self.blocks_blooms.write().unwrap(); + let mut block_receipts = self.block_receipts.write().unwrap(); for id in cache_man.cache_usage.pop_back().unwrap().into_iter() { cache_man.in_use.remove(&id); @@ -642,6 +793,7 @@ impl BlockChain { CacheID::Extras(ExtrasIndex::TransactionAddress, h) => { transaction_addresses.remove(&h); }, CacheID::Extras(ExtrasIndex::BlockLogBlooms, h) => { block_logs.remove(&h); }, CacheID::Extras(ExtrasIndex::BlocksBlooms, h) => { blocks_blooms.remove(&h); }, + CacheID::Extras(ExtrasIndex::BlockReceipts, h) => { block_receipts.remove(&h); }, _ => panic!(), } } @@ -662,7 +814,7 @@ mod tests { use std::str::FromStr; use rustc_serialize::hex::FromHex; use util::hash::*; - use blockchain::*; + use blockchain::{BlockProvider, BlockChain}; use tests::helpers::*; use devtools::*; @@ -680,10 +832,11 @@ mod tests { assert_eq!(bc.best_block_hash(), genesis_hash.clone()); assert_eq!(bc.block_hash(0), Some(genesis_hash.clone())); assert_eq!(bc.block_hash(1), None); - + assert_eq!(bc.block_details(&genesis_hash).unwrap().children, vec![]); + let first = "f90285f90219a03caa2203f3d7c136c0295ed128a7d31cea520b1ca5e27afe17d0853331798942a01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347948888f1f195afa192cfee860698584c030f4c9db1a0bac6177a79e910c98d86ec31a09ae37ac2de15b754fd7bed1ba52362c49416bfa0d45893a296c1490a978e0bd321b5f2635d8280365c1fe9f693d65f233e791344a0c7778a7376099ee2e5c455791c1885b5c361b95713fddcbe32d97fd01334d296b90100000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000008000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000400000000000000000000000000000000000000000000000000000008302000001832fefd882560b845627cb99a00102030405060708091011121314151617181920212223242526272829303132a08ccb2837fb2923bd97e8f2d08ea32012d6e34be018c73e49a0f98843e8f47d5d88e53be49fec01012ef866f864800a82c35094095e7baea6a6c7c4c2dfeb977efac326af552d8785012a05f200801ba0cb088b8d2ff76a7b2c6616c9d02fb6b7a501afbf8b69d7180b09928a1b80b5e4a06448fe7476c606582039bb72a9f6f4b4fad18507b8dfbd00eebbe151cc573cd2c0".from_hex().unwrap(); - bc.insert_block(&first); + bc.insert_block(&first, vec![]); let first_hash = H256::from_str("a940e5af7d146b3b917c953a82e1966b906dace3a4e355b5b0a4560190357ea1").unwrap(); @@ -716,10 +869,10 @@ mod tests { let temp = RandomTempPath::new(); let bc = BlockChain::new(&genesis, temp.as_path()); - bc.insert_block(&b1); - bc.insert_block(&b2); - bc.insert_block(&b3a); - bc.insert_block(&b3b); + bc.insert_block(&b1, vec![]); + bc.insert_block(&b2, vec![]); + bc.insert_block(&b3a, vec![]); + bc.insert_block(&b3b, vec![]); assert_eq!(bc.best_block_hash(), best_block_hash); assert_eq!(bc.block_number(&genesis_hash).unwrap(), 0); @@ -796,7 +949,7 @@ mod tests { { let bc = BlockChain::new(&genesis, temp.as_path()); assert_eq!(bc.best_block_hash(), genesis_hash); - bc.insert_block(&b1); + bc.insert_block(&b1, vec![]); assert_eq!(bc.best_block_hash(), b1_hash); } @@ -855,12 +1008,112 @@ mod tests { let temp = RandomTempPath::new(); let bc = BlockChain::new(&genesis, temp.as_path()); - bc.insert_block(&b1); - + bc.insert_block(&b1, vec![]); + let transactions = bc.transactions(&b1_hash).unwrap(); assert_eq!(transactions.len(), 7); for t in transactions { assert_eq!(bc.transaction(&bc.transaction_address(&t.hash()).unwrap()).unwrap(), t); } } + + #[test] + fn test_bloom_filter_simple() { + let genesis = "f901fcf901f7a00000000000000000000000000000000000000000000000000000000000000000a01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347948888f1f195afa192cfee860698584c030f4c9db1a07dba07d6b448a186e9612e5f737d1c909dce473e53199901a302c00646d523c1a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421b90100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008302000080832fefd8808454c98c8142a059262c330941f3fe2a34d16d6e3c7b30d2ceb37c6a0e9a994c494ee1a61d2410885aa4c8bf8e56e264c0c0".from_hex().unwrap(); + + // block b1 (child of genesis) + let b1 = "f90261f901f9a05716670833ec874362d65fea27a7cd35af5897d275b31a44944113111e4e96d2a01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347948888f1f195afa192cfee860698584c030f4c9db1a0cb52de543653d86ccd13ba3ddf8b052525b04231c6884a4db3188a184681d878a0e78628dd45a1f8dc495594d83b76c588a3ee67463260f8b7d4a42f574aeab29aa0e9244cf7503b79c03d3a099e07a80d2dbc77bb0b502d8a89d51ac0d68dd31313b90100000000200000000000000000000000000000000000000000020000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080004000000000000000000000020008302000001832fefd882520884562791e580a051b3ecba4e3f2b49c11d42dd0851ec514b1be3138080f72a2b6e83868275d98f8877671f479c414b47f862f86080018304cb2f94095e7baea6a6c7c4c2dfeb977efac326af552d870a801ca09e2709d7ec9bbe6b1bbbf0b2088828d14cd5e8642a1fee22dc74bfa89761a7f9a04bd8813dee4be989accdb708b1c2e325a7e9c695a8024e30e89d6c644e424747c0".from_hex().unwrap(); + + // block b2 (child of b1) + let b2 = "f902ccf901f9a04ef46c05763fffc5f7e59f92a7ef438ffccbb578e6e5d0f04e3df8a7fa6c02f6a01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347948888f1f195afa192cfee860698584c030f4c9db1a0c70a5dc56146e5ef025e4e5726a6373c6f12fd2f6784093a19ead0a7d17fb292a040645cbce4fd399e7bb9160b4c30c40d7ee616a030d4e18ef0ed3b02bdb65911a086e608555f63628417032a011d107b36427af37d153f0da02ce3f90fdd5e8c08b90100000000000000000000000000000000000000000000000200000010000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000080000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000008302004002832fefd882c0e384562791e880a0e3cc39ff775cc0a32f175995b92e84b729e5c9a3563ff899e3555b908bc21d75887c3cde283f4846a6f8cdf8cb01018304cb2f8080b87e6060604052606e8060106000396000f360606040526000357c010000000000000000000000000000000000000000000000000000000090048063c0406226146037576035565b005b60406004506056565b6040518082815260200191505060405180910390f35b6000600560006000508190555060059050606b565b90561ba05258615c63503c0a600d6994b12ea5750d45b3c69668e2a371b4fbfb9eeff6b8a0a11be762bc90491231274a2945be35a43f23c27775b1ff24dd521702fe15f73ec0".from_hex().unwrap(); + + // prepare for fork (b1a, child of genesis) + let b1a = "f902ccf901f9a05716670833ec874362d65fea27a7cd35af5897d275b31a44944113111e4e96d2a01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347948888f1f195afa192cfee860698584c030f4c9db1a0c70a5dc56146e5ef025e4e5726a6373c6f12fd2f6784093a19ead0a7d17fb292a040645cbce4fd399e7bb9160b4c30c40d7ee616a030d4e18ef0ed3b02bdb65911a086e608555f63628417032a011d107b36427af37d153f0da02ce3f90fdd5e8c08b90100000000000000000000000000000000000000000000000200000008000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000080000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000008302004001832fefd882c0e384562791e880a0e3cc39ff775cc0a32f175995b92e84b729e5c9a3563ff899e3555b908bc21d75887c3cde283f4846a6f8cdf8cb01018304cb2f8080b87e6060604052606e8060106000396000f360606040526000357c010000000000000000000000000000000000000000000000000000000090048063c0406226146037576035565b005b60406004506056565b6040518082815260200191505060405180910390f35b6000600560006000508190555060059050606b565b90561ba05258615c63503c0a600d6994b12ea5750d45b3c69668e2a371b4fbfb9eeff6b8a0a11be762bc90491231274a2945be35a43f23c27775b1ff24dd521702fe15f73ec0".from_hex().unwrap(); + + // fork (b2a, child of b1a, with higher total difficulty) + let b2a = "f902ccf901f9a0626b0774a7cbdad7bdce07b87d74b6fa91c1c359d725076215d76348f8399f56a01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347948888f1f195afa192cfee860698584c030f4c9db1a0c70a5dc56146e5ef025e4e5726a6373c6f12fd2f6784093a19ead0a7d17fb292a040645cbce4fd399e7bb9160b4c30c40d7ee616a030d4e18ef0ed3b02bdb65911a086e608555f63628417032a011d107b36427af37d153f0da02ce3f90fdd5e8c08b90100000000000000000000000000000000000000000000000200000008000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000080000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000008302004002832fefd882c0e384562791e880a0e3cc39ff775cc0a32f175995b92e84b729e5c9a3563ff899e3555b908bc21d75887c3cde283f4846a6f8cdf8cb01018304cb2f8080b87e6060604052606e8060106000396000f360606040526000357c010000000000000000000000000000000000000000000000000000000090048063c0406226146037576035565b005b60406004506056565b6040518082815260200191505060405180910390f35b6000600560006000508190555060059050606b565b90561ba05258615c63503c0a600d6994b12ea5750d45b3c69668e2a371b4fbfb9eeff6b8a0a11be762bc90491231274a2945be35a43f23c27775b1ff24dd521702fe15f73ec0".from_hex().unwrap(); + + // fork back :) + let b3 = "f902ccf901f9a0e6cd7250e4c32b33c906aca30280911c560ac67bd0a05fbeb874f99ac7e7e47aa01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347948888f1f195afa192cfee860698584c030f4c9db1a0c70a5dc56146e5ef025e4e5726a6373c6f12fd2f6784093a19ead0a7d17fb292a040645cbce4fd399e7bb9160b4c30c40d7ee616a030d4e18ef0ed3b02bdb65911a086e608555f63628417032a011d107b36427af37d153f0da02ce3f90fdd5e8c08b90100000000000000000000000000000000000000000000000200000008000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000080000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000008302004003832fefd882c0e384562791e880a0e3cc39ff775cc0a32f175995b92e84b729e5c9a3563ff899e3555b908bc21d75887c3cde283f4846a6f8cdf8cb01018304cb2f8080b87e6060604052606e8060106000396000f360606040526000357c010000000000000000000000000000000000000000000000000000000090048063c0406226146037576035565b005b60406004506056565b6040518082815260200191505060405180910390f35b6000600560006000508190555060059050606b565b90561ba05258615c63503c0a600d6994b12ea5750d45b3c69668e2a371b4fbfb9eeff6b8a0a11be762bc90491231274a2945be35a43f23c27775b1ff24dd521702fe15f73ec0".from_hex().unwrap(); + + let bloom_b1 = H2048::from_str("00000020000000000000000000000000000000000000000002000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000400000000000000000000002000").unwrap(); + + let bloom_b2 = H2048::from_str("00000000000000000000000000000000000000000000020000001000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000008000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000").unwrap(); + + let bloom_ba = H2048::from_str("00000000000000000000000000000000000000000000020000000800000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000008000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000").unwrap(); + + let temp = RandomTempPath::new(); + let bc = BlockChain::new(&genesis, temp.as_path()); + + let blocks_b1 = bc.blocks_with_bloom(&bloom_b1, 0, 5); + let blocks_b2 = bc.blocks_with_bloom(&bloom_b2, 0, 5); + assert_eq!(blocks_b1, vec![]); + assert_eq!(blocks_b2, vec![]); + + bc.insert_block(&b1, vec![]); + let blocks_b1 = bc.blocks_with_bloom(&bloom_b1, 0, 5); + let blocks_b2 = bc.blocks_with_bloom(&bloom_b2, 0, 5); + assert_eq!(blocks_b1, vec![1]); + assert_eq!(blocks_b2, vec![]); + + bc.insert_block(&b2, vec![]); + let blocks_b1 = bc.blocks_with_bloom(&bloom_b1, 0, 5); + let blocks_b2 = bc.blocks_with_bloom(&bloom_b2, 0, 5); + assert_eq!(blocks_b1, vec![1]); + assert_eq!(blocks_b2, vec![2]); + + // hasn't been forked yet + bc.insert_block(&b1a, vec![]); + let blocks_b1 = bc.blocks_with_bloom(&bloom_b1, 0, 5); + let blocks_b2 = bc.blocks_with_bloom(&bloom_b2, 0, 5); + let blocks_ba = bc.blocks_with_bloom(&bloom_ba, 0, 5); + assert_eq!(blocks_b1, vec![1]); + assert_eq!(blocks_b2, vec![2]); + assert_eq!(blocks_ba, vec![]); + + // fork has happend + bc.insert_block(&b2a, vec![]); + let blocks_b1 = bc.blocks_with_bloom(&bloom_b1, 0, 5); + let blocks_b2 = bc.blocks_with_bloom(&bloom_b2, 0, 5); + let blocks_ba = bc.blocks_with_bloom(&bloom_ba, 0, 5); + assert_eq!(blocks_b1, vec![]); + assert_eq!(blocks_b2, vec![]); + assert_eq!(blocks_ba, vec![1, 2]); + + // fork back + bc.insert_block(&b3, vec![]); + let blocks_b1 = bc.blocks_with_bloom(&bloom_b1, 0, 5); + let blocks_b2 = bc.blocks_with_bloom(&bloom_b2, 0, 5); + let blocks_ba = bc.blocks_with_bloom(&bloom_ba, 0, 5); + assert_eq!(blocks_b1, vec![1]); + assert_eq!(blocks_b2, vec![2]); + assert_eq!(blocks_ba, vec![3]); + } + + #[test] + fn test_bloom_indexer() { + use chainfilter::BloomIndex; + use blockchain::BloomIndexer; + use extras::BlocksBloomLocation; + + let bi = BloomIndexer::new(16, 3); + + let index = BloomIndex::new(0, 0); + assert_eq!(bi.location(&index), BlocksBloomLocation { + hash: H256::new(), + index: 0 + }); + + let index = BloomIndex::new(1, 0); + assert_eq!(bi.location(&index), BlocksBloomLocation { + hash: H256::from_str("0000000000000000000000000000000000000000000000010000000000000000").unwrap(), + index: 0 + }); + + let index = BloomIndex::new(0, 299_999); + assert_eq!(bi.location(&index), BlocksBloomLocation { + hash: H256::from_str("000000000000000000000000000000000000000000000000000000000000493d").unwrap(), + index: 15 + }); + } } diff --git a/ethcore/src/chainfilter/bloomindex.rs b/ethcore/src/chainfilter/bloomindex.rs new file mode 100644 index 000000000..22785495e --- /dev/null +++ b/ethcore/src/chainfilter/bloomindex.rs @@ -0,0 +1,40 @@ +// Copyright 2015, 2016 Ethcore (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 . + +//! Represents bloom index in cache + +/// Represents bloom index in cache +/// +/// On cache level 0, every block bloom is represented by different index. +/// On higher cache levels, multiple block blooms are represented by one +/// index. Their `BloomIndex` can be created from block number and given level. +#[derive(Eq, PartialEq, Hash, Clone, Debug)] +pub struct BloomIndex { + /// Bloom level + pub level: u8, + /// Filter Index + pub index: usize, +} + +impl BloomIndex { + /// Default constructor for `BloomIndex` + pub fn new(level: u8, index: usize) -> BloomIndex { + BloomIndex { + level: level, + index: index, + } + } +} diff --git a/ethcore/src/chainfilter/blooms.txt b/ethcore/src/chainfilter/blooms.txt new file mode 100644 index 000000000..204186ec3 --- /dev/null +++ b/ethcore/src/chainfilter/blooms.txt @@ -0,0 +1,739 @@ +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/ethcore/src/chainfilter/chainfilter.rs b/ethcore/src/chainfilter/chainfilter.rs new file mode 100644 index 000000000..fb6df877a --- /dev/null +++ b/ethcore/src/chainfilter/chainfilter.rs @@ -0,0 +1,197 @@ +// Copyright 2015, 2016 Ethcore (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 . + +//! Multilevel blockchain bloom filter. +//! +//! ```not_run +//! extern crate ethcore_util as util; +//! extern crate ethcore; +//! use std::str::FromStr; +//! use util::sha3::*; +//! use util::hash::*; +//! use ethcore::chainfilter::*; +//! +//! fn main() { +//! let (index_size, bloom_levels) = (16, 3); +//! let mut cache = MemoryCache::new(); +//! +//! let address = Address::from_str("ef2d6d194084c2de36e0dabfce45d046b37d1106").unwrap(); +//! +//! // borrow cache for reading inside the scope +//! let modified_blooms = { +//! let filter = ChainFilter::new(&cache, index_size, bloom_levels); +//! let block_number = 39; +//! let mut bloom = H2048::new(); +//! bloom.shift_bloomed(&address.sha3()); +//! filter.add_bloom(&bloom, block_number) +//! }; +//! +//! // number of updated blooms is equal number of levels +//! assert_eq!(modified_blooms.len(), bloom_levels as usize); +//! +//! // lets inserts modified blooms into the cache +//! cache.insert_blooms(modified_blooms); +//! +//! // borrow cache for another reading operations +//! { +//! let filter = ChainFilter::new(&cache, index_size, bloom_levels); +//! let blocks = filter.blocks_with_address(&address, 10, 40); +//! assert_eq!(blocks.len(), 1); +//! assert_eq!(blocks[0], 39); +//! } +//! } +//! ``` +//! +use std::collections::{HashMap}; +use util::hash::*; +use chainfilter::{BloomIndex, FilterDataSource}; +use chainfilter::indexer::Indexer; + +/// Should be used for search operations on blockchain. +pub struct ChainFilter<'a, D> + where D: FilterDataSource + 'a +{ + data_source: &'a D, + indexer: Indexer, +} + +impl<'a, D> ChainFilter<'a, D> where D: FilterDataSource +{ + /// Creates new filter instance. + /// + /// Borrows `FilterDataSource` for reading. + pub fn new(data_source: &'a D, index_size: usize, levels: u8) -> Self { + ChainFilter { + data_source: data_source, + indexer: Indexer::new(index_size, levels) + } + } + + /// internal function which does bloom search recursively + fn blocks(&self, bloom: &H2048, from_block: usize, to_block: usize, level: u8, offset: usize) -> Option> { + let index = self.indexer.bloom_index(offset, level); + + match self.data_source.bloom_at_index(&index) { + None => return None, + Some(level_bloom) => match level { + // if we are on the lowest level + 0 => return match offset < to_block { + // take the value if its smaller than to_block + true if level_bloom.contains(bloom) => Some(vec![offset]), + // return None if it is is equal to to_block + _ => None + }, + // return None if current level doesnt contain given bloom + _ if !level_bloom.contains(bloom) => return None, + // continue processing && go down + _ => () + } + }; + + let level_size = self.indexer.level_size(level - 1); + let from_index = self.indexer.bloom_index(from_block, level - 1); + let to_index = self.indexer.bloom_index(to_block, level - 1); + let res: Vec = self.indexer.lower_level_bloom_indexes(&index).into_iter() + // chose only blooms in range + .filter(|li| li.index >= from_index.index && li.index <= to_index.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(bloom, from_block, to_block, level - 1, off)) + // flatten nested structures + .flat_map(|v| v) + .collect(); + Some(res) + } + + /// Adds new bloom to all filter levels + pub fn add_bloom(&self, bloom: &H2048, block_number: usize) -> HashMap { + let mut result: HashMap = HashMap::new(); + + for level in 0..self.indexer.levels() { + let bloom_index = self.indexer.bloom_index(block_number, level); + let new_bloom = match self.data_source.bloom_at_index(&bloom_index) { + Some(old_bloom) => old_bloom | bloom.clone(), + None => bloom.clone(), + }; + + result.insert(bloom_index, new_bloom); + } + + result + } + + /// Resets blooms at level 0 and forces rebuild on higher levels. + pub fn reset_chain_head(&self, blooms: &[H2048], block_number: usize, old_highest_block: usize) -> HashMap { + let mut result: HashMap = HashMap::new(); + + // insert all new blooms at level 0 + for (i, bloom) in blooms.iter().enumerate() { + result.insert(self.indexer.bloom_index(block_number + i, 0), bloom.clone()); + } + + // reset the rest of blooms + for reset_number in block_number + blooms.len()..(old_highest_block + 1) { + result.insert(self.indexer.bloom_index(reset_number, 0), H2048::new()); + } + + for level in 1..self.indexer.levels() { + for i in 0..blooms.len() { + + let index = self.indexer.bloom_index(block_number + i, level); + let new_bloom = { + // use new blooms before db blooms where necessary + let bloom_at = | index | { result.get(&index).cloned().or_else(|| self.data_source.bloom_at_index(&index)) }; + + self.indexer.lower_level_bloom_indexes(&index) + .into_iter() + // get blooms + // filter existing ones + .filter_map(bloom_at) + // BitOr all of them + .fold(H2048::new(), |acc, bloom| acc | bloom) + }; + + result.insert(index, new_bloom); + } + } + + result + } + + /// Returns numbers of blocks that may log bloom. + pub fn blocks_with_bloom(&self, bloom: &H2048, from_block: usize, to_block: usize) -> Vec { + let mut result = vec![]; + // lets start from highest level + let max_level = self.indexer.max_level(); + let level_size = self.indexer.level_size(max_level); + let from_index = self.indexer.bloom_index(from_block, max_level); + let to_index = self.indexer.bloom_index(to_block, max_level); + + for index in from_index.index..to_index.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(bloom, from_block, to_block, max_level, offset) { + result.extend(blocks); + } + } + + result + } +} diff --git a/ethcore/src/chainfilter/indexer.rs b/ethcore/src/chainfilter/indexer.rs new file mode 100644 index 000000000..524fab1a9 --- /dev/null +++ b/ethcore/src/chainfilter/indexer.rs @@ -0,0 +1,154 @@ +// Copyright 2015, 2016 Ethcore (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 . + +//! Simplifies working with bloom indexes. + +use chainfilter::BloomIndex; + +/// Simplifies working with bloom indexes. +pub struct Indexer { + index_size: usize, + level_sizes: Vec, +} + +impl Indexer { + /// Creates new indexer. + pub fn new(index_size: usize, levels: u8) -> Self { + if levels == 0 { + panic!("Indexer 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 as usize - 1) + .collect::>()); + + Indexer { + index_size: index_size, + level_sizes: level_sizes, + } + } + + /// unsafely get level size. + pub fn level_size(&self, level: u8) -> usize { + self.level_sizes[level as usize] + } + + /// Converts block number and level to `BloomIndex`. + pub fn bloom_index(&self, block_number: usize, level: u8) -> BloomIndex { + BloomIndex { + 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_bloom_indexes(&self, index: &BloomIndex) -> 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| BloomIndex::new(new_level, offset + i)).collect() + } + + /// Return number of levels. + pub fn levels(&self) -> u8 { + self.level_sizes.len() as u8 + } + + /// Returns max indexer level. + pub fn max_level(&self) -> u8 { + self.level_sizes.len() as u8 - 1 + } +} + +#[cfg(test)] +mod tests { + use chainfilter::BloomIndex; + use chainfilter::indexer::Indexer; + + #[test] + fn test_level_size() { + let indexer = Indexer::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_bloom_index() { + let indexer = Indexer::new(16, 3); + + let bi0 = indexer.bloom_index(0, 0); + assert_eq!(bi0.level, 0); + assert_eq!(bi0.index, 0); + + let bi1 = indexer.bloom_index(1, 0); + assert_eq!(bi1.level, 0); + assert_eq!(bi1.index, 1); + + let bi2 = indexer.bloom_index(2, 0); + assert_eq!(bi2.level, 0); + assert_eq!(bi2.index, 2); + + let bi3 = indexer.bloom_index(3, 1); + assert_eq!(bi3.level, 1); + assert_eq!(bi3.index, 0); + + let bi4 = indexer.bloom_index(15, 1); + assert_eq!(bi4.level, 1); + assert_eq!(bi4.index, 0); + + let bi5 = indexer.bloom_index(16, 1); + assert_eq!(bi5.level, 1); + assert_eq!(bi5.index, 1); + + let bi6 = indexer.bloom_index(255, 2); + assert_eq!(bi6.level, 2); + assert_eq!(bi6.index, 0); + + let bi7 = indexer.bloom_index(256, 2); + assert_eq!(bi7.level, 2); + assert_eq!(bi7.index, 1); + } + + #[test] + fn test_lower_level_bloom_indexes() { + let indexer = Indexer::new(16, 3); + + let bi = indexer.bloom_index(256, 2); + assert_eq!(bi.level, 2); + assert_eq!(bi.index, 1); + + let mut ebis = vec![]; + for i in 16..32 { + ebis.push(BloomIndex::new(1, i)); + } + + let bis = indexer.lower_level_bloom_indexes(&bi); + assert_eq!(ebis, bis); + } +} diff --git a/ethcore/src/chainfilter/logs.txt b/ethcore/src/chainfilter/logs.txt new file mode 100644 index 000000000..2127af242 --- /dev/null +++ b/ethcore/src/chainfilter/logs.txt @@ -0,0 +1,1013 @@ +300054 0x33990122638b9132ca29c723bdf037f1a891a70c 0xa6697e974e6a320f454390be03f74955e8978f1a6971ea6730542e37b66179bc 0x4d617274696e0000000000000000000000000000000000000000000000000000 +300059 0x7011f3edc7fa43c81440f9f43a6458174113b162 0x66d0ee9ee580464eb06bb7adef164c593ad3173da5b9937511307bb4646d392e 0x0000000000000000000000000000000000000000000000000000000000000059 +300221 0xef2d6d194084c2de36e0dabfce45d046b37d1106 0x02c69be41d0b7e40352fc85be1cd65eb03d40ef8427a0ca4596b1ead9a00e9fc +301826 0xfadd0c5d206310344a31711da36ac89a7baeb388 0xe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c +303166 0xef2d6d194084c2de36e0dabfce45d046b37d1106 0x6c692d39f4045f32ff9259df5b527f0ebf04abdbbb44231574a0e5398ff21fae 0x0000000000000000000000000000000000000000000000000000000000000738 +303345 0xef2d6d194084c2de36e0dabfce45d046b37d1106 0x02c69be41d0b7e40352fc85be1cd65eb03d40ef8427a0ca4596b1ead9a00e9fc +303379 0xe881af13bf55c97562fe8d2da2f6ea8e3ff66f98 0x1250e52636eed438f884679df55d2911cf41764cf8b2da1bd22d29b0eb14f80e 0x0000000000000000000000001db3439a222c519ab44bb1144fc28167b4fa6ee6 0x0000000000000000000000000000000000000000000000000000000000000000 +303379 0xe881af13bf55c97562fe8d2da2f6ea8e3ff66f98 0x8d936b1bd3fc635710969ccfba471fb17d598d9d1971b538dd712e1e4b4f4dba 0x0000000000000000000000001db3439a222c519ab44bb1144fc28167b4fa6ee6 0x000000000000000000000000d8da6bf26964af9d7eed9e03e53415d37aa96045 0x0000000000000000000000000000000000000000000000000000000000000000 +303388 0xe881af13bf55c97562fe8d2da2f6ea8e3ff66f98 0x1250e52636eed438f884679df55d2911cf41764cf8b2da1bd22d29b0eb14f80e 0x000000000000000000000000abad6ec946eff02b22e4050b3209da87380b3cbd 0x0000000000000000000000000000000000000000000000000000000000000001 +303388 0xe881af13bf55c97562fe8d2da2f6ea8e3ff66f98 0x8d936b1bd3fc635710969ccfba471fb17d598d9d1971b538dd712e1e4b4f4dba 0x0000000000000000000000001db3439a222c519ab44bb1144fc28167b4fa6ee6 0x000000000000000000000000d8da6bf26964af9d7eed9e03e53415d37aa96045 0x0000000000000000000000000000000000000000000000000000000000000001 +303621 0x584aeb8bcb61e5c1a84d167c2511abf581713495 0x16cdf1707799c6655baac6e210f52b94b7cec08adcaf9ede7dfe8649da926146 0x00000000000000000000000071353366b3ca768968ea084167655e1cc09938f2 0x000000000000000000000000302f330f8fb5f122b388acb8d85ccb0e712bb5ff +303670 0x035e62c27a2338d6ed147ec45d2779990a4c3b00 0xe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c +303674 0x035e62c27a2338d6ed147ec45d2779990a4c3b00 0x92ca3a80853e6663fa31fa10b99225f18d4902939b4c53a9caae9043f6efd004 +303683 0x035e62c27a2338d6ed147ec45d2779990a4c3b00 0xe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c +303689 0x035e62c27a2338d6ed147ec45d2779990a4c3b00 0xe1c52dc63b719ade82e8bea94cc41a0d5d28e4aaf536adb5e9cccc9ff8c1aeda +303689 0x035e62c27a2338d6ed147ec45d2779990a4c3b00 0x1733cbb53659d713b79580f79f3f9ff215f78a7c7aa45890f3b89fc5cddfbf32 +303692 0x035e62c27a2338d6ed147ec45d2779990a4c3b00 0xe1c52dc63b719ade82e8bea94cc41a0d5d28e4aaf536adb5e9cccc9ff8c1aeda +303692 0x035e62c27a2338d6ed147ec45d2779990a4c3b00 0xe7c957c06e9a662c1a6c77366179f5b702b97651dc28eee7d5bf1dff6e40bb4a +303716 0x035e62c27a2338d6ed147ec45d2779990a4c3b00 0x92ca3a80853e6663fa31fa10b99225f18d4902939b4c53a9caae9043f6efd004 +303717 0x035e62c27a2338d6ed147ec45d2779990a4c3b00 0x92ca3a80853e6663fa31fa10b99225f18d4902939b4c53a9caae9043f6efd004 +303748 0x035e62c27a2338d6ed147ec45d2779990a4c3b00 0xe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c +303756 0x035e62c27a2338d6ed147ec45d2779990a4c3b00 0xe1c52dc63b719ade82e8bea94cc41a0d5d28e4aaf536adb5e9cccc9ff8c1aeda +303756 0x035e62c27a2338d6ed147ec45d2779990a4c3b00 0x1733cbb53659d713b79580f79f3f9ff215f78a7c7aa45890f3b89fc5cddfbf32 +303758 0x035e62c27a2338d6ed147ec45d2779990a4c3b00 0xe1c52dc63b719ade82e8bea94cc41a0d5d28e4aaf536adb5e9cccc9ff8c1aeda +303758 0x035e62c27a2338d6ed147ec45d2779990a4c3b00 0xe7c957c06e9a662c1a6c77366179f5b702b97651dc28eee7d5bf1dff6e40bb4a +304090 0x9c667b7ea8ac2a0cc7e73544625d692f72175489 0x17eed4a0a175f46e59877d4b2bd56f2ed7d59d3d1b2dfa7b0867183c528423f8 0x0000000000000000000000000000000000000000000000000000000000000001 +304095 0x9c667b7ea8ac2a0cc7e73544625d692f72175489 0x17eed4a0a175f46e59877d4b2bd56f2ed7d59d3d1b2dfa7b0867183c528423f8 0x0000000000000000000000000000000000000000000000000000000000000002 +304107 0x9c667b7ea8ac2a0cc7e73544625d692f72175489 0x17eed4a0a175f46e59877d4b2bd56f2ed7d59d3d1b2dfa7b0867183c528423f8 0x0000000000000000000000000000000000000000000000000000000000000003 +304113 0x9c667b7ea8ac2a0cc7e73544625d692f72175489 0x17eed4a0a175f46e59877d4b2bd56f2ed7d59d3d1b2dfa7b0867183c528423f8 0x0000000000000000000000000000000000000000000000000000000000000004 +304222 0x9c667b7ea8ac2a0cc7e73544625d692f72175489 0x17eed4a0a175f46e59877d4b2bd56f2ed7d59d3d1b2dfa7b0867183c528423f8 0x0000000000000000000000000000000000000000000000000000000000000005 +304245 0x9c667b7ea8ac2a0cc7e73544625d692f72175489 0x17eed4a0a175f46e59877d4b2bd56f2ed7d59d3d1b2dfa7b0867183c528423f8 0x0000000000000000000000000000000000000000000000000000000000000006 +304247 0x4d498b18abcf83a15d3364d7419a4ef382982c7d 0x7d596234f9de8bba372a6b76656b35620eb6a5211bb764a81b1891567aed662a 0x0000000000000000000000000000000000000000000000000000000000000067 +304247 0x9c667b7ea8ac2a0cc7e73544625d692f72175489 0xe1a3670bcee4a697f1f4341b87487549f80e87998434bb9c2c08c73966d0766d 0x0000000000000000000000000000000000000000000000000000000000000006 0x0000000000000000000000000000000000000000000000000000000000000067 0x0000000000000000000000004d498b18abcf83a15d3364d7419a4ef382982c7d +304312 0x33990122638b9132ca29c723bdf037f1a891a70c 0xa6697e974e6a320f454390be03f74955e8978f1a6971ea6730542e37b66179bc 0x506c616e657468657265756d0000000000000000000000000000000000000000 +304319 0x33990122638b9132ca29c723bdf037f1a891a70c 0xf63780e752c6a54a94fc52715dbc5518a3b4c3c2833d301a204226548a2a8545 0x506c616e657468657265756d0000000000000000000000000000000000000000 0x0000000000000000000000008394a052eb6c32fb9defcaabc12fcbd8fea0b8a8 +304319 0x33990122638b9132ca29c723bdf037f1a891a70c 0xa6697e974e6a320f454390be03f74955e8978f1a6971ea6730542e37b66179bc 0x506c616e657468657265756d0000000000000000000000000000000000000000 +304367 0x33990122638b9132ca29c723bdf037f1a891a70c 0xa6697e974e6a320f454390be03f74955e8978f1a6971ea6730542e37b66179bc 0x7261626269740000000000000000000000000000000000000000000000000000 +304375 0xb70ca79ffad5f6ddff259bd07089a9c771e32711 0xc86aa3e5b1bc5a674de25655f9a3ccf734594e22d008e71d7ede3fe5c93e1384 +304375 0x33990122638b9132ca29c723bdf037f1a891a70c 0xf63780e752c6a54a94fc52715dbc5518a3b4c3c2833d301a204226548a2a8545 0x7261626269740000000000000000000000000000000000000000000000000000 0x000000000000000000000000f50466e3f27955334fff159e9d6e325c11eb85d6 +304375 0x33990122638b9132ca29c723bdf037f1a891a70c 0xa6697e974e6a320f454390be03f74955e8978f1a6971ea6730542e37b66179bc 0x7261626269740000000000000000000000000000000000000000000000000000 +304407 0xb70ca79ffad5f6ddff259bd07089a9c771e32711 0xc86aa3e5b1bc5a674de25655f9a3ccf734594e22d008e71d7ede3fe5c93e1384 +304431 0xb70ca79ffad5f6ddff259bd07089a9c771e32711 0xe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c +304433 0xb70ca79ffad5f6ddff259bd07089a9c771e32711 0xe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c +304608 0x7d00703c96bcd2b2af420cf165241396528b5e99 0x16cdf1707799c6655baac6e210f52b94b7cec08adcaf9ede7dfe8649da926146 +304609 0x7d00703c96bcd2b2af420cf165241396528b5e99 0x16cdf1707799c6655baac6e210f52b94b7cec08adcaf9ede7dfe8649da926146 +304788 0xb70ca79ffad5f6ddff259bd07089a9c771e32711 0xe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c +304794 0xb70ca79ffad5f6ddff259bd07089a9c771e32711 0xe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c +304819 0xb70ca79ffad5f6ddff259bd07089a9c771e32711 0xe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c +304835 0xb70ca79ffad5f6ddff259bd07089a9c771e32711 0xc86aa3e5b1bc5a674de25655f9a3ccf734594e22d008e71d7ede3fe5c93e1384 +304849 0xb70ca79ffad5f6ddff259bd07089a9c771e32711 0xe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c +304856 0xb70ca79ffad5f6ddff259bd07089a9c771e32711 0xc86aa3e5b1bc5a674de25655f9a3ccf734594e22d008e71d7ede3fe5c93e1384 +304862 0xb70ca79ffad5f6ddff259bd07089a9c771e32711 0xc86aa3e5b1bc5a674de25655f9a3ccf734594e22d008e71d7ede3fe5c93e1384 +304872 0xb70ca79ffad5f6ddff259bd07089a9c771e32711 0xe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c +304881 0xb70ca79ffad5f6ddff259bd07089a9c771e32711 0xe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c +304902 0xb70ca79ffad5f6ddff259bd07089a9c771e32711 0xe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c +304996 0xb70ca79ffad5f6ddff259bd07089a9c771e32711 0xe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c +304999 0xb70ca79ffad5f6ddff259bd07089a9c771e32711 0xc86aa3e5b1bc5a674de25655f9a3ccf734594e22d008e71d7ede3fe5c93e1384 +305006 0xb70ca79ffad5f6ddff259bd07089a9c771e32711 0xe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c +305010 0xb70ca79ffad5f6ddff259bd07089a9c771e32711 0xc86aa3e5b1bc5a674de25655f9a3ccf734594e22d008e71d7ede3fe5c93e1384 +305425 0x33990122638b9132ca29c723bdf037f1a891a70c 0xa6697e974e6a320f454390be03f74955e8978f1a6971ea6730542e37b66179bc 0x427573696e657373000000000000000000000000000000000000000000000000 +305425 0x33990122638b9132ca29c723bdf037f1a891a70c 0xf63780e752c6a54a94fc52715dbc5518a3b4c3c2833d301a204226548a2a8545 0x427573696e657373000000000000000000000000000000000000000000000000 0x000000000000000000000000b48dafc23dc5f232f2e7a35a2d2bb1b4ab02c48a +305425 0x33990122638b9132ca29c723bdf037f1a891a70c 0xa6697e974e6a320f454390be03f74955e8978f1a6971ea6730542e37b66179bc 0x427573696e657373000000000000000000000000000000000000000000000000 +305445 0x33990122638b9132ca29c723bdf037f1a891a70c 0xa6697e974e6a320f454390be03f74955e8978f1a6971ea6730542e37b66179bc 0x4574686572000000000000000000000000000000000000000000000000000000 +305448 0x33990122638b9132ca29c723bdf037f1a891a70c 0xf63780e752c6a54a94fc52715dbc5518a3b4c3c2833d301a204226548a2a8545 0x4574686572000000000000000000000000000000000000000000000000000000 0x000000000000000000000000b56aea97a14a10f536fa4f770b900e12231a018e +305448 0x33990122638b9132ca29c723bdf037f1a891a70c 0xa6697e974e6a320f454390be03f74955e8978f1a6971ea6730542e37b66179bc 0x4574686572000000000000000000000000000000000000000000000000000000 +305450 0x33990122638b9132ca29c723bdf037f1a891a70c 0xa6697e974e6a320f454390be03f74955e8978f1a6971ea6730542e37b66179bc 0x46756e64696e6700000000000000000000000000000000000000000000000000 +305452 0x33990122638b9132ca29c723bdf037f1a891a70c 0xf63780e752c6a54a94fc52715dbc5518a3b4c3c2833d301a204226548a2a8545 0x46756e64696e6700000000000000000000000000000000000000000000000000 0x000000000000000000000000ace8a25b438c0d8c16cf578ddeb015fd1f714896 +305452 0x33990122638b9132ca29c723bdf037f1a891a70c 0xa6697e974e6a320f454390be03f74955e8978f1a6971ea6730542e37b66179bc 0x46756e64696e6700000000000000000000000000000000000000000000000000 +305454 0x33990122638b9132ca29c723bdf037f1a891a70c 0xa6697e974e6a320f454390be03f74955e8978f1a6971ea6730542e37b66179bc 0x436f696e00000000000000000000000000000000000000000000000000000000 +305457 0x33990122638b9132ca29c723bdf037f1a891a70c 0xa6697e974e6a320f454390be03f74955e8978f1a6971ea6730542e37b66179bc 0x7266696b6b690000000000000000000000000000000000000000000000000000 +305463 0x33990122638b9132ca29c723bdf037f1a891a70c 0xa6697e974e6a320f454390be03f74955e8978f1a6971ea6730542e37b66179bc 0x6461690000000000000000000000000000000000000000000000000000000000 +305464 0x33990122638b9132ca29c723bdf037f1a891a70c 0xf63780e752c6a54a94fc52715dbc5518a3b4c3c2833d301a204226548a2a8545 0x6461690000000000000000000000000000000000000000000000000000000000 0x000000000000000000000000968ea5eed1d40486a7f87991c3299d383a8e85d2 +305464 0x33990122638b9132ca29c723bdf037f1a891a70c 0xa6697e974e6a320f454390be03f74955e8978f1a6971ea6730542e37b66179bc 0x6461690000000000000000000000000000000000000000000000000000000000 +305468 0x33990122638b9132ca29c723bdf037f1a891a70c 0xa6697e974e6a320f454390be03f74955e8978f1a6971ea6730542e37b66179bc 0x77656966756e6400000000000000000000000000000000000000000000000000 +305488 0x33990122638b9132ca29c723bdf037f1a891a70c 0xa6697e974e6a320f454390be03f74955e8978f1a6971ea6730542e37b66179bc 0x5265776172647300000000000000000000000000000000000000000000000000 +305492 0x33990122638b9132ca29c723bdf037f1a891a70c 0xa6697e974e6a320f454390be03f74955e8978f1a6971ea6730542e37b66179bc 0x5553440000000000000000000000000000000000000000000000000000000000 +305492 0x33990122638b9132ca29c723bdf037f1a891a70c 0xf63780e752c6a54a94fc52715dbc5518a3b4c3c2833d301a204226548a2a8545 0x5553440000000000000000000000000000000000000000000000000000000000 0x000000000000000000000000b52f670a662fc87e9a976f50f7ed7c056b369684 +305492 0x33990122638b9132ca29c723bdf037f1a891a70c 0xa6697e974e6a320f454390be03f74955e8978f1a6971ea6730542e37b66179bc 0x5553440000000000000000000000000000000000000000000000000000000000 +305501 0x33990122638b9132ca29c723bdf037f1a891a70c 0xa6697e974e6a320f454390be03f74955e8978f1a6971ea6730542e37b66179bc 0x496e737572616e63650000000000000000000000000000000000000000000000 +305502 0x33990122638b9132ca29c723bdf037f1a891a70c 0xf63780e752c6a54a94fc52715dbc5518a3b4c3c2833d301a204226548a2a8545 0x496e737572616e63650000000000000000000000000000000000000000000000 0x0000000000000000000000004db56c006f6d9e2edf742438c7a7dc032a5c3025 +305502 0x33990122638b9132ca29c723bdf037f1a891a70c 0xa6697e974e6a320f454390be03f74955e8978f1a6971ea6730542e37b66179bc 0x496e737572616e63650000000000000000000000000000000000000000000000 +305510 0x33990122638b9132ca29c723bdf037f1a891a70c 0xa6697e974e6a320f454390be03f74955e8978f1a6971ea6730542e37b66179bc 0x5365780000000000000000000000000000000000000000000000000000000000 +305616 0x33990122638b9132ca29c723bdf037f1a891a70c 0xa6697e974e6a320f454390be03f74955e8978f1a6971ea6730542e37b66179bc 0x43616d706169676e000000000000000000000000000000000000000000000000 +305620 0x33990122638b9132ca29c723bdf037f1a891a70c 0xf63780e752c6a54a94fc52715dbc5518a3b4c3c2833d301a204226548a2a8545 0x43616d706169676e000000000000000000000000000000000000000000000000 0x00000000000000000000000076ff1940d6c15ae2ef8436de7564485770356076 +305620 0x33990122638b9132ca29c723bdf037f1a891a70c 0xa6697e974e6a320f454390be03f74955e8978f1a6971ea6730542e37b66179bc 0x43616d706169676e000000000000000000000000000000000000000000000000 +305622 0x33990122638b9132ca29c723bdf037f1a891a70c 0xa6697e974e6a320f454390be03f74955e8978f1a6971ea6730542e37b66179bc 0x4769667463617264000000000000000000000000000000000000000000000000 +305624 0x33990122638b9132ca29c723bdf037f1a891a70c 0xf63780e752c6a54a94fc52715dbc5518a3b4c3c2833d301a204226548a2a8545 0x4769667463617264000000000000000000000000000000000000000000000000 0x000000000000000000000000f8aaa4ccb80d0e047e9293619b47160e2c3b82d8 +305624 0x33990122638b9132ca29c723bdf037f1a891a70c 0xa6697e974e6a320f454390be03f74955e8978f1a6971ea6730542e37b66179bc 0x4769667463617264000000000000000000000000000000000000000000000000 +305626 0x33990122638b9132ca29c723bdf037f1a891a70c 0xa6697e974e6a320f454390be03f74955e8978f1a6971ea6730542e37b66179bc 0x4c6f616e73000000000000000000000000000000000000000000000000000000 +305626 0x33990122638b9132ca29c723bdf037f1a891a70c 0xf63780e752c6a54a94fc52715dbc5518a3b4c3c2833d301a204226548a2a8545 0x4c6f616e73000000000000000000000000000000000000000000000000000000 0x000000000000000000000000569a16c067a308a5ea90b15a7caeae8705500569 +305626 0x33990122638b9132ca29c723bdf037f1a891a70c 0xa6697e974e6a320f454390be03f74955e8978f1a6971ea6730542e37b66179bc 0x4c6f616e73000000000000000000000000000000000000000000000000000000 +305627 0x33990122638b9132ca29c723bdf037f1a891a70c 0xa6697e974e6a320f454390be03f74955e8978f1a6971ea6730542e37b66179bc 0x53686f7070696e67000000000000000000000000000000000000000000000000 +305629 0x33990122638b9132ca29c723bdf037f1a891a70c 0xf63780e752c6a54a94fc52715dbc5518a3b4c3c2833d301a204226548a2a8545 0x53686f7070696e67000000000000000000000000000000000000000000000000 0x00000000000000000000000068057d1adb313d52890691adf051df3000a3d57d +305629 0x33990122638b9132ca29c723bdf037f1a891a70c 0xa6697e974e6a320f454390be03f74955e8978f1a6971ea6730542e37b66179bc 0x53686f7070696e67000000000000000000000000000000000000000000000000 +305634 0x33990122638b9132ca29c723bdf037f1a891a70c 0xa6697e974e6a320f454390be03f74955e8978f1a6971ea6730542e37b66179bc 0x4164647265737300000000000000000000000000000000000000000000000000 +305634 0x33990122638b9132ca29c723bdf037f1a891a70c 0xf63780e752c6a54a94fc52715dbc5518a3b4c3c2833d301a204226548a2a8545 0x4164647265737300000000000000000000000000000000000000000000000000 0x000000000000000000000000ea5511d3653d36fb55b53948d23e55a23c4fead7 +305634 0x33990122638b9132ca29c723bdf037f1a891a70c 0xa6697e974e6a320f454390be03f74955e8978f1a6971ea6730542e37b66179bc 0x4164647265737300000000000000000000000000000000000000000000000000 +305826 0x33990122638b9132ca29c723bdf037f1a891a70c 0xa6697e974e6a320f454390be03f74955e8978f1a6971ea6730542e37b66179bc 0x4d6f6e6579000000000000000000000000000000000000000000000000000000 +305827 0x33990122638b9132ca29c723bdf037f1a891a70c 0xf63780e752c6a54a94fc52715dbc5518a3b4c3c2833d301a204226548a2a8545 0x4d6f6e6579000000000000000000000000000000000000000000000000000000 0x000000000000000000000000ef15babca7a972f141556571e5b08e3175cf97b2 +305827 0x33990122638b9132ca29c723bdf037f1a891a70c 0xa6697e974e6a320f454390be03f74955e8978f1a6971ea6730542e37b66179bc 0x4d6f6e6579000000000000000000000000000000000000000000000000000000 +305829 0x33990122638b9132ca29c723bdf037f1a891a70c 0xa6697e974e6a320f454390be03f74955e8978f1a6971ea6730542e37b66179bc 0x436f75706f6e7300000000000000000000000000000000000000000000000000 +305834 0x33990122638b9132ca29c723bdf037f1a891a70c 0xf63780e752c6a54a94fc52715dbc5518a3b4c3c2833d301a204226548a2a8545 0x436f75706f6e7300000000000000000000000000000000000000000000000000 0x000000000000000000000000a6cee167a6c4a531c6d16fdff7aa2de9f861cb07 +305834 0x33990122638b9132ca29c723bdf037f1a891a70c 0xa6697e974e6a320f454390be03f74955e8978f1a6971ea6730542e37b66179bc 0x436f75706f6e7300000000000000000000000000000000000000000000000000 +305839 0x33990122638b9132ca29c723bdf037f1a891a70c 0xa6697e974e6a320f454390be03f74955e8978f1a6971ea6730542e37b66179bc 0x4163636f756e7400000000000000000000000000000000000000000000000000 +305841 0x33990122638b9132ca29c723bdf037f1a891a70c 0xf63780e752c6a54a94fc52715dbc5518a3b4c3c2833d301a204226548a2a8545 0x4163636f756e7400000000000000000000000000000000000000000000000000 0x0000000000000000000000000ec0d6547c59c38a9105525f0c10ec4d4a0b1afb +305841 0x33990122638b9132ca29c723bdf037f1a891a70c 0xa6697e974e6a320f454390be03f74955e8978f1a6971ea6730542e37b66179bc 0x4163636f756e7400000000000000000000000000000000000000000000000000 +306889 0xfadd0c5d206310344a31711da36ac89a7baeb388 0xe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c +307290 0xfadd0c5d206310344a31711da36ac89a7baeb388 0xe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c +307508 0x33990122638b9132ca29c723bdf037f1a891a70c 0xa6697e974e6a320f454390be03f74955e8978f1a6971ea6730542e37b66179bc 0x5858580000000000000000000000000000000000000000000000000000000000 +307509 0x33990122638b9132ca29c723bdf037f1a891a70c 0xf63780e752c6a54a94fc52715dbc5518a3b4c3c2833d301a204226548a2a8545 0x5858580000000000000000000000000000000000000000000000000000000000 0x000000000000000000000000a61bfbbe1af5fde18193ffeffe9254b939d6de96 +307509 0x33990122638b9132ca29c723bdf037f1a891a70c 0xa6697e974e6a320f454390be03f74955e8978f1a6971ea6730542e37b66179bc 0x5858580000000000000000000000000000000000000000000000000000000000 +307513 0x33990122638b9132ca29c723bdf037f1a891a70c 0xa6697e974e6a320f454390be03f74955e8978f1a6971ea6730542e37b66179bc 0x537572696e616d65000000000000000000000000000000000000000000000000 +307519 0x33990122638b9132ca29c723bdf037f1a891a70c 0xa6697e974e6a320f454390be03f74955e8978f1a6971ea6730542e37b66179bc 0x546f797300000000000000000000000000000000000000000000000000000000 +307528 0x33990122638b9132ca29c723bdf037f1a891a70c 0xa6697e974e6a320f454390be03f74955e8978f1a6971ea6730542e37b66179bc 0x5757570000000000000000000000000000000000000000000000000000000000 +308010 0x37c8f253d780913bc2b2d63c4f13f991a9ce7880 0x02c69be41d0b7e40352fc85be1cd65eb03d40ef8427a0ca4596b1ead9a00e9fc +308115 0x035e62c27a2338d6ed147ec45d2779990a4c3b00 0x92ca3a80853e6663fa31fa10b99225f18d4902939b4c53a9caae9043f6efd004 +308124 0x035e62c27a2338d6ed147ec45d2779990a4c3b00 0xe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c +308127 0x035e62c27a2338d6ed147ec45d2779990a4c3b00 0x92ca3a80853e6663fa31fa10b99225f18d4902939b4c53a9caae9043f6efd004 +308157 0xd202f28e78e9802a95fe5b3d26785257fcf8493b 0xfb989cb0d132b51483b9258c1befbe92caa5f5b046af3dfdcc617dcf425af493 +308183 0x58db357c28947271c883b11bab4caaa445e0ebc0 0x02c69be41d0b7e40352fc85be1cd65eb03d40ef8427a0ca4596b1ead9a00e9fc +308190 0xd202f28e78e9802a95fe5b3d26785257fcf8493b 0xfb989cb0d132b51483b9258c1befbe92caa5f5b046af3dfdcc617dcf425af493 +308216 0x59a964f830b3593af88b3d5b2835938d7985fbae 0x02c69be41d0b7e40352fc85be1cd65eb03d40ef8427a0ca4596b1ead9a00e9fc +308224 0xd202f28e78e9802a95fe5b3d26785257fcf8493b 0xfb989cb0d132b51483b9258c1befbe92caa5f5b046af3dfdcc617dcf425af493 +308257 0xb70ca79ffad5f6ddff259bd07089a9c771e32711 0xe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c +308265 0xb70ca79ffad5f6ddff259bd07089a9c771e32711 0xe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c +308267 0xb70ca79ffad5f6ddff259bd07089a9c771e32711 0xe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c +308268 0xb70ca79ffad5f6ddff259bd07089a9c771e32711 0xe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c +308285 0xb70ca79ffad5f6ddff259bd07089a9c771e32711 0xe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c +308599 0xc699608dd050d140e37cd402efe8343abcce6cd3 0x9ce147531995c591b0b50012b20f7f6d0dea75281159a58b8637542388f14626 0x00000000000000000000000048175da4c20313bcb6b62d74937d3ff985885701 0x00000000000000000000000023b666fd0ef4778c7557c3e33b126c1f10211941 0xffffffffffffffffffffffffffffffffa0e7153557ae4b988c928492845e7919 +309175 0xfae0d03c4e98022a8c5f35843925d36baf0e51b3 0x16cdf1707799c6655baac6e210f52b94b7cec08adcaf9ede7dfe8649da926146 +309177 0xfae0d03c4e98022a8c5f35843925d36baf0e51b3 0x16cdf1707799c6655baac6e210f52b94b7cec08adcaf9ede7dfe8649da926146 +309184 0xfae0d03c4e98022a8c5f35843925d36baf0e51b3 0x16cdf1707799c6655baac6e210f52b94b7cec08adcaf9ede7dfe8649da926146 +309186 0xfae0d03c4e98022a8c5f35843925d36baf0e51b3 0x16cdf1707799c6655baac6e210f52b94b7cec08adcaf9ede7dfe8649da926146 +309190 0xfae0d03c4e98022a8c5f35843925d36baf0e51b3 0x16cdf1707799c6655baac6e210f52b94b7cec08adcaf9ede7dfe8649da926146 +309194 0xfae0d03c4e98022a8c5f35843925d36baf0e51b3 0x16cdf1707799c6655baac6e210f52b94b7cec08adcaf9ede7dfe8649da926146 +309198 0xfae0d03c4e98022a8c5f35843925d36baf0e51b3 0x16cdf1707799c6655baac6e210f52b94b7cec08adcaf9ede7dfe8649da926146 +309417 0xfadd0c5d206310344a31711da36ac89a7baeb388 0xe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c +309881 0x80603decb9f6326b05fec23c9a830d6cf506aa88 0xe842aea7a5f1b01049d752008c53c52890b1a6daf660cf39e8eec506112bbdf6 +309883 0x80603decb9f6326b05fec23c9a830d6cf506aa88 0xe842aea7a5f1b01049d752008c53c52890b1a6daf660cf39e8eec506112bbdf6 +309892 0x80603decb9f6326b05fec23c9a830d6cf506aa88 0xe842aea7a5f1b01049d752008c53c52890b1a6daf660cf39e8eec506112bbdf6 +310069 0xb70ca79ffad5f6ddff259bd07089a9c771e32711 0xc86aa3e5b1bc5a674de25655f9a3ccf734594e22d008e71d7ede3fe5c93e1384 +310114 0x89c7776f8ae736ce12a0b3309bcea8b4d24bfb12 0xe842aea7a5f1b01049d752008c53c52890b1a6daf660cf39e8eec506112bbdf6 +310116 0x89c7776f8ae736ce12a0b3309bcea8b4d24bfb12 0xe842aea7a5f1b01049d752008c53c52890b1a6daf660cf39e8eec506112bbdf6 +310177 0x89c7776f8ae736ce12a0b3309bcea8b4d24bfb12 0xe842aea7a5f1b01049d752008c53c52890b1a6daf660cf39e8eec506112bbdf6 +310177 0x89c7776f8ae736ce12a0b3309bcea8b4d24bfb12 0xe842aea7a5f1b01049d752008c53c52890b1a6daf660cf39e8eec506112bbdf6 +310177 0x89c7776f8ae736ce12a0b3309bcea8b4d24bfb12 0xe842aea7a5f1b01049d752008c53c52890b1a6daf660cf39e8eec506112bbdf6 +310533 0xb70ca79ffad5f6ddff259bd07089a9c771e32711 0xc86aa3e5b1bc5a674de25655f9a3ccf734594e22d008e71d7ede3fe5c93e1384 +310589 0x5f4c010748a890c8a28a4858fe7b07048d194380 0x16cdf1707799c6655baac6e210f52b94b7cec08adcaf9ede7dfe8649da926146 +310592 0x5f4c010748a890c8a28a4858fe7b07048d194380 0x16cdf1707799c6655baac6e210f52b94b7cec08adcaf9ede7dfe8649da926146 +310599 0x5f4c010748a890c8a28a4858fe7b07048d194380 0x16cdf1707799c6655baac6e210f52b94b7cec08adcaf9ede7dfe8649da926146 +310601 0x5f4c010748a890c8a28a4858fe7b07048d194380 0x16cdf1707799c6655baac6e210f52b94b7cec08adcaf9ede7dfe8649da926146 +310604 0x5f4c010748a890c8a28a4858fe7b07048d194380 0x16cdf1707799c6655baac6e210f52b94b7cec08adcaf9ede7dfe8649da926146 +311317 0xfae0d03c4e98022a8c5f35843925d36baf0e51b3 0x16cdf1707799c6655baac6e210f52b94b7cec08adcaf9ede7dfe8649da926146 +311758 0xfadd0c5d206310344a31711da36ac89a7baeb388 0xe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c +311858 0xb912acab51206235b6082bcbd2cb88a5fb485a8f 0x16cdf1707799c6655baac6e210f52b94b7cec08adcaf9ede7dfe8649da926146 +311859 0xb912acab51206235b6082bcbd2cb88a5fb485a8f 0x16cdf1707799c6655baac6e210f52b94b7cec08adcaf9ede7dfe8649da926146 +311865 0xb912acab51206235b6082bcbd2cb88a5fb485a8f 0x16cdf1707799c6655baac6e210f52b94b7cec08adcaf9ede7dfe8649da926146 +311888 0xb912acab51206235b6082bcbd2cb88a5fb485a8f 0x16cdf1707799c6655baac6e210f52b94b7cec08adcaf9ede7dfe8649da926146 +312096 0xb7871c70fcba963f502f5b25ca39932820f23206 0xe842aea7a5f1b01049d752008c53c52890b1a6daf660cf39e8eec506112bbdf6 +312124 0xb7871c70fcba963f502f5b25ca39932820f23206 0xe842aea7a5f1b01049d752008c53c52890b1a6daf660cf39e8eec506112bbdf6 +312124 0xb7871c70fcba963f502f5b25ca39932820f23206 0xe842aea7a5f1b01049d752008c53c52890b1a6daf660cf39e8eec506112bbdf6 +312367 0x5e50225b8dccefd89dcbae96e73f71e59a4e2529 0xe842aea7a5f1b01049d752008c53c52890b1a6daf660cf39e8eec506112bbdf6 +312371 0x5e50225b8dccefd89dcbae96e73f71e59a4e2529 0xe842aea7a5f1b01049d752008c53c52890b1a6daf660cf39e8eec506112bbdf6 +312383 0x5e50225b8dccefd89dcbae96e73f71e59a4e2529 0xe842aea7a5f1b01049d752008c53c52890b1a6daf660cf39e8eec506112bbdf6 +313355 0x5f4c010748a890c8a28a4858fe7b07048d194380 0x16cdf1707799c6655baac6e210f52b94b7cec08adcaf9ede7dfe8649da926146 +313368 0xb70ca79ffad5f6ddff259bd07089a9c771e32711 0xc86aa3e5b1bc5a674de25655f9a3ccf734594e22d008e71d7ede3fe5c93e1384 +313507 0x8465dac1172b6abe303bead4d06125aed72ea01c 0xe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c +313526 0x8465dac1172b6abe303bead4d06125aed72ea01c 0x92ca3a80853e6663fa31fa10b99225f18d4902939b4c53a9caae9043f6efd004 +313724 0x5f4c010748a890c8a28a4858fe7b07048d194380 0x16cdf1707799c6655baac6e210f52b94b7cec08adcaf9ede7dfe8649da926146 +313789 0x5f4c010748a890c8a28a4858fe7b07048d194380 0x16cdf1707799c6655baac6e210f52b94b7cec08adcaf9ede7dfe8649da926146 +314190 0xfadd0c5d206310344a31711da36ac89a7baeb388 0xe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c +314375 0x7011f3edc7fa43c81440f9f43a6458174113b162 0x66d0ee9ee580464eb06bb7adef164c593ad3173da5b9937511307bb4646d392e 0x000000000000000000000000000000000000000000000000000000000000005a +315698 0xfa15b8c872f533cd40abfd055507f2907bcf1581 0x16cdf1707799c6655baac6e210f52b94b7cec08adcaf9ede7dfe8649da926146 +315705 0xfa15b8c872f533cd40abfd055507f2907bcf1581 0x16cdf1707799c6655baac6e210f52b94b7cec08adcaf9ede7dfe8649da926146 +315780 0xfa15b8c872f533cd40abfd055507f2907bcf1581 0x16cdf1707799c6655baac6e210f52b94b7cec08adcaf9ede7dfe8649da926146 +316726 0xde0b295669a9fd93d5f28d9ec85e40f4cb697bae 0xe1c52dc63b719ade82e8bea94cc41a0d5d28e4aaf536adb5e9cccc9ff8c1aeda +316726 0xde0b295669a9fd93d5f28d9ec85e40f4cb697bae 0x1733cbb53659d713b79580f79f3f9ff215f78a7c7aa45890f3b89fc5cddfbf32 +316747 0xfadd0c5d206310344a31711da36ac89a7baeb388 0xe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c +317179 0x035e62c27a2338d6ed147ec45d2779990a4c3b00 0x92ca3a80853e6663fa31fa10b99225f18d4902939b4c53a9caae9043f6efd004 +317522 0xe881af13bf55c97562fe8d2da2f6ea8e3ff66f98 0x1250e52636eed438f884679df55d2911cf41764cf8b2da1bd22d29b0eb14f80e 0x000000000000000000000000abad6ec946eff02b22e4050b3209da87380b3cbd 0x0000000000000000000000000000000000000000000000000000000000000002 +317522 0xe881af13bf55c97562fe8d2da2f6ea8e3ff66f98 0x8d936b1bd3fc635710969ccfba471fb17d598d9d1971b538dd712e1e4b4f4dba 0x0000000000000000000000001db3439a222c519ab44bb1144fc28167b4fa6ee6 0x000000000000000000000000d8da6bf26964af9d7eed9e03e53415d37aa96045 0x0000000000000000000000000000000000000000000000000000000000000002 +317526 0xb4a953f12f7418ed498a782ba47e5a7f5967091c 0xe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c +317536 0xe881af13bf55c97562fe8d2da2f6ea8e3ff66f98 0x1250e52636eed438f884679df55d2911cf41764cf8b2da1bd22d29b0eb14f80e 0x000000000000000000000000d8da6bf26964af9d7eed9e03e53415d37aa96045 0x0000000000000000000000000000000000000000000000000000000000000003 +317536 0xe881af13bf55c97562fe8d2da2f6ea8e3ff66f98 0x8d936b1bd3fc635710969ccfba471fb17d598d9d1971b538dd712e1e4b4f4dba 0x0000000000000000000000001db3439a222c519ab44bb1144fc28167b4fa6ee6 0x000000000000000000000000d8da6bf26964af9d7eed9e03e53415d37aa96045 0x0000000000000000000000000000000000000000000000000000000000000003 +317567 0xb4a953f12f7418ed498a782ba47e5a7f5967091c 0x92ca3a80853e6663fa31fa10b99225f18d4902939b4c53a9caae9043f6efd004 +317567 0xc630a71b2dfbcc621affd33257132b50adbe1cd0 0xe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c +317588 0xc630a71b2dfbcc621affd33257132b50adbe1cd0 0xe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c +317597 0xc630a71b2dfbcc621affd33257132b50adbe1cd0 0xe1c52dc63b719ade82e8bea94cc41a0d5d28e4aaf536adb5e9cccc9ff8c1aeda +317597 0xc630a71b2dfbcc621affd33257132b50adbe1cd0 0x1733cbb53659d713b79580f79f3f9ff215f78a7c7aa45890f3b89fc5cddfbf32 +317606 0xc630a71b2dfbcc621affd33257132b50adbe1cd0 0x92ca3a80853e6663fa31fa10b99225f18d4902939b4c53a9caae9043f6efd004 +317610 0xc630a71b2dfbcc621affd33257132b50adbe1cd0 0xe1c52dc63b719ade82e8bea94cc41a0d5d28e4aaf536adb5e9cccc9ff8c1aeda +317610 0xb4a953f12f7418ed498a782ba47e5a7f5967091c 0xe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c +317610 0xc630a71b2dfbcc621affd33257132b50adbe1cd0 0xe7c957c06e9a662c1a6c77366179f5b702b97651dc28eee7d5bf1dff6e40bb4a +317643 0xb4a953f12f7418ed498a782ba47e5a7f5967091c 0x92ca3a80853e6663fa31fa10b99225f18d4902939b4c53a9caae9043f6efd004 +317643 0x1c776e19850998177a7e33f6496c368bcabdce54 0xe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c +317646 0x1c776e19850998177a7e33f6496c368bcabdce54 0x92ca3a80853e6663fa31fa10b99225f18d4902939b4c53a9caae9043f6efd004 +317646 0xc630a71b2dfbcc621affd33257132b50adbe1cd0 0xe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c +317660 0xe881af13bf55c97562fe8d2da2f6ea8e3ff66f98 0x1250e52636eed438f884679df55d2911cf41764cf8b2da1bd22d29b0eb14f80e 0x000000000000000000000000d8da6bf26964af9d7eed9e03e53415d37aa96045 0x0000000000000000000000000000000000000000000000000000000000000004 +317660 0xe881af13bf55c97562fe8d2da2f6ea8e3ff66f98 0x8d936b1bd3fc635710969ccfba471fb17d598d9d1971b538dd712e1e4b4f4dba 0x0000000000000000000000001db3439a222c519ab44bb1144fc28167b4fa6ee6 0x000000000000000000000000d8da6bf26964af9d7eed9e03e53415d37aa96045 0x0000000000000000000000000000000000000000000000000000000000000004 +317957 0x8465dac1172b6abe303bead4d06125aed72ea01c 0xe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c +318030 0xfa15b8c872f533cd40abfd055507f2907bcf1581 0x16cdf1707799c6655baac6e210f52b94b7cec08adcaf9ede7dfe8649da926146 +318032 0xfa15b8c872f533cd40abfd055507f2907bcf1581 0x16cdf1707799c6655baac6e210f52b94b7cec08adcaf9ede7dfe8649da926146 +318033 0x7e2d0fe0ffdd78c264f8d40d19acb7d04390c6e8 0x1250e52636eed438f884679df55d2911cf41764cf8b2da1bd22d29b0eb14f80e 0x0000000000000000000000000000000000000000000000000000000000000000 0x0000000000000000000000005ed8cee6b63b1c6afce3ad7c92f4fd7e1b8fad9f +318033 0x7e2d0fe0ffdd78c264f8d40d19acb7d04390c6e8 0x8d936b1bd3fc635710969ccfba471fb17d598d9d1971b538dd712e1e4b4f4dba 0x0000000000000000000000001db3439a222c519ab44bb1144fc28167b4fa6ee6 0x000000000000000000000000d8da6bf26964af9d7eed9e03e53415d37aa96045 0x0000000000000000000000000000000000000000000000000000000000000000 +318034 0xfa15b8c872f533cd40abfd055507f2907bcf1581 0x16cdf1707799c6655baac6e210f52b94b7cec08adcaf9ede7dfe8649da926146 +318036 0xfa15b8c872f533cd40abfd055507f2907bcf1581 0x16cdf1707799c6655baac6e210f52b94b7cec08adcaf9ede7dfe8649da926146 +318036 0xfa15b8c872f533cd40abfd055507f2907bcf1581 0x16cdf1707799c6655baac6e210f52b94b7cec08adcaf9ede7dfe8649da926146 +318063 0x7e2d0fe0ffdd78c264f8d40d19acb7d04390c6e8 0x1250e52636eed438f884679df55d2911cf41764cf8b2da1bd22d29b0eb14f80e 0x0000000000000000000000000000000000000000000000000000000000000001 0x000000000000000000000000d8da6bf26964af9d7eed9e03e53415d37aa96045 +318063 0x7e2d0fe0ffdd78c264f8d40d19acb7d04390c6e8 0x8d936b1bd3fc635710969ccfba471fb17d598d9d1971b538dd712e1e4b4f4dba 0x0000000000000000000000001db3439a222c519ab44bb1144fc28167b4fa6ee6 0x0000000000000000000000005ed8cee6b63b1c6afce3ad7c92f4fd7e1b8fad9f 0x0000000000000000000000000000000000000000000000000000000000000001 +318074 0x7e2d0fe0ffdd78c264f8d40d19acb7d04390c6e8 0xcfa82ef0390c8f3e57ebe6c0665352a383667e792af012d350d9786ee5173d26 0x0000000000000000000000000000000000000000000000000000000000000000 0x0000000000000000000000001db3439a222c519ab44bb1144fc28167b4fa6ee6 +318074 0x7e2d0fe0ffdd78c264f8d40d19acb7d04390c6e8 0xd73429fe3d5eae9e487e60af3e9befceddbdbd53695543a735e2d8face8269d3 0x0000000000000000000000000000000000000000000000000000000000000000 +318096 0x7e2d0fe0ffdd78c264f8d40d19acb7d04390c6e8 0x1250e52636eed438f884679df55d2911cf41764cf8b2da1bd22d29b0eb14f80e 0x0000000000000000000000000000000000000000000000000000000000000002 0x0000000000000000000000005ed8cee6b63b1c6afce3ad7c92f4fd7e1b8fad9f +318096 0x7e2d0fe0ffdd78c264f8d40d19acb7d04390c6e8 0x8d936b1bd3fc635710969ccfba471fb17d598d9d1971b538dd712e1e4b4f4dba 0x0000000000000000000000001db3439a222c519ab44bb1144fc28167b4fa6ee6 0x000000000000000000000000d8da6bf26964af9d7eed9e03e53415d37aa96045 0x0000000000000000000000000000000000000000000000000000000000000002 +318137 0xfadd0c5d206310344a31711da36ac89a7baeb388 0xe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c +318528 0x7e2d0fe0ffdd78c264f8d40d19acb7d04390c6e8 0x1250e52636eed438f884679df55d2911cf41764cf8b2da1bd22d29b0eb14f80e 0x0000000000000000000000000000000000000000000000000000000000000003 0x0000000000000000000000001db3439a222c519ab44bb1144fc28167b4fa6ee6 +318528 0x7e2d0fe0ffdd78c264f8d40d19acb7d04390c6e8 0x8d936b1bd3fc635710969ccfba471fb17d598d9d1971b538dd712e1e4b4f4dba 0x000000000000000000000000d8da6bf26964af9d7eed9e03e53415d37aa96045 0x0000000000000000000000005ed8cee6b63b1c6afce3ad7c92f4fd7e1b8fad9f 0x0000000000000000000000000000000000000000000000000000000000000003 +318627 0x7e2d0fe0ffdd78c264f8d40d19acb7d04390c6e8 0x1250e52636eed438f884679df55d2911cf41764cf8b2da1bd22d29b0eb14f80e 0x0000000000000000000000000000000000000000000000000000000000000004 0x0000000000000000000000005ed8cee6b63b1c6afce3ad7c92f4fd7e1b8fad9f +318627 0x7e2d0fe0ffdd78c264f8d40d19acb7d04390c6e8 0x8d936b1bd3fc635710969ccfba471fb17d598d9d1971b538dd712e1e4b4f4dba 0x000000000000000000000000d8da6bf26964af9d7eed9e03e53415d37aa96045 0x0000000000000000000000001db3439a222c519ab44bb1144fc28167b4fa6ee6 0x0000000000000000000000000000000000000000000000000000000000000004 +318639 0x82afa2c4a686af9344e929f9821f3e8c6e9293ab 0x17af63cbc1fd2f415358d4edda52ede90159c09397285dcedaecb33c5a6d5e02 0x000000000000000000000000d8da6bf26964af9d7eed9e03e53415d37aa96045 +318639 0x82afa2c4a686af9344e929f9821f3e8c6e9293ab 0x82add6dcb5f515082d024c78eb6496fd6d7e1a037e33403f23188b6c568336e8 0x000000000000000000000000d8da6bf26964af9d7eed9e03e53415d37aa96045 +318650 0x82afa2c4a686af9344e929f9821f3e8c6e9293ab 0x82add6dcb5f515082d024c78eb6496fd6d7e1a037e33403f23188b6c568336e8 0x000000000000000000000000d8da6bf26964af9d7eed9e03e53415d37aa96045 +318653 0x82afa2c4a686af9344e929f9821f3e8c6e9293ab 0xc0c8fdc5261cd471b4cf986e1dc55c83e67bab22ff35c3a1e32ab700b8b7eef7 0x000000000000000000000000d8da6bf26964af9d7eed9e03e53415d37aa96045 +318904 0xc630a71b2dfbcc621affd33257132b50adbe1cd0 0xe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c +319523 0x7b6556b40a5a4d40118387495314f4445986239c 0x6c2b4666ba8da5a95717621d879a77de725f3d816709b9cbe9f059b8f875e284 +321346 0xfadd0c5d206310344a31711da36ac89a7baeb388 0xe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c +321884 0x5dc2e401e29ea16e51ebcecaef129c15fed5a5e8 0xd456720fd185d4060f5cea4d82775d2af95048c1e10f227ec35bae950a4be2a8 0x0000000000000000000000008674c218f0351a62c3ba78c34fd2182a93da94e2 +321900 0xde0b295669a9fd93d5f28d9ec85e40f4cb697bae 0xe1c52dc63b719ade82e8bea94cc41a0d5d28e4aaf536adb5e9cccc9ff8c1aeda +322038 0x5dc2e401e29ea16e51ebcecaef129c15fed5a5e8 0xd456720fd185d4060f5cea4d82775d2af95048c1e10f227ec35bae950a4be2a8 0x0000000000000000000000008674c218f0351a62c3ba78c34fd2182a93da94e2 +322041 0x5dc2e401e29ea16e51ebcecaef129c15fed5a5e8 0xd456720fd185d4060f5cea4d82775d2af95048c1e10f227ec35bae950a4be2a8 0x0000000000000000000000008674c218f0351a62c3ba78c34fd2182a93da94e2 +322043 0x5dc2e401e29ea16e51ebcecaef129c15fed5a5e8 0xd456720fd185d4060f5cea4d82775d2af95048c1e10f227ec35bae950a4be2a8 0x0000000000000000000000008674c218f0351a62c3ba78c34fd2182a93da94e2 +322047 0x5dc2e401e29ea16e51ebcecaef129c15fed5a5e8 0xd456720fd185d4060f5cea4d82775d2af95048c1e10f227ec35bae950a4be2a8 0x0000000000000000000000008674c218f0351a62c3ba78c34fd2182a93da94e2 +322048 0x5dc2e401e29ea16e51ebcecaef129c15fed5a5e8 0xd456720fd185d4060f5cea4d82775d2af95048c1e10f227ec35bae950a4be2a8 0x0000000000000000000000008674c218f0351a62c3ba78c34fd2182a93da94e2 +322056 0x5dc2e401e29ea16e51ebcecaef129c15fed5a5e8 0xd456720fd185d4060f5cea4d82775d2af95048c1e10f227ec35bae950a4be2a8 0x0000000000000000000000008674c218f0351a62c3ba78c34fd2182a93da94e2 +322059 0x7e2d0fe0ffdd78c264f8d40d19acb7d04390c6e8 0x1250e52636eed438f884679df55d2911cf41764cf8b2da1bd22d29b0eb14f80e 0x0000000000000000000000000000000000000000000000000000000000000005 0x0000000000000000000000005ed8cee6b63b1c6afce3ad7c92f4fd7e1b8fad9f +322059 0x7e2d0fe0ffdd78c264f8d40d19acb7d04390c6e8 0x8d936b1bd3fc635710969ccfba471fb17d598d9d1971b538dd712e1e4b4f4dba 0x000000000000000000000000d8da6bf26964af9d7eed9e03e53415d37aa96045 0x0000000000000000000000001db3439a222c519ab44bb1144fc28167b4fa6ee6 0x0000000000000000000000000000000000000000000000000000000000000005 +322083 0x5dc2e401e29ea16e51ebcecaef129c15fed5a5e8 0xd456720fd185d4060f5cea4d82775d2af95048c1e10f227ec35bae950a4be2a8 0x0000000000000000000000008674c218f0351a62c3ba78c34fd2182a93da94e2 +322090 0x5dc2e401e29ea16e51ebcecaef129c15fed5a5e8 0xd456720fd185d4060f5cea4d82775d2af95048c1e10f227ec35bae950a4be2a8 0x0000000000000000000000008674c218f0351a62c3ba78c34fd2182a93da94e2 +322108 0x7e2d0fe0ffdd78c264f8d40d19acb7d04390c6e8 0xcfa82ef0390c8f3e57ebe6c0665352a383667e792af012d350d9786ee5173d26 0x0000000000000000000000000000000000000000000000000000000000000002 0x000000000000000000000000d8da6bf26964af9d7eed9e03e53415d37aa96045 +322108 0x7e2d0fe0ffdd78c264f8d40d19acb7d04390c6e8 0xd73429fe3d5eae9e487e60af3e9befceddbdbd53695543a735e2d8face8269d3 0x0000000000000000000000000000000000000000000000000000000000000002 +322121 0x7e2d0fe0ffdd78c264f8d40d19acb7d04390c6e8 0xcfa82ef0390c8f3e57ebe6c0665352a383667e792af012d350d9786ee5173d26 0x0000000000000000000000000000000000000000000000000000000000000003 0x000000000000000000000000d8da6bf26964af9d7eed9e03e53415d37aa96045 +322121 0x7e2d0fe0ffdd78c264f8d40d19acb7d04390c6e8 0xd73429fe3d5eae9e487e60af3e9befceddbdbd53695543a735e2d8face8269d3 0x0000000000000000000000000000000000000000000000000000000000000003 +322121 0x7e2d0fe0ffdd78c264f8d40d19acb7d04390c6e8 0xcfa82ef0390c8f3e57ebe6c0665352a383667e792af012d350d9786ee5173d26 0x0000000000000000000000000000000000000000000000000000000000000005 0x000000000000000000000000d8da6bf26964af9d7eed9e03e53415d37aa96045 +322121 0x7e2d0fe0ffdd78c264f8d40d19acb7d04390c6e8 0xd73429fe3d5eae9e487e60af3e9befceddbdbd53695543a735e2d8face8269d3 0x0000000000000000000000000000000000000000000000000000000000000005 +322122 0x7e2d0fe0ffdd78c264f8d40d19acb7d04390c6e8 0xcfa82ef0390c8f3e57ebe6c0665352a383667e792af012d350d9786ee5173d26 0x0000000000000000000000000000000000000000000000000000000000000001 0x000000000000000000000000d8da6bf26964af9d7eed9e03e53415d37aa96045 +322122 0x7e2d0fe0ffdd78c264f8d40d19acb7d04390c6e8 0xd73429fe3d5eae9e487e60af3e9befceddbdbd53695543a735e2d8face8269d3 0x0000000000000000000000000000000000000000000000000000000000000001 +322128 0x7e2d0fe0ffdd78c264f8d40d19acb7d04390c6e8 0xcfa82ef0390c8f3e57ebe6c0665352a383667e792af012d350d9786ee5173d26 0x0000000000000000000000000000000000000000000000000000000000000004 0x000000000000000000000000d8da6bf26964af9d7eed9e03e53415d37aa96045 +322128 0x7e2d0fe0ffdd78c264f8d40d19acb7d04390c6e8 0xd73429fe3d5eae9e487e60af3e9befceddbdbd53695543a735e2d8face8269d3 0x0000000000000000000000000000000000000000000000000000000000000004 +322454 0x33990122638b9132ca29c723bdf037f1a891a70c 0xa6697e974e6a320f454390be03f74955e8978f1a6971ea6730542e37b66179bc 0x63726f0000000000000000000000000000000000000000000000000000000000 +322509 0x33990122638b9132ca29c723bdf037f1a891a70c 0xf63780e752c6a54a94fc52715dbc5518a3b4c3c2833d301a204226548a2a8545 0x63726f0000000000000000000000000000000000000000000000000000000000 0x000000000000000000000000d388d8671ac6edb904d91c1585dedbd6895b9ef8 +322509 0x33990122638b9132ca29c723bdf037f1a891a70c 0xa6697e974e6a320f454390be03f74955e8978f1a6971ea6730542e37b66179bc 0x63726f0000000000000000000000000000000000000000000000000000000000 +322550 0x8465dac1172b6abe303bead4d06125aed72ea01c 0x92ca3a80853e6663fa31fa10b99225f18d4902939b4c53a9caae9043f6efd004 +322749 0x7e2d0fe0ffdd78c264f8d40d19acb7d04390c6e8 0x1250e52636eed438f884679df55d2911cf41764cf8b2da1bd22d29b0eb14f80e 0x0000000000000000000000000000000000000000000000000000000000000006 0x0000000000000000000000005ed8cee6b63b1c6afce3ad7c92f4fd7e1b8fad9f +322749 0x7e2d0fe0ffdd78c264f8d40d19acb7d04390c6e8 0x8d936b1bd3fc635710969ccfba471fb17d598d9d1971b538dd712e1e4b4f4dba 0x000000000000000000000000d8da6bf26964af9d7eed9e03e53415d37aa96045 0x0000000000000000000000001db3439a222c519ab44bb1144fc28167b4fa6ee6 0x0000000000000000000000000000000000000000000000000000000000000006 +322750 0x33990122638b9132ca29c723bdf037f1a891a70c 0xa6697e974e6a320f454390be03f74955e8978f1a6971ea6730542e37b66179bc 0x41756374696f6e00000000000000000000000000000000000000000000000000 +322752 0x33990122638b9132ca29c723bdf037f1a891a70c 0xf63780e752c6a54a94fc52715dbc5518a3b4c3c2833d301a204226548a2a8545 0x41756374696f6e00000000000000000000000000000000000000000000000000 0x000000000000000000000000fd5c601a0d48ad075724af920a83b907d24620dd +322752 0x33990122638b9132ca29c723bdf037f1a891a70c 0xa6697e974e6a320f454390be03f74955e8978f1a6971ea6730542e37b66179bc 0x41756374696f6e00000000000000000000000000000000000000000000000000 +322758 0x33990122638b9132ca29c723bdf037f1a891a70c 0xa6697e974e6a320f454390be03f74955e8978f1a6971ea6730542e37b66179bc 0x4d6f727467616765000000000000000000000000000000000000000000000000 +322760 0x33990122638b9132ca29c723bdf037f1a891a70c 0xf63780e752c6a54a94fc52715dbc5518a3b4c3c2833d301a204226548a2a8545 0x4d6f727467616765000000000000000000000000000000000000000000000000 0x000000000000000000000000f32d6e7a9ae9c3d59b642fcfa95c0f03c0706561 +322760 0x33990122638b9132ca29c723bdf037f1a891a70c 0xa6697e974e6a320f454390be03f74955e8978f1a6971ea6730542e37b66179bc 0x4d6f727467616765000000000000000000000000000000000000000000000000 +322764 0x33990122638b9132ca29c723bdf037f1a891a70c 0xa6697e974e6a320f454390be03f74955e8978f1a6971ea6730542e37b66179bc 0x457363726f770000000000000000000000000000000000000000000000000000 +322765 0x33990122638b9132ca29c723bdf037f1a891a70c 0xf63780e752c6a54a94fc52715dbc5518a3b4c3c2833d301a204226548a2a8545 0x457363726f770000000000000000000000000000000000000000000000000000 0x000000000000000000000000091a096c2c75cd3bd6a80a8104a4c71a6f028483 +322765 0x33990122638b9132ca29c723bdf037f1a891a70c 0xa6697e974e6a320f454390be03f74955e8978f1a6971ea6730542e37b66179bc 0x457363726f770000000000000000000000000000000000000000000000000000 +322767 0x33990122638b9132ca29c723bdf037f1a891a70c 0xa6697e974e6a320f454390be03f74955e8978f1a6971ea6730542e37b66179bc 0x47756172616e7465650000000000000000000000000000000000000000000000 +322768 0x33990122638b9132ca29c723bdf037f1a891a70c 0xf63780e752c6a54a94fc52715dbc5518a3b4c3c2833d301a204226548a2a8545 0x47756172616e7465650000000000000000000000000000000000000000000000 0x000000000000000000000000439061363c1502dcb8ce7b08dab39b5aa321adf2 +322768 0x33990122638b9132ca29c723bdf037f1a891a70c 0xa6697e974e6a320f454390be03f74955e8978f1a6971ea6730542e37b66179bc 0x47756172616e7465650000000000000000000000000000000000000000000000 +322774 0x33990122638b9132ca29c723bdf037f1a891a70c 0xa6697e974e6a320f454390be03f74955e8978f1a6971ea6730542e37b66179bc 0x53616665436f6e74726163747300000000000000000000000000000000000000 +322776 0x33990122638b9132ca29c723bdf037f1a891a70c 0xf63780e752c6a54a94fc52715dbc5518a3b4c3c2833d301a204226548a2a8545 0x53616665436f6e74726163747300000000000000000000000000000000000000 0x0000000000000000000000002e6bfa82463744c2b1254f119fa101bc924f6f0b +322776 0x33990122638b9132ca29c723bdf037f1a891a70c 0xa6697e974e6a320f454390be03f74955e8978f1a6971ea6730542e37b66179bc 0x53616665436f6e74726163747300000000000000000000000000000000000000 +322777 0x33990122638b9132ca29c723bdf037f1a891a70c 0xa6697e974e6a320f454390be03f74955e8978f1a6971ea6730542e37b66179bc 0x53616665436f6e74726163740000000000000000000000000000000000000000 +322777 0x33990122638b9132ca29c723bdf037f1a891a70c 0xf63780e752c6a54a94fc52715dbc5518a3b4c3c2833d301a204226548a2a8545 0x53616665436f6e74726163740000000000000000000000000000000000000000 0x0000000000000000000000009a5cb02980fbae601ed890f01d38be76a47d8eeb +322777 0x33990122638b9132ca29c723bdf037f1a891a70c 0xa6697e974e6a320f454390be03f74955e8978f1a6971ea6730542e37b66179bc 0x53616665436f6e74726163740000000000000000000000000000000000000000 +324029 0xfadd0c5d206310344a31711da36ac89a7baeb388 0xe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c +324316 0x4d8875b5058c6bf9db0fba172114299eaa476a9d 0x8f38ec1c60ec4afc7e3dd2c41a94c0983104d82de715c0212bbfe4aca17ea3fb +324318 0x4d8875b5058c6bf9db0fba172114299eaa476a9d 0x5b6450564c0cb96f02986ab222d919319391faea73418fec4158904af177cdeb +324322 0x4d8875b5058c6bf9db0fba172114299eaa476a9d 0x80bb6e5f203cdbe2810b6446806301f07413ca83c2a9c7b0c1cc5b89853a55dd +325807 0xfadd0c5d206310344a31711da36ac89a7baeb388 0xe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c +326760 0xc7696b27830dd8aa4823a1cba8440c27c36adec4 0x39d732521214059f57de4c0f92879304394ef7c5e530a8708b7113a42f9f0878 0x0000000000000000000000002b051365221244a2baefb07e7ac1a291893e0867 +326760 0xc7696b27830dd8aa4823a1cba8440c27c36adec4 0x44bbf497379e88194e67c38a8b2e628ef3803579306f3fd2177ce81afb3d743f 0x0000000000000000000000002b051365221244a2baefb07e7ac1a291893e0867 +327103 0xfa15b8c872f533cd40abfd055507f2907bcf1581 0x16cdf1707799c6655baac6e210f52b94b7cec08adcaf9ede7dfe8649da926146 +327105 0xfa15b8c872f533cd40abfd055507f2907bcf1581 0x16cdf1707799c6655baac6e210f52b94b7cec08adcaf9ede7dfe8649da926146 +327227 0xde0b295669a9fd93d5f28d9ec85e40f4cb697bae 0xe1c52dc63b719ade82e8bea94cc41a0d5d28e4aaf536adb5e9cccc9ff8c1aeda +327399 0xc7696b27830dd8aa4823a1cba8440c27c36adec4 0x39d732521214059f57de4c0f92879304394ef7c5e530a8708b7113a42f9f0878 0x000000000000000000000000a2792b9f27a466a635649f551a4109a179b00fbf +327399 0xc7696b27830dd8aa4823a1cba8440c27c36adec4 0x44bbf497379e88194e67c38a8b2e628ef3803579306f3fd2177ce81afb3d743f 0x000000000000000000000000a2792b9f27a466a635649f551a4109a179b00fbf +327544 0xc7696b27830dd8aa4823a1cba8440c27c36adec4 0x39d732521214059f57de4c0f92879304394ef7c5e530a8708b7113a42f9f0878 0x000000000000000000000000a2792b9f27a466a635649f551a4109a179b00fbf +327544 0xc7696b27830dd8aa4823a1cba8440c27c36adec4 0x44bbf497379e88194e67c38a8b2e628ef3803579306f3fd2177ce81afb3d743f 0x000000000000000000000000a2792b9f27a466a635649f551a4109a179b00fbf +327690 0xc7696b27830dd8aa4823a1cba8440c27c36adec4 0x39d732521214059f57de4c0f92879304394ef7c5e530a8708b7113a42f9f0878 0x00000000000000000000000041c32b2f3c0e04b20d2c4f1605f0abc33c3cad67 +327690 0xc7696b27830dd8aa4823a1cba8440c27c36adec4 0x44bbf497379e88194e67c38a8b2e628ef3803579306f3fd2177ce81afb3d743f 0x00000000000000000000000041c32b2f3c0e04b20d2c4f1605f0abc33c3cad67 +328002 0x7011f3edc7fa43c81440f9f43a6458174113b162 0x66d0ee9ee580464eb06bb7adef164c593ad3173da5b9937511307bb4646d392e 0x000000000000000000000000000000000000000000000000000000000000005b +328269 0xfadd0c5d206310344a31711da36ac89a7baeb388 0xe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c +328529 0xc7696b27830dd8aa4823a1cba8440c27c36adec4 0x39d732521214059f57de4c0f92879304394ef7c5e530a8708b7113a42f9f0878 0x000000000000000000000000a2792b9f27a466a635649f551a4109a179b00fbf +328529 0xc7696b27830dd8aa4823a1cba8440c27c36adec4 0x44bbf497379e88194e67c38a8b2e628ef3803579306f3fd2177ce81afb3d743f 0x000000000000000000000000a2792b9f27a466a635649f551a4109a179b00fbf +328585 0xc7696b27830dd8aa4823a1cba8440c27c36adec4 0x39d732521214059f57de4c0f92879304394ef7c5e530a8708b7113a42f9f0878 0x000000000000000000000000d51059a3dedfa8032a64361a883a53e26ed6941c +328585 0xc7696b27830dd8aa4823a1cba8440c27c36adec4 0x44bbf497379e88194e67c38a8b2e628ef3803579306f3fd2177ce81afb3d743f 0x000000000000000000000000d51059a3dedfa8032a64361a883a53e26ed6941c +328870 0xc7696b27830dd8aa4823a1cba8440c27c36adec4 0x39d732521214059f57de4c0f92879304394ef7c5e530a8708b7113a42f9f0878 0x000000000000000000000000a2792b9f27a466a635649f551a4109a179b00fbf +328870 0xc7696b27830dd8aa4823a1cba8440c27c36adec4 0x44bbf497379e88194e67c38a8b2e628ef3803579306f3fd2177ce81afb3d743f 0x000000000000000000000000a2792b9f27a466a635649f551a4109a179b00fbf +329480 0x33990122638b9132ca29c723bdf037f1a891a70c 0xa6697e974e6a320f454390be03f74955e8978f1a6971ea6730542e37b66179bc 0x4368696e61000000000000000000000000000000000000000000000000000000 +329484 0x33990122638b9132ca29c723bdf037f1a891a70c 0xf63780e752c6a54a94fc52715dbc5518a3b4c3c2833d301a204226548a2a8545 0x4368696e61000000000000000000000000000000000000000000000000000000 0x00000000000000000000000080f3a701a57961f57752397d24a45f87127c361a +329484 0x33990122638b9132ca29c723bdf037f1a891a70c 0xa6697e974e6a320f454390be03f74955e8978f1a6971ea6730542e37b66179bc 0x4368696e61000000000000000000000000000000000000000000000000000000 +329485 0xc7696b27830dd8aa4823a1cba8440c27c36adec4 0x39d732521214059f57de4c0f92879304394ef7c5e530a8708b7113a42f9f0878 0x00000000000000000000000076b0f6b32c66c317699067f2d938bcf669f380ce +329485 0xc7696b27830dd8aa4823a1cba8440c27c36adec4 0x44bbf497379e88194e67c38a8b2e628ef3803579306f3fd2177ce81afb3d743f 0x00000000000000000000000076b0f6b32c66c317699067f2d938bcf669f380ce +329491 0xc7696b27830dd8aa4823a1cba8440c27c36adec4 0x39d732521214059f57de4c0f92879304394ef7c5e530a8708b7113a42f9f0878 0x00000000000000000000000076b0f6b32c66c317699067f2d938bcf669f380ce +329491 0xc7696b27830dd8aa4823a1cba8440c27c36adec4 0x44bbf497379e88194e67c38a8b2e628ef3803579306f3fd2177ce81afb3d743f 0x00000000000000000000000076b0f6b32c66c317699067f2d938bcf669f380ce +329513 0xc7696b27830dd8aa4823a1cba8440c27c36adec4 0x39d732521214059f57de4c0f92879304394ef7c5e530a8708b7113a42f9f0878 0x00000000000000000000000076b0f6b32c66c317699067f2d938bcf669f380ce +329513 0xc7696b27830dd8aa4823a1cba8440c27c36adec4 0x44bbf497379e88194e67c38a8b2e628ef3803579306f3fd2177ce81afb3d743f 0x00000000000000000000000076b0f6b32c66c317699067f2d938bcf669f380ce +329519 0xc7696b27830dd8aa4823a1cba8440c27c36adec4 0x39d732521214059f57de4c0f92879304394ef7c5e530a8708b7113a42f9f0878 0x00000000000000000000000076b0f6b32c66c317699067f2d938bcf669f380ce +329519 0xc7696b27830dd8aa4823a1cba8440c27c36adec4 0x44bbf497379e88194e67c38a8b2e628ef3803579306f3fd2177ce81afb3d743f 0x00000000000000000000000076b0f6b32c66c317699067f2d938bcf669f380ce +329659 0x33990122638b9132ca29c723bdf037f1a891a70c 0xa6697e974e6a320f454390be03f74955e8978f1a6971ea6730542e37b66179bc 0x5469636b65740000000000000000000000000000000000000000000000000000 +329659 0x33990122638b9132ca29c723bdf037f1a891a70c 0xf63780e752c6a54a94fc52715dbc5518a3b4c3c2833d301a204226548a2a8545 0x5469636b65740000000000000000000000000000000000000000000000000000 0x0000000000000000000000009f26df964012d16fdea7485bd4b7042b3007e217 +329659 0x33990122638b9132ca29c723bdf037f1a891a70c 0xa6697e974e6a320f454390be03f74955e8978f1a6971ea6730542e37b66179bc 0x5469636b65740000000000000000000000000000000000000000000000000000 +329667 0x33990122638b9132ca29c723bdf037f1a891a70c 0xa6697e974e6a320f454390be03f74955e8978f1a6971ea6730542e37b66179bc 0x446174696e670000000000000000000000000000000000000000000000000000 +329668 0x33990122638b9132ca29c723bdf037f1a891a70c 0xf63780e752c6a54a94fc52715dbc5518a3b4c3c2833d301a204226548a2a8545 0x446174696e670000000000000000000000000000000000000000000000000000 0x000000000000000000000000f5f5d1595aa8eca29cfdc9b62357f01c33d9bf20 +329668 0x33990122638b9132ca29c723bdf037f1a891a70c 0xa6697e974e6a320f454390be03f74955e8978f1a6971ea6730542e37b66179bc 0x446174696e670000000000000000000000000000000000000000000000000000 +329673 0x33990122638b9132ca29c723bdf037f1a891a70c 0xa6697e974e6a320f454390be03f74955e8978f1a6971ea6730542e37b66179bc 0x43616e6479000000000000000000000000000000000000000000000000000000 +329673 0x33990122638b9132ca29c723bdf037f1a891a70c 0xf63780e752c6a54a94fc52715dbc5518a3b4c3c2833d301a204226548a2a8545 0x43616e6479000000000000000000000000000000000000000000000000000000 0x000000000000000000000000f41830acc2a73021ff1c3381ac570b95d79d21d0 +329673 0x33990122638b9132ca29c723bdf037f1a891a70c 0xa6697e974e6a320f454390be03f74955e8978f1a6971ea6730542e37b66179bc 0x43616e6479000000000000000000000000000000000000000000000000000000 +329740 0x7011f3edc7fa43c81440f9f43a6458174113b162 0x66d0ee9ee580464eb06bb7adef164c593ad3173da5b9937511307bb4646d392e 0x000000000000000000000000000000000000000000000000000000000000005c +329749 0x33990122638b9132ca29c723bdf037f1a891a70c 0xa6697e974e6a320f454390be03f74955e8978f1a6971ea6730542e37b66179bc 0x57616c6c73747265657400000000000000000000000000000000000000000000 +329750 0x33990122638b9132ca29c723bdf037f1a891a70c 0xf63780e752c6a54a94fc52715dbc5518a3b4c3c2833d301a204226548a2a8545 0x57616c6c73747265657400000000000000000000000000000000000000000000 0x0000000000000000000000002fed81f556a6f7478249fadbb68621467e21d38c +329750 0x33990122638b9132ca29c723bdf037f1a891a70c 0xa6697e974e6a320f454390be03f74955e8978f1a6971ea6730542e37b66179bc 0x57616c6c73747265657400000000000000000000000000000000000000000000 +329824 0xc7696b27830dd8aa4823a1cba8440c27c36adec4 0x39d732521214059f57de4c0f92879304394ef7c5e530a8708b7113a42f9f0878 0x0000000000000000000000005c08761401d1a0904897c978787aa615a96e955c +329824 0xc7696b27830dd8aa4823a1cba8440c27c36adec4 0x44bbf497379e88194e67c38a8b2e628ef3803579306f3fd2177ce81afb3d743f 0x0000000000000000000000005c08761401d1a0904897c978787aa615a96e955c +329964 0xb8af70f84bfda39ccb2858f4fc54eca1b63dd519 0xe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c +330023 0xb8af70f84bfda39ccb2858f4fc54eca1b63dd519 0x92ca3a80853e6663fa31fa10b99225f18d4902939b4c53a9caae9043f6efd004 +330207 0xc7696b27830dd8aa4823a1cba8440c27c36adec4 0x39d732521214059f57de4c0f92879304394ef7c5e530a8708b7113a42f9f0878 0x000000000000000000000000e0ed85f0cab17dba645bf4fe745ca29359c2c21b +330207 0xc7696b27830dd8aa4823a1cba8440c27c36adec4 0x44bbf497379e88194e67c38a8b2e628ef3803579306f3fd2177ce81afb3d743f 0x000000000000000000000000e0ed85f0cab17dba645bf4fe745ca29359c2c21b +330473 0xc7696b27830dd8aa4823a1cba8440c27c36adec4 0x39d732521214059f57de4c0f92879304394ef7c5e530a8708b7113a42f9f0878 0x00000000000000000000000042244ccb6c7c889901960e60125ead7c2af685f8 +330473 0xc7696b27830dd8aa4823a1cba8440c27c36adec4 0x44bbf497379e88194e67c38a8b2e628ef3803579306f3fd2177ce81afb3d743f 0x00000000000000000000000042244ccb6c7c889901960e60125ead7c2af685f8 +330511 0xde0b295669a9fd93d5f28d9ec85e40f4cb697bae 0xe1c52dc63b719ade82e8bea94cc41a0d5d28e4aaf536adb5e9cccc9ff8c1aeda +330511 0xde0b295669a9fd93d5f28d9ec85e40f4cb697bae 0xe7c957c06e9a662c1a6c77366179f5b702b97651dc28eee7d5bf1dff6e40bb4a +330579 0xc7696b27830dd8aa4823a1cba8440c27c36adec4 0x39d732521214059f57de4c0f92879304394ef7c5e530a8708b7113a42f9f0878 0x000000000000000000000000c550f754865b1ad138b660c9802ee8b039abb05b +330579 0xc7696b27830dd8aa4823a1cba8440c27c36adec4 0x44bbf497379e88194e67c38a8b2e628ef3803579306f3fd2177ce81afb3d743f 0x000000000000000000000000c550f754865b1ad138b660c9802ee8b039abb05b +330683 0xc7696b27830dd8aa4823a1cba8440c27c36adec4 0x39d732521214059f57de4c0f92879304394ef7c5e530a8708b7113a42f9f0878 0x000000000000000000000000cffa3a1af763ccb260f4bf081f8a1bfddfdb89e0 +330683 0xc7696b27830dd8aa4823a1cba8440c27c36adec4 0x44bbf497379e88194e67c38a8b2e628ef3803579306f3fd2177ce81afb3d743f 0x000000000000000000000000cffa3a1af763ccb260f4bf081f8a1bfddfdb89e0 +330919 0xc7696b27830dd8aa4823a1cba8440c27c36adec4 0x39d732521214059f57de4c0f92879304394ef7c5e530a8708b7113a42f9f0878 0x000000000000000000000000a4145a98b12b717078b96821124d781c563511ca +330919 0xc7696b27830dd8aa4823a1cba8440c27c36adec4 0x44bbf497379e88194e67c38a8b2e628ef3803579306f3fd2177ce81afb3d743f 0x000000000000000000000000a4145a98b12b717078b96821124d781c563511ca +331009 0x53bccda5dcacc0b10b7c4145b0aa6581330b8635 0x16cdf1707799c6655baac6e210f52b94b7cec08adcaf9ede7dfe8649da926146 +331542 0xc7696b27830dd8aa4823a1cba8440c27c36adec4 0x39d732521214059f57de4c0f92879304394ef7c5e530a8708b7113a42f9f0878 0x0000000000000000000000003090aef28f1a9a4d1d9f9b8fc26d28ad1240214f +331542 0xc7696b27830dd8aa4823a1cba8440c27c36adec4 0x44bbf497379e88194e67c38a8b2e628ef3803579306f3fd2177ce81afb3d743f 0x0000000000000000000000003090aef28f1a9a4d1d9f9b8fc26d28ad1240214f +332007 0xc7696b27830dd8aa4823a1cba8440c27c36adec4 0x39d732521214059f57de4c0f92879304394ef7c5e530a8708b7113a42f9f0878 0x000000000000000000000000aa3e4fd68c8fabd386fc571f9656e50dba5dd384 +332007 0xc7696b27830dd8aa4823a1cba8440c27c36adec4 0x44bbf497379e88194e67c38a8b2e628ef3803579306f3fd2177ce81afb3d743f 0x000000000000000000000000aa3e4fd68c8fabd386fc571f9656e50dba5dd384 +333256 0xc7696b27830dd8aa4823a1cba8440c27c36adec4 0x39d732521214059f57de4c0f92879304394ef7c5e530a8708b7113a42f9f0878 0x0000000000000000000000009dca2265990b7ad9ac5c3a55157f1fc9d18381bc +333256 0xc7696b27830dd8aa4823a1cba8440c27c36adec4 0x44bbf497379e88194e67c38a8b2e628ef3803579306f3fd2177ce81afb3d743f 0x0000000000000000000000009dca2265990b7ad9ac5c3a55157f1fc9d18381bc +333294 0xfadd0c5d206310344a31711da36ac89a7baeb388 0xe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c +333583 0xc7696b27830dd8aa4823a1cba8440c27c36adec4 0x39d732521214059f57de4c0f92879304394ef7c5e530a8708b7113a42f9f0878 0x000000000000000000000000ff6c2227335eb7d5b29d86a8f78f35d4b9bafd3a +333583 0xc7696b27830dd8aa4823a1cba8440c27c36adec4 0x44bbf497379e88194e67c38a8b2e628ef3803579306f3fd2177ce81afb3d743f 0x000000000000000000000000ff6c2227335eb7d5b29d86a8f78f35d4b9bafd3a +333640 0xc7696b27830dd8aa4823a1cba8440c27c36adec4 0x39d732521214059f57de4c0f92879304394ef7c5e530a8708b7113a42f9f0878 0x000000000000000000000000601ee21411eba5a5bc9d1c6298822a1a7b9e2286 +333640 0xc7696b27830dd8aa4823a1cba8440c27c36adec4 0x44bbf497379e88194e67c38a8b2e628ef3803579306f3fd2177ce81afb3d743f 0x000000000000000000000000601ee21411eba5a5bc9d1c6298822a1a7b9e2286 +334263 0xc7696b27830dd8aa4823a1cba8440c27c36adec4 0x39d732521214059f57de4c0f92879304394ef7c5e530a8708b7113a42f9f0878 0x000000000000000000000000691ee952cf68d9abc488e42f5c1f95c020651333 +334263 0xc7696b27830dd8aa4823a1cba8440c27c36adec4 0x44bbf497379e88194e67c38a8b2e628ef3803579306f3fd2177ce81afb3d743f 0x000000000000000000000000691ee952cf68d9abc488e42f5c1f95c020651333 +334279 0xbd0edfbac386c9964f8f013d65d7dad5382d9cd7 0x16cdf1707799c6655baac6e210f52b94b7cec08adcaf9ede7dfe8649da926146 +334883 0x7011f3edc7fa43c81440f9f43a6458174113b162 0x66d0ee9ee580464eb06bb7adef164c593ad3173da5b9937511307bb4646d392e 0x000000000000000000000000000000000000000000000000000000000000005d +334915 0x7011f3edc7fa43c81440f9f43a6458174113b162 0x66d0ee9ee580464eb06bb7adef164c593ad3173da5b9937511307bb4646d392e 0x000000000000000000000000000000000000000000000000000000000000005e +334919 0x7011f3edc7fa43c81440f9f43a6458174113b162 0x66d0ee9ee580464eb06bb7adef164c593ad3173da5b9937511307bb4646d392e 0x000000000000000000000000000000000000000000000000000000000000005f +334919 0xc7696b27830dd8aa4823a1cba8440c27c36adec4 0x39d732521214059f57de4c0f92879304394ef7c5e530a8708b7113a42f9f0878 0x0000000000000000000000007d1ecf34b360f75280b83abc04f654ac99c7bd9c +334919 0xc7696b27830dd8aa4823a1cba8440c27c36adec4 0x44bbf497379e88194e67c38a8b2e628ef3803579306f3fd2177ce81afb3d743f 0x0000000000000000000000007d1ecf34b360f75280b83abc04f654ac99c7bd9c +335076 0xc7696b27830dd8aa4823a1cba8440c27c36adec4 0x39d732521214059f57de4c0f92879304394ef7c5e530a8708b7113a42f9f0878 0x000000000000000000000000367a3da4c3aa4c4b9de2c01bdca8075593c7ff1e +335076 0xc7696b27830dd8aa4823a1cba8440c27c36adec4 0x44bbf497379e88194e67c38a8b2e628ef3803579306f3fd2177ce81afb3d743f 0x000000000000000000000000367a3da4c3aa4c4b9de2c01bdca8075593c7ff1e +335348 0xc7696b27830dd8aa4823a1cba8440c27c36adec4 0x39d732521214059f57de4c0f92879304394ef7c5e530a8708b7113a42f9f0878 0x0000000000000000000000009d8048c450677dcd0b6c37c6a989a54a2a506a27 +335348 0xc7696b27830dd8aa4823a1cba8440c27c36adec4 0x44bbf497379e88194e67c38a8b2e628ef3803579306f3fd2177ce81afb3d743f 0x0000000000000000000000009d8048c450677dcd0b6c37c6a989a54a2a506a27 +335643 0x5f4c010748a890c8a28a4858fe7b07048d194380 0x16cdf1707799c6655baac6e210f52b94b7cec08adcaf9ede7dfe8649da926146 +335649 0x5f4c010748a890c8a28a4858fe7b07048d194380 0x16cdf1707799c6655baac6e210f52b94b7cec08adcaf9ede7dfe8649da926146 +335649 0x5f4c010748a890c8a28a4858fe7b07048d194380 0x16cdf1707799c6655baac6e210f52b94b7cec08adcaf9ede7dfe8649da926146 +335652 0x5f4c010748a890c8a28a4858fe7b07048d194380 0x16cdf1707799c6655baac6e210f52b94b7cec08adcaf9ede7dfe8649da926146 +335684 0xc7696b27830dd8aa4823a1cba8440c27c36adec4 0x39d732521214059f57de4c0f92879304394ef7c5e530a8708b7113a42f9f0878 0x000000000000000000000000d80b5d0763ceaf00e3c457c54acc880a6317d057 +335684 0xc7696b27830dd8aa4823a1cba8440c27c36adec4 0x44bbf497379e88194e67c38a8b2e628ef3803579306f3fd2177ce81afb3d743f 0x000000000000000000000000d80b5d0763ceaf00e3c457c54acc880a6317d057 +336089 0xc7696b27830dd8aa4823a1cba8440c27c36adec4 0x39d732521214059f57de4c0f92879304394ef7c5e530a8708b7113a42f9f0878 0x000000000000000000000000866d22bf02ad128c2e015a27ed39c7f5f0bd65f3 +336089 0xc7696b27830dd8aa4823a1cba8440c27c36adec4 0x44bbf497379e88194e67c38a8b2e628ef3803579306f3fd2177ce81afb3d743f 0x000000000000000000000000866d22bf02ad128c2e015a27ed39c7f5f0bd65f3 +336231 0x5dc2e401e29ea16e51ebcecaef129c15fed5a5e8 0xd456720fd185d4060f5cea4d82775d2af95048c1e10f227ec35bae950a4be2a8 0x0000000000000000000000008674c218f0351a62c3ba78c34fd2182a93da94e2 +336234 0x5dc2e401e29ea16e51ebcecaef129c15fed5a5e8 0xd456720fd185d4060f5cea4d82775d2af95048c1e10f227ec35bae950a4be2a8 0x0000000000000000000000008674c218f0351a62c3ba78c34fd2182a93da94e2 +336242 0x5dc2e401e29ea16e51ebcecaef129c15fed5a5e8 0xd456720fd185d4060f5cea4d82775d2af95048c1e10f227ec35bae950a4be2a8 0x0000000000000000000000008674c218f0351a62c3ba78c34fd2182a93da94e2 +336243 0x5dc2e401e29ea16e51ebcecaef129c15fed5a5e8 0xd456720fd185d4060f5cea4d82775d2af95048c1e10f227ec35bae950a4be2a8 0x0000000000000000000000008674c218f0351a62c3ba78c34fd2182a93da94e2 +336244 0x5dc2e401e29ea16e51ebcecaef129c15fed5a5e8 0xd456720fd185d4060f5cea4d82775d2af95048c1e10f227ec35bae950a4be2a8 0x0000000000000000000000008674c218f0351a62c3ba78c34fd2182a93da94e2 +336245 0x5dc2e401e29ea16e51ebcecaef129c15fed5a5e8 0xd456720fd185d4060f5cea4d82775d2af95048c1e10f227ec35bae950a4be2a8 0x0000000000000000000000008674c218f0351a62c3ba78c34fd2182a93da94e2 +336245 0x5dc2e401e29ea16e51ebcecaef129c15fed5a5e8 0xd456720fd185d4060f5cea4d82775d2af95048c1e10f227ec35bae950a4be2a8 0x0000000000000000000000008674c218f0351a62c3ba78c34fd2182a93da94e2 +336247 0x5dc2e401e29ea16e51ebcecaef129c15fed5a5e8 0xd456720fd185d4060f5cea4d82775d2af95048c1e10f227ec35bae950a4be2a8 0x0000000000000000000000008674c218f0351a62c3ba78c34fd2182a93da94e2 +336248 0x5dc2e401e29ea16e51ebcecaef129c15fed5a5e8 0xd456720fd185d4060f5cea4d82775d2af95048c1e10f227ec35bae950a4be2a8 0x0000000000000000000000008674c218f0351a62c3ba78c34fd2182a93da94e2 +336255 0x5dc2e401e29ea16e51ebcecaef129c15fed5a5e8 0xd456720fd185d4060f5cea4d82775d2af95048c1e10f227ec35bae950a4be2a8 0x0000000000000000000000008674c218f0351a62c3ba78c34fd2182a93da94e2 +336260 0x5dc2e401e29ea16e51ebcecaef129c15fed5a5e8 0xd456720fd185d4060f5cea4d82775d2af95048c1e10f227ec35bae950a4be2a8 0x0000000000000000000000008674c218f0351a62c3ba78c34fd2182a93da94e2 +336263 0x5dc2e401e29ea16e51ebcecaef129c15fed5a5e8 0xd456720fd185d4060f5cea4d82775d2af95048c1e10f227ec35bae950a4be2a8 0x0000000000000000000000008674c218f0351a62c3ba78c34fd2182a93da94e2 +336264 0x5dc2e401e29ea16e51ebcecaef129c15fed5a5e8 0xd456720fd185d4060f5cea4d82775d2af95048c1e10f227ec35bae950a4be2a8 0x0000000000000000000000008674c218f0351a62c3ba78c34fd2182a93da94e2 +336266 0x5dc2e401e29ea16e51ebcecaef129c15fed5a5e8 0xd456720fd185d4060f5cea4d82775d2af95048c1e10f227ec35bae950a4be2a8 0x0000000000000000000000008674c218f0351a62c3ba78c34fd2182a93da94e2 +336266 0x5dc2e401e29ea16e51ebcecaef129c15fed5a5e8 0xd456720fd185d4060f5cea4d82775d2af95048c1e10f227ec35bae950a4be2a8 0x0000000000000000000000008674c218f0351a62c3ba78c34fd2182a93da94e2 +336334 0x5dc2e401e29ea16e51ebcecaef129c15fed5a5e8 0xd456720fd185d4060f5cea4d82775d2af95048c1e10f227ec35bae950a4be2a8 0x0000000000000000000000008674c218f0351a62c3ba78c34fd2182a93da94e2 +336336 0x5dc2e401e29ea16e51ebcecaef129c15fed5a5e8 0xd456720fd185d4060f5cea4d82775d2af95048c1e10f227ec35bae950a4be2a8 0x0000000000000000000000008674c218f0351a62c3ba78c34fd2182a93da94e2 +336337 0x5dc2e401e29ea16e51ebcecaef129c15fed5a5e8 0xd456720fd185d4060f5cea4d82775d2af95048c1e10f227ec35bae950a4be2a8 0x0000000000000000000000008674c218f0351a62c3ba78c34fd2182a93da94e2 +336338 0x5dc2e401e29ea16e51ebcecaef129c15fed5a5e8 0xd456720fd185d4060f5cea4d82775d2af95048c1e10f227ec35bae950a4be2a8 0x0000000000000000000000008674c218f0351a62c3ba78c34fd2182a93da94e2 +336439 0x5dc2e401e29ea16e51ebcecaef129c15fed5a5e8 0xd456720fd185d4060f5cea4d82775d2af95048c1e10f227ec35bae950a4be2a8 0x0000000000000000000000008674c218f0351a62c3ba78c34fd2182a93da94e2 +336451 0x5dc2e401e29ea16e51ebcecaef129c15fed5a5e8 0xd456720fd185d4060f5cea4d82775d2af95048c1e10f227ec35bae950a4be2a8 0x0000000000000000000000008674c218f0351a62c3ba78c34fd2182a93da94e2 +336452 0x5dc2e401e29ea16e51ebcecaef129c15fed5a5e8 0xd456720fd185d4060f5cea4d82775d2af95048c1e10f227ec35bae950a4be2a8 0x0000000000000000000000008674c218f0351a62c3ba78c34fd2182a93da94e2 +336453 0x5dc2e401e29ea16e51ebcecaef129c15fed5a5e8 0xd456720fd185d4060f5cea4d82775d2af95048c1e10f227ec35bae950a4be2a8 0x0000000000000000000000008674c218f0351a62c3ba78c34fd2182a93da94e2 +336453 0x5dc2e401e29ea16e51ebcecaef129c15fed5a5e8 0xd456720fd185d4060f5cea4d82775d2af95048c1e10f227ec35bae950a4be2a8 0x0000000000000000000000008674c218f0351a62c3ba78c34fd2182a93da94e2 +336461 0x5dc2e401e29ea16e51ebcecaef129c15fed5a5e8 0xd456720fd185d4060f5cea4d82775d2af95048c1e10f227ec35bae950a4be2a8 0x0000000000000000000000008674c218f0351a62c3ba78c34fd2182a93da94e2 +336495 0x5dc2e401e29ea16e51ebcecaef129c15fed5a5e8 0xd456720fd185d4060f5cea4d82775d2af95048c1e10f227ec35bae950a4be2a8 0x0000000000000000000000008674c218f0351a62c3ba78c34fd2182a93da94e2 +336497 0x5dc2e401e29ea16e51ebcecaef129c15fed5a5e8 0xd456720fd185d4060f5cea4d82775d2af95048c1e10f227ec35bae950a4be2a8 0x0000000000000000000000008674c218f0351a62c3ba78c34fd2182a93da94e2 +336497 0x5dc2e401e29ea16e51ebcecaef129c15fed5a5e8 0xd456720fd185d4060f5cea4d82775d2af95048c1e10f227ec35bae950a4be2a8 0x0000000000000000000000008674c218f0351a62c3ba78c34fd2182a93da94e2 +336497 0x5dc2e401e29ea16e51ebcecaef129c15fed5a5e8 0xd456720fd185d4060f5cea4d82775d2af95048c1e10f227ec35bae950a4be2a8 0x0000000000000000000000008674c218f0351a62c3ba78c34fd2182a93da94e2 +336507 0x5dc2e401e29ea16e51ebcecaef129c15fed5a5e8 0xd456720fd185d4060f5cea4d82775d2af95048c1e10f227ec35bae950a4be2a8 0x0000000000000000000000008674c218f0351a62c3ba78c34fd2182a93da94e2 +336508 0x5dc2e401e29ea16e51ebcecaef129c15fed5a5e8 0xd456720fd185d4060f5cea4d82775d2af95048c1e10f227ec35bae950a4be2a8 0x0000000000000000000000008674c218f0351a62c3ba78c34fd2182a93da94e2 +336508 0x5dc2e401e29ea16e51ebcecaef129c15fed5a5e8 0xd456720fd185d4060f5cea4d82775d2af95048c1e10f227ec35bae950a4be2a8 0x0000000000000000000000008674c218f0351a62c3ba78c34fd2182a93da94e2 +336508 0x5dc2e401e29ea16e51ebcecaef129c15fed5a5e8 0xd456720fd185d4060f5cea4d82775d2af95048c1e10f227ec35bae950a4be2a8 0x0000000000000000000000008674c218f0351a62c3ba78c34fd2182a93da94e2 +336508 0x5dc2e401e29ea16e51ebcecaef129c15fed5a5e8 0xd456720fd185d4060f5cea4d82775d2af95048c1e10f227ec35bae950a4be2a8 0x0000000000000000000000008674c218f0351a62c3ba78c34fd2182a93da94e2 +336508 0x5dc2e401e29ea16e51ebcecaef129c15fed5a5e8 0xd456720fd185d4060f5cea4d82775d2af95048c1e10f227ec35bae950a4be2a8 0x0000000000000000000000008674c218f0351a62c3ba78c34fd2182a93da94e2 +336509 0x5dc2e401e29ea16e51ebcecaef129c15fed5a5e8 0xd456720fd185d4060f5cea4d82775d2af95048c1e10f227ec35bae950a4be2a8 0x0000000000000000000000008674c218f0351a62c3ba78c34fd2182a93da94e2 +336510 0x5dc2e401e29ea16e51ebcecaef129c15fed5a5e8 0xd456720fd185d4060f5cea4d82775d2af95048c1e10f227ec35bae950a4be2a8 0x0000000000000000000000008674c218f0351a62c3ba78c34fd2182a93da94e2 +336510 0x5dc2e401e29ea16e51ebcecaef129c15fed5a5e8 0xd456720fd185d4060f5cea4d82775d2af95048c1e10f227ec35bae950a4be2a8 0x0000000000000000000000008674c218f0351a62c3ba78c34fd2182a93da94e2 +336510 0x5dc2e401e29ea16e51ebcecaef129c15fed5a5e8 0xd456720fd185d4060f5cea4d82775d2af95048c1e10f227ec35bae950a4be2a8 0x0000000000000000000000008674c218f0351a62c3ba78c34fd2182a93da94e2 +336518 0x5dc2e401e29ea16e51ebcecaef129c15fed5a5e8 0xd456720fd185d4060f5cea4d82775d2af95048c1e10f227ec35bae950a4be2a8 0x0000000000000000000000008674c218f0351a62c3ba78c34fd2182a93da94e2 +336520 0x5dc2e401e29ea16e51ebcecaef129c15fed5a5e8 0xd456720fd185d4060f5cea4d82775d2af95048c1e10f227ec35bae950a4be2a8 0x0000000000000000000000008674c218f0351a62c3ba78c34fd2182a93da94e2 +336521 0x5dc2e401e29ea16e51ebcecaef129c15fed5a5e8 0xd456720fd185d4060f5cea4d82775d2af95048c1e10f227ec35bae950a4be2a8 0x0000000000000000000000008674c218f0351a62c3ba78c34fd2182a93da94e2 +336522 0x5dc2e401e29ea16e51ebcecaef129c15fed5a5e8 0xd456720fd185d4060f5cea4d82775d2af95048c1e10f227ec35bae950a4be2a8 0x0000000000000000000000008674c218f0351a62c3ba78c34fd2182a93da94e2 +336526 0x5dc2e401e29ea16e51ebcecaef129c15fed5a5e8 0xd456720fd185d4060f5cea4d82775d2af95048c1e10f227ec35bae950a4be2a8 0x0000000000000000000000008674c218f0351a62c3ba78c34fd2182a93da94e2 +336527 0x5dc2e401e29ea16e51ebcecaef129c15fed5a5e8 0xd456720fd185d4060f5cea4d82775d2af95048c1e10f227ec35bae950a4be2a8 0x0000000000000000000000008674c218f0351a62c3ba78c34fd2182a93da94e2 +336528 0x5dc2e401e29ea16e51ebcecaef129c15fed5a5e8 0xd456720fd185d4060f5cea4d82775d2af95048c1e10f227ec35bae950a4be2a8 0x0000000000000000000000008674c218f0351a62c3ba78c34fd2182a93da94e2 +336528 0x5dc2e401e29ea16e51ebcecaef129c15fed5a5e8 0xd456720fd185d4060f5cea4d82775d2af95048c1e10f227ec35bae950a4be2a8 0x0000000000000000000000008674c218f0351a62c3ba78c34fd2182a93da94e2 +336543 0x5dc2e401e29ea16e51ebcecaef129c15fed5a5e8 0xd456720fd185d4060f5cea4d82775d2af95048c1e10f227ec35bae950a4be2a8 0x0000000000000000000000008674c218f0351a62c3ba78c34fd2182a93da94e2 +336543 0x5dc2e401e29ea16e51ebcecaef129c15fed5a5e8 0xd456720fd185d4060f5cea4d82775d2af95048c1e10f227ec35bae950a4be2a8 0x0000000000000000000000008674c218f0351a62c3ba78c34fd2182a93da94e2 +337012 0xc7696b27830dd8aa4823a1cba8440c27c36adec4 0x39d732521214059f57de4c0f92879304394ef7c5e530a8708b7113a42f9f0878 0x000000000000000000000000f2c453692a6f46cffd30943fe9bee65cac3622d7 +337012 0xc7696b27830dd8aa4823a1cba8440c27c36adec4 0x44bbf497379e88194e67c38a8b2e628ef3803579306f3fd2177ce81afb3d743f 0x000000000000000000000000f2c453692a6f46cffd30943fe9bee65cac3622d7 +337642 0x33990122638b9132ca29c723bdf037f1a891a70c 0xa6697e974e6a320f454390be03f74955e8978f1a6971ea6730542e37b66179bc 0x456475636174696f6e0000000000000000000000000000000000000000000000 +337642 0x33990122638b9132ca29c723bdf037f1a891a70c 0xf63780e752c6a54a94fc52715dbc5518a3b4c3c2833d301a204226548a2a8545 0x456475636174696f6e0000000000000000000000000000000000000000000000 0x00000000000000000000000002ef13dd4479f121b4636bc3d7ea9da774b3ed74 +337642 0x33990122638b9132ca29c723bdf037f1a891a70c 0xa6697e974e6a320f454390be03f74955e8978f1a6971ea6730542e37b66179bc 0x456475636174696f6e0000000000000000000000000000000000000000000000 +337647 0x33990122638b9132ca29c723bdf037f1a891a70c 0xa6697e974e6a320f454390be03f74955e8978f1a6971ea6730542e37b66179bc 0x50686f6e65000000000000000000000000000000000000000000000000000000 +337649 0x33990122638b9132ca29c723bdf037f1a891a70c 0xf63780e752c6a54a94fc52715dbc5518a3b4c3c2833d301a204226548a2a8545 0x50686f6e65000000000000000000000000000000000000000000000000000000 0x0000000000000000000000003210743d3b82ec01338c50d64ce97de5e8ec94bb +337649 0x33990122638b9132ca29c723bdf037f1a891a70c 0xa6697e974e6a320f454390be03f74955e8978f1a6971ea6730542e37b66179bc 0x50686f6e65000000000000000000000000000000000000000000000000000000 +337653 0x33990122638b9132ca29c723bdf037f1a891a70c 0xa6697e974e6a320f454390be03f74955e8978f1a6971ea6730542e37b66179bc 0x506f6b6572000000000000000000000000000000000000000000000000000000 +337654 0x33990122638b9132ca29c723bdf037f1a891a70c 0xf63780e752c6a54a94fc52715dbc5518a3b4c3c2833d301a204226548a2a8545 0x506f6b6572000000000000000000000000000000000000000000000000000000 0x000000000000000000000000d0dc4dac9c29cacd9dcd6d7f7ca97e04b0ba6e09 +337654 0x33990122638b9132ca29c723bdf037f1a891a70c 0xa6697e974e6a320f454390be03f74955e8978f1a6971ea6730542e37b66179bc 0x506f6b6572000000000000000000000000000000000000000000000000000000 +337655 0x33990122638b9132ca29c723bdf037f1a891a70c 0xa6697e974e6a320f454390be03f74955e8978f1a6971ea6730542e37b66179bc 0x50726f7065727479000000000000000000000000000000000000000000000000 +337656 0x33990122638b9132ca29c723bdf037f1a891a70c 0xf63780e752c6a54a94fc52715dbc5518a3b4c3c2833d301a204226548a2a8545 0x50726f7065727479000000000000000000000000000000000000000000000000 0x00000000000000000000000097eb80f6d0777baa9bbcc8722b43e3e88d00efaf +337656 0x33990122638b9132ca29c723bdf037f1a891a70c 0xa6697e974e6a320f454390be03f74955e8978f1a6971ea6730542e37b66179bc 0x50726f7065727479000000000000000000000000000000000000000000000000 +337663 0x33990122638b9132ca29c723bdf037f1a891a70c 0xa6697e974e6a320f454390be03f74955e8978f1a6971ea6730542e37b66179bc 0x53616c6573000000000000000000000000000000000000000000000000000000 +337663 0x33990122638b9132ca29c723bdf037f1a891a70c 0xf63780e752c6a54a94fc52715dbc5518a3b4c3c2833d301a204226548a2a8545 0x53616c6573000000000000000000000000000000000000000000000000000000 0x0000000000000000000000004ad03d890ef08dbae952527c829d0dde8d31c3b7 +337663 0x33990122638b9132ca29c723bdf037f1a891a70c 0xa6697e974e6a320f454390be03f74955e8978f1a6971ea6730542e37b66179bc 0x53616c6573000000000000000000000000000000000000000000000000000000 +337664 0x33990122638b9132ca29c723bdf037f1a891a70c 0xa6697e974e6a320f454390be03f74955e8978f1a6971ea6730542e37b66179bc 0x4d61726b65740000000000000000000000000000000000000000000000000000 +337669 0x33990122638b9132ca29c723bdf037f1a891a70c 0xa6697e974e6a320f454390be03f74955e8978f1a6971ea6730542e37b66179bc 0x486f757365000000000000000000000000000000000000000000000000000000 +337672 0x33990122638b9132ca29c723bdf037f1a891a70c 0xf63780e752c6a54a94fc52715dbc5518a3b4c3c2833d301a204226548a2a8545 0x486f757365000000000000000000000000000000000000000000000000000000 0x0000000000000000000000000ec0d6547c59c38a9105525f0c10ec4d4a0b1afb +337672 0x33990122638b9132ca29c723bdf037f1a891a70c 0xa6697e974e6a320f454390be03f74955e8978f1a6971ea6730542e37b66179bc 0x486f757365000000000000000000000000000000000000000000000000000000 +337731 0xc7696b27830dd8aa4823a1cba8440c27c36adec4 0x39d732521214059f57de4c0f92879304394ef7c5e530a8708b7113a42f9f0878 0x000000000000000000000000f80675f372ff20d0a5f3bc82a51c8fb9fb5022cd +337731 0xc7696b27830dd8aa4823a1cba8440c27c36adec4 0x44bbf497379e88194e67c38a8b2e628ef3803579306f3fd2177ce81afb3d743f 0x000000000000000000000000f80675f372ff20d0a5f3bc82a51c8fb9fb5022cd +338275 0x9f918d46c929f12a229b6084566384ee26805b4d 0x92ca3a80853e6663fa31fa10b99225f18d4902939b4c53a9caae9043f6efd004 +338281 0x9f918d46c929f12a229b6084566384ee26805b4d 0x92ca3a80853e6663fa31fa10b99225f18d4902939b4c53a9caae9043f6efd004 +338336 0xfadd0c5d206310344a31711da36ac89a7baeb388 0xe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c +338424 0xc7696b27830dd8aa4823a1cba8440c27c36adec4 0x39d732521214059f57de4c0f92879304394ef7c5e530a8708b7113a42f9f0878 0x00000000000000000000000008a66d1381b139ec676e522aeab6fd82cc78567d +338424 0xc7696b27830dd8aa4823a1cba8440c27c36adec4 0x44bbf497379e88194e67c38a8b2e628ef3803579306f3fd2177ce81afb3d743f 0x00000000000000000000000008a66d1381b139ec676e522aeab6fd82cc78567d +338435 0x8056338e73fde306bb5d9aedec7f4a7b8637c9e7 0x92ca3a80853e6663fa31fa10b99225f18d4902939b4c53a9caae9043f6efd004 +338439 0xc7696b27830dd8aa4823a1cba8440c27c36adec4 0x39d732521214059f57de4c0f92879304394ef7c5e530a8708b7113a42f9f0878 0x00000000000000000000000065e9201879e2a6ff7da133f0c573a8fe5d9da7ca +338439 0xc7696b27830dd8aa4823a1cba8440c27c36adec4 0x44bbf497379e88194e67c38a8b2e628ef3803579306f3fd2177ce81afb3d743f 0x00000000000000000000000065e9201879e2a6ff7da133f0c573a8fe5d9da7ca +338661 0xc7696b27830dd8aa4823a1cba8440c27c36adec4 0x39d732521214059f57de4c0f92879304394ef7c5e530a8708b7113a42f9f0878 0x000000000000000000000000a2792b9f27a466a635649f551a4109a179b00fbf +338661 0xc7696b27830dd8aa4823a1cba8440c27c36adec4 0x44bbf497379e88194e67c38a8b2e628ef3803579306f3fd2177ce81afb3d743f 0x000000000000000000000000a2792b9f27a466a635649f551a4109a179b00fbf +338991 0x0e5e2b9341341ade98f510ad9a744e01f3b29f03 0x1cf7652f1f9289dc41763c5bd36534c9772d48aa26021274d212f227d4b69765 0x0000000000000000000000000000000000000000000000000000000000000060 +339173 0xc7696b27830dd8aa4823a1cba8440c27c36adec4 0x39d732521214059f57de4c0f92879304394ef7c5e530a8708b7113a42f9f0878 0x00000000000000000000000049f47bc027e273e21f46000c49971919b3e15773 +339173 0xc7696b27830dd8aa4823a1cba8440c27c36adec4 0x44bbf497379e88194e67c38a8b2e628ef3803579306f3fd2177ce81afb3d743f 0x00000000000000000000000049f47bc027e273e21f46000c49971919b3e15773 +339369 0x7011f3edc7fa43c81440f9f43a6458174113b162 0x66d0ee9ee580464eb06bb7adef164c593ad3173da5b9937511307bb4646d392e 0x0000000000000000000000000000000000000000000000000000000000000060 +339427 0xc7696b27830dd8aa4823a1cba8440c27c36adec4 0x39d732521214059f57de4c0f92879304394ef7c5e530a8708b7113a42f9f0878 0x000000000000000000000000f3b83292f3e56f4aec1e3c44128d0f1a9d824559 +339427 0xc7696b27830dd8aa4823a1cba8440c27c36adec4 0x44bbf497379e88194e67c38a8b2e628ef3803579306f3fd2177ce81afb3d743f 0x000000000000000000000000f3b83292f3e56f4aec1e3c44128d0f1a9d824559 +340633 0x33990122638b9132ca29c723bdf037f1a891a70c 0xa6697e974e6a320f454390be03f74955e8978f1a6971ea6730542e37b66179bc 0x42697447656d7300000000000000000000000000000000000000000000000000 +340635 0x33990122638b9132ca29c723bdf037f1a891a70c 0xf63780e752c6a54a94fc52715dbc5518a3b4c3c2833d301a204226548a2a8545 0x42697447656d7300000000000000000000000000000000000000000000000000 0x000000000000000000000000c34f6222062c65e35d4b0fc26d718738582118a6 +340635 0x33990122638b9132ca29c723bdf037f1a891a70c 0xa6697e974e6a320f454390be03f74955e8978f1a6971ea6730542e37b66179bc 0x42697447656d7300000000000000000000000000000000000000000000000000 +340653 0x33990122638b9132ca29c723bdf037f1a891a70c 0xa6697e974e6a320f454390be03f74955e8978f1a6971ea6730542e37b66179bc 0x4469616d6f6e6473000000000000000000000000000000000000000000000000 +340658 0x33990122638b9132ca29c723bdf037f1a891a70c 0xf63780e752c6a54a94fc52715dbc5518a3b4c3c2833d301a204226548a2a8545 0x4469616d6f6e6473000000000000000000000000000000000000000000000000 0x0000000000000000000000004e971507462271eadb8aac0d20312099f6d52947 +340658 0x33990122638b9132ca29c723bdf037f1a891a70c 0xa6697e974e6a320f454390be03f74955e8978f1a6971ea6730542e37b66179bc 0x4469616d6f6e6473000000000000000000000000000000000000000000000000 +340674 0x33990122638b9132ca29c723bdf037f1a891a70c 0xa6697e974e6a320f454390be03f74955e8978f1a6971ea6730542e37b66179bc 0x476f6c6400000000000000000000000000000000000000000000000000000000 +340675 0x33990122638b9132ca29c723bdf037f1a891a70c 0xf63780e752c6a54a94fc52715dbc5518a3b4c3c2833d301a204226548a2a8545 0x476f6c6400000000000000000000000000000000000000000000000000000000 0x000000000000000000000000eb26edf39a4ad0a3b8d6a9804b4e2a7b47d3017b +340675 0x33990122638b9132ca29c723bdf037f1a891a70c 0xa6697e974e6a320f454390be03f74955e8978f1a6971ea6730542e37b66179bc 0x476f6c6400000000000000000000000000000000000000000000000000000000 +340685 0x33990122638b9132ca29c723bdf037f1a891a70c 0xa6697e974e6a320f454390be03f74955e8978f1a6971ea6730542e37b66179bc 0x4469676978000000000000000000000000000000000000000000000000000000 +340686 0x33990122638b9132ca29c723bdf037f1a891a70c 0xf63780e752c6a54a94fc52715dbc5518a3b4c3c2833d301a204226548a2a8545 0x4469676978000000000000000000000000000000000000000000000000000000 0x0000000000000000000000000b3765d911cbf67fd92f4d3e5cc25211ddc743de +340686 0x33990122638b9132ca29c723bdf037f1a891a70c 0xa6697e974e6a320f454390be03f74955e8978f1a6971ea6730542e37b66179bc 0x4469676978000000000000000000000000000000000000000000000000000000 +340700 0x33990122638b9132ca29c723bdf037f1a891a70c 0xa6697e974e6a320f454390be03f74955e8978f1a6971ea6730542e37b66179bc 0x426f617264726f6f6d0000000000000000000000000000000000000000000000 +340700 0x33990122638b9132ca29c723bdf037f1a891a70c 0xf63780e752c6a54a94fc52715dbc5518a3b4c3c2833d301a204226548a2a8545 0x426f617264726f6f6d0000000000000000000000000000000000000000000000 0x000000000000000000000000c8cfec0ee1d4802daaae1bebb07aa7c44931e633 +340700 0x33990122638b9132ca29c723bdf037f1a891a70c 0xa6697e974e6a320f454390be03f74955e8978f1a6971ea6730542e37b66179bc 0x426f617264726f6f6d0000000000000000000000000000000000000000000000 +340708 0x33990122638b9132ca29c723bdf037f1a891a70c 0xa6697e974e6a320f454390be03f74955e8978f1a6971ea6730542e37b66179bc 0x45786368616e6765000000000000000000000000000000000000000000000000 +340710 0x33990122638b9132ca29c723bdf037f1a891a70c 0xf63780e752c6a54a94fc52715dbc5518a3b4c3c2833d301a204226548a2a8545 0x45786368616e6765000000000000000000000000000000000000000000000000 0x0000000000000000000000005492f79ca66506bc751862ba35a9121d8b28532d +340710 0x33990122638b9132ca29c723bdf037f1a891a70c 0xa6697e974e6a320f454390be03f74955e8978f1a6971ea6730542e37b66179bc 0x45786368616e6765000000000000000000000000000000000000000000000000 +340712 0x33990122638b9132ca29c723bdf037f1a891a70c 0xa6697e974e6a320f454390be03f74955e8978f1a6971ea6730542e37b66179bc 0x426974636f696e00000000000000000000000000000000000000000000000000 +340713 0x33990122638b9132ca29c723bdf037f1a891a70c 0xf63780e752c6a54a94fc52715dbc5518a3b4c3c2833d301a204226548a2a8545 0x426974636f696e00000000000000000000000000000000000000000000000000 0x000000000000000000000000a9033165b71f08ac82c53d5f982b463ca5301c15 +340713 0x33990122638b9132ca29c723bdf037f1a891a70c 0xa6697e974e6a320f454390be03f74955e8978f1a6971ea6730542e37b66179bc 0x426974636f696e00000000000000000000000000000000000000000000000000 +340718 0x33990122638b9132ca29c723bdf037f1a891a70c 0xa6697e974e6a320f454390be03f74955e8978f1a6971ea6730542e37b66179bc 0x426974636f696e73000000000000000000000000000000000000000000000000 +340719 0x33990122638b9132ca29c723bdf037f1a891a70c 0xf63780e752c6a54a94fc52715dbc5518a3b4c3c2833d301a204226548a2a8545 0x426974636f696e73000000000000000000000000000000000000000000000000 0x000000000000000000000000f301f8e2cc1bab42ced9902f1fcd1a25303823db +340719 0x33990122638b9132ca29c723bdf037f1a891a70c 0xa6697e974e6a320f454390be03f74955e8978f1a6971ea6730542e37b66179bc 0x426974636f696e73000000000000000000000000000000000000000000000000 +340727 0x33990122638b9132ca29c723bdf037f1a891a70c 0xa6697e974e6a320f454390be03f74955e8978f1a6971ea6730542e37b66179bc 0x4d61696c00000000000000000000000000000000000000000000000000000000 +340727 0x33990122638b9132ca29c723bdf037f1a891a70c 0xf63780e752c6a54a94fc52715dbc5518a3b4c3c2833d301a204226548a2a8545 0x4d61696c00000000000000000000000000000000000000000000000000000000 0x0000000000000000000000004143c2f1563da14b2c09559ef5144b4c6ca268fe +340727 0x33990122638b9132ca29c723bdf037f1a891a70c 0xa6697e974e6a320f454390be03f74955e8978f1a6971ea6730542e37b66179bc 0x4d61696c00000000000000000000000000000000000000000000000000000000 +340728 0x33990122638b9132ca29c723bdf037f1a891a70c 0xa6697e974e6a320f454390be03f74955e8978f1a6971ea6730542e37b66179bc 0x456d61696c000000000000000000000000000000000000000000000000000000 +340835 0xfadd0c5d206310344a31711da36ac89a7baeb388 0xe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c +340988 0xc7696b27830dd8aa4823a1cba8440c27c36adec4 0x39d732521214059f57de4c0f92879304394ef7c5e530a8708b7113a42f9f0878 0x0000000000000000000000008db600d7c92b0182ec527d8972d9e4d67d82e62a +340988 0xc7696b27830dd8aa4823a1cba8440c27c36adec4 0x44bbf497379e88194e67c38a8b2e628ef3803579306f3fd2177ce81afb3d743f 0x0000000000000000000000008db600d7c92b0182ec527d8972d9e4d67d82e62a +341695 0xc7696b27830dd8aa4823a1cba8440c27c36adec4 0x39d732521214059f57de4c0f92879304394ef7c5e530a8708b7113a42f9f0878 0x000000000000000000000000351be7a8b083e7e3e3c16744a1fea3420064f60a +341695 0xc7696b27830dd8aa4823a1cba8440c27c36adec4 0x44bbf497379e88194e67c38a8b2e628ef3803579306f3fd2177ce81afb3d743f 0x000000000000000000000000351be7a8b083e7e3e3c16744a1fea3420064f60a +341985 0xbda7aeb6d2002efe360b6467275ef01e77d15497 0xe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c +341997 0xbda7aeb6d2002efe360b6467275ef01e77d15497 0x92ca3a80853e6663fa31fa10b99225f18d4902939b4c53a9caae9043f6efd004 +342001 0xbda7aeb6d2002efe360b6467275ef01e77d15497 0xe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c +342004 0xbda7aeb6d2002efe360b6467275ef01e77d15497 0xe1c52dc63b719ade82e8bea94cc41a0d5d28e4aaf536adb5e9cccc9ff8c1aeda +342004 0xbda7aeb6d2002efe360b6467275ef01e77d15497 0x1733cbb53659d713b79580f79f3f9ff215f78a7c7aa45890f3b89fc5cddfbf32 +342007 0xbda7aeb6d2002efe360b6467275ef01e77d15497 0xe1c52dc63b719ade82e8bea94cc41a0d5d28e4aaf536adb5e9cccc9ff8c1aeda +342007 0xbda7aeb6d2002efe360b6467275ef01e77d15497 0xe7c957c06e9a662c1a6c77366179f5b702b97651dc28eee7d5bf1dff6e40bb4a +342008 0xbda7aeb6d2002efe360b6467275ef01e77d15497 0xe1c52dc63b719ade82e8bea94cc41a0d5d28e4aaf536adb5e9cccc9ff8c1aeda +342026 0xc630a71b2dfbcc621affd33257132b50adbe1cd0 0x92ca3a80853e6663fa31fa10b99225f18d4902939b4c53a9caae9043f6efd004 +342026 0x97e58c7d37cba1a1e2ecbb2a5b23f8d127b6892d 0xe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c +342027 0x97e58c7d37cba1a1e2ecbb2a5b23f8d127b6892d 0xe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c +342027 0x97e58c7d37cba1a1e2ecbb2a5b23f8d127b6892d 0xe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c +342033 0x97e58c7d37cba1a1e2ecbb2a5b23f8d127b6892d 0xe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c +342035 0x97e58c7d37cba1a1e2ecbb2a5b23f8d127b6892d 0xe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c +342036 0x97e58c7d37cba1a1e2ecbb2a5b23f8d127b6892d 0xe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c +342041 0x97e58c7d37cba1a1e2ecbb2a5b23f8d127b6892d 0x92ca3a80853e6663fa31fa10b99225f18d4902939b4c53a9caae9043f6efd004 +342047 0xfa15b8c872f533cd40abfd055507f2907bcf1581 0x16cdf1707799c6655baac6e210f52b94b7cec08adcaf9ede7dfe8649da926146 +342047 0x97e58c7d37cba1a1e2ecbb2a5b23f8d127b6892d 0x92ca3a80853e6663fa31fa10b99225f18d4902939b4c53a9caae9043f6efd004 +342047 0xbda7aeb6d2002efe360b6467275ef01e77d15497 0xe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c +342053 0x97e58c7d37cba1a1e2ecbb2a5b23f8d127b6892d 0xe1c52dc63b719ade82e8bea94cc41a0d5d28e4aaf536adb5e9cccc9ff8c1aeda +342053 0x97e58c7d37cba1a1e2ecbb2a5b23f8d127b6892d 0x1733cbb53659d713b79580f79f3f9ff215f78a7c7aa45890f3b89fc5cddfbf32 +342080 0x97e58c7d37cba1a1e2ecbb2a5b23f8d127b6892d 0xe1c52dc63b719ade82e8bea94cc41a0d5d28e4aaf536adb5e9cccc9ff8c1aeda +342080 0xfe8ad7dd2f564a877cc23feea6c0a9cc2e783715 0xe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c +342080 0x97e58c7d37cba1a1e2ecbb2a5b23f8d127b6892d 0xe7c957c06e9a662c1a6c77366179f5b702b97651dc28eee7d5bf1dff6e40bb4a +342101 0x97e58c7d37cba1a1e2ecbb2a5b23f8d127b6892d 0x92ca3a80853e6663fa31fa10b99225f18d4902939b4c53a9caae9043f6efd004 +342107 0x97e58c7d37cba1a1e2ecbb2a5b23f8d127b6892d 0xe1c52dc63b719ade82e8bea94cc41a0d5d28e4aaf536adb5e9cccc9ff8c1aeda +342107 0x97e58c7d37cba1a1e2ecbb2a5b23f8d127b6892d 0x1733cbb53659d713b79580f79f3f9ff215f78a7c7aa45890f3b89fc5cddfbf32 +342111 0x97e58c7d37cba1a1e2ecbb2a5b23f8d127b6892d 0xe1c52dc63b719ade82e8bea94cc41a0d5d28e4aaf536adb5e9cccc9ff8c1aeda +342111 0x97e58c7d37cba1a1e2ecbb2a5b23f8d127b6892d 0xe7c957c06e9a662c1a6c77366179f5b702b97651dc28eee7d5bf1dff6e40bb4a +342115 0x97e58c7d37cba1a1e2ecbb2a5b23f8d127b6892d 0x92ca3a80853e6663fa31fa10b99225f18d4902939b4c53a9caae9043f6efd004 +342118 0x97e58c7d37cba1a1e2ecbb2a5b23f8d127b6892d 0x92ca3a80853e6663fa31fa10b99225f18d4902939b4c53a9caae9043f6efd004 +342118 0xfe8ad7dd2f564a877cc23feea6c0a9cc2e783715 0xe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c +342125 0x97e58c7d37cba1a1e2ecbb2a5b23f8d127b6892d 0xe1c52dc63b719ade82e8bea94cc41a0d5d28e4aaf536adb5e9cccc9ff8c1aeda +342125 0x97e58c7d37cba1a1e2ecbb2a5b23f8d127b6892d 0x1733cbb53659d713b79580f79f3f9ff215f78a7c7aa45890f3b89fc5cddfbf32 +342140 0x97e58c7d37cba1a1e2ecbb2a5b23f8d127b6892d 0xc7fb647e59b18047309aa15aad418e5d7ca96d173ad704f1031a2c3d7591734b +342141 0x97e58c7d37cba1a1e2ecbb2a5b23f8d127b6892d 0xe1c52dc63b719ade82e8bea94cc41a0d5d28e4aaf536adb5e9cccc9ff8c1aeda +342145 0x97e58c7d37cba1a1e2ecbb2a5b23f8d127b6892d 0xe1c52dc63b719ade82e8bea94cc41a0d5d28e4aaf536adb5e9cccc9ff8c1aeda +342145 0xfe8ad7dd2f564a877cc23feea6c0a9cc2e783715 0xe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c +342145 0x97e58c7d37cba1a1e2ecbb2a5b23f8d127b6892d 0xe7c957c06e9a662c1a6c77366179f5b702b97651dc28eee7d5bf1dff6e40bb4a +342162 0x97e58c7d37cba1a1e2ecbb2a5b23f8d127b6892d 0xe1c52dc63b719ade82e8bea94cc41a0d5d28e4aaf536adb5e9cccc9ff8c1aeda +342162 0x97e58c7d37cba1a1e2ecbb2a5b23f8d127b6892d 0x1733cbb53659d713b79580f79f3f9ff215f78a7c7aa45890f3b89fc5cddfbf32 +342173 0x97e58c7d37cba1a1e2ecbb2a5b23f8d127b6892d 0xe1c52dc63b719ade82e8bea94cc41a0d5d28e4aaf536adb5e9cccc9ff8c1aeda +342173 0x97e58c7d37cba1a1e2ecbb2a5b23f8d127b6892d 0x1733cbb53659d713b79580f79f3f9ff215f78a7c7aa45890f3b89fc5cddfbf32 +342188 0x97e58c7d37cba1a1e2ecbb2a5b23f8d127b6892d 0xe1c52dc63b719ade82e8bea94cc41a0d5d28e4aaf536adb5e9cccc9ff8c1aeda +342188 0x97e58c7d37cba1a1e2ecbb2a5b23f8d127b6892d 0x1733cbb53659d713b79580f79f3f9ff215f78a7c7aa45890f3b89fc5cddfbf32 +342272 0x65eb93c4e0854e3b00a64cd18c176a7fd54dc50f 0xe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c +342386 0x65eb93c4e0854e3b00a64cd18c176a7fd54dc50f 0x92ca3a80853e6663fa31fa10b99225f18d4902939b4c53a9caae9043f6efd004 +342386 0x8056338e73fde306bb5d9aedec7f4a7b8637c9e7 0xe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c +342399 0x65eb93c4e0854e3b00a64cd18c176a7fd54dc50f 0x92ca3a80853e6663fa31fa10b99225f18d4902939b4c53a9caae9043f6efd004 +342466 0xc7696b27830dd8aa4823a1cba8440c27c36adec4 0x39d732521214059f57de4c0f92879304394ef7c5e530a8708b7113a42f9f0878 0x00000000000000000000000014a986e0b8943efe13e2f3514878dcd1fe08a677 +342466 0xc7696b27830dd8aa4823a1cba8440c27c36adec4 0x44bbf497379e88194e67c38a8b2e628ef3803579306f3fd2177ce81afb3d743f 0x00000000000000000000000014a986e0b8943efe13e2f3514878dcd1fe08a677 +342601 0x97e58c7d37cba1a1e2ecbb2a5b23f8d127b6892d 0xe1c52dc63b719ade82e8bea94cc41a0d5d28e4aaf536adb5e9cccc9ff8c1aeda +342601 0x97e58c7d37cba1a1e2ecbb2a5b23f8d127b6892d 0xe7c957c06e9a662c1a6c77366179f5b702b97651dc28eee7d5bf1dff6e40bb4a +342616 0x97e58c7d37cba1a1e2ecbb2a5b23f8d127b6892d 0xc7fb647e59b18047309aa15aad418e5d7ca96d173ad704f1031a2c3d7591734b +342618 0x97e58c7d37cba1a1e2ecbb2a5b23f8d127b6892d 0xc7fb647e59b18047309aa15aad418e5d7ca96d173ad704f1031a2c3d7591734b +342924 0xc7696b27830dd8aa4823a1cba8440c27c36adec4 0x39d732521214059f57de4c0f92879304394ef7c5e530a8708b7113a42f9f0878 0x000000000000000000000000144c12d635ded35f0e0576564b95cf08045cb3ee +342924 0xc7696b27830dd8aa4823a1cba8440c27c36adec4 0x44bbf497379e88194e67c38a8b2e628ef3803579306f3fd2177ce81afb3d743f 0x000000000000000000000000144c12d635ded35f0e0576564b95cf08045cb3ee +342964 0xc7696b27830dd8aa4823a1cba8440c27c36adec4 0x39d732521214059f57de4c0f92879304394ef7c5e530a8708b7113a42f9f0878 0x000000000000000000000000c36d3ccea8fb30b8f2c66af05bc3b5433d59168d +342964 0xc7696b27830dd8aa4823a1cba8440c27c36adec4 0x44bbf497379e88194e67c38a8b2e628ef3803579306f3fd2177ce81afb3d743f 0x000000000000000000000000c36d3ccea8fb30b8f2c66af05bc3b5433d59168d +343006 0x4bcd0591897025a0c42d500b4c37b11de6d96a3c 0xe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c +343021 0x4bcd0591897025a0c42d500b4c37b11de6d96a3c 0x92ca3a80853e6663fa31fa10b99225f18d4902939b4c53a9caae9043f6efd004 +343059 0xcf8470d3388a198418e02aaf8e37392cfbc18867 0xe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c +343079 0xcf8470d3388a198418e02aaf8e37392cfbc18867 0xe1c52dc63b719ade82e8bea94cc41a0d5d28e4aaf536adb5e9cccc9ff8c1aeda +343079 0xcf8470d3388a198418e02aaf8e37392cfbc18867 0x1733cbb53659d713b79580f79f3f9ff215f78a7c7aa45890f3b89fc5cddfbf32 +343083 0xc7696b27830dd8aa4823a1cba8440c27c36adec4 0x39d732521214059f57de4c0f92879304394ef7c5e530a8708b7113a42f9f0878 0x0000000000000000000000006fa4aa0d8ce57b5325b1d04708db281bbe95b23b +343083 0xc7696b27830dd8aa4823a1cba8440c27c36adec4 0x44bbf497379e88194e67c38a8b2e628ef3803579306f3fd2177ce81afb3d743f 0x0000000000000000000000006fa4aa0d8ce57b5325b1d04708db281bbe95b23b +343133 0xfadd0c5d206310344a31711da36ac89a7baeb388 0xe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c +343162 0x7011f3edc7fa43c81440f9f43a6458174113b162 0x66d0ee9ee580464eb06bb7adef164c593ad3173da5b9937511307bb4646d392e 0x0000000000000000000000000000000000000000000000000000000000000061 +343185 0x7011f3edc7fa43c81440f9f43a6458174113b162 0x66d0ee9ee580464eb06bb7adef164c593ad3173da5b9937511307bb4646d392e 0x0000000000000000000000000000000000000000000000000000000000000062 +343339 0xc7696b27830dd8aa4823a1cba8440c27c36adec4 0x39d732521214059f57de4c0f92879304394ef7c5e530a8708b7113a42f9f0878 0x000000000000000000000000b9e893dc7da0b5b3eb9678d4860fb885f92be9cf +343339 0xc7696b27830dd8aa4823a1cba8440c27c36adec4 0x44bbf497379e88194e67c38a8b2e628ef3803579306f3fd2177ce81afb3d743f 0x000000000000000000000000b9e893dc7da0b5b3eb9678d4860fb885f92be9cf +343946 0xfa15b8c872f533cd40abfd055507f2907bcf1581 0x16cdf1707799c6655baac6e210f52b94b7cec08adcaf9ede7dfe8649da926146 +343966 0xfa15b8c872f533cd40abfd055507f2907bcf1581 0x16cdf1707799c6655baac6e210f52b94b7cec08adcaf9ede7dfe8649da926146 +343971 0xfa15b8c872f533cd40abfd055507f2907bcf1581 0x16cdf1707799c6655baac6e210f52b94b7cec08adcaf9ede7dfe8649da926146 +344121 0xc7696b27830dd8aa4823a1cba8440c27c36adec4 0x39d732521214059f57de4c0f92879304394ef7c5e530a8708b7113a42f9f0878 0x0000000000000000000000002b051365221244a2baefb07e7ac1a291893e0867 +344121 0xc7696b27830dd8aa4823a1cba8440c27c36adec4 0x44bbf497379e88194e67c38a8b2e628ef3803579306f3fd2177ce81afb3d743f 0x0000000000000000000000002b051365221244a2baefb07e7ac1a291893e0867 +344164 0xc7696b27830dd8aa4823a1cba8440c27c36adec4 0x39d732521214059f57de4c0f92879304394ef7c5e530a8708b7113a42f9f0878 0x0000000000000000000000002b051365221244a2baefb07e7ac1a291893e0867 +344164 0xc7696b27830dd8aa4823a1cba8440c27c36adec4 0x44bbf497379e88194e67c38a8b2e628ef3803579306f3fd2177ce81afb3d743f 0x0000000000000000000000002b051365221244a2baefb07e7ac1a291893e0867 +344839 0xc7696b27830dd8aa4823a1cba8440c27c36adec4 0x39d732521214059f57de4c0f92879304394ef7c5e530a8708b7113a42f9f0878 0x0000000000000000000000001c3b909facd70e74c5697f1329c2d0cc0dd5ac3e +344839 0xc7696b27830dd8aa4823a1cba8440c27c36adec4 0x44bbf497379e88194e67c38a8b2e628ef3803579306f3fd2177ce81afb3d743f 0x0000000000000000000000001c3b909facd70e74c5697f1329c2d0cc0dd5ac3e +345506 0xfadd0c5d206310344a31711da36ac89a7baeb388 0xe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c +346112 0xfa15b8c872f533cd40abfd055507f2907bcf1581 0x16cdf1707799c6655baac6e210f52b94b7cec08adcaf9ede7dfe8649da926146 +346112 0xfa15b8c872f533cd40abfd055507f2907bcf1581 0x16cdf1707799c6655baac6e210f52b94b7cec08adcaf9ede7dfe8649da926146 +346392 0xfa15b8c872f533cd40abfd055507f2907bcf1581 0x16cdf1707799c6655baac6e210f52b94b7cec08adcaf9ede7dfe8649da926146 +346395 0xfa15b8c872f533cd40abfd055507f2907bcf1581 0x16cdf1707799c6655baac6e210f52b94b7cec08adcaf9ede7dfe8649da926146 +346398 0xfa15b8c872f533cd40abfd055507f2907bcf1581 0x16cdf1707799c6655baac6e210f52b94b7cec08adcaf9ede7dfe8649da926146 +346425 0xfa15b8c872f533cd40abfd055507f2907bcf1581 0x16cdf1707799c6655baac6e210f52b94b7cec08adcaf9ede7dfe8649da926146 +346448 0xfa15b8c872f533cd40abfd055507f2907bcf1581 0x16cdf1707799c6655baac6e210f52b94b7cec08adcaf9ede7dfe8649da926146 +346451 0xfa15b8c872f533cd40abfd055507f2907bcf1581 0x16cdf1707799c6655baac6e210f52b94b7cec08adcaf9ede7dfe8649da926146 +346454 0xfa15b8c872f533cd40abfd055507f2907bcf1581 0x16cdf1707799c6655baac6e210f52b94b7cec08adcaf9ede7dfe8649da926146 +346464 0xfa15b8c872f533cd40abfd055507f2907bcf1581 0x16cdf1707799c6655baac6e210f52b94b7cec08adcaf9ede7dfe8649da926146 +346466 0xfa15b8c872f533cd40abfd055507f2907bcf1581 0x16cdf1707799c6655baac6e210f52b94b7cec08adcaf9ede7dfe8649da926146 +347014 0xd2d8d510980ef02fb2c3b79479d9b57d3bc7e2e7 0x16cdf1707799c6655baac6e210f52b94b7cec08adcaf9ede7dfe8649da926146 +347301 0xc7696b27830dd8aa4823a1cba8440c27c36adec4 0x39d732521214059f57de4c0f92879304394ef7c5e530a8708b7113a42f9f0878 0x000000000000000000000000848e4dc353b9962471cd6506adc206f001e15fec +347301 0xc7696b27830dd8aa4823a1cba8440c27c36adec4 0x44bbf497379e88194e67c38a8b2e628ef3803579306f3fd2177ce81afb3d743f 0x000000000000000000000000848e4dc353b9962471cd6506adc206f001e15fec +347333 0xc7696b27830dd8aa4823a1cba8440c27c36adec4 0x39d732521214059f57de4c0f92879304394ef7c5e530a8708b7113a42f9f0878 0x000000000000000000000000848e4dc353b9962471cd6506adc206f001e15fec +347333 0xc7696b27830dd8aa4823a1cba8440c27c36adec4 0x44bbf497379e88194e67c38a8b2e628ef3803579306f3fd2177ce81afb3d743f 0x000000000000000000000000848e4dc353b9962471cd6506adc206f001e15fec +347613 0xad8d3a5d2d92eb14bb56ca9f380be35b8efe0c04 0x4c13017ee95afc4bbd8a701dd9fbc9733f1f09f5a1b5438b5b9abd48e4c92d78 0x5858585858585858580000000000000000000000000000000000000000000000 0x0000000000000000000000000075f6703dad72b3e89f3243b2666a7f1bd815c0 +347700 0xebd81a08ded0efaba8ef51924fb967b64aa85399 0xe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c +347705 0xebd81a08ded0efaba8ef51924fb967b64aa85399 0xe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c +347711 0xebd81a08ded0efaba8ef51924fb967b64aa85399 0xe1c52dc63b719ade82e8bea94cc41a0d5d28e4aaf536adb5e9cccc9ff8c1aeda +347711 0xebd81a08ded0efaba8ef51924fb967b64aa85399 0x1733cbb53659d713b79580f79f3f9ff215f78a7c7aa45890f3b89fc5cddfbf32 +347853 0xebd81a08ded0efaba8ef51924fb967b64aa85399 0x92ca3a80853e6663fa31fa10b99225f18d4902939b4c53a9caae9043f6efd004 +347953 0xebd81a08ded0efaba8ef51924fb967b64aa85399 0xc7fb647e59b18047309aa15aad418e5d7ca96d173ad704f1031a2c3d7591734b +347958 0xebd81a08ded0efaba8ef51924fb967b64aa85399 0xe1c52dc63b719ade82e8bea94cc41a0d5d28e4aaf536adb5e9cccc9ff8c1aeda +347958 0xebd81a08ded0efaba8ef51924fb967b64aa85399 0x1733cbb53659d713b79580f79f3f9ff215f78a7c7aa45890f3b89fc5cddfbf32 +347960 0xebd81a08ded0efaba8ef51924fb967b64aa85399 0xe1c52dc63b719ade82e8bea94cc41a0d5d28e4aaf536adb5e9cccc9ff8c1aeda +347960 0xebd81a08ded0efaba8ef51924fb967b64aa85399 0xe7c957c06e9a662c1a6c77366179f5b702b97651dc28eee7d5bf1dff6e40bb4a +348019 0xfadd0c5d206310344a31711da36ac89a7baeb388 0xe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c +348244 0xc7696b27830dd8aa4823a1cba8440c27c36adec4 0x39d732521214059f57de4c0f92879304394ef7c5e530a8708b7113a42f9f0878 0x000000000000000000000000fae49cd796d28e8eca3fd701f86864940270a6fe +348244 0xc7696b27830dd8aa4823a1cba8440c27c36adec4 0x44bbf497379e88194e67c38a8b2e628ef3803579306f3fd2177ce81afb3d743f 0x000000000000000000000000fae49cd796d28e8eca3fd701f86864940270a6fe +348443 0xc7696b27830dd8aa4823a1cba8440c27c36adec4 0x39d732521214059f57de4c0f92879304394ef7c5e530a8708b7113a42f9f0878 0x0000000000000000000000001819c2a9ff0b2ebdc677b6e8f4ee5c2bd6b73dae +348443 0xc7696b27830dd8aa4823a1cba8440c27c36adec4 0x44bbf497379e88194e67c38a8b2e628ef3803579306f3fd2177ce81afb3d743f 0x0000000000000000000000001819c2a9ff0b2ebdc677b6e8f4ee5c2bd6b73dae +348675 0xc7696b27830dd8aa4823a1cba8440c27c36adec4 0x39d732521214059f57de4c0f92879304394ef7c5e530a8708b7113a42f9f0878 0x000000000000000000000000fc039dc8cdba96ab8ceb01c972375b71ddcc6b2e +348675 0xc7696b27830dd8aa4823a1cba8440c27c36adec4 0x44bbf497379e88194e67c38a8b2e628ef3803579306f3fd2177ce81afb3d743f 0x000000000000000000000000fc039dc8cdba96ab8ceb01c972375b71ddcc6b2e +348743 0xfa15b8c872f533cd40abfd055507f2907bcf1581 0x16cdf1707799c6655baac6e210f52b94b7cec08adcaf9ede7dfe8649da926146 +348936 0xc7696b27830dd8aa4823a1cba8440c27c36adec4 0x39d732521214059f57de4c0f92879304394ef7c5e530a8708b7113a42f9f0878 0x000000000000000000000000b3303a4f7ef21aed2325856caa14417e91ee5404 +348936 0xc7696b27830dd8aa4823a1cba8440c27c36adec4 0x44bbf497379e88194e67c38a8b2e628ef3803579306f3fd2177ce81afb3d743f 0x000000000000000000000000b3303a4f7ef21aed2325856caa14417e91ee5404 +350544 0xfadd0c5d206310344a31711da36ac89a7baeb388 0xe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c +351473 0xebd81a08ded0efaba8ef51924fb967b64aa85399 0x92ca3a80853e6663fa31fa10b99225f18d4902939b4c53a9caae9043f6efd004 +353157 0xfadd0c5d206310344a31711da36ac89a7baeb388 0xe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c +353181 0xf01d37496e1ad7f30bdc17f0dd55b7b19e53f767 0xe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c +353196 0xf01d37496e1ad7f30bdc17f0dd55b7b19e53f767 0xe1c52dc63b719ade82e8bea94cc41a0d5d28e4aaf536adb5e9cccc9ff8c1aeda +353196 0xf01d37496e1ad7f30bdc17f0dd55b7b19e53f767 0x1733cbb53659d713b79580f79f3f9ff215f78a7c7aa45890f3b89fc5cddfbf32 +353273 0xf01d37496e1ad7f30bdc17f0dd55b7b19e53f767 0xc7fb647e59b18047309aa15aad418e5d7ca96d173ad704f1031a2c3d7591734b +353276 0xf01d37496e1ad7f30bdc17f0dd55b7b19e53f767 0xe1c52dc63b719ade82e8bea94cc41a0d5d28e4aaf536adb5e9cccc9ff8c1aeda +353359 0xe2d560cc321a4e09e182693d45a3836ffd27a1bd 0x302777af5d26fab9dd5120c5f1307c65193ebc51daf33244ada4365fab10602c +353359 0xfd5ff05cb15b2e8cddd0e96912a5dee8044b9374 0x302777af5d26fab9dd5120c5f1307c65193ebc51daf33244ada4365fab10602c +353360 0x991c5b56fffb2e45444b5fc5be9304ac9576849b 0x302777af5d26fab9dd5120c5f1307c65193ebc51daf33244ada4365fab10602c +353361 0x7011f3edc7fa43c81440f9f43a6458174113b162 0x66d0ee9ee580464eb06bb7adef164c593ad3173da5b9937511307bb4646d392e 0x0000000000000000000000000000000000000000000000000000000000000063 +353367 0x7011f3edc7fa43c81440f9f43a6458174113b162 0x66d0ee9ee580464eb06bb7adef164c593ad3173da5b9937511307bb4646d392e 0x0000000000000000000000000000000000000000000000000000000000000064 +353370 0x7011f3edc7fa43c81440f9f43a6458174113b162 0x66d0ee9ee580464eb06bb7adef164c593ad3173da5b9937511307bb4646d392e 0x0000000000000000000000000000000000000000000000000000000000000065 +353438 0x52c6b42c37818ee7d562b52396685710b19801ec 0x302777af5d26fab9dd5120c5f1307c65193ebc51daf33244ada4365fab10602c +353438 0xf9da1908cc2280578b2639e3a4576dc77624868b 0x302777af5d26fab9dd5120c5f1307c65193ebc51daf33244ada4365fab10602c +353443 0x7011f3edc7fa43c81440f9f43a6458174113b162 0x66d0ee9ee580464eb06bb7adef164c593ad3173da5b9937511307bb4646d392e 0x0000000000000000000000000000000000000000000000000000000000000066 +353447 0x7011f3edc7fa43c81440f9f43a6458174113b162 0x66d0ee9ee580464eb06bb7adef164c593ad3173da5b9937511307bb4646d392e 0x0000000000000000000000000000000000000000000000000000000000000067 +353479 0xc7696b27830dd8aa4823a1cba8440c27c36adec4 0x39d732521214059f57de4c0f92879304394ef7c5e530a8708b7113a42f9f0878 0x000000000000000000000000aadd74f71770fbef7325860bce13cff05e3ad1c9 +353479 0xc7696b27830dd8aa4823a1cba8440c27c36adec4 0x44bbf497379e88194e67c38a8b2e628ef3803579306f3fd2177ce81afb3d743f 0x000000000000000000000000aadd74f71770fbef7325860bce13cff05e3ad1c9 +354071 0x36290e3f7c0e074a9e80cd6eb2f36b77411c19d7 0xa192e48a82f18ef1c93e722713426e5733e98d5b2858ba5c7457faf4a8297dab 0x000000000000000000000000b834e3edfc1a927bdcecb67a9d0eccbd752a5bb3 0x0000000000000000000000000000000000000000000000000000000000056917 +354151 0xdb15058402c241b04a03846f6fb104b1fbeea10b 0x5ca1bad5a7f3ee229aa045a13d9936a9a5f7f70067a0e39bdb8a6c0086b1544c 0xb56c4a1a61178e44bb3c424e54fccd7a48926c8ee43735cfa297f51c116344f1 +354162 0xdb15058402c241b04a03846f6fb104b1fbeea10b 0x5548c837ab068cf56a2c2479df0882a4922fd203edb7517321831d95078c5f62 0x000000000000000000000000d3cda913deb6f67967b99d67acdfa1712c293601 0x000000000000000000000000afbc7cedd81c694e8033b101a0b49bfc1e5176e2 +354233 0xdb15058402c241b04a03846f6fb104b1fbeea10b 0xed1062ba7ed13514b41ef115d3c324f50dcd644da75ee5659e9ae97071774f1e 0x000000000000000000000000b834e3edfc1a927bdcecb67a9d0eccbd752a5bb3 0xb56c4a1a61178e44bb3c424e54fccd7a48926c8ee43735cfa297f51c116344f1 +354585 0xdb15058402c241b04a03846f6fb104b1fbeea10b 0x884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a9424364 0x000000000000000000000000afbc7cedd81c694e8033b101a0b49bfc1e5176e2 +354866 0xc7696b27830dd8aa4823a1cba8440c27c36adec4 0x39d732521214059f57de4c0f92879304394ef7c5e530a8708b7113a42f9f0878 0x0000000000000000000000009b75587d8d49477de8b6e845ccb40d970bf8701a +354866 0xc7696b27830dd8aa4823a1cba8440c27c36adec4 0x44bbf497379e88194e67c38a8b2e628ef3803579306f3fd2177ce81afb3d743f 0x0000000000000000000000009b75587d8d49477de8b6e845ccb40d970bf8701a +356461 0x84be9f9c3e3dc0721d628a3b8ef55fbe096c0495 0x0000000000000000000000000000000000000000000000000000000000000060 +356488 0xf0ea74d3e2743e880dcf12e731d6bdd5788a548c 0xf2fb068683a2e3c90600f0aab753f44a2340e65156afd0f69518d72b55354ece 0x0000000000000000000000000000000000000000000000000000000000000060 +356513 0x69e3eab0a888f72c161d1f2e4e97eb8f0089af88 0x3fbfa2086703ed2c0e6065c0a6d81aa1ffdf01229d542d9f132b6696db6c66f1 0x9c22ff5f21f0b81b113e63f7db6da94fedef11b2119b4088b89664fb9a3cb658 +356526 0xfadd0c5d206310344a31711da36ac89a7baeb388 0xe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c +356535 0xaf40044f727b3975174ed30d21a850b2f8619f11 0x7465737400000000000000000000000000000000000000000000000000000000 +356543 0xaf40044f727b3975174ed30d21a850b2f8619f11 0x3963323266663566323166306238316231313365363366376462366461393466 +357195 0xc7696b27830dd8aa4823a1cba8440c27c36adec4 0x39d732521214059f57de4c0f92879304394ef7c5e530a8708b7113a42f9f0878 0x000000000000000000000000a2792b9f27a466a635649f551a4109a179b00fbf +357195 0xc7696b27830dd8aa4823a1cba8440c27c36adec4 0x44bbf497379e88194e67c38a8b2e628ef3803579306f3fd2177ce81afb3d743f 0x000000000000000000000000a2792b9f27a466a635649f551a4109a179b00fbf +357579 0xfa15b8c872f533cd40abfd055507f2907bcf1581 0x16cdf1707799c6655baac6e210f52b94b7cec08adcaf9ede7dfe8649da926146 +357588 0xfa15b8c872f533cd40abfd055507f2907bcf1581 0x16cdf1707799c6655baac6e210f52b94b7cec08adcaf9ede7dfe8649da926146 +357590 0xcf8470d3388a198418e02aaf8e37392cfbc18867 0xe1c52dc63b719ade82e8bea94cc41a0d5d28e4aaf536adb5e9cccc9ff8c1aeda +357590 0xcf8470d3388a198418e02aaf8e37392cfbc18867 0x1733cbb53659d713b79580f79f3f9ff215f78a7c7aa45890f3b89fc5cddfbf32 +357592 0xfa15b8c872f533cd40abfd055507f2907bcf1581 0x16cdf1707799c6655baac6e210f52b94b7cec08adcaf9ede7dfe8649da926146 +357600 0xfa15b8c872f533cd40abfd055507f2907bcf1581 0x16cdf1707799c6655baac6e210f52b94b7cec08adcaf9ede7dfe8649da926146 +357622 0xfa15b8c872f533cd40abfd055507f2907bcf1581 0x16cdf1707799c6655baac6e210f52b94b7cec08adcaf9ede7dfe8649da926146 +357630 0xfa15b8c872f533cd40abfd055507f2907bcf1581 0x16cdf1707799c6655baac6e210f52b94b7cec08adcaf9ede7dfe8649da926146 +358290 0xfe8ad7dd2f564a877cc23feea6c0a9cc2e783715 0x92ca3a80853e6663fa31fa10b99225f18d4902939b4c53a9caae9043f6efd004 +358290 0x97e58c7d37cba1a1e2ecbb2a5b23f8d127b6892d 0xe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c +358426 0x97e58c7d37cba1a1e2ecbb2a5b23f8d127b6892d 0x92ca3a80853e6663fa31fa10b99225f18d4902939b4c53a9caae9043f6efd004 +358556 0xc7696b27830dd8aa4823a1cba8440c27c36adec4 0x39d732521214059f57de4c0f92879304394ef7c5e530a8708b7113a42f9f0878 0x000000000000000000000000a2792b9f27a466a635649f551a4109a179b00fbf +358556 0xc7696b27830dd8aa4823a1cba8440c27c36adec4 0x44bbf497379e88194e67c38a8b2e628ef3803579306f3fd2177ce81afb3d743f 0x000000000000000000000000a2792b9f27a466a635649f551a4109a179b00fbf +358811 0xc7696b27830dd8aa4823a1cba8440c27c36adec4 0x39d732521214059f57de4c0f92879304394ef7c5e530a8708b7113a42f9f0878 0x000000000000000000000000b76246acebd335e1af9e2073f684ff6c555816c6 +358811 0xc7696b27830dd8aa4823a1cba8440c27c36adec4 0x44bbf497379e88194e67c38a8b2e628ef3803579306f3fd2177ce81afb3d743f 0x000000000000000000000000b76246acebd335e1af9e2073f684ff6c555816c6 +359114 0xc7696b27830dd8aa4823a1cba8440c27c36adec4 0x39d732521214059f57de4c0f92879304394ef7c5e530a8708b7113a42f9f0878 0x000000000000000000000000a2792b9f27a466a635649f551a4109a179b00fbf +359114 0xc7696b27830dd8aa4823a1cba8440c27c36adec4 0x44bbf497379e88194e67c38a8b2e628ef3803579306f3fd2177ce81afb3d743f 0x000000000000000000000000a2792b9f27a466a635649f551a4109a179b00fbf +359375 0x7011f3edc7fa43c81440f9f43a6458174113b162 0x66d0ee9ee580464eb06bb7adef164c593ad3173da5b9937511307bb4646d392e 0x0000000000000000000000000000000000000000000000000000000000000068 +359378 0x7011f3edc7fa43c81440f9f43a6458174113b162 0x66d0ee9ee580464eb06bb7adef164c593ad3173da5b9937511307bb4646d392e 0x0000000000000000000000000000000000000000000000000000000000000069 +359378 0x4d6387f3b967da39b11de111158d49754c31985d 0x2dba1d9e78f3192742fc9d510383d669fe8a4fa03d039bd7382ef67119078af7 0x0000000000000000000000000000000000000000000000000000000000000012 +359538 0x7011f3edc7fa43c81440f9f43a6458174113b162 0x66d0ee9ee580464eb06bb7adef164c593ad3173da5b9937511307bb4646d392e 0x000000000000000000000000000000000000000000000000000000000000006a +361585 0xc7696b27830dd8aa4823a1cba8440c27c36adec4 0x39d732521214059f57de4c0f92879304394ef7c5e530a8708b7113a42f9f0878 0x000000000000000000000000a2792b9f27a466a635649f551a4109a179b00fbf +361585 0xc7696b27830dd8aa4823a1cba8440c27c36adec4 0x44bbf497379e88194e67c38a8b2e628ef3803579306f3fd2177ce81afb3d743f 0x000000000000000000000000a2792b9f27a466a635649f551a4109a179b00fbf +361588 0xc7696b27830dd8aa4823a1cba8440c27c36adec4 0x39d732521214059f57de4c0f92879304394ef7c5e530a8708b7113a42f9f0878 0x000000000000000000000000a2792b9f27a466a635649f551a4109a179b00fbf +361588 0xc7696b27830dd8aa4823a1cba8440c27c36adec4 0x44bbf497379e88194e67c38a8b2e628ef3803579306f3fd2177ce81afb3d743f 0x000000000000000000000000a2792b9f27a466a635649f551a4109a179b00fbf +361732 0xc7696b27830dd8aa4823a1cba8440c27c36adec4 0x39d732521214059f57de4c0f92879304394ef7c5e530a8708b7113a42f9f0878 0x00000000000000000000000030d9803d6754bd9ad6d3a9990ca7a07af8745d5a +361732 0xc7696b27830dd8aa4823a1cba8440c27c36adec4 0x44bbf497379e88194e67c38a8b2e628ef3803579306f3fd2177ce81afb3d743f 0x00000000000000000000000030d9803d6754bd9ad6d3a9990ca7a07af8745d5a +361757 0xcf8470d3388a198418e02aaf8e37392cfbc18867 0xe1c52dc63b719ade82e8bea94cc41a0d5d28e4aaf536adb5e9cccc9ff8c1aeda +361757 0xcf8470d3388a198418e02aaf8e37392cfbc18867 0xe7c957c06e9a662c1a6c77366179f5b702b97651dc28eee7d5bf1dff6e40bb4a +361775 0xcf8470d3388a198418e02aaf8e37392cfbc18867 0xc7fb647e59b18047309aa15aad418e5d7ca96d173ad704f1031a2c3d7591734b +362002 0xc7696b27830dd8aa4823a1cba8440c27c36adec4 0x39d732521214059f57de4c0f92879304394ef7c5e530a8708b7113a42f9f0878 0x00000000000000000000000013a85703f391b8c9abb8068be03ff4d6aebd11eb +362002 0xc7696b27830dd8aa4823a1cba8440c27c36adec4 0x44bbf497379e88194e67c38a8b2e628ef3803579306f3fd2177ce81afb3d743f 0x00000000000000000000000013a85703f391b8c9abb8068be03ff4d6aebd11eb +365791 0xfd5ff05cb15b2e8cddd0e96912a5dee8044b9374 0x302777af5d26fab9dd5120c5f1307c65193ebc51daf33244ada4365fab10602c +365793 0x7011f3edc7fa43c81440f9f43a6458174113b162 0x66d0ee9ee580464eb06bb7adef164c593ad3173da5b9937511307bb4646d392e 0x000000000000000000000000000000000000000000000000000000000000006b +369141 0xc7696b27830dd8aa4823a1cba8440c27c36adec4 0x39d732521214059f57de4c0f92879304394ef7c5e530a8708b7113a42f9f0878 0x0000000000000000000000006407c4286dc1c84aab28720eea596212c026450e +369141 0xc7696b27830dd8aa4823a1cba8440c27c36adec4 0x44bbf497379e88194e67c38a8b2e628ef3803579306f3fd2177ce81afb3d743f 0x0000000000000000000000006407c4286dc1c84aab28720eea596212c026450e +369239 0xfa15b8c872f533cd40abfd055507f2907bcf1581 0x16cdf1707799c6655baac6e210f52b94b7cec08adcaf9ede7dfe8649da926146 +369249 0xfa15b8c872f533cd40abfd055507f2907bcf1581 0x16cdf1707799c6655baac6e210f52b94b7cec08adcaf9ede7dfe8649da926146 +369253 0xfa15b8c872f533cd40abfd055507f2907bcf1581 0x16cdf1707799c6655baac6e210f52b94b7cec08adcaf9ede7dfe8649da926146 +369259 0xfa15b8c872f533cd40abfd055507f2907bcf1581 0x16cdf1707799c6655baac6e210f52b94b7cec08adcaf9ede7dfe8649da926146 +369261 0xfa15b8c872f533cd40abfd055507f2907bcf1581 0x16cdf1707799c6655baac6e210f52b94b7cec08adcaf9ede7dfe8649da926146 +369263 0xfa15b8c872f533cd40abfd055507f2907bcf1581 0x16cdf1707799c6655baac6e210f52b94b7cec08adcaf9ede7dfe8649da926146 +369274 0xfa15b8c872f533cd40abfd055507f2907bcf1581 0x16cdf1707799c6655baac6e210f52b94b7cec08adcaf9ede7dfe8649da926146 +369426 0xe2d560cc321a4e09e182693d45a3836ffd27a1bd 0x302777af5d26fab9dd5120c5f1307c65193ebc51daf33244ada4365fab10602c +369426 0xfd5ff05cb15b2e8cddd0e96912a5dee8044b9374 0x302777af5d26fab9dd5120c5f1307c65193ebc51daf33244ada4365fab10602c +369428 0x7011f3edc7fa43c81440f9f43a6458174113b162 0x66d0ee9ee580464eb06bb7adef164c593ad3173da5b9937511307bb4646d392e 0x000000000000000000000000000000000000000000000000000000000000006c +369428 0x4d6387f3b967da39b11de111158d49754c31985d 0x2dba1d9e78f3192742fc9d510383d669fe8a4fa03d039bd7382ef67119078af7 0x0000000000000000000000000000000000000000000000000000000000000013 +369431 0x7011f3edc7fa43c81440f9f43a6458174113b162 0x66d0ee9ee580464eb06bb7adef164c593ad3173da5b9937511307bb4646d392e 0x000000000000000000000000000000000000000000000000000000000000006d +369538 0xfd5ff05cb15b2e8cddd0e96912a5dee8044b9374 0x302777af5d26fab9dd5120c5f1307c65193ebc51daf33244ada4365fab10602c +369540 0x7011f3edc7fa43c81440f9f43a6458174113b162 0x66d0ee9ee580464eb06bb7adef164c593ad3173da5b9937511307bb4646d392e 0x000000000000000000000000000000000000000000000000000000000000006e +370399 0xc7696b27830dd8aa4823a1cba8440c27c36adec4 0x39d732521214059f57de4c0f92879304394ef7c5e530a8708b7113a42f9f0878 0x00000000000000000000000071dcbc554dada022fdd31333f8883e953240f0b0 +370399 0xc7696b27830dd8aa4823a1cba8440c27c36adec4 0x44bbf497379e88194e67c38a8b2e628ef3803579306f3fd2177ce81afb3d743f 0x00000000000000000000000071dcbc554dada022fdd31333f8883e953240f0b0 +370517 0x6acc9a6876739e9190d06463196e27b6d37405c6 0xf7eba460ce397de720ba4749bd9c125fec27d45ef68e15fffe706e8c211a7f5c +370517 0x36517ccf7a16266de8b7cbd60db1f45a23f1eaf1 0x0cee94601ab1f1d758b126c873d5328735356f811c80bdf6af62fe2534db51b6 +370545 0x6acc9a6876739e9190d06463196e27b6d37405c6 0xf7eba460ce397de720ba4749bd9c125fec27d45ef68e15fffe706e8c211a7f5c +370545 0x36517ccf7a16266de8b7cbd60db1f45a23f1eaf1 0x0cee94601ab1f1d758b126c873d5328735356f811c80bdf6af62fe2534db51b6 +371190 0xfa15b8c872f533cd40abfd055507f2907bcf1581 0x16cdf1707799c6655baac6e210f52b94b7cec08adcaf9ede7dfe8649da926146 +371280 0xfa15b8c872f533cd40abfd055507f2907bcf1581 0x16cdf1707799c6655baac6e210f52b94b7cec08adcaf9ede7dfe8649da926146 +371286 0xfa15b8c872f533cd40abfd055507f2907bcf1581 0x16cdf1707799c6655baac6e210f52b94b7cec08adcaf9ede7dfe8649da926146 +371288 0xfa15b8c872f533cd40abfd055507f2907bcf1581 0x16cdf1707799c6655baac6e210f52b94b7cec08adcaf9ede7dfe8649da926146 +371299 0xfa15b8c872f533cd40abfd055507f2907bcf1581 0x16cdf1707799c6655baac6e210f52b94b7cec08adcaf9ede7dfe8649da926146 +371307 0xfa15b8c872f533cd40abfd055507f2907bcf1581 0x16cdf1707799c6655baac6e210f52b94b7cec08adcaf9ede7dfe8649da926146 +371327 0xfa15b8c872f533cd40abfd055507f2907bcf1581 0x16cdf1707799c6655baac6e210f52b94b7cec08adcaf9ede7dfe8649da926146 +371327 0xfa15b8c872f533cd40abfd055507f2907bcf1581 0x16cdf1707799c6655baac6e210f52b94b7cec08adcaf9ede7dfe8649da926146 +371329 0xfa15b8c872f533cd40abfd055507f2907bcf1581 0x16cdf1707799c6655baac6e210f52b94b7cec08adcaf9ede7dfe8649da926146 +371352 0xfa15b8c872f533cd40abfd055507f2907bcf1581 0x16cdf1707799c6655baac6e210f52b94b7cec08adcaf9ede7dfe8649da926146 +371360 0xfa15b8c872f533cd40abfd055507f2907bcf1581 0x16cdf1707799c6655baac6e210f52b94b7cec08adcaf9ede7dfe8649da926146 +371362 0xfa15b8c872f533cd40abfd055507f2907bcf1581 0x16cdf1707799c6655baac6e210f52b94b7cec08adcaf9ede7dfe8649da926146 +371369 0xfa15b8c872f533cd40abfd055507f2907bcf1581 0x16cdf1707799c6655baac6e210f52b94b7cec08adcaf9ede7dfe8649da926146 +371378 0x6acc9a6876739e9190d06463196e27b6d37405c6 0xf7eba460ce397de720ba4749bd9c125fec27d45ef68e15fffe706e8c211a7f5c +371378 0x36517ccf7a16266de8b7cbd60db1f45a23f1eaf1 0x0cee94601ab1f1d758b126c873d5328735356f811c80bdf6af62fe2534db51b6 +371450 0x6acc9a6876739e9190d06463196e27b6d37405c6 0xf7eba460ce397de720ba4749bd9c125fec27d45ef68e15fffe706e8c211a7f5c +371450 0x36517ccf7a16266de8b7cbd60db1f45a23f1eaf1 0x0cee94601ab1f1d758b126c873d5328735356f811c80bdf6af62fe2534db51b6 +371489 0x6acc9a6876739e9190d06463196e27b6d37405c6 0xf7eba460ce397de720ba4749bd9c125fec27d45ef68e15fffe706e8c211a7f5c +371489 0xd53096b3cf64d4739bb774e0f055653e7f2cd710 0x0cee94601ab1f1d758b126c873d5328735356f811c80bdf6af62fe2534db51b6 +371509 0x6acc9a6876739e9190d06463196e27b6d37405c6 0xf7eba460ce397de720ba4749bd9c125fec27d45ef68e15fffe706e8c211a7f5c +371509 0xd53096b3cf64d4739bb774e0f055653e7f2cd710 0x0cee94601ab1f1d758b126c873d5328735356f811c80bdf6af62fe2534db51b6 +371532 0x6acc9a6876739e9190d06463196e27b6d37405c6 0xf7eba460ce397de720ba4749bd9c125fec27d45ef68e15fffe706e8c211a7f5c +371658 0x6acc9a6876739e9190d06463196e27b6d37405c6 0xf7eba460ce397de720ba4749bd9c125fec27d45ef68e15fffe706e8c211a7f5c +371658 0xd53096b3cf64d4739bb774e0f055653e7f2cd710 0x0cee94601ab1f1d758b126c873d5328735356f811c80bdf6af62fe2534db51b6 +371660 0x6acc9a6876739e9190d06463196e27b6d37405c6 0xf7eba460ce397de720ba4749bd9c125fec27d45ef68e15fffe706e8c211a7f5c +371876 0x6acc9a6876739e9190d06463196e27b6d37405c6 0xf7eba460ce397de720ba4749bd9c125fec27d45ef68e15fffe706e8c211a7f5c +371876 0xd53096b3cf64d4739bb774e0f055653e7f2cd710 0x0cee94601ab1f1d758b126c873d5328735356f811c80bdf6af62fe2534db51b6 +371904 0x6acc9a6876739e9190d06463196e27b6d37405c6 0xf7eba460ce397de720ba4749bd9c125fec27d45ef68e15fffe706e8c211a7f5c +371904 0xd53096b3cf64d4739bb774e0f055653e7f2cd710 0x0cee94601ab1f1d758b126c873d5328735356f811c80bdf6af62fe2534db51b6 +371906 0x6acc9a6876739e9190d06463196e27b6d37405c6 0xf7eba460ce397de720ba4749bd9c125fec27d45ef68e15fffe706e8c211a7f5c +371912 0x6acc9a6876739e9190d06463196e27b6d37405c6 0xf7eba460ce397de720ba4749bd9c125fec27d45ef68e15fffe706e8c211a7f5c +371912 0xd53096b3cf64d4739bb774e0f055653e7f2cd710 0x0cee94601ab1f1d758b126c873d5328735356f811c80bdf6af62fe2534db51b6 +371914 0x6acc9a6876739e9190d06463196e27b6d37405c6 0xf7eba460ce397de720ba4749bd9c125fec27d45ef68e15fffe706e8c211a7f5c +371918 0x6acc9a6876739e9190d06463196e27b6d37405c6 0xf7eba460ce397de720ba4749bd9c125fec27d45ef68e15fffe706e8c211a7f5c +371918 0xd53096b3cf64d4739bb774e0f055653e7f2cd710 0x0cee94601ab1f1d758b126c873d5328735356f811c80bdf6af62fe2534db51b6 +371931 0x6acc9a6876739e9190d06463196e27b6d37405c6 0xf7eba460ce397de720ba4749bd9c125fec27d45ef68e15fffe706e8c211a7f5c +371931 0xd53096b3cf64d4739bb774e0f055653e7f2cd710 0x0cee94601ab1f1d758b126c873d5328735356f811c80bdf6af62fe2534db51b6 +371933 0x6acc9a6876739e9190d06463196e27b6d37405c6 0xf7eba460ce397de720ba4749bd9c125fec27d45ef68e15fffe706e8c211a7f5c +371938 0x6acc9a6876739e9190d06463196e27b6d37405c6 0xf7eba460ce397de720ba4749bd9c125fec27d45ef68e15fffe706e8c211a7f5c +371938 0xd53096b3cf64d4739bb774e0f055653e7f2cd710 0x0cee94601ab1f1d758b126c873d5328735356f811c80bdf6af62fe2534db51b6 +371940 0x6acc9a6876739e9190d06463196e27b6d37405c6 0xf7eba460ce397de720ba4749bd9c125fec27d45ef68e15fffe706e8c211a7f5c +371973 0x6acc9a6876739e9190d06463196e27b6d37405c6 0xf7eba460ce397de720ba4749bd9c125fec27d45ef68e15fffe706e8c211a7f5c +371973 0xd53096b3cf64d4739bb774e0f055653e7f2cd710 0x0cee94601ab1f1d758b126c873d5328735356f811c80bdf6af62fe2534db51b6 +372006 0x6acc9a6876739e9190d06463196e27b6d37405c6 0xf7eba460ce397de720ba4749bd9c125fec27d45ef68e15fffe706e8c211a7f5c +372006 0xd53096b3cf64d4739bb774e0f055653e7f2cd710 0x0cee94601ab1f1d758b126c873d5328735356f811c80bdf6af62fe2534db51b6 +372014 0x6acc9a6876739e9190d06463196e27b6d37405c6 0xf7eba460ce397de720ba4749bd9c125fec27d45ef68e15fffe706e8c211a7f5c +372847 0xfa15b8c872f533cd40abfd055507f2907bcf1581 0x16cdf1707799c6655baac6e210f52b94b7cec08adcaf9ede7dfe8649da926146 +374209 0xfa15b8c872f533cd40abfd055507f2907bcf1581 0x16cdf1707799c6655baac6e210f52b94b7cec08adcaf9ede7dfe8649da926146 +374225 0xfa15b8c872f533cd40abfd055507f2907bcf1581 0x16cdf1707799c6655baac6e210f52b94b7cec08adcaf9ede7dfe8649da926146 +374365 0xfe8ad7dd2f564a877cc23feea6c0a9cc2e783715 0x92ca3a80853e6663fa31fa10b99225f18d4902939b4c53a9caae9043f6efd004 +374388 0x7fb091d48426f54f6fb8d1a43f8e33f80454f4e3 0xe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c +375079 0x6acc9a6876739e9190d06463196e27b6d37405c6 0xf7eba460ce397de720ba4749bd9c125fec27d45ef68e15fffe706e8c211a7f5c +375079 0xd53096b3cf64d4739bb774e0f055653e7f2cd710 0x0cee94601ab1f1d758b126c873d5328735356f811c80bdf6af62fe2534db51b6 +375093 0x6acc9a6876739e9190d06463196e27b6d37405c6 0xf7eba460ce397de720ba4749bd9c125fec27d45ef68e15fffe706e8c211a7f5c +375401 0x4bca74810cc4917a7dee954d21221b72fd87d3d7 0xe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c +375440 0x4bca74810cc4917a7dee954d21221b72fd87d3d7 0x92ca3a80853e6663fa31fa10b99225f18d4902939b4c53a9caae9043f6efd004 +375447 0x4bca74810cc4917a7dee954d21221b72fd87d3d7 0x92ca3a80853e6663fa31fa10b99225f18d4902939b4c53a9caae9043f6efd004 +376493 0x6acc9a6876739e9190d06463196e27b6d37405c6 0xf7eba460ce397de720ba4749bd9c125fec27d45ef68e15fffe706e8c211a7f5c +376573 0xfa15b8c872f533cd40abfd055507f2907bcf1581 0x16cdf1707799c6655baac6e210f52b94b7cec08adcaf9ede7dfe8649da926146 +376588 0xfa15b8c872f533cd40abfd055507f2907bcf1581 0x16cdf1707799c6655baac6e210f52b94b7cec08adcaf9ede7dfe8649da926146 +376644 0xfa15b8c872f533cd40abfd055507f2907bcf1581 0x16cdf1707799c6655baac6e210f52b94b7cec08adcaf9ede7dfe8649da926146 +376650 0xfa15b8c872f533cd40abfd055507f2907bcf1581 0x16cdf1707799c6655baac6e210f52b94b7cec08adcaf9ede7dfe8649da926146 +376668 0xfadd0c5d206310344a31711da36ac89a7baeb388 0xe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c +376906 0xfa15b8c872f533cd40abfd055507f2907bcf1581 0x16cdf1707799c6655baac6e210f52b94b7cec08adcaf9ede7dfe8649da926146 +377026 0xc7696b27830dd8aa4823a1cba8440c27c36adec4 0x39d732521214059f57de4c0f92879304394ef7c5e530a8708b7113a42f9f0878 0x000000000000000000000000a2792b9f27a466a635649f551a4109a179b00fbf +377026 0xc7696b27830dd8aa4823a1cba8440c27c36adec4 0x44bbf497379e88194e67c38a8b2e628ef3803579306f3fd2177ce81afb3d743f 0x000000000000000000000000a2792b9f27a466a635649f551a4109a179b00fbf +377139 0xf01d37496e1ad7f30bdc17f0dd55b7b19e53f767 0xe1c52dc63b719ade82e8bea94cc41a0d5d28e4aaf536adb5e9cccc9ff8c1aeda +377139 0xf01d37496e1ad7f30bdc17f0dd55b7b19e53f767 0xe7c957c06e9a662c1a6c77366179f5b702b97651dc28eee7d5bf1dff6e40bb4a +377506 0x6acc9a6876739e9190d06463196e27b6d37405c6 0xf7eba460ce397de720ba4749bd9c125fec27d45ef68e15fffe706e8c211a7f5c +377523 0x6acc9a6876739e9190d06463196e27b6d37405c6 0xf7eba460ce397de720ba4749bd9c125fec27d45ef68e15fffe706e8c211a7f5c +377523 0xd53096b3cf64d4739bb774e0f055653e7f2cd710 0x0cee94601ab1f1d758b126c873d5328735356f811c80bdf6af62fe2534db51b6 +377525 0x6acc9a6876739e9190d06463196e27b6d37405c6 0xf7eba460ce397de720ba4749bd9c125fec27d45ef68e15fffe706e8c211a7f5c +377581 0xfd5ff05cb15b2e8cddd0e96912a5dee8044b9374 0x302777af5d26fab9dd5120c5f1307c65193ebc51daf33244ada4365fab10602c +377586 0x7011f3edc7fa43c81440f9f43a6458174113b162 0x66d0ee9ee580464eb06bb7adef164c593ad3173da5b9937511307bb4646d392e 0x000000000000000000000000000000000000000000000000000000000000006f +377608 0x8465dac1172b6abe303bead4d06125aed72ea01c 0x92ca3a80853e6663fa31fa10b99225f18d4902939b4c53a9caae9043f6efd004 +377627 0xf01d37496e1ad7f30bdc17f0dd55b7b19e53f767 0xe1c52dc63b719ade82e8bea94cc41a0d5d28e4aaf536adb5e9cccc9ff8c1aeda +377627 0xf01d37496e1ad7f30bdc17f0dd55b7b19e53f767 0x1733cbb53659d713b79580f79f3f9ff215f78a7c7aa45890f3b89fc5cddfbf32 +377629 0xf01d37496e1ad7f30bdc17f0dd55b7b19e53f767 0xe1c52dc63b719ade82e8bea94cc41a0d5d28e4aaf536adb5e9cccc9ff8c1aeda +377629 0xf01d37496e1ad7f30bdc17f0dd55b7b19e53f767 0x1733cbb53659d713b79580f79f3f9ff215f78a7c7aa45890f3b89fc5cddfbf32 +377703 0xf01d37496e1ad7f30bdc17f0dd55b7b19e53f767 0xe1c52dc63b719ade82e8bea94cc41a0d5d28e4aaf536adb5e9cccc9ff8c1aeda +377703 0xf01d37496e1ad7f30bdc17f0dd55b7b19e53f767 0xe7c957c06e9a662c1a6c77366179f5b702b97651dc28eee7d5bf1dff6e40bb4a +377730 0xc7696b27830dd8aa4823a1cba8440c27c36adec4 0x39d732521214059f57de4c0f92879304394ef7c5e530a8708b7113a42f9f0878 0x000000000000000000000000a2792b9f27a466a635649f551a4109a179b00fbf +377730 0xc7696b27830dd8aa4823a1cba8440c27c36adec4 0x44bbf497379e88194e67c38a8b2e628ef3803579306f3fd2177ce81afb3d743f 0x000000000000000000000000a2792b9f27a466a635649f551a4109a179b00fbf +377746 0xf01d37496e1ad7f30bdc17f0dd55b7b19e53f767 0xe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c +377877 0xfe8ad7dd2f564a877cc23feea6c0a9cc2e783715 0x92ca3a80853e6663fa31fa10b99225f18d4902939b4c53a9caae9043f6efd004 +377877 0x97e58c7d37cba1a1e2ecbb2a5b23f8d127b6892d 0xe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c +377894 0xb4a953f12f7418ed498a782ba47e5a7f5967091c 0xe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c +377905 0xfe8ad7dd2f564a877cc23feea6c0a9cc2e783715 0x92ca3a80853e6663fa31fa10b99225f18d4902939b4c53a9caae9043f6efd004 +377905 0x97e58c7d37cba1a1e2ecbb2a5b23f8d127b6892d 0xe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c +377917 0x97e58c7d37cba1a1e2ecbb2a5b23f8d127b6892d 0xe1c52dc63b719ade82e8bea94cc41a0d5d28e4aaf536adb5e9cccc9ff8c1aeda +377917 0x97e58c7d37cba1a1e2ecbb2a5b23f8d127b6892d 0x1733cbb53659d713b79580f79f3f9ff215f78a7c7aa45890f3b89fc5cddfbf32 +377922 0x97e58c7d37cba1a1e2ecbb2a5b23f8d127b6892d 0xe1c52dc63b719ade82e8bea94cc41a0d5d28e4aaf536adb5e9cccc9ff8c1aeda +377922 0x97e58c7d37cba1a1e2ecbb2a5b23f8d127b6892d 0xe7c957c06e9a662c1a6c77366179f5b702b97651dc28eee7d5bf1dff6e40bb4a +377925 0xfa15b8c872f533cd40abfd055507f2907bcf1581 0x16cdf1707799c6655baac6e210f52b94b7cec08adcaf9ede7dfe8649da926146 +378345 0xc7696b27830dd8aa4823a1cba8440c27c36adec4 0x39d732521214059f57de4c0f92879304394ef7c5e530a8708b7113a42f9f0878 0x000000000000000000000000a2792b9f27a466a635649f551a4109a179b00fbf +378345 0xc7696b27830dd8aa4823a1cba8440c27c36adec4 0x44bbf497379e88194e67c38a8b2e628ef3803579306f3fd2177ce81afb3d743f 0x000000000000000000000000a2792b9f27a466a635649f551a4109a179b00fbf +378347 0xc7696b27830dd8aa4823a1cba8440c27c36adec4 0x39d732521214059f57de4c0f92879304394ef7c5e530a8708b7113a42f9f0878 0x000000000000000000000000a2792b9f27a466a635649f551a4109a179b00fbf +378347 0xc7696b27830dd8aa4823a1cba8440c27c36adec4 0x44bbf497379e88194e67c38a8b2e628ef3803579306f3fd2177ce81afb3d743f 0x000000000000000000000000a2792b9f27a466a635649f551a4109a179b00fbf +379027 0x7011f3edc7fa43c81440f9f43a6458174113b162 0x66d0ee9ee580464eb06bb7adef164c593ad3173da5b9937511307bb4646d392e 0x0000000000000000000000000000000000000000000000000000000000000070 +379032 0x7011f3edc7fa43c81440f9f43a6458174113b162 0x66d0ee9ee580464eb06bb7adef164c593ad3173da5b9937511307bb4646d392e 0x0000000000000000000000000000000000000000000000000000000000000071 +379039 0x7011f3edc7fa43c81440f9f43a6458174113b162 0x66d0ee9ee580464eb06bb7adef164c593ad3173da5b9937511307bb4646d392e 0x0000000000000000000000000000000000000000000000000000000000000072 +379158 0x33990122638b9132ca29c723bdf037f1a891a70c 0xa6697e974e6a320f454390be03f74955e8978f1a6971ea6730542e37b66179bc 0x77656c6661726500000000000000000000000000000000000000000000000000 +379161 0x33990122638b9132ca29c723bdf037f1a891a70c 0xf63780e752c6a54a94fc52715dbc5518a3b4c3c2833d301a204226548a2a8545 0x77656c6661726500000000000000000000000000000000000000000000000000 0x000000000000000000000000266d8a3bfa7536f3f921da30824e47c561dd66cc +379161 0x33990122638b9132ca29c723bdf037f1a891a70c 0xa6697e974e6a320f454390be03f74955e8978f1a6971ea6730542e37b66179bc 0x77656c6661726500000000000000000000000000000000000000000000000000 +379163 0x33990122638b9132ca29c723bdf037f1a891a70c 0xa6697e974e6a320f454390be03f74955e8978f1a6971ea6730542e37b66179bc 0x736f636965747900000000000000000000000000000000000000000000000000 +379164 0x33990122638b9132ca29c723bdf037f1a891a70c 0xf63780e752c6a54a94fc52715dbc5518a3b4c3c2833d301a204226548a2a8545 0x736f636965747900000000000000000000000000000000000000000000000000 0x000000000000000000000000435a8f8bbed708ca75aa1c8ca7091fa1a3c03782 +379164 0x33990122638b9132ca29c723bdf037f1a891a70c 0xa6697e974e6a320f454390be03f74955e8978f1a6971ea6730542e37b66179bc 0x736f636965747900000000000000000000000000000000000000000000000000 +379167 0x33990122638b9132ca29c723bdf037f1a891a70c 0xa6697e974e6a320f454390be03f74955e8978f1a6971ea6730542e37b66179bc 0x6461707000000000000000000000000000000000000000000000000000000000 +379170 0xfadd0c5d206310344a31711da36ac89a7baeb388 0xe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c +379171 0x33990122638b9132ca29c723bdf037f1a891a70c 0xf63780e752c6a54a94fc52715dbc5518a3b4c3c2833d301a204226548a2a8545 0x6461707000000000000000000000000000000000000000000000000000000000 0x000000000000000000000000f81f0d1f4cacb0a419dba6fa897a121f61347c84 +379171 0x33990122638b9132ca29c723bdf037f1a891a70c 0xa6697e974e6a320f454390be03f74955e8978f1a6971ea6730542e37b66179bc 0x6461707000000000000000000000000000000000000000000000000000000000 +379172 0x33990122638b9132ca29c723bdf037f1a891a70c 0xa6697e974e6a320f454390be03f74955e8978f1a6971ea6730542e37b66179bc 0x6e6574776f726b00000000000000000000000000000000000000000000000000 +379176 0x33990122638b9132ca29c723bdf037f1a891a70c 0xf63780e752c6a54a94fc52715dbc5518a3b4c3c2833d301a204226548a2a8545 0x6e6574776f726b00000000000000000000000000000000000000000000000000 0x00000000000000000000000030ce983f55cfa6742a1270e263ff33010fb82790 +379176 0x33990122638b9132ca29c723bdf037f1a891a70c 0xa6697e974e6a320f454390be03f74955e8978f1a6971ea6730542e37b66179bc 0x6e6574776f726b00000000000000000000000000000000000000000000000000 +379180 0x33990122638b9132ca29c723bdf037f1a891a70c 0xa6697e974e6a320f454390be03f74955e8978f1a6971ea6730542e37b66179bc 0x7765697472616465720000000000000000000000000000000000000000000000 +379182 0x33990122638b9132ca29c723bdf037f1a891a70c 0xf63780e752c6a54a94fc52715dbc5518a3b4c3c2833d301a204226548a2a8545 0x7765697472616465720000000000000000000000000000000000000000000000 0x00000000000000000000000003477c75a6b22c58f8e65ecfb97219541c16aacf +379182 0x33990122638b9132ca29c723bdf037f1a891a70c 0xa6697e974e6a320f454390be03f74955e8978f1a6971ea6730542e37b66179bc 0x7765697472616465720000000000000000000000000000000000000000000000 +379210 0x33990122638b9132ca29c723bdf037f1a891a70c 0xa6697e974e6a320f454390be03f74955e8978f1a6971ea6730542e37b66179bc 0x7065657200000000000000000000000000000000000000000000000000000000 +379212 0x33990122638b9132ca29c723bdf037f1a891a70c 0xf63780e752c6a54a94fc52715dbc5518a3b4c3c2833d301a204226548a2a8545 0x7065657200000000000000000000000000000000000000000000000000000000 0x000000000000000000000000a5fcbfe7e0fe1a8f97772e3ff2433df651c3cd40 +379212 0x33990122638b9132ca29c723bdf037f1a891a70c 0xa6697e974e6a320f454390be03f74955e8978f1a6971ea6730542e37b66179bc 0x7065657200000000000000000000000000000000000000000000000000000000 +379214 0x33990122638b9132ca29c723bdf037f1a891a70c 0xa6697e974e6a320f454390be03f74955e8978f1a6971ea6730542e37b66179bc 0x6c65646765720000000000000000000000000000000000000000000000000000 +379216 0x33990122638b9132ca29c723bdf037f1a891a70c 0xf63780e752c6a54a94fc52715dbc5518a3b4c3c2833d301a204226548a2a8545 0x6c65646765720000000000000000000000000000000000000000000000000000 0x0000000000000000000000001bfa9c5206cf2f2d6218468200da6a6b2488f5f1 +379216 0x33990122638b9132ca29c723bdf037f1a891a70c 0xa6697e974e6a320f454390be03f74955e8978f1a6971ea6730542e37b66179bc 0x6c65646765720000000000000000000000000000000000000000000000000000 +379217 0x33990122638b9132ca29c723bdf037f1a891a70c 0xa6697e974e6a320f454390be03f74955e8978f1a6971ea6730542e37b66179bc 0x6964656e74697479000000000000000000000000000000000000000000000000 +379219 0x33990122638b9132ca29c723bdf037f1a891a70c 0xf63780e752c6a54a94fc52715dbc5518a3b4c3c2833d301a204226548a2a8545 0x6964656e74697479000000000000000000000000000000000000000000000000 0x000000000000000000000000420ec54a21967d9813cd184fa32783b61897b097 +379219 0x33990122638b9132ca29c723bdf037f1a891a70c 0xa6697e974e6a320f454390be03f74955e8978f1a6971ea6730542e37b66179bc 0x6964656e74697479000000000000000000000000000000000000000000000000 +379220 0x33990122638b9132ca29c723bdf037f1a891a70c 0xa6697e974e6a320f454390be03f74955e8978f1a6971ea6730542e37b66179bc 0x72657075746174696f6e00000000000000000000000000000000000000000000 +379224 0x33990122638b9132ca29c723bdf037f1a891a70c 0xf63780e752c6a54a94fc52715dbc5518a3b4c3c2833d301a204226548a2a8545 0x72657075746174696f6e00000000000000000000000000000000000000000000 0x000000000000000000000000d9b2f59f3b5c7b3c67047d2f03c3e8052470be92 +379224 0x33990122638b9132ca29c723bdf037f1a891a70c 0xa6697e974e6a320f454390be03f74955e8978f1a6971ea6730542e37b66179bc 0x72657075746174696f6e00000000000000000000000000000000000000000000 +379235 0x33990122638b9132ca29c723bdf037f1a891a70c 0xa6697e974e6a320f454390be03f74955e8978f1a6971ea6730542e37b66179bc 0x6c6f747465727900000000000000000000000000000000000000000000000000 +379237 0x33990122638b9132ca29c723bdf037f1a891a70c 0xf63780e752c6a54a94fc52715dbc5518a3b4c3c2833d301a204226548a2a8545 0x6c6f747465727900000000000000000000000000000000000000000000000000 0x0000000000000000000000001f6cc3f7c927e1196c03ac49c5aff0d39c9d103d +379237 0x33990122638b9132ca29c723bdf037f1a891a70c 0xa6697e974e6a320f454390be03f74955e8978f1a6971ea6730542e37b66179bc 0x6c6f747465727900000000000000000000000000000000000000000000000000 +381271 0x6acc9a6876739e9190d06463196e27b6d37405c6 0xf7eba460ce397de720ba4749bd9c125fec27d45ef68e15fffe706e8c211a7f5c +381271 0xd53096b3cf64d4739bb774e0f055653e7f2cd710 0x0cee94601ab1f1d758b126c873d5328735356f811c80bdf6af62fe2534db51b6 +381276 0x6acc9a6876739e9190d06463196e27b6d37405c6 0xf7eba460ce397de720ba4749bd9c125fec27d45ef68e15fffe706e8c211a7f5c +381689 0xfadd0c5d206310344a31711da36ac89a7baeb388 0xe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c +382200 0x7011f3edc7fa43c81440f9f43a6458174113b162 0x66d0ee9ee580464eb06bb7adef164c593ad3173da5b9937511307bb4646d392e 0x0000000000000000000000000000000000000000000000000000000000000073 +382217 0x7011f3edc7fa43c81440f9f43a6458174113b162 0x66d0ee9ee580464eb06bb7adef164c593ad3173da5b9937511307bb4646d392e 0x0000000000000000000000000000000000000000000000000000000000000074 +382644 0xc7696b27830dd8aa4823a1cba8440c27c36adec4 0x39d732521214059f57de4c0f92879304394ef7c5e530a8708b7113a42f9f0878 0x000000000000000000000000848e4dc353b9962471cd6506adc206f001e15fec +382644 0xc7696b27830dd8aa4823a1cba8440c27c36adec4 0x44bbf497379e88194e67c38a8b2e628ef3803579306f3fd2177ce81afb3d743f 0x000000000000000000000000848e4dc353b9962471cd6506adc206f001e15fec +383284 0xfa15b8c872f533cd40abfd055507f2907bcf1581 0x16cdf1707799c6655baac6e210f52b94b7cec08adcaf9ede7dfe8649da926146 +383337 0xfa15b8c872f533cd40abfd055507f2907bcf1581 0x16cdf1707799c6655baac6e210f52b94b7cec08adcaf9ede7dfe8649da926146 +383354 0xfa15b8c872f533cd40abfd055507f2907bcf1581 0x16cdf1707799c6655baac6e210f52b94b7cec08adcaf9ede7dfe8649da926146 +383361 0xfa15b8c872f533cd40abfd055507f2907bcf1581 0x16cdf1707799c6655baac6e210f52b94b7cec08adcaf9ede7dfe8649da926146 +383427 0xad8d3a5d2d92eb14bb56ca9f380be35b8efe0c04 0x19dacbf83c5de6658e14cbf7bcae5c15eca2eedecf1c66fbca928e4d351bea0f 0x000000000000000000000000f44058ffe3b8e3a6344e95a7dba8929d5b94bae2 0x4141414141494948490000000000000000000000000000000000000000000000 +383466 0x7f1d234e281ff8421b2b0650a9b8f85b5d73bd59 0xe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c +383469 0x51b6b4f5b270fa093198a984c3fce5ea607a94e7 0xe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c +383515 0xad8d3a5d2d92eb14bb56ca9f380be35b8efe0c04 0x19dacbf83c5de6658e14cbf7bcae5c15eca2eedecf1c66fbca928e4d351bea0f 0x000000000000000000000000f44058ffe3b8e3a6344e95a7dba8929d5b94bae2 0x4141414141494948490000000000000000000000000000000000000000000000 +383519 0x5067247f2214dca445bfb213277b5f19711e309f 0x6e7287b110b0d2f738952766cb4d4281ce49164b34e66493ebaf76c6c75c0adf +383630 0x513d9cfdf8c3f7c08006a4828e9319bafff2e556 0xe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c +383760 0xfe8ad7dd2f564a877cc23feea6c0a9cc2e783715 0x92ca3a80853e6663fa31fa10b99225f18d4902939b4c53a9caae9043f6efd004 +383802 0x04a163c9e3cadc6341ac0340403b42c83e384832 0xe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c +383815 0xfe8ad7dd2f564a877cc23feea6c0a9cc2e783715 0x92ca3a80853e6663fa31fa10b99225f18d4902939b4c53a9caae9043f6efd004 +383815 0xce4484b6d988a27ec9da967f84320c89194dd56b 0xe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c +383844 0x285b28d0c11c5bd3a039f3c26c887e2f8f177dc6 0xe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c +383852 0xfe8ad7dd2f564a877cc23feea6c0a9cc2e783715 0x92ca3a80853e6663fa31fa10b99225f18d4902939b4c53a9caae9043f6efd004 +383852 0xbf871ee17553ca56382a0dda5256760a0a979e62 0xe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c +383859 0xbf871ee17553ca56382a0dda5256760a0a979e62 0xe1c52dc63b719ade82e8bea94cc41a0d5d28e4aaf536adb5e9cccc9ff8c1aeda +383859 0xbf871ee17553ca56382a0dda5256760a0a979e62 0x1733cbb53659d713b79580f79f3f9ff215f78a7c7aa45890f3b89fc5cddfbf32 +383864 0xbf871ee17553ca56382a0dda5256760a0a979e62 0xe1c52dc63b719ade82e8bea94cc41a0d5d28e4aaf536adb5e9cccc9ff8c1aeda +383864 0xbf871ee17553ca56382a0dda5256760a0a979e62 0xe7c957c06e9a662c1a6c77366179f5b702b97651dc28eee7d5bf1dff6e40bb4a +383968 0xf01d37496e1ad7f30bdc17f0dd55b7b19e53f767 0xe1c52dc63b719ade82e8bea94cc41a0d5d28e4aaf536adb5e9cccc9ff8c1aeda +383968 0xf01d37496e1ad7f30bdc17f0dd55b7b19e53f767 0xe7c957c06e9a662c1a6c77366179f5b702b97651dc28eee7d5bf1dff6e40bb4a +383973 0x97e58c7d37cba1a1e2ecbb2a5b23f8d127b6892d 0x92ca3a80853e6663fa31fa10b99225f18d4902939b4c53a9caae9043f6efd004 +384127 0xad8d3a5d2d92eb14bb56ca9f380be35b8efe0c04 0x19dacbf83c5de6658e14cbf7bcae5c15eca2eedecf1c66fbca928e4d351bea0f 0x000000000000000000000000f44058ffe3b8e3a6344e95a7dba8929d5b94bae2 0x4141414141494948490000000000000000000000000000000000000000000000 +384138 0xfadd0c5d206310344a31711da36ac89a7baeb388 0xe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c +384149 0x285b28d0c11c5bd3a039f3c26c887e2f8f177dc6 0xe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c +384173 0x285b28d0c11c5bd3a039f3c26c887e2f8f177dc6 0x92ca3a80853e6663fa31fa10b99225f18d4902939b4c53a9caae9043f6efd004 +384173 0x81e4c09f8d140521e2265b42d99fc2fb868a5b14 0xe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c +384301 0x03131e9dc0d42f57c92c3ae39e79a9abac75d9bb 0xe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c +384422 0x4e96c7985c2f260ae9fdd12fd7f78364f16af2ce 0xe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c +384506 0x97e58c7d37cba1a1e2ecbb2a5b23f8d127b6892d 0xe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c +384511 0x97e58c7d37cba1a1e2ecbb2a5b23f8d127b6892d 0xe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c +384546 0xad8d3a5d2d92eb14bb56ca9f380be35b8efe0c04 0x19dacbf83c5de6658e14cbf7bcae5c15eca2eedecf1c66fbca928e4d351bea0f 0x000000000000000000000000f44058ffe3b8e3a6344e95a7dba8929d5b94bae2 0x4141414141494948490000000000000000000000000000000000000000000000 +384771 0xac4df82fe37ea2187bc8c011a23d743b4f39019a 0xe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c +384825 0xac4df82fe37ea2187bc8c011a23d743b4f39019a 0x92ca3a80853e6663fa31fa10b99225f18d4902939b4c53a9caae9043f6efd004 +384861 0x9dfb24cf9ef6b885a7d130b5a92002985954b8e6 0xe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c +384917 0x4e96c7985c2f260ae9fdd12fd7f78364f16af2ce 0xe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c +384923 0xe291a9e17fd310b860f665dbdd8375144bdd6ecd 0xe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c +384965 0xc833e49ac9d0315778d616cbb583a8b1b3bf2d73 0xe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c +385067 0x3a360d9e2919714547623e4bc9504242b816d2d8 0xe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c +385073 0x3a360d9e2919714547623e4bc9504242b816d2d8 0xe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c +385356 0xe291a9e17fd310b860f665dbdd8375144bdd6ecd 0x92ca3a80853e6663fa31fa10b99225f18d4902939b4c53a9caae9043f6efd004 +385356 0xc833e49ac9d0315778d616cbb583a8b1b3bf2d73 0xe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c +386571 0xfadd0c5d206310344a31711da36ac89a7baeb388 0xe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c +386620 0xdcf421d093428b096ca501a7cd1a740855a7976f +386736 0xa8637b2df8ca339818314b7def756ed19ae4d5e3 0x722f20d265a4f5c6387c6ce92203442cdcb6d30b5e188f3649f0d5cbdf9d87fb 0x0000000000000000000000000000000000000000000000000000000000000000 +386786 0xa8637b2df8ca339818314b7def756ed19ae4d5e3 0x722f20d265a4f5c6387c6ce92203442cdcb6d30b5e188f3649f0d5cbdf9d87fb 0x0000000000000000000000000000000000000000000000000000000000000001 +386795 0xa8637b2df8ca339818314b7def756ed19ae4d5e3 0x722f20d265a4f5c6387c6ce92203442cdcb6d30b5e188f3649f0d5cbdf9d87fb 0x0000000000000000000000000000000000000000000000000000000000000002 +386804 0xa8637b2df8ca339818314b7def756ed19ae4d5e3 0x722f20d265a4f5c6387c6ce92203442cdcb6d30b5e188f3649f0d5cbdf9d87fb 0x0000000000000000000000000000000000000000000000000000000000000003 +386812 0xa8637b2df8ca339818314b7def756ed19ae4d5e3 0x722f20d265a4f5c6387c6ce92203442cdcb6d30b5e188f3649f0d5cbdf9d87fb 0x0000000000000000000000000000000000000000000000000000000000000004 +386818 0xa8637b2df8ca339818314b7def756ed19ae4d5e3 0x722f20d265a4f5c6387c6ce92203442cdcb6d30b5e188f3649f0d5cbdf9d87fb 0x0000000000000000000000000000000000000000000000000000000000000005 +386899 0xa8637b2df8ca339818314b7def756ed19ae4d5e3 0x722f20d265a4f5c6387c6ce92203442cdcb6d30b5e188f3649f0d5cbdf9d87fb 0x0000000000000000000000000000000000000000000000000000000000000006 +386939 0x523c43c44671e34c1e7a9a619420b191fb009db1 0x722f20d265a4f5c6387c6ce92203442cdcb6d30b5e188f3649f0d5cbdf9d87fb 0x0000000000000000000000000000000000000000000000000000000000000000 +386945 0x7ff1fa4c4bb95760dda000b5856bc22db681e989 0x0000000000000000000000000000000000000000000000000000000000000000 +386975 0xc48d9595221e591bf7a785591f928b6df08fee7a 0x0000000000000000000000000000000000000000000000000000000000000000 +387011 0x07f1d608c18dc12e6ee4487be4d01571315dbef1 0x0000000000000000000000000000000000000000000000000000000000000000 +387014 0x07f1d608c18dc12e6ee4487be4d01571315dbef1 0x0000000000000000000000000000000000000000000000000000000000000001 +387016 0xa72cd306bd6bc58922dcfed48cb1474f323860a9 0xe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c +387032 0x07f1d608c18dc12e6ee4487be4d01571315dbef1 0x0000000000000000000000000000000000000000000000000000000000000002 +387044 0x91b876c8614495fb9272a95edecc92938e5e2da6 0x0000000000000000000000000000000000000000000000000000000000000000 +387045 0xa72cd306bd6bc58922dcfed48cb1474f323860a9 0xe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c +387206 0x680a79579b69df391a4d23a7ba219b4d020736dc 0xe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c +387225 0x680a79579b69df391a4d23a7ba219b4d020736dc 0xe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c +387241 0x680a79579b69df391a4d23a7ba219b4d020736dc 0xe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c +387276 0x680a79579b69df391a4d23a7ba219b4d020736dc 0x92ca3a80853e6663fa31fa10b99225f18d4902939b4c53a9caae9043f6efd004 +387276 0x4b94fb373ec3a87f79f6de32ad730806020c94f1 0xe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c +387284 0x680a79579b69df391a4d23a7ba219b4d020736dc 0x92ca3a80853e6663fa31fa10b99225f18d4902939b4c53a9caae9043f6efd004 +387365 0x72c39a1286deaffbc3058cea4f9598bf0f2f6cf6 0xe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c +387615 0xf75e354c5edc8efed9b59ee9f67a80845ade7d0c 0xe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c +387627 0x2a31114378a3093d29aa387bfe3829d9f1f4c2a8 0xe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c +387641 0xf75e354c5edc8efed9b59ee9f67a80845ade7d0c 0x92ca3a80853e6663fa31fa10b99225f18d4902939b4c53a9caae9043f6efd004 +387648 0xf75e354c5edc8efed9b59ee9f67a80845ade7d0c 0xe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c +387654 0xf75e354c5edc8efed9b59ee9f67a80845ade7d0c 0xe1c52dc63b719ade82e8bea94cc41a0d5d28e4aaf536adb5e9cccc9ff8c1aeda +387654 0xf75e354c5edc8efed9b59ee9f67a80845ade7d0c 0x1733cbb53659d713b79580f79f3f9ff215f78a7c7aa45890f3b89fc5cddfbf32 +387658 0xf75e354c5edc8efed9b59ee9f67a80845ade7d0c 0xe1c52dc63b719ade82e8bea94cc41a0d5d28e4aaf536adb5e9cccc9ff8c1aeda +387658 0xf75e354c5edc8efed9b59ee9f67a80845ade7d0c 0xe7c957c06e9a662c1a6c77366179f5b702b97651dc28eee7d5bf1dff6e40bb4a +387683 0xf75e354c5edc8efed9b59ee9f67a80845ade7d0c 0xe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c +387688 0xf75e354c5edc8efed9b59ee9f67a80845ade7d0c 0xe1c52dc63b719ade82e8bea94cc41a0d5d28e4aaf536adb5e9cccc9ff8c1aeda +387688 0xf75e354c5edc8efed9b59ee9f67a80845ade7d0c 0x1733cbb53659d713b79580f79f3f9ff215f78a7c7aa45890f3b89fc5cddfbf32 +387690 0xf75e354c5edc8efed9b59ee9f67a80845ade7d0c 0xe1c52dc63b719ade82e8bea94cc41a0d5d28e4aaf536adb5e9cccc9ff8c1aeda +387690 0xf75e354c5edc8efed9b59ee9f67a80845ade7d0c 0xe7c957c06e9a662c1a6c77366179f5b702b97651dc28eee7d5bf1dff6e40bb4a +387761 0x97e58c7d37cba1a1e2ecbb2a5b23f8d127b6892d 0x92ca3a80853e6663fa31fa10b99225f18d4902939b4c53a9caae9043f6efd004 +388108 0x33921ef3eeffb23d68802e43e8110ab6c2fff774 0xe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c +388111 0xbec795614eda3b5ccd2e32070b4ace745ce801c4 0xe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c +388150 0xbec795614eda3b5ccd2e32070b4ace745ce801c4 0xe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c +388246 0xed6523382d41982604b845e5b94dd7fa0060198d 0x16cdf1707799c6655baac6e210f52b94b7cec08adcaf9ede7dfe8649da926146 +388285 0x329e2382db65ef312ca68a6c8ef549e68d051e06 0xe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c +388296 0xed6523382d41982604b845e5b94dd7fa0060198d 0x16cdf1707799c6655baac6e210f52b94b7cec08adcaf9ede7dfe8649da926146 +388516 0xfadd0c5d206310344a31711da36ac89a7baeb388 0xe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c +388860 0xa36dcbd8877c08dc245ca08577368ef87a0c917e 0x16cdf1707799c6655baac6e210f52b94b7cec08adcaf9ede7dfe8649da926146 +388893 0xa36dcbd8877c08dc245ca08577368ef87a0c917e 0x16cdf1707799c6655baac6e210f52b94b7cec08adcaf9ede7dfe8649da926146 +388893 0xf2d850b176ddf0b6c1411d68ef96d2d8b7b0b480 0xe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c +388894 0xa36dcbd8877c08dc245ca08577368ef87a0c917e 0x16cdf1707799c6655baac6e210f52b94b7cec08adcaf9ede7dfe8649da926146 +388907 0xbda7aeb6d2002efe360b6467275ef01e77d15497 0x92ca3a80853e6663fa31fa10b99225f18d4902939b4c53a9caae9043f6efd004 +388907 0x2caa3e6931413fba516a377a43cadd94e197bbfa 0xe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c +388909 0x2caa3e6931413fba516a377a43cadd94e197bbfa 0xe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c +388912 0x2caa3e6931413fba516a377a43cadd94e197bbfa 0xe1c52dc63b719ade82e8bea94cc41a0d5d28e4aaf536adb5e9cccc9ff8c1aeda +388912 0x2caa3e6931413fba516a377a43cadd94e197bbfa 0x1733cbb53659d713b79580f79f3f9ff215f78a7c7aa45890f3b89fc5cddfbf32 +388918 0x2caa3e6931413fba516a377a43cadd94e197bbfa 0xe1c52dc63b719ade82e8bea94cc41a0d5d28e4aaf536adb5e9cccc9ff8c1aeda +388918 0x2caa3e6931413fba516a377a43cadd94e197bbfa 0xe7c957c06e9a662c1a6c77366179f5b702b97651dc28eee7d5bf1dff6e40bb4a +388923 0xa36dcbd8877c08dc245ca08577368ef87a0c917e 0x16cdf1707799c6655baac6e210f52b94b7cec08adcaf9ede7dfe8649da926146 +388923 0x2caa3e6931413fba516a377a43cadd94e197bbfa 0xe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c +388940 0xa36dcbd8877c08dc245ca08577368ef87a0c917e 0x16cdf1707799c6655baac6e210f52b94b7cec08adcaf9ede7dfe8649da926146 +388971 0x2a31114378a3093d29aa387bfe3829d9f1f4c2a8 0x92ca3a80853e6663fa31fa10b99225f18d4902939b4c53a9caae9043f6efd004 +388990 0x892140413344e49d9eaf54db38126d973fa167f6 0x16cdf1707799c6655baac6e210f52b94b7cec08adcaf9ede7dfe8649da926146 +389012 0x892140413344e49d9eaf54db38126d973fa167f6 0x16cdf1707799c6655baac6e210f52b94b7cec08adcaf9ede7dfe8649da926146 +389158 0x892140413344e49d9eaf54db38126d973fa167f6 0x16cdf1707799c6655baac6e210f52b94b7cec08adcaf9ede7dfe8649da926146 +389206 0xe358b3b9f29c67cb810c5184e6fde27d66ce036c 0xe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c +389238 0x72c39a1286deaffbc3058cea4f9598bf0f2f6cf6 0x92ca3a80853e6663fa31fa10b99225f18d4902939b4c53a9caae9043f6efd004 +389277 0x534c5a8c34ad4e150581c50ded1bbfa5f22b1800 0xe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c +389292 0xcab01dedaa9e87d03e5eff6dedab9ad98298ccc6 0xe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c +389301 0xcab01dedaa9e87d03e5eff6dedab9ad98298ccc6 0xe1c52dc63b719ade82e8bea94cc41a0d5d28e4aaf536adb5e9cccc9ff8c1aeda +389301 0xcab01dedaa9e87d03e5eff6dedab9ad98298ccc6 0x1733cbb53659d713b79580f79f3f9ff215f78a7c7aa45890f3b89fc5cddfbf32 +389309 0xcab01dedaa9e87d03e5eff6dedab9ad98298ccc6 0xc7fb647e59b18047309aa15aad418e5d7ca96d173ad704f1031a2c3d7591734b +389324 0xcab01dedaa9e87d03e5eff6dedab9ad98298ccc6 0x92ca3a80853e6663fa31fa10b99225f18d4902939b4c53a9caae9043f6efd004 +389324 0x72c39a1286deaffbc3058cea4f9598bf0f2f6cf6 0xe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c +389328 0x72c39a1286deaffbc3058cea4f9598bf0f2f6cf6 0x92ca3a80853e6663fa31fa10b99225f18d4902939b4c53a9caae9043f6efd004 +389343 0xcab01dedaa9e87d03e5eff6dedab9ad98298ccc6 0xe1c52dc63b719ade82e8bea94cc41a0d5d28e4aaf536adb5e9cccc9ff8c1aeda +389343 0xcab01dedaa9e87d03e5eff6dedab9ad98298ccc6 0x1733cbb53659d713b79580f79f3f9ff215f78a7c7aa45890f3b89fc5cddfbf32 +390001 0xecc72aac2791ee973bf607781a33a341b41e58c0 0xe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c +390004 0xecc72aac2791ee973bf607781a33a341b41e58c0 0x92ca3a80853e6663fa31fa10b99225f18d4902939b4c53a9caae9043f6efd004 +390024 0xd5babb9f28a9e7c78735c9c955d5626159f1be70 0xe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c +390042 0xd5babb9f28a9e7c78735c9c955d5626159f1be70 0xe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c +390236 0x54dcd97a77d12fb42a9ef839a3cdba0c1e92841a 0xe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c +390306 0xecc72aac2791ee973bf607781a33a341b41e58c0 0xe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c +390867 0xfadd0c5d206310344a31711da36ac89a7baeb388 0xe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c +391685 0x5067247f2214dca445bfb213277b5f19711e309f 0x6e7287b110b0d2f738952766cb4d4281ce49164b34e66493ebaf76c6c75c0adf +391690 0x5067247f2214dca445bfb213277b5f19711e309f 0x6e7287b110b0d2f738952766cb4d4281ce49164b34e66493ebaf76c6c75c0adf +391691 0x5067247f2214dca445bfb213277b5f19711e309f 0x6e7287b110b0d2f738952766cb4d4281ce49164b34e66493ebaf76c6c75c0adf +391697 0xe358b3b9f29c67cb810c5184e6fde27d66ce036c 0x92ca3a80853e6663fa31fa10b99225f18d4902939b4c53a9caae9043f6efd004 +391713 0x534c5a8c34ad4e150581c50ded1bbfa5f22b1800 0x92ca3a80853e6663fa31fa10b99225f18d4902939b4c53a9caae9043f6efd004 +391849 0x534c5a8c34ad4e150581c50ded1bbfa5f22b1800 0xe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c +392002 0x81e4c09f8d140521e2265b42d99fc2fb868a5b14 0x92ca3a80853e6663fa31fa10b99225f18d4902939b4c53a9caae9043f6efd004 +392097 0xcab01dedaa9e87d03e5eff6dedab9ad98298ccc6 0xc7fb647e59b18047309aa15aad418e5d7ca96d173ad704f1031a2c3d7591734b +392104 0xfe8ad7dd2f564a877cc23feea6c0a9cc2e783715 0x92ca3a80853e6663fa31fa10b99225f18d4902939b4c53a9caae9043f6efd004 +392110 0xa076155806214a73f37f5fcd8025036d92f6a3fb +392294 0xac9560da030bc57c70c90274d8ffe4ba6aea1846 0x0000000000000000000000000000000000000000000000000000000000000000 +392697 0xc4395759e26469baa0e6421bdc1d0232c6f4b6c3 0xe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c +392960 0x6466e3c6157ba0724234f8a09c77ac08fff8828c 0xd4665e3049283582ba6f9eba07a5b3e12dab49e02da99e8927a47af5d134bea5 0x00000000000000000000000016893e10b99a59afd2c60331e0b49241d4d4d7cc +392970 0x6466e3c6157ba0724234f8a09c77ac08fff8828c 0xd4665e3049283582ba6f9eba07a5b3e12dab49e02da99e8927a47af5d134bea5 0x00000000000000000000000016893e10b99a59afd2c60331e0b49241d4d4d7cc +392990 0x6466e3c6157ba0724234f8a09c77ac08fff8828c 0xadec52fcd1408589179b85e44b434374db078b4eaf793e7d1a1bb0ae4ecfeee5 0x00000000000000000000000016893e10b99a59afd2c60331e0b49241d4d4d7cc +393302 0x8ec0d0bbce4349e2d34586e2de392caa73532d3f 0xe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c +393370 0xfadd0c5d206310344a31711da36ac89a7baeb388 0xe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c +393752 0xc7696b27830dd8aa4823a1cba8440c27c36adec4 0x39d732521214059f57de4c0f92879304394ef7c5e530a8708b7113a42f9f0878 0x00000000000000000000000076b0f6b32c66c317699067f2d938bcf669f380ce +393752 0xc7696b27830dd8aa4823a1cba8440c27c36adec4 0x44bbf497379e88194e67c38a8b2e628ef3803579306f3fd2177ce81afb3d743f 0x00000000000000000000000076b0f6b32c66c317699067f2d938bcf669f380ce +394354 0xcab01dedaa9e87d03e5eff6dedab9ad98298ccc6 0x92ca3a80853e6663fa31fa10b99225f18d4902939b4c53a9caae9043f6efd004 +394389 0x6466e3c6157ba0724234f8a09c77ac08fff8828c 0xadec52fcd1408589179b85e44b434374db078b4eaf793e7d1a1bb0ae4ecfeee5 0x00000000000000000000000016893e10b99a59afd2c60331e0b49241d4d4d7cc +394389 0x6466e3c6157ba0724234f8a09c77ac08fff8828c 0xadec52fcd1408589179b85e44b434374db078b4eaf793e7d1a1bb0ae4ecfeee5 0x00000000000000000000000016893e10b99a59afd2c60331e0b49241d4d4d7cc +394390 0x6466e3c6157ba0724234f8a09c77ac08fff8828c 0xadec52fcd1408589179b85e44b434374db078b4eaf793e7d1a1bb0ae4ecfeee5 0x00000000000000000000000016893e10b99a59afd2c60331e0b49241d4d4d7cc +394390 0x6466e3c6157ba0724234f8a09c77ac08fff8828c 0xadec52fcd1408589179b85e44b434374db078b4eaf793e7d1a1bb0ae4ecfeee5 0x00000000000000000000000016893e10b99a59afd2c60331e0b49241d4d4d7cc +394390 0x6466e3c6157ba0724234f8a09c77ac08fff8828c 0xadec52fcd1408589179b85e44b434374db078b4eaf793e7d1a1bb0ae4ecfeee5 0x00000000000000000000000016893e10b99a59afd2c60331e0b49241d4d4d7cc +394391 0x6466e3c6157ba0724234f8a09c77ac08fff8828c 0xadec52fcd1408589179b85e44b434374db078b4eaf793e7d1a1bb0ae4ecfeee5 0x00000000000000000000000016893e10b99a59afd2c60331e0b49241d4d4d7cc +394393 0x6466e3c6157ba0724234f8a09c77ac08fff8828c 0xadec52fcd1408589179b85e44b434374db078b4eaf793e7d1a1bb0ae4ecfeee5 0x00000000000000000000000016893e10b99a59afd2c60331e0b49241d4d4d7cc +394393 0x6466e3c6157ba0724234f8a09c77ac08fff8828c 0xadec52fcd1408589179b85e44b434374db078b4eaf793e7d1a1bb0ae4ecfeee5 0x00000000000000000000000016893e10b99a59afd2c60331e0b49241d4d4d7cc +394394 0x6466e3c6157ba0724234f8a09c77ac08fff8828c 0xadec52fcd1408589179b85e44b434374db078b4eaf793e7d1a1bb0ae4ecfeee5 0x00000000000000000000000016893e10b99a59afd2c60331e0b49241d4d4d7cc +394395 0x6466e3c6157ba0724234f8a09c77ac08fff8828c 0xadec52fcd1408589179b85e44b434374db078b4eaf793e7d1a1bb0ae4ecfeee5 0x00000000000000000000000016893e10b99a59afd2c60331e0b49241d4d4d7cc +394426 0xdb30622d51e8d6221f0b1cbde57d4734387d7ca1 0xd4665e3049283582ba6f9eba07a5b3e12dab49e02da99e8927a47af5d134bea5 0x00000000000000000000000016893e10b99a59afd2c60331e0b49241d4d4d7cc +394800 0x7011f3edc7fa43c81440f9f43a6458174113b162 0x66d0ee9ee580464eb06bb7adef164c593ad3173da5b9937511307bb4646d392e 0x0000000000000000000000000000000000000000000000000000000000000075 +395595 0xc7696b27830dd8aa4823a1cba8440c27c36adec4 0x39d732521214059f57de4c0f92879304394ef7c5e530a8708b7113a42f9f0878 0x000000000000000000000000d1f35f7250a922150c0e879eaf0cb5f0f7dd47c3 +395595 0xc7696b27830dd8aa4823a1cba8440c27c36adec4 0x44bbf497379e88194e67c38a8b2e628ef3803579306f3fd2177ce81afb3d743f 0x000000000000000000000000d1f35f7250a922150c0e879eaf0cb5f0f7dd47c3 +395969 0xfadd0c5d206310344a31711da36ac89a7baeb388 0xe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c +396348 0xc4395759e26469baa0e6421bdc1d0232c6f4b6c3 0xe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c +397108 0xb372018f3be9e171df0581136b59d2faf73a7d5d 0xff74e91598aed6ae5d2fdcf8b24cd2c7be49a0808112a305069355b7160f23f9 +397588 0xb372018f3be9e171df0581136b59d2faf73a7d5d 0xff74e91598aed6ae5d2fdcf8b24cd2c7be49a0808112a305069355b7160f23f9 +397591 0xb372018f3be9e171df0581136b59d2faf73a7d5d 0xff74e91598aed6ae5d2fdcf8b24cd2c7be49a0808112a305069355b7160f23f9 +398412 0xc7696b27830dd8aa4823a1cba8440c27c36adec4 0x39d732521214059f57de4c0f92879304394ef7c5e530a8708b7113a42f9f0878 0x000000000000000000000000a2792b9f27a466a635649f551a4109a179b00fbf +398412 0xc7696b27830dd8aa4823a1cba8440c27c36adec4 0x44bbf497379e88194e67c38a8b2e628ef3803579306f3fd2177ce81afb3d743f 0x000000000000000000000000a2792b9f27a466a635649f551a4109a179b00fbf +398456 0xfadd0c5d206310344a31711da36ac89a7baeb388 0xe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c +398477 0xfa15b8c872f533cd40abfd055507f2907bcf1581 0x16cdf1707799c6655baac6e210f52b94b7cec08adcaf9ede7dfe8649da926146 +398679 0xfa15b8c872f533cd40abfd055507f2907bcf1581 0x16cdf1707799c6655baac6e210f52b94b7cec08adcaf9ede7dfe8649da926146 +398968 0xe82f5f7db7bf9bad426505c654e8d13b609f527c 0x16cdf1707799c6655baac6e210f52b94b7cec08adcaf9ede7dfe8649da926146 +398972 0x6f7ff1690f64973fffc848f5cf101b446acb1c27 0xe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c +399058 0x6f7ff1690f64973fffc848f5cf101b446acb1c27 0x92ca3a80853e6663fa31fa10b99225f18d4902939b4c53a9caae9043f6efd004 +399804 0xc4395759e26469baa0e6421bdc1d0232c6f4b6c3 0xe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c +399849 0xb372018f3be9e171df0581136b59d2faf73a7d5d 0xff74e91598aed6ae5d2fdcf8b24cd2c7be49a0808112a305069355b7160f23f9 diff --git a/ethcore/src/chainfilter/mod.rs b/ethcore/src/chainfilter/mod.rs new file mode 100644 index 000000000..d85fc20f9 --- /dev/null +++ b/ethcore/src/chainfilter/mod.rs @@ -0,0 +1,35 @@ +// Copyright 2015, 2016 Ethcore (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 . + +//! Multilevel blockchain bloom filter. + +mod bloomindex; +mod chainfilter; +mod indexer; + +#[cfg(test)] +mod tests; + +pub use self::bloomindex::BloomIndex; +pub use self::chainfilter::ChainFilter; +use util::hash::H2048; + +/// Types implementing this trait provide read access for bloom filters database. +pub trait FilterDataSource { + /// returns reference to log at given position if it exists + fn bloom_at_index(&self, index: &BloomIndex) -> Option; +} + diff --git a/ethcore/src/chainfilter/tests.rs b/ethcore/src/chainfilter/tests.rs new file mode 100644 index 000000000..2baa93e55 --- /dev/null +++ b/ethcore/src/chainfilter/tests.rs @@ -0,0 +1,277 @@ +// Copyright 2015, 2016 Ethcore (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 std::collections::HashMap; +use std::io::{BufRead, BufReader, Read}; +use std::str::FromStr; +use util::hash::*; +use util::sha3::*; +use chainfilter::{BloomIndex, FilterDataSource, ChainFilter}; + +/// In memory cache for blooms. +/// +/// Stores all blooms in HashMap, which indexes them by `BloomIndex`. +pub struct MemoryCache { + blooms: HashMap, +} + +impl MemoryCache { + /// Default constructor for MemoryCache + pub fn new() -> MemoryCache { + MemoryCache { blooms: HashMap::new() } + } + + /// inserts all blooms into cache + /// + /// if bloom at given index already exists, overwrites it + pub fn insert_blooms(&mut self, blooms: HashMap) { + self.blooms.extend(blooms); + } +} + +impl FilterDataSource for MemoryCache { + fn bloom_at_index(&self, index: &BloomIndex) -> Option { + self.blooms.get(index).cloned() + } +} + +fn to_bloom(hashable: &T) -> H2048 where T: Hashable { + let mut bloom = H2048::new(); + bloom.shift_bloomed(&hashable.sha3()); + bloom +} + +#[test] +fn test_topic_basic_search() { + let index_size = 16; + let bloom_levels = 3; + + let mut cache = MemoryCache::new(); + let topic = H256::from_str("8d936b1bd3fc635710969ccfba471fb17d598d9d1971b538dd712e1e4b4f4dba").unwrap(); + + let modified_blooms = { + let filter = ChainFilter::new(&cache, index_size, bloom_levels); + let block_number = 23; + filter.add_bloom(&to_bloom(&topic), block_number) + }; + + // number of modified blooms should always be equal number of levels + assert_eq!(modified_blooms.len(), bloom_levels as usize); + cache.insert_blooms(modified_blooms); + + { + let filter = ChainFilter::new(&cache, index_size, bloom_levels); + let blocks = filter.blocks_with_bloom(&to_bloom(&topic), 0, 100); + assert_eq!(blocks.len(), 1); + assert_eq!(blocks[0], 23); + } + + { + let filter = ChainFilter::new(&cache, index_size, bloom_levels); + let blocks = filter.blocks_with_bloom(&to_bloom(&topic), 0, 23); + assert_eq!(blocks.len(), 0); + } + + { + let filter = ChainFilter::new(&cache, index_size, bloom_levels); + let blocks = filter.blocks_with_bloom(&to_bloom(&topic), 23, 24); + assert_eq!(blocks.len(), 1); + assert_eq!(blocks[0], 23); + } + + { + let filter = ChainFilter::new(&cache, index_size, bloom_levels); + let blocks = filter.blocks_with_bloom(&to_bloom(&topic), 24, 100); + assert_eq!(blocks.len(), 0); + } +} + +#[test] +fn test_reset_chain_head_simple() { + let index_size = 16; + let bloom_levels = 3; + + let mut cache = MemoryCache::new(); + let topic_0 = H256::from_str("8d936b1bd3fc635710969ccfba471fb17d598d9d1971b538dd712e1e4b4f4dba").unwrap(); + let topic_1 = H256::from_str("8d936b1bd3fc635710969ccfba471fb17d598d9d1971b538dd712e1e4b4f4dbb").unwrap(); + let topic_2 = H256::from_str("8d936b1bd3fc635710969ccfba471fb17d598d9d1971b538dd712e1e4b4f4dbc").unwrap(); + let topic_3 = H256::from_str("8d936b1bd3fc635710969ccfba471fb17d598d9d1971b538dd712e1e4b4f4dbd").unwrap(); + let topic_4 = H256::from_str("8d936b1bd3fc635710969ccfba471fb17d598d9d1971b538dd712e1e4b4f4dbe").unwrap(); + let topic_5 = H256::from_str("8d936b1bd3fc635710969ccfba471fb17d598d9d1971b538dd712e1e4b4f4dbf").unwrap(); + + let modified_blooms_0 = { + let filter = ChainFilter::new(&cache, index_size, bloom_levels); + let block_number = 14; + filter.add_bloom(&to_bloom(&topic_0), block_number) + }; + + cache.insert_blooms(modified_blooms_0); + + let modified_blooms_1 = { + let filter = ChainFilter::new(&cache, index_size, bloom_levels); + let block_number = 15; + filter.add_bloom(&to_bloom(&topic_1), block_number) + }; + + cache.insert_blooms(modified_blooms_1); + + let modified_blooms_2 = { + let filter = ChainFilter::new(&cache, index_size, bloom_levels); + let block_number = 16; + filter.add_bloom(&to_bloom(&topic_2), block_number) + }; + + cache.insert_blooms(modified_blooms_2); + + let modified_blooms_3 = { + let filter = ChainFilter::new(&cache, index_size, bloom_levels); + let block_number = 17; + filter.add_bloom(&to_bloom(&topic_3), block_number) + }; + + cache.insert_blooms(modified_blooms_3); + + + let reset_modified_blooms = { + let filter = ChainFilter::new(&cache, index_size, bloom_levels); + filter.reset_chain_head(&[to_bloom(&topic_4), to_bloom(&topic_5)], 15, 17) + }; + + cache.insert_blooms(reset_modified_blooms); + + let filter = ChainFilter::new(&cache, index_size, bloom_levels); + assert_eq!(filter.blocks_with_bloom(&to_bloom(&topic_0), 0, 100), vec![14]); + assert_eq!(filter.blocks_with_bloom(&to_bloom(&topic_1), 0, 100), vec![]); + assert_eq!(filter.blocks_with_bloom(&to_bloom(&topic_2), 0, 100), vec![]); + assert_eq!(filter.blocks_with_bloom(&to_bloom(&topic_3), 0, 100), vec![]); + assert_eq!(filter.blocks_with_bloom(&to_bloom(&topic_4), 0, 100), vec![15]); + assert_eq!(filter.blocks_with_bloom(&to_bloom(&topic_5), 0, 100), vec![16]); +} + +fn for_each_bloom(bytes: &[u8], mut f: F) where F: FnMut(usize, &H2048) { + 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 = H2048::from_str(&String::from_utf8(bloom_bytes.to_vec()).unwrap()).unwrap(); + f(number, &bloom); + } + line.clear(); + } +} + +fn for_each_log(bytes: &[u8], mut f: F) where F: FnMut(usize, &Address, &[H256]) { + 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 address_bytes = [0;42]; + let mut topic = [0;66]; + let mut topics_bytes = vec![]; + + let mut line_reader = BufReader::new(line.as_ref() as &[u8]); + line_reader.read_until(b' ', &mut number_bytes).unwrap(); + line_reader.read_exact(&mut address_bytes).unwrap(); + line_reader.consume(1); + while let Ok(_) = line_reader.read_exact(&mut topic) { + line_reader.consume(1); + topics_bytes.push(topic.to_vec()); + } + + let number = String::from_utf8(number_bytes).map(|s| s[..s.len() -1].to_owned()).unwrap().parse::().unwrap(); + let address = Address::from_str(&String::from_utf8(address_bytes.to_vec()).map(|a| a[2..].to_owned()).unwrap()).unwrap(); + let topics: Vec = topics_bytes + .into_iter() + .map(|t| H256::from_str(&String::from_utf8(t).map(|t| t[2..].to_owned()).unwrap()).unwrap()) + .collect(); + f(number, &address, &topics); + } + line.clear(); + } +} + +// tests chain filter on real data between blocks 300_000 and 400_000 +#[test] +fn test_chainfilter_real_data_short_searches() { + let index_size = 16; + let bloom_levels = 3; + + let mut cache = MemoryCache::new(); + + for_each_bloom(include_bytes!("blooms.txt"), | block_number, bloom | { + let modified_blooms = { + let filter = ChainFilter::new(&cache, index_size, bloom_levels); + filter.add_bloom(bloom, block_number) + }; + + // number of modified blooms should always be equal number of levels + assert_eq!(modified_blooms.len(), bloom_levels as usize); + cache.insert_blooms(modified_blooms); + }); + + for_each_log(include_bytes!("logs.txt"), | block_number, address, topics | { + println!("block_number: {:?}", block_number); + let filter = ChainFilter::new(&cache, index_size, bloom_levels); + let blocks = filter.blocks_with_bloom(&to_bloom(address), block_number, block_number + 1); + assert_eq!(blocks.len(), 1); + for (i, topic) in topics.iter().enumerate() { + println!("topic: {:?}", i); + let blocks = filter.blocks_with_bloom(&to_bloom(topic), block_number, block_number + 1); + assert_eq!(blocks.len(), 1); + } + }); +} + +// tests chain filter on real data between blocks 300_000 and 400_000 +#[test] +fn test_chainfilter_real_data_single_search() { + let index_size = 16; + let bloom_levels = 3; + + let mut cache = MemoryCache::new(); + + for_each_bloom(include_bytes!("blooms.txt"), | block_number, bloom | { + let modified_blooms = { + let filter = ChainFilter::new(&cache, index_size, bloom_levels); + filter.add_bloom(bloom, block_number) + }; + + // number of modified blooms should always be equal number of levels + assert_eq!(modified_blooms.len(), bloom_levels as usize); + cache.insert_blooms(modified_blooms); + }); + + let address = Address::from_str("c4395759e26469baa0e6421bdc1d0232c6f4b6c3").unwrap(); + let filter = ChainFilter::new(&cache, index_size, bloom_levels); + let blocks = filter.blocks_with_bloom(&to_bloom(&address), 300_000, 400_000); + // bloom may return more blocks, but our log density is low, so it should be fine + assert_eq!(blocks.len(), 3); + assert_eq!(blocks[0], 392697); + assert_eq!(blocks[1], 396348); + assert_eq!(blocks[2], 399804); +} + + diff --git a/ethcore/src/client.rs b/ethcore/src/client.rs index c3ec4b4d0..9244c26fc 100644 --- a/ethcore/src/client.rs +++ b/ethcore/src/client.rs @@ -34,6 +34,8 @@ use verification::*; use block::*; use transaction::LocalizedTransaction; use extras::TransactionAddress; +use filter::Filter; +use log_entry::LocalizedLogEntry; pub use blockchain::TreeRoute; /// Uniquely identifies block. @@ -144,6 +146,12 @@ pub trait BlockChainClient : Sync + Send { fn best_block_header(&self) -> Bytes { self.block_header(BlockId::Hash(self.chain_info().best_block_hash)).unwrap() } + + /// Returns numbers of blocks containing given bloom. + fn blocks_with_bloom(&self, bloom: &H2048, from_block: BlockId, to_block: BlockId) -> Option>; + + /// Returns logs matching given filter. + fn logs(&self, filter: Filter) -> Vec; } #[derive(Default, Clone, Debug, Eq, PartialEq)] @@ -179,7 +187,7 @@ pub struct Client { } const HISTORY: u64 = 1000; -const CLIENT_DB_VER_STR: &'static str = "2.1"; +const CLIENT_DB_VER_STR: &'static str = "3"; impl Client { /// Create a new client with given spec and DB path. @@ -304,7 +312,7 @@ impl Client { good_blocks.push(header.hash().clone()); - self.chain.write().unwrap().insert_block(&block.bytes); //TODO: err here? + self.chain.write().unwrap().insert_block(&block.bytes, result.block().receipts().clone()); //TODO: err here? let ancient = if header.number() >= HISTORY { Some(header.number() - HISTORY) } else { None }; match result.drain().commit(header.number(), &header.hash(), ancient.map(|n|(n, self.chain.read().unwrap().block_hash(n).unwrap()))) { Ok(_) => (), @@ -357,6 +365,15 @@ impl Client { BlockId::Latest => Some(chain.best_block_hash()) } } + + fn block_number(&self, id: BlockId) -> Option { + match id { + BlockId::Number(number) => Some(number), + BlockId::Hash(ref hash) => self.chain.read().unwrap().block_number(hash), + BlockId::Earliest => Some(0), + BlockId::Latest => Some(self.chain.read().unwrap().best_block_number()) + } + } } impl BlockChainClient for Client { @@ -455,6 +472,53 @@ impl BlockChainClient for Client { best_block_number: From::from(chain.best_block_number()) } } + + fn blocks_with_bloom(&self, bloom: &H2048, from_block: BlockId, to_block: BlockId) -> Option> { + match (self.block_number(from_block), self.block_number(to_block)) { + (Some(from), Some(to)) => Some(self.chain.read().unwrap().blocks_with_bloom(bloom, from, to)), + _ => None + } + } + + fn logs(&self, filter: Filter) -> Vec { + let mut blocks = filter.bloom_possibilities().iter() + .filter_map(|bloom| self.blocks_with_bloom(bloom, filter.from_block.clone(), filter.to_block.clone())) + .flat_map(|m| m) + // remove duplicate elements + .collect::>() + .into_iter() + .collect::>(); + + blocks.sort(); + + blocks.into_iter() + .filter_map(|number| self.chain.read().unwrap().block_hash(number).map(|hash| (number, hash))) + .filter_map(|(number, hash)| self.chain.read().unwrap().block_receipts(&hash).map(|r| (number, hash, r.receipts))) + .filter_map(|(number, hash, receipts)| self.chain.read().unwrap().block(&hash).map(|ref b| (number, hash, receipts, BlockView::new(b).transaction_hashes()))) + .flat_map(|(number, hash, receipts, hashes)| { + let mut log_index = 0; + receipts.into_iter() + .enumerate() + .flat_map(|(index, receipt)| { + log_index += receipt.logs.len(); + receipt.logs.into_iter() + .enumerate() + .filter(|tuple| filter.matches(&tuple.1)) + .map(|(i, log)| LocalizedLogEntry { + entry: log, + block_hash: hash.clone(), + block_number: number as usize, + transaction_hash: hashes.get(index).cloned().unwrap_or_else(H256::new), + transaction_index: index, + log_index: log_index + i + }) + .collect::>() + }) + .collect::>() + + }) + .collect() + } } impl MayPanic for Client { diff --git a/ethcore/src/externalities.rs b/ethcore/src/externalities.rs index 9116629fb..beb8d62a1 100644 --- a/ethcore/src/externalities.rs +++ b/ethcore/src/externalities.rs @@ -226,7 +226,11 @@ impl<'a> Ext for Externalities<'a> { fn log(&mut self, topics: Vec, data: &[u8]) { let address = self.origin_info.address.clone(); - self.substate.logs.push(LogEntry::new(address, topics, data.to_vec())); + self.substate.logs.push(LogEntry { + address: address, + topics: topics, + data: data.to_vec() + }); } fn suicide(&mut self, refund_address: &Address) { diff --git a/ethcore/src/extras.rs b/ethcore/src/extras.rs index b65d4ed7a..64d8afcb9 100644 --- a/ethcore/src/extras.rs +++ b/ethcore/src/extras.rs @@ -16,9 +16,10 @@ //! Blockchain DB extras. +use rocksdb::{DB, Writable}; use util::*; use header::BlockNumber; -use rocksdb::{DB, Writable}; +use receipt::Receipt; /// Represents index of extra data in database #[derive(Copy, Debug, Hash, Eq, PartialEq, Clone)] @@ -32,7 +33,9 @@ pub enum ExtrasIndex { /// Block log blooms index BlockLogBlooms = 3, /// Block blooms index - BlocksBlooms = 4 + BlocksBlooms = 4, + /// Block receipts index + BlockReceipts = 5, } /// trait used to write Extras data to db @@ -210,7 +213,13 @@ impl Encodable for BlockLogBlooms { /// Neighboring log blooms on certain level pub struct BlocksBlooms { /// List of block blooms. - pub blooms: [H2048; 16] + pub blooms: [H2048; 16], +} + +impl BlocksBlooms { + pub fn new() -> Self { + BlocksBlooms { blooms: unsafe { ::std::mem::zeroed() }} + } } impl ExtrasIndexable for BlocksBlooms { @@ -254,6 +263,15 @@ impl Encodable for BlocksBlooms { } } +/// Represents location of bloom in database. +#[derive(Debug, PartialEq)] +pub struct BlocksBloomLocation { + /// Unique hash of BlocksBloom + pub hash: H256, + /// Index within BlocksBloom + pub index: usize, +} + /// Represents address of certain transaction within block #[derive(Clone)] pub struct TransactionAddress { @@ -292,3 +310,43 @@ impl Encodable for TransactionAddress { s.append(&self.index); } } + +/// Contains all block receipts. +#[derive(Clone)] +pub struct BlockReceipts { + pub receipts: Vec, +} + +impl BlockReceipts { + pub fn new(receipts: Vec) -> Self { + BlockReceipts { + receipts: receipts + } + } +} + +impl Decodable for BlockReceipts { + fn decode(decoder: &D) -> Result where D: Decoder { + Ok(BlockReceipts { + receipts: try!(Decodable::decode(decoder)) + }) + } +} + +impl Encodable for BlockReceipts { + fn rlp_append(&self, s: &mut RlpStream) { + s.append(&self.receipts); + } +} + +impl HeapSizeOf for BlockReceipts { + fn heap_size_of_children(&self) -> usize { + self.receipts.heap_size_of_children() + } +} + +impl ExtrasIndexable for BlockReceipts { + fn extras_index() -> ExtrasIndex { + ExtrasIndex::BlockReceipts + } +} diff --git a/ethcore/src/filter.rs b/ethcore/src/filter.rs new file mode 100644 index 000000000..95c5687a7 --- /dev/null +++ b/ethcore/src/filter.rs @@ -0,0 +1,214 @@ +// Copyright 2015, 2016 Ethcore (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 . + +//! Blockchain filter + +use util::hash::*; +use util::sha3::*; +use client::BlockId; +use log_entry::LogEntry; + +/// Blockchain Filter. +pub struct Filter { + /// Blockchain will be searched from this block. + pub from_block: BlockId, + + /// Till this block. + pub to_block: BlockId, + + /// Search addresses. + /// + /// If None, match all. + /// If specified, log must be produced by one of these addresses. + pub address: Option>, + + /// Search topics. + /// + /// If None, match all. + /// If specified, log must contain one of these topics. + pub topics: [Option>; 4], +} + +impl Filter { + /// Returns combinations of each address and topic. + pub fn bloom_possibilities(&self) -> Vec { + let blooms = match self.address { + Some(ref addresses) if !addresses.is_empty() => + addresses.iter().map(|ref address| { + let mut bloom = H2048::new(); + bloom.shift_bloomed(&address.sha3()); + bloom + }).collect(), + _ => vec![H2048::new()] + }; + + self.topics.iter().fold(blooms, | bs, topic | match *topic { + None => bs, + Some(ref topics) => bs.into_iter().flat_map(|bloom| { + topics.into_iter().map(|topic| { + let mut b = bloom.clone(); + b.shift_bloomed(&topic.sha3()); + b + }).collect::>() + }).collect() + }) + } + + /// Returns true if given log entry matches filter. + pub fn matches(&self, log: &LogEntry) -> bool { + let matches = match self.address { + Some(ref addresses) if !addresses.is_empty() => addresses.iter().any(|address| &log.address == address), + _ => true + }; + + matches && self.topics.iter().enumerate().all(|(i, topic)| match *topic { + Some(ref topics) if !topics.is_empty() => topics.iter().any(|topic| log.topics.get(i) == Some(topic)), + _ => true + }) + } +} + +#[cfg(test)] +mod tests { + use std::str::FromStr; + use util::hash::*; + use filter::Filter; + use client::BlockId; + use log_entry::LogEntry; + + #[test] + fn test_bloom_possibilities_none() { + let none_filter = Filter { + from_block: BlockId::Earliest, + to_block: BlockId::Latest, + address: None, + topics: [None, None, None, None] + }; + + let possibilities = none_filter.bloom_possibilities(); + assert_eq!(possibilities.len(), 1); + assert!(possibilities[0].is_zero()) + } + + // block 399849 + #[test] + fn test_bloom_possibilities_single_address_and_topic() { + let filter = Filter { + from_block: BlockId::Earliest, + to_block: BlockId::Latest, + address: Some(vec![Address::from_str("b372018f3be9e171df0581136b59d2faf73a7d5d").unwrap()]), + topics: [ + Some(vec![H256::from_str("ff74e91598aed6ae5d2fdcf8b24cd2c7be49a0808112a305069355b7160f23f9").unwrap()]), + None, None, None + ] + }; + + let possibilities = filter.bloom_possibilities(); + assert_eq!(possibilities, vec![H2048::from_str("00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000000004000000004000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000").unwrap()]); + } + + #[test] + fn test_bloom_possibilities_single_address_and_many_topics() { + let filter = Filter { + from_block: BlockId::Earliest, + to_block: BlockId::Latest, + address: Some(vec![Address::from_str("b372018f3be9e171df0581136b59d2faf73a7d5d").unwrap()]), + topics: [ + Some(vec![H256::from_str("ff74e91598aed6ae5d2fdcf8b24cd2c7be49a0808112a305069355b7160f23f9").unwrap()]), + Some(vec![H256::from_str("ff74e91598aed6ae5d2fdcf8b24cd2c7be49a0808112a305069355b7160f23f9").unwrap()]), + None, None + ] + }; + + let possibilities = filter.bloom_possibilities(); + assert_eq!(possibilities, vec![H2048::from_str("00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000000004000000004000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000").unwrap()]); + } + + #[test] + fn test_bloom_possibilites_multiple_addresses_and_topics() { + let filter = Filter { + from_block: BlockId::Earliest, + to_block: BlockId::Latest, + address: Some(vec![ + Address::from_str("b372018f3be9e171df0581136b59d2faf73a7d5d").unwrap(), + Address::from_str("b372018f3be9e171df0581136b59d2faf73a7d5d").unwrap(), + ]), + topics: [ + Some(vec![ + H256::from_str("ff74e91598aed6ae5d2fdcf8b24cd2c7be49a0808112a305069355b7160f23f9").unwrap(), + H256::from_str("ff74e91598aed6ae5d2fdcf8b24cd2c7be49a0808112a305069355b7160f23f9").unwrap() + ]), + Some(vec![ + H256::from_str("ff74e91598aed6ae5d2fdcf8b24cd2c7be49a0808112a305069355b7160f23f9").unwrap(), + H256::from_str("ff74e91598aed6ae5d2fdcf8b24cd2c7be49a0808112a305069355b7160f23f9").unwrap() + ]), + Some(vec![H256::from_str("ff74e91598aed6ae5d2fdcf8b24cd2c7be49a0808112a305069355b7160f23f9").unwrap()]), + None + ] + }; + + // number of possibilites should be equal 2 * 2 * 2 * 1 = 8 + let possibilities = filter.bloom_possibilities(); + assert_eq!(possibilities.len(), 8); + assert_eq!(possibilities[0], H2048::from_str("00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000000004000000004000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000").unwrap()); + } + + #[test] + fn test_filter_matches() { + let filter = Filter { + from_block: BlockId::Earliest, + to_block: BlockId::Latest, + address: Some(vec![Address::from_str("b372018f3be9e171df0581136b59d2faf73a7d5d").unwrap()]), + topics: [ + Some(vec![H256::from_str("ff74e91598aed6ae5d2fdcf8b24cd2c7be49a0808112a305069355b7160f23f9").unwrap()]), + Some(vec![H256::from_str("ff74e91598aed6ae5d2fdcf8b24cd2c7be49a0808112a305069355b7160f23fa").unwrap()]), + None, None + ] + }; + + let entry0 = LogEntry { + address: Address::from_str("b372018f3be9e171df0581136b59d2faf73a7d5d").unwrap(), + topics: vec![ + H256::from_str("ff74e91598aed6ae5d2fdcf8b24cd2c7be49a0808112a305069355b7160f23f9").unwrap(), + H256::from_str("ff74e91598aed6ae5d2fdcf8b24cd2c7be49a0808112a305069355b7160f23fa").unwrap(), + H256::from_str("ff74e91598aed6ae5d2fdcf8b24cd2c7be49a0808112a305069355b7160f23f9").unwrap(), + ], + data: vec![] + }; + + let entry1 = LogEntry { + address: Address::from_str("b372018f3be9e171df0581136b59d2faf73a7d5e").unwrap(), + topics: vec![ + H256::from_str("ff74e91598aed6ae5d2fdcf8b24cd2c7be49a0808112a305069355b7160f23f9").unwrap(), + H256::from_str("ff74e91598aed6ae5d2fdcf8b24cd2c7be49a0808112a305069355b7160f23fa").unwrap(), + H256::from_str("ff74e91598aed6ae5d2fdcf8b24cd2c7be49a0808112a305069355b7160f23f9").unwrap(), + ], + data: vec![] + }; + + let entry2 = LogEntry { + address: Address::from_str("b372018f3be9e171df0581136b59d2faf73a7d5d").unwrap(), + topics: vec![ + H256::from_str("ff74e91598aed6ae5d2fdcf8b24cd2c7be49a0808112a305069355b7160f23f9").unwrap(), + ], + data: vec![] + }; + + assert_eq!(filter.matches(&entry0), true); + assert_eq!(filter.matches(&entry1), false); + assert_eq!(filter.matches(&entry2), false); + } +} diff --git a/ethcore/src/lib.rs b/ethcore/src/lib.rs index 3d43fd725..d7efae774 100644 --- a/ethcore/src/lib.rs +++ b/ethcore/src/lib.rs @@ -101,8 +101,10 @@ pub mod block_queue; pub mod client; pub mod error; pub mod ethereum; +pub mod filter; pub mod header; pub mod service; +pub mod log_entry; pub mod spec; pub mod transaction; pub mod views; @@ -111,7 +113,6 @@ pub mod receipt; mod common; mod basic_types; #[macro_use] mod evm; -mod log_entry; mod env_info; mod pod_account; mod pod_state; @@ -124,6 +125,7 @@ mod account_db; mod action_params; mod null_engine; mod builtin; +mod chainfilter; mod extras; mod substate; mod executive; diff --git a/ethcore/src/log_entry.rs b/ethcore/src/log_entry.rs index ee73b1ad1..a75e6fcc1 100644 --- a/ethcore/src/log_entry.rs +++ b/ethcore/src/log_entry.rs @@ -14,6 +14,8 @@ // You should have received a copy of the GNU General Public License // along with Parity. If not, see . +//! Block log. + use util::*; use basic_types::LogBloom; @@ -37,16 +39,25 @@ impl Encodable for LogEntry { } } -impl LogEntry { - /// Create a new log entry. - pub fn new(address: Address, topics: Vec, data: Bytes) -> LogEntry { - LogEntry { - address: address, - topics: topics, - data: data - } +impl Decodable for LogEntry { + fn decode(decoder: &D) -> Result where D: Decoder { + let d = decoder.as_rlp(); + let entry = LogEntry { + address: try!(d.val_at(0)), + topics: try!(d.val_at(1)), + data: try!(d.val_at(2)), + }; + Ok(entry) } +} +impl HeapSizeOf for LogEntry { + fn heap_size_of_children(&self) -> usize { + self.topics.heap_size_of_children() + self.data.heap_size_of_children() + } +} + +impl LogEntry { /// Calculates the bloom of this log entry. pub fn bloom(&self) -> LogBloom { self.topics.iter().fold(LogBloom::from_bloomed(&self.address.sha3()), |b, t| b.with_bloomed(&t.sha3())) @@ -65,6 +76,31 @@ impl FromJson for LogEntry { } } +/// Log localized in a blockchain. +#[derive(Default, Debug, PartialEq)] +pub struct LocalizedLogEntry { + /// Plain log entry. + pub entry: LogEntry, + /// Block in which this log was created. + pub block_hash: H256, + /// Block number. + pub block_number: usize, + /// Hash of transaction in which this log was created. + pub transaction_hash: H256, + /// Index of transaction within block. + pub transaction_index: usize, + /// Log position in the block. + pub log_index: usize, +} + +impl Deref for LocalizedLogEntry { + type Target = LogEntry; + + fn deref(&self) -> &Self::Target { + &self.entry + } +} + #[cfg(test)] mod tests { use util::*; @@ -74,7 +110,11 @@ mod tests { fn test_empty_log_bloom() { let bloom = H2048::from_str("00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000").unwrap(); let address = Address::from_str("0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6").unwrap(); - let log = LogEntry::new(address, vec![], vec![]); + let log = LogEntry { + address: address, + topics: vec![], + data: vec![] + }; assert_eq!(log.bloom(), bloom); } } diff --git a/ethcore/src/receipt.rs b/ethcore/src/receipt.rs index 59c842cd4..ae83a174a 100644 --- a/ethcore/src/receipt.rs +++ b/ethcore/src/receipt.rs @@ -55,6 +55,24 @@ impl Encodable for Receipt { } } +impl Decodable for Receipt { + fn decode(decoder: &D) -> Result where D: Decoder { + let d = decoder.as_rlp(); + let receipt = Receipt { + state_root: try!(d.val_at(0)), + gas_used: try!(d.val_at(1)), + log_bloom: try!(d.val_at(2)), + logs: try!(d.val_at(3)), + }; + Ok(receipt) + } +} + +impl HeapSizeOf for Receipt { + fn heap_size_of_children(&self) -> usize { + self.logs.heap_size_of_children() + } +} #[test] fn test_basic() { @@ -62,11 +80,11 @@ fn test_basic() { let r = Receipt::new( x!("2f697d671e9ae4ee24a43c4b0d7e15f1cb4ba6de1561120d43b9a4e8c4a8a6ee"), x!(0x40cae), - vec![LogEntry::new( - x!("dcf421d093428b096ca501a7cd1a740855a7976f"), - vec![], - vec![0u8; 32] - )] + vec![LogEntry { + address: x!("dcf421d093428b096ca501a7cd1a740855a7976f"), + topics: vec![], + data: vec![0u8; 32] + }] ); assert_eq!(&encode(&r)[..], &expected[..]); } diff --git a/ethcore/src/substate.rs b/ethcore/src/substate.rs index 235ce2e97..374397ca7 100644 --- a/ethcore/src/substate.rs +++ b/ethcore/src/substate.rs @@ -66,13 +66,21 @@ mod tests { fn accrue() { let mut sub_state = Substate::new(); sub_state.contracts_created.push(address_from_u64(1u64)); - sub_state.logs.push(LogEntry::new(address_from_u64(1u64), vec![], vec![])); + sub_state.logs.push(LogEntry { + address: address_from_u64(1u64), + topics: vec![], + data: vec![] + }); sub_state.sstore_clears_count = x!(5); sub_state.suicides.insert(address_from_u64(10u64)); let mut sub_state_2 = Substate::new(); sub_state_2.contracts_created.push(address_from_u64(2u64)); - sub_state_2.logs.push(LogEntry::new(address_from_u64(1u64), vec![], vec![])); + sub_state_2.logs.push(LogEntry { + address: address_from_u64(1u64), + topics: vec![], + data: vec![] + }); sub_state_2.sstore_clears_count = x!(7); sub_state.accrue(sub_state_2); diff --git a/ethcore/src/tests/helpers.rs b/ethcore/src/tests/helpers.rs index 56653e820..2f90731f0 100644 --- a/ethcore/src/tests/helpers.rs +++ b/ethcore/src/tests/helpers.rs @@ -192,7 +192,7 @@ pub fn generate_dummy_blockchain(block_number: u32) -> GuardedTempResult { @@ -205,7 +205,7 @@ pub fn generate_dummy_blockchain_with_extra(block_number: u32) -> GuardedTempRes let temp = RandomTempPath::new(); let bc = BlockChain::new(&create_unverifiable_block(0, H256::zero()), temp.as_path()); for block_order in 1..block_number { - bc.insert_block(&create_unverifiable_block_with_extra(block_order, bc.best_block_hash(), None)); + bc.insert_block(&create_unverifiable_block_with_extra(block_order, bc.best_block_hash(), None), vec![]); } GuardedTempResult:: { diff --git a/ethcore/src/verification.rs b/ethcore/src/verification.rs index c7d5e265f..ad5efd24a 100644 --- a/ethcore/src/verification.rs +++ b/ethcore/src/verification.rs @@ -302,6 +302,14 @@ mod tests { fn block_hash(&self, index: BlockNumber) -> Option { self.numbers.get(&index).cloned() } + + fn blocks_with_bloom(&self, _bloom: &H2048, _from_block: BlockNumber, _to_block: BlockNumber) -> Vec { + unimplemented!() + } + + fn block_receipts(&self, _hash: &H256) -> Option { + unimplemented!() + } } fn basic_test(bytes: &[u8], engine: &Engine) -> Result<(), Error> { diff --git a/rpc/src/v1/impls/eth.rs b/rpc/src/v1/impls/eth.rs index b595139f9..689afd019 100644 --- a/rpc/src/v1/impls/eth.rs +++ b/rpc/src/v1/impls/eth.rs @@ -25,7 +25,7 @@ use ethcore::client::*; use ethcore::views::*; use ethcore::ethereum::denominations::shannon; use v1::traits::{Eth, EthFilter}; -use v1::types::{Block, BlockTransactions, BlockNumber, Bytes, SyncStatus, SyncInfo, Transaction, OptionalValue, Index}; +use v1::types::{Block, BlockTransactions, BlockNumber, Bytes, SyncStatus, SyncInfo, Transaction, OptionalValue, Index, Filter, Log}; /// Eth rpc implementation. pub struct EthClient { @@ -197,8 +197,18 @@ impl Eth for EthClient { from_params::<(BlockNumber, Index)>(params) .and_then(|(number, index)| self.transaction(TransactionId::Location(number.into(), index.value()))) } -} + fn logs(&self, params: Params) -> Result { + from_params::<(Filter,)>(params) + .and_then(|(filter,)| { + let logs = self.client.logs(filter.into()) + .into_iter() + .map(From::from) + .collect::>(); + to_value(&logs) + }) + } +} /// Eth filter rpc implementation. pub struct EthFilterClient { diff --git a/rpc/src/v1/types/filter.rs b/rpc/src/v1/types/filter.rs index 9b21cf8e7..c5c3604dd 100644 --- a/rpc/src/v1/types/filter.rs +++ b/rpc/src/v1/types/filter.rs @@ -19,37 +19,64 @@ use serde_json::value; use jsonrpc_core::Value; use util::hash::*; use v1::types::BlockNumber; +use ethcore::filter::Filter as EthFilter; +use ethcore::client::BlockId; #[derive(Debug, PartialEq)] -pub enum Topic { - Single(H256), - Multiple(Vec), - Null +pub enum VariadicValue where T: Deserialize { + Single(T), + Multiple(Vec), + Null, } -impl Deserialize for Topic { - fn deserialize(deserializer: &mut D) -> Result +impl Deserialize for VariadicValue where T: Deserialize { + fn deserialize(deserializer: &mut D) -> Result, D::Error> where D: Deserializer { let v = try!(Value::deserialize(deserializer)); if v.is_null() { - return Ok(Topic::Null); + return Ok(VariadicValue::Null); } - Deserialize::deserialize(&mut value::Deserializer::new(v.clone())).map(Topic::Single) - .or_else(|_| Deserialize::deserialize(&mut value::Deserializer::new(v.clone())).map(Topic::Multiple)) + Deserialize::deserialize(&mut value::Deserializer::new(v.clone())).map(VariadicValue::Single) + .or_else(|_| Deserialize::deserialize(&mut value::Deserializer::new(v.clone())).map(VariadicValue::Multiple)) .map_err(|_| Error::syntax("")) // unreachable, but types must match } } +pub type FilterAddress = VariadicValue
; +pub type Topic = VariadicValue; + #[derive(Debug, PartialEq, Deserialize)] pub struct Filter { #[serde(rename="fromBlock")] pub from_block: Option, #[serde(rename="toBlock")] pub to_block: Option, - pub address: Option
, - pub topics: Option> + pub address: Option, + pub topics: Option>, +} + +impl Into for Filter { + fn into(self) -> EthFilter { + EthFilter { + from_block: self.from_block.map_or_else(|| BlockId::Earliest, Into::into), + to_block: self.to_block.map_or_else(|| BlockId::Latest, Into::into), + address: self.address.and_then(|address| match address { + VariadicValue::Null => None, + VariadicValue::Single(a) => Some(vec![a]), + VariadicValue::Multiple(a) => Some(a) + }), + topics: { + let mut iter = self.topics.map_or_else(Vec::new, |topics| topics.into_iter().take(4).map(|topic| match topic { + VariadicValue::Null => None, + VariadicValue::Single(t) => Some(vec![t]), + VariadicValue::Multiple(t) => Some(t) + }).filter_map(|m| m).collect()).into_iter(); + [iter.next(), iter.next(), iter.next(), iter.next()] + } + } + } } #[cfg(test)] @@ -65,9 +92,9 @@ mod tests { let s = r#"["0x000000000000000000000000a94f5374fce5edbc8e2a8697c15331677e6ebf0b", null, ["0x000000000000000000000000a94f5374fce5edbc8e2a8697c15331677e6ebf0b", "0x0000000000000000000000000aff3454fce5edbc8cca8697c15331677e6ebccc"]]"#; let deserialized: Vec = serde_json::from_str(s).unwrap(); assert_eq!(deserialized, vec![ - Topic::Single(H256::from_str("000000000000000000000000a94f5374fce5edbc8e2a8697c15331677e6ebf0b").unwrap()), - Topic::Null, - Topic::Multiple(vec![ + VariadicValue::Single(H256::from_str("000000000000000000000000a94f5374fce5edbc8e2a8697c15331677e6ebf0b").unwrap()), + VariadicValue::Null, + VariadicValue::Multiple(vec![ H256::from_str("000000000000000000000000a94f5374fce5edbc8e2a8697c15331677e6ebf0b").unwrap(), H256::from_str("0000000000000000000000000aff3454fce5edbc8cca8697c15331677e6ebccc").unwrap() ]) diff --git a/rpc/src/v1/types/log.rs b/rpc/src/v1/types/log.rs new file mode 100644 index 000000000..0629c5534 --- /dev/null +++ b/rpc/src/v1/types/log.rs @@ -0,0 +1,83 @@ +// Copyright 2015, 2016 Ethcore (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 util::hash::*; +use util::uint::*; +use ethcore::log_entry::LocalizedLogEntry; +use v1::types::Bytes; + +#[derive(Debug, Serialize)] +pub struct Log { + address: Address, + topics: Vec, + data: Bytes, + #[serde(rename="blockHash")] + block_hash: H256, + #[serde(rename="blockNumber")] + block_number: U256, + #[serde(rename="transactionHash")] + transaction_hash: H256, + #[serde(rename="transactionIndex")] + transaction_index: U256, + #[serde(rename="logIndex")] + log_index: U256, +} + +impl From for Log { + fn from(e: LocalizedLogEntry) -> Log { + Log { + address: e.entry.address, + topics: e.entry.topics, + data: Bytes::new(e.entry.data), + block_hash: e.block_hash, + block_number: From::from(e.block_number), + transaction_hash: e.transaction_hash, + transaction_index: From::from(e.transaction_index), + log_index: From::from(e.log_index) + } + } +} + +#[cfg(test)] +mod tests { + use serde_json; + use std::str::FromStr; + use util::hash::*; + use util::uint::*; + use v1::types::{Bytes, Log}; + + #[test] + fn log_serialization() { + let s = r#"{"address":"0x33990122638b9132ca29c723bdf037f1a891a70c","topics":["0xa6697e974e6a320f454390be03f74955e8978f1a6971ea6730542e37b66179bc","0x4861736852656700000000000000000000000000000000000000000000000000"],"data":"0x","blockHash":"0xed76641c68a1c641aee09a94b3b471f4dc0316efe5ac19cf488e2674cf8d05b5","blockNumber":"0x04510c","transactionHash":"0x0000000000000000000000000000000000000000000000000000000000000000","transactionIndex":"0x00","logIndex":"0x01"}"#; + + let log = Log { + address: Address::from_str("33990122638b9132ca29c723bdf037f1a891a70c").unwrap(), + topics: vec![ + H256::from_str("a6697e974e6a320f454390be03f74955e8978f1a6971ea6730542e37b66179bc").unwrap(), + H256::from_str("4861736852656700000000000000000000000000000000000000000000000000").unwrap() + ], + data: Bytes::new(vec![]), + block_hash: H256::from_str("ed76641c68a1c641aee09a94b3b471f4dc0316efe5ac19cf488e2674cf8d05b5").unwrap(), + block_number: U256::from(0x4510c), + transaction_hash: H256::new(), + transaction_index: U256::zero(), + log_index: U256::one() + }; + + let serialized = serde_json::to_string(&log).unwrap(); + assert_eq!(serialized, s); + } +} diff --git a/rpc/src/v1/types/mod.rs b/rpc/src/v1/types/mod.rs index c4c6e8295..34c1f1cff 100644 --- a/rpc/src/v1/types/mod.rs +++ b/rpc/src/v1/types/mod.rs @@ -19,6 +19,7 @@ mod block_number; mod bytes; mod filter; mod index; +mod log; mod optionals; mod sync; mod transaction; @@ -28,6 +29,7 @@ pub use self::block_number::BlockNumber; pub use self::bytes::Bytes; pub use self::filter::Filter; pub use self::index::Index; +pub use self::log::Log; pub use self::optionals::OptionalValue; pub use self::sync::{SyncStatus, SyncInfo}; pub use self::transaction::Transaction; diff --git a/sync/src/range_collection.rs b/sync/src/range_collection.rs index c3333ab63..dc2f4e446 100644 --- a/sync/src/range_collection.rs +++ b/sync/src/range_collection.rs @@ -207,7 +207,7 @@ impl RangeCollection for Vec<(K, Vec)> where K: Ord + PartialEq + } #[test] -#[allow(cyclomatic_complexity)] +#[cfg_attr(feature="dev", allow(cyclomatic_complexity))] fn test_range() { use std::cmp::{Ordering}; diff --git a/sync/src/tests/helpers.rs b/sync/src/tests/helpers.rs index 8c8b3b10a..7f2928ccd 100644 --- a/sync/src/tests/helpers.rs +++ b/sync/src/tests/helpers.rs @@ -23,6 +23,8 @@ use io::SyncIo; use chain::{ChainSync}; use ethcore::receipt::Receipt; use ethcore::transaction::LocalizedTransaction; +use ethcore::filter::Filter; +use ethcore::log_entry::LocalizedLogEntry; pub struct TestBlockChainClient { pub blocks: RwLock>, @@ -111,6 +113,14 @@ impl BlockChainClient for TestBlockChainClient { unimplemented!(); } + fn blocks_with_bloom(&self, _bloom: &H2048, _from_block: BlockId, _to_block: BlockId) -> Option> { + unimplemented!(); + } + + fn logs(&self, filter: Filter) -> Vec { + unimplemented!(); + } + fn block_header(&self, id: BlockId) -> Option { self.block_hash(id).and_then(|hash| self.blocks.read().unwrap().get(&hash).map(|r| Rlp::new(r).at(0).as_raw().to_vec())) } diff --git a/util/src/chainfilter.rs b/util/src/chainfilter.rs deleted file mode 100644 index 20462c698..000000000 --- a/util/src/chainfilter.rs +++ /dev/null @@ -1,469 +0,0 @@ -// Copyright 2015, 2016 Ethcore (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 . - -//! Multilevel blockchain bloom filter. -//! -//! ``` -//! extern crate ethcore_util as util; -//! use std::str::FromStr; -//! use util::chainfilter::*; -//! use util::sha3::*; -//! use util::hash::*; -//! -//! fn main() { -//! let (index_size, bloom_levels) = (16, 3); -//! let mut cache = MemoryCache::new(); -//! -//! let address = Address::from_str("ef2d6d194084c2de36e0dabfce45d046b37d1106").unwrap(); -//! -//! // borrow cache for reading inside the scope -//! let modified_blooms = { -//! let filter = ChainFilter::new(&cache, index_size, bloom_levels); -//! let block_number = 39; -//! let mut bloom = H2048::new(); -//! bloom.shift_bloomed(&address.sha3()); -//! filter.add_bloom(&bloom, block_number) -//! }; -//! -//! // number of updated blooms is equal number of levels -//! assert_eq!(modified_blooms.len(), bloom_levels as usize); -//! -//! // lets inserts modified blooms into the cache -//! cache.insert_blooms(modified_blooms); -//! -//! // borrow cache for another reading operations -//! { -//! let filter = ChainFilter::new(&cache, index_size, bloom_levels); -//! let blocks = filter.blocks_with_address(&address, 10, 40); -//! assert_eq!(blocks.len(), 1); -//! assert_eq!(blocks[0], 39); -//! } -//! } -//! ``` -//! -use std::collections::{HashMap}; -use hash::*; -use sha3::*; - -/// Represents bloom index in cache -/// -/// On cache level 0, every block bloom is represented by different index. -/// On higher cache levels, multiple block blooms are represented by one -/// index. Their `BloomIndex` can be created from block number and given level. -#[derive(Eq, PartialEq, Hash, Clone, Debug)] -pub struct BloomIndex { - /// Bloom level - pub level: u8, - /// Filter Index - pub index: usize, -} - -impl BloomIndex { - /// Default constructor for `BloomIndex` - pub fn new(level: u8, index: usize) -> BloomIndex { - BloomIndex { - level: level, - index: index, - } - } -} - -/// Types implementing this trait should provide read access for bloom filters database. -pub trait FilterDataSource { - /// returns reference to log at given position if it exists - fn bloom_at_index(&self, index: &BloomIndex) -> Option<&H2048>; -} - -/// In memory cache for blooms. -/// -/// Stores all blooms in HashMap, which indexes them by `BloomIndex`. -pub struct MemoryCache { - blooms: HashMap, -} - -impl MemoryCache { - /// Default constructor for MemoryCache - pub fn new() -> MemoryCache { - MemoryCache { blooms: HashMap::new() } - } - - /// inserts all blooms into cache - /// - /// if bloom at given index already exists, overwrites it - pub fn insert_blooms(&mut self, blooms: HashMap) { - self.blooms.extend(blooms); - } -} - -impl FilterDataSource for MemoryCache { - fn bloom_at_index(&self, index: &BloomIndex) -> Option<&H2048> { - self.blooms.get(index) - } -} - -/// Should be used for search operations on blockchain. -pub struct ChainFilter<'a, D> - where D: FilterDataSource + 'a -{ - data_source: &'a D, - index_size: usize, - level_sizes: Vec, -} - -impl<'a, D> ChainFilter<'a, D> where D: FilterDataSource -{ - /// Creates new filter instance. - /// - /// Borrows `FilterDataSource` for reading. - pub fn new(data_source: &'a D, index_size: usize, levels: u8) -> Self { - if levels == 0 { - panic!("ChainFilter requires at least 1 level"); - } - - let mut filter = ChainFilter { - data_source: data_source, - index_size: index_size, - // 0 level has always a size of 1 - level_sizes: vec![1] - }; - - // cache level sizes, so we do not have to calculate them all the time - // eg. if levels == 3, index_size = 16 - // level_sizes = [1, 16, 256] - let additional: Vec = (1..).into_iter() - .scan(1, |acc, _| { - *acc = *acc * index_size; - Some(*acc) - }) - .take(levels as usize - 1) - .collect(); - filter.level_sizes.extend(additional); - - filter - } - - /// unsafely get level size - fn level_size(&self, level: u8) -> usize { - self.level_sizes[level as usize] - } - - /// converts block number and level to `BloomIndex` - fn bloom_index(&self, block_number: usize, level: u8) -> BloomIndex { - BloomIndex { - 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 - fn lower_level_bloom_indexes(&self, index: &BloomIndex) -> 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| BloomIndex::new(new_level, offset + i)).collect() - } - - /// return number of levels - fn levels(&self) -> u8 { - self.level_sizes.len() as u8 - } - - /// returns max filter level - fn max_level(&self) -> u8 { - self.level_sizes.len() as u8 - 1 - } - - /// internal function which does bloom search recursively - fn blocks(&self, bloom: &H2048, from_block: usize, to_block: usize, level: u8, offset: usize) -> Option> { - let index = self.bloom_index(offset, level); - - match self.data_source.bloom_at_index(&index) { - None => return None, - Some(level_bloom) => match level { - // if we are on the lowest level - // take the value, exclude to_block - 0 if offset < to_block => return Some(vec![offset]), - // return None if it is is equal to to_block - 0 => return None, - // return None if current level doesnt contain given bloom - _ if !level_bloom.contains(bloom) => return None, - // continue processing && go down - _ => () - } - }; - - let level_size = self.level_size(level - 1); - let from_index = self.bloom_index(from_block, level - 1); - let to_index = self.bloom_index(to_block, level - 1); - let res: Vec = self.lower_level_bloom_indexes(&index).into_iter() - // chose only blooms in range - .filter(|li| li.index >= from_index.index && li.index <= to_index.index) - // map them to offsets - .map(|li| li.index * level_size) - // get all blocks that may contain our bloom - .map(|off| self.blocks(bloom, from_block, to_block, level - 1, off)) - // filter existing ones - .filter_map(|x| x) - // flatten nested structures - .flat_map(|v| v) - .collect(); - Some(res) - } - - /// Adds new bloom to all filter levels - pub fn add_bloom(&self, bloom: &H2048, block_number: usize) -> HashMap { - let mut result: HashMap = HashMap::new(); - - for level in 0..self.levels() { - let bloom_index = self.bloom_index(block_number, level); - let new_bloom = match self.data_source.bloom_at_index(&bloom_index) { - Some(old_bloom) => old_bloom | bloom, - None => bloom.clone(), - }; - - result.insert(bloom_index, new_bloom); - } - - result - } - - /// Adds new blooms starting from block number. - pub fn add_blooms(&self, blooms: &[H2048], block_number: usize) -> HashMap { - let mut result: HashMap = HashMap::new(); - - for level in 0..self.levels() { - for i in 0..blooms.len() { - let bloom_index = self.bloom_index(block_number + i, level); - let is_new_bloom = match result.get_mut(&bloom_index) { - - // it was already modified - Some(to_shift) => { - *to_shift = &blooms[i] | to_shift; - false - } - None => true, - }; - - // it hasn't been modified yet - if is_new_bloom { - let new_bloom = match self.data_source.bloom_at_index(&bloom_index) { - Some(old_bloom) => old_bloom | &blooms[i], - None => blooms[i].clone(), - }; - result.insert(bloom_index, new_bloom); - } - } - } - - result - } - - /// Resets bloom at level 0 and forces rebuild on higher levels. - pub fn reset_bloom(&self, bloom: &H2048, block_number: usize) -> HashMap { - let mut result: HashMap = HashMap::new(); - - let mut reset_index = self.bloom_index(block_number, 0); - result.insert(reset_index.clone(), bloom.clone()); - - for level in 1..self.levels() { - let index = self.bloom_index(block_number, level); - // get all bloom indexes that were used to construct this bloom - let lower_indexes = self.lower_level_bloom_indexes(&index); - let new_bloom = lower_indexes.into_iter() - // skip reseted one - .filter(|li| li != &reset_index) - // get blooms for these indexes - .map(|li| self.data_source.bloom_at_index(&li)) - // filter existing ones - .filter_map(|b| b) - // BitOr all of them - .fold(H2048::new(), |acc, bloom| &acc | bloom); - - reset_index = index.clone(); - result.insert(index, &new_bloom | bloom); - } - - result - } - - /// Sets lowest level bloom to 0 and forces rebuild on higher levels. - pub fn clear_bloom(&self, block_number: usize) -> HashMap { - self.reset_bloom(&H2048::new(), block_number) - } - - /// Returns numbers of blocks that may contain Address. - pub fn blocks_with_address(&self, address: &Address, from_block: usize, to_block: usize) -> Vec { - let mut bloom = H2048::new(); - bloom.shift_bloomed(&address.sha3()); - self.blocks_with_bloom(&bloom, from_block, to_block) - } - - /// Returns numbers of blocks that may contain Topic. - pub fn blocks_with_topic(&self, topic: &H256, from_block: usize, to_block: usize) -> Vec { - let mut bloom = H2048::new(); - bloom.shift_bloomed(&topic.sha3()); - self.blocks_with_bloom(&bloom, from_block, to_block) - } - - /// Returns numbers of blocks that may log bloom. - pub fn blocks_with_bloom(&self, bloom: &H2048, from_block: usize, to_block: usize) -> Vec { - let mut result = vec![]; - // lets start from highest level - let max_level = self.max_level(); - let level_size = self.level_size(max_level); - let from_index = self.bloom_index(from_block, max_level); - let to_index = self.bloom_index(to_block, max_level); - - for index in from_index.index..to_index.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(bloom, from_block, to_block, max_level, offset) { - result.extend(blocks); - } - } - - result - } -} - -#[cfg(test)] -mod tests { - use hash::*; - use chainfilter::*; - use sha3::*; - use std::str::FromStr; - - #[test] - fn test_level_size() { - let cache = MemoryCache::new(); - let filter = ChainFilter::new(&cache, 16, 3); - assert_eq!(filter.level_size(0), 1); - assert_eq!(filter.level_size(1), 16); - assert_eq!(filter.level_size(2), 256); - } - - #[test] - fn test_bloom_index() { - let cache = MemoryCache::new(); - let filter = ChainFilter::new(&cache, 16, 3); - - let bi0 = filter.bloom_index(0, 0); - assert_eq!(bi0.level, 0); - assert_eq!(bi0.index, 0); - - let bi1 = filter.bloom_index(1, 0); - assert_eq!(bi1.level, 0); - assert_eq!(bi1.index, 1); - - let bi2 = filter.bloom_index(2, 0); - assert_eq!(bi2.level, 0); - assert_eq!(bi2.index, 2); - - let bi3 = filter.bloom_index(3, 1); - assert_eq!(bi3.level, 1); - assert_eq!(bi3.index, 0); - - let bi4 = filter.bloom_index(15, 1); - assert_eq!(bi4.level, 1); - assert_eq!(bi4.index, 0); - - let bi5 = filter.bloom_index(16, 1); - assert_eq!(bi5.level, 1); - assert_eq!(bi5.index, 1); - - let bi6 = filter.bloom_index(255, 2); - assert_eq!(bi6.level, 2); - assert_eq!(bi6.index, 0); - - let bi7 = filter.bloom_index(256, 2); - assert_eq!(bi7.level, 2); - assert_eq!(bi7.index, 1); - } - - #[test] - fn test_lower_level_bloom_indexes() { - let cache = MemoryCache::new(); - let filter = ChainFilter::new(&cache, 16, 3); - - let bi = filter.bloom_index(256, 2); - assert_eq!(bi.level, 2); - assert_eq!(bi.index, 1); - - let mut ebis = vec![]; - for i in 16..32 { - ebis.push(BloomIndex::new(1, i)); - } - - let bis = filter.lower_level_bloom_indexes(&bi); - assert_eq!(ebis, bis); - } - - #[test] - fn test_topic_basic_search() { - let index_size = 16; - let bloom_levels = 3; - - let mut cache = MemoryCache::new(); - let topic = H256::from_str("8d936b1bd3fc635710969ccfba471fb17d598d9d1971b538dd712e1e4b4f4dba").unwrap(); - - let modified_blooms = { - let filter = ChainFilter::new(&cache, index_size, bloom_levels); - let block_number = 23; - let mut bloom = H2048::new(); - bloom.shift_bloomed(&topic.sha3()); - filter.add_bloom(&bloom, block_number) - }; - - // number of modified blooms should always be equal number of levels - assert_eq!(modified_blooms.len(), bloom_levels as usize); - cache.insert_blooms(modified_blooms); - - { - let filter = ChainFilter::new(&cache, index_size, bloom_levels); - let blocks = filter.blocks_with_topic(&topic, 0, 100); - assert_eq!(blocks.len(), 1); - assert_eq!(blocks[0], 23); - } - - { - let filter = ChainFilter::new(&cache, index_size, bloom_levels); - let blocks = filter.blocks_with_topic(&topic, 0, 23); - assert_eq!(blocks.len(), 0); - } - - { - let filter = ChainFilter::new(&cache, index_size, bloom_levels); - let blocks = filter.blocks_with_topic(&topic, 23, 24); - assert_eq!(blocks.len(), 1); - assert_eq!(blocks[0], 23); - } - - { - let filter = ChainFilter::new(&cache, index_size, bloom_levels); - let blocks = filter.blocks_with_topic(&topic, 24, 100); - assert_eq!(blocks.len(), 0); - } - } -} diff --git a/util/src/lib.rs b/util/src/lib.rs index 2b7438cf3..1fba48e00 100644 --- a/util/src/lib.rs +++ b/util/src/lib.rs @@ -130,7 +130,6 @@ pub mod memorydb; pub mod overlaydb; pub mod journaldb; mod math; -pub mod chainfilter; pub mod crypto; pub mod triehash; pub mod trie; @@ -153,7 +152,6 @@ pub use memorydb::*; pub use overlaydb::*; pub use journaldb::*; pub use math::*; -pub use chainfilter::*; pub use crypto::*; pub use triehash::*; pub use trie::*;