From 1437c8e2243e6cfd7c4ae164893f907ad80bb650 Mon Sep 17 00:00:00 2001 From: Robert Habermeier Date: Wed, 24 Apr 2019 13:24:03 +0200 Subject: [PATCH] Introduce a Proof-of-Validation block type and use that in place of BlockData (#227) * validators expect collators to give them parachain messages * mostly port network to use pov_block * network tests pass * verify ingress when fetching pov block * fix runtime compilation * all tests build * fix some grumbles * Update validation/src/collation.rs Co-Authored-By: rphmeier * Update primitives/src/parachain.rs Co-Authored-By: rphmeier * Update network/src/lib.rs Co-Authored-By: rphmeier --- polkadot/collator/src/lib.rs | 15 ++- polkadot/network/src/collator_pool.rs | 15 ++- polkadot/network/src/lib.rs | 98 +++++++++++--- polkadot/network/src/router.rs | 34 ++--- polkadot/network/src/tests/mod.rs | 32 ++++- polkadot/network/src/tests/validation.rs | 22 ++-- polkadot/network/src/validation.rs | 69 ++++++---- polkadot/parachain/src/lib.rs | 1 - polkadot/primitives/src/lib.rs | 1 - polkadot/primitives/src/parachain.rs | 46 +++++-- polkadot/runtime/src/lib.rs | 4 +- .../release/polkadot_runtime.compact.wasm | Bin 606950 -> 606558 bytes .../release/polkadot_runtime.wasm | Bin 780896 -> 780190 bytes .../validation/src/attestation_service.rs | 3 +- polkadot/validation/src/collation.rs | 87 ++++++++++--- polkadot/validation/src/lib.rs | 64 +++------ polkadot/validation/src/shared_table/mod.rs | 123 +++++++++--------- 17 files changed, 380 insertions(+), 234 deletions(-) diff --git a/polkadot/collator/src/lib.rs b/polkadot/collator/src/lib.rs index 6bfa95511a..bd858a3586 100644 --- a/polkadot/collator/src/lib.rs +++ b/polkadot/collator/src/lib.rs @@ -71,7 +71,10 @@ use futures::{future, Stream, Future, IntoFuture}; use client::BlockchainEvents; use primitives::{ed25519, Pair}; use polkadot_primitives::{BlockId, SessionKey, Hash, Block}; -use polkadot_primitives::parachain::{self, BlockData, DutyRoster, HeadData, ConsolidatedIngress, Message, Id as ParaId, Extrinsic}; +use polkadot_primitives::parachain::{ + self, BlockData, DutyRoster, HeadData, ConsolidatedIngress, Message, Id as ParaId, Extrinsic, + PoVBlock, +}; use polkadot_cli::{PolkadotService, CustomConfiguration, CoreApi, ParachainHost}; use polkadot_cli::{Worker, IntoExit, ProvideRuntimeApi, TaskExecutor}; use polkadot_network::validation::{ValidationNetwork, SessionParams}; @@ -148,10 +151,10 @@ pub fn collate<'a, R, P>( P: ParachainContext + 'a, { let ingress = relay_context.unrouted_egress(local_id).into_future().map_err(Error::Polkadot); - ingress.and_then(move |ConsolidatedIngress(ingress)| { + ingress.and_then(move |ingress| { let (block_data, head_data, mut extrinsic) = para_context.produce_candidate( last_head, - ingress.iter().flat_map(|&(id, ref msgs)| msgs.iter().cloned().map(move |msg| (id, msg))) + ingress.0.iter().flat_map(|&(id, ref msgs)| msgs.iter().cloned().map(move |msg| (id, msg))) ).map_err(Error::Collator)?; let block_data_hash = block_data.hash(); @@ -170,10 +173,12 @@ pub fn collate<'a, R, P>( block_data_hash, }; - // not necessary to send extrinsic because it is recomputed from execution. Ok(parachain::Collation { receipt, - block_data, + pov: PoVBlock { + block_data, + ingress, + }, }) }) } diff --git a/polkadot/network/src/collator_pool.rs b/polkadot/network/src/collator_pool.rs index bfec39736f..511f4ee51e 100644 --- a/polkadot/network/src/collator_pool.rs +++ b/polkadot/network/src/collator_pool.rs @@ -220,9 +220,18 @@ impl CollatorPool { mod tests { use super::*; use substrate_primitives::crypto::UncheckedInto; - use polkadot_primitives::parachain::{CandidateReceipt, BlockData, HeadData}; + use polkadot_primitives::parachain::{ + CandidateReceipt, BlockData, PoVBlock, HeadData, ConsolidatedIngress, + }; use futures::Future; + fn make_pov(block_data: Vec) -> PoVBlock { + PoVBlock { + block_data: BlockData(block_data), + ingress: ConsolidatedIngress(Vec::new()), + } + } + #[test] fn disconnect_primary_gives_new_primary() { let mut pool = CollatorPool::new(); @@ -272,7 +281,7 @@ mod tests { fees: 0, block_data_hash: [3; 32].into(), }, - block_data: BlockData(vec![4, 5, 6]), + pov: make_pov(vec![4, 5, 6]), }); rx1.wait().unwrap(); @@ -299,7 +308,7 @@ mod tests { fees: 0, block_data_hash: [3; 32].into(), }, - block_data: BlockData(vec![4, 5, 6]), + pov: make_pov(vec![4, 5, 6]), }); let (tx, rx) = oneshot::channel(); diff --git a/polkadot/network/src/lib.rs b/polkadot/network/src/lib.rs index b979481dc8..dd96652374 100644 --- a/polkadot/network/src/lib.rs +++ b/polkadot/network/src/lib.rs @@ -56,7 +56,10 @@ pub mod gossip; use codec::{Decode, Encode}; use futures::sync::oneshot; use polkadot_primitives::{Block, SessionKey, Hash, Header}; -use polkadot_primitives::parachain::{Id as ParaId, CollatorId, BlockData, CandidateReceipt, Collation}; +use polkadot_primitives::parachain::{ + Id as ParaId, BlockData, CollatorId, CandidateReceipt, Collation, PoVBlock, + ConsolidatedIngressRoots, +}; use substrate_network::{PeerId, RequestId, Context, Severity}; use substrate_network::{message, generic_message}; use substrate_network::specialization::NetworkSpecialization as Specialization; @@ -84,12 +87,33 @@ pub struct Status { collating_for: Option<(CollatorId, ParaId)>, } -struct BlockDataRequest { +struct PoVBlockRequest { attempted_peers: HashSet, validation_session_parent: Hash, candidate_hash: Hash, block_data_hash: Hash, - sender: oneshot::Sender, + sender: oneshot::Sender, + canon_roots: ConsolidatedIngressRoots, +} + +impl PoVBlockRequest { + // Attempt to process a response. If the provided block is invalid, + // this returns an error result containing the unmodified request. + // + // If `Ok(())` is returned, that indicates that the request has been processed. + fn process_response(self, pov_block: PoVBlock) -> Result<(), Self> { + if pov_block.block_data.hash() != self.block_data_hash { + return Err(self); + } + + match polkadot_validation::validate_incoming(&self.canon_roots, &pov_block.ingress) { + Ok(()) => { + let _ = self.sender.send(pov_block); + Ok(()) + } + Err(_) => Err(self) + } + } } // ensures collator-protocol messages are sent in correct order. @@ -147,9 +171,13 @@ pub enum Message { // TODO: do this with a cryptographic proof of some kind // https://github.com/paritytech/polkadot/issues/47 SessionKey(SessionKey), - /// Requesting parachain block data by (relay_parent, candidate_hash). + /// Requesting parachain proof-of-validation block (relay_parent, candidate_hash). + RequestPovBlock(RequestId, Hash, Hash), + /// Provide requested proof-of-validation block data by candidate hash or nothing if unknown. + PovBlock(RequestId, Option), + /// Request block data (relay_parent, candidate_hash) RequestBlockData(RequestId, Hash, Hash), - /// Provide block data by candidate hash or nothing if unknown. + /// Provide requested block data by candidate hash or nothing. BlockData(RequestId, Option), /// Tell a collator their role. CollatorRole(Role), @@ -171,8 +199,8 @@ pub struct PolkadotProtocol { validators: HashMap, local_collations: LocalCollations, live_validation_sessions: LiveValidationSessions, - in_flight: HashMap<(RequestId, PeerId), BlockDataRequest>, - pending: Vec, + in_flight: HashMap<(RequestId, PeerId), PoVBlockRequest>, + pending: Vec, extrinsic_store: Option<::av_store::Store>, next_req_id: u64, } @@ -195,15 +223,22 @@ impl PolkadotProtocol { } /// Fetch block data by candidate receipt. - fn fetch_block_data(&mut self, ctx: &mut Context, candidate: &CandidateReceipt, relay_parent: Hash) -> oneshot::Receiver { + fn fetch_pov_block( + &mut self, + ctx: &mut Context, + candidate: &CandidateReceipt, + relay_parent: Hash, + canon_roots: ConsolidatedIngressRoots, + ) -> oneshot::Receiver { let (tx, rx) = oneshot::channel(); - self.pending.push(BlockDataRequest { + self.pending.push(PoVBlockRequest { attempted_peers: Default::default(), validation_session_parent: relay_parent, candidate_hash: candidate.hash(), block_data_hash: candidate.block_data_hash, sender: tx, + canon_roots, }); self.dispatch_pending_requests(ctx); @@ -250,7 +285,7 @@ impl PolkadotProtocol { let parent = pending.validation_session_parent; let c_hash = pending.candidate_hash; - let still_pending = self.live_validation_sessions.with_block_data(&parent, &c_hash, |x| match x { + let still_pending = self.live_validation_sessions.with_pov_block(&parent, &c_hash, |x| match x { Ok(data @ &_) => { // answer locally. let _ = pending.sender.send(data.clone()); @@ -270,7 +305,7 @@ impl PolkadotProtocol { send_polkadot_message( ctx, who.clone(), - Message::RequestBlockData(req_id, parent, c_hash), + Message::RequestPovBlock(req_id, parent, c_hash), ); in_flight.insert((req_id, who), pending); @@ -295,12 +330,21 @@ impl PolkadotProtocol { trace!(target: "p_net", "Polkadot message from {}: {:?}", who, msg); match msg { Message::SessionKey(key) => self.on_session_key(ctx, who, key), + Message::RequestPovBlock(req_id, relay_parent, candidate_hash) => { + let pov_block = self.live_validation_sessions.with_pov_block( + &relay_parent, + &candidate_hash, + |res| res.ok().map(|b| b.clone()), + ); + + send_polkadot_message(ctx, who, Message::PovBlock(req_id, pov_block)); + } Message::RequestBlockData(req_id, relay_parent, candidate_hash) => { let block_data = self.live_validation_sessions - .with_block_data( + .with_pov_block( &relay_parent, &candidate_hash, - |res| res.ok().map(|b| b.clone()), + |res| res.ok().map(|b| b.block_data.clone()), ) .or_else(|| self.extrinsic_store.as_ref() .and_then(|s| s.block_data(relay_parent, candidate_hash)) @@ -308,7 +352,11 @@ impl PolkadotProtocol { send_polkadot_message(ctx, who, Message::BlockData(req_id, block_data)); } - Message::BlockData(req_id, data) => self.on_block_data(ctx, who, req_id, data), + Message::PovBlock(req_id, data) => self.on_pov_block(ctx, who, req_id, data), + Message::BlockData(_req_id, _data) => { + // current block data is never requested bare by the node. + ctx.report_peer(who, Severity::Bad("Peer sent un-requested block data".to_string())); + } Message::Collation(relay_parent, collation) => self.on_collation(ctx, who, relay_parent, collation), Message::CollatorRole(role) => self.on_new_role(ctx, who, role), } @@ -355,13 +403,19 @@ impl PolkadotProtocol { self.dispatch_pending_requests(ctx); } - fn on_block_data(&mut self, ctx: &mut Context, who: PeerId, req_id: RequestId, data: Option) { + fn on_pov_block( + &mut self, + ctx: &mut Context, + who: PeerId, + req_id: RequestId, + pov_block: Option, + ) { match self.in_flight.remove(&(req_id, who.clone())) { - Some(req) => { - if let Some(data) = data { - if data.hash() == req.block_data_hash { - let _ = req.sender.send(data); - return + Some(mut req) => { + if let Some(pov_block) = pov_block { + match req.process_response(pov_block) { + Ok(()) => return, + Err(r) => { req = r; } } } @@ -486,12 +540,14 @@ impl Specialization for PolkadotProtocol { self.in_flight.retain(|&(_, ref peer), val| { let retain = peer != &who; if !retain { + // swap with a dummy value which will be dropped immediately. let (sender, _) = oneshot::channel(); - pending.push(::std::mem::replace(val, BlockDataRequest { + pending.push(::std::mem::replace(val, PoVBlockRequest { attempted_peers: Default::default(), validation_session_parent: Default::default(), candidate_hash: Default::default(), block_data_hash: Default::default(), + canon_roots: ConsolidatedIngressRoots(Vec::new()), sender, })); } diff --git a/polkadot/network/src/router.rs b/polkadot/network/src/router.rs index 53b35c003a..9adbb3b644 100644 --- a/polkadot/network/src/router.rs +++ b/polkadot/network/src/router.rs @@ -29,7 +29,8 @@ use polkadot_validation::{ }; use polkadot_primitives::{Block, Hash, SessionKey}; use polkadot_primitives::parachain::{ - BlockData, Extrinsic, CandidateReceipt, ParachainHost, Id as ParaId, Message + Extrinsic, CandidateReceipt, ParachainHost, Id as ParaId, Message, + Collation, PoVBlock, }; use gossip::RegisteredMessageValidator; @@ -41,7 +42,7 @@ use std::collections::{HashMap, HashSet}; use std::io; use std::sync::Arc; -use validation::{self, SessionDataFetcher, NetworkService, Executor, Incoming}; +use validation::{self, SessionDataFetcher, NetworkService, Executor}; type IngressPairRef<'a> = (ParaId, &'a [Message]); @@ -92,6 +93,12 @@ impl Router { .map(|msg| msg.statement) } + /// Get access to the session data fetcher. + #[cfg(test)] + pub(crate) fn fetcher(&self) -> &SessionDataFetcher { + &self.fetcher + } + fn parent_hash(&self) -> Hash { self.fetcher.parent_hash() } @@ -201,7 +208,7 @@ impl Router w fn create_work(&self, candidate_hash: Hash, producer: ParachainWork) -> impl Future + Send + 'static where - D: Future + Send + 'static, + D: Future + Send + 'static, { let table = self.table.clone(); let network = self.network().clone(); @@ -213,7 +220,7 @@ impl Router w // store the data before broadcasting statements, so other peers can fetch. knowledge.lock().note_candidate( candidate_hash, - Some(validated.block_data().clone()), + Some(validated.pov_block().clone()), validated.extrinsic().cloned(), ); @@ -234,26 +241,21 @@ impl TableRouter for Router wh E: Future + Clone + Send + 'static, { type Error = io::Error; - type FetchCandidate = validation::BlockDataReceiver; - type FetchIncoming = validation::IncomingReceiver; + type FetchValidationProof = validation::PoVReceiver; - fn local_candidate(&self, receipt: CandidateReceipt, block_data: BlockData, extrinsic: Extrinsic) { + fn local_collation(&self, collation: Collation, extrinsic: Extrinsic) { // produce a signed statement - let hash = receipt.hash(); - let validated = Validated::collated_local(receipt, block_data.clone(), extrinsic.clone()); + let hash = collation.receipt.hash(); + let validated = Validated::collated_local(collation.receipt, collation.pov.clone(), extrinsic.clone()); let statement = self.table.import_validated(validated); // give to network to make available. - self.fetcher.knowledge().lock().note_candidate(hash, Some(block_data), Some(extrinsic)); + self.fetcher.knowledge().lock().note_candidate(hash, Some(collation.pov), Some(extrinsic)); self.network().gossip_message(self.attestation_topic, statement.encode()); } - fn fetch_block_data(&self, candidate: &CandidateReceipt) -> Self::FetchCandidate { - self.fetcher.fetch_block_data(candidate) - } - - fn fetch_incoming(&self, parachain: ParaId) -> Self::FetchIncoming { - self.fetcher.fetch_incoming(parachain) + fn fetch_pov_block(&self, candidate: &CandidateReceipt) -> Self::FetchValidationProof { + self.fetcher.fetch_pov_block(candidate) } } diff --git a/polkadot/network/src/tests/mod.rs b/polkadot/network/src/tests/mod.rs index 5e6f0ebea1..8d3cf21b10 100644 --- a/polkadot/network/src/tests/mod.rs +++ b/polkadot/network/src/tests/mod.rs @@ -21,7 +21,10 @@ use validation::SessionParams; use polkadot_validation::GenericStatement; use polkadot_primitives::{Block, Hash, SessionKey}; -use polkadot_primitives::parachain::{CandidateReceipt, HeadData, BlockData, CollatorId, ValidatorId}; +use polkadot_primitives::parachain::{ + CandidateReceipt, HeadData, PoVBlock, BlockData, CollatorId, ValidatorId, + ConsolidatedIngressRoots, +}; use substrate_primitives::crypto::UncheckedInto; use codec::Encode; use substrate_network::{ @@ -74,6 +77,14 @@ impl TestContext { } } + +fn make_pov(block_data: Vec) -> PoVBlock { + PoVBlock { + block_data: BlockData(block_data), + ingress: polkadot_primitives::parachain::ConsolidatedIngress(Vec::new()), + } +} + fn make_status(status: &Status, roles: Roles) -> FullStatus { FullStatus { version: 1, @@ -164,7 +175,13 @@ fn fetches_from_those_with_knowledge() { let knowledge = session.knowledge(); knowledge.lock().note_statement(a_key.clone(), &GenericStatement::Valid(candidate_hash)); - let recv = protocol.fetch_block_data(&mut TestContext::default(), &candidate_receipt, parent_hash); + let canon_roots = ConsolidatedIngressRoots(Vec::new()); + let recv = protocol.fetch_pov_block( + &mut TestContext::default(), + &candidate_receipt, + parent_hash, + canon_roots, + ); // connect peer A { @@ -178,7 +195,7 @@ fn fetches_from_those_with_knowledge() { let mut ctx = TestContext::default(); on_message(&mut protocol, &mut ctx, peer_a.clone(), Message::SessionKey(a_key.clone())); assert!(protocol.validators.contains_key(&a_key)); - assert!(ctx.has_message(peer_a.clone(), Message::RequestBlockData(1, parent_hash, candidate_hash))); + assert!(ctx.has_message(peer_a.clone(), Message::RequestPovBlock(1, parent_hash, candidate_hash))); } knowledge.lock().note_statement(b_key.clone(), &GenericStatement::Valid(candidate_hash)); @@ -188,7 +205,7 @@ fn fetches_from_those_with_knowledge() { let mut ctx = TestContext::default(); protocol.on_connect(&mut ctx, peer_b.clone(), make_status(&status, Roles::AUTHORITY)); on_message(&mut protocol, &mut ctx, peer_b.clone(), Message::SessionKey(b_key.clone())); - assert!(!ctx.has_message(peer_b.clone(), Message::RequestBlockData(2, parent_hash, candidate_hash))); + assert!(!ctx.has_message(peer_b.clone(), Message::RequestPovBlock(2, parent_hash, candidate_hash))); } @@ -197,15 +214,16 @@ fn fetches_from_those_with_knowledge() { let mut ctx = TestContext::default(); protocol.on_disconnect(&mut ctx, peer_a.clone()); assert!(!protocol.validators.contains_key(&a_key)); - assert!(ctx.has_message(peer_b.clone(), Message::RequestBlockData(2, parent_hash, candidate_hash))); + assert!(ctx.has_message(peer_b.clone(), Message::RequestPovBlock(2, parent_hash, candidate_hash))); } // peer B comes back with block data. { let mut ctx = TestContext::default(); - on_message(&mut protocol, &mut ctx, peer_b, Message::BlockData(2, Some(block_data.clone()))); + let pov_block = make_pov(block_data.0); + on_message(&mut protocol, &mut ctx, peer_b, Message::PovBlock(2, Some(pov_block.clone()))); drop(protocol); - assert_eq!(recv.wait().unwrap(), block_data); + assert_eq!(recv.wait().unwrap(), pov_block); } } diff --git a/polkadot/network/src/tests/validation.rs b/polkadot/network/src/tests/validation.rs index d9cf88b622..3562ac2fa7 100644 --- a/polkadot/network/src/tests/validation.rs +++ b/polkadot/network/src/tests/validation.rs @@ -22,10 +22,12 @@ use substrate_primitives::{NativeOrEncoded, ExecutionContext}; use substrate_keyring::AuthorityKeyring; use {PolkadotProtocol}; -use polkadot_validation::{SharedTable, MessagesFrom, Network, TableRouter}; +use polkadot_validation::{SharedTable, MessagesFrom, Network}; use polkadot_primitives::{SessionKey, Block, Hash, Header, BlockId}; -use polkadot_primitives::parachain::{Id as ParaId, Chain, DutyRoster, ParachainHost, OutgoingMessage, - ValidatorId}; +use polkadot_primitives::parachain::{ + Id as ParaId, Chain, DutyRoster, ParachainHost, OutgoingMessage, + ValidatorId, ConsolidatedIngressRoots, +}; use parking_lot::Mutex; use substrate_client::error::Result as ClientResult; use substrate_client::runtime_api::{Core, RuntimeVersion, ApiExt}; @@ -158,7 +160,7 @@ struct ApiData { validators: Vec, duties: Vec, active_parachains: Vec, - ingress: HashMap>, + ingress: HashMap, } #[derive(Default, Clone)] @@ -293,7 +295,7 @@ impl ParachainHost for RuntimeApi { _: ExecutionContext, id: Option, _: Vec, - ) -> ClientResult>>> { + ) -> ClientResult>> { let id = id.unwrap(); Ok(NativeOrEncoded::Native(self.data.lock().ingress.get(&id).cloned())) } @@ -358,7 +360,7 @@ impl IngressBuilder { } } - fn build(self) -> HashMap> { + fn build(self) -> HashMap { let mut map = HashMap::new(); for ((source, target), messages) in self.egress { map.entry(target).or_insert_with(Vec::new) @@ -369,7 +371,7 @@ impl IngressBuilder { roots.sort_by_key(|&(para_id, _)| para_id); } - map + map.into_iter().map(|(k, v)| (k, ConsolidatedIngressRoots(v))).collect() } } @@ -471,11 +473,11 @@ fn ingress_fetch_works() { }; // make sure everyone can get ingress for their own parachain. - let fetch_a = router_a.then(move |r| r.unwrap() + let fetch_a = router_a.then(move |r| r.unwrap().fetcher() .fetch_incoming(id_a).map_err(|_| format!("Could not fetch ingress_a"))); - let fetch_b = router_b.then(move |r| r.unwrap() + let fetch_b = router_b.then(move |r| r.unwrap().fetcher() .fetch_incoming(id_b).map_err(|_| format!("Could not fetch ingress_b"))); - let fetch_c = router_c.then(move |r| r.unwrap() + let fetch_c = router_c.then(move |r| r.unwrap().fetcher() .fetch_incoming(id_c).map_err(|_| format!("Could not fetch ingress_c"))); let work = fetch_a.join3(fetch_b, fetch_c); diff --git a/polkadot/network/src/validation.rs b/polkadot/network/src/validation.rs index 6cde1a5234..373eae5a4d 100644 --- a/polkadot/network/src/validation.rs +++ b/polkadot/network/src/validation.rs @@ -22,10 +22,10 @@ use sr_primitives::traits::{BlakeTwo256, ProvideRuntimeApi, Hash as HashT}; use substrate_network::Context as NetContext; use polkadot_validation::{Network as ParachainNetwork, SharedTable, Collators, Statement, GenericStatement}; -use polkadot_primitives::{Block, Hash, SessionKey}; +use polkadot_primitives::{Block, BlockId, Hash, SessionKey}; use polkadot_primitives::parachain::{ - Id as ParaId, Collation, Extrinsic, ParachainHost, BlockData, Message, CandidateReceipt, - CollatorId, ValidatorId, + Id as ParaId, Collation, Extrinsic, ParachainHost, Message, CandidateReceipt, + CollatorId, ValidatorId, PoVBlock, }; use codec::{Encode, Decode}; @@ -325,7 +325,7 @@ impl Collators for ValidationNetwork where struct KnowledgeEntry { knows_block_data: Vec, knows_extrinsic: Vec, - block_data: Option, + pov: Option, extrinsic: Option, } @@ -366,9 +366,9 @@ impl Knowledge { } /// Note a candidate collated or seen locally. - pub(crate) fn note_candidate(&mut self, hash: Hash, block_data: Option, extrinsic: Option) { + pub(crate) fn note_candidate(&mut self, hash: Hash, pov: Option, extrinsic: Option) { let entry = self.candidates.entry(hash).or_insert_with(Default::default); - entry.block_data = entry.block_data.take().or(block_data); + entry.pov = entry.pov.take().or(pov); entry.extrinsic = entry.extrinsic.take().or(extrinsic); } } @@ -436,15 +436,15 @@ impl ValidationSession { &self.fetch_incoming } - // execute a closure with locally stored block data for a candidate, or a slice of session identities + // execute a closure with locally stored proof-of-validation for a candidate, or a slice of session identities // we believe should have the data. - fn with_block_data(&self, hash: &Hash, f: F) -> U - where F: FnOnce(Result<&BlockData, &[ValidatorId]>) -> U + fn with_pov_block(&self, hash: &Hash, f: F) -> U + where F: FnOnce(Result<&PoVBlock, &[ValidatorId]>) -> U { let knowledge = self.knowledge.lock(); let res = knowledge.candidates.get(hash) .ok_or(&[] as &_) - .and_then(|entry| entry.block_data.as_ref().ok_or(&entry.knows_block_data[..])); + .and_then(|entry| entry.pov.as_ref().ok_or(&entry.knows_block_data[..])); f(res) } @@ -590,32 +590,33 @@ impl LiveValidationSessions { self.recent.as_slice() } - /// Call a closure with block data from validation session at parent hash. + /// Call a closure with pov-data from validation session at parent hash for a given + /// candidate-receipt hash. /// /// This calls the closure with `Some(data)` where the session and data are live, /// `Err(Some(keys))` when the session is live but the data unknown, with a list of keys /// who have the data, and `Err(None)` where the session is unknown. - pub(crate) fn with_block_data(&self, parent_hash: &Hash, c_hash: &Hash, f: F) -> U - where F: FnOnce(Result<&BlockData, Option<&[ValidatorId]>>) -> U + pub(crate) fn with_pov_block(&self, parent_hash: &Hash, c_hash: &Hash, f: F) -> U + where F: FnOnce(Result<&PoVBlock, Option<&[ValidatorId]>>) -> U { match self.live_instances.get(parent_hash) { - Some(c) => c.1.with_block_data(c_hash, |res| f(res.map_err(Some))), + Some(c) => c.1.with_pov_block(c_hash, |res| f(res.map_err(Some))), None => f(Err(None)) } } } /// Receiver for block data. -pub struct BlockDataReceiver { - outer: Receiver>, - inner: Option> +pub struct PoVReceiver { + outer: Receiver>, + inner: Option> } -impl Future for BlockDataReceiver { - type Item = BlockData; +impl Future for PoVReceiver { + type Item = PoVBlock; type Error = io::Error; - fn poll(&mut self) -> Poll { + fn poll(&mut self) -> Poll { let map_err = |_| io::Error::new( io::ErrorKind::Other, "Sending end of channel hung up", @@ -746,22 +747,34 @@ impl SessionDataFetcher where T: Clone + Executor + Send + 'static, E: Future + Clone + Send + 'static, { - /// Fetch block data for the given candidate receipt. - pub fn fetch_block_data(&self, candidate: &CandidateReceipt) -> BlockDataReceiver { + /// Fetch PoV block for the given candidate receipt. + pub fn fetch_pov_block(&self, candidate: &CandidateReceipt) -> PoVReceiver { + let parachain = candidate.parachain_index.clone(); let parent_hash = self.parent_hash; + + let canon_roots = self.api.runtime_api().ingress(&BlockId::hash(parent_hash), parachain) + .map_err(|e| + format!( + "Cannot fetch ingress for parachain {:?} at {:?}: {:?}", + parachain, + parent_hash, + e, + ) + ); + let candidate = candidate.clone(); let (tx, rx) = ::futures::sync::oneshot::channel(); self.network.with_spec(move |spec, ctx| { - let inner_rx = spec.fetch_block_data(ctx, &candidate, parent_hash); - let _ = tx.send(inner_rx); + if let Ok(Some(canon_roots)) = canon_roots { + let inner_rx = spec.fetch_pov_block(ctx, &candidate, parent_hash, canon_roots); + let _ = tx.send(inner_rx); + } }); - BlockDataReceiver { outer: rx, inner: None } + PoVReceiver { outer: rx, inner: None } } /// Fetch incoming messages for a parachain. pub fn fetch_incoming(&self, parachain: ParaId) -> IncomingReceiver { - use polkadot_primitives::BlockId; - let (rx, work) = self.fetch_incoming.lock().fetch_with_work(parachain.clone(), move || { let parent_hash: Hash = self.parent_hash(); let topic = incoming_message_topic(parent_hash, parachain); @@ -778,7 +791,7 @@ impl SessionDataFetcher where canon_roots.into_future() .and_then(move |ingress_roots| match ingress_roots { None => Err(format!("No parachain {:?} registered at {}", parachain, parent_hash)), - Some(roots) => Ok(roots.into_iter().collect()) + Some(roots) => Ok(roots.0.into_iter().collect()) }) .and_then(move |ingress_roots| ComputeIngress { inner: gossip_messages, diff --git a/polkadot/parachain/src/lib.rs b/polkadot/parachain/src/lib.rs index 7ae5399597..323e241a76 100644 --- a/polkadot/parachain/src/lib.rs +++ b/polkadot/parachain/src/lib.rs @@ -41,7 +41,6 @@ //! for setting up a parachain WASM module in Rust. #![cfg_attr(not(feature = "std"), no_std)] -#![cfg_attr(not(feature = "std"), feature(alloc))] /// Re-export of parity-codec. pub extern crate parity_codec as codec; diff --git a/polkadot/primitives/src/lib.rs b/polkadot/primitives/src/lib.rs index de3bbdad26..3cb21f78a5 100644 --- a/polkadot/primitives/src/lib.rs +++ b/polkadot/primitives/src/lib.rs @@ -19,7 +19,6 @@ #![warn(missing_docs)] #![cfg_attr(not(feature = "std"), no_std)] -#![cfg_attr(not(feature = "std"), feature(alloc))] extern crate parity_codec as codec; extern crate substrate_primitives as primitives; diff --git a/polkadot/primitives/src/parachain.rs b/polkadot/primitives/src/parachain.rs index 563d6f4ab4..5183f408f9 100644 --- a/polkadot/primitives/src/parachain.rs +++ b/polkadot/primitives/src/parachain.rs @@ -159,26 +159,52 @@ impl Ord for CandidateReceipt { } /// A full collation. -#[derive(PartialEq, Eq, Clone, Encode, Decode)] -#[cfg_attr(feature = "std", derive(Debug))] +#[derive(PartialEq, Eq, Clone)] +#[cfg_attr(feature = "std", derive(Debug, Encode, Decode))] pub struct Collation { - /// Block data. - pub block_data: BlockData, /// Candidate receipt itself. pub receipt: CandidateReceipt, + /// A proof-of-validation for the receipt. + pub pov: PoVBlock, +} + +/// A Proof-of-Validation block. +#[derive(PartialEq, Eq, Clone)] +#[cfg_attr(feature = "std", derive(Debug, Encode, Decode))] +pub struct PoVBlock { + /// Block data. + pub block_data: BlockData, + /// Ingress for the parachain. + pub ingress: ConsolidatedIngress, } /// Parachain ingress queue message. -#[derive(PartialEq, Eq, Clone)] -#[cfg_attr(feature = "std", derive(Serialize, Deserialize, Encode, Decode, Debug))] +#[derive(PartialEq, Eq, Clone, Decode)] +#[cfg_attr(feature = "std", derive(Serialize, Deserialize, Encode, Debug))] pub struct Message(#[cfg_attr(feature = "std", serde(with="bytes"))] pub Vec); +/// Consolidated ingress roots. +/// +/// This is an ordered vector of other parachains' egress queue roots, +/// obtained according to the routing rules. The same parachain may appear +/// twice. +#[derive(Default, PartialEq, Eq, Clone, Encode)] +#[cfg_attr(feature = "std", derive(Serialize, Deserialize, Debug, Decode))] +pub struct ConsolidatedIngressRoots(pub Vec<(Id, Hash)>); + +impl From> for ConsolidatedIngressRoots { + fn from(v: Vec<(Id, Hash)>) -> Self { + ConsolidatedIngressRoots(v) + } +} + /// Consolidated ingress queue data. /// /// This is just an ordered vector of other parachains' egress queues, -/// obtained according to the routing rules. -#[derive(Default, PartialEq, Eq, Clone)] -#[cfg_attr(feature = "std", derive(Serialize, Deserialize, Debug))] +/// obtained according to the routing rules. The same parachain may appear +/// twice. +#[derive(Default, PartialEq, Eq, Clone, Decode)] +#[cfg_attr(feature = "std", derive(Serialize, Deserialize, Encode, Debug))] pub struct ConsolidatedIngress(pub Vec<(Id, Vec)>); /// Parachain block data. @@ -283,7 +309,7 @@ decl_runtime_apis! { fn parachain_code(id: Id) -> Option>; /// Get the ingress roots to a specific parachain at a /// block. - fn ingress(to: Id) -> Option>; + fn ingress(to: Id) -> Option; } } diff --git a/polkadot/runtime/src/lib.rs b/polkadot/runtime/src/lib.rs index 3aebc5d1ce..01be12a0e5 100644 --- a/polkadot/runtime/src/lib.rs +++ b/polkadot/runtime/src/lib.rs @@ -363,8 +363,8 @@ impl_runtime_apis! { fn parachain_code(id: parachain::Id) -> Option> { Parachains::parachain_code(&id) } - fn ingress(to: parachain::Id) -> Option> { - Parachains::ingress(to) + fn ingress(to: parachain::Id) -> Option { + Parachains::ingress(to).map(Into::into) } } diff --git a/polkadot/runtime/wasm/target/wasm32-unknown-unknown/release/polkadot_runtime.compact.wasm b/polkadot/runtime/wasm/target/wasm32-unknown-unknown/release/polkadot_runtime.compact.wasm index c40326d196ee2527eb6f640c0bb60beba0425341..69f822132b82e0a475e6845c1206431a20f3f21d 100644 GIT binary patch delta 97192 zcmb@v2VfLM`#*j&v$>SJOOEt}knCLo1VRY}5~OBB2~`jkQ7QHkdJ#c|LtjNunl3P) zsE8=2lwi;UK?sP-tEgam^?fbaQITSM^|k#!&+P8qC7{0V|MxX=yE{Ac%rj4$XPznh z*=^0=zomI?cizP1V$5azm!vM{5We30mUl3liw<#aBr)@1(X`<5%i{!drMh!Oh#7O| z*1J3*mvMCde*0RtT>OXY+X2g9p3C<0p;ultehE9p4)DM8gZv$KGoSnb|EIato!e|a zU%+qYTiGVQnQ!Dzu(#OT>`hk3eq+D0U(KWL@~R{31NJ_9kG;$O#qQu=uuDE+U$Xo8 zTz)rS#~x^DRlFVD7f??ROj078I zVic82;_qQB$NV|rn+z%u-=J2{g8g+*`o_6K^ePUBYQ8eu*m>fS5a(+jEo9{=iRQ2p zS~gB7Y@ATgIH767gplUz)G$T!WkeG!M4B{4#23wBA(GfQA+B)(izYB#E9Wkq8Cs2Q z>UqJs%8V9T3?cpsXU&%t1!mQs);OV2Gd15|q1;sS{UOd~le`Xf9dbW_WYsmvTg4$@ zte;k9zMp?W36xv03oUdL|I7~x9%C8il-`BrCcPecJ0$Wvb5ZXk^UA6ra_Eg(ocUQG z4U*AhU{|wKaH<8ZNZvP8OEN1b#aUTC2rg4Vnw$P9xn}<4BB@tuDduN|U#cptW;;YB z1kL=W@n&xGAprd0#huOi3*ze5HeYYi)nX&0#SubEaQPrDu?cP;DBmyvWQ;^*ntpt!Drp1eT$D6;NbxVx!)IHMGLk*tN zdzthbTDnYWuO-QLYgmHx|03Mx)b5A>STGXnmh||P_a)@4+8m=8F+ON{EY~zLn@+-+ zSYjdQH;+|buaGJC7hsYmim%=+7nO*auTt4%T9G-aIy2r|Q_Nifw>frl zzWG>n3+6EoS7+e&=5D2SOS|>Y^<`VRbPlfR=J8-lb3y+sLpim`=iKCprnI;g-mvlW=s& z%JFBNgvDB@y;G?LqmkN&;(VV=mX?>wX>e6uk@#DKwo~zE^G5k#H7=oX!f82pB!}OxEcot`g>}a-KSp@LpsRkM zuE|xpxH?)5936+nhp~K?q z{Nw5^`=;n_BkVT)6Lwfi)xtbE;Unaq(%b2?$`q;1!ISQ8kbEEx?Lm{Rj7{ry%uKNS zIoqky-BBm1a!NAyQS+U5iFL2s0JL)I-np?OQ(mAW22n52OnB;E)cDNowsnV}N=J8H z7Ye=1%%j`UrPj^f(OxlrHnP+`GkY)N87{f4HG2@P7*WC=V8QSYCF~K#3gvxm*&tRV zzi7)k5z1d|t@FNA%go&eYmy&gI&bT$PwMMy;(dsjH-D674tV)u7BnAz*lOS)B^=*C^rtlFJk^{ zb>2!G($@EdRcw8@H7hdDKfI6?n(XzeibZzq0FXGyw}>eSNv`s;P94tb+PQm21*SfU zz!dAenAax-MPJ_{^WxWZw$QxkwU(?La9Y>B@|uq)uZ%Rs?On+T>0$F6_-?~J$TyD} zJdl7o+{y7S$%B8VP|>#Nd=`6qF~ z%uQAGY)&w)N}s>pcY_|c9`pqAH|W6mLR~;vvV0c-Rsu#DR886KPBm`BGst&4GZJmO zcwIeub~CCfs~55E{kq1GKWMi9zKGw>%m?1dV;7rKzRxq?ecR9HG4t!U3t4Z1+B^^| z4FOvk0?i8Y8o;T2rHBO-n6VI~KJaHDA3w$i;{qw(W+W9om)O|#^>ObK=rlK0ib%s( zqD^-pLor`1tY*%jW_Cg|+XTU^vF4(G_DS#TT|@=J)~gA;3(|L&`RP9oc$?W`#6UiC z$G_fZK9c#m$KPF}v8(F_e>j7gw|=Zw%(AitvQYWSDAiAb>gv^ZaX}A}_-ftL*LQ{P zLEX81eS^(^ecVS}>AlK4@8eQA|99p$U;8NCGt&X)y}mB^$rgr+UirJS5jv z;sk0${jr3=ZaOs`5I*d=3e-(!_HJiGDVW>KGV@qOx%af-uVb*Vh4y>r08W0NP5d zG;cnYWfmUK2HxF|7vOi)@d@~S@pvwNKRrH`U1*Lx(VmSo=bsqwjWIPB+%JS-YJgM15P<|wl?zlILR6iv8mOw7 zFHlXjdHlOvR&6GJ-y9YhYRUR3b;^NOj!o`sE1@ziea-j3AH@2at$%2P-wS>)nPGnQ z!x#8{^WX2W%0}q)F(>}y?W_|QU}!<^B9J*@MnHgse1B4)iIEa;d-DmW?L5M`?YytA z(A@G^T`xsa1*Xq;q}LD~M33`pahF_+gs6$5_a$d3%*;sS2N6%gJ6Gvz=1s%`TT zNHlz?Mx$z0s%lizS8_lBZmq-`j-pA(0!83PeYB!_s;IzR{huo{^XS#v(N}NNt9&!- z=W5o}9Q*UY5bOYTdqG8}W<+hjHw2TL{H&qomLRlQKu*GD0V5ODk zlnx8)2zGrGN`jK~L!GV+b3ySw5NF$eJxb#(H@==<&Aw?+`9$Y&G+= z*HhOA4a3#n*FO9nXOcG|N5nzaAf&^$#j#6;r$wY?EyAY~*bniZB0Xh&um_bb3V-8g z^SCEqaVS3mj0jtNMsxSg@d5l9Y)dfXwBL17> z$9e3MPB`lH5~sn^0-A?cqPLObve*WXUvIKL*o+YNhx4=9V&xV+mdi#a`&BN8wTnzy z*x!`-SW1>2rzdZ^6_z(Xkl<}8+vKsT)O0UK1rAEtL?1afkBvz4DF~psi)bE9?(6f& zFY?$N`-PicxbY&VuP;g7&sgvU6xfVE@EaxqfrG>f+W&N2c7>?1f9$jibAN&Uz z&1)dM3sG5Q2*Ph55+umO&DkPdjj{Xsh&BoI+A42&Yk~?|p`6o#H4mziRykFGI7C!L z0a9O=ku9HV0R&%)m&4#2$zlBv5lL;y%HXs2YsnVk@_I|4S|kS+1J$BGL6yAQKSed+ z4^S7ERgDYsBA4>CTA0S{%(~iby;x358W%b8i~EQS z)~#FgEK9^|U4y2yG!NfZC2Bu>R$f1cHFwv4h_Lvux=l~lFd8aFOPQhF4`7f}u%|u7 zK<3-eug33nFRVrHmwn(q#)mXC7pXo82>oCfHDJ?M^r;jS4?$r8B& z@%Wd3e~G#XB#BD91+VQYW^K%$ckNaIFrS_b9QQr5J=sP_#nGSTvY;L8YDRchJLYGs zjeNO1+rip|Z!cv`Fg?7WjJ;uvFtf;UF_=ztQV~HwRGu(&yr{<;ZsM zg5JM55q1Dg8g6#I0VV;9Ca{td8@NIYf;zv{$`r> z);6ngbgjF5?Zq03?s?=IR8_pb+Lu8{_O_8$5J>pUz9Awt_p#< z0=nqN&P8%<4+fXueYv*^xoL>!vGU(PUCzIYoq(qJ9SPyVg4!Ua7wT&-MRI`_#&oL|DW{qV9)31^k>x~DL6d1bOgc#Sci&^JL1rJ`#u1k+LUUf1`=fkZ>v2%DJ z`pTZpRMAaKQc_4#XTxpLde+=lDc`+@T}=@CUdv8pN84tk+O-zZHGFmr zdxlXE-w4?0aD0?{HF%b7#s$wbWD9Gk%AMW0`Y-g?8KNh}|E z<<<$9ZW>me5Pohl`(CIC17X$S3=bM!9pGLmu48lTNUL38ynOUJb}rj3f4z>i7RPR_ zm#t^8vLx`nv_^?U#2UxRMKf3`E0Akuu<^yz-Q!;plu`NW3A%e?AW4lLEFHy*csOcu z@b#=&H#pJcB#;xBP!sU#o`6qOA_4lWC+Y6-Iv)agL*!J`z2q7~@${sL!IUAsIQhi& ztfI9ZkI_H#7+QcF4#*KR>RsgP27NKTL8bB7BB{+}9TOZ;mOW>(jc&xPm^ug5Y1Fm3K*^)5XH&Pso)vvXTo$sleYYSI=TO#VNXuVYXUwH&JFJ@#mJiyOvXfeFv$oEg<}pj35AZHTvLpi<0mV&qDQM%Mt}%SZL$fi z2#@9{96B{oO{MPGYNhU7aU%;}5pRT0Lgz!l(ImRW0ZWcJ3@Ao{d*Bp|x5p{*)(|KK zCAjPzv|pB3Y3t<6b6C;ctCHmJQ+Zq{c*gltH#nn)N zZ5EeN5&Dnt;<@YzYj|Ki54eTx(`Z!UAoBF(zN8SJqld&C53bp=#qI1;^N259k?hhS zCeGB9Gq1!PnwoTuGeory-7FDA=TnW}*%aWQNEC-IXaiGP8*eFtMwboDfZcQ%8P;n* z$8|oZYU}9fiI^AwW+yI$txf&0{{E?B22QHY|0$TK- zBRU7ARmw0U2xYAaB0Q}p>K=nnr(y$|lBVc}X(&rF z=`m6*R8xT}thTGY3$8*ifvksvJDi1JGMRiuF1QQ96zeI~D6;TR1OA?JSEkjBRNdXI zF}-pl=mTp-r)!8#cID}+ay?S3ZdIo@t_R^xvZN3d;ty4aT2b9!*G2>Z1#UvmpyWu? z5v8hyI8)GSBVA#7K|K(e*Z9u{?NpeI*0(`a6EMU=BpID5Lw7-RBQL_z>IB?bizxiK zvn)uHh5Fh$>0Rw2p7Qoy(#>g(c2|c}W$38$eiqR`T4P8MjW#|W$goIc7+L8Cs zPHx%Gg4OMu>JY4JM_5=jrbcQ^v(?zxw@^WB3y54PcuUv|C^|uGDIZ_Xa>Nt2)ys_e ztV780BrKS}@d&4n4{&OWpdm|~?najf@j(+P zTfBuH8i<$iP6&(A74e+(P;s%aGTr|#t*vDb)(O;Y2DY?2Dh43 z+}noIRmd!mjyr`B?2s~XiBavcOk7a^uWVd~7e-xKJsL*H#}~&~J2-!2B`hlkvRQ`D ztE`*W3W5dK0<*0_a54_GfElxGU)1h_oHa0huzFxv1G^U&WB2H_WA}pY(N?rEc|B3v zW04Ie))ui1%M}~5;TFL_I}%q+5*LxOYF{gFYt-04b8K5LUtG?b%MTW@M6&LmE{SPx zhH9^}?wNXOq~$^Qxba@)zaq?F^|x?lfEZyAQ)vrtOUKbApABvVBFrx33mGmrY~E}S zyr_6k!#xNhHNb~uHa^`OLiB~Q(&8a z*P{bOct1mRx?V*n6z9`1UP}vtZ;Yb%v>?ReOUI2JC%_sd;6+43`wZ70A7*<}jReR$ zMdy=c&Ry*65CS!tu?t2RF&!Ga!Fk(=1w6*a!_Q(=xdFFTtU_58W1E#k21eQMa=zU* zGR8`^?f;|AK)3fYwH^SVV68}13aHA?KPS#vZXqbX%X~-@nyVJAhE+wgZT>+nb#birD z2CRVI4GK;LtUtX{??xl`N?>T{JxI|5G(;oN!f@%GpbK8Chl_p3QDwsfy)q!E&x2v^ zHX~S~^O|6pUaptvUC7hW^x{EHA*dmtmy8P{i{)%k{&M_t@(id6iUGbvV1!ChLnpl( zscxqMzI?i$PH^#80%7Ev^q%vArFt(cwaC{?*W*>!{=R%g2O=uqb^=_z1i}c~(mx74otu_QLz_GuOdc zHx*-bn8YN#vLB4(M7?)SV1hoem?s1#!SkDp>Ntc%e~{^SvzkDeEMLja?mrFB#XLJO zm#LeCKru82Suo3kfuPk>qsK;1jTfq~J_ll|#CRIWvXYIj2_XA4d2l7GVt$#jiWP=1 zP;H|88uDs{j!CE{tz32pM9@8a8uDm_em?^Uumrje&pOe0c_ zF3@$MKR~+g_-62qse+Oi&rFVciY3L-3%{&i#mYxcvn+OqIsGO7`v7!Bm+?1iq&u@fJ>mA-bQa*?Q8Gt0VxKkK>OIl?vx0S4HCO~^vQbVP+t-x zezHDfdJwufg@$e9IaMOb1E-B*DE*+d5zke}P=*1To7_QoSh}YrvRQhYq)#3I$wKM? zpBF%cK8Y*{gpQ<9Cf~<0L&!5OI8FD=(D5^+25Jp^G98SB1;56+%!G(u7coN=qC;(< zKyU_GMOWZ@eTF_{27ZQ4F27>5;F`+c@q+c*92zca&Apv4ld`_1g7d!K>i`;TQlk~xU?9|BXj zl`Vm?HTlDAAt#@o@}>P@J||l?WlL|Itpwg&pd?Z`G=+mk+bwnO0(CCYXZG{OqY+Wm za}9S1B3Ynd<3+k)Jxqpq3&R#F!8Yk;1OMu@tD*+2 zPsO#BOGOH;ybS(!C9n zK}M{YoJx2)sE`2$l=*}{fLO6iG!n@GvVf8SBsLj9?qIrQzxAmK&<4rZvhJ)*_FBub zS-c#%7M*XRoVAv93{8Xnm7x;}lt83Jghavu3n~e#-atoP5ZSP3l0+2AXscCk33BKi zsc$GjDP8pvBytuKCHfM?73ke45^M+<^$3EVggz}rzZME-OF1x+XFbGPho&iGqz2Hm z=4mNb(0JRD-@lZ3^ra*p!vBgDADRzJpvlwpIk9A;RL}=m=TJi&YEm+&iFKWGs8x2d zK1bbw#uKT9rMmp+A=U=uN?FHpK(1En5LHf;)wsaV(dXJuyCwKmBL`9ZY9cIn4&ypNPEF$%kg9myc)0mW2ujKEMbK&xc8T=6hyKMMpe>+1{9(urAiXroLiEvaZ= znm&u{Iao(JiVQBWbQ&=LaFmLHsvyHOs!j=~^9-z%3_H)WiRvyFv0AYkdOS|QD1;su z#^qvyIBS5f59CJa|1>}({hvnqk5uX^%kXlV(tYkNBIjWm^^Mc41|Sru>C;Ycz$`*u zRS>d}pG6+oz#8ZsnShYOz65%Y1WWnR8WLVSTUxK4!9hpe)iYW*l?ZONPAP(;-|9W6 z<0!UzR+@>siF#k^=>m5$iwv^Ide#E5M~qmB#;Ti!9Xy-vrw2p8e3l+^>>yGtI)FAd z9oka|SfXDx6l4UHaXJ=WyY-MhhWh)^p90cAPzz9qtZ9V>>GBAqA%ie<3Bi*8C8YQW zq%vQEw+nbe?V*d)o*{I9T6>V%7j=}4wecwPB~fWxB-{RhNWyOvz{{h0m@*xc8zuUf z=~!Oi#j-fNY{v#=W&H-0RUFBxd#1v%_qrpwOB?3?9l1l%++(JqV$h)^GV8X{26KSQL1I7gygR-@mE{sp!@7mAUn6r%)p@yZ!2qaGW<)!`r>EEH*F znLY}x;hjv_Mx-%WA^&hFT#ydsP(c3sS&c!%@Hfrzevyj7R70{(16dKgv09@n3y~E9 ziV#z@HLx%aSwnD;m36UdBjQ5tYoN3+4%A87#vw$ekt{^y8O8ytAFXcRMc9@^?1<`R z1Epvf$TLnKO6IW)SpgM7(%WH82!$fPd~an>!5%`ul96fXLD3ky1vzJEK{{C>TQb~A zl|Unzxseq^^dp3iCH+`MdRwH3PMETp1uud;>VWFPEj$SCsBkO1tIvoxQX4aYWIKc* z#_2MJJ$F$q{E2X*J*X1t&Warhml1_+gG)B%Ouk78e3NM&0!v+#^6H>X zvxt0-zo(v|evVtHo}qq@_lRe$MvZCUC(gqB5d~`0Gu+9L^(^dUx`4Ulg}@uIRD`0m zbK@p_64+D6upE2L$jL;uTi-4C*t} znwG-dO~eDt@qvICIwCpbYfZP~`{IgpOm-NbC`fuIUu$oP$N2HidKU$rXzc{9Norvz z!b57s#Ri~(PIiV`Skd5N`-6L})ie!KV;}S~3e|-GRo$F^HIAMU#`dNAEXdpL+DDz^ z4XW}(c3uaVa|DMz%L)kU)9kDBY*#weDGTqv}|B zCPLR>KzW1#c|`Wkazh=<%do=QjbFV}$MRdH(u846z=V^mr=p0ljRlr5qfKBr)-DBB zV9G9lNU}fRm-;r0ZPO((q=%YRVHK5;8+d>jdSDGhnE645$%ta|-QuXPqkt*JiQ+It zqbf*1_f=+1KB_4mJXmvySVvH1SW}5u%3THlr%uj|J2ml$Wm{$Tv>^NzQqux%n#9K9 zSlEAHLDR_bf3?~HEkFzv55Q0d!ZkgZ zg_*l}`O;Ig2!eKH!Xt+Y!mEv^+blxMhuI&s+}&P+)@Z^C#t1t=)O>ur>Uy(iK^*Ep z$X*2vXdM9|;HN}g)cD~VSmA%A{Fw2qp*15RwfrG6&knEvr>6V8Hh644v230_-EYkh z5-T-5-Oih2=S@&~)%-DXpM#K#8?zv4c9r6vSOGwNWjt*HiARjiSbJBfo+i?pk^9B6BP1$|NqXO|LNp;wLK62N3-Xs92|ovMg%j`2CP3&B1YkLx7@g$ z^(JPz=sk9xLZ<#t=KlW_`^L!AtbslEFK6w*LQ$Vwxr23aAG?*7CWU(jv{AHnv}`Bq zpFwLHtVLPY9iqtoJ#y(z);7gngCl6s57ywwgFD$*v@q9bFiRRfu!~_|fI3vEh-HM` zdsu11gOoryS_$4{4{I(b)U$K@+WVgBF`*0nvsR-kB(Modp<|~(1~uJf%)dV-pS@~* z>HRWpFKd(X&ApY>Co3Gky0=nR?qwrs7G5p&-L#jbVX5!ly{wm76YR|L($r7NKGs2e zh{eIZ_o;Q#;f4E9(t!tQYvm$%-|lBaimA;plghf)AJAexqk%rkYo24H6wnu*W7j&c zk{npQo@eW61B{{YkSCsJ?ed@c)S$4ifQ6uJn?E%o&3WWgLw0+C-9^oLYvz>GfSE#n%kV|-uy^9}zuK%C?5yYh%y|T|?{7BbIUnHg zFYJXl^#Lp5YKu{4tF;E!b-RpzxSU-Z;nI)T+wu7?H(Vb6T+H(DXAW1&7GJV^sqFxl z7JlnXb`Dc8W7di{fLV2n-5AH`-zWE+Vl7)*s}-_!7cEvGxwO_QxODuX3oPe;Tz|YT z?E8j&MuhwBTSoej^Bt=}Zx6N~e9)eP#H2U)UCv>N;oH>9n-h3*x&M2X-o_IDkvgY3 z2IKWflqu)^afcm&ZICW1csibbdG}fQSpx5z`6B_vstD9gS_X5hxHt3%R>If`dE>v? zRcYU02be)K?O44#m+7u?{*&^%f3qMWEn4%q6;3g&(AtgEKI%cbVDjX5<~-L^V39wQg@#Kyc25twW_3#1BV}U0ci371-79DpZ+Q|`KUcgb+^LEsbrK-+Osy4YYe)w)62%`e`-(!Kf*^iIf}lE)@yK zh+FL-r4s~b?4q7AFyUBT?mW|e=wgVo+@EWLbXnht@5^8Mu041YGITr%7kG@MYw1He_G?e+#!z);cw^feNuJwWH_m#+~qvte%q6k@~yM^ zJ!ILZ4&{5$<#!y$+hNP-rNj7sMj%=a=O3{gnRG7yzU|R%mDXN7TE5%Lb!1xuz;8Q` zcy(x7rEGH^zyCrq%UE{j^0NSge}rX$v@1$8zPaOB@>>hwuyc>`_b2P=DIE?qjBr0| z9m*HmRAN>Di(xf?5&mU*aiA7}81FqTx~b( zuq7@{?itIQf;2}j;Dd?NoiF6mGp(*|E*9@ozjG_%=G3{#Js0xq3pPAu8C3%-3YCUC zJ#dcwe3q@lYV?poW40Jy;ty}b?JnZ9?^uo*g_Av3J|(r$*r`nxWbRY-;kQQfWlVg# zb)TFtmiM4$D%@Yak{8O4#`1gqN*wOF1gDE;$sw2WdH)-~S6qhkMV;!NybPoYh7VuH z7qi%%eT^xx5+uU-%A*1hjmQ#14Ctg!iQJ#dG8{l&NxlKb4xKUIp$5=gzJCQ@C%{>` z_gbDI=Um3YN?QbC`TEtB{A%Xp>lR*mHJ`z{-g>h_Fi9c!2|Zxr4Lw*#A%N%(Q=|Ms z?clepyq3=)aA8!N#s4>A%DC}-2h?uQc-{#<<9FlvKOM%=YUCI_W^_+_d~5;_gK_I7 z@^4y^Ff^v7?Rz&AM!9DaZ;J}Pp2UYJq3JQ1wT`L5fRcv&*YgMC z_`Zd*?k3*Py>t<*Mw(<>;oX&*T&)gnKbtq>Ygfp#XY-CJQL{qkWUAEXK)j!r%?l~V zKW1~aLFmIL!RZ!rcm@A@g&aGFmr%nN&f%BwH|_|ZoWtXo`yr|*N1n5eHxC1sbT>?1 zxO^VR$zP|T_|xrtuppCIeJ3xa>#RGubkBV@3ZdIV9NOFL(Pw*;r{vh%2cPXt0~1bs zTJ>zW!(u*!iS6X7E#aljo{$YPKPID@*Gl=y5+DntJ1*tz_`&`1)u%wSJC|DK>mDRx zBjMkd@+thI*W{@!5bksC;{EyaugQDw;^*=0`{k*-_+bA2e%b48-d|OE$KC&JrQvQS z&u1W&ym%Rgj%csBjIT*T#G$NWQ>=^+s1e+-ibF*=iCQ)(?89$3#R)oGp)Si zzksy*wZDcG+VDC^MC-D@TV^|jXKrQV6`75n)xZT{oU8NR8J#(*9|N8C=ts6Qmp#ZQ zikCL*l@D&_9pzgO@=I;$Z=H(hjWVgim@BOQG<@A!{+6R2_m;=Nw5tKtYY{Hn#jHIi zh}s9RFpULhTb9?0sb)8hamjxe?58TnJjmZ|Q#Xlf5pZX+vwZ_d_jB9(|0TQ(m`VpDUozs-zfF*^!6Xq?ot3m6IOl zWB9xU^3}(A&;NoxS+Z&)UkH@Lhc@DvaGiPpC%j>u`iNLK3veR?D|~HMFL6Kr8k9EA z!hGxo?v}lt;cj!t?07kG3r~n8O@VxD3-4>&nJ)AO-cy?FS<5Bg_?rAjEicmk4QMNt z!fVnc8Q!ftB{p9(dG%Ia*dSA;+`g5s`*Rx@p7jKu&jvK4&KVA!aAdy7_N^S5hd*aI zUvsU=2>D?x&$WAr5_#7)-qGo89=MA)lXK_rM0sKx&vk#j0<_7pXtQyrWpW{arE=Pn z=px@+Bp-MZnqf)L`Sjf7DZZTFD#=Kz12~j#ksDS%V|f_vw5a{MUjDkBccW5WckoKM z+c)muLxXRAT^ZD3`;3>75Etn+p8FcT`wo6fLu#&hnjaPa0L1*4ctAQBDz3b;li%*% zxd?_DX9K^)^X05v++(9!DxccL$GT5`4Z>tuZynAnb`jR$%b(##;$rdy!{eUC+3`-0 z$k8V|NTl?Xf<(QZw~$mVf9rYvyx4fWUOw=Gaw)|9brT)mDsoj06@0ETd#L=E((qRq)F7;3CY;P~?RIe_$+4b)^?dtrkTQ+JY1HQ{ zM}N)T_P}qW85yoyZ&o8S{L@6`Peu{I#9=DJ_E?D>tEAzvFY`MYPK5gE6$F0@C8k~m z;&Sn;JWzxfc@TaW#!{#i(*X&*68@OA%UJon@Dt@jukuA+wSf=kec^S2?0$$ZODa?$ zcnqgBS(>fodF_**uzL+BKk>u-Tviw!ahPw9OL@o&1F9hLec*7je{dB7{nuCSld-2a zI45efQ=aeBZ}V0uZ^jgT)haqf_Id~Qm2?K@NrdlthmWw1oKVGJu|SaU@BhTUrd+aL z|FowMBmJ7{-@<#}<@GEZ8FYqu9*yRCoQ%5`?~|+ErwCcN%?Eq|IS)@A;qPUB2ghA) zVGx!vpxs>v{$cpKk7=n!uD1^=3nO||vI&Iv3dYtOF9WiNGI!b}k zrMs-OPZDti_THH}^2%d;Au#>s7@YkK`PkRIZOX4NsbM%yE^Ouc;iXFX+1LCkyc=>H zb~8i1b)2st43Bh0y!zG?{IHmRuwITl$!`-&adYG(&lBI_=J%7lNS!f-UDFu6v^j+_ zCKxsP6rawwtdOst;$`GUCw#*@QF_mB;EjL1B0TyVxYhitcf)sl$FJn9D17nv?-f(VqIXA~1+AEL$im3I5XQ=rbn9j+e zTTP-~`;5&0jpul`4-@pIHd-R~%$>Ta` zqv34FQ|AjHibU%BRu&dk7J~Rb?9f6m7t)UqH67s6`*&;|z*$LG{mut_SCN6Gxk9eT zEjL7geD8OjnY?Uq6&Y^q?r7y&xOh1eQ#}VLV}{DOyizn>zDlG6$nq_sg>945mVYTK z32qxE6m`kb317#==LsBVag0e4eY~p|lR1ynmLp$C623N33li%}Y`@bsKMkgvR(Ql{ zr$RZ^Bl^{MI8brkumP;?-C!ZvakK_(Tbm=W?G|LyD%Qi2eMT zJLIHnktvU)h@J#N_lpOcZC|X8g>W``Z?z}{cd(V~(Z%w8zgSLLo2n!m`O zk}6*PqqBC@o|^fBSoM3VC~G!!?25$&a(eO|cP>Gjr_Bsm?rAv1PTCj5?M! z%}O)uMHq<5TW*f?3@b$o#}Hj9M+78C#AB5IS&pbmd<4Q_1;#q$iX6gzaIPqz>x5j< zoNu^8F3S~tlcN|tRL@$;&vQj(9K$JgK3UvUl=7vEmVn>5Xk|d!Vn6l8v-KNeQX~vPFEPGtQ4xl z#zE2+GgPkc1ESEqpW2l!59N!N@`eJTLY3<6twB-cyj88JVv6Q_)=37mDs=Wq!j8Vw?h6Qv}3z5n|aEDG4Yx|KJQEEYkOX%;eU5k>kFV zhWDwG;G|(37q1w_=p1YdeZ}uNQ$)P%*<7T9>E|{VLmD%EbMya(>6!B9=Az0EfeE@T zrx@q?oLDG_v=DixA4mp~i4ho8HdEHN5DUs1N}MtTJbE$>&e2s?q4CKya#BlS{&@^X z78DDbTMj=_EP6AAXk09!ajn4syl&lEbY?lH3%QMNcxDL_~TZP_bFwH0R(=NxJ`Wv%7&ZN;Sj$-p%BXB!LjUp>d@f^&-{ zXfb;52e*yk>b4>|Kmen0mcM%54%(4l*ZRy=V%|Kl2CJ}`QHxk)TrnT!|6Y!6FFs=5 z%gR#m9NZOm2XQZVXj?1~mWiG)l%7taJb(2TwZOm`>@44+=G!@S9*edZa%?A|4l+B? zNz8-15A7@lw=VMHM4p)T90h*x_EVI%?^x^>%1S)fS!{Mcx;e`G`^!a|t(A)R7l|J& zju*>e6+#W)ps;Cja)s!@evq3hL{W^9rds8Z3ei$5s@*G-x`^Hc3nuhj_nKN%l0yPk zEDv=NUi(FALvww&Co+ZXHT(@==%V>c@zwV+>k0RrwE0CjSVgm7`3k&LS@C|l) zXboBy)6kPRZKG?>^^EqW(@JRj3sHy9t! zm!AHjG>2SNY(Vt~reVYTb&$)GSVOEPsm|*!u2li}`u<`{fX42DRXFlDa1S#w1NSn6 zBqgw#8To#nbF3Sv5$!iKpzr;+~WjtfeQ3ddpU>J)4d2 z-oc_RWB&=C7$SzmBU6v_MJ{U{9(leH3`Iwc5HI3z+LjlHB$haj7FS%}&sQS5juad5 z_VbbAR@PRIzfg3)2!}%upE_I8(5Zp&{c^9}(8x^;<}tTcBOp+YxlvB6)aS=%(+O7X z_08%8)|j~9jk;yQAsar8O~vo`o$uv$J1;$7BezqK4zVtV){;| zHlko}-O4!ZCc|~U7WAHn3@fpma4VzP^B|4CDgRcv^&*je!453UJRtPLR4*MgLeS~R zDLN~O95=4-!U97&t%a_McuzR&K;G9d+IM+#&_~B2ZR05O@ZCW_;m2a|lhqfCW}(K2 zSa@j{=?S`aPE%?S;47@0${Sajg-U_(-+>V>n-x9*Tq2kO&1#?Di%^D@6u^b)9{3U! zLVkR)$Ot_{gLbu5n(Mnk;V^6Oawb8DR7hy$a;8Dl!&-YzM1O|qd+5jn9Q=j7rn;NX zN>D09<$_80Bpl5|F?BtOW0v&2L<6W8Mrg`aLB2R;4CJNVfC_!YV>iw#rsHGuCmnhL zDX>d_mUc?|7ju0-A&e>spoOrCD+g0(^;u#BWyGw5=``|7R7fLi9lXGL+|TsqY_y5N z+t5B&g)3d}l&C+C_F@_GKA<0GZ|X=y8&x9e3W`YL3s&M**=IDuG|x$6tSFSdE)nsU z?PmG`%u3V$eqs$RQ?_WZJ>I^l#SPH`_~VB9LflaHpkEb8(Ea)=YzR!_6V&Q}65(2$ zKd&f*S)|b-?NWyhIL*!?L<|A!hM(SGK!`TjYH!1a#8 zHb#`D#R|zvp})lR7m1i{{@>`BsOacJYl)6NJxx!&6>>P7c!AF*V1|1n5O{U0$m;;U zR;ek|C)C-?$Uu*^@pO<3SF-EyF9tn}*P;I>f>=1F*f^%dAVy3No~tK})bVo;jtvAV z4!bEoi9K<99PUX)|B&6-fb?Ip8*t)n@jk8DiMo>T0y*?j5#O-YWD=pS90Z3ML~Z_& z`az~Akm|n-Q$yD$NV;jIN*#01QTK$qQzu?gvmE)uBeYO=gp<00t}dlFwOR2s{+=EH zf*ninzZg*=dF)bA#-5P+WugTx)t8Bacrrv>e^pMnOjLwkWjMHsH?0sy;|N8~M$v1d zNHu`fN*~D(xXJAQKVW<)f-xbi9}b<_P?LpD#)(vhTG{~nT+5=18>k;rPtG90nND#+ z5oegV`lDBU{%}yxxC9RjhxDVbR~LaUzm3PBONnR2H6rLOqj+^~JarpMGW`m%Fdyd^ z;;1wIy1_ob8i}gy5%jgt6l`D2kh`zI2X~vwo>z*CyQV`Xr`70FTDk66peEN7^{MLd z7UvPK{xjcxbsN(kCu0qO8S?cj#e*q9yYfW+Z?LV|;lEua9$@%vlZ6s?{iMov*NB$~ zBtRx{R>hQJ*Mgs|!KPj9EkCQM6Su4V&wuPkRQru{kAr>IP_<}bqU>|6=);oaf@{TY z<_q_)5$7`Yvs^t+>>HSk#@q&3K`oCh=xy~tR^!$>t+5(+kMoFH?so1?rZ2O5q8zzl zyf~hYg9OPu;maS`{Gj|3%*{SFK`dY%*=eGfh4t^7Cjy%vId4_7L0F1aS!7Ilk;FS70O45hA^%$~7D(YB7(U zQpHpX_S{&GF}AC4eWTr})AgigtdJ|N6B%;wWHrQ=QznawAvy4VamaBFify-c!D^9a zDc}jHfMyBEO00~-6{@%fSK|P>LZy~U3o(15C&*Ki#Q<7s(R~U6ez9Y196W0Ad=osz zTtLBkmTmDtt%4szzXfNk920UF?!X^n6fr)DeRb;tTTq)in6DP4FqRBpa@ML1XE?)9 zF=GeLae>+c8yq+ZE5nQpxKaMd0XJ=c2|NXOfiONH%>&z+!2&y26$?Dgj3chVPMk;> zz*Ku`;2GN1w3``4fj#I^0`)X-*oz6Bz&-*A&l9US1JB|t$-sVQbP7C2o1&hl{ZKD3 zwRa$J088@%e`iM1z>CbFIqd*CM`j!adaz!2c?5SaGkkOD6;>4ryvmHEz#+oyF#T+% zpVtV*;odwC?%_KkNs)n7fykhZ7T83&wm{dZ0P*=K0!Y~6gUp-RI5L1L$-js3N_~s% znbU?Ah^fq+COWXsWdCW{Fp4!TQ>R&>MhtRGS$6oHX`(sfNI-fe|ZfDsz&mJ$u zpnw>uHCT*EJM(RT1%@k&oNO6pp9lQ8gf{DpCGNQWKg<3z#Fgxq^_yp4kXIDma=mDV z)ynozUC*td!J#v9r+XT?e>qcJ%d+KpvqVe89d4Q>7N|`!_NY|HgaL-1nKy_jGzedC zgXl}q=|eYQFphbK>d$7KqEGq6D5t>z=FrHev4==Xt9Ml z-%<0yimH|KC@L}6Zp8Vym*1QBs^oDn5iZ~QT^!! z7FpSf%i-LatI-r8rPZsdW5LamwmexVpflYrHWKtoId-n2+`3Q#P=Q4{jSY;Ts6H;d05 zAluY085ePnhXoB%f#jryS0`L6EcbAF<*#~04R;vxf5Lk+r%)U$9#}Dk4d3TF{ z^SAfP3{zCob&M&Vpq(41t!juAD+&);CaSD&4PnaI${1d~T>MTGY^$Z99Uyz9XvauT z97#i4Q0}-!FpA z2%tTO)cE=hm-nm@m%6bPfcbaHMGrt-cgj%@Lc@2;8y*ywHG0!yt$K6w8u38JPIW-0 zTc_<5L}cdQ$vtxM18|vRLEQf58KV%h8-Gd$!`k)zn{1h5d1rSHpJ|Cp$UG<11fbfIYDluaU+-uz6~e zcz`CMF4%0Dy@i{_a8lhP(dYKE&lXX31`OnaEuvY*Czj%Zq(s_vHfeWm5jma+Xv2CJ@w*`lRAR~g$@tLPq2IM(U3VZ-dKK`Wm9^umm zpAsF^M^fH=O58*@;q$^Gl_ycX*0+P?1s zGFH7Uo9z_S#X>A+UA9vci`BTQx=D?Gjtl*J2(qP-yvfMMhSjIoV|S z4D9FJJ!FA_EOFMWbcPaW1j7xGvz%w+2K73O#?yD`8r6(479ExIK1gW*Hm0KRod-oeSN?;OPxWZvwNrt$!S2OZ#6aa|=s4p|x*__acjb z=e;RtWnnn!Em%Y!mWE>S0?vr1MWW%e{vo!oydoU83)Yc-o!qz&ugQtmtS70xBOZhE zw&fks<%*R`uJAcklB;7-Ut1)O;ua5n2-c63ibGDKGNIcos<)elZ8L!A6%uUz_-wQAweSK?}M z=cjvR*JDEM%|Jpsx$Kx2?W_xS_5j=Krq$XbS~s2YwY9WH6?o%oQ6lC8Eof(%(qUz*2!ica>5jB;0^+{10yS~VoAysQwyc3-%I^4D*zxzy-3_kwVT@5EWrk9$q|UZ@qio4*%*oSpoT zc(s#1%zhB#Scq89vH2y&A{HUxph8x+kZo*N_0!EN#u}D*Vs zE0{x~11jWK{}zLZbE*-8f5iB=jhy|XSkU-8VhV=L{Ymtq+-OjlT>O)0l45_9M70VZ zB?)i-=}%hq$^Y7_20Qzs+V|hIs)Rit_y3I0pM`EqS$npYATxgvh3czX-G8yy$I<7= zZu+jF8|wu7O423fQz_`>Qn^5A zgRwkKPih))$=8Jz4F4pw&1&1VwJJ2)D9g0S`Z#SU;oQWnWwQ?El)dTUo^I`OttTXf z+O6C1)X0_NIG7me!JcemVLkPO#a0t&r#gAENm@pJqy>(VaYRE+y01_5Xe?T{Z0ptD zP22bfu#y|X3itA9zgwUFfsuq)S)HQwAvbYRil&x-?oQE0Iz2_WnO|E&1CiZLwC15> z%0Ky&BPbxQw1V}=Rn#gwpM8AA$`AKO)9ie^uoJ6sz6~$Ol(jxsWgJ1zjeH^N>)a!WbKOKvQXN}A7j$&Z$tg~P)u1nZRwI2WbCrv-D9P_m%!Yi!tjTw z+M%Q?oIXIKZpdMa_4VykI_^lRx9TM{`cRsaqp>s4h_Ma(D~Scq&1Kho?Pky(_j>r< zd~GT*VyLctfly_*Ye2h%p6?A}D=3)-+W6)x)UHzB=bKTe<;5wJ6|Z_Le2hblI3bnv zQ3}mh7#&Jl3D{+8`xkZ&9HG}R0bl)Yn1GYk8YbX#8nFpI6oq0_G#?J#Y?u(&I03$( z$|12$yDWTjE3Jsr)*l-yOhz{>4+=L-I4wskKtmp{)`D_K8?73&+gho$kQ;kxf0I4i zY80JemubavZhtLRo@}cR&fI%sp8)cSHQMZVOb zQMOqfwI?lTljQwnjcOg%NqfvGuFyd43OT;BHjz^MX&t4nT)V@`feI*AgjP&4&mJ8w z_g84|(9lki%0&};iZbShC3&*;EGLC>bYvtQnPmWESFR$Py7B9`XGhp+6a zb?2R&@=A6aQuZ|7IW;I&QJ71SrHyRXQ;|1HO|yQrw zCcZ|oyncX&;WZ^x%9#TJ*On0f720s(RjGVzPy@M1m0w?`O^IpvOM@FUe1KeZF<>Q+ zjFwWcZarK3STTxbui}VNYSEkdK|!88G#rfDI8+J7*mJeD^2T!5JdD?)+37PWO zbF>>QTn+P;4oT+m0v~}{j5I*_!fKK#yfo%sl`E6u&UcWTL|Tv>E*+uuiKXai3U(UT z+ql{a0g-HIBKQ0E{C zkyQfli<5wszZY{qT;Xay(=5RpIk2rZCf#6b{e z$%Yu>Tqky(*cYx|p{->3Z=JALcv~cR<%CTUkl^_fRq|Jd||&(Z1hK?V~-t z#U2B9GVNaNBJl`rKq9p~TlrtR@6{&Qo6Wb|$Aj#m=?FR=#8|Cm583zwcInVwq?mz8 zrad4mx36ayWuIZ8CXKxxS*;a`U%{sb9!JAYK8F5x=LV~F3Y{DFYCie)a;RnL|Hs>x zz*kWuanC!ZXMiNUkO1Kbyg+~i5(uZ<FMg~>Z`iC`l@-rKgjnb zigN7({&e4Wh|+5-D)scE{yH(Vt>+6Z$NG#kof5|d8`S=%zoBF^x!hp0nOJTBn?;8I z)8E0{1LLn+qCY8|)Pm_QI>mYpS=q79KU=b!$WvTo%zFO{kIJO+5BXE$X_$va7_hQ^ zXOh;dMm*#n;Soi8c!M7nZ0uXgq694-_IDKwiT)MO7d-55>N&;NJnTi8V%I)kR|b;}>DV&=$Y_DAN^v zBOyq3!0`oAo$SQobsLO^hJHQ0i{JK=zn5<-QaL~`1c`YWENhQRmf+&ozwD2xM9&k9 zY=0R;u@uY|!ag#5yZ;eSBiq)aT&A>bJ&I*Yvh^7Es#VL8SN$`5$G_aklXm!%NjFn# zr)sXM8tOW#0Tv@8T9-0WffK}#$Ye3Q15StWJv;pCsg%^|BarALJnBMi2V0KP&;-4Y zi~y_Bk>pivGzE@!g;w~JdD%ng=TF~;em;J;|8pS%y6y3cYn!4~?%V^3l^A(^k3Zs7 zja;Ts=ZMVR>%Z9$3$ERR3F6Q|n_xcd7@F_+JJ95<$3g!Az44J-ca!PswpIrtkJs`9 z3&Ef*c*+O)Y_k@r9JCwe`%MSlFq zU(1syK5J`)QeZC@!^r@A{sbE_w6oX58%T}>Kk?rqte9;*;y>K#c5z_Ns`ymx+1qVX zJC?%mg!DpTc<6Ti@~3_>pUID2t;h4i&-^dyOEDZY;CCJMx8Myw#!xW(bN^1#Tw0g= z-=$px&r!dyi*fW9RO=5%am=IWsK24-Hja$8;;$U{8$=IwLC%s!^YRy13rLqI1qCmp zYVxF@t;Wfdf~3;nq#&Po%>N&vG4d<_roUB~)Z_j&6mjoyq2~O2+~2egij!o7T3Pkh zKROiEyGH2M+j*O>{hb-ChiReOR92Xs{njt;9toDXx{hAolgQut+P}xMl;3^A{{U=M zWqjlRJkdT|DZ7(>wo-Jb|1RNaC!N}?<*|&v88H5)M|G(Ydha&=(@BihRvp&iuY90K z^QB)~LzWoc?)cW<-E%wN|1E4h<0{P$|MjQw;CGfLn)aPP-P1lY;XD7U9=d!V`u_Gv z<5S?lzf(hz>woaS=KXuk5h?n~U(ebKfCVeLJL;p|(KU3w#Ig*x8n3i<(E$+4>S;z0 z+F)ok9eg2O3p?72u=MFx1RWtFXJ=Ilp0beppw~r@p}8c`UplWQzx{YYDl*kZ@_d<+ zVXrNR0E#?(#_y-|36KBmUud^*ZQk`4zc^PUy2`3w{Pn?1n}4xZoB<0DyQrLn*h~;& z(?0zwJF|WIRkELb`c<&s-M2B^ruD9`t#^{onrJ(*n3^}qkjNjcM5`hTa2D-^F7%D zA;DpbIcYV{7IR|f=b_spgKO$7Jn1OB*qm{5NYHLb+1R3jB5MPB$G<7MBA!}$6JbTe zbvlxFjMIBmRKNpqIF#FfzY?d<`#ZgtUm36e=MptmR9k;u%C)xthFr_4qt_;xsLHif zb@Z?Po)F-V*42OML(Fr*sn1H41_XEII@~1;VjWFD<0rpRPoGOxG>RMO?|B>i=83u* z`!cxwJe!lT6PKB zKD6i(WFPvbBwgs8Vu0)1M31{vguEvD22@z2W>dYfhq`h`vThA{wA*l9vYzR~B}Kj? zS#Rqy&)1Z1nW#7AO`GXoP!^5m`rDY?f6!bXCC28Xt@XG_&lJ6u$FrD^NY#%K5&`+; zE%lwijB2HisKDfd+v@fCj-cL}cW(onx6<@*%@3>_h+-!C4hk1a*B?!GmK#ukP~mYZ z0Lu=wL#sa939Du}#;ixR;HTQ_9e8GIeXX5nIXe%_v6u}OOw^n4?>p&Yec+ci`cxnP zbSIyXp&zNp9&)lBH;JpY)AN15A#g!Ey|w2Yf3zL73_sLPPp>!tYmeyi04#M(Isn_a zy}l3!VDD|OXCTJ@_WExi9@*PLFY#QeImUI;NkNI6?W7-~%88)mYkMxJiJ!XYM`~{P zRFt@W64v@)NtJ)v6(2Of(#bvD^bcxpu&Sd5ssjc{;e=>W<=bv(@>^fsS)pp&4_t>(KCPd=xAsjqYD=e2H4M3M z4*ElMXTE2DU7T_#fQwtG5A@gnS&@s2b&l}^_1Urkbi3{Boa)qe)PcSjXf?n;2I(Wc zo-ZQ*8mteksDFV)oY;1#zF*WruPnVb@1G2gUDi|Ad8=XiwF3V5F#RFVjeOW}{S^5l zz5XniFdg|Z)7hnowYR#Yy@FA zF0N9js)XAjtK7VAW6SS_of;!YR6t>z=U~WZVQDIjCk!fx2@fQd zyzN;1HerR}m9hFXh=QbX=qt(mrg8do>J8tI(|yDgKTgo+i%aygC+e3Wz*_x*>`ml{ zAYyH)T!$~3sK?QXc3)@*E zE%%3Dt;IV{zrl9{qR;)OUORICG<~&~!Ok5?fTyPFnS5bbpHCKCe+uhEgiXB&$ft^R z<2G06`H{nUdIPU-HP%Fbo~?gc{oHN4NZhwf(s@yyJ~Ps9j-KZg=byF|3c+Mm;;)7J z8s881?&NJtk=Gx#>2>I%K!&KqgVM^0sKkY(sP1d$>L#x-SFh!}0SN`?>U1(IGGs1x z@JJX>EY{!mNOC0otSLL9J}1JF(OWz-gSVyOaO-YDh{X`QbIlLzGooI(o3u!;2Q`3H;7H-H4=Juiq~$ zf{PmJc%xp|>-mlky-ClY{6`kuL}NOLtiM^m!s9!>c4y?*Tl8zap6~fpx9Kl=PVlz3 z>xqqiTq{I>0HS}UHBT0Dy%cQ)lY!ucc>cf&y)hxYvO=Hfk<_Z&^4T^nvaP8v0DEr6G~h#3fnzq zG?qSx@iCzKsnX9?b*I8Or+sC1vI zU!_4OX^R0L`w^?*>8d=f(lQ}rh*+kCYH7Jg)@4EpS-47K@-AmPn<5Fwi^)fB+^>It zaptr8^s6;cMr-+>-}jK7!moQs-v+F%8!$$rt@0k$ThqbI$bAp%<2=%opy&f+ zO3?GD{uuSCO^@nR+#MuRf1_UW!mic%G5w_gF1wNmdTKD7at?gYy^rfpAi1X=*MogY ziI;8QZWB=yguB}2f+e;{tta#=FU)V*CZQ_u#!u?qF34}*lY0DxQIY zf(m%<8T|#%AwK(AC}uB02Hg3q-gL-cDS*3R3YSz0;=hAp9Xbr0gsuSbsU?xwCtaKh z?)02~+}oJiQhbn1#|BIVCXR60SluG}H$F*%!f{6ituA^N@A@)kC@))|oRLb{vzEa~ z(aKMtm1}O(-|)R{jRQg=i@qP&u3zQ3MAXQJSD=#DL|iRYAB~Ms4JIJ?>1|NK8s7`; ztIIC^wSiOs*`V$&qST8!NbNlqi}&BH-w)>fVz-`TS&FOy7WWd1TZiguzoye!k`G?f zACl$4S*>YM1t~L;$6nVP`Y^b^{)WCpTz(Q%BV+gL|I+0$wNygwWon^b(lYhs2X(SU z#Xmi$uUAjfR+?<`d*0PkeK5zve^|?eE-X&p>hI|@1hnuyy+GIkEPqd5;{EAnKI?tG z59tz5zprNy^`r0W$75IH3nodpLMv`ikyzu04KJtnFNF$g8CX-^az%U3*#zaIUG6y{Ch`zqv zcevdPPQ!)?)F^wo$KKYE@!b5<<5N+5OXZO*H9kWrrW|(MY+sq9uK!GLAy0bCwCt1K zB9A!fz3!|&n%DVUe?suIb)Z^#05&NF@N=e-fssvRo?9X55p_)IR5-s2(_2P$9 znY{m(y7(X#9l?I|=Pz~Zj+Q-Z!X^amkr-d;y}as~Z0jU2g7}25|6)!2^0h8*ru8_X z@3>S+8+@bRP9+tlG++Kkf9HQH?)H;R(iM?7>)Nj*&((^pCNS;V-MrpQ- z%un2`?Dk(Inh?YHoYAioGA{c}Wf?cMQ_IQwRF1O%y{?L!m zTNIz*WwC9V(W>ZjSYZhH2S+y}X%VAqO@m2|F}Qolq5=+IL( zG~;>ap+zKDBxe!3BBz2_wZYLjf>?E}Q~M5WyL9c?y`7-AoIYw2K&mNTO0{1!;-unJ z6ZmqGmka|SuzApU6f0)HSncZmfEcdO^sW z#83o1#?ZEVQc_#AY$XbS+Mp~VclhcMVx)L6f`rP3MBjm{B~%>4nxlu1yBzm2XHEa`SCkk^GRtxB%n8DFo$ZmrkQ&StBHFwCUF(bwe8$WpH=*zVl ze8hRZZgmTJg^?7)zwxmw&lcX*&jxjP5>qMIYGjrHh+q^x_Ds}~oeJtKp@?S*XU~=<%UyNhS)+VxqJjJ-dZ^XAXGA)4hLJ z?q#g4XFP9fu!f#T`3T0+J>z&8V+m1l#2i>Wg2k0SYOd=gRpc6soFr;d*OD4FPUPo_ z7&-(ITg`_VtV0Uwyp8817H%lgH+oVGarj|92|SG5^Us3MmU{%-a1Sm z=NKGwEyL8nH#B;Nm09Ytp?$brWp|H#;0_UVK({Jn0o6yAtPgY-M)qJdap0gy6dgIh znij2V;ZyZKVGvLNV}iax(RX^l)p)ZxT*UK53ob{5{?Q|%rt`u8>s%+~gN`k-HC<*a z>OoJWeJqRepyD!Xv6gUV*8-EyL4&(h)1@b*fptw+ih@@Bjs%vRCX(NWJ|INH0qO$g zRY@_B!&G=P3a6&M!g?ckoqw9ZQesRTX##Ak)rELmJ=Pf|9#W4DY$1qk1~JhMp7Y_G z-`>zhr>|`kK{5R0dTeChI8?It086SS(()ydt)giBYDVGm3T|UN(RLtO8>*f?m9png zGWm%5td+;)*VSheF}QtHACjUu|G7SESIw+Z!y?Fs1ImXsU~?y-SB0>oDH;7B=(YrV zVhRDl3Q>~cJ>*M*pn}<=r0T(d>~S?Ay3jDF7f&$oXi~h$Fhk{FR|%|US491WEU_^T znqjUeO9Hn#*_ZN$&I+WNd`v@@l5E;JOR9;IY9acdIGhf%f?_<=a55qo#~*CS+BU#f zu_*{^HuMp4yKi@fEw^AzeySlWMq#rPAyH=WhZET?o;aS~2t7WAPi({zTZz^<48vLt z!F5!-SRq8|P|71-9F!87$2ESc4gOFg)`xFMWcB#@Myz(rxTs>vHNJc#W!xek`b9nJ z7fXC%$Ukex?Ae$lAmOo%+1*I^WMh^D2Lo9+&6fDYMMa{btQeGm)5ulb5UNn-D)K;( z&GXd6<-b&IFKbeb3`Zr!@uViAIK!JDFowU@giUT0(@lGq`fOBJ?I5g5T8P1FG`5&X zX%?ll)y~_{rmTy&HU%zp65oi#r&BIAc`a^_4@F@t6`Xz+CdOy9q6mo*b)Cp2TpG4WB2M0421TH1_tp_K(>VY5@L%_!Dn z%I|X(#eyMrVl_JX7BcW2Ro7BSFhX~4&f0k5d46-2-qY&s)snDz2!6#~3up#{t|-oG zD$Y16&N?bi4bY(?U=I`{0zOX3N3>>j_-oDCs4_aZs0A@V)+QP|oFQcgrN zMPqF9Af#d~ETg40K_?uD!NVC*Od3&Q#IO;C5hX^9C;}KCj2RR?2&xcX)Bz<%$k`Yp z7&Ra|E@}v`(}Jas6YQVSFB+Xb#oM8YkCJWS#d<>!DPmO{NypPL4-0M;gINqE&5#@X zkTerX3t(K34T|oFkt~ki--0zLi>2cU@hGhiW?!kaDHV*9(l5Fur3vl9NfU|$)F`Bh zufb=)N~V)$U8}eZv{^-Q1u%h%+csD?h!@o)gNtAH>3@WP9;>zoF9s4U7WS_gC@*~ z)unNxUvxTJ88@#na>kP^ilWcL;#xL;E``N{>t9b{87*TV=VO9(2EjP57au&+l4^sI zaE}GiAv%M#pInT=ge9@4QG8=68;qWOCY4Dp;M zsWvr~Fo{hC#lIL7q3)Bt^_!d26h&wO8Mvz@n}&>Ov_OQO8%HZgmZB867E%iR4Ryi$ zwqh`t!{@hRLlXh&A6-qLCoxJ2I=M+n-(@7l^P{a;W0cC1#tIQ(ZW>F0@4hsah&*pi zV*@<#_oTD&@JvV-IiFh3Q-`leXRT_)(V0`hSn>RgbXHIw9XlA+Ke`KA#9}vuqe9S3 z)M4tC(K)J0AHx3s=cnW3W#V!+R?)=?R@5GCy#(vqN?JFsc>TWWf`m^IAcx* zd(iZC^RyJex^2N`9)5XS)`4f&WRu#G;R3pR?R;n3u(WgNZnzLmBRhH%Zf(;Wrl)=$ z(~i|IOQvZ%CfOEl8d?9rNCR~?)iU-YR0RtbaA4gf9zIzu@o+d3kvGFMq=Xz05EzSu z(4ll;rp6E(-!zT(p%|=F|HIo^DS;~ zS}Z`HTdK|XcV(MAwIlPpu^QIK09_{&SQ@n|U)i0}X4=&~*z(Af&KTpHBZ)YwhMHED zmA|XpO~;2^s2U&pen;f_p6o3gHsm*EvO%61k+(A08c$srH^IW&_k$IeU)P(pM=rMX zWgi8+T$? z!wP?TFe^v+@*z;XM7S5>;+~#Y6z;2`>=T6V9LAW3ObWa)oQcont<7Q?yjvD)DZfqf z)^L`}8&6>3q!mI-*yh#PxM|3fCb1U0*9a@1!6?>_7ma5+zhMMxUQb!ss{G1#j9?uV z3e9+MB&$n{WDbR*k*ts%qeK$;>Cs4J`(!3QvjUU?9|HK&Q7oU?A7TMUOP(^C)gmIu zUp@ZH6|64LAI<7Be9ewdO4ppsQYkbtnzi?xL;UYYGqEG$ppUx(==@%!S%=Vr{ME@! z9ITco&3&73`rzv;Skp^??67i?<(BUOlt_H#3{w^CT2nbjjbWGj_JQuYF-+J1!E!ZS z+zX6lH&KT9Sk_$_3HV?vi}$e4D1Wh3@%T#i-B!g1$FsM^HqnpcnK*NTN=o8`C$QV( zH(!^HVu?{uM#XefEY$lavb$s`nirp*naC!J;}DG|F>%RAl)7LN>&tNFg1#&x+Trs_ ztfe^m5jB~mRa7_7>hn31Su-E%k4lnK(O|Oj>hg1w@hJ}q&$yC}mQ9D8HR2nuWa7k_ zgZs^uXbUtG9q0#25}$k}8q|Yi#IY5m(2CzWg^4d^WUoSlZ=S-svMscom`IhA%Ii(F z8V{khdAF%-lvt#`YpSTBNB2(!%cFJ=WV6L$#}5Iu`OImo2|<@mW2eZyHixb9ow#pj zBtDm2>+u|m+!bc0e1GdxE>-hEmC#_ieMlh19@M1k!cMsG{J;{in_+!2p{R2#?=_1h z$)$WxFb4L(E0*#-^p4XPk?Uun(|Nw)_vEvsu-V#l4*M9sKjyHN@U19d%{<2=FBY)- z{Q-Mp#S=UR!}!=)iR6~Br@WFCw{UPzkE_^iQ%L$AkS3K}C$+5o7L0nBo{Ga0N}=4V z{j!&Y0=Y9K_T6Y_>f8#pReVykwQC2liNDew;s-0)t>D85c=&R! z@AR6T{3&jAPRa9idF|D#n-r#^DXv+~hN~>&W^0nBn()&5gAz8Am+Q)?$6; zYaU+9`ZrJr%l&_Q*Yg0s_g%gDpKp~X@$Ku_5V2n#wVsW>)E3S4>zUZ0$DZ6s-*H?d zoBkl1s&3U+-iZ0^LDtRtt%uKzGwR4=AJCywHQJuee2D!s@etMr$pAjqM}*noO8d}} z-yVVpqP_bLkFXH6?)*nEvBeW-{7c|O5}soZ(rL$+Utsf@ zb%=v!Jr6lBIl^uwc^dg9!mhS48uCRiv0k)kFST~7t?^~e#LaoBbxVonT?UGAPt4u=NUxv;XDKHw%0S3SKG$K$JgH83!{)l+gR_5 z^TPgZtN~T{*V`D(Z}O$vSs%f6?`>z3y*Gc(+rENuxWisy`Q&bUg=Hq+{P}KeRvS%2 z-zR%R)_F^COEoClvqCMf1RXdX3BJk-bZ8StH|9mu3<1IGS>-+8teEjbn z*2A~*%ia9`ci2GRxud)J@pqt`u0&A7gKU6r174;dWIdwxP)m^&0yG(a`XFm1zk4RR z*#7RB;9~mj*`!a{sA^tZO0~{p6h3Pt@pgD7^@LyekMFV8G09ja@r;Y6T3WPaCr^K$)x#$3fcIH*8Snb^ z+n)~6u!hvdX__15SJ|vvoWEHYLA)d}|Bd7K4GyvOo_Z@{r__xcI>efL`jecX<5|_C zvFI$0XH@{O5^MvMvr3`*b{RU@uDBc)$^3xTp;3M8hio>oxcfu4Q0B~6IcKsO?VO2f zq@3j)W>-@AMg5&T%=&wpMB0ADwt7;M|0H>oI|z%jLXz>=Pgr`R&o_&&)X8KHTNc+v zG6!+P1g$lWl5xx(2KmmNo^ElK+6K*!L6NsQ!rI8Md5J2-*SvV%5he~>;^Ucdyv3)i z1ATfqB*owk&8`=UU-Bu&I9y`j`#!a%3ZBo{exx3G>ob<`k(3jtaftH3az-zFw75gNrnyq!8Xk&frLtiPK0o#w%X||qHVAUw5Zgw!#%AyaVMOWxnm5W=fc z3X4?R7eWh&)Nf>Lje=>6_gfmb$3gFz(i3eHj9lB(2-k%B#ZaTWnfTp`U5@?H8Wy{p zv0FkaN=B=Qj~(k{jiw|GT8=fgt16Y-ZxtFbE8b}~kgvPO=jVaRhE7!>4y`YrYBb?PCL1AP5e?X_ zc&}oExo#W>_>Z%JSJv65^Is+#O@$GW#48Q4CM)N!N&Jp0jc&q<59q}6&#yGdB$RK8 zF^W3gxG9D(t0R+b$j{F;jIJ;$i48M+t22sKVmYOz4t`^gGztu_{I@B_<-)?7C}h!8 zL#+Qw`hzQ#zd8?O8)8LVhBx6^*@o$R4z|lCW*bB0W%j!!8O`|n*+wi?kyEq=(+qra zNml4}(+sf$dgnCb3PvB74MlTAY{3ILu0$ePIoNR-Q90*wfw@YkG-<5%KQgR@EmtNc zD`G(4hr>n-1`BSqu#coWUaW1eo^B*ln?z7a=RMM%mMG<$Gb@*}KDazO&lud@)%&IW z1}PSuYzN~){!&if}ExB&XcO^)D zl}f?IXbAmFY6MopK%(QLXTOvg+x@~;ztvjX7aI#@#(!98r1Ja%qj6d+Bv>r%DvJwA zVY>Z|*)loHy&)KiLStee!^ei`8jxp|QJcSZlM$!(7~-XBHydS8AaA|dSmqHcW(}4Y z=b4Yp(j_i4wo3DNQm3-b-wBhZUsBJ>oUKewC3XY@96<#RALS?kS!7J2+2RUy1 z8DXk0p(PCXr!lt~^}1wxG%w`vp%JIVw8ZE&&2Ol(g ziB4YYA*0P@j-E~iC$!KzFn5P(LTj9~z_(%iSjCpNp7BA%%Y2z3i!r#MeBVPx3{igk zA){~bcPnN*#l#}q1)pE%F&m6vo%enb^k35inwM6|@A_pI@4Lb1CXLC-Nr!C~Q_L&K zEG9172#u%R!$vxT2}_cClntDmL6`EAbt18$hx=uX__GfiR|(^7F&m9$IP{aG6ILZW zt3D#jA2F`+5NZUd8$4}@RVuA>S60`Y*0yh%9(~NHcd4u=JZ|i2^ybf%tbXqK*|GY$ z?dRT+vyU6Ei4S!MJ>O?Dt6a*FbBFe}2s5xmjIIZ3Cg(O8+eP-bJ!!1;Tp|@-@U*c( z=2k8exb2T-Y&JHKJ#8{_3DJZzW7H#EIdIp}n_iEXzv?xb$Q;NHWS3KPAe562++v7} zKcaIcp20^r_wMv`9N{MK)U)VCwz2y~=agQAsW|nbyU!~yd;YWT{4T!a8KYI2ZF|XQ zFLc?qmt@{-+e;#Eci+lCf5y0z_!;Y5Ip`_xKWlVT2Njo<9FZ^kD*=bsC`S109{-

ENad@jiOqhQ-hc3p?_$=dnckoYAo>+D0U9E2ZDztEM;^V!`AJ$vy>U ze`Vm{zTNzq-mK+dANJO;qHF6Of)wtHi+SVw7e@Q`0|jO$dD@04lLI=Zabkt1dMBPS z%wzDxdwj`}$6hifkdBSd!6o8!FAj@i0FIgmMvxi1NTZ`0!d9CfR}n>gBuTzattnyiI9IOPZ8Sa}EWBoBf4 zy4}VK{U`d+DsQyUsLO}%F;Wuu9otRExV0n`N0_SNtSC+Z(+)-wtYLn|SMD*|C*Fu% z2s*}y)3e^BI=CC3R99?5BqhL!9NS~G@p!St(S0vYL181KY%g?VxOcs7Jm$sLgn(lM zg5dqJ!+;$V4JQC`Z<_W$=0-=;S#C2JD-LGGhMx8Y2BF$(R{;L$ApotwTPsv}iJaSO zJmv8`$)9+`Xj(B?51u4aT`RuYh+O-8SdORdo%1-?1l?~g4)kUeqd7l> z-yfBGN<)-QXDx;+{~&MW|) z_J1WgH8o^+k*9{JIC_JE^VNP*aH{hu2aJx1)v-54TtNTviC?O69KNL0xW&hI^DPIA z+kn~qtxICw`Ihl*U?ms@^=OG^YJ*$f#ul>Yhsd4p7~S>e|6bzvAPRx0}|cq&TNd ze%`d~{QSb4HdlpnS{Ij8&|eDrX&@fu31|)BTA2oLzTeLE_x;Qr_&11ZMN$vV7y z?00fDD*j>N`Js8GGYgCJO7p@cnsx|bb%28}h-=AkBP05oUeB1U?BeX4nb~;-CBeRV zxmOhBW|xLF?ZBG>EJ|4oB8>d*=VhRy)+?U3-bYo7=;@b=o)s?0%`2GEXJ&T6j4(g_r5Vq64={Um*{lb& zfgrdUwbztf+rP#3W1(2<0{B$8RMB7J7muID&krz%wD>#K-I1bcf0r-$qBqTiRGIt$ zWJ@FuO6QEqwZTw(xY~`%>_@c`f04>0HlZgO;nddBp8`J8 zq>?4e2ussCB3vYn_cE3J79oIGlODl})~mJ{@L2m@!Y>1?Ibf6FQU}frSDl=im`p2x zIL#0z*f-2~4K}}!m5>}A&}!Q0biljJB!T+EFY`tsJSV4cUP0-gg52-|?UpyJR{0z_ z#2&eD!5x}pubbfy!M_)70^DFISP-5c%(iF*^Z4!|<}LMcG(4cyLvSWsl1(q85z^rb znNx>fG1P2$<=-9Gata~;3yVtH(7-SggPR;d)*+EAK${Yx#%@zwSXjyfg=SCw`%tr1 z2Y}otC~RI14Ow^&*M!g!Z`PkL;jifkp)>Hx$B$X0WGCrH0j73$5#5gP2&8+g=0t^J}}KKPQ49W9tSa zHZ?R+$u_~T(@XJj3Lpx=;~6apS@Ap|{1sYl|= z0z$PJQ&<|#1wclSh(e?*5oE*`@d2$j;CXPVIYLE6#f4Xeb7j1rkqOd!`sS5n+dhR&lZ7{_dmVR7o2|=PU>RZVWW59-W0~#s!^f&>Uw)j;iQ{S$0ShxE}R)-|~+Z7zy z_`M4kbmz-Pnsr+B>;qYxlb1iVur#l*Kn_iNK65ffG)^QSV~U7^S3drFPA`zXq4#b} z&60jKn^C~8nccfrdm}=U0VgIH7FEy8Tk#wXAOqsG>@tp!|Zk?E&Wxk2Etg zRBTHBDTEG!tHMdjt^u5sj>uOd&1*g5WT#mSf)wm#dw|6AKXs-SnGLKiDXDLUpE}J! zxD()hjvvNbK4_@f)MpQGmp3n(S)4s%PPl+(dg58$uyUO`(~EIbq3aMVpUrre9f2xt z)XaI)r{{;W!o_)oB&gKtpzgX4_$}bd4)X*21m}aUFz0s1i!6eihe*Gihb&68<{>-a zW&ytsexySD{dq_oo<7E`HICwTZ{*A%2I5`vC525@{G{w%1raPO>K25_slpw2r@EdA zw=rBkXpGtOa!qT|*s9DZxYXPCA-pf#rbvX+`8zY!I{c+EX6yX!AVp1(SAZ!qCY4u* zr-+H^Xuzp5A=jM;Ktj+PI2oWP$6rLdsX2`bT+*l}`ZhI3|5$t$ohFy#lF z^k073tQJ3Yn~haCeY%)~Pnlm>JUd*h9Rggiu~cY#H1%nf5s4V8h^9LzwA z!zCqJJp80%@VjbMtCOs09pJAG{|sx+JY{-eaZWgQ3ev=E)fy7k-(|MthsTG|@Z-lXv-DdKvdRO9bb#8v|OABy<660x<61-Fer>G2gJZUIV7 zp8b^(7fTXOeL7f$-k}g7292WtE+BC;1KScCu(9m|A();^BZ|3#$9i-$B2`Oqv< zwcJhQGtRS_l3#r@jccgW~Uw zcNKRu{AH35A#VUcPEVzvCpbM@5hnSc{AX2vdS${1@Jk(@a5LeTaR*k$Ez_pDke4Wa zcP5rAVMKT<{89q!!Mj?zBQ9KjYll1H@owQtHUmJ-@o4y^NJ)4{B2$tOTosWmf6<@d zE_UHAg`XrkJ?kh;wm$*3x{!CkFIA)=u1p+6n9ASf@Jpd42opj3IqRaUwQ-ucEFK=U z+R_yNw88>#J{D)&It=&1$JR0h!5_i9thIF?St9_!w*p_nx8t37>UhV1HWhCFP64ex zT)Sz}{s52wpv1%gmkke|!-ybzvn1XKu*nF!1}?R`GCBubrdUV$t^)tOz{ zzRW`WrhP!mM1<510d1&4=qmU}!oLr0h62yA6Ob7=i*OR|^RYIOTbwh%)09@3&Tro)Y+_Ll)}q6>jQBhXb)6|7ZrtR{h&tlDSrPOJGPa7l7YI&WnJH0(xJ z_$A$f!Z}#Wrqy?ZAr6g7g8v4?lR{9qeJStWg##kv!4I{-#%L2y*KRP2IOOKoz780Y*Yy=2FeoCkRUx zxe^SZ^>GRqz`Nfrt&ExhnA&k11`yHJoMZx3Mw9M9z@#`L$}aZXfnfQJt|Iy*z@+*` zc-=meD_$b?V@mX@x?T~&odo_g`XZpZxpz5WkcbtJEAuMHZUCw*v&7#7nAGtI=8CSC z{h$(Ek~s{R)M+WYQ+BZ`rk4E-P~}8HMvp>&66{2A@u)l?#YnIk2|po1_+1HRT%wGe zfyipN?*YG8tTc*xS4*CSAQ{a{Nz=vwrV5=I@TZ9ALh7kZvrdUlWX4!JPGK>vfMOhF zLjqb$!0*X5Ym<(mu15`l|AoQUGSVn};KssLKN?Z*06Z1pHr$%MA#fTr7L^7mVEuqQ z&_#O~{6Ai9X_Ip5Rz~A6P6J>V*0hHZNJzact)Q>16jaI}4e0ZL*Bb61*I>PVP(aHA zygI^X+jK}x%mzFY{vqMq8R6nlrP;Hgb66gJU9OpSg%$wD2w-H{nv_}`YP1grS}SZS zJPYuf0jGGwEcLID7Qxa1qg8vpHP>u4xl-l{br;fse{BET#IP)=+Uq!v9P^9KwJrGyDhqQ~)vkwpmM!Ln5vxa7c6Ok2NdQIrc=s zNh$SHD-ov(P6i@PUHJ5{d0D+m!BGHj1WR8FH}XK(++ZYR47b)5%ZFK9CO1KOXb#NK z0dE}wy19HDWxGR)GI6YQjbC&x&!%-h32HGr6VjIEeo1RMri9^QVidjakmgp;yB&xWe$iu47-a|+>YcqitNk2@24 z5H1I>OX0rtr?{A$tB<-XTaJiw+$J1%CQd7a*YQ8c{S~-UD4c#vDIAqwB^(@Um245V zd#UP1(+n(E)7mIyow}u3;D7V^Yz|Hbi5@#royFBOp1@b;W>pl7_1fsv*u09&&$aw#;FN}9~|eJ z;LR#E50X3;&;K;dJZ}U*)XR@Jn_+>k4z@s=K^_NtNkl zI)00#vjC9lsT+BcgDh$$AAZS)*Wz96Q+wc7GkgI4Si45cU14X1-|12~@#8340lcg1 zoC&{5cp&_;PmOkk<-7c)@Y8rikIKE|UsUEoUZNno39oeFu7TeqDtI>FUCrCGq1ZLVvLIm70Fz-Q)Ul@&ho{rFT<*L%l$x3ewGir& zg1E5|X(R#YNd{4xj?yFM2yhL+Xw<~g3j0y%iPoS*=|wb6yI;YT(}{V2(E=HE1M_ASSm?tmU~_O* z#e${Uu-tHdcm~!UY0T6D07~YO1PNXXaLKui@J>S61D9myJRDH7NNCz=@DFvf$c|?leIv8XZ|RrZ5t>$-`P!>wq*iDnyh@BDWjOS zWl;?KnTmIrpmb*frWV~vP(&|PqA#u@`clBu)J4lV6@N&nxiwWpFW+^s;)>KoaqY}+ z-gIH+p94wa5BZ2O)k$4#_B~akegH5jSc!xaT^t-%qo1fE`f0$Za%EM@5nbd41y6U@ zf&6(+D`X%@MiHp^(-|-l4H7Oz0)_WO7?@G60~Nt5pG68O8FdL@Dl@9NaxE#Te7&Ix zQkwu%SMr{Lzpip!SMSRnmvf%GXSK+<%buVox7_^kW~5yLNnmfiN@j*%$f1-#u*QsRH9JtYO~p3 z7XtBk{aFER9^7SciGT+Y#=(WIy1<=B!rz33D}c-UTx~YT6kJV^;!Q$$7TieQ)#fvP z@TZ*6rW9E7#8C*OR;!rM_KZv~Gk1HSDY#L1>J8>tYnW^}*HL2JhXgt!j3~+{6Mo7n zJ(VUA@MpPj$H6ZZsi}CEBQ(WbByg?t(Qfj5wsX)xPCniQA`N{b!`VgQT>Ho{{LcYS z>n@`)hc1DFB9EL(SH_p_65yu+KPV#vOXlT7Hr-(MkekzKB~Erb;9U;gh@|BzVdUQc zzige&c$Y$e!pmWaCMA=Thq&zD#T~ z{F%Ug04^o^CEP)9(_ERK20vvoa_%3d>8pn~E#(@AkI3H<{_4(nR(h=?`ZEzESx~wI z0RvN4Jbw~>QWep20h7%~H2x%dQ5De_{PpOItBAf7u)mo3byY;)c+u!$ELW>;TNTmw z0Cut6lQ$7&4Jv}v33%mmRv{%}8d`~}QMQUYKG{_&$8t4SQFb&UBctX5Mq`2W|3y-Z zs~~j*u!{}AM-i4LMon>7A#j~jz#!gb>g0|tEX~dzR8lgJ`VbD`_O^S|kQ=QjK|i|W zgVkZ2aI6^p>LRQo#kISAf1CyQ=^s|7>4UpLw69LEH~$gnA=b?VVs;L}duNw~DNI|5 z2$xABcG$vFD{KV9`XG$YxY=yt8mdVwH$XUvjsC^qu*~p!OvY%9PWIY;@Y5)gu*f=P zG7m1ThVF+;qiekztcCPhaB0FNc9tZN%V{?3zvk8aavy{BzqLq-bnn$phoE! z%d>FR415g#M8G>1~p+C zyi<@sYq*g^H=D0BWt=n@2edH=$U_z>m(DoJzq-Rb5UaTn_?A1(J24U;yve!-dkQYC zQ$LB=B=dQ%WoF}w^~_$8$CjDZJ@uyEVy%fUf;$jca!vgI$;F^@Btp$nzfzfSGa-`~ z-euORr)4d%hLjw*)V|B{6M4VkE;HWBI}WW5NjhkU-))D(sdy^Rwhm6{e5-X?Y64tp zOX7j5@URQ*o%4>2Yp-iW3^o0aZSGsvva$Fu6uWc#B^Zr#r;7 zQ_aTVD&m#{M)M;1ICEx^wAv_VtB9_llvN}x;;KnU0Z*1xy77Ri4SKO`cc>z6cfiza z_lCckqg@PvS3Z-fh@R_;J`4W(BDxqg7Aw(Lx}w_(>aap<&=B_xpS{bz$tF*{+dFhO z0Zw8nl%L;E29;og=rX{E0p6Q#bJN`qyvG98oYwU!F#BegX4CzUd7Uq~8uHq5YkP1c zZgv;qvK_6HJp@=25E?db&NMntrpinjc(V~s3MOu|Voa(tjkbWmJwl z9tau`X-MdsHzQm^SNp7&N{NtQ-h6uH8dkl#+9;%dtQki59gg}l|}-vPfVV&OccE3Dk* zKLNk2g)^?OvZ$4nOArq~RTDiyS6FAoUyQjpmTl+cl}roI%)Tm5%v}*@_bO*6Oy0_U z95B+y3oy-<2l9yi^i_efifywwKq@9|DD?J>B$;1a%d4@1*VzJtNOlE4E32VyN7v81#R*Mguf;kij6 zdK=zJaL$5DnV5|e5mOZ8D*>1DooRTdrpkm%mmPwGfgCI;oCAXjrIC*Jm^XW9BOHrX z7&_v_oAqZf{I!HY2$J%mjtf$mk=XoYZZ@O1vYm-3DTBP6oAuEnWrUre=>>cfTvEHf zM(L@h_$c5pa@DeZ{hlz0oMg z!fO#od?~^#`xRG{sFVAW(v1h+1mN-QtIdx5w$eZ3w@bi4O3K**?<9QgNyLGXYSm zd;$D26P1vGyHvp?DPdg(&d#@miuT$=j#Sx?cT&RWQLm?-US|o9IS4PK)wIcYp$=i~ zfK?`Y_Q8NgvPI%x?pB1`XEYnbmXEk&hfqy>2Y9lY<^B@EFSgwBDe#dwtNqmo#}PoH zjUJiPXV+WHg*6a13Gf+kX?&CtV;TIJ@E3=%%#>qa{ezz#wd69LnV>fqVI}j*rp?KN ztc7}j6Zbg_DMBs+C8x>=Ucg8$$^?V(_l3U*+hKH1Z+>0@&Sz6>P5TtpE2~{yU^)&s zi7|TQ{RUBfHHWgqzpu6Lkt0$bBD@NhGC+-!i!HcfT(&F0G+MU%mH%{z%S^YmY1{^v zdi^oD#IP8(XuEDs82V3{o#`suDF;NUx?hEx1-B*$G=@u=uuCo`@)alL5k`-i8LD2#;Dkz)=ObTnt!0+%kb>=|}o^qlGK}z<2nSo5e zWS^$!PVI^5u$uZ1pvq{{9Ss<1J<_kv?uC?gro(DZrXrfVA&LMaIa?K}>k$S^*m9+D z6TI?Su8@+jb%0T$R7J`zAV>-BQb}z?G#N#b+5?!JLlDe$dR#5k0VTR5a|kfCcR0}n zd#KUNtB8IAFgf;6>VM82Qic4QW0i!B<4=%MBKef(m1O>+n{}lMM;nsmW1P1OxLVp@Q zUCkxQr(I85nhd2y=e8e*pN31jol9xDRah0xK;3~hf&24r>&-Tm78q!Wv_D7; zgv)2GHyT>Y%~{BV&eJVjx9EM%xv@5k1Z~I%$yKJ zYI09G7saDWqy9zxN-P0Ku&%tz7pu7g`GZfIpIBOL(KbgaEW*1SR6s&o2fq~Um=WPPNBAoAMiEy%^JkgWnP$~ctv-_fJQ zICT)g@=@zj*4rhtxbH3z{T#xb1TIKDYPS>E5brWo>AKAtB?G6C80Lf$HB*URRp$T9 ztkDp}g(XR;`K-AJDOopT5w0pxvQ;SDbzbUHxmo~H)VQ*cH^E=mPDh;J{_DBg^e4G` z31QGzQ9z**l*20@wXO)($6_mMOod++?KD_oXn`tV1*>5+MD?RlS)5I}Fr38G>D>Wc z!w{tL-kZ%(99~okG;r`6H=D@;6-u?kAKh%Wb)%C^<%c($-}ODc#~L`~5P<+l*}rEF zSC}1*)OyD3=b?n$VvCP`)=bMH!Y5vLl+81Emn}zO=irxO8E0|q3rm`I<6cWci-Jo# z#MyA0z~y&5YyQI)LF&DY(tVZbUhDENhTo(F@wly=taRb7fuD{k(6a&W>blZ4!gWL- z_7wn-iwthU2MF1sBmN$O|6-XqqTu3?774*zY4mRY8&>ZbRb-i{9Vbr~Ek^(;4I#3i zg7rrkL59mU&QZV%0}&m^2iXe;;{?6-#D zAMs8@Dc|zE*)Tq*vdLd%ANzsl&3H)7rHGcHME^vIo{?|}p~IBWBQo^p^JaO190Sk1 zY3=YXMJUxE-}!=ad8b$Uyxc-*j#=2|lJTYLR>aH-0wS>v0*jVLNXa4U zN*TV5m{YChJ@A&(u!r!jHsleP{}}voI^|yAKC9r4nuk>{Bq(p1bbs4YHV20nT4sk4 zc*`3x_S6@F-GR&}Y&FM;JRJcVyW-*IA(WV%q=c!gQ!j1O$fbLU?)8&tmcN&|GP9c*8^6;tAW z|I1qcwP9la2SkTrhfavlHxW+iy>q9vV(ikQ5k@oM*>I=ArTM3I`;vNj{~6&=k@pM) z(1a0vA2ihbYTAnkPqxEtvQ~V+)**}-K62wr=F|32l=h*+yxsAxHgG=t>Ik+Neknwj z;$5~HNNO8g{!Q@9Rk*Eqr%^yY35O}JG86^@AeDul3=wF()8BzEe-`|b@ zPY0%y(8y<#t8{0nOfib|1P-%GJxJ~Y{EG0wh}ailL*d>9mv;NaiaMPq!1EJuWR1vu zg4X~`M;NX^P0yPF%lHBl8+?FEF>wvv%Va5ThldE$BZ<)a^MK2qEkz!|cLFY}lL!%= zk#K39p*TDX*S_g`57dC{d_vdSB1{%enmhgJaG;skzP2sYR>UYm6_T>I7cPzDk%DdJ zT(1z5@cBP;vIMUd_{=$#vk77HNx-{o2+1WWfRVN*AJ?M(VkP=Oyvu0P%>qo8f=D?1 zTO7=pq(slJB6=xcveGE}#d5x&inxmaQ~SZ69}xE>mP|BIJS z07O>rGADSbitv;}?NE9CPt=MtK$RJm?m56@MH4w!bagaNfQlib5h^`Fz@)4szbkr% zqLpOgU3P3qW-4GRpF2v8;PZSX`n7nM(a0TEIKLv}-@3J_cm5#ZkvKhyS4=hPC$ejh(K-_?s&Mbz$FQ;e21k{MktZRh?@>KQfH6Z+>2iF zGji4xfCF$_!mVoZlfrXfH=EH?ynBk1#n+YLdpHlhE+#JSsSP4%!VW0C;BhY&reX0= z(HCK|Rw?cz1-AqNMx ziOh+lc?e;WCc%!tFLfO^?sp1q#qq^a^K$S#gpz9CTPN}>;Qh1n@@rt`eg=_9ec=Dx zXHKp-)!l_>zF{_Nr)3}-jow*sbKug72#MFzHau|3nnT4SkHkUFY45tym~|Ik{)U;D zN~bG>IC2*Z&z&bUiuJ`HTzkIWW<|5MhLK;2c9*YzHR+(SbC``-OC5fYM^ zfgvGh9{wa`U@C(mGFXS0oasiEk`O?wh%V6LR8*+qX{#c1bU`hkRvR(%`Q8hsb-cX_g3uG5N+mCYiEq(N%>~h)~%iSh~LH^y`4PJMd0>xUH`7-40Ww9PUxp|m`5)N{aDo3Uz4;%B0g zN)|6X#SI5C3)c!}+7<(j(JdKYRy1Tqd23pyy~}cGIcpxdcxXKKL2=5ow21}#GFj+S zvUs+)QX7lK=^o(}KTayQtgKl|mJD9nw0t}f)jBDI#Q!v>ZR9InIuTYgEN}OpX|-20 ztt^Z0uT~Cxw!-_?MjaxzS{yYVus5{(B!b8|9i%&Y-({z>z|^c9iy%_c zVV+*=V@H=)1RkSJCec>tEV)?Kyf{j>UY0M~nbYdgXPXe6NhTZb5MeZ@<9^U9r%xk? zmrL%iZW(xokwoWHa!#ih){LJUX-rW{7PZU4DNFZVMz{#7lG0u$8aXQ)AE-7?Xep9p z$|3wkV7Y8~pxQKHvZJ&$+9n#jl;y+SMJkauGG~=EB21PaKTvI{5q~T(WAR~$LC|u> zgVpMR7l;hcGDp}2ym@YIdBuZWaeuHH)`2P>5e-s$m8eMNpB}6h4=q(zInP20mLe+c zhH;nrp=!>sP0VL(VdUBh7L(i8xVuN@3}ax@Mm&!@#hCI_CyslfaiZMNBZp0xAd>Yi zA;^&5wtVHGYJKf65t&_!6;gO!D2F~=y=|CN;yy$sop4UDv|g8gd$?LW=gm8}Pffis z8R?^zA)!kb3+1kdt7C^;QI^{jd15pqzTt^p+4EF&RG~kqzBuH88SGLPSr|M}Z#3o3 zW69jIY6humOy6gkGr}Xa!nnd7sm>lo&zy?FD~lzio^C#=+&P!5nYTS(f-yv;WAs!e zGg>fr!sfDPceSYOeWaSKr4+4i1qSIEqh6OIe_Gu<#11)<0bgUW7Sc0>$A*B zxu6-x>f(NnS8u4L5-s(KTG=ALbSOK!s}ArTX^uu=`?O@`M~~wSN>i%<7R)Aujf$=e zc2`H%&IVk}4v^p};J$3!T}?Gf8bmFIi8m|KEY+*Fy#y*3l`DQ)9a65CMo78l5Hfwj zDvNc(<|5x>+GsH{Md@qa(<>Y2lC~^(qN)eNNI;*au??Css$W|!e7xGyh!C^T+5m9c zfSi8aExmF}P3D!aJyE@P7^4=<0w1HxR2cpG%gW!>WPZ8y$?9x?hfY|`*t%%F-}1NR zGc~a7sVA$eYo}Yol@*G%oMY30$OLO?%szXyb?3MypZj!m8tNz0MthTO zkTObj`(sa4C-jDRD<)tRLC#VN8U0?|hg&0n!z>9ZR5rZa@^t0UC5R4kwHGb|Q{wB( zZBJK+m(`C~ya~LemPMv@flfYB>LmWOl)dr)eWb>207Sq-q!v1QTb_Kj zdS%^VsnAp#pt@|CEoc1_SG7rAqw4$CYgD^jZu@2R>e>e@QVYVsH5Jjkxm-VuEE#I% zTcb?Q*y|`{y5NLz&2!b#QB2lSXCAqC(qmq_ZOezAtEPZl5yeL_#{~rsQ9EDWbzvO} z&ulWo&LP)K)Tl|xUU=cUu61tttR%y7_OB{E$e1T$odZFv1Qu_MX42;Q?A)t9R=V3t}}#w!lp{4-*RfX zupvj3kMFG(4XyS8!NXN+6=MI=GuM?XEP5_($c%Euud9VaL?gl>W4HS+zDc^1o zuw7#GM~a_ zTMFGK1QiV(7#mm^=OK2-zO0yYFi+$m|e zyZxRQs@L^~g14B6u-FeIi%##{G)m0t&L;Eg7U}4`3aG|jXrr#XoNTWVk5VhnJXe77 z%&&WjYymx{5s0fnoViSamu)?AMx8l`7}B6cWP7B3xuZu;X{1s@Qr6p`(ba%v#jhlKZ$5^2i6&a3Qk^Hq&xvpKJq+M{vVHJ@T)kCxsnEj;aAq zfN2DRQpv>R%lQY9t+kPebJ3+3sIN_J`Tjv9P6*l+6_pV2lqyk9JD4C5QEoJ9w?le( z<72tzU~*BDHH(x5g=Kazi1vd$(UtvqW%V>Nqi&fp6h#+oB|C?m_?>CwqzNUc1SfL< zHwlVYJ~55FY@m$?HX+Ms;+QDE<|Dm>=a!#LBd66MwM?^&;=;O}Rb|s5ExUmM2&F}cnae0yv}9DbaHMT0Y@k`EtHFlm_oU5I=K~}wH;AF0HMuM zS7=3!trOTQu+l`4QSfl}O%+*EW7-j=h8dJdCV0I46BSw1o0L3aXf$9ULF&D|q4&NK z@T+prq2z=i*Pc5XqYw%r!s{D*>EfcfI>V@Zz z-@}M!;3dYWzz%@`%@!!Xt#@)6%p%8@`G=7iP({cJM1zG|qDj)vj=C?{cM{umSJ^{a zVK^f?Nk2FGK)LBKa%cng8YHz?LnM(;?(@Ay&_J2_#Za{fV0inu_>cFZTHjB6h zV*=v^2~FUpLaHzHPAWIfBD_Hd6<3Vj3)WeV(B;pYRoRtzw2!t4R&tlXrVWRp=S~= zf(}}A?55l`L2~UqXc|Qewz16t5}+n8Lk6~ZQ8WrFH%_J~%EdKVS$Ffa3D5*$=qMBA zrkcECn1W0>GKZQJ6juAIy)g>_tpuk@3~>lWm-9dLE-1Smug)vK8Ib9<=+p$>ON}iR z3H7eb8IsFtL^y8dAjpjc=8AH|keoNEI%EM-bZOq26#lW7ev8EGYn>HHnC&>Sjncbv zK|{_$i2y&MEmb;Xq?auBG~`UgScY1IgiTCBtH-i>l6+t?1Or`@AvBEYD8oPZt{q4F z$7Yi=hQKb#vJlu)nz=Ur(kq*GSIf)VC1i3kFpruCIe}7a9BaSPyLul(8q6Vc8q+bS zgcofi2oam=Uwa$Mrn#sP=gc9qCk+T3nj9C?%J|@4nj~_?m%4_h1SV} zr@H|}vlc@xY&)DBJP+Swe9^_&TPKaqy5-7XvmBRY{amtZNFilpt3WFiAlT=7Mgyni ziMfO{4#X#h;GpJB1d;t_?}YKlR?I^&pb`{8Bu4<~PLn1u*(31*M?JX-tx-ihPBuUtSD4mvc4N^g@!g~%cPplqti(g7k=b~PNX zLz^iz_m+1qAZ-J?f(7s@qya2}6z}W3v0Sl$EGn~)AX9^Y+LA!bBBzqutbSOw9YMAX zn8qvEQ^zy_(+KS!m3xjLVZb^ahUucda)e~Kzie7awhoeZs8A5gz?6)xKQ6Z|B-=V( z-9lHu=*R#js{X5Y>G;W;7m-uzHVV`>P(wsAa^b(r#}|>m0RDkc(%`!BU~Sm{l(UW` zpB`ASZ{#FW4XgprexMw>n7pmwpu-$>5F82>HirkXPA~kTT2by;OlCE(SdeHE9}odS zFCOZd@hbjeF{y{}pMU`hn}{WrIzIfOG{HnEOL)ABDrQjZpOkG&$dyg-B4EQ6st@Xq zQ;+oA_>MD{lHtJ8wrxRRDUy!DIQZ$leE~VpU{5VnuSWfQwD_fjPC}wvr#qzyt%oFj ztoQzXC2QR(;uem6Vh6wbk8BaBTNIOMfdxR~^!SVNViG(BT&{)Br&4#z-My>E3B9z% z_rGin<8Q3#&{!D_78es@!$L0a!D<{3@`H$Y1k!>*03etXKP&5(!Ina?kQAg)!(dQC zt0&6NWn|?53_QZc$_yGIp}0O-J~<5$*rfw<7#k%+21WmQxpx^^Gf*(tAX!_G1PNW^ zpDKqhCzsT~TU1krg+gR1|BG_{aTLBr3XF_duKZ7)87;?||){Q%L>KKqo!33ZfWQ(-&`Gwx5 zacgG|p)$jJK%wY#A5wz-21Rr<@%`@5%m%{UwtzY(;QWNBujub6lgEIgf9+_pegIjE z5rG-P*#mI8E6ea0q_WBiH4)TO!#l*zysKPw47p+0WdgI2f@E^0f`4~^q+kXwRVBY) zt~{2k9JbK5@RCvh0f$rOuj+TT#!Z4RMNn;2k_e(N_jlWO;AoLGD(Yc4MsF#?VoWli4v8dND$~2(pu8LoY!^MnDH7$jR zq0lM-IZ#`BU4Px!NgIVJaM}y*7}_LwzWi8!Q`dS-+4fL1y%Szgwonh)8$h@(yBTq_ zlY!9%tG08;!Q{*z^*@Nv-(^sJUc<>78VZ6K(WztAE$H<*{FgTcXYf7C4fiT=ss)(`Kg z<{@dW!$>R zkc}`I;PNo|Hc)8{guU!AL^lW!+B$GV!2^tQ`L1{$#z%+pYf^dKx`&auL z=UXz-ppqkylYoAPLFCn^k)0z)poIs+<*nZC8O?fzT{Pw;n-&_ZmXSDoq8avlcWDo-AcUA6QN7gg|S&(BK0XohySoxRm zbo5z1TK-uGDUCxgLo4~=uY27&TZ*4Xj_O?CLxvz| z@K6^s)>n z0XdVA3)tnseziXs9WjQy{rnwxu^_%&AeGRrcJALume(Kz5Xf*p0kb;bv&|+XI(#J&QBa@_a4tea z*}93$sj>b*01W_w8i8aiS8ak81^Yq(YS-exHD#;I9h=Awcu*8-1!w_+1>UI2)MmnK iXsixJkzt)qY+1Q{GdXwmfj6Bj#=)XnP33B)j{aY+dNN=D delta 96011 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 diff --git a/polkadot/runtime/wasm/target/wasm32-unknown-unknown/release/polkadot_runtime.wasm b/polkadot/runtime/wasm/target/wasm32-unknown-unknown/release/polkadot_runtime.wasm index 1094d6dcdd7e09401e1834e914fa4f64eb45c6e4..dc9228ec89b6adaee841de79f3b259bba2c79df9 100755 GIT binary patch delta 141795 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 UnE&EfYv29m1Nr98pE-2@e;0l%EC2ui delta 141352 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 bl7}<~rV!KHlFHdSamg>`tGj*V{Qds`d=im? diff --git a/polkadot/validation/src/attestation_service.rs b/polkadot/validation/src/attestation_service.rs index 0df832921e..6593454cde 100644 --- a/polkadot/validation/src/attestation_service.rs +++ b/polkadot/validation/src/attestation_service.rs @@ -42,7 +42,7 @@ use tokio::runtime::TaskExecutor; use tokio::runtime::current_thread::Runtime as LocalRuntime; use tokio::timer::Interval; -use super::{Network, Collators, TableRouter}; +use super::{Network, Collators}; /// Gets a list of the candidates in a block. pub(crate) fn fetch_candidates>(client: &P, block: &BlockId) @@ -117,7 +117,6 @@ pub(crate) fn start( P::Api: ParachainHost + Core + BlockBuilder, N: Network + Send + Sync + 'static, N::TableRouter: Send + 'static, - <::FetchIncoming as IntoFuture>::Future: Send + 'static, ::Future: Send + 'static, { const TIMER_DELAY: Duration = Duration::from_secs(5); diff --git a/polkadot/validation/src/collation.rs b/polkadot/validation/src/collation.rs index f260274f50..7c06296d24 100644 --- a/polkadot/validation/src/collation.rs +++ b/polkadot/validation/src/collation.rs @@ -23,10 +23,12 @@ use std::sync::Arc; use polkadot_primitives::{Block, Hash, BlockId, parachain::CollatorId}; use polkadot_primitives::parachain::{Id as ParaId, Collation, Extrinsic, OutgoingMessage}; -use polkadot_primitives::parachain::{CandidateReceipt, ParachainHost}; +use polkadot_primitives::parachain::{ + ConsolidatedIngress, ConsolidatedIngressRoots, CandidateReceipt, ParachainHost, +}; use runtime_primitives::traits::ProvideRuntimeApi; use parachain::{wasm_executor::{self, ExternalitiesError}, MessageRef}; -use super::Incoming; +use error_chain::bail; use futures::prelude::*; @@ -60,7 +62,6 @@ pub struct CollationFetch { relay_parent_hash: Hash, relay_parent: BlockId, collators: C, - incoming: Incoming, live_fetch: Option<::Future>, client: Arc

, } @@ -72,7 +73,6 @@ impl CollationFetch { relay_parent_hash: Hash, collators: C, client: Arc

, - incoming: Incoming, ) -> Self { CollationFetch { relay_parent: BlockId::hash(relay_parent_hash), @@ -81,7 +81,6 @@ impl CollationFetch { client, parachain, live_fetch: None, - incoming, } } @@ -104,7 +103,7 @@ impl Future for CollationFetch fn poll(&mut self) -> Poll<(Collation, Extrinsic), C::Error> { loop { - let x = { + let collation = { let parachain = self.parachain.clone(); let (r, c) = (self.relay_parent_hash, &self.collators); let poll = self.live_fetch @@ -114,16 +113,18 @@ impl Future for CollationFetch try_ready!(poll) }; - match validate_collation(&*self.client, &self.relay_parent, &x, &self.incoming) { + let res = validate_collation(&*self.client, &self.relay_parent, &collation); + + match res { Ok(e) => { - return Ok(Async::Ready((x, e))) + return Ok(Async::Ready((collation, e))) } Err(e) => { debug!("Failed to validate parachain due to API error: {}", e); // just continue if we got a bad collation or failed to validate self.live_fetch = None; - self.collators.note_bad_collator(x.receipt.collator) + self.collators.note_bad_collator(collation.receipt.collator) } } } @@ -145,15 +146,33 @@ error_chain! { display("Collated for inactive parachain: {:?}", id), } EgressRootMismatch(id: ParaId, expected: Hash, got: Hash) { - description("Got unexpected egress route."), + description("Got unexpected egress root."), display( - "Got unexpected egress route to {:?}. (expected: {:?}, got {:?})", + "Got unexpected egress root to {:?}. (expected: {:?}, got {:?})", id, expected, got ), } - MissingEgressRoute(expected: Option, got: Option) { - description("Missing or extra egress route."), - display("Missing or extra egress route. (expected: {:?}, got {:?})", expected, got), + IngressRootMismatch(id: ParaId, expected: Hash, got: Hash) { + description("Got unexpected ingress root."), + display( + "Got unexpected ingress root to {:?}. (expected: {:?}, got {:?})", + id, expected, got + ), + } + IngressChainMismatch(expected: ParaId, got: ParaId) { + description("Got ingress from wrong chain"), + display( + "Got ingress from wrong chain. (expected: {:?}, got {:?})", + expected, got + ), + } + IngressCanonicalityMismatch(expected: usize, got: usize) { + description("Ingress canonicality mismatch."), + display("Got data for {} roots, expected {}", got, expected), + } + MissingEgressRoot(expected: Option, got: Option) { + description("Missing or extra egress root."), + display("Missing or extra egress root. (expected: {:?}, got {:?})", expected, got), } WrongHeadData(expected: Vec, got: Vec) { description("Parachain validation produced wrong head data."), @@ -206,11 +225,11 @@ fn check_extrinsic( let mut expected_egress_roots = expected_egress_roots.iter(); while let Some(batch_target) = messages_iter.peek().map(|o| o.target) { let expected_root = match expected_egress_roots.next() { - None => return Err(ErrorKind::MissingEgressRoute(Some(batch_target), None).into()), + None => return Err(ErrorKind::MissingEgressRoot(Some(batch_target), None).into()), Some(&(id, ref root)) => if id == batch_target { root } else { - return Err(ErrorKind::MissingEgressRoute(Some(batch_target), Some(id)).into()); + return Err(ErrorKind::MissingEgressRoot(Some(batch_target), Some(id)).into()); } }; @@ -234,7 +253,7 @@ fn check_extrinsic( // also check that there are no more additional expected roots. if let Some((next_target, _)) = expected_egress_roots.next() { - return Err(ErrorKind::MissingEgressRoute(None, Some(*next_target)).into()); + return Err(ErrorKind::MissingEgressRoot(None, Some(*next_target)).into()); } } @@ -277,16 +296,38 @@ impl Externalities { } } +/// Validate incoming messages against expected roots. +pub fn validate_incoming( + roots: &ConsolidatedIngressRoots, + ingress: &ConsolidatedIngress, +) -> Result<(), Error> { + if roots.0.len() != ingress.0.len() { + bail!(ErrorKind::IngressCanonicalityMismatch(roots.0.len(), ingress.0.len())); + } + + let all_iter = roots.0.iter().zip(&ingress.0); + for ((expected_id, root), (got_id, messages)) in all_iter { + if expected_id != got_id { + bail!(ErrorKind::IngressChainMismatch(*expected_id, *got_id)); + } + + let got_root = message_queue_root(messages.iter().map(|msg| &msg.0[..])); + if &got_root != root { + bail!(ErrorKind::IngressRootMismatch(*expected_id, *root, got_root)); + } + } + + Ok(()) +} + /// Check whether a given collation is valid. Returns `Ok` on success, error otherwise. /// /// This assumes that basic validity checks have been done: /// - Block data hash is the same as linked in candidate receipt. -/// - incoming messages have been validated against canonical ingress roots pub fn validate_collation

( client: &P, relay_parent: &BlockId, collation: &Collation, - incoming: &Incoming, ) -> Result where P: ProvideRuntimeApi, P::Api: ParachainHost, @@ -301,10 +342,14 @@ pub fn validate_collation

( let chain_head = api.parachain_head(relay_parent, para_id)? .ok_or_else(|| ErrorKind::InactiveParachain(para_id))?; + let roots = api.ingress(relay_parent, para_id)? + .ok_or_else(|| ErrorKind::InactiveParachain(para_id))?; + validate_incoming(&roots, &collation.pov.ingress)?; + let params = ValidationParams { parent_head: chain_head, - block_data: collation.block_data.0.clone(), - ingress: incoming.iter() + block_data: collation.pov.block_data.0.clone(), + ingress: collation.pov.ingress.0.iter() .flat_map(|&(source, ref messages)| { messages.iter().map(move |msg| IncomingMessage { source, diff --git a/polkadot/validation/src/lib.rs b/polkadot/validation/src/lib.rs index 0597f8cfe2..6ffdace746 100644 --- a/polkadot/validation/src/lib.rs +++ b/polkadot/validation/src/lib.rs @@ -78,8 +78,9 @@ use extrinsic_store::Store as ExtrinsicStore; use parking_lot::Mutex; use polkadot_primitives::{Hash, Block, BlockId, BlockNumber, Header, SessionKey}; use polkadot_primitives::parachain::{ - Id as ParaId, Chain, DutyRoster, BlockData, Extrinsic as ParachainExtrinsic, CandidateReceipt, - ParachainHost, AttestedCandidate, Statement as PrimitiveStatement, Message, OutgoingMessage, CollatorSignature + Id as ParaId, Chain, DutyRoster, Extrinsic as ParachainExtrinsic, CandidateReceipt, + ParachainHost, AttestedCandidate, Statement as PrimitiveStatement, Message, OutgoingMessage, CollatorSignature, + Collation, PoVBlock, }; use primitives::{Pair, ed25519}; use runtime_primitives::{traits::{ProvideRuntimeApi, Header as HeaderT}, ApplyError}; @@ -97,7 +98,9 @@ use runtime_aura::timestamp::TimestampInherentData; use ed25519::Public as AuthorityId; -pub use self::collation::{validate_collation, message_queue_root, egress_roots, Collators}; +pub use self::collation::{ + validate_collation, validate_incoming, message_queue_root, egress_roots, Collators, +}; pub use self::error::{ErrorKind, Error}; pub use self::shared_table::{ SharedTable, ParachainWork, PrimedParachainWork, Validated, Statement, SignedStatement, @@ -146,24 +149,14 @@ pub trait TableRouter: Clone { /// Errors when fetching data from the network. type Error: std::fmt::Debug; /// Future that resolves when candidate data is fetched. - type FetchCandidate: IntoFuture; - /// Fetch incoming messages for a candidate. - type FetchIncoming: IntoFuture; + type FetchValidationProof: IntoFuture; /// Call with local candidate data. This will make the data available on the network, /// and sign, import, and broadcast a statement about the candidate. - fn local_candidate(&self, candidate: CandidateReceipt, block_data: BlockData, extrinsic: ParachainExtrinsic); + fn local_collation(&self, collation: Collation, extrinsic: ParachainExtrinsic); - /// Fetch block data for a specific candidate. - fn fetch_block_data(&self, candidate: &CandidateReceipt) -> Self::FetchCandidate; - - /// Fetches the incoming message data to a parachain from the network. Incoming data should be - /// checked. - /// - /// The `ParachainHost::ingress` function can be used to fetch incoming roots, - /// and the `message_queue_root` function can be used to check that messages actually have - /// expected root. - fn fetch_incoming(&self, id: ParaId) -> Self::FetchIncoming; + /// Fetch validation proof for a specific candidate. + fn fetch_pov_block(&self, candidate: &CandidateReceipt) -> Self::FetchValidationProof; } /// A long-lived network which can create parachain statement and BFT message routing processes on demand. @@ -291,7 +284,6 @@ impl ParachainValidation where P::Api: ParachainHost + BlockBuilderApi, ::Future: Send + 'static, N::TableRouter: Send + 'static, - <::FetchIncoming as IntoFuture>::Future: Send + 'static, ::Future: Send + 'static, { /// Get an attestation table for given parent hash. @@ -400,23 +392,13 @@ impl ParachainValidation where let extrinsic_store = self.extrinsic_store.clone(); let with_router = move |router: N::TableRouter| { - let fetch_incoming = router.fetch_incoming(validation_para) - .into_future() - .map_err(|e| format!("{:?}", e)); - - // fetch incoming messages to our parachain from network and - // then fetch a local collation. - let collation_work = fetch_incoming - .map_err(|e| String::clone(&e)) - .and_then(move |incoming| { - CollationFetch::new( - validation_para, - relay_parent, - collators, - client, - incoming, - ).map_err(|e| format!("{:?}", e)) - }); + // fetch a local collation from connected collators. + let collation_work = CollationFetch::new( + validation_para, + relay_parent, + collators, + client, + ); collation_work.then(move |result| match result { Ok((collation, extrinsic)) => { @@ -424,7 +406,7 @@ impl ParachainValidation where relay_parent, parachain_id: collation.receipt.parachain_index, candidate_hash: collation.receipt.hash(), - block_data: collation.block_data.clone(), + block_data: collation.pov.block_data.clone(), extrinsic: Some(extrinsic.clone()), }); @@ -432,11 +414,7 @@ impl ParachainValidation where Ok(()) => { // TODO: https://github.com/paritytech/polkadot/issues/51 // Erasure-code and provide merkle branches. - router.local_candidate( - collation.receipt, - collation.block_data, - extrinsic, - ) + router.local_collation(collation, extrinsic); } Err(e) => warn!( target: "validation", @@ -448,7 +426,7 @@ impl ParachainValidation where Ok(()) } Err(e) => { - warn!(target: "validation", "Failed to collate candidate: {}", e); + warn!(target: "validation", "Failed to collate candidate: {:?}", e); Ok(()) } }) @@ -493,7 +471,6 @@ impl ProposerFactory where P::Api: ParachainHost + Core + BlockBuilderApi, N: Network + Send + Sync + 'static, N::TableRouter: Send + 'static, - <::FetchIncoming as IntoFuture>::Future: Send + 'static, ::Future: Send + 'static, TxApi: PoolChainApi, { @@ -543,7 +520,6 @@ impl consensus::Environment for ProposerFactory + BlockBuilderApi, ::Future: Send + 'static, N::TableRouter: Send + 'static, - <::FetchIncoming as IntoFuture>::Future: Send + 'static, ::Future: Send + 'static, { type Proposer = Proposer; diff --git a/polkadot/validation/src/shared_table/mod.rs b/polkadot/validation/src/shared_table/mod.rs index 92e420d355..2f54331a7e 100644 --- a/polkadot/validation/src/shared_table/mod.rs +++ b/polkadot/validation/src/shared_table/mod.rs @@ -24,14 +24,14 @@ use extrinsic_store::{Data, Store as ExtrinsicStore}; use table::{self, Table, Context as TableContextTrait}; use polkadot_primitives::{Block, BlockId, Hash, SessionKey}; use polkadot_primitives::parachain::{ - Id as ParaId, BlockData, Collation, Extrinsic, CandidateReceipt, - AttestedCandidate, ParachainHost + Id as ParaId, Collation, Extrinsic, CandidateReceipt, + AttestedCandidate, ParachainHost, PoVBlock }; use parking_lot::Mutex; -use futures::{future, prelude::*}; +use futures::prelude::*; -use super::{GroupInfo, Incoming, TableRouter}; +use super::{GroupInfo, TableRouter}; use self::includable::IncludabilitySender; use primitives::{ed25519, Pair}; use runtime_primitives::traits::ProvideRuntimeApi; @@ -75,8 +75,8 @@ impl TableContext { } pub(crate) enum Validation { - Valid(BlockData, Extrinsic), - Invalid(BlockData), // should take proof. + Valid(PoVBlock, Extrinsic), + Invalid(PoVBlock), // should take proof. } enum ValidationWork { @@ -121,10 +121,9 @@ impl SharedTableInner { context: &TableContext, router: &R, statement: table::SignedStatement, - ) -> Option::Future, - ::Future, - >>> { + ) -> Option::Future, + >> { let summary = match self.table.import_statement(context, statement) { Some(summary) => summary, None => return None, @@ -149,7 +148,6 @@ impl SharedTableInner { }; let work = if do_validation { - let fetch_incoming = router.fetch_incoming(summary.group_id); match self.table.get_candidate(&digest) { None => { let message = format!( @@ -163,11 +161,11 @@ impl SharedTableInner { None } Some(candidate) => { - let fetch_block_data = router.fetch_block_data(candidate).into_future(); + let fetch = router.fetch_pov_block(candidate).into_future(); Some(Work { candidate_receipt: candidate.clone(), - fetch: fetch_block_data.join(fetch_incoming), + fetch, }) } } @@ -202,19 +200,19 @@ pub struct Validated { impl Validated { /// Note that we've validated a candidate with given hash and it is bad. - pub fn known_bad(hash: Hash, block_data: BlockData) -> Self { + pub fn known_bad(hash: Hash, collation: PoVBlock) -> Self { Validated { statement: GenericStatement::Invalid(hash), - result: Validation::Invalid(block_data), + result: Validation::Invalid(collation), } } /// Note that we've validated a candidate with given hash and it is good. /// Extrinsic data required. - pub fn known_good(hash: Hash, block_data: BlockData, extrinsic: Extrinsic) -> Self { + pub fn known_good(hash: Hash, collation: PoVBlock, extrinsic: Extrinsic) -> Self { Validated { statement: GenericStatement::Valid(hash), - result: Validation::Valid(block_data, extrinsic), + result: Validation::Valid(collation, extrinsic), } } @@ -222,17 +220,17 @@ impl Validated { /// Extrinsic data required. pub fn collated_local( receipt: CandidateReceipt, - block_data: BlockData, + collation: PoVBlock, extrinsic: Extrinsic, ) -> Self { Validated { statement: GenericStatement::Candidate(receipt), - result: Validation::Valid(block_data, extrinsic), + result: Validation::Valid(collation, extrinsic), } } - /// Get a reference to the block data. - pub fn block_data(&self) -> &BlockData { + /// Get a reference to the proof-of-validation block. + pub fn pov_block(&self) -> &PoVBlock { match self.result { Validation::Valid(ref b, _) | Validation::Invalid(ref b) => b, } @@ -260,18 +258,17 @@ impl ParachainWork { pub fn prime(self, api: Arc

) -> PrimedParachainWork< Fetch, - impl Send + FnMut(&BlockId, &Collation, &Incoming) -> Result, + impl Send + FnMut(&BlockId, &Collation) -> Result, > where P: Send + Sync + 'static, P::Api: ParachainHost, { - let validate = move |id: &_, collation: &_, incoming: &_| { + let validate = move |id: &_, collation: &_| { let res = ::collation::validate_collation( &*api, id, collation, - incoming, ); match res { @@ -288,7 +285,7 @@ impl ParachainWork { /// Prime the parachain work with a custom validation function. pub fn prime_with(self, validate: F) -> PrimedParachainWork - where F: FnMut(&BlockId, &Collation, &Incoming) -> Result + where F: FnMut(&BlockId, &Collation) -> Result { PrimedParachainWork { inner: self, validate } } @@ -307,8 +304,8 @@ pub struct PrimedParachainWork { impl Future for PrimedParachainWork where - Fetch: Future, - F: FnMut(&BlockId, &Collation, &Incoming) -> Result, + Fetch: Future, + F: FnMut(&BlockId, &Collation) -> Result, Err: From<::std::io::Error>, { type Item = Validated; @@ -318,11 +315,10 @@ impl Future for PrimedParachainWork let work = &mut self.inner.work; let candidate = &work.candidate_receipt; - let (block, incoming) = try_ready!(work.fetch.poll()); + let pov_block = try_ready!(work.fetch.poll()); let validation_res = (self.validate)( &BlockId::hash(self.inner.relay_parent), - &Collation { block_data: block.clone(), receipt: candidate.clone() }, - &incoming, + &Collation { pov: pov_block.clone(), receipt: candidate.clone() }, ); let candidate_hash = candidate.hash(); @@ -333,20 +329,20 @@ impl Future for PrimedParachainWork let (validity_statement, result) = match validation_res { Err(()) => ( GenericStatement::Invalid(candidate_hash), - Validation::Invalid(block), + Validation::Invalid(pov_block), ), Ok(extrinsic) => { self.inner.extrinsic_store.make_available(Data { relay_parent: self.inner.relay_parent, parachain_id: work.candidate_receipt.parachain_index, candidate_hash, - block_data: block.clone(), + block_data: pov_block.block_data.clone(), extrinsic: Some(extrinsic.clone()), })?; ( GenericStatement::Valid(candidate_hash), - Validation::Valid(block, extrinsic) + Validation::Valid(pov_block, extrinsic) ) } }; @@ -431,10 +427,9 @@ impl SharedTable { &self, router: &R, statement: table::SignedStatement, - ) -> Option::Future, - ::Future, - >>> { + ) -> Option::Future, + >> { self.inner.lock().import_remote_statement(&*self.context, router, statement) } @@ -448,10 +443,9 @@ impl SharedTable { where R: TableRouter, I: IntoIterator, - U: ::std::iter::FromIterator::Future, - ::Future, - >>>>, + U: ::std::iter::FromIterator::Future, + >>>, { let mut inner = self.inner.lock(); @@ -547,24 +541,27 @@ mod tests { use super::*; use substrate_keyring::AuthorityKeyring; use primitives::crypto::UncheckedInto; + use polkadot_primitives::parachain::{BlockData, ConsolidatedIngress}; + use futures::future; + + fn pov_block_with_data(data: Vec) -> PoVBlock { + PoVBlock { + block_data: BlockData(data), + ingress: ConsolidatedIngress(Vec::new()), + } + } #[derive(Clone)] struct DummyRouter; impl TableRouter for DummyRouter { type Error = ::std::io::Error; - type FetchCandidate = ::futures::future::FutureResult; - type FetchIncoming = ::futures::future::FutureResult; - - fn local_candidate(&self, _candidate: CandidateReceipt, _block_data: BlockData, _extrinsic: Extrinsic) { + type FetchValidationProof = future::FutureResult; + fn local_collation(&self, _collation: Collation, _extrinsic: Extrinsic) { } - fn fetch_block_data(&self, _candidate: &CandidateReceipt) -> Self::FetchCandidate { - future::ok(BlockData(vec![1, 2, 3, 4, 5])) - } - - fn fetch_incoming(&self, _para_id: ParaId) -> Self::FetchIncoming { - future::ok(Vec::new()) + fn fetch_pov_block(&self, _candidate: &CandidateReceipt) -> Self::FetchValidationProof { + future::ok(pov_block_with_data(vec![1, 2, 3, 4, 5])) } } @@ -675,7 +672,7 @@ mod tests { let store = ExtrinsicStore::new_in_memory(); let relay_parent = [0; 32].into(); let para_id = 5.into(); - let block_data = BlockData(vec![1, 2, 3]); + let pov_block = pov_block_with_data(vec![1, 2, 3]); let candidate = CandidateReceipt { parachain_index: para_id, @@ -693,20 +690,20 @@ mod tests { let producer: ParachainWork> = ParachainWork { work: Work { candidate_receipt: candidate, - fetch: future::ok((block_data.clone(), Vec::new())), + fetch: future::ok(pov_block.clone()), }, relay_parent, extrinsic_store: store.clone(), }; - let validated = producer.prime_with(|_, _, _| Ok(Extrinsic { outgoing_messages: Vec::new() })) + let validated = producer.prime_with(|_, _| Ok(Extrinsic { outgoing_messages: Vec::new() })) .wait() .unwrap(); - assert_eq!(validated.block_data(), &block_data); + assert_eq!(validated.pov_block(), &pov_block); assert_eq!(validated.statement, GenericStatement::Valid(hash)); - assert_eq!(store.block_data(relay_parent, hash).unwrap(), block_data); + assert_eq!(store.block_data(relay_parent, hash).unwrap(), pov_block.block_data); assert!(store.extrinsic(relay_parent, hash).is_some()); } @@ -715,7 +712,7 @@ mod tests { let store = ExtrinsicStore::new_in_memory(); let relay_parent = [0; 32].into(); let para_id = 5.into(); - let block_data = BlockData(vec![1, 2, 3]); + let pov_block = pov_block_with_data(vec![1, 2, 3]); let candidate = CandidateReceipt { parachain_index: para_id, @@ -733,19 +730,19 @@ mod tests { let producer = ParachainWork { work: Work { candidate_receipt: candidate, - fetch: future::ok::<_, ::std::io::Error>((block_data.clone(), Vec::new())), + fetch: future::ok::<_, ::std::io::Error>(pov_block.clone()), }, relay_parent, extrinsic_store: store.clone(), }; - let validated = producer.prime_with(|_, _, _| Ok(Extrinsic { outgoing_messages: Vec::new() })) + let validated = producer.prime_with(|_, _| Ok(Extrinsic { outgoing_messages: Vec::new() })) .wait() .unwrap(); - assert_eq!(validated.block_data(), &block_data); + assert_eq!(validated.pov_block(), &pov_block); - assert_eq!(store.block_data(relay_parent, hash).unwrap(), block_data); + assert_eq!(store.block_data(relay_parent, hash).unwrap(), pov_block.block_data); assert!(store.extrinsic(relay_parent, hash).is_some()); } @@ -815,7 +812,7 @@ mod tests { let mut groups = HashMap::new(); let para_id = ParaId::from(1); - let block_data = BlockData(vec![1, 2, 3]); + let pov_block = pov_block_with_data(vec![1, 2, 3]); let extrinsic = Extrinsic { outgoing_messages: Vec::new() }; let parent_hash = Default::default(); @@ -851,7 +848,7 @@ mod tests { let hash = candidate.hash(); let signed_statement = shared_table.import_validated(Validated::collated_local( candidate, - block_data, + pov_block, extrinsic, ));