From 82c23f377c5f76b65ed89ca519bd159f6331ae18 Mon Sep 17 00:00:00 2001 From: Marek Date: Wed, 15 Jan 2025 12:31:45 +0100 Subject: [PATCH] add(test): Add serialized NU5 blocks to test vectors (#9098) * Add serialized Mainnet blocks for tests * Add Sapling anchors * Add Mainnet Orchard anchors * Remove wrong Testnet NU5 blocks * Add Testnet blocks with V5 txs to test vectors * Move the Sapling treestate * Add Sapling & Orchard anchors * Remove unneeded test for fake V5 txs We don't need this test anymore since we have real V5 txs now. * Add `has_transparent_inputs` to `Transaction` * Fix `v5_with_sapling_spends` test * Fix `binding_signatures` test * Refactor block test vectors * Use real V5 txs instead of fake ones * Fix `v5_transaction_is_rejected_before_nu5` test * Fix `v5_tx_is_accepted_after_nu5_activation` test * Fix `v5_tx_with_no_outputs_fails_validation` test * Move `v5_tx_with_no_outputs_fails_validation` test * Fix `v5_tx_with_no_inputs_fails_verification` test * Fix `v5_tx_with_orchard_actions_has_inputs..` test * Fix `v5_coinbase_tx_without_spends_flag_passes` * Simplify `orchard` imports * Fix `v5_tx_with_orchard_actions_has_flags` test * Fix `v5_coinbase_tx_with_enable_spends_fails` * Fix `v5_tx_with_duplicate_orchard_action` test * Fix `coinbase_outputs_are_decryptable_for_v5` * Fix `shielded_outputs_are_not_decryptable_for_v5` * Use `Network::iter` instead of Mainnet * Rename basic V5 tx test * Apply suggestions from code review Co-authored-by: Arya * Return an `Ok` in tx is not coinbase * formatting * Update zebra-consensus/src/transaction/check.rs Co-authored-by: Arya --------- Co-authored-by: Arya Co-authored-by: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com> --- zebra-chain/src/block/tests/vectors.rs | 132 ++- zebra-chain/src/tests/vectors.rs | 27 +- zebra-chain/src/transaction.rs | 7 +- zebra-chain/src/transaction/arbitrary.rs | 17 +- zebra-chain/src/transaction/tests/vectors.rs | 246 ++---- zebra-consensus/src/transaction/tests.rs | 773 ++++++++---------- .../src/vectors/block-main-1-687-106.txt | 1 + .../src/vectors/block-main-1-687-107.txt | 1 + .../src/vectors/block-main-1-687-108.txt | 1 + .../src/vectors/block-main-1-687-113.txt | 1 + .../src/vectors/block-main-1-687-118.txt | 1 + .../src/vectors/block-main-1-687-121.txt | 1 + .../src/vectors/block-test-1-842-421.txt | 1 + .../src/vectors/block-test-1-842-432.txt | 1 + .../src/vectors/block-test-1-842-462.txt | 1 + .../src/vectors/block-test-1-842-467.txt | 1 + .../src/vectors/block-test-1-842-468.txt | 1 + zebra-test/src/vectors/block.rs | 206 ++++- 18 files changed, 705 insertions(+), 714 deletions(-) create mode 100644 zebra-test/src/vectors/block-main-1-687-106.txt create mode 100644 zebra-test/src/vectors/block-main-1-687-107.txt create mode 100644 zebra-test/src/vectors/block-main-1-687-108.txt create mode 100644 zebra-test/src/vectors/block-main-1-687-113.txt create mode 100644 zebra-test/src/vectors/block-main-1-687-118.txt create mode 100644 zebra-test/src/vectors/block-main-1-687-121.txt create mode 100644 zebra-test/src/vectors/block-test-1-842-421.txt create mode 100644 zebra-test/src/vectors/block-test-1-842-432.txt create mode 100644 zebra-test/src/vectors/block-test-1-842-462.txt create mode 100644 zebra-test/src/vectors/block-test-1-842-467.txt create mode 100644 zebra-test/src/vectors/block-test-1-842-468.txt diff --git a/zebra-chain/src/block/tests/vectors.rs b/zebra-chain/src/block/tests/vectors.rs index 5ff19ca1092..02764c19ef7 100644 --- a/zebra-chain/src/block/tests/vectors.rs +++ b/zebra-chain/src/block/tests/vectors.rs @@ -9,10 +9,8 @@ use crate::{ block::{ serialize::MAX_BLOCK_BYTES, Block, BlockTimeError, Commitment::*, Hash, Header, Height, }, - parameters::{ - Network::{self, *}, - NetworkUpgrade::*, - }, + parameters::{Network, NetworkUpgrade::*}, + sapling, serialization::{ sha256d, SerializationError, ZcashDeserialize, ZcashDeserializeInto, ZcashSerialize, }, @@ -191,88 +189,80 @@ fn block_test_vectors_unique() { ); } +/// Checks that: +/// +/// - the block test vector indexes match the heights in the block data; +/// - each post-Sapling block has a corresponding final Sapling root; +/// - each post-Orchard block has a corresponding final Orchard root. #[test] -fn block_test_vectors_height_mainnet() { - let _init_guard = zebra_test::init(); - - block_test_vectors_height(Mainnet); -} - -#[test] -fn block_test_vectors_height_testnet() { +fn block_test_vectors() { let _init_guard = zebra_test::init(); - block_test_vectors_height(Network::new_default_testnet()); -} + for net in Network::iter() { + let sapling_anchors = net.sapling_anchors(); + let orchard_anchors = net.orchard_anchors(); -/// Test that the block test vector indexes match the heights in the block data, -/// and that each post-sapling block has a corresponding final sapling root. -fn block_test_vectors_height(network: Network) { - let (block_iter, sapling_roots) = network.block_sapling_roots_iter(); - - for (&height, block) in block_iter { - let block = block - .zcash_deserialize_into::() - .expect("block is structurally valid"); - assert_eq!( - block.coinbase_height().expect("block height is valid").0, - height, - "deserialized height must match BTreeMap key height" - ); + for (&height, block) in net.block_iter() { + let block = block + .zcash_deserialize_into::() + .expect("block is structurally valid"); + assert_eq!( + block.coinbase_height().expect("block height is valid").0, + height, + "deserialized height must match BTreeMap key height" + ); - if height - >= Sapling - .activation_height(&network) - .expect("sapling activation height is set") - .0 - { - assert!( - sapling_roots.contains_key(&height), - "post-sapling block test vectors must have matching sapling root test vectors: missing {network} {height}" + if height + >= Sapling + .activation_height(&net) + .expect("activation height") + .0 + { + assert!( + sapling_anchors.contains_key(&height), + "post-sapling block test vectors must have matching sapling root test vectors: \ + missing {net} {height}" ); + } + + if height >= Nu5.activation_height(&net).expect("activation height").0 { + assert!( + orchard_anchors.contains_key(&height), + "post-nu5 block test vectors must have matching orchard root test vectors: \ + missing {net} {height}" + ); + } } } } -#[test] -fn block_commitment_mainnet() { - let _init_guard = zebra_test::init(); - - block_commitment(Mainnet); -} - -#[test] -fn block_commitment_testnet() { - let _init_guard = zebra_test::init(); - - block_commitment(Network::new_default_testnet()); -} - -/// Check that the block commitment field parses without errors. +/// Checks that the block commitment field parses without errors. /// For sapling and blossom blocks, also check the final sapling root value. /// /// TODO: add chain history test vectors? -fn block_commitment(network: Network) { - let (block_iter, sapling_roots) = network.block_sapling_roots_iter(); - - for (height, block) in block_iter { - let block = block - .zcash_deserialize_into::() - .expect("block is structurally valid"); +#[test] +fn block_commitment() { + let _init_guard = zebra_test::init(); - let commitment = block.commitment(&network).unwrap_or_else(|_| { - panic!("unexpected structurally invalid block commitment at {network} {height}") - }); + for net in Network::iter() { + let sapling_anchors = net.sapling_anchors(); - if let FinalSaplingRoot(final_sapling_root) = commitment { - let expected_final_sapling_root = *sapling_roots - .get(height) - .expect("unexpected missing final sapling root test vector"); - assert_eq!( - final_sapling_root, - crate::sapling::tree::Root::try_from(*expected_final_sapling_root).unwrap(), - "unexpected invalid final sapling root commitment at {network} {height}" - ); + for (height, block) in net.block_iter() { + if let FinalSaplingRoot(anchor) = block + .zcash_deserialize_into::() + .expect("block is structurally valid") + .commitment(&net) + .expect("unexpected structurally invalid block commitment at {net} {height}") + { + let expected_anchor = *sapling_anchors + .get(height) + .expect("unexpected missing final sapling root test vector"); + assert_eq!( + anchor, + sapling::tree::Root::try_from(*expected_anchor).unwrap(), + "unexpected invalid final sapling root commitment at {net} {height}" + ); + } } } } diff --git a/zebra-chain/src/tests/vectors.rs b/zebra-chain/src/tests/vectors.rs index ef9d00f6d99..69e4955f6a0 100644 --- a/zebra-chain/src/tests/vectors.rs +++ b/zebra-chain/src/tests/vectors.rs @@ -15,9 +15,10 @@ use zebra_test::vectors::{ BLOCK_MAINNET_1046400_BYTES, BLOCK_MAINNET_653599_BYTES, BLOCK_MAINNET_982681_BYTES, BLOCK_TESTNET_1116000_BYTES, BLOCK_TESTNET_583999_BYTES, BLOCK_TESTNET_925483_BYTES, CONTINUOUS_MAINNET_BLOCKS, CONTINUOUS_TESTNET_BLOCKS, MAINNET_BLOCKS, - MAINNET_FINAL_SAPLING_ROOTS, MAINNET_FINAL_SPROUT_ROOTS, + MAINNET_FINAL_ORCHARD_ROOTS, MAINNET_FINAL_SAPLING_ROOTS, MAINNET_FINAL_SPROUT_ROOTS, SAPLING_FINAL_ROOT_MAINNET_1046400_BYTES, SAPLING_FINAL_ROOT_TESTNET_1116000_BYTES, - TESTNET_BLOCKS, TESTNET_FINAL_SAPLING_ROOTS, TESTNET_FINAL_SPROUT_ROOTS, + TESTNET_BLOCKS, TESTNET_FINAL_ORCHARD_ROOTS, TESTNET_FINAL_SAPLING_ROOTS, + TESTNET_FINAL_SPROUT_ROOTS, }; /// Network methods for fetching blockchain vectors. @@ -118,17 +119,21 @@ impl Network { } } - /// Returns iterator over blocks and sapling roots. - pub fn block_sapling_roots_iter( - &self, - ) -> ( - std::collections::btree_map::Iter<'_, u32, &[u8]>, - std::collections::BTreeMap, - ) { + /// Returns a [`BTreeMap`] of heights and Sapling anchors for this network. + pub fn sapling_anchors(&self) -> std::collections::BTreeMap { + if self.is_mainnet() { + MAINNET_FINAL_SAPLING_ROOTS.clone() + } else { + TESTNET_FINAL_SAPLING_ROOTS.clone() + } + } + + /// Returns a [`BTreeMap`] of heights and Orchard anchors for this network. + pub fn orchard_anchors(&self) -> std::collections::BTreeMap { if self.is_mainnet() { - (MAINNET_BLOCKS.iter(), MAINNET_FINAL_SAPLING_ROOTS.clone()) + MAINNET_FINAL_ORCHARD_ROOTS.clone() } else { - (TESTNET_BLOCKS.iter(), TESTNET_FINAL_SAPLING_ROOTS.clone()) + TESTNET_FINAL_ORCHARD_ROOTS.clone() } } diff --git a/zebra-chain/src/transaction.rs b/zebra-chain/src/transaction.rs index d29eadff8cf..c04f4155b4f 100644 --- a/zebra-chain/src/transaction.rs +++ b/zebra-chain/src/transaction.rs @@ -253,9 +253,14 @@ impl Transaction { // other properties + /// Does this transaction have transparent inputs? + pub fn has_transparent_inputs(&self) -> bool { + !self.inputs().is_empty() + } + /// Does this transaction have transparent or shielded inputs? pub fn has_transparent_or_shielded_inputs(&self) -> bool { - !self.inputs().is_empty() || self.has_shielded_inputs() + self.has_transparent_inputs() || self.has_shielded_inputs() } /// Does this transaction have shielded inputs? diff --git a/zebra-chain/src/transaction/arbitrary.rs b/zebra-chain/src/transaction/arbitrary.rs index cf4aa7a9552..150801cf305 100644 --- a/zebra-chain/src/transaction/arbitrary.rs +++ b/zebra-chain/src/transaction/arbitrary.rs @@ -992,16 +992,17 @@ pub fn test_transactions( transactions_from_blocks(blocks) } -/// Generate an iterator over fake V5 transactions. -/// -/// These transactions are converted from non-V5 transactions that exist in the provided network -/// blocks. -pub fn fake_v5_transactions_for_network<'b>( - network: &'b Network, +/// Returns an iterator over V5 transactions extracted from the given blocks. +pub fn v5_transactions<'b>( blocks: impl DoubleEndedIterator + 'b, ) -> impl DoubleEndedIterator + 'b { - transactions_from_blocks(blocks) - .map(move |(height, transaction)| transaction_to_fake_v5(&transaction, network, height)) + transactions_from_blocks(blocks).filter_map(|(_, tx)| match *tx { + Transaction::V1 { .. } + | Transaction::V2 { .. } + | Transaction::V3 { .. } + | Transaction::V4 { .. } => None, + ref tx @ Transaction::V5 { .. } => Some(tx.clone()), + }) } /// Generate an iterator over ([`block::Height`], [`Arc`]). diff --git a/zebra-chain/src/transaction/tests/vectors.rs b/zebra-chain/src/transaction/tests/vectors.rs index 66d5009ed05..7daff649f3a 100644 --- a/zebra-chain/src/transaction/tests/vectors.rs +++ b/zebra-chain/src/transaction/tests/vectors.rs @@ -326,130 +326,6 @@ fn empty_v5_librustzcash_round_trip() { ); } -/// Do a round-trip test on fake v5 transactions created from v4 transactions -/// in the block test vectors. -/// -/// Covers Sapling only, Transparent only, and Sapling/Transparent v5 -/// transactions. -#[test] -fn fake_v5_round_trip() { - let _init_guard = zebra_test::init(); - for network in Network::iter() { - fake_v5_round_trip_for_network(network); - } -} - -fn fake_v5_round_trip_for_network(network: Network) { - let block_iter = network.block_iter(); - - let overwinter_activation_height = NetworkUpgrade::Overwinter - .activation_height(&network) - .expect("a valid height") - .0; - - // skip blocks that are before overwinter as they will not have a valid consensus branch id - let blocks_after_overwinter = - block_iter.skip_while(|(height, _)| **height < overwinter_activation_height); - - for (height, original_bytes) in blocks_after_overwinter { - let original_block = original_bytes - .zcash_deserialize_into::() - .expect("block is structurally valid"); - - // skip this block if it only contains v5 transactions, - // the block round-trip test covers it already - if original_block - .transactions - .iter() - .all(|trans| matches!(trans.as_ref(), &Transaction::V5 { .. })) - { - continue; - } - - let mut fake_block = original_block.clone(); - fake_block.transactions = fake_block - .transactions - .iter() - .map(AsRef::as_ref) - .map(|t| arbitrary::transaction_to_fake_v5(t, &network, Height(*height))) - .map(Into::into) - .collect(); - - // test each transaction - for (original_tx, fake_tx) in original_block - .transactions - .iter() - .zip(fake_block.transactions.iter()) - { - assert_ne!( - &original_tx, &fake_tx, - "v1-v4 transactions must change when converted to fake v5" - ); - - let fake_bytes = fake_tx - .zcash_serialize_to_vec() - .expect("vec serialization is infallible"); - - assert_ne!( - &original_bytes[..], - fake_bytes, - "v1-v4 transaction data must change when converted to fake v5" - ); - - let fake_tx2 = fake_bytes - .zcash_deserialize_into::() - .expect("tx is structurally valid"); - - assert_eq!(fake_tx.as_ref(), &fake_tx2); - - let fake_bytes2 = fake_tx2 - .zcash_serialize_to_vec() - .expect("vec serialization is infallible"); - - assert_eq!( - fake_bytes, fake_bytes2, - "data must be equal if structs are equal" - ); - } - - // test full blocks - assert_ne!( - &original_block, &fake_block, - "v1-v4 transactions must change when converted to fake v5" - ); - - let fake_bytes = fake_block - .zcash_serialize_to_vec() - .expect("vec serialization is infallible"); - - assert_ne!( - &original_bytes[..], - fake_bytes, - "v1-v4 transaction data must change when converted to fake v5" - ); - - // skip fake blocks which exceed the block size limit - if fake_bytes.len() > MAX_BLOCK_BYTES.try_into().unwrap() { - continue; - } - - let fake_block2 = fake_bytes - .zcash_deserialize_into::() - .expect("block is structurally valid"); - - assert_eq!(fake_block, fake_block2); - - let fake_bytes2 = fake_block2 - .zcash_serialize_to_vec() - .expect("vec serialization is infallible"); - - assert_eq!( - fake_bytes, fake_bytes2, - "data must be equal if structs are equal" - ); - } -} - #[test] fn invalid_orchard_nullifier() { let _init_guard = zebra_test::init(); @@ -950,65 +826,83 @@ fn zip244_sighash() -> Result<()> { #[test] fn binding_signatures() { let _init_guard = zebra_test::init(); - for network in Network::iter() { - binding_signatures_for_network(network); - } -} -fn binding_signatures_for_network(network: Network) { - let block_iter = network.block_iter(); + for net in Network::iter() { + let sapling_activation_height = NetworkUpgrade::Sapling + .activation_height(&net) + .expect("a valid height") + .0; - for (height, bytes) in block_iter { - let upgrade = NetworkUpgrade::current(&network, Height(*height)); + let mut at_least_one_v4_checked = false; + let mut at_least_one_v5_checked = false; - let block = bytes - .zcash_deserialize_into::() - .expect("a valid block"); - - for tx in block.transactions { - match &*tx { - Transaction::V1 { .. } | Transaction::V2 { .. } | Transaction::V3 { .. } => (), - Transaction::V4 { - sapling_shielded_data, - .. - } => { - if let Some(sapling_shielded_data) = sapling_shielded_data { - let shielded_sighash = - tx.sighash(upgrade.branch_id().unwrap(), HashType::ALL, &[], None); - - let bvk = redjubjub::VerificationKey::try_from( - sapling_shielded_data.binding_verification_key(), - ) - .expect("a valid redjubjub::VerificationKey"); - - bvk.verify( - shielded_sighash.as_ref(), - &sapling_shielded_data.binding_sig, - ) - .expect("must pass verification"); + for (height, block) in net + .block_iter() + .skip_while(|(height, _)| **height < sapling_activation_height) + { + let branch_id = NetworkUpgrade::current(&net, Height(*height)) + .branch_id() + .expect("consensus branch ID"); + + for tx in block + .zcash_deserialize_into::() + .expect("a valid block") + .transactions + { + match &*tx { + Transaction::V1 { .. } | Transaction::V2 { .. } | Transaction::V3 { .. } => (), + Transaction::V4 { + sapling_shielded_data, + .. + } => { + if let Some(sapling_shielded_data) = sapling_shielded_data { + let sighash = tx.sighash(branch_id, HashType::ALL, &[], None); + + let bvk = redjubjub::VerificationKey::try_from( + sapling_shielded_data.binding_verification_key(), + ) + .expect("a valid redjubjub::VerificationKey"); + + bvk.verify(sighash.as_ref(), &sapling_shielded_data.binding_sig) + .expect("must pass verification"); + + at_least_one_v4_checked = true; + } } - } - Transaction::V5 { - sapling_shielded_data, - .. - } => { - if let Some(sapling_shielded_data) = sapling_shielded_data { - let shielded_sighash = - tx.sighash(upgrade.branch_id().unwrap(), HashType::ALL, &[], None); - - let bvk = redjubjub::VerificationKey::try_from( - sapling_shielded_data.binding_verification_key(), - ) - .expect("a valid redjubjub::VerificationKey"); - - bvk.verify( - shielded_sighash.as_ref(), - &sapling_shielded_data.binding_sig, - ) - .expect("must pass verification"); + Transaction::V5 { + sapling_shielded_data, + .. + } => { + if let Some(sapling_shielded_data) = sapling_shielded_data { + // V5 txs have the outputs spent by their transparent inputs hashed into + // their SIGHASH, so we need to exclude txs with transparent inputs. + // + // References: + // + // + // + if tx.has_transparent_inputs() { + continue; + } + + let sighash = tx.sighash(branch_id, HashType::ALL, &[], None); + + let bvk = redjubjub::VerificationKey::try_from( + sapling_shielded_data.binding_verification_key(), + ) + .expect("a valid redjubjub::VerificationKey"); + + bvk.verify(sighash.as_ref(), &sapling_shielded_data.binding_sig) + .expect("verification passes"); + + at_least_one_v5_checked = true; + } } } } } + + assert!(at_least_one_v4_checked); + assert!(at_least_one_v5_checked); } } diff --git a/zebra-consensus/src/transaction/tests.rs b/zebra-consensus/src/transaction/tests.rs index ac1a42fea5c..044c8b01842 100644 --- a/zebra-consensus/src/transaction/tests.rs +++ b/zebra-consensus/src/transaction/tests.rs @@ -16,7 +16,7 @@ use tower::{buffer::Buffer, service_fn, ServiceExt}; use zebra_chain::{ amount::{Amount, NonNegative}, block::{self, Block, Height}, - orchard::AuthorizedAction, + orchard::{Action, AuthorizedAction, Flags}, parameters::{Network, NetworkUpgrade}, primitives::{ed25519, x25519, Groth16Proof}, sapling, @@ -24,8 +24,8 @@ use zebra_chain::{ sprout, transaction::{ arbitrary::{ - fake_v5_transactions_for_network, insert_fake_orchard_shielded_data, test_transactions, - transactions_from_blocks, + insert_fake_orchard_shielded_data, test_transactions, transactions_from_blocks, + v5_transactions, }, zip317, Hash, HashType, JoinSplitData, LockTime, Transaction, }, @@ -44,11 +44,11 @@ use super::{check, Request, Verifier}; mod prop; #[test] -fn v5_fake_transactions() -> Result<(), Report> { +fn v5_transactions_basic_check() -> Result<(), Report> { let _init_guard = zebra_test::init(); for network in Network::iter() { - for transaction in fake_v5_transactions_for_network(&network, network.block_iter()) { + for transaction in v5_transactions(network.block_iter()) { match check::has_inputs_and_outputs(&transaction) { Ok(()) => (), Err(TransactionError::NoInputs) | Err(TransactionError::NoOutputs) => (), @@ -64,172 +64,178 @@ fn v5_fake_transactions() -> Result<(), Report> { } #[test] -fn fake_v5_transaction_with_orchard_actions_has_inputs_and_outputs() { - // Find a transaction with no inputs or outputs to use as base - let mut transaction = fake_v5_transactions_for_network( - &Network::Mainnet, - zebra_test::vectors::MAINNET_BLOCKS.iter(), - ) - .rev() - .find(|transaction| { - transaction.inputs().is_empty() - && transaction.outputs().is_empty() - && transaction.sapling_spends_per_anchor().next().is_none() - && transaction.sapling_outputs().next().is_none() - && transaction.joinsplit_count() == 0 - }) - .expect("At least one fake V5 transaction with no inputs and no outputs"); +fn v5_transaction_with_orchard_actions_has_inputs_and_outputs() { + for net in Network::iter() { + let mut tx = v5_transactions(net.block_iter()) + .find(|transaction| { + transaction.inputs().is_empty() + && transaction.outputs().is_empty() + && transaction.sapling_spends_per_anchor().next().is_none() + && transaction.sapling_outputs().next().is_none() + && transaction.joinsplit_count() == 0 + }) + .expect("V5 tx with only Orchard shielded data"); - // Insert fake Orchard shielded data to the transaction, which has at least one action (this is - // guaranteed structurally by `orchard::ShieldedData`) - insert_fake_orchard_shielded_data(&mut transaction); + tx.orchard_shielded_data_mut().unwrap().flags = Flags::empty(); - // The check will fail if the transaction has no flags - assert_eq!( - check::has_inputs_and_outputs(&transaction), - Err(TransactionError::NoInputs) - ); + // The check will fail if the transaction has no flags + assert_eq!( + check::has_inputs_and_outputs(&tx), + Err(TransactionError::NoInputs) + ); - // If we add ENABLE_SPENDS flag it will pass the inputs check but fails with the outputs - // TODO: Avoid new calls to `insert_fake_orchard_shielded_data` for each check #2409. - let shielded_data = insert_fake_orchard_shielded_data(&mut transaction); - shielded_data.flags = zebra_chain::orchard::Flags::ENABLE_SPENDS; + // If we add ENABLE_SPENDS flag it will pass the inputs check but fails with the outputs + tx.orchard_shielded_data_mut().unwrap().flags = Flags::ENABLE_SPENDS; - assert_eq!( - check::has_inputs_and_outputs(&transaction), - Err(TransactionError::NoOutputs) - ); + assert_eq!( + check::has_inputs_and_outputs(&tx), + Err(TransactionError::NoOutputs) + ); - // If we add ENABLE_OUTPUTS flag it will pass the outputs check but fails with the inputs - let shielded_data = insert_fake_orchard_shielded_data(&mut transaction); - shielded_data.flags = zebra_chain::orchard::Flags::ENABLE_OUTPUTS; + // If we add ENABLE_OUTPUTS flag it will pass the outputs check but fails with the inputs + tx.orchard_shielded_data_mut().unwrap().flags = Flags::ENABLE_OUTPUTS; - assert_eq!( - check::has_inputs_and_outputs(&transaction), - Err(TransactionError::NoInputs) - ); + assert_eq!( + check::has_inputs_and_outputs(&tx), + Err(TransactionError::NoInputs) + ); - // Finally make it valid by adding both required flags - let shielded_data = insert_fake_orchard_shielded_data(&mut transaction); - shielded_data.flags = - zebra_chain::orchard::Flags::ENABLE_SPENDS | zebra_chain::orchard::Flags::ENABLE_OUTPUTS; + // Finally make it valid by adding both required flags + tx.orchard_shielded_data_mut().unwrap().flags = + Flags::ENABLE_SPENDS | Flags::ENABLE_OUTPUTS; - assert!(check::has_inputs_and_outputs(&transaction).is_ok()); + assert!(check::has_inputs_and_outputs(&tx).is_ok()); + } } #[test] -fn fake_v5_transaction_with_orchard_actions_has_flags() { - // Find a transaction with no inputs or outputs to use as base - let mut transaction = fake_v5_transactions_for_network( - &Network::Mainnet, - zebra_test::vectors::MAINNET_BLOCKS.iter(), - ) - .rev() - .find(|transaction| { - transaction.inputs().is_empty() - && transaction.outputs().is_empty() - && transaction.sapling_spends_per_anchor().next().is_none() - && transaction.sapling_outputs().next().is_none() - && transaction.joinsplit_count() == 0 - }) - .expect("At least one fake V5 transaction with no inputs and no outputs"); +fn v5_transaction_with_orchard_actions_has_flags() { + for net in Network::iter() { + let mut tx = v5_transactions(net.block_iter()) + .find(|transaction| { + transaction.inputs().is_empty() + && transaction.outputs().is_empty() + && transaction.sapling_spends_per_anchor().next().is_none() + && transaction.sapling_outputs().next().is_none() + && transaction.joinsplit_count() == 0 + }) + .expect("V5 tx with only Orchard actions"); - // Insert fake Orchard shielded data to the transaction, which has at least one action (this is - // guaranteed structurally by `orchard::ShieldedData`) - insert_fake_orchard_shielded_data(&mut transaction); + tx.orchard_shielded_data_mut().unwrap().flags = Flags::empty(); - // The check will fail if the transaction has no flags - assert_eq!( - check::has_enough_orchard_flags(&transaction), - Err(TransactionError::NotEnoughFlags) - ); + // The check will fail if the transaction has no flags + assert_eq!( + check::has_enough_orchard_flags(&tx), + Err(TransactionError::NotEnoughFlags) + ); + + // If we add ENABLE_SPENDS flag it will pass. + tx.orchard_shielded_data_mut().unwrap().flags = Flags::ENABLE_SPENDS; + assert!(check::has_enough_orchard_flags(&tx).is_ok()); - // If we add ENABLE_SPENDS flag it will pass. - let shielded_data = insert_fake_orchard_shielded_data(&mut transaction); - shielded_data.flags = zebra_chain::orchard::Flags::ENABLE_SPENDS; - assert!(check::has_enough_orchard_flags(&transaction).is_ok()); + tx.orchard_shielded_data_mut().unwrap().flags = Flags::empty(); - // If we add ENABLE_OUTPUTS flag instead, it will pass. - let shielded_data = insert_fake_orchard_shielded_data(&mut transaction); - shielded_data.flags = zebra_chain::orchard::Flags::ENABLE_OUTPUTS; - assert!(check::has_enough_orchard_flags(&transaction).is_ok()); + // If we add ENABLE_OUTPUTS flag instead, it will pass. + tx.orchard_shielded_data_mut().unwrap().flags = Flags::ENABLE_OUTPUTS; + assert!(check::has_enough_orchard_flags(&tx).is_ok()); - // If we add BOTH ENABLE_SPENDS and ENABLE_OUTPUTS flags it will pass. - let shielded_data = insert_fake_orchard_shielded_data(&mut transaction); - shielded_data.flags = - zebra_chain::orchard::Flags::ENABLE_SPENDS | zebra_chain::orchard::Flags::ENABLE_OUTPUTS; - assert!(check::has_enough_orchard_flags(&transaction).is_ok()); + tx.orchard_shielded_data_mut().unwrap().flags = Flags::empty(); + + // If we add BOTH ENABLE_SPENDS and ENABLE_OUTPUTS flags it will pass. + tx.orchard_shielded_data_mut().unwrap().flags = + Flags::ENABLE_SPENDS | Flags::ENABLE_OUTPUTS; + assert!(check::has_enough_orchard_flags(&tx).is_ok()); + } } #[test] -fn v5_transaction_with_no_inputs_fails_validation() { - let transaction = fake_v5_transactions_for_network( - &Network::Mainnet, - zebra_test::vectors::MAINNET_BLOCKS.iter(), - ) - .rev() - .find(|transaction| { - transaction.inputs().is_empty() - && transaction.sapling_spends_per_anchor().next().is_none() - && transaction.orchard_actions().next().is_none() - && transaction.joinsplit_count() == 0 - && (!transaction.outputs().is_empty() || transaction.sapling_outputs().next().is_some()) - }) - .expect("At least one fake v5 transaction with no inputs in the test vectors"); +fn v5_transaction_with_no_inputs_fails_verification() { + let (_, output, _) = mock_transparent_transfer( + Height(1), + true, + 0, + Amount::try_from(1).expect("valid value"), + ); - assert_eq!( - check::has_inputs_and_outputs(&transaction), - Err(TransactionError::NoInputs) + for net in Network::iter() { + let transaction = Transaction::V5 { + inputs: vec![], + outputs: vec![output.clone()], + lock_time: LockTime::Height(block::Height(0)), + expiry_height: NetworkUpgrade::Nu5.activation_height(&net).expect("height"), + sapling_shielded_data: None, + orchard_shielded_data: None, + network_upgrade: NetworkUpgrade::Nu5, + }; + + assert_eq!( + check::has_inputs_and_outputs(&transaction), + Err(TransactionError::NoInputs) + ); + } +} + +#[test] +fn v5_transaction_with_no_outputs_fails_verification() { + let (input, _, _) = mock_transparent_transfer( + Height(1), + true, + 0, + Amount::try_from(1).expect("valid value"), ); + + for net in Network::iter() { + let transaction = Transaction::V5 { + inputs: vec![input.clone()], + outputs: vec![], + lock_time: LockTime::Height(block::Height(0)), + expiry_height: NetworkUpgrade::Nu5.activation_height(&net).expect("height"), + sapling_shielded_data: None, + orchard_shielded_data: None, + network_upgrade: NetworkUpgrade::Nu5, + }; + + assert_eq!( + check::has_inputs_and_outputs(&transaction), + Err(TransactionError::NoOutputs) + ); + } } #[tokio::test] async fn mempool_request_with_missing_input_is_rejected() { - let mut state: MockService<_, _, _, _> = MockService::build().for_prop_tests(); - let verifier = Verifier::new_for_tests(&Network::Mainnet, state.clone()); + let mut state: MockService<_, _, _, _> = MockService::build().for_unit_tests(); - let (height, tx) = transactions_from_blocks(zebra_test::vectors::MAINNET_BLOCKS.iter()) - .find(|(_, tx)| !(tx.is_coinbase() || tx.inputs().is_empty())) - .expect("At least one non-coinbase transaction with transparent inputs in test vectors"); + for net in Network::iter() { + let verifier = Verifier::new_for_tests(&net, state.clone()); - let input_outpoint = match tx.inputs()[0] { - transparent::Input::PrevOut { outpoint, .. } => outpoint, - transparent::Input::Coinbase { .. } => panic!("requires a non-coinbase transaction"), - }; + let (height, tx) = transactions_from_blocks(net.block_iter()) + .find(|(_, tx)| !(tx.is_coinbase() || tx.inputs().is_empty())) + .expect( + "At least one non-coinbase transaction with transparent inputs in test vectors", + ); + + let input_outpoint = match tx.inputs()[0] { + transparent::Input::PrevOut { outpoint, .. } => outpoint, + transparent::Input::Coinbase { .. } => panic!("requires a non-coinbase transaction"), + }; - tokio::spawn(async move { // The first non-coinbase transaction with transparent inputs in our test vectors // does not use a lock time, so we don't see Request::BestChainNextMedianTimePast here - state + let state_req = state .expect_request(zebra_state::Request::UnspentBestChainUtxo(input_outpoint)) - .await - .expect("verifier should call mock state service with correct request") - .respond(zebra_state::Response::UnspentBestChainUtxo(None)); + .map(|responder| responder.respond(zebra_state::Response::UnspentBestChainUtxo(None))); - state - .expect_request_that(|req| { - matches!( - req, - zebra_state::Request::CheckBestChainTipNullifiersAndAnchors(_) - ) - }) - .await - .expect("verifier should call mock state service with correct request") - .respond(zebra_state::Response::ValidBestChainTipNullifiersAndAnchors); - }); - - let verifier_response = verifier - .oneshot(Request::Mempool { + let verifier_req = verifier.oneshot(Request::Mempool { transaction: tx.into(), height, - }) - .await; + }); - assert_eq!( - verifier_response, - Err(TransactionError::TransparentInputNotFound) - ); + let (rsp, _) = futures::join!(verifier_req, state_req); + + assert_eq!(rsp, Err(TransactionError::TransparentInputNotFound)); + } } #[tokio::test] @@ -1173,144 +1179,93 @@ async fn state_error_converted_correctly() { ); } -#[test] -fn v5_transaction_with_no_outputs_fails_validation() { - let transaction = fake_v5_transactions_for_network( - &Network::Mainnet, - zebra_test::vectors::MAINNET_BLOCKS.iter(), - ) - .rev() - .find(|transaction| { - transaction.outputs().is_empty() - && transaction.sapling_outputs().next().is_none() - && transaction.orchard_actions().next().is_none() - && transaction.joinsplit_count() == 0 - && (!transaction.inputs().is_empty() - || transaction.sapling_spends_per_anchor().next().is_some()) - }) - .expect("At least one fake v5 transaction with no outputs in the test vectors"); - - assert_eq!( - check::has_inputs_and_outputs(&transaction), - Err(TransactionError::NoOutputs) - ); -} - #[test] fn v5_coinbase_transaction_without_enable_spends_flag_passes_validation() { - let mut transaction = fake_v5_transactions_for_network( - &Network::Mainnet, - zebra_test::vectors::MAINNET_BLOCKS.iter(), - ) - .rev() - .find(|transaction| transaction.is_coinbase()) - .expect("At least one fake V5 coinbase transaction in the test vectors"); + for net in Network::iter() { + let mut tx = v5_transactions(net.block_iter()) + .find(|transaction| transaction.is_coinbase()) + .expect("V5 coinbase tx"); + + let shielded_data = insert_fake_orchard_shielded_data(&mut tx); - insert_fake_orchard_shielded_data(&mut transaction); + assert!(!shielded_data.flags.contains(Flags::ENABLE_SPENDS)); - assert!(check::coinbase_tx_no_prevout_joinsplit_spend(&transaction).is_ok()); + assert!(check::coinbase_tx_no_prevout_joinsplit_spend(&tx).is_ok()); + } } #[test] fn v5_coinbase_transaction_with_enable_spends_flag_fails_validation() { - let mut transaction = fake_v5_transactions_for_network( - &Network::Mainnet, - zebra_test::vectors::MAINNET_BLOCKS.iter(), - ) - .rev() - .find(|transaction| transaction.is_coinbase()) - .expect("At least one fake V5 coinbase transaction in the test vectors"); + for net in Network::iter() { + let mut tx = v5_transactions(net.block_iter()) + .find(|transaction| transaction.is_coinbase()) + .expect("V5 coinbase tx"); - let shielded_data = insert_fake_orchard_shielded_data(&mut transaction); + let shielded_data = insert_fake_orchard_shielded_data(&mut tx); - shielded_data.flags = zebra_chain::orchard::Flags::ENABLE_SPENDS; + assert!(!shielded_data.flags.contains(Flags::ENABLE_SPENDS)); - assert_eq!( - check::coinbase_tx_no_prevout_joinsplit_spend(&transaction), - Err(TransactionError::CoinbaseHasEnableSpendsOrchard) - ); -} - -#[tokio::test] -async fn v5_transaction_is_rejected_before_nu5_activation() { - const V5_TRANSACTION_VERSION: u32 = 5; - - let canopy = NetworkUpgrade::Canopy; - - for network in Network::iter() { - let state_service = service_fn(|_| async { unreachable!("Service should not be called") }); - let verifier = Verifier::new_for_tests(&network, state_service); - - let transaction = fake_v5_transactions_for_network(&network, network.block_iter()) - .next_back() - .expect("At least one fake V5 transaction in the test vectors"); - - let result = verifier - .oneshot(Request::Block { - transaction_hash: transaction.hash(), - transaction: Arc::new(transaction), - known_utxos: Arc::new(HashMap::new()), - known_outpoint_hashes: Arc::new(HashSet::new()), - height: canopy - .activation_height(&network) - .expect("Canopy activation height is specified"), - time: DateTime::::MAX_UTC, - }) - .await; + shielded_data.flags = Flags::ENABLE_SPENDS; assert_eq!( - result, - Err(TransactionError::UnsupportedByNetworkUpgrade( - V5_TRANSACTION_VERSION, - canopy - )) + check::coinbase_tx_no_prevout_joinsplit_spend(&tx), + Err(TransactionError::CoinbaseHasEnableSpendsOrchard) ); } } -#[test] -fn v5_transaction_is_accepted_after_nu5_activation() { - let _init_guard = zebra_test::init(); - - for network in Network::iter() { - zebra_test::MULTI_THREADED_RUNTIME.block_on(async { - let nu5_activation_height = NetworkUpgrade::Nu5 - .activation_height(&network) - .expect("NU5 activation height is specified"); - - let state = service_fn(|_| async { unreachable!("Service should not be called") }); - - let mut tx = fake_v5_transactions_for_network(&network, network.block_iter()) - .next_back() - .expect("At least one fake V5 transaction in the test vectors"); +#[tokio::test] +async fn v5_transaction_is_rejected_before_nu5_activation() { + let sapling = NetworkUpgrade::Sapling; - if tx.expiry_height().expect("V5 must have expiry_height") < nu5_activation_height { - *tx.expiry_height_mut() = nu5_activation_height; - tx.update_network_upgrade(NetworkUpgrade::Nu5) - .expect("updating the network upgrade for a V5 tx should succeed"); - } + for net in Network::iter() { + let verifier = Verifier::new_for_tests( + &net, + service_fn(|_| async { unreachable!("Service should not be called") }), + ); - let expected_hash = tx.unmined_id(); - let expiry_height = tx.expiry_height().expect("V5 must have expiry_height"); + let tx = v5_transactions(net.block_iter()).next().expect("V5 tx"); - let verification_result = Verifier::new_for_tests(&network, state) + assert_eq!( + verifier .oneshot(Request::Block { transaction_hash: tx.hash(), transaction: Arc::new(tx), known_utxos: Arc::new(HashMap::new()), known_outpoint_hashes: Arc::new(HashSet::new()), - height: expiry_height, + height: sapling.activation_height(&net).expect("height"), time: DateTime::::MAX_UTC, }) - .await; + .await, + Err(TransactionError::UnsupportedByNetworkUpgrade(5, sapling)) + ); + } +} - assert_eq!( - verification_result - .expect("successful verification") - .tx_id(), - expected_hash - ); - }); +#[tokio::test] +async fn v5_transaction_is_accepted_after_nu5_activation() { + let _init_guard = zebra_test::init(); + + for net in Network::iter() { + let state = service_fn(|_| async { unreachable!("Service should not be called") }); + let tx = v5_transactions(net.block_iter()).next().expect("V5 tx"); + let tx_height = tx.expiry_height().expect("V5 must have expiry_height"); + let expected = tx.unmined_id(); + + assert!(tx_height >= NetworkUpgrade::Nu5.activation_height(&net).expect("height")); + + let verif_res = Verifier::new_for_tests(&net, state) + .oneshot(Request::Block { + transaction_hash: tx.hash(), + transaction: Arc::new(tx), + known_utxos: Arc::new(HashMap::new()), + known_outpoint_hashes: Arc::new(HashSet::new()), + height: tx_height, + time: DateTime::::MAX_UTC, + }) + .await; + + assert_eq!(verif_res.expect("success").tx_id(), expected); } } @@ -2731,164 +2686,138 @@ fn v4_with_sapling_outputs_and_no_spends() { } /// Test if a V5 transaction with Sapling spends is accepted by the verifier. -#[test] -// TODO: add NU5 mainnet test vectors with Sapling spends, then remove should_panic -#[should_panic] -fn v5_with_sapling_spends() { +#[tokio::test] +async fn v5_with_sapling_spends() { let _init_guard = zebra_test::init(); - zebra_test::MULTI_THREADED_RUNTIME.block_on(async { - let network = Network::Mainnet; - let nu5_activation = NetworkUpgrade::Nu5.activation_height(&network); - - let transaction = - fake_v5_transactions_for_network(&network, zebra_test::vectors::MAINNET_BLOCKS.iter()) - .rev() - .filter(|transaction| { - !transaction.is_coinbase() - && transaction.inputs().is_empty() - && transaction.expiry_height() >= nu5_activation - }) - .find(|transaction| transaction.sapling_spends_per_anchor().next().is_some()) - .expect("No transaction found with Sapling spends"); - let expected_hash = transaction.unmined_id(); - let height = transaction - .expiry_height() - .expect("Transaction is missing expiry height"); + for net in Network::iter() { + let nu5_activation = NetworkUpgrade::Nu5.activation_height(&net); - // Initialize the verifier - let state_service = - service_fn(|_| async { unreachable!("State service should not be called") }); - let verifier = Verifier::new_for_tests(&network, state_service); - - // Test the transaction verifier - let result = verifier - .oneshot(Request::Block { - transaction_hash: transaction.hash(), - transaction: Arc::new(transaction), - known_utxos: Arc::new(HashMap::new()), - known_outpoint_hashes: Arc::new(HashSet::new()), - height, - time: DateTime::::MAX_UTC, + let tx = v5_transactions(net.block_iter()) + .filter(|tx| { + !tx.is_coinbase() && tx.inputs().is_empty() && tx.expiry_height() >= nu5_activation }) - .await; + .find(|tx| tx.sapling_spends_per_anchor().next().is_some()) + .expect("V5 tx with Sapling spends"); + + let expected_hash = tx.unmined_id(); + let height = tx.expiry_height().expect("expiry height"); + + let verifier = Verifier::new_for_tests( + &net, + service_fn(|_| async { unreachable!("State service should not be called") }), + ); assert_eq!( - result.expect("unexpected error response").tx_id(), + verifier + .oneshot(Request::Block { + transaction_hash: tx.hash(), + transaction: Arc::new(tx), + known_utxos: Arc::new(HashMap::new()), + known_outpoint_hashes: Arc::new(HashSet::new()), + height, + time: DateTime::::MAX_UTC, + }) + .await + .expect("unexpected error response") + .tx_id(), expected_hash ); - }); + } } /// Test if a V5 transaction with a duplicate Sapling spend is rejected by the verifier. -#[test] -fn v5_with_duplicate_sapling_spends() { +#[tokio::test] +async fn v5_with_duplicate_sapling_spends() { let _init_guard = zebra_test::init(); - zebra_test::MULTI_THREADED_RUNTIME.block_on(async { - let network = Network::Mainnet; - let mut transaction = - fake_v5_transactions_for_network(&network, zebra_test::vectors::MAINNET_BLOCKS.iter()) - .rev() - .filter(|transaction| !transaction.is_coinbase() && transaction.inputs().is_empty()) - .find(|transaction| transaction.sapling_spends_per_anchor().next().is_some()) - .expect("No transaction found with Sapling spends"); + for net in Network::iter() { + let mut tx = v5_transactions(net.block_iter()) + .filter(|tx| !tx.is_coinbase() && tx.inputs().is_empty()) + .find(|tx| tx.sapling_spends_per_anchor().next().is_some()) + .expect("V5 tx with Sapling spends"); - let height = transaction - .expiry_height() - .expect("Transaction is missing expiry height"); + let height = tx.expiry_height().expect("expiry height"); // Duplicate one of the spends - let duplicate_nullifier = duplicate_sapling_spend(&mut transaction); + let duplicate_nullifier = duplicate_sapling_spend(&mut tx); - // Initialize the verifier - let state_service = - service_fn(|_| async { unreachable!("State service should not be called") }); - let verifier = Verifier::new_for_tests(&network, state_service); - - // Test the transaction verifier - let result = verifier - .oneshot(Request::Block { - transaction_hash: transaction.hash(), - transaction: Arc::new(transaction), - known_utxos: Arc::new(HashMap::new()), - known_outpoint_hashes: Arc::new(HashSet::new()), - height, - time: DateTime::::MAX_UTC, - }) - .await; + let verifier = Verifier::new_for_tests( + &net, + service_fn(|_| async { unreachable!("State service should not be called") }), + ); assert_eq!( - result, + verifier + .oneshot(Request::Block { + transaction_hash: tx.hash(), + transaction: Arc::new(tx), + known_utxos: Arc::new(HashMap::new()), + known_outpoint_hashes: Arc::new(HashSet::new()), + height, + time: DateTime::::MAX_UTC, + }) + .await, Err(TransactionError::DuplicateSaplingNullifier( duplicate_nullifier )) ); - }); + } } /// Test if a V5 transaction with a duplicate Orchard action is rejected by the verifier. -#[test] -fn v5_with_duplicate_orchard_action() { +#[tokio::test] +async fn v5_with_duplicate_orchard_action() { let _init_guard = zebra_test::init(); - zebra_test::MULTI_THREADED_RUNTIME.block_on(async { - let network = Network::Mainnet; - // Find a transaction with no inputs or outputs to use as base - let mut transaction = - fake_v5_transactions_for_network(&network, zebra_test::vectors::MAINNET_BLOCKS.iter()) - .rev() - .find(|transaction| { - transaction.inputs().is_empty() - && transaction.outputs().is_empty() - && transaction.sapling_spends_per_anchor().next().is_none() - && transaction.sapling_outputs().next().is_none() - && transaction.joinsplit_count() == 0 - }) - .expect("At least one fake V5 transaction with no inputs and no outputs"); + for net in Network::iter() { + let mut tx = v5_transactions(net.block_iter()) + .rev() + .find(|transaction| { + transaction.inputs().is_empty() + && transaction.outputs().is_empty() + && transaction.sapling_spends_per_anchor().next().is_none() + && transaction.sapling_outputs().next().is_none() + && transaction.joinsplit_count() == 0 + }) + .expect("V5 tx with only Orchard actions"); - let height = transaction - .expiry_height() - .expect("Transaction is missing expiry height"); + let height = tx.expiry_height().expect("expiry height"); - // Insert fake Orchard shielded data to the transaction, which has at least one action (this is - // guaranteed structurally by `orchard::ShieldedData`) - let shielded_data = insert_fake_orchard_shielded_data(&mut transaction); + let orchard_shielded_data = tx + .orchard_shielded_data_mut() + .expect("tx without transparent, Sprout, or Sapling outputs must have Orchard actions"); // Enable spends - shielded_data.flags = zebra_chain::orchard::Flags::ENABLE_SPENDS - | zebra_chain::orchard::Flags::ENABLE_OUTPUTS; + orchard_shielded_data.flags = Flags::ENABLE_SPENDS | Flags::ENABLE_OUTPUTS; - // Duplicate the first action - let duplicate_action = shielded_data.actions.first().clone(); + let duplicate_action = orchard_shielded_data.actions.first().clone(); let duplicate_nullifier = duplicate_action.action.nullifier; - shielded_data.actions.push(duplicate_action); - - // Initialize the verifier - let state_service = - service_fn(|_| async { unreachable!("State service should not be called") }); - let verifier = Verifier::new_for_tests(&network, state_service); + // Duplicate the first action + orchard_shielded_data.actions.push(duplicate_action); - // Test the transaction verifier - let result = verifier - .oneshot(Request::Block { - transaction_hash: transaction.hash(), - transaction: Arc::new(transaction), - known_utxos: Arc::new(HashMap::new()), - known_outpoint_hashes: Arc::new(HashSet::new()), - height, - time: DateTime::::MAX_UTC, - }) - .await; + let verifier = Verifier::new_for_tests( + &net, + service_fn(|_| async { unreachable!("State service should not be called") }), + ); assert_eq!( - result, + verifier + .oneshot(Request::Block { + transaction_hash: tx.hash(), + transaction: Arc::new(tx), + known_utxos: Arc::new(HashMap::new()), + known_outpoint_hashes: Arc::new(HashSet::new()), + height, + time: DateTime::::MAX_UTC, + }) + .await, Err(TransactionError::DuplicateOrchardNullifier( duplicate_nullifier )) ); - }); + } } /// Checks that the tx verifier handles consensus branch ids in V5 txs correctly. @@ -3430,9 +3359,9 @@ fn coinbase_outputs_are_decryptable_for_historical_blocks_for_network( /// Given an Orchard action as a base, fill fields related to note encryption /// from the given test vector and returned the modified action. fn fill_action_with_note_encryption_test_vector( - action: &zebra_chain::orchard::Action, + action: &Action, v: &zebra_test::vectors::TestVector, -) -> zebra_chain::orchard::Action { +) -> Action { let mut action = action.clone(); action.cv = v.cv_net.try_into().expect("test vector must be valid"); action.cm_x = pallas::Base::from_repr(v.cmx).unwrap(); @@ -3446,87 +3375,65 @@ fn fill_action_with_note_encryption_test_vector( action } -/// Test if shielded coinbase outputs are decryptable with an all-zero outgoing -/// viewing key. +/// Test if shielded coinbase outputs are decryptable with an all-zero outgoing viewing key. #[test] fn coinbase_outputs_are_decryptable_for_fake_v5_blocks() { - let network = Network::new_default_testnet(); - for v in zebra_test::vectors::ORCHARD_NOTE_ENCRYPTION_ZERO_VECTOR.iter() { - // Find a transaction with no inputs or outputs to use as base - let mut transaction = - fake_v5_transactions_for_network(&network, zebra_test::vectors::TESTNET_BLOCKS.iter()) - .rev() - .find(|transaction| { - transaction.inputs().is_empty() - && transaction.outputs().is_empty() - && transaction.sapling_spends_per_anchor().next().is_none() - && transaction.sapling_outputs().next().is_none() - && transaction.joinsplit_count() == 0 - }) - .expect("At least one fake V5 transaction with no inputs and no outputs"); - - let shielded_data = insert_fake_orchard_shielded_data(&mut transaction); - shielded_data.flags = zebra_chain::orchard::Flags::ENABLE_SPENDS - | zebra_chain::orchard::Flags::ENABLE_OUTPUTS; - - let action = - fill_action_with_note_encryption_test_vector(&shielded_data.actions[0].action, v); - let sig = shielded_data.actions[0].spend_auth_sig; - shielded_data.actions = vec![AuthorizedAction::from_parts(action, sig)] - .try_into() - .unwrap(); + for net in Network::iter() { + let mut transaction = v5_transactions(net.block_iter()) + .find(|tx| tx.is_coinbase()) + .expect("coinbase V5 tx"); + + let shielded_data = insert_fake_orchard_shielded_data(&mut transaction); + shielded_data.flags = Flags::ENABLE_OUTPUTS; + + let action = + fill_action_with_note_encryption_test_vector(&shielded_data.actions[0].action, v); + let sig = shielded_data.actions[0].spend_auth_sig; + shielded_data.actions = vec![AuthorizedAction::from_parts(action, sig)] + .try_into() + .unwrap(); - assert_eq!( - check::coinbase_outputs_are_decryptable( - &transaction, - &network, - NetworkUpgrade::Nu5.activation_height(&network).unwrap(), - ), - Ok(()) - ); + assert_eq!( + check::coinbase_outputs_are_decryptable( + &transaction, + &net, + NetworkUpgrade::Nu5.activation_height(&net).unwrap(), + ), + Ok(()) + ); + } } } -/// Test if random shielded outputs are NOT decryptable with an all-zero outgoing -/// viewing key. +/// Test if random shielded outputs are NOT decryptable with an all-zero outgoing viewing key. #[test] fn shielded_outputs_are_not_decryptable_for_fake_v5_blocks() { - let network = Network::new_default_testnet(); - for v in zebra_test::vectors::ORCHARD_NOTE_ENCRYPTION_VECTOR.iter() { - // Find a transaction with no inputs or outputs to use as base - let mut transaction = - fake_v5_transactions_for_network(&network, zebra_test::vectors::TESTNET_BLOCKS.iter()) - .rev() - .find(|transaction| { - transaction.inputs().is_empty() - && transaction.outputs().is_empty() - && transaction.sapling_spends_per_anchor().next().is_none() - && transaction.sapling_outputs().next().is_none() - && transaction.joinsplit_count() == 0 - }) - .expect("At least one fake V5 transaction with no inputs and no outputs"); - - let shielded_data = insert_fake_orchard_shielded_data(&mut transaction); - shielded_data.flags = zebra_chain::orchard::Flags::ENABLE_SPENDS - | zebra_chain::orchard::Flags::ENABLE_OUTPUTS; - - let action = - fill_action_with_note_encryption_test_vector(&shielded_data.actions[0].action, v); - let sig = shielded_data.actions[0].spend_auth_sig; - shielded_data.actions = vec![AuthorizedAction::from_parts(action, sig)] - .try_into() - .unwrap(); + for net in Network::iter() { + let mut tx = v5_transactions(net.block_iter()) + .find(|tx| tx.is_coinbase()) + .expect("V5 coinbase tx"); + + let shielded_data = insert_fake_orchard_shielded_data(&mut tx); + shielded_data.flags = Flags::ENABLE_OUTPUTS; + + let action = + fill_action_with_note_encryption_test_vector(&shielded_data.actions[0].action, v); + let sig = shielded_data.actions[0].spend_auth_sig; + shielded_data.actions = vec![AuthorizedAction::from_parts(action, sig)] + .try_into() + .unwrap(); - assert_eq!( - check::coinbase_outputs_are_decryptable( - &transaction, - &network, - NetworkUpgrade::Nu5.activation_height(&network).unwrap(), - ), - Err(TransactionError::CoinbaseOutputsNotDecryptable) - ); + assert_eq!( + check::coinbase_outputs_are_decryptable( + &tx, + &net, + NetworkUpgrade::Nu5.activation_height(&net).unwrap(), + ), + Err(TransactionError::CoinbaseOutputsNotDecryptable) + ); + } } } diff --git a/zebra-test/src/vectors/block-main-1-687-106.txt b/zebra-test/src/vectors/block-main-1-687-106.txt new file mode 100644 index 00000000000..c8c3f5443aa --- /dev/null +++ b/zebra-test/src/vectors/block-main-1-687-106.txt @@ -0,0 +1 @@ +04000000f1a919374d4ea8c27be01de057fda89b504a680b1212a44a02a5b60000000000260fb56800153f20113cdb8fc3becbe547712adaf5910e4a1199ea3f3216eb6c92d9dfc92a527212e5bbec9f472697beae80b084cf6077b21a913cb8a3e3341bdd559662e4ae011c5360d63c000000000000000000000000000028000000000000000000000390c5fd40050024db4ac7920ff1c55b1017b3e6bd9c328e5bf9792efd52ab3410d546bcf948d958f04602a2097ba4d20a2a64da9d186f574a53b3de4b63ca2d556aceadbb1442b8f5b6a8cbef6549583ef46bf46288b71633f505df14cfe69b058554e6c075a555ff55656a7f1fbb4c19f2a968d6ca25f16d6537b45ebe6e003a788ec10af9341a68df4575d18f896d0c53edff47435e821e1a0b3442686a92bdbbf203282149da7d0f78edad5c00f7a2f9f072b4e7f47433101f7e04f4e4812c7add312b4fd59de93a777fe48829166d798b4a341d42963ae16353c3212a5d1a63c433aca4683e5ae93a91be46f09e4d2a63fd634e87a64373e91d75ccb85cd4a2076aa8bb905853bac539992ec67535467571db281b16528be572de14bf77d3f17f1194275637beb76e7c0cadbd1069931c1aaf07d243dc1dc0fe83e938047a10be72b416c9eb51c605720f11f21c5983385174bf01295c3cfe9b23db0c47b126ab585d9321131bf2c60fccc6542744dca73f38e3ca495dc0f16f9998168a128ebfcdff8b2c753b91e2eed3644ea6c5fd3e49b93aa7c2567c103add2645168ce94851e28c0af7971d09e60b1f7b5967a4dec8948090adca0d5ac913191012c721d1410e900882f9e81470e31dc7227939feff18dd4713a94bcc958f9553e074a730bd50d833a55475975542c9e1e21bf7f289439871c8fa83d298e332083dde879118d607998ce6ca03f163fdb9e11141f61860f326d406557e6ab4c938c9d680b6a3b4793b741504d580648c9582fc9d325a85e072f686721888e629af99e27fd5a65b4e02b5a9795564722eefd67f5a1acb39a56a549f73feb9856016c0c5a6ad46fd0c4128c9d560d4113821795fd6788fc23b2ead0b5792f82b86ae72425154159ee2b49b61e98ef611c537bc7e61a9f3727e6e061b8c1af85bb6755d6e4599f817e5023668da6570e953c84c12c0aeb36d68cf0e14d34409b72a7f32a8ec6db73d527a72725e6e2f11d81f7e0fb8656c6e57117b539de2f8b75fea7dca719df98a20b36ca759d1c7a793735239f23105b88f48d0951d032bf89ed224851de6868386e0a60ef213895ab62a2f558354ed349233ab573376fac9494646325598bf0e620d57fdcd7afa7d051384be4f2092229797dfcd320194d5712a2c3973ff086b96699cb2c53a5c7b7604d70f7dcccd7817921454ecefa9d315e026f6826e30fc8732b562e1139c712a047af7fcbed6d1b817a60ca4e3efd6294fff8b27628ed55d2f20e25cebc57023ca74099f2a00f5b82db5ffb1b3ada24ef6bc19a50ddbf14b3a47f141dbf9d5ae98e174d9fc53be5952376af5f5d31454db81bb846f22ce57f5464ef6e53435ec923553b86ee9f422f3aae3f792a734135abd3038d536357f64c2b9882755183d6dcbc96a35b174fc0536f6bead9c0d53a7ef4656226f40ea776b3cbf330a7dfca77f03ce0fcfa221befa35ebb56ef77f81f009ed9a744b63ac7da6437111ee2578e2d8e73fee451ec0b4d761eff721f76c57e3f76623573f4f1abaaa14340b0c0193df43b42e044dbdb044eaaece9a42854069950e625706d9eaa9d5bf29e439e9e2c1b733421eb2a0fa8d28b751a73f1536716cad1181b81d9a7728b62510ddb540a5bc83229de6bad700f965c87b720944394cce9998b17621e472d365c4c5c32f585141185ed993d0e6676dcd7471f282e4f345e0655413681d537d7a91933941e56848a54271c80b9c967cfb3f3370c70c47e7156df4d143d172245c7d5f3a7745e40c1f43c182924b39f7bed1505220d0624673fb86164bef0ba85a1c3ebb3fa29708837cbc31e6b0147fa61143ca496a06883bf62db22d1bc4a79d7dc98c9bd81bea111d1b90e4db784f22b47fbaeaedd54ef85b6605050000800a27a726b4d0d6c20000000042be1900010000000000000000000000000000000000000000000000000000000000000000ffffffff050342be1900ffffffff0420c2e60e000000001976a91447c0a56cdaa37498b91cbfa3b6bc6cd86159e6ac88ac38c94d010000000017a91469a9f95a98fe581b6eb52841ef4806dc4402eb908740787d010000000017a914931fec54c1fea86e574462cc32013f5400b8912987286bee000000000017a914d45cb1adffb5215a42720532a076f02c7c778c9087000000050000800a27a726b4d0d6c20000000068be1900000001a05c5685b75252c400119ebc80878f8003e900b6a6ca9febdcd74d97a129e58ff6c66e590b881722930ff701bcd5381b7c82ea343da022617b6aea98fe9cb8c97eced1a714d6e8a649160b15ec659fc001e17ec405224389505926a0b4785a3401814cc194f3fc5eed11f6b11a3b5eee6675273537413c17a9da5411b832177e91121bc9572146c399626617403b55e502a941ab7fbff6708f8a417f24b98ddc582526d9e36bddef4234a4a70c24874cab827faf76d8b628065ee299dbdf728b56d152357b271efe7633420eb52d3dc381f04ff0924a52a83bdd0cb21ae393fac38b44aa95483da277f78054b58f7739f3fd4d52b7a2b980702415438d6b926d73e4a5205fcffb1d9c94e49638d796ee4fc164f49656fbb03735266dc9396ad2296a40850f91a0d0e2ef331ee7b73ceded08d7a183997f3c9de5d6fd0e7d2bcb5f0286128955048886b22e48e45e7d1a36e521d10eeb0b2e3620c99508213e2e69458ad1b59c71b399022092fe074ccbbb44601cc3ed3b029828f7c387e96dbfe02fe55a91db9d4ba22004e7921dba6dc202f559882ee8e0796e9fd28415e6301840fba7afda13ed92cd533258ef70170b3911f0bb67f03ddceca9d1481d28ddd3e249835052408499a6e84fb72ca33c95fcfd7bfb184ba4479bcba65c0f606885c546df02f373d748d2c3da3f7b8467674ddfa1ab6cae1c70c968983511669ad23e2c79d63bae301719831032e14333f2e50de3548c5a97227af4463fe89c8d26cf5b075fbc20677a67b629ce40466452071800a553e35a035e9f33f0a35736af85b617a95b828df0cc700cc9ada04cbe2c835f7838c17b87c7704600ac9e4469520395e64d0c3a1b3adae419c43671aef6e87b45da4e1993d620507f1ed7df0acfae3a0dae723ab8121ea71fbe90cf19f85685732538f89b039e9bf70684486b3d5c75777a2bf03d5f8c5afc0cbae11253a119e894bd7712e68c6489c9479163d3edabce29fba0d64350e7f95a688e4d138365731baf8abbe12fddd29157ecff161a43fd54237055bef0a734c5a05e95ec8e16aa2a47d485add9f1652f9b23aa11417184d10b5430e0a212cfbc86e76ec537f361a361fbd80286d6dc529528a6b29f52798cdf0397eaf892f6b7e2280c520521e3c92d3c7cd89d26965839dd7dc3ee0bcbbbd8e61afcad546e18537091ae98fca9e8030000000000009f600fe22c07fd60d49559791edcf74ecef542f800ab0adcfeda49684655044c92b7b64d4d49babad06049c4ea3f80fab97a0dabd0efbbddbf0f0da587f1a283f08751b05e84f9d94072052e3ef5daa38be31854f23a7addb15dbcee78c726b633d11fcf282df523fa60109e9b331488017222a74f594c0da57308a3d111776e0aacb93d56966cdc9ea880dde72f8b79044aa39effc78e4d2c096ffa32731c9e38d2f1b0674e653d6a4a3cf5e5a2b1cb9621ac41231cadb9896658b0e4c4f3e1806bd6cae2925406c59e15b62aa6eb3472114eecf6603134864d28d0c2c0759e30ec5be5f7cf2b7926e86a7d4e8a613caf063119e9be48064f64356a8a36a1ca6a1577b0120c536a68f70f56a32935e8868418eedc046fcf8581ed3c182e2c04a982d1cf6d14f5f3c23ad71be8d39a9c424171405cd96c9ca5a85d04b7db74ac552ec1e2f902cc0d272d05d47aaa203f966723939d77eb8600db51c1c8373e70825bd88184bf16f2cf6a9ac98790aed138882f0eb69d3d5d4e6bf4bf9b865bfc0fc5e7b54d184fe88c843884cc813773f00efd39d79067dbf8d67859c3afe42bdc041cf567a25d35527dbd7cfd4253fb90e4e90c570202824eb19faa1a1bc65b45ec99518d1ea5515e8e1f9139443ec4df871038000279342e980e4b354270c70e3b78749696f50aea162c0e52df94f6eb7b616a46131f9300dd00c251ee9b8adbf98f540c32f5c19a3c929453db7c5117eeb2fda9291cdd5314b2d6ae9f880000050000800a27a726b4d0d6c20000000068be19000000011e547c4fb447fa288beea9f9380e98699b1e5762ae9a7dde092eb2db67df01ea646049eb21b596db882e7758452953b0200473f0dedba353ff2f8e7105dddd839eab06db43d6348f0f48900a391bddea17f3e7664e7c532c6a6600ea21e34032019531dcbebccfd818c7c4273f38f09a9b25cbb6b0b56781c0d9bd7044cdad2f4febef39a9df875e1f7ee6fb12c4e5d186a4a4a642f76fd7497cc7cd9c4691872373853d405cbcdc1fa3364b9653c578cc2ad6c305351b1dba8949b9af16f68ef122fc27195386479c247f6673d4fabd87c943ea0f9d4f878d287af44a36758bf174e4572e11643f2b6afb64f918ea98d303e0d81b35cdc19327d476a6e4b0ddfa392df0edb83dd97d25eb2e0521d0ef62370fece4ab49ad796c95437ce830644272a8c59a18fc9a1a2f9dd7c878ac38aeff427fb5d8ee0053fd78ec5ec52c102caebf1b4c99785e2885d4c1fbef927a5bf6d4fef2eda6379a9d8757014e70583f6bfd94f82fcba77c4d36946fe58d8d011dd4e37f71d36fd4da9accced08abc61147f9cfa7d837c0889df43bae9151f346bd9120e59b6fcf3d2ea3940a5774abdb340a0dad4bcbe6e8f625e1b0b2f210e9f29994bbcaf57318bd03c9992cc7aca9307113c1eac75416d4415ddf01287c4536615f706ebb0058fd0c8a1164381ae14970379b4dca5ab1ce981a8c05d140926e45eb7da02324743c91a9b96754745db42e0864edfbeb02e3a91c7d208d6747e930428b216429cfd2578c61e08ecf8eb7603d486575a237960d016f87acee0aeb25dddf7873cfc465305980df797fe192da22ec371dde3c3e6bdbaebf1193afd294232b308d2c3602aa9b19b14e17afddbf9ba60427f43270fd57044a88a8807266f2f01c86df79761b5bc66790d4e7ebbfbdb882433b1ff4a85d0e9a1cdef6f8448f187f835b87b343b53c405479c444931a13a7c291dd5f12e818a5d36558d8970707dda26a23e09aad21e38a6a973464f201657bf8f4018549f2e9de73ba1159a4691d3409ac59c16bf083fcd506a85b913ade6f2ee24ad8c4c0de1c0ab175b4ec554562b3c11af90392142ec8d501c9eda386753bf2ebd3c7384e1355aade8507bea0b3c42366e073416dce0c24b6574ff30d0f05bf60403953cd2ab5f7894fab23bd0b0ca325a3fb7043f4a2ce82f0486e67cc4087669ff818baabc906d3d4786e8030000000000009f600fe22c07fd60d49559791edcf74ecef542f800ab0adcfeda49684655044c891f575953d48bd334567cb6019457d6ceb326030261d17cb961b070c385bf282e6893b33c19499888a7831356ce6d319424d36ea409cb6fe53fac5961779d4142cdd466fc94f6a7ae16859ca99575692de0490ae6b48fdd1cc0d5ca7f17f5fc02abcf9fa1f56e45eea0a2b721e79eb721142220cf7f634ba7d56844b2670dcb225eb8cf0848bce60c86fd3466db3044903ea20904d37c55e56de073b9c30413c6dde674cd102e6b765b5f511e462312b81414ab39a73f0469277212345691a30a3cd0dacd002152ff966a270b0b8833c1ecbc4fb8d5b8c295c020bab5abe594b1ba263ba86984bab5841fa96016c01938cef0cdf87b329fd51d8b31f753090aa882402813cf5ffbe6633fbb0d750e6bc73086cd11c71fadde8630940517d9126b645415c6df4f9d4049b829de95eff7abce9af7796a64564594ab8d5cd617c04fd98cb82fdd718a45e764a206c29cb485f3baf91f2ca1338923ff81f9054aea066bbbb5320dbd6a0e28d9818c00da61346826ba324cfa9f23b9fcf722705b7befb0a1c796fa3e91b56043ac9eaf0bdfa103fe143aa36fcf38a56ddb9822582bcd95789314fd560504fc8e984619319d02e8a0cacb0b13a949bb892955737be35bfb9792175ce3c82fd07890d90a3db0c591cfb11517f45133e173a2a181a3da851799e7d1523512938940f9e9e608c09fcca7c959ea96bbc1478b53b326730e00050000800a27a726b4d0d6c20000000068be1900000001cf21ab54b733d4b33992b08c667cc5bf54e90d71d67e60d966d4b28d82935961faf0cccdd426290469d0ae8a7162b7c5b36ea7401e8939d6ab83b2116766f90032f9afd9611ff0a7578b961f7c6015c14617e444c546f5e099164e7d7836171001e2036e93fb22c0f06089e3ea6874a95444026e22f5216913f9d3dc708b50ff2ce4cd07cc1d80eff3076e71b21f64506899d0c2908f5b1529f6377dfeb0285d64856b87ab4503a4ba4f5c0033b87e92e08b53d5970deaa8097411c2fb880d65a1885c58f4f8983c49302219404c1b29c302e091256328c496cf9fe418059ec0d9149ed9f8dafc80631bbee6af90511c0a76d4728a43a213bd7ec411f4d8df0ac135df46423966881d5aff8ba8cb3e81cfb5c9b50203195910c7ba60ed6e220cdbec6a659c37cbaab638e87bb87c9efaeaadc366c5b52d8642ef74d2d28dae34819b1d2412dc955b067c713a22a88871c524cb2797c9524cd515f520b2554d791649ea426d69b85009a7951b9c5c946c59b8cb8d56aabbe17ae2aa7bbd5689a730f8c9c50b8579c04adf17a0815a2e5085e309a9418491a0e36aba8f2b90692d8d7780e664953def242f367ca42fa188d524791ad2dd4d83f41753717fe953e964500a2c43294fd91f2c4a2a127d9684cf4a287afadde7cd69d4914c3e6d89d7bf71a70953b96b79b5e0b5e62b636479f0ccc65007df7ae5ddf2063ca357b9cadba8dd3539357699591e6cdca76b29472ae3acd21f417b48cefd2e3dd92ece26b09f9d8c2755b4767ed36b0c5d72238b64db6cb7d4b8623810f34f1377059bdebaa4ed5a62e27ee2bcc3270b60f46abf8078d4918638d09b5fcc40adb46f8a82301db35c3d032f6251f7c125fe662f8ee8166b072e15458fef7b3adffac20a5fa5f448e943f0259c59c083bb6945077ea85d471bf47526bb6ab6f57cf7670627a10daed111611380eea2f369de009aabcccd37af5af5d191873090873a86d04a57892687f946da765ff9ef89ffbe7b483e49114684126866692448b352606d7be23f293d2d3dc329930e201ec51bf0e870f02dfd49d238ceb0095ffe60dc8831647a9aca6f79b8822aa62b4f57364cbd3a00a8f2b277624aad55849434f286242c510d13fc1b384a14823422ca45e093d5cd67f3e7e3f3d079d3eb5570f08f4998ed6d0649f565cf93e842a2550c7be69f391df1f5e8030000000000009f600fe22c07fd60d49559791edcf74ecef542f800ab0adcfeda49684655044ca8f134350eba5e33e9faff89d5717c21b7e97a6680b45f9ee0fa093f4adafa3ad957c5b0f9e71c7ee5c20147dc70d6a99580527109f44a0e429f49083002d228a7fe343e9d43dceb592afce2e684d1aec34b007fa19001b48d57a502dbe139dd1126a65325b878841b6fdb741945ea3c966d534f622553453f63f6ea7123efcd8ae7dcb6a2d64f4333b61435fbb7ecaf864f280dc8ca2e1df6daada638653d20da8a88bc8a89c566cba74a714d05232114d9ba357fbcb630b6e49de2f9ae63d002679a593a1f4704d9ba3b7e019ce720877ac7b53cb01a63f17f35f2eca3cacf79115465a9a71439aba805927fde2c8dbd2c43d142ad4582b3b7d8fd6eafa50d8c86daacd720f5dda68c0b39ede9b6ee61c72cd6d5f3bba12c560d0af9ed01b777dbde30ca76879edd117a2332cf152b93c4aafb6707a1f43cabc5463b10e66d0f83438c77a204b478d960839bb02ad9718129c3be621bb59e703b755c3aa3b40bf151641e1ef672ae0ee5476f2249d49e95dcf1875cf1d5e1cba25239421aef645322433c40158df6aaaa7fb392484f803f87d0825102e5cf410488182143442ca2df7d3fb566ffb353cb12facd07e9fc16c3093a960d540cd99f18bae1e678a45c2b3eaf0acc305557051c868bed170298d196b9c436a261e5d550ec18ea4f0aa87e9b526924c1f2f3d200edd65d4544a549285f94916981f2aede2adbca0b000400008085202f8900000000000054be1900e80300000000000003d39bfc6d4889111a8aeba6f013f3be13f02e78751d0e820a3121078c60de06a3199c225ceec155f241c4d7927647ecf78dea3ac697227b0913ee41c8f2616533ede97ca8519733ba7264dec73852971035dcbf3f19d480793a3ead3cdbddf19160041aa9ec72aec4fea4911cc642a9f10295fc53cbe5e371683a038524716ee8ab45319b07274b682df263a854a9653c4ab8e1e4f49ff99f492b2187756f31dd62bfc0dcb02df90c41eb0de0165275f391061f5e0d64b95ff0496a9d9a7a1428556e7f468a355c0b7fa31b5fc3711a12a4cfc798c9bda782249f3b524b8bf22b0be11fad715bdbff2769fccd7b091e5fcad2e153f6b424fdb97fafcd96b8fdca9dcbce5f97271802eabd9e71f7d67daf987c16319b48d4acc9fb44e19e6d64c0606c88dfb640d2e53c574b5c9fdd1d88c0ebb2b7c4c4e8c75f562140aae8b6908aa03bc08aa2380736137c5eed3c86ab2eec2b9fda38755d3c49094b8e4207d544ce779305a6be4c741334dea0018612abe3b40c062f4e78d475daa09eea81058ed9370c7bb3a71416d1f295a66a7362bce9db5f98476a117ac338ffd75df5ba199c225ceec155f241c4d7927647ecf78dea3ac697227b0913ee41c8f2616533ef41b213c86ebd2373e1f40ca2c4a0dd1c831ba2888cda14eb26dcc074989e3a08eb84270125ecad990072292a0e3fd23022dc8e9086e326b4641b6ac638d7719847cf28f5bfc135f45ba1a5a23ef347ba62e8d7754b9645f25c6161cf816d69c95a1179f2931fc0883c90fb66f46361b1f354b273d91986fc6a0174333b82ea702ab650684ce0425c809ab7ef170e8313db8be8269e6d24a674c52717c94047121ef3318b6c17ca4e63d8a30d1db7ce56079012eaa414b5f275e3c7e65acf5333ee9791d0fea151395faf104fc27fd7938c7f53e3b7c937dfde01bf82ad28c7ca3560d42f1f0c8185b790cc690dce552ddbc1e4fc2fa4993537891794cde811ddd5104d3e4d51b94d0db20df715769baeab11c1fc70aaf5920edba23a5e4f94a62fbc4d96ea80a78b6bb225b66371ebb01bfba077db2fda5f05eab8ed1e1b019d6a7ebaed51aedf2f5905cabd724040aa33f66dec4a47560a2d5a5a74969729199c225ceec155f241c4d7927647ecf78dea3ac697227b0913ee41c8f2616533b88fbba68a91e8137f39b32fe7c339bd7aa232bb0edf31b34cb14f7e959d66da34f881047a22849adf921a47dbe0037f018e555908c9b5cb49c33153ddee8431b4157b604f3ffdefb9b44196ae410e0313039f09db38209f340af0c76c84b33d140984b2ca471752e54ff235622eb6368265593228f2a5573bf3d572cc56cda5b7fd295ecd31d1500295b480ea460905cd713a7bdeaebbc7db27b303d08ced4810e30699077a7d8526d4025fcca7dab53724a40851bd950232f219fd0022b1ea92b8a446b773ca78d84984784727c0d093bbdd5934bd544c53b390121fe5cbb8d1bd37b9dbbdcf70e4e4a64aeef71926812fb9af8e39acf28f26f9d50eae5de60abad45dcfb3e3c2664ea0aa30271dc2ee6cebba2aee0caad56c78d4dff523b10fe66e6d63b86e7ad49b02f8084f512088c613e84fb1f112d29eb9b2656ca60a02141f49aa39d025d56f517d72f8fef84f77aca218947013860cb93977059975c8e6b896e35b0d33fecf96578642ad937e51c4c6e838a0a4fcaa54500c9ed94448b1e14d2c62a9547c0049bc80dce751c7e5b2c6279c41092b3474ba29fb7683223e8e5b765dfe2f75392e542a54b79a30d8a9817771441d638e22c85fa719df94deb20670f0827297c1969f56d57c4c3fc5905b87bc22c90fcdc91a18cd3053bc859d0e625b43315b2f03cd7e5d292a649fc76c07e772b1f79910966048e068d386f8d441729bf37ba8748d9c9a76c2ed94306233afd81de9535873d67c04218ce9d7b7bcde9d2673ddecbdd29e55f9ac48569fe85423703a3412d7901588b89616c5596dd589baa10d2beef0c2bc54699a1989d4d21b45d61db8212b4277cb8f756283b5e79d36866f83c771dc3d797f43f6a495789fed6da50bad73aa045023812207df9b02e9f5dbaf84d9ceb97dbce8ff141a3d5ea4f8aad5e9733e85a58562adec8ac01c13a2e4bbed262b2d672b94a7b3f3ce40031bca84276a9d303f7ac7f7f0c391684d49b323fd7a8f9f26f54baf7ea110b5227d67740bd75e0f5018af522616b49395de9cba46f0ff52e29ad11c457fbe53626983a503aa7c97c5f1ea4edb6e189874257718924e91fb793fc25b2db25823b8dc767bd08f2b43b4c0df036992a75cdb352701d9c28950fc33032bf70f20b16ba55b7e95625fbf367f4b0d2224de54770314f5252238e47449bd9891644c60ab33bd702fb0eeffacb38d730fd1ab05b49e8d1a8c4652953326ced719a9e2da0c15f232f3894914405ed87f9f9e37e1316bdd52fc88c5f7a9e9f05cfd79f3cb37e74aa40e4976b6b171f61cdc402b9015e75b475153ac58c5a9430fa04482efd475d338a5710bdc3bf19caa9a2647de045701b12b41b36620d7f9c0b0bbf501ee38d453d76daf64aa52fb4f9fb1d9682e063e174d53bcc744b6dc9366e68e97d85f6b8792261c3b20fd3fe5df3cad9b0835e25aa2b30407a40d93b1beb1def3c85fa01a6538383047913b5ec9e1b574bfa1c001d7ae9d83c58833b9ccd3aecfc3cf4e129caf88bc356f9783702d29fb9d6d961b00eba18ad1fd1d6ca65af91e3353a4d9999254567d5110283658b426fe565807c5cd096245eeba829e11a10d2b5b97d6c0ddedc172512d65b86ef8ff01aa81956ec80fadfefea6bd4de00cb3939fe1690d50479595c378063238eff95d347b7ba14b2e59620b6c781593059190e68c87a767991dcd4ea9e7a832af9e72dfff64fabd74606f5f98e9ad48df83e65559d0cae987fa5d9a97779eedb86c60cbe0053743192ddd468cc893f7bce67bef0435969a52adaec8ec3ae7f15f8078ec446087a8eadfdedd9f1e1b0b0aa118583932f7dde9c24cab3618700a0b3608e1e14a7988fd38d10101d5ed0f493be0f136c7c566fd9e1274d0e5895bcf68185af7c5fae67c966961c4b6b0d05760b0f551d1c76621add43b8501aa9c7210bf2b420fc57c5e4a88cbca46cb3784beab8f61cf929d5f209058abe777ca5359c4171e58a958aeb9ce26878eeeffce06a2dcf8e1e85b5213c38f2794d77e0319d60953f09ea132709a5cc5a717842c169bc838a463a532ffce61173dc1c398bde8514d7c3a64528f65ca0277a874de4d0af7db3406fbd4e30b133e01c1ece29a689408c1739679d0a0258d1b005a5f95a51a630f5e33493fb3623dde48b0a9d415e5333d140f9b366afcbb64972de7b6f39dce521e9543bf523f711b2643c08102a7a926cecbf7cc2ea26b8b51a74baebf90331c79c42e09a38b1dec349ef9819c0da1a99a36d83039337a2329acc5c193b8eac784f7b74eb6f8e054e98a852f8ba177f642495b582f11f7410ba0f02f8930d7c2a62978d3a9fec1f25f04396aa97f39dcb3b66c92241393c42e078faad1c857e87020287b884caeabf4bde20361a7036616170c01537d06f41907c83d4aff07f8295f4389d36d4e3f94a5c77825ee7513e883d1d1be0909d58d170687d40f45ae8ef030c4fec5b4d8d5fa7f538ca975ce67b85cd79b291a0c66c7e71360f1409d94ec1ead4676a5a749d6d6e1c31823b968c78abb87716ea4c27a3de6a8c0001abf4af419ccac51a43dc21c88f869279124771135af4f2c36ff6bae3f82a7d1cc01a3234131aa875d0bded31e7511fc044fada6b2c7c657526bb44727bfdf4f8fea13e4ed48d4a2b6f5796dd248daf1576e42f76a7866e89e60e8dd5534018fe4d21da28a1a3e57c4a3cd23daf436536259a7f55a83c0c1611b4bdfc30d734876a66bba9f01c56adfbb92a2e6520030f997d1e2a5a8fd88ee54e1336f4f9ea40375f850107212d8711f8aa0341e0eaf562f8a87ba475e0a25188a78ff65c786509b396f5ed73d04b3da8141459ff1881df3705c2fccb98977ebf8d7fbe4c1f7a3682303a71d7c8bd02fd517621f9256cc35aa12c0ddadcd9e782374245e488e9b95b69e4d876d59a7539c41f437e6b30c559e83d5b635171c896cd8342553756962c43eec62cbf5b4867f39726e390606ce1af4c6505db6201bccd4f07d1ccffeff63d12929b1bcd1e97952435c7050e99bbfa733fea65e6dd4a10b7b49ac9769c410b3193bdaee1221e94a11bccbe7e84b91eaab4fdb93c4c4ebf0cd4f79d00bd1d0ca7f9fcd82dc2e1d75af751700465becca16e7f963aa4e9e47dea10336aaae32425d85a9d8451bc1a65aa6b067051461908c2c049cb376d79047b1fc3a3b68f3a75a70a06f7c2508f8cbf04809 diff --git a/zebra-test/src/vectors/block-main-1-687-107.txt b/zebra-test/src/vectors/block-main-1-687-107.txt new file mode 100644 index 00000000000..611a89d51e2 --- /dev/null +++ b/zebra-test/src/vectors/block-main-1-687-107.txt @@ -0,0 +1 @@ +040000006b51ddb8529693b985fae432a309105ded97e9d27bf2f70ec5407d0100000000b636d1feb31d83b928bbc9a6e817be1de6264f0f33e85656b3ad810ac07bc8b66ec5d20b3be1dfc82409f0665f79d2bb426406ef4a9922890a891d73aa74b660d25696628aa9011cd82df37800000000000000000000000000002500000000000000000040061274fd4005000c0b400606ac767b2833924db7d681d717194b684d9d3cee11e8c8c7a16446f2c851883a75f2d678970fef6fb089b5a945cff9937ba772d092fcccbd0ad849ccc38de2dd9fbdc25ed9cc2b58fa1f44c19d2502032023337e82727d0a6b82b735dc49b5621ad8ed323d727673bf6b167fcf7b06a4c2742fa9da013725db0e0de353ae9d7d91a86334a22af9e8f9e0a91b42f017e54e21a31ff0c9f7bdc95088d8e78b7b9bff046b02b1d25a12308da7b72b720a9f3efedba226bdb219457d92f16f6dd73f910ab594824fb28259a91dca771782b2a4c9b41ed3df81f500bd450ec671d937d67a30341fbc061e2b111f56f4f116638319d5c294586c06cfa8424dc60b155a1a42f976d80361c4dbf94c3125b2f6de92e53e31cc06d5fb09de3a937fcb9c367216bbeb8396f93d0fcb2ea365cfbf0b39679fab4bc11bcbb7fd42b0f249e8c57675fd4bb771c2a71e8fa901969108354788c676697644deec880ef3ffd9c2600f23ba600846bd0cbb87e14dc3a80d9c720cc713ce19cc862dcd935f6bcd453ae9ed5cefdeddc61dc2392d8ba320b71557e915e0d6da82e388e5e92ffcd7690d2310e9f9a747b5eb6d719abad6e3a2aaba5f2dbd12af4a9f750f0f3ccede45d4293f0a26dc281e112f28e6aacbb8ebf837de2d63822c43e692d653f8d29735c82629759dce65af33139b863469555df6791e500495c8e76aa51111b175a13c68ea5b1c7bedf72a35138537b9c48c3989c72862d83974c3b1e4321cc36c06da5a1f69c713cff8d24325714dab38ec9d0b24e1122048de8d6738fd956e7127089ea47789dcbcfe210a4e618e774cca4a6830e501437044c687b2d61184154e9c245988724f5ff5f34058bbf8a0f09e93069f10d94c1399da5a7efcec88bbf66e70ab065cdc11dd3a1236e6dcdc23df02a964c066cc7629e8841e4f16008fd0102bc62be47911700dbddcb9325249d32f9137c47d1b660facbf505ad7daf5753ac328137ccbf70597650480889636aedcb5ab0cfec23697afbda35b0b5f959c7f4f121a9a610215f4d4f07da5fb747ce117a750e2b94d6439c425e542a6c0207969dece948032788f83285ab93911d573b69eb8754d98c41d94d81b1314d2b52dccbdc2022217faced9b676f4fee86c524dad0f759de2d1485ee65d777545533458dd3e4905f2ca3ff45abbe5c91a616e2ba6d0fcd6eed5ddbe33147445fd637631948c43ca592bcdde8ff2b90c292cbb94b1b38b95aeee50dacc1474ef7f8b869e2f536f841630d0aaf599cef0e92bc3d9e7df00ea1a50d708b3df5c930435d074be909e1d160714aafc3a970719816423a3ec6d7fb2e11782e06491936d5efbe80e21c3754b2849e997480b12462bb619052e4cb97857299dbc6ca6d33eedb02aa8993adfac535d0b5cf6e903bbcb997a52007af9fa40fe0668063c6739ff61ae06b87a3dae0ecc84c5db81056250f6d4a0ac7ff2c808d8225fcc6677e985974096867adf41bd17d0c5ff11f4df2faa0ab746d68052313895c93151745d0b7e06c7dad1d60af91ceacb5712567b5bc6892b3ae5701f92ee048c9a7bd17237a47ef13b720d488ffd026d1b1cca62aa665be957efb55bc63b94c9a3a45bc5112560cbef42ea02e16efe63cf9eaa580da7da50b56207389054570cb7636d9641c232c5a33119c5308f990c3053e7a7e9e04d66a724c3baafda9a2e311c3de027ac34e4ac0ea2e4cbb2d365d423d19d723d1ddb7244994ced61520e9779c547b4a24d451a0750b0b7542530e1a5e7cd73d4e7c71735a74cbe8a6a793836c84e86bc14d5238cb5b269768ef3cb984e751edb4eaf3377756d541b295fe79a4850a859bfee5b4d7e2c863b0e476bebaa61d99bb655944eadde7e298ef9bf8606050000800a27a726b4d0d6c20000000043be1900010000000000000000000000000000000000000000000000000000000000000000ffffffff050343be1900ffffffff04589ce80e000000001976a914be62da59de8993dd79965ddd27629b1ffe55e46e88ac38c94d010000000017a91469a9f95a98fe581b6eb52841ef4806dc4402eb908740787d010000000017a914931fec54c1fea86e574462cc32013f5400b8912987286bee000000000017a914d45cb1adffb5215a42720532a076f02c7c778c90870000000400008085202f8904dc0c0771d136e2eac48fed3e3dec85118ce36300fb405a05267de99d051a55f6010000006a47304402201c0316fa1d5f27f0a3bafc4fdf85bc76b1e767f787d8b8858a8c83c8782e87820220598dbbf190d031150762fc3bcd5d7c46f25fda10fb9dca04cce679061e7a66f6012102b469816330cc955e79bcd9842a4dc6098989510c4cbbd08688ff61c7de53098a000000004d0a4f9953e9cf00c2e28c1d791fab40b645e85e6f7f4aaf6b7e038504bbb825000000006a4730440220459c10cb81e5cb18422955c3abd464af15e005cd67f9670b8e7c193d87787716022002a3c61b1ba5c89bc4ed56805ffd67bf9c09abbdb421f2c00659887b26e1bd0f012102b469816330cc955e79bcd9842a4dc6098989510c4cbbd08688ff61c7de53098a000000007077fe331f4e1517711bfce3bb48f72bf4d929b8c83aa785c5db0252d806c1d3010000006a473044022075c52fd7a1a6a50506ac320db8811dfc0944b94c17706d9f508b17f5a05ab12b02207dd34f25e451f4354320a20ccbc4adfc9aa23f4072a2e59f048257a85a8d2ef6012102b469816330cc955e79bcd9842a4dc6098989510c4cbbd08688ff61c7de53098a00000000501172a526ad69e3f37d4a1631c7404c5fd8227a3f7af1a159d9aaee0ea7dbff000000006b483045022100e54d74beff92fec8922bef7f038686303b0fb64d08933bc999562b663fb9fa0f022063ce5d8023955bf2da48ce67241f80b89562f10652453e3e7089faf5622ee2a6012102b469816330cc955e79bcd9842a4dc6098989510c4cbbd08688ff61c7de53098a000000000200199222000000001976a9140995393a8f8da4d2320dcd13fbd32fbaa437270b88aca4a53100000000001976a9148ae59adcb3dc033c6962b48a4c108d5847d672f388ac000000000000000000000000000000000000000400008085202f89013cad013ddd2a0dc565059ade33b4d5c9e6677fe274f535121993811bc2453208010000006b483045022100f2184f6fbf99dfae56dbfa24ad4a2d9cb3f3424a0b2bea4ac5993c1a5632c0fe02201a38163532969a74abc02f6f6fb5892b7481bd3f96051fbef2fd57f891ddd5e50121028e10fef2d8834f196b40f417616514e50035b92b93eab7620f1eb348dd82d336ffffffff02a0860100000000001976a914ce3171a425e119f3430b3766715979e885041ceb88ac1ce10200000000001976a91476adcc9ed36417fe87b9ab59302281694d5023ac88ac00000000000000000000000000000000000000050000800a27a726b4d0d6c2000000006bbe1900020404679c0535c84751871d4eea5ab2aa4fcd403b64e1907f2fd4214887f98d17000000006a473044022050bbe141dd051afbe16eb6ae78ced380edb29df5d29a0f3f225d90aa33ee78d802207993449211f006bb85c7cea7a567a85f4f050931dcdd2888fd6383d8012b9408012103dc5bdbb3321d6f1db1d4683b259e66df141a4c76ce3af96492ea1e44331d3132fffffffff298ec8d59fb36109a9d25d3d3b80e97e07e66774b94b275cc1ef27a728ea4ea000000006a47304402205c09f935703b1a216875aef97696095ca8b1ddbd614e1dec9c8458f2f3d7d52402207df1dd8890985b394f250542858a53a5f8e3d922ce903e7789351a4be49fdc39012103dc5bdbb3321d6f1db1d4683b259e66df141a4c76ce3af96492ea1e44331d3132ffffffff00000145296811f8949a77ef5d5dbd5be53bccd0daadbcaa761019760f725d0b39f3698ecaecb21b6656babd50626ea16a897e9197d4702f3c9f297367729c3f269668e14c10af3d214c0ee42043688ab5d6ab0581b1a505f8ea68ac00348135feb596b6b06476ffeb0b9e162aef1801c80b47c59d1e1fd1a8b6744c4695745604da7473c6d525409ad7f285be06b54ee87a993c357331f29f7fd6c45a0035fbb8966e6a85a0c122c48b6523c812bdabcc2b89876ea19efa61de5a6840c0e629e8af5a06e8c8309677edc9f94af01933234a4393960587e1764840e07fbe64214e88b593f86248ba1c9812814cf2343ce4d0b1215d0c63ed523ded939f2dbccfcaa5030ebe931e8a5789069560f3a987489deb13d7da657f216375abd360fbdb5fa8543f269f89df5649a0c609ec847e7f8a3e369f936b06f72716cb4fd5d62e2921b81adcb7a7621a3210f18c1b577b11f8be9141d942e0d9775c92c10198652b94c9772cb961aec29cc49d02cc9e5aad24a5d66ea65adaed96dfa99135481e4c47db8e1b8cea574c163325447e24341cec69e187c910d76f6655e5f2a86930af9de249df619bd825b85ad2c80b80d62f2aa1bd3dc335379cfe714dd0f9d3c68f8af76303588a56619fbbfa5299089bbf2b93021ee646a8a2aa35f01ddf02827dd44b4fdd79660d38d6b8a3ee8d768434e4de17914e4a2b7c7c5d46e1509f3fed26b9c24e2c5c28012425bb3191ad81ace5a2d4a5990ffb435a8764c5e4409e8dea71299bc6ccb03e003323f5357a125ec9dedbb5f928414296b9642ceda17004211079cfce4cc2e2cbfaf0f39b1581d7985133a3588d87a82dfb50385ae9e5f1ac143066742c4fbc8c9f1f2ea23aa02b0ba40ed427eb544e8bd91cf632823e811bf31d37f380f0c7bdcbf88fa537bb90f582ef4d2652609c2c66667eea4bb41cd8682377580829d6e5beeb9099a1eb35e7560deea70181446a3ecbd8c9fbcc80079c3ed58cf9735170dad3861b1005fe3f14423bdf017eb6ccfe90ad5e3fc3c9335d393aa2decb0de5340c4465de83193fa3bb45a68dc98a16e2ffffffffad7943b7ee97a25bfdce859829f16a6f306ce1e62024bb3b9264147e09d92822c716dc5bc849c7992abd560743707508ae52e319b43e87fc87f55eddf48fdf04e0c9acacd0a0364514faa9b27da84656328a84b73ee89fb8a49bb39e4d0dc8c31037c9ea167955e908a8d0cb9b4e4fde6ef8a506c64a9bd89363d713f6ea79cbf9b4ea860150b116e1292a8081dad9f6878f122fccd746def6616f31eea10d27f14cd553aba961f0d0349a4d77b355a80912643be83c9b7e50a3a72f1039105cd0d2fdf482930bb175fb6b8aefde0d0599d0905b151e9fc35ab0949ddb19dfc0b9e037a835da6dda437f2cd8bed33396a9c69c2dd430f52c7e069dad9aef120d00050000800a27a726b4d0d6c2000000006abe1900000001ada61578ff8fea6f5da1c76c2edfef74c1fe4f6810077ecb2c6273cb2fdd318d4ce6ffed04d6114b52ca43c680bc8d53c75d3b7889892c44e61a8a47638aa563b88bfb7952460394aa19555c1f0006d997959e8fa649b7d485bda3a327cba8ab00e0c81000000000009f600fe22c07fd60d49559791edcf74ecef542f800ab0adcfeda49684655044caa199518bcb2f7f7e258e6a99f750546dff515891280bffcfba699afb26417a10f12c7dbe0d3dc595ee0c5a51e8e69c892894c99413eafefd1e6cbcecee11db9ad0cfa772cadf8cfa7cc1bf096b8a6526663ab96ccfb1964ff2c07d3def34eed19787fbc5a4294622d9421c9187a96e9d4fba0042b06b951d3127c77319fe6f439a46d3285d5391dc39320a892c07533a35a8372ea45566ee8106ab87688f481915b8c5f501bb72bbc30a07bd0adb3afcaec1dba69d168f2c41beded040dfcd7e6b5bd94691d50ae8e3d8e8fec2556b3c4be9e17465a0eaaec47e5dc0c1718e51833e833313f781885cc957eb420b961fb46a41fb3bc6e22a24a72ee31d4d409ffc7b3f0e92d61c2ec1fdc279e0012adaa419bcb7d104abed2b24bc696aaf99bc70ec83d1c4f46b6f2e2ac67404698fe89e66d64cbb2f69af3403ad66133190d029d9f727356e46b722268e2bc47d6eaa676222680104eeaed7c7d30dce805598fb3cdb97715d5e3dd624fc87906b9d13b4e4ec6a63989d989936f2504f0a1f70660fb2efc730797bf9d1a2435c8b03c7d0a023a22a39b56844f319b9d54bf1794e542b41a8a44e417521228218da39f865283ae50431c2292c36f379f6da04d2de95567ed9e38738b4befaa472757d8672f3aee83a283f88f2e6012ad7434c9b08e88d967cfc9137e87bafaaa32f1a25cd080d0bf7572d99bb8fa40c23c1a46722409433260fe2e4caa5b66485a8cef96a44f01df68d59eae23de8d022ce23e6175bc0206431ed4e9b9604871d2983227ed4c79b4c608f5544eac6203ae3ee0e66a0f3440a12a046a982b524b1f0770344ff4b651b579c605e83419507ff8df1d95c25e18940babaa6d7a2687c10fef2a6a0ebc17a3fe219ceea54ea3e1181d4d9e9ef00378c91ed8b8eabc304cd61e5c4f862ab2e76ecd8bff284580fe8161616489c7cef83dcd57dc1555408facbc6462386a50fe88250f4ba673ab3b30b27b5f3b90d65231f260b246bb4841ceb89158dd434fa406a62a2a327a3ea910f4d1fa3b761493e0dbd2978dafacc50d1834f3f562610cdbd3f6aaf3d7a4058fb37902223e99269a0b804aacf10d34426525cae663aef7be059d01076af7356594597f6073f981c0f5b6785b049c8d13f29fcbc88262bd7237b5a67df14194349efc769916970f5dcd904f5208e21fe5c2841a5d6acc313315aaeea953716b72b12fb2a2673140753badae2840e855308205aed3f601a3fde0ebdf5dc0a5935cedabbad4dc2324001759dcafdb9f54ea843429ae8b20db283f378cfc0227f3fe19d41e09f93019d2dcd031d2463b0631757badab516c97136fb289fc3d7017d104c6da14c19cf9260c5ce55206c44c24ad042de9d034aa45949d130e6dcaf76f14f7c316fcba75949ce2caa924edfc4686bb5f3e4f2f63fa8bf61a999b142b41e51f243e0040906f5b8651dc282c1ed47b2d291040c07bcbb5e4f8747f55445c9bad73f0b40cf4ddd506387c02b37423a621023018bb4c836e25c93b9395bb3b4f0c5ff33ad5beb1d2df8253a8ad66ba76beb82b72c95dd9211a543c26ae772129a90fa55bb185509782338248abd982a46890fae06264f5ca9d8608362af3e7a6811ca3bc2c0b95f23444c4dc30979f2254b54e343294fcc592d15219ef5534aa11ba79bb8ae6db89e01c55b877bc89e97f062b56395d15bdfc4fc80813c272269bedfcb5749b0ebedadfb32c30125f9232f8db919d38fb218b939d9d6b7e906f1e68e49b4a5b9c1941fbf21c543529b19eadbcb01fcaa4c85c2824b838e70df23658e495dcfa2ce38b95df925fa8988c8e1ea76eab4c15a0bfd1ffcecbde8e2d9bfcced1a01f243fb8707d03c620e34701fd7a9440d946791fba17a512cc5f64f99b29c675a2c61e6cc5f660ac9ac62af1a839cda0593e0ad46342683496afae7e937c0e2d40055f3c556e432e2b00092628d39ca0df198f2b532e29a873857e1b2d86f57feec85b9112e26b9518710bd6b25476555c94e49ab853ef6bce643554f4cd5d6954f3aca9451d70df8965b19527971e67889a64235dc531be41e1caa6b9cc664791cdddc850a9ce501d2e9e6f368d0f917c72cbc4b0f4bb14e5ed70af06f0743c47aef9c2a74eb9006d9b7916d5bdcc2bb0ae5946c43b4137b1bc18e34445fd49169029cab47f0c89903a0ef1d3689491830be5eb78cefa094e448fdbfdf5de6d5cfb291c8b03665051aa6e74389b85dd12064baa1ff43b13cb6e86587fae162c7b0180f0285d495ed53b30cdc5ec08702c946aa71f6391c96a618c8b5f15e915a07edcdac19cda64e7fbacf6cbaa14e50280b7ad20f10bfb54decf55175864b7060f9e278f4ec548b101933599e581c018b46c8c64c1cdccb49ad4453da57bd10ab56f6e98c0c5dc6f3f79ba9659c07760460157b5e72abb47d9bf20dd3efaa918cbd538183f6c0f228ca756b27f70395c767d3b377c86fa16350bc317577d063497c489867e164760415bdae6ecf14e7964a13e109a20eb80f07d2a723ee6666db003f4813705bdd72bbbc885c11e065a19dd416cfad59cd526ba464a213e553c6b4a593f621f8730ff1aa3403bec8a6f406efbafb73c13eba6d6ea895cb6365206fe0a7aebb3aa6682a85c333afad02da5dbb1e4d0a860287f5b1cbe657358e9c84bf05ff5c9a2a50a5356ab24c03af284ee1cb0671256d85167e257013b369bd39fa1fa3e158bfe990bd7b0961b4dcde8052b520d3ac8cfc6331f36a2ba1322ab84de03c0bdf0ffffffffffae2935f1dfd8a24aed7c70df7de3a668eb7a49b1319880dde2bbd9031ae5d82ffd601c483638c5daf818f044248046448e8e7105b0d7ce6a4fba973889c73c45a2de92426f34ecb4cee0072d26cd05b337041feda51d0b15ebe56923b7fac6a026182f50a13ce8e3225836a1d54c0718f4d4ee7a989fff747ad155bd240b40e4434cb71b0ad3528dac6c1fffa79f1037778e05808076169c46e2536dd2b195c40dd5354b065aedc3d46c1476226e8feaa0bc5122ea3267b721a8ae4dd38752f8bcfa390d1aeaad47ac1e9d62546917f3b681bfc6b9dca15a67db5aa7084c874aa66693b35e5e04a12443b71d94ffa4c7109a102ab6cf1d0c6c6fb7996e0c9a94416b95062b7019c9a07cf7f891f7db08e7addfdc7a54429b373a1e34da306ac286e9a780dbf2c3c9444e96fc86a8fe792a41e7ac38f68518c076e018d3ed61a790968089de8412c30dff30c1c386e705852bb7098475bf19c9e48156750a752b3cb8a0bf34a7944400d373670deb0754c6f175528a7b3d8f2084d2fa0572a6bd6f8706badfcfdbd482bf7b1bbd6fe94e2d849e0002d1f4c562131f2683452b7fc2e9b4845b88c041550e9a9cd4425748e2cbe8cdee93abaa24724121c4b5d2e43a043d597234f702a91d7ab25ebebe5d4dc1cc81a1061ff9f00349d6e6b337e12e05075e3c1c294fbed25f3f9c9312e2a0018a9dcd523ac6aa38487cdcb3b18fba40095c24a4b37f882e4ee14ec1466621ca7482bc734307ed565bfbd050024546e4ae648e9a56758b7e369efdf4ee637e8b5d2ccbd69748ca2b35a5e01968f7363a1ff04b6284ad01d27011a0ce7d7c792126a8f99cb2942afd2c12f06d0643b164157c594052f38890994f3c8e476412736cab0a47662417a4706588eedca6c807bd9be1328d46bda76b62e93afb27140c6b91bf332d68608e1a9705d24225a1bb2c1749010457c563b7b80eed430c1fad20e78969d9fd93d9a660f55850cdcde608d6bf03d594a69ba1a0c19a9217927ae7913a7846788c61498cdf4972682a7b8bbdd4193dec8c79a4999eccf157a34e6fcadaec69415be3a1bbcdae9ff9e8208a20a334324bad16f81796143395de874a57c7441bbbbd1e7b1dd6c3af8ce029a829dcb95b42a027ca7e78e8ba9b5689eb7a0e80dc9c2ab243de54ce1b897538bfff7fda76a144ac3129a822f9c80f5122d126e93c0216930e547748a158fecf2cad80087b8865c86105bceb51a2c437b9e27e9f46ffe25ce1fb40cd6051d0059872aff7680a15ce48e80e80b9c92372b8bfc1652ce276714e524d4bd89628290b1ea2791bde1aeb867ea6df878fc39f60d86e17cb8d0f4f4e843f173de74e043c339a0e99ea530cbbe11c660b38504044f7dac7743403a12670054dfef976cf1a308010886d8ef0a09978bb691bbb43a3d15ed9ac65cda65826bd7f1ea1eefb0307caa6eda1e8a437ce88dddabbab2414bf53b1ad5ccc29972f8c92671e80f824013c033983604217bca5798b14b9052f43c840a65c34cd5ca6f6e24a4675e7b1141bbc53b234c926c406f10c12f96ea7708be5c1bdf4ad464ac64f998325de25fdab1c5d44b0dacfc14e35a22a6ff0c5cde6d147d8eabc79f5f744c17814e380c05300c959f24c79ed73f45960564cc64bedcb8030fd139c01153d5ccec16ea103eaa244437f07cde913f9132b5f6b8ea63f7deeaeba4f0fdb53922acf890ca92d1734bb49e8a756d8b626ea570dcf8eb8a3728d05ed809e5117046a8b106a9f659421d856030632abff5dd3da975216ad69d3bea9c124cb45814e9abe13e490639bd33b03b523815dade480e6d93215b2527e46ece921a93949cb36dce3eab0c88548f00ce4853b7a8f7155c31a5967651fec7ee8e1fa0eacf525a1c0bf313190196678347cda65e6d31218b91685a728aa29b86e3713d0e36d361641c834ac9227f5a27cc57eb48e9179809d66ddb8e64946cea94c5328054faf1deae30f273a3583079882ba5e74265322737f27621db254695c40483f93d4eeb8e14a602437cda990a00868b6507a612ec3147c0add8944ee0b4eeae1e0f4a1c6c8f3273fcdef51e3a3c346b746736986572f689b2766307f28f3327fd82c9542834f6dbe6572cc347a3cdce164ba46b566954d4f57d2499f77a9656c9fd133f71a21d1b791c4a0c79451d6de65592670c46d1eb96e84c5b60328b6909e4ae245f0b068b71389cbd359db691b77b5c92b3bf88cd7182f47c1beaf12d247992ff3cbde68b9647708b8bc04374ed770740d43304d870fa360612080efb1da04866ee72828b5fd7fbbdc5c5ad06a1f350bf78e099f7dd240bbb034199b47b6d08709dc59bcbe36c50cc2ca08a75a1917d624151767acd1289f12f8f98b5df140f9530c644427e9f4b90c76c7ff8a3e73288803e4641cc8548699445ae6bcf69241095102e117cd48e32a5a873b07c6245b44fa66543831b1a333621ca2a7f119f6b4bf9d0f0f03e8d9aa2070681934e3e541ef24e2831746cc6a3968edaf61e132d6181f152a53781f0642029c9c571903b84633e6be89c5ad452c20b2fa07306366fa4cbb239eff9fcd9116dfac9c03e5985f7167350ca278a35ba953a1aed7ef644b112b1de9c57f70efc2ec58e275269b28d1e2cd68f4f0e5523a004f5ec9482cfa32f42eb13001b99cee908594fd5077405060ceb313cde8649d20a891bd53361e3ce53e64ea421b01efa446a6e527fd0906a472959cf659f184ce45d5a68488f7f8af13cbd1b9773f8c8382e6f565be2893532366c86a650b5849f854e6797274741138c02aeba9f79f2150033a4f2dddd2e93ab02749da30d88be5de80ba80434ac614da6b1398bf164a6cfa3c70ee8bad3d6d25437a58de1fcf1e37d55e1ee4ed912455b6bde51aea965c4e9f4216a96372e8191ee3d3d0c15647c3957fab036ef23f06762c1589337b43c45bb62722fb691cbbe9b774221f479a9114f4aafa3f932aea16d0a59cf031575697c78ce5674785bded12d52d7be8d9c3e83b57d148f33dabf66939f139fea47abba7e1ceb446cc06ef3ac7e841743118b786f6ce45bf1bcf479a13d015ad920390936a3a120533278715b365760ae5adba83b2bdbef721bc7fdc5db60cfba403511feaf5f76b1d68f83ae69715a4463156da881f2a8310c2140ec7b531b91111f3de4ab7b0b5a4d7de64ad3769294cc4598a923ff36c12d3ef1bf9b4b4695a2e6cac59410cc7f6de00d91bac1b8dc92a201b26ed96d43ad83501510dacdd0fb4f84c138d6d45de54cc969a4d21d5d90fb8dac4ec2ad83ee483fbadad856aef640098340816a277aeb2050e7689aee3978e28781b55cd260b79e0f3375112d3e1c042f2eac12473a934ee20face31ebad6e0507360d260ca0322164a035ca1a42885446e46c8a7d7adb58c7ce997275130e6753e1616d1b9c76a0c883a54a9e906553956f8308c76aa4806f80feda049ab6694cba52f52f535bfbdaaf81c526899276156ae2d22c658fa5a3a0a8b7d832eb622d175fc13930536846fb677efdfec564131481f4977e78410fdc3f35c04e67d257871dfb02f0d23287ab44c7e7ea7180ddb8f8e8e9b96e0b78323806bfb69bc9ef95566505705897870d43cb08dfd3c4482dd88c8ab9791ffac7c29e6ed5acfd89bbd8143beff2ca3c5f185687e788e5a961532eabbd68067c4ac7b92825f0725bd408e9138e90059fc5a15227e6695a13373f87caab87e412a11aec3b22edbf7f02f91239036d1a2778503e1e27f07a9c028f268d66fb5b6041958437b4548fe4ccd3b42e9d193a1548fd32d4e1dce9cefdfca79987971210e57ba1c79472cda68211be04aeeb4bb1cbfbf278262291dcfa9f9f75ec141a80d7589e8bd85d44d6f517c32eff912d580800e2b61c9be95f93fea1b09733cbf1dca13eda07d299ebe72e682248854c99df59c0f315d4228ce387a218eca993fc9750a250e4a9363a1fe5482cc63b52a8486a10571654ed0c583f9bef0df3f23a42bc8391dbfbe23d488c393a386911ac00d2b45f60db922c8c46a1d9f44bae96badc05404cb8e7069f6b3f1c1ef6fb18a4b2f83eb497f1b31f6c74259d3dc17e4045f16a0b61954b960cf000938f3cab92a0ec9844d6de7fb46f1275760b4fd1414b50785f9ad272eacd8231c27c7ef2cf02bb89e5def3885f623266bdc996c6aa0879094e83d5728e1f4808150b45fb2aa960b80fe5005b2c3bc524d85fd833d64f2607ba5e7eba7f91da3d94758b84039848999a66a5b960a7996dd8e3e1d83f3404ed0bf8dcc994e8e22a7578b3f86a1e459057e4c88b029aba78d42d69bbf39dc47889a4d0cececfaf24872b434706e83c2fff84d2655146774a3c80f82217340e4417f0d733efe4af2c7c01338fb6735c2f7c658598b8cfa71a4f0e1481656a4832625030ed9bb91a3f505bbd2deef7f5197dc179f8ea834f642cd81bab08def63d18e4b28e9ee39f080a2f9043fe8879bbb47b10f83886138bf6e29d4e54d24a2ce9705f12ab488e30b3c197d364a087753b2904b8808aab0c1c0e0bb768a508bfd8716546f541fd368bda2283b0f1814cc2666767dbf2aa1147ea507693b819c22a7f7e7392f08c12d8765fb5d23660d7d6006a0e5cc198da81af27d2fc7fff6cf556d04b4df6dc18c9ebddb97c61f043e4bf66ffa00f0d4262e85f67731e8c44c05a1bbcb7dc411d689058bce938d935500dee7800dd60a5589cd3fe19cc5e33a9433f9f74620f0bf0f19021b122bfe996d9292a98e34e83b51be9680f39bfb4a26decda67210c17f11757b16a9ae2445c26e8bbcb0517674510870cce7721ee6d6dbc0867809e329dcb00dd26c5bbd3507e646e86d2684194c9c54969dd56fb33f67e63b4b07c0260091ead11c0a3c8372c442b301990c5a206cc3618d35bed17c40078a5d8b128f3a05caa014da219220fe199499535cd04f3ba6a928216db8b76ee439e5b9400aeae716ea2db598b9b29cda7c7c9cdae46169d2a0974a01ec5f3fe4061dabe3913f7b9272d6a34518c44c62cf51c858726d3f42eab68506dcf35a7133e45a51ef3229ffc83238d2b450748260b14b4a2c67ebefc966ad95a3bd0b16457505b0c4c434632a0b9c5c66b2bc4c56d9074c0b806c4de81415b0e055f2cfa4ba42b03c2df4496a66d55493650cddaeead2846e9cc0856c994bbb0678ef2fd84134c1d0bba8c2c442f829b969f5e5cd1cf21c972aa3ae74694b20166d8277bdec0b4308692386d7cf4cae2712db10cf73abbe3fe4af4b41af8681c4188e1d8346cf43a6e2c44d0146cae7e5772f9e6cb9d41c8b0f11792e15818631a2270f75f373a39e6a5d67623669e3bb02d09c905280ba388d1e01615eeb9b4e4118f5c66bd9f3ae3a95187cffdd046c8b99d4b4e3d19de7c50c801bef201250355a00e1ee1eb3e4f4f923226f8ad25362fddf25717680ad5cfd9fc68830ffd47cd08c35ab758390995dbf137f0cafd5a398342b8dd5c1aedd4f66e527eeb5f90d0caf585b6793dc3348af4ac7f5d9f674f19515bdc34de3a1378605b2dce5a99031a69daafc40dcaafa6e9d81f9ecb7f986a9a6ff994e221af6aee47a51c0dad3ccd8ebd2076063595761b2ba6f42077384811d1634ed3a7e4e2db43641cd704c1ff61571b2625dc6f9a1bd6eb303ca64183975a1b9576a631551f61f9c4a1db3274267dfba1298712e70631d5f426279c57d5d4d0a2f45d52d512505227656c59089b4da85f2f44d4db685dcd21d5678475824077262656eedbbe7b40d3b112346d740e0e143d5f893cca73580eaa1bbb1bfd6217c761da7e60563d98fd8763e4bb18bba70525e8ec542e8f6fbec29d89ed58575883e388cd74f25148cca119e3ba5d40ffcc106f0d4a45268cb8b9c9f4c3483c42067d942aeda75117708fe1de33a1f7bce92170fe922c75b8d17e6846d102165a388dc7ca43d9043850791454003aa4eb69125030d535f8f119a11e5f26b6bce1bf70668a8033e8690b8a4a3cf47b32798135c4a7fbc160d940231bf29c88c9ec232ddbba1d7cdaff61e5a4f4d9da4c3bdd15ac89f9c29b7c512a35193cc136d75ab1a71cf23d9f37c04fe6c3c06cedb97c0820fd21aaf4d81efb4a650ce5d8186288cff65d144b062126bcebd1e8b56e8d3dff30c2976571c61edebbf996e1ffb9b0d086c06e5c881c1d91ed9e39abea2b32164ccdb0ba1597ab0dccd78896bc71c4384cc49b6e5bcd911c0dabe0cd2daf32ec98675b81beba9d50a43dd8e131bb01ef9d5a63abec0d9e990067ee4abcee0c5a3888972f6dc2a225509ad018e1634a0ed7c33b793f4331b1b5a57e198f17312e65f659fc3b565318b1d8735bb4cb8e660c234970563be510c7c993707de21f41714e5926af805e9e2bd709886a118d04a8206a75d6b396d689cccdc15cd90d4bb83c4e46875f8c62f3a1ceb78a4fb73215b1bfd0c9204e3e9a2600e3bf1f1259cc274a281ba768b4b525b11aeb73ae0037269d726502ac4e967d1fed34412c2c1e85c28d4f155cf0beb25d1c727ec864e3cd6d564f8e1a731c4bccc34a5935ecb0ce52a9627d42ef55b44eb92fc38a0a272443c0f970e760022e042647f8014a4c5ca08f10e11ef592fa3ee8b752d49070846c78b2a093bf7d9d67816200196dc4b6e182074d17f492c1b3a6c68f15eb74de40630385bea8c08d75606fb209da76da16bd9aa0f986a815c43334d7612694fb1dbaca93c557213ec6490727266a90c3b3aaf5a65043d6b6b87c835ee093bb3b0b3205a4cab1b933575678e91530109bc2494400c6141df7b5cf241b36c86d1e9093fe2fed75c74b2ea6da53173a847ba77e4e6a6dc21ab8e41b4d67ee34449a4de55f352305521896d27c601b6abff20aec74821ae3d1bf058171784312acce591cb6acce6dd37fe7dc00e92c207a54cf55fae634168f5101a763111812015a44a3b09efd7bd064b2fd448e375d6277b44334bb8ee36bd84532703cf864e026544620eece8c3a18826a924a2d5de2e25b96df67c6f2d5efeec806b08dba83f3561f796ede197f283559a49d1dc3c84d7efb531f1e3b137a201c387a6e37127d3b37a7e5df3ee1a2846dfcfa3eef2521eb9aaa0f86143cef3554fd931be0b46d2f3098f8147ef033011a900615e866dc43ddd0d4d560cd53a4dec32c870dc59323b75ab061434a3abdee093f051ce749bb645199cca7b95893bc5cbdaa1f78226568ff8ba8d46fec1ae84d4430bf3c9c71d2271e7f27cbaf9dddef43a8af4c32ccb1b275858c211257b1901020c6ea689027f37f90c7f55854af5285d74107c675380f37016ead8ba7e200812414f1208ba803a15c39a09eab126ff723eab9789b8453c582ad9fa3e00a68c60ca8c950970dc13b8f2dab9691db828cf0c4840fd938633262861dfa7810ee7c1efed44108f46e8d4ebf939e59635bd8e236b60d9bc02374cf7927b097dfe7e93b1bbf6e96f677566407a32e163e59a0aadd23304aef1d1c653ae65f5616207c06e7954a9a5d41dde96d2cfe70b6c23277471c12f6c7342a882a2c3d63f786d819a6e3e978c6ea5545822c74336c75ab868b6d6942435f82dba90a9ec9a2883833acd8d5360899f271fff077e63a65356bcdf7ad6fa8214413055731a3dcfd343232e32d81bd7a3c2147fe7d795a1e620133f349b7e81cbaf77652bdc5db2fdf3d9e541f83fe505bcaf6ec22eb49c6712f8f0307914257f0dcf665cc7efb009920c6a85bb41a884cbffb782ed9d64c999dbcb383c774a16f7a8fadf5363213511698d031cf6ba850ed4628ae27de02cc6f0a5818267816068053645bd6d72ed82c701ad96489a2cecbbd210b079ba2bb73e2749cd5554bd80a7448c6c852036234ee2cba8445eca4d3a47aef85078ce56d5f2b871cfbe38379acefed00a5accf2cb6c2c459b55e20aeced3554328b290fbc9bcb2530ca2fa016735db83f3aed21862b13baee2839f830c39770db37ca2dcb3904ba1a87fe823c99575ed660e4432c2db552279a07dadf5dbfcad85d48b61f9ba2e54bc79702c0eac0336df5ca222526966e0db5b13f7a24446c2dec575345298070833a58881a5592be79fbf5624d031b67a1a479ae770a6b6d31b33ed5a0267e4e017e19606e777ce6bf0047326b140810477711f1ea6ae191f2f2fd0bfdec24057f1f1a59ee5d42bd024fe8e0e4f49a9a885438dbf8431132c610609dea48cdb897142a6350200c71886303a1e4713bfe40b9d317e48363792979e0df0bb0880d956ae89fc978e4e68d65e643aa7bab0fb32f6f02f0dbb43032322cc7a1e0790ffc62decc18d912c6dd5d4ac0867ba9809a12d115259c968c71757455647f3ec0b108adb3959fc2e531575de1348e90c72bfc719d226fab85579e7fa10a1892951071a6c94b2bf5722773e3834bb9a17bf886877c211104487afbfc442c1dfdae41630826384021582158af82f0e7f7125ea8e77b174e3a02e0dc5d8ac7786b3326a9b52991914e0e577269c24206b3d63b7ab77e71cc675efe8771c68b6c83f84a207c5561878842cae5d3507c3b9519d57c8eaf11098876c5dd84ac0b04167b79f83d32b21073ca834449501fc92f0fa688d8e466a2494decfe5e17a573c8870ecdc22ad6cf4a2db1bcf49117854ab365865dd686bdc53968962f70b1ef76519a6d8f4f22d70f77363b4da1b52c797c7ef0f12ee982b3c898be45de86ba317dc479ba82710f7bf25d3dd242416544b71a6965239531de664b384ac4bf27d327c12295df1cdaf62e99299242c33c326fddf09edc476228eaf375991d8ae19e56ab2acc96d358a06a405472b2dacef8eb807c3cf2d3f064566f8bce6e93ea30e7f903545327bc3251a3e9c6a1e122794baa6bb47759baba032bfe23cfb98c992d321c68c5b7ca90f4c87ba892176b67d94f7d2c740f0301f8c41997d8ef70341bc5bb1073fa24104f1451bb10d12dbf20341a3272e8a0933fe131569751d0714272871214e5e7d9ffd578ee91a1834be710fb6f5bd83c241b73f87b81fc1abef5072128979e650cd362292b923af17f2275cf441737de29715d96f5df57ef93d3b03f1bcccc8150acbb56ed238dc852f2d4aaa0f530dda2b047a62c2f0b9efd19f4ff8b62da4195086237eaf0be6370a9af9636c9c331394f37854bac2d31d7217e541a873594f9178649859231e8a7db1d94601f9a2f4c05c4541fd4d3d9762fb10d881e4bde21bdd3c818db725aa0ff9faa02378d131725808b087c4f2bdbee5c7173c6fbe1a2102c9c8ae99e8d9e5c47925459d8ed7cfa3223cc520c2be6ccb1d9165b55731bec09e0a6d112aa050f7172ae7f55b2192904ecf9f0abf582199f3579313daea313eccf38a3b7e6bc2bdc8ad08a879757679c5a6378a75035f62bd72512f0244c57f23f2a90ed9f3778a69b2161507aea4d955ba3d057a743fa733ea4f9cf096bf0f00ec9f968c2159f8be70f93cdf178baa6481aa7f50a94534be3255e1b26ecb34ab7fe9a534932d9d680b9906de03ef1c7cf4b0a0f25d83860c9934943a03801d9954d7818683d87f2b5dc93e8536e030917a005ce27f22f04c38b6f0805e7833d2bac79365f6f1fbcfbf985cf4f91a81ff4fb0dcd4408c0a81a96b4a7dcaa423cac2a5035928f00eea14c9b57a24152e648cd7e6cd9b08ad25f9a8323250be1101d3b4835e91bdba7137c9b59813c18fe0df8194636b0e5740c73604224f8df384514607bdd8714b0128a80f327b689562a381b4ae04ad6c7a4b542532a65f2519d7aa0c1cd1f39061f68a73adb92a2ef175e1b65532ab57b941127e6479152de312a598ea1cb75fbc0dc3e15f4880bdcb8c26f8692a0795a13cbbe48840d53fcaebd92ce1a640b0ab0285b4fe0e3e5d6931ca6f673290839dd5db28731d11f5556977b941e560775cf7aaf0a56cc37f4faff05a1304dc7fa0623a417c5d427010af211c6bb36ac1acee3d5b63629431004adac7a863945872b4eb3afaa809c727c51b2a50d1fb4dec11c9f382041f58af3a4f9b47afff4cab365215e83fe1bb165f6434dfca66d9fcfc30cf9fc5aa4885b9ad263b3aa8fb65761ef8f85a21eabe2536ab83fa7a95af7b105c441eba494a67185f302c1034298f532f1d4b0656dba9a108ec1b63dd61b017ba5d884d00f7a33c010ebb1a83be1e3b32d23013c37afcdfbb43c55e62cc219e3cc781cb3883535ca2a7acddcceefe2ecd886d8d362fbd1ba6154c5627bd65bcd97d0835c6b5e64211db44a3a544ef6160192bb9f68843b026e9d5f2d5d63d586598250184898af1d46af8a371a64650658b7af2844c6ad004af8d97e2e0d983075bb19fa84f30a59df03e6cc2f886ccc0ed3e8b605d961524bf04a16ee6635fd5e54ca3f4a3d10219848792898eb10690a289311f7be01b2ca4567e54fa3eba6887169000b07e12a9d379fa6d9774cdfd523cce2e2a3beba1f3690e15a5793b4577eb80202ebba9ff100be233125ce7478c3c5053e0fd482687f6e8b90535c5b9406638367a46ef9b2431bf740804dac9a69e4af64644a88a968eb8e19148a6b27d8c4fc00f9007acbec7876353da2bf8b07e42873b07430f050000800a27a726b4d0d6c2000000006bbe1900000001520a7855ea2883b61960e74bca23b78eabb483f306344799b0dfe00660aa8d3541a122a45221c33f56c0e3b8dbd30540854753c7443b303b43399338d13fa6b7570aa4182f7a1e511db2f188ce31b06e656deb6686731ef490de9a2ec9dac2c502dac6ee6865d582caf2e3a28c007915b75f920b60a79c5d95fb0534c9f79f4e6b2d2e0c60e4cbeb75c363a9cdf06cf808ba90a06159ceb450ac9be09bace2635f32d6181655d39a2b9279b753492b0723a1625922bce5722ea51527dea355f9d481b6ab51fdd8775638d7b8d188eb45f386ad5345574bbe76504ed549a2511bd924aafc67797df64c926da5f50621288e14d1d4365fcbab4e8d2d410703b060ead04e4302c8203c29f993b3869eb611598c6956bd79eacb08693e3934cb179ad36d27b66a7d25f2755c10b2d066c45f332dd331938a6aaf20bd4ff6c58c135143a04712780fbe166d3cc63fc8fe148f7aadd5d9c2f16a3b1787a90be68ab2e83b3d78b2cb89f6dd09cb262a52ede7785e253e4d38ce84c528762b2961833ab2f39d0fb42f874e1dd3fa5a6881fe0a7cfd4f247d38fe741dbe635329d786dee26ddd43a259edfa517a0e2b7810e44e9c2779c356607f5a95867a67761e25295581a183452af502be2f16ea5b0bd3e72fda361879b3021199c7cc1c6ffddbdf6f595f671f4d69b97db5e0443be93fd14c5f2ed0b85d12401cc38add9e55e66cc2de6f05e14ab549dda66bc22b01d44c25186a4da9172d43c73d936a53d85cc6b75539b4ffcbddba887be0d8ef0f1f565f3bc697dba1c030bfb5e72e2371be9d8d3c69cfcb2286dffb004486bfa19cb41e1a958806d5a0cd0722e7dee455c3548b01bb5ad7a18198c17d3df4bcf1de180f7307046e638798af33870e448614857495201b6e5ce0c5c787d8cae967c40a10381e7a1f00ae91ad10b86b08896c49f5935f3f6d5bd657b7373e0d6dca10f4632f2da46197b32d49c707d6fe964c9fadd4e186ee397e4ab492d04e15bb37bebd7574ac9d89813b5db2fa24dc94b4be2343bdf69b0e08be587727ff2a5578517962d2c21f08f67da7edc0475216d5a9c5e602d8b35a5cccdb8acefa8f68997e9094f27f0cbbc39c2d6cc6e0daf8da67bff202c622bee215f38db172413dfff0d397ad208128ee4943169c6c2f6b66978f5f85da38d227bffeeeb9ec7c987fffdc5e993af381e37d43c9c4d913ee983df576d2dc056135c686d0782e6e61c31122daf1611d1c548d76c9708e1ea19cbfca3a0da6e368210dbe36ed022f32641416070760e7506f7330102dbd9199c096208a48eeff08733c1d67879b56bbda84f51688e32c8b77e0e0d0a9771e8dba73eb961736388f825470c0da97f932478c0ad9d50abe06f375f79bbddce953355c40f71f0da2f69b6e6f399ea14a986968f12ed11166ef91f6113f950e90d49de3fe15b73a63893b7f032bf501fc33641fe06f0c409097d1a0e55f7234e12e6a1b3bdd6c58b8e00173d87a80069ed2d86597efff4903f62d329187603af917a53f9c9702e747ef489e914b79aee161282779e28dd30b592834614d4a868d2c67f2ae741ec18c583578e7b9b4eb4bb1521db31dce5068266f891b7374bb1eaf11a494bda946dcf86fe7f134e858c847f82b39851c4a9fc4985dd06795d78bed5c820d36ef1f6708c4e22ef23cc8e4eb5d5c74640b1ac3f51c385afd66222919764ee2a31f7d0b367f9eac2450d0551ad0ac9f25ad0754ed7225bdaaa3161d4efe7d15d7356c163bc6b5264dddaa1382aa8949c4b35c9e184915ea1234249c6e20b26d9e2b70b4f47c1b9aa8ddd89d982fac67dfb54076c50e4c5adc9adc17281b38f0a5e45fde5ab5af422c844fe3164da9412e2aa1216ad088394227c2cdd7ae98d1de07dc6a64efd90bacbd153f983df9ea47dfbf76f6100c96dfd58c618868b9adeea1c2c0a446e97d1e58ae742f2fdf4e0849b18e08a9d2e31b8c9023fd3c0382ef092c88672bcec3607e27198a9d38830158c7b5bba31ef6f6d08f18e4f0548b60f227990e4237ab4519b497bd4a33de99378594c1314c3185ec04cac283b2fcab08ec8a8cd37c8328272cfad1df69904e2a404e49fc72400ae99a67df7657fca8eb0182abc62132ffe09ae9aa524804c718e255bf33614ecae5dfe3d00d6661f8da69562c74988e7202da28f188602d97ba9f8c7dfe419d646e1188bf2b6e93ebf2f2d22c4ee632268d6b31d08d7e4dc8678d1eb5ce265656d73193cd2deab5cfe835c9dc35531fc8e8030000000000009f600fe22c07fd60d49559791edcf74ecef542f800ab0adcfeda49684655044ca9f016f324f52280e66fa715588170eb2365d52f2a64d90f473bd838ad2362e5a4ed3843276f7f0f68c9415269f12739af68a7666696f03433c8098ec169645473aa1113f69daa635671c658b4465d563748f86d6bb22142840f6475d683cb490052284a9ccbfc7b5290ba3191f54df22a1a1c629bd9e3c257159519d03f2add6b4a7de8fe4ca99485fd9ca354169280922eb8daabaa2a70e314c47eb5f47d871098103b22054a49578ad077b58694b351299ef5d83fdb1ea2ec5100e336f1ecb32bd1ce9518ee759ade8903dea7e5c2601759c1bf7329cd16263cf1c25d6856710580cb2e205b5d17c1b5f88c370294279339933b2478f529bbd6993e8ab20da4a1531fe479a775cab236e62ffb6e39fd33566fa63bce788de0bd45cd9dd28376fa3213677e978b268940548bf86bdda5464821686dbbaeb3755c37bfd9deccb5d5a6de3f5773e0586dc81845d2c92faeafca1eb352e3d91983ec559a22e38a161b1cdf74b279e8bbdcb93c1c1090eaecce3f8a4c34e3f4fed7319bed716bc29049206fe388a241311a5a7598b9a01fa344481d73bea81c0e7662c7dab7197be60ec577b6c4a6f9d6066645b438bdba5eb45c876871e47a9d1b392b57d4a20792bd56cff90015a4697d72cf94c6b457cad61f135626ec56a1754944a33880f608e8ec5151c5e6943f9dd94ec5091362a50ec2cbf50bc1d8653380a8c459b4011cd1daad3f0d27e76c8670968589546a5cd670e7551be03f0dd828ee45be1b2d0c6929585ee534406b9f4662fca8fe5d2791fd28212194d032b36a3fab975158613d0ab92839794f7942b25684273a82a9ee7f89219f7baff672866eb84c1b9eb998b8beb87442bc7ad01f000ff8c0d2963211437b6fae867f666c9fd9aa24de40e0e1a328d55ab0ac1e968dc0b0a041121bb81779762d2b574e933eca2c2e6a8029e409843ab0f89a27a00c6a1b4e5de6cb427bfb5d4760aae2cdb86d60f80500 diff --git a/zebra-test/src/vectors/block-main-1-687-108.txt b/zebra-test/src/vectors/block-main-1-687-108.txt new file mode 100644 index 00000000000..b2148c3085b --- /dev/null +++ b/zebra-test/src/vectors/block-main-1-687-108.txt @@ -0,0 +1 @@ +0400000098b4e4acb3c235cb2de68465719ae80c803e7f31b694c4546f5e5a00000000006e2dd8abc90559b89c6e6b85feda4e995966014462a8b95ad2636ba1c3cccef392df86ad684322de8561efa1b31ccbe5a3c5abdd17d6930e53dd35bf492350b8ee5796623ca6011ca72cd5f90000000000000000000000000000ad0000000000000000000007542efd4005017899bff2a922f3a7e8901fcf241f1cb85d8609d930c569b724981ae3a9e99313d8d52fedb2021842b00c83d30755123fa7944da3dd0f2d1862c99cfec5503669f3927153ac38f5e073fc43ba72f661ba746a220bebffe35ee5f063f2b622084ce53a39dcf3179b5626d137d84575538ff95e283952d1bc4624c416910642fb8400d8d9c9335c4e3573c7ee8f6dcb8e51d3cb4b6325da0f96314d56d708a5d6d8266e508ff36d02083358ef60dde4152082747b22c2917a25a33a455f0d506e012c4863a9d250b3f13f33a54ba6093d72430ed58dea951ed56f6c2d15f89477695191019655231854fbc1f125c3fb986a664fe8686a5700aab8a1c30b30adab98192178cbdbf43d14aeeaed117809b6f30fac70f87a5cc2d3496a6130bd133c1f621b9f9df232fe05cfd590417f7ffa54ac87b7164d88fa9fd4da47d2854f5757259594aa763268c3cd09cf46d40f8004114fc40405c50cc5f39170e6ec90b4e301d388c52aa74a591299c9d5e32e861be77b3735fc45ba3ea223b50251529c3cdb63815801d9e133aa0ec37ba6b63d671460813469ffc54868a953cbe4c3bcb5fe01c529900d63591c2c8f9072d58f92eb58e2093754bf1b29b3138c4990ffa3a9bba599b8c6202b1c5df9c4dd354f6c5201634f95b3a3c479a14d584e052b7459e567dfd49285b5d6b1d51b1ab15b7dfc2fa4257f6a1506b105c900df4f87582060fbc7c85624f26af685e91fde86352fdcf2f17787331c01295c0d0d200e2ba9110e5463d1cc04572acb01439a3ddd986df4e6216e19cf27c79933e523f81272afd0a4375e47fd55358a0de1f47c66d3954388ec62d928f65ae21343dd575f2af3df31117757f7f59ee4bee072b8d1517f4d48db1086bfdc0a4c3dc0b5d8e1cecf2476da110e5be39b2fc2767070b4856bfd4b886663d45eab8c533f357a03c9837553e4f18b9736e31e8cf58ab9d95fbd8cc70772841d38e7f07f72d4a65900b8cdaaf37ffaa9e5098551df205c42cf53e231084eb57762294f9fe81e260ebccea9b01be39a8fb36c3176c155cbe65490170ef188782d634263aa14439a1755ceced595799cd819bb76b49a1dafdd1b0e44444676322722f9fa5f7412a97c0ae460acb94865739350d512c9f9827ff2943a6b5daf3229c3996ce3644cabfadf16ae5e9d376f06b5ffd9d412608fd67820ef17d106c9705cdc12702f002b1b2f986267e7f9d601214b66c5b6c0120fd22061a1df756ffe3f921e223e43c745158d993b9cc336aecb85ce4ee11895ac84b5c0cfcb25545e5d355d0fc773f115e03f470bc1f5f5bd5d64a1c08cb184a41acb6eda604c674de54526f7f3e0c85a9166fc838a38a532d57e9000b68211253367695e93c7debe8eb367b62f5c10e15e833f934a71dff59a2ed77efb9d610743e2f82192de43cfb8533bafeb18b9518e983ae3135339d3ff85be106d5764b427fae3d22cd2d92f7c1e890dffdbe803bd7e1d63a1a8b6bfd9b0427e1b331ee953244b547cb9a270c469f63ec419aa49ee5e790c7668a83de0a84fd64f24a3a3a785057b3c98ccf52b932df062d69f0f9087846fb85908d5f1ef92555a10c2a469fccdab5d936e016e706b56db1b3d9d52e115a41ec5496163011f6cf3fed3eab27d92735c289209517b446a51c78fada6f0e1a3ec8974a444662c3e1b230a1e756d5c27eb5991b65226300e16f572afe912098509a215f4fcb2abc26c53d755b1a4554e731717b2a50344cda59994a1d44e5ff023ce33711bda51156b09924e548864c725b3d0d5f401b344445a9fcd1fc37b28ced737bdc11c947fd026e491e5cd1d2aed171654bfda8dd63d748ab7e6c8722796ace63cd18a41556e452097689bd234e797e75e07464e6b98de0206050000800a27a726b4d0d6c20000000044be1900010000000000000000000000000000000000000000000000000000000000000000ffffffff050344be1900ffffffff04f407e70e000000001976a914be62da59de8993dd79965ddd27629b1ffe55e46e88ac38c94d010000000017a91469a9f95a98fe581b6eb52841ef4806dc4402eb908740787d010000000017a914931fec54c1fea86e574462cc32013f5400b8912987286bee000000000017a914d45cb1adffb5215a42720532a076f02c7c778c9087000000050000800a27a726b4d0d6c2000000006bbe190001bb4efbfdf3418188e48cda6bf3a27c438d56f1eea919c2c8be19a896f501ddb5000000006a47304402201fd1dd841b419adecec88a917f2eb267ddf83420804f8c69ae1473c628823cae022022fa16412ab96f348462de55a0a1ac29e97d3047f57b9ba6ca87f0e6adefd1fb0121035556ffd87eda7df56cf4a1f180022e22572920d70994cb9139ba973f2a105d71ffffffff01d9f4f02c000000001976a91418ae4e28f414a29a171a922cae6fe4cad6370b3388ac0000000400008085202f8901f5834ea2b8e61b1a7c3d4452adc27424de46ebbbf76f35c3418d7a0a3eb7b570000000006a47304402200f852ca4657f4fae04e88a21d0260d07319cde79d8c2c8b4ee12375f0b5af9f702201f44df17dd9606404ade78b762d8b1c61b6514748c94961337c360cc7898afba012102fb51787a8b082f22c24ae5147769a3c5c114cf45cfdcf2af2137a0e4e0b82345feffffff02c0aee820000000001976a914fa5e366d5e983134ad61d0fef34fb6f22bb7a83088ac84030000000000001976a914c4caffc572964eeee8b27f5046fdb1e97b21386888ac00000000000000000000000000000000000000050000800a27a726b4d0d6c2000000006cbe1900017f8c6e56b86c8fcf3d84e6f3cbb094a12ff18800f157ba22403e823a4998cb7f340000006a47304402204d3f9d54cab6fb703c0cb6851cdbca1faa4d85fd0eb2ce471fb855054a04223a0220429d0983f55e260ab9c51193e118762aceb92c84fbb65b57312fe165330965160121039956d867869b5c4a38d5e75352bee899424d88c358ff5463d1e3d1380b03eae1ffffffff0168100000000000001976a91446e35b3cff7b7340bc772fd59fee62719f781d5088ac000000050000800a27a726b4d0d6c2000000006bbe1900000140420f00000000001976a9146afe1e399c083c59160fd7de99863989d8d5d39288ac01ebca1144fa95ee7ab14fdfd1d393e661764c4ece11b601d72b463c4554a926392598fc9d4253c1c361d3563bee56a362f987063bb445caa9e11d693c9ee71a2ef508a03e0763a2e10bda4c500292469fc40286fce43a68b94a7ac7adb2b3421601db33de1290511b76101de731f8542a20b427002242999028c51ba213be640783376c2f7c3b5337091aebfb4729c6e81dacd883047226ff81a919793202fc663b52ad69b48174512739edd2fad9ed26e4bb7b030f73de80dba7d8f48b0ed1f79ef0c4b9f0eb07dfac450ae4aeaa9b918210329145633de03d6ea50ffcd5c9535261de78f8f09c102b24021c21a966e00d6eaf62b83eec136b8c45109310fd7d370c15b30c3f8d5c8cb453ef72cff09e89b58ff3c8db3b36779401af170cb1f17e8e3cb50ff8beecde87c54cd5d586dfe5361ead3b722307a8722137fa30665230945d3bd55c9d0521603369cef2a6c849cd8b18a64746012279718a542564b3c798190daa4e8aeb83ac350202cd12586648d03e91aa098733294db175f041d75ba2af87824af23fb2e0556060376eb9d50bb51a66b70f0bba96a772ecffc304c544d06c736e8f27cb3f53d4f1810b8c22ab6ab5c58325b12980972c2108cf077715130e2f97d00ecc27bc24ac93e5955da9107bb3526db8c10f02ff6f073d72e876d0d604308ec8b5a4a5b8f87562da2aef5f05def5ac0f538f2907154192589cb29e8785a71f0a20272d0aede4fe7d517afa5ec9df30f429588e93d96b9fde20a336e50c324f3b766569f0cfb49cc7827e37d144a4dcb489203b008617e07da4e749295bb08c86765ab598cf58125c92fe6cddba18c5e40e67bf2b6d335d6be2c8bc28f4e29184a68722de290e66bdfcca4aa36c9d5a80e847f3bece065985103e54a71ede59e337dc996814722865b4bd25eeb6425e4747c6146f981208c0ab7e922127b89e2482ae8f861e93b7caf9b8501a5c21db0c700d774618857a7d1e542d0bddb4fdf9205995fc1738280282f5905674adb59f2d9eccdd0010e998bfb3af1b4d28bd23cf9cf9e8f1fe714494d53462764de121a5c775f19ace6d0b943ba7e4f10b58ad85de57c559adca4a8898985bd07b6ac9e72cdd0267c397c10afce133e35050333513cea216d5c936093f7d0ac94960decf1f5fb7ec7a8ec1d71fb43ad8843933017c5b33caed26a17b8d16573328460f00000000009f600fe22c07fd60d49559791edcf74ecef542f800ab0adcfeda49684655044ca7ff0e1ec83926ba6911169ea6af1f00a12b5ab85a487f5804a71e43b47b22a145718f0dbd6c1bfa811112cae4123282ad86b85ccf58f1d618c90a3beaf640d51e45d2c09c128a10e65c35219ab2e21731b89eb2443b8b60cebfdea91a9d385e0cb30f58cc7e05e3b80c53ef8cedcf48274894928c45b52627b9f40f593b29943cae4ceaa7054ba49645526a5d544723ada8287bd56119914a105a90196aeeecc74632bcb922340273e08a6e7ac93bb914f3d41c3f37e21b0f58db5fe3ac14bb760a746f4836c5110eb61b35f4a57f8cba28f08b646ebff1c0684f2f6d97563988ac3a7b98bca2a41f0d2aea55906f21833176743e0fa6d71d747011c194970880e43115d5f0f45bc1cab035610c7c383deea88fbc2d2b6bfe80ccec2541673f408b06756a46a55729633570d86db4c6b7d059cf452e709c470b329735d59770f0cade588d245e9001423e00b045354d5098bcfab11860bc6a230f57e720ccde19607631f18696b894519bdff06fcd1c0613043c70b5df4e44ce9db7686a1becb927c9eb10292c3f12c492e7531e743e97bfccf968903084d7b4cacb1330d09003bc65f6b853c1df70ff6e6c5f7972b8108bf84a9877fbe1b1ca4c130f2b76e3972c99cfac14e69b039a1ad431f5ac3f289e3e45056687534bf8392c0d1b7e9ee3860d43e2df7e62f407c2f1ca42165f8fcae6ed38ccb55e3168dcad49c22a0c00050000800a27a726b4d0d6c2000000006bbe190000fd2001c78c3300000000001976a9149498dff8a999306841148891637c7a7e846489ff88ac3fce1000000000001976a914e2c6e40f2c81d76273c606951227575484bc9f8d88ac06041400000000001976a914b35ae9b8331be18b1cac643f6f3de2be6b293a4588ac35034000000000001976a91498d678deeb742579826ca64bc0420a815c13e9f588ac5c341400000000001976a914d7ffee74e1d9750a804ed512a5a18808730bb92388ac85bc1800000000001976a914ab6951756067106f7b3a2e7ea803b9ac71894eab88acd33d2b00000000001976a914b921d264368717f021c4e98170f1cce6af5feaa288acc8a81600000000001976a914f8d4c6cb5e7070b30bea5afcf56d5276805f43e788acaa421300000000001976a914fdd05a6fec40bce35ae9f9b989a83a0ce0871ea088ac521213000000000017a914c792ada1c9dbc70cb1bb909ecead9df37a17f7c08765c71e00000000001976a914de42417101859a1f97fe83c8f184f628a0a01abe88aced2e1100000000001976a9141a8735ba195919e1f8135b92f2d563efab72469f88acb4641400000000001976a914e747e12615abf78c7aff9dabc4c5e496a6f4e1f088ace30c1000000000001976a9142afe55bd3c48073838602f49000e613a11e0ad4d88aca9421300000000001976a9143f04656d56a8186a262661d639f8c242f2f367af88acc8a81600000000001976a914ae21ccafa0f7194bab8d0f9ac7b85588a2ea230988acc8a81600000000001976a91426fbf6221d3165b18979333055918d5f5ea45b5d88ac99001b00000000001976a9143bd467c4b3b7fdeb44d17eed3881e686418dba9188ac51831c00000000001976a91447a915bcf854124815d17ab0b335e84dc6f2627788aca1ea5500000000001976a914eab54f8062ef3b17407773c5b360bb6d31d83ff788ac35ac0f00000000001976a914b8757b3a56ca4dccfec1e35184c738eb560efc1988ace89d1000000000001976a914bd56769b224a38d96aed6801c2ad8181242ade7388ac41b43700000000001976a91456b3b86a4b4a9fa31ab320dd420fc3cdf27720ad88acb3483100000000001976a91456fc590ef963374de190e7cb207d525168de5a3a88ac874b0f00000000001976a914fe5f81599d421e2d86854ed36377a999a92377d288ace89d1000000000001976a914fa642f025fbcc4c8e322c1eccf6a97d2ceeaf79988acb3483100000000001976a914568d9f52a6677022412fdaaa99deaf66d0b088c788ac95e22d00000000001976a91444abf10eceb9b509adb8bd7a1290247fac3b665188ac84bc1800000000001976a91403345e99ec235ef0a1be2343de4bdec26c13ee2f88ac96fe1000000000001976a91497ada3bc1a5c68f2982aed94df4101d93ec1784d88ac55f83900000000001976a914b1232af817f908423f8df97a17e722cfa0f855f188acdbd03500000000001976a9147df3535c88ab3b3c0e81e4b6ffff8963175419d188ac5d341400000000001976a914202bdcc00be59c06a624b8bdf9419dd5d50e92dd88ac42d01a00000000001976a9146e6ab517233a99b81a4a9b597cb99ba8e2aa048988ac35ac0f00000000001976a914235f446b6ea3f6b3026f9a7523afdf058d863c1c88acb9f51400000000001976a9144e23e70a45a0a4df88936d0a7e6c152144bacba788acc8a81600000000001976a914686d0413b72f94fd03e2c2cca54105ed4aae6f2c88ac9e5b5f00000000001976a914d82d2eae1401086b5944442867739e35d921343888acf7501200000000001976a914fd4353d682df7c14c6b36fac7429132639d791ac88ac75091700000000001976a91499b711fd899912326fa4d3c79381443a5d18b71b88ace89d1000000000001976a9144a652e609acec2ea300c90a30bda2b6557d9b61988ac308e2200000000001976a9146c5e6feb7b439a2754fd797be88ba9d2369b880488ac10261500000000001976a914369c3b4d5e51cf64cd2b1c3410fa4f0f0a19b0ec88ac01731300000000001976a914b64b9a3e66afaac929fac3cd52720bed4135e0b188ac150e4600000000001976a9147dadcd77d0612d7aa075dec042b2e2996814db5b88acba682800000000001976a9142708dcfbbb4ea31cd297feac4bf5e258b811126988ac65c71e00000000001976a91446315c1ac2a5c7181e095a2287bb4e369c68224f88ac19da9300000000001976a91463ff59fa5e384314df1ef86f044117acb9b9c42588ac0b951400000000001976a9148b712da6abb288264969aecc393a569c19d1766488acc8a81600000000001976a914150b84ceff76d9970d09ec27558fa34b6d7ae8b288ac58a31300000000001976a914cb4bb6bd1d8ded6b883aa76ab7e3d33e6973506988acf7501200000000001976a914d3dee17d914dba3710bf47f52596ed503e9db9f988ac37e96600000000001976a914b9074b11c39cfb7d4c3e10ac6eedfc86a2bf705588ac76091700000000001976a91415778e4c7c26d96fadc757195ab8fb82af44ed7d88aced2e1100000000001976a914febc2dc1ff33aa2dc15bd40e7a1f1fd70842c29088ac06041400000000001976a9148cdc734f70c81611890dc155d24364e43cf2be2e88ac76091700000000001976a914f0cbefe3f53a552acfb66769747958250656ee4c88acb9f51400000000001976a914b5ae96a69ad039e674595b9b56f33697e24660dc88acafd31300000000001976a9143e5c214fbd03b6bb8ce76457eca21e51ef7ccb2988acde7b0f00000000001976a914e23496382b153dea1e592f5f25c1f755df34743d88acfce11200000000001976a9147bf3dd1d161a559a673c64669aa9e22cb25aa9d788acf2bf1100000000001976a914a05c69c331c84f6d737ba15543b39d2544d12cef88ac88be2200000000001976a914c2b4fd151d5819c180095b643a61c826a65e8a1f88ac30723f00000000001976a91405e181e427cde3a97c49fbe60153c97e1ffb695288ac06041400000000001976a9142244e2d883c193e534c023089fd66c18d31f56b388ac95395e00000000001976a914cd3dcc2bb25082d39591bcc2cafefc3f704f59c188acaa421300000000001976a914aa811e757a67e33436bb5bde6eda34c8ca3255e088ac03593a00000000001976a914b981ca6a2d5b25b82df244edf51ff7b8cb46467c88ac874b0f00000000001976a914c61558c15c0ac08e9275a2d0601a0f9b7fc22a8688ac41d01a00000000001976a914423a452a462f4a2e1ae3dc33ecd711594bfaff6988ac35ac0f00000000001976a914152328ad667723d8ae72275197b938906e8adc2688ac566b4d00000000001976a91407790af432712bf7699a5ea7f341335a3b9ed4de88aca5b11200000000001976a9143b5a5311b0ff83e9231812d41a456fab978078d188ac3fce1000000000001976a9140a166282ee5994cab3f665dfa444c748b6b0ddad88ac4cf21b00000000001976a91462bdbe57b8fc9663829b799f636d31d246f56c9488ac01731300000000001976a9141057a1ac9ec36abe64c33b3cd8bab569aef8483788ac9b8f1100000000001976a914b1fd203179fce53dcf57788bb4fc5587cfbac32b88ac68c92800000000001976a914b278477ce091ffd3d4c03a7cce07c7072764b55988ac58a31300000000001976a9145c0f063d198feb0f20bd27af5ee7c0894a237c9c88ac445f1100000000001976a914f43494e50ad6400c8830e600a9ecff269e2bb0d488ac49f01100000000001976a914221ed99c76a1b3d9c51cff87d2d2026d65c433f988acf1a32e00000000001976a914af515568bd9cc600267050c87bdf16248b0a9f3988ac85bc1800000000001976a914e62c0556cd89bdf654df85ce9fcc00c54fef13f088ac01731300000000001976a9140ed2e04d3e14edfae7b1f14103e865f7e14f2ac088aca0201200000000001976a9144427e3bf11c196dd849d57d661fd406747d8123188acfce11200000000001976a9144a185b5a8cf52f98789420aa309e4eacc119666b88ac7c645b00000000001976a914454be93e056217cdf62e4a69631b43df21245d7488acd5cc2100000000001976a9145d4d8bdbc4dce907530474983d4ed23f73b6f15188acd0ae3400000000001976a914ef5caab3dc646bc235df5d82e5fcd397afd6c05388ac8030a900000000001976a9146c7e8b6a2d660855b2ee317b09dda22f4db543e588ac874b0f00000000001976a914980430b7d581045461b9e455d41ef84385a04db588ac5d341400000000001976a914c018833ca8e06695ce4b548612719222def3d0ff88acac283a00000000001976a914b1d7e6a710723efcb6a5366138567175f7836c6788ac1fd91600000000001976a914c5cb2f0d16da83b368753504cefb1f752949054988acdc434900000000001976a914c205f9a68c44c66ee4e248c1940cd93987341b5f88acc78c3300000000001976a914e630d1a5a92a446a75904d96e30d7b1797528d5088ac693c3c00000000001976a914df410378c57a85f9aa4362f7bdd33c9f0b935f5488ac60361e00000000001976a9149a42fdbc93c2461633a07763bcc0399bbaa3e21a88ac3a3d1000000000001976a914ed45271c12daa6a7b9783fac6acd3292286b05d088ac34902c00000000001976a914670e14b466528eaf02341fb204f1b54bfa050a7488ac9b8f1100000000001976a9140ac0f2abb2c641dd7da74a76aa91396e81da0df388acd03b2100000000001976a91440ddc2fa2800f26db32c25d63f6671925381dd0d88ac5a893a00000000001976a9148eba92e697ef86d7620489216486d21f0beb850888ac2d703500000000001976a9149a701c5b5445e79a2104ba988dac42b19b27fc6788accc746400000000001976a914f3250dccc0a9445c76b13d19f213e3f5b292ae8b88acaa421300000000001976a91457769fddeaf1e2a20d28387a60b1c1b23c7575ec88acafd31300000000001976a91447b4538867e8cc60599095dc84b6cb210c1e63a788ac9060e001000000001976a914da20e7835c5f5e624a4afa7315945a30f5f1f22188ac61006200000000001976a9144c6d4c629c373944cfe12b8fb2f3daf6348259cd88acf7501200000000001976a91476a14f0edf09bad176b52337791bd069ae4aec7588ac8c334000000000001976a91496ddd2832e15ec1b8dd79c6476d06c44b30c271d88ac5ba51d00000000001976a91418a984c63d5750123a2b01ea05e1ae54f662d96188ac3a3d1000000000001976a914a33fb2cba483c6a2fff25ab271dc454e78e3117f88ac49f01100000000001976a9140b1590da9feafa673568242375f5621e82a067b988ac15b715000000000017a914eaeb0fa81210523a6d4b43ef68b8340e4444ed5587f7501200000000001976a91445b05403eb33050021d8443b7eb3725a8df0861688aca5b11200000000001976a914259b316b2482cda4428752cc9745b3dbde190d8888ac9b8f1100000000001976a914a358cfe0e1d5f97dcfa5b5908c7dbe7755b943b688ac0a951400000000001976a914a3ae0e6376c32f18fe038f521123d10c91d6e2c588acaa421300000000001976a91487e8559be06bc7c65f9cc1bd948fc517a5d83ceb88ac3a3d1000000000001976a9141515969d88427e77fd41ed6a692d99928d4d340288ac15b71500000000001976a9145d61346ff3384ab606f21989bcd5923f83b048d788ace30c1000000000001976a91496c69132f7b58f9602a961568a5ce67bb5a7feb088ac651e4f00000000001976a9146f84d2eee8683deffc85829c3131df48550bce9f88ac07ce57000000000017a914574e1e79facfe7d2e3aafc141537aeb61700964987f2bf1100000000001976a914f3c267c33295e57bae6fb8ec19ed0b0f2c38bd6088ac14f26200000000001976a9140f883d36530c9f5bd89b182e0c1541abb9a402a288acc3171600000000001976a914971974e057d375aa879bab12f06fc7dcaf2d7c8b88ac0f261500000000001976a914d0c9231220cef0a09629433b0eda8a460c4231b088aca0201200000000001976a9140b101da47c8098e6e80a2b008072224fc798c16688acafd31300000000001976a91411bc71663b71d83823d5173e7538126c53ae72f388ac96fe1000000000001976a914e99a1af5d740caefab1daabd328fc1381891286288ac1a481600000000001976a9143096a19ed75911144dd89612fdd8332c2b40e0dc88acaf4627000000000017a9141294d6c60bbd47871228a3b8b9256075f01f9cb287e30c1000000000001976a9143a6e4451b05d3213b7beaff49accf4b26957c54688acde7b0f00000000001976a914140c7159449d22a8c82964a84780ff65270bc81288ac8a4d1900000000001976a914552053642f3e9bdc17ac9b198fcfc94dfdc4e81788ac0b9514000000000017a9146500fabeeffb177ba84fc4e12ab1af1dd1e62ae4871fd91600000000001976a914b595b60b9a3a112d9a0a090d49936a45c5db673188acc7e36300000000001976a91454ed3552ef13cea04b61545dfaa351ac7fa1afea88ac1fd91600000000001976a9140893b1fa8b5ebda8e4360996dfc08e0bacc3a8db88ac35ac0f00000000001976a91419017329d586359d3293dffb1cd0a811e205d12388ac3fce1000000000001976a91465429447591635ae47d3b2cc857af4ac6e84de7c88acbd6a3200000000001976a914c0cd651071c926ab80a2f4ce67fb901b8e296a6e88ac38ae1900000000001976a91427f9157cefb5f6036eec804f50937446c7610c0488ac3fce1000000000001976a91429ccd5d4a4449f11e8a28b4aa5b5ca5b127e852588ac8cdc0f00000000001976a914ea23f560f9f3ad1f15f3635a2a460fc6679d586488ac06041400000000001976a914b6d763fab13daf9326752aca816a866625a3927f88ac29fb1700000000001976a91491ea886287c466b3ad5775a28bedfd40b899d3fc88acd040b200000000001976a914310b9e8d5b2a5b110d59fc0f0622ed0d8402a74a88ace02dfd03000000001976a91496b6232b5ab5be57b291848c108b9342bbb9adbf88ac62c51400000000001976a914f5daa94b144c590f074b61cf871b421b2d6828f788acafd31300000000001976a914ca27a5371fec322984faf6df51a5622f92387e5f88ace97b9802000000001976a914e81fef68bce492d7e99dc7926beb0cb69a522ae488ac894d1900000000001976a9141540fa9420180d9bee4158f6079b9159a6b9ada288ac60006200000000001976a91468f44935b5bcc9147802f4cd233a5138c3bebee488ac5c341400000000001976a9140969a633efd4bd4267d29953cba474e713a1609c88ac864b0f00000000001976a914fd6f435f4df41c9a1d3eb70bd3926d595841fa3a88ac06041400000000001976a914b52bc6fc4b5375c4e7139e1baef21588cc1b107c88ac48d42e000000000017a914b73519cb04cfb6a2446a8269f5743382154a36218768c92800000000001976a914a2c5261d37e900d784d034f8d31169c100f46dfb88acd3b03e00000000001976a914321f2aaa1046cca83dc3009ba66a9cad436f9eb588acaa421300000000001976a91410f9fd8d136c389eca3ad1f7d1e0b64e62a0cdff88ac707da700000000001976a914e8c73f44c2db3274ca566356940b48f0cbf6f86e88acf7501200000000001976a91431324bc0875ab26e4fb79efe4b63415916129db788ac06041400000000001976a9144e4c1d99ad0f4df79941d76fba9738cd899fb69d88acfce11200000000001976a9149e3b1656f1e84d444048b715678332ee1b5cf7fb88ac8cdc0f00000000001976a91458a8269c35dbb56ad6dec93c64ce8852bd928c5188acad441d00000000001976a914dfd74c559658d53b60bcd34aa604de26a85213e988ac36765300000000001976a9148bfbc5bf4d404f84e470bc78de49f40f60dacc6888ac162a2900000000001976a91432d8d5de162fb4a2465fe439855226a714288f1b88acaed31300000000001976a9144fefeda9d8f3d87218239710be41757f103bf02c88ac05edc100000000001976a914b1bf31d55d809470d3d1d54e8f8c5fa8458bf1f988ac6bcb3200000000001976a9146000b6f8adf9c2984bfa5e9f1a014089e549bc1e88ac96fe1000000000001976a91489673b4704ea943a2f5d0d0e8d8f48f1bbc4c14b88ac5d341400000000001976a91428429656c35e352c2acea39a2eb4c4fabd92cc7188ac21bf3d00000000001976a9145a1990cefe87971484982f32fb78e103a67c5d9488acde7b0f000000000017a9144c49456da29bf002e2bec36dbb10aa1d8e38aff387fce11200000000001976a914547fd146003bb3be6fad811d97a78ef599897b0f88ace89d1000000000001976a914f0079e43f3d371dd303336e5e5b02ecc9666a76688ac802b1800000000001976a91446431d72eff136cbead309dd2c42f00fd6515e2a88ac5ba51d000000000017a9149137aa91637ecc8336d20996c05f206eb5a0c4ad87b4641400000000001976a914787f01965810119e15216ff8eb8d7dcf76eb39c888acf7501200000000001976a9149ef13578f3c082d5352a8216210658710d4e638c88ac3a3d1000000000001976a9140f9581d134a25248006c820189561c9a79e1db5b88acba682800000000001976a914efd13fdc9e6821f894f73fb980a5ad8caf44cd3688acf8c32500000000001976a91415367222767c23486f79b1a51127312fa8d72fca88ac96fe1000000000001976a914dd0b0782e3d99ba115d7477ec4397b3e275e42ed88acbcf71e000000000017a91497d68a1aaf2f65729153d503c9a39b608dc8366187be861500000000001976a91466aba4bd83574021008b787ae3c521740bf7877388ac4e811200000000001976a914afab2045b559adb6bd3811a9984c6bd9408c875988ace40e1a00000000001976a914d46a180d51b5eb82ceb984a40646064fdf3fc69088ac96fe1000000000001976a914b492c512e036bed9b30a45219588377798bdab0388aca20639000000000017a91428a15d04373d73d08e7dd7ba0a84b03283b4f54987e89d1000000000001976a91421d2628b70e429234b91ffb4216648b17c0b465f88ac874b0f00000000001976a91487cabe292e0ffbf7e741373bcb8082e73305e80888ace89d1000000000001976a9140387fcd749753a50b5b6cc761e6363929fc0454988acb8f51400000000001976a914fb397bb5759cb724ee03eb0e1572999c2ad5ea3888ac88be2200000000001976a91432b8df84ba6299828d82fbbae8118ec2c237778d88ac361f2300000000001976a9148fd8a961d48ba5ca1a231825868ae6a9661442e888ac6fe91f00000000001976a9141955f23d429f0597ee2e350d729a60b682b28cbe88ac149b3200000000001976a914488d3b7dbac25d9e84749e81f8d4348e9f485da088ac21bf3d00000000001976a9147d1347d2b3ef4354ae99d3a6032c8feae038437c88ac89313600000000001976a91494215043d11f80f895cb1d6dba3c8337858684ef88acf7501200000000001976a9144aae6d17e616a2836d3636f9b22acf3c20b3a89288ac1bbb2900000000001976a914710feafcecd47ab06f489640592dfc43222198b988ac37923600000000001976a914a4c71c144cac707f6e7ee9d3fe53ad8e81f022d188acf1bf1100000000001976a91491d8ec967c114c4fb146b9f8fc46208f7e8ab03588ac62737500000000001976a91406786a879f55c77b9085b9a1e9333e469c1b896d88acf7501200000000001976a914b2b9d6b0f3dacd7555343eec942bf304db9c4ffd88acb6661e00000000001976a9145b705bd64b29cee9423bc868a88ae7a0b76eaf6a88acf38ee600000000001976a914baeec0b2f64c1701774fd2ef7891ca6612a1209188ac51831c00000000001976a91438bc18a6f08570be33d87abc90149707fa86530b88acdfee2200000000001976a914e8f575d43a916290ce7dbe48d243c9798c2e53ee88acef143800000000001976a914b4e5ddf906a98aebb55165141e2dad27d07a7fb688aca0201200000000001976a914ce7723a4d45623e937a4be8838688a12f478fbee88ac1abb2900000000001976a914f22f299f400a287f0b46a78fddc03d2315e414b088ac25dd2a00000000001976a91454141457da0df6bcdff7b7b7a1906bce4d255cb688ac638f5800000000001976a91408e875e92bb77d4d1b56778decece027ad7e874f88aced2e1100000000001976a9149ccb2f7b749041c52ee84d62bafd122db4f3c1a488ace30c1000000000001976a914935031f62446145c845a22a7554e457cb9dd2ccf88ace89d1000000000001976a914aae9ad50a2a6c40036856840c2d1a01cde561b5488ac71cf4600000000001976a9141f26bfc08f7a020c2139630e6a4fd8a3f58cf3a088ac06041400000000001976a9143a780dadb2176c7f9f963dc726b29faa815dcc8988ac9b8f1100000000001976a91460ca72d0b14c340cfd856bcb8e11186b39fdffe988ac1fd91600000000001976a914a3c38ab718686dcd3a79dbd52681ab8a9323b51988ac9b8f1100000000001976a9141405c98ed4cfe338718ae4d6816a7f639f4e907c88aca0201200000000001976a9146cc5790cda1333b465d1791f68de0e0c7aaf6b8288ac6c3e4600000000001976a91490dfe98218f9f106cbcdeb4d304367dec18d14e788ac2cfd2100000000001976a914f6665f192030dcef13207005a995a5ad2378e0d188ac4e811200000000001976a914036a546bb687270b49f06cc73b1beca23e74f0d188ac8cdc0f00000000001976a914000dfa96cbcfa1123b2e47cccc02aa9ced268f1088ac445f1100000000001976a9140283ece05072aa7347b13067bd031ac86744bfb988ac42d01a00000000001976a914c51f6f172d074b9374a622f0566df6eeb8a0d2e488ac0d7b3b00000000001976a91480c64ac24b908efac5ce8b293ed48527ab3a8f7888ac331d1900000000001976a914e7e7d2478be0aa6ec0cab3d61286104d250902db88ac797e3400000000001976a914e6daf2ef2ec359ae53cf8b91d939a757e566666088ac29524800000000001976a914a8a61d9a26f187057d8352055e4f0526908e667388acafd31300000000001976a914a1f89a1b95eee70e503efcdbfc1c2cffdfc6628a88ac0c082800000000001976a91468168b61041488079ae7f2a28928be2e4970dfd188ac8a4d1900000000001976a914c91a3636acf9cb9f6d22040fb4c198666e949f8c88ac802b1800000000001976a9146745e62ee3bea2d18484ab6db681bc67298090fe88ac192c3300000000001976a9144ec0ef56cc750a78b8bc51fde6dc9424b6e4bb3e88acc8a81600000000001976a914a1772a061c90ba4de6004e3fce9c1bac87972b1f88acb9f51400000000001976a914ed320259144dc4fbf238a5bbf718e87c0037dff988accd391700000000001976a9149ff0084f96f08be53142f627a3284196c80203bc88acf7501200000000001976a91424b1cc8cd620f15f405f668d9af2c2a620f8ca5f88ac946f1a00000000001976a9143ff2c3a93152031afe84f7c1fda10ae68ed740e788acebf64a00000000001976a9148e4dc41ff273c5197c5e156690d1052b10a0aa6988aca7973900000000001976a91457b4f8277cc400d64293c0a1b755e1a3b22fd39088ac90a85d00000000001976a9141a5a629f870674b06a4d2d8861fc6b7e929a7f2188ac5d341400000000001976a914b577789a9cd381afef75ebe40c93d1588d0142c588aca5084300000000001976a914796f3dfaed1f667b219789429660020d8302af7188ac71781600000000001976a91496076d6ad853c7c63917694b862dcee9fc2a6ccd88acc91b2a00000000001976a914975d769547163536d2a13f75e45f09f8dc2beead88acbd861500000000001976a91402a5d05b537ebe3c261f5aedbd99b7beb311e80d88acc3171600000000001976a9144b3d92cfbf29e253fe9efee4b4f9f7d4a5824e6c88ac4e811200000000001976a91491576ccec06905f138721f4bc31afec3cab7329a88acb8d93100000000001976a914de82497f43b3a79cb7af5c3750c64cb6bb7590f788accc1d3400000000001976a9140bcadb7ee5dc0f211dbf32c74e1ce90f0010d50d88ac874b0f00000000001976a9143b8419d59c3d686496aa3ab5b63ada8ef0803aae88ac4d652f00000000001976a91431fd33d7e699f35ff69b52779c3432a105490e8888aca0201200000000001976a914ea6939c47d169c479c377376a3bdf9827f4a836a88ac01731300000000001976a9142c79abf19fbe67a290a2209e7294a2e6d0007cac88ac916d1000000000001976a9140ab4c7058b94f9878d5c1b883450e5b44f0f1b4188acde7b0f00000000001976a914699eb35d3f2dfb6bc4e978cf5f97379f305c3cae88acf2bf1100000000001976a9147f40876342c65c38659788d05b2fab9822911ea988acafd31300000000001976a914f12f3364d32ba8ebc7ecc2d74b32588262cf2a9988aca9421300000000001976a914c3a64db70abf98802442cb5219108ae037a1faf388ac9b8f1100000000001976a9141a529a3bccf749faecb90b17698e9a8b3a631af088ace89d1000000000001976a91450a1248b25483671ba67c6ffdc0bba3969b833df88ac06041400000000001976a9146d5e82f3f19ca4c1c595035f88dea55ad055d3f988acfd542600000000001976a914b54fa93b47b991b4a5364c6f87513a578f92c7c988ac49f01100000000001976a914327cb6e2cc9b870e94f68d84f737157bee7cf60e88ac3a3d1000000000001976a9147bfaebd011e8f7c7cd627d24fddbf2aa244f5a5c88aced2e1100000000001976a914a59df10bf8d3a8a1a3b7a3ac99efcf9ad6d0672888ac9b022500000000001976a9146f9397a1131599d8c6e99c3f9cb6913227309f4388ac3fce1000000000001976a9144468860de68406410417f5ad312252827e4557d888ac99001b00000000001976a9144af58cf1526f390e52a470bd21457cbd5e6846c988acfbe11200000000001976a91426dbd3aa5ce67233b0438ec73095ef1ac393dbde88ac21db2000000000001976a914d0d129cb65aa6f912ade3af319021f904d55139288acc8a816000000000017a914ab7b46b0f22dfe32f64b9eded5f2a90c6b3f383f87e89d1000000000001976a9144972be56f824fc603d2303f3a7c18835144fb5dc88acbd6a3200000000001976a914533fce7419a41ca3ad7a62fbe4ab2b6bb8e67e4d88ac7f0f3500000000001976a9149e2cbb4c62dff5a3f507bb0d3a2af0dc2219b14088acf5c11b00000000001976a914e5eaadca3ff3a16fe36ba4905945a40e76a4048c88ac3fce1000000000001976a914cc85155d7fcbde0f4ceeb6b19e75f56adc8451b588ac35ac0f00000000001976a914bcb1a95fc52366670c52a3e43d3330411ca78d1b88ac03866833110abfa970fc784cfb801dbd22ef38e087319ce195b3f4bc02bceba25bd5f0017e134dd1dc75dfc38cdcf7496bef7e25bbde04685919c897757d95c2bfa4b7bd88bef71964e974f1afdec41ddea62f4cf64ef3a79f67ef4b5b675d6ca74c8e78640f1bff5b3148a5ca94ac0a5913ee47e1aa57ec816454d3e950da9fd06aa4a3b8124bc3f6e5205e75ac33fe1955db14780d323fe14e2b386e9b5bfd6a1c2d41b250ff2624cbcbe587cd0487d522959058bd4f85243e0e2f02c6d04ed19788572d026ec2e559ec531b0f321978ddfbb5ddfc5f751d30e6793d9ec299366dfa6eae9bbee0980cee87ee5fd56166930a62a08b44cd0055a64e68feb57a7693bda6f2cb81d0c3d4a228d9fa67c4f8ac8e8081b1ed8e5c07f9b63d7e3749c301e63bcc690d9ef91f4a1e281cc92104690eb88d9803fc459bc0a57aba06f539ecd212cddc9f9a0f8cc074587e76378d1205bee7efbe97e4aa73629c1bb10dbc53124418a34997c642dd63294acded0b3bc1ba8cbc43b9d8564fb601b0332017aed04dc5d160a9e11b0f3b243591a74d81518fd5c52768625808debf3f00c63d6b04c2ca355d061982065d85e9555c9e6518d232f51a474b6b77878b8b27c35c93fcd1cb2532489df5d783572511af0e015ee9977a093170feedeac0487e54d7b65d4818de0c2cd82fcac933ae402d306c523493dc4f68a990ee733df2a136a6b97c6c691fa490c12767c4abc1bf9a1d70627f841a55828d9cd28ce67ab45ca748cf51dfdac4adf2b87aa33f506533bbb912b350a9cc90a06e31b5a0f20ed3d3940f284a933bb0c8e57e04f74d0c97a1cba5234949f18113322cac6a6c2d4dba651367c6936bab018b7c69afc4c1562b253aaafee3a5c3d636ed45d5fb11e86c4d2cc6b43705690dfc9dacba24c5953da85ca380b59a93b81c13f99aee5157f6c9b132775344d8c69de434a517b419d8b3d2fbafcc6c938c0db8b8cc280e91668a9347d7a1780262cd8de56dd401894cfff7b9a4c75da856cadddaab0fa508e62cf920079c1dd81e32dbde50932fa7fad47f05994edb94f63302401b8477b1e190a7bd5888b16727dbfa2e9881c9c8d8e89a561ea78001ae86011b0a6c1e18776e2e4748858aab6b6bc4781131471e67e0981822d5bd865635ec956b999da293878c488d2d7b72131db603fcbc58dbfc9c81daafc5188e75d5ed6a3c523db29c37d5f02ddc25c963fdecd8f2f744708070ec1674b0cc008a9d8dc338db87b1b9067683dc2134a8389a7cf44f8127eb5023f15d3fcfd2d0afc7f8dd729e8b923345b04baab6e5f7c9af0fc33275d2164e0d8ea401e53bfffab56c45d5f21bbac9590661455048a6d68dfc9fad1e8648c592bcca0493f081c5cdee4a29eb7f6b18be26a4e2c55f468929bc7a953078906b0a07e09cc228bc35dc983c21bcf01e8c61e12bcdb7c6668e61b9319c75a456c9d35818d74c0fedcd2f000000009f600fe22c07fd60d49559791edcf74ecef542f800ab0adcfeda49684655044caf7aa78f475d354d14c5fe34c5b4afcf58d8b4fa2bd36d3e058d37fba0870a69bc22db11f4cec38e006f39c7187231718f46b48f7dc2ae556c6ed32b80c08e392499e0f491a812f818fba3de4d4ea6d279d9e97460124f492bc81a4d56bc6a3005c82b108386f10902f94d245e0df76f8b58d1bfb8fbb870bfa4592f6065b9d1d02e3ec65ed5b89e7b18379adb33bfe3981c1b9d96c3e8111f791975fc678cddd01c6c1d04763f33c1349d989356eb21a5625793d76c620619354418a7bab07eace29d319420643374dcc96d334555738a8c753ef690097923b19f6686c3a98021e9d3e2e56eac50a0aad0756c57af06a7f9cc6a28d648711be3eff91bed4bdc94b06b42174b18068795f350b5b9f8a29d3dc38a3816fe887f80dfbfb255885f0cdd33ee02e72a1baff294d5464c31e56aae698c6a652c84689c0e76e1d803a371c390b85ff6bcebd687a28097967495972183d4be90f5155ffe2be9c3264195c081759b7ae154bd65e436f7afca010156eb88d85cd7ec66910a58a24509698f8494f3d294584aba588904bbbd7f939b21ec5c08bb0a8a2e94b701d49d817a496f0b52beef2cedd8a6a1f4d119f3c3d8b03fc71abddec4474b358a4fd747326887dd39119ca87d5e208f980ebfaf51a2003f15bb1070b246d71382b119377cb018ea132f79e548666aeff872066901914336378caa830c53c370c4b44e9cefc72116c61322718a700c094be44463715cb24a140a7442e3f29697b598ea96e1facc0a0ff086b8a1a2c99a3745591447ae52858708997e28503f4c3177af600ea42ef5f84a40fe7f19592f5a48f6f644514ac4bf3e3678e89160cca9405185e7ccea9c7aada93fc0d16a586e1059ece86e432e8477058c28dcfccae9f655ec3d0b50c6814f369aa34f76f7956e41c6f24ed02479fb1eaeae652516919dabec83cace4c8977485d3f245d37b51638ec44b82d89a435d5869ca4e314ffaa3638c30498ed5dabaa9ffd5f351c9608067465a59e3aa1cded617d53e6c36d66a8eab96c6ab052dd99e40c1760e55c94102bd7b4c11d104656a4974b4b5476e711c6bc08b93c4a4398deee0c37f1cb1c4bb8f4d321d0c58f07224e25c28208a34c29226699df7b048501b2dd4bb2f36cf535a77daf49f0c3474d8cf51c9b8fc02a9091a4d1f8fed04ee6ca26663707c478c4032164948fa3b40996a7530e2334870b114e18c3dea917fb57b52b704af0085b958bec9b5b9df6d227489c5ed8ecd8b2250ac2c667fdf2608f6c25b079fcf55d268ab6b2cd149e65a4480028174d7160007e2e86ebb77d0fe04fd450d808e3cbeb22e6390cc2af327b8e043e13392541ee9b1cc37f6b83f6704ed24687ed9cb4e3e33c9604c2ef647257371a0530e5dad1e19b40740094df42ab32c3c6d22e1795233a5660eaca43139b5bac090b6b57590700 diff --git a/zebra-test/src/vectors/block-main-1-687-113.txt b/zebra-test/src/vectors/block-main-1-687-113.txt new file mode 100644 index 00000000000..b324b5c7b9d --- /dev/null +++ b/zebra-test/src/vectors/block-main-1-687-113.txt @@ -0,0 +1 @@ +040000001050bde9a9d19bc62ff3658f913d45f0f4281df3b48046866725c70000000000ec67050cb9403acb2711cfe6979696620d82704d3d77e72cb0b406052c0b086fd9edad081c143ea88bc168bae99bd5312d75115dfec94fbb2642236154da07bc455b966252c2011ce6b4d8d30000000000000000000000000000bd000000000000000000400072aefd4005005c22f4c112be1bd420f2e7c4a4de1d80a85207ea03e711e4c9d4c4d5a9ab27729d4993921be89b03b41655a7303dcc06b7b643a22da4bc1770c177c9b33829d1155bc6a7f34bc92bc81fe17ae632ee6df87903021de11fc688aafb7d23d9fbf9df3242950e5932cc182e1a64be1a7b63cc78245b59ac9e8fa1e6bd1cdc12f2362cb745723b4878a19b214bab3dd2a8afd0d917d912632109ef13d70548ba81e48782b8ab77da2c032c3098bd37666dc69e968f95531733bb193fae0c11e3c8f9c4ce34027d48e22b767c3be20c257f1c4c08d0ebf8f5b8019dedae51df37d23fd1dee437e13f138b0e64e1742a6fbb1344a3d6759b69af2cb20fd606f26e07e09fecb5d44c712d7b5fcc12c5f3b68b6f3152cebb5db88d0de6c0072d4355f74df9fa1aa4201010068af124834dc390f394b946a90d255eb7270c4f2bacd26d1a1b97a3a1d6c252bb2ceaabccd6c71f00d5b388f70a50fb5d0731211f70b6dc7605f3853c0f581b54d71653776671c2ae86244299bf236e80661e4b5a6fe58ebfe3ef198365e4304ab19da8f7d96e5aea87dfb0d991a5d48656ad0f5c6e1f43f59e6fe3066b475f822f0363f3db51b3cf660530fd9c50425e0e600e0f65cadfd3526ad39c39cc3c49471b9f3ce922864ce061c917b706b31462ed623b6a74a2fcb06772ce2ffa07a07dffe48fd837afc3202a8b5f348a1102da377e3b69920bf35db08498d6c27ee0015c49ce4ed512abb9ad094deee37c31906ac23382921c334b16c7a63c6ed6982f386c367d33f5948a7e55dffb5b4a43bfc66514557563d80669d8e40a75c1c95ddd7409c299babd52bff356bad22e09fa4ec2495af893640e6b41d899095addc880f0f47ba3778c4474295b1d1b8b5370bf63c905304a1385cf71343713b97afe351c9571ca6830187bd128720e42f9df1232e21c47bb010b21cc629cc4afe14e81bb7b125bd99f0fd806952f139f72a06ff521cde9b60e70e80629f712d0f5660efe8271bf84e1a6ec3433cb8cf4674fcc37bfe97815becd38398b7adf5a8e649e1033b28247fff9f3480bf0371a628c4811fa1de44988da17a1a5ed57fd31143adee54d4b596cf5f3464efa4f07b2ec62fb55a92afec1f8f312c8309d2c333022531a9a997697da3b56496ec120976d1f1d36657245b166aa3075f84da206f6e297ed0eff45b2ab00b88cd0cb79412e2b26a80f157e29be0b5339b25181606a19ee090020af412331d025d8ea5cc897a3d49633cab6c5edb696f58e1e413c0c7d9e60c3052a93d8819bcfe2efc24c9f742607608c136ca2b915494b431335f414657034124a3b1caf8e0dc7a55085b0e3f309ffea5b4a17731d32d029059771e4a592a3aad7f2ef6f3c1e01986c1289ac705c6504dc605b439d1868fe227a547b2cf97c6b2501b93bd4f39c5ff3d1dfb58f02da4012a44d562d752825db009d9b3388fb68e6f32b4bc4926e8f15debc027186688ea3c34d6f85b1505513f52229481fec014e484fe1ff3102fde455f4f2d456871e1df57d4384035063b6d05a4d3f258d733d03cb63c69e6d76a1680c18ae6543171dcb50e2c185b08fb3411fe74edc511b6b524e5ea58b9b508f2686847e029a72bcd9dfb62249bbf47e6e3debe63184b2d3f01b4561ccac8f630215d2f18fc414d025e4117a5c8cfc11cf46df918730d9fa0736d6ad9dc5c34324dd4bc22df4e87572870cfd1df826859cb6a4ffa0dbd0c31d2692cd5f68483ca3ef85c16dc091b46096538259356efc6a7a8cdd02dcba247181d2985f33313be252b9ba66697613d2219f274174707f45ae1ca7be63f543d2e2a8bcc09116532ea6580f0d750381b4cdbe29a3d5ba78afdc692dcb0b5be6eda427ebb255086ddf401d70dfffd84d0a050000800a27a726b4d0d6c20000000049be1900010000000000000000000000000000000000000000000000000000000000000000ffffffff050349be1900ffffffff04ea9de70e000000001976a914fb8a6a4c11cb216ce21f9f371dfc9271a469bd6d88ac38c94d010000000017a91469a9f95a98fe581b6eb52841ef4806dc4402eb908740787d010000000017a914931fec54c1fea86e574462cc32013f5400b8912987286bee000000000017a914d45cb1adffb5215a42720532a076f02c7c778c9087000000050000800a27a726b4d0d6c20000000070be190001888a7d0474f328c5073836dbffb0f2a74cfc1c8c8ed33525142c3693a0bfa55a000000006b483045022100955ccb6e88cd14327b8d34a4ec2cb957f217859e44073a664a1ed9e2af43c39102204cd30d92670620955a99a0fd2dd0ef32474d1999170a1aa2f20b7904f13fab23012102d1fa4e08b6e9622b06ddc204ae4de7b280cb8ca805f6b6eca453b368f7310b6effffffff0238462219000000001976a9145cb734a2e6aeb4a12b515fd05cca9886fe9b835288acca8e01c0000000001976a914ab44c888b255afc402a3155278dc5fcc3f73d33788ac000000050000800a27a726b4d0d6c20000000071be1900013d9df03181fbd9b85bf86d0837838e8e70bc5abd42a6326e491b99a3fa879433010000006a47304402204193899272d6895fb500fa99718df2d120edc94d9b1bf703408c26ce628f9301022010208b02a019a5082bf1e7b001660296f8033f35cca083438a0ae82c00a58326012102d94ad3dea436a4b1978cc8056dfba00f0339b053d9f29db5ef2252b911dadc4d0000000002ec4ff205000000001976a914abf774f7bac868b1c1adaea7423ac06f2e55d0a088ac3470f905000000001976a9147715466809c5f3aa32acbbd8caa402df0defdd9388ac000000050000800a27a726b4d0d6c200000000000000000ab5fb59ed0335ab00ce9666f562e1df8360206035c1dfe628696c8a16229c0288580000006a473044022043acb8060d0fff6ca04314f9caa8b61b4054a65e0fa245746f0a6513a4bcd96c022052c3b1a877ffe468e623aab46bf0f8b6d84cfaa3f3d6f40c007f4134c74beff00121027e8997981a6bba0b6eaa7bee18aced9dae9274f4683a09e7ddcb8e734a8f0b67ffffffff995af943083ad30ec061d5796898b39d5e483deb8978e575249bce0f165b843f140000006a473044022052771d333cd355299bc397ce54b4e49da541f4639ccea7e50b0050ea3c03f99a0220337003ab3ec4a526f6a93d2495057554c6e2bc339713645bbcc896e0ab49520a01210385551d1e1ec5578eebf68f6d11c54a65b572e422dcba996453d80613a02b6511ffffffff808762b37690b5d8ea2c1de05448c14a92ee463c2bc245cbd4ece956a8918d89130000006a47304402207c0160eb2eed5e07bfe6e6b63ef9433f87b38f005bda517af6dac38703ce1e8f02202febe3df1840425592d2ec74e66a90f553128bed797a3c288ceba2ffaba4754c012103075c15170f9fb229e296dd1b4064b87ac72603bff22d00f7d458acabc7e0f271ffffffffe1d23420cf7ab3ad812d4268700f8c350298a2d74656f390e097c21c3f7384c77d0000006a47304402201d549817b739277a187a81aabce1e465c42528a531acd2a147e3258f18ba846602203610c5e62447a69ccc031745b10113ac22d0ca0aca27cc18d7bc2aefab440a420121027980718b0451e87494a93c3b32461ecd4ab3c4245ef6136f5d1c94a403855914ffffffff28dcd00dce9b52901994c4e50f805e721cf281619b54ae5b3cd78c3d1fadfcdf010000006b483045022100cbdcbbd85c151ae18d9d381a7415ebf4ba9dac9b33b3956a37f1df4ff87fec8d02204bb6536dbead9537963186e895ed91c77a00159f2b0148190ec37d8251763c3c012103e99d5d2ed04e15ac6bfbbaea0e08963ae783087144d74a9f5c2588d109ae7984ffffffff1e1570b8177b4ff1db9560af54f76bac836cc133b01da6b7b96a151bc40d2c06fb0000006a47304402201cb445fe94362788df6a92c43f2f76da0681f3f62df85ddb93041eba4ae075f602207a53c2834dcc9333c1bab78b1f25801a604ba17a87237410adb4913c7bb0447d012103ecce3efc1c9e1f6d942b4132a817fa4ab1c63ec4af6a862f1cd4cfff8317b3acffffffff9030a91745a48b206d1bcfabaf36609923faad745bc468672fa15c52d5042cf03e0000006a473044022003962f5b5de77d93ee90922943889b8cd1fb0bfe09e916303e9df681e69ae2a702200e365104a73edcce1c5edc89e1bf5f00f02d3454465fdba483a4f3bdfbb5cfc9012103f1ccd8a305edb0c43bb512f8bcadf52a77d3bb48773f55eb4268a9ac6a50504dffffffff70a55f11c089269e2d2e992c99b89c1edfb7e2bc1add6f60fa4665dbdb38d9e8000000006a473044022055364ee6bd71962631e072d3c654faa5c6c5e4bba0464fbbbde529f7ee8e4fd002204ac802fe5370b94dbd877e842c7cb1f5cb2706acee6d861527b2820f79aa47be01210324b0003c0e48113f72451c266bb574e17e9cc2999750dce679ef88980c407f4fffffffffe1d23420cf7ab3ad812d4268700f8c350298a2d74656f390e097c21c3f7384c7390000006a47304402203c11c47bd75c2555a0594bbbd6af1fe722527175b1d2f1e373c126873f4b19b202201c5ec23058f9c82ebe7406ee0813c4a9bf175641218bd62c301aa4ae9817e3fe0121033685ed67a38cae5ba4be48471b014b1939d53f4e9e090b96fe3dacf601ca72acffffffffe1d23420cf7ab3ad812d4268700f8c350298a2d74656f390e097c21c3f7384c7580000006b483045022100fa0c14fa2b6f7c379379759bad14b38a404e2b52a82b46b10e9a7814a506f3f502206640785ab6e41fe5dc797d8f7c34f2fdb880db0ccee407005b46da700d1c6c47012103d4ebd2cc011d473cafd9af884b488c57c1647c9339a2ad3a0de615773ec8d0a5ffffffff02002d3101000000001976a914f70b7705062c530c1cb54f7383efd9cd4dc41c7488ac17d54405000000001976a914dd3afab4f5b964a6f9c817e4afc5c4526aa5b3df88ac000000050000800a27a726b4d0d6c20000000070be19000179b5c3cfe568d6feca8e04e364bb87e3b391361808e69fd1177aba3c3355640f000000006b483045022100ec0791928e08d083c53520cb95a4c49f114741e7c018530c346ce0161ae2ac6302200da2921df7c01bc65f0f3360c547f6957fdff028df8962b2f803d546c7edd587012103fc3ab693ff3944b869807ac49adb3b5494c4d5411a324c65592a7613d31924c7ffffffff02405ec28f000000001976a9149090d542ab9c9c478431bf48589f26a2f55944af88ac608b7800000000001976a91422543267268af703dcf5163a96de8790e991c76c88ac000000050000800a27a726b4d0d6c200000000000000000a2f2b629c5a7901ad080d8ccd7afa6581de31affb813d2fdc36b52cb0a75816645b0000006a473044022078a3c636f72b241194b8bc96e433acd2c6d7e9f8e2d3e6e0fb3e6806d5d9d4d602207e014310b007e442569ced397df45d847137ac51ed62f3302b8fd9dfc3b286bd0121027e8997981a6bba0b6eaa7bee18aced9dae9274f4683a09e7ddcb8e734a8f0b67ffffffffe8be89c3c08262adfd4e5cf8cc2a8a320ae6b632133006b855b040ee33f96b1f190000006b483045022100e846f191039adf5632eabe508a8ec6ae5a57479121692ec78aa3cce0eeef05c3022028a86d2942c0a44447ad889a2bc67de1e58f22c1b2ac988b61554e40089e002501210240c16478809f4fff37c343678a10480474a4822cc30b5ce3f7d3279c803abfcbffffffff8cb21e523c49df69e798d3a216e43a5392241544f6679546546d351c24b01a51030000006b483045022100bb4139a8f801aa5a931462dd5372c9ee3edbb6a06a9d5866823cd5168e3d2aeb02207043dbee770b46c10a38abf0fca747fa7eb8aa40de627deb3fd9c810c55b291d012102f878d6fa41ec39aeae84c6567dc9b1b4a571f34e47596db1a79fcde564b5225cfffffffffa83bf29d0ac4395d026c83b4160484f50daf0915984a1bf3a97207e605b09d4100000006a47304402206f8b718787ac69c5d4caf097b93b4e2646c9bf7572ea13b0a4fbf5d2f2d1809802205271b88e9f571585e8043af06e4e31c8552da699a954f739fff0c95ee9016b0c0121023daa5c1237e0c699aa1d7406898845b8c731c41122206e898718f54984bb1552ffffffff5bdf544d0fd1c66e6840553d01abe292db4f450153dac117b78ac28dc7e1a6b3190000006a47304402200fcf80baabc92ea465c09757bda613ee9c233f94cd7ebd69969752c403d394760220495a16ea2ca0a8b1d804ab68a8c9c3baa6acc588acc59feba45d5c2e41422ea30121030282cbf4a4c0dd219384040fa7d2e22580a72828af95b815ddb59976d40424b6fffffffffa83bf29d0ac4395d026c83b4160484f50daf0915984a1bf3a97207e605b09d40f0000006b4830450221009cc954c32ff75ec0db365b4c90bf9cede262d5023a3dea1eb0cceb871d9917d5022010502197d9275824c638fafa2111a0a1d9ae36d74b34fc558b93e1d262c51027012103d7f7b859e6a1939feecf1449d7db7018bd2ced07d2509e50f2218e19f2b36e01ffffffff91b7b575488d5eee39a6e384d107caba4981db421ad7bcd4ca30aa96c79373262f0200006b483045022100a46652257d634c1f5a677b649e24ed65e78ccaaea952e1fe5f1f640f56f53788022006c4095ca0898804a568ed1a35fbfe22cd05321b0ef300e2f0ae237b4942b13f0121038f84877466f68b4a090250a3423c07d37bf7de1b483e03bd9322ce5642cdf48bfffffffff2a54e87d786a432f1ff5442753b3ba2d5e7dfb1ea68ac6a8dd7ef5094b10a55010000006a473044022036ece05aea445f23a03d8994730ddfbbc209e870b5d160d008809357dd714ee702201dcd01597310df7b271ea42c2b97eb7bb09c5d1db87ae76aed013943b0dbfa65012103e99d5d2ed04e15ac6bfbbaea0e08963ae783087144d74a9f5c2588d109ae7984ffffffff232aa4c6b3039bd7dd2d445547656124eac040c403d23bd504edb10922363b553d0000006a47304402205d28a40bd85a7790122d5176279300e97e402d0435aa22bc15e8f5e5cd51e69f02204ad718042b7e9fb84dadf6fae4c3cc213c8ab61478343ddb235e1dceb3ac4d85012103a2e8b2e49d4109159ef82639d9d801fa893d105b7f61c1f3f866195afb8091f7ffffffffa320f2c751a3827cedbef6edd5a2bfce678e366066a6ecf0961f2cf2da8edee1130000006b48304502210095f8a8d0e6aa33ae0e8f66dd16173c7cc7ebac5cb9722ddaeca5fa69a76a21e80220531203e252524fedd661efde70bd96063525a115659903cfa0b3f2ee074374e10121028cecb2f549c3b45dcd99c2fb11207699f87e7901df6c92ebb4ca341a95eb45b8ffffffff01af4ced08000000001976a914dd3afab4f5b964a6f9c817e4afc5c4526aa5b3df88ac00018e372d87209b934ec7bcc4f77511cdc0746a66652cc43cd02c93a5550091e9de8917787084cc9ded469977124f988a1de8624016866b32d3822859263cf56a1635d7772632a34cb55f45fbee5d2c21da233219d92a7a4c6cea456b95bcda42d51883576d92aeeb5df75a199e2f52d0ff9856169327be41f4c95fd4891e74c11eaaffa272ad14330e15da0e2aaae3feaff0e2b5d45443c8d9168557a77fb70956f3205002851c56d58f8ae6741783580717c31c9605210b596b34aee7a42f59caadf90074ae8ac74b5d19cf62cbc0090576531796a9b01a6f2513b302770dc70d7b4306b7e6033a2edc25c44f0696f19073549ad08f93c75abacbfa4adad14809908002a5d9c8a69387ab4e7ae5503c39803d483fb23f1b927d2f37297a1a81890dd7f5b742b05de7145a8aa1313b45e74497799ef2a7ed4c0beca781541a20c9270bb78048c172214a0398209d6e5baa1a84aa06867c40a37c6a965c869b4edc49b76b41cd1715cca70d8dfe2103b7bc21880b38c89cf3494a9740a36037400b320d79e9d4fe50bc60a2a5798dcee3e0592d1b9adee1ed102dc047d39afbba0f44b65dc889ef9cd856017781142f9bb78cd88a1c3137078a00b3db40ba17a9e4196b517454058f69228380d4e4d91c2d1d22e3dcb6780193f129c2c83c4fcd1b2be309d39a1fc8274ceccd478d424e6de736936ab20672bba2bb49f2883913dd871496323805589d48b964ed94b467e69b6f0eca6c7cb460de35275eb432afe28fbd9b371b6c31828d77566754aa63b47a30016be8d654fd818a42bd747f188d34d8ebcc13557eb7b011a349579020d46812c1e8a6e3c94606ddd0f863423a6cfde61d62b192208be1b8e9875d23bafb5ef87f9da8109073db57b0669a94d906269cdf67da49ca99547096ac4ebb0e918e331434d62d58d1eb5da75cc5a08ca741f280966b72495e630e322bfef3f7d285699429524d0d4104a5afb4e5e84d2dd6e5b3c8cbd053c57b9fe5662fd395650bd56ea999dbc229cd622560b4d45c201a02efe5c05e6419e81d61d05ac26581645c28fc00d3cefeffffffff876b4874502a1894e87bf567a80a303497ae06269a2ae02652c6e537038ec85e2af2b7e734dcd25bbee197d4e4f88049938c67bb2f5b1d01798e37ff1eff8a4353e61a6c3c508621df39b495eeb74b0517f1d1c68e2b4fe0f82e0c7fc9ca670e050da8263bf2c36878ee9332a685b36b140fb06103b48d633d7f170de5236c40fbbd4560fc09a3a538e63b193e7b6443b3f1a5268bd7f6fd2e6ae34213c9444482854f2f656e45f641f2edfda76c89b279e0a409bfb69aa403dd95c1a96f6aad1a1599248f4631da8a05d66c8d0843d49dd7e5c3ebe109fa58c3597b845cb13c45736107821361ed44fa2a5941bb013a578ebfd7642b2dfd9cb92d0e1ffb880300050000800a27a726b4d0d6c2ddbd190071be1900017f9d63110bd91dfa70949ad5f1adbe892e4063128678485fdd673aa854d0f425030000006a473044022002d464070913148b7cf765333ca05e23ac88e77692c8d68fb98b86b57329133102206f622d7fa8124a4de61aade388e0098f7dbac1d701ac2032ce632691e75cdcba0121038c705bb34a9cf95c5ccf54b9ee34e79a2a51226e862f8b5cedbf5cc69ddd2419feffffff02656494a8000000001976a914c3831db1ebeaf65110464e03e78eecf21e67643d88ac3789c80c000000001976a914c6d4036106a6018cab574de8cc0e8329b7dcf0fb88ac000000050000800a27a726b4d0d6c2000000006fbe1900019c4f7221e7b8a35b9f52f6dda574b124c9e6f571bdc6bff19b907009d14d69ac000000006a47304402205b0787f10e7575e11a50276a9a7f57a2670abbfb1e7d6546e83d5fcfae0ce03f0220660a2852a6151bc0ab6c1d2106e5c6c6f70ce6be03475a204b119836ce3030eb0121035556ffd87eda7df56cf4a1f180022e22572920d70994cb9139ba973f2a105d71ffffffff0141b9f02c000000001976a91418ae4e28f414a29a171a922cae6fe4cad6370b3388ac000000050000800a27a726b4d0d6c20000000071be1900000001fe0bba7368bd4dda33ac35620b7197e2d34b53b5d90a1618f4f665bce04e1208ca4c6ace6b84cc41bade7ade973a5eddb5fb92c3e8a014f885687c8743e641321585baf3f9566388b4e6350a50ad4dafa543ac213fa64d888d54aae4a3f97839022553424b2b81824c700ade5fa016f00f7ba6d35f7c2f76530c18e4eeaa8df76b2487e416558e0d7726bd89ed3c8c3c48b2d77bcee489bdd22cd6ec00da320f29ba969733c0e1aadbb60e2ed6ef0acf8553699766b33f5ba51eaf771f6ad556e2a298a8c421073d067f94b24428bc67c3a12fb08f2d3af834edbe6a0a352b1b00aec36020b15cb637cca95d3830c773d98d9f9ef4745ae68e50b8a2db63bba2abd3bfa50c544302a53b84fc7c3e339c016947f5f59f94cf9188507c60bc405205f24c730fec48c31f048b3becc247425d4ab775c1ccf17f72cd21b80ac74a91408294fade496c2c8127bef72577c2c367e3a6591850e1ea105f29e4132657416293d6949e23dcd3cbc54292c95167c8044aab2da065fc48844031595c185a142972255694124e1980494c5efad56f34ef08042099adf620b723b0b6fd4c3e2c08a9d92013a97c164c5e65f5800d1573d7bae422d9cdf387ec1a494cdd5d22dcd89ed752ed6cc7e0449c8a2f5c965ae81ec824984913704b8bc892986abaabc8f90e0974145ac94761487addfd0103d4e230875b5fefc228b821ae358d0f8233e68df3ef8f24f25e13d2ff5a92ae77aec9986ed1ccca769832b2f3fe05e52ae61264dbda263375c044daaadeb01eca638a480bc0a5965b28258a48b4e1e1f98430847c7441c241a093ca28f951eb4f1b6941777507e1698aee18ac1230d8e4e7db67e31ebdc59cd9aa7bf6b58494a3577cace332253225dc8a1a57bb5e6710c955fa6bd6781c9a4fbfb336c118697ac7b1d243c29ae4f017c9885bda70494178c21a4c82b322349b55a16b88617130a9a6224a7c70e55df82db599a8b046d43d9d0b5b0ed91b06d9e62696b1e5f43526e8f7c3aec0d60e7165f5a9a17bd02677f24a1ee03358cb7dd7c77ac85cdc6394cdb867026fb70d1108279fd089927b29b77a4e13e09e534e774efbbdab1ffabdfe5446a8894854005c6e79dbfa2fb27b3ae0013b04ca202b9ea34bc3bfafe81a0c0dc7c38dc78882df0c0782d9e308dd3b2c92a7b2f49a26c1150515bc14186816ccc151d2f416dd9fc5892bfab127837636b6201cfe12cc5f9b59233552e0df0e772492049cd182188a7c9a4b96943003606a5aeef5b34436408dc2cad15cce3a70747450c7387779c5651db55f582d878dff3ff108387519621b531f9429369ffdd379ca37fa51783939ab6d32cbfd442a0af06bfc7abf4045c061a733f5fab7451862bbf7e4b525c5a918ac6ccbe82c71b244442a574a63e09eb896a69ec308fdd00d5db19b0ed13bc2a29d3d8bec4040e5b9361a8d36f118b50cf6e0eb913ffc77a8c35b803fadcbf8c4ddca826420a3f9e1df889412abba5d9093b81479f600d4449a463c840693c8d9f8787cc44ad7f7ab4d78d9dcfcfaa023f43f84fed9bb224099461cee0d8e6b9cbf475a06f7f267f0aa2f25b8d7d55d445802e0f343e3f165884aaa7c3bb79107a836bb80370aa3e9d14134361c6e4449746d7378a27d116c21f29316c1652750d167c8f5840ed22b6bc06f5190f599f05963f9599538b92115caf4b118f2d87eeb6e0304cb5eabf63658abcde27bb408115f103e9cf9b24e9db500f934fa763a515ce55d34e1ab09022754a6058f7d2832fc374de6ee1a244d3f0bc105cfdff00994d3150e3828b618ffe750368c0a83b5aedf0934078a13c28803deab11da46815e3bfbed7d7c1c231766a39a483d24be9248343b0e8cd841e3299591c0a135c5ca20ebef4caae51474840ceb4d925ab524e8ecda879350870ca4519422b7f2e02327d5a9c48927ab4ad470c586ccb047876218bbf25a81462bd66adddb0d7eeb62ce71a913ad3de807722f994e32eb591946844ff0b901834fbbfb63460ca79e67d3b6a746aa26115bfd9fb9333696e0e85afacac21c87abc157f48198df493d7808891bf350473218805e1d3c792d2e7ecc597e051620a218b7e62d3182bd18b5ff5a87170366a8afc1fc303ce01c07149eed04b2f20990438fb21e9ebcced54fe924247e0b928de9b720addb160c127958e9dbd6af52da0ae3a3886212bd3e7c4f6bb5c9130bd3bb24a1402c0d2b8204ef24bcb3a5a4cb24f947896dbb5519fcaca240cf0a84e24015969ce803000000000000222cc1ad097e2d5e1a2ae16d4f046bfa932ada7607130724711910dfe5ce4a398ee25686cc8ef938633b8070e43ddcee79afd8f5abf3b5bdaf22b14754b701d15738cf76d40c0ecf17dee25d458f935badb3508368168ecaa60ea220b20f2a9fafc310d2b72d790e5da65983d5cad987f6799f057aedafb4726910fbbf5c1fbb11dcea4048737e456476690cca7aca43e57a1589441e0706f83933ff79b0fda73f1abf5178fd9269778737c18588e76bb7fbacffcec7ff844e3911cab5193983ce6ff7f02a7f64fe594f11c129d919893376d11ae6872175752127ed690ea6728e1fdad42d3fe21e00495b6f607f87c47111bbc9a4ebaedb968e08053386942d1eae138508374039d27a1fe30451432aa69bb0732b0c678dd93d7e60713ee008af7d7fdfd722e0867568bd9666b18b173c0a4913769016cddee1fc9efce860c2e101c6e3748d161c15590560f1b85944a361ae59e8120c9820b58f3e9635deb307e3f8b0a5b94225507b442b78a6046f688231a3cc7f68e42f0d194ba144b70e0fa63ccf7083c9d16b39f90aec39f3e533c7332f8085aea1425055845d3d3f68d06d48debb3af22eef1fa2bb4a78e68e83e66bba2d84b594d3b4a83063dfc596c9cf6c28ac0eb5410517efd1b8ac75d8b4ff6db2ff792a3c1e733722079d65bea3a1601fe228f854ba18a51d49fd2d721ada25a7428652e2722a2c5f5dfafe6eec75b7b37efef4bb3201f649115f8219b890c231d03ed58ec18d5ba51e60a1a72a93214cae04a5f5f6820cc51b8713703c7f2d65d64d23076f5011a4f294971304c81e3e0f88bec49a4fa6726dccd22a4d5759f7f5c015518fed2cacabd79753ce0e6a6530d143ee5b48118dd5c86018abfcdddf0efebfd0d262dbb7c42a6b4cb5959877b9501771dd575bab70626bd5ea7d232671680f3cd269c8e5b3d769cc654da5115209c80c79f7f12646a2ed22ae876220ae323fb4b8d1ecfd24d0a9e0fbbff14c10e0b94391d475edfb0c531495e57101850ff679f3ba8bab7debef0900050000800a27a726b4d0d6c20000000071be1900000001160da523c3e51c6072ff34801fc0c2f62995f40ad09e2f8064ed4cbaadda3900558bd6c32b8deb1912c777ea38f973e439f281987aed08f5784734b2249748d55a8c3869ce586216e0f357cc7d2292d6e1938a0217b4fb98781b5380b7ba9c1b02212b7c58d8c62f1a56f9fed6acbe6295ee3552ceb936dd244c82aabdd4193ade8dfac9d004ca4a6aa5eea8ceaaeeef967edd638c61dd22b00d00677b4ef6d66e64f6229e36d75ca28ee0e08de83a119203451f5cc3a15bbe99abe02dad926667b360d1289e8ac6c68ae59526e6a20969960ee128254720f0611cb1b70ab2edc6245e9580cb3ca982eab1e39d8544f752678477e0ac783480466adf17a2d1e84cae30c972774d40882556a8f81cdbabd3342628c351920aef41061deab9b6a8953a8389b7e64a10c0e63b5082e08c8e18edf3a49ba5ce755b031de56c062f27004fabbbba47871b2d068728b0b4a5fba3e968e3233553a066d6868e9de1280c0a36a96628e6dc4ff772af6dfe39369277fbc6348aba00476e07d1e300dd94de97d88760cdecf055b57f42ccbf2af94aac375f97be8371dc166748b7f41251cda3f7b07ec32ca3cd3c2a4508d2e9a82ae2e34a64866d8c6d35f69092c033f6e1b4c3f5c9f8910d8315947ef74a7bf59c6da025de7c0c4d6f11c13768af62e7383f0306b3f6baa210ba199dcb3195ab25b5db29718c7ffe86bce04b9b74bfe374fd464d5d3e84bc2cd2da8bcc1e01cd1f58e22a81a7448183a4c28eecbcc2678cabe16ad43d34597789bb7e97eecc2007843254542f1d839a5a2dfb646bbe5952b112810a7156b642109929ec10f5e1fd0f4a2771b50480d154c7da82ce5ef6e5e88e9764a5f3dc101feffe3eec14c95f37d379d5876c84150c67ea31ef75c230df098c6c683cebc45ac5ff6f65279e04dd70f3d34e1eca39ba5c8f6492482ad0fbad304c669c017e2d916ab67cf6b38a0bf7ff4eb71843853105f1a7fae28f3169910ac0bebdc67d4b2ff12cf80e4f844f10cf98aef86ab69184f682f3eb7d0f1c8964772924dd144e2d4887adebc3c07224870934806cce46ce5c2df3a7346a5c22b16df70c02dbdaee5c7bc93c8b4209d8ba43fbc4bbe6e79ed99384fb87afe531e810a4038afce51c5c9eb717635283d9d98fbdb27381849f9278658f272a1e3f3dfcb01ec4f5a3b86f8b811f3aad055c056b0aa0f7d5cca78ab0e17d4b0c1946236874b61937802a654c65053015860958739382574f94b87bc8cf1c89a45a4edd2ad307305b7dc891cb8aa3f628ddc8a0df64a4131fef14a8a6fcc0c8bacbdb896c72443b45880d90c4ce965ebb232f7825abcd833fa9fceddaf2d00b8bbde4b8fda530fdad10be6db724510fe149f0e1e522201920220e803c5a12d54dd3d69c08d66efbf3216991cf20b0ab7dd94159c552aac3102f009577fcc6a9ff1e3288b3847a2d07094f1df2e62e4ca2d4b633d9dd1bbfdcb36fa9b6693f0933f70dcd6689d3deb8fdc89463e3cb5c28fc95a8de79a26c643dfe2812fae8480a77fada34e471db12711253cb73f2bff1f3a633ac7f8fdfea4cffe73f233209455749530bfcb40682f772f44a21bae2551144e88f6f1688aa6ede149f0365e8efae70e54b588b5ffd6451b17e725fa9c219969b1a311ae7c8351fa4ad5bb155fc15c5772d19e8b24eaf485dd83567ca65b43df4ef0fd72658e0930f1678b7c0d150ab6332f32b2509081fec6650864a1738f81e09bb81c664d61c8137ab13280c9cd51d80a806028184b521f8fb8ce490f844f35cc94690f41fb3a02fe2de928cb11cc64b7d81930bf642ff8e539ea204a35463d7c08c9d30385845284d238e6092d2c824d2b7af35796f2bbae16f4d9febe5698453753cb751f3d8f9d550b663a623d15124b6f950dfcc57a9d4e1c4ad6898e1e6c3e157c04a0a622280f57848f8a2a1d98123b52acf3c5b18a28c749a5f58a72a23ddfb5e1dc2193fe19f4e50edf22bb2d6282204fe16c5b3ffb53091e0f469cfedb4f2917b10219715bb535d0285dcbd72824d1296fd6ad2f89deec22216a02c65c65debfe497b20c9444f4167342837d5f766da0251776da0aaf69b6c8b89276fe537099c67ee17afb4237e291a376d7f0d0f59b8b304825771456e56427ec29a62b266381fcb2c80a5deece686064d92e82f3df425a00e0a9ae9cd3a538527318d76bb5cd7f3e30616b7ffab22bb5fb3f225020810bfbab34ae71fcc3321e56d3d3e916d8ef905a0f0181748e4fb5911ce00464ee803000000000000222cc1ad097e2d5e1a2ae16d4f046bfa932ada7607130724711910dfe5ce4a39a11b201b41e199ddd5775223e1d1b3241d3d6924f2a8b9b8df7373dc7298c0be601aa14724449918d10ecc179ff0e048ae3db6980fa529e5d053fdd950ce4a9d9bdd04b52c76a68191c60876fd60ef5e5ef8491b69bc0a75c9b192feea90d49a06f7e5d9a0492f5406de2600674d078c02cc89f27151a1be1e36421672801fed615701e11c96fc94e69e3747de340f26b62b231e70dbed617570bdc87291348f2f39d76fde767b4ead7a015aba6f3b1c676b4424a7add9c0119d3f79abd935277aa6831db6187bb1a6c5455e3267708abfa3ee629b4d545d2eec3c695327d5e2151d6d37a20197af6bfd1bdd407a5f2cdefbf5dcb2df621cad331181fe102205ab60f1cf0fe92d793af5d27781bcd399c4d3b87b670fd3a2bbb16680d6ffc148dac511e08e48e6ed274011107c177a8aae500c1fec386018a7ddccbeebc20a8fdfed6b78390f6c831a37dddcc4e8494a5c2b3848ed7b3f0ad0fc04be5ec1c48c0b008e6101158d9b2eb8e69eb6c7e81cebf40c4d01ffd45b8604a823f6e834f9780a9b087fc66696bd70e2c20ff646e080b40b3d03e00d5f53a36dc44f85984623b636ef0122b6d4d50d002eb17b50a2650aef21a2e5297cc809a3bb31f8c963a9a6c98e59cbf65daf9c7e467d054955c0120e0d7b2b1a4ff172fbc15a73b186a700619c8a118d4a9d42e4c4cfd8e7868dc0cbc089fc8dcf9ed35a8180376eb9b750a5537a3ef790bfbd5e0828be4b845ffbf4d369dc8aad6d0410bb1db3ccf7179d71a9ce7afda2d23fe033cf9f2ff2f582f324d049edf7088b61232723750154121e60d0bb4a5f5223c8fbf49f888882cd93ce1a7e05552b7d22438da5fb64d292ff23fa7ec2093c3b4708b4817bc26983dbc4d1e8125000e31c498a1c7bd2f19aeb109985e3802a3503b98309cacaecc90e1a1d88fd74cf59fb0e169ff8a213ada5c7a717edb518b410e7619b1b4c002aabad55fc3079c406feabf760eb0000 diff --git a/zebra-test/src/vectors/block-main-1-687-118.txt b/zebra-test/src/vectors/block-main-1-687-118.txt new file mode 100644 index 00000000000..7bfc6623a00 --- /dev/null +++ b/zebra-test/src/vectors/block-main-1-687-118.txt @@ -0,0 +1 @@ +040000005376f61e8b5453e3bdc4a63bb5d0d647e430a58290304b6e7e220a0100000000bd923ec19bebae32c6d061ca7561fbbd54e3daa9b696b81f5726551549b791b82053ed35b6b50554f2aff1ee3693d76db006d13e69bcb237b046663f584ae3b9b95c9662f0da011c3000eda300000000000000000000000000005000000000000000000000001d69fd4005002e06a2f8d847ecd8a460f0374b4b3ec7ed39a32d49a7cd7da8333e51df88c518436d7b9954c99912a002b256eefb9a3cf52188d1df3fa7c6bdbbd97229e409f7646eeaa5f77da54a128f895abcbe618754bbde060ad1f1c9150bed6855631350af5e55bc35b7a4b81b6f2e5d28d45ca93401545f45ecadaa3cc31d6c4b1f2fb68621e5a5c967c695dfb7bef826093db32c5a6979acf50de05d493bf7586234dcc44a25b518ecb301eed414755b325754d39c303e6215036ad25ddfac0f07c36e3ae9ee9986b3b670f3b730f305a3d88d07179a359199f08025a335d2489c573b078f3b9f7dab203067d5f4621373f71ef4e099f1fb22331d7d6cf70715d4ecb0193ed7b088c16b3958ed4d39bccab59124a88ca9538decec7f21b5c6dcd1aa820dd214d01f12091d6999883df3d035d35fd6e3439df601dd82f91236052018475725106f73cddba1f7a1548d90a34b0175cc926c4b1bc9c645b1479f75f29070ef0fceb7223faa3ef2d0132bca21551db65568dfaf8d5fd69912367fba5655bf3bb128c38179acb79a319ad9e4c64531aacba36fa4fdc4f4b4cebfcee91ae2497f07430b988d9fdaa6d6b1bdd05139cba94660b05cbf33f73ea4fa513db33d9bbb6c44d518eba5fdc644f0fc894c352e643b5d7aad4ada1887e4e6f33abfe15caa9589746c88b7f1f335f97188d3f6fc4b935ebfdf282c02ef3122285f46ff39f325e9bee82abe689ddcc0e45d0033854ca612ad49b7a622f6738545e72d3d1d30174e041cdbe976015803c2059a76f1f1e83ab51a0e257adb06eb607143cfdb75d25db12c25efbf94b65204ffc43126d02272f7a051cb5b74dc98de7339f4e77d297e2128a2e2a5d6de687fc96a4ed351853f454313bf16cead88c757c2accc6edf6db907399eba5997173959c8b7666c4fb8f983fb727d3d5201329e7ca6011ef17d2117b7f73948b1bbc621e90a279fdfe7e512fcadb8204c370b2fae44f80761d701d38374bc0803aa76ee050aed8d598995808269800a05513954ca25dfabdeaedcd5838dedf391253bcdf566579c84350ea7fd1c0dda6017b89da66c55491a4da52bba3b97294624f0aba7174b5b6764117d42dd223c26bf264e102d91c2134ad98d1d67f27300fb394159be3484621826bdd5cc230f0f51aaf1c12cecb5ceb26c9d517e01286c39cd60dd2755c140e0d3b37492073f92da4f131a0f1ac3d96acae85e55b3807601daca1edad5511b57af5a47d14a4d28bd148966de945b85215fd3d74b33e29086a0138b078498befe61458789265fa4f709a9d3422c235905215cf34b7be8cee6c62cdfe55f0e4a2daf644c2d3d842fd6e6fbe4cffef44bb8521d126f34501996bbf4dcff23eab879575e976036cd5a232c52b39a1f28c9d0f255ead0f1dbda1fa91bb30f081a26f6f3ac5313c145e515145466ba3d27f386a51980b988a21e5574f5fdb620aa6f8729dc50ffad5208e597c5a60db75c82b170b285ea0e11cc02b4a7d40d06b3176fc7e7e36630f2349e5da11649e939e0ba091323040d0260f99cc077e54944986234a0db6bc81b6dfa06224fb9ab8b67e1b72f57c0514d972d5a66179b556b171513e9ea570190b2fef2bf0d78b9205e46c71ff27e279faf5f0d16119cd9e83a57e8791b950b529cf94f04972389b7e4be4aae9b15c86ffc3bf614ac68af4228d563c34eb179a4286741d7b48f2a8348b3a6a85d1845d10eaa1560392b4ceac92dfd9aff4f83353b8e605c6d9ab4678714693f9237b393845b15a588b20924b2a7d8afd36ad0596966462672f340346feec61c634cb7f1a0e41be75f683988891104e2178cceceabd88de99258618a0a7b01fcbf281f191a4451ab0d7e64d1bf29161cbc2a7b2cb7e5777f445e08050000800a27a726b4d0d6c2000000004ebe1900010000000000000000000000000000000000000000000000000000000000000000ffffffff05034ebe1900ffffffff04df7ee80e000000001976a9145c38e5e20b62bbb5683dd68677ac3715047341ea88ac38c94d010000000017a91469a9f95a98fe581b6eb52841ef4806dc4402eb908740787d010000000017a914931fec54c1fea86e574462cc32013f5400b8912987286bee000000000017a914d45cb1adffb5215a42720532a076f02c7c778c9087000000050000800a27a726b4d0d6c243be190076be1900014633befb183f8bfa772e58e7cd751c3de08cec2c890df2e8a183ff4fe2178a34010000006a47304402207ead07bfd21eae3793aa93b59bafce98b8ceffecb8fca9df435030e43b1e89d502205343b36e04a7838bd42c3d63cc7db51e912036b27cada7906270de69ed7d691001210269dc30578ad9e95a2507fa76c6e79d8fb7579c73690aed7cd54fe94d3405a246feffffff03f4470300000000001976a914dcd42062f0ad04dc1f4b4b1e0800311cefc4aa9d88accf410300000000001976a914011fd5b3ebeb3405ea1d9c7fdf2b50d93f05458d88ac08898402000000001976a914056ca47461dcc0e7a9a77e754c5efb047c609ddc88ac000000050000800a27a726b4d0d6c20000000076be190001d7c1d36bbf1ec167a96de8294d00f9a1c4648eb92c3f38b7a37226656daec71c000000006b483045022100b8686d336e3a2a7d859485c7dd6b627dcdc4cee90fe7b342bbed6ecffd922d82022004903ad43771bce0e57f8a10386a77e83bf43160b4780b677e6b4071801eb4890121035556ffd87eda7df56cf4a1f180022e22572920d70994cb9139ba973f2a105d71ffffffff0241f8ef0c000000001976a9147063948e537dca1f9410ad33e792a2dbe990755d88ac603aff1f000000001976a91418ae4e28f414a29a171a922cae6fe4cad6370b3388ac0000000400008085202f8901a1e72b1c875ac2c3ed981957ac5786b918dda980d28dcf5d7b8d572b1995f079000000006a473044022062048e047574f1204aa3ecd56bf80ead631c38fb20d18b4f71ef19f5217b371602204fa9a1a8b3ca071a800611bd5af9c2fb0fba1b3166e038e8335e948ed78f95ad0121039e88036afd89b82bf78a4b277dfc1d5713cee411096a65a7d49c172a35093718feffffff01bf81d7030000000017a91443474abdff119f6a0315d8abe47f9aa671018c498700000000000000000000000000000000000000050000800a27a726b4d0d6c243be190076be1900017f8c6e56b86c8fcf3d84e6f3cbb094a12ff18800f157ba22403e823a4998cb7f1a0000006a4730440220109920ec91d5ca28f9e0db961ca7c1515993e46df94e960e11501a838b9eddb502206da76a7eec81355d8c96985736654715cd9e1daa50e4e0f63d12d5a8c824b049012103989c75fb77bba163b0b0d93389b9751aae16e91226dbd02448f834fe19220bc5feffffffd35e0b0000000000001976a914665bc06b2fee5acc0eb0c5f21e70a235d0e0a7f788acc0080000000000001976a914d053fc7119c8140b5c76bf067ccb191d82effb8a88ac6a180000000000001976a914d052cdda5464c446238f445b18d64ee8750fc79188ac0a0f0000000000001976a9140dbf37f3161e3cc95769f58065d2e9b26725253a88ac6e140000000000001976a9142e6503896cd81448caff2984db9147cee0a256c188ac680b0000000000001976a9146d006216df836ae063e94e4186f91040726cf86888ac880e0000000000001976a9145b4716be3637feac6605d0c8091b293ab5708cc988ac180b0000000000001976a9141b4842efa72b0ce51f61f6088b2b5b9d719ba84e88ac0a0f0000000000001976a914ed1be71d635d7d72b1999694de2b5ac5b539ce2388ac66080000000000001976a914be1496e0dda62ce6ceeacec4178d54e4a8da75bd88acda380000000000001976a9149f54bf1c69f66b2a7945450a282b4857336dbdfe88ac420e0000000000001976a91492c39cfcc4653a0d68b3e2d1d561ddc9dec09b2388acae310000000000001976a9147b583104d342d90d60ad874d180d8d32c7d777e388ac7a170000000000001976a9141c8a8d4aabc1936b3f455384553b810e6b57dcd188acfc0d0000000000001976a9145f57da07958ba018501f31af31d0699d28d2542288ac9a100000000000001976a914d4ea9383392ff0b1fe66dd27940c477f7c69d08588aca6090000000000001976a914d137062f3bb63b035e56761980a41bc63c4eab7688acfa000000000000001976a91401146851843fdbaec3c1daf49e70cacda6b1c9d288acd8090000000000001976a9144fdf4a96b393f1cf16d628c18132a6f355d110cb88ac24090000000000001976a91442765d96387ac910b2f5a73a1aaf8b5dfcb0de2688acfa000000000000001976a914ddf415b3d7bb0c7cc98ee0412093fa192ea43c8c88ac04100000000000001976a9146bfcbfb7cf8f8b09fad77aad55cf5bf2abd78caf88ac900b0000000000001976a914751630440deb39394451e2f55238999f75c329cf88ac0e0b0000000000001976a9140ba5a02222e082f4f5c3f5251de7c6e2712fdc0988acb0090000000000001976a914430b18303d6f66b53a7e093b94b8b234bf1d1def88ac120c0000000000001976a914549cf3eac51f6026af85b006c96602ff3d7724ce88acf0000000000000001976a9140f5cbd0a20d3dabad664488171b396102d9bad0888ac8c0a0000000000001976a914501a6672bd4c3308a61f52bdf0f47fbc02dadb9888ac70080000000000001976a9146b23b2537250fe5cbf2e42dd872d01e528e434d988acfa000000000000001976a914c04a6895790aaa4d62d6ab161ffaa1c5eb74cf8588ac1e0a0000000000001976a91410b7dccde70977a61fb66fa822c26fe1467ea42d88acdc000000000000001976a91472e6256345700c56115515738fee3d605c3658af88ac34080000000000001976a9149d8892b355500d125e14f8da7e97980c826ee58588ac3e080000000000001976a9147c1bc9304fdcd89c060b42e920b126ad1517f53a88ac7a0d0000000000001976a91428377978a793dd91e7c5bad253afe74a882a278588ac34390000000000001976a9149b539a4cabb57efe891714c0ec4ca35560d9588f88ac64300000000000001976a9148d3171d08361c18e24344a9edd8b327c16317e2d88ac080c0000000000001976a91496d9fd422567c478011055fc2b3cd7a65483cb7988acdc0f0000000000001976a9140139d95b52f0f708e71bf1cbd8c99455599d067688ac2c1a0000000000001976a914c288db31151a2618573235695bf90a9efd66f16d88ac8e390000000000001976a914502f1c6481d47ed28832cb8bb554f0188723154d88aca8070000000000001976a914aebe8c2b05e1bb7038c5ed97c40ddb83e63c029f88ac12160000000000001976a914f7c731938f4a28a51bd10304f8f7e51d841a615b88aca8070000000000001976a914857b2e67d92b8c48492e80548bd4be9319d0093b88ac0c080000000000001976a9145580f5f3fd4c71c7285440f3293a01344c242fcb88ac9e070000000000001976a914d40989866cbdd40265524391309230014b26806f88ac820f0000000000001976a9143e4443c129987de8abc4fbbc0497b26b676ea34688ac20390000000000001976a9146c9d999ecc7c96274882c3905cdf97f62f8b785f88acee110000000000001976a9144099b5c7005aaaf47d905a833db4a2a2edbb536788ac6e0a0000000000001976a9141c9e242ff1e8fc2ee6353956f15518bf9a90f4f188acd2000000000000001976a914b22c1c2fdf2cd5d1325ba4cfb5b2e2418f3112cc88ac20120000000000001976a914285edcf4f1c9933c3af655b3f9f73fd8f975a6d988acfa000000000000001976a914ff1d04c8cb1489815ed607e7a2c85c4274d7959888ac9e070000000000001976a9148f4fc719766bf667ac66b951c3fe83839ad950dc88acc1040000000000001976a9142a3bda68d7c2f875e707e2723bf8c0532ff4360188ac40100000000000001976a914e7afaaa99387bee5b83b29fd060395a42de038b588ace35c0000000000001976a9143b8c90759743afee1b814c57a414c46fc075992288ac4a1000000000000017a914b8048422dc286534fd257bf17648cfde2997f9e38720170000000000001976a914c562eee981c2219b4637701f140dc81ee23f959388ac80380000000000001976a914afc318322b41ee532d9cb4af3bfaee274aad3db788acf0000000000000001976a91427b402155e23b2fef56e808b4c1bdec5583cb0e488aca6090000000000001976a914814a415b3e71ab2a1b5b7d5c42d3f42a3176d87988ac0a3b0000000000001976a914c7458da14c9db8140056b4192f7bd02f49a131c888ac120c0000000000001976a9148c0acfbe24c769e8b5472efa9d1be2a221b9d6a188ac06090000000000001976a9141b61be3dfc2977e0b6bde56c67b404397695f17588acf8160000000000001976a9140ae69623692468f6f2a839fb8abfaed8f3c16b1b88ac80110000000000001976a91489e1c65b5e1cf7d5008453bd80cd03b1b8a7b89288ac5e150000000000001976a914d3ccd876d2d73561e4799107167da0625e7dcacc88aca4010000000000001976a914557594eb5ce917000542d04caa2e5c3322d8a7c088acd2000000000000001976a9147793bedc9db922d70c58c6f41f2bd97c05d157b988ac3a0c0000000000001976a9146c95a8ff72070a10741c3f86c5d99b7efef14d7c88ac0c080000000000001976a9147f3250098d18312d98cf0043c1a28c7f2ab5f32b88acf6d81439000000001976a914578c1aa05fbc01a6fa54ab6ae85897843ce86ab088ac72100000000000001976a91438e2c5db7b908c100a60482eee04c600ba20e45988ac7e3a0000000000001976a914af31f840fda761a9cfb80d6e06137bbe356801c488ac24090000000000001976a9145f5a36f12db55a09658a2cb4dd0c5734f491251a88ac84120000000000001976a914a8651caec1c15bf481a6b6798ecc04af126fcf7488acd2000000000000001976a914bdd21b5b6fc94461b028353b013d4418c92a63dd88aca0140000000000001976a914f4d48d6287d56f2243e5f7b8f8dac1ce327f0d6d88ac18010000000000001976a9148481be2c2338de4f5a0f4d5e5a16bdb49e4c9ccb88ac2c010000000000001976a91483cf5d1d541d869296bee9accbad25a16b7e238b88ac72100000000000001976a9144f5aec527e5725390eff041108dcee7513fa6df988acfa000000000000001976a914694a799ea6924d8f1d91b3edf8886090b5debe9e88aca00f0000000000001976a914756ed47c6348e2105015310b635b5ae5556e9d2d88ac04010000000000001976a9145165e1a9a8436584b942399008ae401e7e01dac388acb2070000000000001976a9146d9c01d7a2648cf140a93de6dfcacae3615c66da88ac0c120000000000001976a9143cf48613c3601bed975e6a49f9e723c6e0a50da488acb41e0000000000001976a9144b6ac5a72cc882349c048d97380fb441e858e1d988ac18100000000000001976a914f8ccdce71ae8ec427502f9db8e6fa559585d751d88ac655d0000000000001976a91457238e5c566820c90718c6884445a09d9206040888acfa000000000000001976a9146a6dbbb2b7631eece68f23b431d043fccc6a0be588ac4c0e0000000000001976a914009099bceed0dfd00eb4df571779b59bc5c64b6988ac2a0d0000000000001976a914d50f08040f864df9a2395626a85f8645cb13da7788acf4150000000000001976a91410a2d4b23851383b45344babd0bfd46403be593788ac80160000000000001976a914fc88e1d072e39dce4ca647f115828f4fb4bb535a88acf63a0000000000001976a914b8562cc385a4daea565d549ca22e5181fea866dd88ac020d0000000000001976a91426382c263e99684082e1475f6ae8af06c708cd6688ac1e140000000000001976a9146670278d5f07b50cc54ae974ef1ba62ca7f5899088acda070000000000001976a91462ae229312fa63fb81e077d2720889f83f804de788ac4e0c0000000000001976a91446933c3f6315005fbb2320bc4410f129ffb8cfb988acb80b0000000000001976a914c048c84b918c086261e36b5c26d1ee63e4c210bb88ac84120000000000001976a914d1aff76360aae3c1600392f4a3ea5999f6eeec8a88ac9c090000000000001976a914ebb6f17c58cbff22cd295b47406ece389647f51788acac0d0000000000001976a9146bb822f9b392e32cc0fe0874d28f5e0dd416246888acf5590000000000001976a9145e1b00521047954974af87212272258b789a68ad88acf00f0000000000001976a9142f589c49a6b90dee756876533a89a176357513fc88ace9040000000000001976a9147a557b673a45a255ff21f3746846c28c1b1e53b988ac2c010000000000001976a914679ed58615cb040c1863d97f91c6221b3969b7eb88ac080c0000000000001976a914fefab0b01dd038123afc81af571fb001c317af3e88acce0e0000000000001976a9140788d51ab8671d9f59680c94e7bd80734d8e7dce88ac04010000000000001976a91419465565c88d7df9c739daa8472bf78299e58a2388ac320a0000000000001976a914dbaa634ded0a8043ab2c55a8673857d339ca525588ac9a0b0000000000001976a91476ee9548ad922c448535bc7d6bdb8cd8accc534388ac0c120000000000001976a9146b6d64b8b01b832542f3ef3f3e61f0c46a2a744888ac5c080000000000001976a914477c494da7056e5d0531329d002a3e3b76499c2588ac8e080000000000001976a9146c2ddfb2bfb3465a8d4d27e1a3835c5cf13b834f88acdc000000000000001976a914f0e2a14e0c0da6122566414f2521b53fe90a301388ac460f0000000000001976a914fdf43cf9945f83e05514e4b3053d4b510cf9d0b488accc0b0000000000001976a9142debe7b67e761f4ea4e5005fc71c33d85e5157cf88ac8a070000000000001976a9142f2c0295e179c2d19eef3cc7b8baafbbbaf3c1fb88ac2a080000000000001976a914e0c46521d8a6f90a433083ef9e97f47e22471dfe88ac741d0000000000001976a914e320f896e5800f03153f1c0df25fac0057e1665488ac3e170000000000001976a914c12cc5ec348c066e863bb635ded8cb86703ca49c88ac8a070000000000001976a91497101440042b2082859020e40470ef4f107dd9f088ac4c180000000000001976a914a03f785a80019e77ef9de0e74338358010a023b488ac9c0e0000000000001976a91408ee4550fe59b08879ddddb4dce9a1a1f883dd4988ac60090000000000001976a914d216a89c5a31da54f7b4c6a18ed8020a9dec36b288ac1e0f0000000000001976a91444563afc3fb0969ba1ffa6a58fff0bd1d188b49d88ac320f0000000000001976a9146c728b1d1b35008e2895e36a2a3ccf962402091988acd2000000000000001976a9147fa095110d1c6a96d8aadf0cb18d4a5dabfe6a6188acb2070000000000001976a9148d2175ceeb0a83469054ee941eeb5503fac7827888acd2000000000000001976a9149a05a14fcab454679b279f146b1015b37294389488ac48080000000000001976a914d404c587297b02a23348b1ea0014e2e684aaaf4788ac59030000000000001976a914618db5d0d7c22ea01fdb22403db34d5163578aa688ac5c170000000000001976a914c932c6b8d0150632459a3432d6359765f581b84788ac180b0000000000001976a91438f6ac15880f4f65722b395eecb393b519fb993188ac181000000000000017a914ce0578845348993edef37bf2883c8a1ab41b155187320a0000000000001976a9140b4925dc81fc58d94a522e451b328a0a8d5304c988acb00e0000000000001976a91414ac0aeaf3784d02ca716031a3a481953c16cd5e88ac640a0000000000001976a9149b6ebcf0f456ce12b90fe6f0fbf96efb8bf7446c88ac40100000000000001976a91470d7ed5fca0b5bcf48d414991fddb81a299b441788ac3a0c0000000000001976a9140734b890813232b5d6456e62dd8c2b95ace32ed688acdc000000000000001976a9141730f5f6302fca6efcde94d89a19699c1684190e88acc8000000000000001976a9141071e338b20d185badc00356c56f394dbafd6f8188ac34080000000000001976a914a6de4a3669519534352d02b7b5d32307ddd43c6688ac420e0000000000001976a914d9803759075abe33970e9bf854a04167c11e453e88ac1a130000000000001976a914d69edc74353c8fb9a4e50bbaaa5184b99a9de4da88acdc000000000000001976a91476386b69a5480a3c808babd0142bc1fccb3eb68d88aca8070000000000001976a9149602f246361dd51d9f69c559d4572ee7d3a8578d88acf0000000000000001976a9142acebc11514b0178e464e4f4d4ed6dd14b9fbd2588ac18010000000000001976a9147cfd527a191ab209972375ad9e0c64bd6157c49388ac40100000000000001976a9146f2e79cc8a118c7c44ac7ce3cff08f7d1da50a4388ac22010000000000001976a91454d87f0a6094a5ec16dce56d0967ab0526b08cc588ac24090000000000001976a914195c2f78357e05121d28ec52fca0c900f23a30d788ac22010000000000001976a9148cd62825e1719d1cc835a8b893cbe155ed4d05c188aca40b0000000000001976a914ce20e303700c3e6e568424f79b00a9310d78a29e88ac640a0000000000001976a9145331289fccfa21d0d6a02e8dff2d31102153313688ac04010000000000001976a91425bff353f3cd9f820e8c6c0f0fae4c467c4fc65788ac881d0000000000001976a9142f04e09647e2f369daf210c7cac702129d75373388ac800c0000000000001976a91431948241e6a85c6532b8bce101b74ce7917f25aa88ac04010000000000001976a914f31100f980dc33f57240e730f4e90f8aa819a72088ac24090000000000001976a914cea7fb69deddd529cc55bc7da46c3650848e570b88acfc0d0000000000001976a914c42015137353c37cc74040d4eae580c027ca7ed188ac38090000000000001976a914a1ef40de464752a1de6c3bf15adebeca6e541c9588aca2390000000000001976a9144f5a6c703c56eba9d47b18952233b8d7dc4114fd88ac42090000000000001976a914fac405c1cd8173ad8469cec43050112cf2aa385388acd0070000000000001976a914bea30d6e92dd43ff91b14b565105edfc58085ad888acd20a0000000000001976a9146e825667823b0f1799806d973c880e5a9778486288ac2a080000000000001976a9141f0f09ced14b6f079a622c1f75a70a2c2de59df688ac5e100000000000001976a914889793fe2912735c314ac7577e297460da948aa388ac66080000000000001976a9144f953b517aa792e05e5a561e51725dd2086f769788ac860b0000000000001976a9143e6b5bb51847570ca4404bd508d3dd812576f22688ac880e0000000000001976a9147b1988fa0c28b4dd634b1d15a58d7296ebb0522288acda070000000000001976a9148028dfe0cb2cf75da2530b2ac4c63745c18bc01e88ace23a0000000000001976a914bcd5241b39ceecb75f44c43b48b402d2281cdb5d88ac78300000000000001976a91440f014bb93a834c42439f6359f9624211a26d07a88acdc000000000000001976a914ddfcd8e31735e6ca711e759dc9cc488678b7099888ac72100000000000001976a9145d6af230d48d7031aaf9680e0b42cc4596e7788f88ac98080000000000001976a9147d86fc6c92ba0cbe05674e23ff9072240da9195788acc80f0000000000001976a9141767e6744be2963abee290b463d7bf2be15257ec88ac22010000000000001976a914e0799d7d726617777bcb91953b2a83c2f24fa38388ace6300000000000001976a9140806e275eba8578dbec6753dba12deb99d5d9cb188ac8e080000000000001976a9141e74b76f5f9111a4aac8b4f4e86ba24d1b3b513988ac3e080000000000001976a914fbdf2c19cd23c6cedb2f3aeec45e91b7574c8a5688ac7e090000000000001976a91493b89e8c8d974af240c6291b03c41549593effb688aca8380000000000001976a9149908721b234fbcf87e7cc012cf06d9f4721c82a688acd2000000000000001976a9141fa24ab6a84dfa6553f69ac774bddc01fe7d9cc088acec130000000000001976a914270a1a6ef87216bdc205f7ca0f1e5db17185828988ac9c130000000000001976a91402d30164a6768a4d620d251af7090905f1cb8b1888ac640a0000000000001976a914cc43e66051dc53e3e22050deff1d8f0ad29ffa1888acbe000000000000001976a9140202fd5a3b952710403bd299068feed9c283889f88acea3c0000000000001976a91402b70915db2194be41883f65c4908fc2e368a97c88ac323b0000000000001976a914051c3d2a8f452554de10bda48b5482ddbf383da188ac72100000000000001976a914921ae0dc8716f54f9cee80458be8e2559c8f379f88acfa000000000000001976a91418b95ee488e3d971f640f8fa0f4027d725933e6088ac6c0c0000000000001976a914648857ced1c119789a6161a352a6c9f50c56fd9e88acca080000000000001976a914af171d28a8824f5234d93c802808abba695b88aa88ac563a0000000000001976a91442e58043be43a10f20c6510c67f26dbb3476d8b688acc80f0000000000001976a9145692800a0bae42a3a2486897bfd109812189bc0a88acae150000000000001976a91459a193f51d28ee25312906b50056a905a79e4ab788acbe000000000000001976a9141b9b65711827e40ce9d39b67aa6e410ec6d0a18088ac18010000000000001976a914d78ac33650c1f8c99ee277e7d6e44c77befdad6988aca40b0000000000001976a9140abb48dae84d7aa393e5aa1eda3ea21df533648f88ac84120000000000001976a914349f06e228226db243cb81eb7df59db5e2ca57e988acda160000000000001976a914c8f88abfe9fff68c7883306ee3c45f3409bc2af988ac640a0000000000001976a91482ff41e000eb11da51c27396e950575cd26cd0ce88acd8090000000000001976a914af901d858acc0112a20e5fdd54edf3742a5ff24188ac9e070000000000001976a914c4d5e29afebff4d56671f59b20128a66cd85382b88accc0b0000000000001976a914661d74c9f091807be3faab2bec397fa349fd531388acf6090000000000001976a9149391cc1f82987576f04c00006e0664396828ee2c88ac38090000000000001976a914bfc765634b18168c15517f8f8f1ccc5743171c8488ac000000050000800a27a726b4d0d6c20000000075be19000000012affabf8c095955e80128da33203c9f3fd0b8c3b370efa3079c54e35b2fdaba2dc47947469b51879325d242b9eceee90b35f3fd0c43574a66b29f1cd3492478f182f5a84a0d7d28ad303e81eee9bb89cc26f9eef270a2e76780bcc8c4d462e0f02b5f9a5fb1bf30569d0a178d2f6d2467b47e1478607bb958805647b33d2f3021394335aedfa6dd590ad4d474053ab96a1c75ef3ca7bf74d92108f57f7d36a7a05210116d3c4776b4a1454d7835c5ea4e5047bce0ff0be5b084b9395eb2b593ed142b45571106d026d20ab662cbcd474b0d6c3341d7edb827f0209f715c81547a8d0e84db088fd2a58b39d9f83122573ea0946f03d8cc6cd579cbdfccc98cadf04a176d825314fd09283a243176b47fa9287cbb3709826cb2037d3762b36f06ce56f9b791e1da4b8de8cffbb70fe2735234cf6dacf8c07085b8bf7c80fc5d36d29cdc9c05919458f97a17e275f2b99230212b3987b2f5cb66c80e027581367e496e7ea1fff72365b3123dc48deae22dd09a4d0dddec7b6d11d5c98d550dcca3160a993e8e1ddcee50d7ea4b31ac289c7f9bfba88d7ba8060b27433963bb9a056d5f485cc03969921416c8680cc4310ba90337c3623681c99dfeeb70d9a56b01a9cc64f04a11299f3b47cf4aa8c00c54f581dd6ea16f3ea943e768dd63f5bb93d317542709964d441af750ff39e5cafe2cdec510c7b38a2fa4dd80790b61a4fc03263a1308df946b5a3ea4d7e02a37e5ee1d7c352ac93c4e2e5e269a64a3a05fe71be3fc3d02440fa0b370dff3c18ef284f33f5a0699920b06d3d3ce3377f3da0218764f299f8a5cb54024756406c38b8ce8938c9a6cb919de4f84300249cf17aa4f9fcda6b6be648dd1bbc93e9d376b6a5f5d637a48868a1b49aa9d727352568f6b5341d3cba09bb8088b586b8066c073c153acc5085f594c5457e07c16eb64ddc6c1a9020aaa64d7c2e9521d14f5843888f4cf826e083dae697a15cfb142bbfc29255b2b330ef71a089a94e5caf1ea462748b9a33c36ebf343f3b986d4e6bc0f56a4e09a167e6c98ed8cea25c0c4ebc5a215595891c6eec69644df52eca8daba68fb73ca9ac2f4f2b25c93f3389019db52a5d8cee029ba0ad5f2336fa5d5be4425cfb9dce7553cc330e7b255214e65b271adacb9d57fc77f753e0ff23a45bc31957fcbb721ef2e290af2501738bf9c82a727c4a2594acdee582b2632f338f3bec1b94450f78656162bf75237e08ba915ac353e20bc666a0f6aa7b0745f175506cc331eade6293febc32bc02ad234f34c3e82bd265b7f2e426052e9f2751dd4dcda06599f50e00a63f633e12dd30d128c1e95e0a16e59a8add0de87b42cce1ac062660df327978892ddb8f7a25e12f1f779c80f0e68735240987b230e6900622191de567e1e87e5615a4ddf744fc1d1f1f837c65285fbc5f5f5a9eb3053a9a2d391ec77009cc59c36d62e3e5d82e833eaeb75bdbf52bd42d01167bc99b892cfb2620a10ef0fe3f02c679fd2bff0d77f20742aa0297dc8854a211330e4a491cf8c05f8e82924d113540648e1d8b5592e6402f1670464834a564cf87ce6edb4b0a345b672b51f6f0c41b180547966b6108690b2112431cbdfc4865931d746d8a44b6ac9f850342e803c327ccea336d59036f6aa395628ba4b29b2b7ea4314bfb4c2e1e6cdd9327b245ef33ab69a79c3568c9c7bffbfaba1b5cfdcd763e3711777aa9a7ebcf08f92a22ef7e78c01edfd8291e87b5dd781b0507f48d1a85c9749bf57aec2d1067c311eb8005aa047b2ea55966bda816ebde1a8da6e319fccb41bc63040b64c27f29aeabeb14b2c50c585d14195aea85ecf32c40aabeffebb31ab4c6469f8457c87f1bc5b28741f02ff6078595a7ba28af731885aaa66f8076459a32e191c3d8ad24a15bf48a23cdd790867ff71c915e8e1b97e2ba2b74a23811ed371233a66253531a5e82e5e5087c90b686cab5ed36e537e6030966808c443f98ea9642242fb02e16f084d6d9bac97fdcac255586875bc573d39477869e958b67e54fb508411ab61c4a588279141573f4b3743e1da8710a1512988dc1d65fb0554b198def608a07966957e216f2007d1b4d6547ed3838adb28aa97af73f3eac630d608d56037a4bf915a6073286449d5a62801a18ae28c41aada84aa68da647b9b996dda2167f6b222537121e467854d096457f354403510f6e717691a7d6003c261e63759e39802b07ddf0c45b6c995c73b801e57d96837bcb9bc04c1d9757ff6ff80b265822f63c46fee803000000000000aaaf743951ce4aacc9c2bd27384d39f95be20f27b3f0651d427a11780565d80b911ceec904ad7ef335a8fd88f78fc48eb5f1df4e0ffe9031aaece42fcd64371391f5144bc737c4fc00dae05693635c4292f797375bd90cbfd1034391deb5d7d7ed847bc78b8a62d44cff9ba0be17d96b233fe16866578f9a7219bffdaa56e3f11500e65371f8aed30dfa0e8d8e5000aac01c397ffa4d70e34792965e9091fc01545aaed662a92bd97eac30eef1db265da678649b049d7aa16f17210201c76e6575d8c40ecf0b03eeb714ffc8c092e1b4cc69099d475f6714fd270531816ab56dbda75492b6130b8b16dbcfccce16109869ac4b362bd6246f4efd743d4e919005cebce4afc0aba706225ea3487cbb8c5d351f64d3bd508755a93c5e12273c7e098b9b1a547c09c2f6fb4cea21d8f7183b103a5cdf1a9f3c2d10a9485be21824306be6b2ac5a854b2a7de0212b7683848ab4251915e787bbac62a5855be8a38ef6e416e3a0a754b88339f9fc033119f511e14ab5661e2999c66c9a696fab826d10132a9612c4cf7af156d23a4d7be51328b1406dd1fe4be3f655a1e97f17f2cd54f3c54a0bc706c7b91c5832d9096e00f6815c9e93ce56b73a63d66a6e9f0d260182bfa7a3363a45cca4a3eaccc0fb585822f0f35c393d9446593b87f21e9e6a478d9f6a078c864a2809d7c3bca93f7fa490251a1599ed30ba4df2272b4dccf55f8cf60b47933cfeec7af9248cadd9b1488a8b8957553a964691630640ae5d1696fee7c9f99ac9dbd8110023e1a858cbee57a51395071c97fbe0daee3f0e26d0600ca3dc9f4db13cba31863d62925844ad90c91bd12130e438403a8fad837c1970055d3798726b1fed84fe00d53d293d27a93db2f3b4eb2b61c2bf80b0842f0fd85b5eb07e8f5f8326e6a65448467cb315a53a1c783ef81e89fbcf0258f96bb542b60e017999c44eb01e6049360a1d9f539707c829c5f35a487336681afe429c9c3e01486b51b31cfcd4791595c5fd678f01cade02ba18c9326fc462274b3b320b00050000800a27a726b4d0d6c20000000076be1900000001d631df616954b7070608cf89eb24eba4f408de53cb06719d1d6dc833357d23b9877d5e12c974fd03f1254bcf3957b1dfdaca74cde9cf98c3383635b02bcb4c2a85cb74fb13af269d5aa691ac6a4d78863be03c34d763943876e42f455c5decd20271c29a96fc4f263416389116e1227604eca91bc57b3d3a735e59802bf7d63c0516d8a76462ec82b31f9dda183f91f182d29a2b73e63bdacb8bf7c094303b805b87ee1d177379ad9d5df42b81266136a0719176f90d1ac3370a5c15f2d370db9ef431db7c7148754d1f635421b13788abc40e6e07c99b0ad070628c0c74307d537cd4fe72d969b163abffe86cde11ac6142ee6bdf97011a66b762bb2dd0234c6a4c98ae05e4e7d33cadb63896344b3ebd0de47b787b5777631c9b45a73bc0032039cb649c05199c5a179f13c02c09a3a7148b7fac646e7da916982b9786b5d6bbe1d55f8bade6b1ed367cf92283e122f072e09d81689e9f473d5ce5f5f47383104abf97212e87a34942b4492a8dd4f110e32a004684794a59287b238d8f770858aa29ea60cc691410b4c864aee65672582cececa1e6bb7ced81b5fd3be3cd60448634a7b2722740859c96291b8043cd676f068b4a1ec74e3363155e5b09a4b1b9bd09c61b925ca7ab47c4eb4742d4bf13365400ef5664bab011e89ff268a32abb0e8d84e68ad82aae7b4e7bd144e9d3be500d9a99155020730edfc0114e48efacd55c18603077f523bdb7ffcdc523630f801eb08709a51cdb2ba0d063370943098bedffd19a56868636db5445fb62c5e976b6de5bd14577223de65a3e4b1a77586fedbef55c4ed11a4ed729fe8fbe227a3573f08462ae78c7bb51e8bd92eeeca225ca9dd374cb5430c86b44976386dd81a31107299927b7af679acd77c925b8a24fb4369359c2afb20043e16b619723e5d3cd0d8d299e1d8a9f0b3cebc6fdce34f2c9ce6ff5e4ca92937974728d99bd28ff7267dff99ba9fb912932e6426405f05834f386a9a459b09d123da6002c8032890aecaeed933144dbaaf5807c016dd455abb98ee40d83d5e79bf0c7c57d3b058ba3382fd91b187d2785128093225dbb73881e73f57c561ed5bfa19049faa66b92432430e0f3c8af5ed6adc3b2453e391d16b8bd2d0f0802cfa0dccf275e593adf830863d15278830459783a78bd20042c080d4de07d67e5388764c2280c14bc65ce665893bbc36436d54cd6d6f3e4bb84f11faca7c13ec071d08b7eca9e903be1cf4235cc8110aac06a6246a952a82133684ce739ae26b482b2bd42fb10a889ae18686a6d43c60d44e16a0d401916990be958d80c72cef3095e058b1d832c51b6ae94f2acffd76e04788deefbb4d815db329dea6431768ffaddb5903c7767e040f337041ae08081b04443ec202e143324076e2fdca45726586815f061c644df0b2a5c98b8e64b7611621852764b5d92a61f45b38b648dd8e2f79a0de4395f10bf62e4e80e474ddfd3708be9b507415c4e8012e3dc2f14cef185f3d456a09a388eb6e81debb376602c47bdf6ffcb54cc59e2ef99f2bbdbadebb8cb3035ab8ff6a2a57e13efd76e1a73d3bee58eb42dd6aa5a8712ac4a3e08f1f79c5a18c9eaeb36434cbd562fbf942029cc94f13b8c3cfc9e26bf03c405322b76a1cbd3d3a897c0b382fdebf7850aa373e05a576dcaecc4681ca06896d5af4abef00f3efb772c1297373f7dddb9ed2ff4f316eec9866ba4a31e8388cddb2736bafe24f7c13d1c0acb8c6bfbdf08a8df9652e061815543d9e41ad99567c45b0f19f2a09dcc037f9c42e591c7412280805c68514b7454ced95aba9ea67ff23223cb5872535b17ae1e75c77785ea9b8a4ada4874c493135bc8c6561448ddc52a1416c915b1a1dc4d09fa667a1cb566d14d6e0d533b66c2e0d34297b1d92c6a2f393aa1a44a895d487b5ff627a0e2f399a423fef4226510ac28f8c1f82fb0fd098094c5082ab62bf14d31db4043d7d2c4da898e17cfd811faf52cba128c0d1ece7b2d6fd25b6f970ec715c568ed7e69945aa00a1f6835f07975a553a08a8eb1a27361792919df831655134dbf79d6b9e01965df8f17794a01c644808e7f8676f0d496a71dff8405e0f3d0c2c2648d5ef9f9ba557f765ae14194c0710fd3e660847aa7e9c416916ff93bf532594858fc1a006df993f8f40773a532af085cdd664e36ac33fabf69cbc4bfd215369bd0980f8ffe3687f98e99aabbffaaac2b3924251510151008210e09b9e8b8ae9f0f31fe352d2eea5e25f369e61b47cdb30a210ae803000000000000aaaf743951ce4aacc9c2bd27384d39f95be20f27b3f0651d427a11780565d80b931d78b6ac2dc3ee4a2917ded41f4d1e320f96c2102b137961ccfa6471be614cf53a337b5c848d4867fd35d3c17f26a1a709972b830102a3b8115efcbc0693d49c48dc58d520885cb5d34e22172f3b101a1be0aa203f3e17c6bef42cc63677d8053bb0870aa3f051e47f7333cc381e394d5c01abfd30bfb4d484075a1117c057257daabeef85bbac3dc0ac3e7b6648588a444ed3ecb8c2d0eb46ea52f8cf68b35d4aeaafbe9370f273d293dc24f90c4ae1984cf2f9aaf04a6d89c4b61ddec5408688e349d16aeb1b870b40c1a8bc657b671e60e6b561c20cb4c9fc864ea860352d34019e27983372e89e9e190d3311c982f6f83c314e4aa20852acdf413b8e01b74bb7c840df37212b3bfe79fcd5e69419846c511bb727fbd7fa52db57166b0747a576e4d2faefea90e33ff989a996ff8fb39829b5c656f2aeb9a96f7e347718662b7db2caa4e710dec8963058a7162b984d22912fdb44221ef0ea7e4deb6317016e63c3faf1912a20aab5ad1d898a93fab9bb592d2718b04cdc25033efcac07adb7222ca7d6bee26e1ed562d0e34bdfa659cc02734923bb4aecc2507f974671f0cfa5a37b4283c04f4d6e253ebae8fa1a614701dab8b59a8bd5165c7e3f19c38702e57513ee2eb504a8204c38599c70c179d0e185264fdae198354cf3c355e1c5a0cf0ed305c7dba2ef9323cbaa02de8ca85bb5cf39760c988676bc1a105a77b399917329d35c28ee050420f6a022aa3de3bc18ecfcbf8f2e5d76ebcebfc4ad057eb8c73432189e399c88f31b9aa2cd7b538b5abcc8e81149d291d559dae6408392dfb79917ffe8ae6c47358921c138b703c6e35e5a2bd237e3a43a9356622e4982d868e404718ecd992e3e322762e6cdf04b7b8d6459a9fcb9273edfc5650b36b9a94ba78eb7846277c30cd82f691201d40cfe4380c5a7279fa2ccaf96574f6748f3538928c8eff21c15703ee208dd93ea31b2c79bfdee94334722dc65450300050000800a27a726b4d0d6c20000000076be1900000001c7623f6338fe45a7b3d1ca1543f07e2731749ce1d68ec465925a71ce26e106d699063d772788e0d755fd53e355d8b705bc8090c8f418150ce115a566ee6b4e8cd9f037f3ea0a3e67c7691ca7cc42ea635807e4effd284657f2e752d07c689a1901e48d71fb8b2fad8085bce82d1b1af197ae7ed8f4e65f7520664ddcdd5ef74b07b79cc646794b1f09a56388986b996e8aeb8c2e20a2c5daa7ee555bab5f8c7e5537e4b890893c25a7296cfd4dec22be5c07bc7e12ec1832407e96c35127cd048d74f60398f924119058cd69bd27851da7add42af4c1d4ce0e02e1d978979d8d68a66d34971abbc9bb12924102f2469c4b24b3780fbd52dade931203036fe5f21230ac8c0ccf15bfab74e2144e69729d9db522af9b97053426fd33c181a733dce4d227769324e2acd4bb8b9b33459b22b86f333e90d66cd0c53c7e4306879051047a19b80852fecb514c7cea23d23bfe0d71a75aa1fef6a0fddcc7c16dd0157338cabcac8fa73495cca3603ab86689aa0c4b8ee74366b40883cd4f3d3bd8d06f41fbef853dc0b43accefe1b93577e1ecbb434b3bf56758ecd899792d68579fa4480f74b29fe39b2649a7738299fbdae921b26dcb54fd03bcaa266a203b96e4ae72c7b851c0f51df66cdf781b87a28cd8add379b9d89f5f207a3f52c032d6784ec0607d0ba6bf36f78b72605f1aa45c1a939de49ca3d338f416fa26264720a2e736c6ff1434eb3e67b39554bc1c488e61ff8b54aa96e3998bec08459371918956028b4e7ec1ba947632b4144790cb07087ffb52e1f325b0b0e943f866e5137ab4c9c4515ceca6d8509f023f4150ce44b6eec1f502cf6acc779563e59a3651929325dc41bce473d600c057c9e62cace696b19c6ad6ea8f2b60a451c1c5c9a635c540263af8d93933c86b304993286979d3a33b8275f421cb79ec128aac0a85d5b5e5bf4576fcc44572d4a5ad797dfd6694bf4d5541b06d45fad91b71b1c2f50de515e7ab5afae57afaedd8a70c88d927ac5613c6dcca01f5aca87e65a38e0ceb3ca640b75737b6f8bb9426f986c39e48a7da4970e3552d9d15ab397814dd35dc586cce03b4119eb41238c20a0790b9aeb607a0f6457d388506838c593364b1d555696f7231c39a1fb0e64c570f0e5fc1f9e6dd5568bc23ddc298e17e16fdd2fbebe7c7feb52e8dd44f5e74b9d9feec4faba288f8c2c9d007000000000000efde3adb327ade0b12f9e3ac2eb6a4eb042521e90512cabd80b20fbd0bd5300db9a23d773faa0a998de491df6187e86dddd072b67e6c134a86846455fdb98f3d93c7ad25cec3786e99de886acb122ef9ac553c025648a1d8cb3df8ced1ab635b74b388ed0b459c917d88b176220d7bb03aa4bde99d16bb32b9c4fd629b06ae3705040e912f9d525ca370f913b5ad39a9b99b4ec26d9541a9c26d6067f31e0ecb6326f807f1699cc896e2aeada0ab218a934c4546af9758fc4c98bcd1bcc530d786fddf5a5833ecd4f1a072bc3d251851c04735916ed25d1025df37b44c93f91e9858bdf4563a47ced242cd25232492a68a1e83f2860ed66b72a73cbec8396cb6e91db895e8accbf7ab7d029b77341b82112456655d3f026c604a90460944fd0d8278ef89248e55c8babd1631154a65d415bc712eb177d6d36fd9d2a517e2b7482e53f4bff1ac00486d798224492d3b03ad7f084947f56e382603463a817a0c56cc388d9b15d9f6a81bb3a81d393bca0b6449030e0a30bb56d676a8bd9c2197bd119c52ddfe51920bac81af1d5a7af5d33a5b1e8536f3331059368c9a690cebe5ea65e8d2d937a958368c53b5a6eaa7f6b47fb37099c84725471136f3cd11543ec11525f762513fce80e427075dd5db463c5ce7156ae5558d52fb9d6ffc59977bb095fb1a25ad15ad3741cf23bfb881335089268cb80cb168ef29361a800ae58d4446abae47ca34010f1d162f00075a7a6172feb77ac25da49e470c068399dd0602b1cf85cb16c7a9f177a96a310a040130e42d5ceb68ea69eb9b18ab2f991c4aa594405859509e9ab889beb919330923ee4603aee16426201b4c2e258b4adce605ecaacd33c7daa29f14665a8c6e50631601d047deb7cc31bddce3616c006a6abda1bf42eb42cef55879f0c064b3c0c445a5183d84052f9dc34c6bae2ee334cd1f4224131a11881e97eb45fd9a7c4255260ac2207889fc293248cb40b63a90682ba55d372156141d70b714bfaf9802556295c95ed688cad2f963df862ea690d1a733ac9ac92d82f4d3f457f8a98940c8153bf5b9508dd42d0aec4cfaaf8ec122bc07759049bc679bfaa0151df297cb44c8d667781c7bc6c3f93fc3f49ccd5ed96ed96b1ee6b1a3f1d6d4c74839eb2753922680851f5f6be1d523cca47c27a0f720ac839f92306726432cd4e19d88919530dcd115453f5b203ee890e6b075bf830c4668a706f3b2444fded7048c2b529c8a2552e0688dce37c11acba59d11835f6da3ca6af94189fb71b6eeece9e895198bc0af71db4922ef489dcb3688ab3d7907c8a07ad3805ee7a4c66d7c902b7475795d22bd890603ee2e0239079e9f42dfdda12da5795ed272f52c3cec87be31c2d8e9afed58a9a73876e334f554ca84b63908de6ace53da7d0f7018350441c341d8c013e084e9d528784224f4ed17f9192a36c0760606c1b8396c7d7dbd2e17a5fe35b32ecddb8521214006b1398dce9d565876d164d2dcd5aea8eec2f0b0089bc65ff8d376946765cfc930a4ba7ec3876bac4e5becaac1a3ffe5bc1e2ec6b73557392d6b2da2834ad258716bca943076f138152550643ad50035262a5bc2068aaa7037e3db7959ff731d29de79f0f871cb22fecebb8c5b37ea4669a45d798fab7cd02c70c1da0baa0c6e1dd91a3503b90198abf7d430f9cd8a9c93f7e917daec3213519bd269e89ed41868ab9db7a9065ef33dc01ecb31fd23578e1f34aa4320873ad4eb817484aff4bc78b540c493262c8a87508a0d7b288f49841f2ed8e91ccd386b852a32d65512caffae051b98a9d7a87873c34db17e1cc2f7f357c3eb10e231a4212fae42ddd7e1456724f7a602e26f266cb435cde5e70dacb8e7fad748dc8208bfdff8d8cee35696794eb4e953b6e80729589c50f897cb3fd8679b88623d6ff9c31436562bf93aabbd8d6edfabef091e98c4cb0398f55748362ac76983a3421e4495a382393d5ee11768caea54d4d726e42fb72460906deeb3178924e62bfc0e5f0ddd88500dcd7bba02da0160a7446f149fabeddee216f04e115fda9ce3f0076e1ec5a77eb2ed20bba0767f4a89a877dd3093da56618f04c898e01ca57fbcd9072a0cc6200287ef79325fd4690762c7cabd16e09ef917c0ec041f04178361f147a3a630086021bd3ebdc3d11a44e48cc7fcb95f7e9b16317e50eb8f525c33adf6ffbb3aed9c3f87728788e0b384049fc7ba6c279cd7dffc0f1bd50d2b6f87124c49d863b2b3be2cb38bf91ae8bb698eebc5dd0e26543afe94c47e4744a5e700da051391aed89d5a3b4e5a652bb6106c97c7472374f71661452886f3cf0d300bcb208f12ebc67c3f6ac575e46f2d3388db4cdce1949c91bd896b037c76f5259aec6462dc6caeb4c274555b121df666e709b2edf635b08e20c25c99c22461a7001aa34c1ba8d676ea65a3d5e7c6577475ee586c5afe24235b3fddbb4d4a33c3176baff667eb1aeb2ed9e8f4c0351b8194d138536b18aa20287545502e31aa3572eafd461ac0ac6e8086f09d1cab2008504b98ffd85ea4ee2512cfe0706a2a4bf5e6972c7874c7ef174d1ee8b5b8dc22f606122ac04614c64981fb2af3da299800247793767c4eec14ce47700fb76d5f1ece7d3c873f3dca6166d4cb9b8a9013c8594a0d10de929b2117662aa7321d30cd56b7bc318708dd4cf9574bbfafa0b861f09fd2329502cb8487902e6c3f65b794f1b5fdc27246d139810bfe71bc339f9b91aae1722e1525f2b212330672b1c4fc7d2ea8dfb430df27a3ac9bc4fb103baf38b15dcc232f004d278c828ef71d8ef34c675895251e36addbb6340a932ea2d5d7fc88b9edcf5856d9b0a16eebc902a205b20fc4315ff2365a80348b72c22f36be8db102e2e859a4ae6b62677f529c21025911b516a5b0a54b512bcdf8cd7dce7bf2736bfa077321d72300cf0bbf36f49f76f2efdcf4d7f12b6513a760ce9494a0ab7d18cf29e2e4d3589892e52f631e1607e8c94eb8c482ea2d612900a49a87275160fc6ddaf0c798aaf112f0d12f92a04a400c98f8e087d7e1ed8abf6fac0786ce7ddada0292f045c9924fcc857dd44ace92ec9acd0318fcffffffffffffed17182c783c649f53c0ecfe900a58cd818e89d2784f750df6c906999337dc10fd601cbe12c77908a1fa9176f725d2e9946bbfd36e57ca142291715f9601625cce6c063d0b2348ee79511fd4da7b9e7b467659c799db3d6946ba414d1dc4e63cc0b19da60d09c4c6e8c89c55bccaad30cc30a1286aa02103b360df6286f640fceaf2238a7420b20f07bed9de036cea83fcca7c30f78af9fcd6f83cdf2fbbe233ef1cadfa531ae7be352979e7e35761507f2d89df2e2b869d9b559e11783e40991a7792cba9d85b67d12228f847bf77da4644ba9f25b2d5c00840a2f913476ad8fe9ea03968735c8f03be73a988c121cd93f2aa1e8eae2da53d8c034448d13cd8d0b79089daf5b3cae99984c90c6c0567163c6158f420f22cb8c575127aaf4aa87a6301998574429095b43ec8f58efc0b3a478c5892b2fb22bbb6184da85f0622b01a287aaa7e8b0500fac7acbf00f906584fef29c6cfc3fc79340e28eac1fc43ef863c1649d71d09b0a3e8af071ea9e251d66ca0dc4ddadeab90e3cbde1b63b6f017ac5d674789298fee86cf0ed94e43f84aeb9acee607b42588e3d5c2599b172f7a21a59a5266dd9b0b8e439783144c1e27198c95d54f77923f6bebb9facb94f3ba8d36c28422feebbea33465bed6eb970ba845c9ecd17018084cd3dcb0d9660b688d95bab50c40aa6d45a4e41b103fd2184b42823ad01eab30c312f048e0b3768514720b65efbdd07602d8b98b28a617e321a4932cefea65131061b66abe06d32fafde9b1daefad21b31dc7aaa9171af0a22f2eab4297269ce491ea4dfc9f329451a4b245ce5b8cfb1ce676dbcdc70417b726c9fc891eba5f784b6c8eb98fa73dd826398cdce405bb5ab37133770b7c056976eb25d2c6a63971b2beaf4fdde029485dd642351884d08dfe4793a1a58bce450a874e22883758f174b22bc0f446e691e6e297088294268a3679d9160bdab5bbe52a8e3128bb695f587d9c76f7cd59d14ab0ffe23ec71359a67fab6e48a3eec76c7d25b104c9dd72daa31d053d4c83c105fd5f643a4d1350c36d131a2888043b3b4b00f2964aceb5ea83f8b59eeae003c9270c4cb235c881ed70270ed71e58e307540c05817a45ffa620edfbebfa4501f55299159c16b09b4f038315a9247140169b266ae311a2b9425ce82c6f1790c2821992e2b8971a8d8c2b93c5b406cc46afbaf0ef0dead007f5c4a539c26b96007bee86f256170349df627ce0a3f9f56cbdbcd14d169f2f0bb581e4f4bbca1238a1232c21c2f5c0d9e7dc440c545e15dbd198d1aac7a86f14c7ce676966f2c280f46e05f28379fdb0c9283e044d638b96c006f24bcb1630f4f6973b0d3d458022e99ca66ce5e96dff300a4cd8552976f8d707c62c25046e27a13536b06b5e8a889395f1a2a64ae549e9325fc1dd1e315d63f13d3b27c1315e75400145cd1f598b98b2979c420a262043a6b3ff77644c8ca7f502faeaa6e0c6e958a0a0c41713c18736024af99eb728ec85ced9f5498af53cdeffe6da0019ed8d678b608a7f42b9c5167ee359d01d582ff1337f02ac68c8b7c0e62f0b23d87d85cda65051a38e4267f61ffae2a2568258b11ae715145651573fab4441f410a53f93d2c04e95b402a26627899b58c326616518b976b47c58dc780d37a5629aa04ece8cd60403d451e98b7d7a8e450cbefef7a6ffc5a9ce758c1ee44eed3d77154806e062bd6bd0109bbd4b131a1dd65a6220b7a03e055546ba0e2802d2e1f974da4492fa302b0dc336a66fbbff22cf117b14e494670d0df70cb5533006a4cc8fc09e23d1d2f39eb94bd34c91572fe28c5bc2bf5c3c721c12cda22ff8ddae2ebc135483be812f2b89470f8c49db998401af494ee9c4e1ec1d8cb6dc13945346e3939df37f17c26913ab74053f9d1c0ebff87ea7492cf78605a4c58f6b3f411e9313c0dd42150ec151543beadfb92d805307d58e5cd092920dbbc9b1ac2d282a66484ce4d187689d1068956758b8faf0e58ac45a0acb390186e93cc813c60d95ccc92ae49084014bdb9d17f9a8792cd259ae8d26f413b6478e6f85da659078d4e6bf0ec6b01d7a4cd068fc66a366d6aebe3da3ae382323a297c3fb6feda07750532a502b627e357ca94bec355248c2af55a89dae9b0ebab240e3780741ae07405d2e5f0650909678c0f5839fe94ea4599b6667e0ba7a1a8a330af5deffe74bacea1cb68568582cfcc227473dbb8f8517a7529229e753d8dd2b221a957325117fdb58a6109ce669518059e9481d871c673338fb13a10afdb259376986da520530e163420aa5f2a2df19467508356c156002bee6466e584ea3580eb89124a824cfca548c642da889360b94cac2100d28b1993f560ba7fc8498b7799c661f946f94de409f3725b94872fa2b92f70b8d37b3f87dbfe49885f4ee03f945d874bffd578da6c6a8517749e5aa75a97402c6ac6ba8b641d1dbcb09edfa468a160ffe2936ef434d21619d2a7d611c44649514c693d4c4908fef9478ad52f01f3086e6f6e645b2fdc71fab0f151359810478efcbc1bdf1f78641870cc85ea6279bd9b582ab87e04631e62cf04700f683140a2893abff40a8385a30835404782344764a1d8c299506c325788279c37ef0843e9795ab862081a7ab48ec675716cf6244b9b1baec2f02c92bfc52c2435a19c83ce522500b280b35c58b74b22ff5e8d5f8b32ee25570ca2228c13e93d192861112a7a6bb560889f42ae353e5b2077d3481cbbe80da739ca2a033732a13ee6d0f2347823ef89839201a70e5c5361c4a77e0742bc7e76035f464248ba4a0e6d33b3658f3d1c602d42857bb9177ebfb6f625117de66db487d853c33b45382c0e2ae35b418dc2cdb8df208c8bb6fa70763bcb1589c8f7399e3707a7a1eba22989f8bf3eb10f9bffc654ad09da6399d84a52770b4b41c894efe1535c5343f4190996ddfa9958a4c85ae2c7999d6b9821c76a923833629760710cff881d98d50ad4fd24f971d119610852fc00cc92925b67fc1884914e0f801f5aab42a050c13cadd2a06b2e914bd322d7d0d06de8ef0abe89337b250b085c5e9edefe1ab5eb31b2554027786dcd31f7f843977fdd170ee2558f1cb047e0f41c33e359aaf3b819de22072d029d933a61a41e17a81d23a493411526678f6fa48cc3eb519dbdc81bf5f638824a694f7cdf67f3fdd967940f20f46f53f9b4d00c4ea5575cd413ae361fcf08cf9c07be710d78ad2d3adb44274b80305d2b49b0bedfb500dfc139401974a449cbef99e4199353cb3c31de94daf1c3664e4be33336103a4ea9664ae6044f1a4be9a1c20fcbab112afaed7bea8fea51f649e3e7328fb557e0ea29eb88077141a2ef9dc883c1321fafc4f2409ba4e4442885b1621cf9357b7c88dc187b30775e0cbd3d11820dcb2b1ee8b4187827019c6424aec36cd795ae3e30929fa32acd3f60246ac98554d701188cdfe248c0fb6d021f675f0b992aeca2ba48a5833c27e93bc4574c476d4fab5964a8ca840e975c5a1ed841897d285af79d9ed37f042d76078ad05e8d9aafc9b99adf373c5f494e48bfa615116c2aadbe840ad8b71f2e78157cacab06fd47af10b8ab3db4b8b5deca2278c63f42cb97425a8e24251389c2469c8af12d5b716073999df5d2ff2d98444c36d172d65e12bc243d305a35dc1960d4a900abff69ca2bab362c1113898a5c77a6f0bf7754c6a9b245e35a3c886ce4d199f0062cd81684c33883e2ab78bcabcdbab830f9b8f18dae38073f1c2a16d49cf68860a770cc8b83465ec7e6e0adb7d4dfde2baca3cf07185f73143e1e0f3d8d48c2612f81e573180b782b2cc0fd4f19ac53c90df0525f8637a24b14c8470e4d772fcaaf547d93fe3b8cfb576d5c95122faad4c2408a09a44d71c905523318b2cfbff35f54212cfc800fd9c40be627750e90c0f2e2d29674e9bcce10bcc4b463d8dde7e1fb2770c497382a3c3c9a2a9da7c55754e31813d393d567148f42579b5beb242c03de27698c8a10bd803852510358b6d9de23bde974bbe43fcaba461ce295e460f00e0d4877c6ba3b35d8f1fa2e5b2066b17a041bbe8ded12a498ecc9760e37092a227841baabeb82918c1a77067fb520cb4f6a69f1bf16166772a4f4b9046936d3100feb5a8357dd759237d2d48ea431bc9eb14808f3b632d749eaf097e3c337dfcffb3421fe1799b000abb8ed1654f3f7cbdd6eb8df9e110d6c14903e9c7b53df0728332d9c691497c056dce17323f08fb655d478bc9b158d5139ad8d72c02d36efcbd66a2fcf545c202cad1df2fbd9981f154f7b783710c422fc3f4895ae9903a2d52184cf2855aac768c1642d53c12e13f8291ec49b163b0c866279e011b2594cd4d799c6afbf58179a945e68eda2cbc491650ca9593de9ca4723e9955972e2c411d24260026301b610548346b5126d1f2cecc98a3b1346b225e3084b97b15ed2ad6d1fa742481d678b7ac384bdb31d1235e91f79c83f462d47df9d9601fa91629f28a625bf89db32fd7e30d5c914cfa0df305a428f08c238e42c591b51f6cb3c895f76fc12d3fad226ea7d96df01cf3d737611c803371e0d313adae368afb5021c6b8b9b32ccdceccc288dcb068d8e13bcbc9e017b14e7b6376c7f7dee26011b1ca85105466d3f8222040ccd60c48bed93afe069ff25b27470d4f6f74541b420a9a8da7d5a65bc4ea2a497c2fb682ab2d357c37db43911869604ecc28cf103be1465dc29caf4832998a3440ddec22a289fe54a48873d743c981ec45fd560bc06f97444d2764045303746bf9f85def52d6680e31421322dbb45d9069a7832d89e8b9859f8d335074c6452bd4446e5e94b8b26a51b9d29921d63ddae9d818a6feffc4637f2fda2929543a283c597cc06ed6c37467d70024fa38483173d9f1b8bde7786d0733aa40ad9ac7df7224d5e779a057c347d5e3e81392f9872db1e4c1258e95a3c61febae4dd40b42e1a5d87c197550ef0edb33ea47346f829538f37ca6f300022a77de33aa822bd295ed2a67b05bdd1f8ffe6360db6b2e905dd767cd03cc062030053ebe359aa6024f18e4f05f2628ad01aca0e9bc9b6314e3fef5cd52545ade0c9329242229469aa787945f154e52fe9431e0f8694404fd156cfb7c2580ad449b873e6257af62df4f817de8b9b30c237879e1a7114d15a8f1e963367c88212524fd678069f6ebd9605c5e96fb7acf068363d3f9d995c73c09c15815e718a774cdfcf489be716db23da14fbc80fbc42a63a7f1baa445cb7ab0216120e0d1b54caa5e6e17fb9665289f04ba0f9111f73607a0e26282621cd333bcdb6ec14139c0d874730473976682afb7960a3574b38f6396b3055dce559568cfffc8b762ec232b30a5a577d48fbab4eae1e3dae0474ae84b9139798200cc0adf16879a0022bef68760c3b2b61fd19932260e8aff0ffa2d6a81f87a18d605c31832de607e36335a364c75ecd93f85a703d3af64c8a754e15ff0d999c8829068af9e044aa80e78a7adf97f9500693bb27ecde2db1c86bd4e9a231160e92c2cc5a96a887c720f10a9a4004992d1f038cc470bb781ae79783ae7a21f4d06f885a3e3ad9f3fb9bd355fa32e011f436215e9e8dd00772a6776b3d581598c9760efae1d503cb1ba4a81e8f5a52621319987e4890df8b6bae5072c26d17e3d43736ec2250e2a7ce0f0818053f8e5439262afde37c797bbe8bd21b1c3e04116638df057cfeb31a043f723566c37b10d7dce1daa869884364396c1b130c1e504aeeb061bcd4e24270d9439760c0f4f6b8faa6f10c02addc6eb29f661c0605147be1a0fbc00672bb56cdc7a95314844dc7657fe6b7c2eb8aad6d051d3d5a32e8d4815e4f3ae28aa92d8c75579c8395749320c2e6dba4d1c945458c7aa7cb21a1dd4787e864bbbdac43fa33edd12dde978e53c76e39194c64ae2a40284e4f280f89cde30d18833727505ee36099d3b9ee8e940ad137d2ba55a8a70c3a29b107dce63075c484d7a05393f238cc1d00ea8afadead82bc9430fe387fd119d6540454a7adea3edfe42ad9e189b6b906a549a57604bdd19997ba4631313c8df48419d212b69c9be9de592e1898bace19ad8d6c8780c1b0ad068fb6d08d5de9c5ff0b323ef87401f8d7f7ae8421baa022ceaafc6b48527cb12cc8931071bc648d6c2ae9a8c5a6255726f45868dd64e03518957d9eace44e90a9adeb380d597ed7100d61f0b6a9cb0bfc3ff05de01aa557d6f477d5f532cb29e735255795dea5ce1e01a372f53c2c29716c7d0856cd82821bfd36fc9716b26cd0f5a5ab20acedacf715a0ce093216ba1856fb474c7947755a5862d5e1900e6b43e951859ee9d9ea560fc41b2df520dda9fffe2bc767e4c1d83fc34be8eeb57d9c41c36cce1a856e591bcf2904bd319e09d2c29e9ab4cfa8ae9ee9b98336586a4ef62b8707addc73122dfabb8f29dc0e9e2bbe86b6750ed45a1f0173bf9a837e91d4fb26eeb537b72136760e5ad4a2f1395ed77b80ebaedacf88e7457f6bb1053cdfd383807fd2fd222808f61f1218ca27658bf68d4bd684de5d98c672b9b13c4bbee84bb129232b7c1193e334b792adab0221511d92ee5a4b8e68ad344dbb428da5c0624cf5d3f1e400a256340a76505214ba95a8142c1aeb4a6bb34250579a20cf6c5b33d90219ba180e5c571a023376e69871ea39b73e3b5476c0a208e1cea666eccd18fee895662b8f6ef2ba478333bf9dcdd349c769a894f437e42cfcf0f93b9316b2736dbe08321963cdee7f426a87da22b1b5f63b4c2372a3fa8c2daf82bd132fe83b48c1cc3338bb601d04fdd51f294f44a9bcfb941210780c25706416abdd9a9d476951e630369d932e5720d4a607f95191d70368464cb1aa3db6e90c8a18f347ab5d7dab119fab4d2d7dca11f9c43ba9a3202418cd87912a044f9daf0566486c1a7697ce0ee963838d041dee7e73a4fa1e29761e2677cbbad6854c0111b739925c72c61a1199f4318e9f7202c6641c79243bf7100fff2dd8377957b1d135695136afeeec1a7295ac6586797b986a74c15b0d469eb56f2a6139eac3c3f6ade6e05296e17d380080a91c4c22f961271348ecf2dd291e747ddf4d25bbb16f3e7f3673f254530cbbfea050cb9123385b83d12fabee9bb1fa0c0be15e388c145d8391978cafb7031ac9e216c9cf05383b94f966edc66db7bc7d05cc70cd3e9c85810d7d43d7fb0004577fb9abdf6656069fc73ae9ccce1c4d5a914b95508354e0fd51f9cdf1891a3d91693fc3fa18724ea7460e6bbb734cc9694b19fe9849de9f38fd5dbb38a7253fa3793675880690e143212b8763b9419f5cee9b1406258d7356c6f5cda9e11399d7b97223e8d1bd66121f52b73dfd8a6eb223af576f23f35e49a1cfef262522da5024d42b7b057e837d17d4055fdbd6d03854fd193906dad4739125eaa5cb3f8bc954fb23d9bc83aa2e19ce2971c83044a7248a8837fea27c2b5f86c6d7c80590239c005027dbdaed9c2766cf28d2651f0b5600b39dac4b582a4b3a655da432dbdd024974654ea40c64135f1d2d6e4a6c4ff043c7f442e8d8d3d622be589d130a5c257dbf03d14d9765cee61d37be444baef4787d550f36b311424fcb58f021563b775cc9cef240beded8e6f9400ec7930f359e9afa0b97588b05fa922bd10429799d7580fbf68fc8e01891e35768396168eaa08e434b0dd6990c5ce03e8b0a623ce32de7169f25fdae5377a9e8aa848e039f6db8e9944a1961aa0d6b398310ab94ffb275684e747cf15890b83f8984b47d39147f9af4e8fdf02ab96b7d8a0ec6a496aa7910fba9ede0a0c7baa80aca55169628d664eb7b2b87b54d7d4cc91046f75591d81c84ffd22627cd2366dbab703847f923062c5ce0cacbff0ac9622af83fc9b804ff72238ab28a985aecc9cc87551ee59a95ae250eb3c53e04a0ae202136467e395d74f69745b025019cf7bb98b39042fe76d579f2e67f0c62718f3b8adfb8ebfb661ab258e133ef45e9a74f195e35f2c9b8fe4aec01dd939e4a47293a9887a5f8e385f0f2e7058e5a8c025fa8046734cf2535c98d4407c11a7c6516f597524133ebe0338ed46ca8e6fabede12e7303b54b8e61d38cfa075e21af11b08f83864b5c83a593f2a80bc410b5596801a4441b0491e24846f0e8e98b8bf3d68b5f9762decbcc2597afec42e20566b1d97d435c7b43f3c7851e3eccd04641b80232b3e8c4577bbb72974f4f2095b88486d86b1466260c7720974a3235d593b934d59d264b3e974da1220ff8136ac9f24ecba5966f1877634f53e7a3b27f3145b450f7aae7d1eda09056fe914c38253ff07ef3a8e63cbb2e00561d5341c00340cc053a4193479740efe1f1b82fbd52441cc8023a006bca0c6a3cb99e5c3531bdd6ae65bdee68dd75a4934b5f41f5ee7da088697f17cb80ca3f956c28f6ca3358ae4b3c8a799bd596292450c0c5a2640ea073d7c4b6b0ec9770d3db36266ad3bf77aea832d14ac58aaeb9f7446740c592a898aaa8fc9a63915f4f9353484542ba1e303274a577079a70b3192b5f4d393016104c557f51bf15908c0c930427632e9b1603715916116ab8dffa5468221c14b99af35ef6839def90521797f48763dc53857538e7080378123bd229cec9dd61b7db32ea7774c998811f12360574418e9ffd803b47ba85e0c59cdfff5dacf7e4f17d41cb51aa52bf9c1ea4f4e2b8f3a003252ff62e7c47db8a4cdc41f9dfa67de49a345c8a4a4c9fa40375f78ed5b209c0c57102e1186c88c317c6bb437b9a51c54c845120dd564b76f14dd47f0262f613126dcd5042456bcc4738612e058b38ea6ee7e2ee4a409c735c48a8d98b41d6007b644fae075eca4849d6cdd346897d8923b4c5f2d5033441a7652b42ba630de11051ba8ceefb0719d1fdfd20c189ea132f2d6362ceb10a6173547ce061a32a348a774869d05ccc7d18c0ee84f5419697260073ca6e186d4297248673498131a13f0b3e5e3bf7ae56eee0dae7fd45b955ef0229fe171c4390e41a486c8ca0177f965532463fe1426f90a6d5280698624bd967565ea8c25a71dda95b22e3400caa58ca342e7c655d8cffabac0b165d12616c1fb049fab754b31357f49c46039ce5b717ce803c3ff9de756e8b3c18de7f5dd220faad5508cf52ab244be45091790698d241728151ed8500027829a8cecdfdcd1c5607e62e0bb4f0301de1c09397b12f33a70d4cfb2bb75c46410123a12641c5342a082814e5bf131cc57ffe9bc3558a87e35a4e562fe4c4a20cd280c1ef2f3fb896973e271347d67664304e82adbd7b2eb73721951cb60e645de0d14f7afdde400007ed904b057f62540f3fe24b442f1a27eee3d244ad6212709178362cf6e50438b822dad8b98e5e297fd42108df4338f052c078f0996adb07e607bc834256c31d865e2802140ed4410a54206514329bf3fa6dcafffdf73fdca16ab8d6a66b94acde0d5b400c1a72048783620c25d854243827f2021607ee4b004373621758869b45ee954b9c82524ba39aea2085fd3d338145a809f85a35525ae875923ba5b7fb00af433f3a51e03d728fd8b9d04e8515afeb1d2d9b979f92183c7ec342af09bb27c235d9b23bd29dbf7c799a1a9860802f5032ebac2efd6f576ee0f70f93671cb89ba99e33ced59c4eeb5a20aeb4e2345c4cfaa0893c23f2cb09ba4cf0cb1c08433cc8136adc259372a36be8eba7a1bd622ed6cf7933339efec86345f510766cd9d96786f567573a110973a4d00baa24d875d16c9327788a814dbeec67049b6989788f1f43e3e9735701aa0fc890548b28f09115ee469e910778c0e9f0c44cafe1e6b8261f2864e08b49fa97dd070a55762c1915727aa2c8c9ab357898550526275daa1770296c5558821b595dd6ccbe795527acea6692ce2d85934cf8a6b9afb7a8bf0fd9f79e6a6f473bca89e8f62a31c12b38ef594ed024ce6534c36d671e1596e90ce855712a0ec51bf30be5851fff0026f7b02ca9ff3207f5a7342029abae89d8f2de7961bd01496a97be19fcc8f4be756103f3ab79cdd77df4dc893a6c5cc42ff18d89d775a5035adfea6b277acd3a4d060aab264231cd897b5af17ab2e0d416b91cbe528d8b829b113664905f54f6131b6129ea6dbe4fcda8abd1aa29b42af8f982b285cec7d1f2aac9e45a3183bb9e2c400289547d8a667a1c773607b4780792bdcc8b92471972d65f085e09ec49fa0458487c37bca53290d1b7ee603ede6130e2ff682f4d4849c4555bfef27ba1742853d2cdd794dbef7fcaa2070fc4dd37ce4e609d917393d2ae741e1b3a13f6086b9e56f398a27cfbe2dc0d3a38b8a6f11762d3d703714213350c0767a9deabe4441ed8069fdec29a8adf2fa5f598c38520ca16faebf109daea3749a0e0f96f47c66fbfe6981dba7b370caa8b038445ad50916aa7ef94c832c8432dcfd3dcd708e7eefd1a3ca8fefcdcb32061ea06efafbf6f0ef43f6dd2b3f37e92a7a495947b873d15b2a4d72a97c8dba8aac7d3afdcafa2c627651f7b333fa4bcdfe45d07e2353290c7e284aee26ed0de36bde45b311ad4b9030eb61972cfc0b8f88622fd2d6f9be85c2f959fe035ecb82cac355716018a9e6a5947cb517 diff --git a/zebra-test/src/vectors/block-main-1-687-121.txt b/zebra-test/src/vectors/block-main-1-687-121.txt new file mode 100644 index 00000000000..fcb86df62ad --- /dev/null +++ b/zebra-test/src/vectors/block-main-1-687-121.txt @@ -0,0 +1 @@ +040000007605df9ee66f6cfb78e2ab05017f060dfa3892955a450fe4f0e1cf0000000000c683414a5817ef3da22b88245e98f4fa0517556b857ed85e8052db3208b7f1109cfef90b13396ee098034296de1ce2b71afb5e86a566eb0c7843a655dc397e38b85d9662400e021cd82e16d5000000000000000000000000000081000000000000000000800475defd400500bfcfaef00c3783a9f27222a0c0e3bb3ab1bc7e740a40be4e881ced0b6f843714775ced53c8e19fa15a2c1cc1853d1d02eb1336447bc2b44c3e653bdfec315f9a536bf4e537f3dcdc08f7b3c8a5ab150f5c11eb02515f6bd2c5f947d20dd174e828d3667a3555ef0714a521814c0ab97728bae4a83e27b9158ebb9dcc690cd3df6a02a5463d7952c113f6ac41fd1d7dadf5701a9a3fb10707f16c4bf9153892d5a85e960757c8130e5c458e9bd6e91108adb1349dd630d174489dfa131dc383c67267d1b38092931b9a4102d11809f7f8f5173e60d20c5000f74eb433da63e9ff41b1739a8dd42c6b5eaf281c6fbdb097f64000f282a5f636bedbe913c4fef508f5b8b1d636b881d5f5c662a1097b1a3f40f24b03d05b7361edcbd7b3fde5bb9663b0f98c2546fc2624bd2f1705a352d552d6797c41e3a8d9e36a4841b7946d55a61fc96fb5b96db2839a6669dc4be6015036fb970dd569ec67807c7396d8919d961258871ae8792f2c8b525ab84892e9d79b65abcfef5fceaf0273a3ef46ddae7b80af43fe77c55c7e939377628504350cbcca6c08cf6e74c368502af855454f1e0a7e072d89c3ee8c222ad5b270d13e2873e8afc21c27fb26709e4b18ce535b08eaa45dfad415f25c75b9839c0736767d2ec88a5692c3728e1cabe13111ecaca831282c8faa8a35c645fb63044e033a660973ba1395da0175e0a4575e02b7360a63ecf83deb053e1cb4a54b6adbef521f1f8fa30b63180de3761a4e4b2cb82d4225ad61adcf0a3576d62e836b54fa437950173979fb4f568b1ca9ebdd658ada0cfc7274478f5afd5c757f063975559e41aaa73c1200659de497a553522ed5886d4147a7f172f19b98cad9d15c571e772baf19ebe2091d7b27c965a4aff349b5b84ccaed8dec828faa200f37cd3c6c1ce55b9f82835904a35e6ab65ff7007802e4a17821837ac7fe07e1dd44d91368f294d4e548132ff98333cf27171206d58dd2e1f62f79c9bf9732056547c559dfa96571a6427336ecde8f6aeddea9570577ac309543fdaab02260f1317834d5df3cd069260c2177a234597e71bf8a61602c0e7c6256b7b91cd6138406e6ce54a27193b2d3d0deedf7ca178a59a7c5255d6daf59976714dbee84ac5647c9cd69430c81f12e8f8511d5d1e8a50407a4858f719865a663f1740c07d162d68086300f636de780fcf75b9ecd6c1854ef2be3afe70d9ace05dab623b72c3608057e2337c7af087fea3bc9cdd3db2e1391a7355aae847ad8e9f879158e8f342b06c296d4d5d6365dc5971a792fdab8f90ae7362323665023c01c31189d4f1b0dece15afb2340aa8bcc3758d769e3fac7100dcef7a1fa9017da8b13049a9b710dfd3f9acd5258387148aae7e5398b3f48a1766ffd63d1b35b54c4ddb4e189759dcd5b4b3409e7b89c2d91e0a8fef3317bfb3226ece121ee8bcf17d3718721885c0e7e7a66c92f5df942325f1b149c0bfeb668dda11b03f150f536b0d07d816d9f1f26ed14f9793bd836c213ca40215a6d0ec0e9bf34fe32290dd744df9f2770fdab46b4c3a7e74489e5313e853e37fcf38d78221c43abe044c3047892968b0bdfcc421f127c05693dc637fd8334829dd5fe83b2d97e2b862cedadd0610cae69ac157664825ec9a6fa3ad928cd1604e1546d48eed3aacbd2364bfb6bb4c3668b154047f854bcbcdf847b82bf15a20ef7f7b9bb5a5577f53b1eebad29dd67cba705b77e4cd4b422447a9d810d52e58c3b82592053333805512c2bd622db5a3b1fdc1d816d71ac5026ed4a99940b3e20a031119a99c3df2afa5eaefe1010eb65ea14b3bbf31c3306a17ed2182c93cfa959cb8fa3f727c31d6dea9391f81cd38fd23fea060c8058c61581ae5465e84356413bc94cf10f04050000800a27a726b4d0d6c20000000051be1900010000000000000000000000000000000000000000000000000000000000000000ffffffff050351be1900ffffffff043813f60e000000001976a914be62da59de8993dd79965ddd27629b1ffe55e46e88ac38c94d010000000017a91469a9f95a98fe581b6eb52841ef4806dc4402eb908740787d010000000017a914931fec54c1fea86e574462cc32013f5400b8912987286bee000000000017a914d45cb1adffb5215a42720532a076f02c7c778c90870000000400008085202f89026bf5fd27d6465ebaccc763bcad7467694de9e9ec7eb5797a8e0cfa1ecac6c81c350000006a4730440220159b9f59e64ca403709c0e48b0672e127cb5dae5d128c091c792382e47cbf18d02204a0ad5533e5ddd4ccf64a17db7f2ecfc6d42b5cc20494bda894779823cdc0f57012103103448d6d4d8adf400144bff11684883774ccb0cb1a69bfb01b885fe10486090fdffffffa79d034d79b4eb170a9d0af0f40c17a30ea237abd24bc38d6fbea03c13f96897240000006b483045022100f45b150c20bee81cfb809723a8f2d9416f087652d989a1190683f85a52b546ff02206f67f6fb60aaee40c6d6834e95668dcafcafd74a947d6cb9db4874b27b8230c5012103103448d6d4d8adf400144bff11684883774ccb0cb1a69bfb01b885fe10486090feffffff01930d0300000000001976a914124bdf5da18edc9126f5966e276da0202cd713f488ac00000000000000000000000000000000000000050000800a27a726b4d0d6c20000000079be1900017b571ed7ae58b0ce378ed70dd81c97a728beda348e90460112f0a28edd9fc6a4010000006a47304402203a6af468cc6b9331477f7990d7e2780ad946e3fbf225e66c445f2b62d4ef3a4602205dd34b459559e3fe2105939fdfeac48a347d4be4868fb7d05fef09e7c6aafc540121027cfc0fb5082fe7a09d31399966721a7386eb580c9713f04356c68341ccc6af23ffffffff00000133172a80f42d14a7aa803d50aa607bd645193b6e9d4fee50a2aae460acd04757c72b1a972427756162cd86dec963a044b16aa9ec866173006e4f2570e7e69501d517c370eedca1aea4b7dd107721786decb9984ff07bbb3f46b436e8fd8d06439285d65d421a101d9d78bac4afbb741a9f86c7411dc6845bba4b96706cbf44b47d245c99ad783ff725f06522da68830d3656b2faa0a3a395f1d15e349645100a530d04df5fde1e7d0cb35b1da6e29b8d26991ad78333ad4de00e080734e1e24ad64a2277c42a2f63383e63d92188c961b05f68ddc429b3bc21da179afefed3742a3019ab773d7e0b46bc5cf0089f94c5445cf72be11538bbadaa2d05320b74eccaa2415ca32d39e2a3ae19c7815a274859b440e55e66fbc1bf16b01337dc2976b2259fef345692733d067698c1f2197091de4f48fe981c3c2f504540e536ac89ca9330b232c3844a3c8db27d1a2a3e982adb4071da8e8d083f002db6de924b8af6ef807a43e5b17b3e5f0a36cb3def7c191d97835dd900e2396daaa5395d17831da0924c5d5d80db236bc396778262a3422f2bedcba0be904b2c45e49f593d2ce299fd97e3e98877a5cadf0e3a7f87088a5abd34825c68cc5d4f488b018d00a185c565567096e1456352bc8230607ddda59fde7bb656bb6e455fe6cc68e23fe6210e8d535327f27ffc1888b827377aa8a16be0eb0556c4c779243e348eff537281f16c7f008e600a563604c48c0b199aecf3692bd9e759541344781211ff2ba150e5c03097e3bc1e1dc907a628553cab0946ec29b663307faff2a0e2b0c5cb3ccd3fbf9752fd89630297b8c6fdfcf756a9a5b62cd1128aa8b6ac703f90870646d6ab66c372ecd785e607e4335f51710ad26d131d06e09dc18fa9608c0509de08dee22eb6f20b47c78271794723297dec4f666420975769b9d86035fc87ff64920d49548eae61f65f4aebf5e603bcf1d6d74c29a7aba86d1d2fa0fbd4cc6b915aa7b6dea803c221312a3fa8c910042db68e9229d724f53b6a4a6e4f60e9713c3ef3907b63bbe2ca79b1875c27f2583cd61728c9b3f7e336a8fdffffff862a5b7d6b89c915621a6c4ff2c419268dd68860333ba6e4ccebae936f15ba2ebb84f272390826f138201b4cc40898bca105756609f93d08c581341343dedc5d7065fd3c04cb23bff3ce2f847995620cdc57eff052981906859fa4a58aab76df12db8837cbf89c82c5c6daa8c5abb1d2163ee8bccd79b91b5939ecde8dc09e2f9675221c76f972b456531c82c385e2dfb3fa1397faa91bec1ce90edf62724e796f362feb5c7731cb8c8f35c0dad9d4a2ada0493bc09ce3f14cf723dd9195805049da5da53a15e2e7358ff3c09232d792b4629322c8ade8a2858994dc0fbbecdd5f54131fa1419d20fe265168931399a672804f7686f0e3a27604e0f6f56cdc0000050000800a27a726b4d0d6c20000000078be190000000000021e47aa4eadbd33ccd480e432c39f7510c78e49e31f9d13cc09fff7428c09b60091b8a6236c23877cb1c12def624d5080f991723b192669a345471ba719d79e136e7a3d7099777adc909db50d11f87615df309407d3460d2b2924385d39ff338b297d1dc28724a7dd6ac107bcbabdf76fab687867faed2b10f6c2fed37ad0d83b564943e27b01c54be637a8fe1e568c23b595edc57a3aa57662741fd51d078f95b08039a720112db1bb3a4e87de8af702fabdfc3cb627b23b1882eab54c3683c66e520c7f1efa1d439ca330a241188fcf0028d514aa707b4e7dfccec7dcbe1146f9e23eb7a706aa0547a048480e020b32c99ec886c99d01fe7c94e35fa7950c284bc25a7024f7a79255ea5fe8ecb5cbda2036dbd29f838146b5c7b3c856d6086d9b1d16b0e75cf978b79e4d85e55cf177d7bad41a2e9b6b73ab7b99458b9b57053758565f8cf27e6f7c461a20666ad149f9354b2241b38ed098dfc70001a478a30f7acdbdbe755c275821c7f98ac12eb083a99a79d01f0516859b0927d649e35db35f9898f2475a58236e8711d1d5f90a7e6b6d8a0cf32a202ed7a885c476f9e11451d0839e1833231c508535e0d591a75e411612376631d613b8f971b7a3c277d1edab900b689a33a0d475e9556f419b08bf0e28bc73824fb669172fa9b31d516475b1a312d8ecba5796c6b30089b61e829a0964bcc04c8e5e0edc2a6cd15791eeab6497606fa5d3560e98223e5d69273a9be8dcfa93d5449d51b317184256d1a90f158aefdcbc750293c8cbaf0cd0f0b27dd5e731e13c48a56d5a460166d9c2ba3e6c6488b3f4add63470e42bf9d7d467b2e254b37509793552f19c9a055f4834002f5685a21f49d0429cf9d7c99eed0996d7cac9cdbd5aef54808caeac1c6c2abbe3a84b7f9f0f39e43e157f1b606f0d963047c9fde62761c577d63d260be082989f8e76f85cbf16565685f8d14aa27dd8fbb613a6b8c1df38178ee3e636deb51e1c166cf533a5b9328d179701810db6f2cdad91f01f8adca669ade5f2ddc2a4fb458bd6f8d7c81184a592cce284269bc8d4f625cc0401179c3f3152fb3e29de145b2624e0cd528cfc77559bb0bb79e904c3098bd7b8966fb0c0556e0e5f66af35df3d676c744bf7a6fca50dd960fe1e838441adbfd4f0e9d2582fbea9c4045abbe6439e48427f3f8cc5d277125c63d73cfb3ad25ead823d1a9f4505909fb92898846055383500545d8a205d8aca12ca55fa328322fdd3fea960c5183d0710c4e9a4222a17e798dc7a0f16e81997899ccbb5ae7405bf582b8bcfb25fd8459d776471b289a22510ed7f2d66c10177c15e4211012d05bc3b477c69cdf9f44b60144a7943c5259e8a54af82fb1b8ac91eef89e186d46fa1c5e0855d3369ed9f722b46e803a3fd3049ab20cc4214ab8955e5b6d499b51a8f5d047c6087e3a97ffcb7e362ab5102bcab3c4ce2b01e464ffac693c68e55350e07e0869bd76f2cf6f4ff3973141d9b661c225708c0e18a7d1ec2989fde061217e660d73bf6299093f9444b87e6ef06abe0d1d88011398418349d6bdec68b7e38c6fb281cb3ed1bdfa21405c417668a6e992d05630ddf24e63452c1bae9b4d9ef61d5462d865376043a1245521c27e788d8cfe8dd33638e9c595dd53e2e64214b39a7b0eddd1cbfe21f92c9b5e499a3f5370a1a980f8578d751f0ccfbcd1a92b247c665791fb7664a7fa0fe8077ecfa1b4738875b6d01a15d3b8bc6c1850a5276c418a0f6b947bbb772680494e4c7d7f77e44be847f42497a8a6fe8ad1a54eb1a0c8866dd563658f9ace5572d3ca854b862580d29a8b29ac165ef1f2c88794035f5112719723f05d4c20ad220da8bdd209e920d9dcef3a5a5e2916c22a77de92c2937b31f8492cd666c4fd61fe03fbb9e39f6600c3d4ecfed1ae153f4db2df4281401fd585c596dbc43861afbc103544f2ef48e070fe7d8b11825d39224b7a3a7e22088060cff387cd9a8412773d5b9d85a720c12b5a936b09cf5798a5f2028165fa0c2490d7292faa80f76507412139a4d5254b0b0f002f6a94ff51734496e78d41c888e608421107178254ebe5cf3969624e407807bd238229ef747aff600dec87eb29834a35990751f53298087743c1aa77f05f066d0eafa53c411ced345d1612b66e1f7a2ec6ce97468538787ea594d1cc76201c09b02caf6669b41f22d0fc3b52407765cb1b696a1e972c1c54f2f6f05660852af5a847a9caecb0e9d32395fa9efdb90d5e98718f4a5ebd65c82fe72e2676664878e9e7b90fed5af7cacd06a3a130e0ce238865df9daf6b1a919fac80340420f0000000000ed17182c783c649f53c0ecfe900a58cd818e89d2784f750df6c906999337dc10fd601c93b417a4df52f6529356fd9276d37d672fd9ffcdd589582f8876b4d752bc47278171d269b58ee46c7a90446ebe66dce90d546f03e2a1495f7a4c8231d38178898c058475b65b5bbc4db4f39f317cb51eb9178f5df5062e21fc28d8262fc949b036a6804c51baaa13240a47b8633999e3ab7bf2efe71cb4415c8d49f5ebbd48298b6af2eaedda0229e4740bbdbd72369a32a9db6da8beb5a7fb0f5e9d8f8bf31014d393b53584f01ad42bdbcfaaad1d19c6ed662d11d7b9151b745cca010c7d0148415a6b5855e2d7dc47de1f868cdc0f8eda94b131a252bb5d9f7681868b6628143497a44ae7667992bf17a360e59ebac5cfb06d93f9ce1afe86d2b089ea56186488329a2b21e33877ae36cc06c2e3df25aa0c6f7703570b457f40cc9292c9bdc6b69c13d67ae20b4ad208dc5b31f57f1a336175f7cfb5bf124eba524c2d6a8752fd2336d724963ea6a72ad22f05680b2c15cde751c035d8195741fbd314770ca5a103d91b8a41fbf959bd6be52c0e8f3a8561052b61ad59c3788c238b287186bedfedca5638b6cfc2cb88fec9e942b5a9d34609ce05410cdf2a253760bd102b52b706aacb40a2d341b1220416e44205dc346bcbd3c7d72d4966914f7a36488a19565b46e01b147c49d468218698b1991f9bf2acc549c1d083306ae4e87b5c9ffa603f60a1f4a817e98976f07d201f015e5a8ca77a05ab0a9fa500896405213ec5095b636ae99160e7f6929750130a6b9d1d151c512fda12b332cb98da1cd79e987f48c1a2e5e323c8fe859f9b833fd2a0f287f2c0da5a10271b5918d2f0cc9713d8573e12d13c1a7f4ddc5cedbc9dbadbd26cac882437ff987e97c42a99260fe04f56c40b128f43dce0483e78fc691c1f373989ccf09eb3a2e9aa5b3f771cb8bd217cda0a9a49271c2aa9d6761046ce29ed5e541a67bcdf489e6fda04fc098e91772825e383216350e4d1d2a6d4e654b3cf543af2cf99afe04b9458829316bb6746d658b5ff1a48b0fea8f73fa5b96d2b14b28dcf2781fffeebb4a95b081b31521e784f2e5d79be90875dfa2ce13fc6d5d5ae80105aabddbd134874ab8f1707f1071bf47778f9b2eb77424e78fd9dacf60643b98e835a81cb1d1d0d5f75ddb186d01ee93b45a2c49f5cca77c4a2176e379afc788942584d1d3fbd10476193a54d4b5cc637e294f32c5e2c31a871b9d387780183cb895a9f1eb4dc911b3b511af3e65a3b18379467ec6d6cca7f784cabdc50c2be028265aa7d588a19206c14b3e492cbb3931d52d92bf2e3496ea2996aa88ede7f3381ccf341180be1449e6794edbf884217bc4af7255ffb2a86a8f009f2e8d88a0c6c108252029126ffa5ca873f509f2d4408ca0b44e77e720b5071da9d7f7c2e8f427be589bc8ba76a51393cd456ad30b8d5d0202eb2475a9d2e423b42bd9a09851439d18e11b36ee8d99639678009606b3a4abda4c877317ec23cadd89990470ecb756c2b43ca9de6686ba1446bae910473172efd58cefaf87536eb0aabab0e40fd46c99e7e215c1706e52bd9e59c5f55a2a40868a092ac583d02b579083568cef0fc086a067857bcf35dbe76b34d17976d448882b9a9021b20180f64a672b10386626aa501e10f4c2a490375f176b995275a7b2b69a045d413ae1b9fd29f005c275e906d57fae5771159848859a3b4e355beafc914d684188da6046c8979d92182b5e4773613ecfcb56411b8aaaef67cfbfa0ce6be65f27bb01a243d343e5d1bdc402aca5e19614ce50c3a5ae6bd2d966038f6f677b5bf9dfb5cf7c1081b229eaffb6f11c3f7018e30d28cdbf5a729b4a0e545f424539bee531e5249dec1f0bc40bf4db68a3a3c7b014a0cec192788ad7eb80b0bde6b21585b6719e678e07a0f3628e6fdc2a932770447171a898cbdad8732a9307f7f22230c356af49fd412faa85b827c9d827e73f2f38c72b238228377f8afbf4e2c738f5f9bebc1caab0797dbc3faae8a2b90588724340b0da20e6fbc21f11d36e8b92f40e54be902f1817a61aa59d94bc14f8d34e1b91c5550b7c6f0baf7f598a62b32c80a51c2ad31c9f83828b456c2d7cc09241f84ff25586b62ca3f256310fb46c3fd17cf2ae7ae91343dfcdd67d9bf8e2d92572a23aa290509e85b36867efb64e0fe9f58061c2a27760d818d3795c5e9cae8f7bb3dd52a0b3985d04942e1d384486d72473d1bc48771167b95ee2f6f2ffbcbe70b639d1e63a383235b26d1baf16b8dd46bf7482dcb00adbcb7c7b87fdb1f2e91944a277f5f9fe371dd90157545141049d70ed45766e06d16f0b6b3d86e8da76b234ffc480aa1f0dcabc1f8c6178cf5de43e813a882b3a183b1827bc6418b96babededa3106bdf58d5e14927289fcd161fb0b916e884292f01481651ede45d1d7bd0fe47f6e0332bce447168c7944cf05fc06489a9a1334fea0396e9d2e9d1d0f2aa5430fde45db027b41bc4c877d99123e517b695b16fe8147f61867a93414bf17ef22882c11cd292ad1cd1ff51a67c3cf1c819c0c693a725eaf100f64b7cabd1d61cb9f3ed82cdb9fcf7dff7910f2af53b4d96f29ed53f7d0a2008e8d234a7017518c43d97115d2366debef4412afee8c4cad4afc40615b3a4e985122541d6a160f235793148ef4a69002f4408a7491c979248e8970eb889172bd7ce3e0ef94295dd306fd2d37e4e3e592e5b77ea2fa57735decaa6740d87b5defcfbe4ee47c388d86b793aba51268c0a1ca037ea6081bfdaa7ede4e596b34a7ba6e98cddc350def2bbf0977736ead1bcf460a9001c3f3d674c8ec63921488345808db89ec980f5f84b0b1b7686cc321c372421439146c2d58c94935394fb4685e0502f9683f177a488145bb33b63ac04708a5dca934af1c69fefae69d9a7d0036b6a42324f7019a5ce27172c8e3b5926d5436fd29ebdf7707267d9c1fa2358902e4118679830ee93a46ce4c1e4dbc739647bc5a1585c0e2a38c389ac25f8f10a954c0978b112f2d5e60b25b1da33d3a320ae1d1d46015ab6ec38eaf0631d403720ab9b21732217b36a957283dcbc7d8fccda2ed3831f950a1bd0a9fbfc439195e9d2c5d189f2676d3491743a0c6d36e0623db9ce94e10f602c16b09e003d0e2e65b06d02eb11f7571df819f0697c55a7f277dcb6e2c343a1c16741baf89ed3b9bdc7fd1c92b0c30020fa97bb26461121b35a060546aeb60e1a371bf83a6c59ca9da95da46ea3f765c4f4abd85377e1aa9c57da4a1ef5c41208a1d408ff8d29739a6f57fbe9801120c4660fd2e7199e04251a0ecb055852800950417b0fbba4a8df78e227c460c077ebb4dae5d7f146b1bb89f7a4caaeb75d71c7d22209de48f44769c29f7bb0ff58ffa831a1cf2a9d5fe2f8b7a890805de124d41952471f91c602e5ef0dcd62d72bcd734684a8ce47054618d29720f462cbba8d80e865e8da6ef2825f93f8d213927640c33663473f06bf3217b0afd9a8d1a34e3fdcf18a8e5729706cb664b2ef39f402e02a69a70e8e5b968b1c5e8d885a53990431f97eaa3593a2659c681270c24fdc27d989ff3d626059b18478a7a6328d253d1d37a9ef79a547196d73606c0053eaeb9723a4a647d9f6e4b14575c69e291f526c14555a0547416cf4c0d0d3ef8be9dcf09703768c4313531362887da1239f2225635fcc1e9c95d36900e1ede18059619eff10f678c3933da64f874c9f645b3ef916ae971e4918e5e0bc03d4af21c9ef828359ff8255cfe978ed1b47812c61c6f3fedcac07a030ea14b272190b127ddf2b9c1b2ad895374fd162f410a4924a48e40e57662038e95806b572c271432ffc40b6b0fc03ff4244b0752c29e7eb58bd2e628e8afc5e857e54ecf0591520f24fc6839ac77d0c9ebee0cab36dc70e55285cdc3d65bb28a8ad3ccb4210a35b4120f797b86096271d35e906e6d15b23ca19d2b0d4ce49c3126db6e000ff18aa24cf27933028c16b14afae3ec6acb5ed75f8e1f2c9388f580baf8c8e93020c1cdcc23fbd41c2b319fcc81117a437408ccda109006191b613b5320ac8f0baacd758c46964ac18de04991d88eee3757b1762d9e654ceac57d81d914d9c23f922795923ab2a888b4ee9ae4bd8ad0600a716d3a051b3e01a3bb3dff7a8c3f21df46ae440ebbdf8fef37321a46633a648298c28ceff01b95f1539beed09431363ffb40748fa36c873c1de3cff9cf01e4394e0d1c759f9ad9699f7497996c911f0eab40fdc15db374a727e4e01650ace51841c046c311d74646bd4928fce2f31ffef524f033560b92e8e5902249c740742533bde154e4975c0378fbc27f57f00595cc790af29f482342e23ef2d3d088a9d641e65db1f0f7469b98774a03bbec1ebc7a5916a4ce3fe7ca4387ae59e8a1380c93de51a32c4241db3061a64fb4be266a7945e75a702275925024eda7cbabadf7d4ae552e7a6bcc05b5f38047a36d34ccf780fdb7c9ab2b8a4b02182c376cbcb53137354843922a2bcee5fb700ac4198de63de1632c345c92836bda1e2ec8274c8a29de97b8a2bef47676ee3efb2d3d6f07c3fcd1429bdeb8a64ab9d8a9940e677186588666fd47ad375df649ecbe25a2750e32b416740525819293561b9a4279c289027774cb7b165230ed3bd53704a92107faeaa08a71c6f8fa7c716522ec39801b4d9a89c385746b7e8f964f6b35934d5246de8097051b98d913a7e704cbf8d133ac172e7c528d9406237eb59320c7e3a17091beb43e66218e1187b2332845484ffd2453a7b431a2657f9288503b54754c91a3439c636a742e30dda6c75acbbdfbde64124d882507db29f5106e04fb2beb72aa37f201d33cd556a88ab2e924e64d88a4fefd5a2bd5d0b175895d2db52641b3769a89ae8296ea248b353b675d165697299e34335a59152846be2627cb9a2492e4c3ebfd9a66ca487f5d01407c23ae191eb48b6a6c1a40735c1c6a263817e658c2cd18fd26ae80eba88aa78d9b0ed01e5793b82618475047d9e8820fc3118d6343a6d277c39e545bf9a6590c0a3da99a3ee922c7006abaed3e8761003c274b540d4d8301d4939c2b0a5878675852eda7ba1775e04c40982dfaf8952330b5a2c00d3f6c4674aed1881ae6fc4992be60b410ce344c5b5733bcd90b5223876d10ef1ae7c96cb14d1497035a4ce255391037b7b57f014640e3ee9f1fa50f63edda22a5ef2915a0687699d9821e974e95d56207e3033b89a969e85cf9d90ea374d98a3b63f808af7c57b6fc3f514e4e0c3f50e0232ece703bc6ced5a60f302f6e6d61a3245cc1a94de948831284e99e7907e664352f4783109ee37ce530305fef34ce01f985cf16cf236d68df4518abf28abc808a7cd775d1416205f2b90804f10d4b614f965576ab5ba04f5a13ef56a671658eb89eedb8fb125c9ca81525d8aa85b624b9a505ac2055fe2c23e962f5128930653b139223d114182c02f019fddb73c51eb540274cd6feb0cd9eb276afddfab356c73fa9354a47af05aa3531524f6ecae6dfcf4d83bb68a73573aa1fd3baf0fcc475d43a551139b3d81a460180a385ea52de72ea93d3c5f35ee9e38e202733d7c8ac9708940a130da51076093996e5fe829ecb1155d2ba64c9aa4b766d2b5707874e2010ec2bd87656066e3791fe236abc7a506cc0a973aac1fc0d3eb39849bef4d92e85d0f2f3858ff6da2d0a35dc2cafe1fd530a833d30cf99a27536ecf4d5a21c56550e4794769fae49024f0f3ecc6b7c56dc6d809858a9352b1da20f25deedb597681e168abe89e5b717c998e0514f65585501eb4421120f400abc0717cd0012ce8f2e016719c89cd93e0d62068bb2eb7bb0163e2bc64db1c4970f20a1062bbfbea2f6a1a9944f402c135f62d84f75827ed179b1db778849a624ff2a65b21a6f984273a2d7513ff851131fe035e889d62226a169e767f33726f6b393669c3853be9c28bb9c867ddb771943430086d3c6eb2fade4d383e4cd563a74d6c652a21d9d1e15b9428d8b6a522ce51a22b10962ea2bb446af1578e7af16c55fd16e5a11d1023a8f34d22f1bcd203e440890b20b8a38dedf8d90309d0874cfa35bf57d641c2c2fc39c1915fd4c194e30ccfbd8cf25137689c0e5786135c1f74577df3ab84670ba304886ccac610cb3a7c2fc4924d3b51cf37f24bf07bb4ea9aceaf95582766ccd9559664b8edf1df40f49d5f5205642221cc48f4e8aa74cf852debe2bd83f9dc18a2fbb8dbe3b3b220f7f38218daa3761bd614f6db85c626f8b47f94ea8dca426d26d278c07ba191aba391529bae8e5cddbc23598b65cb31ac5faceb0764c64cae9ff0ce98081293e6e136c9393cbed89d57ec0ac53b5c733003fa81082f3cbe0bf4498b210410c767db0114c10bb921a55cb2895e313af9e8b0ce2e0b0e927bd2ae35fc3a7910355fbe6bd71f188f04f4085dbe0ebb2623af6a79ff0f4f576bf3c8f90f5118901056333482bc571cf0f52ed75ac6ce7638fe40e672ded60bd775082330ae1ce0c53988b46d2d4972c4cef673202f4fdb235c22a3ce706918f113a4806a1199335c581fec82d2f66c36fb1497686fdb70f12e702dbabc13062209dda18f07a870c9e4978fe2a07191ab1e12e25fead737a06e178d9778e953758066a2d63ecb902234d33c4f2d6899fbe6219009fb0824bd02dde79d2ca1f442fbfeafa4a2a310b9b61f50aff3f1121f3bec1724a0104d70507f9520927c93fe4a40016dd10c51a2270a5eaca9d68a5a80dc515330a1f6e0978b71bf962526b0c91d2e6c34bdc265658438c72d92ef78070e989a94835e277c6e60648adbfe22275380c60aeec385e0bae23ab661c9489aecb8dcb0d22736c5bb498eabc9fc44a2b057e909c0a240662dc7b7a2473e05a9359697a86e3eb52ca18962caf4691532624908684912bd580e098e3fe48c8bc6a917024809953626f957499b012f37d0e378bd7a89e3fb7fa055273d2d81cbdecffaadfcffc0cb70acf39e2303611f6e799a852d37a35abb3fc3651e9fc72119f6afa2ae901ca0f3d8fdd61e613fe923b3e3f47befe160f8cf910bdb2250b52ccba4698aac5932bfb14765c908ab4da8e07212844733669969ea70eec1e7dedac5a6f531728b9ec0f8b39227e889eecba25dfe086af27cb0702fac1defcc09aa263bd5ad2a5bafc1f33cac0a5c02e0c924652c589d6097d0f58152a10e081ed36f46025e55573ce567cee06d3f3730446c95cd2284f3ede2fe99d5231847301ef6bc7120ba5d188380ccd159a9ad4f8414fca3b037a30742e91617794293a7e51bcb6063a008bc119cd59be5c95312c375f695ba8a30e58f2617379457bf8bfceb67afa7fc25b210bb0e5976b07f182e4a578008e4c2b8ca00241a4907e210d0cd8d71784817b518d83e14ae88e7f57ad9597bc08da3c3a755aa7925719c4cd6d5e84bdf3c140a0d8e261c0cda041d0e12ea6a53ccc1d3df9b5ad7e864f60baec265f43af23d42648b9f6fcfcd1eb0873c5bcec6d192391f56fce435c7d4a3a7624f62337b90a3784e5907e84b600f768195e679e24289bef256781abef2a0aaa58e322d0fc1acc0bdc2034df516694ab7112fa09c507ce1d6c91268336189b827012355dd5891a21bec1bfac38aa0a3a4d8c4c3ab5368b9f5a79ab8f303ce4adf602010d0cb5711ae1adb080fa4b0c8157169a6d950b93798dae16d9e654f4b614d7cb9da727d7a7ac12c99b994eebf3c5a4ef99a819bcf5c4628fd4add6238690ede3ca8bb82425cf3c458ca726297b5855fa5f22328c7d2a909f545147d028a2b58e95d86781daa78daa37c58022434444dd9c6b053e4b5ad0fff23ccd64913f43d1d4e08e0451090840ad2f053eeb7234854347032de0165c321950f7bb3b0baaec3e98c05a98ee5f44f67e2504fccda3cd322013539c06a8ca11c118d7ad8fc918831b245d9c401fa6d9ff3c78ae95da8bb4e120021582df40e6e0f5ae582f0a5ee7f8ac9a701f0837639407781a3d6fb458161b4243df670923f640391faf34489c5f58f660114c248d7f01af7f353478630c32b64955b5977e5ed2ba438465da59e4ef182ddb7db034c02b384e3bb277090c17d6db97644c6f4e2542b8bb26cc2cb2a8ee880b97d990aca6448b69185552f23a58b147922f2fe65b8672473e21ca245218e56291f1f3e4b321a44cc9554cca0057448f8a21377d02dd61df6e8ad1054c29dca50f4c4c4715b18b9c414a5d1603eba30bff0785c1d4a7dde549d67e1180b906ca061122460232145e4723056c27c279844da40814340b71f474b7b6ede0816e40b54c79e9426031ae1271a3520488eef6c1d367890e4bbf2c3c38a2052e6ae8bd731c57ccc682fc03a2451bbf3704774dcff2f56e3afb1ce11030fb004fd8c774b779e74ba702eb3cdcef6a76121f384b6580e41ee6bdd3ff089e41d69a38f2ebe7725b28cb299eaf3ae878213f209ab9def57adb5823ef267768140c9f8391caee6e966650ba1dc298f11be12a4ec594275f3c25087dff496eed59611ec383494f16cc07bb0b4db5b7bf712c3d89306944882061a60e4b13048891fe6ccca909a5ced128d683655d15f1dd3b2880447897864b2f54373fa7136aab55dbe679ee8dba455dfcdadde21c20994e015012971d4bec6be270aa837bcc9d61bdf8b3aea44edad682104253b82b362b1757c437e4f52fbdfd6ae3f6fce33bda924379d66809c012e5f66487e9b380ec0ff4ff7cdf399f94a02a6a1f01ac02cbab420f1c57474b799c7583498accbddd2342e1ede40322a59fb9feec625f78805e0e0686957881afa3f99ac14140b77714de79a8718e1ee7640f3c4c155bf4dd6e7edd9668b2b22282f89eb3751cbcb70f0532661ca12f0a0c71e4b9075b62e76ef8e835257001854a5a93baa931f3670065cb002245f92d1bc4f25e38e5c8da78e9dbe1a08e9fd25fee52cc594327f503fe23b769e4ca922671fa10bcba1d73f2a3507b48311405c0c60f24da903b6434050a1413610f8ac7620c19c1d676570051e1e06b3ee2219cf544e46d052d733dd86135d0734c696d2c2a7ccc10d92b81f93ce7a94403bf842d99cccbbff5211e86df989730f85926d973602534906ef60791391192d8b94b97ad6e77d5f4d30e571fd1b7be7347157dc4fdf9e113b11281755807ddec16d6e4bf8be354e94b277f7e452b69174628aae0ce9b885e0f747a61356cee1bd19658402a8325277e3e3ec04639bd301a5de4d60523dd940d917cf1f056890daa6135ac29d263dce437dbcdb96209435222415cbea279ba107fee351d628fd0889f02a6b0e22099d98e058a3eac964ea989ad465566938a899948e43f2006a2212556640a3807a1101e66191c6a17c58685c0d90ae3c9efd36772c371dcded9fa258765e6cdf6caed1ce2b8a420b096e3acd994b0ec861926dfa6757422d7dca28d5717f71f2232502af8b02e9bac5209163e22bab643a0b038bd56c2ed7b6f002962af8caceee01e1aaddda87623d741754b0f746d5daa5da23d950aed8c3467b9f59b3f21d9b3751ac1dba0f838fc64e0912589bc894fe0759d3b22257cea7c580d998796cf80c9a5441bde899e1e218bfb4f1c4dd92f8bec41fbb15918c0fabbb571089a746e528f7459fe03c2c754fa089599ebf7c4b5c18438a085a53fc22d29b7460e0bb6db04cf8276a2030e4906c3e5692434f0a47f4921a09621c9628787af357695468f3a03724c75e3e781d6c40001f113041fb57f8b80f0a0a6a3b5a5e5415643ffce956bef0b3eb47bbf9fcc34261fd18aa1664e6e46afa0e2e4d168efaef6c3d0180c19b9cdf42ee05478a580ce1cab03d7fdc28fcb9dd485917d6a5605193db3429906a8a779c7aaa714448079464f12b4082b5b155bec9443eb135d87ea7d7da59bfe89d42b98e857cb2b4f246c30c3d3c29e91c66b828f79c16bf34beef0b026bb1fb69e0de9d97f8d12383ad151818b51e3aa94173b1620d4a232b18bd8ece6b462ed3bdd4b90acd240e589e930907853890b53ae606367b130e3a064c49a1a31deceb02e467fc02965b5411fd5e6659cfcf20faf9dd53ea586e3797e1c9db518c7c5bd3d201befe3d1be6993562a386f27692bba6d8cc9f4304ee8b7be9a5e99469b52fa7f348639ce37c93d6d82bdc949deb657247d4fd35bb90ad84e7be6bddeb4ef1ff49e3eafce3369a9bec0d8bc090f91fd5b9af50822b99babbdd6d92d44d4f41f2cfe9e746aa4aca96e91274d18afc96ce9255528d584920b6e6f9e2163427a8f84227cf8da91f45ffb720ed0f1d6ddd2cdfd9e83eecd2afdc695f5366843d349ee4a421331eabfd364fdca35404c17783250b0561f64fa9bbd9b6ca2cbcc1657bcc81f1b5fc00f888a419aaafcb41af6386294e7e9038221136dd22ae08375b16c1d5d598a8c3ed08ec162af5ba6c493cefb2861438b9e62e5b88e0eb2a6ef5b2613fcb401b7cef7cf4498f9290fc1539987edd34ac41c7f520ab80f126edc593023060958ce621e7994abbf203128b0dd9329a69ad4defffd7042a81163cda85827bc88097b3f88c13d0c8617461997e7acc8d9604b40bc3305621b diff --git a/zebra-test/src/vectors/block-test-1-842-421.txt b/zebra-test/src/vectors/block-test-1-842-421.txt new file mode 100644 index 00000000000..1e77de6e117 --- /dev/null +++ b/zebra-test/src/vectors/block-test-1-842-421.txt @@ -0,0 +1 @@ +040000008173eb058689ebd96e2ec02799df35a59ec911daf71f671b3d09b3605cd70600e7e2cfb70af4c0019e883b26bdf228ffbfb68d9ede0cc02ec51b06747b903e76b1537c927050539d31e2aef5e0fb035c3baf6b55a09942a34133d8a3c9f32d4aac825e62ffff07209301cd628a61720b554a75b7b3d9d88461addc1ead3da222b89c4dde009a0000fd400500a44797ae856b32dc41632cfc726a69291c33bd3a1727f3d4465b7c61a1273456963cc27a6e3fd3f5e2232bf57e62cb5704a24182b1954045ff2c7a3e7edf4a93bc386ee6205dbde46523042b486dd9311a758e0420564238217779fc71920f92e442d49510ca13d20dd074de90c493fc34c3339702d01a82a541b5f06e26a8de022ede570fe544e3f05be650522484513bc22bd30fbfabac10d1c5fe667cef7420e2a22d99138800c7db050ba815139b87b2501fda50b545059e867f17e00fac30e81ba587c2883407d16e8efc387ec06a0578dd095590c21ba7a033ea83f560c583c2ed9c1d190ac9033e093e36ea54779adb4c5af33fa57d101c040e61d384d3c664f9c2b1968ca11fdd34cbd150bb115f0a18ac89d443dcc2c1f7c9f8e1f5bf7793a88a0c68e2e7c651be9a8f9255752ee0d38a162139070b245d3da3cf146771a3c863177bb486f632d4f4636e0119aa135c1e20e1a7dc203b78b80739098b9670e326b58f7af04a89f1dd8383c0c44f952e326c1a354a1179a7e4621499477e6fc19003b83c06926ed4a8c323c066101d74ae17ba0a15178cada08e6c06d5b7430fd53b8a2daf1c1dd0d2d61cd4ea4929a4437a479d1dd08ef16166071fb13cf3a9bdca6c990f4ddbfc981082ec33e7cba04ee84331a1c2269c1ccb3995031341b53e3a0a6766954551b5d95df28d959c217a4edd033bd93346139191b70561de5997650d3989ed787a1a637cca689cd347af15356ae7e510999f539320c73b263fd615329dd9e67f48853fedaec78a649d152b503274df88183573e8d51a2ff17a4bd327a6bdede3037e4bea64a4e4d19cd1560556cbe44f85c79eb30f10f7f6de4ba0d9fd4a02647425dfe991a76e92dece085c251fdf192a918a50f51cbac0120576827a381a10160f86a9956201178d8183be2231362f7298fdfe00fb13b3d4097737ad1643d2543b83262bb4b5b55f1aeca3a5680a06e1a750f1f6ea7fbc3da63831fd4f0e3e8f3034893b24f4b43348fd252e31f5c4efaf0939abf2880a230353357758e721c87872e76f5f1305021453c06411d7936e4f61acbdb68131168e2e51f657efefe4faedda9b9ce7f7a9b86665de0e321ee9bc09207a7e4fe36937937d11d9c8d7da3d7092eea2fc4c9a0aa7f595f06eb89bf50a2dc3e1c66835fc922b068b679c7111b998d5bc92d109c464e2b554bc15ae0aa90659e3b7e3d7cc3bf1872a37a9c283db17fe4028672184a626eb194f3273470ef56b9ce2820d51002a9b2c7e84dacc5cfc90079cb35ffe32f687183f9d076038b837cb968bcbed21105609515ed8c31d0da01d81634573683149736214be9574414ebb26dce4be0e110f969667816d755c54b3307b70b1d0e3bef65040792e586592c41542aca58e5ece0f92bafcddc56103d3ca91704e9dd0c390137446720499c4651d6d0f07237909390edf7bb0ce712f1b44671fae5afe7c430d2613c19f46beb5f4df813dc374a07e781f162335105a037e35d12dd5dc7fd4af1c2fb3195f6bb1cd940c5cac2704856030d93c218c0038575dcbaeaf053573141d6c321cf3f7ea6d085a0cd074da387c3a13d8151d0e5f619c4d27b47c836e9658288d1d96905950450b822c4854b887c5ad045ec3488d559c7d70ac6e0a79964be11cb16b59b3935c5dc0e4b53b884e694223600f352e0eb9db5fc9d371a25368aa47133c27700ef65d50579f0c5d010374ceda2ee8131726d93b8c1616ccb56c8ecf868a1d122ccbca677ca8dbd88e6b11b4dad74eca4ff6e00772fb3abe8c82dc837cb2854274849162e4793b5e7e76ecd1dda54a5a211f21f0161bbce8d71618d75fc8944db75803bb7e51dcf5533f183e5f82e4df2999d6e4dbe93a4299b8a690cd9e02050000800a27a726b4d0d6c200000000f51c1c00010000000000000000000000000000000000000000000000000000000000000000ffffffff0603f51c1c0102ffffffff0480b2e60e000000001976a9144fc15b96560cacade80c1fc87da50f57176247e888ac286bee000000000017a9140c0bcca02f3cba01a5d7423ac3903d40586399eb8738c94d010000000017a9144e3f0d9a33a2721604cbae2de8d9171e21f8fbe48740787d010000000017a91471e1df05024288a00802de81e08c437859586c8787000000050000800a27a726b4d0d6c2000000001d1d1c000000048d0635287cdf8852d9e69d702b6952082b668ba48ef54210156ce85c4ceb1639959b8d298c7842149d0116e78f74ed74206ac28e1dae402198d5bf9480d5a98dd6b043be5d293c29d78acbaf884af1aed12e2e2aa36c06cc22241f0f3f415c0f6b5c4e69ef6d78a52bfb38a03c9b310d9925d8c6ee0ec2b88efc5b53c9df3718347d33b836d8377ecd1b6fc344d1c8c34926f3cb2bc95fc0cb496409dd8d0db096c37cff6482bec05a7a7c439a495dd032e46d3798fe8c33819bbf1cb5983f6232d4bec8295f5e848d77c15b059bd1115868f5a117a06276dcfe0994776c90c641e19cf83733f6426a195dd8080a9b9541c72b380ab5d378e2a0abe9fd90ea5871a6969acdeaf3d59eb0dc274d6397d02022bf33bedf0d0697f6b12308eda8edaa48adad0c9032a22c1b2f4572144678d4df283bf31b18ba650303fce362ad30bba4b30f9fee9cf2029d99186f1dd9b252422b02c8fa44c1583674f2bf03f3b20228326652710692eaf2f9f1ce657b73313d9fc938944853d7a99a14df62efc70000ca9a3b00000000a6099392e011346f809cdc36d2fba03eac5ce98f93015e16cc06ae175f69ad5cb7aad15640a403ce56394612cb70882cf73cf82873d506a6ff1cee26c1d44cc5dd3a41cd1a0a87dec0bb3b4da35804a4a31bb5717c8cfd0803974fc70c3eaf389f54a1110323a916ec083574fac187a284b042b16ba13c3faa3b58ed046b9f830a27c50ddd4f0fc94e72199d32e17075f0a9fb435667b2a4e2cd967159474f2b6c114c086fec0a25353a7c3956898b15a1554ba0679b1abb2fbb184d956221f793628788039325ac36d142f8f7f4920ea1a920a27d8d795b77e5cec4d279797795c47a8e55143bcb1488e015735f130eaec183fb7ed5933a1cf076bb95691dd03f5458a932fa583e86782ccf699e3407b7cd79a597cd24b8a2f3a3f862db72ff1241ed0c29ac585209341d9877cda0240c55bed3678c923dfc80b3d988c81a020a9f068d19c689a1473b451659092ec11fc64a3eb6690fe37ee282686420cb0d0d0e807cf8ff6e252667ba6603bee0adadd6b33c02840cfe672e7bcc38edc1e929727dd985b22ebdd113661da4c14c388c32a7bad414badfa1272074148db97093782bec411d12ec15b72f67bab0d9d1f8ac8fc628e86d7f87e91d07aaca7f3b0dc7749032f766bd2358aa5a15ec86dc8759c1f973329e6f31d1cb5262a5b370f24c385326ca96f70cabe99c18bd4fa6488853ca8502af1a9382ec7e3ce3b21309d09ffe63c3481a66a8966d4d634758c8ca4ea437ee2fc1b2ac7a22b25eb1f2557d5b1ac104de60c9247ed89347726ea8d839feeca7aba992cdd9f5570ee51b946a45aec6373579c49462e0c63cd64fd92e860ef61728b848ccac9695f6044da037451e4c0fd114b865450755c3cc49ea155a14e02bc914b910e3231ac16845931b870acfface06b83700c9c031085a996827ca082b9c30fd92d8a6eb12fe8e8989124d7f8d6337ffb25c49b8bc2e3ec5d69c8a541573cc6d0b9b452d94711e132562c9919007a328c8e7e2e24f44a68226eebd0a7638dfba53a04f62f215b5cbaf54f39a55a657c69111c7fea090e28544390f9e37ceefdae959418013641176a2cf8ff577a376bcd03f1fc0aa9d9517c48280fd89f0bd02c874de50b61219a1099fb6eaadac68fc8188d8869e0a4c58a9f085970f6f60952681f0e990c7596c467afcfdc9e9451a8968bbd774cce42d623e9ee7f0eb90b0046ac41aa7f1056011a1450177b66ceefa343876bd1517838f5c2d763f463d4db8f209fea232b452a164d1f32fcc93842eb60eb9cde11a3e1097f5bf4e30e53aafe0b87968cb08f9ddcc03e76e8aeb73fd131c8e1c1cd76f52656b111988e34d92334a6ea834e40dd1712fb48d9c6d46e3585895942196c68714225f3d5f1aaa3d40f6b71e710623412167b58e4951f9f165384eb23f3bee4c84a51465f3d441d16bdbeafd745e555937c26c70492371c0777d505c52d9174696a4be0b288b3a6515eea20cc50d6b464caa4d465380146d7d4eb0cc518ee6e38582271b71c2df65322c1d26c68eb6d164276e0175b7c908dc848fb4b6cfd14c3cb1591d4c6d8006c55f585a4d0702de8ba28d77fa63c298e07240335006f9f6555501311927607a6a5fe668a6e32583c69b7d5f0a0d2f1e8044b9e8b93e4f15487671d7875f7ee8a7946666d3172bbdb6fd5fdb9eb156e64639136b93a112c74a9b2705e4f260c56918a7ef175f1757cffaaa3482cbcbadf135e68841c3a4d7f75ad4daa75fd8e217493895c5e40332cbc66e21a43977712328b617a9e040a3969b72efa0ff2d0dc531c4fe5a6a082308e8bbd36451b7abe1d0f901e12b27e0502df3d7aa26ef1461a837f4c5d5b74551f2e93a3aa306a2bbabe86794f6ef0830f0e7627b81c50a455c71696152641e016906f490b697372a548bdad898f0f485347baafa8ee1a398f88101d310569c595e16b391746e8300581e319b04c68b1e427b975a87f8ad4aeb2ff5edd002748f3ea9f5ffe6c5bc67ac067edc4ab89ef8452cbffd314b76256fa3048d1fc55fd23bc8fc35293957fdaf359a33063b6dc9d4efa64093389026ff82ad4b8eec2972590bbf5ed5a7c84debcb37ce7e9c362b2ae857b5cd4c39088c13bd9c527478441005a6f9220442cbbebf4c6a92c58fd483e50ec6ab5f9db29897c10e7ef04a31ff1ab4c7eca9959ba34d0042af88ea2c4aeaae40004bd0a168acd0dcd351d1dd2c31f8e1f96a27caf8cd844a7fd7832ecf83d7c07b9ced6750456703a78af700222e90d6e474ac1d34166974c457b02afdf365bbf0ab4a00154527d72691907d53993de59c4ac0db201414460701325b6acc679391c7b8ddf11a7b8266281f4560feeec68cb7d564be2d9ce3b02c1816b2c681a58599b471c2ae3d0c97d0281c2a8fc69d96c907f292c9c988f734bfa1fb21e018a85b3b35bbeae9c77c5f8b367eab344e28bd53ee2043a54eacb73655ae2e925276f6c68512561cf937888623458ea5f344702002d58347e148ddd7e2e75d638e8f823ac6a40ddaed21d35d1f7bbd896010f49cdd8668aaeeffa773d49adb33d3a9307096cc70ede6fd5e7c3dadbe31f3f0fe6f62f3f5b05d10d1290e76e6ee4201e8357f402527580903a1ab18c40c98fe41f78e3efd7b9de515250da16b9e8f73cbe7dce2b905ce0f8d8d5d4c39a987d356a211480c6de046f4494460ce6fd773f5acca5b8b1da576b63c313abba35a98a5909902ead90ac43a9688272213e2e6649f318997d777c62d7ced62de1e91d256fa8151fd10be68e35f611027680aefdd5a89bb68ccf371d86ca0ff07f054a9c17dc2ea231b9a56b26be6f509bc3db480f95eac649c2d8205183428d0023fda3d2f97a45fa7388bf04eb7e484073f3bf87608d0396f4fe849570e7d11af82cdd02bee3308b7d73f757633221cfd92d276c1b6060f3e39c01942eeaf0f14622399988dd0c5cef8ca635e7f152bbff804cc19c4df7402c47026efd58daed1766aff860b7c09808f8c933716e0034ffda78d7ac13044054be3d3254e61cd833deabee4bff2ac1061f756aabfad7df33bac142e20a2e1698a0884efeed2a630fe67c4df8749a5f933889f4205f173dde95036c9f00b9ac283e1918a8f77304dc57dbaf0e1c632bf2aca5936c8db57f9ea3a1b265c7e5aaa20a1c47cfe5675b1e905d861ef92bdba5dd7689a14288b516c49d99adc821e3d0002104de7a09a8f54730bd442b2c017682c8de1e51b2fa81db34a08397a27adae34e31df2f71a8ccd5c5aad64b3c390fd35d2d620f6f528cdd7df5599da3492d49e52fdc82d38169fe244e4fea7b447dd067fc706bd997b3c90b01e1573557665e53ffff5d7ed0c8fc7fd383fa9aa7ee4c6eedab56a51cba8937eaed4987463a5137cb8e286e763e349b0fc12e5357c50b78a38ee15af724016d71cb41daf0218c0f88aece1bf2430cd74f0d25aa2030f635d49918375f9ff05b952013e914a73e382dd5489d7620e003e96da27c32e27b54974c31aa3c3571b5f6004c6f210fb711ce23f6636b7c29496f76d698cd2e88c0f226aa9e04a8add7c1937d4bce5a8ad6ef303d5d9df98e6d8552005ec1490fb5006e5cb69b795fb2262b3563cc53b0b2752ed37cebd741dfd83962f7c7021b2919ec47652a4de5ecfe9a0c921dfe6d3f92f5bdc87f10660c1238d4830439eb0b2ab1af3e2835891dbdcd58881adc6fae23095b8e0edae0413e6394ff3f874dd03164aea4348553fab01eebb209738f0ad4b8a3caf3d16e3bd4bcd83cc1cad822b707908804b9d15317162be454cceaa543668644132ae78e6387c49121b2661bacb99004ce67a0f75a1782ec4c13aac4a62d4246511f68ba2f444c05fee7287a027f2657f6dc20e2c3a8ebaddd6f7a9720871ec3285f2500403003665c4ffffffffae2935f1dfd8a24aed7c70df7de3a668eb7a49b1319880dde2bbd9031ae5d82ffd601c915b849cc6648ac2cabfba726644a96118b6670c3313fe9d7dcd325e396b7bb559e95f6c9c0efbc6126ccf48bb1061382fee19c8fd3acef8286b6e013f3d5c9d5715cde36a6a94812ab99b60a9554f1dc88e5c6049a6c4ef85021eccd7a76009a46be3aafcbfa08ec54d2ec1b6d2f4a0a061a775f3c2c51e6a19ae078c32d6869742d1eb785d65bb245fbbf6fded72c1e9a220f78ed111046c87af194018e5ba7a6ad9055e72e1277bc03fa0323432d172b2efd16f874f910989074983a0139d38b4d5e39ba1013bb59379c3dd9f8705500c17c77e03844768a416e1def9f332558e7a6be402dc8e3297511d4f68024ffe188412437399fadbf128362cdd0187a1189f5a7a2df00ccf3669886fd6a191fc5191abd6999ed912952e600846de09caf4cf172a4d814553fad19e0d0b6454b4992d0d253186bf9ad8681a430c64258e1fc03b0bbbb8e4f0f6fc540e043673b3281f5f1d0e1eff0dfc19cdca78bbbc0ad7f884004809a7fd23dcb468a15002e581ef27ece8b3b358a1a1aeb4edac93813818670f91a70ac3f7e59cda3e49444f53f16986945b814a9bec972d3586bc923fb6511c4da763a0ec6c1d7842ffc38d3ede51d06b116591bc51e366fb8d0ead72c2415976005c300fee8d5222047b738399e5f2b97a3fc8c322f376b6ae0d551b79407035e0b429f75b21272a52cd7f923e723aeda803e7e7a5067625edbbfd35828800839ce7a9f1e6d10cbbc3ac379b735a159b6a0afa397de6e945b12712e35ea276f25baefbdefebbda3c4fb2194f21e82eebef899fc62a33b78e70326c5391f1c1d57bc630e9d727477ebdd05803691a2c99d6f268fb40a0bfea6e3d0417cb9336680b108944b3844a50effbd8983baf7f9919035cf7c11a9da728bce136804592a483ac0a8dc88310221d8f735e9cb3afa5925cbfd188932394d420566145ac51c725d07cb5d1af92ec7187264dd63954e4d69b04f2b40f1913968249e3ba1942497ba7a7536a189f3af6911c316445a07fd2fcef8a09a3dcd7fe81b8aaa9f1912855a70db3d278ac8e5aa8f224818bc46e6f70a5b973dab96c0f1858139f0ef51ef95e273c666eb4df4ea7d4ffc096586a5442234c184c8a69f98d580a190bc237d82bf9110e3987e1ca23175e24f8a3595de99a1cd43ce4b8f30813eb6ee904f31b1816e6e24de1740cefae50956ddd097ddd2e58a5c7400f220cd181b24326da1e887102365a226a3a144deac6b363042e206a953eded10299a4e99e3addbc62602de858c94e19edde3aa13517479f59b097079227b3dc48cf0cbe07a2f1f883c2ffbdff515771b5f4a92dce6e53016449cf14e93edbf320d38eb941e5ac70a647e0ad32341b991b25483102365096556d8907183d743b62ef8e744d64eac08e868015bb17e8c32b1032c5c90b506eb1e44d19355eba2723dc8b99b4d35b4a2f32a6af9eaa8a322a243cc618150a1c006aca311965a9f98bbf9bdf27194728f3a449c53facf27332af4b7b9b6bfffc94db219c7856ce137b87941336340505883bb63368d707b3caf7c65f5a396c3eb49a495f4896f8dcb40823dfe51bd2202428c537e599a2d1e209269c831a59af34ad3cc98f2ace622eb69b4b1444d0067c82a685862f4018a7b962ba81338f5046682b86b1ecfd78a12a356adb38d2b50b3df63908a51a46472d59b8dfe3b03416ebf57cc577aec105258302c76c69e432a97039bee3c43075ead40e0b2809aa4b2033807b7250f149f3a08427d4ee57dcbace3e3a4f2b309eb031679dfa7dde89c8e51395411a7a17238d6febc576d935a9b317fa2d1b1289f3689d2854da351c2d3c08ee81db7f38d0bc0b50ff072739cb8262630c0260cf673f649fc388f7b0adced32b063cec1ee7877a4c2aa19e700aaa9beaf785e8b9d9880416a0dbaf781b12e3dcb67b0ebca52ee231244d0e46b764a9bffe4fdccc995ce808113d8cdb45d77b412e7752177621adbdec9d2ce13f68a325a8888bc4969571d70b486d8c49ba158ae1bad2046eb071585b2a0da61f33e584791d5bef4dbb9b8f435b433f32b96b7ab69b901b281be0cb06b9f09a1443aed4ca0675f3004a102a5eb16b9945d01a906afa18e7580d72e7f5dc56a45b6df7f9948cf53e8189054fb514833bc5a9f88182f2f7154b93655172c828449862517a53228ef2a3335f58d7af17682dff95bfc899d8449b1615ec0d99bc7973abd39d1b58f609b5c2a1e2e39b25b8219429b881c9caf57ab9ee14e2b14d39328bc36c7dac87eaba88544d10b0cc148e0b15ea46607e14ea8a704acd5b603a037c42fbd995ac1a785b8814d38900550e90d4e8198a252a25b332630277943c7552dfc99efd0c031f9ba643618828f03d26241594533905613cd71154e22ca69f6cd36cdd67510f501ae2a5e38c2d0abc4b459b3bd146ab043c9105c94cbf78621ec8e517409d8544db616b66fe68087801b638835b75ef3f355f88bbd09936a120d5c78bde86a8efa39395be366400cdff71646c1fb772261d2d2c0a0224b0a0c941d9ee9540d8a1c4c2e85e789dd7a27f3e8355cc4651a024a3d74387faf3a3fc3450f0666efbc017ba6c71cf83e29f0844255de61b72e2240953e74f2cb0c4d0db0f8acd90c16793bb567185263fbe2593edc10803b9d6130e8a102f6676d104382497b648cc8042e24fbc55d4e034f9daec5134716de6002f7598514d10e8f51cf0c2c08ad646ec286be8e91a5c99cc99f0ac5c8708dc1df66e923409404a79cc7e90a37c6b583be42d856f743a139482f6192ea3cdc606614066cfe4bacd91cefd13187e01abcbe062537b752d3d71fbb8ceb9112eef0dbbc92cd4352f635390baa6ed6fd51bbe78b908fe5cb0695a2be9dae8405d8c34f14de3b931f0b2f666cdda100e984b5593221971f5a99f035ddfbeb09597662f7c7ece0d5d70f0a6e954a05bc3b8561a7d66d17ac8811b3a0317596f1058972a33d4efa81eedbe89a68598b57462532080b6e323e56e08c8e35d34038d44f03ff18b26b681b35020bfb9adacdec9ee1f564613a2509cf6997e0f0a2160234c1af701c38a81f15d51c002bacfcab248a89158f015c4e6552ff8b6f32f30c8b43fac68a7924969b7ec6f4aac6d33604cabbe96553a6c891a6f2661a072bda1cd190f2f040ba8e713bffcf7bb49e0165732fa2a05fb92e846e7757a06939d377d1b604d94650a661541a5ca42570e58bed229819c8b19c7f05e02b8761f06c7681adeb22aa2edb822ee6d53c4af398cb5f3c1a541ceedd6364a8e344da189ab5c227b9e14e4b42c215b9a9d054cf7ba1bd11dae857087673fd529a995fa1cb5153eede7fc24ca093c05910c33735845fe36a52483ce558556a53984ba0115658b0e8bb85657663aa18afe250deda53b9b5218e57e70f817eb9e5d1a0827e74b651fd486822cbc43682c1bbb0d5a5c6e33766abd1e09b1ed76157f705966503ef1121ed4f378f5d975b5314b561e26e71da1dd74b8c1f9fcdaa3053261fa02831c0b0672348a82cfdd3a6e55d863af03546b65fa7a52e5224f2dc46ed883bde43f39f4b9baa4215209bdb26b699029e7b0e2bcb1d5f5e868e15186d2b57e2d4f2934db9f47ae9525e01424f8964dea5a31798896fe6b439b910a434c6c736b3fb90c85a72e3494c55467caa7303ea70cc84f41da98be3697be5c7f76fda8cbf630031cfb6ca07f07619414a0e7f21f7fcbf96b05e5f06385746d5a0f1e91b4b00c0b570d9ce84bc1b6760b06908b980f7951f790b46c3abc9aa72cb80a629de279051053e8fa34d903411b35a195eab6c1718a0a6ec1060e82175f3f37002043242a9573581d86960687e8ffa6fd58d1b391423fa33548970e8f7db0041fd9fdec37e7735849c14dbc1bf8573b17c4a62b71b2a3d248d1b87854d809d14d18f4391169086235d0a204360380d22dbf039e7825fba97a0551f866e139bb1451368634daa6f38d947ee65d967c54e4fa6929a1bbe6c251c7a1c553890b90f6dab0d210beee76f3543a6a45c216d760fce811ee5ab4130a636c2117b82fd5f6c530131312ffb562093fc95677a7138b11f31e39b9980c6d6a395f17e181001ebefb7a1930af230dbc173c11e1ac6ba1826253e5810184abbb9c84e36d02ee89a29a171c46abaf3e73fe94919cb3d3463cd6db7ecbed7990dbf0edd78124f3c14682350ccef816991bab25d0cd7004526f295bbebe4d7d36aeaada1e3afca97f262b793e757581ab99eddc126102f5c0893c7603566474b6f7a8092fcdc332023d67ec2d9ead93af5a9edec892494eb995a3b91772af009fe86612f6823ee8e66951e52183a2ef996f74e6366f6db5584bd65d529b5ce8fa4aaef1ad3713371871d84a2a1015b0dd09f6c38e817740e06f073b9f5f418fb7ed938b49b4e123a02e92c31d6d70c4464820c3ba58911f280d4db87a50a4a61353fed18a478e5a75e8cae92f7abe9a2c40eb25b3fc5663c91100807bc8c60d95322108ca2c20ca80ba1e910e344ea984408904ab320e0906908bbc90ae0a7bf23e59bc0bf0fa5bca1375a212c55ef2c41419351cdb9ba6a39c56fbd2f4881f24b9f588daed0f962b3312130799193fb84e73e6ee89e6cf262379e1081735cfa8ae526fc064e96aeb790d731b967975696c48e1c9ccb17eaf1ddf583ea2ee3bae97e82c2aefcc1a17adeeac2e278620bf8271931d42a4001d9f6fb458bded0d14aa1b580a830914b16d8fb92cace284d9bbd676e62c6304fd8feeffc9e27f1aab9b4956982b2917fb479f64265390f90e4c9030d9339622e82f5f92e532d1cf69bf23a06491a59a270d31642fb6cf29a550f1e45ce826f98262da2b544fd118f781b6feaf28668caf887132175413471bcfb634df93c59429443c405fdeb7431dd386b9ec22b2094d4e64351314f5a5019825caf2b9fce1031356c2cdda5ddd6a439da00640ce69bde7118924682697c24cc27bf7e866aa83590692fbde22ff7613394538b8bec2f03f425d23fb9654ff21c77f56f1b5049e5978694bf93c77b1cf8309bc8afcbdfb6713e6284fb12cd73087224587f9533995b8bced6f9a090498d33910d89b230fc9442f2a546e2f13419a40c6a5b6eb02da31f2de570ec8ae55ece61397ff8ae5ef2f360c1050e8a7656ed65f9e94162939d5d5d8386f31373af19b3268235f21b8756c3194debe689798f75ba33ce83e9eca3ae259bc3b34cc94b0913cff2241493ae3170b8ae967e8b4c29ce10f29862a06e83f0afe808dba20c131cafd146c2691e2256a8f93c80cfa1ac69c58ef6ee3af2291a6dd8b440e61d802baab0c7c1fec7a21b084eed03c867c87b73def8ce7e3d3608aef3fecd498f2c435864044a0cf913b0298d75c80fe7ed5ef8593571f37ca4dfd032b4f0cdfd03dfd002ef8ee923317ceb7ecb86231895e82d6d788dca42a9f41af3a6fcdf90e9771574fafe259cd2cc185f88cba33a9383a05086eecd1485932a748f14410fe94dfb66397dd5f3b1650e88604e22f13ce24b8bc565a00bfea08c87ea82ada4a1fbfb0ade30059ff184307dfd2f20835801861234303e39602c7228986d690c96cd187e91011933412e2272c473f32e33a84723037ee13a31bff07f6fc5db3f5eec34f20fd9fbfa5262faa303ad7e50dfed014c35de58e2e5c78986c682c5f686d7bed198ecf81da1be062f585f33b8bd6d301bd34f10056b994cfeb05ca9e8c09af504f5a8c2cbd2546c2e75f81cc5232386805c3041f307881c6ebe0878afd683fd96dca89e09125d08cc84611601cb63559750252e3ea1e04a76f34da7860f6d45003795779e21f00f29ec0b17730bf7d087a0becc192ef9368f7be4cc344cf1854bb0189eacb2e47446d9f01ad23443afefb76c9e63c12a5008c4f24aa5e62b0e76ee83e55213705605ad000530c537f411509a1280c5398146bb099e5424572e2322e1f9e491287394206b5bf6d9d28ccd063fcef8bec83e1a3048b6a6081af8b52394e6eb21010dda60946fb067e3047486f4d53f5def86e7c86790e0acb0802fc67d3e869047bb78550926ede36cb837301f4ddeec40250e585e34d4be31110b7f4557160192bf547152d31c8e2656fbabe4cc12464def614f3be63ef60cd892e1681311112cab68f703e6f763fc2605713e191d4cdcf64d437712580c39945955f937a3e2cabfbb8158e3f0fd2457255cfe7b7facbdfaf43a5a68065d8e4f528720e73e934b3a09bf89ec50b6fb4079bcddd4f2b33161e2bddd09ee3ef9bb0783aedf77c2c107b035ac294be3f8ce876fb72131c8f184a81dc27f9fc4a2b781f703429aa09c1115ef818c248c8c282b06cb9efacc7064a8c4c22cd9c3bdfdb97791c2aa824b7b1db5711efb2083a65c694b4b798d47660f05646c45a1790401ce59631dd1b90b1ca9b9b6f4b2a4d818dae416e77a26a29e6fa3fcc98ea6b200cafbf43153cd36125bffde60f25be312c34982bbaca2cdf6a3a0582c295bfd75f2553c12a2c59e83727a1a1530cfa326c1854f50206eaccb040867c0b313d57de592566c736f8d69f64dd9711e672801f2bafbcf1b72bd657fa510d9eb196b9b3f6f06f3108641afb127992537548c1b9ccf8c2a36f778bb796158bc513294b928b1f6782168d31eaa54569d7c93b2d019f14b265514bda89a9496a3e70e8d80945dcc0e82a70ab902b1973ee512919bc641a663d9d8c5d4ce39226e1ea8a83fab702ecd71fe28d803ee86cabb36dfd4e7d956b2e7083e6931f6c46d748abb11fd442c65a02be3b6fd18ff517041270be9d3e6bc87cc000fd6b6d732f3c0c2a22c1acf416282bfad57240495a26169d9eff47713d9e7ea3ab26dd4fa1b3cbcccf4b200e742ff42fec90c88602b37682a68dc9f6636c1f565b5957fc3c427c235d34b8bd11128c8bf29a4d84a2e7ca1535b594be71ce29aac1ea03f74bcd449da0462f60d8265f4a3eec753be315afeb342e0bffb1cf5b39f7cc95176d060429b6fdb77eff18aa3c69c94145e66522a0143a3d2a1abfd45ebd038b165868dc745c576d69632ed0b4ca10813df2b565632c30fe8525fb2557389faf5a2838998210a53af4982c21ae7ce50c3130e78c5b3da4994d25766079e3bc0cb53762467f57b0a5b4de32971d166f7c9bce8e5e46a359364b352f41b6d80d43364e2bb66173563ee288075f7c1b6996d7da9388563d90bb65bf122c9b9fb97fe28f369f8afebc89229824a145e5bb51b48083506c2c146c43f9d25e4b0e15d7feff89c6389aeec0f6bf23b40fd03984a25a78f247449d0c965cf0a2ac463ae6e851383a818674ed31fa339f81cd5975e70b8f43d58a0f3c0d0faf838e3252e363628ba6f6760d93171b26f0417185ad74df3d0309dc76a960f7b5b99bf7b3ffcd45cbd70e7243de2a6220b856037157318e4f7d8fbdb7d796d85cf17fbf6d0d1697a089c4b5f0b2abce05569005b683ee4b1efe47d674d598b21f11b0f494a7211868b167d40e0788b832f40748230a11ab10ff0ad057de3090db178955561d36ef277f7fddd0dbf60f0d9bbd988a4edb46d1153c712b962e42c92d283fe6b58105fb101397d92a8b252155854229ecde4ebd18de687698977ac7ac7b1632d05cf42293ebb622f80011393be29d7aae75acdc0e302ae73ce708715d24fc4826582afeda1eed03ab314b27fc20684d922f09b7f4489c5b72434f2fbb8c7140381640a42f142f828adf8501f8fb9d945487a64d6c0bfcadea79c4722e2622374229097a587c4be4831f883ac28d28dbd91f85f8c1ac74abe6c2e25f74d4de8eb62c23b7ff4c4fcdbeab1b020006be2729c2215a5d52226af969a4168ff1cfc0c1f5d3c3138dc387ceb44416319b7c9bade454beae37e37fb6dc7b958c0dad957456f1dc3043293c51cec83e2cd8d4e073c5415efbf218c03435dec3e5730acf690651e69d3e0fba1e68030f3f1b6dc53328a6357e3934011aafb05a4698e1981a87049f30cdab7f9f9e4630a323e047e49ade617154689f4c65adbfb438a7565f4fe3f21a753893f51ae5287288dfb849c909c24cd7a3e127d954517264519e9e489b1944b94e39a526d93d1b8114687beaa70d2ee85e0045129dc8b74d3f38b2637651652ece61b878bd05564b0ed928d9530fae30958c11ad21682d1de2e50908b7d21f83558a010cc5227603fcad1ce54c01b92518a8731352d3c9590779569d376b0245838790a9011901ad92ec9cc9c2c572a8da71f7d0a3dee61eeed9edff5f25416568909ba5b92b93524c51d240cf23cd82387d51ef3cd12f690f58be29ada89ca38f41fa6d210def60f3a6181627b53bf06cb59c7c9e64071e62aeb414b0353ae764c792ee982eb8bbda6c17afa24ed2ced5d5249b2c45ca3a21d2745af8ca91657997dba92b268f634851a616b8a5dea3fac5d0c2a86dadccec7d230cd02bc92637fc89e55f1260a1a9817851ae10d396e48828dc826b7803624d2d4306d1a23888285aa1b30bbfd0547806ec6ca930d10c461dbea8600af9624e3812ada2dd7eee922c6ba90b5a5c22c3e5941376672675d632d3c51528903902f712c791b303d512fc8ef734748e847584f491169782c36dbbe4acac5342bfb2487b2f29ad6a30391a9ef0098f6e5ea3dcffd48ec43247fdd8a6ec774abb1c71baaf1dd7033a974c8b410504833cbb15d1927e32c8d76e3f0f28c119bfccdd81ef1a971cc3c6384792a9dd13c7b5ca93b8abaa6326f27d7bb51e6cd88feb6e9079db8523bf9bb902b73f96103b6ba1bdac09a84b08e8560262a9d5f6b1c51212dcbc696d9cc1edfc2d99591c29c5027077875f513e137ea76726f7f07b9367578d39b81086fc2db92db0810309b4c565ecb1a49da84d22f64fd3e000bc9f3c97630c3c8e6bc655bbd6bd0e22f4f7f6513dc785cacb5be865659abdff30290468799401daf07c57560abae524ede3804fef5aee90da91799fa11e3b6c134d21c71f2dee4faa311a3bba47df3b8335d5f94e52f21de9fa43ad7077136515159084a196358ca542b164cf108b20555e661662c89e6311d8071002189ae1257b585156119ac4a431ff48dbb20b3c5fdbc21f1388749525aa67475b0b18ddf83123361c5f3eae430ca1ffa05c7b3ec31bbbf3dd534f3b148cfc3eed6aa5d60105392653fd0c489ea2783f3138aa19146afd785ef46417aca24367a9e1d2c5839a3f3ace9245d261b358d7341d0a8650463e5bf4af7a444719151b9c7bbef98aae724a0bf26ad65387e9980dc78da41a175ffa3f78bc7219b154e411685527a5eb0013b424fcf7be534b190e94861ec09b2f04b51df593c9a0995631e95c86c341cb437a89f354f9b4c274c5b1ce09737a2d7cff5a5acf3db79a7eab2567ea54ac2724be80fb311ac3c782d1ab1a82188e1fa66b478bdb175b316335b2104f3dc2d9f0f3be0eb50e08718a98384b21d2a5caf2aa0caddd63e3381ff01396c44a8d6e4744c339ee118f3589b13d9097ea9d7450d7ae247e0a49b7b3955a65e5d65ab700973627d1fbb9fb9f09528428f58bdd1b72d672356b3b69789f2bc0f6c8a130e0f5e813cac477cb99c31798b5eb7431d2f8703e71246490e261fca3c830b684302a6290529ef220641b7e001f96674377d594e62708d7cb07576f2c039b78cdb700641c393ee48e52bd4c98987b6d70d02ed7d8dff72d98494145fb560049a3d328d6ec10efec9566cca1ef1faf363ec582ea76fa85a7f5a1a2e59542ffaf9f01442754bebefd5170486720947a5e32e3c3ffc29d8ad4a739c1ef734519bf74bd82d959af6ddfa5cbee81bfab738bf1a2dca2986de7c2324fbab7d0f1aada28b63345100b505d76b6ffd0019ece2c0968733587ba5c275dff2efa9fc957c01c2a7272e7677582492db32ac39efba005c578bded90db0acc3104db1eb5b080ac7c2c6555b4b2afd158bc7bdb93ee00ba350b0b89568275e90f1d0051652e811a4cf85ad15ebe5bb5ceca59bb2283c23983b8270f5d9f991648f0d73da73a8e0c10cedb15852cf40c1a24ecf2842dc7b0c96691d0ce9748877dac297750e9476a3f76be2d5d97181530accdf9998b8f7e715586df7b7a53638b9f37c93e54f3bbb198846d3f227eab93da95db95c92dc1816f30920200360fd05ce671ce2a99044d9a9ec45267b97dce95739382b1b51cbffaffe03dcb52580a40ebf4f9ccfb9c4846af3143ddd8b16ca1c8af2aa5c1d0644cb3940f3eb11c713a00cd1464b7548045e0511752860abe5e30ba25bc11f08b46e5b0616fb057e608c7ebbcaad6fda20eaea7bca461b9d68e15f1bfd36182e2c09bd0fbd8c58c85e6e51bbb72897a91cd6dac94cd19afece5e91502e88f9bf8bf4c211ba4e6e017ae8af33a30838e3c38987463a2dbc855db8e588f0cb4d1fa17ed78f5f9b3a96655640f76bd7158864953c8bfe6c7f74932262a009ee07674b41e33ea058adc477d91ea5ed936048ad900e3b78ca71de75f1d1881e77d872dab1df246cb2d7bf5083d52e75db251f2bc951d6f75ff31dfcf927716 diff --git a/zebra-test/src/vectors/block-test-1-842-432.txt b/zebra-test/src/vectors/block-test-1-842-432.txt new file mode 100644 index 00000000000..870d51aff02 --- /dev/null +++ b/zebra-test/src/vectors/block-test-1-842-432.txt @@ -0,0 +1 @@ +040000008395e2bf8323ee55fd4853311fed42fc0757ff69c8c5c3375cefbab0777a2a008dbf276f5f07ff5737a2b287ac5a07ec0ff60c8a7a38e31930efc885327ddc2443a7be97a03c3901fb2d2392986769cd65569a5468ea8dd6b74bf0ba42cd0acf3c835e62f5cb0020060055ddeeaa5f9c527d0c8f5aae2a10c31b4b2a4a620020d5ec5f7ec9ca0000fd400501ecad6c3d279569df01934f14a5e739d32d38797e375e59f3d662064ff8101bb62aef48ef3b78ddcc081ea68a63cbded733bce37272a2cb5569fe937ea0064bbf978b02a6d3fb939f27b7496d09a637707602c003892bcd39a934df9899d42ce1548c3fc3f2bfc13808deb763a48a2e6ab12000de83d4bf1c62e0f25e74128da6a473937cfd4ba71ad2d3ef0323565bbb2afd348e14f6b3ed450b6aa905d8c057e996319b3ebaca0214d690a5ae2b479ab60611d438a70283821cb7231b8d87df844b9cbcb7e292801239b47b1064fdd7930748ea509c43fda2ec4d15785acb249e555abae7b4272eace12da2f4f1760ff8747b7148e7d0bcff3c780b3b48a12b45435248fa16813bc973aaae9e9d65282ca60cce958cdd99178fe4233977d34dc568756e3b172caf5ebe92b8d0a64da2482547287ddbdc7b887d36db41dbaa694d07cabfd37c033f44c4f38df7a94e02afd0f36f466cac989fa040a1a25e7c9c7f3d5a38145b96e95b7b8fd1f81ea2241ec29b71f2bf1bb47734b12c7db59f1f570957379904f0c4f745957e4b2d4e74b49b2b1f76dfc35a763cf0c2b059b4b35114c6041f4dc42a09b8905306320db09b9a05bdb2befa2b129a5bc73bc9564df12a91d340aa28be0544bad8fe211fa75da3670535392d75356d467fddee8df2a615683b3c684ceb1a999416f75d01dde8f9e51e8fcbdb04a0d24333559db5622eb1fd193cc9f90c73f139803008546447983a17d47634d5bf58d8b1ebfeb65ced11ff69f8a748e767c118f1766beca75dec7fbc4221277cb4c942ed4b51ea26e5f16bcc67fb6b3fbe69000594db7a7588e4c37ef5f2176af37fa8ea5159ad260fefac0b050ea32b8319729aacfde1196d7f8d7d59392019cb53a0a8ed5f5333bb7b6c1bb904af7178e079f04e5e7da3db6b349a4a2df8f24c76b3a3595f36022a3cce82409cede2f9b5b4c4ea350b388f3ced9911be18ff9356a5150fdff3eccfb30e5b0308de4fc402882196659c2b8f2d8d14cd48b619977b523f53b407494ad6066579b776a292fdfa3195865c27b96b13089233e7c819a011cfedc0b901a843f29b0d7a89e23ff0c3f1326c6799e8e8548cb841d8755fee35dfec355893f4c7cf4a92ef1e7a7f73fc75cb693efb68d15416cf14269d0b5b128b858c56d719634280dc091806102f4d8b893452a24592872437ac44e3cf9d93712abf496caedb326d221b9635215af385dc1d31755524e7c310e5df62e8fdecf52fefc5831a1ec655c4217f387609e6663e4b40154850d1c837a6a5f4b873f7075603c71a767a33c244b56308f906725e44ddd04e1e605dd1b99b40a376af57303a7a0646ad543e9b5a35cb6e932638254fee90d3f5f8a89d12a28f1ee20f47ed6ac7c8969dcbf52a76e69ce5b14de31217a1a10396b75a39a5cc79d62795bc7932470281cbb7db823c7db643eb203cd3edee14c6a5734cc27c42d5f59d12837a07db1514130b854251f2a5dd0c94d51bd7be1fd5df5c779897e9bba3a2f779a43409659fd6c06c03eb4ddf248133d733bd03cafdf9abaa334898febe0798099ffc574279c52661f1c94d9d3efbd0fe8a9c0df791d0f1c465257152e8c90dd8ba3311631ff8fd1ca04ae4501d3e6119a5a1ecb471079314ec1e5c3d08a37d38ef5a84f10034c544a6fc09f5a7eb3749330d785f72ae680bebc826c22bdd3c37dd59f47a21fc0a2f7fd3a6b61357efbfd23ae34a4027c21fbf083d373455c14c34264dc119a4aca750131603deb5b5760a10a9bf800d2905c9e67639ddf666ce86faf76421264ed22e29267ac5f3e7d53d867293b640f53d4ed31613cac32d46d23843b133103429ffc5dd756f2cc32ee163ee57eb65b9b7baa2fc95f6344a22355c346802050000800a27a726b4d0d6c200000000001d1c00010000000000000000000000000000000000000000000000000000000000000000ffffffff0603001d1c0101ffffffff0468b6e60e000000001976a91437b3e8484c6345d9686fccad9d72d877715cd38b88ac286bee000000000017a9140c0bcca02f3cba01a5d7423ac3903d40586399eb8738c94d010000000017a9144e3f0d9a33a2721604cbae2de8d9171e21f8fbe48740787d010000000017a91471e1df05024288a00802de81e08c437859586c8787000000050000800a27a726b4d0d6c200000000281d1c003200fba3b3e2ce56ca367f924c065616ba0c87eb6bbe9519417098c4fe7c77c3a4000000006b483045022100ffc574054e14129af8386569be2f0327be039a5b5ec735068f92bdba29301ae9022063a6a34483e4d95d9ccdf5c024b93f70698b5b3f1472129e9e1cde8b11a4df3b012102df36783bfff09266f79711204629ae71a1ef3f0f96b29daee9b4a50fdff5b805ffffffff0139332039803fc3c74555fb12fde73147287d27156974df37edee8739e6eb51000000006b483045022100a9ebad4db4853d32cc1d749c5268ff54eb5ee8590f2c6d6335157cb7f5cd51db02206630c4b40b7011f32aa55c7427ca5d0260fae48f87f91338543b8d32c57d552a012103ac6ec71c7ddbb44054e3ecee5098848bb5bba14949d0c45b99a2ebe3f7743542ffffffff01ccb77bf931ff31bccd76ba1ea34128a925a671a5e6252b7435510fc07b9aa7000000006b4830450221009f14520613c49c12706eaa767decbf461abb2b550daed19daf9f7a08b83e93b0022064f3d3b8dd4dac724b6a52874020e0f1e9aaf2e9fa148949325159ed7e18bf8e012103af84350c47a535791d7305ec8e9a8a3cbee9b7b01ba2d70337fde97ae34fa47fffffffff0208a69d6450dae266d76a702f94ef4cfffd9694318ceece44a04a0426ac5838000000006a4730440220189d682c4987871abc3c97b75972625d11cdf0b7f26dac39e76bc37c237930c002202c5e32114b2c0c3c340f5369aa707dada0eae41e28040c027f59c0b40c7c0d57012102df36783bfff09266f79711204629ae71a1ef3f0f96b29daee9b4a50fdff5b805ffffffff0334966b2d7d7fc3da3c2486e9d7b8df1d71b78c05b38881593dc4de04c3697d000000006a4730440220490d1046b08ed67df247e81bd6faccb8306aff575a3535d618379af3d19a0b8002203b7905904b8b5b36ee736a5e7a2e16bdd36a7323f48453ec9934bb1a6e59da4c0121028fce702e13eabc883303acd81508d7b6394ed14ca2cce874b3aeb1025b720b3bffffffff03728a3bb4dc6f7cb95c2b7117734dcf6c313191df69ce5c7b5742727eb0d1a3000000006a47304402202d898031760da22aec94c783bb835d79a7d06483818aa2660a9d7ee1277882d7022014f8ec22bb6670f0cf35f06800cecb999020583a7fcdfbdca076425f014487f0012102b8bdf9887d85b002b29fbe7eda85fe7d5b118982b7cea39ad8a205a0408a5524ffffffff04c8d9f1656a554b6fd2852a847da242423f51aa06edb5f085e8dd3dd91722e1000000006b483045022100c3878f6b172e04aa995b275889c3d800646de167cde636ee47198dfb1c0994d00220443e09d88cb5de88e4ef46854d688926ad56b6ea6f6001950663563db6c507ca0121028fce702e13eabc883303acd81508d7b6394ed14ca2cce874b3aeb1025b720b3bffffffff08c9afaad5ce912b9a5fecab1e6fb266d6b07e78b74df44a8b049516722038e3000000006a4730440220592eeb4bbbcc2016c55f31d5bc85c21445a941a683307569e7cc7a4015c6ac8c02202f0cfedd5c9d58b52b31c5223dcc9d149d9b3010933af337e9e9af4658f8d0aa0121028fce702e13eabc883303acd81508d7b6394ed14ca2cce874b3aeb1025b720b3bffffffff0a7cab563edccc0d4461aa8a8bb74d4e85a9810fd26367651b3ed6b81471cbcc000000006b483045022100b62920428d5be6520a88148c68f5e9cdd9790a0b2f92dc22c7b4c916e130b052022051c4c2eed513928c6fafefd08b698bc8ede19b5032d9550db2aedc5172da240c0121037cfd1285e9c3354ea7691af655b66c435658d798662316a5ca5d51aebb6e27e5ffffffff0b1e6ef25c5cd69ed8da982584e7cf5b7fa8f7980277400d9c212c0a166ece8a000000006a473044022004f7223ea2b448f35e360d2e74fe8e4ee4921793cdfd714479aab3f18ad7974502203d0d9fcc08fd8d34f8125007f8743f5d78927d8106f8c59ba30323309779865e0121029aae8dd393c519f5e567c1b84290b9111bf6243495934ffdca06ea8de44d64ffffffffff0c7f129fe07d9de95163b25106edd08800b4c855038c84358fc0198cc02ccc0b000000006b483045022100daa1826d462675b45ef1cef4e8e4473c888a933d197783db39ec337f705dd1d1022011a6bd0dd8b87c75e52fa05a0447036e297e72dd565f2fe6e5efabcb6f9a19ed012103ac6ec71c7ddbb44054e3ecee5098848bb5bba14949d0c45b99a2ebe3f7743542ffffffff0cc873c1882bb38226c9c7f8c19aa7bc90fc5775c804e1fdd573d806fe9eec5d000000006a4730440220364c76c6c8aea7dd55a43dc556e300edc8b935539139c19f786ce77dd6010455022058e8034b3e0018aec6b9fe65c73dc83811ceac11659a61a94fd0291ac8688a5a0121028fce702e13eabc883303acd81508d7b6394ed14ca2cce874b3aeb1025b720b3bffffffff0ce92a4f4684e06bb1ed07ac4ea272670c7cac0485e5898ce9c010778ea10f3f000000006a47304402201e9e0bbfad4115894d314c5052cf86b0944a3b8fd5be752e1802cb68e557d7a102203b0c2d87e509ee6232dd6be86bc417f41e4dd6289082bd0eb422165becd98b5f0121037cfd1285e9c3354ea7691af655b66c435658d798662316a5ca5d51aebb6e27e5ffffffff0d4f2003e507a5dd71e18b3e0dda1906356d09a910d600925e32933cc16b22e3000000006a473044022023fe3cb7ba8ab3056c8d91fe304ac6e866505f9dda8521a720bb14e7c8b9c90702205e6746d36cf21086199a909a17697deb58533135fb338adb3d935c56b207554c0121028fce702e13eabc883303acd81508d7b6394ed14ca2cce874b3aeb1025b720b3bffffffff10aca633239ce9fe0d1e50d9e83bc9bb2bd23463d536b7bcf56a0b266be1ca17000000006b483045022100b61c06d87c6b9993427c21c2d076909dd15f9a0dcd7e72a6526db1655ab1f23102204a7435d7425806f6e9ccc1387ca13bab88049905d44031960c05841e1cd9e0300121028fce702e13eabc883303acd81508d7b6394ed14ca2cce874b3aeb1025b720b3bffffffff12359ff9e7360c704804323c7ddda09e38affed9f72d57090096f9786118f60b000000006b4830450221009b93a0e542c74a1158485a155e7136e251567fa48d0606052866e07857007b0702205677fc54c74c948a85aab9c2cb77254bf12952d31478efeb6611d822da8e676e0121037cfd1285e9c3354ea7691af655b66c435658d798662316a5ca5d51aebb6e27e5ffffffff12bef78ec65c9cc426376761003768535e52157f86002d71b7ed69d0f4c7a4dd000000006a473044022022e5e49b262a61a1fff7d3b65afaf8ea54c74ebf884cb692b771ae68d9cff9a002207d33b4d372106f6db2e3c6777dc1afe15d4b86399312eaaee1ca0c50b86ea517012103ac6ec71c7ddbb44054e3ecee5098848bb5bba14949d0c45b99a2ebe3f7743542ffffffff1424e70584a9d6063c79a904856fc37edc91391b206c5b53bc7217ea146cb8f0000000006a47304402202034487b42e9d0e568c72657986e8d4314736333338719cece8575962ca3d1080220522baa434a966145537d970cb98979eb4b16bb21a54844006c83e121623ae203012102df36783bfff09266f79711204629ae71a1ef3f0f96b29daee9b4a50fdff5b805ffffffff14a17f021f31c5074fa1ef19122723ed6db3526e646b6fc3f356a479bbfdb6f3000000006b4830450221009dd10d69ccb2b5f9611526a1f436553369e8733fdcd240464a8b38194212de3102204a5dd0dd1c394c04629fd0ba951af64b637c27601744f1a481b71eca599781c50121028fce702e13eabc883303acd81508d7b6394ed14ca2cce874b3aeb1025b720b3bffffffff14e0433b9ecbc33a3ff660cb29fb9f96e129b78ac29a7118a0f3a8cd7d2bcd7f000000006b483045022100a7f13e9f914bc15e8a22ea96287a938dbed1a187e908de7d291dc73c1c2fe2b3022038b947cc4f889eb75c277ee73207d019ab3fe33d15504ab587f7fd7f4de39b0e012102b8bdf9887d85b002b29fbe7eda85fe7d5b118982b7cea39ad8a205a0408a5524ffffffff16546743c50fd9e46305ccc59751b6a0e93641adf47c43fa057874114ace5303000000006b483045022100812a7218db3cffb0578987290b17c793f859051deb3dac5e35c92e2f2d875a85022045f25f6feaea98685ed6fe015ad5dcd82ac8b9ac8e3b0599d7513b2706051f990121028fce702e13eabc883303acd81508d7b6394ed14ca2cce874b3aeb1025b720b3bffffffff169b6bc5130cae247bdf5b9673af7a468a122a91b7c65f39a5cf99ceeeb5a215000000006b483045022100ab5bc56c9fff9a0ceec39e57be04a18aa0a966d62ec124632fa4ced7fcca605b02205305186c6b93a81664f6a58f9de03174646f6dc3419d79451b5a55060272ba4c012103d86da9e0edb0b617b12c1946984ee761440a00dfb8d475cda0ec311f28c032d2ffffffff18ce29d9364b3289db6d67574c8762653ca5f8d2d8838f8d0a2b5268e9b07418000000006b4830450221008c7bf5710bdf9ac63cf888b643cee9e02bd4e69731b45c0efc2ed7d5ff5e0de502202aa1f0bd7be56ca2a97425ffb7001ea52dfd522e51f4f8c799d552ef66b90efe012102d108f2a4b018b4705b1b0b17a364c8d12f503795284ef96e2ee53ae97d6b1f18ffffffff1b3c67e61054667ca56bea12dd85f028af67323559784d0efc4ece0e93e68545000000006b483045022100c65d9ed6adafbab42e288cb2f8adeb4ab447bd8c68b5fed2342c7feb3952fd1e02202c3c7e79d96bec5b64e1698dc096d36c98c927a205ae5f8a4a2c4df3b792da89012102df36783bfff09266f79711204629ae71a1ef3f0f96b29daee9b4a50fdff5b805ffffffff1b645ed7bb10cf9baf9daa83be033d9acd1a25e132c595c5a3caca94a459fccd000000006b4830450221008c0bb877bea021eb8e976350c98b86ab8e4845ff8d79ba35de0f23a6fe1850f0022072b775abf1fd5d8be7c209077fe7dc35dd4e92c2021bf06b666659548d79a0b10121028fce702e13eabc883303acd81508d7b6394ed14ca2cce874b3aeb1025b720b3bffffffff1c3731c9f82765d7fc35ed59d7edcbf3b91a43d0d7ed5c80bea9178bacd0e964000000006b483045022100ff456ef5ff3c039f7c05dfb3b70e8b8f17d1b5b2f0e7bba18f179aaf003031580220190dd79718f49d2856aa7baacdc8a424864c0f31090f523955c4a6c637b324120121028fce702e13eabc883303acd81508d7b6394ed14ca2cce874b3aeb1025b720b3bffffffff1c5739be29eec0e4e453bb27afb43036705e36096a5ff70eb0c9836ac26b6ec8000000006b483045022100fb61a92061fa30af1865b38855ab0725f548df8ea53a58b94ff0aad143677c3802203db3a9e183ba7d6c459a0e6b7529973910b5a0f13a7347fc08389fae38279fa8012103ac6ec71c7ddbb44054e3ecee5098848bb5bba14949d0c45b99a2ebe3f7743542ffffffff1cd242ed1ca8cd740b6410fbe70368b59b75ba7817294baafe9bec071dd1cc7b000000006a47304402204393102a0fd73051d087b78cfe0dccee0afd0cfb48a4a90792144a9a8d939eed022061615a50903106a67b39204597882c4d722130487811cdc39d40ec80376f8945012102c25f2cbe93d23fd2b75960cccfb28ec6845be5871a444953a9a9b09e727bc60dffffffff1d7cf664b518ed83c983cad3efda17756ad4ecf71c92c85e66e443d34c2aff4c000000006b483045022100f287288297148a5f5476560cc0598a463db78d47e5854dd2461649ac6e29e675022005229ca4fd5136ab09f0fe8602e13da21294a93a3538af98491103753cdbb9a9012103af84350c47a535791d7305ec8e9a8a3cbee9b7b01ba2d70337fde97ae34fa47fffffffff1ee7972df84d812817adcee6a84c47b59819722b77283da608e327fa2ce56767000000006b483045022100ed3d43e62c8d4dfe8b92609d2a21f3f90e5d273be69cdb82953a6024907aed59022018e71e6b10738a862ceed90d35cc41fdd67f874e28021459b6769681ad4c6aed01210365d3da5c8bf7db81720b3da2d9b5bc3a78cdf02675a713b4f3c87394588a8d3fffffffff21895eeb19bd1bbdd52392917201171eb44c8f30f0d685483dd835d1dfcdf848000000006b48304502210087f104698b85b2987aa4c1329ddf2b6c5184e8c9751e1f1fa95cf8e6035373eb022071c0fd2fd53802f4eba72c319d75cbe3dfb95001ae82d205d57f307a3abc685c012102df36783bfff09266f79711204629ae71a1ef3f0f96b29daee9b4a50fdff5b805ffffffff21bea67d90f94a2d9364263d7f6ac7e0bfc2e21b3d59099891f5bcfb6396119b000000006a47304402202480d8eda2a30bcf7f23b113cd66f6096595616cd8ed7db4ff024d78d058d8610220134346e068e8d88b59ac4743417a1121157b3b790a624076a76e081a4cd2a343012103ac6ec71c7ddbb44054e3ecee5098848bb5bba14949d0c45b99a2ebe3f7743542ffffffff22d4dc938040fecc88cc22a41a80c6b5b3c60ef8582eeb3af743a6a23f538049000000006b483045022100d18801393eb6fcec7e6f20fa8d9c3101b1b57a32a777b1d104bd7fa4f923bf9802205d854a0b5b72dcd82b99a2b65e0cf91402ff2f4fc2742c4612408625f53aa51a012103af84350c47a535791d7305ec8e9a8a3cbee9b7b01ba2d70337fde97ae34fa47fffffffff22f523a5e7715e0a907c5e8b816846def93f8dd127962cba95754e893998ecda000000006a4730440220500585e103b18f23eaf379e5be302233ab06691749166959f1f8d1bb0b25eedc022034e85c183c3e9de866599556dac41c137a2e3f5e90bd7f9bb2693623a6d8992e012103adaff6af6db9f0085f9ba8c703f93858d3e0eeb4d8cdf5badc088e3ab517da4dffffffff235e82e7a435e5c9693e87de26f3b577cb2daa1dcefa925ec566d4adff4eab37000000006b4830450221009515f190a150fffe7649cba77b61d914bc39b6d37ef74ea724674911918e6a28022049a52c449012d2abfe489fc3abb65300e6666a74151fc7e6c8b94567e1f030820121029aae8dd393c519f5e567c1b84290b9111bf6243495934ffdca06ea8de44d64ffffffffff2382e3ee684c93096a669e6894947971303d8c17f5b0ace892f91efd63628d6d000000006b483045022100e1b5931e85099a048987298ef266517d593f731d01dabb471f74f7c21327f83a02200d7979619407a79b61c66f14561bed2078068d3c5979b8baeb2edf565a95a32b0121037cfd1285e9c3354ea7691af655b66c435658d798662316a5ca5d51aebb6e27e5ffffffff2472a5ef880da793dd3d0f62deb300f964f7346cc8c6cc0675415f8602373f02000000006a4730440220283de63b77a875eea560bbafddb82134a3b285c0b374d5c1fc3404aba79e922d02207ad99e7850c4154002bc19164c6a0d83384f70852d046cd21040174875253f390121028fce702e13eabc883303acd81508d7b6394ed14ca2cce874b3aeb1025b720b3bffffffff279f655c563b053941d6da18df39400f4c802e267db713a771ef16926bcc6038000000006a47304402204dffa1c60b92cf67dea6f4f864cffc2daeb7d16f125f5ceabb2a26b1735f8fc002203b389a2fc7631fad824ea0eb9c5ed2a4cc80b916ba3dcc69bbe494851790df3d012103bb2f845897f4cd8b00ce4897641c13efe35b4ddc4802fe2634d6103d9cd52b38ffffffff27de8aecbe6603aaf2291873b707dfe3939edfc33e2a08b43c10a177366f3de4000000006b483045022100ca28347ac6ed27cf9a2c885e67ddf642f839476b5cf389823afbd2fc0b5295430220562cfc370b450b47eee4315776ae362c07a17a9da34ff66c35885b67f3fcec04012102df36783bfff09266f79711204629ae71a1ef3f0f96b29daee9b4a50fdff5b805ffffffff280c516049c3d569c2a37f2985bde5482bd964d4eeaed00b9414fad3b5b85416000000006a473044022008d33b2493bdbf5badce1c061cb8def1335ec6baf2755f28e917bcc76ecd661f022023cfa5ecc804a1704fb57f40664a6ab90a98aa134ddd4eea4a417ec703460d30012102df36783bfff09266f79711204629ae71a1ef3f0f96b29daee9b4a50fdff5b805ffffffff28fd80badf03a1968d76ccabc5de6a09e361ce8a27fc90c49a6c5c5fbb0f9568000000006b483045022100cac7adc66e60fdddeea7cf08465af579e8308cdbea814b289f5010db050e644b022054ccb52207237aea255873ce4a902b92b75c3d6b8f9e2c5bf61ca9fb723f9888012103ac6ec71c7ddbb44054e3ecee5098848bb5bba14949d0c45b99a2ebe3f7743542ffffffff2b3d15c3f214052b414abd15d86612c21f93a69cc5abdfd8e17097e81ce3fd40000000006b4830450221009dd658d122e55e923fd86adf18b3c19f5a98b0e10fee56044b54525c6965c3c50220420341a5b45148e0e3d5314dfef62abdf47f4321f99f30f372f37afe5c81aede012103af84350c47a535791d7305ec8e9a8a3cbee9b7b01ba2d70337fde97ae34fa47fffffffff2cc012eb2cc139146aaf4ca62740defd05444d2ad34f3fc23104ca3a04a36c7c000000006b483045022100d6a767de24a4471953d52eada71719a8cb0aeec23201d3a65e324c888bd35a2302201fb389c291c1fcbf87d963515a934fc72c4e8c703258c02a05c092e1e4244531012102b8bdf9887d85b002b29fbe7eda85fe7d5b118982b7cea39ad8a205a0408a5524ffffffff2db946078cc7db145c63a4a059953be8d499fb327b255206ad76117b9fe8b68b000000006b483045022100e1e330c1971ec6d2c6bc680842933e1bb1d88e9f548ab914341bdc5183204d4c02207c950930155d44a2df347079e5510b27cf9f06a254677d297cb7d877349063c701210365d3da5c8bf7db81720b3da2d9b5bc3a78cdf02675a713b4f3c87394588a8d3fffffffff2e1dafd02a9c53862c1f5376189cb905a4cce51556e3ef09f31d864b6a91b0d1000000006b483045022100bf686c6452b9d447ee9ea20207ee4abb5d56398fa76792af9460f077ccbc6629022016089f17466292b45691ec0a125854a8bba40e7903f87dbaa701e13177f4e12501210387943defe7526b5a4cd71e55b4513bbdf7f08effc01864bf5748fc853c1d7917ffffffff2f9424c1cd018ceca13154fb325b34817e93616e3ff3e2302479f5ba8188ee43000000006b483045022100e1e1574a9a39ce0741b90404c46280c621b7c6c28e9f775e70b9e662c31c2899022033a68d300d3280ec911bf5d1834ca812676e346bd2a0f83288c286c6d2878e6d012102b8bdf9887d85b002b29fbe7eda85fe7d5b118982b7cea39ad8a205a0408a5524ffffffff2fb872e80fd5ee65368ef39111934d12570fb729abc2dfcdbf3ff24db0685a04000000006b483045022100856bf2d7c12a306f30b0cc61e775781be53d289860ffa069f6f8c777e10d247b02201d988c1a464d2629829b5964f3f9e048586e785243aa9ff0dc983d71c1b8a403012102df36783bfff09266f79711204629ae71a1ef3f0f96b29daee9b4a50fdff5b805ffffffff2fecd5b85e968bb7e3652c5971f0aa84e59bae4911217f3743b6006113b2a9bb000000006a473044022071ac6cfd5baffb9aba1426cb76f9568a2dc6d1d15b0b0a73fef57c6c49ca8f60022062c9d753c75f00a044b88289486a084a43dc8e0a8c31c39ebb6da496aecd48e60121037cfd1285e9c3354ea7691af655b66c435658d798662316a5ca5d51aebb6e27e5ffffffff3040a11e9bdedd1798ecb6d85af3c38e0f0e6a0417344db6d168b778518bf7bf000000006b483045022100f175c6972371e6c4298de8e3dd5dc446e2c53c422af179ac4ca11567508575310220518611abc6222d1cd8c9507cce48f93ab50fc8f74da83c8a68486fe65d36ad3a0121024e265ec3d2fd6ab2837a0b39d453b533d4bc46de8bd3c118cfc2353e6c48204cffffffff3080ecd18e45edf0890c3491bebf0e53dbe8514d9dd1512bbea467bfb535ec3e000000006a473044022100c6020d6e60e99552e0d6d4e75d0c226142ea88615ebb13f8832992285fb16808021f38a11b61dbb52bf28a263a0126340e8b894ca5a5a61ff5e733b93dce23971a012102d108f2a4b018b4705b1b0b17a364c8d12f503795284ef96e2ee53ae97d6b1f18ffffffff00000101d1e730f122b874ea2e1e0565e944b352fb7604f421ed6e9c382b2fd97dc89a035f713b35b3ed911f159c161bc777a2ee1951d0fdfdeea9fe1a9335782c8e2962af7efc7564fff81a8025d7d68088abb8ef7c97831e56d463c02fcad13cd936a93b31e75c95cfc8876e5aff7e5ed4a2950fc7cefab3fee9431c3e439863cfacc0ecea5e6a79308cfebc1cdb035237f9be157be2e6f13aa295c9a96f257097dac4fb3f9da0f196468e73a74ab6eba99f4500caa9e18cb09bbebdf34fe199ed077c6d6880a7d9fee5926114be3c318c84393840578442ff50aefef6bbf0170350a8e7bd846b142a050bbce207a91600cfe3339f166fe792fa3a9b1ecca625a130f7f58a5490861f46a6d2bed74db7e73d552ad4e3daf4a9b96625bd48a4c3a368bd4181e0b7dbb4724168cf482c79da368bb85aa7955cdee7ca54b224272a3f14215ba09168756895829fc36576a11bb7282d84c764425556d8e63804db8a7d92efb776f593855367625c8177960d1e9b4a39a7228fc1e02abb28740bf37781c9daf10cd6676835751191d350b1fed0a7ee1cb6c426aaffc80f257f082ac251023792cdf38ebae0cfb6038a3af384a1fef51884bd9cc2c0981286e807ed95ea8f33da6dc2d473129b31e21aee2baef6ce27961fb0f73c254f4c2ba1780f82a7572230cbd97696f1d17778426397c36aa41aa35a5303223223c15a9259e564cf0a796a9a98a7bea63d4638f817a6f2d8d884faaa65f95afd44714497dbd6a99b741fca2a08ed2ee0fc3d59c2595d748c61d06528dca0d61dce733823ca7aa0286bff8a6092045f1af4fdb64a80476671952bd023d0742cc452cfb948a64b8f49a4f3f629076551ec9d77388c3d5cbc8328639f51570b8cf9e075196e47637481a0f5f48d3e9098179bc9143bed4f9f03675e687ab21f67fea579a6d76db3153dffee941016e1e39f2ed1b9b1ea497d5276a38e8a9350bc000a6e3021be6b51729acb266cf24707607dc9c255c5b0b75695d19419119bae07e8bc653b18fabfa66794eb52e8a746eb50797c8ff9a2a938092306a7f5e826f116fdffffffa3834db46be375bf6f6824e34d96b0fa98487bf7c4af7986d33d0d173b1684c4b3fb14e2599fddcab7ccad820f9a15cb97d779ef07b9cbfe31f88d893119f54f407afc5211b20a4f82c1835deacf84b9cbd2c1f87f07f9de8cbd2434bdb3b8ae05e13cbff0e155d253e479e93ce8770e051a2bc0716ff502500eb1beecd6be322152f177954ba0c86d940d6fe76841fb843da01c6f170f502afeb712eaa00cde3608444c44e520807894650a47bab937f9240dfc18a9022b5a322d272c1c78f86bef6c0b77742a1f136daafb99e17dcd176d94f1d14bf9e4eb622941569f2081f1fe02c765b304d6b22425069784c4cc8625a3a4da454278c9591988cf5c6e0500 diff --git a/zebra-test/src/vectors/block-test-1-842-462.txt b/zebra-test/src/vectors/block-test-1-842-462.txt new file mode 100644 index 00000000000..33c41019b43 --- /dev/null +++ b/zebra-test/src/vectors/block-test-1-842-462.txt @@ -0,0 +1 @@ +0400000044c12df7f19ebf11fa54cd21c4f73b45746bfb7b8e07836f51900b2e8dd25200c6abda6bf0f8ca118e9a1edca40a772e274f759e942a46b4c11518352b44847103caf9d43e0e589c89c488e47774cc3f7afdf0c05c55f2a122bb43bfe5a86a07ec845e620582002003008fc8c1f526f88455358b0f1234e5ebf4272cbde710e1730e5e7da4d20000fd40050055b4c81fc54bb68a19f55635deb07e95bb782f7630299ae2c6b1651790dde3f8acf11882e7731ca9990152b1d73a59f6d7ed77014994eef6dee0d03ad63710bd52568f8a5763254361be422623cebbb39da73b0402be75c7c77cddf234307744faf4e5caaddb330427799748858edf89d2f7c2ca0ce0558d4659779d040ed0ef60c7cd52ddaae4e1eac5b6ba7cc14798ad2933ea34d0fe13ddff72924508327c3fe24e52137d2c028fa1e91d6591a1ba2bd3e99cbeb395dcdd6f99ff2f7a42ba7fcc5cf3be6955443654500e6ba5164a88186e5a628cf5cb31ee55f209da610aed60a558cca7259c8734d1a41a012fbd45d1e3ef0a2a48f8942a660a2759ea9ce5f6718db5b0b4f50a9e2ebd5bb71e071ef46d18eee05bc953502443cb63edfd5bb53cce300cd0fc8a2ec39ad14b7f928ec7cd72b574e2123f393634db511b9e97a16e2783ace7c4b009099bc93375008a4462380145aefc80a16b714e81ba8d799d85e80c1e85d2f1e5bb59c35c244c8fdbf4a934ec317d770cbfe176f7ce8be165b9929921c0caf2333c1a5a6d5758536141f6c9e5b95b17638047bedba6f63d7d3e0306130e6d13dd1b4f1c0a3510f01e12d3b8bec2ba158cf15ce5ac7025f9e0c242883eda3ceca49c2d3323d879880bdb47cf533ab5701d74ed7dec27ba093333d2b4501e91df097f31337599247b1cf566970bf100c7df5a264f526b951bc61798cb07d5f57352722106f4f6721cdae5613893839b3539605dd306393ce4125e4c5d1e59140102ee352844791b71920aced70f2fdda74536fa2b9ffc1bb31c9ffaa7752298d638b902934e8a8a22f3f589b8b12d8cf524a9a30e6f58c2066c0e973d174e42d4629330465689c59ae098d4370caa10a973c5b64f0ab1f0cc6fc99c603e03955a551406a48b8587a1abfc14187db6e680be9adef97fbe026696198eadf685ff40631d85293632435613e9520ceb4edf661924d142f576d6c3f27dfaad58fbe8bb1277edb87ea2b8a117dc05c504d08c59e146522e6716fb254cb01a1b99dadad2cdc6ecf03603c455c721064049befd99df1b5448323c0d979b80adeda8eecd23ecb2de35f9ed7bfd3842cdaa24ed1515b2be9a750beefc5aab8ff4919f08f12bccc29b6dffab30c11e15ee4631df8bcd0f901ff514dac9a34a6bf059a8050334fea735741919cb5932fd52a430f2bbd77dd0290c952e9c7e36b2c1e466271d7adf455fbd6dfdf1bb0746ccba0186f37bd2c040e1a74b99dae58f79f6462205c5aad41e2c09c93be2507cc014e0e038d79ab00c7521f425cd225fa791f261ec75d563ba8f7f410616148419d8cf3346866a12cc843fb039546fdba50f13078511078ab5aca351892f27e6d25ba496fd52583e45240f0faf9da59210f43e204d3d9254c452f44d0aec6b41339afd36db8e962887f0bc225e311d9ef4253cf97834e69e558361c4213b772ff964b514f05b14509e9eb38977c9465ef67481cbb34e46ceb615d22f5ffa813cf0c3e1ed53f549bb35d07d868875a37f109c12cc8d0dd15cfd0261cdb4b316487b7e3baa072f66bd245cf48a6bb968762d81dba0865faafba2271612a77ce52b6983bc16c29e55b437a0cb617d47b53f35cb28186e5bcff9e0552ec7f0e47ecba0da58b00f2aa0e5025428270bc071594d2f8de17e30dbd05053b52b92b9987c67202bf7e2db6338f62b911ab5dd14c2abf5bf0e05b574b061eeaf607cb0cd7aab85282ecfff7b50da1e98f4cc13be467d2618fa251410bc0ff0bedd63efb5ffba87632f7cff4fb91890799ff04ab93aec0195105bff0c95982e4177ef66825d355610abe9aa28c99429ac407271813b8e6211201b7d726522d4fe116bf13b8706f8120361e80f71011ee56402050000800a27a726b4d0d6c2000000001e1d1c00010000000000000000000000000000000000000000000000000000000000000000ffffffff06031e1d1c0101ffffffff0468b6e60e000000001976a91414285f65e316bcf26a88133403119bac457aedb288ac286bee000000000017a9140c0bcca02f3cba01a5d7423ac3903d40586399eb8738c94d010000000017a9144e3f0d9a33a2721604cbae2de8d9171e21f8fbe48740787d010000000017a91471e1df05024288a00802de81e08c437859586c8787000000050000800a27a726b4d0d6c200000000451d1c0002bf56659b19a1a300ef317c484a1aecf66319622a6e5cb0397ef6c3593f0b70d6000000006a473044022000c433559fffbd5678ec1ba3196db8b6d41c3964bdacce7ab2c679e27f50356602207a959a441d6352b825061ef59d5b68a608c8dab284cd26c2db52f7ad0dc5b95f0121020ea64863e0c7fc37d065a518c7dc74fd8315147f46255e0920d11344c4b173e1fffffffffe8cc557128e8f007eb1e0bf8a79eee8e314280ef966f972edb5db2ebd450537000000006a47304402202e2dfe1048534bf0edeab9ff8a7f02ab24d84fc87e8eefdcee551e8cfc16966f02205253592c63b510a12ad767b19f5f1643a8d656ed55f5897023d0a0654d7837e1012103afc0fa433ee54a03a3d95d0a0e4dfc1c41477f942a1fcdc09c04d8e2e4d8efd0ffffffff00000002865f9e118b18e21aa2fcf80c669af57273641a60df384ffffb001fa31d676b34442590097a391f55633dbcfa02194c336125a710ce58630bdd304113dc922213579b85120f0d8e396824a895aa6dd26372b85eef6453890f2e28ca490590f62285c0871fd4d613e50f129cdf1b3fef0945d8a9eabce54955ac8d0dd7619b891f515786bd6f952c38b88b7bd47be574bede0165ee0c011e61bc3ff6e0a4b691b338da8053ddb7cde919d4f3599996f3df1d621fc28b98cdf9b3762c6dd0e70235061de6176d479cab30522b8b63ba7e2265afe99c66f74e50fbd7798937c860fff3c2c7d0233d711cee91c8511d1b1e5210c18f0b3415a28b1bdbc6e7f864773925ed04a8634daef85ad06c817d0c76eb781acc405aa37423bf71bd54cd5e96eb17813ff30b0d8be590ba6ae954c6ee43bcc6f765c05676f55e510490fe4adbcbea5fbf223144a59b17ecc5ec64ae05c393289dc2e0fc8f0a34c0ad4aab6ddd356620ef94d7fbb019a3fa465090dd71b6796e5ecc2e7cf333a35cfbfffebb7135dfe7711fc96dafec4a9e3ffe5481a8cca2083cec275e536443d9efbbc4db3acecb9a59109c0b1c6cbe6355c5f93076aec7c270a2124adec53017c9e25fd3d21a0ecd99628596efe2027e57fa0665a17e5d2dc43995faee7bc0425105ed5b415b9824ec3d1bcdbd6bcdf1d288205fdf1be912118eb227d70732470e5fca0de9d9cfc5a1a176f207168a49af18795668de723984af0e70da73a577e5671f6514993613c3a3614f7153177df1e9c7991fb3b4104a796db3e8f2e3fc3deba622414d57e5293cb473d00f6337c965f086fd75cad5cb5f2da1b71ebe57831a598fb41960107268eb3967a41335b81f4f13905dd1e065043532f4bae6c0301b9fb76719725a304561c8237c5ae7e9bda780bea6a74f74f4f57eb1f1aa60100418eb52de74f9673c68bc43c0911519d489c191d56710d3ce8479666c71042bafe1e442fe0e9c8cca9dd0c0344e9c0b6e0bf4f7900fd47309255c6d951e4f5160480e415cfb4560f1eeddbd16000d9d5f7ccc1e1f5592a104a140a81f90286a884e943a0a1ac36966e252a73a819b540ebdf729428b200255cfce4e3cc5dd45d4a26e274abab416b3456c6c946317e62ab96f017d4a0c459aaa8154f7ece6a554edd2e54e220528afb044c1c268e6ca67c7ee994c9a1ab105e5cb96c9a02a45346b751099768a1d1edf6e6e97170a3928d86bef75d21c4c2a3b241971402540226a6125c2f6c2f8fe800daca28de59c6ac2a55d36ab16c23d7adb4be74ac02b1fbbafdccbf9bdffa261824707d685c23566a4057433e4083187eea9e666010af8d02ab83914ce40928708308c23d5b9c65c2f8c3e35814e32a420643bba9a60b8a292643a160a7b34f1b023cb3879edff22126fd5f50de6a90da4bf24646324d3e73a7d396667c1c1278948ae2827474f17f917173c12b3b6729cae9951a1a98cbf7d5a47f7eb4309365929e5bca04b20bcae27daa6e5111c041f68b53eedbfecb445b1a52ffad0cad3632fc6022dc6078e221d852cf3ee8fd2c207a60759899bb5bf6bd461c780c17ac513a8288ff8d6ad80e569485abc109548e37759f26ff19cb530912b3c2a398d8d7e039738b102bda941ba76194165110b5291a5ec0ea83ed93da401769d2fe4c4a12856dcb8a675d8601691b29dc192b19d475622dc42667614610076a29d08f86604034e8fa21cce183bc3457e020c8c87fcec82d34d924d17daab6324dcca4a2e36f6b9c8dc972b7d787c3414195a36b1849470f4f1ebabac8efdd448255cc919610e39f7ada69bb7af120966ba88f62836be393d7acc72a4714fe79b9f9f4693e60bb1a38c4db5973a31565e3dc755d668a0271053f19647c18fe583ec1b609606472c9581ae03ac9d8c8783747c48f9641304d30fe1d81a4567dced1dea25e99cc2f9f7dffc22ec5a99ce9e35486c5eaa55156549c520ab0daa14e3d3cac9f15ede379dfc9c2d134b0fbf6d2593454b9d0df3d59df92aa428e5950cb6dcb5b83f1ed6c30bca467951678fbbccfb3ab9f56075546aaf731b59a526e28b900c0e1ab842227ab4035dadc352476f05ce0abbf09afbc6ebf0f578005e8862d79655b4c5563078e51d84fe42deacc51e5433b376039e39cf941af0fa4eba71d9a25ee582009db8f46d56a7ce733319e9c3b45eaf6fd9bf6b19d9a59949fcacebb545e9373ade758c5800ee3d7b9af84265bc39c6649858604484f76ae5b1922a3bf5fd9f35dd31f6f32c0650f5573ad2be2a85ee42306731de067547f224af735674e003a02d32e2ffffffff28dfaa94b74670863beb1088ee3d97b38960c6c297c9dcf3d57d5a9259616523fd601c7b26666f7115a8dbbd70b7477ef56a06dfec59caf59e7cd1cb9cfd3cf040dc9f41593d57ae78d30c5b3f0267aaad2b188573ee256d603761dedbd3d5b806a513be60cf1154ac485abecb8703a24b6c4e710a4e938364fe6530ddf0ad0a62be0673ee5f4585244b03cd2a1a7828823df2a38b9ac5370b6dba0e3284a7c2bf8e15a16d0da499fb137b4bfd0b003e73b88a95de5ea06984069fb423476320330f91aec6f656ce967bab922ce5309a6e951790cbf45929b0f2966a0a44a6428730a303c09d05a8cc52c95162223513e5a81882d2076c925ef16f17881208c185cab21d1b903adc4d1753688baa40dc8063f6a92d2552c0898b40ebdf14b9ad6c63203e991f2478cb87b9b626d3b2d1503bfa5e40a17ea8896d6db18eaed266c875b241968ab864c0f0e13c069ce3ea873393da8961719c7429610b60cbdf8cd0f21f3f08ea2b1e1c0003ea326fa342aed3bdd629e03760c8ca248eda15cfc188ee324a21d207cf57fc32b1a559f232e3938727f07073ab47032b836b0f33effd59a9e6e6c2c1970f74db18b191d6428d1770e8c26929fd02c5b348b79eb8dac8a495286f621fab431917bfc852a60f27ab81584fc052692d318f86909b5f47c63316f305419d1e4c6ee18891e6fbaf9cde0e2beb407aaa0daa1afd655ef06340770c95f018ec956c79ccbf85bed468a5c21b6580fb6cfa8b5aaeb39e5c3e8beb1b02e8773920dd00fee07e5de0a0d176d214e852509344c2ea7fee18f3b3700163aeaf59b7f0788b63d118fef1a3122179cc68487147e5d08b603a9d710ca1464528699bd3eb4d112a66ed6d4596037a526cbc6c03bad20a530dd407e0a286954022fdb8a3abb11593bd2a363cd815fefb228e6a5d08d7a436d80dc50973b77c863818a3b2b7dacc82ea91f8eaca18406573de1e725e3b37d5d8702f70abff68b32bf059f15ed1a9dbcae1030c7036e34fbead919d426bac722664c308d702b1fa1d5073ce81669ff446e87e152aecaa11bf947ed143c91e3d76293421c3851ed13de75b381be44a5abdf80acd31b5e8db8ef46c02a5e24807767d4fa269e7c165249dfca0cf23e2dbce0ac67931a56e063a0ce1d5649795bc39f599b5b5f2d28b90f02894fd6a7acb03b4c4d24a75124f6c1d5df4a6953735cffd69d48985893fbe65687d30047ea4b712ff02251c886db37da95432419f700b412035e9a81203944e73d8e81857f30061f52956d3ed15b320a02df0bf064d41260e7ab55ec27e162ea4b86f9afbc604e3931c74dd10937beb1e96c8fba027fa325b8d906d093bb93e27c7c0383b9d7c7ba8702df8a0c6585a81151362332d5606b35c1b38bb7d256cb7c3649fdf3c587670b2004de04c35ef51de305be110d9e6e0fb4df7e4e8083fa8542bb1e8539de8b9785ccde80dca72af9b68277c86245770129ff838fe01d3c2dd302074b719e01f2b2fc40301ba94e0b7a63b9dd10b84a3ff78aa460a990d9c89a6df3e43e7f6b3c1df2d80d9a904ce0e27f94df04114833b761cea1623f85adbf90051d7d3554d5a215942a575cca69dc4065cf958669217b3674ea9032c784a99c1c4b7c55905a72c63d2cc2b07e35625ab31fb6eff43e571d8314e33ebf5a473b7ecead608679eb54221e25b62f2b9a13c534d64e5cd450d9bf227b6e88ccb51a66aae9d3ee9810e5457589c6d1f79ffa04e5809a4ba21d3ddb40604e91760881af9bfc2263a1d48dbb4a9a1082ebdefb067adeb28302067586e1f3cd34c0f01db89642c2e5d4872f13134a8eb7df81b2bc8fd87385ec805c9cd5eb11ed3deae05b64306dd07b9b2e2098da56cfc4c2c7bb54f663965a4165b6df01602ba936ee9bc1facb35343301f9e0ea2e24ed439a213cd485298d9884ca45d3260e0d9fc4556df10e6896dfd10d5267dc0d3f2a4e4c3622741eecee981c7d08130d6f2322eec000441e8bd05367a051a0e9640ea6d9c40bd4e9c0d1e8ed59dbabaa12586a8b45cb1da0eb3b1d1c62c9486edf3b0b25df02e806366fa1278fe2922a2953baa7456a24a0927baac5a0be6d34435e08ed6d9385d0ddc478bcf0331104d6e77c1505ca64389224daf4f997b8bd9c923d9fc2de50ffaded4c05c558c06f8b76a8f9a29d8d4863910afba3de6c87ffa2d3922e5f6fd26c3b29ad1291f60790c3ee043eb5990788c96f54d2be92b8aeb33cb1254515d075a8e9c980d34ee1c5f5ba4e6ba06a02a22ed5c6d1a8394f6dc295557101c1c9ac2118ba2c026b5ed059f4b5af1bd00031b698e160df5136a1c454123c86c6ff0fbc942c686ac02e0c289952ab92169ca0ebb5743560d3a2f0736533c2e2de40faf866e2c761038c001daa17a4268900603a506a032c821037752331557659be604ce619e3ca6c54a3378a591992b8b62395fe53d2e64468443e40de9dcd8b2ec3e2caf58a721671065f862fefca5f3111f03fbf3b36984825b3b73334c229d401d45c17e8a24f4bceef1e329d5357bc9d3c4ae8cac531452efcee0b62d48a3bba9fed392cd2e07b8273a3b9661672f21e8efbffd0b4bc90ad901fab648a2aacb0d38c72b1317f5f02780b4d36f104fb0a41bea3fd2ce8947d65e678daa4387e723903261b91aee628b2a90aec4590fe394b5d61d502944ca607c0aae398cec1b2744a145813c3d0275e4a778b08899bed376c90a704f2f6dbebeb220309fa983db942f1dfe20ef7aba77d33998daaceb8354ebe17420495e23097191ab3c6d2dbfbbd7bae90ebccbf2c0a96dc699fd3f5c79015f65560fd97ace818f0fa7c159957f4f9e4f311c88d006427eb842d1fc44f63a5ec1b3c97b8580424118a74663eac13d56ce0d33f6bd4b40db249ac8d8f2f6bae7beaba04c18877da1b4512f65d274dd61fe376e71acb10cf3a9835e0a6c8b32c6472bf1a944384a1772dea14917b94631933502f96a52e01ff057ca248732516ff8dab4b0d8b869cced03e4379dd690d73031025aa495ddf24502245055894ac09a7714b0fbb1dca1f05cb1229a89dba7bb2d27405843312ba580bd6ff16e5a5e4a3cc206674e17a9cae8bd4a156a5e41a43df1e913feceb16f78880b0b3334e18d354b5060408d17d6c57b7e48402f2edd237bc7e25bf5e032eb2d8e2ac389dec09637067b359b641cecd12a65d88e9cb11acf9e7306762e295042f0d588b83e64f652080957c469b19f4f3c82849100ce1d7a2da695c602ecaf6b5cf7308d0442a3490bd351bbdd8106710f4508e1a2322b9f834d7524d41eff49a97299812d8d956d961f6d9a91765e602751347be79017190bb4f04890e4c805f97a942625ccc163b5f8477c287c6e46d3d64022ce5e3fef5c93079cdc691f5b530f756d6e54e5ca03667fae1c9fe3c1c30ec11bfaba37e2d39b6e586336bcb14849bb94a661e0915ca4b35ed5282fcb7cffe76532a709c1aa63fb054c59e25a7ab5fcbbf7175f44cf2dd4cc095eac2acf3144af4749118464cbfea1da1c7d9e07264b3937684141a20377d350a00d7dc3a455b2a8d13698c1fda6c8be37435a694ca1c422cb9950e192fa7049184c0f5bfb312e69e31e91bcad897c2e0bb148548f49675e5434e1183d4d1d1513e2287310bec8b926058737056de50023acb2e81b6abe4c21bc671099ba9afc949a6a9aacb2af377b39e666e47edce9e4e8b62a6fac32db5d4d95c7f1ebce5329eda97de00bb1b8112bf914924a13e48b7d0162893e8f07a6b8ac42d9f6be1c7c4476e0e7a2e012ca093c92acac3ca5fcbd256b0c3b81ce1e7ab7fab007219d35e210aeb46cf6b5af1c8cef5941f3a928cb3a1ed12f901c79585afaba994cec51b48fe3237374487729e1ea0ae5534731f2eec8cddc8faa1478323df31c3a80ac81a91fa358f20ba53364018f2e06f94f77a066c791067d02058a7dcb491f205a181c2d5f3cf5147938ceac262902da0ce6b799089ddb6d0d944136c33f9a196a4b9b06720af4dbef0617dc4b4be83b2c2b92de85d5193ff2a3322c68ec6ee25c38551cba5fc1df7510ce1c5e27a9b0863a26152052f6c47261fb9a4aea0594c9ceff6b18f96cb3223c10c5f71ed0e613de78ebbf9e2da71bccd39a3ba3151a6a220e23734b3c9e6220e634e69340159c5664d2bc999abd6b9d9a1d3117ccd8135ffc4b1e6eb4671010b01dc19b03c91beab3bb2eba6a5a664b7f28fed01c57bd5d3040e0f83c6a3f2047a58e95250c6cde5143deb005ff6540fc06df9f158cbb0dfa000751725b53275b459788eba519bddcc356d086c7eef13ad0b4f7cb8f23c7f9aeeaa93ca0b20d27ac7ed78a29331181dca3fc0d4f940a39bc0a30a089472c69d6952571f878110881d6639bc1a67b4f33521af6b4dedd5befb79434ec47f15248f0c8bbdb74053386bb215315c24869d5f10f315996c3551d572f031d9d2388edb1145fdf5d3874f02390cadcd2db56b5cda1750b674b4d822dd506a0fb45b6e12026ef17273b5157f5bdcce8be42bed6ea960287f8c0b7283fc9d3e9e9d894c71cae048efd3862b6aafe43241284f972b4045ed76544e02d850b8a3e58f28fc0911a681cef1ec4e5a597f644a177d03836822d09c9fd3994c054e60f4ac6c5c6383d9ea0081db116ef022f3dcd875d5d53b8d33bbbf41dc0800104ed78c80e46ee860011662d32e7f249ce0019fd43444dd499ff563daeb5279fa90ff765c47883fc850aaf1ee3fc6726b10c29b61577dacb5431eb68acfb0515cd55f1935ce764da512fd01539561069ec91d07922e668995561a32fb58d7f3eb6d7339a2a210fa6d6cdbd20be775bfaed3053797b0c3ca01e081d789891359a18eb288f80c65465efe7181c1a8db32a14d9c79d146466e758f34f70b442721a8cff1e6b7304571ecd60912951862a8d98acf6ff16a080d35e488ae3f1f23d2a4cde0958914daab0f14c9c1981c584cea707a178052a84fb3bb302fb7f69d866493aa46b503b819030251015bd37f673ac756d4cfe55f2b78aa99dec7c8f9516e151ac8e3395ebf0f8f8c033e7a9a622a330fb7e920016704bfd3b41780c6337c56800eea63b48eba41bc11ff6bf5ce4325c5933b1470e3dff35dc010c06928e8ff6179bdfe742cb68ef4b0466ddb28fdb71903423faa3ee6487a526fefa9e54c3f2266f9c4f101900d2792df3012bd413f8d7047c4d5f1d7a4c60cd4fc5929b93159d012f3f07196fca7c307447aab9d405ab04f280bc25684d24336e53fe6d09752db0bd2d014561ab1b0b4334bfd4aaacfc557b7787d53684e1c7f471e717d874017b8d47b3c08553ee16d0d24dd8ed252029406beba89eaec7f2317fa2d356e112299d8e23fae3de931a5b6c297153dcb89b25d669ce8dd422e8ec7639ce9ef76a6735223e92e717c62a17d177a08e3d157f62ff873b7d97703930e29feba00ca4267faf7bc6aadc06096426390ba4237d48b6b9c0e7ff07b4380a1a43e60e0ed77e43690d957378fc218e7bc0ad5464a4703198402ab8c6a75234beb4ddd89af624acefc06836f2940c0ffdf16318e5daeba6c0e0b946480c1d4affffd039c2eadf8bf48c4b1d50920fe0bfd422b0bbc2b1f35d7dd2efe6f4041648145eb32a689c756f219accb7fa34892a41fbd8bf2648b0863eb02a5961ee3ff763a6a2733db0f5d354d37f163e1948839615ef3d2b5f659c48cd50731ab5292aec492f922e65f82bd98f40454910199c4440a119c1a8d78e96d2510b1c509c252e17178d057c415fd1dd5cf4eb1404d86cfb545200946d3059f6dc20ec256459bc83366e2fa39209a18f9c986f3352e238701ce18cbe70579f728896174e71c7641ee7ecaa577099dc79e13dc908e08f816dcf219840d4c762c6bdee23a59d94ad9e021d5f7b93e661d2e4fc6e033fd7bb8f86800a23c5bbf64758ebd31a4706d12e6dfb7ff14604182575d9140f6716364b0ebe2665faf0ea61401db5b3abc701d037c0153676896934ef96b13ae18c8cd6c454d32eb7b8106faac148ee722f47ed59e29bce36061ec2007c3a21e71886c02816e91d37cd699f0dc7cbb527b7cf83451353e983193df45ae74c1bec7a8bb15a4d55a62da59760102b5d75a579110b1f1745afbee60bb3fd8d49201505d9627e96a16095597978bb7e9040ba719779edfd746a30c4743a8136180fcdfb0ef325ae2d398d6051912b0cf0cecd85d36bcc3705c24950132fb2a3801ba507f7e6025635f2ee540e7e6c046e4ef832588716a8713393f67f9462a57925ec6e3c1f0a133100b4ec28f5695fa1917260dd08132aea09e413bf3e6d61983c946529050d53b8c0ca5faa7193b4b744979e55d027dc0d9813e085bf8d1b58131300c7d55bc97896f08f4c196c51770d41fce3f48053e7849fda0c67f67b6e09027d90008355093d08b2035b05e00d85ad1261dbe80e30eb146400de8de41b18f076f392c7ecc73e56eaaba1a839fb2c8407e7bd21005e27e4adebd4eb786c3d862ff3318353664c8a3717baf52b7db96d1b8d046f098ff37051aede8e83f70c38e85bc0424ae90eaaff4aa04f2905595b8efae6d59d1af751f775d190095b291093a8bc1248e29c633e645c888b7637105e1f7063ea57743b9cc9cb8d9d0f1564121956483cda7caf716bf1ca5a8361c1644e08299a802c6c8145214fc90b2c2795c4978502f3545daad1ae566507be1a38124aff9683d24f77596ca652a33984a892971974c4fa6ba3d9ea89982c5f54b8283f814d55e23a42212c5e36bf2bc502ca69cb7d026087c60d49105dba409e6e3f7f43fcf3688a724d13eaff982a16823b9f86479e95e119f44ab524f2b1030f770d3747485cf576e22d527b1b22a5d0de3eefb04160d2aebd143d631f5646ef3335bdff4383f2de6f42aedc002c54755d7948604eb6d8569289dc5298140f200fe08d0abdfc720581b2aa55781de8a56ce1f40b548486b96aebef6ddbb4b04ca8c299329ff29924fb585b03bd3f141870e723f65e3907ff48d57d51b7a3f1a425f678a9c3a9650349f221df4f3b6597932b258f2a940eaf72eefbb60985e6a9ea2ecc723ebfb518b48e9683dd3007c521a060ed5d9ecdb4a6c8e5f9ff953a0858dfc74de5c265d9a850c9e0211b15221e5507b05f3d97edfe3ad826a17e51571d2cf53ca1ced0e5f8395671a4150f93c3728cb6613d980db180328676b74f15ecf87a2a7f67266570a9f163f41cccd356fba2d4cf9f411d127418f069f964eb53e25922db63d662554c5401f20b7c2c887e78cb6cf3d7752e041c410771ca03db1865090b3cc54ace06fe40902fac9b2357873b1f758a653dec38dcb65b9c47b9244355a3d33ba9ef49fa745a1dd75153858df79d3a4be41626aa39b9a9b83530579698b2a797729a08349d3e2a0191c36c334c79a7c20ccc96896398f7968e71bdc2486eb643d4adea33515a256ce572490da586be27be370e6189373148754d2f842b74221681a76b13e2d91b0f39f5f7b0ba6ae37c05422d91479819d89dbbb8c332e368c049204b1f257000d7f24172ec1258b8edd42a975053ed245f47fc4d3811f09a72a8cfebd83cfc25c16e0e8988da519079260e9f5cdd56616dc8f9a34e5da14fe6bf4e8569d95f0c4d57a03ba3ce7f65dcecec6183dc801962ce22d2c8906a945ff87e3f4552242cc995ce454b3de80a3584b37e9700bf11520a79860ec21f24b5eb33101acf8f31d365a58bc11954ccffd0ad0d859220d6cdb5875436fcf8942a0f2da2a241521ffc2713c387c9f2711b0760b7e89f4f40a3db55631819e5c460944e788800d81b5df05dfb44d806964c14b18749309a717d5ae70dafd9fb5208b534e613e22337b720bc10eb361c74d816dd53e9ea2ae13830916f069f249083430b4a5d6daf3531767ee80c8554f96c6fba5449451241f1c0b35f32b8e46333660d0dd671de1e3deb84fa053a30c2fe1cca174edd78d872b0d93525afbda869e9d54b760e1e29bd0cce99a5a1449ddbb6237d2b7258996c37b2b39ecb99a1598489ff1345c90c5bab2b2e54f014ca6b6b2ab3b317a4fbd195269282cc18e5cc3e1c0734831d22b7bfacc1c89af7f6fb6ccafa3df74f341afff19b263d5dee8f0103a1dc18e61a314721ab3374125c6f0815d4501da7486a43baeeecad5e7cba670b1f7eb39c02c7f4c3cd36156cafae2c9d9c5ccb7d56c5c0ba4bd0c2d5ffc9f6a67bc148ac28274087a9b3a4d11e7c6d6c1a79dd86a546e30d1afc6739df4cd993595f59650121ae626645a815580acb9033184b9874da1386f476e75d8df9732b960b75530e13f16f4a78b7a708c912e0e950d99045a8287698ce75d02dc1cdd8391f71b91c1baaf2bfd69d3dd6bacb630d24511ce6833b785b1e6b8f57d68d1dbadf7bbc3127e8b5ac9fb2a87d09d0d6a617cabcb371972e755f596437181449a332dce32454a7a214887a017371d93c5c1c35622001fb8755e855cb3ecb9a7036daa3720f33badfabd0001b0059f172d9a1115611f56dc26ca6ace2c3855856618c0fb2058652ccec09926e1c9489de974cd9087a28fe3d75931b14fffa818ef77c46bc0998507c3a133ba4058ae030c2483d647f53c909efbb4c8d108ff1952c105b4b06b2e2cecb19c6d4fee66c08145e0b25ad9c15a5e749043f1b4f1452fc2dc67e1bba396e037cd40a825c7f994a2e4a1922373d6832358dec820bbd063336c9920330b93fa10e1afa9909a457d282c5f03ffff7a5e460e034347230cdeae1113a27cd1a5f9770837663c7a17f45547e8a64ea7b46b23d48d983892123b8f951e6102d06e75ea81558e112b1e9f374e332211c9f0508933789481993011b7d3c70044aa7438c6259b080fc4e68f0cef127974fca20dc96e4fed3d62e079ca4a27b04f11a807197e9e9200b1654a0c7e6d8c22240949d540d74210ea3f957f643430bef2da2abbbeddb7d8081746157faafe88e805a48dede60c5d25237ad702c2c3bb46fd3c41f7f672e8f992df1233db54e0ecf37505426b402f3231c86720ca31f1846ff2377f010890ef72013453ee3460de63d17919909045b6cfdd4223a8b1fc6f6ec872b5b882052a2a321b1225cd585c41db8e21430b309cfee92ff6ac138e275e939cc6b3b98e2b59f68f6020b83d10f0d410f34d68d2a306b1589912d1cd6f69dcc3f73782b8eba6888ddd11c6dda5f032b5b5ab0b11c11d6e29b1b2faf26a6c617b393936df8046c3916145b6d3c510c6abc8d501e98f50ffb73dc3b3d4eefe44325e483c88730365549f136f9afe5334660b0ecb8282c88cee0e635a930d8ac7c83195b7f72d43a9c10da40434dc35bef94ea8464d718a6423cd7a5991db34e7d07e13f7d4d70ae9fbc22a80335cfd70774e6d248c814bc34534029b1556616171d3efd7e581eb226ba3be35b59ff097af5ae8e08eec26590dece9fa4821532ca496989c34ceb1e3125435bf9463c94b5fc7d597731c33f35afacdc82fa9455cc1e994706eb75611735009a0e68d0326bc5358abdb1d1818373e01e13ba3150d2b7f00cd29815063f17b97cd28f7191f671cf2fb665e5cf879a329f33dadc483b9865b48d9c2ebce639fd41f8ce3d1cb10849d56076e55bafdbfe6e8271ff9c4ffef05d25995230379b17c91872ffd9a9807c655f380030b13c2e8a090f3eb72c696927c277225b8214bb4ce0e5f36632c0f5871016870ecf8ab960283769bab1a3a57cdf6336102bbda8997633f616e150559a04b35a4534389a44273127f3e72b830e9b352b9b8a604044c5da2e10286705f2e27256af588f11eb0189c8dcceb90c3efa56f4d342bde229f8d7dac30c476d865d47783b98be537c8ca5e1029bdf19e49eb291fd3a9e28c75ebd864498970dd43bbd29177910b138b0607d27cbc6d9f98dfa0ba875809260b0240bd204d1b67f858db48d04b80bf4a332182a239de9a326211dea965ff41fb6662b0e5d42cb71398e402fd8d62b1a9105a08af4e86f6ba0e386405e9c559b74a6122cda0ab1c530c1907129c8e464baa7f8de8db947c7e0503e4f5889950b27c7fc6096152f2a76daa08e7ee171c4095ba9376d490dddc28bd6ac8337e37c7acff3fcf6e4c46c4ff112324f73bcc02e7866172744c018764e35a69100020ef039726615fb63f78eed59b580025bc48ccde0c8abe27ee2bbbed89ab72225f5922c78baeffef461be5a0bcc908229c1a212aaec91e23b6e7a03933236e30a9bac2d4536e0bb7d868ee24c595e92c40419583da2b5c5494be02c3064c60448a2b3dce2dbaed8431c77c4fae84167aadb0f2a48d1e468cfbb5b6f450e31c69a5bacf1ee6c9c8b807452338d8471b70fac26601871fe59fb08cd9c92f6e075d44d4777c5c48f7be7b6aa6322f71f8b45992562029af2e5a5d0c69d1c791f93c2377410ea072193af26046935a1491b2f37afe579a4e748b78292a698c19e179db2d24a877121a079f62a140d021de8c4f32d10ab5e00ab7e89cecbbf489b5a5d0e7952e03f064bff79dcd913bd7bd6a77693406f2df4461b7daf4a2e5ec5aa6d39c458aec725bfcba2fc56a80ee93ce1b30c diff --git a/zebra-test/src/vectors/block-test-1-842-467.txt b/zebra-test/src/vectors/block-test-1-842-467.txt new file mode 100644 index 00000000000..da93d738c0c --- /dev/null +++ b/zebra-test/src/vectors/block-test-1-842-467.txt @@ -0,0 +1 @@ +040000009b0cc61db12789e71f38f2670acd5897cec3a3045001546a2dad6f44636238006d453e8ef73f6f6d7b0b16e30af30b6630bff5681a73934844784cd2859ada3db42e0633681cca334bb046e4e2bab6ac5460b9d4199d92195ba0ced0729a8b9f63855e62acfe761f240077b915a8ed7ad4c080720a50514c57acea2e8ee0405b4213959fb4f40000fd400500b77b138a22750db5fcd202d6aeaeddffaa56b7d6031d67791501d37c196156246c427e56c50b1c47d80219bf91c95314bebf1b3651525d4942c8fa5d5b6f221fbf788f6117d79e0502f9a1ff185ed9029c2ec012f90695c889ef7459f2219ac43a3d48b094584d5b2c3aea0af18d41509a4802cc75c7f0fa32281cd8d52427ca259b31748d990ba4df29dbf1ff396e7f04942ad3160e7de9f945cca3e51ab83f0e61bab1361d0c0166b70aada45fd3580f92c582186b30b98cae90b9310a7fcb1a661a3dc9c334ba1d650d4e1e27f96ccf1e5b8bc5355eb8c78d88221eb66babe12e34f79afa1ec261550ac8bce311d4669c88512293612d1e12a506bafb1e08c908aa6471893582ed3fc7013e9b0a2b09ff2e8fbf8330c26fb0135cea614700e2fd53e9d636eaba39242adc6789dc196397f63aa68f52feb483440e36463f1a7aa5d30c6653ba3ea7459e2e6e9df709efac05308ba932e8378a9ddffb0e975dbade66781a5f0a4b23fd5b15f4ca881665c5ec1ac8ef3c361b1701048d5b1408051f2bd2cd7d466814c61eb560ab19e73e478892ed89c6b131d0ea32e18105c68c9e800f33a095de892368ba35f1517e7c41a0f80ab5637122aa5c391a67ebb5987cd302c06dc51efd013af75a1965318e812287f125b752e2006bb650fe31e886b424a78a2e754efd92df42952a95b73081a6661487ba0ef164c67013ff4dce5316ade06219bfa0a45e32ba53972cbf03553baaef1f78e260cfc55b120538baf318c2e261715f013f1d2d21aab51152853a1bf4be1c1bc4aa24899a1a274ea5923009c3b7aa3b75fb2e2514097ccee2865e2cefc6733c1bd3d2d12e8f6dcd73150b4d14fb8a805ea781531d0bf0eb6da0605b3e33230dae5b3e4db7e4940ef7e700d65d931badfaf40f24fb627aeea014854734a3720970eee90e9ed2d20702547106d7ac1d35aa4d60ddadd2a0855251f9840e15799c3dd19236f17ffaa1f40e9e3f80ab3ddb8a8206e07861dfcd85cfc91fd2f50048c3c24b4a5e91c11df2f59487127b5b1965648497a5e2d5267f7d77070612e7b0b620d11ba5e9567abf5cfabb14659ef6fa1d833c19135f28b1a1ba64e4cd77a62540dc9a6e24067f3a942fa34d3f1feb01e5741065a32f397f8baf3b478a019e92c9e9774383ba0a60e502a30ddea2a508b61de2c2cf8ad745b7060f2fbb5d576a927fab9e13ce6d28b9ab3d55f027a9330affb47ef9a47a0321153d9739d9560837a240134123ab46e704b35e397b1c19e73da262553726d852983f7f9b22eaff5d896e10cea3b88093af46b1b858d737d4cd9b70b59ea5b82f422aa0cfa5446150d82620bdf85341e577d3a9221fabdf618b4e0959d640d2856ccbb5d6010fb14cb2390a86d7625e65499d8299788cdff6e28abb5705e6026593bfc257fca9f82af5c64dc897527988b579be2bf6471aadcef0ef43e155518140c801e8a05561eb16644da15627911940af04219659d7fa5f3fbc2db620a65de4e78a86708463a95295d61eb6aeb0b7ab7b04e5a1094e3b4145e1ba82be49f31a5195bdb0328c1c3c95a261a6b1979b5cc6656754ce5a1fd69a24710ec7bb04e42e3b23fb0f91c8b1e7701219e67858d1639bf64e919e49ad6a308c028f778affa004fd3dca029b8218fd4ae20d6d022566e56023795e5fd18aa90add8a042b2dd8899261d144258fa495d46d120dcd06906a726491ef51819852bdc05b3f877869ff6050190b48dbfa1d5303125882bce897e86577ea3b0c6a07df42ba4182af3eeabbd25de5504485ec0c39403256ffefd96d2df42fe11db89a6d71d7376a53ddd5b63590d60fa21b1ef769eb93a4322124ba4065336ce06976bf0967a5214f6efaf75ba1dd0cae182178fc1c02050000800a27a726b4d0d6c200000000231d1c00010000000000000000000000000000000000000000000000000000000000000000ffffffff0603231d1c0101ffffffff0468b6e60e000000001976a9149875aea085c4ac8a3493e14002a9d383e07ee9c988ac286bee000000000017a9140c0bcca02f3cba01a5d7423ac3903d40586399eb8738c94d010000000017a9144e3f0d9a33a2721604cbae2de8d9171e21f8fbe48740787d010000000017a91471e1df05024288a00802de81e08c437859586c8787000000050000800a27a726b4d0d6c2000000004a1d1c0000000000029c62e202c9a610454d9f91fe8027c0bea78ba3953c8930fe69c362969f3286192e590c0aa41166bba9da77350eb368f60ff890997fac1f5f8f85302426fa2910f7d88660aa3ddda6b17004b3e2856d4627da84309e1db250aa1ba86e4af6d93ece0ca4f2f5f0044d5ea149db9dceb9c5812e35ddab702caab9977885cddd3416fa38f4c6e84d69de5faf60ac3333a13cdd0db248e7e0c7a3ed6c8a4b77700807a091a4a61d4531a38e4635b9e97e6f139611729a648ba90b6bd7cac7facb8a0389d15e3bc7e211df4c8d4eddcf436ca54812c35c8b63f29ef2626d31c6919f3cc93ef98c7af35b0d008264ae1ebaca52df3efbdbac97fdac49a3a04007c195be9304301d153d008d0a8c468fb20aa4597141f9bc1feaf98da5c02bcd341a9c974ecb7d6b319c1b64a6de09ff8e04bc1e173f64fb8ec2fd9284b1f86dfe1927fb223e15661103a754e48f1914c672f1eea038434b113dda720e002814045c7c3b7b02cb9538fefc8fbfa2eb35f55f9d3fb18b5244e54777fe86f568d6c9bbcba2a9e64fc29979c517b61675064f26e5261dcf3c138cc264abcd44f7452a3fb3ef799b37460f2375165bb7959d1d94a015a8875faf5242ac606ed5e3f554e44e2211dd6a5982d3bd7fe4172dd1b7011760d88fa2751c8120d1ffe90eb408c72869815ebdff4b128c9667073328d31795a5941a9deb14666923837e8983a3aa9c4461637cdfe4447fcd00bc9ed9cfa262a1e8f17c07c99bd083f64214499ad162eb012a141b0435b086f501ee1c752e36c2544e058b69915866ff8e00094bc6ad30bef08a2128148eadbf756794b99eb615f5fc6794ea86076ba40da60fc1f8b883e7521bf211b5aa92b634a8f74c7eff847ed1c1fb33a05cad34d87cab30b36eae29cb48d6791e7872bb3edf08dd57a11ab1feb89416fb38ade3261a66c9d89ea95a55ca7fa7fe850e1b204683c3aba928e18ede7f7a1a52b1da4cd96151e39be9068b7daeebafe86f9ecefd818e5c7917ba76aee6c045c1255c7dd55e31da61a2b9d9a96f1a1b7632092209e25f42b9803598732db168ba523cf173418f03300b3a9087dbdc83bf59b32a17e511b84345d142690a0319aec301e51db5d381d84d3e973a1d3f4a9d6abffee55e5e31b70c74d4620abbef002666fbf20790784f702fb82b0fc4525ea4d7824bf30a07ce492465a88e9ed142dd1152b60095367fec3295d55e45959b18cbf2d72fe8f45a3f48b889104fde804c57689ca9d2ef24c78c04a212e0545ef60848015057623d3cdd66f6bf4242814356272f8cb7a06debb9bce63d8408f7c8478f0612207ca1d5952d293e2e15d4309540bafee8b25983e2648851c9d09e06da98fca0aa0c7ad72c6d29262323157b772d49b3734012364ff0a5b8a6d1b5165fd7007009d427a9842d034f9a68c35c8a5bb5a36d473d3c16c16d30f04e74eb0695ffecbc67a0bb5376777bcbd073f0ae7e8bb59ec20e0e188dcc3d52315b6df96879b458e9f07be8cb4934c29f2f5f324da73108d4a8720b561a9547c422f3ef4082e6be0ae5f915e54b6825c72ab71c4eecdf13282f2bc1c0a1f83e81ed611bace753130736884598fc843b0e168954b54885370bc83be9d645d8788e9ad4947fea54e54cb7adfe401432fd3e224d6fa1293a722b7dd43a39e7823a8feee66f599abda22ada2cdb02f10c6961b043e3c6f97cda5cfef8d9d8528b79ce2d7994e8c2c4f105506579d1c05387583c32674b8774de9e3f097e25caa187624fdae00b055e2a9c0cf749cc5d38a7471cae87f876fc5fc471e89c6357dafe05c68df18740be43d1e15436a84a973fd3e6f3c146924ede02963391e53a7ca2674f1628dcc205dc10a6693ebf34417cb1f8e2b3e966a90019624c82a8dff18655e6ddb7d152c7e15d07a6189a67615cc024258b7ce89fe88fe9acf97d64470f3259f7141655913c99fe14f70a3e357384fc651dc0e7cf073ba44c940598d3efb87a47e9797a6b029edc433c4879984b963d274197f7786b0070066dcde74a8d9fa550c4fc5976e1c83a665696c9ea5181053ae09e5f2058156d7fbb6df52b9aa796a520b77e6c646c95c19a091857fa18c699b6c57529ca5a828847b63a445de63404c40588ff5c8594fcd34cd1373f7083e57cc8df3e9608dcf188dc3a99c23029b5393d1a034d8b0cf7c2ffa9ea76a93c7e520595031d5825c61af2510ea7906de9aaafd74d6776198cf8d65e429144b4d1620811de3ec25c5ccfa96adde2f9a02692e41f8b97de77e22f08b938bd3c60fe732e8e68470d829e22037c82a15a832a03e8030000000000007750114ca6b95e44197e30ec98cadfb0dec1f1fb1a416eb4ef87f1dffb0f5937fd601cf5d3020280513b3b842f110bb6c41801df68172fc4ddc485cac6d8f1d7a7393de705c64e8a0d149345b9faee3ea2f651e2912b958ff4d2c875f0316d12fc380798d0a6f54cbbb3437f94be9000f1446adfff51e9f0e5c8421167e344ca325a2c1bcc8378b3bba36eba52a734613a33207115e4b3a092eb0c49abe3131174cb2aaebb5b7b4f19c1f0a08ad146844b8727439693e906cca86d1edc1ee8f50cfcbe2a6ed0ecc7912d6dc55ef60cf1440a397c49f6d275e75bef2eb9e1de5c2753046625d20d3703b66ae91314861986e5f534418dc42a2ecd0e74f77a83ea94ee8e490f3dbf83c16cf4b005d2e3176fa212c0177b41ade2f1bfb02705ccaff6f31f4242384bae9f850f869e354fc22a6ac63445ddcb783be55acc132f2c0d86be9e8745c0d5a0208e2a3cf0dad2698f35f87f4e6c0de883182f67ef186fae44749632f7b24a0c3e0d49bfb2ebb331b8df43ad44d45e51f20abcdf6fd9ae56a1f49f0c0c093135fcb2740c7cb883039a2f0422bf82c229f118c7f0d988e43e40cf3348994b5342df8d261256a91c13ff5a64093b9cbea98d00107f3699cb0052fd8db3f1779f002809cf1bf557c6513489736728ba71699567dfdbcf033fc25ee59b8f4fc561858c4f0de2fe9b845179554b54a8944e42fa2ee349abcb768543fc0d3eb1fd0ae55a7cbd750374c27fa9c5b5e446ffd892e22dd9b2a8a24e9aada795dd3f9bb28e04ea79f96ac4a78715577c3d425bc6c26cc499ac0fb1fe29ffbfbe44a36bca75ad2ae7ec92d17189e18da63692d714dbab10bb4bd15119e7a80d120afcdb8cef930c7ebd687c7efb1ebee4fd172c471f3d0b65597481f69d7c7204dac50b3e722b3d48b4102617331de42fc01b6eddb4f8a6c9546884ecf86d3e809a84d29f676321d68061ef88a532bf30f609a76a04b3636924988778e3522407c497db99a59cc1ea180d41ae40eae00a668b26f2fbb3e435a2f95e1f09dd490b8750ba658e5b914f0b7f86459645297e50add4f78f05fee6e9e332381e4ff02a2818d16290b147f23d948c1ae47dd1c740c168b3099d3a3ad648d8808e620ebcde8cb6b6bfb3218f22f76b9505d04ef13f9634f9059d0a3cc8f0a135631f8e9c1b517cce90ff33d0f764150a33c616b93ae91c70e0bf8b51a1a64fb826f72f3def91759bfd962beef74b66cf3d4a8e2211dc00e92dc671a89a6c13dea67540b35f5dcbc59c9bc5f0956fd19894cdf6080e0671e1bebbef8ce45fbecaf3da728d07fa37d9912b45c1cae01ed809be59dfc990c78bcd904bbd1dd4fa1beaf7c1a20f02652510e4b75022e07ae59443c2a46804ba87354e092f857e6ced4e038e9862ebe90fa962f8a8639002cec1f100c09194f4c31e1de788e67f7acb9dfdea346d07fc0fb222725f1a39bde88a8e0cc1de9e8c4dbc6205edbebc146e9f02ffb63a66907a489ad10d2b954c92577d2d7113c71f95fd0102b7a852fed23d6cfe9e1417ba26c1202f9129216056dd71dc37a4f5ebc55c7ef628aabf88ee3dd20c82b3ad7fb9f1a8839a2a5bfa5ec07a7086e973572b7686e8f54375ac07c4abad95f2c47189e321c111e6b9dc1fd7c05ff3312209a07e126417b17e6821f909bab90d9f9d6fc31bd82234a487e85c5fcd0e4b99989e07da9cd5bef1264c0bf0a515cab456d9cc93a18d0197612c9bf07b131c8fe7cce5c21f4f856d8f47e9bc29aaddf9f54ac6af190f53088de0086254a104ef79607ad6f44db59a95e1fe14b18d0155c371faae6444af02cc30a97f2e46f7af5e2a80b122c357564b3b33ba7cbaabd496c73d953d90f11d4a15cdbffc96abd4cba7372a080b62c07a712f6634be5bc753d4f899cd3973ed045a9859f48d711799b6708a98c224fa400eea0a65a0e7d880ac2d15dd0e4a202088f25bb28f43270b4c73554f1158e2d36a82f48f9403c1378b6f8505948996dccf4d0ec28d2d11370194510ff4ad19a70af2dd950bb41f7e52835b244903bb6c14c8bbb8ab494789863e70d453a7fc91ae5bc51a2f31a7646487ebfe6af0a74137e504b901be336febda7871c4eb6f925881f824a2462240e9837af1a9bdf1a1139d206d11adbdaa473f820ad142d12e786c5fc700f9101e9a6a8926bd63eec01a66c5be156429887d271c2989c2020b2991c7b917727f17fede1d32bb3b1f7e3b3883d72186ccad95b35889bfd5949a10b8a1190bf22227cc1454dd0a178d1460483c3555b3b93fb916482ac908a820a786cfb7a5c6a974ca232dfbd9f8a7d977e2f0ca52081971ba112b23db41293ead8e1c7b096782d95c20f6938a40353483c69004a6ee29c31ee62394b561370ec41efcc014d940509163fea64459f3816ce200ea165d522523708775b5aa33132c62ae04bde9dfc1157cabec969752b2a8e3842232f34047d1392ee19300f6176c23a8363707c55ffe51d07b354697426306cc6fe1110f908d7e2c02e3d30362ea2353673621f5b816b8416478ad8b8419c0233b2eb703a6906dff297dd5d88e68fa71e01e5cf08a5b89508a56e19208ad15f297cf6bee2a8fc2570322c26f482d8eadc52898cad1cc7878270ca33f7c6253e4e10eee337761877a40dc0b69b8109a41201ab1ff94e3996ddb6f34c3371dd730bb9a2d82f29f8472b3930e96e7749aeb922740de83edfb610b36b92e839fa9a4f670bfcb0e22459ea4a8157ac542904209372f5f444d016113321a55a4a4d8ea02a16048bc1b11a8701be2e98d5f7c9e251b036f55478e5358fe910f99cb918a8507d4f25dcfe50f6978fbc57ffe4582aa0ee0d4f3a5f0f92ec14ff0c72d0e773e18b6d1fcbb8c8976af284c8ad24fc94d35cc13bdaeb093848848b1f825576a979b010997e2bd27cef8c59cb1489ae3a81702db8fd230cd9dc2e32e8ff06e749894455eef10cf8b5d67d98b86c10c80e40198fcdd8c936ec96ca5276df5405a7fac32ecdcc1f2852202fc07dd43d5a9fb1c4b2f4ef0c1468f03f817fe536e637d153ff409a37f11de7ab17b82b2150ed326f0e8059238515b6a7292701f497af3aa95c6019a30f26a3f7b9033e9ff9def0b6301b8b84bed4e3052f7331585d7c4c74b80db7b2f9d17e93ed6c62302414c009c470961e9e29a0b3f73ba5de2dc681ec67806c2c8eddc3719bd83f47299ec03c307445123ce3f3d764be0537939b1351ff4079ac4e9be0c9cebf83cb7df162fb80190199ed8c9c98d7e1a694256d2fc7548aa82ad56dfad89c18c3964a95f2d605978ed1a90cded19768db138a640cbcf3532e83c3b9338f01fc0909c790510adb09143e042bb2acf0067816c7d37bbaa6b579ec770bec8f82f547c9b9638235f022808e487541023da32acba5df746aeb5aee81d56b338a9a37e1fc8fbaf0c9ea873e280e92c272a23c3f5046eacdcfb5f0aee25db9e19b000450949d7b7358c817524b32a8f8c1cfe1b3b9aecc7be9d6046488cc25be63ee446e57fb46b045f7fbb94510b3a62273035265f978e7a74c65004b90dafb745757b76374098251778d96aaa8e9b6a1cc0cba4d170a03d4518251f255a17080fbbf0de177b183dea6592ac563f7d5bfeee5d4c48dfdd9a00884b1363edd6f4c7de9dfc1d43eb0518b9b56dd0779428c2aaf2549e3f587684a5b71cd42bd11de3af34fe1eed0f28f80c0d2ac168e2cb9916a327dd180a2c21a22bdb4d9bd5a5535942df9ef4411a26f5baf926c0a52de1471cb2fadc53643823911feee68bdf847a663b523d2e0767b0555f34b62ab133d5d674cd9313331551f623435ac5210d7cc5157454172992745a570890d91c6af2516518882303018200f0e47abb3b6cf3f136da97e01220c2de0532080a1fa913a126af1df9235442489996e246bec56f08d8dee5633467b40cd1d8afc96279bb9c0630b2fa799d9a752e7ef000cecba7dc9be0720b3f3017ff076080507a54efae0468e1daafcc6ddb4479c662e8ee3a735d8bf7900e36aa48aa440327dfe4e04030b4765d58ae997de160643af18d264943c6bbf613da8ae8e5e0f15769665a148382ea56837aeed4cd2bd19cf6c345046e2823761e275765a6027b78519334081620fd6162e99144fff94736b54470bc605984431f892cfcbd72fcf6e2c79d9e0855a1a8df9472b74667049918ece9852f5f92372126e1d306713ef877165f4ce1ed5549244898ad4b369e8892fbb2a99849494301c229c8702894c0fb44f9cc05a76d425c45ea95dfb13a89560fa068fd10a390049208b9123f2ed7b9132bbe419648c706d7e73aca4d203b5c89d9c1249bb75016cbcd700d3e411579b0510887291ad2680a508aec4c038276da8214925eefc024325b57ab559778c0d871c2bf56e213548b61f68f1a5ddab55a585c323b90ce007d2f6583f5cffd8749e5047a8b1dec3e66c829692dd7bea5e1501020069b033f6756f3042406986309a4de2ce974cfc69ab9d7b8919e189e0999828f63c7462f0d5f7c31eb0d91893e0a1a11b91548971e7f289d548cd8f3f26dc78aea05ab15ab968ed08a99e6d6c6ba5f916be7ccf039a8c50768cf07cb61dfc7bd3807233d821f03656e636f2c151d9385c86455ae50cce8f864bf19692dfe62cf1d8c272dc8eb27edcb72168f2b0f01b010bc4bb3ea49a8206edc0c26b2552ec2979e390364e5ffd1c2c22316e3f663a94d5f42367db79056c20d9e6a5365a6fe00b0af3198b4b5e1aabf54691162a03b367c39793b7a5e1f93b6c4ce3ffe05bf64475501f922ec8d0f245837907cad5ef7a94708d433331f76c55e380afae9a24a148229cb2ac496efb05aff747f7ae67c9078179e441163763adac89aa2aba3d0277b0b8de1108ebbbbfb60ada6d074c382fbacff71f0b7d088824d7a594f45fc75ba28ae0419cd0d2a06f959d7d87c8c1b19cae73491848d4aaa1bd0e60ad67ab0483d22948a88e00b61144b6a40970b063c82a850290f5b2aaec29d68dc7bc40b0f20da23af3bf7558cd04347e075e9b4f66678d38c1fb77c9ef15d1ef9b2bc256812ce98a67a8e7b44cbc78bc66727a60fc0bc42aab4b308bbc318b182bfeafc5c35540f31757245429bf27434cf75c345e149cf2acd94ec2342f4e47fc29a5e590167753ce3141e658b52988e38c2e634cf7a248aecee8f1e2faa1d467021fc472f4e14e33ba3b1ea762131097eeb6848b37bf863290f7f1662c510cff1e230ff1bae6c6e5a34bf675bd03973b06b88ff19cfc2f991b6f93da82644472fc7db7c38651011c22cc98b59215b1a3f2cb5933befde876c7de938b742f74f5931c55105bae7be33f752539d644f01aa6923c008b1ce14ca034ae77766df27859ccad611b0b312a73a77caa268c0fc5935a411dc82ab6d2b25a735bd96b58c66788a5f13ba023ecafc0a92d7bb69fe0e05f29fa6420a1a9c737cbd00f9554050d51b841b136bc03d55bf00b7a31e5290c62249698980cef426cf9edbe639f0f76eebd42a2951cc666b3206cf4ef42ddc5c601be0af8f17d04efcd2da6648c95e2a60e103cd5b67cd76a49da3b1cbe259e02600d10758d59b3f4a14301ba4cece6400d6108661a40a3f004618f01fbdcf52ad52d5fb025fa504e899e0b522b3649611ac089f0b3ca371863eb2403a8efeea6d5e3db8e2c3e99a8f548da2d88540f7e6a336cd2fd6a74ee42709ae46f56e6465d18072b9d66e3367de5aae7118f1fd0d8f1d3416dadbe66654bab3c02cf9c950bca84c85065aad3c25a828630435d9b38f316be1bfd77113ce9d1019e9d6d204da75858d57d716c375eb8d065baf7d4b53172ea0d6dd6e66bc892741bd229bdb983b5c9240e4604e09b29108c03b793318147bfa68a31ce5b561eb350512ee7468ef130d6c47ed0b2666b8f5b95f9988e60c0dfe7e29e98d083bcfc819358a881a84b3b95346003b3ef9d6fde9d063525f0f0f83eb8181bd6237a82caeb4483d19c29e108abf0b11832e43c411be944e912f83e06756eae99aea997b18f56067f4ff3754cba50d60b155a6b546b33ae97b11534f84a1c9c06ebb34a4527565e8a09e006bcdb2a3bd9200dbb608c3d5bba21d3d321a48929093d4d1bd85c3ea022cead5f80160980c424795b72db77496c903389d1277b74ad0865cbf795abd0e09fde89fa8fecdcec0d128b774451058572b2a9d9afe4fe835de4a338278b54b0a35e7f13d07418f9fcec61653d5dcbab620412e2b7ac612c978d68e58ec5933c14cff7b84647084cb3205ddcc7a903bcd17c28e0f5c58b15bdc7faa1276a85eac6d3ff312d2e019ac90c891b7869836dc178cf9d1e813141a382e5e76c896e346d50c5bd3571371a1438ffce5bcb97414332b1c3aab309e4148e969469cfeaa014fbcfaa7f598fe4a9e326c7af6a5d70d270bf0b5684709c03f0d0489678a6b60acbb04ab3ca7846a6942bf77f67471d819a47010f7ef07eb088ebc166f11b5c6d0e7287d81eba0e275b26785952b2f79264b93ef0e99b88c3fcf1c579088bb7d451db4e95d6bf29969e3ad871bd9a9a408aaf50065a775b9ab7a5520b65ce70b916ab95fcabf58205af0ff5f2bcc172c2fa981c9da8e9e5cafb8d615b00afe9139f0b40f50fa8e3800cc90ba06d0030800e11ab8c1d7dce4c5065d85835aea84bce1efbeaef49a59e7481cf8ed529f8214317230d5a7e96d75e1b6a82dfb04752be5890e09491f08c4b05fc3b9ca8b42025082bf305dac7397cb63a2b211741a7fd06ad090fb60f0de6d4039a93e8a7d26ffbdf318eff7aa6002497842f05c2fbc833b104ff1b6887e496bd92fdb9b413deea321cd57f62b39e4df3b1590172648bef9f2734c8fde8ca8654bbb515a5e37ed9dfd173140d821e3fcfc143ecdaacbee56c1a19eb9e5712bd91523e2784e21b53ef906d2ad1b932d355301fee3657e469cad6214dd39317a573c369b11e51d0fc1f56b79c75d81721bc5cab0e6252c7d8d0b3b1d8a520529abaa6da5dbab06a67b08901426dafe3979ebe6d3ca8c138bc24c800f30d8b74093d025008f8b3758aa4da7ba35332e4890ed905b091b2cd87aef36e8573acde206df8d8bda742ef0573cbf399c248c934350017b324532fe7f8d0c660d170f9ffb03084964e73cff2e4e8271bc558216856cb3866998abf29ff5d5ead749b367f4a6297b04a502bc01d5767878ea7ec7fd9e38446f6ab9d09843535bc017bd577e29ed1a7e113872a074d887b61ea9616b98f06753e088f2c21fc450717a469bd31677740a96153e60778956db7dee05f7278e81332ace82776b1b853361ae4e0ec8e847325b10bddfe5af6a4d042e1829af67b6b3c57ac4198fd876dd5b16ed6072da149ceb39539f140b59ad46f5431604ac32a5388f335d027a9d738de883b0ad3b250ffa251124e82eea2165931909e447307c9807a5e8c0e9f3495e6155fa9362df3b372f7b170511baff68f1e6d63354b8e9f9a0eca122f5f788cc26b361d9a901b94a0b8df91d3c8a01f2663bd03808b42dc8eeeb7fe967a2f309f93cacb13f9f6df63fc05896d0b656ab73c72fbcb7c5b6683980073b47ef72bd2460356b32736a1c2ad1c313220d19b4e53f18bc5e3577f7612e818c9cbd0e0d26f14694f03f0fb0199e2361ce86461293188d4e8d72324ba463c60236972b241d24086a25410e020bdf4da0520eba8711fd1183a4c8bfe6a4a61fcdee667d89f170437d39a691e10d9022f72af6d4a5301aea4eb45d37af8c77cf584d569441a17485a0c04995150e24204142f3f5369daaae0a5ba87bcb45ce83e9a1313f4f4c8a0e7b61da168b1186ef5bb454b79885bcb43d32ca7aa65b5e89446c061546f900a383ee1d0eda303d2d6ce36d573f645bac783d97ed78de629110b3a3e1bec99c4256114b3c4a0c17930fea792519b9c2e127cced3708c19d10546833e8fda2dfd668346a519000b93df6e63263d2f483f1729ffe455adf60856c4ec7feca95f542dab2e1c1ca11d0b725297c05ac2069825027160f245a7b8288094514a5289ccf4570019e36285b81d0ebd56ac13cb48861eef63b210cbc6eee052efdc3f920c50dc8101f2128ce4e9ba7e6ac99cb136e49e790a696cf2486019bd17fa30cfe8cc1864f4054384398cb82afb35b7a273cc7c1718259801cfb048377796fd47eac4a417f6f8d0a589764eb6f361b8d470f805ec6b8f500ecf07dac2ec63b686deea11ee41aeb3a5fd5d0605e8618fca6b88a400143677fa5182c7f8677740131845bd6e5f88624ff38aeea14bbf3f32c63645dd08762d00be006e3021e907ed81330d4ad626914a0caab7a1dd95cac9601a8ed59376274002abb083cd971ab23efcc6a2ed01c269d6ba376c95abb3c5b6f9fbf94789817004adce0d9af5bb726b38b72bff50f064d2de7cc9f73d5028e81089a0f5274f62a4a8238a80751a5e011a5f91422a915846dca42bf08a4feac02ad15dff34555c592aec714be2e201e670602b41ef51d8d2078c1c8b1f68e0e593fc9e97a2f5e3fafae2af17b043f9667f34b9c45ac1b729ceb226c3e807fe1ecfceced365e4951abfe8c8be9702c13d7b20cca8d4e37b76396dea4d341f71fb6a80165106ef4463167b968f9122dfe8f2306de530c2782536813e89e0da61b2441b82b395aab8486d96e0a26285a76d9506c6a670b3a08d238c274d0be8a6a49af3ee372119fd91d6107d92cf7a04444496aeace252b76dfa43b3c7b517ea3583ed364c60f9b62484867c67c9ab24ce8a12c902da70cebf3d7b20d720a39bb17f7a3358b55d698980cf24d0867f11935eb3d5d57e822c2338da1b2b03ca8c57f08d85bc8c80017c39dd4ab2bdb82b8a6cb3f55155935a521ea0ec13889d568a0fe166caa7166345eafc2664ba38b3183c57943c52a36caf414888446067abedbdfa9e400ba06cc5e4c6c32bd3da2ac7d5b52a0ed0907d4d841e77e076eec1e3b614ecfb9851fd8e1f04f7fc1e163ca640d36f03f221f8449365b89a3ce25af1cf5364196e9b7e3316ba5c182b556a95b3d99cac0681a7c56c31995434b0a52f776b75b53a52462bed15764fd475905d07408fda2a801c7e9e461682378f6e9522bea6fcfa128bc20a90acca07ecd249e6410536ad2325bb9a1e64e9d57c1860089a67c9555c6411891eb092ade116593345435cac7006b978322a9a083bfb3098fab435c3dcff27f054c5567584b6f2a32ed14db8a8ee33f65619f4f94e50e01a7fad4c89ec36855627656b0193ef2732509a2749aaab9323934a2de31f52e54b275e2f67145d15e0483cfcb9b3d3bdacc39e8ae05ad0b80903260c774c2a00648e79c7b2ba1c922d2fab2920d07c709938efcf5271c5fca3f4f510726a40e08ec6b78fb047f88c0ca17779ed0d593e848707b43f9a2029b9dac5b74659cc36a392556c3862cc42b7d7a69d198460df905d45e22409a82e0dfad4b6d43ba2862d05556791c95eec67a48ba559db687356fb50bb290b0854727786e8ab99d6d22cb9b8994794048319684d197125e2b6fd7c8f6d2c79826687458cb895f575bcafc15d2729c6ceeadbc1ae9550720f0c91e1f10db2f0099cb49fc52813cef0a15f6eff5bf062da794e9f273f9c717489d26fc2cc6b08526d0fd20a957b8920cb417d412f379b7f596d7357fc08f0c3e48c6719cd385298cde947a1322d3d5d8762d3a7c0798b1f90282e52bb8bc75b775e2894db46309cdb77693352a45b7ce40aee3fb8c8d4fdc7e7910430e8de1aa80d5920bbd8600ca5de2327c3f2fbfa11b279b5a3f1f918b23ec821ea3049c80f92b9d57a63a378773df1468f6746c52df9884baba73982c7fdd9422436f495093438484d9259eaf71ff5f5313f9b591c9a09ce57aed7d5dd093a5e3b25393e73376a6b59c5328c31ba658a1b58bfe3025f157edf0ae8ca44226ca0b47ebc8194e6821534f8d3b79de6f0691214996310abf40acdf523bd3d0b95ebd39a3d90fb68e03394328aace307326e95008e0391b332b53e2046853f2a5f68bc9e404eeaec70a4e3ce738c3cfccde267e5f5e12627eb3b539d7f87de08da22bc86c57e7990d6a3bba7e1d3b9ff7a0ed8d5d6394e07eb3f03e9262618f9e623c5bc22f939cadd4c6356e920a74f847a5338565ba62593674fb85b8a4952764436cfb14e915ce22c0f76e98d445d331a9a3061e14430d9cc279fd44186602e240a8e5ff94b5e4e45458e08b8a1d6900ce851e422c6ff7d7626651626f55ae906c6e94f09ea524eab40cb731c3d7ad51a87e2f4f64253dc789a05be894ae77ae228f9c2b08bb7481fed98b2a34c02c4fac262048e57abf8bca1570185618dd6238d4ddc7b4de497108b88626f157ee15790855474d0eda8103700ae31befb158d84de105cda43fb54465ad2649a527996db0cc01fb004f579eafcbab9b0c61db6720a09e775313c3f4ebbc90aff349b5abd036c761e66f9b48b2ea08a9c6998707f8afa492be11d1b997c81bdf7c84ec85d2c3363d4ba12c2b6b87d895150c62803630d37fc2cab6b7380886e3422d442084a3a69f74b67870da31eaa52c3d7f175262b36b1f3e720edc5b1e diff --git a/zebra-test/src/vectors/block-test-1-842-468.txt b/zebra-test/src/vectors/block-test-1-842-468.txt new file mode 100644 index 00000000000..48a2aa4a885 --- /dev/null +++ b/zebra-test/src/vectors/block-test-1-842-468.txt @@ -0,0 +1 @@ +0400000015f951449e379d8dc6d0c0233f3262a43b468e8cc5e05f2386288e64af730600adf8a03a0bd272f2c43ee6870de9ea00ecf35ef30642cb320ca58bea730a6dc3689d96e44cf54be6b4bdd127188d7b913713fcd3a1b0bbaeac7687c79d59855d64855e62199a741f00001dc94b3d9ffce0f80c525f8e5c652195a4f88663af17458ace6b82d90000fd40050013c526a655ab42ec05a0e77b5f3f988df43bf2cf0fe50fa01760785910b63cc9ce7381ef3d533be5b22d822cdb796cafb7b56eb4b73dabe24a90619ac46341e6d4c7faf8f57fffe7d583b8b029e68a78b644fa044c4a882d8e6e8b167e7627d043d67a4d573d0e4939842cb91b55e161512264415570d4b3d2403f7453046c8b22c9e08ff76b5474b254bbdf29956799b67a2d10a6564da24a9bf487659352318bfb6bdd7fad02005bf8b9f895ada315cd10c6e79dd6812bcae9c96f0d0e914965f5292bbb7ad4e9d6e4c6cdbd14f38ad4012e0d178186ecf78290b08724e02e4d2a505690de07404a0b61f2c3b39d02b3354ac9ad67a0827f717b056e28fb24c6e2a85b9400fe553ffd04e58d33cbd40f8c12f705b62d73ca530232c328ec9b6c121c94991ce7af9884dee081d74533fbc54b40cabd225f9e831ff361970e32fd9bd841622d9a53c4130e593f022a014a7599a190b24ac6dff7a1806cbe8deca31333f61e510bb2e76e5d1bda19691d594cb416d46cbcfeff0985940cb1c9ed4ce7c5c1276b77f7d103fc8cd14f122537beb46727b9cbfe01c39e6e2cd4ca592a751c03de19b06eea2e2b9cce63483bd2f839cb29b1acbe2275ce92015384c1bf76822e87428f91c74df93d030c53728a9997eeb12740d2b0b8e348465f289e8ea76109cdc967606131cfa4b71640547366b3b299dc0c03f6df51b78ed95f5aa66244d261fad587a330e538390cda6d67dff0f341df0632b75af6da1e5bd36fff0820d2054bcfb20bcd01e317981cd8b22999b4aa177a4555e68ee76d1b5dd7980da4ec17ba184fff665507cfc3748b46718f38d0e83453d2498a6ad895a2571087ea3827558a45a91cd27646e346f0d326d4c0ae10812c31f04d83dd8d15e63a1d3871f743c49edd6a2dab9e99e87060f1cbf1a53715ce88ce02b0d1ce62001db9158a99fdf3d95772b2271ea1514aab9e289d240914235058fab6d1f40365cfdd493aa443d5cc8f336b3bb4008debab01aed3bf74be8986dee43b22c03d404b0846a396b93de416340c5a514a24c698000a03b5de6dd7a9b585dc18e26e95deb5f62f84590bb34c5f5726a21b8d337f00d50e8bd7c51a68b678cb530763d412b59a9af7494bc26f0c169e05bdeed0986d2838d3e32a37617bc2ea53b9d7ff7cbd39190a641402bc25e5cb1c16b9d022b320d2cde78d0c70b0663e1a5cc1b0975cb3fded78e25ed3fd60f0ae334a7b1e086bc3e0536cf9afbce0f0bed2d59c994d209e08a516dec66761270c5b5ef5b260beba29d229cdf5d2d30f481e7ece508123209d317598acfad8e23a5f8ef912ce92fd374baac8867d82ad317529a0b89c1217831a502c479848f1f12783f59bba536e0e37bd1721211f7266de566af9b963a86202ffc8e3317598b4639304a096efc0a9c10fba1f429072c52105d2d0bfc1781b8465e02d491fdb1346c627195573dabeec39bc283ecaf46bcfd572ad9ce3e3fca6e61541b278afe93c4461beb3679c3cfcfa92c4c32ad1b3eab2a7559acc10b7abc68d0b95fb4698c4a88bec32d695b219c1981e2e3a01c0a00773b9d9e35bf83e08d8fbb62ee2f21326456bd4057fa53d68115402c0d77d4b526d0e774570d2cc01b61073b45bc53be248cddad4b77e3a18059f4861840a640ea46d6b14baeed05af2967f8a522d88ffbc305c1db7ee1262dbcaec5484d92d9d335209ba3fa26d86e97d1c95f0fba891e5f6492bbe320e4aa273b6185aba23239955ef19d70ba1ba6bae4fc7063dcecac9823cc7bcc9f2d8b124a4ad1d36b74a562756318724611b911e6f231a6f6fa7e28adc95986214122a555b1346cebf5d85662cd8272a5c1795f7991f6d6948026dd7b387efc532d3c199498314ed1bd002050000800a27a726b4d0d6c200000000241d1c00010000000000000000000000000000000000000000000000000000000000000000ffffffff0603241d1c0102ffffffff0468b6e60e000000001976a9142e6b134dc2153ffb1cd4082cc8f3dba14a2b9a2c88ac286bee000000000017a9140c0bcca02f3cba01a5d7423ac3903d40586399eb8738c94d010000000017a9144e3f0d9a33a2721604cbae2de8d9171e21f8fbe48740787d010000000017a91471e1df05024288a00802de81e08c437859586c8787000000050000800a27a726b4d0d6c2000000004a1d1c000156dc2007b77b862a1a757406b4dc1a13c3bbdb6994c98af902f769420dfff279000000006a47304402206cf644a4db4581736378a8a9d8204d77c1e4404bede98361cd247339dd610f5502204f79d73ef108ab6cff2bd5ce2104f408721f24c301b9c1bffc622e752c20c81d012103325fb5096076275d7e7a13098c15672cf37e2727b636e301123e0ca4da8cbc6affffffff0000017d622b31eff4449daa3a22925207914ca7bf2605c1e99b1d74459f3e08197b286fe126f1661eec9cc30583c697df690230a3bf05e9aaf25a0d3a2230b9833c34ba6a20d628b4b507caffa20ffd1c8aeabfc00556c28d1920df816c7e2e66aaa3ea0497b686f4e03ee0d91516ffe26a56853b96e5d3a7e1be5ad99acdca0f69f49157b004e73401e2787791da0a761bdc588648502d26ae2b1cd47557df9e733cececc511847c66ac638ae6ce71a1d1790c0ca462034ec7739bcf86b0884626faa1e9c4183a5e7194ef27b5f1561e98e761227a975b113b9712387eb145968a8c20bc7026b461db2035bf07cd64d775f3aaf5554d66f912ca38852b26c8c4baf09d3f1bb084c31535064f02b99f7f51df9ff9b5d525da7f1d8ba8eb910db0dc70299b8553b831ce185ff9b6769735fd4d20c63adbaf971b3d4cb2398b8ed6010b663640c912a40d826a1ffdb830aeb6189d9e4cf7e2369e74e6e2a6fd012c1ebdb21067362c858f369a06b5ff7001d422828c71f472ebed69c9cb55bcb4519760d2047e0654fd34d7daf0aac02e88895727f84338a04927f4eb690837eb0669b25a1ee4cc6337c1a16b456ab44409b692776a44ed0dced02867f1c5a525a40ab4e04ba33b41894def3ec34c319d5cce0ceaaece1c04af41eb3b235e363cac3a8793a9a2425a373ec5c0159dfea92594d9f39fb73ceffdec49c3011b6e5daa60d869df30b1b20bfea3a4f93a1fb3e67694d33ae13f02e4ddfa937e100347fabe52bbba38269eb5a851bbfb330ccfea5ff0aad1c5ad40fee1e3031800364ffcc42b250fb7d0c14dec91ad7bc3442d4ce2c03cd31109b9bd14856f685d8056e38e16992f841b1bd24305f8d4b3325715b40281a6cce290ee9b8c2e7a83062d89f3ba968aeea54c2dce7b480aa5880642795f768c3ffe1e6c0eec831bf48a097ff2a38a73f918c667cade52605b32fcc2ba9ba128dcfe0179235dffb7e961fbd8310a5f7f1586f18e4bb5d47cf54536a46503fcbc1551a4c1e43e6023e11f0f4216afe78bc5bcc7db4628f2b38f96577b7bf578c56693685119f1ffffffffa5d8f7f46fe6d85076fbdb0ab255159733461ff511746363d271df57d7e76a69457c182b738736a6d00f605b84d4c67a8970dca1877f967fdbcbb1901838b6bfc78e695ef37897bf3612d21c726d0b3943c9dc8c7bcfb0d7e99b039ac5bdcc2e048648bd36563255eee23712f69665fda5510dace0da0647c84e5772d4f38ac537d2f1460ac4167016b22bf454c84801a125361aacb271e4870c4bfaf23363001c7e342ba7636067a7e1f49f77e5f8ec8caabb0c5a9af0e5dfb38bef2733b8ab589d06efc190d81f3791dacbde27749a317a150f2265dd79d31ccf0f5c8ac9adf61d51fe0348c89e7688c1a72865db2c96ed43d05f2f27d0e6a8d701726b4701029982f3d60f71d1b51b41757a5e464d9359e9e4a3c90a829bed3e3083af62fc0379b2bde7cf3bd06ac7ebaf39b3d62bfe0f0ea6722527b66b8b3129d9d1309f1694de33a61ad19de15fcdc5ffe02f5888fa02430198d680519200cad24f2ec0925c1088f97c252c3d72c033d2accb507714d550d37ba34a127df1d956261b1d0942d1fc79318287c84c0e53ed394c385d7fc05c77223780973248228fca6259329359a22c33f2b1c5cf62cfe5b1f6b06deb0309eb0c6fcd4305b61ae4dae6a533f861b66919464c70ab204a8ad6d5d4a63e523b4dc7fdd664c8ef4d8805eee4d91f4aacc8220ae525cab2bbece4a49424c87d93195934963aec7132f45d59eee784468ae704a9ab9e933a226300ffaed98ac353d11f8b33b4ee5f015f0fdb7059711c12c1a1e026534c5c52921edf46551eb4e14903e61a5bb0fa7078332cb5ae27a4095ce0f2fb69b5d6cde4d77f2fe0f5ede5cdeb57abef4286736eaeb2a323c756572ec3aaf3183216df818d71258cfc1ddc27637e6dad715ab6dd0a514ee3c08866eddfeffe79de3a584c926249a9613e1553d154e8b0fa3b38520ef8ba4beacd2795daa6693e9df50c88fca2dce6603280221981147ef87c297a6d0ca3f710039afb4562e729ac691590d181c715a39592faf27861acdba99cc6f215669e80d73277a48ddee2d090fbc161017e0fcdbb5e592b4ab77a991660a399e3b0b38cf7d52e90d48a04622f757b14d35b852ef394fca3282ad14e518cbed3666662cb2b884c8044747abbaebb44e33249e75f0b4cfc43f9f6bf790baa4f7ca2e562423252cb1080ce21ea3428e74c45cba987279fb39ba7fffbc1ebdbdcc41fe04931abd1c569ebe133cbde8a830d1357bcd90ca29c0dfc929dc824c0d70903270aba445661ce5552e91ffc41505c29bb0ff3ff09fa1d3385c8648089c7b79f326998064bfd6c6c2f60cc3013792ed4926b3368dbbe938874de6ca28d16ada7a89a7f5fd91e19f20db93d528bc07590edeb7423b5e615cd6bc594461a3f5e1a8f503a4c60047a4c07ac3ef04036a9a6f4b1ab2b9a50000909637cc93c6d593ca3bffa309485a5dbf777839a6e85585252c75954ecfaa9a23c9ffff4f4c7278149bab277fd33c89df7240472b761e337afbc2871abf208f7631d409f1ef1e509a6d4526683bb808fd72bf65c2621676f9e34bda11f9d306626604bc14029de426288f9779a58546c71d36f154adbe9e404aa013d8e309f78d1a789b3843e278a9a18f5a9f7edf918ae7e97e6714ce189e3f716d371aedada20b8cf39e7f97b990dc7a0e58c4f9916e6de8e88096266a46cd5a2eda137be3e222f49a3b720e9bc8eb16f74d2e01cf7f7a99e410cb070c2765627c14cb514997e42b62c9633379d5ff350ead7c5b22e3c77449d38b2106274b8ab39a18c0c2847b825ae5c3b40a60577fa3670f378f38effefc2eb30acce29a0c906e84165b6620f94de99449ee3f58f53cb081ce8520d902ecde3881252f876ed4261cc1729ce54a91c45216c78e367f8d181c68f1b6f07a7ea11a2b8340be6c3d91eb25974e9bf65cf214282b9f6f096446287b4fadee73fa897fbbf886e923f37228f5c7a9a5f836dc12dc9210cd8bf76a61a743605b97c15c7053412fe2aa70beb8a23aea535a1079ee79a8f81e913c8941f558291888d6dcdb2d6df28c3b8a4cb198f4329751801ee5cb27a42a50cb9f02e4024170535644068f78fc952c8c65a2e475de530347ba096d587786d09be1770d9b81148424bcaa1031ba16c5742b201229253692e95f326727183df76ff9848039cc9a78ae7ec9ec3bc1ba4a3380c12a004c47ad861b55310e904cf1d84edc2c20294d47ddd54025e7d8d4923bc3c23162c8df5040453c3d3ee7ed94dda77f40fe15383135956d6e0a0f54dde0e4810fe6c097caa975f1870ae1de7dd704a732efa3f5a6fd20c366d5952d0878f796568022e3c02fbeb5f2210b781e7e647f3be0b3df71b3da76c137ab6c07412501aa54811a6c6b39e6f0a973b7ca9abd9934f53f8e1739fe47e8ffe1eb3ac19de88aef73ba92e81c73caf2b34e12724bdd212e88a76408f2c15f5e30e5b7c048e0e851d6e1366844fdcb1025a56024d27914e2cb727032d1f392686f3731f922179b8855185d5f0c7a5198a8fddf6bad85dfb3fbe314f55a48fb2cb91df3552e85c45dff2613102a852946c784b5b6efc88843aa92c3ad1cf3914334ad54f064148c479e3f87c70974e1d33dd07b785a69ada45ca37402744369823880337a194245ee28a6d8507ad6c3ffa14070f0fbbda4366b0b40300000000000000007750114ca6b95e44197e30ec98cadfb0dec1f1fb1a416eb4ef87f1dffb0f5937fd601c421b8b084728add9698d08419db23324fc75d2115af9fcaff3b875fffc9f1422a29f7c183940420fa423b177fada5cfcac953efd5c380ee6292dcd4f7f932d80cba382aa4b693238617ef1ecc7fa20a2826a6540dd27c30bc8466f361d12e39da3758ef67497122d02752f129f65b66be4a476800fa562c04265f0148fadd929daf5893742b782186bd5bdcee9a21bbb3b24d14fead882abbae1ef4d5a368d84fe2cf6ff812b08e173279d46eb6cafd39818b20f0a5cf9daff96e6344b7eedb5aa4dd06215318354709f07e65487e5a3c2f95e2a03bda287dab6dab184012bbf4f9d84528ba58174832f17bf41a33d048f47c80f4f476743c0f15f10502c9711a7b03510244c9a474d27476a7aea308f65e55d3f7b7f5daab77112cd6733b41233b42f60b168c3e5195df9de7e6266fc05ff1e5dace8c8e6708ddbcd4e0ef808f6b789b7dada2113ef47d0ed585ef8ac56e55201a55b8516f98c5605aa913dabf471ee2ccfa90d608481861098e08d2767f683cd857c311cb9800eb4f6290383a93864979f096c5399926de4436120abacf91c24a6d256b55318761c8b91450178f9ddfa381cced12b3f46c9b7aae1b2078ea1ffb53a61c3377638946944bd9add71e3767931e345fdc1219716f814b6810d480f7d2c7a4209dfd1d128d0ce1592ed1b581c22c2fba3935840acdbb6496ac4f6cc68c9170ae4a2fab855b12d3069d632b9362cc28c29b282b48695ecd6b3b4e976cf1506e807cc1a2d024b928aa4fdcaff2498dc73eda0f39b0648ada0dbffb1aa2fe175d07775488e2524730de2438591e88c97d286188d69a8bb53ffffdaecbce96b1acd2a0a9b4f0461572ee61d6f6258e73665b8fed9f5634e25f1e0bd9278b5ed5d08db9cf04fb8213236d5ca45220529630aa94617026ee3e46410662b06208e9b7bd1bc486da5272d18b430b8d1249ca117a8a6786f0511720e537c711db46d62f4105c74bf82fa4a24b99b12e250b4a06370bf1b9b7859b36d8523118fbe6fd840ae7ae556627bfc8596f20c643d5b47284aa93b40cae20fa4a31f355940a48448ccab5662dc9e929301479943f4b7bf7b32439b9fd1945d6bf3341371f3891c58e2256807ac9aedbb91856589bd27f8281197659e89eeda0d8ac56639859db408ba7dfc104ff2ffb661a098f878b7971ae3bc442f73fd513f387c4a4099c7c3e7b54012b1e72105a61a7451eb3eed59f45c7ef0b3b11b1826d4e3aea60810bc6676b277335276e708d89ea3f0879dc28fe862fc4b7923af1358113d5614b2630d26edcbad4f83dcb3d9f49d89df42189dff9107e306fe49c811b05f9188b7487354272653abb134349356f2cb9d84b4402fc1bd26b8ea6cca4f2f2eeb98a43521374298902eb0911285bf07accc2b8e79457fed13d66b09e933c235714807812785ab884aacf62c2a535939ddcb2c0bc227111fca434860d11d08d2ea0385431b4ecf666fb0071233e4fdd1d956484f214dd0b396ddec71880c10c9a2c2aa5a3ce1db207b6146219598c7db5872f132b30c9649ef45ef9977b8ecc0e884f9b25616b01068ed06fd00f3c23f51e418c6398e316f8dd9f8fb1c885ecf80bd9858c6f27e6438f4c88d2648a1c2376f17b8218b3dd7a8a9ddb4b6c18290fbbe92b6a523febbd5d223a539f71013f8418695d016c11251c78738b7c5e75ae0d0ff14c218d455c7a234a3a9f65bd7801df25d1815033be94862ac3ccd52ed7864d89cb5f563525ad51d48bc8cef50a10dccc6526cf8ec840057c26041b07fd7203f7f50fdc7e6ae4b5a093aa55d13eb185b568190c85588f6d8c8b9ec408ea0ee26ae5987a2ebd687a3581cc66879f76289a6f5ca8d761cc4acb18a71fd9930969d7ec731354575322e5b10f1c34dd3258db70bb2097e3dd256e97552479271aeb672e15e322bc539eb72ac069685fecad2a2b022b789288572a086a090c198a713c1371e465c47ff9c34935919e04d264f95f50744d38fb913501177a6d57c8138f705f135ec556422803b6be9eaaf6822982a78e74965cdf0f510aaf225fb021870edc98cf2b786e85e2cbf61a0d4296645ec5627a9b03926c83ddd3dcb68527cbbe7bdda7a6256d5613b6e99cabc2f0eede224b85f5ab0ada796ea160d3f08c0642f793ecf6b81b0db89f4e402a1faac001045e6b1203e146d142122cdf6fb8655bb6b2c6ebcba3bb22b84df145ef9b9f05692943150015cd8915800a9078935f5a7ed726dcc8f213aa69bbee0e83b9627c6edd1e9e4cd8f22eb2bc6fd711d4d765c23a47e724123bc1d5fa554645257c6c030f8d9584e5dae58c063810566fa08a268d8c319a55caf88bab269fc6d78c8bb45b73f4f112e35806247dfdbbf786ffbc1a4066e6b1a9a34ac1afacc6cc9cd230be226a17bc66a93a0d10691fae579bac69a466014024d31e5e60ebdde430f662e7eb87c4df5f8c54a4c927dcd16b65ddcaaf18866511a1e7cade3305093cd82c70f5ad698c8749fe235f97c6c891261debae0a7f0486a1e845cb5db8f84f36b1439195fb1a32679397982af048b03c78c82288c04820710353c1665ab73083f91c0dc81df6ee098ec3f122e49072f077d5da3d0c8ca790d8cd6c32e9b3960f4206041f1b48f7cc5481adde13c8c31f3a33bfbed7bcca2192c321154589aca25be769687bf551c012cdd5a27c5ef6c7b1fcc5487d0a82337cf6c2ee0578c2074691a8e00cc8b99166469edbeb71b0d53328565ad8f106010ea66b69b4e57955c261768bb07735ba491343d569e70022a723a6f8418a71410c5b37a0be013363960143d684a1059c204732f4541c6d1cc846473a060de3002fcac97b350bce25aa4017dcafd64631b9f5bce6fc218a64f48f1e098d33df63626cedb5044493bef12e0ab832a02dd207cd26abf206923026e0667a70e5c2e3792d5b33f393c20dffa1c1fa6bbeab827222c639a1680b2ba159c4e88619aec327f63e472a31a2d44d3e9a69af5d5158fbebbcb7fa43e512c6ce2097f6715c513964bcd6b625398401494297db34fe184e296b7d4f94b71e3e0ed79446ae8013eeef162174f023b76496869e2ee0a91c74ff6357507122bac35659487f77494337533731cf9cdeb03bf677b7e73557c875f8aeaa3d3cb060af82360f8adfae104f807d09530990910b82ed0970bbead909a2931c8712690bc6fe66fdac789ed3929e87fbd0aacea812948cf3d0770695d239896b1c9fca042d78d30a14cf910316c3ce3f86829a47c6b71501b43168fee737ff7e5d6f217ab037cc5c22ccacc09de1c4746cccf60917de3d26f1667e038a8703f3d0a7d02beb17969ab2d8ae12daed94d5975b1c2fe347db644a62a38648aac649aa7eea8f52e0fd08d27f8f3002aac50e1f9a0b1b080b59bf412183fd9e7be8e73b691ca1ed0179c55ffcbad0434cc46d2530977bf912988036d131b54a9d7fbdd82722dbc696b5fec47daf23d3afc663ef605edf4a5591048a3ef6af5d7642ee4a8fef70395a7bb29986f1e367c91198ac8ac7a31e91f91ee5a903f23e391de003ccf32be86d3e4f7fa06c3269d9fd76cfb69e872a3338c6720fcae24c9aacde198699317212fe9a6603a78298bd737204c129f1df94ed5f86802674734825fd40cad96fd985a11ed8b005221765046d283414c5a552abe98e39f73e2e06e94a76704bf871c333b9ee2f544264676ff2a19ed3adf4c7600c77c3fc1a642d3a84de986d16e4e61c3ab0fa40c2d0e44acd964e77c015aeaea518a0c203bd79f8f2a307d17c17fd203adde81233ebe2e98a7e1e52dc684a6eeaa7d229398dd9d306f6b8ec219616e6aa6316dea3f7872909f945d7023e4809ec5c319d66759a7c26976e9b4834c95a13572581531e332b0f048d6d4a9ea41ac5e715f553b17bd50ca5c1471a4a7bfb9955c21b70f2570d62c972ebb474648912d318facca1cd8e57c08c02673125e21097b54403844873428d83b5a8b1e68e0a3a7f5e544a00f34cd93436da493573e43ba63153bc549856ce496ff174934b512727df6cbbddeeb7cafb0a142c9c4daa7d4513a166645197690ef0eb3bd8e9457e33422f65042d9a29dfe30d44619c79d1d7aaf3616b0adbdc4518eb19478ee6bb97bd182d38909b4d18c1067bcd2e99c0ca4303044f52e1c3f5f554ab2e03be2a50edadaa0bcfd8f031bd3f064142cf4566c531d626cac889e0ad77b1e31a8b4251a62673b454475c19abcbc74a4a933a4756d3a696cad536d60d7c3aa35835351428c4c56525c51b7d9dc8d0d6b2b9178fc1827669b4e7dbbe06b0aef3dd9214440e23c59e70f089aaa3c3ae1a099bfca18e932eda632e18fa54785388ec40b8cfda7684562c26483a06848d789fe8cad2c550dd9d6b9b325e43d2f7b89b9724b4dcfe92aea6c31ce89c98ea0b33958cbe8341a74b5f2e07292bdccd44ab223b0b53c67c67cf215cf995aa2472e3c1b15db001c09629c7ce3fe042206163a6f6918ca17f00b6d887ce36fa43113f73213ec15111c5749bef6afde88d4163da98a6008103822b3d82be6f4a4166a603f58eddf3ccce73384cc0564c10ee7fce4c08891148e70e4233c97cde0a7878798b28a272cc34b575cc1a21e8a8ca4eec190329c90c9eefe89f804a2e2b8a93ecf3704ec3b398f4d154737ece445a0bb03cd56237fc836dd5fe82c3534b2c767e1c8159109ee2668a1e0eb6b329a3f7bae2d35ccc96a1e336e73819a06358363f9ebfbe3092f0c72f9afa1645192b29e2820c6b8dd86cb3cde530c2d51f2daca8c395ff519e1901e910ff8844b472bf00beed3a82c4623b65612173defaf3cde6c80200c0b0b69be7dd3cbf1aa0d806ef1958a7188b739742b1ba8c04ce1329c906433da04e11ea04251b1f499a880670080612c0a8128f3bca12c3fd7667c1a725438e418919123606a1ff8e03a9dba54903e86da0864ef56e2a61e1d095f207ce7f5251156d84dc18fcdb8d654ac0ff855fa345f4383f2cd8ebca2be4b3ff90b8363f200ecf4ef0bbe9bf0a05bd3e22f4a5a7655cf6b168dd485a6c849e6198ff463c838ea937056a1ee68fdbf5e8026e334a518c20134364eeed39a8318fdb7fa46ef37f5de27e1a5a32e3c69c55ca1d7680847ea022fdf09d9160bb73615b5df30250bfb1db06e23a81c151c9b94907591744a9428c1465bcd97a79c5437632bd1212d2f6e6486e39f8c5ffcbacf9c61ee6e342db24ae0827497a7cffd063ebc1ead1cf9e6e679caebfc1a86941096b9b913c8ea8bee1ddafb04781481759c3c607a2cd23b16629e9336864c2fc3258fe239e19d3f661b6307c269e563b687871ab2083ee344635c313c2b8ae7491461738791d2336b223aa6e9e060748f0162a01524bcdcb943186498ef6b8e9c864598739f6351c5f28f0f034f5bcec4e855dc8611c0520047d16af1b1b445b03361a5e1a319dd0024e7f5160f3c8553e0c36f461f64d9cc6f4646a206778259af0505985bafc859f96bf998f967c6940e1dab2a0313a2a8a2765e3a1eb216aebfa6c9e1ed629c31390f42e5902bda6299cdb8a30adf242d69ce550b8e971ceb41c33c4a5243c8131cdc227400339bb5eaf7f4cd2d5c32c608eda6c824b12a488948f2813857aaa69699991addee8dfa5e1650a5038f0d3371b4a22e9a0c3f497ed05a647f66a6a328cca31c99b40dbc3732905e339588fa6d94cc0dd8cacc2625baf75c2f457ad72bbb2e55b243ee9f3a46d5f23fb7e3331bc80ce32ae321819124573d62afeaa0e54fa2a3507072186f3212d00a3a37595c2d8336fa04e70e702cfb70299f525b4f4c86f39b8bc05415c94b3609b9cb1776212b696a9b4679333b93757e05af24fcf1b537265a200b57e8a4ae3a81a190b0fa255e4c2a29c165b58e692e557a35797d8945251ca4b91bd6c5911b197ddf603276da1433459236254bd3514f1efac134f85c31b7287ce94fa92f3781f66be7b2e5d469072270cb1a6ab6a5de22f49906b5fea6295ae5634e9629232eb6504b72cfee55991deaa9f1baa8e387814f6d90c940259acb8f0028241d1b6a4056d0ad645d372e2b90c166756a8d22524959824938e96f62e9df5188660e10bc5e2894282d07a7fdc9d1c1439255ae1a5e18ca615d96704c94ce3469b6345460e0b54f769a9a120e6c5cac8f86d52049f7634525773785a76bf45a1a3004bf80091750863bd4a10d22402ec085ef9313065cd0d1c0f94589a323f1bf0e007666f7b0876485d1b8ca37abaf8f1767efa532f51fd0528ec47df6a779c5b1240d6907f8826296432d08d33e1068f8b6b33038e0d9d3f1371be01253212f7b225f62f2fa3637c948f887d1e6922f9e79d15f646395fdd62a27fb737fe192fa2ce988f1414c65fe13b59067363dabc08464b5996511e93337bc414af13cf13c3352f0b10700e12546430db0a4caef9c58272d92f837d0495fc42680a07ce5bb34e6957be78539b1fe175c1b7de25be0c937e84066a57206f25f9ab3aab4ba7419b26d54150c41427d73af07e4a2785f19b4cef2373c8b8c3922c789cac45008064397e716d21db8f54e91fd60229167cc923f7ee9400221daec5e79f9961d7d17c4654074241d2055ed48d41f37d9405365fd2d8abb5a7d8f9efdc96e839a8c2c9cbae8d5e8848c0292192d65a79ca323e2ac6933420772e1c9f837e3eea80d28f63ec5449bfea033b571f3b7e983d44c64ec184bfeba24c0c6b928fbe69ff42fab62aa40b411a2c810028399eec6efebbd445e7ee6eda386958767ac400f352c221955dbc3c00fa692d21f066e0369cffed2ec4dc28ebb39a523b67a74d0220496fb42408789e49753674a1f71a25a8e0942d2a8d40ea3df517aa5242e7d2f216247e693a415ac634346ab79b26d279edbc3607af8f6d2967552ae33a0db9c02e2fa9b61e1fc48ec84407b13b9c6ef51e9563a81d3cc7edbc8f21ba3a76bbf308df20ddf7927227ef07e8d758424f1821bb369df813bacbff566d2a4c044fa371d898e78a4d77e7334e0a7b575e9aa9d99202e9befd7357f710c570a058f3d3185f815b6a39e60dd0f1fe393d7007121d1327717637c6182c224ccc2fd748c16d61df0f8bd64d6c8365c4504bacc4570e6bf744bda4ac3519729a5ba8027012bb2a65a86f7b318828c0d498db681b3420d30873d42135719ede16965212bf31382322243f870842b4ffb72bb1f163a83dad4d88f2392ce7badc3867cad59c21eae8f73309d536ae3c4459c4bb7e5083622c4604a6d0d0825f8284b8e1b9ffd2ac04bce34ed12ef5fc47118bb11a0ba9d7c6d06464751a81a689e8bb55fc05618d138629010126a638be5316e08bfd00c5c06350147fe7fda62c59a3e6bb0bb2d65c9d8ff292079ef52028a4431e27ab077748d84583b8a57f8511b91bf48ba2b19a18b166a79d0b90a665314e8f6693ce76385be97a000c30664754917617c1d7928eb6e005c7fa17e060bc500612d49647e039faa91c648b0390ec3cc90ad300e0eb1e9488abf29cb36f3bc837f0deb6aa93f1e84bae29f2186615398158322eb76e817576e5f26be6df809217836f4fc13d140e3728d3699f995f58743760f5c123d62e8f26e0cfdc4fd080f66ded0b3bb9beadf75289ed50909300948d702e39052a7a565240c29617555093412488adf8d20c243447ebd6e213b0ed92608f8bd3335204bb58e4cc93c126d87d6fdb464f07e35be3095d066a24e91aea4023dc49570ea89e18a25648843e941cf07357d416e1d087e71c35a846ef35373271b8090efc0de6ef3f3e6567e3c672cb4a67008a4ec567c6b9000e04205debe0017f437f4c273f33faaeb703bdd18133aa3936e74a37f832814be0d7ade20a739fb2b35a4888a499a0938ad7ea4178600f93bfc7f4204564c9c250540e85b9a3c2c9929e2bf87f5a93e677afb6545d68fb975c41d5905b50b0c4a9853ecce312fbdb15a5fd2f4ffe05d604e0cdbea25f9ded9324124e4a54e3364b99491aa57084b7e79447819ab8ae2a279f1eaeeb88c84323f63e0d6cb56536f79c15906fd1bab049e7c816e402cfc54ee72ec07fc0e51ac6032bf6d1478a661cfe916e0ce0bccf3701ee088269033749d4185a34cbda25d427451657eb8ef9c50c24c566610445ba7c0c73a76cd621a2ef59e258eef23a350a248b0ce83cc0163a26820d5041f81647bee1ca6bb71152a26246eaeaeab14632eaf6e18fadee1079b5933a23cdcbef368045603f084521e2edf2930f6c1a6e2b3507cc50266706a6314258a21b989110e34c541613453ca8cbe700dff6f13f4a1ebc47b3143bdc0b0fc7c872aea1f28e799ab58f8885ee1accda08002eee671fa174d7c4977d5272c7d115733bc4883b0b1161fff9fa1712aef03c5b2b0cec13cd85b45817fcf9ffe47db4e0ad7e502426bacd039bcdae8395b2288c53aa9b617787088038466407f6a8eeb018e9b5609e1387d5b842b80a98e3e36a4fcad3f610484391e8573084dfab2592ecb9fe441591179b276a6b1ec97cdb7de99acc865ffe3c1f93dc285eebde471005b64fd7686721db6b5bf36651c3a6c84160ce14204b77857c397c2878ed9051a7cdba68578c2737505ba85d6305b1cd80faf6e94ba75368ec44ada7114ffb30c3c78eea5f2896460a7ed9a096bc5c60ed8ff88d3a8562db0fb924c5337565b02df2813db922f97dfe5fa4196f62bedb13572a5027ce48475230a3846e7966f2309def3d8ad6c8f1030964653c6fc84ecef8d8e397befa635755c9e6975975b05fdef9c63c7c52add64c1ebf1c5700874e622cbc2c9fc7efeb6e3850d4b90ed0b533aa4a7501bb9394bd3701063698b87e6f3dbf08ccdf333287dfeec5e74890f0bcf800cbc7a25a611d8db7f89aae569dcb72be999b63ed44624c13fe63c96a797f4c66220d0f3a95e36005db7bd08c5af8b78742c8bd00fdfe937ae56b4f821f68d0a3a819ad9ac4352a5880ccfa76f0f0ab4115767e18e26ce106e012ca71637e6e175c24afc7158a18c38af446c992f7af34f5d8bb2ed748818bb6a9733001b567272a874d059a516c4a08844ef7426a620870450f3cc1b1028d72d984e24f25fa423c8ed3b5a7d0b51388ab408b0039641f85b076326c97fde742b0aa2008a63f9341d0233b5049972ee463ba69ca2d3f352b35620d4c7786e2139c5fe2ef0488855e62a258ceca5c7cf0b10daeef04fa8dd94206998bb51d0b88d22601a81ee8c317e96bbff11bbfcb31eb96816ea251d187522f0d5c73cca584da617b7e1ef6eba086f75ad8aae79251e3b8115cdbb8d5a800886da2960c2dfc7b1603a39694f5050225c1a78ded7bc11a1f3923a8615d14e2b62e29a04a9bb7b8021959c626fd6be3973eb3c302209e2ab14e152bb2c56bab63e7e4b0a881c09045414efac609349b744837dc3a17701e4307bb5ef6f7f35e613d8ba047b7bdfe94b348238f18da0dd213cbabeb6da0509c79f359a7b03d837d2b259a81b822bb0bf3fcba9a931fffac2d1f5f8227724daacdf93730549ad515c3a24759f492e8c9caaec7b9d68a453f4c4c0ea8eb357ce4609bc8260e37774f592fe21f50462d1520a7cf37bb494a8bb58fc63720e2b55d9cf4eae8001638f55d6a1e20f20ff638e9f49435ef0b0bf720730d222a03232b8cc7c29b4843803aa809933d1533580d321d955e075c8b8b1aa035ecbefa20d0ae42ae269c41cbed4232068bff806509812ea57acfc4895cedbc32d47c290a0901dc365d1d5fa5f9b20c55e7af793e2d22a2ef2c8cff9202592d6ca0a254110fdd2a34bb3bf78adac99d0ce1fdd6b21b83a8e1072642430840f82dd3ec1cd24fa1109c7f81a53453a604b282899bd4910300ee28f19547466caa742e5df0fd70d149e1c7a8e9c056e08649afddb1ebaeea3112733d68a1f0020a6b0f607eb1a7814b89148a35b0d6c88a655132fb8213ea7f9c1701475e15033305de59709452d1d3abae815f8e52f7a175d27ee4d24130756a6c3b30b3b77a47320ad00e54442408920474fa7a78f29e6830caba0e50e0a8e1fcb2e5413d687d6570014eaf0a3b2f620b80dcf5f3ce977e9a414a5dde206335e28fcf5230c749501edd77a1c0ffb966a8d77886db859adfee8355c36ab0e8ec2c868aace30a511255fab236a5ac8b7116e0daaa64c66eceb961774cf7722d26b8f262e83bd1d36383430d12ec8db00ba416b8c4cd6f72570b746c678c10400ddee09b452725187687fc783c09554c82a2ce4557741edc8ab894f05e5051ae4360705ff0d54c9434fc5685627e5702559fcdbf5953285cec72810b7c90f2f56a0d472014ba85a1280a2ae558b2b1ab0fd72b7f941bcbe129d2871490a3514d88277df7efb99a1f45a2027c58c7d7199f1022a3cb96d6d710c6176c29779135877033243a148dee5e8706757a06a4962833ac65490e785b14345720a8fab2f10f461ec1bfe738557065eab277e0a76f632fa9055898bddea2f56ea09f002aa526cd7f0eda4b18bd920f84531164e995c23a1845fb14d1d390969bd9ad6f801 diff --git a/zebra-test/src/vectors/block.rs b/zebra-test/src/vectors/block.rs index d25eb5d7c29..04d43d506e1 100644 --- a/zebra-test/src/vectors/block.rs +++ b/zebra-test/src/vectors/block.rs @@ -113,6 +113,26 @@ lazy_static! { (1_046_400, BLOCK_MAINNET_1046400_BYTES.as_ref()), (1_046_401, BLOCK_MAINNET_1046401_BYTES.as_ref()), (1_180_900, BLOCK_MAINNET_1180900_BYTES.as_ref()), + + // NU5 + // + // Contains: + // + // - First Sapling to Sapling V5 txs. + // - First Sapling to Sapling V4 tx after NU5. + (1_687_106, BLOCK_MAINNET_1687106_BYTES.as_ref()), + // - First transparent to Sapling V5 tx. + // - First Sapling to Orchard tx. + (1_687_107, BLOCK_MAINNET_1687107_BYTES.as_ref()), + // - First transparent V5 txs. + // - First Sapling to transparent V5 txs. + (1_687_108, BLOCK_MAINNET_1687108_BYTES.as_ref()), + // - First transparent to (transparent + Sapling) V5 tx. + (1_687_113, BLOCK_MAINNET_1687113_BYTES.as_ref()), + // - First Sapling to (Sapling + Orchard) tx. + (1_687_118, BLOCK_MAINNET_1687118_BYTES.as_ref()), + // - First Orchard to Orchard tx. + (1_687_121, BLOCK_MAINNET_1687121_BYTES.as_ref()), ].iter().cloned().collect(); /// Mainnet final Sprout roots, indexed by height. @@ -160,6 +180,27 @@ lazy_static! { (1_046_400, SAPLING_FINAL_ROOT_MAINNET_1046400_BYTES.as_ref().try_into().unwrap()), (1_046_401, SAPLING_FINAL_ROOT_MAINNET_1046401_BYTES.as_ref().try_into().unwrap()), (1_180_900, SAPLING_FINAL_ROOT_MAINNET_1180900_BYTES.as_ref().try_into().unwrap()), + // NU5 + (1_687_106, SAPLING_FINAL_ROOT_MAINNET_1687106_BYTES.as_ref().try_into().unwrap()), + (1_687_107, SAPLING_FINAL_ROOT_MAINNET_1687107_BYTES.as_ref().try_into().unwrap()), + (1_687_108, SAPLING_FINAL_ROOT_MAINNET_1687108_BYTES.as_ref().try_into().unwrap()), + (1_687_113, SAPLING_FINAL_ROOT_MAINNET_1687113_BYTES.as_ref().try_into().unwrap()), + (1_687_118, SAPLING_FINAL_ROOT_MAINNET_1687118_BYTES.as_ref().try_into().unwrap()), + (1_687_121, SAPLING_FINAL_ROOT_MAINNET_1687121_BYTES.as_ref().try_into().unwrap()), + ].iter().cloned().collect(); + + /// Mainnet final Orchard roots (anchors), indexed by height. + /// + /// Pre-Orchard anchors are all-zeroes. If there are no Orchard actions in a block, the anchor + /// is the same as the one for the previous block. + pub static ref MAINNET_FINAL_ORCHARD_ROOTS: BTreeMap = [ + // NU5 + (1_687_106, ORCHARD_FINAL_ROOT_MAINNET_1687106_BYTES.as_ref().try_into().unwrap()), + (1_687_107, ORCHARD_FINAL_ROOT_MAINNET_1687107_BYTES.as_ref().try_into().unwrap()), + (1_687_108, ORCHARD_FINAL_ROOT_MAINNET_1687108_BYTES.as_ref().try_into().unwrap()), + (1_687_113, ORCHARD_FINAL_ROOT_MAINNET_1687113_BYTES.as_ref().try_into().unwrap()), + (1_687_118, ORCHARD_FINAL_ROOT_MAINNET_1687118_BYTES.as_ref().try_into().unwrap()), + (1_687_121, ORCHARD_FINAL_ROOT_MAINNET_1687121_BYTES.as_ref().try_into().unwrap()), ].iter().cloned().collect(); /// Testnet blocks, indexed by height @@ -223,7 +264,34 @@ lazy_static! { (1_116_000, BLOCK_TESTNET_1116000_BYTES.as_ref()), (1_116_001, BLOCK_TESTNET_1116001_BYTES.as_ref()), (1_326_100, BLOCK_TESTNET_1326100_BYTES.as_ref()), - (1_599_199, BLOCK_TESTNET_1599199_BYTES.as_ref()), + + // NU5 + // + // Contains: + + // First V5 tx with: + // + // - 4 Sapling spends, and + // - 2 Orchard actions. + (1_842_421, BLOCK_TESTNET_1842421_BYTES.as_ref()), + // First V5 tx with: + // + // - 50 transparent inputs, and + // - 1 Sapling output. + (1_842_432, BLOCK_TESTNET_1842432_BYTES.as_ref()), + // First V5 tx with: + // + // - 2 transparent inputs, and + // - 2 Orchard actions. + (1_842_462, BLOCK_TESTNET_1842462_BYTES.as_ref()), + // First V5 tx with two Orchard actions and no other transfers. + (1_842_467, BLOCK_TESTNET_1842467_BYTES.as_ref()), + // First V5 tx with: + // + // - 1 transparent input, + // - 1 Sapling output, and + // - 2 Orchard actions. + (1_842_468, BLOCK_TESTNET_1842468_BYTES.as_ref()), ].iter().cloned().collect(); /// Testnet final Sprout roots, indexed by height. @@ -277,7 +345,25 @@ lazy_static! { (1_116_000, SAPLING_FINAL_ROOT_TESTNET_1116000_BYTES.as_ref().try_into().unwrap()), (1_116_001, SAPLING_FINAL_ROOT_TESTNET_1116001_BYTES.as_ref().try_into().unwrap()), (1_326_100, SAPLING_FINAL_ROOT_TESTNET_1326100_BYTES.as_ref().try_into().unwrap()), - (1_599_199, SAPLING_FINAL_ROOT_TESTNET_1599199_BYTES.as_ref().try_into().unwrap()), + // NU5 + (1_842_421, SAPLING_FINAL_ROOT_TESTNET_1842421_BYTES.as_ref().try_into().unwrap()), + (1_842_432, SAPLING_FINAL_ROOT_TESTNET_1842432_BYTES.as_ref().try_into().unwrap()), + (1_842_462, SAPLING_FINAL_ROOT_TESTNET_1842462_BYTES.as_ref().try_into().unwrap()), + (1_842_467, SAPLING_FINAL_ROOT_TESTNET_1842467_BYTES.as_ref().try_into().unwrap()), + (1_842_468, SAPLING_FINAL_ROOT_TESTNET_1842468_BYTES.as_ref().try_into().unwrap()), + ].iter().cloned().collect(); + + /// Testnet final Orchard roots (anchors), indexed by height. + /// + /// Pre-Orchard anchors are all-zeroes. If there are no Orchard actions in a block, the anchor + /// is the same as the one for the previous block. + pub static ref TESTNET_FINAL_ORCHARD_ROOTS: BTreeMap = [ + // NU5 + (1_842_421, ORCHARD_FINAL_ROOT_TESTNET_1842421_BYTES.as_ref().try_into().unwrap()), + (1_842_432, ORCHARD_FINAL_ROOT_TESTNET_1842432_BYTES.as_ref().try_into().unwrap()), + (1_842_462, ORCHARD_FINAL_ROOT_TESTNET_1842462_BYTES.as_ref().try_into().unwrap()), + (1_842_467, ORCHARD_FINAL_ROOT_TESTNET_1842467_BYTES.as_ref().try_into().unwrap()), + (1_842_468, ORCHARD_FINAL_ROOT_TESTNET_1842468_BYTES.as_ref().try_into().unwrap()), ].iter().cloned().collect(); // Mainnet @@ -550,6 +636,66 @@ lazy_static! { <[u8; 32]>::from_hex("4a51c1b879f49637873ac4b261e9c625e16d9400b22d8aa4f27cd6fd1138ddda") .expect("final root bytes are in valid hex representation").rev(); + // NU5 + pub static ref BLOCK_MAINNET_1687106_BYTES: Vec = + >::from_hex(include_str!("block-main-1-687-106.txt").trim()) + .expect("Block bytes are in valid hex representation"); + pub static ref SAPLING_FINAL_ROOT_MAINNET_1687106_BYTES: [u8; 32] = + <[u8; 32]>::from_hex("41f3adfe94f336b6581923c9d20e07bccab0c47cd57ecb66cb9f35bb3e62066f") + .expect("final root bytes are in valid hex representation").rev(); + pub static ref ORCHARD_FINAL_ROOT_MAINNET_1687106_BYTES: [u8; 32] = + <[u8; 32]>::from_hex("ae2935f1dfd8a24aed7c70df7de3a668eb7a49b1319880dde2bbd9031ae5d82f") + .expect("final root bytes are in valid hex representation").rev(); + pub static ref BLOCK_MAINNET_1687107_BYTES: Vec = + >::from_hex(include_str!("block-main-1-687-107.txt").trim()) + .expect("Block bytes are in valid hex representation"); + pub static ref SAPLING_FINAL_ROOT_MAINNET_1687107_BYTES: [u8; 32] = + <[u8; 32]>::from_hex("4b013ee86a4a7b19871aa9b7a1dff0b29e0a737812c8970356c18340752957c7") + .expect("final root bytes are in valid hex representation").rev(); + pub static ref ORCHARD_FINAL_ROOT_MAINNET_1687107_BYTES: [u8; 32] = + <[u8; 32]>::from_hex("7b61fc613cea5c2c84c5e2c64d4fd4afb8c8c9d10dce9bcad49431c9cf32f131") + .expect("final root bytes are in valid hex representation").rev(); + pub static ref BLOCK_MAINNET_1687108_BYTES: Vec = + >::from_hex(include_str!("block-main-1-687-108.txt").trim()) + .expect("Block bytes are in valid hex representation"); + pub static ref SAPLING_FINAL_ROOT_MAINNET_1687108_BYTES: [u8; 32] = + <[u8; 32]>::from_hex("174d81c4d858ab7932c424ee44f5e47ceafc50fcc44fb39bfaf74258570eb9b2") + .expect("final root bytes are in valid hex representation").rev(); + pub static ref ORCHARD_FINAL_ROOT_MAINNET_1687108_BYTES: [u8; 32] = + <[u8; 32]>::from_hex("7b61fc613cea5c2c84c5e2c64d4fd4afb8c8c9d10dce9bcad49431c9cf32f131") + .expect("final root bytes are in valid hex representation").rev(); + pub static ref BLOCK_MAINNET_1687113_BYTES: Vec = + >::from_hex(include_str!("block-main-1-687-113.txt").trim()) + .expect("Block bytes are in valid hex representation"); + pub static ref SAPLING_FINAL_ROOT_MAINNET_1687113_BYTES: [u8; 32] = + <[u8; 32]>::from_hex("53189fd8855fb8d8f49a4cf505669ce6fd95e28abfe8f3def7c2493b1ae4fc1f") + .expect("final root bytes are in valid hex representation").rev(); + pub static ref ORCHARD_FINAL_ROOT_MAINNET_1687113_BYTES: [u8; 32] = + <[u8; 32]>::from_hex("ed17182c783c649f53c0ecfe900a58cd818e89d2784f750df6c906999337dc10") + .expect("final root bytes are in valid hex representation").rev(); + pub static ref BLOCK_MAINNET_1687118_BYTES: Vec = + >::from_hex(include_str!("block-main-1-687-118.txt").trim()) + .expect("Block bytes are in valid hex representation"); + pub static ref SAPLING_FINAL_ROOT_MAINNET_1687118_BYTES: [u8; 32] = + <[u8; 32]>::from_hex("50f2481034cb80ec7e3e56177981ab47739e5a0c650638b2ac29909468c5f225") + .expect("final root bytes are in valid hex representation").rev(); + pub static ref ORCHARD_FINAL_ROOT_MAINNET_1687118_BYTES: [u8; 32] = + <[u8; 32]>::from_hex("d5226e91ca7f9275d7f62711fa52875cdbae6cfc689815c9872aebfe64b60f34") + .expect("final root bytes are in valid hex representation").rev(); + pub static ref BLOCK_MAINNET_1687121_BYTES: Vec = + >::from_hex(include_str!("block-main-1-687-121.txt").trim()) + .expect("Block bytes are in valid hex representation"); + pub static ref SAPLING_FINAL_ROOT_MAINNET_1687121_BYTES: [u8; 32] = + <[u8; 32]>::from_hex("39e29473df7f0692ab6072d65389f6626611fea9f00aea14c0d80add9e9ef6e5") + .expect("final root bytes are in valid hex representation").rev(); + pub static ref ORCHARD_FINAL_ROOT_MAINNET_1687121_BYTES: [u8; 32] = + <[u8; 32]>::from_hex("09b17d8907236adea12b83ed69054f4996686d7c4ca76db25c4c48b90e272b0f") + .expect("final root bytes are in valid hex representation").rev(); + + // Sapling treestate. + pub static ref SAPLING_TREESTATE_MAINNET_419201_STRING: String = + String::from(include_str!("sapling-treestate-main-0-419-201.txt")); + // Testnet // Genesis/BeforeOverwinter @@ -852,20 +998,52 @@ lazy_static! { <[u8; 32]>::from_hex("2b30b19f4254709fe365bd0b381b2e3d9d0c933eb4dba4dd1d07f0f6e196a183") .expect("final root bytes are in valid hex representation").rev(); - // Nu5 transition - // for i in 1599199 1599200 1599201; do - // zcash-cli -testnet getblock $i 0 > block-test-$[i/1000000]-$[i/1000%1000]-$[i%1000].txt - // done - pub static ref BLOCK_TESTNET_1599199_BYTES: Vec = - >::from_hex(include_str!("block-test-1-599-199.txt").trim()) + // NU5 + pub static ref BLOCK_TESTNET_1842421_BYTES: Vec = + >::from_hex(include_str!("block-test-1-842-421.txt").trim()) .expect("Block bytes are in valid hex representation"); - pub static ref SAPLING_FINAL_ROOT_TESTNET_1599199_BYTES: [u8; 32] = - <[u8; 32]>::from_hex("4de75d10def701ad22ecc17517a3adc8789ea8c214ac5bfc917b8924377e6c89") + pub static ref SAPLING_FINAL_ROOT_TESTNET_1842421_BYTES: [u8; 32] = + <[u8; 32]>::from_hex("5cad695f17ae06cc165e01938fe95cac3ea0fbd236dc9c806f3411e0929309a6") + .expect("final root bytes are in valid hex representation").rev(); + pub static ref ORCHARD_FINAL_ROOT_TESTNET_1842421_BYTES: [u8; 32] = + <[u8; 32]>::from_hex("28dfaa94b74670863beb1088ee3d97b38960c6c297c9dcf3d57d5a9259616523") + .expect("final root bytes are in valid hex representation").rev(); + pub static ref BLOCK_TESTNET_1842432_BYTES: Vec = + >::from_hex(include_str!("block-test-1-842-432.txt").trim()) + .expect("Block bytes are in valid hex representation"); + pub static ref SAPLING_FINAL_ROOT_TESTNET_1842432_BYTES: [u8; 32] = + <[u8; 32]>::from_hex("68626c76ad774e3982450c20900415fd85b33d820627565d588c0c22437d8c62") + .expect("final root bytes are in valid hex representation").rev(); + pub static ref ORCHARD_FINAL_ROOT_TESTNET_1842432_BYTES: [u8; 32] = + <[u8; 32]>::from_hex("28dfaa94b74670863beb1088ee3d97b38960c6c297c9dcf3d57d5a9259616523") + .expect("final root bytes are in valid hex representation").rev(); + pub static ref BLOCK_TESTNET_1842462_BYTES: Vec = + >::from_hex(include_str!("block-test-1-842-462.txt").trim()) + .expect("Block bytes are in valid hex representation"); + pub static ref SAPLING_FINAL_ROOT_TESTNET_1842462_BYTES: [u8; 32] = + <[u8; 32]>::from_hex("4c06beb18bb0cb22879f04c2c80aa33450d8e02ddd3d2cbc441f40f8cd8ea0a8") + .expect("final root bytes are in valid hex representation").rev(); + pub static ref ORCHARD_FINAL_ROOT_TESTNET_1842462_BYTES: [u8; 32] = + <[u8; 32]>::from_hex("7750114ca6b95e44197e30ec98cadfb0dec1f1fb1a416eb4ef87f1dffb0f5937") + .expect("final root bytes are in valid hex representation").rev(); + pub static ref BLOCK_TESTNET_1842467_BYTES: Vec = + >::from_hex(include_str!("block-test-1-842-467.txt").trim()) + .expect("Block bytes are in valid hex representation"); + pub static ref SAPLING_FINAL_ROOT_TESTNET_1842467_BYTES: [u8; 32] = + <[u8; 32]>::from_hex("13a33099eb9b8dafc031271938f35b627eb0811f124847abbfb43b587c6e11ae") + .expect("final root bytes are in valid hex representation").rev(); + pub static ref ORCHARD_FINAL_ROOT_TESTNET_1842467_BYTES: [u8; 32] = + <[u8; 32]>::from_hex("580aceb586f30a5801a23414464aa8482add97b6d55c06483b4ffb725e0e793b") + .expect("final root bytes are in valid hex representation").rev(); + pub static ref BLOCK_TESTNET_1842468_BYTES: Vec = + >::from_hex(include_str!("block-test-1-842-468.txt").trim()) + .expect("Block bytes are in valid hex representation"); + pub static ref SAPLING_FINAL_ROOT_TESTNET_1842468_BYTES: [u8; 32] = + <[u8; 32]>::from_hex("555af4b0b2fa18162d6280c942fae6cdc846b9c4a3126df682821db250dc2bb3") + .expect("final root bytes are in valid hex representation").rev(); + pub static ref ORCHARD_FINAL_ROOT_TESTNET_1842468_BYTES: [u8; 32] = + <[u8; 32]>::from_hex("66c47f2160474363948150cbb5d53f3c17efa7456bd843dd9b851ddbcb6fb002") .expect("final root bytes are in valid hex representation").rev(); - - // Sapling note commitment tree. - pub static ref SAPLING_TREESTATE_MAINNET_419201_STRING: String = - String::from(include_str!("sapling-treestate-main-0-419-201.txt")); } #[cfg(test)]