From 853a9df770de1553eca2b244f3a053361da3a16d Mon Sep 17 00:00:00 2001 From: Andrei Eres Date: Tue, 25 Nov 2025 16:04:07 +0100 Subject: [PATCH 01/81] Extend submission result types --- substrate/client/rpc-api/src/statement/mod.rs | 19 ++++++++++++++++++- substrate/client/rpc/src/statement/mod.rs | 15 ++++++++------- 2 files changed, 26 insertions(+), 8 deletions(-) diff --git a/substrate/client/rpc-api/src/statement/mod.rs b/substrate/client/rpc-api/src/statement/mod.rs index 19ef5503fdeab..77bb4e4b8f29a 100644 --- a/substrate/client/rpc-api/src/statement/mod.rs +++ b/substrate/client/rpc-api/src/statement/mod.rs @@ -19,10 +19,27 @@ //! Substrate Statement Store RPC API. use jsonrpsee::{core::RpcResult, proc_macros::rpc}; +use serde::{Deserialize, Serialize}; use sp_core::Bytes; pub mod error; +/// Result of submitting a statement to the store. +#[derive(Debug, Clone, Serialize, Deserialize)] +#[serde(tag = "status", rename_all = "camelCase")] +pub enum StatementSubmitResult { + /// Statement was accepted as new. + New, + /// Statement was already known. + Known, + /// Statement was already known but has expired. + KnownExpired, + /// Statement was rejected because the store is full or priority is too low. + Ignored, + /// Statement failed validation. + Bad { reason: String }, +} + /// Substrate statement RPC API #[rpc(client, server)] pub trait StatementApi { @@ -87,7 +104,7 @@ pub trait StatementApi { /// Submit a pre-encoded statement. #[method(name = "statement_submit")] - fn submit(&self, encoded: Bytes) -> RpcResult<()>; + fn submit(&self, encoded: Bytes) -> RpcResult; /// Remove a statement from the store. #[method(name = "statement_remove")] diff --git a/substrate/client/rpc/src/statement/mod.rs b/substrate/client/rpc/src/statement/mod.rs index 2d76876293067..81fbd09adf79b 100644 --- a/substrate/client/rpc/src/statement/mod.rs +++ b/substrate/client/rpc/src/statement/mod.rs @@ -24,7 +24,7 @@ use jsonrpsee::{ Extensions, }; /// Re-export the API for backward compatibility. -pub use sc_rpc_api::statement::{error::Error, StatementApiServer}; +pub use sc_rpc_api::statement::{error::Error, StatementApiServer, StatementSubmitResult}; use sp_core::Bytes; use sp_statement_store::{StatementSource, SubmitResult}; use std::sync::Arc; @@ -123,17 +123,18 @@ impl StatementApiServer for StatementStore { .collect()) } - fn submit(&self, encoded: Bytes) -> RpcResult<()> { + fn submit(&self, encoded: Bytes) -> RpcResult { let statement = Decode::decode(&mut &*encoded) .map_err(|e| Error::StatementStore(format!("Error decoding statement: {:?}", e)))?; match self.store.submit(statement, StatementSource::Local) { - SubmitResult::New(_) | SubmitResult::Known => Ok(()), + SubmitResult::New(_) => Ok(StatementSubmitResult::New), + SubmitResult::Known => Ok(StatementSubmitResult::Known), // `KnownExpired` should not happen. Expired statements submitted with // `StatementSource::Rpc` should be renewed. - SubmitResult::KnownExpired => - Err(Error::StatementStore("Submitted an expired statement.".into()).into()), - SubmitResult::Bad(e) => Err(Error::StatementStore(e.into()).into()), - SubmitResult::Ignored => Err(Error::StatementStore("Store is full.".into()).into()), + SubmitResult::KnownExpired => Ok(StatementSubmitResult::KnownExpired), + SubmitResult::Ignored => Ok(StatementSubmitResult::Ignored), + SubmitResult::Bad(reason) => + Ok(StatementSubmitResult::Bad { reason: reason.to_string() }), SubmitResult::InternalError(e) => Err(Error::StatementStore(e.to_string()).into()), } } From c6d8e8794280bb6f5d8da9db9d3652289bd1873f Mon Sep 17 00:00:00 2001 From: Andrei Eres Date: Fri, 28 Nov 2025 12:14:49 +0100 Subject: [PATCH 02/81] Remove NetworkPriority (which was never used) --- substrate/client/network/statement/src/lib.rs | 13 ++----- substrate/client/rpc/src/statement/mod.rs | 2 +- .../benches/statement_store.rs | 4 +-- substrate/client/statement-store/src/lib.rs | 36 ++++++------------- .../primitives/statement-store/src/lib.rs | 4 +-- .../statement-store/src/runtime_api.rs | 2 +- .../statement-store/src/store_api.rs | 11 +----- 7 files changed, 19 insertions(+), 53 deletions(-) diff --git a/substrate/client/network/statement/src/lib.rs b/substrate/client/network/statement/src/lib.rs index 4b39492062b55..1945ef7c92d9e 100644 --- a/substrate/client/network/statement/src/lib.rs +++ b/substrate/client/network/statement/src/lib.rs @@ -49,9 +49,7 @@ use sc_network_common::role::ObservedRole; use sc_network_sync::{SyncEvent, SyncEventStream}; use sc_network_types::PeerId; use sp_runtime::traits::Block as BlockT; -use sp_statement_store::{ - Hash, NetworkPriority, Statement, StatementSource, StatementStore, SubmitResult, -}; +use sp_statement_store::{Hash, Statement, StatementSource, StatementStore, SubmitResult}; use std::{ collections::{hash_map::Entry, HashMap, HashSet}, iter, @@ -78,13 +76,11 @@ mod rep { /// Reputation change when a peer sends us any statement that is not invalid. pub const ANY_STATEMENT_REFUND: Rep = Rep::new(1 << 4, "Any statement (refund)"); /// Reputation change when a peer sends us an statement that we didn't know about. - pub const GOOD_STATEMENT: Rep = Rep::new(1 << 7, "Good statement"); + pub const GOOD_STATEMENT: Rep = Rep::new(1 << 8, "Good statement"); /// Reputation change when a peer sends us a bad statement. pub const BAD_STATEMENT: Rep = Rep::new(-(1 << 12), "Bad statement"); /// Reputation change when a peer sends us a duplicate statement. pub const DUPLICATE_STATEMENT: Rep = Rep::new(-(1 << 7), "Duplicate statement"); - /// Reputation change when a peer sends us particularly useful statement - pub const EXCELLENT_STATEMENT: Rep = Rep::new(1 << 8, "High priority statement"); } const LOG_TARGET: &str = "statement-gossip"; @@ -503,10 +499,7 @@ where fn on_handle_statement_import(&mut self, who: PeerId, import: &SubmitResult) { match import { - SubmitResult::New(NetworkPriority::High) => - self.network.report_peer(who, rep::EXCELLENT_STATEMENT), - SubmitResult::New(NetworkPriority::Low) => - self.network.report_peer(who, rep::GOOD_STATEMENT), + SubmitResult::New => self.network.report_peer(who, rep::GOOD_STATEMENT), SubmitResult::Known => self.network.report_peer(who, rep::ANY_STATEMENT_REFUND), SubmitResult::KnownExpired => {}, SubmitResult::Ignored => {}, diff --git a/substrate/client/rpc/src/statement/mod.rs b/substrate/client/rpc/src/statement/mod.rs index 81fbd09adf79b..ca9454e6ec42c 100644 --- a/substrate/client/rpc/src/statement/mod.rs +++ b/substrate/client/rpc/src/statement/mod.rs @@ -127,7 +127,7 @@ impl StatementApiServer for StatementStore { let statement = Decode::decode(&mut &*encoded) .map_err(|e| Error::StatementStore(format!("Error decoding statement: {:?}", e)))?; match self.store.submit(statement, StatementSource::Local) { - SubmitResult::New(_) => Ok(StatementSubmitResult::New), + SubmitResult::New => Ok(StatementSubmitResult::New), SubmitResult::Known => Ok(StatementSubmitResult::Known), // `KnownExpired` should not happen. Expired statements submitted with // `StatementSource::Rpc` should be renewed. diff --git a/substrate/client/statement-store/benches/statement_store.rs b/substrate/client/statement-store/benches/statement_store.rs index 6d8cc3ca51c26..c369ca3e6d046 100644 --- a/substrate/client/statement-store/benches/statement_store.rs +++ b/substrate/client/statement-store/benches/statement_store.rs @@ -182,7 +182,7 @@ fn bench_submit(c: &mut Criterion) { s.spawn(move || { for statement in thread_statements { let result = store.submit(statement, StatementSource::Local); - assert!(matches!(result, SubmitResult::New(_))); + assert!(matches!(result, SubmitResult::New)); } }); } @@ -383,7 +383,7 @@ fn bench_mixed_workload(c: &mut Criterion) { for statement in thread_statements { // Submit a statement let result = store.submit(statement, StatementSource::Local); - assert!(matches!(result, SubmitResult::New(_))); + assert!(matches!(result, SubmitResult::New)); // Query broadcasts let _ = store.broadcasts(&topics); diff --git a/substrate/client/statement-store/src/lib.rs b/substrate/client/statement-store/src/lib.rs index d074af1ed315b..b87f849d5f4b0 100644 --- a/substrate/client/statement-store/src/lib.rs +++ b/substrate/client/statement-store/src/lib.rs @@ -63,8 +63,8 @@ use sp_statement_store::{ runtime_api::{ InvalidStatement, StatementSource, StatementStoreExt, ValidStatement, ValidateStatement, }, - AccountId, BlockHash, Channel, DecryptionKey, Hash, NetworkPriority, Proof, Result, Statement, - SubmitResult, Topic, + AccountId, BlockHash, Channel, DecryptionKey, Hash, Proof, Result, Statement, SubmitResult, + Topic, }; use std::{ collections::{BTreeMap, HashMap, HashSet}, @@ -986,9 +986,8 @@ impl StatementStore for Store { } } // Release index lock self.metrics.report(|metrics| metrics.submitted_statements.inc()); - let network_priority = NetworkPriority::High; log::trace!(target: LOG_TARGET, "Statement submitted: {:?}", HexDisplay::from(&hash)); - SubmitResult::New(network_priority) + SubmitResult::New } /// Remove a statement by hash. @@ -1217,15 +1216,9 @@ mod tests { fn submit_one() { let (store, _temp) = test_store(); let statement0 = signed_statement(0); - assert_eq!( - store.submit(statement0, StatementSource::Network), - SubmitResult::New(NetworkPriority::High) - ); + assert_eq!(store.submit(statement0, StatementSource::Network), SubmitResult::New); let unsigned = statement(0, 1, None, 0); - assert_eq!( - store.submit(unsigned, StatementSource::Network), - SubmitResult::New(NetworkPriority::High) - ); + assert_eq!(store.submit(unsigned, StatementSource::Network), SubmitResult::New); } #[test] @@ -1234,18 +1227,9 @@ mod tests { let statement0 = signed_statement(0); let statement1 = signed_statement(1); let statement2 = signed_statement(2); - assert_eq!( - store.submit(statement0.clone(), StatementSource::Network), - SubmitResult::New(NetworkPriority::High) - ); - assert_eq!( - store.submit(statement1.clone(), StatementSource::Network), - SubmitResult::New(NetworkPriority::High) - ); - assert_eq!( - store.submit(statement2.clone(), StatementSource::Network), - SubmitResult::New(NetworkPriority::High) - ); + assert_eq!(store.submit(statement0.clone(), StatementSource::Network), SubmitResult::New); + assert_eq!(store.submit(statement1.clone(), StatementSource::Network), SubmitResult::New); + assert_eq!(store.submit(statement2.clone(), StatementSource::Network), SubmitResult::New); assert_eq!(store.statements().unwrap().len(), 3); assert_eq!(store.broadcasts(&[]).unwrap().len(), 3); assert_eq!(store.statement(&statement1.hash()).unwrap(), Some(statement1.clone())); @@ -1344,7 +1328,7 @@ mod tests { store.index.write().options.max_total_size = 3000; let source = StatementSource::Network; - let ok = SubmitResult::New(NetworkPriority::High); + let ok = SubmitResult::New; let ignored = SubmitResult::Ignored; // Account 1 (limit = 1 msg, 1000 bytes) @@ -1412,7 +1396,7 @@ mod tests { statement(42, 1, Some(1), crate::MAX_STATEMENT_SIZE - 500), StatementSource::Local ), - SubmitResult::New(NetworkPriority::High) + SubmitResult::New ); assert_eq!( diff --git a/substrate/primitives/statement-store/src/lib.rs b/substrate/primitives/statement-store/src/lib.rs index a1d4a5e9d8d52..b7cde789d287c 100644 --- a/substrate/primitives/statement-store/src/lib.rs +++ b/substrate/primitives/statement-store/src/lib.rs @@ -46,9 +46,7 @@ pub type Channel = [u8; 32]; pub const MAX_TOPICS: usize = 4; #[cfg(feature = "std")] -pub use store_api::{ - Error, NetworkPriority, Result, StatementSource, StatementStore, SubmitResult, -}; +pub use store_api::{Error, Result, StatementSource, StatementStore, SubmitResult}; #[cfg(feature = "std")] mod ecies; diff --git a/substrate/primitives/statement-store/src/runtime_api.rs b/substrate/primitives/statement-store/src/runtime_api.rs index fdbe03dbc7952..7ff7814acdde2 100644 --- a/substrate/primitives/statement-store/src/runtime_api.rs +++ b/substrate/primitives/statement-store/src/runtime_api.rs @@ -153,7 +153,7 @@ pub trait StatementStore { ) -> ReturnAs { if let Some(StatementStoreExt(store)) = self.extension::() { match store.submit(statement, StatementSource::Chain) { - crate::SubmitResult::New(_) => SubmitResult::OkNew, + crate::SubmitResult::New => SubmitResult::OkNew, crate::SubmitResult::Known => SubmitResult::OkKnown, crate::SubmitResult::Ignored => SubmitResult::Full, // This should not happen for `StatementSource::Chain`. An existing statement will diff --git a/substrate/primitives/statement-store/src/store_api.rs b/substrate/primitives/statement-store/src/store_api.rs index f799a39c00246..a329e5cea3898 100644 --- a/substrate/primitives/statement-store/src/store_api.rs +++ b/substrate/primitives/statement-store/src/store_api.rs @@ -32,20 +32,11 @@ pub enum Error { Runtime, } -#[derive(Debug, PartialEq, Eq)] -/// Network propagation priority. -pub enum NetworkPriority { - /// High priority. Statement should be broadcast to all peers. - High, - /// Low priority. - Low, -} - /// Statement submission outcome #[derive(Debug, Eq, PartialEq)] pub enum SubmitResult { /// Accepted as new with given score - New(NetworkPriority), + New, /// Known statement Known, /// Known statement that's already expired. From 1cc5ae9dcbfb37b3b81492d552230b6d70c0da05 Mon Sep 17 00:00:00 2001 From: Andrei Eres Date: Fri, 28 Nov 2025 12:43:15 +0100 Subject: [PATCH 03/81] Add Invalid result --- substrate/client/network/statement/src/lib.rs | 6 ++-- substrate/client/rpc-api/src/statement/mod.rs | 19 +++++++++++- substrate/client/rpc/src/statement/mod.rs | 18 +++++++++-- substrate/client/statement-store/src/lib.rs | 6 ++-- .../primitives/statement-store/src/lib.rs | 2 +- .../statement-store/src/runtime_api.rs | 2 +- .../statement-store/src/store_api.rs | 30 ++++++++++++++++++- 7 files changed, 70 insertions(+), 13 deletions(-) diff --git a/substrate/client/network/statement/src/lib.rs b/substrate/client/network/statement/src/lib.rs index 1945ef7c92d9e..e2678238329e7 100644 --- a/substrate/client/network/statement/src/lib.rs +++ b/substrate/client/network/statement/src/lib.rs @@ -77,8 +77,8 @@ mod rep { pub const ANY_STATEMENT_REFUND: Rep = Rep::new(1 << 4, "Any statement (refund)"); /// Reputation change when a peer sends us an statement that we didn't know about. pub const GOOD_STATEMENT: Rep = Rep::new(1 << 8, "Good statement"); - /// Reputation change when a peer sends us a bad statement. - pub const BAD_STATEMENT: Rep = Rep::new(-(1 << 12), "Bad statement"); + /// Reputation change when a peer sends us an invalid statement. + pub const INVALID_STATEMENT: Rep = Rep::new(-(1 << 12), "Invalid statement"); /// Reputation change when a peer sends us a duplicate statement. pub const DUPLICATE_STATEMENT: Rep = Rep::new(-(1 << 7), "Duplicate statement"); } @@ -503,7 +503,7 @@ where SubmitResult::Known => self.network.report_peer(who, rep::ANY_STATEMENT_REFUND), SubmitResult::KnownExpired => {}, SubmitResult::Ignored => {}, - SubmitResult::Bad(_) => self.network.report_peer(who, rep::BAD_STATEMENT), + SubmitResult::Invalid(_) => self.network.report_peer(who, rep::INVALID_STATEMENT), SubmitResult::InternalError(_) => {}, } } diff --git a/substrate/client/rpc-api/src/statement/mod.rs b/substrate/client/rpc-api/src/statement/mod.rs index 77bb4e4b8f29a..b8819a907712a 100644 --- a/substrate/client/rpc-api/src/statement/mod.rs +++ b/substrate/client/rpc-api/src/statement/mod.rs @@ -37,7 +37,24 @@ pub enum StatementSubmitResult { /// Statement was rejected because the store is full or priority is too low. Ignored, /// Statement failed validation. - Bad { reason: String }, + Invalid(InvalidReason), +} + +/// Reason why a statement failed validation. +#[derive(Debug, Clone, Serialize, Deserialize)] +#[serde(tag = "reason", rename_all = "camelCase")] +pub enum InvalidReason { + /// Statement was not accompanied by a cryptographic proof. + NoProof, + /// Cryptographic proof validation failed. + BadProof, + /// Statement encoding exceeds the maximum allowed size for network propagation. + EncodingTooLarge { + /// The size of the submitted statement encoding. + submitted_size: usize, + /// The maximum allowed size. + max_size: usize, + }, } /// Substrate statement RPC API diff --git a/substrate/client/rpc/src/statement/mod.rs b/substrate/client/rpc/src/statement/mod.rs index ca9454e6ec42c..5eedcf730a47d 100644 --- a/substrate/client/rpc/src/statement/mod.rs +++ b/substrate/client/rpc/src/statement/mod.rs @@ -24,11 +24,23 @@ use jsonrpsee::{ Extensions, }; /// Re-export the API for backward compatibility. -pub use sc_rpc_api::statement::{error::Error, StatementApiServer, StatementSubmitResult}; +pub use sc_rpc_api::statement::{ + error::Error, InvalidReason, StatementApiServer, StatementSubmitResult, +}; use sp_core::Bytes; use sp_statement_store::{StatementSource, SubmitResult}; use std::sync::Arc; +/// Maps the internal InvalidReason to the RPC API InvalidReason type. +fn map_invalid_reason(reason: sp_statement_store::InvalidReason) -> InvalidReason { + match reason { + sp_statement_store::InvalidReason::NoProof => InvalidReason::NoProof, + sp_statement_store::InvalidReason::BadProof => InvalidReason::BadProof, + sp_statement_store::InvalidReason::EncodingTooLarge { submitted_size, max_size } => + InvalidReason::EncodingTooLarge { submitted_size, max_size }, + } +} + /// Statement store API pub struct StatementStore { store: Arc, @@ -133,8 +145,8 @@ impl StatementApiServer for StatementStore { // `StatementSource::Rpc` should be renewed. SubmitResult::KnownExpired => Ok(StatementSubmitResult::KnownExpired), SubmitResult::Ignored => Ok(StatementSubmitResult::Ignored), - SubmitResult::Bad(reason) => - Ok(StatementSubmitResult::Bad { reason: reason.to_string() }), + SubmitResult::Invalid(reason) => + Ok(StatementSubmitResult::Invalid(map_invalid_reason(reason))), SubmitResult::InternalError(e) => Err(Error::StatementStore(e.to_string()).into()), } } diff --git a/substrate/client/statement-store/src/lib.rs b/substrate/client/statement-store/src/lib.rs index b87f849d5f4b0..883dc13320dec 100644 --- a/substrate/client/statement-store/src/lib.rs +++ b/substrate/client/statement-store/src/lib.rs @@ -925,7 +925,7 @@ impl StatementStore for Store { HexDisplay::from(&hash), ); self.metrics.report(|metrics| metrics.validations_invalid.inc()); - return SubmitResult::Bad("No statement proof") + return SubmitResult::no_proof(); }; // Validate. @@ -944,7 +944,7 @@ impl StatementStore for Store { HexDisplay::from(&hash), ); self.metrics.report(|metrics| metrics.validations_invalid.inc()); - return SubmitResult::Bad("Bad statement proof") + return SubmitResult::bad_proof() }, Err(InvalidStatement::NoProof) => { log::debug!( @@ -953,7 +953,7 @@ impl StatementStore for Store { HexDisplay::from(&hash), ); self.metrics.report(|metrics| metrics.validations_invalid.inc()); - return SubmitResult::Bad("Missing statement proof") + return SubmitResult::no_proof(); }, Err(InvalidStatement::InternalError) => return SubmitResult::InternalError(Error::Runtime), diff --git a/substrate/primitives/statement-store/src/lib.rs b/substrate/primitives/statement-store/src/lib.rs index b7cde789d287c..71db5dadd4ed8 100644 --- a/substrate/primitives/statement-store/src/lib.rs +++ b/substrate/primitives/statement-store/src/lib.rs @@ -46,7 +46,7 @@ pub type Channel = [u8; 32]; pub const MAX_TOPICS: usize = 4; #[cfg(feature = "std")] -pub use store_api::{Error, Result, StatementSource, StatementStore, SubmitResult}; +pub use store_api::{Error, InvalidReason, Result, StatementSource, StatementStore, SubmitResult}; #[cfg(feature = "std")] mod ecies; diff --git a/substrate/primitives/statement-store/src/runtime_api.rs b/substrate/primitives/statement-store/src/runtime_api.rs index 7ff7814acdde2..0c4a21b36ad09 100644 --- a/substrate/primitives/statement-store/src/runtime_api.rs +++ b/substrate/primitives/statement-store/src/runtime_api.rs @@ -159,7 +159,7 @@ pub trait StatementStore { // This should not happen for `StatementSource::Chain`. An existing statement will // be overwritten. crate::SubmitResult::KnownExpired => SubmitResult::Bad, - crate::SubmitResult::Bad(_) => SubmitResult::Bad, + crate::SubmitResult::Invalid(_) => SubmitResult::Bad, crate::SubmitResult::InternalError(_) => SubmitResult::Bad, } } else { diff --git a/substrate/primitives/statement-store/src/store_api.rs b/substrate/primitives/statement-store/src/store_api.rs index a329e5cea3898..ad88128d01bcc 100644 --- a/substrate/primitives/statement-store/src/store_api.rs +++ b/substrate/primitives/statement-store/src/store_api.rs @@ -32,6 +32,22 @@ pub enum Error { Runtime, } +/// Reason why a statement failed validation. +#[derive(Debug, Eq, PartialEq)] +pub enum InvalidReason { + /// Statement was not accompanied by a cryptographic proof. + NoProof, + /// Cryptographic proof validation failed. + BadProof, + /// Statement encoding exceeds the maximum allowed size for network propagation. + EncodingTooLarge { + /// The size of the submitted statement encoding. + submitted_size: usize, + /// The maximum allowed size. + max_size: usize, + }, +} + /// Statement submission outcome #[derive(Debug, Eq, PartialEq)] pub enum SubmitResult { @@ -44,11 +60,23 @@ pub enum SubmitResult { /// Priority is too low or the size is too big. Ignored, /// Statement failed validation. - Bad(&'static str), + Invalid(InvalidReason), /// Internal store error. InternalError(Error), } +impl SubmitResult { + /// Creates an invalid submission result indicating missing proof. + pub fn no_proof() -> Self { + SubmitResult::Invalid(InvalidReason::NoProof) + } + + /// Creates an invalid submission result indicating proof validation failure. + pub fn bad_proof() -> Self { + SubmitResult::Invalid(InvalidReason::BadProof) + } +} + /// Result type for `Error` pub type Result = std::result::Result; From 550d9fa7813cb49c51078aa5a7fc51f718a7bde4 Mon Sep 17 00:00:00 2001 From: Andrei Eres Date: Fri, 28 Nov 2025 12:45:58 +0100 Subject: [PATCH 04/81] Handle encoding_too_large --- substrate/client/statement-store/src/lib.rs | 2 +- substrate/primitives/statement-store/src/store_api.rs | 9 +++++++-- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/substrate/client/statement-store/src/lib.rs b/substrate/client/statement-store/src/lib.rs index 883dc13320dec..cbf76f574ad71 100644 --- a/substrate/client/statement-store/src/lib.rs +++ b/substrate/client/statement-store/src/lib.rs @@ -903,7 +903,7 @@ impl StatementStore for Store { statement.encoded_size(), MAX_STATEMENT_SIZE ); - return SubmitResult::Ignored + return SubmitResult::encoding_too_large(encoded_size, MAX_STATEMENT_SIZE); } match self.index.read().query(&hash) { diff --git a/substrate/primitives/statement-store/src/store_api.rs b/substrate/primitives/statement-store/src/store_api.rs index ad88128d01bcc..e266105d72088 100644 --- a/substrate/primitives/statement-store/src/store_api.rs +++ b/substrate/primitives/statement-store/src/store_api.rs @@ -66,15 +66,20 @@ pub enum SubmitResult { } impl SubmitResult { - /// Creates an invalid submission result indicating missing proof. + /// Shorrtcut for invalid result indicating missing proof. pub fn no_proof() -> Self { SubmitResult::Invalid(InvalidReason::NoProof) } - /// Creates an invalid submission result indicating proof validation failure. + /// Shortcut for invalid result indicating bad proof. pub fn bad_proof() -> Self { SubmitResult::Invalid(InvalidReason::BadProof) } + + /// Shortcut for invalid result indicating encoding too large. + pub fn encoding_too_large(submitted_size: usize, max_size: usize) -> Self { + SubmitResult::Invalid(InvalidReason::EncodingTooLarge { submitted_size, max_size }) + } } /// Result type for `Error` From b153d0f9d0354a4514ea99f6e62420d2573cb276 Mon Sep 17 00:00:00 2001 From: Andrei Eres Date: Fri, 28 Nov 2025 15:10:34 +0100 Subject: [PATCH 05/81] Add rejected variant --- substrate/client/network/statement/src/lib.rs | 2 +- substrate/client/rpc-api/src/statement/mod.rs | 32 ++++++- substrate/client/rpc/src/statement/mod.rs | 22 ++++- substrate/client/statement-store/src/lib.rs | 86 ++++++++++++++----- .../primitives/statement-store/src/lib.rs | 4 +- .../statement-store/src/runtime_api.rs | 2 +- .../statement-store/src/store_api.rs | 35 +++++++- 7 files changed, 151 insertions(+), 32 deletions(-) diff --git a/substrate/client/network/statement/src/lib.rs b/substrate/client/network/statement/src/lib.rs index e2678238329e7..b5eb49b8597f3 100644 --- a/substrate/client/network/statement/src/lib.rs +++ b/substrate/client/network/statement/src/lib.rs @@ -502,7 +502,7 @@ where SubmitResult::New => self.network.report_peer(who, rep::GOOD_STATEMENT), SubmitResult::Known => self.network.report_peer(who, rep::ANY_STATEMENT_REFUND), SubmitResult::KnownExpired => {}, - SubmitResult::Ignored => {}, + SubmitResult::Rejected(_) => {}, SubmitResult::Invalid(_) => self.network.report_peer(who, rep::INVALID_STATEMENT), SubmitResult::InternalError(_) => {}, } diff --git a/substrate/client/rpc-api/src/statement/mod.rs b/substrate/client/rpc-api/src/statement/mod.rs index b8819a907712a..57b6da459b1dd 100644 --- a/substrate/client/rpc-api/src/statement/mod.rs +++ b/substrate/client/rpc-api/src/statement/mod.rs @@ -35,7 +35,7 @@ pub enum StatementSubmitResult { /// Statement was already known but has expired. KnownExpired, /// Statement was rejected because the store is full or priority is too low. - Ignored, + Rejected(RejectionReason), /// Statement failed validation. Invalid(InvalidReason), } @@ -57,6 +57,36 @@ pub enum InvalidReason { }, } +/// Reason why a statement was rejected from the store. +#[derive(Debug, Clone, Serialize, Deserialize)] +#[serde(tag = "reason", rename_all = "camelCase")] +pub enum RejectionReason { + /// Statement data exceeds the maximum allowed size for the account. + DataTooLarge { + /// The size of the submitted statement data. + submitted_size: usize, + /// Still available data size for the account. + available_size: usize, + }, + /// Attempting to replace a channel message with lower or equal priority. + ChannelPriorityTooLow { + /// The priority of the submitted statement. + submitted_priority: u32, + /// The minimum priority needed to replace the existing channel message. + min_priority: u32, + }, + /// Account has reached its statement limit and submitted priority is too low to evict existing + /// statements. + AccountFull { + /// The priority of the submitted statement. + submitted_priority: u32, + /// The minimum priority needed to evict an existing statement. + min_priority: u32, + }, + /// The global statement store is full and cannot accept new statements. + StoreFull, +} + /// Substrate statement RPC API #[rpc(client, server)] pub trait StatementApi { diff --git a/substrate/client/rpc/src/statement/mod.rs b/substrate/client/rpc/src/statement/mod.rs index 5eedcf730a47d..9c2164852fbab 100644 --- a/substrate/client/rpc/src/statement/mod.rs +++ b/substrate/client/rpc/src/statement/mod.rs @@ -25,7 +25,7 @@ use jsonrpsee::{ }; /// Re-export the API for backward compatibility. pub use sc_rpc_api::statement::{ - error::Error, InvalidReason, StatementApiServer, StatementSubmitResult, + error::Error, InvalidReason, RejectionReason, StatementApiServer, StatementSubmitResult, }; use sp_core::Bytes; use sp_statement_store::{StatementSource, SubmitResult}; @@ -41,6 +41,21 @@ fn map_invalid_reason(reason: sp_statement_store::InvalidReason) -> InvalidReaso } } +/// Maps the internal RejectionReason to the RPC API RejectionReason type. +fn map_rejection_reason(reason: sp_statement_store::RejectionReason) -> RejectionReason { + match reason { + sp_statement_store::RejectionReason::DataTooLarge { submitted_size, available_size } => + RejectionReason::DataTooLarge { submitted_size, available_size }, + sp_statement_store::RejectionReason::ChannelPriorityTooLow { + submitted_priority, + min_priority, + } => RejectionReason::ChannelPriorityTooLow { submitted_priority, min_priority }, + sp_statement_store::RejectionReason::AccountFull { submitted_priority, min_priority } => + RejectionReason::AccountFull { submitted_priority, min_priority }, + sp_statement_store::RejectionReason::StoreFull => RejectionReason::StoreFull, + } +} + /// Statement store API pub struct StatementStore { store: Arc, @@ -144,9 +159,10 @@ impl StatementApiServer for StatementStore { // `KnownExpired` should not happen. Expired statements submitted with // `StatementSource::Rpc` should be renewed. SubmitResult::KnownExpired => Ok(StatementSubmitResult::KnownExpired), - SubmitResult::Ignored => Ok(StatementSubmitResult::Ignored), + SubmitResult::Rejected(reason) => + Ok(StatementSubmitResult::Rejected(map_rejection_reason(reason))), SubmitResult::Invalid(reason) => - Ok(StatementSubmitResult::Invalid(map_invalid_reason(reason))), + Ok(StatementSubmitResult::Invalid(map_invalid_reason(reason))), SubmitResult::InternalError(e) => Err(Error::StatementStore(e.to_string()).into()), } } diff --git a/substrate/client/statement-store/src/lib.rs b/substrate/client/statement-store/src/lib.rs index cbf76f574ad71..7c3653fdb10ac 100644 --- a/substrate/client/statement-store/src/lib.rs +++ b/substrate/client/statement-store/src/lib.rs @@ -63,8 +63,8 @@ use sp_statement_store::{ runtime_api::{ InvalidStatement, StatementSource, StatementStoreExt, ValidStatement, ValidateStatement, }, - AccountId, BlockHash, Channel, DecryptionKey, Hash, Proof, Result, Statement, SubmitResult, - Topic, + AccountId, BlockHash, Channel, DecryptionKey, Hash, Proof, RejectionReason, Result, Statement, + SubmitResult, Topic, }; use std::{ collections::{BTreeMap, HashMap, HashSet}, @@ -225,7 +225,10 @@ enum IndexQuery { enum MaybeInserted { Inserted(HashSet), - Ignored, + IgnoredDataTooLarge { submitted_size: usize, available_size: usize }, + IgnoredChannelPriorityTooLow { submitted_priority: u32, min_priority: u32 }, + IgnoredAccountFull { submitted_priority: u32, min_priority: u32 }, + IgnoredStoreFull, } impl Index { @@ -396,7 +399,10 @@ impl Index { HexDisplay::from(&hash), statement_len, ); - return MaybeInserted::Ignored + return MaybeInserted::IgnoredDataTooLarge { + submitted_size: statement_len, + available_size: validation.max_size as usize, + }; } let mut evicted = HashSet::new(); @@ -418,7 +424,10 @@ impl Index { priority, channel_record.priority, ); - return MaybeInserted::Ignored + return MaybeInserted::IgnoredChannelPriorityTooLow { + submitted_priority: priority.0, + min_priority: channel_record.priority.0, + }; } else { // Would replace channel message. Still need to check for size constraints // below. @@ -461,7 +470,10 @@ impl Index { priority, entry.priority, ); - return MaybeInserted::Ignored + return MaybeInserted::IgnoredAccountFull { + submitted_priority: priority.0, + min_priority: entry.priority.0, + }; } evicted.insert(entry.hash); would_free_size += len; @@ -478,7 +490,7 @@ impl Index { self.total_size, self.entries.len(), ); - return MaybeInserted::Ignored + return MaybeInserted::IgnoredStoreFull; } for h in &evicted { @@ -966,7 +978,26 @@ impl StatementStore for Store { let evicted = match index.insert(hash, &statement, &account_id, &validation, current_time) { - MaybeInserted::Ignored => return SubmitResult::Ignored, + MaybeInserted::IgnoredDataTooLarge { submitted_size, available_size } => + return SubmitResult::Rejected(RejectionReason::DataTooLarge { + submitted_size, + available_size, + }), + MaybeInserted::IgnoredChannelPriorityTooLow { + submitted_priority, + min_priority, + } => + return SubmitResult::Rejected(RejectionReason::ChannelPriorityTooLow { + submitted_priority, + min_priority, + }), + MaybeInserted::IgnoredAccountFull { submitted_priority, min_priority } => + return SubmitResult::Rejected(RejectionReason::AccountFull { + submitted_priority, + min_priority, + }), + MaybeInserted::IgnoredStoreFull => + return SubmitResult::Rejected(RejectionReason::StoreFull), MaybeInserted::Inserted(evicted) => evicted, }; @@ -1329,19 +1360,27 @@ mod tests { store.index.write().options.max_total_size = 3000; let source = StatementSource::Network; let ok = SubmitResult::New; - let ignored = SubmitResult::Ignored; // Account 1 (limit = 1 msg, 1000 bytes) // Oversized statement is not allowed. Limit for account 1 is 1 msg, 1000 bytes - assert_eq!(store.submit(statement(1, 1, Some(1), 2000), source), ignored); + assert!(matches!( + store.submit(statement(1, 1, Some(1), 2000), source), + SubmitResult::Rejected(_) + )); assert_eq!(store.submit(statement(1, 1, Some(1), 500), source), ok); // Would not replace channel message with same priority - assert_eq!(store.submit(statement(1, 1, Some(1), 200), source), ignored); + assert!(matches!( + store.submit(statement(1, 1, Some(1), 200), source), + SubmitResult::Rejected(_) + )); assert_eq!(store.submit(statement(1, 2, Some(1), 600), source), ok); // Submit another message to another channel with lower priority. Should not be allowed // because msg count limit is 1 - assert_eq!(store.submit(statement(1, 1, Some(2), 100), source), ignored); + assert!(matches!( + store.submit(statement(1, 1, Some(2), 100), source), + SubmitResult::Rejected(_) + )); assert_eq!(store.index.read().expired.len(), 1); // Account 2 (limit = 2 msg, 1000 bytes) @@ -1368,10 +1407,16 @@ mod tests { assert_eq!(store.index.read().entries.len(), 4); // Should be over the global size limit - assert_eq!(store.submit(statement(1, 1, None, 700), source), ignored); + assert!(matches!( + store.submit(statement(1, 1, None, 700), source), + SubmitResult::Rejected(_) + )); // Should be over the global count limit store.index.write().options.max_total_statements = 4; - assert_eq!(store.submit(statement(1, 1, None, 100), source), ignored); + assert!(matches!( + store.submit(statement(1, 1, None, 100), source), + SubmitResult::Rejected(_) + )); let mut expected_statements = vec![ statement(1, 2, Some(1), 600).hash(), @@ -1399,13 +1444,13 @@ mod tests { SubmitResult::New ); - assert_eq!( + assert!(matches!( store.submit( statement(42, 2, Some(1), 2 * crate::MAX_STATEMENT_SIZE), StatementSource::Local ), - SubmitResult::Ignored - ); + SubmitResult::Rejected(_) + )); } #[test] @@ -1657,10 +1702,7 @@ mod tests { // Submit all statements. for s in [&s_a1, &s_a2, &s_a3, &s_b1, &s_b2] { - assert!(matches!( - store.submit(s.clone(), StatementSource::Network), - SubmitResult::New(_) - )); + assert_eq!(store.submit(s.clone(), StatementSource::Network), SubmitResult::New); } // --- Pre-conditions: everything is indexed as expected. @@ -1732,6 +1774,6 @@ mod tests { // --- Reuse: Account A can submit again after purge. let s_new = statement(4, 40, None, 10); - assert!(matches!(store.submit(s_new, StatementSource::Network), SubmitResult::New(_))); + assert_eq!(store.submit(s_new, StatementSource::Network), SubmitResult::New); } } diff --git a/substrate/primitives/statement-store/src/lib.rs b/substrate/primitives/statement-store/src/lib.rs index 71db5dadd4ed8..99524207a0b05 100644 --- a/substrate/primitives/statement-store/src/lib.rs +++ b/substrate/primitives/statement-store/src/lib.rs @@ -46,7 +46,9 @@ pub type Channel = [u8; 32]; pub const MAX_TOPICS: usize = 4; #[cfg(feature = "std")] -pub use store_api::{Error, InvalidReason, Result, StatementSource, StatementStore, SubmitResult}; +pub use store_api::{ + Error, InvalidReason, RejectionReason, Result, StatementSource, StatementStore, SubmitResult, +}; #[cfg(feature = "std")] mod ecies; diff --git a/substrate/primitives/statement-store/src/runtime_api.rs b/substrate/primitives/statement-store/src/runtime_api.rs index 0c4a21b36ad09..98f9b7a623919 100644 --- a/substrate/primitives/statement-store/src/runtime_api.rs +++ b/substrate/primitives/statement-store/src/runtime_api.rs @@ -155,7 +155,7 @@ pub trait StatementStore { match store.submit(statement, StatementSource::Chain) { crate::SubmitResult::New => SubmitResult::OkNew, crate::SubmitResult::Known => SubmitResult::OkKnown, - crate::SubmitResult::Ignored => SubmitResult::Full, + crate::SubmitResult::Rejected(_) => SubmitResult::Full, // This should not happen for `StatementSource::Chain`. An existing statement will // be overwritten. crate::SubmitResult::KnownExpired => SubmitResult::Bad, diff --git a/substrate/primitives/statement-store/src/store_api.rs b/substrate/primitives/statement-store/src/store_api.rs index e266105d72088..06d59b326765e 100644 --- a/substrate/primitives/statement-store/src/store_api.rs +++ b/substrate/primitives/statement-store/src/store_api.rs @@ -32,6 +32,35 @@ pub enum Error { Runtime, } +/// Reason why a statement was rejected from the store. +#[derive(Debug, Eq, PartialEq)] +pub enum RejectionReason { + /// Statement data exceeds the maximum allowed size for the account. + DataTooLarge { + /// The size of the submitted statement data. + submitted_size: usize, + /// Still available data size for the account. + available_size: usize, + }, + /// Attempting to replace a channel message with lower or equal priority. + ChannelPriorityTooLow { + /// The priority of the submitted statement. + submitted_priority: u32, + /// The minimum priority needed to replace the existing channel message. + min_priority: u32, + }, + /// Account has reached its statement limit and submitted priority is too low to evict existing + /// statements. + AccountFull { + /// The priority of the submitted statement. + submitted_priority: u32, + /// The minimum priority needed to evict an existing statement. + min_priority: u32, + }, + /// The global statement store is full and cannot accept new statements. + StoreFull, +} + /// Reason why a statement failed validation. #[derive(Debug, Eq, PartialEq)] pub enum InvalidReason { @@ -57,9 +86,9 @@ pub enum SubmitResult { Known, /// Known statement that's already expired. KnownExpired, - /// Priority is too low or the size is too big. - Ignored, - /// Statement failed validation. + /// Statement was rejected due to store constraints or priority rules. + Rejected(RejectionReason), + /// Statement failed validation checks. Invalid(InvalidReason), /// Internal store error. InternalError(Error), From 32b198be19ef4ab03c21c0d4284277bd09c31b5d Mon Sep 17 00:00:00 2001 From: "cmd[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Fri, 28 Nov 2025 14:27:10 +0000 Subject: [PATCH 06/81] Update from github-actions[bot] running command 'prdoc --audience node_dev --bump major' --- prdoc/pr_10421.prdoc | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) create mode 100644 prdoc/pr_10421.prdoc diff --git a/prdoc/pr_10421.prdoc b/prdoc/pr_10421.prdoc new file mode 100644 index 0000000000000..178802611d8d0 --- /dev/null +++ b/prdoc/pr_10421.prdoc @@ -0,0 +1,26 @@ +title: 'statement-store: New RPC result types' +doc: +- audience: Node Dev + description: |- + # Description + + Application-level errors moved from JSON-RPC transport errors into the result type for `statement_submit` RPC method to help clients distinguish between submission outcomes instead of parsing error strings. + + ## Integration + + **Breaking Change** - `statement_submit` now returns `StatementSubmitResult` enum instead of `()`. + + ## Review Notes + + Submission outcomes now return as Ok(result) with status field. Only infrastructure failures (database errors, decode errors) remain as JSON-RPC errors. +crates: +- name: sc-rpc-api + bump: major +- name: sc-rpc + bump: major +- name: sc-network-statement + bump: major +- name: sc-statement-store + bump: major +- name: sp-statement-store + bump: major From 31a606b7fb2b53b28233fd7b4d2b78f958300b6a Mon Sep 17 00:00:00 2001 From: Andrei Eres Date: Fri, 28 Nov 2025 15:47:27 +0100 Subject: [PATCH 07/81] Update --- substrate/client/statement-store/src/lib.rs | 68 ++++++------------- .../statement-store/src/store_api.rs | 21 +----- 2 files changed, 24 insertions(+), 65 deletions(-) diff --git a/substrate/client/statement-store/src/lib.rs b/substrate/client/statement-store/src/lib.rs index 7c3653fdb10ac..e923878e4268a 100644 --- a/substrate/client/statement-store/src/lib.rs +++ b/substrate/client/statement-store/src/lib.rs @@ -63,8 +63,8 @@ use sp_statement_store::{ runtime_api::{ InvalidStatement, StatementSource, StatementStoreExt, ValidStatement, ValidateStatement, }, - AccountId, BlockHash, Channel, DecryptionKey, Hash, Proof, RejectionReason, Result, Statement, - SubmitResult, Topic, + AccountId, BlockHash, Channel, DecryptionKey, Hash, InvalidReason, Proof, RejectionReason, + Result, Statement, SubmitResult, Topic, }; use std::{ collections::{BTreeMap, HashMap, HashSet}, @@ -223,14 +223,6 @@ enum IndexQuery { Expired, } -enum MaybeInserted { - Inserted(HashSet), - IgnoredDataTooLarge { submitted_size: usize, available_size: usize }, - IgnoredChannelPriorityTooLow { submitted_priority: u32, min_priority: u32 }, - IgnoredAccountFull { submitted_priority: u32, min_priority: u32 }, - IgnoredStoreFull, -} - impl Index { fn new(options: Options) -> Index { Index { options, ..Default::default() } @@ -390,7 +382,7 @@ impl Index { account: &AccountId, validation: &ValidStatement, current_time: u64, - ) -> MaybeInserted { + ) -> std::result::Result, RejectionReason> { let statement_len = statement.data_len(); if statement_len > validation.max_size as usize { log::debug!( @@ -399,10 +391,10 @@ impl Index { HexDisplay::from(&hash), statement_len, ); - return MaybeInserted::IgnoredDataTooLarge { + return Err(RejectionReason::DataTooLarge { submitted_size: statement_len, available_size: validation.max_size as usize, - }; + }); } let mut evicted = HashSet::new(); @@ -424,10 +416,10 @@ impl Index { priority, channel_record.priority, ); - return MaybeInserted::IgnoredChannelPriorityTooLow { + return Err(RejectionReason::ChannelPriorityTooLow { submitted_priority: priority.0, min_priority: channel_record.priority.0, - }; + }); } else { // Would replace channel message. Still need to check for size constraints // below. @@ -470,10 +462,10 @@ impl Index { priority, entry.priority, ); - return MaybeInserted::IgnoredAccountFull { + return Err(RejectionReason::AccountFull { submitted_priority: priority.0, min_priority: entry.priority.0, - }; + }); } evicted.insert(entry.hash); would_free_size += len; @@ -490,14 +482,14 @@ impl Index { self.total_size, self.entries.len(), ); - return MaybeInserted::IgnoredStoreFull; + return Err(RejectionReason::StoreFull); } for h in &evicted { self.make_expired(h, current_time); } self.insert_new(hash, *account, statement); - MaybeInserted::Inserted(evicted) + Ok(evicted) } } @@ -915,7 +907,10 @@ impl StatementStore for Store { statement.encoded_size(), MAX_STATEMENT_SIZE ); - return SubmitResult::encoding_too_large(encoded_size, MAX_STATEMENT_SIZE); + return SubmitResult::Invalid(InvalidReason::EncodingTooLarge { + submitted_size: encoded_size, + max_size: MAX_STATEMENT_SIZE, + }); } match self.index.read().query(&hash) { @@ -937,7 +932,7 @@ impl StatementStore for Store { HexDisplay::from(&hash), ); self.metrics.report(|metrics| metrics.validations_invalid.inc()); - return SubmitResult::no_proof(); + return SubmitResult::Invalid(InvalidReason::NoProof); }; // Validate. @@ -956,7 +951,7 @@ impl StatementStore for Store { HexDisplay::from(&hash), ); self.metrics.report(|metrics| metrics.validations_invalid.inc()); - return SubmitResult::bad_proof() + return SubmitResult::Invalid(InvalidReason::BadProof); }, Err(InvalidStatement::NoProof) => { log::debug!( @@ -965,7 +960,7 @@ impl StatementStore for Store { HexDisplay::from(&hash), ); self.metrics.report(|metrics| metrics.validations_invalid.inc()); - return SubmitResult::no_proof(); + return SubmitResult::Invalid(InvalidReason::NoProof); }, Err(InvalidStatement::InternalError) => return SubmitResult::InternalError(Error::Runtime), @@ -978,27 +973,8 @@ impl StatementStore for Store { let evicted = match index.insert(hash, &statement, &account_id, &validation, current_time) { - MaybeInserted::IgnoredDataTooLarge { submitted_size, available_size } => - return SubmitResult::Rejected(RejectionReason::DataTooLarge { - submitted_size, - available_size, - }), - MaybeInserted::IgnoredChannelPriorityTooLow { - submitted_priority, - min_priority, - } => - return SubmitResult::Rejected(RejectionReason::ChannelPriorityTooLow { - submitted_priority, - min_priority, - }), - MaybeInserted::IgnoredAccountFull { submitted_priority, min_priority } => - return SubmitResult::Rejected(RejectionReason::AccountFull { - submitted_priority, - min_priority, - }), - MaybeInserted::IgnoredStoreFull => - return SubmitResult::Rejected(RejectionReason::StoreFull), - MaybeInserted::Inserted(evicted) => evicted, + Ok(evicted) => evicted, + Err(reason) => return SubmitResult::Rejected(reason), }; commit.push((col::STATEMENTS, hash.to_vec(), Some(statement.encode()))); @@ -1080,8 +1056,8 @@ mod tests { use sp_core::{Decode, Encode, Pair}; use sp_statement_store::{ runtime_api::{InvalidStatement, ValidStatement, ValidateStatement}, - AccountId, Channel, DecryptionKey, NetworkPriority, Proof, SignatureVerificationResult, - Statement, StatementSource, StatementStore, SubmitResult, Topic, + AccountId, Channel, DecryptionKey, Proof, SignatureVerificationResult, Statement, + StatementSource, StatementStore, SubmitResult, Topic, }; type Extrinsic = sp_runtime::OpaqueExtrinsic; diff --git a/substrate/primitives/statement-store/src/store_api.rs b/substrate/primitives/statement-store/src/store_api.rs index 06d59b326765e..b174c10f4d089 100644 --- a/substrate/primitives/statement-store/src/store_api.rs +++ b/substrate/primitives/statement-store/src/store_api.rs @@ -86,31 +86,14 @@ pub enum SubmitResult { Known, /// Known statement that's already expired. KnownExpired, - /// Statement was rejected due to store constraints or priority rules. + /// Priority is too low or the size is too big. Rejected(RejectionReason), - /// Statement failed validation checks. + /// Statement failed validation. Invalid(InvalidReason), /// Internal store error. InternalError(Error), } -impl SubmitResult { - /// Shorrtcut for invalid result indicating missing proof. - pub fn no_proof() -> Self { - SubmitResult::Invalid(InvalidReason::NoProof) - } - - /// Shortcut for invalid result indicating bad proof. - pub fn bad_proof() -> Self { - SubmitResult::Invalid(InvalidReason::BadProof) - } - - /// Shortcut for invalid result indicating encoding too large. - pub fn encoding_too_large(submitted_size: usize, max_size: usize) -> Self { - SubmitResult::Invalid(InvalidReason::EncodingTooLarge { submitted_size, max_size }) - } -} - /// Result type for `Error` pub type Result = std::result::Result; From bc779405f23ae81050cb866143e5d25d570147a9 Mon Sep 17 00:00:00 2001 From: Andrei Eres Date: Fri, 28 Nov 2025 15:57:54 +0100 Subject: [PATCH 08/81] Update --- substrate/client/rpc-api/src/statement/mod.rs | 41 +++++++++---------- .../statement-store/src/store_api.rs | 13 +++--- 2 files changed, 26 insertions(+), 28 deletions(-) diff --git a/substrate/client/rpc-api/src/statement/mod.rs b/substrate/client/rpc-api/src/statement/mod.rs index 57b6da459b1dd..69233621fb06a 100644 --- a/substrate/client/rpc-api/src/statement/mod.rs +++ b/substrate/client/rpc-api/src/statement/mod.rs @@ -40,23 +40,6 @@ pub enum StatementSubmitResult { Invalid(InvalidReason), } -/// Reason why a statement failed validation. -#[derive(Debug, Clone, Serialize, Deserialize)] -#[serde(tag = "reason", rename_all = "camelCase")] -pub enum InvalidReason { - /// Statement was not accompanied by a cryptographic proof. - NoProof, - /// Cryptographic proof validation failed. - BadProof, - /// Statement encoding exceeds the maximum allowed size for network propagation. - EncodingTooLarge { - /// The size of the submitted statement encoding. - submitted_size: usize, - /// The maximum allowed size. - max_size: usize, - }, -} - /// Reason why a statement was rejected from the store. #[derive(Debug, Clone, Serialize, Deserialize)] #[serde(tag = "reason", rename_all = "camelCase")] @@ -72,21 +55,37 @@ pub enum RejectionReason { ChannelPriorityTooLow { /// The priority of the submitted statement. submitted_priority: u32, - /// The minimum priority needed to replace the existing channel message. + /// The minimum priority of the existing channel message. min_priority: u32, }, - /// Account has reached its statement limit and submitted priority is too low to evict existing - /// statements. + /// Account reached its statement limit and submitted priority is too low to evict existing. AccountFull { /// The priority of the submitted statement. submitted_priority: u32, - /// The minimum priority needed to evict an existing statement. + /// The minimum priority of the existing statement. min_priority: u32, }, /// The global statement store is full and cannot accept new statements. StoreFull, } +/// Reason why a statement failed validation. +#[derive(Debug, Clone, Serialize, Deserialize)] +#[serde(tag = "reason", rename_all = "camelCase")] +pub enum InvalidReason { + /// Statement has no proof. + NoProof, + /// Proof validation failed. + BadProof, + /// Statement is too big for network propagation. + EncodingTooLarge { + /// The size of the submitted statement encoding. + submitted_size: usize, + /// The maximum allowed size. + max_size: usize, + }, +} + /// Substrate statement RPC API #[rpc(client, server)] pub trait StatementApi { diff --git a/substrate/primitives/statement-store/src/store_api.rs b/substrate/primitives/statement-store/src/store_api.rs index b174c10f4d089..7d97d1d1aefb3 100644 --- a/substrate/primitives/statement-store/src/store_api.rs +++ b/substrate/primitives/statement-store/src/store_api.rs @@ -46,15 +46,14 @@ pub enum RejectionReason { ChannelPriorityTooLow { /// The priority of the submitted statement. submitted_priority: u32, - /// The minimum priority needed to replace the existing channel message. + /// The minimum priority of the existing channel message. min_priority: u32, }, - /// Account has reached its statement limit and submitted priority is too low to evict existing - /// statements. + /// Account reached its statement limit and submitted priority is too low to evict existing. AccountFull { /// The priority of the submitted statement. submitted_priority: u32, - /// The minimum priority needed to evict an existing statement. + /// The minimum priority of the existing statement. min_priority: u32, }, /// The global statement store is full and cannot accept new statements. @@ -64,11 +63,11 @@ pub enum RejectionReason { /// Reason why a statement failed validation. #[derive(Debug, Eq, PartialEq)] pub enum InvalidReason { - /// Statement was not accompanied by a cryptographic proof. + /// Statement has no proof. NoProof, - /// Cryptographic proof validation failed. + /// Proof validation failed. BadProof, - /// Statement encoding exceeds the maximum allowed size for network propagation. + /// Statement is too big for network propagation. EncodingTooLarge { /// The size of the submitted statement encoding. submitted_size: usize, From 67d915f6d1801fcf0ebf4d6e4735502ff25dc2c5 Mon Sep 17 00:00:00 2001 From: Andrei Eres Date: Fri, 28 Nov 2025 16:04:41 +0100 Subject: [PATCH 09/81] Update PR doc --- prdoc/pr_10421.prdoc | 15 +++++---------- 1 file changed, 5 insertions(+), 10 deletions(-) diff --git a/prdoc/pr_10421.prdoc b/prdoc/pr_10421.prdoc index 178802611d8d0..0547fd0a72f53 100644 --- a/prdoc/pr_10421.prdoc +++ b/prdoc/pr_10421.prdoc @@ -2,17 +2,12 @@ title: 'statement-store: New RPC result types' doc: - audience: Node Dev description: |- - # Description + Moved submission failures from JSON-RPC errors into structured result types: + - Internal submition result type changed to hold more information for clients. + - The "statement_submit" method now returns enum with clear status variants (New, Known, Bad, Invalid, Rejected). + - Simplified the reputation system by removing the unused GOOD_STATEMENT reward and renaming EXCELLENT_STATEMENT to GOOD_STATEMENT. + - Runtime API wasn't changed. - Application-level errors moved from JSON-RPC transport errors into the result type for `statement_submit` RPC method to help clients distinguish between submission outcomes instead of parsing error strings. - - ## Integration - - **Breaking Change** - `statement_submit` now returns `StatementSubmitResult` enum instead of `()`. - - ## Review Notes - - Submission outcomes now return as Ok(result) with status field. Only infrastructure failures (database errors, decode errors) remain as JSON-RPC errors. crates: - name: sc-rpc-api bump: major From 068364acf98d4745f3a475d39842c775362d07f5 Mon Sep 17 00:00:00 2001 From: Andrei Eres Date: Fri, 28 Nov 2025 16:18:48 +0100 Subject: [PATCH 10/81] Fix PR doc --- prdoc/pr_10421.prdoc | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/prdoc/pr_10421.prdoc b/prdoc/pr_10421.prdoc index 0547fd0a72f53..4ad74c9a36e0e 100644 --- a/prdoc/pr_10421.prdoc +++ b/prdoc/pr_10421.prdoc @@ -3,9 +3,10 @@ doc: - audience: Node Dev description: |- Moved submission failures from JSON-RPC errors into structured result types: - - Internal submition result type changed to hold more information for clients. - - The "statement_submit" method now returns enum with clear status variants (New, Known, Bad, Invalid, Rejected). - - Simplified the reputation system by removing the unused GOOD_STATEMENT reward and renaming EXCELLENT_STATEMENT to GOOD_STATEMENT. + - Internal submission result type changed to hold more information for clients. + - The "statement_submit" method now returns enum with clear status variants (New, Known, Invalid, Rejected). + - NetworkPriority removed as we never used it. + - Updated and simplified the reputation system. - Runtime API wasn't changed. crates: From 4b6cc03fd7c01cf40267919ce7059c8b6a884fd2 Mon Sep 17 00:00:00 2001 From: Andrei Eres Date: Mon, 1 Dec 2025 11:19:53 +0100 Subject: [PATCH 11/81] Update substrate/client/rpc-api/src/statement/mod.rs Co-authored-by: Alexandru Gheorghe <49718502+alexggh@users.noreply.github.com> --- substrate/client/rpc-api/src/statement/mod.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/substrate/client/rpc-api/src/statement/mod.rs b/substrate/client/rpc-api/src/statement/mod.rs index 69233621fb06a..7d169d55e614e 100644 --- a/substrate/client/rpc-api/src/statement/mod.rs +++ b/substrate/client/rpc-api/src/statement/mod.rs @@ -77,7 +77,7 @@ pub enum InvalidReason { NoProof, /// Proof validation failed. BadProof, - /// Statement is too big for network propagation. + /// Statement exceeds max allowed statement size EncodingTooLarge { /// The size of the submitted statement encoding. submitted_size: usize, From 89c3c3758eb69d99b47684350c6f32a6da6bc664 Mon Sep 17 00:00:00 2001 From: Andrei Eres Date: Mon, 1 Dec 2025 15:11:36 +0100 Subject: [PATCH 12/81] Fix assertion --- substrate/client/statement-store/src/lib.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/substrate/client/statement-store/src/lib.rs b/substrate/client/statement-store/src/lib.rs index e923878e4268a..6b4945d4e2553 100644 --- a/substrate/client/statement-store/src/lib.rs +++ b/substrate/client/statement-store/src/lib.rs @@ -1425,7 +1425,7 @@ mod tests { statement(42, 2, Some(1), 2 * crate::MAX_STATEMENT_SIZE), StatementSource::Local ), - SubmitResult::Rejected(_) + SubmitResult::Invalid(_) )); } From a3a0a90c9185d9dd158f3d5ec5c9e3130cb0bdbb Mon Sep 17 00:00:00 2001 From: Andrei Eres Date: Tue, 2 Dec 2025 08:37:20 +0100 Subject: [PATCH 13/81] Don't copy types --- Cargo.lock | 2 + substrate/client/rpc-api/Cargo.toml | 1 + substrate/client/rpc-api/src/statement/mod.rs | 66 +------------------ substrate/client/rpc/src/statement/mod.rs | 43 ++---------- .../primitives/statement-store/Cargo.toml | 3 + .../statement-store/src/store_api.rs | 25 ++++--- 6 files changed, 30 insertions(+), 110 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index f51b14678ae44..3b05308a7fd51 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -20905,6 +20905,7 @@ dependencies = [ "sp-core 28.0.0", "sp-rpc", "sp-runtime", + "sp-statement-store", "sp-version", "thiserror 1.0.65", ] @@ -23848,6 +23849,7 @@ dependencies = [ "parity-scale-codec", "rand 0.8.5", "scale-info", + "serde", "sha2 0.10.9", "sp-api", "sp-application-crypto", diff --git a/substrate/client/rpc-api/Cargo.toml b/substrate/client/rpc-api/Cargo.toml index e7bb723d88398..6f2da1f5a3ad1 100644 --- a/substrate/client/rpc-api/Cargo.toml +++ b/substrate/client/rpc-api/Cargo.toml @@ -27,5 +27,6 @@ serde_json = { workspace = true, default-features = true } sp-core = { workspace = true, default-features = true } sp-rpc = { workspace = true, default-features = true } sp-runtime = { workspace = true, default-features = true } +sp-statement-store = { features = ["serde"], workspace = true, default-features = true } sp-version = { workspace = true, default-features = true } thiserror = { workspace = true } diff --git a/substrate/client/rpc-api/src/statement/mod.rs b/substrate/client/rpc-api/src/statement/mod.rs index 7d169d55e614e..de2b337e69701 100644 --- a/substrate/client/rpc-api/src/statement/mod.rs +++ b/substrate/client/rpc-api/src/statement/mod.rs @@ -19,72 +19,12 @@ //! Substrate Statement Store RPC API. use jsonrpsee::{core::RpcResult, proc_macros::rpc}; -use serde::{Deserialize, Serialize}; use sp_core::Bytes; pub mod error; -/// Result of submitting a statement to the store. -#[derive(Debug, Clone, Serialize, Deserialize)] -#[serde(tag = "status", rename_all = "camelCase")] -pub enum StatementSubmitResult { - /// Statement was accepted as new. - New, - /// Statement was already known. - Known, - /// Statement was already known but has expired. - KnownExpired, - /// Statement was rejected because the store is full or priority is too low. - Rejected(RejectionReason), - /// Statement failed validation. - Invalid(InvalidReason), -} - -/// Reason why a statement was rejected from the store. -#[derive(Debug, Clone, Serialize, Deserialize)] -#[serde(tag = "reason", rename_all = "camelCase")] -pub enum RejectionReason { - /// Statement data exceeds the maximum allowed size for the account. - DataTooLarge { - /// The size of the submitted statement data. - submitted_size: usize, - /// Still available data size for the account. - available_size: usize, - }, - /// Attempting to replace a channel message with lower or equal priority. - ChannelPriorityTooLow { - /// The priority of the submitted statement. - submitted_priority: u32, - /// The minimum priority of the existing channel message. - min_priority: u32, - }, - /// Account reached its statement limit and submitted priority is too low to evict existing. - AccountFull { - /// The priority of the submitted statement. - submitted_priority: u32, - /// The minimum priority of the existing statement. - min_priority: u32, - }, - /// The global statement store is full and cannot accept new statements. - StoreFull, -} - -/// Reason why a statement failed validation. -#[derive(Debug, Clone, Serialize, Deserialize)] -#[serde(tag = "reason", rename_all = "camelCase")] -pub enum InvalidReason { - /// Statement has no proof. - NoProof, - /// Proof validation failed. - BadProof, - /// Statement exceeds max allowed statement size - EncodingTooLarge { - /// The size of the submitted statement encoding. - submitted_size: usize, - /// The maximum allowed size. - max_size: usize, - }, -} +// Re-export types from primitives with serde support +pub use sp_statement_store::SubmitResult; /// Substrate statement RPC API #[rpc(client, server)] @@ -150,7 +90,7 @@ pub trait StatementApi { /// Submit a pre-encoded statement. #[method(name = "statement_submit")] - fn submit(&self, encoded: Bytes) -> RpcResult; + fn submit(&self, encoded: Bytes) -> RpcResult; /// Remove a statement from the store. #[method(name = "statement_remove")] diff --git a/substrate/client/rpc/src/statement/mod.rs b/substrate/client/rpc/src/statement/mod.rs index 9c2164852fbab..350a99e645d2e 100644 --- a/substrate/client/rpc/src/statement/mod.rs +++ b/substrate/client/rpc/src/statement/mod.rs @@ -24,38 +24,11 @@ use jsonrpsee::{ Extensions, }; /// Re-export the API for backward compatibility. -pub use sc_rpc_api::statement::{ - error::Error, InvalidReason, RejectionReason, StatementApiServer, StatementSubmitResult, -}; +pub use sc_rpc_api::statement::{error::Error, StatementApiServer}; use sp_core::Bytes; use sp_statement_store::{StatementSource, SubmitResult}; use std::sync::Arc; -/// Maps the internal InvalidReason to the RPC API InvalidReason type. -fn map_invalid_reason(reason: sp_statement_store::InvalidReason) -> InvalidReason { - match reason { - sp_statement_store::InvalidReason::NoProof => InvalidReason::NoProof, - sp_statement_store::InvalidReason::BadProof => InvalidReason::BadProof, - sp_statement_store::InvalidReason::EncodingTooLarge { submitted_size, max_size } => - InvalidReason::EncodingTooLarge { submitted_size, max_size }, - } -} - -/// Maps the internal RejectionReason to the RPC API RejectionReason type. -fn map_rejection_reason(reason: sp_statement_store::RejectionReason) -> RejectionReason { - match reason { - sp_statement_store::RejectionReason::DataTooLarge { submitted_size, available_size } => - RejectionReason::DataTooLarge { submitted_size, available_size }, - sp_statement_store::RejectionReason::ChannelPriorityTooLow { - submitted_priority, - min_priority, - } => RejectionReason::ChannelPriorityTooLow { submitted_priority, min_priority }, - sp_statement_store::RejectionReason::AccountFull { submitted_priority, min_priority } => - RejectionReason::AccountFull { submitted_priority, min_priority }, - sp_statement_store::RejectionReason::StoreFull => RejectionReason::StoreFull, - } -} - /// Statement store API pub struct StatementStore { store: Arc, @@ -150,20 +123,14 @@ impl StatementApiServer for StatementStore { .collect()) } - fn submit(&self, encoded: Bytes) -> RpcResult { + fn submit(&self, encoded: Bytes) -> RpcResult { let statement = Decode::decode(&mut &*encoded) .map_err(|e| Error::StatementStore(format!("Error decoding statement: {:?}", e)))?; match self.store.submit(statement, StatementSource::Local) { - SubmitResult::New => Ok(StatementSubmitResult::New), - SubmitResult::Known => Ok(StatementSubmitResult::Known), - // `KnownExpired` should not happen. Expired statements submitted with - // `StatementSource::Rpc` should be renewed. - SubmitResult::KnownExpired => Ok(StatementSubmitResult::KnownExpired), - SubmitResult::Rejected(reason) => - Ok(StatementSubmitResult::Rejected(map_rejection_reason(reason))), - SubmitResult::Invalid(reason) => - Ok(StatementSubmitResult::Invalid(map_invalid_reason(reason))), SubmitResult::InternalError(e) => Err(Error::StatementStore(e.to_string()).into()), + // We return the result as is but `KnownExpired` should not happen. Expired statements + // submitted with `StatementSource::Rpc` should be renewed. + result => Ok(result), } } diff --git a/substrate/primitives/statement-store/Cargo.toml b/substrate/primitives/statement-store/Cargo.toml index df66cfcfc2e65..5d963a98bdaed 100644 --- a/substrate/primitives/statement-store/Cargo.toml +++ b/substrate/primitives/statement-store/Cargo.toml @@ -18,6 +18,7 @@ targets = ["x86_64-unknown-linux-gnu"] [dependencies] codec = { features = ["derive"], workspace = true } scale-info = { features = ["derive"], workspace = true } +serde = { optional = true, features = ["alloc", "derive"], workspace = true } sp-api = { workspace = true } sp-application-crypto = { workspace = true } sp-core = { workspace = true } @@ -48,6 +49,7 @@ std = [ "hkdf?/std", "rand", "scale-info/std", + "serde?/std", "sha2", "sp-api/std", "sp-application-crypto/std", @@ -60,6 +62,7 @@ std = [ "x25519-dalek", ] serde = [ + "dep:serde", "scale-info/serde", "sp-application-crypto/serde", "sp-core/serde", diff --git a/substrate/primitives/statement-store/src/store_api.rs b/substrate/primitives/statement-store/src/store_api.rs index 7d97d1d1aefb3..e949a35242091 100644 --- a/substrate/primitives/statement-store/src/store_api.rs +++ b/substrate/primitives/statement-store/src/store_api.rs @@ -19,7 +19,8 @@ pub use crate::runtime_api::StatementSource; use crate::{Hash, Statement, Topic}; /// Statement store error. -#[derive(Debug, Eq, PartialEq, thiserror::Error)] +#[derive(Debug, Clone, Eq, PartialEq, thiserror::Error)] +#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))] pub enum Error { /// Database error. #[error("Database error: {0:?}")] @@ -33,7 +34,9 @@ pub enum Error { } /// Reason why a statement was rejected from the store. -#[derive(Debug, Eq, PartialEq)] +#[derive(Debug, Clone, Eq, PartialEq)] +#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))] +#[cfg_attr(feature = "serde", serde(tag = "reason", rename_all = "camelCase"))] pub enum RejectionReason { /// Statement data exceeds the maximum allowed size for the account. DataTooLarge { @@ -61,13 +64,15 @@ pub enum RejectionReason { } /// Reason why a statement failed validation. -#[derive(Debug, Eq, PartialEq)] +#[derive(Debug, Clone, Eq, PartialEq)] +#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))] +#[cfg_attr(feature = "serde", serde(tag = "reason", rename_all = "camelCase"))] pub enum InvalidReason { /// Statement has no proof. NoProof, /// Proof validation failed. BadProof, - /// Statement is too big for network propagation. + /// Statement exceeds max allowed statement size. EncodingTooLarge { /// The size of the submitted statement encoding. submitted_size: usize, @@ -77,15 +82,17 @@ pub enum InvalidReason { } /// Statement submission outcome -#[derive(Debug, Eq, PartialEq)] +#[derive(Debug, Clone, Eq, PartialEq)] +#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))] +#[cfg_attr(feature = "serde", serde(tag = "status", rename_all = "camelCase"))] pub enum SubmitResult { - /// Accepted as new with given score + /// Statement was accepted as new. New, - /// Known statement + /// Statement was already known. Known, - /// Known statement that's already expired. + /// Statement was already known but has expired. KnownExpired, - /// Priority is too low or the size is too big. + /// Statement was rejected because the store is full or priority is too low. Rejected(RejectionReason), /// Statement failed validation. Invalid(InvalidReason), From 534ec440caa96dc8f90da9a270689720c6d738df Mon Sep 17 00:00:00 2001 From: Alexandru Gheorghe Date: Tue, 2 Dec 2025 09:58:01 +0200 Subject: [PATCH 14/81] statement-store: api changes Signed-off-by: Alexandru Gheorghe --- substrate/client/rpc-api/src/statement/mod.rs | 110 ++++++++++++++++++ .../primitives/statement-store/src/lib.rs | 90 +++++++++++++- 2 files changed, 199 insertions(+), 1 deletion(-) diff --git a/substrate/client/rpc-api/src/statement/mod.rs b/substrate/client/rpc-api/src/statement/mod.rs index 19ef5503fdeab..1d32d680a63bd 100644 --- a/substrate/client/rpc-api/src/statement/mod.rs +++ b/substrate/client/rpc-api/src/statement/mod.rs @@ -19,12 +19,122 @@ //! Substrate Statement Store RPC API. use jsonrpsee::{core::RpcResult, proc_macros::rpc}; +use serde::{Deserialize, Serialize}; use sp_core::Bytes; pub mod error; +/// Filter for querying statements with different topics. +#[derive(Debug, Clone, Serialize, Deserialize)] +#[serde(rename_all = "camelCase")] +pub enum TopicFilter { + /// Matches all topics. + Any, + /// Matches only statements including all of the given topics. + /// Bytes are expected to be a 32-byte topic. + MatchAll(Vec), +} + +/// Filter for querying statements with different decryption key identifiers. +#[derive(Debug, Clone, Serialize, Deserialize)] +#[serde(rename_all = "camelCase")] +pub enum DecryptionKeyIdFilter { + /// Matches any statement regardless of their decryption key identifier. + Any, + /// Match only statements without a decryption key identifier. + NoDecryptionKey, + /// Match only statements with the provided decryption key identifier. + /// Bytes are expected to be a 32-byte key identifier. + Matches(Bytes), +} + +/// Filter for querying statements with different submitters. +#[derive(Debug, Clone, Serialize, Deserialize)] +#[serde(rename_all = "camelCase")] + +pub enum SubmitterFilter { + /// Matches any statement regardless of their owner identifier. + Any, + /// Match only statements with the provided owner identifier. + /// Bytes are expected to be a 32-byte owner identifier. + Matches(Bytes), +} + +/// Cursor for paginated statement queries. +#[derive(Debug, Clone, Serialize, Deserialize)] +pub enum PageCursor { + // No more pages + End, + // Cursor to fetch the next page, opaque to the client. + NextPage(Bytes), +} + +#[derive(Debug, Clone, Serialize, Deserialize)] +#[serde(rename_all = "camelCase")] +pub struct GetStatementsResponse { + pub encoded_statements: Vec, + pub next_page: PageCursor, +} + +/// Substrate statement RPC API +#[rpc(client, server)] +pub trait StatementApi2 { + /// Return statements that match the provided filters, with pagination. + /// + /// # Parameters + /// + /// - `topic_filter` — Which topics to match. Use `TopicFilter::Any` to match all topics, or + /// `TopicFilter::MatchAll(vec)` to match statements that include all provided topics. + /// - `key_filter` — Filter by decryption key identifier. Use `DecryptionKeyIdFilter::Any` to + /// ignore the decryption key, `NoDecryptionKey` to select statements without a decryption + /// key, or `Matches(id)` to select statements with the given key id. + /// - `submitter_filter` — Filter by statement submitter. Use `SubmitterFilter::Any` to match + /// any owner identifier or `SubmitterFilter::Matches(owner)` to restrict to a specific owner + /// identifier. + /// - `next_page` — Optional pagination cursor. Pass `None` to request the first page. When a + /// previous response contained a `PageCursor::NextPage(bytes)`, pass that wrapped in + /// `Some(...)` to fetch the next page. The server will return `PageCursor::End` when there + /// are no further pages. + /// - `limit` — Optional maximum number of statements to return in this page. The server may + /// enforce a maximum cap; if more results exist the response will include a `next_page` + /// cursor. + /// + /// # Returns + /// + /// Returns `RpcResult` on success. + /// - `GetStatementsResponse.encoded_statements` contains a Vec of SCALE-encoded statements as + /// `Bytes`. + /// - `GetStatementsResponse.next_page` indicates whether more pages are available (an + /// opaque cursor) or `End` if the result set is exhausted. + #[method(name = "statement_getStatements")] + fn get_statements( + &self, + topic_filter: TopicFilter, + key_filter: DecryptionKeyIdFilter, + submitter_filter: SubmitterFilter, + next_page: Option, + limit: Option, + ) -> RpcResult; + + /// Submit a SCALE-encoded statement. + /// + /// See `Statement` definition for more details. + #[method(name = "statement_submit")] + fn submit(&self, encoded: Bytes) -> RpcResult<()>; + + /// New storage subscription + #[subscription( + name = "statement_subscribeStatement" => "statement_statement", + unsubscribe = "statement_unsubscribeStatement", + item = Bytes, + with_extensions, + )] + fn subscribe_statement(&self, match_all_topics: Vec<[u8; 32]>); +} + /// Substrate statement RPC API #[rpc(client, server)] +#[deprecated(since = "0.0.0", note = "Please use StatementApi2 instead")] pub trait StatementApi { /// Return all statements, SCALE-encoded. #[method(name = "statement_dump", with_extensions)] diff --git a/substrate/primitives/statement-store/src/lib.rs b/substrate/primitives/statement-store/src/lib.rs index a1d4a5e9d8d52..0e2a1529bfeec 100644 --- a/substrate/primitives/statement-store/src/lib.rs +++ b/substrate/primitives/statement-store/src/lib.rs @@ -23,6 +23,7 @@ extern crate alloc; use alloc::vec::Vec; +use bitvec::vec::BitVec; use codec::{Decode, DecodeWithMemTracking, Encode}; use scale_info::TypeInfo; use sp_application_crypto::RuntimeAppPublic; @@ -39,8 +40,52 @@ pub type Hash = [u8; 32]; pub type BlockHash = [u8; 32]; /// Account id pub type AccountId = [u8; 32]; + /// Statement channel. -pub type Channel = [u8; 32]; +/// The first byte is the storage slot, the remaining 31 bytes are the channel id. +/// +/// The storage slot allows categorizing channels into 256 different slots, which can be used +/// for replacement preference when evicting lower priority statements. +#[derive( + DecodeWithMemTracking, + Decode, + Encode, + TypeInfo, + sp_core::RuntimeDebug, + Clone, + Copy, + PartialEq, + Eq, + Default, + core::hash::Hash, +)] +pub struct Channel([u8; 32]); + +impl Channel { + /// Create a new channel from storage slot and channel id. + pub fn new(storage_slot: u8, channel_id: [u8; 31]) -> Self { + let mut bytes = [0u8; 32]; + bytes[0] = storage_slot; + bytes[1..].copy_from_slice(&channel_id); + Channel(bytes) + } + + /// Get storage slot. + pub fn storage_slot(&self) -> u8 { + self.0[0] + } +} + +/// Preference mask for statement replacement. +#[derive( + DecodeWithMemTracking, Decode, TypeInfo, sp_core::RuntimeDebug, Clone, PartialEq, Eq, Default, +)] +pub struct ReplaceSlotPreferenceMask { + /// Mask indicating which storage slots in the statement store are preferred for replacement. + /// When statements with a lower priority are considered for replacement, we prefer to replace + /// statements whose storage slot is found in this mask. + pub storage_slots_mask: BitVec, +} /// Total number of topic fields allowed. pub const MAX_TOPICS: usize = 4; @@ -177,13 +222,45 @@ impl Field { /// Statement structure. #[derive(DecodeWithMemTracking, TypeInfo, sp_core::RuntimeDebug, Clone, PartialEq, Eq, Default)] pub struct Statement { + /// Proof used for authorizing the statement. proof: Option, + /// An identifier for the key that `Data` field may be decrypted with. decryption_key: Option, + /// Used for identifying a distinct communication channel, only a message per channel is + /// stored. + /// + /// This can be used to implement message replacement, submitting a new message with a + /// different topic or data and the same channel replaces the previous one. + /// + /// If the new statement data is bigger than the old one, submitting a statement with the same + /// channel does not guarantee that **ONLY** the old one will be replaced, as it might not fit + /// in the account quota. In that case, other statements from the same account with the lowest + /// priority might be removed. + /// + /// To facilitate better replacement strategies, the channel's storage slot (first byte) can be + /// used in conjunction with the `replacement_preference_mask` to indicate which storage slots + /// are preferred for replacement. channel: Option, + /// Message priority, if any, used for determining which statements to keep when over quota. + /// Statements with higher priority are kept over those with lower priority. priority: Option, + /// Preference mask for statement replacement, used to indicate which storage slots are + /// preferred for replacement. + /// + /// It is used to chose which lower priority statements to evict when the account is over + /// quota. + replacement_preference_mask: Option, + /// Number of topics present. num_topics: u8, + /// Topics, used for querying and filtering statements. topics: [Topic; MAX_TOPICS], + /// Statement data. data: Option>, + /// A Unix timestamp (in milliseconds) after which the statement is considered expired and it + /// will be cleaned up from the store. + /// + /// Allowed range is from [current_time, current_time + USER_MAX_EXPIRATION, default 7 days]. + expires_at_ms: u64, } impl Decode for Statement { @@ -424,11 +501,22 @@ impl Statement { self.channel } + /// Get replacement preference mask, if any. + /// Used when replacing lower priority statements. + pub fn replacement_preference_mask(&self) -> Option<&ReplaceSlotPreferenceMask> { + self.replacement_preference_mask.as_ref() + } + /// Get priority, if any. pub fn priority(&self) -> Option { self.priority } + /// Get expiration timestamp in milliseconds. + pub fn expires_at_ms(&self) -> u64 { + self.expires_at_ms + } + /// Return encoded fields that can be signed to construct or verify a proof fn signature_material(&self) -> Vec { self.encoded(true) From af1be1df81d49bcc7b1d066bda5b40f681176020 Mon Sep 17 00:00:00 2001 From: Alexandru Gheorghe Date: Wed, 3 Dec 2025 16:04:24 +0200 Subject: [PATCH 15/81] remove replacement_preference_mask Signed-off-by: Alexandru Gheorghe --- .../primitives/statement-store/src/lib.rs | 55 +------------------ 1 file changed, 1 insertion(+), 54 deletions(-) diff --git a/substrate/primitives/statement-store/src/lib.rs b/substrate/primitives/statement-store/src/lib.rs index cb7c0fcc0ce7f..d658f2d9623b9 100644 --- a/substrate/primitives/statement-store/src/lib.rs +++ b/substrate/primitives/statement-store/src/lib.rs @@ -42,50 +42,7 @@ pub type BlockHash = [u8; 32]; pub type AccountId = [u8; 32]; /// Statement channel. -/// The first byte is the storage slot, the remaining 31 bytes are the channel id. -/// -/// The storage slot allows categorizing channels into 256 different slots, which can be used -/// for replacement preference when evicting lower priority statements. -#[derive( - DecodeWithMemTracking, - Decode, - Encode, - TypeInfo, - sp_core::RuntimeDebug, - Clone, - Copy, - PartialEq, - Eq, - Default, - core::hash::Hash, -)] -pub struct Channel([u8; 32]); - -impl Channel { - /// Create a new channel from storage slot and channel id. - pub fn new(storage_slot: u8, channel_id: [u8; 31]) -> Self { - let mut bytes = [0u8; 32]; - bytes[0] = storage_slot; - bytes[1..].copy_from_slice(&channel_id); - Channel(bytes) - } - - /// Get storage slot. - pub fn storage_slot(&self) -> u8 { - self.0[0] - } -} - -/// Preference mask for statement replacement. -#[derive( - DecodeWithMemTracking, Decode, TypeInfo, sp_core::RuntimeDebug, Clone, PartialEq, Eq, Default, -)] -pub struct ReplaceSlotPreferenceMask { - /// Mask indicating which storage slots in the statement store are preferred for replacement. - /// When statements with a lower priority are considered for replacement, we prefer to replace - /// statements whose storage slot is found in this mask. - pub storage_slots_mask: BitVec, -} +pub type Channel = [u8; 32]; /// Total number of topic fields allowed. pub const MAX_TOPICS: usize = 4; @@ -236,20 +193,10 @@ pub struct Statement { /// channel does not guarantee that **ONLY** the old one will be replaced, as it might not fit /// in the account quota. In that case, other statements from the same account with the lowest /// priority might be removed. - /// - /// To facilitate better replacement strategies, the channel's storage slot (first byte) can be - /// used in conjunction with the `replacement_preference_mask` to indicate which storage slots - /// are preferred for replacement. channel: Option, /// Message priority, if any, used for determining which statements to keep when over quota. /// Statements with higher priority are kept over those with lower priority. priority: Option, - /// Preference mask for statement replacement, used to indicate which storage slots are - /// preferred for replacement. - /// - /// It is used to chose which lower priority statements to evict when the account is over - /// quota. - replacement_preference_mask: Option, /// Number of topics present. num_topics: u8, /// Topics, used for querying and filtering statements. From c39491425d1990d01ed759c4df1cee897c409e0c Mon Sep 17 00:00:00 2001 From: Alexandru Gheorghe Date: Wed, 3 Dec 2025 16:06:36 +0200 Subject: [PATCH 16/81] remove unused Signed-off-by: Alexandru Gheorghe --- substrate/primitives/statement-store/src/lib.rs | 1 - 1 file changed, 1 deletion(-) diff --git a/substrate/primitives/statement-store/src/lib.rs b/substrate/primitives/statement-store/src/lib.rs index d658f2d9623b9..0ffe891cefb5f 100644 --- a/substrate/primitives/statement-store/src/lib.rs +++ b/substrate/primitives/statement-store/src/lib.rs @@ -23,7 +23,6 @@ extern crate alloc; use alloc::vec::Vec; -use bitvec::vec::BitVec; use codec::{Decode, DecodeWithMemTracking, Encode}; use scale_info::TypeInfo; use sp_application_crypto::RuntimeAppPublic; From 3ad147870c910747a48cbf21aca85f9e7ad48878 Mon Sep 17 00:00:00 2001 From: Alexandru Gheorghe Date: Wed, 3 Dec 2025 16:08:10 +0200 Subject: [PATCH 17/81] remove unused Signed-off-by: Alexandru Gheorghe --- substrate/primitives/statement-store/src/lib.rs | 1 - 1 file changed, 1 deletion(-) diff --git a/substrate/primitives/statement-store/src/lib.rs b/substrate/primitives/statement-store/src/lib.rs index 0ffe891cefb5f..7348c89f82746 100644 --- a/substrate/primitives/statement-store/src/lib.rs +++ b/substrate/primitives/statement-store/src/lib.rs @@ -39,7 +39,6 @@ pub type Hash = [u8; 32]; pub type BlockHash = [u8; 32]; /// Account id pub type AccountId = [u8; 32]; - /// Statement channel. pub type Channel = [u8; 32]; From 31d3f53cfdcc2878929df69b0709b47184473f4f Mon Sep 17 00:00:00 2001 From: Alexandru Gheorghe Date: Wed, 3 Dec 2025 16:09:39 +0200 Subject: [PATCH 18/81] remove unused Signed-off-by: Alexandru Gheorghe --- substrate/client/rpc-api/src/statement/mod.rs | 3 --- 1 file changed, 3 deletions(-) diff --git a/substrate/client/rpc-api/src/statement/mod.rs b/substrate/client/rpc-api/src/statement/mod.rs index 6abe55d487b85..107045da3c1c8 100644 --- a/substrate/client/rpc-api/src/statement/mod.rs +++ b/substrate/client/rpc-api/src/statement/mod.rs @@ -25,9 +25,6 @@ use sp_statement_store::SubmitResult; pub mod error; -// Re-export types from primitives with serde support -pub use sp_statement_store::SubmitResult; - /// Filter for querying statements with different topics. #[derive(Debug, Clone, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] From acf0103617842838f4e559a51d6fb57347a1c4d7 Mon Sep 17 00:00:00 2001 From: Alexandru Gheorghe Date: Tue, 9 Dec 2025 13:27:24 +0200 Subject: [PATCH 19/81] address feedback Signed-off-by: Alexandru Gheorghe --- substrate/client/rpc-api/src/statement/mod.rs | 102 +++--------------- .../primitives/statement-store/src/lib.rs | 56 ++++++---- 2 files changed, 46 insertions(+), 112 deletions(-) diff --git a/substrate/client/rpc-api/src/statement/mod.rs b/substrate/client/rpc-api/src/statement/mod.rs index 107045da3c1c8..b4b4ff0bacff4 100644 --- a/substrate/client/rpc-api/src/statement/mod.rs +++ b/substrate/client/rpc-api/src/statement/mod.rs @@ -25,120 +25,44 @@ use sp_statement_store::SubmitResult; pub mod error; -/// Filter for querying statements with different topics. +/// Filter for subscribing to statements with different topics. #[derive(Debug, Clone, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub enum TopicFilter { /// Matches all topics. Any, /// Matches only statements including all of the given topics. - /// Bytes are expected to be a 32-byte topic. + /// Bytes are expected to be a 32-byte topic. Up to `4` topics can be provided. MatchAll(Vec), -} - -/// Filter for querying statements with different decryption key identifiers. -#[derive(Debug, Clone, Serialize, Deserialize)] -#[serde(rename_all = "camelCase")] -pub enum DecryptionKeyIdFilter { - /// Matches any statement regardless of their decryption key identifier. - Any, - /// Match only statements without a decryption key identifier. - NoDecryptionKey, - /// Match only statements with the provided decryption key identifier. - /// Bytes are expected to be a 32-byte key identifier. - Matches(Bytes), -} - -/// Filter for querying statements with different submitters. -#[derive(Debug, Clone, Serialize, Deserialize)] -#[serde(rename_all = "camelCase")] -pub enum SubmitterFilter { - /// Matches any statement regardless of their owner identifier. - Any, - /// Match only statements with the provided owner identifier. - /// Bytes are expected to be a 32-byte owner identifier. - Matches(Bytes), -} - -/// Cursor for paginated statement queries. -#[derive(Debug, Clone, Serialize, Deserialize)] -pub enum PageCursor { - // No more pages - End, - // Cursor to fetch the next page, opaque to the client. - NextPage(Bytes), -} - -#[derive(Debug, Clone, Serialize, Deserialize)] -#[serde(rename_all = "camelCase")] -pub struct GetStatementsResponse { - /// SCALE-encoded statements matching the query. - pub encoded_statements: Vec, - /// Cursor for the next page, or `End` if there are no further pages. - pub next_page: PageCursor, + /// Matches statements including any of the given topics. + /// Bytes are expected to be a 32-byte topic. Up to `128` topics can be provided. + MatchAny(Vec), } /// Substrate statement RPC API #[rpc(client, server)] pub trait StatementApi2 { - /// Return statements that match the provided filters, with pagination. - /// - /// # Parameters - /// - /// - `topic_filter` — Which topics to match. Use `TopicFilter::Any` to match all topics, or - /// `TopicFilter::MatchAll(vec)` to match statements that include all provided topics. - /// - `key_filter` — Filter by decryption key identifier. Use `DecryptionKeyIdFilter::Any` to - /// ignore the decryption key, `NoDecryptionKey` to select statements without a decryption - /// key, or `Matches(id)` to select statements with the given key id. - /// - `submitter_filter` — Filter by statement submitter. Use `SubmitterFilter::Any` to match - /// any owner identifier or `SubmitterFilter::Matches(owner)` to restrict to a specific owner - /// identifier. - /// - `next_page` — Optional pagination cursor. Pass `None` to request the first page. When a - /// previous response contained a `PageCursor::NextPage(bytes)`, pass that wrapped in - /// `Some(...)` to fetch the next page. The server will return `PageCursor::End` when there - /// are no further pages. - /// - `limit` — Optional maximum number of statements to return in this page. The server may - /// enforce a maximum cap; if more results exist the response will include a `next_page` - /// cursor. - /// - /// # Returns - /// - /// Returns `RpcResult` on success. - /// - `GetStatementsResponse.encoded_statements` contains a Vec of SCALE-encoded statements as - /// `Bytes`. - /// - `GetStatementsResponse.next_page` indicates whether more pages are available (an - /// opaque cursor) or `End` if the result set is exhausted. - #[method(name = "statement_getStatements")] - fn get_statements( - &self, - topic_filter: TopicFilter, - key_filter: DecryptionKeyIdFilter, - submitter_filter: SubmitterFilter, - next_page: Option, - limit: Option, - ) -> RpcResult; - /// Subscribe to new statements that match the provided filters. /// /// # Parameters /// - /// See `get_statements` for parameter descriptions. + /// - `topic_filter` — Which topics to match. Use `TopicFilter::Any` to match all topics, + /// `TopicFilter::MatchAll(vec)` to match statements that include all provided topics, or + /// `TopicFilter::MatchAny(vec)` to match statements that include any of the provided topics. /// /// # Returns /// /// Returns a stream of SCALE-encoded statements as `Bytes`. + /// When a subscription is initiated the endpoint will immediately return the matching + /// statements already in the store. Subsequent matching statements will be pushed to the client + /// as they are added to the store. #[subscription( name = "statement_subscribeStatement" => "statement_statement", unsubscribe = "statement_unsubscribeStatement", item = Bytes, with_extensions, )] - fn subscribe_statement( - &self, - topic_filter: TopicFilter, - key_filter: DecryptionKeyIdFilter, - submitter_filter: SubmitterFilter, - ); + fn subscribe_statement(&self, topic_filter: TopicFilter); /// Submit a SCALE-encoded statement. /// @@ -151,7 +75,7 @@ pub trait StatementApi2 { /// Substrate statement RPC API #[rpc(client, server)] -#[deprecated(since = "0.0.0", note = "Please use StatementApi2 instead")] +#[deprecated(since = "0.0.0", note = "Please use StatementApi2 instead, will be removed soon.")] pub trait StatementApi { /// Return all statements, SCALE-encoded. #[method(name = "statement_dump", with_extensions)] diff --git a/substrate/primitives/statement-store/src/lib.rs b/substrate/primitives/statement-store/src/lib.rs index 7348c89f82746..9fe514541b986 100644 --- a/substrate/primitives/statement-store/src/lib.rs +++ b/substrate/primitives/statement-store/src/lib.rs @@ -150,8 +150,8 @@ pub enum Field { AuthenticityProof(Proof) = 0, /// An identifier for the key that `Data` field may be decrypted with. DecryptionKey(DecryptionKey) = 1, - /// Priority when competing with other messages from the same sender. - Priority(u32) = 2, + /// Expiry of the statement. + Expiry(u64) = 2, /// Account channel to use. Only one message per `(account, channel)` pair is allowed. Channel(Channel) = 3, /// First statement topic. @@ -180,6 +180,7 @@ pub struct Statement { /// Proof used for authorizing the statement. proof: Option, /// An identifier for the key that `Data` field may be decrypted with. + #[deprecated(note = "Experimental feature, may be removed in future releases")] decryption_key: Option, /// Used for identifying a distinct communication channel, only a message per channel is /// stored. @@ -192,16 +193,25 @@ pub struct Statement { /// in the account quota. In that case, other statements from the same account with the lowest /// priority might be removed. channel: Option, - /// Message priority, if any, used for determining which statements to keep when over quota. - /// Statements with higher priority are kept over those with lower priority. - priority: Option, + /// Message priority, used for determining which statements to keep. + /// + /// The the most significant 32 bits represents the expiration timestamp (in seconds since + /// UNIX epoch) after which the statement gets removed. These ensure that statements with a + /// higher expiration time have a higher priority. + /// The lower 32 bits represents an arbitrary sequence number used to order statements with the + /// same expiration time. + /// + /// Higher values indicate a higher priority. + /// This is used in two case: + /// 1) When an account exceeds its quota and some statements need to be removed. Statements + /// with the lowest priority are removed first. + /// 2) When multiple statements are submitted on the same channel, the one with the highest + /// priority replaces the one with the same channel. + expiry: u64, /// Number of topics present. num_topics: u8, /// Topics, used for querying and filtering statements. topics: [Topic; MAX_TOPICS], - /// A Unix timestamp (in milliseconds) after which the statement is considered expired and it - /// will be cleaned up from the store. - expires_at_ms: u64, /// Statement data. data: Option>, } @@ -222,7 +232,7 @@ impl Decode for Statement { match field { Field::AuthenticityProof(p) => statement.set_proof(p), Field::DecryptionKey(key) => statement.set_decryption_key(key), - Field::Priority(p) => statement.set_priority(p), + Field::Expiry(p) => statement.set_expiry(p), Field::Channel(c) => statement.set_channel(c), Field::Topic1(t) => statement.set_topic(0, t), Field::Topic2(t) => statement.set_topic(1, t), @@ -445,8 +455,8 @@ impl Statement { } /// Get priority, if any. - pub fn priority(&self) -> Option { - self.priority + pub fn expiry(&self) -> u64 { + self.expiry } /// Return encoded fields that can be signed to construct or verify a proof @@ -464,9 +474,9 @@ impl Statement { self.proof = Some(proof) } - /// Set statement priority. - pub fn set_priority(&mut self, priority: u32) { - self.priority = Some(priority) + /// Set statement expiry. + pub fn set_expiry(&mut self, expiry: u64) { + self.expiry = expiry; } /// Set statement channel. @@ -495,9 +505,9 @@ impl Statement { fn encoded(&self, for_signing: bool) -> Vec { // Encoding matches that of Vec. Basically this just means accepting that there // will be a prefix of vector length. - let num_fields = if !for_signing && self.proof.is_some() { 1 } else { 0 } + + // Expiry field is always present. + let num_fields = if !for_signing && self.proof.is_some() { 2 } else { 1 } + if self.decryption_key.is_some() { 1 } else { 0 } + - if self.priority.is_some() { 1 } else { 0 } + if self.channel.is_some() { 1 } else { 0 } + if self.data.is_some() { 1 } else { 0 } + self.num_topics as u32; @@ -519,10 +529,10 @@ impl Statement { 1u8.encode_to(&mut output); decryption_key.encode_to(&mut output); } - if let Some(priority) = &self.priority { - 2u8.encode_to(&mut output); - priority.encode_to(&mut output); - } + + 2u8.encode_to(&mut output); + self.expiry().encode_to(&mut output); + if let Some(channel) = &self.channel { 3u8.encode_to(&mut output); channel.encode_to(&mut output); @@ -594,7 +604,7 @@ mod test { let fields = vec![ Field::AuthenticityProof(proof.clone()), Field::DecryptionKey(decryption_key), - Field::Priority(priority), + Field::Expiry(priority), Field::Channel(channel), Field::Topic1(topic1), Field::Topic2(topic2), @@ -616,7 +626,7 @@ mod test { let priority = 999; let fields = vec![ - Field::Priority(priority), + Field::Expiry(priority), Field::Topic1(topic1), Field::Topic1(topic1), Field::Topic2(topic2), @@ -626,7 +636,7 @@ mod test { assert!(Statement::decode(&mut fields.as_slice()).is_err()); let fields = - vec![Field::Topic1(topic1), Field::Priority(priority), Field::Topic2(topic2)].encode(); + vec![Field::Topic1(topic1), Field::Expiry(priority), Field::Topic2(topic2)].encode(); assert!(Statement::decode(&mut fields.as_slice()).is_err()); } From 65cd2ecca23c500d34c5d20f90776176328ddffb Mon Sep 17 00:00:00 2001 From: Alexandru Gheorghe Date: Tue, 9 Dec 2025 16:32:36 +0200 Subject: [PATCH 20/81] fixup documentation Signed-off-by: Alexandru Gheorghe --- substrate/primitives/statement-store/src/lib.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/substrate/primitives/statement-store/src/lib.rs b/substrate/primitives/statement-store/src/lib.rs index 9fe514541b986..c0682767231f5 100644 --- a/substrate/primitives/statement-store/src/lib.rs +++ b/substrate/primitives/statement-store/src/lib.rs @@ -186,7 +186,7 @@ pub struct Statement { /// stored. /// /// This can be used to implement message replacement, submitting a new message with a - /// different topic or data and the same channel replaces the previous one. + /// different topic/data and the same channel and a greater expiry replaces the previous one. /// /// If the new statement data is bigger than the old one, submitting a statement with the same /// channel does not guarantee that **ONLY** the old one will be replaced, as it might not fit From e97cb8f659364790795be81eaddf593f03563a55 Mon Sep 17 00:00:00 2001 From: Alexandru Gheorghe Date: Tue, 9 Dec 2025 16:43:30 +0200 Subject: [PATCH 21/81] fix documentation Signed-off-by: Alexandru Gheorghe --- substrate/primitives/statement-store/src/lib.rs | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/substrate/primitives/statement-store/src/lib.rs b/substrate/primitives/statement-store/src/lib.rs index c0682767231f5..caa2b4f0b49bc 100644 --- a/substrate/primitives/statement-store/src/lib.rs +++ b/substrate/primitives/statement-store/src/lib.rs @@ -191,11 +191,11 @@ pub struct Statement { /// If the new statement data is bigger than the old one, submitting a statement with the same /// channel does not guarantee that **ONLY** the old one will be replaced, as it might not fit /// in the account quota. In that case, other statements from the same account with the lowest - /// priority might be removed. + /// expiry might be removed. channel: Option, - /// Message priority, used for determining which statements to keep. + /// Message expiry, used for determining which statements to keep. /// - /// The the most significant 32 bits represents the expiration timestamp (in seconds since + /// The most significant 32 bits represents the expiration timestamp (in seconds since /// UNIX epoch) after which the statement gets removed. These ensure that statements with a /// higher expiration time have a higher priority. /// The lower 32 bits represents an arbitrary sequence number used to order statements with the @@ -204,9 +204,9 @@ pub struct Statement { /// Higher values indicate a higher priority. /// This is used in two case: /// 1) When an account exceeds its quota and some statements need to be removed. Statements - /// with the lowest priority are removed first. + /// with the lowest `expiry` are removed first. /// 2) When multiple statements are submitted on the same channel, the one with the highest - /// priority replaces the one with the same channel. + /// expiry replaces the one with the same channel. expiry: u64, /// Number of topics present. num_topics: u8, From eca03c7f38c67f45cda20449a2edce6455cee7fe Mon Sep 17 00:00:00 2001 From: Alexandru Gheorghe Date: Tue, 9 Dec 2025 16:47:34 +0200 Subject: [PATCH 22/81] remove non-api changes for now Signed-off-by: Alexandru Gheorghe --- .../primitives/statement-store/src/lib.rs | 26 +++++++++---------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/substrate/primitives/statement-store/src/lib.rs b/substrate/primitives/statement-store/src/lib.rs index caa2b4f0b49bc..def20858e4861 100644 --- a/substrate/primitives/statement-store/src/lib.rs +++ b/substrate/primitives/statement-store/src/lib.rs @@ -150,8 +150,8 @@ pub enum Field { AuthenticityProof(Proof) = 0, /// An identifier for the key that `Data` field may be decrypted with. DecryptionKey(DecryptionKey) = 1, - /// Expiry of the statement. - Expiry(u64) = 2, + /// Priority when competing with other messages from the same sender. + Priority(u32) = 2, /// Account channel to use. Only one message per `(account, channel)` pair is allowed. Channel(Channel) = 3, /// First statement topic. @@ -232,7 +232,7 @@ impl Decode for Statement { match field { Field::AuthenticityProof(p) => statement.set_proof(p), Field::DecryptionKey(key) => statement.set_decryption_key(key), - Field::Expiry(p) => statement.set_expiry(p), + Field::Priority(p) => statement.set_priority(p), Field::Channel(c) => statement.set_channel(c), Field::Topic1(t) => statement.set_topic(0, t), Field::Topic2(t) => statement.set_topic(1, t), @@ -454,7 +454,7 @@ impl Statement { self.channel } - /// Get priority, if any. + /// Get expiry. pub fn expiry(&self) -> u64 { self.expiry } @@ -505,9 +505,9 @@ impl Statement { fn encoded(&self, for_signing: bool) -> Vec { // Encoding matches that of Vec. Basically this just means accepting that there // will be a prefix of vector length. - // Expiry field is always present. - let num_fields = if !for_signing && self.proof.is_some() { 2 } else { 1 } + + let num_fields = if !for_signing && self.proof.is_some() { 1 } else { 0 } + if self.decryption_key.is_some() { 1 } else { 0 } + + if self.priority.is_some() { 1 } else { 0 } + if self.channel.is_some() { 1 } else { 0 } + if self.data.is_some() { 1 } else { 0 } + self.num_topics as u32; @@ -529,10 +529,10 @@ impl Statement { 1u8.encode_to(&mut output); decryption_key.encode_to(&mut output); } - - 2u8.encode_to(&mut output); - self.expiry().encode_to(&mut output); - + if let Some(priority) = &self.priority { + 2u8.encode_to(&mut output); + priority.encode_to(&mut output); + } if let Some(channel) = &self.channel { 3u8.encode_to(&mut output); channel.encode_to(&mut output); @@ -604,7 +604,7 @@ mod test { let fields = vec![ Field::AuthenticityProof(proof.clone()), Field::DecryptionKey(decryption_key), - Field::Expiry(priority), + Field::Priority(priority), Field::Channel(channel), Field::Topic1(topic1), Field::Topic2(topic2), @@ -626,7 +626,7 @@ mod test { let priority = 999; let fields = vec![ - Field::Expiry(priority), + Field::Priority(priority), Field::Topic1(topic1), Field::Topic1(topic1), Field::Topic2(topic2), @@ -636,7 +636,7 @@ mod test { assert!(Statement::decode(&mut fields.as_slice()).is_err()); let fields = - vec![Field::Topic1(topic1), Field::Expiry(priority), Field::Topic2(topic2)].encode(); + vec![Field::Topic1(topic1), Field::Priority(priority), Field::Topic2(topic2)].encode(); assert!(Statement::decode(&mut fields.as_slice()).is_err()); } From f43fc81cce506aac2c2c3dbdfaef4540a8150b40 Mon Sep 17 00:00:00 2001 From: Alexandru Gheorghe Date: Tue, 9 Dec 2025 16:55:55 +0200 Subject: [PATCH 23/81] fix typos Signed-off-by: Alexandru Gheorghe --- substrate/primitives/statement-store/src/lib.rs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/substrate/primitives/statement-store/src/lib.rs b/substrate/primitives/statement-store/src/lib.rs index def20858e4861..2afaf69e04949 100644 --- a/substrate/primitives/statement-store/src/lib.rs +++ b/substrate/primitives/statement-store/src/lib.rs @@ -186,12 +186,12 @@ pub struct Statement { /// stored. /// /// This can be used to implement message replacement, submitting a new message with a - /// different topic/data and the same channel and a greater expiry replaces the previous one. + /// different topic/data on the same channel and a greater expiry replaces the previous one. /// /// If the new statement data is bigger than the old one, submitting a statement with the same /// channel does not guarantee that **ONLY** the old one will be replaced, as it might not fit /// in the account quota. In that case, other statements from the same account with the lowest - /// expiry might be removed. + /// expiry will be removed. channel: Option, /// Message expiry, used for determining which statements to keep. /// @@ -202,7 +202,7 @@ pub struct Statement { /// same expiration time. /// /// Higher values indicate a higher priority. - /// This is used in two case: + /// This is used in two cases: /// 1) When an account exceeds its quota and some statements need to be removed. Statements /// with the lowest `expiry` are removed first. /// 2) When multiple statements are submitted on the same channel, the one with the highest From 849c17f55d1a05cd549941fc192986796d2b5cb4 Mon Sep 17 00:00:00 2001 From: Alexandru Gheorghe Date: Tue, 9 Dec 2025 16:56:59 +0200 Subject: [PATCH 24/81] remove original api Signed-off-by: Alexandru Gheorghe --- substrate/client/rpc-api/src/statement/mod.rs | 74 +------------------ 1 file changed, 1 insertion(+), 73 deletions(-) diff --git a/substrate/client/rpc-api/src/statement/mod.rs b/substrate/client/rpc-api/src/statement/mod.rs index b4b4ff0bacff4..0de1b31545b8b 100644 --- a/substrate/client/rpc-api/src/statement/mod.rs +++ b/substrate/client/rpc-api/src/statement/mod.rs @@ -41,7 +41,7 @@ pub enum TopicFilter { /// Substrate statement RPC API #[rpc(client, server)] -pub trait StatementApi2 { +pub trait StatementApi { /// Subscribe to new statements that match the provided filters. /// /// # Parameters @@ -72,75 +72,3 @@ pub trait StatementApi2 { #[method(name = "statement_submit")] fn submit(&self, encoded: Bytes) -> RpcResult; } - -/// Substrate statement RPC API -#[rpc(client, server)] -#[deprecated(since = "0.0.0", note = "Please use StatementApi2 instead, will be removed soon.")] -pub trait StatementApi { - /// Return all statements, SCALE-encoded. - #[method(name = "statement_dump", with_extensions)] - fn dump(&self) -> RpcResult>; - - /// Return the data of all known statements which include all topics and have no `DecryptionKey` - /// field. - /// - /// To get the statement, and not just the data, use `statement_broadcastsStatement`. - #[method(name = "statement_broadcasts")] - fn broadcasts(&self, match_all_topics: Vec<[u8; 32]>) -> RpcResult>; - - /// Return the data of all known statements whose decryption key is identified as `dest` (this - /// will generally be the public key or a hash thereof for symmetric ciphers, or a hash of the - /// private key for symmetric ciphers). - /// - /// To get the statement, and not just the data, use `statement_postedStatement`. - #[method(name = "statement_posted")] - fn posted(&self, match_all_topics: Vec<[u8; 32]>, dest: [u8; 32]) -> RpcResult>; - - /// Return the decrypted data of all known statements whose decryption key is identified as - /// `dest`. The key must be available to the client. - /// - /// To get the statement, and not just the data, use `statement_postedClearStatement`. - #[method(name = "statement_postedClear")] - fn posted_clear( - &self, - match_all_topics: Vec<[u8; 32]>, - dest: [u8; 32], - ) -> RpcResult>; - - /// Return all known statements which include all topics and have no `DecryptionKey` - /// field. - /// - /// This returns the SCALE-encoded statements not just the data as in rpc - /// `statement_broadcasts`. - #[method(name = "statement_broadcastsStatement")] - fn broadcasts_stmt(&self, match_all_topics: Vec<[u8; 32]>) -> RpcResult>; - - /// Return all known statements whose decryption key is identified as `dest` (this - /// will generally be the public key or a hash thereof for symmetric ciphers, or a hash of the - /// private key for symmetric ciphers). - /// - /// This returns the SCALE-encoded statements not just the data as in rpc `statement_posted`. - #[method(name = "statement_postedStatement")] - fn posted_stmt(&self, match_all_topics: Vec<[u8; 32]>, dest: [u8; 32]) - -> RpcResult>; - - /// Return the statement and the decrypted data of all known statements whose decryption key is - /// identified as `dest`. The key must be available to the client. - /// - /// This returns for each statement: the SCALE-encoded statement concatenated to the decrypted - /// data. Not just the data as in rpc `statement_postedClear`. - #[method(name = "statement_postedClearStatement")] - fn posted_clear_stmt( - &self, - match_all_topics: Vec<[u8; 32]>, - dest: [u8; 32], - ) -> RpcResult>; - - /// Submit a pre-encoded statement. - #[method(name = "statement_submit")] - fn submit(&self, encoded: Bytes) -> RpcResult; - - /// Remove a statement from the store. - #[method(name = "statement_remove")] - fn remove(&self, statement_hash: [u8; 32]) -> RpcResult<()>; -} From dad2bd38cc7fbad9d48e1fb3e36faf22f03f2632 Mon Sep 17 00:00:00 2001 From: Alexandru Gheorghe Date: Tue, 9 Dec 2025 16:51:04 +0200 Subject: [PATCH 25/81] statement-store: implement new api Signed-off-by: Alexandru Gheorghe --- Cargo.lock | 9 + .../polkadot-omni-node/lib/src/common/rpc.rs | 4 +- .../polkadot-omni-node/lib/src/common/spec.rs | 4 +- .../lib/src/common/statement_store.rs | 2 +- .../polkadot-omni-node/lib/src/nodes/aura.rs | 3 +- cumulus/zombienet/zombienet-sdk/Cargo.toml | 2 +- .../tests/zombie_ci/statement_store.rs | 55 +- .../tests/zombie_ci/statement_store_bench.rs | 4 +- substrate/client/rpc-api/src/statement/mod.rs | 17 +- substrate/client/rpc/Cargo.toml | 6 + substrate/client/rpc/src/statement/mod.rs | 164 +++-- substrate/client/rpc/src/statement/tests.rs | 163 +++++ substrate/client/statement-store/Cargo.toml | 3 + substrate/client/statement-store/src/lib.rs | 291 ++++++-- .../statement-store/src/subscription.rs | 620 ++++++++++++++++++ substrate/client/utils/src/id_sequence.rs | 12 + .../primitives/statement-store/src/lib.rs | 68 +- .../statement-store/src/store_api.rs | 76 ++- substrate/test-utils/runtime/Cargo.toml | 1 + substrate/test-utils/runtime/src/lib.rs | 28 +- 20 files changed, 1308 insertions(+), 224 deletions(-) create mode 100644 substrate/client/rpc/src/statement/tests.rs create mode 100644 substrate/client/statement-store/src/subscription.rs diff --git a/Cargo.lock b/Cargo.lock index d129f4eea452c..a013929dfdb73 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -20734,7 +20734,9 @@ name = "sc-rpc" version = "29.0.0" dependencies = [ "assert_matches", + "async-channel 1.9.0", "futures", + "futures-timer", "jsonrpsee", "log", "parity-scale-codec", @@ -20743,9 +20745,11 @@ dependencies = [ "sc-block-builder", "sc-chain-spec", "sc-client-api", + "sc-keystore", "sc-mixnet", "sc-network", "sc-rpc-api", + "sc-statement-store", "sc-tracing", "sc-transaction-pool", "sc-transaction-pool-api", @@ -20764,6 +20768,7 @@ dependencies = [ "sp-statement-store", "sp-version", "substrate-test-runtime-client", + "tempfile", "tokio", ] @@ -21000,13 +21005,16 @@ dependencies = [ name = "sc-statement-store" version = "10.0.0" dependencies = [ + "async-channel 1.9.0", "criterion", + "futures", "log", "parity-db", "parking_lot 0.12.3", "sc-client-api", "sc-keystore", "sc-network-statement", + "sc-utils", "sp-api", "sp-blockchain", "sp-core 28.0.0", @@ -24750,6 +24758,7 @@ dependencies = [ "sp-runtime", "sp-session", "sp-state-machine", + "sp-statement-store", "sp-tracing 16.0.0", "sp-transaction-pool", "sp-trie", diff --git a/cumulus/polkadot-omni-node/lib/src/common/rpc.rs b/cumulus/polkadot-omni-node/lib/src/common/rpc.rs index c97af2c9d7ae6..51841a3516dee 100644 --- a/cumulus/polkadot-omni-node/lib/src/common/rpc.rs +++ b/cumulus/polkadot-omni-node/lib/src/common/rpc.rs @@ -41,6 +41,7 @@ pub(crate) trait BuildRpcExtensions { backend: Arc, pool: Arc, statement_store: Option>, + spawn_handle: Arc, ) -> sc_service::error::Result; } @@ -66,6 +67,7 @@ where sc_transaction_pool::TransactionPoolHandle>, >, statement_store: Option>, + spawn_handle: Arc, ) -> sc_service::error::Result { let build = || -> Result> { let mut module = RpcExtension::new(()); @@ -74,7 +76,7 @@ where module.merge(TransactionPayment::new(client.clone()).into_rpc())?; module.merge(StateMigration::new(client.clone(), backend).into_rpc())?; if let Some(statement_store) = statement_store { - module.merge(StatementStore::new(statement_store).into_rpc())?; + module.merge(StatementStore::new(statement_store, spawn_handle).into_rpc())?; } module.merge(Dev::new(client).into_rpc())?; diff --git a/cumulus/polkadot-omni-node/lib/src/common/spec.rs b/cumulus/polkadot-omni-node/lib/src/common/spec.rs index eadb68c502537..e03728d4a44e8 100644 --- a/cumulus/polkadot-omni-node/lib/src/common/spec.rs +++ b/cumulus/polkadot-omni-node/lib/src/common/spec.rs @@ -433,18 +433,20 @@ pub(crate) trait NodeSpec: BaseNodeSpec { ); } + let spawn_handle = Arc::new(task_manager.spawn_handle()); + let rpc_builder = { let client = client.clone(); let transaction_pool = transaction_pool.clone(); let backend_for_rpc = backend.clone(); let statement_store = statement_store.clone(); - Box::new(move |_| { Self::BuildRpcExtensions::build_rpc_extensions( client.clone(), backend_for_rpc.clone(), transaction_pool.clone(), statement_store.clone(), + spawn_handle.clone(), ) }) }; diff --git a/cumulus/polkadot-omni-node/lib/src/common/statement_store.rs b/cumulus/polkadot-omni-node/lib/src/common/statement_store.rs index 604103e6c1a37..219ee6793f31b 100644 --- a/cumulus/polkadot-omni-node/lib/src/common/statement_store.rs +++ b/cumulus/polkadot-omni-node/lib/src/common/statement_store.rs @@ -70,7 +70,7 @@ pub(crate) fn build_statement_store< client, local_keystore, parachain_config.prometheus_registry(), - &task_manager.spawn_handle(), + Box::new(task_manager.spawn_handle()), ) .map_err(|e| sc_service::Error::Application(Box::new(e) as Box<_>))?; let statement_protocol_executor = { diff --git a/cumulus/polkadot-omni-node/lib/src/nodes/aura.rs b/cumulus/polkadot-omni-node/lib/src/nodes/aura.rs index bbdce78d0121d..218281d4db949 100644 --- a/cumulus/polkadot-omni-node/lib/src/nodes/aura.rs +++ b/cumulus/polkadot-omni-node/lib/src/nodes/aura.rs @@ -349,7 +349,7 @@ where ); }, } - + let spawn_handle = Arc::new(task_manager.spawn_handle()); let rpc_extensions_builder = { let client = client.clone(); let transaction_pool = transaction_pool.clone(); @@ -361,6 +361,7 @@ where backend_for_rpc.clone(), transaction_pool.clone(), None, + spawn_handle.clone(), )?; Ok(module) }) diff --git a/cumulus/zombienet/zombienet-sdk/Cargo.toml b/cumulus/zombienet/zombienet-sdk/Cargo.toml index 52f1a6e6364fb..781af19b09c29 100644 --- a/cumulus/zombienet/zombienet-sdk/Cargo.toml +++ b/cumulus/zombienet/zombienet-sdk/Cargo.toml @@ -21,7 +21,7 @@ zombienet-orchestrator = { workspace = true } zombienet-configuration = { workspace = true } cumulus-zombienet-sdk-helpers = { workspace = true } cumulus-test-runtime = { workspace = true } -sp-statement-store = { workspace = true, default-features = true } +sp-statement-store = { workspace = true, features = ["serde"], default-features = true } sc-statement-store = { workspace = true, default-features = true } sp-keyring = { workspace = true, default-features = true } sp-core = { workspace = true, default-features = true } diff --git a/cumulus/zombienet/zombienet-sdk/tests/zombie_ci/statement_store.rs b/cumulus/zombienet/zombienet-sdk/tests/zombie_ci/statement_store.rs index 988441b15b835..69fc1721e473a 100644 --- a/cumulus/zombienet/zombienet-sdk/tests/zombie_ci/statement_store.rs +++ b/cumulus/zombienet/zombienet-sdk/tests/zombie_ci/statement_store.rs @@ -4,8 +4,11 @@ // Test that people-westend enables the statement store in the node and that statements are // propagated to peers. +use std::{time::Duration, u32}; + use anyhow::anyhow; use sp_core::{Bytes, Encode}; +use sp_statement_store::{SubmitResult, TopicFilter}; use zombienet_sdk::{subxt::ext::subxt_rpcs::rpc_params, NetworkConfigBuilder}; #[tokio::test(flavor = "multi_thread")] @@ -64,40 +67,38 @@ async fn statement_store() -> Result<(), anyhow::Error> { // Create the statement "1,2,3" signed by dave. let mut statement = sp_statement_store::Statement::new(); + let topic = [0u8; 32]; // just a dummy topic statement.set_plain_data(vec![1, 2, 3]); + statement.set_topic(0, topic); + statement.set_expiry_from_parts(u32::MAX, 0); let dave = sp_keyring::Sr25519Keyring::Dave; statement.sign_sr25519_private(&dave.pair()); let statement: Bytes = statement.encode().into(); - - // Submit the statement to charlie. - let _: () = charlie_rpc.request("statement_submit", rpc_params![statement.clone()]).await?; - - // Ensure that charlie stored the statement. - let charlie_dump: Vec = charlie_rpc.request("statement_dump", rpc_params![]).await?; - if charlie_dump != vec![statement.clone()] { - return Err(anyhow!("Charlie did not store the statement")); - } - - // Query dave until it receives the statement, stop if 20 seconds passed. - let query_start_time = std::time::SystemTime::now(); + // Subscribe to statements with topic "topic" to dave. let stop_after_secs = 20; - loop { - let dave_dump: Vec = dave_rpc.request("statement_dump", rpc_params![]).await?; - if !dave_dump.is_empty() { - if dave_dump != vec![statement.clone()] { - return Err(anyhow!("Dave statement store is not the expected one")); - } - break; - } + let mut subscription = dave_rpc + .subscribe::( + "statement_subscribeStatement", + rpc_params![TopicFilter::MatchAll(vec![topic.to_vec().into()])], + "statement_unsubscribeStatement", + ) + .await?; - let elapsed = - query_start_time.elapsed().map_err(|_| anyhow!("Failed to get elapsed time"))?; - if elapsed.as_secs() > stop_after_secs { - return Err(anyhow!("Dave did not receive the statement in time")); - } + // Submit the statement to charlie. + let _: SubmitResult = + charlie_rpc.request("statement_submit", rpc_params![statement.clone()]).await?; - tokio::time::sleep(core::time::Duration::from_secs(1)).await; - } + let statement_bytes = + tokio::time::timeout(Duration::from_secs(stop_after_secs), subscription.next()) + .await + .expect("Should not timeout") + .expect("Should receive") + .expect("Should not error"); + assert_eq!(statement_bytes, statement); + // Now make sure no more statements are received. + assert!(tokio::time::timeout(Duration::from_secs(stop_after_secs), subscription.next()) + .await + .is_err()); Ok(()) } diff --git a/cumulus/zombienet/zombienet-sdk/tests/zombie_ci/statement_store_bench.rs b/cumulus/zombienet/zombienet-sdk/tests/zombie_ci/statement_store_bench.rs index a284344ec703a..f7d348aa041d6 100644 --- a/cumulus/zombienet/zombienet-sdk/tests/zombie_ci/statement_store_bench.rs +++ b/cumulus/zombienet/zombienet-sdk/tests/zombie_ci/statement_store_bench.rs @@ -537,7 +537,7 @@ impl Participant { fn create_session_key_statement(&self) -> Statement { let mut statement = Statement::new(); statement.set_channel(channel_public_key()); - statement.set_priority(self.sent_count); + statement.set_expiry_from_parts(u32::MAX, self.sent_count); statement.set_topic(0, topic_public_key()); statement.set_topic(1, topic_idx(self.idx)); statement.set_plain_data(self.session_key.public().to_vec()); @@ -566,7 +566,7 @@ impl Participant { statement.set_topic(0, topic0); statement.set_topic(1, topic1); statement.set_channel(channel); - statement.set_priority(self.sent_count); + statement.set_expiry_from_parts(u32::MAX, self.sent_count); statement.set_plain_data(request_data); statement.sign_sr25519_private(&self.keyring); diff --git a/substrate/client/rpc-api/src/statement/mod.rs b/substrate/client/rpc-api/src/statement/mod.rs index 0de1b31545b8b..add2594114685 100644 --- a/substrate/client/rpc-api/src/statement/mod.rs +++ b/substrate/client/rpc-api/src/statement/mod.rs @@ -19,26 +19,11 @@ //! Substrate Statement Store RPC API. use jsonrpsee::{core::RpcResult, proc_macros::rpc}; -use serde::{Deserialize, Serialize}; use sp_core::Bytes; -use sp_statement_store::SubmitResult; +use sp_statement_store::{SubmitResult, TopicFilter}; pub mod error; -/// Filter for subscribing to statements with different topics. -#[derive(Debug, Clone, Serialize, Deserialize)] -#[serde(rename_all = "camelCase")] -pub enum TopicFilter { - /// Matches all topics. - Any, - /// Matches only statements including all of the given topics. - /// Bytes are expected to be a 32-byte topic. Up to `4` topics can be provided. - MatchAll(Vec), - /// Matches statements including any of the given topics. - /// Bytes are expected to be a 32-byte topic. Up to `128` topics can be provided. - MatchAny(Vec), -} - /// Substrate statement RPC API #[rpc(client, server)] pub trait StatementApi { diff --git a/substrate/client/rpc/Cargo.toml b/substrate/client/rpc/Cargo.toml index 3de7781c2249b..02838f4b92f0d 100644 --- a/substrate/client/rpc/Cargo.toml +++ b/substrate/client/rpc/Cargo.toml @@ -26,6 +26,7 @@ sc-chain-spec = { workspace = true, default-features = true } sc-client-api = { workspace = true, default-features = true } sc-mixnet = { workspace = true, default-features = true } sc-rpc-api = { workspace = true, default-features = true } +sc-statement-store = { workspace = true, default-features = true } sc-tracing = { workspace = true, default-features = true } sc-transaction-pool-api = { workspace = true, default-features = true } sc-utils = { workspace = true, default-features = true } @@ -47,9 +48,14 @@ assert_matches = { workspace = true } pretty_assertions = { workspace = true } sc-network = { workspace = true, default-features = true } sc-transaction-pool = { workspace = true, default-features = true } +sc-statement-store = { workspace = true } +sc-keystore = { workspace = true } sp-consensus = { workspace = true, default-features = true } sp-crypto-hashing = { workspace = true, default-features = true } substrate-test-runtime-client = { workspace = true } +tempfile = { workspace = true } +async-channel = { workspace = true } +futures-timer = { workspace = true } [features] test-helpers = [] diff --git a/substrate/client/rpc/src/statement/mod.rs b/substrate/client/rpc/src/statement/mod.rs index 350a99e645d2e..cbdaa6e74593b 100644 --- a/substrate/client/rpc/src/statement/mod.rs +++ b/substrate/client/rpc/src/statement/mod.rs @@ -18,111 +18,49 @@ //! Substrate statement store API. -use codec::{Decode, Encode}; +use codec::Decode; use jsonrpsee::{ core::{async_trait, RpcResult}, - Extensions, + Extensions, PendingSubscriptionSink, }; /// Re-export the API for backward compatibility. pub use sc_rpc_api::statement::{error::Error, StatementApiServer}; use sp_core::Bytes; -use sp_statement_store::{StatementSource, SubmitResult}; +use sp_statement_store::{StatementSource, SubmitResult, TopicFilter}; use std::sync::Arc; +use crate::{ + utils::{spawn_subscription_task, BoundedVecDeque, PendingSubscription}, + SubscriptionTaskExecutor, +}; + +#[cfg(test)] +mod tests; + +/// Trait alias for statement store API required by the RPC. +pub trait StatementStoreApi: + sp_statement_store::StatementStore + sc_statement_store::StatementStoreSubscriptionApi +{ +} +impl StatementStoreApi for T where + T: sp_statement_store::StatementStore + sc_statement_store::StatementStoreSubscriptionApi +{ +} /// Statement store API pub struct StatementStore { - store: Arc, + store: Arc, + executor: SubscriptionTaskExecutor, } impl StatementStore { /// Create new instance of Offchain API. - pub fn new(store: Arc) -> Self { - StatementStore { store } + pub fn new(store: Arc, executor: SubscriptionTaskExecutor) -> Self { + StatementStore { store, executor } } } #[async_trait] impl StatementApiServer for StatementStore { - fn dump(&self, ext: &Extensions) -> RpcResult> { - sc_rpc_api::check_if_safe(ext)?; - - let statements = - self.store.statements().map_err(|e| Error::StatementStore(e.to_string()))?; - Ok(statements.into_iter().map(|(_, s)| s.encode().into()).collect()) - } - - fn broadcasts(&self, match_all_topics: Vec<[u8; 32]>) -> RpcResult> { - Ok(self - .store - .broadcasts(&match_all_topics) - .map_err(|e| Error::StatementStore(e.to_string()))? - .into_iter() - .map(Into::into) - .collect()) - } - - fn posted(&self, match_all_topics: Vec<[u8; 32]>, dest: [u8; 32]) -> RpcResult> { - Ok(self - .store - .posted(&match_all_topics, dest) - .map_err(|e| Error::StatementStore(e.to_string()))? - .into_iter() - .map(Into::into) - .collect()) - } - - fn posted_clear( - &self, - match_all_topics: Vec<[u8; 32]>, - dest: [u8; 32], - ) -> RpcResult> { - Ok(self - .store - .posted_clear(&match_all_topics, dest) - .map_err(|e| Error::StatementStore(e.to_string()))? - .into_iter() - .map(Into::into) - .collect()) - } - - fn broadcasts_stmt(&self, match_all_topics: Vec<[u8; 32]>) -> RpcResult> { - Ok(self - .store - .broadcasts_stmt(&match_all_topics) - .map_err(|e| Error::StatementStore(e.to_string()))? - .into_iter() - .map(Into::into) - .collect()) - } - - fn posted_stmt( - &self, - match_all_topics: Vec<[u8; 32]>, - dest: [u8; 32], - ) -> RpcResult> { - Ok(self - .store - .posted_stmt(&match_all_topics, dest) - .map_err(|e| Error::StatementStore(e.to_string()))? - .into_iter() - .map(Into::into) - .collect()) - } - - fn posted_clear_stmt( - &self, - match_all_topics: Vec<[u8; 32]>, - dest: [u8; 32], - ) -> RpcResult> { - Ok(self - .store - .posted_clear_stmt(&match_all_topics, dest) - .map_err(|e| Error::StatementStore(e.to_string()))? - .into_iter() - .map(Into::into) - .collect()) - } - fn submit(&self, encoded: Bytes) -> RpcResult { let statement = Decode::decode(&mut &*encoded) .map_err(|e| Error::StatementStore(format!("Error decoding statement: {:?}", e)))?; @@ -134,7 +72,57 @@ impl StatementApiServer for StatementStore { } } - fn remove(&self, hash: [u8; 32]) -> RpcResult<()> { - Ok(self.store.remove(&hash).map_err(|e| Error::StatementStore(e.to_string()))?) + fn subscribe_statement( + &self, + pending: PendingSubscriptionSink, + ext: &Extensions, + topic_filter: TopicFilter, + ) { + let checked_topic_filter = match topic_filter.try_into() { + Ok(filter) => filter, + Err(e) => { + spawn_subscription_task( + &self.executor, + pending.reject(Error::StatementStore(format!( + "Error parsing topic filter: {:?}", + e + ))), + ); + return; + }, + }; + + let (existing_statements, subscription_sender, subscription_stream) = + match self.store.subscribe_statement(checked_topic_filter) { + Ok(res) => res, + Err(err) => { + spawn_subscription_task( + &self.executor, + pending.reject(Error::StatementStore(format!( + "Error collecting existing statements: {:?}", + err + ))), + ); + return; + }, + }; + + spawn_subscription_task(&self.executor, async { + PendingSubscription::from(pending) + .pipe_from_stream(subscription_stream, BoundedVecDeque::new(2048 * 2048)) + .await; + }); + + // Send existing statements before returning, to make sure we did not miss any statements. + for statement in existing_statements { + // Channel size is chosen to be large enough to always fit existing statements. + if let Err(e) = subscription_sender.try_send(statement.into()) { + log::warn!( + target: "statement_store_rpc", + "Failed to send existing statement in subscription: {:?}", e + ); + break; + } + } } } diff --git a/substrate/client/rpc/src/statement/tests.rs b/substrate/client/rpc/src/statement/tests.rs new file mode 100644 index 0000000000000..401f9e788300e --- /dev/null +++ b/substrate/client/rpc/src/statement/tests.rs @@ -0,0 +1,163 @@ +use super::*; +use crate::testing::test_executor; +use codec::Encode; +use futures::FutureExt; +use jsonrpsee::Subscription; +use sc_statement_store::Store; +use sp_core::traits::SpawnNamed; +use sp_statement_store::Statement; +use std::sync::Arc; + +fn generate_statements() -> Vec { + let topic = [0u8; 32]; + let topic1 = [1u8; 32]; + let topic2 = [2u8; 32]; + + let mut statements = Vec::new(); + let mut statement = sp_statement_store::Statement::new(); + statement.set_topic(0, topic); + statement.set_topic(1, topic2); + + statement + .set_proof(sp_statement_store::Proof::Ed25519 { signature: [0u8; 64], signer: [0u8; 32] }); + statement.set_expiry_from_parts(u32::MAX, 1); + + statements.push(statement.clone()); + + let mut statement = sp_statement_store::Statement::new(); + statement.set_topic(0, topic); + statement.set_topic(1, topic1); + statement + .set_proof(sp_statement_store::Proof::Ed25519 { signature: [0u8; 64], signer: [0u8; 32] }); + statement.set_expiry_from_parts(u32::MAX, 1); + + statements.push(statement.clone()); + statements +} + +#[tokio::test(flavor = "multi_thread", worker_threads = 10)] +async fn subscribe_works() { + let executor = test_executor(); + let client = Arc::new(substrate_test_runtime_client::new()); + let temp_dir = tempfile::tempdir().expect("Failed to create temp dir"); + let store = Store::new_shared( + temp_dir.path(), + Default::default(), + Arc::clone(&client) as Arc<_>, + Arc::new(sc_keystore::LocalKeystore::in_memory()), + None, + Box::new(executor.as_ref().clone()), + ) + .expect("Failed to create statement store"); + + let api = super::StatementStore::new(Arc::clone(&store) as Arc<_>, executor.clone()); + let api_rpc = api.into_rpc(); + let api_rpc_clone = api_rpc.clone(); + let submitted = generate_statements(); + let first_topic: Bytes = submitted[0].topic(0).expect("Should have topic").to_vec().into(); + + let topic_filter = TopicFilter::MatchAll(vec![first_topic.clone()]); + let submitted_clone = submitted.clone(); + let subscription = api_rpc + .subscribe("statement_subscribeStatement", (topic_filter.clone(),), 100000) + .await + .expect("Failed to subscribe"); + + let subscription_any = api_rpc + .subscribe_unbounded("statement_subscribeStatement", (TopicFilter::Any,)) + .await + .expect("Failed to subscribe"); + + let match_any_topic = TopicFilter::MatchAny(vec![ + submitted[0].topic(1).expect("Should have topic").to_vec().into(), + submitted[1].topic(1).expect("Should have topic").to_vec().into(), + ]); + let subscription_match_any = api_rpc + .subscribe_unbounded("statement_subscribeStatement", (match_any_topic.clone(),)) + .await + .expect("Failed to subscribe"); + + executor.spawn( + "test", + None, + async move { + for statement in submitted_clone { + let encoded_statement: Bytes = statement.encode().into(); + let _: SubmitResult = api_rpc_clone + .call("statement_submit", (encoded_statement,)) + .await + .expect("Failed to submit statement"); + } + } + .boxed(), + ); + + check_submitted(submitted.clone(), subscription).await; + check_submitted(submitted.clone(), subscription_any).await; + check_submitted(submitted.clone(), subscription_match_any).await; + + // Check submitting after initial statements gets all statements through as well. + let subscription = api_rpc + .subscribe("statement_subscribeStatement", (topic_filter,), 100000) + .await + .expect("Failed to subscribe"); + + let subscription_any = api_rpc + .subscribe_unbounded("statement_subscribeStatement", (TopicFilter::Any,)) + .await + .expect("Failed to subscribe"); + + let subscription_match_any = api_rpc + .subscribe_unbounded("statement_subscribeStatement", (match_any_topic,)) + .await + .expect("Failed to subscribe"); + + check_submitted(submitted.clone(), subscription).await; + check_submitted(submitted.clone(), subscription_any).await; + check_submitted(submitted.clone(), subscription_match_any).await; + + let mut match_any_with_random = api_rpc + .subscribe_unbounded( + "statement_subscribeStatement", + (TopicFilter::MatchAny(vec![vec![7u8; 32].into()]),), + ) + .await + .expect("Failed to subscribe"); + + let res = tokio::time::timeout( + std::time::Duration::from_secs(5), + match_any_with_random.next::(), + ) + .await; + assert!(res.is_err(), "expected no message for random topic"); + + let match_all_with_random = TopicFilter::MatchAll(vec![first_topic, vec![7u8; 32].into()]); + let mut match_all_with_random = api_rpc + .subscribe("statement_subscribeStatement", (match_all_with_random,), 100000) + .await + .expect("Failed to subscribe"); + + let res = tokio::time::timeout( + std::time::Duration::from_secs(5), + match_all_with_random.next::(), + ) + .await; + assert!(res.is_err(), "expected no message for random topic"); +} + +async fn check_submitted( + mut expected: Vec, + mut subscription: Subscription, +) { + while !expected.is_empty() { + let result = subscription.next::().await; + let result = result.expect("Bytes").expect("Success").0; + let new_statement = + sp_statement_store::Statement::decode(&mut &result.0[..]).expect("Decode statement"); + let position = expected + .iter() + .position(|x| x == &new_statement) + .expect("Statement should exist"); + expected.remove(position); + } +} diff --git a/substrate/client/statement-store/Cargo.toml b/substrate/client/statement-store/Cargo.toml index d62622401494b..8f8c19ac439a3 100644 --- a/substrate/client/statement-store/Cargo.toml +++ b/substrate/client/statement-store/Cargo.toml @@ -16,7 +16,10 @@ workspace = true targets = ["x86_64-unknown-linux-gnu"] [dependencies] +async-channel = { workspace = true } +futures = { workspace = true } log = { workspace = true, default-features = true } +sc-utils = { workspace = true } parity-db = { workspace = true } parking_lot = { workspace = true, default-features = true } prometheus-endpoint = { workspace = true, default-features = true } diff --git a/substrate/client/statement-store/src/lib.rs b/substrate/client/statement-store/src/lib.rs index 6b4945d4e2553..14310eac00153 100644 --- a/substrate/client/statement-store/src/lib.rs +++ b/substrate/client/statement-store/src/lib.rs @@ -51,26 +51,33 @@ mod metrics; pub use sp_statement_store::{Error, StatementStore, MAX_TOPICS}; +use crate::subscription::{SubscriptionStatementsStream, SubscriptionsHandle}; use metrics::MetricsLink as PrometheusMetrics; use parking_lot::RwLock; use prometheus_endpoint::Registry as PrometheusRegistry; use sc_keystore::LocalKeystore; use sp_api::ProvideRuntimeApi; use sp_blockchain::HeaderBackend; -use sp_core::{crypto::UncheckedFrom, hexdisplay::HexDisplay, traits::SpawnNamed, Decode, Encode}; +use sp_core::{ + crypto::UncheckedFrom, hexdisplay::HexDisplay, traits::SpawnNamed, Bytes, Decode, Encode, +}; use sp_runtime::traits::Block as BlockT; use sp_statement_store::{ runtime_api::{ InvalidStatement, StatementSource, StatementStoreExt, ValidStatement, ValidateStatement, }, - AccountId, BlockHash, Channel, DecryptionKey, Hash, InvalidReason, Proof, RejectionReason, - Result, Statement, SubmitResult, Topic, + AccountId, BlockHash, Channel, CheckedTopicFilter, DecryptionKey, Hash, InvalidReason, Proof, + RejectionReason, Result, Statement, SubmitResult, Topic, MAX_ANY_TOPICS, }; use std::{ collections::{BTreeMap, HashMap, HashSet}, sync::Arc, }; +pub use subscription::StatementStoreSubscriptionApi; + +mod subscription; + const KEY_VERSION: &[u8] = b"version".as_slice(); const CURRENT_VERSION: u32 = 1; @@ -88,6 +95,9 @@ pub const DEFAULT_MAX_TOTAL_SIZE: usize = 2 * 1024 * 1024 * 1024; // 2GiB pub const MAX_STATEMENT_SIZE: usize = sc_network_statement::config::MAX_STATEMENT_NOTIFICATION_SIZE as usize - 1; +/// Number of subscription filter worker tasks. +const NUM_FILTER_WORKERS: usize = 4; + const MAINTENANCE_PERIOD: std::time::Duration = std::time::Duration::from_secs(30); mod col { @@ -99,7 +109,7 @@ mod col { } #[derive(Eq, PartialEq, Debug, Ord, PartialOrd, Clone, Copy)] -struct Priority(u32); +struct Priority(u64); #[derive(PartialEq, Eq)] struct PriorityKey { @@ -202,6 +212,7 @@ where pub struct Store { db: parity_db::Db, index: RwLock, + subscription_manager: SubscriptionsHandle, validate_fn: Box< dyn Fn( Option, @@ -241,7 +252,7 @@ impl Index { if nt > 0 || key.is_some() { self.topics_and_keys.insert(hash, (all_topics, key)); } - let priority = Priority(statement.priority().unwrap_or(0)); + let priority = Priority(statement.expiry()); self.entries.insert(hash, (account, priority, statement.data_len())); self.recent.insert(hash); self.total_size += statement.data_len(); @@ -270,6 +281,69 @@ impl Index { } fn iterate_with( + &self, + key: Option, + topic: &CheckedTopicFilter, + f: impl FnMut(&Hash) -> Result<()>, + ) -> Result<()> { + match topic { + CheckedTopicFilter::Any => self.iterate_with_any(key, f), + CheckedTopicFilter::MatchAll(topics) => self.iterate_with_match_all(key, topics, f), + CheckedTopicFilter::MatchAny(topics) => self.iterate_with_match_any(key, topics, f), + } + } + + fn iterate_with_match_any( + &self, + key: Option, + match_any_topics: &[Topic], + mut f: impl FnMut(&Hash) -> Result<()>, + ) -> Result<()> { + if match_any_topics.len() > MAX_ANY_TOPICS { + return Ok(()) + } + + let key_set = self.by_dec_key.get(&key); + if key_set.map_or(0, |s| s.len()) == 0 { + // Key does not exist in the index. + return Ok(()) + } + + for t in match_any_topics.iter() { + let set = self.by_topic.get(t); + + for item in set.iter().map(|set| set.iter()).flatten() { + if key_set.map_or(false, |s| s.contains(item)) { + log::trace!( + target: LOG_TARGET, + "Iterating by topic/key: statement {:?}", + HexDisplay::from(item) + ); + f(item)? + } + } + } + Ok(()) + } + + fn iterate_with_any( + &self, + key: Option, + mut f: impl FnMut(&Hash) -> Result<()>, + ) -> Result<()> { + let key_set = self.by_dec_key.get(&key); + if key_set.map_or(0, |s| s.len()) == 0 { + // Key does not exist in the index. + return Ok(()) + } + + for item in key_set.map(|hashes| hashes.iter()).into_iter().flatten() { + f(item)? + } + Ok(()) + } + + fn iterate_with_match_all( &self, key: Option, match_all_topics: &[Topic], @@ -399,7 +473,7 @@ impl Index { let mut evicted = HashSet::new(); let mut would_free_size = 0; - let priority = Priority(statement.priority().unwrap_or(0)); + let priority = Priority(statement.expiry()); let (max_size, max_count) = (validation.max_size as usize, validation.max_count as usize); // It may happen that we can't delete enough lower priority messages // to satisfy size constraints. We check for that before deleting anything, @@ -417,8 +491,8 @@ impl Index { channel_record.priority, ); return Err(RejectionReason::ChannelPriorityTooLow { - submitted_priority: priority.0, - min_priority: channel_record.priority.0, + submitted_expiry: priority.0, + min_expiry: channel_record.priority.0, }); } else { // Would replace channel message. Still need to check for size constraints @@ -463,8 +537,8 @@ impl Index { entry.priority, ); return Err(RejectionReason::AccountFull { - submitted_priority: priority.0, - min_priority: entry.priority.0, + submitted_expiry: priority.0, + min_expiry: entry.priority.0, }); } evicted.insert(entry.hash); @@ -502,7 +576,7 @@ impl Store { client: Arc, keystore: Arc, prometheus: Option<&PrometheusRegistry>, - task_spawner: &dyn SpawnNamed, + task_spawner: Box, ) -> Result> where Block: BlockT, @@ -510,7 +584,8 @@ impl Store { Client: ProvideRuntimeApi + HeaderBackend + Send + Sync + 'static, Client::Api: ValidateStatement, { - let store = Arc::new(Self::new(path, options, client, keystore, prometheus)?); + let store = + Arc::new(Self::new(path, options, client, keystore, prometheus, task_spawner.clone())?); // Perform periodic statement store maintenance let worker_store = store.clone(); @@ -538,6 +613,7 @@ impl Store { client: Arc, keystore: Arc, prometheus: Option<&PrometheusRegistry>, + task_spawner: Box, ) -> Result where Block: BlockT, @@ -588,6 +664,10 @@ impl Store { keystore, time_override: None, metrics: PrometheusMetrics::new(prometheus), + subscription_manager: SubscriptionsHandle::new( + task_spawner.clone(), + NUM_FILTER_WORKERS, + ), }; store.populate()?; Ok(store) @@ -645,15 +725,15 @@ impl Store { Ok(()) } - fn collect_statements( + fn collect_statements_locked( &self, key: Option, - match_all_topics: &[Topic], + topic_filter: &CheckedTopicFilter, + index: &Index, + result: &mut Vec, mut f: impl FnMut(Statement) -> Option, - ) -> Result> { - let mut result = Vec::new(); - let index = self.index.read(); - index.iterate_with(key, match_all_topics, |hash| { + ) -> Result<()> { + index.iterate_with(key, topic_filter, |hash| { match self.db.get(col::STATEMENTS, hash).map_err(|e| Error::Db(e.to_string()))? { Some(entry) => { if let Ok(statement) = Statement::decode(&mut entry.as_slice()) { @@ -680,6 +760,18 @@ impl Store { } Ok(()) })?; + Ok(()) + } + + fn collect_statements( + &self, + key: Option, + topic_filter: &CheckedTopicFilter, + f: impl FnMut(Statement) -> Option, + ) -> Result> { + let mut result = Vec::new(); + let index = self.index.read(); + self.collect_statements_locked(key, topic_filter, &index, &mut result, f)?; Ok(result) } @@ -736,45 +828,49 @@ impl Store { // Map the statement and the decrypted data to the desired result. mut map_f: impl FnMut(Statement, Vec) -> R, ) -> Result> { - self.collect_statements(Some(dest), match_all_topics, |statement| { - if let (Some(key), Some(_)) = (statement.decryption_key(), statement.data()) { - let public: sp_core::ed25519::Public = UncheckedFrom::unchecked_from(key); - let public: sp_statement_store::ed25519::Public = public.into(); - match self.keystore.key_pair::(&public) { - Err(e) => { - log::debug!( - target: LOG_TARGET, - "Keystore error: {:?}, for statement {:?}", - e, - HexDisplay::from(&statement.hash()) - ); - None - }, - Ok(None) => { - log::debug!( - target: LOG_TARGET, - "Keystore is missing key for statement {:?}", - HexDisplay::from(&statement.hash()) - ); - None - }, - Ok(Some(pair)) => match statement.decrypt_private(&pair.into_inner()) { - Ok(r) => r.map(|data| map_f(statement, data)), + self.collect_statements( + Some(dest), + &CheckedTopicFilter::MatchAll(match_all_topics.to_vec()), + |statement| { + if let (Some(key), Some(_)) = (statement.decryption_key(), statement.data()) { + let public: sp_core::ed25519::Public = UncheckedFrom::unchecked_from(key); + let public: sp_statement_store::ed25519::Public = public.into(); + match self.keystore.key_pair::(&public) { Err(e) => { log::debug!( target: LOG_TARGET, - "Decryption error: {:?}, for statement {:?}", + "Keystore error: {:?}, for statement {:?}", e, HexDisplay::from(&statement.hash()) ); None }, - }, + Ok(None) => { + log::debug!( + target: LOG_TARGET, + "Keystore is missing key for statement {:?}", + HexDisplay::from(&statement.hash()) + ); + None + }, + Ok(Some(pair)) => match statement.decrypt_private(&pair.into_inner()) { + Ok(r) => r.map(|data| map_f(statement, data)), + Err(e) => { + log::debug!( + target: LOG_TARGET, + "Decryption error: {:?}, for statement {:?}", + e, + HexDisplay::from(&statement.hash()) + ); + None + }, + }, + } + } else { + None } - } else { - None - } - }) + }, + ) } } @@ -851,14 +947,22 @@ impl StatementStore for Store { /// Return the data of all known statements which include all topics and have no `DecryptionKey` /// field. fn broadcasts(&self, match_all_topics: &[Topic]) -> Result>> { - self.collect_statements(None, match_all_topics, |statement| statement.into_data()) + self.collect_statements( + None, + &CheckedTopicFilter::MatchAll(match_all_topics.to_vec()), + |statement| statement.into_data(), + ) } /// Return the data of all known statements whose decryption key is identified as `dest` (this /// will generally be the public key or a hash thereof for symmetric ciphers, or a hash of the /// private key for symmetric ciphers). fn posted(&self, match_all_topics: &[Topic], dest: [u8; 32]) -> Result>> { - self.collect_statements(Some(dest), match_all_topics, |statement| statement.into_data()) + self.collect_statements( + Some(dest), + &CheckedTopicFilter::MatchAll(match_all_topics.to_vec()), + |statement| statement.into_data(), + ) } /// Return the decrypted data of all known statements whose decryption key is identified as @@ -870,14 +974,22 @@ impl StatementStore for Store { /// Return all known statements which include all topics and have no `DecryptionKey` /// field. fn broadcasts_stmt(&self, match_all_topics: &[Topic]) -> Result>> { - self.collect_statements(None, match_all_topics, |statement| Some(statement.encode())) + self.collect_statements( + None, + &CheckedTopicFilter::MatchAll(match_all_topics.to_vec()), + |statement| Some(statement.encode()), + ) } /// Return all known statements whose decryption key is identified as `dest` (this /// will generally be the public key or a hash thereof for symmetric ciphers, or a hash of the /// private key for symmetric ciphers). fn posted_stmt(&self, match_all_topics: &[Topic], dest: [u8; 32]) -> Result>> { - self.collect_statements(Some(dest), match_all_topics, |statement| Some(statement.encode())) + self.collect_statements( + Some(dest), + &CheckedTopicFilter::MatchAll(match_all_topics.to_vec()), + |statement| Some(statement.encode()), + ) } /// Return the statement and the decrypted data of all known statements whose decryption key is @@ -898,6 +1010,15 @@ impl StatementStore for Store { /// Submit a statement to the store. Validates the statement and returns validation result. fn submit(&self, statement: Statement, source: StatementSource) -> SubmitResult { let hash = statement.hash(); + // Get unix timestamp + if self.timestamp() >= statement.get_expiration_timestamp_secs().into() { + log::debug!( + target: LOG_TARGET, + "Statement is already expired: {:?}", + HexDisplay::from(&hash), + ); + return SubmitResult::Invalid(InvalidReason::AlreadyExpired); + } let encoded_size = statement.encoded_size(); if encoded_size > MAX_STATEMENT_SIZE { log::debug!( @@ -942,6 +1063,7 @@ impl StatementStore for Store { None }; let validation_result = (self.validate_fn)(at_block, source, statement.clone()); + let validation = match validation_result { Ok(validation) => validation, Err(InvalidStatement::BadProof) => { @@ -991,6 +1113,7 @@ impl StatementStore for Store { ); return SubmitResult::InternalError(Error::Db(e.to_string())) } + self.subscription_manager.notify(statement); } // Release index lock self.metrics.report(|metrics| metrics.submitted_statements.inc()); log::trace!(target: LOG_TARGET, "Statement submitted: {:?}", HexDisplay::from(&hash)); @@ -1049,15 +1172,39 @@ impl StatementStore for Store { } } +impl StatementStoreSubscriptionApi for Store { + fn subscribe_statement( + &self, + topic_filter: CheckedTopicFilter, + ) -> Result<(Vec>, async_channel::Sender, SubscriptionStatementsStream)> { + // Keep the index read lock until after we have subscribed to avoid missing statements. + let mut existing_statements = Vec::new(); + let (subscription_sender, subscription_stream) = { + let index = self.index.read(); + self.collect_statements_locked( + None, + &topic_filter, + &index, + &mut existing_statements, + |statement| Some(statement.encode()), + )?; + self.subscription_manager.subscribe(topic_filter, existing_statements.len()) + }; + Ok((existing_statements, subscription_sender, subscription_stream)) + } +} + #[cfg(test)] mod tests { + use core::num; + use crate::Store; use sc_keystore::Keystore; use sp_core::{Decode, Encode, Pair}; use sp_statement_store::{ runtime_api::{InvalidStatement, ValidStatement, ValidateStatement}, - AccountId, Channel, DecryptionKey, Proof, SignatureVerificationResult, Statement, - StatementSource, StatementStore, SubmitResult, Topic, + AccountId, Channel, CheckedTopicFilter, DecryptionKey, Proof, SignatureVerificationResult, + Statement, StatementSource, StatementStore, SubmitResult, Topic, }; type Extrinsic = sp_runtime::OpaqueExtrinsic; @@ -1152,11 +1299,19 @@ mod tests { let mut path: std::path::PathBuf = temp_dir.path().into(); path.push("db"); let keystore = std::sync::Arc::new(sc_keystore::LocalKeystore::in_memory()); - let store = Store::new(&path, Default::default(), client, keystore, None).unwrap(); + let store = Store::new( + &path, + Default::default(), + client, + keystore, + None, + Box::new(sp_core::testing::TaskExecutor::new()), + ) + .unwrap(); (store, temp_dir) // return order is important. Store must be dropped before TempDir } - fn signed_statement(data: u8) -> Statement { + pub fn signed_statement(data: u8) -> Statement { signed_statement_with_topics(data, &[], None) } @@ -1167,6 +1322,8 @@ mod tests { ) -> Statement { let mut statement = Statement::new(); statement.set_plain_data(vec![data]); + statement.set_expiry(u64::MAX); + for i in 0..topics.len() { statement.set_topic(i, topics[i]); } @@ -1207,7 +1364,7 @@ mod tests { let mut data = Vec::new(); data.resize(data_len, 0); statement.set_plain_data(data); - statement.set_priority(priority); + statement.set_expiry_from_parts(u32::MAX, priority); if let Some(c) = c { statement.set_channel(channel(c)); } @@ -1246,7 +1403,15 @@ mod tests { let client = std::sync::Arc::new(TestClient); let mut path: std::path::PathBuf = temp.path().into(); path.push("db"); - let store = Store::new(&path, Default::default(), client, keystore, None).unwrap(); + let store = Store::new( + &path, + Default::default(), + client, + keystore, + None, + Box::new(sp_core::testing::TaskExecutor::new()), + ) + .unwrap(); assert_eq!(store.statements().unwrap().len(), 3); assert_eq!(store.broadcasts(&[]).unwrap().len(), 3); assert_eq!(store.statement(&statement1.hash()).unwrap(), Some(statement1)); @@ -1450,7 +1615,15 @@ mod tests { let client = std::sync::Arc::new(TestClient); let mut path: std::path::PathBuf = temp.path().into(); path.push("db"); - let store = Store::new(&path, Default::default(), client, keystore, None).unwrap(); + let store = Store::new( + &path, + Default::default(), + client, + keystore, + None, + Box::new(sp_core::testing::TaskExecutor::new()), + ) + .unwrap(); assert_eq!(store.statements().unwrap().len(), 0); assert_eq!(store.index.read().expired.len(), 0); } diff --git a/substrate/client/statement-store/src/subscription.rs b/substrate/client/statement-store/src/subscription.rs new file mode 100644 index 0000000000000..da3a4c182cc34 --- /dev/null +++ b/substrate/client/statement-store/src/subscription.rs @@ -0,0 +1,620 @@ +// This file is part of Substrate. + +// Copyright (C) Parity Technologies (UK) Ltd. +// SPDX-License-Identifier: GPL-3.0-or-later WITH Classpath-exception-2.0 + +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. + +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with this program. If not, see . + +//! Subscription logic for statement store. +//! +//! Manages subscriptions to statement topics and notifies subscribers when new statements arrive. +//! Uses multiple matcher tasks to handle subscriptions concurrently, each responsible for a subset +//! of subscriptions. Each matcher task maintains its own list of subscriptions and matches incoming +//! statements against them. When a new statement is submitted, it is sent to all matcher tasks for +//! processing. If a statement matches a subscription's filter, it is sent to the subscriber via an +//! async channel. +//! +//! This design allows for efficient handling of a large number of subscriptions and statements and +//! can be scaled by adjusting the number of matcher tasks. + +// Buffer size for the matcher task channels, to backpressure the submission senders. +// This value is generous to allow for bursts of statements without dropping any or backpressuring +// too early. +const MATCHERS_TASK_CHANNEL_BUFFER_SIZE: usize = 80_000; + +use futures::{Stream, StreamExt}; + +use crate::LOG_TARGET; +use sc_utils::id_sequence::SeqID; +use sp_core::{traits::SpawnNamed, Bytes, Encode}; +pub use sp_statement_store::StatementStore; +use sp_statement_store::{CheckedTopicFilter, Result, Statement, Topic}; +use std::{ + collections::{HashMap, HashSet}, + sync::atomic::AtomicU64, +}; + +/// Trait for initiating statement store subscriptions from the RPC module. +pub trait StatementStoreSubscriptionApi: Send + Sync { + /// Subscribe to statements matching the topic filter. + /// + /// Returns existing matching statements, a sender channel to send matched statements and a + /// stream for receiving matched statements when they arrive. + fn subscribe_statement( + &self, + topic_filter: CheckedTopicFilter, + ) -> Result<(Vec>, async_channel::Sender, SubscriptionStatementsStream)>; +} + +#[derive(Clone)] +pub enum MatcherMessage { + NewStatement(Statement), + Subscribe(SubscriptionInfo), + Unsubscribe(SeqID), +} + +// Manages subscriptions to statement topics and notifies subscribers when new statements arrive. +pub struct SubscriptionsHandle { + // Sequence generator for subscription IDs, atomic for thread safety. + // Subscription creation is expensive enough that we don't worry about overflow here. + id_sequence: AtomicU64, + // Subscriptions matchers handlers. + matchers: SubscriptionsMatchersHandlers, +} + +impl SubscriptionsHandle { + /// Create a new SubscriptionsHandle with the given task spawner and number of filter workers. + pub(crate) fn new( + task_spawner: Box, + num_matcher_workers: usize, + ) -> SubscriptionsHandle { + let mut subscriptions_matchers_senders = Vec::with_capacity(num_matcher_workers); + + for _ in 0..num_matcher_workers { + let (subscription_matcher_sender, subscription_matcher_receiver) = + async_channel::bounded(MATCHERS_TASK_CHANNEL_BUFFER_SIZE); + subscriptions_matchers_senders.push(subscription_matcher_sender); + task_spawner.spawn_blocking( + "statement-store-subscription-filters", + Some("statement-store"), + Box::pin(async move { + let mut subscriptions = SubscriptionsInfo::new(); + + loop { + match subscription_matcher_receiver.recv().await { + Ok(MatcherMessage::NewStatement(statement)) => { + subscriptions.notify_matching_subscribers(&statement); + subscriptions.notify_any_subscribers(&statement); + }, + Ok(MatcherMessage::Subscribe(info)) => { + subscriptions.subscribe(info); + }, + Ok(MatcherMessage::Unsubscribe(seq_id)) => { + subscriptions.unsubscribe(seq_id); + }, + Err(_) => { + // Expected when the subscription manager is dropped at shutdown. + log::error!( + target: LOG_TARGET, + "Statement subscription matcher channel closed" + ); + break + }, + }; + } + }), + ); + } + SubscriptionsHandle { + id_sequence: AtomicU64::new(0), + matchers: SubscriptionsMatchersHandlers::new(subscriptions_matchers_senders), + } + } + + fn next_id(&self) -> SeqID { + let id = self.id_sequence.fetch_add(1, std::sync::atomic::Ordering::SeqCst); + SeqID::from(id) + } + + pub(crate) fn subscribe( + &self, + topic_filter: CheckedTopicFilter, + num_existing_statements: usize, + ) -> (async_channel::Sender, SubscriptionStatementsStream) { + let next_id = self.next_id(); + let (tx, rx) = async_channel::bounded(std::cmp::max( + MATCHERS_TASK_CHANNEL_BUFFER_SIZE, + num_existing_statements, + )); + let subscription_info = + SubscriptionInfo { topic_filter: topic_filter.clone(), seq_id: next_id, tx }; + + let result = ( + subscription_info.tx.clone(), + SubscriptionStatementsStream { + rx, + sub_id: subscription_info.seq_id, + matchers: self.matchers.clone(), + }, + ); + + self.matchers + .send_by_seq_id(subscription_info.seq_id, MatcherMessage::Subscribe(subscription_info)); + result + } + + pub(crate) fn notify(&self, statement: Statement) { + self.matchers.send_all(MatcherMessage::NewStatement(statement)); + } +} + +// Information about all subscriptions. +// Each matcher task will have its own instance of this struct. +struct SubscriptionsInfo { + // Subscriptions organized by topic, there can be multiple entries per subscription if it + // subscribes to multiple topics with MatchAll or MatchAny filters. + subscriptions_by_topic: HashMap>, + // Subscriptions that listen with Any filter (i.e., no topic filtering). + subscriptions_any: HashMap, + // Mapping from subscription ID to topic filter. + by_sub_id: HashMap, +} + +// Information about a single subscription. +#[derive(Clone)] +pub(crate) struct SubscriptionInfo { + // The filter used for this subscription. + topic_filter: CheckedTopicFilter, + // The unique ID of this subscription. + seq_id: SeqID, + // Channel to send matched statements to the subscriber. + tx: async_channel::Sender, +} + +impl SubscriptionsInfo { + fn new() -> SubscriptionsInfo { + SubscriptionsInfo { + subscriptions_by_topic: HashMap::new(), + subscriptions_any: HashMap::new(), + by_sub_id: HashMap::new(), + } + } + + // Subscribe a new subscription. + fn subscribe(&mut self, subscription_info: SubscriptionInfo) { + self.by_sub_id + .insert(subscription_info.seq_id, subscription_info.topic_filter.clone()); + let topics = match &subscription_info.topic_filter { + CheckedTopicFilter::Any => { + self.subscriptions_any + .insert(subscription_info.seq_id, subscription_info.clone()); + return; + }, + CheckedTopicFilter::MatchAll(topics) => topics, + CheckedTopicFilter::MatchAny(topics) => topics, + }; + for topic in topics { + self.subscriptions_by_topic + .entry(*topic) + .or_insert_with(Default::default) + .insert(subscription_info.seq_id, subscription_info.clone()); + } + } + + // Notify a single subscriber, marking it for unsubscribing if sending fails. + fn notify_subscriber( + &self, + subscription: &SubscriptionInfo, + bytes_to_send: Bytes, + needs_unsubscribing: &mut HashSet, + ) { + if let Err(err) = subscription.tx.try_send(bytes_to_send) { + log::warn!( + target: LOG_TARGET, + "Failed to send statement to subscriber {:?}: {:?} unsubscribing it", subscription.seq_id, err + ); + // Mark subscription for unsubscribing, to give it a chance to recover the buffers are + // generous enough, if subscription cannot keep up we unsubscribe it. + needs_unsubscribing.insert(subscription.seq_id); + } + } + + // Notify all subscribers whose filters match the given statement. + fn notify_matching_subscribers(&mut self, statement: &Statement) { + // Track how many topics are still needed to match for each subscription. + // `subscription_by_topic` may contain multiple entries for the same subscription if it + // subscribes to multiple topics with MatchAll or MatchAny filters. + // We decrement the counter each time we find a matching topic, and only notify + // the subscriber when the counter reaches zero. + let mut matched_senders: HashMap = HashMap::new(); + let bytes_to_send: Bytes = statement.encode().into(); + let mut needs_unsubscribing: HashSet = HashSet::new(); + + for statement_topic in statement.topics() { + if let Some(subscriptions) = self.subscriptions_by_topic.get(statement_topic) { + for subscription in subscriptions.values() { + // Check if the statement matches the subscription filter + if let Some(counter) = matched_senders.get_mut(&subscription.seq_id) { + if *counter > 0 { + *counter -= 1; + if *counter == 0 { + self.notify_subscriber( + subscription, + bytes_to_send.clone(), + &mut needs_unsubscribing, + ); + } + } + } else { + match &subscription.topic_filter { + CheckedTopicFilter::Any => { + matched_senders.insert(subscription.seq_id, 0); + self.notify_subscriber( + subscription, + bytes_to_send.clone(), + &mut needs_unsubscribing, + ); + }, + CheckedTopicFilter::MatchAll(topics) => { + let counter = topics.len() - 1; + + matched_senders.insert(subscription.seq_id, counter); + if counter == 0 { + self.notify_subscriber( + subscription, + bytes_to_send.clone(), + &mut needs_unsubscribing, + ); + } + }, + CheckedTopicFilter::MatchAny(_topics) => { + matched_senders.insert(subscription.seq_id, 0); + self.notify_subscriber( + subscription, + bytes_to_send.clone(), + &mut needs_unsubscribing, + ); + }, + } + } + } + } + } + // Unsubscribe any subscriptions that failed to receive messages, to give them a chance to + // recover and not miss statements. + for sub_id in needs_unsubscribing { + self.unsubscribe(sub_id); + } + } + + // Notify all subscribers that don't filter by topic and want to receive all statements. + fn notify_any_subscribers(&mut self, statement: &Statement) { + let mut needs_unsubscribing: HashSet = HashSet::new(); + + let bytes_to_send: Bytes = statement.encode().into(); + for subscription in self.subscriptions_any.values() { + let _ = self.notify_subscriber( + subscription, + bytes_to_send.clone(), + &mut needs_unsubscribing, + ); + } + + // Unsubscribe any subscriptions that failed to receive messages, to give them a chance to + // recover and not miss statements. + for sub_id in needs_unsubscribing { + self.unsubscribe(sub_id); + } + } + + // Unsubscribe a subscription by its ID. + fn unsubscribe(&mut self, id: SeqID) { + let entry = match self.by_sub_id.remove(&id) { + Some(e) => e, + None => return, + }; + + let topics = match &entry { + CheckedTopicFilter::Any => { + self.subscriptions_any.remove(&id); + return; + }, + CheckedTopicFilter::MatchAll(topics) => topics, + CheckedTopicFilter::MatchAny(topics) => topics, + }; + + for topic in topics { + if let Some(subscriptions) = self.subscriptions_by_topic.get_mut(topic) { + subscriptions.remove(&id); + if subscriptions.is_empty() { + self.subscriptions_by_topic.remove(topic); + } + } + } + } +} + +// Handlers to communicate with subscription matcher tasks. +#[derive(Clone)] +pub struct SubscriptionsMatchersHandlers { + // Channels to send messages to matcher tasks. + matchers: Vec>, +} + +impl SubscriptionsMatchersHandlers { + /// Create new SubscriptionsMatchersHandlers with the given matcher task senders. + fn new(matchers: Vec>) -> SubscriptionsMatchersHandlers { + SubscriptionsMatchersHandlers { matchers } + } + + // Send a message to the matcher task responsible for the given subscription ID. + fn send_by_seq_id(&self, id: SeqID, message: MatcherMessage) { + let index: u64 = id.into(); + // If matchers channels are full we backpressure the sender, in this case it will be the + // processing of new statements. + if let Err(err) = self.matchers[index as usize % self.matchers.len()].send_blocking(message) + { + log::error!( + target: LOG_TARGET, + "Failed to send statement to matcher task: {:?}", err + ); + } + } + + // Send a message to all matcher tasks. + fn send_all(&self, message: MatcherMessage) { + for sender in &self.matchers { + if let Err(err) = sender.send_blocking(message.clone()) { + log::error!( + target: LOG_TARGET, + "Failed to send message to matcher task: {:?}", err + ); + } + } + } +} + +// Stream of statements for a subscription. +pub struct SubscriptionStatementsStream { + // Channel to receive statements. + pub rx: async_channel::Receiver, + // Subscription ID, used for cleanup on drop. + sub_id: SeqID, + // Reference to the matchers for cleanup. + matchers: SubscriptionsMatchersHandlers, +} + +// When the stream is dropped, unsubscribe from the matchers. +impl Drop for SubscriptionStatementsStream { + fn drop(&mut self) { + self.matchers + .send_by_seq_id(self.sub_id, MatcherMessage::Unsubscribe(self.sub_id)); + } +} + +impl Stream for SubscriptionStatementsStream { + type Item = Bytes; + + fn poll_next( + mut self: std::pin::Pin<&mut Self>, + cx: &mut std::task::Context<'_>, + ) -> std::task::Poll> { + self.rx.poll_next_unpin(cx) + } +} +#[cfg(test)] +mod tests { + + use crate::tests::signed_statement; + + use super::*; + use sp_core::Decode; + use sp_statement_store::Topic; + #[test] + fn test_subscribe_unsubscribe() { + let mut subscriptions = SubscriptionsInfo::new(); + + let (tx1, _rx1) = async_channel::bounded::(10); + let topic1 = [8u8; 32]; + let topic2 = [9u8; 32]; + let sub_info1 = SubscriptionInfo { + topic_filter: CheckedTopicFilter::MatchAll(vec![topic1, topic2]), + seq_id: SeqID::from(1), + tx: tx1, + }; + subscriptions.subscribe(sub_info1.clone()); + assert!(subscriptions.subscriptions_by_topic.contains_key(&topic1)); + assert!(subscriptions.subscriptions_by_topic.contains_key(&topic2)); + assert!(subscriptions.by_sub_id.contains_key(&sub_info1.seq_id)); + assert!(!subscriptions.subscriptions_any.contains_key(&sub_info1.seq_id)); + + subscriptions.unsubscribe(sub_info1.seq_id); + assert!(!subscriptions.subscriptions_by_topic.contains_key(&topic1)); + assert!(!subscriptions.subscriptions_by_topic.contains_key(&topic2)); + } + + #[test] + fn test_subscribe_any() { + let mut subscriptions = SubscriptionsInfo::new(); + let (tx1, _rx1) = async_channel::bounded::(10); + let sub_info1 = SubscriptionInfo { + topic_filter: CheckedTopicFilter::Any, + seq_id: SeqID::from(1), + tx: tx1, + }; + subscriptions.subscribe(sub_info1.clone()); + assert!(subscriptions.subscriptions_any.contains_key(&sub_info1.seq_id)); + assert!(subscriptions.by_sub_id.contains_key(&sub_info1.seq_id)); + subscriptions.unsubscribe(sub_info1.seq_id); + assert!(!subscriptions.subscriptions_any.contains_key(&sub_info1.seq_id)); + } + + #[test] + fn test_subscribe_match_any() { + let mut subscriptions = SubscriptionsInfo::new(); + + let (tx1, _rx1) = async_channel::bounded::(10); + let topic1 = [8u8; 32]; + let topic2 = [9u8; 32]; + let sub_info1 = SubscriptionInfo { + topic_filter: CheckedTopicFilter::MatchAny(vec![topic1, topic2]), + seq_id: SeqID::from(1), + tx: tx1, + }; + subscriptions.subscribe(sub_info1.clone()); + assert!(subscriptions.subscriptions_by_topic.contains_key(&topic1)); + assert!(subscriptions.subscriptions_by_topic.contains_key(&topic2)); + assert!(subscriptions.by_sub_id.contains_key(&sub_info1.seq_id)); + assert!(!subscriptions.subscriptions_any.contains_key(&sub_info1.seq_id)); + + subscriptions.unsubscribe(sub_info1.seq_id); + assert!(!subscriptions.subscriptions_by_topic.contains_key(&topic1)); + assert!(!subscriptions.subscriptions_by_topic.contains_key(&topic2)); + } + + #[test] + fn test_notify_any_subscribers() { + let mut subscriptions = SubscriptionsInfo::new(); + + let (tx1, rx1) = async_channel::bounded::(10); + let sub_info1 = SubscriptionInfo { + topic_filter: CheckedTopicFilter::Any, + seq_id: SeqID::from(1), + tx: tx1, + }; + subscriptions.subscribe(sub_info1.clone()); + + let mut statement = signed_statement(1); + subscriptions.notify_any_subscribers(&statement); + + let received = rx1.try_recv().expect("Should receive statement"); + let decoded_statement: Statement = + Statement::decode(&mut &received.0[..]).expect("Should decode statement"); + assert_eq!(decoded_statement, statement); + } + + #[test] + fn test_notify_match_all_subscribers() { + let mut subscriptions = SubscriptionsInfo::new(); + + let (tx1, rx1) = async_channel::bounded::(10); + let topic1 = [8u8; 32]; + let topic2 = [9u8; 32]; + let sub_info1 = SubscriptionInfo { + topic_filter: CheckedTopicFilter::MatchAll(vec![topic1, topic2]), + seq_id: SeqID::from(1), + tx: tx1, + }; + subscriptions.subscribe(sub_info1.clone()); + + let mut statement = signed_statement(1); + statement.set_topic(0, Topic::from(topic2)); + subscriptions.notify_matching_subscribers(&statement); + + // Should not receive yet, only one topic matched. + assert!(rx1.try_recv().is_err()); + + statement.set_topic(1, Topic::from(topic1)); + subscriptions.notify_matching_subscribers(&statement); + + let received = rx1.try_recv().expect("Should receive statement"); + let decoded_statement: Statement = + Statement::decode(&mut &received.0[..]).expect("Should decode statement"); + assert_eq!(decoded_statement, statement); + } + + #[test] + fn test_notify_match_any_subscribers() { + let mut subscriptions = SubscriptionsInfo::new(); + let (tx1, rx1) = async_channel::bounded::(10); + let topic1 = [8u8; 32]; + let topic2 = [9u8; 32]; + let sub_info1 = SubscriptionInfo { + topic_filter: CheckedTopicFilter::MatchAny(vec![topic1, topic2]), + seq_id: SeqID::from(1), + tx: tx1, + }; + subscriptions.subscribe(sub_info1.clone()); + let mut statement = signed_statement(1); + statement.set_topic(0, Topic::from(topic2)); + subscriptions.notify_matching_subscribers(&statement); + let received = rx1.try_recv().expect("Should receive statement"); + let decoded_statement: Statement = + Statement::decode(&mut &received.0[..]).expect("Should decode statement"); + assert_eq!(decoded_statement, statement); + } + + #[tokio::test] + async fn test_subscription_handle_with_different_workers_number() { + for num_workers in 1..5 { + let subscriptions_handle = SubscriptionsHandle::new( + Box::new(sp_core::testing::TaskExecutor::new()), + num_workers, + ); + + let topic1 = [8u8; 32]; + let topic2 = [9u8; 32]; + + let streams = (0..5) + .into_iter() + .map(|_| { + subscriptions_handle + .subscribe(CheckedTopicFilter::MatchAll(vec![topic1, topic2])) + }) + .collect::>(); + + let mut statement = signed_statement(1); + statement.set_topic(0, Topic::from(topic2)); + subscriptions_handle.notify(statement.clone()); + + statement.set_topic(1, Topic::from(topic1)); + subscriptions_handle.notify(statement.clone()); + + for (tx, mut stream) in streams { + let received = stream.next().await.expect("Should receive statement"); + let decoded_statement: Statement = + Statement::decode(&mut &received.0[..]).expect("Should decode statement"); + assert_eq!(decoded_statement, statement); + } + } + } + + // #[tokio::test] + // async fn test_handle_unsubscribe() { + // let subscriptions_handle = + // SubscriptionsHandle::new(Box::new(sp_core::testing::TaskExecutor::new()), 3); + + // let topic1 = [8u8; 32]; + // let topic2 = [9u8; 32]; + + // let streams = (0..5) + // .into_iter() + // .map(|_| subscriptions_handle.subscribe(TopicFilter::MatchAll(vec![topic1, topic2]))) + // .collect::>(); + + // // Unsubscribe all streams by dropping SubscriptionStatementsStream + // let rx_channels = + // streams.into_iter().map(|(_, stream)| stream.rx.clone()).collect::>(); + + // let mut statement = signed_statement(1); + // statement.set_topic(0, Topic::from(topic2)); + // subscriptions_handle.notify(statement.clone()); + + // statement.set_topic(1, Topic::from(topic1)); + // subscriptions_handle.notify(statement.clone()); + // for rx in rx_channels { + // assert!(rx.recv().await.is_err()); + // } + // } +} diff --git a/substrate/client/utils/src/id_sequence.rs b/substrate/client/utils/src/id_sequence.rs index a1799d4e684f8..6e8efce33f878 100644 --- a/substrate/client/utils/src/id_sequence.rs +++ b/substrate/client/utils/src/id_sequence.rs @@ -51,3 +51,15 @@ impl IDSequence { id } } + +impl Into for SeqID { + fn into(self) -> u64 { + self.0 + } +} + +impl From for SeqID { + fn from(value: u64) -> Self { + SeqID(value) + } +} diff --git a/substrate/primitives/statement-store/src/lib.rs b/substrate/primitives/statement-store/src/lib.rs index 2afaf69e04949..1817ecf9e3838 100644 --- a/substrate/primitives/statement-store/src/lib.rs +++ b/substrate/primitives/statement-store/src/lib.rs @@ -44,10 +44,26 @@ pub type Channel = [u8; 32]; /// Total number of topic fields allowed. pub const MAX_TOPICS: usize = 4; +/// Maximum number of topics allowed in `MatchAny` filter. +pub const MAX_ANY_TOPICS: usize = 128; + +/// Topic filter for statement subscriptions. +#[derive(Clone)] +pub enum CheckedTopicFilter { + /// Matches all topics. + Any, + /// Matches only statements including all of the given topics. + /// Bytes are expected to be a 32-byte topic. Up to `4` topics can be provided. + MatchAll(Vec), + /// Matches statements including any of the given topics. + /// Bytes are expected to be a 32-byte topic. Up to `128` topics can be provided. + MatchAny(Vec), +} #[cfg(feature = "std")] pub use store_api::{ Error, InvalidReason, RejectionReason, Result, StatementSource, StatementStore, SubmitResult, + TopicFilter, }; #[cfg(feature = "std")] @@ -150,8 +166,8 @@ pub enum Field { AuthenticityProof(Proof) = 0, /// An identifier for the key that `Data` field may be decrypted with. DecryptionKey(DecryptionKey) = 1, - /// Priority when competing with other messages from the same sender. - Priority(u32) = 2, + /// Expiry of the statement. + Expiry(u64) = 2, /// Account channel to use. Only one message per `(account, channel)` pair is allowed. Channel(Channel) = 3, /// First statement topic. @@ -180,7 +196,7 @@ pub struct Statement { /// Proof used for authorizing the statement. proof: Option, /// An identifier for the key that `Data` field may be decrypted with. - #[deprecated(note = "Experimental feature, may be removed in future releases")] + #[deprecated(note = "Experimental feature, may be removed/changed in future releases")] decryption_key: Option, /// Used for identifying a distinct communication channel, only a message per channel is /// stored. @@ -232,7 +248,7 @@ impl Decode for Statement { match field { Field::AuthenticityProof(p) => statement.set_proof(p), Field::DecryptionKey(key) => statement.set_decryption_key(key), - Field::Priority(p) => statement.set_priority(p), + Field::Expiry(p) => statement.set_expiry(p), Field::Channel(c) => statement.set_channel(c), Field::Topic1(t) => statement.set_topic(0, t), Field::Topic2(t) => statement.set_topic(1, t), @@ -294,6 +310,11 @@ impl Statement { } } + /// Returns slice of all topics set in the statement. + pub fn topics(&self) -> &[Topic] { + &self.topics[..self.num_topics as usize] + } + /// Sign with a given private key and add the signature proof field. #[cfg(feature = "std")] pub fn sign_sr25519_private(&mut self, key: &sp_core::sr25519::Pair) { @@ -420,6 +441,7 @@ impl Statement { } /// Returns decryption key if any. + #[allow(deprecated)] pub fn decryption_key(&self) -> Option { self.decryption_key } @@ -459,6 +481,14 @@ impl Statement { self.expiry } + /// Get expiration timestamp in seconds. + /// + /// The expiration timestamp in seconds is stored in the most significant 32 bits of the expiry + /// field. + pub fn get_expiration_timestamp_secs(&self) -> u32 { + (self.expiry >> 32) as u32 + } + /// Return encoded fields that can be signed to construct or verify a proof fn signature_material(&self) -> Vec { self.encoded(true) @@ -479,6 +509,15 @@ impl Statement { self.expiry = expiry; } + /// Set statement expiry from its parts. + /// The expiration timestamp in seconds is stored in the most significant 32 bits of the expiry + /// field. + /// The lower 32 bits represents an arbitrary sequence number used to order statements with the + /// same expiration time. + pub fn set_expiry_from_parts(&mut self, expiration_timestamp_secs: u32, sequence_number: u32) { + self.expiry = (expiration_timestamp_secs as u64) << 32 | sequence_number as u64; + } + /// Set statement channel. pub fn set_channel(&mut self, channel: Channel) { self.channel = Some(channel) @@ -493,6 +532,7 @@ impl Statement { } /// Set decryption key. + #[allow(deprecated)] pub fn set_decryption_key(&mut self, key: DecryptionKey) { self.decryption_key = Some(key); } @@ -502,12 +542,13 @@ impl Statement { self.data = Some(data) } + #[allow(deprecated)] fn encoded(&self, for_signing: bool) -> Vec { // Encoding matches that of Vec. Basically this just means accepting that there // will be a prefix of vector length. - let num_fields = if !for_signing && self.proof.is_some() { 1 } else { 0 } + + // Expiry field is always present. + let num_fields = if !for_signing && self.proof.is_some() { 2 } else { 1 } + if self.decryption_key.is_some() { 1 } else { 0 } + - if self.priority.is_some() { 1 } else { 0 } + if self.channel.is_some() { 1 } else { 0 } + if self.data.is_some() { 1 } else { 0 } + self.num_topics as u32; @@ -529,10 +570,10 @@ impl Statement { 1u8.encode_to(&mut output); decryption_key.encode_to(&mut output); } - if let Some(priority) = &self.priority { - 2u8.encode_to(&mut output); - priority.encode_to(&mut output); - } + + 2u8.encode_to(&mut output); + self.expiry().encode_to(&mut output); + if let Some(channel) = &self.channel { 3u8.encode_to(&mut output); channel.encode_to(&mut output); @@ -549,6 +590,7 @@ impl Statement { } /// Encrypt give data with given key and store both in the statements. + #[allow(deprecated)] #[cfg(feature = "std")] pub fn encrypt( &mut self, @@ -604,7 +646,7 @@ mod test { let fields = vec![ Field::AuthenticityProof(proof.clone()), Field::DecryptionKey(decryption_key), - Field::Priority(priority), + Field::Expiry(priority), Field::Channel(channel), Field::Topic1(topic1), Field::Topic2(topic2), @@ -626,7 +668,7 @@ mod test { let priority = 999; let fields = vec![ - Field::Priority(priority), + Field::Expiry(priority), Field::Topic1(topic1), Field::Topic1(topic1), Field::Topic2(topic2), @@ -636,7 +678,7 @@ mod test { assert!(Statement::decode(&mut fields.as_slice()).is_err()); let fields = - vec![Field::Topic1(topic1), Field::Priority(priority), Field::Topic2(topic2)].encode(); + vec![Field::Topic1(topic1), Field::Expiry(priority), Field::Topic2(topic2)].encode(); assert!(Statement::decode(&mut fields.as_slice()).is_err()); } diff --git a/substrate/primitives/statement-store/src/store_api.rs b/substrate/primitives/statement-store/src/store_api.rs index e949a35242091..e98e684eb90c2 100644 --- a/substrate/primitives/statement-store/src/store_api.rs +++ b/substrate/primitives/statement-store/src/store_api.rs @@ -15,8 +15,10 @@ // See the License for the specific language governing permissions and // limitations under the License. +use sp_core::Bytes; + pub use crate::runtime_api::StatementSource; -use crate::{Hash, Statement, Topic}; +use crate::{CheckedTopicFilter, Hash, Statement, Topic}; /// Statement store error. #[derive(Debug, Clone, Eq, PartialEq, thiserror::Error)] @@ -33,6 +35,56 @@ pub enum Error { Runtime, } +/// Filter for subscribing to statements with different topics. +#[derive(Debug, Clone)] +#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))] +#[cfg_attr(feature = "serde", serde(rename_all = "camelCase"))] +pub enum TopicFilter { + /// Matches all topics. + Any, + /// Matches only statements including all of the given topics. + /// Bytes are expected to be a 32-byte topic. Up to `4` topics can be provided. + MatchAll(Vec), + /// Matches statements including any of the given topics. + /// Bytes are expected to be a 32-byte topic. Up to `128` topics can be provided. + MatchAny(Vec), +} + +// Convert TopicFilter to CheckedTopicFilter, validating topic lengths. +impl TryInto for TopicFilter { + type Error = Error; + + fn try_into(self) -> Result { + match self { + TopicFilter::Any => Ok(CheckedTopicFilter::Any), + TopicFilter::MatchAll(topics) => { + let mut parsed_topics = Vec::with_capacity(topics.len()); + for topic in topics { + if topic.0.len() != 32 { + return Err(Error::Decode("Invalid topic format".into())); + } + let mut arr = [0u8; 32]; + arr.copy_from_slice(&topic.0); + parsed_topics.push(arr); + } + Ok(CheckedTopicFilter::MatchAll(parsed_topics)) + }, + TopicFilter::MatchAny(topics) => { + let mut parsed_topics = Vec::with_capacity(topics.len()); + for topic in topics { + if topic.0.len() != 32 { + return Err(Error::Decode("Invalid topic format".into())); + } + let mut arr = [0u8; 32]; + arr.copy_from_slice(&topic.0); + parsed_topics.push(arr); + } + Ok(CheckedTopicFilter::MatchAny(parsed_topics)) + }, + } + } +} + /// Reason why a statement was rejected from the store. #[derive(Debug, Clone, Eq, PartialEq)] #[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))] @@ -45,19 +97,19 @@ pub enum RejectionReason { /// Still available data size for the account. available_size: usize, }, - /// Attempting to replace a channel message with lower or equal priority. + /// Attempting to replace a channel message with lower or equal expiry. ChannelPriorityTooLow { - /// The priority of the submitted statement. - submitted_priority: u32, - /// The minimum priority of the existing channel message. - min_priority: u32, + /// The expiry of the submitted statement. + submitted_expiry: u64, + /// The minimum expiry of the existing channel message. + min_expiry: u64, }, - /// Account reached its statement limit and submitted priority is too low to evict existing. + /// Account reached its statement limit and submitted expiry is too low to evict existing. AccountFull { - /// The priority of the submitted statement. - submitted_priority: u32, - /// The minimum priority of the existing statement. - min_priority: u32, + /// The expiry of the submitted statement. + submitted_expiry: u64, + /// The minimum expiry of the existing statement. + min_expiry: u64, }, /// The global statement store is full and cannot accept new statements. StoreFull, @@ -79,6 +131,8 @@ pub enum InvalidReason { /// The maximum allowed size. max_size: usize, }, + /// Statement has already expired. + AlreadyExpired, } /// Statement submission outcome diff --git a/substrate/test-utils/runtime/Cargo.toml b/substrate/test-utils/runtime/Cargo.toml index 91bf368f573cd..1902af59de7e9 100644 --- a/substrate/test-utils/runtime/Cargo.toml +++ b/substrate/test-utils/runtime/Cargo.toml @@ -46,6 +46,7 @@ sp-offchain = { workspace = true } sp-runtime = { features = ["serde"], workspace = true } sp-session = { workspace = true } sp-state-machine = { workspace = true } +sp-statement-store = { workspace = true } sp-transaction-pool = { workspace = true } sp-trie = { workspace = true } sp-version = { workspace = true } diff --git a/substrate/test-utils/runtime/src/lib.rs b/substrate/test-utils/runtime/src/lib.rs index a04b05021bb46..a69a478aacb96 100644 --- a/substrate/test-utils/runtime/src/lib.rs +++ b/substrate/test-utils/runtime/src/lib.rs @@ -46,10 +46,12 @@ use frame_system::{ CheckNonce, CheckWeight, }; use scale_info::TypeInfo; -use sp_application_crypto::Ss58Codec; +use sp_application_crypto::{ecdsa, ed25519, sr25519, RuntimeAppPublic, Ss58Codec}; use sp_keyring::Sr25519Keyring; - -use sp_application_crypto::{ecdsa, ed25519, sr25519, RuntimeAppPublic}; +use sp_statement_store::{ + runtime_api::{InvalidStatement, StatementSource, ValidStatement}, + Proof, SignatureVerificationResult, Statement, +}; #[cfg(feature = "bls-experimental")] use sp_application_crypto::{bls381, ecdsa_bls381}; @@ -824,6 +826,26 @@ impl_runtime_apis! { vec![PresetId::from("foobar"), PresetId::from("staging")] } } + + impl sp_statement_store::runtime_api::ValidateStatement for Runtime { + fn validate_statement( + _source: StatementSource, + statement: Statement, + ) -> core::result::Result { + match statement.verify_signature() { + SignatureVerificationResult::Valid(_) => + Ok(ValidStatement { max_count: 100_000, max_size: 1_000_000 }), + SignatureVerificationResult::Invalid => Err(InvalidStatement::BadProof), + SignatureVerificationResult::NoSignature => { + if let Some(Proof::OnChain { block_hash: _, .. }) = statement.proof() { + Ok(ValidStatement { max_count: 100_000, max_size: 1_000_000 }) + } else { + Err(InvalidStatement::BadProof) + } + }, + } + } + } } fn test_ed25519_crypto( From ec178a021bd0ae370c981bf3dd8c4e56c64f2f0f Mon Sep 17 00:00:00 2001 From: Alexandru Gheorghe Date: Wed, 7 Jan 2026 12:36:31 +0200 Subject: [PATCH 26/81] update and use statement_store_bench Signed-off-by: Alexandru Gheorghe --- Cargo.lock | 1 + .../runtimes/people/people-westend/src/lib.rs | 8 +- .../tests/zombie_ci/statement_store_bench.rs | 169 +++-- substrate/client/rpc/src/statement/mod.rs | 7 +- substrate/client/statement-store/Cargo.toml | 1 + substrate/client/statement-store/src/lib.rs | 41 +- .../statement-store/src/subscription.rs | 683 ++++++++++++++---- .../primitives/statement-store/src/lib.rs | 53 +- .../statement-store/src/store_api.rs | 39 +- 9 files changed, 751 insertions(+), 251 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index a013929dfdb73..623dff2fd01eb 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -21008,6 +21008,7 @@ dependencies = [ "async-channel 1.9.0", "criterion", "futures", + "itertools 0.11.0", "log", "parity-db", "parking_lot 0.12.3", diff --git a/cumulus/parachains/runtimes/people/people-westend/src/lib.rs b/cumulus/parachains/runtimes/people/people-westend/src/lib.rs index 5e44d12b96e93..31f4493c8af48 100644 --- a/cumulus/parachains/runtimes/people/people-westend/src/lib.rs +++ b/cumulus/parachains/runtimes/people/people-westend/src/lib.rs @@ -1163,13 +1163,13 @@ impl_runtime_apis! { // In the future we will allow people. if pallet_session::Validators::::get().contains(&account) { Ok(ValidStatement { - max_count: 2, - max_size: 1024, + max_count: 2 * 1024, + max_size: 1024 * 1024, }) } else { Ok(ValidStatement { - max_count: 0, - max_size: 0, + max_count: 2 * 1024, + max_size: 1024 * 1024, }) } } diff --git a/cumulus/zombienet/zombienet-sdk/tests/zombie_ci/statement_store_bench.rs b/cumulus/zombienet/zombienet-sdk/tests/zombie_ci/statement_store_bench.rs index f7d348aa041d6..da875d204ce88 100644 --- a/cumulus/zombienet/zombienet-sdk/tests/zombie_ci/statement_store_bench.rs +++ b/cumulus/zombienet/zombienet-sdk/tests/zombie_ci/statement_store_bench.rs @@ -5,10 +5,11 @@ use anyhow::anyhow; use codec::{Decode, Encode}; +use futures::stream::{FuturesUnordered, StreamExt}; use log::{debug, info, trace}; use sc_statement_store::{DEFAULT_MAX_TOTAL_SIZE, DEFAULT_MAX_TOTAL_STATEMENTS}; use sp_core::{blake2_256, sr25519, Bytes, Pair}; -use sp_statement_store::{Channel, Statement, Topic}; +use sp_statement_store::{Channel, Statement, SubmitResult, Topic, TopicFilter}; use std::{cell::Cell, collections::HashMap, time::Duration}; use tokio::time::timeout; use zombienet_sdk::{ @@ -24,6 +25,7 @@ const MAX_RETRIES: u32 = 100; const RETRY_DELAY_MS: u64 = 500; const PROPAGATION_DELAY_MS: u64 = 2000; const TIMEOUT_MS: u64 = 3000; +const SUBSCRIBE_TIMEOUT_SECS: u64 = 200; /// Single-node benchmark. /// @@ -193,7 +195,7 @@ async fn statement_store_memory_stress_bench() -> Result<(), anyhow::Error> { loop { let statement_bytes: Bytes = statement.encode().into(); let Err(err) = rpc_client - .request::<()>("statement_submit", rpc_params![statement_bytes]) + .request::("statement_submit", rpc_params![statement_bytes]) .await else { break; // Successfully submitted @@ -314,7 +316,7 @@ async fn spawn_network(collators: &[&str]) -> Result, a let images = zombienet_sdk::environment::get_images_from_env(); let config = NetworkConfigBuilder::new() .with_relaychain(|r| { - r.with_chain("rococo-local") + r.with_chain("westend-local") .with_default_command("polkadot") .with_default_image(images.polkadot.as_str()) .with_default_args(vec!["-lparachain=debug".into()]) @@ -326,12 +328,15 @@ async fn spawn_network(collators: &[&str]) -> Result, a .with_id(2400) .with_default_command("polkadot-parachain") .with_default_image(images.cumulus.as_str()) - .with_chain_spec_path("tests/zombie_ci/people-rococo-spec.json") + // TODO: we need a new custom chain spec with new statement format. + .with_chain("people-westend-local") .with_default_args(vec![ "--force-authoring".into(), - "-lstatement-store=info,statement-gossip=info,error".into(), + "--max-runtime-instances=32".into(), + "-linfo,statement-store=info,statement-gossip=info".into(), "--enable-statement-store".into(), - "--rpc-max-connections=50000".into(), + "--rpc-max-connections=500000".into(), + "--rpc-max-subscriptions-per-connection=500000".into(), ]) // Have to set outside of the loop below, so that `p` has the right type. .with_collator(|n| n.with_name(collators[0])); @@ -502,7 +507,7 @@ impl Participant { async fn statement_submit(&mut self, statement: Statement) -> Result<(), anyhow::Error> { let statement_bytes: Bytes = statement.encode().into(); - let _: () = self + let _: SubmitResult = self .rpc_client .request("statement_submit", rpc_params![statement_bytes]) .await?; @@ -581,36 +586,48 @@ impl Participant { async fn receive_session_keys(&mut self) -> Result<(), anyhow::Error> { let mut pending = self.group_members.clone(); + let mut subscriptions = Vec::new(); + trace!(target: &self.log_target(), "Pending session keys to receive: {:?}", pending.len()); - loop { - let mut completed_this_round = Vec::new(); - for &idx in &pending { - match timeout( - Duration::from_millis(TIMEOUT_MS), - self.statement_broadcasts_statement(vec![topic_public_key(), topic_idx(idx)]), + + for idx in &pending { + let mut subscription = self + .rpc_client + .subscribe::( + "statement_subscribeStatement", + rpc_params![TopicFilter::MatchAll(vec![ + topic_public_key().to_vec().into(), + topic_idx(*idx).to_vec().into() + ])], + "statement_unsubscribeStatement", ) - .await - { - Ok(Ok(statements)) if !statements.is_empty() => { - if let Some(statement) = statements.first() { - let data = statement.data().expect("Must contain session_key"); - let session_key = sr25519::Public::from_raw(data[..].try_into()?); - self.session_keys.insert(idx, session_key); - completed_this_round.push(idx); - } - }, - res => { - debug!(target: &self.log_target(), "No statements received for idx {:?}: {:?}", idx, res); - }, - } - } + .await?; + subscriptions.push((*idx, subscription)); + } - pending.retain(|x| !completed_this_round.contains(x)); - if pending.is_empty() { - break; - } - trace!(target: &self.log_target(), "Session keys left to receive: {:?}, waiting {}ms for retry", pending.len(), RETRY_DELAY_MS); - self.wait_for_retry().await?; + // info!("Starting to receive {} session keys", subscriptions.len()); + let mut futures: FuturesUnordered<_> = subscriptions + .into_iter() + .map(|(idx, mut subscription)| async move { + let statement_bytes = + timeout(Duration::from_secs(SUBSCRIBE_TIMEOUT_SECS), subscription.next()) + .await + .map_err(|_| anyhow!("Timeout waiting for session key"))? + .ok_or_else(|| anyhow!("Subscription ended unexpectedly"))? + .map_err(|e| anyhow!("Subscription error: {}", e))?; + let statement = Statement::decode(&mut &statement_bytes[..]) + .map_err(|e| anyhow!("Failed to decode statement: {}", e))?; + let data = statement.data().ok_or_else(|| anyhow!("Statement missing data"))?; + let session_key = sr25519::Public::from_raw( + data[..].try_into().map_err(|_| anyhow!("Invalid session key length"))?, + ); + Ok::<_, anyhow::Error>((idx, session_key)) + }) + .collect(); + + while let Some(result) = futures.next().await { + let (idx, session_key) = result?; + self.session_keys.insert(idx, session_key); } assert_eq!( @@ -645,45 +662,49 @@ impl Participant { self.session_keys.iter().map(|(&idx, &key)| (idx, key)).collect(); let own_session_key = self.session_key.public(); - trace!(target: &self.log_target(), "Pending messages to receive: {:?}", pending.len()); - loop { - let mut completed_this_round = Vec::new(); - for &(sender_idx, sender_session_key) in &pending { - match timeout( - Duration::from_millis(TIMEOUT_MS), - self.statement_broadcasts_statement(vec![ - topic_message(), - topic_pair(&sender_session_key, &own_session_key), - ]), + let mut subscriptions = Vec::new(); + + for &(sender_idx, sender_session_key) in &pending { + let mut subscription = self + .rpc_client + .subscribe::( + "statement_subscribeStatement", + rpc_params![TopicFilter::MatchAll(vec![ + topic_message().to_vec().into(), + topic_pair(&sender_session_key, &own_session_key).to_vec().into() + ])], + "statement_unsubscribeStatement", ) - .await - { - Ok(Ok(statements)) if !statements.is_empty() => { - if let Some(statement) = statements.first() { - let data = statement.data().expect("Must contain request"); - let req = StatementMessage::decode(&mut &data[..])?; - - if let std::collections::hash_map::Entry::Vacant(e) = - self.received_messages.entry((sender_idx, req.message_id)) - { - e.insert(false); - self.pending_messages.insert(sender_idx, Some(req.message_id)); - completed_this_round.push((sender_idx, sender_session_key)); - } - } - }, - res => { - debug!(target: &self.log_target(), "No statements received for sender {:?}: {:?}", sender_idx, res); - }, - } - } + .await?; + subscriptions.push((sender_idx, subscription)); + } - pending.retain(|x| !completed_this_round.contains(x)); - if pending.is_empty() { - break; + let mut futures: FuturesUnordered<_> = subscriptions + .into_iter() + .map(|(sender_idx, mut subscription)| async move { + let statement_bytes = + timeout(Duration::from_secs(SUBSCRIBE_TIMEOUT_SECS), subscription.next()) + .await + .map_err(|_| anyhow!("Timeout waiting for message"))? + .ok_or_else(|| anyhow!("Subscription ended unexpectedly"))? + .map_err(|e| anyhow!("Subscription error: {}", e))?; + let statement = Statement::decode(&mut &statement_bytes[..]) + .map_err(|e| anyhow!("Failed to decode statement: {}", e))?; + let data = statement.data().ok_or_else(|| anyhow!("Statement missing data"))?; + let req = StatementMessage::decode(&mut &data[..]) + .map_err(|e| anyhow!("Failed to decode message: {}", e))?; + Ok::<_, anyhow::Error>((sender_idx, req.message_id)) + }) + .collect(); + + while let Some(result) = futures.next().await { + let (sender_idx, message_id) = result?; + if let std::collections::hash_map::Entry::Vacant(e) = + self.received_messages.entry((sender_idx, message_id)) + { + e.insert(false); + self.pending_messages.insert(sender_idx, Some(message_id)); } - trace!(target: &self.log_target(), "Messages left to receive: {:?}, waiting {}ms for retry", pending.len(), RETRY_DELAY_MS); - self.wait_for_retry().await?; } assert_eq!( @@ -696,7 +717,6 @@ impl Participant { self.group_members.len(), "Not every request received" ); - Ok(()) } @@ -705,20 +725,15 @@ impl Participant { debug!(target: &self.log_target(), "Session keys exchange"); self.send_session_key().await?; - trace!(target: &self.log_target(), "Session keys sent"); - self.wait_for_propagation().await; - trace!(target: &self.log_target(), "Session keys requests started"); + trace!(target: &self.log_target(), "Session keys sent, receiving session keys"); self.receive_session_keys().await?; trace!(target: &self.log_target(), "Session keys received"); for round in 0..MESSAGE_COUNT { debug!(target: &self.log_target(), "Messages exchange, round {}", round + 1); self.send_messages(round).await?; - trace!(target: &self.log_target(), "Messages sent"); - self.wait_for_propagation().await; trace!(target: &self.log_target(), "Messages requests started"); self.receive_messages(round).await?; - trace!(target: &self.log_target(), "Messages received"); } let elapsed = start_time.elapsed(); diff --git a/substrate/client/rpc/src/statement/mod.rs b/substrate/client/rpc/src/statement/mod.rs index cbdaa6e74593b..b137f469abe65 100644 --- a/substrate/client/rpc/src/statement/mod.rs +++ b/substrate/client/rpc/src/statement/mod.rs @@ -28,6 +28,7 @@ pub use sc_rpc_api::statement::{error::Error, StatementApiServer}; use sp_core::Bytes; use sp_statement_store::{StatementSource, SubmitResult, TopicFilter}; use std::sync::Arc; +const LOG_TARGET: &str = "statement-store-rpc"; use crate::{ utils::{spawn_subscription_task, BoundedVecDeque, PendingSubscription}, @@ -75,7 +76,7 @@ impl StatementApiServer for StatementStore { fn subscribe_statement( &self, pending: PendingSubscriptionSink, - ext: &Extensions, + _ext: &Extensions, topic_filter: TopicFilter, ) { let checked_topic_filter = match topic_filter.try_into() { @@ -109,7 +110,7 @@ impl StatementApiServer for StatementStore { spawn_subscription_task(&self.executor, async { PendingSubscription::from(pending) - .pipe_from_stream(subscription_stream, BoundedVecDeque::new(2048 * 2048)) + .pipe_from_stream(subscription_stream, BoundedVecDeque::new(128)) .await; }); @@ -118,7 +119,7 @@ impl StatementApiServer for StatementStore { // Channel size is chosen to be large enough to always fit existing statements. if let Err(e) = subscription_sender.try_send(statement.into()) { log::warn!( - target: "statement_store_rpc", + target: LOG_TARGET, "Failed to send existing statement in subscription: {:?}", e ); break; diff --git a/substrate/client/statement-store/Cargo.toml b/substrate/client/statement-store/Cargo.toml index 8f8c19ac439a3..7a1e6bff003cf 100644 --- a/substrate/client/statement-store/Cargo.toml +++ b/substrate/client/statement-store/Cargo.toml @@ -17,6 +17,7 @@ targets = ["x86_64-unknown-linux-gnu"] [dependencies] async-channel = { workspace = true } +itertools = { workspace = true } futures = { workspace = true } log = { workspace = true, default-features = true } sc-utils = { workspace = true } diff --git a/substrate/client/statement-store/src/lib.rs b/substrate/client/statement-store/src/lib.rs index 14310eac00153..54d40d9dc6955 100644 --- a/substrate/client/statement-store/src/lib.rs +++ b/substrate/client/statement-store/src/lib.rs @@ -96,7 +96,7 @@ pub const MAX_STATEMENT_SIZE: usize = sc_network_statement::config::MAX_STATEMENT_NOTIFICATION_SIZE as usize - 1; /// Number of subscription filter worker tasks. -const NUM_FILTER_WORKERS: usize = 4; +const NUM_FILTER_WORKERS: usize = 1; const MAINTENANCE_PERIOD: std::time::Duration = std::time::Duration::from_secs(30); @@ -288,15 +288,17 @@ impl Index { ) -> Result<()> { match topic { CheckedTopicFilter::Any => self.iterate_with_any(key, f), - CheckedTopicFilter::MatchAll(topics) => self.iterate_with_match_all(key, topics, f), - CheckedTopicFilter::MatchAny(topics) => self.iterate_with_match_any(key, topics, f), + CheckedTopicFilter::MatchAll(topics) => + self.iterate_with_match_all(key, topics.iter(), f), + CheckedTopicFilter::MatchAny(topics) => + self.iterate_with_match_any(key, topics.iter(), f), } } - fn iterate_with_match_any( + fn iterate_with_match_any<'a>( &self, key: Option, - match_any_topics: &[Topic], + match_any_topics: impl ExactSizeIterator, mut f: impl FnMut(&Hash) -> Result<()>, ) -> Result<()> { if match_any_topics.len() > MAX_ANY_TOPICS { @@ -309,7 +311,7 @@ impl Index { return Ok(()) } - for t in match_any_topics.iter() { + for t in match_any_topics { let set = self.by_topic.get(t); for item in set.iter().map(|set| set.iter()).flatten() { @@ -343,15 +345,16 @@ impl Index { Ok(()) } - fn iterate_with_match_all( + fn iterate_with_match_all<'a>( &self, key: Option, - match_all_topics: &[Topic], + match_all_topics: impl ExactSizeIterator, mut f: impl FnMut(&Hash) -> Result<()>, ) -> Result<()> { let empty = HashSet::new(); let mut sets: [&HashSet; MAX_TOPICS + 1] = [∅ MAX_TOPICS + 1]; - if match_all_topics.len() > MAX_TOPICS { + let num_topics = match_all_topics.len(); + if num_topics > MAX_TOPICS { return Ok(()) } let key_set = self.by_dec_key.get(&key); @@ -360,7 +363,7 @@ impl Index { return Ok(()) } sets[0] = key_set.expect("Function returns if key_set is None"); - for (i, t) in match_all_topics.iter().enumerate() { + for (i, t) in match_all_topics.enumerate() { let set = self.by_topic.get(t); if set.map_or(0, |s| s.len()) == 0 { // At least one of the match_all_topics does not exist in the index. @@ -368,7 +371,7 @@ impl Index { } sets[i + 1] = set.expect("Function returns if set is None"); } - let sets = &mut sets[0..match_all_topics.len() + 1]; + let sets = &mut sets[0..num_topics + 1]; // Start with the smallest topic set or the key set. sets.sort_by_key(|s| s.len()); for item in sets[0] { @@ -830,7 +833,7 @@ impl Store { ) -> Result> { self.collect_statements( Some(dest), - &CheckedTopicFilter::MatchAll(match_all_topics.to_vec()), + &CheckedTopicFilter::MatchAll(match_all_topics.iter().cloned().collect()), |statement| { if let (Some(key), Some(_)) = (statement.decryption_key(), statement.data()) { let public: sp_core::ed25519::Public = UncheckedFrom::unchecked_from(key); @@ -949,7 +952,7 @@ impl StatementStore for Store { fn broadcasts(&self, match_all_topics: &[Topic]) -> Result>> { self.collect_statements( None, - &CheckedTopicFilter::MatchAll(match_all_topics.to_vec()), + &CheckedTopicFilter::MatchAll(match_all_topics.iter().cloned().collect()), |statement| statement.into_data(), ) } @@ -960,7 +963,7 @@ impl StatementStore for Store { fn posted(&self, match_all_topics: &[Topic], dest: [u8; 32]) -> Result>> { self.collect_statements( Some(dest), - &CheckedTopicFilter::MatchAll(match_all_topics.to_vec()), + &CheckedTopicFilter::MatchAll(match_all_topics.iter().cloned().collect()), |statement| statement.into_data(), ) } @@ -976,7 +979,7 @@ impl StatementStore for Store { fn broadcasts_stmt(&self, match_all_topics: &[Topic]) -> Result>> { self.collect_statements( None, - &CheckedTopicFilter::MatchAll(match_all_topics.to_vec()), + &CheckedTopicFilter::MatchAll(match_all_topics.iter().cloned().collect()), |statement| Some(statement.encode()), ) } @@ -987,7 +990,7 @@ impl StatementStore for Store { fn posted_stmt(&self, match_all_topics: &[Topic], dest: [u8; 32]) -> Result>> { self.collect_statements( Some(dest), - &CheckedTopicFilter::MatchAll(match_all_topics.to_vec()), + &CheckedTopicFilter::MatchAll(match_all_topics.iter().cloned().collect()), |statement| Some(statement.encode()), ) } @@ -1062,6 +1065,7 @@ impl StatementStore for Store { } else { None }; + let validation_result = (self.validate_fn)(at_block, source, statement.clone()); let validation = match validation_result { @@ -1196,15 +1200,14 @@ impl StatementStoreSubscriptionApi for Store { #[cfg(test)] mod tests { - use core::num; use crate::Store; use sc_keystore::Keystore; use sp_core::{Decode, Encode, Pair}; use sp_statement_store::{ runtime_api::{InvalidStatement, ValidStatement, ValidateStatement}, - AccountId, Channel, CheckedTopicFilter, DecryptionKey, Proof, SignatureVerificationResult, - Statement, StatementSource, StatementStore, SubmitResult, Topic, + AccountId, Channel, DecryptionKey, Proof, SignatureVerificationResult, Statement, + StatementSource, StatementStore, SubmitResult, Topic, }; type Extrinsic = sp_runtime::OpaqueExtrinsic; diff --git a/substrate/client/statement-store/src/subscription.rs b/substrate/client/statement-store/src/subscription.rs index da3a4c182cc34..415562f69f4bc 100644 --- a/substrate/client/statement-store/src/subscription.rs +++ b/substrate/client/statement-store/src/subscription.rs @@ -32,14 +32,14 @@ // This value is generous to allow for bursts of statements without dropping any or backpressuring // too early. const MATCHERS_TASK_CHANNEL_BUFFER_SIZE: usize = 80_000; - use futures::{Stream, StreamExt}; +use itertools::Itertools; use crate::LOG_TARGET; use sc_utils::id_sequence::SeqID; use sp_core::{traits::SpawnNamed, Bytes, Encode}; pub use sp_statement_store::StatementStore; -use sp_statement_store::{CheckedTopicFilter, Result, Statement, Topic}; +use sp_statement_store::{CheckedTopicFilter, Result, Statement, Topic, MAX_TOPICS}; use std::{ collections::{HashMap, HashSet}, sync::atomic::AtomicU64, @@ -57,7 +57,7 @@ pub trait StatementStoreSubscriptionApi: Send + Sync { ) -> Result<(Vec>, async_channel::Sender, SubscriptionStatementsStream)>; } -#[derive(Clone)] +#[derive(Clone, Debug)] pub enum MatcherMessage { NewStatement(Statement), Subscribe(SubscriptionInfo), @@ -90,12 +90,15 @@ impl SubscriptionsHandle { Some("statement-store"), Box::pin(async move { let mut subscriptions = SubscriptionsInfo::new(); - + log::info!( + target: LOG_TARGET, + "Started statement subscription matcher task" + ); loop { - match subscription_matcher_receiver.recv().await { + let res = subscription_matcher_receiver.recv().await; + match res { Ok(MatcherMessage::NewStatement(statement)) => { - subscriptions.notify_matching_subscribers(&statement); - subscriptions.notify_any_subscribers(&statement); + subscriptions.notify_matching_filters(&statement); }, Ok(MatcherMessage::Subscribe(info)) => { subscriptions.subscribe(info); @@ -133,10 +136,7 @@ impl SubscriptionsHandle { num_existing_statements: usize, ) -> (async_channel::Sender, SubscriptionStatementsStream) { let next_id = self.next_id(); - let (tx, rx) = async_channel::bounded(std::cmp::max( - MATCHERS_TASK_CHANNEL_BUFFER_SIZE, - num_existing_statements, - )); + let (tx, rx) = async_channel::bounded(std::cmp::max(128, num_existing_statements)); let subscription_info = SubscriptionInfo { topic_filter: topic_filter.clone(), seq_id: next_id, tx }; @@ -162,9 +162,11 @@ impl SubscriptionsHandle { // Information about all subscriptions. // Each matcher task will have its own instance of this struct. struct SubscriptionsInfo { - // Subscriptions organized by topic, there can be multiple entries per subscription if it - // subscribes to multiple topics with MatchAll or MatchAny filters. - subscriptions_by_topic: HashMap>, + // Subscriptions organized by topic for MatchAll filters. + subscriptions_match_all_by_topic: + HashMap; MAX_TOPICS]>, + // Subscriptions organized by topic for MatchAny filters. + subscriptions_match_any_by_topic: HashMap>, // Subscriptions that listen with Any filter (i.e., no topic filtering). subscriptions_any: HashMap, // Mapping from subscription ID to topic filter. @@ -172,7 +174,7 @@ struct SubscriptionsInfo { } // Information about a single subscription. -#[derive(Clone)] +#[derive(Clone, Debug)] pub(crate) struct SubscriptionInfo { // The filter used for this subscription. topic_filter: CheckedTopicFilter, @@ -185,7 +187,8 @@ pub(crate) struct SubscriptionInfo { impl SubscriptionsInfo { fn new() -> SubscriptionsInfo { SubscriptionsInfo { - subscriptions_by_topic: HashMap::new(), + subscriptions_match_all_by_topic: HashMap::new(), + subscriptions_match_any_by_topic: HashMap::new(), subscriptions_any: HashMap::new(), by_sub_id: HashMap::new(), } @@ -195,21 +198,27 @@ impl SubscriptionsInfo { fn subscribe(&mut self, subscription_info: SubscriptionInfo) { self.by_sub_id .insert(subscription_info.seq_id, subscription_info.topic_filter.clone()); - let topics = match &subscription_info.topic_filter { + match &subscription_info.topic_filter { CheckedTopicFilter::Any => { self.subscriptions_any .insert(subscription_info.seq_id, subscription_info.clone()); return; }, - CheckedTopicFilter::MatchAll(topics) => topics, - CheckedTopicFilter::MatchAny(topics) => topics, + CheckedTopicFilter::MatchAll(topics) => + for topic in topics { + self.subscriptions_match_all_by_topic + .entry(*topic) + .or_insert_with(Default::default)[topics.len() - 1] + .insert(subscription_info.seq_id, subscription_info.clone()); + }, + CheckedTopicFilter::MatchAny(topics) => + for topic in topics { + self.subscriptions_match_any_by_topic + .entry(*topic) + .or_insert_with(Default::default) + .insert(subscription_info.seq_id, subscription_info.clone()); + }, }; - for topic in topics { - self.subscriptions_by_topic - .entry(*topic) - .or_insert_with(Default::default) - .insert(subscription_info.seq_id, subscription_info.clone()); - } } // Notify a single subscriber, marking it for unsubscribing if sending fails. @@ -230,64 +239,73 @@ impl SubscriptionsInfo { } } - // Notify all subscribers whose filters match the given statement. - fn notify_matching_subscribers(&mut self, statement: &Statement) { - // Track how many topics are still needed to match for each subscription. - // `subscription_by_topic` may contain multiple entries for the same subscription if it - // subscribes to multiple topics with MatchAll or MatchAny filters. - // We decrement the counter each time we find a matching topic, and only notify - // the subscriber when the counter reaches zero. - let mut matched_senders: HashMap = HashMap::new(); - let bytes_to_send: Bytes = statement.encode().into(); + fn notify_matching_filters(&mut self, statement: &Statement) { + self.notify_match_all_subscribers_best(statement); + self.notify_match_any_subscribers(statement); + self.notify_any_subscribers(statement); + } + + // Notify all subscribers with MatchAny filters that match the given statement. + fn notify_match_any_subscribers(&mut self, statement: &Statement) { let mut needs_unsubscribing: HashSet = HashSet::new(); + let mut already_notified: HashSet = HashSet::new(); + let bytes_to_send: Bytes = statement.encode().into(); for statement_topic in statement.topics() { - if let Some(subscriptions) = self.subscriptions_by_topic.get(statement_topic) { - for subscription in subscriptions.values() { - // Check if the statement matches the subscription filter - if let Some(counter) = matched_senders.get_mut(&subscription.seq_id) { - if *counter > 0 { - *counter -= 1; - if *counter == 0 { - self.notify_subscriber( - subscription, - bytes_to_send.clone(), - &mut needs_unsubscribing, - ); - } - } - } else { - match &subscription.topic_filter { - CheckedTopicFilter::Any => { - matched_senders.insert(subscription.seq_id, 0); - self.notify_subscriber( - subscription, - bytes_to_send.clone(), - &mut needs_unsubscribing, - ); - }, - CheckedTopicFilter::MatchAll(topics) => { - let counter = topics.len() - 1; - - matched_senders.insert(subscription.seq_id, counter); - if counter == 0 { - self.notify_subscriber( - subscription, - bytes_to_send.clone(), - &mut needs_unsubscribing, - ); - } - }, - CheckedTopicFilter::MatchAny(_topics) => { - matched_senders.insert(subscription.seq_id, 0); - self.notify_subscriber( - subscription, - bytes_to_send.clone(), - &mut needs_unsubscribing, - ); - }, - } - } + if let Some(subscriptions) = self.subscriptions_match_any_by_topic.get(statement_topic) + { + for subscription in subscriptions + .values() + .filter(|subscription| already_notified.insert(subscription.seq_id)) + { + self.notify_subscriber( + subscription, + bytes_to_send.clone(), + &mut needs_unsubscribing, + ); + } + } + } + + // Unsubscribe any subscriptions that failed to receive messages, to give them a chance to + // recover and not miss statements. + for sub_id in needs_unsubscribing { + self.unsubscribe(sub_id); + } + } + + // Notify all subscribers with MatchAll filters that match the given statement. + fn notify_match_all_subscribers_best(&mut self, statement: &Statement) { + let bytes_to_send: Bytes = statement.encode().into(); + let mut needs_unsubscribing: HashSet = HashSet::new(); + let num_topics = statement.topics().len(); + + // Check all combinations of topics in the statement to find matching subscriptions. + // This works well because the maximum allowed topics is small (MAX_TOPICS = 4). + for num_topics_to_check in 1..=num_topics { + for combo in statement.topics().iter().combinations(num_topics_to_check) { + // Find the topic with the fewest subscriptions to minimize the number of checks. + let Some(Some(topic_with_fewest)) = combo + .iter() + .map(|topic| self.subscriptions_match_all_by_topic.get(*topic)) + .min_by_key(|subscriptions| { + subscriptions.map_or(0, |subscryptions_by_length| { + subscryptions_by_length[num_topics_to_check - 1].len() + }) + }) + else { + return; + }; + + for subscription in topic_with_fewest[num_topics_to_check - 1] + .values() + .filter(|subscription| subscription.topic_filter.matches(statement)) + { + self.notify_subscriber( + subscription, + bytes_to_send.clone(), + &mut needs_unsubscribing, + ); } } } @@ -334,11 +352,24 @@ impl SubscriptionsInfo { CheckedTopicFilter::MatchAny(topics) => topics, }; + // Remove subscription from relevant maps. for topic in topics { - if let Some(subscriptions) = self.subscriptions_by_topic.get_mut(topic) { + // Check both MatchAny and MatchAll maps. + if let Some(subscriptions) = self.subscriptions_match_any_by_topic.get_mut(topic) { subscriptions.remove(&id); if subscriptions.is_empty() { - self.subscriptions_by_topic.remove(topic); + self.subscriptions_match_any_by_topic.remove(topic); + } + } + if let Some(subscriptions) = self.subscriptions_match_all_by_topic.get_mut(topic) { + for subscriptions in subscriptions.iter_mut() { + if subscriptions.remove(&id).is_some() { + break; + } + } + + if subscriptions.iter().all(|s| s.is_empty()) { + self.subscriptions_match_all_by_topic.remove(topic); } } } @@ -429,19 +460,21 @@ mod tests { let topic1 = [8u8; 32]; let topic2 = [9u8; 32]; let sub_info1 = SubscriptionInfo { - topic_filter: CheckedTopicFilter::MatchAll(vec![topic1, topic2]), + topic_filter: CheckedTopicFilter::MatchAll( + vec![topic1, topic2].iter().cloned().collect(), + ), seq_id: SeqID::from(1), tx: tx1, }; subscriptions.subscribe(sub_info1.clone()); - assert!(subscriptions.subscriptions_by_topic.contains_key(&topic1)); - assert!(subscriptions.subscriptions_by_topic.contains_key(&topic2)); + assert!(subscriptions.subscriptions_match_all_by_topic.contains_key(&topic1)); + assert!(subscriptions.subscriptions_match_all_by_topic.contains_key(&topic2)); assert!(subscriptions.by_sub_id.contains_key(&sub_info1.seq_id)); assert!(!subscriptions.subscriptions_any.contains_key(&sub_info1.seq_id)); subscriptions.unsubscribe(sub_info1.seq_id); - assert!(!subscriptions.subscriptions_by_topic.contains_key(&topic1)); - assert!(!subscriptions.subscriptions_by_topic.contains_key(&topic2)); + assert!(!subscriptions.subscriptions_match_all_by_topic.contains_key(&topic1)); + assert!(!subscriptions.subscriptions_match_all_by_topic.contains_key(&topic2)); } #[test] @@ -468,19 +501,21 @@ mod tests { let topic1 = [8u8; 32]; let topic2 = [9u8; 32]; let sub_info1 = SubscriptionInfo { - topic_filter: CheckedTopicFilter::MatchAny(vec![topic1, topic2]), + topic_filter: CheckedTopicFilter::MatchAny( + vec![topic1, topic2].iter().cloned().collect(), + ), seq_id: SeqID::from(1), tx: tx1, }; subscriptions.subscribe(sub_info1.clone()); - assert!(subscriptions.subscriptions_by_topic.contains_key(&topic1)); - assert!(subscriptions.subscriptions_by_topic.contains_key(&topic2)); + assert!(subscriptions.subscriptions_match_any_by_topic.contains_key(&topic1)); + assert!(subscriptions.subscriptions_match_any_by_topic.contains_key(&topic2)); assert!(subscriptions.by_sub_id.contains_key(&sub_info1.seq_id)); assert!(!subscriptions.subscriptions_any.contains_key(&sub_info1.seq_id)); subscriptions.unsubscribe(sub_info1.seq_id); - assert!(!subscriptions.subscriptions_by_topic.contains_key(&topic1)); - assert!(!subscriptions.subscriptions_by_topic.contains_key(&topic2)); + assert!(!subscriptions.subscriptions_match_all_by_topic.contains_key(&topic1)); + assert!(!subscriptions.subscriptions_match_all_by_topic.contains_key(&topic2)); } #[test] @@ -495,8 +530,8 @@ mod tests { }; subscriptions.subscribe(sub_info1.clone()); - let mut statement = signed_statement(1); - subscriptions.notify_any_subscribers(&statement); + let statement = signed_statement(1); + subscriptions.notify_matching_filters(&statement); let received = rx1.try_recv().expect("Should receive statement"); let decoded_statement: Statement = @@ -512,7 +547,9 @@ mod tests { let topic1 = [8u8; 32]; let topic2 = [9u8; 32]; let sub_info1 = SubscriptionInfo { - topic_filter: CheckedTopicFilter::MatchAll(vec![topic1, topic2]), + topic_filter: CheckedTopicFilter::MatchAll( + vec![topic1, topic2].iter().cloned().collect(), + ), seq_id: SeqID::from(1), tx: tx1, }; @@ -520,13 +557,13 @@ mod tests { let mut statement = signed_statement(1); statement.set_topic(0, Topic::from(topic2)); - subscriptions.notify_matching_subscribers(&statement); + subscriptions.notify_matching_filters(&statement); // Should not receive yet, only one topic matched. assert!(rx1.try_recv().is_err()); statement.set_topic(1, Topic::from(topic1)); - subscriptions.notify_matching_subscribers(&statement); + subscriptions.notify_matching_filters(&statement); let received = rx1.try_recv().expect("Should receive statement"); let decoded_statement: Statement = @@ -538,21 +575,41 @@ mod tests { fn test_notify_match_any_subscribers() { let mut subscriptions = SubscriptionsInfo::new(); let (tx1, rx1) = async_channel::bounded::(10); + let (tx2, rx2) = async_channel::bounded::(10); + let topic1 = [8u8; 32]; let topic2 = [9u8; 32]; let sub_info1 = SubscriptionInfo { - topic_filter: CheckedTopicFilter::MatchAny(vec![topic1, topic2]), + topic_filter: CheckedTopicFilter::MatchAny( + vec![topic1, topic2].iter().cloned().collect(), + ), seq_id: SeqID::from(1), tx: tx1, }; + + let sub_info2 = SubscriptionInfo { + topic_filter: CheckedTopicFilter::MatchAny(vec![topic2].iter().cloned().collect()), + seq_id: SeqID::from(2), + tx: tx2, + }; + subscriptions.subscribe(sub_info1.clone()); + subscriptions.subscribe(sub_info2.clone()); + let mut statement = signed_statement(1); - statement.set_topic(0, Topic::from(topic2)); - subscriptions.notify_matching_subscribers(&statement); + statement.set_topic(0, Topic::from(topic1)); + statement.set_topic(1, Topic::from(topic2)); + subscriptions.notify_match_any_subscribers(&statement); + let received = rx1.try_recv().expect("Should receive statement"); let decoded_statement: Statement = Statement::decode(&mut &received.0[..]).expect("Should decode statement"); assert_eq!(decoded_statement, statement); + + let received = rx2.try_recv().expect("Should receive statement"); + let decoded_statement: Statement = + Statement::decode(&mut &received.0[..]).expect("Should decode statement"); + assert_eq!(decoded_statement, statement); } #[tokio::test] @@ -569,8 +626,12 @@ mod tests { let streams = (0..5) .into_iter() .map(|_| { - subscriptions_handle - .subscribe(CheckedTopicFilter::MatchAll(vec![topic1, topic2])) + subscriptions_handle.subscribe( + CheckedTopicFilter::MatchAll( + vec![topic1, topic2].iter().cloned().collect(), + ), + 20, + ) }) .collect::>(); @@ -581,7 +642,7 @@ mod tests { statement.set_topic(1, Topic::from(topic1)); subscriptions_handle.notify(statement.clone()); - for (tx, mut stream) in streams { + for (_tx, mut stream) in streams { let received = stream.next().await.expect("Should receive statement"); let decoded_statement: Statement = Statement::decode(&mut &received.0[..]).expect("Should decode statement"); @@ -590,31 +651,403 @@ mod tests { } } - // #[tokio::test] - // async fn test_handle_unsubscribe() { - // let subscriptions_handle = - // SubscriptionsHandle::new(Box::new(sp_core::testing::TaskExecutor::new()), 3); + #[tokio::test] + async fn test_handle_unsubscribe() { + let subscriptions_handle = + SubscriptionsHandle::new(Box::new(sp_core::testing::TaskExecutor::new()), 2); + + let topic1 = [8u8; 32]; + let topic2 = [9u8; 32]; + + let (tx, mut stream) = subscriptions_handle.subscribe( + CheckedTopicFilter::MatchAll(vec![topic1, topic2].iter().cloned().collect()), + 20, + ); + + let mut statement = signed_statement(1); + statement.set_topic(0, Topic::from(topic1)); + statement.set_topic(1, Topic::from(topic2)); + + // Send a statement and verify it's received. + subscriptions_handle.notify(statement.clone()); + + let received = stream.next().await.expect("Should receive statement"); + let decoded_statement: Statement = + Statement::decode(&mut &received.0[..]).expect("Should decode statement"); + assert_eq!(decoded_statement, statement); + + // Drop the stream to trigger unsubscribe. + drop(stream); + + // Give some time for the unsubscribe message to be processed. + tokio::time::sleep(std::time::Duration::from_millis(1000)).await; + + // Send another statement after unsubscribe. + let mut statement2 = signed_statement(2); + statement2.set_topic(0, Topic::from(topic1)); + statement2.set_topic(1, Topic::from(topic2)); + subscriptions_handle.notify(statement2.clone()); + + // The tx channel should be closed/disconnected since the subscription was removed. + // Give some time for the notification to potentially arrive (it shouldn't). + tokio::time::sleep(std::time::Duration::from_millis(1000)).await; + + // The sender should fail to send since the subscription is gone. + // We verify by checking that the tx channel is disconnected. + assert!(tx.is_closed(), "Sender should be closed after unsubscribe"); + } + + #[test] + fn test_unsubscribe_nonexistent() { + let mut subscriptions = SubscriptionsInfo::new(); + // Unsubscribing a non-existent subscription should not panic. + subscriptions.unsubscribe(SeqID::from(999)); + // Verify internal state is still valid. + assert!(subscriptions.by_sub_id.is_empty()); + assert!(subscriptions.subscriptions_any.is_empty()); + assert!(subscriptions.subscriptions_match_all_by_topic.is_empty()); + assert!(subscriptions.subscriptions_match_any_by_topic.is_empty()); + } - // let topic1 = [8u8; 32]; - // let topic2 = [9u8; 32]; + #[test] + fn test_multiple_subscriptions_same_topic() { + let mut subscriptions = SubscriptionsInfo::new(); - // let streams = (0..5) - // .into_iter() - // .map(|_| subscriptions_handle.subscribe(TopicFilter::MatchAll(vec![topic1, topic2]))) - // .collect::>(); + let (tx1, rx1) = async_channel::bounded::(10); + let (tx2, rx2) = async_channel::bounded::(10); + let topic1 = [8u8; 32]; + let topic2 = [9u8; 32]; - // // Unsubscribe all streams by dropping SubscriptionStatementsStream - // let rx_channels = - // streams.into_iter().map(|(_, stream)| stream.rx.clone()).collect::>(); + let sub_info1 = SubscriptionInfo { + topic_filter: CheckedTopicFilter::MatchAll( + vec![topic1, topic2].iter().cloned().collect(), + ), + seq_id: SeqID::from(1), + tx: tx1, + }; + let sub_info2 = SubscriptionInfo { + topic_filter: CheckedTopicFilter::MatchAll( + vec![topic1, topic2].iter().cloned().collect(), + ), + seq_id: SeqID::from(2), + tx: tx2, + }; - // let mut statement = signed_statement(1); - // statement.set_topic(0, Topic::from(topic2)); - // subscriptions_handle.notify(statement.clone()); + subscriptions.subscribe(sub_info1.clone()); + subscriptions.subscribe(sub_info2.clone()); + + // Both subscriptions should be registered under each topic. + assert_eq!( + subscriptions + .subscriptions_match_all_by_topic + .get(&topic1) + .unwrap() + .iter() + .map(|s| s.len()) + .sum::(), + 2 + ); + assert_eq!( + subscriptions + .subscriptions_match_all_by_topic + .get(&topic2) + .unwrap() + .iter() + .map(|s| s.len()) + .sum::(), + 2 + ); - // statement.set_topic(1, Topic::from(topic1)); - // subscriptions_handle.notify(statement.clone()); - // for rx in rx_channels { - // assert!(rx.recv().await.is_err()); - // } - // } + // Send a matching statement. + let mut statement = signed_statement(1); + statement.set_topic(0, Topic::from(topic1)); + statement.set_topic(1, Topic::from(topic2)); + subscriptions.notify_matching_filters(&statement); + + // Both should receive. + assert!(rx1.try_recv().is_ok()); + assert!(rx2.try_recv().is_ok()); + + // Unsubscribe one. + subscriptions.unsubscribe(sub_info1.seq_id); + + // Only one subscription should remain. + assert_eq!( + subscriptions + .subscriptions_match_all_by_topic + .get(&topic1) + .unwrap() + .iter() + .map(|s| s.len()) + .sum::(), + 1 + ); + assert_eq!( + subscriptions + .subscriptions_match_all_by_topic + .get(&topic2) + .unwrap() + .iter() + .map(|s| s.len()) + .sum::(), + 1 + ); + assert!(!subscriptions.by_sub_id.contains_key(&sub_info1.seq_id)); + assert!(subscriptions.by_sub_id.contains_key(&sub_info2.seq_id)); + + // Send another statement. + subscriptions.notify_matching_filters(&statement); + + // Only sub2 should receive. + assert!(rx2.try_recv().is_ok()); + assert!(rx1.try_recv().is_err()); + } + + #[test] + fn test_subscriber_auto_unsubscribe_on_channel_full() { + let mut subscriptions = SubscriptionsInfo::new(); + + // Create a channel with capacity 1. + let (tx1, rx1) = async_channel::bounded::(1); + let topic1 = [8u8; 32]; + + let sub_info1 = SubscriptionInfo { + topic_filter: CheckedTopicFilter::MatchAny(vec![topic1].iter().cloned().collect()), + seq_id: SeqID::from(1), + tx: tx1, + }; + subscriptions.subscribe(sub_info1.clone()); + + let mut statement = signed_statement(1); + statement.set_topic(0, Topic::from(topic1)); + + // First notification should succeed. + subscriptions.notify_matching_filters(&statement); + assert!(rx1.try_recv().is_ok()); + + // Fill the channel. + subscriptions.notify_matching_filters(&statement); + // Channel is now full. + + // Next notification should trigger auto-unsubscribe. + subscriptions.notify_matching_filters(&statement); + + // Subscription should be removed. + assert!(!subscriptions.by_sub_id.contains_key(&sub_info1.seq_id)); + assert!(!subscriptions.subscriptions_match_any_by_topic.contains_key(&topic1)); + } + + #[test] + fn test_match_any_receives_once_per_statement() { + let mut subscriptions = SubscriptionsInfo::new(); + + let (tx1, rx1) = async_channel::bounded::(10); + let topic1 = [8u8; 32]; + let topic2 = [9u8; 32]; + + // Subscribe to MatchAny with both topics. + let sub_info1 = SubscriptionInfo { + topic_filter: CheckedTopicFilter::MatchAny( + vec![topic1, topic2].iter().cloned().collect(), + ), + seq_id: SeqID::from(1), + tx: tx1, + }; + subscriptions.subscribe(sub_info1.clone()); + + // Create a statement that matches BOTH topics. + let mut statement = signed_statement(1); + statement.set_topic(0, Topic::from(topic1)); + statement.set_topic(1, Topic::from(topic2)); + + subscriptions.notify_match_any_subscribers(&statement); + + // Should receive exactly once, not twice. + let received = rx1.try_recv().expect("Should receive statement"); + let decoded_statement: Statement = + Statement::decode(&mut &received.0[..]).expect("Should decode statement"); + assert_eq!(decoded_statement, statement); + + // No more messages. + assert!(rx1.try_recv().is_err()); + } + + #[test] + fn test_match_all_with_single_topic_matches_statement_with_two_topics() { + let mut subscriptions = SubscriptionsInfo::new(); + + let (tx1, rx1) = async_channel::bounded::(10); + let topic1 = [8u8; 32]; + let topic2 = [9u8; 32]; + + // Subscribe with MatchAll on only topic1. + let sub_info1 = SubscriptionInfo { + topic_filter: CheckedTopicFilter::MatchAll(vec![topic1].iter().cloned().collect()), + seq_id: SeqID::from(1), + tx: tx1, + }; + subscriptions.subscribe(sub_info1.clone()); + + // Create a statement that has BOTH topic1 and topic2. + let mut statement = signed_statement(1); + statement.set_topic(0, Topic::from(topic1)); + statement.set_topic(1, Topic::from(topic2)); + + subscriptions.notify_matching_filters(&statement); + + // Should receive because the statement contains topic1 (which is the only required topic). + let received = rx1.try_recv().expect("Should receive statement"); + let decoded_statement: Statement = + Statement::decode(&mut &received.0[..]).expect("Should decode statement"); + assert_eq!(decoded_statement, statement); + + // No more messages. + assert!(rx1.try_recv().is_err()); + } + + #[test] + fn test_match_all_no_matching_topics() { + let mut subscriptions = SubscriptionsInfo::new(); + + let (tx1, rx1) = async_channel::bounded::(10); + let topic1 = [8u8; 32]; + let topic2 = [9u8; 32]; + let topic3 = [10u8; 32]; + + let sub_info1 = SubscriptionInfo { + topic_filter: CheckedTopicFilter::MatchAll( + vec![topic1, topic2].iter().cloned().collect(), + ), + seq_id: SeqID::from(1), + tx: tx1, + }; + subscriptions.subscribe(sub_info1.clone()); + + // Statement with completely different topics. + let mut statement = signed_statement(1); + statement.set_topic(0, Topic::from(topic3)); + + subscriptions.notify_matching_filters(&statement); + + // Should not receive anything. + assert!(rx1.try_recv().is_err()); + } + + #[tokio::test] + async fn test_handle_with_match_any_filter() { + let subscriptions_handle = + SubscriptionsHandle::new(Box::new(sp_core::testing::TaskExecutor::new()), 2); + + let topic1 = [8u8; 32]; + let topic2 = [9u8; 32]; + + let (_tx, mut stream) = subscriptions_handle.subscribe( + CheckedTopicFilter::MatchAny(vec![topic1, topic2].iter().cloned().collect()), + 20, + ); + + // Statement matching only topic1. + let mut statement1 = signed_statement(1); + statement1.set_topic(0, Topic::from(topic1)); + subscriptions_handle.notify(statement1.clone()); + + let received = stream.next().await.expect("Should receive statement"); + let decoded_statement: Statement = + Statement::decode(&mut &received.0[..]).expect("Should decode statement"); + assert_eq!(decoded_statement, statement1); + + // Statement matching only topic2. + let mut statement2 = signed_statement(2); + statement2.set_topic(0, Topic::from(topic2)); + subscriptions_handle.notify(statement2.clone()); + + let received = stream.next().await.expect("Should receive statement"); + let decoded_statement: Statement = + Statement::decode(&mut &received.0[..]).expect("Should decode statement"); + assert_eq!(decoded_statement, statement2); + } + + #[tokio::test] + async fn test_handle_with_any_filter() { + let subscriptions_handle = + SubscriptionsHandle::new(Box::new(sp_core::testing::TaskExecutor::new()), 2); + + let (_tx, mut stream) = subscriptions_handle.subscribe(CheckedTopicFilter::Any, 20); + + // Send statements with various topics. + let statement1 = signed_statement(1); + subscriptions_handle.notify(statement1.clone()); + + let received = stream.next().await.expect("Should receive statement"); + let decoded_statement: Statement = + Statement::decode(&mut &received.0[..]).expect("Should decode statement"); + assert_eq!(decoded_statement, statement1); + + let mut statement2 = signed_statement(2); + statement2.set_topic(0, Topic::from([99u8; 32])); + subscriptions_handle.notify(statement2.clone()); + + let received = stream.next().await.expect("Should receive statement"); + let decoded_statement: Statement = + Statement::decode(&mut &received.0[..]).expect("Should decode statement"); + assert_eq!(decoded_statement, statement2); + } + + #[tokio::test] + async fn test_handle_multiple_subscribers_different_filters() { + let subscriptions_handle = + SubscriptionsHandle::new(Box::new(sp_core::testing::TaskExecutor::new()), 2); + + let topic1 = [8u8; 32]; + let topic2 = [9u8; 32]; + + // Subscriber 1: MatchAll on topic1 and topic2. + let (_tx1, mut stream1) = subscriptions_handle.subscribe( + CheckedTopicFilter::MatchAll(vec![topic1, topic2].iter().cloned().collect()), + 20, + ); + + // Subscriber 2: MatchAny on topic1. + let (_tx2, mut stream2) = subscriptions_handle + .subscribe(CheckedTopicFilter::MatchAny(vec![topic1].iter().cloned().collect()), 20); + + // Subscriber 3: Any. + let (_tx3, mut stream3) = subscriptions_handle.subscribe(CheckedTopicFilter::Any, 20); + + // Statement matching only topic1. + let mut statement1 = signed_statement(1); + statement1.set_topic(0, Topic::from(topic1)); + subscriptions_handle.notify(statement1.clone()); + + // stream1 should NOT receive (needs both topics). + // stream2 should receive (MatchAny topic1). + // stream3 should receive (Any). + + let received2 = stream2.next().await.expect("stream2 should receive"); + let decoded2: Statement = Statement::decode(&mut &received2.0[..]).unwrap(); + assert_eq!(decoded2, statement1); + + let received3 = stream3.next().await.expect("stream3 should receive"); + let decoded3: Statement = Statement::decode(&mut &received3.0[..]).unwrap(); + assert_eq!(decoded3, statement1); + + // Statement matching both topics. + let mut statement2 = signed_statement(2); + statement2.set_topic(0, Topic::from(topic1)); + statement2.set_topic(1, Topic::from(topic2)); + subscriptions_handle.notify(statement2.clone()); + + // All should receive. + let received1 = stream1.next().await.expect("stream1 should receive"); + let decoded1: Statement = Statement::decode(&mut &received1.0[..]).unwrap(); + assert_eq!(decoded1, statement2); + + let received2 = stream2.next().await.expect("stream2 should receive"); + let decoded2: Statement = Statement::decode(&mut &received2.0[..]).unwrap(); + assert_eq!(decoded2, statement2); + + let received3 = stream3.next().await.expect("stream3 should receive"); + let decoded3: Statement = Statement::decode(&mut &received3.0[..]).unwrap(); + assert_eq!(decoded3, statement2); + } } diff --git a/substrate/primitives/statement-store/src/lib.rs b/substrate/primitives/statement-store/src/lib.rs index 1817ecf9e3838..1c39229994257 100644 --- a/substrate/primitives/statement-store/src/lib.rs +++ b/substrate/primitives/statement-store/src/lib.rs @@ -47,23 +47,10 @@ pub const MAX_TOPICS: usize = 4; /// Maximum number of topics allowed in `MatchAny` filter. pub const MAX_ANY_TOPICS: usize = 128; -/// Topic filter for statement subscriptions. -#[derive(Clone)] -pub enum CheckedTopicFilter { - /// Matches all topics. - Any, - /// Matches only statements including all of the given topics. - /// Bytes are expected to be a 32-byte topic. Up to `4` topics can be provided. - MatchAll(Vec), - /// Matches statements including any of the given topics. - /// Bytes are expected to be a 32-byte topic. Up to `128` topics can be provided. - MatchAny(Vec), -} - #[cfg(feature = "std")] pub use store_api::{ - Error, InvalidReason, RejectionReason, Result, StatementSource, StatementStore, SubmitResult, - TopicFilter, + CheckedTopicFilter, Error, InvalidReason, RejectionReason, Result, StatementSource, + StatementStore, SubmitResult, TopicFilter, }; #[cfg(feature = "std")] @@ -629,12 +616,12 @@ mod test { let topic1 = [0x01; 32]; let topic2 = [0x02; 32]; let data = vec![55, 99]; - let priority = 999; + let expiry = 999; let channel = [0xcc; 32]; statement.set_proof(proof.clone()); statement.set_decryption_key(decryption_key); - statement.set_priority(priority); + statement.set_expiry(expiry); statement.set_channel(channel); statement.set_topic(0, topic1); statement.set_topic(1, topic2); @@ -646,7 +633,7 @@ mod test { let fields = vec![ Field::AuthenticityProof(proof.clone()), Field::DecryptionKey(decryption_key), - Field::Expiry(priority), + Field::Expiry(expiry), Field::Channel(channel), Field::Topic1(topic1), Field::Topic2(topic2), @@ -733,4 +720,34 @@ mod test { let decrypted = statement.decrypt_private(&pair).unwrap(); assert_eq!(decrypted, Some(plain)); } + + #[test] + fn check_matches() { + let mut statement = Statement::new(); + let topic1 = [0x01; 32]; + let topic2 = [0x02; 32]; + let topic3 = [0x03; 32]; + + statement.set_topic(0, topic1); + statement.set_topic(1, topic2); + + let filter_any = crate::CheckedTopicFilter::Any; + assert!(filter_any.matches(&statement)); + + let filter_all = + crate::CheckedTopicFilter::MatchAll([topic1, topic2].iter().cloned().collect()); + assert!(filter_all.matches(&statement)); + + let filter_all_fail = + crate::CheckedTopicFilter::MatchAll([topic1, topic3].iter().cloned().collect()); + assert!(!filter_all_fail.matches(&statement)); + + let filter_any_match = + crate::CheckedTopicFilter::MatchAny([topic2, topic3].iter().cloned().collect()); + assert!(filter_any_match.matches(&statement)); + + let filter_any_fail = + crate::CheckedTopicFilter::MatchAny([topic3].iter().cloned().collect()); + assert!(!filter_any_fail.matches(&statement)); + } } diff --git a/substrate/primitives/statement-store/src/store_api.rs b/substrate/primitives/statement-store/src/store_api.rs index e98e684eb90c2..15a24d3980dbd 100644 --- a/substrate/primitives/statement-store/src/store_api.rs +++ b/substrate/primitives/statement-store/src/store_api.rs @@ -15,10 +15,12 @@ // See the License for the specific language governing permissions and // limitations under the License. +use std::collections::HashSet; + use sp_core::Bytes; pub use crate::runtime_api::StatementSource; -use crate::{CheckedTopicFilter, Hash, Statement, Topic}; +use crate::{Hash, Statement, Topic}; /// Statement store error. #[derive(Debug, Clone, Eq, PartialEq, thiserror::Error)] @@ -50,6 +52,33 @@ pub enum TopicFilter { MatchAny(Vec), } +/// Topic filter for statement subscriptions. +#[derive(Clone, Debug)] +pub enum CheckedTopicFilter { + /// Matches all topics. + Any, + /// Matches only statements including all of the given topics. + /// Bytes are expected to be a 32-byte topic. Up to `4` topics can be provided. + MatchAll(HashSet), + /// Matches statements including any of the given topics. + /// Bytes are expected to be a 32-byte topic. Up to `128` topics can be provided. + MatchAny(HashSet), +} + +impl CheckedTopicFilter { + /// Check if the statement matches the filter. + pub fn matches(&self, statement: &Statement) -> bool { + match self { + CheckedTopicFilter::Any => true, + CheckedTopicFilter::MatchAll(topics) => + statement.topics().iter().filter(|topic| topics.contains(*topic)).count() == + topics.len(), + CheckedTopicFilter::MatchAny(topics) => + statement.topics().iter().any(|topic| topics.contains(topic)), + } + } +} + // Convert TopicFilter to CheckedTopicFilter, validating topic lengths. impl TryInto for TopicFilter { type Error = Error; @@ -58,26 +87,26 @@ impl TryInto for TopicFilter { match self { TopicFilter::Any => Ok(CheckedTopicFilter::Any), TopicFilter::MatchAll(topics) => { - let mut parsed_topics = Vec::with_capacity(topics.len()); + let mut parsed_topics = HashSet::with_capacity(topics.len()); for topic in topics { if topic.0.len() != 32 { return Err(Error::Decode("Invalid topic format".into())); } let mut arr = [0u8; 32]; arr.copy_from_slice(&topic.0); - parsed_topics.push(arr); + parsed_topics.insert(arr); } Ok(CheckedTopicFilter::MatchAll(parsed_topics)) }, TopicFilter::MatchAny(topics) => { - let mut parsed_topics = Vec::with_capacity(topics.len()); + let mut parsed_topics = HashSet::with_capacity(topics.len()); for topic in topics { if topic.0.len() != 32 { return Err(Error::Decode("Invalid topic format".into())); } let mut arr = [0u8; 32]; arr.copy_from_slice(&topic.0); - parsed_topics.push(arr); + parsed_topics.insert(arr); } Ok(CheckedTopicFilter::MatchAny(parsed_topics)) }, From dbd1860a4f5e75eecd2247f88b1f981cb03655f2 Mon Sep 17 00:00:00 2001 From: Andrei Eres Date: Thu, 8 Jan 2026 10:35:19 +0100 Subject: [PATCH 27/81] Use validation without runtime (mocked) --- .../benches/statement_store.rs | 107 ++++++++- substrate/client/statement-store/src/lib.rs | 224 +++++++++++++++--- 2 files changed, 303 insertions(+), 28 deletions(-) diff --git a/substrate/client/statement-store/benches/statement_store.rs b/substrate/client/statement-store/benches/statement_store.rs index c369ca3e6d046..0d3f2056d7262 100644 --- a/substrate/client/statement-store/benches/statement_store.rs +++ b/substrate/client/statement-store/benches/statement_store.rs @@ -47,6 +47,8 @@ struct RuntimeApi { _inner: TestClient, } +type TestBackend = sc_client_api::in_mem::Backend; + impl sp_api::ProvideRuntimeApi for TestClient { type Api = RuntimeApi; fn runtime_api(&self) -> sp_api::ApiRef { @@ -54,6 +56,102 @@ impl sp_api::ProvideRuntimeApi for TestClient { } } +impl sc_client_api::StorageProvider for TestClient { + fn storage( + &self, + _hash: Hash, + _key: &sc_client_api::StorageKey, + ) -> sp_blockchain::Result> { + Ok(None) + } + + fn storage_hash( + &self, + _hash: Hash, + _key: &sc_client_api::StorageKey, + ) -> sp_blockchain::Result> { + unimplemented!() + } + + fn storage_keys( + &self, + _hash: Hash, + _prefix: Option<&sc_client_api::StorageKey>, + _start_key: Option<&sc_client_api::StorageKey>, + ) -> sp_blockchain::Result< + sc_client_api::backend::KeysIter< + >::State, + Block, + >, + > { + unimplemented!() + } + + fn storage_pairs( + &self, + _hash: Hash, + _prefix: Option<&sc_client_api::StorageKey>, + _start_key: Option<&sc_client_api::StorageKey>, + ) -> sp_blockchain::Result< + sc_client_api::backend::PairsIter< + >::State, + Block, + >, + > { + unimplemented!() + } + + fn child_storage( + &self, + _hash: Hash, + _child_info: &sc_client_api::ChildInfo, + _key: &sc_client_api::StorageKey, + ) -> sp_blockchain::Result> { + unimplemented!() + } + + fn child_storage_keys( + &self, + _hash: Hash, + _child_info: sc_client_api::ChildInfo, + _prefix: Option<&sc_client_api::StorageKey>, + _start_key: Option<&sc_client_api::StorageKey>, + ) -> sp_blockchain::Result< + sc_client_api::backend::KeysIter< + >::State, + Block, + >, + > { + unimplemented!() + } + + fn child_storage_hash( + &self, + _hash: Hash, + _child_info: &sc_client_api::ChildInfo, + _key: &sc_client_api::StorageKey, + ) -> sp_blockchain::Result> { + unimplemented!() + } + + fn closest_merkle_value( + &self, + _hash: Hash, + _key: &sc_client_api::StorageKey, + ) -> sp_blockchain::Result>> { + unimplemented!() + } + + fn child_closest_merkle_value( + &self, + _hash: Hash, + _child_info: &sc_client_api::ChildInfo, + _key: &sc_client_api::StorageKey, + ) -> sp_blockchain::Result>> { + unimplemented!() + } +} + sp_api::mock_impl_runtime_apis! { impl ValidateStatement for RuntimeApi { fn validate_statement( @@ -148,7 +246,14 @@ fn setup_store(keypair: &sp_core::ed25519::Pair) -> (Store, tempfile::TempDir) { let mut path: std::path::PathBuf = temp_dir.path().into(); path.push("db"); let keystore = Arc::new(sc_keystore::LocalKeystore::in_memory()); - let store = Store::new(&path, Default::default(), client, keystore, None).unwrap(); + let store = Store::new::( + &path, + Default::default(), + client, + keystore, + None, + ) + .unwrap(); for i in 0..INITIAL_STATEMENTS { let topics = if i % 10 == 0 { vec![topic(0), topic(1)] } else { vec![] }; diff --git a/substrate/client/statement-store/src/lib.rs b/substrate/client/statement-store/src/lib.rs index 6b4945d4e2553..c696e3db25f87 100644 --- a/substrate/client/statement-store/src/lib.rs +++ b/substrate/client/statement-store/src/lib.rs @@ -54,6 +54,7 @@ pub use sp_statement_store::{Error, StatementStore, MAX_TOPICS}; use metrics::MetricsLink as PrometheusMetrics; use parking_lot::RwLock; use prometheus_endpoint::Registry as PrometheusRegistry; +use sc_client_api::{backend::StorageProvider, Backend, StorageKey}; use sc_keystore::LocalKeystore; use sp_api::ProvideRuntimeApi; use sp_blockchain::HeaderBackend; @@ -63,8 +64,8 @@ use sp_statement_store::{ runtime_api::{ InvalidStatement, StatementSource, StatementStoreExt, ValidStatement, ValidateStatement, }, - AccountId, BlockHash, Channel, DecryptionKey, Hash, InvalidReason, Proof, RejectionReason, - Result, Statement, SubmitResult, Topic, + AccountId, BlockHash, Channel, DecryptionKey, Hash, InvalidReason, RejectionReason, Result, + SignatureVerificationResult, Statement, SubmitResult, Topic, }; use std::{ collections::{BTreeMap, HashMap, HashSet}, @@ -170,16 +171,23 @@ struct Index { total_size: usize, } -struct ClientWrapper { +struct ClientWrapper { client: Arc, _block: std::marker::PhantomData, + _backend: std::marker::PhantomData, } -impl ClientWrapper +impl ClientWrapper where Block: BlockT, Block::Hash: From, - Client: ProvideRuntimeApi + HeaderBackend + Send + Sync + 'static, + BE: Backend + 'static, + Client: ProvideRuntimeApi + + HeaderBackend + + StorageProvider + + Send + + Sync + + 'static, Client::Api: ValidateStatement, { fn validate_statement( @@ -196,13 +204,29 @@ where api.validate_statement(block, source, statement) .map_err(|_| InvalidStatement::InternalError)? } + + // TODO: Read actual allowance from storage. + fn read_allowance(&self, account_id: &AccountId) -> Result { + let block_hash = self.client.info().finalized_hash; + let storage_key = StorageKey(sp_core::storage::well_known_keys::HEAP_PAGES.to_vec()); + self.client.storage(block_hash, &storage_key).map_err(|e| { + log::debug!( + target: LOG_TARGET, + "Error reading storage for account {:?}: {:?}", + HexDisplay::from(account_id), + e + ); + Error::Runtime + })?; + Ok(ValidStatement { max_count: 100_000, max_size: 1_000_000 }) + } } /// Statement store. pub struct Store { db: parity_db::Db, index: RwLock, - validate_fn: Box< + _validate_fn: Box< dyn Fn( Option, StatementSource, @@ -211,6 +235,7 @@ pub struct Store { + Send + Sync, >, + read_allowance_fn: Box Result + Send + Sync>, keystore: Arc, // Used for testing time_override: Option, @@ -496,7 +521,7 @@ impl Index { impl Store { /// Create a new shared store instance. There should only be one per process. /// `path` will be used to open a statement database or create a new one if it does not exist. - pub fn new_shared( + pub fn new_shared( path: &std::path::Path, options: Options, client: Arc, @@ -507,7 +532,13 @@ impl Store { where Block: BlockT, Block::Hash: From, - Client: ProvideRuntimeApi + HeaderBackend + Send + Sync + 'static, + BE: Backend + 'static, + Client: ProvideRuntimeApi + + HeaderBackend + + StorageProvider + + Send + + Sync + + 'static, Client::Api: ValidateStatement, { let store = Arc::new(Self::new(path, options, client, keystore, prometheus)?); @@ -532,7 +563,7 @@ impl Store { /// Create a new instance. /// `path` will be used to open a statement database or create a new one if it does not exist. #[doc(hidden)] - pub fn new( + pub fn new( path: &std::path::Path, options: Options, client: Arc, @@ -542,7 +573,13 @@ impl Store { where Block: BlockT, Block::Hash: From, - Client: ProvideRuntimeApi + HeaderBackend + Send + Sync + 'static, + BE: Backend + 'static, + Client: ProvideRuntimeApi + + HeaderBackend + + StorageProvider + + Send + + Sync + + 'static, Client::Api: ValidateStatement, { let mut path: std::path::PathBuf = path.into(); @@ -576,15 +613,25 @@ impl Store { }, } - let validator = ClientWrapper { client, _block: Default::default() }; + let validator = ClientWrapper { + client: client.clone(), + _block: Default::default(), + _backend: Default::default(), + }; let validate_fn = Box::new(move |block, source, statement| { validator.validate_statement(block, source, statement) }); + let storage_reader = + ClientWrapper { client, _block: Default::default(), _backend: Default::default() }; + let read_allowance_fn = + Box::new(move |account_id: &AccountId| storage_reader.read_allowance(account_id)); + let store = Store { db, index: RwLock::new(Index::new(options)), - validate_fn, + _validate_fn: validate_fn, + read_allowance_fn, keystore, time_override: None, metrics: PrometheusMetrics::new(prometheus), @@ -936,15 +983,9 @@ impl StatementStore for Store { }; // Validate. - let at_block = if let Some(Proof::OnChain { block_hash, .. }) = statement.proof() { - Some(*block_hash) - } else { - None - }; - let validation_result = (self.validate_fn)(at_block, source, statement.clone()); - let validation = match validation_result { - Ok(validation) => validation, - Err(InvalidStatement::BadProof) => { + match statement.verify_signature() { + SignatureVerificationResult::Valid(_) => {}, + SignatureVerificationResult::Invalid => { log::debug!( target: LOG_TARGET, "Statement validation failed: BadProof, {:?}", @@ -953,7 +994,7 @@ impl StatementStore for Store { self.metrics.report(|metrics| metrics.validations_invalid.inc()); return SubmitResult::Invalid(InvalidReason::BadProof); }, - Err(InvalidStatement::NoProof) => { + SignatureVerificationResult::NoSignature => { log::debug!( target: LOG_TARGET, "Statement validation failed: NoProof, {:?}", @@ -962,8 +1003,18 @@ impl StatementStore for Store { self.metrics.report(|metrics| metrics.validations_invalid.inc()); return SubmitResult::Invalid(InvalidReason::NoProof); }, - Err(InvalidStatement::InternalError) => - return SubmitResult::InternalError(Error::Runtime), + }; + + let validation = match (self.read_allowance_fn)(&account_id) { + Ok(allowance) => allowance, + Err(e) => { + log::debug!( + target: LOG_TARGET, + "Reading statement allowance for account {} failed", + HexDisplay::from(&account_id), + ); + return SubmitResult::InternalError(e) + }, }; let current_time = self.timestamp(); @@ -1076,6 +1127,8 @@ mod tests { _inner: TestClient, } + pub(crate) type TestBackend = sc_client_api::in_mem::Backend; + impl sp_api::ProvideRuntimeApi for TestClient { type Api = RuntimeApi; fn runtime_api(&self) -> sp_api::ApiRef<'_, Self::Api> { @@ -1083,6 +1136,102 @@ mod tests { } } + impl sc_client_api::StorageProvider for TestClient { + fn storage( + &self, + _hash: Hash, + _key: &sc_client_api::StorageKey, + ) -> sp_blockchain::Result> { + Ok(None) + } + + fn storage_hash( + &self, + _hash: Hash, + _key: &sc_client_api::StorageKey, + ) -> sp_blockchain::Result> { + unimplemented!() + } + + fn storage_keys( + &self, + _hash: Hash, + _prefix: Option<&sc_client_api::StorageKey>, + _start_key: Option<&sc_client_api::StorageKey>, + ) -> sp_blockchain::Result< + sc_client_api::backend::KeysIter< + >::State, + Block, + >, + > { + unimplemented!() + } + + fn storage_pairs( + &self, + _hash: Hash, + _prefix: Option<&sc_client_api::StorageKey>, + _start_key: Option<&sc_client_api::StorageKey>, + ) -> sp_blockchain::Result< + sc_client_api::backend::PairsIter< + >::State, + Block, + >, + > { + unimplemented!() + } + + fn child_storage( + &self, + _hash: Hash, + _child_info: &sc_client_api::ChildInfo, + _key: &sc_client_api::StorageKey, + ) -> sp_blockchain::Result> { + unimplemented!() + } + + fn child_storage_keys( + &self, + _hash: Hash, + _child_info: sc_client_api::ChildInfo, + _prefix: Option<&sc_client_api::StorageKey>, + _start_key: Option<&sc_client_api::StorageKey>, + ) -> sp_blockchain::Result< + sc_client_api::backend::KeysIter< + >::State, + Block, + >, + > { + unimplemented!() + } + + fn child_storage_hash( + &self, + _hash: Hash, + _child_info: &sc_client_api::ChildInfo, + _key: &sc_client_api::StorageKey, + ) -> sp_blockchain::Result> { + unimplemented!() + } + + fn closest_merkle_value( + &self, + _hash: Hash, + _key: &sc_client_api::StorageKey, + ) -> sp_blockchain::Result>> { + unimplemented!() + } + + fn child_closest_merkle_value( + &self, + _hash: Hash, + _child_info: &sc_client_api::ChildInfo, + _key: &sc_client_api::StorageKey, + ) -> sp_blockchain::Result>> { + unimplemented!() + } + } + sp_api::mock_impl_runtime_apis! { impl ValidateStatement for RuntimeApi { fn validate_statement( @@ -1152,7 +1301,14 @@ mod tests { let mut path: std::path::PathBuf = temp_dir.path().into(); path.push("db"); let keystore = std::sync::Arc::new(sc_keystore::LocalKeystore::in_memory()); - let store = Store::new(&path, Default::default(), client, keystore, None).unwrap(); + let store = Store::new::( + &path, + Default::default(), + client, + keystore, + None, + ) + .unwrap(); (store, temp_dir) // return order is important. Store must be dropped before TempDir } @@ -1246,7 +1402,14 @@ mod tests { let client = std::sync::Arc::new(TestClient); let mut path: std::path::PathBuf = temp.path().into(); path.push("db"); - let store = Store::new(&path, Default::default(), client, keystore, None).unwrap(); + let store = Store::new::( + &path, + Default::default(), + client, + keystore, + None, + ) + .unwrap(); assert_eq!(store.statements().unwrap().len(), 3); assert_eq!(store.broadcasts(&[]).unwrap().len(), 3); assert_eq!(store.statement(&statement1.hash()).unwrap(), Some(statement1)); @@ -1450,7 +1613,14 @@ mod tests { let client = std::sync::Arc::new(TestClient); let mut path: std::path::PathBuf = temp.path().into(); path.push("db"); - let store = Store::new(&path, Default::default(), client, keystore, None).unwrap(); + let store = Store::new::( + &path, + Default::default(), + client, + keystore, + None, + ) + .unwrap(); assert_eq!(store.statements().unwrap().len(), 0); assert_eq!(store.index.read().expired.len(), 0); } From af3d636c451fb0eb86a83a0fb106ea99b95f72f6 Mon Sep 17 00:00:00 2001 From: Alexandru Gheorghe Date: Thu, 8 Jan 2026 11:29:09 +0200 Subject: [PATCH 28/81] send existing statements Signed-off-by: Alexandru Gheorghe --- .../tests/zombie_ci/statement_store_bench.rs | 1 - substrate/client/rpc/Cargo.toml | 1 - substrate/client/rpc/src/statement/mod.rs | 25 ++++--- substrate/client/rpc/src/statement/tests.rs | 72 +++++++++---------- substrate/client/statement-store/src/lib.rs | 40 +++++++++-- .../statement-store/src/subscription.rs | 47 ++++++------ 6 files changed, 108 insertions(+), 78 deletions(-) diff --git a/cumulus/zombienet/zombienet-sdk/tests/zombie_ci/statement_store_bench.rs b/cumulus/zombienet/zombienet-sdk/tests/zombie_ci/statement_store_bench.rs index da875d204ce88..42fee16961da1 100644 --- a/cumulus/zombienet/zombienet-sdk/tests/zombie_ci/statement_store_bench.rs +++ b/cumulus/zombienet/zombienet-sdk/tests/zombie_ci/statement_store_bench.rs @@ -605,7 +605,6 @@ impl Participant { subscriptions.push((*idx, subscription)); } - // info!("Starting to receive {} session keys", subscriptions.len()); let mut futures: FuturesUnordered<_> = subscriptions .into_iter() .map(|(idx, mut subscription)| async move { diff --git a/substrate/client/rpc/Cargo.toml b/substrate/client/rpc/Cargo.toml index 02838f4b92f0d..f9d88a9449b3c 100644 --- a/substrate/client/rpc/Cargo.toml +++ b/substrate/client/rpc/Cargo.toml @@ -48,7 +48,6 @@ assert_matches = { workspace = true } pretty_assertions = { workspace = true } sc-network = { workspace = true, default-features = true } sc-transaction-pool = { workspace = true, default-features = true } -sc-statement-store = { workspace = true } sc-keystore = { workspace = true } sp-consensus = { workspace = true, default-features = true } sp-crypto-hashing = { workspace = true, default-features = true } diff --git a/substrate/client/rpc/src/statement/mod.rs b/substrate/client/rpc/src/statement/mod.rs index b137f469abe65..5326493b8be65 100644 --- a/substrate/client/rpc/src/statement/mod.rs +++ b/substrate/client/rpc/src/statement/mod.rs @@ -19,6 +19,7 @@ //! Substrate statement store API. use codec::Decode; +use futures::FutureExt; use jsonrpsee::{ core::{async_trait, RpcResult}, Extensions, PendingSubscriptionSink, @@ -115,15 +116,21 @@ impl StatementApiServer for StatementStore { }); // Send existing statements before returning, to make sure we did not miss any statements. - for statement in existing_statements { - // Channel size is chosen to be large enough to always fit existing statements. - if let Err(e) = subscription_sender.try_send(statement.into()) { - log::warn!( - target: LOG_TARGET, - "Failed to send existing statement in subscription: {:?}", e - ); - break; + self.executor.spawn( + "statement-store-rpc-send", + Some("rpc"), + async move { + for statement in existing_statements { + if let Err(e) = subscription_sender.send(statement.into()).await { + log::warn!( + target: LOG_TARGET, + "Failed to send existing statement in subscription: {:?}", e + ); + break; + } + } } - } + .boxed(), + ) } } diff --git a/substrate/client/rpc/src/statement/tests.rs b/substrate/client/rpc/src/statement/tests.rs index 401f9e788300e..da81b562410c8 100644 --- a/substrate/client/rpc/src/statement/tests.rs +++ b/substrate/client/rpc/src/statement/tests.rs @@ -2,12 +2,27 @@ use super::*; use crate::testing::test_executor; use codec::Encode; use futures::FutureExt; -use jsonrpsee::Subscription; +use jsonrpsee::{RpcModule, Subscription}; use sc_statement_store::Store; use sp_core::traits::SpawnNamed; use sp_statement_store::Statement; use std::sync::Arc; +async fn subscribe_to_topics( + api_rpc: &RpcModule, + topic_filters: Vec, +) -> Vec { + let mut subscriptions = Vec::with_capacity(topic_filters.len()); + for filter in topic_filters { + let subscription = api_rpc + .subscribe_unbounded("statement_subscribeStatement", (filter,)) + .await + .expect("Failed to subscribe"); + subscriptions.push(subscription); + } + subscriptions +} + fn generate_statements() -> Vec { let topic = [0u8; 32]; let topic1 = [1u8; 32]; @@ -56,26 +71,18 @@ async fn subscribe_works() { let submitted = generate_statements(); let first_topic: Bytes = submitted[0].topic(0).expect("Should have topic").to_vec().into(); - let topic_filter = TopicFilter::MatchAll(vec![first_topic.clone()]); + let match_all_filter = TopicFilter::MatchAll(vec![first_topic.clone()]); let submitted_clone = submitted.clone(); - let subscription = api_rpc - .subscribe("statement_subscribeStatement", (topic_filter.clone(),), 100000) - .await - .expect("Failed to subscribe"); - - let subscription_any = api_rpc - .subscribe_unbounded("statement_subscribeStatement", (TopicFilter::Any,)) - .await - .expect("Failed to subscribe"); - - let match_any_topic = TopicFilter::MatchAny(vec![ + let match_any_filter = TopicFilter::MatchAny(vec![ submitted[0].topic(1).expect("Should have topic").to_vec().into(), submitted[1].topic(1).expect("Should have topic").to_vec().into(), ]); - let subscription_match_any = api_rpc - .subscribe_unbounded("statement_subscribeStatement", (match_any_topic.clone(),)) - .await - .expect("Failed to subscribe"); + + let subscriptions = subscribe_to_topics( + &api_rpc, + vec![match_all_filter.clone(), TopicFilter::Any, match_any_filter.clone()], + ) + .await; executor.spawn( "test", @@ -92,29 +99,18 @@ async fn subscribe_works() { .boxed(), ); - check_submitted(submitted.clone(), subscription).await; - check_submitted(submitted.clone(), subscription_any).await; - check_submitted(submitted.clone(), subscription_match_any).await; - - // Check submitting after initial statements gets all statements through as well. - let subscription = api_rpc - .subscribe("statement_subscribeStatement", (topic_filter,), 100000) - .await - .expect("Failed to subscribe"); - - let subscription_any = api_rpc - .subscribe_unbounded("statement_subscribeStatement", (TopicFilter::Any,)) - .await - .expect("Failed to subscribe"); + for subscription in subscriptions.into_iter() { + check_submitted(submitted.clone(), subscription).await; + } - let subscription_match_any = api_rpc - .subscribe_unbounded("statement_subscribeStatement", (match_any_topic,)) - .await - .expect("Failed to subscribe"); + // Check subscribing after initial statements gets all statements through as well. + let subscriptions = + subscribe_to_topics(&api_rpc, vec![match_all_filter, TopicFilter::Any, match_any_filter]) + .await; - check_submitted(submitted.clone(), subscription).await; - check_submitted(submitted.clone(), subscription_any).await; - check_submitted(submitted.clone(), subscription_match_any).await; + for subscription in subscriptions.into_iter() { + check_submitted(submitted.clone(), subscription).await; + } let mut match_any_with_random = api_rpc .subscribe_unbounded( diff --git a/substrate/client/statement-store/src/lib.rs b/substrate/client/statement-store/src/lib.rs index 54d40d9dc6955..e5f0229257949 100644 --- a/substrate/client/statement-store/src/lib.rs +++ b/substrate/client/statement-store/src/lib.rs @@ -1065,9 +1065,7 @@ impl StatementStore for Store { } else { None }; - let validation_result = (self.validate_fn)(at_block, source, statement.clone()); - let validation = match validation_result { Ok(validation) => validation, Err(InvalidStatement::BadProof) => { @@ -1192,7 +1190,7 @@ impl StatementStoreSubscriptionApi for Store { &mut existing_statements, |statement| Some(statement.encode()), )?; - self.subscription_manager.subscribe(topic_filter, existing_statements.len()) + self.subscription_manager.subscribe(topic_filter) }; Ok((existing_statements, subscription_sender, subscription_stream)) } @@ -1206,8 +1204,8 @@ mod tests { use sp_core::{Decode, Encode, Pair}; use sp_statement_store::{ runtime_api::{InvalidStatement, ValidStatement, ValidateStatement}, - AccountId, Channel, DecryptionKey, Proof, SignatureVerificationResult, Statement, - StatementSource, StatementStore, SubmitResult, Topic, + AccountId, Channel, DecryptionKey, InvalidReason, Proof, SignatureVerificationResult, + Statement, StatementSource, StatementStore, SubmitResult, Topic, }; type Extrinsic = sp_runtime::OpaqueExtrinsic; @@ -1818,6 +1816,38 @@ mod tests { assert_eq!(retrieved, vec![plaintext_good]); } + #[test] + fn already_expired_statement_is_rejected() { + let (mut store, _temp) = test_store(); + + // Set current time to 1000 seconds + store.set_time(1000); + + // Create a statement that has already expired (expiration at 500 seconds, before current + // time) + let mut expired_statement = statement(1, 1, None, 100); + // set_expiry_from_parts: first arg is expiration timestamp in seconds, second is priority + expired_statement.set_expiry_from_parts(500, 1); + + // Submit should fail with AlreadyExpired + assert_eq!( + store.submit(expired_statement, StatementSource::Network), + SubmitResult::Invalid(InvalidReason::AlreadyExpired) + ); + + // Verify the statement was not added + assert_eq!(store.statements().unwrap().len(), 0); + + // Now create a statement that is not expired (expiration at 2000 seconds, after current + // time) + let mut valid_statement = statement(1, 1, None, 100); + valid_statement.set_expiry_from_parts(2000, 1); + + // Submit should succeed + assert_eq!(store.submit(valid_statement, StatementSource::Network), SubmitResult::New); + assert_eq!(store.statements().unwrap().len(), 1); + } + #[test] fn remove_by_covers_various_situations() { use sp_statement_store::{StatementSource, StatementStore, SubmitResult}; diff --git a/substrate/client/statement-store/src/subscription.rs b/substrate/client/statement-store/src/subscription.rs index 415562f69f4bc..144444ced5ed6 100644 --- a/substrate/client/statement-store/src/subscription.rs +++ b/substrate/client/statement-store/src/subscription.rs @@ -57,14 +57,18 @@ pub trait StatementStoreSubscriptionApi: Send + Sync { ) -> Result<(Vec>, async_channel::Sender, SubscriptionStatementsStream)>; } +/// Messages sent to matcher tasks. #[derive(Clone, Debug)] pub enum MatcherMessage { + /// A new statement has been submitted. NewStatement(Statement), + /// A new subscription has been created. Subscribe(SubscriptionInfo), + /// Unsubscribe the subscription with the given ID. Unsubscribe(SeqID), } -// Manages subscriptions to statement topics and notifies subscribers when new statements arrive. +// Handle to manage all subscriptions. pub struct SubscriptionsHandle { // Sequence generator for subscription IDs, atomic for thread safety. // Subscription creation is expensive enough that we don't worry about overflow here. @@ -125,18 +129,19 @@ impl SubscriptionsHandle { } } + // Generate the next unique subscription ID. fn next_id(&self) -> SeqID { let id = self.id_sequence.fetch_add(1, std::sync::atomic::Ordering::SeqCst); SeqID::from(id) } + /// Subscribe to statements matching the topic filter. pub(crate) fn subscribe( &self, topic_filter: CheckedTopicFilter, - num_existing_statements: usize, ) -> (async_channel::Sender, SubscriptionStatementsStream) { let next_id = self.next_id(); - let (tx, rx) = async_channel::bounded(std::cmp::max(128, num_existing_statements)); + let (tx, rx) = async_channel::bounded(128); let subscription_info = SubscriptionInfo { topic_filter: topic_filter.clone(), seq_id: next_id, tx }; @@ -626,12 +631,9 @@ mod tests { let streams = (0..5) .into_iter() .map(|_| { - subscriptions_handle.subscribe( - CheckedTopicFilter::MatchAll( - vec![topic1, topic2].iter().cloned().collect(), - ), - 20, - ) + subscriptions_handle.subscribe(CheckedTopicFilter::MatchAll( + vec![topic1, topic2].iter().cloned().collect(), + )) }) .collect::>(); @@ -659,10 +661,9 @@ mod tests { let topic1 = [8u8; 32]; let topic2 = [9u8; 32]; - let (tx, mut stream) = subscriptions_handle.subscribe( - CheckedTopicFilter::MatchAll(vec![topic1, topic2].iter().cloned().collect()), - 20, - ); + let (tx, mut stream) = subscriptions_handle.subscribe(CheckedTopicFilter::MatchAll( + vec![topic1, topic2].iter().cloned().collect(), + )); let mut statement = signed_statement(1); statement.set_topic(0, Topic::from(topic1)); @@ -941,10 +942,9 @@ mod tests { let topic1 = [8u8; 32]; let topic2 = [9u8; 32]; - let (_tx, mut stream) = subscriptions_handle.subscribe( - CheckedTopicFilter::MatchAny(vec![topic1, topic2].iter().cloned().collect()), - 20, - ); + let (_tx, mut stream) = subscriptions_handle.subscribe(CheckedTopicFilter::MatchAny( + vec![topic1, topic2].iter().cloned().collect(), + )); // Statement matching only topic1. let mut statement1 = signed_statement(1); @@ -972,7 +972,7 @@ mod tests { let subscriptions_handle = SubscriptionsHandle::new(Box::new(sp_core::testing::TaskExecutor::new()), 2); - let (_tx, mut stream) = subscriptions_handle.subscribe(CheckedTopicFilter::Any, 20); + let (_tx, mut stream) = subscriptions_handle.subscribe(CheckedTopicFilter::Any); // Send statements with various topics. let statement1 = signed_statement(1); @@ -1002,17 +1002,16 @@ mod tests { let topic2 = [9u8; 32]; // Subscriber 1: MatchAll on topic1 and topic2. - let (_tx1, mut stream1) = subscriptions_handle.subscribe( - CheckedTopicFilter::MatchAll(vec![topic1, topic2].iter().cloned().collect()), - 20, - ); + let (_tx1, mut stream1) = subscriptions_handle.subscribe(CheckedTopicFilter::MatchAll( + vec![topic1, topic2].iter().cloned().collect(), + )); // Subscriber 2: MatchAny on topic1. let (_tx2, mut stream2) = subscriptions_handle - .subscribe(CheckedTopicFilter::MatchAny(vec![topic1].iter().cloned().collect()), 20); + .subscribe(CheckedTopicFilter::MatchAny(vec![topic1].iter().cloned().collect())); // Subscriber 3: Any. - let (_tx3, mut stream3) = subscriptions_handle.subscribe(CheckedTopicFilter::Any, 20); + let (_tx3, mut stream3) = subscriptions_handle.subscribe(CheckedTopicFilter::Any); // Statement matching only topic1. let mut statement1 = signed_statement(1); From 1ddc597b34b42acbaa491aa8c3a2e3eba0e492aa Mon Sep 17 00:00:00 2001 From: Alexandru Gheorghe Date: Thu, 8 Jan 2026 12:30:15 +0200 Subject: [PATCH 29/81] added more tests Signed-off-by: Alexandru Gheorghe --- .../statement-store/src/subscription.rs | 65 +++++++++++++++++++ 1 file changed, 65 insertions(+) diff --git a/substrate/client/statement-store/src/subscription.rs b/substrate/client/statement-store/src/subscription.rs index 144444ced5ed6..6b30988ae6847 100644 --- a/substrate/client/statement-store/src/subscription.rs +++ b/substrate/client/statement-store/src/subscription.rs @@ -1049,4 +1049,69 @@ mod tests { let decoded3: Statement = Statement::decode(&mut &received3.0[..]).unwrap(); assert_eq!(decoded3, statement2); } + + #[test] + fn test_statement_without_topics_matches_only_any_filter() { + let mut subscriptions = SubscriptionsInfo::new(); + + let (tx_match_all, rx_match_all) = async_channel::bounded::(10); + let (tx_match_any, rx_match_any) = async_channel::bounded::(10); + let (tx_any, rx_any) = async_channel::bounded::(10); + + let topic1 = [8u8; 32]; + let topic2 = [9u8; 32]; + + // Subscribe with MatchAll filter. + let sub_match_all = SubscriptionInfo { + topic_filter: CheckedTopicFilter::MatchAll( + vec![topic1, topic2].iter().cloned().collect(), + ), + seq_id: SeqID::from(1), + tx: tx_match_all, + }; + subscriptions.subscribe(sub_match_all); + + // Subscribe with MatchAny filter. + let sub_match_any = SubscriptionInfo { + topic_filter: CheckedTopicFilter::MatchAny( + vec![topic1, topic2].iter().cloned().collect(), + ), + seq_id: SeqID::from(2), + tx: tx_match_any, + }; + subscriptions.subscribe(sub_match_any); + + // Subscribe with Any filter. + let sub_any = SubscriptionInfo { + topic_filter: CheckedTopicFilter::Any, + seq_id: SeqID::from(3), + tx: tx_any, + }; + subscriptions.subscribe(sub_any); + + // Create a statement without any topics set. + let statement = signed_statement(1); + assert!(statement.topics().is_empty(), "Statement should have no topics"); + + // Notify all matching filters. + subscriptions.notify_matching_filters(&statement); + + // Any should receive (matches all statements regardless of topics). + let received = rx_any.try_recv().expect("Any filter should receive statement"); + let decoded_statement: Statement = + Statement::decode(&mut &received.0[..]).expect("Should decode statement"); + assert_eq!(decoded_statement, statement); + + // MatchAll should NOT receive (statement has no topics, filter requires topic1 AND topic2). + assert!( + rx_match_all.try_recv().is_err(), + "MatchAll should not receive statement without topics" + ); + + // MatchAny should NOT receive (statement has no topics, filter requires topic1 OR topic2). + assert!( + rx_match_any.try_recv().is_err(), + "MatchAny should not receive statement without topics" + ); + } } From 4138d92afebfdc07282921bd26a0b3108264adbc Mon Sep 17 00:00:00 2001 From: Alexandru Gheorghe Date: Thu, 8 Jan 2026 15:52:11 +0200 Subject: [PATCH 30/81] bench configure connections properly Signed-off-by: Alexandru Gheorghe --- .../tests/zombie_ci/statement_store_bench.rs | 20 +++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/cumulus/zombienet/zombienet-sdk/tests/zombie_ci/statement_store_bench.rs b/cumulus/zombienet/zombienet-sdk/tests/zombie_ci/statement_store_bench.rs index 42fee16961da1..d1bf6182afbc9 100644 --- a/cumulus/zombienet/zombienet-sdk/tests/zombie_ci/statement_store_bench.rs +++ b/cumulus/zombienet/zombienet-sdk/tests/zombie_ci/statement_store_bench.rs @@ -24,7 +24,6 @@ const MESSAGE_COUNT: usize = 1; const MAX_RETRIES: u32 = 100; const RETRY_DELAY_MS: u64 = 500; const PROPAGATION_DELAY_MS: u64 = 2000; -const TIMEOUT_MS: u64 = 3000; const SUBSCRIBE_TIMEOUT_SECS: u64 = 200; /// Single-node benchmark. @@ -52,12 +51,11 @@ async fn statement_store_one_node_bench() -> Result<(), anyhow::Error> { let target_node = collator_names[0]; let node = network.get_node(target_node)?; - let rpc_client = node.rpc().await?; info!("Created single RPC client for target node: {}", target_node); let mut participants = Vec::with_capacity(PARTICIPANT_SIZE as usize); for i in 0..(PARTICIPANT_SIZE) as usize { - participants.push(Participant::new(i as u32, rpc_client.clone())); + participants.push(Participant::new(i as u32, node.rpc().await?)); } let handles: Vec<_> = participants @@ -103,15 +101,14 @@ async fn statement_store_many_nodes_bench() -> Result<(), anyhow::Error> { let mut rpc_clients = Vec::new(); for &name in &collator_names { let node = network.get_node(name)?; - let rpc_client = node.rpc().await?; - rpc_clients.push(rpc_client); + rpc_clients.push(node); } info!("Created RPC clients for {} collator nodes", rpc_clients.len()); let mut participants = Vec::with_capacity(PARTICIPANT_SIZE as usize); for i in 0..(PARTICIPANT_SIZE) as usize { let client_idx = i % collator_names.len(); - participants.push(Participant::new(i as u32, rpc_clients[client_idx].clone())); + participants.push(Participant::new(i as u32, rpc_clients[client_idx].rpc().await?)); } info!( "{} participants were distributed across {} nodes: {} participants per node", @@ -160,7 +157,6 @@ async fn statement_store_memory_stress_bench() -> Result<(), anyhow::Error> { let target_node = collator_names[0]; let node = network.get_node(target_node)?; - let rpc_client = node.rpc().await?; info!("Created single RPC client for target node: {}", target_node); let total_tasks = 64 * 1024; @@ -176,7 +172,7 @@ async fn statement_store_memory_stress_bench() -> Result<(), anyhow::Error> { total_tasks, statements_per_task, payload_size, submit_capacity, propogation_capacity); for _ in 0..total_tasks { - let rpc_client = rpc_client.clone(); + let rpc_client = node.rpc().await?; tokio::spawn(async move { let (keyring, _) = sr25519::Pair::generate(); let public = keyring.public().0; @@ -335,8 +331,12 @@ async fn spawn_network(collators: &[&str]) -> Result, a "--max-runtime-instances=32".into(), "-linfo,statement-store=info,statement-gossip=info".into(), "--enable-statement-store".into(), - "--rpc-max-connections=500000".into(), - "--rpc-max-subscriptions-per-connection=500000".into(), + format!( + "--rpc-max-connections={}", + PARTICIPANT_SIZE / collators.len() as u32 + 1000 + ) + .as_str() + .into(), ]) // Have to set outside of the loop below, so that `p` has the right type. .with_collator(|n| n.with_name(collators[0])); From fa73bd7ef6745c01878c74016dfb23d6e8d90255 Mon Sep 17 00:00:00 2001 From: Alexandru Gheorghe Date: Thu, 8 Jan 2026 17:04:03 +0200 Subject: [PATCH 31/81] add periodical expiration of statements Signed-off-by: Alexandru Gheorghe --- substrate/client/statement-store/src/lib.rs | 474 +++++++++++++++++++- 1 file changed, 471 insertions(+), 3 deletions(-) diff --git a/substrate/client/statement-store/src/lib.rs b/substrate/client/statement-store/src/lib.rs index e5f0229257949..36704957eba11 100644 --- a/substrate/client/statement-store/src/lib.rs +++ b/substrate/client/statement-store/src/lib.rs @@ -49,6 +49,7 @@ mod metrics; +use futures::FutureExt; pub use sp_statement_store::{Error, StatementStore, MAX_TOPICS}; use crate::subscription::{SubscriptionStatementsStream, SubscriptionsHandle}; @@ -72,6 +73,7 @@ use sp_statement_store::{ use std::{ collections::{BTreeMap, HashMap, HashSet}, sync::Arc, + time::Instant, }; pub use subscription::StatementStoreSubscriptionApi; @@ -95,11 +97,22 @@ pub const DEFAULT_MAX_TOTAL_SIZE: usize = 2 * 1024 * 1024 * 1024; // 2GiB pub const MAX_STATEMENT_SIZE: usize = sc_network_statement::config::MAX_STATEMENT_NOTIFICATION_SIZE as usize - 1; +/// Maximum number of statements to expire in a single iteration. +const MAX_EXPIRY_STATEMENTS_PER_ITERATION: usize = 1_000; +/// Maximum number of accounts to check for expiry in a single iteration. +const MAX_EXPIRY_ACCOUNTS_PER_ITERATION: usize = 10_000; +/// Maximum time in milliseconds to spend checking for expiry in a single iteration. +const MAX_EXPIRY_TIME_MS_PER_ITERATION: u128 = 100; + /// Number of subscription filter worker tasks. const NUM_FILTER_WORKERS: usize = 1; const MAINTENANCE_PERIOD: std::time::Duration = std::time::Duration::from_secs(30); +// Period between checking for expired statements. Different from maintenance period to avoid +// keeping the lock for too long for maintenance tasks. +const CHECK_EXPIRATION_PERIOD: std::time::Duration = std::time::Duration::from_secs(33); + mod col { pub const META: u8 = 0; pub const STATEMENTS: u8 = 1; @@ -176,6 +189,7 @@ struct Index { entries: HashMap, expired: HashMap, // Value is expiration timestamp. accounts: HashMap, + accounts_to_check_for_expiry_stmts: Vec, options: Options, total_size: usize, } @@ -596,10 +610,13 @@ impl Store { "statement-store-maintenance", Some("statement-store"), Box::pin(async move { - let mut interval = tokio::time::interval(MAINTENANCE_PERIOD); + let mut maintenance_interval = tokio::time::interval(MAINTENANCE_PERIOD); + let mut check_expiration_interval = tokio::time::interval(CHECK_EXPIRATION_PERIOD); loop { - interval.tick().await; - worker_store.maintain(); + futures::select! { + _ = maintenance_interval.tick().fuse() => {worker_store.maintain();} + _ = check_expiration_interval.tick().fuse() => {worker_store.check_expiration();} + } } }), ); @@ -778,6 +795,78 @@ impl Store { Ok(result) } + // Checks for expired statements and marks them as expired in the index. + // + // This function performs incremental expiration checking to avoid blocking the store + // for too long. It processes accounts in batches and stops when any of these limits + // are reached: + // - `MAX_EXPIRY_STATEMENTS_PER_ITERATION` statements found to expire + // - `MAX_EXPIRY_ACCOUNTS_PER_ITERATION` accounts checked + // - `MAX_EXPIRY_TIME_MS_PER_ITERATION` milliseconds elapsed + // + // The function maintains a list of accounts to check (`accounts_to_check_for_expiry_stmts`). + // When this list is empty, it repopulates it with all current accounts and returns early, + // deferring the actual expiration check to the next call. This ensures the expiration + // process eventually covers all accounts across multiple invocations. + // + // Statements are considered expired when their priority (which encodes the expiration + // timestamp in the upper 32 bits) is less than the current timestamp. + fn check_expiration(&self) { + let current_time = self.timestamp(); + + let (needs_expiry, num_accounts_checked) = { + let index = self.index.read(); + if index.accounts_to_check_for_expiry_stmts.is_empty() { + let existing_accounts = index.accounts.keys().cloned().collect::>(); + drop(index); + let mut index = self.index.write(); + index.accounts_to_check_for_expiry_stmts = existing_accounts; + return + } + + let mut needs_expiry = Vec::new(); + let mut num_accounts_checked = 0; + let start = Instant::now(); + + for accounts in index.accounts_to_check_for_expiry_stmts.iter().rev() { + num_accounts_checked += 1; + if let Some(account_rec) = index.accounts.get(accounts) { + needs_expiry.extend( + account_rec + .by_priority + .range( + PriorityKey { hash: Hash::default(), priority: Priority(0) }.. + PriorityKey { + hash: Hash::default(), + priority: Priority(current_time << 32), + }, + ) + .map(|key| key.0.hash), + ); + } + + if needs_expiry.len() >= MAX_EXPIRY_STATEMENTS_PER_ITERATION || + num_accounts_checked >= MAX_EXPIRY_ACCOUNTS_PER_ITERATION || + start.elapsed().as_millis() >= MAX_EXPIRY_TIME_MS_PER_ITERATION + { + break + } + } + + (needs_expiry, num_accounts_checked) + }; + + let mut index = self.index.write(); + for hash in needs_expiry { + index.make_expired(&hash, current_time); + } + let new_len = index + .accounts_to_check_for_expiry_stmts + .len() + .saturating_sub(num_accounts_checked); + index.accounts_to_check_for_expiry_stmts.truncate(new_len); + } + /// Perform periodic store maintenance pub fn maintain(&self) { log::trace!(target: LOG_TARGET, "Started store maintenance"); @@ -1958,4 +2047,383 @@ mod tests { let s_new = statement(4, 40, None, 10); assert_eq!(store.submit(s_new, StatementSource::Network), SubmitResult::New); } + + #[test] + fn check_expiration_repopulates_account_list_when_empty() { + let (mut store, _temp) = test_store(); + store.set_time(1000); + + // Create statements for multiple accounts + // Note: The statement() helper uses set_expiry_from_parts(u32::MAX, priority) + // which creates a very large expiry value that won't trigger expiration + let s1 = statement(1, 1, None, 100); + let s2 = statement(2, 1, None, 100); + let s3 = statement(3, 1, None, 100); + + for s in [&s1, &s2, &s3] { + store.submit(s.clone(), StatementSource::Network); + } + + // Initially, accounts_to_check_for_expiry_stmts is empty + assert!(store.index.read().accounts_to_check_for_expiry_stmts.is_empty()); + + // First call to check_expiration should populate the list + store.check_expiration(); + + // Now accounts_to_check_for_expiry_stmts should contain all 3 accounts + let accounts = store.index.read().accounts_to_check_for_expiry_stmts.clone(); + assert_eq!(accounts.len(), 3, "Should have 3 accounts to check"); + assert!(accounts.contains(&account(1))); + assert!(accounts.contains(&account(2))); + assert!(accounts.contains(&account(3))); + + // No statements should have been expired since they're all valid + assert_eq!(store.index.read().expired.len(), 0); + assert_eq!(store.index.read().entries.len(), 3); + } + + #[test] + fn check_expiration_expires_statements_past_current_time() { + let (mut store, _temp) = test_store(); + + // The check_expiration function compares Priority(current_time << 32) against + // Priority(expiry) where expiry is the full 64-bit value with timestamp in high 32 bits. + // Statements with expiration timestamp < current_time will be expired. + + store.set_time(100); + + // Create a statement that will expire at timestamp 500 + let mut expired_stmt = statement(1, 1, None, 100); + expired_stmt.set_expiry_from_parts(500, 1); + let expired_hash = expired_stmt.hash(); + store.submit(expired_stmt, StatementSource::Network); + + // Create a statement that won't expire (far future expiry) + let valid_stmt = statement(2, 1, None, 100); // Uses u32::MAX as timestamp + let valid_hash = valid_stmt.hash(); + store.submit(valid_stmt, StatementSource::Network); + + // Verify both statements are in the store + assert_eq!(store.index.read().entries.len(), 2); + + // First check_expiration populates the account list + store.check_expiration(); + assert!(!store.index.read().accounts_to_check_for_expiry_stmts.is_empty()); + + // Advance time past the expiry of the first statement + store.set_time(1000); + + // Second check_expiration should find and expire the statement + store.check_expiration(); + + // Check the expired statement is now in the expired list + let index = store.index.read(); + assert!(index.expired.contains_key(&expired_hash), "Expired statement should be marked"); + assert!( + !index.entries.contains_key(&expired_hash), + "Expired statement should be removed from entries" + ); + + // The valid statement should still be in entries + assert!( + index.entries.contains_key(&valid_hash), + "Valid statement should still be in entries" + ); + assert!(!index.expired.contains_key(&valid_hash), "Valid statement should not be expired"); + } + + #[test] + fn check_expiration_removes_checked_accounts_from_list_when_expiring() { + let (mut store, _temp) = test_store(); + store.set_time(100); + + // Create statements with expiry at timestamp 200 + let mut stmt1 = statement(1, 1, None, 100); + stmt1.set_expiry_from_parts(200, 1); + store.submit(stmt1, StatementSource::Network); + + let mut stmt2 = statement(2, 1, None, 100); + stmt2.set_expiry_from_parts(200, 1); + store.submit(stmt2, StatementSource::Network); + + let mut stmt3 = statement(3, 1, None, 100); + stmt3.set_expiry_from_parts(200, 1); + store.submit(stmt3, StatementSource::Network); + + // First call populates the list + store.check_expiration(); + assert_eq!( + store.index.read().accounts_to_check_for_expiry_stmts.len(), + 3, + "Should have 3 accounts to check" + ); + + // Advance time past expiry + store.set_time(300); + + // Second call should check accounts, expire statements, and remove checked accounts + store.check_expiration(); + + // The list should now be empty (all accounts checked and removed) + assert!( + store.index.read().accounts_to_check_for_expiry_stmts.is_empty(), + "All accounts should have been checked and removed after expiration" + ); + + // All statements should have been expired + assert_eq!(store.index.read().expired.len(), 3); + assert_eq!(store.index.read().entries.len(), 0); + } + + #[test] + fn check_expiration_truncates_list_even_when_nothing_expires() { + let (mut store, _temp) = test_store(); + store.set_time(1000); + + // Create statements for multiple accounts with far future expiry (using statement helper) + // The statement() helper uses set_expiry_from_parts(u32::MAX, priority) which creates + // a very large expiry value that won't trigger expiration + for acc_id in 1..=5u64 { + let stmt = statement(acc_id, 1, None, 100); + store.submit(stmt, StatementSource::Network); + } + + // First call populates the list + store.check_expiration(); + assert_eq!(store.index.read().accounts_to_check_for_expiry_stmts.len(), 5); + + // Second call checks accounts and truncates the list (even though nothing expires) + store.check_expiration(); + + // The list should now be empty - accounts are removed after being checked + assert!( + store.index.read().accounts_to_check_for_expiry_stmts.is_empty(), + "List should be empty after all accounts have been checked" + ); + + // No statements should have been expired + assert_eq!(store.index.read().expired.len(), 0); + assert_eq!(store.index.read().entries.len(), 5); + } + + #[test] + fn check_expiration_handles_multiple_statements_per_account() { + let (mut store, _temp) = test_store(); + store.set_time(100); + + // Create multiple statements for the same account with different expiry timestamps + // Account 42 has limit of 42 statements + let mut stmt1 = statement(42, 1, Some(1), 100); + stmt1.set_expiry_from_parts(200, 1); // Expires at timestamp 200 + let hash1 = stmt1.hash(); + store.submit(stmt1, StatementSource::Network); + + let mut stmt2 = statement(42, 2, Some(2), 100); + stmt2.set_expiry_from_parts(300, 2); // Expires at timestamp 300 + let hash2 = stmt2.hash(); + store.submit(stmt2, StatementSource::Network); + + let mut stmt3 = statement(42, 3, Some(3), 100); + stmt3.set_expiry_from_parts(500, 3); // Expires at timestamp 500 + let hash3 = stmt3.hash(); + store.submit(stmt3, StatementSource::Network); + + // Verify all statements are in the store + assert_eq!(store.index.read().entries.len(), 3); + + // First check_expiration populates the account list + store.check_expiration(); + + // Advance time to 250 (stmt1 should expire since 250 > 200) + store.set_time(250); + store.check_expiration(); + + { + let index = store.index.read(); + assert!(index.expired.contains_key(&hash1), "stmt1 should be expired"); + assert!(!index.expired.contains_key(&hash2), "stmt2 should not be expired yet"); + assert!(!index.expired.contains_key(&hash3), "stmt3 should not be expired yet"); + assert_eq!(index.entries.len(), 2); + } + + // Repopulate the account list for next check + store.check_expiration(); + + // Advance time to 400 (stmt2 should also expire since 400 > 300) + store.set_time(400); + store.check_expiration(); + + { + let index = store.index.read(); + assert!(index.expired.contains_key(&hash1)); + assert!(index.expired.contains_key(&hash2), "stmt2 should be expired"); + assert!(!index.expired.contains_key(&hash3), "stmt3 should not be expired yet"); + assert_eq!(index.entries.len(), 1); + } + + // Repopulate and check again at time 600 (stmt3 should expire since 600 > 500) + store.check_expiration(); + store.set_time(600); + store.check_expiration(); + + { + let index = store.index.read(); + assert!(index.expired.contains_key(&hash1)); + assert!(index.expired.contains_key(&hash2)); + assert!(index.expired.contains_key(&hash3), "stmt3 should be expired"); + assert_eq!(index.entries.len(), 0); + } + } + + #[test] + fn check_expiration_does_nothing_when_no_expired_statements() { + let (mut store, _temp) = test_store(); + store.set_time(1000); + + // Create statement with expiry far in the future + // The statement() helper uses set_expiry_from_parts(u32::MAX, priority) + let stmt = statement(1, 1, None, 100); + let hash = stmt.hash(); + store.submit(stmt, StatementSource::Network); + + // Populate the account list + store.check_expiration(); + + // Check expiration - nothing should happen + store.check_expiration(); + + // Statement should still be there + let index = store.index.read(); + assert!(index.entries.contains_key(&hash)); + assert!(!index.expired.contains_key(&hash)); + assert_eq!(index.entries.len(), 1); + assert_eq!(index.expired.len(), 0); + } + + #[test] + fn check_expiration_correctly_updates_account_data() { + let (mut store, _temp) = test_store(); + store.set_time(100); + + // Create a statement with expiry at timestamp 200 + let mut stmt = statement(1, 1, Some(1), 100); + stmt.set_expiry_from_parts(200, 1); + let hash = stmt.hash(); + store.submit(stmt, StatementSource::Network); + + // Verify account exists before expiration + { + let index = store.index.read(); + assert!(index.accounts.contains_key(&account(1))); + assert_eq!(index.total_size, 100); + } + + // Populate and then expire + store.check_expiration(); + store.set_time(300); + store.check_expiration(); + + // Verify account is removed after its only statement expires + { + let index = store.index.read(); + assert!( + !index.accounts.contains_key(&account(1)), + "Account should be removed when all its statements expire" + ); + assert_eq!(index.total_size, 0, "Total size should be zero"); + assert!(index.expired.contains_key(&hash)); + } + } + + #[test] + fn check_expiration_clears_topic_and_key_indexes() { + let (mut store, _temp) = test_store(); + store.set_time(100); + + // Create a statement with topic and decryption key + let mut stmt = statement(1, 1, Some(1), 100); + stmt.set_expiry_from_parts(200, 1); + stmt.set_topic(0, topic(42)); + stmt.set_decryption_key(dec_key(7)); + let hash = stmt.hash(); + store.submit(stmt, StatementSource::Network); + + // Verify indexes are populated + { + let index = store.index.read(); + assert!(index.by_topic.get(&topic(42)).map_or(false, |s| s.contains(&hash))); + assert!(index.by_dec_key.get(&Some(dec_key(7))).map_or(false, |s| s.contains(&hash))); + } + + // Populate and then expire + store.check_expiration(); + store.set_time(300); + store.check_expiration(); + + // Verify indexes are cleared + { + let index = store.index.read(); + // Topic set should be empty or removed + assert!( + index.by_topic.get(&topic(42)).map_or(true, |s| s.is_empty()), + "Topic index should be cleared" + ); + // Key set should be empty or removed + assert!( + index.by_dec_key.get(&Some(dec_key(7))).map_or(true, |s| s.is_empty()), + "Decryption key index should be cleared" + ); + assert!(index.expired.contains_key(&hash)); + } + } + + #[test] + fn check_expiration_handles_empty_store() { + let (mut store, _temp) = test_store(); + store.set_time(1000); + + // With no statements, check_expiration should not panic + store.check_expiration(); + + // Second call should also work (empty repopulation) + store.check_expiration(); + + assert!(store.index.read().accounts_to_check_for_expiry_stmts.is_empty()); + assert_eq!(store.index.read().entries.len(), 0); + assert_eq!(store.index.read().expired.len(), 0); + } + + #[test] + fn check_expiration_expires_properly_formatted_statements() { + // With the fix (Priority(current_time << 32)), check_expiration properly + // compares timestamps and can expire statements submitted through normal flow. + + let (mut store, _temp) = test_store(); + store.set_time(1000); + + // Create a statement with expiration timestamp just 1 second in the future + let mut stmt = statement(1, 1, None, 100); + stmt.set_expiry_from_parts(1001, 1); // Expires at timestamp 1001 + let hash = stmt.hash(); + store.submit(stmt, StatementSource::Network); + + assert_eq!(store.index.read().entries.len(), 1); + + // Populate the accounts list + store.check_expiration(); + + // Advance time past the expiration timestamp + store.set_time(2000); + store.check_expiration(); + + // Statement SHOULD be expired because check_expiration now compares + // Priority(2000 << 32) against Priority(1001 << 32 | 1), and + // (2000 << 32) > (1001 << 32 | 1) + let index = store.index.read(); + assert!( + !index.entries.contains_key(&hash), + "Statement should be removed from entries after expiration" + ); + assert!(index.expired.contains_key(&hash), "Statement should be in expired list"); + } } From c157a2633549b54f23500ca53d6aacb36ee14f94 Mon Sep 17 00:00:00 2001 From: Alexandru Gheorghe Date: Fri, 9 Jan 2026 15:39:29 +0200 Subject: [PATCH 32/81] make clippy happy Signed-off-by: Alexandru Gheorghe --- substrate/client/statement-store/src/lib.rs | 2 +- substrate/primitives/statement-store/src/lib.rs | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/substrate/client/statement-store/src/lib.rs b/substrate/client/statement-store/src/lib.rs index 36704957eba11..98fd381158400 100644 --- a/substrate/client/statement-store/src/lib.rs +++ b/substrate/client/statement-store/src/lib.rs @@ -328,7 +328,7 @@ impl Index { for t in match_any_topics { let set = self.by_topic.get(t); - for item in set.iter().map(|set| set.iter()).flatten() { + for item in set.iter().flat_map(|set| set.iter()) { if key_set.map_or(false, |s| s.contains(item)) { log::trace!( target: LOG_TARGET, diff --git a/substrate/primitives/statement-store/src/lib.rs b/substrate/primitives/statement-store/src/lib.rs index ba541b22cccde..e07441afc541f 100644 --- a/substrate/primitives/statement-store/src/lib.rs +++ b/substrate/primitives/statement-store/src/lib.rs @@ -764,6 +764,7 @@ mod test { assert!(!filter_any_fail.matches(&statement)); } + #[test] fn statement_type_info_matches_encoding() { // Statement has custom Encode/Decode that encodes as Vec. // Verify that TypeInfo reflects this by containing a reference to Vec. From 55b7c2805a34b3b7f0f18f723892786ece64c7e9 Mon Sep 17 00:00:00 2001 From: Alexandru Gheorghe Date: Fri, 9 Jan 2026 17:12:29 +0200 Subject: [PATCH 33/81] fix build Signed-off-by: Alexandru Gheorghe --- Cargo.lock | 1 - substrate/bin/node/cli/src/service.rs | 5 ++++- substrate/bin/node/rpc/Cargo.toml | 1 - substrate/bin/node/rpc/src/lib.rs | 20 ++++++++++++++++---- substrate/client/rpc/Cargo.toml | 6 +++--- substrate/client/statement-store/Cargo.toml | 4 ++-- 6 files changed, 25 insertions(+), 12 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 4b9d449d20cb7..bc3b073ea2d15 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -10759,7 +10759,6 @@ dependencies = [ "sp-consensus-beefy", "sp-keystore", "sp-runtime", - "sp-statement-store", "substrate-frame-rpc-system", "substrate-state-trie-migration-rpc", ] diff --git a/substrate/bin/node/cli/src/service.rs b/substrate/bin/node/cli/src/service.rs index eeea8455fb5c9..a08a5b09397af 100644 --- a/substrate/bin/node/cli/src/service.rs +++ b/substrate/bin/node/cli/src/service.rs @@ -356,9 +356,12 @@ pub fn new_partial( beefy_best_block_stream: beefy_rpc_links .from_voter_best_beefy_stream .clone(), + subscription_executor: subscription_executor.clone(), + }, + statement_store: node_rpc::StatementStoreDeps { + statement_store: rpc_statement_store.clone(), subscription_executor, }, - statement_store: rpc_statement_store.clone(), backend: rpc_backend.clone(), mixnet_api: mixnet_api.as_ref().cloned(), }; diff --git a/substrate/bin/node/rpc/Cargo.toml b/substrate/bin/node/rpc/Cargo.toml index c8b20287650bd..eaac8aad82e36 100644 --- a/substrate/bin/node/rpc/Cargo.toml +++ b/substrate/bin/node/rpc/Cargo.toml @@ -41,6 +41,5 @@ sp-consensus-babe = { workspace = true, default-features = true } sp-consensus-beefy = { workspace = true, default-features = true } sp-keystore = { workspace = true, default-features = true } sp-runtime = { workspace = true, default-features = true } -sp-statement-store = { workspace = true, default-features = true } substrate-frame-rpc-system = { workspace = true, default-features = true } substrate-state-trie-migration-rpc = { workspace = true, default-features = true } diff --git a/substrate/bin/node/rpc/src/lib.rs b/substrate/bin/node/rpc/src/lib.rs index 988502bb2bfdc..225a000626bf3 100644 --- a/substrate/bin/node/rpc/src/lib.rs +++ b/substrate/bin/node/rpc/src/lib.rs @@ -86,6 +86,14 @@ pub struct BeefyDeps { pub subscription_executor: SubscriptionTaskExecutor, } +/// Extra dependencies for statement store +pub struct StatementStoreDeps { + /// Shared statement store reference. + pub statement_store: Arc, + /// Executor to drive the subscription manager in the statement store RPC handler. + pub subscription_executor: SubscriptionTaskExecutor, +} + /// Full client dependencies. pub struct FullDeps { /// The client instance to use. @@ -102,8 +110,8 @@ pub struct FullDeps { pub grandpa: GrandpaDeps, /// BEEFY specific dependencies. pub beefy: BeefyDeps, - /// Shared statement store reference. - pub statement_store: Arc, + /// Statement store specific dependencies. + pub statement_store: StatementStoreDeps, /// The backend used by the node. pub backend: Arc, /// Mixnet API. @@ -206,8 +214,12 @@ where io.merge(StateMigration::new(client.clone(), backend).into_rpc())?; io.merge(Dev::new(client).into_rpc())?; - let statement_store = sc_rpc::statement::StatementStore::new(statement_store).into_rpc(); - io.merge(statement_store)?; + let statement_store_rpc = sc_rpc::statement::StatementStore::new( + statement_store.statement_store, + statement_store.subscription_executor, + ) + .into_rpc(); + io.merge(statement_store_rpc)?; if let Some(mixnet_api) = mixnet_api { let mixnet = sc_rpc::mixnet::Mixnet::new(mixnet_api).into_rpc(); diff --git a/substrate/client/rpc/Cargo.toml b/substrate/client/rpc/Cargo.toml index f9d88a9449b3c..520bd4497f588 100644 --- a/substrate/client/rpc/Cargo.toml +++ b/substrate/client/rpc/Cargo.toml @@ -45,16 +45,16 @@ tokio = { workspace = true, default-features = true } [dev-dependencies] assert_matches = { workspace = true } +async-channel = { workspace = true } +futures-timer = { workspace = true } pretty_assertions = { workspace = true } +sc-keystore = { workspace = true } sc-network = { workspace = true, default-features = true } sc-transaction-pool = { workspace = true, default-features = true } -sc-keystore = { workspace = true } sp-consensus = { workspace = true, default-features = true } sp-crypto-hashing = { workspace = true, default-features = true } substrate-test-runtime-client = { workspace = true } tempfile = { workspace = true } -async-channel = { workspace = true } -futures-timer = { workspace = true } [features] test-helpers = [] diff --git a/substrate/client/statement-store/Cargo.toml b/substrate/client/statement-store/Cargo.toml index 7a1e6bff003cf..385d4b14be825 100644 --- a/substrate/client/statement-store/Cargo.toml +++ b/substrate/client/statement-store/Cargo.toml @@ -17,16 +17,16 @@ targets = ["x86_64-unknown-linux-gnu"] [dependencies] async-channel = { workspace = true } -itertools = { workspace = true } futures = { workspace = true } +itertools = { workspace = true } log = { workspace = true, default-features = true } -sc-utils = { workspace = true } parity-db = { workspace = true } parking_lot = { workspace = true, default-features = true } prometheus-endpoint = { workspace = true, default-features = true } sc-client-api = { workspace = true, default-features = true } sc-keystore = { workspace = true, default-features = true } sc-network-statement = { workspace = true, default-features = true } +sc-utils = { workspace = true } sp-api = { workspace = true, default-features = true } sp-blockchain = { workspace = true, default-features = true } sp-core = { workspace = true, default-features = true } From a7e65cd243fd8123cd75246bf0a690effbefda36 Mon Sep 17 00:00:00 2001 From: Alexandru Gheorghe Date: Mon, 12 Jan 2026 16:11:41 +0200 Subject: [PATCH 34/81] make clippy happy Signed-off-by: Alexandru Gheorghe --- .../tests/zombie_ci/statement_store.rs | 2 +- .../tests/zombie_ci/statement_store_bench.rs | 29 +++---------------- substrate/bin/node/cli/src/service.rs | 2 +- .../statement/benches/statement_network.rs | 10 ++++++- .../benches/statement_store.rs | 10 ++++++- substrate/test-utils/runtime/src/lib.rs | 4 --- 6 files changed, 24 insertions(+), 33 deletions(-) diff --git a/cumulus/zombienet/zombienet-sdk/tests/zombie_ci/statement_store.rs b/cumulus/zombienet/zombienet-sdk/tests/zombie_ci/statement_store.rs index 69fc1721e473a..e107ece9c262d 100644 --- a/cumulus/zombienet/zombienet-sdk/tests/zombie_ci/statement_store.rs +++ b/cumulus/zombienet/zombienet-sdk/tests/zombie_ci/statement_store.rs @@ -4,7 +4,7 @@ // Test that people-westend enables the statement store in the node and that statements are // propagated to peers. -use std::{time::Duration, u32}; +use std::time::Duration; use anyhow::anyhow; use sp_core::{Bytes, Encode}; diff --git a/cumulus/zombienet/zombienet-sdk/tests/zombie_ci/statement_store_bench.rs b/cumulus/zombienet/zombienet-sdk/tests/zombie_ci/statement_store_bench.rs index f424a67fa02e2..512385eb057da 100644 --- a/cumulus/zombienet/zombienet-sdk/tests/zombie_ci/statement_store_bench.rs +++ b/cumulus/zombienet/zombienet-sdk/tests/zombie_ci/statement_store_bench.rs @@ -21,9 +21,7 @@ const GROUP_SIZE: u32 = 6; const PARTICIPANT_SIZE: u32 = GROUP_SIZE * 8333; // Target ~50,000 total const MESSAGE_SIZE: usize = 512; const MESSAGE_COUNT: usize = 1; -const MAX_RETRIES: u32 = 100; const RETRY_DELAY_MS: u64 = 500; -const PROPAGATION_DELAY_MS: u64 = 2000; const SUBSCRIBE_TIMEOUT_SECS: u64 = 200; /// Single-node benchmark. @@ -486,25 +484,6 @@ impl Participant { } } - async fn wait_for_retry(&mut self) -> Result<(), anyhow::Error> { - if self.retry_count >= MAX_RETRIES { - return Err(anyhow!("No more retry attempts for participant {}", self.idx)) - } - - self.retry_count += 1; - if self.retry_count % 10 == 0 { - debug!(target: &self.log_target(), "Retry attempt {}", self.retry_count); - } - tokio::time::sleep(tokio::time::Duration::from_millis(RETRY_DELAY_MS)).await; - - Ok(()) - } - - async fn wait_for_propagation(&mut self) { - trace!(target: &self.log_target(), "Waiting {}ms for propagation", PROPAGATION_DELAY_MS); - tokio::time::sleep(tokio::time::Duration::from_millis(PROPAGATION_DELAY_MS)).await; - } - async fn statement_submit(&mut self, statement: Statement) -> Result<(), anyhow::Error> { let statement_bytes: Bytes = statement.encode().into(); let _: SubmitResult = self @@ -584,14 +563,14 @@ impl Participant { } async fn receive_session_keys(&mut self) -> Result<(), anyhow::Error> { - let mut pending = self.group_members.clone(); + let pending = self.group_members.clone(); let mut subscriptions = Vec::new(); trace!(target: &self.log_target(), "Pending session keys to receive: {:?}", pending.len()); for idx in &pending { - let mut subscription = self + let subscription = self .rpc_client .subscribe::( "statement_subscribeStatement", @@ -657,14 +636,14 @@ impl Participant { } async fn receive_messages(&mut self, round: usize) -> Result<(), anyhow::Error> { - let mut pending: Vec<(u32, sr25519::Public)> = + let pending: Vec<(u32, sr25519::Public)> = self.session_keys.iter().map(|(&idx, &key)| (idx, key)).collect(); let own_session_key = self.session_key.public(); let mut subscriptions = Vec::new(); for &(sender_idx, sender_session_key) in &pending { - let mut subscription = self + let subscription = self .rpc_client .subscribe::( "statement_subscribeStatement", diff --git a/substrate/bin/node/cli/src/service.rs b/substrate/bin/node/cli/src/service.rs index a08a5b09397af..8269676d8043b 100644 --- a/substrate/bin/node/cli/src/service.rs +++ b/substrate/bin/node/cli/src/service.rs @@ -304,7 +304,7 @@ pub fn new_partial( client.clone(), keystore_container.local_keystore(), config.prometheus_registry(), - &task_manager.spawn_handle(), + Box::new(task_manager.spawn_handle()), ) .map_err(|e| ServiceError::Other(format!("Statement store error: {:?}", e)))?; diff --git a/substrate/client/network/statement/benches/statement_network.rs b/substrate/client/network/statement/benches/statement_network.rs index ae4722f538a14..0670453f12bc3 100644 --- a/substrate/client/network/statement/benches/statement_network.rs +++ b/substrate/client/network/statement/benches/statement_network.rs @@ -198,7 +198,15 @@ fn build_handler( ); let client = Arc::new(client); let keystore = Arc::new(sc_keystore::LocalKeystore::in_memory()); - let statement_store = Store::new(&path, Default::default(), client, keystore, None).unwrap(); + let statement_store = Store::new( + &path, + Default::default(), + client, + keystore, + None, + Box::new(sp_core::testing::TaskExecutor::new()), + ) + .unwrap(); let statement_store = Arc::new(statement_store); let (queue_sender, queue_receiver) = async_channel::bounded::<( diff --git a/substrate/client/statement-store/benches/statement_store.rs b/substrate/client/statement-store/benches/statement_store.rs index c369ca3e6d046..1fa803117305d 100644 --- a/substrate/client/statement-store/benches/statement_store.rs +++ b/substrate/client/statement-store/benches/statement_store.rs @@ -148,7 +148,15 @@ fn setup_store(keypair: &sp_core::ed25519::Pair) -> (Store, tempfile::TempDir) { let mut path: std::path::PathBuf = temp_dir.path().into(); path.push("db"); let keystore = Arc::new(sc_keystore::LocalKeystore::in_memory()); - let store = Store::new(&path, Default::default(), client, keystore, None).unwrap(); + let store = Store::new( + &path, + Default::default(), + client, + keystore, + None, + Box::new(sp_core::testing::TaskExecutor::new()), + ) + .unwrap(); for i in 0..INITIAL_STATEMENTS { let topics = if i % 10 == 0 { vec![topic(0), topic(1)] } else { vec![] }; diff --git a/substrate/test-utils/runtime/src/lib.rs b/substrate/test-utils/runtime/src/lib.rs index 7bfca8b91fb4b..692f152ff31d4 100644 --- a/substrate/test-utils/runtime/src/lib.rs +++ b/substrate/test-utils/runtime/src/lib.rs @@ -48,10 +48,6 @@ use frame_system::{ use scale_info::TypeInfo; use sp_application_crypto::{ecdsa, ed25519, sr25519, RuntimeAppPublic, Ss58Codec}; use sp_keyring::Sr25519Keyring; -use sp_statement_store::{ - runtime_api::{InvalidStatement, StatementSource, ValidStatement}, - Proof, SignatureVerificationResult, Statement, -}; #[cfg(feature = "bls-experimental")] use sp_application_crypto::{bls381, ecdsa_bls381}; From 004f80bce945e69f39de790259f1705781b45495 Mon Sep 17 00:00:00 2001 From: Alexandru Gheorghe Date: Mon, 12 Jan 2026 17:01:56 +0200 Subject: [PATCH 35/81] remove unused function Signed-off-by: Alexandru Gheorghe --- .../tests/zombie_ci/statement_store_bench.rs | 21 ------------------- 1 file changed, 21 deletions(-) diff --git a/cumulus/zombienet/zombienet-sdk/tests/zombie_ci/statement_store_bench.rs b/cumulus/zombienet/zombienet-sdk/tests/zombie_ci/statement_store_bench.rs index 512385eb057da..24c3ca4301113 100644 --- a/cumulus/zombienet/zombienet-sdk/tests/zombie_ci/statement_store_bench.rs +++ b/cumulus/zombienet/zombienet-sdk/tests/zombie_ci/statement_store_bench.rs @@ -497,27 +497,6 @@ impl Participant { Ok(()) } - async fn statement_broadcasts_statement( - &mut self, - topics: Vec, - ) -> Result, anyhow::Error> { - let statements: Vec = self - .rpc_client - .request("statement_broadcastsStatement", rpc_params![topics]) - .await?; - - let mut decoded_statements = Vec::new(); - for statement_bytes in &statements { - let statement = Statement::decode(&mut &statement_bytes[..])?; - decoded_statements.push(statement); - } - - self.received_count += decoded_statements.len() as u32; - trace!(target: &self.log_target(), "Received {} statements (counter: {})", decoded_statements.len(), self.received_count); - - Ok(decoded_statements) - } - fn create_session_key_statement(&self) -> Statement { let mut statement = Statement::new(); statement.set_channel(channel_public_key()); From cdf3c2d39c2fa576ebfd11af1d4116f663a5c964 Mon Sep 17 00:00:00 2001 From: Andrei Eres Date: Tue, 13 Jan 2026 12:57:27 +0100 Subject: [PATCH 36/81] Remove dead code and deprecate runtime calls --- substrate/client/statement-store/src/lib.rs | 45 +++------------------ substrate/frame/statement/src/lib.rs | 15 ++++++- 2 files changed, 18 insertions(+), 42 deletions(-) diff --git a/substrate/client/statement-store/src/lib.rs b/substrate/client/statement-store/src/lib.rs index c696e3db25f87..d89d0c47cb6ab 100644 --- a/substrate/client/statement-store/src/lib.rs +++ b/substrate/client/statement-store/src/lib.rs @@ -23,8 +23,8 @@ //! //! Constraint management. //! -//! Each time a new statement is inserted into the store, it is first validated with the runtime -//! Validation function computes `global_priority`, 'max_count' and `max_size` for a statement. +//! The statement store validates statements using node-side signature verification and +//! static runtime allowance limits. //! The following constraints are then checked: //! * For a given account id, there may be at most `max_count` statements with `max_size` total data //! size. To satisfy this, statements for this account ID are removed from the store starting with @@ -61,9 +61,7 @@ use sp_blockchain::HeaderBackend; use sp_core::{crypto::UncheckedFrom, hexdisplay::HexDisplay, traits::SpawnNamed, Decode, Encode}; use sp_runtime::traits::Block as BlockT; use sp_statement_store::{ - runtime_api::{ - InvalidStatement, StatementSource, StatementStoreExt, ValidStatement, ValidateStatement, - }, + runtime_api::{StatementSource, StatementStoreExt, ValidStatement, ValidateStatement}, AccountId, BlockHash, Channel, DecryptionKey, Hash, InvalidReason, RejectionReason, Result, SignatureVerificationResult, Statement, SubmitResult, Topic, }; @@ -190,22 +188,8 @@ where + 'static, Client::Api: ValidateStatement, { - fn validate_statement( - &self, - block: Option, - source: StatementSource, - statement: Statement, - ) -> std::result::Result { - let api = self.client.runtime_api(); - let block = block.map(Into::into).unwrap_or_else(|| { - // Validate against the finalized state. - self.client.info().finalized_hash - }); - api.validate_statement(block, source, statement) - .map_err(|_| InvalidStatement::InternalError)? - } - - // TODO: Read actual allowance from storage. + // TODO: This is a temporary mock implementation. Real storage reading should be implemented + // when runtime-side allowance storage is available. fn read_allowance(&self, account_id: &AccountId) -> Result { let block_hash = self.client.info().finalized_hash; let storage_key = StorageKey(sp_core::storage::well_known_keys::HEAP_PAGES.to_vec()); @@ -226,15 +210,6 @@ where pub struct Store { db: parity_db::Db, index: RwLock, - _validate_fn: Box< - dyn Fn( - Option, - StatementSource, - Statement, - ) -> std::result::Result - + Send - + Sync, - >, read_allowance_fn: Box Result + Send + Sync>, keystore: Arc, // Used for testing @@ -613,15 +588,6 @@ impl Store { }, } - let validator = ClientWrapper { - client: client.clone(), - _block: Default::default(), - _backend: Default::default(), - }; - let validate_fn = Box::new(move |block, source, statement| { - validator.validate_statement(block, source, statement) - }); - let storage_reader = ClientWrapper { client, _block: Default::default(), _backend: Default::default() }; let read_allowance_fn = @@ -630,7 +596,6 @@ impl Store { let store = Store { db, index: RwLock::new(Index::new(options)), - _validate_fn: validate_fn, read_allowance_fn, keystore, time_override: None, diff --git a/substrate/frame/statement/src/lib.rs b/substrate/frame/statement/src/lib.rs index 24f00c4d750ba..1840485805819 100644 --- a/substrate/frame/statement/src/lib.rs +++ b/substrate/frame/statement/src/lib.rs @@ -28,6 +28,9 @@ //! `max_count`: Maximum number of statements allowed for the author (signer) of this statement. //! `max_size`: Maximum total size of statements allowed for the author (signer) of this statement. //! +//! Note: The `validate_statement()` function is deprecated. Node-side validation now uses +//! direct signature verification with static allowance limits. +//! //! This pallet also contains an offchain worker that turns on-chain statement events into //! statements. These statements are placed in the store and propagated over the network. @@ -131,8 +134,16 @@ where ::RuntimeEvent: TryInto>, sp_statement_store::BlockHash: From<::Hash>, { - /// Validate a statement against current state. This is supposed to be called by the statement - /// store on the host side. + /// Validate a statement against current state. + /// + /// # Deprecated + /// + /// This function is no longer used by the node-side statement store as of the migration + /// to direct signature verification and static allowances. + #[deprecated( + since = "2.0.0", + note = "Node-side validation no longer calls this function. Use direct signature verification instead." + )] pub fn validate_statement( _source: StatementSource, mut statement: Statement, From 0f3ef9149f3c96d3f7fdff4f0d44e27a94dab80e Mon Sep 17 00:00:00 2001 From: Andrei Eres Date: Tue, 13 Jan 2026 09:29:04 +0100 Subject: [PATCH 37/81] Write global statement allowance in runtime --- Cargo.lock | 1 + substrate/frame/statement/Cargo.toml | 2 + substrate/frame/statement/src/lib.rs | 60 +++++++++++++++++++++++++ substrate/primitives/storage/src/lib.rs | 22 +++++++++ 4 files changed, 85 insertions(+) diff --git a/Cargo.lock b/Cargo.lock index 2fd0640b562c9..5b94e10d12f47 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -13890,6 +13890,7 @@ dependencies = [ "sp-io", "sp-runtime", "sp-statement-store", + "sp-storage 19.0.0", ] [[package]] diff --git a/substrate/frame/statement/Cargo.toml b/substrate/frame/statement/Cargo.toml index b1449fa244162..5ea24a0d6a0b8 100644 --- a/substrate/frame/statement/Cargo.toml +++ b/substrate/frame/statement/Cargo.toml @@ -25,6 +25,7 @@ sp-core = { workspace = true } sp-io = { workspace = true } sp-runtime = { workspace = true } sp-statement-store = { workspace = true } +sp-storage = { workspace = true } [dev-dependencies] pallet-balances = { workspace = true, default-features = true } @@ -43,6 +44,7 @@ std = [ "sp-io/std", "sp-runtime/std", "sp-statement-store/std", + "sp-storage/std", ] try-runtime = [ "frame-support/try-runtime", diff --git a/substrate/frame/statement/src/lib.rs b/substrate/frame/statement/src/lib.rs index 1840485805819..a8edd1c90f773 100644 --- a/substrate/frame/statement/src/lib.rs +++ b/substrate/frame/statement/src/lib.rs @@ -108,6 +108,14 @@ pub mod pallet { { /// A new statement is submitted NewStatement { account: T::AccountId, statement: Statement }, + /// Statement allowance set for an account + AllowanceSet { account: T::AccountId, max_count: u32, max_size: u32 }, + } + + #[pallet::error] + pub enum Error { + /// Failed to convert account ID to 32 bytes + InvalidAccountId, } #[pallet::hooks] @@ -124,6 +132,58 @@ pub mod pallet { Pallet::::collect_statements(); } } + + #[pallet::call] + impl Pallet + where + ::AccountId: From, + { + /// Set statement allowance for a specific account. + /// + /// This is a root-only call intended for test networks to manually configure + /// per-account statement allowances. + /// + /// ## Parameters + /// - `origin`: Must be root + /// - `who`: The account to set allowance for + /// - `max_count`: Maximum number of statements allowed + /// - `max_size`: Maximum total size of statements in bytes + /// + /// ## Weight + /// - 1 storage write to well-known key + #[pallet::call_index(0)] + #[pallet::weight(T::DbWeight::get().writes(1))] + pub fn set_statement_allowance( + origin: OriginFor, + who: T::AccountId, + max_count: u32, + max_size: u32, + ) -> DispatchResult { + use codec::Encode; + use sp_io; + use sp_storage::well_known_keys; + + ensure_root(origin)?; + + let account_bytes: [u8; 32] = + who.encode().as_slice().try_into().map_err(|_| Error::::InvalidAccountId)?; + + let key = well_known_keys::statement_allowance_key(&account_bytes); + let value = (max_count, max_size).encode(); + sp_io::storage::set(&key, &value); + + log::debug!( + target: LOG_TARGET, + "Set statement allowance for account: max_count={}, max_size={}", + max_count, + max_size + ); + + Self::deposit_event(Event::AllowanceSet { account: who, max_count, max_size }); + + Ok(()) + } + } } impl Pallet diff --git a/substrate/primitives/storage/src/lib.rs b/substrate/primitives/storage/src/lib.rs index 9d2195c843312..5e7b7c1c3c4b7 100644 --- a/substrate/primitives/storage/src/lib.rs +++ b/substrate/primitives/storage/src/lib.rs @@ -185,6 +185,8 @@ pub struct StorageChangeSet { /// List of all well known keys and prefixes in storage. pub mod well_known_keys { + use alloc::vec::Vec; + /// Wasm code of the runtime. /// /// Stored as a raw byte vector. Required by substrate. @@ -209,6 +211,26 @@ pub mod well_known_keys { /// Encodes to `0x3a696e747261626c6f636b5f656e74726f7079`. pub const INTRABLOCK_ENTROPY: &[u8] = b":intrablock_entropy"; + /// Statement allowance prefix for per-account allowances. + /// + /// Full key: `":statement-allowance:" ++ account_id` (32 bytes) + /// + /// The value is SCALE-encoded as a tuple of two u32 values: (max_count, max_size). + pub const STATEMENT_ALLOWANCE_PREFIX: &[u8] = b":statement-allowance:"; + + /// Constructs a per-account statement allowance key. + /// + /// # Arguments + /// * `account_id` - 32-byte account identifier + /// + /// # Returns + /// Storage key: `":statement-allowance:" ++ account_id` + pub fn statement_allowance_key(account_id: &[u8; 32]) -> Vec { + let mut key = STATEMENT_ALLOWANCE_PREFIX.to_vec(); + key.extend_from_slice(account_id); + key + } + /// Prefix of child storage keys. pub const CHILD_STORAGE_KEY_PREFIX: &[u8] = b":child_storage:"; From c2ee2e374b04fe31bdd4c7c42afc75dd5c4d59a6 Mon Sep 17 00:00:00 2001 From: Andrei Eres Date: Tue, 13 Jan 2026 17:06:49 +0100 Subject: [PATCH 38/81] Read allowance --- Cargo.lock | 1 + substrate/client/statement-store/Cargo.toml | 1 + substrate/client/statement-store/src/lib.rs | 181 +++++++----------- .../statement-store/src/store_api.rs | 12 +- 4 files changed, 81 insertions(+), 114 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 5b94e10d12f47..e67bad6b99680 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -20747,6 +20747,7 @@ dependencies = [ "sp-core 28.0.0", "sp-runtime", "sp-statement-store", + "sp-storage 19.0.0", "sp-tracing 16.0.0", "substrate-prometheus-endpoint", "tempfile", diff --git a/substrate/client/statement-store/Cargo.toml b/substrate/client/statement-store/Cargo.toml index d62622401494b..651dbdfe9a272 100644 --- a/substrate/client/statement-store/Cargo.toml +++ b/substrate/client/statement-store/Cargo.toml @@ -28,6 +28,7 @@ sp-blockchain = { workspace = true, default-features = true } sp-core = { workspace = true, default-features = true } sp-runtime = { workspace = true, default-features = true } sp-statement-store = { workspace = true, default-features = true } +sp-storage = { workspace = true, default-features = true } tokio = { features = ["time"], workspace = true, default-features = true } [dev-dependencies] diff --git a/substrate/client/statement-store/src/lib.rs b/substrate/client/statement-store/src/lib.rs index d89d0c47cb6ab..f8e304933a884 100644 --- a/substrate/client/statement-store/src/lib.rs +++ b/substrate/client/statement-store/src/lib.rs @@ -56,14 +56,13 @@ use parking_lot::RwLock; use prometheus_endpoint::Registry as PrometheusRegistry; use sc_client_api::{backend::StorageProvider, Backend, StorageKey}; use sc_keystore::LocalKeystore; -use sp_api::ProvideRuntimeApi; use sp_blockchain::HeaderBackend; use sp_core::{crypto::UncheckedFrom, hexdisplay::HexDisplay, traits::SpawnNamed, Decode, Encode}; use sp_runtime::traits::Block as BlockT; use sp_statement_store::{ - runtime_api::{StatementSource, StatementStoreExt, ValidStatement, ValidateStatement}, - AccountId, BlockHash, Channel, DecryptionKey, Hash, InvalidReason, RejectionReason, Result, - SignatureVerificationResult, Statement, SubmitResult, Topic, + runtime_api::{StatementSource, StatementStoreExt, ValidStatement}, + AccountId, BlockHash, Channel, DecryptionKey, Hash, InvalidReason, Proof, RejectionReason, + Result, SignatureVerificationResult, Statement, SubmitResult, Topic, }; use std::{ collections::{BTreeMap, HashMap, HashSet}, @@ -180,29 +179,23 @@ where Block: BlockT, Block::Hash: From, BE: Backend + 'static, - Client: ProvideRuntimeApi - + HeaderBackend - + StorageProvider - + Send - + Sync - + 'static, - Client::Api: ValidateStatement, + Client: HeaderBackend + StorageProvider + Send + Sync + 'static, { - // TODO: This is a temporary mock implementation. Real storage reading should be implemented - // when runtime-side allowance storage is available. - fn read_allowance(&self, account_id: &AccountId) -> Result { + fn read_allowance(&self, account_id: &AccountId) -> Result> { + use sp_storage::well_known_keys; + let block_hash = self.client.info().finalized_hash; - let storage_key = StorageKey(sp_core::storage::well_known_keys::HEAP_PAGES.to_vec()); - self.client.storage(block_hash, &storage_key).map_err(|e| { - log::debug!( - target: LOG_TARGET, - "Error reading storage for account {:?}: {:?}", - HexDisplay::from(account_id), - e - ); - Error::Runtime - })?; - Ok(ValidStatement { max_count: 100_000, max_size: 1_000_000 }) + let key = well_known_keys::statement_allowance_key(account_id); + let storage_key = StorageKey(key); + self.client + .storage(block_hash, &storage_key) + .map_err(|e| Error::Storage(format!("Failed to read allowance: {:?}", e)))? + .map(|value| { + <(u32, u32)>::decode(&mut &value.0[..]) + .map(|(max_count, max_size)| ValidStatement { max_count, max_size }) + .map_err(|e| Error::Decode(format!("Failed to decode allowance: {:?}", e))) + }) + .transpose() } } @@ -210,7 +203,7 @@ where pub struct Store { db: parity_db::Db, index: RwLock, - read_allowance_fn: Box Result + Send + Sync>, + read_allowance_fn: Box Result> + Send + Sync>, keystore: Arc, // Used for testing time_override: Option, @@ -508,13 +501,7 @@ impl Store { Block: BlockT, Block::Hash: From, BE: Backend + 'static, - Client: ProvideRuntimeApi - + HeaderBackend - + StorageProvider - + Send - + Sync - + 'static, - Client::Api: ValidateStatement, + Client: HeaderBackend + StorageProvider + Send + Sync + 'static, { let store = Arc::new(Self::new(path, options, client, keystore, prometheus)?); @@ -549,13 +536,7 @@ impl Store { Block: BlockT, Block::Hash: From, BE: Backend + 'static, - Client: ProvideRuntimeApi - + HeaderBackend - + StorageProvider - + Send - + Sync - + 'static, - Client::Api: ValidateStatement, + Client: HeaderBackend + StorageProvider + Send + Sync + 'static, { let mut path: std::path::PathBuf = path.into(); path.push("statements"); @@ -947,38 +928,53 @@ impl StatementStore for Store { return SubmitResult::Invalid(InvalidReason::NoProof); }; - // Validate. - match statement.verify_signature() { - SignatureVerificationResult::Valid(_) => {}, - SignatureVerificationResult::Invalid => { + let validation = match (self.read_allowance_fn)(&account_id) { + Ok(Some(allowance)) => allowance, + Ok(None) => { log::debug!( target: LOG_TARGET, - "Statement validation failed: BadProof, {:?}", - HexDisplay::from(&hash), + "Account {} has no statement allowance set", + HexDisplay::from(&account_id), ); - self.metrics.report(|metrics| metrics.validations_invalid.inc()); - return SubmitResult::Invalid(InvalidReason::BadProof); + return SubmitResult::Rejected(RejectionReason::NoAllowance); }, - SignatureVerificationResult::NoSignature => { + Err(e) => { log::debug!( target: LOG_TARGET, - "Statement validation failed: NoProof, {:?}", - HexDisplay::from(&hash), + "Reading statement allowance for account {} failed", + HexDisplay::from(&account_id), ); - self.metrics.report(|metrics| metrics.validations_invalid.inc()); - return SubmitResult::Invalid(InvalidReason::NoProof); + return SubmitResult::InternalError(e) }, }; - let validation = match (self.read_allowance_fn)(&account_id) { - Ok(allowance) => allowance, - Err(e) => { + match statement.verify_signature() { + SignatureVerificationResult::Valid(_) => {}, + SignatureVerificationResult::Invalid => { log::debug!( target: LOG_TARGET, - "Reading statement allowance for account {} failed", - HexDisplay::from(&account_id), + "Statement validation failed: BadProof, {:?}", + HexDisplay::from(&hash), ); - return SubmitResult::InternalError(e) + self.metrics.report(|metrics| metrics.validations_invalid.inc()); + return SubmitResult::Invalid(InvalidReason::BadProof); + }, + SignatureVerificationResult::NoSignature => { + if let Some(Proof::OnChain { .. }) = statement.proof() { + log::debug!( + target: LOG_TARGET, + "Statement with OnChain proof accepted: {:?}", + HexDisplay::from(&hash), + ); + } else { + log::debug!( + target: LOG_TARGET, + "Statement validation failed: NoProof, {:?}", + HexDisplay::from(&hash), + ); + self.metrics.report(|metrics| metrics.validations_invalid.inc()); + return SubmitResult::Invalid(InvalidReason::NoProof); + } }, }; @@ -1071,9 +1067,8 @@ mod tests { use sc_keystore::Keystore; use sp_core::{Decode, Encode, Pair}; use sp_statement_store::{ - runtime_api::{InvalidStatement, ValidStatement, ValidateStatement}, - AccountId, Channel, DecryptionKey, Proof, SignatureVerificationResult, Statement, - StatementSource, StatementStore, SubmitResult, Topic, + AccountId, Channel, DecryptionKey, Proof, Statement, StatementSource, StatementStore, + SubmitResult, Topic, }; type Extrinsic = sp_runtime::OpaqueExtrinsic; @@ -1088,26 +1083,28 @@ mod tests { #[derive(Clone)] pub(crate) struct TestClient; - pub(crate) struct RuntimeApi { - _inner: TestClient, - } - pub(crate) type TestBackend = sc_client_api::in_mem::Backend; - impl sp_api::ProvideRuntimeApi for TestClient { - type Api = RuntimeApi; - fn runtime_api(&self) -> sp_api::ApiRef<'_, Self::Api> { - RuntimeApi { _inner: self.clone() }.into() - } - } - impl sc_client_api::StorageProvider for TestClient { fn storage( &self, _hash: Hash, - _key: &sc_client_api::StorageKey, + key: &sc_client_api::StorageKey, ) -> sp_blockchain::Result> { - Ok(None) + assert_eq!(&key.0[0..21], b":statement-allowance:" as &[u8],); + + // Extract account ID (32 bytes) from the storage key + let account_bytes = &key.0[21..53]; + let account_id: u64 = u64::from_le_bytes(account_bytes[0..8].try_into().unwrap()); + let allowance = match account_id { + 1 => (1u32, 1000u32), + 2 => (2u32, 1000u32), + 3 => (3u32, 1000u32), + 4 => (4u32, 1000u32), + 42 => (42u32, (42 * crate::MAX_STATEMENT_SIZE) as u32), + _ => (100u32, 1000u32), // Default for other accounts + }; + Ok(Some(sc_client_api::StorageData(allowance.encode()))) } fn storage_hash( @@ -1197,40 +1194,6 @@ mod tests { } } - sp_api::mock_impl_runtime_apis! { - impl ValidateStatement for RuntimeApi { - fn validate_statement( - _source: StatementSource, - statement: Statement, - ) -> std::result::Result { - use crate::tests::account; - match statement.verify_signature() { - SignatureVerificationResult::Valid(_) => Ok(ValidStatement{max_count: 100, max_size: 1000}), - SignatureVerificationResult::Invalid => Err(InvalidStatement::BadProof), - SignatureVerificationResult::NoSignature => { - if let Some(Proof::OnChain { block_hash, .. }) = statement.proof() { - if block_hash == &CORRECT_BLOCK_HASH { - let (max_count, max_size) = match statement.account_id() { - Some(a) if a == account(1) => (1, 1000), - Some(a) if a == account(2) => (2, 1000), - Some(a) if a == account(3) => (3, 1000), - Some(a) if a == account(4) => (4, 1000), - Some(a) if a == account(42) => (42, 42 * crate::MAX_STATEMENT_SIZE as u32), - _ => (2, 2000), - }; - Ok(ValidStatement{ max_count, max_size }) - } else { - Err(InvalidStatement::BadProof) - } - } else { - Err(InvalidStatement::BadProof) - } - } - } - } - } - } - impl sp_blockchain::HeaderBackend for TestClient { fn header(&self, _hash: Hash) -> sp_blockchain::Result> { unimplemented!() diff --git a/substrate/primitives/statement-store/src/store_api.rs b/substrate/primitives/statement-store/src/store_api.rs index e949a35242091..8c7976887e928 100644 --- a/substrate/primitives/statement-store/src/store_api.rs +++ b/substrate/primitives/statement-store/src/store_api.rs @@ -25,12 +25,12 @@ pub enum Error { /// Database error. #[error("Database error: {0:?}")] Db(String), - /// Error decoding statement structure. - #[error("Error decoding statement: {0:?}")] + /// Decoding error + #[error("Decoding error: {0:?}")] Decode(String), - /// Error making runtime call. - #[error("Error calling into the runtime")] - Runtime, + /// Error reading from storage. + #[error("Storage error: {0:?}")] + Storage(String), } /// Reason why a statement was rejected from the store. @@ -61,6 +61,8 @@ pub enum RejectionReason { }, /// The global statement store is full and cannot accept new statements. StoreFull, + /// Account has no allowance set. + NoAllowance, } /// Reason why a statement failed validation. From f20791a636b925e82bfbcfbd84c7f216c6763f8a Mon Sep 17 00:00:00 2001 From: Andrei Eres Date: Tue, 13 Jan 2026 18:07:44 +0100 Subject: [PATCH 39/81] Remove unused traits --- .../benches/statement_store.rs | 39 +------------------ 1 file changed, 1 insertion(+), 38 deletions(-) diff --git a/substrate/client/statement-store/benches/statement_store.rs b/substrate/client/statement-store/benches/statement_store.rs index 0d3f2056d7262..571104bbd65bc 100644 --- a/substrate/client/statement-store/benches/statement_store.rs +++ b/substrate/client/statement-store/benches/statement_store.rs @@ -43,26 +43,15 @@ const TOTAL_OPS: usize = NUM_THREADS * OPS_PER_THREAD; #[derive(Clone)] struct TestClient; -struct RuntimeApi { - _inner: TestClient, -} - type TestBackend = sc_client_api::in_mem::Backend; -impl sp_api::ProvideRuntimeApi for TestClient { - type Api = RuntimeApi; - fn runtime_api(&self) -> sp_api::ApiRef { - RuntimeApi { _inner: self.clone() }.into() - } -} - impl sc_client_api::StorageProvider for TestClient { fn storage( &self, _hash: Hash, _key: &sc_client_api::StorageKey, ) -> sp_blockchain::Result> { - Ok(None) + Ok(sc_client_api::StorageData::new((100_000, 1_000_000).encode())) } fn storage_hash( @@ -152,32 +141,6 @@ impl sc_client_api::StorageProvider for TestClient { } } -sp_api::mock_impl_runtime_apis! { - impl ValidateStatement for RuntimeApi { - fn validate_statement( - _source: StatementSource, - statement: Statement, - ) -> std::result::Result { - match statement.verify_signature() { - SignatureVerificationResult::Valid(_) => - Ok(ValidStatement { max_count: 100_000, max_size: 1_000_000 }), - SignatureVerificationResult::Invalid => Err(InvalidStatement::BadProof), - SignatureVerificationResult::NoSignature => { - if let Some(Proof::OnChain { block_hash, .. }) = statement.proof() { - if block_hash == &CORRECT_BLOCK_HASH { - Ok(ValidStatement { max_count: 100_000, max_size: 1_000_000 }) - } else { - Err(InvalidStatement::BadProof) - } - } else { - Err(InvalidStatement::BadProof) - } - }, - } - } - } -} - impl sp_blockchain::HeaderBackend for TestClient { fn header(&self, _hash: Hash) -> sp_blockchain::Result> { unimplemented!() From b10c447c796b24b9d3114a75348a5db66dd4473f Mon Sep 17 00:00:00 2001 From: Andrei Eres Date: Fri, 16 Jan 2026 11:29:57 +0100 Subject: [PATCH 40/81] Fix errors --- .../client/statement-store/benches/statement_store.rs | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/substrate/client/statement-store/benches/statement_store.rs b/substrate/client/statement-store/benches/statement_store.rs index 571104bbd65bc..957ceeef9323d 100644 --- a/substrate/client/statement-store/benches/statement_store.rs +++ b/substrate/client/statement-store/benches/statement_store.rs @@ -19,10 +19,9 @@ use criterion::{criterion_group, criterion_main, Criterion}; use sc_statement_store::Store; use sp_core::Pair; +use sp_runtime::codec::Encode; use sp_statement_store::{ - runtime_api::{InvalidStatement, ValidStatement, ValidateStatement}, - DecryptionKey, Proof, SignatureVerificationResult, Statement, StatementSource, StatementStore, - SubmitResult, Topic, + DecryptionKey, Statement, StatementSource, StatementStore, SubmitResult, Topic, }; use std::sync::Arc; @@ -51,7 +50,7 @@ impl sc_client_api::StorageProvider for TestClient { _hash: Hash, _key: &sc_client_api::StorageKey, ) -> sp_blockchain::Result> { - Ok(sc_client_api::StorageData::new((100_000, 1_000_000).encode())) + Ok(Some(sc_client_api::StorageData((100_000, 1_000_000).encode()))) } fn storage_hash( From 5cd4f4eba9f6b08ed058e3f66a6e80f755772577 Mon Sep 17 00:00:00 2001 From: Andrei Eres Date: Fri, 16 Jan 2026 12:32:23 +0100 Subject: [PATCH 41/81] Remove validate_statement from runtime --- .../runtimes/people/people-westend/src/lib.rs | 12 -- cumulus/polkadot-omni-node/lib/src/cli.rs | 3 +- .../polkadot-omni-node/lib/src/common/mod.rs | 3 - .../lib/src/fake_runtime_api/utils.rs | 9 - substrate/bin/node/runtime/src/lib.rs | 9 - substrate/frame/statement/src/lib.rs | 99 +---------- substrate/frame/statement/src/tests.rs | 159 ------------------ .../statement-store/src/runtime_api.rs | 11 -- substrate/test-utils/runtime/src/lib.rs | 17 -- 9 files changed, 6 insertions(+), 316 deletions(-) delete mode 100644 substrate/frame/statement/src/tests.rs diff --git a/cumulus/parachains/runtimes/people/people-westend/src/lib.rs b/cumulus/parachains/runtimes/people/people-westend/src/lib.rs index 368bf83a3bd6b..a936a5bbf9cb4 100644 --- a/cumulus/parachains/runtimes/people/people-westend/src/lib.rs +++ b/cumulus/parachains/runtimes/people/people-westend/src/lib.rs @@ -1146,18 +1146,6 @@ impl_runtime_apis! { 1 } } - - impl sp_statement_store::runtime_api::ValidateStatement for Runtime { - fn validate_statement( - _source: StatementSource, - statement: Statement, - ) -> Result { - match statement.verify_signature() { - SignatureVerificationResult::Invalid => Err(InvalidStatement::BadProof), - _ => Ok(ValidStatement { max_count: 100_000, max_size: 1_000_000 }), - } - } - } } cumulus_pallet_parachain_system::register_validate_block! { diff --git a/cumulus/polkadot-omni-node/lib/src/cli.rs b/cumulus/polkadot-omni-node/lib/src/cli.rs index ba519a8920f8d..28a84fd8c93d8 100644 --- a/cumulus/polkadot-omni-node/lib/src/cli.rs +++ b/cumulus/polkadot-omni-node/lib/src/cli.rs @@ -218,8 +218,7 @@ pub struct Cli { /// Enable the statement store. /// - /// The statement store is a store for statements validated using the runtime API - /// `validate_statement`. It should be enabled for chains that provide this runtime API. + /// User limits for statements should be provided by the runtime. #[arg(long)] pub enable_statement_store: bool, diff --git a/cumulus/polkadot-omni-node/lib/src/common/mod.rs b/cumulus/polkadot-omni-node/lib/src/common/mod.rs index fc9717063880c..c75aff94c4fe2 100644 --- a/cumulus/polkadot-omni-node/lib/src/common/mod.rs +++ b/cumulus/polkadot-omni-node/lib/src/common/mod.rs @@ -40,7 +40,6 @@ use sp_runtime::{ OpaqueExtrinsic, }; use sp_session::SessionKeys; -use sp_statement_store::runtime_api::ValidateStatement; use sp_transaction_pool::runtime_api::TaggedTransactionQueue; use sp_transaction_storage_proof::runtime_api::TransactionStorageApi; use std::{fmt::Debug, path::PathBuf, str::FromStr}; @@ -73,7 +72,6 @@ pub trait NodeRuntimeApi: + TaggedTransactionQueue + OffchainWorkerApi + CollectCollationInfo - + ValidateStatement + GetParachainInfo + TransactionStorageApi + RelayParentOffsetApi @@ -90,7 +88,6 @@ impl NodeRuntimeApi for T where + OffchainWorkerApi + RelayParentOffsetApi + CollectCollationInfo - + ValidateStatement + GetParachainInfo + TransactionStorageApi { diff --git a/cumulus/polkadot-omni-node/lib/src/fake_runtime_api/utils.rs b/cumulus/polkadot-omni-node/lib/src/fake_runtime_api/utils.rs index 56eb3d2ae7602..e97af794c38e6 100644 --- a/cumulus/polkadot-omni-node/lib/src/fake_runtime_api/utils.rs +++ b/cumulus/polkadot-omni-node/lib/src/fake_runtime_api/utils.rs @@ -234,15 +234,6 @@ macro_rules! impl_node_runtime_apis { } } - impl sp_statement_store::runtime_api::ValidateStatement<$block> for $runtime { - fn validate_statement( - _source: sp_statement_store::runtime_api::StatementSource, - _statement: sp_statement_store::Statement, - ) -> Result { - unimplemented!() - } - } - impl cumulus_primitives_core::TargetBlockRate<$block> for $runtime { fn target_block_rate() -> u32 { unimplemented!() diff --git a/substrate/bin/node/runtime/src/lib.rs b/substrate/bin/node/runtime/src/lib.rs index 3eddd32716247..4509ceb04e616 100644 --- a/substrate/bin/node/runtime/src/lib.rs +++ b/substrate/bin/node/runtime/src/lib.rs @@ -3254,15 +3254,6 @@ pallet_revive::impl_runtime_apis_plus_revive_traits!( } } - impl sp_statement_store::runtime_api::ValidateStatement for Runtime { - fn validate_statement( - source: sp_statement_store::runtime_api::StatementSource, - statement: sp_statement_store::Statement, - ) -> Result { - Statement::validate_statement(source, statement) - } - } - impl sp_offchain::OffchainWorkerApi for Runtime { fn offchain_worker(header: &::Header) { Executive::offchain_worker(header) diff --git a/substrate/frame/statement/src/lib.rs b/substrate/frame/statement/src/lib.rs index a8edd1c90f773..3148e50ec9356 100644 --- a/substrate/frame/statement/src/lib.rs +++ b/substrate/frame/statement/src/lib.rs @@ -21,31 +21,18 @@ //! //! ## Overview //! -//! The Statement pallet provides means to create and validate statements for the statement store. -//! -//! For each statement validation function calculates the following three values based on the -//! statement author balance: -//! `max_count`: Maximum number of statements allowed for the author (signer) of this statement. -//! `max_size`: Maximum total size of statements allowed for the author (signer) of this statement. -//! -//! Note: The `validate_statement()` function is deprecated. Node-side validation now uses -//! direct signature verification with static allowance limits. +//! The Statement pallet provides means to create statements for the statement store. +//! Statement validation is performed node-side using direct signature verification with +//! configurable allowance limits. //! //! This pallet also contains an offchain worker that turns on-chain statement events into //! statements. These statements are placed in the store and propagated over the network. #![cfg_attr(not(feature = "std"), no_std)] -use frame_support::{ - pallet_prelude::*, - sp_runtime::{traits::CheckedDiv, SaturatedConversion}, - traits::fungible::Inspect, -}; +use frame_support::{pallet_prelude::*, traits::fungible::Inspect}; use frame_system::pallet_prelude::*; -use sp_statement_store::{ - runtime_api::{InvalidStatement, StatementSource, ValidStatement}, - Proof, SignatureVerificationResult, Statement, -}; +use sp_statement_store::{Proof, Statement}; #[cfg(test)] // We do not declare all features used by `construct_runtime` @@ -194,82 +181,6 @@ where ::RuntimeEvent: TryInto>, sp_statement_store::BlockHash: From<::Hash>, { - /// Validate a statement against current state. - /// - /// # Deprecated - /// - /// This function is no longer used by the node-side statement store as of the migration - /// to direct signature verification and static allowances. - #[deprecated( - since = "2.0.0", - note = "Node-side validation no longer calls this function. Use direct signature verification instead." - )] - pub fn validate_statement( - _source: StatementSource, - mut statement: Statement, - ) -> Result { - sp_io::init_tracing(); - log::debug!(target: LOG_TARGET, "Validating statement {:?}", statement); - let account: T::AccountId = match statement.proof() { - Some(Proof::OnChain { who, block_hash, event_index }) => { - if frame_system::Pallet::::parent_hash().as_ref() != block_hash.as_slice() { - log::debug!(target: LOG_TARGET, "Bad block hash."); - return Err(InvalidStatement::BadProof) - } - let account: T::AccountId = (*who).into(); - match frame_system::Pallet::::event_no_consensus(*event_index as usize) { - Some(e) => { - statement.remove_proof(); - if let Ok(Event::NewStatement { account: a, statement: s }) = e.try_into() { - if a != account || s != statement { - log::debug!(target: LOG_TARGET, "Event data mismatch"); - return Err(InvalidStatement::BadProof) - } - } else { - log::debug!(target: LOG_TARGET, "Event type mismatch"); - return Err(InvalidStatement::BadProof) - } - }, - _ => { - log::debug!(target: LOG_TARGET, "Bad event index"); - return Err(InvalidStatement::BadProof) - }, - } - account - }, - _ => match statement.verify_signature() { - SignatureVerificationResult::Valid(account) => account.into(), - SignatureVerificationResult::Invalid => { - log::debug!(target: LOG_TARGET, "Bad statement signature."); - return Err(InvalidStatement::BadProof) - }, - SignatureVerificationResult::NoSignature => { - log::debug!(target: LOG_TARGET, "Missing statement signature."); - return Err(InvalidStatement::NoProof) - }, - }, - }; - let statement_cost = T::StatementCost::get(); - let byte_cost = T::ByteCost::get(); - let balance = >>::balance(&account); - let min_allowed_statements = T::MinAllowedStatements::get(); - let max_allowed_statements = T::MaxAllowedStatements::get(); - let min_allowed_bytes = T::MinAllowedBytes::get(); - let max_allowed_bytes = T::MaxAllowedBytes::get(); - let max_count = balance - .checked_div(&statement_cost) - .unwrap_or_default() - .saturated_into::() - .clamp(min_allowed_statements, max_allowed_statements); - let max_size = balance - .checked_div(&byte_cost) - .unwrap_or_default() - .saturated_into::() - .clamp(min_allowed_bytes, max_allowed_bytes); - - Ok(ValidStatement { max_count, max_size }) - } - /// Submit a statement event. The statement will be picked up by the offchain worker and /// broadcast to the network. pub fn submit_statement(account: T::AccountId, statement: Statement) { diff --git a/substrate/frame/statement/src/tests.rs b/substrate/frame/statement/src/tests.rs deleted file mode 100644 index 51103caca60fa..0000000000000 --- a/substrate/frame/statement/src/tests.rs +++ /dev/null @@ -1,159 +0,0 @@ -// This file is part of Substrate. - -// Copyright (C) Parity Technologies (UK) Ltd. -// SPDX-License-Identifier: Apache-2.0 - -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -//! # Statement runtime support tests. - -#![cfg(test)] - -use super::*; -use crate::mock::*; -use sp_core::Pair; -use sp_runtime::AccountId32; -use sp_statement_store::{ - runtime_api::{InvalidStatement, StatementSource, ValidStatement}, - Proof, Statement, -}; - -#[test] -fn sign_and_validate_no_balance() { - new_test_ext().execute_with(|| { - let pair = sp_core::sr25519::Pair::from_string("//Bob", None).unwrap(); - let mut statement = Statement::new(); - statement.sign_sr25519_private(&pair); - let result = Pallet::::validate_statement(StatementSource::Chain, statement); - assert_eq!( - Ok(ValidStatement { max_count: MIN_ALLOWED_STATEMENTS, max_size: MIN_ALLOWED_BYTES }), - result - ); - - let pair = sp_core::ed25519::Pair::from_string("//Bob", None).unwrap(); - let mut statement = Statement::new(); - statement.sign_ed25519_private(&pair); - let result = Pallet::::validate_statement(StatementSource::Chain, statement); - assert_eq!( - Ok(ValidStatement { max_count: MIN_ALLOWED_STATEMENTS, max_size: MIN_ALLOWED_BYTES }), - result - ); - - let pair = sp_core::ecdsa::Pair::from_string("//Bob", None).unwrap(); - let mut statement = Statement::new(); - statement.sign_ecdsa_private(&pair); - let result = Pallet::::validate_statement(StatementSource::Chain, statement); - assert_eq!( - Ok(ValidStatement { max_count: MIN_ALLOWED_STATEMENTS, max_size: MIN_ALLOWED_BYTES }), - result - ); - }); -} - -#[test] -fn validate_with_balance() { - new_test_ext().execute_with(|| { - let pair = sp_core::sr25519::Pair::from_string("//Alice", None).unwrap(); - let mut statement = Statement::new(); - statement.sign_sr25519_private(&pair); - let result = Pallet::::validate_statement(StatementSource::Chain, statement); - assert_eq!(Ok(ValidStatement { max_count: 6, max_size: 3000 }), result); - - let pair = sp_core::sr25519::Pair::from_string("//Charlie", None).unwrap(); - let mut statement = Statement::new(); - statement.sign_sr25519_private(&pair); - let result = Pallet::::validate_statement(StatementSource::Chain, statement); - assert_eq!( - Ok(ValidStatement { max_count: MAX_ALLOWED_STATEMENTS, max_size: MAX_ALLOWED_BYTES }), - result - ); - }); -} - -#[test] -fn validate_no_proof_fails() { - new_test_ext().execute_with(|| { - let statement = Statement::new(); - let result = Pallet::::validate_statement(StatementSource::Chain, statement); - assert_eq!(Err(InvalidStatement::NoProof), result); - }); -} - -#[test] -fn validate_bad_signature_fails() { - new_test_ext().execute_with(|| { - let statement = Statement::new_with_proof(Proof::Sr25519 { - signature: [0u8; 64], - signer: Default::default(), - }); - let result = Pallet::::validate_statement(StatementSource::Chain, statement); - assert_eq!(Err(InvalidStatement::BadProof), result); - }); -} - -#[test] -fn validate_event() { - new_test_ext().execute_with(|| { - let parent_hash = sp_core::H256::random(); - System::reset_events(); - System::initialize(&1, &parent_hash, &Default::default()); - let mut statement = Statement::new(); - let pair = sp_core::sr25519::Pair::from_string("//Alice", None).unwrap(); - let account: AccountId32 = pair.public().into(); - Pallet::::submit_statement(account.clone(), statement.clone()); - statement.set_proof(Proof::OnChain { - who: account.clone().into(), - event_index: 0, - block_hash: parent_hash.into(), - }); - let result = Pallet::::validate_statement(StatementSource::Chain, statement.clone()); - assert_eq!(Ok(ValidStatement { max_count: 6, max_size: 3000 }), result); - - // Use wrong event index - statement.set_proof(Proof::OnChain { - who: account.clone().into(), - event_index: 1, - block_hash: parent_hash.into(), - }); - let result = Pallet::::validate_statement(StatementSource::Chain, statement.clone()); - assert_eq!(Err(InvalidStatement::BadProof), result); - - // Use wrong block hash - statement.set_proof(Proof::OnChain { - who: account.clone().into(), - event_index: 0, - block_hash: sp_core::H256::random().into(), - }); - let result = Pallet::::validate_statement(StatementSource::Chain, statement.clone()); - assert_eq!(Err(InvalidStatement::BadProof), result); - }); -} - -#[test] -fn validate_no_event_fails() { - new_test_ext().execute_with(|| { - let parent_hash = sp_core::H256::random(); - System::reset_events(); - System::initialize(&1, &parent_hash, &Default::default()); - let mut statement = Statement::new(); - let pair = sp_core::sr25519::Pair::from_string("//Alice", None).unwrap(); - let account: AccountId32 = pair.public().into(); - statement.set_proof(Proof::OnChain { - who: account.into(), - event_index: 0, - block_hash: parent_hash.into(), - }); - let result = Pallet::::validate_statement(StatementSource::Chain, statement); - assert_eq!(Err(InvalidStatement::BadProof), result); - }); -} diff --git a/substrate/primitives/statement-store/src/runtime_api.rs b/substrate/primitives/statement-store/src/runtime_api.rs index f24b66fcfcc6f..f0e53f1133f6d 100644 --- a/substrate/primitives/statement-store/src/runtime_api.rs +++ b/substrate/primitives/statement-store/src/runtime_api.rs @@ -77,17 +77,6 @@ impl StatementSource { } } -sp_api::decl_runtime_apis! { - /// Runtime API trait for statement validation. - pub trait ValidateStatement { - /// Validate the statement. - fn validate_statement( - source: StatementSource, - statement: Statement, - ) -> Result; - } -} - #[cfg(feature = "std")] sp_externalities::decl_extension! { /// The offchain database extension that will be registered at the Substrate externalities. diff --git a/substrate/test-utils/runtime/src/lib.rs b/substrate/test-utils/runtime/src/lib.rs index 308e4293c9139..172c626efc301 100644 --- a/substrate/test-utils/runtime/src/lib.rs +++ b/substrate/test-utils/runtime/src/lib.rs @@ -822,23 +822,6 @@ impl_runtime_apis! { vec![PresetId::from("foobar"), PresetId::from("staging")] } } - - impl sp_statement_store::runtime_api::ValidateStatement for Runtime { - fn validate_statement( - _source: sp_statement_store::runtime_api::StatementSource, - statement: sp_statement_store::Statement, - ) -> Result< - sp_statement_store::runtime_api::ValidStatement, - sp_statement_store::runtime_api::InvalidStatement, - > { - use sp_statement_store::runtime_api::{InvalidStatement, ValidStatement}; - - match statement.verify_signature() { - sp_statement_store::SignatureVerificationResult::Invalid => Err(InvalidStatement::BadProof), - _ => Ok(ValidStatement { max_count: 100_000, max_size: 1_000_000 }), - } - } - } } fn test_ed25519_crypto( From 4ec4df46644d2b144d6f5922704a3a44d1d89a2a Mon Sep 17 00:00:00 2001 From: Alexandru Gheorghe Date: Fri, 16 Jan 2026 12:43:47 +0200 Subject: [PATCH 42/81] review feedback Signed-off-by: Alexandru Gheorghe --- .../runtimes/people/people-westend/src/lib.rs | 25 +++--- .../tests/zombie_ci/statement_store.rs | 6 +- substrate/bin/node/cli/src/service.rs | 2 +- substrate/bin/node/rpc/src/lib.rs | 8 +- substrate/client/statement-store/src/lib.rs | 79 +++++++++---------- .../statement-store/src/subscription.rs | 6 +- .../primitives/statement-store/src/lib.rs | 3 +- .../statement-store/src/store_api.rs | 13 +-- 8 files changed, 71 insertions(+), 71 deletions(-) diff --git a/cumulus/parachains/runtimes/people/people-westend/src/lib.rs b/cumulus/parachains/runtimes/people/people-westend/src/lib.rs index 5ecdfbc161920..dcd43e1b9a9a6 100644 --- a/cumulus/parachains/runtimes/people/people-westend/src/lib.rs +++ b/cumulus/parachains/runtimes/people/people-westend/src/lib.rs @@ -1152,8 +1152,10 @@ impl_runtime_apis! { _source: StatementSource, statement: Statement, ) -> Result { - let account = match statement.verify_signature() { - SignatureVerificationResult::Valid(account) => account.into(), + match statement.verify_signature() { + SignatureVerificationResult::Valid(account) => { + tracing::debug!(target: "runtime", "Valid statement signature from account: {:?}", account); + }, SignatureVerificationResult::Invalid => { tracing::debug!(target: "runtime", "Bad statement signature."); return Err(InvalidStatement::BadProof) @@ -1164,19 +1166,14 @@ impl_runtime_apis! { }, }; - // For now just allow validators to store some statements. + // For now just allow a small quota to everyone to help with testing. + // Later we will have more sophisticated checks here. // In the future we will allow people. - if pallet_session::Validators::::get().contains(&account) { - Ok(ValidStatement { - max_count: 2 * 1024, - max_size: 1024 * 1024, - }) - } else { - Ok(ValidStatement { - max_count: 2 * 1024, - max_size: 1024 * 1024, - }) - } + Ok(ValidStatement { + max_count: 2 * 1024, + max_size: 1024 * 10, + }) + } } } diff --git a/cumulus/zombienet/zombienet-sdk/tests/zombie_ci/statement_store.rs b/cumulus/zombienet/zombienet-sdk/tests/zombie_ci/statement_store.rs index e107ece9c262d..1eec7393616c8 100644 --- a/cumulus/zombienet/zombienet-sdk/tests/zombie_ci/statement_store.rs +++ b/cumulus/zombienet/zombienet-sdk/tests/zombie_ci/statement_store.rs @@ -39,7 +39,7 @@ async fn statement_store() -> Result<(), anyhow::Error> { .with_chain("people-westend-local") .with_default_args(vec![ "--force-authoring".into(), - "-lparachain=debug".into(), + "-linfo,statement-gossip=debug,statement-store=debug".into(), "--enable-statement-store".into(), ]) .with_collator(|n| n.with_name("charlie")) @@ -100,5 +100,9 @@ async fn statement_store() -> Result<(), anyhow::Error> { assert!(tokio::time::timeout(Duration::from_secs(stop_after_secs), subscription.next()) .await .is_err()); + log::info!("Statement store test passed"); + log::info!("Keeping network alive"); + + tokio::time::sleep(Duration::from_hours(24)).await; Ok(()) } diff --git a/substrate/bin/node/cli/src/service.rs b/substrate/bin/node/cli/src/service.rs index 8269676d8043b..43f39d3cbdd0c 100644 --- a/substrate/bin/node/cli/src/service.rs +++ b/substrate/bin/node/cli/src/service.rs @@ -358,7 +358,7 @@ pub fn new_partial( .clone(), subscription_executor: subscription_executor.clone(), }, - statement_store: node_rpc::StatementStoreDeps { + statement_store_deps: node_rpc::StatementStoreDeps { statement_store: rpc_statement_store.clone(), subscription_executor, }, diff --git a/substrate/bin/node/rpc/src/lib.rs b/substrate/bin/node/rpc/src/lib.rs index 225a000626bf3..f02bb8a1de3a3 100644 --- a/substrate/bin/node/rpc/src/lib.rs +++ b/substrate/bin/node/rpc/src/lib.rs @@ -111,7 +111,7 @@ pub struct FullDeps { /// BEEFY specific dependencies. pub beefy: BeefyDeps, /// Statement store specific dependencies. - pub statement_store: StatementStoreDeps, + pub statement_store_deps: StatementStoreDeps, /// The backend used by the node. pub backend: Arc, /// Mixnet API. @@ -128,7 +128,7 @@ pub fn create_full( babe, grandpa, beefy, - statement_store, + statement_store_deps, backend, mixnet_api, }: FullDeps, @@ -215,8 +215,8 @@ where io.merge(StateMigration::new(client.clone(), backend).into_rpc())?; io.merge(Dev::new(client).into_rpc())?; let statement_store_rpc = sc_rpc::statement::StatementStore::new( - statement_store.statement_store, - statement_store.subscription_executor, + statement_store_deps.statement_store, + statement_store_deps.subscription_executor, ) .into_rpc(); io.merge(statement_store_rpc)?; diff --git a/substrate/client/statement-store/src/lib.rs b/substrate/client/statement-store/src/lib.rs index fd5fa27c09ed0..08d5be18f4129 100644 --- a/substrate/client/statement-store/src/lib.rs +++ b/substrate/client/statement-store/src/lib.rs @@ -48,11 +48,10 @@ #![warn(unused_extern_crates)] mod metrics; - -use futures::FutureExt; -pub use sp_statement_store::{Error, StatementStore, MAX_TOPICS}; +mod subscription; use crate::subscription::{SubscriptionStatementsStream, SubscriptionsHandle}; +use futures::FutureExt; use metrics::MetricsLink as PrometheusMetrics; use parking_lot::RwLock; use prometheus_endpoint::Registry as PrometheusRegistry; @@ -68,18 +67,16 @@ use sp_statement_store::{ InvalidStatement, StatementSource, StatementStoreExt, ValidStatement, ValidateStatement, }, AccountId, BlockHash, Channel, CheckedTopicFilter, DecryptionKey, FilterDecision, Hash, - InvalidReason, Proof, RejectionReason, Result, Statement, SubmitResult, Topic, MAX_ANY_TOPICS, + InvalidReason, Proof, RejectionReason, Result, Statement, SubmitResult, Topic, }; +pub use sp_statement_store::{Error, StatementStore, MAX_TOPICS}; use std::{ collections::{BTreeMap, HashMap, HashSet}, sync::Arc, time::Instant, }; - pub use subscription::StatementStoreSubscriptionApi; -mod subscription; - const KEY_VERSION: &[u8] = b"version".as_slice(); const CURRENT_VERSION: u32 = 1; @@ -122,12 +119,12 @@ mod col { } #[derive(Eq, PartialEq, Debug, Ord, PartialOrd, Clone, Copy)] -struct Priority(u64); +struct Expiry(u64); #[derive(PartialEq, Eq)] struct PriorityKey { hash: Hash, - priority: Priority, + expiry: Expiry, } impl PartialOrd for PriorityKey { @@ -138,14 +135,14 @@ impl PartialOrd for PriorityKey { impl Ord for PriorityKey { fn cmp(&self, other: &Self) -> std::cmp::Ordering { - self.priority.cmp(&other.priority).then_with(|| self.hash.cmp(&other.hash)) + self.expiry.cmp(&other.expiry).then_with(|| self.hash.cmp(&other.hash)) } } #[derive(PartialEq, Eq)] struct ChannelEntry { hash: Hash, - priority: Priority, + expiry: Expiry, } #[derive(Default)] @@ -186,7 +183,7 @@ struct Index { by_topic: HashMap>, by_dec_key: HashMap, HashSet>, topics_and_keys: HashMap; MAX_TOPICS], Option)>, - entries: HashMap, + entries: HashMap, expired: HashMap, // Value is expiration timestamp. accounts: HashMap, accounts_to_check_for_expiry_stmts: Vec, @@ -266,18 +263,18 @@ impl Index { if nt > 0 || key.is_some() { self.topics_and_keys.insert(hash, (all_topics, key)); } - let priority = Priority(statement.expiry()); - self.entries.insert(hash, (account, priority, statement.data_len())); + let expiry = Expiry(statement.expiry()); + self.entries.insert(hash, (account, expiry, statement.data_len())); self.recent.insert(hash); self.total_size += statement.data_len(); let account_info = self.accounts.entry(account).or_default(); account_info.data_size += statement.data_len(); if let Some(channel) = statement.channel() { - account_info.channels.insert(channel, ChannelEntry { hash, priority }); + account_info.channels.insert(channel, ChannelEntry { hash, expiry }); } account_info .by_priority - .insert(PriorityKey { hash, priority }, (statement.channel(), statement.data_len())); + .insert(PriorityKey { hash, expiry }, (statement.channel(), statement.data_len())); } fn query(&self, hash: &Hash) -> IndexQuery { @@ -315,10 +312,6 @@ impl Index { match_any_topics: impl ExactSizeIterator, mut f: impl FnMut(&Hash) -> Result<()>, ) -> Result<()> { - if match_any_topics.len() > MAX_ANY_TOPICS { - return Ok(()) - } - let key_set = self.by_dec_key.get(&key); if key_set.map_or(0, |s| s.len()) == 0 { // Key does not exist in the index. @@ -421,7 +414,7 @@ impl Index { } fn make_expired(&mut self, hash: &Hash, current_time: u64) -> bool { - if let Some((account, priority, len)) = self.entries.remove(hash) { + if let Some((account, expiry, len)) = self.entries.remove(hash) { self.total_size -= len; if let Some((topics, key)) = self.topics_and_keys.remove(hash) { for t in topics.into_iter().flatten() { @@ -448,7 +441,7 @@ impl Index { if let std::collections::hash_map::Entry::Occupied(mut account_rec) = self.accounts.entry(account) { - let key = PriorityKey { hash: *hash, priority }; + let key = PriorityKey { hash: *hash, expiry }; if let Some((channel, len)) = account_rec.get_mut().by_priority.remove(&key) { account_rec.get_mut().data_size -= len; if let Some(channel) = channel { @@ -490,7 +483,7 @@ impl Index { let mut evicted = HashSet::new(); let mut would_free_size = 0; - let priority = Priority(statement.expiry()); + let expiry = Expiry(statement.expiry()); let (max_size, max_count) = (validation.max_size as usize, validation.max_count as usize); // It may happen that we can't delete enough lower priority messages // to satisfy size constraints. We check for that before deleting anything, @@ -498,18 +491,18 @@ impl Index { if let Some(account_rec) = self.accounts.get(account) { if let Some(channel) = statement.channel() { if let Some(channel_record) = account_rec.channels.get(&channel) { - if priority <= channel_record.priority { - // Trying to replace channel message with lower priority + if expiry <= channel_record.expiry { + // Trying to replace channel message with lower expiry. log::debug!( target: LOG_TARGET, "Ignored lower priority channel message: {:?} {:?} <= {:?}", HexDisplay::from(&hash), - priority, - channel_record.priority, + expiry, + channel_record.expiry, ); return Err(RejectionReason::ChannelPriorityTooLow { - submitted_expiry: priority.0, - min_expiry: channel_record.priority.0, + submitted_expiry: expiry.0, + min_expiry: channel_record.expiry.0, }); } else { // Would replace channel message. Still need to check for size constraints @@ -518,13 +511,13 @@ impl Index { target: LOG_TARGET, "Replacing higher priority channel message: {:?} ({:?}) > {:?} ({:?})", HexDisplay::from(&hash), - priority, + expiry, HexDisplay::from(&channel_record.hash), - channel_record.priority, + channel_record.expiry, ); let key = PriorityKey { hash: channel_record.hash, - priority: channel_record.priority, + expiry: channel_record.expiry, }; if let Some((_channel, len)) = account_rec.by_priority.get(&key) { would_free_size += *len; @@ -545,17 +538,17 @@ impl Index { // Already accounted for above continue } - if entry.priority >= priority { + if entry.expiry >= expiry { log::debug!( target: LOG_TARGET, "Ignored message due to constraints {:?} {:?} < {:?}", HexDisplay::from(&hash), - priority, - entry.priority, + expiry, + entry.expiry, ); return Err(RejectionReason::AccountFull { - submitted_expiry: priority.0, - min_expiry: entry.priority.0, + submitted_expiry: expiry.0, + min_expiry: entry.expiry.0, }); } evicted.insert(entry.hash); @@ -835,10 +828,10 @@ impl Store { account_rec .by_priority .range( - PriorityKey { hash: Hash::default(), priority: Priority(0) }.. + PriorityKey { hash: Hash::default(), expiry: Expiry(0) }.. PriorityKey { hash: Hash::default(), - priority: Priority(current_time << 32), + expiry: Expiry(current_time << 32), }, ) .map(|key| key.0.hash), @@ -2121,8 +2114,8 @@ mod tests { fn check_expiration_expires_statements_past_current_time() { let (mut store, _temp) = test_store(); - // The check_expiration function compares Priority(current_time << 32) against - // Priority(expiry) where expiry is the full 64-bit value with timestamp in high 32 bits. + // The check_expiration function compares Expiry(current_time << 32) against + // Expiry(expiry) where expiry is the full 64-bit value with timestamp in high 32 bits. // Statements with expiration timestamp < current_time will be expired. store.set_time(100); @@ -2430,7 +2423,7 @@ mod tests { #[test] fn check_expiration_expires_properly_formatted_statements() { - // With the fix (Priority(current_time << 32)), check_expiration properly + // With the fix (Expiry(current_time << 32)), check_expiration properly // compares timestamps and can expire statements submitted through normal flow. let (mut store, _temp) = test_store(); @@ -2452,7 +2445,7 @@ mod tests { store.check_expiration(); // Statement SHOULD be expired because check_expiration now compares - // Priority(2000 << 32) against Priority(1001 << 32 | 1), and + // Expiry(2000 << 32) against Expiry(1001 << 32 | 1), and // (2000 << 32) > (1001 << 32 | 1) let index = store.index.read(); assert!( diff --git a/substrate/client/statement-store/src/subscription.rs b/substrate/client/statement-store/src/subscription.rs index 6b30988ae6847..f3ae546083f88 100644 --- a/substrate/client/statement-store/src/subscription.rs +++ b/substrate/client/statement-store/src/subscription.rs @@ -32,6 +32,10 @@ // This value is generous to allow for bursts of statements without dropping any or backpressuring // too early. const MATCHERS_TASK_CHANNEL_BUFFER_SIZE: usize = 80_000; + +// Buffer size for individual subscriptions. +const SUBSCRIPTION_BUFFER_SIZE: usize = 128; + use futures::{Stream, StreamExt}; use itertools::Itertools; @@ -141,7 +145,7 @@ impl SubscriptionsHandle { topic_filter: CheckedTopicFilter, ) -> (async_channel::Sender, SubscriptionStatementsStream) { let next_id = self.next_id(); - let (tx, rx) = async_channel::bounded(128); + let (tx, rx) = async_channel::bounded(SUBSCRIPTION_BUFFER_SIZE); let subscription_info = SubscriptionInfo { topic_filter: topic_filter.clone(), seq_id: next_id, tx }; diff --git a/substrate/primitives/statement-store/src/lib.rs b/substrate/primitives/statement-store/src/lib.rs index a76d5d222356a..8104aa25b5d71 100644 --- a/substrate/primitives/statement-store/src/lib.rs +++ b/substrate/primitives/statement-store/src/lib.rs @@ -44,7 +44,8 @@ pub type Channel = [u8; 32]; /// Total number of topic fields allowed. pub const MAX_TOPICS: usize = 4; -/// Maximum number of topics allowed in `MatchAny` filter. +/// `MatchAny` allows to provide a list of topics match against. This is the maximum number of +/// topics allowed. pub const MAX_ANY_TOPICS: usize = 128; #[cfg(feature = "std")] diff --git a/substrate/primitives/statement-store/src/store_api.rs b/substrate/primitives/statement-store/src/store_api.rs index 61b910d7434d4..c26e719be0b59 100644 --- a/substrate/primitives/statement-store/src/store_api.rs +++ b/substrate/primitives/statement-store/src/store_api.rs @@ -15,12 +15,10 @@ // See the License for the specific language governing permissions and // limitations under the License. -use std::collections::HashSet; - -use sp_core::Bytes; - pub use crate::runtime_api::StatementSource; -use crate::{Hash, Statement, Topic}; +use crate::{Hash, Statement, Topic, MAX_ANY_TOPICS}; +use sp_core::Bytes; +use std::collections::HashSet; /// Statement store error. #[derive(Debug, Clone, Eq, PartialEq, thiserror::Error)] @@ -100,6 +98,9 @@ impl TryInto for TopicFilter { }, TopicFilter::MatchAny(topics) => { let mut parsed_topics = HashSet::with_capacity(topics.len()); + if topics.len() > MAX_ANY_TOPICS { + return Err(Error::Decode("Too many topics in MatchAny filter".into())); + } for topic in topics { if topic.0.len() != 32 { return Err(Error::Decode("Invalid topic format".into())); @@ -160,7 +161,7 @@ pub enum InvalidReason { /// The maximum allowed size. max_size: usize, }, - /// Statement has already expired. + /// Statement has already expired. The expiry field is in the past. AlreadyExpired, } From e3b135c1533a4672b844ccb067af59a0120b9eee Mon Sep 17 00:00:00 2001 From: Andrei Eres Date: Fri, 16 Jan 2026 15:53:05 +0100 Subject: [PATCH 43/81] Update --- substrate/client/statement-store/src/lib.rs | 21 ++++++------ substrate/frame/statement/src/lib.rs | 10 +++--- .../primitives/statement-store/src/lib.rs | 32 +++++++++++++++++++ .../statement-store/src/runtime_api.rs | 9 ------ substrate/primitives/storage/src/lib.rs | 22 ------------- 5 files changed, 47 insertions(+), 47 deletions(-) diff --git a/substrate/client/statement-store/src/lib.rs b/substrate/client/statement-store/src/lib.rs index 472eb9890af7a..09b920d1b9ef0 100644 --- a/substrate/client/statement-store/src/lib.rs +++ b/substrate/client/statement-store/src/lib.rs @@ -182,17 +182,16 @@ where Client: HeaderBackend + StorageProvider + Send + Sync + 'static, { fn read_allowance(&self, account_id: &AccountId) -> Result> { - use sp_storage::well_known_keys; + use sp_statement_store::{statement_allowance_key, StatementAllowance}; let block_hash = self.client.info().finalized_hash; - let key = well_known_keys::statement_allowance_key(account_id); + let key = statement_allowance_key(account_id); let storage_key = StorageKey(key); self.client .storage(block_hash, &storage_key) .map_err(|e| Error::Storage(format!("Failed to read allowance: {:?}", e)))? .map(|value| { - <(u32, u32)>::decode(&mut &value.0[..]) - .map(|(max_count, max_size)| ValidStatement { max_count, max_size }) + StatementAllowance::decode(&mut &value.0[..]) .map_err(|e| Error::Decode(format!("Failed to decode allowance: {:?}", e))) }) .transpose() @@ -1126,18 +1125,20 @@ mod tests { _hash: Hash, key: &sc_client_api::StorageKey, ) -> sp_blockchain::Result> { + use sp_statement_store::StatementAllowance; + assert_eq!(&key.0[0..21], b":statement-allowance:" as &[u8],); // Extract account ID (32 bytes) from the storage key let account_bytes = &key.0[21..53]; let account_id: u64 = u64::from_le_bytes(account_bytes[0..8].try_into().unwrap()); let allowance = match account_id { - 1 => (1u32, 1000u32), - 2 => (2u32, 1000u32), - 3 => (3u32, 1000u32), - 4 => (4u32, 1000u32), - 42 => (42u32, (42 * crate::MAX_STATEMENT_SIZE) as u32), - _ => (100u32, 1000u32), // Default for other accounts + 1 => StatementAllowance::new(1, 1000), + 2 => StatementAllowance::new(2, 1000), + 3 => StatementAllowance::new(3, 1000), + 4 => StatementAllowance::new(4, 1000), + 42 => StatementAllowance::new(42, (42 * crate::MAX_STATEMENT_SIZE) as u32), + _ => StatementAllowance::new(100, 1000), }; Ok(Some(sc_client_api::StorageData(allowance.encode()))) } diff --git a/substrate/frame/statement/src/lib.rs b/substrate/frame/statement/src/lib.rs index 3148e50ec9356..f263085cc5687 100644 --- a/substrate/frame/statement/src/lib.rs +++ b/substrate/frame/statement/src/lib.rs @@ -38,8 +38,6 @@ use sp_statement_store::{Proof, Statement}; // We do not declare all features used by `construct_runtime` #[allow(unexpected_cfgs)] mod mock; -#[cfg(test)] -mod tests; pub use pallet::*; @@ -148,16 +146,16 @@ pub mod pallet { ) -> DispatchResult { use codec::Encode; use sp_io; - use sp_storage::well_known_keys; + use sp_statement_store::{statement_allowance_key, StatementAllowance}; ensure_root(origin)?; let account_bytes: [u8; 32] = who.encode().as_slice().try_into().map_err(|_| Error::::InvalidAccountId)?; - let key = well_known_keys::statement_allowance_key(&account_bytes); - let value = (max_count, max_size).encode(); - sp_io::storage::set(&key, &value); + let key = statement_allowance_key(&account_bytes); + let allowance = StatementAllowance::new(max_count, max_size); + sp_io::storage::set(&key, &allowance.encode()); log::debug!( target: LOG_TARGET, diff --git a/substrate/primitives/statement-store/src/lib.rs b/substrate/primitives/statement-store/src/lib.rs index 0954653280ffd..6ef97132ed77a 100644 --- a/substrate/primitives/statement-store/src/lib.rs +++ b/substrate/primitives/statement-store/src/lib.rs @@ -45,6 +45,38 @@ pub type Channel = [u8; 32]; /// Total number of topic fields allowed. pub const MAX_TOPICS: usize = 4; +/// Statement allowance limits for an account. +#[derive(Encode, Decode, TypeInfo, Debug, Clone, Copy, PartialEq, Eq)] +pub struct StatementAllowance { + /// Maximum number of statements allowed + pub max_count: u32, + /// Maximum total size of statements in bytes + pub max_size: u32, +} + +impl StatementAllowance { + /// Create a new statement allowance. + pub fn new(max_count: u32, max_size: u32) -> Self { + Self { max_count, max_size } + } +} + +/// Storage key prefix for per-account statement allowances. +pub const STATEMENT_ALLOWANCE_PREFIX: &[u8] = b":statement-allowance:"; + +/// Constructs a per-account statement allowance storage key. +/// +/// # Arguments +/// * `account_id` - 32-byte account identifier +/// +/// # Returns +/// Storage key: `":statement-allowance:" ++ account_id` +pub fn statement_allowance_key(account_id: &[u8; 32]) -> Vec { + let mut key = STATEMENT_ALLOWANCE_PREFIX.to_vec(); + key.extend_from_slice(account_id); + key +} + #[cfg(feature = "std")] pub use store_api::{ Error, FilterDecision, InvalidReason, RejectionReason, Result, StatementSource, StatementStore, diff --git a/substrate/primitives/statement-store/src/runtime_api.rs b/substrate/primitives/statement-store/src/runtime_api.rs index f0e53f1133f6d..869fd4aa6dbbd 100644 --- a/substrate/primitives/statement-store/src/runtime_api.rs +++ b/substrate/primitives/statement-store/src/runtime_api.rs @@ -33,15 +33,6 @@ use Debug; #[cfg(feature = "std")] use sp_externalities::ExternalitiesExt; -/// Information concerning a valid statement. -#[derive(Clone, PartialEq, Eq, Encode, Decode, Debug, TypeInfo)] -pub struct ValidStatement { - /// Max statement count for this account, as calculated by the runtime. - pub max_count: u32, - /// Max total data size for this account, as calculated by the runtime. - pub max_size: u32, -} - /// An reason for an invalid statement. #[derive(Clone, PartialEq, Eq, Encode, Decode, Copy, Debug, TypeInfo)] pub enum InvalidStatement { diff --git a/substrate/primitives/storage/src/lib.rs b/substrate/primitives/storage/src/lib.rs index 5e7b7c1c3c4b7..9d2195c843312 100644 --- a/substrate/primitives/storage/src/lib.rs +++ b/substrate/primitives/storage/src/lib.rs @@ -185,8 +185,6 @@ pub struct StorageChangeSet { /// List of all well known keys and prefixes in storage. pub mod well_known_keys { - use alloc::vec::Vec; - /// Wasm code of the runtime. /// /// Stored as a raw byte vector. Required by substrate. @@ -211,26 +209,6 @@ pub mod well_known_keys { /// Encodes to `0x3a696e747261626c6f636b5f656e74726f7079`. pub const INTRABLOCK_ENTROPY: &[u8] = b":intrablock_entropy"; - /// Statement allowance prefix for per-account allowances. - /// - /// Full key: `":statement-allowance:" ++ account_id` (32 bytes) - /// - /// The value is SCALE-encoded as a tuple of two u32 values: (max_count, max_size). - pub const STATEMENT_ALLOWANCE_PREFIX: &[u8] = b":statement-allowance:"; - - /// Constructs a per-account statement allowance key. - /// - /// # Arguments - /// * `account_id` - 32-byte account identifier - /// - /// # Returns - /// Storage key: `":statement-allowance:" ++ account_id` - pub fn statement_allowance_key(account_id: &[u8; 32]) -> Vec { - let mut key = STATEMENT_ALLOWANCE_PREFIX.to_vec(); - key.extend_from_slice(account_id); - key - } - /// Prefix of child storage keys. pub const CHILD_STORAGE_KEY_PREFIX: &[u8] = b":child_storage:"; From f64814750d0fe710280e635434764f0091753c6f Mon Sep 17 00:00:00 2001 From: Andrei Eres Date: Mon, 19 Jan 2026 12:47:21 +0100 Subject: [PATCH 44/81] Update tests --- .../tests/zombie_ci/statement_store_bench.rs | 16 ++++++---------- substrate/client/statement-store/src/lib.rs | 11 ++++++----- 2 files changed, 12 insertions(+), 15 deletions(-) diff --git a/cumulus/zombienet/zombienet-sdk/tests/zombie_ci/statement_store_bench.rs b/cumulus/zombienet/zombienet-sdk/tests/zombie_ci/statement_store_bench.rs index b422ac5d699cb..1faa307666790 100644 --- a/cumulus/zombienet/zombienet-sdk/tests/zombie_ci/statement_store_bench.rs +++ b/cumulus/zombienet/zombienet-sdk/tests/zombie_ci/statement_store_bench.rs @@ -843,13 +843,11 @@ async fn statement_store_latency_bench() -> Result<(), anyhow::Error> { .duration_since(std::time::UNIX_EPOCH) .unwrap() .as_micros() as u64; - let test_run_id = Arc::new(test_run_id); let handles: Vec<_> = (0..config.num_clients) .map(|client_id| { let config = Arc::clone(&config); let barrier = Arc::clone(&barrier); - let test_run_id = Arc::clone(&test_run_id); let (keyring, _) = sr25519::Pair::generate(); let node_idx = (client_id as usize) % config.num_nodes; let rpc_client = rpc_clients[node_idx].clone(); @@ -879,8 +877,6 @@ async fn statement_store_latency_bench() -> Result<(), anyhow::Error> { let mut rounds_stats = Vec::new(); for round in 0..config.num_rounds { let round_start = std::time::Instant::now(); - - let send_start = std::time::Instant::now(); let mut msg_idx: u32 = 0; if client_id == 0 { @@ -892,18 +888,18 @@ async fn statement_store_latency_bench() -> Result<(), anyhow::Error> { let mut statement = Statement::new(); let topic_str = - format!("{}-{}-{}-{}", *test_run_id, client_id, round, msg_idx); + format!("{}-{}-{}-{}", test_run_id, client_id, round, msg_idx); let topic = blake2_256(topic_str.as_bytes()); let channel = blake2_256(msg_idx.to_le_bytes().as_ref()); // Use timestamp for priority - let timestamp_micros = std::time::SystemTime::now() + let timestamp_ms = std::time::SystemTime::now() .duration_since(std::time::UNIX_EPOCH) .unwrap() - .as_micros() as u32; + .as_millis() as u32; statement.set_channel(channel); - statement.set_priority(timestamp_micros); + statement.set_priority(timestamp_ms); statement.set_topic(0, topic); statement.set_plain_data(vec![0u8; size]); statement.sign_sr25519_private(&keyring); @@ -921,7 +917,7 @@ async fn statement_store_latency_bench() -> Result<(), anyhow::Error> { } let sent_count = msg_idx; - let send_duration = send_start.elapsed(); + let send_duration = round_start.elapsed(); let propagation_jitter = (client_id % 1000) as u64; tokio::time::sleep(Duration::from_millis( @@ -940,7 +936,7 @@ async fn statement_store_latency_bench() -> Result<(), anyhow::Error> { for msg_idx in 0..config.messages_per_client() as u32 { // Use same test run ID for topic lookup let topic_str = - format!("{}-{}-{}-{}", *test_run_id, neighbour_id, round, msg_idx); + format!("{}-{}-{}-{}", test_run_id, neighbour_id, round, msg_idx); let topic = blake2_256(topic_str.as_bytes()); for retry in 0..config.max_retries { diff --git a/substrate/client/statement-store/src/lib.rs b/substrate/client/statement-store/src/lib.rs index 09b920d1b9ef0..994e371913b32 100644 --- a/substrate/client/statement-store/src/lib.rs +++ b/substrate/client/statement-store/src/lib.rs @@ -60,9 +60,10 @@ use sp_blockchain::HeaderBackend; use sp_core::{crypto::UncheckedFrom, hexdisplay::HexDisplay, traits::SpawnNamed, Decode, Encode}; use sp_runtime::traits::Block as BlockT; use sp_statement_store::{ - runtime_api::{StatementSource, StatementStoreExt, ValidStatement}, + runtime_api::{StatementSource, StatementStoreExt}, AccountId, BlockHash, Channel, DecryptionKey, FilterDecision, Hash, InvalidReason, Proof, - RejectionReason, Result, SignatureVerificationResult, Statement, SubmitResult, Topic, + RejectionReason, Result, SignatureVerificationResult, Statement, StatementAllowance, + SubmitResult, Topic, }; use std::{ collections::{BTreeMap, HashMap, HashSet}, @@ -181,7 +182,7 @@ where BE: Backend + 'static, Client: HeaderBackend + StorageProvider + Send + Sync + 'static, { - fn read_allowance(&self, account_id: &AccountId) -> Result> { + fn read_allowance(&self, account_id: &AccountId) -> Result> { use sp_statement_store::{statement_allowance_key, StatementAllowance}; let block_hash = self.client.info().finalized_hash; @@ -202,7 +203,7 @@ where pub struct Store { db: parity_db::Db, index: RwLock, - read_allowance_fn: Box Result> + Send + Sync>, + read_allowance_fn: Box Result> + Send + Sync>, keystore: Arc, // Used for testing time_override: Option, @@ -372,7 +373,7 @@ impl Index { hash: Hash, statement: &Statement, account: &AccountId, - validation: &ValidStatement, + validation: &StatementAllowance, current_time: u64, ) -> std::result::Result, RejectionReason> { let statement_len = statement.data_len(); From bb47ba41957ff1793ed82b00e8bfa792f52f913f Mon Sep 17 00:00:00 2001 From: Andrei Eres Date: Mon, 19 Jan 2026 16:07:14 +0100 Subject: [PATCH 45/81] Remove unused code --- substrate/frame/statement/src/lib.rs | 5 -- substrate/frame/statement/src/mock.rs | 89 --------------------------- 2 files changed, 94 deletions(-) delete mode 100644 substrate/frame/statement/src/mock.rs diff --git a/substrate/frame/statement/src/lib.rs b/substrate/frame/statement/src/lib.rs index f263085cc5687..b4c9c2bdae498 100644 --- a/substrate/frame/statement/src/lib.rs +++ b/substrate/frame/statement/src/lib.rs @@ -34,11 +34,6 @@ use frame_support::{pallet_prelude::*, traits::fungible::Inspect}; use frame_system::pallet_prelude::*; use sp_statement_store::{Proof, Statement}; -#[cfg(test)] -// We do not declare all features used by `construct_runtime` -#[allow(unexpected_cfgs)] -mod mock; - pub use pallet::*; const LOG_TARGET: &str = "runtime::statement"; diff --git a/substrate/frame/statement/src/mock.rs b/substrate/frame/statement/src/mock.rs deleted file mode 100644 index db9d19dbbab73..0000000000000 --- a/substrate/frame/statement/src/mock.rs +++ /dev/null @@ -1,89 +0,0 @@ -// This file is part of Substrate. - -// Copyright (C) Parity Technologies (UK) Ltd. -// SPDX-License-Identifier: Apache-2.0 - -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -//! # Statement pallet test environment. - -use super::*; - -use crate as pallet_statement; -use frame_support::{ - derive_impl, ord_parameter_types, - traits::{ConstU32, ConstU64}, -}; -use sp_core::Pair; -use sp_runtime::{traits::IdentityLookup, AccountId32, BuildStorage}; - -type Block = frame_system::mocking::MockBlock; - -pub const MIN_ALLOWED_STATEMENTS: u32 = 4; -pub const MAX_ALLOWED_STATEMENTS: u32 = 10; -pub const MIN_ALLOWED_BYTES: u32 = 1024; -pub const MAX_ALLOWED_BYTES: u32 = 4096; - -frame_support::construct_runtime!( - pub enum Test - { - System: frame_system, - Balances: pallet_balances, - Statement: pallet_statement, - } -); - -#[derive_impl(frame_system::config_preludes::TestDefaultConfig)] -impl frame_system::Config for Test { - type AccountId = AccountId32; - type Lookup = IdentityLookup; - type Block = Block; - type AccountData = pallet_balances::AccountData; -} - -#[derive_impl(pallet_balances::config_preludes::TestDefaultConfig)] -impl pallet_balances::Config for Test { - type ExistentialDeposit = ConstU64<5>; - type AccountStore = System; -} - -ord_parameter_types! { - pub const One: u64 = 1; -} - -impl Config for Test { - type RuntimeEvent = RuntimeEvent; - type Currency = Balances; - type StatementCost = ConstU64<1000>; - type ByteCost = ConstU64<2>; - type MinAllowedStatements = ConstU32; - type MaxAllowedStatements = ConstU32; - type MinAllowedBytes = ConstU32; - type MaxAllowedBytes = ConstU32; -} - -pub fn new_test_ext() -> sp_io::TestExternalities { - let mut t = frame_system::GenesisConfig::::default().build_storage().unwrap(); - let balances = pallet_balances::GenesisConfig:: { - balances: vec![ - (sp_core::sr25519::Pair::from_string("//Alice", None).unwrap().public().into(), 6000), - ( - sp_core::sr25519::Pair::from_string("//Charlie", None).unwrap().public().into(), - 500000, - ), - ], - ..Default::default() - }; - balances.assimilate_storage(&mut t).unwrap(); - t.into() -} From 588ed6390da967dea8c71bbac766bc6363fe8b84 Mon Sep 17 00:00:00 2001 From: "cmd[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Mon, 19 Jan 2026 15:21:30 +0000 Subject: [PATCH 46/81] Update from github-actions[bot] running command 'prdoc --audience node_dev --bump minor' --- prdoc/pr_10787.prdoc | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) create mode 100644 prdoc/pr_10787.prdoc diff --git a/prdoc/pr_10787.prdoc b/prdoc/pr_10787.prdoc new file mode 100644 index 0000000000000..55054bcc83f41 --- /dev/null +++ b/prdoc/pr_10787.prdoc @@ -0,0 +1,28 @@ +title: 'statement-store: validation without runtime' +doc: +- audience: Node Dev + description: |- + # Description + + Fixes https://github.com/paritytech/polkadot-sdk/issues/10799 + + Removes `validate_statement` runtime API call from the validation pipeline. Validation now happens on the node side via direct signature verification and storage reads for account quotas. This removes slow runtime validation from statement-submission hot path. + + ## Integration + + - `validate_statement` runtime API is removed + - Node validates signatures directly, reads quotas from storage + - Use root extrinsic `set_statement_allowance(who, max_count, max_size)` to configure account quotas in tests +crates: +- name: sc-statement-store + bump: minor +- name: pallet-statement + bump: minor +- name: sp-storage + bump: minor +- name: sp-statement-store + bump: minor +- name: people-westend-runtime + bump: minor +- name: polkadot-omni-node-lib + bump: minor From 3e07573e0bc26f726e00f776a441634c4c1b2d5b Mon Sep 17 00:00:00 2001 From: Andrei Eres Date: Mon, 19 Jan 2026 17:04:29 +0100 Subject: [PATCH 47/81] Address clippy --- cumulus/parachains/runtimes/people/people-westend/src/lib.rs | 4 ---- 1 file changed, 4 deletions(-) diff --git a/cumulus/parachains/runtimes/people/people-westend/src/lib.rs b/cumulus/parachains/runtimes/people/people-westend/src/lib.rs index a936a5bbf9cb4..0fd066efd654a 100644 --- a/cumulus/parachains/runtimes/people/people-westend/src/lib.rs +++ b/cumulus/parachains/runtimes/people/people-westend/src/lib.rs @@ -65,10 +65,6 @@ use sp_runtime::{ ApplyExtrinsicResult, }; pub use sp_runtime::{MultiAddress, Perbill, Permill}; -use sp_statement_store::{ - runtime_api::{InvalidStatement, StatementSource, ValidStatement}, - SignatureVerificationResult, Statement, -}; #[cfg(feature = "std")] use sp_version::NativeVersion; use sp_version::RuntimeVersion; From 77108722d01311b96229d7024e8af24c924c1a7a Mon Sep 17 00:00:00 2001 From: Andrei Eres Date: Mon, 19 Jan 2026 17:27:57 +0100 Subject: [PATCH 48/81] Update prdoc --- prdoc/pr_10787.prdoc | 14 ++++---------- 1 file changed, 4 insertions(+), 10 deletions(-) diff --git a/prdoc/pr_10787.prdoc b/prdoc/pr_10787.prdoc index 55054bcc83f41..8841fcb812891 100644 --- a/prdoc/pr_10787.prdoc +++ b/prdoc/pr_10787.prdoc @@ -2,17 +2,11 @@ title: 'statement-store: validation without runtime' doc: - audience: Node Dev description: |- - # Description + Removes `validate_statement` runtime API call from the validation pipeline. + Validation now happens on the node side via direct signature verification + and storage reads for account quotas. This removes slow runtime validation + from statement-submission hot path. - Fixes https://github.com/paritytech/polkadot-sdk/issues/10799 - - Removes `validate_statement` runtime API call from the validation pipeline. Validation now happens on the node side via direct signature verification and storage reads for account quotas. This removes slow runtime validation from statement-submission hot path. - - ## Integration - - - `validate_statement` runtime API is removed - - Node validates signatures directly, reads quotas from storage - - Use root extrinsic `set_statement_allowance(who, max_count, max_size)` to configure account quotas in tests crates: - name: sc-statement-store bump: minor From 4b73fcc764fb2aed4cd53eaa2c2e02967beecf25 Mon Sep 17 00:00:00 2001 From: Andrei Eres Date: Mon, 19 Jan 2026 17:54:54 +0100 Subject: [PATCH 49/81] Fix --- substrate/frame/statement/src/lib.rs | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/substrate/frame/statement/src/lib.rs b/substrate/frame/statement/src/lib.rs index b4c9c2bdae498..d4c8701465f6d 100644 --- a/substrate/frame/statement/src/lib.rs +++ b/substrate/frame/statement/src/lib.rs @@ -48,10 +48,7 @@ pub mod pallet { pub type AccountIdOf = ::AccountId; #[pallet::config] - pub trait Config: frame_system::Config - where - ::AccountId: From, - { + pub trait Config: frame_system::Config { /// The overarching event type. #[allow(deprecated)] type RuntimeEvent: From> + IsType<::RuntimeEvent>; From 7ea43d7d8aa6a2d8d04f9986b48890b5b57741c1 Mon Sep 17 00:00:00 2001 From: Andrei Eres Date: Wed, 21 Jan 2026 11:56:21 +0100 Subject: [PATCH 50/81] Use injected allowances in benchmarks --- .../zombie_ci/people-westend-local-spec.json | 84 +++++++++++++ .../tests/zombie_ci/statement_store_bench.rs | 116 ++++++++++++++---- 2 files changed, 177 insertions(+), 23 deletions(-) create mode 100644 cumulus/zombienet/zombienet-sdk/tests/zombie_ci/people-westend-local-spec.json diff --git a/cumulus/zombienet/zombienet-sdk/tests/zombie_ci/people-westend-local-spec.json b/cumulus/zombienet/zombienet-sdk/tests/zombie_ci/people-westend-local-spec.json new file mode 100644 index 0000000000000..1eb8f73b2de62 --- /dev/null +++ b/cumulus/zombienet/zombienet-sdk/tests/zombie_ci/people-westend-local-spec.json @@ -0,0 +1,84 @@ +{ + "name": "Westend People Local", + "id": "people-westend-local", + "chainType": "Local", + "bootNodes": [ + "/ip4/127.0.0.1/tcp/30333/p2p/12D3KooWBxZBmzA5iHwEt6rVo13zyYweQh2wGJMxMDLPoyqhwVqm" + ], + "telemetryEndpoints": null, + "protocolId": null, + "properties": { + "ss58Format": 42, + "tokenDecimals": 12, + "tokenSymbol": "WND" + }, + "relay_chain": "westend-local", + "para_id": null, + "codeSubstitutes": {}, + "genesis": { + "raw": { + "top": { + "0x0b20199ace3564d0964e2c4d4a9ba4694e7b9012096b41c4eb3aaf947f6ea429": "0x0000", + "0x0d715f2646c8f85767b5d2764bb2782604a74d81251e398fd8a0a4d55023bb3f": "0xec030000", + "0x0d715f2646c8f85767b5d2764bb278264e7b9012096b41c4eb3aaf947f6ea429": "0x0000", + "0x15464cac3378d46f113cd5b7a4d71c84476f594316a7dfe49c1f352d95abdaf1": "0x00000000", + "0x15464cac3378d46f113cd5b7a4d71c844e7b9012096b41c4eb3aaf947f6ea429": "0x0200", + "0x15464cac3378d46f113cd5b7a4d71c845579297f4dfb9609e7e4c2ebab9ce40a": "0x088eaf04151687736326c9fea17e25fc5287613693c912909cb226aa4794f26a48d43593c715fdd31c61141abd04a99fd6822c8558854ccde39a5684e7a56da27d", + "0x15464cac3378d46f113cd5b7a4d71c84579f5a43435b04a98d64da0cefe18505": "0x00a0acb9030000000000000000000000", + "0x1809d78346727a0ef58c0fa03bafa3234e7b9012096b41c4eb3aaf947f6ea429": "0x0000", + "0x26aa394eea5630e07c48ae0c9558cef734abf5cb34d6244378cddbf18e849d96": "0x0000000002c67d3979c4", + "0x26aa394eea5630e07c48ae0c9558cef74e7b9012096b41c4eb3aaf947f6ea429": "0x0000", + "0x26aa394eea5630e07c48ae0c9558cef75684a022a34dd8bfa2baaf44f172b710": "0x01", + "0x26aa394eea5630e07c48ae0c9558cef78a42f33323cb5ced3b44dd825fda9fcc": "0x4545454545454545454545454545454545454545454545454545454545454545", + "0x26aa394eea5630e07c48ae0c9558cef7a44704b568d21667356a5a050c118746b4def25cfda6ef3a00000000": "0x4545454545454545454545454545454545454545454545454545454545454545", + "0x26aa394eea5630e07c48ae0c9558cef7a7fd6c28836b9a28522dc924110cf439": "0x01", + "0x26aa394eea5630e07c48ae0c9558cef7b99d880ec681799c0cf30e8886371da9007cbc1270b5b091758f9c42f5915b3e8ac59e11963af19174d0b94d5d78041c233f55d2e19324665bafdfb62925af2d": "0x00000000000000000100000000000000000064a7b3b6e00d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080", + "0x26aa394eea5630e07c48ae0c9558cef7b99d880ec681799c0cf30e8886371da923a05cabf6d3bde7ca3ef0d11596b5611cbd2d43530a44705ad088af313e18f80b53ef16b36177cd4b77b846f2a5f07c": "0x00000000000000000100000000000000000064a7b3b6e00d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080", + "0x26aa394eea5630e07c48ae0c9558cef7b99d880ec681799c0cf30e8886371da932a5935f6edc617ae178fef9eb1e211fbe5ddb1579b72e84524fc29e78609e3caf42e85aa118ebfe0b0ad404b5bdd25f": "0x00000000000000000100000000000000000064a7b3b6e00d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080", + "0x26aa394eea5630e07c48ae0c9558cef7b99d880ec681799c0cf30e8886371da94f9aea1afa791265fae359272badc1cf8eaf04151687736326c9fea17e25fc5287613693c912909cb226aa4794f26a48": "0x00000000010000000100000000000000000064a7b3b6e00d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080", + "0x26aa394eea5630e07c48ae0c9558cef7b99d880ec681799c0cf30e8886371da96f2e33376834a63c86a195bcf685aebbfe65717dad0447d715f660a0a58411de509b42e6efb8375f562f58a554d5860e": "0x00000000000000000100000000000000000064a7b3b6e00d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080", + "0x26aa394eea5630e07c48ae0c9558cef7b99d880ec681799c0cf30e8886371da98578796c363c105114787203e4d93ca6101191192fc877c24d725b337120fa3edc63d227bbc92705db1e2cb65f56981a": "0x00000000000000000100000000000000000064a7b3b6e00d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080", + "0x26aa394eea5630e07c48ae0c9558cef7b99d880ec681799c0cf30e8886371da9b0edae20838083f2cde1c4080db8cf8090b5ab205c6974c9ea841be688864633dc9ca8a357843eeacf2314649965fe22": "0x00000000000000000100000000000000000064a7b3b6e00d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080", + "0x26aa394eea5630e07c48ae0c9558cef7b99d880ec681799c0cf30e8886371da9b321d16960ce1d9190b61e2421cc60131e07379407fecc4b89eb7dbd287c2c781cfb1907a96947a3eb18e4f8e7198625": "0x00000000000000000100000000000000000064a7b3b6e00d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080", + "0x26aa394eea5630e07c48ae0c9558cef7b99d880ec681799c0cf30e8886371da9de1e86a9a8c739864cf3cc5ec2bea59fd43593c715fdd31c61141abd04a99fd6822c8558854ccde39a5684e7a56da27d": "0x00000000010000000100000000000000000064a7b3b6e00d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080", + "0x26aa394eea5630e07c48ae0c9558cef7b99d880ec681799c0cf30e8886371da9e5e802737cce3a54b0bc9e3d3e6be26e306721211d5404bd9da88e0204360a1a9ab8b87c66c1bc2fcdd37f3c2222cc20": "0x00000000000000000100000000000000000064a7b3b6e00d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080", + "0x26aa394eea5630e07c48ae0c9558cef7b99d880ec681799c0cf30e8886371da9edeaa42c2163f68084a988529a0e2ec5e659a7a1628cdd93febc04a4e0646ea20e9f5f0ce097d9a05290d4a9e054df4e": "0x00000000000000000100000000000000000064a7b3b6e00d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080", + "0x26aa394eea5630e07c48ae0c9558cef7b99d880ec681799c0cf30e8886371da9f3f619a1c2956443880db9cc9a13d058e860f1b1c7227f7c22602f53f15af80747814dffd839719731ee3bba6edc126c": "0x00000000000000000100000000000000000064a7b3b6e00d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080", + "0x26aa394eea5630e07c48ae0c9558cef7f9cce9c888469bb1a0dceaa129672ef8": "0x26513e003870656f706c652d77657374656e64", + "0x2aeddc77fe58c98d50bd37f1b90840f94e7b9012096b41c4eb3aaf947f6ea429": "0x0200", + "0x3a63": "0x", + "0x3a636f6465": "0x52bc537646db8e0528b52ffd0088942b00e66d9637307373c000430c0e06060606060616284ad7df3bb6bb6dd6acc9dbc51f71500055aafffff243ec76ff775fd7ddd7d7dd2b7792494a99028a0099007e0019053a4090d9a480309263a7ca16b9e111c422a991ddf785180c3d5275a52c7120e2ec6d0c051c9853291c3268910686dd28e6996cd38d5a290cc594964d580cc9512355d96306cc75236087f68d45adf22acb955503b20b547eeaa52ba7d5ded0d5f46c65afb2aee66c4b1bbba45ead56d67b6949dd3e4b4a2a67599695d4e524c1589cd9ddf31b710799033b0decf0692b9542898f90065548433aa0f0b6218c44da28a3b017731af109e2eb4850461c2991320daa7cd248b0dbc6ee0b79781d2a6404f9e060b8f0d0187514705e77f26470297319005e9ec99ea6c2df03c804762653e8298c44a68809128b19142b02b83c8ee186476ecb9a081502324a6d2212a58e44040232e2b21692a91a719b10f145c118412ea0361ce379a14607cee2424d971ad89b098406e8b75b6abfbad73aed7ceae2d33be3deb7dceff44f0bcb4a864aca9c1f143f31c1708cf99975d68fcf7bdbbf6bfd2e993edd3392dbd7deb73eadfa16b35fadb5ef8ecd11cf53ecfe9539adee9352faffb4dddbe949ce894e55685a23865ffebe7e0e9dc59286b7d0f3704884cb62e6c4307722a901a10ab46e6c507abb0fdc02649f60fa45ffb32bc3dc93f0b4b6c7dddfdd03f27c8587c26335122a3e81e22da8eb5babff5a3be70c850604fe2f462fdad6e74f4bbb5eecfa6dead4f2dad57dce4bffea2ca358f6f3baaabdd8bf584df0d4a029adb4b3ec5a4ae775d5bef7628fbd9d3dafedb637bbaec504ae6559ff0181b3a81169352322a2a0204941d201e110524e42693de2f1185121839433646624181191519082a4b01f071d06025120d9c130502408ca9ffe8eb33b855b1402a7c2d93b31318ad38e81abfb53b43eadb9468ea8263069f4a536c2b60c84e1f1828551e14204b61cbbaa8a71ae2d1407e1830682f15d12546bc8ca01c87ef663bfb953cca0fe1691e10a6c67df4cd0aa8077b86d1a8da5a06acd5288a7eb17df114b2d4bb1a6c3689cbf23a4145d3644778bc46e191f3c2f39fa5014cbebca114f1796a21b022de2ac823281bb906b28f1e1cf7a338e638509bf438f890f24914c048423c1ceba1a4d70f092a73ddca3e0dc2472d5e3a3b94296fc341b66334e610b17faaa58a06dc106441f51460382e0fda2816f0ede48cad853da7763454fbd0264ca243829a0991907d16bda60daec036f2827f85a441f0ea75c8747470364fcce5f2376429c381842abf65e091c3055560de96f07d51bf438bbc7f9bbb9d29cd751ac9b97916fc84d9bd91320215fdc493dd2d3d734c6fe4de129b18160b8eec27c3c1764bde450ccaae6e13231ee3c864e04fbb0c80c0552d720e24a00456e26e954c9c12e078a835f99277c7996f60ce3e2235ac43b26a37df8f7900b9e58704042f80ea92d99e4847bc369b9009e09e9888afc54b61147f1cbd68c094d5f02770c9bec540f8e87f6b181ef92e2b1cc6b866bd1e482e1f2dcf817ab10071f7a9a74a18da7719d13206236f713eee3c426d3d86fd3316e56dadd6f5c12722cb2cec255f6db9d6ce804448426d23b9a3cabd8c014cd4237108f37d5f0ca897b812013376ca01e3c2c1f53d4223aa8baa897999ff9248d1e821403baefb42a962faf301f0761b4d899ec67878cec149e6319da81026112f005e09efb75a74100fb0fd4374ca184e6f52982413a2dae0d19c01170bbad90e28e9014fbbfe0a61fe0179496968d4515b2df1737c8d5d54f5bfd41a4a67b148e70a61ca0cf4a20b10668b8d98978011cd8309f2162b12f93331441b070189b2ead05af560dab00db1a13208fa2a27fe05a59f4957b922f0e340af3b86475250860c4766018c2bf36609b9e95f7237464424f329c953ec2151b5f94ff2c250026de491ac0dc34075053fcbfa288371bd93dc0c28c34796a64adacb4101942004000400076da342dea29f3590d242a6c613d134e4e9fbb23c6a0b4c0f85de1d3becda78ce64798118c300543c4f227b27584bc6c3d9a7b4179cda989e92690b2cf5c61d78f404ccd7b13423e08d1cd3965bff888c86cfccfd22f8164b1b1996fd38bcbf474e191c6d5d0e285a40b4025a07ac4121d15ecaa3f94f10481f6dcc92c255bab520993c687c67477e85c9ff238b966eb1c9b3c2e2ef4e6ca35e43a1e8f27379ca9c3ee88e7b86dfc680cc9a40c2c24222148c9e976adfbdd919423ded18d69dd9f09bcda5da153d6dca565955cba3f2dd6451d913de07676f51b39309747f62359ac2a0858beceeb4104c224c39d8cc391210b2f08c5cf7ce623496aa6d4933abbf6ecd61b2181b3a8b1599b4d92c661148618631042ebd2a9120831a61432a488888848282249a4244941b21c59a6c5de16d7c07cfa983db0c60dac89ad12ab1a62791338ed4b88458f66be5ad457879bc609aa728ff79c62e1b462f6998f7ac57f9e810a689b8fa04f4391a207b9fd5d4452de7ba8a223a3e33c4c01e47a05eeeedfd2cff7444b6eb50f1095385c3c63122b7353d663d28dd64fc30f9c6f5e4d64353e97e84e63629b26f82795870f2396e76cced14a22e59003f462c8c1c2af79172e9bb4c322d095fe36bb4b3697094d67e3074c865ee62626d62570ea181db5aea956fc59fcb749e716aab9cfeb5f2992b9a5975729bbab1521c4563e074dbc55727094bf08e15484b31b972e45e601b7acf38162cfeb19ec963a936284bb59c8eb2ae57924464243c9ee30e0f8eda8cb984d6757aa0ddb059a86d9a665fb32f50f4530f2a686f2cdfe67e78f6fa97f30eecf58b93125db8e374e2a5d78adfff2fea4fb1e6905fd53ca126147350f0b86d3853119d6a09e4e1bce489e53ab96f520ced74ebf2372fe15f6660eb8e10837a8bb53e9acb9a5135538bc00d574d585b47f13a54924c221ee3a2c56a31068d2306243758f3d988f9f6a7c1a963fff797b00927b3da7af7fd8ed839d308ff4150e2608afb37f673c790ff0f8b805bfa8e364844fa116ba19e1b96fd4992029942f1f6d91db5c8d06ffdb9817219a550b06297e08f9c98e1be8ac12a65ffafff0072fe1ebb1b345a897eca62c5f6f4e501c29d9d653302f678d0e10bbb3b5c01c3635691e37ae7d17cc142013d24f940d6fde91cf326b704a39a9653e51125de8e1db0167a6204b69a4419b219b3856ecd347cc10649e97ff448fe88b642f66df6c391e2b4c5e68b08bcd0504bd536a25c7c95bca8e4132edd4a18ba79973529d474e4c648bd648f6a115ec219bfbbffeed589b6f2e7b9397bb8e46e983c2dd81a22cddd8a7351978328220323c91f55ad5538b7a0bec72ca64dd81832c95054c8863047459076d628851b936ec4414770ed55a65899e889d87abccdedf5df5e44ba97c6881999366be8de71b59a2289946fe5317c1184c222cbd1bd0424619a4811d42fdfde7e11d3f4a3f6ea40de857a2985d581e60e309f4c9f9069195888b435013d2395129241999243628a4776b692fe280ecfc5a671aae1a09c6062e44653c02e1cc0c4ac6420f7eb8e999da0fd550de6c70a0bbba782aa1820e2d52ec939a888c4da04dcde0fd58677fd20c1e0026207338f0dae64c616598593807db30000000000000d7f372876c0e11578cb66fa06e9dc8f25caf0da04cb54de42f04c1c9901f26d51487888890146a00610061006b8dcc26a9a0313003d0b595c535eb185863c9c8ccbc1850618c69c5b43c9d0710ba8383e79ebbd8e1277e603810127c1205036218404030ca64e2c92703418cd717bec4d708131078892620ecf5891d20c660200813f8c2febc71ec9718822308360876188a204c1c033cd932f84ee7489b6d69f38714b80e8c795a04cf69dc4df37affe50d1ca7d59423e637ba755d21517b73b63f29bf5ccf8b9a280a85dbb48e546bb5918cbe6a4976f67c930aaf69fc6636d5f496577be0345d9e98347533abae3384f6fe5cb1190de6bb583852e3d32c6b147ed4696da7fecab2b3240f6ed428f9174d45d27b670d5e54960e4ed4388c77ff81ff04c287da457d9c9aa68c40b850fffa6b09ad7c9bcdd22e3ca831eefeed0235fedb83ffa0666dc17dfa9a38ef4ef5373618bca7b17b1e96e3c2afdaaa2d89ad79ceca9985576535d5fdf979c2a9fa5bd4c799c46649f919af2a2dc2a71a4d53da4d41265caa113caa4b7435d9a91d090ed5b8c53c21fca973f745e64e14ded4185b52f7b9ab92e14c1abe7439946ed986fe99d4e9cd1680d9a82141a714d14892a4321d308410c450d1a60d42f216e618638644464652525090c2cebe0198aaf77bd61c10c3495f69925ce7ef8b5590f63492ba4dc5b841ec2d1227b11f62414ae96b0763b7e2e058ef0930c38dac4d3677047680b35eb01755628b334171444e4b13cb412341c85f79bdb4d6ae18d062d1c2b92efa028e3faf3390876364365ce27cdfaa06abd79c23826286077972c8df5cf8c1a6da87288a33e464450c89e031267d01fd0c440711651f6da8400ba6c843631a570222325325869acfa2241ccb36ab9720adb5e1e808b9a9ad843290ab5e8511395522be790673d622f9c7d4b667d16b2a268c41f135684f6aa833d2a8323f4f801a0e12720a230a54e3907772067278de92ea517e728cd6df3db178dda890388d8d0e1962d5903e8354e0e2f94181cfacac0816d03b1b4ffe3b478ace48f7e5c90136342ec85fc91a1596b8a7d22ba50e26b170d939bb363cd8137a0eb6407f4ba07e6efff3c6b37b60f9e42ecf84ee679f8dda619722de5a301d0ede8d7cc82d34b2ed9e1886a80ee75b94fc7afd56721eb99cf3801a6be60416e41199095041434d03e3de9d0090949f018a723b6c86ec687436e8159ef9659c048ce4ea428a8d9e3c481cc9e3edc65ce2925d61c5aebcaad7715443ec8cddd2987b48d18baa18845eab434761ee51598c66081546fb0a68015c7a00aae65c364c4050b96d3209d0eb9dafb7bb5396349fce01486d6eceb5ec5c6b7d3d01a8d3c203b54f247abc4a7f13a8d40f119d81a63e30e8e3ed694ac5ee8e307a9a44231dd53962731dd420bd2fb25392590353034c038e54a2aa20d38bd985df9003653e6fc78461b63065982e4c1b260d738799c30cc114c1ac61de3067983a4c1cf811865ca2c17cb01d8c07ef2dcf9831cc17d805dc027e01b358a67d13f00af86ca9b44c824fc0296034980d265b2e2d91521c0b38743aee379a622987ef8c889a3ce7ea89dc10d17adf729ee99e7b84c228f78944ee8fcf26f9cf8ad3dc930de5bcbac924cebe71d37d40c980cdb002229f4c32e1dde2eec16135d355450a0d27a335c7d7204268c2873d4b2973a1742d9d8e49f4c6c92e4470ec356cc314b214420f8cb29d2cf761d3e49bbac974329e95662a77cfd53f2258cfab02723cadaa6029604c121e163da11fd403b12b7648bd0cdeaa5f5e2a91aca7933d4364cd444ed68b23771b76a37e232f6675ae6b2229b23972a1be85bd82bf602e780cee82b5e441aa945c97329822f856b95658b7141905e02840867ba6dfc02a667d52baa468720b5b5086a113ca82d83791c16b5b16e7c367c42fcbd31c1329c4e2611f6d1af010cdc2d7eb4dc3aec15ed2b314339117a6d153ca8ed4cdb07acd3f1d464a98dea43f7d7cc162d89f6c8fb351c7a117d64e236830982cc3e7c0234560f43a3d846e83d288f764777420270d6ad3dbf826be8aef8cf7705fb1abbd732fe21bf8eebd856f8b57ef95f10ebe7f2fe0dbf71abe84afdfcbf6b6bd652fda9be25dc392e13f6fd715ee2df1867869dea377c4dbf30abd416fce2be225f142bd3e6fcd0bf422bd4c2fcedbf416bd46efd2abf312bd3cafd3bbf3debc36efd09bf42abd3fef13eee3b66853b874ee9c2be7beb966ee9a4be68eb965ae986bc27d7255e036ae97bbe572b95aee942be522b94aae93fbe52ea91c29a59450ca28659332e75ea17451c2286b942fca185fc33fee77f80e9ee321bdda2de765f8371fe8053d5a9ba892e3f55ac596b1756c69dc2a7c59db78adf389def066f375beadb5e1ddbc088fe7ef3c97cf6b173dd51d03e7f14d779f87f12f5ec6c778383fc323e23afecc1f2a6fbc59fbd40ab5416d5c0bd77acdd0feb43eed4dfbd2c2a070028b0925543082082180f001091d70b081061960708105142ca0c089d544e56ab7394c16cb7625d97e9c00bcf203102a7820420920402c5b25081002586532a76c22096202163ca080441e4b86a082072e88d080882c96820703c861491754f83258d285165a30a1850664f92b224a36a155a6e4c487f92d2139420ce9a15a8f0ef2a8aaf768219a8706f2a0a2776abc660efa87f6a9efe89e3a6f866147dd52cd1b4e19e74c6d47eb346d7c9a3f537f4d17a735a634681c91a42623dd322d0ce9ab02ce68f7d193f1d90822081248c354fda040b557b510843024cf2a77d7cc6ed5c02964881e3488ce9906de4cd09f5b09da3337812c82248218de4d53478f269aa616bb77aa8373da14b1e9e8110562637a78df803c86ec59f3aa843694c71348e3f4af860b116c42e24dcd1a21814d1c4d1a9c30ce97e6a393a619d9a4e1ac71badc50f788f751de8b0186121454a66754dc36f37c887d8cc96d2158215621542153f756470f0e661fc672b8137c055b41d1a04b4d456811d40c7a062d839e80e3a049502528d13ff1fda048d02328d30ffc84d49d698c27640723288ef781ce40653c935ff24a3ec923f9236fe449f8224fe447f8212fe4833c90fff13d9ec7ef781d9fa30273abc141b70e1507c699a750c8e010f0d1bc042781008220d2337011ac03a20813c139f0cb2ff1617cbd0ff6a1bed307fc4f5fe9abf8631fee6ffdbb4ff5ff7ed297fa5e7ff0a3f8479febef7db54fe2aff858bfec6bfdab6f66bd3be9836dac7d2774b0d0a7fb90dfc56ffa5fbfebd7cd6c277cb008d808fe81ab60a0cff4dfbee09f0381fcb801dfc02e6ddb5471ea073207c246bb508740644062a68034d8476415c63d63d798aaf8b0f3ca7d10795c7974796c796879787d087970797c7d4c799855ff3c4ae0611e601e562747d42d3b87eca66ca15251b9a8575836aa16b58b8af551f7e144ada296a04e51adb0279a864dc22b9e7c48cdbaa6a0463909ad3e7953ce24c7b0115580ae72cec1101adcd176fc48ea10f8813462268dec208833ba492e15de78cd9b46de7e338a0e4fcfc8a78d29e35c656dbb87a03e77d1cd63ad83ea8cac49fde69e698a26dc74ee432b856a0a67d282ea3482a2f9860b4ee3464e509f52b652aca66d236954a514af0ec70ec60ec50ec48ec30ec30ec28ec03baaa3e66ae75c742a3a139d88ce19cec311154e194e43a74d33d13976afdd48ce30a7ce34c7490c2797f3c6d9e5f472e67c16bff03fde391fefa77da39ff7a77ed6b7fa317e8a3bc69ae2c6b94984f039c59c3b4e30678cb3a55943dba442a25e94fdfc0d9c902a6427a224328b98721f62986128018bb81d7e87d7e158380c5c0bdfc2ad70173819fe02cfc2bf70253c0a87c29370a4760d3f6abf70a6f6adddc26bf0169ce6febb016fbdbbee76bb512ccdeeaebb6aa6babd6eae7b2ac4ef2e3bd1bbb1fedab7fb6c9feca3b9611d08e517542f2b8c55c47485dce3e67d70fcd0480da2f27c98f920d3aef800a37bb9782788d6476b0d142c2b640c167f9dc8d022ea366b0c5bce0e3b491c29fbf02a31b307e53866d0471753c80ea42e75182c49bbb28d9cc159f25bc9997dc2e632816167d9587695bd65a2644bd95af6d4affa2dbedb47fa7d5f0cca0315820efda82ff7973edf6ffb863fec9ffdb85f648fb06fa62c5eb8299b499ac95a6d58d3503b9afcd45d264075616d5697d57e75637d5613d669758d9aaefeabc96a1bb55a5d57d75043d67c358d7aad46ab63dc32b399071348240863498a12154fbf59a97e84ee5857d47d35a3b5c703da80779caf92593ce99a87d697109dd76afa661786904de96c45ab4e499b12a704ad8aa344a9da5872544d2c31aa32566754735411e997782a9689a5e2113157ac1503c524e29b1829ae899562a858286e8a7be29c9828161177c525e2999827d689a3e2a1782bce8ab162aad82abe8aabe29fd828b68997e29df828a68993e2a73828668a7de03fd80f8e01f7c53871511c22f68a9da8463016954435920a657257f5aa72dd5ad5ba142e3c071589d6a2b346e246e06a37ba8a7a4327d1703416558756a2d9a442b41bcd826ea2e56817f415bd829ea397a67db49dd490aea39fe8bc113ada888ea355d02f682a3a84d487a6a3996818f408bacdda82bea34bd034a638e816b4135d3497382141bfd156f4114d346785c4a049508146d8a47734126d5335b4da3081ac2ede86b5e623ccbaa373597950166d1b288a36240aa275c61a4286b3193fc06c1c28877b0dd61b9419ce42690de594b4518a682f4af7a478d61f5bc608dec89bb58539622485fdc81c1a519b1dab326643fa71b69b1be7c279c68c3723cd8b227373d7bc377311f04843ce81f3e0ec3503ce60b3e07c384b1100396fcd79b74ded6256bc856619b389f96f469cf5e62f6acefc769234d7dd2e4d19b3d1dd339fcd57339c87d47fe1e1041d313f59f9ac7bb3d37c3727ce2fe639f9cea661d770675d4f84ccb86a2a482e9b34d04573d3ac31d52fb8a55521b2142e37a2cb0d6d7383d281e40692011e482e974a66db7421e860be529619565e0e4a7785c58dbaa05c2e0190b2b82b0044394495242cca12546079616543744334012507921560d840c24200004af7255941d93e37b4ca2e19399de7d9ca93c5838f7a505e95d75601ef82e59b1db0f124e0952431552ccc99a80255edca07df2a2d937500caa4075c892e5d9267ab8cb64abff4ca37aa7cdbb6950e0041dbbeae2b819445e9b66460001f6d93cbe4b2f551178199a7f27da36d9381d725497aa6274966932b6ed44b93ca9d362a77c0b693b426573c8952ea26e06750b6adde3289f2cca1cb24cd1255923c1b685738780ffe7eb280b8fe5dbe24ed0a883f80007f8032ea952f497265994c59493623480e004194c38a2b75a15d514a69efb6ed92cc331965e1f0f457578136cac11f6082e90f6843fc01c915ba959e105d494e6768dbeb5226d976607a0feebbf297cb64b2430763352b272493282c3248dd649381a4f7908c26e093254b19ce5a76569acba401cf369a8c2603d8fb3ce1958e003b0d3b8d9d6fdfdbfdf6b95d6e8fdbe1f6b71dc6eeb6bbd85bec2cf6b6fdc54eb7b3ed752dd4deb5afed60bbd81eb67fed5e3bd74eb6a7ed68fbd87eb69bb56a7bd96e621fda8b76a23d2abbb7dfec21769b6c5ef630fbb78bc8f6650db37efbd3beb43b650bb33176a82c5c1645b6283b224b94fdc906656774489d4fefd3dbb23159175d4d8fd2cf743b1d856e433fa1a3e94a7a9a3ea3af61ebb058d82f9d0d3b86d5d273645ff448ac17d64456066ba58be963d828ac12b6849e8495d2efb04ed824dd85ce02bb846dc24e61f37430bd4b97c142e932f43d9d46afd1c3b04cba08ec13164977c252e94b3a938e888581b5c3dee9787a092c1af64837d4f5f4293d4f9f8135d2a5f4439522952095211521152295112a372a3d2a3ed7c56be215f1aa88175eefae59d7b3abd9b5ec2a76357125bb8e5db5ae61d7b9abdb15053e7805bb625dd3ae6f57b56bdc75eb7a95ffe53172bfbc2fe7cbf772bd1c305791a7c8f372bcfc2eb7cbeb7218f98bdc45de226791d3e573395a7e969be56539596e221fcbc5f2b01c2cffcabd72c13c305fcbd57214f9893c2d7fcba972abbc2a77cb8ff2a55c294fca9172a3bc288fc97572a03c444e93dbe443f94c7e93e7e430b94bde92cbe4387880dab8114d886c6892a4b0b19f01422317331a49d27a55a63d030b80d3c0c8111b4fb8b55cbd6296ef3a83a68444dc43778034494d2c417840dcf6e02bc0ea1b09c6e524a1602d85bdacb909015227302a8016a88eef274c0770fecedff45f9cc96e4e1f0a9fd5c0541f123736821a3c52297e13c046623a15b8547581294c4eb41d1077d036d094a1121539f3b1c823460baa54195fd53b61b762a55d6427967140f00078bd44d9b10298dcb27ad9e3632d13ec8e0189f732b34ca9f37af78e1f5b04b9be7000e23934a079d97c886485f9166aa0e26ddfd9ce49f171c0e68cf186db6373a39e66eceeaf4199c23b1f33c971dec32481e0619603456345f0d8971d6f60942fe09242a0154d088aa871666df6dd85a919d49167676c24abcc60767669eafa461c564c388628a8908a078bce5a9e5ec59667aeeca30779e94d224a278e9b88ef88005c5d623aa0f3059c4d224bde9c21f114c7bc84a4b2aa2239a3acf6a642574e97327d7c43933ebd47742830d412cad25578a91e05907f2780015b85782ca500bc0d9d0888ef30cbfa899cf509c0132d78ca413c8ef80bef53d19ac6160e0f32680c07f165e8fcbc08bc280016a2773a20773a18d910e0f1dbf8d2e974b250053823570b91c44540d27199939151c34471d4a3184bd34d264fc55b3cfd7c7d4bdade7bef6e524a99640a6b00660068003946078148e3890f1ed67d02c237ec8c07f38f6c9d783c3463547efeb2648076a1269b99bf26aa88625a490a7b09fa9213564a49c0dc8cbd53f8b6eb4fda16403d8652424c7136ab4f5db38ad33f529cfeef01099e8166d0261ee69f70d32223a3374b497b8e2547ab5401d740e5d5d6ac7885f3450f537f6d178242d255ac70a7773b2d75adf6b6755feae89a37a03d72ab849806d6d29f6a0194d6428d138df2f533cad5dec54779e0afcfe59c7211e3a69f7457a06498a98b14aaf2cb5ec47bdd14b8b9c0e6daca06b7705620d0f142e3c3e06ecc51d84d627bc525b314bd45ee35a15a555bb2717bd26ee17b6f3a6483a3c3036444974c87a9ab136bae82c06db1adc25d93524aadcfafdd88e7bbeeb52490e7987e6ab84f5b504ca3a46c6574cdae4f90be37a008e6fd812249fb7048f185d9622f7f38ffe427a30b3145e91658c3ee613ca0835e69b5d3fb8f8235b4e25dd9543856377afa62005cf398ed0bf7254bc09fe5c3781b26e9d563deb9cdb5d71db9d48dfe4b2f0030b25662de36ccfbaa3e2f6fcfcac6df546acca152122e303295a6da541c02994b81b3a881614794a435e108418a31e6a43d52422915d58888480a0acaff28536392051a1dd430e36ffa8fb949c5d938e44b6fe74bb31f58059c0838f5fc39a79ef31c492a514621c7d6e8017a8c3a24d33ea51dbefcf6b21e38de89e5235ae15285417d8e278915c2afe24565c0eae0d185cdb94c2b6f21f435b402b672e7ea886490e3e80e885350385709a1e979217f34da48edf1b8113d9572778d112dafb0143c68efd5a5af79b2c52215cf994c8133e1a55fb486c145344792ca1b6406eba4c89f750c5987507315a0d488b9c32071645d1753094960af4c550a4aa067ce8fbd20f4a48ab7080de2938294a1809c968d944c75ee48f073343754bf01680efa2cca0e8b844c590cb61ad704e49e2b6b27d8905590d54a684de943f2b79c5e380d6890d0b641ac339add821072983fe17ffcf4177a83a7c3a3efa385c94135730ef0f224c9fae24a09ccfd5499e2e2a0749a47a455c37e26179774050f47d60d8d61198f2a61271a78220e09e0636c412d5d9d00a65a0688147bec1c8e9a839f1f474cc05523bbd088743b41311f11c6d0a2aee20dc15ef8c8d3e06f701f99b32de71b2b86acf3ee619f8ee7fa5a0988010941ea250b293d752098257d6183de657e506e4c7df90b23e20a445022ad2def6dbe39b6e58e289dedbe5a8398ac87cbfd625e6852f82d452671a7b98689fb22c38bfcd1fa3279b35c9c3849d840f1d0bc225178b415934713d55ff4c57b0e4edeb8a9f527d7041b935801c84b6b617f387ce5bbeb991df41e30a77640dcdd9b28e4c3c4b11efe5c3f348c3d1604700b1add41caefa9de712dd74f85343d8b6d5cd559d30e4320a0a74c56ed9b556f00fe68fba163109ce4b0c8e489a8f41075209ce5a561d6b225366b8377d80679906843ca98c9867de3a89bbe1797dd0e3da9925d1cbfcf569b012e4c4f2ffb9a86f1d66bc21de79deccd4e25b2ab0c2fa0ee21c9c98e8440d2c109d743f4deec99c8ac00f758082e2bcc1286549ee3c102fa8341b2deaaa18cd8476ec6c9a81f268f5cd8fd5533acb782da2c803260e9c038926f635b8e9566d8604507ae037ce8cce1e9a0f80c39b84f0a7c40e841fdf202cc27b4c84c1bf093bda84bfd91026ad3e58d79b7ded586c48f97f74d40849de7ae261ed48b00aa65401545b01eb7011c1b2eaaca4d1737a16d61d8d885db539e28360bf45d20582bfc977953f2dd607f2802b954a443dfd2fd0d9125a294e0bf972adf2bbb3b45f6669399644a29a5144b013401310144bcb6b106b5ad8e19d8cbe077fb55b918e39c2fe804e79cb5c63d49ee5a77132ad6959ba0e1cc05412bfe195f5bb557b90ea62942595052c55a72f21203fd9c7b4f920afeaf4424b65dcc74a55d33b9ad77246ec26a2d3bcb22d3caf04250285e72a04f5ea441f5ed32a4c03f497fa411eda8be29ff966b08246f91d581d7f922e52e9f3d4addea21bda430804473d0fea586c620b115fe803ea8d3ff6fc763752b8eeca993b881dc6f4fe3f42973acdd6c2f8a6733b45a02f848af2296e82c53d0b248fffee5de3ab9c0d7eac9495431501a54af25fa18a82ac0683fba3f89c4b6d73cc214327837ba8e41635ea738079aa589123456ae5869a252e60b9026384d3ec43421c3c6cc0e165b6a4889c1e4c76c0d97354a7cd47843434911ec06e7e82104c992275370ee62a5b69add57cb9a678fff3db25f7745178619b4dfade98c6f3ebbd8c71afe62261ec772a99d304f7a54d7af222bf5ab69c95ae698df9d91b66631d46ded945cedea6a9abeb2fcaf99edd5d1adf6b5fd537d3fac42c94b596bbb6886ee155a066bc0a4ad3dd3b576f509cbf6de6bf14f33c64a9b09985e51db71afbd7f0a5d8f63eec0300c370d9e18f4a6b5d77b5df77d9e8f75b12ed6c57ce7c333d5770dba37942f66f6c6d03d4f949df2f73bb37b43c2f14776369bc5017f8751df187e11052a3b79e368caba189e3734adfde1c7bf2e7e23793a530fdef87910df997a7ffcce11fd97db3f89675a1685de99a640c31a9a1e3c5394356bffb14d7b59e5feee9ce9fdf208f69dbc13d6f5bf9dbd56f05b8721e9102f8cc1a219f37b617fb68b42645778595a63066ad6225cc2b018b948ccf092fddf2fd9a5dbc3d7ca37be359df15d591e61b87c7955b0c93062628b71f4dc26e99d9143729ed974c2c537a262f551f46f04a551dfff327726d2182aa5c29b931a395185caa99fa25099220aa7c61c93449cd0f7f1821344f0f7de637704c1b183a5c69f0ac7dc5100c5d08326eaa22854fa550c5e0701739dffcdd324a47dca3e18fdbf62652ea93e8a07b308aaf35ab94ae1ed37f4ed9d6b9a59c6c4530982274ce4dcbebd734debd3067297a8c588a5a515b308631f81b9c83beeb8918f21c7dcf43e91a3a1c9418f23597d51feebdecf9ec9d122cf79fd45def66b51eff372779fdb76ef38bc618c3ffe9c97db2f37b96d7ec2fbeed4e3eae3fde56aec12df7589effff8ee7b22abeead53c6daf6fd846ddca5e198e6963b61fd5e5ceb4bfb7e46fd176ab1d7e42d2abf5cf58471dcebb3cbbff232ef5d5daffd5bbb7eda6923da27cc03d267c94fe676965cef8f73055c2e57abd5fa299069069da7504f4f0f010203060c102040c0d0d0909090505050101010908f8fcf4fc5d56a2ccbcf6201d0d1f9d9d9d9f969001e1e9e000102fcfcfc000000e0ffff535314cf711c53299f9e9e9e9fea701ce7a97acef3344d332727270c4b148aa569daff9f878767676747474787c5629565b95aad384ee5bdff9ed7712efe74f7de7faa52a9865224491ac849a552e3388aa2a8b56e6d20087294cb73dff7794fecba8e3cd2ba125fda7d4e75dbb6cc597bef9f6aafa3247c54c22ba1ca39e79301ae15ac832ebd5a6bed09214be016b80b5e83b881e4c0aa088c8c92b811091c07a9437d3131b5e059d31f7c29995ad4d99317422f16b4784588a123c4bc182634418ef9d7ebe521e62dca837bf26bd3c33d806f1ea3d9ee6aa88e2ab268186e19d8f7ced926b8710a7b101cc5d4c87126c8cff9934ba12e88b93bee2307204a568df01f4f9043f2940286cda8d3c5ed124ed201a38418201a100945b22ce93e73d4037149730e1942883122810422222222222225493a3e50540f576fc50e083936eac11582a90698a8def7acc4db84613138aaf63945fde6d34bffd7e569d96667890a266b75079c398fd0a8c74a5b072b87e0111f2c68e3b2df6284441739ae15e58e8bb0e66e9318b24969c6e65d43003ea45183716bc61cd2c2a7ee0b3dfb702f37b4cd808c17fdf1447a95d7135926450558654542a988597fd445c82f572ac6862cf8b0672f81f71e63a6bfcfb3b5cf29ea379f5efae72b8755f7471c4e5b530bf9246b2053426f7615c2f53d9fd7af9211e991d72bcce5182e695903fd6b900ec79a08ef6ecffb6ceff2b0447d3d3bb3590cc1ee8165c6e051466cf7d874346afd87cd19ee8712fb43d1a3831e5a109c8b309107b623103e766f994e3aeb4948708dfb1ecc468a45bf420af8075534e07a3f73162ce51adb07bd27dbb56488bc2f56caa7ac07ad6a3a334508b67423309c1fa8c6e3481a1e5bb3f69e137a309c4d882b735cce7999e6328ecb3c9751c338b5ddc0dda2c7fceb09e865d08ed0bee7241a8c19ea26a8638c13073d2bdb9bfa604a262dfcd7efb6e4f3e17c3b0dd109c78ab475f4d72c6de618a2afe3124aefdeaa803957061d0e57776dd03a5a3599d66f4b000cdb9efbe12606f78c80048bcf49f07105cd9975127bd4b185cbe78cb7560d41f5c70331e388f3f93aeedf02cbd2f9c0d1db2fbe288a8f9febd91103405517144b75d4aa104824c1709ff00d81c4f4fa3d8c16b130df908697cdf73e952930fceb2b62047944c4319242cb4aa32724aac0a44810db19cf03c286b8ffb459bccb575a5323972bf1caf5ac8864b1aad72f6234dbef765444ee88629c215d5aaee70bc6c2d7f1e029afadbe133e644d95c4d6b03cb355c5f32c6dd8e92ba8e93a215999a5676fdd43167b02546dafd1a138c89b4e8010dc87fb954c14b67b48e2b4500694e2905d34c1e16b352a92cd7e8b22ae73a56613c426bf99418f55dfd42eb3a64e10a2ac74837b677c4d0c99040d9265356d15297b6a99c336f374612785c0f68dcba718ea6e686c54d0a4968ce1241b6ae02c8c36e1de0090323ee3d73d273387855a7d97f6c0d82c14f0d8107872b663f89f259f0b0d10eafabd0f6a2ca70f8b61846f1a7a5c47741e79be8595b96ca7103769a03527d3e0f76fd0053e2776052d4ec439f6d13f3cd61329fb7ed2a48017c27d690d651a8fc6db03f1e09025560f886447e80b6c24526f6ec77e1ca3bb936e397f6628e9f2dbfc88cde4a9750e89adf6e9425338b3b832c12a78c4334b57af498c9451c6e8571b755bb771b0d456a2ff1bc1d032b4203a6e9d45cc85b38afe8acd1956b43dab75d612009bc46793761e395d2491c47082e6d657c24499441316aa432d3619157434d9d902b0db80be6a5033e7e449ccd6241243df6d074e35c89669379a17a5a3388f866e936c48f88ebe5d0af584d527f98e3626d1a718e38296dbed1ef31202cb24b2a1e2de0518711b29d210c76f2b35972b914d101861388e8b22f01fc52ac5d62244b382b6d2b1231b4981a3bf21a06319775937de5343d452d4c960bfaed369519834ceea1d2bd10877d13e5fd97b208420283676adf23797b923cded78c4290e28b1694d8e1cbed51aff24bb5243f000e584c8eeb0b6611ed0f731eb17895ca35c89ff784e3b52aaa3f90d20d53604ed31f72bdef4528bf06f676e6c188ae90454a216e0b418c5d1d0e176da1e34ec95985069b0017a5cf1121cceae0afc2a83503684c06fc177b033c78c5c3bb46fc38a2031400c55f8ee049be823a602933a93654d450d9236c6e5b5b981490dee4a80092b410f7eda0fdcc9582c4358de0dfe47ea1838eb4ac6f3ae464ba7cdb6d271d55813499bacf9b8fdb5af6f4c42f2d0a95febd43e193c056c3d61d7da0b6ea84694aa16416a81ad2cc4a8b3a19580397a2f0804c82dbda82ce2464167469accd25b44f85d98a101aca00ed310e432869f1cd412bd1a87fb3dad9de904ed7967188f5087dea0439f682f9dd09b582f9ecaebdae6485daf377c8c794c44ac440f1981897bfa8f7a6b6cb56180309727395978fabacffa44f1106298af97a081f84e429fcd3fe481b914983026ad28cc48eed629ad7bdd06acac8de670c4a7a08c2861f699140ff72b3f0357406dafdeba404850219cb27bdf6af4c3f5cd646b8a245ff3e131aeb5549978b9d050496db42c010d81d9b7fe427e42751ba00fb6b80a64e629fc4edc2b6c3230f817510057e861cf0525dece649c04fda6b102847a977778fbf5ca0926e966c2d1d73eeaf2d36164c1bc0f87839a989123180bf9849b9165fbf7e4f8fd7bf1c2820f1f9a177131b2e4d01c73421714b28354f802f99f2a510e62888a665eb44f308d4990f34b9093ad72c86551b3d6aa40dc482410f349d9e75b4d09e85a62cbd5a0ef6198f39f656ebc2b730eb1738d86842c36e3ed2984b8fdb85ccffa38e6003fe79635f7fdfd9aaa2d7a169ded316203bff73640a28c0a8dff87c5775aafbd19354d644db8ee3e9e08836ee8faad52cb20c5f24ecb19734d5203a36820b8cdf5a077fb34d3c3721865ddb1db572e286486b9b57577be57e626ad858054034c14ce0dc4046c7b5048d3899c649ce2da68889c5714b0e424ad275285441924981f6ea32c67354fbec83b17fb8cd522c51efb3451767af23c39c0e546bc6c58bbb4a4ff2136bae7730edad00dd223cc146eda7d63d60cdc99f9af858e091208425bab2cfbceb88d982e0ccfdd3353600cfb34c7ba9ff52953e629be1ccff1ced8f2357178793b8316f40e7934515a1824d16e48ac06fe01a09636b557a72c33767484181a299505436c373a6495618cec0f48830e3787bf11eb659dea1f122365e7c48e61e282ca3d817ab154b832f95eff35d6a31f08d17a5a224754bcc7ad2b85c8de3aa585cf98bfbcc90eee8953cc76434d99f4439834faa1f7a0817250231beab84e176e05bf5d68271170e379da97b599d9ea49f37311946d49ac95b12fa0ff7e0d2312aa6d021fd32c186fd07b891fb0cd98a9379b8a687c1ed70dd0c3b4817a220a71b3913a0dcbd2b725d88384bfe2ce23b11f353d915e2d3bab1babf5873c06ef63873d258024e0457da1d40983869e52d13e7f10fd895064f83ce6660d2066bee4747c64b400c72a116e00627d9a851060275fcf8fce4da80bbcd6e3cd2ebc7fcb0607d5413ac170aecad167f5034da73003e85ca6ce89ffe67bbf60bb7b9cbf745a632b67d5bd83b61fc0031b96a2714884e26c6ceb8dd71b0e65d78c1eefc857f6f1d9e7612ca161040c3065b3ab1adc6aaef437c9745150dee4d41147e8eeabd27a75db2f3faaa69a8a79c29c84b709ea93c4ce2fbbb83c7b8210b7968507892942833634a10f3d74a11b7440a72d94a882524ccbe84e1d699d9b14ce39d45659832f7192260554dacb26b8cac14bc00287bdc92cd509ce985d3c44652bcf1f54d05297a772c659c11755ce84e102330b4bbaa9f867f29e94b784e8ee96a5c3d15ff886be654477b72c1d8efe0aff9e355675616b0b129290666a29a27371e6fe41767e3476806f82c177c0715cf821fa21423dab576e9c2632d1b11cc281107853831d994f612b5d4b8c0e395f8afb77529f8b083aecd0210410441d78eff8340f04f21e5a8d026dbc086d102841b74e1ed9b5a8182b832a0307cbcae67b42b19ef899c8acc1a2ef5290fbd04c85a11857ebc608f3db7d40afd78121343640218ba1f7228eafc6b887ed8960fc6f680cf0b7d959d28722a3c7cb1ac196d047ccdd3f9b659623d4bcf1c6eed8855afa9577f2b67953e254c76ab52e94602aaeab8c5155649baf0f9203992ee6d7ca405d0dde83f88d1f54b0f36ba2d08312bf5c2ff4afd5e5206710a68a7e1b01234f33d3e75ef60c5fd051a1f61a1321fe13e0ca3955babe06e870bbdad3640eb3858c41e69031c81c620619c3cc20639829640c32878c41e61033c818660619c34c21635056c1c2cc9fe8d21309280943d4c138dc7d378edb8b6f33fae8ae25d01ad828210e60d3961518efccab8302b86dc4baa149401eb4d5822109aba0e25207a1d71e466ab055b491edee5f28d607d9c4704490fd03d4665b3887cb5d55d9209d69691f1cdc441a6218b661332cd35a556e6d397d94d682401f89ca0cb43a849714751ed1e59cae74ca41e826211a8081c10408f04938901fa8af8cbf1a6765dc54c0382a81f2011c365bf48eef84c1a98bc5621dd26719fe54ef30a19bb8e8d02458954ba63f51ca3b6f7736507312375a93ca815a7c687e90d23cb33309d1fa92d1d8c5a69f17083544226a4d408216ca6608ec8d00aa7be01b43602ad1033c82103ca3de5547005ca2fc96c03368a144cf234f4aba1d7cca39788daece764b2bae007e5b7d541ff86ff78bdd489bee9322c02f114f218a9062ac6c6b01c701cc018901b9938eac1207c6d18cf1e042b3870d0ee972a6b619c9d1c34b93bf6df3930f320acdb2a23c8fbc2c2dc9f4071465bed45ebaeef28202d0d2d2d2925dff245bd7570f34b55aade69e4ff4b07833cf6d9e2c69e2c86f4aa741b345649e67189e6bf4d29a2488ab8d205996df5746c91d4ab4888161f8f5f0c9c21c9198d2e57ddf5765675e8b4d1b7dad20f1ca70acc5b25c80d274a5a992399bcd761482ec184a67a6699a19e678a50892a6296a925074c711ca343363185f520c0949b2480b8a22913cba9cb08202705fa470020245517455421368b91cb0e45833e3f408b45cd7d5d066509535aa01adb6fdc60c2c1c1db9cef34c22e08d5907bc9aa666992d3e06a9aaeb552400e95795eaac2c2d993fe00bf80460e08c80939494d46221f8c60e63d83cf9e1baaecc78c0c0376e3822025199b66daf6405087ce3b925678b854c66a1e8b32c5cc988457f651c0093bd10426706d16881e8b38a4498110b765ab80013affc05997805f32deb676ff3378f7b9cf7f99fd73d95b7f202020408606565555555454545351c0e755d979292f2c65e9e3fe97450bb1d90c79beaf57ade18448a8dc26030383535050402a1a0a0703ccac9e987c349fd7e3f6fe4ddf78d14ffa2a2025877139bb4cb2cab26355548c2b0fbbb2ec7d517dfd30f615dd574b77f03da23c8fd1df7f7eff1fbef4d7f87f519f125e6118e422d4c14ed33255e945124a8c6f14cf1687bacf8a3f6df6b1f76fbb0da16ef339397db002142664a31cee2e6ab8d8e62ec99e2bf33fd5cfb5db4e6f7f24ba8fd1dfe5bb1e291b6b75bbee2b1dc69483f12190234a858da4894e5ab786c7de977f7ebeddf91be7e7e1f80cf44fe08ecdfd7bf952b1e77ab275402213194c6ab4831fd5bbe78bc751d6a72e50d09457e8ac773477feefcfbecfb76f37b58ee96791eeb055a4923d62b6bc02ee1328890bc64a5ebfa956709bc071e6c40a4c70b2258800020105844f0beefeb0b40d0d0a3cb8d1fda1ba1a4a4a43c71c17b7b07789811cb67382e7aa408839e1b234c6000c2c3ebc5ede502a38b2039003d8c8aa2fafd7e9ecbca31d0ac2b0a9d42669c422fcadc0ed951034658350b85426fd47d3e5ff9c58bc692f24796af26a4141e81c4c406c96963626a188c8d711122464c04112c5e1e7640f173e4c0040f0a2e2829208a3066684c49e2c3c7dee2480c2f0d58f88809d38b7a82f1e80c8fdac51737471b0615275a1c99cf2542604cd9e578f24cc8103d6ae89a469d1a2e4c199f247018915e7fb24009c0d24bfdfd17551e650f643ecaef512e8dc90725fba7bff764deee7c731e83ae42fef1fb7f58d279ab6df479cab10d2bce4edb684cd394f5337bf5b26d3331692dd9bb87a29199ec037165d7d526ae6c2c0bf5409c4fefe1037127a244d8465fdb55b299926c4fb373aeed6b6d12edd0f370923e2cab6fbdf79d7ea6932f524ef54c30d91f6f7e457dc7251f33d55a1acdb776edae79d6b7fe88ba275a03288524f99bc83836d5f828f3f25bdaeb5abaae69966ae95df7efa692fbc2e75b9fb0c7f1b42c7d8d53528261b649556daabaaaa90dc7355a5b9e64aad64a7485cdd63659128d692d89da6ee9aa27bc9a6c2daea1764b33d5342d57f78469ac5b4bd9f82451528d5bdb844b138e4bd45d49fb5c69ac1aaf659ae7799ed66a70ce45599d4ea7b3cfb3cd59d5cce572b81cdac2ae2ea6ed76f98ae7a9b9da3993c4e1743a1c6d87e36c9adb9a6a649ee7ca5ceefe9b8c71b58d86f278311dddde7ee7793b9aa3e99fdbf8dc54ffdde69b6a56363deec69c701e8773aa7d2ef53cddac24cbb4929ffd3cefec0f333c7f886b4b96a48c9419213d69923f6b5640aec2d3a342f4efb10fc5f3c3600e5c189ad8971816238c81cc9e20a32abd0c36f3325f9a2649963f66068b9491a59e15466185c5a83022a66babd6e0572989e6b669ea9b8eaf6bffd66e7d6df6c71a6cc34af651a9a6d9f23dcbb2ce298ee3183fee76ffeb64ddebbeedefeab2deeffbbea3be2cdf4eb75b0eca3d9c87f2bf1ffebf87b2bd8f767272aae95ed92bcbbc9475f8ee8e6dffdfec7bce657a57d3b34de7cbb9ccf15d1cdf3ecfc66fdaef6e1b5ed3b5edcf71eeed5227d3b3eda6bbc9775c7e1bcf6b7c2e77fe0fef9da76ddb4d28140a75716e0fe32febba1ed4e97a16ee84e570381cde648febb47e0783426170e7637998975454fad4eda7dfb41cfc3f261c0eff2e14cef6ef67cbf5a7275cd763534060706a6a07dea2a47436e1d3132f7f1296319fa7f2545254becaa7037bbda75ebdfbf17c3928fff3dd39ddebb1a0704a0ffa6070cae785b8af1af6703cde93ef41e8f5a41a50fda03ecf43d9b7f387e5b4d343fd56fb1bd0df6efe567bdbef4f11847f0fe67eea47f986cda893949d10ba4992cac618b386111814ca54594995661ed3037591908220044208460811102430024208228498119111a207004ef1c9ead0b05c590596601e4788f09898c9ea877e3cb353c6439eccb9dd6468f82c8ff98e56d36597ed40f4db9c68ce4ee06710febc126ffb853587ee6627b5f1f6e402198b2ad5c3bd85cf4e4a1181aa87ade7d046daf3b5fc2b013ded138325848c4c8af71215e84c842ed8f1237f1d6d9c682e60f143e1c3dee7f6847d76a5bf637c831c71b6b597e6d0a375a36a78846edbe74057a847f06dc809bd91e1ebbac31df8e3d018c4b4c77f79ea82473700e788d3805c4173dd1773a0bb7ff94d9e2a739aa19f4a32674bbdc2fd452012aed6e759efe0fb09e5027d4a0b4d964171f2899656dee3ea8e275ae6aeb51d806dc389b6ca201490d88293ae249025bd14e67a21a2fa82dc6faac428bd287272478d0d6aa38fe5ad9d3185ea5d8fb724960d73086a32138e6b191b5cc5b808e09c08b4e90d49479628a04410d3fca460d703df5d68ac50f8db5cce270182576acfc4ce2cb5c4591b18c913dab0f99dea1ea9eb8e7869c59f523d692f0bfe1d0eb69505ce4e6408b79799acdeb104943915b7109a1e41285140f6ee0477efca5958717ec3317fc82922cb27c072d13bc8b3b94424e39a3da2fd839c5f8a7c0d2fd34ee8f6d1333b0e52adc1a03fa5e5f8a41b7a4499582c3aa3eb40d2048d029858fc4e72b6ae11c970351cc9764bc7c32a2a1173992bfc12fa4e1d9a820fee1516b2e8b7f180f6da772e2bc24082bc55e98cc168743514c96a8b7c02792bb618473867f8b875f89f8f08f237d2b5231c448db578f835582e20ab920fe2b3af1a3034e9d902f5b3d90c63868e862af99a481ec154e2ac43917966d426e209b28a5951c95445bf07f7122c15de8f4550199c5a8ed997c92e169772114bdd4c67621e826cd9ad69d45f4f17ad54b7c82842aedc2d6eef484675dc818a60376dcf663089767592f5d7604cfbd6f8e05ca3585758e78190b74c2aa0da50568d5dba17a760c55a6fee2f6ea68e41a4d56584a0ea5f6c52019ff26885195ad46cd0a07ad6a2041efdd0b37ec839604e50e6c856dcc81cdcacfdc3cf2b9ca008ed0087620b87eaa4997c80daf1c1faccc40c5599032e57b82287f156be733071174abe5bd59eb351d4f09bc259465658307d6041d9389361dbf0a895a61825a6615ed5678429ce29cfc7b32da8d9ba7031a6e6b9c1975c9370ff13fe240cd826439629faadcd461e938e955930c2cc61fe2d2f76706ec874c3a9b317830ebb97611c05781000c82be1a4741128e126714525fea91d837ed85a8084444ea8ed1ed55e9a5494a147b5c4442ab8c69ac1914a2789b2c81c68f0ac0083b1e1b678ed00ea02cc3561b9db2c4a6e1cb216a903603265b8adcc20dfd4e2b833f01c02bb0fd70926e764e210945ae1a69a1587a9057a3ce852c2f7d7532446cfe060e4f967efa297873c7ba287785aa8b8337d07fef3e000ec1b7715d86072579577c5678edbf87315d0121ddecefd684efc6830c8c505c620bc9a640695993aaec2c4a3dafb450d7c214a34bd37a808d503c7a9ad18937f1187e8b8c51dcce85fccd3feb98e4906d68c5e31ad470a712a0ae25761409ed13fab5327830c2d74978efbd0ec05e2a9d3cb17edbbeabd7b515625dbbbbecf10450a88ace042bd529359d6b44b6cc978d012434d03b68156a915b068488d14be163cc22e625417d84a34e44ff04fabfadde35a7419551bf122675404bfbf0b6785c6d3062e7c2e403ab8cec084793e4b00c7d53268dd9710e24631e5f3d3782f25f4cce11c6a29012e3d33f8df2d6b61ad29985130f942e0f50b0f297e96928e6908eede69acad0440992598238396bd66a98b01c0c68539d967a34227b582c087d12612874e7439c83481d0202616fc618ead6a0c2ee87600690223416c2cbc931c1b97a8242ed94b94c962c1119d0e9026683480252ed11de4dbaca212790d0f51a7268aec642ed5e97bdca877a51459eb12fc943ef86d6f6fd217b1eb7cd95dc5d4dd88b8350647e76b512d838513e4adc9cb388c46574391ac3647006ea9558f22df32741cc564614434af9471d29b9e1f598327156eb1ca875d86ca4b47e0ee2b2ce1af807b931dbbcac7637c159f5ca771d348e4c1122d35358fb5770d55454ca2128e339dbbe9992e4a1941ab1257386b87cc5f3b5db205652851ebb7fa45e62a734fd445af85cfeea2f61443041893b9bc1f4b6062604ad2d551d5d8ea0a1aa0518a08165ecf429bc8c6caddae272d4c0035a7b59d4536886419ea27a41932ab1d5d11030e80f24553586664550866aaf0ba2582249038e423444b6ce6eac03b9e88e188957b1a41e1e8c78b8c9e559fbd36d514ba520f5eef2f998866c12ea8beca22e53565ac2d02af3a735892a040a559c55058f00481f50a4ffd5539e295dfe1d456ee88107e49a29564a0cab5a48454e95acb0b28205db1ace41848dc98600430a7dd1ba13e43ec1e03dd3cd362e31753c85b35732ee105c62313d37d5ed44b909e6a06576482379491079f061c6e04585ba90d518bbdbb649a22091443b83b44d3f131d0b6553eae059246106db3d351c379a959f024f547015460844bdd01bddf99a2882269c47844d13c7922f4c972cd5b5d242a3f0f553771d4c87d40cd9b976112efc0232a2a94e7593c7914c9566e325faad70a845454263b4948863cb085476f124902468f5a32cf414fb030a397dcd64b90370af8d71409cb766cff246377cb1fc9284b12724d6af3c0ac8c6b5d6c19840f944befc76828e22364c810a330a21547c60f80a583ba789e2a571227333506fca656a4e62ceba4580c4613c3a24727a4d688f1e004449a25676cea4dc4535464e7a57ab884ab2a568d6e255095d036e518de8aaf4cae33af159366d88aeed1951ecdfca3dceb81a50b26ff3e69a2da55d87e381388cba39aa5b26e8e879b79122f2dc6ad81b83cd65c5474679c7bb9393f670f5c48fb71b0a02ed79beb503d3fdf0e9f6ed4e80ecca5f052ac6d86e20b334659dc850aaf62fcc247b24c3209194ba531bb8535f1017acad3a38dd5464a03d44ddb87ca9546a481a5fbcd57662b6c9abf3ac0daf5e1eaa754cf9608b9ef2ede70902546a59a5604d6e64e9271a4426bfcc93feef6e2a80b2552d2a4685580dd4c851ab2a5bc3d64cc91b129dcaeb380120be0a8412641bfd4098c3f439f5deeca4bac56499ca5322f559354dd96426aa8252f4bc405b9fb88013075fbfcfbbb97be937443e6da9f2b11c458c4477e748911001a92607808ba9b4e9e3a03dd5e6af15b80372b42ae3eb17831dc48004b4beea4317cca6f0331c680df0cf54955f3cef01a06165ba09f7f5b7baab5e383f1b8e6e6d6ed1b85742605590f4ba7f20799a4deb3d5a8c2511b1d47714fb20b9e44edba869c104bfba275aaa52df7088b4dfceb20089d9293116adfb766595a174769cd69006a2171a99baf87e49e68296526ec21fb252ab591d2c727a2e0421db32d1abf408ebe4aeb9c2d05057212c83dfe9942f2dc81331e8ba5bc42b1bb7cb0a5623e1fe22ec8c5668774ac569d2e88f2c7135876727fc3f4e63cdc16b5491a545992960cdaf6f13c8d70abc9df14668418af4a919116da0ae5774e3f1ca9a1891300ef9294823917b15171b7af76823ab3754ff5f8d54c8ce972252386dd2a2b5ccff60bfa52451a9949c68ae35482d55f9cbaac13956379f0ae51405eb4011d80dc8fb28cda5c2e985cd03e2b17da74b38da8af5a9a4b9599d33d2bad45459bd20a751523a5f384597856966ed1d7a2cc49cbaf534b2a3166915003aa99e6bfe45b130a831beb144676748f006a5e501344b05ea50300ccf723897fda062858671ef16ed0eda065c48ff90d981ad093417bfb8041c927df5e14998bfe87f1b31f76bb652284ec7171c3b64df696526eb9a59452a61d170125012801d2a5757a24ed8e1a574a2975cd37d7b21a37f7a8b9d6a8b4b5ceac66aac2734b89f2c86c91b49a4d2dba8d916747aa6bd5ee61ac1e9950f5d8b015821de5554cb3284356adf431ad95552d51cd763660462b18851fb96b0b4eee1951d6c0cb7b563ba98c328b2191741b565ac35a6bde3199c1f0ca7c99ab1348be024ffc1d29c5dd62c975ecd69467a85cc89c711a9933e66e03cf2c6b2c5202e5a00af456003d325178f603ebc50392e64c58f6a6a5077cca18277628ce2c638c5d96107982303479e02e766fec66138da68c3b8e93b36e3517c5183ff359bbade0da8feb7ebb1ad6851ab4c7cf5d3143363765dcf0b6d4dd171376f7b2d35b5861359b72dab1bbab80761de77fb5ef4d5badc6d8e635489c3da594114aae19ad17a08b8f052b858f891e12028c028800e08167c34e069d0b3915bc08ab065d10972003e101f737d0f6683cd5a3795a491466d265a56fa0c2b28f32eaa56babe66737771e6bb5d7c69bb55a69b59423e2fe5a6cf1c69d5bf76b6f959be6499c4373bed2cbc909999a56f799b81040195ee926990bb3b51c91b4d7bedc566b55d39fdb8dc8588e150815282c118a975949de0e55bc4bdc89466552e4d3b390bcb8c6697b58b36f356bb3d54226ed9b049c0133a469924a92289b524a279d333e8d1453570264e4b455264f6f5bb64f3f2464bf497310e36caab91052d34d966019951f40369274896b3ee046a82663346e6a70a664a66ad3353bcba19a5936677487c25845b6c219c7c139ffc9b838a5743e753aa9537aa404030a2a2932cb3ccb0277031fbc2fe0f1a72fe5f9c099c1fbf9f6fc15d5e7eeb3b48f4f8f16b0a3f3dc666f7e000f80274cd2b8ecc45d9fe8e80da340b6a6759d95d65a773d4b681d865a7b9cc2398759af565ea8b36dbaab55e8da579e73ae99c68e8a3aac4298fb46a1609b6fd8f17b0d95b2bb4e2afaa29cc74945abfa39f8b117c270fdae6ad74842dbccdbb6851e5e291b02c12c92c78811c3f37da46968a6d7f0b692c7149f18c972c469a86992995284ca500e1c03fe47d0908fa0a750128d944cb363152c3f92cc4fac12857e608e644918a742471285421f62e72b79faecaba1fe38758f2f6065093e8446af7f422f0c6dc68dc886f49db1565cb0056b5991bd7793527e92525d9a4c217d3ba936e9d4f4447a51a9d4da62f60129a02106a20a00210035e0e9a747a899fec62bf853c2a30a4e983561de54e18c73c6787b2e0ac7711be7f676f7feca5a8c376bdf6ed7ae38eeda8ee338ce99bcfd7ffd7afdff4eafff7f0b7bfcb25e3b6c365eb7c9ffa53d47d3874ed2cb99a8b0878f7a7f7b55af51aed51246a56278ee24bf22953b91f2273cde8bc98b7e8e42afa793337ac919e9a8fd5f550a2b1ad022613d3da09572e8c9ea461feb143a20f18941efc3721683fa417bc58a12704cc6b66bd6fb7c247365c86eb17933b5c1256fa6f68337507136843da5d4632b685395a7b889fadec10bb2b06cfcca2e26ecca7a5559f37e7800ad564ba7d56ab942578eabd32e1dba5ca00782ba0bb3e4eaff80783dd7f3df7f1ff7fdfdf07fdff7b55aaf9723f161fd7505c158ddb31cdb9e9e4d0704ed0d9034f7f7a0b6d3ba17045b2098813a86cda8a33617536d9276035364101c208d08845355d123f6932354013909738a19c2083102119940442690400211495290a40375648a271416b529ec0bb0ae48b7a64ee26f4b088cb0d8dc4b2b0d98f3dd33168d43f3d5a1cfd62fe57aa153c1ac297afd59440cdecc80ea35a87c721010e797e34b0e572d506febc4954e72a21a737bc551163101a82651ce3b9aea656c5f26d9f469bef5bc11b4d7a54afb811a9bb919a504dcb9940859644dfe9f4c88f2512801f66293955f8c3ef178f0f0fd5d119226679809bbc023322221c2af08aa359667f76873aa3f4423e38735ca931db5d8fff949882874f16bed81b1204a3c136a67baa2ad390cd49a98d5515414443027f80a867a92f12a946befd3903f21c52fe0f63d900330228403ed54ccd598cadc10833dff9b92b55c3c1d0da8ec6bf853896e533e2c88c01d8a2d976e35f1a411538d14cbf56f14a742da47a76176559adfe6bb6652110fa9a36439c4b8e095b25eb9446a0767d0e34f3e2e0da67ec28698388e7788a084dacb0dc1b4fb9ee22413b1896c04601650db353fd1b1e72beaac714434a7c4c7a7f6922f747ef96e61df5ef799ac64ee833f8af208a21a1bf4b2f09cc533ff5e7c2d019e04cdb06722c67ed3dd27a76208500a8c5215bd80eb10f8505940817a248184847e6e2a890082617c134474e22bd53d199fc5546272bc252a7fddbd9f695d419d52cd67f75c1ed30acab20b3619550fc06d262568ea1cbd7a9db73ebed4ccb2c20cbc1b48f48820ba4f8d230fd91fd7146d14e1a4e15617710b1d4ed2260d61fd418008b3c5dbb918aa8719d484b321944381795450cd1543567d4a42fbad8815e9fe23c37282471d5f8654e6edba6e0e3502381098b04c7ce01f52e1f8b18802face2f93cd00f1a71e40b08126512dbe5d17766ec96d6602d52553994e7373c15aab4bf6102ee9a643fee6c8716687ef8051fa9d84da87fbe140cfdab19d86d40570d7248a7322defa8d31bb1b75f30426d50751e5915aba6452b4ef9af86b9a42cb44ce431651021a87f213638a17d6bd2f655f175129255127432bbff05b921cdb860bfe8e072d57335a0cbdb542aff0d84ad2589774d1b3fffdbae8b189d2ae21226f56385389acbeb1b26912611543b29868abc91632b569a474b378adad5a631457cbaa5d5681c20aa18911c45c4fd17c68f82762c2e767b4b486869a284a382dc94f8248186abdcb084dc3efbe8dabf1fb30571ad96bd1b249b90a067b57898426fa2134556d533a0a7fb4aa52e2faefd5b86abfac022529c74aaa3541bb8a93a17dad0676580e134ea8e85727c80c68fc03bc587669e0ec3057d9874590100d4e39a36d2bdd03883d492e3d9032aa1619fb1d69b479b59c4296393940d10df04c121733762cae7f379e88717ab49045821e3d9cbc19100570cc18572bccc566dd159229222977105cb061f63690de45980a1f6aba88a1a4e69c41a8e0d000fb0bf7ac9363e24b7e900035b6ef351415571602959aa10e212cc35c0851f681c1f790df62777d74d1451adff80e55b704261b613f71fc5b849cf7b50c9378fe44bb92f69fb153ae3f73a032da5f3e07ed5d01fca53d48d2d0be10536719ff4c7bcfbd32ca9b8b3ddf5e51fe04c1e13fb2457a91e00515d6e0f34fadd5370839aebd575b6fa789698af5846f3bf081b92c260ac9688f0e67af52f1ab834c2ab54ccbead25e186cbef6fca51b7d6ad19d382d3aa9468e8214eebc7b0ef0f740d9d2845dd311a8533d7c9144e015ca1984ef2a584e4cba0d98d53c8c111ea3c8065465be63e901a2c8c7d594f1a0dfa1c9bf7eaf4604567b5674b97f1424394a31b2ac91cd95572c6ae966a6be394120a247c20d2807248033dd82787e901f57defc13f97c5e3bd98b9bd357ffeed8e5d89aa726cac48bdb00a573b3238dcde9786bdae04157c43445c9468fac6da4a765f1bbe6041435107109e88e3ab6277c741d4ea3a9184edfcf5f00af0ef42c1f3de82ebb7cc574948579ea82021dc401a4c6116f0c947a214460abe35f1badb4bfa41f8e8fdaf486db89f8e4093c2f5a5ac9965d46263bca485774cf36d4b2fe21695567d4416c3ad226c642b1537309907a9ec1d7fe7b09a0b21db80d5ca3c4feb6dfbc444a76cb86ffd5f0488a1cd5cc61bd29f64336a5ecac9177e6dbf33114772455c740d5bda7e118fb2ec842aa508509d6b26520f5f1bf604812883c001329c78b894864228158cbd285bc4d9efb76825b58eeff55ac216f92ba2cf693c33648fc1ee7d060ab01605740c698c1cd382035c3b262283bc69380392c6830cebe5e267d1f39dc93388f9a00859f686a6f0d36003da6b66aa00f2171b5ad054a3811f35b2d4885d201dbeec214940c379b1ca6e0d8a0df48e10ac415821cb6de442201762fdff53128d1b7b14df07beb4510e020450c072896594d8154e64843e94d735d33636db46a0bfb0aefab929bb3c3cda371840a497f74663ac4bb4065281d1c27f800a7ff1ce860735fa95fc69066501621972520739c0e53af790619c9f93dacc10a3c7907ac864bac7df6ea92b796ed617922ab2b21218ae179e8358157806653e2d077dfd7054208b991f27ba9fb5c09471a81b52c824ae1f496e902bcb2e5aec7043d7b43bf09da6d281dc955a517db241940a5cc7cc2814a610f013d1e48dc6cd210a1401fd2cf9d1c868f2d92801970ae6340ca8d7180ace26904a55ca3d10f6ff1c5aeb184bf8c9545f81625fba6a14d75f76263b822f5b78172bfd3768584a058cb3b537e0d137fba2eb98a40d3a6f37a82a836aba01820c671898462e8dfe6abb25c250cfa87f0a96ab205dd6b68ad9ae6e1e973b6067bc7de1035fbe5f4221fb21cfafaa0f5653c7c22a860d88a1c07311f403c326c1badfdc852a93e5271aaef5c31c99303741b843887eb2193dcc9f09d577a3c74a08deb6b553dc348852268b55f2a1b7a401d39a47eb4af7ad2476161cf324724de1475858cf4eaf265cd836e2a12c2862211c6c5e765aa75c0e397df905600795b87fd1176ab546e866802d01eeb9505003be0e5c24bcc2e14e1aa6e00f73a9897b87bcd77096db943aa73d410511885188da8749a9df7685cf722610010a0691383d53ebddae7f7200289b3f5f00564d3e2bface563cecc40b6a3da3c3a295e4385cd5fb9b38d5c0373f7af5b7faa209aa227b96ce3286a81f250cbcfc593bd0921ff28791ee3e96eee63c6a77ab0ff0875258d132e934bf226bdf84318b4f0e2517c8498c82d9f8d710fd253998c0215896aef995e156bfd6ad3c3dce725da7ba96c7158435101a36d27f189517fe025e5710bfa788b41ea796179a3bdfca17adecb0a9819743000abc588dfd5dc854f86c744665090428b42de847859b42784179a634a38d72b93386ecb9720e2962e07b9783a753a77846bccb8f406a23a0b352da1b38b84fe57566a79b9ad471fa172c6c4a9c77cfb802413c055e7b744fdeacc61f319a3f2edf86ba300b2cce9430b4c54ce0584008fff811c543a63303c4eadc12b527a3c1a315c60d6cf92b596c8dd6c68ca987d883eef691a0e1bc8f6a820b5f70646cb3a80299fcc95c5ce3ed0c2e08d48b42fe28f5068a5b043a8c55d191a04b14570b064bbe407b7baa05ec2f91aa8b1a25044ee502b5c39247a35631daaed9c5c0e741ddd28973cd048ac99276056de5ef41b0f6dd232d12576e57837d63de9f9c77e740608c0b1a1622f84baf7f3e76b94d83951d516091de2535722e16e719b82de43467d22bacc1f3b519e025ce33ebe89022790c114414678e7f9d827b2f651b2f2728c0741962482d27d805ed38aceae52f148c1c5a6af2c0ac11fa83f9b13d6f9378cd21fd0ade61818df0a9e9334cff154ba75ef5ab492ad1fe0708f2dc5b69c99cbff9be5b006b69e40aaeb0d670ab8a77337c8a78881e22e2107461c4353c34fb7ba64a6d3fc4bd112f0029cb45810f1ca5833a5966fc0ee05ed3aad4a75842bf5afe886024f12bacc9365f3507eb3df9b9ec17bf3f305990163a3b41a4fb6a205ec92df6b9225fd2ff0ddbd218a057d87d08ff8c6d7e19eecc2b4beebe86438e61a9a8de6fed0372b19eef57347e341bad877623f227bf36a2e104bad1b30e5234ad600dca6a858381f79846f0fd26c20cb7584a6b04e72f9268740281ec2a026814728aedfb88d11c54a6a2330d9fcd9c3acc02080b76bb97ac89bb4d788d897baaaa6f7d7b4670502d8005b98c45845fd003bf69c5a44e7d441ef96094234f8581c5518d72185ba48040490ed862a17e4ff5cdae2f570fd0a886eeefae8466f9a3b5f98f1e3bb341218bc52e1137a81e426b909979aa50d37006752fe3696c510ca737a95c4a0ea6f552750bc3d8901853a0499030d03bb708f411a323bdba80e37c8f848d79f1ada724b9e66c8456b468123afe38755c3dba9dff2e1ea7891848e224fceb80351c37342ce5aba1a45ad1c1eeba24f1106569c2850693d29ab168cff97fe63c1510eed234e6d22401a77675f0c46d46024f33e49f967daeb3e647a7765397a0537ad2940f9991fe3ea63b58c274bab5f375099208cd99a5beb86d4e47c5b5b8269b467354a629ae1c1f589caa04d0d3a06897c495104b8a783d97a4b62e31053330ecb60048af5d3cfaf9c914263e61264821e2a5831246ca1e295a54cafec1a06e7ecdcbd8ce9b8ef0223d3fb73147a05161e235436026a617d4553209a21a503436324558c45f13a207fd74e027edc6252eae285571e0ca2bebd36caf26bbdf6ad42c223a47d8b55000ffa40a295b10143436a9474514da7c506dbf73c61ad67049b259bec2de596494a99524a32750445041a0490daa8c1700460c7fbc8b2207e98000c10eaa8a315d63481388852b935841086e12c74e9b2354dea6c4e79e4e4fc0e0edfe87feb8014ba6a965ecd8448e8993ee599d560936b7497c69e13e378c598983e5617e931406f284114b559926f4003319567d084aa2383243b84abb300832d2f40aa3b2e105384870d256180208295ead3431924aacf1052b072440a91102b34212a52a589912db6f038a2fa10e1e4a8480f541829657aa0949054937edb0fb42d1624674d085d48a255876bea4e1d735fa8305ce6a3c367d94873468fc8ea849191bfe1e156725087dc72179985679c4ea7530d0d3637324e3148703516db92dc95d7057af9fdd28597229271bac90b062c8fa1b633f0bcaa697d09895ca28a8a84ea35ba7a38285b17f8dbbbcefb742cfa92681334767031dfd07673a8614b40c413014b8b2c26456ddde6d124add8d9792a73577b83ac3d5ba9458cf8828a65839b2b696c104919c96d1bbb856486fc7999bd3763b30f04868250274f6a6357a9aa5318377bc3633854d89edd18f91ed58a00a03e089ff3c1b7780248e89b0039a954f4527fc8ab1a553b09d935d6db5bb54b5cd9aa060feecdc3dd39d7eedd3cb4af1741ee3efec11ff4ec3a59ab8373ee5852984f8ab7b5e5ce7721bf909a75136c5917d9b6dcb2b9d9899f6b58537aae5fa7020a4830a56664c0d41a8c8cac28add71cdff5e6cbcac9b9bd6b3b09a4a8b506872ec6fee3d8f5d66eab03f7e8aa070fb77652da76fac5c82804636a573dbaa3734c9698876aead46c3a6746c9f6d9ab7c60ea02bf647b1e0d7a1ef41d855f092d5eca3025d655eae6c38886063be2325122aa5d81f4b157f0b11f210db121af9a145cca47be1244158312a6e654a42556b8f8ffefe17cefdffd3f654251a029b168cf63548c2e98d577a57ea5b584de506498040b952b4c5c3eb13001e372dc0292b844857e5854e8c4a793f5acf93f80804aec1388a019334a255afac2e55dd5e51ecdbcc182666885b51e1a3a5384961a8744cc416b6215bca1262d3116544383806e3020ee0902b209a236341898c94a3330870151396a9a3459d003314383aa4c28c8fa31b3cbe46636e9c3b6a787565d6052288498787848c914f418a43818500c4c897c2698e2aa13b952452086a685c7e915a3312318b3c4e80b172c455a60e643acf04b576e5ea66f0105acaf3a0ab11b97f1a83944010b51d5b068526d8f0d75194962600f0333daa1a79d302576e89981e2c7a70bd763ba68034670b59e25d467cc11f7c604105c5850b15285b42d954a3534a57e458189c3285b52ca94ecd0032b0a946a9832a38a5ed9922a33c24b5990531babc3668b016a51574d208b4eab9a2d6966e8b97281744dec62ffef7710219fa73ecc00d7caa73fbbcfff45d5df55ce1b5b3e4849459e34c6182347e7284ab96d71da6499b1a166a8e663337586d24003b576a7555515ce0c9c1996cd9cd59ca56933696c6c6c301c53b4c1a14e00b0b101c0cf0b4e1b6a0361cc1916e551cdb0aab7b1b1a9d234677e782a0d33cd92b299f3794f0cc689c680d1d4652a9d7a0c0df330f343bddaf156ce5903d31aa4bc289d5f83940125ab6495baa23fd367664edf517191a96e654c51b70307f589dc280f93fe8f556a25ae59f21276645e7d61462e2397a9c4a64b96b052c9f2a166eba223e3b132f0194aa29632e63931acd5065fc6a5855204207791967fdfaba1a888ed56df58f74f97adb91669c4e0a3eff07914aa292715abaaaaaaaaaa4a56c92a59150482a4e24329a59452ca6a56b39af239890fffb918638c314649494a52d1bd50d9e873ad82d01b42d88e10b3deee818c18324e3264c89021a30b4db6d65a9b6946369b9c550d07eca225b950ae49536928d324497edd86f820013424888850fd480d61faec981b4bdf67a69271c4a32276e7dc069233f70e9f73bbfb773f927f9c3711fe2148759fb1cb1ebef68f3574ff0f9d3364caecd3315b44470dae63a297eae005c8dec59877b779b9b784f3ec70974c0b71224826892ff8ff626c3e7391af46903c24b035178161f8087c7bd49699f7b5c68c798dccccdd038875bcda94877e5f18849c73d471ab443c3ad4c8405bf6f62484a7280a0d2e9f8d3206a046af3144e9410c7a6025493e22c7c1096890640657f4142dc181a668091b39a00728080512c207a4408fea00d9d80cc78e1f6d434bdad2c8a0c411a870310527aed004ba432a40ba428a142170d181187ae800aa3b0f317b14726bf0345898e0521d038cb876edbc40a10a1f503fe9f4f910a6f2334c508327533848885a029892032d4ea479794f4425891951f3d272384214c30a5228d9421624f4191111d315ac60833245550f9ada8e9f1359a6f0298d0af182f02c9e70f3d98e6deeaed2d8b191a3c373c3b1858f2d942d405386d936d9274dba4690de264160984de25943db3dbef7e2123d8b206a6ace4979e55c52958b5146a7a2c7f765892005a2c54ab1c3439dfe00c2c71094b62d14c965725d9ad21c1dee8710fe11418420d2358a581dde8b52ca38e9a3e294ffd4c7ff25727660a45ce79135c5ff1cfcf858f4df9f1fa417eac655ff6c59c8fc29f7a779e6ec1915ea99e2a02f0f23dd879972292066d182b48451150016aa16fb1489cbffb3fcd147207b2d5b0022ae267ef44d1c35e21aaa4230b6787174e35c3dc2524499d2c52737894d9e48e1a178f3b675c3a3998ad10ecb7b13b30a342e24782e6ce91a1597965f9e0890aa08925025dd1eeea9265051dae3b02116f3118112d87d4ca9646fde17349494caf42cd9a2875f3005643686ea0d0c8569395a406157ecbba1c7500b1ef9981c75a3004af735bb61739fcc0d8c641e7eef72463e77ce9cd3e6ecb5035d7b9cad141e7ed2eebed52a619d339175cf46da8dfb34064f5df7f6a3dd8c0477bb7e8447ddcbfc9db713df22b0112a3bc63633823a76ba7a05d7976adeb51098d41b786345109ebe77fe1c5be15aeed6fc8394d2350654f45558cb56af348c7febd388c52a565545bb6ad9e3b9eaa188a224491869f46788b6a5ca932526fda224441547f7b0646b8e521c31e813f79d0f6a280f8f73594ecd099ae05c27d7b61d21d12ed9bc9d76f4957e5c82d8087d6d773f9feebe5e97302a33336f9a9c67a6a966a67a34b2da4af35a9db141074e699ad2747ab81993a63de44ea8ad273ca8520940450952be73a1f09326eb8fa2a8cfb9cb4dedcf63a6d46ccb2a59d69cd59cd4b4acd24f5565dbf4b2b6a9e7b6da922593aa9d14c5a8c72e8b9f16d28a2745f5005ba6406ac7ecd8bbdbdb714be7defd1a7dad7d7ccf61eefd715b5457968cb49a72a9f8a729f93d218dea00b65404e820cad10efcb9d61a53b7ddb8dde0b14b5bcb1abc602bd11a970956745e250c4856357e99938ffa9f7ecdb1e93f97cdd6163b1664a952345175ac9071f4276f3cd5f4e0e1ce1d73d8b4df7bacff3948510cd9ad730e993ef7dee3216abb0a5b2a4f9d52adc8a179f9bf40b24faa3948aa348a309236f5c8ff91ffad681e56074c6a026a16558a29aaf4ca43cd748c4a2c07c2ff183f7efcf81f3fc62bb6bf4cf1a329faf0f1322d86d334fe9cbbbfcba4318cbac78e56f889b84ba65f9dbe4dc46d62ab54ab44e49d3e872d132ee85e61495ecd4045b85728d4b2e28f1979a856f5034b69a2573c5d33f1a5b3d3c8573b37e646cffd5ffe4fe9237db31f976f4b134543894cd78ce9a2a1269a8b9ae80c9552d288e1d9d1698a88cecebf9e3b3a448ee039c6c6a3c12306a38cf049837d34613af52a3d0533379b5b4daa8b375b94ab949c548726e532a914f69187dc25368787d6c6b8a2466b6de48d5da0d4d3ba9b8ab7e6add9b0020b0c05b51053e7f4e43e62c4a0702ea31263bc80d0036aafc74daa02027e89a72e928bd436b4e6a48f7cd2b9e63cf3f9953f07bfbc6523c84582d5ad4c576eb9925ba7d8b6de813726638a4002cdc046bc2efa08770647c2c938a0f6e205212953db87d9311f21ea073a4332c45cda42406e0c2e6b06970caead3d7060071b056cd1059c07e090c3d10db41c1e78401d82113592885a0e97b5c05bdf00b44bc8cc21b2a8ced1236d526aa96d5eea6cccbc7331e943b6dc1409dcda655d10857f6e1087e2c5698e007ee40411c2b5208be35d62777bb76d7bdbcc1208890a1424d490339fa0ca94b979dc0e1d5713b11baea875785fe6c3fb32eb45ddfd82892a13b51d2bdcd224b89d9fcb131f25868005602a284ca86fcd5138f4751c8b71cef966fdfe81105a3d24a42c48e3c7cf74bce8e247f8f187f85938b3e886aaa1eca79a129bb1a84497ab5cd29a013a7a89eac943455d66b4ca6e64e6c353f810f6e887ef5387a4933a8acab7d527a362466514151f3e1e1a366e502cbf74dbae51445179c4dc49cea56bbc28f881a785914097b8b5b6aec90fa945660d1c83d65144f272b3a63cf6af7af09f8abc5412eaa330ace72b23592fcc88a8a9af1d33e2b11313a683d0e60d985cc185ab5ca94205536a6b4fbeb4c600d98eaac69de4b5b266895b9bdc7c6baa641974732f53e7247600be3b05cbe59774c7b2b74f98d4a5745014e5339354a9547acc0a74b202dae9ffce45a3e606a5a82d4ce0828b6521c9986b2f5c46a81b3972b51c1cc87d9b8fabee5cb7e576bed51d06d25bf3c6b3c343c34690dfe59139bd4d83e992b95ac341c7478946336f6643ddb921c6db6e73cebaf15e97847487ad61f132454388616fb70a3939d5bd1de5e41c7114896b2a6ba5b0af3b91643bc4c673ce52e4f50d21660347bf7e54371aed6e9d6d70ce6f642ec70d9f39bdc343635673c2291d9bcd58382767e7418a52103ed6b97cb7b1251b9b1b81201bc78d1c3bee4cd99be76ce3ff160448101170f8ccf4e4b84cb63073998f1c8c04bad83bea2e84598ccfcd0209e2a677f8680e3b110183441fefd7abc6e48ca93f8e54620645dfe4e8f0dcd8683f37726c19ba1f57445c88d1c11446a042510ab62861d1c5134c10b1000a18030c95c0095ac8810fa4bca0ca107252f0051558b1650b3050c2e392008513a42426e0220b4a88428a132c4f7012052ae40094c58910bc70820bba90a187275a90a4852ec850492a40e302a60c482560724517416441cc0aae90e48b2423c02103434aa4b0842048810b30f001188eaa143581084951006147037c830a2b3d3802d219c270850b0a4e8cf9c2092f54b458c10d3e7ed8e80742ab2a52bf3f4b7d377593caf9a79a8d90729422aa9c52cc66a831ebc5ee4f6e9e20870176f3055af71e4a2c3f40c27118ade13014f5eeba9c51a25ae314d98d9c27ff4308bfc0e7edbe70262a5229a9f8f3a2f639018708dcdaee7b73dbee2e53b1ebbcb8ee2d346431ab685a98401ff6632abb18815ffc69c1caef6fab1807a79de67c43789d24b674d26c8df91b16ef9922e51c85ceb97b2a7279fff9e23e24b47beece31b7eb57daf2d37777779d77ef3a2ac2f8e55c341d7db72371f7475edf75a71bbf4bfbf63677b773dddded5cb73733b76efcebaad01a18f7f676afa297b97b5b0c333337737bb777333333b33b73f3eef266b91c76a339f79a73cfb923ea0febc16bf7d461e4658f23919c3f8c6b63edfb7ab7ce8a377f2648ff54c3ef61a9228bf7981f625cd8dddd35d75a6beeb435f7e7de5cf36eadb5d68dba221c5db1e2fcbd6b733a6eee15315f36a91647e5e56844b95cab5972c5f169ee16f9804bf37749c56df521d60e32937d0c21840d24fef083d7e570b6f318cec3a873fa0e44040193b9a1730b85cbe1fbaf7bd1504ee6652890aa153015d352b7e2d9e3a279fda0f093f73355f5de7f3543f39ea9145fd5ef55558c5155b4fa8961c1883133f3fafa9aaf6ada2463e614a38251cdd0d0a73951f9249c3f269c93e92d8a93f3e80e0f8d9e279acc67c6144bd7b62c800401e247f5f6ca4aa518a93841972af9e73b27b4ea6f7d6671b96dc2b536e8d3b823023edaaaac5ca93e363a879577dfefa7306f77f4fdc1e71a0697b4c8278e2a0d38a8e2a6789486c24fb6bb9972cd41dad68c7374661beeb4322acad63c1ddcabba77b59392afebbaaedef6d203f2dc3a77fe70f45ece39a6aeab039b33a8c42d5df792842000f38300241c8f484432494ef45c0f44e6908b14e7223109539034c610638c212330000002000092060c00c26a743abe966a0e552a9b729b2d03964225cf793ed41694c49d7aae8efe286b670328199986beead63e0c8a9c0cb728be8729de02b6461eefcbd9e667ecb4404b4ba2860f7fd91b18fd8b3f494f08309d259457fd84735624de6bdd1df4f0f13d0f26e70dd201216afb5a44e34d3380a05b703dd7b9909b22d9e6d56a23ada0f9416d73f29e694a14d830239a9a30951b925c50c2ffed7daaa408acc589cac14f81a95df4e7bf446f32385d0c62b7e818681e409e7c9f153db3acf71629ca1e3062db0938b7456c6819d6126235bb4bb54539fdab48f31812845b3c13825572058406419d9b6cb9ea0ceb71b0d7f25c45e72d7094ea45da9691eb900cca35ef27e12b843506a58c740dfa6c10e76312429e87c397e26d9cc170e6d1296e3f164cbe55cd3038f8106a80ea323585730b2e486900edd714e99a2d8076dbb0b4a2701d686f2cd6e46614ba7f65dc256b9e3a515f8e91db21b0023ac977628aac3a32077e474ab18e411a6818f37f4091d87fa0111330b283654bc21d8b586e59ea6c0e643455a1f3665ccf80dca37f74ba887ffb83ea321e36d79a37963506b22aa1b7f6ba010831edd64c53c6637fed212865093a18e156b270e80415d699b3f05a848ab244e173701704f68667ef95cd5495d117d171f75c1c89fa9c2137868b79ad71603e055d055be1a35e9b7d444dbe97d681d27a6001fc1d23b3221bb41609f10f6d447fe61dfec81767508eb1a21da2d0a9e7c51a70566cd124d4f78b68057d7cd8d89973c62413682fd3f83b10975cd9c6b4f8885e31ba9c1f6be33ee4c86cad8d391e896a3419e32a14b290a66d4fc58e14e909155d2556ca7fda61693a83f84c748579e251b72b06fe1c06dcef6b8731d41e1a1aeab694c87e3b7ec35e6972446cd840aeeb5c1f9c745d2962cfcd900b28945949b1fb2f11be30e4d3225479fcbb3f35d5eb2476532d6ac1a79c14926cd40d8c7b4fef34b0f45c0668eeaddc5e4ffc835bf7b044cc65dae40805d8b6ac4792b0bef5eeb6d52e3bd25efcc64d5355aa8396d3c453ea07ff43417d0b93c13e95a4633854fcf3e37543b4381e61939fb8600f4a07b43beb2acbe2bdde613d7fd86800696c92e1321b718b432f6c6d73a864abb3c9f21878689e4fdd2ff504528983a3afb4635a8d0fef300a3d0188ce312fc1ed8d34aae03c12a68e0ebd1ce9cbca5a1300f1aeb34566a13bd294f501956d4098c5939e945910f9f68cfdbf7c51a553f8de4f415c81bb658093387be67f362a3ed2e8b5c8db431261c5ba6ebbdbe3cebde9496e949261533a198ec7c96aec7f0083783a886e7f5101bc87c71b522c6c8e6e761885dc7431b4b150e94d299d35ba32a6992cbec82f1d8e87fd4156b7834870e30b18bbdeb7afab699dcd1ac0f9938d964a7ae9841da00cfa2f7368802af58ab398d81901e75e6c9e00a8cfb3175968a6bb34947be14088a01987f46956823ba704a81ffb829107bb70f0adf43d9b2940a5ee9db54e306e8af809bfdd52a73684ae68a866f150dac01827048fa04ccdfe305af99cfd02520c056dd6d586a93deffe2d68b02f2baa8beefcf817405ae9ec0dec412d8b1d0748bcf7277ece98a0a93ab95b3ab963b6c92bbd3717add212e48015d78c9e1757a09b79855c4d2a90961d3405f1733598e1c17ea358becd059f3bea9db8b1384a5f7fa495a1293c9f5b23b14354b79efe5ddd1a7a37526965cd19c87c44f79ba752724176bfcacf58c75d111c9e8980f5d7d3d2ac6077e3813d1deb074f5257d2b8786280529fa0ce0ff22762e1d38bdc8ba3b69d39e28e20644ebae00b877db200e4d2ca7aaa9194fd756682d1332a550b395c6bacebf3d046ac7ec54d4dd8fa27e9099d239534684227d5e655eb789d919d11cbe6a060534a9814f94f82ff43da5878862bb4d3e5b6645f7cb241611f6a8895edfe3c356eba265d2b0a6fe9992b9c0a2b9cbca9e3b49e55bb5190110abc6f34b60b79ab031c8d2c8d8a2ae5b8d400c5479b051f3609759a5f27c353f77a8996999c0c9bc67f78cf91b98df3fde74fb44aee75bda8acb942c673e6a6514c942d5900bd947182594e7ac19820fde3954d7b45e962feacc42cae76aa721cecad73baeff8e4f19f135e11d61c9cf4441ab122d5088dead30187d817c72d20b18af755c67162de51745c131af1542cf81fc9b77d9262871f75a16b0b877c12ae57f5a8bd6a2542b10866e0509d0381f62ade2ce8efae19bda058cf304c59d36d86404b2121b994e3fa2d6744ba5e4a6df9cb40ffcbc2710ab7377365dff61339103b013d03d36a703e0ab709e841d4493c9bcd482675a9cd35510207fa7dfc9933e364c22c654c70561d073dcfa8a55163755a3f7551e0a6a380d89a4ca55950c07a0952a0b390d73196679c66ec2972abcf9e54e9b0f2b52b6ce2e2f39934375753bed7014fe9d660ff58c0ea51ca20fb6ec237a3a385a48908552b9c7b23a53c05211dce68e4eb43a6c55896c671408cad81e989573139aa6b0ac79c58af0d40afc97346deffb7f9b7ef3af25cca9df3236798f8528b2389bc1820e8c3cf19a0148d6c1bae6e06821df4ced9899db5c85ed48ad2b7a1dee2a4272b8d565d4efaa7311b0fa924dadcbc6ef966c14f76717aa2510f88839bb555b7633ad6d860d4fd9ba2a05aa931761350887d9ba2c6ed3119f98f55af05b243313137d3cea41a8c643e77d95cef44a56b4cf18a7ded9919a8d1810e8ab8f60d206d8f9b5b249b9a5d1357dda3a9f324b7c362b346810651693a6d8c437c7209b364e8af38ad87e422d0507a91c83dabdc5c2cedc0185b1f0824b4952258f10086b42a6a13992002925250bc7823ee2da3883af74db756c07497212e0583adde1d4dc86ad5155b2afaae810bd63975b6901f8464908f3111a6bc94583c466c18924bd1e04611b31615a893a4d9bd67baf79ecea54918311c6e0ca5700128219245896bf41a7690bb0521b1022f85d766d8862a00e562b162f3162ea14d6e0a55ba66b87cc9feed43353df9cf2779b5964a39e11e632b4347288b3469457df403ec67e6315f352f08487087112de4cc2c3032220949fd933ca3f7446ac50bf5fa5abae1f300280278fa1662368943a97687c3122b25a11d8822318662b7915a2ce89527f298c4e8663c01298e4b91d2c4e84835198d0422895bd2aa29917e17c2444632309e1651ae07984d6400dbb88c164093d077b2fed959c634b185767dde7a38350c2de58d64a1023e258093db10a529aec34abb46ad49cb8b3a6b541bcb9fb13149067c0cbdc77e13475623ac665f96e4082ab21b3774cb24827c7dcbf1903ec98e0d5780cc406abfc071055522a066107e84dec710e89a4b582730bd2d8933e8cc152975e0dbf9c833a94f5696b23bbf9644b122e96a8b4647cae30a70b1ff050cde605f5782cf086df6160b680001e7cc68b3eb14507236b7fb72e45dd0ba45ac9f4b65aad074577bf986f6cfe5fd2e74ec9c668d480d2f00c8fccd94959090ef55172115324704cdc5d8bc165e115c40c7ad46c19321a72a5e59d412ed2e113e3f08b0e0c2dce4aab8436f05c72fa9884bf1f7913e1097656c25d2f63d9d2a057f8444181fdeec841cdc1d97341a3aa919d1afcbc556a2db64db96f1018f80f478b7117b31f3a09bae69cfdefcd7996709fa0cd59203a1e91d4920e88cae03e462a66bfffe05a0fae1823c6e268ffe80a71d028a803f349e518e6fe7b5401a2ca21f49312ac5882f664a62de3e144fae77023e969c58a985b3737102fc19b9b1d9f55d3af920279ea2cc34dfe348c15de89f8e1d394b9c1376442f7db809bd2768180552d5cbcc02e1802fcaefc20f1dcfedb1d50a23983c83c279e690755ba6443ed6e692ddcdaa1481f85a3676379f632fed74419b314e07eb9ce31e80524ec9ca66c6a2059e96a1409acb31865af1758c298a4081506818f5bf4f56be732394576ea614227cbfeffddbf11ad0fc5a934792ceeb3a2a96de4a9caafcf7f0d2662e878c9e90816aab718bccbdd08e908e8be7a2a15e8b66bb735ec0f8844d4cf3c0935075c60222ccdc30882f7d9922b5b2baedca6e821a0d93e7e374afd7171990f77c659778c4c2f6f84d8a5092d4423ca2553d37613b726714063a7bab6bbfed43e4bdaf6d469e7fced0908bb2c4af927bab47590a803175828c10dc57f2c8a52d71c2a4851019f6b49e60f5804e50dcc1f2c994082cbc5a2bceaeca50134ec5b77511e21e481a73c4c056073b9a49fea69cdf9077f8531bce073278f1651a83d8b73bdb4274f3950282c810256893e76fed8b7aa1c9bed19620519c9d6978f1a96a28efaa12a3544d814f88123e6bee89d65bd294764fc16c49a70b5b2192a0a87f981032a6f85b940b5d2495c8d68ff56c3fd1caf072690c1fc47a6318e0c240828b5639858ca5461d4d9004d89e0431607a84d563f5d21949ca0d44e3bdb498fad7b2b48245082fc1248a208d26b427805360c15050016af98dedb4753ebee060aa0744e5475e0a1419bef3065ebf3284762bc22b8174ec134f6c479d82784951d636c13ab243c4aaa151cabf56f8c24047019d78360ff3f09ca122314b7a1cc4fcf49c97a02d6162367564ca3e564464347be6b80fc7c20d51fb29b13a4b7fa901b87b73852bbac03b916d34b495011a2f36c3e8b733276aa05504f985099938f77bc139825089cc2d0face7b84d69cd92c1d593eef826c3012d80c5c73ebfa3961ab6abafe52d13e5d1ae6c69469859e13fdcdcfa5b409b6a43d9d036c5c815a5cab348a78335c370373536de74207cd391e170204c10604cb7d2c5fea988696d724f4081339b14c7f81742a4a41fc3442a2801450e763b7af2af21b10b6c21ce839c6bb873f9701f87d3c5802584e279f7f1f540d73d2e11edd496640a2139b3a23b2e3b47c765ee34f4e73ca51d1e72b05cd055b20d44fabf46c04383cc4dab34373f5b46d71d0327da796e06c9f502c94ed3ca3827d2679f3eed9fb3c34b5e61aa224d6dc2c9bcb92f0aa92b1cbdfb592cda00ca099d5fc7a69fcd1b6c1ab1507f495bd398b2233c291869a1775899e95cef90a992f365b831279722f155ecd6009df454b5c4fde77c182f83f4e62538fa4405c0400f112e8bc5bf73f7a1b9bc6bd08ad72a8ecb066d477a7a80f3800e4df3eac30c5f95a181650b0e4eebbc16c6cc54f038991c9652dc7fe4842ee946d196940ee14b97be3da9a64e8f6b18a0448510664aa0f68c5b5457d23c75077d8668a8afbe5d79c4cc21a8964381d5430400d1414827fd7be6cca1cd582e6e550e9c1b3e7017655be4700f25a0979182be10ebff6e3af353a97a0cfc23a0b63f74b67ede55d8236757d15f177bde4c647caa96ea439d51c612c5efea158dee1b4e28150d4837a54de7aefe29445681864931420532cc1a646f1a9c34dc187481b992f32c2c2e34514b50d7b48aad52b9c6cdc02f10ca3a961257ce6a7c5c419ed470d174da58261dec34f6126037e6b63f62284de539c6217d2939e44569944d227532e6adb0447679f76bde0a8a004237b07982bfcb438c7acd6baadb48578a9a4bb1b15bf4b022bf5c59a9d8362a0176e26d8d54dbc7b6217bed80e929a236ba36305d1cac9c486c39ace153018df9d9e467d8497182181fbe3bd202370e60d5e2eaf4ce650b286726eeb66cd838991dcdfdec558e96d8dcbb9ca09d0313c55454e7eeb53c10fc29fa68362aeb2e021d966bf96528986130a3030f36319e4805737a94bb76373168ca54f8558d5e4f4976b87782546d7ec8d3cc7a68065c81a3fb390fca361d24105b57c4ad16ca7805920a9bfdd26c26c4ac6ebb505ce240ed4c03bb82c7147d6a53b26ad396e59472899dfc1a56b949b9eefa28adb24a05754562b705d8f4b124e3902c9d843e98b31e82cf8f59653d2aaf8f6559bdc6df9d9950b686ea9f3dea9e0b396d714a81fa5820ca98482e1ae654549e8dd493e3029a781727a7daf4098deb30d869ba04664e438b6b889916444800ee836b0238166514aa6ebf051525ed397d708eed3042f2049fce4aa5e5910216891079c6c5dd882af72348b76bec035b18fb50e313897d0c991c9403310758ece9050dd7e0e65d5780619de806383fe9252b94f0faa1adff991f5b47e0592f562382373dca4439112579327ad876f003609bc11df9ca838889b3f689c938b20924492d293c5bb98f8c987a78d59908af303a0fb41bd5a4b87ea501ab292c2f9fd50e9176281c442c842a7a52d4279c23c842602f23bf4b9f241955d9932b16902c99d71e3401dc30ee94a116e30fc6ca83adaf5545ceb7bf8a4e9bf1ada5543b473ae32fe0934a1a41b030e290120e345951a2ea81e87ab6fc3151d408349578504f95fa24628aec239171d0068061436cbecf83f66585d62b8a32547bf84dd275de02d84e983e366206bd0ae6dfd03db904ccb7bd206062a249224e09cd152dbd9ed2e8c96d13e68121e317de15e11d62e4f8ce8607c2eff599fd953ee0eceee0114f55caa9499048ee8adfa04acac1f6537e6486bff1199eceb816c4a2e1cd454c344c30a8be6c06a05ca603ad4e36bf915f213a8693f3fa01f0d50a64d683674d7218814e42065de222b48cb08ec22e921e02ab602bd6aff15115a6c15e4fae2adfb093d5e934c92960ff69fb1cb6795858776b3cd188f0e53b1a7464c0567818868b30db6de8123ce7730cc031c81b09503c650394feffeeb0f53fb6a0161856db2d38874904183e042c07735b5df29f3a2cb76b9cf14c9a96c7e935b4c07358b0c2fb890e2b7c4648736281e17fe325cd89485c75a6a49326d61c96e07f11d54da26be6acb1fa0dc67813bd10f4e921b7fe4be5e5ffeb9b5f327b663e1b603beb714af394b3132626c81fa758287bc3ad245d97cee6f1b752704e2be0745b22fb049064e1d39eb6ad6f4437ec8d49a4f9bdff9209f046a6b2e966999d2fc5c2035a00f42f0343f7eaa498ed10090a7fcf745b5e7f2a464693d5dfb142d84d93a312d950febed368dd01bac0cc50177d1a4a95846f960131dcad38efa7fc2dd4dfb1a9082b400da063fe86efc821db52d3801dd2cc6866b62e800ae276736a1490dc1cc6bc61d7be202d64ffa54c68d2ac06ee396e127d20792ce5734c5e2d6c90b1300fdcc5f2a79ca8cdee5dfd4f9740e4890cb448245b045aff65e8d934e5d99e1148fe321bb17a12b1c36006a4ada70ed6022b2b1b7d4a3fd7cbc4f0e827aaca856417bb36965818e2b87b8b63d9e093499ad4c260eb1da9317b09653565cc881c16d67a44cbdb69efafe5854a090146251145d469d3e93e77618a38d610de1b8a8aa2fffb5806739c8005b2c66e95dd4972ca3c7fbf519387842a59d4e1692f8429bb193ae9ce73c03f4aef3f8383125d615c2082e1089038d61467e883dbe97c1d84c685b02de0019890c4361202364d6702b0a382ecfd5ac15290ab7c4b2a4fd6b0bd6b8e02a71c77a9b0d27e3d85a2ae1c2bb73487a0b8fd9f4f9d0c9753fa2e003718e06529b95104f5aa84f6c9eb27e9afd88406eec65c60adeedae623cecae3eaa6d75f7bf42a27ddf34622c7f5a9b98597c63ef316e0109462c083d7dc4a070aafe17332c186c27df3e83dcf0bb9b2a97011fe2467a2a99834da1055e3ad69a26064c2208ef11c5e058b51ba9e04f9ebb8597d74a6745f957f5c21903d20cafb1651a36622a5dc72ac4169b15430a12d9999192e6d88a61dbc5092eaa226abb169b46c25d6c2bec95a2e8331d4226614328d170285ae80c22cee7af0a1d63f8e6ec9543ed5e7d8a9f000006eb1442bd78f5e2addc4e67f893b944fdf7f561f9076be6c17661a489d80639c206e950094e695949b6138b82dcadaf64625b67c55f6ef9808ebbc37826b5b3864878f098fa1c8b936a0acb111de0280703efad220fcb9a1871ae1a43e2170f455d4539d4871950917302cabeadefc741a68ba89133c81104a26f3774feef757ab62a0aca032c431c3b4211f40dcc1b5b64bd44712d7a2093a738a4ce25346ce5388574aa9087926ef98ca04b6906ff9d76f8535976e3d7879bce8a599d85666397a85406a5218e5ceda74191e3e4e0a25872ffef579d724e122ef8e321efca8f095abd97ec30600301421eb302d005e5707e89263532a040a9aed7b9b45c1b30191cd88e034f4fd8562826f7e4530044adf4c9b22bdcc523e29c2468d19f1729909baf0b9f937315fe1a9e04bcc102d091c6b081ee81f729324c49328828b4aa7e50a7c6ddf21b7f9fbecf3fdbd10412c8d5ec750554d4c8239753ed69a8a83a73b7d571ce558ed06019bc67fc233cedcd92ec09d0cff168f55e3b51b281a60a2f7212988c628598d2d00dc0bf115f1e894c7f0a50b899e8bf08117512fb6c21c6a742122c432cd8114f41b2eab6ef3a730206e31c4733e424d164fdaf7b8fae78585c73462a13d543cbc5cc5dfa39505a79f5ba62940080e6b02a4fe4e088509630f702e8709d8c92191273658230b09ea8640944e427a7dc8f31b5ad2d895c67e918388cfa6e1e218eae9dc15ef9927c751261838c2f591475400340d7336cd233d6e15da688a349c3bc275c13e706484f26a751a8aff343f28b4c2bc2d4802136856c5b161d91e988a8bfa1830bb2337715b600b660b0a4f3313e35130bfc0dcb77b93136b48635a83d12a9e446e118febe48c421fddb7acc0144a73cd036328c2e7a5a0cff15f884d318b7bfa1a969933a4d4ff39b708c72d03370eba9211864a928204b00b9b698362422caad16dd7c1073d4c26f71e0fab4ca0411a932a882977e6553661f61f0b932c07cbb5b1c2babe3cd630e1b1fdb1fbc862456af9ab5a29831e47588abfc402e85e5b1ee01c680a9577c486b5808175f769f9c2d80d060e17cf1cee0f59244c6895dc3f423003d490e9fa577d882ea381265a157b5e882b8a14c17d3affca4c08a8709051c60dad8469d10f7ffedf8cd658061a6eabbbc5210e2b5232d2e57a960c0a7459eca7567cdc6c489a4e2ad82e108aec593cd6beeb23be0670bd18ffed9d868e2ad0f49e098bd2480077013cc4747919f5f90e2e35834d2b01b040bf7459ec33488e6479ed02426266f0f7b8c2d025c93a75d7f565122333fe9d7a3ed3f081ce1ae247b3cf24926647381e5b2e4fbcf24233288dcd32d1471dad2abf1b709cf5833ff744143718a64672ad54612b008008d3a7008fdf0eab7bc83fe4d8da4acb244d26759672b09a1c956e4a2ff34d15a2388357a5ffd136cc233baf4907b112bbc5438214b4cfaa4aa219b3700c02f42d6aff5c8ed71efacff776cccf7d716e2b6b7a235f203b77d25d1c946f3502e0b39d12175db0ebeab3b9234c461b03932c096739e594e4f7f78cce6c8ad7a8d35679be4565d4d94cbc48fe82a2f63f64137615da409e54ca8bd51c6b4119f692e50e58591fdca124d6465df5a0fcaf53dec7bee2816bac58169819dab84b93c1b629b6da2c1e0974aa211fdc1f31f096a50305d3e4a929fbef9cd7942a82068543a373b02cedf1378aa649c023f6c3be8f1734f4f139182e141c3db11903cfed97a76c888cc778a732e988cab2ede2d7472130c98030ddc3c925e2776608b97b1f74047f40a36648656db7dca04cf271a8fe8f1a980c2ce694ef0d11341bd8dfd598d23fd977922af4df4a58ec959cdc305ea2333a3b18841a5284c94d9f71a1f85e8589fee42c61aebd54ab0b209cdafdb3a4ee969b8d1898bfdf64a67ba07a2413277913a6dd0d756c957587cd74fe1396ebbd53eb0942630a7ada87ad82142f29a68f0894740db0e0b40943efb191b5b6b7100d4a855e09c7f7c186175279dd4fde755910c81cc137102cc270023fce1dcb4457566d9593118e27a45d290af0df540a430bfc20526e78cf3982c492d52e76dcfa66a3b78d129711ab66b298b25e695b8c37acf7b19cc004003b321a115ac4bffef8a198a681d14a301536a2f5e9b6b5f766afc9143d14f416cb4a5d4f3016e605aec118215e03f72c63b05c85ec3b3a77f6ad02da0d9ab6bc0042e389f8d5372eae4fe22ddc61f7d6fadb87a5729d68ebbf37e396a020325bd001c2de90a1a182bfa0bfda3d08678870b20c7659e4ddbd7fb0afebb03f3c6a7cd7ae41457781b0b58ad75a9b36b4e1811ae46135d1c15554a7c792910e0c736e0451fe7968372f3ab63d1dff25f06711829b822729d7a24672c3a47a8002d82580d84f214ebbee60f8608ed9500debbca5c9ab383eb850c4de0b0dd2ded97459a8e71467065c7c651c7142039bdc58e195683548d265b64bbc48ad075c0fe1a9ac269ebb1ac13859104a1ceba8fc91a8a8021c4822da128fa47985e291792123478094c8c5f49093cab44209e1f566caa1919a5986db325aea73164660f64ae8fba0517ea19d95c61c914b12d4cfd8bfaa5b457035937e14e39fff1e1e76c1a70a2bcaaa5ae50b6856efd0d78f583d04115c1acf269438a2ab5484d4c772c945d9899b8da6ee8ce61c48d1d04f8eeec1148a07b2241e6f395ec456142483bc3d0b4de29287dac1eb9f261e977839cd8dd8e2630e055e1a489f0475fefe3c3ae810f7fa91a060149d3846ccc621224b38999ea653121c717948a825aedb2f6ea3f1b8519cd6ae25755770fdd2ccdf8d376041e5537b2e305fcb2ec1398574e0d2290445a70d6785001a1ea90c2d696b7d09198a982ad15dff67559aa9ddf54eeb92d261c6767463d172b58e0e896c55b6dded8d98501ead8668b7663865d11502366cb0a069d26a06048885f77026ddd274fc5e52547418b17e7ab0a6bc3d520764c67a7ff7fb235a38cf5746befff14e4ff3ca00363451d834a729f81232527c58d2701fe7a6275d2496231c5d43e6eb01df1fd1c279be32f2f6f3e2166f364ed2e3f91a87125e70a3c192aac438ca4823c384d180213d051af9a63c4e79ff4fb3c5896fdd8abb9e00a22e808921d95c91fc151bae9f317db0ff08ed3e0ebe2b44caffe67d4a93c27d05b7df2a8ef768cafecd57146e8c0fbff350f399d46964758424c8720fe5feb223e42d8a9f3e0ef8b74eb731a5a578d68001e6a34da999aba2e0c13ec0a09901d612991caa1b3f7a85e87e5728b0e686989295de58c0722a6e7ad9940ee2a1410bea8fb102cec4a9372d97b153032061a048c2c0f42ce20a52638a656c70bdb8abfe2a5c0803a65210e433f40c62466244219f654a69f20df3daf222a0ef759853e4eea5474a227d01b8ce530a4d7421b2d21273642d84ccb6c500be7edf9b2fb8dcf1d521f9c40db86d5fbe68cba2ed57fca2d3abfd4c7b9fe0c077345f9ddf2353ee1c540c446655a8d5cd6b35d0d545d02ef9123979c5c67b50465dfc2b7354ae99051182c4033d5ce69261dc621dc99b298185e0074af8769b06b8618a53dcb1e357f98f21d945650ce25bc7a50f9b0a752fc14947500fa1ed324509c94d320537f25e261c990cc1c6092f86140ef5c7be483c064aca7a54421e0a8a5891d1966a050b403f1cb0327ec86fdf999d8bc4ba0deb1dbc1d52946bcfe9e556b8daafb2340e4ae8be06bcac80f21202d6e38b06cd4095e9b145526023488941a8e47acaee3f817a11511c2db6119777500cf5703311214cf243730c59966ce3818310db169fd293f162f6b2bae497303dcb3ff602a8f6704e6e506356e6df7299d2d13424c6e7e425e06390826b423e203945b2d6a9cf3b29220f112a1203e85521696e76da11181d8f77b3ee536e841d686cdfc9683d3fff648b431c8acc5c49ca9cfe33792f9c27de3f51ceb1e881425d5dc91ad4a32512be18113455b9471ae4b8e67df3863e4440c5b8450452e6ff9abecbf671587c7baae16b4861e2c1856e3a6bd9d8f3dcae9984926fc27b437cb0077d8337c793436829e81eed20456b3719225a72886ab260d9553663e64710d80a80f200670479ed3a048168670a3550dae394c92a6545d1eaac8009d8a2848b4d015fa63b6bed7ac5c2e48d0ed6c3358d4f69a2e25309e512a059cc89240ca78d3e134ada98fb0b3c830b5bfc301ffc538def422aa30b08390efbdcd79c72a779d21b00ea6d278bbd7d0dd7564ec2e99831cd81f8728ae9a7b652bb04040b15b00884ed2168d674f2b9899c84aaa1ffbf0f705ed1867a0b47b9198f97d476033bec2152d45558aed7d81d544c6317fde449d709126ee212cd116557699c0df0659d89721cd8501ed3f714dcd2242ae1b74133b5a92c6325127d4cf4afd423d01e88e683ec4b3435db6b13ec02b652684fe22dacb921aea63049ad1e9de410202e1291218a5e0b5f5a0fe7b7c1fd88620f11d7026a11795e2785a1e9a6ebe142a91352663dc4ab01149a45109fc0fd1a6a97aed9511826431fc652336bdb8f67c240b4f4c1754c390a05f30f1e3fecd187d9f4c062a1ffd9983040e170eeac51b445f95a7641d43ed990a7b3297dca10cbd3e311d33cdf232e6816a9ca8449b2a5e1416ec25449791179b365c9f5a82a605921f162213e8148c70c930d992d9f6a63a470b0fc5a42d5899c6babed349af1014b3910df3668cefc3de63c7640392066512b4dbe8d3abca5629086460507ca9406371393dc396a34030ab4b261aa9e2bd24e9cebb2edd5536854e86753853bf509276c9b7ba9ee0b5642bc43195a4779421d2cb1174b315a1258339a2c1444c23c06b3a4ac880da39c31c6e4a25419f30a15b58da3f8943e1f0258a48a947da0a2d6af34c6ae964cf9e208fd73a1a24ce7a0f5818303c89f697bd72982ea83a753bf279078b2f0488883dc6a09adcc174fd04845eb92a84aa67712227ba6912db5f1fd1e15cc48a78a3991038e48f2bcad4f280159ae3cf93cb35228682d8dd575289bd4c19366168b2e660f7c3e6cf49e2c97036cd785124557d619130b128f4f1520caea75c6da974d3fa33459a8b2b2c3c32776e32cab2844b46a2536ade169b7e4c0af5b4f110126a08510205ec90c4dc170654e12e13db826c6108d7334aeb34d38bb0d6e68dcce8cdca2c9e62dba976599ca553681de240ebf78af9077a401aea7ddd8190f45da52d82c93938364a4a57df253cab331e3994ae4737e2188e8ff66d5717ea25f3163c54bce8552a5d9a8c07a957a561e013ce874746a8a339395568014a439a6693d67a60cbc4d0a696acf74ebd08e7ac3af1fefc18eae8c3da5676c1cb4aed47cd8660475507a6429aab61973289277e68881ff2b6e40b0f56fb156be7dce07de864a5a7ef4e6adc9b343e09fda53d998abb4d6aa199b381794c2469848e8396364c09859eb825b2e61c23f835040baddb05d4d7c495edf3bc07fddddec3c4ee8d895da2b76fb584a0eb8dcd2949cf791fe2951ff8bd07ee5ea4c4495102cb2d907e5c85b046cf3cb1b6688b10b02425df3eda9e819ddb5e42fc04cd271e5db9171a86c9e4961b5aa83674e3a1ea3cf01ff079ee7a9298e614809b61207202ad3724402c68ade1df3beb8ae6f15957cd06645545c118866cf4c094cd4b9ca00a825b763e3d5958f6180d60bbee31400c494fd000210024feb6bef4ec887523ec09081339694e8f984ad1e1277e7734fe4254d9001bf164a1f239fd0d9037b247b1f023c6b3953993f780ac1ccb4a1a23b9848f5682d02631ad597ceb89df4543a2f270d1be28131d010949dcf88c83b871d6166b85fd23a8727f7a48c6c60b59e5e53ed254401654aeb3fea7ea4539091ef50b5fe809be2efe21efee1d094cdb02ee01b138f3d78ab87d218a8f97ebaee9c823af6d8b71468eb2dfef6f3a024cbf7d09599a7e02c32aa9cc2a08986d06ed98ba9b814893a3f91e70b3a754396bb86fda3cc8f2f84712b175ccc1f29b98e3629207293aca9281e900bc542765b19e4bbc5ba87889a0951100dbbc04e243ba591267763d493a6985ceec8107efb063ac6e540e88ea74ae7ef3b8331bf96525c6b82901afee086c34b1dd77e87ddab63628b84fe16da19e0e7a3a3c63c0a0a87cad686a38fb8feef82f40f0e070182a415989c973219206a803aa17d6b45742a10bf2567ea0ed4b037342055c6f53f3ff7f37379ff0776afc6d7bb344e30ea05a153db8b4a49ad52d0658d8b66c288a2864a74a6510d51ef9d752d27bbcb14d2f3e41870afe0229eff751c3eb78abaf944f62085616fff5a33955e956c34ecf04f058516a8d83305898a407b978341235ed3cae5d1c94dff84c9f0ac5094835e393b48ff892c0ac8a4d3322dda6aef41d63768591a97718ae9e1b5106d2394748ec6541c4d1150d32294906328f5936ee5c1c6365463b7431b7d8b71a3c9ecee35d7c4b83b1ce18ce0363e16ee9fc5c76fe9cb573b1b7b28a50c7ffd83c5bff20bbcce5380d924127c696d2d4479b7ef752fbc68e0fb05fc5603a66fe4caf775ecb5f88633cca127f28c5d2a97a943a4dfd085ac63fc9a5d5fc1688ab742a58e8b3cbae7952f3189cbe30edde578839ae521cae789b4f5bad30cea091f173dc368e927ec06ae367a8e8b10e18ba9df3268a694b709e5483e8502dfda3dba310e04792d7f9e352236438c926e1f026b0094694e1bc55c91ce1c7742faad2207566d3254728b2200f5cd89584f000e45c6321a2796d9ade7c8ac893ee315d6991758db28094f2961367ec4a38cd8f43fadcdab8cc0f47ad09f9c3348f0d194126cb0c3be676a401e7e732ace3e5e65835af90c4daf21d1c54c4badfb6d3b4bd00643d257e9e92eb27654409fd8cd34116dfc7779f1c46e1fb09b5e5fa3193240e319ac0071ccded41a0f06a3103e7c377a4d549268d100b213f3a4fafa8a8d4b8872765045f3d5dabc734ffa48a4145cb507d8262301b215a24f94564b23710dd548904a5bc2a54b5e794b4e4a322ded11b93e4c8798b695b24e56e2c8c54c1f71aae12487608670e6ca6542a1fce9fe421fa62b4c9edcd1983bcc0087c30d0042c88fdce957f029acaf2eb5f0e28b9e85a51d59a0e613436923b78c82544fa73e2a1052398d0466941a7997376de1023ac02c338952d3513a610ceaf96c20aec509ac73436f401b41b4553613243c448804ab80f5ce3291b632fb5d20908974020cc70aeee6e94de2e47ec00782e74da7ed9ce02f607858f1abc502542aefc3eac2cba7eed609270db15c422ed9b20a663070ccfed6b3cb6c2fcc7f388596377772e1a22941f67f997e9fd0a445a384615fa466f12c85e63187dc01450b2e3d6250fb7db53c467801d85662dc2e1a507f7127a50914e457eeeaec7af1131cf3884c6f925849f2d121a1e7364c62a11b6e76aedc305d20fdac088cc47f286745a8b83dfdea556a19d85ba00c6ff94bf448d2c850e3470fe0ff75d155dfaf3c15d04ff719dcb885e9ff9822de705b2c50b387fd6db9b1f6f8a4e16651efa5381112187fe97e6bffda3d9705d52a07a14b1e7f22a90ac18ee6a9c1201ad4f66423dd52f794936b14f4d633fad0cee81ee8bf699cbcbce8108821556a951a578182262436f443441a30551e7c58a41f36c12fe2ac834a2004edf24b10de0a7241014e802eb4c9386c770e5ddd7f6e045152bd705394b8831dec6007357961c517f518b71cc7b040444179414938c7dcf1c977d6c3f1b8def9dc0feb39141f19ff26a4b9bdc303b5e400f8f445ee704459904ea677e7530d16086875db42af32b94065969dd93f42bdb21c20b9942ff6f63c269433c811dcfe77f310ddb52640edd6f919272081b06959fec561caf388de4bc5a64ee96d2dae94a3b90e74c889df3faa027cc675fed382b2c20b2f314af2e7fbe713b5defee929827bb6fec833e08f7ca92f20e504d898ec164818e5315845f59ac44f39a19b28b4d082d294daf019795a43b715fb6e25c4613cd42a9321166773a600aa31baeb555f119170ec09cc8577e298267cae841a92814e36c8857075d1b37166fb5dff4e4538d8b7694d4afb5fe9a5f590d3654b1d5a991584d11454cbdf38742088ee702452b337997b72dd020c8464a105faadc4889789f570ac7b33612bc0a2eadbe1ab98c6ffb3a082527ff0302821c32ff412c554f8b5d6fad191412378a01fd8f262038936950eb90ec0908e98ae094112101c142e8f149c2a3db85cb288f5672c2a60c3e30b4de14d34f33cee08459135efe931db8b765d8b665ad5572aac52be2ef6c0f6f092d22a46f6122fce79f47000089fd4f93772c9b5ce9550e2dc4644c21bb38e046db4c123e208dd9b138e471d3c632e31810f903534f97b81f80e2dc6732da99db775614b4a4d500ba93194e2a898efa442fbd81b9ffc7e47de71a64ae904404d504df224650fa86de37a2177b3d4dd320e0fea26cceead6019ca8ea259184d1b93a9531681ae48b7467cc2499ac071d58786988a3f5749028de1a88028ce466fce3612dba614dde89782ee106637b75bb008fffcf450dad0302d8741ccc2e50bec7cfacc3be3a847fb28bb938fcde4f1204742029ed8bbdbebe98a5290696826493061176c173d8c11fa3464afa2d39b8af6498b4ab2dec1abc8950d321887ba1c704777ee457cac3546018889e67f473bfc0a6c90384332a463b240e31626c4bf55d4f6d924d8c343dc88e1238d1d9f0c98046ebca80eaa5b396239d04d24a9f648beb05439b1d06a79754cc5b32622457bb8e59fafc91df67eb604c3009d65da93dace177fb886e52c8b7bc30d804fb04571245957ec942451014438b68b2637c6a19310142164fcc18ee56a6b255ebd6a06bfd6c0a322333848e91145e7031b3613f1b32e90b8b1d1d0a6aea4cee9dc0b1f0fdcd14076535900da52f09e1ddcaea42283b520f621159e7114b58df93413d92df0357c10faf81043320654431c6da7eba3475aea9dffcf314a3b551faa2cdbeb386a3ed9fb7befec8237f42a2c88bef2c2395f7531fe50256cc143c9679ee1253e894d946dc8f5340fea1bb16df2068a9e476f57802039cd1f3a9f0ca9799b156798d56a46009054d2d8c9c9782b232ac64bfa354a4daad8a8c7aeeb053c929d20188df0a5d854521b8b0b355874b6977b450c5a990d21f7466ef8cb48bb19841f6ce27ca967369b9d84ec6e00ec5cbffb7942659bb0619be71c9e840bb1c0624b22ea06567a535e931d0016c0bd9155fb5654e990732312693f1eb709f998161993b6ac81431db305ee5f2509e990cd8ea5e63f26cc46937dc122e8942370d652922daee018e1abd02cdab836832222050ab6cfad62c44314235e0ba393226b0f4a563d05ed15d0f45219b10de897902d4afa73549502f5d290aba9e134d302befcb06eee5d8be907407b0b4b236e7fb470dbc80bdc259728bad2ac00646503b12ebb1bbc56eccade61b86e39db51cc67537342adf7a645419c5721539b8d5a602a4793e315e3542352320bf3a4ca9adac30499f76ff6272a292a9a76b981e275c3d1aa212f35b6ad0ae50f06d7a4245e9c6e79d330c47fccc3b9da88c1f7139c80c23b89637f50c9b15b6e277df297150edddaba89105e780fcff29f13fd04771727354c051ae25607f33902fad9f18f07b0882c1def233c8dca9c94bcd53c8e797e2d4ded12e798972b9bbf49aff81cc0b025416897a247bf636e87219d030ec1614e484b666a448f3abe72cd9f71cc7948b31a04f51eb73018d9a841dbfcc254c0d09f01f65c97d1897d3d1da7899a57875ab6b220e49b820d65c24659b75611b20aef796c40fd7b4aee39059e114f1eb52ace8ce7324395ff43e3a683a9ee70515add618c3020ebc19878053e18fc8e45b71a6e88179743e70af4e7de8982bbdec475b960ac6a852237e52382ee2acbf7dcfec3dd075d5e332deedeaef6387580f961748bd5d44d3ef22ab4081f80e6e6ebecdbf5720098f0dd37ddce1ffcb0801bc951bf84efe4765de27ce995170cfeb985e8c30ee26bc0d2492eb847aa27a183fbb93768d0fc0968df9b58d913fc55c448832a2d1ca0ad547728a17f870f00141c1a101dd979c48f6c68e52cfd98dd56aba9de31cbd28770834d7755af0465af6140f13e41af627a599e5ee0e9e325d79df6edc51e224fbd01d8a90168e7199b423cb08289ff72451884e9a1d3233536cc63b259005a1ba124903f58eee5f4888a5c8534271588d6397c2bb05723f78d7b9b5304ab4849174b06df8f5da3d27ec49349a86bdbf46364314b983743a8ec7c91da750b0645ec82b4534868f3e01c453605977eb79fb5584bda1bd6df2f03fa40afc11ef067d23e222eb0aa5737420fdee043fda16a5c80fc01b7c66cec7350fc2520fa2c9b8f40ba0e178b910a259de579b88379f05269624a1dab19da804930ad21da71063b19cda7afad34f5509c3222898a631d07feee7723e166083c082929bcd51fd37b7947d5411af86a54a33bca875f6e8571d683fe188f0327b4acdbd220e5ac2e8f8a7d63f2fe6f5dca07e2b570449744d1c0b47f82570a6df8b5ef4515387ec0977f0af47ef437d14f007f9f4c73ff8b2d6f26c26722bef3238bb08553bdec29c73e313e1c5b89d98490294f074c1f88d65f9a41b7ef54d8ac5226bdbe5ae0fa8cab63604b7a45c6a412d69fe25235054a5bd3f91db86390722f834025dd630441c1b5d9213e7a201a401ff02cc2777ef9f6fea31ed8401d1039172bbcf9fa77e48c782bf7c75ed7076e2f110f6c52dee30eab82ffc2ec42e5c7d1ff687bd058dcc1956aa7a8ebed7b81b4a01b18a77003b695b275ed12068225bfb20d2ff3fc0d251722fa863e966281178e2e717a036ffd23058d931c5eee896b42985a78ef7b71ca715bf1bf2ed2818c12f613199d204a7b40745d3fc6fca74ceb87bc0e4bae3da287b779108acba56cebf3a349844cb76d9ee1a0eb7d4ff667406bd9bff8b4a75b604ca55ba3dd3ed3d029c1d24fe167f75f29a7207f8a2b2d137b8029586cc0116ff3e66be78d55255fcf5214e3ad23b67c9b63344af6bdde78e488c996dbc098f58e77e7fb8a70961ccffc1a0b5b48ee9c90daa1715348daf0cc363ce37a116b29b98cae6e46b1c6d28ab21f14235fc7c34d73e2a28490e4bd9e7ee6722adc1f86117f87340df6ae2acbac88dd24398d85e1e8d7ca5d1f391fc7bb99dc108a2f5c94411dcb00b22c97ca5f47c4fe42e17482af3b595e3c54e2bf88f5a64d5e04c0dc3724e79e235c5d6aa3ea297266c86bac7a31421fa10ebe21289ac0de3c2d02cf6780de830d5516a1b1f71fee5efd6e7f7e2d346fdefacc4884c50e408c89faccf04d5524209d01840d039ae739654a305e563a5d1f3e5c601ba9cd29620ff65c4aa44ec53eef5a6345ed835aff3aa829b02efb818b8a892a3d95725ece438bf3bbfc0d63ffd8d316523ffc46082192902de5de524a295392322e064006d905f76e776fdbb66ddb9d4367cfdb229a9ac631438bec618d5448c0d61cacaa2e51ab8231f4d0ffcfac12baf4f57ee99240271d9da537637069a749d516315e99868e5a60b284d12506388c1f98888b9140342383306327ebe839f39c48aa0d6642a2304b14bc9b8b94558da855264dadee524d155dbee796155b78c95b6c71357768a19a202a25ea3bf498a7bcfa4b98184eb213b72e79e7b7ec758bb0d1512c88c413d4fd6b9931913d9f4efcf159e8828a8e861c5162c21326282c535ec6a49157b1392f1e6dc14cedbdf356cfc043bdc4754abfc3ee7e93f6fa34beb360c782164f5862bcd3bcdc3c57cc8146c05dad479796be645f540ae3bf8262dfad5e674b97f7f2615e7eedf8550ca7946d03b38c4536b9e441ac5f9534f182829c899b49a4e038c3524ae984965ef749a7277904f6f7835d25584ceb0dd45aebd89c1f0c84f202b9e84e6a590f1d8bcd762c16db53644cb20d358b65f1f9f1f1f9f101a5530c6bbd697b369bed293e5ad366a015d9742d5b12b5963be78c27fe94487feeb9c94929e395d272134b38e7e9badd9ef3b773cab7d3be13d131b7da63e74a4973535bee1ca114d3afc54555120f942869d1a5c69698d113b3d0024b186625a197703146020d4e9159cec0024649ef291afc62a586c5196994967081c519086dd3cb656d184d410ad24ae8a16d385c9ca49482371c73922bd282b9999a9c1841e1360b1f72792126697252aac234258f2bca70630e3beeb0d2e41be7a524219e229da8a6a4a09494a07a7081ba5fa2747863c41d70a0e8feff3dc5992e7dcf5e6baf05ad4c503e6865572b532638c54ed04a05296865806d9b9fde9fc5bf255c4c854d748af55966e2cf44453294db0a3c338715b8d33077e86126ce40807cd9ad72ce39e7ae28533c5f39cb1e9ede3da467c9f25ae21e26e9249f24948c9252128b843d964d62c4da38dc6d09ba1ffb07b893480838880fbc3a880d70400478e0c7fec422bc33024302000181bd3eef7291d6a672eb17d4cd2f8cd340ed8c63ee26e6b82cb9f97abdf00b3711808b001b4fa79ba530115524019c5c02013ea7c23a02308569592a8a8a86eda1bdb74405a0c591806c995e669829668c37b08726150d004fbc418931e86346732f40afe9ddf1a4cb26194c5243bf1eee7b3cda6584e93d43aefb3c4c009f8b01f2f9982b657e4c7788aa4ce2577df2d5277fafc0efdb388378ff100200a9094a0625fa834916ab3afef8a69639058233cbd0ded805bc6587248a14da6550f3b1df1d12fa920008aaf9f87ad4efd20cf4fd7c2a581fda2cd72d7bed18de7ac8b493eae6aa31782f0ceb68ef381e7a5f2f39e74764ce3aaf1711898333c7789981b3d0ada7349d1dd5519ed0244a90b8b865c5b47a602db7ed5a9dd515c6ca9a73b9b4772a18f9429db957062f9053761c97f14cfaec5fb22c3bb7c26ec5558ff25f526ed9b800099fdcabb5e7ed5d5404c4284851bdf2a6cf81e4113ec13e3db638406cfbc468df86a514938893e2e0c14c18e5ec7033ad343e2071d38c1199133cf232538948daa361eb101d08298d3c0f6f557b3b5f99b1cb3cf49cf28263e4983163f095639e461554453467fee41c6df4a3f58fd4e3f9783a1afd7b175fd728ce7c26933511622d1557b871adb29bee842806d658d850601d12f0d579b06d5d7aa928965f1bc5b43bf916245ad4d3aa2566b5bd64f12ddec54ba3cd6411f32589497f4921324b0c63d525a6b14798e36297c4465416570a44d998059aa73cef15879af34e1c259defb1c66233267be2e2511893c5ba6935959eac3973ee686d49492e2cfec44a2fd3dce9f5453141ca3e89da9b96065ead24f67e53e74172c2a72a2d5455bc6c4fde39a7bc341db44494a39555cea995ec5b7009d3cff3e449759c52fe244b0e507270d013fe2edaf7fe537d98472ad2fb5ef961363be595b5df5767fdf63c7da9d3d136f4287ddd65169d3b5b22c99aa3e55bb6af6565c05ec5489e39b3afa55bca9967901eda9dbc31b162ab1193c7dcd7cdda33a6b6f8f4443a97dc4c9c3c892285c991843cd5535554bcba4bee46b7908bb506ebb61d91cd25dbeb46771315dd0cdea00dbc360b8ca50d1a4f18b3b8026a6b0fc7e88192101cefada22ec7d75e7ce5749fd34e4a23add6638c71cbbbb76d17793a9204e37b6fcce24c124dd2d88bd858e5e56b6fec340d6397f50d6ebb93deb8ed9d0b36cff2f7937f9cacb0b5d55a5bbb2d132d675dcb604d8346328db6f3cc664d629926cb3098cfacc766f266dbf3ccb4d63f3f32d96cf6d27ae6e3a35faf1948fbe252ec27168b618cfd271693cd68dfd52ed832da3622a3d1623e60ed022334fd92bd629fd6fa4513e2a4c7e7e47932c76fa455199af4c293c2a96aadb54cb6354de34cdb9ecdf927d7605a67fdf5d03df40548ec8f8681b51fd0c82c168ba2f50714eb11d3bb16d3602d061af1d1339b75139aa6814b331f2d93e9da66f2e17234e958ccc7fef999a18ec5f6a791ccbe9f3cdb3e4eb217a5f639f9f041732ecae148ea6328b562d20b4ec90e465116135b86143c1aeb7675ddc0471b6fb0083175041e37fce8e18d1931a0eaa01184d256ff6d955a804d1060f9249de674a7943e9dff0f0e39127d8b3b5971a0e694524af92fc1e933e8afa0c811da5192ce92f282682f03e15988e633f1f449f7bf3fa77bc41fe70a5ce0b969f42d9fd052babbfc9ff45ddeea6def27903b27d1f437c2f07a8b48ee2f915bf008fe3c282221d02076799e7e24aea5ada2ce34cff977e8101bc69e31e74bd2b70d34727d7c6cbffdf6db6fbff9f0e1d87d369342a34579bd9e58eba456263098095a2f89c542e83a25404018f43c8cb76cfa90c9b6c7157eb6e339f1e6b64f262454db5b4868d7843621a1da16120aca42f913da7af4f87eb607405f08b1cf04264f5eb39fedf3b98f8f07fdb82fcbe5d96cdbf76aeded2d096c2f49e9c10961ff6a434299fb36df402834904b6d6868efbd9724f9b16b1b0477adb6a7fc00412b1fc864d76a43fe7be8db7b0f7ddf1e023fd00a007b08b452930d7d41bb86853616aa4d8c855e552614f43ba661dcaebeb7ef867a424ac18892f7f55dde2c7c53de784f2852384e0fce18e4529bb2d57cebf086f384146cd8143a2c745f9a721f89e929e29187526d5781b23570c3fe5b5e8262a3136b6bde9a7e1ca88acefbfb6e215256b15e3061744581670acc14131178bb88d22094c0a28721c08081620ba539670ca9f41a367bb7b5d68d0db00b5a6d65531554baa4a892d315678eb00a2fd0b861434d953292c2d0698034cd85db97ab6470a1051151d4700709240480630a0aa83396002306043908d0668a1fe0d2bdf70138f2151ea18dd95babd0d0b9a34c135d4c28d905a66450638928ea300207255bc1ed07ebba8d0384a4e32c221dddac4891ee510d8e569c9ba6a5174e612cecd2735481903de4db7a554ca46a07bc2b38419bcd1061fd20333360ec505d413d71dd4792408c1fd8609143176be2282087d59cfb05a1d3659094747c11258b0c81d25b013c34035d1411fe08f748699d564125913867179e3d473c4df964f0b4bb56b3d8d64dadb0e618b1f5703c47a43cbfa09880031019f01f9fbc43d3b9b7031011708ff67227e52249922a587221fe595a97eb0322eeccf7d9447d02712561afa0f8402d3e008117e5b3234d2110f780024c0110f1ced6ef4fde415da7c5cbe0be6e3f7f9027933f39cbaaeb56fe741fedba9dcdf6ac562ea26aadb37d247d1e800406f87a440b54b78f1e4842f1016f27c5c185971f267f3bed43415f00b50f888f1e9fd06744db3499ce18c8430f1442e44afc30fdcc01bfddeda1d806adba0f6bcff1a1ef83a92d077c64d675bb4fbbed9c53687e5c84c02949b499e664d64661d1b22556f1ffa641cf93d092c997b3ac92555d78f618f104bbfa35c3396bec72b6db4e3d456199d25273f7f9d60eca1427cfb9db1d7e752f15ee36329f38896ea0d0b9cd16641264a7d9663c31dacb07535b62519c412a8e61184629c4d4b39c7a242672ccbfd65c531281df35e2cf6e9f85d1a1a80748767487170c5254c0001181af262c51e08d8e708a208a73841cbd151e132f62ae99ffc0883451d2a69aff10e3e459a696a06ed3ac40ce262d407912fe874c4d563600dfffebf7e5e8501d06f19f6aedbec606adf554cb9d9c82a14ec3479e013a00005888db275e4ecb38e5dcee73346480170000b4e86a2f0e2d0d7deebabc3b1bafd64ff1ef7b3505bf28fd9541daa7f3bddfb4a1eb6cefb42eafc2c4f87b7a7624f93d71fbca557a7ab2dbb904e8de1800b20b2cf9483c3405695a7eb1e8b37f308af91ef5194e8b34c9a597acfefffff8c0a662ddd2aa758b86ddb4204445342fc85a6b7dea8232f2bccba17941744a3b6626c35f524de9e4da55aea16bd5f5bd2aedae525a29ed9671dc79e7b496db417fe7766f544cfd29f507fd2c9af488d621d51eb157c9dd4cd8b8271c66c2192a7758bad7d40be665fe989ac6276f2ccf4a7b4947fe376b9a17b44319448a8f179d3f8f3479473ae7990487d6e372c69fee549383e98c347245ad39e5f7df0c1dfd637c1429d1cf9afe0f6d2058f48f4557fe76fad55a9777b46ed17e2d793da455563ae2a451ab188635a84b79d85d37ad44604fc68b82bc577b376ee3dc05f18fa848c9ebdb4421745fd05e923f2fc804fcd13c26dca7694eb27e72bf9ba3cc1b5229957e53273f0e1df210ff4374ac9aea41463a70c78c8d948c566ae4b9718e2d2b4a5c4103872f7048e822634d1357ae3ce10414fa81288c1c102204da7ada7298f66e5d19a623b05545ee3a2167272bcc9632c628c18fff71f494534f29e5169a06c6cb1171e891428d9b1f9a9888e386335ad43087cc10b18b24aea0f861ad0f301abaefa8ea1a8c07ceb32d50e7063a67d04cad69946e946e9bdcb61abbe898f1393b6ec3f6ebf5dab66dfbcf327ffaf36bd8961c8c765fde368cf7b6e5eff16ff2f7e5fe2577efbffdbf2fb72bbf7bed7daae79c4d224cda36bc4a531c267b794b3933b77df293fb878e97f028d402e4d3249fe338cfc0e7bf7df91bf7c536d08f6cfbd0e4e70c937dae067fd09651b915052172996cfbc44632f879b77f33e933da363f06da7a6f95ffc92b77197be4d6184b5b3112ada5565467add4ee516b2dc32e86daefab93d97fe63a2bd6405ed994aff63a4d939c1d76bbd63faf21a9b5fc7ac1bada616bed4b7751aedd36871f7f85dd5867637ac3144759fdff6dabdb65cfe5ca6ac5f5fb2e9537acd5db7cfd1dffdeaf95fbc7af77b739acbeba8aedb6ffb9fe73dcd72adeb5bab16fb4734c076ca9c34862fcee7fc7eddf657cef6f18e3cebb6edbd19dbcfea561315c31ae1cd7e57d352c8671c5b39886e5d98ebfbdddb97bfde37def7f7e7ffbfb7577d3ff77c205a48139569bc4f4df18effdd763fcddb6e96ecbbad77e5dee72fb31dedb8631febfff1ffb347a1362b483320d76efe532deb00cd6ba7dbfdff6b66b5dcef872771785491c4744dbeebdd1aa28c95a98c7c8a835732e99709286b19cd68d38b75590d2e697c5fc9864b9e7ae3ebfedd4e51799db5988d1dbc805218a94e23449dc6fdbe37011bbed4b7194908bdb3d721e70e0a5f782b508ca3827ce1db1e815adaa15cc9b4b8a5bc8c7496f059376110f8c887e29886729682d2d220a3d8fc88b4d9cbc5dbfafaeae2296d14b5905c7da0a4688d42ea0d4e9de46a6d4462a766723a3a8946890e6fe19e3c7e82f7dcaff4269b48a3146dfb4e8f68f8480d3defc2f5ddaffff5a77a5ee724a9752ca97394619e5b66e444a29b5b4d61aab954a64f42da57b94d3a78c9aee322a911ff6285d46ea924a3ac31853f76a24af9794b967bde79cb16ee2cd7d9b1e2d681fbdbeb6cbf6be3b752af177b7d05cd4bc73f69b9d5dafb44eed150e2998fcf076ff18638c3b5e6979b94c30cbf7a752669e99c9bad41db7844314b4e7bf4b29b1bbb94e85b65d49398976672d83dbc4ee5aedd71492422b9f8e6f9a07dd2be3e82504642dba79bbdbfd6bb7fb9b55e16ed06efbd772d1f9fac721069e3c91e2cd737abd73ceaf561f732d15664223fe5131d1a790087c7539afef268f947e931c43e7df19b795756ac89497d6414b722de4088c9e745cede509da1ea9363a413c11d436ae5326f6b51eb772c8c10a38c4dc71c3cb056d8049e20a353fd8f1810b3b7f06ccbd8dcdc2ee5bbac1db2b23678cb052d9ad6e4aa95dfa7d42983572d4f9c20c16105679b0203185982a2b3aacd172c483eeaec5c0866836dcff3f12911a2b6f8cb1614d0f6cb8c2e029420e2190b01253d5a582a9ffef61e02fd0849efddd6fa57288a80e6c99614d4e95b0dec159b9d5d2b9a510ed978d5516a9289a08628fdec2ddbde909345d40d4f9e28738b05072cf06b9bbc7ae791fa9879a24b2dc1065430f50bacc56185d8841d3861d43786ad86822b3c51aa71bf2b0818412468f14afc6389346133fe099a34a296af1912a0f7dc3d8aa4ebbc04a23268c2d7966b3d90c068b653c8bf958da4ccb6632b04693e53bee181f70320b67565663544fd8fbcbbdcbf92e31558131cdeb230cb96c20539521304e9929599089a8824c9b824c411364f27a30d1a07c30d0c44db95e9f70d471ba0c5fe749679b0ec67c30924e35299d8afa7fc0ea6275734e07bc3056072a7ce64beda901ecb0c5030dd41f8db9efd5da7f93524a700f4929a547ec8e9dee3ab9cd63a4e0dc3ec3cd49ba6669824fe95390f639c8299a1d269dcf039edf04bf8139df1f02f72631469a47c72819f8cbbf629f5eb7f5d36f454f1f7698f75f07ed6e83f57fe35dca0f27935b5029fd696bad0e87ab0153834001f9018837c6d8514595d519d10e98a91d9c9ad02a83ca0caa1bab7f1159fdcd88923a32325283c4e6c5ed7f4437467938e79c9b8b704645a692a1898a125bb688e21a420c1e31b4a972278a863c6d78885b220ca9c0aa8e4daaca8d5558af3ade14b5364454719515471762d85481b4478b31e048628d162d3b4e39f0f0e309a922b8c43cb14416205e3ee4f1450ead364e63eac099717974c4c07040236bf2f254451975b0718308306419347270028b9d3cd8c8ea98b85f2efd2a28b287ebaf688bc4c721aa0c87cc09c49cf3862aa02819baa83f179ef8caea4575e9cdb47a2ffc82882694a1b5f725855c5689a92ca2350e400100fad1af6f0415b8ad42944961788931d38ce2591724aed231f893fb7cfb4dee2953feb4da413fbd1cb813a3f21366676aba6ffc59bdf905d5e13c0baeecd026eb0e560f4abce15435c31b77782113670c2c5cc60ff1a2186143183946e4f094a5298a3d754c41e54b9a3278cc41d35dcd208bc5c31c6868c185049929e2d593143a38b1441832d410a30b9da2039728a5de970d8d0d4784734e3a271864267a4746f7c70d757b84a446475a560fc4f6323c3292466cfce01a4d0d5e722efa1e64e620a27a31d83a10a7093b77d6689902013a717071230a36d2e8c12b38e241fcb23cd1dfd30b1dcebaeffdff35c608ff1f4f90a4c9bd4615dd0f7a6a6cd106f00126ac6bd066153872cc7607276f7996b72cc7685d9e75ddc675308c1d06eb88f0a66170cb300ceb9a36a09f4df398e4d8be5ba769b30e6836f391e1bbc968b219c6415eaf178d28c9a6759b467b7921d0ba172dbf5eb32c93c962e006fb52c837772f2379c35746116b4c143831f9c29e476f3277284729d619067bbd5eddf681c16071d332debaa82507db641dc6d865db863718122ecbbacf678bde4e232ba8c89b380fc85f454a88ba8ee3bcbdddfdd2b025fde3e3c371dbe6a339d806dbb018d7691f9f2f4a2498a31b09957d29d0fe2d98bbd7d65cd77131bde1bd75d1d9c8a832174b26b313d4524a29a5d2ef064ef962271579ad95bebf409973bafb909474afbbec825277eb8488cbb5009c42a4f445b2c156a8cc19e3386dc51a63c5965a69a57ffd0d253e946fc9c3fb35461c82d881610633587ab8ace68ce1411e2c3258a4b963c50f7290908963851566f0200616d0993767c8c1c61173ec09a38ed1b6734e4ffb1466b86648f342a3abbd5db4b7d090c20b292de4e0a1880de668c3861b5d5748959115a5f0bc45489822f5cf8874ec2ad89773cf19c39c5444eefe9adddf65b4f522b1d2e76080863470c0c38c2ce8f850c117585c5671e6fc80041853ccd6d4229c2b31ac1f862e58020f176b90b892a60e0c6488e28b273c65dc70cda4b002680a3d59dab4b1e78cd919535b4ad839f3060f9696bef3a3411aae2b67b898a883061b6adc90618b0f62dcb07933c6bbd244bcb8238a3258e4605144cc63c69b349248a3459526dcec107b83844f6cd305736307d099258c50c2861fe2244125e2a147893a62e8908a228f0f34849893264b0c156c7aa0c10e991846185fe6e4f1e4030d415cb111008b356eb0c329082f559ace08f1e44689385a5d560ea0b2038a385254e1c9d365872629c0a8d1c31c1eea0c61c71767605e0c452f92e8dc40910b8082220b16789071476a8d3c4c6421451b29ccc042034b025f1c150b3741b4b159f80caa509f114652d125545230be91647cc65c6102b513bb9e4491c2e4f4247d6ea92d2638617264881223a3a2a2bd3d4f6bacaaaa24aa196afe5e8696fbfe6f43434353dfd95ad2a950c7b7d24be746273701dd57722bf8bdf65270ea392ec5a57d1a11e03243e56099da0a0b08f198b183d0ba374d5ee57df55596d695cdd256635d756da5995365a5d5a4b5ebc28409c32525fd5aff2913fa2af2b6ece2191d09e982b485d992d0d0927a915d641a69465689c114945614d7cfce0febec714619e5932813378543ee7d28120a7d642b76c9211514917a9c3c8972df8422272321b16acf4de4055151b0648bd00841b83538c4b5b4d3a73653ea594a64a991a5499616b1d4034b9758eac45229963e592a65a9164bbbd8a3faa824ad5ec770001000a3940024160b47432241cad238c70734258f4858c8827114c8301242c820640830060c0080808040300c0425c35cb50f278c4e4fc8b34fe073aa7ed22d09eddd5ce67b28893d5cecd783fd5dc2828bbe3ac02d1ac18cadb7049a65fdadbaabba308323c62ba9ac65bc5d86be12502cf4fc0d72f376ff23882b8b06f0cbefcf63d2e56d44689b404c34c74721d8385fc7faa84c4b240be3b72a375ad3ca2cafe787970bd8d479926d6ab6bacb5ccabfbd345935eb03354a69bdf2d122283a7cdafe0b15445d92dd8f80408b6988dcd5eeebd3ff826de0a0b856979606c5e8986a04e4570b2fcc5d5eec65bd3763b93a5edefd0ebed3e54f23ff6e7abdcbf874f107d7f11ab8dcc6e32e7d8d66571b753a105d3c2708043b3a05f646ede71dd80d89d1ea0f2a9032d4b8cc5dfb82e1f47ee20e68d53e26a8b3a184615eb273c101add2508ab248cefeb01fd99cc2be575cbe27c130dd7b9544c0c279f204a7b1ec86c3a2a0a6c267506cd2480181839b70632b2dfa24656b8c0fcaca1a2761967065e48deccd4cb238aa20d7a9d7a161b897d4768f2313e436d73bc597d7738cadcb4d97049cfb292d06e8fd92455796cf332052263ec72ef6bb8f434c430b56c865f143d6325c168af82a86d7aa00855433a2825f8b06fd1d608a5efa22ea413bda30e89b475bc797660504c27b991328006f6eb04c43f275b98d3f7df1bee457c85b107ca403b61d262bd92574e37077967c35c39a8a2918f67895ffd47ae1ee5effb4a2ddd187bef5d4cf23e20320ce1b339fab0d3ad7d660f7056352e416b76427e014cf2eb4402b2735e474af7ac51c8bcd77b00325b084136409481035afbf3c6a166913f1a08ae93da10ef7f949b88f6999814546c7c3178e622169051caf8aa6eacdb913a1e6c6dba752f2607a180fc7338caa5fdc2daf26741d3ebc6b849618723e84a120d03291e0e00c394f19d2bcf82b43e3005fb6441b2ef1a8a523f9e746aa883d2a113ad7e5ef88d9c8175172c8f54e6182ebf7dad3eb18d360adf79f50fec89c29086c486c595b5a45df1b36969aa163a81d4a06d8c1926690c5308deb81d8d35d6eb91eb8372c49a131ef6a5120d4c31666d9a346aee47c7a4139a3d1fe854866cd0f95a2a4bc61cf527aa819aa4b4a7717a64de5a0428da243e8ebfb503ae3b3e41c66cb87b7501b4369aee151c732abd4f518d0bc4153b11f5bad5981c4018ab2543dac5955e4584d39bad6b7e1b6f7ffb10a60ee7cceaa73b31a394261d3b96cd791ad28234b85660b7eb070616d9cf6b3dc18a72fb8860d4ed8709e76b65da33fbb71fd6b601102b2372cd1ce2ac38792de1817c41861ec61faf7d6029a6173ba0f6ff8d641d7d1acd7678ed939ff0f6ebb25e3ab1a3dd3ac0dbc91f760ce852a92a974cfae48f95f7ec638fe0dbb6aafbb85a3c59f0efcb5eede7457f19c9cf69e04237719d8e12d39dd9fe2b1974546a86b765cbeee7e76ff06164f0f88d3b18cffbb534df701c6219d1220e34fa1dbda2e4a980cf410af3d84cad4fea2bedbb6d2cc4883172a124c365d3494e3205c5b6b0ba920d7de15f239eb868f6122d5f1e1dd31b05665750baccc057aabffac35ea3ee92ff26e0592dd6a801898018e7c77b40a5b8620ef2123c07be7d4868dadb7156e98d5b3359014700795222ebec9bd62c794e5e8f9e3f532488a6b730d0e0dba0da8f34434ae62fe387b225a112ddeb2c8ec96dbdad624c9d210c15b7dc8d059482c7bbefcafddec06f87d651840c61872080b5563143442e9b0e1562603a01052ca324eba59086cb3a4a06ca2249946734bc6fb964f15337eb995cfc5dec93de93bbce57bbdbb7301c0c49c02a3d1711a92351c1443c44a74d9e6221fc14a9483a0cfedf077fa1d59a36d99658b4b08ab138311392639cc5344dabbc391429d65c9183188201d8da8e91de5cba2ccc98789fcdc1db0bfa2ac5683f0b197b69332667f10fd378dfdd9b431878a9597ceea5f0d41876c3ab165318f900c8156c1ed6109228303bff2cf19210e19775d1192721af4c23383d262f4e46440d462f5ba8fb5f5f54122ae293f2bdde7aafe460f44cfb9897974b37460b185e76426a6ac052eb1aa908a00a7db2b49a7a545f250ba216d1919911fd6a03cd8a673c5c6548a434d52bde59f1ebce1ca03242f9708a3361c2ec72fba2bb1519ed9ecd615f856a5e3f5b4b92759f8f714980de3d19638d491e867a1498ff96345fa8d7161ccfa7b49a2b352dcbc4e8ef310f097b11aa7b5adb0eb9e61fdcfd530acb8a11168ea648e1af6c29da71049dcff5eef98823d850c0ba113db2a8f34b97c58593a043e016c8011cf4072248445ac52a270fad438e281020513874fa27866bc1f75b3a935ea346440aad7445ebf5823c5e70d7cd23a0d6945ce1beea21754cb7a940b436f2c98b139698e2f2e3cb279ac4dcff7fbcde921f23727c87ebff9bd83c91261a34b5f769b0de48290608e3efe793f4a2f2f12e9b777bc9900e6607a66c0a9aa277f4b7b42ba4abf3895d511d90f4fbcf584729f758e3c2d9f6195b22cc6b911bd0ac18544122c07d3ef9d2520867ddb366d4b993b07ebec70ee24f5bac54bee21979af1aedb50deea45448f62c720ed8ba70ed82ce8a64185e3be39ca53d4dbe935302b62e3184aa8d73ea4f9399416b507562521dbdf4762cecf456428c6da26220ab34d1dbea9fd6da229de461680def166052083a67a38e9d0693db6034af40ae8d2bbe90f51439592c8b008e3ca500bb833932679cfaaf98110a991d9092ab356fb062d1c9a9e4d1219fc6dc42dad756847031c8b0706fc2b3df230d25c94753af1a295c758c3b038ed3e36a4cde6e463f5a37ee0b45696d4df01c19b3bf733074ffc16fe210977a8e0f7a427164df77302670b88fd889a2abd7dece86afdc667e7942352aa6e49a37b3b2eb6beef3caae96317c4d88533ed36272695ce509716d06df28238d0b39cd2d9429a33ef5b1e5115e6d7938602a9433d354e1d266134a3138fc9e93fe9511ab714a6495686188438a05dbe886f153d3b17762dd4b20a38940f7411277c2b0411de0d2d2ffece946088b0831a1f77c3c92745765783343d1315a0c89dce74655ab41c33913b89eaa5748ccbeda15980d234b70f91f89ac904b3d84528a8d7dba68668ce5321a4b86503c8c1a5ef133bd28359419e7df7d0875849cf1173b27d4b0a876ce36eb35683d109962ce938f4512efefa8cecd4a12b145adea926b392622e8a2b14e1ad6a926ca5d2cb9855be7fd4b1fedbed7bcee26b2cd58b58c2705af262d4923eccee811cc52ccc20372638ffc63ef8b314fa9cdc44ba714b52b17c26aadc33671a68a1999133b41447866f7f8c294f5d9218bfa4ee1b03e9cdcc6aef99cdf7edbbf1503247317e8870cd8ea328bfb0d776d2a57d3184a747f4ec1a62a776116429c9467f3436dc0473c508160f750e81a6072c8caea839e3eb5113b9a4217d29bd01346a6220d1bc829d701e433058bcd1f0cf7a19045feb081ce711aa760096ab8685b15c13f1c2dd611097686ab4e0873eb60012599272d7d967fa919a5490ecb3ab8f7d763456fd12f6998648abd0ce996cb5cf748c1d454889b0a1721387b5bcb6e3a400ac8563e22a9043396b8c4e854224b44e1d13839542f9f15dee1459267302210636a479bca198d02a7dfb694f8b15c567e48368d03bd2f444eb824d71d3b29dbeea2cfe27ed8919354091f9e3d80bd5becb3235a161908a25466f76d8fda4a874613ee51218143385cce17fe23fe6c274fff7c2c81a3528cfd4b230dd915c1801d4321e86bff2f4b613d78bc2c05d7b9971966408cfaa8dc4f017da2fd9b50eb54a0be8caa67861cd1264daa2eca2d518087a404275e43716bf50c7a2bb31a862f528fef2fcda87399559168990e67bbacef8374776a1c6090b6951baa6fcb14e05d906fc6e3c9179507fd0ef93a26bcdbf11e3d1f2cd0d932ef9998fd5fd98e9fc2574ca11135f1ea637a6fdf490a32836fd0568cb723b1b71676d96e7a83e5201dde6e6281b7486d24393a7a348a3cd8b680bb69153973369a5fd59d244a8c0c2d238b6faf165a562391c742697c96a044e7f0fbd4534afb7b320ff039d50945208c2fb6059e75eb93ce1f51ce40f8a1d118e9a9a7e479bc86b21ace06cd420f8c64344b0843a438cf8e0004874795273dc7ab37a7a46b00afc3450ecda2c13802a22a8f1881d5aeb8e2e7b4a0ac41c42fbff371499a4fa21d7c5a444203c98de148f0fc2992742743d606e3d5c1c1947e8062cfa888227923249a42b2990d144cbc3f43535d66507a17edaeaf6730144298123551be422bd812162015f834a8ca6d2615c11f0531ddd9491db5999d7abf50d394e8a06e84ec43da7d9decca83bdaf0a39c495d238c0249fa29e5631b66c558d08fcd47abde13be17ef681cfbabf2d1ebfdc5cba950b9a7da73cfa73b7b10fd94abdc85ee665671e3b2c9001b6ef08a82f0518d1414d60dcc8e10e7c7787b05277a456ba8f3ef2a59d6188dfafcb5c21538eab51c34e5a96a95670861052a907423ceee1c6815a8ad97fbdef4e7a202298ce0c4c5f1ff646952a59d3e057aa78e380c62cb82fce38d2fb718dbf66f438521eb6fb6da9beb07f73e7b53e8fc794578986c6d00519307be91d11e3c9a9355f33e832390f2f5269a1b60440634913e17fa527050830e10915ae889b43fbea343af385133771ab4894e6130af272be7ea06a2d49c885c148d72eddeec597273e9f1af4d904d7303b26ebd35c749ed9d7079184c322b9a51e6db507681ff05b3b262ad5056ee28169f6cee5c210c8dcd1db9d1a107759c9f3a3802678c26b25f044296d1e3a8ce2f2063fa3236ce79c36a4d87cccee3173b369bbb17796bf79efab314f4f23bdbb386565c62853722c425fad7d5beeb8c76cf51657abdbfe9013f7793188ca3f60e6712451dd467a1d0f5b871455713b96adf921ad899cd7e2790a32981c71c5258ff2d100fc7aded303382113862df335123e3b186d625aab4a86382c324ca7ba9ec14f4ab3aaf103d89c8b4d6c41c13b2fce02e87f6af17903409a5681889abc7cfa8c97914036cb762b9a29bdc0d79531bef7c377828b935fe8e6159674edbe147edde92288877ea929fb87b55c6af7cd858577915ef6295d7c34efe0481d69118065b7c260314447dd07fa6471f019cbcfee23c9b959f33f739da160b046cb6f040bb612dcc8b3da52e5d625c6a3623965cff0d5f248161ddd8b751a43104d6af55ae51afc050ce216c4008b52ae1eca644e34984b6bca3fa27b8177393d2377325296be2ea948c369db0db8d986c25c718e73764d80383b4ecaa33ca36693f761d14d685e4da2192f15f00538688f018b577fc54eb246b824549b742962d1b2d250dbcd8cb9f85255fa4353e44597c87ce39dc3af05b9e12d541eb6a75b3de0cb70134f663f1ee715f4007f97b716607e631226cedd93681590e5b12076450d50dae61db1fbf2be358ffab787767cfc9f38d96684e6d374edf89623d3c6fd8055611ddcce86d5d582b722b18b05010b7ab132ae3f7a2685ed29d327cd9152efecad01a7e1fa1b242a2da4324b20b0371f6181f3509785543eb0423c2b796e125f6b9e952d0f0bcaf110b982d3e80489ff5631f18858e2987e5b945188a4a68cb52a7c5263031310b60c1c22f7db0db9ef46d1f8f69c7ce84c0ed75175f8ba4c9758c67e50a4781045bea9c906b98f8d6f065000707fdb58f385d7277921d9c7634e63aba0f894ca1bf7fcce25525ad651a5756e95639525b262db7f15afe196db39eca34526fb061297c821685478c198e3f46f02f1e832bf14c515165e2003dbb18854be27957d4b15614cba76b6bc3fb99ae2e1c014b77b7256ac413167ef3767a2b45eed748de75d9f6fa8c6f04c0c3df8d7bb78503a33313c60d4e0e624ef60a24787b86d855137d9be3f2a0b8900328b9399e7305cd15b28e4dad9f36fc6a37ca9fd33523efadb5f4ed50e47740670f3dc23af361ee24e2b196ce8bbfb10fed4008a9a819e9864fcc0fe8c1dc4d1fe6ef8b0731e40c928e51e60eece79aaa12a388a3de04649feb9e43db8011b4e39ac28d2a81659d7ccd291e24870f4668e6fed95c5172baf2d83fab7ef09cead0cfec3d3f5f8a207520651593991be34d3183f33427f14f04c921e35c67c91affe409ba66c274aa54e61ed42f04fc9cfe488a79672aa56d17533cb2e1db202cb9ba4d7e7c3c7295eeb9333460f8bc121c999d19a9ff9214f49d6114f978526a6ed7e09a2a9c61e449feb15ec65c17a920743d1e648720369e86f0145b4676ce99ffd772f1a1d3c8feb54335d354ab048009b6045822cbb74c4e5a7548c11bfffbee2ebabc5b11d6fb86c11f25d8c71f1b0f9c9570c19b0928031708c491bf8a92167292d4fda147b222363761172d82c91388bcab7c62466dec678a73544c953c77eb0a111709995e6ee5765678d92c4964cca8c5049eee50cc1fc57b51daca8b0a078aace106913409fa2e879788b3594cb56e25d3a3f0e1caf137383ad2470efc504a7f2d0a5bba8b8a8b1950a0b3d9eaa3e6e26fea01cce9ac68f1992d5b50c585508646bd7f8c9060a90e79a0e4eeb1d3335bb52fbe748af20cea7dff1b4cef2e44030f116d4f391094e2704fee84df17e700a28821454408b4f6d126c68846cf218df0e6246006caf5aea58573d3c87a58e717052a8d941f8fea228d4ecaa441900d75c7319a26c72d0a8341faf52723d27a2dba2977146cd18ff8fe31dd901bf9b883a2417a9e18692c359ef8da3e19a321e12930c6e88514bd57a3d057ed18ada20b7b12fc01c0c6299a346a07f1111e0e85bd95727b9f9eb38d9c8f4a8257a65e2bb00d0ab3a67fbb49d8e336836ea622b1c806fe1328fbfb51fb68b11d3a10289541c15050f161495998598fe1e128e8aa8260502b9069912f6830455d2fe79a1b18bfaff35ad22768c5413c723c69358927499120fe5dbf894ea7f0d4a22babfc8ed78f74e1e8a95ec88b3ff2c7c73c642f37da344f14ae9f9e4ec6c5a4218d0edd297037d35ec0de88e6410050266bba0d33f1dac41ad8e44fef821ee0649dab83c9b46056cfaa7a77482bc03e4d38df3784aec6280923bb7649e37115e18697973ae4c2afe4971232d57c67fb6ac7fe07bcf2dc74a2548e64ec22e2b16e2494296114c75feecbfc03e8c720d13e5e37c55827f6d14040918e0171a18ee246b3b3d82895afc556be90705b8bcd896e9045cdcb1b28c07ff288b231c642bc91a6bad9182ea81b57eaedb83f53a821ee8f629610ab84f69890f92d95e458038c7f1fe547b85a6cb6d62f9432970386a8e0de9af2a76265ca63f98a3e4e21e62e7716f48b7d4d6e2b1488aca60612c062dfcc0bc343209b719c7b640a673dea6d286571331a762acca783ef0138608a43e3a1671e1738016dd17c2633d148b8f73c6c9d35dc50d5b00d5bb9ab881c59d2ccd0cb92e3b995722170a30616ab30f9308e955c73dd6a8e5154ea340b4727361bc924cccbf2c94a1d4a2e20019159d619ce15ffa13600d25a75f160e2016ccaa9bfcb3f2c7c533524b9a681aa61c5d58db01a0c9f329cb17be5998d4367d6582ce43928033bcb2bf49bd13142151cc59cfe8d1437e2dc64772c5efc97f97cd7613f2ce71af113d5a2b3af6e08ac633670a8b6d229498769e5c30295260b15fad48a4c159e72147ef556c4e7642229bb844f7ca7bb03839b337eb83d92638531ccd9b7d8b59aa792f9014c54da2406e670dba471d67df301749da96b3ae03d1cd8821110e4270631ebce0400ba686e4c616dcf61db1dacd5c56f30682991cc731ec6a084836eb1eb70d1c82cb3cc7d2201989d9e84541ae11f9399ac85d4f2bfbece66453e4f9f5724b7f179c67ac74a143c1c850c26eb4ce0b8559f340568e08dc292d1cb830320408fbc08956b40dbd9c26644d5afacd64ac10f7e2fbe7f99f43f0a0ba046fc95d8b88ffdd143b1994c22411c51c91301db8c8d799616204bcb9b9593700c7aa7832c79e9b272f1a04759eaef4769b5750420cad4b5850233aa7fe4f03d2a0a24b0d7255b5379a1ee4e6d9cf15778ffe2b9f4e17497933d2ab81cfbadae15bb1ca74aaac890643a97bf74edac50d63c34ce4ad3a6bccfa4eb02500e7e4b4e92d5103f2a4970c55c10e7447e6ac86155017ee2de4dea3bcfc3a310d3f1862909c2b6c4cbec5e73b0c64362b8d7cae31de7d3422d4086cab9aeca2490be73ea8c8398166000120a98f519cdf662fb6d411deb565a75d0db1ff48d2e4ccbebfed16567ec6b3b4a192908cf2c7ca5859858b321b151626d789bd482ca88714ec1a969214799a9d661d5577a528ce051d1e6d9cb1e2fe8c5ea201aa8c76e2e5b88208f39ab04bbea69ce4c2426b5d15cb6e3442e86a57a2dd46e3c6a45f5cc5d1fe31feea4aaf006401c251605f401830e0bc5a3f26ddb18bdf4e66dbb54f8cb17fc636eb21821667366e7c897cb7d1676c012a289fe59b3cc28cdc2a5e1dab7bb07cd22bf6a2d8acb9f3379973d63c0df3d8c0a47d31a79d4a006d7bca581650d37bef29fb95f4f4d78fce570762dee69b27da163ad5d16ac101c561a8fe09b29d8ae0248a28af984ef4049bb914ddfe15e88f115fdbbaed88e14b3d826f86994b7e1d5969435d9dc89f1f87b73748f009a4b68007d53bc84df0180682199ebd361ce1a187782061fe827d3f3c3432a9b1ce572ef7017841a608ec85dceaf3b5d3a1b2969d8cc27b0c0b6a42743881a7a7cc825790b97770a0448d08301b026173cac39216007d7f6884d2efe74ebfbf679625aa765b27752be5f9bb30ce501a1e4443a334db2168ca64f25e22e5041f4fb04b2723817ba0662d3bc7527463963f2f2607c15da72bb1855c02a9f780ba4473f38cd3ec34727a4680103f6c5a41d0261d07837ba30f9bb2ac71533fa99007733ee3bbc31d20e4f40a09a849be8648bb536bd090013b4e9ae800c38f69236b8c966d2755e4c5278b34c1b010641743584f844564c3f9ebdf6ff5a9eaac4fae4d1bcca278fd79818a209959188777728849a423927b9bf055114c204d5d0d82d5fe38ae785437df80cf1f58b937f26eee2daa0cd3d746c737e4e0764876e33c03ee6a0bd4bc6271b434edf8a80b414b75d49630d938699ff268530fdc7c9a8ce1ce89f0dd62649d20a1d0b58ed3dffab716b10a45183ca462527d34ffb323d9f1678a7f4edd09d585cbb329a9911314325ef2295de27e6e5a3e9e40137b6ecc9a5572c0cdd3d57d448aa35c02cdd887ce7a7a435c6f7b158fc9fad80be370784153f389e54fc3604e8de559848939309cc31b86982f0ee1becf3d4716b6411c3968e731dff1df9cf0f42306d35e8c2fad7923c6defec97d5889132809317921eafb35302b786ed58b5431100b0eb1891b9b7e4fc548d3b86289b8f2e1206ab549676cc0d47a59c2f7b67f663761c41908828ce31121d0505815de087615b880b4f619842cb98fc511f605bc719ef7a07cf9e7c137680a6b0a6103ad837d87211c48ac3c209ac23f713b9467cbda992e9ff33ca2135f3a8300a50453285acd8a9b33ff4b0c395a792dcfe58c2a6c157c697e37857e064ec6fbcbc6806ce9942c2f57ce2809af9dc19d28904b1d4c4fbea82445f24ffeebb956231f79e3c48af164ee4f710c0eee7dd7e343f8daef51940ba1253571e6e47aa5f8f428e293424fac8ebbb16348ca6e2d6ebc2b55649910d354fda7aeeb50746193aea6eefe555fc00c2d8802327fc17ad286366beee8774c1e5689cb9d465eb9874d42df9050145e9dbc3311921ebbb96df1b0ca52feb8abe9620b02d8fd8ff8fe197bb1534e3ebcbad1b1a247c88ab53040c05855a3d6eaea77c9a3257a358a0d4e0224775f88888c58022aecefba5a0f5a94624482ec9b32dabb6b1dd435de0b2055053139cb031eb9bed36fbb7a8db0ca3454c8d64e96512707e63b051f6a80b046b5b5c2610121e66fed823a3aecd3716a670eca935a63be327b07399bc87f2c3858c937899317730a6ab543ae936c1b4a0e5e91213ae695bb78b9d5583b4d32cd425634ca657ff10f745301a983a17b31aac7ea1db22c67f7740f0537bfa4c788d915297f4ed34c8597e8fe8e8521522a72fbe6637b0fb6874a98a86e6360a9b20a87e1ba309b5cc7f906c14a75e2758bc267b6ea4fb05eece14d36b60159862aed24b31176229e6ead82a0ed69562e8c12ba56d0079ad7053af2f425fa38f0102e1f242b4ffd8abf87866548a78fd3c96b00869f0c19015b10d25a83054eaab6abb6052a9a08b86ee2326c537cc743731598f114ca6d1c4c664a503fad50ec8842b84101941607a462e89182c8db8e88a6f54d0afbdb97dd3c7a89785a535010bb0595caed709bc8cba418433f53281dede89dde6efb34acb6ab2f0339038145e27d361cb6277d5144668e7a349b7cf5be9d76d40160db7701e8036e66976e06e8eca710637af324f6048cb1f4fd1ccba8d1ca24948ad1ab88cd00be9a463508891da45ee689c66d0f17c0eed7b9431220f55fc9870f97ab52a3c287680d6089529e7c07fbabf3bbe84bcd00abc8708308d1663320413490275a8a7bfc4572cc18dd1dd04968d8410ffdc85369fa6c75e71a33a3be8dd1fb1306247c0402fe458d88211a9a337ac0086a80015a7187ee7d533739a0a5fb7d475c362249068bfcdf31d23ee888a2f701020b309d60e5bd5345d03ecbb632cc5c544d7fc5fa88307cb460fe4b3cc742600a83ab188b47fa87d408b357cc74a9caa4cb9eec44919f91e3dbe689cdb71c49181f9bcf46e62e38223d836c76720681ce1262e313e197ac8d75ebca83d22d7cd581234eea891a0ac45b32dc0789af38211876ab8d24ad960a4d88d45dc826dce61b5bcf2cbd486dbd375b2dffa6c838544228b2b68209f616f58b9be4dd219eea7eed2df6c7946b1db31f43ac3009b055c6a31617cda05220b4478f084b74850dab2708a5ae3bbec3731d76360224846caa9bca9422f154cac2b74e6576b4a424f68aedaf318ffd02ccf4b56a5eabb347343e9d39cdefd09c675de1a005f865a00b89d5f89e38083c20eba867b5a27a3ee69c6e92603249e86973d8a352b84863e4d3432ff4ef09dc7028e58f5e1d1f32063075cc2bd7a2acc2f4d4802c580a48b6d0d9976f8487ae33705334459b6000055a604ba8a8c61d1d918f7654dfa44bd80570d98ab3ce0caa77b28d38005534cd58d251e238e51da5578df3645bc3999979d62ea19e6c17e67c234306e1eed206d0f7e2f6978c2a4d17ae1312df4d29b79038785dac5dde87e2b4ec2f389fe7cb1cf1f43bfeea1d362aac6b5c540aac1be656282b7c2e07c9da90364a618a71ddbb872f6e2d34f3bbaad83ea2c811d80d7ee92f4fa89253ac566cd1e88728e882ff1057346e892b45524f25db9f132aa3be3dbb142cea0f3ea16d04aed719d77d46460c6e243913faf2afbf167e04aed9b96467d50dd3892d29818156c58d581c4a9a15d5622e3c64c27b568af314d10f03c9bb8a1980a41f3f0dac231f3de5093e5fcc623298fe12673396ee228694b92aea6259d02f8d36501e1c9e43257f47b02277a05a5a9c764996f6d00d38859b60b800e00828fcefb0e0e4a114477a7106fb2869a63c719572c258c45946dc37cca27d43f12de596435c011d2a4e4c77a418a2a793a81e0704ffabc9584aef53eb42e8afdae181e182eb3ef4c8569c34bc5ccabc74f0cdb4b177659c518e408805b8910b0dc040a13d145724f1dc34b61eefe632e3cb21e373e2677924a7de19f5a3bac51c36bd40a98756909b3074552a0224b9851822f330e1a0ea59435507ef196ff014989b65b0c79abf29e92aee623414e47696eea626a075ea8c2d476cff4e9e0345760a92bbdc1160dfe4122d620efb0a8acf82b7053283515d6255e7f502289a65684e2a378de482ea5c79f7ee4496ccfac690cdf719ffb7147c744c034423a316a52c12d2bccea6cfd01d97d83289cb128214a272cd7ae4da1653fb5d21620fd892be3801e3f052fc7c76336a2070440511bd783c35ea068db6b32955686e22aaddadac95591cf0e48125d82d7c53fc5e7f53b67360e80ff3d315e399fcb5742d51cf06d57d17ca3dc170115cb984d9e8de3be844ec554a38132d44215c869d3e4cc1b4386ab32ac6aafa8a47dea0b3a2a856b9afb4d82726a0c1c4e8c41abac0f22c039527845681e19d6dc315c3bebfe48bba46fd04662cdf24f6ed212297836ffa09fbc02d9c2b5a92d83ead23c1e26b1b3f441ceaaa66f7543f59ba676d5f8c0fad16e36ec8244c6aaaee8c4e8a40f36e15a0f79168306dfc09f846ff4f90e95f26abb0058ff041b7a90b5b0df6f52893fcebad61c0bdd3919a84bff1bb913d113566208f4bb212ffdbc24f00286384fec2d3341bd38dd69e238295329e4a51ce4d5d3834c2c141a0d761ef1b947f2fb72be732605c4fc4806553c812e4685d7159239a9ba9ad9751d8ea596e07dbc2d7c2916b22e35d04ef650435640207ab62243ac4c6827d55c89d0cf32d1b7ae5719cb7aedab51c455d4da6d2f33834d6be6534c75d1d83fe5360fa67ba1017368ac24363f0d1f47a8f06157e0d00b2af2f6b1c951e56c88bb3987abef00c20d784e88c63eb04a52b1d20aaa497fdfa298dc4eabf088ec37ff12e291a5f091027139d110ab70cc257367b2cea3804893392543ba4f26ca4e899a9a85ec5de1e8ca9a119e6160e0e7021d39391f39ff198da959d46abd21154e9431f22dff3c2d8450ceefc15158a56b45ac05dbc2b283362f4d6c05ed600b8a3436724c000da49755b7b985f5c0344c9b92b1b8b54099a884d3782133dd9d8be20d4f1e23e4389119c717a623e0b44334385de05ec47389d28faf55f04bcc6264a64101a0230942528b5244184f426ac6f0fd024ca71797e92056b504558bce12b108a47e3d94f18cb06f72b49d86362bf18d9c8e1eef971d7eef5441325a7be05f241a84acad4bc6de3733e85d037fb8898ef501ef970712844c9ed8e8b3c74f5b59f230314fad24334c719a4f6b282b54582b471b196fd7539a516f7c4b3f64ad5eb887136655c5a157a1ed1d52bb25bde4a65840446f316f71935b66f8ba41988b7d412403bdbc0a4761f60cdd4c9cd2e13a28c44451a1cc795ed4e391fb3a5d79406ac6d65f5414bb21ec11db35f5bd6cca61b06b8d9e241330da087f9d156e811dd1463430d7d333399cadc83dd4df2a6d1243bc650ae6e6ca0f88d3ff40535317cae4a20ab30d6ea135422816127000236e4ccb0782c44231142daac507e2c4191430b3f10b665a32920d50f9a81636a5c45afb94db07c8828a68663510374358201e69687e4d34d90f7cb3255c467647d6622470a27c73c057abcbf24353ca98728dbaeec9bea76d1347d0d393f57f5aeabb5820b201e664599fdb5f28ca4085bdbc5940d048364961d396b39ae019d7d3e06705e2244a46ee89703a26aa92cc22d9dc0a44f73fab40748b9cc61cdd8a33f654e359fdfeca2fa2bd2212e4b9b1014172f63f89ded89b910d847f35042338dda0dcbbc2ec0701658a013fce18f20121127cf483b8cb8a2e9a1af9ac20382fb1df1b492f6f9f29280841f3b72aba9f5fd2d29db15f7782e4867faab841408679fcfc78169781509f9864549cf47396a9837cd14df21ac39e2a2e707075d4dc8ad328f1646d03767d517f65cca06016b0ded14d364c933a214a0294a3086797c920ab00e01df6998d8f70800d3c388ec2efed44170b9b49cb9cbdd2ae290665c26715ea33a60488a2a13211a5c69fb1a56a222d92a8fd66e5eb5aefdefbf650dc17020fa586f81f16649cbfc6de8b945a55e00e678c0518acfb14efaf20e0b31e25e1eb8f4ce387eaf33adda4d6f4523181b4b0b0308b25e0f23910b362219a949568b832464edf51ac23be900f2f1e4d8f2d817ee120bdf5fe12554f80840d829035bcf0e9e78b4f595a2e57071080b2d95b1266692a56ab3af2f11333b6bad0884aaddcc98d43d30fec306f9d396df188b43aac158ac5040cbd7caddcbe3c130a12cba466e2a54d0cfb91fc1e7a065681bcb26fbf621476886a940ae3e03b57adb5d199c127136cac60ca519a6a15cff17682b418414389452691630729f35103d223b7dc1a8da9886e8340030b6e51022239f1994448bd040aea15931a50c209d93bb040d1562929d8726116c1b279f6e5f5239a2c652355dab18c3691510b3eafcf78bee80c681d12b5e49445a00f888610d7f9e74278ad630615de5e8aed65b713c36eb556f0f23961097a9b8030e426e32f29bfeacc5c69aac078b95385a2816bd85129ece1c53591948b981cb869748be6dd01236a03425d375e7e19c2f1a2a2b1f3441466da828bc22601091c22988731c800f09e5d504ea8a4876c27b5d1c2a5c8c46c9f942fcdb4c4edf6da0ba6f60c8822a823d9dcd96fcc22f2663dec9b3f5311dfb8777e90317da971b8da93a55eedf8135b7bc94753790ba694498ccaa5f3ca74ec51bd1a6caf8ffe26c2815777abf6637459f3e672a2deb6b6ad795339416dab2d6b9e5c4ed4579e185000459fc26a4f3a55f0b4c81ef2ea37fd1261db358a7cbade585c9d9ea44e1304a47d29ae983e033e1644812b4839df76718cf764bdb096682812e20226d129cc3eae41abe36271a44eda0e3217e8f59dc6d681a9f8ea0423735f8f0fae31dc692204116ebbc77918e65f3fd858cb34463a41050f97ed083ef8afbf553ff8d6f18da6a83352cc62320fabe8f64955c4b878268a472b5c12f69703864350ffa7494f5218c80726e30a4d082569c634928f7d880b8cf09749c4add81dd8904a4c7d7f1c7b6d1e851fad94186e91ea87a356db3f6ff9d83eb777c2e443785a18171476b7908f33f767ca7adffe7ef98e6d8a135fb8b113e830434d5fd10a76a290a9f917c23b3c066005d480c831780ae37e8c47dbeed9adc31809b88e31cd8122434ae77c2688ab8db03226204a7f444e203261b995a14ba0f9ddcc59ea2deaf1109dab710996a8927a410fd699cf2d0c5f787e2b506300201ea296ce698c559c6acdd57ce54c8d9d790dc9d5527a7904c46756ce01f08b7fc2dc18c0d510d7270842c83b6128d11c116d0b7d0009e1566363e3fd4336af20e820051f8c106dc67a80dadce678e11681d9c3af709ba13bb082162e220b1230f02fa9a4e3610dcc3d993f619429313ba1c7ecdb8abdae28e0f419d104eca97778f198b93c08b1c5ac68575ee120dd62d0bd3240eeff8002982469b42f32d00963d2a11d734704c1af2e94d77b10a62ff3a7cfca799d5c242a2b854ef3dfe4797e3cc5b7999999f9a0501cf2833c7a49c2a7602ad974b1fac2148ee8484010d1221260380e0a65d8898fdbe77ac82077d20c58e333caaeb171b458435aa6c30cb382055a965250fd3121726d56c0a3268a546a199d794945977eda3efe4911dbfea27c10a0e121f7bff4c5f69c1c9969da50e4c43ef4dffd603f575cb803881ad7f095011c129f3d2060f87044aeb406ad90d031096f6d12b125bcabd6a81df3167879ecf7e872081cb499d58a83bbcbd76f34f865d1956b7e8a7703f969fc1b93d4d53f4daec5e545b70380540a91a317e917ab519112191ea28e102261802485d124a229d56d41bec68f34c93f52b4bae4ccc1937ee31341c134ac79e6529fa1dcabd22b2e1229b7411410db1135030790a74ba4b1e8e366767b7be66e4597f719a1d4f7944398143f871511f088d83c06ffac5e4d73d0ec3400720717f243b73031bad4ec726451c483ae9eb13bd3980a1db6252b0445a8a64f2825d4534995d26e998756e5e3d15e64ff31da8589028319de5c5006c6aadb69866f3a09ba31136c2ba0288a27bc429212ba3b04826002449fc21956ddfb45da1ff8ad3e683a9012034f601785341bcc1b4dc8a0a06cb999194ec544177259a364c6f81a0bab8c0e4d4f2f5f43b4f63e02dfe6291090f1ff81a466364944abddf4e1d0dce3c41b2818f134298b7bcfc7442e069e71e0b446730a2b57b86d72f12c6747f35ea6a801764ef1f8a2435e64bda599c89bc3ba10af79c8372438ecef17a6321d9e400a2a0c367dcadac2d0da99be1fc3b3f0e459ec45ebb3cd6343ee88d706a05fadd4bf21ca353a7ba0734facc8d576a1a5e2efcda56d399c523326cb935ca29b6f6bc9b8f196884f0a44fe390fed4ff5fd2c02f2defaca277a4d3bbe5c77a61fed2ed19ab6f8f77309c841e454811deb639a6f11941cc91ecd0ab3f8cdcb4549414e3e9c88816b1481f828ad26cc06828c6b18aa1587baa1fc94db20481a8c7a02f22a29824d051e7ed71c7a1503114bae72dfa43c24f0e7f45f2119d8ae8ee216f0dd359d54d3a5e24ff341140e307e096e16d2b84397c668abc586ee2acb60a8ea18ab0e36f42d4553ddb7a08ddf13b49bd897f51b90fbe83486dd414101d64ea384c1112eed5e28e74eda1b33636d4a7a02869e225dd98cdaf6685f54444af763e1b48b684e4cc11502c3cd67ee4cf6b904a6512d0526e6d42d3746b03a24b9918990925696574f1264ac8a9206c02599c35261fb3db7069603565e6b2ba8e4a414278fa24ab64d4827b05ca028adf09edd029a17ffb45301caf5b438e6f25d649b096cd85a952c02fcb3d2fd070b3b1f0eca76ad34eb408519590e7d79c7e42aaeaf95064035f53d8a5fc6a0721dc41a5e6094e8427c0c7f84bafd6c423d03cd713b5b02df47f03e7fec7922a21e031d5526c894b9f67691a7417d1604b97cac0e57003d908071fa87fb4297e8ff8ec365ad6056ac6adceb0ac62a914e36d9a416ce802bf74310e21d6c86b6e6377d00e8f39166e920141c8b5a36e7313824697181be44364426029c6bab2d9f01491abaa44fd6ec1795dc4dcb06993f21c50679914df7a40cb999101d387b01d26dd4627f1ce654f9630edcbec11f8c14359183e25481b531243101c7169b08fc2fd430a582e24d15661e931c38888f0cf4f0b72025807732ec005a8caed12eab7e20a59d009772b0d743d97376572681b79af81fb41e1895d2bf90ccc5c8c7164ec4a614d35f5760281e4138d0f862fd1190956d9a64cb2c82431f504019c9ecf48e7ef75efa572fb90c325b6f5a27a9b6d63fdf427819cf439d3540d5bb134097d0a2e9ed0cf53f51dff3f852da61aab4961a06cdfe1523af105b2182d12d0e7a9bd6d3a5e6bc0f2f4aef991c45f1691d2d2762a97f49e9ac4efa2bfb39fbd9174a269fededd120fecbd0edf8f5639dbb283f3f7cf9ed17abe0d017390e375512d3bf6f8054a92b1d815f22a00919917d0ac7c5964283e9105afdf0978beaf46a3a052c7aa3d4815742f2f3e310a221f603b10142e707f63326fb0326ae46638d8360ebc3ba0c3da4afb2c8c9d01dde2045b1e02f3d1c131a4f3c28e3c56d6899f127a63512b53fc1b0089a13b1bf553492d36062990727393e412381120cb116d85d5599b68ac9b825c45f9e7cd8c4b1c6025dfb22fddda2a7cdb0f3bef6aa3f127b4ccb8bf284788de1257d0eafbf2d064fd63780f0bfa28d58b949e88dad7c4e8b451835c4874617de730f5be001f777c3ec5d5401b9792b153b1bc17e727ad89a1b0e94bd508a93105b8a42a27c8bf161eb7f867e170446e631ea30947733b3908250a0394107d517350b4a8080f4d77c1f17cbc63c1b1165a1d3ca0f2dc1b056a592593f6de7161c38d231b8c378e893180864ef277807279c6430e0b076caa051b803fe105a02acd4a3a07757a07c32f8c2e10615c0a9b2d0caf20df90bf438041f64d1a4fd7cf42dfcff9f0192d8880ec2198e1d1972e65f80c505fd206f7b83e87e96f84e7849fc0d86ea946eb587bcdbad96fddcb149b8cfed72f07a84ab66baa03c02baecbb180c183a08dcfab924925fd2bc9783c23a79dbd91e978fa5a958e61c96cfb9e46ab366cc7b89c6e0f80ceefd491655007a09d418648aa8e45625e26c94631cb16e9f740a597a009582337e5251c5ce98e8a43a1c6e4d185dc08b26807b65f09695dbd5273724132186017bbcae24c84223050ecdb5b92d2baa254dddace8f66d395b5fa11139645cbaefbb41b3c1de3b2b3c07304112b9871cc383befcaa8935931835494d64ca827c94486d0a9c12baa90eb567f348962d06e24d2aba0232357dae03508bd50f31e9e468b82308c4387582c0b5c4d24795bb12cca5c4f0ef157e02b5fcc7f9640ef91766f2dbab72ac277232d3d1d71ed2cf8c30fa5be63a171b852bcfca02efb666f51eba42aeb354521cc7444bd4b747de4ca263c9e9a873d8c936267b2a9ded6e822222b598e6a3d13f17fa26cbfe90e0f23f7900931d9c286241f3fded40d318ea16afa984819978c0e509af32fe1f588cb9b7684e6a64ff188384ca96ae1277415d43e706036065b71949d51f76f00694aa625927f562e0d8c53a5cbb0f490b252995bc760547a87ed71cec3e76743c87cb03d25b8d97a35c414e0daa4b676488eb8aff7b22fb2f673ab49f596af9a630641b9b57d80c0c6de1a301a129df8ef12c403fa1aefd214900a5697402bd43022edb2d47f5d0db5e2885ed62f44e1860f0518b02c43655540f0e3c728ce345b9008d8f84658f01f6502b1d29273e68aaf65985f4589e8626dd6bfdad8310db5b720ad4d115d3a2188dfc71e32973f54b5ecf4afb0b96cf002eaf6cb1732c8a6bdd1c80a474cfa482d6a8759b1327636860436fc999e301526fbea745442f39f057cc9b16b22f7c73d1b7f1fdd8410ec16ebd11e1004d203634573bf0fbd34b851e35d5c3fcf3982eaa23d965a14b1a8a387f080bf8e7b0fa7273ec3044550ac57f498c785d22ff109235489c6b76e71c9349bf6c350d329d99728202a46ae62895547a503a625412d1acb2bc6402c1ce44ead42b00a16510946f37febc4b086161fd2087d0073b2f9d0d6678e595311b05f387f4ea9c76cd570e9d9da65a590c736ec17f085e9193d286ed78ee48ea7c7a3f6463964bac9b924c6e5b961e9702d7198948e4e1c7a10d12bc438833646262a710b28170ee9b46a6f4f18dfcc28478c53b25c8a871943c6a468805f39e659b800829ea03a7164d500986fe5e3029aa3bdeeee038bfc48a8c33e099c43d1716e477b51b30b7a5956d42dbbdb89cb23fe141e720f36944a922c06d6f130a2d7c86ad0744940559ac03abb893928989b51bb05ab5c6a2ffab348e2ed290986c30280c6d41b0fb281507d665a83f8daa969aa63d3ff16319f55afa30b2792542904f71bfa0d8ef10ae5926b657452bcc99172794316f15357ff6e9fbdd993e424033d0266e1770a5f4cc77630b9d489f37681329f7e02362cfda69c68f785b6b2b39fbeb8552de13fdf0944c93b4ba257972c9b18e1e4654e96fc6121db4407feaf58e022df04d2b622480d168a5b3686145adbf49eb7d35c0484d36d137ec73d57e62002d07e59719a655a60a8ad515bbd0447d456888fa5c8ce4c42409dbb0f6c08c22ba47443157a821e9583cd2750bf416ac447e9b5c068e894e715c654c81326d247fd9c19a6cdb773f1a3829e6e6130ee0d8845a296f820c852ca1368791270e489ee9008e868dc313bff31246b7e6c3c8eaba9780e6b5ea5dd18d9a733933a0e83e9a1ddf3a872b01e7acfc248248b8e697b34060e0f9371801f2974f2b56c42d66957a2da15a37b5f2b7c3548e95d734fc996c78a35eef7e2731536c347e9929010018bc0ae702b55c9d5245bc69d9d825ef2f19f99605827e102cb973a8030eebcfaae3d23358465e72d8fb511a2d774362491f987c0795103647e58f4e5dd0a04e77951b9dcfac3a713b7c7185e413fd20be2f83b2c0d740399771803948ad2e5a1a7201bb40b323497c9901d230f57855437c0d2067ca203e37e34957b505117fe69d40a728e036c5c0a2bd117dd86fe1b382a411c275e2be65ef116ad84abe00eaab68ff10cb1ee3f9a2d50dc1c7a21ce624c16f7dc7e14b22807e2293149f1ff2e9f4e51249fd52c755cd2002133457e22f1302b05ecde9a8a5f41adf1166e0980ef201fc5e1051bbd1dd8c4f7d5ec301f58f79425ceaaf21695404e6a10ee8e3a5c237bd6aa3a8d504fddd8793a398f33382878a6945c24f75cc0c967f086dfc1b1dea03137fa1e7ffe2cade1c9c2bea581a3683954b255798d5ddb9fc4e22cedade6a6a876e2866c1ba6b37a317ab12db3bf65f2d652ed8ba9bcdf04a1accf008d93c12ece13c66b643f2dcc576413d4a29ba6ab582ca0f278f3ad01157f14398f959bff2efe73faef6484fa96f50d4077b4056ae69fd8549e2dd32a3cf32b22e7d0eada0d61de007720cafaa8adee6ab0c93eef3916a2c26680ae5b7efab3a0fd69b6d8ed4572dcac4741b18654721655efe9b4bdd02c3a372151021521ce694cfcb71eaef05ac08b3d2d1f961db24528cd4856800a5c8ec16612fec333c9be0b1c8a9b70c7db3dc454539bd9fb6fbcbe6738061464188df8ca203d3c00ea882f2b687833d5200b3178f21a801d89ccb9e4b5b45b4762c6ee87c44bcb69907f7bd47b7f99d6d64aeebadba437d3c0ae02c3cb20362da761cdaf8909b0c38efa094516ab684d01f8f170db0825e19d5e555de6c373c782e5e7cae826ae84597029b1d6a2cc7a301d2d3340f4b8c1625ebdbd58bb475041e545f4640634dfd9808f36e3078bf366647fe39691ca2a0eced5c8c75989877fa87a77215e8f2de4ecdf087fd6d02d3a7cbe1d2f293d533440b8724bec407ba00167a087eb3fa32725b4307562715c0b04fa2086e60101829721edcfa6a901898b2f2d0f0547cb1a3d6d194081c13252476f1621021308d10a4a89d8b84e95f8a04e44146a37e8c3f798c0e9106de8902ee75452f6f21fa817e6a61794bbe0bd6e7de8c030ab3c9be031417795a6e6e8c59e7b5efdf6ba0eff35490f2e0e43bd41973a44236aad3ca989b1bcf7d133370f5bf11cd7c68d9cd5cb14133ae6d1eafac297e80d0b52f2987e2eb182a38200ceb2511aa763f9e6267b0db54189e5c9f26d122d3e75fbfe648aa09a78b6881b503894ae92c61fe268b844a5804f56ac23c8b8454936f9bf8c31fcfc149a80b4b295953d74612ea1f7030176dc4ffa19938e22051a1003017854f1e648ed3691b67eebf3c4d128488ebd64a814d62a74d588826aebf4148b9a06f7a551dcab3ff135914ffa45cb3f02654e1f0b01df2c6bfa665d3701ec970c8af88748ef209e00d7eeefe3e04405412d08307d5f6493dc3014e7c730158b091497478fabb9e24101d7a8dcb1d1c9324f15cf32e0ed8e91fd1443bebf740aa331daaa8334990f7d090b8eb557e125a83f68562e244677bf96d65ef1f109ca827364762f2d3c0ee2650e7adb2fcefd6c796873d85c3947b3c0916ec3bcf8ee9981887cf2be1af5e0740b1075d90b83091727efede8e5cd749e6afe22535dca67137e23b0d856f703fc6f603dcc4c18e3837a7dba04060823549f48ce79b5a066d7786ccb71e6cdcb71efe90e861ed168a2dcefaf55a673cb75d8d232169b06d9e857a43322e9c599bb29deca61860da33593214c9157862cecc4f0739e39f3005f016ce6b270b62e504d572ea4ebc684fb7b26e1b049acac54ebe23a37dbaf9531cce1ae6ca8d6f59519ca2a7603685752c28ddb15b5979b45860a518bb277c873bd2201958e0e650fefaa5faa2c6ff3b0c00ddf9acd37a958915ed0dc512c3e1e536a156b359b26f8ba974e750cba16ad715ee04abf817dd5a2087e642a97b774dc807941e7d984638905eda5e878cb0c6e84e7fc947fdc2843a8abf37c4be9531138ccd8f9b32a60b0299e5d1df9d2a0ce901938965d0ce8746f4c91f256cac121cd9c6205b194b3c834559a3431bf42b9d5cc75125e3d8796ac484f654d02cfd00f08142b32fc5f16b259f4eaa9ce768f228a0c7b388ba9b684776211d482136c04d04a1ce13aed149457feb9eb7b41935bc49b5de11867dd2b615c2283e5a66027b7ae1595747d42e55cdf62007325e6a61107d860328518f9842006a188c2f16e90586950d635013c13b06ada860105c041075a9921b365f7eeb9a215883dbb2d789409543bc955c743a5ea9f4b61ddc75b18043160573d488fa7dac4182e155ce1599213f20f1c265fd6b5efbc8152c6f277434a52a3bac08489a0e9e860e9110d8a9e46533b10072fc79c874fd7296f617440d03c0f9380c704734597bb749aee21866cddc52e3ded684671e9c20f164b9520729576137c6a47a35f8c0058cda7690f34bc4a41065d41f44817ea48799922f7799d8d36db8ee8d04c7041fc4608b9d55e0d4222ea6ddf592fc7e741e1ff954be196a4f5d3c2c98fd974fc1b0bf513d84ed3e4ddcae78f7d4b95df453a81ab811321b8529f96abefab440dd652eaeefde3008e74efd0668aad4c99c772da92445002fc93acd230875c8703e531ab30c2518c62825735861e2175e3ed4b720c0464cd97b6a48f3f19105ee26ccb861d93dabfbf242a0743630dcef042d4903cebc50d3b23d3aa20c08987e947ff566fd972eee14d80bc6c6aa31ac8c63887c8bfdfe5c57cf078f068bbf9c1b5f0154643d4e50e7a9dbce42071a8b711c240d1f0e7bd1000dc8ec6dcc30d8d4a6dca2b9a55616f0bf4bab0ef1e4e011c74187704b4fbe41601fe4f92f93de70174fabd9637989a498e9d52705cc60d45b78fe5ecf187a6196881278357f45182405eb82f4d73c15a7c5b730d81b800c972b6b5315f082f90cc3d432f04fd132e1830d8c98080fc62590cfcdc88e006786e90e25f3443fef56063920b7832d3c029cfcf8536b1998481a40d40a83fd1e88d4c74fb4f4e7e6391a9013d6b9cfa9ca8c3cdddcc35dc23705bdb8212e45b4ca877d0d1802098faba663efe99c14ea39bcc036bcfb666db3ed5224c3dddf7891db198cab8b131590eac6b7da5133ae0bdd02a4e31ac65a1a23f2011d9edb31fbba31294dcef316bbeda5152f0237d6a4feb7bbf365c79aa6618fcca617a861f2313c5470105ce5384666ea4d854c83377af2144d32828ae14997c15837790db4a3e70eafba151ee69e9a2065c1b3fbe89f836b5471141bb41387fc3d8b8c1120a8d40fc8c3c945004620e574228253399da58bb0b8710691f6375d38d34821532befd61a2414964a437150ce518cd2bb52049203a75b5f6fa9a1cd691058e1cc48dd9c26135d1abd89404b16a7c17548edd0eac558beee7d2ad84ea2a123d400c0a656e814fcf1e02b001587ae40aca986e1cc12f2fe7039df876e74541967ee14e1da802c263010f27705cb8ea39c2122bfa223476b963cce0fb48e58309ff606e1d77cf76067c10bc66883b002ba11c6228f683d4103e20dbe971473c1c2ef050ebc382e51a4fc724739ac04b7b7d8d9b6e52203291f70e70ce90392d29c827a0a7db40b78a6a832e07aedfb68d7dfe335f5613348f2af71941c75544ab0b6cd1b841370061b4037fccf07f057ec38c1efdfc586e86b65f4717e3f6d26e7aec22bf39be2f1562ab67bd97401ed0e3d22d21d5fe9753794b1b0e3d74b159b0fe78f8b92daee46c43ac11b1c7ee963d49417f341ac848265aa1d8b82f775d35aa85dcd62a5b8738af19a86160743e20f52216bf4c490e92be3e3b96926c1a063b446779796ee553cb9f935cafe37d8fad67a812dc6bf010015728b470a0618eed709be818ff95bca3bbd7e72726c3319c09085c1b3970fdc5ee24601625267686eb744767ada8e388872cd5154990904d08e08327b743e417e09e9ab6d6b0046332d53285801d843ea9303e026903810a2cd9d3fe4b42cfdd3fdf51a5e681c245c8ba3eed7faf28291554aab62f4be65801b82f42a88f53374df1a0ced06dd4b219ea26fdeeccd0164e1c8c5948d41fa5124a9c0156a06150a78b429c317a81d76a23767c13d1ea1ff19f4b399a19a1025dd133a9a75f9eadfb832013aa5585471ff6ce7abebe7a194aa364a72544fbf30662eeff716c917bb9362cf0f359f6847b370d94b03b67ff04d21d6b4da759abe4dc776c3754e945971ce0064dcef719bce95beabe02a441febf6fdd942690c0edad809e30c0a2243db3d088b7e4bdc044e22f0d84d1a3ba8ae6bbf69451688e3d5ddf68e8c9fad0bae04a79a46291b33ef61d436d3a2344630e557a5284555df28b30c6b390b40a6d38c3d0d7043f42cc162277af7005043e90557ec5065eeab8e0287bb3a6f307298e2356f9c2e53127b644a62d5f9dceffacce8eb995e6579625116fe71becb49bb482e659cadd2f336726f9e308e4937164188720588939a95a3b19ebd6e425632d160811790c732badffe4d565f780d2f824a3f46b7695a38ef6da6739bf619bc4ed0b4f27adc6237fc87c8abe88134f654a95c3734a985d758a7d971b6866c06435e13ce45f05530f7c0570d92f050b2100f43c3fb3e3394a283154883609ce0279e42625e71a5258ea413f2159de368ccb65bca83179a89629221c6884aabb99e6fbb54570398399ff739674ac90dc35de1a6bce375f3be43dde3c557f6d360fb66e958c9cbce6b74426342301f413026fff5590d0d834738ae8425673dce94cf7d04da6e70db1ce13758e06ac4efc6e038ad7fd983af5c461936825e3449b63d8f4efb0519b8f8a4894bf094d9647f8775c9e8d34d9071e634f81b34fb92d4e490bfcc7e0a8be736a5186cfcbc121b5601b9a17f1b049216b4081da1824597a3caf5a2408c13b3e887c9828a08993be6565ffa8d14e2a839225a7237a89afe0e560c168e452abd638aa0be0afa093b34607111227a784c6b17e6ef058d8e1e3fed27430e85829e858fa85fcecabbfd2a0492da08c83101b27f587b603a5263f103b56cf692066ba1d7454cb0eb251645c418926c3217b76cdd6111826ddec1fb304c3fa6b3abaaa5f302094a5b18481eed35cebeacc39d1a9fd2fe652d46f16052fd301eb45ee476549145a09808ea6febe57a9c6876587094ba9c50e5831f30e25c1b522c8fd7a4b15d60acfd6c38c9079275529b698dd8adb0502cb70e19b59c340aeea1f66509bb16e8c6af59525e935b591b857de2a88b01d5777fd8d3589b183039e4b3e96780d29c089dd91a6e59bd188f848b845f0dcfebbbd72b90e2d5b2c933920679b0f8dfa9b060eebb1c9efa2b554518ef15e482d496c488deb691b5db609a963fc7f3d4c3eee25bae13e80ee2c182ce0e912a6a09067924bfe9104e1b38ed1ef6e2d78c38a822b480bf06fd11eb23fd7c31cd0ed1b5eedd0ca0c76f696892c6ee37dcd297af5d1405b387a73a831bb32328f4090b66110fe874d64b3d4e2f746c954317c5175439e976dd8fa67ff44c9a0fd3bf826d10e5aa70690002ab71551c247d8e9a1abf5c1cb5dc3a814ac3aee1e0e4e3745f5740843e2684b03a225c557b9d98cd0598d9fe5115627d2e1df426b02c84ba68a404ad34135618c6aa88a545184064dfdf612bae417b1409511292eb238515d9caef274bca0b7e026cefe522345f5c98a559c9b7d1a8e6d4e79836cb36190fb732638431700187c041aa48ea16df7944b77b1a10417b62452140e217617b461940f6b03a438971ce77dbc8d49979f240d7d9ef28990b3435143c6a5278d7cb3a00653532e31f201f08dee2d35bffa64947c26915202ab64b10917842c8ec77d019dbb11a304c0d8de6e55c9d2e893725b2c7310442c98af5ca30861a610a57f92a170e330c6545c61562ae9fa52f204ec85cf958fb3f6b556172aad4bd4c93c14e050fe040ecbdf658dbd07cb0d081614bdb08c6a431a8ba638d452189dbdca491a163b01f7bbdbcbde170907d6e2c1b1b21a7bc63c014fe97f68e510be42a6f84d3091b3aad74c30217885e9622b507571ffe86d340f8da81aab37ec99a87c1cb7284a4503bc45254c775bb8fe2cc216ff18ec48d958798e594829bf28966049855eb0c40a866c20d89727f688bfb8a00706105bba408eaf09b486822747d9910345ea1df0fbbb5778b8e10adf7a0e32c11293f2bfaf3fdf38d2f72161ddff8842eb4198bfa79c34ef11832e168a4a3ca574a832beda623d5887fad642399523a7ead951e434c895b02e476010a0891355e80d2944d1be94cc23503504f18b4ae9edab6524d9ab72549882e0a93d6150cdb33458a5048713ca111e2437f53d795c6bc06fb237a1e83e5653f43a1c4afb7e7c77e7bd669bfcea8ba55439b9ca3ad4dcc5a224d2421929248e4d2cade243e03490368032f4f9355c6085ec0a1e255481cc4c0c50c743cedcfeb5e676ec3d75606746419c65aef2d8a9ca75278b2aa2053ae5d14e6482bd733ad8852a3d24b9bb3525aa5664389f196a5de5ef7b3db82e20e35f11349b3c471113f55544d8d34cc8e39fbb730edd4e6544d3ae7adf5de5aafd52a9d999c328c44907e054520487aed6da849f749e1f65c8849f9f5a87b4f4cf1859473d189144f52ec2dbdaae57329fd5fe77b93d200e3bdf9ffd4b8deca3a81d79456ebb64ab1e2b6bd096bdf646ff8f6968b84d56a172139d1b22ce4d46039e31500bcc55525300cd181e380326d91e53182c7974c630787e934476088507b90802a8d54a088558787d4076204861c3a8f0ed36f7815260100ad2e62e5c1f187d2fe802a6d18b5beeff01c54ef4184b7f21843d48e0fa81108d608dd63ecf8f0274e12c1517f0fe3f355fe0e3d473f87dff02e1daff298bdffc83b7acea7c19b18d54d2d3357917a0a8b56a4d5f9d4834537f10bb995123b5426c1a1a1f45b24669de96f88ea39f4477b97b8f823ef4f5b8abcf74a2b5103677a91cb05fcd49f4a26132e39b8fb54cfb128ed3953cfb9cfb77729bd8845ef3d589affd5d7efb27f24595290202c2e62cf919d879c8ba8e76c7d83b8abf6d7732c8b8bd7733a17dd7372cf99ef22e28d6d15d146f9c392c9c5e93b14d27f4944a5e47f32713c6b3baa79954092b7757767a2ae22aa01761510dc1b45c5f33a0a0d142add0c1115adbb08cf884ace7da4a74485e3b6aeb26d18c754eeab5c6b81ba8a7c15b34fe993fdacf87ece9b1ad8ebffabb9251e19aaba8bccbd0cae69a42ec7a54aca86706de73929449993421b4715f53f46b0112059d853decc170fc67b732ee4636f48800dc1341ced457cfde870403506c8025b7bedc4e8cc8ccd202a3387e60d1a336d509829445fa6149a5248da9834f365c2cc197963cac8a119e3237da40c19247f240d199333640d099340f2668856a0e6456b6c4aa430863006277c314b103fe43bf865d482f3bf3f30bed1dfa11b5e22f5cbe303bb231388d859c27e816257885260f3e019cc62cf7e829c123b547c1c5303179abe7aaa282d22954a1c0ca514efe8db19cca2ac43bbbf6e7adc27f2b68e9709238da33977d604d24b85c7fd0abd1aee349fd5be38cdcb124f19d4665fa07a03a1a13952bf23d14aec7f272e0afca0c986c27d9892577a78640c3b12868e7c2171648b15ab35c2f541c2f4bc04ea4f26383eb5328ea811e5344a1a133e96482371943125224ab247f932c222a233b992533894cd04c5095ba291d491293227cd96af7dad586ff17b8f83bf53e19f8498f85004f20fd1b5758b2551f2e2d01364708ef1c9cddc4823e84e1b99570b2f72b5f6ffa325730f01fd1a4cfd14ec77ed8d312b149b6035dc8d3152733d05970564bce563bc37c67b73febf5ab55a9966a79d25ccd46ba6989a7c59fb28e94bc5374feaaf5a2e1e1f58f6f302d236211776e6820c13cd5178f904892be930c9e5a5918de7adf4e9be1f25a2793e795fc775c179ce5ce95b461c2f7e5e77bf65e499e3f0d612e6fbfd779cd6186fa8aee147a3cb65ef3bac31deb693def0e934667c42a5f83f87bb6fe92d1aeccd984ba14e7de37d7bfc9cd20780946a01461fba6cd59400c85761b4a8c10d40bc54f7b645f719402e0c50b8010440f2ce842064011910ae084058c10e72a824410d8ce90a25f841d0056a2684d23ff385b438252dea7633c262a3e19a101a4a5d88664a9c3c8a0c09932eea9f1ffff6d62626653aaab9fbb486860766bf36c742e25ee04aaabe3e136d0585128ee85ebbbbb618ebb670ac43255739f66163255c37827388dd4a78978487f57ba2887351ebbd333b334ef75c215d7b6e26c89563c5a53fb967b55f11bd56d4c7276effead26bc596b7dfb6f85aa1bdee57f4eb152bbe2e7af057bed78abdff4bad08bb380a331572c8f4fc4b1d1c23e5e32c8d1969448dc693389ac231251a45e018ee71f48da2377addf8e971e791e3c6bc8d1a8ff78ed88e256d24d591d3d1d68cb75e18fa55091c5bf5897e043065f2f8a9dbe37b88dd1675630b0b4777d950eaf8cdb708ec1bbee33b85503d75b13717894cac0d1c3a788caa7e6a696d111781a03722b13eac4ca88eff1611df4111e8795da9b7b0b880f80fefc2e2240ddfbf25f440cfebbad4fecefbbe9689248e44941ee42140b05060e949a66f992c68f920b7fa2e1c36a8ee4f8ffcb2dbc7e33ff75bc7f6f54fba25d551a7a9371710a720828c38404042ef82b8c80ab8e0060640be9ea966e43f5191b76c5689abd6b6152fc71cde2eb69305af7db5160421c6ebb395073632b81017efbdc9518535c67b734ee9bd5dabe39c9940a52f4dcb782aa8832c430d89f14a07944686a1c04e10cd7ab69a91a11a67398831038325eb95c560c103727612184385195ffd4cdf5afb2ef3a9155971e3b6259727274c645936359e36b75ea6d8f5a7f619cf9c73cea79452bcaab5d6ba5bda77afb5d678a73b0a293089d7cd1b47670a600e00257bf65acd0bd00e6ca015d4d0497b8e4a16432167bac87c631807cc2d054490e1058894efd2a9d0f3c207405c5e88c736d0d0ca662d7d700b46bf9b51dfa3711faca1fd172492db87cfbd687feffca38cf4a2085286dc2921840f8c103b3d3f3a3a92e7857f09e6f4a698d4a364343cc7cc7f074dffb1e63d6c38fc869bd57738e9c06183caa38f3fee0e0da3e6488d18751aab898f5989a404048bc543ccc403114e40b11362e51be144081d10ac1b9c14d2480c45e0febc4e83f811b6882d04665deb41fbf01e5aa6594588f889d3a22d117d86884da00f1efa84cd1f29d4617e2f7945aea4a4a4a0a0a0989898a04081e2c48913252525242424232323222222212121264c982851a2040912243e3e3e5c2ed78811235aad168bc55aad562a95eaff53a914e75c14c5bdb7d61a635cbfd639b3cfe45f5b7d4ee05e63eb733598ad3f1a05aa3346a5d0a44f37b0a50a03f4ec720513117aae7faed6fef980b617d3ba7e80982a85aa0c72f632313a3030f505e7c68d16434337366cd80809d504d1a0db69ac85e9736fad3a212f4a9468f1f161536930ae33db567130c7d59b8dd61ada429d994135f253a0fc3568e8a73ffa69cc80cd9821c37beabd8c9ee9c333324273ef8784c8e0a731b80485d99ebe6cfff171630e713f62848d564b88456967c5b05361e8d44fa55e88620bad6db05633edab581c4dca4d692c03c1020e8ca75593a1a0e6c56708efcd799e3ef346ca2159696c708bfd82573ab3715e3c412914ff399938474c859d383860beeac39142f53a53735375762acf3ca1b16fe6154b7d0ed22f0aa1beb3e1fd68e8f437f6935e4c0fc288be14e38257999119429a1f292826284e94908ce4545fa15adcc9b5997830bf9b7f0522cd91065e10d2f8e259354b33b06f3646d12ff5bc4007b858c6ee6f307d7b3f9d50ca818df7e69c0e71b0fc5fc367760c877f3610af384233731bbed66ab03a9e6892c7474a59433f05c8c4def9743c9cdd0df0c2cbcc37e4e309c997ae1bc085d8048a055c955a6d9de22b962aeb99b46af67e55851d62a23ec77191fb10911ab3537c9eb0826292fda0a494e0c9b578c5cf6599dd4e7414ad95886b2545f51a21498935027dfc6cd42f9c6599082363e48bbca19bee6c7cad86bd139489cfa80dbe34830cb6425da1d60d5f16cdea118bad5ab7f1834489d18e2ad7de7b6f49a9d6db6bad6bd59acef4b90ddfaed336cce6a6b64296afb5046aa53845568ef66c2ea56bca4dfe95938539e79ce3cf157379ab1be6b4de7477e1203918559fc55f4dfb951412786fceff69ed91372633b68e696ded5bab73962e33c8000658ec869a20e72c12c14fdb8f115ff71ed8795dd6396b3c35267fb597e3b8efa5a73d9cf5edb2a6395f9dadbd564fba23675c2478f3ffd5aaf5b3337635008619647093c1e44c0f1087eb07c67bcb1eecfc81f1de9cff6b9accdbc6c570c187e65e5f1adde9810d70aea69ba43b98295ea79677ebceebbccedafb5ae795b6f1a85ec39ba66156abce5a55b5563abbf4a4d5d9ba66ae8a57343a4190a9ea4596fb574ac9ad36a79c21b0f8524fd31a566b84cba5bddde9c7d24e1677ce09600cf301ce60574a18a87497bda7fa9bb74351511679521a17d69e28a65e9559db6a2b863914658c7fd5baae8d719e2116699067f77c33bc9f8e8e1386b3982b94301a837d6168bf990c09fbe1b89d291df16f1973feab15e536bccda9c94d57c905007377ce9fbdfe74c04e40d5d9499e54055ae3934ca6a0ebb49f3a83c2a60ce9237b3ad2732f8e4624130abefcc4d931b7ed0f4f36969ff30e0e43e9f375de7b611886a1487669a3756190dad5422b7bc250c208658fb42175c21627e25a22dcf2bcfb27efbdbd7bf045ac0433bcfd97bd4c6487d92c37f07b93ca53afa29af875b247c24059801314010c9aadbe955d27fbcce4c197fb5bb51dbb7bafedee66adbdf7ce99faf7d6cdd62c9b9175f25c5bb7aae5d70a106dacf19594ea318f2e408ebe1deb07bd563d342d5e1d5e314caf20ad45bda136b346de2963aba64deafd9dbf894050b415d4d1af63bfae6faddc36bbcfb8eed65aa98e46007d9fe3a4bc16ffaa578c39a7b558ec5b142657f24d4ad00327ef169219a8a46a37686f0300d3b5001c1c0dc71339c8a29049ee0124c5ceccd586135a9c0629870032c0180003300000100c00410000e2f11095b7fc3f246e851b399802f3698409c16e13a585a4774149bd32361b47cf809483e36dc77e7ceb0405a7e7089d79d4378000880f7adcc04d7c8e1b51e4b570781cac00f1ed2c47109c8c3f0aa3969a987c82937b1b7f7b28e6ccc171b5cb3e7f46c6c36b75c41e4ec16d04ee1f13242828b446e81d2e41688555bc1de67dd65f3771ed9f9a6b1dcda28d518ec9bcaee0fe9c0d59d2b2ed5050c8d1827d19a84ba9763cab4c09bb3d540cb2e29bbc7c5407835d8ed397ecfc780068f4f476eff701471d0a115024106522b0ec4c3e24327f039310bf2378dbd2bea247f6a9f758b05ab7a85fe01d0a4ea461c02b4976d24f166fad19cfd880487cc4d0fab9a4f3c52ad6a11582af548b40c44ddd9fe64016debcdb4678cdf3bf2f3782a25b360be5d9ad5f943ea28b04ac41fcfa57766af708c65f0b829bca29598874ad8c0cd03849a87f64b50c75106ecd4dcecdbf545f301054b21207c01bd473093aef890615bbc38e99f8ba2623c7d203db4715fe1b4357998981efe2d501ccce6bcb327a35c93d2c61e4bf7f1d21ed98b691a1703b46fb695a132676ba5a24981684a3b0c4210f65adc1607059c68822ad3183fca206a9dd629fdc3dbb3b965aa07442221fd0fe3fd4aaeafe992d67eaf20ede3175cf5b2a700cac1c02b766c0c24351736988f92aed505fa239b2b4a517d1ae0cab8c3e62bd08dcce71c2b28d46552d4c41da429394360f7063237c19601be758db7bec190aefa7f2899965b6a3ca7f238076c26e299d90577fc03a63f457fc9904f33dcbf3da44b48c312f6e3c8f5606d946b2981bd8e8903aa889c5ac2e2ac356e9c41be2eb018e2e9eff0bd22808dccbe86039dfc2654b3c117ed3da8494652657db321f22a0ec0a7ce0d90d98b8f2acdd05ec3c2e574d183a25124fe7876b294bdea9eb1aea4c6e8e226edece5a870b27fc40050ec6a0adb1610121cbb5590deaccf9565b572e6ed825d2d4eed12a669303d4ab58cde1b0901445f6f7643f161681d54903b7c63ab7e0d2ed843d4ea3bf37383fb88331787e438e146403d3cfc7fc77a95d8b7db8dd143efc2d917aef41f77ce6390e60692d3213c4bc11e05e40371316b9b1e8bf2e8b88f57aa2d4a189f4e2cfe01ad7dd6461bd91b83751a22161f16baddcc1d057c71589ee88f1417d5d657ccd82466793b1a6655a947a5d0352cbf668bc4181baf2eaf875a17507bb0ac51bc234943da44a81c45476b66918cedab9e9b3e594ac5f1c52e4986c880569e61cf9cafbef300e30df9ebc8eff1d9889c1397a9cef83c1b79209922c2fecde930f27fad22af5f36edb8f7bc45889f202d03bde652bb736f0bd0e1fa68c76bbb1c33599e57e933f01b76c580eb2c268fca484040a13ce0620c2705695b89f12af59069c8069fa348b77145d4dee3420eda122e4b901b54a0d00b6cfb7f578dc43a376aab311d811138ba585b12369e03470fe9a7a71473bb98a2edf735e0297a24a1bd0c50c48abe6fa274323083e5e01aa49f2ac3a9721205740562162e9470a8cf7c8c02ca9f82bdcb565b76b402242c6a8bb136f966989e2a2ddc09febe82c52405d7e27a989f97e6baf73dab112d9100283576efca952d27a63e4ee8b8645970f941083375df60b3da5a49d83e9b2ba916004b0f603473f38ef65101dc5c064a9f771a7d8cfc8710892a0ec79601dc081b66aedf5beb28f6e5cf8a7bb8e4abd483a62b79e6e55658c9583f085f86a57ecc81b881f402df6204e862691ecfff67727f5ec1ae111c7509c1557ef4a07031429568d06d09ee63ff9da478688781972e7c79f8d0821769c64d851e141a63392442f405d52eca4c49400e3d0cd2434e7bf4bedeadb3ec0be1b221cda0613e6405c7e41a5f95472226190766b531ea63168f6eeddab5ceb6a6080246d06bad90923876018d58254b5f8169d2e109ff310572391606ac0d1e627de8d67c65dc60c0ca79cbca7fbca638dd9fadcfc161c4cae0905844a239e5e8a1f7d7548f6931c645e96fa5fa2bd3669b0a62fb5d4d01489c3e03f989093da2deed2d8c3919851cd22043ecca131745ed5247cdcc4ec58754e8fe7e362ebd732ad420550efa28de79671638eedc83a7283986b8cccfa1541702b5b92dc485672a7955f6dcaf754217d6fc7cc1e42bd41c1bfed876bb9d30301fc11e7008a45527d0f9cc657910624d0e42ec2f64cf54bb242ae0b6e5ea75895265ffd5430c6439bcfc0ac6ee7c00903d83774fb189ba084540a1e54d40a14a3febca73f083968bc32ed4868eeaeedb6225f06473bfa04e0abcaeee19f01b0d4d8329461450b6b756f893301840cee5cbf2e8e109f0fe73fcb7557cd03662abbcdea2c708ca663a456b5cfc6199b52552d37f4aae13b9b4e4f56a8373178675bb44f5034544e1b9b5f5bfc5ca0032272dfd7f4ff2a4a622f032eb2f839fed101d2e1572aa1ce4520afac29dc281eb57c8a8e8570432614760f882d988051c4e5a00aa4d78fdf58094cf4c5acba35ac3b0bd5405043692e351fd3120a23297d082d766f728b224b939e5c122b667ebd91c002e6dc5eedd60672d54d195d6394552f1253c0fdb0aa02fd7f5805328309b208d4fcaf945f63a9556b44ade22d42cb6e3b1a0393fc10cd7e60e98e029179bd814290eec367970d18c0b11d1396fcf1f56585d84ea6acb394eeed7cf0ddfac191a40ffac9944b7b0af83bc699bb53ae4121d625fb420d895de4ce0f569a7d276127be3e3236403ba6b61c1f711678bc0289f1cccb68a67fa9e930059a201b2c09b9ef2427627dcb25912da115cb3891170491f427644ea417eb8a641bd0aa61fe46dfef21452151b8fa6db9bc944515e20064bed160c81e0429ca313dbef150b98e6a3efaf17559d4b7f8b61f4f6e59d6dbf5421a7a9d6c0e2388340c37dae9b06da7dc2465279e3191010157fa90957f2db8f28a03622f1fbe5906c022fda607d516ca56dd68e4863c9cab626c4af6a9c711b5494d784981b19d3bd3394b1c0ff5985dc46e3df210ba3ee4cfb334bd7c85a84bdbce2d2b7d088a858642662785e71b9f019e680e00b772392a26d09d0c1a0e05d6a70837ebd1b1aebe0a67badc6f67577ae885c8a373f33f5f607f193d748835256dde733907b1855e2f24cb1cec9963623142860b11bdd22dd7fa1f346b48275213d32f70fa35fa382f48d9f5645ed980960bbaba050c5f8465059aec6f2c9a422a5f5d87fe96f75f7134ffdf24e3937658c3bd65be2300307e957a68785e17e12367f183fb9e468a6b16906aad749ccbaf17bcf79e3f0143e2ae29f01197447b8205aa8f142275db18cd82f079ad14759c30dee0abb641cd5b8793888f2b16f7ed18be312da4ea2f0b4dcc393f3f56ad3d48745ba6a866b3f1f7b2689058022a2e65386d1196bc2c7c563429383b73572c45225f2be32e8b409f6015c5f774e61578feeb4b98a64b1e2c973c90cbc81802719c0896447e2e0b377e8e3f7b6f620145fb2d8ac40b89413c750f9f7270beb3a307ebe714e58e8270f2a397c5e0d20d777ee2692429d9fb62c1a2ba1fdb5d3f6e93277c839b9159a68db958249920e1a0b9cb62c1efd8d5485a64638c86d6b74ef1c4bad744ff08e6504dad8bad998a7ecd013b1b30c03c493d15f31cc1b77090294aa6d5ab19ad270b3f9529da6fe8b136e7b8091984bd8a6ef164f5566b7a3637e293b2eb27c042d92f5170712957e55dee9bbdd114a17a564782af36684979b1fc81e1794def0fb8d10f1cf35bf294df4513b99e657d3f8a7d99d053b4d7c8772628a2b0b182e7c24011536d4912be6567a2cf76cd9742d9e42eabafafef09a15249ec097831e2ec3e58f64ce816d81796c7aadca759f10d195181fb8f40a0eef874847abe45c107253c99a55479e74b35cf226148f131d5c3bfd2241773da3e2b9a8d9b9ef72023f63a107298ff4a970c4bc7ed49995a362a66b2d3abe4d9be9a46d529b219907144ed914018c895e61409fe8232b5c1a12ab68910d7e51140b4e0b7cf1315f47896f96c5d17fa1abb93f96f63e85af352cd981c9432600cd309b44a2892a667776ada37e6169d2c3033016ba6b73d443f0d174da26335f62d0a5d9b251407d012a5c170f7a37045de04fc652d235e0cccb1c844454f1dccf1c3acbc4ee65c02b3ea7909849672d70aaada2ec7ddcb5225b29962e3a5192c0a1b9070e166a730154a9407a1751e6dc045793178b3b710635f621ccd177ace025946118f8570bb02d9dc0a6e9b8f7204883e2d2fe26e1d6fed4018d547577548eaed8d46e67fe0a38a876264dc5b68172d032336f0008a5fcfcdf186a4e4bd9d207048b8d77bcc52437bfd3fad5ee561c78cb5be155f139ee13cb835a92fb32d71c1ef43e01aed09e711f82730ae9e4e4d14124c6c4466969603444e760d41e71563e72fd0293fa69ffdde3615147bd985b4b9f47f1e1061ceb739d29777c1965c6d74bbc06185c9270b391e1ce97006e1259bbe9018132a39665c742cca38e9aa6ea3eb9588faef44a80a2e2060019e35f8465d4d441bdf94f31b59ae12b84a5b2da1a7dcccaa09a1a742b0f881125fa01d9ebbd52b7910bc9ed364de93cd4b9066a0780b0821215be13f708aa45c2f1d8150c2c5b93095c29fda5e34ba4460474a34570c47014a6288572114039b076ce3eb82253e063f4b734e1d51663692ddc469a6a0ea065f897f71ce467cc3ab617f04291c83607b0ee0f6e465e2297bb7659fcd1709b52f0f9899c36f73eddaa9400e5fb14ac5e0ff929d72ab88ed0699587ab3cf85cb1c032a4615c19c7db7ae9235d6dcebedc09bcef800351d3ab992e8e489e64c834748e49ded36980c9d9f21441828bd1a846df5ca8c649f23d8b6267795455e17db2f7ddd75dc359ac5c6d7eb0008e731b073652444c5a1814872259dd6b96d61912c66812f80f2db08038f9ac8d6b202aef2e23756ef97dd5503e339eb013c9c8cacecc0e3c37910881711e260a86b168efffd65d852a0f4a40363874f203329a0aa8346962295d903d7b814118d32086a24139050bd8dcbdffbea756a815da8dba7a69050a390c521d75ca2bfbc7e3f28b97ce6ab4d3cbc0cbf3068f63c4118f0ac08ba01cdf2cc4a5302f896984730313f2a98420d29202a203faf830e3df881b9e0f774595b50ae5dc81f4e61d959627ab99d33e846f73a816983b102b7be769805160a92e9cf3929327ca4e2eabdc663fc04701e0641e69bfbbd8192e1e8db81963814f76398f1a27d2fa27f96a37aabe257b21d619efb437bd119567dc6cc3c616c9763563739435f4f55ea0fb335f58807e22ad9d5e5742009e7fd76bb2fde6783292c435bec9a02deba007dc1e492a32025081c0b7934419c529cb2746a71f7d2b5a5d38bbf96a62c9c5efebd746561f4e2afa52b4ba7177f2d5d593abdf86be9cad2e9c55f4b57964e2ffe5abab274facafa62246bba178ed3d3403ac89f6f2f5da63c66c74d9854c06706fd5385bed9a8b42693a0389b67ddd63fccc5700b5636639c78ac211937bcf80411ef27c6139d4facc59c1b3f8950976af3e4987dcc13a3fa9a74d070266cfecbe16fa20b0e689211304e1660bcff7131e5e2c346f193c44b5b103268f332217e4187a4dd871feb924eb072e6a0d6149eefdc69beb480b744bf6c7503f98436585335a2ec079ab55aa2ccc7083910bc926742834e5219694095d5ad02b652360730d5e0c82506f174ce4f265065d60fa744778705397f6f89c1f2a801da0e78a3ad7e8bb86a13eb1ea5e822a8e6dc45b688be84ff17d9ff964a527c339b37297b4bed5230cfcb4741001073b02cda75c310a0ea08053ce2e94d53375d04fd02635e8c144c8d229eb14a95e1b2ba589980725886d88b25be6f795f884cc82aa4297d8afc7e0108ce565fc683c17b7668b11e21ef003627bc2e88e9345aedcaf534bb39f9909477f390d833aa34068f68e08c5b0fe7994245f139d50a13e5cca01240f23064ac2eee2208f41fef0a82498f3206cb9e5109aefa4b9512905ccb801d5a600ab6bcb139e287ef11edaf52b17e55c4d3e902c2b77b2adb64f69236042a108a21132e71ba9255d5d0cdc5058975963f48194768467a7cecf6d80f48d39399de17f0940a9d0a5fddd95b84971f9e1865180424196a3d07a8f2ec05db65ea0656d6220a4a0de8944492329246e283420b68e45289ae29be14f7944d425122e5e4c21210e0f760befefb5ce9d2e47f0b7a1d0402dbd1e7901848a3faacdf5ec46791ea23e5264171d810fa87c05ea10b6098ae03560bc01017a72c504c2f2abe7c022658a02209933d4c014d0592419b73b7e7100e5ec96daf4caf081a04f372a6ed38a33dc7420be2514e0186d47be86e314cbc42bcb932b210447b8714582e0a3307992e51a0c9ec226642ee61ffc07ec05bfbd1e834a054e5f334a3aa7424cc62293e13a98954a184e65433f4421f059f42479e26a3be1085979f21697ad94c46156603c3fc5359510405a0a4231c854bd0879f3ec853ef93d864fca9f40372679dbf7dfbbd7375179d3c190e2c2ef3f4d892379f2547d9dccef05dc662055b5b7acc7738b9bc32232a8573099c5104845901babb930bd667175e7b477403949303018fef13528c7a93d0c1744a03caacb9160254007bc8ed75652bf16f12cc78813c251f7d5556ed4ec2cb16cb2dd2d5397c8d9c678b5e1dc26d2482f178cd1c802d0279c2e8c182f018cc71597a9848761cca79f0585e6179631c371f5aa490151cd8ce1df5b516d77485696e74b3153c31ce4c67dfc8510ef88eab942d2ffe0fc6ed43023754c606a2aaa1abc7583ca47bf172a3d8f73c7b8716773bdd831b763a74fca1cb0134d5e4fcfab27c508ff94084ef99a01d06b24f30c6cee89190205573a333b4184222d603287d51e22c7ad0e93d5a45a22a8482e279f82a9c5719b4cf8ea5cd90a7d03a16d76c049c7fa23f73c3698dd42ce3091fa3ef95ac78bdcabe409d917ff7b0b9c9e783cbe2053cb80bc98ee4ba1f9dc7962fb44150c00e700f4621e0140618c3d221439db55e2b4ab8502218f9f3ac5b204cc44b538efc2354fb060dc40c8192af0b5073e699ce17c2a721c3e704fe0710164e95c3d6ba72a88c5254b042dbdbe99d4684c148f3cffd84be777b410cbd7942cfbebf47cfd8fac5f143994594d1ad0420db1d0511961635c77acf3af38441c7ecf7c6e8f83841eff65dc041f33abbac904ae05f5a09143c64461c3925441d9c653bc24195cdb5e6557bc51358467b61dcb0d1d082d4d11b4f063b316ec8d1f9efca5d9ce043edd974912b0b02e27de6b10ba98c557a8df2c983b43f9adcc2f0e99740973a453a7837d15ee0b852689ca4adf89b3edc527c46b3bbb12d938bc7ceaea074274783749f4e6edc50e05ecd8ba8cbe698f8503e2563fabbee7d70f6e416a8708196c9a49c5624ef08facdd910ec4cb4fd87e8c9d228688c19cf30a9cc48c44ef90123abb5dd450b1f9d67b08e5f62460445957554359a5e43d40f1583b17742145f7d0f32e8ed1952828655c41ec24f8b73300c0ab1c03d12d7bb13a86f3f06b4ad663634556c2cd49799ee28dfe1d4ef619db387bf600708c2f98a8ff2bc6f88dfe1e12ec169b54ffc81b92f2b617425284af29f48f0d36389cef79443c3f9b5395cc5eea0424fff14e09afd0cbf429f017f76212b4b8e0571a08ab26c916c9482e34d3890646fffddf7f82938374ac91db6607d480bb7cb9cc4b75c780251f382995cc82217c9daadf3ad6766a15b7822ef2fe8f19722407d89da3319451ed28b2fb6ad9012d80b4d01d09c2b2f31d0bcb798592a4eb7ed9cfabf84b28513c6dfd28bbafa70c2ed3c3010d5f2c92e131161ca6e999326ec19ada37269a84cce5cb667480600a501827e13415a911db9c3c099bf08fd9e65986fcadca47f76a0f836bebafab939f37432376041f0c2fedf074dc0aa18ed45a930fda07f5cf5f815f4e22376d8531fb43c2c1a2f028f8ddc722d81aff3e976d5e42985dcacfba27cac1ab7a2599fb2e125c83412c0f27db2252d0c8a24b324544c69cc3c0088b71a8d01878e11c85a97d29c6fcde1bce1748c1881d850d6b3c3586ed762338158c8ac4f5e8dbc613c48598022eeac42b35738853d347b69923f7f8bc25cc8ffa92a1845ee2f7a21624a2b25b1a0fb8ab2f339ce63878676acf5924066a21cc521c14ca31b578bca1651e0bf5f24521556c470a6107a8257e77eab49da789390354870cc47f81cb9cb076e7435e59156f816a9b07d277e4aebe78364ce0a0a7b5df9353a6ea84b7abd92bec1a6e1112141cb38d5278e66961b372bd3c43a2ffc0ed09fc881fc45690bb6f11adbbe38f115ae7b307b22276dce449130b6e093e4d24c2fca6220a67303c325ee41f80d25109aa0be5c19c899ed6c14cda18a1a7f0a23fc993327c1fbde838ead4070438e0b8eaf0209ee938a5a5b2a8e2162160bb1493ac74cafbcbca987e524bd1c707baef77ff20b8711191f5e3ea2805d77247ca9131198f88320cf1d974aa48fa6b3e972a8f5281cbd82d77e431aeb37bdbb28fddb027bd8c4ab939063b703ea41ba23c1c852320f52d4dfbb6759fb5c214be55b3242da2d711775010effb4ad62beaccfd49c8f9f326f20a1d2418c1e3296ee0f3b8090c86f8e451a507a9cf747e3c70f38296a33dd863a39ba18f6030285705d4579fcfa86ade6b41cdc68c88b3fea6bc6efc69737264f5f259f39558cca05a69813f038bd7c5873bc76e2fed2de5372a1a02252004306ba974ed06e315edca585a57e4ff14d26da0f979ea692cd67e8a57d22b868d1d9b81524802783bac9117a6879c219da08c97d6c691591088d1c5185ec1ec0103ea2f9f499be51e7886aafd91fc3529ecc28af4cc138601390ccab2c0b94097f4513f0f8eb484b557f8ec24126c69ce4860c91eb67ce537911be4878ce9db3722a28468891f76c74852ac1828e603884573790b5780e4489110e9599c01e998bca846fe79f650604927d288591eac4b4b54e37821398616dd430b117a35811bffa11dced3a719eabe02474a1c80e67cb627ee3120d7c28f5d5c396d6b18183ec6d114b1d16cd9587752c11a48333a767bf5b9d17ef1911ae437beed2508baf273e5cee7f34a63d51788f2a705cdfa3e010d665c26d7da136852f80bfb02d31dbaee75880a31e1b23695d1befc95338b3baa60bffb636a46e49b5d99536a3f212ae46d6f093b0c008201e94c71595da590e0954e88ef417730eb2cd2177cc74c7d94362f825ffad4f3269f55c3704a2324ad55991000de97962221d99e5c7714c35b79a3aacb329650c1806e863e1b8da4b0a9676228b970f9919bba4596c0a9c73c18641d5ed3a201a76a27540cc94c4e2eb831b4c001063f4295e02ca857eca894e26d1d59667a0e9d9451d3880085cb4c5ec2745c40475dcc393b119b2280478a698226255ce7026b3718cbeeec46f44f821c34613632a18cf7a101fc9d24accb8ecc331c6f7b104224b98a341030fb8bb07d45fe659146d42f71f40a0c0c14696189c1bc14e33cd87f0d19f510663425d1560b15756489922372d9decb61bf1f6b1330d6950be62eea5ce2581b1a568954ca9f76183fe76649404e9e66b80861be4736ab70f39dcb1927f531fbc4727860adc1f74c714c5cf419a544b63b235861053ae309e9f37ccb9f598c946ed8aecad00e980b04bc120832439f1a9e34e977c83799228fd81edd77de0e1bba2243fcb78ce566f7cbc1134c7aaf2bffb152c229e960adf75c032630bb955638ad7dccfc3370da12ec3f1d03ae8f1a698d27cfcdd61afd7969293be6a0dfcc8d272536f500c27f4aa5c7e8c7bf70258589de3687ab611738eb7c63ba740a8b98a3a9b64091c56b9ff5bc0ccceaa6810fac6d3840848a781219866a78d0bea21340db7a889d828114d4d2ef6b3b2c992f01ddce2f25f1215b3a4700e70e74f4adb2b9f6a262fb978e2cc2adf46198df7bac4f888581da6ec5950d8ae86ed17eab4153945e3a6565db76d75b3460187d349eb2233d76450df4c956c0cf606f4b8f48f4468b73650c917bf917ab2ce60a20cafa98a360a6aa5f9e054b39e4dd157e47662ea5b7623efe09fa30bf7babbb3a75fe4b0855bae6d12f8be91cd259626b21467df395ac7699b679a3c78c98bdb129c4332b02debf829d19b247f513f0471fe2a2f120b905d69f602b089df3cb2a60d02e24230d0b4220ec7d8600e0bcc42b16a9e16b7d22d520f018cb3172a68a322f892876484181dc4130bef295941fcf6f081146e9751f94d289cc0f4cbe285708b771d09289112bd9bec7b5105415c1065f319c9635a9834b3b55b06979d8e5e87fa42e1222b39f27693789a3846608f851efdf30bbe3a85a2f5745925208d3844414320210be0a2f1838686ef1d5beb4c78ade2af229769327886405a0e6b00bcb644a04c45f9a27ab5d5b3165c9d7b8d5e1d9ced1fd97cb021a66a5c6cd4c62946e7a62f1deff1cdb77cda3e76501a93afdeb9eef5ef246321bfd3e4d94f74bcd60b92d4fa17f24d9772c9bd8d568070d3ecf1e94844b11e2c3d6bd69ffadbc6123131fe675544cb916178e71428e9d5c890112856cd0d48f6968b2eeb6a37ba7234dfce5f5f6b65b18e69186c590e1f6c69ba26441e239d9d2d40c11e4ed76579059133969333a16b82520c335a26bfd05a4312615e5544200f51938eb8e63afd385abb23a3a714e909c410b36b46f79a7ea377b747db20ba732202862e6f0163d94cc74ed5169ffd4c9e4ad9c34e8602670dbc6b205bc392a22b7ae00e911deb9d82b7e9a06ae5a5eed68f370a5e4d2581e282597457c173bdaa71fcea9007d671683757965cc19926e9185780c8c2591d43e2839f21907c34859b2d267d01ee662b6e73dcca333bb5f046a03f2a3315d7b981e702768de9d8839c769995a43ae947dc954288af84ff3dbc9dba2526a7d069195bd1116bd73afbb5353192c65ea94d53ea72a683b1a2f5ae146e44c99de0637ec3ff521f40da977eadad7cb21b201aed587ae1bf650b1fd0f48bbb7aad816406b60687fa17a12e5130bfc65e430966dab272f7164799968cb6d9aa603c80f946d93e9e0d17ddbd8abe8bdc9ca8e3c3a67111a8ce67baf3ec51773da712991f2f76d190a2a18c42ef6e69554348cd06302526c4cc630b935f43d310c53109d4db4fe89f624510a25ce8f0b153470e5c1422b857d86dbfb672fe02b95a181faec008d375729d403c773104deee5da152b62b989734607342a37c9152257244da18de02278dcfd27fbb8b3c2e0e2e149c68267b2ed4b8cd55f97a84e8d0f9b6461c1b258e3e2228678bec1b7d59d9d4442a04c5dd4a9f1dde6537441fcf7aadaa756a248e09ba4a448f088f8adce631ce3f233ece3ed1455cb5c777cde906815ed859d84f17d1721d238234080b7501fdb69bdede0b779c7f0b5793ae406231259546c02cd88a4674d76d5076fa5eb92661d660d0b43752d90eda3e55375571b2b7a22935bb7d0381da00151fe9a1ee5d9b4f442a4c9d8cd102ccabf9184adda7ec9589bb8b10b5545b5b06221375386eccd581b6d87bf48adea32fea7d502ee27617e916a3c0366e313b628770e3a8289b1bb232a089fd882ed045f401bdc1514a4a2eb39062b5a40757753537656d40137b169da08fe805d6eb6a2689a2590bb5c302eb5701ea4a0a2bd606d9f2ab51c5d0ce783297a8243afbfaa43efd87f0f353543bca510fcc571593e871382607964657c759dcd8ddd7cc1278935f0065aca706207bb9a6780d9e7ac79b4b58fe782561ac0ca070c8e434822da0d0dab832d6593698417f63795803c8a3a152b3bd4972885c747fa151779107866400c67aee51a662767959366ae37e82e022eff678595b97d7f7fe22fe5d4957d8ab2e6eb953661a5d467eaf46ae2fea45bbe8fc771f418e40b1b07b9b6428ec3cae8126d0442b0d806a0c167c3f47184b1ca07e5e09aca1ed045cc8002a791c1851b054d574e81dd86f4e98ccaa9b70f1e1a3a881025ae2d72e1a09d4f838bf51b69b31b760220aad19d0ff7a57e104484c804898100914003eef133251c4e25d44c020e3f2aec516d2b6947b4b29654a29c974015b01690133b5a91e35d925b7a675d616a1b6cc0b9820b96285a545d39cdd5b5e5c58565e2a4bf380cc67d1db3f4d89ad52aa574a8b532aca9aa980fa33f4b3d210a5d8739932b91a77d0a49dbab959b90820998c683391a48486b61b91a738b616a1aaa3a091d9bcede1d9f1c12ecd6775ece0615223247eef547e211a8da1a1a6216ada1c136de44756648c9b8a9f29a6c92c7915a5cd84534859e587246a645492714a22bfc4c49b8be44b484c6b6344e4666dd002562ccd116b136469f80c79111999b0387478a4fcb8136bccd2debc38a0951614d4ebc7e9b81ed644790429aab3237df0f4f8b87e242dcdad7b32bb56110aef102ae3e4ece0a1c3437024471c9d13d2b4d7b439e52610f7c54c97700da207053dcdc2d694e08f49d79ed239e7e4ecb3f9267d8c6ad8479f90a528b4698fd1f98d839475fb474df67e6739696bb47d17f4f3876159c6cf59b6fbccccf32733679b610f31c94e63340995df7b7cf237e6f469a154eaae95f227a8d34ab562a9789e5403b3011bf4bb47e5c7a2ccdb52ccfed8cd784dd96ca5bca010485fccc0d0f9eac95498747e4837e87ea010d944cbca98a1202665fd8d9951aaba6112be170740330f19d3a450a994c40480a0b20e016254ff00845487434d0e98f25279c8d2e2f2b2a61bb4a5ac957eb3504e48ada8c06fede6277ccaf8633663eacc6f17ea945966ca74b0924b594f986609e9a44a5398d1dddddd7e5a3d1fe28bd2b7952ad5402fba3f77776f18a17b43e80fbefe811fe37b107e84cfd794d2b2c0dd39e7edee9df33fd95a832ec2638d25cabeeb607c8ff0bd67429d5c4f90adbdbb7ddb6a7dde25c87f121732f57f3ed3cfdceede8d6a533f672f45975350cc09ee94f4e581bca84a75774fe7a4f36e1848b5638c514ae9cc70e70e47a1bbbb9264f11ebe7dcecc8e6b489455153d67f1e7d2a2b2c2821a8d5e7f6aa564e0402d67800bc92e34d2535565cf2c99a27ab178c856ef7811fa181732332b604253fb5b07241c12ac63609f99f99d63d72e672e8c87da46d4e8e2850bac0905a3c4324a779d13cc3dbcfa8e1031ed1c42ad397d1366119394e4efcebc4f6259492e973bcc9df41c01cefc3d2a78373550fdd9826be7d29765c0c899c1f990a1869317545e8e07cacc0b0060e0f8703e2e60361bb6152f3c2d4dc40f4bb335d646bae00e54f7e3f3634525e53495b55275ffebeed7c00f1f7cdd83e9423742303c8063313105b619f0ddc7cbd8434d7ba8995c52e874cec5d812a13bcb7bacb72b15ce2ec771ce4d8980f41a978d708e45833be7ef5befbd47aaefbdcbe0ef3995efbd774261410ffa4fde4b3b74703a2f560c4cc344bdccb049237cde4c678649765f1896141a896834a55ab1505a292f91512da9ac84342a53b779b6c61f572a9db559425118395c94524a29a5f4bb85caf31dd378582729d5a6ad93b040412f90fa0bf5ac4d05611619320f0b71f3cd074d3798476ad87b97511d900d3f738d636c867331dce97aafe0135f4d2c44a3921214fd8489c99794c4d44ae9c888f4a1501da924b584846442322191503129a6064330132994ca0e2ad52be5adc4a087c7c74e122d14a7f3812a85f247a2d737584d736141e173992d6394524a69eb3139215491529a5e291042932ad5eedfde932353f69daae20c98917ddaad27cd562a0eaa3330316e362dda46a8228c4fa854bf2abe4d0d918dab8a442f129d5c3186b2152b2fce87b2a60aebc59a10356a146868622c0daca66554824f25048cae600642edefe6ada59cd963988a7550d10f8b7b2c2c9b558e549445314607298ca61b23b04744f0835cc64f8e1b1c36a20c70a08df7b47dad42f551b71c8f1cca2c9289bc741dd79d9cce51638d910d4c4c8c2f535fcb896e242262128d7e3412d503aa094614d26886d118d2c7c56e70a521ce1fe836e125cf400ff8ee29723ba7dc162de29c196cf9e0dbc576817815ce1f7ba990df42b68026c6a0bb1302e707dc0dd241f46e0ce79c73fdfe5f1e88cc3be164738fbe7d1828c1410fe931814e8974a8a4ab39d7561000c3750018128744c4c12cc95235f51c24834c07dd48a6c3684412e32886a2208e01c6208000000200142084a19a2116e9ddf02fcb2238e099495598e2eef6928d3649e06bdb2f58ec5a046e767bf94fc2ea8244ad1c85ee0b88f218024ca9545a05614ec637a8f63a8e2d51738120d72a7541590f0907fcb05410b547690df021d81f7c1cf0d9f081e78925da93fe309ef62ccb7698d2c10e6644ec739cb707a5801b6aba72d9079c1b8c94fdf060f814587d4a5aefa746ccf881205d6332849101153925c8abb75b99c65f21938bee4f7d519042bb5cfb9f0dd66e99d3c517250ed7afc29c7e2cac05d2e4d0abe16c74a85256748523cab05034fa06228c2a6ef8fc5c0b554a20dbe249d84faeb179f74cb9be7efed301f0f0e707794193a16d7c56d2f446562458a88df332d426c4d2429a40cea9504bab052cec4e7502d09eec4aa26a34d7b58eaa5bcd6e648d857ab6a4d9a71158d9cc723c2b5c00448b81a0b5b115e3604b81d97fa0e63d42935597788fcde9b0e95610cf2868d1efd9c7c89c376ab1d018291481680b297bd65d47143fff68cfc45d786e1ee486269dc4caa20a036613d2b47bea2b42aae85b42689dbc334ab0ffebe492e7a8b5b5be6ce384009f725c39cdab94dd44652bdf9a59bf5a664165988d11e0ad122b487bca04b11e704eeb2f643c3d28e85a5ee925bc301ba663c0a53678ec112d7718e5104648e8b482687733b2ad53567d51de666a1de064270d9ddefe1444d550795151f0ca89e4a4fa7086969e61a4707c93cb67d7cd2de31cdefb4270524503054bb326244c49db7b6c8eb545f350e9eb3aa2783998b290895f054b86673d0be4663545a5d0e7038964b573ea61bb344d9745352cba50b7e7cbdb742ef9afeae4dbe65d812eb49b2c832d8671abd1576c3da8d8736dba0d63c1c94d5e0adabfabf8f1f8fac126998ab3ce7dbb9868f96df01ec1c26ebc428378c7e263be5aef3e97fdab23cfaf86c977e0266fa5770dcf378fcbc4aa8f8f981df4d6b38c2ac985cc4b3e398e8ead32ee11954bdff7d2bc5e7914f898d8da63139080ae4cfb90d763205c0e02ea34f2a27eccd785088dfdf5cf8226a9e04e5b1aeafa8a7173540956062b5da866e1de7e0d237ceb8d39aa4e77b6368fcbac83e66de5010a3f3de97653309ed5b399073ea1a9dcba54eed82bcc638396f04d3c135d74bbce950548a5c60c1e2d041c27c780a0d0066a456fd6bd9ee6c757edeb9ff0b201d0dcf8d8f548d8b3e76ac5a16e45f6c3a8cd5604fb6f8989f9f15b8855fd115b946ab75b10dffbc10bf2b73e68516cc523f36fb45c0bb41ed9bfa7e03a588ca0bcb7b675f905e0be1df3d192e36aa0f6e9fc0034e5359765aa01fdccc8a0150b11e2d9837b6bdbff7dd0a43608725e283a3b169c21bd7c5b4fcf98ddcf9c7bef96b13c33e1e1a8b80e1772b56ffb2a8892f95f4365aebfcebe5a52466ebc7debfcd1dae682a53a301ec8092989cf2311dc679dac9f10d7bda4b75639aab67e5c29938fb1cb1cfd337dcc4332f91d8e4091f59d8d8c92f3b5cf6fdae8ddd67927891c5fc6a2ed3cb0a0cb2629f34e75482a4fa73fd7d7ee57eb0fd3c0d74923b9f3446585f60c29afaa0ca4b8cfe11e6ee2fe5ef77f9f676e6c4596038d3af9732516c686e871d999026f0d74d465b33874175da68f53bb28a063099506f34762d306771b7d733bf946f0dbaf1810adbd712acec47ce846be048d6397d3411b4449093658288698b566a904d007113fd8ff41ba5da364c6f095e1cc7d500753e8c7e627599310325962bf816cb78446e72dceecf83f6b50ee92c24cb78c3beb1660654d0926ad0bb52e52f704228238340cf1561953d654ce7ec8e656264a9c7e7618a7d426f754371a7356b29ea035f0ade722b608a3c1b0964948440a84981d315d4cd5996a0b8f03985d5a593903ba4f3f31432f1cd8c9d121ab7076397e4c0b927049d22b259112058d5fdf3ae18b6bf5ebeed5abbb565f7f5b7dfdca0ab865cda6b67748617b3a7c86fe64fb4e104c89f3336ea77fc320ab3a8964050b3b7de9e898fe2d72df286995bf95076f5c7b335ec9095bca7888fe7c293134b666e6349fdcbed4f1b0df383abcfb65eb7d73399823d0a4bce7430f1fa75ee1a6d90a2d89e6e35d1abe0904584ad2b8aef1c8b921e7edb3d57ca94699949635750bce92d356f55515a01d8d2b5b8b118aadf5f2d316e6de62858c9515deb0faa9c95973e4ca128e5d383293451d5f68eab342fde825c143d2089c1bc367cc5871e73b566c15791ad76e0a49c94cf1900defc66fe8a4ff6ea8bf32ebfae401e3183bda00faf234616ac012a22d0145b08d0880bc1020c3b6c44b9a0968c8da3364f15c3e7dd43436ed38538db828adf92898864474e309a236bc176c6b42a01a84c9cc41a0bfbb55c8889f594779e5ce35631945e79054a33512fd4ae4a80809e89455646ce8b093ff623be70f96f2c34dc5aee017ef240f6d8bd28b26e4f530cbe2230c44510e2480e410eaa83f72d34e029fa30b7ddc275429ad7198459b6be9dc58aaa92f6b21970bc74b71f68fe84128043dd3205e3fb7cb5678e85eb45dee3d082b8599f445335300255abfaa83e384d875b88254f70115c896152614c250fa1fe209ba6d019cfa46b0ff76941dd852f496895f4c32250f26776b278130509939f1aa5194a3c7ebaa1cc236b124025ec6ec2f9bec2428b8d9ca0be14a62fcd9f59fd51b24cb0ea03eca6db0b2f58571d34098ee216c6c9c3ea6143e61de886e232f082ebcc64d0156064fac4d225e81316413b6f6eaf4bdfb9d9b387bfc9d5068ab30abe1817c167ffdec5f8235d2f47eecaf3655d6faefa0206347eb047cb0fd55569101ebd1aa7052098717499f5776c877cb060f0f04b39578436513ef823123c1fb5b651d33ddffe63e0964916d8c1cc7d80f81a305de400890108905e7a4352b7c42590cd21b4f7b3f0ca1126b4a0d5b6657ee138962a1c418ab116274970e4c257a22c0ed90a1b73aef6d955d98d1af5e010eae7d81954f0dbb02e2f870794b1aac86f86e1547113a469f27bae634fdb8f274b968890579909d9895ac2b9b0bea791af89c2fd85758da76b1360906092292d0504f8ef4f802e7f679cc1c8fd2d1031f04ed6dfd904837b213d8e2f69334e12a10a11e18ec7825c54dac11c3ed07f2a69f68f8d2c50d50b1b2ca9556bc58e5f347ae9e39824c4355b34c338d210824ea1d2a0ea3b82cad84fcef8ae4998622600cf41fd557899f95024496860872194dd98f0c28b1563a7dfb4398943cde5521e8a124c75b46d892e7eee511627b30986a0e06cb12f98d48011a0510252084b2565428ccaa0967f76531f38985a698e5991bade331732eeec506572a55b3d0bfb938547b36090fd7e8c91d7bb756f5aa31ab3a87f2a5792f8b0625401236e40b8d7a8fc51b594e244e31960cc8b43bc7de16ac2dc3a4cd176e385281fe6398317d1c97076b81b16cc89040569a0aa2e9589a70fef58929a3ca304bdeea048355084f282331fc355c2a9ae481dbc434fa20201c7034d32b2563ce02fd8b0ded66805d82c1487b7bd0ed48ac8595f93f718a43ee480b91fcfb853cc4308427233c2c85eb9b6587f3c909b3cf1555aac3e45b5c7415e7cba524f875b73fb0640abb7ed4bd9e75769989d0381a0c64a4441783d3bde7464ec68c2e90d68e9918ecaa371cdf51a5b24a76314bd6402c370d510445c65377d61e4d037aed858daab16ad500c62f7e18599cc1db2c1fba3a3e4b971a078302f6293169e3d7173a08bff713e338ce01e9982e800c07b17217ee3effb5816da7435c4291953fbb2bc0bed8f1028cc7ee7f1a69220a76376e9d6e8f92f3443edca0e8af798497755908c1f93ee0ed91b1c733d14bf54dc04c93534cfac06248af5de73292f1da0ee0c4a8e0aa3fc70909e153ff54062a8eb1b84ee2c8f1b0daeb90cc52d9bdac3031f7b38a0df78de6f82af474eced806911d49a553d67d7d13c3c386d8015f9cba6166572cd5a41dce3aea61b0ae0d675a8ac132de6fb8e4c72e8a7cd659d60fc97b4e696693fb8abe5c9538139b5a4dced71ae980860516c7f5f02cd4c61f985627db4e17b4db05d0e7bb0584e0c04cad7ac8500fdabb48541e975212fefd9a9bdef2d57fbc5985951b59bd44ff86d4cdd5aad20fb2a40c337b27bf3a2888313ce23d7ddb037166c8ec9aa4f366538a901cb2ba4baeb4588c4c8309b87aff2a59a30c22a4b98fe6a535378acb42665fd849627c444510bc7bc09a3b3591d09c6e590061df35f952c7402a9407fd3062b527ea94c2c03bb66fbe4f49f135063108d3b64c3d4b32a83608863200f808ed5051c335bb9b7111ea0fabd1731f3b8f409e6b7018ecbe2da2909c3212a9c323cbd1d6c6619865ac15535a3670ec4148f09e4046e7c9967723366c8f4371431d5971295a8ff439156e18e0fae1d7247b53fef3c99c1044943080829885429afc101cf438c89901cd2b73f6ce4052f2a6902e38119ce589f1911c91cf5ea7cb1da387bb157016a52ba43093ad91aaf72cca7894a6a253eb5c0d77a5173f0fba9abb500faaad062b4ec29d4a271d2d559ece5e7d1aa92b63f305c891f7a294656963073bffd37b81d5d13e20899637bad86008179c84856d716e564d14bdf4f88cd58aa7005f39306bac074ef23c60ad878847edfede6c65566f593b00e48e2d8c469cd90fd3e09c92566356e92d2c264ebe4d1f3a4790056a2dc8c0994bc897551f3da24b0a16a606897ad05fd7a4d34a97abb832dd0085893ccb78fe79793a45fd32c15d92c654df614d40bae94a280668d444f43a92e14ac460b595d12a160d949c058ee676c735c9a390c61b15b311b90de027c12a68ef4eda88404a305709329805d89c91ae276fadd7b022c0965bf89ef10e45910e64c3ab12a0b66e60838e4c1e469811a1921fff1a0d4a80eb0ec87f32fafc25a74d373be40cee308544d75d88e9e7e2cc481846472cd5aad33f2795b88eab8be8644999e395c25cafb129d94a9145576a82e21d647f963c0e0d5914693445aead65c99225fd45b73d2c91dd2a04b5cd65c8e14903f63d694e1d5c8233ba769432017fead639ecf88cf6e2d8e32724b338ead9b5cb38bde2d12124dad8f75005ecb9a1f26e81e4b6a89e8baa67113a9f4f91ad2468fbf04841dacd2b76a62546d5eb6625478a2f71f338e91f802de1571519a923f622449bb8cfcbec26d22be689358cf6a22e0c0c393d5878e5eb6f954725ebb3cc545489c7d0cdedcbdfef1906f9206d442a1cdb735340f34ad377471999d34842a23b4f75f1084937a5783cf2100ce42bcad9f044b284144099ab95e991227740297712cf564fb4bb35f66b1e6a134dba613ff83f156a4443f7392e30ec9fa94ab67765bb0b29f6f460a4fe650f916dc0f9e38f5e8794973237102c734c4932eb481dad7ba4c5b1929aee6e7cb778eb534a7c759f64e0f353ebac42c09c2425cbc55661112bb936e5106dcb1bb35832a7ead7cb404389f79f736f6a9f436dfb18a6e8c5bbb9757b23f5e161da3d2c2310963122879e7d3be4e4919e16a4502e559a0bb1a28de03bdddc9bdb6a973a4eac2cf4f09f815877dba31ead2914f85e02bdbb97f78ad9826817feb0ec541854acf619a239a72d7169963d25d9a9bac2501bd1874f12fb3dfb17b89e3a01e379187051c7cd4acbc59f049da35fb99129093b125731b0c830c1d42df6bd302df067476e8238a02d70ab6897c272a63b6193c226c2ad859aa0193efee81e924f3c3b4cecba63585029b56182cf9e8392b615659233a5a54caf12e4a069f765d0b86e3e6e3107c86b1d8bf10319088ab69639391168ddaaf8388ce5d71e97b01612c2c11d00cd59900661f55a2210be4d0a8455a1f1a701c9ccd7cf595a8106dd20965b0ad2cc25632215973191e8e3772f33842836b32973e5821274ea783da3ffdb4cd8121230f49f0eacff4a870971f629b6756c5c16cc8ff2c5be537da19b40c26bc2593e2acea5e1689b61f2916896ba8a2ae587fc75066e2561bc5b1aca7d06ad8ff4cadff1f6b742a15dfd531d198ad8b8070da280db7f3b6448180dab98b67212bedcc3bdf5493a4f295de0c917dfe1cf11604e9c6d38103d5be5f65c08f7287eb6ef8ab72ec51f2511ac0fb8fbac15f73fffdf4965536541410500f96ae8dc104619f9fca1ac9c518c0c81dc6a4555b682b4942b62229863be4d661db7d3d5849ef5d87af2da6fc8be1c14e8f1453ebd23c7268fabcf42756fb1c29a75690a8189aceeb78ff521d9d208927ecce80bc93a2b95801adf75b8423cdefd5bdd87c625724baf41ee20ad67e152e37d75dd6324654a6d9798b62b92e117bb0a99a0bd11d819023bcffc0bbca0a372d26bf217e2bc797e9d54e16c3d575867c4a81821503081323109d42a3c28a51f75f0c9d707b6eb1cf358d28fd467648bf031194b6a57b58dd2143395b27f030e866fe43ea28242b0cfba32a142d241650b4b3185be2d88d3d2fb4c18e74982b4563236a8869eb8427aa315ba7e6a392683612467250cbdf9c470477138e92c7b84b362cdc0582f7f8d1db238080f55daa642ce46c1cb9730e273e2b4cab176879b250d0aad02c9b1fa0712b4525b12838038850cf4d246b8bf71d0157d69fd8000c884b0916e0e80d43807c323f58b0c68593587e8343f92ed52799118092bf9f576596ae0c9c57f85dd905fd7578354792aa85406c00f3579e7415fa7251c8750495ba4f28db8c30a0bc8ae91fae64a1de9320becdc02c46fb327ba921bb8641db48079b41e9224d9e7239579b993021156cf7004a99cc1d4d905c4dda00b42381f72c15716728c90c4a88dcd9e31da163d865fecc886f276463a8c3cf96a647fbc5db442021f07acff86da35e02aa8aa5cc0fedae5021646d2384882412d9bdb972d3e69601b601cd01ae01972fa5340229dd8a86d193e4cab4288b4a49bd533aad393fd6b4e6a4f7caeaad35afd3c29df1c3b1417d70bf7c9a28bf98a528779e26c959cb588d6aa24bb9b3c93a97a4aa82d5da7a4d7e3f8aace93eb4d6d6e94e9384d38289e8144db5fa9dde5a4b39ca51cec2540ba2de4dee5ac95a6b234ba794f2dd5d1a573a882f1df2f32595525619bdf4e9c21c7d67ebdfea2229ddac528aeead2c095249dfaf5541898a60247b619c9ae4f4e9525e675dc4aef29c932b8c7c6ffefd5450fd54af929ca43a653e14554b7ae75cbdd5235ae594ce510759b6ca8462a6356185d52b7ce9b556d003d092d9c17f59fac059b2e9d29901b2e573a00c86b953097cd05c34debea6fd689aebf2279c433adecb5c8ffe33c6a66c778fa0e7d8d5f4c30fb9c098e3857a84669a59c91bd344458a45aa97bb555920978fd456b7b4b4d05c0e04f8b8c708ba2017e96ba41f3f6464ea8d57cb65599665511f6b9a58ae0002706f7c2ccab26ebdb78a9e85e523ea527f6ff5b1ae16969696cf457d0dd5028405e4f2f99a4fbf5c570e1a00ac1016969f6ea4d37dd014bfd65ae3f435c258d18a52d572a34b0babaa4baadeaa5caac9aa246992246bba531cf999a0c1a44a194a48e9996188931e1a843884d041c7407074bcddcbe0b567eddca929bebbf4eb4b7e9f4020bf2f5df62605e405f895228f22905b175d9c4f61cd6cd0021e1f46c851da011243215c0f0c4246683950a2202287c90f4b8e40d2c5112954a82104336288a1889e17784a689bd8376da46d1a49df40171a0e4fbf7eeff5e3f79c73ad1d0f166cc344780817619b2837373737373c3c3c3cac41e119c1095b0da741693c6b64214414b65edee1702d196efd83317cef39359ac3e27eb8557741b440e4f9ab04715947facbf82e63f4c8fef2bb6343d8a07464d8702084fd5ee3e976374868c884f157aeeb2870327dd37344a78db44d23f9b6e91b279c153a8da7e5349c06a5f13495eeee59e79c73768e641b26c243b808dbc8f6bc0042dd256d97b27502921790adca3919bbe0e7ec3767ec1b9cfee8efedefd127c105fb5e63ece63df6e243e81cf03b9bdb54f7c674d15aefbd5535e7bc3f555575a57a2baa5279595a5b6bb5b5d229af646b7dea016d61b1423e64fe4a4f29ad228baad544d53ad50966a2aefad55b6b7d8d555596d2bf979aa68856fb35b6d239a704392e1c1a34ae0d6a653a37fed3a32408756cc839a98ca828b25692a4e82b6b6d64278da849a5a501911ff373cf4f05b77bfdd8fb071febde827637ed86134e38e19c3d6b37ca104ae798273b176bf8b90dc6987be65cbb66ce31e7da39c658d71ae2e7beb9ad717d725f5ebd64407dad9806bb5fc44cb49136e21c0e537a0528a4e7062524d73175c226bd8d3c754f2585716f1d618c14c2afe99fad5e86af3b87eec666fa9a32f2619bc2c8237e6d38ac9363470c0ed9108546a10a37435ff7bade64b127869c1d2531461f4d5f5b8b35466f37c65a63acf44eb1fabb2859f93252c7b5521a2d2affd25a63d5afae6545a77ee953a959d16f75297d0c689cae94a8a7b046d24149cf40d551e38e1e10f89062344549da1a59f0238c0e8060b0c18d2db256ca2645a678857d029b797127ded936b73e84b46b17b94d520b68668c5f412c854823d22383100a58c7e39338e48bf1aff82e52edae6183919e26575c47b4b529ccb3f322a52d7a1fb9a6cff5fb47e6a7f523cbd6da29378ae84bd20534926e7de61d96129f6d2d7adfaebd4d6ad15ba75336a9c5229ad41084863066109052838e7bce41f7f83de89ab26ee762641e59421809639b3eee7cacef28f2af9fc8aa91fd6a552f59d147e9478d13d4fc59950a708c1c2b9e53a5077892b3a4e130c6cc947592d698f905075767cea98f31e63734619d86c30e720f6c30b314c7fcdefc076fb69a474c33ee1c3dacfb4d4a877fafb7bfbcd0ef85d191a37522afd7dd7dfa9cb55bb8f6a9bc146db292edbe34f9d43113c87159fe87c5f21c9b9ac37738a53b4294d0e95de9647f3294d3cd3adc96f556888c3166acca4e0651c10318c420c209172014095285479419a66842c6112c9a0083044fa1bf406265881815294028e308104634e185084e3c01e58c2441b000c5bdb2e3f0a2424250941f65e4c10ae5810a743b841b3b55959802a1166aa9d7ad560ddd2ba686204c821b8438531c84b0ebf5a1aa2354ad17209e10cade95f695974c575709f1702383cc1d0274ecc080e3c6386250fb707196887f197391e0417f30972776c1c0a5410df44cb1c205d83c033d186787190584f89356014e12161a1d7836e89d5605c354807385cc1582202f2a4082029f203e8c402e03b948000272457e0f20c89f637656b4d65a6bed346020ab339d986937b7895371671d9ce2aeb52c5a604205b85cbc0da06313f372fd152b7de42526e67a23d3731e173f39e1759b70e70ceb790202480dca2f178c918c1863dc42c618a1fc2b0647235952c675bd8c0049f438d1718e6750079e3dd6ad413ff61863ccb93c10c00bccdfcf9d7f7c9123477ffe3e8c42a8944cb9770b0563b6001c120906d334cb819883641fe4a30e0956c6126a302009111584318c428018051430c01030a4806606e300422b8dd44abff15348b4b623f0eedd1b5273b05a8e7c83357ff1046ec35a7fcd7082a4f4291ef58d0d020b14ad96caf5754270a7272c260cca77db4133371a36a6f56d18395cf00a155eba25e1470f42b563817a5c1d5b5b110d988c3d57cc29b92165e553d419726d5090feb3e6ac8b09fc60adf95d655cbe189ddce4ed3313d3496d1f0f2cb061526735208fb5f7c3d4d3964c6c1c76f719227dff556f03d6bec709b91f9aa7bd975a7f4f7a3fa01a9232f54cac28b21cd2a750f6912c4482833efe5883d0e64cea1ecb35fae37d629e49b5c76268802958abaa030d73871234ebe986077c6834c0097ce619cb45f1da43b854b1f81f0a26b6b6fa6cf5ef7ff313196e9db9778a3a23da8aa31c9a7463fb498ffddc1d67783aab3c2b871dfd4813debe17302f564a25d71da77efeee79133da582b72cf0966e029a22d1d1aa665c35d0cff70559b961bc1bda30282474e3303a32f40b7f026cd57a3706400c4a110cb433f19f3eb6f1d736953d9a3b61618e65aa2128934bc2e740a93e4d504ed8713ee88ad67b8925d7aa562f9c8c4d760bccad4b2c9f1a2115f1526491dfd5268b122dd6053d668d83bcad57ed4460e3c8207c6f1633a168a7c6f162201911b4488fe31d02c7ff5e636269259f1b144e2b2e9105869dbd69a528e8a21e57ca5a58bd365a41dbba2f9a4cf600aa2d94f50c763fe9acf06ce49f7256267a3c5f51c5ac009f957c7b6b0c1c77b2b0248924ce43cacd1f1557be78f55f082506508a42d67d5dc61d6ad803294f059f1f237e13ab9820d352c26397815dea514e40be02513f1ff6860aaa5639ae3dd37c8e90ae937fd97ab30d2a8efc061a5c8015cd9e44de2a925fd73c3e7e7d37662a74d010ca0df100ff34d837d5ae9b875cfbbfacc058ba1bbc1dc01effe082768a1de78efb15f3b67cf0a00002b92259d4a8a16f2b9b66449b0a1d36ddbb6f8463af20cbfdc9abbf228b462a29d3a5932f695266abab80aa032eb42766c0f56e4a9849191fb1311d277b03932e0748d1ea9b2f4becca9e8379df7505e913f7406e0450497f17bdbaeeb4d1c21e7597c248408c3593e40e4eb292ad85d966ef055bb595cc00a8a29c48f9d9227bf7445b3869d47efef38b225807c9ddacb39cecc8fea1b9283520421dc2f82de6621afc3bd74435d6047fd2d5d91060e170b7f4ae28459cc5c5a76669fb07aa036b995afa10f2a29d8c3da2675464ae9b37ca958665dd726545426f5138dbae74df8190de45ffbac1428044616f35da605049a918f16d489ea1b5cf380d9340c3d582e5f1a187329b733e29fb5452267d924caa316f309f3b1a89692474c8f39068e8c6cc22fe8e12ce6ddee039d11499c5fbb9802114e8fb65968df6912c7bf84de1387cbdcecad901344144896789e812c5259d11ef2afe47600f51c1042cea6297422e122e777c3128dd1494d1cec813f0ea66654d061a89ed5899da980a8150ddde7131060875bbecec96ecf534ee753b52c651aa56dde1dd55269644585b56c41a656bb74b1b31fa581b22700aa01ae62ee852af178b44d1ea12da845751b6bbc09b9d833f052e68da6ffd866c049fba1797848e21d3e41db300f2879b241e93aeb1659b97379d4c7c07bcc44e2c67c7593ef6944a4af89dd97d8ec26bcb3be6d36c19514a22516c60dc86aea6389598de3e4583a30c4f62f49647626c7cbaa5a069623459e3daec046e7545df1f32547502a5165294e90ef49dd6b63eac12fa3c6ed515d92c5c722d4adc7d607badd56293b8d7086aa2ab20e93def5e156bc8b908a3c8cf3a1a0dd9dcb765f24b29c9d9290cc4239e1476629e49226e7c419aedfe795a9661067f3ab9e2b34c416de7870679a05177d65e176ae50c463a14bd4bd9cbbdcb435cce63dee5ce8443db62c180e40785b213f67caf6a911cbe5c84106bbbb79e5a55f03def5897093e2f4f94397e7d1a8a53b2e3b243e9022f2734c26f5fe5f84b46dec949b16be1659091dfe261902f4757050f4ad228723940eea109b49414287dfd048eea207630da5f195fd65e4bc097a5c3ccf5629c4f056cb13b2b012bc960184172778298c1f7b0a20aa6eee658bbfdb57b610c019922269a1d1fc6935414d273b55c3a492e686b13a3be47951ff715a822600cc3eb611db0264c6da2c0e353b12c866c5c084068165458b963d12195a318c8f71ec8d29e4711eb3d69345e7e28883478cee7488343f23fb67158d7364c6172c296e379254c451d27d271dfca2aa0752692a912f03ea327b6943a4b64b706d873f724aa4821bb5ab24eb3e0c3916d47acc22db47817b2fa69e8b854ff5b803feaf287be53e24b7ce5ff8d581b9d98777bb131d63f9e1dbd535a995875a963498a2ccc6afaaf22d6065844065752b4f5802de5726dbee3b641c72f8ebe84129520a3d4c82180f4b3bc1a69c0c1fcb1bbbb8ecab23d31a85cda2b4a94874665a5d72acf6b55b283de80a4eb6140097a4e3adb9e3d4b5201f31295b5492027695e622ff9917fa512627eb42c0a424864da56414488ad35748e076c4081f3d41c1fa137765cd7e3fb29e094f0e6476b1d1bd554ff5c78a13cfaf89d7651b7c9785b146b27894bf4f1dcf0905fdb02b7d1b65e330e8e3c3143cc96c46bdcff57f5107d9c05f0e8a605434caea420157b355f0e97ef1613fc51fe6fc5e3eeeebb8ec6e6c605c7e93cf585399b53d4e2ffd83239c4be0f3a9e0c93ab87c4098e023f8e0c138abb514cf064f9a0dbb9b5b3502682615f0525c3f3931a2cbb777678d37827658ade79e0e32bedb879a54b5a405ebdb360153bc34fc6c89625ccf5fa41f4742c5451a4c5c6c952a959e4b8117ea3df9b3788b7a9c3c3359897ed45c8b3be77ad80f281782b0ce5df956dabc1a4e117c1f698ea405a70fbe134b00e40be7d6386bb82542c033c1ac76f56e3a80dd8a1b9fe5f6530dbccdbc3c2ff840456db1f62a130b5b975766aec58e2ba2889f983c24acf0ab7e8495c16e517f8630d17cc8b4a91bd25f07af4bc7b81ce254c7c3c9610d62556f611cd694562a1fef26e5b4a6154b144ff60e917f84f918389d07ee1e90b28f5a014b9841c92ff9a99f50a20f43a8a89d7708d770c17d84859b6bbc321fedaf9f401459496f4b2104856ee80c919da1cb08d73da1d24fcdfad270c8d16e1c1884a54451753514b41f5578ed9b53da3a7f947936cd7a122247b4b70ce70e03c9bb3e61f6f05086f8500641aba8e93f05e39602d2d9035728ee4660698dda857355711219ef4839f699c35ec8c303f1cb200b3efb8536c43010a25708e6a0eaa488ae0524c88c926346629f262cd099b00539dbf403471ff223074a7b2b20a0d33ff10600e79348e46b33be067f6e923f37a2a1d2e094b66384eb00c6d2491b167d399150688d87ee538954b2d5c7b44a0303e310388e75241530398fd1cc28b3f3c6e293ab7286c16c0f4c5b1ccc3910efd20df048b0066b9fd7f9405d40272bd8f6480dadb5a28664be43e3d3e8ad2bd6981890334e716ce41a446c1c196822a99bad42203a38d21154cb1e9d33991c26885faf768cb46331383fd20cbe1e940debecef3868411137a76dc3dc0a4977ee904c15f33a5138714c893406bf9113a011d704999410738d2e52b6473302609241cb93c5cea362daa8cc7d6460811949bece782f9058abe29af45cf8d67fac18209309b9a1089f64fc2939a1968bf88c0de2db91302a4014fb27e93280fb4a1b7ca2f72718f56dca6bd8843925dfb902f069e240f8c740e873aa3f7676206e250266bb89e02f4323d319d9100ec24efb56654c45994abe2b4cb3407192c0f6808541de9dc45beb5cce58498a27126d2ac2213bd61c4d76cf64466f8f132d3e621aec24457b1ceb999fa95fa12df7a6b37e5345a57a0215da46070f38e25a621a9819cb4eda4d65a0686b7da3dd0db4b37bb4493d638f0caab67adfc17dac40b7e979fd42b25b8e960f871841ec7046dae29f1b86e10e0daa574db21e8c614da0e57504c49ddd93ed3a85821271735e2cff23ab6f19d44d8765fde98437e9d1afc4466d55a5406fa770e7f6e831d2cf2d1398441acaf84ff350e993a0bbfc9a5a264fcebc2ef0c3ae071138ffac88a2a3493ae2ab797f5eb3e4a384d0795447ecd432fbb2d2c3c4e1cb4114ca9ad9a36e28b4168b88568c92b0f4949e409e0d44c6930ec7a4b44c6c18bd724f1e6482ad35220e5c243d1e135f5f3a84c531340e23febcb5380fb0791fa35d56e1d9ed55d93ead6455ababd30c82b5f7a2f144b39420892d2078d1d245d21fe4dac5cafd0ae9987875c6ebfd4c407762fdd640ac69c28b8419604ec9ab0eb619856986d5c5ed0355ea68b442db98b23d4e685f62a10966608d06679e60b3bdead85118b44cbc224e79af08c6ad2e446783157c4ceab263bdc590254f39347c44b516dcd81a81e5f412fcbe753fcb954e702cbd7d7b8324292797f0d0c0a0e9fff6481391ef157aa39f34ef04bdbf2c596904cf39e8914882cb912d1e1ab71767eb321942adccafa8c4e6b68568765f6e39f747a4638566760b36b104650522f44107ea4bb45bedce12347e446eb827a954584d4778ab8419b00dc873446b3948981796ee0e414ec5f1d419741c83c47ed29317037a51190cf9b6ee0c1f2831901f137de398582c51de583370394f26c7096b83a4aa74adcf767400cf1fb6063a62c3b22edf54b96bccb35e233c0ee00a6ed17a0f492049aba77f411dee07dad93f89fd6c2220e0c498d1c8c208213cd2710911557c104388145c631fa1ebb0e807143f591bdba5d1182123819957d81962612a188a4276e2d531aad20007fa9be234d2e1946c1073b4888e2bea177844efb0e0490275dd5969f4e7041e76dae034000dcd8fc7e871bafafbf3d450250f34a1284f388f1db386ce8fe2f5ef3b14e6a68241554ad486a2e1a390b04f891483035efc80ea02cfd522789d7ad01824cfb26400d9d71713a6efc3c8a2e46d248798f5fa11647a0e468efd11438e9f920c6ad8257cd1d6c3e6106d9d34438e60b1aa2eaaa30b9821ab1decda8d4841ae8ae586e9f2a9f3c5eb1a47b50e05846eec437baf5fded9032a9c09282cd4b1c9f9aee77585a6f0d5a1d7ae9ab79b424b796ec37755558534610852aeb44eb1b970f31190ba24a4d69f83bad323fe4900d238a94a7afcc2a768499435e62db2b3347b956bfa91863e7d463b31ab85579de0a5816e06a41ef3f18c3c7163f6d7ce7d5afe23fb65ac3dee27f2817e53217f6573a71c3aaf2897ff07c81b47875c6a22d4487e893c2dfd014f5c7e770bf2142c8bb5194de18419a13a1039dcf540c3dad2d50004fbf1023b76ee789a32d50dea120fb8f875084a8cc16f01b660af90e445c2b0287076b9c30e2c57a4069c51832616246b6a8f3fdd803772ad1ffe8511dc431b05ef2b833ef5ccdd20a08f16f69f2b0f75c921f912d394b7d3e24e6db3f4b8d96c62f95761eefee1aec7909098a88783f1e7451218634989891ad5b4e6cc1476f704601fd8f1e151222855041ae92ed16c6d0451411951b36ea0c0c8aa1f67a2204c4f3e8e3fc1de272a3b4feb7b2b1f0160e34374886228552408ce7c6bca618fbfeeaf9835e740379c10bee85968149942019a236adf80204437dc3ce28f23b720da8339a7e34d1310ecc185aecf62b23dc019ec5898835d9e25c0a5400b831fbdc48a21139b0cb0db4e24a2143ea3ad479d9b2128298fe738b2f465ea8c611d64824b60042ee1e96e9e29082c5bf1e03038c2b517881734b396a6725bfa893c159b5e3a70a0797a79c714ec6ce7417d9a6071ce7a77a176249d3164a6378e8333b4eceb4901a11507eb175423e4fe0539c46e9d99d44000d18a3d92d92f177a67eea36f804af5611e38d20e4a97d695908d3467d61a32ecbccc0945b87176896cf4525b78937370ede0a59f8e36bf67eb3e661701e706629133c501836c7ade31a065612a8d7907c1d19da552b955657f75ea759c363110dc9bd080a23f28f0c5a96b8fb67938ff8c3b3ee7470a6edc3f647034d1f6ceb03cd587763011947d2dcad926403e6d71f59befd90991ffeeb9a52603fe4811eeb2a8fcec249ad0e96b505b851067f9e3a6f688389a44223e54bbc320ae8dc90ed72018710fc12c6a5710260bece87ae56170e55ee6464b28df863cb8abd5abada8b2da1eabd32876d71385e53293d656c42dc6722880cba645be0fb7006f402351b81da3e3ae7e95290c7307610b2480b404e07f411cf80a43e7bcf7616a07ba9ee571190bccd048aad5530c86827acf3db6794e8ad7edcb8c63dd9d8f4877d9b736c3ba7a32b889df5a3a2bab73a549a3498d459ea91e4da5f7499eb26752d20245ce394eb1d8e0291a602bf1d973973be5457010dd983b66803889d30a5a3dd7ae85391c78a4b73e4627b3cc6cb57e4042e81ea4fbc66f080dad3f3f0414d96b2ecb01db49e3ceab5c40ee20628a76edfd1830f5d0ae0e5e603c398e02d68ee070f3f0e33f87490f26c7a9ccdf0b500d6ee40cca4876518d033a1facf44114b5087a9e148a340b7c18a836ae9a415c561a140a482a80db004f77f1572dbd65a1470d1fb3fad0be9f1319d05501acadc4a64fd924c7ab3b07cd982e5607ac98e411240618324f278f48939c7d4b5d2309750e618e5793dca72e3bc9f2abda14780f8c7c1787cfc0f3a042806bdf4c0793c5065c3a811ef7f81c760eefd977a276c2e40a2d1e75b41b124debab65fc7a3208e3601d284eda9afbac37aa89109bc236c2bfd3b4b448816eccd2110c9c0c7eae8d70569c579cc75d56428260c2c26e819c3ed99d817107d7be26df4bcd33585a72610d2f8e34204d8d3ea1c0b1aed75b1a58e2e4b2ec02331a348748290b936b852e658933a5e84591013159fd07342bc6a1a1b625b941935135c1c26594d84bef8883eb31a7fc14113fac2763ea466f1ed32efa0f1aacf44ce69ad98902b4de70430808fc84c1886a7a62f485b5141672d76a8477e00470b1028d6577f962ad0ecbc1ce03026ab499dee1d8f76edc9aed012e0e08ac102ba0e24155031f9cdb8fedd4a01edbea1e7f1e9189c4376070e5d6e14babe18c93901189519a4f033bd95237bc32503acba6a37a5a9b7f367ac43029d38c4197e10e63b5492194cf87480f0346931b64f734f0821423c135772ef947dc38d0ca809227640ce691cdc5560e338ec0b107b0345a52d96704a45d38dcafc9af6968bfadea119661a30e63895398f56ec1a9dc45264d937d001a724c0b6e0c9528d9c3a98ec9e971778a2c4c6bfa0800d170f0958d92f702bf8ea3a82c5e5ef1b0a192b497490b26f7c8cfc0e4dbf66a9f1fb782df9210f540240567016acda270de06ed45c4547e8fc4452ff91b8b0ec98cb1174c66342488fae47c0e5aa0cff5d06814b11beb97346bfb2f6c711ba53b264e00ce7c8f67ec993cb8bf9fd1bc4259e6cf2519224831bed3b3f4aa56834cf9e80d3c1fe9bfc71e75675e4008c9dc379c56fbaf84ac73866dcd84b72feb7b2489bc2f35330aaef46c2c009ffea60272184575fb98d85d9517d8da75a0868c3bcd9aa3ef67feed2324751f71c9abe45527bb1e11a538c3b4ed6063da77bf48d88bd27d4560de4a0dce88b2ca1c055131b5d2542b8790f895065f6edd04573ba6fbf0af3af97bcd281557076a67432abf7c9c4cd04c696dbab3d3da8e90191ab5d90569605c3de58ba22c13e0623f7bfa0ef8dd684a7d946e2d09ee7f774dedf1502538324698e17893434ff35e28a260345523f41e5489e7c9001dd430ff8b353d243914048198c97276ae495a7a9b13b065c7386701219f987b70427217b4120de179b2c14d135790cb5c00a05db033e108749b418572404efaf3decd90561a7cd7e985d1a2763db2e59754c46b62947c57ab79e98af2ad73eb01cfd1cf9243ef77bc706a008ba3c073ed75189016d54baefc2da83783722ebaba0794d7f55b162aa17b6e690f878b5d329181f0af4dd9d2fe6cf7e2886b5629021ef0ba42d35f83daa3fd4af6b1a285a5e7eaff6506ff4b28056420cc7ee78e34a2700a09f4a6a14401e3ed6f4ce495292a858e3e963b3fa69ac307a799319c9ece9a2f0d94993f61ad1948de5674e8fa09d1d8b3c986f454afeeb1d13b8930e48bfff664fcd7a6fa68693efe73bedfd5ba812cd8eb88c0199e447e51368ebc95ec6b89c1c30b12617bff9c0f475304db0747b9bdf1c0945ee211ee2aa4d910820e9c4eb883859c8669a300a2f4fc7c4b966a3938586514534e1df6bf52941386f1380812f7716c05a06954305a51ff05e0df1a46b4f6193139a28f60ec9ba5fa1c19ade73861544b432334a396f1d245e7310ce4d32e5585a1791555467e58f92aa047495005a62781543606c4d07f0e5273b84d95f19db82097daac3c41412ec120adaee2c93084de8f24a8dbe81ce2e9c49c4b778d8f9b08c2323317b0f1a2970102d3521bb9bdc524a29d30e3701550149015c802796b63a081e7b7205c648a1415e73f259db8a2cd16b8ccca9958f6052b4e8d90264c68ca0914d581c334162e89c5551f125a2ed4d63757e8cf1d52410287d84547119d3e1261116724a95ab2d3984ac86745452677c6d6a0be3031319cdd1fdc48aa8278b22050b18314860d286f06df7ed70d6e9c3a6d74e8cdd3549babb8f1baebbc13de4b829b37ffe4943e5ee22543b6c5eace1426efc28d7fa5a8b83574ed887a27591f90a2f57c033685f8f7ee1cc8120c2574e0be55eacde25d32fef545f72570f2e52b87dee27c9c77a08460b6b9d24fe5267ac4badefdef8f5d676ab205f6b72a7b58cafbe2b7371cdd979dabbb624dbdd71d4e3e31363bb4bbbcbbd777ec71c6c4aba7b2dbb99dbbbcd32679bbfb4dbc3695aa03571f9d76ff9765bb77bdb5dee2ff75bff603f6b4ddc1ad37b6f181ee6b933cd117bcfa0fd48f48947aaea08da7e5beda3ac94f0405b67822a19556e5b6d9b290dda97e4842c5bc54a8063a6b34fc530f7fe6dd2e96e6bb5b2dd169705c4b7d79daee55d7c78a2be47973a1c45364836c82c9f9f4d32c9fca45267bfcced329da1b7edc986426d3405ef269936f725597e0e40ea41269e55b238d318d7deded6c2c55354edf193e6e7ca27ad156a99e4ce375ddc6694e095a0fd8cdc27e19d434f1e4921a35237d36d25cabf99b527dced67a74cb443c9abf1246a69e048474e96806152e4c272048ea22c452c2f5e541e897174468b941b1bbda9dd01700300adfedcd1756276dc2cf997bc906a3742848bc5cedba0084dbfec6778d9080adb77ca92d4a952b527c992045b46c87c24c193858811d7973fc42f2ded55ab13064db681b1f0eebceb0569bdad7798bb454434918cd0ed6f4b6e323ba2740da55c217681b80a92454d1b2b3ec416f99ac204bdcd0b900a93d45349af0b52214fe52948853ef5b4fd52214e5d6dbf4441ed956a81f5c02348854c2aefd354a8405d057c5ae2f0a5c20cead2d2aaf42b804f9aa0f6d235ff8aff7ecfaaeba3ab357f2d7fa5fdca7bdd17f0f5fcdbafb55f09fc4e008101e82e46002574eb502700e8533077e2d09bd74c7457a23434c51e35fa19c5280b4ba381ef2271b877bf2396f11b2391cc45f018f3579b9b43c1d4d7a03243584ad240452a3bb2e64f55134291727c01411fd10c95b5228664ba16d839de7b99608caddca972ce195b0be667dba1614860b636372d37dc508cae32efdb711c35e49c3305f3dedfbdf7fececcd866d44f1397c07c4d6c771f2143bf35819dc438cc364fb918df61d570cb389e43286b46af2c658a555452441c3d4272972815df80a103698814222eba484073cc21ab85bf4e73e8613608c74e9969132a050bcf722d0c7527046ec9779224fdba5e74c847271be97dfeff4872d7741adf8cedee34afc50e244dad5d8fe419be982ca6644e0e209c7d203e7f0ae5311d639be81ab167b802be6311e311a7d74d12f01eb91bc4b0fc8a8a9b730193368835191fbb850d6251c607d77aed4b992d3ec6041c2b43146b83cbce31a77b8e677638cff1ebd154bce0f94d4781390ce8ee1abb69c3709a7307c492023a9614292ff0e8d68c9f616ab181f987bdcfb3a4769ae94ed996cfbc6da349ea4b3c038568a68b2f671be605bc6116c83f622b6b963f32518dbc13974ea14a4fc1dc80f7fd28e080ef505fda74205d7d071e4182745570431d3478345d11a48f32a56b8300dff463fa05e8fb789a6901014d04535ad2a9b049352064a0be89aebd54a8d4bba97ff27ec5a1ab522abc6a81c77d897b53d820a32b2e15625097cc54d813ea54decac0412a1ca0068621ac2326473d9aa4e9637408a05830260fc992288c8224a90f10d9b557e3651eb8dd51ae433a1258981602001ef2fddf94a580ab9fb19411fe5deda77728a587f5719d25fe619b5db6af15a322f332cdb79db761a945e8508ad34102c5dd1a7d6fafb891a9aadd74f7b5abc95b1d94520907a86cb74032c33a5ded3f7b23435b74f05c8c006898d094aa98b2737fa0f6bd4112d6f2f7653ea92db8e2f48df1eeffecc215ed3948cd3b98daa71ddf00e2339303b3369cfb86c443afba38b8e45a572d5b22e142e3d09dfa32ce47c0ca8a08e3062038dc1dbb03fcc1016a5bc9d377b3be3de0b700c011c871eb66271d17e8d85be00d971e1f9b73c3a7e3193b831b25808267672d70d1f29cb201b8f4f1b9fd748c0655069607b744d829fa2a409b13fa12d73719bf9eca032fbde5f7c25e985b08c98d3d283e83a8c6d2b6f74eb1b338b02c28ea4527f0046e279b1d3cdc411274ff30c94b3473eeaa8d9626c3951ff44bc8b77019704c5252c25e98b0d1610b5b4cddc7676f0ce0a1aa9ca132be8d33d9fcdfc18561c05c5aca4299264707e8f74e7ba04b10b3a7fb44dbd3f05f1d4a79af5363a80a34d0734338b7492b3e6495d0cdf35eacb15d0ea539f6adeeaf665877fbfd9bf5593e5f462bc867531a29b790e14d50c0000feeb2e341af4a6e8bdd6636062a7cb559e5ce7270b6113c28b46180ea41ea1b9bc5f3647649f18c39870a7b4a8c17f4b881b8ab0e85f6cadb844186816e8a06177aaa0fefe213c54b426ff804af8d50efd0b9f4a2280f89ef3210e8a29a04a552e1f7b0c287565c438adde7f17000f9947e227d77157c62109ec999b4ed36b0f8056d905d31fafed9c1235f4bdddd55668fbdd21cc8b15612a0ac82b3a161448edda80f081794e81e5ef4218b1566936f91eec5a5279aa4f1a59833d0c970f7abfc52c9550e3717f8a0c0d636dc5619422cb12980ac2569614e357d63aba9eca57fc4361770830d7215858785d47dcae26edd8de19c984f54cc160985aa890aa6a738aed396c90130cf23a6817b0896eb986b44ac3dd635226f3160ea8162414d4d0197655e05d3e594bf97e97077ff655d20d148b5bfe4a297952c2b2a80dd4b1194c18b1040259504b75120c355581b8a7b7596dd0b53f56a4e4b65c8e508b0939b08201e63f1b06906f43fc09a911ee4962b35cc3cacc8f54718ee28c230b438d8a79ff0dd6e6633e804b6096d7a393c90202c85bbcdbba1053e688543a9805271431837debb7050e7141874b693a6260e0b0c1903165a32a85e23382f208e40fe252c18723d4588b6d51f84d9102e02afba24ee697779902e32cae486a4d122a323e983c59c46e04ea7210a6342e837af6c51482723e304948ae1175d9e1c0c97b184a2b0db34ea72934939fe7f32f2be9c379c057212b1be3ca25a69c10ab275a66c4943a846cf5b5552d99890e4c914ce40a7acbbab61318e3fe944d94c3485250cfa3d904e01821cb71723087d14c532b875b5ffb69af81e8d14e4be55f9fecd5ccd88255aeb08155761008a8bf4a07189840bb5c6ba9c568df20c8438474cef044e38430489f20c0ae135545acc78902c2b8650272a7767aeb62c2858b58ccd8956f2b1ae33141f08a5e6e0ccdfd2286734b477f89c9cd5ad879597676f4a0e71b48583bcd25da051715bbf62d7a3355defea5d3a3cf47e9bbefd0c759ae1d8d1bae9c79f799f7e7ca5ade90eded69d740e602acae6510ee0029246461abe5791430831fc6fa4928d9a515af112128c2b495dc4fa5572c10e428e03d45f6c83a7688da34b6dc242a4fd55152fceb1a6bbf1ebd6e04c68b9928ee4e76b790ed698d20398e81be12f4e7f3314aa66a6f1a00c07fa6e86aa9ea6c95e808d7c5fe8518659ca165e57ab793ba38758f5b064de80500d98cbc5e85e11241a30602e3d8a694152059c390fd2e8bf757ddbf3354015df720253944a1d2f45842af020f9195941ac0daa88094028c0ebca134c0956caa40848a873c7b36a7577a35cd3aedbb3b602e25c6920f009deb3fa0fc32bd12359223f71caf7b3f20a90802ced8231482a3712c16110701503a5dd8dee60b61d3f7b681388767aa976207a4a60c30857214abcaf9d4e22f733ae67f7d7d731cf5f23e025a323dce994c011fca9cca97a99aa4ecbb354a3e4ca45a1ba79251811846a712d3c084dc3656ba03bfdcc36087d1b211a585414d354305061afeb98e8fb48d53fb5ad560bedc4f7f58a14d0526ee2b2c5159c64368b505645364e80b729fede543d10c947b8309cfa1a5cd3681cde2adc9b346c7f3fcbddb5867b6a6b503bbe11202d7bac56ade795fdbda68df868b3befa78f3d59efbedd752619b40178157aad6dabea0190d99a22b13b6f65a81ba9c580d6ce2621e4b020e59875e0fe9138c9c1fcb63fae747f3ab84434f13f13558721cef3d89ad4e5fc9330909046d0748010b10235a01446e7445b4f93934a61036bb5f2e4574e70d122fbe823f8175d78380f6e20560e3cfeea05c3c21e690dcdca92800698df97a634d05f1b932ac9c967f36e5e6e9efa531ee574f0c2383fbede56fa95b34a238d4a76ba20a343be27b2b55d9e87bec7bad523b61af4f7e56e6ea12640664cc4c6fdb5f10e3cfa0fd6592518fdee981859fc5a19bb6196042638b21bbabe302810bd13f57e993b5a459c1962d2f56b61755cc6d85c3e2d0f7136c01f198842d04cc7223eb20e1e4829651b9db88c6440a0dd138bdd6c665353386168608d8232ec5d85964022d1e42ed641b459a24ea384d7679b11abf9dd83f665c2852279cf386b85853cd35216ab3748a319237881e536b17cd40a30411ef87843165e907373d918554c2cec9d2822bacdbc81dc8d33486480676a4a529204b9f806f68940d326e8eb27cb69eb6d92798a1e0d0ed53fee5d7db093343b0688b81a3c449b3e452e335fbb96a18be4082289c2d49fb73c52404b74b6d0d601eda4995ac173c2f1b525abd374a222dc33bd1d7a503968367d722b3898983c6ee5c523a7e7b43873d474faa2bba943f887d4889e42dfbb77f66ac3669875d6fb1384f5c380a9539a3e438a4c3930b32143ce6730634a73fc661d2cf60620e31dc26a6b1eabcc46c217f628aabd60969598a5c6a21ba4eca93c5415f6eb39264bf25f1bf5a56387c25b7b9882a40681d41ec39826305f93c022d63364dced1a24dd3d18f7492168710269af79b3acbd000e81aab291c2a831003dbdf8f01fef05f6ad83708a4bf00925c0643719bb2dc3586f633141d29612836c38efa9969e6f4f2f782daeef4b7679682d9bad3beba9335cd6ba45d4b4b2b33d5eb9ba6f9aa52e948655879591a96d77773eb57002eadab1c66a3d094bd2c82d1bda03e09fc1edb4185d71943fd1e8a260dae8f835141d18b0ba0e88ee3f57c9d84d8b24b0933b31fc2f274bc70b1f20f2ad46cacf59720c3450c7106cf4861792004683d347fd1c373b7d6024b7282b5e63b89d4bc48e8825a6ebefe7b1ca47697fcc139b539c0382ecd1e1ed1169724c02c9a2d9f55b6fa75015db245e30d295fcbec3e5efc4ae95e5e7d9fbc99e99172d47028d92444654f998422ec69102c1f5dee220e0435e3521dddad363eda0c8bbf113116f15a475202cd0aaeaa497b2466f82a47e157114ec425763dd1db546c8617965f67c1138e26eb3db95420ed1278074e563172e0f3d0b6c75c66e3f775ced13788e7763096b82b1234df6bae75af7687a2392751ef6c26acbacb59a1045abb918c51fb23ce0ca387e87aae4e3cc6b183ada5fa6638c533efd01ae200fb4240cfc3432fe9e323ba1e523f9f947153d547668623c2c1f814aea02cd74b5de99c4303dc8bbf3936fe1a3c662c10355e13bde244b0228880bd2ea3d66b06df3ac26b7eac6da5b0a5b25755f86ac1da052fd78c5cadd1b65df5b7ab5ffc675f09765b2c201d18da57c3111c900ec54d44b5fd06c1d917ad85b24b7b97fadac72e9c5050d544acb1a4e35f4a98f7f5b7d3121998cefed475db22b5e5f6f74c599e5b3e7e95b78ee6abebee9d2fcf0064b99d95f542b7166cff645e0ead2fad2b3d32b161b66afe09c75228959a7aa685d27015d7f358a39423c068b330937d6b12ad40c70820a616ab7ab9d2610cb550ba880c113ca608a6eeeab6f2c87d7b67c651e8940f255e8ed8ae8060b1b6c7c7b9e0e043ab9381257caf05f942abcefc7957448639335847c545b80d21e65720ac0edccdc54a040cf2307d90a3e5f08dcbaba04c350bf7de49f6be180964fdd04f2985ce48c2e518cef1d62d410d9b3820bea4a53a3b45c7af82d8571ea3001c462c3beb7bb7a4334d6c4adf72c3b3c330edc2f7ca763f76576394bcd292dcc2ea4a6c45936ec69675bca694b51fe4275c273178bd74511d592e5c039c8d5b64a82c5cd5912cdc793f9b9fb94e78b74e32b08d1264997b520e84c1ab3271c8bb22b5796e63dfef99283aaa80d6f1e72ded657431e93815d7a2c2bcb0757a58959961c18f8137b9a8a38a8536da806ded09fb38a58c12c6049be27c335a4f49df2bb5adcc330faa7b7f9a0fb6571a8213d6ae40b8c380368ca8d7fa892c18d62a64a87c8df63112a6e21334b6c9decdfc609007f7b3415adc6dcfbf689dea631a6d321716ca73661adf24a3a51a272d41fc1b12240d94e8bfa2c327ac000b2ff636bf64046a717282593741ddffeb50bfff235e4d48b3e01884f2dabcf87e138c36770f04981b5a189c154aa58f1f6151d139420cc92ddb50daa96f31c4ee1c15ea9ad07cca16cf0cf95b566c9a00ca7c1c1d497092ab0350334a8860ce5d8f1534b2e445c93b2587ae7d6786488f36e20b027d33064892d236c868d84a8e944adb07b5d54d9c879d7e87a350436f34db36ac18a13422939429a52465df01d001a6016e492e7e343cb972daac634c77f000680da02d11391e193e6e5b10dad653170c4fd6c906292a8de90b3320463d4a6f3837327edb29b4a8e3e9b31636230f2f078d291d1f5a9f8ea6a2a09400533150caab170f213c45cdbe20316d8c96ce008b7b95f2bab1197b7a1bdb799901c2819466972394b75ffc4cb13597d468948eabf6b41dab9ac12a2b22cff02f53d333afa825264c5fcecb33065bf38ad6c53412e0a6ed11b1626a06a9b1c0a98004f3a6c50a8935a1847026a97aae56b51832549c574e654f574d4fc6a3041b37ae80a46f7a73cc1d7de2c0f1f0cd51e797a956e86b8fcbe949e9c66fc85e564687864edd88081b52d4a61d1434ce068592ded15c8da4128b991237ac086acf4ee70de6aaa6aa2a6e6e07ab471a1f8c60872f1839423f80713e31dc3fb0afb22d910e382eda0d92fcca6a89b1782e2d2f2401a343fafe965b269d2ab5b103e98dba0363c80f884fccdd90d60771894888cbc51811b52b4d039eb4abcd13490890e6872da172a67d50ec5ab6face20dd25159135f548e208fb01c339018b21a6cc218958b30ff64ba854fc78c940f2b271637bbf94bdaf0f8cc8470e339938afb1e0d38ed74bcf6b2be55ba91f712caf2b141c64fcb5846ee31886eb17aee11786611886e118f61e7ee978fbf78577fcbe711c7b04766e49a0a01aa69481c31f8d024576271d8d16df82966ffe68d8074d7fa38581707c45bf3cefa22e0f889cdb5c560f2db08c4f6c48579d569c955d8eacd4168a08531f125b515b13eb83a7e3c6dca3fd52ab0c02b336962ce277a7d781e001d6b1e842e07c92eec86d0fec9f102102b6a9facefc1f79cd774b4b02055cbc5864a9b5fa4c9b58fdec618cfbaa07af63d885896edf3b6ceffd96f8ef5b07bdf79ebfb5fc06e5f773fe4d627f446b8061e19ee1578eebbd6331b83816c27edefcbb0b5ca8085c05f5d988995dede28eac5656647336429e86b470b4195c557a31783f8640ab72d51c56387b3680af1b567786f3628db9e4f174d97a5a48fd39bd8ded50a181de781a8ad283a231ea80584a581bd33a6657b12ea9d5d8e5cd318b5e1adaa81f26361a55a09ec103d48ba99146b99c47724ed6e88dabf306809620b8bbc021191652222fa6328dcdeb4f2e2fc08a37ea16529a0c67d4501c56dbf35313053427cce0e40112e3e4c4c4aae1012b0a6b568535a55c79592201ced5eca87d355d6b11193d465941027fe2f92b8a859607480425b463a35394d49795b92151d045e63436dd5a050689056d61f360fe5e0cf8f00577ad61a547550372e570a853e7150fae22c3086d497835cd581dbdfaeb62de84c1fc4e76ee1eb7a7f7de7b8fc8b1b6bf7cf7dd3fefdcf7a4fcfe1d73b87bdf611ecfde6a37785ddf61ef8fbdeebdcbb32b07fddd76b57480634b3e4b7246d2b1110e53a1366db6866955be2f13cdf68644e034c8a62a84e6c7d256fb4974bef88ce29e5454dba68c5b853d883f7bff449b687b1e686700c0599e2ea5e73f0f4507efb8db90d7711717afe29effa7d79afbf34f77b62a11868f0f3a7f3d134db3495d3eddd93a8f8dd9373987070b0dc6f3bd5fdf44f32ded9de8cdc659b2d85dd3d1ecae5d92585ab209b01d5b8db35a59b0a0fbf2ec42eba2995114768d56319751a1bda116d42fffd7cb3216cbbf2cff8f7c6956a531b3c8d0f2b294b07030768e88a703e464b3ccf94182df2d242d27f8e5188974833fb6c1256c412d67c3c1a0a765e39fbf18cc907308884cf9dcae2de988705ab829939c47c3a3fc7bade6d56af41f78bdc76f07bc3a939e05ee3322f25953050df9cfc6fa556986778deac76fb6ed73ff2843c8e0b5d3315eab0c8ac8902e76fa595b66d6375792493d148e6b14935f32e2dd57658525804c809e8700f889b017538824c1010202bc09b693af740f75bc43eeb1be879f7d3706d3ba1d87794c7b29facb4d69fe0667e1bd7db8cf52e119a69e7e52ac773129277675bdeae55344922c1e2b9874c9d7562c2fe56f37fe6adff5ee75f1bffef52f06d7fdefbb37e7bd7b0fc3712cfc338428cdeb5f943ff1c417baefdec4950b0346d09f8adedee99d1eca39cd22fd675dc6d16b4ffd9c1b8d709f3d969fdf6e6252f280771eff2fe4ee03fe679a7e8f754d801fb55cfeca73ef2e8afe0e61045f797f3efbabf8f3edbdefbdf7ee2036fe38feaff7f1fc3f4d1f6b02aefbfd86f77c14757ae3659242b0d1bcba29b2b4ac70400a6798170f6621e7c6a76cfc2656aa1452c835837a65c53d72387e17cfb6ad5756abe42b1f95fff9e3f81b8ff0af4b907df7eef6fefc1228fc4db3dd6a0124002b41b0151f9892187096b4ec0c0bfccd108f8141e3dd5ccbc904b0c10167b0001e44962ae14ad444a5a724805fcd5cf44b1253ea689420fd043b9b8895eca049a08800a0331d141ce99b21130351867227b31989706b240875223f879f6724e6b39161be133f37f7a28f009caab8271dee41fff686440749dc531ec0b6058621a803454d9d9248f83398108aa2501486398aa20e5b7c231192a039148ee1588ac11804421006411086411004411804314622c6388a90b30390a42ddec6aef0e1a2d63eed376dc20ef1769025a546483e94898d97f4a883e9d336da39ee6dca369a0e243f82d868976fb8d16e5ff750faa2bb469cc58c855529e50939942ee38d76290510a2679150e12e02d013968fedd037446934eafaed3b52c16fe16d8692eb0f761317c59661e736d10910e0fada597cab493ae8b57549672e2fb9d8a2b750139f304dbe3edcdbeaf24d7f48da8a920204527baeeebc4b13c22381bd046b291572f8ebe0ad264b3a2baa586d026cf150b9891afbe8830f51af7cc1ca64ff18324707565b2a9ae9d6e25ef882f59790cc6a8926f780fe2f38791b18e27fb92345f13ff1bfeae9ddd7082c982ef18944d03cf8254762c8b8098b059fb575619c4dbfe03f45084aa40ff147354c6747dca00fb78c4ffa5140089244aaaeee157c36e74a617e33ab523fcfd1b555820d7789a83f910770f029968dd1bec08a2b030cfd0f3b0a790a50b29933968f58ebcde80c3baa8ceaafcaab7a5577a89a11f4bf7864936bd4dd380e3a44931a74613caae8e40b3d8a89a64c336edc483b7cfb9fde03ada193e980fb44d669fc63dcfee4711b76f7e169dab9fcbda40ab9f3876d8bb0329de46da9f1119de9a91083f5b81d89d644f1f63ce74e7d1ccd950585638b1348d905346d86d921a09a7db8c2f00e504e88dbab59b26cf026b1ce39057122b54fc166cc8095fc116d13773ae89101bd562a28cbccad3c5b0e18f4099e4304aa2c12de103056a08b42770132dfda17e1e382a76de92396b59aabfd45c2b25690f7e0e3a0f98b4e3e78de19c6d498fcae2d7d03bf13778d89f7bffb5c87ffd26a20e5d1e759dc6d6c92c49fccfb5ec95768a273b0199b4e81b4bc7145d31166f51529fb02a86c5a1d91b3da39b8689d9cf8ba5435ba7d9fdba796e1dc72afb193d206cc35fb28a25d4a4cb2f79433b89369fc334ce217510a69a36c0b0e88332d1a4668622c4a2da6277d9891fde3a812bfba80968ed19dc8e9311a349b4c7960df12f844611ada33a9b3477f50e070f191eaeb838f38d33e34b40f9a89fcb436cf6b37bb0ffe5d6f209e33824ad1ab7bf1e06114d186415ecc762bbf032091ad3ecc378dc95ea2284137eb22046bf81ec996700e2671fa486b6dffebee128221916622e00418078332eb15a9050b3264d687d223483b12ea9d97f70d117dc45d41585a5347d49ba3e488cce06913066ad2b9034b32e18ca768931c8277a52f2efbdac929248191cf83ab01e7fd3fcf50204b87259ca4b13d3366ee99bba923a220146506fbfd32c18cae1cdcc530be97ac4aee4f6af5442c7cc1b33044dae128b24adc8ec3acce9a65257ae016527d4d05429a214a9b63f6b5b03c8310c518f8d9c9bf0f6d01279cb0445d3e9b764b154acce471e219848799b6d58eeec1f72c33eb7813a8ee548e79f84fbc354ac17378389a7d846461371b7bf2b03e1b33597bcda7b8627e14f2c5236d1ce2a3113e0af8e3011b85f8f1881f059c48227f14902f1e6963888947fc382466238412222e23c6721fa7678378b8870f3d5eece1e53e3e6cc1c53e7eec37b64b768b172db8dcc7cbee7c3dfa468b5895b5f07bf7f287e42b6e20859f3eea89661cfd3c2544cd5e4d6a848fe556cbbf0bd24529c18f2fa945b4ab3ca335fd06eaede1f3ad582a82da08dfe5bf93f917b95aba0b1f33761317be0f5d305d5a79e46dd36500974b6930c2926b32ffb42acbdcd0f317b769a7ef09c0f6f1c9d95c20094cc47d2fb4eadd0643d17914fc8b50199d80b8156632165d03d729928e42b091701fd32ea156f0ccbec9de5ed9bd6d466b7fbdaad9c5ad7c8e4e5bca541d4c1a99767d47b2f860f59de2a9d1e49ccf16c4ab313d12eb23bc52f8e49c91d1194fd270ec08581b639295df960ad62bdce7ffaa7e82062fd1a59919b2525eb1f5c2e0322ed40f8d1ab101c9f7db64f45f239218945134111093c4df1bad1be3f3d59cbec1fb6033e13d99309cefd03c40cb27ed01732cec4cb67f66993bedf8d3307d8ff082927448f0c3a005a54d54c6504146037f93e3feb94ac8527d4d6107833100479ce1bd92c8cdd7ac07b376600886f43cfa3ecbc6a5a62b19661ac250a2aaa9495ba5515cb2c46491fb3315f32f5cde48bfd66dc16e3c821dc48ef0dd080437695699d1036c43aa8f3a3015aaf298e1e6aecb9252bffe3e5d74c62264a230f0057c690afe649e2a629eca463906f6d1b557dff02d17f4a51059c67cd8a3e9c14ce17681485841914f44b6e148ba4f74ead0717332a534e2dc0316e80ad5d71aedd22cde1660573301401e4c0cdac12286f2acd406282781b9818bf7f8f7484e2cd214d71cceb2717c696e383162fae08cbd49a3ee27ac9393f1c7a2901a8c2d77b3b98ff91e154bc06d48266c076c8cb5957de264e37f0a0107bb158e53ae1386ff223fbe6cf55eff24117245ae95adcd25fc6c9ec5e940cc721cbf2ade202c14e430445207f6946735758ec77453c224e6d473048f4f1bf02ac2c007db0fa1ac2690f0f7b74d815e96f64c5783da86b4fa71fdb79b3fc7d29d457d4654fa9b999456c78799c165354bb7fa004c6fd9ca9fbdf392e4c7c994f870c721316fbff6f88e7700f7e7b8762fae09e7e475f378c164ef5c7f20e7bac5b434deb54f49ba942f45f038e9fd4180f9c96ffd3c19237744e44af3873d04ce3b572dd98e163e834cf106aa1d3e9a52c4bc0474bf3a162fa189915962eb0d205b190555097898f6f66c1daa74034ec3efc3a2f87bdc6368844e1e128f1a369c7f1beb49554284fa59d08f81b0d4e68d4d5923f43eaea1d43b377c4ce0f4fb8cd8c19cd83b8984d2879128e7b9f1d9e3920ba1ffd9076a11802e29caa90b018a80013998811664600e5890033968400e66a005199041033030070de0400e5a908119684006e6a0051868f99c44410ca017b28c26d889eacd8557f29a4568639289dd2d1588a8a790a428df9895cb3ef1ef4a0d387a89a42cfee9dfa5adc2ca022e1feab8b1e6e3e3c5f2823762a05f4ee8244a715e5b3fd325ff57da3bd7fd884ffcc2092f5cf18a4f3cc215be78c423ae70c217bf704bf0a6f86730de90b2a1240efef0b96e27be2db64c387f093898efe5352659564d64412b5ec9576a66d5ed3f1d519d5504f5b56c03d42d0c675cb2935733b8dd38da35bad170cc31976a4a235279692132f7dfa7a472b3bb1d1c6ed288a2265326b5c66804c18af0c4ed273f7348fa237b143750ffe598fa21c30681c6bc19b705b620b33ec9b3e9b23e7e6613938bc947738e7b703a24b6a4ad7440cfd8527348d0a63fc845c5847d5ce223a7c7e455ec3b38b88f5c367512f78833a15a441421b2d941fde24a450033f1ee99bdc74a7d6777fa87c136437a63b46a8d10567c41e2886374bdbefdbc8464d41cf98a3db44e610299bead516fddd1c47e16a18a95522b25ee26c2ada4e678764b86be374c0578ffaaaa263319514f171a397893113751ed72ff381b743070a29388b24c27545c4c254310f78d25ee8c3dbc80dd5aaebfa0c2760e00ecadd7085dfce55181f12e339285cae3e4b893cbe87de33f3170c92101bc30fa9b6cbe6e15a3adefb0d820ba38f889be09567a4c0b888bc48c479cc64286a42d2569d43c079e051791479a862d32170e544d7f820a96e785e1ae0129af35162942b5c5bd8b4e238388085bf8f408762093501763c4fb2add6961114888932c35190c8732d09a8f67d135e491f7608b9f5c845ed61575f12046b82b3da605078b44ca498dc5a7042ad0c80dd1b370d270719075fd0158454c8bd522e7be8d45da8742fb454ce1bc7ea1d402e29dd8cb11ca62c416b8896ad8b4a8dad298f24a63f1e91ca02f8295765a5824e63c9ee66243a11aa9d7083c4aa91f3e0852b1596295bd828f08120475f16304afa21a07f3822e0f93f098c3e622d5a948231edc2308941afaf9d2e24dabe48daf48959504eeca07aa8d9b2c5720352fcbd54645cb5ad8890533383a55295a0ec46048c64179401e458f152827d8548af124083b089e28ee642a97ad0705ae2c4a9640615decaf2714bd82780035ad7636540e1bee9a3283b5672ccade38fe688088041fea1e7f6888aa95d8d31584e22863faf7e025c2643c4405c8f14aed68c29bf88fae6793d8b9618fb2b49e24d167b736fad1f4a91d24a7a1a92d50930a6ada53018095ea06d80c51eaa1275590b6930a80504828f9976451a88cf4a88b9e4d927c021eb8470803a467008a41540e49a09a5107f73d4dc08a017f44772b1185401bfdcfec20b1cbd17f3c81e905409c81321d28e32d38b0ae580f56ea8c8b3a202dfbe5c058b120ebfe9bf51868dbc8de4db69452a694a40cc700d000d800387fda6e0f23b2104ca1a220217b7d766116e648bf44a61063602df7c65b3990233025dff715e0f3daf74b6b3f69faa17697ed49bc82a9b57be9efe4fbcaffcbb740eb55f467efef7e187a71136c8717e3126726f97ec13997595c2262fb2d74fac3982b4ced284d5d3d72ed5a773ba87294f72ddefcdd9fcaf60576af58c26a2fd4fd25a6bdb7bc380adbdec5f71a39139903678c6d16c685dcca01e59c81c6766a8c27c854b0bf7cc062ce1d9e51ca94892c5669593f4a195f7c2b4ef5dc7c32527a844acd02b39a8ca5b6a03466e2d9c88f3f6cd2156b602959c4f628932e8a22a5acd25261658c4224fdc48ab1284afb0b47d0b373c87003d7492fa953efbe3f039f15c7ecbdf7c2ee159d13515104080c18a0a3939383832340408000373736360000d4d4bc5e343433333232a6e972b55a654992e3c8628962ce18df6bedbf7b775411b751ee5d0ba8308375498f3e7ff7ec2327e5bf3c9b8faebd975a168c614d05cfc599c1a048e5459c32978cab64aae096991bb56b95d9b577bbb0d1d375ff792a979d7c77dd183c7ca197d8bd1a5d071404dd4659747568c35531351171f227f3c8088997a35bc97156575f746d83f066a18286aebc5a793c251b5aeb115a5b0fb94d1141acaacc6255c3cac0e5347b8933f36926c77b60b431b160e9708866b6d6595626a012f643c2643e15a902ad966a538f7eab555bad84dbcff85fb4a25b3fb39ff8e9cdf193e6505ac920a6d356976e75564b9a0fd8323e1441f78b2ab47bfd48b3a767c9e7e9876601aa39325dd051fb860e2e610284ab5c85214acfd8ab3dd08454d19acf06bc72028ed1f9a01a464bd2d1f6561050376bd19276d4d27c55ecd197a356c6164db91b4def09897bcf8c6f2542959b468cc114785da690782b6870a929f134c2ea66a54372ebbbd0708384162b528088c83244878d2830a0785070b46832b1737fdbd652b718ecfb3becbba857a4eb6e5ff740fc484630e969d6ef07d6fce760df7b211efb7560bf0d60d2764f698766f7bc6a46ffd3de7e1ea39d4ad0b30dadb0ceae94e849fbcc53f08f8554bbbbe372baf69141d5e093ec27088760b7a0010409404344139e6625fad7624affda4bc517ebefd84af30eeed9e95a7f3f28deaf654337b58d6ca64ca942875238a1529551ede9b6148499a8f3243e8f5a03a3c6101c16870484404c611874a03e8301e3603d16c95118044118c3300883200831c81042884011828821462ac94d0710f56c1d625bf9a552ff8afef8f5ecc7761d655c6150c0a452d4b99e1fbcc6a0ebf19b5929eef2a19801a816d3bc8d12ced074ac9334cf1d39583275644a69ab99eccb3f68adada68e02291688fb6d584e7d8e0ef49aa2a9c36b1575a0a19d954f38646154ad05664caa86f9fd2bcc3c1a9154b5a75a1cab2114363d9d24b02d2d42752573ddf6a8970439ac60231a700324ff81b59ec044d9a346ae4047e04aa49c18ebc80e983d5dfa34e6cb3fc4a603367999f434db3a1d9cec6590edeba63aea483db272d1e5b8aa747386fb87b73e7d7254b6b051eb2cee4f3fc9341843d65d87c05a067e56a0b567c4262e2557e8470e23ff5ca3a2edbe618595c33a819496cfae696a18c71a4ea1739deaf4e5b6bdcf3412c39f2f0786df01d165c2f0a26e5c5b256c96a9e7a8e9581f3fdb07f750105fe81f7de31d50ec63245cf710508d5e5f8e51882f4736f83f197cc76ee97bc79b7df78ecae5949347f3120631797a92795eaf7c0c3a3e030862171307700ab1263013f8c819e49afe14267270f0a700c4f8f9b996dd636c3a872e4b7454309a0000e433173a83564d37afff38c55038fa66083d5bc5a684b79c2523115bb4946f4ca76b9a54897eef09f50639df4835cd4e32a97265b758badcc6be9f73c3aaafa4e294d4956758a661433110dae38b55d3fb6a23804d3de9ae5a8ba90e89a84cfda882a4d410858e156073d45edc3ccdeff87fc64516c6419a4d3bd5a05907f13425d6176db8b4cfe8c5bbc3101e7df1d0023813e99ef896ca32c7ced746daba88a5a982d70dc7104e7093fa942efd6638fba215e43afd06a88f45e9a037c0fcfdb56eb77b44aa09d0683590cd55739185a5e875dd693a7fc255a7dee9cf76a70ad7d88e82360b7d62a0169793d081c543cb9004eefee8dffc7e0f51179b236b047aa78ab7d004c126a399a08bc6f36a0af8f54352e7c0d993f0095b4fbde2cca7790b16fba2fc81a54ac68555019237d229313b5399156d9b25c76bec50b9a230ec9e4a62f57e4f823ac699076be7ec93209630295972070e761f9545782107cd632f9dafb31b19ca58deafb91338dbe32a421ca5b581b4b8e5ba6a9715b985feeddf5ce8e05332848283e89aa49d417c46c41fcf95cc6c411fe072c3178c656a9e63fe00ad3cb4b681cf8524a2dc7df2cfa4cb5c1e1db0e69de20413c1f0424e1aacd31afb67026460f21fc361f71ca74f2682fba8947a4e69d2d823db79e9079c9c0924644a74f44cfea94e852b2c892a53add67ac374400419548d854b12565fc70ddf38bb40a268901110293308688d8e14bf26190b9db3442817d302844e1cd5c68d3c5d57d544d3d5cafad508e422dcfe4dc45eb345db63945392b29992ed1d2baf538db5ede65c15123200f175ef6b0561908e7cdfa78d291ec3cbbf6d351f8d331af22b5c326e11096c76d0758b261b2cad0f133acbbfd594632abd47121e36150e1545bdf48413f0dc16ab47c195e563a1866e92de6b0eb2622c7c0064a38cff31bbf2e8f2a1eec469b03bb580b72d861f4119b32c061477b886027a3caa71a105f649e6dac97ab0038f7f01b3e8ea1865d2f27d4ec65e881e266f6903a12773746f6f5dce33cdfa900c96827cbb2167c53848ee31f5d14e946da4fd4628d8b387d7fadddb1c8aca270b2d7189fb45a001681cccc72b74bff2ed35ded7f87e89fdba336e065f763db3ad9978ceaa2f0832e408c0b4d75ce4b7610f5166bde98e7b0c46540685155eab6ddc25f52481e4ffbec3f26c4bdfa4459968855327388f5a4952c500e2ca439f6ad2cf5b00512fa0c6c3c09e86254cb9f451bfb541eaec1834aa053becd84854c6a050377aa53dd5d1fd84277dd1c1333354819846e0a6b7841803716a4b0f227f52b353193cf41bd5eb2345f3494a2dba8299a79a7d7562fb328c89f57a9a7a4d22f91492f3173fe33edadf21ef8c811e7a3123b39b9a4e4d513b3b58f91dd64ebd465e81a19279901118b33eba912cbcc5032e7be2aeaed8ff4be7b17518dd20f226264650044f71fb8bfbfdf2bfbdb8df5ffefb8bfffde57ebff8df5ffeb717fffde57f7f71bf5ffef717ffdbcb7f7ff1bfbfdcef17fffbcbfff6e2bfbffcef2feef7cbfffee27f7bf9ef2ffef797fbfde27f7ff9c776e4e2c62f2d4b007e92f070d60f08864291bd8f36ae925b3cb651deef5008af08d376780ba30a2052cfa571f1d68d3e18105f2f550387e35e82ca0d41cd780a0bcfb7e53df00145f12baeb901c25d29b09895018e842b25e5f567b8bf0869c6f7dc0b716fb70ae85c504e6f29716a05a88d5021d53af421ea076185e16e74a61c421edda6a404dc2d9c7253e791f1a686a073a690f8e026371f611667371d0da8a3595f0b604c87fe23da5187aa7df96ed1aa1403cf34f622f77674466b7179a98fe8bcc06f74c180672bf9d912be59c3057b63c9a52c89361f6e9cc67432930716136f9f6262f146d61fd29919bc932bc9f058f0920fe5309474c8ec699a91343bca4f3afdd103e73693d2ef7114ad02f0e395c6ccf43babee2a5692d151f73278f3e9e780774a29197fa136159e31b3e54634520075f96eaaa196db980d44724799fb23e84675a7aad08bce3c48c025aafccd45274a395e4e75122eca6563f1f25410e132524ec4e84e7b267039bbda82bb8339c96041600aed14891c780e4030007856993304c25db6ea520de81db0bd55471f383bb83c8eed948af6fdad807c607b772b60befa92141c01343010014a422a94f21850116c42cf6bbc3a44387e2caa2e32414f255e350243e357450a9f27745ac2aa2218489f49e44e72254f710a3106a0c824e74a06505350d99635743ca9e400537456c3d5101b8669e7dca9b5e03cc579a6338e1638aa068d03e7732b93c40ece59804a2a2a3a82a5afcefec45f9846f9eddf32940aba1d2f608bf5bc86883101f9049c93844e0f4d073b4ced4bc1017f73bfb9093d2493a5eded20ee43a61ef3a1eafafe82b7ed573e889939abe216a3cc81fbe914069b23a70652ec94d388ffcf58c385026c07e7e55443081012094266c548fdbe71ac79256fed5ba490de1d0d5501dc071e768c9c9643f522a45268b92f17278d851a17340cec6e8ffd4b6c60a6c1ff2bbab6f892e171a1cf29e8fe11ff25359732e5e3c2d65c30ddc97c5e0551ada86ac5e0348527a0fb436a68d99f23aafe7e1b8be955e7a1da3574beeaad2f84983195bda5de2156cc3d77ebe3bda7a1fcc03b512b7f198bac7334e1809777b1ef5112889f9ab95e8220ae0c01a3048c0401eae1e4355350ce4cfae279aa261414405554181514405541115114101511141080504151541059014149844b542b84e1e36ee39e707a8ce83147f01c634f2cf788418c58eec3540fb6519d5d77c6d87b7ffc194d2291480a470349034703b909507d63ecba1beef960e6c812153bcc4b60702c0eca9a177cef99789a4bdc03c77de22669937ef3b6fdcd0db9c710b230583547557d89b6247281d65627221424e056960602671d307e61b4359c071d061f2dedaa999a7897c7226ff323237688f428053927475540aaa1f48458c48aef7220f9f5130d4b13a9061b75958087bb6369bf2eadd1bf1e9ffca481272a728382ad7907bfb883f5c1457bfe247b4f492a323b2a93e7cf6c8f91191b3d65c1f8ace8c70534c37a445c5ca054d41c132da5d7ee4a41a93dc2163e4ce5a562c122c28056909f480e63b27e160d7e78ce1f84007094291aaafa27e6ec7ef16571499dcd440e6bffbf7a6ddcff15ae3b638e8190c9945d992d0be277f52d3b0076822cac0064741c85ec2ebf0d21c24eb5085b224fbf877ef18975531d49fb0bd93d712b9af1a972945e32ef9484bed61004d04e6abc224c30b346fb3395c3710485a88654f5b573344b5760ba291ea893478e7b91996ed679b179647757c6cbba09d70a198f90860dd96efefa7ab13ad46b2fdccc5741b4405e283136f49c22f0575bacac75f118e000274db80e91a8e6cded134751567914e3e7029c8b3e3003cf23663936e74e5aa220a00525a88b12fcea84c2ce61fcaba2abeffb5e241e8de193d01b932fe62c5a51b5d8f89073c1c2f0a2d1b20f8a59c511b29f65e09985e796f6bd5bc210ee2b67b15679207bc976a06fb45e19297be5ecc6008c566b034dfc5b311b56d4d7d51dfd170c42a30983b52c70da2e4a30362efac06a4a21a6b23879519748895eb52bca08b347a511ffed6348a9d294cdc0708b98eb5ba2e840e65c34f991a085403e081a99927a926b33545e3e6303c3347e078d00e53a80e9086a0b45f6ffad09ad16c5ece7cf35d7d7a7e059ae0b146b1d6019a9152456b7c757bc453f7e6478cedf97f9ae59982bb2f6b942103fc9946b5a7b48180e11b440c17b49a9d6399bb53698ad40c0e7a9e5edb0504c30f32c2513d413751f7d97dcff7741cc7e5704feffff63311ff1859c292b9c16d28b0cdb15e3178166d2d6de73213c9c0808e712a0890bd2928a4f738b93fa771f2fd7aac5adc05711d5859ab88eb9ef03eee7f08e22a63a573d30104254190fafeaffae3190e92f0ad28163638499394a5768b46e1298eb4591010c267bb902330d17628fec6f5c95193f04c7d5e6c9501e4520d9a5d5fc829079f3ace6516b3a801e5cb198cdb66243a3ec9a54530dd8897283d6db24bbe778f1aeaf9dff87c66cc4f64d052cf68298b162b9a99b4bc773b55aae8a18ac58638b645784ca6a8da19e941eae07177b6fe34da8672f8b18ec257bfdffcbf50b2fd67d6d836869ad73846abef0d9a29eb5f7c6a6349990a09cb2a4dc519be8aa9c7c9b76f2e2f6e130829a19ef4a287933f956d4553454c42a14a15ad8856741138ae94e4736a96dc8bd45820f8252daa3a4d23958d70744ce0ce4ef33869c5c0a3e0a099fd911117178bb62288fb06327459fe2c2f4624b10e4165793ebc34742fe3820a961f8897763020d191fe9cc7021abd4afc7fffd54f8fff385df1edcfec478b7c8132de37e33b925808d9933537042dc96182d48744415a381aade28ab5543075d9fa31b78187fbac04329e36df80953ee5dbf71668037598246619b91bbe7c9c3387b84975494435fc19465a86a145312f4019490a3758226b133670914b7495017a7569c54942e4f23e1b1cbef3174a8db931caad6d304b7f929ef5c1b54e05dac69bed398aa738d6a32af878944eec7a7b3d821d317cf1384f7d6ce1ab28b5ca2c55b74767cd0c2751754689b8e735a88dbc5bfd720233b4e93914784a78da1bcc108cd3622e12897ea6e220884bf49ee284e4f168eeb20818026e4ccefd6fa9d35ef37e351527450eca02930fc26338b1e839d9786583cb3f7b6de44f65ebe9e13369519a6e91ae9eb654044bc868b7cd298120b4e741e8c84c560e06994072f40c5dbd24425524bbabb3368bfdbf40c400aa4c252424ade34099719c567331a12db5bbac4d4ab4c6629591872d6c6c38753d335eb7bbedde2509ccfbe2536ac6f712af697009d322edb934dbd7c3af5fd50ca4a5f484456b10581f9f98b1c4c9d4f3e40a29084da2cfab06e94529d44f11be1779048cc0d6b4b5060e291b61658bcd7437ba564739b52b090e9cbe76746269c102589e43c8192eb7c53765e7a3f26155813430574ee62a9f50934b301b8740997195e599682135d24d5843779ff5d1f12c71a9bb4a5644ca506012749058784e972acb7e5f6eee3a5de9aa37e162c6778c8f914d8f62d1116b9c05f6a6d155a0e06c85c77a18bab4adfe79177c2000fd250375d33621256b0b57c81d1a7f0314a3844f3c7258214059c54fc868c7b0a9e35472ba5e361fb60dd12ee893f38c3481c0c3e3acd95c6a34655e2561be64457158ffbd6c6ec7f15045c5ae0c0f2e1bbf5e9701d19418af0c3233942a23c892161883a2eea81a1ba2a621d7494996485f626427105b58432220d6cb18b495d93f7a6c39c4693fc21ddee5538e8fe889cd0603a33747c948f523a6d1fad4463541d39346557a2d41b9b70ada057eb29c408c380ab64f9fe6fe1fbfeff2b37f89cfe11436f2bb7784123875f9255ec2fb03298de4a9807e096115300222d320c8c087e9b75b26aff4f95fdc55fcad09a02afee014671cfb26e4de1c96d7f91ae28d5255209ad8515e084bd61d4175a4cc0588a1b37c3b485244f0a9d096215453fdc96df17fe17129cee083aeaa41d0c86bd365449981894424b3df48bb800b75e1c3a2ebe253e168b4503ed16175bcf6033d5a51f111177c005a4baa44fa3e79e09fe2d8469a3120921d88bb8daa8115d10ab77860cfdeaedabafde3fab8987bd06aa558a032977f65f88efde07bd13cc1cbc4a307ebc8ec67c024be5a4dd4ea2c8b73ac3c1fbed73ce8952cae5581bcd9febcbdbe4c65cb70d3c00155ab949592ae3006398e058181a1df8968326bc1ec9dd63f5b8fcfbb61865700220a92e7d8454d4fe670d6592d767a93ca921d78869c731870e04090de1e87d660aecff8fb9f4de910a2fb5fff7bd273beb0c1d3af52c62839354236ea27b499fd3d855902efc903c4389f421bd0923247da5ffcb23c2429096916f6ff4ccdf46966cd64e32932b32c33b8e344736235f7a9fab5f706a3a796c66aa5a6f7a7bb200166a6372875e6d5a2a14f30df6296d0cece2313b7e3a8b0714b9e5cd66a556247790d93651e025fdc074b0168aa3e9dcef79f8a82b237b5e746804eca5c9d6c3070a85cf78a179b86b97592f386bed774d7384d204d82abfd5c44a1e35ae8e3a44539ee2928393877a9d7688e66983646b7b711df05d999c298a1248f2467bf136516958825eb07daec7b5b3e85fb04bb4f1768653371e1a298f59b6587cbe869de8519bd07e4ab429307753932d793bd3830c0019d4e15152919b5f2b222b2c84129c77210f35bd66790424e29ffbbc8484d97f003b581e233813233f1567e6075f550fb09783720ab1e73a9ff5f7183d4dae9fb7fb5b8d8ae46a123ff3a0d8fc36d0483755792f333e470f781d165d9178f706aaabd7365f24a323ac4a4db1c02d1a700382b4a374aff152a1526e0da8f08c559ca0a61657bfbfb9b9b989565878ac329a4e8b668e04df02385149ae1e1ac96ba234c06009beabf7dca672102a849d6169f86aa1a57ec1835b3e52f972cea4151c40ae1617413ea7e7bd2ceb28dd88a6b4a8d59ea47e7902e7c4aac1aab19aac32abd16ab59a53dd996ddcea5e0f92d6aabcb184f6bbedf8ab974ed09e47710e59da64a24d95e0b6f178831cf7343f902b1db1a4d0a8f2b1bf27622e09f77a104d543f7f4ad05392333dcc50a499ac85720519eeb0c5ff228d19b8607d1d712222736c68d41e4c30882a4c02c575bd2c03601b98fa8c3267a322420bed7050cd7c39098b07a0814ce9fc732dfa0a0beb63b6204c132d1508d98cc670a225125aa2c5a624991dbc525ddff19e4b056d36cb259cdb035aa046b91bb62afae499611b04a513a6329116d9dfdf7e5edfd5726557dc1d94166f0266e565afc060592033a3e4eaac8285f1ffff86f1d48d17349293171866a48b25d63b89afa108995eb8ca4041ab00b57a9a11cbac156dec41304c279e3d35fd68ff346db7bae39f71462b3bf45c7284b2ddbb1105745823f3e997eed037e1fe93cc757bad88c89772e6ac905a5c2fb8186ab008fc35db5f58e22d05d110103cef3532d1132d7934595ffa854467e22f35d810c004c5748f864f430e2bd71186afaff264e23f40081af2990f269b2135c764d140427a09e92dbaa7b93e58cfad8ab920a8c6bb406b3644a677612bd94c009880f934f499c9ee70c0941c6acea91292dc1725119229d2b77c6d861842f89169e82f53a4130d28a017a51883512ad012cabf15500b298f98754c28382e0cc673c162ee8f263f69f89f6e7e9436a9d38d03722b722953956e95649dd99885ee939f140448dba351531ca83b3be483bbc6785eb9996a0a516d6b92a0ba4f409256f8839e5f6bc0dc3873bdc4e401330571e07cf42a2bad6ece4503cd65e88cf4c1ac9ecce52ddf9d2202bdb52f48a4cc32d22769410f3ea2bacad31de5c72752b50f9dfa07923e05cb5483ea9c4024705befc10131293faab8524dde23bcd29bca621f9e91d75dc4a05c89a9dfc9cf60723178f4cf725aa5d6ab951b8970a844ec596c122130ec0733b808180a40310ce4781ea9b11ba420c3821a0f890b03020706040ac30000300c0080436130c808000106010601000fc064f050554da70d1ebf569474e54d6149983f468487af86067f026fde22305008401a230fdadfb4d003d5862917e700ee0893724392ab07400b6927d440357cee793b50ed1a8ce044820cca30518979633e6f63728011b289411638e3a41ef31a9742d0f8b5f9098f95be8ad2c02bc809b1b05218cb72848484309075ee61830310ff050ea5b1b4098b5fa4c2af7a078341f7c6023f8aaae7ee15e8c90abdc3a5435c5c1c2d27fc13f7608f4cac32847b1e09a551d94a95f08e68db81a752db0c58d90b548f4a7b74d7b586d9285724dbd161859e4f8636793de2650e9e5e11b40bcb07fb9db2164ba1bbcf8b7413a37d359d7270b09c202568bb90adb02bcf836c1c96e377ef91b03b784fe8c2c9997d155195403f8d31259c069cce65e7c3bba5585d19543f13c3b00d21dd596e612f88be56dc101872b85dd70aed321f45890980a1492298b68740f9a06f350c2990c0248d2cb4be049c04470a2ed7dc91c7957d03a0fb5aa536cda1fe9fb0c0f0b1105f5e0d24622e28b8c0ad83758f1d38f926eb00cf6601c6888765c23d89c30eafe34131a7e0c960dd16100e737042153f859bb8fbb32a05445f1d5656050a52d1a911beabd3c74906c601c0a02e77e3e3db0c4bb1ad25c9109ef81835bc2df25ef2a540690fcfe8ba6fd67f064b97329763a1899a90881bed83af32ef699111a4e5ab32f7141321c8664cdab8300755da8cb7a91c513c4d37652a058a66e4f12602cd34efbb9cd50a4934a1d498e3ac45a886e31fff5bf4d01db5b95663e0cee544a0dbf4a9869e562aa861b4f00d472853a3c47e7b52d832fb38749f4238f158bdcc887814b0240be957bd80df1edab119bd9cc1257eb6b44c3c5b6eeaa70679df543850ef73595461283e1549c26217615b7f252b6e9362a9da18357821acb3bc7c0217116bad2b451b0aff40c5e02ec1236f9f8afe52650de508be59178de584289ba1dc7a8cf6e1dc8da0a1f46705ca97651a0d56b1586e5d5103b0165f454a80f1dff18814228dda36412faf1cb59d125a13b3a19667fe85e1184490fce33c6cbca012e63f529ac19594ac960ca23b4bd023d460b208b42a040253d8f06c67a5a8fe580a5e6dd0d6365e00cc3aeca77396256a03c792683fc2c08fd0a73ae74fa3962b433eef56ab549ec361ef4e2b514b3f3c523d49bdce05d8c9cc6b0c914df091c8c1a75f92f683792df12bd7c8f6cb8502f1ffade1d4e66093c450a48b1dacbb38573c086b2a035628f9bed33dda1fc22f7871b441f8967008cd313e6b33f872edb1fca5e078ba3e7bd35e7fa4b4d4399f51f165f4c273489d8b12531e9897e2e8413b97897256fda527ba22024c35af4fda220b93de0c0dc89ff95a471998584a0087f7698f4aa095f9df6ab21be596a0d92dc65860b05ed85e8bb82d3158ab70abf714f6cac452e0d938ca6d743e3c7180ea5b3f77def3845b6d86a0e4254df12ee87c48d42959f54a618b55896ecc3ce43791c34144924472e62fcaf9eee5219e7bb07eb1ad3e1ec06aa6704f5467374a98ebfc215fc7941cbb45e5067a53b64d2d46d18c3c15b4018996eda22f85cae68dbac711eda8bd01891f00ed9535c55715347a98efd5235201ef358fda34659a635006a524fe34d5c7761fb31d1792a0de9d35017323bdcd12727baa1e72abfb955c08c2b2f4c59a0765415d9a864f36fce72130f4a056ad4528b47e2450c758a625decda0733d01858448c404c3295a2599c0ca7d40e716f204af446c4a122da00f4591e0ca44c264220d3d68562a7015a23f1ab08df344a30e50b712e8c21b8cd0b51ee0bd0d0ff73f3f07f32e3bc46653564a2e2dad2d5d5f487b0f37b92d5f736402d13a1e166485a6022a26a3ada6d2ec8a00791b32d37167c481b83afed6d067a334d92d2a57a45ae46040267fba22da08fa74316dd0d0464fcc8c68af69841ab939b1c1053f51844dc5270dc2d5a0fa5d51e52b28803e9cec6fedb83c59608a9f960f58a3ae7eabb50c02c43a4a86c4334675be7587c72cb96a3b5767c93bac3f39031dce3bc7d1c793b63abc3ae69c7977a973dc7e010a8f783a4fc94ac51bdb200bf179e6459b5d05d0390510f5297277a1f3969a7af399edc17bce940aa6fb6383c112b841c2ab96439dc53acb54b747fbe11ff906e09bf94833297aaa8fe2b6cf8a849da20b97dbf9aa3b51f2ffc20abac45133e1555c309fad5f414b08993367943c8adb3e764b5b90bfab8be2a7c1ba44dd018883655b5cfe6a0e81086c037c91e6245f9728101eb8d3802e1469210e73f547b7472793b6eff7e80200ffc7cd1c066582e735765ad761ff4d20a7d39ec6b44cd3084a463654800aefbed1ab7f752b57bb966a7d47612b41563afb1f8b718104cd2e6206ca522ba8c6585185b0a8437e20711a6ee22bd3d4bf321210400544dac31866c7ef723902152ab0ca54eb606d239cadc6b29cb403076fa512cd5e6b79d7a4ecf4e460b7bde371ff5a6277e0d141758f622042ae0076d74ebe04fa17b630d13495207961dab9f968ac00787076b6a99df025ba091c523c3eec30fc9be68be60f2c1cd369598019ba18b59954570ffa24fbc9188c1aab6ec3d72f5f9d3bd9be96d2028d802f5d583f4b6f0c60294c96141e7d731480bda7c51d100f91cf063410e357144f91fec42393de6a94fbea3e6d6418a884c84babb1d7bf4719758496796b634105babfc5070a1961163c4240c912e1c43ed07b6618911c5677bc54d396483bebeae0aa9b6001b45a706b02777bebe36d90e501508d89b397e23284f5b7170f3df259f875d8c3f8e260f2fdb6db30339b4098657949e2099922b70075413946d44b7f3bdf697dfea686c7fc713f1e0bc306694ffc6dc26cf5dfb7721df7dbac50971c154535fd388a0b768ddfff754e64281ec38c1fbbd70e5d7846591beec274978be5acb3da25147bb75794456f04aeb5f98a548c3e23b00c4edaa04849ec254daa1cfa0a927af0188b83388b303457b7550b7f73441fb319ca0169716f6a621fd1e62fb3028cc9d1096691dbfa45ff932b28013dfdeb661324c6ecf0975c292eb6e02b83fc164938320c481e691dd5b02abfe56b0952ac8690f407e818c9a32a7701e215886209430c71beb2b6363d434cd8582ba44c3e58c4b74fd3087b43fefacd0484c0cab1b8547fb8af1c23715c0909a480e784128862d0f1153f5c66214c7d5dd45fa9cc906853e0594c1c9562b134288093d41d300ab2a24b8d3a53bb4618da4bd6ee6923aefe93beee5d8ac5b72e2195bb3cc4fccba867d65c94140a9b3ceda35553db7d2ce14704f06f4c52fbfea58ecda390382fddb85726a901fd89917681261a18aa337e0f0782e4b691c87e9b6624f30896ad835f5693cca4f899f3935857f2a0a891aa270853c62ba6c7f9d3ad6747570361fcef649bb8cb1be9498e8f99af13f6b84fa75eeb24ab2474594f4d9ce22c92db77c90240084b2582ac8e74928cb38a1c111685125c64c36ee4d2185b8d350456a509af18e4b77c03ecc4c80ef89627bfe8383421802c2ebc816439b23a7c60db0ea77f0347269dd5fc82ce65bd42ef3b34764f42e665371c682dd675edfc0489ac2e525c183fad305002fa9479da28365880c2abb32abd0c75bdd4d13affb76bd2847da2905cf7036952cc16be46c54ec280bf9977fba563f312b1206dadd04f6e09434efa09619ac35bfaf1c6c4888a08065b4a15661d7b12bcce17021d5e5b0933182d6a87e2f53bb37244ba481e6eb073a0800ec10e07a55ff3fa1f972b927351ac870fddc570f48a2b628bdf23d08634e4703edf4b9f3fa88f122c0ec27fd6332f707d5084edfee5259c33c895eea6dc1bbd42456017941dc3d32d6ce74630184121e37d6407baf264eeec18e65999fb932b5cb1190b30db84227023e40a5e9a95487e019e9742b976a26005cda7b1c54bb920f01176c70b770a8e985b06c6cee61122d7a3f3ee6a731e75e1c8f269e279e9afd7a247aea2f951abf902cbc2a38d2bd49f8230e5d6414cb61b1e2149ca518fd7098a93715c85fb270755780773f67560b8b3f4a6fb72ac4f132b3139a0f65b614b8e5d3bfccd42c09f844a2efcfcf25739fd15322cbd4d041f77e92b5aecfe4324c7a8f390f5d09e890d665de0318aa1c4bc54aac2b4492c88e277087c227ff667751d30b1c082793b0c0e87659ad117bf7dab78235bc132c844e97f70c2dcbb0d126a382a02d1460c6f895d7b2e3dfffe0f11391d82dcc34622e2fa8e9c5293441225502f2f9782accd6ec922476ce8badd110de6d74c000c75a72a60f6325891f18b4d9100177a747203e8a348f29a2fe9587cb693778119b6c27c4b3a75730b30aa3d8444df5d943f5d418c6388fff7d5368730e89baea1f6ae9a2d0eeefa79f7104ac4387796a6c9a01ec88ae5271bdf7644104bb6562402816cc153f07febd46460c8e5e9587519c5209230aa181b065617b51533a74ac9d385fb1affea020a2ae79bbf8ba3ad75c9fcbb41b2a393bbdae41cc753c90f30e2df0c4e1cc474c8f863b3de003f00401ac0ad969ff89a22e1107c5fca8940590628235421034038deea56100103050230c8b24138804982124170c652a1556836c0c0c1b3a90b5fd1cf8e2f9f4dca051d7262723689ea5997c21e803de4bf6183e3e6f82bcc7f24cea0e1812d9e9828b25ba504f689ec1108b30ca874011aaa77c624819efc4d465939dc8f1d027c3ee0893039648139fc56e662ca7d908f3d7487ba0c9b1ddc5ae45d0ab2e76f8b648645354613c22d90d2fd3ff0401ccccd6f77a07c410800b27806e1fd962c73f2e4059ac25d391229653ef1e248969c290af28134181d01e9c2c3f37595e5144fdbc42567c5952f4cae1287cbf0889d3463431e124bf2468be42bb5c4fb924fcd9404f8655215faa3e797e3dc73d6a47b6484a8e4cc1c90b4a82370629516abcfd7c731f17763adde1fbd2a66ec67ac3cd3e77c38f59d48542dede0d1f8e7066028f8362efb2e97c99fffa6a71ff3906845e88bed97ec15e073e7a382d9d0cbfa0262652569e5ae03354bdeb2c18425962964b758a336d1b55a65753f75a5474406266105ad01f3e20cb719be445662cd414aee1167302e3279129717ae025aaa0111d2385cadb234e874e28bad2f16b84f734c94424015b393e77014d35eb9a4c6e4397fbe5dacecc0c9daf87a3b001a5523506aef3043dd5c822d5644542f7e7d452d09162972e3dd44e82d818faed48f408e08317761ddfbdc7ec9623befe2bb8b90af232962c104c7e4e4bb471ec10ead86632284d74f21d2ed0c76a749543102a8b7f6ff885b667c081c78e287a46e6cf4c12c12ce0d91fb35124c4387de76cf8613cad95689cbd01bd1ac962af4a05fa099161af43dd1f09749375fe0c0a411cc9d11037b59d97ccd84ff9af8e4c32e7a5b5b7b53252cf8559735753406ad44d3c1bc11aee0f78d062586fc523aedc1b8bda3c68c7ff4276f44d5a060308cabc2087643fa505e254a26d032c02a62a23a274db72fdb220e6743946fdbe1fa49fba702a31802aa9dddada289643799ed9f129c1ab16432d2b03cf09c101f92cb523325f571f9898ede7828731ba84aa3100f9212c0e5210963e1e636b9d12873e05506ef331b6258bc2d7387103f7d2c2a060de829c40091027febf320f15fe4180d58df4c67526b8d5cf5774496d38440ed7f114694ce478da79177390aa0aad6062e9dd0b62c0b23ce13ae4857038ca0077b10b96910b9126fd7dca3b2e5499a10041887a44e456724f278da92ad2e2c73f82bddbb88de98267e816512ceb45466c9840ffd27f2a71db114ad00345c9758da1030f26aac0b1c7babc7b55cd4d0bda722dd448ebecd975df962b1f22653464716b9a5374ec21c7c3d34a7a34be5211de79a4e6fbc57bdae0817431ee51b06edd7c1984d2ccaa72159e9bc5a0ee9e5241133cc656006b84277c63aea65cb271aee0fece1ffff59bc4c643a344047ef803e1f6acad49ef995ea1bfc1b09803e3167cc9f708b6ed3929115f5f08e506e91b6d765c4d080042d5c47eb75cb895753b86b234bc2fb98a1ef74b96ca9efabdf81b13d62111a3ce0aed6e1285de333ad876be9a64b299010d7c52756f8e9592dfc97f40a770b049aeb7b73cd0c69d582d4e2ed2960eea4a2b13c9366ed0220022b4bfdab83ee863668ee8b5b5f9a59316b766ffae2bf68f0c086a4b445030a2752cbbc5cb11ac6b148f707a472e724d2bad8c13f9e6f9dbe7656a520b8e12044ce9933a9cae235988160a8d09afd1a1b48cbfddc5d3797b2f0d82957964ce1ecb6dea48b3036e3027e89842e1ba8946f8d6c45d2b8cee2bfc8b0159a3c97761d7241a4c878bf886e14111018b3110013b8f46d8bc98ccd174572038f851797d52abed74fefb888f4e474001456ffe322c077c3c56031b05624fd814ae29d2ba62b856d6e3108973be54568bbedbc47472d12970c07fed6271853f06a71c3ada97de58aeacad6d439d1290524b2bf7c31a6dd762d33350ebf2878595c6b92c2cbed85b8307f03ba2fa1bd3d2c739c16476ea5a408372042c20a2b4c0885b9daf34b869e68ce21beec0fcfe059507cb0ed1551b20fe848496a65836826ed8e17e0048935f3b1a62d9a90861f59b995e8c35dd5ac374e90290afc9f5bc5d9d2c93c402276d661b1a750d16f3a0269252442c92e126b8907ffdddef2907e05481f6b6ca7056c0201dde9df692482b74b2ca7a49cc5e2a2c6a5d7d78d04ff2bd25e0122c7d33b1ecc698e65d13bd436c41d72e8500364ef00bab7c82b51600ead0f42e1c285f26178b652c997aab37e502aa089a6ad95e7e1669af0c1c181866e48b3620d327fb8edb5802216f8152fb8e3af3f3ec63ff10fcaa0463763f9e06f25abbab185a9330667a754d2b453b002a502a502333cdf7aa1a6e316dfc343e613957d5c4df338721e416da9a99fcc83821ca343521ba12d495b2213854e554f8e2685ae4ca886af845d9b22bfb5cb2355e9f1cf18abb19540cefca9801c91f8d50491898c565eb317f747a172f9e7259cc666e13394d9e93581492d5715d3c597cc7929c168341c466d6e6149c1199f0ff796129d3456cdd0e7f965b4e29141d4895bffe236ee8670a42b4a293a6d1565edec99e5dc62bee608d9e1a415441a2290ab2459a4b559aca0e129115352cc95705c024f2d2119a52012b6d8e279835b3c1ede0b08bcc5c9e2e8dd3de06432994cdec698cf289664c556809320cbaf490a4bb4061941b48023bee11d7f443ed2c3480c548f254d0ff6a288e95e9707dc72c82094082aabf20584b36562a1ac3c57e855364b2dba00d19bbf885ccf8dc99d497bd6a221243d5810222cf04dbd3f9419beaa824a8e4c518eb8fca94a618401b0ab669d2d670c403bac071fb0af3ba6c241a9d61dac863508bbc1829f0ddd8c0c9bfa24ee4e7df17bda9deaea27f4bf1467c884b2c9a1a8e752a950379d062051f205cc028fab2df7105188bc1fba80a747de4a882c97ddf8dda78dfcc25a08f608951fa962420854523068385933353f495ec3f0916e65dd835e32dd5262052b541d35979e10f954a35811b2d3aa78ed98a3a8eee8ca70054500f9ad07fd7c9aae734c8e9457c87621f44b2949891912458073fd19ddb1b46d2d4404050811c16e798373b6ef7679df750cf67ddf59b65ea8317a048b7a440b6e0fd9f70aae2dbd2c36b5b170ce2cbf2e50d11a44c2f7c76a79f471b51288801b8eb53249cf14402a2fb83e0c85e3a72516225f26a51a56613a427ba290a01e40794b9aa7a8ac1533db7aa79561a53b3a647675884e57ff2e864cce471736c7eb9cc51ba5fcf8342da073b20d26818ca050257064ca38163552b44f8dafcae742a5962ea09c4701dc0c531e1c57d12becd51697e118fa703613632a735d36a84e623c0b8304e94fba09c8b362237543643f55c75c2842a75d080d4e2b3cac51e66b73475d9f690256f0415f10bb92cf20f2de7194785739820d7c65d9c46836b142ed142ff0c2c0dc2c8f7e175b978aef27eb359a61e3c3fa529cf9144947313078500d388e0737f6250711f24d4bed7572fc472a9d501b4fe5e6f83376e3c7ca7cd92f0bcb7f19893fa54cc15a4c669e2da75b18c7ce22119c9aaffc628d8b00384d402aac4c47739689bbda5c6b0005930239e4d7a4843372c420f01cf7c942f24f469295212074303f43010981c5d55061cd513203cd2e259619a42b97e6e63f7cc8b879adf0e6977e19fb8ab847cbcb73fb91bf355ce8074a6c7f62de0f5ddd753332665d216657d7c550503e6424377c05baae9187e8baaeeb506392f98c6273e836d74374bd823d2fda804ebfb8cdf81bcff3fe33cf63347a3877d16f0105a8bf937d078b8e3461bfbd7b56038088190c7b46ed16b82b5663a35591c6c90b8c6cea97a45e707791ee0bfda3d363d5a4b3a54a628bd40931a74800101c15476b20c1fd1d3e1fedeeda994f9b4af4022d9d2fe54fe1c2aae3c9246c8cc264816faf71efe9ba3e049bedd5aed003d49f5ac316de4a0db66d65626142a898b539359391ac6fce8c7b3cb68e9d1abdac5e55931993226666eff4d39ad44acb2e1b93fe66b2afbcb02a5a026c65aac56236e09656c34f44ba668646381f25bc84ec4041d0ae9993458eb19269e151912d2c8eef455e0aa80093789e345e67a51ea4013eb8ba5a1aae107fff0c1ed65fcd9ea872d2baabd561045e4f36cb953951bd9d0a2800bb9d41e2ed1cde681216ea1794571f139c24c48b80f4a49412a93754493ab7a6585379f78546895f42e05e65165e505999e52c0a9a6bdd297350de7a5ab7382b45e9366ed4b18b307f7742a9d92e788409317ecdd7c4b5d1c3e437419a284d9c265013aa497603992a64d19405487b7fa040cb45bb262e26021093a76ebb958aa9b096043ca062a686ab656571b441d9b581446392f9b4354563531b0da4c6f52441401bcb882b77922b93cdd620a1120d472dbe32486177a7a3d16d494d6415269595ea6ed44cb96a3d865a8888981d2589d6ac5530860d955d73926b88cc07c2b06ca37339fbe37250af81da420937ab4a5214b06f783ae6f5f73278896d5fdda4a589e35130f754bd3a872091d33af1f7acbfa296b42e63575249b897e86053564f14731d67078b1966268fe6095355a00d5455a5281e797f3eb2ae4b4347d3e2467d98352529be1448c58f04ce02b2e28b34f0610096ba16331d5586fcce7134944e28352b62ecfe32709c27049477a85bdc896f63154e0fb890a4f415b2e0f86c55ed32a82e58301be8d20c06866a6080817a30d6ce83c541b1e3437ccfc3a66b43f79c68dc933466ed191205811561f3b71540634944134ac3e04d0b986315b1c3c715e9eb64e8675316522df89524995f2ae026aaa38ae3cfc6174cafe4ae1802b2d8d7e06f46faa5d5db590819bd5d50ad95b9de0e468bed69889d20246aeaf526e4c1317529df53254e32f03015392bf3f888d7fff1ea261e6a2262307412cd443f69b5171d2426486bce8791ef381aa6aea528df629be6f28303467c42336322489e80cba8d70fb74ab8746d84a7e223c9de28fbe96e18922975160343cf4ab359978df26dbbc1b960dc9b35a9d7c5b21977cce191a33d65ab6398bc83ba57033fb858499deba723aaf6ebf792639e38bc7bea7b92e1a2e70cd8cfe5735ac76910fe232590bca30f1d4d7fb15f8c2fc917e6cbf325fa827dd9e2d322c62ffac3feb63fef0fea37fea1751f0ec2b1f740a231c9b4513dab3ad8aaae15bf6ac0fc48a55324075a0d1c4c30cc0f42f91a226bd9529c46c04bf71bed8a5246b112a0a90f1ae0843cdf14a5f496878d38229520521010dbfaa6dafeacd787e73a6e6c91acf1f943c3664ddff8ab0fce997132c2b9823931810f7a6dac01ea30c56e632e197101dbeac4537ac4221fe57ce930a9a6b847a9b493914f0622b4b83af6e240a1777ef254772dbcb0175470d16f0ab17859f5562a1e626816356ea4a58fb5c8aa5260d86d1c966161f46e3dbee7f7845326ae99cc0c368bcd65731aeb36f3428dd127ea6472fd87ff2a0d2494dd991ccb979a8721c1133111c5543b415f1a8f5f0f55f94a6143565f9d3d7b4b02289293c5fae2849c4771d13e0a8c12a3c66832cad4a93a20131374214a9576bace1e34fc9daba86091a52ab77139356c6a2101b11eada1a5abb516cc75a5d9da5040d6c58eb677a57265f11c439657bd5958530bbddc4a59494b73e2de1a5aa14f4c5a4da39dce8bf2b0bc2dcfcb83e28d79e88c5a6c4a9d66a7b4daf3fe12e6692460fa563aa154927316e6dfbf5dcd41c17c58c84eb1a3e3ae3e7780f098cd498deb814463d2f665c6b0472b509219baa4be6d6c2c124ca096f24c34f9f6ccfed9477b6cbfedbd4e1098930387dca6aab730a77597a165be1cde8370c961e3fa9113c0182fd6058bcb363e6ddbdd7802c84112656c4cedf70ffe37927a1db81bdb4161553e1e7e46f531239295af9d066c6879adaf156a7f2d52abd43aeff16f0f99624042ecef1f83e17ba2343785d9310ed3d94785a65ad61654e8ef83560b8bf7322d9caee521fb0e46b60b16978de9dbc891e72ed9e960954c354537f5e6d4e66f7738fcc6205dc90aba7240ce3862bc2f1c91fb75e1afccf111324e124a2b132f287a16bfd3fde28ae43b406ab1e262fc140eca9ac4599aee4efb4a41892f52319fe8a8d1431f1cf0b122feb4b482c63398ff6703891ba8442df73989100c7e83d808280c201906a2380ec581b003744002c394098a078401070a8386830180001004000218200008200400000000800080460052215122252a790fbdd556e66e9f8c76f073e6ef5a75a316da95ee862a63f530adfda69c26e648a4e9b33f081c5eaf200d82ace106e51d96e408e767305c92abffaa9b0f7c8fb7d36ca1205356f7a59586d619d8166803dcbeb59ae84de71e134da0da043c1583074cbc7f4ccaf7f73939d478aba78ba297b035a5b50294fa252e004308d76415299e5816fd2891364cf2d95e365a62cc79d348532e8b166a5f6a94b77bf30dbb77e55a2ef415f85cf42d9c9342310117babc05be6aa61f73b5306dada25dfd46c9094cca3eadba52494fb3e0a80fb26e31936436c13523f7f87ff3ebd455c536007f8b84b9df6a27711ea57ac5084216c88f9ecd1390636f93909a77e4be9f2cdcc3a85b79a9baebf9169836ff571b5bb40878f71afae48ff2e7b7f2db7420abf820a3143a2877071b23530d91a77079691f1150e96f40a11965cd870821d1bb5414055d83d2b73d7a1414ef24cb6724f856030dc5c6eed526a1a10775c73c56a3abda960ae414d3f63295a644d5f120535756ed5c127a1cdf666d50c3cedf6a35dfe2251a8e4bd25d89d5722b0921322eca3bc748b24d82cc0ae088d2e37eef563d0c8b2091a5410be85d215a3e434568457afd05bc72b0c3a6aa057971460b89f2d6a5ac5b0989c4ac2ba776fc2245f3178ce4aa21fb24b0691fc2982e9390458fff92b10a1ae69106e289df57d1d4b4987d79134a579163495cc6c5300fb9d9cfefe0a121379163982c411b5c90eb831802b2d15e23b5b8232fd473db56043ac04b380c4531749ef76105daa065dd642ca092afdba8643ce353ae5ba08f0652a5865e6ba3f363df43817d10ac287096cc89e115b1105a9ee88bfe424461d5cbbc1d6835205de03553d9abe4b876cc15bc1192060e32c42ad41b2f3c6809d99b452b26866c29be7ca13995e93805d996f6fbd0ddab88b0069214f0f3b658450ce2f26a6572d176e63553ed0b82db59a29b40f5287f2447411e3fdd01c050731934d431db356b1462adac6588f278621e459c381cb42ba33d72b8f460ebdc64cf85c57b4db9ec62265f403d56616f1e47d17e52c4352cf3c3abe4c287044b00d110d01fd4cbb9cecd2d4b1ceb5ac92371d0149639a41ea187ef886012ad36d2692a93b7e6b03cead9b64a8ffb0840cd867e359027b90e7d187daaa56ed2e634ae43203d4efd688e98674190e6b28fdf0e187ff3fedcfc42d90cfaa26ae54fe5bc104e2f6566c50fc949aac148e7e16d3da0418db3012343ca0b46919b0820eb149e0b2ee6e485db63faa2631758a62baba9c6b560577c3ed39f5d11262b5c5e2cd2f4491c84fa09339b9d947f93addc4628bd7a979f302af47becfc15b94709658c1424edbbfcc059537f5fd9bd603a30787f97768f65a5b7f7ad245d339eb7fc6e66b9fc30d86148472462e509bb5724989e11b2cbb21a0f5ae1f3520770832a27fdaa8af37986f97010e784fabb9f6a28dadaa6d038d4fc50be4d7412400fa69f8808f4dd70c6b9130024c9390f1ca42db1e4649c38aeac42e0c221e321778afa28c600bc898601bdefd100d2df47f446afe861b342b42a66f684aaece129d59af13babca16b05ed46d85e7957cdfc05147e2ee71deb77f57ff37b2109bd22c5f034935532b18a8a501b9b58953a460fa33d7e4b9a6a449e736d3cb3f8e7a6d6429bb5401fcb9949796493cacad238f7815ae4d8e8f9059029c3ada7e39b1a5221f00a05537b7a6586402db227f4c88919621e58a9439c81d5d6ce8372d2869c5e8f2056bf40ad06c95069f2f050b15ea27ecc485bea35ce6a6a81ec4108045f3ae2a001f9fa228bc6afa453979ef8afe1175d2af658b8e88003f9bc6b552e3f7e17a8566de838eba4da74235f266e2fc25be97b4e8fe575f4a3b5e01a0904acd19ce374eef7753ed8bac92ebb22046ba82e9d257bbcff3f47bd52746b9be5b7dedc5313b9dbcc7453eae5319b90928f0c04f00378dd4ec2bad7a7198cd9b1c3eed9ec3acc9a046437ce6ac4aa481dc3e594a67ed005de6222db88ff21e8f2a73f581809d05c30e1075fb2ed33d54aa44087d0dccd0112465cdd9af0b15b4d1da1b6488a3ddcd42094216b2f58f444f74d26a8679b276d8228ab971fc932d3a08e1f7a4c9b79a2be73fe82e94568e6f4c4d2895d09891fe4fe9db56a8e7b3211d0018da2a21dad2da278712553ab990f1a5d86353a0ed5233bf737f0975f845d5b29c89cd0ee1c5268fd65afa76147059aebdb4b93925711ee8fcbfc6fd7dae3ebac5af1bfe90a0dc1348c7e95060992e4404807f22c16c9f40db671c2490a3f520ac9bc9ec417bad8c1336fae1da2826c813d6f2156911d146fdbe82a351040737c5a5649267ba6da0ffba34487a8a46408edd711790ee34ca70befd909e4b66f8007c77b75c9e01fe029011064fe8143f6b77c75debe45c41364e1ae6c45e1c9d14c313620ca8cd6a9fbcbcec08fe893218b80a1ca7e346496aebde07abcb4508804d38ae274136b850f0c917ab29aaee2c50a3eefaf7517450ee987629a442adb5d7ff981040595e3fbaef4b25cddb89197deeac130d702074a0fc36e6b80a06e1d85c5d48a844ba60ab9314c86e8453749fb9d9fd26493af0e9d62bc9a22c7faf779bcb11924d6ad3633b2edb8493c3ddbc12e5369e4021f9c957ba5badbc4e452652e524b049fc1d312b4c9dc5a69be4b2b9823980f98321f4900d4c04bed2809c529c79c69e8f4744fc45788d5d7fdee68a97741a49d8659c30d6bb6068a7a85441cd757bc00eeda0bb1d9298d92de28a67f346c58c509fea1a1bbc7b015f5fd34350de921597f50dca336a95ec95e57efa7408471beb3becb09ab6b0a586287d938a3c06f7635a45ff76f0616d2a7e9889d8f9401d58fc30e0167f6e69432f32aadaaadace62be64c9419f5a5f0dd1fb54e3af2aca1072d26b44d7ff00bcf53941e06cd1d9dbf55f768908608fb24bd4d2f10ace9002ecfe8852c8997f343bf2f60f25be403f74ba4cc6b353124fe40b8dc8e9ac4926851be3306491eba28594e73ad94bd78e9ae4a6e4d84b4de91166fef63cba07f9a78fde23d52e324c594f881153bddf46ac569e52313e6531ce88ebee55664b25e8027c688ca6543b7ab5fa6e50e3a30f3768105e96023fcc576ee2bcdbb14c2bcd7fd96bc84f01bf3773e021ce40bdf5eaf90bc3879cadcb067bb63df99eb86bd0dd94f2a16a2c6e50e81eaa468e5adfafae4133ebde8df4f600f95388e9d6ed8417b44f47bbdcaf3136fce5f19b8bbd292011bb5ae804ca3953ebb9c052715923a9184dac62a105ee0207e7b6c0c3691b2b63b7f27aaed1e923d96156d483d9a48ded5a8eba4c493511f0923f8878c1ed4472d9afa3f809b30cdfc02663f1c40f4c50e6c25ffa21198f42871d46a34793f0bbb00d161e6c764e7edbf171eb315f4a89ee04e4a9483d4964d33ef9ddc17f6716596db131b39d61bcf6243e254ecbe9efba2ab10a3b41a8f8ed27e49747ab8c9c0254b1bfa5128d169dbab092dc432413213862847d1cf0e31f838544e2c0cd8520831870dfba8e20e455541c606df0e2cedb4f5b033eec6d012aa5f6cdd5b9592ceeec59ee899b9a476504a163bc6c5499b99174c0dc0cec066ab42f3a6a8bad476309b0b20953e8ce296419c1db919b54ada07edb5a19b89a4c38feb2dcb3932bc47839d81e1e1d103879f2fc038ab2b11f7f88e07781b280350db3400d36f4ce1e9f5265f2e5a6d90c04eeb4663b52216b2a604e1f4a01634e7a85adc525a249ef51cd7f2cf9af723fd46a2011fae3c954d50f0186cdd547708a7f974209d5367e1b81a288a2f0f6965d5427a90b23ffa60fe4e96f9ce3e059c116dde68810035f4330a8de824d9ec93f3484a3dce401972f228c4385fd5ac85f9eb6493b84ca6f4a238f72f4e6dd06cd3ec577df3c515006e17ccd51ca445adfc99396c2f83449833e810bbfac0be788d4b8cca18ed2fc33d2df29ebe75cc4a481e672d51f635be8489def8b84c3a0d8d273fb3a76f0b36bb826650d7ec15b2d14298bd73572d1afedc4d7f05f20735f897a84802496ace2609a145b5b59e397dcdc54a6332cbb5139b1208396023341254b98312bd87466b602aa6c17ae3f134a4d5f4f3590caf1a097ca8e7de5142a68e5f57a36cbb0717e67472f38e0c11f2c056d21992aee758121495574803e1ee8a3576d9268f55534d1ace2f0a1ba5fa31ef07a94e7ecbf4c1c70281bbf3a3b5a8c75be0834e880f8a4a762dc1ac8cd9ad80576a82bb1118625c8a4dfb277f8a414e17109c10852812eb86c9b89208587d3e412e1d22837adca2c7dfae7d0dbe24d190b2ff8e57d1e0fff334d7c6e4010804660413ef73540a9673cd8ae1fc8ba57f5e715704c8be0bb098e97d4a80f77ab0f9df56946d45b2d623060db92ca1d12345216430eca729511ff5f9b4ac8a6f8f388cf294b1ded56c6c2b9d1910b565bcc0e891ea539ff21b17574687d0afc415280e275574ba3f5de7ab8cf2cabccd6640210cfbbf077a1bdb7fbeadc1c77b951d8926200fd8cf7a33536ac95a40bb487e41544dd0defaaa67a121380594412da7fbf35d3fbcb39e8ff0685d03a0c7c539f080da48f55fba540ed442a722ea50f1f55719e8a7c98e31a30232202316e7dd61a0a5904e221fb8b98ac11d9071ab1e813336177ccd095a30a8cd22f5395431a65a4a2d55b667c7af147beded0a19ff7b16cb067103c3d673eb8d8b1c8ba5180e9b578ffa31fb4e8bd5618e164b9aa683769badc02cf7c97053f61284351d653fe8b77ed6365f6d19bbef2e00d0230d03b02dcfded0090d153a63fd6537f6b9b84cb0db68e9dd15dfd5e1349a1fa503e108d1f7fb780ba0968c40f35f398f0bd503daea818f3b431542724abbf7b853133e8752b8c6df34a7732da5c3952300c48ded10bd65e890de9f4adee5ff4010b71445f4ec3ef3883d3a27d3757894d66e9ac625bdadd86c80d8dfb54123c60a3a4a14f7f76ce8c301d9ae12e05e92389d7a83b73704513e00731ed1e55d8e6ef02c7d82382405f8edc960ded9f9ead1c5f7d2984e90da18bd1abf03940a8b0be3d631d4928f8ea471bff856bd889e9c03cc45b2c4c1a41a51e9323c8fe71840df39bcedebdda70aa5210974dadf11f6adfe3b98b2548ba5bd21a27e47aa6463804aced30944df4b6234d208ad0b07de6563715f2661a0aee79686337e169c9d44fa0b430c5e9c40d07023f1538a59012f0eafe16b5cfc8e1ba9aca457bd97a90a813c7b32385fd8f62736091237df75e0c7c5744f05fd0a9b457744c568eb34f477d3b621ed0a832369129e98a0dfbd190864272c1e0584a177dee3982349379963534219e1fe63cd1eda9d7ce0f522a6210f78d8ae6b20330c6a4de1fdf59d504b172521df2341231c6a01745bd124692211637741cd99b6ba7f7e5b6e4e50e180c639c97accd67a711d4828d3762fc0f90f7ec14641688fa96aeae72dbb954733bdcb55a676fdc9d066aa6315db84a2688a0a7243fcd3328e12e6fc6888066a962cb53fad0e2e3da50be103a7b661b4d2be4ea1f1db4fe97d35b9d8b1fe7ea114adafa692698226c17cab25aa302fc7b04ee0a982786acc2ddacc2753e245493a0a658f48aa16279c2023b7943e94d5907c284188775b0c8535a83040a8b572e8203efa48ee6ff4cee136b8c82c0ae0f3b33528f201e273a64e8f7b813b821234671b1d095056b5f369040747ba23f3123d21e3d66bdb98bbc272ea5d4540172ab36504dc32cb03671d79de5930655afb3dee20f011fc84dd60f28afc8dd73084a9a2cfd9de6131e6ffe0a62a81ae65ecb0138ca35540b0303c631cddec43f341a0329118780bb4c8b4d730f62bc61f50a16ae36da9fe63e8e4e422cc158422aa50d497b94c22e958dc0030f648afd63b119dae3201614fe9a86673ef99039eb0e653165150eb02affc9fd808882be41389e2a80d76018b3cea855ef9b65215a91ac616475ce120341e8d57c70cdb5645079d01790fffe76e16ca7fac98e5a69d22105a91583f0b17055a95d52ce9d1f0ad6e1316f841f7e70759396f6027d255e602bc8769921bd3c017c7590c6222d9887ab13af2578a043b7bc38678f51c973b25aee9f3a92e168c4dd7a7b92282a300a261963f26f075e9996b75fb84a8201c5405dc6200db1c0fc8da673f0e34ca74dfbf35281d43ca71466b1d6f1fa7b99026131645bee7eb09b043b57eb2cb6d0154c3a1937e44e1cf4f81e9332e3610946304d6c040dd89c9e7096748e5a32bab70acaf60b938ccd598ab9e9089d22a64102c183bd977d43b3d2ba010be6c2f350e34f42b88dc9e1a9c47cf3935e92fbae72736b6b34d668c6b2894383e61e3e16e29ee73d8a3c9f406d02ed6c90de71aac65a34a71cc79998beeac624595d1390c0cc264528984822bfa51740497e233a8cbab0514ff29e2f905739cb5c479d7c09237a5e6294b45cbb269ea282b9b99c0ec169cf0e4240b5590026c5c12d4b8e04ec88b099e363311599101fb24eea5fe35d4dd95a7a6adeb3189b608ff5fe1ab95bcdb38aa11b5e8cc007e042e6c6c0241bd852b0a25d141526815d874f5230c7d56f006014baa4e96fb7a10300ccb5575351362f418f3cfd0ede1e9f082c9c3948a03fc1525ed70bc5e4d839c9a0495ecff8f65bd611baf7108e77097c4e8c7b11547a61a3b0ec23516d6fe28af9dcfe350dc6f1b0c2f01841cd5939f22960d650b2be4a486607c8a9a4c232ea565f3cb9013afbb42f4e501c6ed20111260ef83da090135472d07483ad1965c02a74826e44630a0e9c45e6f7cc835a10220a0a190520e6fcd5a24f01c741bac2e015a4552a6a3b221624dcd77adbb6bdf7de5bca44f626012903db02c8023485922c9856a63352334badf026ebb97a3259a95537338901bc7de1ad7c6b9b300146de83fdd1071039ee5720c97582d5d5ba9ba94953a047122576abad96cbf5eab9913b05761642ecd8a44f30c2af1e03f59ad395942722bf996a5a902ce2758f335ef6232f81199318b59f4d08c9935bdb9856cbb634235a435c5b6b4b60632eb11f5e7aa9654bbf3f182f2dda6d3e04e40bc63af377eb5a50163b9add7dbbbb1f4ffbbffd2a67f8ee86fdffcd67a3d678edc651329fb9728c92c2298924fd21cb5f9e87c0162bc0456cf20893afd9c88e4ca6cc04797654158201df7b3755c421fc34ddd37d4c10ce43c9af22465aaf560068de30bbd6ff9516c4d9110c8227789a35def8182d8ca934479d6eb5b72451f05a7b5add132e5dcd185fa697695584887554d2129570f5d7fa780aa5ccad4de5d841382595c8979afca173ddc509a55219110c299e7302139f36945ddd227b2572839a7dc59335956cf750160c0e60a14465d70409a2a2406a4a63541ab761101242cac9f5493df1919b8527c08695e7b44e603cd920660d0821cc8898611673429f14c8f58a99b9085250873906240d6e865c2459cde4351ce3221538e6aeb0824464cd024081625c8007cbfdf8ee16e3af5580fa94559b75422e8bedf9e5cb863c6001d3f2491d0f56fb6f283efee2522ef59a725fa1262f91943ed8a6bb0a4aed2a80b6c3f49c28d69217966887e1712986d72d43c95d53b3f8baf90b1942585d66c4c5880bdc8009ecabcd9f5e1f412fa10a286833ecf4dc69d5f58a55578b93aa5a293462605f4d0684b0bf8f1cf932f7e533619052b12825e40782d0bc61f8b4557be10eaef51ba03860d880b52923ce9c29583881800850aecca193056c8e96a116085d76b012458c2ede54a1d5c066804c4e91144c0c21851e63f2c8e870220c3ae2c441031e409a126d3831870f4273c8e88004858304a74e1c589c9f384071aec4113213919e6883148013476784a8285539d911871d487bb0f1834a1d42d4c912041b2dca972fe20431860c38506ee002a7c51c0752f4a28e856d1a90f9b92d335460997290683972c8a112d4d832278934d870820b0dca0e04a460051f5bd874418aa2841a2a6da8b841458eeae827ddb0a111eeb7b0af84aec98954645c9ed66df2087301f1ffd5c61cba39aaa26d2d70fe33ff5ca49370ac1059ad095224e79cf4711c52f7ffbf63c347a18f72ce7857c52171998d481705c25831ef9cce39e79cab99cba1563967add541cabf92523967ad2d9fb6e56f0266478e4b172884ce619f89511ae3239db2a592e009954aaa26f7187083cac6da1ae252b554b1bd2cc132c34233e75d9444f13fff954e906bc74d56b409d171c20b352dbecc39f78ac45744eb6161816ec81057ab48cbc8912d6e672e500c2b90c8c541ce79c7c5151105299a4757e664323d67eb68224d3ab3ce449a47991b2137f3887690288a82b4eaa064472e215764484d9a85ec68baecc8154529b2d64e36554ec3ae58b2a6ebae4b8bb0a93c9d5c264be4e532c968b9480f0d0a33f3877adcd04e0ff08fdd88320e8ef9e7bac5fea195dec5f5f0343a9bc7b2692df18cd1afd7eb65842c52c4c8ebc5037976c0d4d1868c32c619211936396602f61ad226bef924ad251392171b24b154a92cf36699d21c653840a2c22b95c54c9567c962b029269356ffff7fdf9f99998d78ffefbeddcdfafbddcd4df486f842a672ceea40bafbffeaffff3fb376bdf8839d8aa8354a78a1b435b66579650d13a34a75552a1bb76d4775a38aa755bba3653e04b0814d6c8afdd23f7fd3131f0aaf64525a4d49df9436734b08e5940cdbc4f4bd87cfcf1adfd6b7dde5c7d7383f1148b2dfe0a581f797317694d760852e5ec83838a40ce07d4f25e4f8bd1b618487dd90616b384382c14e50208c3027a51bb2ac92c54c0f84b7dfdd1d5d951e8854a64b3d9b522121949c3cf1c4878984cc93996737532ebd7e1a13f469f2744fad2dd3ce4c20285309480a654b2d17f76fe9756a952521a4d7d619a70aae2072cab8b2cf88d9b4ea686e81e76246ee83087cdcd0e5b22656e4626c74aa017d87ffffb9cccf1c855bb6bac99299f99753801ae4abb5202e3621beeaeeff7db9b59cf96f9c9373d89bea389443a132c72b26a5522a2d581936ecf7b4933b97063333bf78e63357d7268888a25aeb9c2c6f2a5d58a391541be97ad1d33ead1ad8ba6f4f908169b5422036e0815d99f0a08f63c97342485f45aecffac64b50cfbc43235fbfc1ccdcccccddcc978d789a31e23e9f1b0c2d695d2ba55272e972d20d20d739dfd398de57ddefeeeeff45f4bbbbfbfddfc386227ed8f0e2bf94500be408b989398a9c73cefd3f3307b9f39d3bd06f8c10c2a8350d10c29721e5016badf4417aff1e965c297c51e3df3fad882555099697499c381fe6278e87b0c2dd7ddbbd99ff4f33467c768e99f9ff1e4168b89c9e5c83169e6de2aecc94b92d2a05e402694e9518c596e562667631cabad8e562669e97995e2abbe8708b551d17a3a20f20710498d2caa35e6ed393d5cdd70e68a9146bad55ca4bb508572617e98c81f19ff97f0e32377343e67f1a094da7f1100b8961a10f9e8fe5c243fc85c1b0100fb190133345876dba81b9318545e6802238bd38e70a08e386962f62a7d389d2dee9aeb71b421895dc9e591b366449a6ccdd8fbb02455554a9623462b7db72a16244a36f4a755f2f6b4faa181f63b4ddfc4829cb94a463443df82569058ba5c6682c249210628613fafb0a6666eedbcd8f3e04a1410d1cf8f7dc8cc79b0f42a92fc6a4f87a092774e7ee7ff7fffffff39ccccc4eb448cab4cdaef93da10302b224981427e7242704c76028af9bfc33ff30c2a640a150876d4f265a03c8e43452e4ddb1d9edc4d94663cf16cd8ed91a124e28a2a408ea870889dafd7a7040a6d758fa6a5a1c49fad461b4f40852348faefcf6c3441a05a592ba7be7ee74714e1ab52c0ea921fce1e17bb1610dffb9a54ce9db2a7ee3d07d3531fecf1cc3e30dfd31872fd6da0879841eb95d089fb2a8d43480cf1b30aff852b228a59bb4925e0bd2e6687377365bef753caa1a27dfbbb3c353e40811ed2335c6ac05531a1ee732a217120eb6bba36d3b3c66babba196692d675fd853ce99521e6a4d3a57d02b3f577ac09063cba672b5eea20e5876e610fb08ebeb392d88636c96e610bc2b9699d9b9170350fc1a961318e6a49081fd6467bcd8ae7db44b520a7148601033ec6bc568ed8f5cbaa9451bdaf6b7d9c96aef7c169a75edb9e912af73ceb5dc1e3c84dd91d5acc1f7a0f0f208aefd11b438662e8bb159d1e754d08cfac4f8f821d04ea2cf8bdcfc9e6833bce7ac18a2d439d7f779cdd2aa97e7dcca51f0ff7f6e05edd9356ee6ab695af62ccbde5f75bfdfbfa98dff5bdf6e6ecd3d20c400b9be473209e380858408907d65c811ea790fc7786fabe57ac56dbbcc3e38c7cccc8f48eebdf7b22ccb4c6d642cf70614d8152b35bf645d8e77d980c992bbed64af0f2b521e63e4cbf1ff59ffe38d31b238fe30c68e4de72de720cbfb3f7274f2dc5e5a89a3530cc8d09f63a0fe51942b1039ac0ba79c35d0e71067e12d2c3459687e9960e6d01c3ac52677a96577cfee6e122ad75b696b3c64ca780bd4b15695f4435217493f6cdbcfa6aaf687ed0a96a41f92b4788414a02ae59dcaef83800346001c326a3094169d9f67bcffa6c59e3c9b9c485ec07ac8d98af346181b6530b2a4cc95594a6ba975cccc6ce4d9aa001714e86b700c803e6a9dae2ff7bbcfdc97f987500d5f66fee533fffffb0c639013eaeefebbbbbbbbbbff67d1b7ffffffffff8792a88e3412e00628637a607d510017ae5a2f5d3774bf0d677d4de35568f8debeddddddb5bb75dfdd5eae4b6648a592a415892b75c608921aa331199b49a4d4007d1a002376048911a3121213d0c9fecf17f2d5346cd84dde30c2e0f863b5ccfcc3ccb10d0af4db77c367009a485ad191bf7647c29c9b8d57f2b43c95dafc79c8b8aa648961662c869c73ddcea17edab7852abd654103eb9c50962d42db107731994c8f59861eca73bea49571d2d50b24bca66596be8f11e047c6f94ab5ae299e62b4f14052a852e964931039399928e439eb4ac61895cc2431ce3cbad2fae97e6938e794c05aeffcff95a1a8642d1fab0500a39700080885a22896a4719c8715710f24a288865a858506e251a11c18074261f02088e118068102060000806138c41927a563e5008e05df273b3833f646e8e02eca9bd58e799d0c353bb6b8d8bc14d99b09a404816140f6239431061dc5b80fcdb3ac12e248e0599e1622516213f1ed0f612e0f191790101a93134b40e98090f7038a3b034bed22a9e69c5f751326d81741ed483624cf2793751436d48a5f5c0c17658301cce04751ea8a7c58dd7b0c6938f86f559cdce4decfbb266725195d39a6bb2a4aee7d8261650490973441ac2b2fed12fff99075af3e37de3930e2e1c26058ded2e868d5875f335b60f3c12a242a119ff52d50e359ce35292b0dc2c6fcca9bfdb0840f33886a093f23be2bc0df3342f42cb34bc1538dcc20b98e8a32234da769fd292ba2b61821a44deb0d54d7c074eb5496d2ebcb6d6bb4fe218dbecf25a24735c2ef7085da473ce658eb7049c841741772948b0e21577eb4dd3e12d0e9c1c23e28c559468601f576f30293ad5c4120a0e40850956e6b3c8a4cd5673a6895bb11e30a83eeab541efc41bfc3d2ebf60a0c77dbdd78fae2652a10bd2683a637f09185ea9c71a0b6591a6419eb57ceb385957614cf7559f5fa03069e194f956be68a8398a77083d92a0d699507d7f5572982d000125f554f4841f5cdf9f3ff9e7686c3c5e5ef07aedb2d4dc8a809a907296a2e54857358ad256c7695a2cd6f39096800cd1f4247bcd63a5c6c088d7d5c12f48967c775be2c8ee9399a26b36e17f1c2574eba4ae0ed615b0c3a47e1886076cd87c7d718a73e8a640f6a154fcd2141f9ea8aeda53c0f6c5d5d388d5a34948f03f81e71d33706063f20bfb877187c7b3f07f75c3e44e72eb5e663704d4b8021bc71fde482eb1c5452c8f38cc0b8d30c5c9794887bcf6d6f2faec1672a58ca6b0c9f62d67e5a90761688f26abb04281696283ea51b34dfc506a85dadd7fe9f1c4d12152c8d1aba2f84f23c8242391d12a4cee6d71bf1b6342d987bc7c4365a19c14ad15dca9282e67ae95d537a8cca6a25d4b04686803955bf84920dc684c3231ee8dac754af15e0cf4a5c1801940b697aa6c93b63e23421af5d4248e8910927a4bcf5a083d5edc5890425600a0631b2e4b50722f3cca2681285ffdac5897804369a67463faea8e642a465348d1df34cef59d30b388e2b53d4c66a6ac618f375841957a5f05714f392b0070153be9aa94d71f47faff13a7eb640e51d44affb9c98d066df2fa50b3e14929694be39b6106a0ca9f527075fdbbc546fead4e14385c8ef8c2809460458693c80255b22c431d1e51e004fb400d7a5bd4cbf12260a3b3094847969fb897ef6bfd546a81fde68eae185afffc84b6e4aab74986494026ea26185307e10518d17ab0fb0307817b4f233ecef0fb770cf84bc04bb97c0bc8508c7f65b0a3a924f92d4b7e0bc6f8042b42e701c9e5ba15ac3d0a752afd338f901c877388f5dd7831a0c842d4bb7aeabea373ab884b6a97047ac6cf88c337dfd749026cd16db74fdb7dcc441d2a89a724c615826aa2917318f784acf6ad6225097475cef8ca0cf156ae9c07c3acd004d6eb1e873eb69ebaafc8008e769f5183844b251faff0e6ea530aaec97e3254c28e889c291be092bc9913e406a869fbe4d88ab2b5918b9f889c367eaae5cfa046a63f15e6797506b9d467c7a1f2dfbac994e92b69209277299f9a7582e4fb65ec1075701108c03634ebc0a660f128425f8eb0124e177f32d778be118a6d3db8a4975e56cd5f590e13bd345f9b7c7959855773de4a2a5f8199ef6580192c0adc7d0fbaf31d448d6db91648b85ad3ccafae97a018bfccccfad0a83141192d55358f8d0222331c63e1842def083e7e3344b6b1b411abf928614c8ce76e7b9818fe0a3ec2a22005cea9083b396b374238b7123b9582f6d6156b5b487a6343ba96c64e8aee735226c4a7ed7f6b5eade045be7de60ad5691f0913891723522a1b4807fc18f209f387c549cbde7f7fa89646745dd71e44c3582607b2d10b28a2be8fb087ed624a8425b32aebb932b74b750b5ea7f8c2f19568bcf6c7163adc611c97bb375b4b560a5e90ab181ee60e443d405b7a10a500aa8418da6bea18e7d8e593216b5c38baa5fd9cd5b3d0c060f87d0b771fb852b72b0bea48443ea3dc191e3b9fc22c0f0430aa5fc03246ee20f4127dd60b128bbf89fcc05d8dff2f023a3a8ef629f4137a2d89fd313ad31aeb38995f5958ba0632b956f18a6c3f1ddc23b434859aa1d2253ce74abb80d96d32bc998db6220a0a59f3f1058872c174eedada4ca65bf4cd7af8082ba28317767edf705655a99725903fe0a931d8cbc5d11c4711e3dae38b73b32be1fd7e7e203030a7d2c56ee96341e5e1b41a0999bbcbdd621ecfc0f0fac713db5d7e3905156bbf7ef32a309b86d5060c13439048c7db523b6b6889f989662acad6358bb27aec0525ea9edd7cebd87889610d1fc660b14f0205ff348c6ce4357f910f6b4c3c2100da32cbbd7618eb2ad6f67c7f63e1660b43c51be5b96da2913602db3b72e6950ffaba0432880d5c14de43644be032dd77a503f668c51a538b40049d9a2c3e49bc1c43d7b60c4e4bd6a7a0b8ab196a4f8a7ac890c7e23a1c63646acae2b92759de74ab35cd08cb32fdb99dccbc438fc7808dcc020d4744f0c3468797920b083d4790c23c83605d261c3aba8e772664a9b080474e7ae0432718242ca7c49d9092d42f604d5dbc121c3e11e3afc4cb5eea0507472fc241aea5ff004d266c771812724c10fbac8dff77fae429b7def71cab495b0219bb8c828d39bfccdfdc7fadea737d378faf856c5c3eca789223ee308e06bc1ac0d1a49da983d92b0e1d3dc338827c6a69710c4cf021cffdc65915d3ed4bb8396f855edb8088ed09083df01b54847d343818e0c8cc80a23d1a6922a09fb56e03b5fbd8608723816c1d0d4b1f634551ae55f34cf48204ea19e6f039948c91560e6828a89aa0321e706093d1333ee4a6d215aeb3f652029b3d67b5224c53f3762e6425e258e667f34192c951882a137720cbdd83be5ec44af1c8e1c3f790002571239c5bb7404eb9e9ef7c3bc37bd95c2be3843acaf442459a5a600a938d7d4c253a0f3d0480536f130aca715421ffb55e05714f793a4f1edac8a7eb1e4194bab48252cfbbb23eaf99e4fb4c673c710920d03c249c08c4c9af6b1586dd82761c60bbe9a9b7276ec07f30603154893254702446c9e6223f5333323602318cba8c17ed4141fc795dc7f063fcef3bd8344fce162188305e872c9a52d459d70c310a10e4b9754518a8e7e4c13bae91ed8c29d52ed1d16159d1020507b8bbc00ebe69b3fb55c6c59115315c563783fb1e652306e59f4b3b57917b2c572075576c4bd2fc4adec07c8c60fc285e291dc1cd93b1314b7656016c9d814e9761af9731278d83d32648274b4f0762bbf776fc40f695ecfc8d17b0a3bbd777d30266d7c2ab997bbe8f57ed26f287f7a7bd7b9a9c9aff96371875506711e8bc2ff4a4e7ddb5cef0602f037de3ef05d984b511ebd287141b4ce414c45fba2a24283ea3e42eb471699347b6421b910911515a20ef93c4f47227f972516a947e910b5fc058f5442b1e787b30a3e658bc833c312d7c58d24eae78f991beb200a3f14c7a245c299fddc9b8734c297e36970e66f73b16b3dfec1920b07e7ff52297b5e6ed0dcf57aecf3f41f82d6a3e311cb6ddb5f66b07bfe5d7b724265cfe7d1d4a79ebfb4c101b613d9d61b70dd33e2d32034e6a4897cf96d3be926a58d6292dff1e3ef72dc8c4719f8ce19cc775a2f56e8a85ed9664c28332bb38c0fced70ac18865de0d53b85765e912cd42f96ee44491d35c2cd3f02d21007bc06fecef9f1a7f1571546564637508faa314ef18b5028f00d3ee1842675f0b1e9e5fbf7d5519948db66f5215d4ae2be30df52d5fbca9c18523c378c088f7c42b8529f174d973df3f01882da5bd51ed42e377f553049bd997baf2fe06ce69f50a50a7aeeea89ed03c34d598caf448b82d5597460325e64ea7433fc1ae70195865f8908a79fb0d428f548a0f5a6957dca1d7c8b641385c2d06ba4cc1c0bc9d1c02baa043120319fbcc8b18048032babfeee53d38208bd08984a4e4876375e89fb63f3475f62bb7d2a5f77ef39e7a142822829d461ff9afefa97a38a08d93608b4d78e0f2929d18679d9bd9db0d015b40d8c89156ce708b2d1e2085b04037716723ffc358863da4494224289437c25509f698c7b899e0eaf748b0cfcf6bca9802dd189aae01d3ba66877d0d4cc3678fda61520a0235b8a5bf0a0575628881ea47aa3cb817a10200a36d8384c36f9425fcd0a3ce3c17ec9c2cc2762475f99bf13f5921953656e2e2c517f6edd5268f125b0386285cf71e7871aaeb2c86c25fa2aa49315f8a9829537138bba4e8c14785414c34aac77584fc10a3d3aed61886f9e53bfca1c25532e5ca471e8a016cc20ed94505bd546ee4dcf0c097c804579229282348bd36d60fb55041577dae4dc26d8cec845bf90240861ab952ac728cf7d4d4891e9da583d6cca643062ba44bc17ec78235998a30d342cc3b02426a8794afb749f15dddbffd8eb131f321a381a00f736716a5938049165da40df0fa4aeded7fedd194d3ea14b1125bb9a393e2e0ee3825e27e576739e77e5f9c7cff5f82db6fc7b0adce47517d326427f5afb9d3352f8e5079a6e5aa3a834d629b40421940867292c6ab96d70604bdbc49d27f334819891754d2fb14780074add91ecb3290619ae9376064c24168a617036c9261eaea1750f308993aa5eaedb3018916b33e3f9fdbc598a6b22933406ffda2a12fa12bb1297dfa5ff006904d2fd40a27bc598ae3d5acbcbf6923ea8e4b6326c9b2fd991a9ba8d206c96d73e9beb205783a1be14e59cc37a90748a9e1bfcd8e31eb0d4714e69e89ca48f0cc89160a6318f205ef4a9a88e4569f331e44a3880f21de91305a32ada59a0f3083e037f999c6c4960a9e884d2e8a53bfc8c80026eda03ecdc95df494099ab44ed6079b3585596a73eeb846d323c76e3a298eb33f464d8fba481bda68699a8c3671f21ea0e9ded4e878d0a545ef3fe321682d88ccaff6ab276c98c543672bc48b462bdd3efae0ee5c9d89285457624c139cb328674b3f6356ab2cd42f6d62301a052b632b432cc564faf7bd9472220d228811f540417563b994bbf858b987cfb0251815aaf7c7e8aabc6a9cc9e91f8cf29a17e74e025f2189e086f1c325a0d0a68f6f4f727d0686ccbb72c80263a61c3952aa116f7f05bb87b4eff9eb90e8190afe7a77527e2e2644f8ef36d8d5588a7569f115a26c8b765f834b5ab256916d97ed1479c6490594ae351b8d2af22c1968df3145b5a513193a99729a8b00a8bc2e2eb662e43cd1f74b6cb90ce30ef8993b58c78adddca75f204ef24ce08a149e4a3eda6706b13ea6c5be9ba4bba16545383ab3114519df8f6f1c6fa516a72d2676bb7bb0f879412d3cd76b34a3a27a9be70616fc5c8d21dfa54ca0cd1433a8381a484c0da8fa8819b2a9248add1cffc0fa4ce5dd3f57fdb4e0a140a1214e5216229f2f46a3906169912e0f0b0a31d36d736ca45367a601af68b059b497c2020bda10afa26b6160cebe6d5e898cecf24b02c2fa1e6d91c46dcc1088e9da54b2372b7bcac726ce12c7a0aa77dbbed347dbb81d01cfadd2697714cae36e4c0c863ae4276125d807bcb47df0f781110aa6c59cc8f65e078013df44aa7cdc61377d9f60299af57dc563e600fa69e54ce4004b4878cd334f4a67cb96f1356e3431caeefc048d7451fb686c5b945a3c1da0c7c909085f6905437cd1afe8571ad0c3ff77cb574c078a80eecce54ea73f633330d96f2a20266ace7e6060326af24a5f9136ffa2a602c626b79ad87ed09961a48938ab4a13ab5748178e2a8d998c79754e7f6c0e37362797d704226cfa790c539f4630197979f5075cd9fe7c62212d4af2b965232b049a3b6b748304ec6dc160f9a5184a46f7c42a5c08a26d0db0dc50a301c6b690cd8451905ed63c9681fcc2fe40094735e53af0cb839c05b60ccba43deda1d5cacb01ffa32863ea1ff063c7ee7dc84b2e36659f5997222d8576688c69ed5a57a9ef688d18bc8d21c2236f7e5d91867e9e22e8072669f60206ad47b739dc339641441967702df71f83c099a18f75d6823f91be33f3a1126f35dcc2f544f4046c840606936a2f7e772546abfb7d0c1a4bd48b82a027e835256ee5b6ff1c88ef90edce3d8a49f7332e3d2904620143f67d9e2e3f0fd2b89c39739ecab01d8ca60888280625f43709dd4e1cb8839e2cee1e50d2fa3d8f41a283035a9bc96a454cf8605378ce17e389c909c3a40276943a123a022e764280477e9485632ae04044f76ca3e5c7d176ba0e0d8daa83cbe87ac9d17fc0ebd930feb3c3c2d97d457801c2858e278064039a6c5a166a0945fec13f4250792f0372ff903fc0138e983c48946505a066f62cc0578ac9f1006416d97667a42d22874a78a2f1e2ef50abbe7a0b8724014a0d984a0833274ce4f16c3911fd75bdffdcb710eac1de493fae47b75113b95e1a79d0745fa05ff869ba91a13fb70b773a91427d9812b2008e930ce097185d7602041f7dbd90ce930a8e46cef9bf2001296641f8c37119baf4cf6581dab0d7d4f9a3ba152b793aff03557b9cbf81930e4ea93867ec5f57e19bf2a7c5328dcba495bb27c174d29d1e008836213fd62da4c0ac88e05d3aa197af56a6c629bc7064e3e4a90aa242717e65271709ac5fb4178149c817119321948d32e5e95f2b51483277e95a8d010c6648226c172b86b4e835a100cba59797a890c8d5cf9e67bb9032dabe6f7a5ff6143610acf401110ac0f49b35c441f7ee599919328abee175bbca67e2f0a3da21ec34913beb3c05e1b1f850185a787bf53af31d2b1de14b00bc48be20643057ecc4092682e03ddaf3600323f1caf30135ec33a0d0d7649413aae766f665cdaa58efa8e76571f559aea2c542880013532597aa1523bc9c160d4b1529f38a021ee15118f12f118f0a6cd4c9e17207ade63bde69a71c05825fbe1619bb0345a50d5fcb8380cb287cc1856cdb916d49f70e9134cc16de82f65c6ba832f370a30a192907b2afbf9922237039101317716dcfe50e1cb4cabd95a98507a21a87aa0cbf54cce3e09ce605521a18a8b640d04154838f6a1d72a9559c0f403619a748d27a393353bf0d3e298d0817eb866aeeb05066470b15026eb58ba9742d26832e251b981c8dbf4225b13afdda96553058bf4ba556567b8ea5c1c4a1d5c5042fed48974937c3167061c1a44625aaaba6cf5ae362daa7eb20146556bcf6271c0e0063b84561604a5bc5df4c92634a40eebbec9f5681aba30f2a6214d944d5149da15eea1b0450a397022efe7f524e7f73ee1b90d8cc43a5488fbef8561578049e92b871ef4fc6cdd369e79853d427dda7fac6c7240941ba7791700fda3ac088dc62fc074a1a5194e82d337ac09859c532ebd8e38ad79af258db0d22ad589af1545f603aa560a708340adc374cc065162a1ea9da2bb61d53e9ab38b82e88e8c1d91f8fc36c40c234169177145d93670cb78c8ed7881931c5df03b8b1337cbff5baca5c1df77bb105e6dfa892ad8f48d123d2c384e07a8d265ca9ddf18564590d533738d82e855b66a922ddc9a260be730aa1b45bdf775fee1a773c8b27599ac5169e9f1b5cae966ae1ace4d405025660799bffda0f6da073a9e7527fa224aa1d84579dd7f91e3bb89a3fe5e4b927aa5f7fb76179312b1626a66523cd75ca0ac1a2816045b96f4d6ab728c6534e8a052b40788510155a2b601c895839f5072b71568c44437326aa3895f43ac2a55a33d103e72273938d2ad0fd1a088a57a491afe0987c7c0c1fb4655f9adb810a4a063944e36e88a32e2de18654fed20c85b3a8fa863c9b9fe535280d46d3b050d8ff59c17bbff75ef245442deadf8c8d99e1cef1c31de8982cc5157da1e358f3854c75c9c49d63afb2b4299af538d6b6a6cd7b74220e117d5f7235f76e4841d5ff8d051c5c9431fa1155201846db761ed5a889c79bdb5b869453c5af7ac8a14e0e292a2383e55be23f3b059922e1367172017ddb580b11aa3dfda273b934ca4eab7cdbd7886dbfcf1ada5f805db04ec32f3dd8a18bbf9c2f2c22a113381b97de462b214b125c5a5be2fa9318b895e005c3490a6fa327c88dcd4fc46d370358e0ee94cf9ae70038828193bd74d69a79951fbc2eb6c0e1a529983bca5c7f3caef74810ac935023fa4652379173242db2ab8ed96a56cbeb7b819818b1486a0e439885116e5e4ee5139d3663bb10c72673bac30d714e79e6a6e6a6e675d300cf73090413a546c814d0a0fa816604e3a7cd962d139d8666746acb2a358b7ec74fa93e73db96474df7eaf0c13a99fa8b9a6d97852d7cf2ba4d137ec10d5b928b26745898b5e0b195b71313d5a266be9be0eaf506a7b8d8559e70c32a5e36d77219d4119f87b27336f4980d60689f1da5632acb945ed07571b8eaabc8ce3f4908b54343ba795a6605acdf1406770f7d2c2991ebddc429c749436599d4b25c74b04238523911a9131d615457277b1477b6ba124a0822ee22ee8ce232466b2379528e542064405fe50ae0fb180073eedbe262586d6108fda2c65466f11f4091b46d5eabadae4d43908cb9cddcb1dec6985c9e252fd063738cdd16234e3190f691c1b76e891d56ba6b48359ed34cd2a88644ec8ae83007abe159cde5bfa48c03911f449754545f7029bd75aa9361595fc096d987a4fdf4e75e9275be50c33e53b9bd6725e5394f5d8182ac1f3e15b43a4aab71e01fe5330eb94cbae27ba7aadd1197276968413406b5a8d4df2a3a4cfc38ea4c56b01392fee112c6bbcf4c6f02feeab284bdeda04a8ec05b3d215bb2f74bacd2e4e77d8f7dfd55aa3f18048670218040eae0dfe60a32f84afd07a9d120b3a8d9dda6cadec04dd2514612fdfa996f1a2ed35b255b97726b06a91250129107071c3f580952090a56c56edddd1ed453863c9bfc9d1d5b860c291fce4d3f1fdb415042d79dcac983871d27fbb43b5799d42251238404e886f60a3c1eb577b23fc16f2e1dad652cc62dd99afd0026f3f3f845449123ec7d3ba136e5341daf2a84c0cee54c2157c992276f28c47cbcfa742df6672e942eecd3d1fbf6b3f960d6bf56407209bdd13b86628fbd2e67d682d32565c0534b3b9cea6b8f1637500d82d3721ae9d65f63f58cab8e6eef31b2ec440954353b74a6a2065beed36c4ffca9f4fcd3aff920253e3567497622f3c5af74270801d050ab7c362ff5b810874f1758b713ebadbb1c0ef28efd6e79d2a657ea056f8fa2f8c3638a4ea0370cc6a5c287817c018be785e56a51e50789e66489efae83ad2aaecf1241d9ac1038956d932451d3159d904ac2e27507e1915e1066d98f2724c2cc1b12bb6419000b82f828bc270cff1a003acd8927e9c50baf3e20873e8cf7eccb6d8452acfdcf05f5a6103f15404ad44a2c24f60bfa82a700f304680023bdbc2f6221c5a032ce7faae33e629ad1c1af861f6a40007c25921b90ee2cfb90c6a45fef1a5123e44c392a957d86ef0ce83c26cba305525ff8751e4676e79531910f48e4dd7ef161533e0c52861f79f6af4172991ebfa07e0ca9f7b1e6ee31a68ca79c0b00114ae0881df3175da749469b067329976c414892e96b5d4e2627c9335d0eae6d4a6b15b8ae05b3db6ebab290699d3d3d957e21646bacaeed188f0abbaf4555bf4cf117302650c3b5112bf265cb0e5c757d94bcf27fabc7d119ab45fe9c39f7e527e67bad9cf0142415c19979f1b064398f5dae072d196a08ec63c66496c9515e5f25cd1171952d9ab419fc826f7b988d3044bf484bce5e45706c94c101bebe19890c8525c5edcb10956629edd045f58de952edc2c7506aff8f79a150fa80abc0885a07a09a9ab4c94a6190e1c994f9f9377385e999b7327c701dea10b43bb9585c68d040cf0c8d183650a2a13ae466112a9499544205521be6766d14631cda6545a8cad9066c1de9250f39cda8baeb96708bf1564e21e424d78b7c65bc3d9c56cc8f7b73c885935c9b67538d2e3c1ab4e4058c9d44c96177cf9805bfce94c3620d4485bf2da59f4436a8623e8cf5887b9958963e33a95bb8822eca56e37c1804f6be7d62a8eb121a0d877ca6767c9f07c471ab6d88aa9787aa57a20864b189100861d83be34143d917d07adec670d8746f550ea8f7157b6253908ec85784b90db57cbde9f5300f753fec2943fc6366d3a25d39cba1316fb45e31a7d748d71c965f0d3898121b465daff34cd0356e5a1da79b26d51514267a18bac77204995a32afd14e243871851327489462dce910896dce40cc50fd79e28cd1a605d8422b8568059e10a56c9c57338f0916368e9315f1aaf01b27d11838d10635a913179b59901d2f430400f482c2e9fa4bc8446340644a2fe518029b4166196c81aeacddc63eb7685a21bf4542ad363a27d2a2835cbc40288ecec7a3c5dc011fcc4dbb470d046bb1beeddc3451c98223414fb291a526750d7f05d6be9958fb028b37801a41eb2fcc0ee1100d2f6eea1a72fb7fe5e3e226f93910f288f89cc0f8ede33e416bf690800d767f20a5f92e7272ad69bd25958dbbd33999f3d49a980967ced7643234a4e414bed1140609ffd6f127c073aab442ae3c61d8e987650ad6beef4ecc03179d4e90509de6e8f3133a4aa4644291aa9b2d4c54f025475ab91e139ab834935c364d4c3b2ea67f12915c69a42b0021fe3b1070d680375edaf21140b3f4d3645753b1cd863f87536b85a8352d0df0d9f9818daee36a6969532dceffd144960e189fc6c59324a9ac7288f854fca9eb46602a72f69870399346e9fe3f5c8e6d8fa8ecb5e5edbbad367c6b4f216c57f6329e59d8c2cde447453125e197b91d3da21e8bdcc2e8b1a67f1dd643a94ed08e81a81f137127cfa290e3250667349f85624d283e32198548b63b6edcd008cd2c11defe600010b4d08ba7ab316956c3a578a3c5b490343a13e284b5cd3ac1e0e0c720aafab39514985df2ac1619214e354c5e2c209f8e9da5e79181e0838d1f17239a8b4f72d984bbfa3e81daf0cb925c17bdf34711c6bee6f03afa38c6e9a19111bc761f688b6fe3fee93e27f0be140149e0a4665514839699e64a608d6d8c45288b279679110ee44319735a40b06416f6ba4a3c893bcfd8b980a4ba00708ce328de20076d2123a14ad94be5563e7b5c9c6c8d247c4835adcc073d9fb9ba54d3037a611abc540c7932242c49a2426debfcbe5afc652b0c6a7ba6b6216f981c21090983717d62548a06a298adb0105b074d94c465d1164aca9279d0a8467261b64565933a7cf1df77a6af02cbb2526c33862ca179ee325e26245cb188eaecca8e13672c1402a96a3120a131a4c7ea1769bf1bbcdc141ff1aa06259be5e1c6baddaf379ab9792f2856379334479212f26a372a0269638841c3765690b91bc933de02f905588653c28aaccc1b4028fab9a06ffc1a91cd822f9bfe03091079581dea6199ec4ff7097edf6e2c293ec443f1f073acc796386921519fd2222333f59f5bb405a1a2af83d8db4607f40e3e28edc37f5760937989c5558076d0e470453d47c0374adbb55c7f0b5014611aa06203da67a9dc7f0bf95c34591e1eb9211b185825c1972d30589da183d20d6a189663cb78636cd5a7d50103114a58d09dbb38c82ceb74c9ccd21473e3b4e314dd39bc6fedbe1538c813d5834e8763aab7025bdaa533b8ce9465c70b576d97077fc912488859d620ee1b1cfd5ed06c47491a61f9ec1b2ff699fbc650c02ab8c7a12151317f19c2f6364ea4f23c62c628c1ce7887e61b3182cc9c111ea930e6e2a6d8e274a11bf62efb27f8f380c52271ef8505d2962e0fe6cf6dc48371e4903dd1e01c77993fb3f10bb438c7764a1af310a8a78b6b7ef3cce53344dab99b42bb22e94b49e5d4b780a20d23f4200e13b0ec3b51a57f74a8c1bd906ea1186c751fa38456d86f6af7b5b6c9eb240c68c94b52e21a2fb7425bcad395629e014f9026303c926e038413dd3941900f2767cd2ba6bc10269b7fcaa4a8d82765aec84017ec69dafd03127a80ef31234c66ae32caf4a31c63e35e6aaf367ac86788553f3d033dbb70b19c4ce045aea6aedbf3fda1db4d46a37a782d34615e14e5f30e53b628a6d3e04e30aeddd50c5d0a97f5d7e6f8fa88bced97356dcbcc328953e01698afa33beded8d8339adcf2b46940774da3eecbf859353d14fb96982bf9475460075ecf1ea5e260665965fab2b1c1bf495096494a5777439b656af3e7872f43e33bd69c5ae743f77ce46b78aa3b1f72dfa02b7594bd16a28aa4fb55ace642968e531b7f1bbad0528cb5db1edd6051abf019c8a8343f7844e9d461fc362960e66654089b756de6f45cba4658001bbb2070ac9063bd79054a70e9a9d48ac794f85af8a2e27a42c768152a0822cc2b20b9a4a5abfa297d374164bbd2cc4dbce01327a3d3ca75973e589b34bf24c7e975b1a5dee54f1315700ecb9035ee828fcd8f696031ed1b26963efc58ab904e0bb92bd66a08a6627fa5bffb305a44fc808ea98d6fde8fa4c38eec387aea636854883edaac40b789ece921c6e5d4167e9047e84826e81826dbf3229db0c486585f3f90be910306c47f9e5d0a51c2e0f326ed794fd69331f058de14f40363197a3c2e4d24f2858096e758f1418f40e3c258b964e5902069ab1acada7e9196d751fe6575923379a03c2296b20a621bde42a6a3203e5d29e9f52b8875a23ab1845d07afd350113b7381043250681805bbcfcc4004518d608a9906acbe31fa0a2bf8d63c5c07db2ed042d046220625ce2f7a847fb138942516cbcd8bb20d4999dfa92b74812ed18d9ba106b72dfa52f9c4de0b3b050120058100362868633a615a0de4132ac6e219a893ab233de1e1a3a628b76100d114087868b6ce673fc67805bd848e64110e2e269b48d677e1ffc43c3faad8845fc9e8be456fa1ef539c776aed815bf451d42cf9512b18ee0b6ad89840f405a80cbca3995dcf9a9fcefa35d587a6e72f37a95db1a5a16cd60085ea1c6928e4aef8bddd90282ec16c3dec32f1c931aa4cfe065db71ddcf7eaf08069f4a27c2378cab5fd4bb6081ccf3a5ec3a166e8e5ccf52d8ca1160b8e5fed215e74ea95c32d9e98c6285249f826a7adf35a20ca2355162fbfd1cf5fc229c6099e84371411dd7d0f6270a2bbb5ca88290766aa7dad4f85e737df7cd37e772c9eb82bf78a7bb5e55571ed45b9eb8d2e880a7d13daa3bae56c0b4d63c7a6920f58c13a62ae238e10688a8b96be70a578fe904fd5dd9c57e906ab25c458e193113e70665bf7d4bd57cbf8193a5fb6425ce95d1ddb8e9bf267fa927a6aaa370aaab2bb253db265057bb5ec1f4d563b37c8413ad16833c2e2642abea59211f87f1a6a3822bdcb6d9321577bc995b045aa90ba9539074d245437a5a1fc355f8bf856f131c0e6230af4b688745552fc4b06d42fcdfc0a3ad3afaa77128a7b44514edc7aa65dbcc344e15425c16952e2ebc2eb9e9b47751c813b7959b6ae3818190b10a47847d81ad0b4b1499f0a3ebaf7a6861858d24084fef15e1296ed70da4d198d58c0cd663eace99b67be3ab3b8f408a5b91d5c6801dfc9a88360ae112743d107816a4da0959eac015c9dbe66101421f6e550af5770ec3d806300dafed216ade5b12f71ef93c3f73e13fcd4919f2e40a692033e388f871c4da54014378506c4ba52a22623e0b092c25f18ddad2474197ab82a2bdd25a53cb36cd4eb137ed62733cbd78844ec62be0ba950e9716de02c0727cc2eae0cd715d61373a4a5e444ded2fb245886f7436ffffe502afef79c23c006036bd8749e12f98b26951be333d0c8b2f0db6a61414e3dedb08da077531924a47042c4d068a11017a26f6317443c3bba8acdf48fc8f365812e785f30ee5aa1a85815732a9bc185ef913b6cff16d975dc0c384c759930b71e32434cd475af81eab2c904949686590f9f1a9eb36af8309a394c8aac700d6c727d55279d9edbaff930e254848ce1b7731793e1eeedbb7a894991bf9e30d4338d89c7a0e39f849200e7b80bacf881bbf1148f61bd2e748e27c8e460e4cf32021e7065a3ca2d4100ffbbe902e63937b4bf87c99c081d1cf378143b247a08e729d85f9c61c7e4697dd7c1d409881e4de7b04a7139909e9ebb85944dc2352666411a46df99d54fd0da62b52824581db88d9dadfa6b2fd6e075af19c84c475732f94de07fd28e71499f494d0c5e9bc457c0a6424ba42a8dac5f39594443c7d742710dc3d50d1cc9b4ab84b21eca60ddf524e60cb7755cbb1f9d90515f69eee34c5475c678c73c49620ccce382e65bad2f6b628f15812b4990536a2baa5d1fd5119606c79ca9ae4b26cff0deab1ca973cc0dcb239e4cd28d1fa3e921dc23eaa772d0b0496627874a5d953e20a4a9961a45891f73781a03f7da5efd0a821c2c99c3eb5dd4e668ae7d434359d8da6baca7bfceaeaab2b6fb86c4044f75493a5141f762d5da102f0451d5714fa693d9dbff8c00b168d9ec0b35cc3c379e7032cfabbcc08605aca0d971dedafa36d47822613aff7923f28d231840e2cf1898c938a540135436e3ccceb68472a249868004e6dbb004d60ccf8606749599f5759244986695dff521c2b4e7140ce57f8bc58fb7bd4cfc0d2723ae6fdea1458f2d709c1cbb052189c1d50d44e0d066dd015b55bc25249785dacfc6c729623c860bef4bf4d902f8e33b64c79e3af3cded60086d880e8236812e7841411d2d149d239f457bfb4c51c99ef452ff5c0c3d9a3e2a3aeb57600d489fdf9e07d864a52897a4097fcbf568de3262257b655054e0fe89ace52e9daaf3fc6dd7c0be58ddeecec60817a64265d330ac2541d9c774a977451c839c0663362648bdf2b0f06d150bd67c57fb0a4da6159577ac6e6918d2d9c8ed5c39882210db679ff23f3782595a8b96686857c3f3efb874a3e58d21c294c905baea283ceee39b68ecfa23f77df1e1c967afd53640c9d3ecc9313129ed318ab3b2f11367a37b56c99178fc8ec84a49295436359d9322581fe4a606fe0ad2f32400b017d023361aa189644a726699f502cc0658ae8140d7c0aaee8f784e0aeb32009efec474574387d0e621f937e3b3e8dcdde9ec7046dfb181492f6f1e52910e19b2b74326f7204d74f1dea2142ccbb42831bd041745395f6a572112e79d540baa5b20324b219b76c5cfcc75db8584904cefeacc72cc378ef4c47d6f1149991e9e943c04bfc97ddf36838c5e93f66f2710d1ee3c8f8611017f9b3f8c897cdffc3f7809ab14c7cedec11071b66e080fc7902821ab63772abd8b4996b5d4b42a6a051987aeb64ff16c07d71a88fbf48d26a75ae41a61d16dfa809accd6cbe0916eae2f653e2ec89825750e75b9af92b81fdbd7fd8cbfbbef07863d1bf47918948ba87950b99b1ee3cf230c7ca519ae9bc3035dc1250c86990359ca001ff5a20434153b487e4425d436ac9f77a969462f97c3532972d850c6f012495fe3aff4cfe6bba3266235f2eb1e63baa469486b77e54e1b6a21e9fb35c21a53f032e89c64c6e2db1ff0804450c8e02ea703d4557705aadd2010961a51782a36234e085445a8a68095848d336c06625415e0ae240dc236087c77f202686a516951b9f907e59608245183140d768b02bc023e4bf78347f8c42d0002d8c16d12684c8bda59452ca94a44c29ed930406041a044f06e49de9f4bc8d0467d445d92c23467ca9ec5c039ecbf20a86b302f56d740f5648725fad0f55236b3ff51dbf37e863d2286ed984715a4b9a56b55b6dac1448eb376a206f97c460721ee96432c29b0a0f83d1c92982c9e99c81340ad614ebb7bb1b38721f6547f8b67e840cc48b2b20ff547400dd6b79ce9154001085de997102cdcd8c132e33342933332314aba1b651ed29ffb657ad6afb405088a2421715aafcea0c7d28f55a25a19cf0ebabed6b7b85b0fbb9e6dc65188451ddec0b31b691f33277d7a871d3fe5b753ab12b5c81450f8c975bf582176c68d505ad56b5a1912c8083016ab17681b8cb25791c1c93090a28beb527b9f82be25c984c2095ab2c7a884e740fb1756bbcad7af20c128896733e7c8c8f450f6d9f8bb082ad351999f435044250c007676db4960a624c81444d8b236876638a14502c4070312046921cc12e02546e10f06af776ecd731ee831b2b8c91b18decbdb77ebbefbd776baa36eb6e345a6d679188527721769bed45b94fa0796d241bea071a48ab473401a8a0985427ca7219e366dd24a6041e8b31469df8fff7da7cb27be5761ff331355982b8922455d173773fa3049c7743ec20d7a560aac1e1c20dcdc9155df9c6396a230b34cdc2d531d71a7fb433021448742e6d0321a8fe559b862ed73736204de4f4412405b44ddb9a6e35cb34ce850c4c8b1f026df50309ba2235cd22aba3cdb2d105ca6c600c416addda7b73ce9fe882cb0c14529e69b52cab564fa9455f0b888b8f855247722ab3024f0731ac1fbd163772967f35ad6791a7c6bf1635add28d141b1b293644deda4dbf6f6cd4d62c285488903101b192f08122c6440837a00109aa2073041754ce50838343e7003050e900a543e97480e21141193149314159492111e1119192e6606a6852545252464646484652545048525858605a6c66e4bca0acb8d0c8599ddd599eedb9a961738a81a9a1212121b1418dca5c8171599115599115599235a995e584553872f0f868516159c1e287162f76068a099f98704a7b7b6e1bf4deca27954f18854f6a2d550f16949697971a1aa798ed91e1ed61111e61122ec1c9d9599badb128288be24a2fd465e24096814dae288aa49923dcccc4e07030668e67db92c3303166d64853d594883089b5b5da3a15104d271c1d5e5e9765599619ededb96dd0613fa7be5930d6b22debc25e7663460b012629f150d302c705d503e32484495e9c686005c4db0a5b9111192525437c10317ea797c476978d429ae869a2a708233e6ca94480d21628a522d1be98cc1a28303128a19b9b1a11c7e20e71a9b841543972c8814b392cf1216345880682f8d8e1e3835d1763ec837d50fa21f298101303862f44d10ab9bb8cb9e6172e7e58168ce2288391feae8ec95eee6566e6eed19e808d34d7b62dc6c0d078d1d9e16159c3a6696478f4a356bfbe4947c7a4d3a7c6691333812c0464ba46de344dcf1aee2d2303f27a67023c3e59b4ceeb0004c7988d94b009a3700aabf08a572d65c7853507c4f50bfb910dfd02d22f2ce21c89459aa5472dedf28224c76407c5c59ea06790308387a6b40c7cc1602d9a9140646387a457faa4535a253a18f2e2e107919e9d1c1213141566f17f1fbd78e1828984c210134305b265e59c5b25694ee7669bba4653a1ade04846b074e6c25ad80e580fdab42d3dab4393b585c1fa465d4215c07b56d0020669de2a64aac65dc7398f8781e70280c7e2d9cdd1095dd7752dafce5ebba1ddd5b9aed05e57ffe0afd0758542d715baaeeb0aedffffb55768bbb5d0755da1eb72d7755d0e8642d7d7b4d07585aeebbaaeddddddd075b5ffd0eef6b5bbbb57e85ae842d72561e8bab6f5b52e14da6fa1d0755dbbbb1b0a5dd7f5d45da2176b8a31e2bcf8288d2fe21029fd7a83136f6e663e31f3c99efc85685482238f8f7fa4ba31ba814791f99f9f9f9f99f9ff99fff9f9bfe2e76ede13f7f793f0c8bfed810d7b58e44249e19a431344925e5ccd97cd326240a8135fac6961c7868f52bad6dc9079d5c95f4d7e1eade973f0f017722bcb92d5acd2a2f553af597d46a59514140e5e14e7e08dc7d18cf87061592915c19827c3e0074930040411cd2f368a3d6d149e420bdf2af76b8c95b66bb7c62ab38eeaadc36dc78049e795f2e78c7dd6fdcadda9d37c8f87dc5a74dff67da7dca157f8f1ccefa9f5943257dad8d9bf7b389cf5fd63fefe1bb6f1d27b9e0fe1d71a266da369dbbc5906f34fa74a1fcefebeb2401ed6c7f2fa5e2d67671f953efeac7267ad2ad24e2967ad6a8c2a5e3b91ab802223aaab7045b028eaa864873f7c07ddc1dae1e1fe491dab83570b2a41c7e470838aaba16b93f750dc73a2da1a1c3df7dca39ceb24deb617c06f3e75b3ed7e6cea245e774cbf5e6ac13ea9a1fa9130dc8e3410847befdfbf7fdff3bd7f2fc57c1a6a48b1f1356ccc8dd047ce4fb1310a99f3717805ba9cebfe3e71b3bb5fbf179ef17a7b763fd7ddaf5b7a55422c9fba2f22b1bb7d5c02fda1850baf9a7737d0efb549a3f4ee74b336a8eafa40a4fa9ca3d4f56ef5fd75b7db643e944de20b44a2b2d146e5ace4a4d43598ee669e8781dcc3a3f2e2c262044b37b5480fcc4d8d4c114cd2f7a2e268cb731afd8aa09848caab8beec5274f206f727d025f27b1269509ce118954d475e1178679252e5dd563a96bec5253309c53fdce68aecd735d38084c63720e571e9451e7fec24b1ecd30f02deaa8a3d4a216b7acb39b693474a61a8e6d60b30d07816db8c5533722adb33bddf3830c75e6985906aecb4b330c6c6ea63199b7ba7794997b365b2350e56ed28368289b7feaaaba7156d6ab26b5666555af75457aa6edd1d99dd6e2e6b90e93f4b0c887e014c16455bd7a258251353a714fa1d1e2bcd253d32bd91112c176c6ba48a6c141a04c2a9e3801f16af1db9cdea7407bd55bf506617decbfb9797b759585587e9561776bd2aabc0a4849a746a55adc8a6379979926b8cc3001a6f95df5ffae7a35a6acb1325333f25adca84fe2a85178d429ffcebd7bf7eefb9d7be75cf3bf73cfefb89f5de5200e0447bc12c2e11decca8e5dbb1aa6711bdbc17d312f266db261ea24faa4634c1b2bbad614221a448d86a52940f557feff87c06d4cb907992384fa9c4cba4b0573acc88a5453ba3ee924427cfdc07dee9c2c46c69cb3185dca38639c736e8c347c6753e2539550822d6091a856e9371596d2287cb22624cf4aa87f365f8e2aae6eb2a3a69b35ce189188f2fffd235be951fe2f459b85c3934a90a05609080402bdb4cfa731f1b2385cf26062f7f783d3406df70504a240ed43bd7c16a751205a3ff2f31658197a252eab7a3852225465a8d230998e61181ad48c97592dd07cd91662b27d944ad505dbe5a4731ff62949687d4a203661831f0b32f656d5da7e2c8b72bb28ad6dd7ff198310528a4208ab10acbc86e68a54f84b054521e6baaeeb0a49500bd0755dd715f20ffff818f2fea1a3392ba8ba677d5a01319c647ad0823818ad5a7d2a0fcfa73958553f46b5141d0e6e03354261f79759d5aad82f68d75aeba4dadd13635bb18d624fd5c92f634c2a016a17f8d4d0ff6cd678d84eeb70cee2984ea753e51e3740b993fc03e343b9922ce61a25cf2749c724896e6374ce2870bc7a3e83d87acd2571e0f2ea3cd45c7e68d6911dc838a78c50a4a29ea2a02c90b1856c870f291963c62d5947474fc860c9fa98f4c38339c63a3a9c04363c333634935987737098e54946c1cd326250aa432973ac5545a945717827ab4b2dd2566ced5c2a12516bbf2632b7c6dd5a6bdd9ce2ddc65837538e31f6488c356bf5df2f269e2839d9a83c91c2dcbbb764b5e4bbe68fa4aa924b5a7e24933256c8544a593f545a57c8222d4846f846da25293f16e2338934bdd491a7d9cead9084fe9b2bf925fdb684c92858a59f704265a62667e60926334ee0384531e5cd3258654bf952ee013d58650d1f777474b4bc4b045b6bbff0c187ef91609491c1c947f5d2785b7203470e8ed42aa8fafbfbaf0975ff77ff9fafa9dd12a6dbebc22dbb2b1052ee5d592456f0c0030c4553a1409da4f3c966198b122945c26b0269dc92aa7a557defb1f996a4d21af7bdaa5a95d2c4ac00ad3082e5cdac7945c0b08ff7a445624b1689d27502c3f5865e122ee113271289b8be735f622d940ec3545bfdffffff77ee6498dfafd844f469410cc182dd219fb0940e0a79c83fcccc92412c4bbbbe6cb23fdaffed9dc12ebb2ffff79f5998855b64c4f8df101bca6e456666e614c8cc2425904f18329bcc8f8b382ed9a44fc9259f11333ab2464c227aa5255595ac6455b98ae462c8287123be2c6bb227bbb229a5364b212cbab98c33258944222661136601a563ad0d5778cff90e33f73876aefeaab8ed27b03f4bf5dddd96759dc79f457e47e73c30b855555d8b47208fb8c4fffdfdfd7dffbdb2f748761effb8ac1f2979e5c8238933bbf338cbef4f61947f13976cf27fd25490a103f2fca4c64fa0b46a9601e18f4ce93bec3d503e4825f3c80a04d50018f251f6ba15493e7b187cc7aa46ae03631b2097aae10106b0010d7ab0c4123ff0418b8b0d0fd8848a2a74e6cc4d261d16892038397587077e658c2d57bdbd619e011f0936e6a2050b282783cd9b376fbeddaa6f6d26ade941c7626d9fd1463771590c7003562363d2a3050c561d8e005b6dcde4b1c3c78a5d196119a0424ca0831042d832b520bd40550821ac8e9220f495393540d901cc124bfcc0074aa050ef53c3f676880e547081a971335e686cccca68a09f56d45acb5a965e5e92c8426ea822678031505807e01c13b4569188b16dcc5d063083d257db8e8ca6dbb89f2336860170d0f535dcc05a014446bbaac31276d6a5ab73948a44b59d73441ca01412c410ce39e75c75e1ea0be716e02825c824761766f706a47b85e8f5ea2660ecd9b1faffcfb63eff336bd4dc603028000d12900307048052c0ba80f2c0110c67494089410725e8bb7ff7b5594dd765ff55046f62fc275928a9698282a19a80c013a1096e624ffb3e358c7038c0877bdaba1f40c17c7c944a1cb58a4494f68ae52318e6a315e1ff233de88373fcdfeeacb5c698773fb38b46783dcc57bd30477b6f08e98e72db48886d9931c748011f2013e26863ac2a209ce70c3436c8afd2861bbeda30a50c078cb175fff0ee03c70822d7307992277728a3bff82299449a48dbb233e0732f2fca821451198524c9531628e6b8e6715b0fb6ce9631e6a3ca97a8631170917ad71b2f8b38de5837569bbb3fe93b7cec7b2f7e9e359b65c490140cdc8595ee4529db700a7a17fd38284a41080bf4aaa5e206af39943c28b516c229ab58820e4227a114987f40176bc8283c189d9311c20e482a3dc7aaeb70672cb41309ed29273beba4ee1f9d7370d6dff37f168d24ffda9f4a2be9aadbe618a58e03b96a59428080d87a59a06afae7adddef10a87eea5bd75b137da32a7a4c63f97cad3e5696d8f24203a66535277534d3a6c6db29bd563b4952ae7334669e6861ed6a8382398e8b53a02ec61bba26f774766779dc6b7c2479728ec4d422274792a6672e99f3fa1e89e4985777caa622344a29a59f6735ab9b524a69c8fbbc5659d0ae914a00e4dc76602710a2ced10e904c676dab16d6e931d6aabdafe8d6a01b6d5519438c0265495de4a467ee2de6c1aa8e7f2f31563da813d5316595a3aae1c30aba0aa79c93397a3dd992659c2d683d8ca77758679955ddab55db7e42d7860cb9d045af8d778942f439930f5b83ccb5f6ec51cbb22c8b4f8cf36444611c940f285443f13d8ac53896c5278bb1c03828960846595ff4e8acb6d37935ab5c575730ad9e4e19e18fe4ffbfface51ea9c247ab286661cc6024c0bcd2036168c875ec13bec47b7a41ad7d65a7e7bcbf6b987d5d86cce6ee7b3f57a5027d9d11a9bad79946677f5a04eadbbedba1cad57192b6b8fe373f8dc53248f8e11c48d6668adb1b09556e19445f9d4a53e7dd26aa8221a52545ae1c664afc1abc8d1307dc343e235e293284441d637485f8d70bec6269fdabefd0dd73636363636daa44fea15026d9f74cc0adff6ece3ad6d789f6c6c9802a031a884ed9ebb84022386001412880563691e4749ce29e37c84828c479dc8e6f3485416a439866220630c320438304000600608a3410201e67e35552f6aaa177dea9366af8c4d40ef63e9a5e637e975a9fd1b55af548f737ac5e255652df571901b7a4b46deb38b0f5613dd870018a59b374cf1f18fe5fc0c1f0cb3f7b829f581de5ce4b69eeaa5c8b292f521e0a5bf69a0f6b0786c2f923b451682177f644b9c717eabf0dcd1e6f23167d9b482722f6ea0226cc236db7f19bfd94d381e0ea7bc53c46c364bbc1ca411d31cf40b6c33d6e139768f42c887803de4088e437b03581d1390d327f79cfe6c13e36d1712794d950856fa44b953fcc108667a7c768a614627055b2168045657d084b4837296377646866769eff2de4be2265b49d9b78fc6b69ecb28f990336519ccda8f379bd80f529a13ddde4d3cc15aaef91a146a9c044bdf44133fcca5453ca161a01a05db7c791425e8997310cf7330bbe096b5dc86d7d84a9df453956dcec47ce7bfe77905bfd920041a4b2ba3a3a24f76d048620b8c3ddb8704ff5ada9910c7abf38cdaf3f3075342ac2bd0570483b7ace434de544e1c76011e6bac89760c4e38ba91d971b6a76aba7ade64eaeb41249c20427bf818a3c40f0e7b0e9120fca4c4e347ee3589fdc3d06b52fbb3daff9cbd12bba0de44f49214f6ffc20e8c809bb5e96ff62d4d94485d6b1506011ea9c137565d1e4a6cfe9a8bd6e259d22596d4192f7d6a71a9e912d21dc8d9eae89dcaee8904fef4c789ac24e0cb58474126d44ad17795e4b83e1f81d905909b783e5075345c5e94385c160b2e83ef55d7940304849be81be721ec2e4c396d437ee0ec660828f99408010aefb535ce0e8d577a8952a362609906da3178389c3f07646dffb65cb2bc6f1003cdd7b1e6bdce516204d57416b22381d509e9206089de43ee61fb234533b6ea906c9b464f1c28e2698e58f1e14add5860a1df9463d2f134d5fc89493246a29e20b46df08d94b3a053f33823be8110eb4da0aa20a1ee6aee88202595d2699efb34dfb18eb0e116642871178d09a56938ef74657939fdf21eed2853349b86549bd764c58dc75bafd4edec1e7b7d7009e4ad128ae3cc87f1449241759bca5dd72eebc7b7167234aaebf5cde5c2e381459f623dc33e563b246221c28ba1919a94f213c98e54ff51073bf0770a94a80782e5c555397141013b7b14d0a99d36370f2694a9c582b3a9260a97905130d251e9855e57bf8e89bad81dea74247e95a5732715923283f75f6f024db68d6f68eb1e7e8062cfb558cc80fc979a1d30683c5ad9fae385ebc79a556d2094cc48e1d762ce64eb6b193d297ae7415758fc0639d512f47c03831ac4e55727ed30f319f07447acdef2ec7a58843d9e71a8e64e932c1e4cc4ca2827983154560de624b3b9e06ba9b5858d94540a2163a9eb903cf4b213a51bba0169495b11d4af2d41ea4b2d371d146cd3cdf64a5581671764f29ff5a0c5707b0506550bd9d6266ec93453f4b43f1400efe855f28e2e59f85f2ce053260e03022c6acc76c7c453c1a163373254f0f01869148f805fd6243c3ac2080a97803c7dea9eb095e1f7a2414b8c5e03fa74bb79a5a754f57bdb53be3cd72e6a77862c4b5af9fdb5a9dffe4f64dc95730f5ca46188d6da7d1f003870ea9fef6080a4af7eafe54015af81ad6ee4d8873b334bb424e71f677f9efd11ec53fd16276c12256fbd340fce4fd64cce106a303f1c2755fb1f116c8de5c61b4bcdf1ec99c373184f10f59cdb301e4a400a90108e02983f47eb6802253c634c94fe32f4ab35cd4876522f3344ccf85fb35a856468afce0a4a364555243d1c750ab126e7074521363864629dc17066d1cad1c48f9509163a2444de10e9f955f415d76daaa3cf9c6013bcd8b2716578e1f53921ae50aefce04a8b6e1209a1228158035123b1bf37499d4e9fb0cd4acf5348791a938c8ddd38cc3008baac1b9fe3269a0097f6aed1ad285e1b9637c6dc065845d175254084971dfa451bc76da90b9abc9f6ebe3d77191e521aed235f5ec7c7c82b9510064fdb15d8d27a258b9f8b47bbb73e431a54851c1ee6b2edbd668a6f002689823f431fd71ad272f6e399d408bb59a1ccec84503bac084cb7e3414290894219079ce95a2de4226778dce5bcd98b29f1b3b819af352a123d4678117eb9b57b76b2d2573a8da780d5c3edf1a855c465cd0218513eeabb0359027beab1782ccdf4d42b8d2ea7eac42c215005e2c90dfadf0e5eec01db754ede34ff8d4608a36f40061b054601f5f03df45cfdb4b027dfddb472e88d113adcf137815dc78874691d28455d6f92506e3f8648fdc574a87cffce5f799e3f1c02d2668c715bb242a35758b9124b76c664a9d6d04b0c61090dcc208f2717aa403e80e80aa3b01331fda0e2c0cc8fb235ce9c9a222e918348d2b785bbe56cfde4370c9a139fa0b252bb38da550b9733a3f0491225c6ea258317056fc4f21839f9a8ee4bb8417bdb789345dc524b1dfaf5e5c33d1cadc67bda8aa9c39770f8cd9f2f4a8ea9a3a42baa45a68e8cc045ed063f70da17159d0175b0bb018e55b6cd662961c86287ceeabebd00b8bafa0a6b03a70762fb0cab319d9dc15518493435019aa7c8901a04e73c0f43aa94b1349d256489ec7ad34d18f8627ae18008a3b1f4b2e4fa61d9156f01c23a188234083ff12780deae416adc8e9b6dbaffd9bd0778416da516da3fc79ef78c26e81dc22ff3b4e8000c87c29aaa71dcd8f0ca83099fe175c00ddb8666327ec7fdac28c4cc8ab3cdcbcbc46f8ad9eaf88c660a922f4b0cf2193ee9f2d989540e1ae78c452581a038d17b12e5633ea39e542fd2f1ad9acfe0c2ff55c2307bfda8490b0833c36b33ef3d16ca522201e79480864112f6656504b35c824e0bcc4cc540038324e928fd872947ed00b01f46994a203d45965dd579ed61e5d920f919da34d05013402876cb9d12e416e3f892b2e326b00ed87e00481ded400054d771a0c14a34898bae9a030da306ee863044025a8ef091b8da1121049f5fcb145c8e2f9cf2cd874276180f6e65cb002a074204c048a58743440c367bbcfefd4fed28e1ff7f853f7c8213694400443bbea87485553202a0e1a45f4be175d89cca6269a0d2faedd917f60d806c1074c8c09bb025ab937400dcc034460f566bfd37d81a6c0666db6aa50ba59e4fa17b8a43a6808a2b4f91915b9d5636a2aab7d9a3e469ceedb6122620fceb3b57b16da568209af04470485e986a6b180748ec1459c921565bd6126a8b84de0fe98768bd4bd98a43a8e0c79428b864176c053b3a711bc7caf2d001ff0ede8b1e0e8b4dfd78df6561058f4125da0bb4eaeb683c5a40a92fd34667be402c63ed56a50c05518149644d6c9472ab7f2169505b2116f2b083a971aa07eacb567cf4c91e362d66982a982d1e5bd9f056bf6290ac059833d751b5fa7f8b7f65237885f5555a7dcaba1548a3f1cdbcd1ad5c4207256a714f6c3f8103ef930268cab79625438acabe913822e3548801005d495601015c70da1ef96b05c44616f755a78afcd28a5fa44eb37439058bb6cb1fb276a132f7e3cae4a58f6ba5d83c641e53c6f4d61100cb0b40e910a9184550264149ea62a387c1c6c6b74c03ddda01c03cc0878ca580875b2bde00292536dffa1a3298f993474d4c3ce95149d809a3a52ca4704061125aec519aba7ed10e7f6c88dd63d84dfd7a431dfe7a12a1466337fccd8f0f44f620696688a05cd338aac719cda8471c73f2c5ccfec71b4346946663897e315e1baac53c57c311c7326806526663f7fedd058bd23cf67b7b560fd07d6cfc0b194b206bc8af8800d33d648bae7827ab8504c5b777899848e0adaf0c689403b09e5b4f555636e828f289c0f553ef91048e58858c90f6827103e865bad533302d733f64566c05708558fb3bbe2f712d8dbc4d0e6f5e4c5d13ae42e50b0bd6612a24358f1607d46be2f60c10c82fc94e6f821630db1804455041023d058f574b903f4d47f81ff678206082b94794b83fefd8aa9080968f41f4456c0168e9cdd1bf085a5da4793e87c3de5f522dd255f704bd76e2620e53c1d0b867b6b0e8dbf2bcc173b377478848f6c7a88169cca9ca8934af3cd00a02e5df3fa466d81aa630e2c3ad108e3b7e68e259c09b4a7b1c12422366209a045918699ba608446fac544ea48f7e87f03bf95bc94b32e4e523b6ea9aaf45479f71b564518f60ddf12901da4364f2a217f1a64f05e0453919fecd8d42f73e0b46d99e0fd911a785e41abffdc8f944e8989d08f7698215da0eafc003ef2deec00ed2b740dd184d089cc9332b8d8d264f8696ef15d84a4295b40f2aa837ba3762a234c3b5f7673098f2f709b33a18302fc80957114ec9fe4ff8ee292db10abb776a609d177ec1e2b86c21b142c3f49f0dc76b1765529f56385342c67d81fe9aa01a8b4cf50d6ff3ba6d7a559b6bc3df5a625c9bb16f11c5f82ca93849131b5c16c35f58617e46bfdbfba8e41c0e85d305cc1f4dcac082908ad9ee723a920af29fbfc039ee830658394d2f5b636b9f57bf3a8a3e6bdf65de3740d4d6da67f74b603939bb1ab34c5b618ff9ad7d70b0a4a94c3373b5f64d1f0571edab0fe51344219d25aaf2f3f892a1c08c9f89768a6bf8c6052d434c13b772489743a9c1e6fb450f5c8c23fe1e69643ef0826d5281b1cc87fcdaf2e252342dfc38a68c8994fddd3aadbe813153021b868b1e7dd5068551a210c0468344f20c15345da921a5230523257af6232c329a99fe45dcb54851016580c78503fbcf4ee07ede943cedb9807d40deaf5b021113a852bbe1cd9d991e459236a519bf30a8c02e3bf1823dba0276a692ca29fb5a4162c032fc31cedfa1fd692702f3ec17a34da9b5dd99431a0d5601a5d1ea84b39f70c21c4b012de7fdf8eae715bc77d4e47a2b72c9e83e890c066342846a14d0d9e9f579aecd8eb9733d7541dafd762ba65f9d1129f6506f508466a5c94301236727f7861f16579e24acc162401eec943cfb72176a274b93936745a27ccd35b8086ec234a6769f036ba044cd31262f52eebac7df9a7c792bd0ba54fbbd3022b3b4690e0c6e106d5d32e38b6ff0e673ec436b565696b841139c36829db9cec3364803c4f5bd18654a47cb07e5a874c9a2c1d329943fe5620b265f3c8bd1dce6c7bad90ddfefd4c9f01575523dc61ae3e5d490df3787f200095b250f0caf59cff2a025d7ec6b835e42ae713aa3fdf3c35c8751671a204ef2b216112e1515ee1087673b0518998b8bba43c2d5858f04e50c7639edc341c2de680285f6d2c899ac7bb4f8e82bac44e0f85d1d461d4f3d21b6b0ef23dfea4fb9099077c3eee3bdcd3c877e44ac5b97b62bc66834af70750d32872970d375a2f971d05671dea3ee916d964739ad0d77396f23e85eb38275cf21107f8c27f0da58f7dc837e1c3e8622ed212659f78c477ebdd8fa09da299809b19e75af87cafe07942169dd6329c2c52b346f883918bafb1a72bbc35e8874ae0a374148715e2d50463b187fe90234184196884208b603872a203047bad943fe7d866b8a5bf7ca140437359685cf203b84d54a72f40aea00be6f33cc416167c46a9eff414a8708a44348dc3d47a6c899835ee6eedd17b00f8e3b77efc255906340a49b45ae72928806cb098ca39044e001423e624dc2151932aa14fc05f6f54ec243c3813538d47a0d2a0db5b676d22d7b4f777dcead512b82781e511ab1b27ee49f25b80f55bdd03be70e36dd15e75103f0dc64bc846a74657723977270c5c15ca3d8b800dc5eafd38d4d0924533d7a951fe3bd59a3c2c5ddc11e716063d3fd1a25b142323552df61d4639693deeccd840d1e0e9ef0a28486460a9d1eba7adadc2846342c27aca586dba81ee8ff6f930427a327e4e05e6de7d614498935f2d04a1b693971de75b468e01eb70b7ab558d8b03046012dcb600630d10b9e9682037d33eee77f05dc7ed6d67df30ba3ba5c2b95d820ba2bab253790d3aecd83554baa6cef1b2e79228b90cab20b9424f7c557067f135e1a2e64fe9a6519356e3b6a14059dd569fd3398276be2375a355346684536f6222d4106906287431872ea5d2b319025167938d2089c53b05456053515b844e3fd7b5b066c04a6f84006f9275ce34ad26cac2489e6e647a2a113134f489db019eb11cd76f8307a4c3d54d5bad87170322ed98886131b7361e6e682a23f16a494d5c5ba5b4e167594051931dbe3e11e574df3f47afbdbf56c191b4ca355ff3aec1bb38168ac75cb865c53945f8373b5f4a16175ed3231808faef8e83addf63203c27480ac5f7e2c5d7be91b7b68ecefc67a3935c0dbe530c95b47210beb2191effa18a3d928de59efe345cdb30bfb067285038b9622477630afa4fc91e27aa4ed3c44cf0fd773db0981f0da07f7c759e623346783ea706c6a822c98ac14b87a2125033e775ec0335de2ce844714bc40105e7d0e70448a84b6e12831512e28b88e833181ba835582541758a41fe768b683b339ef8cf8cad187d1b5a29425602585c2e87f584e4771fa605a71add693405d15ac212cd7f618becff04392e4c179c1d7381943f2aedd718efc063eeeea9f119f6ec3ea2682c09ffd5c8d8e0abb225121753caa112c6b091ec83e230fa5a894650029f0a6f817dcf81d5e894323a38b01ef88962495cd112e6147f61dffc005eae3cc7a4e371c93db0539a2eac9a4c381f6c4ac2df9f2da5fac67c674949c8901ac52f6fa14580e7f38e24aedb032e2cd78df2c77b298628c87143f247594ca930c00bb51cfa96f8179a840b2f4a84fa24ad82ee4cacfe74353f25f2e426c331fc5e60c4e3321ea904214916f192fa8cc338dbfc7ff1c2b1628bc39feabe96f7c61f095c1d1e6a5f942c6fafb15d96d387ff155abd863340653000eb3e47f6c1b04b2b9519112c63484cec28034cc33d6cd4ed7e99b6178cc3b0ce44ad40c7279f203b38c18555d03c20bf4950472d5f971410c37cd5b919ae5d089dc9a9e3ce724593882775e7e8f45fb275fc8410bd3b4d9f9471c0f08393e3ed1c846be4c55030eab049c765c885aca60099717cfc05ce6b655ad1f637e983908b216ee3748b43ccc780c68cda58e14f43a7e0f30504a214a347b766862c25ae26ca85c23199ba316439aaeb0fb53eaaef0001fc68fe0510c077aa4b902c14c3848ec1e5780cb7f565a307b4c5b1436968afb8f4814661e45291b439d5d26df0e2f3d5a1265623df6670de87aea30278799f9611f7cfd4344b29f5b74a66ba6f6c4ed09725f87c7e208aa4815a3d615947806466907ed219d418ad699bd54cec80002bf3529e1f48a1d684e3ad972c749d1d30d6ad11306a6f3b8213f472e5a3a1b3e34c0844c984d4ed02023ca6e43f708368c120f4bf5047d22003ac12c164aa2761462dabf1ec36481750b33ebcebdc996961f710763690ce35f404f010b1b30a8b88f8d6e305b17333597df9f562a7ffee6c3c554fae946b462b639d299afea9f7b57eb70df60b44984e3afe7dfd8b56a9959e1645c6ebfc54162994f00f849c233098b2a1b973e7da6c6c381a6be053ae33ffd11a2280a8b30632ac16d8356dfc3ce96ada38828e14a2421e2ecdd4b504e7ab8041433c7c56b31512440edf84c65f2c4037948475bb618eeae0eac363e5b8bb12d0bdb5c94d8664d11b3983284d2b92cc69bb45616237ae5852819a79d61d9bbf0bd41556396da1d70e73b4fd9aa570d92d92eba5776ae4f9c7747a0c510601444e5ff86d9aea7126d0dcb0cae4c89e099bb2b67d2786441a4a516636f5aef443af93ffc7096ccca6d6d6e906a31342d0294883fddd83fae853b287c18fce5d61dbff29b53dec9bb5a8cbd09a4a41c7077c1c56722dc780f222e719461f52b62b2c31d5dee304062bf9c08bef78b9afcd141ced3642854eea74c254795b43fedd0a002eed147eb148e29f158b71bb6174319a5009eff5868a06314ad471f23f98bfd903d1d279741e3631bf63721bb78483bbc5076cb9b5d766046287e8b2b4c7f21246576d6ac342aee65a2d8b3ccb893415103aece8af842c388b48f458411df0c1229febf8ea5648722b9b6b01b7fd1651b9e329a08b4fe1415d23c3dcd968ba1315746953b0523e10cc2aaa6ec54f197018c5c91f1130ad9e59f245331d140d53bf67032f506610e11b3d75d762ee443b96c3e255d4c16ec91b64047889e1664da66142209eb7e17cca521875764cdfb4dee5c0cb43de56c442d068e53b15cf2ea7a3a0e1d8a8ff576fbf92e53e420e9fdfcbd040643ad4ff8429db74143cf9576e1752c55faf7e336c47f31467815c1f35040a62d1e5a2d6a396d2ded0a0e208d91d2fd17f468a0728eaf2977e130297269a7ca47f36a9776d5c3ea3e5fda18f995e075c2e6ddab32f49cebac10771f343cec8c6eca1368c0b493f42cd460daf5911de130ed5c286af2066a671904b51368ba5c8741ed26643d2e21ad02a176e727d44e66a2d89777587505b39fb40b570f4a1c6381257f6de104ad5b3d080eaa15fe090ed86c1d291a3101130e6390136408306dcf4680d8a779a2deea21761b611bb8a6c2ea873a431bcbbee0ef51e4363463070a4282edc9e0c55c947fdbef13926ef540bc60753e7e0457b77a107a4f31c3ab5e5c0bccd0c4aaaab4b2ae1886a106c23053e3a9e6e819f2ff05e9efe99ca50701c54b28f1129b196ef56089447a10e9129b28a79161e5d1aa0c5443614e9d91550fc7749abda4e6a9da9ab2863196d43d79c618225689e234d614ae40902a96fbce14245116127a25fcbd741f2a5ea822dc290dad111d537183249753f91ddb432d601f4f45baf29391532a4669b71e1423362f3ec4b23c50d625d430e0f4c3243a514c53862422aab9b0c1a21b09b385b7bfdb94660b1ead7fec11c4b6408b3125801b14b330a9c3f17e1a00c88da5f3dde2d2a62d80c2fd8c0dbc339194e0ebb05478c45ad917a1cdd744f74ef277407cf9273fec919af82dfc95859f79b9fd0e6d0ed949b6cdbb3e0e86843ca6ef6518206b91a3ab2a38adf8e08e04761f4feba01b2cbcf8b45e144f07bf00af829f4978839f967dc5a87e7e8ab5d69909f518201550a12b4aaca41de9ee984d76470a354e5d40227005b8d7819312c1cb98554b2f601d68160000e2a176813d64f433ac370ecab63f26f4e58035845c040d71528cdcf50bbf432e9f7b9892f57c07d40c40c124c4bda240dc876a091fb3efd4247518433d1c641c74845dd7ef10dcb93b947c12098d180eb987364f0a199555464430780d89b26cab078485a082e4c01c9cd71ad03a1e148b391dc28a4b074a621d083f198f360ab78a2a5d54c8b4a92e42b48e08c12c71e919cdce45df41bc323a905c74005ba335f66c404a797a8fb24dc28b914231423878bec30e60e36318aabf29228f88e27602cfa9eeadf20e1ec3e9c94e4cbffb33ba02d457495eb3d06cdb130cb0dee87e69eb29298426850945943fa4d5d8d52c6f9eea06424f75558dd201be7a3fddbc6b8b3f42ef8025221e8d566ee172aeab3a1aa6a7aaf0f4437237565def6cd541346a72be2e243831696dd5b1ba6dd5990fb7ea4406a25cea7f88d6507bb07d0e71b5d6259f09a1c1b10d50774cbf781a841d474f28b4b86762b6e1e34d5f5a75510287dd5a8768a572a996968bece3c933316cadcb375ef6b22bd3acd7270f302d8e8423badecc49328a815577d338c80f9c75018c8c50736f43f2a3a408ef27e06325d4c60c528860d00b0442ead15ba1548d469932163264ac4279634f90549066f9014fc3485022e4cf2c13214bcb4c9d8e08c9d9229364b183cbf2f3ec67bef2572ed354f925093999551e7482f398d61997d8b245d94b7096fa5341ee9292043dd0b7c6504cae01ce31a13d5c750b9ad704ea5bf1ed3ace157a64fe99611b55c61502e3e8aa876d8eb8cc82f7d723b30562f39a66d04fe44d95cd5c2bd8b9240142fc166070b9cc8471b41cd2c06970603e4f0432feb6f78e86288a559fbdaffd6e50d41ea4a5a35fd3876e6f73b7d09de49a42001c021157a7e47a641937a4c30a5e895168a54e99bbc14e36f865172e0147c7dccc0887de306981846066c856e731b954db98c0227af82b59cb653df8a82eefcb8d5e39c06dff8a4899d9b7b02e1e5c76f44df19058f115bc5808046bdb0c7ce4205ac2694f5863c9dcdb51ec8ef47d4586b5a64057dc78f625a3989384bdc18b2fb490bfd4b218cbee84c336255987c3625012f2a66090531877915f3aec1f5a02b5ec381881e6237a204a5827ce41872ce2537c43cb8129195bbae4e760e2a4dcd3ca91de6cf56ee40a1813f292f42e4e40d0a1b74aea8657034df4ba92ff6732b30906bf55d656f4391206f574cbd6ced80ba30e8e4dfdf271649f78988c517dcdd0aadb81a7a9f70eab776ccfcde2ffc81c397d3ed4689395ca11d5a5473900fdd1dc6f8ed59824c9d58c1088d2ba17e0fa647b16fc25955de3e0b00a6322cfc68a822adf20f4eb50c462f194d4bcfbf2cbfcf57759baf33e8873f980f76a680ef481d631cbe146fd930d3d73d3aeff22153bd53c7cd04928202f972fad715385ea325417835ae5ecf508ef0528d26517e89a12b9e9f18371d77f3a619ee69061e256c65007ed8d0b8809110aa8e685959804b0e21afad9559e0505249d44303f980b7b8a7c3a25c084730fc10f5648fc9550662a1b025f0946b1c284a35e94373277317fa7de975491995425fcd3d6fc399ffc6f60bfadfebaaae6cce900f8087965a2fc1039069b57f244295cf8a089b496f3245b7f0c826ed32f5a73d893eb290f9bd6d313ae22b43cc51e0cdc7fedea203bffed89369c30c8b620b94e01ef288dc3a0fd10f21faf72babf2f0e03f4bb5197d9729c3bcdd45aa26e2e8263c208d5f560711e8def45143dc7c3051a0ede204c7818f33fc72a81844c8b874b14530eb65b39131cc1093fa702a2b8c9699b68425941a10f25daf85df4064940e90c682d67260a4002fd3b2d1b425e627ffece86064fa9afd2d3f1454069c528306daec389383c16265f96616939f58e4368a49f61e2667980d78fc6f3c7ec8144145fa905645303f33116639014719df1805b71e5319904b9b563f63e1ab0018de638704d53815fc9887dc261c0e3a8d16a3ecafc8ac78fba3d29a90b4841659167a7662bc988ecfdfee7035285a1522c13ec51328a28326e9abd80236d6b3806c5450b18fa191865ed2f5289dbff245716079fce1e0c37b54207c6c32a420321959e4270e008ade9b1100c1816ae8cdfed55fcacc2ed3ef14cb0b6edf755781b181d4f0f0af50309ba6fc514b8fe2b8507a831baa817314f87db43f345374ed8676da112741576a16f7c4df4c563b7c99d1b3e8b7adc36ce592b8ce887d33cb23d13a2ad75b97b414ce20b0b2f1dceb54b274814dc501eb8d7f37d73df5e5e37a9e93e2e1a77c23a6e23af13dca8890964657b04ab61192db51c9bfc0ebe96393f3c647b33bf6292918aef6e905f63bacf2ef00b75bd879ed94bfbf2d237fff3bb4d968a484bfdede1e5f84105f195d18572d335c4c8c65fcdff618299bf9016073901789ade40a4dbf961bce737e33ed867da0a604c77a9d6270c38207ad6589a61cb5a739041f9b075a2038ac00a62b84020b5a4274dd00d5b7d6cb033dfb690a95f65ee40a225b2813f21f573608fc205ea7c8b1922c588f4075a55bbda3c2fce921d3d0e7575e1f9b028cac4d6e021b6ce53cd9d6f554d5bc9450d48bf50742ef8d40654578bc85476fa6de484aa00f39aa131fbbb88397166cc7b803e1b0422a0b81cc0d301dacf7505e014c01cca3baaee9783072f3c1f7ea745dd27a116a687cf903e21548604054d7310aaf82ccd1ae13da64685da9b68847a4e4e9c146f495ccc922cb504855b2a583689b985de214b493289584a0123ac2adb42f03dca9c212bde7d8ec734324af599c32194c61393fbfbc331d68fc1a860389bd51635c5a93126e4663aec50bcae7510b443a44d7488a51af4617f5225509450f0de55a11411144a1599504a2d7127836f77afb3dde13f4dff89ec9ed64e35d793f04141a79aed457743118889f947e96a09a99a6cc683645beac355b5f2eb270991f502fdd4c4f3f6288331e59a303618cfdcd1518e486d8b6988e7f3bc45df93d35f3adb2b294e6abf0566b2a7b1fcac0874e3885ee72fe8115e4b75b879d668cfc2cafa22a07a5eeaf2867554171f6551f25273e37664a100a9e389a8f89bee87b8b3f3b29a319bfc138f46a4805ffde07555b203bddb978932a5a5fc444f5e49848350859ad3f9f15125ac96707975f2cb130d9a68893213940b1cae5af199ff85f442530130e5022540ba2a35f2f1588787dbb8ca8362c47b74458088de59f0a9892df68cc76561bf2f2561e96d9a07b6286cf1c139aa33947f2d3974554e4088429d79a1b10ce835520d8dff268bb1384b110de0a0c5a51bbe03d7325a2b0bf42b0315339d20cb44c76238acaafe192fd37a60839ac1415124e1ecd84d055ab68f7e9c5054ab8ed0da50eed5a54456a47cfa5e8ec206fa4cbde8ab4faae69a1748f459664117732524ab5dc509bdd7eaee58666bc6fd34422d24a62f85f7f3667741ad29f2fc31a72d179f4a6fd66c094ee26d41eb15675ac37388775b0f69086ce2445ebef62e18fe1a422481461756c8f3d1b7b0f25a32231593b0a3e934b900c3862d2bf44541a4e26bd817783ab6d3e502bce4a440b7302fb0bb66023f4b94f26f211ac3b54b653786bd6ee2fd41a15e4b7e496a300d60380d328f83b62c4670bd158e15652ae9bac70a35b44cb9b85b423fe0e8647ab8c28792fca2e71dac0fb3615779dda1d6365bde44d7b587edb6b11c6c120b9f3720d51f6f542dd17706e09bddbbc1b4efba14fd27d1d2eb9840e22195638a183cf8d40dea56b8e058ce4fa8835e834084fe193211b4e7f4444d447dd2b986b8065fdb5b00cf23d7bc67ef9d5ca775de9d46423f516d90301e987794c8c9ce45bcb179f715d335e6cb79fcdd00d4f107bebd2897e68157eced1e45ca25469f56d693151d57bc036cb00bbb7079470d14dd6783f4c74cb052600cf72e592527d84f97ea5bb02cc5212a4ca27fc87a23c09f5b2fe17a61c2fc0c6099186d728ea0a923e47db688ec12e3c82d0b36129a0d7117e167b89192d51f2374a05858892989b4ade0b411ad8a5a9a31736490e1b43a9a0815ab350df06d647f6f05762deb74d1c6fc80636ac903f49dd2d0d9627e01bbda93af0bdbab8536544cba92f673f1ab558dcb5c2c463c640a967e3445f6d8ae61d93053d933c5fae360814310dde074f4e8b05e8041c0ee675ad2a363acd82c5d2d4bc5c653c3ba8e3534364385c9823fa41781a256c25ca52175ac61af249b6f14c2d51ee894a63e4d00bf1ac08d606c56b9d471c9b05564410c7c420f551c90d70715692ad36c58e1013395ea0f7c88df5b1d2ab763f468ddb99135bcf2264c163d94c9d4c91fabf7155f86a670def2f685e193a15178b45d3e7c10a620aa128355b9cba39abb57a032d76123bef4db518f88fb9ec4a85c595d91f43ce6ad3a9a7423422beabfd2c8c231138bed4e2285dd3fd13b6469ff7c0595ba2553a4bd4b2493fc365789eee19ad303d9c9540ceef44137dd09a4128b54741f1ba363f4a5f43015912b65ef4605c1df2622b98dbd1ce1766d770b856eff959ddabfc09d5ac3bdb4cb68e58c04ecd00b0610072c00ed0bbdaa06a650495cb510bc9a92d2524ee09e6bd02d838e520be15671bf62138b1015a85901141c3b6d1501545bf15e57c56ad5c5e3c805b1b18a877a8c5855273b48327f03cdd605d2b007fe342af4a9fb54a90e1317954b236d25b62209115fe7ccdd760f4edb0fbc12db2c51671dcf1949ddbace125b8f029b9fce2dd3c89bd8949ab86d28b6987a28b6ca882836f4c7146a1b19b7a82ebea2d814415d141b4b3dd70b4d15d0a934c860349e5ec2f69e96a39df559060002fdbd1a7edd3e6f3aeec06e97930027a7a3725dcac2512bba7f2548446f8da7985e2fbfec811d87faa655b045d54050a96283866d4c77b2ec412222ee07e3add8507f98739f5d2e3224aadeb882bfdb52bcc2a09f62d6e4d555fa5814cae50097da7f8cfd1c176cf39be4cfc7849667784de9576a6b7310d6d581ee8613ed1ca2b50351a9bdc0197df275501b5f88861fc93ec51f644ee1fe416f032d753ff3526f2904d0d4dd37f10b50a157b344a92d9b64d1f8d9699d16498b79a2b90ae1292fe27b18608c2d8be00c5ddc00a479851e45c5e7b31ed801037b2de11d9be6e4f48bda629407021940245e9982ec0772881da5a6edc0fa7fe48d1e218c0cfcf114a7688d6d0ce7dcd590a680245b23424c287af444787949c2581901ee0df61a9b5e0b555e678c57ccb1834dca834d2a6b3c5a4e9e15c901b0b115b3c140c235d04cf169cb0ed373f0a30e7bdd73142b41381d2b4410806ce86020680173f72aa84cc3fae6d3bcfdda59ec4c0abab15ab01afc9be8ba5521a468f520dda40c61570ee16c8547381b6596554134920e6772a2cd7ec13789ca24acb4544ef10fad09755b5d060a1f41dec915894500c53ba8e1daa7b53348d205041320350aca0d165f6b6ac54f2d1ded9f6db05b7b91289d08e14298cb41bd61e472a0ec469210ccac1304ba0b434e5984f70317fa396950dc5e68bfc87ce99578ee7101dd326b1ee42bcc4127ce78854ea90b44b14882b167f9d6ee836fad9a4e8f27734f95e21159525e52a6ea1bf429acf5b8aec71925c89080bb5aa6b4582cccae36017178b088ea0813f03da7eca58fcb8208ac44b5d09b05d4747b019f21e20c6111c8f37e20364eed205c417fe71222f1ecea20b0d91f85545511b95791a00e6dc63861ae604268cb2c49cc066f411cc8201c4b511f48bb4a2d2be08306249c20e7159456c4392dbb7e5255ad0aa23ff81d5c2d2639a4e01e9224dd570697c50854d3ac6592539e1840efca87080d6e32e863231ddb0618bd5dc5503f58e7369df90ce3e44bc69305af02ac034b1a5a1acbd0f32e84cb5682428e894c0dd6debb62dc289293303747d035a0380c03ae4334d22a5e54b717227facaddc35953725fa103741f3cdcdf4a526ab95d863042ba22e8199be6e026b85c07754403d4b13536e0064aa481bc5c892b4807da7863df60a24c802ba0589752306f69e0614205628d0047bb06920bbba4f78639eae8a8289e02838980465750a72df12942086a03e6f03c0d5b1b8629d71a98de989fedb3c5db50614e889848962997a9e909728db4c2dda442d98e1c97c94864da11da633cda0a790ad278313a99ba14fbdac58246c1edc01089ad1705405d27c4dea89df66b40ab501360dbbc2ba5a38576fd04a940bf8348572705d89be2f8f0e00c125990e1b6e61ba4522c46815da1d222ba615f3496cfa40d37fdf7ecc95efaae65f9a4bcabb2bbfa7bc4510730965a3be8d3640af3d4346ba35403282fb4123a5093c35fc9685b0fc44298c8bda6907a20da16b3039e80441381237d4cc45edfa32fe6eb881f8997bdd8096e70da8d260f39ae62b12a73ec1aadd7ba320ddb7a0a916f766b54090927aca65d1a018a713792063e5d140f7cd9619282254ed486c74759314d6878032525d23d873ef6a05576222286e0c10c090664386927c99a71646e781c6b9e2bc85c363f1f8d7f421ab7ced2292ef06a44072597ec0f9bc7bac2245ad056867e467e3c4e20be327042dded65f96575a545da0b0c43bf1cad13cfb37c664df286a6c4ac0f2a19aec013cdf1e993c781214e9b3b86ef3d5fb65eca110f000895ac2d7ad2ac45e255a76c5c2548c7ac014c2950c72ae4e4b8b63b884548750d48886b8ac7cc19ada40998bccee7fc671d8659744a5799f7b16db16070642ec047aaaaf3c40a765e4218a7303f8a1f8a6cb3fc8a63ca80c426072e21335d152d95280ba597a5620b277b04a489829bd24b1a169597f88491715e70aca296d498ff3f1f1a4b9f7a3e68514ba2adec42269e8472d5c49b947b201e7986748c4ca1fd8be160db5cbade34a7e56eea89d559d2f88cd9ed3fb6a58899012f7acb63494e793c2be94a180e0aa5f7b5ca13155f9051b596b8484668ce04597f052c11a9333161fb0ee32a1fe6915dd30717e296024d93aa70d34620e233aa1f48a80ff65573215b0df5952fccb00677e376e2abce0aa34a541e21efda3bbf322285819a9b6a6f526620e68c8bdb83811b79bbd219e3ad9190a88dd3a42535ceaad0cf141eab7c75daae79e6f10b4fc87269c1a971efcc0d4b7b9eb22e263a147616efa919d80c913121fbf437105c58a095ea40f5dae4fd335550f6c80e68c38eda087786e51cfa046757592fcdea6d71c116b5c20d94e47fda9f14a553541be1b3640053452f4541c935130d62ecc7689f93b9f2844a4e80d88f36b8285823647e0323cdc6a2392b7924ceda15915c414189cad0346476e89c44bec7e096343824acb5928deace517b445f296d0fd715106be7872f380e0e4258afbdaf7608258b9c2c602e8fb61d38ac00d294e52e1b0ff2d2ea46108e51e04cda709edcf744876f9ab5c940f8277f9d3ff963b55d52655fe314b13c533fff5ad8454b8611aae2b8c031542ba95d1ddc90dc8e2415238607a7a023fd146b57327ff2666b2371adec5794936a2de122f101e200b05183623f277bfce82fd1847875decd946f680d4361aeda7df9b6d4719467de589e94a30db2a4200733c038053fb0166350f0618da7fb3f6ef472f48b5ba98ff6410e68323255fa28b182812f3830a22c606be27c2c8ec87eaa17d53e77ee59dbf3b21d92dbc5627e8c40b7c176882663a2aa526d081d09e23db8cdab256344c45f92da2666e7a7ae67c77072a59fdc2e4e652f4ed54f29f5bd99238766f1e01291904bdde48f4099a77dfa8976e499a1e2c998e186f8ccdbbd422ae53eacc21c64f53b11ba3d9562ce24a1c769a1b3f90e17e3cb53bc0c7455a8917fb969bba42eb99963bea7b20232e9ae5a323b9d3a766441f079a19b4f21eee234b38446c5e9cb9804ec8989dde4033b2e69809e35b97b08f183c22d94033421a9bf1275bc4862507e28896a61bc40cd386859ee8dc6ec8f3cf5a6156c8a1826eff8585c23ad65d34b9e6122b2c46db7d61e36e18895ecd1a6f3c716b1fa7eb82ee43267ada728d93b9c6a1c870379b15c4b65b82b9c468e8a86c4057646184fbe67da798d9a8969a31e7f37703baea3c1808b3d9d53089a834b2864aaa6139677cc40d06f964c65cc0cb9262af8b66215f8560a933fb309caa06e771fc5f04ae20033139b3000affd6088d2e9177cb987b6af329c8391ef7377266a26b693cc34652917800340a0fa24c22f12e6ed264c8d5fdd0ba996df79878bb47afd84e6ef89bfede302e63b86c7475055db8f8636471a3aaa06c3c0a71ada32e2222bdaae43a4e16ad592dc1def87e54dc99da60128a59f26143837f498201cb4850f9ba8f4736310624c02ab25e73c241224dff9f1d89b9866dc08606db535fd744f8b0ca6a434cc0f9a271c9a62f3e34fef4e34c3241ab83eef2451ad8f462467f8061b6e9384719c3cc96c858fee4c904c1d6e0e1a6947072eefe2ec21c90abdf0b51432beb5f51d81ff08c056166be5bde3abaf8a9a5a4009746b3f5368e9934a0f465663b2839e9fd0d0f451664b07c47661d88a4c5b30d5701c49cdbbacc2eff557f17b99b710dad59ecefcab71e46098cdfd9a990cbac1a6aa3c06c04ae27a699e26889e3dadf655625dfa92b948d77e4bd6d2776999d2516625dd88498c3d21ceb943d4d1e7fa9b335988280ca01ea0d93c797dd1a81f1f8b28393d6ae412e5f598c54162a6d3511176d589f64bfa253607a682a3319ef2a29b1a92cc219ab7a09c313a8145b1e493c6a9dff254da8228df2b560e10a2ffb788ef7d38f2af9b614f44eafdf4dbe014082812f53ff07c20e6cf68dace47c9a5f334eb12da33256ec1af2bca9274259162c54a33d7ccacec7471c0ffaab759c3687a76fc204611047ddde8e6ed240e28bc649aa500cb9bcf669d58f958b903f1c636343a1f46793aba6401af05b3668daf22b44660970d4c184530eff6d70b5f38e69f1ccb78acea39b271f63a8e2ca27e1ebbe3317401a454250228ef732169d1741d7520a4dcb8d0eba989a573c96301563dbf4c2db4e7bfac7804a4a551a8bd39f697309026d739547d9d224955de42666b60970c3f17daaf76b0d8edfba40ed65f82f4466c5fe9a61068e721ba5807f5b3371936b9eb96bc82d03c2e79412622c6ea965f0972a2a1e75ed08bedc37669ce8a040db0547f62a9abf847e1f3396eefc30849d023763c641e5ba9667d2950a17f21894e3ae30e1e8eba5ac229a31a3693a91d7c0bd71260442dc49ab011ba8243c2a1b9de75dbfc44a9525227755b7525e91b6925696289c61378a0858f6b8a7d2334bc4935cad76735712a47a281300ae6531789286342282a427da141c64b3921f1ce165ae1d8b9e10e042ec434bbb765881ae0621afaa0b8a054643c3f9ffb7163fd9d2dc9ba8913aa03fd7f99136d8685bcdc258c6a8b8fecff1010847a302927bb6003674885ef66daeadf87f928901134dd47c3a1a8e29e51702d847692ec550c7d30cfd7d6424dd0b5d2630f32d5a9b9c111854b80aa840d1a52960a02b4c32230c4fb12d057cfc1db8ab162c5f5b4303c3095e0ef41d401b6dbe4010e9cbb7dcfaf769c144476d6a6879cda97ee226e018dc9dfae85ab0ab78a1e06b0073644855ecc7b494021cce10bab26e721af7aa6609b372093db3440b90723af9469da7fd29328e94b5e9cacc395eef531382311dd13afbffc7d358838e3d4a74d02634bea09565444f85f85e83348de2403631e4cfe3866ff67e9ffa01fc78b94474190e84f95efeb142d1c8c85f9a717fdab70589873883fb82bbee009b374542cf2978e52ef487a78de52da4639038233a7f70a5cc0b13449d03cc5cb133b808441d81ad43a3d09e53c92a8027856c9430876f3fbe61acb55539a6c72919fd13f0ce839d702c7373b1dfa8d779560827cfb59d350c4e89b93ca2e580b369430a2c3ab0054576fdf65060e2a5b4c5765cc9f9554420673277616cc1b5c8788b555bc6ad8239f6bf44976213607891fe40d7286532437f690b2a40ee4f8401303ed53bce6306b662c4f548ec711ccb6c940b456cd83f766da3ea43ec530918ea4eb9233cbe33c568b66f133efe90e5777ba1c5ed7576f81169fdb9444d2114d92a83688817a87b3e0d73543bb95a174652ea154782131a3926dfd15fd9104dcbc397869b640d5c2890ac7416cc472655a4e29bb7933c2f8379e5540a3864c6625d7740ee90b12ac938361ed44bd922e4d325e5795b2d8b005c13c0df5a8c920df2fba54d76844671bdc15a8d89502d4fc8ef732c1e34e30755cc0fdbea0398f250d0922e1f20064b8bcee07c54e303db0dad0c54b6485be058cf73f75d2b5e49a628afd461ff851236ec3df27741dfc8cfffb0c73d0d3fae6f985edf6dfc3b72d3dd522e7788623c99d659c7b405b57f6c13584f1db809f2e773f9f1845952cf373e5355dbd449afe1e0b437137c6579e4e7ac50a827a6095a517e9acae7cc2a19e300859d8d187720659858d684359353270b053a0e6b42b020ce40cc1557031606bf86e5362ea909900350879c9a4043f9a0a57edcdb8b0c23ddfb3d495e5b44416863a163c4a2328497934f94212a5f4f21f6322c62d429379e9d4a34936f64a90c22b4d011d3b134a57bccbdb30fd085db63eb8a65198caee2bddbe6525418d4450622073c5d054dac79270e2f0a6080e8a3195e69fd13d7c2ce1c60db8a0f0f91a9bac68e2df70991d0ba2bf7cec8e50577ec40a15b33ec6c83ce4288c0983ea14ec35af65f3ec89eb09f62d757d97b1a24f63844976414bdcf77b41731656ff78b1ee1b638ad1d33dfbd9db0a59b2ed888758c603566649b7ab823a1abd54a91985a4f63250945f9e8ba4e25e860a874a358f5b9624236de07001ee9023d127963d4f1b60b4523c074e9c99fdc3571d931609543161459a9b8c6b8a6f7d77f12ab7bcd004c2bfd7607e3056139980d796d40a9314c3a750aa323052d387d4cb5fe574da05abbfbd715b70c23d933915290976a9e8f90693ea80e692d7fb7cea5026780e64a3c50d43052c9bb424965d1c3c0d83f32a07700c5e582ba16caea72f12f7cec3fb660bdd6ae4c20eda040a7f0a3f0d6116b1cc5d417a85a1c1a33a42bb0aa462d2eb6f3a294b24151c486670ae648532133e5bcdda889f50c1de47004281ad4d690ce51c51aa5d77e79a7e83f880b8da0ccd0c822a07fef81780e7ca686c3bbe998c8afa9fe61e4e4512da59c99e02f832b081b9312f1890b62410afde3bed03ae7f1adab27102e475c3a846f82ad9c2663c152904b238c25f8d0ccb2c39a9619cca5841a5ffe3db7b5339f18d3f1a189014789b12872903bfa3d7ed8e5c2232a4315388ec4f80fb761c9903a8a4016e00680505d5e22c1cf50b7e990f55a36bae80f50faf552bf6f01039d7409e2c6577304d03bffff3935f0cd0a7a8eb354b75df777eeddc6380fd0e369bf60481b28908fe28003108e0801fef74c1bc174c1caa6a460917c72a33c691a085c1f506445aa0f42b78d2815738c0b275a6a4db99e45d0275e5ea614dd3c6eeace9456fa6fc580e39d6f06a6544eca8ab955773331eb5b52871df174557dacd2cc232a29ac5c28bead972cf0d1fc8b8129b081f10603539dff11e826609a7c81c96c6e94d4ae14928d51fd47bea610949cad32ad57ea0d09d9894b99923279afb4d5acb357199b7c3792330b127a8292c6653255ec75cfad612ffa4e9e665b7754659e2deec55047f52e937b4add8a6843275cd795b9974b9acb1bf85ae932792f4283fcb644031a7492897a75d562f2e4529d0351cd45e0d474df256d8c7afb97e4a97aa9d3cfe502148ed665cd22c50cb82357a9267026447af57b9af4c17d1a99d9dfd3b81bfb8e1f6feb5d41b3ab1b92685f30a034d3b007154e1ad2cad6e37b39874a9bc4468c5d99b2578a40dd584abe6a59aaeaee936a881a40f5c4d384c6aea56268eae1532d34a637b8fc2055a9da50758b55035b64d266d5c9d2c2ad4e5c0a568d8835fc4bff1f3b821a030931db4fdc2b964855a1e6e0c1554ab947aa7318353a6ecc45ad20b5e5514354200723d5b196347f8a1250c2a988a461a5a447c64dda2dac9f4e0aa84a74c215507abec9c73efc53bdfed8029cf68d025064884d475c73a6fc518f1400cc27fbf8a9946ec4d330741f3af30512ea12d88d6a3d6ffdb7663408b699faa1215379784b499138b87afae55a2d53505f8c860550c29da777c8ae3cb6b6c6bdcbf1ecde86106d8547423d1cbdf04a82c80656b41ff2c290f7b2239015fef56a369c2b34b211c0a35e17a7b58f99de51b8b90a89bd5b67dbfe25d91823eeb14db7fbe48153087227c4be171c5501395bed0b4f6f3d3c576793c9f6ab0d7ff758365914454614f44db0d5d419d5d93ad03219369e80e0add416f74f419ecf47ceff08a574e007f4924a12827941ef0d4fa6aa20af8021a3b41a8909fc9fdb2b93b21e41ae4c470d282790a11aac7da539dde283eacde2b10b6bdc2dda7640a8697a7085cf4126c0a2ad3213921ca6218aeabcb253e6795ed1c68ced6c32b41c8db249957aad3db336cbdced1def8102ea64156db52b15bb9b7f2eaef7cbc8122ea063db810b120b6c18907757be207564c7ea119bac346ccfe916660b73cf7359cf581cdb7aec7eaea518511b928a7cfea575cef58f8d22ded876a29a572b98dd6e0d08eda8ff46d61e7e2443d456cfddde076da8ad6630236d50393beba48c3c53ea72cfe9f022d5c5d5a61f7181ff5afd196ded861298b59be354b6365bf1ee4a4f73dd962ca7f56c4b3e8f713cbd355debf6539f7da06ab07e6935561a6f48eb2a00c59afb639e7b889f2cf0c5acce3622f58ef4d02e8ec00572ed77c6e7293489de1f01830fdc264824da3133dcd047fc40795bd41e004d106fe03dc6c0c78de177ad339404e555cbdf70c55fdce38bc5d9336884a4afe500eee7dfb60fa6eb20140721bcab180d82e2c5f8a4029943a03453d5d90148291afec094bae26ad01b3f6625ca0df068bf3e45c61e296309158e8ddef712277baaaeaa0257e5c226806a86c79749315f7195bc303a1617551786f60570e50815ff293df46c40840226e52fa982d2838f78ba7bb42f5a572d74f2db178d2dda0640e7b05069e05cd4445fbe0c81fbc691a50bcec975fb2c08e3e67222efba5fbc2db5511ec148000e749af0805c7dbb3973c4f67855fe041d2c3931187d362c6ebc52609ef9e127aa03a4bb5902d6e2b11e48447585ce0a04d66eaa53f1e7bcd9856e32bcc4cf399c5a869d110199cee84ac15fb1d7838e0b4f55bb264fe1ed401f0e83e6f77d6e131b6445d4c75dbfd02dbfb252535d126ce4f7fecd70cd40de75e819d976290b4c8acf05674b5f282c6f5bc4e8cf6aa764ae39bc72903d2061a87e035dde7e2200912206cbb1687982156f06b484b4d7fcc7436f4e58a8f5da3f9ed007fa2eb5dcabee4a1946d2198f47c616aa1c0092d0d347875287df2b827c5047b90261ea01596d7fd9eab435646ead4da685dd0e6463bd099dc569ec663487c657b85fae1b11239485001ad4f56f39f797deb6acc64d8935390b8c0cb400f10847be1eb4706e89bb9d84d79e6eb035af9487ddc205aa7fbefa46a6ed376e2f9762018afd6f24d46506032ed547076077e48fb5909f8c45f1c36a210bcdba2eb099d71352e8bebe94279ea9e19b3ac50d55ec0baaca8d705d19955b97e031765cda36c78dcb462d7eb2dc04ed7da184bcbcd210e4b8670212a8b0f8e310e4730ff818fc01e52ddc7bbc55d7dc9c0b48a677c83967e020f746846c0c484bd00dfb8a734764361ffbca399e2ac05f5db5afaa5645b99f8201e40d3e969c4af4c343164f672f175b9e6d230e4a3128e281fbc561500cf333773ccc037ea7eaaabc9f7138f92780ce8177adeed0fdfb3b1a770df5d74418edf017ab975e706b3366ef614357fd119ae1194a466d14b7c00d18774b1d733b428482748c02b158bf4cc433e8f93f9f4e35db3a0b6d14c409f4a2005efd27b9d0b2fecdada98f2f05f1756e2a7e284aaddfb86f5acd84a98c7fda8c4dec4068c0fa10a807daa9615c6a028a7a154c4b40e2713ab3097c1cd2fdb7672acdc13063e176206593cabfcfef83e4413acbaa8a737ea081a9700e786770b0b1b04104c201ef3429da5470ffd690bda20a54a350235b6e29a59429a52403d304c2049404fed446354e8a1c9480919e9bbe1fc20be111ce26b338d4c7ed0f55fc2e77b1fad71c4745dd1e1679f37c368cb15b05fec9f1317976b007833edeac65177998bce1f1d8c9170480bc1e76d395e40f17fc8ede9d406ef46e5b1df1633569ea697228da02800e4be7db5214801fe6cb558d72d2ad722833aa5421434b079452199195bd05f4410740951c2dd2667b6f5af2e6c8203a28f27211c8e56c6cfc8c390eae75c3d12e737fc369ff6d7cc3204c031b8d4734913bc380972f4660ceb0219348f7f676c9058266a25eab65a67d82b741553d7085a5a80c70e6b08f4627001691db1f46391fe89e890c357174d30e383ae9c61b5d5cd34607dba4e9fe0d349dc361a66b216dd8be5d86764c1fa518838cc92d8567fc56961697be583a8c30d89d5b44d44838261eb4d65bc37fa7bff02997e704af886a48dac4829eb1c551d3e0479b8fcd1a0e15b7700be70ccbfe7bfcffff218b3086a4e6c86b32ba933fa571363f9bf2937ec98e578a41faf11f1eeddc61fdc6168446ac6abaf4ff643c93fc31af34bf674d7a50afb591988dfb97df2252a656ee6795a3a9ee7e186f7487f01b8641b9f041de0cb8049be217328bb985b7fed784e18e93ba65acd40473e79a911bb4efb89955dd44e40e5bdf0ad855e82576356a213b23ddc2a1937bdcfe30ca4969caf99f7ddc9d3ebcd2710e5f5c7ee38d4a81024c1b1ec0241ae83e8c97e38d2d23f0594634e8b921f6baa6ff527a8cffffffefffd73d4a87fffefeee0fefff7508a34be7c951101c34609cae70e97f266fe607b8d8016637b750df9761df0c3aad31f780322a935cb6b217c22b6f6a0915616f89aa85c0df54a3a0d34d21e154c4cf6a1032c9f9ba5ef74c0edd209dcb989999659e84f59623f1854ca235d98d8e57c38231a30685bd84e2e64c254ace50024e407ad88e681627e6160a886a4d145f9e139d4675ce2bdfd0a52c453fe7fc2a744ed9a2dc73722028a36184ebc5d3b3a6fe000939adb9010c1c7f4c2e967a58c08a7c6bc4f8a2cbcca88c0d6ea45066c98c1e58b4c4f2b00287551204484a4fc0e38a205d28e17084c4fbe2450c3fb05c51c39a2baa40430795d2a9f092025385867a810c812587a6418cc81246fce20aa63381d0b1851d4b3c2cf9c0b4c508368f49c949b60c2381980598b08f0c16325f440c3bffa75d351bb59e3b8dcaaadc5c0546cc62b58c3f772f10fc2e02626ccf69b999279294d79cfc72ba67861535d8328af6b8efbede92aa83183fccd8e2460d183c6fc910315ec260918591d3969eb76447cd126cd46ee8d2a4c3cf5b2225e90c921e5f7ea862260e9f477376cec93972444919f631f970a55b65b90cf4e182b72d07651ddce91290d98641dec824d17c5451eca0649d871dc280e20fd894e28e99cf0ccfcb1a616ef069c986cf0c3952705f9c788246268737d89851c59918c7faa8d15e5a54d7870c16513c1dc9c167062633647673babcfbc59275fed7af8da4bc74c2b033e7d96e912d56e70b4fce4e2726a8978fb32f9431d23b698c94465ab7961da10e5d7466967f4e1163f97ac7379fdeffffa73388e6ebddddddaf5fff12f33edffbf3ca0be1bc72c239e18c92fb07312dc8543a63ac4735e888bd9490998c1ab1cad1dbd7865a3fc1ddbe0ca62956f97122aceaeb6fe5ececa8d0b5c61d9a0441892203c38056af8d5d3dd97776758740bab8e7d21d57dd5e10f030c1e0a756ee18648222b78d9c2380079b62558535d093a128d3c8c6fa5a87fe3d3fec2d244796a9c08e4b61a806141965e1d3139298a5dea8ff186db57cc56c993de9e36f5944ce4a09b9aa1c2117c70a197273584430c618a3c7ca9129e7b0a6086a4d614dc9691109694df157c8f311628970705836d6ca0e1b5a0b6d175628c85a548a830d45e118f7c446d108d622cc21508431b649918dd24172734e50f24ad48fad56d6d68f949d64e7726258e7ad452f5330425f5650738f0a435679392f525e95940f0873eeb77276755d2f9e9e1f9eccfaaecccdefe0af264c82421ef6c0155cc1d683170aa184502866d44549f1e19837ba314bae56722c1972fd05ac4d69dcaeec6dabafb626dce0f15f274e889ce0a82a4ac8a72865455af99ecf156e41a40893685285b35bbd96bdacbfd16f020ef004cf3a92c38161d9ced4cf23cd2c1c0e20aa2cf7c5124d41d497fe0df20f82549b6aded4447128be72ce946a72f472bd53da7a2d6fadb79a913e0e2a9bba2d1c2095900fe495e16f4ae55a70e24df9442eb2059522d40267300aefdbdeceddee603a770713c7169dfb99ceddb9dd9d0bb7846d2f3f04ccee13d6fbd2c0cdac4b8ec5aab7cef904e503ef9cd7be2939db715dd82a7ff967f75114c26198899a450471fad2785a4497a889daa76ffcc089df97d325efe48eca1cf677bb13c926bd7fcf9411f66d24352832f850147f7da3e4e3f683ace71d77f776ef7e9752fe95fe785eae3b57abe79d05a2621f4b73048d8d26389e8af6a0540cd2c5137a6c39a3e6cda3e30632625481870e729031880349a496aac0e0852c0ac25431f3e9cb84c99ced3a54f0985d655f310049cc8e94021838d84059f91660d49cd1a2e3295d66d7da8cfaba476de6633bc7a0a797de0c01defb580224542e6f572e813756a15b9d0af024375476c462d67043881833b1767a62cab8e9b6b051824b935361616433e284e23c236df8e5417325e91a1a2e209849609a7a30c069c20648a81f5cca827d8357f420c0a517cf64fd4016506409fd46a78c3ecfba9c170b69dd824340e83de7e0ae100390e754e438000ea0b7624b1923c38f91de19a79c2fd018ef9451b61e6a009d4b01f176de9b7f0b373537f04601c43c3d7c434df7e670e3692a59c3d67e9569981191261880ca8c6d185b5eef03463cf052c5085667dc5401587ea57f10217c637bc0aeead9cd956e49c70585409858cb0890916b24e8e88ddc22d7488dbb874202c4eb9cbce64f4c518f4229a12e1296cb88b03ca908cb674658bee44753da63487ab001705958a39c1b1b9027259fab2737a201e0e6cab68239dc4d32b5a55eea55cf6a25a73597082cf7530c1022af73e578cc4ef8e8d6faf96a64f99153b9311627040e7574ee11d4d1d1d1813a39b2b98b30ee863c262da8300f91ae44e7a9dac32e161d005774ab56722d5d2d0fa73c9adc38e306193d96f49855fee30dc769b1ec851eb007ef03e3469bae8b14b94e82b0ab4964f5489e0f901a266f729a9a2f649c805e9646a4c8a54df1218e2d62242d85f1d2f49628c172054b1863b2a071e4f496bc2559207e08c2841a31359ccd5b2205e644137254a1a50b186a7cf855a42f94b322ac38e92d72b72b4391ad269bb20824e2bf336b548a4e1bc9619b1d7cf767353a043edffa72422308abfd8ce52bfdd227d53ab27972a2b9cca11f3992c768ffbdd4d433180cf1099050dc9010617b802b3729caacc48e57d2ed6bdd368e884e1477e72542dd9ecaa1b6486b9231463a61a435d669bb6eabd9452df94551a79d64cd8772ff91fc17baae6447d15896344b71133b718aa2584f52188a52371fd83fb4d5e3486656902c9059e042112dda7a649c447fe90703d9ac9bcd31b8db3b046ca1866cdad5dbe8a4fee2718e4e56011b6b011c7fef1f359877c28655665b522daab05aeda956d866860d9b36317fe37a5d2adba7b6fbc8bff45530c1ddc7e1b08147a2b84ab7b7b23cb14540d20fcfcf525ce25813014a57d6a3eb5e5ba3e46acfb96ddcc6711b654dc96a82426d0dc75002abb02d6973b3d536a7cda9b6b1d906d96ade29b0356d4ddb990af3360464a142839371da0df2d975258180a707839f2640423ea3f992d35e66d8abe45cdce9a9066b6ba8a18125210cc0e13a7561f21704f79865b02336892d2546f041c097254c787878aaa49347522a739c6860a4665a9ac9084932e16085e9943cae2d8fe9062aa212d0cfb6c98e38544e4e1a39ae04c83696cd61811bb29435a17093f551a6846368a0a19586ab3ffe37c48acec0cb34d1f7cade03aa41494cc91037f2cc361090a3013c2478331ed65b22c2bbaf244d3bf0083d418185215b6414e349d2934412219e1d38c08e8b52596c3846d6bfff2dbffb5b7ebfa7bef5b05d8f29f2bbd630a53657d444d67eb0530c6be694e43827ecff63baad2c536bfce04e36679ee9284b0885f634b155f47227ef82e372728eecec244962cf6052a20a198d26647f30a071d10b48880414521882124506239e24de9727304b731d4922bbb23a92c3dd7ff71e2541d3e5fbbf8fd8d5ec24676cedc82d9dde2be7063b1943eb4e8f4d2048b28664fd8c22c3731cedc886921b6878aed94d67d3eeeeafc7b0cfeb350dd8c234a5182b1ed7e4f18a8b03420013d5dad5eabafc5f8020c098f6bb019e8605ba88173e29a57c9f70a2dec7b83f7fcf9f6fe0de1df418bbe788effddca6e7f472b936779792e99224ecc4ffb9ab95b54bb5ce8e673029697e940c1344f4445f5f3cff20c7c7ad293d16f24c5a84ac9be47ea57ab477ca14a2d832ba0c7a872d7777f7ee46e227fddfbaeffb7effff5f72b2d6d6dfff4bed3f3f4a7fdef87fffffff21d29b1da8bcd652729d947da59468ec45c9df2e876a1171adadd52c6f29a5443595414146a89432a42479a192bc705e21a137591f6c2d7f3f985fbbcbf7546f1b7bd71b7d986be4a0f481d4a39321436e8ac889906b53cfa7aa52a917e5902b2465af6de1a4840cb13829d510213856958a7d218ad6ff0112ba759b7fff32a53c41fd0263ffff5a0e29c9df5fcecf5ed78a8d756a9ef83676b372a85a5394537177ab419c95148ab335c64baf20599173c2cee79c32c62b3b6e8c1861a4bebd0a2f0ea118afe422f4095d7c93a8986d8194b76627aef1d334b2b17ec25fc648301a3e66c67f94293de483bd83f67c5b78f76efab736525b611a1d6a27a7f9309b28503ad69ed6dc09918c4451ca18a3779081b373ecfc1def844e22953e286c2c5b27fd1bffca7f16602b85a7e6d56296279df424b217de170f843c5beb751f42c853a654465d8f51c2c8c9f7be41f3badf4965a0f44e3a250bce878f454de20afdf1e14c4a39bf30fc1502ff6dde71ed957d875cc7bd8d561497120262565fee86a05d6dbb53f1bfce5b3a1dacde9e7a66b13a5a66636a7bfebd2c87e24f5e8e5625df8d1072fed125ec474bad594d79afee7d6f4aa44993a62890304545698ad21415a5291a23c52a34309542033ffedce69d1f7f6e90bacfed29f5483f95621ec24238e5cbacfcc7f8fe5be5bad1c890eb4623dcc19dc60d4a59e5d471032384914a9952d58dfa4794eaef3bcae17d7823841c9cf3a3430e72130539482bd4f94264b2be5218218c53ce8da65253a299904218e1ff46e7025dc008617c0923bcfc90bdf55c1f300473fb5459befe73ae205d9a95213b09695562dab64d425a95b86cb5725089695be2d9c6844ac96d6eac06d3f88c56b53836c3714a74a81ccb90645ab0987688e33899150859a6452621492d10721cc71d710c09ae6e928daa70ad9b64a31d8870abfb4d5636aa32f9886393ab7013c537f81017a58674dc0c7111c39eb8689b96e3e9d952ab2c37db58c942aa27c8b2e9eed4b31eb2a6647136e78cce0acd0ee5bf650175d9ac9c506d5830a65a0fd5a274e37a74be10a12c6eeb097ab4b7f4c8d0968adb3952c1cc61a262362a56b59c75a22cc8a2a88af35c3a4988a85099ab289c969715bb55420adeaaf266f8606ab6383e65586b29a83e204b95ecdd4042104c26ddfbb2a30002ae3bafb33fa4db94f1615cd10a21fcee6758a59c42efcdae734e49a3183def829e0f8cbb5cdbdcc0b0dddbb6c16ea3dba5d75b76a3f3da6887e2d7cad50ab97718ef6beb5ceecfcccc73324f8e727290e338140a857ab346e9da71b97678ce1b5b3795e2525b4faa8d6ec267a68c53b5ea5be9aba9bfd01d5e87ee91b21497221b80262c3f9b0dbfebb586e4e9f9010a127af30687bd0bac880169820a1f4508c80e00acf85170b65184afa077d1b9bff901494f6e63ddc54568e1a47445277db0d68d4e198178704a4185827c28ba77c64f67666718f7042a1324f4240567fec34a45e22456e2d98b9d6b6f7078824970e4b2b6d2b1a6b2d13fb2fcb6baff269d73cee8471b5ff8c418a38cff04c7fbb144163eff1f2f74a0fb97d1f6a8e5f0114613122f0d571f6e9230f19e8860f2fdfcceee9e49d9986a81b5686f644983013d198a6214dbe894f1755730089a0d72208e61cd39cb5bcc41a5b5ba3c9b283298d13022a717ee6cca4021474e9bb8eab2f377e8c1c054821b23074c8d0e78ad979d1dd70a8bf7c2d99c2377c795e4b54577030f931e0c9a002d0581f1640e1dde500d50a2d09104c60312232f3cd6e60b952ab228ac9041aa43902b6692ec28a345e90e2668334bc51adb82b7bee3517b5edaf6caa8674cd21306243c4121e603a5670b49c3be3158788698ea6cf772d8e1f3414681895d8449bfbf8af034f0cd758c30ee5a3ac59e0cc18c8e6448b35b7ae4463284130a2c3c49e1611ddf6c799d485ed9f0ff9dfed3ffed3f768494a4c4c37a6d93cab7838512e58706b84330a3d8916be7d56ef7de3118b1441ba7ed3bfb7fce79b7adb688b6da62d98d281f2c0a527163c3da680c57c1ab39ac1bbd86165e980cd745715c118c31c64923bdb376aa5e1473aa18a3bdb163c78ed76e7153c5cbc5549bbca8240c9f0a6d04800002a3750018108885a3d1448d729874ce7cb4224d489c4773692022c8e11c034114c530106588030400628031c018a4a66c05a23191c6b448a31a90cdd94761bca0206a90fc438e4552502a6ffb1776fbd9b16faa75b331d8a3b3be4ff421808ad2d6a628913dd5d69759d0ec68d6f143429854f772f407c8479181937204281f6582611fc37132de03470894dc843499201b53d2f05f31b9591d81b2262126ad6c6d4147c161604ac6301f29bccd952ed70cf17f26d8319702a851bd3da17e9596d47b1eb8dec578d01a1aba1b222c3643d34848682fa5694739e3bb3f5b88e42cd9a2f4c0cb1a4b4a2ed91628e5fa169513e66d05ce16441629603b0209d8ba9a656ba68d9c5e7aa8b552f423d7b0fba39c9284f6ba33b02103cc9a7a9f9c61bb9badedd8b183fb401fed0bbb303dd8a4aa4644954e2d4c851cf85bdc919ce4712610342805232a77d840c6a19bf6ab2165814498d69434af398f539f96010391b056e8f4de2699d6ba677c86cd9200f78db9f1117c30c7c059a667750fc7676179724925b256b0c62ad6f282d65ffbae429fd2a0c6ba5099d5adfc44db7450749e7f6001a1df37b1a29495fcdcf3a72bde4ad92d7d1aa1c12d4c682c2a399b935a40af461e03e9891bad90b47a23945c3b9def8bf6454e6f7aeef7c874c548d4a322f1d549d3de0fa8757f3b84e224b741185080033c2d1fe53887543c839030cfb49c50e24ea6d64b6ec6bf2203e0eef078a74ba2246dab02b8061dfdb63acc789cb6935e0e643987b1a6cf1a3c399c9e7fac57daa073734191802e418f2bf7edadf0572eba24cb884fe420496bec714707fc4f34baba7523683f249953b7ea4eb428f84f4f69d6b88b277468052e14df5d3ae6d09b9882bdac3eb4d5a7a797862322cf417b283c673cce57e80aaca32de69956c5cfb59e1c79beeab743431589c2ce7fd51951b7b775b036873345e986268166440f2a77b6f5bb037319bca91cccfa86f34d6f0c196067a31933b828dc81127ae0eeb060331811ae71bb5e478950b3fe37915317d7fa18b4203a206897c80fd82b3027269e791c84d1f63dfd1bd531155c9693f4b3e5f29d56c0a3cba91cf7fc2f913543b07adbc9cf693e5e636ce6c54fe69f3dedf4c7030cde2a5e140e8492e57a8a895b7083c5872d8f1bf43b4a5097f5ff894e72ea360b3d48583f231f1f7ca35948be0ca074b7d7b1abe5285641f34a8d2286769e44eba2357db36b93dee4b9c038d6b2cbeae34c4e21098ce93cd1efbed82a5f724d0369a6645dcb623d711c0ca9b1c4db33e24d2bd3d532278c0d44b767c5ad4bbafb768de808c16813823260a875fe62dfe622a744da6dc580470041947334c3b262e771894358c3439978859847fd349ce55561010f1221ce9ac24e40ae13f8f6d57da318c191a44ee31e801fc6d89ed59d824fb7188f710d5f5939f14a09779a3f2736dbf30eade157c42869a8742e0ab224249618d8a4c0e6c7ed904216e1c3b4472b55ae3d8b0ee4e5c85b5d6fd5589774a89dc8b319c24ecbc525461191d4c01be612c26f97688b77ad792dfd233a28c78ecf865e0464f9eebc4c7d6434dd157a15145fd45cbd3a728db4fc4a2a5a2511c07a9b5a4e4048bf5e13685514516c344ca3b2c203d86ff57158599ab190eef3f833a2816c3756ab027c8fce6a20e8d64d121cf9da3a0c78017d308ca56c09a36679b66715ad9b9940cea692055752e50a5b94e0ee726a9ea9c7aa09fb65b05f2a176780d9dff08e72b0bb529ca7c7b19872dc254c93e214b7e4407da0dbb0fc5d2012b70698e69f200752d96a60131290deac31f44001842719465329026c976541a7820a92647f3286b85b43056d093cff6e5c5f33bc36e04e0d2bf277190f6b6fff295f7f59a61be389c762c62e9e4714d8a6c1068e40bf707f438edcf409ff81deed0ae84b72a40b91df56647c54815195f71d3a352f76d6ef35e51fe86baab30e8a876b27f5647fa1b219b09b0c9dee6bea0a3e9070c00e254ced88630187a6e68ba45eee168b13f09311e5d6244defb5358f4dd626bf9147f9e4ab5fa47780761987db4bf311fedb9c9b635934e2281f894baf75942a5d2ee9ca06ae703bf602f1d4eb0c91a834749cb425d22da4789bf692f1341ebdd7f153db723009c61c8380ba7fb958953483400de1449a1da42d89e5f49cc810270b1e2f2f409576b4bfd7a42b25bcd2944876c17a86da856f56612433ac452782b52c11cbd83423da786829b9d7c7a348cb2ba636b22225efb9b953d166a21e74def872eed8d670eceb04875d199b60ca9460284544681bebf68446886e0300accfb3c0fdee2b084cb5c0f6e86c1b75562e60f834b9d2745ff9fd35e66ad4e10ad32acc89bd7ed6d87f8678383ae0823feeb2ec03ee8b27bc80c36fa5842facc99327378289297f1662ff290a5afa3514d5de9eb014969ef32ce9561f5a3036ac5964a30f95cbc813ed2b1734992185b8c7cad1c447b087ef038ad0ef135a7f35c670cd6ff845b9f2bc86d4b4d62d8c40bfc4ab26f88c98915f0036c59bee323ae676be9ff31d1852df131bcb67377b2db7d1e9b8eb2f056d3f8987dc39266b2c1878119316d1866404ed7e5f12de976927f1b7f09e1b50519401614eba9db7741e765c68e9daf02025c979249d6ab0ee955e159d6b582808761e4c494628f933b2a59eaef27822ebadb649fc8657e2336a41d2ba963c6de715eac5d8f44c1c740da0f8f54ec6eb3df40fd7b4902408a8b9392ca646001aaf416f86e6a3ea84471f1f95e86737005a5b6a44a84184b0809aaa22abd8e3ad8d8c1aa10247059223ffca3d2306b5465f26198919c0c78e777a4f716d516d0658873698ae7675acbc55b726a7df3a5ec41ea704617a1541b92835742818c48457c7c9fbadf431ea49b499b55ed2745ec60d88295484831c5430357a053352d1c9b1d05fa421d2b2b986d56ef91a592b13f1834100399be5ceac9bb5e93ca21e8dab7cf5cc91436b9c9dd663a128ebb3e71db9f60c101ac998b3739f33ead840a35473edeba5731714e19f29f8f48ddc9f33fad9aaa53d27edd66d73acd2730682172622e714dd99568a73f24093dc704eebd618d9094076d7940dd636a477bd3a4dd39aea0a4264df86fc63cc1612b3497ee0d8c05d6059bf93efe076d5a7f622a161778b73409c61b7a836e76e706eab6c8620064321ab9179da3178687ffd29f6fd7607cad81fe73a44121b8072bf68811b368e36eeff95b8f18eb7886500b4d402733ddb6b83355c052f47c0b59c71ad806daee8d45409dcee2be2a4080e16ea903260ffb7a762f7d6c62de8b567c7a52449351882602dbe23b6c0ee608b05649d03490cd2e7338fffadd53123e8dc42d54aeaed6a417eedd0361b1c169f293c9a180c7c8b83dda0d608a809c3a546a91948544fa609a0e8046b854ec6612034afac6fbc14086dde28b03bebd7f77587e64359dbce210ea206e71ac35152eac56af1708b404a906497f06480f063747bd6431367a4022a88a4c82af245ac4a4c5a08b59f28a04d25070cbcb815431dbde49c8c206eb675afd85302b953e7cec8f0a9c9f06a30d28a492ada2ec79b674fe9a4281fa574fc03f76e443f2e939213c496b5f06ddbf3147ceb34025f53912f5939470228d02a985d5766304a1d719006c06f5f70fe09f1177941cde686bc19516812e50a27dda8cbc4708434e038f1d7f52475e36171ac56c985b6770040cdcd61317cf5ba5e6447ffd5a8779eb3e9cc7ddf4aa44be5df7c33404ca88ee4ead0d91e878f127dfa199af7380297f94c41e40c096d0b0451dd353301d966281dc9d469d73c602e1383137bc6545c51e667569c60338b7a9a82b5fdb6d3a455c06f9e1e163903cfd587dbe38cf900336eb8c16296d9193ea49774d64203030e590d3a82db439c3504e53a25f02e03a245207b5d6697a721c98a57ed64949d9ca3a34d452138abc22c456035aa7b6cb019f39a7c21d1fb0d1f90e93891e2f4ec6d9ef6712c33eafdb68632f2b613d5856b1c7b1afd1d165aeec7ff70809a9ee55d128405e0817e6801d23b74c5dd98b044d7d5f17d9921504a2afd19b9c1e60a1c1406ef8538ed41c7221337475fb51b06e97b125f44f02b57c6bafb81c22d0fdb610f4fd4554898ef3afa18ce4614c95981a49412765ad962fcf448312ac7aa0674bd6b5f433a58fd036bbabe20cb2288f12081e8dc58ad41294e2f089f7a027b0075f94b5e9173e6432f8f4ee01f7ce950ad25adc9cd123982f953aee256ca775960ab9ee4e9f7d0616823472769b21da4cd32e6be6fa376a527ab596816f519890cbd68ad4c346160aa5f4693bf237956ce9a81ae75c4dd1b5b6bba1d8ecad9b0fbc86177b9e522a3b8e942ae812c170872a16ea54bf81b242c146d847840798ca20cbe3a806b4edade3093059887b600d2e24274449960ee14c2c594c06fa422ab962fc32668272e170e062b88636645d97c8421cb01006b73e1ecdccd132486f6cd2665792696ed8a4a54395b57e6f302d737595c2cf0b8f161185a0dcd2c12913470818622d2e13b5d52284b47f149dddb645635c92928935e640791c2e0803b6a2ecfda4d6a92d2b8ad1be0ce5111e5d9f154c227ca717bc1542080129f411616100f333f11788b0894a9a156eb1122136dc386d68fe18a866a130664e8580b8120d106c8ee381555260372bb431c302a05680bb30b843315316771fb250c8476a0cdc6c30fb19f2e75e6bc45f3c441a4e032f34b252543a05755fe736d1f1ba27e5580940c48638ca9743b52a90ef0bec066e1596ac53ae65071836e788e6f6e42c5fd97ddbfe5fbd84d898cff7181beeda34e2036251973820ff846badb66f53ff12069ba9b9daa890db3c660b0f61f6dac4949a92623bdd1cab4584f4fdaa8e61fc4c38b2fb2af475bdbba89940b768fee3bffadaf7b50045a201cd0c3a1d0c840998131f41d64dd528ad761c18182c79a7653c5072a5e0247dbfbdfe015186093bd6c42e7ca28a5a527b28204557f06f59952be381990bd97195dd071f5a088541c83272e3efc3d45920381b416c2ad2d52f98bdc80a1768b63d5b1493e4750fd48c664ce5f8248c3fff88b40386ba43c2f928adced0c137b0bc04a758e104a787facb05135ef3c681ef40786ea008af0a4ad3dabef3a55f92a937f85c5b4b09ac1deb2964da1d94688513bdd8b99988d3435d188e25682e1385d11c38dc09425e3af8859a96529e17a3ae86af7557dccbedbdb624e8fe129cf36df4d9af26b74e1a8ff77276e4a20c0c68502b626e6f75ab0b095cd916f2f8bfd6162ee2954a0d2004c7103cee7f1b0706367fe09e3a3e38a46fa2ed37b43c9ac93f3bf99817b5c719958196e55609e660e24781b143ab8afa9e0fe97aabe7018d10755e45824caeca14c76502ed78928c3abf3002193350fb48288865cd560ac5378528b9140fc952324d37b2c44f2ea00020e647b3bc032c120c4683270c020d2e847a65a9e9203420fca34adeb17237976cb3425c9a1d164ff1f22348c486261f2b78649bd7523a81d87e4e12f24c573df2e8527b9c1f8ac3ee72dbcfb6c1aa923e62fc3c9bb2606a37547eb0669191d18414b9d5f3f51e6131cc8271547d0aee1cef0437c1b1733f40beb1637003286a3da231cfc264306f322a20017176c2c4b77fc3e4378d31b167ae485e3c542302dbd33edf90547a09c4f591e61dd8b34c47791d37f71ec78ceedd530fe81a55714cf0a84d5de9f1de6e8a18b47bdbc49c82055bc20054d969d2b53b6e3cd4c4d35b644db7c2a03a9163d4c464a420e05e15d4a82b5e935b6bff70c82cff02efb6217d811457f92b5643735fe272ae9d4180acd6d969b08a24a06096b68193a913e400b8dad98787fd8e6e067f3a3b2bbb1090eba3cbc86afb32f80f9362e7b0a8c755e16551bc80549c330ddfbdd096f698d3050885665baf09a8894b6efbe81a817e3a5d3800d5e52a5e9cc847c1432c0cdfd03eb0083aa7dcdce361f62444d8c1439e7821a2f23a9d420a02ef65eb9c023efdcacfac31c42466ba7db51b03c1ab1c0d3fd46e1ec32e83f22356a6710f4c062270acaf3876ace25fae01208d0307bd7b50250edc83fe2a347022d74a853022364368cb05748cde9be8705cdf1c3aa260886cdaf9c17e05e9384cd45d12b0a95aa9e4f47098b205efada9301c3c822d55cc1e40821cdfb9b0637c03e20ada7cf413f0187f93a405801e7313089337590e9c0a10c14e3165ff1f067b7eed71e9ca5823c7155cc01a042071099102cc906824672661279027a1e1c7aff3e08bd5abf9631d6fdd04ff4da17e27d352830a495f4ae2a5e9f3f309edf861ec0dc07248c40f4475ff2700b59738c6e095c1d8780bbcbeb5004b837b8414dc3421fe24b504e7d1651af435ea099626a415fa570ff43f62b43a972a4daa79cba97c9e197f2d6c82d59f29e7936bd8d5c6fcf16aee5f9a5d0dd8193b8631ddc3c6b09fb10e7e04e5e08017d2c5dc1c9560829e96b6e2cceb8ceee01a0456337b87a36bd808ebe676a54054702240dc3246ead4baa00eebaa89313adae1447885b4d89b8d19ad4c7e04e45e208b1d33f8ea6267b9d64a3ff573745b9cccc1dcc0abfb6b8842d61fd44ff311d035a485ab280180d35a4375be37033387d694150ff914452302b3548e0990d25f004b3684c475dcd431f88c68eeb7ae15add5302f4f1848e73cb9e8c7e4ea68506ee32a024b052a0f6c818f8a8ec4a312de044e50ec7dc36dd6b0b92d6d03d1c4f61ec33526ea595455695fb96b47042b6dac5b222c74599c1d03c2808674d14c844b3e5c6176fd918d76ab8ca3335c19e048b6d30faf87f4f850ffd9aa64173ea0622af7aaad583a1257433fb8cc50b8425d20a4172194a885c7a43ab407680306d5d427b04e57e6d1e44868cd49578367b6a4bd2451aa98b00568925e77411053576e50c19e917b30cfb7bfbe201066ffec7547955befa168dae98b7bc836f4cf2b0d5353ca6e65b052670c75acc2340a56c035bd1343a4746a555a6bb975066578ab5a47968f7213ca818ce50821ef92afb8c553607eda9f5ac09e045945dfcbc52b54a6bd3a752c94a8b1de4df02d28484ca7f56568ca5ee4bd44089283203135abf48af0c00167f94a66a09e4dc3142952d8681e7a4495073702f940e24c827edc6b392760598be132da240807c884c8f65c893ca1b9f96d72d741fecfcb368d00a804304a4cf02d351e81b88bbdea08497806a80c930a10495cd682d5ae7c036f5d326dc424a1c48414af9a284eaad2221f08fb0f857ea0bb6b72ac4bd85b8bd88f053464a0843158aabf517e123081145959e349dfa11996ea081628c831e3201ddc0391a431cd1de029018ab17aa7e78951157301f8a7aea95b846688c5a43664773e81f9d46f10ecfe3cd10df883b4d486d0f32fc7514127fbe9418c42c213866c0cab743899d84bef7e1d1f5633b8618b8536885500a6ac95b4e58843dff1bf77a708df9b15213dda85ac02c1c2bf57a09502bf4b1ad391b42cfa1b69f58b752a6aeaa5b58a12704055d412585f1af3f7f44e708d18c8cd5300e54a236a93d874ff0e73af74d59675342ab19c3836e5ff1c101e3dd338373de0208072b7c1d666f126bdb3115e09037cfabbd59d2678ffc6d02d4918e0716f7cd56beb52defd2eaea09b39a5785dbe937c0395cccfffb54564bdb53803dffa74c4537507b82bc1ebdaa3f18800a47a955c938f7436ddb77e00908836615fe43a457bb9e418f0670f67df4e5652abc8314012aa18686ec28c419456b09d4e8119d8bf8d72e87427167da95e23afe53d9c187354f4282139d0fcfc1b7d8f75cecedab70abc8ba6302b6d80b380bad64452737ecfe7cb622a08ea06332506921a38742799f9036ec8e22f83a39923f8652208498e123dea83e9d90004070a500f7eba612e8bf0130f357a48fc043c4af892e5454bc12fa957880da37b42732eb45a9c2e870ee807b90a7d7b5de7ac34b3a210025c1aaf73fe7d9c4d46e7d87ea5b079bab3d04ec639c8154175f96ce824574104d822fe6d8d891e1d5e1b7dacf6ced473c4bfc57539e654e453fd60974265fcca4b5dc7f5184a95213bd0c588b6489993e176c7e9598da6337939aa898e110bd5ac920f80c22e4a947afab4452703b62f1f38ebc59c0c239a0ff2012665c38bb9c5341632f0e1bc5197210a3d4f74c181ed7ec0e77f36fbc3b8dcddabb0e733ad929676775b30ddf557bfd34ceb970470bdd6a6f9d2540b155bb408d18779129407812afc600d0918c683b450fb745d1e08450c77bcfaadcb54c0dc784f6ad89a274b41caf46ba437b1c19933b90834472bcbef8e108c50dbe6471d33e68f0b6689472c801e929a96e62c65a17438520a8a66a1453f4270734b406cdb4078fd06aa6fb06fc1d51d8edebf638a9610ff6a7eb221a7319e0473e4dd32102e85aefd6d10f935050a8296aad0e01dac4ff509c473c5c95322add35c4e550eece1d8385d00ffe9bad669df937a55a5c12771be1f0e5c29a6f9234ab8a5a1c4cc886c3491a3a34feb7484f9284bbc969abb61d8899fbd6c66dad92360ec044d31c074fdec0d8ce3f707c55562f137a0e3a64231f409ca0b94fa505bf60adc9b5652037b787a69b341d72f181bd2b2a3ce85b8eca81670fe21507039ca66726e386a94f95f35cc00809f7c0aca0099435fac549f0b918a84dcae9dc73da5285cd7d7fda5e47943209cbfda205b174e4bb9522853c0e8df9538a743d2c0987902815480008cffb189ec276e8b600242e057cfd9c97054b4ed2eff67b3a037f3300dc064f210aeff141d7ef03b4eb3b7b47e04905e02f34c7914d2cc9ae2706c86bab64e12c85405906ccd6e57837714e2c9195f0d52a8a1afc71c69d013a58e5e7d5b12498bdf00638beef7a48b00ad8eab88295e79b2790e3e9a4fb484a094c3a492e6fe309e43083b7da05f8290be32a70cff02e6630b8bf406816f7e6acb708c5281863c04f0a18900f61b41e56c1d8423b7cbf50ea7ad1982ee61fe85f541367a11fd084af052e04d37e601e425c1ce4f028b1d31c6b7216a940132c95bc2d3589b3b35a9222f07a2c2d119b41b1ed9e279e0e145b981e1b67e7662fd42ee7f4af7fcd672a279dc587bcccfe0438746caa01adce101bfb1eb262fc2ac11a683642202b7a8e4603326a8afaa9d49456bac15b8b70ebadc20244a6fe48c9f3a36544796042a87c28b0384ab7fd3f7800942b22c7d6101473ac926f18f07c3fff96dd10be7bd21ca80a404b19153d5c7c752306a289217412e900e14779d4e852804d538846e8692733c327b9383dda4a522e5cdb7223810d1595593a5e37813c29e4d141b41c6c73e484fab91aaa612e55fb1bf07323b281c22a7c3d9479c9420d6e68841b8484d7091028e482d11ca062d20cd301e4e28435373cfb178469667d47c522c8e042dc0582b076803fb1955593601cb318dba0996f6893d91269826b3b5bb2200f222ca4ee4afa4a29c136cdac0b4cab4a218a5deffd558c106cdb78157ff1b2d4abb86d9ea0b19fc1c78c82a8e679769c1c259f7a28bbe49d088d73e2f748ad6a9909d43f7ab60193bd4b8dc2ae16cc76a7918281521234b744571d5235b01fa603d277195dce07396b60f4c924e10dce4f6e7c6ac7f9d7ceda4c9814140547b86b6f70bd86ba28df5c9547fe236b8a03950992123110bf431de611a2e6d294daa38a78f824e7622acf37202dfaebd561298e4e26125132754c8305231fb024292870b1fdbdbd1edf57f5c51d0278bcb5d8ab85fb0084686054a0170cf832b1110b0d762d674b1284c3acff9361e2ffa7d4f0729e683724626dbd2034b9889d6ce78d5d6161872621e1b24ea8d66853b7971d6013c775c56fb0ea6419efb40c5624d07c648124bdf8d268e000e5e6bdbc95b927832d9b1d038bfc8224006ca04e75c776f0cde42ae2a07bcb07d80c56fc4f7fdd272f151e3957bc53cc2d00496ef08c9f51f1f1912fc2e3b8f3ef1c8be59c7efb428fce40dc5f3801997f02eb0f5a284e5c360e4d631d0fe81ad690a752aaec7898aa7791ab9c4f9b248c632565ab26513d537facd2064e3094dfb9486060026cda870bac6525ce85f9f21dd4377ff9aa6f1770f4e5d7c1776873bf00b37a56b8c2f2ccc14477660204cf08f26f6cc64feeadd38222c93ee5a51190fc1d890566001aca3eb18124a1bff1aa0a26805c8d7b7d71ec1b2d4b7bcfc7310a09a2bd1fc28d0dd528571a4042b694d09064fffb490cb98450102b36ed95952c06fca30d0073409fabb318f039db82ad45534d183e1cee2f28b4075703116483336612a93f512e6ac9078cd546168c6835faf1bbc1d8e748c49a638f0662c974307ac377da2a89fea4d51a13c494d1c00c57e929de6c81ed8c50f1f818320755ea662c5c1f7a0aad863bb52037300b4cca24314b494d49e8f4384c6421fab786180c7e99fd8b52026aa9c658e9e45319b348acec2c6c0b230b71bffc070552d5a26fe94c2fd2675219ff87898e25479eba160b43c445d647471508344ce5e2d73bf5843c6d9e898c2b27ba841b2fbdfc49e838f1868a096d4c3ac30866343c6b03ee3dc2c3305c96b99a19c061fb195c5224557bd9c346a3872d971b259f1f10e21650963549f6dbb5408a0807f9056c4434d2b4b7cb90ec19ab00f847c7b64eb8412e48a20e15acdf87e0da2bada63ad79094ffd6d44f88f1ba8d85ff2518e1b81876fdbadeb2a307791c76356a69a92619c739efda4daf62b316e1372559b24dc292a0518ce93590e9af17adacb9b941016983a184ca5636888ed3cf5c66a3fc6cd650abae54d761480b5ab97b25a6a7e7763768a0085d7305b9f3edf7cc15337ec69ec1aab09a1a9d798905ec0633be548050cd5ed67cb2b6545d2fc73f624a99c5141438418a74babda9f9fb86f89b6188fb6eb8617d4d1943366b599599992cb18801f8d6d51f85dcc69276c28ae7a6635c49c43cc2e4a6aa4806831efea1a3e97351e5dbc86ed68d1c0d93e5effc0604fdcba3089d05ab99d5e7a4003458e7e48f4375a86a00b0bc168684a468db7e51b96ebce801adb3eb207b91b7029bb84dcad43c6db7015cd31a063eee50ac9b832337e3e43991612f0c8e05736079e5b4c2db5b23645de4a0b4a81b69c64b07f32b6050302f4ef517fcc6f0231af2c293c906d0376b1d586d37e4addaa011d5bf20041a54449cc42ac0d5c376017b5c143b7df320d82f870a025af03e01f5847187a05f09db6be426eceadd2103c0c4ee06791f67b875face44b8dbb0955e87401e64c35731bef314e0210f370fa71b900fe93fea7eca665187222fc5354cd40a3869f17909f851d876f0e78adf83afe24c6ca832e1e87b5c5d2dd2a07a0ab8231f6313a01c60bb321df2a4ac37dfdf6c127235c97d67f07c28d524f3627c373bd2dd50d55395d27dbdadbd1db54320130196cbe26b4240495eb6275164a7f56b7761a0ba30827ae8b3abc4f074ba8aab3377f618dc56ef1fc91efee863cca3aa6b3e397ceedc67ed7f138f77680db32deee592d702d273734bba6deb5e24800893930a8044c0e0d97f5024b0091e7a954bcec1448c53db4bdffd142cc45c25aef03058803528abd13b3126b01c13c295a4dc1d8c25239fc8ed85ee1a8e69ffa0710de27c75d5751f472e0654267291c5cf9a7fdba03d3852e03506586397e605ccae107db2bea9c158f6906b2f8a29d637619bf6c63bc1862f80b1673bcadc570fbf1cd94de0b488122f6945560b96893cf4fecb72f214625d22ca188f2d244419f5ab29368afd993c28c3884c67519a25661c53e450eb8c3210cdbb8ca52a71a18cc63465de7f0558b0112d45c6f16013e37730bcaf619eb15981b91d110f32b34cc4cf288bac922ad44284baacdb0279ef3d450a550dc3fe9353f35bc7bb2d2076222dd0cf9a8b6b1c6fe462fc9f03afa31ce44ad48479bbe6a7a8efc4cacb1328798f07ce980503daf830c9f89aa12fa49de8a75c3c78d14e3be2ea2484828d5e8170ce650b47147109a87f6cab8f78cd18cb30265548933b57fd4def7299124d401b8e7773488366b0c982f96fe11b516bdb00eda1f6b565add016e2aa1b13df81959962bd86545d8842fc18d089df96a6351cf8310124f09cbee465f0c06ad48e984eb265b257126472919445edb0df206804302ceecb32a9cf2c2ea1131a0ca8a1b83266592fa2eb8a7724704a0583f79d5ea1a7b38172f81c32a716f036c99f6e31a67569edf3c0928fbf503be2563369cd5612f4eb2de82fa32a8543f27beae40b9e9355002fd9b555624242b847f54d02bd23d795a8a2d37c8b167a4f2393b321ba869ba53c50b1806a1a32602e909dcf54880f33aedade03c657ef5d15f98f6300d00be236a5a767ece20210302aca6b0d0a8bdcf8ac2499ac15a7c849aa9cecbaf678cfd890d8a4a0126d7c95cab3727848de710cc77a50c3c91e1aad60dd64469d97625b446c4d1602f61842bd55af28487c9beaffe598d43306a8060abdd40f87b8e75119f87520dd77e7ae69154f540051316c4d94e903988c7c0a574d9d020861ae6e9320b1ec8c01b10b5e61de08de644cd3bb67763890cfba54c8997cb0db048bbd0c3b9e646f8d88dae2570c40765f35b3d60a5aa79f2f92d8a93c6d1878abc972ec6b97eac43ee2d222630125575fd299c5c36ddd95c7e638fddcb8f634b64efa3755afd470c9b5738d9c50a7332fa6c2cd87217b337e9b5f8047396f8a78941395fd7103308bc2344d720635aed858ab0fbd832aac7066f4bce0a63b89f3c5513466857623991115d25e99171989cacabe443f31a7f5b032ad54510f073ec5f800991242e65d41865e24875965e60a42c100027943eb3dde6811b119673b3190ec0f1b594b30fbcf9d98fea4686aea2939eb3bb256a0390f5b1db20359d23ecb50e2591d741b2463924f6c3c711ca6d62f4190e4a081614f04948b444e8a1ec3584b37c8baf85ee96d6d29a18dda48f98e13b7cd53e3b3e5d59cacda401d0e66a8f93a3cbb94f8983fcb79448ff14c0bd977e3a9de77e2d38e240a20d6125f9de923607bcd11d85294c73e2c0eea53f4a2a03b75d83889a344706ae4517489ee8522ead6f20fa3899f22e6c8c0aad37c2e200526847f4abab1c837eb9f554dfe3190a19094031b3ad0a3fe73fdeee6e09c783ab82c99fcc14de7620c0fff4cd1a672c10ec074a0afcfd01adc0be538f50fb7069ac2b9280645f0f9f53fd28048ef448665089dcdefa996940eaa6b0ae8fed517902f45bf00fa7259105588fab8cf5f8ff49c9d6cd472b4d5b5de7881cfeb574d6da7f65432cf270668925e40b3db5b5aaaa6c66063f108d565046303fc09c770f78126bc86e2ad270254dc7d27fbe256d5ef4d881622ace8ed5e8c367a40b94af41e4454eb4d36582777832657004db01544189398b66a79cdbcaee2bc9d4d4a82fb42dfd281aec41668444072b1af7bbf441506021a693e5e6ab46f5478af2f72722579635c87d64f20ec6daa8db91a381282004d84d20fd1f3d97b88912c1c29b0a074022c30cc83e95ed61a545b79d869773447eda0c92ef1eb7157b900d5f0bb4a72175dc3f6f4767232042a97fe96bd43e5e94c31ca07ee13e812a3eca385074e8f5e10a35c178b515e1e5694375674a061f411dfa1b7d4a266ca1b587477d25739b8a6d2b9864dfee2f4a7b9cfa8a229cfc29f2c4fd4d5a2d866fa81246305e980b1e6aa2f4ac2e3090fa2fbe13d200053d6e6320bac9747f29a797a1d1c4be445c6ccd4614c13c0ba8bc3f3efd437014e499b9760e5f20ecd7360197eee6abcf3b9524b6442ec66050adadeded31244cb2f14540df865d906e90b021dc229821fce9491849f91aece005e2e0da9ccbd5fa9581c038850096612f51a38cb01aa9256f47982d37f817b800ac5e4c1651dcdc03020c18a952de193f679f007d83992216a7a24661df3712d576b1215dba0212b053e61eaee6706d2c843f49a6fa1b467c9564c342db241eef1e85a9018e57c43d652fb756bc7416d21d5e1136f0e96a9a07a6706ba2283f3853b71150d595fb8b69d3a8a7622d525dd3c25d406966f6bc7f5eccbe3c1407d853534d218f5725527840a44b0b8743fc82116507ee88401f7fee4754906a76965826a54db1548c8a7d1068306e5c58c95c690949bb60d4ea543e4120ef06965a3e6b53a6ab91a8b420fde554c7be247c5f1169cb056684005351f3bd12a00b9f561aab5b23ecc5149d7a5ec44b990336c217e35a080270800466dd2ff80bc2421dfecadb8987f5e79d6d6a938a244aea4b08d953ef991f36fe6bec1a13e834fa9ba40d70fe9efa9fb38c67953ec1140b00a79303a2e7eca368b978659e0f1809ea450d9db55cea6abbb7cbee6639c1e0dc79c1008fb367c3893c416ae2677e08f683a205f85ea71e1e1f1667117ca8744bf65a2d033f869da77d3b8661e07627a80cb906df182ed26c3bd16d6a5cb4ef35c39ca8e5c93d4e981673c62e08025c81e5e551198e969d375519c79449d9a31aadc6b19671c030ee92ab7969049b3914e72746f00bc8201d3f8f6fe9e63e5be5320961fc4645763271d974466d1ca435eac0a0ee5f64866e88e39a81495c79079b99aeda98c907edf1658beddc0dda5e4c5642c4507a2e0dfef0adc4a63b551305eaa9a04c6d0e64b8674b01618b06d16a7084b194851116428af61f02111bc3583ac4734a9f4308364aa722d9a02be40270eafa2f8f7a84f006f802a4318bd569e5860632f2269eec3f1995875f1923dd1934ba530eab644120dcbf2ef37c350446cfb69a831bdfdb4a1f5beef948ce0c8cf338ac33c06584b404d4964780fc02d88f752e72a14c62c1fc3ba67d4c617e08ca2ad57b37eb7a65e2d13cc1044651d46f286902abc60d8c8e643f6b3ba66c47a639823ce866812ce9535af6f9c366b01a7251192661ecd8931b2718abc2f92db080d3f8ec59df87f8b06acdf5469088b35252ecbe557046fa6bbfaa4220f9d4fc8083dcc07b69a2a31f723e0640d16789002106ac8fbcdb101dfe11baa1b022725ec74c590a7612c1aafaf8b2bca8c462ebb3e517ab75b060968d6ea212e6872a7ec091b5e7d2b63b19f6cd7c7b4d046d620d28c37f6fcb9c83c21c7f95671cb56764df64bee8cd5a133145c83e83c3a94e56fc72ea48e918d4aec8f60903c78a63862bcc4129e1593a97ca840fe179a59965df0f548b93dc0c9ba55b3848b68b5cb1c732bf26e65586bf61177f4736c5a962ab97ecff65b3d117468e69e43d0abdc6a422c19190cb04547f6acddb7d8a2a4765ed03b691bc210f82caa76a66f41f097139faeae0600fbaa21da31aa57e6a20d12dd441dab23fe6bbb47f820ac0bd61115f83124551d8088a4ad2d6b63e15667c9fce6ac14700f092d135bcd70cda04d5af4e8ffce28d28d2d3fbc361a1a250d35d718131b80e836e94e9d229580e45766542734b1f5e7c4f578b1581783151a8361821af7efe0b5273b88350c9d30bbe165a3ca0ecf633606989c881ca22dc22731b858109ac3557d28592daa6541006cea90f94765f2b0ae24aac74d0a2cfc9ec8f6c8a0789e66e9d3464e1d104aa220c53770b64171cbb33b166c349097d4166c51616ebf989dbe0a4c27165307bb1a269df2f72bdb3f5a1373a857591b39e73dc773d0cede00ca2e340235a3267a3dabe7feec56c78a9a6d53c94feef026b32d9bc2299e93361c3805f2ab29cb3727ed1273c986290283b1744027d6f59a7105e79aa07b2007e4d3914f9910ddcf042ac2f0644924843f3a70ba13cc13aa376803952224335fc13bbbd19ecbd2d560c73775f71204935a8fdacdc8b48013379cd42a58d5e5959a3841534a1b08f961a8482963d45677c0ac91c60144e0fc3fe063671d1e56b08a1a5c9de93fdedf4d3f923fb99c0644657d90d401069ad927dcd0ca02ea7402c1235d4ae30b91945b71abf4d233aed29d861a2938e63ebca9cf00d05a014d5c5643f2ca0529ad7f04acba722aa5e7da0f389c4f102f6c501bf12572cddba7464b7041cb74372fa384e1aff958666d6d5e9117f36802ea4acc0199253c0291ea44d738f4e5c0a2d2708a9921623c7426c410ba4955089b46c635538ff1aadcb2ff09f8c5193c9642f49da611206fe63d5d0380a91f68aa077b3f814dd8fe6316c2df2974007993793301edfe3127a29c16269040d716684742d3f7d1a5e6d45fd35520edbb2e88b42fb2c5f96561063cca4bf2341de890e920511f12163faabe095cf429dcc25ddd68b2c68a3b0e579955a692cafbcba1645931841f31ca857f9ec89f910aa917bc17bd38c7541d4c05292c9f479571312723c5b2914e68d1cc2e6e5b62e5c4c630c2755ee7faae27d7294f6ac9cd4972d087e61804ee2ea90161c2faaa061eb78ee8ca0104ac5b62c727f21463175d3101284858360509d3649de12dc11cdcb11bf033e097f320fffb374f090929a27765269b74f8471709f8cecad45ee788d71e857df18a09f1759ff4e4ca9415e82fe49a26ccaf9eb1471466bda8b5c3a5b05e6c6e0b5170703afa3eedc3360e214b95e3143473c0c51e8d793c42f373d1bcff9b0fe70abf0fc9218492c58a1f6a3cfb735c4f836444a6d4f7f53eefe25dde45de05dbfb85f92e2a669ebf51c4457326733e0262fa2540a16200b465a9e150ccbc30e26e080b88e8032b1efd473a2d83247c3a783c481d7ba8e597116016e22d3a8a155cf0a90a0c431224c0e410a9e18cd432a89316585da8575322b08eb71fea51e071ad7f2ea857021e2c0e64374d62a8ff7150d0683458d092068f1aab0822af45c4a4512555105724309a30126395a98cd36dffaedc2d2a96821d432ba3eee6ac78c054028274bba4513a462b23ddedadcebe418000ee4e8430f368aca14c254bb8ada8458509a3632d33335529d3af7b81822c56a53b8c8cb63b36c832e0935e30f0cd91a19cd90d27aaf681a892249542059109fdbfa286ea193d71f7c8cb0001f1691a2cce528b6ce4c5d7b30e076eccafeec6810f9c870a89b5d29123fc999eccb4300b8d6d03cd53ce3fa131f4179005590a8d99a49528d47a34adaeedacb73fe22c158ee3cb112d2e63355d5dd61fd52a33d68f156fbce18db77807def77976075acd276800bb2d63d2eafa581ac1c8f32c5ce7f23afabe0acf43fc39b4cb546a8b5381bbac3e21dcd5ae72e38d349f70d857e7877c06fafcdcd8b78e4cdce2af5f6e98126d9a758d8220de8f155d145f07ab2e309bd6617a0376e79a20eb3c7cd173f8f58479644a2cb990f2d2fe761342e426193fd1065a1923311a19126bdc345309ea39589c8448feb3e281a0ae85e008f16e948057f454fec0251431af9ed37769a76e9eab8e287eea4a006ebf7992cc7704ac8556947df5e35f3100d4d0def8cef2bca884285d4a85db7d8007c1bdbc22524ae13ccd3732100fc977291941046a7c34cf6d1f9aab15b8ae5167d6081d2f01fe8bfc1881fa1929820017b6e297717ec6762bd08f40fa5867a9c57b8b9c4084557227146195dc890e81015619263cd07efb7db4be0caa9168bec41d9893001b54b92a46fc3150a3b5555a63ad0a163492c3b3fcd543fd8808b63375e40109b88917639c700e1638ec8d75f0498b99558273c4253ff01d2f5567209e67eabea82f0290699d1a61a43bc92a25727644c7123e79a433ed8f7f2bb688b055111e47145bc09c4d117ec52b7a6f0254a4c0b4f272f0436972b29236d77a25c4b0ab0de58f4b9b8f3181b3b2398795743c87a6a07264ff98af71748ee2f7b29fe06f3d6c3cca8a22bf3ca9d1068b06588b57390ea94ea0df12c0e3c3847808843718fccc10f8cd8a77ded615a030e431bb02be503432879c40ba5327af73c030c00a2cd4a963497c309d5c557a32bd13601ada8133450acbfa4506be461da35c34aa5deabd5de29d5d489eda5b15d4fe42e64bbbac41c4cb53b089df9d0a1991a2184672c1fad9aaa225e470a85eed06da23f12d57a2d90e0b872ba4c103fb2302f311c184fa7d732d118c4842c324bb8988d78dda8b2c29597391e3fdb128e8a60932f882e0df6a3468009ce3a0229504931f56ab8855022b25a9d2b7091e354b07139a838b94facb8778440f5d93b20470e4886e64e9d14b14c57d8cb45dca188e51a57255e9917731640b3ce49332f49350973d771e24b1c5f5229dc6ad5f4e74af31826dbe508f4602b1d9ce528ab0e3c5d0a69e8a76750450927ba2d4c5c5961a349b36498af954811ed7cb0ccbc3cb2e0ef72be0a32fa3f945ccc0b82aad5c3e1495ac12932f40660d1c2225e4d0ecd2a32a3426ee456a713a59c1a536a1866f52fd230637bf4b1a84b31fb298b3b6f57bfa201f2aa00d143d918281b40f0b1c9fc1522253060e0ecdab84cc5539ca8ae0b078109733bf661d3d0fcb01b3f13ffb3e82c93f6ef47b2d74b99b73ebf0cea0d30351c1f1488227ee0ab16102af85db12ee8d16c9546510b716c7c43757a00825fa8a1d8e42b870cd33674f1e4c513f77bee5237c1cc3539df82331942b7933782bcb728fd41b3aeafd032dc98d3f66d01311ba9a3d28968a2791f7ca6db3e4525f5a65d624640edef92e50c2981b056f1294c9eaf285e70f419ebf1af691bc1212bc6406442e9f926254e044180c3787d171e8d14173af2b1f4045060f20222aced585ea030798ef9f206d1e70a60b18a82c36b63416efe6d665c4eec89c9e1ca1ebced34759286ab817b23f3e090fcdba6bed9c318966a21bd42cb533275d9d25a0f488afc2e28edaf04205943e2d0e8cca097d09076d2f93c944565053a3431d9c0fd74b45d390a81c10c8f16ce72687b9bc8a151e4445ed322e7ee11d76f63d1bf0fb3dac92aaea37c99fbaa681fc97f906c76fe9bf30fe8c989ee2bfc39b217ee5f466201dd82ea2b7e66c75b88075e501e0174e02f7fa2406678662d98ed338c65d9ff5412c8caceb32c1dd9b43db98d227837581667b2afb29e5ee9badf31a49c62ee091f38eb3b522954b98caebaccda881d10e53d36a1dca380fb424f2927f1c3e490f592aa28cb4626384d3a514b5d4d1cacb560f1e3370ab422c0fb1b4e2a2f011829661fdd80ffde6ac2374dc8b9210c1659f7b71f76b699d95481f9951a5117ad2a240d4f8b568f8b1b0e70a3998845d90c7c7db4800a2578df8a39f4f1a22b8bd0f3fd0423c6acb0f4844dc13bd07fe05a2353cbfa9675c62b414c3abf6a5bf962a1dd2da636734ced26f2ce7551944864b784a61c07188d0019cd69e588b848bf82c06a9fc254dc9f26c72151bbe473045ff370f874a157c004852f6576ad1945559d28e842c404c471109e442e9932a9b269252a2e70fc468c37d19a0b905a7b88e7133beefa689e1285085c1227d01629a86d28a6e81ed8706fb68b11f752d3dd49607ee0318e94863381c266dc4edaec0f1a3314ba16de7109b3827c08692fe3d03ba630667b047804577963de27ffb6019fc86ef0db862e431e1f8046f46be459cb3c589bb3ca308b0e9412d1af51d83fa7c5f164227813b86338c25bc1bbfe38e29a2fd77a02eb866c7aba6b29c6b7494d23034d5c1bc82817a7b9af7461f1c841e5ac7df6ec48054d9b0997b8425889b2828f7b3905216ec7fdd2380662a289cd1824516acc8c35a5dcff9bbf2982900e3b708b9bb44eaa921084206cac2ab4dbfa1937f88d91deb24e66978936ac33e89edc7eabce5e7bd5f18f68f50e6742302f70ae8a2a4574b1bf97324e0aa264f1657f96e51f2917c989105560208af4b08371da26d65add3bcbe68df1f71167e2c6802c1ee06a1fd6c1a89845f27651a7962a23235d6b752e942894f55d884d1ab60c1e51f41553ce5b44f1a78d92680c87cee223388a952fc0e18226d972944d5598b0250d4f2fdf0f8e1af5e3f1dabc8a658b06a663021ed353aef3f57ee4695383d11cd91c7f0b6d53071922d5d6dbeed6a1b39c0767038853ef853018d1060346c1b5eb3e970d4e67ef4795eeeb26cd1679154cc687c25a4fcab90b39323be6c939e4c8e55f76a1fb411df0b2c1191455375ba7453e6a460244314e6c0845500efbc37ef656c9aa657458bb42230bc8f79e80672e239835dd4178ac857b87085f6b5e8c24a1c99f1c56327bf841ad3f022e8817e5465c561414c654028d66602a09669adb1c94517b35eaabffdb23a4d13116d954833801ae2937302d6e33d1c193be3064b1666d8cd36df473c112671e53171c98d1617ff9a8a037c1398c5c40d26c692aa5a82907f24715f1534b67006afd4b37109fa5915e6d8658a4ec7e3460c9ddf8686ef47e0afc0fe60d42e56a4622333700dc53268500e883db15496d2e8a90130af9138c9dcd2215bd3646585dae904a1588596de0c860205f056d936e16c34dc94cb6b1f6bd23e861c40cad5c333616c485e250b75354ac8585c2afac9ba6f7582793cb83853da149f3ce6fa9fc4b598f6e3687061cd14c0deba4ed54975a171c759152e21d64a5df99520496464c6be54b154e69d504da5b33e65935f7114aa007ba9ab4c6f0d6071aa98a822087d2f5d9ae5cb1f5a1719283a0d03ce193f479f3be3260adc33baaeab4d970b1f89200cbece9d2c1e804f4bbf502375b6f2fbf0dcc7966865c1dc79ef5191ec34816542d910903de22e1260e03816babb2b9c59614b46e2ef2aeaa9930c8f2cdb1e5c238a32ecf722363aca43438ab871a677d3e79cd4faeab94eb5a77717ba0212acc5e990d8ab74cf0f2e11537ec7d7d9a0c730678885b22f4ac8beb50cff012595f1b224fa0bb2d00a3afab1f6d61430b26cc717ff7dcc6fd322e44c2d0f0f535da0480caeccbd4b0afa39d82761ce3de9a438410b25e93101380305a45422b721d49f50e99e10b83248abd667e1ea1a22f4a00962f6dcc2d7ccb43c140f7208614bcd2411779e74e090af28a4105c50d113e3879494ca3929b00ca99a9c080632ce2f8497267f108cec210087d64b560047004700964341818312228443210da99db46fe670a82774389413443854134538949515876202000eb544001c4a09231c4a7684432581844321c1a18ea802203962240000564588e8e40c11826355291457372a8000efc640023db7c7c9cbf09bbdd8dedeaec8b2aebedf1d0487a4b611662dcea1ac780e5505e45054440e9524395496c9a1b0500e35c5c6a1ae540e2505270485c249a538dbbddfc89a161545df8af0237c27f70380554f19e147f81bf410d88d4511e882fcce9adc2e23a293334495e2363a6504125a4d601d4860131240ab35e8e9f9f922e0bb537bd3d37ade8ffdb913f501478c0400c08b073eebbd1122dd00ddeaba8a10d1c9192204c7aa5228ae6e74cad70d24d48a0ddfbdbbbb5935a5bbbbb3acf439bdfbbed7c3e58811a70080841ec629236c05817bbc81d994fb6f006ef574f3fcdeea3ffee436d21d10ded861e5ea03b3bbb1e701e5f4d50ed793ecf65fadc733f12256909849a8879c5bcbd1a2bd36676f36e6ed3127cbe8533fecf23a1572cb1737fc01ddf2bb7554779f3cfaadedb3ac289f407ea89524700950106d76cbcf60b78e6eeae6fe1d4547ce16f3ea3ae5964fddf207d60dbf76749f5af72079fc78970b3a2ca74575cab8b5efd7bf1e0b108f71731ed7f3becd2d7fc0bae5e7e1f6902b17fe36ef066629f3a98eb98fc52613e4b8d0eb3be015092707a0c0cb87b5211f636100fbbc4ca751b33b098e5f82833855da77bdf9cf4f7586027f21d123ad15ec91e257b0453c478ece8abce30faab71d10ee82c9a76e20168acd1b24a6fa0297a7174a4bf4b7793fb07c207ade4b88ab3c85989dec9e4ebd83ed52d5296d164d8caa24a266134fc7b66210126467d2d5d28413c3ecde3d430aacf7b76249b0fafcf3b67e87c18c06766e0ccd5eeaf874c44d26d29d97918360d8138986c6c0287360da9936f8b019e3385166601b33af5b22683028bc23d28f401f716fc4de087b23f646b8de088cbd11f546546f8457df8bc5f901b40878dd2ef9a7d5a1c065413e4c2c528c3f92299c551f35e2b0486df945bc3f230eb1117bcb6347c416ef088cd18b40a0e8fde7ed665178e336c1e3c2d36cdba3342d077a496e554594405b73236358c4028d5b1cbb86514bde667577ca34adcae50658fbe2e6d210809ec77bd2acf0de0351ea372a490d5b06c18cfcde4c0d6186841f03c6bed0239189fc79bb5715ca4e1b90c389b435657e022010cf28e4467c40b2118f29945b14cb3bcb3cec3ac77b7a3a483de6794e40fc26b73f63227e1680e5b1437abcbe16646ad3c5cef0e463900cb4159a2dda56d13d8384ca94297a358d5afdd22632ba70e5c072105411b19563ec56593cfc01939ebd5dc29c95a8bb2cb56b01e9b3223595e1641a759ccc059793592cc7d39d4a4595002150894f91b16ffd87cf59bc03d826520cf9c31a18f272f6fdfbf9f8f979ffbdc37f01fcba5adc91b75a2b45afe9c93a75b680e7f19773a45980052a982b7944cdd872730d016c1802ba44cd445040a2913ad92f9f630f384ab238f4e4c47cc9d2c1355526551f520b8c328cedf86f7cc83e622b8d10aa00949d6003007350572a5275355c66aced33d91c6e911cf818015a43b2c9de726f29a594522619410431043b04bd07ef2cfe8365d3dfd5b261b58e2899cd62b49b958d8dcdeac6c606357fa82348f83fd5bb27c76bf8acc685c367288ae2bc248ee3204c2625b1156e6f7382c5e851bc1a958ad7a0387719b90df5cd390ac56f43372c15c6f9063ea870bd790d8ad7d47019af06c57900a13a85e235bd07e88807080734afeb6bfdb4490d084b93ae007414aaa3501b8f78a66a52a99ad349d51f07b65338ab9bd52af5a3db21ed7824d4d2ee862360d3ea26d5ba05d0396fe19c6c6a5caab189a7761e4b140d90fe5f06c14ffc71ef5acd2aad3e7ce0654b9fc2dac22429b66c08f6590037dc001882b13a8fb9030ac2582e9cd64caa41379881bd883f8b2d0bdb61f83500616f3f6319b36d8e60e01ea7e3cd1f295419630b2de6e0c18c32df9b3f3ad8c18a2763a630e2a70d1f92c90d1580cc4ec6344d9062efd0b14e6b6db5d75ad56f4a29a5bc8231812cb6ba7806512ca9364d0e2f84d69ac0bedcce9a82b6028429a16366472fe4293e59aa0d4d8e10828534ba5823db407f6e1f9cb142451830595491ab4fe8a460c1e4096093e01966609801089d135d7f8050c68b5e126cd4809482c298d9814a995c17615427ca10200ad80c5b8cd8135f5be9ff4d167c69671870a291977019f767cd54a509466fd326e6a4b867cc29e72565625fa0943a5132626b2dc6df5aa229ed6253c1b49d0e907c4462bcb65f7a9fd67aebbdf62b7d382cbe94e2fbb66b5b2dd53b6a52b7b650b7d2ca654e8cb1ae7de26e5fd3ef23bef276da4b712ca08f933b0e065f34c6f3ce39a7c618e3cc33768d19638c55b97c73ced8febbb1719d773a10804d475b6b2bbd4fc5d8cd10f4aa2984ec322ffea5bfd47eeeeb01414e73a60a374c9c14433aebf5ea7db5e2bc0afb57ee4ebd3a9c741aab434d2655a9260b001b4c275d59a1aa9382d9e76ad59f1270c425985e7a6ebee03d2ad6c8a72f7f8c73be52896942bb80531e95eaa881c5eb5884961f27577eacf0b20d37f8e91772c1452fb4186ec70479ea4b0d50e42e5cc22a487891c58ca1331cfb2045942f5ce380050f656812c611031b447c242303711c868622890b92cf0a5c86a3b8546144b81b02cbc0c52a1a8c141db8ce329e63906d10430c8631ba8b526f51ab46cd4fa32aec9a830937a5566ea413295188d81836eda1510fc944286506222884c1868d7fe8e9356e6e1046d90c6981c0615415e2ee6891a2a3d6dc4acf864ed4d0301cd251aeba9d2806566454d30d6236b195d3f9a8355f85f4068bcdb30ec9bfb3473b35b562471dfacad1713b86869cd0098eb32485d390d165705e85ae81974799c7c75b113c4525d4f1131739682a7a716870a6496bcaba76a76787e766a7119adb33ffff3f6d918700820516f0e143447d01ff3f5cf47fd0b7f67bbcd7ce53d73f134a5571ecdadfeeb7dfed5b5b415de2735491230d19731cadb5960a2d85e1f160fb1f811f5e2955f171cf3b2bfd7bf349cf89000d2c9d9edd735ed4c56da73d58014c4a4004ffa82652315812ba3e8e6d1e0119ef5c387808cd1453dcc33a20389a434fafc8048220c2d0910f6204c9e7ff2fa2b4d6294a3e5671b6141bd18e31a5381b19c1b00c632a868754a7efb704a4b835a506ab1787bbc519a7a4d0f99dad2bcd9f5479c2e785251fce67574d77882164c337486e67890c0423454458b17aceab3e50d0cb68621643ade77f10fa3fcae3f5a0c34df7f7fbf5f0cbd706e909e971fdbce7618c93ae1eb5ae37676d4bd7a4255ae35610219a5050d2bd49494a955aa0c5784b1c24bcb5546276bc3878f4bca09950ed939e67bb1519e162aa25aa9f9a6da8c52cd65c2faed52e91d919c495f625d6ca643499d0f76c1056ceeb7b5d67ca0f774b89d81d1523f7f6e06c1fe396112d3c2d3c2dbdfd4f6bedb5ce04aa9db6769bbf874d60b55d720005d8df542bbd852f9a38f58af31df617cf4edfe961b87f4401a1b49cd69b3c056f94268a2d8a65a8c682b6dd7f4a20428a0cc14d9e281a39b25748327d13b877596e7d4377c9b958ea1b718b931c3a51db10df371b6e95f3d177d6806e8b003020ec3ec2be0a3fac3f628d05c5500cab6e5643daec76db151df970b5da6d12bb1035ca1dc564b4a058d0afdc384356576a360964f8dbb5ab956bb7a84f899227e0ad4041321e8a6834f7162b0cbb0d5d46b460117b188a62a8058b9622abc015ae69543838d5dad81499b656bbbfc4f940a7fbf8c0001f4456bd0230858f90c20d906a0dd001ba69d1a015d2114f812178d85534d467e7ab244ff4469215a76307bfe489debd5d575654c91752196dfed049428289275a5841038bdafc21e42868e6872f8aa400f9ec7297651c41e51e2025b6685afb775487c4754fdfc095e5ebee7ae819d5dce3c8e018e256bffac1ca47af381fae27892ca9460120c1276c474eee1e955d77d588b56c294e0db658f21393a7633932f97a64bd062f47ef7014fb263716945a11ea51da4518577c0ce80590e1f56221411a6efc46b8f9acba253ff0c14126c5a70c6fc7d9620df7fe19f970383b5e2fc9a70414c3025c54e4f5cae7ad5adfab3e6ecf74e6b7614c0c52f176ba2be06523e006056c00240172c819ea11a4e4d261d6daa1075bf51f2560010401a837170b67474b47cb3ef0d6dff356b11a2629cac0183fd6f192f5edee89a19d134162bf40ec37f7c71863ecfa3fe53bc26c7fccc9ef639d626bacb6877aefb2dc9476a075ee17e3fe23ee178f4b381ef5699264c779dc75b730a8df3fbbec8af61a4945283c9aa7c70c62e561ad0300c1003326c6c3fab69b110d228404c36b77695bbf4502effa95c038b6a1ae95574ec90e5a58c105b23a7922786ee5d648fefcff3061847061b6c8e57836f460db5a4bd2681bd6f4b0ec61d86bff1e5f7bb4725c381fb05cf575380680a729a26491c388a12c445c2c1c0f7a8e7e11614d96abbb58740ef961f526ae9c1e2d57278159c230c12588c76ae1549f510e5eaa1aa84f5030d40fcc05fba971d574ac5d8fce42cae909d0733aa53802f09ec303f8b5c33371292319340e5f52b83c6674038ce64dd4ece5c9941a8f2e4a0cc5b0ec9e44f122002f444d9c60010388a5da0a03dbb2a33d2010672d118e48299be1376ce43ce13b82af7437ae2a22c36b8ea812655f3bafb54f5db4fcd9ad6d87f9b4d65e691d2b4cdf4bf3db5b29a555773d430fe2e54d8d1c9b454f653d5631860ab654b7058fdeedcba9e9b685675046ed36440666d8fab7ca501965b5c2260e29cd57f6dea00efc31aa77371f78f6fa684b048588137951f5ac162002fa057c61d2666c14b33f7031041c5b10818518217a45cc2106cb16485986985a58fc316caf1759f02b37312b1ac0d87a0fc0eeeb815a2d10a65fc77ed8088f7450e0356e262131747a0b43cdb60ef1b003473722ccc4d1a5891e3408e3e58a171d8ca6d06a972390d823108ee959c732ac2e882eafba0af32f849604a89601e39a9215a37f40cac18a18613a97dc0b882eefe3471f79a1724695b4f281cc989e448ece4e1538b8e0a96941b37d9d7e0497d2b79fc0b4b7154240bfd22f36ed4839d2f5b913ecfe61c7715b6a3b6d7d6dd6664a0bd74d317f7830431a1dd5e68853ea9a27b0305d575618a2f9caf543564f703b7f4ce2f307922a5f7cc0359eac51c66afe3040cc1247734861066d099fdf82461b8176dfb9cddf718e4eb823f623488cfc77b1f6b0765d3bc641867ccf779c74e47555eb6a02ef15e5ed487acc70843561b75f528abbe2b162f57b7b143b6a3b719310f0567484fb60d3bdf7227def7db7db9dafd15e88666b0ef5e7af6fabeda1b51d4fbb631bb83b36a1b7d676ed35dab9b6a3069a72767a908008f9799e3be487ad4d72648522444498375f7b6bf65a7b6b5a6a5a6c0fbbf7a5436194cf5b29fd9aebb5b6df5ac7231a669b3fdbcd08178363eb30d3a0dc960481d7d6e0c796905c705605e65d5979d328b47bbdf04973d160b50b56d8d18c489658f802d12c2501424243831ac91ecb47a1d81e08080896c79e5536e1d73bde9ab72aeb5ac371bcadbfaf73e7619ed56bf10cb3e8dcafdbbef93ee9f53a3b377f1db3befa7e9d7bfa8c8810c64831fc75fb2dc9989a5ed40818bc7996a3e936d2e6dd4c6f3159ff3b16d08557bd03012eb4efe0db4836e937a3d586def74a3d4082e0efe9725523dd5f02fe1ef77f54b5d5b7c826a27538d25f52529834fa92c2300cc3a6f90bb264af9ed98d369b6ab9a11e52cf11f2d980a36ec7ab214e78a3610712a4e7496f039d91678e79876318867364620ae29061f837a0b51e470dc63ee748c739c5ab33f94bcfc4c91e13a218bc58917d39e349131330217bb2059827a4a4d1faa51fd31887ec298d6deaa36937e13e1e6c4db767164b47261b027addec693b0d7cd00bd90ff58ea7ebbdade86fa1b6f7b23aebdeccd2d1c13a3b18b37a0fab27a7075c2eb7bb774b10b65f7827409f53dfb8dfbf72b23cf09e33ce3d3f3de11f3be338c536e27641235ecea8628c3190a9a9e24eb7900da68e08b51f6ad1524be963da4381e01e7c730d3b5596a8bd392aa7ec65497255e942ed54aaa6dce18c763cd428b136bc1b59a130559c2c6d6e4892c6869765121b9297252f499b9b5e6e1e92a3f6a92c1bd801f222390a85da397dc86a93342a23281449a2c21b9bd2c6a695eaa2121b6ed7787baae38ce3490c49e024902894e5d68e78026dae24a199a5681012128ae106c17ac8f1d5c482e674558c5d5a6b3c053f857271b73cb0ec145af0837ea4681dc50994a7b5cfde97e93fd0e909109bc1fad0895c9b00a26c268144d1d0f04ec90a761737aaa2c2be439ab02cfb48fefbc8421609e2573dfe3fa57ad4ff4268059e87a7a28fb662554a9f566eff0bb29ea972944441ae4b9101b01b6d804ea027d0b9fd5bf9f5388e736b7f677d5055332b47d5ebcf7e18171f1720acefcda4452945e1ad1dc74aadb6e2ebfa7b26d973ffe3e023926c61a0b5d8adfd91ece216bba8bb4602016cbb4a80007682d86bdf7f461534f480c2d043495eb46ca93b196e0d260b45b4cd5023d3038d9430b431354963b27020d196b4a98464d0d1bd219c62a75bc2df84f33822069c3190aa12004ad81d4216c70818f8d561d95181d399a295e75fff5239f3139e99b5c2e04f2dd5646e72f5d6398a6c842cb6384a9de349cd1c375f259109c57bacb18e2d39cc2336424565f25ee2685dfdbf65e5905d1a8cc9caf1b362f1d8d153edb838195c690c6e460cce140627e30b0e2cc3d1e882874186fff88f0bd6153e6a30b2033c0708c063e43515578bf1edf4de5b6d08355f8b2d4b35c64e6b05a553305189a1ebd31242554cdada49042fcfe6797d8df2d28e27f244f2b2ee59cf8e41008f080846a85502284889a3bd99c8b1d7ebf9aa124822ce59ec7a8763188e3b0c458d13638b4c8ba2a6b88ccbb89c75b96f091a6d785eaaaaabaf594d55d9bc0d895874c2a753593b52ce1f92a22365f9b5aff1f46cc9fde31a8a8a8a888e8c847856a9664a46f4a8a6e76c7437ab26db6f6c6a28aff749be1fbdb5176b43363d7107f475bbd8628c6f76f638462b42bbb59d4601a346bcac6dc637638c898244c19f1d8efa92e388da3b46ab058fdd809221bd828a247194ebb6de70b44389c7c8138bd56a3c4790f40049b2c9bdc991dcb336a454b34535d7e83abd5e4d339a108a8666098a86a752289a92bfb6ce09f822cdf05e7bcd866c1b09468e63389275dc919bdc7b6fe0dcc0bd9bf6564008dec702b8707cafea76247a782495f891d88fd1df92002a7a1c922444721f926752985d377722a5bc7445bbb3fedb1e82c4b72bafa0f090ccb96771ff4ca59a3dedf542aff2c4cb53c979793a4d5235aeb6cae6afe5990b27d3c499edd1657bf4c30575b15d93ea666ddfc9f18a826eec7f5ef6401fb4443c32ee6e6dafa2b54532233dd65ad23586b98fb9d3ec0a73ce443ba21d1152ce2fcbad6b7f2cc3fbdf6ab6e107a529b7041345fd4b999e0c4c8cb125f9d821d66224239ffac40c103eca29903136187bc271c65583c4581b450997d7acf4eb1ffa6c002000b3b50018140705a3f134c951186731e301bdc349e1637520c2fcefd70b14bb23536bb09d2aa41223ccbb5af984d1f8656a30f03e06ded35d4ba26cef36e380e9d8a1e11bfe04aae5ed0204c96bd19a9e658c4ace6151d3196135f91f0a1aae1dbe5de46121971c5871b66ffdd1cb4bb21f14e43618a575024899807499dc607d3f648b4629db371e3b873e5cc24ca0adebbe49965b5ed56b206579771afe5021a64cfd61b32cd667c9812d320ea30f0989c7ac36d789d525d6907c8ecbe7d82cf91be196bb0f98fe38af073a7c5d43bd057abeee8a897f6f112574c7ca1aad1600980dfc0416c6ed511bc497669e3734a3006bbe8f21f4a8cc1a017db3694c6a18d7a7d61382a9f7e895e86cffc211acbb9bb458dea44e0fb8eeedd7b2baacd12941a9084bccc908286e854a02a92df0635cdbc9aed04403869b3ac1c1ab9825261122f5cac9b0f8ca46007d505c9307991db68d6d26069ea414a64863a396f4eb049734fcd83b864b4bab70ebff51859655f0f0ec8f1525bfe0960783cd525aad0fd3dbbc7dc1cdb435a36df4a1dba06a0179d9c9911c30a1e097942e32a37edcaeb877246c06269141fa313a4083c75cd9644c4155d40d6fd30e56ec5cad7558087d087013d284f4c1929925c41c5020c3043f10ac00f9ffd9c712cc5f116050bdb716377db11e58f25eb91c1c84de1c9a09769cf8e04311ae724b2584941e0cd4d5395984f66b85cf46c082bfb6cd0b5b9a8adc85b31f36a0274a4ea8d0245958b82886a50c6a03fd8a2894cd19221b9b0e4731a3cdde83943b676ce42518893f205730383757429cb9ba6c9b50864cd6dc15f53983fb8a38938e637ac1ee07981936c9530e6c154c7b883a0465012fa8cc56b9d268e6dbd08e47413eab1388b246987e5f0f618c1085d608a22522c64cd4104befe44d00caf93c8b496be50d63940cd43bb7f27011a6e9f5d152aebd8390f57c305ca59ff1553cb8df9d63fbf86a87e0c9b0e2c2a5c05cff3abc4a164827cabacc121dd6571c987df39d4bddb2c603e7f2bbedcd764287751c13e93fc90685f009bab574e147b0dd5434d47bde38ecfe1148ba0b1ba576fb4677dd10830ef0554541bce2940c0eb94b8a78ad62dd903895e00688a8dad17dd66905e61bf39f1c7eee572b4a4f5a68e170aca74a5772b433705039b61cfe9de6146bfdf9b7e6c12feb4a8b25fd5b9715f6844bccacd6cbbcb91d07a0b5ebd84fb6c44449b5385ea04040db6c7a4a03d8362a525573a40dc48f98488dd3b4e3dc5fad57d52714cc239945f622332e18442d486659c61e99a58d444df3aa57a8bcdaca4bb57f3d6ab5967555dca212c6d33ae60d081e74a5e85f04cb58f04a0426a782dcfc0b6e073144a78eb9b74d811147a2ed273d8c971b6ea4595e7990fe1d528c3fb0d1c16ca18127648521eb0a3b23d6520a3b549ebb93849fdfe05b3b0c23135ed0fa1e3b6199e4cd443a91cf8fa9287a2514213a8d9b33117317586f488abda283022d44620a2b538371809fde00719f068f51e1851aaaf36fdcbd8abb01f602270b57dde63b6f1da964fa17e682defc84c46502b98b6f55dd024a9f68726d0349431be52bf71f726aee0dd43839ec40057c1e23e388c0952bbeeda801e9383c9b3f8b5ee97a88d43240747aa37b6a8c258e48b23d98f0ab88dd69f358be3ed2393846281e58b51e6917963f9cc9d8cc03000d85af957040648507cbf765a45e010fbb188063c3748268f3f561246d86337b469e9f7453804101c4f21477d44d2d5c517a58a6dd286ddd3bde33d8d46cf97ee2ee4d1451c8623d3df5a026fd12f1c65f875d530e0bc9be73231d92916d2c2af3466692d896f9b2d010fb829cf78509c92293373527d3d16499664ca3d67ad0433ea5beff6bbc2174f7a6df6750ce97670fb211954c6840bbae7d6aefda47edf7b3b407a3deaeb3b96621157ab1521429758b5ad67be2dc9a8025112c7c0dcc7fb74e56cbbec07fd6465dcc319bbe5dea57346347b79a8c6d88d08ca2585f6fa1395b111d8b378979b7084d4af19fb504f8db41872f03228e9a3f97bf22a3a3a08232847a28825eed7e348ac1f0c5414deecb2fc8f73d85970ba6310cee60afd51fbcf2046a89e2b585a5ed66e1fde9905f235dd6313063fe45ce0b3120d206e0e6414955b95206e85f58f29f0217ffe84adb67e241a3d6af30f2bfc07c6b8b5bcad051fb77f37d20db37a7c0343f92863bf815df7d60f2ee5660616c11eaf4dfcdff81234f3a1e8dbd6b3894ff2e905da68c8df27f37ff33f02ae8f073f0eaa671803dd0f5f154fc63b5a264df852d5dc5aee083ec7895ae4c92521f364e6967af14bfd83ec09d323ae01c27160b8e1da75ab7f9e2a21d7cdd2d4d034a177273c5dfcd062a1f33255648db7c0dedfca4f5acb7422d0706bc09405e375a98763c2e483e2512ac763c17302e25168c761c17389e12174c3b1e17209e122d4c3b1e17249f12297c6ec7e782a1bd9441d07e9934925d624d7fac2434940833f490a917944c467065cf54505568ae1c3029833cfc66a1155ab58ff087585fd0dd83d8922433f00f75c878152f4004aee3f8d864ba836e8b0f190b313035db2ed1e605a2bf55849659474296d374d62fdccbd5d5edf8f3b7684c29bd9aeb5c0f2de145de43040a6d906cb2d832ad6b32fd1e8cce5d7ff8520c60a1399d37b3f608f311a2485ef5db9598eabf9f8765b1308a294971950a997bbece0c1b51769f19b62d4455a67319ff2404eeb530ceb4ae1ef2b1a8d499de8184dbe9d1df87088ceff30fe386c30f8165fe86719a19554f08d844acbf8c1001002b5e0024d50aa756daaa3502b1b717c79a7deca2874867a5ab6559324632e9e43429e2ebfd1b8485f33d5c2df4d2438b5343a6780a0244d2fb4546733ae5b07f0da323f5979caa2985d2fc5d4f9dfa51444e714c14a13250f0e3784beb516afc80e4428efe6c2e67e6b637c2b4017d82f3031b8dd4d6240862a08d6efead71c535afe3bf7fe74d1d1030820b6b1c0fe1421cbfddaa6bed06b9cc003e407713bf638dfc54423e6c62d71d17f33137194eefa36d35b940e611ecb0bc5b9a9113c60a09a733ffede2b3dd6b93680c2420076bdfffd3b04102fccc4fe82e5c0134a7b0ad6570cf89c3d20ba3770ba4413c46203f859f8194d0ce91c2b01b8d52a6897ecbeb3804520ac8e552e944ead65cf66303884a2191f56983d5e31085b19b36a6e737823a613019b2c6fe8358512b5866a82a3ec63a4ad65650d4344165f5ece3ac50eacd2a927064d61076cded35175234ba7d4b731ea08073951a01c664fb888f2558cf67809254b2d611e0756524afa307d472587d5e6af66f450bd87e8ecd89b5008887f803bdb6daf4d73188e93b6b669af8b6d4792bfeffa2463e37ab8a83fed8c25a2cd4d53e65e9685ad6e27366fa9677286c17759a69bef8363f172d01fe73363855fe97f02e7f1085ca571369d4641c569c651d9cccca823fbaca1f2e634f36357c3890c0a02c0b50355cfdb9496b5c798b485302f10045bde3e99e90f10cfc69459b384f683a5a8a008be28b70ad40c2d7d4c8c2f4bb5a9e667c130db70593386a34edc32a5e9c80c5e695664fa01336246c56914424227907446e9c04a703a8d6fd082301f444fa19cc9e7dd1f6a9593dc3a3029f10da715111b7c5f4929bdd9d258b5b4839ae052286f737977a0ee96e52409cef3305193d572025278a6d5dad656a82039d2a703a897b52ef3b7d3a08cf9bef17dae8d1fccd3acb6cdf8d582e9ed202bbef61a860975882b96ef2dc9626c76f5281f411cd46adef52834dc9a223dea926e2e0ed4a3d30bfdd7bc210c51f8a0af0f63230765d5cd44d4701dbd5980c2cbf173335c8c0bf913c70407f9ce4fc5b8f18c0a433cde9ce18a2b3f11ff1e6738763f45f87c943c437a227598ec2ea6d67193fd2c68f0ab16da128a0052bf808ba21ed4326a46405c9d60bb605864b5c014da704e281f6ac482ea178466543c31881c103f85d10db408419394ebc3f8518807b478f99f7472aaf0608251b898da09bd1266579088e1ec14631541740b7dd830915448f37813ae911b1a4bca1f1ff3f20ae944cc4a9c49cda24aca9eda30ae4887b129fcdb42845a3e3a46d71d408f03243bb4252928c03fde7bd37204cdc2411c22d0d6c396df4cb48548d1ba61012365d6aeb534690fad8e7a3b31a88b8274d817b36e2e24913a124b2c4180e237baab19bfc21176140400f62b5acae0bcb3c68d39b7af88fb35b9982a45cb33c915c03702fa886db6266ae2ea3742362b7e3a534849b24cae205498aa33b8c58380f5f795875db11a92d27ff02faa4a79831aebeaeb78eaef2ad0b138e017133782423dc18252ec2c1f7fb5f3349e7da1db0ce57bcdd8af8ed61495c674df22a4f726d0a01d82ec9b602d05f7f87066daea903b0a9ae9dcf268ed73868b868df933edf997daf52f010e0af97ed2b097002a301cb0193e8457daed2c71105f89810d7d29e06bc47990ae66a5816b542354bec1378e116752f32f13f303905779bc2cc96174b42db2a3b9fe05b605d195596714c785ce0b294bda4bddb9abe94d201467857013b899bf9093a57611ee655ae55d0a6edb6cc3855fc9a5dd7a8bf88ad12ec9bbeca6b4722d512fc2bbcf07eac7b82a6dc0c20085b3cc0df9399537c06e08db9acc88f9a4da754d2485011ee2b13bd0e06d26853568ae6cf4d3978dd16e077349062b5943e65e5e92dc1d791be126b6ca4c0b7730d18efd73537fe12c9cc5a0d609517401240c00053938e6471afbc7a67b23f50b8f732e3eec16ea440e4c728d247837e20e2d03128c438b0916ac8e384a9732008ac3a5c0776b3963bf39e78c715461594d93a10c00692556c3ce14178f97c6425719202eb9806baab520d3a2e75fdc8528441a3f003c95af437a3143f4710b7092f6fcbddc9ca05ddd422857ac5a264c62fe349084af642112904cd649006fcdb3b2ac05b2b94b512292bf7536af1f5ac31eec0855bbb9e6f169c4b2066dc2c308c09e86137983730bac3d0998e3dd5e0c4be3c925ddc770aec88e1b62292ba6c109ed5a762d9ac7fb175f1c421329e6105ce7c157d97ffce70aef38a049fd281c7520a0c8b91fbd2c7531d43e08dc394d7e2099057ac1c0910ec4bd12837e785294d9ec06b220c34afe280f03b36f5974b02078d5072f3fb7d492497570813394282be5f046698ed8433af72ed95217aa2ccd120d86bf8a46402ff63ed318cd324b7652ce5494ea0b17d28b937c46e2ac79ace13d02fb737d97f0f9932346207a3364ff3c838ce71f34e55d17e93db310ace2c912612d728a3199b48987fbd324252ef8868173a214cde3cf9ed3aa7f8b2223562196635f8ccbc0f90968f4103ca84ba4144128a42a7b59fb3a8a070e65a7cd6dec17911650b7cbbd6f85fe0b4d640d6e23df8a2f499a63f9a1fd476d3525f013113ab14692b1bfb770a396997109e1e677cb4aab70c1436178582c8217eb17fbfc15f21a4d36a2ef1384323cbb46c72233ff6e0bd553fed6993c9c65cf5b306ad3a69abe5a03a7bb85aa6ae99aab5336be586715d6dfdd92983964abe4e7525b41258cd98f55f33c7dc1a940dc6177335c5c37adaecb3ca67fae098bb5ada6161bf2fc41bca4178e2b0e505cd72a06980b8124fc95785d7a9ec49f50ab421ba6727106fd55141b3febd029ba49202a4d483d0703e49c1ac5a7f9815f2f1839bacc382e493f049bf590d7d918057585e57e36275dcf22694ca9bd6feb85e5c34f50aeb778a6f15122838b241db09b25a6c0fc8df9e501255d1776e22a14a0fceb209ba31367fc69a233eec275beb47e8b0cad15ac1df4ca7f4e7081421ad85e0364de51eebce9bcbe8cfc6cf099a1726a837a27a2fbd6a174a4a1437dc645d7477f6afb08a7fed97bb23423990f5d0abea03c6fc97e478b866d53ef294b9ced70feb344b52827c751c68ad11ad80fd1dfd9d22114c5b2880b5fa3e1e57db926a454d4360850d8d5332faedcfe7ac264ea854ca7ee34ed4aea5a1108b9a6a768e460583e1d404bb5056e3f20ec1ffe0f178b9712b9d405a054e6dfd908dee50907e3496f2f1a115d3fa5099361888e18717adc0c7348f08a78b5604bbf00809daecc8f423aea53730078f339b887c795e67e7b3088038c282620a4aca5b8e94fb04a621de24efbf0dad48d22d96b99a0735aae444315a4c3743263cc7501fe5b6048045679e006982944ca2495def9251b9b115b33c79d412623822e6c3412c618fe66131abc63083a607e284c7d99987dce094de83e0e0d111bd4b7da6ed8e0418f4786daa8b3b9278f2f0d5a80e7a436454d99d80e292a0c066836e94ae61dfd9c0d43dbe7dc4068834e8e01e9d09ab5f54140f9abbe17644ed64646fa93971098212c686a9456d65ab73c1d311d8951ffc110c315abfacca2c9d1cb033deb03c3793e8beb187ed548e718a5c6cd0d8d30aa1df1fa3ed7c34b61fa95b9043ebc20d997ad14af532d2a56e073ffe87cabb5d220a59fd3bea507c24c61d2bcdd84d3b12958f23c6ade801fee72306416ef64331201d4622359a56ea8c9ca9bfc9680c9b03beac54f9dc60006aa3ae6795784918124f766f549666e79238eaa10ba49ad209f55f3fb6fe5e83d8cfa462c329b2ebc948df1e42b300ec0562e9d67fb9c20471c0c15e0c174266e7ea4332c6b7bcc6616ca9dadb753b9ee741088717516dcbb3f0d9d5a60bb2a7916a186bef2a466b3395cebd89523adbee42e2976530869e89b3225ed980ec00aaf33a32a16b10472b2eb2efa1140f0049dddc87293ef67cbc8ec446aaaef09664e0785a5974d232c16cf667f789cedb9049669753c442a46137ebb382c1c72baf3ab054929ba997d9d3f8bccac6ab8312a63751fda8cdbf2645a917942e5470fccf0c157b18b051f1ab5e5f2196a96c489a414a55a6802f7e73ba49421a574d7110419b4c81b79cb1645274096a8bc9e41b286b10b702f31fc428e86536d01398088b2dc1104cf564310da306623c62cb3d776bc14b50528494d3f41cd4cb86d83e32bb8e1c466e5ba559e041c8a672104cbd644e83763d495a32bc58d39e1422b6d45113180a1f396b264d20e866dea1a37599b4fc25d3fda67f22f3381b1f8070b5e3f4e9f5002aa0f49aa4ace208620cd92d5c5d07669740c34e104ebae5e74c8129b0fc4c895ededa2bf1017dcdcb59b2b2afa75cfe84d1f514ffe30cdcaf5b673dd8bc6a59c5d6007100d3cf4dc83c7f475300e78ee296056d91b014d81cd115597761658d1730431cc8f17814b1ef3c580c9cce195a7dda2e51268c2595f71a1ced42fa35aa011d7e3a05a25e01bfa50e94995727a8401f026aeed76faeee78e44870670656fd2e5c629d2e63141ff7889cb31392b692b0d2e2337b9b7d6d57a18f4f29eb2ee21eba7a97dbfc0229edb68b75da06f3c0da33e372e311bb6844311db2a05cdec90ceaa01aba5641b589f8efe528c20e353375e606f90e18faf848107ba8a408c57c0e91123ff81e6c683ef3aaa1df0056ac5320dbc06afa59f3cf570d4857022b663f7a47debeb06d8b0c3297221cf257165a492d3d1e3f4fc9d56e785bf88080e3379800046e08a28fd01542659124cc5ab26c7bfa145972465679b0357cc71715c6c556dcd353bc4d1b75dca88c0cee6567836c584ed60d6a4ec7f24ffc9a84e2a9ef95170bf2a962cff0a7fbb0685b629270c2a98c57ac2246ae942a69d201ae58445d0f2e94b8c20cf4f111a69c48f862ba7ccacb564c7236fc9b8bc6f2df7b1d2fda38e7f7ea3139f2b3791b9a0ad70995cd7d79669faf161316651561ed513d971495c2aa455b5fdf2f51925faf06b0af3da1c592239612b554d0cba3c0da9c7efe5e3e9048d7e2de4e63fa6ac4a604d2af448c91204b14cd3fd55a8514ae5f887ed2b3f395a818a0b6cba5e8478376ca8274027d69ed963a6be202d64d0466eb721e85f69d7601a1b1c652107f7de4f5613fcf5396d536b0e8b36e854bf98ef899d443fb4da449ee4babcc5d26bcbc4120e1e8cb379424bd17eceb477510f5a65a68135ddfb74a6dc0632a969676c2d2360d5dc9c5ba8b39285c542ba23d1372a50bf2c3650a185bc3ab8898f99a30bca629b797bb25c31fdd2a064d2229436ed1040abfb2eb6054f046b1481db57306602d9e85b99c54c819666999046682d48a0180adb77e54d6ba6fce17ab7642229deda255e19b4254bd953b69d674604ef464dfc292f37168329e709f403235a9b3a5b9a06fb7965a06f25e44bfe6706d2577491cdbcfe0f70614aa95f47ae088ada674fbada609d81e1f8a93e99aa0da7dbcebaa44d36ba0a9235b27c7f7e1a1d53d95e44e3befd5b0a5965368c64b719ca39921162459f6a350953c225c06bdec7e10de8d26c4206d46e4585cc494fbc139ec1c78bdd122e6c67208a165370b376eeda402bd2f06076447e190bcf03000f55e8bbe8cda96c1569af1d95d0450ec85d47668db6d7baa5571986b7cbe3d7f2a73bda21a280df3972fc184524fcac9c5a69d483da771372191e2b762ce439932bd82fee7342d43795aa4432ba7b22914c80bae2539963883c129971728a77e974b7969d67e3fa7bca9a4533e81aa530af3b0cce8cd6166faf22bdf79a45f832e9eeae4bb9d5065d60a28f40c94276de58c545a3fcf2ec6bc13eb4a9e551e0be0b25d9db029544f7ca4bfa56942d992f45763ee9c9387eeef2dc66555c5f37f8001e483e748e28944d24781bb123107e64fb12249dfa34f497c72af543f7be9a8b6d8de93afac004212009a05465ff266ceaad4a5757edc000d178d4114a471a68e11a9c609233e3c995d8a254c1360fe2ba91f2e54aaf0056f72968f0a62694a6e1e82869f1bc603f8155832d6a20a22a0801e711505cb4e7ead8d88a6f669d5bbab53a3cc5d48817e7de6522781e46b6e563e500b0643a34f0a0bf5c773fee3f01248520484466f8866b34bac4b7a962d59391d1057aa1aa88f455e7a14215bab4c488ec250a1a8d6f064db7d43017a3438e6e095211bcc45d61d67b224fe4eb74dd9a45f0343cf6a2b50069bc1a6e11497046f1ba54f9e8f634104a525b77c23d9ee006c8311735d6fb6502951a7394ff6b59ab3ad6bb9de2b2ec60f739500b425daa1da7405f53ca804758278e4032edbdaa23c79259e4e99be00d82c7fed322f042e7c2a7f5f2169062684d8bbe47ddafe04fc978d68c89c23712a3ce2774dceca0b3562f4a9dad370c8c75f92e97aed075810237ccbc8313d63465b406e5e00174879fe166fcebe3ee616a627a1544edbf46e4855f2863452fad1ab0fa838f82cdde27d778697890e97884e9231041a0789e16ce04daa22cc2d254b4fec56867b7fc6264bd9e6d44b6335f8076fcba5355e25fb6b21af638160c68defa80d75942a6901ef6a6bf45c5595b0718a2dd4ca38518ba0ab7cc7d518c8a05034bce371e323a6adbd2efc40c7df59e7964c2b01c0cbf4a0dcc048ac4a51f4936a19beb0776e3925be485ddb90cd3ee473a2fdee31cbee6e9b49e82c5a9f4eb06f50fec7c9376d8c27043afc146f5738e5e1943205e495054b5828c1f10640c57095b2f3aa8675eedf5dbac9a69fc3a408f2a26f237b480d9d817925777ae086b85836348b73d5abaa91d7e9db042ce98e2c3e360f08d814b2bbd4b671a9027b4a085f1bae607b38f68fe6cf8adf3a93b795d450305da94ec831cc850f88467070d2d60a46c74ed628bda75058567a0dc47943cd9abe4728cfc5f1dd95c8a4e30e034562abd3d6a46d19b22264b729d1571e105d35270b924ca48bd208be2394f0cdd50438d350a4c05e9a00be05c8c1b170e5162226d7d5c405a83ca401b254a4c53b5707bb41581216ee538cada457d1485147c23e401b1664c06230992a2601cf1a29e465af04471dd218a73d3e68247b59d84891f2ad987534b0579743caaf57fe0717553852547b2925582c8fa7cb7261ebbae9cbc29f376f60c88586d783e6424272aa6a05542e2e869df1f866e42e4ed11b16f3b7f6f225832f98dc2ef9e39cd11bf0b801049ffabd446fa7aa2b974817b2a044ea30185a3550b59deb9384e50984a86a1c21621af9963c9d898055e05b6d2cee8c8b889d82290b02a0d9ce722e13d362f1523231db37d4520bcb9d81d014ba0cea2227518e9b3c69cc4721807273db9472317a1d8a8f2e45c6eeb4a5f7e58c38ff08fd62f52582dc226621877daea263106db000196ee1605253ffbd616e5e671b02d39c29f34f89070096e9cd19bec95fbc8fd93fcbfb5a7490e7d5526a0b04bbf5345cc60a94028670d2f2ebebb0687851f2775fe95ad236fd0183c25aea602daa83630331de182b8c6f8890bac421c0d4205462aba4e596ee6b1c67d681338d5ddc55c3b286a333203dc88058ff4deee3b3ae4846de56aed774d93216ea7a34cea311da50ff7feb7924d4380ec95e8ace37102452879a62b0930ea4299d47a7ed8510b3c38cb3516d8765e34db53f27916a2847b4692b160b992942b69aad7c442ae63a81eb5e54fbce3f686a0196f08efc561e1d6bf2758fa6206e7306b3c5bcdf4e6810c1e48b788298374da0b800f8e4a5e3c180f32c0016ed55a6a25062c09c207402579696d4e1f580e26f0037dab862750d0396583b3aacca65a665ed52b1e2517ba4065d9811cf3e799e1eb6d2285eb1131a8eb24b0176af8931cf36c903dee6de7ff4e1e242bef7ea8eba2662538eceabfd81409040026b074ed460a9cc08c3b42478b9388852b43a9e452dd8838509ad000561909b518c860b76817b6cf8e6b06cc79efb7b8606846dc3ba542dc3a8d4438f33a23eaf040c370aa7ecf047d4d1a99cc0bf969cd2d0385decbcd2561f5cd311660e3f29e43a8550f08f0ae21caf01423eccdaba8a6f2a6fd537b27d564d8085e4b37acf00bb4a23c9d689d4cfc0528df13a2adbea0333836dcc341e7fc7ddbbc7f5bd3450eef0a051451c1b01879f7b49a698b08103f178f6c6b6b06f1d88102f68ca7b281bd776679d4006407a20366ea130305884c4b027e29f0c92f92c324b1c657591f934215dc4d0befe13ee966af3eb2ebaa7fc173d563ea40090895c4b0e873881b4b82ac1eaf1c9968bc986a0797e2e3d02f1a4cc2c4425a9a20f29052c79402b31bb76970b02eaeda7dc7c8a1d062387737b400ffa3a4a44f21a52162d0748d3917ef792654dd105d844bdbbe5b92e1aa4f1ec5f6206c7651138f17709d8a58a6e120c2da9025226d26f8272951d9a77b8aff1abe24390315b15a5d39439a3757ea0e4909413f1cf04840e3111774f114c4ebb11eff39820985ad54fb75553444388947c270822e72f67c0cd0ee89a9b837e38fe640d74fae0f7d00a6195070fec90bde89f137640f9920982fb7c4d7f3cc20348071c50392b39640015182c9b41d5f7920c63851f8df1b117cee28f59d6fa2ec33571300f6af707208c9070c3a8beeb071ad7f2e6c3a84f1177fa69e545a96d9f58556d90e879cbc50cd02657758d414fa15d44499b23309750491b45cf99fc5c89eff7f88cafcf39acc93f6a7548db0275facf6d49f1b659dd0789cfc62fb76fa5f2b596a60b616f4c45cbbbda29e5c5813f2ec6f2bbd31a5952c973f4a0a8fdfaa85fa79948742c5713b7f9aa29b865b177454bd1d67c8fd5403198da0af7a48e468a4dc292c71e4df21e4758518dabe1eb3cfae3ebb8954a7e9e54e8ced8be4eb97ee50e594197e88bab102abbff8c3ead7589def1be407fa8d70a928a03040cc70b2465a244e552c161a7b5401ea8dfd054548fe83b3f9156e3fbba8fa96db853ed4b57017b26d78eda81691598d6474c5d89c2d30c5c724ebd0e5329e3e082953b969332e9c13219e34e9e66ce83a4c7e082476a525dc35fb21ce5e6b6ab89187fe7a6ed08b140363d654c8ea7a1d5c3804d723c2558a7199d0fd6756247584f99961df160ab56bd498cc88e7fc6a41564ee2620b6f2d39141861560da8ced7f34f1ec7cd70cbcde16ff3c79922422e3e6236a3f4ab0651546ea086b0cf7f02e0d3aaf49fd12cf5b1987689c660bf61fa2030e1b00b4042ff233cf94417682eee5c52c6a9f52a9752bdf9396a7754d49c2f5c36d5a2a338e969d26aaa126102b293a56f0c77b5995dc615aca9e8f34ce085073daef02853fb29d90f9118f56d7bf00dfac9abb69952187ab632c9f7de5df6b729b26a9c0c61ecbe1221e8fe085b266bce89c9a8df46384b6d5a0e9c80e036c42c66c82c2f6ccc9ce857e557b8b0288d1cc9c7212ee4dd371746a58b4eeb9f3ffb10436dd08d1f6e8ea258a60dfcb76fdb0d594235bb19fb574f81f622838e3d83a1f5e1205761ad091356b770d490ba2e839000c874b4a3483cb3b5a3dc03c372338c94716a255860ced5c0249d433aac7b2f6cc64cd80d29a38c9ced7e72d34472cd4e57f38ebf9b845806524b7af45f9bbf9b97e35b99e26805d43eb488a67345f8cf154a3798b29bb0b7186821ab6c1cddbea886942875f372b659be5f0e88e702ca812c03d4e1d3cab3bb8d5ddea563477e9f78c8582f18547ebf503dc8b74f9252f4f4526ca73f687bdb5a22ac974393c5e926e75cbfac2fdfe8ce9bd23bf081ed330e38b1b7c876418ae0df918c953608b051ede57eb563b8d3816c9b092e6671949c5413a0d05b7de0e57aaa57c4d5b0c2a50e6eb5628a7e6a0fde4587c9419f7c2c63bc76f4980937929b675e5fba8c32ff8cff30992f55d33432eb9252e57855513399ae3eabe581fd573e4f019ad7e81ab1dee81c0161706d408b5060302f05f42e2d4088d12abdbf0870a142fb20ddfa51aa7a172fab6567d4c85af618ca4b3fcc476b6681932147ca3f75b3fe219755036496ab67523b4b71c01997a6e40e67e632222f574821c38bc9f8dc8bd677e1f1c586b8ffad8eac8d3a80550d106466fff2597ab218e90646ac0ad2c2d4ff1f5e3cc74b42ec99ba288c63f3fce3c3cf41e7bc626da32956c5b31324f51ac916167d7883e9f4695d80ac52a652db7b40c50d25c745666753505517d29eaf00f3b6e1a5cd767fb60789e38c58b0de2ba914bb4d0b0cdc30803eb6f0c2e600a3a177f7f8654629da48ded097ffbd4bcb0ae0f20c3a7f455c9cc2319cbaa5a8ce58ac9b14dff9df00ea2732737087e4f63c7546d8fea96da0aebe6d0a71a2100c5eb43b59f0d0582ec209c4eba7ac222ea4f6972b49be4a43019f5802bc1e650714fc019455df80ea39cf5f49e25488eaa241a6a538406417db69bf51587007c461bc60de5f41eb3e4b5488506f4dc73a7040ca75af8cff23e40823ae42664f891964502afc84ac66cbd800f09ea7aae1b3f55609e8196a21721bc6c2a84f2db8da5c3881ed98e93b126d7dcc458b4829544d9a41a3712b7fd6513e383537138738a31bc858e5f7f2934d1bb668c49aa993eaaef326281780d49712cd94df9d0ab5f6302bb416590957ed87a7e6c2bfadfe6ac3b4c7be4c9b21bc0e52ff458bf31894a6dc7503548352a497f6e5f8ba292481d08fd16b48ba8ea045634259b84ef14eadce1e4b39c0fd24e5b4dd27554d93637c9a8a887386cea83226ec05938054628139d782764746006cc984d5d53bf0ba6abd4b02118570b942ad38597c1632ff5fcb1752f26df65184c93401fc8462ed58404a2361af2d304c6ef46293714e82c7e371f560160b829b4c5056c393ccc9e2348e0e627a91bfde751337b82c7ac6867c3e3ab4eb711d322e43b30d8d433e2beb75b7d604dd5640ce0be7b200585aaaa7ccf5ce56dfdc5c0cdfc78cd7c1b680c4815a8b6a477ee939524f02f0c077b74d89e0ca9d031cca02d588c45d5b011b06bc9585dff63e5b51e07051eb7c0e8d37264cdc93391d0a17d027d765742ad50d5a5a341a6df33d850cd58349a5ed49e5e1113ed20caaa9fb9d2a0202dbf836018d8041dac3f49af05bd188f4de0f6eae22ad807b2f1708e54136f8845941b19df413c02c7cf86b2831b25bd9bbc2137a44323deac64068bbe810d5e037e8a549f0b242ecee8dd84c787342b9aa3ac9334171b630299057ff324eb67af2317114117b307cb460bcc229ed37f62b76d56dd7ca8e9c1f0e34b740baf85a60af5137cd6774a596faf9ef62a7b17e56c4081c967993d8c060a222a5335ccd4a1b0cd09b354943949aea8583ce3d4f29087c6aa81ade3e372e302fe444c839ba90e975fceb2c4261b8f476bdcf941bd2f9fb842b283631f251e6b1f29223eb7f63e229613657239914093237144aee39853fd65ea1f152d28cf0438740d5c6810d150dc08d9cf89476a54f653e0d38abc0556e9e5c2c9103e4e0124b9ae9bd1eace4b49298f12d659e3427a42e7f961af8af0afd69a3c97856d62f439eb9494839b52723e5059c935d5cfc5dd721d36c0dba88877571c226dabea0d13d3b3174a345197032cc23d8697378d442030a6ebd6b19051275624d90779e266560e5ef56ae5a79da3f9456e861ed6aea3c6db0b96dc6e7488a4b344ab600a4d446bda60a37f02c3bf48fbfa4d5cb63cd17818fd8252b9e582b172fc71a82fb73aadb0161b0c13c557ec3d0bb14aa678de49fba5a66942a987a430986f5c07d7488e518b09619a0b68d33022341289562331b2b9d846c375f28975104ebd1d92c4f4b06cc54d9ccc79658f51988caf54e53311e011aa473e32a98abf782f5306211207ee763e72ff1c646c50879e088bf5f5c31eb3fbaa0e84683f3d759ad99df7a15c7f6a5974bba40876353bee92a5c9565fedc8e45bf870c8f3b98969d45f6ec1aa780e688efc9905409c9c77f89d831aacf2dedc45527b80d36993ba963d1d13c7da998b201a21bb207010ab956e9c792af753d81a62027a6f1547d0d2e308245f18f0304f653ead7bda40a6da41afff4936a9f77d9e79bdf43f13eac215d6ed4adaff0dc8d44e0a0fb0d87d1b9933986281be2454e63c4e647c21d9805bfcb487291437b55c82da4e2480eab6216856917fb0758c1ce0296e9a861f44653b4896e4468069e29da5874b20def5cd73c2cdf3fbdbd416238226acad368f7283366a9829503303ace2dccf3ac6118ea80c64eec98e78a0496fe6f311c4bbe0b3e00387e8a11cb88e6fd0196ba3dfae107de3e6393143da96a58aa7c91f88363d6e76e4ad66dde6b3007c119c211d503edd00128d8abed4670a06e914b671258395abb5adae38a68c78423acf4e7070ef91a9c15836ed3ea0b6c42b6c84e92fc8eb1cf869e9a3ae4fdbec31d6df912663074896b18e08db48b57e32cd72fa7ef39ed020443f196921cb09b5447c3e6eb5b3df955a0d4ca80129f64e7a3066a23f3240d11bb0e249f84036af391295f011ded0b33bb7538b83559ed8ad4d28d62c1e667840e28e9402a2140c00575edcd86a0e7f8cf7ee404b455ede8367adb4266bc4e9d9abbb3ffeecda327c1c3336e2e4215ebd5413ae96cdb68e03de0dd409e41eec803079082c4c6a6739b99629603a24d51b3a2f6b88de7f7bbffe1e1dc0f5bf15c2f16e859b21f6d56fb756cea6ad0a32a1bd700fb0fbc044902c792cd31dabd0970bb65d558a833a47b5b8d7cfdde5dcf8b249c5eac5dc47ec083e049340af14a6e4afd3c50258af81f69219135cac784181b167afb3f2fd1750bd2b80eaee9cf596db528f36388e5513ed142e97f3f95e1df3ba0b23b1e1412112e33bca2eac12840cadcec045b4a5d0c9639e35925ed059cc71ce8d8f9618808efc76ef92776325f5a291a5cdbbb4ab405fde5dfd16c737b8e1d397cbdba53f1d64a628b0a718c8301bac49bfb98935a74fca9327017694dd48a1d4fec0ce79de877c1c4a9c398a87cced5a43a91122f6e2615a92cabbe3ae1d261408ec6a2a036fe50daf32309234e0d05a34bf7fdbe8ae89002cbff27384d19121f94de6945e7356907f79cf4abbd621e7c90a06634d5e0fb0d38e53d299ee8c58d381402a73dd8d1c13d70458ed160f06387140ad33032e25a32a7c9003439768fbb0cb427e47484df2e0fdc19da3aa7c4284f8202fe380291938afdd1fc043054c3e3c1b1e1f856a78b2daadf69afc206373a5819925e784520bf3113384559798793d8b1a7e46b835504b1d66a4c279eb2d7db3d47d9702a46fd108323dab9292bc49a2339ddd04e5585faab240fc84ada5afc0626827b6f1d1a1c31ee921a4e3daf094e00b5a339d3779a54c604d122ac309c27722a8ec9a68db59f2b977ec9e8e020ad40e48a3f0714199f5d8db4c389c67156ea056c4d428a28f80a9d4a50a406a072280accfb6c50b5c9f179ea81ba79ea0091af86925b34c62522d692641dd8607aa86132f04084416728f83c2b9d54daf0e5349204224751318773661ced098a0cc7b026f49b13f3bf62cff4dc3c92d9722ee29fe8fdd40fe925e1a45243357103c5b7937881f739d5c89485e7ae54005979aeb7782c3b214032647c2293c127f3266cc12286312efb9168c121eadaed1287c4ab87716ed826098fe4e594d90b704d8994ed5f29716636f99dc81b7c93b5c5eaa2e1143814bef26dcd24842fa427c612e147c1b795520a27277c504e14e7e020c6990d36374da4c25d576ab184a8000daad0040620dd0fb62941b9f3f3f51d34eb35b5279fcf82cad12329d8fec0baf181ddf3e683241e707fd4fc734863bdeaa4ec9a9ff4249b1c73cd23e84f9d76101b94a90d08a404a9f61024427c314c1e0e4c4515b624a18284a1f4735928addb7a4c94020568e0bb764195143081a23d1d59fa040aeb6347c2631b7a7626a7a7c8b81f01d666e3333c4c57371a44fd6a8c21caa489fce00cbad4e7db465a64a6b9a3854bf8e084bac4efdd452ccaa2175ec479618165547fd08f34455e53ae8d71961bdd5a96f35a9708248b5d491d783168b77281c2f0074014def771819b28b5b3aab999d4d0aff7df83ce26e4e51f238e6a334b52f6e095bdd5a35b5102a982288d3364e36a06c6105ce12b7a7627d7a609f7c935ec0d938f705b402aefaab20979a96109834d53b5832acd85e49075b62f24a3b6ede61f40d7c17cad9c9e8968c96dabb69dd2c827c30cb2dd11f088d7260a881765a7325f65e9f88666f0ab055eaffd0deb39b1419d7f882afce0806edbb0c6a65e6daed4049cd3da50ce9836539a558c000e32351b47c210223a6ce1f68ff5d018c5c068353db5a03a360b94d1c56df49ea48a3ecfb5e1b8069b78bf55b0d23f51bc2439a90e6908fe8a3aca65b7e1926f71f6544da7714dc0d338b831ea624bf9771c40cf9305718cbb138319a86d17f5eb5b8b14cbbc1670568d90db6634646f12f75fc95833fc99ecde99e4d7f65365a5d9825a5d5fb7930614def6ca3f74461dec40943179cd2f785aa655c02e49355e4eddc8868e05656db78101284a4e0b6fced362e87cdc15ce2541d1be69886ddfe1ad86ddc916160df97394ddda36e8495d3b6bee8152b3078637d11933ad48e0c56903a540b1167c4edd4a40826ead43aa81ea9ec14ca29256c86fd2b82876fe3a9bacdca78919ec2798c2c52226461c40898077817a33d203d9ed499ade98b06136aa15c27d55ff1bbdb53d372c5ad4c4dfac975c80c49e769237711ffe982141806afa7767cc948469f499bc4049ede92da89cff3ea89041d43e82d2467dea1013a077aa2380fee6a9dcbc1175a3a665f5be8a782b3669a471b1ab183a66cbfca52f1d29382c902de6d99d878599fc0dc78261165d2dc4afe93c226ce43c6a40d80621bc11227be60c85a048e8e51762cdc6b98fd74c3cf2f8a826a3b9235e9a4768a106deff804af95845953956b063b2eaa3c9482037c849ab40595a45ce9c121cb25dc0110752c8c44bd3c944286d657f578f0643a499857ad922aa23c9d8829daa87a2682113731728790dc2d18fe8f04828b9fd72035643bde87df8fd079f550addea5e0424d98f962f468d8538d2bfdbcdc84930c746500167ccd36d0f61c68c4154cc5d57350aaf877ffffffffc730bdba7e2fe78190076c83c289295218c0f18f8988881099a44c29a5945222b20bda01b800bd00b700f8dc485d4055f3a9f67bf68c62cfd03a4367e853b87276918c92049c422bdcba58e4e79a458a1c2dd929c1bd12709e01b60709078c492b3c4c474dc1a6dd46e9ef40c36b2df7defbfcd36c7bc6bce37eeadebbb5daae1d410121a1e1aac166444357e82410f8e28bbcd76f35b53eb52913c4a61ddf7a14edfddedb7175c9f0dafc4f86f9a368ef486c3333870880d7d501146ce6c0222ba2a79da1cd63a44a77b690fe6a3ccdb9fade9cef37e67c8b9ddfac39cfdc637cfa07785a2a7841c30e60a19ea29cb8749a743a57f87d557d83488950674a67db31552d49292de1eca4fd71ee3d6e8c8f18ab467d55bc2fbef7f4f75e7db3e77c792f82065299a69f0f6cf0cc97cab5dfe5f5be338d36a972debbca79f273bdd5a4f2af7b2bef71e5fcc8e47a6fae4b8e9d09a235bf6a7a902ad36492f304040de4c75299a6e9fd031b77a934580e0cac9da7e95d1a2c971f64a95426ad6a6057de57e4d11ed7630fc9ebe57c98bfc706dc6a6d806efcf355826304587302fea7bd77df55df79d7bd6b9b7567a6bdf7af7aeffbe7bda7c5355d3d8aa2e88e57880f26bbbab2caeaa95a7bd2bdf7deab4f31d67a63cc3fdedb07d55aba82674887be90a0afbdf6feedd5bdaaeaaafa838efc1f6ff8838383de4f62ceb907e006d069a3670b516dfdfc4cfd6c5d2c6efeb5fd1299e9a3f4b37ba4b0a2a086cd2028be71d007d5fd75f65adbbc6dce18e3fdefbd78d854d534ece22db6f8adbd4d93e6cf06185b63316f8c37b3db3f2ce2c3226b8b2e01d7ded3a5c8e57ccb0bf8fbcbc43a3eb48e486ecf8dae6ea8cd664dafc50bce6dce5a6b51cb0186d664c6361534abb91062816634673041b2a608b37b2fcbfe6819db2b4a94087c4830e17bf1c3feb0f083082b7b61026a8abf74ed45d91f1e62375b5d5160437035c500d6522ed944aa0d5c1d738c6a9a62c539e33b9db316ee0f10b6b50e99565046f4234d9cd13c940ae68c337306cb680c251eb1cfdb31c404f545f04e0b9c48080808a028463f160e518300d45aa2ed40bf2512014e7b4ebc59686d89b88de579ef39e78504a8d376476dd218b3c718148c045294653126a9a2193e3331a36835180ea4488a6219862108198218218e10426466249091a1499203ac330e94f7e0330cae11de849930c5de2f572c4bcab6a839b0100fc4eb10cea00b43f24a6410a5c38ddfcf6ee3cb9b613c945247669b757631f106fcc37d7d12a61bcd273465d8e3737312c038682e78e962a807d93e8aec61ad20f7601be591b22298e0fd59c087adbe007d9337b84d9df80bae57fe412c786eb60adbd44494340f194b493941014df25f7004cd1a20273a0bc5c6ef4dfe80922044d2103b60aa27bfee8070e2a221862f6ddf800bd4e365664ed4906df8c560234f5246316523c47a7e594913ec5def7b4b20e43783484b20ad085d3cf95fe8780537ece1f97cfe5675e2bd21a10fc219cdd8dabda15e50748545e9636f1db026b9433dc9435fe57e6119794698d060f2ba8a2759976cf311273e1907f7ac171da79f1c06e30c3b4ea82b0a6aee0f0574543960e3e3256bdb3c45eb8c70ee1589a1c4222571abad806ed7f251b8c8411cb1d8ccb9c96499d0add65c9dd5fb788bfd0614dac612c48d8e01e07d82bfa1cd570d6ee37297250a400ab88d43ec5023efaa9f1c25e1634c18bc2a8da4550b902d9f35c0e9a96c5fff925e51928b9cf680f8bd64a11d0d30b6dc8d9cc862676e1b2e9129b21854ec02e65a0959107b8ee4e32370a829295212d13d70d706c54cd411f866a15f0476bd77c542bc120a5fb4d8396a9270aff82eaaded053a752b143ea2cea0755618bbd524130e75ff16453bdaa9c23e9d42f2c5e3fd2ab021c768657d916788d8b4c4aeae246884ec3fa831bb2ac5e76fa87e1b87528a840141f5753f3f5a0810462439271e706b3ae0d28c241300137ef4ea7b2587924d20b88e14c5b05eb177fb67d86cef7891f61cb4d26e495301ce6839a2990b4036e05a93cbd4db80a1b1cf814ad30e619e499f707158afecfe01316089f72eddb20c419b6f058d2f80788b97192951ae2a9219c137628c205029e004ab1b139ded1701f9a6b6b4fffe0528e1e9c51f475c4c0a113e0426fc4916a51ea6640e123b0983df7f7a7a466eaeb64f8a0e344c101987f43e2a5c04de1ef18420dced91b5984df6fff8d90bac61472af306df7420aadbb897eab049ebb51cc1981dcb16ae4a7c15dadb002e976a597ae7aa6673bc8ceb049be39aeedaad48e33e9dc27257276ec94591dbd243b3e96e1d2319b44ec5e8dfc30591132b06335a9ad0cea75e139720f6c8d79d6bd5de6017ec7ba45926bd9882aeb567c7b23ba988be5f5af33912f8e1def8e4b81b0f90b702eb264f08168b35f164669c930f08ac3903fab6c59ef4af0be90610603f1b2699d848bd10c13c12363c8b59a3186f4f3faa78b714122e4e91c43189fda5dc0ee185d50825c5b736b655930b54132c6b4bba220b4136371841b3c15059ba2d372d7491e641d5c32826d2fc6aa0ad2cf34c48b11002bd5a100bea5a575aa2239be96d52106443cee450ea9cde3632c738c3c53c41cec70c76a4e18fa0a58b3cc41118ed8c1c0eca9429bc3f25a8696c2d465e1818ca0e876c4b4db2da3e2e4bb4cda26db329a8b9376c9e4f61187e0535eceea1577ad554673f7154a832aa0d92adc34a1cac2002a2d8f98b946f4bdc1d3bf875efe3c25981bf670c0315363a33b53db1bd9c55cdc085dc671058e289961eec6091cd0622cc03e774531118ab12712877d191e44b67b2459614ea3838e6b93c34dfb10694d5100da908fedf9e386a9967f028e8df1613bfe0f78c85e5f26c422d5805a19208a4ac13d13a718a4025f7be3ba415558568212394cc1fdac72f0b331329b713e429f44e1d6fa9a0be67802dcfd37527519c65cb011addb744f8b1bd93a4ca51c77a1dc5c7c8d7432e2d2a17b961be3e57f358707d05468064ca28191b8a265557073a0c19e07d7361b02c8a07b4161c822ff03450013aa046c03f98a38ba0cf438cf327ae8f003f2cf8e58057c78ec80f634e033058d996bdfe94af787479642636b9840d3c35ba71dda4c8000d47b2232febf607c3b5d02e4ea5390232790d280c9428dba83600d800d5fa3ce0464a283bfbd2070e02408eb599b7eeafb39fa2dab6e7ce88a1de63d11dba95f496bdd6cd3cfe0a10098ee01866c71c9e3675cbcdbe065b6feb5e98bc492bb61e147c910fe04ce20e6841edac65ded5866e5f4cd728c48e78ee74f90416f786d8ba2bb040f513e52b254f3c32245e2daa8c921c17809b389c50c3c297c57959c8f2e03ac9015b95cccd8a88e9871a68eafb3dff995cf9a24a4d767e8dffe5ca20dc8eb23f3755362000959f75d96ca300ab0f5924a456a438dcc3fd8a5aa9d0be2dbccfbd4de22a341361d4d0f948c8bad08915200844049ea86db5643b6183da96c8abfb1a86c87be585035f392162819eb1fdb5c6ac9b8dd9a623edebc7a47a1f92ddbe8acfc8255ad423903be212ae831b01585b571e7cb5573f4010b2504a0d53518aeef03fdb0077c34afac014aa2797cad63aa01e1a1f8105ac1c5e536758b253e44a79d8a49c487d0491320091fe25844829358e4bfdcae770285ccaa17d7cb14abca3d34e664f0217c19f432e0f314bee836ec5e79fd1153dc8f12d3ea863415331352446812a9b505065a41338760f1ee8a215582f11a1337e14fc5f2c769d36a53fcc2e97e2e44d4f2216ee565a837ab40c3af48f3564c0f2843919b43582f5b8f7fe482801cddfd63c77b0eeb945e45c13901cbd8aa44861ea23bb02fed895269c2de1e4d0fd1093794e3573b2dd10407f711930f4153ac69ca69b22987d4edfe3702c7e7f739b4c546cece685275a02abc32d6a03ec465e5f421ba2463a605a60f71ebed8dd4dd1903f8254711118e2ed3947ea61ef9fad90b04adc75173c3b7c448ae1ed1a508dd1d285ff0582f58e498a1e68e57dd15ab59660063eeff11f008380e7454e6a5810c3d50c42882d890e6d55d8a4d52f3c2cb93c2e4e612eb4b6478a5f3da281e1d72f03e7a121fb3b97b6ef265af4666c12affea8897b95327d6dec7550d11387a88ed1826bcfc19ae38ded5b9e1254a435c1b22175bc93450d60f06fb7284e725a8839969dd182d5b8631cbb531d80b5ec6f4d25dc93b6a75af4ad89c4e6e3cf258e604000fbb035e0688b61a077616f6e20b2f91adaa718e309b23117b237653656a7b8f83f847a7a0a6b65f5d024f6b29d84155ded5817a6ea879750f349fe226cbf88d919bd8d646aa4e658cffe18ddccea8037f7194bf873d14dc056fc14da3603fa445ef5aa0b150e9c1a40f2090f7941f674a1b2f030695dd9aec07168fe7c1f713811718f0b948458a473e3def7ab18abab7bc6e884f6d875ba397154086fdc07cbc7c5961ddfdd083880e9eeaeaeb66ec9a1c090b041303cad5fd6158204eca9a0ef5750bef789cf5fae7bb87b2e58d8db9307eeeaed6865e59ff6d5e2c4209d3d64c32673eb06abf778fd8e54621d581e8687be15a622a2dd899f9976f27e24cb257a49dbcace64ece4b6b7befbda594322599647806b105ed0521159414fe1c7e16bf86081595a37a27d6a9c9e29a2c945febbd05afbb7b76778bb338eb34e7ff921ccac143070b3a7aa7edaab6d241cd763f7c74ad89e6ffffd2d2d2d212d352875da9cfa60750aa549ad3d96009766f9a8fefc3c8265b5098b66270e033d28f41a2d8020298e83657a0c081c9555ac1d70a83e9cd3cbe85297d3b228a827a2369743b6a32323272f22fe640c0326f377f354def8b10b1999b8a380bd0a429d7108ae0ea2abc5e4f6e48a634d2d7be4b3c4fcacf594770d26c0425f733520d61084ea3da52d3681e4d27d77e5e8317bc9f579bea33cee2bed6523628299daee754dddc48dd6ea679ab2bea97478f465a9ab43ac748fd1afd7c3fdbaf7dedafd47e6909ea070fa8ba97a86c2f0cffbf6bebea786b5deb26d25c9a4cae80ece34c0ae9adce1b6d243e64ee71e62c02cfdb9c329156a0331e31742ffbe961287ad3672e8593e96f13298148bd6b2946b309452c024d91d92d8499b3fda6083df40b78ea0cc8817cbf6f85201b93d57fd0fe7e809c9a303601bc31d03f59b41d46edab42e9dd522ebdbf871602a4707f3b98a933514d6b8c7fe217c642e01d64bc406fe040e1ef839983e998438e043ebca187ff5960d6d3500691e730bf046274cfceff0cb052a75f614097c89021e3e4e41404ae773a6c69ae8b81822a4cd4eccd9ba8306e7470381c0e6765656565c339599cd5b130dc8272c2a591728a6a41d9a7f5c50b565414158da11ca090ebe8e8e876d4ee99de7b29cc9d1c61499a12ba7d580e0d34304093a11c56d7ad668cc13bfa4d9a1b56321a3d56290ce5080a800eb9b3b2b2b2d1e079edc810d023823c80063296ccea15e3de7baf959595954dc70d6f7879765c561d24d5d6b56ee2a6130b084ce58fd4cff44819b4d1c6894e1cfd2822ea0cc3a34bc74f0a676d05fe1d8f542f94db34d37beb47e71cc3700cb338475bbdaba3c4cb9f60d4d39c6959703086f466318e08002e699d2fb52c5a53b0a1d58a2328918a3193d9c35c2f467480318756f1e2249c3d433062caafa2594e4c308d7f66de1ba25a2a968a4dd5de2eb77e3cf8f596942e7ee281327c3a42b80086a1188a1d7c11c12a27f46420864db05a2df15b148f4003661581464a8b6544ea64dc6285e2088dbfdb728159305ee198632564999b467f10e806e777c1ebf67eb7c70f94b97742cd55d7ef1d694daab61325e14e5b844de17ed4d2aeb4c2bc3185beee43e29ddef2ad1a3846dc032ab4c7ceecee18d9cc4cb0d359248357184df05136cb2474698c6699a8618cf935576882a0c2477e42a6590659adb0c7c67175b878656dc31b3dba2ad68e546ab23c43a4229518e266c682db34515338a8fa0947a514d89bdd8ef6e6b8bfebf6ee35b5e70d127a59e71c367c6ee0400168fe93af66f370339aec5c49ce3dd98136d074ced0247c8d4e942a3eda106bf44b6e9857bc87ef88b9268614390f082237020fb7692a07c7b64444192888043005880dcc504d291dac168afba79d25a0b833382385e062bf8466fe883995449823e4192a5a4df3a44494a9a78944166f4c0857bc60b7c59ce16b984d1c071db454200440d31500c9c72408186b261baffa76725cd8a287c460730265c97b781fc44c3236c82eb42980082764290a25375b66170a254e7d6c2811296c0c34286c4e5333891f45a2282a3a620a1290a589c3b5c80c80c9ad75a583a9263a01d03e289c48354fc83c112a4a363031641eb9016a2a4a0e728c962a1b3edcb628a1334c2e94cb1731c594f929d751273e38b38b1c7107049c8fe6305423fec3149306a4cd203686a219c49b946aa507bb05081f217c8848004d0050983ed0cdac34903fba76429331db7183899d1d5c38813909487da0488e292218c10f3ab49040052a3cb27c9114a80995d85071584110535870e5b625aac54ec9c0479c16d01b920b72acd98e17a0e1a9612635ca064d3fcabc8e5c24552cb6cb0d53c77854aed90e2053e8b83004c9921ba572c5fba1e260e0d43cf8ed6da838227b45cbdd29cf05d50b0d36208203053c200e0472382d342f4db99d97cbe4cb98a42ba738b4592de949473567074737273725d9a411e3844c9c3995060e4ecae74051c4448b2a1b7c0b5d141d3e872d556c98551a96d9f79160eb78ef524d88570b8c4c70888b28700196a00406c4f9d0a79e9879015e627001ac611b9bbdf75a7b3b2025cd952af7ca1b32576a3a64d1810639568731562909ab24841530b60a179cad128507a6af52658b1216f68a976bc513745ea0a609cfa52022fa2a5d1c0e109e48a48d8b26c4c58f223b87e3648ed955e5be9fedffffbcb6faf848dcd7197c31b75e2fd3d1bacd33ff80e02bcc57a454de10b4346fda9715d6bda0b0c4c97aae6b471682d0630f245140f7629c93c964b2f9bb1ebbdd8ece8ac4634ecf3577d759630abf8f4ffbb77af5ab61f86fa5935440d3fe583fefd61cd69a55a8509fd77365b6596d261886f7793eb7ed3f7328a68895cb6b3b8cfa38a305b0ef15e00a14b682ab050dbcf45220b884bb81fbd902f22fb5652a6639ceeb0936b2db53c7eed1450c18ac37d3fce3666aeb0b6bdacde28faeb98b1f820de717ecf39f21d8737158427ddea556c894f47bd61770133771936ae226148c20f827ce75aef338ae73ab0d5cf7b85ffaa587faa567a261fb4b7e739bdb1cc96d7e4484a9db266db79bb55d9c21d877bdd4b7be3553df1ac9053cfb466994468f288dd65ec09486e7b7f7b4a22dbb84173318304c18c8d8a4529222296d313433cc4433b4036c99b9709a9144d10c2f1142550ee100c2a92c6a14414d413304098e091c173c0b154f8ec8e24d113720a0e13263c9008edb39a7fbe0703b3f98d2cdcafce058e4a9a68723601073e4e33415f672382826a4a55bdb8e7c34ed45f1ff900e50573385d169e5a6298a134e5d9e6040418224c5151059a28c5454c030a1dac18a88365b981813478a2257541fa812e7c8520d4a982747d60481864a1533b862cd0fae2276e533f8204c0d5be64001e14416a01888518234051923ac48121a62d2c4051f6668e24a95a813aaf0d2240b1532736e3f54e058c384030c5a84042143f31a40ac66c822092d9e1cc1d576363159906001859a2d34b439f21a2ec812839253145a4821e4f60629ce939b1d13336a9e967660325ac2a8893530304d3193639cda7c816285a908edc76b60608aa9234c5278810af3234553dd1a76f06108aa56a2cb172650b6188089ca21ca4c0c5856d8ee74de04ff03619ee7c1becffd9ba0d58b016b59eb99328f7da6f4556b58569a7f4a4af39493a3459181f26cbd7eadb5d2777777a7e1003fe0669919e56d86fd4f9fd65a49f8beef7b31b420e82c9185718b05bb18f7c01fce7bad08c2bd3eaebffbd7af357f7d5a1140ff9f52eaeeeed48ade5de1a3d49dd66a2dadd4297d7707bbc8ae773df0033f1838bfd1eff71f86e0f7d482d5deafd5669b73ae62cede4f1520288a304fe7043a22a5ee2eb65ae2f56815edd7af7a756b1ff4eedb3bd62bbe087a934e90352fc63d3007ba75fdbdf5ffff18b372061c5093561eecc344ac4c1d3004a340c6a914bcf97ef7a3f461170160bff89775bbf51e2bb3c2fc6d9908828aeb09797d7bfe7c8f5a18916745982efd877e76fff74beff59cbafb53d6f7d875fa106108c2bd3e42ffa761f566f8fd67b3f5dc9ba1adf4840f81fec3f9734ea72c1a06e939734a71babb1b81e0b1c06b6aef539827c27b743e6ce613665f7cb56355a220102842ad773a9c0cd454a839366b215f98120a7a664f9f043afeecda1adfbdf603e15e1fd7e79c737efff3bda04aeddd3d29abda2abafb9c734e77afcd1f251ae69052eaf38305e92d7ebe0fa6f4e50f6c895e99266aadff33a44d61cc70d2fa3be8a8827ffb387b2aefedafed3beaecf7fac4eb9c93d2afffb4d6fa504894fecc61fccb19d214504b6398e0333b3375f7fa23a594caaa82d3befa7fcfd4ffdd9fba537f4affe9cbf1e9e7d1ddfea54ee967d06db6ddce84adfe6f435be90be80d2dcd5efdfc3be153615ab762686b7dfab30d383dbbbbd7daa3fb9ca940a9ff5c2093ce4a6b576be77434b486340cfdffab8f1f1501d0f47d5fa5d41df4fc2780b6df9fb64bf98fd1174cef59bbd29f4f6787e0fceb267cbbfcb942add2845fc1b77f7bcf7bf17bd9473615ea58f879e0bfba6b069b8e3ec6a661e57b7a622a1788cd9861cc937960c5dead38fcedb3923ce8bee4bf564aeb255202450aa4607b165ae11e3e68b246f854dbb9208491a727f92588550d8ac90dd1d44fb535fbac5feb0b245ed97d3683880839e018f689c19725789e687344902ed5ccddcc9e5248e24c6a652ce164c2393edcab7745cc81a0f065bf16eec5784e1e31d58e3e7adcf8a0088cc21d7140c173ecf1d95e353cbb65cbe6c932994cd6a04c2603923f3294685bdc7efa7b7d638de15765a209ddfdf7e1b78bc72d4fce3ea79dcef3b3c280843ebb57df060af3c67ca9f943fe7cf660360745a3210751acf0ffaac2f4bf15daae003f63292f07b37bc33de45f7c11ff8bf9ff694b87256217dfcd968619b7602c173a2f8623e8ddd18e231d7ffcd67c6f22214dc35da349f1506568106c4988f0d275cbcb0a8ec2e4bad0c93db769a20d08905144828128050171915f843928c815231c2df0e2c518e4c2a533fe9051e52a0a8d877d13c30d0c5b8b01c8900df8d12f5cf605cc054c07068b850d035d8c59027f7403546085d46236a9ef208196f3bd2664314f2014c330143b8c81f397f309b885314bf41006ea7ce3ab6b4d6b5a0fc942cc2f9e4dab62ad694af5c692d3a22f82124e0a25cddd46ba326744dfe2c67967611536677dbde6cc39b6cb3ebe9df4c907650f9278cf046703f570f0839aab59941a2c3e866e04a5806b0eb8fcb4d418e17ee48f8c1cacb0d07e6239e69deb9710c61dee300ff87d561ac42412f7d9e687c5643d73e6392ba6d6fd7dccccb8d691ff7f4a2b7d97932354b51d0b8b8408c5dd22715c44494992e820f9fcf9dd9dbabb3b75f7774a61744669f69fd13094d28540d5734042d65a9850500e48c8dd0209551f1c376e8fd7c00124824207c61291fefde1871f7ef8eeff77c6cf19ac5b18fe936f0b9da2297484d858479eb046ae5c14e15e2029f3c1b5c11279d231228772e9d2ffdddfff50d58a1878c0278373b95c3b39e7bcf372b9765eae1d0f88e0223339e31c2a6cfa94d2177dd1177dd1ffffc73dba3ab471fb4637d4e7fefefeeefeb2bc5e49bc1aa60fa54f31c514534c1b47c36e501c4d9bfae0a0f4fff3fcb74782c0f47ef7dc8bb1cb55abcba1f789d221f5f8d0be41838658a443b542d2fea31d3ef0de397578b2011b0025033a90f38b7acf2c13617abe0bc042bcc6eccd469e5e32d774699d07d16b70d5670d1896906e8423336f0d91116028a338e9ee2bb408b0d9ccc91ab4d4da6a2b9de184ddd8e19941a373e05d4b26f39c416958b69e272e562f9e9a867450bb83f74c366b01f7f2ecb16a71543a30cfdca472ef539aaf3b7118acb54255075f74ea3af3cc90f5d8682101d1a9734dabe9b8ee96d2de9abb5231660ba111af578ec9723b5c9e37077085d041f08ff2a80da8a081c18a181a9240926f9ca42cd132c7c80c689854f762fc7ae53c038033ea0d9aa64f8fcf9cb9d8eb4ea88c63365bd8754a7fd60080ce66f4533a27b7ef08a624aa234b5890a862721c7df7d95e6f6eb1de6c330c9c2f036a503791e65277ad7354b55aa5ae6f6585d96ca53472f1eb07df17ceaf582c4c62e8880625a650d184140e365983054e289121c7c40fb639475f64c802266acdd41416bf2919c326c99ba2374ce2788e05066c756915b58e60133e0002cfee0e7aeeeeeede75bf1ef87db7520fff03dfe9f5efe3a1975eef5ea7a287fed9fbbe1d1fe8819fe779d7fb3cefcbdec7ca2cbfd6ab537f0f6708672a7746cab5f39f7d591af7bd4b43d0efdd7949fbf65e9eff7f0b8bcdc0e57a6cd8a69dc5ef787a53ca2cccb3628caced9901cb272e37a637deff99657471ddcd8822ab339323d28d90068718bc91e374450b45e0403501031422886e88a18042cc63318ffa66e0847520a39a16fb2021b795916128472e2786470f167c9c69fa913bc842a07c1d0401a1b083c59235222044521455e0f083156734501326ca8a2cb6a041f764a34ac4cca064bac069892a821695bb454961893202c98a179e8e544ddde00410334063a505b7176ab881881a2c72fff766bf770caff7d293d4bbf7de873dfd6c1da5a4ffd7f3bc7b2fcf8e2bb439f8f79f43a9b5567aebb5b6be67dfabb5d2af977a5ebdd5d25a6b1dbad3cef034cf83f960c1ccd5187feab27b655776adcc6d05dee9987fb90a158edc798ec3e17c72ce59ca1c4d30dee163adb5f5523ac2460fdc7a29f500c693c2c36474e0ef1db3a512df3c246d1193336796007b7ae8e0a71bca39fbe4f7d135c545df5a3b44291daa55a77bdd0d3070f7305638f78000e916abbd1c14e48d21f52b8f73613ec7ddca7d67471ce1bb955bc134de755eab2a1deb8e5ae53b18387cba3df7c19cca9da2aabb938bf127b23fc91ace66d2d1271020408034cd4141a2f87dd9678a161d66075e5e4c4fd8e8c901f3d45d6522e669b24d12112e3694695a9a13822c4e495ddecc310203e6c5735d397c2e2c9b8f6babb6b8725514448e0b534c810a40d1921a32439c60ca7d4c3b5c1fc525e0eb9a71f14e8ec968f4f808e05685162df4c003111f86d022060b16393647ac1002c729ea6af6afd79dd929091e70992c5bf59caff12c5c05457ca0e2a4c4e9498903cc8809f2b424290befeea717bdf67ae38dbdec98ab9cb14ab7647fb97fe6b1f1ca33643d3e377000f9ff95ba7f624e1336ccf065872bd2d5304593289e722843f5ed9624bde5744b9f15d387d42a9a3ee748719fee450ff8a3f4965f9cb961adb5f30e0dfce289c9bec7860f8edafeffdfeea5c81142624a0bed8a2b2f696414669c38e3040d164182c8a82f542ca1e20d95154eb83cc970abc2b6c40d6d96803d58169b0dceec819e3f7f77c1307d7aebbd36bf6421cdae199446cf0d9aafad3df00eb3b1c89f773a04676a37268e8001cceb68066ca0703253c5962e3fdd53c6e763a3e70ac6f1785ecede9c9e2703d7506deba35a8ea19e1e1f1c3f68202b64b144bc6b9c648921d0e7c17a805d236a5b3b495ddbfaa89df49446eaa5c6d24cddd4b8861ad2d1236ca26e39e52831488fab855b61f7511bb5ed070727375899629364cc6b88334bfca06409992f3fdd7a023616a953ddc8fb5a2925b52424cf3d91ad0120cdd5d3be666bd6b6c41c7b84248299e9c6e5612aff0fc324245bb3366fb446dce6474b75877d4725ebd181b5ada7995739aa2ab7da791c9f43fb9a0ff043b7b6c9bec82d6105b746aa938e5c2c4163b238242c3f2c5dcdb8b85f2165b299e3d426d3dc45daa4128efe6005a7cd4ee5529ea33e292cbfbbb3117245e60b1125b610f39292a606246698c879e2c7e65a57a45c995426942641bbcf35909098fb6e4debe183c9862404c15cdfef93524acff3a4273d2955b89d43078f1026d421be17e3d72be7584c26933bf01013b926deb4777a50c39e5d9eb3eb082c471cba96ee5f2b412908e50bca324f6c868ccd006128e0b8e1f3c97a5ef895c39b5f27437795d40db582d12aea463ea0caa35656526a0207336783842c23afe7c96b7d1c47774e5d28059f19ce09ea7821e1db9571304d8a45f8871523281c5fe0973d6badfdbecf7e2d73cd765643d18a95ce398198c0ef63139dd7d0547677e7504e698ad40ff8e41b7d38ef3acb353b1c28748e168fa834b71e3e6695df77e7ee6efc75eece3e4a7ac9ad6d76f3a0b965f60aa5e0ef257cdeb5b09e578ed5513635c31910fede4395e65cced172d762f48583aab1a14e7a6519adf6d308dc7f13162c4df296ebeebef5cb8a9f97816242611d3148c7d7f779b440423aab2b3475b1972c53c12f99f360f25adca58d5252faed81114c61b05651ade6309d704df3369dcca33971aea8a472589692dad646bac643470e1c377ce48eb7a470bf6c892997061d405cd47239a65366727a16ff9436f5a7b4d6ae1a7803c8005389cb3c3c79675adb36032d0248712a41637865013e0803a51b06366797524a29ed7faef5ab9452be9452ca9755fe5f295804d3a5942e17932b65c0a4beae9d2d66d842ba6dbbb51eed78f92fe5ffff4b091aa1cdc12f297b9f33b79eb48f94f5cc4cefcbbeb7c7df87bdbc2faf8e1e7954dda43c31a58a090eaf5a1550b2b769da60aa3657cd3c3d6094f0851ed40517c32d210fa1951b830c4cbedee11e3d800071202f7ee7412f5e68e0c2f542a93bdf064dc86298272086a2288a210540cf83b2d727ebf36038f0c53326eba963de79b96cf52322a456b1a634452ecc6006c3ec9246ff4c190c3d7c5c22b09996683ef62fc4cb61bf401f99f7b3ef7ef533fdcfd19dceb6b5b34cce4dcf70080ea09a4d23d165aa4b28af386fd7e18ee4e69ee20a9debf78d59828a6adc135254370d52554b89a49dfc3c7b73e8a81d7ac14a74b7ed113d6038ef8df99fc4865f2f7bee209d3d3e163f0d02fbd8ba00a90000f84b3afec6bb3251e63f53d85af242749763660f8aa6cffc46995bcf01a33ca8948c5ecb0a000614e38500181208c5a2f1340a62182635c707c4428cc59cc80514794492a44106a328c818858c618400004306606666260ebfaed50fab97f37f3fd54e9b0f70f0b77a37861e23744a50bcd58a786da39912fb0e54c272a8e2d1a9d13cb1d4c54a2a937440acf06e1ea40e448b16eca9bbabb07b97ba97809823da440dbcd7655f007a7ad42ab07ff7a1d0b7d78e482d5db21105bf41baedd67bc47350c1da238eb477a9717981ba76a5735a65e5163ce6b8b5068f3aced528f10063313f43ca636ffbf764884b73fc8f47fa4bc65ffd80c5b6a284c5275b939d88daac758fd13bc32f1e871bc7365cb66927ddc757643ab2def3c12b78db92185ba67411d13bebf23ce1a526ca9d1eefdc9c3d487d7cffba396837b6ef87a0744ab906e95b648597845ecf4ecbf314c11e05afbc1aad81b440e247b43c0965a5390d60faa45613c69c2ecf5ffce95885f1489a6f088ae4e71ab8fdf2e4f0a66658a6261d62b2bbbb325198571b8979d864d7ce786a187205dd7cf92fe0c1b76851f1ed8dee744e3622ff9d596aec2dddd51e0ded24070708707736a1834f203139b01d7ac2f2c5d89f32c45e20b703b791a646ea51d228202a45bdc0c2f1b5841f3a43fa8a9acfdc435d5ea0abf424d6a5a3b0f8966336d7ca59c5bdbb9d6e0f7c3a9a0bdd83b3d94b09dc25d4bf396a39621825849f9983d0693b48e6e4602b76f6a6b6606f4d0a62b14c70c10c3dc8a2e75b58cda62b183bc2603051291b621e49c1d598f91e913ac948147b4b6d12c788ad309765ab089638ae95a648dfff54565c3e175e6b0b208a82eada3db0b0c08845aa5e42d7f90d647d754a5ec7be203bff4d38b4e825fed81e1ca34bb2cf545e74268e989c079cc61a860b212c4c5d4556bf733f97672e9b32e40fdb7ce8ea0605f680918cfd116feffdb46d63b39be9b5ce7a58738844e9b4ba9f9e8794f91b97a4197b79b80bedbaa120f11e1c193d129c83a9da1f1b42a6ea369f124be9cd303fb88c1dd5cac578f75414a0497123d6e5c1efe16b26211045ce3c817df44b188165a7caa9b0d2319953c27155bd99401329d1e669c6bd13d41e11894a07bfe80efbb02cb6af8db5fdf488b9e3e9dba7597286966474b52c9471be0fcbc28647b9c1b9a21c0c4c88abcfcaec820de615144f8086a1a3a39e051233dd9eb50af9d92f9787aa7aeba46f8f62b07b37e9d497b7c80e0ef1e7b44da41bc33bf7e143a8c0446b6b021d52c55d990605e9b38f7402f8ce32e967e036e7a10835bce75d5379202bd3f33b10f04031782a3926b06e9c7c063b9318d4f6ad9fd743ba86944e05cfb8bd99b8ba57208aa1376af777b7cf8384da71dbd359db1f5e924f77dbc09237737e005c6fe7cf6e05f2271de057ad7fe387049c99c0deb3ebc916e02864e85368843e51ee7c7c815226d31bc1d45a2a91421992ec2afa54e5c985743dac100e2f96895ca0a8c4f470b09db6aa0bbed5ce59c24f3ee1ecb43fbf91a9b2558d685713f12da9d442e2fdc38eb4a6344c46ec021ecbaeb6d335599e849d12c2329e2b9b8ee33d92468ba3af77215c2330e2bbcdeb81d2c9ada8e79af0ca6c24533eb4801d03209713a4af3f324a1a5af7212ee96c3b7df9ee91ca20a631a0b64098b230bffdeb723872024df937035c04c4e87a1675852b619fd4f3e27c0b60f882fe5ac6eca6f8dc4b865f90733d0ec7a287565014acbbb2e26320b4b0fba2ddc8fbed9b237130e0c6ec093a5cc7e5d9aa924017309c03b4ac9868053defe1fa6dfe043832907d4174fca0718f7ddd5831dd6522b07162903342f48987939079190cf2149f2be8e089ae6a1de3ad37a6fe75734f8a116b57720a7cfbdd34fd327f5465b401f3cd902516ab4ca7903e01970ea0896bbe2121e84634d9b2445dc36f92adb569abbfab993cfd0030327c00af300366e2f5e58f4b700bfbcbd8db605603a507d9e703489d3f2e075c15590902fdb0f7773d7f1d74fa37b5bdd9311404f0b0122bdbed71b8fc8806e96b4bc9c72db12af8333eefa86f63cdfa7e877b01dfeabd6eab9721cc62893cfddded5c7d9b78c46a4d4c2a5faea9e5a427eb4483f11af708ccf50df5f6a4f893f60c64122f282603b1195730ca9d719681962287e52d86bece808e9a7dfd60ba3ea1ccfd58327062f06ac3578ff12a70197df40ac47b8774207f35b211da010af0f4dbe2e82ecd10ef229b2bb931314ddc78f74efe61ce0fcacf2c60dfc4afcfc0521db6086e891dafaec065ff3a70134451db93ed3846e716b0d496c0a5af59af4c5156f93ceeabeb60ec93e41617da83353e05de9f599554b8744072973c099924e9e064489b028cdefbc7f34b9fdcaf7cf870dd42c9f6e9eacfd1955e5b211162d32f2ec50137c1abada6aba6857655ebc59bb5a51ac2e6bd86bdf711e4f5dc45c8dd939ee3db5d62309d1863030629df09bbc01d2003e0046737d057e556d6334f7912338694de078f5e47b721cdbda3b6306eb9b55c379876cc7ebbc27771ac6011aeca362a85bbe3c03cceb77d1346e1a25509cbbbfe17fe96261275174026dc5268db9aaf985e00c0464394673b756213b57ef0fbee6fdc18c6ca8cd7273999e45b033653cd0d44ddd0687e44a19046eda13ad1bbfba01326b53195c0ffed3301ae9230c49e1a2eb24eecfb32079a0b6187443a53492caa4088212e634b11a2ce7747a57bc3979ca31154dfc6fc24b2e494d22f933c2690fbd5b2d3f302ede1cc981f4200aea425f8f50487d7d2bc3fb1c8e15c270f41c4310a76f684b2dafe14e984399a9c7ecf2701ff6706ee15c43bd9f0901314fa346a6cad99b55deabe734c604e7498a43be0ef78ad639341a15c809b8eb183146388e262e8519be325d6d9da420e6e2bd32c3f7fa60743261c03402c5dfdc62fc57f80ed0fb21ce795a7d4c278b356d89e743336fdd802a048370f7e9fa56b0f1e7e057387b19fc4e0f4de077d6fffc8b1b9dac886b8bcf0ef39dd8a636c1453b32105e11237ddcc1c1767db8402d856a10100c912c62e3b1cf17867e716e412093fa3fdd10d3be4449de5dc25890430dbbed3f05a6f8da58de0efc887c8be37c8a464d3782a81b2a125b9a800b3c665ad08988a13cdae8d18e39a308d79dfc12fba8ae15434d881765e89a641bed29953e4e6642e580cd023f06f2adde905fea1cbb10e5c5cb12335e1f9d7feb5c1a702357405dbc9b32541cb98174e8f0fab2a7e08a9e75e217fe8def74bb6848c740e0a8af622e2d7377c1cfdceaef83834d7b55c35a6f782e497078e999dccbb0dda7d5564220e2231583c835012fa6d1625ac0a19d118ca48a4da16db57dfca3d1a3fd00876886acb0835874b9da56fe6b8736602b76e2ed17d039f2ecf554aecbc1ff824deffa62e46d60b6dfd09829b79dc5932dba321bbe3a721155ee3508a43b121ef5cdc43b1d9329bbfb4a23b7c6753b2e343ba8fe2b952bf2e56a087388f9b2ee15fafc7840edaa7ca7dbd1f7cc03b8840b85c518f3463cc593c8bc79b7e3d6991e42f167902d387d2ee1e9f72eb5a2d59108bf59b26edbc5498941811e16c786fa0a6768f09785ed0c82330f82b17a7e0447596591a8b9feaa359ede93dfc2235c468c7983a575364edb377aa206eb494339cb971bec0e6eb7e288187d4ba9d60c723125a4557356e9da4727a2993ee780ceca4b988caba6a1396d8431e1a98f8939d95c58cc42bb00bb86c66a68775ea8fb4096858a81c09a22560a356ca7b6eee439994fcb0ea5d2936b1a7f90298f1dd2bb908a86e93f8a7bcac6ae4dbc85721b8ba7631e029591345ca3e1674da1d0223d030efad3ae54b58d98396a27972355a4ed2aa5568a6fad48094cdb89fb3fa1797f894362c91149edbc029a04ae1f5118f49cc77806842e779741882ab9883f964c1571713d88bb6aae542ab317690a1346e478c071fee7df1f5e098bcde1ca82b637b2d9b0f5a7b55f4d09e9a4ceee96c40a6002f2dcb9df489fb93243e79225aee829685001ba7d7267ab56b83521b3a349555a30322670f0e274fc2dc63ba4aba59a2f7f0204ae3e64b0a5378e59e8c727f2f63b81ee3ab665ea3780c8a36cc3cee5ddf67171d09ad210a83add8954db1d84b9f458eb665b47fd27fe72cb63d29b129a2e51daa46b77dcd7e8d624e665a6991d648da8c6b069613e30e4e54a4b1d487a208697eb0546593c8051d3ef01c307c9bbb690f4290cb5a6ed2aa7bf1b19eb051b4e111503b436d03f7d96de136e9dff54f3cfaa851543822f862cb0a35710a953d130b8017368fba8d1b8dfa5893d55628b7d4fa2d99fdca38534d3b9536bc4c784213d021fcf8d9accf872c3a6b851a96cff316de21e3a0ed6b45e93c104475db192c175369e010a4416ba052e3a3de50150556c3573f9ef4fbbf896591279bcb667fe29cf7ca6ddfd68e3057f9abbfab15d0ca4b8901fe22b9175f712d6405f919084df512db4464ce0cff6bd67b9569ab8a9cb93c8af3cb0e93a8e2edf577c0643951059f371fc75742ee64178094e804e153b8701c6271be7fb53e5587ee51eb030cd91679256371a142f910d65057a218544080223ce7b870b3ecc7faac90d39a526a7748d54c261e7601cd044c3a61752cccc0f7fb9ed624d7ffb3af43a6a878657e35dec5a164cc62c33fe46d3b7eb7c8bcac8309e5ce746fbd1918477284600fec88e9dabf99efa992fa60843fd86bc0975cdadbdc9ae1bd360fb836a922f877591a9857fc96860f7786b661f17cf21e481058f21e687f69899c1db9a47fd24abb7863368cb052a35c4003d396c5fdc0f7ca729eaed390d32c78ce2188225f29376ada3c88cb94c9d52526bb48f664b510a042389f895939305908527e59764626112137907b2a8e2b75e853149ce287badbb10621dd46ef3f330665b7f6076d8ee839bf052de7906f3c7376b6a6e7e7ee6f633f409f5e5e4615b739767a955773a08d55c942c6c78703538980ceb3737c8a2e20139df414d8d5fea3b9692b69f3fd9607a654b8fe045fb4609865c481e9636e15ac80211b91e6e424cdfee76f2f26de2cdff94edc38963fc1cd8e83b41b618be0e4664294a783e68201734a466d01c8cf599e051d33c70ebf3fc1033d247c9c32fa96ed36040d1588e961df252cee9a29ab7a98d63edfab96964822b30263111715838c018171023b05d88c7365b46eae9036acb429554e295229b1c0e5bcc0d25713afb4b63f92d66b0be7ce4deb59d9a95ad5bb5d1286e09a13d67bd53ca511c23aa2b577bd4b234d73d469fb4e51dbcb59c501a22364bf1439b4ef205da3984e44abb28f2c8eb9a74bcbdde880ec11c0ba2f10fd92794dd032d771fced80c96f26c578e1f1f1a9d3b9608cb573862942a74523860092c92baf5d2ebada1c17dbe4672836fe8b3068798301d20f4a5cf9eee1dc9582ddf2a71e2c5d9a60d310ea9b8f7bbf610e8e6d69570c0c1979999d927ff650806062d703cebb55225c3ed42108f9ab811aa6d0151a13def5f79f35479ae47b4d66d4cc3a54e3b80516117bad5dad975bdeaf60579cf8cb62d6c9f9af6e15f20f52302df15f98d560fd9692cf477bbd985f324d3f1e822cdf99284e1fefbc6588992e109e14c7a38558a3dd0fb5aa56eb63b4b823ac1b991359558b93cb73f5154b800c41a8ae2b7844eef03b6c4b530d6e7ee0140025cbc4e08bf9f2b7c595137a719066e7aea9f7435e8493b65b175581ac10f6cc10cc17d981162b8b40569d91fdb9555389c34a96cdaf7d96e9007b513fe6af153fc40c82cda16f3b789d7d68cea7af4f20ead03a0d369bb2323caa2e4bdbb7f91d3d86fe2e07825b4b7a11345d10204119e11a1d1c9193639d03288aecbbd1fbe59f92b58bf8f5a94ae0a0e216bc647cf64c1913099769e5e832256225b4e85025289e52205e652f807df83bec10a77492625a7aee515262ac6f7dd55fb062afcb9eb99fc9e07b88823c484f8e5a8becf8db040f0e6e90f255687df9a65d4f3539b863d478c33a9b23810e5cccc91ca6d9be8360d7fa6608bee2d46c38a6a8a3f27a78a1996487614340e324fdadcdd9eac0da6da026fe290fcd7087c117da36ff7833f3295aa7d2ca637e3992d572902c82dd9df94b8e7037a7f14c200ba8a56c9e60098f2b2c3c9559095bbfec7009d7e7dd9f24af9ce738096f1a837f332f700f051ca04f91effabd36dde09d4838153283cc6cd8387d97122570c494dd15df6a454defaf80dc84afe9827fa421199977de00a798c07ae3eba0f0d9233d5aea793eb1801ebdabf0d9873f433e828f57f04cbd5ea683f971d6e6d295dda75216ebe537eb5f21a450a7ffaa06f65896aeff07c9b99ec4d53b6783a4033279b1b668c999ddf182568ca075b75fd4c23e40d6a05f5bd61be4b710538bca300f748991876df3f28b1ec31234f75d2da1cc0c5d3e11dce719567d1b900c3b8743ad11b9969e27c442b6909f6c5a02b5689259502674f0bb8ea23e64b8f6a3931adc6ee4577dd4cebbcbf98af07b039c3fbff1b61272e5912187acfd4b5daeb0e8a121646faa54621b848609ee7ecb8b9dc8b2f0884506759350e0c2559ec35c509b05c3ba686c10fc159a63d210553bd0b97ce7980ac5251d70bcf7d36b7f06af129e2f78ad9c51f0b3221a50030c621a301a44036f4c3fe60d4c31f36d1833f8519ddefa54b17ab27f09da7e254b0bb8dbd944472ce8fc9d7ce381846804a478ed994a651c994e03b72bbfef9a45dd28f7ad89d3160e1ef8f66c7b0f825abc126e89d59b050ae0f87fa50953441c37b66a0cbaa0959c2de3f37a6c12d7e76e6ab5ff26ab6c6da9bf2338b4d1fa7c2c96d3626ad31c5d21d211e5164c21934fd017894fb8f12c729dad987680ff35457b02a1e88d160bef43babca8fa476acc08cb74ebdfb41f8a5af7151803cfbb48140aebfc9a3bc3115e2edab2fcb22e4259aa80ee1fdb70e63a7bfda0b665a5b4eed1762b96bd00636b0873052d10eeeb4a1c9b2e02862bd741459fae2c4d3536230d57c1c59711901d7824bee217c7b1cc26da82e0635d8841aada7397f04d4a9581a6a87a60e7811529c04e28108028f5aa25e72c41846e416684236dbb63e61604d8e2bc3360114fad82686192c8acb2ee785864933374dcc53190d3fc9e08db9c77be56ac8ae8b1b759b443cdc371d27a870e97562e4e1654b1dc249dfe23f5ef48e41528d1d925e77c430f3250d41fc43da4ada6e2ca95e200527b22d729cbd655ad1e5348c9a6b236a68e29f54fbad1d462e93fc04070adcf5a331197c6e9f033516597426fbd20c3db8516f1ba2091a60bb00c12ace3b1559e97d99330eb7615fd3ab506f2a791470e49823f6840de8db065b0abcb50e3e53bfbe8b7db237bf66c804bc0eb73a9138088f8898ee86b33a6421279c9ce2c485ab5df3932c1890391283825ca78b1918de797a458777c3d2bd492ab76117346cdcc29d3d3fe7498eb72f6b287568c4dee3eba00b5153f36e20ea0c6951f8c60fa104dd60bfe330327b54f8dd4a70894e955377018338ac137a3e4bb17aa6003b2095bee7452abe2a4f3da5b26580512e8641f846e4537445a1ceb8c5052338ac4a9646aa67a7611b575874da6bbb1c5d465a5e40db0ede66b17cae2788d58d140bbbbda77cb85d65929edb222b213aec46a4db106806d91afb9e13598bd303a66f45d5659aeac3da1b1639e674dbdbef5d695611143be9bbe93a6c9d47700a3272eb44de984d26c74b4a3257e35b0a3d02974150fdb1e8031d108dc66041efdb798360cf7c05e8887c9dc7a364c48cf8619b0fc27ddc233299fe6bf3714ad100dbf003862809b508a329f49cdba56901dca2f28243dfc620e75b13fbde3a5e9cfda06fa59564945c1d644a3b1fa1a3ec6119d0070de23498266be204f296334df5a9fd3bd17c54d6b6e66f96eae813d10333f2cc36a9c0594b0368cdc4b0571728ccc30ba24f4a4ad05493035004d89e65a9e7f157ebe4b857c288123a3c9f8d8bfc1c1bf9827e4941a2863620efc0f1544139528a9a785da4322d58c4673aa8cf80394a536e7c4eee98b77bdcc4e54f02f4cf834a25f098b3986297fa8789710a1e0960f5cd8ebbd5c43890e19facceeea260167d47b4f9b547bca0c6fc70565349574ec474a4c0085763ccd1197b7978460d62c81c78b31e5b04fee43dd998f9e0e4cfafe45157aad758c65ea4a5504d2f51370af4dad8bfa69725e4aaf4eae2c75f01de84e3133a1009ddd0ed3ea926cf11a7c1f76e8e5cdb3099973e6fecdb47cc1abe642fcfdabfc25a44bbac82652cc9070c222167552f3c4de2d9ab063c235d9f7f30be45945d639ff97f8477a2a32fa468a4fdb1640133866cff3b3b2052671d2eff95b2ff9d0a7e13e9c08222b51478671531725a6855d7f7c0aef49ea68c9d7fe3032832462b9bc0f3bc1586907840445d7461d8c3567256695010df8a02f98e05b7de31f36bb4c603d40dbed853d8f699a6379a0747feda5246ef7fdde22c9cfe15e6dde3afeddc8c8ace5edc1b6a0c92ab1b5f17056ff833bc0097351094d885877e3314730cc15de6e19cb57816f11004edb75cdd73224c3595307654dcd09ad2ab1fd32af44d4d435e65c4977ae000b0055c06cc9c5f6ceacbb52a3e704412a08a49d3d2dbafd268828b9638c05eb28d1ed588bab4b74bf16ee8e896583a23e0a76c43018a4d1f089643f6d140aa22e743615c507bbad0846010e3f0ef82a94fab67b4db93da5f45682bc290ed36d56ef75975bb146db1ea50e406786541fcae0e9cae4c106080eae7d1f97a5cb5ea564ca65e85f76fc4bf168cc12997b66e3a2bdce4e3265295d7776e9f85ac905eb6da36e4cc8ff3b75a0afd4347e462758239666dc65e669ad12c644b3eba08415181ad890f672b22b633b67d098959130182caa84fafed02bf98816949a1a0d7d472e4976dd16195631c53131c7ef3cc075eebd5c7b757a87366c53747924c233e37b9a9f95c37e06f7da23155edb3c20bb9c7859319a442881fce68330530b42941926e55d77d04f58f1fd22c27d5cfc3e7977edbc6621858e45ca0c3502ac5390b43b7ee917a9b2586d3b8c1dba2c8d41e5344dca35d6cff53382f142b7057a9a9f54cd47cadf3f9194f33b9274bbe020d29a71c348d7127c954bd20e03c30a909783d8c075e4ebd3958fe0bb9d0084cacae4789428d0932e00b1ba72caa4a3f56a58347eff66b5c137e5cf117eb7350aa516d05d3d1d6dee9c6d36037389aacb7f20c22965e9d05eec05a73fed85923ea8bbfc1b3aa9323b5ea030cef35bad4f36c7c4fda3ffb3f19e68aa1436857fed596d4e1f03436bde72b68b31e46fc27bfe0a290d2d32de3318dadd519c1058a1a7960d5f1c58fe11815b64513e03104a48439a2375fe708b309c456112460804af1d5b38dec6e14495c3408d5d7a822e50796d9458f17cf4950d4c6e4ba5cf5101d83928655fba0a54d2d7f185a6e65354b01a5b6a1144e0a1ecab4936a1de76e2e0e7f24e3050a894d579b462efff873f1ef3be4872f515dc5c730255ddcf2a9d10d9ebc79ae606139fc837998e38c29fbd794878d064b437999a428d7bf179700e70b93d4d3b4b14d5da94a05998d5948d0f4118e868f8508aa5a21f5570714be50325fd880f737fd43c806594b432e112e0297a8096ba4dfdfd3c0b5f610ad5530a144a6c4df1ecf68d4f7051f52a0f41b0c4809ee20ce41cfd9870de93e4344d14c82c566bf07caeb66b9356723dd2522635204710cc3e35bdfdd88ca29b6020e0919473420cb50a41651fcd15e9092216470d49164238ad7420d0f03d4026bc6d48c9ad87a81aa1e482827a75b2301a925fbce0fc097c608dfe6bc19ac70c998f49deb01e571524ced952376f5cc1499a509ef65856fd9828632f1ca33b8ec5974fb2b0463c277afc7d5c2bb767609d1f42861d389244339d233c88d2dceb9b7b92428c7271be6b3dee6c6fbc3f529d81242b3261e2b66d4546a6208dad0d9d68ec91a944ca431a669ccc282c8f7a68dfccc451d26c139a9e32aee2de2e42622c400f4575ed4fe513bb58b3c8a3c869253055739a15d485a222b76bf5471e1d454ce96b40cc56516ad2da01714d00364440622d6c7455985bc65cd629c73fae554963eb4d46044ffba6f3ee184df67d86051581f36965ab540c6304e87bd441b720a58d4c06265461471f6a1ba74bd06cd06607b2efc281d69f809fe9b9240ed1293ed778a693098c56690cf0c631df69697b029089de284b162c350b5ea4e27b8a8ce3c856c0e780700b6e535602c0d2488a4d659f8d817b4c134e1b064783f2a31100132b70f45afd232aca7c5970cea48c4625854dd848209a255e16f35669a83c458fa8f5d1466da207c65b18e1d63a05969c66b07b76981bde690c84ad14b3cf71c90f45395d32aef0e527347a27c89bf74b5340f70fc70d1534051a901c3c7cddef5cfd73f6c500e8a69c8c3a331b0caac013e74b76fde76ad275b2723bde4de61a18ed40249f9f7229dbecc024855f0f1aef4649057b091cddbab0868f3a517bdb460f03ed0bdb0c8a94476c935a5fbf9802db246b0b268f4105da36072ccd6338b065dd0023f39920cfda8ef2811dfff12c2550358a4b46944c18a361d11bbde8badd5d6418c90f0c50fa65f539c2919249df958524f7766920ac4fac80fbeb47138d4ab12ccec470c56664eb845ec665c8e1aa11c37f1156958ff1d6f7b5ee8a07264f5be9769e3cf697830d1eeb1ca6bd51c579d04d5d74d9621d1cea506444f72ce080a4e04d6ba85a298eb47ee539f60e38da9734c66b7836e92dfccfcb502350e958f03ebfb59e989cf2fef4cefd243456c393dca7dd1d246849a9193833ff66c327b55446dcd67a1bc645727d378a45608d88c7599b8380494c76d7c8144736c483c262b39d3d491f679e0f6e06a09fed9db923742ff453f4088af10eab5f1a550ed2e12c5e319570bbc99d627e8469ffe6867f5c3b443b3cd78199d9e23e789ce22d170d436eaed873c505bcf17801417ec8778d61943898eab1377b1b756f72473f0dbdeb67edbf7c61c4a9a90d8879992ca4aff39f995b0c792255705f0d960180c830e6589a4fd8468db1722efb0a3c5cb347c4fbd11480b92094f88cdccb813e910c042da73cbb0d182123a0b771815d968acf868a20e2a19a171d52442e2b7f10e898b6e2be7f07619cfb3bc42fa2c52b77327c5310892e3ca2639c3bb9513cc3664040164c2b6aca8ee48ee4058f192495e931f6d723ae24b9d2987fbf309a72e1effcae6e374260dc762476a31ac05b5ffdc0d3bb4e3ffdee1f08bf0a95b1272ae1dd1dc73eb0ca0a84c9ad166c712ffd8cdebf223d70ef759811e5dd6947501cd875c1656c136d28f000f8e82a0819be9092d92604de9fe4ae8e46f5143b088a794808ef4ca5db8540f7ebb2683361c5a5c828341b57878472e9153c078c115cbbde422c990024f719156b13990034bcd35b662fff47e139ea86b074536708b3ce9f9d613b9cb1d83e3d194b5898920930c7f4a3d3203e3075a4349a00d5b65cdd37bcc6a17dc4825dd93606b4dccc449f3534c8bd8b5a59b242f200c6eed83f228e2b63174471eff058100743eca0f150ffcd96c4bf509119d92ced6943a879e3193bd2d4014c8d6970b7986df02a7acf5d9084b0f3d03bf241956b6e1f811bdafb81d6c2cf9415ed557895787eed283d5727bdbaeeed69475efc159cd038fcb47e0efea14547e16f56a6fd3e8f9e22736de3bbffa1a364423f13ef1483cc6248fea1c83660c5860df9ddd56a304eac82121a42fe538ee839afa5a41d3ddb7778ca8e016c5f2d8ac13a3b2104f914af54e88b40b120e6b2edd9a53a8670743c9157b63db86b3c4160faa7657832ef6fd878065fc7aedccb620ac7e6eac3a431c63c8780a323d174dd8227587b2b946d61c2ffe523aed3f5372d99b54f15888e742e5123bd6500a4ec2e207d902051171f3df995dfd4c528fe037625896d137a052ee407e841eb447e20336c9c8258ec8860b1873b72833fe0639ee1b248de9e217f497787a6945ed46ffd4071a42c42a2053e6d3983e2946d027bb31d78ffad7b86615d9facb9a27673912bdfa589edd4b477b514ed67570af3a44fab35514e45b8a92fb2470aa0643e0fa1294e57c13ca14ceceab5209b4773a92be44acf99f41e71cc5ce95ee3116dc655b1ff5435a728678c16abb647e8e855fb9dc237eddf2952caed89dff58831fa6948917e7a0daa7149906f10dc3c7593d04ad002cc39ff5835df2c08f5760758b32addee5d5f0de978776854aed8dfaf3085cb65df0887f68da369b36c2ec2492394308855e5d44cb968f7b43c6e86384713929edc50f3799ca2283918779912975b9cbcaaa1d2480380a97583903aedf28982e2d62965979ba21e92bcda4440d766e72c32aef03b4eba52fb0a01fbc6650cf47183924c232ce3ee06f43353588ce461c65eaffd13615c3968e171f20a078d5de9b8625d1c90aff06a420342362b747a649c54d314b2abccd890465c2cc7ee563e8f3e9f68c91bb97c00046fcd407c8582378739da227a443531043920cca11ab30163e6edd922f1e9b45930522696a66ce31805e70574eebb27865f44b7d1987b5c258cd93e1540e1e0680667368ad14ef6986c555cc777805bcb8b21cdcdc2cfd964d7572322c76921399f7b8aa0ecd45ad1e5132b26b583c347f80eca144e055328c3997625b805ebb3992c96ae931109e7c59bb136fd909f3e5ff00d646dc2348e85af60ca3bb0c46ca442e1d689aaf81c8fef594b11f17b6d3ebcb2057c725224ffb47dff93da9fc6814a572a897b459296911b3588ce6eabc7774186fe74f5e029eecb3ce5f9c35fa2dd319e3e981b6590f7f8d0504de9be083e090a7762af6657bd8e38a29d300ff9a8e7896e50431f478773e0dc5b288e22762fb932fc09179c84bd687e45282af13523ff1a0afe59aae09f3c4571b8bc6f4927de77cffa691afefdf426364fda0d82a128ba5b2acf3576122537e9548f5c0ffbaeca5d3ab15e6b1de8705d339957fb949c6eff24c4cefe9df5284db149cfc7ec684b6a3cb42e47e23ae0887fa136d53c64d6409fff5e3ebd68a60292d49d00cbd277e4277289a69e9ce2b08e7c695c46b832db96f71c7fb8b10ba5d970ff254b2ee7b23ff0ea083d34d55c32600974720d1512d7f49b6aa52e8b3ec687fb55ceb9e087fa5c2f7f385546a6d8f4ea53393ab6d9d0d24e966a534b6f319d0b4d8630a5be762c66a64cf4cc72043e57f64c9e2461be0660b53a1b77796adb6533a5afdd9004867783ed00b3c2b4cce966bfa14118f025a7d11271347512a78960c78b7e4ed35aadbaabdc6bbd2884f5d322bcd3e0ae1944c6d956975ddb19763c393adb4d6119602c7d568525e9ab92343a7f683d3009d6de0537e810a706c39279647b105faccc0f1e4ac86f543efe3b8105d37d8627b7ae5e9798d30bc398948a013fb94d6db887b526185f6958885602c2966fff134afd9372ea0d62728148c03d40e9ad2708e3be0d65b1da107771bdaf71e1ae8c046b485c41d88561132a06fd5f9f72fe9f0d42c34e0f6caaf5df4f706cafef3ab22e7e0e9d4b34c9fed1d1a0fffdf72c31153ed7f5d90b2f41ca837580bf93c0b11c074e0df89e4d49d740e073b6dd7248d26ee4131b1f41d737ad9ec77c050eed6be095f0c9520d039a99f8d55095d2b185781c902e422f02dda1b378832dc15123c4a1f8e20612a3657273dea5caa9ad71d2a9bcbd99c6b76efe4e61e07e3bdc5c8da386ad7898b52d855bfd155731df59cd8e15e27cd6ab9abd820fe46e74ff9045a309e501b3b358030976c03fd59fe457b7d7816d437ef6b78e6056cb9e50135dab303c294257fd237bac3d2c4aeea8d8d9231985450875b97da7ffe318952eb997fe1f05b171f634dc2091443f771caec669b232366dcf81cdce207ad0c4c039b5df0a3005393b381d28e207e184848df9bc393cfe62c15e441b476087d1ae4c0fd8bc2eb40c079fc513e3270b1109868a54a6f3fa077597ca8c88051742f48dd02093280509c65e993bf8936c2544d19a773540897dd38876d120aabc02de224d176acc4166050e514fc0cfcc8fdba48fe21c4acf8fd43c3ce5fba535b7bc469bb9b110b2792e669a6ce3ddb8454cf5341b6174ebf470556eedd12a4f1aa99701647b01dc7db409d75878b417f061cf31212a361b06b20ff9bed9c4822b6f1643a50732042eabca15e6091da34017ed412afec1696caf7e1de68a4b05bbf5a84e668e64546e22b4a252f00b911bd0d43f25e52a3eaa30a636ddee382063c3fe15056c4e4f6c1f89c95147bf1248069762b1a704b3c49e7da3a4883d53e38c328934050f5be8550dfbcf26013a7897ef247ac81cc0cd002530edab7044220545b528833fb72f3c142a14b192354c14d33cae5b7b33a2a8c0eb884fc40662c5ecc66f02731e2127130f4bbf817bd7a521435ea34aa1b3417b71284725c3e558adb484af86674d218ca775179560661a4e6fc91cc06cfb47d6745ab9a8484c7e7b23fa564917042a809b96c80e35e56587ccd82c3286bd3495543c6ef1331171bae2d887a658e57a47737f4712375c14ad91e341f7bdeee0f9c537a39c7fe1f2cc7286d1a2dc6b9605b52e7ac26c4fccfeec0d88a0358b5c3bf3d5ae81e3dda869ba207983e5b901c6d8d4108361887a7ce8d292dbeecac2eb6b8cf4c5472eb1bb4b6bed48d608f83f35e8510ba3b17382e295b29b690014102921797b6703e2491888cd11dc87121586d5246b41acd9b73fb66d1188e538483a73ab25411f2bdc3e93c71791e6ec9a1a51197b829a68926f5e2b88daed7357a5e1e0595008e781ad7812313888c9f01ab215e44132c3566001b6a518ac4d90e89cb656352c823c7c6fca739df3d362b23d145137eed092f88283204ea5dcc4e9d2bde3841a9fbba78e31fbdb5a2067b1fd2e6a5c33f5c834016762e067957c0ab96721cd1d329014a0be3968220f9d67674ee03d7436ee72bc887481ecf78f384e6f4aef0f59a2429308d29542e490b37a852b8d1f3ec49b16f7b0e01f15285daf33e01e444237e8a1a37621c5d5d6877d79daab1c7021fcce9dad1913b5e1780072b38e80e37b1901d8295967a13368655c51eb3d21e8cd908c7b8b5e60e439761b4c25c37cb5b4372bce1d54b344d52c608516638a30b13296e5a5e46c0ce045b1a895bab98f8cfa58ac60cb9519827bb834327c9e607be281fd85211a5d84e71dd3b8fc3d02694f44ef57b062b40390d371b65283c383d989f8bb88b3b5ccd39ac6e62f13b41391ec12d7ea5327bd31f9cd2e13ef7625e081fd9d20861226b7833f13a5ef175f2c0111e4778c46c68709569a2fcc5bceba1eb025545145fb8598ce1707b516db9fb3c61cb97a848b80491c9278761cc12b5dd817632483151ddb7463e1eff62296748c8df1143a1f6d1b0f220fd783d0add71b939f4c5e03d9a96fa81cb025e5348e689504f98b03abbdb1b6ccd5645a49574b1ae64e1eba11695fa06985d1f0678f98fc1f693efdeed328aca8ae401c76b397d505645fb53ca0fe096b6863904eb2f3d28ee8414c769ce92beeca170ad2728606ee58cb6801b54c98140430d8416b3052348f99322ceeafa9665efff05c014854c34da94d3d604caa3cba29704cb117d0b39682bdf5f822ee12563628703e1c34d20f98c806bda4c91775b7e4c4974f18759e43974916b5c17df4d9503f92a7290b061cdac2aa7acd7ce82481bb78247d32fe6398e08ea82788fbaa24e9a9a8a5a69b9ddc9205865e930b1250df59bacb3ced7f85fae450cb4b9b394ed488336e35525e5066ab4367a7bd7ad2dcd1b4e2400ba2b16895be3022e274c1e3d6953ff7dbaa07776e297f4436cbad5ec27a6faf336f6edf6fe35e4f8ea1cb022bc4df4aa4cce9d20deba604f4ba85c939f85e4b1462d303df9201cfd65e8f8f62a65a512f6bcdeaa738fb780e0d83601217aa0909191cabfa95828ae282cd70484e101c925639ee30fd5cb67f3df75271f02ddba0fb5ea658096c960ccc51685bbb8094fa4f1ba6d539f1a80ea3f12849768d28ee583e101e0ef1b0174a29629b4147bc6cc85cb1254c57efe408e904ccf641604707a35b58c3d52c2016dab41a745da5679243bbee046d0a749c179b9bbfad144b33b082a8db6e8177dd7537629bbac442429b829749741c207c5de40faf7e2a54bcdfee17b4080b264a5f430303d04935aa81b8aa24f8b41a17de632f269fbdc1840c0e15b60c9dfbe4c7d7fdb117959293ee40565571ac2e691e3f0d24869d6248d23218b82479c096e8f4fce8435462733536485c7eed7005fa4dd61490fcc466194b211f8ee901ec9eb339a3a64e07404ce12a757d6d5971ddb2faf86a956f04868ad844fb7bda8f3cf02979b0b9b2c3a51dc49ab0be660e85a7fde4060ef8bfd79fb761224d3e45a9e197abfa58675800423e192631fab32daebfb54a5d470e8a555fa398c1c636be1f76d9076640ef52b6c128ed6e338ef3421f497494a5d1926473216c473ff9dacfe1b171beab448d23c4c1d6ce9c0a957a36c7a1fca368a7aaea35ba1ae02d782c2323ccf40c81b5ac2df531daedebeef8b37b40d27b99a4807d20528fd1b2e47b00982dfc9d0ff43bb33c1be11ab273cd3764e4d0b5c73880daf32cc157e90494b423f2d55eff0ef4664cd1094904cd0f388f3f7aade1874103627ef479e818d152ae930c593ceb825b6c943151159c151d5f39258d92a8c33fb1123244be6c4af2b6e1b9e170f3a6eb5fc4e78a8b7f6caac99708ae421f014c32137c44084a0f537e475e24923fcb296e1ca39d20ea199e3fa13f4c32a7a7d858075d6b9a8f0ca0964bff1d4ffbda7662f09e5cffdaa078ed7dc2aeada03906b5b7b8239655a5b33fd9cf06de80c78bb3169547c73d32c3bdfb2071361fed23be8c4648d185188bad5360165f56862b5c1dbe942f85e763ee1f2370997688597312a63d1070b2f5a0107416fbd252b9091977c41b7f5e9fb7e0f5ac113088ab18b2e52cf6bc436d28c44555107a5675c4c804117cf7bc1123b2157f62bd50bcf32b33d8a69e8a2ea466acf33b4f268440f549dfcc125ccbd1dac00371a2d7bcfe59689318b06a78c6e2e308ce5e6c771e0853b75157fc17339bee2f6e926fe7c42f5d5ee75aab1e9d2c5e87d86c7ac97fdf12067e895eae4f3ea6223fad89380070f77d4538d8b9a567dadad437d421fcf307bd2cd330d6ec832dd950e368d3b3923947b74432b2a1584fd4379fcb1708a6a41e41dd4f4a9e126df7fa3951124c294156a279b2f539ad66e3b4aa942c205f6d268a11d36261cf4cd664996da1afcc837c812cd5914b8d0f2a2cade298f427bbe76a02d81b2ab045c3582588f79de78a81d7a9fa81a93f9deed5d30741ef5aeb0c2f1c03527c28e71d70153d51d609dac25490290b09ba98a82302bb7a521266b9ef67a1d901f811a805d3b59f84f4dd1a0ae85511f12d64331ddb64576c8f65e78d80ccf25e2cce96d8bbcf961ba22d028f5ffb3ab7b55dfa57a8529094129a12e165d54ed07ab6b070d26b23ae9881618f9a5eed329bc7532f1903e8411294514966ebc653a1d20a5689ee278c3c0d382e4d52d003962de32494f4f07099702dde7569d3b9a15c5b3c8e3171ee304bf94059b36b02deaeba95aa59292b6bbc136f10e321fa1670b142843e8908d08c496f727464c0a63ae6a17e3cede3e2529c978e246d142b5cca5e3e485bd2a7261b994444690da7f1443c842251c8fe1368e04db7dfc0d29c0dd1b98132469d92a1e324259728520630a46a8a46cd2bdb7d7785b77f6e159a5ccee34c5531ec09857cf3cedfbf3c0d96f9bd9a83223405fbeb60c31789de18ea3a676db767e12b7a5e9ce1819c37268d2ada400b8a271490c3230f5f9a94a9cf74b709a55a509c9643c606f0c5743ad8efef853a98ed1a64d3d0243dcbce4ac439e063579725782f8d1ad37b9da5b68944a725db367525a0f52abf6f649ebf77a863563c6f7f953a384d0504771dac757c2c937d5af6aa95372bc5937f802c82e3744d5025dc6b9b0717cb2a3c84b3b194d0d16867954158ee984f43966aaafc7dd3a984fe19be2b6156ec7810c0ec5750a6c193a9002548d803c2e105615a3005f4c63d4aeac7ccd8c027ad04ab13380024dbf2cb3523343b8c2f379ab55fedf63b78a4d5aada47066c013ca97462a9a5f39a6f7b680e5cf1c86f61c955fe1d3370c705b5137ecfb7039b38907579e2debd1050cd3273b58e3a63a66dbc95a72481eec3135c288493d97e4bc0b5ea3c97cc4ec8edfa00dfe8853800b54ab647da202fd33a1cd7fd87b2f139bec16d0500ee5531a9cfd7eae62e84b7475c625c043ac38cbb1388ce5cad7b9d7489ed7edbb843b97a379a16585b0ebc098882e7b58bca6e149c1ec0727d11c56017917fd210eb123d2a10d35030c703e4da697d986e863d5e713a7d4e21786d3cf592427ca6c5274221b2664ca43c21d2cbec3607412dcc39861e254262de0dd08403a2716e3da374a1b3cf417011300c13b400a4f619306885184a91406c1df40de1da626ee612f5e577328c6bb9ecfcab4c9e5256daf1de1c7dc75bffe8a5188fcffd3fced16ee7431aaf32056ffff2242f786be9946b8562631a9efce16b287ae96b3833aacafe13023f2f65e70d56d6d0a50aa65ea811c3625e3c666968d6c14dda34349b83174a35113f6bd3315abb396a218e03ca5705f26b7566e0ed16c515818da19b697d6ed6c22c91483bb916071b376d2c82e98e219f2db403a487276d2fa1d60ef858657ca9ba07f116644dc105ddda676b3390481782fef2f6fe778246cb4eedb04b822bf4bf3aa02d74b59720889a5f3a68a91ddc1659c211ea568ed425a19eede6ea2266631098ecd42d2ee9456ece6059d7877a5d7e000859b1f4963f72da5b26148be4116ff97b8c1330bdabab065ebd8b187492140bc314f1242c12cc1d59ec91dac55f1821dc9a230ea0fbb01b976e15e3f41d839b848458931768ea884b663de36424054ae930aa22478ac407383163395198b108163e23b97931a294307af91a258acfdc29cf7f74f6ab0794a11530a6e676d27cc60677fb1f8ccc88daa32760683cd1871ee23ab0eaac7cbe857593ef7e7cb32753b84fcfef1293798e039ed940b8ef376240a6440a212b5451038a4c0591469d413d5965451aeab81c340028adbde0326ae6b44210e8f71725fe94f5338a2d314bf4846807056d40eb203345808d51fc913ab50eef2273239f508828a471e85a07f0690c06798f27a9f2e2273174b3d8e62b80d1d258ac55992d480f5fcfa8f137238838f084dec8bfa319c29415e0502ae535424df4f1965dcec3b8cb131d9aa7770d8bcbbfc4a0535feee86793ccf163bf415c255a2acde780c4c30cc9f81a60111f2e85100d614649a85097f9261861689557f56ad328a873de9c49952702abf6ad75b94b28fdc585b2914ed380b7f72ffac0e6e24f716ffe8233f6576025a4d64890a1de7dadc41d3694de5d70ed53254dd7ecea368c9586a2c17a655828878ec7b28adddfb2ead242596ab6f8831906fdc66648b6d4a2fcf532cff87658a3ff2a7a1f3db94969f92447a4156557a0304cb6d87778fa5f3a596d20e32a6eaf839135281e7c14c293115c7190e9aed3312baef005a6a3c805664b4086b6f2b421073ac4058cfeaeeee65f2ab18a81acd353689ea401e9df7e350b677965e424b220246848b52d9007e61cbb6662b35d5a48b84f9378ce59d7d33916ff4c4140a9a2c355cfe9f57eb99cc3badfc207486ac123771902b2baeac27a0ce57c881d9565476e055b73d159ae23cf82c50bb5a7c8baf09011aa4e8b5292822dc9233fa6bf7ebba8278ad9f3c4cdb4a6245d303c78359b40f932b87a9011c3fee644ac6f33f8251e9c7ad64dababbc587e247461a6e7f59ade2c611781b38ac4888c3c31b7ab45e1caf6887351e0143f5ccbe2031ec909cb985f8e8377bddce3933a6951e2d05777ab527cee7f4a73b64e4d04679efbd0c3143361b468c7c4ce403abfeba5aff08fd22721ab91aaa8d3afe5939ac6bfad1cf3d44eb527d286863364393ae178cb3e86358f6a7db34098a1fba64b2e3bfd2e2caf0b02194a0012a1eb0361f1d4e88251b8e8d488ba96a98e407bf1fd0045fe975ac0875c36fde191ca6d0706e1f0ce662f5fc10272c90bd39406611e0457d45f8709a54f3af92ab07dbcc256130367c4fd721153e19fd1a07d09f0ec76956b0673751c90d9d453993ad98f26ecc064379fa6eebfe5628efd1c1d4cda14380fcbd88070b4f1b27b17b49e08dc9980fe838306f768140902ff1c1da882942de1918309622c70bc2e37a761921a9c345d23a70ea69c8d360e03b1dbb97eb86e1caa1f4af310aa3b16484039dacdf26151cd61de287d4607553b443e839c500432bed1a121e66d2de7fee6396a57170533157fe108968c30ea0db8a0c3c517f41dae1995b8f7380b63a155ca5e79379b0d7871628e5ea290201d65a26e7f4e89c79b2861cf9eab5011a041568ed5f40b04c9271831c85d7975c88e0241684793a95af8ad3956faa61f47739a4aa0485cb0a74a03c6092a54ca99aebf99c23e1168fc173df8bce5540f96764a71547a33341a72d7148828407f4cafd36066b58e5ce2a447f5b075ec7e7ff828b9cec935006f54a3005db69a43af324e700a15a2058e0830e000db45fe60efb5305613cccd9b4838e3d40905891431aa8bd5c69fa186e4b8cd104c8d5e1a51f466075c187b6259421bd318a9833025dbf63d9f3cc4baa7ceb0918dc865cf0915517cd083119714b9388adcc61a086fe4a405909eac3fd2c1835088d511ae7a11f750240e02bdf9fed7394c643c7248f288c27f9d671b36a72ff50364b3c64abc173e531f30ef616fefd1679be9b36d61f812c3bf62cef93650f5a6d5eab0a6d8e68e14048e103f07bcbdefa2a33f4850d4ce19c0aa86cb6eb3c7b18f04636bbffbc26404a5ebaed900ca2eed299e14d814a6e727de2f7e0831b7a9491cad417861dc5d37ce4d8c5f177431ee3b2de0ac83abb0068f74cb41e14938a1cc607225696b51d33678729cadf3ada93cf459e5fc7f5978736bf0c34195eccfc3b678b348798b1e771b7d277d33237402e06925537bee8c407de29c26020d3b0cabec2b282e5d98b8f4d8dc5375bb4a69221e3bc9ed080f1d161c836615f672b45af072d68bd6841a071db22afe005f047170756e8cb1c2f8d51a1c35e496f35b87ef231d728bc471d1abed8b12184ed94648ad1436cf3bb59f0c9193c93fad28f63d880eece7dfe5352a4100c9d133fe197d5125f360915625dd714a2dc7c6a37b0ffca269716e064aa95578406af467d2115e3798a0800ba7ef4380cf230ed60f74850cab17f537040d3a0d72ff9f6cc3f0485cd8724e3e5101ba60f5e116de700947e022a928a3fa268fc77f436d4fc0a3bbc503dffd2ce98051d0cf9385a8609a4ac5c224691800e307b3ad20f90aac4debdae66b1ea8503f9b78d730f4272cb0a87213e047a3f5ee14d95be7f24405b5a3c20308d7155d7f85477848c1adbfa49a817812875f9ddbd51da08e0e74fec07105e285cf9898770dcbac982c545e980a8a5ee5a700f448f8ec2ad129d89d9a24c402e07750a7aa7fb7d3bbe4bd70d9d09e971bcfb73a30482d23b6d434cf151c31bf0a2fb9694113f19e6a1e4f38c19acd7127c917279fa9b8d9c96fdabc382b007fdd215ea7a4d9613722b64012f35aae518c20b2d5a4582b20b56af3e5903162975f43a64911c665885d00bb1bb53f8e221e14ba8ada5e5076a43362a8b8c7faf64aa0ed67670267fdd78fa64bd5facf5b6bc058e1304c83d8829532f705c6ed42437929f2001d9293ee8d3d81c500dc62b9c221b3fe983e3be379405320dba88a9eb272bf49291828168cdc67b1c0327c05d7cc20fada7b179e56e4b762523f6af86976455395fa07644ab86da6ecc7af5109de7144e48fbfaf54c07e80e8ef018694e2f6b738f9980a270442d38dc4d64c72c2260a6aba34f177d5150a8cd9bf0056016b26c61c77d2b06f411d483b405487afb39fc63c6a85a9208e9aebc1c53138827ca590c5b79434ef5df489e25bc88b3400f6311d2c5c5115f439a547a99448ee9bb5eba8e049d634bb2fa60459db39aa4c5bcc48c652beedb42f4a66ce81f722cfd5f43b20fbedfada77a6351a359149dc6fc74e9e404bc2f3354b2f2c0456394bffe64310d6ff3df110bd57f2d712c13a15480eb5315963f799fa121a0f30815ea7c30363ba74f1a98ebd59082453c484ab7bd4e38d1117ca346927058c76016599a452f7eea69e179dfe448b6d0e3e60b3efe77c588cf6ef532ddd92a015df45265e96062d0be23bd39917be547f49f0ae7fc0979828c09b375a727037f10752ad59e191777711d926fb68cd29377506be72692c5fec4fae7dac105929ac7d132f984686e61ba8f14adb307db08e5a1439843a7e119eb818396ce244c679aed0a98aaf6b2a2df84528f7ebc0d1274019369e4a5c145700ebea227bc116cf15aaf9f82547af1d218120fd9ced895a963f69af860c39ff41cb2bdfced5da8296235918e46c51012150fc7336f732aa09f4eb77bf48097574674d379d5ccce40bc14e28c211651153125a086abdcecbd8e49661e18dc9ffe1beb4b32beda967346f260b0c78f4927e4528b1edf0070b94164b51d4003c29c22477d96259565b49869211319f05347fe657ade1ca5169a5c40f552f5071e6369cb0197d3a5609bcbe5fb0b14efc154079a7880238061b82fa30ddcf6d81de94f4de8e39a23585aa378de791238cd0d22337e884d7dad9ffdd440995b79e86e373b8a8179de383c45a47281ba8a99e738decea452fc5578a80cb110a341fb4f975ed4b5cef72c2872e57161fd525fb00acc80a1d97bde2a2c63077d70886374a47b2dcb4884edd05deadca0e0dc5edeacef70b174085991a36928e27e1d9f1d060f940e1b164fca531bb7d732e85de61ab78acfefc41d47b89d9b0bccc6df194e355fabf82a0a1c6ea1d68f2eef272d5a690c7bfc399fdfd8bf23f22192da48074c0846adac34e27d52f6dbec02f02ee6a37911acffafe60f59ffbb73a9a7dbf516e922041df6be651c4e2ac6d6ba3d3f2134336804dd770ef2f883240ffb44a0dd08d33382b18c74818a53cafae30d19e4873d7ee4fb006f653825a5cba8fc40ef43aaa5d4637656fe26c9660e0799a6578b27ed42d203fbabfcb595fab6ae46089d0fb0c3ed5eea050be2809d00b587f2b09e832d77b8821bfab54433ec48d2b09c6dc2c25f9ca955bd48f6539b5a037cc3366a361bebe2e238a44af8fd75ebca9217cfaf4296cc0873973b0e20bc5dc34cd6fd499901bc57396d5e17747523db09a17a424cc2d5614195cd6b87db8c31d4409d0090ac55d5e2a865df669ff54e7f2de1c7e17ee730973fe8183af2d2e0a85cb7b99a9ada5d0bd9768d24ad57d788ea798dc68b90fcd6796d0c3705dc61dfc02f3820a1f8d8139b56c59f69f3a8e34526638e670a1f49f80d62db43c120ea585a1e542181083fc9e7542c4a5c01540d34437bfb43d00f539f4d07247f63e9fab9b090bbe876a0451b3bc73f891bf9a0d2fde9d66188936306f4e782d388da57bf5680eccc38f2299a411978f289927ab0cc07a926d160aff1084bd7bf5820223dc8bc4fcb6cf8a2083f15f07e6d1bea51e5b291ec57e841a8d15029f16c326a030302ffa07d46db8238a352ae708ad2cff98fac89f1de5c758ca984300756532d1ce8d92b842ac9331b7cc6ba80911004a740a3524d7423fc9710c18763a5decfbb7150223938aacab1bd1caf1872597bb9c1b8ba5cfa748efb665ccedcb11f6f13c4721f8376fa67e5e2fb8c0f0155823c1db5964098399f1e59e1c447cb97d6f908f62f6fdf50904aabb0d51346b17a6df244050e554a061501e27f27027938a82465e232079a6adef82232955ea251d371e9c876540e3fa97e37417e05d43e794a60852873e5c7f5626c659ea64e53da456174cb43f37af305b67e8a4d0856791b86b2dcc3361d3bfbafbe9ef2c963c1b71e6c037c44d7d788b4da1cd8c63973c2a87adb064b971f27ebbc1b4ab7a86fb6bbbae85306108ea16083e32fa40b4e575eb0fbf71175357bd9f6ee55354b8f501fcd1f172978b85f61d6ee44e27aa15e389379f2e2d01045c11b9829a027cdd11fb36e7fe30ab777eb39349d1c2a5d2d56b9ce3dd4cc251aa2108044b072108a461f8bbc24f22197161163918c8ba27e7c5abebca7abebeccf32b4b0d19a80f9255912020e575c6be97ffcda1c1ed2a9df106ae14488441f14e3a6031272dcef670884c231cae63255cb6b39e804e7b7e92b0821ae40e36b8983be5c13edf657840a31416c404095e16ef49fd1e6c11f9e454e560e16727cf4879e326e844a0b72b7bf67827ee0842f731d51f959b98a7d4a003d8f9122a59f533e3591a2f7dc5f4e3eeb56103430c7b9b8ab18072a61a5c8bf31566f7fbfea3d4ae420766302e8915a6398fed22c56edbe5bedee1af0c6235ecc2579af57931acbfd1245caab06019bc82c4c84e8ea30617a0f8efa9ce25918fc10c77ea8027fa8c2dde57733962c17d047e17c0bf2dbe40b2dce10b937c9d47b2deb34a4a38d59ee140085bc55b04301651b1c299fc16290b6225c0fe2f522fd5c76f8f971d326ec498bcdd160c022b4a27d3efea431502610bdc8bf4315a64093c88c2c7fbfa04b117f7ab305e71c39107cb09caa354d2113ec14b53e991e2060002095f0865060b5db7630c54f8d39797de5f12099ebd3cc9bdb0fbae10142a03cbb7ce0981608b946f2f468b91c14cdc225fdfc74d7aa297ebbd1f70fc64fceab593c7fdca5bc91a9caa69ffeeb6e27f8148b43598738e97b44f7eee9b3b4871dccc7df6bb9d2f0dd411510728f9cfed2c70a064d65ed63782aba9956bb2337c5e1b1435b4e9b71bac306bb242c9d9d0d646004bbd78298d006902839adeffbbff12e60c93788d186b9c984c6b3bc06563da7066a993d376936d177933a0e9d3a1022d8f18e92b88894efc10c29db247db99e1ab8944bd594d3e8301679d653c61209f9616a8e16fa933138dcf4ef2ab1ea7f1bba3c9f0d8682c05681ec1b0a5576c1e4976cf3419c48f830b829a1b3a0cee06ccbf4190709f5475dad55ffc3a5b8079a83bf0ee3070cc9b047b43d5ba1310452f67d8145389f47be1e34bb40bae33b41f6799954e05a9a5e07edf1613ad2d5beefb3e1450466be6a927dd611cc061fa9bdc16d8160e5e86b6e87628cb131814c7a616abd6e2f46e292c48a6453a5081edd111d879a79ff0871d4e43974e372570402b68f7260cb9edfcdc7d6d29f79c4ae61b864194acf2c1fab5796b53b6464bd2604f5327f40ca82378050cd8ca4e54862f7d4672224d3fd51ce72de83652ed0550f9da4805939fbae0c505a8a755ce9d91c5ac3e1d7736d279222b293980611f8a02f5783a26afd71792f6fa15c93f3a60473ebf25fb2fd445b4fb51f6e1ed443af45bdb8f2276beaf6aba233a60aa1daf41781a7489227469c04910f657701124055ab000360b53f47bd2220483431330e3623b444518f3a72b120610509ccb0511bf3fa13825d33e5c6281834e8c2afada5c4141df75878506cfa26ca4b40a19ceeeaa28feafa2f8e28f7ffd21dcce84f63f2d03516475d1e3fb972840c041a553299e8b3632e56f9e4523fca119f9f4a810506cedfa0996c0019ea29ebfae18ec107bc9715885797f66797128e80badbe82f1b5862b031449437bc7a173b041de3fbdbc658507a1bf0a144ed70cc8fcb1b0e9acfeea819dec957f6504b27723afe424d8a1a77c820e922cf7e81c372f7ca925f3dd8becd38dfb495c3596d787ec4d40c221ae01a1f3d0faef4b99ceabda53e455f00a163fbb186de04436d335779fedb0f0fd5f8e19f8b9368504cbba8717380a7a8a3ed11afdee9bd9b4680d3a31e45d51f2845ff849c6eee131f6c0eac9a6ecab4a898146b427dbc7181e69ca20209515a48b274cff54747031cfcc9a73616bd6d4cb6375798cfc991b089a0019ca36b41e23790bd993d04c32b59dbf0b21c0b2b7eb09148caf6b098b3d40b9ca9e99dc34e5c0ab3efe7eb9c46b1e46e4de894c191f0d801cecd4568e1a91d8e8f351732f276072caf1716854b78ab959a7d23780b562df7eef435a517d35f4c6cb18eb67adae4ffe216514e8502f8ca8a5e4dba6e49d2ed1d9429ab4c4a280b12bd1cc02ef957ecc375e308e183df7769b25829df2c82d0804a5863bf0b6c4d9754f01ae3861304d3a655196ada94c52f91cdb127cec3ed07fb07cc6fb533bc9b96ce4b65ac76231b2d2cc06c0a3b2ca95bf06e44cf942847ab2bd2e0807fe7e1d165a7dc1d72108b0c48ceb0c42363b5993ab7d6544d50102a060d9c8891bee2b402f4ec80a51f7450585fa5dcc509c600510e09ad8ab4049e034f3ff3944c873fb7da212a75e832df8d7e13e2f1cb686c5b2a5bcd03ddecd0321568813d2f09c5816c966dbb95ddd103521130b036cfd4768833fcb2a13c6362ea444752519bd3cee0a6529995c0844d1022ac70d605a30cc619c032a6f5eae345250a28217c94753fd241e2aa6a48c83826bb0720143136d373a06b3519f0b72953216b9d4ddd12bdbfd95387c0899728548abcaa4ca531c4b888e583d0a113df0db76a3a52669ef96bb2222222252061306aa051b067ca5b7d622bf5c839becae6ac10b04b47fce1f67fc713bdb7b6f8e8457fa3d5d29681416a498bb142952c832ce990448ff48977ed69f73be39d7de9e3a7b25ad64336867be33ea02546bf0e24c44ef215cc8170404d27f9c8021ec3e49ec7ec7388eb3dbcb59b8baf4f07291c505e6130fcde8b7fefc2a49df7aefbdfaea00fa2177f73fdfff73f74992fc3e0e59efedeaa3d7abbf7f4affc36a7d21997350899a8b16e25b69ad1d830ccc1833c69cbaf8669fc3d54998b5b7e217ace611c0605467d2e328bbc7f530c0df88fdd0fea7477e096a82ce5e714c504aab05edfea7343eaccc716a0209d3b5d9f6dc3da9820625cdff718753c505fcfbbe8f839c831f087efc041a5490db3acf341003868c0ba88a0d505c496fbe03340dcc364c4072962c3fad7bfb3dd9fba575c88e8ca7deb7fcf9f9f9f9d19fcead659f56521525827cad825bd29f1f4d6ded386284a2a7b5d8511e6f3a86e5d422233055a018aafd49f2bdfb6acf3e92b5d27af53beb83adcf39f9fd16cb8f5ccf826c68211364ec51d00deeac56a3b76de306f90384a2f73b7748b523eb3d0dd22305edbf68ed1fb25c79aac3e653ec9adf05d1fa252202e61e0fc94274900d84ff3831e5ebde06d8fd04f556ca1ce068ffc50761c8434c1abb37baf6670158295350152190f1a58a14789583d57d8d160ee461953c0d7f7bd9802900058f314f4f0d0e62f0b92f33b1beeb4ef3e90629d96225eb862fefc8417876aa3c4149f55c54f9958fb0158ce546e608e3700e2b611d6e2d6112d3364c486eeb36dddd75e29179ba61d4f5164aa9c74ad99ea5ba378fbbac1bc4124191c9d1b1a155b23abb34fe5fab8e76599c2aaf3edda823716ac5dcd5283d24e2aca8eaade23c58abd57604d1458d4b948936d11dc54266480b7802910b9ddb22c099ea40340b7ba579cd5ec06629bc5efff57de9b38e0c5f2e97cb45d68972c91448f293644bdb5aad564865021feadcf06979bfa24b50b6d56ac5a233c6c6e2218530fc61e8bdffc87c7496f4affb91b48d6328ce31b28957c2af47f1fb593972ee54178b8412d266770982e087c55c2c674901beec39e77cc7b9fb6aed339c1c3eb0ffde22187d35f9b57d3fcdf3d6dc1778c7da5dd8eb0d0c3fbcb1d3f3010438491db8fe1dcf24d1262a899c3c3d3e12384952e3c6471225377888f1644b8d143346e4ce18d1e68752eac78990d49ba985659d3ce982a30c131cac5c21801c2f5429401324082e48291027545e55dfe68a103a3347dcb1e2e686373e58638dc7a50e4e8d16de161c1900e102c40a0f255a9800a1f3810b2e4c53530fbaa9e6084d12376e4e4638b1919404a83dcdff8a38c46bd01400778b5db4b01ed8384242d205810369e5c4a88e10727a799aca233151bed820df003aab056f949b3145ec3043116c7eb87cffda2ef6898cb558aa54edd5292a7bb3382b8709971a466481b2c616ed6092041d3b496abe4859a3253a365ba017682f3e674302365e482d3f1f68d32ced5155d55bc5d55c0284d40083d49b22763a3e50449b385257d46411b254632a4aed5279f55fa8a8aa6b4e810d4f6b7890c1bece1d6d13458364507a4471344795a86e0908d09bd011e46f9b201cd8eecb5f4687192a3da0786903840e047e30e12085445499a8201adfbdd3cb0e8c691a273708a426a1a81c6adfa669055594bab001a60051022d5c7028b022f4a2ee8eb5c6445ed806a40932418df3cd388d11dbbecd5e988863dd802385c09d29d84ad180945770acb52aa0c648a06a8a6c9040e72c406fd9bdb3ba81edbfb8e0082361db2411e7594bf85b76c85059ec829d30168c0577293f70f7fd3116ec7454bf05360f7438b65063dde228a211b9f065ceff6730bc27729af040e25223c8c90e62a63011c3c3d31821ccc39327ed2698206420ff55930bba732e0a6da2567ccc163c12dba44c7c0763bad8e28417a39789e217f3dede8b5937bb2c143f3d12452f8ee16cc609a69c3b51d7bdf7de39d55dc66789eb9f4e339fc0c5d0200739c83fbe67316e14a7f31f95f22cf2f28d59c7be6be5f29f043116b235b08750d7ba5ce238ae18badfc6140a2d4849da4117d9b2398bede739066f95f0ca36c2cd46b2d20c3948d9943dfe566673a5d2ca87d795a4cd75df755a4cb5f6ebe0a7e1dd0aaa7feed65e6b2d54f87f1663ab3f6b35fe18ebccb3f8536badb5f8fb3137087a7b6fcedfcfb6c5a3f7215ead46ef6547fe7e1c5cad56785cf1fdb7c7d48f19534a7328ee8bf1f8c73ccb396b918614e85f9cb110330114127f47127f15c2dd9e50a742341c12674663c638ccd37fcf5d46cadb5269fd60f6cdfb37fb886709919f7c98e34eb5fa08eba5ef24998306847bb7f98ce10174938016ccbdabc5f9566b311d2bae15d75bc2995ae9e4e78e17b4778f36020a0bbc0c5d5b6b002c8a4efe5cf05a8cc5db40f2ed5ab3643b2735a2c783f992ecb41acc97665a85702ef7e96ead473808cb515085def60b3645ecfca80a42c53b51838d0e4d515e7214b938275cca09cee370cee99aa7cbc5c69957d519d3dbbd013c81a6d99a0dda9200164365887088414106bd8d4b3a2ea74bbd145b8b73ad59f8161c3fa6e0306ac18f531987870971a7871c3c6b4a104db40e0feaeee0724db81a35f4aea04087e962022b5fbc77c2a71ca16204868b276fe4d8497816151d2fae91f2a3996dc7833c248c74848adf3a7f8cf1d7df562f48b8578937f64d059ecaffd0c99968d36372a44a446d9f384b3f41f4d4618af1be92cecee74a0883ea8932bedef04a1856aea92618104fd679d9b8d15b4848b9e4902c3938524db8a26af15e1ece130b4a89d1cd6dd5648b482c792539ec358d44c44e474a3c425a81544c619df0c3f5233a87930385f07bced20746d472747c37e637db061cc7493bb9bd24df145591ded38f3dc7c97a31bab148e8e5acf554dbdaad33c6bc0184c94d7c1827499a2664789edc5df1302673fc58e48af75f726c30be07ce18ff326383df635cd8c27530e375d31b1f3619e25745360ffecb2179a951c5eb3b1bea881dfcea4ced8917bf6817fcce92977ca7c2713eecf2c401359c60362f3596f419f0d2dd813647514351a374fbf25a6b69284208a1830e32c8c026cbf9eff922d1b828595b967557d8672014a39ef6da6bc51df2fe81e0d7a78cd3f06eb15f7cf1c5f7639c33be1863acc7ecf1eadaddaa64a7dfd5e70400163a02d1aeeba72c2d497a7f5b34461e6fbf885939e795d6daef9dc11c5606e718d0fe3c31eb8a080600a06ef8be10ec3d04c350fc449153beead91dc8c64dcb7ea5b3bdbe5cf1b79de5d9ffffff55beac166e91977475ff37bdaefaa2df89c69b4f2b6478192bb6bd36c3268c2c7bd926d5bdc15e228c17ae28f080d5568bef1701feab17b67bf1add7dfdcbb0dd4b1695bb5180229b65dfed9eabc546fb07fb592404371f42b566fc5febc62a3bbec64afd545029db3db7ffc0b56f6d41e3a7b60658f4ff5a1d3a7ecf189d5189db11e9fd84ffda1f3871523c6e70cb6024b5c1b68e2da7a05b18a85da7e97cd4ed413749e90b92c29ab157c82d1577559f2b670bf3777157ce6e06bbb7955ebface3927f63b851db9f88520d87bbff7621bfe8297167e62bf794e6bc70e6ee6790a6f3db7d7b4bbcaac3e5bf57b72ce0b78b0585cbdd757f7b9b03e678c85fdbe4492893a658c86187d5bca543162322a83332a4344996f4b19254a942851f28291242146462e5431322a9254a605a5244f04c7114654b6b6f8eafdf19c730539f0b5af17110a2dcebc5e67f4c773e69cf38deffe9bd31b677f5c7fffdb9acac6ffc39f639c71c6f7de8f6f5ce65ce27b27e61483d15f634a29c59a12d9685edd8c35b8bba556e37befcdf7e6bcf7de4cf4b6d65a6baddd5a6b9d95201ded0d65b1cdf7e69b7fb6f6d27befd6f8e339e76dad5d222408fe58f37c35ce3bef7bf19777cefbf28c37bef76e0c446f0eeebf354845e7bf73cedfbd9bebfce5fc61106bcd37c6d6725004f3bcf58f4befbd19df8c33c53e72397f8b7b58db42cf5a5b23e73e6a4297c1fbf5f641b181cad7f77df78c4f0b135516b778bd88506871e6f5ca62723903590fdf1a63bcf7de1a63aeafecce4def11bbb943739f9c42845a6bc681dfbf2f795d96fe9f9f5be2bb7179adcd7753cce5fbbb7f914624d52b9deeaecd3406ff1fa234cbb290d015b242a28c86b2168df7726821547cbff765f93fad766523f43058eef69f56ebf4a3355aeebd831f9f7be21a06f93249869f3fd00065ab09c861698b501122781038c000c8820b76bf1385a5b215ac8c052a2b1a2a82e252d4ec9f41ed6c49ac0430cb66e8bf428d98f6400fe53ce36847fd7b6f30001e1460f260632751212bdc19bd8c976147227eeaf4945aa97a41d37502528b08445afcfbcfcd7a51044c0390d300e3062bce204b4697c07e063ec05ab012b4d52babb7b62e487dc546b2c84fab7fe33c5bc9885c7c16fd2f17290385a8ac1ad158b2b5643f38eaccb3205c7fd00df85aeb6a5a975cb644ac7b147baf9f19ba5245888644eb10c183930af8c76c5836f6f059966dfb6e10bc600f4bdfc52f7e3fecb30f7efadb9483113abd2800f3eccfbfef53162bf4e7dfd4bbce443cb512467cdebbdc3e7f3f554525d571b6f6ebd2f7fa2bfedad2dac332ff6b8e4b85aab020ed1737ffc5dddc55bababb7499ec927dba7f6fefcbf27fbb71d64a97bd71288080ec751a73be2ed5bac4d4b473e25151d55bc5d55c55aa3a2727de1394548f2a51251d5d626ada4d29173064d05c50d00a1643271081b0837fb16f53d3ee3a5dde7dba50bba8bcf78255f9890c949ebffb5e545454c29d510483c510918c1356b8809abc6f4611f841590cd71a86e0f845707bf107819356fff7eb17c5155a64484ac9582bcaf4c2c174b9a6a51b5572b156f4465fe5ef81d1d61fc5df123f75222939d27146a95a523bfab41b792df1af68e82bfd7eafa850669c4ccdd1ad7eff61c52df57aabbaaad46f5de7faf6e63d4b6ae5f2bee7671607c55acd2a554f097b8d50e3d823c9d567f91becf7d777c17e089bd5da5fae59756a31b5a4aaf88b845ed4de49718655b2e1cc32b5669625cb2b99978db21ce63e1356f8c0f08bdfcc3a9990a986b079e105a7dd0c5c658109877de2edace890f2e54b14385b81856f76eb2458290bd57f2c3684ebf70af9354490d18961cabceffb96caf62c94f8417d3113aed2cdd930e72750e7324fe7b492d6e925f0bb4d4e5c767577a9e97e2fae8e897cf1f2b5b29add9cf23db3339fb59866f32a2f50769df64bbd6b5ee79c330643ad57fffbc41f8ebffb0f827995bf1fc5fc6de0b7f5df7bcfa0d12dbeefdd6bb65284ca1819a6dce002e6470e3a2cc955df37bef55f70dc5f69c12ee1aa24088220e801032e06670ab8e008520b67e2e969198206121e143752d04c79f2444798169e88f4c0a15de8e1938491a3356baa6eb062012b55e2fce8810c172940d0273aa8783a4f179c25a41a8228c3b381e5042de48ee880caf16588d61a05eca3361e5ac162f6300f37ab3a7357fa7025073649f0dc11c285ca2d4b8f094a1a3067ee08e181a697c83377411020a706141b3060e6f40ee006c91a1fb828190224088f2a39d7a312841bd880ab661d253b1411250f9013c08081a62739ce68a102c505080f9d183a793cfff3fc31c63c8870cec93c75597a5fda3cc3186313df8635bd61e68a4a8d9523648e486288151a242725a803c647d30f1eb8b1c7af507236a4e020c3a307aa225c5a7236b0acc143a3081f4f2ba44ae7de4b8010be7c1fdc3ca76ac96267ee6cd1920c381cc161c788373488604262471a26349af4c8e9c042165f26845e5cb041d0dcd52e35bded084b96c06084862148b490dbccb935a12383ae4d8f27dbea0d9a4a201a50f9f1b79b60be1c84a832d504248807481123e5c2992376aef090419bd8f1edea149d941651f1610d92271790a8f161811e3ec8708389690c989b947464d37aa776efe7450d150f35a24871a1e8851c3fdcdc8ca1a137b523c94758c45fcce366dc71c718638c31c618e307e081c1862c473d18a9c234c30d39cc40868a0e1b4eda61c3d88673b6596b3fb53af81644dece2c4549923cc9618c9b265fa6661c2298743982c49daa2439eeac40b0f4529b83d64c7fce39ff9c73ce39ef26283002431a3469ca84e007aa1e5138f48c4012ca17c78e04e4b989f89ac75a6bbffdd8e67f47d0795e99adbd5a4bada5da7e6f698d519bcd76b1f40eba6c246b4529b5f6d7ab35f971125f9d3b692fbe2d1bcb5fd97873ce9306f4f1fdb9e5bd1f5c7f6bee612d11a9b5d6b36e4508b2595aedd3becdd7fcbc22c4c013532baa296ba577c92d66c2017cccfed166978c0057656b35c6585b6d2d0ee2ef5ffc396759cda268b315fb177bef33bdffa735dfaba3acedcf39178d94df69dafb84effba6debb4ad91b8423185ac696e1c1132d6306c05abadb9f82df0743033168df32b40cdef35a3ffa794da99d7ba99e7137feb319b5ce8075fbd611d41140e120d808d6615da6750910d00faf602f6a6a01b4bda7bd7fbbc5272b81803ea7f508ef7705817314369186e12bce7b6f18f792e0eb8fafb8447f6fef89b8d531b0995163199e5ae3adf727e3bdeb8bebf753f8667ce71776466d0faf3d8cbde26988f6a58860c0283d150caa9e14d4d3b731ee8a212218b5207f3d1cfbafb5b67ff723adddf9de8fcbb949d87d86addf9b3f3d32c0ea397f7e0e7f1e457cfb3731cf3ff7f7ef7e5dffb083314c4248b30c94d3fb77cef7de69e7b736cfcce79c186f8eb1c5786ffc8118eb19bedfde0b7e73e26a3947f169fbeb590ce35a8d06a73a6a7f5e33f6f9ee8eb9fdc8fbf7e4b99cf5cecd73fe16c7f68fcef8d66a67ab6ba4fc64df3b576c7f07b2951fc50fadb401ed29b057bcefd73ca66f4c578dafbd76dbfea6d408b0f6276d6f0f781b086235db07c2bff66d35d27f238ff1d2203a8b82ea296aa5ff526a844ea763f7bcd6d7d9d7366dd486e944346083c3fde00139836bd05aab065f2cf53e6ed41d080485299709a2db5ec2203b0dda0045d1e0cd18ca34a625a4c68d8d4f9812516270f1e889346e64a2faeeb2ed96179419a7b67b0541be1c53b7a3ced7fc7c49d17917775fff98c010f4ba2ef63c3bae119b0787e70e2d1c433c52a217791b0a4f143c586cfdc9c633a4d67953e36ac473cb7872fecdf69ee5db904f97b66aad6c19cc0bafb0481649d2d072b592d04b3b60519fec24cf057359e9223a7995af2aa5bbc4aa3282f5c0dae8aad61d203078c2368de5c7960d400d8e9032a79d96489b2cc3e48d446a5fd24dc80d3048154502816cd0c00dd00dac2a4ac7e039e36d544a555512bc5bcef5e610555b6bbd0871622dcea0063fa465b603323eff13b0ed763800e1005ad634a5c96304981126080190414b0d225444ec4cedfaabaf95835fff50fd270091821d7788b011440d421318e24c0f65ae0c31c3c457c0d90604a1fa53e505cdba77fd258bbdcbd5dbf6be2cff8d867b82b173dabcfdb4a1b6940426918b0a4c03b0fe10b6b96452dde075d829981f589d85a1cd275be2faa18cf55fb472e8f5edd3b6bc52076f7bbc1f0b61dfa7fcbe27dfecff193e9cf66bdfe7c776cc877b4cbefed03753a184cf6245cfec04186cf684033d1d36f472953d6559c2603d4639a7bcea724b4e8eaaa21cd5b0c31285b3baf08630f2c43fadbbc783e2b47b70b92e3b78798b95f09abd5e3d43b2a29e19f8d11ed853dadda4854987a51b2c0d368e8563a9408c1f3f0fb1f8ddbd4662d0e59482d06d250cf9920d2dd4b778a90f0592b2968c47cee04f3110046725909c9cc17913d785b32f8395fb35c3b7aeedfdbd672ad49222d949a88abde4845bbf039f32fe70f7567bece971b6ad80d45e0c62dbf7514a29d5f124fceb1b578487d144286920725406fa9e577db3fad745ff7a00e97251d98a7716d85b6127c7ee5af557abc35cbdfc5e5c048d2cc9b6aeca760c74b710ceb6920b94ba55eb4bfd6bfdfa93ea51dba33d1b6fef745594ba5f78251b4af5a8daa64ad5a70a55cf849fed5115e1ccda385647e928bdb3499250155c37c237e6bcce552727a75f9d2a95910a84224a59750cd56acea92c8a9f9ac3e5f647679c47b15cf7d9c9994e98f152940c08c68907365127aaf4f9b0acbf53a55c6f8c1be64b518a086e3469bc696742e63d417db0f6d0cff638e34bbe38fb18941578d838a3468c242bab45248402d452c651a58ccbb9ac94757989e9e9094aaa47956f78092f3135ed9c7854d5c5dede971fbc5d2a7cc3389cc34a5807821de47f07e5327ee9fbb5f536235c41def8f7dd1e86b21168f8f9942cb0822078c35c1ed771ce39bf3cce8b583226cef9dede579e0f9d21c8e3d56643b7d65a6b6defbd5f3149db1f71f714d0bbd1b9f77e7fef3728cc0f203eff06df59ee717c0ffbd03d1c02dc26e2f671029fe8ac74ebf6da4e0010080073960018128784e3511604394c51ead90104fbdb93e0c165356ebfe0b43a05af365c258dca9cae46643210dcd2b7b37f419e050db9d187d5899e663e6e17e6bb3bd9ce26fba025a36f2adf54d6dc372c4ccea6d792a1959fd7cf30321d232d5cad99cb8bc603c9f407d3759e8cbe4f733866ee06da281d5cc271a751ecf1c45b30a3942e4424dd5da69f53f6920c1388242a9e6fe8c627969f806125de22161cb662117515e8b703e9ad2a873a3550645c56113543f1169d7275f275ba33c54d89d6100b784dcab370f4372a2a5e8692aa9122c1410b3505c16aee7bcbda06fc5564815c867ed26b5deb39982efa04fcc04ad7c7746ac09fd2422e16da1d8f597f0edafb0eb12c61c025fcb93249a6e20260de32b7c12a23b5056d1ad4bac05d78a26b8fb9ee512b6f688becfb5b14fbaf0cf59f03e5f476b3f2367a21b442eaa39e884baf74a09497648ee421092478020e8fa66856ebdefa2229e9e657f1c6259cb47bc38178e4333d608222da90fce1684c40f4259df74b7e2dd4c46c0130762d05175d58e240cd802bc889fc60994c2bd36f6c283348656e73cc8890ba437bca3624ed75452744f8065e8bfbdd453ba016e27bd62239f03ccc4b2dae864fa20252153b3ccac851910e95192ec0dc9b20ff238b7cec142e0fea0ae5c89b5a24a1ea271574e39638ca1455a1dd40f0485d63b48312b9dfcdb00bc776e0f962d97663e43f52136c9471a662663af38f165dadf7770bd20086491195720ae2c2b5a9905221972a70a5e6232d1c6dac0c74b1c860340f51260aeb61099ab55a0a483dcbe3b3b851e7c1429f2485d60317ac8679a66b05349793ec9ec5e15693a136348b567ec6c0af93cffc22b79acfce0bf259e83330c0c3253753c0124dd58ba37850348b2927fca14034ca7803bcc8dda8d7260956e8b3b858cd2c3a2a07af08fc76b81efae223d9f0747c96973babb5bc916b212de8bfdc921b10159a3b3df1757df827df1fb0e7831e41b3604eb198220e58cb876a4d1f635084cd7878110d2b9a34cc580a4d85865bf3c4d277ab221b89bc995a0119155ea3db2b21d677a020a447a11fe816be94e7c233d085b56f56196d74d60eb0d7a02df735e1102e6719d47c7e408c955261ff0d69232bcfe827ad9347f344927d1da14f0a1c1cba7904d4632848929d3c8505199cc76b661244e9afee138f103e04219ff454419332b461964c5462958c9ba3e8f1e94ad53b9a384e0a38f8a6c8d12fb7b2641c639e7df31abe667bf623f45d04e59a81df62b4611854a30fe83c578989a09b0e80a91f21198eab7c2ccbdf22f49bf47475eb802b9790ef7084f56dac51a20230e312c3a68add4bcf0eaac30909e627e4311b3a42469c243114a3f6ebcb8bf2359530389813369108c086a8a57b550989948a8c3b570a02f28aafd2cc1f5a6bfeafa56822cb7189babefd2a0ccbb54bc415f6572de2888698085be049a970f266b766052f75b0c66f2962d5ce1ae6f6b9eb9c457e0fc9104ab3a51198dc292b31c4d63ce7f482d072a7a14088eded061ca02a91b030109167f05f3e27aa4ea9a240ee64e9570e61eae50b2d8eb2376dda79de3e12c625c64deabf782f880161ee68329bc85011ad962c8632a210461088373d7da5020b82065ced04194e977f0d0bfa32e8da03114a76504fcfee3fa66ac1afde0c397b26a619bc15067850ab87090c50510df73b5cec7c75d7cd04b03e1f24d8aae2f99b1869b2d2bde1a570562a06df8b6069bf706edc67e6d5e79125aab7127f0ccc899bbd07360d7cd8f9122187533a31629f73a31a132cbe9884f545c4d3b8a2566f87e0c505521228a872d17f9f0b3250ca44ed32fd55231b418ab5d21d2e653898234ef8540873918f5ac5d8c0d0183da75a3137bf8c29136d1a2468a563af3c01476b921c85fdd0b6a8f3e5189b5ed807db38f089c393d35c57522235e581b124ff80aa7b3fcf4050c44e3ceb6e1f86add88be29647e4aa4e3a073c6de35197760fe5d2ceebed1cbe9dad41b11f071867927bf08da7ccf41c1804d6e33811fd31b095c7724be9b1d8bf36bac3373de14f504cbf393329ca93b899208562fe0c054e5cf89afd1322df9e3050cb8d955501cccbe6004785ad711d47bfb7086e1546e3ffeb9631aa58d73bd03c6c36303a16ce8954e65fc32beef89089553b019db29335cb0d2f4a6a78c64e178cfbd6912ae9d89764acb583b0f65c9e5001940f98ea6fbdac810af6fa6da2331a542635701ac290a2b9f45407d6ca27a7cc69c0ad4cfe20ab8ac5fcfdf940203462b57f20eb0fa31c828c8a0b2c8b8aee4a92af8b0a0d20da31eca09dbc69c24fda302a72033c83cfc75099a29651d1bbb88c0afd0b7d6354e800dcd6ba4932a3c2213880f903954cb88968b4251a722929911ea729695d00564e8dd66510b76457615a9607c8c0ff6fd407310e974358794a1d19f8281d144a1f171f4289a3e6548eb8f27c1cde93b1d087aece43d9eedc1bcabdf8ab00bff6c9f8f154cdcd648a88f78290275b7085a0d4fa9cac14f9eefc7f47b2e7282140ad2b3ae27dd1638d0b008b169992aef0df1ec52241effb62200066fb08561cad24be06a751b0122a2ad3ed5f6da6a0f84196078cacf0858215b8d8337806a49582fbae0fc7d23c6c2fbc37f62afd6abc5a5953ec17813a5e8ed47be9973119faa845856b506301f05a548e579becd6f346e9ccb13a774d75f16a14e9079fe1f5d6c127839bcdc1c236f3076e6918074ae85ae9fa966ee26aab748be6b0e6ef3454a6dbd0f766b3cd5029b709c30f84ce2deaed633ff12adddec6a1d9cd69f1559af52ababe8108e91362d54a076005ca867d75259f376052f96c72c7fc0c1c7676c1fda71dfc8e9c76dc78953af0269a7c1dd4a93865c8a98097af229d3394bf7ef59d7717fad5abd7f7c4c2776d974564624a7665b3b349053eee6932616fa5d3831078cb9de1a682e2fa710dfc5c6696e44a9aec4325b5d54842ca33f073015b3f2ca0066c6410021dae24ac308e3c005be55a3aa5757acc6b10f6c1012080272e3f6cb90dfcb9ce2487462eb02697d14007dc35f534614f34eb8a66023d37f50fd979114e51a85ae332d007572b7f0c1ff8486410047e6e34d1c2aece0956dd0c8edfa9ac5e9c4891f6335b15624f8515e8b8e77876168a410c7c5c4757254a773edbbe6950021dae14df8e708c65779ceada5a6e02cb355bc8cfd46689982d9c8142260dad3298450fe6627a8f4525a482198eb94b03adb148f682eb98c41fe25b2b3928c0a554647c2ac0685b7b150c10ee1be90a34ff063b0ef9de6c4876e298245fa4c131f71c76682e8bf7b7205244eb5e79f21e3caed239060dcc308fd890a7165751cbe1eaaa880b25a1005472d7111cd924e27356f7ad409441de9582f9518b2f534be53b94c750905f8e3e03fe6251d68f39cb62bdec024304e6d2e9d8d28434c8d2be867645fa875f57d16d959656773a9cca498f866fc2753eef1ac65012c31a19c30d5548c6c1989b776660134e6cb68ed7473a760db2f307381037771eb4d014d87caa0d88651cb04e856d32ff79f09230ee0b2b92d393b41719a0b842cf9e8194e575d23a679d9400b18d24a805a4ba2ff84625dc4771e307e9ab5ec954a86083f8062a2e03b0091f6cbbad05e208f1c9783a2876938d0882bd253ea4d41406f4413a2423183c34a73ccf5dd126791cc8e2f5e33320c5cd6756772f0ad32630e2647e079e1308829a75dcea7442f279cbf5fc530d9d14046d90932c3da4e841f5258bfd2c794f9ed73ce649d0c27c72db2a137fcac52506e2e468ae67365d13dfd843b4ce8a7b7b8e1e5eca1e34d01f7c27a3801ebc4d81dc507d819cd0b15a021a43e514f74c2e2bae30b0f1a91936ac3bd892f6576e8140b7f7a8effec6d9a2b8016e01fcbfe2dde33223d7f39b1fe3358168da33be65d14d3cd0a9826bdcd60f2e017548698f97461759670b99908ed0bcd2eaee8a2fc3e44f7ef3eee3a52b2593f0d08e5b877b1cc62ca87225d6e13ceeaf1e4644c6af22b545fe9e701b6f3e45e66bf1c9e5574ba4294166add9a336d1d63890eef4dd865d0d1f8e7b1e6f77745dff0965aae6032a88b011416e083fd79280a969eefb17efc8748dbf2234a32d4284502055fb092d566114f91605e9b2305b754043f703d594fb210e493bd8482bffde1a936fd0d545fc134e48f8d6fc241a0333863134f4ebc7a321f1a5647b6599d700938622f31ecf64df8b85e16e949659f60026abfc88e5e6b596535a0153985b9678b4fe9812b4efba929619ade2fc648adfff7be5ecf822749fcca5bd2c14b9c83e38394ea326b80ba741e49f62e4ba63caa4687271fc2bdf3fd6eccf88c6e913e1087fcd523d11ffebce254de11a5403f82096560c5c502802ca0835642283937d7ebc7d8503a8cc1dc7cf5a48967c32952f6993261d72050b00d1736dbe715c368d05e3a0011aed09fa7c92e03444079de6d3b1cf6bc802682af642c508820f7074d9e093479eb02244a851aa890ff881770517efa53e50cdbaa74b75c5d4e8720ec6b0c6501b8cd95e844f401c616d81df5eb018211de2f206ac7dd7217a45322e015161d3abbe9b216bd5283a3bc038eaadff9f05e504544bed051b8f64b439bec37674a53a4691b800aea656e8052b34b44018af3c2c75182b576fc99f0795749856a890bec7b4f608741991dd3f3a2fbd4bf9848728b2a748a13616f1ca2dc9e6417ca01da0760162afe7b5e44f72c888816ee151b4f3ec3a5db4b60f15eb37b4874c55337aad6154c1d1f35dc3b64a9225f2c58c2cfb1b40d5ef7420c1f15bf8bbca2a0decd9858256b70ef1a25455384a144bec2b394194cb5249439a0b3b52472396307a2812503d3c37b46bd9aea835a489360c1048e0d3e33bd6f480c4687ee2323efdf410504c764f66485ed499c05634a1214e7da69cf227f028b5b264b346bed6f9755b974e3d71aa62e0b13871f804f709473370c060c6aea391b36bda7d316de1b5ef9d996e325205363238af6ecfb74f3b9be612377593c754b98642e3d36868285de3034093689d1d5e0eddbce4b459f7206b17b530a2ee90b3de2fe3eeefd8bdf25efa669807c831e8c1606ff1d0792386c8935ca545c6ec1c1891e51a40b73e06e4c3d10e3cb3d05dded67fe8aa5754e4848d38b2a1e0d79831b83771a3dacc09c72211c07c072c0dae7cfc1be2c429dfe6ff6485da81527ddbebba09ff4b353d4701bad1325d1e10222b9902fe0a9b26d4cd4de9a2bbb0277ae5afb63ecfca66e9e5bc8769cf09b88ba7b9d07f390a2110c7fef77828720fe216845e0e675713754be1b7a9956583097b9a4bbbe74c6ae4e24393e9ead19d484080db3456d243d0062247308956242188f1a3f188cd7f991c3cd5a201fb979960f5401bf43bd83bdef293790ef6a098bf5c9f23469534b5a144cedd6187dc04d4ec94464a49fb627393cab863bb10ef3341b714099cebed5417d296dab0740eae671214e26d471d4da98ebafddd941871a3a811accf5e5989960d381170c75dd0f4a07b11ce42932be93679dd2213e5315c7ec658a5843fc49c3e253f1fd127d170ca2b71e55d45f50bb40ff2c10849290779f12584cd793df137bb098840b281142daebbab6518c32215f90707e0e5bc3b2c464f1ea735800fad7b2ae11243092bc813a6ff46a418183f1c750df70b3e3d45955f2869cc4e52193b7813d6a674ddbc9e513f6ce141a9cab287a1677e9ee2b253df18ed9f4ea290bb84002e0e5ae287d2a9357811c74f89a1cb938081391d33d20118767df71179d19c060753cab538b25ef59b0fde4897383219d8bf3840a9ad8c9c54ea4312983601751e9632e7708111df70c8505f1b200fa675d8e58cf029c38bdf0da62684e644632f20f58cc5b71518ace3f75e89cdd29facdc4f4e9e2b93315190ec9916b0fcdb9b79a2ac47a5c8eb7a789e52076496f34956e9ff5bd23ec0afba7db7a881b8f7b624e77ec392d63ff7273a0b19fa05270d72ebf5bc63426dc0d92cc4e1a02f4421c399bbddd15f1290f0df58fe7ab860c3a4f7a2f340bec37486964a55290c430b04ee3403d11a00dd7bdbcf0dff4b303794d19080db120c0378340531079d7653e3db8cc7b82f3293e1df1d10e42747e18943e242f70e670ab61e75c6d174334ce9ba78eb5d52f4501151fb00c269904021aadb1a39e3650791d34933b00a85d2ccd01269ec206bf8277f047030e474a720c8d4d49158766a8c0e961ffed5361a4f57ec371c38f9e75edcdb9e1ea7088c4454c675a6204c4e17666be84694914b50e650f633db1000709043831fbb761ccb42c0921e9295a4948fc4d6ca4f736c2263480907089e5a13cfefc3ecb67e984150764daa2527a612fb02a01c56f620c4cac61d47e17f6c3700973d7336bde73b2ccd653d2ec74f96a45d2ab89a510202d6d5ece7fe4846c0682663ea6632b5e13bf4b2289e5cac8476ef9c7efc40665420c876b86d251e4e1121acc65e512485f439c4cf86d812cac6700ca7581572598b63ffa9cf7cc318df6b183243b51b31d57a48892e64239adafe88b0e2f4d05d0728e01653fc5ac01c41c3f4a8f52f1e844ec4dea050cb3537cca9eebc67bb7bc6e224accf5f843d0c27ece8f1fc627771b8f4d99d0cc4220aec95dbca5ecf0013b867fa53511c36e6813f9f1364e5b9b181ed8297efa0eea11e53ef4fdf6da026bb50b82ff1d40c32ffc0b08f5569f2dd13ec21d9760b05d3d6aaf30a82212523749e1c13b26c97f3bee420d18d945a97635e3db609425de8132e242aa3433490b616074fea4774237ef0afbb535ddd60366c75d651e743030687e0840e0ec161ac3b81dbb61d4ab439b06f30b33dcfd5a06738717427a2db405ef6d7c3fee6e446805beed8b665dc0f3f0ee58f8bf5ea33a6bf8e269dbaf555b12f8230090b5c6bd7435393935422f828ccb8a7ddf1943e07a82f3e186854ef91c589c40c570343c9efded871c6b62c9ba55be070a6f38691d800f91661628e152d4de5a120cad5a7bdc74d98cc918e21d9380f5ff540b19fc7937a2bd079d4143ed04c21019ac7a377cfcd8d288fe74663ea7cc7e60bbed1f989eb5c63c6d2ab56dfd2753e5b32372809861d56cad007633b417fb813c610b266d6678b5027e4da550c90da4b42c62afad3dd4a2e5db5bb4d24ced6102d914acde84fa95c3600632e3364b1805851834419939cca2bf52430ff30852e32026540a2e9c9e5759073eb0c878ff18017875bd5791fea60a3b6b6387703cb98823446be3c6afdf9ce9039512a9f3d75db3ea97231d6829a83e5b108ae3fb3010b2102b6cae124796892fcb9ce11598c5f3260d07f2ac184d8b171da23b604056a8d06687f68eaf3ae6667212995d767218b532874c46db6288556c266f7fce61ed98ac9e96bb6ff515d1a0c9718756cc8e87051403f4a0f990ca3e270fbd7bef6520b89fbccf957baeba545552605f9d637ffefdf8467f78ada83195fc3f300cbb8374d6e9afd304fa42e822bfba08caf7951498bf0393d0818ace82d2c80ddf42e7d6494da476aec117970776b7a4d14afe0f94437513e6e7a125b66f8dc776d99f997dba6c489697d285bd3cb243d1e99c4b45e7cce1e565ffa2d4c695e4aa8ce72c0918d66446bc2459b852518675e017a81948c6fb555d214bbb1fc9d52a99863ac1cc4faebe90d583ba3cb2dbe080d9c8948b0a0a67d06067edd9a029af255071467bcd71caa23e096c9bcbbb334acdfce73fdb09cc61ef7a65df44f5180035a3c13884715142934e902fd5898b1f98b17a541f082927dce693a65714c5a74fa35c28bb2726fed42d9317a2c6fa5dd5ae92b18ede7625b1471176a0345cc8e7e3839996612f1128712f44491e22cdfe67cd8872e1f2c2e2530a27e0882fff92d164ff6cdfceb1c3396ca240d2acfa9b08b14c8cea63452b6a920ca1f045251d23c88db5d4bfa46511ad06a60b797b9a564ac25c2da24e1c357c7a7b4e8e4558d7cffd8db0480075f1dd5f4aad8b774883d6df65c512ef36ff66a2b700efcf90b1dd435e0ff61b22b4b931cbcaf50fabe0883ee39be580e01f0aaad80de8da9929b01e41ae6be3a12c6f383e04c3d68964c73887a058b3744ecb5e9c19e91b8ed5f0597729fe98e8d818cd5f3dba032a1c2ed4a5bbf97e14aec42e6559685fea252d6203a7b30561411cea9936bf265f74f30c31d3b51ce132e82a02433ba62ef5ea2ef59eeb2b2f4b3f103a5663d892da522948f1e245c3244492196e9d348ce099c81fecbf35ba3ad0adf0cc60c24f5e2bcedc46110c37c8c1160d4e5889925865bcc2283c380ca11880b759dd582486cc7b2c6a659362f4b7d2d2e8e9fcdc3a758bc3943dab193d2ebe83685b879d005feb11f69121b6459d122b5dc5cc9e3d8f26012fae0fbfe94e54a59fe1ac00a907d23ed0f39bc6577676d911408cd4dbc6db1777d770326fbd4824a4d0702a978034f03d128836043a939217f3aeef70f45a6e4ff0c59cb5077af5d8e13090b8ef825cd494b12852f20e4107d179ac7732e706b744e1a2277f8586b5cc6ad5b39f644373617194e67d528428642c8ef2985125c52f6200aa64af7c46c4b36409ae2d887cfc5545c7e4af6c9b9f54619d9e07924964f07bb52c605e2f625365d49677de05860e6e7effb6af2a8b8165f3a562a57f093c47f49b9014cc045cf74685bb4d97c82482c1964a240fde71bfc5cb47ddc978ebd8add9c5c659ab4fdbf3edecc040f4a2b921f74969cf00b79cf46a0a4f712c0789d31e8e41de8fdcc18ee914b34360bb9c6c67ec946c32c19196367b08c83e03f8bda4721e1834a2ae6ee9420520aa5b59cb2bc5de49e78901ace8062c6708b72aa0ffd5abfb41c5d15d3fcf88601ac85d87ce45c5a2a8410d82cecf7ff789ac817aa10394405b336eb213ffb5faa0accce917fd3ee400b273710405e3f0dc45365624c0744606c00dc45b3463692aa397921e9de2523d161915706457db3b59556dca8a72a19a4dd6528d15ac8351b1e45ef34ac2ad2e3ad558fe32154d23442154d458ef17d2c9a9c9cc99dd8691b97e6be102925537f5e5bc68e5e112f6f01d30a1af6c34704e86fa1340f3016ea9f5074af0d47b69f733ba7a06990cd2984f1dda44123d768ae6b2c7685535ea8c216ceb17a6914667b6681fa22382abecc6db2ab0e1596ad87f4485936f5205791e8a86ba832d81f6a8fc26ae93751bb12c9065cf4ee678ab003b6927c611b01989074871091f69cd1d008083a3ef04f115140b87a6a5cdf20e5107934d56720d037daeea4a6f8c823a8f425c5cddab75704b4752b35d1e7e66c8df9a02e67db1526b922a985395829250bbaacb85bfc0d3e44f5bf009490bb994b8c1bd8a3c6147cf22dfd0348d17860b7a5338493c163a44471a8ed28b624b98c375e927b4385842db950f70c1dfc34ca24bae60d87ec3ccdbad5859f3f0e17ee20ac29302edd623a6bc4ee8fbb322992e4d11ba3eabc312993d149c996c3b9923b507e9c705a977e4125553975157ab7c2572df86c793a3d9284dc4376cf9debe2587c96a6dfc1d443e6da9b7f424c77dcd83c1bd1dd1b39235d1e37c7673304825771532d8fa9c7256b4b35bc6f414fdcd224cc439f62d00d4ee064bd3cecac3d189f628533633841450cdeabe2f1c7f0ff2825f4e048f0b36d4190a358cc24559af6f73e4cf96ab85a68997b0af9ed38975c1624c8adb9f8d4ca880bc7f1410a8dff281d86fbf6b216780fa636032140c706c118537410cae86674c7fcebc4ddb0174c32f7bd4276e8d471347a1c21c4cc9695f13f72189891958920de4fbe6e55530b0e27d994b1c77e36ef42b82790ce35ec4a403c6baf04c4f151f3d0bb4a759858a1a140f19f5eeb584d6ec23ef1fbc1f584ee3a32d02e859d6dd1c519f38039da42e9a2798be45135345c5ceef98fa9a24d1a39f23f3cacb62e2d88c01dd62fa79a6811ef9250d94e6f8b816257fec50b4ae41b8897c437f5dd923931e9885283620d3793239fe441fc4266d698a62d07e6434fbe54dc6e9118fd42ee1661dc2bc71c08147e6d4595c4ab2f282ea9aa10cccd4648d7c99bdeecc91295dd62d2125e242d261dab70c76272594aa0ca2b263705815995ed154908d03702a718924af3de09e90337c8002ef85f5853b27aa30280819b0633b7fe30924eea47cf790cf8d3bd8894e4252b818eb97ecfa04c8207697238edfb7775c029c996d3992054e500901082c02fe5e266e3992e2001a7ecdd23249c5c87b48c3402cf0754aa586b01520c1772215139674e459cdc45e37c0c95f7298537dcdfb74600957a73e505a3f4a68bf661f57baf8aba9544baa00b45d84964ea6daa7f4cb186a890245696bd992254decf09d28f08a97c8dfb53a3ffeff9dac81737bd0f057c4d87fa565354e2165b0a6e6902d19d3c030989560ef168413834013fd0b0d1bb9fc194c4981b119c8ef9f9908a2a4335772ac9219ed27a9c5c94c647413da6059143c9d2b1e691e1c73ae6afc6f75198dd0f41efa0eb07a42bc58613e946edc56a500f1d631331bb0a314bce633277b4bc82068eca5edbf77048b1e93fd0c56522d14f24cc10ae97fbeca3837e1bea0d9e09a290392d5a1009fbf91a6c640ed1018237a2203c99790aded9f0ed5b642b55ca07627ab122554591b27c82d8597ca3813df66c557c1a5e05caf7c1de5abf5295f965020d6c6513e5e39f07f6491db72cf81f1a5ce5814a9b842b5a94caf3ad4f9a58eb432fce9c49261fd06c52d5263f49b044c75c1b80206f7d85af5db79d28007a5a803d8ef97c89fef3745714f84c9b81d82ccf146ad278e01b5a692a8c365b328220f2c835b37de3e3272593d15c13336b4e5ea6974bf529df8996e994b156b97b86c02d6ae223f6cc6b56aad5ab0080a3007898fdde26fdd3f3037242d4d6bd1d293f923fdf138ed56ac578d9b77f587e44b8803f49260e8be47f6ea2012b5b5006f596b58833f37b0470e01b4c51aaa56663dfb40a1a152b685e9b2b2f1ad81217439d3d09ff0331002812d7ea9ec12413c34829f959e4527cce2f4b9db80df6a64c96cfb87f6d4751f5e698d03202aced2a82b9a0b144b20f880084593d4cb8a37fbd0624a42fb00ec5936e0c5a0f83065e0a1c50795c0fd6270f7bbc05a6cdff9251efd184e5aab6da256a8cc34652880deb6385a58117081a71de0797e226cc4a722f1a0ba2feec9303abe09322d19beffb1976610ac7b2185099412eb60a5ddfa9580555af4560eb252250aed0ea8a9bb1b05ae22cb43d936db8386671a3944b29d459c5f6a7c02f23a071d0ca5e16da38cf0d51adc10000c601834f43fd69cdc767030aaebe26e69fdeffa30d509a214cf292c41e877327e8b15f5b1b005c7715bbc1f5a4b22640dba502f3729791fe135c8b5cb982ab4cd32865c4b0c5eade2d97c28e77ec6bcca48337730eb86368c1a631741cb07e1c2b402c13fa9c790322e7b5b1e07b0fb12d73e8825d1fcb3255faa4477feb911489f7034514efe669d0d14b07f9f2b57adafc4b344465a1817580bfaab98a9f5987902582e1a76cfaed3e48db7b910ee27397221842bcabed84e767bde91e45f0b8c05128d5ae3650ca85d380db30110949cfcf63e1766b60edffbb3a3082f1c0f1bce29e45f3a0504128d45707c710243a608045c0a3cdffde00123f621a375afa14920b0ca9eb5b0e926c5a2470490aafe7f70043788948ae9988a83a61831c5cee3ea9968819a62007848128dbdc203832b8f293c25659e55015b6597fa4da9e02e2fd18d5e7f9f1d252733465be588d5441f41847d379c777943954711187241f665927a40a2bb29d8f9aee8b3a2529b4782ca4772336ed8c3424a4a61964225dc70982327d10812a6d85ab16170086f47a521a3697a8c1b52490533717df3f0f89e304839ecbab0170ee69250afdbee198d82071d08d00a37bcd11454eb5fb94b78b065b2e51a9022234f06c0382ee22d31f784b8c7c1fe5e77e71cb0743d43897b7ed812a8b1559df67cdf9452f9b8279b8bb9af31e60be21f89286f4ded9cb78ae560d047fb4c867728b47dea50ab86f4dab79722b70f9c06149f844f977e6d26a7b0c346d2058a0b81ea0b3c935cefc51174a78d9e0c27bfc822144d0400f572b436b63e90f40131692cce8a8f1a1a9b9308d435f6f4531a768c486c661d5c0d1d34ac43e0f1188792880712406032219337c038d33cb4cacc5e67db3ece535ffc79c9068265388e055d985be36a7b42a61a4569e75db808a8e39a273c8c7d79f2ffdb0125c6a9a5e1448d501bef44339c23759f2d43ab28c70355c7d2c9990a2f387d6e0a6447f184a871d4421dfbcfc62f149be8192cf488b7041396555afbbb126e50430733ef307a8a78c5481b83c0f1ea82e89f70715c76963f37b46f262afb6f4a4afd8664c34bd6cc6849867a0b4c8088ca271633aadd719faf5ccbebfcbb3fc22a5ff885114895ba5f1e790fb976251456ad1e08357aff4fce2446ccc0b620f59a860a46ec81a127df064738a3fba88a65f05778b0800583936d8d5e2987e54449e6cd4d0ba85fbd22841f916086082ab28d1386af223f2ab63a6639cfa6612b5f4545e939968c82921676b40acc3c41012177ac801b8813af8336e2c5449175537964f90b198e03229c33bcad548ff3673418dc98733b247b9ff5630d0aba5088b06a5c0401c4a8245a8ff5dfb31f3e9f2a16e6c2cc0fed76667ad7b02a6c3f02cf05fe6d5e896e7d9324fceabb6fc2054d1df348ff32e0d1c611e2ebbbddf52cb3a063de94aba25666fe0b66e5a5e60a9fcf955d2043582f3db477ea2b8de98d6fdc845e1af8a0dbb140d2e491f4055b9a476d82320eb9cbbd7e4049851390149b45491ca954b077f8804c0ed52830f39714f72bca12600853385a0c8ff42911373ddabb00202767c2c14b2a5124f25ad438c58a2f6de48999144a292e5cb928a7e693a31f147a9f0fb301aa0581d0e3de67b37a4868ad71a85c87027ab513012c808627b7603a8ce6f0aa4742daf6cf4b2ad88eb0fc9e750d764e246ffcc07f05a97c720c05a2f494a99a24b65eb29fc27b88117e930ef5e140189db6325f7db7996b01d90cebd30695800b61b56161e0c0eec9a1c7364416439429d80d11877bc5445b2084e918cbc865960c4c59dbcfc41720bb917b255884b6705139507735f6ea1b9930077fbfc0997e88751730b9e9e6ef0895595f8fcc493973eb780df7074a0276b2001f7b9a8c2790fb36ae6610e20172ddb4bfe6f9d0830c4137236db7c8a3e149154b68bdc43f25324bda23870926cc0adf81f26ccb45828124c9464a73d5e812249cc4b81718a93c00a62cc5218078f46414c50b272cd4f74bf1309385b4f3df8dfd488700a21cd92cbb8ddeb5430107c3a06c1678ef91ab762a5e22ea85407b645bc08c3455555e0fa1997a892fac46d385142925f5aa0e607893c9a3354d414dc0c189e834b8386110690bac694e92d6a9907ede92751bd3b098ff04e124514c0feeec8f705fb0421edd79732042de9672cfac0e9c8a65bb2d9a6a799bbf3e2082501493c285b012c15afaddea405e3fef4e0056f84ffbd08013e0c7c3a0a13c18dc43d5f62694b4bfc9d91e345afad5b000d2f093da0b6f4e0ff01359161daee7cb1d0315cf16cd2ccb123cb6d6438616ae0e1e17c621596824e9c855171c871c8d1b2dc416ce5ec124f66e8f957b0dccd13e94f0373e79e18f853f03fc43511fe34f0bbe8c4fd29c0ef6e22fc69e477a813f5a700bf8b26c65f2aa07c0b1393b7e2c9cfe2d1d0eb5f2371174fc49f0265eee884f6626a3c7e0c3dff0a943b9789fb5758dec513f3af40bb6b99b87f32a85a61d1c4fc9f43b97399b87f05e8dd4dd49f8ae50e3251ff0af13bd444fda9d8ee5c26ea5f01beab89f757d1d953d053ff6aec23c4834ec6aaf62312f8fe6eb12e1ffb7e7672eec3ac7697a44caca93049d4e5f049f1505c91528e9db0b1160c04152e6b0043b78c0f1381949e0e203ea03fecd70f5f2e7d11c18c95fb578bcddbf30ff8381efd89992e433fd502e0ea24c648418f134be2f9b35c84da8ed9f8ba4470d5d7c9f15e5ba4fa390f0ffe7da0dfb61e64f645a73a8679eec99fff1a5fbe7cf890946a3977c3b522a7c220e9edaa33ba1d5b007fab03659f62d135fe2374dceda995c4518b934cc6d8d5e86f0e587b634da039bfc9fd9a90f2995cc750a7f9a6957e411e8dfceb142b9b3cef47899f9b3d5b993d420d37ac763887b6750b36cbba01b7d68d7ed0ce01f723890c2490fdc6fbe09dd8a7c803742d7c8739e55f400e220a7a75cfdab950cdffa251f6bc5b9b91da10564d48e34d5641d3c2593bdb417a03afc82b0cbd8b4f3d3db8eec019bb094c677c043e60a106fad68716fc14a115d3cd587972b3b68a4a735d0ec3393687fbc1ed57c30db4faa687adc8d12d44b6fa658592665d4a0f166e0593a5e2c10d349c95bfb29f012c120bcc3bd2a0e1f331e942f69387bb7c445eacc8ec16b4acc8c00da289567ff4f486b1f2135e2f6856429984dbd7528fea429f42a99fc40a915b00c61b174a543e8073423fe86d25e831b515463c5a130d0aa375035c794e36e77231daac2498c25a955f2d5be72e34e4c6864c3978d3f43de1384c6e7347de0f9295de40e0569fce992eed1a8ed94a5346ed33fcabbb421c80d90d12a521d6b6ac1b1c222a2976b5bb414b00e288fbcba4b18214752f9dd6f4f0e3a4b0d110d0a4eadfe3e432a1a0ca4845c6042518d4c1ce4b151fd81df5fab42aa5baad5a8183409dac1088ebb614fc4fe386d9ad4f5df1c40637dc8d5bf988bddd8c86bb51a313874ec64b4da7a93bcbd0f9cf8b8d883389ade72b4da57f6a156e36204144ad6e42597524ed3debde7961ef9069b8476ffce6248f189123244673927e165029911768d15f5982860d88f157d238c5ff1b516f370d5cf2ec346fa7fc840bbd9fadb096c0edde2fc6155304493727d429bd7817af497a054fbc57096f557c029ee3526a95f72ac841e134833d3c221964bd4228ab664633de85138b5e1e29fd0c722782a8f085af20dcf130fe9353012a4e1bc12c6a7cb3d926d6f86f22caad1673a9526a95096941c45a387ffc074525a4d350b21239b1d8a53272d1d192444ae3909a080ba199ceea53777f6ebf2d5c1b82033acae025290a4894c4f52b860cfbada916419cf654516f6135c4bc3d40e9f734be4450c8ef102a95cacebd908fb62fac35cdbd5ab3a38eae235d0c13c1e976a37d63d8383482e99a69a56c1065a5b572bf8fb564f1ae6bd64dda60d858586a4bc34e4513340d4409ceea0014760916c81130d1971d31e4b3c962d6af76028429186d8e0ba430a35b12934c068178fc698b6c477dae2cb8d9b18b25b8739ef590f1584944de4873a77f5e876be870478f55c81d0de311771ae39b21d8c57f70ba07dff0c384b930dbc344d9eda4bce6072afd43715d754d1a72c46a890ee4955f682311079ce3235e3b4c035fe37477159c97386784b453c9d3a43570ddb78005d6b3e161ed2bb1d11847068ca3c700aa89b5b3832d71380cc99187c04c6271300431be3d30f81f9f11b285398b105b9adb81a202a234b9a781f833d0c9452079703a526548e86662233d78c768f83ab5d8c47dbf8875b047ddf08123f58e68059cd403b17354d68918771709b0e4bd3f26702d6a1d68fad25a694826eca931617f0c4115227ad479ea5887b24352a81daaa06e2eedd36994bbdfbfc4477fd5e789fc03459ad66d1a71b96da38edb68c4759b465cb87d229be3612e4994e5ea0c8b425f9c283945c8b3fe8f8ea819adc5f408887672032c50e860ff445261584f9b5b8ae3a0663b8d81fe7aa61c8ed289f87df376e6039370f268eee366d99bdfce7115fc9c876cadc308dd8cd281c5b185b76598d4ec433e007713c3a614d576e26c877dd3c100065ade99a0c3517c86d4dbde12945391ead5a48786a5b64de7e066d509e68599bc076609c0c740644a3d48c1353072114514c7f3fccfdd260ace0dcccf1d7a10d4cc816724a35396c749a59973ce65c3c8f90c4c8365ed24957997369b3f674de0f6c698a0971eb49110d8b260c57240da6eef7f512ed5df1df640af9371d0cdd4f3e0f0090ea122a48a609bf9246b0b5453d98823588bb75834ad7862c17ea2c108f4e8c8c2697d3658329d85632fb4621ab3c4e856c55e9a9e1e284f178e6f5d1fd65e1ffacb287e6b4ca904ee47c78af46ebb1d6770b48dce88375d2534312cb49862dc2a9d09b40912b751576e4aac185742bd39ee26882f4c0942c18753376e5444c78d1bbfadf84cdcc24a2999b51e52c2c530b18c182e9609bb7b20fae366e2964839473e05e9dddc79c0d26c044c7122e43cd0177a6cb839b9300510e4c9c2d8efb35211083e94c8be377d558eb0aae3107d5248b57b297c4030475c71141bed47dbc7f2d7fb897215e74b6a22c027091ad55628a4fa769652fd4b80deddd26e767520a8a3c67e4d14af74394d1590c051a4783dd9ea3ed679a8ed39ea49549508c77f7f96954023c7ad08462081a6e569fc53534aa394770337e4c0ab00ac8c76f47235795667df5017a1703952ec74b41cf087f97badce0c25b8d5061c86eef99c04dc7ca8bc8b8ee83962bbfa13d2c5689a2d6e320c91013370a243a5631ee40156d3743a210e8c46c671101cc629e9f34455d74c8926918393435d9ed48cce90cb135090271c80873fc253e0e2c9d29e302bbf805bcaae928a1557ee381af1feb8ec37aad29a1397113243bf5cb78a06ef84941e5a38a28307bb295e4aa96b5ee27918db922e647a3b163a3ba1a50f2a7f7baf1dd5009bfc093655411707519faa2818e2e0a7cae4ce995719eb0e4c1e9e277320a9dfe8de5c4a9d858030a75af93076b9e0501f9c2adada10090e101cf489097184e2e4020becc33e7ee91b9abffca9f9c9b902f9483a3fa320ec68113a5adbb50c8f3b136fe8f31598e8f80116a4d3dd94bf072ec2e571ca4954b4fc4e274438cc96db73ea46589e5499f65c055d4142d7cefdf8adde03c976cbec39716cdff04ab869d2565fe9a8def8105930ad47b1a7fb47070f680cd97383753662038331613e37cf63f184357956e70787809bf7da710e1a56d6d82a4aac494773251690044b79e127c3a5ba710464c02efbead2f9a7249b02ddd5b89c201e489b8d26bb543a6d311a243a31e3aa171dcfd808d0500ced001a0a948cbc7ba69d213e526961b9fc33d18ed15b29acf62ab4d45f50e4cafc5c4c6c2e8070ac9901871f9c721136edcd7d355484221155580c7a56986c783027a9a79c7e115e9f1ecd9792297bc943d49c89ae8c24bca5daeefa4e2e59998144c2c925095d6d1535f6459ec74ba38714cd38ada88158bf95fb969fde7f946b1eea4f53a13c0dee5467467c3adeae6040ede189cf2b5f73ed3871b690d6920e77028085387838ddf7b647fd39a551b7ed353a3307e6c2894a6e68aa3d81bba3ab56b8755a70bbc54478e96949e0504f8b543bd8f9eb162937dca438435033887828b307116229c0431dd4a0215b4ae882732c7d0112f15b99a22547f0d4fd707880b5876a789789b1a2b5214ef62d7e2b1d1c3cb97ae34b960174ec8450bec8e751df723b43724aeacc1dd03f116524edd7354bbba351386c197edc1ce36479df20f35822f17405787351fccbc32fc475dd3be53f86cb410c7aabb71b54dd4aa2f9b900b86d24874a47e648e088db8f8a45a7032272ee6544a5c1e0e06389e91802f88fc2220c14724b7ef781172a824456186c63fd839497c84a674cb0216f82d4659596362df7b2f718d6561bd8d801aac95352782a664d18064d18d7fe634d47c58234527de5fcf534979aed7a63e83e08f06b9ec242e10c1df919338f57ed7106579c0e69a6f3ac178e2999935269d22707d47f41a5d1b5545a7201387ae3d9cc7a7d8fc27a9951fe0da0b2c84070e082dc0cb59d6f20f3ae4e1540c02c7299d54797409484edbe92a327cce694630441985833822d9eeb28155655dc04e4ec408785285316ce73ce2ea8392420764f7aef174989f86275bade79551a178b7d9fc91cfb5019c6057182610b3456331a7f537ba932dee23fb527efb740f2677154fbd8c452edc363ed23b36a0513db5140405da05706dffdf95a8444ca2ddab022e22a14aa46e1afaa105d473736939205ae8d1b919e746dce78d3771d02abc4dedcdb3a0e90b628c862ad2902574de3c0b55cbb8ec1cabb398cec10ff237e92989a4a4b033157e700cb2fb7d9e4361f9e369f24979b0f8fc26c41aa56d51531477562021882cc2b8c6588ad353d1cf2813b45990b2ebfec7af47c30405ec530c81c13ad3a9cd70ebec7afa9b5dc6f1b7f1825666822cb4e25cc6510274f45ccdefe27b9e23d7315985c8585af38ac7f062d4899ceb9b91cca8063191367ee87d26060a20a3a9bcbb2995182b0ab58a0ad9b6459568242a5c8401ac1f05186120621aeeb008fb592d1ec1989030d31e134a88c744d25c4505931feeea817a084608072ceb09c53d08823364009dd71d20b04943643d2cdded153f304600c10c3f8891fdbf8894d8e9f9045c927a50fb943ac36534099bcb6eb06d9276061ed620b10a14222800d9bd72809b6deb9c9fc936a9982220d7c47729267236c31166de59d656b7234ab5c03d6eb7c929fd0996e67e015b83e8927f6664763c74249ff81b213c8894759be6b5a265d1525f1badd6490620c57f8e7a762db7eb0a1113403207ddd2facdffcf91b2ac636255110db02d983cafcfd8c2d669a41a04041866d2fe40fb60b19474580e53ce3f1eb07e7031a640382dc981b1efc51015f2111f100b81cc3b62170c1b1f60c4fefa2ae8f3189878cb31d7dee7a55ccc8db10f1aa403da64d9b066a1194d58faf94bb37c930434c3465a4bf49827748bfec63afff77e44992548de4c4a506bbade0aec0e81f2c3c91ed78e0841a1126cf652506177f3a4546a7fce89caa650768249aef70c58332c69a58547327f7ccd137eaed1943d2f85c33bb29411293ea8a22dbcdd02c5fad8e7d4c21b6bd38f5aa1287d8f90988d9fcacc985cca824984fa84bc09eeb1537c9759f711b12fdc2cac27c9d7ae1638b285516394685f8451f5e67f471e54757ede4905930a252a927008e82183c941ff264f04d74ed85d41556ae6802b3e3721f1c6a63ac103eef2b312e04abcddee2a8dca7a332d4d74583d9c5c4f603129209840eb32858713f22aae1164ae5c51af45b6f363fc8e82458c4f2e35df9e1bafb4f730631cdb18406d570c7ba68d0080948f4c3d808cfe63974e471fa72927b7066135de92698776fb0f4e44d977b016da60de73473ab5b6c3c5a1e474cfc9ecb88c2c6bfbd13ddd1fc47210532cd6aca8e067f970857a55f5d0a2c3683b1175aceab7226006be3bd43d20534426be84c07e25c0ce128b4f60681c72a07c2517ffa49886a1d204c3045d7f4e43facd258c08eefff88929e26ccc5d0646919c8332eacd59337c258eca10ceec47f77d1b3717b5ec6a768f4c993d693e92a7a3fa85704a6088aef6297af88784386639ae0b8e088507e01d7241a50e8a37cff20b2f77c5eb8e255a8dd0c5b3462c615256073e615719d19500da7b484413961d4880207962e7ab71e19d918355422fd4785e4e8a138f91f541da18f94f40f1463fe4315adff9073315f6a9b8d5b6e57c253de7eede41bcd22e3fe14e10a79cbfb5ba62a9903c2563879d7a79141232158ff1adb90be37758adf65381552f45ccb316733e634237c6fc609af9a213e403a285d6be7232a9713866c8116933222014bbc58562295459b99cff5eb12372223a8b291b445ed92975946c6dcbc5d4f88d29759559c1f9a2b1da632297261f8a210e5fcff25c81047723c1356dd05a67f589e5d4d954bba801ac581c4fda07fb44b47a8da588a11d6b91308f9a8b6ce91000499bb374e031157169fec172571fad0988798e9ddc91dbb969dd38fe419fadcc85baeaa29de7f9f7198ce6abc1d20ff3c7500e9d293dcc009dfe0299b4b78880638440bd4613ae5e47504fbc87c4375060cff0b5e3ac7a442a480e9f4d656c74415a62784d2ca7a812a3309cd7fa579ec8ab322dcec1699910417c101b802c5397dcc25d4536728141611d66dba6fd43e481e01bd4187f39b1e55b937b1f48def3a8a40013b05757e830d44c7ed5151c674b51ad8c23606f6cc96a314634fd4ef8187552ef785058c4ab2715635c6c1890b026cbf4ec1654b894da01090d0731f5d7f2556836ac74bac85e8d0fa422106c2c87483e06d44623b6f72b1ee5d908ecdcd9ad3fb185f26d73c626d7495b6d144803916d94b893c63bf6c91c78a0b94fb5d519bfd17e3b7be438b3cee4b5ba4689080d6e469dac3f520ce7787a5b72ecc0d4818d78329653d43257017f95de834ccd8374a7dd3bb513ac3f99b44c07d626f6b5363518592cbb872bdee8e6e0194e500083aeec54285e2fcf45413fab44b23413fc76160cae9fb68ab70f90a9e20a345e1a9848a4a8c534a53c2cc7987f4a46fa2c8a472988cded3e6ce6fd463187086f7e7aacba18c39a1d4a4e9c74f42fceacaec8c2eaf56080ee0c94f0be67201d40d6330529c7f10bcb50f6888907fa122c2c29fe13867f818447539706c0ad687be14335067211eddfdb87a9348308e2066802b34da03cb3f0498c01cab443a4507ea7cd3537b53009b215fb50055c507bb57d373abef128c4fa071f187d2ea150195ab81751edb81aeea6dfaaf02f9d334c615c75c1df0debc10066d3e13f36c1c1a9106e4d2ad6c74e896126508ccb53d3a5debd91750faf979e1e1662f620aa6f6622d491728796a35c1de2095e645564f78cb0fb0fedd61b93747d01a40a18ecbb7b476d99868aa617e3513008e41cc784252b13b09f0e1991669332320bd699feecf21a979b6e07d506bf45164e3cd23775f9d31c6267f38d8e59a585acb0415fc3477cea5c72059dba26c0e07a6ba7cc1d3e8cee11a9a0c8cdd1fd3b426d11aaa7ae209fbef481c3cad40868d03eaa7b9ea43a6b7e154c60f663a494275b6c958567d4bc59f09e6504dfb87c52fc15b5fe062dcb9613fe53acd28f23471e3a313c27e1171c3c57943239a0836dc743fc93a4066dcd8507056df1d43864e7b23c94be96f6e3e15f76d28f600a2f842343d0df0716cc74e3566b8f9e82f8cb19ca75a82eb719c31220ff4bb2030cb424bcbcf3584e916f1693df07d76f2d52982da52df757a7a2bdbf402ca0d0ed1ff5f8c190180e2877adbe899d3f8a344567d5bdb48e4b42d4261b34c20587b34fea5aa98a9bd56d98dd33a8b7f61f86a888d7fd26c20bdbfac9cb81d8f4a8dd272cdda5994b3d63ab078beb7cb3355163ef6d505d11d8638f4529587e9e151ead7b3c14f40f0f81356acd983b4aea6c9d295a61de45b12cdf7f60ae0cc1d0d8fdd934cc008dc32cd800bc8c5b62a40b62afb4bbdbd66ba7bc326de37fcf5cefd5381a9a8dbcad8d716428f56542f816dbfe15f22302da86f19ecaa53b0897ffda5aeb24c69e07825f3166b9334250faa0618d833503b36b8a3a0b23de919b7ffa3ad83812cad87d1ac26d7d24c9122859f540ca2a1853efdef85c546982c8d3b79fd837dfe02db7124c3d7b657c28e81f6794bc2a44fbd5b3407ff79e0cb7a343e3242f0fdbe3027e6a3d5afeac39f925827cf6cb246260add4ba1a2c9b9360aa1701662de0b6b322141eac2ed90aa89f4431ce963f4080b0f25f1e6da50f8b01db01ca441c765b5c2268093199f63ae3cbf29042cfed4f881ec8b277948ad03cc527b53687aeb5974e6c9d6b4c35deab8345f2d6f54acdb2e5527c073533acf8ca5ab5fc1b33a9a7979b46576912ca1b169bf380db6c90f6e67e6539b5a26119e8b562da5ca84e2484eb52e145f51dc77bf11b657ac1efd81d8c95e7442a1a8be11b7550e447214b2070a2bb43076748decd7d7464318bc8c90b7c35348b59762c830ee33c2825a1face59c178c557789366dba70e6a43bc5010db4ec7099a64670ed1a63c6a2527b53599067490425aa9e61df2d86aaf05cccfff96b8ecfaaa2e2efe5bcf7010bdd71d33b7fdbcbf97abc7dfcea039d00ef709574bda39ec0122c8b9e4305c8a24332f8bb86e19a86d9da8f436fc07b3fb06caf7f022afd0f5ae3b5043d87e159e2ec6a2907e65fea8fa7643ca7d49b0034c1d4261955d4186108a470ff5b8c06e8d7d928cf723065f0b47097679e6b7a577a40f52567bbebe949a634a680445ef50b1986b50823e47b5541b7279d46e142f919143b9c649123f150ad9321cfacf05a65c5965b88a4cfb462de838867f3eeda10b956338e36dfb996fb7c92171dd5a0a8b5e7dcc4321d116809cd82ba41984b5d29d3e98cfe43d94f29021380ed2384d7f9989cba10d1aeb797e6f522fb4e807a0cdcd60df351c64f789954ccc03933018cd66b770b91d62fbae21aad8e51973898047d810fb5fc08c03988457c8e07cf0daee76fac74b991a27808a95e8106e4766f2a2b6fe0040f50451e52da056b150d2015ae21a85d80820b03f3e5448f7de09af7293715497eca59f6813317402e351af8212483824d7415affb698a59bd33d8aca1b75691643d4770447ab1307cc6543b162619c55af78a6b79c124b73b0bf0c841a0ea943c9182383c1bc46e3b8a014bd9b400b9d00a4f90470c96c141192f42ef71d9d5d269b8a6346d26bef007f6f8020c4462ae58c4f99f67d299b7eae2e44165d02fa9c1baa24ad6e193bcbcaa5c114f34a8691817ccc1f6937cc8b3ccc1da98ec25f0a11dd0c2f4e7dea3800e0e5dac36ebbe91e9764b35250797ca882baacf23d770c7024f19f77b5bee8fcfafa6efaf22b5eefa4e6589cb40893a268e4ca384edf51d7b739cbcf31ec6b22db7e332ec66b0a04b4362e9f271100566a30b256e9fd420003da9344d983cc12e4d5062e8bd66047f2df6ffa409105f40687d985036974174189dd5db5426c3bf8109f2ae1f00429ce310291b128c16601a1d63855b81a5431e5f6846eb39c2a40a649af407f971e9b595b57b0b47bc0ca595af521896caed25f37be8d4583d46ed7dd24496fb6294d6e38f00e2530132caea868003e5e14757ad4c920fc427a2968dc0e5ebe2e0120c428efe0e16bdd2c7000218cd2edbb8e22efa65ee25014a7114d991b16fa8565391be39c5a2191e63076ee0410a8d1ed9b96facb772e6b16415c01cb6d299914dcc69d3dbfe78bef8e2c16234a623d86a9f7d15150184c90df4a0ccc26a9e2a93402c7f791e2ed8a3ae4718bd59e3d4fa4528b44be628d05d50d796ce1c3cefac9b8554de0cfb01861904d6465437c9782cce7879d794a084c9c4cd9a08d94c5f419700654db7112c8b406d340c35499fbadaffc752799130731a794338107e07a8a6c446f76005c59466f14ba97d84e87aa89a4d9aaf82c5c4a7b46dc59fed9ac2caf90778a718e96134dd57c713803bc3512d617c419e9d4845a074b3eb53a0217b3f332462501793f007f2c5af08f6c035518e1587399f381a4c7c3f523baca9c37c5b416d3ddc3363c2b2c929613510c1b8d2ffad19abf68e6e9a0b1b52fe11cb3021b63903269f865c96d03e4aed4a8b9a45799efb80ddfebc11627307322f8450564f6c85f651ddd7c9e731b6bd7da4b81d94e720862a009d557541733ee33b83112d3155bbe4a1204ea44593bf3db9ebf20a76405c6410448910aa16f6de824f614f1dfe938565b17d7a6f9d0bc1cbce025e861d26450cae6ab8421aa1e23cb200ca65041246e0d824e9c4870c56389b720c3883038a49534e8373c8170b7b52136024c31e988331d8345720c7f2501c0d86970375072840edb7a629a22f6c6b8decbdb7945b4ab909499b90f20006010c01ab5922a7bd643eb8fcebda966e35e5a64c9632899c73347a9703e77261c3e55a73998aed2cff55b9ba2b15026ce6feead139f943a4413ea55873ae8c6cbcdd682526d5d5b57a39d7101f47aee1a4458e276f3b55996dbc5d4c2a94992c5bab6ad9c15326df757476368976120dc056b2edddd4373befdf34ff665ebc9a2c9b654a6c973e53b7c4486c82a0866c441123c366889cc958d32891dd5bcd6db2643ee5ff8fbf24c40b37e5a8883f0591a182b49dd4c478a01c85f8b24084401086c56bf16a1aa55a5b0cf17f37edb5c5bcdc29949e4c50e5bea7b01bf365b566efb1664a322b54499930d4c5bc163b6f7a2dc10b1f0ef46fe96e0a1ac402014448ba9f1395344d4fd3b4641145b355dac3e3a9e559abb40ae5020ff64cb429a57978bc495726d14bb78dd92d0fc2bbb0153183cc0c30458e72a1577332f3aa64a6bf3d333725562f72eda94c6ed94fe544bd0beb6e3b3b7428ad7233e80ba3a9af377aaa8e9f632c57b7d7d2f5ef15afcc3f5bc575cb6cd706c85e9b95fcc84bd360d01ca7426792b195e16d77985c5565cb948b5aebf71ca5a2d48c0c6baf42716ab22eaebd4b26338932d99a6cfdbdcdc8f48cbff20eedff7b60aeac2ed3adda34fdfebf2ba3abdf5b75f498fdec3f67ab414573c506ca11a1c442f246f280180de855952a554274ff5a2393c94169e2e1f3f2c34c65e862624c07b621f31128f080c3e4786fa83119409e722cf652f958660599de120c032132b62c51bc5cd9aa6bf1cacd2318267957a28230985de73e3822bb53ec2597c85518482c663d8686c401b158f1949a00532a212fd92e4a1e940e138f7a3e869e87b177619e3e57979795abbc309418849452d072a01a86d0ab6b1908b29619a65e0b1774d965ce29a44d1b425ca99aec1ad4a24d08d5ea23fe888d0b420164ffc56042eb024189fa1831eb71a3db85f9c5fda1773634d655195e207d672f1174382a3a960888530872290803e62c0badaadd21506676668774ab50de5a1db296ea4a36e5a9ece5bbb7bf437aad15a29d0c3586b158f2ff7ebf7afdaf6ae9bf3ba429d1b1c332f270581680114f03354dfa9fe4c890c3d3a3d493be427aa39c54c3499efe1d24a474a71de733509a0727a51d21bc54e2c8484e3ac9931ca7690c0021a5e340919c6dfed45c1e000a1871d28dbd2a4192391e15ce15898954b22324cff74d3a2a0f87b3e339622062624485d899f64388affec85ea9d3a8eceb08a024a2a127e2383e728be5bd7c18062f5071d43f760387f3f9a0c23f4704d28046bd5db868d1c2b97cf391aacf1ffd7e7c5e103bf17fda082437524ae94f9a075854c6484dc0b1d20ab240ca791238dc00030a50c36bb5b16eb8e1865721c8e155459cb09cad207b5278f1c2841b09bc70078b174f1451c2157f0b209e6af1c353884f2efe6a81812054affb07dcc27b51f49c1e1ea68623f21e15ef3d11b743c38106ee8c5e943e8c78ae3186815b70ce73821431304efcc65a55ac88f7a8242dfbdd0ef3c50018160707435a944551841493ee01c403ce87d507450569588ea322c48c42062863c0008080000060360800ee89dc2e011b522045e8955b3d3b32b51da803798ca43f9f78df95400ea3361136092c1a401e2d1c6e89dc960a968b64ea80544a58fcd9fbc2f8d97fafa9a246b4976d5d89fc51faf49a7e45611917ed0210da5928b07c932f766f295297329031e52b3718b701d66fa47b9c1f99db6d8c3f84a286176149ec73f8d0af9677668ce552d455e0d549e4d912ea73871e7e578d5bf4cea62ce0edf23e3a9484331d8c69af007cd9fbdfe28052fb575752562e72bf4f6fa60079c10e7fdd47095abc3fc3d7ddf44264ed22af9154e754634170eefff8fb2ce41de8d61746e6ebea09e5958cd8912fa9e685efc81b84ca6571be27925b9d2bdee818a02d9ce8675ce3cee9d144f762db99020199be92b1463c6abcefee10154c4f1ffdd53b18d0d7ef6301527a39fe0ca9db15286a08fd23d69fb4449965787a234f947b6c8de03fc136b38a9e539e90ffe9677eff1c9bd8c1971f7ec176b57c17c1da9560863a5d58f901b4ad08019257b7d96d52c172585672d89b4eaa52d9b2e3fd23ad3447e0509d38e3c52f06a32fc18adb104522094883608b41b56fc6b0405c3e6bfeaa2ed41822ebf6e3aa77b607e16a03ddbff00629c582748e80c584ad4b5211bce068d5d0ab0f8c7a78649015ec249425b41220bec042824aab5b985618064ee1bb51b064713bfae6ad0eed81d2036c884be3511bff64caefe9c721ad6a9d6dd758bb6f68aa8c1a2c19740f0188abd172f7dff721459a3dc4853ef1ed9ca7538b0aadd75e3bf16bf01216e3d4ca7227eb50102a5a79dc307394b9dfba161b0ea91e0cd288884da6ec0cfb6c898692258417da4229af090227000dedc5e139d76259918aca2b7fcf7b78ce13f5efe0b070e519d2499113eab0de7f92ba704e3af663c3cebc7f459d6c0b0cc2838e159b0202fbf39162a654ae8915823a1221c9e04bdb67cf0a28279117abcd78f1c5b4b57fc74ffd9597629cd7221d143cecca9ba598d664e628c644b9b68b07ec3fa5656413817a20b4947830db36094108d65088c56faa7983850b349c167f270d7cb13a8e2b04e535396ebc5c09bebb178c4bb49898535074009371cab1bc3b4588aef80e49d574dba0cc916f7ec9112572845cdfa84643144aec94ad943bf3ccef57ba138ffab5fb554d2e87a5ffe6481045c4180fde74c83409884852f748d66e331e0d1222618261fc1ec821fec39ffaa9e2222b622e8310c4685dfc861e2ac9ef356724d8ee0d9e08f8135661edcfac08d23867396912ef469c1be4253cda6545e1ae2c0a270aa8a93f6f91da9e839537e9e72426e111b8d5eb681bc689df12f90e828644f88a73405e4bd8f5a8338242aabf67e7c5104732e038bd997eaf400269575b29a1531f6ebb9195be51de504b2f26d7d9203471343ac11b3c4528566fdf00f23c8dc7b4ea0cbaee814fe0723b784c757f003db87cf851df00da9fc0b89b5e9cdd31e1db1113f0353e33f92e78b77c6d45fe19cecfc8ea35291a0393d8e17020fd650110d84b9947324a401246587944f76874b7578c4d90d5d13a48d7c5144873fbb858322a0b07647356b557233bd38b008c36f74bd1371888add054d51672ed38791cd725b782feca510d2a69614370510fc67feef80707bc2f48eb572449fce4501cf1472395488f3aef97e68917d8b7220433e3e324959cf221382c35d8093caf3f77b92385cc78757c0b7a495d838529a84483cd01c25140ea1a571e02289f7c02f04dcc8c1752c0dc46cf35d32fa11017ccd0d5203409f923dfe50bcbcab71b385a624911b6677640543f740b859b202175f79cbcd764db7589d5601d5d7141b89d2376413f3d04184cceedec138f47c8579c93bfb2b7f9b8ac52dc0ed2c62e92c10be3fb0f6f1295f4c15866a0bf2127de96401835971fedcfdc21a7797a4d04fdcb8e5684f486bfe93384281e2eef2074fb471ff602bb7f723e5bcb036d1413eb3002d4e04e6c42c79acb970113b0ae8f8f2c876cc39146f61c34ba3e417031863ceafefc9c50fec6f6b7092818eb6f0ed67fde0a5699ed6eda9c34db93a84be7f3eb530b6f42383c94fd84f34be9a00b88061702196e11e629bc53057b0c7cf2fcb2cd719fe62498ad7bad50f24a930de97095b2aaba477f277064c51f4f416995a85e75c489475228dec21fae7e95f10f00885af4254c59364d54ec88cecfa62e29ceda7be9efc02b1ddbbed51ba6c8bce6c2507cc9db0a6723128a9d6388608da58ce97e536ebee828c5883795b873ac879b0be0502123e39da0ba9217caba49804df3c710bd21d531c08f07f1324b88045537892bf6fcc4a7c60dcf504cd684c59966564c87dd910c4c69d491ee565e073f6e446bdda34651104ba49489af1143bae6071861525abf2df09900db822fe2c9cad98201b0bd40bca50b1f5a2d41a36772d1d9a0370fc731fd219be7f192df379be8f7d307c105af138988ab4801ce3bbac8a76eb795478f410093203a05257d976359fba381c6077e950d65c5d0b0ae6381a9256b86c41e802207cedde1ed2a2bd48168642933c44a0b88ed2beb4b8530420728b3b1370f79f84ae9e223b18248fb6ab9d778a6ea31a0470612de455463caf835ec389e998fe18764170f810c806c0ca0c844c51984b4290298e9f528e43bedc940dfe191aa3ce18977dc3b6d79e0df11f126279b720cb5800691315f7838dee08799ba1b202095ffa8d25ea753ac7c604ce7446f208340115ac76aac34bb98240a20a530b248b2944b0b660e48b3c3c7c53e8c0fa8cdb69f45fe0899bd27337a35a97ef200336c1cd0c76da449c30a19c28fbf3a05d3dda5cad9a7a80a0f8ac4431423f09e001d776786f6890b728c37543640e96d010dcd677660b65c9622e7b9cf2430a459ecf6acc91adc331a97fd8e4264aec842fe1fe14701555d7d045761c57d54b8c2b217332159e355c86cf6464d0f28eafdcfa9f422e9acf59c61f3fd5a52412293152310b7b03b46e0961f7ea605c483ed99245bd20b2b86470e3eb076f431ff0e20480f5b392e27c7fd35804386ffc5f272781f352d1f804cf03916136c13c36f79659d024c0273ac5c01c86e8e7e10501ff0c54accb1a83a7e8a80f7457bea921bebf5f75050ec91a05e66bc26079a6037887def604f6f34cdb05a1a4c863676f2ea66724fdd0c897fcf25969a7dad0e153acd8b9feb40fbe98816b96eb0572a21913510eebb0b312a542fa4ead13e2522fa5c2036feb61c4730574ade360c02c177bb51bc03ca6c17dd4f6096f486f1880de4ad1cc427b51ac0573438bda68e5db4d1d3df523264f3e78c6efb4f1c39bbce224b59af38aa48b0950b136f2e72060efd759924c6261862a1a7751db7f35fbfd6316c8c33aabbaf15f84ec8be5c6aa0b90ccdb4e452dc81ec4c5d26e0c4454f531b6c755c6f46ebbf152f836d2597eb9853cf90a9238b0ed8ce585d4d7c19a78a8c4c22da102eae4658492f9548f5faa20a8c16200d593f7bebea0bb9c53bfc976b49379f3f8a8424e13525945214493d3ec2c2f26ab381eff4bbf6641737b1f81325fa435a70a3ca071350c085644c4ed0904f640bc848da783408703a785b29e5f8173817e4c712d2a4ab95497c360f12a5a1e4123e17378900d95bfc5544c9696dd574ce761c3d07d836536ec7058e6ec2bc6b4d7f27d10cb857d2fdb122ef0ffb784efa6684f3a79d3cc7593fbf9aefbfd146fd2a6b254032514d0550843be4cd95ce9376cbf573b8a42664e8bd6ac7fe8e6703655c946db05ff98cb56424cf8b9c67014e54eac9005b2c1f08cf04a092694b4978963b432bd8c5964a1c111a7082d095e33d199a30da88d66696982627379c01b7db99aa158d2e4f529b9e88415cb64dce5d5baa4cf981738052e8f59b666d15639af45f9ec36d081f1887e593d1c3d31187f5973a7364032e3557f1619f46fddd5e4b309d64f413b6a99e29b8f4b9b2259000558aa315756497eca45d4f208c9fbab375e5da69b77ba3af468a4cb8617dd1547c3cf2c7616ab5c52a355dbcd79796b0fadf6ea58656a309498c0d4665a55190e32155e2023dbeee722920aa3d7631cf01d728e91859cd19ed8568759246c9d4d024f1a56e733e3b00219c48c3ed03dd645ce010c500cfd7e8989607d5577d246224998280bed3a713a96b6cad0d88f298adf1966b4d32c29ca4a4f7bab0a274dce350ce938154a9d81da9b9ca464faa976563c29c3bb308b0d2b825f94f7005915514e205f0607c346923ddc94beaa3a177b53bfc608cea9aa1f5d90d8855cc2f0d2dcbadb14dba4397e16289500024914731817c3022f8c16e22fdefc5706d5cf5fb5428d02fb1e91fce095914afa52de221183642a4a20dfb720b1c570e2b0b3a6a1e5861c7813ba4302aa8c63821eebdccec7f81e06080946612f6bb40ef3a5b9426ffbfb99ff68fd274fb82c0fe4d76d0cbf21f4af3cecb9c63f89cfac4489eb4f5267bbf45e6e0cd9896c69930d28d49e690ee20a3329902c01ce84eebf5edd82e037c66317609208f8fca1ec60d3ca934701761826d3a952bda658b1786c6a8df9f114037ac5b37fbc6a96734d0ca4011ab4741d6078b044cfe89aca50faa5c203928bdcd399c5131aaa4aba449fc52c10ec94472cc7c64f16232449666e9a8b72d150d1aba7fbf45b28a3a55e2f86e4c0c6e8ff97abd37633d8d763502740199928da61888544431207f702fb36e4b7cb9e5704eb3df9c3e125379c9d99d607387ee838775be4ae48916d80326db3732e2dbf025d932d863a87270eb9377d8bf0fb72d79c8a047ceeba804990a8526cdd9dad3d0d5f885854412b5fbbb13e3ee0af7723bf9a89551d54aeac79a0e8cdc27156b1c4bbeee69ecf209514d5161a528bf6c74b59b9a4e3b009a258ff5f0da60808f9f6f22f76f8bcef3b07605fa17c3f28b6bc472e19afaa3965e561591a30c07134cb5f1dad8a8253d6e8a50867bd5975e478018a2948c790da7afe210036b463565da45336ba8411c1acfdac756d924f519810b38e621e93ee3efd5455be2d7d8fe7accffe40291d4ba302a07a9b9e82ac9ef71692196a38c557b5fd5e923a2d71a74a32324bfc1a36884ee279411ee8353c18ed90fa8d92b37623778293d4a0eb11ae00a5eac741080934c542d62ac310e410f99f5d8d33b115ad7d0f5e57c90d0c8328da04f1dde8d2c1f0950b16ee74323907a984bf8cb7e20ef6178bcb7f9a4dbe828e747f0c2cf23e814f1645fdb39e16b82f96bff0849ad074b14cd02bbe8e8beb92e6d26c38d1cdf8813f507167851139be045f05b97c021eeb5f32dca99fe7d81af6f1d82b94f8ba6b81266d0b2e847f9cca44cfe323c59c5b0036ca76a41cf8a2c0ffc555671a8869209a984991b64caf1a750ac256b4c726468a65224b529bc28b318ea511e372342858f2516b5b32c7f2ea232f1173055bd08e33f2565bc89fa60adb421fa7a5544ae9ca82a09f92dba66aadd9d7ba217b1121a96d7a1e6bb02063302ec7fcd38c03669452528e130b32275861668fc2af450979ef975967e20ee5cf21c4a01c348217f3621b94a3967762eda37cab35433ba6bd10a0719b9c7bb88f253a8e2db9b275a0c69e9d911f7ded1058fcb60287d3028b1360b16bafd40acc70333f14734dd37024aa98a6e25f209cde04e0f44b2a4aff9dce5f018d92ab54766c743374c8189492bdec675544b3bdc9cc539a9051c13fc07ceba9e9062301ba9c4a9827b0e41c00ecaf6d67722a16d2ac6887f740348980d5473d67973705c5077753666a4440c6f0b8ce4a5448dba00f4243eb90ae50adcf41cb8f30e81d208c322a8052dac964d261652d932d68cc86a1c808c09e8ad2d71324a96e8c315b3bb1cbefac899fd56a19677c0b179dab896500c7d03276a5d60b0bff4a85b3b815a475b9eca9243b1065e4b7d78079c2b30d9be9e8b8d154b7b020f492ed6af93453648c50245d222f2abed720bcaa5034cb3f8a011de720b7a2b2d9b8224bcf76977d1b68874c1d868b4a81ef577ea294b32672b521a52331f3c69448ec61f7f869308d07cd09a05d398a96004a15c35f237586720400bf3208de6474a2664157021b1849acc142929ab6cfa91dc4a53a606fb63558d07e7715f43dd29dae4ff18f4020a42cb4d208db23834f308440655291f83138de7a7c9ec965508943b34063b62ae0aff22990ca231a4f212169b8224057b1a5e3fb7f509e517ae1e70f954b474bbfbe30d9ef863c15c5b02a4327933fe16d411ad3230230daa79b34debaec362e95fa99769a3f405508ee7b1721611f5c8d2c2f92bb951c3a62f99a8bcc594924b1cc66caeae4c36d12146504c2d020a4075414a3020723abd2c529772280d2e8d9d681c03bdf329d64c66645790e75e97d5e52e05616180500e50310010b0111d4e01bef5ccccdce3b84f6920897465263d69216d4bb9b79452a624930c24040a04e503d9b98ec5d352ad3090f5ee95c005e17559cbc114248e7298a3650c2ad470d304162d0f4fcb09eb670b86d5bb827dfd3c29d7bbb6b9ccd58eab1d9b1666317722fd123b4abdebbaaea362608ef49fabb572ffff35377d4b757491b93a8c524208217c58b9fc7f87d6f129a59412b2e976c2728feffef1ff1f3aec7ec6400a35ded0c1600b15186c010363527ec718639d53b8f6cc386285cc17ef78864f4b739cbefc9d3adecd858bbac7b8060917d5195a962dc89e9d542b6ccedc5d679ed327c27ad22ce5273b266f5162cc19faef71adf84a1b8a3a950e9310422921a594461967bf74d87dee1edd1bca31f25df2e573cf715f2a8cab317bf49aabfc585b8e66faffff38e60815fcf9e79c73fe3b65082184337e64e2b1a7bd3fdfdddd67638a82f7f4dc7d53bcdba11cfeb57ce9b1153ac3349dbb3f0f4e49524a29655b39c2c47177f71ec84929659412725c75961c5c632dff548abd10af731d3b10f8586c21f2608e6daf60c073281367cdcdb114ae0c0f4bba5d7cd6c57cf6b5f8ac44aae28bc9e73cf6e468005d8ebe0ea68aaa2d4ccea140552da5941666980297e1041ca7e224806b9471b2b148638ebd850f6d4f3d96b43c61365c8ed0d9ac913e7fa1013be0285ddcfa07e68eb1ee6e9f11c2086100ac3892b6939ea0af10c10b962e90dc7812028f296382508345cd157758f92f6940a0c6d30e5367b438c222db7e48c20b1e5ae0d0c3cb540393e1c28c1a263892b620713b02839b027b68502f987353a5a069ac194c26a5943303632e405c11764dc145077a2b03d733b30a4c97a81cf836a1c1dd53d501d335786e81690f950b6615d133704b8a2906572fe60f7805c57581e10d0b09248c2b771c116bca5254f95ace5ffb6a95bdaa2cc846a1291588830f2e40935657ecd593c1c01b8df6bf03cef056040254208408588130c2086384f163b9c18f401750f659812870cfe73e8c249bd6ed9b1903033e13bc7410d691a7e06043cdb08b7131ae66a73cdf146aa71739609d0f7ed82813086b098ed3d7b15a864cbc33767dd5723576ad317335e698a1d4cc71b11834bbc5dc5eddb03f5de078a6ca155234a46e344e50f114d7bc6154731886195f8eec782d516cb8c80ea3850f4c02e031a313678ae4d02a5a6a027851af025a9ee0b6809183478704196472b04d539061e7b611547cb879b016c9c295c61372ccaca2ae0082a7eec0614190875499161a37e80082c76908386e5c46e2dcf9a24c9037c2050f550289d1a40812be56c81865d8b0815131e49669a2e2872b8cce1d1a36d69f2d8450a80fc0612493834e922a49828029c9d824d94136e708a3acc41f7d521d2f8648a64784f0cb19b06dd187a93581f0f0e42f925891356994240749244716e74a748f720ddc63921e788a00e24f3e95a4e650fe4949b2fc91ac49233892880e98922c0e23599417f9173bdcc88b6450b2268d90002289644dd6e68f3e09c99d0fb5e74b1354826684807cbec86c369bcdc687adc766b36db1bd546c480cc63d48f6c22e9bcd66b3d96c369bcd6d59d884b00520c55f8895a26e6fc4ac69b251c95b57704baf715988cfbf97d248d958635ddb2ab93fafdeff31fa0d2f1bb654f3d14b26ac5ad8752d2db3ab1bf67b369ac5e27bbb77a8d1e740ff8fdfd15fba620fa516d6992c735cd7d9f6bc282b04f2f8d225da229558b3f3b4c6898c18a4366a22ba0806165418ba80029f998cc56a411e6e080e02a2f9d324f091b33931a5b5d66bbbae8b0ddf85825eb9c7756b95eec51738662f5a6468ffc43c421159a6f9ccb0541d72c0b5d8e202af5a6370ab8bc8c3c3839bd4acc2a1cea7b4d697abebacbd978990170461cfcbd590e2ae7130b3f0b3487b3e492985c184122414e933cb3c238c2299fcecce31524a73a431b60b05f97c61bf7e672f1f1e027ea85678c5b2b0d56a7557adb5d2be476b1b625607920093b559be6bbbfb7a598c25845403874d7b02eb451f2442e783e82bb76bd20857915898201134138826a667a2f4db835ee96aff1c99a3fed059db714ada701d908facc7756bb51cf0344902c712c528a17ffff79386f9d7ca37b345a3c8c12abd69fd2cbba1f5aa28dd15342304e4e3a9562a6f36a3d182823e95923e543c44dde819ad2c6659951bb8594e907c69e5e09363e4b8cede5b2dee5e455e13d102e3154bc5f2ae65752cae52d694ac6791a012c2697c45d9f8d96cc40dfe9aad6db7345b8b71c60f13003e813016b361661b70fee083c9f2f29327589555b3bb8afa54438eac3db271f9823a314b361f5a706989a3219ba1d8bc525de86de020c88cf1db597699a5c304b81fdc30fdf365836d0076e021449c1db87c0103531183c689284cd31bd80d27ee3cf14669092a575e70890c6d2c95d1464e9b2aca34b156a2b9b2882725c3bef99942a8b198a58d1c3847164e559c41424d9b965270ac64e1c6985fae86118609619a20209d307691bdda756b0850b8fc9cecf30a8593b18fcd2800c3ce5e18cf4a080202928351982d01df40a923e9f0a96b43494645411e939d91cd91c964b22e5d8068b43960ba9029e2aa1418bc2bb8af10d15982c907c849e809428d91c7501e4740a62234ecfd08bb74edaa813dd62b309885d99437a115708b31c648f3a163d504a612affbfdbf105a7cf155dd7b2f8eb5dff8d7e57defa7cf387b424e75adf46d59c133fecbdbaa32a37fab372e2f6c607eaf1c318d7e2b38439c0da0835266ae72b7c543075bf8be86acbd9df554f2e6afbd7c5f95574f54535f5639fdfadeb08a5556ec1523fafe060fa601424ade3370865242263a858b2a1f5a378ce193147c6272bbf9518641107a90945b7c80dafaa8f63411086c894530064312eea257ad9189eba201306371ddd221098fc1c13e314aa95b219567b4a0fe8131df6fc905ae2203578c636c5651c80cc083f9ce909152f2fbfff533ad975298046f412fc8049d5e79460b0a226488539a87bc84e020f9ce3be763176acc41bc0499fd4b7ed0a9b7a35a66fe886aa8968aadb8248cee22f0539da79f2a3eec97e506ff0bfe631620b861d7fc0f30029bf9f047c4fd1a87bca4cb649d544f2b282cc5e266f4a38c33c63cc4c22acfc682e45c8350d7e491adb77f5b61b00b47c1a2054a092928a698dcc14712204c77aa402738416d686be4344b62d79a4b1bb98b270719e3e5fa02f368d18a6160a70a78a4a5679d98d78e160a690cdf930d635f80a3a308670d9585d00371b248dcd16413180273f1e867bc5d5378943f8e8a3a9cc12f077042babc3d17f5cc4472065da2091c719b2ae70305476d9c5a39cee33a6f4e57071883f6f09db59ebd09f8703b56d1f5bc3c3c5bbdc0d7f33c4f85a4497539379e4ae5a95648c4acbc15945c3d3e03bfeae53f9133a62a974c8b98229223c6290d16a92e5c3ea4a91d88d2e880c7179525cbc7819a79ce39e77cf9b47b8e0a2784b0390efaac815b4de0ef2a775534f8543393122214abba0464616d13349a4f13476bec274b8667244ce65d3b43018ad33ce4616c43e82aad74c208996ee49462fd97d13d23c121bbf6da2abb873053cad5fc7994afe6af4e9b6d763a6a3ba1dd1a69acd2bf3d3e3319af4cc666a673565a6b95f7a3ae4c9b26e148638c31d2a6947e9c7acffeffffef6d5b834e9720d69813660e2e39c3d56ab52aa301d0114c19908e39ea10c01d97b0a127503a3a12d449ad138629c5f6259d74ca8e74243c02299d92fe9cb19e2202e388172b9100f64b4409c9df235347e43d329b57498cde247514a9f57a037097481c42bebb4afe0862af77c4bdaa37de45a2ba44b650c276b2fdbbff5fd17bffcf5b7a18bf3c36949f732ed92ea394dd7809224b7e1ca19e3b9724cecaa5ecd657026b56cfb77b8cad829c07fd5b7dfe0a66504a2c8a0a1350f09fd03ff10bb38d303bbcf23569bd95d666b977b87a7ef79611f42532545a5b30c4ff95729293d3b9292107e547212127a398534e29e9ccdc9cd3eb94144239ac942f57d73956687343fa347727ddeb94100aa793ce8985f4122314522399522ed6d4ab9c310975f434260d397dac0029830e141c504f4f5346bc01051649766618dbbfeedbb9bb65431c06c7247054980112464011f8037bde08190ca5cc74c2ccf4ade48e8e7cc8a965523368eda3d64a393ab8ca7195764f9dad955e3aeead2e3daf9e153854947ab456baf26385b574ff37abb5468bc70b0fa5b4568a24b3cc92662a23004db66edb711276312ef63f9bbabf32c6be870d8b0d2731bd6dcdacb3c1b1d13a6b73036ff67ab6386cb2a5f47fd9f3e5a4d476f4c5562b7ee1b67543b40a0dc6f86750c9cdff7605de9e062427e79e65b3885daf5e22ff3fc66f8a0bb0a1f412f07a010105095529df0c95b9467001c7fdcc87765d745cae21ae0f464a834b5c289451400a5c99a21842900c21a1993b1512a2af267cb1abc2fa14db8b98a464a25039ce5ae7ec19ab35d69adf4008bbb5d6871005efaefd639c1f2bf0a3043a7000fc99a28005fa370a15654acddab52c9bfded68327b74dab4c2ca1054c043544629c1844be594d96948c2dc2661129367fa209ac79a67caa48f22864f35d6b39ac15269500d2a75c982687e200a2eb07d41082accae74d2581aacd41fa5b44a1ffab2569c619f004c5c4aef91f9d05a6a7830fa1ec20aa211dd5d57cd06294faced2e725e9fca3925bd0434c9afce5ddb43ec6edb6b40155cf30163e0ebb3dbeb9abe19248adc55c2a8b53538d0cee56721de279d8ddfb109cd867d06f8d900a39ce5d543ed1c2ac635c66fb7a346c5e52c51c4999103440be968c80e28284b515fa26d58d77d3b8e89d3fddf899f3204b90e3e7ffc08df70f26160202918cf6c2927b9e79c8b5c73f0aadae77d6835debeb18eac12a9a93fe2c04c2440440c24758e1cb963f62686a9c83e45e20044de08792576821461bd2c3a8c648a5e11a922468c3309dd94b4dd5ca45eb913bc3e06d0eb5a3a1826263573ae8282309652b20884dd1cf744632fc12938d51d6ff1664726eba22e3263a6d6a0a9a0d98ccedc3d6791315c2e1a8d52da522de50e25a5d3bd7bf2d93d29bd5e0f011a69933635ff76ecd819d2450860f1f6a07505c39cf88c91e04ef4de69978c0510cafc42179c5428c576993f64f83a167b9880b3723ac155d6ffe7dedde974de455bc7da2e720ded5475c79630ba5f09a2a5f06332ca97df58be8a4785b5fc1d8a913a529e5bd55bcd688b7f317d3139d6309dd4bd6b36c0c0c24c0625ca8b6922a3246aa7f63916bde71d9d7e9136765e5aaf026840212161243cc7680ffcc7153f281d89444bab35066351a5a0a95a3fd550d53d2d6a8573ae709203e7873061c4d104debc1a9594d67cdb514747592a4413e6c9d0f2a6ecb4ee601e355e207d5357d6f493e7845482e77aab55acc5d00c7e0842ae3c37b8a17a4aa9e7922376229d19fcd0039c65f00310f0e7fbbb2505d1a2200ff6e171d9708508d9e549c79950f3acb5f2deebddfbb70e1adfbd575e59270c4ca5cdf2fe7b3466adb5760cf531f4a3f47ade6b88907f0d890989e5d9a5dda04b5719bbe68a8b9d55f3d82dfeb31606bf62ec7999c6ffecba3786e9c73ccff3bc96aace132d565ee1152b62d716550f54bed1a74f5f66dcba365298d314935412d4eda976234a2a62bae5a41913ed5b59dac083290f8f57c707eff3bccbf2a72bab526555be1fa394fed34c330059a5f2fc871d95e7d135583e7a3f4aef95d2b33b6d248914530a9851a8f4ac1dea700000080ae3750014108ac5c2d12c8a711486f29a3e24828a45d888474a8331311826c76014c650104841080810600042c00083186482270bb8598c9e06168b50d939bb0c272e092cf9330cd6cd8db01739f2906327ee21923b4dd79d5f0aae7220fa292a0e0587c48781e93d608b09aef57e3a9ef614bc5af29d8eee61ee62ffac5ff422917eb3d4d44c567410a2a31c454b9bde012fe921be86cd05b01fd8a0553dace07dd6fba4ab8e4779751c6f6c92dbcbf1cacf3ea8dda8f59cf4727a57c1459d5c85b27c378c1d0935f73104ff3b3635bec20b462568c014401b17da521324cc1f8644bbb91f195c2caed4325b3a4f8c850b2054435193f6d540a17e4091b7985278d9ad203a6be9762169f30cbcd4b33c358ce094085fbbd9dd63eeb27a1e89d89d5eff960a53b1b8180bdb3506f9cefda449c6fd8533eca198f43d1d34c3da5fdc4ac87d763b5fc4ba802f887f48e21dd82136d433f8c1c175baa472b0cffb62775aa8a082401a844025e1d9e661eab0683f6a534a430bd47f376842831687edb4965aec0e717e70886bcd5715836bb7cf9b420f85104a40a2989ee91ec83cc4a46c1171712f8d234aed2386c418cf6c8e44adc7ea8201cc37919155d34e14f7d7d6de9c40c37299ba53eaa9b65809e9634a328f69b08943fba1e95e628fbf12fb77cc48faa1ec6b14f48ba3942f7bfb28193db465eae8cd2e2762f53ec76207b0de024c8d494e05743dc359c4b32e83fe5ce3dc35b1deef370fdfbb6aba8866361edee449fbeaf3b61d5251c434c76b7aa527c052d41d8e824ed5a6f309741f090755a124b049417e7f30c5eb23b471d1487384e1326cb672647304254963629e04a34b0b995781c9ad8e2d014ce919ea96786d6a4ae0052785d804cc009663624b7c7fc986fcd80c90bb73ca724c4b0edcbc2194283a776d61cc2eba82dad907fb3914687f016407c9ed69fdca5b10c02bd7185ec36ab1049b33d84b243b55c65d1f065dcd31890d698d3b44c1cac30ac169fc6d752fafae70171c1498cab8261dcbc695d3a24fa1f31de11cbc0ad07833e49f79fc139ec44b5d8755f7956d71ff1dda46beba99766c153895737ca84a0fa9e240d9cdfcd12151969838974a7a0d6b7083a11335e77cced312e3d854522e175869c2cb2e71ee275aa9d2d4c9c1b973f4a4c95e04295d1e3e58bf32fe94f2dc554dd5db0c7cadc3c1c4cbec57165c36cb4fe82a4490af9a7275acaa8e30fe3253da27c78462638ca52c553acd053f4fd5537b9978b10d97542d5e2b856935db8aba3b7cbe287b7a8314e66fa8f664e0125ac306eb7b716a637a7f1536aeb0838078177cffd2b4dbbc8b415e995bef6207d04220a1c31516e6662be720d8884de1179f007917b1fd29fb62aa6c56a3e0b9db9a8e014f3116c2cea6a629a64f090acdc58dd5278949f25791bae037cd0dbc46fb392fde52541642d825cf2beaf2df01442ce28603710b1e9323d885b4829b1004c7625fc426529ab1378064023d0895c049410acf73e27713236bdd3c667d200c8d829a55c32ac6ccc13f39d1a8c31241e2198eace9dfdb926265fe97b9b0051edb65b32e64b8a1bb3d650ad0eb5638df7787c875144f9d01ef2514835a3225b6b32bd1091b513e792e77a10d7506d6dc1e8636a48418a0855c1e294115eef4497c3581b3f0ea16dae0596285847fe8e5e8ac4a44219e41f69eb76a1848a03f8a01bdb2a6b3dc1347fdca2abb97db5eaedad281a6eaea97076deee20978c92db84378dee005b4071d44010cf1f0588cb677c53310c50eeb8436a8484ee1392c6e192eb956300a4b7b2db1c51ba6519a318402d2afe3f2c8757008e12e3ddabc300824413042c7f57f2ab25f7361f5f83d83a83902c92b441a3e5b16dbe185cf1e8d74edd6c5d289a72b6c726c8e07c77690c95b8b70dee42dfbd788b0a42d8a0e5d0308907532d8c0dc72f26f44dc44e40043707e11f1cba2272277906db731b2dec5917173e49d462ac9b6cc219c427bd1d7d9b331d59c3ac6ca0caae346f2ff5bb5c86c22a88af89003b59bec781981a835b62f4e51f0d433b85776e6e3721854752ca2c6297a5156a95416fddeb0aa01cdd0565f307e03059b320ad656c48c0a1c78b382df8527f139e271fece64a49549d0a305634c7cc84ec2163525db73d1fcb3de56a30145dd378644ff61324fe1054c94bf73812ca4ee23f9ce000a3016de0f707602fdc8a7472b67cfae199d7d027267d07e3e2beafda6f4df99b3839f6214405fc0a5f12b56188503cc1c8d41290f127e2bfa789880c831741fa59267aa2f6acf58b87085802655843b9dec4b41c41e46e93fac4ff6f98efb1fc6431be5f6c82e1b4df4c8254c954bd2f8828abf48b6bc47541048fa7e3cbf59e38e410779a79f5cce0680d78a72c1352e85120a47d408e6964fea42b254c685a7a3ae14a282e6cda71360ab8e422c5c201a14c1822eae5ab6ed354e3b1ad1ccc61b15e12641eb3cb42dd32db4a96ee538abf81bc1818b03d4fa906fbe7489eb4d03ceda9d2e82f78930fffb40c4fd971bee348b1b75ba5aa397fcce402d78ba9b5e3314ee725848cb42ceddbf7142aa5a410ff9546106a986f2fb0276f9c3d0e89e3fce408afe509bd36a0186752f770f4470752465ee4f1d3396830dea7014c7d027478f4ddd2b044ffc5d9ea43db4402b1923588cccf86c1ed733827a9b5d72797505f19e3b9dbe6987001bd073e7c4d0f9c952f144cf523e96fa3d94f8704a90e474cc31c0f018b13ad28944a7f7944dc29b9a75c40e2f82d5912e62ad8e141ecad1be0ea9f15e4a4f1dc79fc32c2c04b4e84e89a2f8731e5476d14488274e1f655876c897276a61542cc5e66c68814a1a85d00e42866d08f753eb15815e83161a15b4d2d3a3aea83dca951930074f719fcda0e801875d34f677244b0551a04bdad6566e839db12ff804b4829b5bbb98634c36be8116e0d8205f6cb5a3ce46962d7c33c8099d80710b9155f1a60dc282fdebbeecd4f4d08bb977334ce664c67c0a0c2536502c25c315088e2f7ac78836374a735152d4aabf42d22e67b5ac6f734b979fbeef87a3106ed181fc92923c96b482c52257691a8ffbbf0ad12345d1dfc51f25130336f7f6b8bb0d6b280bf729982420522f3a0672f3119242610983de80224021540fb2ccd470f8e4feac630cb18db7f94ea2f85fb60433b2248f363129a9285a22cc544608a7346b1ef3789301628a55f6fec28692712a40165a7a12cbd253861d1bcda3331eaf3920a9b06815cd7200af65b18eaaa5c3dc1aead3b6a19f4031b4bc089896a04ffca53df98d4399137ab0e826a21e4591918fe4a6510fc4352cc05bbd386a0811b548701ce2c72bcc671fb2616a6d6552799783ded36244cffba04d804f8dbdec0118454cbfa74da0ac91ed847a5ae226f7dcff4cc9d3a5cb4b6da1126e31f98ecee4e5eef3a81a128caa80b89a07e0e2e7e0c6c28ce34bc067b4c1f96eb7cf82ee240230a3bad1524ac3b8c80f69ab0a9da0bc4e36d4b2bfe7cddd3918456ddd1aeee1d1fe10dc14a34c99a760af6a3396793908b99e79a8e98465f676c17607f8dcadd3c8fd89004a95aea2c800e8b86daa18064552736a216e7476d56b08187cf7aab581b958d1cf5f0b092bec43559887f3c34e729793b95038e34578f7ffe8e200b1fb2273a5068761c9b227351c0eb549ae469cd1938c3b5fd7a01adc9c5d3ac69482a74d519802742fc167746c14ec945ff5870dcc7c3588cd4db8367e838486eb732abdc63e66907e17c455001b0a270b197ba11fa0b587a0b12082258457bd8a566c7d3e5b9ca33ca06eda0aca97ab1a84af66d1abddf0e5800aa71e4300ee416d77a55fa1a9364e1097ad5a55e44e22626e704f0c55e9d2586da935640c4d9005e1d1736c967e74c99000fa3e07226c2db95c5e087422449e9673cac652cc29f43903a2a64a5f54cb7b62f8cb87530fe44f2d37183aa572a7f7f9e0c0b2d8894f04f6fff8e568afe3c8e391d17ceb71ac3dca65a3725b580204f98f8c9792b7717aff8658300cfefd9b76594be0ebb0f5f9529698dc588c0cbf6ccc9c2bb8942dca00349344eda43971aec7318d8256fe61e7fc32eef3acf0a948aef3468880437f8540b28190038fc3069fefd3367813c95e87939f5544ebbef5131e72e77616cb7933cf173392b368f1979eb8e536009605580978be4d64ebd4ca34c5a93dab206edbdb2fd16278588aaa89cdab42a659bf51fa4408e0fe6ac0c76e3bf266a853c1a974c0c8d0d76342300ea3eaddfd66c41dcf2fbc65bd6bfa2753ba6295710d7251f8f081aa530481456281c068236efdfe64df63b7273f37b9514cdb91380d8ed901c40c51098dc3a4094b474536649e5f736755b2e47b341028ca5d61ab204d38299d8cf711bff48e273a469b57d3d9e4abc7587e30597348e321849f6e6839a1b17891094f2d099037d2f1e128f7668e65757ee68583b33914bbf783bf79b6f6aefc73dcc81ee51493ac78f4b8570bca5aef09200d16e9f64130bd5fc11e28b2dee3b63b54c2e078dca0310d3e0530494a5d1a7a1894c0dc4e522f8e39f7ec6d3a677c245e56fcf50d0b4135e13fc6a654f2bb4759a5ce8eaa00da59176e4ef8a85cd38ac558f49bf5847e30f1e1c3e8565b1343100b419dd7bd6b5f92d7988e0405f246f74380af2a6661a3909135e493c213198988456f3693f8b343d93bee7aa9b2c98b8d878ad1e73e891aa75d59c896392bc3720c43e638a8b50d149e77dcd49f361a924e5b3025b323a5a70c2d2b1f31d07d5d1e16139c999daa9b01b29aad475e7d68c62eeb02f984fc0a52ea4cc30ad9647c6724435438448fe04552fce528dfec17f63d4fc701b00f679b24bf679f242a60c5d77011ec3a23bc0c36c1ff77f7b1943b19e3c5bc4991b125aad2b86ebe7b5b0499f32627b69540482a2b014eb8d92b161f778b0eb1d6cb1e08a7816cc1d301309b7c578db4153b8f6d41e0ce9c7c7117f2322c6963a80bf76808fb978bff911d189f536bae00843c52d7b7480208632d319ae2df52e181f466b6aba91ad9884a7c6334f41773349277c46e8147d7199fd1c95c8cbfde2a1c1c7ba3479062d3410adde077540fdaa2ab6ea2dff587161b7eba5f463779051a05c596f1a02a17d324ec78e8d584529bed288a08e197a68dc8adfc1d611e4504a50d5b73f36d66fd87fe8ca03911ce307c11b9dd2bfca566a637308c7f7e6f518bd9f77c68fd5ea0fd1a5e0433614def3b57a861e9b1d4ad56eee350de61ab948fe37188f28f8794de720b2186c2d453772d56bccf37de7b2a13b72002a301f3edc2a6c98bddc02008390b5e3e5210e288608f2a1ff3e1481d1c679291dce51542faa6f350334ec0b7974dd046190732b3c49f1e9f142f569efe59b788939c88588775d03d3018e5929a588e1de9bb768cbf0cafe40a0b304c5d1b77ddbbe1e9dd87fa78b875278bba456dd94ddf328622d541a6ca00952a1f40e6e8a649d61be828e83d4ad0b87601c92e4546922a19e3302166b0d17e400842c9c86453576cb36e375292a26cfb3dd0128b41e93d90c30289db714f45ef5f4464a7c2edeffed829e4da3dbf9e271000bc5a5d0a1e1481285aae1f6045910b650a7c9fc31f8bb959d9639cbe009629022d72cdf03fd02687b38855d2db4ddaf55f8551753c217ae7952aba357235bce90549a85760a98c7ac837fe2f27ff01fc8936a911df3a661becc24fe122eb7cbeaa5d46b8a9fc21c56159023e6d90b53bcf4cfd39b6f0c8389bb9c7799b9fc0608f6d3a1748ebed501de636386cbaa293eb588cfe5e069a556f276bbded2817c8ecda9cf87306c647c114671dcfe534267f01e9ab4f8d6ea2cb03ed298228d160dae3e51222c489d24dc6e423f5403a6efcdf354d1181b99c2ee9c09a7a4e11f0f630b10e893fc5f0f6613801f00b162c31dca56587d1b6752f58d2823e05e0ac9e398c9a0cbdc1f036fc9406b78163c90ca1c675e708793d09551a101bdd9f1611023a4010fccc73813d39e6340fc9e96d9ac5be18fda41035181b9c0b28316930483e661218599d078b5847b0d23a76bbbc9e84a9bc340a3634ef224a481f0c928f5902bbe5195819efb48010318082e0e726b1b3dfcebe425f313f33a46c41b4c1ce6f7d5ef4ebb24545e19521974e7d6fe63e1bdd13fc3bcb4d3f8540930ddc7daf97df2b05cadd442e1c899aff34f4082ed5c26d28c368726ead8a65c1ece49892c419a463550f0b1613b3e99aa20d8e881012a6195052ae086c3a7f99614bda32d58d862a87eaa5e328c5862a4cb60bc2b027e4e74f1bd617998a430e6da82832533edc71d550ee49cd07b4de8fbfb255cf47019ebc7a672f2618f0d457fab4c955097096663470b9cfcf452975f4344289dce885a2e19e31dc86ea0523a06093583d9c28852bb75a0d3c3444706a531a2cbdcde1815f4ff5a88e4767155c23bbb792f418110e8778040e8c0a36c6ac7650ab6bad8cbe912688123f7ef94d4ec44406b1507f84c904c6d2d400ad54d30cf06fd6b101b0f3b08a194c4b6dd8bbaba428823878ad69eac9eed6def29c5f70a12e9e56fa8a38ad80f2df7ebbc0ecd985b7553d32cabea5be864e9c481341c0004a1cc3235ecd0ce3bdc0872531c6e051d97c3c553dd4792f97ba328e995968ea63e7f5a4b962a8fb0592e6ac531adca8985779209cec90fa07f14e0699ffcdd83a1caa96b6a75d69fa0c5da884152d6b31aca5a1d6089462d96a1cc60aa09aa99e101df57f775b6aa9699c33af8af9f41de9e98d611f8290b69f681d96c90a674616cee44bb7d0607043b817dfcff1c8359f86bb44b9f205c5704343d496d99d8796b4b14707a6959bf0550ac477b43104fc1b9493e0fe8826ccec21ee7f97caf29aa905b80223e7756cda844792ccd23c716205260b19e7212bf20b68e2ab65a44e3d2ce34a99d1d4340a25eadec55f8f922c79fc59049b781a5ca8bcfae1810529f1dd184bf68bc080ecedfdc21275200d6a02ab7462af8dafa2b1a35334ac5cbefe6518b24471378594d9d0831934cf10b56d101705ab7604771210bed5fdf7cbe8a6603a58103e6e3971ec698817511cb1be98a2d0662b008b89a38b05cec7ecba6faeb46e6693f3346d9383209721ebea385b01abc7e32ac5c152ec82af895b21b07bcd49bf0d16af507f18ee0d9684c47d06965b36f94c66c9dfc864835f1a6050cf73fc06683603406080b250314438b01d16b96212f6b28cb5b7f595913e827f01fc9f354dc0b5e2151e5329b9b357aa8ba54da88a88c77680769964cde4cf69e0eeb4fea12dcf90a3358909fa0d1bc53b1a8b5577af37d4bce2a2bed074481f3542cec2316ee6975425d8bc439fd003522d3a10f49c1a4ccd516b56accae1312a1ec279bb6084b381e5494ca9af707d00a3622012a5743604f26d8d82e44a2ce9c2f9f1cdcceed595b17ee58458c632cadde07f0853bae56e36c32ca13d9b910ed55c727718c8f04439dad9119cb63757c956d209cd58b5fc4dee54bc9d36801166fa2969c2e314974a0f1b6b3e53789d5d2baef42efd88c974155a316669a26ab75cb5740155d73d3f599452695d280f590637db8d24cb53ad621d553ed59400adfd45b64987eddb160b737cdf6299354faa128033573273b40c10c89b57f4b8fecd5cba82c3e633419dd0c41c50110dce88fc4cefe25b1a750998e0779892569b285321f6a5df10e15128dd4481f02ad89340b94959b4f4442a5d9182418f819eddccf4841d92c0b1acda8743cfbb0ed6b889fd9400539a1edcbe01d21f2342b0600a3268caa1a5e7000a2129c3dda400004da405ab25503e73a2ee5c2db3852395123c1292bedc7bb44c91189d79284239bb0e4090293817b35242c4b098fd509cadb4b1c828b7a0672a156a2fdbb542013284f30caca2ea00713d6d709fda9c44b70916f08638cb564cf4ee2a3c0756652d5f155829ebce3fef780b4325fd7401823703e2c5d43cdde40a24bef03bc423fc429d82d4875638bada3210b2782139075b71594e8a3208c3a8f3a93fd796b72853b1abb8230f43a33d3282933c2f855b62168de13e72bb292c673d0d9f6f939eeb172e4860b8e44acfd1917dd27218a4ef1edc559115a07dfb2017053a88f6f9b857cb5fdef50c746183bedd117311b63639ddb0bb6e19846f6137ddbc3a44e0185339d872cf1f7e038ed74013dd01f7df80e7ad9b45850ecb29b21a7b02819e1b307adc8eb1db8a8ff41c2359f02b2749ade82cfed5af827d1e26de5a3771ac98950745a2587b83538df39f02f035b4fa245c4f972e75a5919ba349877b60d8ad325d154ee46e053eb004fcef365b72122788a3cd90990450b22cbecfbd3e69950a104534dccb1a7df316c7df67d2c9a845a7ab6786f913fd10f1736aff90f03df1a3a460065bc5a4802e9a8d6609ba4c7bcaac20136007a89974d8bd0b741edaf8ec1e0424ef26ac12588f4ec084489891ff76764eb3156484acc64bd21bc813cb9a9e5e0244d912f5ee7cbb71be51b4806d985f398e160e09fa40997414b958a0db1cfa0e8a32e316355dbd9d37bd0e6d29525e87ae0ba4ea5d409f5b3d7dab62c2e8233b477157af37540a901e71bb0e7755e1b5edff048a32cea9b130c73fae074b15d753b3b15525fb079c87690d0103e32da432f33f2096be47c443bfa1217a914fabb7a2def1b0404fd13d43391151170b8e9028f558909823eef503aa732fd3aa15b7d73e1bd2e22f4060861687f57e876da3fab04a852c1106816f5b2d4aedefbffb572cf7e0999b296cccc2e49973635ad2c5d505fd01a9bb84bad60c83233926eb4638f12b8a9b974715e83b4798786f055069158f1c6f0f4f02ed30da5378f184b6724cbdf660187a546cde8423969644eaa8595eced32d2db7613da1624c513fb1775776852c914d58e02cba404d98c903631f23f8644e6817b2c4c2380a4bcc8183d48f18b8f17c2f57f2ee13283dbc1f86fbb60e07e4342a10d5015d0e0f5e8eb8c008066d428d9f989830659440bdf2c2c61563b57f6ccd8c658df7b429ff845f6499fc7122fcd6149c88699a813295136e55dddfb74b1259094b6f36a666cb68f8c758809d04a5b9480b2ca3c90dcb4b834430b1bdfd2932b2ac4ab7504e131659c601cc419b1f855fc4eb34a9d38ee5745840371ad7d6bf12a212e15704fe8345fc2d96cac65365385afccfeffca0e1752bfa5296cdf4855a132cc78d80e35730276ebdf5b3ecea9e075388db8cffe95eaf7a5f6a14d5029ebcefea3532da2f45d9031e76027d2da09d7ae60a78630c74e7ead37e879834b3379e627e695dc61807d2ead77aa003421dda20fbfc018a16c0e13b21a1a5e93b14453febaac6bfe8660f4d943d2d62eb591f45cea2baae761d49fadf947b240921442d4b034359648a9223f37134f67f3dcae7033af07635d78d35de69ac2b732c4a505f87cc06f1aca6157765178e6e30d7067c936ba75930a41465a472e4494830fa28d91df7d80b2f08ecf04c5d9373c872a61f5037bfa2cbaf81e5e23f8a044cd70bd9f7ab37621c8e0a8170590821324c3cdbc6bde37bd35fd23b3e64110dbf0306eef6b5100b60f8eae9cb93d56f1bf309767b0f2b689b44179ad46260a52f9591cdac74a6a687f50da50ce13dd6ae6123d246e0dec608ae766abeea724df15cc525a8374c9bc62393baabc6e4dd01bb28e3c16238c2553a5acc7bd5aace15547f624565155dd596c0526ec3611f059d601480a8a641da74c8543505a3aa4005545d0bbe3a95162a3e26326554d356e491fc6f901e4dd5f3274b32ab270d312426542a7d791e0a04967dc8e7613437024a5d711c07bf8d05c5c78f3ffc5c0c8a69191fdb04e92480a1b1ab85bbe446b9c487aa45058b556280d34c23347f0e630e3dda95e72de754317396d8e44e2f8af92f368af9891e376a87bd6466a2b49a5184ca78f977f5d7e3ddf934f164dac02fd1151ca13925fcdabd677a0a0bf847902cba815fc00a43872b35abaffc593bdcaf03a8cb2d01c663809909d1141becd83bbdceee117dd336db9050da2f0b4169c07598d86a5428b2033dd699d086ae78ff266583aa28b3f1c083a4532db7578b22ece8d70836b2f619affe6d0188e8f0e040b75cd3f116aad0b158fc662cbd697b1f4e5b492fc09d2603863a4a2cfe2f4ed931cb4d4112ed1f411085594d47a13d8bc81028bcd371b5ba98818431344426e6388c3b32698745459d37788720034a704f6b346d41008a89e0701c233916956009d69568636a49e9aa52be1154e23a1636816c6a92f27bebdca937872d180ba20db8fae7c08c00edb17b61a3c0788b6286b4fa514cf3c5ed370496593be1fdfab9d8edc7bff56ef8ab7ac7fa036806996c960afb8697e4764124e7d03207541ff2ff646aa925837385b46ae726f2c3e5bbfc9e9eb563eb7334d32161eaf0cf485e96f20394ebe11e4f5e3a2a736e0c7a83fa5b658e37453992a514d36d54f2429c55f5bcb59fecad9638566fc8838ee44dbd8e82d022d94f089a201f94ffbe0e7e3298f5d544db2a51020ad815e1d683d725419cfbf49c16b03705b84f65ff206848fe30ee8cfbc1b1b387ccd3bf16381c7a26c876b8c00229c9d4f5dc47cd274a9685d26a65b64e19d75f93c94f4503f7170b9ce5a1941a9b2b4393218230d2ee22433152688b54275a0276fca86e7d3102232f1c0e57facdc0c90411238bc51f22461402b7dfe211743983727dc21dfb85022473d3aa42e24229df9c23c16569f8792a3bd544e939c3262785565f77fa02632efffd808dfb81bc4c70732de1675d72c0570d3b07c46044f6c934545f4f90c1db039ff343ff004cdfd7d486566ef46a7a72f70c9847cf484fdd785e191586f321806ed1cce7dc2cdd1c898f5ad53bb6cc25d64ffa0c9b3d3e96e8f863744f126dc3413d0a3aa236846a56209dd93d58ba057333511bc77fd025cd1ec01c616c9dc1c5e81d301db9b03ef359cef46cbb3319d030fc3456259d076e3aec660c6df0592f31168a732ce28c93228a22a03562f96483197dc6d3a65346f9e3d8fb540a916cb1011ed2863f7b35fa916c907f42bdfb01a65a66f390377743daccd0445ecaa200fb299021bb84cac8a2ffa7c5182ecdd8df14883f77e71feb7812cdbaf6633731fa4e63a5aab3d3dac7375bf4296be050c4c8f323bd87f51ab437763b4a0f90612bd7104bc04fcd00dd1cbab0c23258d556d12dbf528d1e3ea182dca9d401703f2b631bd29e70482ae7908e9972af582b0a1e4d5f09fb54006a2e2f964199e861965320b3278d094d9795f816f95ffa42f4ce14efc73f5a8ff89754fc4ade824514539b1c8c23d65c8e8756347e001ce2957f5c7d94610cc52caeb1214924ebb3ff09b944ba0b9a400c9daff30da0a2f163994eca6d9350b42a0a68cb24a2dbcd81b6ada2cbb0a468e1173802b28e2cc2a9323d57b7991334016c2a49a86ca0d5d30ff1aeb4d76e29710ad5637075736cecbf951f05a321c4121f5ea3bcc150d54ad099d8b28f044a868748a0b9e951f44f79412c9e1ce4d14dfed0cda6fcb4c43674de996bb9f91a2ad0d649634c44311e4b84ae17007212c71d5e832beed5a0590052804c361d364052b3f3a89bb898d4ff2b1204d930db8b7fb96222255b0871cee23efd9b7b5ffa419d39e9d6e13abdebd79737e9e78b144b3ec82a27c52d705d818e3f97cdf10f8aba71716f4cbab480c497b662542782d8d52107b6558f8d030b8119ddd142864ac081a6f328c5257e6ac7554697ba5bfab09cf41277042ac90fb015fe9dd607779688031da326bbf3071fba8a0868bac559ef08ee133d5eaa2e6d482c631d1163a987f52d5ccd20badbfe0dd544165fe08370b9a62742ea0896cb8d37a2c341472974c1e34217de66574c0080f8e50bd3bf76aeae3a25da103a65d7df169fda818adb0e86b75a0b94f0944edf3a285cd7216efed496af4e986eb0c9a12cb95ef5731ded7746eca8c22d61c6de7f3800e51f5fd26c1a578164489c7fd71d281b6198fb9377b6e44d079de9db3e51fe8ef6f791269ae51fe88d45416f9daaa3f1fa5c731accf2a620eb517e3d3f3a6478b3394ec2dcabeca419b2ccdf5fea8b84765d4a847c19199730f5e0831e148512b817d074bcfcffbba3a1ac0f30fd2d9bb6c803d12ec69ab4535329f1cecbc9fbe5f8745d05f0b2f94c309ec3477ea5220432d8c77576421f0e6b47c0953c1374258f9a5c8b3be935ab1d7087831daa00c3fb95b6b59b6e74737d5630f34669443226bbb308724e27e148aec4eb5ac5052c98471e487e5e1de2816c10edb9c2735f90195ae4886e1f35567058d0f86b4c4f47b6e6e3b4330afefed53e3164545c11e22f99d5ae68f5ec5f8b38b6199de4daaf81c20c27d0b3e701c1f08083afbc961ac74882a826ab3f9586d0194eb2cf3bd8b4949782e15a46921b67a7356c77094579e59ed5a4eb0ed7dc749595c2c4b132145de56e2df629eb1b2e0e549184a0651ccd658e2fb034e174a370c2808404b69e261487aa4f5b1316011804408b3f878803f69c501f9977c1d2d50dec9a1f5c30c049416c56781f0b23429205fa0e47c674fc73380ad7e3be4ad46467d021180d32194e9fd40b89137bf0b478821a608f2b363de2407e983e7591d9a1a4aabc383c6156ec9b073ba7bd690345715c51d126ef7de8e46b8845f4a41f54cc216b44d9567acb68e8dfc0d394fb195ae686b4d2149c059ccf9dc616f06d79f4c126c2c4580a21e06a5f040714289dda5cf698ba65e49edb9c4a6dbac8881665c7f2de946b00c98584b093c5e77417663c07ac33bec142bcde588bb0336f96bc8191c5fe41e111c21805312c9eb80b2c1c45d24bf3450614d524b40a673b511e1289ee9a470b8024a6cf5bab0fbaa1ccb6b229122affb141523ad283b493f475b34a38dca6037bb354d3eca5bb7d5bea5f2ae6432076941107a57fbdaa8b7e3c82cec04371136930740c428056362c570a3899dacb29b14714a937b04fb13f7bcfbab810c3da802bd7b54a6cc9252c1d912b8a72752ffac37310179fb91ccfc8d310d51e3e324b162c074a1a0ef4f0df75ae66902faacadaf852ee7fd3df4de7202affb440040f66a325048fd1183b0dcdbe83b272ef8575b913e82c66a074cd98dac30cf2dc306a7324a54d23cbe08f559f135439ad4727ed060c54cde7ec51772f0c47d36027214acf4eb465c91692c864e1eb342ca15c3839beeed6e7c4fb2b66668ddd1b7ad9c6cb8301cdf4830d693d78ef8d7537dc8076bdbaebf36caaf51731565b16c22549967afa8f4701b7b2f612a8832f1f1d4e1d9367c921cf66fdc6bb283cf28812e29d280d5b1092018f93e7afdc1449cdae6c84658d5180e8a4c5a18499a85d6e0df0ef0b5d74766c6413af190586262c030c4d1cc4ead426d618a87e3fec4c827f2d7044f3561e0fb70311572b42195818dfdd11f186bbe04c5b8cb58ada02dafc9f367ae850ffabb26fe333497f51309075a6a0c1b6f331bb44ce85aac1ad4caa9443ce0e174107cad34a21e5486068ea6056a1830d08226a88e935c50122a3b15ffc64e6a8096c8862ef7df758b00f204f36134fa00461dd9310bf77905ce56ab4a61f4fc0fd9de60463846a2c70b6d4a94ee9983272f156454a9f51c31ead7acfea663e9d153b115813ea1118cea9573ac6ac757557ee7a7ae2d546feb3ae0c9b45664b06a0cbf548802ea774f2d4a098fafc31f6ce109078470a74456c0e39a5975cbcf490e1a589a5dc449ca7620e87e53884b5596d9995329bfd6f16622ba0ae5c3b56df86e97c810993b63468e08c6decef9307d49c6150e5662c6e2bc7c3143f765e916c4e975c8ff662c08a16dbde10de017cd2c8dfb760a3535e3f5c7c28295e3f1c5ce1f5c3455047d1def138d2ae172b6e5ee2a1cd7d20f4d20ef93b0874d138927ba374b1637b7945b9edcb3cc8d8d472425f0af15931c34ab0be084fba9e6cb0f7b8ee78c117eb6d52ba2d94d250fa6bd1c744f507785995a1a036c9fa3054f0e05d8bb6f6f75f8ee944ee1c2768724e59d89e2d9a875deaabf4be284e7a35e78d6667193744fa8e99018b86756099ed1f23ae9e87bae00473f5cb5f3d3872406fed9bf2b0d47253061e1d40cbaac911b551af871868fd649b191c387f07fd38e0f01df846b50b92aed8d4e35cac9e18e4796bc5ca478d4bf39b17439fb654cd4647d21224c303c3c4f54e8799887361c365f02799c660dad4d7046d34b005a6b2a7d5faa4c1a3bd0f1a807f113a6993082f685564c8314d6016d54b8698ae4ee2ab7b8732ff41ddfc2b6c186e0acafd69b7be30ed2c8ae53110cc688414da946969eb39e980ce92569bfd8b63f319899f1e2f061cbcde68faef357efa018fb75e672a2bf48af16c15548d3e449b1de5bf41d808aad37e0ae5f0d209a043fb0691909fa37134f628ffad2a9cb1449a7f12491ed69874654b850e0ff287e9cf78d469f5956ece0bb01457df9592312456c765cb5e4d5a8fe8dca2efb6d06052b28a6f46eacbd3ae59b1f0c4c4d794c2a60bf95de39311ca014a24d1d2e16cfd19d7ddd46db39773cb018530d4286b6b8786a07a6729ba3dcdfa30d32c460234a96b20a8c5acc0822c74de2b545032c85d7961ca4264c7fd942e370e4857695be7de9ccc4444916ca26192f1b1e1b5d4290d0c8826b53b72adff72e546cf57564295faa06b14934376c1e4b5ee0ff27bbbf5fdb56d8fe95e5ad718aaac00e75c3abd589bc36dc3b08b88f8ac275c50da096e46051cf9d8e8c6b635832901ab6ba93c49d101ca19f6b5a9f9e8bbf7a3ab2c73d9a46b466e194559900fcaa16ad1498b8e92e74016a18f38d4218b0e1d8175268e70f7eed08c6d8f9ce30421cddecf65a30d0f8affcd5940bbe4db64d4a9c5c996c207b1ef4509ea9a0bcb2e2533ceb36057688c972144b391467e9979083e6b50d524cee26e4b7b817318808768781960c5f8b783f479749705b490812b5767d04a6267bf50e2a65529451974e30cc060750982f60911be87b9af3579556c96f44a3dbae34b80e117bd2c6adad866889d299d3663733108917fe43d2d00a0f2daeada48e7357c69575a8bd082669c0738566e3e29f2c84d2f69d150e4b36f8310984d92f407dc4482d45131352032676c3e09a5343564414ebf8a60cb9421ee28898bcf825d3fa7ba9d1b041d230d8bd88f642b4be76554bca50960297ff17f7b99e890e642241415754cfb38ea1c5c1c8150ec177ac5bbd4322e7d930bbc4c061a922412ad9d804d5c638dd238cb32f2782a6ef48a7d5fa43a172af19810051d7c27dc9dee0689ba030d0fcb1b289ac84cb3e8b917b81f79fe827780c526851943180ebbb6dc4f03a2652dabbf228c5fdcc6e69e0b9a09c5ee7d3442c8b91842ad90a95ba8ddc17d8b682a6b56d73431846cb6639fdd26dc923335fe910333c4d75b047eb19a7e820465dddcafc48eefe9ecc71afaba15c785027187f288cc46f3cbbb31a8acfd00cffc100c27d767527e75b38f6dc7c94d4a3c008b430b52d1eb6e7abaf97a707ee76d1622cf0e18f2dcb53cefd8238b090b3f101b2fa2e54f8db7bc51cba8b517b553d2e566cb74d9568405898607663ebe3d886d610ec8990d43a00e85e7c23b07c6acc93224df93b761fc274832b149d6c2c294539817bf0613a7dfca63fba498c66cb0a65fac2f39f36317d2498053f1b276729628905f3c047f0b291e84008147d4f0a851568efea99c8d02bc23716b296e9cf632c888f29fccceebe7df116e47d4d02524502b752b531f3c29d6ab477d01071d813755323cc1155303ab7d4a803ab8369bc9f53e989ba6b4813a49d747769e512eec11616e9c77026c1002757d276c4d0402ce45e039f4674e41645c663695b2fe814dcd69e8f42a1b87ad22b84dd731ca6981c5d7476cec3ab36ca7425b4ca25862948507ca0d1a481417c33dbe9b7fb951a1a9b31d9ddfb0c64d43672bbec5d28c051edc1d5caf557d4e1c91fd591f458dcd3b354d68c36fcc537c68c9e5e6ebdd28c3ee62e0dfd6d68fcce9da85ab6ab5c045a9227d8355095f15f1a93360b11fb24bb9d7dd8ecf787e9f2562f1c8e51cb555ae9523b4f72a70f8d40ffe33c96f6dc1d8770483a25fbf1165b562b97ebd2dc64b24db850d00aed6ac64c3a25563e9ed59e214f289d8e7666013d7210d71b08ea8ea37ff68a4b8997072640013292f3b6c76875740a016b6ce30bc08ce59fe6f056abdde4abfa16d54b54939560430932169d1275925df94d9d76300c8295faabf91b80e1db98f592d2ef34c3551d1eb3afe9aa174e1a10024494beb36adfbec91c263f9a6b7c9d627c07c1f98edaa85a5429acfe876f7312659a49ed4009e6e785f9f668e5147ad6a105671be1ba788cbcf9847301ba5c115ff1054d27b70ffc99a358380f16cb3f96c8387d0cd1847863aa2dc24d4011c8d6aa167889c86b42adb4558fe4a043e1d189309c042575fccdee7cfe8722958ba3790d1ad990fa1c3703fe87964514aa94bf0c102451d5a70155a8aa44ba121a185d43712845211a5ebce522c82174f0d5e92a90312adc38254d69e2ae6c8e4d2cb1e92ec86c908e330ae78220d2422bff6e6681abaeeb4b38075d8ac17a9f56a68183581716dccbbfe912613b1173dffcfe37955f597a5d610c32bdeffc2a212620c1ede6b3388d4fd8956542b75863a879a1834b82844fef4956ef108a8dbb2a432d60f40bf895e25e4ddc60826634cfd46f9df879f5a8a0bc886a12e9073ea6040d5fcd19b9292323ef84bc4889382815add74e1694450ec9e1e0794397fd40c1d3e40d96f66bf293aeb5d5c8644c4027ccdd48d0a4dd5c67d186699cae032218548c982800752c482ce4f6fe2e0baf06e3c05d8e0296ae2a6dcb9061892bf1bb3ffdc351bca8089c467d7d0d2d04272219633d5a94721a80b3482a4c9393f5334bc523ae15f8f6096ab483508d7f60993f19db295a20b10bf66c53222dc4f21f7422851b5fbbce943ba2e6143d2446b481751533b530f079cbfda5f07bad46e0db1088bf3b72b39080a6e68661564af58cf7a469ed3a77695e094962c075a2e9aa5cb414019f2a40a6a17b61b5a2a702b2e8a5a6dee46a77f331183af2c502c2141ef34e8abcc56f156a6a629f019299e95dec758ecc9115aa8ee91c531a80cb17e15415100bca82ca39a6ec0d9d58884f9f79b50cf4fcf45deda43b06d10d8a19014758b555019b29d3f12b263cdfd4f366870344b292f52cd3804e31e102a0d6d876006a7bb88976738fbbb88fd6927c67136bfcfbbc389e5f88fb90ab3d1ffc97c5093bb73bb3df0633c2a36d502b392e21dcadc0671bb40f599adb4260611abf6ed7bdf1fce262999e1318665c41133f519e4d0a4392480499354b44adbe64fc1c5c98efdd1e4d32372298df1c6f13dfc858dc60c78c662d568bb30acabf904d885bfe8c097a0cd9d446bed0f06652c42544e6dfcc500e87dff56c0cae3b4efc71054bf0fa8d5386d1203d844d103cf6741eaac0ea231dff60bab0f8075c5f1c23e20b67cad21fce2cac2ba0bb97f94d00d7ee116741d6b9eb7d4d111b821c01c424380f70cdb332529723d97c1e635b626ceca018e6f659fc99d91e311c495c49d6431e2a4afcca18f044dd79a49cdc76b496b5ca26e642b55ac317eb57d48428f4b1347252aaaa2fe946815c6e7343147d66777cf9bdf401e3cd23258cc4bb906e2865bad81668f72e121c45b4310d7705ac0aa75b2b2851b8e914cc92d95a54172d7066a8b83e134361ec409a5d08b11c87fe7dd429e764660d72ca78a082786b7ffd3d1c4c979fa15030cbea90989f3cf65103a306b78217065957edbd14d36ec51564f8d3d94fe564f19886f231223822d9a504829605943f738d470874b9632755511df69ec44313613d7e068f3ae8c7362995f63705a3630d85359a3072357df335597ea00904eb99530588d7e9a212e6473f2e61d5614a68236e98308fd0b056b0003c8e1432cc26fe4ffa483c6d00ddfacc64667e84d4b99de25a714d0b76a45a78a2a1fb86af6bade14d531afe9976f6a62ebc1ffb6f5a46e117054a6fd61ad489fe72019e2edfc21f8b4eb02221e42a4163bf1d25341e5ac7c9d75f0a71c25ea9fc05b4ef6c01f9a44957fee5f36e514d4890e555ff490007d08aaf534b1bd6bbe8085ba04353761b7b507586262ba0ec5acc08e285ce989b4693994fee7bf105b8fd43d2994ac0916ca6d095a5039dfca58285748aabeaf4a06e45c42f23d8c7c4de3535107aaa35716a600efcc87716380cd518f6a4898d86d06339f8aeb2cc091edf78c1d72042f3dfc008d40a738bc24ac16e38b67aa198afbaa35666315e84e4070f914ca3930330aa44f9da2b63245343f80d33fa38747f56ebb704a6dcff7ced51d2f1f3b3687f176c537ab332bed01dc4ca7333ee7aed7aec176d2e9c6e86a3a5344640db37e21bf6989147f7912cbfe4ca2fe1997df261b3651c558a52bd643c47aa8c6910e235517313e30107f1e84b83315c8167f9712e87e501290fb2f2d0736c14bd4c0818fd179583cd38da6cc03cf0a65a25071f868b0e7f7821393fdd5c45234db324128ca654ef819c4f5c68e21f7a8b14d0c128e779545a11cde786db8c1b9143dc80d4041f1d7bba7ce9a3312a303a2be247898e98299a14fafc7eca21e753d9ca52d724d3b3a0adb6573e95757f679d97d3aaf54a02bf3f7c698ac9659baaec99dc2c7d64044ae845c7e2672c3fb8be92a7ddd391916736fadc9ba65aef69c93d311df5317e5451f7bdf85d5eb0363d24e336b6ffc310a9856f16f56ead8983b022a0d23ecdc72099610d715fcc7d4ff5b66da066c7e26ae7a537ce40969c2dcbbeced35e8a53bc0e72996669d446f4a9fb16ae41337594c88acf97d08894b267eaf81c1dcd5dce062e8153d11bfa15134fdf02aba720fd3c4d3d707f6aa4d461c3db78c7a4ed1321cb00746fe541702c71b21bba69f3be0c41104f891583932ba4b374cc56f5d06da48f5d6f1af9b12431c3ee29a2266b1f03229c7eddbe06a3330e378bb3528343da6ce51daaa5ec014ee48d09fa341314c453ed6e7fd2cd17489ad47142f64ed64fd05665d6c3e36d5ad8199a52be1110d31e2aa455ee3c37c901722be134b6c1302e7d7c26a9d6adcba33a7b57184766ce300ca85701c5160da913a4d06eb0ec38b07d0bc14d1838ab423dd0cfbc4f484d5dfeb89307b49dff56aaa882b491b83075464bc93a6357a859213ab610c3f7e7fd03c0f4a5852cd2ec9ad7ef49b90b4dd444a29774a29c98a01bf01b0014aa4c4168e2e1e2f98afbd71a4a4d49b9a58a0b72875fe1d305b5faf5a2bb760b1976566ca321c20fd7ac9a634bc7c6f08ec6d74f8fbfe0e109ec0542b1e7069fa04a65a3d7f02697ba35ea7ca21b10bd5805e1df71603ed0ac2422ef81bfbfe70d5aeb25fd3d03033b36413d830180882a083ce2dfbbab6749625a764cb7a2ac186c1ded42828e2cd09331d86328f7d36a4741ab6332c97af6bbbbd996fd983420225f4b0086381379aa577bfc187c11ec4c9f126b3c3624a969fc070dabe54c2841656bcd74f9b3558cc89c57d4c106688089bd73bf4bffc46dd1de957b1fe11f79a7187326520153b5dec5d8fff04e7e997992f33337b2ff6d95b9e98cd1da4ba19a352fda04089964f820895cfbed85fc851d6ddddd7bbb163287c9eabff73a469f47983992c9b8638f4a96451190e4cc68cfcf77a591c937c99df96b98cecbb078bd516943bafcbf98ab9fc5c0f4a996cfaf0f50deec1eeaf4f5f6992ebae77c0bbd4b998b0445d30e960d8ed792c5bb23ce20328c1d2389262efacef297c1a254a73ca19956a0c4bb31e8a21a969bbdc2be9868e3c77dbed986b1cc4433888100c726e326acbf591dfd873d6b37dcefd266b6600dda80205104034a1924210564ab8c33bb143959b194d0c2b5b6ea06289231bcea8ad908019340769ce0e810550046c122c2dd12876f9d8d30986f04228fd8d4d89332fa57edfe3ff4286e952ead1bd3d4622ab5056221cf4281a12e415c301c280041950d78393df8a797b7266a4df152b3480789274d4128693a7d15ac9c8d42b23538b5496b5b5d65a2b2ff1f1a9b7ab8b48066f3320c22b17adb5d693b5a76bed49c6842449b5b5a65a1748219e041f84019d1c2048902049e2afbe2ca6f1620f439264e238100930020c2bf37e107fccd498a9d5917a4508677840883fac4dad666ab42c0e140a7515104000dc193ee304c2990442137f1c84104f0379400693f0a31f056fb8b2a8fb94da950b852a8242cdd394a935e28965680d7a84d659a301d56dd695e5cc398fa452abd58ab2a8bbf314e1c067cea96a7026ca5c6b1fa057a6ae6eeaae56756552a14e60ab83cff4992ebd2c4b6f48ef57e9a5dead31d28f428b2991de69b9c68a653ac6af9f5593839527cffb76662bcc31f613ddcdadc58d192a226abecc21623e9f118f18023387f25f46d0d2bd14e64d517ae9f25c520c2fe52e4b069b3a70f03992d1a11cce5eaa234a57317a8a62fddd595ac802c101e90ccdcb94838c9a12b551178f729625bb39305ccc7d2ae06843dce3cea392c7259f817e7384e12346625ba44a27be3aa8b08e99667f5835ee816475e460a3ced633316c13d34addf776778e53b61173b8d084124ce47090781b581a544de1208e1e1eb4f9f1409b18bccb56dc7af8b15ecb1be18725a2a31daf258984d8f92618bb5110647279c60216473b110c98263f3b34624c600f1d0b201fd0d1092d58ec3ea3db21fb6ea7850271d8acb79742586324cab1a315008d4027d6bbc3f536c0f542502b9852eb915af99a985d7c809fc0d3c99397298da7137f1cd9e46ae92d578c364eacaf7f8c65b12c8dccbc45f8311a3e873d3defbd0075cf6377af2874dbd773eadec5bff73f61c295e6bb8b94cee98a2f78a1736a513d2b09ea3a2c7a85e0e19be2f50ba5424787ef46df57b7520af0dff78ef2c52b995d4f299553de4a6fd5c10b28b32569b2257d9e93b0d86ad0f584b286250b7ac795de59d70db0211ac38b0dc6f3a3491341388f7d18a504972668ccb5ee315768fd630b3634e24092899c29dd6e486d806749f22c5bb8cef36a41bd74c37932441f1c258a931fcfc7c62fc6ebc1e1764548b8a1dcd0d0ed2b50d294a4ffa72d2dfd18d04b7a7ac92fe99ad7b2b81244f4b1813b2ed73c1ce9dcc6e33c739fcd7ad71f973810182d8675bbae62e643e3296a41b65b6f911beaa35d980a4323272429a28f53840dcdbc5e417c63e2c4d2429e753796beb29c303a4184f4c5a09b4a119e106abe19189b0bad2ab4d6b219d77a6855657c981e21958a656d6acc504a8cce882545fce0806ab0e4a84dfd94542a659b50b9615316b5a3d6255b6511f9e51d73a94128c729da6e49423baee812d20f29a594529aaa22472305a6521fd20f15d648b5212a429d402f9605858f1e423b7c261b2eba16ac555bb02fb6cf96c45e6f574ec071f10d1149f9e22be26bb3859ee88d8f11a194524a2925ddf264064ae9c4817484438a5d154ebc04750123fc2ffc7fa3f0ff5f162d455123a594decd1737d34a19923c5ab0bd90e4823dc95974c60daf339a95304038df757e6dbb73b1c110ba3f07494c495e0ba5ebabf9f739392234f29974a61d1232f43c8f0b95273a28f32001371bba61c68316a5068ad5810b3f1d004c6488af0adbb258f97e31d0773f99b10fd3f8a7c6018990b8140c5f2a950404f4828dc559c78524a13c10a42206631032041a6210101010000cc0404d6905e687645288bb120ec68d641de1c42d4d1166b60e73ad1a51b1c14198673844a837d8dcc81be9825daacb149bfe961eaa5dfbb6e7c912c77eed590f9de4e102ac380281cfd1e1006968a1e261de155bd02d2a3ad64f7e4edc122f2bb698000ac94051d4120388e9f45a34c32c590ee81781869cb91ac6628cd1dd655b262bf224c0a1da895da4217082c2905b8a50e226db803c3ab28f7788f86653a17308163cc7ce2dbe2cfaad9714f871f20b7ab419debe10f9473218afc77e92c1c02367833666a4204c285877320bc54042f287f38abb4a73d0fa84e8c0e0e305ce699277b8f5e16580471238b3589512c4e4b25a61a4fdfc163a3cc9e71758de7f16238b49dff2b71b7644a71063821dde6b22ecda7ad929e72077ae3c6456dab902f9a23838df63886ce892ad5719b847603f5cc3f40bec839c454668bc847c135259680c527857ee59aa1bf728087734e5a59a06093649f49504431544fe906d54a17230ed2109e59b50808ffd5593398f1d430f3a3d741e14b7d578d644626b4ead5078538b3bb081443991c384910c11298d0c71a6c1d89bf24aaf20cfc0bf5b37b8961ae1a736024424189b84acc5732fc2cdacf62252df416921fc559b340e74cb370015ce4830680055117a7425cf8e1224821264b4827797dcf86f6ba0f643f6fbf6cd35e08a8d0f1594845b214d0cb0150bb8f51da9bc79a172555d30b5bc77e4c5008b30397404e6e208615e00293f13b1ce480962cef0cc9234dd1117bd52f7e2f80a0b9ae3a1079ce76fce5b19e64327ff880b310ac51ca371d31e6ae8b1a33b265831bbc41787107ac864d7d94d1d4ba50ecc8201d7c5fddfceb80c81337100c2d2193d4540f4501120929b53c9c323589be388ec42db4370167c711d6551a3a16fc14e3c3ffea7f4de7ad770ddd2266b47fad64d2f04cf97ae81f18a5aa72d51190d5c5469fdc09e2973d379a8b9c0eb13cfde5bc7f44cd833800562d6a39fcea1f1979c86424f1c52b2cc2a134d562bfb91e5965045f31ee241a2ee509fce12bee50bfeac44ab4d8fced1bc454649292ea4286445c231ec489e0036dca797822ac70d2a4caf9ae9a2e5838d61b9c3afbb4f6a2c9931014f1ead8182810a3d2b65db236cc96bf69ff282e42c82a67ac15ca4e22a09ba5de415819f30f86e23157c6563adf003de2e016b725deb393654caa1b97257f3ab95fb0f002ce8d1d03c12d34438661b3988fc5275dc9484e86505e5ccedc4a96eed4bf39b68f45279f3982835ab8c7970a973a1edcab4c747d86951ecacf7c1fb17e9647ae9cbe5065b8a370779d580a48adbc64af133ebc143721d078e316b08f3cce1c91c76234e18fde2c489e8acff5d01335c12c04f72d0baf3f9c63740a982f93727e12c2371f49beb590732b13a57d6685719a2f43171ed3676d19cbebc5fe7528a8a0dc30f8eaec74fe2d5aca300dbd0d008b031b47b02c26c225a4e3d46b938950e1be265ccc5e5638dd92545eed8e96c5ce41d27ae44c2c86c21ad735bd3af9c923c5778b261ef5c1f126fb173f7138c9e6aa730eec57272579235ceb504339a408dcca70b27dac65dacbf991b6e8fd995da10c4fe57a903173aab585fd13339df9d9bdb51ed0e2e39481b5059dcd5027744bd7df7135d0b7cc92ad9ec9d708e6c939abf0f403a4623135e56fbd4a102fb9d0f1047e21bb984c3e017b166b9b0984253694ca8680512530cc9f43db3d1ac62ac280855a3c5070de2cfca84125dc3d3489fc2e6a30ef66a0f7f0cfaf9cb08f14530f4d4760a7e275243039f340dbe893ed22c51f6400d3e42a914702deac76b25a3d38731cfa723a876ad17f6cdb572fa9e059f37a857c29018ff02c61cce3810f3d0ab1dee6c57c37a2d3c6ff6f2ea981849a96c0e1de1d42273f668b62ff94c4ee09745ea6c83d2b48245e30c28da7e0d124de3b51a5756804868c5298bc9874df8276891eb6fa31dde0f78f5b50c77ee5627e3920d78d976235f4390c1097b3ce647f800eb44c97fc7ac1baab8dae812ce1ce380eaeaa97821cf77f83b35832af540ee6cd092d8731b4b8980372b424964e3b486c2f9a5e3d3b1390fa3ab833a9d9f58bf474da9b7b4bc9360c77d2da8fe8c624790d373191e41e9dd0202ac672aaea07434a68d9c1b2132dcb8f8796afb4cc943f6d4aa30a7ddc0fe656f97ccb0661e07b6125bd826cae1364f6494464b619a0c70e85014cd4c2071e03dd783a8d4f192af9c6dbd49bdc8eb6d958c7ec5cbe448d06d1530f7e81c4d8947990af47810c2faafc5af38dc5d6ebbc7ab4fc0e8eb7b1d8aeb464dad91b4b666fc47656a0c6a9e732c812a0d0e622b51eeb15b688a98ee40cf3dc680583e05f4f70aa2cd3ef28907d42dba1bc3be084189c484d0b8f5c7b6439041766dfed298b9358be962a778deb4bb6cd97b17b2883058db8b05f4e4c1cc6f35a21f248867747af80acb6dc02deb50b3cda65cf7581a3992ca79b1a297a54e955948ad015816156410905a5c69eaf26b810cc58b02a4b42378f6ecb0637955a862fda2373f2c2a729091134bed5e96b54e223d75b2d8f0bd525419940997dc6828cba2c705b4f52e4bee32590f1d8f483cc24b9fe619fc0613bb8a81a5f308f4a0b34a621c627e9e63e1e603372a7d69e678de9c2bd5aea529336cab4a631d853792f6c7575d16dcda128a7ccceb0038d3f1dc833bc7e2bb1641638f8c9be6396671f07ab9ccf075d84a5b8f2f278f938cf8ee1b68a37656c3327adbe8aefc64ab138acf61b225a32c790399ef41116330b704e0d36aae5ff52a55fa6143037ca7676485f1357bd599e8e3382a2a7f8e197f3b05963fd8dfa83038b881cd788af83715537bc428d3eda9ebd977a69b01661de830667d08cbb0d145b96ed69ca8466cac65afa39b1d70c9bfa9dfde7e4c883bb8dd5a3d2eab983d0ec0854d4a847f62815a21b65e5337efc76e3ea88d61118ae68d833ce237592cc29bec2a320b24df898f09fae274c0aaff751d2a54e98dcc102490dae7987874802c85f72bf3a72aa531cb4b0125bf037545673381838ac6f4ad498de936cfc55fc5bdbba2c32e857c4c7f8c39d52191a6d618b36844e4154f7ec3561c715234f2cba217c3b883d1cb12e84b29aaae4468aa97f425790001a7956fbbb745f815790577d76974ead1d15c4d448af2a44ea71b47cd33124694f1f8a8396e8400c2972fe0f008c7231c7b06537a1e9a1217045543a3a8ab8a896d7e7f3c83f96c5f0ad39b8e7594bab539c524b5770be29a2a5f91646bd0e43167efeaef67654ac86e407afd909e2c1f2697ca38be3c992526ba5c492d37e8313901a513c7d63548087621d1d5112ccfa8ac0c7203df51edce651c054f56a6434df855aca1e00995d1742b5346bf9e75dfe47baccc12cbf053b301fd49bc93bd1224020ee698167a1612142884ecacda4278e2014e86db22198d9d8cabf1a10ebb026e933e8d3dc2fe32473bcc0de0c769ea9518e7ee0b578b605f8d775194940fe86129ca10bd98a71966e254f389f06bd318c841e045b4819bb4ec0724886d51f30af43ed1656bf4f5577c2386655bed15d85c68849f09a21c17f91dffe40c0196feb58715dd57055bd69b65d38fa981dab0ab814cfd7933faca1cbbe26bd0e51efc9dbb0c5407bcd47dab03a3bb6748f98e09cc47f183eda2f666efadbf6556cd5b25ae23050ec381a7152fab8f3be3a230c6fcf8b6d71c565d275c63a092a2abbe18a2cc006a75b00cf3c62612186fd55cf7617e212a07347a66ffea2d7888f679e76929b357dbe7f52a75c89fc1782fec574ed6a25c5882b90b20abba09e32ac292dd5502f9d7005f6c92affefa79a2339b5060cd19fc0f7fa29bbce26a1b76d423cd64a655ea548746e5e37a7d25be6f31794f0be5dcf2520c930750d2d7b3644d0fdd36218ee38042a828fb0c2261f990283915a2f7ac3c04cda0e7e9e7f6050c4b3de1c3f8cd8fee70692666a200eeecbc09731531e7133c9095460a35f065f7a2aa61939e274af24fcac1dcd16d9ed181d09652d5dc5f295854b1b4575b28abb10f98ccdfb374d9d323feeec9763ed62b89467e4b4f20fa9207e3a2ec4a245e14e4793e43e28ef48b149e8d3607dcb68bfb98a46732a8e7c3a6a25d9212ae06d763d33000b066e04b5f6bf8f397923bb7e7368e0827fdc7ea9fa822b86fa3f8a133d18f158f4c294ea4be7f5cf9770feda50aa7e0dd8b2e31760a1eb9e04b6319e8c4a89c1e5199573a24d428f5657d8d21e54f27c40cdebb38d195a939718ab803f2875702bcd0b26791e9ffe7ca63bd0a1cc08f48601a921c58391bb900095be91fa7421f8c6c46d32276a118e9978edba5d12e3e24078f57ad3b7f70d4b2003e9a104278df7be73f681018c53a107e240bae658006af975a09f35ad6af15b6180c3c8b526cf6afe32441421c4d26ac5865afc6e2c4de4f03fe14ba2ba70415bc8fc7f0e56bffe8e54650062184f77eb07d93765e324af38152f14cee92374bc4f2bdb5c6aea8e00f738b7b2c22e8a1c51a81cfb0107c742a01bc7377535620961ac8550e248ece2d37fba97f392d8e97d9391298dea4dd2426dc7cefcfa19ff9ba66270d870b9b352caa73491aa7e09c9cc044d4cb5c77bdf50020f46d1da9cff2a444e075949c8e04df46d897d49eee01885d4f576622f125627b493b90896add9b7cbd39d51bcbb8fc87f118c7c92cb8790a0563c92ee313f16b38ef88671808bd3cbca92f54f060d36b3d58e944fdae88ca86c6d0798883ce582d51be97bb58eae78ac300ac9cbe4c11ed9ed495b5ea053fef0c8906060f1917e119899e36d21c776c254073df38cd7126ccd041c4be3fdcd9605c8afeb5996f97c9174581dcb31894bd326e8c3a0bf60d281cbe79abfeab0949c23bbd675b22bdb39ba44d0a8d4f4685f2f7d142dd5542b69c1e7ab92ae3877cc349041ac59261ea4839e46a9a5945d9f5b3ecb278719e853329fca5f9410a75b27a00d6e7e9b35f3b3445d5a993e2c2eac60b47181802b2804f9b80cbfbe78286779800dd449f16eb5d28498948914d86c3c8063f3bc75a5c429280bc3a7e4ad850eef85ed790211915a4716c616659fc8895d36e122a3e46d45746b508e600421077aaa6eb8711984fcd300750d0263de7c8a206dee99643eed01b6f8ab5d36d25ca8864b468be74b52cd04e07d3bde853868037973c7a57a28d90c1660ee7d98d88519bae6a9d4187cc2021a8ba331d6a1577a047935159aaca6cf7f1585e680127900ebca30e8541c4b1cc8a8111025c0ad0de5d46a3d38f2d7ec9fb18fe9fa6e6e1250581d99a1398833ccd7289a48dd6732b088500d1111860f6cb80453471d511f49d76ac09cd8c04d9034a331af286177e9dacc9cc2d49c89584d657a0d93be8124613d354d09f5c0d2e535d5e24a8cf2aa3870f03d2e77471816303d65eff3acb7bdf00f32fac94a2a5a79f5b2d77290504456bb6ead5a718388868ed98d97e33383af936144c89667c00893ada0225469a0b6159df6bb167bab20053c6062d761c73387bd49bb43921cfe75e7810f67b97cbdc4c099c2baa84fcc069514eb6228ba3672761140908a0490649048cac68a25b19c38c964db233910837a698264f5bc391284a8a476028e28785670ca28826f488b666424024f95fc1868e0eaba141123d05a409d90ecf6af91535ff655d7776df4afdab4588cf3c52c0f7accc6067cd11afafed4d8fdb9a76eba00ee3fc388771695383632a324c15537743aaccacca8d68b062ca21818b696682fbfa134d950cc41741604746c78bee0f0db0f0391f3b87026c527bc8e9bbb3b65dddb3a8ee1bc3a09071062c44ad0c91ac6fccbe8009f45a1650be05b9df76eb417d3da49b7e55d775f91b8f44c3b268eb02df68445fb0fbdcc82db8f59b6f8c4c508391cb0f263212547eefb183b3dafc20b3e12c5dc00df70edee6ec1e239e718926ab43c04b0769bfaf2430c26b4eaf4d1c6bc42ba8a9c8e37c043d56528228dd2d9bf4f016f683320c2ddf127d7c4516632993943f8fa8a595d496def1164964336d782496639407c187d4ad88ddba0a65065ba224e3b582ba97d5d416be7eaa4ad81ae543360a45b59ea96f5d678a1c622614399862a3fec940c614cf6b9a20e13c57fa176b442a1f1dba3078c3daf0f44a72355a9d077531c95146ebd5a32d9e32bd95323a6e4e7ee993ad2c1be74be27c2016f7ab860c2915aa32403b2e2e5582c9182e53aeb1f718c2d7ff6609bd006d8b808693d5298c5e0cb337b682cdf5f1462c92ecb00a5d2b1ed847ca5664776a94b54586157b6e83e85a31cfa6ca4497988162ce1ec2d349420c3260c55d238038b5fc9c5cc0557d70e302f43387589169c94308c0389180f08967e19602033933186103a222849be6d573e1ddac9e7146ec7847a0c99bff921edf0e176805f5f92b33b621e171e647b62cfa92881f1f654f4fcecff0ff8906e8c626f22cb25a00c840344bf12b0a023dbf845262a2e1c450cecf0eeaad533c4c14b07f7e02ef7d4c90be6c2cd8636a0db38f47d254b5ea40ca2639b500ba1f05fb51ce7e4062b499ce46487a631dc4f71e03f26a19cb1f017f1e9f2fdb42f137bf48a090c1330b16b036caac5adf204bdbda8fdc02519dc2f24941593d94ad82a1b8951e0d8239d0230a3da53a115cb3f6792e182e5da03ed8d965ec171f7622be22dcb15678ecf719d016015bfd6ea9e7bea036e6f33487403295e19dab05fb8ae61bae69591c781ffc2d85018c26c4a5a39e257e3ede766ea23d90428e9a6bb4abf0265b00851324874ed74e68e388f59d232116eccc725537d5992eabeef3492badb44c713261e08c882a47e0f97362cbb8a47f2a9e63e2a22fa42291f3bd75654a24716eb0794e4404fc8f99f6fa870750314b2a10fce8cddc5342252244ac2067c3b263ba6bbd63a70bec0766ae49ae903ea5971d48c4878d91b32d62c3db68faca2187bc5a28625b5c80951336ee312333186a1d112185525e15a1f5424779441bf8e49de319c7adce033ec1adee28ee5c56ef328594ad5d95dc87fc2e972787092d9fc88b86323ca5e23fe8944eafa13c654b62bee658fbfa5abd55acdd62806fbcf450f5290ca4553bd0dc2c10da63aeed431e2e7a4f0c38250c954a46cb69b401dfc5a4af50f8a48c2930a51495de11e98e43593ae602e947c1fcd9e8fa2f930ded13656cb6d20a52f50c20f4b08898b6c71398b8d43015ea4b7f3d431feccf0392fba0888e6e80b040956987e4bc9fe6c7b3d3ab766b0abfd5e65b130f47e6483e7fbfbc0c881a00b0f696f941bf7bec6ca8b6c3b83e2aa872263b994c416daa4e9a774932bbe26099d78c29e3dcb2d97210d33c09dd7f78bf29b1153d95e82903feda06d3e03b70de2021e71f279afbba855c106e42f9dad241d62c0fc9dc31f5f1923aaa856b078985036259552c0727c3358ce5ec789881e9553b7ebbcaf960256fdae80d6b22180fe9a85e6e5afd565b174e362259595286b2ab54565c2e3ed22bf25182b1fc92a528028bd399660391e510e64815f4fe9702e3fe49db6ff1ccca43cc286c0e83162d12047a22237f6c6a405ccf4a8874f8123c637f083a2491f43a31b267c44601dafea83b54301242dbaa26c854efd16084687d2fc5728644336688185320942103943900849081a5b53721e114b1d3702882808a20220800028080aaacaaaa36b22ae44fa8a9898a13034a6b10fd3be7568a935ed9bd39693b8303b903cf0359a6bcb2c400c406e05e34e48daeeb72c1010b8e1b3e4c8c64daa02e3ce42cf948fdc8d2ca741d8e47fed2b038ad8fe1b826970186bbc435f23047e7ff7f9967c358e547dacb4785796d6cdba6c9b4519695d8066d6c6c6c8ed612d86275f82c119da72598ca9a59af5733ebf5bd1a3de03e84734a20a9bd9e0decf56c60cfe66dbed7ebf57abd9e14af4602b86f79235259e6844aa9af150912247208f07835298f5793f26a7dade7f1783c5ecee3f16a3b3545207781da4ecdd05863653aa135c9be26ab055ad9873c5e8757ac11405b03149661852f7fed6b475dafe935a52efd6a2e7d39a15da8fd353bc208dc87bcf108a93bf53800e575c40ebc8aa8b55a11d722f138021f21d4be38d8a6ea56134d7fa5a105eec3a611a9643e81ba4844d03e1a9ae7b27e226b9aa090868686a6676bd61302b80b792352c9b4e2844aa9f04e881041aa103178d92b0f75f2206a640d4209c20a020488a611a9bcc17442a55425fd87ac1688631f4e41dc354fcdf3e183fee1c3705ab5ceccb8331f82334fe227ce44997d73666666666686a7a9763b9a6aa77442a53c50fb6b76d7049cd97723e8e96e474fe97eb7a37b193a4b6765763b1919a1ea9690aed719e9ea1a701fbe5419192553ca1d7dd1656c113a1d8dd4e968a48e66d24c9d6e99d4e98ac05d8c372295514ea8941af392c5c404afc4d4393a87cec9e576b95c2e97cbe572f44eefb95c90cb9ccbe572405c565bc55971381c0e87c3e170b8f9ea0a57e4771c0c4c168606838399a9331506060666bece5718989d7f8449c22c8d30437e1b146a6fd769f5769b7d6eb7d9e786bcdd6ebab978bbcdc51979bbcdc87c66ceccfc76cbf328d5ad28787fcd76c1817b9e6bf33ccff3772b9791cf5429348be3f80cdc67208e3f711cc78bc07d08c61b91cab7cb099552615cb32f2f373329299b2d77cd2e9bb6a72d6a9bdaaa36abcd28454a6d4a9b90ad169c8936e09dd556973256dd124b85c64897cda7f236226f194806ba6ffb6e01df43ac6bdfb66c948db66ddbb252b6919af65bbd25e7ead2f866b3d7eceb64db7b9c3b5a9d303c26f4174bd56ab1542d962aa5b5dacf4a8cad6f9cadd5e26c2d0365605d33d6f8baa6fb2b2d4603f7ba36abebbaae619dbaa9a6b7aa54a1e94fc3b4f4472cd2473a492f9bf4fb3f2dd422d9be3470ac456cb1ac972a95d4e6f3f98c32a954e5c7163ff6f88b81f36e96b3d5cad77dcf266d4c20542a53e55e86791ec963d98247610b01b49d66d378780e9362db36013a1292ba76b12664599665591ee02bfdff7fd8ff0220913161fb2f46ffc50440cb605a6c604a6e7c60cf1980777ff75cd0f497cbd9d83a503366859e2c5e49d7a695331b8c3d5c30b8727ea21f4a76b3b30e222f4c3d55ad7e96305d05650139a35a7e74a09eeaecd6a67ea23be76297d8d935d0555ddb3dfd270a093f038aa7b2c1577bc91ba0fd0409143f4db1fc067fa0befc86f168571a8e07d20f87ab917914693fbe9eb3630c01fdffffff082814060646041c65ca118139c992b3bc6eab722099cc9ce858819cf2f0452dc5a343eab8b593da1262aa2a4b680725ceab684f0034d01aaabda1eae398a5672ccc07d6683a3cfb19f2d57482cab20c440aa8afe8a045881e89bcf9c0fadd6e20a2f33c5797424f9c844ff0684bf50aabb35badbcb460308d2ced0c8df0b551fe42535e9a6ab41e58381d9e78ea910be9e84b032428a7265b30e651d396af3e8e60651aaad424c2234729a9dca3a4b403931224603b90877d16e6333f17739cca121cd7711cef31f66f3e133e83df2facf01d7ddb5abe5dc05633290ca887195135089f7ec8ae449f5e3836d32d630b657db075363428ac8a4a48488cb1d6e9baced176dafe62c5e8f7e2fcbde06ab22efa35b3ab24712a8efa1e4b31e29321f7484ef3084f13281b3efe92ec3affb7c2dfdcedcf0e50906079e2b15a20ca1e3402093a9332e15a5dc5a9aeab5c6fea5d4df6c4285be3296bf56fb52ccb754ec6440267e16aa3627b91926b3753bee69c8ab94bb932dc955c33228c6796b088a8a594d7342a39366cd6d665de4bce1b8072f4e492e4f41344f680f1bc42095316954598725376e6c8d1bb46a586f4b6c93bacb22c13f9c977cdbecec8728f27b193aaa026111a537ea08c20995129444db29cfd9a5c4f69fad5bd5f5dafb8aafa74d02d85650dd1a5673d71f98a713c358a7396505984d04207051598cca0af5157ce17b75aa419756ad0aa1c5461c5aa2ebda92fcb440d1c14565f29544897a82bae7a58cc522a255b1cc754cf8f947d3eba977ac2a1e92f9e26bbaf1074ac43f3be08ae81a413b34f47a3b1b580df0c1b30f5e3afffa16f035aedc8e19f08a9f244016c122c31beb24f3fc3243e86a15bd1d8c5306c074876cb0b2aab58be0245eb272a2a69463fe4778d81f1968a69080031f38843b554958a773b1aad478e97a63df3253ddadfd7691bbb67c2c8c2ee4e28579808293870e4c0ce20920bd9e93e2f31263e4cc3e7158a29437aaa782af647488572050ca02243acb4c5250e9816a6ad1d1e3958b0164166a8633f3978004da1c102cc00073394428a02b45ef329d8b4c86e30ae1503881611077014feafea3872025d8de2326102adbc953814480abc84e9cd9b6f9ca2d8bd3ecac7ca332489870c4eb055aa6081e2528309cd9853d7a26a6f584eeb5fa03dee3320d72c5a413f3a8eb28a846c4c7b786d292d719d7f26aac83409cf9d046ca6858ea50a068e73bae4c908eb490b0f8523055405141705d3154782b0e8e019238416cf2628a88024690516a266d49090cdcbde2e43e00c2d1f184cde0593d790148c0a35b5fad37b04fe6fd1cd2ab78cdcae7916624a6f7af67c404b6ea89c48511bd1523b61fd6a19116abc49fc3f1cc7f110fef7ea29e295e4e645759dba13be470582af4b8b8e4695d515a4a47569c5a6088a5049a8890525eb57a714751121e85a4080da07fa27e2c1077ee0ce68e9b7f3fd761d20a34a70e93ad20c72357554e16ca224cbca03d08a45ab738c88602873eac1c2723515768518a6a387e9896476f5914e927070cbf70648191068807c21b3807bb8af658a967e320ffc6432b8899ac048dfaf53748c71cfb6f8e001525dd20031e5e808521875ec48ea4a639c08cbbceffbbeef3bae6bbaae6f0cee21ace602f74ec78f864889c40adf10552c43c6532346101c555da045448436b02c3da1ac6e2e703a75587e3a9d05757e14cb2520d211bbb2854229b9d0b1e5b262e2e144dd517584aae0c844ff4f81d1b8548225a2e4f6bb220d1491f6ec9b9f13622894b6a46032d99a60aab6ac71bb1042cf7686449eab90b3332a3b9acaa0705951bdb0974e3b06d81893a8a8a559eda7906652b4428aaca2f57699cce12c75e04b2358c9af96b4e5a602b935a5f77c3728924963b8151db4a825e861200cac95c6a2b2a9143bc0f763e24908d589824f81c471573853743064db1501153e828ed83246d401eb01cbc164852b926253eb0a5699141e2311c9715e2ce570f2e388178d19b4a2f408917105a1b9344e46cde48064d6851525f9c2c9f9fc72f65c1d2d11f9495eb7d7b1651c258d244ba7b02d2343c1ac5114a4311f564ec41851b2f1c5afe1c8e87e35182fadbf4a9485cd5897b4c2ffe049f2e3aae9df37357e3d102a323b41ba6e7410e8924eecfc4d9a9363b42e458fa484c9b6ede40ecf972c1af1c08d3c4415fbeafa3b7053f947f77ddf483c4d033994f90b859bf37fdc399110a7a61f01e931e0938db0e038be80fe5a99f23427d7974cb91a95ad5629b84eed49914ee7c675f996dc853cd7735d813c3ff1a4c999008d806d3d23e0771f50cbb22c276f6a2b10d6af664092d84f16f0429b6adba62521b321b14bbf6f1135596af5101bfa3c9561496e2e74b2047df4f470f56069a1126b22f4c9721674e47d81d45a764ac3aae0646db13cc7b25100249a9fd54b63e32fb92daff3f8e7f09b13302be337466ad36c1a0d1e1a5fbde6d782fcd6b41f4da6bd1ffeb14f85ecc27942dabbd1ddd9a6838a7ab2ed9cfb67ba0787283537fefad975ad876a5769fabe6f9a9e6598e1d79ed87a034e2e7eb60c11dc266cc3e17fb93ae046c3d19ef81cc48f86e7b41a1a0ee7e2e417daa50992e3ea1d3b1ff293f1ebea7f844d5395fc4aadffb189217bcca6e7b1e5aabcd6bfb5bbe4cfef966c4cc3af5ef5ea72fce71fd3f007f53bd3760dffdaad69355dd76f3cd732feb2e4a6d15ee430f29ced4e8eb329d1bf1b1bcc23a1c7361e718d8bdb3001ff4fbb69a513727fe3d1c25540e0eefbf262b3fd6cb423bd9f2043324306131d9b8ddb3469cefdb941309cc3a6c1f64883edfbdabb187e0cebf92ef7d23aecc6341b60d8c456aea403ed2c4f93857b87c859f47c6fdfe5e684ede402f555506f32a021e45feb4773ffebd2bedbc7228c390ceff8f8e591e42486019c616982845906d61411bc71832c490854d0ce2b28e2d168623994a9e48c1e5c7ac86aa1b89193d383ce0e2732ee2c2229562828f4a28101b6b5c33ab6d51911fca025bfe1c9f39dee428daaa01ebcb6552714c8a420a10c25c3c2e2009872daef4efab9aeb51db2830dd90246c3e73260d34c4a2915991a837263a398e449e529521594a00b3a46e3c78d272afcee676ebc649ecf8266ec091e9e36527bc9563a0a6d46efd47d8d4597cdc67976eb9a167265d5c33229beb562a1b7745aeda20efba6d3f94c46f3255dd33c5d848e196bd0483aa854d2c2b299b9a5d662ab93275762366a344e9bd5ea73decdc83969f4a5f49999f3ffc0791efee12c94c9961595696760b5efadd16c762aeb9a434b4ea87c743ae5a44c944ae5a236ae834b41e45d863cc41a8d6555a5d2ea7cdad1a42d290dea1208039b4378182777a25853cc03c5c6add51a07b1d96c991448ad5a83bdcff5097da1d1e574dae463bef11fc390c8affc422492b865327f3077c50651c9ced04ef777aff22f1fc5c14a78c9e3c9ec71c2c5eb153ec242ad1626c268b754423739e0dd0a8562a754da5b653675e71308b4174adf2412f92edf2293f91e81c1777f8556a2bcc3fde5cbf67d6be5b1d0a894362d12ec59b83e6dd02ef9221332238f838457085bbc2eb5c55f014cc902310616bee92f856e82871b37316078f7a539cea30287a8435954ad16d596555793a417178fd4ee675da9cfe742a9fd8d4fd77728a0fd8e76afae348e7fa81469f3d90c00c80a1a43e700241a4a72284b948e19c494dd0194650d05110f849178708e662a9871c800e00cc088000004301040110202e03b972a73ddf26dc45c32113bffd8b62a162d3460cc21669ba5c4bc835afda27a1802d3da5c4d257d495a3dbe9fc9b6ddb525389fd4732324e7b6f3fde6a3442f3896b7b0a01f053f173fcb3b7b95930b9731a34712003bf63c82b8ef35da5fd85e7217b3b05c06349e555b6b8aa3b52d7083522b66127c4452aff51f1e506d8ce1cead971fabeb976efd196404075c878b16fa2f17b7594e19990cec73a07adef2982567e9b8738efe2509f4dde22649aacf5f52e0af1d6e43f7a6c2c002f5953ca2698a15bc3af62e13a7e2e3dd9cd25b99a0e265353baa2116fd20cdefd373be835ac38550410d51aca4cae23c605e4970cd4912c2618bda8df3a701eb3146f2f84962eecf0a1e5fef3b3d0c997c5f9c479a15331b370042542f48bb935bc332e0d54d1618501e758b53acb9cb19182e6002cc843010bf77a24bc99d722f7eb62717e18c99bb5c5b69cab538e1addf1a6caead1a6b64e58c43408b9583bea88f42755361933dd4d262cff8e6282ebae2652b852bcbcc20071d1b100ef56b401bbde4e7b63a9a9c07a73ac92de2855510cf143899cf1448ca01817f832be9f74a22287c404bf21f9ddea5703b7c567dc79034a8a7bab1ab0f467ff7708211ec55bd5691731171353f14ebbebae45d38ac2ec23dc7a6cf841aa7187bb82e84554e2348ce288bd13c5994457a3db88651d29d4d1c98d2bb3cb0b0cffc19b2aaa78b91d235d04017da85bdd760091c876150e539183f175488730a5e611755a5ba19e7dbf0cfe9982182911fccaa6a41f14c4a404ba96312a9b49862abaef5d634432c2c262d5f9ff706da2b4c4bb0ccfe57b8ffc3ca92c38ce5509929802f0e6461a927dabc3974dace0211f231fdcb3b50094f34a643872a7a3b3d63557e937e55389e98ac29a05b3f881708231e1e55be7f11abdd2cd8181917e4209ec01f6daf24282cafbf21076b1040cb926c445a3b6d8194b48d661c7266d9d0d9abd66c685825802c54cbc90267005f8624efbfd646c5ab7ceb6cc505f4cad504e2f0d5f59c86c7ef15478c39aa4a0b86266476421c4586b2a82d714b0131c53f84bc8b065a731b007a15fcc29249b3375c2532990b7b763f3716b570d7a97dfb183284a80bc2454f189035c6813d485512afdb5bbe17a3ec7c93eab5447aa84516bb1aa017e4f3b1bf63835373fbe02d99f7bae89a23b902cd0567f89bf17f39a13cd4b6b0cd09334a0fb87e126aad16c49fb074efeb2b06cbbfdc4bbbda7ee1364f2e220a2497b348c4597b8a3112576bc48449ebdcce00c1490a2c8c0ae608adedb6790d0490176ac2c9b185d6af38ecee216a9fb2b6a08ceccce6a39082b982c96fd5eb159425bfc8a1bc29d59685120eb56c720de0bdbac3ebd40e9a8b3a5c32bb56f98fbb4e4b4170349b5096c3b915d3007d1eae4f13dafb46cf0ff6692ab2e15714190023b7473d7d4acbb65ab53eaf5c1da96d286c944e53bdc5be43192b248a3516d3ad89e793ead6248ad0ee6b95072fa0113dcb74da767aeb47f9ed0fce840cd9c3ed0e505474247d424a07b7f17c05e0c4d304318145e23fe2bf21cb6d723a2c1bbaca9fbbdfb990a25bab05653ed7b71ebc1ba82f128ff5b1249dc0f3d38b27082530b2f906e969819c4f575f54ef8ad372b413e3485c7e75a98fa6f9247141335f1ddd64b7c7cbd7bab45b29f056f5f6057b4acdf5bdbaccc92fe11ee5801884db4cc1cec448fbefc93aabbb0f1f6d57fadce5135aeffe90faa909d0a32006d3064284139e6eea27db51fc35ac90b2d26e135ea52595ba3a795276d49ce6a9b85618a250f303b4183b2011e64109871dd362f4150f21f49f74d61b181e7665d4836eebf59b9bf49c87d67f10fc512164e22b6a8d54976ccd39e3c557bc8dd5e904d3a9548cf926c38adefb95b0f7f861c3437842c6f20fef88df64cd1429a47f0294276d4b7debaeb5814af2c7a8538946ba256716a79acaf9b16eada1c4cf985af065a71dce5ad3a661d881ddaf8aff9094cb525f84739755d12f9cf837a0ce3b395c33e80ba0db90b2966f1443fa37fc7f690cac6bef932ce532f15c28d2d0ff39ccb1b04add9d4991e695efea6487468150135e718551f5e205b3b05dc3fc85011bf9ba614bb4fb8bb8d2e07d69540b1514ee590ec40ba15c5cf47f94219f377febded8600c656feaa36c19fa26cefaa44c2216da46567717e37529be6841f35b28c67700f3ec8574f4109659615d7f19370d79a0e841713a109be175d30e396314e60dba756ddee0175b88bce6bb5d966673b70d743e2c6ff42bd3d793a5a4c067e5c7050191694b4df74883e53cea150b3940f72e95bc25ab7a92c159651a5aac8ea88195a6bccd615bff07ed09ed459f682268dc160945ae9c99d99776426d875f4fcb884bf8761436ba9adae175d83403314dc6678e58ac57f14f1f42f50dfe99efc25a2282de67bb8675bacfede607333fa5b9ae09d2b27d935f8cc95ad128c38c8e19ea971f516db193bddc705a5b6b60086920890a186a84bb4ebb5da6860e18dc24bb44cd65e361bff773530b85782a6301bde01b18419fa645e7d01a61a306d881db047db2f5ae8f938267ae72b1a88b36a3502aff3d9aca5af220826926176277bf3fac710d138796b257578b2953b0668a2f90cacb34ec39bd3664350e3ea00db149b2fd82340a7896a94ea932ff9aa2835c03fffeadb4e79d3a0d9ed97f261e2fd4282cf34d5b099409df11fcca09a50e6b51a3abc83362ded8c01cec4b7497393ac710736d9bdb853471cf566d1a7a6860e593d34dc01090d81150b17720dc017b36fae29ee6245882cdadf025af8b7c7ec05c46acebb3bb4efe8f95cbf5828d88743885d2539049c6c643530ffa265677e7f12e3ecce3a164373d1694bfc8aa4b5792b1be30f9dc89a549c3773a364475dc19b4f02b592675575bb185f12d7fc34bb0490f0fa3dd8b511eb3ac37771ee6cccc27db6450684eeb2744c6f193955e1e579ef6816fbceef2749b6bf3f2dee4a5fa81317548cf8c8ecec6ce2c2ab6c027b6a017c901d72d337ebbe5e1086c65cfa94752f70e0ceadabf55650e9be7b61c8f9aee593876d829ae149548d6e5ebdb77575dcecd48312fb91c5015c426cc8bed653c6de38953742811a8b190ebfae3a6620613bc737915fed465e0bfb67c4472ee4201b1be67187f851262a2dfa702af830936d0a79fb514bb9e0d674d079c6a496ee95e94925bb04bd5bd9d8b9ac6cbf2f3f522d1499452ac58cf1b9411dd2635f895cb58a904aa302da1e8d52a5f2610668bb5e6439801994d6ce2c9ee4cb63572e8d15a0eaf3ab7dee5045e27acd0b46c5af3aa1b140bef606c85df8b0a498ea67beba2a69542e3a7dcec8a85aea0ac0519f94caeb655bb342b632f339c499b0fb064a5cb3314652d6ad4104b7daa934ef30bb316ba191af5cb91fd765604741c73eefdcd990c7a05e86f9e2cde0212e683b1dcb8e48255ce2d47f8851adb5fafadde14db913aa534f5587a2c67af2f0908fbf9a798da5b052b99865707d1b0245cbb0341a5e8ff6cfc5a1adaa5340732406a94b320857647abb085c50423684adab7d5d568bb580c3d20b640b2cc37e8677974151c13c0b95b32960ac77c74b7e4a3cca4750cb072f96e70af116030e17e38645d41a623838d17ab9187c95ede45cdd51c36ae06b17722f19f31d3acd628c2bd299c71a6f30addfa058e879ffff896304d5f773b3f30417b36ce465bb277fab89e0d7538e7e1554fbba4bd332e9f11b133cf5f680347a69ac8ef44b2d1f9d04b866f2e292c1319fbac1c7c48948f4c3d5872e7e3059fdc6cf26aad1b7c2fa4b4aeb1ea59d56e485e44c90b0ea9d0257b89752f5368359544309de8ceee7c11094193d7917cf8a2c8702923b692a456517de85b7b7ab9eae237a339f0566db945d2c05014c237b8bf9b8838cb3f371d02eb3af65f6655c0b29405e88d93ae7c981758dddd96df34517167e405e42ddc0286a72fa2e4b90e9e8f32c16d528f42e79e36af820c17ce1aa214b0235e0e6c8138145843dbe2e8f58ff42e1b31ea3352eaa54e49bfc59061f8e6d5be5236ba571ce112915474aee436243f7b5190a262787ca584970e84f3416b0ec94f712475f65a1818e83abc76677f50f95540acb05a65fc50b5d20aaff29e7ea57b6475dec93b18e91ababa90810803a051fadb214c6f8af9b0a659179edecd158601aa07b9f099c91634489ecdd425052e3f2d40a4fbfb891bfa1fe587d5944898b07a6b9787c5436c58c4c3695e94d033026ca4d0555afbe7c2b741eb0e7fa7923a69291fde33dbd40d27900065006b44a8a63f53ee5924b320f731ac9762bc322d657b0d8f4524294919207814be580f87da13487dbed3435be9ae47e754f4ba00c38afb9b2448278d2c0955e7b5d1df2edf087af2d8c5dd54e889b825778bac59bb107a58b348c10d42f38c08de4cc3e424b07de9b131d0e4f6d850c2432bcf439863298228693e2ef2d942f910535bd7187c76cdb7b98a5a1acb46cf0578a0430828bb7c67daed924e61fa1934b8d018d113fde6d235873a6d1ac30c434a814515efee97bee821b8b290f674f91b6fc1f600582d48410f495f89cdd556987e9bb456ed9b6870d7014a7adc44016cb6956fcd761a01c95d3bd39838c80982c7354cc42033b3f85d7cf24b39c96b853ea990de2af5fe1306b2f31cc3f28d93103da3b6dae352f2d2bc71ebb4d63c6c0293e2a9a4024dbbd145d14038c3320ef049d51845e1d8a07794ba2e74407bc943e6da90282e4af311ce319f307a2fb769d6387485f95a9d68b3250d814e108ede38dcecd9e223ef5bbb1e6c17db92dbb6e0049aa11194b5a86f6d433181b21c132c13445c465519fb9546733b6082180d8cf73799e10e25e544e4f0c1b69343d594b8e26eb1aedead835ee31849555d7065a554dbc0aee57249cd9b391526db99b673a7cbff2b33e1224f67faa43a2dd514d473950170f038bedd85cd1a6c9c7cb7528889ec2f50d77e8594aa945f7a47839e187deef9f0e464781837e81a349a83aae1ea2f07369f60770f4048b49a070e556fc58299a727bd91495c6a0a4a4ec986c34444f3159cb760bfdf5e60cfc816faf0e0a3dbb4860d0febe1a11babef7529e3786bf8d417624adc82fbe1a0dcd0377b803f43de82fb30be2330a4421502e0933705695cf631c390f2c05a01ad80764a578e61c1d3e6a540c71053a68ce2feb4c849c206b76d98b3b1335aabe39dbf1d82914a44d56726c6a602058b81088b4fa6a493f49eb094880488f5c2f9807690b43b657b4fc8023b4c863e44820c6ab662d02f786a79f3bdf14ba31822bb5120a60d06e0682d2a18b1aff6db1d764791cae7067b6bcd5a5d73457b3b9f28393574039dd62cb5d2e0251bb35754cbf805c8a1b3ec19cf0ca2849c4389878ac9b964b44d23230b7ea04c69097f38c4a8cb1182835cde9123c248a4e92f126d1ef2d842926c28dda1d06241d69f5afc4342f3df9a059045b029fe081d14a1a66de08336e6d1b4d20322da02cfc5c681d623dc0d1a1b4ee2e60f340e05e2f6415bdf131a991be9b860a143a5a914c944ad07ea5158503e8ff383b14122215a4f41972cc7d7d1d08b55978e9980e2ba7a74b7ab74f47a5335ad29104edc55d8ff4214b0c6d95abed95ad67943f669d16ad020facfa0c3659d64e22ad10a0f5562bf422653d401d63033cbd8b73b5de78efc06086c6fb60df2bf8f06cb39f713f49524ad2b53da5fb283f3cb62b96a6c31c4ef77aba18869ee533127b53a4c582ce2716d4f701ea45ef6aad6338521e9e6ce4f1143482407230da143758d0bda7e70507682081b290ba0961a1f8b6d9723aa832cefa5c31c8fe107ef3393ae32add75f4a5557d3460c5471cff1800c8bc1ccc84315702c92c4b95c8651c343b7b77f38bebf3786411efc6c539d26ab4a2d333f15fb79cf510b4220b36093187ed5fc1c2549ab2149a8b86292f8d3df504336a2c11bc210589c887b2f2264c25f72d39cdecd07cde7671875a999cfb74114c5dea3894a126f789e78b7cd7d573054d5ceeb74c3d41fed5d5b1731fbdb2f3de4bb756582008dfb8098d68b344ae38cbb080602709285929d52442b2586525d0a010a32a1465b4a38b89a1f73ce530394fb991ac0bdca8964a394a9503098652513c068d0ad3e8f1bc475c6a9b99a740e288969dbc1929aa57cf774c166f376da1a93eb319d24f64b075c86609859c589cc2f3674ecad488c325213e86a39cedaedb03373bfac044a9f5d52daeccce9c6c021d992896c505f4b4afeef5d63ddeccf94e0a8d55d61e9a1db80548ba3a4631d3b078f0ca74f396e50cd37b47da4e1da727568c92d4f2261723407759246a64a00044587190c82c9b29958c0eddbfc9e6a1223d3f33249c342aa0a2190940bb13349c9b9c631208db3be79ebef99b4cc3ccf04498d4e793d20b901139458e5a3bd674842e6a8867cf078aa45c519fc908a0824f4d422f5f2f91b4a80c93681555c496eb4f28565753b3aaf14d064cbf5496767d1e0fc7d33f1366b3d926f08bc92b5fa9893f64f349bebd39f68b72a91ded6947ec81344e8473b25e0fc90d8504d94e753734fe01d6d19e4b4a39820e16a330fc12f07edf6d6e36e545859585c6991664a2a244490c1a41b8e3cb96bc0d5af948b010752c48b009451f32c8c764831a7fdf95a425b945d07605b6d9f4e5431cbf2c316ef3e823a237f07a17ba99a50e15a5f08e7051c12664e4a6e4dab90a44f30a95c7dba553ec83a6cc8aa1a98859af6a2af3aedc9b5490232c30c9d0c6683edbf46428277ca7d352b34a725bc85343d5b2293522c5df9380a2f09fc2ad8870322a7761f39683e1b0810334175dd64efcff049f771b270737b830d9b974a8e96e1bab7e68c410d07f7afe71c527f47998b5cdc4e71fecfe3e2322bdc4acd9488aeb803aad1ceac904f2d904f66901bc0301a86f09837a9021cf59fdbd77335aaab3323b232603a935d09c35530872b346ed0227d147b6d9a8c4d6cbe146279a50d14a584c48e8b0f91873abe9e80a0bcc367da0af4881a34e950b89d0654cc5dd181304196525c993de2cdf7d84854b7d9d75395b84e23a70aa3069b163329a0d25124706c0e1259f662d4b2067df1a1cc8704fa46982231608c14f9afba03618c0a52e60e68a3a2c1629cba9106359573fff293a87c31e15ae24378792a32acc984e6c39fb9511ca9dd6445305b2e410c05329bdc44f1cb6000822f222438243b5faad92574698e0c007aa65f0c90d592582f5353b861cdaf55688a419686c0a22f1ce23a0113ba21924bd354bab774a57bc7c3f10415331e7a28cd62ce9a9c7f6538f5b64cbacf7438498a8a6ad288c11a39ac8203f9d941d45fd7258835c889671736f8d1f532690167246122b1b96efd4781157ca62f1ee85e5d449efdd0d4452c9a4b3956e36d83ac533a9ca08b8827bf09519810cb207ca6a840ea19be3f98fc5ef86e38c8d206b78c12963c41499e29a1234cd5b090fa6605e7aee0bd78013c513960cdeb2e0b41119b4fe2227ba7601333391121f2c00d945150d59f2ee209d0962e6235017dd6e819b102364a36fa749c09b241d9f82be0d386568755ce337f8e7330cf0553088715344a72b4fd8e4c9c018698437de6708e33d2c15468ac430294868b0d1ad18c20ef518fa33c0a91f09fafeadf703ef1a3c5e341b95e4353d17235fb52715cbbfd9a945a7013701037fb647e83081a7844726fefa73e679aa29727ebd699a237652d53a65688ad2f1b5971027b242d89188aebb2ce130518044829d3e34ac37cb1a589472d949c93cfe2847542e2ee301da29fe077bf39ec7b53fbb413eb6c59276bb3d86ec384fe1c12134cb015ac8af177c4f2610974b20f7625a05a8a8ed186b297d9a69c0428b04bf42908a74ed7e5baf15a8aa020c50e9b280860b80ed1e6f32e3feb5065364b5312441fd73088189b912a97253bccc0f10405b20cf4523cae7671bf954c1a8fbd4cb0ffdfd8dde5d45610a6e81258ac2d70340309e58917ae23786489144563887bec7862ba83787315c75511492092850ad158f1d6f2e7858e48da311d74c4ce0462ae999249d102c1790751b37dab3b8880865967d1b15a04aa0a7a8de0a121e86ea30b68f8379176640650f43a431e00e4c512c15991446f00d855de3b93653b594f79ed85484d6b2d982adfe7568865dd5be37dfdfb8c8466237d90d7d68e0e50349203f82aa80bf2396278f9aaefb45d0364055c3348db63a3865fd68d695af9cc2d0dfffce2c3b75e6c1da2987b7adeb648c68738413f0776a707054b42c320d198e2ad087938edd7b7dbdf6f152a70c73c806b914602c0d6792df2cc530caeb8c0e746f3a7016c9e441ce1be8262b4cdd10b2706159379fac63f4fdbb21034a3ffda103833d4aa6761dd3b76028f37b78e13a85264008a4570536f667e49ee489c4b9a69891d54365e7473cca52b459e19e4221b2e8ed8667983cbd36f29f734f0792236a213a600b17675e05b4581d98246477f899a82187de3d9e1f7a4d402b9edfffab401d77f7e29fbc27d6a03aafb72a999a12370859a0b50164e446063a5a9d5e21b07742a4024ad7bb3736a4d9edb93cfccae45af00883d2e222f0f6aa9712f15dcfa0e34dc479dba3c6e3dcc9821d66f6f911b67abfe7ada47401b69065428e86e52d034ea3a64dd6ae987494b4472b7c2df974f2f6b4b74030be60a89daf2c48332ea1fa0876c60b308a983b4d99347950cbde2313389a58731c6fa567a069e5a341257d4831329da23d53535027a38832a4b927f5e6ede90b8eb876a63516c83a04544836410a2e12d2ef5039690ab4aabfc79322677ca7a4682cb122ea06635de658e2eb499400a26a34e1675190e2c7a07705ff66e15087126a4928f0a26120f7b3995d7027d0b8f857a4732aa14f2fa49438b2a2c4833a9825d5f3db027cff5ba4433685112192b2f814846ffba9d1d1966eeda649dc0ff196b1d56f5cfc2300e49ecaf19d3e4b27824fafbed7141190379c8ceb20d1a730baa11ac5acfdcf536a23b8afc540c463c19fb954f9883a3b878ca38402d27c3d3947e5aeaa50fce7360aea4bf600d82620f965b94ee8d938e0c451c1d42b96ca7d88a8ed9a7a57930ee733905f2472180407324489c71aa77fd3854b48af51b3286395ecc388e13aaec294b01be1d0804ebc880a8aa0c2806affb8da83ce6ba9993f630ab7069339fc23928650db2746430010abc54254f60de513ac5dcee46d69e495cd683d76bb17fc3f468743423f44433f0415fe1656a4d89d9044da10e93e3941a7c839e641b497561037252a3c1408b6fc4ae8ff2f14d997a49237b4b99644a2949290366022d021d024b3c5256d66f1845fba81b76bf98f17befbdc7bcff729937f6839eb53b1958accd8ad8e9c11d9d2d37456444cc4f4b3b0b5d7739b274c790bb88306e7cc007f3d116f2102e59b2e7ec811c341c8a5363050787993871e1edf0794963603747bc8e2d74b02be00cec20af0a2b9a947ad1a4b87b6508243e543e3e6238600dd79103967c08c1cc4b98859881d89ede21be2210421f34d46407c04c076f0f18ecff4909dd63f732f36ec7e8271c69b2e0270dc7cab1c86e858fcddddddde58d8baa754a46e31a820516ad96165a6491c51557ecdb424361f71d69796374782678476f6ca9a92e2c65dddd254782f8705ad4a1887c33184ceac190727885117f780a314a39e6111821e26b8948f4e4c8324425c6252a4e1c3993c6112f30e122ca1a2f2bb2f891e2048f9111b58ecfbe87ca9853646c6dd5c618e1b2f8f1b3f37baf4520845ecc138fe22cc6125f040a1e18349162c398a222a470658005974ee8862e9270c2a3f83286cf91257535c30c3f6e3c6195b1115365cfd892854a136c54d962f45136325d5ca104941d9468941e0180782823952af6365b2ddbdf13706ccd72b0b42163b4e8714a31cb71b95d3ea3b40c66f3bdf71e6ffb6692b39f14736e205e40c8a3791665b69ff1cc9a668e65b22bf63f9b21902e3c07161030270ba219707fc867236c7002adad3ae79d792f973b9ef0144c72822ad96d480406b091fff205c821e37dcc9d7900164812892e4044b31d3fc6c00cf0e6eca6475d03640e2cc668e21d5e98503474a70ccdeaf0bcd46228c9c913e63f8093202517b57f7bea6146d22949e36112d278f0e8eca472503d3146f9bc853c023db053f68fb5d3f6d9fe014cc3ce3ff494457b5514fb44b500d9b044499830684891ec6fc232138a009a996538de4e67261a0130219ae2cba12b4c3ab18c0bd3949f615c487677ef65b6c25d67942eee8c629953cc84d5e034c36ec82896c4b14d831403d3b56363148cbbbbbf29c3d63433ece96e6facc9668759a4957ecc88685e7fe264ebaa87e3e1ed44ac7568d648e8a0d9effcc5bf40ee8d61e51c1c62f7f648d87ba56466c698b932949a942ce54bc9504a09bd6ce4f522e532e6ddddb54227222ec65f9f3122a8947d641aa93a4de7ac825f43de94c74ad409a6c04ed400d8ee5608c24227a7b703671fc17a3a6a276891a25e7822ffe044c9678edeb3f3a6b9df68923066a924a5925492cc53899754af2895c47df2866e1c05eb1a396a36af6b0f1ef1bd185f5c0857b3a24508231206eb4e142354b2001d492703c485335a5282efbd777405a90533ada600575d4a01d9208e0eeffc4764797e2f6576c9fe8fdde502c917618c95351c5ead7886ae10b9584a46cf8c1432f1391bcc148de9cc5468640411dce581e4b900ca758e1b637c4c704c704cb098688f289a9c6050fbcea185f61870434c85360439b8716b54692fb4d103989b207a878a4fa931304c1067d02872f76eb7a2d5de26719d2c33dc86fb52febf64deee45c0ddbda594b272f51b6e03224ac9dc86d434258bf25a7b7de8ca3d471e42741a78426a0d045be346cdd61c1c747474969919f644be096161532cd66c37eb914d069616c559ab70a08cf0e8e1d7823102c74b490f1d4437130e5674af6185afd11056e9fa0396ad0c96ad8c1058b0c497fedfa92ecf5175d953f393a480f078903782c866cc9747a6368890b641b6cbeb7ccb726fc635cdedbcbbcb5cd33536386c54b8de756df6a66685d418d54031416efeadd9ed75dfe6e5e57f1b668610c29e37330de7ced84dcccc446336cd3a759a00d9b0444998307ba67319abffd4fafbcb97fafa8727c22d61521bccd19fb4639362ffcd34e328e94fa63a6c98573e3699593eb39c543a630c9d4e2e5a6319fb0bbfcbff09259c10c21ae1b66c5fa9c346db1376dbebfb3f91dfac1d3674e985a57b595e566339feeb7288c9aa033a268fce6427120879393452c0c0ebf891dae844d6296f2ad7863a8fe27109e34b3075a344a2bbfbf1c68cc68bc8bb35cc702c6f652a0352a38256dc066d6c60b7436fd91e61e6b242e9a8d67a50db6ab5adb6d5d6edddd061d330acd5942a58591859e1562bf70a42f5ce8b6e7d9925537956c72aa242bbe9d2b8632d344a34fdd9fd5330478cd725d63f4553f8ff0f259c60f8cbdab277a7789fe8972e49805c49ba24017225797529f26af635ea8e58edbc31958acc373bd1a4a3b3306339249a781ac72bd648acae63752cc6e11ae683d4853903898d9698a32ee9fd4ba20f69d21734898036d9f4f693fb773652bb6812fd82269d5e1d331fcd8c9d2d280772ef4af8bbd0dd3dd275a7d09bc68acee8bfa6a9e6f6d34dd3a4011fb819556c46d0297445ad508e264183e4df50568f30286ba3cb0f93a8b7c94124f067befae75daa1754929aeaf42e9afe99a6ac8b32f8038dc09fee9a63bdeb8f54db84f2e26168be23d5bbbec8e8a57c0745a9899a6ba32e1a1a1a22ead5f3aa732cd5aeab57ad36700aa82a07df34abe5cd3bd60c042aa001e15ea0882588fa979be4bff933676bbe1a68be7a9bac9c16647949da779d5627ae7fde95f50f76e2e47c7a5ac9f9acef5eca53226e72b3355bd34bb79aadc94d6e124dd6f67ad61ffdcced5db37b6d42669010bd5e358182a6d05cfdbc993f7aa4e7f2ad27425ff4acef5e4ab7ea561d57dfccbfe25425f023c748c3c1834f0b1aa922649101c50820d5194a30acdec8e109712858a040da584bc04081e68e552a04c8ff512351a002f102951760051a0a698ee515084c1d41d615a49d2dc88245500aec263c82572017d88249d0058d20158804bd4025399f7272feec4dcefff992f36526b3f57d58047482087a6b8ec3df2b470e3dc2f8ace8f0a9eafb616baaedc75f4866b7f516c42b216ee81d71b3c5ea8a9a3302d4ad908892a85193eeee666e65185ca00107bb93ab3cc42be69888591ebb97484e66c95f46520534b7b9f229d4e31fe10d8c10c62a415582aaac6274cdc6eb8f04341ba7710127c2261cd7238c3ce39406eba469058dd9d72e4533b182d769f1b41149dca210f7b63af06013811b41ca092970815e924028818867984bf1cfb076d39be4f3a35383c6a0255b104a39c2eb2670b99e19a5edc591e1d2a92207e35e50c098a5edc708a48ecad1152e44f38d64502c32b2822aae74be945256a982c4e6ab30d77f4d5bce09200b6b5fe8eedeedb7bf0b6b5686078e80a8948b378d044001538700140c874492380d6224a798f3f664424b0519094533715c0e8a488110085120c231106000010600c3145188a92af3f58f7acb1e39a8aeb00d0b91098aed70f493b1ccf20371a12f6c8e6db3dad9988961db50c94c992c47e1fa9794902e979754e765ec786f24b98e313555669836a29134f746009637348c83afcad4c616db299f9f78d0f595089e662c73a3df8c1881bd0eb691250b8c890795a03da0d9232b7f9f5f69115e94e19af2bf83776fc29d6310053318037e735a9eab9e47577df00698abf2acf15b2339d8bbedddede46faae3b7c0a96afaf184da3850f0b0556e829e896b68aded80c0d978e68f86ac8e92d8475efda38533fedcf4a7b588954727023ff379c6ba180e5914d1f0c68923687c195f8a30d0b33d546709a682b02f6c461f132f05d446e991673c6ea19f3f21c5ab43e662222b0698a2b4f16b6286f994ba362860b1e0687480a62e86b61059821881ecfbb48ffd66c4511d830f5d4324a1bd396d29130163d63b100ec068667234fe5247d87e08662cf85ee41531c2f34b959280a8fb12ed054766416931b6cfa600d89072b8484e4f20c11790fc7b22f58cce2ee146a40d9b229023d57fea4279018858cd58e444e61fe5404340bbf5fa9df9a1dc844c97ab69eff7b78483460cd31ad6810817f960e0e3747cc4e414ebb8e7cefcb8b4596240e0410711ce485a995a12f22d347d578508ff1a2489d04dd901beb7b7415889a1af4eca375ca8f4308980170b35bbe99a94f4ce4d967e8a01c93de807afa5bf1f190b65157f83722c518e1811274bcf305fe96e78800346c01be33cb1c84b90891414d5637c6a5c0c925500515a10573602ac47917818a4bc35e721e210b4db49233e7311f97b68b1a1ed7764c513153ec78f5131bf22758784cc68ba170ead188fc2a6dd0f4b20682c283db5679ee9584fe807af8b447625958e567fd08fe2c0314d8ed12041c1a945ece06f33efaf3435b8fdc4bd509ca57888dd40d7085a61ca6220b94c603202288a31dc29e749ffd542ac3fb9636576f871b269efba85cb3ebb9b4b34e4bdac04944b5366351421da8c207458ee0d82b5461603c3445f578651f4e1629cac4ef5429df4f591f58b07d07a898f413d6d30383c3b3af5e6cb3e1230547d69cffaa289963da987566609339829270b30c32cad5f6d36b99cfd008f689299cfd0d0c5ec5dc2c03aae3fb907b8650477f4ccc09760ca70e9eeac0003cc2fae1d1a9b220dd35530a81ffbf086539ae4eb7701793abf9a906cd23a375bbfce03987d3e67ddf7d4d722f3cc254bedfd6abe96b16ae617809d202eae49813029904279705d6af5461a61e9b4d0d5abaa2864519d7f33b1e71594b3c342f644eedcaf49229e230f1d9b78eb79ffcb2de775eb6cd2123db1092c6cbaf6e17ffc84bbc760f003434017d6daa5687d13d9f1cf0c277afe33de2b4760450f0292d8bde5ef6bd00bbc264b29bca183a3c8e0310a454667e7ca5d2086bf95d8ed9fa73cf24f006b9f4b4c16e2f8892f854e765b33f14f9798ba4c2dfbd93018609980a608f061893ceeb5550fc9ab550841e35aa0ef9d610f9bb2c48248dca616ad0660e12af40060e09b533951e43cec1ab8a754a0947173823660230f4f9d7888d2eb4c16b8f09b437840bdcde9142aedf6d1eb67432351bc17b62cb62ae0080cbf157014d919a83308a7d3fbe092ef625f8c747e394ba5c057ce6faf6e119325732bfa17266657b9a6bd98e1e8550af695dcf687b38175969b50a556a66047eece105f3a22c3ec57d36fb8188baa81d116c2860d4664ff289169408a0e9cc922d82305c3f6d356b618e3031e6887e4089c9d4fc7eabf7d214c883cd955a599f016de7ae2025553109a3ff669ba958e2f544269b08c62f9675b65bd4d9f984e8d264739c0be5a41d834d6ccdca5acbb8782a8bccc47f74f2681c479803666031b6da4d11dc78704971b0be7a6b186e0d530849a56d20b453caea15a87880dd1c910aee5fa9df40854d35ec9a368687dd9fcb05ee0632be178467a40556078fc50f8934aed1e2612f5ca781f6a331cc6c53e4fc4a0a72dfa42b3287c8a298dbc811a3a165493fda583962f2a97e656a2098a768c3f54690cd8329c44fee1d0b78a23a84659e22c9a662bdb12dd30f632f94d36898248ed66d09840495572c11afed5c4f9ea9603aafab6e7d6f66468a67118c3359592b1e836f151912199be765fec420856f112ff9c7108d02806a0757dd28b6b9f1fc39dd570704c90dd0038fa182bfa63819445f2bbdcce21983f8217cec30d814d9784f687da43c9cd48ffca336353fb6bcf9bfbec2bbc66265dbe0e626d46e4b70ea4317b4ce0619566154365c398f6624d328525d39c8c611b1c5bcbf432f06638c64f41ebac237721f460b997dcc0db16eb055bbc786127b8fad0ac17220f589fe0b11575b235fca333e95ec595f73afbc615e303a87bef5c854493c26ed0022874e32589bb8141d726220daa7c92ca9c9cb5f8d679c7399211f44e649bc9cdea49bc050ffc146141d0ca64f9535e84f741b442088db669c79fc00cda2b1ac014ff8e2263022e55c2abec6ce0d6da0afa293970c6ab1baf19ce97040e806ead097898e7970b632768e14daa9ac2eac611a2abf09c4855518b59156042d3a789aee837fad0b66db50c42fee66cf18b231e16ea2e338ccd836ab55360d763742a776fa503ce1295ce72cec3ea22c4e2200fb3baaedd913808943d3c980100817724ff824a36e30b5610fb1bdbc6f4e6d7a6da4217b429a1b784cde34e951f8c26623a83e836bb088ee1fee2a5cd08c7b20b196a388b9e542811c5e218a4889c4b3e8d3130d0312d786de63a6a9a77d1862fb868105b4f56311464d6f8fc33cdabcfe857624d088286a1ef89511461235c0e87233ee91540e5c78015d4217d3130b6722278276843c6a6380937f57518a3ba04ac33a7b98410704b4617c8b393a21842dde3962cbb3f04b63636423159a2af074ad5e035ece79f7ac5ddab00ac39e67ac2183481f4e5fa2a22b039e0934aa25c595d60e45dc15ed0058e1125cc5fad729bc8f2bea475230bd1c1c1bab5f3fad5294c139c39600edc3f23a95bffb6b69ea9985fb31f2f37b94c0eae333621ff42595fbe3028d0a0aae5de52d5361e1ad00cc174111b58dc61bc1ef1028a1e0735c9199e71ac0b411bb0b80eafc098868101c303836244761a8c6126c54dee6af47e7c32ba98dfff87c71d3ed7412afcaff878516af114b3aa85c44c29e49ab446114fb1913f1a7e22bb5507df16c260c26c6e5c9b337eb0a7d453501526698906ade136bb67e0e24180e6e6cdb759287e87f711cf39686292947d61828e6f77b4f4dcb0790d56d174c5b471fdfc01418309def1261b04ffc2a985b890687d4ff7f4ac2850dbfdf18e3587fa17cb2769f6cebdb380bdc0c4e08ac361f415ca66375856bd8c4f949cface4b7aa319798122e909bc8241d6425189c254f1a021e1f7596139723ccd5ccfe5f95f2a2f3d78991c2c55493ab877fd0495b590fd86893763ce11d9d482369d1f5b303d78f85390868453e115ccde606da1570bb6d3aac6aa99ffc0ef60b5a96086ae3d03ed24943ad5c569dabb6a2a44c060befe9fec555d817a8f0f06b0459e9e216f48786263dde4fb89e4381fac8b4314cb7ac7d346b9412b94145b6127f4fbc466a296cefc249efaa76249e535b97adcd68994d1f2b287853c7e12769da8d0d3e7556469fc934dcc1f474e0b424454c813a2e41e230f581f811f9e67b2800da889c83ba6a16c3619efee31bcd562e443bfb0f2c0a2e304d02117c62f0fba72f0ffe50c548373494a01ffc5f84e3edafa7e7ae94c7fa27b746ed04cd1ab4f6aa6157f036e958b9e046b703927cccaa598238d6fe8de292907473b92f832a47f891e2109cfef446323a7939d0d20c873e870a42b75a1a8833982f7e0368144e76d01a3833ff0aa7be7ca0ca73f1508a991bbb0ce6d01631a7dbb11ec0c09fd8201f436043ccf80d742c334eb9f08924a8b5ce2b38a6f7c48f116778840c42533face4453c9f1d7d0c1ddcdc3af56381edf1be353cad98b282b9f6e5e3284f288fefc99fb4d090fc8ef5e2d3a5482d02a3698bb35c21799deb444c1e4ce4973f44092f0fe526865c156904b7afea2a3c50b3353b81d7b49232c4d3e8c12fc4b3a9b5ba11350100633712ed6f23312840956384d9d6b01060a51586edf89e2afb802c5bdc19e5aca5eb0a9beda618a743af7d73fab3c7bbbb4c22fb02441f67e5594111a3319980258fedec44da43b241b79891b7a6b2042dba12841992116ba9805dab6d8c12fee994dac1200f557bdb6b93967f1ce92010774ac07957d328b1ebe57fe8b9850a40c7e79d6d84e7004135eeb042fb54b6101b3c802b90374ba5ab15051142f68feedb9f514a6e03659b8f5efac9991be2223854657d1c432194ca40b55e6c92f3b712d643268b3caa9c98d81fccb495ac9569d7975b4627f8a2dc3eafe8ac8cb75c419fc51067761379281b26db806a97287dbc23a6754e4f501de0658744c402653014ababe8ad811048105dc22e0d479850700dab40b27f36ea7211cd546106f6b2653d0d9b7782508c0beb2b834f649eb5469f7975051fe489c45ece816996f24fe8d1511c7f1a46b2f619fbf8b7b0c57d69065bd76aa16521117b4b3da898ebbd519975df3333b34cb79cfc67b6d3a475f0273d49e4fe113d87a090cdc17ea15d097b5f02559d696c0bd5092394db18c6a3cb84058887af2ddbf8a53d77277c57c2f2450bba28376ff190a4e289a45c24c5c21b5b09593e631f8b64d7b0747fd265ace1298acb91a7adb98f53aedafa0aebee116d5f37959231e82e8a6e770d09b1a2c22d036aa73a2b6af96e541a2775d120a91cccd89958087e8efaf6ca833a47e18c27f077b667493935ebd78e4221ea463844ba8cd277a08770db71698aa49ad05f83eea71a1b57bf6c99c72f5ef0383e577a1a9cb461d51c3e6e32c67603739a6915b0eb2dd489ea7bbcaf118e965342cfb40c20fdcfcf813c111a47fdf08edcc6ad555145014cc144a19ca80ddce0564901e73909258be3c64595bd7c3e32b1d86495f7e08898054c9445a028ebddf8ab2d0b3d8ff757db1937891c4b4f71b4128e39f414447f8e287166696734fd6efa165db33c2e4e4cc8d26713ea138ebc7367443d13fb0d0660f49c0cc2095fdfcb0bf1fb7183a9f2d59b6e415906db71ffc32a307be248a7e7cb7f4558c2a53a334828b97b8252320b6ba960d99dd6fe931cc5a741d5dd12bd987224d6954f93652fdccd91426991e4c54d2a3f3a1cff14e2acb476a391b9d73f2731a863f22f917f46bb5fa9a86fc88169f28e1d40752388ffc8460c37ae28786997cb5badd6d040da9952e66d13f1497d883da076da89ba45aaf905046738d09a1c9a29e1d04667eb91b6336d58c74bd48bf7dadbccf26ea21d3c40f121a6cf0216f63393e4f2d273d281afeed4e8aee290c3771413e1212fbc6418450ff24a3e12b711eb01ad04b00870976547e173208eccb6421d3673ab31adbbcb3712fb5452212da65f68a610fc954ab573e22cdb19671c3b0f119c120be847cd9f42c33c6c459b66a91c624f3499cff20da6cc66bd90199572883b9e8986ce6782f37a3e138ec52ebd3345282bb424aa5c8589128fe91d157b2b6fc130cc7b9204fa7e2b12cdc0940cc2a6418703dd9e06446d0b7284f704d05282a6c692f6721aba03ccb2ca003750a2378932d385f0a47ad22f87f904945cec1980f70a82cced1c6d0288e2213afd57b26dd783886bacab77358ca638d07e8f03c53871af1a35875d75901e7655515fd3a46296872b0c30bf5e5bd68f14edb02b11b1584c12452a17c5ca0ba95205a46ad39e0de51b3a5d5d52001d64ddb963a4413a3e0e9ad229956032555aa045b1074b16e0aec9828bab26e95edf5399b33f26607d89a9bbae236f7ba2aef0b2162bc8ba9183205bbcfb7e6ab57c33e62b39a9cf02d779162bc725a22c935df7d70a39299a83a1ca9a946f4b3cf61f15625f9b1939c7347b952fc60c787cdaf7e7d6514a8725ae0fecf56aebb341338f95b31aaad1fef891dd20cf510bc421937511eaea730aa790add58cbc6ddb0f4e8ac8481033284884b2d04920466ab1c29f13b074feab029261a55f2217b74df7d6a36238d6265934acc34a6169a76d4131776946652d6ac8f152a5d74584844de4428a395097c849d2214399a10a74eb16fd16313a04486d69b69aa6d5147c04672aa650872d0d7bff7b9d1f3352870112e65804663b2165277a755f75787739b651f0018cdf017b10af838d22434ad537beef27160498f58c15f259f503cd8f6c6f0dc8d61b1adae1bedf024bf283c0ed3708cebfa6a26ca6bdf72a7fe7421f91b20b78f5f613ffc2b7b08881ff891811b064b445c8af6c3781662aeb5575ef79b263cf21a4856f7e21027290699fc4639e5941f8a5cc5ea3547e0b9047eb36a35eae0c1d74d6059cb8345753dab4bd63ab498d79b9dba6e03a0f94a2b8f36b6e2ba145715879cb8041f78ed0fcae9961348d8a311f11879f6e185c0017f34877eaa6cad065fb7da42ad3b8ea8991a6187d28c88f3b6ffb0ea8010ecc263f90fc2ae252b0e27ab8b8b8f105b351a44bb79a60610ffc205e6fa82e21af6d3809962becb980cd353afecd2724a62c712cd0330d790deb30cece825535bae47bede33e56e5bde652b6da7b0624a2e1fec31c63ad91f832726475c8c181fc36184ff0b9d315c425fc71aef23883f780f2c9a27ef8235903caa0d05061022a64b6a70f415677c0bbfa9f19a9593719841f4069e2be2b9861c74c0477ddac54cde0fb28d8ff048152291b58fb9d461a69ac6430c5aaf712950d68d66e0c69102a51064f508ccbf46edad40081eb86b4444d729c90f3242ab70a4e469220ff1dd188b0214252ce2efe7d6a8144145d6437b7c47f3b8a5fbb89b1601616755b74d0b4858502368516b602cd1ba800e80e4dbcee2d0d18e5e1afe9377c91cd89631a7206b57833d10c714d008d15d54e8d541c88a063faf6bc3651a4b7d0c583f68420cd8607ec9307f09fd2660ae060dd592c201976649efb4d13cf30fb9ca2ba89686da560f034b9a8164d9ca8b58bdcbcc70a8f99e2b72a29c8f4eafed35b0257e02b0822cc1e2ddc8743820cfb77d3d0939c21e135196bce7f6379d3b79b48a23ee591ee629905061f2d47d9a1ac9ab38b3e1f3532342c80c7443749b70d8701c3f86697fa9b4a6ce6af68272a9428773ea609f2df0595a5597ec8206d2301071bf85b6876df8581cd826fe707d2bb7e5018bca8cc1daabc41a5ada4129616a6887dcda7c12bd3c1e0f94252134997245b048a070b78fbc343340530c4650cac57110161d0337be0b1df32a448ba710e3b795f96873556c422151dc214564c9a870ac4a0efbaa0734c11187f22da4fc20711f5f6af734691a6536ad57722a7e97b13e7f4f154d5f22d7595fc31ada3c3d19280da1fb097ee18e4699854d8c449c650f226dded0654a039671273ed17b36ffa1351c4efcd99cbcef94afe70150ec0cff009323882a4b635eaac92b060e86ddb1328da312a6bad3fe9e616c75f5bc626ac723b75cbc26ef004894ec3b7e1000ad60a5528c21a8b08cd3739c0dab23509a369f0428a21e9c13af5a8566efda814b7ab4d42864ebfdc2d5ae4b16352ac37342aa0ca8f16a56a424d7d1392d9f02e04822beb0ccc0f36dc8d04f5456ab6d260932d29da60ba87616e17d68112c6b80c900597bc9181551ee723e7fc31d71b198d4c443d48ec9255315586f5e0fbbe07c6cc6fe68245434adaa123206f53b1f69c7de1ee4a678139641f6a81df570f1b1cf6905bf6264a5ba0ac8265b5d39494e0f45d7bb76b61e330891d0581b1cbd89dff660466c1d05283812f08b6a722ed8d45d006136fdb426bef0b22a844f0fe777056af9cca4458f701015612f1eef834478d99c042a1c034c751a9075884614bb04afbc881730f8d555acee1580dc2c2132365bd5fbf18a4905823c2d1219fa6d1dd60d8564c8c6438c5ce119c2330e700c12aa8cb44a960834b417321f5121be6ba8c49eb506ec9517bea5d2a3cabfda7a384f5147954ea722826945f68634ca1f964126a1bda071bd9050c6ecd31367acfcf5312a9cf45be2d60a9494876b113a0660492c299199b73603966170b7218198be9b64794cf89f8216bfa8a1ad2729ea49ede058bf67a4b6554b3e1007f7a3de19e1d9be4a5ba2e30aea356a24bf2ee1e20f11b8f8b936a4e95221065c74659c24b33f26b7bd23faa3c30447aa539dcb046d3ec45ac32a13cbc8744866a501b3ecd0723c2f5b90397712bb133bb930c6c508f291563ea08b5165097eaccc4bb9a31d2cb105fc26f042ca70ed44c3eb533b4a0f6743182a6beeed635d45a5e3e37f3b9a9ff81f1979d3bbdb75064de2c5c2689447d19cb164b62296b7351084ace30163554ec1b7fe20718a15b8cead1f435d6365180e9ced3cc9c1c8a4fd205b3a7e925da422baca73603b7edad30f5790aefc17a84a98438aa520cb9c8a3efecacdd8160e3a72c941c0afa0dc6b2ce85e3c59508565a5cf500c140ae77e0fab70c217e993e5f904ffb2cb21b340a14d21c40987deb911cf273e5ba067cf05aa88dc238503ce35cbf302adead2b1007c818e2575d4fd4867fa0c7e3ce2a89bee2057341361d42523fe7c242729c19f0f729312c26b1f82750cad3325ced095202c077b89c16a5822daae2eaa724a8dc2a794c1658cc2834e0ab9aaa4c8821a328a1fe2201fd630ffcdad3e6f5e58f21b167a0103055c3cc673eb4ae91770656acdad0716bab3a8ccb804613971fde07683ab2375ebb0e955c1fdb1823848846ca921e641a7d5e369ec1d67083ceee2d20d4015165c68b957c53c4f3af31db85a36434e95cf53a83c5a7f4b84476ffafc0c4ab7cbf85e0ad11d4f90a78fe37b489f9b9192e4d6132bb782ac2b11b646ac0366c2a45104e762d605241d0293e767b7c28c569468da53f4e5da7b37508c6a44b51faeadae9497ec08b3cf1a8e1a2a602f614d0a554e0c9d4d42040afcb6ee88bfcb8b35055619ba3389f99eda06847fd4e15a26453c20fbd2c03e8c653b1d956bf62ec60c4bb43cdc8113da728f976efab61b934070f2ec34da7c026665289748710326627151d8bc01978f93cb9301ceaec1789248f7e1a9b00af61bea1a6889d12e5a1adf61ba06d5fbf7c42c0cf5c14bdf6241100d8d4b90323d2750ffe92d8f207632814422068afa80fb858a2404a1fd29732da5b60fc92051f73e2e82c416169ff412b4ea2adeb0d567304e9a24260a02d94744b69186df7b1afed70869e035ba8c8fe909608e5a7430eef221f86798b50d09688b41e7bd0232c77e5db875c7eac766539d558a074e0f7972da26ac1a91b817cbb347d8a4279122a4809b985b3e9499a6296ea80754a88b67f8df55dc39b7a5801454c47f01823558139a3921a3c4c344acef32482cc8d05ea9df511b35da5dba3dbfd757a95c8f29f3d8c83592730a1b498df6701acce4641ea843d27cae386c8d0e7bf56f42040647f7f4d838664e70cd9a6063e93fcf64d830fc3b6c8a315997c68311a04d805aff018fc25d9fff94f26d6107b348e43572965ec3c6dae4bc29450119914a737e6ca4966f3dca793f4643dd37dd25fa349ac79ed10b5aedefaff6171080a04b8b950866e17f3d07eb291f429674c1604387004ced04fa51375ae52e330c2d48fea7b080d311ff9db0e35a9601141bc3191173f07ad477f56951e95a8e03391091426fb61f37a16e4a5ba83a32b320218235c2855e87b1f3954445c93da1439492b53ea1494b243a6a1bf349cd7749dfbeb1b9f0caaf5254e1306382eef4a6036ecb893089266aa7615c6a9172b726aa76a4603ea45d3b255ec14eb61dad2407935e483a6384e78ec9f8afb28e125f4c36846f738e8b7cf8b4a35df1b8542fc39056f49e93a8c18e2315e2bbc96f05261bc07231bd14dd2d9924c6681ff6dbb7ea8569491c90444b5093233231fbaa5824119b3f275410b253458fe98014ff5b4719390d9d1a3b430e2499809a9d49d37c83e4e024ccf9fe547d303eac8f79871564359a8cf8845b040eb5462a6f16058e30b615609211824f85046cb8a44ade926cb2da4c36e1f8c9268e7601edb4c580d11a9806886140f71108467c7d2d9a1f2d88e66b4aee2bdde69c0573fa60c88c701e7804c60f258412f834983ddb68fb1fefff2162ff1fa9b0fd22c2ab11a94a57ad867c30d080613022d23876df18c9928b1a2462f969086c4d014af494305d9012d556078a824cbbedb46043ccb12d8604ddfe367c1b84dda7a5bab6994d83c0a68d14004390b4736e0b215e1998318c484062c280016060c6acaef70f28f618ea9da0d27f98a21896e5b2e7b76d868300c98b01ee2645122953d20e0203de02ea026eed47ec54d586acc5b9adb27aebfcb0ce5c2d271f172f5acd4bf75a8bd56155a92a594e753aa95668689be55a902d2c8d135be3e4ad673f0bdacd89a57635df1bd2ef7eae498e32e6592ad5b29244fe833fbe2c0f4f41fad1900493dc7bef4db974184a47de5bc16b05f0c9fe3f35976a47ed06c4c4533c5d8e85bf7696bdd5babdd4d64f15cbd0057daa9bf2ff372565fcbf4a0ec02edae26b512d2314e0e2025d4c20ab4e55094b41766d2e910a6455c94b388034142cae173060543f554b75c3338d868c65519aa119ba8180b86b2bae592c554848094949c9bd9487a0213144d617d949a79f05a1db42472620f24386dac217cc62ebbadaba60b82d1551928afa6b48564cba5b18d67243f7d3ed61e8c1f4bb7504e51aba6215d100b685bf69f8ac082b027b7bb8c30461289e7c289655114b97e8c0afcb5f38902876a2c25291ee8776235946bd6561364ea3552424241608101f34ea0382748184641d3c7c1019c11a3e71f9900acb93d8f2a21325f09e2160cce18ca9844b279c02058b151445c897c2c404a760b102a3c09d13998d52ac22e40b114173773fe1f8844b580536518a31c6ee7eae7cba0e44c91e2639c78690c45a0a8ce2c49706086714802a48780a14ee1ddcc1187be706cf0db1cbfd5c1512c8cab184f395af10ee28709d9c7027d4627526232093dbdd7b4b68a48e8910f4aeefd8d24c2eda056bda75c1c80a62708465fcfff7d75ac1daa9a1c59952ed70d72f35be2cda8d2fabf6354f9cc0274e586cd9b617ecdfc218e1450dedc58c1a2f46c030b0a59abcad9d0a5add385aab4ab44b95a95ae93296d358946a37211a0ea3adb3ded75aff63cc1f50e83bbc853b041c7161ae0f34cd5a18ebcb8e1bbe1b6e788b45d33e3051e25a4880236a20a2a4b2482c2322342a1266860c4c8a1012c23563545003c1522f1f3c74f83253e7caa2fbcde7138344175001c874b87989663c6432c13c0c9e3b891f97069f7cd187fabf07df433558648ddafce0a89ed6cafd03ab1fd8ba176758a90a4095038c8d8e51a9df4b77eb70ca051811a47c10430546634161b07635025ca527f5af43b1038a1e141414efa327d739a7c7075616bce002697befc4458bf74c36164e5aa10293480db82417bc33a5e778e6ffffeafbf42751d2394efaed3dea44cb1eeffde624e79048241376506da26767ca956d8a5182c0c1e8fc829e272ea872c7871d64dea1c8ce5cd926e7bc4d5e3ae79dfd344b95f255ca57394d945238de535c7420c3901a86d30c1cac57a8efbdbd27438410628090c52c667173d20ca02c66318b39fbcf6061ad880e0f5766aac994bbf7deab7d9f989edb7b24752ae959356682d1b2ea8f1e55afd05199ef55bd558dabc658043ac05581725d76d96697946b6a699bb8504c21c74f48342a4fd20638a5ed36e828b8669e55877742f7b8f89e86eb507cb301af4fbe75c6bbbb4522110c0ac041d10ddd9828887e94433b343c7569eaa622cd74a41f1a3ae146453990f4d27399ce0d52ceb1175867c7347751e22d466469fa69d271b1f2388b8aca39fa86c941071df46ac506ddd0f2ec3c2adf3c31fd01852ce566a440b51211ead18f6e602829a8f251f9a884ee7ba26bb1ca08e3065bbcaa66df5a20ce554a331af20185ec4a758e6e5ce35d9f74433dcaa12019520f4da1997e28e8a41fed50918e3454e1bba2acf055d1a3c237858e0a5f1458855527ae36597d6a9375ee390d67dd3e059b6eacff574fcabdf7919cdcf152489dc4e752ca31f339430d8a28077a3288043ba147b4a783bd75a6b9d6746769d9f935cf7df7281b6b4da593af7cc67eb2670a8d483fadf7adbedd9d042b2458c9db6f9d7b74d0c3f76ca480605ba30d82ce4595d0410443511f4691ecb5cc02b4e2a01a4199ad65251a0baf4d2b8042d33022d6c13ade0643c13a4c837116b78942210cf6c1c6f1b2ba8bbdd8b8775bfcfdfd8265fe72ad9cac202bb5c5649bc2d8be5ca6ca5eae1236b9990d1c08564bb4902c534c61572963ca94feffdb56300c01efa76e5d83d40df40989c88fbe16c69a86977bb1d7c2d70703af0e0856f03f98047167c0b321b49c8a33fd7f1b40cb5a16dfd8880a2361b1121876efc504887b616e7b096cd97c6924d5522da5f59f7eee323054f787f9d29f4f1a2101511242c408120fe627453e78e890753a9d1c42c4089044b895e8e44eee64cf83a25672698e0f9880037ffe39f24a6ffa958c470cb90e65f3ddb0f1260ef3932365f61676486f2fa680f0a8b01ca613f66475e5caf20ec69e0d015c1b1dfee8475f7a3fea30f48854fcdcf3a47fa8d14fca7c94debe434394714345f7c60f0d371b0f2795dce4a71c17f40989c8a7a2c753f2f81acee7a177bcd11bbd91d3f41bac553f8eb75840784e4efca3a1d8e18ffc73ec4757e896e834f46b4f62e013ff3e1fff8c9dc7dd41147ff6464351f323ef7e7bee35a1e6659754faf3347663376e2eaa81d44ee33031805c321f1be303c661a8000322660519981e3b5307a9bcf41a828c61746b1cb7bb4380b858694a831ae469b2cb36bf0c7fd4a436f5a9577c73074d5cf494a67f3ee94d7fcad08d6a684737d4a35ffa15ca5114fa55f8dade2a7c2f8f0a5f9ca3c2d679325d9c7f9cef477fbae74ff7b8c8b9e7cf3ffde8cf5f69d09be193a033b442a28c28d3ec9cbd9546d3cac633618bba6c529f7cdb781f070cfdf3194121d146c5b0e379f15378fcc6fbef39db4a084aaf219d271397b9cce5ee3315698a875e86d10cb4ac845e2cc74005ab2a250d19894aff38a4df3c5a82bc57f5c76f5563a4eae254d65761ac49178bc8dba25c5252494fda518e725443b9ce9d7beccf7ba7b24d1de23ed039a493bcf4db73ef697e739273be0ef5a94dbd92d9cc2ebbd4a4711bb75173afbd348d6243c69c486813c7795e5983722374a641cf19a50c11bcefe4f5803b81a4979ef33ea99c544e638604cc561e642c3ae72e193844c116cb72cb5b0050030200a03d855dc025e135cc71f4a5055909263876c2632850ac00154ba1c254b098015cf32b4502666062a8b8fa8bb92cf4c260f54249f4f36b00390850820927a05000bff8bdf86732f5a9574a27fdf65e69e3bd1adb084eaa6880a267064a6996a6463139ed3afff65ed9d903641ec1111cd140c55c8ca064473c19976932946c637546400bccbe0ccc3a599889d762a5987ca411af54ca2691b572654638d7468eacb329cd128d39e4d505fdbdd7f25c4bac96c7efc8889547bc3af2dd11cfad91da815926436e248d55caba112bcc361ba664b24ed695b94e5a27b64cdbd4bddc7b6f0d650d650d67adb5ab287553bdab1bf3bf9552ac56acaa306bb17b316c2f7c2dce3e8cd996e1b0b5167fbdb87ab8e87d8ade4ae18b2dd5fea56a0a231d68900369e92087cfb54195c3793dacdcecb3494d35a9e202d9f97162809df0460b1d83eb5ed0ac7e8a3201b20006b8c5ba64d8bd88c4405d8f417ddaf667e007422ad91010f72a63a18590e8fbc050ccb8c2b77b87b3f05a77e80bfdeb165c68408795caec0667890d4a273538919484c2c570eaad47f5d5c57ebf775d07869c7e2d41ad3a28cb093754488053fefefd14f61795592060976d66d676c8aaaaba7c73cebbca9af468087c5cb55ef8c42e542dd817a8b67a584ac96a5435d92416405ca8c1fe369c6ebce1eeb570555df208635ce55c5517c5ba2be65e514e297d7f6aa12ef77df549898665221e8e384117a282cc47092c1ef8b0d309e4d3b93790273f32065e6e5a25bed8cce3ed6c6e9d52ba09e62733e866d929e6688ee648fa684d6b7a23351da991406f2449960fc0c4d01475c33f304c06115809e627433c599241802423a150c8cdfce493b99441140a85c8d2cd0d042fe0543ad3c37cf223836e824e1000f50099a59b607ef2c90cba598246d0081a45cdb9341748a689122446880891b30b113073ce9f101f0810e116cc75c8c04135f05bd1f55a719950ed2aaa8b9b38f293da074f9ac825488ce3083ef926f819c711e426c8a32303d30e1dd408e62747443e3ce9217700b310ec2159b83a5a0cc394507cf347fe9ededc7cf0f39394d91b8f273f3fe8a667f48c9e172a80429480201911c12299ec030a79a8d83ff2cf3dee9fffc8dba9e80d826038a654da1f1732abb5d2ac5efefa4a5708c12f4bb3dc671085c0e86502b32ccdab0a74b9170908c74a1e0b413111358ffea8a4295f5c4b00f3e7000ac4308c43619c071562657794a209051cce8272792c0c0305610cc4414086010c02411c4300424401e49c6273370e3761440f335d630d533ca4fa2ef5fe4aa76fb3b503c2ecd7470e0da234a5b3fc71e4e202232f48b2e60ed505c7cdd2081743a79271f3202cdce9290a0e30be5bcf351a0df26cfa0c8036ccd842e1ab9a5ce5027c54e5e1262b737a1518f520ead6c0dee9af813ea43c48c1d4c584d10c7db62047b03c55b7436ebd11f3eb10c0989552e29fe99fa4cfc0b61214232f29a7cfc1253e13cac23370aa7d1138ef66139bcde77d6138b82b192658d7aa095d5c9c128623e6b2fc726e044d3c330c35ade3fd1f6fa05179d271750a75cf76d029387158f3c66bff3860ec88294a145a127a0c56b4abd92961aa8a822597171d1f6d9557d908738acc454d4413674d8eb3f7c0a7334a65a3ea4249dfafeab4b43f79153ea7d86ee2c5108d8103bc767033a7057e10d7ddf5c4c09c63eff5955a403a775c7b4ec427b0dd3812617c2991e4762bfc62665db9c196cc0878e5e9b3e55c2c113fbcbd81ee99a6d8e20742d8be253067d587e24d2e36287287eb0cab5bcaccfba80b1888657ba89c183133e45fac98dd2b170661669b4edac1cc8bcad3c26c9b6276ff82b4427778327fc957685be4979199c2c11fc7b01168463b87f964517002ac85861c73baf6d8a9f29fade5616bacebaa14234e6988ca30fa5eae395ca82713eaa0c2d95a1facaafb033bfbe4b28ddd75ade1b4ff872db6ee51f49959637470c8b767657bd5b45d4597ad5118ce8e9be4c6edb62fda0438451e5ed8b1329b769546c4e1397f2d02c096e2f5cb443b0f3d569d4eaf9f63832d075aa547b1e7d3fae505f2a1cbcd53cdf0f41710e64ea60acf64e5496841c4af9b4d595439a510f0e3fe8b755fd35f9d062d58f8974dfe9e67ab73067da58ed8a684cb3e2e2a28e022fabebdc4181d7232953462a4e7fd1bb3a80615ed5f78c8045b041c97fc10e88ea3e9c6cc07c22c5ca7cb3661eb9e2a44f1a65fbbfde35934c56fa25bf916179915dcea4f2c84f093ca044106e96fe1c2f377158da5dca70acf462a62b9b473ff973461bed6af3be7e8780d77549a1db84bb2c9447dcf77f11bcd5802c6ff46cf67e53b2c44e88649d6a25b3082aed1589b8b82a52e2cc43d08716f01976367ec60089ae2f74b23c0430bb3e9fcff833ea65f7546dfbcab6eed141870741dbeda17c5a66fe985c607c554521044da32496a355f444ba42fa554fe1b5e00293b1aa979920a74442f85c92fdb69a5f7d56f299dc684feb9987da0bdac870d0841729d5542d9deaf1005d170482775a4bc0a376f24f3174e3ae04d116f00c0a0ac9babebfca638ba856dc747300aa9738affb653f8f69e8d0c8b32425b5fcf38fd7d3b6e9ee0f614fb24f82ffeca35d864b99501b7c35086fd64038a25db104f2450b95282df249b0ecad7bfcb92bc7ffc92dc3a90e66a1023a672fbd1c340f2edea95105a0090369bf602a7133b0fd67853fd03c24b4816c8bd23b6908920581f8a6ecc235dcb2edfa169d7495981283e93fd53af9947a8136224e35c616e7a9f549393089084e7fc31ecad49d4c42e1f0d39b11d0af0c827e8f345ba40f269315bbc60c0463a2e77764958111b7a4e4b24daaecab128e4d8266819eca18d57bec54e4ba05852a43da77e8812f5a81341fd6b892244b55393c1c43e719cfe1d3206ee16b57e6d41c78af42105e4635e30ed32071602984bfcab2822fa0a718f9dee0749d41d88be9c1e5225b9a63c43dfb33260cd42828bccaa61c70018055779aa7111b1345a0546c52481c13ac1a08f116f32e98170e5d86eb849e7aacab28da2b8757b024667a05b5ed6f0ce39d339e6fbbe798e065bd977cb2f64ac236896a9d188ea29dabdf863479881971be611e12d2ac59dbfd961ab5256ccc3e2bd56f8836151ced24c466cd878ab3f6f8db3ebabb9adf2776461a0c62421ab30f08ee7a09a34c6eff048726eb02cd63b3a2f9b8331e29fafb9e9a45c8c562a2d5f287d3899a807dd6921f186e24fcc661d2536ba970297f3f32a23228126a0c6b9f21c4fbfe37e602aff80e5e61f1d89f53644622bb911c7dfd4ed86fa135841235600028962369808ddb03d69be8124ebe7ba3fca739bfe9f0da8557790b6e237c7cda46ba4fad1a19f845c7913ed2fc7903a2537d41cdf74ee7b54cefdf5ee61a93857ecc3eabd5e295b48cf792130d6f03b242b325cd5602e0c08e0089c9ba5df276c6977977fa5f7b3ee326e665bc21abdf7bd3c3e6f75504dfe87479e7cd1c224ab3fa40270264fd7253c912745ccf429ec0d7a4e0ae148d9074c89ae082e795faaaf7bae53851058350b3cd19197d78a2f9c203ac8781f731f1b3a60a8648f2cc22baf7571e89bd6e5e26ca2979b7b746496db14895d726bb2cce459eb7edd9eab5441a1d6000e7acedab2211b48236a3ba7951eda53878f51e665bf2b9cfd9bfad67c96bc14c94957acd4bb384544f2077915a963abe6b273236eb1c23aa1253f2fa5cd0db6dda13dfcad562c8882476909ffbb69edb00f74830b00fa0db89adfd8ca692afce6ee89329dca7d3c3fac66f38d4ace5f53e0b9954ffa7de47967cd4f2c1f2a891b520cca40ca2f43eb061166a0a6b85f4bfc780eeeb072770d0e73d6ae7c69ab60ff632d50b3dc5387462e79c301ad3227dcb1e503deeea0fc60d4320c9b6c33fe8c1f19198d6b09c9a9b77efa4780eac639128817bbe85b8d347af32046d8bd10931b9ec93302ba6b7a9e33c1919d37ca5a19c6ed206e0c16734303b7ccd10dfd227d013ac122adc8b99cd60aa05e3f8545beb9bdcadacda76e23263bedf758bd4045e46018f06a8648ca623f2be6ba4654a2e8a4345cfb0b3be676ef0b5aa5b924e0241d9d2e47d9aaed32fbc2a7c287abf59a84965aea7ea907d747b22ed5e655c48a1e1bc89c3ee392132967f7e29e7578cb4724c636247189b62f9b76c39e2c9c6e85d1254ec909ab8c88cb86eb86eaa6f407da44017df9d15201c059a8ad84d2dc81cfbe16bd5a1ea5c8b06e05018114e831672afdf3e60f06a64e4910085330bfe10ed01b28e25e5ac9badff8dee16aa93bd7c683d79f19884317860b6003d9766e15e2ef54f4654f0be88e59843948354fe3d7d1871b52de7ab85450495eaf537dc7bdbc7e2cbbafb3e87fa4dcb6ab2139992feb432a1e06e903a4b16a8f52cdcfca54c809ab0f6531b07f2420390dbbe685cf2df6f2be9b3249509c5ee6daab21b05629f3a0cc88c44e4ddc3cf8b6971013a90d80e2b0d30994c2981baea8340ee08b4bdec01a9f06f21fd98a4de80d2171375da76ea7d6f6f80b21b3c88bc7e4fd255625e4caf2e598e6519280f2078f4c7864f18b52921c005388d164146a009b321e30e9ee43e0ca588cb762659d6d068d9631fdfcc33f3f45149ed8a7ca8b73bbc784314c1a918d522ed9dd2fc84128650cb171b8bc9f4e2b9c764d167953db3cb4cb8faa6f1a5d189a568b7c20b43343e5a9829e95eaa14670c3e1a0b362bd99a346dc2b41905187bdea43b5b44c1677971661679b3ed92c99d4a9943e378ca1cc545ce23b6ba820ab4d14dc1e5c56f922d53dc6eac24b444ceb7ba6337774c27c648094428ac8211d2095c67065f01eddbcc1a517c54e780d6f0edc2c43e516d04c1540ab5f8e600bfe1f1e054c2659654c5a17d34e6a0b80d2027c1598ecddbaee9a3b8ed79f22f1ddf26fa3650762ace0cd7b8485f75eddc25e2ee1b07de880592798fdc47616cf6dc85a891b47cfb9dd528027d18bfb1d892dc1fb9c4392ddcf46b4df086019ce988fff4331052a0f12307a96b73a2171f2014ae5af853147fe4cfcbf4ab900b93abdf80787efbaca2d4eb253009c2cbf67e46921dfd083947445e9a99c989bb30973eefd2d01aad68910d1ac8f1a4fafe534431387ccd5b005aa44a29f149dd20bd378ce07ded265c6f40c0965bcc9dce384a05a3322508b699f5ec117be88cea1043f95d4a467f95da36833e4f0e15d06e3da6cf39f38903652cd85ce608283a05026cb4b87ce11014385626c9847cdadc8a5af862a432115e61f2dd407983c98ba6b66128987e0ad2212cf96846558c4a66f0e010f54a00257e94b546f57f50879f9c3dbb2b0ac03895cdf27e61472544d3412907284074f77583f109c40f690a9694e936de95dc2ad7d9819c643552743cf3435dc28a711734fb177893f39ad37e3004f27889965245ac4cf9af881d75b26dc9339fd3c67053196e86227368bf661f478e784e1c4b6f61a1a199ed4a3957eb4b3c491ed75d4e593b5f4dc6a2c185a5c72e7074e033c4f18c309efd89c6482cd8786c049bc51a16515169c31faf4bf619df3de6d7f9ba060dda6cc539482baca62602140f71d9edb44ce03b09f1a3d88a88ebfb72e7771e5d948af73ba699e644f9c725c91abfd83a2a1e74ae0a7ba55b45fc30ff1862d24ce10087a0559e284c1473a23af5090f785f059b35e06e58b1f393925ec0a5d36b3273b5a05f6ad307045ab75665761fbfbc45966eb5b609b87c68105a6a05c146ea1eb1f88a6c0b05a9eafa705a9afae2e679876a1df4be73dbc929bdf516313b9c6c7b0a38944457026e6635608c53f317ca480b0d761d9091e2c863730a9d5796fac73796063755a9d9bf1d16bab2fa6fd51b7550ad1bcaf09bb67ca644624a909592faf418da7d774762cde37274341124319f3f11a733df505c89d65e60ba49e6892a6f5d8747137a911c96ae03cbea3d45b8264cb5c177bca2b9f05bae0f65e9f7da6258bf9a3f4c09a412edf4e90cb4e5069d4ec6f479e79e645a44bcbba19c29f7516884c71e6a085e63aa493a1236af01bc1ca2738c253d8827f534ed2aee8c264e7a1e86e419c10c6fa2ccce28f4584894643f3c25a19f3fce22ba2c2bc78b2c8b6da1c07293c722c19925cb7032dae74ed32212f682ddedc83ba3f75d8f84f37e708b91dffa1dad367737bb47bc7c3eabd6ddeda0ccdf8f6fbb3107b2ab27a1aa8effa707ca9ba94fd3c11318b16eaed61566dd95d6c14b659cf5a92662f0d7feada10740e7c6335736ba359de84ab80a60c0f177dc9bb285591e4951a10ae4fefe39550aab14309250849d1122e04c8ecf7cb7b99bbcb9c2fe35f06fb15aaed6351138120e5e51e6eb3335bfda0533d8e62979f32eb178cc9c4875f093e6773181084000a959807cd1d3473958a9f706942eadc2c2460c741cbd169dea8ce2f82862ab259482a813549486361c227ce3f368f738fe6dcc972992a0265ce5d6b814771f0fc3865a6c67550e74cc0419f06a6932f27e8d3db9e9b666acdacdcb5e1d1cfc1081233d573bd154b93017c77693eac2f8f5226e4ebd368b3b2df15a4fd4fe6d67c485e0af549574c32bb3845a4d2aae9dd1f9e42779dd4e802208c5c41dd489fa582337a8baf7a3a23599e8b5af347f055ace30909ef3c7c63e736ee07d0097718e8087e3d4763eb5dd58d70ef2cc136c73922c379ff608684ec11732cd7306f7a9e75fa9861a9c816103fff18daf5356801e098cdc6b492294d6914ea04cfcc872577c0e5ff76f29bc58bb5490a6ece8f478914980f5ac91489f4fe08cf2fe1803cee871b0dba96e7ac2d1cb557cfce2046639bfb5243cc2f883ea9e3e4cc94c43f7367af6e2b17f5bbd2fd7359a8d22b7e771aaadb7ac69c36e77f4725f12e49b7d0f1a987d72e236772512be5a2f410e4de62071fb6b5e2cdc386cc4af2df3e4f37954b5b4c8a41047adc914a3bbdfb3e9751d452ccd59dcc6fba932ef640087d097d2d7a4f1b91f679d2f901127a51325423a028f2970d8a6a2655f7b2f00661fdec920aa3e02cf52ea5000edc7c01a01ed5a5454662a9f2af3415db7d3054be35bd22cc1bd48b54ecb45e5df3af2289ccc1f98ec31f8d77ab817a526da2fd24e9b18f0c2ebd2c49747c88634330713eaaf7243353623517936d842c60e133511bbbb5cf52127a2a6265601145edd241ce4769af28636beda7448680e762d1d1cb5dbe59310a351ececbcf904b9c7200cf0854f8227891a95a2a2405dcc3d3f9c929f42d8220977a06dfb3d155b700949b064aaf6357e0697c6da06ee1bb21334b86978cea8f01be82ba39a6f9011cca45e5330367a6b60a30de0c3dbfaa3155bf5a6670b06e54d23b62b11ae85a888edb9e59aba3a24d4ade59ec13d9d125ada18b69044a65aa04f5506e61b68005ab5b188c85c1214fbb2c6efb8904c461f9eff160a04d10a5950289b1b739c3fbaf059f8a00c6341412947d3a7b456d546115dc60b00fb1c66141e1e25e82292e23329cbdd4e920228641a6d9bfe0d8ecf1ac06830372c20500a80edadb98333a02894d1a5090ce9bf46ad10597d6518f015f464c06d4cef99b47393340024307fc310568f1307e1070e68384cd983a4bc0e2a2e1de3322ae92ba88170939ed039a514104c35f444305e04a9f03ba4d5964863e79ab0139852c07e6b8d0d944c61baa147ba1e27606c9940c12d8fb9bf59cdd1c8a459c689b8b079232e451732715b0f305e5e0851f84230689576923a798a1af4231dafaf4579e998ebc378a17c4ac11a56e53e67b12e94154f91c6dc699c192b71cd297f6ff8f74f032565352b91bf45693428feaa2cf2b112e708cd1f486e70cd419a379bb634602e84110b9b0dd99b484d6882a981bd7273b3d9f95ceba8e15583eb82f00935bcc7667d055215bea5c681c26192881325d5eba741e1130166948f11e7fcbbc2c90cbc8dcc954e86a4ed4f59448034d0d18410e9a98b808b778f0cb9dd522102613bac336df78f8c9cb78a500d57923e46c3b7f466870006325a0b7f2ee95e0722556ca5f1e6d8b890214099cc9cbd5a6a04e49d646102d3dc8207a6a4564424810705a47dab812040ca7e687a8ffd6a798cd314220288dbbec3de1898ef4045f3c5eef664f3e8c2ecd1002cdfbbd6a6efd8855b2420e723e8d4662de4ddd131e372d8509a2ad5aae8a56d017ab607c8737e54c84f4d13e9bea5f13cee695be3fb4323342a53828dbec532e5961a98e7baf12caed61fdaffb2c8dcaf223826d7da6d23a2c44f18686d2c2d6fc9376f726e32ebe2d62fee38c7280fed53e7a4709a789de9207a2ee1a15c1b2044239733c9759b758ebcd8672d983e292db203499cba7b8c55738db62fdbf33f17f2c519a9073c340c00b858dde2df2144c3789d27e0f0d1c9d68b8ffbd35207a726b94d71f51b60f53b16cc5e187d2a50a006f124427b8ad4d57e33f93b2ae290eb8ab6ac01d67d6585b64cb951c4d6904089eeba73e44b19311ed5e6ee71b967fbcf4d2aa88e6d8d37e98507f0fa071b15f043c6108087e289eab57f25ddf3cd53440a8cbd002df7823bb54565a1ae492e1fb2d9c3786238c9399889287518b11457ec9fe85d907db1305459f1e6b0d27bcf96fbc9b74d2c731e5fc1bd7dfdc3a44243820f064166e079ad402adf426e31468be95a245d62008f7c7ef559577ff1bec3f796b7b8e2b434b56e4a468910ca35bf8a98575cdae917aed908d96506a1405ad0d2b853ced9a4e1f71de6840a5a0c1c110949eef4368bc9c1d52b40066787dc9753eeabdf7f5a8af2ef41d73f2fb35624f22b4e816c0f0a3c33fc48ead27eb642b91b38166c1906866a395a08fe98506e22ede5571923a9d6bb98ee0cd2839255edf41b8828cae0b7354d924e1a8d353e9621cb57d4997f944262368737e3b2d656da5da9c6022ce820949e01a27652a28b3ee8fc4485d42eabada045b8049f9d212232810a94a4385cb08e12be4af9700341b3b6318d44b905f6efd7e59d6247e2c80d7a0bd4646f4681276fece6209a37a9af3fd011c818ede3f474bcef08cc802ddc2168dbecf669d505b1ab377b0684d0934a66b5c57758880a78206feaa230c496306f212c214a492c3932618436e00f1ae2edbc38bc60fab9f46dd16b5571c3751e7e249e3b79082fa9eded7088e1b421485db26f2cd3c81e8f092120c631ce024340b11cb8fdf807accb6dfbc4e0e7b3a7ce7501e7e0a7b4b5860919409042b9a291f004b0ac1747f046243b3105a5b4366bd6578f3fe5954c8bcd9fb9adfb3c2bb286a669be3f8eec8e4435f496f5724e26478e35e8c8323393ad4ecab703aac180fdd77737e0b3da5ad8b3a1d4680c44b6de81656987aed7075bdf6ff5005ccddb54e1f2618bdc9d2f9c80b5cda4ec27d40a4b997bde5d3b4fd099c16297ae81161441c897b4d8d736a51c5b874b53c2a5a4ae4a4050616988012314e49a59eb8780f8421ea43c4bae01c50f0cff042ba9fa2c7f67bec67045cb18ef18ae16d40b38394a8727e552ae3a37ad883f92b1ed9bacd76eb427124089421741f37c0f6fd3ed8789ece82c1164612b71386496c27109bd16649506d9c4d5b9c872e2f9d04e1e13b6555323c41f380afdd93cb2a4419694f6d4b88c228e86d2182ac878a272025b2d57d95166c33303b74ead4a9ca6c0a3b07057fe061cc3c6e28fcd9883321241e5304fd3154adeabe69ed9ed1cc2651ef40f1634da1e32081be1bc2350e811e5dd2d41a6a265792cd25ef0b148f6f8b5254612ac901a8c9a2789e6e9ba5b24c64987f38f005262b071d5c481ac0f996b8aaef87a2df6a099a7e387fd5f7ce5d5d19791d6325f2fd25c5c21455ff60e039cbb07f0d4486dca4cfe5ab97bf831da64b8f2e9cfef4e62fcb10823ca418ee6d9832c338c6ce6b3e91035e8d323d891da5376156449c45ea251c6eca47cc1ae23190be46791b155d1c5da7168fd198199aee39489dc266aa82d19f778be6bbc489888c0e763acc6bcc4c85987b5e7399a7a0ac57b734545f991123d8ac513de4c2af8743a29835308c05ea757c69cb1935ee1b89598ffc64241e159bf4ceea21c64463e68ccdc5d51a19e5573bac95379394cedee4c1babeccb2030bd69f040ebec3beec5842a2bbacb7bd50f746f11e4a191aa4cb698c1dfb43a7270f6ee4f2029a293d4bfef0e8a23358e61213531cb3a3c31242ca4d3e2da8d6936378b510180e75e9374c5d27f4f89ba0e9e0e77e9d2021ec968d532284aa0d982a3a58ce56651dafa57899fe82167ed3bcfb8a846ec80387fb57092d93fb83192241bed0de49369f2ce438f95bfb6925d562066023257e98eb65d109c41f656d9699a7fc1d28c37fa6acc224834557803fe09672b54acf752e08f207a65918ae53aab5bd020935969026c733567a92ac4d23d3764a52138116b420c942e1efce2a8fd21ad2a2ba5124d25dea493f5bb7e535211b554cee21caf1a426244fb24980321512987246b44867efd2d128674458904029152ec04dae90ddfe65ebc11832af6433a8d2bbebd7fc2fabf12bd004970b12096e4679b1657257563fa4753aaa924086b98b8563b5e2cb43ed4ea9618d3f02d9c659c87da63e43e70e2a3bcd258dde34ed67c6ffe49eeb15ffa90cc13fe3e954c9634e3f5623530d038f0825e254974b93dcc827de9c9b2d0758aac95cf0168008314267b6a463dc653b43c570aa3ba7b305113d96a6220e187939f83c1c31683e768c162d69dd2094da9eb35c41f2a81547d60822ec3c94c2af28a3f0d999662eec6c65d73ba737eaf4877da6df898b8e2057a22227c8b9c98293c7321a8f6ac1c89ab6c611c7195d184c09905fbb72fe95359bbd39a021e1545baf3e5f3115559e345019760b53552572d479809d04afff6f6c2d78a50f08b5b07a0442e6c4bae8103c76282f0e8992a56276f0f4a23508ba649c843296242d56ac8707d8e77a65e8bdd4b8559de175ab3b1e123b2010ea745b8906cb4c36f27882af1e6bcee52536d85ab4ceffffa5f9751ece8c4e40c3eb0e5d9f579ba613204ad1057aa3355a96eaba49d292b5fb3786f904ef6078f71f247a5ab394758f7c1fb1b068f8cef9b810c78d9fb1e9ab25e229384fb79d308e278e0c60d327495107e2d8e30e11b653353d5329246472d36b6d929a34310f16a393e4059122b00eb4e0229f6e43b8c41bdfa456e977ab7d85967d76d25369658230e1d6bc8279f801893279ad64bb4d9779a7bb20d3a89cbc954474726caa0f95e792336741158e0ccb3c489b73ce162748420863a2a86a46cdbe65508cf7eda7adea702ee8d2ad82cac706dd9fe40a486faccbe1f4d386078e58784cd0955696c4efaef3d9f69a0bedb3ddf5f5a8ea26e45071a23639914d26e3a66921bb460febd39b026eeb4b4881098e08c579d97b507da40cc9cc7737c46baed0ffe65c10192d3f484fa9f0dbf3bc085c4966f8839fe3485a9e188d4f5b921d10d50366d68c67e239a8d7aadaf48501e9753c9ec422172b8fcdcb9f61874e3f1ed299e854f08d358f60ef7fa5e154ba4bc78343c3b5cb3d715cf9f56ecc7b014fcb51fdd8915bfd2b08f3cc6619ac34cc43681f532e567864dde4a0f6e39cc97ca9574b152aa136b132caac67244047150aca8d8fab63e6b59f6bae522aba394fe533977ac6b68b45ac9adeb42d790f571cf5671af6814dcf4f3534ff109588bbf2abcc35643b9ffc32589a54c40768843e756a32267ffe3f7ae2c05467184260053f16f94cc344b9a54e496294ee1c4bec245f1a7f7c5438c2905467cbcacb67d560c85472c5910aee8ac71c0b4b851d31549c012afb34344f4062157501622ccc05ec1860af9906b5fa71c73bd9f2aaa9e6f3bf39bb240d0e2dc45860f2ca081cb37b3cbe1b1da4069cf73e3e80e83e747a8bfa3348a285f47003cbaf25697bef2db79449a624034f0314031103be052dc0bd0bd06567f620f15df5969848f651fdf11cca937c64a594ef62722ad3c4a47ca050bd26f3e51feac8d1d948536041b259126d88c81613aa15610b4ab1380471148b43f0b3277cba3804efa5234b44f2b1683e871d1d39ec7bb70ef3198dbbd0dbcee11307699784d3d15deb96a81253af9753e27953ef036bad4aadeb1de6fd930b562fb6145dc9c171eff5baf4bc9835b83643b50db5aab3253991e2b458362a2543b090ccc4c8aaa2373027253e45c2c227548a8c915162b6583f80a8543436b91c4b2d86ac46b2cc2973cdaa48ca6614a9112346648cc4f830620481ee181c86f61413613886632d694812ebc6b941700c7b7cc41c3e8192c128d68cb5d6ff8ba5a04e0f20c1425a993bc81e4c922a55ce2c9cfb302d1c17f40983ce62aabdd69add5b058a3149dedcdcdc64f044a436225c4a3eba99cf14af52dfde0f8361c577f40f8fb218a925284b6c46797c0993077d0ceb28fe38daf17447d4983af57c57a696c4c80929a650d9141ba4f844115b1c7d1ceb697cd46853e325c72f0cb34a459298fee971b916eb8bec61c84889a2225a88f6153ed59b2f6d1cc2a0e3716d4a7b2000cd42efd036e8d1ff300b6a40b77ddcb0ec1d7f60659b261f97c6482630477396235dd293b3124ebaf4a272454e213237f5460c1f328efe462788ecee43c6aefa90b154df8548d03447c6a923f825e4d7be5a7ccc5a4607ffcab0a1842326c7f4325ed813978b92e20b95c0231120181486398837f733da7112df409561523246a4cd47982562c20c215396e54c0f33320f042ec73039cc34fd209780a0d0508d610010e282081122848626088885901f4ad0cc04051043c60c43e82032e69c6b6a88a0914f60d4a4b258815a8acc08d98c63c48c00b08700aa36063899c10a83b20610c0884d91554d267284d403a9a866411a72242c5215dddf4529902e770aa50fb3f86aa346cab95012ca859ce6434ca9530a854f7dd4671fd5317badbe5ca99ab6b2e84736028203aaa60ac88fd273493adf551f72a11645ebaa5614fde635dbb7ce1935ac956462dea3e2a8328d3883560a1799288a5c645c84601837ac619985a2a3986da75624ab3e99592e9c9669da1c2e520e574c7d91abb7ffd8653d8d36a8c7e177fce75a3fdb5aeb3f1e5a64706429e28a39780dfc8f600c278ff992b3015f5e5f60cd8488ecc9750f131b89ab9d63b2233bc702cb9a8aa2e626669220aad0754effce9328d9a685f34e7a56a30f121e28a38e193b58dcba05c1127fd639c38a09d3a1bc58cb56b8f202755d98f5fc4dd6fabd0c188f693b5d792577e89f5ee13fdb26adfd6fa244760af5dbcfcfb5562cfe7f3b415abb224b2cfe901b6e962122bfd65a7ace664b33a55585aab57ec53324aa562c02ccb0d4a0046609306b8009235a98fd5e40af6a1f8852ebd5a9ad79f41057fdbed3f7be0f65815ef86bac2c16449bbd8800eaa186e5e50390a5347ff67e21ecbbad6bb18b1e4113199aa8cb26db653e3ac6ac6ac3a3b5a2c6b8fe6664690a03d343001e7ea089ffb45e7a2b9137e8ad367a2b97ff378cec61a40e5acbaa70b5aaead488ee0e52b90aa6bab1fe4884b39bdb9a1996aab4574f304b6dd0bba54ee469b56f6dad6f2b171f4396669ba045506b3e618f18e2aab0980dea9318f4a70c44cc9e9a8db15ca9285b6522187f62cd575367b1d619ad8c880562692831f67d7846efbd9f68511915fac9884aad974d6626c86e6782e45d7cc4f59ffc2244b466368298359cc39acf44da949649b912a93c6b5c25ef2c4b5d5d95baf2f431acd5b056ea74a95b2a8829e4e6f6e6868bb07a420b2e84a7380b4f4cb3973e4d72c6beaef9f5300fdc853a32482e244950a5c2397f2cd66db54812f6cf3b49fac50941b87c3326e89a318554ffaeb00237daefeeee7a31bef4668d6e5666db7677b544c8be4f269379112a83069a0c01172dc34fcfc55499d582e5d86aedd87f14d74a3dd65a7b6d5113e1c4a854b102d6dadffded7f9eba53a9e96d41d7bfff3e981758ac63b05a8f4470d3e1826c7f8129b8cca9153f415c3da01e9d4ee909945dbdb5de0f08661ba814225bd7eb26cff96945ad3395a6f162adb55ebcfce87ca1427794e9de176ed770ad6d6df302242689f5cdfddf7fa78ef7d5bc701d2997b4e4b4cad7f4db5eff7bce935cc977ce7326ef795335ebeb6df7dcd43d1dfec2e9b0aec748013d484ceece33c80e136492ce1860ada61a3d38afbebc6b1c9642f9790469ba7470e4eadaaf2fd7ed40100cc5f18412c5cf9fddc871013ea6bcc1ec2076761923d2d54544b5e66f304c5f2bbededdddba56eaa5161addbfca70ad8fbfaf820f3efe2eedd276a7ee4edda937edd1dd1dd74510128c3ebde29f9dbafb7d12c56fb5ef9552da5b685b685b6add232a484c12736f174fefd68a26a2fdb9ae8262a1c48b221ccdeebce72c6f5eee3e759f5e27c58a695d045d144131fcb667101959dced4dd89e6eb69c5675c418d31b2de47b2d3d532149952a6716abd539a00c1191ade896c2386c5d5f2e49a774eab12451bd6f2b72dfb38ed1ffaf7740ba99506d49f7b556db1be1ceafd91ff66aa0975f0be2bed77afdef06eaeadf349b1afbdcbb560b97b4439976ffefe64bf92a4f7cfeeb6beb16b72d6e770bdc088eab30e43feecfc72abcfc743185509074c41504e7136d378eb8d411499229d43826e95aa9974e76a4b18e74403021a1a19efb217881fe86a015af686f0862ebd5d268b4a1a6596b2d49121dd974b79ed111ececcd4a55110ea90bd3c7646feb15f3e7556d9e42450a14fc240ace7dd697de5afb4b4b4ce38fb3da04fd24044f39eee48ce3a54e47841444db2d31f56c3422375f40b0980d0d122b9774b290f07266424e6c4550ced64e4f06ee6e6beef6bba047a9b273a7f1dc34342c1612120bc9738dd43934cedaa1d1651b272a75494abc06e29d42dd44fb297a11ed98b4f44ca0a29b11eea8499ad050cd9e58fc8dfd0a57ac9852a254f19dbbb7ff33c9837c1dcbb2de8aceea78ba2f7525e9e3891b1e49da59cb8d5481d89624abf1989adc2caad9dcdd5fb0a0d80c894d92ae95be732d9c1d9ea6f5d0cd28c789cc76dfda7e37ecb6df05fbbfcff7fb29688359364949baa0a4568bc7a6e5e491b86da7b4447b4c413db3877ebc66e4305b93bf3ce8e57adcd18954bd36d686886c45aa58906c26f48279450bef4565ca0abca0a020198fb7be7565f7ab1dededc81dad79bc9147a92362cd33d1427a153c164dfd6ed79e9bfee32f5837ae8f7a9e9819c87c6a52a6340e4a142af6c1da5b1083d6adbb7f35df9dba938f5eedee3e3d5d762e4797924ca596ed7cc66b2226a7798fc85674b33e6bcd5ad642b4a1faf312faaabc507de5eefee515cd73d50cae50ad84218f8f9f2355aa9c59acd69f77a50448965af7bce2bcc8ddc5244942b341fba7925bf36753ae8a00fee2f08900029846ab43393b3998866938228f57c0027902e0a6f2af5499ccfd17ff58e2e0847f63a8e861982b7467f434059689291187f16315bd91391507b1fef3eb408f541586516cd20462d8e4f1665a95b316cee75a4a80eabd2551cce7be9499a9116d17d72349c1577d4b5fd3d75bfa788ff4d9d565b56a02f64a71ed2f110788828c40ca004f05bbe7e4fc6892fdd49f7b7d840913919650e4cc62b55a3939a0cb9a3a5bdcd0c86ea2cb1db991a1df8773216f92aa9c7623eae88446214e5ce04fbfc9423e03670ee93ccf1c0f4f8da76f33d7716ef4abf07657b3dbac698d93115d46aedbf74cd75a8931491138a0d2726eb5721a184b276ea8b43ae3a1da82a8b3abc360762df9802e8d785e7cb17c40604891d5cab93a52a5b32bdd9204920882fd38cb0993a11d9d2542f3f3984b1ab106c1024a6416aba4718d24f9b4cefe6d140e2381b2206d531de212dec692a687865f66be0873964d3cb8c33c5265863fe1ab7e927b6db55edbcd31baeae463caa1077e461c63008fc7e125137482092ad0d5b7c0def33c6dcd3d45da2956708afd390c74bee878a9482e6280c17f8d0663b984b841f39e3efea9e1b9d975263ec16b7a2a1e30826e2b6afb06dc6a6b2ef87f450eda274b4cccaa83319f64f650f2c1a81a830443bb28b01365749d670fc67be3c3e48d2429540726814aa512e445629a208dc42a32ab58d96920d0274fc42424982fd8e335d39030c8d4494a01679005a0a1d3c5ffd788218c98ce18f9221fe26cc29b28c248a5a78ce508638904f9247c09a358a3328a4e98308a423cfce1ed84513cc25f398b28a030ab4c90755c55a972232304ccb479bccb036bc25b4d0ebdb558f8fe2a13c90108f91ccd9f63d94c00d4ef2075568b764282503001040f3871a064406681981d9d264c727c2c49804ca10e30e0d42a4049122437041c61e1c4c4388f87134da1db8b692a73cccfcc6be68ab81f33654c8cbbcc674e9389f9315fafd7c51f06df88c78befbddfeda1dbb5ef21d1144df1e78ae6bdd7149f271e89b83a0bcd3feb9d5df1acb44a14bbdd1087e1d97f05ec75e18f597308ab6078efbdf7cb972f3c019330a8a40bb79d05a0e8057386001812098462799a4531a4a0d4f68442cb441d5044a36938c7a214054114c30c0386208388c0cc0c00cc681b006e919a282e5d1776e1333f0fb0bcbdb5bb861b37003aedad85b2e4b813922c9e8f9b76258a9ccbdaf8e975563dec4d8a03258241b27836c43716d53877384715e0c05d957ada21bdebe3b427cf5e81a2080065c985a2b9f618a3608236613d44c32e3d62e169276680fce1ca1bee3152aa3ed6f15e44849948386b2a15b7309ad33bbd668bfe0524e4bb1bc77efaac72736367a026715424a2cf2038a053f4fb5b37991c90708e7fdd236390303dfd08205b8c4abc9c30fdb9c50d0468f2ff3f4360656c2fb0325c8776171d0df3c922fd6e51f0fd63a83268bc167c8b51ca4e14ac34173f8456376350ca0d141e9756a1585cb6dea0b115feece04604bbf271c174986f133b394cfc0d3d61c9f4bce9f8570119fb799161ec132a32060086f50417bd92a1fa20c75f86332ba3a48332599e7500018370def95dec2b625522c45134510ce4fc8e6d472c290978efd1e11169b96d2921046373d9e3724209603ae86b168bae3b32116aaa1600400ed7abb84b9ed91b1c0382866d3a0669686d138938256ba608643ed5bf548a616b47b9a2290a8d62ce8a338e65cb88987aaa9a57a7a70dc1a0baa3fd6436fb51e3c40380cb2fad5520a81a68d8051c7d66212a6747eb8ce233caa0a0a4296ba42d76132e5478ce7f9ea9c45bddac37f9d5baa10b9a3ade55e9005254d2925cdeff7653eb9019442a72ced455cfbe608a69010729e49e97deea8af3911a635353eaebb00ae38625eccbd23fa3e07b3e0e23dfe1debe5256e7bd431af106f77523267b6f17f115675acdab486c232c166561c9b2861594c2e489b81324d45d82791283d834f282603646a22247a24580c9f6a75aeecf8458e1cea9409da40c97c3c0ab0aa803bd25981c8b893d97f2b5a7700efb1f04b48291351bd474061466a9060c2632c006b4ea36ae62aaab4e6a3c9203b546e216fc4a9b6e52133ef5ca26f7e60b03906f4ce33b9c016b3234233862fd48ec0785e56f53b5ec395b14182c9d1bc5e297c2b75fdf5bd8b2a10652f7a19d2de0461e9695e6567f9cd85fb57e9b6e4c916b7987ccb84d2c2443f5804529014916695123d49cc2264377346c7105ae62e2c055dd0c463f32bdabcce73e5778cf7d211ce4f4c99ca568d78e55ff4cff60ca965be669f0247157b0c3974f109e145b1d56e08918a11948f634a09ceb54f5356e8620650503cbb316a8db419fef7b282d10dbd4daf7483f0858590655f84bb77b0884faac3769c8807e99e60ff64ea8a67f68dc417e9fdfd3721bf32c74aeed76425c9400459e945b45769e2bf67ce7987de9724e6f83f32742805095bdf011b89fc438e9a451444cafaf8cfc3ea21afe56a6ee29a359fdce45cdf9203666ca7179e8e5e5ab5a33a2351f5c4d7062fab70e54c4f2f88afa60891f9fa8134bc3cd7d3c8347349549898382ab0d503ee8ed702fcd078fe7832866af151f7dcb7c5caa37c49408f0dbb618a51fd8497d053793816e7a000380074b42c162b05d0e9e83bd8cb23c5b491157e31f4b9590fc2b23b3961706c604379d12a55450a1994f9786600acf568dbc299e5d52d0b6ab4feacf7060d2d8f2ef3b02db733d050766497dfe1dbf9584d347adb1a7c8bdb7e41a944a53dcee9605528626f5c5bf4d9c18c7b99f2a2f0d64a7911696f586773abee59461854bd93c941c7a1d34ce41421a48b8d9f868b8149dcf739314886379706533ecd93eafab86f479ad5297dc6b5ff3877d9cb756847bddd962e7abd417a15692b3e446849d90ee65ec7289211893638f6eb2ea45b678a3f2b4d1faf5febe34ffbfba6df269e08da7eb3fc57595488dae49c021595bcf70bce84f348242fba04004cfe166c5835d602272fddbc8933521af082d76bbc9a26380bb434e8951648874466d6af3d94cd1f05c3a7b3e28671fadc2bde2015399530b716ee8be3295a16eefbd8abfc0e075a2c276782029d2a70a3310ea30d0c81d2bc0c52859540d1706f114f93edf8169f70689037710e53ccdcd44e022b9058948c74024c1ccfbe158b8caf9450cec9d0ff808fbbc9433e4d2e069d09d486a66e16176f4e69549995bfd11e5b2b64ec7ebfb7f9848609a7b2b0a945ada0b5bcf1ac87bec6997b6600c77e5fa0eec86823bb587229713fe1e79d1f3b96f3156cd1a2d6c5de413dbda0ec0a7ef047c30f0f37690a27b260733084047eacc93078f229f1f1b32ec4cb3766c92e9cb04a627197c960cbb60da36d2740d9f2122e392bf1bf4ec39d695980e0615314e7539c391986758f23373e37b4da7cc593aeb84a97e2a6aa199d54d674ed3e2953c8706885bde1f3087ee50d084b02ef486eea7d30dec8e43bab1d7b9d822bac788d495e5a6de08e820cf63258e9448874007a370754ef446b4f67593afe19105328ff706a9fd89b63272a3c163fecd220855135eabb9aaaae0d7ccec65360d1f9321087ac59d4546fa8d75777d23b6b07615059fcd05339e3e1675cdae456e73215088f6abf0d906ed8649cd482e088af75abf000aae2f36610baa01b8f283609c87db181863fd2b0c6b34e949582de667b94c7326f75f0590b389a67a935ac5f1d146c37f6364ac967a1543194998c730333a30421cfd3bd783cb1c2a87d706f6f0728fd9f3384e0a7b1c0bf0e447b41b3c84b94c7f79791a668807c13f92f5ec555ab43d8acf89077cf385cf404959ec60693a376d1cef5985e82e3c140332020e2e3d09f127a515386f91db9ad0df2c46f617b1d0d3d1ca5170071c1021e1e6edbf089cc39432770870c792265aeecc5dd811950ebce179a3ec6c2abdab8b338d8639b35f21dd7094339d05ecf9e534b56054b1383d87702b12d5ac23e0760d355bc10c6e4a2b4f0adcb0d8e828562bb5b51c7e08865c89b6a8bf08e5bfc78a008701fabc8b03c0378c5ffb35b79e5fb9e0cc1a56ba27d5cf46a437180f8241b62c63d52364aa1d537c6a80b21555731f7d2b8fb07d38fd4ed57a71885dd8bdd8dc090cec21ecda1a7b806a891694015d522816fa5f81d5690329ea464378b23c3200cbefa44d32e5bc61a3321a276681ba0f2a364236b16a5dec34a87b689397d814d9f629347c4de31def64124e60b4783eb5a13c332606beff57c27476f08111c9d69516eae5396c321af5866552efaa7c521ef8763be16123d47d4073173f95fb35b9b0f1fb84949b931850e42988dec0ed07d1ff34a0be24c205d2a035ddc1f0ddaaefc7179338b563fa55488d2121fb3b35a47de64403c88c7e32ef53de67db1a884416acf373c43844b9e1c917d336efc6ef27be517ff06e7f80952eb83f32a296042d5c819499a36a823e9678205be2d5074ed953c9530c54171cda20f2c6e2414a2049910f80f7113355d35e6b50d592194e1f858785747eba858b8f181eb6dc207c66b048ae605dbe92c93bbf5ae651af554d6f0eaf828e0c947bc64af92468db5804eea62be93d8e835218db72ec8ee2276f60f19530ca528cfa7d5da61f6ce3b7fcf0200053a8a735288bb2d8378565085b95153911339a50a3c5de7741c03285ef3b914ea441971435bce182ddd7cec1cb652bbe1aeccad020e1c64bf42dd5560dbc767336f674434b453ebd9cd920ba741e82660f57dce6b180e2f856afd8bfb9d3d19644592026c7d2f97c3f58922d45453deebe76c2f914c65cec100aed05190160a7f649bff2c6ecdc9c6ca3742e465b51476c57c05d164aed7ef1cc938e29f72a1abe71593f8c8c197f070dc3041e956970f30bc6c483aa9fed770b82d5dd1c711536c19e68a411316cb84c2fc35b2176a87058996e3c95f30601955716c20b390cb12c23b075f252074223853d0ae87848e1d1378c084b216ab493244d9bd4eb9db075129e693092d389ebe00386ed91105f46306e1fdd585a1509059cce0602bbe2e0f29594bb365bf1ffaf6d3b5d22c6a5e1326f3713c29a01831da76a48ae2a6c5b2afc551c10083b0c0763086781b3717cc68a68d64c9eb07d58125650dd883049f33012a2d8300335c7de71b99c27afead20d54a59b709f39f528c9c6f5d589e2a5b74d424249d261ab0c65c35892d04cd944b0d541baca39af4261421093f98cd760bfcbc2a32ab8f041d8afeb0df91199ff5406bb716c61fd17a58c807af6ad1ae494172b12de4bf8a16ceb490acf566432fcd91c6173dabc9cd710695bd284eea1a4cd1c1525a526991cb65e752ca1221e55ef9e21d88f22cc582894d1f6404e6246446e353b8ca3384ae5cc5fd0c73d86b1b61d94651d7964e878d3bf6f11aa672f6e766940433152dbba7972f43e51dbe9657e0060a940982098038340e79fdef58270d1ea33b9bf8e7925944d85ba03b5b6c8ce3449b5249d0e00a3cca946d6565cb0ed6ebf10fd347e8e32426998ab4bd669d0c91b692891cd408f6ba44df03525f704c8b5a45df1c2396ea037053a27262ad844188df86d7d6ce8dd6dedf15cd7167662679a3593014c36cf3501de5fec71414c75e6e6dd129cddbc3ac2cb34b677550c35861ad2064f2cc9f13584113563579e69f33010512da34169a5652030344ed048b85ec583a696a6ad515c11ab70480571a718e778dadd890454db7891151051dbd6cd88433eef59f8b4abf13a1d5a23429083201024b8b48a8cad6283c3d3640a2b426a8ede350768952eeabc21d4fe1c38bf6094cdb9a5ceec43b2555bcebe654e6a18a1914109898d236aca6fb8acea0c72bd9e2365bff5793184bf5480648fc077517ebbf71368964c3bfc2e4c74631ff4746fa3f2044b2fceef17f2b1b28eecefa588254de9a4f97c8c307796873ea40ba82070af2d00b4854db66b94d4973f4ff2e202bcd43862896df48c05477f4cd89f2cfdf0c50424ab04c68e51692218b61c03d0875e14229706e7c4425349c379b5fe89853d63036cda757c2de3c251536ee4785514be82a6aa0ab15b9d7f7af8a4cbdc028a4ee5c68de51a0d4f734e011fcb29ad053b81f50f1b86e96cb28fe15f298cb06b20f6fd3da732b2ac685aac96ee53dbde53b58748918933bd1988534e2823765151bf3b7781410c080f4506042e06d68373355ea15f0cc5a34a686fc185cb7d802fe60e4b3a17f01666a327210c113286b92e6e685664f5d017bd2325c35009473a4500520a87abc6f3b0cee59159200689ce328b64efaab77217421cdd6bfe19c1cbdfe72ce8fb7cd253e92cc9cd5cae2d06b6e702f9975781ca2d98f44bfecb3dd7919d32fddf7e6a3800c9f0af326e952427c5a67ea82feea657f22f57de7d1dd95d1bc692bd9695daa1b0e78c0ead5b17e6e16fc922b00f96b383292477be16b4bf17cfaa2f4ae96c144f3eed90dc210b06c790cd1c888434586e0a52d9eda8928e718bfaae68700410b2312a97d685f192d374ce94a042e46fcb30779dcf486ba2baaf3f96fd4010f4306d4a57706a27846db260f50e3fa58693b059bea768b6b790883f783357b15ad8db81f385865ccb25f75aa466009a7b5329ccdae8ec75d22bd8d400e4518298941d130aac2028acf448fc3b478ba8ee6784d3ccf472d089f831044d22ea7485a2dec114adc1a977ce6169dbc18175b0b4e84a745da06a41deea9d3943d08b9a32710b3081d990ae7138c25b0ba5a4e0851347d52085488ed299e2452da610d582409021eac3d890fc0c344c517d8b15b309c9b269ac402885f49126b1682a61a0ee8289feb0d6ab8ec7a960189a9619466bc9cbe3d58ecece1b5d89df69531e47318f78758fb567f41c7bac48d8cb82a7d7d9250553a5e10cbcb37785db19be2a9ff57aa1a473398e2b5ea1fea07887cce1e735dce69723505004703faaad21686776e86a1ba981787c990e1ccbb77672a9f542d4344f44b4dbf51d7ec0c49a48395712db1a6f3ec93cca1188fe7ee7962f7490da19d709f75560cf64e997c744e1da0b020908424bac1f59ec174c133881aa91e620dcde843e35639dc5e7997b10c8189556fcee4b630bfcdc885d84686fa78024e210fd563358851d45f8358873743b52b02735acb45ffb6cb1affe9c8f9642ad1fd5864980a8ed643b487be8ff71b1d252b6ed9f36d84c83afa2c94a8b6d0325a2d02529eea1a75298c1022fd0955b421e44148ce31e32dc4b43f73cfe43b1d6665d4633645fe18865786f8ddfcbf4ea741dfc9be04d2c93c929d34076070202300be65161f0d7cd1feb78999ae05f288df73907a18738366dba26ac3187514da234d6f613e2cc75dfd10e577d01756039184fdb85fe6e07797022be08f8cc217bdcb5c6881b3393b0c2e7c11d78f91d86623a7b32c334b478f3d1f0d3a7c9e449f608ff07209f27ae10b256461d1176a9601938390fbe7d9e70d70da832d0b796fe53bbdaebb22a374e75c59c7e57b953a1ebc249f6f90baf88e761516a19339b2dbbfe017c7dbf0e39c13ef01c9e5b95c7313d33fa94ecdc7b10cbb4b21354e4b0b7db205afaed363b90ee3e14a050d72ff02a65ebc3649ff40a0fe29a4977470adeee60e17e40627e46f293803c5ab798a12dffa20a219cc67e85140561c797b0a5ace72f94001a6afac4a6265a463952805be02d0c62fc3bcd0db5883dfd8a09cf379c89421e20e0363ce90e66a1b8257bdcba600c7eab63cd260331460834d4d6c7f9a1f8ad1e2aa255882b94a23de37a1bd026e9e65cd796781e451b66c5aeaff1de0a80f4a6760198b20f7d58a6c770456c80b9078821554457b099a33b748a4300aab5ceedd988d2eea655cefd66bd477e850cb4abd95550824da461dbcbe6254b1ff233daa79a608b6bb8498a4d34aa46d2f7d58e9b8adac06090a3a4fd108db5b12db7169b35c6c02252a357372f67e56fbb7f3d8f7c23c3a3f3cf57c8a5400b3ce896e7c662b9402ab4918d93525a27738057910c435ecdf65969b6b165b29466faed7fc9d18aa98970d9c69747a97a1f3e8be532130141f8929fb3a3ac4dda2da6d5c01c23c5ebda678960faabc672a6e2a57446a7666781f4e7fbe43e857bb566f58c22b549152dc6cef3425193cdde95cc3121a50f200745c4bf97089e1cbee11deb4b01328612ed21f339a1bc350ec749e4c25da06f486f729ec4949c3eb0d946ef22b511c07b36abb3e9a34297819a430acd549241db47f43af7d74d298ff635cc4c2119d97e0c76fad6a86c82d2d7f34acc2eed41502de487b0b1de3dda8bae9a1759c1297547308bd8c29f7728b80fd5cc239e73ea153bc3c7458071d9b85fafe827eeb9920a6d19845372af3a4dcf899bf80ad97075bf7b423ee77d52abd8ce5d11f614f44d302f7f5e64ed2f9b0e598ac7459841f85f713aa319149a44b783fc7180d6b5ea765001bbecb02a83ed0284565e5e27e3ba76ae862505cfa277def48ca058a9422f7151fe73f37d225eb30332e8ce6dac4d8d2f7b9b769f08afe1b9d928b8a0db44e9a495b512d4b84228eb5fcb2926c55dcdfeef2851a13505bffa789f5291adea6716121586dbf5f851156c07e0846503077b42e5aa120aab51bef01e0820c58cc32cd5f34056b5aaa452c586637b264e417f41b2792d5895f254f000f592e6c6ec62c7f30eea5f42e715ee393fd512e39ec52c65627ffb5089750a2f6dd58b714bace16e0c32be55ec40393d690ccd8a6c04a9feb4baa9b5a0e9df654fc158ac99814225bf633683dfe875a64c46e1d6275712dff1e5f532caa82ebf2552db319fa7a35e1d4b672cd950a097461f2bc22dac48b7c02a27b17a1f173c46cd3e646d97e8179819633f395ca6e238184a94c4e9c97e57e87b1169771734f07c69ad41e51377ceb165ccb8d48c4f1cd0336672ebd666bc0f4710efce6a3235e3e57a74273c7f87f7f6402c1a74fc4d83da17dd1e5215c63d031dc289dbaae40ef44a4abf90f3bbf844db12580ce823e4a9560130d9ba5678b9dd9b81c8d30cf85da4e3e0adcaa0a0c1184a98f70b6bc9c68a59515d2422743edfa676e2f5b706b24d9ec5c2027d5fad243d7014c6f9d7c6538c0f8407c6c84a557bea45712507df55b2db3a046dd7059055e3aad819c20ed33130766e9c419e032782de829ed53bf52fe8b3d63b0fa0cb37a009064df5d018dae941251af562b4d01ff42cc5d68df5d28c15f03df4e53de32a8e5308c6f458fb85b599e8d322c6c21503062c060e3e74214f60caea1c2f75acc7145b3196aa0a65526750c82f8975eb0a5e2f30c9aed0333d2931de1aae9d12e78ff27ff3bb08f98f9b0c4dce505add0b358082353a42b3790a0f8318932bb6001d8af9a2db6ac989d9af9529b96861edeb842aa97865abd008f2c1156a07b0422c76c7bfa218413c8a9b0f51e3c54c9817ca0eb95e6348d204f5c1b317a160bd08323ccc815330f54d06e01c744a7396da6ed8660a596a80b983136dae2ed69b92f0bd205e09009d13665a115d349a93c6cf9944a0ae60560449eb515efe63a3472f08c4554d53f3c798c5fef5d0791eaa997cceceac784c7fa594f1ac1515276ab924e8cba6319d740e880e1a3232e1f59829f8505484e25fae0da74abc4eed75914aa9a6543ec0b78bfa07612f119cc04e07be70918ebaa0933c010d0b94345ca638c0a29b6090ed03bbfe15721741d37bde66172260cf431cb055b04fcf2fda15ec5ddf5bbdfb49aa41c814c8121c3c04ca8a546d92f70129b47be6e292176b46d8718f614ba4780f559e46dbec867e0b9a231522154f33abb7cb02cccfd167816f10e6cc41d2f3e5ece241574b174f05afe4bd9f9002189123a61957c4d5be81c8195f6c0b00178c785397a9794aa7cc7920821242e33cc6682bcaa4271b8f456e74cb56a02dc9ab13a7320a314ae463a0f902d4de130b99da26d90d7f439757ffcaaecc8bf006e47864f77907a15296d7fcc0764cc10137c6f2299f0967c48c01b6d3a47e8f0bd27958e3f74ac61b4a927569f465d9c416ec275ecaa0791a4e65eec1972a0bed10b0a3503d42cddafc65969344615ea4465ff927156c931558cb0d76a5de332d7743a624e646c5d5a03c5e775bc9850171236ed6d3685b4796aabdbc2789c74bb1f10e5eca96ef1cae80b2ab64ec0f9f66adbb3c6f5f55491ae765d2b20643a760eaf16043eba32275823870020c5fdfa543526a6035d34f3f40558e0599a22c0e92ccf531a085bb8c53451d6ddc2c1f640d46ebd744e2a0fe8485ca16992a4562a229005124e4e61517d2056211538a0ddd0ae80eceed306802e768de79c28579bf5c2c5487b26ab894b76c28e328eed03254f1011460735faacf778ba551ffdb7c550d7e1da9ce87861e7af54862247b55f007a36cc8ef5c3edb32d563006d28a31568ef364bef0ad12ca38f3c271deeff2280f24f51713d1c6af0fb470d5f1d2e201828e37104d714ef10863337f31a87c51a9a03b0bcdc986a7731225fe120c1cc001461cb95d915aa8c41c2e4e82438d00c08e5ebce0b5e875049d34006b967fcf1975a07f0f2861c7baec22d5cb6cb72c200cec71ac14a036ffe6a083bed1b35853c52e823268705ace242730b84b1defa20a101e01deb6e95756854b39a2dac295a041cb082ef117cca602dfe68ba348810e8922c5440182dbb9063dc4623af9d8c96f6028c671872aa06c8a54709e47a04169679088703dae1e391882cc3e345238e35b6068505fd9287222569a9cea3e88dc204a28bdfbeb06cd07204d97995713d0f4bd3769bd3feb9cb805b50c8b470bedb15ba1540ddc62ecd0315deed8756833510015b66df0e81d13f5d9ac33131242def3fdea4a94481079ff2bf287a3f84809ea21d51b32b6a304a068cf285c9be36c57e006365213386aa677565c1b4e92f8bfd06e940afdcd946108bfc98a4a8f68e5529d2cf0fd1e3ac87e052995a6946963dfa5704edc5533a8a0315a599400bb3374a76adb0b026cfab57828a4ae1185474a490ada5cf70cb4a4fc5091a2e2955a6da12da31ae1331319a974055eda6e0a5497770944505b83f345fa44ea58ba042c93196f5293127b260ed285d780294662903aa490c270d6ec9d41227b6dc70ab1e03bbbdacd7c849b1b63c35ce11e3e69a99d44ad298ff0a3807b8f5099489833b175b6e252de0bd37905178ebc660b60965c081545fb805d42ccab6377b14dc057e489adf16060ea868517d35da62a2ee6fe7fc86a4c59740d4abcc8ebb6f7f86d86773ab5a56b9e3c5f3fd7e8648d04a513fc816112e4e0b4c7b9d25ce389f884e918019f5191806d32eb35cc08962406ba846b5b8c38eafcf1d63429df1c8ffe52336c365059a0b98d097d4c1bf85403ea90e9149c479b9cacfa4b9fb85407489ebd67d6bea47be9a7f8c945020b6d5ff51e5db35f040b19e3fca4b8af57491c228f4246c023ff36f26b8985f2d9c092608c4a6eedf01c0f353474778dbf601519f3869ef087e83749604c0700c9feb4b2fd39e56271c05cfaaa962a299bb8f7d8f95fa00e2b5ce56aa7b7962e1f6d7c8178f39bfef98417ce4917ed845cf8f189a5595e4f37040bd6babfe22d4cce411b27031ca7da00db963e053c75b6c319117701d77b4d618599f4f38a64d3ada2ceb47ac592910f872c9e48acd5c381393dbe843735b0b2dcb6a85306b9ab81e13bcff5f87c248540f77f6490437bd671933d9911f8aaba7853e175eade3a87a05a10568c2088a859c56447e5580433622fb05d732d2259c1080a7cebcab608c8116ba5d5b1bb66536e513503ab0d2eff0c9dbe52b25c81801863b349379856c08e58ee22d2f23307bf106dac6747f1166c0e1cd8ba963b502bcc95a3f46b60fb9ab3805e9f0b69965ff8b24dff29432c9551a0d41ed1a8ee28c439d9614d96a0af6f4b43378d84fc554d80fff7a19333ac141792546d658335dc36ed8a5e9af9844834adcdf8cee790c7ce6ae37b9d8f1d72a0be912b06075a7394ef4819bdb9fa7f8359d7d1646b7e2d3f12a076b348b517158d713e0f7020dec0c0cdabd63af76ea9f3e396ea2b9ce4877703455c4bd3be29f8a6361a7382a4ca1e058b6ee94d0c51a43a4feec20ba667bcbaee4fb74eab936535c9d446ab68a59c4831294f763408b041958283a19d6314ce46653f77b0ec2a1606d0c6b985a5b75d089e1237cec0a77ef4ffea92b1a68177180410b8b50cc020b2cd39a89a3dea6c9282e35ab640c05a8f435a75c7033416050c544e6772a3ea859d2f89c8c444f335070957404caa137e88bddf2342f6f3b5d4699c0d9621f69edeb7f8c0518cb65cc6fb6a9ee22960561583b05f994f8706eb04c25a4e744526109981dc13be06fbe3c02de8134602893efde3d311167f17bac0d59157e10d3620732dafd1f5b9d09ad19d461ed994bcc1fc7bad12e31f63c0d362eb0fc173d1dd52c636c3de9954f51aa5941b730e9627d3050a64a26d98c91dc1b7aa0449b0c6ab993efc828b1acb3fc974c89d1fc93b9bf21ecafce00b275fc61297e63380bd68865f1d0c8f7fbea1acbc758c579c4a339d8bdbed0e37c44c8a291696e2185263e9d2609810d1cf44a28fc39a5d577e37c9dd5bc51ba2735f52b7511f71003b6f1104950aab9716acde8d842738766801d1f8e2461b166b7a351f3a5e4fb78256b8976bcd08c78b17363d37231f058dff430dbf786a8499d6e9c8c668f4b998b2e0043c65a8980ae6ed32d1e96ea6d87c608157e59d324842f8b48e7e931feda02f45824f10798cfded6a3623cbc68dafd8afd97263988b73c2d69ac82eb56e7b258102e3973fac3b472d3b4f2e3be4f1ab5a6c8e9b088d8c4c662316811506460003afca973b695380a5ec136b555f2a8aefbbfa8276e8b2e46c899b8a3965b46df3a0e609257429427fbc2125b04b516e33a0bfccace579ec14ba542b3ec37cdf56ede672ba4405d99f1e2d7bd0186e252bbc151c80ab8e695d1c69765f65d86e72341fd37a4bfa0f7fd60efc17b4d634a1dd7a1a0804caab38825600ebe88ac8c5c533ae4ce57f285eb244ebb2f990deef4b11862910bffb1fa351bd4b6105d946c430b5445f06f6ab83cf7c721e03a1f973ba636d1cf10632c9de027c3721e903b429301125f7e0f91b136ab738580ebb80261711df011a3ba1dbe88ea09daa46a6860449f828be7f871051c9ee3c775015e7a62d95e18de4398da0ad5fd0d9ba00a4dd8b5379cc8500c169a4c297351b07d21b535f33b54c58a46b0799f9e15f8d5b6b5fc227709f3a54b0764cc36847e82bbb3fb27377d74f91aa227a4cfbef07df86c2912cc66e68ee4e57e1e7f4cd5b27f7daf4cd49992d879675e2bd269c7e4be8facd746aa6ddec1c12f5427b12d0e5cdba506edd6598a21130011ba21c921db0f428ad5aded282efd000a18fae2a9e4a080cc475c96227c0f4ca84ae0dfb0606e97ae5d06e92cf3d650e2ac3d1914ab0afbeafd2e8ac3793a47646f4f824157b3286971ba9e496d546a514f1aaddf64e5fd1bb6bfcde4a0ffa2835b262db70f3b8abd925ec79e6795ec40910f8a737476d5bf8b8bc40dbebc00c92bcc9d9505ce3b4a00e83cc3b961e9e01ea161325b3cb9f5a27b49855f067649c37b8dea0ea8adc363de6308dc23b63d3e8b7bb5ab5083b4cbd80ccac13f52f94b9ac8d5def98896c18b42386aea595e9bb4b067c634f85d8ad4962244740d724078b20695309e8c02a2ce98fac8167963fbc004007d2d1adf37ff9a9b14bf99aedde5b8130080232b57c9fb19a224aa5de67b01b30d1d4ffece1993f2e1b7aa9d2c651d3936aca3b4051aa191995572c7398c866c1df15c07a91e9022047e5357d2ba9cca736006f4f085a1b90737cbe573e77bb989fe862c49ca4e1d4766359989c4a84541ed410f8d559ec0da5b20e5239ded8101a668dc7f04d86c3e039db1a931aa62e251b33aee2b8226e43917d4138a1b6a924686ce0df2c37e00421f6a586da393beecca3c2a663580e2878df534549aee1fb01be463ca278437c691983957a64c8cad9200ce8854f4016dd00946c3e97612b3cd0c20460c08a21ef64fc22e09b3f067128dab4f2714c428bed0bed1da4abbcaa16cb6c59c144466560f10ec84874499635cb2a381e1feef39c40d12eb1c496da302ef12064c9c0b1c4208083e74fb9c47b77d32e3422855060cac8535d53d1369d61154a48cf8c7fb16b22951122203a85327a54531f9aa42eaf4db0d1f14add3185d74c12c8194e11ed10d2c61bd7341067c253fe01793bcc613f92c5ac3623e939d11f902807c35f2a552e40a2e2772125230f13322d664e384ef3ed7d3f8bbe53996d0328c186e478b2929617cab43fa8b5c4aa4e30b055bf9d339f61f54f94e33290a9484acc5a510623481134f2bcee339a9e7e90b8cb6ca90b85a7e8d375aede43d14697f21ee12f293bd798ed114c96ea1219c298abd661ec20ea590ce479add1ce52f3a12a1647fdff543afeb200bdf31afb33938a16559fb7081143a7d719160e0c448a76c5e6d0801e44483f142eb8f621b6cdb7f08f17f94c3b6ec7ba951b72c33b6a9cfffab571d469d85f9ba9a14e5a101c5c215efdf36ee116b655c55447ba4854e897a2b0fb840b499a1accd0a0e56cecefce8ea0d4fdbebe68f3460861b0908e3e750145edeb800bc23ee3fbcd3dc6572ca0c8c40509a23a12d99282a148f549a017fb0306e44ba5ec4634817101ff71aaecc3e115987b87f0cf335f33ee90834d965c07e85d8b5764ef0637c1afd32ef881452347e051a93a15c556abebe6869a4386e79ee0a2c309b9816a783e6aa29ec72a0af488608ba40ea00c83c783dfff0fc6ae21cafba1d7268cecaf0a051f27d5966c722bf64f588f3855e29a53ba29140e2c1120f5d101be530372f7acdcc28a4e28079127157ad6f9db32943fd1001fca4ce008a7bc41851e090481de887661bcb7802b5e97258c3c4f1a3e0b43cb4eb3bb569bf00a677501577b2f7a1f4be05976149944471bc82461fce1fb8296ff026481d9bb2dea2edc634c720ec11d60891524a29534a52a61d790173017201adfa55578b137523af3f6badfd96996e996958448920f1447d6b9727a463605df5081a622c419773566b2f4a9325bb7119b02ad4708ca3b21539e2cca00872746824e869e15259b356b181b6c5501015aa21db87decd5ba954e52aabb2582bd2ea573bb576b45a654a455d29162aab5d97698a67d1238dee72977f9242bf10257441d19ec8927d8083d3d1ecc686e560c882253dd3c3077ffc07fedeb841dc0f91d9003e88c003d4155228ac4cc5888888a61150597006ba62e24214b4942a85b915ec206bdbac5c752f2d5b391d4ed5ac66399d2b5753b2a45c7952b4c83435967905c6930a7f7bf1d5f8afc67fffb4bea8803370eee64b3433c34abc899ab2cd31c731cd7eea7643b3438dbaeebd1b4fddeaf9dc2da7618f09ecfdc97b947b1e5fcb368ced3ab65065796887476fd239f692b18c8cd87aed0c7d8c1db6e358064fd022aae3224cbfd3aaaa2906d594e7933fc9efbeab5de568482854c0938c40a099c30921812616c32426d25b0706d060a233a73b25f5fe1c016f25dc6d41bf8001121a6196b1c2c524c11036ecee6e69b5b45a60a87619c49b183ddddc133acf7931807c21bc31deeeeb7eff1b98d1529ac1f5d82ce38c9921b3b570c321b193524a653cc18ea2a0f74f49edf747f8fc92d36118d7b47b589ae31c5462459613c159100e6df369e3e0f0f0e0c852f8d83e422ef8f8f0e079a9586fee006d223e80c1ec8a574b309a124c45c55e0393719957798d8a134dbb9977445dc67de6472e3343e505331a8d489ff6d95c787964b88559eb8289d9968d59299d3cea513e25451db7e279a3aef4a4ef929748fcd43da7f6d9b6508707dc9c9a663d401d23ccef5858bcc6c25e65696cacdecdabeabdd6d66b27cbc7b1b0ba5d1df3bdbc66a66b5858f46064480d533991b4bde6bf9675c1c4ca5219d5d69fcc4fcd4791147edcc77d9de5ec4903bae15b07a863781a42bbb8e11fe2c286b4b245ae937da8300e91e4ea0f0ef66bc512299abe53bafb53f7278f9ad2d69777de69abd34ee9d54ca7b8f0275b59ea4bee319a3cc74891310a9a327e915a5fc7449f8c67a22169b960625ed06334c1131474ff62485c6eeeefffffaef8ae175c2fc4fcdb0f939244b7f24b691988111012053c9ede7d7a266a90216a857c736e93a9ba1197b4d63a9c7bd99979734d606416c470f995f65b695d46944708bb4d60b8432e6389097d50c62781c7162e58b04a66cf96efa876f7d828540ab64098d7014dcbe09cb663c32c048769cc78811edcddd937eeee6e935f53c999d9dd7dc68a86a87b464d7bbb7bbb985c4c2e27ad98e7799ee795689008989c120cca26951263dcd098855fb8151337251012a1ec040a12894d7cda445248117f0c97b6ba5f29afd63746e6d2c7044b11c28fc808aa95ca6654a415c79a619eacf2989921052511d078b162c445f6b9885c442ea32b83b5ccccdb9dec65dfc8d6624e4dfb7cb62d145ac162e45f66b4da976c2bdda8d41eb2f4fbefe25f7edf200386531a65126a5650371826d3d6c97523afc41bfd94c85c25116c2f81f4d7da03358e25012d3132a20ed5f7fa5edf6b0546f5bdbed7f7fa665c2eb8d905e2376ff1b71429dadb4362fda7cfe605981f1071f06106813c4a68ea811c82127e3e750381a6517ae1bd3d6be5bc8738f70e5f8daf066b05627577b354aa1508dc1600de48389bdf1cb57be1d52084fd1c179174d9514229331849310472307e10354075c75f7d5b0bcf3b015727209dd77a66a5955e3b258c90e47960d0e08a6bc128944995e2e28114af5c56f123a481310873517127138a4b18e98cf1f58a30a8c3c31cb204a68c510502248488111b2884526e107727192b45f6de672017b9860cd27497411b48208cd3a2f936e1e6719919640fc84541795e34de20acb7d9dddd2997f1e944d1d95070d0288aaa131c23210dc5d611f96c90d0385f9d557ef52a39b26748e4202cc2981520456b1d1082069aa4c076783c3c7c7c3e0030e76f2fe3dbceea24a66d6c6c689ce8bde984fad50c0bb25050010c93188e453c626f020b6270c7a4f9b5f3e267a51c097e56baf9cdacf4ba46ec8a1197700557307a89dbac64ccdeee064500839600181406c49134cdc3302899737bc903945b893b4afe07215e5f75223b09970cf4e6d5cd91955fd06b15fa5a7a946e3c6fd1d0be3ad6fde0823eccd4a74f3c5235615f0e49929da3cc9510fcc22cac9124e33c8fab68177dba442b4f26fd4e73983120065bcc95bb9341d25b0a10d623d61abe960d3733c155d9237b77989d011d84f0aeaaca869e5ba97cbd3902146e4d82c3328268a12d17041698f8f2cc439c9da78501ee921faca9de752742b14450c7cf5eb264ff0430bc0221b2c22abd29b70be91a6b92413a2890260b7393624f21401ce55e8db5a662c12e1c8651f9c283e26489d60d645731468a515f174fdff914a3a014e23911a42f8360fa7c0f49d674569018ca2f5a975e06f94d3e03114e9d993b59929f6b83f0cc321a0e22051ffb538653f17988f739c5286ebfdb4cd0ebeea113c5ad457773ae185425a976cfd18faa505db56424ae060ee440911aad1af56082b17d34439deb0a3774799e53154530bab5bc9a05101e9beed251802024bc40d30c922a00443dda0129ac2d45efea5c2f215de594daabe593b9dabcc27c508cfdf9efc436b75003816936efda5fa6a2c074c0f47206891058f6a7dd84d0a91dbba3534bc534aae29c12607a35a91b11b9fb0fbf479eb5bdf9c2d83892ff16227fae8945efffa6130e18cc828d00171ff490d7803cfa2a2aff29b8ece60ea2e8a4d147f024f6f3fd3c145c642cbabbb1d608aedbf938df0bee9e56fa096cb18b9e7a73679ba99cb53d98262d60224d5f6d99ec7dcff5acb4395eedacf3af11d13aaca2b7bcdad2de002b4395aebeb8608ea08407d0ef02f74faef7a96b5b2681332dd70de62d5ecc46761a5779e230b1a45f39bd48960af8dec3dba773f47f9e9f245ce30405d8da525d6863ca3d07970ebf111fbea367a06893ec4c0adfe06f5fd89ceb2e61961d5c8a8f4899dee6bcf63767be8e60b70765e60027cca61027dc5e7a691bd6f58002646a6859c950df20b65a8dafa1c301d81bf9134601fdb2c901c881e2d3058cc0ce4444dcee030018f076db398a75a5b207d282bf40608ee7cf8200ba583bcdce054f63d83c2af48681d6b487dea8823cdfac0087530d3a911c9b7e8f68c1bdba1fb139fa7fc2318dad840426c6456f80481c98d8dac93b096e13e164e89510e07f011b3d883c4e653827d610d0db429511dc1fe76e024991e1c65bbfec43fddec6d7cfe1ebe049aa71af64c50ed2024836e098f6ebb6febc1a6a6dc833f935a1db0f7c8e3315f2043b07adc890013d2c2264550b63dd06af0b8767629b72113a6ff5db9a9c0d5d7838ce65a88f3f65e576eb6b0fc015d5853a8550f7f9ba09f8203a70ce5a34cc35725608ea16cf50dfa6d333d16893ec0cee69b6b316933b5a1357fca2070e4f2778833f3f2a052d0779c8b98da0dc02387e4de00336b5e5c3a0cf223a48372313d3764749e9d3e9950175efb77d4dbedd29acf12b0b516c0f65c8c5286601072d3c504babd82fd538ef06530a4d91776a44f8ffe39b76ffe9863781a0f61215526bcd220fa6ea6ce676816da3a21b10adba93ce4761856cf990ca66a596277beab9e390e8982b9171d3bcb31704e782494a07a9573fddc5696d5ecc72f12f5496aa04d63c5de21033e3a4322404452641da6424c80cac0849812455c92fafc93610401151d77fe39723a57b128f762a5f6fed2bb2f061c3e94a81c3e559eba9a54b0872574c8ae1de8e7275c5c46917f1de6ee7a348bfc2b66d1eb089c8526e5d79333c19e9b7976191be2255eddcb9489079238f022b18d13a166b6278f78934a82cec94ee1327a95cc8cba2b1e0e0eb70c040d4e07c3bd299591806ac18bdbc772a5442d5cefbbd99874a770de1fe4210c0c5cf66779d05dded1636c1bccd72cc2db9292d157c514dbd5c2fedc90b6205286978384189d4b86917ec2e7e828a9ea67380452d693a2d9a3151cd717db0b8dae073a83a926cd905596e1909cf225f608b0421aa0bab7de1e2ecde06fef15d942db6c7c0a5f5bcc4978438d1491db2f5dd303ae406057926aedfab0755488597e67b88bc88dab29010a375920ee778c407f416dc8afb0e0b09dd40dcb8ac18855ffb347a726227bdd392c989bc0b77502878cc6eece94d0eea263412bf8834d6df21d31e3f65686ae7d122e7891007d1d607092f86a6035fdb2945d2bb82f5f351b8926845ad5dfaea246b31fa41920be6a9099d0c017792935680b2a84d97cf3e3671d7b2d1a73ca84e461fe5a4473d19258795759270707c24e98341cf4f84e19c9e04277cd05afe33566ed5e0758597a68325a524a97bb887a0c71dc26ca1b91aa4cbb1b3f63244bcf438251b4fd5d772ba3d25caa825627f862c05eaedbc9edcf26a326a339c9e5cff479c767d69c55a6a39940c8e41c2454071700f0946c81b5211d6ba198d878a306fbaf33489b209544598e48a71d293ff981053b23f1c90825ada8d600512c1540cd5e8b2ca444232e16a81d51681ef436303175cf4176e3e438408491b8a5344b7c84cd1245b3e5ef243e4d286e6652a4f96990abc985cb091d2f7c3ce92886864ce0ee80dd70d48b9c4cdef9bf73399e5076e9f251ac61e8d52ffdf1a6916482e6d9a415ad017a468e0a26106c015917f5da9516ffcfa117a322a91b5f4a5846a74bf88237e389f870a85f682f90bd1865e92715724fdf9f86d0e429a4b4da46382e95fb4316f563ab55ef1f95527d69e8623ddc9cbf2cb0a6647270196b258da7608178539a3fdb60e1cb8e1925ee82739ea71497f9daf568719b7911c7094eb77cb442cbc8821b01a7f58a4564dabcadc4c2479a7530ec4482f2330f255a976c343b6979a9e7992d1b602274bf4ea1695fa91b90516c4cd0924f0ab94f5fe67353a0e6acfc8b462d42ee10bf563ec051646876bd2c07f3570998e011b328b8831095308898ed08c274a54f130fb7cde982774e874912ccffaed403c51ce6db9304f7dbb8f79ca71156e9f74663dc1ee1490d0be2b69e7c3175961bd68fa371cb414cfd21ba410ccb2ba6f0202617fbf9382e7c0721c2eaf736b52251ee81bc0d4bc82d7fb5b0b22c16ce2765d83312105da25590bed87e2cfbdee21dc8a9d212d266690cc2da9bb9f8c1aa0f3fd102647eee89d5611a2ade68010b420f46b6c1e7de070420d5a184be5d9aad9a7921fa6deba0e3c43765834db21ff404cde6e078858e00e6b4847cfd2e78f6439c81dd6f5c6b55f1fb4293efb8f96d68481327fb9418c15229b520d1836a16db46b4fcbb06ae0c2ed651c1af6d1223492a98887aa4d4f8d84ee933bc6ed358d9e6b05c775ffd81465d3fa5acedb7f16925139d5818f905d0e38497b0624dd8fb4b45f70c17e268fb0ee946822b4282156de68195528c61cc73dfb5d0ffa2d336dde3b2287f5f4c9a6f1b5072e8f39fa8fbd96e7ac6c6beb20393a07102f713b894a51f5b32e815aae7bed0ac70cdbfa5093c61303f5545aa842726fef63aa3a6cb61172993aa9713fb633ae0a11493579bd7fb3b24dd814d5c78020112f68f0ad782b8c434e464da3abda6ccfe27f4d5838a8ef750410be02b842e0ba2f9be7a401b27a0f90ed62e278a02b7466914e1ab1c48e90b2be050010e4d72cd0954ac73ab4948554a7244580c833e43478af2eb473d16f5bd0af2442f3b7e79161402072e0bbdf232e83bfd8cd36cd2aff421d1818c6c40f48df23c01a49d80fa4d63127b609e8cc1f916df9de9e48e7aa101f08b4362136b47895676f76982700b800cb099c5f6daec64041153bbc7aa2917474697a62f3998458f87c5388a5eba405e7eedef97259b3bcd92662a86f247eab821b4ffba111c03e208b127998e6f28827663090759658fbf1ae1fd112c3625704937873d5aa980b02718fcb4edef00b7828e112f38c8844e2b79017fe67d16ff9caa0ca820cf56f9d12216ebbaee202eab2387d0839a796cc53f041e951d64a4a7fc8994aa193e34a66e362d20e92fb8b5e795d4e566c241102fc76df4235188600405d94aff4e04b165ad44b387a2230aa5ae635d672accd30fa0a6c1dfa8e18f84e31fc730027f73292a250eb4e3684afb3527e36381568eb2950dd8eaa1a982d8081eaae0a4716609656c868e9048cdd77560b6903d9d7e2e3e26ca835b080e090e748ebc666593a3d63e04793a7410692a4535a38f4740e1da836add8dffaf0d7a787f425443f5e9ac4d11808363dc47b301894713eadfa9da9e05c75f4a9d07e9215b321c8cf767f95b03730508a5943205315ea4db5e0cafdefbbf52a2076286e9986959eca11e30a95d42280c58bd400db977f98eedddba86d9f0d7990027cb6f3835a349b5994a19edcd7a993e773f96e5b159c1cf58eba0305d1631c3580b4f301165921ab4bef9146681d7f87d6615f0c42f2deccae7266f6bbe80820b5484cd271315534a7f88b10ce375a6e1ff038f33439a20acfa71524d473746abc22a21a4680e07c0a47ca8319371351ab49c6d3cef77c51613f16989665e7c05f208c40687c5006af8527e521c9044b435850afb5d13b51b87c00173aa612a488eb4b19389148cc5d66fbe9769f87aa265c9e7fee6ce01d007f755018cc5838523184af46b31de25d7813b5878ec09a7d59fdb639e2b5bb71fc36653fbe27b3b69160bb26a1999139d6e9abda5594b50ee13e7ab048f71833720e07c884fde87d6f2763470790a3bbec4a2021efad7ee925b4561c38922c798e98261397093993e11b54aa2825e2b8d4a45bcd23fb57b152518cea0d3da77c270780998dfc645f9d424ba8eb98cd891a2f8383539432f69669973576870cf60cdff6257b298608c82b9965cde5cf1422a6627103c50b50849db9fd42f3dd251d3578fbc462ab6231b1370105c9e38ae4c79ef81462ece0f4508a0bdf92383148caa7e33eb2c7a3f5811124f4fadc3028a94e1c7df1c2b9b58510630fc62db227b6c7ad2d259d46fa70ba267c7212f46ddddf69bba44833844f19e0a032cc258bae690579b6255a0fa68046535dd9352de1e4730226acade2a0d2856c69713808cc86cc2f1518a8003055e63c4644977ff1ffae540f1372b4fbc2a00eead2e531521687e16e88e0c4da13814142072d5ddfe1a57f788305546152e10b0889f1a3234a5ce1fb2e91d6263f1b64b2fb00b50e015302883c62e757580ca509ab2c599063d7ee05d0780f93e8a0d79518d3b02c0b1eef08545c3f6420f74c70cf5395d74670bb45d18b4830fe648cd27d2b83f84ace0a3c6796fe21a50203caaa391489f7bdf220edc8c106827d4a21e7ee0efb8976d2de228dbee8d9443c768024010ebafaecad3c468a481e12ee40a76473cf7bd024ea7626ed25372840136a8313f9a7caf40bf7378750e4db88e4f11114b8c690b31b6b04e9a71056c44a7df530da312a738aa3b4778bd2d4e745772598519c32e20c19cd251b973281c8ab0ba5cd2c4dd4cccf85c7dd8f493cc474e38d9c25dd7734d68081cae0a3a3dd6a0a584d9c101751d2cc47055a580e9bba8dba7886e149b4f0c9677afce69ca39b17d3812e547bc3bb1f7dc8dfda503e48e4185704c29cba73f87d047eda0c89a74206c82d37098f73d71db4c1167e6c281577d739fea4c4d9b7706ef8be010225930f57c8b25ae47685a40a937727ee18945b754df5cbe38d74206f26820ee62ca543210da7591a61dd85386b8121135eab42b7f3530cdc6629af79fe6b866ffd3dc390c80f368ec7430b8f6b480aea8825940af5404202c7a1821a7bccb8e6fd0d62e91f732a03c5d8fca819526998c5ae91b824fd516107956c19831de5852a5ca1dd7aa23ad4c454adb318b4adaa0d3e62e9cdf669a4e886af456caa4e731224b63fe7851702b77806459d48ee0292601ce48c54779120c8447b5075dd177a932994923c4bb853a17c02c7f584a791c5e94c6257b9881fded5b704953fee26d56f5f218b5503f1762f1da4170aaca887f2c9a4e27647011755dd549bb5eb5c81e1d08545a20d5010c14a3b20269828c2ceec84ba81340079913217dce33dad26517b7be39b8d3472d821ddeb14dbef901a8f436ff153adb081c6afd6c1d5fb531b03a1cfeb051856ad4c399c6d2c8c7a78549cd351116f0453975e31cfbea877b49072ef0bea182b7b6730ee45e54fd8bae2fbff50f634380a8cd1f601ae5fcfd84be8d338d7cd8cab9a9828080edec87b7acdeb592d257ba12d2ba3105e5b9af43f1fec858fa58fb5c7e3ba2d6f6577b5c46b8aac097390d09832667543b60db32b4a503b98b754e4775a01aa8240b198bdcb6d61c3212dbd7e4ed5d5d001c2f00259ea04815935c8f70721cd984259c0b776830e50620a81989f518e5ce4d7084ecafd33bd6c714e11a008bb3cf47da17263c83aa1e78afcf3bbc1cfc0113791f6862d0a4b0bed87a2ebce9b2119012ad5c08bda3538723d348e05753dba5582b6478bbf8f3ff8185370ca024e16c2554c924c0448738b1f11059045d72c81263b4a1405f008c788a7d4259610548932f5d7c068953dde735f7236a3a54cf53fb08116b9279b4d065daa6cb8ceacab63f23ce7b996214c0c70410d09306900f1f3a5d6bba23d2e929fdcca5e055a6ef92c90ca9f848bd8171c84bfadd3373dd010d128c81627f2bb8198aa796c4149cde3c3e67968fed49f68cd26df9e594663803657b5a5426e8e6b2323da88749513baea36c8d58ff9b662331ccb7c8ba977ebffb78b24382bc3c06969d0acb4c6a9da58ea230710eebe4a5eeaf8ed9a1d6bf03d18ff41a9ab5eefb3c26548d61c6c03c63680ce6824548f1ef6a61765c59fc5cb1602900d0ea0087cd08c39e23596f90d201f860bb3e709e6310a6186ce4deca01368f7ed510cd1a087d6187b0251e090b8587dd354b0c295253abcf58efbdd5ed8ab551491a82602d71e2b9b1193b2d50a94743ecdb2057167dfa2d0bd8ef6cdf2b904a5c868209b4c67eac7da6fe03eb5cfdb2ba465c3de78e7f8436d3d7b098749773d52176cb5402ae6f07ccd24c17b3fbf16c534aba833fae9c042a54ecd505bdac88b360ee34664c8e80c32ab096be221bc28024a3a093f5c6056115507d8567e3c5818f28b9f1144844ff4b6efde7f04f61c1a189f2f513b62187a0dd2286c5e3a585977ea0c7b3a593250cd735c0a3d3e4ddaf8da4cc102e1ecd7b14412148b18b0a938115d685da0aebf4929b794522699d20ec403c7030604f767ed8fd18566bacc394b6f8a5104d2326e108aaa4e2c5bb86089a160a8ac74ecee9b3ae7ac373b6e8078a1524a293b4b3965755cebf78140398b44a351b4f8f3bcaf2bb9f3eec59c8ee7fb7c4829e9c9499623297337a5947286dcd479884c784209228c804558b3648040398b44a3d1ca4ab8e386a603ac45025605b3c0f5c65664c5f0c294cb79cd09c66d6aacb7765d0cc60b8a5de5aa184fdcdd29a534fa8e1a9a238e8ea9ad614a29aed5300542048f5477f7d8f938c9739f5af18d85b230e6ee1ee3cb747a793031385272bc9c0afb0c8e73ceead8c2d9e5c2b5ec8bff628c6f8e478e87cd0c324066761c4fae9595d148943fd7cc38635088dcaecab2dd702251ce9845d24249000460924f30f6f0cac5214fb5e7165d13638ca76de2ec354746ce74cad9b8cc00e3eefeb29c0fef5eec2a1c4d9ec3d184e3e946138e3171e58a2d057779ea6b5e1e63cc89f39418df6ec618cbdb8d06634f4d2f5190473d69d52ad6d70b0d83b1b0b060d131fb8711d3939cb79c156bdc59f7f3010286888c80eec551ce9838e393cf112eab5b38a7800c93d670738581e24c71c63b60aec546b0742a9387cdf3db262da1d11a912d17aae1e624cd7a29be9462ea4d162b9c35d68c735aae5738e70c7362c6d773d65933cf9957e4f8be9a1dd32c02eb8a1fd0f659027c703adda08b696fc78bc7030e4e9d8ad570a0fe6edd33b31866dbd97dabec5a969a75ad91a67adef5da7a1d335b0ffa40a09c45a2d1cb1631312b1956cbf3680b5ec6b219ad6f8dbb5f57db5a01e32e40676f1dac3ed1bd602305836eb00b19627c00460c15a03183fb0b0a9852399fd4e7a4b35a1b4d1ab500d15815db5ebb7001f5a42ea0ba2e825d17fadc631eb5a82a12453467c719efa8d3f1c95a038fe3a6a16fec3ee9b2f51e50e70b2fb4d7372ff481eaf71e0c5547f2e46705017d4ac08cf221fac07d809fcf0a4b8b17efa1ad3653bbd529f1add24e3bf195aefa6a17f5199f715b9df9fab56697f9501cf7de2a87c5b0dc5bbd6ac16a34571a5f619df3980773da7b3f65adb5561e321e321eb47b31a7e3f970b6055041d5f2f85744a05595de08e4a3beb5a97a25ea6bb375fcfc4d501689462bff7d20a8244fb9c2d2c245c3f05af8a7f55a8f0858c9f32afd6ace643ec747669d9387d9bd6718dcee06cca9c56442a1483e2bedee130ae6490e213768c809258b40582af8424e204c80b06612308b001c72e07e5acfffffffc7e7ebfcff7ff67cee3c4c4a9555565e4a261bb3e22b27a77631fc49fcfffeffd951ffffefffffa10ce9a5647afaffff614ccbffff3f103540d40071f3480081fb21f6999999f921171908419ba4fc228d28833e1696af070bcd799ee7d16969ed74ea0ebcea859eeea063341a8d462b2ee4c04e8d98d99b6bed4029656ed9ddd56c6f94f8d26070e6891fea9cf6e2d00a1ae4480284d1b57574adcfe9f5884ae14a51d7b98854442e608a12783f542f5fcc261b64708387ebf1841e46f460428f51a52a28b5d64a29a65404df779ee9b54ca0886a9d75567add860ffc3e1511ca0bbe121410685483f8e2cbe9d19b31caac5d57afbd985329a7de8a6b45d56b57dcf028fd5ce99c2b4e203b15e0a64a581e3d56de2920c6184f5aaee33ed1d282bf12187a071b0b236153d5223cb6f016ee68e9f8d7a1eaeeba060d17194d698caefa8d9c72ca9aa34e65ac206a649855552a56cb75bd0e07e38b6f8753ab2a46f5b6ce7cc662f98cd5fab852b9c2d74a4e7a3d260b874039690aa5ff6f0510627cb9ba16ecba5ecb9cdc9193364e335f3607f7cd4d73dbdcf2f3843a214e083be644fcd82327edbea1919dcd934bc361a48bc378aa468c7e1933e65abf18636481c1e7e205a5b4d6da5d6b7b9ec9abd686f095b25b76ddfd77dd6caf6966c7f37d3e40405c3dda0d7e28cdd445bbdbabb4d4272f7929baa2cbfd5632dd4ab32eb970ffb7db8de6e5069290080182c33af3d1e6e3a773b780c7851ff826f9247402650004e8dc5e6dc7b58d92bdd73629b45104a642c074ed4abbb0c3968eb980eaa63877b5d5d238cb5d4aabcddc70b116692d167fe04e444264320060174284413e60ab5ca66f4c79ae72554c45558cb9b6af6d01e36b49bcead36b95d58aaf2c65a9acca5a2a8d723ae7828a1523031c00012cae778e29ef2853feaa998bf482b962eda1cc15c262f38514a3e924a5e384b0d9cc6cb44e59eb1db51db5b675871d0365d168b4423be7324f717d29a61cdaa9515be3cc43f281409c50c621152b46063800021240298b0f88eba2ed13672a130093da172eacad7a255c7499a2ab64ed49056488249c93685a0dc3f9b1b5b5ca0012f185e10cd62d35478dcea25769abd65aa9d76abd288d314a8f96022000937c123a81626d10ac8b393253f9207ee16356fbcc80e41bd8ad56350b04a11f9b9bfea0d5c286c1c455c79ad6b6a6691bef5a30e55d0b1251aef2aefd80f1aefd74bc8e77edd771f07735fbacc34a9bc98f33e99a9168332e5b447549e538d2bfc4dbcc0dad24c36ab95e2f9bc6719ef31ab7f9984a99bad4270fe52e588c3df8c972bcf1f4f7255dd5d58e154b76be20fde19f3869b116de5ce3a4d5b317633cc31bfa2f8b620edf233b934371bd9e8db7d342a6cf01206cfe97f51393217d2f9f09e404d220c847e7ef5bb1a20c970e5763e2dbe1f8f560cfc41d4e351a786b076d9e8cf7dee0b8c9c18bb52d304710abea3e283ed3701fccc538b26344c7bd918616c672c6686dcbb2accaae2c0e8f4f72baf7d67e0069202dce5c4e7f0885d5c95615df2406284212128927a32ea939503d2747117638282c12180bd2c0ee2669afb3a559ca1867480972d6cb37ff7d083c3d91aa29c1137992a8cfabe8780b29c83616dcd05c83c990424e7926cfbabb43542131ab1096c9cba49561610893cd5635939930ccb12c338999d83eafe63c99b8322cc3648e9d32cc243499b54c429316686383036f4c6e5e604ab3934c084caed5f2cbc465f2ea1092a905ad105496c9acdccaae5c332ac3e45456e5984cca2f26372d90c926131a9c894d4d779f4ea8895d18b4a96e4395af7aceb6d5ed5610bf6b494b503535b14ff6d1be5a492aa23edb87fb68bedc67232283e2be5cd3a986ba29915ccee646ded255cdb71e15a9fdb4debc53ca18b9f2984b12a969111b5913a9b9a47b8ab9a42b12f385210b364292c166a79ac8cc37832a4189d0ac4464bed847337db619db0d57221283c9446622b438f232521aa91939b55822222f1c38aa276b3c646be94291d2771241b5cc905068bf2e7392ce6aab2723241882f0f9483880db72e9322465e8465785374feab846ec3db6124f8c694e4a1b7943ab672fe6743ec442bae3d128c764286d20900c9d454886307081b0442502050f0b28279663bdc0c8c2188e59c9b4382e391a356c9068259aa6e9fe40bff4694a9a9c1e9573be0c8f31bf733539a711e3a66f60482b0fa3e35c4e34a9da8ced263dc224fd8f2b16dc5c35a6b68ace2871e0c0712916cdd8af12c2c29763177d266f72a80a48440156c308a40e1741f65f9c36e4500381c921f6b902480eb8265e081f2eb00a9f12201360135439db4cad6213980671a3c789e4c2119326abdd8c40c2ca0be2064aeae0b8405968512e248a3e3882adbd3d20f37d4eb869011d41f3d181f2f080081d525d58038a083a4b7460137776b69a69b229e1e544131587d09f5c18e2d6f0a003139880cac4bfe19d06364c554abec0bb615578871d6a5dd344b0f1ae5fb61139155a58d8eb11136eeee6b4a31ce1dd09da9de351003c886d028f60f5809e0f5fe62ee86961592502ac476db93790e00215dd7545b8c954cba9c34638a1403e0afea5ad71ef6ca44fce44dc152126ab204bc22b093331835faee169d0a8f1241a49e6b995e4bdfecbfcff9296c84ac367e0df05741274389d592deee08945b56bad15d7fac5cff3793ecfe793810e07832e39e28ed3c61ccbc9d6dd334a0581b08d38547bfbb6f474bceee6d4db31808822642476ce9779f8bc9077be37579fedd55cbb39392449a79cd65a3b5340a7f4acc0d22246f2030b8d14560f46fd3e10288b58bacb552f534aa9e72623b0275dad8ce5a5c3af5f6c70614347270f3704827e39a087395a395efd8d567af0e4c90096b8b1b8827c9de3045c7e7c7cdce427ff92895bd4e2d596b0438942c65e7e8251917cc56ab95e7613bb99cd4aafa5b4ce6f82fdc98ecdd8b3bc141be76c9ba9a0da256211336b4c6442eaffb3acd4a5cc91c33603206bc71457abebbb71e63a5c4b0f459b880d2d65f78c91df97c968abf99ab791b2fbd3a9b5dd97b0849387ddddddfdff53322dffdc5ed336b1695ec0908102af19c21834171a315440460dd974d25ad2f96a49a76c2b6d944f596a0b16affec2ebe7deff59dabfbb39ad4c34a1caf3cbeb244bcdac68e20d1761a1479a8ffeee4bb49c9a4af1e3ffe70873843962b956cf43b87b9ae093cef931c618671c49d918cfba73909ecc514b9ef90001f7d002b6b336d3f6eb1e5ffc3cb937c74eee783ceeb11e8f2774c3f4baccc179e25c31fdaefb5963ed3ecff33c896bfd80a454e6111f6af564ae1dc394d58b5e4ff957b89d943f250866a8870ef0f034ffcfb0f13901d75f6a2041a54fa3a341eb7ba6b3f30c8f34f824cb868d087c70e841deaeebbaaeeb7fe912479c134f1f95607ab8d63a2527025f711124c87533e62064c7476dfe2e8bbaea9e971d67ccf9ee3ae7640e8783bdb3d9adedd0f75e3f528f38903724e6b16b71fccdf97ce76717fff2c6fd30f970afb77bb7b7b7b7f749ad3966cf0bd1b0012f7b9e17bac1e648bd50888ecf33a84360f7dee8edd1bdbdbd63ece8a1901c1ef2036fe9993362ec3af70fcd9e52bee7fe745c16157c9698410da4072437643ff800038f5012ff5d37e083fb94a8c9e02446100300265a408e80b942b48c28a1356ad1805dc21040f06ead05b820e7eaefff96ee9641aa870d860061a0813a80fdead183070f2490f86af4cee6dd2459a8f50b30a70e94de8aeb7fb7e75893d275addf895dece209666c308d1162e038ba699cb88da05b04a4d8ca3b7aec62fcf8ddc70e7faddb352a3f007360a1fdbb1b8445638ce00df7c3f25d878ed3a7f7cf6e2b24011b0da17ebfdc94ee8ca2b3ba7b7224341a5b9390743c492143319bd1666c2e5c0a9ad92ce56b2972d24b71c969e794e1a7a4a4a4842929624c6183a598dd529084296c602659cccc567ba5a4e052643199ed15c26229ab181956ab534e3026142d257593c226a5d4296118c62ec9f30c1212d68daf6d7f4a8e08b733718f2f27adde7f47f774f99750d19d5bf0725a9607425b7d64686c1fe0c786312b9bd95ac713518cf462c2a14852200d48a3a2a6a2a444a292d7cebe19c45d69e7f5488fb4f3ba07ca5ac55551a335c929464222016356a5a2c5a00865c01ccbe64261d9970a15a16cf62dd48b0d59282d1417ca4baac8793721a48f19052c16dea09881019a89a8f4ccdeac8302b3c60018128844a22c4b721806a5b3f60154628b44df0ea3a251388c44210a8250884220a088328818600820303235440ae292e5497dd724fbdefcbd5e5b9e3660621cd063afc32f62fbbbe1f46df01394eab7082341662e370342e1ab2fad65968ef1818afbfcdecab68bf81cf61fe94b6af6c676e5247cbaaf890e3e31aa2dac082b545253c0e402e3b19b831f78ce6c5b579f20cf054a1d63dc4cd6a4cdbffe28bb7d016ac992a4440fe5909069655db443e45538c55c1e085974b8ef9cdb83d30c9d1177e5229e2b3fb7f243ba682a47ac09707db05307cd1a00f947d99b1d9dc01f6b0b9e9ccb04521c7545b7c907d1ba24b361091cfa44f8fdff6c09fcd443cc6a5ede540029ff04d72f06b2d39d83cfa87e2419f66a05cd4036cfcf53ecc200f08ef3412bc3a2f752213679a4d86d457c44db60eb385a9659e17afa7042c48eca3e9f2c206cca4f02ea62488e8fce0cadf09e6910777b22e781b8026d691b77544339d31eb88356764859b1c6c5f19a3612d2bfb9e063bd8fdbf61a5924d0766e367c3ec2158a2bf7265aab38a472a76cb194d34cc5b9a8f2cf59725d39d18806f3b7fa1ff21b206e0f2bac5f2b69bb25060de8cd60521358b16a6b3c17e6e41694314e2412738535d89674456d26af5f2fd3b6433a1a024e8bc3a777cdd3bacbb828fb40ff46dfad19eec74293596b9e507902f72287c7738b4d40154d5e41796f781bbfcd8a06fbe6ac784ab6dbf80f59abe6137e04a89b4ec71fbba84a6371289ac2d50da0d705a18a245340c580b149f6d6929c51f5bb727ddf60d0bc6349b1ae7a5d397e7b1498aab69c0840323d0f8e2b27ff8fcc5a783c517237e912221a0aa970e99fcbf5df1f7954d2908f08c9056c8bd4ac06758935eabe6894915f3f601aa6f09805098a7eae2ab587a23677c529f9400f3a29c949ad0c5ec364f8a44ca5528167b5f8c4817eba120b2ccde7caa30b8306c828ff05bb5f3028de8e2d6b4489002b8f406ecdd8ea661f1a5f8e1b97ef7845bfad9f0df94eb298e4f2a5626deac654dd5785614b6ca47679b232acd2da5bc3e3baa3aef86c864b7ac5a7297d81d98136260662563b5271d638b604b2d7aa7135e656a00b8cf61bb49923246afda1a1d214686ac9d9fd590bc75c318392050504cea2f5375cf275c4a5e049d1aff8e9018e0f2f25ece73a1b693842daa212ccb030b5972b2069b49571af6b701b55c52b77f3c7ae6e1a5379450aad45ebf8247fb493f5a91f499185f67e124dfa4baf029f98cb1fb46af49d6a359685b1e78ad3bd27d8d92ecc038fbd1b4614fa012cdf454998d45b0466fdf4ca06c2085962890498aa2ec47f2116d3f42e5adbd26db15bc7ed2b79848d483119e0ebe98d266882ae979446d75b433417e6fb19007a84b4083aaea0e3acb2c114eb08d05d3896a9246a598be9f920b690ba15b7b0a2c0ceef7d2241ec770553323c71df4e8ef8004741342a3637bebba2e697bd6728cd21bc21c675e48b09111a912c0804c9f0323b3d13abd7869fdbed8aa1dbed82f71ffcb4fca3da26947cd1569cfc9d831f0df4c435989d561bd265a36e77c1731858331b0a3210034b74b560603524c3c02aeff7c106684219067c2a25f77a7bb37b4947c6d3ebc7f80855d597182d33695509867c54f5b3ad5abcd77347b7cf3878b89f8d2505363b43da671702797533f6216e9ee3d9ff15347b8c55125188163247e8248ba3b9b6572f43bd7fcf23f46ccdabc74dd4de1a1fdb0cb66b2a43778ea337b6871704443516f65b1cc71c487c362abbc75c4a7105e5abe1ca8433b2cb6c7b35f73a0805fcf750fcd9a3f593b55ba74c373f4ce8eb2b25288e9fe6f55a1c02aa22b83722d2a8d1e5a2e5571af6a56917c0462d05344e64422b3980c3dc02157e432332c2f52a5f0886488a3d44f4de43cc4ddf9382a15413aca6cb5b752315fe6016e98955bcb20b175fbd64dbf771dd5c05e7443c9cdc1be748e728d18d65dc000b5d7d815a609e4d756f0d21926f7a3090a4e4602f520bbae517ffb39541544b5ebaffbf2d5be7fd57b60e3fa739baabae78382d9d6a6b971a96b65cf2ad8c22f83636284ae73cd7696bf0e0a4a11b88b6fe3ad140e2c78700a6830fad93b9c617dc6985e906262281dd66e8c300aff015d6e407f976b84048060d4a0bd5a70ce0f9e1cfd368562e2ba0fb93ffbd88313043853526b7578e0d18e755689e87405866b37324a159ee5730f216a400335c83e85df9c8ce6df7237a9d0e50ae449c88dea33a3b46206ec913293d5be2594a7587844a4525824429d22f7d3a1523ed80bf6651beb5bbfc00eb663284c95192e208119a507d7575111df7424d9f817af413d4dd43f6d398772406575f684f79e16a282766eaf9cd3b3eff463846156c03aab7234fb0dac44389edf9e28327b2786a352962d77e3878c446e72d4568ba8bccbcd7e02c9da7669093c19942793c58a277465384a9427e2576b547ea555f0a34433a259d46ab1e54847188bf56e3e8b2b4ac49b90b341f8a13358cb9be82a4a28fcc65ac55268357c7e7e66a8ad11364969191a4e32024ed9cf0ebb0e5367990f5552b7e8921c03cde01fd13acc37664f7324346c103e14e13bb9a031e2063d846d2fc27025b93d0ec71496ab545fa99a9dd0fdc49fed4e707ead7327ed1c1831431268591599a9f5a813048f36c6d82e84c3aae4b4fd25a73bb77e9b88ef1f8a648e778746a9e70d80ca014e7f3e2ee3dd565326cdf442ba0ccf8d96c6e4027ed3a55d227d204003bcb667753d64cf2952d14e7bfcb2466fcffccf3e1f515bdb56a0934172c706cf1f9097616f35061a2e43d47e547ef7e31eaba725c32f52f8cbabd317fdf1bc33cb587d39f46f25290c46d740e0be7e8e19d82eb4a0bb01f1da1b116f262768b4519f17d8223011f8c7828ec46ae205f6d79608b4c9eebb21a7114224e9eeb80a470fccf2497fd84eba1d67810b2e2f5407b4f045af05fede54403eb1c4439091ecfd53c52ea7ef13020aa7d44ada6d2a596608ab4ea12f0b26ae1185e5b7f340500b27f50a0aa47a88be509d6bb42c7ae883a55e5f46602891b93453d10163956fa27380f3a76ff3871c0c1d0f9e89120910ec0cca2090d3afd1006607cc686a6a595957be698ae6bc823a54776a6599af691a1bc251e0dc249f9624bb2ae5de3d67c7dba969ff4010a4cd7446fad5f5fd982017f6b4db9bca2ad2bcbe64e0afbdb0f9ca06048d0a996d20e3454e21386939d9fe1733cce8002d8e90357c6d8b71fc3b48c50075fe161c63a845157c2af8bb996bddd43ebe7f1642dba986f6db769bb83f203c34679214d9f27cd5c865f761baebd920a29abb9be34d70ff2e46851883b575ad0cde621cda42bb6fe7694cd61c59790ae14bf2b3a4c4cc74317018b3649f41aaa3c8318cb07add7fb2d51c83d8e0b49f1de58fa781cfd14b3d61775ca0000ea32d72f5a2af45b808b83d8a174135cbf0574744dafa23d8b2c684011e0ab91f7635b86ff2be02b4147e21ae435e44d87a0ecb413c09554cd888bff1a5fd014547ffc553ccb8a0ec812fe41470850c4eba562564f2cc1cd2f86f0f6a998748fddfe06a22b4331685cc8cd955ae77083151f1d9ae64b04f16b8aa533f8eb10c2be0d33ef64e17900d815403a48efdcf5a6783c7b8368f9332f591d5149bd90c75eae207ff80b30015a7409525c089f52220487ed104704b6a9934b6375f275645bc9e2b7d5d33494d7edf97a70c98e76e84017bd0f0a4d4c5352d7b09db00ccbfdfbb9e204c4dfeded0d22121f570e543c0b91ed1e77a9f38e237b4262d661779da98875b673bda4203285113b07d701418d588aee1b540ab064a5504c142558eeed936eb92715c3ca7c1a786eafb82ab3679f08ae1281a5619efefaba79fb09dcc003361c19ac040edc8e2a7bc081076c6a8813a28f082e7c9088d713443db4bd07115cc9672898817cd7036829e635b45e57e251dc34451c6c0a038edfe8eb3d8f84b3f77aa43d6c2ff37bb0606ecb77ed9ea91147e675ba02b4e5c36ab18bc46b2ec3406572840e45c14afb5b85e3518c745b04652744f7440ac45dc50123114189bff8347e9f1fb7ddc5bff975a6b234196376ae6e791415ecc33f043fb0fff788052dd896e4573996e8e26c405cafe8b5bad15b759a4224dd700a4960f558591941916e48968f792564b894bc24a76751b5003c251674a86c6ea1e6d0af76a23655f0899300f92c1a5f12a600f240ff61fdccc720ed7799c5f7aeab6dfcf2bd80cd5e546b93d78903fea6978c2a81e8a3e1a4038d6f91696c6e827d2b32fde76debc77911011f4e0c2cf8dd53e0a0b841b2a9185cb7d9d2150dbe568c935710279806c95e044edfc4105f5d42e90a468a9bc935703ea9fd5bd0382715bd801c7e73e384645df5c5063d1cd4977281d6bfd82da91148d5dd66bb68c36ebd44910ac0070cded7094cb501332ec8b76fc3240d65ca5f195da3666b4fa04f836565d2ca0f27c48ec81b625c967624adef99f7d69f7c00e90f382e07396f678dd6bc3812819f82329070e24e3693944b79a8fd7cb127a36ea277e2c064a858702a489477c274d6a73eb9cea323c30abe926da52fa789eb6f684483810a1ed05b4cee9ff19d0664315e75e140878fbe9ef3d134ead84653f1143efd4bff2a9aa6205921066156ca89b67b524bf976117878e9b3b6d3c581242fa78651a8b03e10bb8d2a0c140d8260411103fdc843a0d21689f3e7c763004f9e4785e80354523473fdd28f2c1901a85cd8e83d06f21824809ff5d14edf8aff0f67fc9edd0348c4ef3acac33bfc3ec1765cfbfc58577d23cc21f59145ba8d098c05a0bdbebb111af246e84c51a28dfeafa77565ec8f4ea66abc2be80030260c73b0b65c3c6aa60600c8e2d29bc67be6081d8e14be838c0691deccce841ff154b0312306dede7c72b10cf3e5dae3555aeda70575d520b5ac6c56870654ba0d98ab202a18227a51be3273586f3ade67709a048e8537f1f5d612138e1797574e719f95a4f8c8183d1a7370199802f2da55262ce09302b38df68793d977370e3b46123087bdeeb9b7de1a08d991252d99e982615ac650d0af53d977992ae414edec60ff8434b9b7c47c36b90e39d8e9ef27a9e0fab73f32b9c7abef4e8cdbcd2fd504ec5bdb8ac3c087976d0a1cc0f4de410c1f429f1d91568ba2d940392e62e4ec85da713ff503cffb6c958aafbc9d258f44374391c714959966e5a7dc3172e6cb1198176630e298ef2336c6379e4920156f452aa6a51625725e91d3a67c6fdf5d460a2bda46745cf7c01e5dafe4ee8606b2a30aae1ca08f0516e804eadfc556fe736c638a7af53395b88c5993fd219bc2639930d78c28f999b694715dbae7e982ae0aeca4191caaca9c5987774d9f5f2bbc20771bfeef32225088f94575cce051b351f132e3474ded22a4d12e3139cfbaecc1db13a3b7e7b4c25ece8b6ca921259724a87a762a4904ca4a7b8ee30786e1b6770060b652d7bc221562cc41946242efb0234892a5d05b1bd5ef0ec472eb5c1dac2552f584a41bba58ec41ad8217fe1ed7dce9a44adb32d2670b0f211c149af0d6676837f3035ea522766c72a37a8d00b5329e2279bca58b9241884f1c777e12c50fce8ebc46b771ac1a005bf4aecab81cfc57f0f692bfb214d0ab09831ea09175ec3d96d67e45918f74db3c5a86f04c22279d25268425e839d19a508ac1b086e1c04e846f111411cb4593f3e31045cb53c274dd487f6ff4058bfc21529e75e88eb65498f8561dc5a2b3655c9d6d8df797588f8970af35a0e2e768e3d5f232f4560501b52a1f013856e590833f21711e40dc23feff3050481058613d1b5e87f0cc6152b615220f846169ab8b6e34ae96b9f2cee2e7b50387c32853e8cdcbb07b1c8371e771601314ef6b44a22b0942d024fc4c42098e61d9c6c7eb966970bbb7e464fdbbf89453ff9e7d8138707f50f796d7352ef84b86ddfdc86b5b1e3136f368b7736d7544b32650c854f00c21b9de855cc7abc3eb693252274e3b8f41ec2444ac1851003fc3bce7fa2f9091ba1660af679248a3fba800539097d226ccaa7f152471ace0f388ce9fdf4d279fcffd6b38409c2b96947620d48dd1375894f647db0cab1bba26286889cfcaa980378c66cb0fa8e3b693da76eedd1c43fc8d7d8cc24cc329da677ac585df9234c75511ae70d4c6fb0aa0c2a4c19590e2c0144564ca9bc88b2e6ba547c468c83bb418ca5d06916181b6ad3ed20be87660efd8d0c38c0a85c8a4a14873989539223740f5af4cb28f99e80bf5ed2df17f5500617cf6b3c5a0b60344b9115b7eed0d3235686471379f2da5ac098d1fe0813fc84f019f7d6f280fe9976b7ab358fca3c1e8e18914f7ff986ec1c8f0ea3c7aae5a95121aa0adf8423b4692f3083982ac598733854ed62090194506d1ad8e66b28905ebc2da1758f60d1a188ed7520942cf289b935d56fccbfd5871246aa0f46c89678b36a421f628fc1d36fed6c5413cbd598700347f3ab169800ad7fb631939037dafcf4b82f68db88a7f031873cb01711326fc3440f40239842a6e0e51fb577fd4ccb5adc948b5dcf85f5ec884908a7777e53e6f1ec57c976f3a284aaf2467bf19a9c1cddf07a8850ee9224f9a59dd84c60081d51369a6cc0e0d79516713dc75c9340164d58a7af2eaa2c3cec65aedd53a992fc9f69e09a5b3d2fcb83dc305bd027ca0fa65d9149f1563cdad0b7226b89f529dc429776e3c113486efca3b43e353a6a34f1d5a66c67f824c13d33df3a69c14328c7ebaf3bae02dde9b67e27884e5de3b0024e65bcea10f1b1e58b0ce19daa69b5487e3b87406ce3504c7a91325ae6f08ec5975b7b80d65d3b6d13067402c093351f6240125ff29e2f9576ad44c3a157b0dfd7ff0160997c5526f7ed189374271d85f0af6e2c24880b6aeb978a8d1634a0e4c8a53b1aec2b25a8a76c83c96d37c119d1eabe982e28be8dc20f63eb7ed0ef9b427685923f5631eb06afe76a4083f701e3a20547cee97f4401d919ec80ea3d8e30152b4e4c3c25eda4ebf107d5853e732100719086ac0d988d13e60cc78bd0494fa3c2e15403ae69c66188faaca9efa846f9a10269c906557ee8d973aa5cebdb3c28cad83fdc216e12e82a5f129e5a18eee2e81a3a2d23863a3092ca138cecadf710e3643e0800407a7d95b80308103e6800acecd14ef6c0d29e8f088dffb8c63c2de2a39630cc5eb1be3dc5db35412da107e72106f53b1528ac8a3f3fa8ce11b4c18b5684c826de8d360bcc3a5d66655293e34a0e0b9e309175f622892535f3ca41c327071d76313536b27bca2144a99eff2a69fd36fe51bdac20773f58435f82e859b751e4bd0826d5e4597b71bec5a3f1fc151f4d64f34a9d45764b10b788bf80fd40f221af74c28e684a06cb2877f3d255bfefc91caa4410755164bc19631bc9e05c14971f2cae2c0bb0535a31df5182587ee71ded80e6cd7e72f300b349e2e064940dc81e6679a9b1860c73b263662ecc92c594a072ab31b47c1c8b9fd47528ded897510bea90f8b119f607dfad32398215bc8ddd639282caf34c6c2497b37eeef33034dcf5a7dee3365cde1d82aa7f5ba94b977e831e0d010dd058f408f9942638bf5837ce0fd5ef04e42e849f0c9a2674e6da93e1d10ed05c8b1cc07c299a8bae93311dcea296dd018c89736b23a6740bf529580a300cd111007766d2b83353fb0a32d76a80ea66408476a87e1a047db102dd817f8ce3209e8230e20d624a7956e9a81013a11bf5781b8628f1a895923a4938c8fdfb363e2fe49c72d982cb2faee91251c681b22eed3e9bfe627863a60acc73bf8df065ca3117d033c99a063ce647f432b2dd8fd7407d2a1f22e74e45475e3d0edf55cc43c3a3625de680880294bc4fe054c2456cb390041a931b1cf0b9d5de94663f5008cbca744b00eab3bb7ce4ae69f20160bc834d5e185f766aca2cfb82b07a8759e089c3d130b953230b03f1f3575de0b772de27b40431b812eb46b5d5c4944228d66525a2a5b96fbee48ce2c8c938d7c3400da8b3a599775600e414884964aa06fc8388eed61a2ebc223e37a436e9d2bb911412739122e0f60abdde003498d77a61468f7e0082db0b47be3a7631e7f081b385966ae64d3c67e865da9607c7a6318e72d54699a034bbd3e9b5dc44429b14d9cfbdefc08f42a84e8dac4690ab92ec6f416d1e779b8ff67d007a8a568ab1ba118fc1c7431d4a1af5eb97ba6c0432c1778c207cf8c9ba98d4a4b96d6f9c22e4c931609dc9d295d209f1a17a2531a62063859ae075da6856a63bf7785d37658c514496642b8fb811c280076a06b1b74df318c48c469090921a4ccb51cfac7988c484c276e124460e6c88ac656db37894a280f8d9d7a413891ecd623dbc1583bd014d78941bec815ca9fdd2357be618746a39766832966dd806fc6fecd3ad602f7076afb60c002d274f4dda6c88d288c784284d948705917691d6b4312ea2eed15838668f09601f62b3aa3286c945fc81193a95c7a4c0ade64ecd652162ea683e40183fd64bb37219958c7e1e46583919d0d6e213e4abfb52849b284aeb41eddd8aa2610b68d12e3ae19539753d53739b53fcddfdb0dfed05d546bdc21d44f94375ddc5fe1c4b884feaeecdd66c113e669e0e5b742b0c0ad140427625da8291eea5ee23ecc5f1d2774dfc37700e4883bd70261a0c5b52a088a3834f7c4cf69d8aec9d8488d04aeb02eaf39093005271fc75a00ae3a8683afb197643e35db39c72cb6d6785fd7412560aa5b159325a3887b16abcb76b8b76443d46ae70ea6a7e4ff0bcb347cd79312e87c41a61f10f27b1309c55a714b654451a2cae9724d903c1e7a8b3d084dacfac93e140fad938e1937df4d398bffb6d21ace0b7eed4565f3c1b5680aa5454539f1731e03f7a1d3609f1b1e3b915e520cd6f13d213e2be9fbe52b27a6c81f520370575d688a32a039c144e30f0d390590a353d735d8b3fd57b81a7eca25e3c573206d27d2d42926bc9a0483f98064012b2bd92cd11a37a2eb997fcd68b14a6d5a5b2203155d74247155bfbe2418d34d0fb5cd8b962fe8300ae9acde231f94b69219d48764eee14c57604c56ec4f67f92229c51b78297532d5e9429a9cf26b50e31ce2ce84f3e808eeb0c43bfcbc669e9a9aa209d527516b465e0bc502375be4610d870734d2d823df4f8ff8dabeeb36408f25c315f66479eca3dc9fdcb63e2bc01809eb44e9f4b4d96062e88756b360148bb5a6798fbade2dd92653c3b66f7c19e27be4c1ac8effaa4fca9c8218eee997ba5f16e1c2cf32b0c890e9f4052c01ccf8eb2e17659f6d34db67ff06a660f5859665c5b0b3b1ac38a86761f439d79e8987bd1c616fd821d1ed29030da69074162cb352edb658aa7870ea6b41e57c415bcb56286785ab1d6815353d484b16aea8191cd8e62a57fdb2d0048f0ec8286398cfaed2a4adb6f65f4491ff6bf35f6a9221d8f0a05ddbe95105380a35a3df413e4619a55dad42fcdee24cba50fe3a1d449976165e82efacaaabcb282004c2c632d9664899f5dda141c2b85f3d5a946fcadf28d8d3b5f33e4ed8d5e6b3eb0356bc14318b81b0a81015a2508423382b485d46a185a72a0275842f1cefe5a638ef37468ef92ba37ddd68323e829eca219f707453be76162be60b93b1eeb0e8d134a7f206e71666e4ee52f2fcb9d0d527091506680f581b631bb0605cf1290f05008260cb7158b124bf6d53abf149f7705788ee3f6b9f1759af2b5586615f3f26de9e5ed006cbd33757069c9977bd334f13ea79d94ac9d87114d0bba4bf960fcc4079c8eec98d18fcbf8fe9920effbca4dbc92fe9ea9af48149d72f531a9ffed59cf36473a5cc3b8bc795a64bcd03e7c8939c11213546769b1640129af23ce3050cbbe38f82767bee37ab964052ae3b3461cac3bbb9a0946f6e87725f82c74bd3c9f984ce37f7c0b42a1dc776fd8273f21bdb804130e29ced95ca78a402ce258de80748e780c197a1021614748e55c25c63008ef8fa6e4765d0b94462298968863b3fe7c8e99a792bd5f2df57308bf7b1b22c0a542b5174b545c60820d3117f2a3384cc318a646412045146479aa598cb3cafe75d941c07fc221f6adcecdf4a47420c3005c12c0267f9cc56c218418e44ebfdcc9f7c0c02b5c1a43a321c89d61e02ee911e8129f35c908c3fa24c3facdf636aff855aee636011f456130232dc6bb9e7b7d47340424f7eed01f1db7901728c4977e4c8891e93e140957459751bf9943235d1ec13c276ffa27bbf2681163b33cb794b6dd0137cf14997be0518de1d009de53165600a77953c74771d3948a14b9071aa5cdf0a06d01e78e1ef38817c76322339e89f8caaee5f98c70647ef7f911159e6ed17ca29ca9239c3349061abae23b620aef4eb322a75a47e3bbe3223138a2c992fc9573d1654fd56b90a8972f582509cb4b6ab40b4200caa8fbe08df9c98b73ebff5a9c29a75eddc0cc9cd07713ca67b84915f326e342a64252dbe8da322f188da59312223a22f5629c0afd6924631d1b204ec9556d14c8b675432bd27e173fe80f28ce87b9ae3fd86cdf109249ce3c99b08d45b317511290814e1477762c1cd546f44611abd89e552d583d9a248f78a1b85d4b1a7e96afc46ba7abfecbccf21f43b2621e2a35c9143c5ff070b377183a3fef06f3a97b49b28c11e22ee9fbae0a39a68d58d4516e6a6a21e9785f438518cfc426d43b3693521a928e80da3534da05e2fd3ab1f549a4c7abd74ebbadcc8e06e4c57329a47b6d3c9653ae66581ce76b36a228d3bd9b73339323eec4f1049e12327e7b1d49d1e4b638f2599b8ca9ce2097225d0106e8a51a7f8ecce6db9a25c0aaea168fc6609c653b8a3a8f825f436fad2b87650aa84d00c6279fe7f5f8ae5cf44b605de09985b94888173fda5249175f9acb242c7eaaa21b0063600f634aeb83447ec0a2800c3ee7f88bc6de4124663b0f664594328408d40876a240d629325d0d4fe90e8a5e3c0a03a7408e77226d775a1bc6a62c31c2098903b1cb0b68e9a13e4d1f03b03c682a1d1f78dc2edb8f31a8cd192f53fc6ec5590653152a3ae90011db60e3b4f3ca766d9f7b8a873362d16135474d04d9a7738fc72441e791c97865ff1041d00125614cf990446440908301ac47ad7d6282d0d342bda094b9e8672301b33b6184a18642e3004b8761b34c4b73f41e9380a87a0778b243949fcc10eaec7b57f551cc410cc28823666a39ade6438a2c04520afe9352216304bf437d15a2c1da45b3f8c7cac2ad0de14cbf7bb525666df8c1e93a6a8d3815568974563eadb3de4cdae2272e614a9818c2258ec89c8619992b50c6faa066b147c0005186a389ef852d0c040e4112a9ff1bb0d49e4481cfd0c53fdc4a80a4615c29a222d4889dfa8f8ab0ceb74dd01e2631df473f8b0275d664c230f66cacf907fb68c48e6517549c57aa5385a04f6e05a39e0aabb52567875aecb2bada55787e0f64a39f2c5014cb113e57d0568485d65541e106fef91a98f219cf919982d43dada93296da7c2cc6205cf555bfab528eb9935117dd86a555fcdb6ecf42052158ef7da1ad0c791567ba0ff9a9f35f2602be91c8f2dda9acee01b9089979c42074bb7f26653b97dfb1a044ef894360e02e1dc39dfa6cc97671f60066fd3a0d64ab9f73ae5656588f6193927ac3ded8499e36626aac43a5849e37149fc17381269ac63eea4792ee166dd34ac397b1408f405308ebbee9d5bef0a6bea680c8842c7cc64182c24bddddc16c35c35da94c286500913de08574db44a0c24cab5c56ed12527147f268e98b8829639c803be9847340ba8a95a598dc494323f0103684c8356c5923564fdcd11e083c1b1c2481343a1a91064b02e176b94d971a4f6602ad70ce0c8d029ac7c11ae24c24d4836c3a218fc5f841f20b63f3ab87214e4ffcea6b5d41346e87fca16d15163ca4e005b993a50c3912c5b12ed493175c05781ae7088dbc2a3d9ae368821c1427bcfabb22f403c804a8350110bdda9ee9dd304ef648d030cf697f5ad66908025105f3010278521582f1cc318e0456bee81700cecde70188871f71f8ed3fc68af9c75325fa0f4dc3399bda250e2f3fcd33ca2e6ec636984d26e41268e879a587c0a30c0f988756908911d056cec0c79e6b0b421fce0dbd61c944e8b751535565c7e8cf11ae5c985fd6f76678d42bdde1cbae3e82f2697d3dae734bb236f325009472fce3f89e3a211ea6a22ccf380d7efa6ab8cdd455dc264c3c03f926e3f1303f8874be52336f707bd1869047a7811fc4ff6aa2bd08e13f3a18f9cabc2cc93c2692541f95347358d3a8504c3e40ec5c764143b7ca8139e14e41daa958b8e5ee37b44dd9c609282a4d5bd0e07afbef6531250ea08e04cda9a3c084162dfe1756dd5246eeadbe741472caffdbfa10f07ba74a39c0415e692e01a08f1572ab90157cbe85da328f93f4faa030cfd486002e6963731aa57d8c9563339a7af15d79f9752af706f08bdbc066c44942e2365b719c3515b105b945e9219262722c181ec69c180149947e6a4891e1e5eb841a5b96e520c68ab9e5de41f237aaa8262d4551ea29c97ecb419120cc6021203d03f1bcfedda10001440fc7aff0c92065185f43f30251818593e0c122246ec9947eb19d7d029c77a009fcadd498edaac79094553937904b204d37f29c1ffd13d78d27584669749d7bad4ae454bd9aa68a0c13c9297f88920f55c1679fba9e43c49888cbd9714b3683ce7a9e3c088838dcafe62724312665b0fe69197c7aadf567d73900dcf90ee9605123b2f968935e0cb1097531b455f4359ca72244e1f76343b6bc218582db1f31241c06be0432d53793a9ddadb2c13c44e7e4c239c79e4e3ecc2a2b2e556293a1badabb4372e83bb37784682e1b20a1c6405533d2418c0d561eaba600a0e4ce5b890eeb006c49017c88f46ee2a6065a60b395d837820c32efe058d7f68171cbde9f45e43c13dbe6358ba6c43e79a18c4f2fd759e35b4d8fae2ace77a6323c5262aa37c20e260ccda04dd070617a309688d2132ab412700568a490771837aa680403a6ed6048a94a84e92ea5bb2136fedd59813115febba077297fd84dbe3c213fa335d006b8d89e698d1f13ffc5fb2fcd44501154311ab621e03d45455fb4bf21408ce7180b679c481a577b97ac388a086b12544fc87b6b697ae1deeaed4ce110fe958076c1afa6eba252e3c0dce553d11ed4fda50de5ce3f67976740f3f383f8908821eff9da5f00d94dbcd4502ef4c22fb5d6a6cbcd9c76a41dcf6c7d1b220e1bb5e7b6961ab2f178ab63f9afc810e86c0491945a2b4f842004ff5c837959c68f235a300043ed09460770307082df3d05e13f1fdf920dd4477a1f275be12e1f44da1aff3e06087ab4ff3776b3b3874d02480c29fce27108b89ede0b7206495362d4e622c35c40d9d98a8c1a17b4d0d5dcfc2a2800e9a4b489326e9b2c9196f46a27c761245a80c824ac787d05599f82d11ef10cc9ef549fb7046831ef5c539cbeea4436d555db1791d4aad34cc975d19a3e49658299181ea8c3b4fc9bfa5802d8dbc55c478eac3c683983178e52fc0d4d1d7402e6909ba1ae8aa260765e3f3d3d408f704eb0143a8581508e001e925321a5a4d9a17e7f006408373c0502bf4e62f2324263351834b9070d3661c02a43779ee30589b616a032d23709bfcfc2942079a1eb257441e906ac2deea4f281a974af39646f702a72758f98909dafa20140720713667e86a2f7e3e18cd89f961f9d1824431598580109369b8730c3442a97a56a9668aca76192ef0d2f32f3c68f6d07a760d115ce38418961a6e97b9b8dbb596725fb1b0ddc9d4d1cf625d46710d9d1f3eda01a2e5dce57ac8b8bdd072cf68545eab22931c776a2a4a3e15b35b21569a8de70ab1b760151953e456224c106d369c37dde054ba28a403ecc9f90a4d374cceaa186bcfdb6a87c29447d83e1b655ff8f7d28efcf40ce0e699ff78dc84749e8a0dd379f4585d024c94484642b924b711d4b41ea9a324da77c03f9ba2a3dc847fecac6dccf78592e225953195ef9318e824275ccd37adda30f4f5ecde357f05e61c3cd27d63289fabee3fe46ed327264386018bbc50f0378b8ef422af214a91a7262509a3bc620087479b771bf0986a436682121214d1a3fdbd02011e198166139dc176c64b8f4cc91013ae914a22df7e3cb628af184b105829d84d91a3348a19e34a45c01542e2a20f8c138d838439102a564c11845b8e3fb1d68aefc2f8f516ac5004e56eaef99f2a3f6c9a22f8b95411a1d45b693e42f37af454cee8d93c4b1184d1e4550493038ab7dc6993ab1b4e00e9c83c0da6b29ffb99236dd2caca16adabc304744160fb584ecdce12275b6d943e3544c00c57de93367c9addb2fbd149cd6b279813b0e7c18fecaeb4ab05477c0d805f9a2b63a442f14ddcfa52ea126fb6704fc4905b2a8e58eb3423be2984be11bc9f54e622b1a2fd57f99b5933e51dfc3c6f982601d58be7f55c9b7af6859adb6f3466068430e9490bdf6e4c344c1990abb25ce9f1fa522a486619549dbf7df6f7ae1af3ccf454ea36ef81129c8efdc8421fad1658480d8ddc3bee1395312a3fb755856931e212bcd5b83d091d762de70b6d0104579fa6f8dfe7b41d906463defffe14983f7ca89ea25e5b7eea231d3ee0121025b986156c92e0227a0465181be1d80e923b579c15cfd99fe8a73cd39e67283e8cea3a451def49c22fb8f83ea57ed4e177e11d586254f40452d9ed1cefeb6367ac6d5d78d3553133df1cf3a72aeb60a34e5acab1cbcda3d20365003e57da6b4d03c82d00b077aeca7a1c110e21624649db99eda6f876d2a02a9dbf2df19075309afc8efd2041e8285fc2bd07c647ea1fc56ae6ae4a96d56de7e7b45981131005baa462886532b6d028dfc429aaa9a046c836bacba21335303d1502ce4b1fbfae02f66a3fc6d4ff8a3f3f9e7777ee0c1273e3f6a7f82e03ca4e54bad383e8fac4df250e332a41d6497c559215c8a0720dd7d461a2b4cd30ed7b2f9ae192509492ad2af5447a552fe1d2b481a264e15b86ffff1846e682e8cb8108dae31589ca3929e75c7c5767cb37a1ebec96f7ab810236a7470a9eda2bfd3f323b734c831577709e7590e3d74b630ebdf05c33461b29addacb2f9ed655da35cc4b91dece6fe8b997450f031ad6f830809b8ede6063f81e4a78dcef179634e7c2fed6543d844887b6e2204732c350fe7252c95f2ae588bc183755254c609b2a96961677fc414d8f639a4b59749cd45f622969fcfe60260456a80c33af806e0fa7a9992c3ab1c047493db9541883577be6857bcd38cf6c80e20332bee848ed998280344857d2de65ab43946efa8e1e26334ad35b97cba115c79517fcc5cdce413cd9048ff65ef50b4cb10b909a7627d6ed02358f5264d624274ffe3a1cc76ba57a98b206bbd9fbc3d3432a2d1aa9e284bb5fa7897307f24d3f48c2e52146477b32a1baa61d7c0c286407185db08d0317299c336b90d6f0bec6c9b44f2ab3e3d2f9b98773d878ab3a73ebda808b3a06cf3b116368aa8d671b1f841a6495e0cd27d101967028202f394fd70c98e5b33b0653195974ac0d7d93373749941c4f664914cc94f057880c9cdf089744718d1098c4d9beeedc82c3303c7d4e195bdc7c17bda31e629040f2ecb869c396bbc75ca2e7502d8a13003b9e78f5479c66b520589374e2a899cadc6dfb34c834d5f00db528f182362b31548410ab550a30b65508439ba44d40e446da3ee96f3a7238dec677ce2a0bd9023b7bb6065aeb90d76323fa5d43f15a1708ee75a1d1b49b342d7636d5748c0e8658a2c0f27a00b90a1061a6bb29472ac05e4a5699eefe88a231bbd265658399385595b94ab9efbed37ba510fa5ba93e7a1ef0ca6498f4af9575d9c565353436f0b5cd34f41068c1fa04670e1c1c3cfba12b6d4a4e8a78a8d29c1a5bdef4ada0cc64aeffe1bcdf0a59d58523aea7ad3c902fe0fa12d257774b028ea0e8541d3fed6de850d6fe9e907ef292c776df3287925c613545c78c44958a33c3dbb8363705af63bbfce225ac0309037444b51202e0dbd4a62f25f4869f670fa5b89c0c46b8bb0169fd68f2443212eb62873b2ad6da14b0ff005b27a1586d7a8b6b20efcefa55e18d9535cabdfb52fa1e803c2aa9bcbb5d12616a6ac3baa8368571760f9354909a48c2362b8af250e066793abd68e647dd1b11a4dcba9841850df49c64ac9e3d396aae18c6c8f986adf44621e4c543203b11c5aac8cb75879f06c6b8325a7083244ebc67a3801945281742d2bb8da842eae4a00998f069ebf05bddcd7a666e3b83232a780d9c298eba4e29a511fb41541b3e24e3e7d0bdafc2f6266b512d01fe84427de6f13e2d6e74d60418a05845a87708666843897ee9cd89c11723ca1d16413dcff2edef0c65a60ca1d93095b667a6a404de2076de0e4e407ec5f51aba63a161814bee5eebc03cffb09bca8d2637987345feaa3d58b1ef593406a0d6c5991453a8b7ac2bebeaf7ba9248036c5d4d1cfeec81b3eed4beb8cef184524216ff311ca86678c240504afb03f1077cae9f7e3942fab360f163be73ecc32e746b0b9e5f59ed87a82dec9bc6155a02db366ed4d4176e1e7328bd682423875647a1f707eeb50736cb97157f75e9298d2d726dfc783e8d424f7ee41b7eac1305d61f0156cae77d53d28043fe1568e44a7f1965c052f952901fd92be313b90a4a209124d5f58948f4fa225f5e17e357315ea4eefa6d9df68401dad5b04bea0867a153c90bb841fad7f66d234224790926217c8903b9cbc4c09adac5fbb1184a427528dfb22cdb828b6b44610d56e4d08e40ac2b74d8b7b2e7c891bfcd542bd286790fca6fd8aa0691209179fd3d0fabf89a990946f05fd165d639ac2c46cd9330c96dc9b03d96745ca11486b49d7abeda582d5ecd4b60b03686ad19273155cdfb89f277a890f4f62e0e176e23daf1a442572db5e1e0615ab6e00c91bfe70b0d00e0dae5672a2d338d6e0b2a35472fd263cb76299c889793f582ea432abf6f661d835cd80d701f15d008b744e9f469877d2189f452a8a7ce18de67b68db4649979ead17dd2c840061f8d478354c57779222795c88f37bee59e335deea0fcbedcb9181e07aab52ed846a4edee7189b937a7cc7d2afbcedc9bc80c4368eef9159f9a3be4ef280b76661a3ca03eee8e9755487df7287b518335d5c4238ee8262108e96e73177764baff477723938830fa2d3de142ab2a0bc6023eee1b64f399a8bbad1523e94b55771b390492dedbaa28a857af1d8f1985870f2df94c8e9d1099658970b983bdc4c7553b7c884e99b1fbac28e3c7fffd1c6c3de7b6f8bc689cfea85af52d57ace65a14c0d7d6cc69173336e7c06647080d90cd44e23bafead25044f53c407e54605a226ac007aaa4e9237433145612ef3c5c2f4d94a41f15f2a131702a93629397d1595035e431cd8acb5eea89b55c482c16d3bf3ccc5d2c327778e80eec1cf0f6cd4c06f7e240ac2a2340a5c923e59ba5bac462be17ab8b87579201784b5f71f3afd191464c93b235624da20e5700a24013c778d3ba654c751f43ef457ec3eba4a7934911a1bde644dcb746b71cc97cd2bff8f310586c220539e9bfa89a3d6434c0f6aecafde04505f822dcee08d742c275a71c08eb62a39adfda60d20a9d3a7a143b9a17ff044c37abf48800b7498e8314d494141e652aa2c6c8368e467dcaeb49bc9758b6fd7538abd4671973628782dd57b9f099471716874ecf766959b9b04fff174c7903d2ecf642693c231448f776f3612f37915d9f37860e140d46de075389ecca306b002a0a6930b9a742daa6d46a692779daf86312c35bfe733950759b707cf46f7a2421a878619b260b240af8a19480985900b8a13804f851f3654218a84cfc191b8a9980c651ae9d1f29be2f94d452c9f640bf205ef0372eaf5b9dd45f80a79a59eb5205bb6e3fe4e9e688997fd5847a48e59430c72e235d31444731460a4579f15961019da6c76833fd59547ed7c54759a5a286909ba12e7281639e340a10f3c89e174f84036fc815ee1eb0977cca718d4332f01bb2faf1a66c97e1909447fc5790a356ab0aec828b6d74997b61414cf9031239324fb07012270c5774d8c16228c167c971693eb3281f2200a7f10e0ad275ba527eb0208e433e35b430c147a22473f56e24f9dddf5d1c01fada44a081f6f42ca03c049abd3121ce80ff9741eb27a8c0f48bf0733cc04b343603fcdc48051c0db8539ed840c94d621661b9b2f4122df6fd091e2aa6cce79cec9615535c44d39867764cb842b165a650467e4ba94b3cd902ff0247308f3233b670ee1fbdfee318872e137d97b867acf4e93a81061b784733c483d65c93278c94d896f198ad8e86ca14498bbdda1eae888f1ee6d834a39abe5a31528092adc8f30b8c7f87dfaea07a6010fda4a92d973eb2ba230540ee999ff245a7c12418c1673cbd5201a01921f7028b36f4e66b840719629bc25687e2fb26b8ad8ec1e216b69db81368d3190496e3c7174660f4bfe9ce61c4cb58f9c0797d69545a8554c8d946bea7bc5f12af0b36687cdf5ce80ecd3839594da44860da1d40c68c41451ba369a318c573f3c1c17ef94985baa6f3dc64f158197b31f482d18bf9bad3edc3987a306feee98be7d7ce68fd4ce320c56f20427922d43f10883355a5f64895467aecb7138a3a5858533832e11d36de8f9c9516263eb2e5f619bacc928699eba29406aea6b02aed5613c3e02283945881e6fc0b31ebfe97d6bde30942f5ae59306d44ac9af809569eecd97c8b7db1ec2cad442a8166bfa4a608f69df828e2e223d8b3950168304637d38a73e425901516727c2fedc7f2d1e09c81000b68fa743d6047cbbd75e0c83bf9e30b6783f1a073ba0df67a8782ee8460465822c95f0d473c470c765597df98ec37790a89d277e197c18c69ed7cf30be47014041cf434ff59540ab7c1b204579a0c627abe1b84ffb9488ef5e5843b728ddb296e03c8aca1d60ccd6d144d662660ea3b3596fd4e09f470683f68ca5e5a30d4bb0ea631cf04c22cfd5fb9f426560e5c4e0534a5c069f44668f490d839ba956a56384db33a6bba127263905f692d9e02a9177ab935e2c21217e89037d9da982ed54d3e85006b04303ba4f13e38d2cdd42a78b14ee1481d0c9a0f6a26595f97ce8e1859abfc5fdc6250c66df9ec40c725bd8c071eb1b30d043c3202fa4d01455d409491511b1aee17c55e115d88d077212eaf237647918dadbbd7a3e854a263112ff2499fe6013e54e6bd6d9e5e8f40a0ccb39d03ae03f2f7f8cf853b2bd00a9e5b2cfb2dc656b23c5af2180809fc1f3275315f1222914b9656766fda011a0405042f04156b8cdfe28b7147b98bb1ee166b1e14538a29c59dee4e75a7b9d3ae53aa3f8c418c75b875eeaac47296b1ac3cd70eac15ec145499a9d967589a7c6fdcbb5e67ed3e5abfafd74a414a6bfd7aa9642229fdc867fa4c26d3c8f77ddf5752a263a4a464a44469ce9fa9d4674466faf77da6cfb4c21bf13c5369e47512897d600741d05b11f27dde0cabac6b55d159ebacb3eed944421292d81193b5263bd26d892994b8c415927cdf37c5c9474ae9e7e9ece98a5fc859145cdf0e731d73575eeebbbef75e31f7aeeb3a0fcde5eea5ad7f439514f797c4c3bc1877187778ecc1c34943836ba754ca940d29937ed5b8db50e5cceff89f9dc66b2c6db7cffdd7b5d4b84b2d4e7053970bb3922f36dedbc3f44d4eb0766faf839ec7c130b55d086df06369e97aefbdf796217781af2fc78b6d297f4cc1474a5c84da554fa37ad6cc8c54cdecd821553b6464a44a46870ea9d21113235531397248550e1c38a40ac78d1b5275c3860da9b251a38654d5a04143aa68c0c048158c8b8b54b9b4b448558b0c195225838545aa585876ec6033bf45e202fbbfedab3be22637591cce0e5eff5187df38f74b35256d1312b7639d7ff79dc7cf216fbd71fe3cea8d39ef45adc1986f3de7715b7d248e471f4090f4711228521211e113e4788808e717fc6cf7430f0dd1c3e8b74712bbafebbe9e3f1830a40ac6ca8a54adbc7821552f5454a44a45a5450ba96ad1229592aa542a2545aa52527a97aade5128541886a59254954a9c4b15e77b4bd5de18d7daf55a27983b10f4b2a783974da6ec99bc52a9642a957aa944622a595152b2a20486e7105aa2f454fafaf7914834e4f45ed75593a9f6dad5ead5aae764594d6f7bfd6bc798f330ec3d95aa95de5c3d5c4925cf3452f27aadd5441a7d308d8424242433a6de1292ace8253d5cb1a2af18594860680e3b490fc33e52128e3d44c04e32322276a5ae4b2653d7492e8a2591109ca937dff336c90f78ed1988ad53857ab18cd93227d6c10203c6caeccf759703afd7afe7998256e6376fbff3e24dba78d66f76176f917792a73f0f7f5f0f691eb3f77d3ad4effb3eafb27cdf25556c7d9e0776cffb76ff406f924248a4906f7a9dbfb0dfd779073f10ec3c48df573bdf9fb753298e0644fc4f409b8ad02ca02207bf06718a0a4256608d4085257458443010c18f1d5e4000b901153d82d4aa88212597f3a4b6a33a446d5ec21b6fb1cb995ed1b22eeef06ea25f4008238c5003278ad841a2dfa0051fd0e9e1ea80089e732b85de372c5ba85c24d44bece8fd7934e868d2e69c42933683662924845ed125449441634d1a23181a363e478c90cc8ebfd5c0a163665f9de515da1af7dcad3377c10dfebe387f5e0b272367bd2fccd1d1d4fa86ecb930386abd2d568deb26e6327af9c06e3a73e2ba84d1dc21c235a2225be57e7c684041b5efc432cf6c72aea21c1acdb2d13579ff0ee638eee29d3877dfb7d7b1a7bf4f7bfbd37a6af0f3b6d69dd47988d6df839fb7f573b3f6ae56fdd65e8eb3d776ee76b7b3f8ad0de74714453e0280a2abb5e6da95b4a69b76caadb7fbcfaf1f1038f53cd314fc0375eec09dd2a27698e37b469a8ee64f9314fc5eee565eafb595de3b71ada2b532db6e9bedeeb7cb39efaeebbcad33d83f6e3b68adb775eee49d158a5a2d8811524a29652741c625be52e79c94e215d6e386c93fd4955b2d6268f31095926aa1f202c66dc64e928e4d2016cd64620835369d910b8709205458514c93c01ee1756887b17eef5dd03a7bb7f332eda2071c57d25d6bd35cedd019d0b3130a02a22c4a435b731b15edbea768c5adf5dea612ddac69a3d388ce1b9db6da1191426c46b39659431e486968cb85b2b84d67bed93fa269d9dc7833cf291242ea94343b2f774fcbdd5a1a6dc66eecd589b09c5d3a4f73cdc50cc8c8147fba6623bb753619f1fcf339f7f8e892de5a6fede9ad69cf244ca8d59438817e16190baca8a4a4c46111afd168687d3def3dcf43696e9bbc28e661d87b2aa55265b0bcbe19bdadc8a635b50e38952c53eac81df0907e49e768f6936bdaf982c5baa34b93750db799df3bcce5db3dd69ca5455c91ad712ccc63607a6d514d2886cc0b182d2b23a488b893ce4829e0a9e1e045378e8bea90e35ae7e6251e522a70f974ce3adf66ce14f9b0ac9569913ed63399d46a832c4c9185298ea43892e209289e80428928666ad6bded1a8663ade6b6c6fb89642fbbc9558e4e8ed5117f47960413b3203e53d0bcaf697d8be2712d67b630e6bc4ea198e5388e933657d5bd38cce64aaf8e91ebe3afeccce9b6abe8adf55eb956ceaed62221e0e24f912a8eb0a9f940fbffb9e51498db4741b780942c53c690366edcfb2b19127d9e1ed70feceac4663e2e1c8c71c798bbf7de8b650fffc303f141c06819564515b5177c0d1a302e3a726823191b37a40db9d2f3ffffffa9c0b5bfb4c1e1b03986dfb0b7df5b3bcee5e4c2592e77d8b2ba4cea2cb6d3a48465718f5bf0fa3baa75c6d04f0a95d291f4b3aac856b85eb9952ae9ec3f6e27b95dedc358f9fff0fcd9bd6e16b3c39e5251a915c71c400d282d4d8c79d5af6510c489204e8c48a81873ae6370d4e059d9dcebedf75ecd6d8de79c734e160b885c499b8c0e9929cefc0f40b482b0f921b83c20469cb3d1601563cec31063ceff73be7aba0657e3868da9d57615538b6b0fb3ce59e76eff7ebdb773d7e6fc0a21424f4f1584e03a3d2ca1b4c318efe93da0eff95dc35879a17265dd345c6e4d82ffc51ddf8bf1ad41ca9991b31c3aac70fba29b16cbdd309cc6d49fa58b54a173df5fd569577898b54429a57406da858eecbb545f9cfdf1afeafcb7d14edf450f33b592472421041004ba9f56b3d7295a3bf1955daf949b5d8733c7f52e6f6f6faf7b2cbb9c73d7e5d961ae0205db12edd9eed93efbc7641cfb6872441bc5d11299d4381171dcb0610b5a71ea200d9f71b4d3d853297d451b837cbc20b19bd08421df327942a1464bf45f15fcc4424d4ee209d54fe30935fe63ccbb134b248ae2c98998b24596c87662cd64ac18c398772bb78e228ea2344299e4383985288e16a44dc44ef64340f41644bb9d180c379e7df08df19675b17ce3a51f1ce56d5d370aa5a3984c144a478927f1a4a34e27131393215a331393938e8aef27f4625df47250444f6703753171f39cc43d331177cff6d95b165a1b472bb2461b0a54df2bd4c8019d462e8888480a2b784862b32894b8704670868278998280b9a040e2c229e1e43c612447474487e504138b2684a625546ad5906a644d1091f1709e1b1221b723f028c604526ce7db7905f117cc831dc163b3796e62467cb11dbdb3042f48280bd980b6cda833f25182f6f9c13f4564170e87434497a373756878a8666baf21b817acc27e5c190fe59925c1ce7a66cf4f252afa22954502156ffc2065c2085fc8162b7c861ce986898167b1dab9731eae5d02a0fd7ee07e73a624703ab502bf7cb98eeffba0bddbddc5b2ca15a59452da3d5d814dd6e7ed6688ff7fd71aa6e076cb4d6ab949efcf7b6f95c152a9109b2b333a27bd9c1c527151f9ff77e1f89f1b39b0c61d96f7df750387edc67c956fa92c9aa19a6a0383aa371cfdda13fd50ce85d91be3b08de36cb6265a3e6ef2eb14fc660f5b54f22e497d8224f113474a59adcaaaae6a43696cd6366f36dee29db27ec882dfff17fe50b0d3c9fb447d50c8418ed6177e9e067487bef64536a1db1f4d9ad99a36f366e689de68b266cd74e1dc89ecc0b90b91c1b923d9c0b9e31ef62e78b7b6f6f6af3fb41fcb711f0e7121a7625459f3c88765d41aaab9ddc05cf2e825fba0a079a3b189e15c617679663d3eb6ea7cec772a8e1b396274d416181a94a6c592d9589b617098e36a97e3b85bf351f35154b235d6477043ca3b0debc825961804f9a491e32cdd7e05dab63bfe6b7dfbf6561b9b57ecd21b170ebed8d6205a15a2d5a0fffffab7b719bdeda8dbfa73de1a56736ab5b1b737a2afa7363427a8f51ffb9de7f9d97f8fad1d576b132c6cb1ed381a646d501013423eb81fefbe7d869f5aeb9d9d8e7dbcf6575c9c228c1cd057cda9af2aab310aab3632c81f36a7530e047ca03f036bde540f34b8bd76e0610a3e433e43bca8cdc38c7a28c5814d9a43eab3063d8c3431a696f2d019f5c1b7b36e471c6db226cdac69e19a38133673666bdeccd7d4e9acce21d6769ad4c2763a73fb755fa73328bdbe53ba91d10dbfd1b4d8ce874d18b5f9aa536d7c70845eb69c960e8dca2a75c16c622f9ed88e8c67866b5a36372e8cb150ed89be88e22bb46aec9ffbdc4d1f3f3e7e7c004d5a87461868aa418b2bf6aaed587722d6764577a5d9a35bd4243e90724aadbd9cfbf634c841706bbdf7de7bd34ce9d6990b026399cdd384df233fa0d86231e7af7f5a53cb69adf517511cc98007c9ad9d163d0c0182235a686188960da809f48a12d0af52588c390f77600e8f557af4de1a333b2a0cedb0be1a638c31feb79fd29876bdc374dc1ddd74f70ec423efd4db7784f99516154ae9ab60ccb954c974da5d7bcebcebf028bd1de8f8396372c474ba8d1af5698e94df5f0729b28a99d75e6b65ad2895878db880bf666d4e398b5cc049c174cd9b3a6d5c00f1324a632bad2b6db710e27fa86de183ce9e9fd1e7b16f8370830296476015236a60de64371cd2ec9278c709826645490f3b491fe935473bb09b1d21a392480889839fb7fb0f8e4e0dc6d35304a47387b95e3b0552b4e2423b408e807a56ab9a15cfc9c9532f06a5627791d1a1b20116a594650721642e0f563137b060d167741c7a0def82ea7d07cae5c5053533548338fe8c7e8283ee33dec4a4cfb066cc38e9262763cd6131d69d1bc6aa93c3133c6e36f06822042f233bb8feff3130ab3563ad3f47bddaa4b8288eca5078b4659fb4c6d2aee72c3acdbd3a75fd1b071d4e7da388dde424769353e7c0ea24cef9338000914473d6fea49f84835bcd124aac8ee6e668b1189704cd56918899859726e540ec241ca0f49f54444db1d77f2009630912460b73467c025a3cc6d3d05239e9fa47adf7e4b1bd971385aaa8197a22e6c0218172328a418a8df356c28279f3d1418c3a5990222860cfd1a0a8011222b22fe314fee72d688602d27558b0ad52b6a195cc11b9a91d41d47a028806f5846c0524431d22073f5aea14a1930ddd86ce009693931454b83a61a180185ddc28142fc5842cc41832ba8c05a0a0f0930c1498192de2e8d25f4e323a5c729c5c747741892714ca4574e935f41a6e68005ef1c2d853e3480ddfd1f235e468808e6e728309eac545f4c04b9f11c5ae5f5e4efd05f5f2326395c3a9b7e87002c0aa6546cb4b0f07fc5081556a0beda016710bed1a0344cf6583e8e12c40068a02446f8785e8c962881ecf4af47abc1a0ec0fd2080f3e17a46441084c7288620342ca3377321e35f0b004c00af546bcb787acf0b9f951feaa2d9806a4343ad5aad11c18a688ded877476acb66724d8ee0152cd9f46ac18e0f4ec78b25717e368b2231e788b9d107017319d3dd26a61049c14cbd921e1c86a8e8e13b515ce96bd484130c03080990f2d68686f8fc8b38137a00bc40161608e77347be644a150a8af9d360c4bf09b0f390108d055c290730318a017e045c798f3172df44cd38981ebc4c055b2990f2da8eb86663e3536fb66e3ec57ce329e9b195c1807bf300c25830c32acacacaccc138abec082050af7838232a64e9eebb92f349ca07454ef263b703e3c5c8f09097c14c7ab739bd72444f1d308e37b4f7117fa090d5b96e2024fa5d45a02ead0bc8129a71ac604541a60cc2022e0005ccf8a0caa185e18a00004a8442ab401c0e0a2c51640004412ce6ab6fa0be329a80ad53a7e1f532817c6d21efb388efd5b185d46d4d85fea0c577dd19dcd53f78bd8c3a5bb743bb43943ecf1d21df022cee80e105f5e66bcbc8c3d5c461c3a0f1cc61fc6987dc20215f22da258cc519cb4b973341678ca3829cc55d33aa234b65bad687e4775d4a36c8ac5932e9eb6ec64cf4c503d874ed6eda0f449a362486bcb4e3ff6be7986840299d4a814cc1feb0c000103a6001c128a0443599805410e934e5a0fb4830c061b0cc7924998c44808a318868c410619030400064000644612070009b81d4af97e5c645f6fd7dc1dac886abf9bbfeccb9d3f11df2b8511f04bec671b246dd40151f5780d2424f75292ce923d2fbde4af9e4484b8f0bff827875ddcabb5dbdb3dc0957bb5806fa513453b5d419b17f9eb184045f76a1d0b596f0bf8819397a9167cd6ded1c634fa63c800edbcdf90a71bebe3b871b58985ced942f6d09a630f6125c069e52d1c689deaf6ed3505ea761e8e87fd62a3453d4d19475577bfe3361f0e7a88e28cb1d386f42b59355121185851f4f89f2bd9e3acc31668847b8316a046d4ec05a0f22fe31e8604c9d5f0d656881c62a68dfb2e36ba3bbf84c3f3110c3e941979a8677507801132771de718af835646352f81d6943000f6c9a4cef68b2967e69b0b7a31e051b1d1c7afbc9cde7ca53631a4b5dd30af1a3e07a2f1fe8fd3cc0cc76bcf834f66212679a6aa71ac30d598dcdb179dc8552356603a26c954516e55a3e4d08e8fd538245a4d0903d1d2a43ccecf34417865a97ba7f7091d6782d2e4d0a1e3ae41b77ccabd77bed9c9eab9a2e1785c8c462f5d1883f20d40b7ec28a6843b802e0f61bf639da43f9757f67339157c66b23ccddcf378b1ee605fbccb054769f7370e0dcd565b4903bfc76fcd585ebb54b5a30538ca3f64e617d36f5864bf1a117ab010ef5654766bd8700ffb54793699d39ed97bae3b9a09c425913efab3852b198b8fb861326f39978c5a446eeb9c32d8c86f25230b50655c8d8747548109977da5b2fcbdc09271ff67712a95b631d29bfbf8bdda18c1608b331ad29c3c4da463bb9520d223e106fba503c6f658b0d0d21d0199d54901f4bad8deed3ef448d4cbf3e0099f612fb1431c5f63878acddcf9ad21eda40b9c1a6835bbc93c2e281ca16072130a9eb6234c4c438b7d7fbeca8513200ca90bbae5dd07e43631a57bc077d9b1f5a8655254dba0fe68019651c545893b0e01b96efe284ad760e38a1e60778012425a0e48c4e67d73f74ce9b0e24c59f471c22867639b2913ee26495367dff2e3710baec64db5dec6d0e8048b25d5a7a6e28cbe2cc3e7ccf5f28798d75ee3265f1ef3952b0d5b9e0612fbf8d3b80a0ce236d5e8edfa46905b937eee587b5db21ce97f2fa41890dc85eaa1c351613b6fba814bf7afaa76a534f1e6f7737fd8d21135bf49e702bc0e49302aed10fe97e76213b9fd66bb7825da085cd6c3602ff084f34e37fc9c1b31732186608fafcb981956c7b21272ae24b02c499fc723812e087f64b10ed1b9df464f6b203ce03a6de304aca0f6664713dbbde2534a3f4a20eff29b7ec5878f40bb2e598b43734da874ced8ca8f71c99ecad8d0a7250cc52864918d6f7b125cf62fe618f42b6ba0afe0a583551b49cc618648d42165fd9ad10dd1910950adb32226d7fc3ced16310a7a32d00277897aa0144a188c0699c00e12e844a84311241c50a8e9c57a90e0848b3a0609e403131f76dee7f0209b9138d55a3f05c8726c69adf0268e5eaf1ceb91dfb4048f782e140e04c3db97607a0e25f9ed9e1436c00c5c174060326d8129c75ecbbcc3d73e659140a726dea87b07bd7e0326a4d7f429ca17714a346394058523bed321dcd6b0ba1f29a8c81d6f83b309c99fd840007db5e405e118280e3f5bd20ce9164484aa7b68584997f26ce46c44e6c0f68940b9c836f366a39525cf8bbeb2de1fd9522961fb4220de52061b3c0186a190d8cd64eb671113dc357df8a070a25232a95ae582009ed0c050290d7fd1616f9571b26146ca487ef382d2dfb870b04eb5adccd0045a122f023d3eb01b5ddf19172668cadeba85b43791db70ffcbb3874b802bf3953f7ebe3032be66b03f468144bd64e94928196b391159aa7fee74536995dd675e65ed31812ff0cf3dc6e9887e7c44ade66439e8e0cad72c7d58b6ea513c1973644957ca7c36e5d203826a8eb6d90e06f85ca587247ce11e0e70efb570c9da6f0e5d394edc0e737aa1af80220f9c4b1d6c2563315846fee50c3147db361cdfa123ae1fa960d6650d7501319606bce6e233236826edd997ca68622c2cce81947cad51b47674a316987f0f88cd70f751b0de05f3164903fa54b1b5d23cd0d309f2faa61b3259ad0b900994f93861b7a8201ba343ba0f0b915ebb7bfe07f2ff3bb0bea65d281cc4ed3780d8d011aea836b12c1c5b098d6c80303cca1e2ceba15a8db8727bfc4838473c360dd81a59932ad0790cd7f99fece6f23556a03c9068875b3e70008504155642d1be9a5e65ae2d65e09f5b4229c0f0055f0d118a28d101a41c02e9037fb0f14486f4049d1fce60464f2cafde4f6cfd16ad2042ea6e628c8301ed28d4ec72e90b156d1021e880fad802a6723d3926ff19dca65b8de0dcd141e5f4b921cf1fc398ad0eedf384adbd65844b0d599a4755e4b3cedc00d0b680d8480e318f111a6e3a7f5502b95a5b9b9e293a584083669593a4f7b0e130e910051c242e46028f029628f8fbc951621b21f5832d82266da2b811c88becee82d88e4b88c62649b997a0aa527e14bb43e00d8855b8d6067d71d07fdb6b9cd3a378600d360f446ea7de374c8f592cdce4978bb6cf4fc4998a59e00789219b375e781f38c81686b551de110d9ca68dd189417a4035763fe483a09649aa8fa5c648e9bd4c85f7cd4b501e78f2cc5372d25fc14a14894b6b70e41f967a71ed7a6cb0ce75d936c67e645faaadebaa70944197ebcf85740cf2f1d47a5c0a55f676d7207348d7988bbf3f78099ebb807264e6015da1dbc87c11782d538e41025a9d39d1584092f467701f3d50a84141a18608b55405a90cf7ba648e0d4b9cd7d9ef71f506dfc012c836b92860c984ba942eae2da3dd0de36f409286a8a56ebbd953b6791babbb84490480164ee651498086af77b7e6ad796eb853476730de6d5e6d7fbde2b5234ba33eaa493a636f268354daff0cef7751bfa7e04564f8aea903af4681a7cbe844c78a8d1b16232300363c6c2575d54c41b937d14ec7ba1a0a36d07583f5dbdefaf20a788ac76f9c59b458e802816cbf668c6d0c021348a83d479d00c08243014258d64a2414744ae70cf3d51b342787fff1d7bf1ac1d9553c7a7673a5d423113de458d4c0d7e1fb5062362a2246de477dde98f1c16c488107235635b9253a51f996c66e99fd50723ed428d1fbe5c352605e086e918aadda6bd5ba99bef5507410eafc39317ec9e94abce594f145aa5dc4abdf4de259697315f8a5b6baddc81e358608e93e03b4ed71908f3e1c36b3a16bd0bd3768daea7d0a3aab05e2dc8c27201f07434aa01412a7fc4d963d2f204724fba1a6dc6ae79c163f39b0854c106b2609fccf84232770eaf8a9ce36df1cbdfc4bf33c632239a5bfce1aed7bbfe67ccf79544dbe66f7fe8250637b520b1c75341556056446e95a7eae78adefa8d85b3b2b236a755715aca1229ce53853ce5945f9786f176808ab79398c2b8d3425693b7d90695d80b18c724c8b329ffd3477872186cc18c5f6db6df28c8008f3d386d1e540568fe57ac5e1810d163d2485dc6a756e3883a3da92e34120e034be01b40a80c0224691a61441d0510b25b2cca10a7a0918736a049b5fd486c03914659da91eb88480a354d6a31604a8a5c43cbcba39bad0f36eab6810dfc2a6b3d5fbb56cf587c524d85e2fd8249327ff2abc87704107ce973d634a6067fb0ac38ec0e30e2ad62c016c98b843843a1b204f33b9e276dc37f3a423fee10f85a2d008720e69e1240b254125a2cae8c39123385215cde2b635a66fb993c447ddd65a20539531a512df3e0d21c95092b0c022f28f743269fbd14727f70452e8fc0d71a4f40281612108be903c6382b84c031746885069807a58d6acd4c1c0dfdeac8771ce426329bac4d3f77b71ae2ca00592bed41931807a15186319bc51eafc6418e4c0587912bd4f08f03e52b6128690313e1cf05df98a19e40564e53c43c29cc2822dfbc5a8467e5e35fb00d4142270d83655c6d0fc861fdf55eb5bb35a19651f7cf8a945562240a60e47260bdcc77af1c1c456369270d831d66c006dd6fbbacd7d5cfb38786436bef85622df7961d1ca7dbce7ee139e9cf365546f51aaa1865fe1be8933cccf568f1b01775e09d4e87f433c64c7c9ea1d74cc712463fa09f64b4ccc46c3e09cdce06eeabc7632bad411e8823e606ad58e319e460cc82094ff7ecd53cbfbe3376b7d6bb8214b650283fe14bf97eff96aa5d9d5ea70cde37cce4f64012622ba40179585fa1c5e040b9d48c7b226bd70a1ccd05b123032a452a811b47558d8f3a808fe0b6cc0085acb246cf9bf06ac2faf482215e1ccff13025c1fce3a71b447632b32016336b5f62a9e6dd9d1610c775330eb9380ceb5701e8302581a9e82d9aa16a247202e571e58beff3b32e5e1141f09561d2278ca6ffda4063c585f8cdecf26e57fe4bab3a3c7d99b8e588a217f2e0b3e348908353d3148186e67b6eed87fec7968c7e3d275403e14320364e163ac9282e5f775c9e926f91bc5741999d15054ee19783a97b870c2968db50e87f4b050332cec274c9d66fed9e33ac7201f357ee29294e2dc2bef73b984b68ba36f724965569ccc4055821e92abc27d359662790a2cf3f876e876e56c7b46897447916b0aed600d068b4358d9071a7465da50338ddb1f728c343301871ad3d1615e0f428869ae8891845e0810aa724cde557ca09ed043f3ca34e5f583b12ee6f86e29995d94bfa46ff7f12b33c5314d2f1cda0bbeff03b8c34ca760e1d71a2eed4780026e6003f41d42b648fca76f01cf50470d2a663280e422e24316004d9f0850e7d30805db52a34f337560ad61ae9054b3eac98b2c4af202b5988fcae35af74fbe8e8da92dff6616726d9cac5d0a2d0c6822d31ee98233a0986aa90ddc93afd6a4bb57892faf76e9daf7da1e7a7b0891636b89a55575c6a2e5a10f3a4d89334fb6f123adabaf460e91612ca22056a0bc0a15b00d9e240d29eb7e76758c13c8d869783a16d1fe2e890088d1136180a71aa21368e4bab1b8ef5a33ef1efc9d618fb3bd5588d67da1e34749c6e0554542e15248bbb6ae2361d0ef533378b7d30c17ae10dc21f735759938dd1eac91054851c899b6dcfffc8203a3bb443ec5af17e46a31c6e29442d4dd5d921e4d847f2dab9fd395af567d89d84c7244ca58f194b320f4a89d47ef801b25ce308a92101651f694ea9e64d1d991f520d5e53b01570b162f7c6627ca0199d822d87c6aa7e0664a7d76a41d9f06b2114041ab2b9c43074f2850eb0eb5a6827c9259be0ca770136631a84ef4f0d9de2c4e07bab09e2168a5c604833488e33d65f2bd054c89e91050a93cf92b417dd1be6704256214dcac45f58b13413ddd310483ccbdc44fad46df73e4874c00f7998da7d2c7ba883c201bd6b6a567cfd15e6a16fb80c79b09c3628c0bb60089eb3ee81f9cb144e1f9f5e2943659a93453bfac4bded1f5e00b83303c2d113e17f02f75883529e022057e4929dacfb5f586dff3cc01f2ace2652983d0d115fa76bd1504b35a3382c42f0b121a02fa4466367aec5afc67a2c331b9563f56006410faed6f5ecc807177e169405961f2bda4f3907479916c8e03fb0576840340cb6897d98c14d50e0c07f16f9c494d7e42527f1de05a1ff4e5c3077f775f63cfef5b2cdf6d05d3d8d72f6d5279c955e1678f867c8e9fe1504d07604a0750b51d93ed7c4c7f94edc038ee20705312608c3d76abed307f7531a7bf0af73d91c4ebc6a4edd749f10751d076037a7ea9e8eb511ee457a4761fc6bb3cb1953f9392f6a640bd2fc1721612634d0dcfcf2216b7dc3e0f73a55fe74f81d1381d16186e33a642322451fa08ccbd5487d2d8e0a6998e288fe70fa68f34537b7b605de887a5bdc88e76a486d30782cee703e522ededf82267fc73a2dd9968b9836b5fe1a31ff0477be296338537c0529421902b6432ed76e4dc4f844232ba0b2d67b8f99ad5587c9f9ac17509f63f702b537917a6306884b3847851c06fb85a2cbc0b57e75d947a50a9ea5df0ca8b4ea5f45e1f14df247b0e620ae9e75762feb307846380040085c0507d8a426437b299fff70dae8ab6e5c1d5aa2f2e744ec753e84bf4a540636b666fc6def7ebbad768112c3e3d61eba0e2067b1ba855ea1908a40d41bfce820683fa226274ad3269600cb06d21d99210d8a2652eec1426d7a2a54b79eee6a781c6903d35e32b933aca0bed5e1f2c69fcd080479829549786781bbb8232f345bc635afb371b2ba029a09dd8923157cf518da19c296af080a7b091708d12b22abdf819f749f5c068ead1070eb33a76c76d55516c1f9f39e2da8d6672e0b45c9ee15a8d0c4f0421dae48462a7af8ec63530afcdd8976829e05ca77ed5834861fdc29dfeba604124cba7be3961ba3267bbd2dab1c4c7b37b0c2f45102c5650ada59db38e6a477dc893dc21383aa86c9d552716f3dae18fe40a5b42b2dc2ea0077fe24ca34d25588b2459e61401d9f525ca629b4499d370ace5746f9c1d1b6695e5176ac44be3b1776d85a90a2f0f79b133538e247e69795bc1ef1f58dd6334e9764e81e171b2f694d44c1ac79b482378557ae41f0d5f149cceb22fea74c29825f1bfc08f51b0ab7c2370b5242698d7a8ab111ea1c2cc2680564dc3f1fdef871273b6d692c884a64fa326d3a86ed4a9343bc068d78053cec88494a0df7de407199a644c86dc093e6ee09a221b87f9f1b6bf9057e36be61eaa5b96c08819d2a83ee920442b1d6fc26a58c3ac3993e1941812372c39f379f8c1ad4620d93344ac1bc8ffc04b87a316eb03576f854720d6ef1b10909a3b83999ce5c605588b02247869b36060a2f7e16d7787cf7edc901f9c303c0a033aa3ab39b4fda730dc6b9675bacc9558306cc4c3088e13aa1d8c926d99cbb2ef28d07bfeade75050e70c31ff4a3736cce1ca2508ae7e36c5caeac9670ab6a0bedd755d9d1b2ebd3ac88adab039dc39ba748545ee83e41f57fd8810c23cd1ce96e9a3816db40e9d4ad3ffbcdf45379e29f84e82a2aa82286de7de90a35306e3ac089c7eb400d46ed1ad4deaffdc52d8ab407836843a3ec8e674393c0f5003caed55d552daf3d19a2e578a465067362144b277afdce33aaad4fd99b1a42561b645ae9b79aa71cdab22b637536d99f8ca47da120d32d3cf1b73cd67f8cc31e190432cbc98b7af8252b3c4a60ce87648cef17d4c523906e923b4192cc1b801453de835fe6d0952c6031b50872ddcc935a72695a7ae6e5edd6f99a99b34f33ee48adcc126115e2bb9ff1c0dafe851da94e275e2b9f168950bc8a70c405462ff4fdb29e53a04d3a9dafe04b80b5b88d3984045d5fd09f4eb9e34447e84ac53b7350d5f35a78bd2060346a021121c1c5a72a6251139e8793edb631e0140aa2c88cb61f3735e779dca6d5e7890cff12beba6e27d0e482b2a06e869acd4305c5d72f9c018e1f7af2f353b5c157862a33cf29690a71e9b4b0b141af87967e360426d3a2ce5c96260068f1a17e60b2804591ed2e0fa59a77f8e82866813c38044ba54ff3e85f0e880cafc9e158a81129453568aa02222a28f009451e0cb7d74d73ce7be01a62f32eaafb2c273eb50c235683c4f02d68ef503d3bc038e1c0e68bb374c01ae6a3709ff011d00a45f22ba1edf9bec1ef018b423a61e0531a07918ec9a05afa8cb0e7a7b4ba52d2e3a2cd24207ced8b3a2e690eabf41d235536f2ff223386e6ac30f1827abb7d531cf8202ce02f9a177b8b0475a4c1ba3ee30e07d3ff380f334553f349ac036218ab52183e12f3dc902d2fc1f7813fa6e90467d72c11be8dcac805b9d86fb154048439d85d5ab036a9610f3d1aaeab9ca380be4bbfb373ac051ac1b35497e4c1edad4246d17f6721036de5014076e89f5cc6cda641a048e9cfb904299c867d0f4b49db5c7e062eee5e439a074658ff16a4bbb4c561ce06cfc8233d8e9a148b6ab30bdd426782491dadc59c9a6ba8240e6516d3328e73dd450bb953e5d283a6908d003ab64418937371b3b90d19a1650b9cc66c2423369bd80e3ab2e28ceb52cea9480c6beccecf5eb76404f7161bd54ff06f26506842163fded7a63d87fb2c2a8e2aeaa9d414474aa5b82110c5bb0848ab368260aa3a416f81d57b71e77fd3044890bebe1ad6a153f8977bea8fc678ed75f1ac848341f98a22965fdb24fe00bcda741b4dfc02a4f0feab699ad6176c40a3429d8b634d780db24e8df099f101fc53f6bfe362db4c9a79e3be611cf70a937b20de3dd7986ecad27dfa74da128dac571847839bb3a726e64adbf482a6b6872031362048f9b57204da3f899052bd750f877666c0062fa02c0e9eca1a6f7ba182e22086aa2154dcd4b9a532e86ee98dec8b357cbe34ccd1928faf18cb493612604d9bb1b5e8ba8ae60b354eeda9d0c0d36521ee9169cbc116f29d80e560416ed9ecca66fa3f6855adcfb9e25d94223fb1ecece4ed3a5069e2c820f6b639c4ef3cdfd46893bd2d0a6ef84d49704bed99926f39b3b02a0fa2249db545caa0eec07b3ed8fd130c6dda5b9ace6d69d4c8c8126d172a4f215b1dee42a0769f45c42d86fe774df958d2ec5c7c927abd6675013e31b1e14d39ac52002e25072f610d410d1e37eef127142f09f9d25bcdc989f5a93f7cf48171694f004c3a4f93eca291d96816ba0761c34b07e650da97e6390a948d2699434f579f38294072b79ce446f4e0daf9ed294add3204eee75726a644d2073a569f0444241aca647c7d7a72ca3f455b844693098bac80231a0f2ad6ee43aea1bb3d9d48c24f494350b978f01077a0c31b58f2963b60fc228faa70559ee2a46880aa9be7a1217f44db3067e42ebe221ae6e972d7c983ab866d67f8ab0b017730f6c117f4c2a2545c91bfab4ec92e1b5771dcf62189c0a43af6b488a6ec3aea29e9516952be1f615bd0a0753c058dba3465ea3b6bc191234533550a0621d2237b6e224302f300532adf3ca684a098669de89a5993407339cc5c37f2c03b3c53b3c4d51a70fd702b3957419e85902ea2dc71804840fe9f7bd9455a26a6ab4dd476c370ae9659397b54598929185da3242629a6d260220acce2ebd64f74c823b26d15e1277d3e38aa203dba0f78678c423f7e949dffb071b89548024ad1c5298bbb02106bceb951756ab5f7308de69698703cf7b5d076c232ddc032cbc7ee930ab5b90b4f901ccc824b5408756a5e3337b88a4277628f7811a959b63222af268ff9ce551bc23cf229307872fd201539beee483674e12091926754946a67d11e92e9696f936d256bdc96a66c389d094fb81b16db67a037e4810975c4f6187cff27702f90d975d68aef7d31f60ebd905367d2b81c2e94cacd17fe681deb531bd78eee7d11e64e56af9e059a7ea03486f66ab979a0c1fec1e243c5ed3ac363ed0491a7ce0edb9432f14e06b654d72eaa0d5519424e7884ab1442475ad34f7c4df90ae27869fe49964429cd2df6c0abd373499a32932b4f6bdd4a878b79bbdbfaad13dc76058c670d56426a724eccb862509ef3fd9c9e18a3b69b47cd24320ed24f6fb0d651f37b898a17ca7b7429e2fa485579396564de0ce1fa33b2aa22287d412ebc6c0bf9f121551385713457822d990e73b379bb09c28acfed848e6859b0ad0ab7d238a95551754f1eef6d42e4595e12f6ae9665bf0785eb50bf5e3948622c291d78acf711bc306ef12688f02ab4982870553b3e3b08798984f570fe9412278584af72d06e7885bea20a6a496fe470a850cec39e285f124f1b74507f9450ad1fdc4d4ae58c0423d5f337d0727f52bf0f613cd57f1c36ecdd7abd3a7f80d75f0fdd43f817902800587d18ee13f55db6428a81a1710df61ae7ac9c17f130039cc99330c13609513d94fa3bdea1d03e68c02e0b9e62902b07fff702d44a32745a1e19d24b7924845b9274b4bd94ced14e1e1317093a2462a88f2895839ca0e07ade3f557eddd1ce25e1a94e62da3e91eb67adf78204f8c5e9ed49dc6e84e5d20322bc0f22c904aa589328573cc73d1f2f595b7ecfbb8814e42fbf096b80dd1de39c3c620c19e26b4db29976d56e83ed51c1c449876090d7d16943c923761ef4034d3a863d73750501274600c62cef0fa02f6fc2f10d3502b5033833c25ce7fd035913bf44bd6a9ca72af648e97807bfde2c759b30b44dc120491a60edb1904d555b00cb37aba9383ec2ad4d536dd3fa1f0baae94e6028be6141b908fa09dadf9099c37df7360d02d003b80c6523eef91360a70a9d0225d5c61e50ec2d98f38269723fe35a372c7b19a292e9cf2e926cd3a21d153752cc1e4d6aff75b4b81c44ab0e3c1c0850360c452383507c7f42842099ce71d0339093dd84773c73a8ba7ac34055841084ed6b55b398792c422431aca87b8c73627ed0342cfbc053dde5ac0a48937f116f08f502a5ed0f38e8d654a45e9f47c7538f307025faa8813d9409d2dce2298b0011e2b5208835a1cc772164f143546728a0e5560945764fc9bf8783f307a020bb6d7241712164e10e35ba22bb3a937fe5d10d747a4da650f01b97460a1449ef7efa8ce54e5b73ae52080381e04713adfb305a70b2f9d0fc14c70c725da0434e85e10304d1e03ceb99e4c939fc710b9955c89902be7d373ec9d11f45f1f6c707601d391e059e84e1dfb2245eeee582cadf5aaefa2384ab3daefab35d1cf8d9d1f2baae20d769668471b8e2ef4ef30ec01eae2b550e957e7c3db0a584d70420b4f99bd5f9dbd15003d49362cf759675deff8bd8314dbfe31b17e141daed49336f1c52906c10b7a81cf6f5b2f0a3881747103c02ab37db565f8ee35e53c91d840ea020c61ede57260fb9a144b157814a26e0860ac9792b33b12cc1bd0e3e802068cd27db31f93db6410be4ae35fb7a0ab49e90fb28ddbcbe8b3c8b81ab2bc4f7dbf24c2fcac6c0533a631f388d10676f18005dc3d7a26b21c7e4b306e025b65ff67d36ec34b7382e9b440347c49600e097f5cf025b129c80e96e09e9f35059355d94305c01102b4b8c140147db1968c4da357979fc2f504b50119d25727215a40fb31611e0a7470552c403197bff4b50ee49c4a42289201e9ba20e39253366d641415f4d66448ccef30d9e80d33f757cb3f6415f4aad7590334c65aeee12858ba9b2e478630c253ca4e2c49051e323ab4b7c09f5201a24e26714395bb2072b2df71009b683ad941bcd13b299a10e07704a5321fa5b3f527f64ec81486307b4d40a0a1df0e08becf90220210ea7b7bcb203627aeeb71da07c03a2c417de2608302d7b6ede0219621bfbc07f5498e464aabebd2f1d2258f28ce294f1c34a995c15142914a73aa0cab970a4b173110e537acb99712a72954c4c0a05b2bf88c9b1037f7370ffd4916d97c0268bcff4bdc3b0e2d67ad0476e76cb5721f9079e48045675bf984ac458421208f33017a24bc2338373a7e4cb1441927ec511a6612010a38052fcfc0bfade242d0e91b39d728655e6834b145a2dcb608f86c815e464172a54fdece92063f3f9563a8ad189d0f8298820e4ab4663b968ec548d3eaaa87fd1c2470dd6a933207ed07f9de539e95191d73f474b0320b202cf0b4db37241a545625344ff4453b3d22223f90ae140bf3a884ae6549abff32091a707e76464aba326c28d150e090dbdc9e242cdcf8bf706357e81ff0656649499536764a69cc887b81d20009c6f2320e1abf8c7a5d71fbfe1360b0f0aaf9bed68d3b7bbc63ef953d6d37eef678776c180390f7cf7c4fcbcdbbbd5e1d8be53ff440383d41042aa704ccb09bc779169da8e679499e8e2c7c58999d4e70d34ba8963ea8f3a7a40f40d8421b0a33d7359defe6f3a6debdf672443c01a46f08b244048310559bee312d0829909b1fb040670d2edd40470a4a1ec2df33d2dedf73c3688d1a9463520c5be5fecc79cd3b15de4b17837813d570c7092605d7a1f99279f317c458d5a1b4ef2ed0a4e767bb18f1962c0abb184b34813fd5de553104775e738ca4565bae39fb119984d490857b067ae84468eee4b1d4f00f358fa6be8eddfbae442ce8b8b69a27c37e69ab6b4a8723b7affeb4ba54704be8c88c9d3be48c795271d7bc4fbb1b6f02013eede0ff13519f48d22ce5c4ecb08118b2e9a3040f16bd61eeb94e580b8dd36ba77db27fcb3dd904997ec6a512b207281aca759943e3f68958d46f682315a105bc3a857c6b81527d747f25186374b8b28dfbfb94700dd1ea3ecc2bca5b7a9cc0c371bb61b4e26d0cf91be1e2712681b382939df8250df40da68c2165fbd7a5466ae21a80386927c3d69c442f9025157da4283cfa29913ae35fc9ad429b2d17ea1338655a281df45b2a2675cdf42ed410d943699b4527996cdd474864dead5c74c9cfd1b011a1547c59f336a2cce74c1e6996e41af669860125e1672646f6c4f305b26f7ed1e950b701f4f98baab831dcbe60e02d81d0d230ec9270f86e1106ffc732982668a66ae0ffd9b7720d9853f76c336f1d9dd60dd72e30c17f8e125083f793757a8b0b61b942f3fc2ec96af4578284c91f780aed5d149ee309247a265ca104b96f7db8455f63560f112cf61b6cbf68e47aa37a6b3bc2e6893c77e90684a24ef538be720692afde846cdcf2e05cd7121a340fad7627a7dd2a0ad8a974633da24bb9301095ded9b0bfbf21c45551bc26d01295646043954b21222c513ebeb62d951f3ded9af1bec23925a89abf81a224a6be260431454708825203d8df82cb44f21286f4ac4c5b1fb52900d2edd37201da9da8e3e6b5b674d3f6f3936643ce53ddf243eb214a051db98ef127e72fdcee3f0784433454e3f7a24a18062facbae29fdb15ffa3711bd489af5e4047588aba8b75fc8041af452825a0ea034544261befb1b702f5c925f476064b4b60846e32d61c0f6adb4b04206643008cde83c25a25509645c28b0b854b096cebeea6fc21ee4854bc83e2275ab530d32d0fe52e54c1faa1a81a5962d11d53c4d0517fd9c90d0cd760cbcf29cccbed63b33f0b762885ad9a0248a7c4a13a2aae733bad3496b7f5d87265e7338833c2cc88817480460b63a7586bf03637e9a06566293010a610001d79cade3f97971c557083b6467ed6610189d51be21b5b39384538cd3b0cc28b138b0b4312fade4c9a5f1dce1f902cafb304526ed3832d612cee40502543fee59ef499fc0479173f6101efc007780e8658a125d069edc49da7c53935240546c5556abd3bca53010aa9454dd14b7da43da2ee8083b15841092d14eb577d08b8fa958726a6fdaadf6fb60a582cb42e635831311f416934d3ac1e07a78608765c719ea98d9c227aa56739e2900cfa8ba5a4441d96f40d68ae656a5ed8031aa3d45831528b61b2594f740172209d3101650f47130432e4bed7cd377ac516db042a530ff552accef380b50f6fe3edcec97a75f0e404ea179b95a4a89600e89807235f1aea3fa55c844c12f94e26984ec2950a066dc32070980f0c652a84405a449c148e8f5581015c5745eb601c2d6221222ab64fd0084fe51ee21fe725c3ff2661c4fbdf5defed52a423fc550783ceca8fc2c905c66d6bf8f9f11ee424682c332d89ca4d14cc96713c2e14181c8b60065d186a624c7384fee91c622f6bb8a0239f027bad7ac3e32be1ea683dd5feb38fc28c9809aa9691999fed4d13b46187a8097b2fbe15ccbac3267f432cd5908e4c90acf62b57f7933eab404fceeb8f01e7ce2f035e868eadd0d31924a142aad171fa02a5a644546fb5de8796821782c92889a6a96b72df3f738925a422018a55e7239e49088ab4d690a9359452233dd06b9e2a4a1a58c462ffb215495951585faabcd4ae0c6f1fbdaaca27de046ee84e7818a3529e42ef204235737e092ce80ccdfad8df9127046e9451460137b03c263524ec5bc8de4578f5e4827a132bbbbdd2bd3bd5a3dc6ddf58be455f33270852115894e84083b95edfadb73790c2a2c1468026573720057fd825877317e2b5a16e3334ab56795733095a09d29814ed72262e78676cda4b4e128bf47f90e8cd9a7862d4f303baf4da9b86a81b9996a8e3cf8c997fa0d4ca9dcde3ee97817973cba5c7d72219464859bfdc687b54a4cf96d757b5e2deea71649e2308923174e68302cae4ec75e27c471113140143435132f2b7b55b76aa88ebdf347fce8d17a77209c2aa5e9a08ee4a51bbe2736894f5aca8e6b509cbccb0bdd26c9033ce70ff54459c6a230a286fa79729ea1983efe539d452dc134ec10d500a24f9e6116b15d1d2378d7ca3e495526abb40f626097e11e7894550d2c2225c9095370bd073f8c227c522c54c193d53ae314c16e188656dd08c7fc0ee096b5cbbd2f77ecf6538d05aba26e1954bab843cfe18c84db7d5aea700edb5eb96b7df7816fc2bfbf0293c79ad5d48584ac18f5d1b4880fc8625176785a2e7c13520668f7945b93f071bfc1be9d32e82e609afdae32e75c1b3beb088fd73083d4ccc94950168fdf6b69c69b1a3b04de8a67b2c1f0fe0dd6dde704ed5c43011f3b0eaad96dc00eb924a10fd86fc612571b4e25acfbd2218e2a45f7dfa582d6bc9608fee3684424f73e36a85877f8a637852211d8c3d7ee0a3a499eb760e0461d3d44d1ac8bcd3a2b2c1be1940e858290b03e8bdf0992f2bb561bd0b5bec780bd135e3c996b995968e2d2d012d76589917712b327ee0372d44b713958f9131061ebf2385137502c86c7023cc36e6e2e21aff188802fd9218cebd9b0f7424bff4e163c2622986c9839f9ccb3c02620a959abea609ebb1db28df6ea37edba7f36fe88971dbc9818b66ab48fd05d3f0d4d891ff9312087b80bc6c45c893c5a8a376caee255b5477c2d953bdf286a050b89f8740a5b98aa1cd5b92a10d1860c1fc684557efe3383080659f1ae36e25d65e9b5f8f7a8652100acf2722a3079484f95f7134d71bab0e03320e6b70b1b5944081be30112f5d1ffe2939e00df6df64d653ea94b98fea085c10d47ef7da981ae47f15d2d6436c116706457f2457bd5d1dc7009eb749bc489c0eafba554eb6b548ed8261240b49b5e03e0f9c5ff44630ad9ca6723bf1da614c7cc3c366450f04bfeb2862b56eef2a08765cfe87409996b4cc837701495f38f577e8358bd5311f4b3a685f866d835fb0dc37a2eed504f801543f748a521e1751c3c5b2e3d9329a082d107a8b167f66b120919e6749e3479df7b6866f67164f1dd22875e187f34a25334eb5009a58f65e783a902269f013beb3a9375a8e2d0bb96a5ae369e12f10c45a54d7750e7755a69b310375b2646c4f523504f47082013edb7878937a6d919c4257bb81c304f98837d1a8d65a43b931d2db2e6d85b4821869bc8526d926d4d7dc66dc73223d83d31e21d1fc3fcd6db41976d5b4ebf82861ef55a508c33c219faf543f44ad26f552d1a708ca6620e810497ca4ce9a016331db5ce37783a9215182e44f7023b784a1b74bffcbeae4ac56f3115138f8a5699af7804f3edc1fa318443c007c0ddeae1fec05d1c9627574b8025b2d80d42775ff8f1d1d3be3ba61cd916b52686630391dc0ca79751caa3a9da39cc210bf997d4cc18749e93c037ad5b32d27caf3f530e02250287acd8220c13424037ba73a5a1b5128f33fd1799463eecff52dd1b3444ee0cf646ed737f95ca01c669ac969974792f93ab047d280f3f58cb997b63d7a5b7d1aa41327c2f36b3b5b980bc047ec6d6005248f890a1a76f6fe0f2550f965a22d60d465d605637e659e00d0162db9f5f4311671776161454264967599e3b8603084f6dc5fe201842f0bf288b947006dc05c363c30a81ddc440a6ec635609c7d3ed52782a03ac7574348e95bcad2f860914a0bb194aa90c620471722c9d86c23308a70d446c111c46cc3c2c10fe1e6b8cafb6c703c2833746f95421924d4e2e999af50e6816836721855aa02fffa3be68ad89a1c263970d100a4190df46735d532d456544552f9c40b0e4054e0900043364bd9403ee0fbd09be6e0c525f05f480806265c6e55c3367bb7c0686e55a7e54ab54a84c182c0a22b9acb3137cfa3a9b9315fb7e60988fd5bd74e79b1b87e52ecdfbcf742252a87a274eb7d495ca1370f222b647365b415a87b039400140573c00bc6a537ed8caa9b118d1096d861875f7ab317713f71a105859fa9233d6786f8c86046644850496e9a1c954be168a02004968b6b539adfda710ff7dd2ac9722acb9bba5885373cf93033b581ba6b6c8f3b229c2588384df82301e6cc4e1191453b8c7415b70d4d5dc8d38e3d4d1b085195adc31115133a2bf828b81647774d08d13455d66de9be60c1a70b950dfbe6b2b71e94f639c0815e3729d396967b0b231c6d9c9105ff9003f8ae1ef26be110f74eb44efcbb9880574be18e599dfee7e2484ba813cdd675a15dba2698ada304b3758568b6ae0bedd235c16c1d2598ad2b44b3755d6897ae0966eb28c16c5d219aadeb42bb74cd03126dd402b388702211535e928416a5847242a693a37b2293bfb27f6bc939f7a7346f9243fda4234743f6c777229ffdb7773886c755426e7f31dc8113e7f812d3d5698ae4b19b00a0479e6f12e43f696ed88fe710ad0f574f12ed861964a8f41254bc7535cc3631548213e6bf214ffc52ecdbc4d78a22a1bd20c50441b5d6e9e52da3d61a22a438340177aa4193daf8cfb21d00cc1dc9f5eb7cd1135d8d270ed120c4475d765e860ca5dc4ab22787c30865a7992a48cbb7f42fd8f53a7f10fdefe964e977ae567645165d7910ee92d1d75e2a893e6af185cad759eb7d24d0e67a047e076b3f650c35fba951fd19f55a6e30b942a5ce720cc95c506a6942af5f7f16a1075e99f41051003bdf97ebc6180bb77c6f6e37ed354d893d8fbab9b3ddf25d693228c6840b46b74b0d06f3ea2ae74bad41a6c9a420ce09ef2adcf8def23d9e34cf00501d0ccd7d13f0eb88b1216c8a8e74a4403f1d3111d4e52bb55a584952d06f5560529f2940097d94afcacf73d7cfbf833633b456315335971ac21b3818531ac401427819d0be0b25366836048ef3e1142bf59ab3cc4f736fc15ba894ff89ed6339426a797e99eee486de7c892d30b4b28a97e68a8caee94ed69bee34faf12d40f9b78b22cabf882c2048f09b4c5a159e7688a9a563c8534a9a3d600b200afcfaab9eacaeb669ae222a562bd4bc210401cfa2fc9f0ef0fe51359a1bdd3775085004db14eba6460bee849d776d5dce769675a3b959667755f1c617d1884b4252308354f8df0d488628820bc2335f04583c6010d003a760a493b177b4560750b84c3978f434dae7b70f86a2f03f288a5e880690388d76a5a2085fb4831a2a70a8b98783f6b93448f7593efcacccbc6c3f9d4cf08f4218b48614bf39cfd7815fec73d575b4c0cce5748ac41998b78b586ec0cca5a530d1cbd0d100a323a630e4a3c83e6cdf8ffa938493d67798a2dab040413600facc7692058a463f7982d46bc58de853de45acb2b4325740c880afc97f35b98fac9774bba3927d1eee4924baf2e35e852a5d0a30512cf7022406b866df96435438fc5ce52ea874c69b336b6d3e4ce2ab5e1728739d8d0026d22116fd94c3d6a54c088f8065e75d74124c3024a562a7aa9524f57db2c0cec8c0152364b50b8ed6e48fc2bbfacb0def9c2d216288b80bd9a4b5f1f25e3573d7cadc084c2a41afdc1b03faf80b3aab9d68cf11a9339752a5d861bafaac5e6c41703cfda7b92ef977f2dcd4d80975c4cde5a2d723c7036bf26e7a3a35c0cf89e5a1264d1fae5682fe6d39578d18131fcbbff00238bb48ff8833c0672f315b80679e234cab48a16627b134cd4396766fa06eda69cbe77c5f416c2884e67fdb485166dff05dd54bd568487080d315bae6b723ab32e4aefd9f90ac970f18b349df3288903f6879ab332387605204b9c6f3ccb5e5413f39f7a96048f5e35e77b622a586abdefb1704f265d1f1711134c7bdf5a1c224364665d4037eb592f94caee0aed3d38a6454be1a906363a2fcbf83f5edc92c0171bca8d34bb1e36509bffc1af22a21dc0659bc60fcb78c8b056c51d34d02dbf9f2505448ff75e399130f12bb7de5b721c94c94bb0349046f8570a4f38b4e24b21bae70785c443c8a3255e730e0c0f0be1619ed1b269017ce1557bdb3266df63c01047aa65f252a67f4bf492840cd6cdc4a63b73585915eaa9c0e99aa546ba2e5e981c8a308bc3c36551dc613d5e54c5d575350df9f599cea2d913a151163c74d1154e0f1ddd19cca255dd0f312b130f2afaf2bc3176962b3a4ad423d8ce60a22ead00229290da89867ad64ea3ff04796258e83382913ae11474c74df60ab008a04c19aee30f5524aff0d2fbd89e77dc310fecf646abfed3ebd17e7bf7e4795f3d84b32dfb877be2149424004aec587eb85c64c899068b2af68895c50ef4d2af5526aeb04fdc7c9ab2f05b4a1f8f7f6d898aa8c7888d8fbb12012f12bca4584b8d6222ebed7230a6bb6b71448384b461f265b77043124893587d0c2c34155a85cb7a0914976ba22e0177e5ca10366ca1b9e75e0748250f1cba82a7d20baea1fd17716a7e968fbf40390523c48d6a10ab26ec7305a60f5dc556540256e28b66f39f7319e16c0c0b56fa0394d07c53b58e88ce68725379c0623642bf9ea8c78bbb54a0d8c1916bab867f206f4fb0469d3961660fbc960abf3296c7501470052b45556feb5b4563be8548db03108be2b42bdb5668962772161df9c2341165b12836bcf068e998d3b27614a6b10241c93afe438eaa41189c372b407a9f37320ca58abbf98a1f924b73ad77bc1907c15aa235245e73d0a91066676265102c9d6f4366bfb2c80d04a577dd1aac5aa36ee6cafa6a73edbd2e8d6f8b700c275b0ec821e555c023231385eb8b42f978e05c20acf9678e12dd80855f99066e12eb1084da23455448f5f0fa3a92fe4e983a51c85178606bc9357e89e1ee6f1276c154e3f730a03470928ec41969d1ba8293aa5d617e62f6c9584378f84c4fbd0daae47fe933c39de98f3fe3aed23a5d882bf0a63da7733b107348bc339a69c4cd6d4fc77432aa5feb7f7a20e211978bb6a21e5d8c97808a6aac47bf557052d144950eba3d567c02974a122501e9d9c71aaa32d059476002b8b6270681c65425a0547332859cb31aaf77b628b410e93a62070cc14d66a297cc02fac4db601fc550086ee963840753a3fcce9197b2a5998fa623080236411d9a801b82e6886447e2bc04af5c461790dc3e1f60645615bee94f6962937916fbdd9d82c6b01980079008c001d36d832eb2c730f073e9ae43eb1f242ef66ed51f4abc1f709389d607652f8af1a88d256d926217238dba66910a9454504d46ddbba6de34c95e3386edbca6d359938ce6422c91b1c1d18124e4e6747b02c7b40e800184a40fdc09516084ada16a019d1903c0f8c8b0a23209f1d1c9a189758c846860d05eb8783a628c3854e33df4b264f360b10527d0d0d05785080f7a0325844144347354fc1e649c105c19614a4285a5374e5ec962a316cee393984599be06b5e083bb38a297f4c2b7b75a5f97b489bd2d07baf299f931d81b9b303666d54498d588b9d7dec1fce0d4597ecd26007c42c8b0d7831b0fecfa63f41f7f0ab1882ef8133fc0e43edf416eeb557825576dd9d2b17ac2da190d055beacdb0115b5dfb7fdf793b2c7cc9c79cca516377f735b4af64eb2e31aae686565650505050585858585a5d56ab54646463c3c6230180c262222225252525272d22a95ea64a5adb493eec93d57daf777571557c362b1582affff52aedcdd9dff0de38fb58a62cff9d94143c3388ee3e8a97cad0505a2e83ed2918ee3489269903cafd7ebd5d1d1d111c2cccc1fd8f1175b44444b4b67d967bdf9e61ed1b95cdde186524a29f99beb0e5cfdff7fabfb7477972b1586dd255777fd9f0505a2e8de2da57b9552cf9bf4bd2a85a01bb883a5ea30424242429292929262e29d5676bbbddde9ebbc3b4d7f836e76aff0edaaa6f87528dfae7a67e2a9aeeea9abbfcd7dda3d7157a5949ec9eed6e9ed7a340c8447a8b3e6be3763f710180ec9c2204a6314834411437d03e29318418e6239106330844110420831841022208410428852841885a45207de0c1e0f4575120bd0cbf33b70240a1f364663e3ef9d9b33ae6111f85b44ba380b6773857354003699b572fd8385df0d498b53b5b743293e2b1562b1ee384007cf43f85ba7082f043fd35e2240afd5cb6483becbe16b490ba85685a3c32abe02e8394e785b421ced929bf27ffb82d772797cfbea86a1e3e5c8a90a1761ec619cc19e5ef48662d87e2610747e117912ab26267144bdf6caa251441c6b05f4ae702384756c36ebefccabf941fbe50db27921f713880edf27c8e3fece138fac66606d843c042d2eeeff45c581c5c66030d03051b0a363140e815ba90d86815fcb910849e5ae0894318e5a52d932679bb693486c973ffdd37b7950a4e687f140d206a23adc04e4bdeb03f80a03b8d5e0cad3fe614c31f8aea18a4f3bba374ffaafb0822384687d347eee34440fc1e5318a39ee30472e0676e521a7cac51876c4a2f3ca4c7497516ca260f969bd6d9ea13693c2b9fac02b57e632dd2d98a07ce013ae637a11d89d1e4581c1c8c80c9e85252f5db33f22672917cca4d8ccb1862329e9a8dbe84e88b1b95f663850dbe28a6e965182abd8fe04b9d131ef471fb1fb3b27820eea8d8633b3641c90510709a42244f0a989cc043bb4356d4edb8da3f23e0cdea451902dbf641f0fd70d2572ebfb7fe2524719f97ec3426ea089607cc15073b7d35d3f4ac09e28bbdbc93087b14207406ac7f05f52eee8680d965e5ffc1bbeea7184f92542b7d2f206efeeb64d9c764c9b30d8cb93e246b9d8ed752c14ac0876147bbd2e41281e34afdd089e635d3f58d5abc516531341f39538b513122ba12f265bbaffc3b4f93dd79a678c3827243af992b6f81206027c8cdde52c14cb7d2f2ec79e517ef2c768bf0534aa87aea942d72c639303903becf8d5b1417f673cbeafc6687267fde1e0f01d5e54b39f3f20bc1023efa2ffeed043b8344673dcb9f8ccdd10e53859c2e21d02dd4074f3ee34d40d7157172a9ad9ee38812e67e36ecd017647790b66b28a4d3aa69f9eb8ee60639a5da84a0da1e7ee87a8ccdd3318ae107483d1cdbbd3d04e8897c6e8e4ba63dbb72b59f4ed915ba04e4af2e1e2122c753943c4b3fd83630912c05af75d59b3bb749cb0b514680b98172129b2d18d3d68bfe6ef240b6854028b903b31912f4fa4a56f5c41082f02e7add1555c5614317e28cf0f64246a18a9f6553a428cdc45c59f3b41a60e569bda55283c0f5963449bb4285ba87f46a901517be9c5ff0243a5d30d380ed92a1203e0282ee024a1470941845040e2f65d67af720836f72503ea37ee3b0d594a47d2c30964eacb60df0470f2a5f265925d3ed2e794a9261f218b3d630b88f1819f02e6d0ea191bb2d0f5eff9289d2146efa27feed2437c798822d71d97c48a6dadefd091ff11069ad20660d80f6549ae2194969048204c25093efb8319532c8883093c1694790b3c8f7c6818221f5b50c99e9b0046f430b391cc7bb7b309cf3c8f3604000368303862f069425b1e33245cfe15afb3561d517d77bdf855c159528e14568bfb9d6a1127a0564368ed71d3dfc914a606dfdd247a8f92af7e98f273325767bcf5cb9a8c3c99f68f002b1ed790ae23ec94fd8b30baf8d93b68810e01a76c005dac497a8e801ef4b0d78dfde2ab025350dc2e7ff3f628b8c67eeb41ca233561dfc1b769027f0dbc1b55009b4987991cac52ab89eb4f27618552b1a7bfc517a128bcf8ca412882179f97a6a96200b9d5dc922225a2629f009222fdde17af8752ffe17d81197b3c717ced95602b8a4092de0416c923aa7bed5c2036f708a2de3ae2580a80fa467ee32efeb2abe0d450ecea167abb78d872b8ad4c2d61056f725b85316dc1e6ccb289118c54bf0bdccc1adc3bdfc5e09cb73d37b9600b9c6ee7ab91e43471294c5e9029168f262c3096fca6940108577b9eabaf81ed8522726a49ed1912395e98b966d9f38438d24708c312d6221daa71e65127b1e78a4ed74a5858aa56d5a3c278dee14b39a7adffcd0bd83fe2cf820575a9d37684c6706d1f11640976fd920e3d141cd2b6b060179b5e4680c40b5952879344f85d35723dbe3a37f1631ce0c18f8169d9b73016bfe36ba6bca37cdc3e7f911c90784b77cfaa80c47fc5e2eee50c90f8894fa0851a4647920580329618a6314d33d59d00b95f2fb8afad0f95ce1586a2ddaf8a0d1a23e83cdfa5905faa18df0f0f3b53f62bd4b54ab92f854020b3a5f3a459097fa5ee31c870498874f0f48f48e22b5df1dcc8210f9f2a3929169285264d47e2c7eed0f67e6de1a9aae8af4f0ffefa236e2759a5f82f3af7d2b1d0a3ce0b15d6560e993dc4f86b54c1c387ce55948884b2ce6da2d4d162d0d01cca7e459ce1c72747ac3a50ce96d9fdf9fcb68768e9140318ebe0d6867de3b93c6f761031d770237aebbde506957c35b2be4a8c960c9bf2ba64bdcc77b2b3b3cbddc8b997940840a8cade1f0e8fb7a9d0c69c06fafbf6d245e08d11d01b8fc63ebfd13ee0501e4b90e4cc03295c1fd9f4a87525b4dee6f879258085433d2bc129042938602c784f2f63f34cc7353ff427627d289870efc64de5694c0cd9f0c8b3fb468e234afeed9b99bbeed3626afde15088eff61857a79fd60dea866660609f1a1a042a3d77dc38f309a24b1cc63da2cd8282ca362c525316df254056720bab9a96aa284dbd35b2ebbaf0b30232e11908bed66ba907c96edbd370b35cdcac086e434637db8e9b49df6da677b3ecdd4cf46e331d3733afe746db776bd7d5f6748932fe440823e34f7c8edbc03d4af069e597eed88999d10ccc9befc6931174763b597650a6038d4f2684038d075888f11b397442cc0be03ee8e0edbd3a0c2c1f91f469efce8fa2a6c267976d809eb9e33e00c00b9c9c7be444987df202afe798f2a7140b87e4a6c271764af7de8398a68ae95a9ba8d95648ba95b0d8f52d948a8c7f18ff13fec9d60284420036eb9e38b0f4368299f002fd7cad8c000018020a8044f3670600d1d8e96fccfd41ffa16dec9fc534b8a8650489a00668132ab99324a5c8cd6e919b768b0090009100bc43bdec7c02b1f93762326dfa7f65e2ffeac0d326d3f5637e57fa3e55d6413f196285e8c97b23b352021afec4345d1085e5b64b84e1755d57ced5e1eaf2356bed2c375957ee01457a8f4cd6b4a76bbaa6696f34d2465fdb745dd7251dc0a6bb91f69e867aa8f7482474a6e9799e91c8e3719e8f332dd373416d8bd4333d236779f66df7247d25ca1d59032dbbf262bcfe62dc657b70e9392895beafcbdab4cff99d323d47b9dbe6eb3811af653eb4d1164ecd0053b9ec385aab4ad9a3691bfd7ba5964b7672e96d1696f276abedd38e21e778f2abac7c7dfc5cd7b349bb7d3a3ddf7001b138c61acf7865e22d9ef142f7eee6b88fc7889df95bb9cacb21c4d8f31df55c3eb459b9a5e70b186f5b796f54117f3495154a22f31303bfb718fcce52f0fb0ac1ef2a03bfa7247f4711f8fda4fefd89fc7161c08f098f3f1ef43f9e1a7f2c38ff385043a369dbc9a4e7ca55a06b857a26cdbc57c8ea6d7bb96c36353462d7f52cdd9c5c1cdc9b5b1bdb9a5a1ada995919d9985818d8975717d79656340beb8aaf9c738b1fcf7d57d98f86b9d2969e59bca3f7c96413868b70d17d6df885d70fb36cef002e00711844a2ebd75b677fea4bfda80bc5bc6f48bd292688d45ba248bd238cd41be20149bd9749eaeda0c4c0a4de0b4deaade0a4deca6f27441d4ca9b70155957a130c24056a64c051f6332dc4caaddd85849cc5675067813cfd6329c5ef3e13bff748fcce13f1fb0ec4ef3a0fbfe72c7fc771f8fda6e1771b86df6b167ea751f87d46f9bbccff3dc6fe1d26e1f71784df5d0e028319a8a2ab6fda189233020a6314638c314302aa223bf2c81058638e19640c11111111199140021165142449d2017d5a2d68939a9bca740bcff9b264b4e121f39c9e8ec9ec28d96a8271c9ca820c04095636eb0830eb2ab0fb089a7308da71099839299abd05d83d02d83d0a8c390aedb87336c01fe32f163f543dfd02a860dc1f7b0da7403f3bf01408e6be7e22a7fca18373d7dd0a54eb0bc5fe1aec72fd67efdd5e829f17b3babc733455252495fa144d95042545f47455e4b4b413d41ce3c232b0214bf969ed1b5bb432cb12245473dce9eb46a1a8b23b9b5c7617c486301ae74d370df4638c72325f09b0c1e7e05c28dcd00772bf8ed03cce8b878e9c9d5c394748502b676c7162e18c2d4f2dbcf1c58995375a38b1f2464b3dad994606dc1fd712a1c5efdd915dccec516ebdc24b062e8b4e95238133e2339399c7aa4dfe334a49fcc39822779887d5647407805c781ab6ee387f022653ab746f0ab6748b851dc418b1d429ed075092e02878013a66771811fb2d2957531bdd63e74c00459f5c8221b4c3133f8fc392c86c796b08f6060ac25e814ab0165092f602d682b5c142b056d033801d5b35770c6fb8dc132ba80617e370e245f9fe638c8a61e094d654f07da2c54cb914afb1f602585b0777b603706c0e18d3aca8951dc877449ae60f3e60c8bec09a00fa4514344eed884e1b5ad6bb7dc40622c20b2a5ef01028cc1560c09743e6e5ad91aff61d7ca4e918c7e31e24f7db8d2ca11d3b742179d8d55840d046e2015f41340b266ff5f2c1cce1d39b6d10d86ea5c6babf4d2c6620e0d287ab157ad0f96c07bf1a67ffd75924494043131daaad230a4135ae352bee340320fb5041dc2e2629be5b7f92fe33298cb1fc02704c32b6f2e0a24935e6ba4383cf6aafb7e6983f57dbdd602cb97107709b66192558078af9d8880045c51df8e292d908054157275dab4f6ee920f037e92ca0c47cb4ede918a77eb888aa59d7c85a882da37ae6b5c29fca4069410c12f1f865b66e2c50a0b40acf45ebbabbd8e9f6d9f27e19eb54bfd8c070f880953fca30dd6abb6a7e92e2ae10d9b6d1a686ff74faf943960cd44d5bbcc6502a5cbb5b1c1d6dec99eec8ff46fd3053e787f6a78f1be64cb624c62a9a0783d215aa15be340c56e3deaffdd52c7d1c75091e26de68d797288ed28317d905f135727a9b19ab4dee8370150d5042fba68eb051436cbaf82ab7d63684a16b5549df4927a217ace0e80f3089cb8e5f42b00f7dcb97e85b6847774856c1a706dcc70dc6be587ab0c480b9f6d3a20a6b9952764488b0f78644a59c43701030b463f23afaa414811255172adc7d42e51c8816aea101b3b597fe18a4975ab48107ca23a9591281e6e47c8162cbc8899b00888cfad6e4060077d144ace46ed8c4bddc38d5f94913035d62b6c16f192cd3524ac9bec6d9b880db87fbab34d3a49523d166befb7fdbba7f4fef96ec33d5405ea1fbd6913f34f4d85be8cb45ee874cb7a2f065103a8a81487773819f6a2746e2e682b70e5afafb5a71340e46f327edc3424ee06b12062e608afe440af9c2f235c8a7283f263638e732d54aa0b83316d5afd00ec8ea3e8ea22990141631c07330c597e76b6c8350aaa0a00dd1aabff81b5cc4f291d137eeb0798783d97d5b5b13a4888fc6d834fc94cfed0c88fa2d4e4a070a01d8fb0443fb6f6bbfbcd8f8045252272b0225b2f1807816a9b2174cfc4641a2cb29290c1cb9ade5357a1753cea026a4b09d7774be611ded41498d63c9b3cdc8c15815b31c471d69c310c4b41aa07f3c421b2e44f58df57ffac3be0e9c686840875ac27526383ddb5cd5a0cdf2412c51a90c43552059c7672ac32eb74dda5ed057cc950fe27bbe031b1022ca075f2eaa4997a143a41e2b1bfed770bdf7e46aa2ce1972d81e9bbe13ca7538889c02660c522e94104ff8cf29c73b07a713b33cd618ac71bec22d75422130c781f38fd2ea350f54a58518e2fa76ea81cafc5addc61945fe52d4cf2d3666147e4e88ee70829a2f75b4f0d523cdba43685543af9288e7f089ab88a675d374fbde26f85b5a43e83fbddfa662eca26c85bff375aab6c9c6e713099cec027a9db1534620e451da23f41ef734098de7f619b3db49fe6342dd9bcc881cd00e6f3e1810b8b8480f7608bda0700fdf032f95b7f00437116eca06a9476cb691d64d362291ddddddbd532201f3047b05df041d17a3a2fb569b052f0c421564adba0e420fe6c154aecec5eaba2b30ccaabbc5ea3a166c55960a16391e3608ed06218410e66ddbb6cd6edbb66ddb66edb66ddbf61cc7d94d4b8699abb9660861162d99c31f07b7dc61f9197f9531cbfd3e7d43e8347646ee332ee317f13f467b3b9debbdf74a1badb5f18a162b58acb492454a4f5ed162050bb676638c2ddebf5977b0c354767eb5464b779c9bfa94fe3f08d67c6b07e02021ac8a316aef4c44c914e56f082394b1091d3f1663105f7431a44e525daa52516e4cb8905077a6dee05182786f5a60be3043bbb76bb1dd68ddf0c5be41b8418570fb2e44033997727c31a3a3b5419a82e282e4c43fed20c5a40afd9b86aacddaadd5aab55ac15878b3582cd60a6e16cc6189a5374b6b4e1504f3e8c658c73a4f86b15ee5d55ec1ef6afadb2a2b295cfb6d712e537e7428a1566fed44096554033341b3059333fa620deed7dee4e952c1cf36606035388d34d2b873c7652bca50935ef5ec9f9e9f9eedeae9f9e9e9f19c61ce7bf39bf3dd2eebdeaebb9d15364d527a18638cb18f0fc7713e97d2cddd8d84b377fb70d70789e5a8a5afeb6df7e24913dbcd7bbdc387dcbd16c9be777b1769370c9684bb4838ee5ecb510ebf7c9cb5f2bb6f177db1d6dce5b4be1cddb04bc7bf752e1f2f465f2d396505a5aba7eba92ece5977dbb67d59ac0f6ff86eb8636daccbfa7b718e230533b535ce0997acb6ed70cb2c196bb55ab11590f6a34408288645c98f1607cb16e95db67791f1c39fc582b5f1bd17b4b60b77dbeeaa4fd5d2ac95c62a8ce6b19434965d7666863a78ef2d8299a4610d12d5c408773413630e87504b29a59549a5391c1204b3d6d67d3713a66b79c8c2cc53a4f2e7d7ff4d3424e7aeb43a92fe18132d9aa8a324a5840f2394524a295f4a29a594524a29a5dcae41a4dc524a29a594521681bdd0db9831aa593f1a79dafbcee8bd8a43fa75cc9ed65bfb77af527d08aa5c55a15b087712df36e811cd149b27a42e79dc5bddb1771d746bbb39b7fdddb2aadf9dfdaea5b2534531846f34c5d62de76e41c562712af811aa3ad576fd8e1255bb47d5e3b29db53b6eff3fb75684335bebef82adf4e1c6ff5365b75555df15665f6dad8f159b9532c0456f3b720efbef60766b55306feedb32de9d19b8c17bf8c22a15af57cc096c6888814186a2fcac0a454c26a645b192b8828915fab7a494c629a57b1b62209d03b012dc0ddec70983504e086584d0df3597203a8eca638d518a2b9018b794ffe50ba73bba8ef91c2fc6e85174a48ee251adda631afd1bd229544df5849c8d93273e232acab078242554e29126a2479298f2da7b12d60cb48bb3508ea3e23b6e0cba9828e4795a43212a474ef0cb21f5e1adae291d3f2653c01a074653937869a47ef9524e58458c10fecc323e34f34678144ca2d3c53f6b087fd762ffc3569b31ba24fc93dc1f09f812be81116adb8cbb5b7248259974dfdd9d0546e99d0e98f433a834859393d3ec9b7e66c70b39321c21c743a344fce2e5785c282df9944b2dd2da5345ec387e26450019321742f8462ae94e09ad93885e172f473edc2e5d83b14f36e592192f4d34014626bd814868e81a4a4a8c986f6af333979a9a8a53dff43398457ef74da90e39eb3aadd657a705278ea5a9fbb5a0ae432529664b971aaae17f444d8b538492929bf1f258f546e877edfb677043e84b1fe137d9193366ccd44b95e1521f7d69ca88187f89b86409ad7dfcffdfef4dae7db0833118b0f61cd19ecfc001b1bb01fb733792b401e5e404f4b91b246d9ad8b051f239193e63ccd6acf9f93c8de7851a3468609f67f13ac3840516493e9fa2470a3365ca20f9bc0917134b64c8f87c9e448784529830dee744b4be2479f1f2fafc0796fbd0c5b938979e2f87150e8ce81ab464c1d37d31a860c0f2429dd6b702a7c29514e6b03e13b612ac902067f581903fa842058efe34c0191c4d71527d522e0546513436dc178185a0080a94ed5ba02af0c489019409fd888686f027400038f6a21374258d12da9f0e14bf0d5bc1a02c422ad74a219c5bcb3da5ac95c629e3e748a6c8434fe1defcbce99720f9a32ef431aad69cadad744add815f8b508beff0a3cc1a5cd214fe27552552f84ea3108e30c6a86933267f46bdecd09e6bf5201d142376e83ae6989fd09a8c0f7480425afc171ead79100c946f67222434d3a0c39148d9329d96daf3eb103dc3d628fc1e3e8406b4d160cc739555da206fab1bc8a68cb2230203e5c913a77204f52958898259b058a9d9691db4378679de0a6f43424232ce091151de47f8fc4c8add6f352d8b667a220288284533cd8e8befa474a375919927ae35c746200c82d6828a2da6538c9aee4b0e0df3dd60acc9939652bb1b7c6cdba2650ad287da1d6bf5b0dc0b57e8d43e729e6c279350458b636dfd4de9ce53b9cdaa32dd5d9df0639d9f14b35ab7d63d00cec660d426f4b8a373d122f424ecdd1874bf14d1af44d6908af4db9bbe1ad1be79ecb4a676c0e4ff99171c1db5e9b9367103a54ba82520a3992f4a5fba78717a6f13e527d2917ff2622607a227b211d9c3fd8cc018638c51b218e36c7f4dc4d0b16a9a161780fe5ff6405e6de8ea4f439821d2ffaf6dfab5a78d68228f91a8b376eb7a82e8bdc71f153746abaccfed5ab998ec5e6e607cae76af357407a582ea56b326d54aca5b66c9003c3aca550baa9b55776b9552986cadbcdd7e06b0efad9219d20d9058e03f9f6631e2d7ede93ea3e9b44268af6bb57edaa9c0d8c7078c7db8e49a254b23707b968f2774d344c849938f8a023bbf022f99a41a39934d0a3459ed8fb563ad0d40b7835c3b809e2d80de7b477a371229a594782799734e04f286514ae1b67f6a3d80db4aac014c5e6c8668dd056cb914ddfd85867eed0166ad30664a6994b9ce2967b6524e9a6f8cb4660c61b54be8d02ff1bd961b40688059b32fd943183a893581097c5228029f9449f44991077c52a2011f1329052011b044e8f7000204801404c052ecdb404a3ed89704c9e7bd7a965c52ddac95c48a8a1a4a731bd243e125292d4a56205d87266484795a1325eb3c984a7277730e2bc61bc3ea9e377e22a34c1619677ddbf2537c6b95b22179f43cad27dd5ac56d19df8dcd38030d366ddca4d1a4c61a6c38b5e1c613d41b70bc8113871c73c4a1a30e3be4dc81471e1ff50414519491620a2acc5461c515589cc9420ba62db8e8028d1769be5003461862ac19830c2fc3a9e7e9dc44ad7ab35c7b0b091111ed3df898d3871f7fd001241041ea0c4248215286d8b98327cf21884c25a2c8228c34e288a6d94e8fdfe3f9f839dfc7fbf17f3c9d07e4037941bece0ff2847c212ff586bc9dbff3783ecf1ff288fcd427f28afc22cfc837f28efc236f4619679081c6186cd6b411c34d186980d1d4a9f1c51a69d8f0c2094d1b5db8c1c5d31650f60d2de0c8e2cd193858c471851c56cc51459c151d54d431851d52c829734714784091c7133357d7d22b2746e8166ad57ab5b22b2b4f680e9c0085e68009259020c50822540901840fa878d00107471b6890c1140cd2680e5c6081510552288832c6042eb3a255dcfee86b66449f31bfe4b3b98100d1d067efefb3a74766971b5d3795ceba7b6e733ae3dd9aaccf5ad776759d9eacaeb575d7b176abf57af9789be5ed95b63dfd826a725bb61432163ce37e7593ee8eee185ff515a3ec81b3c773f7ae73759dabebced432545b0521841cc7c1ae0b128b8a8bfba1c315494e781862e6903c7d602088931b23044963071af291a41f3a3b475d43c89de2c0ec31c1d099b549f61fc770230b2459c88aa8426aa9699d1635e9f0b36f2184ff025dd7f2cedd1d7adac27a5731bb61a544114f6b1f90b4e26cb7266dec48ce398feea638cb8dbffbd98f46973226112384078c719f73cee853645975b7e713514a29e39cd708a86d65cbb9279ed8752f74fe593ecce5c5827650b489bcd9da8e52ca39ac994698b4c513858651f60e2d9b28214f41a009f354041359f6ef673c4664495292100e1e0f0f481370f9417f54cad884316a77bce7aa3d2e61d09431e9ffd4390b8edd0911d107ed0d3b4db58c4750591c4ba732cb0b2f8330cfa96514512c5356bb98662c39284f9e5c79ef1d7bf5500d0909f591c78ece5293aa56da38b7b5156ef49b34cb7a6de6e43bc4714abfff198a932d1eb86bcffd29f84825d6e80fc6655bcef8f4950cb2dea953ad3ee7986ebe7190d6ca9b69f060cefd81f63e63fb7e0442829aff7b1dde3faf5ee38e18feab108f4ea03cd1ff940e0891a6bffc7fb9bbeee34bf810becba8d2a016f7e7ff70e23b4618f7b146fd73746bad26040bc837deed75fb8d313b318679dedfdde9a96d9d73d2cdc58d023b39732f292edf3e7ec2b9278560b02a7aad3718b54083d1051ac55eb77d1dbd70f1f6291a1bb20ed37d21a5b7c662547bcfbb52ea503630063b8d41a1715e5bd0e4c862090dfda2d0410fa73b3e08d2b41451781a6618f0c9c8554a2cb1e34a5f77f4536d6be16e99e09d13a36d557cc438f9d185d2cbcecb108da5e4ccc5b275c166df52cbbac109a5db17fe3a5dc21dbd2077ead8aff54d4405b651eb36848fa574776a218410ee9f95b1e12daf9443f1ee59c1bbf681fc22aa3d62e9d78a249baf4929e4cf8d521a5f32c28befedeadcf5524b698d4ea9763d36e1dd7b06d9095de16b7fd9473984123708fe88bb6bd800ac056c711d1cbefe1c73fdffad52a73d5ddbf0f7c4c92c9aeda2889b889269d1e36c1f369ab321183fdba2a121a25a29a518cf6ad1a5d5e975220917f92c22ab518a9ccc9c3cb1f9b621f5342b82aabe91a93190286b8c698ec034d77aef77da73bbadb5f67e312a299574532aa5d43c53efefb59ab693aca5b2ee5de9bd96ee59b54db5a9c9f7d71f9a75cd05e7ed1fbe4f7df7bdf7d679b1fdedf17d53068e30cfa34e49b8ad7d9e9bddec9090d0ccd90911dd9588d25aebbeb4decc4418d6888b456113b473de306738e7dd34c734be1c161c47c81b321891dd19aacc8b31de1873160a9422af47d16f7ebbf938f293ca1fbd0cc9203a0a07f0488b625473769abd0675b4fa925f96fbc8bf419d3318d86e0fdfb3c49dd633ef9c73a6f9ce1723d8317637f4af91658c65c6793ba9f6762fd571ec67fc4663fb868e5bc0911d65a1694214ea8d2baa567de39aa8512bcc3e5d6eceb97a1c65a27ef96ad4fb0fab3c18c6d80da8796fadd3eebd6dad18dfbaa9adf4cbf37aad7ce86a73ad6ae45a5dde694da33b8cda6f1969a4beeb50740af36a1084907a6cc5e0d02d77efe2d4a5261f56cba9f48ad5ea5c3d2fcf074912d88f12a0fdc500d85562ec4a6418fec8708425a13ef625c3b7c725c3b993e1ad25c39c6a25c35acbf04ac5c9706b93e12ecbb00bcb70cf95e1979561cf874e194e226518f6a304686bb2eff50424c300b028de9b765a03f0b91f4afaa033674eec733c7eee889223e7fb5c0e581c71e0c00920442e64ddae15699aa6699aa6699aa6b9467d224179a2d38cd9b58b4a76702f89ea5fb8f1b741da2b9a955cc7cbcf637962f609bf196594304218638c31c618638c317e9471c318638c70c718637ccd23fd82b3c681c30d370f7b8c6744795a33e5480e0956b040a22731d8e0cf507c6fee1edc444c3fbf800e7bf2244fe92761b22015a9ab754aab4346a7d10eff653e1392ba1bdb5d378c035561533533bdda872e4663e0f578409e78334e631f71c0616efcefe44a4e70e0f8f192a3c466e999949276ce1bdcb3c9831a39cf84a4bf7f52820e19ad858ffa2e8fb481d138e469f78d0178718688e84d2cace35b80a131b0447362b35af9f87cdf92255adc5a927eea54d98088714c45b2798ca31865f4f7eddbb76f8f55a840b9c718fda88afb7751a08ca640fdbfffaeb319b46264904b14757ab979b5a194526a29a5d6524aa9a59526415dae21953d2bfffff3dd3deaca5ff92f85282b57fedfca953825d4917e125e3a455981ba92c20b5051b8080aaa5265a0a22e8a62342b329a1519c160309851945991519422a3da791f058a8602068392596ee9cd19e7bbff7b9007799007f99cee73babb961fcc636c7b55666fd239e78c724e19259a3041f310366ca2b4d684d18893b98fe6769ffeff5f37840fdfebead114eda72031c7281b1d695149529c3881886c48834ce2a31d20347da47409a374207e98e8ff5bdb75ff926bb9017ad01195274173a0845fe20174b964ec27c2b8630caa104f160889fc15d09cc0686dba40c0818c39d4e2905025d72a556e28ad6818e36ba942db5b62f43f9140241a8210680834f9ede4a7fcd15cf3ebaa94beb5ac07ce0cef9028288d1f0428944e4f4a8b3c1a21246a29119160573e1f9c4e7990e152ae8316579c9922cd971e1cc9138010706c710698253977e60e4ae090859152d67a5318afd829c618d34da326ee71b5bad7d3510367b2a4a5a5bc7157a557ac5ac05012b6f6c3f9b6be9e0b6dae78e35bebf4aff142393086894a914c5c8a65cc44a68826aa896be22cb2899fd012576c451c291714c08ed9a1025ad03acf00b42f677bb46d6f9fedaa2dfcc6db1596155f9cf196378e119dbd291db483b86d3d44b4b73dfc1832e284a9d36cc60467b357e2b3a93a01768f64c901766c3b9e2c387ea47ed581ab2926a8bdb581a9d224d14e7a32b95a18682f59d2078679debd1b7f17ef8b31def462ba319e1e64404fb3eaf58712161a26a6d61a35aee69578df27634cc2917102916596962616668484363342429bd0d68a5074b6eeeb610da052513ec22425915112400095920002a8045075348f2a80a0d9cc9539cbd920b8202179178ee338cb59d7ea0e3744a723e2a7270b16a9d7162d53f56705c04b33f9f8bc720c42a560258abe702516cb7462b11ccbaf272ee6c8bebdc1be8f042d8e4f316afaa81c01017d5040401fd087613d5f92f84079f2244a9136db92bc365a910c090925817b0341a8bd2bdd40bbd60dd48344c6e123e1b4aad0747354489537253fb024486688b8e62d73aaf7e992941446b5ca9eac957becebb57faad2f1a4e0fc12134c4afaa88732890b93a102865e7b29365f735cb487023f5c9f975bd303a46b31f01a4eb7a15cb1d66b0fd68a69ee1efc05015f4c1450a080253e50863d270213f0c1298887fb609d2dcf794786610ea520d410ff93611389972fd2db6c0c8910bace375e0625bbc8ba7849926d215d9c8dcf20940c7a09a26e3dc154c66758402de635b1994861d87c37770f9e1b4467fa0de10c5916ed073d22b4d61e12dc710d4fd20f7f0b961752b0e27546aea11166c98bec8023c8c892a2e0f6bc6838e76631c5e4f72d33dacd48e959b98225a9ce8972b48598e292b3e0d662f5a57f08d61027249cff9ff0a8c172476a4ea152a8d44cdf380d0000b36500140e8a8402d22c0a621845a1a4ea01c4020b06188fe5c2613814a4310e82380662203100016300320086648666480109562652019c0262aca69f3d69ee6bbc68de8b4a6834f5bda0536a21a87c78e1e1d69a11391856f6aaeff4c78c6230c6fd93021bdf09e849407f5479ee7b20376aade24cc9d403cf8ef8155b3374965d8356f745d07dcf7626fd372f7afc482c0b3a99880d4190fe2d5cb835518a5b338eebb4c7ce9f93bbdf011f7ef4d5fcb5b558c56e6d4c24b0e09d9e42904a39c9925a603d5ebbdc48958a25c647528783cd05de913ddd97ed77bf44e22a209489233a70fe79bc6672ee3a38f0d7de2d1390fc2f39a2ef710dc2ab76d6c5b9978b566787ecfc13e45cb2d41d19c31d57c2b1aeb62c0bcd70ee590d8a316b81fa55670703559345c5207709c98b793c653ab2727f295d6d809b73d35ab2a1f83c2a1961cdebe119c35efd1ab521745d4c13c737642a56f0dcdebe749c8f0f7f1edb03fd6a0dbb1805a8ad3db6af8225931c52068b22ace4e81b8a2f7b7817561a6f33c65a1b0bceebaaab9c6b720c64193248a3bbb9c6b68d6d9bbdff429dec542c4bec6ea09617bd034efa41fd4c15006c9ecee30e6b5ab4b657aedb313a46e924919aed890f620c8e2bca3cc53ab684167608c2d091dee8d2e639a78917c10a293185ca1134047218d16c8c561859ae94c8bcca0310f3433f6fc16a64587972d14fae53b36a7d4a061d09ffff32458e4dd40881c1e7fb924f6d08d5db3279664600d8e81d6293123fc007d4e76ab67d7da8edd30e3e111c5bb021e62b6c848bb2d21f625c2109784ef3c315182bf16bbdde127abff668bbea90a52ad36c1d21e51190967e0374c90ea75e8f05770dbc14460ce64165690edc28b4f9929d14672aba7c81b0b01a6031ff9de35dfeee343faf2f32673912c6b7d55cd4257305fe6389f38f30d7ec38ceaf2dc48b97e276af719e2232801127423b4203974edfe78fedb467fa6a9c351d20d4191e443c2d10970f599b969f23635f5529fc05391637672f2d9e501a76511706ea2ce17938287efc4d1d1ea8bb920c2eff6e7cbd94b53d399b143e3f31cd4dc39678d4799a4cf2b5b6dea10ba059caf7af3199c6035a5170ccf5e26bdc9f512a4bd17bcf7a06ee71d8ef476237e76c78e1b562149aa31409168581419133aca4b86239990a4b49e9796026cd2d78727a14700730888f6ba9dcf7cfff25243956008a2da1b236803d9fe41bd9c93a721be8cf9c325113f2edf92d7eec521acec8a639b30e37b05ecaeb5384769eb019cd47026fc212f1ec1929d477a16b73ff22454c76a6a26356818cf47d64b9b1b5a87779b5b61469861bcd838ffa80c4103dbdc5f3603669da7c577074bc6566a216010f5ce45f3d28d7884cd609066661863a34588aff3e7e7eb072607d754dff760f782b8b959f961c31a79cd647eb8276a18f22a2deab6958d36efbf547633184e6c83e32b24bc1c49124aa83e45f2248c36ed0700aef557c41be55578ab99a852e993d105148e4a5ca562ae2faa10fb3d2a63b14b9a54f7d170c2764f263b36b4c7c1a998ac6493dacb3e870d1d311065efdc5081a76c91d8c59d06a15a91f182ea1fc8e7c08a574dcb036538b6921c50a977642b084abaab0f62533e9e1c500080b41363ee3bc48933157d6435d46961ae2fb97e438d89d7ffb6251395823295b53d63c57e1639c34d4cfbf4e9f88e84989e3c4e5ff51409143ea460bb76bde12cbc70c47c7aca44038a8a7d4d126a0e44eb3a86f09c6149a456dafef94971fd1e7ad22d98934bda1075594168859a9d6325d49bae3af45410c0f750dc0498139c1854cf58d355c0cc6d71c02c2c919a4ba4e08abbc64bd10a5ac97db30ebf6a443685c323f1211410beb4446f3eeaf94a155aec60c30cc9c94c3aab423f2dcc89a448d0919e8d3d790fe8058430c73fcc5a974fd6c39e97819ad91ed946aa5dc944c89c74fb383fa469dfd890c4b49cac23ae784abd76004a462e9c600c6a218cc567403210f040088b85a7022e5180c97b0b8424939e0bf9f3acdc3aebc9ce2a50879286927ae2869b94a853fbac6f85105ce56e2c884998291c2b0480f1f889ed3d06e4025f288bc3656087012d7787ec5c485ae0c78051f14b8f28a86780d6b6ab88f2aadba563b6820018a203a5c3ac01bdd1f84e638fd7c368646dec1e180023b2857f8f1eef2ed861ffb29e1c497a7f2430ca08178ee143cda7f5f0e0e06c6bfc9a077a11d38bad102cb2a352a3bf03e348c4849bccefdacfd767a02fd746edd962b054698da05c03f376d1e7bba33f2f306196a5c4ef13c996f7df606a7047d907284eee5c9d8d39f214f7fca8e1823f85a7697f4dbaf2e6b0a9d410c9a8b41d82f28d532d0505b4d0bde781fe69c99f687e32f9fd2fd73179d300accdc25bc718ab03077e581a741ea8704c5996a1a76f5b5b787c7871fd4f786f1aa49b80af29a1c0d180ffdccdddbc11c16c79d4419a3e821e92280e182baa1542c97c3559804239598ae10c178619fa9fc690a536fff0bda6749814f14d69d062e5a5aba7d1becf0e6dab937730a6c33e60689d174aeafce1ce18d6dcf2c44cfe6d5699d71071e63eaedcf7748a3f65b427fe3ddb502bc8576efd1232c41033e51c8ac89f4664ac3147d47a5a87bf4181d6280c6e779f1d35a9625b49a99bfc7474f24e3228919bdab41b663acfdf77664472e5710b14cb955cb14683d32dd9b2156dcb0d65488279bf898f5715c103f53e80ed8e7ee5ad534a71001dc778f0ee6d7eb187ea278d8a758face837aa3581eb63c6fc9d9a621f3ef4394e0c7c7fed9764b875f247240d3a4782bf344718b6203d36cb95834f9d86f6813f352508f2615dc2c0d4ac7291211f5d75aa33322cf703b85e0d88f3505b3733c838899f18befdf6e2f99a0e367826aeb1377f347f91b24866611fa0d82caa258887b0f9af6b44378e45776cbf3631f67ea8ba54aefbf2cefdd2811b1d3be5eea07aab999d0e6eacd824a15bd938aaf5082137af78e62fde4fa89d076721f573ee1cccd4ae6978a724f612923b266d2f4ab5c695308fb23b47513554dbdb916e2f7d4aa294c712db49e320472488a4a2616db8a5a93ecea4ef1c3d04c8fb2a14d43d7e776048f313813a7118b58616a76469a7dac9ac83c351b0a03b36dc005326363247d9d6fa2cfb501465ce6733587df1aec15500573fbcf984fc7bcd87d478dd1dc34aeb555a011e8b35a6502c44fe92f7269830e94fefafe49203fcc490fce284016ec1dd8112b8b3548f0f6a8d4b688408a41876562ac4977e78c01d91b99d262f1545a92d6a32039290d233318a2b4a424874a220414642c14fc38678019961ef8d4053b279dcc6310d394e0bf37f2a51b9a6d068fce17fdad2998d7b314973cded76c0587f11472078a205d999bacaf4db1dac0b044e8401db1d20e77d6b604e50e2d238397e2cb596e14441da715f79e5bd28188e5aca4801a634424810b3196f8f656809e811e2ee5b77b9ca40628df7aab43c0fe58fa63939dfc3d0b32df24161f875073592af7070394b8399a13ba0c5830b13c42a1be1a0fe76a99770b70d40c3a0a55ef2a635c37fb16fa6a965f7391070cf3546cab79f20d885287b9aec6a4575033b0bb9f87798ea127eb660a2461533a775fefb62b5dad36a5ecf9c9327e0199d12cd2ac80d9aa64a3d0eafea2a9a600c4189b022f7bbcea83c34ac0de79d48f1617508fe256a3a50ef7b952405997e0a6f8379e83dcb2debb9228a132bb76649fefc3feac62faf6371837016ea0dbbafdcb6afba681c776e09d078b359e364e5c0ef200ddec7f9aa34d90ca8630ae1dd35abd96848a26b3938f8c63a4fa50531e36af05967fe9c5b205487987b955c9d1dbfef26ebb0fa4d7798db06bb24faccddce8a2fa9c9746e4dd491ba809e81284655c88ec28e9f55b48b2c97490e33d6fee7b8e746b0ba9b41a3df6afb24a365131c8d033779eaedbf64c4c2161299be88fd3d5eab9d33eb70a000731e20faba2a3f0023bf821d58829f562989471c484e568f2d02b14aa633d8d1ea1b032d805fc15c812d604ca9cfa66c34f1e8ba5189ec6799948d57da0719ffc1a17baea41ee321cc12e13c5d8995a4c96df9f8e81e36e3622824846b2ae1916256750fc478e317b0703ac8bce6cddc675d5def67be062e1e9a1a0e7afba32cfcffc755e772eb51e96f76680d2350e7cf7229ec7026607a19685a8afdea251740a2db60fcc1ed5ae8724578a2b2683b738850e046760eda9b237f16b6694ceca64a37875081bb0293f11de045cfcdb77f19d5fe1fb1625ab811c44c98f5b77c07d5d59681c79df3a946789b7b78cd8e48256c0a2b7eda28bca7363ca965fae0d3e99f6626b4b5238804865cef95350caa4effce840c974aa47500ad7d7546b8c6d028c510b8b20e7795064a0b2832109a81d1e78dade63431805129af6ca7281e68ac643b7efd40e532e81eb554495bacc95213d4c83ef4d5d8f3eef858dd9feb890db24df97ad14e0391e17105a980a9396de2c2cf14cc869200d613bfe4dc0fd7d8ab6ad09cd9b13a5a3d2aeaca9e77f750a2b986a59ddd0f6b20322a2e0b847e1f34f9d881031f7718c8c57c6f97ac5dd2629babe361a22b1a606701163976d66270080bd1ccde734b8165f0f9119400f643b26af8e501534d924ebaef676ec3e5e72a4322f38d94bc6bd7a0338f20628e33c8bccefb29251e70c826d003ca6749e44695d34b4369e4bd44ce1e1dfe222f1daf6bc1eaaa23c9ef592c9504a34646de916b43e0e2eace48adfe0f7deaa697e29d3f87019492da2ecd7e43e50e8d9bf6049b36c02343d7364538e57d4ea8dfe05b1ce24fe58d9312a0aa0e36070742c228b4237f334914d8e348ace610f2dbe2577f525326f4c7b6b79e56c85919ca4d704274543482fc4c95d9e3e94df027aee6c31b59a808bdc816a7a4c3705f1bc6a04f8d80dc70683a4c5664fb0afbb02342c045393865fdbd4c776758e6ecf6092815eb425340bc2a2b78586c286f249e134eec378d4991ed083b66f0123d8a705cf8b2c88d3472b6e62bc315a21161d94d24faa069e1f552e0bb22b90f7585fb77c4c300cf024aba5bd82da333b7bd50e65aa49c5121d12a0a2b389c4c99b18ec1fa253064c4ea8fb333240d6299dfa5a350b5becb48481a2e85a7a3e10eb04b76bed77bc2d3366b2481a2e89378a27bb264beab1e0dec6624ef4d6849b0df03e0845243093583851b09918d778e6deb08f3219518b542ba80116d77b4e5fbaa926d8382dc98b832430a5e660e24a02d4c8b56561c75857ef612056b6c9bdad2e08ebcbdaeee58eb8c25d5085e772ec7e3034d828d59ffab8af49ccd3bc7361e59dc39577a633f0aab012a0ebd153d5d46f10c4a1591ceba32e374e78bdb4396112857f6988838961c41ca59a23008e0428d0b8463e2b54da0fa72445eec471f20327f9af03d4483d06af5e7297edc305b9059240672add51195e04c3eb3af81a062c3caea7ce385f3f17e5e26ae288006b050eacac93caa94b4c8ed12790dfaf8b10683001a1e9a47faccebe1eaeb831c960cda8b1a828425f4814eb9f65c616bf1f44dbccbed1a0ac0b240fd04f5325b4d6d7c05f685d678b2df7fb7d3b973efe85d3198c08f304f3f37c0732b7bdc578942704f510f42726cfb124432235f7334340b91f008609330a1ceb230cb4dc65904a37ea35f2ba3c625618ca742f125fa490509bc4e4e0ae2194865775c962c9d73fbbda1f0c6c827c1eb1e0664e62379718c2c5e373dec374a3cd72d9d1a0adc44918959faca223a0f45a4045131b2e09e7805f5082c5546c3c60a8c50e05d22da5162f43b0997811b44cfd8394e6140082ecf6d92583d5513347f1e05e7063e7426b3d32afa97f81203383eefb6550a6df2824f5398ec9ed9a45431cd0b91556355082859cd1c3849c33d2172c30ac3d4123347bd27de172149cf4a310f7c9e8cf8c4616d713bbd953442d52613fc6804e7f7cfb2e043980c8a28312fec9a0945b6de9a05096f57baccc1d7522ee3a2b153d1eb26085f2dd976650912862aae388df702c73e4ac98247f51cb28f5b2377d38dd2bf1550c3389690fd5c5aa94134c3f6e8a7901b376b84a012aaafd2da4202e6077ac026d5d5c5531408d1a0bbcda0b44a1cbbe9ee315793e7d446e861e5c2e8ee85b974f0a21fe0daf0016770cbc8eb81e05982186a2367c9284e4721b742663720e1fbe1df28107444040550192d307aeec2d4a0a560d519291477a702c3a087f1856ef5b62662ae9a0df7e2a171cfe7c7e6173cb9b487ebb278725851100f881432bec3d5929ef0e53562da5d1e6109c18ab9479c475010ef4a00020b63b236432bdf45724664d229bb6bd8460d1bbe1977b6950f9d28044fa5a73165354a6bb41e09b95d28daa1172104d5a9571770c33ce6e5abf1adfdc0abe0a64f760b649cc744e642b37fdca15f23423eed694194685a67fb677fc84ee0dfeb2e28d34a81b16f1849135b4530ac7d92f85a3b92a7d6bfbe84a3d0494ba09a26bc78012b4ae9f678dac414beec8f57a62b7c519a38398ca596cce23f9db345ee6eebf7f81d86d2c2292358cfef9ead4129861f07ddda9b731afff8eb978e011cfe501369012c76e7b9ebf5f39f1a6b40606f8965b69d9b4f749094fe8bc06cd9677ba7ef362b94baf1b9c561b7948f6ca22d15e19c79a04a3b0a254d1e841c2a8f5b611ec242954b5f6d53072338b56df27871622e47415193eec1b4c03803c81bf7a4559b6d7e881288ece14291e06643317aaa8cee2c17177ed0ed4faa5274e705724c2e2c464ea9ec776f0291418618a61b4ee5a795bcbdc6bcbc9f0ac10e2671011a250363374d23ca83f67c32bd28062c1cbe5e38c051fbea05d6901a20a7749c7d62a4f7fe0ab08fc5c0d596e329fc0a13e988617850fa39b343e67e285cc5b3c163f5a0e8488ad6f41f1df066157564a9d27035996fccc30affa4e1e071834859ac2dc28d56bf66db242c4393957f55cd4bb4b34192c396666b903b5d8d612e14e91772dda6e0445fbeb55fb1598c6582d4173574efd72800290fa367eb539f6f7007e0a401245a8aa00c5785aace83437017dc4c0df97d70425a6728e74c2160591069cbd5d81fc27ffab57fac973c97717919590ac625b2d77caee7034ecd693318ecb119372639c26e1cba8996808696b3ed72b54bb222fcd90ee3d7df7f31b605f68692cd0d07884d9e2bdf2e50884bd5f5388e41d998fbc810320bcdb4bd7c0781640314e3997fb255ef0d9b24804cced5b1863d936c52067a56691622343982a09aa09ed7901922663768626b2f3f4ca58b4f5f75cc1cee6ecb21443e38d6136b4e76298728ed42f24a0a6959e42520804920b4be3d5577a3320b24611455b5f90545b1fc3407bbb59b945ee4d8640e174de1991cc5a0065815220f2e29cbc170b6c9beb87c84d7a1608fae8adae1037438e6da0a0d99fdbddd55b1f12c0ad9cd5cb69dea8b3eb2c96eb2390b12043618847529e1cd21464bac4a6bfee08610bf41b43e17c3442a6049c288f2410022f1db11210904f3e420874ec23221d599e097eabdea418e8259360c2e9c0c027dcbbfb4b7f712151a2d12989b90898c9149d42957e2b353f53930733167350d1a5c8af9961cd57d86978d7e49834754f2b04b1faf406a04a183280df7e03d4203ae07d6c11c08fe10378737440bdc1d2800021e6107d95289e3fb46bef3c0964951fc3560b548a3b95d3ac001981c4c3d4838c8a295c254e69f861b346374b34d7f85238cd82612362bf78c672dc8502133a24dfc0b809851a3c355828205d94354f0abd2ce21da61b7981ccc735da41edd67d7fb519cbe01cfc21c0cdaa45ca9cbfe4b9876251912b1385e3741c26c9cb7bbe18a8c8c9ae4323c93bf391fb9323707c7829635c1ac23f42e224d7020de065f3ae5b165417693eff411b4817086de892a2a57b12a612e3c2ef71a2923162c165fd1bbfe1c07e3f60a6cf840502169cd45ac79c1e6324bbdbaf29e6b9ba38e7837293ec86c704fb4d4745c06f1c1479355d67d95f61d2a3d5805ff009f6b5f56813a7f079bf084b75cc01ec7dd78786ff91baeea558b4fa02a01e70a164fd42b66ada62c8ea19eb9abbc0a2ffe9e446edf79456747054d997eb11e84ab789791bdfad5dc1eb08a7f429a2650e02ccbdc9872c675dc8658ebeb7907eb74a0e4de7d4b241b1170b99d2f5966881b04c5c39d1a8eb52c0ae28d635767c8c899a36cf1004562df5bb069e0d12af6ce33f6efb851078304e8869d27029fc29bbff3ecb77f11d3a7dd528a76b5d6f8e6a986aa2e5aaa81fca10315a11081133bc217a98585874aa9fe6e2cf50c913e3c949dac8bdd7c10f2e1a6a5fd08032f879eb41b1b86bf120a25e591b9e8e4cd3f31ee0322f04f4ab80ff6389aee961ac410efb938b50836cf39aa0fec150d5230273c1775e69c6637d21a796ddfba7c292ece5a8c98297bccf7ddafe9f1b769b60403c3dd854baee7d87467c4c71b17ccb1830f2e19fcaf53585140c1ab6963d168a178f5a3bdd2a85c2e558fb2b0246dfc7067bbc89225bed85f1ce8ff9777d0cf21981c1f3771705c2eb87cd83db92c643133d302ae65f7077ce983b9012a4c18ca4754665b7a9394f209e96449bc2d0f537ccdea9274941a21d2ccbf8ae734853a72634998f38c128f1ac085b2ef9c12ca5cdb88cfd85a0f229a3fed01620e020327b5d2688cbd49c50d72b728680237b24282d9879e0089794d8ab199eccd0ed746ba4907d70a8dac4b59c61fc3f42a6c99b66c1dd4580284bb62c3343d7c4ac32c058d3ef89e1f1792297323a41819f41990556a545c8d9151649da9f315d41240b9db82af274b814d5c1a4c3681adacbbc7702b5c09ecea0bc24816aa7e9ca28084df5ddc443d67408b34426981e00ff94d373433998b425ae35dc9561fac9d8ee0eccc863ec3ed88e39b234eda21a5245db379f3847d0903422e021ef0c032d1aebc1720bca1735b3d85b7abfc3c613d000badfc1760d6dff6eb66248df405013a827cfce23357f164203e32621036d7661498ec8129d726663c9ab90ab81e29ab7b0fd16b79500c446e1fac44b559a23800305f3c22db72c6995b3bf9772838ef64c10b3f77ec498537645a20e445270c81d767eef77e881271f2eed316737d11b19538cac064986fdc1864488d270b67cdb9631d9914866f81c19c04b373c043ee8a319346e2bb0cdb8638faed1e87824cff8cc35b6d2118c29065c264e6ac21631f57c4eb1f7f65859f15dcc956698c436bc22b80e8a7c20af808eb31f822a602ef9e416d895287d468b83993908219332d260e45393a1c792a6d20371bd46dfe8e5beb540af450795626d2a2983ee07ad69080de0bde05ed411677365d7dc2b6ef4d564c369ef292cfc8bda8922f18fb2ea84d74d98627d28710fd0ef394c00a89784e2e573893fc8a930a109b6453ac4eddee02d341af4464ebcdf61e2cf032751d8175e0f941b54dc982f245ca97a2878b446b7161be466916a4395cc55ffddbb7cfee2309595d3f352c7a19b4092c5211878543a8a58901c883d416d68b4bb99bc8984a3841c86ed6d93c84fafbffd84d0b0d83c26503ec6882c819322085cdb64c0addc7cead5331021a9f1d979cc80010d1b3e809c3f3db65d3214e93ef8e02ad6f01636874bc1c6ce45057ccb60c44c00d726472fe8266dc98560ee13d7d8c297bceed0e92f9e6208ad001b86ec15d41435f99f581ee290e1433f71467aebb1e95b6efd6b8746fd1cdae3ae23cbbed577582a87beca1000623539dc7f091c1d781d7d1f2c6e822bcc56bd55d68c0496427649816d7b7c3187bdc953b0c52cf6162f8da79b4d00a23503e1b8033b5fdf02ae8576a65046728c9f015ea1315d46f70f026f1f9f30a9868e280cb0a2509a90c03c68beb56bee33620caedac861be33e0fc3c71f1a92a76455a20e0850c7eaa53021f89799fdcf34f093892afb9444886e03a81a1bf86c407639a0c7fd70f78b9417e84d8fdca6a2faeb8682d8e9b204330d3121e4333f22345a04763a9d54e04b3951439f1699ad676b9230adfb9cc03e01528180ca2b8dc7eee63b701b5a572c4bac532f341aea5de3231b3122f45ad45ec0bbd88bdbe6e78f7d5d4f371606522f4422557371bfada77a62d5dccd130aeab931f44fe20c588ae5a74a0d973aa758a4a55e439f3b9eb7f3e52fb1aad2e2f367492e3c3d7838b0a467eabb42094fe6f5cc44fd7a5313b98dea2fc40a2babe7362f961948eece1bfa45fae6b08b26059595b071793d38a25616f6b949aa099e6d6b0086f5162aabc2f595f55898d1a80d75fec3ab84e5b1693bb1353cf0e714c6a107abc34209b61039ad62f65743f06de4ad731db24d5abf30f83bc316ce71f3cbdd20d5257b54d6a19f7e5b50d63de41b08d40f9dd64e39edae69d27d0e30fe82945a08fc1c0aba4d29960533b16314c40795d825612cb205c13e716bd20f9e7c8324c4fba912dc7e47554a3e35303ac29d77fe050653d42e49d572a138aa7ed5e6b56ca5c94a2f18638c8b6190a1b88803755d6acf3ca5f1cc43412eb7c7153fc8205beab9f27ebaf01847e101c80166bc11b9d64cb7d61b3d6d44e52bbee36a6b4c62a73f7f088ec3801dca7289a8435d3cf450864a75d9d6ceb62a06786144595a903fd1b6178952b23e103aa18c055c518eef5475aaa74e6906a0c2d7c5a4c0abbd189deb3962191e90e33c91cea26947adfe61871c5b352c96997088083e1b3e999900234881ae246fe5210975ca40f5233d9bb4b294619335d02ec024c587a371ea17b3f300d92384f83f529dc41c4db5905504c01cc1284e26ee6e43b038164332491d15030058592e2eafbc212140030b07ffdbf8d785f1ae3ab55ee94302db5958a8ce79f78d4096fa34420b549acecfc4722ba9e3d77e47c4f6673688477846f82750a1738c130c3259a3f018a558e7972b07a5c40cd890a5dcd9a4e4325bd5a6aa2fdfa11b767758779dfe9fb5c17e2fd6bf0f6dc08f450de41ee077d76ee9f7b9d7c44fb2804126f481be25c91c5f0ca33479290df30c538d3c1984c4b25659d801651b0207c6087a497dc416574b2097db56e025f84dc0db240ad26c49bcbe12fa378d93057e9ea0d582282288c2b4fdd5f1c6e945b02fb0a96d58dcd1f6d6147222c82f568183ab11202a188061ce8cd19cfea101cd9c9eb4684bc1d2a7b4dee3052092b780fa7f321821e8c1975f224e62b8688b2614bd34a015916e4c0434c4f6e33497c6b0a30ba3a720b827d624411b85f4f460d2a5e6fa9b3eab79917ad1f623bf045282555fc3284d74edbb68c648a3c9ff83448486be2f4b31cbd857d15c43f740551bf3934de8b694476e3a9db6822251329b0d21ef10b41986bd8928a4edd4421f3194da2c4a407a06345f452e42808e21f979d71962da5319c2b919c6d1f1cbc5730c308a675fdc9ce2c476d47b0c5a0eb828dab48ab093353dfe2932745d32a5f9bfadd84e7941cf378543f88a5944e33aa3c5d169b33053b14095f8331bee7d25424b13406810c110785706c1b219c23e352cd850039b0978baa893996988a8fe4cd96638321523dbc24c5ca8225aa04331f2b5a1460e8c9875a04c5a677f63cbe993a5b04d8621ec085fe4e09c57686bfcfffcca1a41e7848883600cd67f11f14604dfd6a3751e5d2d3cadc238899173bfdba66a00673003a79f6023c5608744c04eed4a3aee86d0d226a4e481e3ef78468d131798a89aceb10042f715353fc45e38588a61e31e688852dbbb7ac9365732515c8605cb3a3de74896227628111533be631f17ff97306dcada53664cdb3d9b82afdcc82d36427c83b6aef7b9e97f5684f54e4598e338fc9f13f2c5ffe665bbd2d5c6366a03228dfcbdd62286523bd0de0d6e3c4935305b467aaa4b0b034222828180982c1074f78c493bef668e388a0c0c0e61975e4d037f0d6908b906f354d7f4ebdc2e547c5537b8624e6b8564700851e1004ca19484d595193a3cbfa68aa32f45387c21c68f1802e3a3d7a37f6bb7f29ee42e9ddbc272884a265080961ec18c194b2f9befa7c0c56718866a57f90d92abc5abef19aecf9a4ae72492dc0be169979ef163c1b14d8330c7f7a36bc8889f7a011524ee84890cb973ae3d0497ec74b8681f93c4aca7cafdd804815c842ce62fd12a52ab23c9bf02470755a765af214b28162693affbfe8fb8dfa23612d94141a8c6da06bd34de438da0652957c3414b1846f74bc1960b1b4cc066892e9c0f79ed7c301f02da3cb850d1ba635a9fe3b045ff28edd56d411180c7a59ec013f683805a495ae785c386f89e28dc5552ce6130b4fe63a5c5cfb87777f0040f8032e269c070d71510ef1e8dcddbaf42f77fc24eb2508eaecfe14ca635df81cd57651c65d8bf842e064bb55c8189a82548687cf4b079e3cdff5d064a8aca8a7006316f737f0033f40c310b44569005e9b7fdebaf8828dc748dee63d28738e11c8359ca27834896a538a82dd553cbc7fab14194df46121941642ba0496f26e97d5f7db7315432d83d6335bee1f5f34869eac3cc7156861a1664b94d3300910c1e336f8d264bfe865b6fad509e6a523f9eddc5d3ab5d58b7d59f9a8a92d2a16a77cef93318a6437a13d7beaa61a17550f9555a5ab66a01bd856bf1b647c78d576383027ce7ab5819c452b556e6d0b56fe6aead038b5173bc249c1c440793e961e2d6904b8e23163875818e2512556393db98b713fb749322e3bc98a5eb6a186bf18c52e92e6cd1937390e9e009f0371ffd9a351cc76381dd89206cb2fff0241ca3f4670411e40d0d1cfe581bb5ccfd5fd090c6fbbabe5b02ee36d97ed6a400faac10d5bd7aec9db0eacb66d24cadb369779ef046ddbc098b78db879db164f617124b6edeae76d378bdef6409b48769a6f5bdcf4b615a9b70d39f2723cc7e615311586c2e358c8a883d68fa6c9aac431d2c5fd4714045cd011284e098270467178f332ff50c411132a8762e78725dedff5e8fd297721cd8fea3d744e1cc12eb1bf775a6fdce3ba59f55059cedbcf23e6ff44783a5a6f3c65499519b6cfc5b4fa0bd8b9249a5d529c361d81946f2fc03e323ffe8f4bd4766f12c46ed7d1a6f9f299f4e3bd1f6f9962a8106d0581e424dad88a80e436b0b39101c965646723029298c8ce46042431919d8d084862223b1b1190c444763622208989ec6c44401213d9d988802426b2b31101494c6467231a903f89c168fdbdfe53714336ddf6296e8a4986a99192312d17ebad0005158780b69a9329735d94b5e71043a516e2d411a4f79c840cd115b3d243ae1f416bfa680bd0206c62094087b0597f9080c9b930f395b2f4205239c4a0ab29c1c9470d614e1efa5f0acb4af86575fcb13afe581d3f4ccae66d4e68ad32ae424744d127115df3dfacfb41ae4604c4fa160d4f4e3a03e0726810b6c195ee874a4fbef055815d81f230a800e1a2a77b7b08a368ffd4d0cfdbc22fbf02bf824fb92edafe5c678b26610ea55e80eb2380740c812e751d9d5ab00257c70529d7cac1b99be1a8f1672b543e70098e06d9b4a3e3dd1ff0506ce4c63b2c0fc2bcc3b262f7f7636af753e907f458282d85e2f63abac69724908330786c5907a043567d2c6991a3799dee52079f179993e02635a3df3a6cf23f9d49d392404381b8d74d7db5b71a11b5c31c3cce1dccd1b9f69f088c14f91a27ca7d0c31d9d20e50c2d730644dfba4a326e62a627ada8b8c90d8c82f00bc98dc8b84cdf1a9a6d2221870acf951ff4cd24033b128b3583e67a00aeb05fa919150e091d83fae8561361d5bc230a47701b882dad34d3cac5937ea6c671ff284342d5dea48088a7db578be3969464f9162abd91242b7d4ecf2554cdf52d450e13fd540be0dba81fd6391e19d8cd8d2713a6a1a922d8134a9c0aa709302e0fe8dbeb6f8b0e68f3c38e60b4ad605072b5fd07cf8a5edce6c9046fd8f7a321fc32951639f7175f0f844aabedc20a2bae75ead0f9f8655c2122254ff18e2645a9be25075a4ea63555e29bd86b528690ca477976648d1b2a621b97b698d54f15ee4353962be1dc93c3cc9c58abfb7eb28837fca24d61e3cef4e1e549fc9751694982f9899c555e0a315306ac2970a715e0f26688f759af9ab66d80563a06065c86f445abe93fe3fa2e16ec7f1c8082ece3014f729ebab76d483e402cfe859afd835b20235a938c6435de30029478ef2b3f634c026305818dfbb78b503923273e8cfe2feb365a8e5edc671e0442517dd08f39e097ed0be09cc9ba920dac0f0dcd6fb0f5c9403cbb9d10b283d69236c2c74e772b072c25a8d10a21958046f018959dea810f81b68c427849882da5f9c59984165a7871512e51c7eead9c729d8b376a36e25b515ec5909bc7854d087043f41c2b9b78672e4ff10593392bbd3f2d6ba14e44fc0f7a47c29c3824d5a9b147a552a3af0218bcee3da4f12f2ff6175089e57210a4b694c1b97a1d6796a72a83401969106bcbc97130e9f7746ef770b5c23129e02b6b1251c4c5dd7b02fa4817f0973cbfac7e40ca38ea053ebfafdab7ad84ead9e13ce88d65fe02aafb6dc38a67db7ec79a0fb7c38787eb0c7295dee626c25f256cc530e60a0078f5aad17bf8e6b12964915bea51fca44d67db7329617de9cf3f6265c251b5e9a90e893680b91c8480bce86e7e2accb08b0b18f9a211dd7a84c6a9c479402daa4c637f84684f21585a946eb6189a5394d8b421d839b7bbf8b0489789b15022cb8f3e119f8905dd2359d424d1177588fd0308060a160306299dae58f5ca64b704274e03d79ad60cfd82be50b1e65e897f3d626b34ab5bb3293bacea4a1bc48d4589dc93c5c69301c465b28e23580032a0cbcff472d9a7e900623f216d3e52f45461644a22a12de18d3a1ea4ae5844af8a60a2e69b293f9d965ac18f5ad6704b7a69665c3419b0509c2f2c393abfd1a25f9dd89b4a8a3339a853dd90c0b1f34ec6dc517de6e865f2b49989bf6c8b692e603c35ea57d828a4d33cb811f1dea275b2f1df996506f602122d64e2e552256a9afbf14e3db7295251876e36654579fbc700f11af6769799dd16c539c772befbb14fbf48bfdef969311f2f8b34fa4c105a16f8f80764b789cd739e509af2e965f1a4c9ef54b2e90e694fee19f61e2712ebd47a329eb97157e68fe05d93440eb3cb1001abe5b7b14c09545cc9e0bbd382df3400f2dffe37782078a95af75235a378f576d63304909acda4bad8e48cb511e6c709e5953322ab038b3071952023f73b5e63eb0feb2323ede9cc231a872fd4ca1ce881e4a74573e7d2e420a6a373d657b828d52beb4c075e9d2c6702e8aafa30fe63164ca5868b3c826e8570565c62e6fd5c1437358495d4f49a6ad6fa6a2dbb236b83594d82c44d188e4fd9f1273b0eb20bba9a7cd5fa9122fcca905ad9cb56cce1460a75011356c1007ca4d1d7a75ace6ac31b999e8629c3fd7cff77631d50e461fe07eccf2418a42de98a88355f8937885860cf76b8339ea6b97c36aa8afb7aa10d37ed380c5bc6da7c9a68504568c2dfe16cbf36e30fa03a8c9745ddc205ee62df8102eb60ace63b858f8be56549a253e3819f03ecd28ae2e1940574ce8e7dbcc3bc65edbc6af566d5609499f013e2f02bc00592eb6587c89f41ab5e1b52c01a5199924c05aba69bca7c4d9d3515189cba88e644d342f4bf399512fd78fa196250ff6529509fa840b3ac8f723200315da785ef99a7e36cd4796d9897073a6775f7c33fa810ca1fffeec4561cb604655a2ae5a841fe5c9a9a226cfa8dbf47276f70a49c5f18a93575d13b5bd72a6c85bbb7d83a28df556c1775bd440c9ad4c423f1d75e1d465d641dda88bd04d72cd3a97577c10fcf6177eccf0a74e5aa151f26c83a521ea6cfa91162eb8b905c1ddaacc604e535544b94e0a114e8b1928bb15eb53de9eb6deb8f9648ede71632b6d298ecf956a441567b19f8a1d2ec5b46397c86160f2001952532c7c0ecc27927968c2c4c089d325ac97777d2b420405e2fb79a7aff9910b48e2b8979ae574d2bca2e4aa4fcb52275e2d7c99215cc3469075edcd6c70ff09a5f1b010f43f678eb09082d2d76f5407e3c5801d43d86fa86cd966cb81dc5b754a586f278543f6205e40326a8654aa6d2c58324261b9f83979954af6d9caec2fcd384df4a5108e79e615196da16c50a21893ef06fd17a7d9f42d35c053a92cee5b66d9e28663677537c49b226d0abd5651d3d6a50e40e13fdaa83e3a3d31149b3845734a526e3a4b04237965b63c796b5652c69d942337478824f78f29d21ec85c92576df4713be772a9ba66ad8342ece27a16146e5755d2bfca4b9a1f0672b39825ab7388add38868eae1b5140f9032634284f3389bca89c536a4dbe8f9fb083b74b963836d52fe21c12205fb70e5349893e2b0ba809ba6d63e873e6f5845bf105637d6b7183cc4704e4da0613a1204a780b3d2d1dd415dfa47a4946d7f0f80c7ca9b4fe7bddad60f20bcf0ffd0c639a2c33e6fef717e4440e3a3f0571480091b9c8b5991e4b9a521dfe5c0e63e1ec647078784a7bc7ef6d0eed16742b7aa5287c84f2f2556428b24a8a35e726cd24192b2593531708b5d164f90eb81523f6173de8da93193a4fc10a55efbc06b4f6fe93f6c398724876f80e198228e2bc58fe2b47e9496564c0e21406e1f2aff9143dc263db0d7bdfad8ce149ddbfa74969d40caf1936caeb07c11bf853076fba2573084a8f63e15c3d4e5b2cf2f76ffdcf0b0e14dc9745dd367df6a326d3f7663b8476c221e9ff7d89a8bfa534e1f7ee6f178a0860710d7fe6b8925bb8928f51fcd8ef956c4bac165dfbf2dfdf250297a2935c5f5141e7e2e599cf6e533544e0eb1521288c6735794f6a48955c1fc4a144c3366477be8c0f4a23faf9415dd7cd13e835a95481a87c05eaa9d01a416ed5f7ca4ec992c97e4f8ab806048117aecad58df9835c3e8594a81c088cda1a88ac8a3dc5b530c56e100129a99c08a92c8313b402ce6919d16d1f087e904bb3f97557be92fb030a11f09780c3c574b14a9369e4857a415e2039274b4acde826193ccdcb9dd6ca92d9c8901fb184034f08b4082abd346348e5990eb9a45ce51608144a1965307ec76fdd2c3fa04b252bdd9517244f1ce724b43ebbc925924d564c868e6367a385b79f4bfec52c2d5748139fe8c06691c2602c01334d85d6817615646e39707b42fb421f550f61a3b3bdeef91c07e62507e9b57f3b06cf25fcc326e10b22adc9ade5837bfee9a5def9c497571dfa5da52629627551ae780f8ecbf5c63eea9f69bbf683f4384321aba4b7054942e9f901be4d42a849c26b3c9604462e0361fdaf9cb66cd58f0425566441b7ed2958f4420a9715f2a94de671b3f34d9d79adb72b1958b3ff0e0afb7346a7d077de3545bc0d74f48bc4e14cd2a241ed073eaef6e5cf2970473dc76d1681e080e2db925c2030c694db42206aeac905a35777725d4c5e6ed7a65bfd5b092519881886b5378f6220769f3ac343fa06bf97392e46d00a5b5736ee630ccee42859d5d4bc47bf0ddf56d132f33d533b7b7a59a13edc8a2bc2230785aef22f8e7ee8cc630ebfe273d1375e95860d27b13cdde976223e288744d84ca291e5ad270ede6602c6d52cc60ffaa8bc4beea0e6baf7a6a9257bdd3db550b7427b55aa75baa71ba2e50393ec1e0c110820de1410fb7ac41608261144d518142f6c2d0ab40a56ca6e809312bf0a22846adec6007472836850bbcdc6a6c82210647de9bc05978b5a4e64507db158462388969ff96525a54feff9784a2cc4575175e7dea60a250b2d48b575d2d6cdebcffe8a5a3222ddd7a2dc4c4da6db77c6626c85e60d1c4a94ece294f70a9d64dd404d451534e488f970d8d45436729851292801e8221cc081e701084608bf02c6ce4e8a133df96c1e71b15a432e750a35e4110adc064a3f1ec10b67bdab8a78b779a78a599739a39a799739a39a799739a39a799739a39a799739ad1f51665de370040ce88123842c62891234188c410c0132482418e223c15cf62338f341adcc59a18da6995f56db376ef06f9581a4702da50bdb8d9c486f0a097330c84e79e268c2af9f604a243572fe3300edd4589270e60802d69b04fd0b7459f93c106482be3ed3574fb9964e885d9bf45bfaf872de8585d159d25d74c395f9defe46abeba004b5cef1bbab8b41c1971994ea897b62e9282cb83ec7f4b75007c3edc51de721488ddb290746e691d29dcf291d2b6540eaab6dcc97cb6f40f215b5692842ded47f65a3e52b796ea5d485dcd7855cb3b4de37f5a7e81322d679293969623182d1fa9434bf3c18096a9c514b3096782ced280fb7eb37c6fba062b6a041a441958293d87812528d5bac07a736728ddb6898b08e771060de12c722674695a382aff6745a0f6090649b01db73800c06065acd2a0ecaeae28c8770836f03c6ba77710d379c2ed288335a1b99df4e2a0b936a12f34e4b4ae9fd1090abd974461826e2dd744213763fb1b55384cb4ebdd2d30b094bbeeafe594aa426c6d18150daf43d430c222bee2a2001b7b4442de540af6762d1b3acfdb3c7b56d7619e907dcbad64d5d61bf0f368929457e706dd17f6d03a630c416586156ade2805c53b86aa45d9b034cbc01d7881fc8ad12ff013cca57c5c1563bab690d69b5f957e1f24b1a519d5e2a971f53ede41758217d22de052cf3f4ff8374068db0b34eb7ad116336efe9a2ccd52cbeded22b53245fa04e20eca63b86c4cff07ad251a0a85f6cba5ec24420bac3fb3afcd15dcc5e54842e122b51a4c2a98ae0615c954199470f8cf8eb0b267253f7db6e5eeca6d0adfbde16a62c1d3790e2c730687988936272838f71896fb034916bd35c541bec65593e6051937fb8cd52987f7a0b2170dd0bba81b9ba9082166afab0a28974eb11dc73f2534d1ff280c27aa09e23499eedd9183ce7f3d892fb511c53cc6ca8b06ffb5de9cd4b18c2330b05e0a747d50750518eca488392cf01f77ebd101cebb016bdb20c12020ba2407a141ef9106a3704c927382e1095112803a5c25b016cac6ede544ebef4b716ddd3789825a2c9dd6c4cf13e6919ede52534234dc28277ba43e1b7ab2892ee532d93bc4417a9c15209c3b51b509c4cc56e8932fb471c4001a3cce903ac33c89493e2af2231d949303654af1dd15c487349814726d87266c93d90f11025688da575e75c80756a1aabd0bee7c7fa6f62d9804e28c9f46a5d5efaf357ea02fb5fa30cd12f1ac40cbc872b02c0c9aedd48315fc5cfefc652e15bd373d4c8d7e6b6854f02845262e512c9640278bc2882410950bcb78f4899e1894ab68644b204f7fbee3e005b26073c197afd2b496d4f52cf6355260b77f7b42e5395455afdaf0fcdc875894a650f5a0e98170e418a8407e331c78ed82ca73bd28f282b938cf6b247bb2b91d66b32668adc42953185914a69a9e825a3b9d0cd93612680433ce41b2c9afb8f35decc6b4718f73a28f2c1da9d8300110bae46b6d1175c6cf7283722da1d837716091c508650d5aa97d2d5e4628ad51e56d192c39b04cc2489b2a7bdd196b13e4c1823a8a1f48373e51276572373f7950a47b958f6a711ed420ae4f08febc4c2211db228aabecf799c076e1701e7855236ed31c7d78ed4dfb9c8ac2968842815f668c9b3c8f8a6b6a94b77b63bdaa61f2872a8e1c8aa3dd74e3eb89ea26e34e69453ff4cab97d5940039f4cfea41189753f12ac6c26e08dd798a9505e9c64e8bc8c97778c74a93937b9361e1497ac059114dd46e9d46b4758b40de8bf83933d4e13b91d833ac73df770adacac9884eac02936801cf80f5cc646974c2cf7b8ee523febd8e49db39b5cb6d19ec6745b74d5cd06bc1199c7414788daa6d55c388b5d103d00d969b9fee0b8ff9b402257755622e4d047c9f0c1e39e4d24bbfbc58f5cb73beaa88782e86ab74abffae72e4ec0c44f8a3fd65ce5c7169c222a11d0bc0639a9728e6ef0f8a06f83e78f9e9c1e115e5fbf46a6fae9b74baf38b45eb76e6ccf9f3f42851b2bfa995bad5d24178a88cd91ba2a8f4fa69d7983323d2fe1c37ac52370ff27b26705f978fd10bf54abc1e13fa57faee22a5e0e9ed4e57f607ddb9737384d0fb0ceef54a691f1f4ee1c53ce204ec3b71810377f9769f9ae60ff549be3738f607a2b2129399fdec38afb51c5e08838b08c14af5fc19434ba21be467d007cc85cf6e659b1fe0cf991a5c5318578b64053ffe6be54761bc1568c4cd2b5b066177e15dcb25f8c370595361102127a0950333dcbd3ad8e3567f89ffbb76be1963b8bc51c79f07413721e4a5e316eb9430de242e054acc1ac7c0be304719dfc191bba86b850ca1bdc55696fd1d9f763acdbbe28f56b3e19692998241001feefcc427864e05eb00db5b2986fc3d75d1d0c2059414fdeda0b36452d7a64dc937b824cca41361aa895f5f36c8879ec41e3a8f4cd3a6a1e1a006fd961443fad826f3719de3112c77a3854764fa7d619dfa7b53c756d52b6cdacf311299d38438075d36488a4a220e6869648299db76075536a5403e8d8e974184c7d39dbef2bf4fd77ef71c3dce5428ace4e94117f01ace29a69386200d8c67909c774e191c0f5064be1434bdda08050717aaa4cc526a5a96b72fdb335de9df80b031f6078697d24a394f9ae13918c476173701a722c96b8a4dd542f6298572ec9d476332dfdf667f901a4b271a3df45c08c32bca4732fe3ad2c10ff0ee5fe1a77a8a246e1017c2b8b2a74691236536d5a65657cd635787ade2614f3f927d58467d606e1f219a5a4b5af0f5a4cc3c97b1ca667340cedfe784a20598106de891e9e981c9523710fce9859f2c4e2011824edbd925e94aaa1697267fc213c4c4e1a8823990ef0471a50d134f998afd4e893b5041a846f1bf57e5862c851f8ec530d8c9d36866ce2a456cdcb1b0108fc3c8a5eafd2a587070fd850488c835510481c5bc3bcd2f9a935ffc0d5fd5b9dff6ae5fe20361c051070863e6cdb73ec1758fc4437811e8bd70451ea1805391b9419206814c4d85bb04c16e4acee6f4a61061a2b3f59ff716d59055d62ebe0607e96509f8d4464254fd21d8234b17f69a2e250e6fdb8dcb153cdf142cfbf47b91929b15777280930ec6be2be1cd9a67f9182d5860218ec41d9f6a58118268ca34ebacbf941f379b6a888edaf81ce9de505c068a2077597ea23720ec554d93b3d10272a1ac2f65eaada76336ef9e33c343af28c6c61d169a0c128add2c0def2bb2964557b82f619c4cea40f052c90195c18f7cc956b244e97e4bc6f10cfcc3f1259807a80fa6a2e05ca881dd35f69d1c9b6da293b1a73c26d78196dd1e39897202bf0bb506f6270c62f1584dfb001a9a77545a38661d469c7e04ae6732c36ef2d8a9f473c042509a9a88d3bdf71bf877a658344289bd64f773d80cc2e13e4acb8ce3f962875df6b0eea20e1127d1ee85140db943e5e8a78975c8dabb3fee5b0113559a58eb8801481b05c5e31dcd43138e955f4160d9074661d4a9165022e12d4f76f5a44cebf4b967023f808079732caea8d529059b541daf2c34006d1f6b2481fa0312f043df266754de7b109d8fed52bfc58f726639d83fb3216c551e7ee35122b3415400e06a9d4d41c925b1f667cb1ebc1ef0d9ff5190ac35b313af60f3c86319efe65e01cbdfe1f155a4c68a9563f4b8c71a2392c53005eac306b2bc464789b45c71cf5a85b3235b6778f0932a1d2910460d0012bf567a61df4828cfef8dd2465d4b0da3fc4550f6a20670c3e10d26b4c97e1b13a63667a94bc89d97a43e059bd2e1d9b36556b93f30097aed4cb1e2b6c160974ef803f1a65740137a0cd4246f76f98943a2870b7579e3b17df879aaa513165aa924277db88aa91e8487ce20916840b94c0dc9dee13a3f7912f4977eedfb2633518652d77eb484a89d997cc116c3929697f5c0dc86418f521eb056e64a6b01ef84e1c4d6c60b7f8870e97bd40178fbb388c29d7393fa1b1f79f2d2edad092b7d85d68a4be9e2fbce911da640211b2949f664379d10ba367dc572d01e108a1b8d19baea3ae81a38dfc6589295cf60c5be22109d77633b791e30c24d58528381f15bdba2eeb304beba2c114fa90c8886d7a2b9a1ba3dbb2c2c9be9eb8c5798efffaba596ee9fbf5807092ffb17acffd48b0d3a1676789a6879e80fda21ecdc2138571b4affcec48b4d5659524a23c6273d90d190278707bb812a084acd2dc05579cdee96556b3c5697762ef06eb02e27cae7c194fbcd37f1d21c47383efa42e18f59356452510c8df1b926f232e7b977418ed1f30792898c27c232a29e7cd9e8cd781ef12ee636ff98f6b56c323b8c59394a818855c9b4fd525cf564b69092893e91af83dd476c0fe72692261ae4c1c0f9f63878bc8d412155557419c2d81a6ce68ebdc09b992c57b784b7ee4165ece1903f4528378cadfeb0cdcd8e2e84727e90e5fa252952c15a0aeb795329a3486be761b1bc696b64f9e88ca06c04943fd4bbe6f82f8836c5d1043ce681d4db0db2d71ec1803a01995a89d0b4da0c7b9bbb695f3febadec62fe1b840fea6d2f3e4f253a249382e39604ba41db13f51ab3643334ce8bb0dff72dec92b1fb6a701082f375b52fef97fe8c57bfde9e0a1b64921f21f03de532aff147475f89c5b60d8084af54b29dd5060cadf9c789aee89d74c8ba7e216486ffe8f3e05261fa3c85b699e4eaa966aa67ac67c2c8d8a9d00e6f6b8a66dfa1724ed78b73260b6fd35fd71c5f772e3f18eed97b0094b9517eeab35da66489d103d615fbb8afe3fd99c746369905437c56dd05486c9de9bd68dd8d629e73ce552f333591e635823148cdba06dd6adfd58a84a6f6de099703016c59cbf7bfca7cf08cfa0390ab1c4df5b528f306429d55e34fd3d742804ac2932496dac7d3764918326dad1e647a12d239d795aa781f88bfa0f7affcbc2a4a6ec598be7d53687b5fb50f04a8d0673f0d7a67b3f0fcb99d92432e13730258ecb01bd71bb812af5ecd8924ac4a90f74199433546eb459174fc14017becb6cc4de72abf1659db4acf27ce5ce764cd95ce46a2f8d0a1a029ea5087bc72038617cc3ca920ddc8bbde9b5b61c5c97e7dbe4a74ce94cbf59745efcc2bd12e9ffed5ba81c22a2dd09f9e4ca14951084446ba377bec30351856b8479ce8391a116e4f28c263be482dd552622923ae95aac23a5f4d760dff6f8528a234339d5f94547ebd07f84bc5c0c5d526419cb5ce35460411091d8f35312679d549afec4f1ad90168f200a8d4f030ec50e08cb1c7ec2f7bcf0bffb2c4343aac4a4278b9a09d702218bbc9fb692ffa1b72d9cc1b77cff2a63d54614278523d7bba6dcc8e22e4c3e404b7e96b7807d58780494fc66bbe53992af16413f08acb0f58a9137e6b7a05712b2ac73a20b86a7533852339751e4d4a6622a6c77613fbe9a440180c9a9edc5b2ca453788e92501b8f5941dfec3e756be49abf2b347b8b407b3b1cd4f91e16590272eb7f107f970349b44b7f5a24825aa02382fb99f8a31d01ce93b6ed707a07691405a23559a74ae7e067c4b6e085892c5f48e41dd8a40c2591567b7c2a439ac3ac1703bc8b92a523c7dfc02017c0ec19a5d4d0d84b30c9c6bcc2510b5bfb6ad0c47a759903aa1040506b22e57f295b8b2f8d9dafb7e5536cf2fdbe3c0b1d115beed90b21547085077daf14dfb33324adee3b1847c53e35b00a029f3fc94999a4c7d60addaabe4c938f965be8175d842627194c36ee4c313d7fe2496fce9abe1aa36eb450f8d12523c11006b4e2a2186ab9c67a5ad25995bbe7954506b9b8575a3daa0729746e5a0aac81a53d72fd1d2dc7b9374eb6daf1b87f01b61b8d670ff504b698108347d0fd80abb5f0ffa4c05ffe0373aeadd16f87352714d7513217e1c602bf54d745a38b3f07b833a8a580f1019b15cdfd53bd5a44ca3975626c7455b6f3fc6bbea814dc7245d4ec5f08c5e44e0367574ed0615117e891d487fa9843cd9d52cf35d8423c2e0ef011d7ce256bb3be73adba68902d69af9500b80907ecb1f7b1ae1f80e6f20346244cec23a3d5f746e9a30319bd78f35e80d1ed9c61f64eee81ab77c76776ca23bd3cec69ae4f9fb5e454eb042819f38d80e8e7b8e96e20c1355f71c25b24e540b423dfc5618ddb7ed7e2896cd636f6b68e6a325431df99072b853dc0d39a0dc31578a24484c88861085d540f2220c584423530641d1ac98faaaa109d3d2174b7e01fee0d9e5b86793ea7a40b6922597c8d0b65d4a801c122b98c7a749378d82103247009d89604442fa25b0b6919d4e901635a33390754dffa75826aea722f573c1f2d39daa93d654f6839519a9269d76a69d1c6d0813d0ac92d0e8f2750117deda2ba10376b4d751219446cc3be8221f68c5528f41bb651991e6c6fbd46b24ee5f3323973bbc945c27f7b6373ee16fa3cb11955d65be1cba07b966e7283fa57bcf2a9ef9261f7cb0fd1d6ba784995e413bd25e64c5d46de4ea061a972e36ba8b7f8aa22d5cf03e40544ec319e1ee9380a2f815652d1df26115ee937501856a5aa01d514faab658186ee119b4868f996bb1d2cbf944b6c61ea0c2d70b015468f6e2dbe10a177c76dbaad64f25adb733d4fbfe2058d1f4a2e27a6d35e43b41963628c53645a934d22c2c2ab583f18895803c1486246a8a0938936ef466a6e842ac4e9cfd2d2616ad8468509fc6f8b526528ea0bf5eb4062844ffcfa358e86eb7a288c95a3397282981d1a920de54e2c3c15a6f3e080a14e436761a65e0a2b4f47a7778609eb4c295afbd93f631ecb264bb3e3af7767ada45a65fe877b2fe5bda3630198c35997e7130fdf1d2c69e59d056960c43ff59a30f0dbf9ec833c512dbe5db2916a1e34999aa5ca4246499b2887f5b5c66187afbe62b917f85ddc4277aa59c4c8e14ec76db78e82999e618206fb969c6a298b43b42bdb3afdcc0fb2d7239d639ab6ca8032a7aa10f7bd7236a3cd3d8f58787d52ac9f55d3bf1952362e5df622be9f95afb56567aa9225ab59a5f5b7ca55a892d0c09ff7664743c754cdfe8b17535ee2885ac2aeb06525526d028bb1f0e7563f891946c7bb9db36d04b06a29b4de2f6a7da4aacb69ff517c3e83cc4a615355636e7c991f8b942045fba8372dac3fc78851e3cbfba84568c05e123a44c053a727e11f9641ad2ab162d880b6a7abd054ac78c440a1c11d45fcf40182b7be16fcb34b3c958dc1c3b5f3e862b1c47d89a18f5e27b053198a89fa8177944ae4bee3d4a460d091024043110476be4163f4931821f69c2e12a9410b748d2145120d85b3e64e560a5338fd69e47c9b41214419b37ce476fcf9e14c2fc5e499af5b2ffd11a2282b4e68a88b4663721e795b646be8ebb7add5b44e9df18ec3d31add4f50a3d9c00966328cb26f76fe31bcf5cc6b10d6bef2e0e50ed3902279996d77dd213a90c6bbcbbb3147ee6e53b706f1a0c1d8f8975e69e2848ed59d1cd288f9899d00c7cf092867ef5d76431dc1f32f5e0268b06151492f764b383b870d711adaf482297271a64936a2fa164b9dd287394cddc10d7061718c7a2c407af71abb34ff4d172c2c4d169c956b918413c4ea12fb1e3f616abf502cc944bb00a7b1cb67456e8b296841475cc36c8323a3d58f95510105e1319df92a630450563b73b595451d838b17f34cc50fb97e68434f90dbf007045ee310538a0da2ccc95467ee72698528e518fb7b3eb20457c241062041e7edc126edd3d93a340f4c942a84127a27921ecbe98f8acbba4975d59901dd2d148b204d436d18bdc85426a99923a88506b15db48c727e100d0850269cad6e7f812f3ee8f365f3b7d4614c91bff62eecc5cb59d9aa530a7aba6134063bbf5a19b3ce5ef2e7153a92950e912379154eea0faa629173558611735ab4c1271cb618d5e1fe18603d79cd0a575e3a40d5d5e443dbc6f63f6e9d670d28b1f829494e61b4805133725fe07ceee3abeaed32b81c735b50a1fd79809634e340d4ecf6189208dbecc37330289008d1d470741951f7f6f9c5a164e64b9b0c9758626c350bd4cb9f2977879130286db4c973fe6541f4edfe322656b86d1705ca8a9f80dff5357d0e4f87f3d81d67157411c860ce090e56f33b8e22c28c38737490ab7be27edfaaf840882dfb6dddc953c3a493cb4440fe7616f618bf04c944d2c6d198cf400faa8482456709811e7d992c8c8dbd2fc53d3bc7d76642551ab678c0a761a459fc29d46af7ef618480d4a7855aaa748478e503c9f95775068df8cf0dc1c700e486f94cee10d11a9e6119e882e72cc771aa5b9980f2cf9524a9989043902340216025f4642e76d2e280d2ca58a333832e500228c18597c10ecacb628e27183d7808b3b51612009d42c87b6401bf3e287960a881757a9c02b8134001f92e2103191a022c03ac05940a8d980c2458ff606574357e251c10781d3709201363679464b46015f538303234066871d405cd53279e36be08317035f08bb9c05bedea8cab44fa52a50aa099469ad86939608a807a8b534b5516b7b376daf86e3160df75e6bc0dbb478bc19ff202d94a12ae06b3efd40554a54812417a698171894084380ad1303468665568600156c00152bc0092693af4ce617ea45cc2e8f30aadd49b5cbe30b869289003395f6755c665c01841863b5666269c165ca824b9cba00a0d4c3ad961e4b0fb74859b7bcb6e581a3546eb3fa59eb429c5fcd51bea6802cd3f20d4739f1fe32459562f91cf027c508519851a16997d697acb5375c8de83ae779cf5d2fc2a6d50a878e1d2e1e3d5ce6b31c3b1be84c0241572681a3bcdb373837e26ab5aeabf5d7d50e71b5439a4496c5d1be5e4bda62383447aa353635d72dd5c9d0172c0dc9d23cf14b99c1dc3d100f8807e4862600acc8659d171d0227e940ca3b39d77c06c393165128ed29994f859f8c8e8b12fc72f97795adc2f7c40788ce75a5c91646606268c20413db50d0d0db6020204c407124aa482d1ec4e72d20eaa24a38faff57e5bcf1de9e3395b12689fe70f85f68c148a36049a33a7d56a330bdead94b4db7fac6a2ce52f0eceee9b4830c8f4f1867fcfe7d9f7fdf7fff7ddff77dffe9fff28bfedfbfbb7fda458cb388fffff1678cbf177a10fa0db5dbc263df767af868b3906e3638025d6fd657e381ee6cd62ef7bfa176cbf2cd773dfae7bfd0112e778363736485f5aa3f36da288ac26ee005b946a30f3ed7cb1fa85988370b631f2791ce0eddd826776b9bfbdce8dee9faa26337679543877e75110e8e1d3a93c09b59d624b046dee1f11b0d77d7ae76f5ebdabd852c566d2c4b7c9ebaddaead739bdce64675ab6dfaa671f961af7eec573fbf9482968ff2d8e1b97d10194406957e73fff0ceb9105c2e9d6c5047a6d168ebf77d6db8bd402fd0cb7281c3476b2dc93d31e45da2429021a2a2960c8650a28428c87da18a12193604d131bd252c3acd131a9a57e59c7256eeaf5316cc20f91aeddb673b04c15990dfc8e133da505b8457d1c1a5ec9ec6a0c802d0a1925fb084c311389ba1622ead66bbc9a0723b5eef55737839ce1d355d652b1d3c741e9d5993c09d37f8a1d3658d4d59838ac570626b19438d50b3d98de5d5c656bdb970a98c48b3e55ce80ba682e4d82acd1044f8a08657093c1bfcd095657982e0c8d44373a5aed6d536199b8c4d5a5a48a1c1e6a2e72c7acefe68d10d3f164be116f1ceb11924a1d6292f791fedff7788475b03399542ec2c485a3cf81e6d115b588a584416d28d2492c0d828b5bddce2d63c2deafcd1b298714b490369f12c848f8f8f4f0a3e3e3e3e3eb62330313162cccf4f4ccc4fcccfe9747a71817939a95e5c54f9e7e7e7e7e78c7901737a71718111615ef4f4c0bc7801d3f3727a01d3825b181898d34bcce9e4f2f2e2826778c5443d3d3d3d3d02e420be2f2498cef70c431061efb1b6d1fddae95677b9d73ddbeca6ed16c3f6f8e8afdfea1c866d72b7728d366b1248231bb0c73d6e728fbb3c4f17fa5a613035172b7b68bae67ec7fb75c6d260a8bac22b7ba9674b88e5babb1d0ed7b62c9ba641abc9515d7a960be158744204658abb122b1c9e8290c0512e975b52cbe57240bb2ddc976416c5e277f767c92c24d0e57231693569626a41ede572f730ddba1e693dda5acb7ec793ed4a28a250b765692e39fd458c1f677f1996e960f67f5d47fbb5ca5eeb10b8d7eb95cedce85297ac4ea7b23495ad695755d555b4a1cb71a74a2aaccd1deee9ff6ca83d7c4edefccec4788b5e9c9c73ce7ad46398124fad4f1de53c4f7428146a09b584cc5daef5f2cc27873e983e030c26ce64584edd0c63a0d7ebf57a399663fba64ae5585e730c8a104b882544d2f6cd75dda27cba4519ed2dc1b4dead87182e77bba544dc0d87bb3d80518cea74f8a451ed74bb9deec96eb7eb09814f1c0ea7c32f9ce216a3408f95ece0c22c960a97625923cb92e0694f13b388b5bbd363b4594835fb9fc65bdc0aa2fd5a6f75fc964b28f6675be3177d04b141ecd730fedadbfe7d5acfee69b3148622cf7a6954a9bf5e94fa2b844bd394029ff9ec5b3ffa6a3363fdf1c9f5475450b8f33739ab7ff5bf7cf3cf773dbaf766ed52db721ab7aeebec888a75deb1bd77acd7de674e7cd5917a80a13370324cf465a226ce344d1c76189440300c512871f7e3d3f9ab850139f565b348912c6c443162c40acb092f9452dcd7d01243ed103b241373fec6461a81437268f91f6244d63963fcf9f3ec237eec54be87051240a6a055f8806a50f3e1491b8b12850b2890e2154c5c977224ac02860c447a84e896206293b1c28829aa0f0bad161a307f28912439a24c92030f2db3c81232a1b2153342b2e2b388fe4c01451222a6951a56a6c84054c4156615164c50011d91388592d8c2c90857d8299c00a952a34248ccd43180d8fc4bf1e28733176070e10a0d56b088a103d58919431343aa0cd92b400942856c41c894235822567051bc8ac0e2b6c3264f52626368fe959697d8fbffd3e0e8fba26b2ea775b2d9ce5f2ffa379743d1d7a971ac30fbeeeeeeee341aad467377f71825185e03455114b5d9d651bbdaa66fb6d1dddd1df513759d284c2ca51c7dbd9a959a364992316090add724026ddbb6ad698a6efaf9a6bbbbbbf86a566b82b562cdbacec470f39a656e5e73322bb3769912339b69ec2ec7dc5233eb9659a5b9db89333bdece01555555d575314c95725f17c36e31594e3561960a4bcb3225ba976e7e19c1dffe865bdfe5da230f079b067497a3ef727777ff76bfbbbbbb63164e87c99be9bdb5b69254a5c8d69313b46ddbb6ef329d3643c6bff9a79b2b0f0dc7a903dd8193cd1c7d58aaa2274c97eb699ebbfb6bc33dab35a12dadb6aa320a5063ea05df4b42de234edca4b84767653e76c9c3c1ef1a2bed591a2f9bb98ce7f381f2ec73c3fc4c49b187a2eb6b95e654d161315e0f478ed50ed94a7bd6dddd4bf0110d8c15a8b40ab70e473113c90084612005a23066104308596bd4214884994b8306c7f15818208705611c03302000211800710cc2410003210841a62c7b00aa6539763bb08392796b64d3ea27750ab61efeb97b3d91e0093a32ad171ebce5f55eabd4a02f3551081bdd449edaaf946549f275d033133c7078bd3f41a9d531b7e4d528456c1d32d22d6785c2f7d193e7004f4c3562936ead2e72b1e69c451cfd81cbca0a8f96282dbd634b8b4f5571497c841af2d9881ec946915e51e670e0b53e37572e9ddd70714aba6e13322cf8643195157c4d5ff3a3f35a3818858b9949d1c990cb3c930cc69b2f3be1a2d8e45c38c444e3567ededc6a782af66b7b55c235a10d3d3a14d0141233df7b9b7827e71b5413ceb1c2493da8966042b3b16794263c9e7dfdb41df4d6df1d8cc790ac6a7cf2395e83ba3df042f0cbe3c4d4dbfdfc39ecbdf553433fbf4fbc3cf2f9d5956e80df17dd09470269d28eaa57e0f20f0b163d8043cf1d004fba8737186ff6582b6fee2d5b69d90f17047c5722c4656f0de9aeb7e11b8cb7c153155e84528f68a42b1f9354ea857a82d353d4a1b23cd201c5df66a43bd34b00a24046aedf4877fdfc2e49c896e9a1f5d4b297c3bbb84c7ed5fbf2782772485b10efefb952440a007b808cb66a3d4018f3ca4d5bceaaecdff99916bee78a06c9245c886e3f754c5a4cd2b92e4b088be30655c016b0c5b3d48595058b2ac2ce40b41a6847b7182a09381ff959fa840951ce17bc494cf82503f45ca52a11e2c8420c410d89d53eff748398e75eff025fd93957a35e5a800d6ccdad623c14d74fe9f1dad44729c90eefc68f76adea9b9b4eb58306387cdb0a8779c1ca9ca80b9ee0e2ea20735c5a34e083e3013212a7d1fb68f80522b29939cc4c9536da0dd6c62dca9f67e71cb00c3be69f32d1899553c31a5769300ef85cd15416cb5ff35900c136b9529780446b3dd038ac49bc4d06d0e6bda0b97869b98f3293b674a5f1310c730381f5b4b0e4a9099a0a10e6d0caa1fbd046e2744af7f25b70b232793c211c4622870c589aff8178a3003b656f7865213062e700b31a328d0ab57bf7b9e909b9776a7d1f7e82636e20b23e3057b221c3fe1078db180cc5dd9f4b0a4dc6a2ad146bc03fd847b704ff1b775b13a3cc7a88580806fd22f659940dce49011c2d753078c4e80a12c697526dbfc14b0a69d1d3e6d2353eb760f11e54d2fe3a07acaefe4be684720b6e9c5f1e112102510356c43c2e13d11754815a53d144fa757debcd2ef820e4dde2bf40c5f4e469341df159d15b16d67f8a4c4124dbec540b968528dfda40b913785ba7b013aa18c6a71c361c394e0dc9d2828aa81d421da5bd8874189f6fbcaac38f3bcce4d884715915b982037906c155a22b2162312f74cc4f25e34ee90374bf5e2551dca3a6e78be4ec4d7e16de3a27739b59427dc4e30264e32ff05392eefa1071d7de1345fb97e31dd7c6e928595822115d27e8638c4f01e63d3f695b268a7e6c26fd285d71162ab59db8c798b5413f252abc552b62dd10bf1eecea23ef2f1d4c6dcd3906c52e7851e93b024487e3bcfdbb153946cb4f958e2250ade6bc027bb2748590c3e5605511492ca20b98c90b4a787104dff29211c680ec8c3fa53dda5fbb567d591dfef392a17b977814a369cb27cb2226f22b6edd1b04e1ad3a04b7b54d47835ac0d054ab91f26adba4e8b312d6cd24b6aa47e3c027d1e4f6c1b1b112f1770830d2f7a451d29071e98ae9cbeeb2acb30560e9ce051fe7e96cacb47007ae6934cca3292f39fbbe29eabefa42fac64afbceb3e01e8e544e7e0785b309ec2fadb0b0b82e58a612a045c328c58aff8746a966a8f895bca81fdce8efa439b188afc05b4ff92b353da2afe9aab36f4472ab5ad9fb585f569a4b574445e9f3a79efedc563c8f23c08e92c1d2a43298a74e4c80796562128c512726c29c3a31f1a52cb589491837a60583c2acc0b8312c30298c159817c60a83c2b8f5b40e17a83e654e546111dac90e83b9f5a116f449e015c78c919da6750f5dc75132011fd03704eb043431c74496341ea511b4947bd375f6b9c83d8a4e7a48054f4f3519f507805058d2f17adc7090cfdd6dbc05ed40c1caedf4082e543a03e2a52799c5eb85825ad5f5cdbd856664d647daa6ae904c553d5a05d132ab1400b1d8a069309238343e6da65bdd714f3bcfa7a23736ab34191143abb090f58057e2581dffec231b5d34d2e3f903f9dc6de3ad480714ac8bfb8982adea0ccfac0fd18a1cb0c6e95521b3e1ffc8a3bb6599ade37a48fa0010fbb9acd94e10780c14e28a16c5f31bf99bedca1a4688fe7131261c32fde88a353e2251b2d493a719b98d098222a0e8532cdde607fdd923bebf226999e6f714a1ae60a19080104115c393ac2c52c7b58dbcb4a95d7935e2021f247fc60fa47bda24bdfb62303884e5e53631d45c101367b94a131f1937244b56bd83f4f62311ae04dd2bab381ce9ac76c83fdecc66cd0120a4807bda3996073de480ca53c87a378861455bb27afd2b8085bfc32a013d3848d9c6210962c080ce8476456dbd9a4f849e3fa54382dd24ff2d1645e91beae10845b7600b7492accc7bd1e562bc60f1db8f998e2cde2cdce0739fa2d311411f7af905640e1981171b898c77e160a664170912d3b599ff4e78d8846924e3cb007f1cfcd3172a1936a4210fb44dd11c9a6dc49f979536ff47a2857b3e35a323da4a815fa49963b2ddf6d87711a03de031ca3613d749532a85685764d1785d5314a71773c39455a2514738cba0293ac89fb3e4124a80930b1f23c5713e3aa1980010fec4b92fcbec7b5ef1305858d219d58360af20f2569830ccb7c01487038e4ddec8f0355bd8051bcc8d9395638b8a2be2a911fa0e04bd54cfddd8f5acb4a061cc56d6be6d00106e4b29cf250879fba0df20704374c1ce10138a7b53e2f5b7c539240c40ab42212c407877cfd2402948981ff6bb452d545c2cb11b03ef467698658fd610f117db969aca3957e77fdd5a823f8f269c58d536f314c8dc1a87237e179a58aca0046a4da917586659a0b010604bc38fd3206e713a925ccf31b839814db21f339fa258d3c69cfd4fcbaf1668507f3e106c56d80d984a25613a24024e2b4a591a0bc12ec5a75cb1a327b2d5dad610200243c16765c4a4b16a1502a6a2fab092c56a239de09e9c3dcd5f99cff8a7fab143b8519b83c859e7c5c5c6885842763535ce240005ba1286f43907cae25efd82f11508a4586e0ea92d7f550f68831f1ea9c561a038887577d89b659e9a22eef024f862e439f9a161535a224c6b699544758551a1755335590791ed8d8e1a0e92e55755325050fdac06e2147e1f6ec2db6cedf2f9630b5534a80c10bc544e2c4b6adaa2060a56113147ab3d498b4addcd64240986835bf73339838f1f8adc55ba9b5f7a2e63b9f191703819123d9801bd71ba7490a70273958e2fa16af109100dc6d0c07a1165fc020d2ed58020521ed6bf01a7e446fe52ed20682dee94bcd084c95cdd5ec06556d4cb7d2b823e34d10df547ba3cb573705f2680655e46a377497e31ca6f19887370476eb2f7f7057d453ce09e5ee782cd51605f2e94fa88124c55c6a3c07450b0ec41cbe69ecc522b8e29f0bebdcef2ccd047001927b3a0158a8627e473e00ada1a3092e068f01fb4a7c58c6cee3dda121b5cd7cb862bf6b66cf3bdf808416125d1da4486f22742ef9a3cf4fea969785e0003d9cf480e2901f2715987a235e016717c1de4c067c262d5e2c3a55cb455e1fe14e343d21c347b489b1e8469648b55e09e1bf86e0b6aa7768ee3dc6b1784d430d5ea8bbd0fbc69611f15ed5e02b700c94df2eb4cea286f9460b7964edb52e29e17c0b6689279080d755736c924817048c8af97ffd96a76a7e1164bebeaece49b970bdc30aa8397db770fc2b3ec5a59bb080887586eb154121de426c4f6243a48c8e6da93d9668ea396a32f30cbf529eed6e0235b97c50c25a57f8b5ef2376c9b859b48caafd8a7dced2bd5a680b950d64177540b2dcb27a18db3198c6ce0ac9a70d27141e10a09d7e153ce90af39f9cd03390956a64c2bd81bb506f18b08f1ae19316bd979fa064fb5e3984de2aa50450adb300516946d7c8cb6ad91db5261e63b7431a496ce8958b19b03b7763eb816101da32a20408392c24d80ae07afdb009f4e35df223a1c3f69ed5475fe1ed3bdd0cb9ba1185e860c9b5218e9c28f4d11c4dcf77a7863a3191726e2bcee6603bff0e67ce5167a81a35b354d3b1a98c1e73b6836508c0a36f3c69af88b03b2e9ca045334256cb532c120440307da0b33536ac488d7f4118ee42975545a5bad04ea619b738ecaebdcec7a951fe85e9bc7a892c342d6f0db22eb1a270a7ab787937b353092980ff035f01f2472d6bee007175da0dbae335dfc1c8b3d6760ab00bef34bc5142ef37a6e24a4469aa18784cce23af700beebfd498cd276db6f21fa988f6e2da07ddbe69ffd01264c2ae76334d80cf0f9e0b526e5a9f51fea00c80261edd80b1b93cb0410bd9ba54f39fd72f6cf3751bee218c0b6d91542338e585acf0c8cf92de383d3f4f36b461f1fe232de8d6a25eecdde8c54c8ef5efa85775151dc59cd9b816ce9138b3892ce47fa4793fecd6d7cc16c4503ac2ce29db003ed5963c9c3868a1ee8bbfa9e8bb2c3a8fa5a35ec7d828269a7e813c25fe263af6fcae6fd326404e3014760b72056623b95479edbcf086c09e8499bdcb13ebb93da22020c5fe292c30c32b85c835308827d0ca665290ce6666211dc94353a589c36a33033308e88dc4e98853596a37b1fa981bf083e9505b1d0397a6f3bc454ff21246f86ff83e0a176b71b2f1d833f98700dc78241ca20bbd83293692c3e884500cd693efd2c7f9c36c83b0b50fec97c3efcda85411ff841d866ec601da58b05e42d0481a90f5b3d40e19ed29576fbdc061c6e8501a4ed9f32ae614e04d1ee8ce6891d9e259618304de2575fc7cd10c5cb15abf5d40ea3e2e1c88512204f889d33689d0f5452b16b17a74b545fa54ff1b2d55d2fa308ccb7d22de4f70f56e32543a40b4c42d8f8e5809b66d47659a96d2cdcf38f34e72aca14e0424b688214929dfa571b79b110bfc213dded1cdbbc93cf62ca7b0b1bebe4fa868dfde4fd8ba138025c6997d1ba19d4805cae83bd9481feeed821633afecaaf04c15cf9f85efd2437616f0ff07a69cf6d3940def090e55c8d11fa28797e4a62053901f0c098cdc7dab391e877466feeb53e14c30edbdfe3b59773fece0ab89c87b24c7ae0dbc9d5040b2380a5ee0842ece2e491ef498920d36b7dc6c88f1b3a5c1fa2a34f816b578b5e0b1b64ac28f8df1a7fd70dffe57fa29ccff0b41b24c8faf496b57c3af83dc5ab62fcc8b134db6053afac9d011bd7a7763a2192d3ac9570a94b3745e3a35f711776c4fd30c3fea7c432a30d6f1a15401b185f1a794f4e054ee66fd40f2e05caa91b2d57eec8f92144dfbe589a43313b09c3e4afcd195b6f96e63691885fcccf8a1fa6179d2bfb3ac4e36cb8237df6f1288405c2c2155834317a247d452b0d6de5b697995c7e17c5a2f8c05b39c8e4fe663af4d38b8cc8c3ed46b99403d20fcd5db38cacbfdde686d283fb475fc4ef419e7c253adf33107ecee0f3246435728a6a6c61af563a16e1dd0ef9b3ab33d8c749e5edbd2cf97813ba61c17677b3f8fd15e1218649a1e7bdabfc07bd3410db6e7477114855825b55b52a084c83ff0283d97a093ca1497edc27d4acba879b111bddd8379b165c37bc086a0a70f63635abe6219294b400f0534f1057b51b0818a4c5a56ed5fd9418ac52da3ad0ab6c7216a2e9395caff0d4828e24549fc13a672b691f2f197d8c0c4876861fac352f4f1b3d76c79f93986779a3177a68a624d05b6404531618dc7787503fb96290d56a4f112a11ccb0721bd9646c5934928d63b3925ce7584c675420847a782307d0053f9f4cdc87696c06d09ed8ae7529cd84d1bbb20469df774a6bdaa995c503a0d228136d92268525720ba1b283f164655de382b4434da481afb633988b0e931920d502c07fea56bc8c0ce1736fec1e58243500c7853904b0fccc196bf760a279ef1dc3574cfff98d5977e11fa7a08ef38c210b6f965055d69d64d6df6fa64a83f098f5463753b3eaf7a6c76e16708ce79af14bd40a969de9c0c2063f12f071f7c0950abd170cd2b701eca6ed2854ed63ab014664a042f002d1d8718298980a06ea1c949e7afb3918a51f1851815ee62a320deaba762f61ff6969b421d196d94b227c019501a811184b3440cbc41ca9c05adaef856ce32d935e2503e4b0ab88e65281c1921123d04b2904b0d0d9ffc390896812bd99cf683fb433dc5d68ada084d5fc7affda39d727e9dfe6bfa3cda9ccfd320b9fc5ba2840058c59d2ecab9a58bc444cf1266bec4667a7b4ac92fe63687804adfc1dcca6c5d871d3dab0a6946ad0d5c8fd20ea7bccbe527b8629a9c3605ab388361ae052d3472fe2b5ac1936c383a6a912c75616e109b795afad8a5974457372192473c58a8055ff4aefc374d3603c93a244d50c3140de9c01d8c3b222e523881be00e2d02ed7976b38d4bdcd9a83b2868eef3d524c1e0f00ece61cf1c04da08375bd2bfef721abbd41f2bf28f5427dc6c81d2bad7015a881db6709a38d374cc03831e48f59cb61cab7ba6c1b9829b3e10874875ef02f8701a24f0fe501baf5379cbcfb5c8e71470733386648b99e57344d4cf8f3909e22c68c247859fba1ce7d84ed214b36a79a0c7d144054d1594868aed143be3bc880e0293b41bc991ae5fcd18ae8e89fab9154f2efe76e1f1ef2cb5d846659ae301976d9195e4bda870d8ab8ea2c17913d9cd1c0ca9f01eab32722756dd47672b1e74e8c59dd07a2bbeffda43072afe1850b4078ed856c87c4dbed3141a50648353e4f1bb0e139ab0e3a7c6ce30b31167e688d47a54cc0a3b2af81402b0d599bdc70e2f37d07c915abb15569ec58541b0ec4dabde13272f698797fbedb62dd727a806e05617f1c2494db4a0f9c0ad5d7e7a099101645a313aadc86a9ec7095483ea1a805dcde3191fdd96072d52fb750d814a6ccc21082216871d3fd68a1d443f82ac222d258ee6c1592bae7e3c0eeffe160df71e2a850f7f5c4da6400760a60615173892735b3d67d87d37178d41754951c01a4a2c77194c326540098bf4d90f009721812cc9ddce3ba5db580a07d1377b57e48bfeb861434d4bf960721234b849a2f6d9cd33ea8181bbc10d137c2a47f35cb31975bf07db109920eec7d25ae75e2002d3c6bb6f91d20470bc3edd671dfe3db3054679371a40e67775a8a0c5f4f1f329a05628111ce6ca3fa692757fcfff44afe381a5dc740da7c845eef320bb70d82642febc43837d848606bfd5f057f1dd2f347801141a9c73bf187f2a20eb73d0e078183478a64df62d3916133498730e34d85a4a8106e77438ce344e93c31b6279c337a9bf8ecc0498520d16968b1ef649270f0df8013c69ee21b69a784c6503e984c161350f8c55aec43812377c9d0ba702e5957e0e8b6779842c64c2d329f4f94559a05a8379374148aeb34ae7c5abaf8559eabcb7627e94390b0020e4ba14b11fb5e4d6dda242e580fd03f1f7e97403ab9ab3a9027f6c6dd9be347d73491d7fb2d3dfe6df2c4735844a83ed5e08c1031afc7e81f0944791787ae5ffdb4b2adb4ef41af1681cf3b472db5543768c472fe5e66ac4642b07a6a247a727e14ea7efbfdd2a1024056ce000ba6df01642802ea70394eca4ef5fae91d0ceea3d859be6e99cde931e00622d2998b66bde3349245d0767c1fcfabce0e8911452d0637b12081b0247b3b8d4c8965b4a29a59432ed640159016a01343a19a411d29b24492a987730c6dfb5a94572ffedbdb5ff77638e77ce3967a7ff3b9b8d412144d8de874108058cae6b7f064063a3dd986453d73cbb259e4c683d48ffe739f5fcb196f9271f2ea37511ff1d3e9e278015e7e3c5deb0d6e00e614b646da966333a92d5fcd1fa87622813653c4c0a674f9a52029088a128bbddea5733e7b59b03671ae09e3c36e79cbf9fec4ffc9e3348c2bbc818d556dbeaf5b282c544a323ab1a52009e648426f24056030818e959753ee3cc002d8c1dda16931adcb0d887153bfaa3efc8a8667424ab3499c8655c49e4fbc34fd477529824404954e25c030814e8e3381e8d4645e3d84056e365e2a4d55e9caf7495a6027728d6efb355ac142c2672198559c4f71cc962009000c88e8c90908ac41812ec85848494605bcdff3967fd39e7d32b9beb0960e520d164f233c40be280f81fcee33c92c7fd6caee78993514b40a693faff3816b0c159578c1830138fadb5565503776c98ac1a397cb3bccda3ad23367dd406a76c72da6b9c649b0dffabcf4b58020ddd4bfb3b9bfb266963f9dc15cf32e8320977bb959446a31d2069b4f2fee57365a2a8c439cf3be78c691e69d87b25be9c3faabd6b022ba139cffb31adf7bb7f6bff16c620de200e77b86701e26c0e89baa49c267d955f96d388b0d230e76c5f39eb7163951f1a80b36ff2914d516aafe3fcce043af1a196bc93cf3dd443fd8d6bc3bce6f7e7c0dc77e909fbb19fd65e6938fb09bac24fd8162cff22b8d8caba617d5939d379233f4ce94f24f68853ce22bfdaa08bdc8d7351acc26f399c7125f5b8aff315906f52d96a328d6095f38e0d2690af5285739c0087f84e78bc942cc4392e2ce2d34e6db773c7ffffdb9f3c266eee983be64b89730061ce45bf27adf74ceb5734db5526da8dc3ab2129d11269236d760bcd2d7afc7c4a8788b4864f7523576b7e310f8c543139c0fc46a4054d1edd77a80141b48e1225055529e1dd759539f75b6dd4edf85e7c6dcdb3e8cbe2eed31f6f0696d133a0afc628aba56ad048e5d0e07a3cad9d6e2a7785ebf1b476baa9dc195c8fa7b5d34de5cce07a3cad9d6e2a6785ebf1b47661b6e8a67255b81e4f6ba79bf2922b83c3eaf1c45cf1d0a3b5d34de5c8e07a61ae785a3bdd546e0caec76b43a5b502e78eaf66e102abf87afae99bb00c492cc0611d31c0840a048b2cf0b1652d91d74e4d97d642e61b6852dfd22722cb7704c065495132fb53ebe3b45c22292c169b51a8b516ce32dc6a58a3afd79db7ebaab5d6b6ea15b63fd99a02e3fe659307ac9f9966ba62a602670e6fa2c4166c1262317ba85a65bfffffbf68f4d9c64400418d01d2ff0bffde4fe49b103817453e2799f4c38e4fe36d7ca48e6f9265e481dc70927fa887a2311feaa13215fd7962c889ee56e21cecb68b3bbe7964024b0dceae9bfd3b0f4af49479a79b9c3e38b7639b6d6a2dd1622aba52899f0d203e5029f3ed172593b559a8daf0a14c14ebdbfd4bce35f33e765e72a59c431d957baf692af769a8dfea6a436bb59d195f00add616633bdffeec5225678ca9c6b6b46ba83694a8196651ec19c4e39739dd6e3edc34843de517be3a189939cfd58e9678a5ec4aa6a41fa4e4d031ea930aaefcd43b6d532a3eddf1ee3cee2fc71d2bc10698a4d5153bf8d5bc41df8ebb9227543c91e4926de3848beb290af6e4cb796bbc69bde39c35ceb0e9ad3b914e296fcd06d6c8253a22befdc2a556b2b542c13747a67438377c162868e16fe6a2b3684799382f13bf6081898982de2aebf7557d58e0fd68d86b9c14fbc522fdb0d5b7a33bd2bf782b718e73cff8beee9d7bd3ddce648f6aea9c8bfd83b3c37d394f328b86b677ceaddd588eb8419c45bff4d512ba69d3250d7d81f89795babaf975efedf7d20f65a2c8ebdf7d240ab7fb9df652b57148fb397d5eb04483f7d23be7956b089b7c44e4a39c82d45aafd63a89fcacb44e3cd60943550014108986c4e12ccf7110c04cabf9fbbc8083e9b2a11d86e42c21874e60ec7f2e114c332acfe897b0916df91e2396221e2c713ff7dc8852c31a2bc7d221d1b157fdb4799cfb40cd4f63ed7ca24c08554d96a5f695559f9ac6d62cf75f5a53c327f175dedf4dfbbc01aec4250350ed705f0dfa91219570c6752006633f87d06117fb6b82e572928b0369dd870e868b36ddc33e517a462046f47a803d146d2c6eb9742b3c4f838aa2ca40c6085202f03f1424ab2fb8508c46a699447f4a540c844e44eba123d1738ba286ad06528b765e6def7f4519f6fdbd22b363331fcff3a25f1717dbee55acdec8e7e5c29e717bd5f1ab3f45a7bdc0ecd74b3f2569557664a9a4a6dd24dc95a85e129749672758e12eee26b4f60e928bfb97c87de381c881247ccdac20f3907ad25d11e0cb5a843b3f5c7d6d9841ba3a9fb8d9844fee8cfece14f71fd5fe75277b84150704a04cdf69dfa1e815e2b2c11e5b0370c2da9efff25328b38111338c5373a580a5623257bb4b469055af608501300af163267036f4a66e2057d9d60e10d77015ee53d395e2367ec21f2687ecd4499879fbee943ee3405a626382c9330a5be4451ce1d922306fcd1385cc08751504cc64531387700816d8e08817e6afd8e7abcc789ba9e09d47338004833410a1cec450e45da2dbeb2c3afe9059614e231aac53be1cf55489551602810fcf9d0cdf04313ef3bc29f52cbda60ea1e2553b49d835cc1e1184b0e1f5e04edf24ff69bfe6426cf4165734247bfa4778b86b15042d9d26b8c044cce5d1ba62ba0e5f24c084bd029a5b16dae9f4363b9840bff198c100bc3bf055340f3c029d68160532f2381f8019258724a61d10ebc1ada4fb4dc308656e9d45b70f25e0cd035c2a1ab715957b10c15d07ae2e262c4bddb28074846f28e172ab84ba93cff09dc21c72b53711b2b2f84384dac6acc1d06e6fae60c428209607015d02393149d2e5491c8adaf1dcd97b90d1ed21123af96da013bab85be040aa69b6f663f3ebd42d8d5ab8aeb46231a8c99299220caffab1b4156d6b68bd04a624b59d9af2234c0505b63a6f30462f834985a86c9cd36a6919ecb145214d1bd2bfcdc8ad547642f653507bfed09d89900a9d8f1946bf1b6531c13b937f080c344f90c22b62f37c26de7df7802c1df8d5eb8b8a3ef1153c805a2155cc8c67eb950f9595206cc709aba58f2ee05f4044c4669f3449952e853ae13fa299225e4585ed376f7918611e05d343ecc3f006c070f7f7788ff598e165d702b0644c602f248e3d51433ebaaa5ca2cca2102be407ff000497143e32e22f2fc6aaef6f8d7ae2c5b603b7e186eab7f8a02c08eca6cef16447c6da0379f96b9f991043ac3c4abd492333f1d46b23e93d81530167865989347cdee46cba9e00018aa52345a31f3298f99d00788ff8d204aa99b46253ed24278819c1244cb9107b0448010a01e59f027dfcc374c1415a8dbce4ce2c7e7d9fd572abbaf036b14a2d7bfdb829899296d9e0c03c776565d961e2afda4b0a1dfa13ccdbeb9c3a4eaad80afaf49eb50cb66df327cc7e62d28175dc0df08a419646ba0e1db219b66a8435a884fabc8069f9647a50f5bdf967aa6757d0fc3b96dfef4bf69aed9c5c3966e982eb10ab2b5e750a58240d405797e868a8ca4fbb1110b61b1d4e684dcc250d34b65417988c18ff4b3bec431d60573c9352185c93d4d4495cfc1fea82077e188ab36016c464a7a03ce7b1bc80191e18e915a95bb7b9438afe3827af1e5f0454fd31756ebb370b8d30dc9d9dd41aefcdd72f2ade5c1bfe9a4868799c28917d8975f7855c4d21d5eca013e128ea2e821fb50acf986643bea14e140ac7acda227105dfe4af26858937a5c212f16565d959e445fbc37556d82530be54c45502fa9399d3d2e2d0f700b0d5494d7b6f93ed3466b87657636f874906c3d804caf3d3ecdb312728a59b2ca604d8499ba554e006ae6a20bc9db8449fd28b9f9800ad5092f64fadcdac1a80786974e19739ff0b6074b5de79fa3a993556409d45fc69c49200bb8419e7d4926635a28f2f1133a0a14a05ce6d3bd056d34fa931135613af1245246bbf0aebe7221e23a3ba7a953b2d98a235b3b632846eb53a2981191f4c4e6c6543c67105ab7997f194e3fc8c36fd700ac9c85d896964411d4ff586c0b0a8270c6d2cc29a8df5b181a0ca67616e356fc7c8f6942b2be044b7ad02c33fbb06b86407a244b62f881a7c6b8742a44ff05f6a174224918dec48221349743a991aea50879ad4a7867a0811c9c8472612914532ba9da00675d4496deaa8413d42dc488a2c4686489c442d6a5269212213c9888c48224f2315222b3271b271d464ea45aa2e6cff4732b2c853e48a269c785249e891887464228d6cd49c4c1dd0736b4c7a94eb826f099fa99cdf8e52cfb6f5fd1731ae15e6f1a31eaa9f7c0ccbcbf5598783e93f81c186abc45a974d8f1ceab1fef29c92d75fffab6b21d5f381f88610acf0cfe13ef87e57dcf7e7d7bfdb6522b02f84a38df18478d006833c69287848bc09154026bab8f1fc785f77b8c72c13ff50012ad13f7f89cadfa351b5dda0a829c0a69e429e0e5e02b30844dcbe91c253d5c0f908091536fdce2168be04d9e0357c5f14465a9c7155f41cd2f313ae383679c8100bd52b4ab165952b811d1d94d4984045d0c426caa26a984163134ece317548d0c2a2f8018e554bd64f4d82f4220fa00790e76e5b0dfac55343d45daff926474c77e3ee8a5db413325f7e706817da7161126bed485960282389fbde55ec4a60f2c732f03bbb1ef65bc11cea56340eb9f2ba5cac475a04ea9fc473cbfc57978b82b4ca413a8756a4427cf1ea61b9e5ac702aff845765c63b0ba872dfef621bb4e44d1a8e8ab213c501674fe0639ec1a09fb6271c0c7fcb05dd788fe2f93e1b998cc567cce903271d1974625094a7a3dea31b81763a8ffa1f5afd209f5d5e647721c954d112c33631f061947e409104220f2a875c44bb878f25af2f588d74ad8963791c06e5ce752194094cf9e6b6c01a94521d68df6cc128f61a2e6f6149e26c44cfe1b862566447cba942a5046986598761de0b7cb4ed8211c73a2572e2082e6e7becfe5159e7bdafc35cdaba9480c9f6c3fd04c0d304e96be264bbb8d994508826b910361c27aa81cd28353105d114e6dd43f18d58d694cb91608d54f705aee64b41d08be6cfef4213b293a4dc01d829e9335adb03a864715b1c26c2c8ee64ca61aaae1696724be65676383b47bf0aa8a8b1cd9ec0347c39ecae12838bc7c44082725a798df01e44b482231fe7241aa07ffa4ac70eddfd0421671c4e166a72f110a68a051bd98055c7c9f1acf72d4e259374e374039284ea8ebd42314cece7e4d1cc332e2add599c9c24bdb408e995295cf13f6d860f120593da4a65ffae92a7b3854742d3f6536613810e77394ff4cc447031501c0e56d4a4829e9c0b5db2383131823ab9d1d1c26e9fd557f729bd847c07a675f6012b31edc0055adde00d2a5ba6202036b4e4074ec3a01e4a208e023b82d19578223fe0d5014b506c76e923b4d1797b0707aaceffe83da303a16b58eed7eddd8cb3f7d63654a9ce03d369ae39f1d3ac42c85bf13e22ea5fabe61e4e3b6146d72130feab3fea2e224cf2c62e9d03a8a77297776b3684073db6ebcce06a3624a80d975ac5095b27d61a7faa883bd2fdcdd1871b24921092820047029523ffda18ab9a237e8e9dd0232f0ed4efdb37b323617551c10017b149d154a99d639add0667b99834b80bc63fc41ef96dec9ee749884ff647e40f4b2850833010575d739ae95b6abfc6f68044c88cb21a27f68164eed0a683da9e61011977950b5477ffdbb38e021948557878023b138edea1c800b67f908b6c10d102b71ff845516fff93c4ad233a72a0d37680db849d2be50edb09c5ddc9a6658ab0b382db11f83a1b69ddcb371f6f66d49846148363076859c66fe54d7a5616baf77a5dc9d657caa60348e1c20b8e3576b229532174141f0c68d03cc52437c2e0a678203f3b691cb6930f5a2e4d0c31ca49323632d449398276c411c4bb1043e253e2b6fb02582a821687f1482e5bd06da17248f2ec7e0441a08c60d540cd5ad1dcc086508416cad3accc554fcdfda436d9ac5e2791afc0a3d780c79e8947873aed6b50f184b4a7b5af75da8728d436a869b9b8403e864efb285ce28341ad205b6a072b9fe57d4e763965a24a722608e122f0efe29c1b85fe0fe15396f7327fde7904b34faaffb56b5f1ec6a234466218e575dd9a0dcd41c32ea50fc6990b5ba2fdd44b869ca9bdb6cb1db7576c863d0f6dde4e25612de88b4d6c930d76d1fd47e0210386d8920857fe98e4229810a6a041960128054d201e19d02ba6877b76f6c4fba4bc6a0f1d203dfb77b4f61f78015a272ec1c4bf06af231ff8f36f0c1de0402cc189b7a171b2c5a04b80932458156bce826a74a561b4113451f677cc03501aa86e7f50629e1a740f1d258f0bb41d0259d899e3d66a465211ca97df628d9ebad7b3209c0cc003cececa44a9ac574dc95057e8ad53af41bdb3c6739f3f9144321c9b6704403c42ae2eb0b5004a00d694cd834519a0bc33d8e8a127bb7b85f7fd56032b20df0366a83eec39edec2af57a347f53178b4348cc20dc9580f17355548884bf908aeb35ad9c49a5e0122fb044f98fe944f56d24b98bbf4e786dfc554c46b9008eface8b614090b8686f3fc940b72552ec82163c431bb129ba70c8c28f8ef4053a28b9fcceb50d78e5efef869d84536ccfa5ba17e3337c0f3da0aa9f0afef3d888108a67f69caf8162590a47fad2bfba55e8f11712bd80ef6af15c42c8891e4dfe2f1929f64d44c5d51d0e284b1fdb743ca72282e28ec87ccd2a380393e7f2e58245c1cc5ce70bfdf32fa711411ab5a9f8178a128b85ca2e65b03ffa5a74c7cf699bee323b0680bf5f91ee05f6923564a2f3108df8a9db97bf93d05e27fb15abfed24d0a2c27c7efb854cfac3fd826b1d460f267f01962f0d855f0dd74769846984410ba63b0bff90465836329d787e0a121685dc0aa3631d02cca46a6444deed22d3e2195e51638159aab4ec564bebbbdb5ee0de3960fb5c32f2908bd9c3e4d279c708642d68578ed790446013faa925e1323f03c702c9394cac4b8bfb990c331342637c3134216d09504e582ebe38e3311bb02a073a741d5533098a33524f09f61422989efb1b4b0f3a123a1829baf02a1a2e8cf0777fd8e6c3f45390ba8a89b061eb29ee3357aa4f2e3b827a9e972fa04a5263e0ba7714d5e7081b8dc62c38522359e2e61cbd689bc215bfde9bba12c902ba12c69cf8a65b1b18aa5478c2989377f7866c58e6d5c1b7a6098fff1647f84e4026a3cee424e9b7ad54002110dd191291e1e92ba2b1365c442e03d47449b3e9e290b7f168c926c37420b362b1a8fa611f706b4c913099855e09f4d1e609263ece2f8a8aeded1cf466c8d242e08db85bfc6babf326401127c65207c0d41778f726c2cf7357b9afc023d8eb8f76c13195c1194e779266b28d04ab7b8d469f4c506edc43517fcaedf00cb54661f449f03e446c55a7441d547bfb253f5343f07e8161fd1a2a074c8a6f05307d79ae9db2670cbcfb55426605fe08ec9d4f70c09fd5c826cc413e668b44f193e027e4a97954a3ba591ef9c92664839b1514a34016a5ee1a8ad24728d89bb96b9cd53428268d8193587e07e7e46d0e690bb962c2e2b2050d64844ea1f2725c1c94a3ec7c7fb7d8ea9df032ece01c00ac907e1ddf5c136082e0c66ec5ddba3eb020706849018cd2a9d667dbc029c13229d8e8432d63e61a6f0bcf6e8f2aad846b2083693d4755a0e1d0f469a73e96ccef65385c41a51c14ddb06ed0ecd6afba54006d7f3a945b5bb5e723672a6f83eb038d181592ab1fdedf032233670d8a04a7c34843b1725a3c22794efdad7a4fd5671f678bbdd5f0738584320d1888971ac95a2d6309a28107ebb8b7a79f8ec9942fc47a36a4b4bc255d5b13ef60c68c50041ed1d62fb1e39e19795a6f339e54462ed42025afc7380cc2034a1baa1470039914dada6aadb4208129036cff5a56a5654dff998025a39c5a6864b574710897879f786c8058d01aea32ae22bc9b82cf6355fcbf1c728e7e5f4b1f72267310da4fb557353196d51ba4ca885f0419adcbb91b28c83c4384008c99ef7540e3fb46e294e40488ab0384c9e3c3b1a0334b4ddd911ef6dc87ec93ff51d8abb066b5f9c4fce09787a7bd845e8a20303b1de21aa7ff6b8c924aa811ebb0fd3a2f0d48e4fa8e55c8d4b6dcfb98936f204ab3a6fdf7852a22a5a40a7a813b7d559ef956faa78b4b3da01fc6ac3957e90a6ccfedfc48e34bfa690bb6e46c112b0e159e1eacb9914ee93a07ced9e9176bb1e4364937a125a120acb6e4a00e1567812827663f4bad3b31931f2bab1e87be9e950850da2bffc9e24865c605395ec6cf46c7a62dcbb0c62b559882a2c26c8145e287f40655d37eee9ea490855f5a24d7633322aa1096ba5ee7031371eba979e207a0bf0283c19bbe08c87b81819027c00aec66e2ba2d4ea783ffbae7d10c497e8292ba67c5b03a2efe91ab5b50e6cca9ff02e55bdf2a3edf192871c49afd84c77c78097a6c6b8c628a65871ab4327870a5b6417a0aebeb0b159fba49a8cf2073b67c91d9b1ac7d2e4c9a7b7cadd1c1414f002cb59dbeeef94ec365fb3ce1f1c60af3a7f5e590e12f72a07cbed816b7f124cc8b2ebc9611c58a44b9474ba573f4af53d53af650ca0d2995e745c06d34dbc3e9928bdbd987e2fb86809b8a8dbef42cedfd0a6675faeb07e3b663faaa397f08b5b6182fad1ffdd93fcf73143b864629af1fb84c55235b2d44fc687a744b959ed80851c3e3aeccea17c634730aa791fe913d2ecad0938b2bc8f68cda133abbb07a6a816c5082ad5c3bab4e7a1bc742967716c15ccd189da51ec134fa77449eb2c47c1cc0fded10113cfd8257727de183c18117bc1de2d186f74f9836fb7291204a96efd858593ef8fb24a97ab2384d3f886f4e3e59bbedb2288f7d5c8d6c41d3d436170faa4ef0141e16aafa1ff6c8d232e1c851afc93816c919101cdf32012c00329ad0b7916eb96c3e01fe79fe682521bb7aa55b8e010eca97f0f4b1abdf19e6e9a01ed1e4220a32abfbea0fdb8a26314885b11cf181e5599b68fa1813bde5faf15b67782b017f9d6a6917cbef8ff54addf3bd2c8dd8830c592172387745010719ddd2458b9bf4468c5d88c87b9444c22d2039463f72421f2c3b8c76ce9a3f168abc5ee93bd4117de96be7bf5e18e153de8a3e931d519bbbb36d4b725201f85501abc8e5c78e2e01530ce2a63a24d3093f4ef17e6b1064f1c82d004058a8bbf68e315b09ee214df4d8862db329a5f5488f4cb86a092f50c9bd6ab90da9850c61cc9cc3daf60ed8e6d9ae759c2533760fbf50d7c10ad5c71a19c4cc746f8608a826c1c794db075417e3c60b47d708248b58736a576856a7e5d6a459003462691e1e5f316c641ac293da1be0c39518ec6a06a183b8eb184a8a6cfa8ac7751de30e5349b38c8480bc6c685afcb8ad0bfdcebe820b4e4b02b4687fa54423886c57afd2a8f571a9a027b948441c7674149abd893812ae09390f659bc4147c3b5e86677d00a434090ccf231264c6e52178c74692d2b2d5d47e1757c395a3578e8abfc8dfb96d44eb966dc17e0e8a28c831588d90fc14e608e726d98f05e2a97dfbaa3aa75e4ef625c842adb33249d67e09f7016dfca69fa4b922967c243410eb49d1dea75875cb7825acf48ed8d59fdb7a0b563bb108eedf33ac451a9fc3bce7a10d469d5467989cb8b73b13d8a77fecddf7f1b17f8635a7d595f52209de52c785144d09a633145655175178a8a14df0af67988a994eadd53a6bdfb22fe4d573c200f34dcb245536e742085168ac9695595ecf02be087d8d9108cadd8272799ab70274b0e102d3bb83ef3777577c14ff27d080ac62ec7c4cf43d9c18f03cffb142f1ef745c04af96364e089394f8c78049100df569969d19b6d93ca2c56032e3505c4e301fa10f9385040a2913adbdb19444975641ce83ad18d7b78c0fbaca3cb8fda239549dec4cef55aee9e49f9671423c179cfbec1de015835178ffa5fcb8430e5a3e7e91680d4eb0c3bd2250a216952ee2db79452a624036603590385034b6d7c7e711066a2e6b0157cabb99aab44a0147cc3377096f21937722d6264665dfe8c8e348a84de90fb2b7f45d31b30181cb11f2a53822f72213ca8616ac3aef3574aeb5bbf967787ee9007d99a0bc1969660ba5891f5f9a2fa7aa39a4b50892a51cdd6f39e8bdac68de46f8a87ba43978a53b535bdd446a6bad0fad81fc0afaf5b896a96cf6f5ddd9e4ba0c0bd828c8afe5cb925a514480908716f6b57b7bce5b7af5c7aa3945e72e3587a696954ab62460596d7145be06a6dc5995a4cbeadf5275e65c7196d26cb9de4c4bdc7716c9573c7423e7df88e34e70c56b199c851452acf0656a7d5ba427672ce3b3987397cfd610d32d8c0def0ccdcc521c92f8765ad6519b1d67e21bd00ccc215669f112a68ab2e3272d224b80a4152bb06674608a128a9eb6c40ecc36c730d0d9861f380a0321266292a32b2a1785d8b0177c0012d14b858e4def401ecd94925de44efbdb42f249f9cf9d3c6bd79e3c68e55d7fad04eb421a22672dcf887309e9a896422d2a855d8f48d4d3333a83e7d4cf9cb7db92ff7e53293a5d1b0fd28b44de8da5bcb341f5aa9bf15ada495381aad861b74a0e588ca268cf72e89c83d6bead929b3d95f9f5caddca1ccd172b41c4dd7831597b6038d865f2ed5d39ef63ce42875461d0c56b212597bf5e390495c0b7cac4bc88e0ea8a303e225d7bceeb2394170ad392d0bce5c3a3ae575f08619adf67e180cb33ea1527b864625eee0515353535353535353535353535323aa4495a81255a24adc4999edf09939be5485f3da1d970047e013902d962ed7466e6d50e5629cf7ffff434f3d14f7befaa53519a4f60c5112f4ee60f615c4bc5e41432f0fda4b182fbdde2b7f3dc397f3ff18c7cbd31af76890d420485e7d49f0e27009458e63e8256ac9ff954ff489bbe918a0b6d8bafdef5f0ffb176b83f65f423e94f158fd6a173e55261f7bfd908b715eec49a11fba50b8db30f9df4fe87f462fffe5b997218a7c1f666f7a1e867ff17a96e430cbbf7258ff7a7dc9230ebf810214b0a380ebcb353c2689310d43bcb1256d12164898b11c2343ed3a83d3156a7cc21a5625a5314f3862bc434be4e214d6341dce5c3824c2e662e1ca3c3624855de5900a34c65a0a194a2be04fa694243f4ab6cb0c5121cf7b93ec319e0dc2992c37572ce6855227825e384f7ffce5fd7dd682d812b9263fcc03bef9ffe4810744e040fc240e39ae2819b924b05a56052cd6c4e1ef673f83add19ec9e31ec60014b02f01703189523abfd633bab3faecde7aefd2cc59ccc62e8f5f8715f7b6da5e1c36e17340948d498cfd746f11b2082f94c24bb8d3d269b1268b95d3a25aaf60436880dd8bca621759e05b3a57112357632dafd99abbfbb94b961293d8c73ced9fb213693c6680a38dc9f25b3a39531c92ac19e78ca7c01ffe9b43bcf7ce8e9030eb72eca6b3063f54de3bd3c3d38967e654342a1a3fddccb3a77b3a9d4e33bafd74a2a9a20a4f78935bf3c880a597d327d5a699f99f81b9ca3c862251a1ce3824a9b5f6dae73530cc4b3bf535b7d5e1352aee7d27afe7cbf8f48106bd26c03cc3d0ab0bec59c21301058a0263b858e3d3635245b324861e6dcc4c1304dbd4b18f7c5ed2b3e31d41a2bb7025c89bb80691cec5d73421deaa7ffa9ebf1fe398312631ce20cef9ba2b57ac533b639d56ab87ce1ca1885ca3be213cc8285155666e92c4ae119dd6f9f27a40300443ac77aa27b55ac243e190e44d690d16d11ad4272b4e3497e98c13299d838af8a2357c547081619e3c8f3ae57836b01fa8bfc778860cb7b873a85ad12c353125d79920a76cd3db3d391be9591212ddca88f9556cf8f7c38966df77f3d72913b4f49bdf7ee741aef33bad7f6fb797bd6c0c9150f01e99f1392d3f09e9d1f828ef4248bf73211faa62ffee77349cc175180515d24021a665fb2d4174f9c43f5cfa27d8be6a55b23e26dfebccd9a72bbf16f0a33ddc700a06b189d27ad6022b9d96f599e2deb3d59a3b31eeebaff8984e676b4545aef353fad5edadd88374af2b2a42d9934e5b1ffb43a66125aa59c0bf3d329f5b6bb34254232ab666647454c6d66cedbeb4a390a83b17fad7cb75fea75e2dfd7ef7a2afff1f35929ac31e19f0779702d1243eaf15f6558637837e0c86fab1970975a9affaaabade7a58a13f4d1557713567a73cb5b55a7aff73fce12fb8877bdf0e0361a08ab353ec941efad2dcec666022f8dabd768f4ccaee5018082771aa3ad310fcfbf90716815f5c4bdb02ea2ccdd2accf9350095007eac2db761a303f1ef11289fba4ee3369bc47febff772f21ce757fc0aa7c23d89bb27514203c24b2f3f36c019dd2119511b13136daab8fcb4566aff7a8881ec77f41dddf2937d321bb5315126da5471156793b39fb0db6d0c6481c0d437431d9971aafa937d51320dc1bf01d4ce8060b1e7173814e5503caf5b24ea36aff98fd74afff19adba6977e45e8c76f5ef39a1a336b94791f6400d2253fca6bb2abdd2bf9706bdd6f8cd416fe2dbdf9f27de4b7d3dd1b6a4473aa1e7237c758bf506d0fddb404d1c8b6db70a379f237fa6fd5d823d96ae18c69cc7e6022ef52ecfd5abce8fe75a410265e687c956cdb8a2283d4512b5e6696665b57332eea272c9b7cde33ddd02bb486af44f09a5ee995aae8f192744c25d3498b7d8094cd730d004399452559b34c0e9944f317999aefdfa592141c89485419bc356e91dc3191a0f0016846839b77ce4d770bfb0eadb375a9903a527672d0f0793aa397c62747a4e5ce4eabc56291e438ee1cec634f892ae7071537768691f83771bcd3a0582ee70695d1d719f431a53a38d929757a6f6e480a8b7db16f6cce6e194387f4c5eee81fd0c47e41d497c77276fb633fc561ae5be356b96f55426c4cbd877bff3097e119cce829add6291dc5e996bebe979fe218d3bb8cf634c60086615febeb9ba3ea6841f2b1f5cb0ffa1b90283b9412b1ab9cd600b4ed396308e0448e0e2b478c2dceb2fef4f4dcd57adfda7a274fcc7e39dec802f147afeb02540928da376136cdf4dde91379ddbc29b3e9cad6a298d15483584a5a9d5d2cedee1e65ebfa540d9fe9d8d0d74d5d360b206bbad27af45890313639a0ff348837602ef798cbfc55060c4667e2a87383bb373066d2b2852d5c80a121084ce5c3a633faf467f3fcc7e6a213ff55c54de9df6c7f61ac9f8611bf0c2972199dc89337bcdd54e912edfd0f0b8088d9303125833827495f5a72ad343e94f8d5c118938ca3bfe2f8a702368491f4bbe5ab05be6c72ce395bbf54c1509a6525a3c59c5117ddb6afc40ff224015ab60f77894fe2fc182ff47e2fa6a4604800e11171dcd4bbfc3b5d124dc81df0e12a23840f3707236a78a1ca50501556a488028d263e880107267e1853860e4ddc1ac2a460d860ac1a7727d12e164b11465ffd725002a8b95058a6cfe9f3e66b3bf4ee0d469f2c48c744c9956ab2484b970b35b243445aa07c0a35b3c9fc5ce89c73ce199aa01d3513f731251f9356478f3249b9a51cd3184949cea5fcc9fde89ac0e1fc89ffe962fecf8311b3796cda6c7e439297d28439cc0d23f86822c152b258b3821fa2768a7ff6cd47e8cbda7f7ea57ff9bf6c78d4e492723eee50fde06a78f80fee73ce3c4cc8240f52247ffef642a28bbc1177a81eb652d1cc78cce633276287a9240e53527218eaa47990e47006b238c2043edcc66dd0800616c2c946e5aec860b2a029b22ab70b194d36830a07f479e343c28b1b644cb1c52c2e1b5270d95a09dcc3ceb64f8d0d3ee9e149131a1f960e396e945dc548d9211b7423853c86f08809438b9dd2c2491427f1cbd649807162b4b7931abe319bc71c5e80f12103a4b27516d9ce575469e2c46e92bf6bc3a6d921b7554d6818da3660a0d8d8cb67658b5b98e02e6e9f9eb84eec1a2abcbd238685f6a90cafa6905c9909d3f71b8dbb8412471039d3101f1c4420bd7c84b28491c4079b4840480ce16c4cec60735d0c3eb63209c2730b0d381f258450474f86858c8fab92f7c97ca96bdad5c6b7ba722e0c7499cb3ce64e5c962b5341f0e25b319e36cf56a52489eb4aa7ce792bf60ac58b8eb32a033a3ab21f2d61c070f72c289de245eb8728aa703b4745e2a832a896b4f592552eadf464add7ff2f5de85a7b584147eaaab5562c65dee5b47476f4742293cd440142810262eca99b01e624cdf457a71b4c53bdc88421e2821022a4d85a00600e222eec0842c27df57232c7ee7d50a1f2aa4fb8d0056c50c610c5d19bf59d4e4bc9304b415d7096a43e3f3fb2a492e24692c4c89c759c7356116e46e851f2ad18d062d7c0589836ce72a745ab30596c26540ee1888a84dc36348e1608472b615af292f654a7df782e27447f0c2c37a76c462749d249ede727c200396f960e54ff42fc81d322453772a3052b2671b5e0898b4dabcaf63d2523d7393ed9fe6d88f566d6da048cd18f9b4dc930f60865a4bae27fca044ced923f36d9924a8a7b360583169316c4b792f7569f204ae9be0940e52333ecde1fa738ceb13a8fcecfb15bfac2011bfb89cbfb70d11b92ca0eadd8883a5157da2cd9ec968e6c925225e9b2d9d9ec523a5117809530bc2d595b49e7dc75cb1e9ad91a197a39d2e243a5bd7754b1b4632389dc51fa4f9762efda4eb683e2e065aec81ae1ecaed2bc9dabba5a8081b98500564480670aca3c8545a15138c67420c86485454f21c8ed56d962b17242fa36889cdae5572fec85bc306ccab14156088c8d4012dbee07523accd99bbd854461b9062dc4a9bed89ba7745aa4746199dafdd732ef4654f6af2fbb87cd5a1224638aec10ee68458c6c3089786c0d480e231ca1efc546e0e6463e7bfdec6e94d7440385d6ac1754a94c2da5765f6c49539c75b8686d2aa98bad246290daa552f025f7953c02546c9dbda55229a3b08422fad0da99425a4938ba8d8095ffbd71f327ac29d96ce5ec0652d252f18900179baa74b6da5a0825673a73d4b0744e7b79b32d396edf5a6aad0d9588a8340d1c4f992000f375000c0e0a45c3e12cce8218421a5a3d34028845db0cc586b4882c120dc20cc4610cc301c830830c300a0064468848ac02cabfc87410cb8596091f45aeb0dc6641e7db2c00aedea78f0d93edecbf94c42d2206902a00f3500b08d82e714623922525da5d4309240059d4018d48f0c093304d20e7c40961324a475a54e4872764e13c421f08d0e9537a4748e70c6f49bb6b0745e5041f863ad3b5c2e59b6978b404273cdb6bd504658290fbea021aeb086e168d7016cde134de39d2bec8c1c0dc7589866019acee612701aa4dae9c8a8c770743e1c5e339d7d0ef3490dcb58d40b649d7b28076c59939d1e49112335ee30a18c4bc084063b0083e806ba7bf974013285cd2974298b81ea97040e805589bda3b0673daecdd70e6597248724ccc7f21959a97c070eb4a852b6af2bd8e9fc9c78bda354ad42c9107e8a16f75805632f671c63d80fd112d18efb65168017a752924b7c70845a19d140143c2242f851672f5705e380750bcb3efae393a0362374161ed5e57a908b55e0b975adb04f6315b19380d317264abe092673c89a0066058422077303333f56f74851ea473029485ceb3f8a5214ba141bedac7bbb6c0d5944d2fa0e5648970c0c5bce7a49333448fdef2aa36e3a5b087cd14d2a89dcb48ed04bb86ab14a3f3712682580b13dc54adaf11825a7faaa18a489d8461b6c7ae7fb0d18c72257fd86c2295ccde6f42d07b5fe8f2f69236064b6c5597c5a3d09c4020715703448dab0febe301196dc80e7e450edddd3068e73f1f7f9a30150a09e02a1f514010b7d0a78a0041a7d911fc725cf46e774cfd60bc994e345180ee6764510adf187804478d7716ca80446170ff2e5b52d830bea36a1702c807b31ad3ab90b9caae992df0d0ff05f865fa94a1dbfcfae8be13e17e7552d7f4d034328a2e091d9bd50eb02dfe5da51f86a102bacea8a45dfff5e797d54c0202ede5fdda348f04045955ca3b0208e8f8231f15a747cef28a3d5bc7c7ea3e09e2bc065b023fd0edb45ed14fc66c63bc69010f64413f7c40c57096e6a2031ed870cdcfce3bf716a1a6d371c246edc4051085b54d62a7dea26927bdd8427d6cc5e50126e5da9215a07c3b69eba6245a487f6f980783f34aefb3b44da174d11f4a6e389dfebed2f3382ef5b7ad04777e4e5cc2f776aea79626285f000fae79696b6e84b829baa2ac1e8dcd3d88a13797295cf58aae46d68ab50329525351162aa04f2f425fcf42c7f0aecaea0d1a2d39d2d0c7aa2b9343fee4f372e1c35758c80d74cb12be774c03bab6162e20e7a5565cc5349027f9d963b6d2c963b40e3c499e584c03ff0b51d54a966940d7b77f87f13e075d3cc41041dc5010d22ef6da1ca121b587aae8ec19f5d5cbe8cf3373a3b98fab1f887ef630efa28d69d1db0c9d40254950cc06d9636935ab61befeb074bd1cc4b08f9493efa46de07f71170b3c464e3cc7021cf2e43943a89fe20e302775dc53dcd0ad0979b57c69d33d0c12d713bf06db45693f45ac382759fc13be887728b9f0ef56d915c720d033a5532341885e710dcfd5a5099d038d88ac8025d58834c7d1fa46a5e051f44678b880033773c08f979c28b9282e4efd3b3634172cc1dfb8f4aa3186474c49c879abf09b40b21519ad8dd7309507d4d25df423e81f538953c3b9a3f5b515f627a4dd20912c5168f11022cda0b2940bb0af0bd00c464eb4f3c106b51477fe305c70bb244b2166f9a8f2a12ceab6f1103613041897dc5e484aa0587f54f66feb694dec89f56bdd4095504280a5db19699fb74dbdab34fba35bfd9e1b012fb6195d6f51f7c93673ba99864c0246651302636fced7d221753453dd64db35dafdb76a6b81b413963fb8e584dc7e802ee2d3c58b2940f14d63c302cce0f66dd0eb10070d1af1ac381218e942658dec100a0c2398c31475db313ac71aa1d3989ca16d70224b75c8ca97ddd487ac0b304b157cff4e1f137bc8baca84391cb0135585f633fa8e642a78d9a488d83449a451a6a50388dd85dedaacadce57e7a84e3a6cb5f111e65285a870c61dd8e39a82bc4684a6a77d213c9a8cfede09123de9e23a8823ebc6e59461de83f06e1a356207c13dc311c44511e925c4832d709b08a718fe27121271132ace33cdf565de01a5acf9c7c612ba23a2446880d6a9acca84e6a5c1a53b7b869c5e9ac67daac99d6fb5431f0a3b9b4529c80b2f7f712f4c7b1888e580ac584bb9941646253f22a62fc38017a7ac4d8687b6c8018e4564b3653648bd6a85b474f24a05746cb6c53e7796970a036b33045c7f487fa72fbdd7cc6d25b45c1faf90e32ea360c7d19f91eaab4e896b7d5a9f09263b5b9f425fe6860e394ae7405f37d4526f7e2c36606fddad76cc7187337e66c1e7572c45b2a9de4d8014b4d830034bccdccdc0001a75f8520d6994b5b860daf47589569cbfc7299c6aebd23247172b0c470966aebf29fce3595231966d76cad560cfd0c706083d007241b4649ff407197ca0f9a4a21b78ca9a1659020892ed13788891e897852d1fe9481f8c75330eb81f8e5181f6961e0f464e85175a68aee4ab810f4c464943a63553b04da90a5a044be3b404100126a5bd147821beb0aa97fd450a5aadc2b783840e4168a4893177d84a0c833e527c37c01cac30d01cffaad094be9aca23e1b0a9056d2142d5900c12d31d0a4ec8e29a2cc4b4230504d53a085a1ac45700db07c1e9a44c50940a156be315dd38106fae49a8dbdc7b08ec1608842969b6f78860c91d3020e32839df24e74e3cdfbc140abbe7c04267d29174258f9582cb9300801c3b4232ea74e5e59d3c9205ecfbd19400d891f07fa0732dc3234e9b5fb0030db4cf175766785ecf363ae71b146aaa57e5d83941d3cfd3635ab21aca5f755a9d524b6e36bb6a077c4023af0d92b51fcdc0eabcacc22968a03db5d699fbfd606baaab153392f084478a94590acb274543dc07b1f4ae124af010bb95d5f78e8ae230188ca1c36c237b572956fa3b0bc374e57890ba6ceceb2ffa63f514c6427c69d3ed6608b4a6dd92ea1f857176d85d314d9016673f1177cbf6579290442f111378516435316da089366c0dac20da75e875d6a31d0aa8e3ad7e03b8e973cd0634a5b0b83a855895457865ea88d3a12de50c589d13cca6b18336752c5eaab868cc7767a3c24e41b6a420cb7fdf9986e88f52033015d4cc410310c6f223ec9b25e4b0d15adbf9a2217b76771d65fea1f689edf6096e3bc1c1a08d6923dafad7b254210806ad018b5b05b212fef6d98bc0995e53d042366fd607e3d755342e3feefdd0c95a9c408b9b2c5ba637ea4a44d7d2a3ebe200f5934a1bda80ea6ba6780ed3904a8edde7d6ad1d53e6406c86cfe3da80d603e031b48adce4fd4dd0665604a0bc7350f05df1e0438508b5b2f34d46c2d458266833c2726b5c9e6f4b0aa903a914876f2473ae2f998b08ac6faed371c07fbf03d330130f067b513fa0d74d0ea70315a65561adde09eff93bfc91d51cc09a30c58b0490db6a8cad8bb9d2a7b62b1ca32d029fb346cd85cfcc79e1f6000d8d632b56011b9e13556f41160dabb82d4564164c6bde062a70bd479167f197729254fcfb1bd0a222cc4a6711fe618fbbb67222f323605524d95918ad4f2233d285848a90555c20d390396e1d41377da071593729a0ffbb5c53b1ca252187c114024aad184db8c65fbc3443ffa503aef6f6b443b8fc03e840e0e2ae2c940fe4218fb1e0caf1f59caf9e21948e58af3a96e03ca131a6549430e92c189ad6e5e8c7d614351afcd0bcc57fa85daae3565111db8815df5b22b67e37cfffc437d8b42b02a4128bc76c5d6e600b2f975835e69befb7185c5c19895a56865d98df47aa2daf7b83e43ad13b62f59e50946df2ec27d63b50ef9e4b420418668d24356af628717ad4725a746805008570e6a8371839ee4147f611c0630cd06720ef9949a52d263c462c8299514a7261b3cb3c67ef5d2c6938e156d4d8b66cd3edd1f5f49a1bf140a4e042eb0c1568b956e485acdc50eed60dbdeb24742e10dae35a8c01894dfdc3cec6ff207eea4848222489c5a8e89a3ecd81020261209e0e2e1d3169a376c084690b08696542499366a4c000a0b5c74648c9a46619db9a06690520677509250bcfd94d241751f2d94f2476090632fa9f3b6c8f051b290e12c4aaad0f4033014e97f86d545f35a7357e36d5c16fa511ddab1ccf5f77077ac2fadf86885961d9ef4fee9ebd89688b2e1078b89e6fa114880dbc18658329095b02870548852d501862b07ec1ff63953488534086f9f31257da8b1c2c03c9b5d12f2e5a4654816e121bf78e4e66e7f12380add078d5f65c8d820bf78823baa5f859bff3ec62408e82fe57290926be39d1b1d0880248e9f11ea2ea8f40beaa00b22dc085cabd9e7c5cf4562c0ea00c5166f9faf3afa0f66c473e01a94da4e271d183916970b9e839902a0a3ac645574fd2e9a483da7dc62a170d8cc402ed7c2844d77516b951c02ce7aa50abbc146c6f0dd5f69d206410f620ee7d37e87a962143949a7a5291739aa0b8704426e69775d80412171eaf722a0d9a30822db32f306c48d1fdbfa1872669f5f798b73a9c6f200d9c7f23c0c1fcc6505c0000ab9b4f4b278348b504683b22ecc7d2a3db71b70a178cd7ccae291ea71acb4327a131e97001ab0f371b1a890545250f04956a2ca3b2cdc8e207f5604aa5494ab6b4d4db62e431ec598bb3855f337aff68f45434e8ab1085d4dceaaee28a2403c9a57b9a3141f8d506534fe0882bd4b69f8a1b4218e820f8604f36b2b7ee6bf4ffb3fd46ccabb5742ea2735a4b025423e28e33da9b7335216893640bf8107144df69ccdb2b9d2630e6d58ddb6217012636ce83e15a22b8082dd5cdf3b70a8615e45cac2681a18e2fbddc10ad2609b8eb7bb5a22eea2df5aab89414307aa386c569700c03a6c362d69900d2206f6e0ba027bb91884e5bbc6cb1e2069f69721ba497428e4b757dcf951590db435dc8028f6303bcf5588a7b6df80cc37c196c0cf4a49348aa2b7c840e61c402e67b9455a8eedac641be9a8691d7328270966f351492c319535319c87d7d9c993ab45ef941071dd356cb01b7fb5acf4a3c375d5e78af09430107366b9239cf6557a1779fac634c1dac0b613b30734b7aa0724d06b807d0a3db56d88e142a90da79bbf79e40c962aa41eab912565212e751791853a70bf1b334bcc5220c8a4111a78c7685f0c6bee417ecd5d3f5a79f66c8421a0b1301d45cac96eae789646c1170ba243aee88bfbf38961da1450e33e30fb97acf0643a41dc7b64356ac2b28510072eb9252334ae4049475b9b36749310c775cbd44e6feb790de2bdd12a3f3910627b6b83ec44129a4d6ae43c96e6e0a0df7e1367db7e09757eca8194bc625620b3a49de4a2d1d209827d45c07832e5f07d36d343138ae0af581ab39b2926fcf9f251044f39cb2955b26522c1dc7ffd0db01746586d000d5c501419888b48a983ba610e3fc8cd03bc246b11a87589436eda5b4d73f909aeaff3af8f765482455f7fc373cb749181b7f443ebdbfe19e49b4ab659deb0ce86b3b14e4b8b104bb5fc4d9612087a2a1cfceb517e3bf768451716ec34a431ea8b7d2b8301d54ef07ef1c6cc5cfbfb63f5e44564b03715262a4083fd52f1f129818f9ff8f48ece436b44f027ba7aac7e7c2b5b95616229e59de387e47fffaccd244c89c7561a069447fd337098fde978ac6235da0516b2ed64682836bd3ce8ebd40598371200bffd9e6864313fa7a982a2884d1b8baee1fb94573aa8c11065803cf11cdf4f314b609bf892aea4cf31efb907430ba073165e25f816d4887c4fd5b7f40bc418a6585f6b3b3a766ee3609491c4a2158278eeb255b63b0ff5fc27ad481ed1ab35fd7369aae420f34680ace96afb3c086cf2c39396f66fc834837b165955e6ddcfa52ccf887c695d9c798aa71f9796a31b8418c0088f31a940ae153be166421af8b7a648a5b83bbd6d1392fc4741f0cd47e50dbad6b078a124320c23a84fddedc47814979b699f22970f5b7d7623dfbf286c71b39bffde10caaf6f486ae7ed9ee2f947e5c8d851ec742d737812ee09519eae64757b83cbb68d35454480890083b8a92b95fbe1610132c96748467559a56f6b8636ab7ea49b6f87bda78c4d73421209173a760af6ddc44ecfe2b5046b699030288b2eb5e8833c8e9820a43f843e76d7ae18fd654f5f1e7c62921af61c02b2e70b820503035b15ab1c405768174398e3dbd203fd471e243a5b224d3491a0a4e20f52402642eb0cc8f5798a053f034355e6a2838f3d3d7346fbe17ccbe208f7f541cb9b0624bf2d046cf6efd4d2e4326c80fe3a143fac55df0ab23e29511fb69fdb4e9894a906e5e9b6fda5ed679042c70781bb2d63f4118575b6695eb3341c7e937e14842570c7c392adc17239ea33b412ccbf6dc037116e5d6c8f4800793b3d2d41a5dcc14c38b00ee9bcbc02b31ad3005f76237b72a9ba4f06a72a904b5c3944a01668d396127d187e15fe91b3ced7540dde51bd6f990897f99d6063427f02d3c51f0485bf8ad70376c93a3996a9d47361e435c3be384bc00a8e51baf148658d47f3045295584f7866e5c1739657d8673c1b45f40168f20447f10b86eaf053b4a58a8b3d64877505287af6c802ecac12112f70db754e1b7dd572a71ae65e79b15da5aa81644c46a354883be773fa9e54e0aaa776004e103da6f02a87b91383b8a5c46e2ee82366142037d442198261fdc2f6c7b8920cb6d861dd49f6a1a2bbdc2c62450b7c031d12c6a5985dbafd22f2d682e85b1117a565365746ce2ae1e1aab72587043a06613812b4e1d0a450e6076ce4c78ef0e2b222df0821bf15c14f13f441c26c621a6882a6a7940d4c492f0219c5546e4f8b39c7e1721255dc54be7cdf282729bf28eb010fb8da8e5146e6dd6e9b43ecd44a8b2316f75e0d7cb62328be0afde38f2b20bf48e79c5972f3b20c5177ccac5dabb0efe4078e9e5f5716dd2ccfccc713c42a3386f1312e44bae802bcfc4e84018a74951f0694b4523461e6a06a753096e792de8d3c68693b65eabc329011bc0b2f10ea415677657029f1ab76168b58e3ee2fa36acaf4f090815dbc24969d4b1ae25683834bce4f1e55c6a74eb392d83e553289286c0f7ec2488658799bc31f12c3d9a936d6d264f8ffe358cf90a24cfc6670f2bacc12fea76527dc284a18983773a0fa96ab4d085ecfd4f9f1f987bb9c05e8236501fac370b12398331f3b9b2195bdd91309fd53a43e3185e7991a889b363b4ae471b28acc29f7e6b55b39b16ee98b32b736b13657a795909fe3c8fac56caeafc607eed624c4fde1df75352b25177a646a5d32914c4012d0da1af382640cd278c61fb2c0d030dab0d597f6ca9f5e742b696428ef27f5b3de6d4828e15a5eba07b9c9c9f11d7539136a412b891cf688573d2b6c4811521712539314c4a574491bc1d84b9812b19d54e2b9a110d855a562caa871000611ad1d03f93e87646d9722a4fd8df5e5709c09823f71039af61d66cd71fa88b888b09ef683f494cb3f79550555036b81ac328785bb5ab36274f7946af8f27895c25a3ce85700461f49631fe1a2d45c9a670daa69aeacca5701a719bc29237a92aae00a50e8544cdbcd1f266c2571b584e248d710d19c2eaa0dcc75df1d99bebda0f05218a343ba00bacce8790a943b1a703263c802d3e321d64364692ac2fc413cdc4ab04344a0108d7b51294efb270ef0fc38c997880413f792da196c107feae4cbf8ce5052451e58bd8d9dadf53ca980a18f283c0c9a7d2544eef3b4e36c0b530cedd61889a26e6fa520832e08fe831c9dc29b12844b9ef6b60c95aab7256b88b5828b6215162ac554eb293f90598de8f31d103ae20a2eacaf22a477f6e990c9ce44579f19fa2172f8c594fb11748994e1eda79b08b1756fe27f1536202d49513fddb224a6d511dfd31d471beb8b15ddd8ad972ff8946abfe695bdd868ef6aaa09f5867cacf9ef978ecda4ec4ffab74b7b490c417e0206d49b6c82f2a91467f4793a660949dda96843b192e672834b912baed17498a00f5bc6558d2a8f144bd91bcd9ab8850231cc97029f6b54bc156dddbec48b4870053b532578dfbddbb098c5b22e9fa1e5f9105f5f9b4889c5bf7782b8eed81467bfb3baa7fd651a3f595fd2fda2b40a7a71f52347b75b5db126e4f386eed32bcb565487eba9cfc844111a7acccbe548fbf0ae334aec3fe92c8c566ba32cebb76b4ca92eb059234bb0da56d8a6f69bf104b01c2fa4078b4f69622437629205914c4115361c604269c420cb1e4177340fce668f08726d44621876178be3830fa7e0230c3102183e0c06e386e74e11220921f044bb1a71142b140e95875463a46ef3907da1928977b2b50e7d40d0a72a3d0682b43acc557708938ae8f3a36f943a4f8138d93ce4431d1aec8d24d0ef071b6d02be35c33407279dc08f041431f6b2ac3987a79e905faf7b9b0de2be83eeb7bb84c37d3d2cba5da9715e56feb87910a75aaf95dd87b658d2aa58673370bb919e8108fd1f0a077053ce1f25bf90e12ffb29d24f7da7938f78410416609880214798ee2a096adea7672f061f998601254f2298695a0d17330b32b4e1826d08fdb36f84b7cdc04b06e1518aa62a73d5977903dd337d325f70624aa70e4c4d2ca0397dc3d60330617e51ba263815c892dd17a6bbe0690fae36f17bf693ee7b1db131a0774511720b218a9a0100bebef7218fbf49d23f3265ce85f12f2b0004bb04d1392f882589123727e026231a95c57fd969203abc653597e0dcc4b00e14f85c3e13c2298cb746a83148721846246bd84aed3b6c9c02e78f07e08cb5d6b674f16da47f908103af4fc950aa57d216bb14b664bdc0eb304982d333bb56acc402b29758b30f38766335eb669b311bacf8dc5061bbb9b239649ef30b7e014a6807ffe7ebaeedcbdf4bf11d2296722e9c3e490209e85981b642196a66256deff89795b88bb9a173bccc954503c0282e366fd2008df51958565dd7460b32b9565c435228bfa3c4029610cf890bd7c2e91f964861b4c2850bacd0d364029c57d86008ede09ba5a23e61578eca03785cbf5cbc6b6af1ff46432d0db0899ee8f35537af9fd25c8b58217f4f702c0914038548a5c8f4a599b20f77784507d67e3462a9db6cb58bc2aa5325dce72665569eab679a33013d835bb471d8d8154d2a2dff60902c7556d6dc5e5b63d63b7f6226d7d4788d789bd501ff0b0319b658f9ac35a5b20e056215c3a96a3557e1f9f4aba2cb9d97bfdf50e7bf4dfa6b24f0e03e26bba1490607c34fd03a83a7e7037ddd097bd053b4101df7d1e9bce9dfe068366db8469e8d656378ce2791ca52a8be691e7079e11d37be1ae3968e6d04bf555c0af53d45c36442d2bb7b17ced21c228c2a72f62ee5eebc6f318eff01aef77daadf624d0bef28ebc6a6c00c84e004fa1150e487e801feed9dc05c45835452d8b4789aa8150574d38b3fb1cfa2c03c7d06f7ab3035714d7a5bc310d7b5518fb798b659c3d4d2fb0b6ad16478aabe7c24da4b81622b325f88ad3365499e3f6d43ba6a001c1ccbc0e19445f8c79f90eaba7e2de12106115534e863090413b77c730f6b4ddb9d152acd20d6d5dc2823c9b435503541d3404d6c2dfa64b271fe99e6586762c76a6bb1c41f7180b704b9f74a3d306c8d574e51f5113550dd59f1158465eb1b8a2e0e121552d9caecbffd90818a31828e18a65d9bfd93f2886ec45c5a6d7c174cc924e5d32fe39b4c418262a21ce0b8aed9ce885653d91c4576080af8909ce44880b6b8230f7de57126609cf70f76782be0de4549d89e1b555f1c0148c24a0736a66aa7d07de214915caaef04925b9ddb3253edc1a620bc2c9779444110b14bd7b818c411d54e59e0d5ae866bf3f8845e058387fce41650ddd4a4ba1c231ffb86e7b5e9bc237a7d7391e652e2ff7179bfb048241d075024223afd1214dc8803bc882f5cdd38883618e225df942a244b674fd741ee29d7f5a897e67c54976c05b5bbb68b38a8452841f72ba7a2ea249d302b76c5cf97572b56dda333a2364f018fa2399e52c11854418a40d08b6850502adf42392ed9edda6a6bcf80af8aa8e7da9a9c14d60a974e3dfd1b9e4a6362d5193ff746869b36051cee9165e63fa5755d0e8d3ca3a79df7849d13d88cf6f25e54224182092ac7f62d08e9a4f11ee58ba1c5230bd6f8f730b6d0d5f466a64a5c91204c165c0aafd886634d3b06cf3e134255d9e9f0cd4dd8b3f484e3828a0b7b7c9c59e3926e712b9e472d8d51a9217d003cd662afda8cedab225ccf0ed856d067099dd523708403a2cbc4355c282affc3c65baf9938ac7bcabcd806705cd18d8ba60896eb3612aa81b82231de893a864cd2636286080638282225de2b8623537c06be7a5b1535073a86cdd1ac96145397fcc7c5964651c17e363a17189f7b8afe85573ed4c604091cfe3d1f8b07328d6a9a805962e4e7fe6e29ebed44d1a0259d592615d5429b644f7d5c823808b3fa41a8d032d49262caa061636d0adaec10491c7c871b29f481a665015d57599dc4525ad529ad6ead9b418e7e08687245a51d36225b640e3d96e4968d103562698a7119cf4f634c239a4b9d09618bb96122cd3066901462cb8c9779800517d0358692a570571ba5c73a53581817c45d75d703d0f1e5ce5a01a51c2738afb61ed6ad66865f3e9a2af0c9db0f2ba211b36fccde75519e741d548d2cdd686eb502c374485fd03f09c3508d9953ba14198b9411acb2b753c496d2964f3225730820cb302213551981803ec18f9564340ac62c60a25f686145e020f1c26d440c9222040527b0b2df9829bbfa7eb2a01e92c4e8991214f54f2e0ba4b232ceb250ac46e49fbf1b5a531b4dc68c6111e8f153c6ea175d47836a83bd0bf5a5651bda2b9a1d14e56e0f14ada441f348f07d4a32f9e4886c885855a25972245564434006e4abeec7cdc0f13a6c26e29c1afeb566a07602c5fdef7bd77e02aac1b7c4007fd862f9430a04b870ffb292c732d20d431b1b07d9b1c3aa188c06bfcc4def30929285544ed7d53bf9560d237576a7a40eccf9fdf2364e68f714f455f6332029b0fea708a54c87f8993b1f59af0f910fa9b4af53cc696e1cc033d6df3a1fde8092616711d5324a8a95007b5dcd175009349036995f4b8d3989eebe7246e62421055986317443158f3f39f122394e5e61fe6182258263f5671376ba44b6369572934403451fd0709c91a9d3903ae5ad9cdf58a7a50146d7125ce297afd14637f96aa1409ae689eb1fa4dc1bc281739a2fa383967f1f3df6cbe3f9a03068f2843ed684da53f3dae2c556f78b712899c4c5d0b6469980a982aaf352f33c05d59c46cc89743137278957b2c683d8a766f66af5abac3d13d7e19e1b9c8d62dfb91ee7fb0efcc8a221804bc0090cf20bda7995cd03febba1331b88fb025031bac4b5e7c76ea019ee328d2da5aab026a2ef01be10698036022b8fc9c00291a2388a7ac6652f6d9e03d028110732526ebe1ce85db18f5fc92c338ec8fcffbb5c63263438712bfe4a11301b735779113bf6401c1114ba2a2efa64e22de5d7c377232e96eab38fea62b1d5ae8579eeb17fc755408992037c0736d490f4430a1949b95da9d176a38175af1b1073284004615ba5e908cb8da86ef8fcc074a73e32bf09da7c7953673f488bc022c124279b8832c5d05abbf00831ffbcfc1dad9422d5669c6f462bdd82862a1665e7059854d3669742a1ab6462ef6ae319b6cd058fc8be5e9b0aa2c8fc61b36a170e0154747f3ab28310872150ee60ef9db3412104b5eccb2be1ffe36fa3d0dafc26ccdcc5dd914b102a3a0ff60a4e8c4115519cd460d2f06ccf4209307ff780ecf7ad03e79de666a343406f39f3aa0e679a5ac8c148b44d27328694e68b4c0ac3a45edddf6fe0b3b0b794d2838b49bd2d92c6f04a189ea7dab30df8f4423527b338c8520d12e0d0d59cb5c0682176cce4a20fb8cbddc1177b141076aa3d4a3d77241b591ecb6e53774427d80989c8c479da90b308724a9b58cc769dec0931e43b9b012983c4a0be17ce44f96b1f21f58131dc02527609ad0485693a9a5f7b047e44137246307d4fc65c73b3e32c7c95851056584702a4d1b7ba39d280789858a76d2721441843ccb174d1c225cf14e78c470bf6e8520f6f0dc95887287b86b3018274c43014c021a602029a89cb06105a4f6ecced5fa8b694d63c63c0794b41e79d36b4dc4464d306652622dccc3f633069c868dcfbf585e0eab2e0fdfa3d361e7a556a4c7b25e2b052c79da6e928e6c9c8b002dad39f6cc6786ac403a0dd7852d9cf3228b0b57316c1f8a0d8e3363ffdd8b17d9d0fa80c0be5d631582e421d639874ad16db8eae4061cd0da89f2476fc8e92d511c194791dcc209f045aefec1be07aa61383c8273ff9edda665da16598b20d60ec36f7e06f9ef399009e2bd071d1a8da6d479518a81f818dd30bedadad5935a9283417544d02a3f6d78bd02a6b1762a7e68355974ad65272052c3502bc664660b7a21f98f8c904c53cc7136e914c9ee5348e0c84d1662398637ba4be1510bf7f1e41b9fb76ba52f378c8075d8e5a0437df0781cd02a3a99c70a601b3a28bcd1f990ef996db71766ac4ce5d606fc9bf730b566e826b4a72902c7e6dc768125408fda297fd8ed240061d5325da322264c88c890f4569ae149a266dcd2aa4cd778aea5c951d57ece8b67b197f423258ea21a49742ad72ef6d5f7a4163242dccbc45dfb6dc3ffcdd92f91e765bf2b15326cc3a7598f120b0260e981cd36421c302f8248f50959547419afaadbde9b2c82d4df2bbe6da1fc01543e221eb6e0aa6b4db1f319d31f186ef4f03156fa6b6de475e38f63f50e216c92a2e04e8208b681c2bc0da0c22096f8047bbccfcd7aa31605aba5fafe05069dd4b7be975e8b82d555fd3abd2c0a5d059ed5987702d42033f2fd0e97c344dd28449c3f3acab07dcbbb3003470342fcc1d0ae75a60ec301c838e64f44fec139c904539ca9d6e108ad7b8310aaa073f578f90776fe2022fcc73a2315de7b8dd798c469a1927d76db380b1b3a4736851cc8319918ab4445b60bcacbc0f19c5ee3c550a6ef528fa424383d7fd68656332160b204cf12a2dbdfd5e1f6a457be9080b0e339cd5fc3e61e877e113b9e9e2fa72747863d0ff42b62cb719f69b6c95edab510eac3d760ccc0f243344e8edd88315b247333e894812b175be8713a8b8f772afd537c28e5c3c6f13238ced174a9acf24cd394b36ee0e533d7a782b540a7a0d5119491dd7ff49d13e8b6a10a7f3b2dcd5d05408f34f205194c0b3ca1827ac5dac5166e21da048ed066b7e39d5768343507af071902b4010d82d1c7f0fbf11f2dcddb004eeef338d8d8c5d423579b3ce2bc2f82e24b189843b5e5ea5990fd2339c406f2213d29540ec83e981f02042e13b508c4f6641ada64b951b9f0eba7084c6e41837330448874db83f854299167eb7fd8d7a3061545b347020d8542c2ee7cdbf5189ab7fa6ccfc6ea290d20ad8df4792fe9a855313ed12d0d9961e01d01d16c4eb400d461e07102507eeee53269f6af010742d46ae1cee875864ef07e5762447e59c670e650b95a3ae47595e0e720e11b820a156acc8fb72dfea4f0c28a4b2ebaf0904ed10abedd09bde7d549fee840621e1b3fa10494cb0852647dcb34453222e2a8e92f193d4155151150664d1f910c60dd4257c6c4dbca9748ee0576dbd3c0543ec63a661f8e8361c577f3d2c284f1167ead461ac8f1e955a3bd2272a707033bd62ba2b1f499c5db43cd206b7bb875e0df2a1637c6f5e36a89cec7a67a22e0dbee948b423e19c81bfe0cd3eb05401715e1cb7e01cced2b78ea90189bcd0939eaab424c7831a712bdbcd71dc4a8106128e4042a9dd2753b20fd8248ad25db76d530134f1c8538f8000409b5f2872f0fff29aff71c7e2329feeaa117609e06798ed78bbd1a9530cec96bc3d299b56f6eb05858b352f3f72820ae025b12dea2d16444e0b31573a6c7a619ddf44fedc2a9eb11002f7f7ec3f7a3db9bcf6a318178ba2400e18f318e862129e2a3c80e754dfe3819ecc769f59ea64f92a0f422eaf1e575af24fb5161ce5fd52f39cbf5f7cc0d2c38ef76549db76ad5c7615c03c95d16b177fcc6632161e177ad8b69c59e9d8efbdb267fb2fc3ab53153bfb5b83adcc28e7a1450c73ebe42440baa3ed270be97acfab25b305c0d0e7795b31ee9b7ac740c7ec326deed86e360c77c22c4f5a7c9cedd987b54898be94fd4d626c8abe2edbec0e3e46583a86a01c2dc787a15ce8eac6e1e5a4bd06aaf1fad713ad7c365e54ecb2bcaf6360088392983f1eccd9809db41d8c12bc617594553b230de7a915cbcfe98771a13b17e0ee023accc1c532f004eac584c991de238e080bf012a647d29cf4ccdda0ba839d57567d2d168d1e4485914bf384b61c3e0a526ee661cc04d8a0948df7f2cc240bdb2c261eb23802c08730ee45a9f2876a8c31d9bb2633668050476083ed8ce92c95600a5bb9671de71d0b72cd462f619a9d6c4b9e172e608297afb78680d05709fcbbca0ba52371c03d548fe43ccb3a44958903434fe28e4d4c5d72ce7000417d5ed53d05c90dc7a2188d5b2a42d007b4f8d9c74dcf5ff67d90bdbdb1cc938cda3da5007edd5752cb44ba4a687a07806eab904265d326f65484feb1d7c6f36d2cab253ea19172959963aca1348f6f0d69b496c7b56aaf9418bac8ad32735a0f0d4c41552c7d1f14787c742292d4e4a3b0522725cc69d44d81fa665cbfee131da510420f04e14bdfce135c64f15b3110ebde168a8131f47562444acec7a8b7d82d6523b55835e12fb1028e67b6c0e287cb67d56857c9d070a27623822287613b20d608c76e8d6d9da195b8cda8a3d1c745a18719369a1962096e950c94bb69dd043634c0593135b565a8449252d6c3e35341a25c411ef744c890f678401091ccddd57c83b112931079b7895ce83213a4af781126ba57a30f59201d1592fae4c10c7eaa2650cc4b2c48b3b5856700151bccd0a3f701ff2eafd650f7ab05984469bd5bb301e62dcafc7400768d729c86d44a36e1f09919830fc72b1d7fa834bc2c0f81e632edc0989a7ef804782cb0095bfa82e6b726c5d9d3dd29907ccb504d438036949978c77f7662f901872c2366cbedd86d4c40c325214c9b2c19e01aec6910e6e2a572910071a3cd99a3d36c9a9d2fec045b5a8050457c9bab4db05df34c99b25c59e676c021a47330ce45794dd6a4e4f4992b423aebd33fa5e2ba5914d2329216bf0445fd383a42f3c6dba6921d6aa3a197e35c7e39e4b3e6a6f74ab052a8ccc16c5335270e4e20162a505f7dcc9c43204194e9e1852016f09a1b45b26e71332a3774d7e7952ec16b0ed85c21ff4a21550b8fdbd8426ac4bd4c206a7a8cb02bc063a9c965c83da4f8020c137434e87eece1a349fec05afb9b9c7c6aa68a8b459de7c3b19409559494d66248f32dfe58557733acb032558a044f0808acb33504b7a430c4f1b064578238acab2c902506f543b46abb245340618e7437167c5b194ed1d4fbeea9df6df15ce1c1647cd48ec8385aabac55d6c3e5ad8f35e4eb9ebf58b653f87c5290aa2924067f454c17b00b7d2e75e4e8104a63ccfb4c982acbb39c8294635b8b5ed21a86a58ec568f58f76e84ac138c78cbcae9edde34dd0615655730fd6f61b7b3881b24eeef6496401c11b1a627c446e533752b9e5cc199672a27daac59f64ac7f697b35e77172974c6f5c226f95f76fa8f7710968b8a3b50d47d7f4140f73781e67f7b5d3ff8063fd4a5c1a90198bef4cb19e405c3aa665ac0a9f1479cc140df15c88e2bb4c5997a264042d9c3df29ffe07485d5682b557242226f649d2b40925d68ce48e4f42dc199f14e2b3c2b0ad865d7512d54d81ddf654db1421e9273ed280424fd9aa5256bb9d7b626b210a7a516a7c765766c7e03bec723a0432d85b34006b3cd17a62a11a8d74ddefad166666025b86212c607185915a6e76a0fa98f69e7db46855960dd4bf14c4c572c36a41d3d5b5c0c7d62e45203347417f1b208589486958991faddcf465cfce0062ab0143261f5b75c28386045925fc37bdfdbe33d9e80d83dbb3a4434f631c2ce89f14c6441c9c949ea2211eca3f63a6b30e05a259d85d08c7913aa28423c0fb7cb202049a84cad5c537910bbdaab4f2d063173cb199afa2eb2dbe62cda1faf59601fecee2867e0210b32c24e1500b7fae6cd4cdec90fd6651a2d2654928f44272bd8e029f682ee945d78f31bb5d3f1b95bb1e7bfaad70dfa9dc5fd84d32980ba7403e6187f1b1a77a09e1094f33e2bf69b362272f9f3603328a45698f4291afb6d29ba712fa795a82e0f524d789b8036417e86a63269ca929e2e86d4c1d18ce14bc11c804f7ecce4e35bc98a003a734d412eaefb681539d1ea5ef3d831e3ae6756c2f7b242c981cbc39a18f2314d85ec77fbe53f58754ed4c4d8763f1b3ce75749a1198a783d5eb3f259dae2ba68420e06f548c33b66d546d7e65e6d2f1453ac87dab851fe6c77c9301cfcbf97f6000c89b2d3287d93c8f6dd81c4aef121aae4ea7d8586208206f3d1db33b0ec39db3cb3da8861c4f93832154132201dc2224ad14c2d0b3bcf34d5cdfe34d95d644bd0ae77a789432f48eef2180a7cb3009a5ffc144570aa4d0735ddab4f06107044184b9640452044cd9c20f21f5c7daa2f605c4d227131a17159b17b40dcb5da95b9b24befc921bda05f50b75cbeacd28dc8bda5dc7b4b99a40c38014e014801493e90e1721124b3f6e48fb6229ef0438cffc7acc94e8e5de7d3ccd98e44e049796badf5abad5d196aaff8ead6cfa2e5b1d8a750a1078167d4757509639c66ddfe830d87c3bded6e5c86a4a8470eb7db6dccf9da6cb63ceabdb716c9b0c4fb5a9cc565593e7e1c8923c9bfd97649ea6c4731c4b573166fc92b9eb96c85661e0c18ce63f8cd905f291113939c73e799b9a80caf5d78ab63d3ac3ed33ccd9fd9f1e0cacde799db7fcecfcb4da6dd0b7e318d5e16c3ff118be2f8791cc77b6f146d7b15a82f5bb365463d1fd624e69b0805e120c973d0a03c19310b8f76c21f9098840f1f6b87880868acf251329a353de49f090e3b06038701936187878d8f9975faa4a49d225746b22d57402d56475c735665dd8481ac98b1185b65ba461b9f75e509153963d16cf18193ad78bd1391a5ec15f594d944f9d23967b2d6adc5a8d4b4ae7ab43bf31377adc5f26fd591a905d3c09c7d979959d71998b4a09aafff7852b5d65a5fd7c35bc9c71387f7bff7410056b129a41759dff4503f65d5d6b8058e2370048ec0df2f73336ebbe1863a497606973aaf1d77b3d59c397f52bfaf8be135b919b7832fe66952de98ab34ae2d4c04695508e482c9c690ac346158eedc68c245c5f41be3656ad84c09b9e20748d11fdb4fcb62c9183030a82f5a568052e0b0927345634b0a1606a01788167d1e448b35a3253cf36bf13d7917206040b1225432ba68387978a5cc2f6af11e418dc1fbdd95c5ed98c462ffb2933acce11896e4bd0606dc8a44d1fe7b181186dbd63d54a5105c5152d08271ba9e46a0850d41cb425bc2a3aa44558a5006ac46151410384e27aa128b1f64bf22653c9088fd0825d82c08a85b70029b85707df40d8e1c5425104444000090e4dd7abe72152a2e6585bc8405b7cc051a49177ce36eb3d5a9ce39738e9423d4f3b2bfd11d17894612848f8446fad6396e5447dee895dea815b9d11ce546716c21e980b41b5dd9b282e0365ac5374a35847517bc01e0a3f3a602f420d11b260f013b06e8406d9ca3556a6f65441bad410007ba51a9dc466914984a0d6c74c6818d46f58d42e936fa54b4511908361a63b7d15f02a8b4f7de2feaa4e04909475a5b2083b7511846bfd4622961b0d1170d36da74b451170e36caf460a3484cbd1610aa92544056ef867b1d9ab24577676c2f1baccaff71433f7247d8da36362d80533d748910e8ae7dfbf6df62710cfb154b8ce8f88e284162d783d76d06e3422b9af5fabeaf30550ba0296ae6546dd161a6833845f90ac45546a5c08bfbfef752556941162b225e3d0449f97d8eaa749ba84dc943e78cca81313e162189e1152c07300c8b3adba0d8033096ec2bced8c9ccc6fd9f03524b1bb47a3d0a14383fcfde7b9773ebb352e2e331361cf269754dd00a144b39737e9e9d57f2e2f43eea7c27004949aef39874216997d4793c6daf14b2dca1ed477ab56d9b2539866218866118863ac41d0fc239d3dc3c08415e8831c6188bd6e8a32ed62477ba0a71d6ca51c5ad6e4ac5fb6e64a0c5ca36ed2c188a789e05de7e3f59945f7c7c7580332ec4dae867a6d07bd7edf67b94ae9bcd6c0da92e6beb6f7c2d8d5cb91d73b63b5e4fea4abbde73eeb9876eaaaeef668c3d9fe3ef8e922edc5ee51282d7601b131d3678e8f5788f9b4599d7e26b6fbdb556be739fcb655b1a604f0e9fda2c3f9f666e9fbda7184e561756dcb1b55499636559cd791e75272fed853a732fceb3963940d6dc99b9ef9c311a319b4d58a75614b3288e7a1c75cf626871874ca8f32637cb1414321c836510101407c582e1409683108a4279aa3eb3107280a1241e9aa3318ec420428c21c410420c21444010212222432343ed16294d0fa66060b00189b22c0dd6dbc0a327285e9f550e7985b202fa61d8974f54e84ddafca91ff477d892214be57371e2e3e960983fb2829a5917d6aa850c764537536060acf6c59acde117ed43ad135d81c3472e9307a5139a0a576aa833d0511c05524bfc084e5fc5596202b37c0c3ec9f142013070245d7ceb9d80ec1c794a2589aaa37ec4d18c1cea509c4c86ecf5c11a3dd0e4b3710e4a3c7b14d809ee59a8dc14dfe122a4dade9e484d1dcf7217279185be7a087f43eaa3e63cbd87846b0741b093fb89fe7f9edd59a8d9f2ccd2f7330e939599ea4e33ac88326424c5a245533bb11617838b0364f8b8bb29d631c69a57b9198aaba46932f2a8c92664bac30246b01aed2adc20e703060cdca821f424ccdc70c9639750d68383c1114dae94e457122416017525cd2bbc4eac6479abe88ce87432859028083cd82027eb962c48067d075c95ada1da1787f5fea31e2371d29f5ba73a5c89d116cd4481f5d5fdbca021a921370313017d1a74282f45c048b21959b833cda78d023e99d261c4e89d92b4ab8a513092363b43586e9181b4176f06a09ea47587f6b7e45cdd6c05184d36a097c0449266a2c0632869348dcf8f15b6b75cdf92246b882020f2bd1cc9a2f54e6c3f22dc86d1850abe03908f6cc0b974c66d583de0d3a7bbbe4093896f3970a0db904606db272e73fb51826679ff3ff6947aa994219d2b1d86bf5517b58a20e8840a1d119c4378e5e26ecf1c8da6c0cac6bb6b2b780d2f40e574da2da4667365e4d288a1b8c488e2acf5a99d0a8a9f5be51976369fda1780e1635471bab18e4bc3ff15082d8719efa1fa1abd58ae8366f1a5f6759eeb6d09224ae8ee769e15a9db2f9654a529d2bc40c205cc1c1bae1db641ef83e1511d3e3b3e24139a26ab8a408072518481b9a0a23e046a09ac311a02caff880f20ee458adcb72605217cca0cea2ce821ef1d07ef8543a97064ee044604f62da2d9d42aa6514ee8c36bae13954dad75bd238d395b1e1e301d8f9e0c417fbd82a7ccb9866714d8d1d4f0618c5d5279ecb90a71abd30c7aa0dfd00dfc6acd817a60dd1339274c08584e8cbed6f6deb03e3171c5c9167ce58c2766ddbda90db08a29b1ca2fa738853d2c2615245207a910c633b2efe99d4d8333c5f8b609bfba9b037b725a577beffdea62fa6676c508c8b3d4c9e58487327e6e8dc4eac97c25d88a58059b67a60084a9bc6c3027036a3a1a3b534c8213acd527aff2bd3b78555f755fc1b9350aafa28b6c9bb2f213af14fb546bf6e67509ba4e790b150dcd917c2f451abf23f1a3efd35359004a242b25f2abbb60518c30874b8ebf2b8a8063d10568a06b4d2800288224d95073c641e13f123a13e6b26ac6a1117ea94606325dddc2acca5245db168ece16c706c7a8df22c4900c37b61a1650318cb0b35c739b80341973b2b397baa05fd16a0e283e078e7869b8a6349c48b1b1ac696f74e174827c603456187902429d14fbeb26ac509825086429cfd0b6c7e7a942bb33e184af494d3c3b07878e6a5217cff18f6056a825b286fb8bff82cd414f17df857d3cd5d0e0485e190e6afac66ee5e4d505b9674ea139cdfe5752ff93a071fc54eaf377ecdb9e94773c12bccd5e97a135e037b6f9663b8fbce5b98a33ebe125b364df1d4b81eb97f5eda76160d5f7c5e107f831469c4b9a7fe329a020dd856a68c32b59ba2c2476c3eb3d1f5c13b5a3c6bf4a7231fd84f7fbedeca518e76ca11c97281cede5c40f6b84af8bd5f20e4948b84cc634588a12722b26e10d4bd28746bc59c18db3d241f733c6b9571ab718f301b59703d9776d7188c7051b444e62efe0308c15a0d66255131f902d1f5213f2ee2640703ded3d01491475e549356b47d07b62bc8f57bd55b760a6f2eb14d8bced410ee63eb44b180488693d6ae92ef3f68c4bf113d113410a42b77f8034cd824d8acc0d45da9595a508cc8bbf35e9007323dcb9634c2ddcc0bfe49a85186172bf1c32321f4b0c8c5d271cb88af112426609742fb94efa401fde656112536e49e5e9a058a03c752422fe2a715976f1c7804404f129bc41b78ad41b3190cee75e6b02275a186e25a567e6f9044ac8c68cc807962ecaa099d124599b41a9517784a2a2880a2a8673052c9c170906055c211f21c92b50894eab1acc949912fd1e8160637293b8c1ebeb5fa2f04cb4ddf95c3b088c94d762126a7b864684bccc46be088f9ec35ccc824567a95632ba26c1dd661eb4a699108c72ced84bdab81c509b35799776ad6645ab2c73b04ecb3c3a8fdb710f295124cf1a255999a82501b2c8f5c5da725e1ea6c46976d4996f983ce26abcd9670b25ec420f85d7eac98cd11b36e4a94465d4d00b6cc213609c2d5c4be3a2c597593ea046263a1615d536642a72992b497500e9e5842fe98005e504100209b2378b64e5d14a810cfd4495e1662aeb8a6dd350b66388e868c94847396a24b1c02ef59e81ff1263b95daabcd933c0edf10493d8e2aa47f34447521e633d2eb60b887385f4e8f3d391343f15517585cab96247b38d431abef2837421028ce3948bf2478447f684251fd1513e40476b4d55c5d9d17c650b1bbc46dd20ca9be8ae9096456ee8c9e3b6583fcdb30d61044bfd98b0112731f73563ba842db9914b1744873bd05e927c64d532bbbf5b821e0a293152b90ab1266db41d95a6bf12813907e5b727a562331bf12b8f4327aa4e2b33e1b74fa32e6348c2326f55fc3b017a434b504f622fd44d1fd391ed67e9817c7575756c97a6d0d16fb56fcdde650cde568491b0b751352b6c3837471c967d3bef60cbab507e73d2ec65551509b2bc0cbb0f9cfaa3bd6806ec532610ce341e5968ead437415f3448957c06153c39af9b98a5e046b028f6272e81488975dc35e8507854148a6ca8fbfddac37b6fa757b5c6d6660d5dee0031f23f6db7e959875c4b71232a42af354c5d88637e7f94fbf17af01943949bf217c87103edc665c1651dcdedf0a033048ee2d80642732d7052cd5044a834881234703d60cb82ab0fc9f822502e3800262e78fb9d5d4193e10f10c61adeec0f49e2dcc1100de75e7bd7d8e576ea6e00771ac82c336cad1f340d199678173a9c954cf7aada7206d88449ddf9844a20e0dbfb2d84349612796d9bf8a69a1640faf8ed74e19d89acd3bad96ee5a65472059b28cf7b888675d717225703dda409a34fe2e842298b742743bff223da98e08e84817c7c3cdae4229fff79694548f5b82854636cf847e060122c676f6832ddc51f0d972b3dc4659617510e577fbac017411abbd85068dc16c6401dfbaf08a80e2a9c68d969248cb9b956ed83af1bdf4846191a38e9fba0601030db34deea0c4c56944dca5eabc6897babb48a8ff7251a5dc80c27616d7e1bd3796fa28d18d4c4ff810e7c7d48e02ba515a7a817d003f2233615af54420e56849b6dd9fb85ecb78b8b23a7bb37390e943f49e7d2fe04ee171d7bce4ef42f8f48f3318df1c9b448ff2391e81870ba650f9e517e6d66f3e6f8cd53c5acf564d97fe609ec7c5048611a79ea6e9ce6cbd336812af3db8f8e02d629935f261fd383b77707f15094ac986af1150227a56c38a25eb40a6ab12b8d47d5952d928ebd655d1a5cc2e0b449b567044f37a70deda62eea152a98902d2eb7bd9a855f1b8720b668a91a2660e7d7ec12561c80aaff861b007543825391dc70737b5bfb81a706186b1006418c27386e734c61bf85168fe5a18711a30c7d7abdcf8a071a8659734a4fe8362607b36d758c23b36755d9837486b69b066b6b6ee324aabf1337205cfdffda1d7f7bd9f6541a5456f16bd62024c6b459e8b8ffb9ed555207b048fcb918c3abd0317392b3f7b98291ec92c07ea5bb97be98885dd3693410e618cb8595f3adda9687980bd2eeda68fc87c3ace6accf4e26dab59672038a68cc2188d2e91d1e4b032ae11f8e4dd84df69132263bf334ffa29f7075deb681501f843f11959798f562b83b31f0b35c765dedd6b0d2dd0783955bb39e31b6055bb60a2c2622bcbc2768931955f82267d22bd4819c2cfc802d3a0541835c4c4fdeee6884de8e9225c69ce7d0342f02cc739fbc35ad0000b93316ac708e24d5f451ddb2b1a01aa26f304925d84eec5cc0a02477401efb3fc81a1de97811e341e7c366bbc537b8184cd45470a295bd95ddb6a0c36ba110fd15ae129f6ba59381ba53f7121afe9d8a34b1d3461eb19d4e6489cd81d5e99d907d804783106b9f0dda3c0ffd0c8f875718c84e63da4088ea2b41a1589609d2ab1d3d7721c4df7f8596dab7cd664c4e643b49945d3ecac714601209beef2efae27717936cd079150d8443688d511539ec0b0cffe821bf6e887220b3f593297aa8b4f3005bddfbcd540acba0dba4177234df6bce51afad82e6eaccea9cac1d4b3c721ccedad8cd01b463a5c73d68512871f49cf97b89a1478e7f2d2ce1beddad26744a14a7841581bf884c4157c5ec7419717f65a3c03f352f8b5bff46fea9ea40d4f517a383de6d4633c4b112457243eb70862423c397cb39063af870597cecf8f98ce893bafa0cb387ddcb504688f67c8d7250e7db7148664849cee7b8967b72a144aad6ab024827b73186f30f1e27e5b811b2db69bc94789b9653749ade6c2a104785569d4333143ef882a86a218d6d05b86fa549af8a02332df52a23188b5585c21765d864580beb8837a31b0a3ac9febe10bee23afca9cef4713ff030d52e612e640ca8dec25d923898bc96808497cd415a67921f4357042d492dbde6d9c19c6867e43581183cd9521af304d357f6f33f8c3a1e5114e1350702ff151f7c88c2e5c6dfc5d181a21e94d08d99c80301063fa9038caf3b75ebdda91e8861b2c1b23514b9bcb6d0baca35330e286a8e57d03a73cb851ef3bf0f7f4daf40e7526fa1ddb6c0e8c4a16ab3d0e4b67b12fa16e96ff97a0916623b4598bc702dad22cc999508cc4b9d64eb7a5c09cd6840e11a056b717221a2df13841a358c460ed94e04be27745a02284e6aebfe8455f1f31597825b82a135d69c0e97b184a6342684e5da1317ad4b77f4a738f1a273d723589f996aa411586ff708e7c090339b3a9a38d9a64725e605ba9a8c4404ad1c025769021e8ac0091a2a4b0ad8d923da39af5f2041a8e978df65299141791a082020b3865b985864767c10c66f418dbcff278c0373e733278249a8da04e42bbd6303192e843afefc0d144a76af587fa8a299267b8d747b11f1f190e06713aed840f9b0604ae0b5a296e03cab43ddf77b6140dd1bccafeb34a92b83730966d5258326a108768f699ea25407d5fcbddae44b5e789e93c78b6e0a14396d71db993f6a3e6e30f1560243166dc2bbd1e33acefc35c476fca8a0757405ace91a821e8d740f7d436c4509d138a2aa0957923524bad3b9c59437b3b1969f87251bdef15be5ba14577a292246b0ecd955b9a2cd2604f8ffdfd80da534f22b3afb28ddb3a0b4b4367ae3a3fa8df2854d295ad4c6dd3e56f770b2588de3ea18ac00b3c1a1fb7203dd9c36ab3746bb8e6ffa6d9ac60a8f6cf023091e9f4b2278989216a5f16575fb7b1b513dda01a037e631b918817fe262f94ed2f23b4743c9d9bc88ca59d0ac1a10a660fd216580756425d10cb0ad193c066e2647c1cdd41115ad8846afced291bfa26bb1f4882b491a01b81a341157c21dae77b090917b3fdcc6e93f6a749a5af609af0db486bc4bcc02f12e2a488dc634a1377cfaa9dc73e6a668bb37f668d925a983797fbec3fa2e9afe449423c660b5f1d568fa470b8dc25cd883d07102a7181733d5e9d03573e48afe9e388c40093cf9ee5c663de9ca12eb064e876f7e3c47d20f567338f6572d6e2e6d01dadd6875c5c3ec0a5a91987fe46dc0ff7b121628c8ad41a355fa46eba73f71175abfb4adb81a151daa8ba40717d1be366201b85d99c5dd760548d21080d11bb078edc29cce990a33bc04d3fa3f91c62bc43a4cbd84054a7ea99b83a2b937d2bad0f6526b3edb0a93b44173bcf248955acda36a0dac963f13372a6604eec3239d2b9e7cb803390c8ba1d875b6be2e569d5e63628bd95ddcc9fce35217b7d5c0b06c52a8d80c4eca43717ec45e25b494bc59922d60bb247c63c9700b842201fa97002041706c4d0762d83e0e1a46480d09c4201eb48007e6814243f84b836e20dad33f94ad0dcbdab0ba28953fa07350f7961ce2a43fac3ec6c45a6b64ef2da5943225912df201f801f30161c07cf1d2a5ee761122904f6274aa810bd8aa480698a9baead46ad0993a76b3f2a072277d326fa7b93ba37660b434b7d207099ddca4d0807626d14a5d2f5cb06041c2ee6ba6642ecb9c23a16b6e60cffa94367e999b4d9ada17c95aad368eb5da389264ad36da48b256b3e9aa476dd39a7cad35592347ad6dda66234d7214f3dbff7bef2d71a404a3a885169f754869182d177061ed7163da59a5a05301ca9b99a69a9666d090fd0403a37d86af84af9b278d2abf899ad53c1d67d840e383af89133fac38924a2ea739ad02b899511224b8040952de647e985869933217947569dfca0b278dcd9a0f17369c677996e7a975e268fb669ea70309bbf33ccf446f2ece195fe1fbbb97c697d66a2da6d662fa95fad75a2bf6ead529ed475a69addfe241dcead574f2d2ea3bee029a15d2b1a5ba609b4e56669971c66c6ef8dafaa6bc9937f314af23ea5a288c247461a5246e4b85e05ad7c81fbc036b77b601a697c47d69c982e5ca788764ca09211748d514d86c24ce0a001257a5341194b9243fe32421301164ad3356ca49ada0a2742080889b12c0c0d2d21680c3491940e026bc91b8280406e0a0e048dc93bd8473e2d5d5848bc9d6696a1426032a9c1603d277d491d313895b7266a9dc9b8a539204c9112355a7a3bb5a7134c14e00935dc5620a829da794139fe729a29649bcba9ad0020bcab3ac6440c9c8ceb0478e1a315a0443f762aa2c4bae8ba754f319d7afa3d351d3fc072a773eb9a02c467f7a3dae1e57af67f18f625007f3677cb97ad9c158cbc6568ae6ab068c850483c1ac2c9c710e0a5ae2ef7fe871f01d2c890ea5427a876eb52f6cff5987e4fc1ffafa3682c1e09d5eafe7177fcecfd5c3c11bf4afd58dd6593d5cffc7bdf80ae97925cba00752a9f4aceb6b31a86b85204e38bfe8835aa83ea9470752f6b1794660736a0b25a547dcddeefec5f6e6a4740ee28992e87f11a59426304b2090faaf1a2ea2b1e1214341ec1422f475efcdf90e12f4bf245010d01f3f7df8ecd19307cf9d7befb5439f3ea33aff3d3a738472824b96fcffff928af57540178ff21393ed80ca9d4f6fdf1098a5a5397751e5591f5e93f8d7629fcfe743a2c591247fbfdf99cf0bf1b0ce72fc7ebfdbd515123d66e840a3f532bef69d528d22a5fa0c643a37e1a6db649bde9b0c99d98ca9676ca9fb18cef9772809e3c8f28d617cb561cc564be54f1bfbfafd7e569ac4ef738bb36b518def37259a4e573e33f7dfb17996e5e3f9d9ef57f6b382fb3984d7ba070e4ebd8b22b0ebd1e0ca1707ce1b37a429a6ab31e5882c500040ac97a42b95fcc94cc9cc5a679c6b13e08088e32d191020603331b1b99d047e6b0a84a9319006cd193365c88c214dd334f553a6a1c15041578a390511e364fd0c2ce7be5bcd4eb3d1ec33949678ca325550b913d017487c783c9e0b9a13091022424954686c886620c2c2e3f1e6cca991c68499cd81b2cb94edc0da64f6982d6683ed30436a6c30fb8b9e1e3cb4b4b69739bbcbe6b2b7ecafad6567d958f6956d6557a9016953e1ed295bca8eb2a1ec275a5a5a63b8bcba9a181273ba3aebe3f3f97eeaf7fb1d394266682c8e0eac2cdf189f31e1d895cfe7bba243a7ecd7db5e663dae76d76eb2b93693bd4544ccd6da4bccdaf0b6b6b692df4eb291ec23dbc82eb2b336913d640bd941c49c6d20befd63fbd83d368fbd636b6b0b881429adb58e40e9d72ac7abab893f975b424f5ddc9de68dd462159906de7bafb6f9e6d7d6de6b6d0fb77abc356a134511635b31a554a424ad6e13495c5dd870156b0d8b3552c4dafedf7b6f59a3398916471293231008bc64e753adc9d7a465804060101a345864f01082c7c5404294d2e1c5f8029f0e7d910e2ceb5fc340d8eae2fb3e2c7bff6114201028c546add8ff29fd7f4afd9ffa3fa5d75e9bafb579a4945677125725a5bd14537cad37955eeb0c7fbd5485ab03c2d7ffc9f0971f7b71ce990c5f20240bf4fa5458b52ccb47a57fd6a22ef3b516df4bee2b4c6eab4cee1c9adc5522b9718c6549d66ce4be0180dc364a3fb392ca1b95d2ae1160490013b9690cc837e09e41a000b965e0c81d636f18fbc59e3a338b0429b8a54d9e67b4a85d001a9801d2de6b95101c48321194a64903d094c0d61440514d8125178c0c4827fd44e6f124dfd2f0e71c6d9269f43680b20dc87bedd31d7d03d6ac16c283aa834077bafc6eaac81047cf189e98170f9bdd6bc68ca59442718cc32ca5666cbd58c4302e2b079a69522f834757a084f6b732e77c4142f9a73def06d729f8c2d85e2eb43a84a8ddeec9ec2df940ca5a3ba5a581e9284df0373c9e52ce3ba1a45c8fa2ce773b4d667b6fae51ab5b7ccd8a072a77de113516aba66a9fed685261dd9045c0aaaa8b050db1929e34d1be86bdaa61d710a8dd9dd2ea4eab3badee9452eb6fdfb1fdc7f56bf55abd0ab11763caa8ca0d30db8b215927b41d3dc218e3776fb419ed455bd14e9455b611edb19cb3f2a6da35b8f610b80f6d43bbd026b4076d413bd006b4ff6c3f59ebacc57114752e7327db7ddcc3369fbd67ebd979361e2e2ef79cdd9dab6231d5c95ac4e338e23181bdd75a9b6d93575713413a5f6d65af2cfe2cea1f37869081237bf130d150079699447cac1231aa3551970deab77aa637bffdcf7ffffff3ffb5d7df3fbb3f91b7f7d629ab3d796e24ccc80ea5b491c6f9ea6b667c9dd23a74e608e5502141208d4329154aa7fc3016fae2c079e3466cf7769bcddb6c28a55a4e9d3ada6b287db3c3028d83a8c40c3bbe03f34700000886235110c3409ec5a9a9f401a460454196898b1011068bc6c1a158180a850481b020180690610000812108c2188a235a98f6f6246acd151c0664afdffa0a5a059eb4e577b4fb34e38290096120d206db2c97764044473b271b53caa8c98e338f3220ff3cfad4f2c5f9ac329300475762f1da96dc3b03f930125b8fad834314c1d09aac8686f9414381a8577339084fa97037d31c3cdcac658ded4c2e47bf83a33a1b3495433721fcad96e0981cd14908e2c9d17c8204a092292798ccc0a6598ca732a5256afd66e6316e656026b128718cff60aedbfe960ca59e05cf81c7675775a37acc24af5b25de773f22e9eb06c3ed4902dd72306c83ef585a327013560eb2e2b0d823855aab041c45a22d93c031203230e6382ec817ad78cf6200fd037327b83eed125df8d0e6cd5a03a1981ba47d6a22cdaf4eeab990605490a5e9b1c4740bc271f6ba43d9e2bec08e433d413f4eb87f77f03a7af4f5172b126f9b0d621b125a2f3d282cbcdc9f313409328c07de07e3c64e6b044a88e4896c733897129f88c0ffa75a5694d1804722e70a116dd6cc7b322bfb9f8e9b32a8e8d578c5237a088745dcff70a0f3d1e5cdca76e4cbffdd0e711d447ef22e2705876306c3812f957f13812d62a3b6f8bccde15d5bc364a0feacab5b3cf0c87eb38425dff557ebb4969d90141c7f4bf16d04380c510f1cda28c1fe1b74ecbe47e56402a1090e5a7c3d1f9c20547d83fa9bf967a549c9154bcc774aacc65b878e967acb7104fc852a56efcb0278b41017ce2b9f01cbc41b0e31d95004b1290e77bfa4c7703e1a78033de508791b48f8891fb630969dd4631d64082feef98020196eac3210b1eef4ad195048ddd1b2fabedc452dd70a30499d0ed38ac13ef0292d640139458cef1b408ff36ab4017a358b6c1f868a7aba69ea14ef5e235b7802d1ad8e0c9160a5e1deac5a788bb70c3f4f2aca932538948957a62fa545d6d9da582144c3dc73162007e56c1e6eeb152061e1cd6a5329d5b0e4fb30e543568cf9d8df877ce37493ae7ee3776ee3081bca5f2ad0dbb9b09c41251ff219ff8f5664c631722d33f14c8294fea4f3f5011208ce16f9ec3a8b332086232145a5d83f1b0231b357f5482939e31c8ebcad65663eaaf1a6ba71ba65999a9cba97519a437005c2c42b2cbed9abadd3bc0d11b73369a6f328a27eb21e4a1e69862a8c97e7aafd3f28cff2fc9e19cab3d39346946716aff8c1a2bcd4a73c8f263f2849ca0ed9d88d26661ea86a9e91c2a09be0bda83de325767281cd4d62beef0ef298beb5d904c56d73208177b9e5e678ee35a392971ca5043623842aa4baa3a3de6a753f61c8a019fdc373fc76b8a944d2866f8e460437d9ea5535187172c33d9e05352c444c3b32a27d1f412f090719dea6114b5da1c7bf3a394d52c1fafb6bc92bb873b659e69dfd3e539cdb878f56377ffd4fcdeffbcd434a0263d6b0f8a92309e636f90cf9a5e3a50fdff232cd5d0ce5053000fb32fd618afd91f8f3be2fc252c3c2cc05aa05ff1a428c836ea90515781f59969c0f8e1d4dbf5fc0f1e879ee3de6ecd1bcb7e37d24e73c47482357eda5f01d1839c7506622a6a42a9f99100d921e6ae6a8466451663feceb0a2e69fe687fa8c749135a2489fb0a6a927e0b2a46c8927424eb38cd3b50e321ea2b9af451d2ba11b6cab654f247d406adc61659dc8b5dc6bd6bf9ae50e1a0ebaea68ff4122180887a447f1a08fc7ac4a4f414930665450af908a2821e7174682213185374ba611866c9606d72f885310cd3b16974ce33be8e4c62a8c2089cba853c21da7ffce1c951e094b5810848ef0bb0ed3ecc23fc30542431a3ed4be44355890e7aca8711b7310784862e7dd884ba1fa672465fcbc3ddb2712f95668a7d274970b981a9c0825c7414ca943bb84741ab22b9788a376bd17fe83056fc1e05ebb06a5ea79c5af9915c6a01502033150a50241f591513b4b7e8020c90f9fba13137aba21cbe014cfcf5086011ce298d3ead2a9dbdff57c8dbad1f5b453c0efe2b2b148c3461b7aab348bd8dfd03d9876209fdaead428fdeb7d24abb138f7e152b83fc1a618ff35784edb487af5a2c3479262c694172981d266cfa2f968db86224f6bcbb781c11ceeaf6d258ac55770918f39a1b4b9c4f2821ef1bb396913a309f6391e3d9c88faa6f4e4813a8a00982101b2e3a328fc74af1eb12829c1eb655fee0bf95ce4e31934be9e41c3f42ea3acd4493f7be307a8d0c3bcde44f645e3d6f6d3e52b0e8431673699237264bb61650aa66ad715f4c80510d10ac6b77540af0b377c060a86faa64cacda942207cc918048ea9729db79201b34aa99a7a7292016d0fa95a0c9e95cc2885eaa24dddb6b21916362a707c832becce3f8c3957614ec4723c6f6b302f0aeb9f8fd6ed64825be3b6aff25b1e748119ddbe801ada32c272b17897184ff58fb0d3aaa10a57845d5d5ea3f5fbe5db8ca3b097f4f53ff41d254c8307744e4246982cc3e114cf3aa3275c641eef6a92d00fa739993440542ca973b5f4eb80e98bae6120338710c9d7a1b7d1484482aeb3ed171fc766436810c1a65622a957d9681aaa1a8345c891c930ba2927aad116ca7e0e762b439b8e0cefab433a17b207a9bfa3cc9ae998b30e36fe3a0d998939647ae133930fd9f46547fd1d8ace0c21d329cdd3653ac3d8956370968729e825bf6dee372a26851b29d976ef52c9224e7dd2d3e5b58197ec49ff6e1c4cc67c196e50ececccfa7f42bbbe0c17147d51a99e49d790835c85cb9171e4fa306c71661648f62a7470c1e724bbfcf7cd48f798fa96ec75f99f0a678c33d92b26271b26a3e7333d41a58ffa4c75c6ae347cb1f173c96bd300b1138d11cf7cb2ed5ab9d602783e6d4da9d4c1a36d563ac8c905e9637d66daf6bc795e64dc9494c7b61a77d91f36eda5f0ebb8dab4c92b5e370df41858d734a66ca77630dedbc92c7fc7bd40cbdb6904c31b1241d2dd8b23cca0ab5e45ad8ad76a9c85966515553e64a7ffc86f8a633da2aee12ccf9b7cde9cd3a69a5695ae0fd2a1168c8a6ba95fb9bbfbb383996804b9831b91db511e4ae5aa3fbabf66d977e6f41779c19cec75a27a5854197d354825a777d051b906722fd915027d05fbd3b1bd83affb11f37b1176a6e5a3a23ec4daebe3462ec6ecc587128d65ef56d7d74fb3303251befc0fec65c65565c23d65149a250b2bc9cacaa151e1c80f3b9b5948e5f323faf6eaffe150715e1f7dccc26e105f34389a3c81a011b36843d867fc0b099328ae14426833312198452f15fda2c20798f16521fffaae49a168f4cca1965cc600b90ca10d92fb5b06535a432e6d59940c915c147fb3ec9bca0ceb9065a830ff61997045452e634dc561740f3e1ba6c431219707b11595c96c132ece0663261fcb76ef7e2aa953210d93bedffae373dcedf34b3f6385ed7d32cb5ccb3257c6b9e4cf3c9f818d5b798ebfac5bcce2789738f3cfbf520c1e977e81a120c7853981f906bf3d957bff44b10b62cc580baad575c9c6e395976cff535e972b54aed9e6dbef7f416b88b978554926310ade33637b547b6592e98976519210f26336159e0b8b2610cd771c69a3524dfa558a3889b5a60c2e0406e818fc550ad6c73f8cb2eae3f8cec755a3fe13b92b5735bb2517c2280328cf993aa9e3214c15eb9a7aae1cd8a65b2770c62bcc04d7d3d7a41252350c5043cb9cde38d1cdeef0a1bfa373796a1c61795a74138be762f8a6d4b179a2737d1a4cf2876af29c94ff1981ec1d4caf014f88e5a009475832210fed1df681b0c149a44599231b5823414d2dc6b21a9e238cb7b0c2836d2fcd799af9bb042230d5a0224a44779864250b1a3fc8789188ded740b50449a27d54290f602f6d3aaecaf4ec4b8dbffb97db825e92388baeafe9455ec6c97cebce225873a0d6c6a5275576eb18ebe8c0d054f49d38843ebcd7225dc9d8a805ab0cce8776a23411a9a9f894c97a62d35e1a124d7bab34336a8770aa44fba7cd4c13a08aa9ffb6b40967bbdfb214db85bf9eaf87e2c61d057e553b63b91abd28e5292c74cb12e34c30f7607e1c123ad326046b2532b7038d2f800081b61f02473677fd861e831ffd3f5fc93e1962e9708c500d6f4d8669d0c5499f60d2d4f5f35edd9944522edde4d7d90900b05a2e6ee5a810b08fc9165be0af0940f550f0a358672fda141aafd6f27ce988ad929872fc7753bffc40fb9774127850a01d99bde5d7726197e213b8592eb8aef37da3756ed7a516c2ae4a0395ec934e3734505432b2d8a7e7544e364b581dd39cea51f7a2d66650a233afb5e0ee8b78d25ded9e9677be80efff4bc1fb6d947b8371365ffb69f1d83e74bc3abf35ad633c88f2f51bc364727af1fdcf023a9608235b0306f8d79a1ee1b19682354cf5d92c8db479f3dcf0dea95a7027be4d5545547e96aa2640ebb72e3416533e2df103d7757875a90a0e4d31928f5a67224a35896bad0a0bfb0dc5f7ff2f0d133f197cbd4bb3d050eb9ea989600c8fb9ad4cd67236c523eed247ceb879dc8775f308c521256f135bef2675a4ddc4b9b34e31eba7d7aa3580c9baa12806a6d8a4a8d68981cb42579e8789719d1b2033a01aa7080691d88511d0132c0d3086103d09831e2884d06bce202f6e96656e7ce4023b47057ef1e6aea66b7241518e6d095b14d988d65249668ca6294e7aebc905857ddfb1767f27b926b89175e6edde4c3d84eacc66e1bea0f0772b31bca0569c26ff02d394886604cd76f3705dc3bcf7e6ae5e7a19fa4767d1efa0da92daacb9fb1902415e99a310712ba092125690b62d3017209d20fbadd766d8ba5ecc919445ae5a22355485bcc1f5b5960d13ddf26caa7edf0fa745cd5a839e26a720f6fd8db6a309c2ed9aac036b5b2aa2d96ee094c99f846da62478b8f8c6e7e8e0da5b5ca7fa7d4b6facce40adb7db8e0c0da78c55dfa855576adbd970d0eb3d488ab17d56f617ec026b4857ff65edc5564e0bf830e7910606af7d08f4fe6181873b614d0709f0144f42b4d9210275aeb5b31d5037832e5fb8be993b432ac3c284bd09a857020d5ad0f655c62b2a0b0ede4bd5b49cc1727806b6c7c043fb58006dbe6ffd4927f8ec4143d3f3d97d9077abec28d635c49387e19bf04c934bcdfb4b574f05f19335ecbed1407c42cf40a12402eaea0f1c9ced03eb1be8296719c05f89ce7abbdfae5486fae48639f073f11f332199ba31262459e2219f905416c184e7ab4f556d1f4e6e9f6417c7f79e13f66f263b5c338689ea860346bd6bbbc19d817b7c6704449cc6ce5d9ad565b11553779c64eb623f0d589d1027b186e183fb5de2379770276fe19c6ef981d38b80a13fe0e7559459419d9eeaf4f1fb7f316f014d4eca9df9dc83360aa46bfefa35fc8cf5fe82ee99d3e1140ae8ca5ba202eba0f2f13388a7fdd1b0600263816505ebad82425b14a8073e3dfd0a3125d00c44f10966553167b12297630445e83213b60e4ba396e365b73461af97ecefd3195366cd9a3c975266f2605a4d40a6ad1e8e089a1509defdec0c3322130e942d9bb1acecb67c7a97226ece796b1ef1a6e016ae1f427ae7d35a7df339b4cc68e54367bfcbe21f6bf63656c551b92c0594693850aad0bb98c537a41c952b341b0d1c79ed8d9c21ec06fb75a2b9b42f7da31acff7828048829592c481e994602f21d79e97c50a4176506de84763830bf92ba1d7379d8dec01cef07c5d2865cdf7ffb497da7beef614224c306dda41805b7dcdbab4483bd1160f0eb885628a92c1bfeddfa9d0e8b1d2ee42c40356f69a5ee5747946d160c765e19c07f9eda1e737317c1082e9829c69a208d42a4694c81aa7044d9545014897af408add3b16d726d7ee5e57058d0aa43458314cee20f61f408780c8d06b480e675274868b1c34f203986395c1f720059e8389e3aea2783c26701cb250c4c30cf7a211aca34dbee684bc4f82887cf2939300fee43a0373a4bc77aeb25fc5e03343c902e2066dd87515daf38effcbeae6b83af95127031fa0fbd4038277f49057eac7a6d3e990bbe3c205970b613601733c1ea4e982660f922068a9e0803fa2fbde3e45b0c161672c0bb650f6710528f05c672e1748a3ad3ae23d048689c6405014a1688f17a144428ffbaa605847b1c190e37adaa7377ff73c8a201454375f891946c6075051060d2239bdbeca5367ccdd9636e3cf62ff2d7365e873a78a0565a81aa9cdb720c37f199f8e827a1f3ba7d0842bfbcf84d748e1ee4b6709804c477a5b118ef8d0e343f6a651640bbe1021267c6d14898cdac01937392d8bfbab331923100d3163bf07fe2d769eb1726ac78e3d03a0fa119b18307ad41ba5fa79d184ed0baa7a20f90030aa7cd50f99fef05b2e2f662d7032f9fb441adba238b73e570f4f5654f75ee8abaf2ca2331833ac931bd46e3e8db91b91f5a650a1e12d78efc74760aac3046b5d9590fe691dc6c574d2b304c022b38460eba1ceef709a9e57eb32602d8ea4f5da06833ceb9abd6315d408755054789774266e071d1d73060e78470946d80ecd40a4f38b5eca6f87693ba243e8360fa088034615ad15d5a602fddc3af7db4520e131f9d885e4bd21ef2191b31b8c3c4e51ed3716fb7b6ccde392bc581c65d293c1becb4cfaa2a9070c1c1d5c6e58ed47723049cb4f20b2dc0402cb0b48854bd39159b91b07d513c5e4afee5952d3bea7e36effeea7353ee713db3e649a74e5ee158a015d4ad401f7749298af8f59bdf97679fbac3ce625d9f7f1821b05029a9d1c60ec989dec186109cdc16c768f2078b8ded9057381eda96442ca7046df502c726151a9b0053f9cd635bde1a15c22fed2afadbd50239e7ab53aea1a601dcd24fa546c6774653a5e7ba071f460e7a992dadae735415d99d446ff539830313d6e86738a86ab1659c7a70c3c8749bd9243bbde14db8396edd26008982e0f6abb3241edcae6a2b7bbabce659f0e74fb9e864919b773ae54946c8d26f96cd6bc9d9c77eddbefb78f00cb20a0d3711db15ec1973ee1fcc2fdcf616756e98b04ed27484ec4a0050029e8a130a94341e23b141b98664d41efe992abfa52017f74f789ca910ee81e908c04d5065145cdc7733cdd091fc03fc392d7b4e7c4099942de884c25473811a17e7e63c435ea82dca86492dc99fbc1867529cffd6caa649e1886dad1bd2bdeac3d82fcf5625be3420ce4a2ca7f9a822a51fbc12bdd110f9b5bdfd5ffb818b8b5462c6afbf169ce9fff5d02107f1fd70f16eb2b1fafbcae20835bc09aa68453706b92fe2d099adff306e6da41bcc5f03ac8208293061ae66c12eb87d894b93311d1ccdcbdeab8d809b294e5143cf3d15119b23d9dddbaf67560b07d7aa5c166d70800f068f39e6075325d7f17cc17fa49dfe86644aab10bf3f13be6497f1cbd0de4a45d9be37922e4e4663c64214852ca0d39e5a6f39b01b41bd7d12fecb11feb11f055017153b2e70d1aa55e2cd98f06c2a0880239b8b018720913252c0384ffc788c5496851c541a1aa4fe4e12d0fff45e056295d6141348711ba39c776a9b331f15efd354dbdbecf0cd8987868c60351c06e09b6059c7fa51f1c5e1f43e9d00b9c98262e14dfab66f6d62fd844d86dfdfc5dbc74ba707a819fafd9faf048401759425a60ae679a63755fc8b50c5537bd52398588d20e1772e5f2a5dd7b7137a014f8a6c46aa91c8045dce1087ea2058f88aaf638c7b022c3841aac808e0864e0f52fd052d037f12f21d994816a3e573bfc2a13fcd19b8686fb303e3cac16eaacdcda4a1286ea7abde604ff6e037f7ac01d30e0da3d120b3012b144b68d8afc7260348fd9fc3e3ef7b5eb0e2f28d124f698a5aa6b8338ba7bb0ba14dd6f505469b35fdc19e2c61e9efd865b4bb2e362f20290316c76386dbd7bc79515553a6139f43f422902a8e7109c48c9cd2279398d1305c2e0764e1feb5f90c2a0dce77d5672fbc6351bbf5636033e460659f3c5800674427485ee9c93ca12c5f52f622024ccbcd74f4850981b5ac2d8546f7ce62a5dec7082b5d5c8514a55595d3361b9c5438152fa65178afbc2897de4480fb8b7d142bd7b7669e1d0b2d5f18061708c853cf9d8e6c0abc3e150746c2a090c7cfbdecbc7455844f78e89f643b46f980af834b1aae23b339c89cb4a1607da63ece92e59eb5806c41762d6010df470310f54bad649dfaa268cd3a5980a9d8cf38cb92b80dc2d3732f78746865c2a3e8426ffa574035312802681f8d9a53c929d2bce85038e2145433f92f58e47ae94453dd59dd1ae5df080b275c164be2628ee9e54db01962d5ceded0b639ce0eeb0018d701e7e16002c30c1fa8cc6fa3c0035d0dfabcf1a9dd2e2a3a142a4b70624ecf3348ed7b434ca940a8f28b67cb3508b99903d2004e6dd538f25a071ce1c99dd8d3ab932fd93b97846b0c225d654515a3143bf7fc4c4a517d5a4c15b13ba561d0f576aa1a5ad66aca6341cd053023014e48c9612b5d722a2ad53c6a530bbda6eda19132a0094b78171a0be1f4719054efa146de7c4157be5a0860d83182f39d849c18142c6812f7e571bae6da359d936429a38e0c39ec5170a7e20dde5dd2beac20700953ddc91e6ed656f4c1e8a08efde7e40f39cd25238ef0e977bda15340c0faf3867f1ac6336b11edcee22cee11c1e0b4e7b98a9f44704d5909c1d2b6ee455e919b51268d5017a9c453f9ba1218274f8c9026e9cf2952f6e2e33d4e3675358f3b9720310b56a0089149d00f2f9e21b17e2bed3ebf475bbcecb8206206e8d56d83fe37a964e910c3d0a80ada1f8493f31100ba8eaf266e9f74d861422038d3d825fef1c0f8f4e43ab9df5889f78c0ddd7281d9036b0a07fe7b547dccb286d673bcc71d2219f12b353b19db1044b0a8ed4c1741cf24a61a923b5316a565e061914ee04ba8f25a6f4e45e60a089d1bda915c90ffeb09ae67278a3a65e11e270ee3fcb747cb42942dbcb6115906e01619a196eea01d3b3382452931248096a143a474194617c088ff9be0523785132ad2048ac235d1613950ee7cf42c4c0211b4b0e6536c099bcdbf3ef85a5f5b6165d5d56739077cc887a01639e8efa035fdf8d5c338036a3809759ac2bcb070dc2006d8ae30101d5c8d97703d68e0f2f0f1907cd09115e0f7faa264547c8ad278e95c4fe86c28484a3e834c350db20af231823f1c0e37da4cd890495d844dbdfd871be322890745596018e37dfe437ba4b9cc322293255d76de280f0d6e5030194e3c93a431888fd8daecc8d91a6f6aac8318edd00267dc65f7800cb46d4a4fa6ca06d6e4cf6682bf61ab4070cbbf7c92958322aa86cad26da7656e4b8e769915f21439e33894db21763eff338b01903c0970f1cdfee1b7d211e15c1493598da247d8c082893db8a57bf9909935f42b2380be9ea649fe540c6eb6dec2c04d96fbfc84d68a62840f4de62b7e3f79f1e9b92168612500f7814823592d5cbac95561e1922ef4af2a3f21025bf647dde88ad7af6b0c11719e1ad1f7fe175f1909494515a11f732669578a2949c2516f005ebfa51dec40e52c530ea57488abc858370824a324e5d68d1a8e21bf0c174c18d44f281a26854a5fc942d287c90cbc76b7cc082303e2e37e57636afe4a0a99bc36481e0946b7124dab2c44d1524f96f76528a8881546b1cca37be5f4e5d86fa53198138b4d7f42f0fd2f829a80e3c794fdb275c698d4af31a3effe5c28f531fc6f32c6af4c7fcdf9e52861a0f2ee03f0811f918ab2f216bdac2f454be40b79e1da3db109f96f610f3bf1ce8f9b0866af09c042c176445265711e301cc00ca2821c0fcd9f946212688b2596a31ed9471e80abd803497fc08c79eafa93d944b81360e4f6a01bbf0fa014d8f7422cd282955b8324f755dd629447ace421fd9df7da9eb8c6e1f1b7c8b8ef4d5f03c4972e30dae18ac44957ad753c9b8275c36eec97e31fdf2adea6e67ab87fe77ec06898fcb22fca72ea8f32b54f40a2fccca11f3b62fc607da1d923a07522aefa40715cec559f60af7a45e2d09b38ceb7aece2115427b15c8cb4e483c3fc96840ec1a7649f105119750c93474c9ccc85cc3fb88a5454a301038df1a3b81b294c1cd4495669c40d44a704d7efd63cc3b9cf871d201f9baed5213a877c51eaa98534504cc8eac4104b4bf4ad08acc3f1fcf7cc89d10444692df716747d8b740d4afa2e3caecf550635a27a45707489db25ef23fa0dea01f489025a7cbd515b300e4ad201b6be59eb80b507439ef7c4f4100fa3675d1789662b1b07e2522af92702b7e6975dc0d89f30737b4e9868306b4977e857cac34f19c5129609a61c073811e5277b5a97472f94687f03b1255b33cab65bee8a888888943be0043d051905e779fa969880c1334d6beaade2c4caebcfa15ec2f33cefbd2f9d6fed85c1cc178e1bb489066f566f1ccc64f584657959646b5cb55a2c59267fe8ed070c36d55bc5d55c153a2fa5377de3758584a73b4835dadff8627c82a5578f57d553e336695e7cf97f4285bbc6de34eaeb45be4a927cad3ea9637f1a344cfc356bbc3fdc7d657e1c9a4e6d47e79b67d4f1cec295bdf79aab6dfebd5f2ffe736c9b63d66f8ad559ab94f851aafec79406bcf969278f428520288109b5c4cd127fa3c4577bda21e4b1393c783c128d4474fb865003a687344df082846792284d4df4a082822b3dfad3dac5d69d43eaa54713c75f53dcd1f8d6171f181f5e90881205cc0a0d2fdc9024c80d2bf4c44cfc0306479c436af479a14413b6e34372b1d7765ed48484185757b7b74812543d14a040ae2cd68ada9a355d9525abb51d183350154703e9e4190d878634ac440021cf6ab57dabfe359360860a268345424bc7cbd461b65cac1977b657fdcbc0a388338af2ef53a85094f1f87492cb7088bcb62f4e9135d420377b86c9556c31a636ba821f2749ba83e6280fbbb7b913ae5a2dfada192199a48ed7a3387a5bc2beba6b2fd76fb948d245b6cc9779a343ca3268b1a228c8539132ba8123c68e111ec5f448437ac30909d20dd11d25e2198934c4307cd7900ea141f88cde36bdf5bd4d535692ff26e7adf969bcb44dfe260db3e5ca646b16b24ab2af7aeaa3fc3fad6890e54946753b9e51afcb28928ade6cd4f0fd784565213bd97befbdecb25badb2b56ab5c8ab72b9ba093ba146d6abf4298c3186c9c8fe6febbb5aff2573fdd7abf53265b074abcc79ebd92db716b72872916fceb72eb72eb7ce3a7f9d59b5d572b95a7775c90ee47f395ed5b8227f5775b23c7954aa8f7e08208a02c2d57a7a7c9561e301a71816d874b69619b3c9a1c7a93a5504d8eb07ef3aa154e4b734f74363467812dd5d95f11f70c2093db0d89fb1a327c709828eb8e5d887c57e2983992e1d28d9cbe600e6a5959662bd34eca938c79c19234426c763bf8f915d913bcce24960a3471a76b1f79102396bf007209b7782e9a2d4843a9582611f45918734008534001e0883a063c4224f4f40782ec3fbf29f580c7649305db07f1383c1be96a25f31cd37cd7e1cf6e7c0d1623119a71952b68dfea76f639a33be1f5be5477da0144b467d90a8ef59b4b13c79d90d1c2919b52b92c6439d20d654991778fb2136ceff52fac256e446f1f5defcefbd37853226376334af6bd5b7a27063ed602849077fadb58ab4ee74423457fb3bb45e2d44daa9b5f25f80cf4550db345b494a4a7a92f4242949494949dc414969247bef9cf7ce3949f6ce49b2f7f1d2f0693c8d63e5e3e9d467bc2ccbf2622dc38f1bcebfa1d6b726523be65692b49f3aa522694fe4a92ccb3245145f5211e7c72c4f84255e703c6270023529f8113619f9ad20a8862a37248980af0828b8d424890dda479126ad2b4e9e5409b384c2cf8a0dc285bd9db6c8399ab675c757fb5c8c55a4c0f9bb9babfbcd5ca3f5fdbdb561dfe6c5d8be5c19d3f89bf671d63a5f94d729713cfed7a47d5bc719398b4db3b75f4f4d9c98bdbfef7b3fce36d3ccbe7b9ee0b0d2b8ff06e8d2e8ad3db49656b1bdf7da8befcd64a869d2a270413ba81c589dbb016e9173346d679f8c2f0b91f3c0a029b162e7285131e2f41464d657cbf0cc2c65a79ef33daa03c0cbd60095ca4095ba59a9622b1b5687b5facb659a2ed8ab65036305f55b3b82b5d65a2b3e33485ce0a38a9029199821480cbf2a404091a48568ed5396a911d23063d454d5942db389fa89c44b98265ece244dd4a0640a8c1f787cc4f83ee7921e8a061b44df425007a71f5ac3c065074312ab198a68ba227aa831292a40b9639abe863b4c69ca1f7cf12ef08041b6f0d14230d6ab08912f1015c078857a5bc41d56082671af8391157b861ffe7c6185ebb34a03c59316b84051a68a8e992041ac59820b192e3a852f3c2ef7aee8e2290b46337c8589a7f7089a1cbbaa452a84bef7553d5bd8d281f7818ef0c38249739418b285496a986c1e5029a1d3a4baf75713e88df6ca57dc8f91ad61ad35e4a93f8ac2d519ea64812814f079005dfc1056229d65a5af0c539e4e94a74daeeaea0e20b922a10bbaae1402145461b202830f3e828c90d4440f4d2da0c1ddd0b3356044e4470c53d48461e18423546220b2822282248103eaa6daa9a88a095e11965e97dc8908924f75f285f9f9804bd4166c416d1ae256066799721706a1acdb6bf68e5fe18d668c8276105baf4cfad4cf80f828bc49fbfea790523e5ef5555ffd55600d9649b51d9fb0e785bc6e57ea76bcb2570a95ba526834f343a3041b67f8ebbe0e1c813a7ee5060edc2d0cdec49dc8e346429bdf703921bee3378ee3b79c9413dae972ba9a81b9299fb97a61b0d9ffc9e6fc53ca44f7bf46bd2b03066dd30d77adb7416a51e5599ea5affc95c032be25df10210822b0b5677f4cbf1688000441e011b6ca804bc133411f6da26b68d38d7e8abaa16eb81cfd28215570850e381deec8481198dde219ace8a0a49f825003c02b55ba28efcc45e9a26c65b0a2d2af537f5fc5764071010a657ca4d99125fc20b58b02c80f8921a70d355a25a4216dca7119969c500c65212f40b8ea2378a299e28587edf62bc5e5d86ed4be44d7f32b1e9a0f2f0d4325bd215d0d713c48a7afe230fd3769b493e1f1f9a99f466540bd01ca9fe620bb8e3291d51329e3f41c990ee57c03490e3140b87d2628872494e4567b2a8c50a3801384ed068e1baef28fbffdf58e80cab8e823ca7ec6ab12e2451c7426a386ba963c3c84754a7c07f5522fb912d02734092ece3a7bbd394da726c6626aca7dd27961f33140edbcd881514b5d1c1a0e0e8c1b22d334333663a525afade148bb90b1da727a3e678c0fc7cf6724e82bfefc35cd06ebb099c1c3bb77be2ff0bf5627725802ce60746489909ebac42806483a24e143911edd0b89b092821888083e21c34d024c4b5b70517e00c1128a5c841d0f3e44012c6d22d559665151781f7bb1789b373fed2e51b3f8a07088109d9dff2bc6f8566b6f4e0a235f5584085b6b87ff66111f7e4e0dffa7d576709958ec26a68ac5563737a5cb84bd582d9bd2c542f93115fb37b19b9b58bf7995afd80dcfcd0dcf0d4f0c9e174f2c7613b381992ea0d6ecb3542a2168e4c542a5b66136b3b5aac552362e56c87b912ad418ebc17c8a6754c413c27371b5bcf9af1bf3778f4a8d31d58d19537dd8cc06a67a9140821851e182e7691cae873c232c4748a81ff026e14043ba9da48655785e6bad32cd970d49be4c578bb552950044d24071a02e2c99e4525d3f9528ef33f2681e9f1b3878904edf0f186ce2f9c4e0f56a6e572f26d7b2f4b4d292657357be7ca5ba8b3451aa9c73be363058097379d7aeb4f45ae79cb39873ee5a6b978dcdcbcca12d04e001cd4581d6cf4047ebe778657013f6c4645a47ccb481f9938d3fb96690e5c953aa4a15d1b7d2ac9b36fbf6a36c39a767fdd637619bc76c9d3e6053c555a15fb0de6aeef485a144775769bc30bf08afd84b2605f68299656996e6b789d96410680b5a65463fa050686a97ba6705caf576a66a0ee6262c9b62a1582edded1d3da01f2d65962448c0254b4684527831c28c0d371c5c40932f92dfdedb9b3d6bad1614602dba7a894e2d43e24fe7723e8d68f0a70d626c3465a394fa7ce62a6e227a4e6fe21f7b3c5745aa67f501ef45f312b23abbb3b9239e2d2a759861cdc6e14bacdc97f6edaf939b2449b24bcf8925fc7266117fef7ebc618a6d1cb728ee2276defa7399721aa1f1e1ac61cb69c30b389796b32fe2484ad83baf20b1c32f2999a58771a0b4c9069e26e9cc707aa1810952d6b11006a5190aa91219696a2a146e7b7b6faa5af03c6ee60b14f3b4a6393619adff72d99e6d598923b6bf8e168bd49fa460de164ea52420cc7c0de73af2d7d1286de267028e221b6e1468df92d22c09a1b9202a94b3a3c8af8e0fece7fcd7806c3b5cb330332bb73af04c07d759eb1cf86f12eae55278e6b8153e78fb71151b3eced8c67631c69fb671100804d7a208a96633c5d17b85edaa6061a39da35e5f839b1abcb5186b4ecb76ff8b73e92671f7ee462a566a2fb7fa5e9f73cf19e31238508199b5dd956fd18a7c441da134674a8386507aafa59452ca819670bc0810edddd8da9ef3ce61ce5a89c61b857d39ef98dbb009c23d8e579fc4916fb18723919212d20f4a4ae20e4a6378e3787461ec5c9aa3399ac334dff81adcb83718cc414a29c55bbfa8e9305b7df7c6b3183a4734dace1c051ee77f8e4551898f99a678c795f763ef9bffad79ceeee11bc726a9ad871809b03123c986a17d46989124ef57f5b02dceff1772108f02a2e477951d3a8827cf6c2b5e7cc19e511162046a2efe74e624ef7b548c442ab90c85e9fda899fa1642f93cb919d9fc88fa4dc9c9278aef5c2188cac7c9af6691b8d9991f0ccc084acfd7d3c8d1e9fbecac8f0cfe870aeee40153472ce14d1dce11ff9bb8ada0040ff2a820f418301ae8bb0e1be8472c7c8b7735c939f8ad44ef7c49840fa101f2c3fb3d61640df594d64e7f95657b71aac5bd9a5e5408d2d7da5a39941b8661185e2dc317e71ad67056ab69ee8debb53026a83963da47763f6d99def951d9c6bd536bb5fdd36a2064fbe96837dedca3ccf33c7fae3dcff35e6c6d3f1687c0ac3b0bb36e90c20cabed0261f5fe64839d39b7e9c393ff48c034130ab1f7dea859997dfe9443bccd86e31df23c1ddcdc66ca6eadb4884b2f1197173b3c03c030d04009f4dfa020d04cb3e81b32548c9698ca585922053429103d11431066967490a6bd2638d249957e4c34083e21c914225e9045899022403ab0840a2b08a1504549cb0ab920a153caadd61d8fe67af5887222223e22332f5e4faf3d94287c51c404c06f2847b6bd319a9b65e8c196b33d137eb15c52d4d346267739aa47bf5a815844211d0b2c3e42ac6b3840640410302401c58834363030f8b1c68a1320376da45f211a4857d65a9180380d43b43f90b4029316baf4a084131e227e2021440e62989ce822d98fb4a7745491ea7965884b573303d31150881140296411192162b0e3f10452ae76237209ca0ffbc4ee7431b2fa6b7f22696974574dd349916ca794983bd600d184d4827692f47888e30bb6e81d66cf9ba060e31cef7fbb597f69616fc8a3f76baf759f43465ed8c61b4cfbb39167685fe16f2da5b45afcadcfc71853313be179772e4d936968b5b6f60828cc1512264cc48004298632482788b23484c278b313322d717486cb8f881d0f234b4caea4d1a2a5061f88a041c56010b239c105173cd102e464cb115618c0450920257ef0d024831e820426b4e48583f9ab794488985d26e5f2539258b415a4050c2b3c010705c80f0b120b60403285052a66c0e49230e1840a579852373b1c9456ba84e56c6f5de8dabc51e79b2a9b14222dc3a851f60a6f421ed2906680281db83002e88283239d5e4f478783323f0e36286ac1e3b568b10119df063943349d8e46eba48ce69460c8f224b10c394c42dc04f38c58e419d6717c6e99b862c4518153cbaec34378670280059fe19c02866c230162b87afbbfc505e854339cee539009a0cd1aa0e4010e4802811f24b651c60bb66db57f800b36bd496031e3886d64c162858a4e9b3ae08173841a3ada5bef23bab504faa8a28b54a5faf409f1973936af22ac71178e4e41034929c327d942b1329800100ae06c15e835547fbc49f264aed495ffd44951e422ff25ff9c7392efbb32c751d46014bf16bfe86d5b14f9de5fdc22b7008f0cd8d8a1810bf4db06f606a18b2eb5e8b20b11647954aea937525792a5165bcd097daa85ca3a030860c27085808119fda5af13f0b153752aadf6567bedade15c330d332e7142fbedbf59aaf14e1df13675b579d64231d7a93a6fab6fbf37e36c5bc6b88750add5bb722af69490fd2345c0a5aa2ead354488f4e8d1a3470fa51e2af81e29f468ad21d263c9c8452aee316b2ee2bf315e2d75728bf8d783272f66dd3bca7adc9bef9d477e3fcdbfcce38e68cc3b2c463c2cf7743ad1dc100d1ab2568f7c638c3fff7cd479e46bf81eb1286ad1623e8afbcb176a6d98c034f67b71c6f75ebe7d6ad81a4b7cd7625019feb5182fb0c658f34df928eedb108cf9c88ad1721439075ab0c6587b542e325aabb1c8917636d0452d5682feb58b47b03c87cb328d96f74f09194835beb511f6ac560bbb5c7befc5fc3ccff33c4f8c31ce9bc7e3f1783c5ece5ae37ceed46a22d9c76dc9bde9c8a978ef25f7e663fffc92f7f7fbc54b77f65a6bbdf3ddb47f32c958b831b632526788a7f95edabe7b5febc1cafb7aad1d85dcde7bc7f4ff7c1e8cabea6b98ce5c3c8a8479eb9f5af80b7d35cce2168e5c0cc791ff91f45d7c307ce20dbaa0f53808ea985d6f1a46e4b27b65bb9475df6a0977f29625f7d1e0f80be293c75defde91debd30fc44e261444e72aebbb8dbed70c0529625d740f71d51d73b2c463c2cb8dc3447734e864ea7532e48d3dc904e68e8d4756ae151c531849e7ccedf46df5de438d688bce3a042468aa3b73d7aef51c12672b6e1572619866042e781877b6db66102d3d8491b26048167ca13476d8c2ba6b3944aa55a595f78fa8441d4a8b1546369b55ab17adda98db618997e5a8bf1a21623eced84472c16ab45fb2335c5ce5b4dd488cf7a14fb68b2622db2ec32dab4e674869a3ab4afe3517a36d65b00804dd4e0b0c07724b891323dcfc7e41bbc78eafc98c356818b11171e3612f30ba3462232face197a00a17382fb724a8c3e637a66b60f999b10db0788e059e4d33e62803f5c704ebcd6e23b0b1b8a3fa9f9910413fb8b57fd3815bf7dc124dd7404c497346c27be4321f29c896ec1e3a6244efcdee40eaf8fc5b75a20bc505bad1fc4b014068c172f74747a8fe18c5957ba8bf8e6f1e19b677c6fd519eb8cc314dc2ab33484da537dae00aead2154eaa27e8a43eb299c5557106d1babbd99a77f5ff80b81b58f372ec62bef31ceb7ef9c6dd69b72d40bef70bd0061db333dcb33ad7705c18316620a36ab9b564a5fe8ecee71ee95dda02e6acd791af2cd62f54d3b0235ffb4ed0c76865bfd336a6d26b1c5093e83460f0aa5148009b3e50998b092bf57c626cc32d223a3193e45944777544785c65ecd8850286777189c0da8d4eb77da0c2006a376001010860442619225498a424c4afce48188049c148b8c07d160301c07a5280864180ea10012411880380420a48c74caec16008e4dfab2ae9932809013088f44103763ac6641998eccad794abf3acf5e55ba90830a5bab5b3238d9914ce728dab29b1cdf57683bdc93680df44c223a47c237e56bb258e67ab7d85b1032da0bb90618cb7cf6167b1388df68d0a20dc512bebb05bc47a0b36e6ced2974b7961fc6b27135841fc8cabb62dd62c63fc7fbb1fa356e03c5a1d4d29bf89551057c5f593bec37ccfe7172a52f16aaf7220c080cae7a66c498b2d4c5a65383a2a5528973eba1ba115508716599bca29dda8b581e9c6fd132c2f6927f7061941c7966155a623772a9cf22629ce3822965c070a8ba5b2712cd85b61904c84af5a2c4144ce9a5e1564507ec96e1680c4ab28258316a28edbad5d663834daa90b295d53305f9719fd31db5eebb274b62c00b37ecdea5d080cb10546c6182fb2e4c98d034da846cab71eba0fca0c53c99685ca51e5b368d8243b898fd981a55c7481584d5595ad1b81c01b3a3dc6e85bffe169b03ec04f13502a6154d8e87c4d8dec2056707e9e7aa68ed086d7d1462ac061dd115014e42bf0e70566e0bf2ad74c648765f21baa17ce402ced132a9003f484c31939a40bec1d2024bc8c39020169fb41ed70ba267d0fd8e70b752e60e12f9c5d3351a99507152c16da6bcfae8442f8f4be48f680c0b12b3166b297a01d14d69d7b0a1fa7eb94e0994330d5db03c2968c0fec9ad168d6a8adb465a99f764dd570293cbb80fe63e412219b3030af93caa29b8674e56915aa713f0a80bccebe1c8a077ea5bd3523f39a2ce93d7431e79844f250ddeea95d168d1a3154912970d0691cc58836a8c991c3eef735515a5a5ff86341ddc049025744090a447057a0218592105ca8d8ab1449eaf09abfc3982e5029f8f6531c927c3ae313b001d3449be5993ebd6f5a83370c3b969f4ab4f947b8029d69d314d19f6231308dc62f8f933ccbeda44eeb88bb94379a3daf1d67a9224bc3d55c77c73930f9c0553d1c6a354e503a3f65149cc546abeb8eb29f8a4b1a21d20a36893318176f00aaa4b0f6d72d862ff685ec9cbb42cf66e6455bea2283cbdc1c84829ecbf53aafc9aa0e23a1354f14006945b47ee0bda1189ae4e76882b6b14592225eab44740e5b6e3a750d948f9533cbf11edafe42bef01283e5047197d2a59f108796dee6386575e1d81b1ec74ffd11572c2d10a400f54fef779886808399454d194971aca697c0a1ae1045fa29921aaf190ad9938713850c411416aaa8bee331cd0533883982b378c5d16b7c4f913cd01a494040e7269e528fb01bf5685ccb7c9289ddd2c73095cdb4b64e0d73d3ba34f31b0b74aa765848b1bad40a36c18cd6dde65897c34c32f3fa1239fed4b9755dd3d1c3bd1c3d6f059bf25b58da6edbb548e141ca802162892da698fc34ae14cadcfc370c64d0117101e19b8bee4fc50192821953a82acaa89a9fdd773faf82185d64bd5299d7eb60123531b5f808eaa4de14d478bcd508ab0fa617cb78f2d40087d1d21b3f399e6466565a0a9c3ca06aa1246ff93595c0dab7a55ac5511f3a7f4b64d5b69062ed6f64c2b6e1a809bdb300d14d40c8c2566772d2d5ae02b9cd2c5096ca9dcd272f7272a0df01dc949331e8ae448d25e8b724feb36c89998454863947619a6bae1e9c2a3c5773be0526d34807037b673b24e03d323c68150162c0c9785a56234903f65e5133caee81d047b91d6cd798e19e0b5db0b775c29323ffefb254d5cc715565f343a9327c0f9bd454fc18f99671323a6a726ae04e359c425745156b892b4922a7594496b5ed742e82dffa1bfb4b92c11d6e5877ed1ed96eee2653f4b47ef4e88d14c1921ac78f1d4517ac7fd4c8b0714f1805329afb231024a0187d8b240dc7040b1f96f9b6435fb10ddbf65b099ce2bacd0d18e463ceaccd3c66010f0b7db23606472205e0aa93c7de6bfce2facb3be027eb3ce9749665f3c9794def86623dfee9dc1aba23605c6a59657cb455a0f7540a1005df66f27c84e12a28246d2ecce1f912c7c1a6363aae2759d5cdee9281bd3dd9b073ec7d749eb0ee721c13f28e9fd0c16f80aa9f1fed10eb19df9153a3daac8021a10987bf10bbaac634ef29f942f5c206c56b4344fdd6900b30ac512afd6f0bd9f57f327421690b29eca7266f6348a906a5425ae9130fbf1365a53a1dfd0cfad020f550fe92369f6d4383adfdc6d75a90b534853c9cf6054a36fcd1aad2e6c08ccd6f357c8e3e3ba00faa25684a288094ead5a2ba6aa81ba13852abeecd4828a9b2caa96f55440582c54de0d1427507475b7fba4ec8383fce042a740bdb4a787cc79928af30907cd2d6bf4537b8813825fd95440c0ab7e9b11847e152b49a437dad56a2d8d3456da3864169b7793a2b2dfb72226ad900de62a12c8d0fd0cb73d382823f2742863bd357c459aa0813be7ac7b919906aa2a113c4aa09029f087a548aeb98644b8320567cbeedc7a655926ca67c6a35ae4a760fc7ccf9f069f7d2502bf198cdf80c0ac90c3091b8e236b5f87efddfb9edbd40985bbe34f7aa866af5c752eae081b4d2f476181f28298560329ef9d3a6afb57cf983bc6ec6e9609417157938db4efd533a61d32ba8b65c450dcd52007e35c50781af25d0c17481c2cb12486f8b7398b280fad2f77c88bcc1b55d78b35c01067575027e032e2b6a964bc774c7cae23a4cad8b6f332e080e70a458a9720215e16578a4b280228db009ebeebbfd01bf1dc63d5c467a08a3f67c139f982760a2610e279f731f1ae2dcf1731360a5fc9f1931528f0ca5e2180ea029d47f4fb669834c0d1d67ad0c6d8a462eb806efdb9ca8b125626a9a04bc3fbfbb58a05ad7b7e6d28589453a6bb334b58569ca9120658d9ecafa866dc29d4f7e839f66ae2d7016365384531a2d6b09f0a549f01f5e65aa4b1bc6f97e8fdbf7c4d7d724af083ced151a069eee8843ac2dd50181d734949b69500e3914793ce9b7bdb06780e52db32cb6b8ff90f41c73f4041d190121f955a41cd53a24d62847e83da00c6fdd9a386b62883761010f1595d0fe0de2bc3b66891e8265474cc51e126947bd102fa64e72654ac0bb1f2292e9a039173fee6f0eb80760925342d6b1fd84f09344922582421454a0c44c13ef34c36c3946c8a5f19763f58dd703840fe643722bb4ede18df8edac83d232ce58461795db13e32f87f826534d8ce0ad318686d714f54711edc9d755de349eb1327d9d63e70b60c61b6b25576f28f1412eb3fbf52c044b5a69c7abe6f8d132ba998d4fd9ce3e6c8893fcc9374fb5f385142546a6d2ae2dc368092c241233b6f498a96b31bb9007d09924e3b4b6b7c782970744f675e77e1f98dfbde52154cc938dd6260fc43e1e71c488e7fa34a1fe918e617dcbbee63025436ed7e3c516c05b0d2d3da1be79fdff8e53d55f56400af00cd436cf44d0b8a7e707e08aa7883104e3739c1b7e2448e71afbf46997e776c8cada3e0e9f38f6f7442b005aa956e812e87496cc56c22d8d1dc3084d8d9b0f3b9a1b8c111df33cad17d1dc8bc8ccf66974de17b3296fa8d485d432ff35902caaa248fa4f2bf79eaa3980bbcb05ba27a2f2d98dc4f2ef79edbf5487bb9b504529b4e8f4f71d33ea05383a9d623e6c1000afc9606534fc293473b3592c346cd3fe5fdea665e63e200596654cef04676e136ef80588165fb0763391aaab9d2c693445ba2176f1653dcc9715d92cc2f08e75a8bccd1e03938e8c0cb5a09ee16a4cd2d99e046d528fd792d9318a6964b2b375f15f905693a81b906781f9f62aac48fddc252376705036d7a5655938e7c00fcfe8f522b034a0d139ad0a408d4f21262880c9f70d27a2f6d815d543b8aba6c5c51dfeb67afd61e65b9bc34c9511e9aec12090e2f1e95e5580dad5997438bd415a4f7daaf1e49e1eb4b06dc74b3065bd2b53028a380c673094b715896d25c752f0938f4a86b9e4e0815902951cb82bd5245fd4fe2fba33e307a008403a043cf64ea0b859cb8ac74eec994b370675482033705bcf0423370de98eae99834974b0c0d22e4332f0fab26527a4e3d052c2e204bc7883229eb982c80e7674df3414659c26b0499810a9af3324a1d69ec9aec54bd3d0490dad1d8256ebeaea14f12daec6b4f2cc467e1f0f4dc7b1b7577ee1aa3886163541acef92f200f6b0351685b148f72b759cba86c9335cfc7e5bd71406370081c50dbf53ab2bc84b0b223c8bdc30aa552299794d43f61c3231ca9b20a154c4f9257fedf66d1edd41e95fd0b593e6262d03ccd51d144962ce72e3b146364eed6409a1f4c3fa16addf8ad0b903b4f5c004a291b7d4d9c86f75b9cd5584d03503d8fd7bb21441d1a57fd5239b5793c3db9faa234be2f469316270d11bd2fbbd1052050f5a8f816794353448ceaf9539d1c80c60680201557a93870c8a6421892ba9d47f8987bb55b6533669e8189cdba9c8f62eda48e1b4cd1cba695a7ca120609379d68cce29754d774f1d111997096e6cc6152021a92ba9c2e824c2398cc74ff51d1613081aa844991fb81a38a1a98b4b1d03dbd249892114f11d97949b4f08bf0dc068568abcb85d7321377adc203d86bdf025704b586bd62bedfed97f7cfef88871b736b1c5703f0a1aaeac325e2e4a6be4f1a5d487a1bc436e0e7d45e34ab29d61b1dbc7aa9584e333444f7e2614ef6c6c6652bed59da7a94536f1c0b67e5fa630d75d42b03d79f4bdb964255cf4ad1d025db2ae81a4f7fd684d5fa3047b77edfa9c8a56a532f818ebfb62a98e14a6ac5e5bbd4689ff0fc43d7210306c77f0856df00c8991333d065e9bcf2e3795ef1a65a46640876c0e9002a889c55bc145f1ebdd1d1fdb1679bba2c867b660b7dc80422091297f54061e347ca4f0c31eac50bef74167f7001a7dbc42531eeaa88abc50aa5bac6ad851d20685e258eacff72afe82a8d8054b429876b9a6965711c6d09f52045b5dc8674753413cd6cad2c1fed05ea4efc1cf632c8a7cc389f9c31b049f317ed05ace075aa94b7807a31e8c73d6198ca1d3d94cc0b98487e19017775376699c3971250237d2a3d270e629b6f0881f7f2bd4949dddf7a7b0a79c92df97cb1e179d3526c49b2d3b13375aa69c1eefa8363bb0b15405d9f34c33ad54f8380b4522db0137d2d7a193d14af27e13c75276e28abb8be8edc957178f2e9de954448219a2a25526aff4015e07992ba62bb8eb9fa2253695f84fa125680f5664e9e0a02cede8c87081d93098916e24c0f04a6e18943c8490cab31ddea6c3aac087922c811b77650f51093dee540cb63ace4570f473e7bbdd127d53d93649866d2567a176b805ba9a08bf5c609f33b803628496291a597139eee6ea35fcc52b2e491e7b6d9b74dbbaad9dbcbdb2de83533e1263e5935b6f565fe8155711f4591d5653a0655ccd42c90630b6b6571945d117e801e1bf818c0a5af53752d65604c8621993b7d2b23bff418daa47c18cf4f6801244038e9ccbea933028285b433cb66352cb18efac7877f434bce12be21a02ba4a7bc0b9a77f31ec8a2624932c304a9c603044537577aadf564efd23fc8acc72eadc7f24917609e0e16a8998383e31c46e429dcdd07d81196fa3a4df3cbd5f92a72ad0ccd99cdc628a8690323583bcc04f3bccff7bc1177cb01d792cff718e3913eee8a04ceac934b76737efd5e82ca4182e513e878261a4e7491582ecf886d028c8044e69d25c2feced23192a5a2658d007f96b19412c609f8491539915c9e084e79797a63945b9efe0026b10647b41a46f45b297ac51239a5d660f175c60abce9f98a0012f26a66add0fc24e03bcd18c077eafd7b678ca15e70d0a0c581e2dc100fadac952e80ed14f1dac8f6d86f865921db48260d5eae447c46e41b0bc4744c588c2df874d72096f4cf36b9f94d505bd2c80610f0345513956b9522f88666822a07f21b7f109b5075935ecb648ac032ec0987deb2f65c266692b5adb58ea9aa1cc0849077fb15778505796a5df46835b18ce15814d536e05f1a475bc5666944beffbafac9068847883c57a52cecd79bbf7c72955c25d9c2582555d0ccbd18fb562356aee47110b8c227539882ad110b997d8cad2157793c23b64b90939502806fd588b1794fed04427f3115fa63bc3c5959cd88a1080a7675211065a7b6de904f44f42c048f6ef93a125b57970051e54f2e4b85e3a6fd8372e55e54177739e057c202f9d61a6fba4e4f417a33a76a059e5e8dffd037cf767ef26b29e07157d6314c30ad935fb8acb44e0d0f41baa6fb1ebf7f7eb7ec3f9ba3df32cc75dad5f7ebbb295a7b037909c95d9851a341018bc806929b5f38fac25a060daca530deb982b4d17069be2b9e74f1a7439b1a17f68d8f30a5b09ee7c93e4e34f1b1266109dedd59dbdba0b444249eb0e30a7ab074c8dda9c8caf943c2107fae12755fb6e841e2d04f888b68bd756b562143c2591776e0ae4ef8a4abd061ed311506e9ca59ca432fe31914a226d52e5c10a976e8a9d85a0bc2b0a2e0850ea5f04d7002f53cd275ed619833a0c03c7008761a8e42fbb3cd14068218e0c9c2bbe9bc3b6ddd39f02d967005a9dbac4b37466d37b448f2c25e7fa0f0cf72685f56f115c07c5321ff202c73672241dc4c5941f448eeb591a40e64fe7fdeb91311c4cfb91db3525ba6ca68735ac4f88ef59bc0f36547522f7baef23c6f1a17b4b39a1a625bea5a94506156348937447b9aca03e95045938a6e2ff973cd7c1c4720ef0e4c4dac2162d3d71cb60636f01904facbe6f355703d515953eb704e5fd86b270590fb3fc4d58fda02a04b528a301073a28bd4e777b3c745b648518abd46a4345197223e3131178eb75c472d688948786add2ab3037204fde49f0a6ed5d9eec4e5d2955a691189e22d543d441e2b461e9a0c9601b8a9852a0843b8a02c96255e3155ad3360a39a1d6965b171fc0ff75219649c65b1dd28d46eb3bc931b6fb31ca34b16da44f2c2e417e212ccec3864ae8f41acda9af07e02988d22b21982a9b27f4d3f0d7e87aa4c2480bdebe41f0e09f73b90af8f59d81043caa9d63d85db191202d007e575668e5dd2a02d7b89aecbed968e5f304799554ef2b63184cb3eaa1533ecab8cb2aec705018f7fa906ce5c27ff0e4db6aca0979025e22b5deae9873439d087395c7bb13ca135303c1a5fda9ad7b345a0f4733fbc0f1b0b765955d70319cfdcf350442a7a3acc510b88db8bdf2ec70166cc996daa03a524506026d5303fb9e78490ee5ea956a23d49fd713fd5655a138f4531b1bc6fa96c161b4822ae9851ca45f26d4649cc2bfeec6064c51153cb87e0fd5999f930efbb1aed78bf5e46d7d71e0c67183ecfc77472e59bb59af422333c296b18ca944f2291d5fd91f2f8ae540765c8ae2e22b63d0f30cf203cddaff4a8ef4a4d678a1702838f562753796d01435b2a10a39652a733d46461c06de471975f3aa9be7a8eff8ab256d0cbbf34d9e750b2709ebaf956fc5b4929c25ddb9175b8ed217c79fbf6a15a0872e0697bcda7f904ebedb635c3136e7db8445f3f8c067094aae0a2fccc71e92a8298aba98a6ed05a40b9830f6bff57f9421d9fee67e7cf42260e910de7e0eaf4b8c443053e9f723ce96186f2604769818932e73a481ba395273cc0eee6cd3e1e0e7a043a3745ca48be489cd4dbee74011c534ac0c6a502f682eff15800670fba41b8c502c638f0a80f6b98e1894bb01968a4049b006804803a3614bb0a24177463ee49e32fe0ac011ee6e7115b1e0d46ec6e2585c8669116174bbcfae7a48cfe412d9eb111b9b5168b570f7a9708854fb1709909ebb5318eabd00e08a4ef90dad414779aba496177230374daec840910e2573709270a17c3c118ce20476f439c25c4204b9d2691c63ace8604f475b5349d46c046830e6ba661f1e5e991eaba49043c287b61d4bb0ca117e199c1a5752c3b9fb90e456e41798bda8e222c0d681dccf7282cb73cc3443ddda15fb8e58e1968285eeb84f792b5c34a6c1546ad1100bdcf82dbf2f0405c2c3b1e29f7a4b9b112a569a944fa231ad8d63a13c47992225f0aa720ab810d05e1b725e34d5f699f058fb1568eed1d46c6e50b4f36f20863c6e513134953c92baa129f2f0694917129aca11805df2dd1ca49639a4e203e9fafd4143a4973c115d4145a790b21fc2040d8620b4eb0c4b9222ec7631709d6722297c037e81bba2eb7fe52906dfee6df908246e251387871c6a84e6d97c3fd617b9f24c98890d8f2223032b3455b89b6446e09de94db1a38bddb515c0fb81b14603475ba93fb0c9d1478bd30b10dd610279d5e86c3ebb1e8e7fdb325206541d529872b04930555a1532f504f25f14c4053ee410ff28942e6ac33f7e643ef88a145682a85d9314d9d242086a797225a51e5bc89231aaa474cdfa8999f71b98ce681594abc91c2b9205c8f5b03458fea7c191352878320ab301e4e27be561b424fdd0bc5a81a687ca23d6c157978f61b336d6ee3c07b7d4f360ebf78eae084ce76227b2944231dc1d3fb8721f06952b89f27a59b904b0f29f076a70247723879d1b54d28fd9cb05cf2aa5d5fcf53923015ccb209795a4cfc0ec6808b0bee7a13fac5a31c0553e69d283ff9b39ea686901a7348ac691fdce12762ab9d429f50cffcdad2159e50415bd1b6a2f6d81e2b8f17d0ddbcc9f12f701d6512b5947f3648e9cf8b12cbc0a30a7a803c7ebc4feac47fbe374976fbd1808852e60fc5d59b3f558d1dcef3e85c100fb182372ba15bd27ff31b16eae8ec07ff541d8cf1c43b7a4e79002d3dd37b94c73237d30de55302fad5bfe67396fd350edc3541fc2b5ff5d8b69d9d86ea9d6d0b6ae557c2abe037041903c690dfa4b76f01af8bbc28b0b558335e8ccfce1d33bfd2ae3f5056593fe159fde02f0f3d8c90eab3a623f5f6f744a977c9524c9c707ad93c4dd9ae456ec8ce865ced12af7b3ace47806314558a4b757e4633e011816b61ad154282333a953609f4ce2a06dd4abf1ee4a10893f2994a34c0d799a70314109a78007aa92bf468bb551b0d6d2fdcd6a5989a106202def78eeba47804806e3eee3da027eaecd87488c0fc8808e034cb00b529d3ef1d6aa4bf1f634f9c8b53590fcdcbe4f34a0191e2b7aff0155f8fa8a63460f9dd2f3071b5d4bcd5fc386599dad42089bf90e3b2746f6d1f0bd292c871d2946da43615561e670533a50eb33c788881d3d6611c89ec943e0b76095b8d42e922023fa6f92e314fe875f2f4371f26893deef5b1b63c045e4822adb128fa6f8798d8c99efce0a051c2216f5662f6748c0e1d721fa006e694b58d52f568550344bc8c01d57b0a5c4578d033eee86a6cd042f716b98a141e483e83901b4586df34430281472f2dc7b4df02a61877d89b9678ff6da865a07915b47643020d5915fd556bbe2d32266077de1c8918bb1f5cb627ca6ba4484dc1cb0b9739121cb6b611bf0d60e34cb939f128f3da3a0df2bd175e25d98b01d0b591a2c62a559e683bff4e67550ecd4e00f5004885a038d2bd6c42d0d1639f9ffe8d14e44de9573f68043b90687570042e134bb690f0edd68742def098e0751e040b27937ceeacbbf02b61442e3f3e175317d39041171aa45fc3aba29e5bc60440ae51f26ca5f02dbc7580687abe6152005669caf57db8276c405fd12b8569c761c251d2ca40348833fac9ee169f3269294cbe704be8135bca4e6d5531423ecf3c338e1d252198c2cc7ad1a6ce584c612a6154b08c06a170f716faf75f2a35d0bf8b024948fce61cc1825c508d937f7eabb49d983dbf1da010c270522b3832142353d674e89c5389ab2f58cb66b0495bdb494485acb59d86a70485db5c06ff19d5afcea123867bff2307249ec8e85d7fd4c9bebf4d2db441d38611f7f1d9a1c7c7ac561d0e4dc60726f8cf46441fc06627ad0863be631385a6d299900b42d881f1d38b8f713080846f32349867d2bb485ad75cdedf2eddfd400b19ead1e5b55e7adfbac2a75b1c0360764b932982ac32d9855c54ba713199d053f60ccac4655b54c9c54077faa37131a01b929bd85c43dd25e8b13c9469cacdf41b10352ad398e49d60ca63ec715cc88dabb9a6a2c28d32e7dbc2cde232815ee80b54c6656abaed04da414d7b52b7aed99cb26517cebff0821667eb10e07c4fef27c654cdc5def72fa6158e3699d0d0704f5af5fabe6fa5ec6a9349a189241318165c71c119c191aecdd66c0ff4bfd7fba9627488b204c8c4d91f5da12c4c87275dabbaf1807cfdea669c20284b7a7ecb022680f8cbb7ca95534b329ab39ebe2d207362d0d23038892025800b19495042990da73d4433c5bd9e37b50c14ea02d6106fb9265a5fafe93cb02c1ff33c8e8291b6c2f89e3f43d65c86d57829bbc2c7b26f11a9e2fbf40133049f3f61605698141529a39b78713d2f984130ff47f06a09ae406ef22b608df02282f979f67c0ecbc9494324282b49b1ee472ec497dcef12f812cd26757c449f046a2cf3ea0cd818095be5ec14805a223f09769111a15331976e4268c80f00e1941f787da9bd011b4ceef87c7be807b339d0a1578edcb1f7d2d126c240cb95cc8ef8b43b05562015e4ae47e08da4b9435e06ba93123cd080adaa53aa9bf759413909c8bd9c10057d309821f6093cb5c62e8d118901f841ba9be44b798b3fd040d679a4ffdd19aa3f434366fed5f65ea94a23a786c32126a29abf32552fc10a399051678c962eda6291d7d8d4c560d6451a696e49f6b03cc96c6701f5c27d2008013a24af4914fbdc70144227ec53c91d1b1804aec51b116dad76c5f1e34302f798e037dc3cef59dbed3ecdf7e4aa3e8b0d0cd5fe784a66a360f28f80fd7f4e01624398c5dea01cc5cb2f31a3903812d1be3f61023c731da55a45a70be7814558223106a7962a3068007f0607856eb58b2c138cb246f81ef4d4ce29ffb6a4fe2e15074becb4199ae8bc5515dc6a2330c33fbdccf19bf62d14777164bb392007ccfe7a7543efd8a0182dd10988208a233060e5fff885fc9cfd4147700bbd544291abc5dbe6bcb952f88d0311e6c40d937b5911301940029920c80941a04ecc10523d027103f12112e12ab40e923b956cbce891f1cac9674670955ad2ad80708714fd2fee925efe4decd818001735386c50d02e099c6a00a1aa8317fb4048e5f62ca1916adb217176d300f400b42b151f101589d759515c720efa8855af0eb496a032831732bdfff4537fd4de3c97954a4572f12a54d64230bbfa4567630feb673d564d10110eab989ada12cf23bd9e1de95cfe84bcb9b0697a41284a5907efab245ed3cf58f47acad70a824395115ff7a03a79728fd85ed90ef7e0fc78c6cf1c25fd884a498bdbbe862e30fb07079adeab3e8e0a3a1e7933b9bb0a2657818cf92635db6b58bc5e28c9de027e1bace6d4fe4bd9f8199ba681de8bbc12e6df213a882c8b920991f9d90e4c27c278e2d5407406fa6913e0ba4c468cd3d9f0d219e82ae9fce8469846066c115334a78731b0d64169f30f5bc2ea17cc32dddec40025d0a74d40ec09f20897a0ea1bf1c7722cb6e94e8da7851e5f4c51fbaf57e7865980e91d2d9a36747e210458b0eb21d3a8b827f92c59f296851095871070d1841db05b4ff81943b7311e8b1690b3734c3006b57eb8e2805d40debc875385980ee78f15d25a7dc68450592029255b0da01267a7dd6c1ac1f09b6258934b8c9448c0aee7577d4f9e39a489c2754dfa8bf296646cbf116f2fd288bd88d0ecd5155e1503fdbc56f45aa104205c47df814153373a6de81d7401ba4f3a58ee15e2c0ab0333a066a15de1205bcd2e9dc5044c48763cb93c3a09329072270eef685ff032a2957173ea941ecc9497be19c7642f0db4d168f214960c270df7426938b27cfacc185a254b56b107e48f38ed5ec5e56458a862afc53697e0ae2152f67884fd4ec9e731868753ecc71bae4d8409a24543ea5a17eee2a556ca5b5ef2f9be170e91d1aa5616361d09bdcf7eb665869626f6920d4915aa88187b6dd1bc1edac81509c55e413cd33cac6971a00ef498f57f32f2843e8d201409d5b4c759ec1230f6e221c414ff80aa03c4d6b18ec100417806513b1f121a20bd75a6f0f10085741ce9956fa08860392280046a1ac989457f85908248006736e81e617a6cd6baebf5c0247bfb225f9d87173290a4db907149264548a4a057c8568b45c30a22c5b6c2b921c1989b16236301b8f5da0ca398788b2b7e48496d7c238aff053eb26d3697ed19f32777eaa89d745af5027523cce9215abdb3b023d06de1d3528a0b9f8e012248ba7f43d8f1cbc381d419efd88fe81e6e1620dfa80b74fa0c7eaf4105ea1e89ee0946d2f8675c5c63f790d904e30a367812dd0aad39b74967c110ab32947644009db348104ac258ca16e2bb0605e156a4a26dc2466844b798822dba3fb68e53eb35f8528654f6addee514840cb4043c75a0769015e8186f4b5563930e14fee766b84826d1fb95640b02114b969d39f6b0caf2c2c1290a133766626297d8a3911b81fe014e5c46ace8ee15be5b0e20841656e114b384f5ebb86f3c30de86a246b985b18d100ee4c089004a11977d85823d89f234123cc43fd00a665268415a8542dfe949b335661962c02950bc93e4d722a4d07d795b74f051359d8ab3f2b27652f240dd41cae51bbbc1a6c474e99c809afcffac225c9771bd9218653e8d734e7c42771f9d4f7686a4e1c38ebc99e13e4a59d78cba7a498981b97c24ddaa5ab695f1affafcae9e41f75c7d3709e0d537ddb62dd2c731d549ed95c7858d97a3c0250074a3644b749aa1faef2eda9f938bc99c6b605cb8f56e5923a0e342c3fd757a5cd868ccb4a5ee673b772db970fe2617da69b22dff53197254d23e0f3077072d6576f5bc44d81c161c6984f328211cb997d31f7a30b302bbd2c452ec7047b71605a6c5f8dda0d3b11c35618503dcc342960e624ab421ef84e985a200fd3742e2b2d86454eb5ee09340104933b674a6d78cdf80fc8013f1e563bfd103e1e205dc68624cf060362cb94ab00f9fe3a6e3f72ec9ed46f2a9d4cf358245e4f25f741cf53e844f4be2419b0be23b10b49b25640557bd49416b602f402c1a250a275041d2a14f028426de9355167743286395853a0c2680d3cd0e757fcdcc4d607a1a98914e5499dd816b22883d653598019042a19f0ac2e17699b321427ce00101fc0c1572e3e3dd2ff29c39daf3816f760f1249482bda0717a131ca4d8ce1b0f3b6310b1b20ff10aba547ea8fcdc70a59805eb156fe6ad057a30798be6f1814deb1028cc69b4287f3e00cdf5536ba4fcaddd3779bfa489ab5a91310777ce3d5f4be81a94baa5fdfd05421574c4ed0543a5401a27f908f78b395816b82a192fd903b3308b3146b9cc3384bc6ae8b34929ec822c5a3fc1a8a2ac495c467b350d4b591db39462b394ceb6a9a3ce529f2b2b1e8e3d9eaff0f5905d62f35f51098e2d6f348248b3df63fa849ae940ac92cda81f8eca650b79e39abe80ecfb41d92d1f635fd2c61667452b70eb2610d67e6b4a84d8879f067ed8595c40f12cec52ec0f4bda03d8e253db3ad271e840488720703b2d524824bc4959ade66703e55667b8f6fa913e5516e64e3d893d47fe0f3ed5e6e5637cf2e64a434eeff7d6d2b390800ce63f7de182793c79d78f5f9924577d9cb5c42b7f1eec1412b13179291322e6fff732a1639cd24a4ba6e33899623653e98a79e2e527a4aab66e3ee620784771239c08aaaab65d02ee31d8025f8eb13a6b78652d04adfd22939765a71e654ef50c1a0c44fddf61a5483ebd4fe240c435ccfeb8b295b16facf4f38a524545727d88a95557fc0fa222511a6af5b7de3214b04fa3d3f9eff3be38d779ac42d0e2407dbc61cf65429a70bedcb3abfd04bd2609d2956fedf9bf88563fd3c52dcbc18558124822c47dde836484539ca0241c72bba814e2de47ff6e76c86ebd76fd8cf594389a797a8e2a6c05a7175b42ff664b00bc79486beff2909e278e1d4b7ffeef2b1d12567b06daa485c34023c8de4cae081f1f2b8f0ab40a2ab8cb743073fa88b5cb869e38d3bf381dbbead37eedb3c028166a3e7933041bcedcfe4a0fc232f30733836c91d3658c30bc5927d653bf1ca159663ec7a913d4dc9972e986e4cd912da27f3e930121d109f26ba4a1675341e096ca01a4659d460d8dc5f208ae059a28c28b12a45f92d764d6da43d47f3632b6a5bb31535613a928201c2569d418008464150f62f84975e3ca40a715b268761edaae6c965b5f060d609d31887dc8453d90bd4fe60438fc9141b9aeaf7a69cc3969c2ca20bda7b80b78dc1d9daa52ce184232ac727afd5dfbaaa9d79ecdd8719558f0f028b43b23290fc4a6f1fb8e3af39bee51a554e17f3a361fecd6be0ee905eab69c4c9374f958602a5a560e2ec4c3e8489b409a2d7b9a0489005a4c45715dfb19c3558ba4754570a976adf9f69d6efcf80f97b2ec892522d60a72337dd00d030ce4462637c86aa5e4956a320df4dd1ee79e49ba336cab5d52886f2eec5df8ff5f4629d967def806c540a2c156acd2310d4f946bbfc7d518d8dd68a2039a3f56400f060a7cd3a4a0317ee780ee4ee1834e452d37c2da969f2a8690da969129ce97238d3f1b1d3cfc84ebff65a1fa7b43e74d6fc0ef4900d4a4f3b464b2e2bb9e4371278ed4df8f0c1a06ce8171b76c48e312a1603b555c21bbd6faa3021113af7a6b689e2c7663ef571f1c1e0e3889e27e59b565d342ad977f4f33a9e96eeb4dacf4eeb62cd6adc81d71cd6f5e67d15e5fc69ac7b9d9e6a4e28e8605d691a462d729a5e012a34c206fbfb46e45af1f7138caa279380c044f640f0ad6dfec039c5feb18a2e288ee54874c52920c8f4ce04896192f8e7c163e6679dd0941743736f428fa3c4f8db00d3338889078695dfba1a93afc467ba1be8b38dfc193afde31bbf422ecca8ab1387c84ef38c305d4f1bae1192a34da679826052096a581b92ff85a9d5ccb070305bb6a30bf9d2e66ed9388411808c36180d94aa233f1963adb629de217dc53b468aeab302678351c9dc922a4a57ceeee9fe0d08a56f1a51fe72b2cb984131326318897494d60e01423a9dbcca7d3155c56e11aa0ed9994083542a9e4890508808fb7e8168fd91f0ca60891c27dcb3fc0c9e8e9aa081832ab5a25b69987df8a8e255037fc11efb435452f82fa03e5104600230c05231f29473c687edc68d212c2c2b85e2bbbe78db87957c5beddbddacaac2d25965e11bab8fd261430108e37ca2007889e196529b30a0e692cdd965ca25873b5213b8c2f0f0df3c55b4796e712b64792f3c3f695c360618b8eafaa48627dc65da8390bc50f239c35b1a653ef346d3cc31fbc849720e6dfb93548c26fa2f843eb9bf546e3c2ef183a0aa7293e56a417ceed998bd1963be841363f83597dd2400c54c8b342df858e7ed2f42989f9b6718f1c7df19ffad1dda02a60fb13a2aa92f584f9fdc59e75e6ed1f1ba166a327f1419d58f9f7b42c6038345acca4d81593ee93bb9338f7eeaac04341768fce634dec30bea88d82175146e8372bca54382e73489c79de635f19ffb8b289f1304304ecc6d6da18bb4efe4dc5cdb4f0d44b2394e324ef31326edb35b0b46299ef17803f2a9ba6e0e18c0a5cbe9abdc3180e827a31ec3d5c10681a1965559d57606c72f5355dfc9b8156cdc0c0fc1a6ce53577a9ccd264debbee289618228b0b1286df5c862a7930151f4df81588e880b7827496a82eeed5718ed19c77e51e44e7ae722160a7dcc251efe3a0e99abf45b5c3fc63524b617af4403c0eba616ca09674ae5c4dd0788e70bcd173e629f856d15fde3e82fdfb8c8172c588dc5b6bee7dce0c764eec79bfba02ff551e4f1a55bf77591fab46731576ff254199d71a22cfc121e32b02d99ab17da29dc9361b245c084da93ee2db65fb202020b3edcce66ad668d83b57da85db7cab56eac64883a90fd40acb7bbae210678fde163c343acf849cadb261009d1824a9de8404cc7fcfe8fa704cdb92680845ee04762adf5c26874985e47b7500464f85a6ae47741432cb409ed6839b18676c53e0dfadcc5842e78ad11e759513ec331445f1f1ecd1879b7005d1f2e89d517bfb167c4617534582615bd613df72334254bcfd91936ec4ff25ce22dd2015ba4480a69b1b8dd4cb314399ed34f83ab7c0dcf324e0bacff9dfbed8a111f6889d0489b66bb016ffd3ad39ee582662441db8642cf624eb3cebc7a81d44db2ee2b341aa82bb33ecea9c2b98e5706e27a5809ecd1b198bd6202c59c8125ec1723f0c856f824175c2fd56bc456eb3f6aa0ee9956fb7ba936a455460fd9ca6d0a514407fcbfd80820a3c505d1e7c2f86bd1667798a33d38406ea4019c27844f0753051b2ec396b94a5622904239c195d1dfdc56f9a0a800de2a62efef80c0f3384a88decf85d712924ae0512c7f5de94b1889c11de316968f34b11b453e9a510d30167b5101e194bc19c5f338004eaf5cb0bb11cf04ea8fdc163c6eb0cbc9e1cb17cb9753f575307b9327e13c0fdfb3290f7b7164092ecd2a21c148d8016bf622b449f4f452323994a853cde38589acd950d520df2a2006242de5e30c58aa192f513bee7c1e777d895f113ae6870d1908801fbafcbd8fed3a7154325fa82b1bfa6733d5a458a7afc245808fd6e037c81d8af8f98bac834111aa0f4f963e85d3a3d917881da634dcf322f72d8b1ad4b29f52b0e252860a4abe72e1268ccaf00e9e3e812f25dd4306212ab2f4108eb695292a6ba4e9053c920242a0874a1184dfda7737a922254eaa2ade262732b105b94127d89de5cd8e7ec221192afec1a6510a827d28dd87c63f8f3af637d620accf515f9f09e7d3942b10c3f9c5394d8e426c7a2250ba7ee1852ba2215c1b89d4a329e1143fe9dbd325b31874b6cc15d35b9476b1f5c538900ed179c5bca4570c013341e77bbe844ff9209659ae60616f9cab666f6d0a92fa3668fb67e96b971c4ff331831a563c1ece94790826aad327c6300c444c707cdd556e9931b9e76728c14ff6c9a9e71ac59dd72a2e23a531f65250039cd4492021b1279f3e0be6f513cd3061121c3e972d6bb109d2e0308d2b5b9ddf950c3ec2b12a4d60238c33ef1cd7d4e22aab64cc95094e24938a7c8ab864fee6a1d3f72c03837659bba76c39086735c81a69d42ec0b373ff342da128f99747ef0497210c8bbf45aaaad95f90715816e6d942395497c29d6354038876c51b1f22d7902927d1289b318d663365909b569624a7eeb75624a73299db8c67059b0b4cef0bccabefa0704e1505ca5e5b420df9817a0ca3396817bbbeaa901eeef79fbc0ee3fb447066ba8944bf98019fe0ab44c27371369b10c6b80e4ebea604180cf3daa06b68084b6a0af3fe845b4c2cd5c10c26d6c526321d50c476069794de60be490272e396b594509b4a046f75b95e7b13340b24d358dd44d283ae4d4c5499be8860d2b3e5ad68b18d6c216a515e46d6a048ab402a102d8e30ac79785a1400ead06cf8448fc168f0bed136313528e7be149685fffcf64ff9d9facbd4c772ccf38a95d67a40aa17e2e0f1d1b97082788c217d6f596392dcb321454f974c41f8a0ef92f93100f9351a15506020027d09462ada0d54e5e308f2c82e52e1bd64321dada0b6ce66604c2178efd007385b16bdb22a21f34d6b5e2a4f33a8987de64360eb0e70a2414e3b92c7519c7eb5428a7197b87429228a1a5080239aba75d118213056d205777d72181a400a86b937250c4e785d82c8b29b18de4ebab565aae30bb9b8a751598d4e0628f717423a51ae14c21a0377c6995ebfc7c00391ad847b59289ae319e6e3e9d88f89f1c3bc04347913bbc94e33406b0ecc9e8f5322c928c823513318bd0a7216c28ec750fa9a90a94120e8f484a296318d408c692c8682a15a0072ea272e62101ec40641742cbfbd6e0d12ea190fad3c5fdf472806fb9c3abdaca49345fb9c9bb6ed4bb94b83d3b4648d95ecd312ec33f8411072a73d8502774b16c2fe28e62bab5f5a88354f02e718bd1bf528f46c8b2a187c6893d04cd809d15b4516c73d61c51c2e33adda66777ac63dc931c1d8f9cd01634a072e4618cdbee4822571fe85ffa59b4a5ec29a59b038c1ab43d79ac227646a1b394556d912f699fea4553400e30a8187854321b7a2e2f4f544ac61bf077c3d480472fdea110da918709d88e6cb946266e9f46711edf3efe92012a1587d5da17bf3b3dcc00bff26f6f356d37fc22e375e38ee0ff869f56d93dfd1ea17db6b54215e5e5b0726eabef2a7fb85d8711c89ceb05c30ecb316ce8361a1c2be364755d856206eb5572d44cc161eae0255b2c2dfc0ff4031da1782c4a881a8ad2acdd140114afe9b4db8b3c208dc114bfee60bb549c1bbe310490ec040baf95ba912f4b642e08a314888410ab534a8000f52c0788ba6c73da40c418185441146d7311e497b58838b085ad6068be0117b195402e82423b385936eecb74b6bfa472058c90bf4e5213de15ae0d62da1d96f53d5f0e0c85111c19a6f626a39ba92208dd21dab168cb0aeae15cb2b9fc90268fe78967b627f3a56da4b8392fcaaddcb5a88e510a0b6773ad70b76154eb6d0085d925f58d77bcff5b10057fcef0544b473f159ca4675727af7495be4fc8321dbe7e751a409a492057cded6bbbde734e9dfaafa457a2e5d8dcd69103d8b0df6f84374cb879a8f94ef759b74f229fb040c65026ca21dcc9adeacb40b14481b1c71c0112e331c18aba276fb773e0be5349f856bfb151b39212a870fd6523e554752436fd5abc4e410fb2ff19fd86db723185449b20737e03cfea95b09cedf143fb4119706e76862673ff09d63134dc9fcd8d4cc92940f3213fa3595ce155a1dc47e734b01d94bb4f345ae022c7817ebe4bae9ae0ba150482fcbb71d469c954488af7e28e71fc7d32dee572e763d67e16cd31c97e1fd55e1029b4e32d0e2b3d333e10ef55ebd9fa49cbfd17745cc8ce4b1ea198001cf736e3d56d33a494ad4bbf4a4116851b2602845e3c9e33d5c6904b9fd8707c5637d143b95cf680410713855bb2bcdd9a032eec256f981f89704006ef8fa1b3ee870348d4f1353616e268685f3f1c1682479ab8f21ee20710753fd07b0d29eff2339ff3e91eca49761dc318dae38bebd37fdb5cc78126656923f7a09ab66d5d3fe9897282c6546ec1f66808d699c44c6e2c3cf0ffa3a5dba76305b794f42b0b34696c90758ebf6aa2d47f7935624764c324e8f6cb3f4903812dd42fec6f596ce9a687448fbd2bf4ce1f6cd116b392679ec584dcaf9ce794d6512d7381bd990009f9420dc0d847f4686de1dcc0b8c39e21ad7ff27fec9c0062625ddfe56812eebe55031f87fa35f3c9e573ca765f02d11b521013b50e2efe241b66dbc54c45a40a1b09566db5348611750b858642b051123b9b32c445b0b9f2af1eb42479c9687eaf128589702a48414517390345a29aa477daae34ed6ac44a875efd83da3d6562d1dc7a8cf1e995e23e10315c5579bd0658d5b6bf33ca6b41212fd91c98a99867d0282ffc338870d65114a4626a0c886b426513e94c5c9b5add1def38f938930070ee41bfbd099290c906e53a02b2f0c5a34415308d14c18219b569905c8ab8c185cddd242f2f502f44cb989e0efd544b1d53f6349be3a35d6739f604a485c51b27e74e0838785a56363c692c4c24707518666d2af2a22fc965226578911d7894bdc8452cf9571cf3dbdac77e1d2e29c50f89c2b47568a252ba50a5901552c94ff438ace120e0bb7cae691e115e59a34833f867e05f7048c0977cfae71870c58c18fe86abbd1795b688219a636ef5e6312c83a75d3778a3fce6b20ce67080c2c873ba0295b252ecdb8b3daa83b67aa4879b78414c5c57efa669c107a111bd35f01c12985f89a42c7cfe26325aae9d18a0fbd045dbe7f0c1aafe3e65962c979f32cfbd27fbc154d12d6e311b5218e39fb0a249decb7c798b969a344d6657c0b393da439fe8424edbc5cb078a9f29a6c80bf03ebe0bf0a2997f14cf86914db6a08242ade16ebe231e7362681ed6d0f0ad778628dd2c6f39bc5d3651e2b9e50ea765ccfa2ff9287614ebf490dc22b308c5323db2ddc45e523216b5d1b9a12d2ea35423624ee84ae54664d10106bbe2cc28d2bdf1e3e088db512b0fce2d963794b4cb46409997928b396341295919cb3e8eefb7b0ad9e4888cca99e07d5030f95d5cb2996ece739e1039c29813a979b6aa5047380e55c56d9d87361486a951b86b3a21f028c1cbc51e5675e0481a9aa016acf32b1e8f75a9f78a14a61ec6fb65109a923352c02d80a889acab59c2c27af2db78bd8697b3f95172cc1f73fe5486bc03621122b20b7c4845259a94a3c074281420ec1be189834f4420180c6346ba11c809909ce3264d88acd06458d79c2fa5f69b10bf9f86acd8e8a8f860512270356df5196133955b8b0087f5d61af8e275eb66d91385b520ece95847e4dca7ea778ec2757976ef35cb8d93137646d95b92515da94256aeafca30f207b2682865d1eeda06c6cbfb58a9efd974a8ab7d7b5f8ae613c0117bac156113ddc70dc3b8cb02f5fd587ef30e0ced0f0752df56c57124eaca0f385c5126e3c9e161b289b4c52e56f1c34c5287bd90016ae870adb957f30dfb728d751cae61f25eaf1c0e635b6ab1412cbd2a0ad98d9052c4cfdd3cf9fdeaa48e15cb4948c2342991e5689d535d8288f3ddb2949efcfdbd1204ad8fca88d8968e6b95565d28b2dd7858eb9ba62fc4e3e0e5ba08be5b805adffe214479182757806cbcbf5adabfde1f4c106505375af81bf4306947dc9786ff81f464b0947e62f6d0ab0da82e1af76e2d3385a037b9f0e04f7db7e1ce59c92c89c4b059cc6f1aee0e891191d000bd98760809ffba7e04500cf09c7c476280853a9443e970445de64a04666f82c5d9d9d5585e62250ef38205acc16df5c93e3768b4f1fcfa1137e354c4b002feca7c6122f327d63d03c1f522725988e4434c36273a577320d9ce28f487980573d905e8fb90a10694101763eb1b8259bc626aabc310731b77f9f87e30212d0414d4e105d9afa3fbdbf4e528cd213aea1b8e0931f600ec0fb23d02a13263a032efde7d7f45060025e4c671baeb15115e850852578002547d9ad5b4c970f02f814097fd5a227d5768c04195c82a10bd7e0091e60788c0ca3967e377f38fbcfc324e61b1ae7e18dc6e946d7e1d2c3bfa83fa8dabdf7d00593630a28926aba0638ede1c356c220862ff7c687bfb7218fb810f90eeaff8a3def9936f1f8e005e1fa56196eba2d52c3dca8034701b08f13e8657d1ea823a5dd5fa97298cb8575f84482c08ec1d9ad857a2ca63e13a3917037581071815c4659adc7185771067075466019d306ca83e9156e00db2831d76eaa0c8c1899d7c7380d179d6c918875457c7df70a53584a49323722f61f99d6dda7214b41ce9182fdd42b2d90e93055b95ae8a56374abfcb611a671c1d80c45f8d61881682336d3f2bcabc38ebf24ceb2a5981924120e5a0d417d221cdf5751ba49d761e50522fe3b9592dbc89e2a6d4af6337068e6431381c445d6097b127de4a77efb83bdac984bb04b02f171e1136f2717c9e3cdbd72fc6797625920ce7cd54c4da52ce5a0a18a56d436d37a4cc7739f33316c7a936becc45a0c514acab116475d302ebad060e6287cf4f628b47a7347d2d88d94fd2e8a6a3dcab6dfcbbba4c5ac4dbef2d84b8c0862a698db37caacbe1c6143f1447f741765f2d0f42c6c6bfd902198210da6316c546783ab620a8165cfaae0b8a0d1c419e73d328654df9a90a71c321334aafec335504f72aadae168a35503e2e321aed92bd1a08d835feb73166560f4b6ceb5b60fa7157642181d9be0ba4481e6602a5a72191d7fdaec22a101bde439e62cfe07405c76bb7ee4a79d6c645ed4613880a4fefb4ada955d44eb3b0b064cb0544c901aa04d9374e305c920eb57c6bf0bf0760c9b93a475867959e71adac1ac70be7fd0ae12de57b8277b5121f4a390c200c4138005a01bd7bd514a1e1f37f374541bc8a91db4d301e962496d4585b292b22222252ee6a035e037703493eb95c0e391c2d7a74b31dade536b4d952c155bcafae7753b6b363dad50fee666f3afc09afc63fbc2f2613b60f8a8ba8b57abb42d55f6d53a9c4a8725523c0026a45a2563ad50c0a603c9e961c806f7d97c68dad72d720b9bb6e2e73feb964e26ff71d5557952a05f2e1c3eb708d161462af5dd9ceab47155783ecae1ad996fdd66547bbf7cf17b784108180081122df90ecca69532b70a9d63a68ac393b56236bab1111ff32fab9952dd2cdea821cb9d5a36a94eb91bdd97c3be2bb88ff323c6b5dd3e69baf2b6b6cc4bb6438d391e6d61f8f48fd713522558d0035adcb74ad6e91950134ea1fa1ff005fab47198191cbacb53b6bf5d0cd1a01df7bf0d87f8865fd8a0bb1cbfc8a2ef31c72998f2e2a1cc731c7fbba461ce6d5b879ac5ad8819ac3bcb21c0112092898c07724be02007e7e7298e60db2d52de77ccbd86b53d728ba1ae9ab656190cba49557c4e1fbc77181c7095c0cf0063a0cb526f50dcd41920e3ef0c0df9b33c6629d8c8f6e46b6239cb559b10e0edb6b732eb15827e37b8328495092212f214944df93843cc9d64932ce3cd7faac780f58e968f8acf15133fbf9a4e131a36729b4d59c70beee57b4d6e102d6726489b83274fddf672b2fc25afd5a9b73d65a73cdb92e75bee2cafbfe5bae171e828c3df54bcf4a4535958c6acb984c7db4ef20bcd4e8d2258e948d0ec412cf6ec7e6d7b3da25e1c8e5b4802a5b3ecb8e28fa766047309829c644b2c76b127dabb3661ef69e63fca1e6c52a0513712bb3b6a96d6a387a03606f50e7c43046964620c10557a1611b300d60105a916aada4ac677d22ac25c3f2aabc8a0215981119c82bb1580b3654a8d1c3cb24652f13059e12a862416cf050ebbcfcb11d5e24bc18086b35a8c9c406fea874db6c352782a9e4076485e6a34a4def02322922fd5c4cac020af13724814266220d60ef436635c05631586c27c88e29f288883bda5b226339d1021e48ce186c37619c0e1aa4a6a48a4050a408916f005c8df7178d2a4b23d488d6b40a81bd0d0ad5b0eb1d3364214b5e6d3d4ed44cf6b51f59ef10688a96ad7c31731633a0833d6ea87ad555d3beab3105accca02031771e523a3f40ac7d2256001142a3e9b0f73822c9a06ecec8587824cacf00a5931a0fcb3b137928d66ce8cd638424f7adf6eabc44e0d73a019ec70c71e50bf0ab26b52f720dcbf2ca023345d76b9b626e4d57c0f79c7f4f5003d904c1014c026a36e87ca15e0f28d41bf817fc596b696f97b5f531317db9f70b0739257be0d003c553bdb51767bd39077b61f7ddcf442fae569dc5fabfbb5cafd7d8776830582c4692356afc7c1bf7464929f5dec7c7c7fbf4d0c707a883f5e3ae3febd5e2db15fa9e73d659d356529b69f3f84ba6e58669937b9fd3b3da6814a5536d5dcc944e17f16ad5c5ebe9b9e99366a2e7159f46719e8d4addf011ae3887b9e55db011465ac23a2f3cb4f1cdc4bb78e9851a4a9f48fae7ab3c1583874c4c4c5e5674ee7965bf457b42d5f51a77603e4692356cf81b3c3d4ba7ef0ce3a4d67f781936f9b616fdd578e32d7abef755eab1824ae9f37cc2b6a8df141554529baa5aeb2df1edf451e12aaf57f90eb7be5ff297fca503d0caf16bf3fbb13b97d3e90000eb9cc669dc000168a8f33ccff33c7708c0732ee3320e68d4529a4a8ba1f76d1b8d7d76376fef5b3d6dfac891ff49b22c673dc4bc6c62287cfe19492b837a3e7cf288f974e8e8bd7f5938d4291fea75ebaf4de0faef8c252ca753daf198badc58d8097e828bc0204d6362b628bf0679e51ab99cb9b87eba815b2ed997b15e4334b0c1739c2f71a51dc44a614f514d1591e9743b2339eec5dd9c1104aeeddeaecd00032c95a5b2540604f0fb1d30b3f6b4502f238e94d329558cbd60a76c73a5d5d99de5f966272d68eb270da5a384706efb58650be3240bc44dbb7d9b16c48d8416a8d57a505151d91a03ad213fb47ddbd7b39776a17ab9070555a55afad45056ff5a4edba74ffde409d8bedaabbd9a80efa152bc3d66fb1c70e18f312e4876d5cda3523c902725f5f381786449e459b2ffea0b886772905ac9b2eac657abd51a526fbbaab43160c417c9bd1799408bc8137d1665e236d2d8bcf065ee06789a4ae905743c9e1f5d032fcaa2fa81077868e25df94b46521b8d95b1bd7d3124369cc3466c7e4a402990aae7e9f3225fcebbb5e61d8206c09e10e87b80460b8a600216cbc43713e312c8efb8e0d571cc4a1c7b55613f42594b36a30109ba32210576c60230785df075b864b31ecfc36bbd0396073e89d72d22491c68103278dd9511316889ef4384040112ea5832e3026c9d4dd9127ccb25387c96d82540788f49bd776f60cb15abf55de34b23b140835aafdfe5eee0f698731e86dd8bdeb7feb6acdf72bd5c7d1cf379debcbd905dba08b1abd1976eec7657743cabf65e8b33d520a8356844ebbd15f421c5b2a8bd4f2e8e013bc937ad372f0ab7d1af3f9a2cadf67b8c6523bd16044bcd831347b820c038d90be40810d013386b6db7ce16efad6d3996b68de68c7749d282ca0c140608d78dc65a0b452e33be56e3bc2dbd77632632be3a637ca3c8389739575a71cd8fb9f6a367f7cd576bdd43590e256c73ce7e57cce3e3c91797191fe1a607dfabf78c9fdd68d1e2268b335d0c214657e26a6b8306082e62c082e4228d90abbb67f8fc430a9ffdbd1e869cf30b1d862b96462a3ecff8efbda2e55ce21943521e6bc15fb9f0720f0f9baa23da6cf141d26e0d6b9234b866cd1112b4531aadc9c5277d6292312826cd8e06642467db933fbe8a1d24444469225840d3c0033a23385a1868b42021a233534d04085e5cbb9bd25a650cac50bb6842bf1e736aebf1e2f7ea7bf63a9a7e13968f080224b9ddef54832301c762b17caf9e7bafc58f0967ade7ad7f431f86bfb26c72d5d02b6172b5cf22973da127938b0909252cedc6574d93e44127a20ede67898961e917d53c4869165bbfc7b5df65b0f05223571aad5d9eeebc636b2d721ddf51a516a2f40e675845ad3c13b23d5486603b660b2015493fa9a19d255343300c5ee0c286071b8cb6ce2f24571aaa56d2f9f3526375d0279abc9579e99c447477aa3b43b7e87282a2ac2ad93faa335aaab826a8a71dd379ebb5281a1ffd51e2eb803faadbf5f0ebd168f942fa3f94eab2af3cbf23dd11940e2d7a51763c02ae782a7d9d55c1a3f5da6aeda5b7525a29975c628cadce607c5714c7e1b7c454334f70385ee034e93074c66498e0525462bae4373b314288526290626fa0c41879299d199e3752fa211434668a60748aae9b39e09c0ffa5fc7b525ca6334baadddf65a2fbdf7de8c3109eaec33b54d4229ce4ca175362b4b1b9a24502d0292af1876bf4b8cc1dfaed9c8a9064acf64011254c338e9109e63f4d4aa941e27a4b53c9fd855b4b5feb33a81a2f76e424c98272efd221423155d0850ab23c632c0f9c2e784e509ce181e1cb139c2cd13484a14d950441b172783d3f1ca9c64ea9439a9a8b167b51a3186082a5360c185b102ceb1a18929be2a71b888a1ad0061ad1e03a5cc18a8a04cc419222d8b6a114ccb4c39cbf85ffb4854f1f766957c3ebebfbe614aa2ee71361e091ac9f19ea7131c5f4c65791184881460edd06322425987b00832f3039ca2de929e99fdfc506badf606283b2fb029aa28d32f8403905995f173d4a70898a27f38e31386856624237bb00a6b2f0d7de83e4078b0870b4bfd52c6892396aee4ac3d106618a1b168256b0dca4a2cfbd80957e544c38dee8bf3cde111b5f24f329e9431a5c59931bd738c25305dedd07db0b8cebdb304d0f6a10694217a606c7f0506fde16f329b9adf5747b1c8ecbaafefd2e4fbad2cf552ed472aaea622def9962a4c672a54da6c584f4db7099d12d30905eeea3a144dee2b89cda3cde701a2f4d2b236850a5a94105fcd4f1a972a0cb8b7c16832fe29fc7538f896c675a2a1b470610f2e21e8fe02463403f234b5c46059664a56b32c5f3934cd1045c1d881af196c5e76bec84d419ab2f391336587b470cb2ba7062ad87401dca28c3963eca1165cd83c0cdd961c38724ad0854a339032460a9539954493a8e7d451ff95667b59a0d962f15a4b7bc825c61ee3be39dd9c6f4e77df7c6f6d7158f28df7c617776cde5df116ac21bc03e55289d61ed8128822b1c0961a902506b1d5b8ec1e5b8c7779af96e1ece34cdd5fef64b52f8c51ffd717c08a2fc5b8962fe4da2dbe4054b5673ba5e04065679ca77b03c9bdb5c8cfc98908212e2227270beae672f49d6c352ba3340213041fb89b878cc15a9e7f66d8e25bf5ed50b2baaafd72535c99e0b978c202b4d71ba57482e1dc22fa90b2d82f61e0c0a5a7544687215547892bb6279d3b97f8a718191a53f6acc2e7179cc7410ae7806ae4285151aaaac2320638f594e3a2092d6644c103c5028e1702b8b9659ef0957e5659a1e15394c1e21add33ced1be54bd86bd3178adb5d6fe3a462e2ba594da8b370847f4a2deb0b6d2281b9a1da02cde61abe01d6730768265f886beb526b47452858d30ecbdd7522bfd8b1d971892f7d6999ab1bbbcd7fcac1aa5d6563bdad2841d4abec9397b1ef25a6badfd17d75bbfbffe93980e9873ce39676a7da6b4064ef956d8a8b5b621fa2db3a9b5bea5d6b6042fa8b9d6e01e53b397dfcbf9ed65ce5ae7acf3d55b8b593a06731218f3609b653e9bb796f71f7dc6e4ced47a4185a9f7d4525b67a0e4be1dac641618fb9af7b56d47d8377c7aec19f2ea8dc4175ec4676d91f35d4979e9b7e044b1f2ff9c375e88496094c02cd9375bf8a0b603bedf2779d15fbd39b718a1fda4af6b92be77008ad38f3f580d177f154698ef5293e6c7a6e04ffe9fa3440d347446dd524a6b59f42406273796d6b4ac6834cd150793a4a844ac1ecd4a00e807036600100c8544e3f13ccb71200221b4f80154a248c4190b8666c36034149142218a022988631806040c014601829031d0a1321b0006acd14074dea4da8ce19e4d04cf1bbee174b0f3673a5883060236fe52c2837932b4f3c9ac8180dd0e9ba7486f94e7ea9d4cc60d049b7b678bf19f92598b14df5ae4fb20a3b080325d53ae9ef864f517b44cc5d97ae610265108de9fcd4e85cf4a810261c2e67664ef1db09c8f1d61530c06afe0fd8c97f0143ecc9b8c9f5f69fb32a7a5b196e88e3cb9cd128c0c5667310f344e3cb401a254f8cc13a73c130e2a444c1f10a9906838ae198941bf0d7dba3d92f12c76008b34d3dd44f199d313a418d374eebd3a50c2bcd745a33a773fd97f1e9a6275ddd3ef266dc76940b3e4d6a76241ff792ca509f32af41e95c17b059416aec14a7753863799c7c8f72e5689b0ee52e99ff639213d4f585cc42778483bcaeaa18e1797ce7fc53f93b02a798867f23767d0dd232cfb01da52cca882ee222ca3baafcbfcc0b76c2af9c9e3e73f8475123ab9a81eceb7aa5bf1c7cd981bff5c17d4d2f10bf9c407dbfe78b044e5fff2518e9223bc4ca3131da7924522afe97648a85f094b71964fb27fa3efd7efa3d7f56761540feb870cee2a12fea7160fd642400cb57f93e187fb48f52a1a07d558ddc7d402b9659bab62a0a86dda7f8af359b4d33330d534c712f9e1e15350943b75b6431d59f5ca5ce90aaa7f165db62a66ca000fb7e9dd1016deba314862ef86686ca9500647341e6f8afcdb95ec23159c44d4bfb5e0e6e643bbd6b4da32ba2ac32478982020cb92abde53e91dcaa2d64d003121bf86c0ea17206d3d89ca9a4c795ce1f262415da5a4651db9cd4b96f8f3ea1c6c1a205d502b4ed7639ae222777da7ca62964e8061a507d34bd845fe706f7cb12a49c4273ce7fe430717f38498a93c5abd2c7948fa92081aba543902639589157a908436b8dcd44f79c43b06950d89cb155ea02abae0aae1e01a8eeb675dd35458445938899611cc3ef5fdaaf401d71c0dfbaa1a378ee8e38f3e7bae9868942f2a2903507252dad31da7b85aedef966a4ab1e3956cd05e0848c8bd7d2b083c3b84ecc741905ed63726ad4a842649444c477b55fea7bf18aebc87f63b122cf3a6729564b4533f8b22855e2bda44f4a241bb4947c284ca96cf5a0d8af9c6082c548f2e492e68173401ecb82e2762501b4dbde39c4f3a4ba0a5c12924b507d6bf3fca9b5884cda7cfe23960c6b8b34972b1822ec5d62db428da0eb2ce9639a921506e0e8ecc94ab9903d49fe16154ae8cec0df472c815cd6afb7ef72312f498b100754efb66599b8b6cd81d53aab4c63cf14608974a28ca0b44d3a81140bd6b5ac8a64904a8bedafdbff2ac31e9464705a9bad525c45fa3a3c6dd9b1b66c3541985aefac09cc3ce31703be5feac663d9d6aa1cdd24dd79bbf3daa3ae370232f7f514d94abcbb7619a98907407433c9d5ab069f16fb013dffa2e8bbd2c7f3acc9250d7c595b6013a06fb69cf1c5f524a29c8a1fb712b895871cae02f6f0489b0ed86d4ceeb4233b9a62c2b753399c091763ef025abd6687aa736563d1fd697c5bb5a604e2622a18e21429532e9808087ad5ef45452340d4fd26abe3f8bfd95c6312519e7df2091bdba4be3d0f754725639e87ab2385bd2b5ea348fe9f23044e0b0fa4635ee459d72ae1f84b279aa5e1e4a8b73199940b46c586362e76322d1c0fbab87e0835aec4332b580104137910c9f33212cdee576645b70f3325f29b5213b4643d3f340f473d3b9f3288315c3a7595a7bbaeb6920352f1ae8d33d1893e07214f36fd6d2a63cf1edccd2406a3895dcd122cba43b20269fa80e77565adeeb5ab37466353d24ea363f041f01f92102418e0769a17b269764b74412de440da03a95e93cc4a9aaedd5bafae9b3869782be7eade14a24763ebf7eb92a335a5b60e4319aca69317e619c1a95c59b9c6e67f58e3ca4e808568b04f1dba9d7ad65d5af96f590efb7427a8e5a3c7cf902be5a673b592fd645dd8618f12fe189345fb5b1d167ec1f601d16e11de17865f681c1cb5b59de8f6403e24d30e0f535118e042dea01160689cc64b9e757dae4620a946c16e44fa465ac4c0250500c0d3a4938b38d625d9830411dbe11cac758d9956bff1ca9b07b6845852389cb45c35ed345f8bc3bbba68b7b3c3eb9a68be75f9f6b6bbaa087a5819f07607e6c1e183789dcc25526a482954fabefd198903268a38099d62c7d91faaf18d4bc851220cdb05c65e578179248661ac5c8cb327227bf5ff2a39eddad2d3bbb6c8e702b841717697f85be94ecc74f3a0bae77714d2309592f6384629f72ed29f37000305c37a0760c0f2bb4691f35adfb12971b4739bcbf2a6c5f7e39d615307159974174ced02e0ce96e53a885cc1fb6ddd9c811aa80991a822f298d62f4af0e2388ff503c4e788be32be8bf0831681c2bc297a2e16f78cf972f47ec3961bc74eabcf1255ca5803840d38ef8298b42fe411518380f3e2792fb7a3dbb1747e744ec2e59f1e9c4e7d668499e825d283d7ffdc0b5c55399a6bc81c807bd2657c8b2fd06d4858add80f0c254fc4e1533768d09c2f40da9b799892ac538293739933f10ac0e8807a9c00434a82a69a04a335c6db3436cc2fe5f5f2d179cfd3e7c72df4bb4fdd58f924635b2d93bf8409ce996b0cc0999d0afec7e4c721c214277cb1745b2bae8aa6f9f5a397a58fe1feacb30ec45887a125339f00a5ebbbbccb115af89454059b032861aa153efa891806035e0f19455ebf8e69043be79be70009a9ca4a085b6f440937a94d357b4047a518b25f98be6724af3b42e864873b083f883784ccf9524fdd1335f5f69464f0543dcd82807bf131448164673fa58c617c2063c266be44cc13bab65dee01f80b7f2686646b7bb2eef67ef7677a27ec49a07499656f3ba5787aa94edb702a6c3a291e6083d65e65c34638dc7902cf7cf2d471843c75b2474ed656d3111641c837ba329b4a6f14a9f9d3c43b88faecf8b26ad9577341c97f09b6a11319f9a2432ee41dc5234f862cc8001b69eaa5d24ad285bbe60a0459bd53a83aa4688afebf66ad26997958c71d6da45d48da9bc51b2e3c85697c3566cede26ef28142a449df28340cdfde26415329c6e0e50ecf22ec0297f17d7c00791dade4b4955c3c6c07ba7670672b4598fe4f6c76237ae02f4e6a2d5d4cbec745e7f62c387d89bc119b5f1e0c0ccd5fa4ddcd736c9758cc28fc96098e6ebbc29d569618c9ae47e674f98a6fc4fdfd1ac269bd27a897ef840930e1583e2fad68877f7d4a0a0c69b33f392a2630fa0078afb2a0a15a2e97b9d441aee02d1790d536fc716e72a1e85d56c629375c5a85110e745769d8ea07135c43d25b52afd464b09975e9da2c2a4f1009a133c490ce80b3d3a6ae391dfb20bd9a274c050be923e14e78eb9c5b7d9973d831603334e41ca7f2108fe7a71a84526740c97596c3c9144a6c41d5fd88796704599440a5dba455ff1c3e023b6ac84d0f744a36fc03a90a945645afe19298ef3d0a9865e08a3d450ca402778405e5030d9daa8f5e27a712bca9ac1c584414a5cdba113539fa5e1c1eb5a4847fc001f326baf5ab9749ed6c479153ee326ffa5ab600de99a9eba269c480326f8dbb59a6458f8b2106ab013eeb5f0f6d4ab4e65c9023adf09513a96c09be39e319b38b4d2da82df496f531a8a36876328baad145744bedc04413eddf679f0f1f6955e53e31c6977bc179624eede18840d2f76f0b2e67a9b17cee0f80c7c45fc287e9a74d88ea25f8cea14d3d812f11dd1f368f078ddcc032f4c0952217d3179a8101cc194a4cad10f0ab53a232f100a3c397bb09effaad85d1553970f34313ecf3c6756dc0a3c0f07b3b599ea3c2148d8a5d7e06235ab21eeacde3cb00de001761351960428c453e656a1cb810c71bf33a475e78be78b56a608fb5fa3be0553dc0905d0bfe3ab78b88c6802471416df8c2f2ea093f22df83e5557c23630535232f825457350f3f30cab4596a8a9c54ffd5a843c1886c10fe412a791f475b8fb3d344ff2d6f142458cc1fd65677651a2b4ad6b07c34095f762cfb6da17b4650f7b0e8b09e7fa04e657058d910ad1dce39c5c00e9d93e07c5ea134f4101974d574e6841e359a880f3d1e91bce6d6ba51815b71cd352d5e91eb05fa550aff74250a81c34aa883fd299728ed3e57186027dd1bbb3512a0a4b1e42e33835c5cd7e06e93922c0ea2d0b3074987c7db6f39ea3dc3ef72fd18633d4871cfaa85b94ce62c463919c6285ac5f105c61efc9df0d6993d195e38f2486af6d1e3398c1ed3d593d824bd66f97f35d3acb877e9bfe10a303cdaf24ffc42b15f1d8d596bdc12d84b7541211120bdd8642bc363fc3a700ecadd6de29b48339062cf11e0b10b1783b66df1a3b934951f4da6062faeb570d8e02d8ae2dbf70b2e1d7855575c15025fe0f852bfcfada48a11da5822023c4039adddecc0d58cc7d1414d31011040010d9acef5e62ebd9285cd257123297f7bc50a5f8d64c13514ba0a1746cff9a26e8941cc054d3e61b450b9a4817175b5159db74e9cc765ff388b039d2626294c2ae83cc8092806b1318ce795afa9bc6ef7ca9c38ce11b3400a403d8e66999028c7d97fc16714f89310deefe80c26a851bb83c9d4ad6c7401b9a0e9c7e52fcba2e3257c11ba6ffde1201f365f6c2fc4289df9f2b315a35d4a7dea3aeee75454751d67ef9a37c0db7d31d8c30dd46e2eea0a0596f2e4164f8a80d4053428047c96495dec7af83c91b46ebc0457c1655078a9d53042fa2165db2fa4f345ba4ebd470e0cd383b83b42233db304fb5c6650f65510d0696a4f47250a295b24cba21dd371845d2213f1dc5fcf29019bb885cd25423d62a813cb09336079474271ac44fdaaa5313f96655a17ab87c42509b6d4bfc038c83e0edad50517569796dad9d519f13481233e31ba132ed23f82a05dcb59d284cd640ebc7462bc79b4233729f2b4f726eeadad3f3f3ba3e034cb6617e8e4af8b2e32e2b523b0abcf07db133a2c72064ada1ef7ed8d44eb86d8f8d0aeae55657780ad62c17389efaa374453d3d1502a10805b92b0dfd6f7a8d101f27267a59eccce0dc14f0ab7ab4376bae120c94278bf1db7a6889d906cfa2afcfca50badf30795e348b9ad22bc1bea94733d84b3ad6f89f4ffe09d18d1d4b0480f1c20fec7b997e9b1293c8ab3ca4f4eedeccba0fa41c0f787d831e01c2d3788113100170a2a1bb6899a7a404b088cdba9e0c3f70be1c30650417e281a6f0ff9060add9c30a07de71779b4de7f0f457ad0e057d5df05ca9c137558e07d5aa464f018343c4857338de1b1c35ae9d62d57ec20166a05fdb1bbdde429391ae7f87652643641fa5f17bb21fb2123d7bfeabe3645635799997f1481bb18bad62fd947b9506a7c05a7862cf3c8a1e58666ac012bf3c7689a74bace5364548e1fb385c181592985e45fe12192654e2de3c20ff28e851858912fb88d1e2f30d2cb22382345dea98e121c5b11ef5d45039035450cc3f269ad1659c15fadb0912b40e5151a7d7f247136fc7ab405506d3e320b26a8ad2d03e177043a5e30d08985cd07c3c62c44e25e768d98fca8acaf840b40c7b1af22adda4157bc2a6193a140a78fa0f0d1056ed5d1a4819b16ea57775cc0a3623e7e3048876345423c238393b13448e65e757eb999b7c525b7a696bb3f014d61c44626bc15e9f56c0bc7cb1182383e1ca65739d447f54a8dd4aa22fd9e29f04c764b8a85590908a14b284313d1cd0f1130d6932d968ce32120491cf64dfe649aaa143fd22c452eda130179499e563feb377b1ee9b3f5fd4d8b03720cf2ddadeca5b08e061022581aa8e416818341d5ff73d109975607727a6b03f05909247a192ea5bcd92a996d72a8c76ce2a9cc2a1684682063c313ed497e977f4b4ed1fe5d45880b31e599c8ad6489f8f9edf04cf615d6bf1a54074b5876404a0d0c68524aaba1f6be0b0d1f98e83bfa19e648bbedac606d3254153ccf6df3d43a3205ca2eeae05ca918e36ba983c1b36752cff820f338b2bfa60c9b041a1fbf3b1cb67419161648be2ca102e5335300c5333bf72cd9e664447af52087bf59cbd525d9533a4da4efb9cf3397a60cf3d732e3e62129eec5a4ec78d6732cc023fbaa5e635831054f0747b4aa116c62d5947f2ee742a65d2398899cf1076303f3af3871e63c4313d5db876f381fd781bc8e859c6bad3c00299a0a7608b7a10c2160c0c103eaf567f1f3d747468b940ecbe6950bd160573a1f8b3ef268f6524e312e01e6fb62006a3263b605b3ca975f219d02f870226bed20960449ee413e9cf3875b0a62403b122d777b072574def89d8d14d0a58b449dbfe4ea1c19ddc4f541c18ecf3f848c4ae7a8906108efe81da774b7baa12cd52794f876a0d16f0b8f761ee2fd8cb52cc568aeff22d0c07e169c17af7f1c7201b24b1c9a837bb64da3fae8299f5eb13d04889dba0f6d08bce6c17af4fd54c321e21fcc66e8437f1a4a88365e731eec6fd6183a461b09aea248eb1bb343c656d59f19eca609d707b1d1ba7b4dd6223666bda3039efcec1818b7354e7e19e9a1ee29f2aaf86fa6888d5de74117d9ce65e1fcee699eea4c8a74a919cdbac8048a052f656e3a501c1321f34fd6f0c3a757cc07b7261d1df44f517451a3fac69fd24a00fc345f4fae8c9a71b45b00e22c7b6836c428cbc9947bd031704282abb201aa9f7c76ecb925a75aecfafec0af42fce6ebc97bd94f017dbd82828f1e7767b65bd06d058c68d63ed3ce0ef4240e5f9c25913808dcb876c4811f27068c3820de5020e714c0b5128dd83c950ccaf908dcd834f0a3be43d981c8cb0980748265b4494e2dc62901032c19a27029d725d75f51daa78c145d054e3b6e9f6a8d8fc170adc7786029bfba2a63255813229280dd6d538c02806e835a0bb36deac6c801aa51e0d49246f1adf938b14db12eb2982abaa5d45e846cfa2e26a30e3ae09e2517c6e21290a47a27de880c553d75b8b80346918ad484a8e2690037edd3bfc244e557d97bda17a063143f5832968819034410caa3666db0429c6c9ce6d7a0f74b9c7a38d6f248ac6852bce009e57cd21052533c148bfa3b976c37c1a8df02014589a96d1abafd3e6efbad41f819f899de0e617b46e9ad317bb6f2b3cd4eb86a682f70993f24d5f662954d3575df0778b1aa53e9a59b0221ba58ed48982081af511063db8b55c20fd2c7c1e7320c2f5609cee80739fcd986bd58adaac82f56399a12f75fbf65f1569f9839877ddf9735b36d69fabe44ed7ffa671672b956a1b8bf1214b5db7eccef53b5ed8a76bb9c71e86ba234fa089369f3a53715a4c87775d7d0b9c4ddd56c64056ed9db9565eea9e69d3a22bbeb3f7dd3508806cf811daa80b4132a51f5245c365dedb6914a008134337368829ebcfe272ee1f46109441750766bf87d82ba1a1f4220c4be44c520ca79077f8b54fc98a4cd847eaf6169b0b076a7652dcc0b281de9e2f60d9d61671a07dd27c52d6946ad690adeecddda684e106b687b90535056f68803af1ca9d37c6de54ca58f5bd983135d7bd5a4e8a514c60cbcbf119e9c6122369d4297f306e0d3d94a6224d2a9e3314c2f72226f09870fc330298419edccff230327f2ba1eab12d4829159b1f606c24a5ec5d8fc5e71cfa18431cd02af318500350eb0cf14cb846276c49276ef4f236b7185d6b491dfb2d5a1b5926e37ee778bbb07bc3d5d0ab4e322a0d3682ce9c0aeb9d93c2956bc5ad5944f358dc0bc4cea4d754415f2d31eccd7790b67d51faa50ed50a0a44faa6062259281349c1d516a405ea1089d533c2a7f24b3217b927fea028cfec3f0d850ad246f5a4b108dc74d52f5c813eb56acc3d46d68dd2034755fb664778d3f2c8e237d23dbbdc7d7c5e36105c7846ab1c04b953448fa7fcb27201ce66352f37b1a091ae5f641f5e1150446db07782afb4f535c69699d107ce7cfb05ab3e7f0ddd10c564d64c237bb1b2a645b63d2bb85e72cc71821c2292067eb55e2daea9464dec255e0ab588fa8ed36bd6a769286de429f9cc30725ab597c90c5410d1a54fa7227c3569e992e2d619025f9e7e35c83e6b60240031491c63baa4566ce5ad66e8886acb3c7ed3aa9342fc72cca526656d2ec235c83bb66c5967d3d55fc025abafe4f5cbe68d474aad1b0617b40b776863618024e88b88b58300f149350c0f0975919de2bb22d72a651639fb12b5a1677d23dad2c196ac35dad6594010af9c0b3512ca1a03fab35fa8daf9d6aae5539eb483b89432c107fa994b0b918b072cb67d342389a17985dda596504ad5076d9a620f597636c7240ba15e5d7b035a9899c1b5bf31e0ba217e61d3fa8e92b38216726485c85396cc4bf5d7e03cd5dc4f9e1e3967df140661329cd6feeaad49457233a256709534f189949ba88f2ab19420e9bc02dd1f9eef837f9d484a5325bdd84dc8d4f214e93ebc3ebb890b2ca2a310bbb4a4d7a309a3e66badb177d1536d015336a1d80ae2c17652c5f37207959de7d230408dbaa72cb0ec39036485ad7c59137c8b1924abb823b3974486379f08fbce76cb7989afdc01c367fde9abfca3de44406f1a9a2ebbdc3b8c28ce64d7dfb608e8548e3db825d5b334efc6ec5418962407102571fa6e5ab68f2c30605c0128d62226c33273d80cd666aca4de77d5c62d431c904a07f4ba8c39f4e8c0a1c37d7c25e0034b13c4dc7b202f3fb87520c7bcab980c515049881183c3f07a5440c81ab6157079e03af2e597eaa4a2bec97737a8be1f48cc9c968a54a351d1554c28f5766a91c83a923ea0ea7cad5ab09f9cce563d430d72f67f1e43ff14090cf6e5997f08f0779aa43079a969fe5cbef6e29045d11bd5f7e20b023e9bca30a107fadf297bc1790e54acebb8893db09a980ddeea0cceffc1e35fb1e91f2fff06b1a3e79c65da0755ee0e644a28aa20417705308d7e19d48973c6951e2c68e168d873857223ec383ba23ccfced26f06858466102a62b1f0173707481245f625198e7f32bd19cc7b0ec7bead7f78fc42c8715ddf135d2d6cd875cdb9eef9e182805eae48427ddc4ec414f0c6e0bc6e08fb94ddb5c8810b1a9a00290dc83064584d02b5b0f475e6640d4c6644a267451c7b8cc37d51b8b8287d773f91b16c7707d36c4dea2c3d26fd6d8804dc07a8f2a94cc784419f892e15240b0f2971ef520ab544d49da57399dd3f43d900208691a30c6067b5f7f6bcaf9bbbd69678e2e76c37a88548842b20c6404d1aceacf4ee2de6c7eca0718485ab51ac6a12acf83ecf38880904159fe3319bc7b852c2e271184cc088e49c5264180749df2e1f8925c1c07057197e5099b2211eb35c2c0210dddbee96f630d5852d3a237b934bcced8b34e7f9b5a15db81a049a49032597ddd98178ee0231118fc51025906b65e97ae54cd62ce6d4be007afbaa4a19793c81889d91b7fae3a29768d50982629228fe28b74e4471c0f751a0a0e25fdb229974f840ee27e1f5ce53cd5a192e478cd021f211d2d38231daf99351b9f92d22ce0a3cd57c747b0b8315a2929ef6988bc1b86be095d3f389835be41dc933d5c5c1b0a5f6a8643a8361580da1a73e98c754509370480cade9e21e270337445120ed70ba09f9e824557585886eae69ee07e25ccd25521b01212eff66ecdcc7ab706ca06f03bf48031d4aba80625bb6fe3170ac2dec1923cd94cc5e943bfa81a6eea735f4b0586032ee1f6c0b9ee0078709de2d48a83a1e0ca28c53bcc47f7400ada4f978df9700ff4aab420b51c9a628356a260bb5c9c0ca01bfb5e9e346df38458410ae7a88fecbad5b51e9811f76472297941fbae46a857e2173a19654d8167223d938a7ede17ba5e0c528686fff2b6b9bac00dad7ef06491fdb3fd66b98f8f53a73bccf9b86dc831a59ea66b3ded868957bcf8c408a1161a32eb813c04ec742495bcf35d03bc61663680279e1019a48f0c0cb3ce9bb5567c27e665e946b6a058d65b1bdec3dd8d9dbc43a3d460f6773fa87886b09f623094f469c1407463d66130beecfa99de692f88c5abaa34440afa0a79e15af4f65503ea40a916c8a27aa232bc2408d9dd1c5673d5b2d5d09b1db42d0503f30eeff91f54c2fd581b1580ee46b18397a6b50ff26e6782435ecbdc856aeb86dde014c85fea363fc8eae1e5a83f74603345976167a21f409e95edc5a7408f2a45e405e0c299c7cf0cefbaad1cca1f9c23a5ea1d963bebac100b9ed7b1140ab7407cdcbccce7bab36d045a7e0a344fc2a1f3377195bb2566ac5e01599172cd68b8c155e3a125f119032528d85ad2cbd064c3ed68d2c3042e2a7801e092d3193d64c65ed2a010a321a64ac18ac8a3f481f1a8254cf008fea82b299dc7db992ecc3e560de3d6c23a402e1243faacb5cdbaaf7d9a404a31d1bdbea29882394a620c520b3712e72c81f739ed15ba0fb8a089e2588f02107e97b57885bbb22befac04e830a87587382dd0904a93147cf3b824020ad45c065ad1e953eac4df85673657d89b27146920a90e21c6f9e67944929a385aec609b7fe9c8cb344c8a7f52dd83283707c9a4b3902e3e6c24e29d52009f0a68db159c4cd8417b65faa61e4638fe3207f7ab651f198996e09bceb89cccd5e9c4d592052e3dff192594d951ef8b2707e82a17ce4801cf73bfef476386560605a86cf2067510da0325f57bca08b8f8599951cd1e68e1330b2027523b99088b40476a9f8cba43ef8176ec5bae696931be6e452aff6a22059debc7d670e8c26b68112a4243745ede3e86c21b373850348295bf966b48816ef2cd88a871178e41de6b41a42d050287c55470e211ee47b6d82f04170a3778013fdcea15dc984573ed462735d2518d0b2248e7ba07bc3331165744812d4a3a9fe5e621856f049a3c84b8c434d998ef62731477c7a7ba1a8fc2112a5a68a2bb926a4932c88eb42ff711cf615303ca729ed56d7ca5d87fa9dbddfe8d45256f3012e9b643f579406cdcb5686a67c1887230a724c099f5aa61bf2c653a5427a69628f879399301b5156ae5f44a27c048865f12c62101947ef56c6b4ba0d5b2bed3e8fb68edbf74ce0f444025463fedc44aa02daeae3f1e4976d65d764112a1c4a5a085304b445eb758d986687bc0002d0bfa247e7840d2d328e31c069c61a99cdd7980bf2e12d6bd794fa321a350c778c5744b40c4d416aa8904dba5e4cd684ba6bd2897728aa3fd54893b5a7429484b9d705cd0e8966cc105329da58f12bc1e3dbd92b90cdcd080392d27066a30fead3a61622b2d5ba87183342018f1c3221d68ff0ccba0a0280cb772a22e327d2a27916053708f10e2d2fb19893c9bcb44f08eabe87b437b943de9de418f928928a1681afac39f6be005a29784fdb49c4d623fc2935ac6d0cae426c0637a576346b2eb593a8d0461478e69e6135140d7305404a6aab1602dd4a232d531e62e2182033507b238e81b4ed6548a175a4990b533d2d08f00e03a20f22911ba7866e34d7dd66cdc2c4574362693cc08c436a300051052cde6ce0e6c80a474b550f81e3ba2d1520c0d014825952668c83efa8db19c220881e0c373e1038188cdf19ba21c599769bafdb34cc2d202c0126e96714c729ea29fb265582ce0b12774c2d323f1ed680c98eb9ba1cd20a12c83c8ca073f4a331d9849e94178186f34abab7b3d2b071d265dc07654add5041818ab0a68f23232cf08fc1613cde122fe204d2682e3df6249ecb3b76a9df69550b18db9bf1708d1471998e2388470e17129d32855d50b603d9b19655926e066522e073b8f880c8d27bb4f01b0ca8280e2c760ed8a60def13ca5c7aef6f5971e9ef2adf78c9428ce369dab8c0fa69e7f9e8d3e74ca040ce5e51354801bdee463855c1b45762eb8653fcc5326ca06ae434452fd3afdb586a289944b2926e92701a8121a570c5f5f8a9a985778a26e2920f7836d7f790debd11f1a62914bfc39e85bfc189ec1b7f611cabbe213c2b37b6d560396c30b76efb2f9a4018b0c8416e4ac50b3bfc15c3a9eee75add3b0ef55de980a5b940998b1db1c8a302a7e0db53b44fe2668d14f0d352dae5d738380c06ece1679c6ba085758ec4e67822d27effd2cfb88f10d0d4f3c90da7822f0c82ebca0c2434785da63734c85dd8b3f75fe9bb98577188d09ba2d6b15aaac811949aaf1c0ad18436c0e86ffc82687aeda508d4592a7396240a0d2376852a5e420af26b06334ef906c5e04f30cadd3b2f12db7fbc06722d8e01c3c99d812db0140d64c602661c183ee588787aa9fd5bb378d305556c854ffaefa5863e8e08d843811145909ebf2735dc7fd96f6df681f0390be61493e67323702bb2b65cd289ff95bea1cb3c51860af0d8f64a2a5cc5c4e1bc9a47b7a57094f5b6e09e9da5966ef8a0ecc05ef8ca97c51b5b59cd1772aa554b1804488e05024834ea8cf96d1b90fb30035880ea3ddc16455ac31f395b1199c4315137895e90950dcd69922dc5504f39561f09f13a0374a023f0317088eab1792cdea9889bf8028de0091e84bfd0bc662b8b55943892010a117c0084f98c8aaa6591439aaa4c68e1ad0e9528d6e0008e1e4df096cc281e416ed6409bab6f9febd8c1fd064b13cb63f5f7a429da3e2165d7f24fd26390866797cdf8f6a2f8b28f46ad101a33a0e642c8adfd2a1d930bdb069ca4a1cd46ffa96e475a3c0a7ca0baf873bbe9377fc6c2ba277fc37ae8ffc3de1b61ebeb4e3fdec0b0432c724b2f7c62881805040bf26f692c27768600ac7d285b45d4bf82f2dd896009414438a374f4b57e9bc5ce480d3b59b2c5a6492073bf8cc1bfc0153e76c424280a42c895024676e539a81ae3508f62a7eafdd39a04f64d8a1eb547657c16eaee75122dfab3af387ba4123af7ba7b3fca04b04a50afcdece07297fdeeb08e4e098726d3066a8a967206b46988730f1ca94870cb5d78424e08c285ded95086926c73984302e3c8d2fec8dc62d2a1132072495f96f0e0589dee209f6e532df43429bdd16de946906fc1ad47fbdc2a4a291345f1ab81107d06c30d67c1dbf4ee24ba74272ac3013549af7b2b8154893a5384ef3ca445e8272e040a9afea63355baeddafd74b0ae4c164c86f9af56267d7a4a6e521f87ede02af09c2754eee66a87a1d71215da8bd26d6eb9a7d8d4113a4aff24b161b3289afc4700c8c3a37cc0420eda08261856c0224348efb807193ee8aba9fd776b683cc93561fe392894609db17ae4b8f2e1223cea6ffbdd91f070985560231b98224508730cd88e6471b2fbcc44b41883a8283a98c4803bb44da2015b9bf9babbc12490d8d467d1e00be7ff0a41a7765923f25fddc14e7abfdce123c776eb95c3b1a22043aa5585f6b80161003557c24218c707588c38849f2b887e6941d348605a84a6362504b5578493c7e36dc2a2f40dbb8192051aba602a65bf0a6be52d99f3b8beef143287111d3d1a7a1be991041b211b8b21bacb336f218afd2da8c2500f6a185fa08240277f40bc1a5bac0d41d9e1f444394b557de2191ff5e0821a93bfce6be61b0eeed1dd24210bb3386ca49980b414b155a6d063fa816ac34cae3f683828005adb87ffd8c2b515de7e1252f98dbe7aee956b5f4a7628afd8f39f32006751ae963a4e975af5be18765249f9d5939877ed6cd4840987de8ea45ebafb745456d94958f71745a75bd1dc5f3a5bf62d860ef51ffe723b9d29ba7858d31ad52cfbc44cd4ac34552b5ec429ec956b5c773065ff6a3b7fb34c4bf85abb673254f922caa85d53a7db05aaaeeeb15f4845110dcc678c417286a0e3035f9ab2487097fc1c9cb489acea3c4c786220992505db165d485381122867e5142c5243060f1c0ba5ae0a5a3d1881421ff782264677ff3cf1206357a6127618970f5e2842052212930212c60d7c723da063e23191c6c5e47fd87e59ebd705b87ed6db87e0fba20998219d27cb6bfdd113f23b14a552ae2adbd8bb793da0a661907f8d8b2f9237ae5f568c8d4b1da212c65cc415557e9714fdce19b9c0fdc8781d7acf7a9e07d45444d5886f841712f6cbf90bd5c7403b99d7315d28c72a56347a53b32ba8460676f8c70e10f2f97928b0b4c263b5f63888d15ef9d3a8c8b7cae8f218a15ecdd35188fbcdc1e8da8b3df8932c4ac0dc0d1c180f110b2d62a7a43a0a6479117879eeeb93e0488fe2150ed48f81e9b461890ca23b3c8cbc4842bcd593c0e870fb41b450120fd227122afeae687e9ed61a907da2a1ce8895124b76573236c70b8db27caf8a4a3573f5739d925c0ba0863d9ea56057d11a7541af81fefacc459b9027d571734b049e32d2dd54e0c743da44fe305a06941f6dc8ca54b996b8f9bd2110183b167f90f02a6aaea643b9256032a4b369d33f4e8ca08d17389a3475d5e6f620e2831d6e72ffc6041f8ff0ae73b12da6cea4ef77ba58197c0dab4e129a5f344b5a1988914586c87ef30e8ea2d73bc8ebe487340203cf4de878401a551676838595e6be9e387e12e07e8d5f60abcf998e4164c4b83a10635b63bb67dd4191f93d74563974b0bb91daa61512b1be95eed173caa8894e082112585d869c9061ba58345985315331728012a34f70e26bd88c24c5ee5d985bc6ff1313287cdf0081112b2685143489d06018b9471558e5337e180ee0d52ac7825c53b925d3dbc62a85f090775b58c23f97fe7fb5716b5ea9e08374302f983fb3c1da20dcb93651260840a81f75710db1d274d03b75b37214da8238136ece650cf28759c1a2e5aa1c908d77db5f3f50c938c635b7479e28acd15b805b6feaa1771cbee8ea70aeb1c348d96b3c81d6074275f3de2c08eb80eb7b14c7d3eb4b509e144b659636fd40a5802351963c6c65e8261dd4bb3ba0988a573982f4346f261c38471650a1c8671608ef168137ca3c329ae37e381f96429a1af32e794dc0d5b3fc573aad0a9b315c19d7facdbcaf0b1eb18db54e98d506bb42cbf4a04a5526846df20eba069f33f9be84520099a480d8158f70aef8179f2974d9fdef157b439ec4976e786c2b60b1459a50da7fb5e1b99056f1766483990268746966d15334ee70d5d481259d992a9b34823e41491c7f66445fcc54ef0bf3bc05066aa049a2992f0ae0d5e9aa83ceb4cbd06c00a55d7a4883d913c8d7b20cb0c2b62b016df900d282e41ac6cc07485f905e9da0260a4c1ffbe24ad916dbe85f93485397c25ee147c51f0252a548e692f7d6e9be1ddee45a17041b2dcbf52eec253b7019ad9e6f2a651da2c69d6dc5c56814cd0a439b115699bf18b4364ae494ba2d77d026df63c4f78e6b75ea5a077e5260cfff324b2b9f947379ecaffd2eec775019696e068a457086081ba82725eccce0e70e9fd40851eef843766b0f054b00422952c83534972aedbc7098cf23a20b34c959d39e4ab51e3d378b62d1bc1cad109f056c09b64b10577146ade1ff27702bb7f8b5d6e33644677da59bd483faf20aec843aed502bfb8c626f12a8179db7895d87a8269572d9fa28cfa831279b556b62331254c1992ce5ef56ce8d880d8f5acfd7dcb01389008543deb21272c46d3d54c4472b368dc1c70d7cb548de15724727f85b5466da17aa0f6453a4b0399938f131a9c72002a46681039a0721d420055ad84212075e59e5945b031ac802b042cf0758e07a7f064781d5ebb75c103ff619e6862228a8d244942112b256b93a44d5a4b01ff00f200ec007cd02814fae5e0d2458f6b000101015229002d162095dad2e9d1d407486b7b692a309dbad57b5e1fae7f04a8020285635baaa4863a40a50e54070698a08155826af5662eea7eb93376045602027fbdad05566bf4cb3d29b85eed2bd608fb0be8a92b166b63b345d92bb6a679b206d96cfddb9631065a0303a399f640abadebae7f3ff935152601d81d6c0f0e0a75fe3365aff0e3bf6d11b6db70174f3db8f94548404008eca1bf8363598b2a412121a1e9e40a4533d531ac259c49f2069239151616161818149e350b0c0c0c0d0d0b0c0d0d36ef0d0e540706fb6270642445a55b80372412798721f63e2cb674ef8927f4d3ec07f23da83f5e412b2a27a72d825cafa0ca034a9f061e72ea0a3203fa201a1a2dc57fb031cac3a64f76d9cb7e41f6b2485af5ffa8b2e9e7e501bebdf9fdfdf1cdcde9e1e1e5d9d9e1b1b1d9f5f5d17907e1927c43ce39eeeeded4d4fd90581ffbbaf7b62f2ecc1487fddff9a2f7351bdd56948b45b02d26cfb25c1c4362cd7f9ee5ef37feffb3ee220795f1683416d605727114cd8232479ab6e99aa9be8f34f304a4b66d1b89fc759e8db4ede40dcd1133bd3df80d9944226f4ffb8593f76ddfca25a54f36ad6ea5d2562e9596ffa69994cba5bd6426319535d092c964369b4bfa86d96c369d4ecf6c9a90389f4ee70d33e4df804f28d4864691a2ffe90372b1089e65b938f6e759fe1affefbd7f5e73ce91bc4f7b34894472ce95f7927366933bf9d3e9bcb979141a85423997729e9535e502d3a95bef7d804aad0e0cf46e2520a81658ad1ccb79961b64b35a038303adf6fbdebf1ce3de8310b6db68020242af39efbd4ad139e70cbc81f3ce7bd581f36ef175e7f9e87cebbee01ffeddea69904b926bda444b3c512cc78d0b73fb0247bfc9adc3de8d0be2fc1957222f77e63d790fe9431c1a875656becb5cc4f751df104bae22154c371d31cbd63606ffb0ed95d1703886190b8d47bc639dc1ee7bf7807b7b7a7233680f235eb21cd4b76aa8f9cfb3cf968d0e054810526f4a13188a1b580a0e180af8638efee033ca6297a0a0ef07e16c2406b154cde21531886f0887c71c5dc01a92b9161379bb5c156577cb0b5373d476e78c6195199ea58e165ad7e9cf5def1da231aa84098585017d84fd8cab88e2f04bd1f1eb12feb2007d57e2beec25b7734d483e940858cd0885f2e2982b63d017ccf8abc4ea8b641c97a437b0442841160c9f317e72afc03d2ed76e056f6a61b6cce8c5194253bc9c17e67f6ba9f473532c52fea808e8e9783ce49adf2a829b49b58ff7f7320507a723eae1656d8d4345484c24f055c551ba261daea55a222224268e7e81093efaef661ddd9a4eab3f7ffc8c8d6d6c8c73ded4c4392ffaa2f73d85e7a80376ae3d93d908823118cb6120c8944643551df370616061180a8a828150481083300c86201c86f00c822008c2210c85780671a9da01896a635d4fc52b0da05f924445c81b4c8f0774d62e916074e6b2ce7f1b766829a9ad4112993c23d8e0d78887c268415188b4eca420525143182e141e28fb29fd2c97df6088aac7e21b42c21d19d593c1a14fe6929e875ff62657e7dd2cbf231b8f3095343825b2365421f70f9841459205bc6612d3bf1075917e9e49f2a36100a6d9c3b5bbfa79e24411ab2ad9da6329a809b22ca8b3275a3781d6d1bb712d26e7c815a24c7ffe75285308bc13ec50940cc7b907464e9a94d63172a737109b506885302414cf2023b5a702c97fba28ce4727c7880abdb217ece026626fd3af7a8875543b0fb6a499357ba5ac2ee7ac636b08ad95440948f3e34dfba7494c44d2f0b8ef010562fa48accdb7c4633305a41df8890318c134895ddd2e3506e09432a0cc7b689cb89ca1bdf97a1f47037ca0e2e963e8330b38393d2820d38c8489fe7ff9d3d06aa3f9b0a42b08a22329f120d6c0f605595a268b9ceac69b1cfdf54104c205c6e5d50daaff81e4ffdcca354bb3098534da499c3334028a3988dbff3bbbe739429427d702ce50977724e36a09f1067f82b748d8a9c49c6905b785e0eba6df7b9b03c48e24040fda790d7ab561fb142a457b06f24c7a11be59049ea8fe207a7ea428bb0f8f87d5e1efef25b3318e579cafd5d77c11d883008ec8bf33485f9b9e81b960c0bdd50707bd9b97e82f88552fc076e16f4607a797ec0139b6b8fee48d40a312747f4acbf94c1eca144e210e06cf48f54ff54144c30ffff378a621886ddf18b572c7ecff717de11f2a874930007af1ba4f3baf7403106985c40f338df954018471c177907c73ea5a9904d0620517a6331c096595c38aaa03a8beb9b0e9b0d0df82c9a716a09b55142a5890934ceb1250fa239881ab3abf30e995645c99c02201e65741be32a027e8ceb0c3d2640e28eb02e5fa855d5dae53739523ca9f244deb1f501a11feb9a863f0c1040a53cc8905284fb5408e0ae50b25afbfc5d14099023792cdd8e32e61b3be1d28a219d26791e82e041194c6243b5c253ee2b6649489bc829422c853119509da2a7de83d3cc9affaf90da7f1f0b2acf2134429c5dd46611471e3d30a024e8275c34458dd05fdc178b031c55d497338724110cedfd6555cf1b6e56c6e420ef882886f5d14830653b3679f4a2e974128cb4c11a4ff318db429aeb48dbae54087a92c39241ab4488b7f0da284d857b78e213a768326597a79d20bce0e168935af413a0e72a4e0aec042f0240a0f725f49c114245ef107e561dd5fb198639804ba6a058c442e4188e3027618b3bbc13d2451beb47c4cd3755482ea060ba1fc8f6f6b2a1c457a27e61ffaab438416b108ed5f46318a5013560f5b7ec4a256bbf1f6bfd68bdd088db6f66797d12b16eae5c2adf3ef6bb22c35762429308d1152202701e108d590509e6ecd15d68045a327a18751e5ff043898d6844c41712b91042e75fd84425262f22a4485982753aaf51ae398cf7eb4847af424728b7a7269c2c9215702cc814154d69ec10f3ada5f910f5215bd15f00d9a8b55535b1c7ae082ff911a8affd728d32b7145070e116348e13a842ea35d29c847af0ad75a0c28427296990fbffc3f042d4063a9f23e2c063826bc26ef66f7904ebcc15f83334ff1e59ae508c1df5caae06f6effcbf5a57d5edff585dd2bec02ef2f32792bfb54b40ed13f63797bc0f150053fd651bcf43d4bdcc99c6f1ff9e82d4ed1fb85b6e4cc20376d43dfa0bda2a1c7afa52be81b0901658f1e72e30ccb0536cdf427923d70f781f1fef66c08ea3556f6c1a35b2b64b53bd3a6387368211001ec406d51df33427c82cb7707ebce0209124676d89e8637d8f5279f9d291c4a756d92fbabc8d98992ec3bcdf9232cac7b2b343ac2c4e9558a68112ab2156d3777fe8c7206ef2f53c9241a938e64010ad184abf9032b6bafc4845e91f35bde128884b312ced022fbc12dccdaa3d31e45a91b0f74195aba6688f1f12366f3b93191f9c488e38a6030385f57f10dae99adc0e4ff6b2e670dc7091fcb2f6e92a1a5653e04072b6df273ea19126ca688207729b1d944567bb1133ec81ce6c788a1451fbd83c7aa208692145756636ec3791b1bafbdcef57b56e5e87e8839185af40015df06420c2d50bf7614e7f904d74b82565227996e46bfd6239f695f0f65b5d4c8ecb00e095c140cfcb1ba723d9dddeb6ed69d8b1aabf174911cf0e2ab537a8731582a41867bdecc8915807dfaf2c6bd3e594a9a817d26a889450aa171d231e1899231742fc37cd494cbfead6df39283c5ac59ba0497964a3ee0b847019d70af0eca44b4b54d8b14a4a8974d1bf050e2cc2d78f102911af0004922b5e0845224b7e08517c8d480172476446ac15156d8b53c32181a5069d92bf428d1051f46e5d73aaab573513a6b13a3add67f3a62e803a8247b1061d5b4065a4ca730f2020214a1d1f39bb800c5e01824778acc574738130032ff62cddc8c4a84108347a49570c3c1f860212c26b36abc5a273367c27f861054b099e9d45acbd0bc68863b2d72d024b34ea993192b54d47cd7b8c4c504d22b238ac972dc5211c7eef3d00c1a7a3e0c17086937ab012e7901c014d366d9c3005e0e1c2bd2a9925638054e1ccd4bf8db0049f29faf1939dba4bb936decc663acc6448df9051a7c077a812932c8cef37ddfc480a5c890cd48b3d3deb2e66d530660610c19a7925303c84a3c7126e81967a57181740dbc450f1859df4dc033ccd04cbf98820f4d96c7975181bcbda5df00f7528405f5bc7109bf1ee64efef3c94a0d223b43a21258bbeab08a91f1788151a3bb820796930f41d2cdd7412c5266c560de9dbb092aec437215dcb874966b16553471cefdbf1209c821f725e804f5d934632e53f06183e5bd01d64f6f8d3fcae0444151c8b8e575da9600cced1d66e936ecf7f3919911a77c67f9f1e19f89846a56fb687965064196a4c79e712110e30773daf1e61d10fb203bd13f5e0247138a0a4a004e7b64747edc12bfc94c3ecaf3708d6d7052b043a1c578088b7d41773bf13e1924034716464ecfb94356b13b2df98067a53008ea923412dfcdb00103fb71250dcaef62c60639f1a84a5996379de8a9e3ce72e72fed5fe3335f6a4f1b6b8af31613af666aa83674d8d7f7a922e3938d576b38b36f91f50afb408c6062037b73f49306b215146120699f122f336669a171bbdd86ec3d440b6b629b73118ec22bbe0e2d42053ae8231f3ac0190a34abce4ae78eeb15f4eabfcc6afcfb85a220239cf12b377ec23c31b9f1cbe1554b55e4022e98a23d39506d8d48ce767bc4eb14fff8b4cc156db0b9cb88606a5fc237ccbdf2830e4191e37a245321440961ae95198d86032d52c3af5dff2c7af745f8f77524d5119dc83dffe0adae6085eef3cac7b193d4c554e46170ef502e6322bf83286ac4c0173fba273a42fc8a86854dba6513dedd00af12e56340dacd7dd74df4e80074492dc9e3dc27da8a7d5d87f1b2935f84f3081e8fd0b9ef630510896f9c7f75490b3fc7f8119d10a0fde3db1be6ac13179ca3400a47c30dcdb957648cc93cd4c25618ba45c921e28d6091df736344c5a9b492090dbf4e4e7d0cc32405d4f4003a9a442346509ed60169277352719ea8231ebf321c2142e7209d792f880f34eab99612bb0002000010015899d3026024c720182c699c87024482378e7116db480964881092924c29a524032a0207020802bc443b5c2ef704ab81d4bfa9f539c5a242abf96b1a538faacda6b66d879c48dcb9447fda3fc25b66fb767bbfd9bea9756e3a2785e7c6f486a4f22979d597af5f940eb13ebd1a6757322f0f34d2ce5801a3749539b1b18aba3e3ca9d49530653e1499f12726851b64734342c9a3b3a3035bb5d81a690e9299936403290abc8f6f14ac8dc4242119150d31e320a54f72472707c778e30ee31ee08808c05208e8a7870779848b2ff107583a4b62affca8a2c8a4a424d291f1ca886ada8d8c926c11919321004674cc65f32a1632b2080252d252febc6d3e3d4dac248f50dd4e76faac7c55c756ada038b3fcce4e5207d9d4ca391ab37060a43063f15dbb799b5c2e91c937fc4676be452a8b9f3203bd777545e08967d1d3a852d316e10b159e8c7e80f87619c20f87f19078c41671306c62bcb58e5b77fb1b1f243fc97b57f2ff9924769cff85cd5ab3aa193665d8160caeba0a3dbd4e14c9f57665e494580b9433ed3ffad8d651eeb7415de03899eb4f18efd51bf312325a8960f88be217d7ea1ac8c2df50a1195e6deb077ba9daf8b1fd9ce156f122815ac42c1f671d4271aa551ac34f46f4a2a75ddec7f18a505aa37dfb5e79cc4597bb29bb9139949b26d7b6329cc6d01fdddb1eefce1ca1fb9fb12ab6931a86dfa4936f2cc017c94edb5c4475377507fdd076accd8ba816060c6e8100e1a3e775ac4ab5af4fbe8f94bf08ee348a328327aaa66a257237794e19734c3b4e35b08cd46a4fee0ffd58503971b0a769359e626b782f9535bff3adffffdeff2190ccf35c505aab9773ce3e77effff7beb7feb7aef72df3cab859a314525112a424b6eacc3d4ef2e6776f6a6a368f8ee2988d3be2bb67f20e7d75e4d76b271919faf9669fe4409df57eb9053dd84ab24b0c78a4a6d994aff60d07b47376efbdf7edffff73cfec33fa9367567bedf4833ed30bf567ab75d6519c74726776b3f7de2761c89a68221387013c93436676f7754e211529414a4afe9d359b73d64aa8be5beeec79bb81fdb9ad1bb7a928ac57778543abbbb201f9dc473f6b7d986fbffe153a240e87d7f8256ccfe8705f1d2f71c8068ce7e1f638c50825954600a5c608953119fa9760f6edb9974f1ba9bab4a76019b302da749b75bf5dc7f1fff0e61d0d99e64b61216199976b7d1cb9e8a57d8bfd09abb84bd8c9b4c341aec12c9ce8b79715b8affae013ad4e304fd0aea5fe2426ee900a39c60b8efd9c5db6c8ce394b17b42b6eba2c5209e8095034998108f4e4cbd6163bd4d3a3f4e149eac4c99c9c6312e8883c1e632432de41b2c99e9ee4524f0b5809a4542adb2f978ce5f3e303c00acf9167b9b13e71c390200e9bff40b8bb5844578cbbebf2c44d4dcd669bec3932ddb81fffef81e1a664133ef26e6c7c97459ca2d168c4818d456391d9844489c0bddf6186f6eddb5df6a73199397cdd4d658cefd7dd63ff2ed47077032610cd0c2ca7c0d4ba7e563ab0ff367f5329bf53aa67328c84b32e9ae33aee0104f29699dcb4a9866c16fde8a8594b392a2758200ac517cbd2014a3d9d3a94f28081024b4c39767568eb9ff5ceca4d6bd1812ecbf6fe7ffc27fc3eecdb6f083a47ebeda12470ef75fbeb04cdb5af1f4c6c0c8172a647b7d6466ff06772a2b66e22712934070ffff74f8e55a23391bf23c939e7f788defb8857959432aa7b6aa99b0642edc1a519e408189d382ea79dc2aaeb18aa75da3a2f60f1f8ac60394139887ef541216f24b931dab0d0721220d73c8672ce39e79c73cd636ed55953e7faa439e7418b50d150bee6b6959b18369ebf8ec498528aeb4ca2853b5aea11bfc44b17b2df63da84a5b2e548dbec131e53674efb0f61c9708e8dfc43ea6aafca64277dea2d32ac6afcf2205b831b756758bb2549384f55913a4111183403438864cf09aab9c2c9d5ef615e62c8081a97d2e2d63e5bd8b5e604c58ab973ca71e66d361e53d7f1acabd8aef38b379ab55cd7989324669958cdf7decc349b6b1e2465efbd7507be3967d98c8688fd55f6ce7ac547c0db9ef5175c8b295360bc484ed484eb38d63a4b9174f93828ab39e1acb1b8434f0d0ece3907db7cc3bd39fcac908aa6484971484963c68811d3c54ed3de1e672de7bcd55a6fddc66dde7bc66463a0b546415eeb6bffbdf7fefbfa6f7df7bc7fff799438c7a54839df7cb77aeb282f8fd8997ffe3fce397fe6cf39fffdf7df7f8bf02c8fdbac9d3bb9919b19477ddbb9b3f7b66d5b1f32063f918f182ff8a28648d550bb13838b6af153ccbea240debcb4a861162544ca254dcd191d11b9a82cb4b4336a7654675ffa84187953f257a675551bc2c4c51784ea17646d089fb3b08b6ecd985f10337eaf6b79a9728b524725f5a0cdefc575aeaae52fc2d6d70ba9b024541f5e2f2d6a0797285f7258d650c134b85589ce6843039de2f3a4642f4038de8e23614ee29a5797fa2f43bf96c7504a7e6e691d9c47615c68734704ac83208176858f8668711ed19e2d12eff1cc5a30318171d8783e180ec305f65b866f79379ac0b1fd688790b56460782f776558bfb0b0ae0c344bd5abb9499f675d5ecc1d0e2b0f25ec0214e482a764dae22012f555c83c941777645584833e4798157e6d0eb95eb8f6979cb57c34fe16ae4f7637269546cbdd9a9f92b67860652efc993bb1a9ef16c64fd16bc5e88c44efc290e0b471ce6357fbd6fbb8f54cd6b75944d2853f72ea2736edf0ff9f908a65f7a182e8c5ed69d549b7ac4d35cd5606cb5f530dcd0d293488feaaca6b16bc92b6e39ae3a2586bc676eef0acb81c4d4bfcfcc94a289609ddd91ad7992f13a4a912b33aeda58e1aaab74a6e7a6165095b6a6c9a05fd0814fa157acbf156e223900ba8aa76023fa6ad12131f800efaaf43a2fbde148dcd32f81a660d07f049e091ad6c46ce013064e6fbf2a793b766c78016168f0c6a72e947584fee3b2354aef9e42a31a63f5332b01f32a580e81ed000386810812d4259d2d8419219cb35b21c3b98af901b8057c8c810d12bd456f40ab119692258c8be9a6a470358202941930228454509d879545803769596d71eabc44a89dda864cb5e0d2609612300a396000c128a8492244a62100381246ded03b4c246841b0f898acde3a338340c8742198e413006c22080010084031886a110a721636f00dc5f4e3d9075689ecf427c18797428428a513f1aa5d89488b80041dd941cf9f30f54239ea3492813e34617de8b052b5cfccfb9f98b41a5d5d3cc7ac68d6e81f3cddeaa308376c2bd0de4cb1ee061fd0303be63bc3127753070ccc21baa906be039bd5a0397620142a3876ecec3230633be5e6de7ac9ed7b46349b2d27b48e229690d73c4f0a4d3d4b3ededec487af7fc0e9da85ff5a402b0de76fcab1bb2726b829c3105dd90430cd6ee059a5f81590bf6cb116adb5dff9823646539198e29634a1f8bb1d29a61c3dd63abddfb884e8fee9ced57bb3737b259ccf1566d23847a38ec3642019c7c986ee4cdee1d1c326ff90b65642a4c99916976c9ed8e7c788a56690fbb868b19518537832a8ed548ec4027e4d51961882a531f4fff1a01e918b4143a839f8c3b021da12dc0c3f04382029ca0f810f06cf042595ca75ed3af32a91f92d00e274d8e59adad548f5ee9d42aa3e69514142d06e6ad5e58f25432280e029c498070bb85c7a6bc4c82bbfca00e59a19475d06fac8b1a36e3ff43118d11979c4d5930f2eef0e70d8860f7258705b78cf1a35c58159082e1e089121d48bbffa3785bf3b72c9cf51d23586c10d1a04dba33e51d0eb48e2c565cebd312ca3cac7f89451b1f3bbe35bebb999736c048c2e4b74ddbb2cace3a9f5a0ed450066f11917ea8432d472b59b041552a3f97361cb92d4a4534b95565aefd3123cb69f7938e06c3b89e93f7d61ed0953e7352e31170e1f6200e23d258495680c4cde591728d2a9ab5bf3720960e10153106aad32321888ee227a85671515ff9df89a41e30474f42f495fb5edb0dc29b287e37d632794778059f13e701caba75ed5f916911798fe8ecc73f3015ab0b13bb2ebeed88f088410c73adab2b0031df3024e05489735d21714e983d3ac7f7b72cc161e0891bd2d1c6c51e930407956e121bba28424510300dfccfe6ae34de3948c0de79e49580fd7d4380b3484cc36414651edd46b814e9edb662bb848c562573bde76f3775fb6f1797510ca8faaef15d44986f389b8c448d13da9250079c354ef7534f20565836878b9769511c875f54f9d4607c3f02909171f570ceff727bb955f4e59e1983328aa969da89c0de5906bea28702960f6715c4f6e8e12aa9bc0d982b771a09cb4ebb82c3702114d0b212d1804fb1ae2ebd7a65566ec9644f85f145f28aa8982de6c7b222bf16b9a672e0527716b2cbea49bad0b73e33289a90bf4c72ca2c5e0c1dc8da521fcb637185df66750122e9569c384c88145a344f56d09d2dd4c1b10ecb7c82922e216abcf435712e4d029302407479926e832f480dc9df4f22296e7c05554920be3efff5a4e23c72e2b0e45128c9686388cb02e9957de8631c8ad8b0e283fc4f3a78a8e6989c9160d7b8f52f987e7f99cab6c8cc53f8242f450c31bfae023f79e37e42af4ac3397c8ece3c031dbcab7733f33a06014d05d61a5221a13e473d3ac39e287d629dea05d3c2e9ce3d7bd0b751b867beb77a26c9cc241c7be49e998f63ef7c107a2e5e08629998d44565fa3abae3dd100ac320fc7ed8c475be41cfc085e0a87cd04b0d22fb69d14b973f4c1dfde8c91bd3321a4104c6999ed5d73bc81adea6805b5e1132bb6411ec654eb4de56347b14c35041de253d512e35a3b888301f68017ce692c15a5205079787175a1ae577f8afa2266ad573900f50e93596c0f4a21eba2a1d4f1be7dc6d05fdde509efac00b7ba8b5a35c2235a28f338634020a73778fbc18a3d04014a881f8413a06d99d9104b5c04a538810f928c5270b9d87bd72421ba39712e36c762bed54849003836c2e572ecfb88d455446f6a5f45b1642ba0e1d558930808d96be0172431602fa413af7da86ebb5416b174277575518b8713cb5e6b7602054c5bb06523534540df040d1c4380668249dbd6a14194789a8df3b5aa8d80c62b661c24109ee489f61100951d67122eeb581fc9671abb97c90eafae1792be9739dd077a540c4016c1122f07a0554ecbf7117bdf4a22923a632ee91327a8c7f678298997255cb46cc492fb20e5189dc133a411376b950bdb44de370b5bc67c5fffd502c94209c09684f525f91a41047512952432ce4599926616830ed8ccb350c38542ee2e0f09183e1392c629ec3e67e3ee2705d4dc42f159ed11e0f1fdcda99f93ce4414c8442d2e1f4e868a8931be285797217763c9d2c93bf8fd145a3e344824f474247c7e7f332e5487fe9352a53a68a4e4fb777babe3bd90ee4092f64ce32ad451e71290777d4401eb5b7bd74aa70d0a037a51a74672315745c1c901ce860be44013fc79c14fa2ed4afafab89c5179f017ee8aee5b3a66ede0fd2cbd2abac65285d06bc96e72ec87c34d71fd7c307ee14228613671930c2652ec8e1de2972fb68208d10cd60263858bd672f5d9b7cbde38a13094c2cdf7632311acaefead03b150eef70de871049258f269312cd43cf8aadb3d77661e3f13bd9b054a6c3daa07f1bd531db529a1cf6a51355f90dcf9c054f93e75059936a70d10b281adfe56a86ff3aae529661e7be903a8846e6d96416a919ba8e04c73a34d2a271ead0fe8f9fc58f492f4c72fe080611577f0b15a716c496c28192a07df4b9566e97e5b8f73119830d9679684c66e754a8ff13b663d21e433ae871d19310457af89a253809658771416bd856e51e2ee9e31d51da3e17d44c0dd67010d4d920cd819c53ea17014c67c40b1284d077f5cc7eef33ea29e8884445b66d77ebc270118ff30f0c39fe3d2bf882e2e0154b076943992aac590cecee3a7409d7a0412a0d6d521987bef410f46d610722f7ea2371ee4063f0cbef4556ce277eaa8ea047eb170cb4384c61883e8818f250a1a49329118aba3c6e6ee75c3e4be4841741a3c205fa2decfe6d886c3576992913a243c684fb11e02214554593f345be855b02e1e886306ac84fe53618a942f4549598845329ce8e1cb19515f4c012438dd1fc41eb2705ebac80a920145f247904dd2b7ed7ed0b222f0f0aae43a08786b213f8f0734d5fd41ecb8129a8c77ac1708ebad7bae60362f33cc1007f13ec04b09726520ea7dcba28f49a40eed9b8364027b226220ec64d5c2bc5096a2409741ae481ee0e93054c9c8c718058e398f3628a77633f1b5e6205589349c9c0869632b6f8159a14011be14a5862b18c3d4558acef145da977ea0ad1db3c86a63d22b19533dac969684ea6a844de416b54b6857cae8cfd3c9954eca52487235eb5f48d17bdbb6a6527e023510943841bc64207f4d010e1db3379b6412acf8463e0c800d5b8c1bb7701df4323928b4492e89497271f4944b1e7402c8f4a1f3e05c5fece0aece03da1fa6315f51d367bc3dddea3ae27ef73ac417fa08cb0a07234e8a9d82e2132a00e02b6e2a705d5bb24839276db98b235add6e921e98bc54f3f044e508f11db058a4234451c60d467494a8c11f99c534ce626e0688c817a113db55d72290f10d77aef6b0a484410082105088c974911cbf466089f8be2063ff69acfb5897993159705ef43e0497ed73885ab287b089062c3e442e276daa52b963a1c4c2c8dbbd64ee3f9ee9c3e4cf0c8b84a3a6b7f2fa1180cf2b89ba5283f38fb1baf5f5b94ac2f65abd52defdbf317835cd901cd5ec3561b1c4243286b1d4e3ab380bec08c93c30a23339810d65fc024dc23a4527dea84fe267e274fadc6ac144cde5b9bec616349df2b0b34e75b5eeba585ee622e9a3bb25db9105fff75a7b03fa7b07622818e0a67682641036885aae6cc9b26b25373168970b6b4a47a2a712fd04fb81faf67c5a00c6b18ea6b6a8c799b3c96da5d77a964f7761e290956d8fb4c492fcd6fd340c7525b0e1b527b74a01de9075a52a74d63c67a21ab64eaf9dcf2561dccd88f2981da8049e0d279241ccff3b43470e8133318aaa795c1ad8c2d328ce23015da9bab6c4b6b9bab6d7b35ed428c2c89d552284cd9207db67dc1f9d056938e161da1470f22c8711420012447cac0ec52854ba52fb46db9bc9a8d41b241670e2900b815516ea79523c4e0903e2b6e1c7ec37713bea26808239aacf58950c0ba6efab748e5d2b12bccc407384f0f3c5adca569556f06e7957848ec82e7d04246fe76ef7ff701119f77bbf70f10c2d358f6739003cdfb12c921445d5d8b9e6873d9d72316ab46484ac4037d4e507ffd1a726dbf469b39c0812a7a362fa77a4dd2e10a31571361ebe3fd9fb8a4deab83f4dce877e491c8d5fb92c86c68c8f837e526013d12c96e8c8e5342a363450b9c3739c03c76eb369e17f33371e17a6bead6d5442221026f43283db581cae96f9a83fdebd4e36a22d9dec23f7f8513c719eaddbc92a2aec4218b88842ec4591c7f883d5463e90776b9e14e8425bb51041f3c264221bbf3ac331b66af894c78484b08cde93c83efb9e6f8b211785ecb467fb59973f66d6950a2e94be73af643b5be4c9b788a91d369670ede6bb62b04875c56b169fc3c0f7000ac5929fd9ad4c549f3632ef34c9291208586daf258b324befc8d250bcfd4c42ceb90e3a20bc4fa71153c8e1578d4b415febc777eb5c12f28731226a09e4ac9c0a27671ec0f9605b6df5ffa0d53be5e7245a8f28487ed16e8a719ed1d96a084fbef6d74c4b1a4241801a3f47faf794ba55a317b3ca80e58a2ccc9f1c7f3df974d4a73e89fe507bbee4c72989b7b46ab1d13ef2100fc5f938c58980f09b3a5f52db8620354bedf64288e72cb82cc4c7ca1d970e4d3e5917bf53e5142ace5193dd9fd0c682b01bfe38a219832707dd2a22174e3032c6ea5084abf08c449ac992c71580d2cebd3bcbc1a204685ccf5f0346660a4cecaf616453277256b735a0df90872bc5122cec1c4334ba20bc83f8b428b316ccb4d739e392db4214285f410ec4bb6dcf4beddb2d20b752b75d38990f73ec9490298b4f4e2ffa1430b94b9b476b3b4a2ebc2ec894912269cb14204d062099f374d252a453a92a42de282649d7eaf663df8d71de7d61672ab26298ae7b1bb85cc718e651476b2c6cc0bd951b0d124607c0772245ae1eb83f4ad1fa7c950765b6335ee9e26fa9676b53766924af0c6a7b1d745935cf039559240e46e7dc2026aadd7562a6759b1760380bed95b9cc5440b64b080586d6b61876bd4812ab252a3fe343cf6fdd0890542da09c08c17cfb972451447a5e095444ae19d1fbade3a9314d94b480ae52bb3952a907e384c5357faf26959527a630e3b34ab179719ab01e14080484122c6f78927867723f9a9d33abae1f2c020de8110d342c04a688c665f732d04e30681120abe2491b13457f277221708944b4007909e66702408c08dc24c5430c8936e1a5ca794264559d5344fae397c4b43fc7fd16a6d0442508c4d16081f0e7f66a01f24003129a52f0a2d24c570a5ecd5b2eb850258ce839b739a57e48adfc0c9981a4f244143b39d47cf20bd5d2b90de26ef5b6a072afdffe17f9def1e9d3dac7676560b378516eeb547353d92451dae53afbe749cffaf7434016fa6a86d6dd0c4a5a40b95d68a0696c54af8ba034e7fea2f3c761da326c69fa30d4feca91e7185bd730e254b8802163401db950a229725b75f8e2026e7a1db558aba7381436e5648e003d8d14935b543c43782f7bee54c7f4e827025759627eb54433273c73c612ba55e52e3e13d2d650416bc8eb3b879bea1f6d49d08ca790c638f579c9c24183ab5232d2c10c2657090f38c2f0751259ee110f462e71c806383a68846b459814f2b5540932e6a46e40785c73707918bc218c810cf25901315eab5d3f294366e61fcc04976a679557494c9c041db577191817738867e55865789a364c5f1a8b8642eb3d8e743313ed8286b5761318b5a8cd87b61394a1b040d7d86b57b4c5fa707753aa5cf80e3f82424a7717a328a38b36f85011c9484801d502e9245ce3d24623c7e31463289b2b7b30905d200d2e9709f410a27ab754f191eef7824c6295c7dfc8e4dc5a13319de1d9d04bcb0b20fc4bd58f18bfadcea42d24f996365e2c1ac3b0c858a8d9f3e31a1625141f79944c6e3d813521be9414c13b4b70b55654dd0553a9944e41b906c0ce290f79363e8d3cd1fde47974f5b124aa64e881dba4a2f67d79a50f286900d70b3b4f535bab73b864a414d71f961de6eebcc447ad92e9c72f8dae612f026c52a18d6ab4ac25970251dc3a4ca192cf20bdd9de2fbed98909b5b91df9c999816ca9774876b77a881499716afb3a8bf2aa70b6d0a11ba224ae3533d8a8035879409d9cfe42931cc5511560172ebc81e06a8da7e76cd62ea119a967bf75133a070b793a8c9632446c7916eb02c3790d19c17ca4dd6e3a6e51e2e4eb1d0decf19514614fd9fe1ee6463b0dc39284369d232d66399cc6b9ae91acb295ca4b42d8292d41f57c139ca72b2346c2185830bef260e2ed4750115be724bb060522db421c77abefc2785095e13d438d21753987e5c4d9c8aa5c755efb4985ae5393425cc92abfc442db9894adb1de37a2e1c57eb922be11171aca46175397e8ca7a0d360772c638c36e920b098e7cfbeb78383b00e342987969323fcbe95eb69990d961b0349e8b6c042351709b9b83e3991d46f0071e690c7b0341057076cecbe72b9744891f2cf5a715e4b760129690d053752f0567a45ca181efe7d27fcf3d0b1ac65fd289d0d1c09d2287899298127331d440d2fbaf79b2e57e09662b0d31ea4f33ae5618ad269b4fd2755a419f2299b0ccdefd3ff38f1d745128e450e3093d2f6a8730869a603ad4b71a575b9e2a7a1bfdc61762e2755f4a256bb03a19973419ba240f3228514985b775e1a0359a52e1dd9185ccb0043570b4386930b010ab5f59a33167d7190c330f8cf304d56b58a483b5fdccd1478910fff0e84b8a988e4c03afa4d7a2a662eef615c97f8902d009a12b9453ab1c76fdcb1a9172a9e11cb2ab292c45dfcb23e61df664049e014f54cf0575f8b92bb9f77110f450e679369365643186b21a26c20d35036e1dc2858584d1538fb3ebae4241376564a7013244011a64db86ea96f291d383b7c08da1a0ca6478ec6512474fcaaaa158951dc990c138731513f95c51af720ac33cd1e141a9608c7c9e5d221b141723d131848d3ee6eb09d73f87604b87037a8d2be17d24568966836682d582ac8da35f50a523ad02cf96e8a8f3386fa0e9385613b4e6c2b1e176c12d43777dfef241bc7f069cd47672db4ad5f7830e337f9feb6f4c38f41abe28f4d180f68839439a1f90deb23e98beb6fa8b54fe9ec785e114499b2ee0787f8d226050d033e03fa683d3c77c51870ded39742495fbbd5ce2967ce24d1f747df62e3b0077cf4284aaf5a7e7c96af397fe2e362d1418f6972c2613e600b9e64fb6a16dfea7e8c51456e470de4d73b591e512bf8e179133b8e1ecfdb7b8b0a0fdef33ca0f78cdb92d3b776a4c664430bf8bcc58f79d0556edcef24a5735628277113b6e2d10425a909994916c4b3f08411a047aec4a2d37d258d3db08e8740289ecdc784cc220591de2a1970d81fe664de8a5eb8a66b780e56067aeecb5bbce62c90e85ad048915eeedffd3123607ae98026e0adedcd3c0856d05cda63a51b71c56b2e4e8a61b3da6c16b1dac0d74a729d3aa6819bf868f1ffe44a149b4e0f7e881d6bb69850e8fca8459bbe65b887a23e6c8f254182b945e70468ea122b7c58459c142ea6b4f363dfc1f2c495a0a4e1dffb6888ae91c6aee6713588d55a39226fbbbdba22172062e7e95e6f4eb1c967e557714ae37790328e3dcb201cbed8d2f0770279b4128109202d31b69c36016aaa942355709ad57409216cb3faca5c57d7ca2007365ad255558014a0203f73ce5ce588a221fe23d2cf86515d6ccab24d6e16db258399e59c3ba8172ee8b554cfe7e3777937b67716ada365b36e42428dc8bdb794524a29e50e1f0236021e02786643141791065dada4ac7ef553f52b91d2242af2b749984efcb0fcf9f3dba00fd45905e22847391a23f2cea5bb88315e8b68a9580dc8da001aad71452c229dad38e075e6daf75ed335c8461212ac88bc8db6af65de7fe482e0f5bd2ac33f9d4c27b886c3694a00a87227bc6635e7bd9f4c28532a854aa538c6a8cf7b8c31eebec398ce7d69f9c2a490485fd42f05baa9d0a680430bc451a1fd6185d86987c6dbdb7a6d5adaa4332ba567a5e763273f690c22b365650456599529149a041a514cf332f8684b08fbd15c792b4e40994de6d1b49808556444266dd88d843dd97d26f727fbf8e24c2ff528fd4a2bf53e1a850e60a9923940ef4df8910e429f421612b01a4c0fb48f12ac8ceda9a1bd41c28082f850a77d6d246f958ab04a4169251bd62a37ac513a9f9b4d3f0c4692e3f8df3b8f692492cba8126ec73679f47ec271ed0b39562a53225da5ca2c8ae979abc1c0129a84b3f124a86dde6e9676ca0148114d67701c076b91dbdaa3213687d18f5b7692c3ce6fd1df58433363a7b52e9618ee4edece1f9ddc379eae16ae155c47c621970ae214f0c808e96667d6c431a5d19a69d2788e3239a2128955219e71d7d94eaf36167eaa7cd888669c27a9b725dc8c99830ddc88fa1952ad4873a66fcefdbd12253b5025b4d65d6f5a9f92c84e3018498ee37fef9807db9d3ed1d35d4d864fc2f1178ae6a4d7a50b1a5687d7d63a549b4508d12a6d88d6e731f06c9a360a68705c60fb99422ab3d35ad4939eee624ca049abcd59cebb7a2beb7416b731d9615cf34ec2b8bb6365549e6de7f3704e77260c673fe96a7d757fa73a3707e7974f6feec6c67b7de3ae81912377a361ba2149f253918bc348b95ab4257e27c3d5b340169996172ead9817ae615e627aeb458b0c4b0e102d90b582219145e3ed3bd7dc8d2b7afd85fb3b3949d8a8125330b88bebfd2cd40cced85d7fa2f9dd627513efafeb1e5fdbb3e96e34cede3946afcff139672dc7f5ad7e753a8b6f6be3e4f7b172d80e9531276803a28a964e0b4290e9e941e289a53553dc4b2714ced22943d18e8f521a9125b2b71d768459ee9124cf214ab1181eb19e0d809070c29cb6feb4d5eedb83c2b4d5aa014da57041d85a6fbd35dfda66cae2bbf6c0b7ae62aa0acee9398d86f498d3475bda92299818095132849d45532c0cd422b1ac4a2bb5d5ea1f74cf31edd00c563e5d491f5b6554827c30c3ea1d4689223c0c01e4882e88c849b490f4719b13418e5461c52709b049e73845311787510d4272be17638cf30d33177256041c350148b8c56c25d440240e22c1e384d8a4a6ca62ed2628a5f48770364a5c8811901fac16d9c481284e04f9815265051d121c116931c4112e7a9822f6e44c3a97bce8bc79713a5cdd2f8e522a7e8cc3d19cfbcefd7f5a73defbff286a167ed66ac572b940f5f865e32e2faa21554bff16d60a072900f3302ee1eb09b75182ee151b847bbe3975e8c941a98604daae7871c3e1169bf93c508f8a26dd50250a65f9d855686d116e71cc022e2edda54952aa5071254f1c59b50328bf173ae79c71ce386600a5377ab3604e021efd8eacb79efb4cfbf334a53f7438706e6cb6d0eb602223814d8ee69a73d61406cbbae25c4197f5bdb78589ab2a763f5a31c6b5e65b6ffd9cb1ee6cc5d466cf1b8076679de7bd3cf0f887ba777e7b9b924ca75b35ac8af866cd8a00b542a1f6f8fab0bf705c170047eb137c0998f9625bf9db8069b25f19f3ecd1bdd352ab1b7ca254b3a6a84a35270aff2a89b5048f2d44976e1098fa3aa64c964c14b285a6ac544b15e3ffb7112d714448a8d82551080ae0d116fa6650279b21cb006330299efda871dad2c9d9ee458364b674bfef6af1d6b75a4a2cb656e8de9ab1fdc4b9ffdbb9ebf4c5fb23c52250dca8b583c28635d76cc3ba4300a08349f7fbd4fd1c5819321a3aeefe1c98943d8eac7757bdfd1b7cfb35d8fb6f98f6f79c36d805aa46b6e282a766541bdc62b5c125962863096d625dc68a96f7447001bbcc0bcc06b58869b53698c50b990e82f52bcd8d2a54e843f0e106b1103778e50ad706ad98d96015341ba4a26683538c279995d7dc421b9402a7c6d8a052ce06a3d0d92014e4069fd8d9a00ccb534badc31932900a4f3943a602609632ae39ce03c3e1ae2ec37edfb924d6d13931641d8e77f3d9ec97cc76bbe3d5a71a190d9f91b974cbf5fdc91186c80a59be057491e92f346fe91a1303d37ae9322e3e58bb6dcbb3c83ad7bcffc821692e64c1c81f49d8d82b4b5cc150b95a9ab3686a66ecff2ece699ed5ea2819d7fd477d1a4ddbe6bbb10155d504f582604d22a48cfaf6c7d65aa465772ece3f8ead1c5a8bad02361af57a317046e05a71465a3290a4806804ad2d172bf7008f74b2fd68a6bbde2d7a5fe7d525383e69b0798db6f2852cb53fe05149f3536e23a5a693567bedaba78615f5acb1e237f7d428ead12f1d5dc602ce00604d2747afeeaae79dc6ff9cec5df7def7deaf81a4b4171de2f79aee4767744683e810ad06d396f2695897d457332949e90aeda11c9c6aadf5c70ffb0b9ff525b4bd76261262908e75a88eaf3aeffeea529624655996db485996e05159be1078548a402578b48da49c4c3c6bedd24b64093c2a7fcab9548a40e0d1365296367bb4c4d8962ef4f2a7bfabacb596cab2a62456acbd6e8f24ec359e262a3399acc9e6dd158033f9e93430d6660ea542698c18ee76fdee875f317b6d78732fbe36b15a6b89a497b8e1d5264f014726dd3f54f7ab60492660d69df76db1e6f3c6912461b01b2474f7e39c9c42d65dd699e3da959db55f397f7e11144e083aed2782e2e5ea4de029956aff90d57e212c8c594a169c336eb1017db4b894a04bef2f2f30fb83c4b490be8417322d20c8627ff8b485fb4910f703c1d80fc4b57f8499fd22d0ecff51b3ff67c439e39cf1eb7dbc6cca6dc4e6667f083831ca18fb6739fb7be8ec0781dccf6367ff0e193c3c658971f91f9497cef20b20735b4b99584a31ce399315d36f7df6805977287d22105e77bd9ca7b7fe6efa4569b691c4a3982053ee79c071ce3a8d5fa8d40c5f9a1602234600100e07c5a2c12c498124048148ab0f9441c8c49c0d8b10d302a358500e633886631808423006300400450822c820c9d4e90627269d13161550b7235cd70a00fe47436bcee62b0c3bd20ce4a02f21b03e31b672cda033bb39c254522171525058084d5de7f7620eba8d4d4353cc52baed9c6c73aadbd9af5bdca594a9a3cc5291b1e5cb7a768d09240c49d8674ff3b75cccd279f11530ef20e99dd05814990746c2460a8b1726f6604c2f1b00a5342682cf8274ce26df9f45738189f5e8f534ede0628057a07d2d45b627da9e8498678a17d7427f8e7973bdefc0244f95bc628a67c4e104e5a45a18c40b9465c535944a9fdc9bd271c6f0ee93543b36315141345c8a48a4b02d8fc1af6a7791cab3bdbc1ec5690673e58151745a91f30260d627809e2983832de0a16289fc8052af3ee9d45c5157116a5564e98c9679b5002c92fabb711e1bd2b8314f4217c6e119b4ffcedd1c89b92f85d40cb1373b288e2ce4d5f65795cadde2d7737713f3ed087a4758bd1360d8fe2bd866ddfff3dd7cc59ff4fd60fe01e58a6270ae68ffe9b49446d84b6775115d135d92b174bc35b6d2b2898167e2c9b47c55070b19be188baeb486b775d6875b598259c767e183faa2b4ec77524f9c117f42129a045fd1e485595f4ce5dfb3da8761854bd748e94ebcd579a34039d2e596c69d895f7e218475a41ebe8f203e3a0b29c1ad0f641ff1f305bc8228ba709c19bb3b665728e83f92031ea0f9b76e7da65e441218d96427f69f2f8051c86a952a70c56e9e89da7100217f1445edbe707e9429e9228c9b33d473b7b9b34f80eb56c944b7d35cdba59df77ce36201f032b8d50de855d13de7bdfa5f32a922c68bac2ce483f66d3532e7f557292330e3fdddce1d51dffe75424bae45967d39c8a87dd8b04651811f705f763c37052dd83beece465983af9ed9a6afbc78b50a2cd6fff0dc4a5e5e03eed0b8160f551fe965bee14cd5d5dead92b274badef1aadd0505292e141e61e204982e30f80a9b28039211838911a24aaeb3d361fae72a569eb542013ab86cbbad2d991a4bdcf1c34d8583739ce7b7c4075315d974fec04edf0fdbe1fec9d25bd255c6dc3c6f26cbfcd36df2783c9b9ef7a35af090e73fa3167326e7e7a0147623f4575b11e3ed55bfcc72ebb6cae266816a0096db23620d3a79cb3168871808940fe28d9e47e873b5748d23fd9ad1ea23bb7c32a14143d7a6058281ffa8416735f99f716bd94ed9d4403fefea2e1aa4c02c457c8bb01eda20500a6cc125ac9ea1bda943cd631bb67d11135d6379a9ce7fec7f8ee41227f2e76e2663cf9c6553176c3af091aacbf56c71482ea692fb8220832d7798a7a0f18a10bc2969491b113ebcc96d5872ecaa43d565918f40fe5ee87ff3b910b629343914c227948c90e932a7978370a9ef1ae212ed254d60625d1100c7c96048c146f083cbf497c250a1444065105b416b3743884988ce93270dc0debfb3da9685b9ca324aec25b56c07bec5706f2f858030b95c6a92b4966ae4114dd6ab018181e07e37350f7605765058a7564d6fb60c06856a3a1f98e47da4f18ce86bfb6b2f1858457e5a0ea2bf4f32bf5bd2c2d68cc52d6e464284d9828ac9f96a12f42d11575641b81aa8d6def7244999273befb701c178a71d4de3f23dc4f4a5ef29f988dd8edb5e5079d60982ee032dbaf9164031a5408b5bd733be305d5e3a4a97c501eb633add67fc6875d7bfa554035789fd5495720fa61f82c42397356e042918535b6703ce43d75106a0b9fd91746e4578d29b6fa3159bca6073e5746ea3f2a7841f742999d31d26f3aa4ddac9cb36108e4150a7af00f20d57b96a4a0f3c2c86a8eb0679ebd372c98ae5d5f56a9b86954e9b6435aadbe637429ed97756b0202b4423caf49bf65cd08540a1992847b9c071ee649e912aa2f9a2968673a309bdacfb572aafde7e1808f90dd401c4f6939b97dfdfabe3633d030387bc9fb8e9bf1bbecee482ecd372143a2571cdbd754ad2ad8e6567b0cf1bb071cfb2dbca1432e9cdda7fd8f59cd42146df37deb7734b651c7294b087722b43fbf090e6a53d792d643e69dfa5ab5b84b9a1eb934a75679badae4513f5c35099a35404488fdaadaeea8e2cb287e411c196246dfca87e17899c5ab9e2c0a4c955112a251500e2f306a90b081e98205ac90dfc7690a1804125d82ebdded2414ae37b05231c286f5c1049f6d2e7856148391470ce138b8c3f7c42cd33c215211852b8706b4a79a957df5b555df3434664c1c95c7419273a5dc2cb17f32bb73c0cb6a06445f99b3a3e3c250e4c00aec78f843f6b741521e37f27c65495c1795304e1aec255096c269af8edc9fc533355cb5291a45ecff41a84a4c00a5fd1f8c125cd3f384ce9aa3e1972866ab51ce9e3a96934185e0896c30fa1c673d6dcb6ad2118c5af8cb8a1903e1d057a1e409137605f247d4696e7355c9b1bbba157374611d2fe4fb3dbba77e6423b5fc39b4627edfe519f23449284e92c7fee04f9c00736fe79d1c0c0a746083c8e19cfc449dd0622f8dad67f37b870353f600519a6796b0518b00d0d9991d7d002a2f4224249255ec84ee8fd9c87b284b7832601dd7438af85672847fec4af93ebe54bbd6ac30b3c0ac4e9f71942a7702e50798c2bc4b556422b352ec25053716a6a841b5f01f1930d92950e1c9db31403b807ca525cf487c3c97843398a21a75d04b3cf198a2ce10529075ff65c72946198e18e0420ac32fa58d877bbe40c6f3ea0fe9951ed748f16a9a1666e22b0e4141fb1fe28186d3b1465d5e4e41cb8f3a46a4a780e2fe4d941f95d52363fa2a0f48963464ddf302acff522b709b6f301271c7ae17853185defbaf8e963330e5fe28b5ff6d79a0a8eef92956a7dbac68404fbd62c3a132d52fa479b5244b462faf71407347917644a691247dd06c32521dc3c4f48a763a76bc4855d75609e08cf4508fa2a092449812481a364cb1aa3a64e9a191c4b42c42d82ba56eb4a530de37c88d3c30dc939996ca96cc70ca9847411f866fe0d1eb33fac9e3f6971887484262125868507d4e925c9369439d412ccd0c8fbe9ff666ae6b7fb657fe432fe7c8ce0aa4b661aef78ec0bc5454dc9a328aa979c3490dfe0ab92564d97c278941e5b26a68ef9466e975c45c5fd507bee4bc6cf7dac314c26caa00d2d04ee69f0caf56c9b8c844aae048b52be8163b941616ed6275c6435e4a96d166fb0085a12f93a0d66f7f2ed7bcecae07e54e5a14b3f6e7d51f874443913372ff99fa32f24d236ca0e138f0b96b7e5f39341a2c15ed0e09c53a5494542d0c6daa156494dd8f040d75b24aad8c955259c6761df221550f0629fad68e61a85f50eb5fa180054f95a6c782efa9cf55e7fbb67cd146261ecf0ac44bfb0b5ab2fd0c7e7298f08f896ad9d990924d7e3070c0408ca61f83ceb94df7e1f8e53f2a91cd421bcda0c90b9b0cd5b600248ddeed45904304228df65eb74c124112116e66428c5ae0f4c9e7afc744facb0730c0c4125965f24f1996dd2ed589a37c7a08020eecb132917a03c9944bc2341c6304af368d3b4d0f997807b1522264d7837c2e9ad5d12903d2e8675c2a8a2058dc61b174a1af21ed9d6b03106692c45c050016b941c1fd2440ed5944c7d1698c7aca0a68e4dd5b371d04fa695d46c6285bfcf8d6b3fd226ef07ac4ea7921940789b3ddd7109faa33db5968f332f826a4f4b6b00b76c4ff35467767bfa2db2421d9c736bfa19e82b595b31e6e59ed23337755db06ebaa784295fb4764f5be009faae4bd59c0dce071aa81f6f9a003650cff6647be86dabc941390b27654147505163a7241d9404d5511a7378ee9b5b573bab1e103643f44d30e119b88dfb5047f425aab0eadd8c4d281505957d4f1f1de0dc9be393836de729e9e83dca4cb338fa992c3798f26b0681869ba11b8c3e2d3ec62791d187cf866dc357645b54cf9516cbd822c5aab4084f67fcf7cbfd60678e3ede0d4e7f56e114053d347e13f6a8b5d4dc6fd0a5c2de6f4a2c7a0e8a23745cd8fba6a86f1317b223a6f3aa57cde1d13c9c4f7c0d2116e878c40e94fbec3327e2595ea2faff94747ad6a9657c466e4e3c0f80baf6937d18d26d7808875dac04d3396ddd3007a52fa5c52f2443bf23cc234418fb4b507efb00a765a6650a8e6434dbe5a9b82dff275ade592297c36e3c0a6b1d87a251bc55b5c3123351b86d1b5373f26b7163942647ecafc4ac6d7c6b671bea57381e148b9ae3eace73bc1c1fb81e550106f60e7b0cd9bf119db4375cf867974c569f898549926a437c4471926f8b1395aca67e11ff6ce4403cc3e075069d9e4563e27f8071480e68a7e6d8312ba3428d1b40ba32b8d5e8caf3d9a46e5c07e17d638d94daac079c39e5f6df58f1bcbcebe3468abf30ccff61ab198c5e1329afe41d3d66895265e72e685b19bc1be916dfd77b82e74e377eea1964d6294e6d8d831c2cc2152c5781b511082714311b677e251a4f575fe6f1b6011f74a88d9f83950e6aeba348b084940308c7ea7043be1225c67cb8ff089d35146848cad72b9396b97091a49349293d1408a8608369d882269141573bb6e0fdb82c8103ed5d28feed9cd73fa8946e501d4bb9bda8b44150942295638a155dddd4a10e04a26c99c3a695f053a506ec4a82cc1e6b285bd797726ff43243d33123dfe6ed2dd2370de21ce9f01119f0ee7516d0f79b0a23157c4fbf3d1d58b0d39baa432161fe6b350a6df20950d197c41d54ce66135590673fa2dfb1c4663c318dced5305c4335c6014d5bcff8263b3ed7b02f18452948746c9b54fe3804bfb76105fd413cb6d8454c0fdd99fe74a45f5f7416012c03ed8ce68af5bcc84d1d4bbdf00522107b7b1386b9d3ed5fae52b30d4d5bdbc34dec2b5d72cf624fbf001edf21acacb027bf23df4c5b977351c7eacb9654b67d60b5aa2607470997c5207c19ee7d512f8a67b9f10a95fd9b1ce86dec67b5a1958b6be600d701f21cae7a35128dd3dc8060e00a2bd51080a8605f94d217ad130247672c4174f02661d59e29b4aabf19e9e70e11e75a0d8349cfebf7cff1cd9e304bff13e501273170585494c02ff44f1289212c05bb343ec01697432f7c247217a424d7e173cc588e621082304672c5941e9a1972d088bd0c0fbc320d5950a29b91ec6fb2e80e31a80e06480b6574a36e03c3cae69e81960df870265c6dec13c1442f1f5f7d5fa62f01fc3e03da3de9bd41e322dbcdf22880fb30baa52a901eaf830cd957c9b6bcce0f861f4aa66e683449f4d5508b736a106591293ce3291e46a33e64ef88efe2d230a034c22583841d86980e9033527156ee09b3fe49f63f2ab88837ebb9ceb5cca3a04803b39e268fcd8f07a7b02f8a8fa08b453a8c6641c887b00f104e1d339d6fbaa86fc2937041f5cffbd9653e3939844028321a8c085b10d2bc48fcc345100d97ee1914608b270045fb711c8f14b969d840832f4fe6b4c2ee4178c387a42b03b766e63059bfc3c1e8ad01578f54eb6e8ba546fca9f6722dbfeb1e83beef7f47bba6601bc7e22c2418efb9626ed3388984ebe571b2481cd07fcb02304f7887c23280b8ccfa96a82efc530cb26cc6893dcd24c29403570817b45099e0805299205938270299e04a298bbb9234bcee15478cf90e57fe59d26ed19fa975d34325d1af3182a2b5998a9744828e5efbc0ff96b0119fa4c5df3b6603f426405907182263a1c0aee807eac6246514201c1e980ca910d86622060810211141d6ed11c4dccb817625391d1c262fc977ad4a6901eda30bca84326fe6481a7a0fcc96469856d2f6c094872027f0b00fccc9614cfe4d479c64d6f523d219ccf02a11b850d7ba9f1968e0c1cf4dc430ac1871716048f931c6d0172da6bb308d21018bfff7a4c144c34e9b072bbe75534e6194109b73b4566743ce470d206a70a8ce29596663a0dcb95d13b91dd36073baf77da72950b859e9ffeb646278dac958e760907dc4fcb6c288fbcdd60e0eb51e9fc595dea9bd2b358a473fb618c4dda10453ef0eeb9c51549fb232e56a4982115a2246a5563d59f4df3166a0ce475d4b6dd005e4fd930b7037f29b2ce902380d72c201d39598416fb0d4330688f00a3809a9f1d0e643caa1135ba701cedb8275ed2ef189a45b7795b5299f21588d4948424488526f851b53ccfef5bcfc0fe56736916382ca355c7fd80a025819cf01ad28c7a83c8c9bd8b1b6ffedf37b24da6f352129a4e55f4d279ef654912211f2906bffcebbefbc40042975fa19a91ed4718bd72687a4ea89dbfba0a0289d05b89158a644ff5863fb43ca12e009fb40abbfd0ea9b251b4ea21bd432dfd606dab9a6027f5d20d453a388e196a431518751c00083cea07713fb3674667b2f3fba9f6296817bfd124ab355f7ea37d7a5d2408f659493afb0d37c9fa05c5c812c04507c350b59d4ef4ca8543b73b88efd704d46fc05d018727de27353f9098bcb5286e7e0344fdce6223b18f0f129fafb325671fb030951d61078a74ac4f193cc4d6b92ddb35ef0ae40757bf213499ccd2a7fd5d6b30259970a138815dbe350529e47e9f1580f19a55f230734324e1f9898de80351c31ab6bc8b9f71402cd4b45f9748511e6f2bb2f260a64abc4ba42a3a315f8b5fd6f92107aab02a40df77efbd2dd98fd695fea0702fda63acd695f2b5dcf9ff6e00c348ce725faf3bd7ead59c1b6c6530b46e0ae24a0c17b9eec274f022e1deebc37ae061a2ed22212a173453f974b91e384cf5bf901d24b0234acd6643e44222326d0108c67c7c6e97b559dea56f63fe96b844918d6fd87893c84eeccf45c5abeb6b1f93486b2ebbf0670df07d9af3716f5ca70e5a0fe082be991dd93a1233b8217fe6db3344a50401c5977e74c2b64ceb40b9981182b088001ec8ef84dbb9c8f2778817cb75421dfc5b92a764918847a39a25ed628859d2d85ec0194d1bf0e08a8b3f8a1ec1b32e916c80a20de4ea868ee72729aeeaa9460a29d7b9d1d75f7857a30915fd82f79e168d591d84d50597400ddc34579e048749df99186c7be1243eafd4022033456210dbc9d6644212daf4e91a9bab17e96ca39bcd14945d59faddc4b4038278fa641b429436cda3e1e3efb88a6da1304da552c0b8b0d00af80c1df96cf89f593e7753765b3c6d8e381cd13f41b0b81a8f0f8976f75eed641aa8fde3e2c09b21eca45bac524e2c0497fc4d58297d03de1aa0ad0074d1836c9b773251361eeee20c401344f7df7d7bd9d86139db6050fa17f6779663c68ed272183f5127afe730ee4e99e85eb17d2190524e40431e0d5ee433e87ae09a215088d4366e1edbecfa3794e06f110cfa3e2252db29be96fa7dddff4fc6511bb3fee4835a1f49fbfc9204294750fa58093611201974a3ad6d23f9e962359ee1d2b954e96c5e01187f35bfa7c26354248650c07b2393d2ef71ddd0a449d34ed370ab04ac353519dbe774de43c6a69eed8720b23fb00de2101a9d4f53764c55409229f47a2ed07cd39a1b397d15dbd0cf29cac160013d5b30a8a74c0b894bba4af40552649382de1faee4b00e9d62e9187dfbea12ff73fd22c0a2bd9314628c4812a08453614fe53644ff387354ca3c1c633f23f8490c1252953fed54dd23a46d238e777861ad146b3477340d58deed30b6748b389ef4c82288eb59c300bd57f1f363d65703916cab1716697fc36aca835d682c40d771befb00cc71b35296a47071d61dfdcfa3c2568bbfc025170c30718928a7bd870be877367df05f54abda670eb331dac2c3353ab1e9763fefa6812666012a5ace180f64108af549826311d4a1bfd3f293cdbc8e18e993561b8bddce6eeace7be420ebf1d312904418d89754cac9c2a5c01feefba154a264ae3c9683b52da922c7cb08ee39f365102fc67876eb3eeda205ee5b801d09fffe01953e403d45ebdf82037123cde3236a4dbeaa17fe77048ecf4812818e39ff76e6b6b5dccf81b8824b5a80150238087b66cdba1ed4209fc753a1b4c52de07a40c9de0835fbd6a37899676f8e513a4fa422ab493abe288de8a1d335f260c58df1f7ca6343d9637ab8298b1ff2bedb4c604c5e8b19180afd1d83ad1313b164cd39c4548f2a0c891e093a9c979a9146ff94ff6a64413b34bc45479cc22df877f3c06609202b3499884c754e7a2b4a7497dc731474a29184b77c77afc9770576b710a26f18cda8ea3a21824fe25aa639a75c28d18eb28991a6be6c6bed80ac1602b1a207895d014266dc92e02040b8e26f79e099011371d6c8fc5f1108770bd8b5d002e7cfc4ed75f8e4403fddb57ce4dbc73459b78d6bd1da4a96621609eb62b304f19d00d83a1ce513b3c6c24c23229a426732a2ec1f04c90466cef3dc31f9c7396a7587b3367368a99819b81043f1b38ccbe00040858d5970d14af08021e49a8dee1a867cf551cb31e560a5a187ec1a6b74fcabebe5773e370423fc324a750120cc3d6646bb8bf07e1aa3d0d63e8727e6aa79ff11ece8ceb75298cbf7a997d1123654e9a5e3d2a2e257c1603be6d018d1034a0a993e7b37340d5a8beda3a6eb255d7399ec586917972aa27f5eb30d315105364023ae0be0e4fe40fe4243e7f57741543be79edc0a6986892f1abf32ff4d3176063ebc43fe49dffea6d535db6bf9620c583849252d3afa58ee628a1c4607b9fbea2158b50e1ae13dded05a900236d5e2754c250e326e4b3fd6ff544444e58bdcc287e0240ad0f878d2e929624bed499084cb3de89e882814076ae12579a3c0c582f9ca736b0a2bf2ccd63ad11b258e938406d0030bff2989a29d443f228210bac33a96122ff662dae86695165386cbf54e342e1d096527605d3a2c3064a60c3b7e7ee893fbdfe20a08592993e5687b8e89f8a01bbe1edd098a5770848c5d78c0d09e5fce363a28b3205dd0853482cf00b1ba7d415ec8a7a0cce36a0c38dc4315f518a223d0e3215c7454d0861eacc73bb6b96c973754a270fdb629cc40d4cb63e2d8d8bb77a3c16928ab31b11df447a0a06572210ead438c5f3e3d70908998f397abe81833c3a7a819a1173558dc720dd0768a0ff791a4179d1dd2fe791018d0c323f62b9a4500105ee0a191976dceaacf25ff005a22db4951aa2a20713b50d576542f133a0405fe1774abd54e414ec1def08c6fdb961c1ebb67bdc943785c8b4d7e22713af2bf181e01d5c016fa890542eaf3af62b3b925f6f48eeb1c3f5723074a2d977a31e3f1fba803dee1971a9e457132717a869fdce67ff2429b8bff85ca58a4daee32bb9bab1846735e54eaae4970eb4ae21488f7ada4354133fda8019bff0fcd87b34365927639b8c9c30a51b6f595edc687a060e25caeca9ef4598a05bb5aee4935ffb973c8b8d54166592ec302e65c02be5634985f14a2ee7832c112085dd398e134c3edf87662710843a2a63e5a3ce9cd9ee84e49eb587fe825138eadebd995dd4bedf947fa85a3c2a98413c615d1561c8381c0bcb5d3c22e156c02376cdfb04312136712048aa65a90d3a59ed7f9b07d1e8322904e7b8cae4856721b87a9d3472636e2c68d511843549c7d7e024f47d96d50acb184ee673df3ac45645e67594ea61924e4b4d27367a2b07dcfe769cb0b8500af491a77dd453c78ebb707da18efbadabf63095f56c7ce995e408c5bb0f25f326e19e97bf474d7b0e3def5b7babad210fd47a5cae7b16796bec4056d7e94739fde01589310edc4a58b755d1a64a848e1aaa0a3c9e17fbf5aa88c898c6612114cdc58ad09717522025e5df98135d81dc0e5edff8ab4c8db7c249100b105640093ffb4d6b506e201956e775faed692ac645e229114f3788258fa78c35ca2746d71988ed11233dffc9c29045d5b1e0fed6e153b7fed45c7112f254e22777a238e913e97851e7895a0bb800d19f9c717c54e91e2bd2fcdb7d64a3ebce3c9b46923ff03ccfcbf2d6b4fec947e063e7b7e24c6be4a216cca2e9a735afad1152676945707acac55a32ee59d0faa031a86905b8fdfdf8255107e3cafaa89ff1ff9fa7dbb042fe985695eb2f65954c71934957518797a9c5cf9121d2a445d956f0027e38e7fe49a343ca16045a5fe9665408deb6d61ba80978388c2af7618eda8d0024f399ebc61465258b3d00d7c4239379497a144e14b632943a858121337b37f5aba0f3980a799fe93440e715f42d5d0225b967cc34ff1041d8bb907cc1d9703894e06b0159004ef4cde41ec888b87ef8d5fa1974696fa9e8e6be4c9c3fcb79f626842682d865eff2072d2865cb223ec4bda153c8246a8f88dfae1f4fbde92204904193b556f85006880819e6478c7c5fc2d250783edf05178d5286d471008879bf60d0f437a60230689e7b47aa7ba76e58c11378fadf7f1cf0d67ff24bbfb70cc9a660954a8cbda4da47750ce42d1da9a2c93dc6469c0ed6c7e70203eb5edf8a03b1ec50c3152d2cb716603275f8a6f239c9529b0cc1adcdc3083157058ae271831f527370a4865931bc95499c09bccb77b6c748c957ea451b58644948bccf0d09a11ba98508c15a55a2f403f86dc602fe9d15a42b40066c4a0b52c7eba58697d93f281716bd62a504b308b326860c2a895d84154689fa39779d95d6c0885a06e59a72d8e4e8baf51fb9d1dab081405729f9164e5a1f70f0e7862361e95c2c795d6f50062d31c019003f277f0d98226585cd31319c1fa423d947d4ccc48ca9b2e5610f66b3be90a3e992c708796581435bab2c3071e787d15b6b20a23d870d56e177d65820605db2c52ae34321b2f9809e5a2ca7b1dcacfd845e15285ffa4c32195ce0832aa69415ce8e82ba296ee28e0414d5001a75041944806a5107e66af717d71a6c3095f93d32bebfeee258389ab2e6f717bd9b6c97731485945bca35da5384fb1c630f6c7d55fcc0f8fb226a42f234d835917bef2d659269f20767017c017d017b572fed138792bfdaeb50a897e689bfa0d47c0d91a579e2d8500c9f6649a24863a22422b0cb73a33963a60c995b981711894fd4b06b8cbb902e2e315b61b4c0dcf05009bf780976e172db763cea73c356bff7e918e757fceb1e5bf32cc98b4fb3bce4e77fdd07abaee3d74b2dd21edf4d0bfbcad296e92864e2d32cef385619b140015316792da9f3596bed25da5bdfbedbeb3f7e8f526b6badb512ebdf7abdfedffbefb5664ba98c15d6beae65be52f7cfb45a100066baaf9668ebebdcddbf5a5b5f47aba595d277eab57e7d21098b7d0ca8f4211289466f6fd60efbc06645ff55099777f6894cb763b393ba6961df19454d7bc9d2bc2549a442197e1c8b50aabbf566255b935bed5bbf6ffdaf4af3b4becbe03489384af737c57777c7cee202b564b9f76661b9f7fe9cd22b56aa60652a53b2941ce56edd41d74586722f313fa1744576929b642679495692af72927b913875eacb4728d5ca56d9482e9289e421f5de9b850463ec7b8947f6ef61cbcd88a31a1d43d3ae4002ba69e11e153e10aaaafdfcf7a3bfea5542f4e99a050a98ea2fd59e76fad93910d6cbb1652f599a6e9a278e0d0dc5f0699639ce13e3f3747f313397643513202affe9ff534ae903304d599a183e893e8f555613cc4b6ba2cd2ccd5a6b69ff456e9a332eec313f3359ba975a4ed2ccc9c65ac7b39e9f4386319827cd7d5633391a9599c23dd7c3c5c5653406c8f0da69e7ee5197c43d2db3a2fa575ba42ccaab4795b869e1de99bfcc50df474aabfce22e1220aac43c107665ebd2bb127afdaf632e4986d3164f57d44997c8a3634da262fdf439675ce6a09db2c5b978c9d234f12041810001c0f98f2c673f99a86886731f1ace7c0208c8b818034cd408181de1bcc7862b5000673d48b79c5d49f7c83a0f9e3b76ead0c1e13c67494e667a05b29e4cc1029ce330c00d20e01ca16e9780c79ae9cc8957215042ecf9e2bc866db95c2e57abd572744637f1698e5c3ba3f0edbdf7de7bdfb4360a1d988a68887d22844a87a08da976928e96d44dedbdf7deb5ac1df611f1fead74be9da08d7d3b69b7b7a5e6254bb3ea48bef56d3d62491c6519a066a297c42e599af8344bf26669253f7da5936824fa88b6ca5332126d441719e4421321ea2194eab4d65a6b9d91f874100d44ffd03e740fcd230bf9bcef119efb574efd7f77aa6c53a2c96424927750abfe497bef5a15fa38ea7adae940582fc7de7befbdf7dedac9a3706f63f028afdedb49517b2f18717f2fcd2b4992a490e6314d2cc15a760e3f0d423f2911a82ee1156ba9c75a8775102b4f1cc3270e97cb35355d2bed74b1ce41963b8795e6b9699cb1fd02638d2386f56e08eb1b00b0b621c3ba0651d19e653f45331a0deba80058d3103060870da86da65b8c9a793341a0809191ede8c886f58c02382424ac65dcb200ad93a8900a9d920c601d43096b1807b07e81006b1709b06e81c39ac512d62b987696a360e3de020658ab68e0608b718035540eeb140fb0d641c01a4504ac4f6c097bc2a64e638f6bf3fa12736f8f1fc73a1babdaf70f23d68571c4dafbdfbe876f8a72823c64bd9b16e621051af4c5b484e36dade7409137159c9ac1e28cd7d454d0cade7b63dede5b8f14e611a5002bf2a4783b49eaa68579a5a0e06d879d220f2c6885078614c8cbcb87d713581f3e7bf4e4d17864c0b863a70e9d395a8e461307ce170fa4407af8c6cb4db1d886cd1a30355f69341ade99a0993264bc887a38c604f01faaca56ffdddfec23f30e1d6a88700c753a6c75e8b2928d4e2d796d19826909573507bd1584aada41e90e224ea90b20875b47fbd50cc6d89b62b4e190373d560ec0ecabef2829a5c01951171058041681c05a23659994914512a8620f877b58dffef082de1a471f6381cc5110ba42deafee2147da3195246dad269139dfa0b13c05d1ce9e4f401a5a4350381c8e460d1abfe170589573d6010402e9ad4f8b9a66b03f4c1ac7510a94cd66037a985bedad523a9f80e3d0bfda4bbed35c8ebcc320765847079e4f40ddc525466f85b1566b651918e1172f41dd456371d9b2e424b5030eb5404165c9c2f2bb62a58ac6aaa2029c22250a9427d66a27b22337af33619f24759f43dad3559e6629645ac211c91b8a59a8648d3a3d0f43690080401486811844712056125607946003011a86060f0d058b04048a02a25028280a06c281301908088001a03120100809e3a848cdb3b90353873819a80d62610bdfd6de1792fc6dd328c12d35f1678dd5c26d65b007a428ca55c800a0941209cc57edfd85635ca6363162190e02a81d627654d70c21a6ca782b90ce8f9c05951021f7d4f0c14de4d381e925289850575015c75020b0387ac38d648ba3f6775e1cfce4b073f00809e3a845ffd697081947a549cf38d6ce8f11358e85b03ab571a482e038da1f2bb2c74bcca8298f07b4ab54c6ce79ff43fcb068afbc893ba92e1ac5b1eb6d93a3d65cb90afe10410619e97ee23e6f32abffa77a63fc9ba4c508279fffda8615650be57a8bb47d073127b4620d88294eaa50b9cda0823fa459b18d2a5cffe60165c3d6958fd787553a4a3071c4971d24d0f0ed46d7e37d905ab621dd354c10924061fbf33a1a193c2081c0f87d404744840c83951fe0037ae88031a6f77372dd3a0b1517e7a8058f66ea1bd0f4a760f959f5b39f73b41a63f72f85dc58f3ba6f7afc654ae1a3e9dace15adc7695e4359375520c3bf6d6278f41289472b58afda9eb6951a7bb41bc485f4470eb559a5c57ce0c80bc1a68837fbdbb9880c3b2688c901a2d2314c3c7d47b91e3c38f1b12e736c9d74ba136b5ef8f9045b82c9c63f90c8c1a70b309e36ca70e6b872bd8f536a7c7ce536ce5aa67d0df1519a3c2640fc87d7751fb7abae28199f70ee8d1d5efa847fa5c972605b7090a74b68fdd8aa661d85a92d96c3c7c09c68404681203dfe41e0358c7f8cb4de2be263a8c3ec2e6d275aae58de876169d9924b41bd84e9e1316e35d42cb6924ebcf51f01241bc41b850d87c6c0224b6d9ca081b183917dce87760439d831424edc25cb728828a1172e596341ec912f4165c7d4961dc4613f73e609c4e601b32d22c012cf75259ee175ddf5b2c9145988bb398b3a01bf91e62e55b3e82217277c9341931bcb866c60c868b21807f3d622109a9d71ff51d10df55d379b6f027a2efca1d2536ff6297833f2d10f731c5b83e3e4f9fc216cbc1a6a823b916a32a6b3bc83ef06dbd45ff4e0d90c7aca90634001680bf3be3c5b11ee6ab1c9c714c07a8296760f5f6f9b0e03d4823635109583a16c468f0dca6353eec2919f9f4d7c815594b94b035612ede906ba2ceda038adaff0d7c5f66ab9be82f08a0cd447da545ab0e5b9c1f247e11e995bf30b7c255005ffa26d73fdebcddd8c806ff9e7e8b4e09d88503b2a89f5222505c08dd79f7752120116138df09e2cf693d9b79da835baf538b4ce24e7833d7a23bd2a46f75b68351efd7f9e4423e345793cead365b4451ae734826e2aa959ef73fa641b4f2117c756662c7857bf5694fb3e640708c8370e39ff501df07eb6a713c1b3861e70e97ed52393d2f81d4b82e29a3abcfb3f985c6bdf9a38ff221a00beacb366e79151f463b7db9cec4a5a5ae7eb0bd38f2d932699162733f0d19d44fb98398381cc26e5ac6c50f854fd169dad388330037bbbe1b6d20a815f85b168abeedcb0f292d66c439bb5c47072756e5ed3ee5b79dd864048ea9b082e304f9a10827bf01d6f354cb61d91ac591246cf2088600b7bd832dcbaf41571a2ed55cddbfcd7625a438d8b4992ac4bf768eb909d64ff7472813f881d10a1c3dcfeb546d961f9b7c1c202e7307770f2953a3200b547b4b530fcd70c21a3f74e44c647ed067c943a42bbcb62c5a13efeb76e1096848851207322511c186a4e7b8e1b690a77717ef4d6221216f482051de5705ea7d0b9a9d2dc448297e73145696496d598d8177507e6eea6bb493c1110ec24b9709330f47ef7db3ecd4fc890cf32c250a3f7a5062f7662ba2b37381d559e59928a4189900831467f02088ce8f253dbf209bf0dc9032bacc6d3dd61dc1d90ce5db94e430057fcaecdb63dc1a9c898948c829da39f95abd9b90cc93570e3708a920c4a5d061b3b9ecc2932c2c591b0dedf070614a667b2aa5b52fdf079dc80dfcad3d728902cf216cf8462cb62fbfff3f7db7176eae9081e645a137b2e0af6de113b931a01778a283847629aeb2a18ce91b3a0499ace03f93b8e0ef4392907ff094884b60d05c81a6a37c89050cd5010aaebd1f514dbdc60063eb3de734f8daafad695213901f1ca09ffe79b4f49c2732b93f60ffdb63e7550554f1e056e54ddea49823f951bebc9eb8fb6973330265ac39bbf40a0a17810dbef0ca3e78151e715245330885fbfc3ed90d46070bb9f94365035d4e15186473761c5a360e3eb75fa837a8b5a8f02baa72bb147494aea22bc4749ee5db3257c943030c66a93ece90a832e24edf461842e2447ab7ed23ecacc59777b7aa63a33d4b2eb052978a0851a3f4891199fcb2d9a7853b712598362df42af846eb294414588ca90ca106faae0bb041ccb28704c8076ce944cc6cd0034c18f266ad1c5189886fc570b6d19d7e7068b9488e677440d407d02cc11a7ed4909b909ed87b74ff7ed99c177b3e1e21a34c8b8816c1e99c9b8bd250c81da3a98d9b93bf4fcf38f62f735765baecb1bbcc79df1dca36f0f6990e0407cc370821060e8a78e34365902870a227a441eea489b3d59765fa60d20c2179aff170496907bd17a733370c5c81a8a6cef0cc838cca4d23a8156156580517a8e9dc7ac26654c6a49065294a04a30d3e67848317e47c916891a77ddbde8292a60baa832921ffee9cf52240815ee425bd2ec790216a523ac0725414a19aa87c8708cc09a8b715b9b424db2861642234a2f28d743b8cc41b8758c22fe753b1a82b37371b570f682e0ef4db2ca8efacadaed956ab8d085384b9871ade5095ccaa186ef8362416c9590d8201fb6e59b1fedf15083c0d18e100d9177a2b1b93fbabfa6d7694362fc8cdccfeaf1db35a6917b242cbce95a129cf68d5aa4a81205f788204337770ac7ca9f2187138165b94eba5fc50f72fa1d5efb0ec50c3bd469781b058ab7f2bc18049526abe9d08bd4abf2e1be78c797365543c9785b88e812432432b45441f48d84f2e4976ffb02d159094c2ad4f53a43b1683d83499186c2271a3155a986ba665890aed8af553328d5a15e281a91dba168583c0f857bcc4acd60a9483d46d13678490de89d1f2b3078456fe06e07f9c2a6ce2895ca7aabf907b517c556b2a8b5e91b5927001ac4bbcea83615d5f71156155f103350cc270cf23650cc297775a0d2e84bd307aafe3e0cf6485bbb3a0546a69bf4cda8e4e71119da1fea15575e8af06db5f9ae67ce7affd2a7fa78d8e7fdf4d99e4b29687b3d21c29537f57f73f169a361e15679925ad45f364c1f5fdf81160c9bcd50459db0863a79bb8e427afd42d5436f59536e6f7f0d7f83481d77c9758932f382e3f5eac7f8bca9127b769eca159e90674b9199813b22b3863cb792af230ad412469df09862e5fe2c46851853023489de1015b3fa6181da4e226c63c1746d2e89f6c51ba874e896e4e637010617e095dbf0d26d9523c3938263ba34cab9b955e5ce7742c620c4db6978ab2a086248b1cc4e0e24e601695aa06f6f276b683ccc5ccc40dc4771f6bb54849891a71d6bd9b32c1fd398c23e31da89cd4694102229627e1b2759bc2c0b43d97f31a719a9641551b1ec32c18273cea5e89d01517aec3ff37778d89066877307fda63ed5f26fb5721025f6fe06a24a1a2444c65fd74d68e4d715fb467ad05a99e250fae2bceb6245aa8ddd3d8f328cfbebfca8d87e72ac6507e9b35520452108b20930cc9bbf876fe37a395c79ff35e8afae541fedb4d06ce29f0d953f56afd1714551e9aee52d773c3330ae94d50533a8beb52e9b86c8dfa250cc0c67dce482cf958f00ca7162842a4b85b80bd97d1249ea594912c97187c14579c044e724267ad637d64a9da98b94acf44a5d883729e7cf70935a199e11147421ad8c48e962b33933b47269e4ac870cefe41041fdacf139aaa82a7435b46f9b728c736611087747b2259b41e0e4ea416504c67258cb2adc44b2eac5c9eda7b5afb07cdcb09d3cb6b9249070f61f463bf390e6678b6ae08456410630ca2ee175b576a3332eed7930f4eed65aa93a53f6f8f4503b5af43b3dfe09ac5ef38389d4fc65349e5ec0504e65b23c3f5df9b93395ff34e6b9d838f9763d648b005ee5478b454acdcd549d5029cef839886cd8da9bf8286a9621be3bfeb41d67cde2048664c799260fdd550386a1009684430e613295548f146b891da1116324d3586e11d9731de474ebc7b5428f2b637faaa393c71522782d1e86b183f0d958ab5853498520cb6f4ef117c9bafae7d835538de820cb5a2f03366571954dad49b72e0213e3a88bcb51450a473f8c3b991d138ac6b1c40d60b37a86d3ace37a5ef51a1c70fceabdd8c1e56e23cab8d3e2776e7af11c248e7a14dfdb1e7f6416e758e681f300cf431c9ce01c32ebeaf582738e0d89dfe0fcfc6902d6f9837318cd08ac1fe1dc72418dede2793ae1dc462135d40ae7dbf053d8a88e080bfb616133dae9df902d7a3a676861fd4318d4f9dcb1a7e0b9a8f301c736479a68fdf9334720521a4f4575eebc6be6f3ccc96bbfa734eed9fdf048840685403aceebdcfe5daa39bf1b7d9def5cf319ace2c4e61a62a1c13ba79ccbd4474cb444097e9df2b6398855f67391a62ea4ec8d8db18276fdd6c83c7f9088f4ed0389a6cece0d7eb9cd2461fd4e884190a7186c3adf68fb183c361d3e739c138a0925c473c2cd1172314f2be0679a2a70575acb430a3253e252b5414df2bcc9eb41f76fde29d2eb0e31f1b8fc9d8798baa36711fde661650344d5f9cd03401745f4200997fc6ec1251f09d39dd67a2b99ffcd9bf04f9a8a3c9808b1039c07ad2838a3644a8111149c8d722367594497b74a52f0b026eae92a72242d0557d85c06211c32a04ad0237a215cdcd06184b070a99410ce265c97cc74f572ca3d8e9fb704ecf222a5688a58d7dbef0611f359e3c343b00ddd3b9be7aa76c594e8b146ed7dcff9fb45bf9c4573179dd32f11619210119d41d7c39e182cd634d8c00aa88cb09a7092c55bbe3c38a335b5e4d2502aa97512d6839c2c9070e6e6d6a16bad73737b49bc53ef008fafd2cda3bc36b141f06cd722c1f02ca515dad6d9d15422f7decdd3d0c19ba7740e615ea38e51700ba2e4492720b8cb02e75a2710c660b3ae695abb6ddf1ce1315c4b186d25859f0a61f6fdaaf0c72bc51422a62e00a6616b0b1cb344de1b98433511e974b019931d6cd17d2da25488c83b78b8c45511d5b2cd79f9e1dc584a3fb8e50317753779a86164967361a9e3fdf2dd8d633af13deb8480245e43057adce681f1970b8b5fdf538b73104935ac739e9639b18ba505135bc1eb70f0db10fdb4cda8a637bbd86cb117f11c743ac94b78200b3dc4a811ae25490216910724ad8d2e067c35bb127566d4d07645e2087d4562875a0d04b4517b787fd0972e4d3470d3df6beda9fa9b6b315935fcc9fa610337e7932d0e38fe91ecc49e066c37e8e5b86522b643f199dc6ebd473842c860bd95462b6e4ad636974d9950f2f976c9edfa4fdf3e00d97d7ddb7b0a1620dab761bb98e22eb0ae081f3945323cd7f8b8cb8aab24ab30e01da241bf43e3db3efe645b4812caeeed53643596f9d4319faf979332b254ad0f2f32deaf202b4ae21534be3cc3a5f5a2f1417eee82345eac52f6f21a2406d29994e2718abe502505c14a48c249b7cf005d04fd8d3eb1d61fed695f09b1a5a13f84613463434f7dcf1539f414243ae61b3444e805d1c7f6282c21fa8969b72da2276d7c6ba8117db68041906062694eacc6cd2492b1ad7127db647362e366f1652a9e77181cb37272bc62c9abe7f261f4b153f188d167d4c3808c7e7f449773f3313cbac922f40cb764d8d72563af86ae0e9fb93f90ef52c02b9b2395ee7b31cc7a70d3652923901ef298c2b827f07715de2d5e12214755a60c956a15f9d91508e0e4a8fe6042f0414741b31d6e8b57005de82e760582dc622ad1f719e5bc5fd27a9f3c5b80ae9a71abf2f71885d3af1d0895795f6ecf88c143a3b20a860212ccf091770ae2dc832c2a213ef6356bb22058d4f14250e47807306e8744a579041ef4a4f5e0b37cb50af87d0644421bb79af13bdd4bd6f9ee1cbeb7b9876fb7ebf01d7e2651a1ec5f71a27d4f4524e45fab64f02827a18cc067fe66d52bacb7cf05cbfc2c459878594482583aabf2e517b6a146ba02af1c75413536ae228eecb346c27d8de98a44d6142bf258abc6d00a7f2a11d7cb449122e5ac953496814996f405fd709874a42ac198e504d2e30101022724b324bb90a102099794b862ee3637e5f58ea3a044261d06dc4f81f3a562a10ec053392a8b1143a4aae06a1a6a0e645318d26c3868d42baf7728be5bb7d0224682fce77a461d166b26dd0ee60f8887009181f3ee5a7521a9472f9833a7597afbee54d04ad1559275b708f63eb56da70b330f722f266e5a63fcb46b1eb759842696960181cab97dba8a61bcfa33062038fcef122d08b971984b1d2e4d821b26f26c0e9f58a19d4b092d8696fd3ca009efb06d8975ecd4a4b4ee1994e4a60fcdd4eae84a53a332c8bf38f4ebd441410acb16d44b0ac82665c8ae9ea5ca1050007451ea853535fcc84cb1184f352a11bf2332293f716036e489b222b0a03769b517e13b8ee91ef6734ca78c939425601dd329a5de31ad7724843b9df4f1857b4c4332ffee24a8df63fc8fa9b4b977b1c3bba879120bfb52e06a3dce37f59306bbd3c914cff6da14d88c82fc054af8a0864a29d3a8133c8635a2645f174e7b6108fc6c234ae5b88aa402d0cf57bb5d4a46315be6a6c7df1ba5f6d96197570f224afcfb9c839aa538dc9147414aa3152aa64a6d6a0b73fe23c4c2bd5c529aed991b9aab7cfce14f8150a3e9981299e78ba314bd8c28f7843be53548e1dfa5ec000425d6a04138a5d5a593238960353a2a2dd3599e672f583353a80d57a403a714e65a2630a5d26115628bfcc8a3286ce6335b06f13b20a84a25ef6827ec054ee940fbe412c2350f118d9095e4d6dc0b1c7f1e349ec0f7ba9f89c5bd4a4b6147c252cb85a5315883f0b7526287a4c1e558498ac795c23426b283232f634258570c6c14893f9bab1ef1d2b511cd18ef1f12e90c7decda1125fcc5fe461c44addd1c6df33cd2ca1bcc42cbb2609aa13b9376634b62bb1f4d6a17bba6d7e1dc38c09263d2bbdf3a9dbb86d5fac8c6106d82d56f81ac2996c99c9d81018ef16eb02c7806b2f355d94cfa4f538e547b7c2f21fc291aac2187473cfcbca01642266c1d842cbbe976f8ffdd47de78cd1d9757f322057010aeadd0e6056825cd171b89ccdb9d34bc022a7e154f472022723a9fdeaeaf1b021ae1a4deae70ab083cc1812aff582b9f533dd48750ba00ffff0f017057866a65188208c75654b64b8de25ed108f5db183521216d4bb9b79452a624a50cbd04f4043a05b2f3ba8e7bd9719cf43acfe3b8dce1ced65a6dadb5ab9dadb572b6769de4ea831f8cc2280d69add426ed2cbb2bb8412a95734f87c4e481e65eb39c5ea5772142290272c689aa1b1a614041460e18c258230d1e5bd4d18718f1098a318ae061884184f8230e237a98b2b97107893247f81483e08fae4286c27393e95cceffff774a9d4a6987ee57ebd5d66bed7fadff5f87e4f4a7b3dadfb05bb9d7a1ffd7eb7fadd7fdf55ed8cdee918b5ce42217b97863d7754673c7efe24b7a1db76f68778739f0decd6d6b5f98c0d26260a5e075d360e7742adf7ffe87d4553b5bedfeed9bb3db6da56ff8a494ce49e3749f3eb7cffc5ef1e339e7bcfe533ea5b3daafbb52afd3bf56f0baadd66ff5fab6d6ea1e7b47036f81679c737eb36e14bc9db3b75a6d6fb5bdcce5bcb91ceb30c6b039efbd377c8b670d295de273ce19e38c0900398c353d59f35823a52c9234cb29ef84627810990fc32072598ce66ae7e5c02ee3ecadc2359305069b5676bd84285829a5e1576194d2ec135d4bda12338ae869e4fbc9478072ceb18c24490eda60986589ac89504af22704c0921c809096e5ef8ba11c7a7199e4276a12638c3146ecf1d2af344af32b7380264e72d0147396435bec49ce04e420336dbaa8034a51941c72f1f190c34ddeb490b7fb6a7426921d7d5f64d20de17c77ec9b11693572cf643bf6ed9cbf4826db005ec0b4916cdf775f31c99069d55af0e9b6a10c6b0563ad3454214b389e899554581b4a6268889554580b6b2b3ac234b92937ddfbd9f7668a3a13959be676337c46a70fd314034de98873cf28e7947bca39639805141944c0c422c80a59ecc9ec657b9cd0016a134c7405e098744358965fdf02f0e2adb66495c32b3400ac2ca495b484421710e010970dcb415104f924298224f6011d39f203f4c5b211244592f80465d8ceb23d374d847a81f973852d255a285341f2640120a4574bac782f801cde2ccbb9e971c784bb4439dfb7401cf9434688ace117a321153fcb4157bcc8d053f89349808492c3a88394ac24924862093b6da4944349d3e5cb6e0809d29ffdb7694e148480bef92aad941273716367140b6b9ddc3b229ed6ed746f6632ebb8fcff7f98c9071e2e0f386348c1b155ba8e6c7fda6e4bef9de1da7b35fd3266cc187730d39fbe41abaddf96e97b63fce97fc0593ab30467e9cc92d492a51cee2ce6b0b594da6b291a1dc75133d75e77e7e36b87e5f4af96debf3497fbd3d176d7ca7b67b839c6c8dd7bd7b8d5aaefbd331af6d7b3e77b93d9d09236430248a1d9de427b33997187d4db71b5bb5d65c3fd6bdd950dee5e5b44e93fa5955a2fe8d35b2ffd6cad95fed3706fa7bf869592525a9d525a642bba78e028a59c302fe73ce58422aa5e7bf1d7fbf4c96ce67ff44646b4f7aec41b95633bf8bedf62a76c511365a7756a2d18cb6efce9f60ff7a6ee2fa34f65324c659552622e6e8a8a8ad640cd663327333a405d136f4d8696903124c08cf6c5d430b95ca2d0638f1e709e38e347124310211280899e31f69c9103070e1c3fecd8b183889e31f94c192f571cbd67cc196392e0043991c51e3770a0b033486844b8a4272c02fce388a590887088d04b28441804a807181502112ae179228921e01be10f76421fa28822ec21ec12f210ee10720993c03d60d4193011382022e021a02160212021e01b5ce024387bce0458629f0c365ba0d4537da8aa027bb728881204d50a5b5e05934c054c0954bd63a0109bdb52054c1a94b3da33d3f8244ea679011b1b053ea0dfdeb8565e88855edd30c8e1945e15c5d504116499404ba6559af49b2d1accf8640369e5688deda80a1b2a361b952a5ad4aa18354d4183668a5115688ca4888912264c94dc4969b5f64bf14cff23a545419f282bd25ea492922d0028b200f06ae537bfe155cbc7eb602feac107210833ca5e3224c208577f24dc120000404889125b28c5cd0635996e4eff264e2659515809e5cedb73cdcab65a29597919bbba56085659700b3de1c857b5020b2dbc0b3ff30bf96a694105545a467a0a6b5504858027f5c6804c2693c9eefd180067ff1e55b0b326da844633451bdefbf4b45f4d3ddc2ae91173cef11e4f1ed6de6f8f322d6f3d10569ff28e0e43a4a91ad3850e1d5ce6a8d0450e3378cc5922838bc5e3a6deaf791186b44488e144bf26e7b8415c4dc5a7c15e301467000104d7e52af1a484189ae35037306dcea55c46155fa0c1455cd31da4b526f9b9babb1b51061d9db46393a4519d4dca39e3d44183829e31cee8f969aed5da7bed93757a7a732fc775dd941e338cefd0b297c33b56ac15eb6a3da5879e16222ed7eba58756d1432895ebf58251289f22f89bfaa4a4e8cf4fa53fb44e02544e8cf4d6c911999ad05ef8bbffd9755149504f770771cba0fe385a82800a3c592ca0fa8f52f6651f73d0290be7d30432493ba2c4885845638aa5787338368a6af6512ee3ac796cb0e14d9a658d315639ed1dada72f6945cc6a4329a5139c8486f2427b82460c4d87da2b67a1e5eb9ff3cafc7ae79677ba167af288b3a038dc65a0509c028b7978dbb812397363d38dac31b6796279c5816287c26832bc4459df7ba5d4d0d9c38e347a80a203e9fa45dae38b37d298a9028aa932f69e5d8909c9888a8c8e3ed8e5f6dd7767d95964fb66a630bade1a037384e381476bddc5410767336f30aef8fef5b2992fcc701165b5aef2d5d3c51b5ec0d8c1220e28a45b6bbd23d2923219f7e8deeb4397768552bbef1f87d49ca7db7cb938a5008e6bb58e8ee4d0f8f30f95cdcb4b6e657311975a35d766bff7b2eee52e77694bf7de7b3b253ee9d3102d1d4f29bf8870e98f204d58bbbb5cb49fab848cca7ef20d45308ab1bbf8aeb8f2cca57910b691572bda96714478b96504f69f41f4e0f20f1f777e007983f38f1e7a76d165ee66cefef54a27f69f0e676fc5d22d97989707b3b1b3957217b7ba1f302fada5b787ccf20ba9a33cc2b3bc693ecfca851b55b57aefe4974dcdffc6668ae9dc5c351eccc5bb63747739dce6c07bb73b37af3f75777f0a7abc35c6f76a3d334078bc577a46e05abdba4f4ae98371dc98a2c9dae0c4707d68ae93dd77b8107f03e3ec47cc398771ae201e958ed35b8594c5a248685d268856ed046965445c775e9aa3fa1fff84c1321c9fd517452e36532482d4fd6e1b278c6ba97b91e87fa40d289ad321266ada38ae893248b87cf9fb7d880df085d10467b54c97d75226e96bd759d1422691e84490a773f81b39cfb970688d833ead56b73854bfa80c6c398a5b460f4a1bfadfe8f14c9b872d298cb590b1828c19cfc32ac3c4512d658ed05226088e935c573b9c5d53190f1acdd9b5ba43fb9c57abeb39d6d985073786166949c8e9728a51546edcb8e9f6b871536da59cbdf91da381d1f0e9f9cabd7bdc75d8bbcec3195f7bafb518db7bafb5d77616e37b3bced20e8919a57e2fa5d1fea57fff7f77f46fb598e370175e2da9ea8a2b6c726694f476bef95ed1229d304bd939ceaf6fef2fa675ca56f4bb9b577b0a1d6dbd9d33e79ba3360e89194dc00e9ad6e466b204132674d887462285c6a11e1daf4c5aa3367aa34f1fe68ab9642e9a30b67b95f2959ab52d926e17f98477d1342a26fc437b96ea465bb1ee6ab569cde6f4445f0e993af48e1a3151539ab50a833d6a6d120dbbc8a40ddcc1e94dcfc7a7ce1992029a6713b5cdeea6a522f9aca627b7d781e1e55ea115968e9ba68bcc820c9a7b8c1bd741c23263e1459d31a89b8fa584d644a11f3a5e3d8b40559957cf246de87aed76a7db6b38d16cb160febefe5446a49aedf674f5b72794b5a289cd974b46dae173c6495fba96e23451195db17334f0b948ffbe7a079a8602244a9175bcd58659dfac4ee756c5f4f55930cdf53b0e67af4a4d8dc5caf9ea56cde97673bd603a6fa4222ae8ed267cd6e03562e4fb39f2939f5c1b6bc9c950504032244c5f1b08c822719e4c5fefbe8c64265de2202236a1cd96c6939250802600d0a069735b02001331b23061d6d8866443ae677a34ae97cb2500136d810cbc12d32f4da7b436398c897093ccaaa14b497572003d5454fe7abd5e9f4b671d6db8b3439e3a3a8395c647973da8a0b93ed000a4979122fb08d04f07babb0d53703e101880b3dcb787ee053b01a0d5ba219ca18a121d5e1d4621176444563288845dcf271d40c54c1a0646c9648e1624c051922648568e8880058b0751067c586846f0023e487aac57b15a1e4894d211e2874429d3fd700086746bcbd57a457945a0249bef85aaea93fc95a87cb299d16cb9f0032f28395012402081040c3c59812003812e24a56cc1304a629960ce2bf156c0ed56ab45d042cad3ba67a99230aaaaace7d36cf990969b54940e6fbef3d311cdc8c86b552c96ebc99ccd5251455866b30c8bb912d0edecb7b905f2b702023da4ae816dc147eb6e07c6a42e88e2b8eff31ef8f6ed8228a02e032bb57fbc16a67354142d83892906b2197ca56e158667a81ca66fe855926a8b9ce0e88a11a6e0b354e014589081b4f6bdc5c359754874c2c1001d34b17294c6d35115272ab71b952a6d6e558cd44ca9d5a618adb119492113858929ca47b5a0b5cb7da0fc92fdca9327d9fd02a2f22a70e807e46c767dad6ba4491127348f05c29210844408ed058748405242cc04a0137e900ea94aaaf22aaf9a877894ab50442873da90597539a1bb650752eebb16dc52e7ca106681965bc02ee4ee851c61c8daf654e76e34a88e60d232de0a2890b2f232ee669142e50aeac038bc23888d361a64cd6af9789d6b858d5cce569bef125ceeb0cd43e457aca4b8a4739847cbe5c144687910a35a3e3e458cf8dca27e8a60a0ecf3e6e353feb28fd474fa32fdbfe1aa66d76a6b6c2047460913931635a1fc65c9d25215680260e521aaf73a549d1eaf7a29dea35098099665ea36a26c53a306df4044e4b755384395adf4b5677500d3c4e68c3262c85892428735b72643926e4df41045bdb9c923e6ce54172e3a88c103870f44a8a078ba124cd541868f2ee8d8632a82283873ccdc0219e3041984384549c144a79026036811ca8da43c451c5104199d07c2e061d82bca948fd7456989894cab8e3c73b469f229b6a7e515e5654ab9ad1aba2025fb8042abaa291f1fe94ead028a3208527a2faff462fe8bcf5096190940a5c995a339670748485b621d2b4806245064c3925b6e6c6fd6dcc6f03262030a44cd07bcceb4dde958fee4500e8157347b6242831780000b04105c89372b0c30f91c45f0258225ce88a816503f0b11f93c4d9f100f2a7bf2017495a90f38bff89374a72e0e1565021c25932b44602e05417da945b4d98c6826d9f003d9e94967b99179a60f72ca4d619f1d4ab7ac72cef9526c91b19151516badda4a5aeb7fad5e6ba53eadc0e1366f73fe3fcd0fd37ff3844d5be5ceb6fe57e12ea5bbd3ffff2c957009116538c5e7fb4f2be570ad95b23095078162b2a9828ce6215aa559b7b5524cf3bf624f99e3b75a3927fd0ca33436db5082840e6ca2d39ae8d446d5fb3fdd524a09c334536badb5d65aa3c75b619f12058b885f31766bc378e74c19f79cb7500b77773ee6cbecd9fda7c5c977d88c860e0a4950b6b7d639d32d249bd5b1b1ee68df6d8cefbe46b55586ecd9f94cb95b6be5b6c8321b6b612ac82e14ce78ca59d25dc7ea760a1d17da4af5948e33b939e978c2b57f9e3b387e4a9f3ac9a94b7777d0b7ac5ea73fc7e5d1f4a59ac8d6534b5f2d98744d391deb743138c8cd126988f1417eb2334e6ca4d640e90006903848a4c9a30c22ccb07990c0c058c22c2ce5bdf776ddbdb1ee3b2eb7a9217a06c9dc3161344d97eb70f656ac6e7737d681d73befb8cbaa75f2da9bcf3961437834dd325657d219fbdbad1267c3589bfd6a6b16a4a254a0f90fc22ad920acd2cfa8df73eaffffb7533ab7d0aeb556a1ffdfffff6f9d8ac3b25babdd9fdf9aac6116f9819c4990ab4a5bebaa246f12de7f68dfce5424e9b70b8ca391ce34eb74ead21f94f427c5b2932057c30c2ecc24221513d1c370a1c5dd95768e920f48bf6c0e4745c4ffbdee51fba87aa0506fff74b5febe2df3da7320b3c80a3270e304850d2971c6db339ae5990ccb76b7bf70a2506df5fdfe53b0c828fa8ab699d3d28e62df7352250bce99e2646f0794da69b1c20e4551baa4a952073ed18357891d9aead312dfae5ebfd2abd494a235415fe9a7280f1c8ba5f4555acd8cfa23815cceabd256627a22f44b721969e7144f245a65bdb4ab63ebdbfad369532ff6c56031581c2ec8b8fff550fa96d2c3695353bbf7caf8f580c24c76c97a8b988dd16aac8c877d3edde774a399a5d5a74e6bc76d1abadd7ac9ede9755cb869fe519066411c83d2190541da871c17ea4972228e13159838652c511b63a46eada57457903e7dfa525a5beba474b55aad586aac8a5647ab3d3a1615c9fb048bed2ca7679f18db526e168bc562ad565177ab8ef577e76eaf56336f9d356b4ecf2dbe3416debf7397c3aebb7a1ffd34ca85c08a603121a201f2e86949fc14a7feb66cce3943a9656a28c7a1d9f2ff93e9e5e5e9c718e39efa91ec116f1ea62d896ab3a230eeb266c3c20bed630231c618676dd6748c31563398b8a9c304ca8dff22ee94b8665444d7b02c244fd0bf57ebeffba762808843ff534a579e4ad21e908e557d88be5e515026a75150a6a128fd3beaf683a64f939584767a83fabd2fd76d500e624794ae98eaee0abe9ab84d3ca69c43c3b426ae1f8f9f92560cd1f73ef1e45cd060e8a4131da98785cca80f09b94c198e39ffb396cd8caed064d3d978d716130ae676ecf8ba247334940c6a1676b3366db2252687b91c0e32ef4ca8cccd76e870123992eeba679d79a782340b229b195d41d28496cd599562ff5649278d4c0646e96bd676d76a1f4fa799467d4ed9ec7e5516775e75c82ce4e436988813addc3013caa595a8c5924d0b257a33423be948b302a94b9a43eeca7a79754399b3e779019e31a8a48c9fba0c0000f36500100e888482b130898214c65124a50fd481c9855d878508e611512c22c6511884510c03412443082000014400024a4153375a946a00c2760d8e71ca40b3c1a4ca428f07e20bfa3133efe5c2c153862127f399a776f34d50fbad1dfe0aaed54c1242ff43929a6aff98614f05bbf3644ba71b4cf1c1ef2508063590440cdd20f3fed601ca7ef68d2e1e6733319a8bc0fcf4e713f71691f4f7b716c7f63d49466c9d16c67aaced0e9f1d5a3ab63fc0d11485fb2043397a9f467b8d6a0ee3ca3e0a36c139d6dc29fa24b03f813fa2f75242f82984d2881674da550886ca8ec956bdd121822f219dc1680b82762c675e1823eec43b2d98153e853f9025210cfb1c8b0684a952b0201922fadddaca9de5a5089a958b138ec36043796e05f103849bc068561c70299a2fdab883bb1158b4d9c1dae2d1bf36c7e3cc104c0695645db94707f58efc490f1d4a6e96c6536fd1934a4acca6bb5948c77488f9243568240e6dd40f298f2b5a3e85f20e480644a22b33fc5afd9c869b9e1fe24ac450dfd069389799869bbcbbab851057756e815016e2861dc8be2afa0260f35a78365a43796def0e86dd1baf0d7b43cc78122301c5b981a52164c027b6cd5dc7d211230c660102bde73aefb321e5a7f405361fedec0178956268a81e798b83cf3a0d5e76769c49a2ec0c15ac1595c9673d0366452d6a0a99e6682ac6232111e1f4c6cf0c0841b8064beb994435597e03952bcbbf5e2c2fee3138127b1d7dbe4a53b10af7023a6acf46220eebda32d43a127f2eef958cff87aa6d45431c689314a0b3cc7b89bd93f039bea1e7fcf933f716bb535e2627dcd5676c9e89d4e606d5dc5c68e4ce3ec60c2879bcb937c44ed388730f32570aa3be775773dff0325ad650f7d63c0beebfcbe430ff8eaf6ea2aa3e4ecd2d1505d680ef7ce8d17d51aa87ede0d4f803068f37a2f159928116162be0fcea190ceff47b3630f37cc147d60c33f6a57fbbeaf0903b8fe47307e5195d4b8b96c381ccaab0de2f943a91c160a5259500752d3c77ded4b2ed23bb0954a673087c4ee67a31b46c2749542266645dd035d77ae58f3dcd91b94d1361f8115630fb2d068842725f0c5d528ef40dbf1cac9bf623455f13af549fa10eddf485b1a1c63326ad06f3c7b17dbe246817fc5ecd7fbd4fad02db773a84a6d843c6e3a1896a550596eb156f74a704a5a9d48f332623080571a3af6b03c4568e6687dfb47f49bad1dd897dc57007aebff32e0e560706796e746a732a665416f4e4a64a517279cb6c212e0bab700c55b93a32fca79582ea7652bb52309fa2ce541a5bbfdfe83b7000ff84978153fa8291cd6dbea768fd038f4a3b2d4bbd177c30bee6e46b9ca362033d26368be3ae48ce38cc8699dc957e2f46c08889beb9f9804ab8a4bed8816d470197b3004319027cd1690e58c372c1db29cb36c68845d6ada73d6584a7d80432600327ca3d643336d85993aa022a5b53b1f9c2649759d0d10d2544c08fbd4b60a06cfd8828e8fd231820738a4c1602a503c0f772a7a1e46ee74071c23a995f8cb26c88f90918080ba747ca7cab748802e2ed7a0de7f247d792b85383d6310533f207ecdf5dcbe98163d9324ae2ba6ff00256df70645be8f38e1dd8a8268d28082b0e0e0d7f18f4b03a3dbef6d61174693230c1030c5662bdd684913a92ee2b9e73af0e3b2a419bd5b14bfcd5fca1bbed3b0116939238870947a977f7b1028f1fc20bb44440de3e2b75f7ee86e2fb5c54aa6344e4a0412616518223284e21c1171db52f0863b155037890fc14d95de4664697d4a00bed240d1ba3ab9ad1dffffa98a40740e0d5c380fb105f6f9bb818ebae5ad76ccd560959d80ec4ceeec8f70dff4dba2a49c73d00d5a08f2e5df814c5e3a6c887c8b131b9e88897902e4c97309e70314319d0362b9b88f19b59f33a1fce6c4b3e892841daa44b444766dc8a842f69e7168b0a3aca78a14acfaf840b75f29d0b787bac3e2c5d4cea67007d9c0999755580fdec11a65504664845294cb0271b1eb732402e59ea7024f62745eb7781c134c68614c7293459332fe02ea9154bbe79292c08d1f9d7e9744fd9b88f7ae6fb23d1000136a9f6fa4e7aec6ee1304bbbba3a48c76d9586849f2df6d39b0503f9d8f0fe14ca0bc0568bc77ae36385a2f55b39591124908ca23bebdf4c2bedca5e02f3492298b7204f000ee4c392cbe25e7753255be7ac0fea7664427fa5cbcc985b848b68218400276d9b00914eb8985da931d60c96958e8cba13ac9c09ba364b9e19dceea3e24ecf94c3565093cbe8584557f62b9cb86351ffeeacc26c595b710d94414d126ff21a1cbade2774106367e51f01e0703dfd198d0f9ee2ad9603df85e300db62588b5059f2d3454c2815aa837405252b56b0b69295155c358f634e0a31804b3304b7cac298d304f6d8a232b6b6a2c60511289585b24758d93aff43702fcd7c7c465c6994cd4f9de5986e075943ca7fa8b2227689faa10ed2a75e15db57781f258f20f23e39a582b2c433cdecf36c1590f667bc8a5a549b2adb5af705b307c5dbf7ef7693afc0038ab575b120cea9cd9fe36391bf0f2b4c3a9192108b946bd1d87435c6d318cdac568353d34b22d0436e927d76711cc57a72d2c6c48a59016666ce90c196c1315c1094588521a281fa0850b4d5a3e71112f234b17e464de95dd4ed988461a2a73b02e8967f9e46e5dcc4b9dc7e155c595962a0b22644e23a6323a6257200407b8255636631bd6f96a2ad313a83f4b2dcf55a23e6668523d982e9fb99dd7c34b25ee3d37214c881e0042977b75c2934ad48f0ef85d58971f13d01f130db91df5925fdb243ea4976e25f981d19befaa2ba484c918c64989daebaba1e428f679b5b4ab855036b9c6fbf69c2251704bfc9879ecaec743dbb2bf3f9804983c6acf76c91bb99a9c564b9454fd4e8532c10adea3744bf492a5168b8eef90423f1b2528960b8bdb0791c5715bc361fd9c3e0fe5e25e3f0c6b193cd0d7c30c49c923589ee013da7c883372bf26b3e8cfd0a8449764416099641f394389dce4027f9491c8c15f476069aca94b7267de1ca9b2a36ab824eee745eb774fd8d258a7e15243c4eb33b82ebb78f3cbb250e4e5deacf5937c35082c4dcbd97ab67d95bce964e3f4775edd96654ca6c1aa1277da74b553f8d3bcf45b170a328cef41674eea97cce9d9e0e9c1a5fb94394c7588b9f7e7ba75958478eed83128fb0fb1c53c6b1b7f7e717a4db2b49a272711b6f6f0b8b2e9637d3b42a0721dea5ddff3db481dce885ea7d7938236bde44f762a463b1f7a53b519a9d75e6858b798eac296ab40129d25093aa895ff86ff17fc2408614d250a39daccd6255af8d94e3763d0ffef3ddbf495ee0f0e61c9676bdadb6211839d8ce7b6dd4ceade24972ab08adf209019db261e35b285b7ea5b0378d5e3950e7162b764c8f10e44a74003c15592f57b5b3ba6831a4ab22f00b382bccf9d4ab1c242cab4e2283441063adf32a8b7a08b23b0ec0a9b0887a94f671d802c688cee5aff94c430f0ad4deee7dc631760c153ca3545e32a80c8e59a2058ca424e18afdbd0fd9db77466b1cb30f77ac502fdcaa3a158f6fe13beef44d7935686000d3234118dcf7f44100a67074356a433e0915111291b1172e176ea4a4c0c478659bb8ba71ba374b29f104bd234b76844144b3a08c3347d570a06f277e3b695adf7d0003113b3b3a819db24b16cd3b215ca22df6e3e2675c71bb73ced70c87a995dcbfbe6630fa511bda9e8bbcdc6d4977cd7880e41ca07f81b058afbba36f92f8ad34da78db0266f9281d3ade3ef706fc24cdc306e1780973d100f8d5f7c024e1dad86a594d3073c0412669fa293ba01d1c0e8a43c5ac836f34289ef5ebf5b5b632812bfae4b2418cd75d6f05d9200adfd149ae4ab9dcff9439bc81a6291f5e881c1f667314b38f9362c367623a64cb7d457b0c8266910afb8e81da751bbc7ef08e36eb1d9d49f68608f8a8b54b1d104281359c8c3495e2c97d197386005a5501ab20ea0f14a0b1d227cbcfdbd415aabca0fe38313532305ee12400b1cb2d6fec98349f8258a0b6f4656a3d815b4b65712ffdbf17e3a7fb97ea276a73916dd9cf6053b6d0e21dc8590ec63784ad70feb5535ecaef7f31c24b5d1f828793ea5dce38f526ef982aa436f064f210f99dc8b03069514fd2c41e3e33f8bf9db72ce17765ad886723674b9830d57c09956f311c76daf6a9c184ab61103a80f0e002064aab84050b47e7a1c965bc0d08c0d86c8cafca0d78ac79e57d4459b38bf556a9e1906ca7dcc4370a2c378262a38e5f54523febac44a8826c4f0d2c5cf03a4c4c7cde2dc927c0ae9ae9d80e81d0a1386d468b5ca7781af50da3a4b79a47e576c9233eadceaa745f91b8b3fc9ccdf0f18f120fc47653a64c535ddabde67ecfd6364b71e4029a8d4bad7421c835da728a4c9b76fb0adabc65a109cd2fa3db373e8a2aadd9d5c07f2a5590116fb8c27908eedd614c073039f680fa23b5d6cdd8bfeeabbd383d0941dcf7eff3f68003393b6ecf68aa91d6bfb6683f81fbdcf59348381d92b243e69e79aeefd5dab77d7161dfff6a167c48554692e6da441e2eaebe1bb0a5ac8b671a376b6c33521fc0b9c03c00e7af4d7f60ced3abc51ca235c3d01e8aa639bc0a7ec80a11cf89208a30b62c881eb76ead06cb4e9644ca505ed9801c647d63bb274d2a325e9d1c3ddd983fbeca98f76e3db8ad1d0161a15b3d7ff1c30ab4eafc288829dfedbec1bb870f6c62a1f964c5848f985d125c2cb41551a00b4649e1c98cf972aba1b760e13eab2b5429e3b00845267c6b3a5614e3ca81fecb75ac9bd95800ecdd555ef80c2adf173dc020904c8954127f50fe9eeab97865016f263ff8af351e86893a48c0447eb546cfb0ec3db6f912b3450138a69a90b8b6940f6fcffe57cbd65433172cd8b3cd504974ce594ffdab249a224fdf340ae2ad16139c742a3a076a10ffe4eb56fc5b917b2a84c4d64fd44912ca4e49d928f6b047769cf64fa401864e1c3889f41bc2f074771d70a0351c42ef0faaac12b2ce5ad08d96d322fee46ddab218d2864e9fe9cba26320c9e8fb133c5f0262bdc394f11462deeb4ca9306285cc7b65bc6e3db432eb49636125e9e019238b8e33d832f47e31269442b0b9115aa1cf6ab413ad70a5be2580be526b857a22962492eadb72080b8f36e1954615f2480d7ed8647fc5c012b58f81e62d0d68ae238c2b1912e4cc88b9fd8d4d3caf568252f6b047cd2ed1066899b5dcc37ea676a5ce4bf26487676d37615d99f0046c37a9819fb1ffd2c1b2734df3de09ceedb8973ac2effb61cee8b01c4930023745b4a3a38ee319df530f1eba33d6ed8b21c310707c0d2ef167aa0690eb89f3e70d4279f157049c73389d3ae9ab9db35ef18bedd18654f3d1c6680fba007b759e96f85bfc0c981e719d7912db696454a22d2df1d897c8f63361227f776203f985ab918879df481b099b2d9016160f2129cabbc5998f9ff48fd00a91f0e6ff19dbaad4b001ea2f891a627d06a11fbf494f33aa567328d2ae40405a31cf1ad0cd60280550e7b0d135b68d3c43caa80d791594c4a011d134ba0d97c708dc591823117ca4ad89c1c9460af3c88367f87950f8ad47a5b1285e87ef03a9dd54ebfd83c54319c46c579b618645b23ffe4eea7f4218873ccb353d3c623eea973c03aa2498967840c03d4d818b1d4260f48592795b52b6139640bce53bd7f192e033353e73a316dc35671743493d34482453eaa5dbca6272b324d145a54d52a2ab9f9edc0955ad44fa241fb7794c744b4f3716c978df4bddd4d191c831ad03c8346e5a26e04eccb683a36690aa9badf13280402e814c3fad4667ab280439bd2be129cc1515afc60b9ce4260d65f71792282bd188af30e09bb5dfb6bdc8cee5d650015fe5553ef0b087080b410f8f9940de1477248dc4ab66ea37a134e585e632c1f5ad2bb20398ff05e8a73779dc00291294e63bb31be025f03ba834b97ca87551ee43da6bf8a265d427775af1ff5be07850c1eff9800a2fdcf76f9e0bcc1dd5cdf1353e196a5f5ee9985700f7c6c85cc4f2539338c69f026e8c668deff2835f9f8c288f7767e7945bb8ef79be18a8c25b6c4c8217740164a6dc6492c35e142fcf2d54a2154ab429f3c2040d0c8680c52b0fb2462684ea154a8cf796edcb5ac4693609370d03f8817589373f628fe32cdf14830a397367ef4b522dff22a69eaa54aef7c1683c61b8396662f02240c4f59ca9ea0f57b8fc950f5c336f528c0cd122c785b8debdca670524fd355b2f82d9e2b9db32d8a392e5e414fa17707a2e7defc45018966da0cf160f11b54b536406c070153c0704a9a517ecfdd50e7050cd2275c5831a86d24c6634f47fcad4321eb8c5a54c4ae13f1f5744d483b115051a4effc07a2fa62ec88b30c14e61e4c8071404e72005467fd7abb10a620070987538a273cb89eb94958223fbcd4bd0791382f175bb9bae633766492873a207f2a97156ebc73c3fd6470144e7aad829a795dbbfe41b3c1246ec121f48e3e63a2acf0cdfd112aa9d6581872028dc62854bcdc40565f2b2eade662d33ce18294175abfb00d7e0f4e260ae868f0547e309dc40cef7e1201cf10db12dc3c909c0ae1ed4c766631752626b1278c0cf8957c797fa2caaf69c224baf92b1a308d27dc8d2c62eb050f5ed797b4f07dd32957e8a90bc1218fb64bdb34c81951a54de8a66f967fca17e786ba7ba22f4fdfdbd434e4986c5274b1a115eff196ea3e5410c5653089fefcfe529efdddc07e804116295a11d4054b879e6dffbe22760241275b07aaaf1c9b9a9f10de76929a0b29e9bd3976e11f7a69f05d2d948b4ddc94ac09661506c70b5bc0e24b093e3519f97e3619345788715151f58c500b6b58e931f1608d2d60aba5e85ba2c9fcb222b912a34b6f0105f4d9c54599853871894a2d1ea9b3247c7a4baa70823a915741f749b62fe8ddd7a67f67eebb1843c6e07d7d4ff8bad29305786a04720d48ec5819eb1daa8c557a3299f6a9cb15b2cab644adc53f7ae947e26d82da064a83f42f00a9679a0915e89a3cce1c14ecc308234369b63248ab28c5942e63eba70a686cb373212f90199c00a126a22d0511f1ea4c6dd7ba5b07b1eafdb12b7be6756ef3e404fa722a8f35b7217820929718b84650930fa0ea49b32eaeeae15b6b620c9f89bec778ccbe24820d08a155601b65f39b99865d3c55320690143e5e2ec91719f471096e7b860e765c3f5902282f4f8b15ac1e6b9a39c7b0359b5593a6fa059b830c24cc0252fc27bd3633bbaf1deb0fedfa1dd18f82d5fcb55174e9761c3f14dbb77e56aba40754ce19052734c6e25628a98185916c6c2da3bdf64ac634e8aae05f65c471620f70879cc9bbb9508ccbdd600c0efaca9ff95a9724b60bd4b9da85f506c54438cf438f1eb55a8b33816f8b7e2bb79d7f0f75f58e4184e2510661fb6763587c86f744dde1d681864175df3c1c604e395cf8606269e852a93afc0657b31461e433390e14562f67dab0a61eff54fd4ff8efd094d1757907ed7fa4bccb61725a25dc43323c05810036bca5fcfe5d2ab6afc514702bb98d330f2fea5a9f95237f1f5dd79d926be59badbd8c4773dffb7ac892f97601de1133d67ad3298d9a96024502f9cb88dee3c83c056248c873abd5da3851c3db85a26ecd401d7b6bc0ea436d875a7d6f65d044868bd56b8bd2439bfcceae493fab553098febc88dd1999b7a7a632d0fd64d3a073195472476aae160d62c15bc4c798f9ed2f2e975474c94751f41c55feeba47c998812285d6a27d33406431120a08f2135a1150b18e6222bb03e5851626af7c83bab42d4fed3f17e647a8733623f3c49a5c1e2e437982310918ef0d5b2b126ce1047c7505a80f6220dd7d2d287b2a62fd80794ba053f72b5d2855a033ba59a98432a2d090c04e922740174196d0b36ab087dc210247420bd2736667bfeda7e0d5f5e7e490740cde473da99a30a954f92d937b95148cbad01ecd7d731ce80c90555d72cdd7064b184674abf24de8c4c4fc9e163e0d27ad3c2ad3425841887516abc90c89e51078a6d055927a92ed37558014d82fa8e3da107474c41cc836e3b88518af4d174497ecdb309d02b3564046afbb2e561139cdf4b56106c77ed1fcbdd8b3cc3d7ef0c0f6451b9b310b94f5bbd912b06eaa814b658c86a791f7c9e5a0265dabedcfdbb99d23132722ec60fda9f5440c8da7551d2713ac25b2fe21703eb6ba16a86fad002efe4762d777467771cf97bf5b40920b6cf95702af072d7d63ea02fe1baa137d3dd466657ff374883c0eb5459594ab212a6d80ee1944ce3f7725c49911a85019d08c80c9f2f2e96479af3e53881d79589480846cbe5cb4f51cd24a280d5b863308a1c816c6ec78fa11605910a276aed0b1e6fdf8ba21fd0186be1dcb88aebd7ec12f7791a9dbefff8e5fbf0082def552a2c6f673a5c0a4a0cd55f11d1a7c6ddebc42b770e30b350cd064133e1f70718a339fca380b4b561394d4b2fff6f37ee9e6001ac98074a88095e9577b6444861f64cbc6f4cfe2deedbc0ea96038cbcf040dfc2a22e77142fcb62951b8d959340910bf7b3da3aa9cb85eac9cd05103340f88273c939118ec4bde26adcae46cb85774b54c7e0db83bb5353e71c902090b3fbca079d4a76b10b26e1284a119a587b397a6eaf78e8b6049898367713f7385285ea8306d49948ecf524258f6a06a8c85994bd4d088fcc4f4b1cab4af3be75051456929967e8bdbebf486eb9bcacba592a2a267fcb4687eb05e72065d50e738618ca92697b45e77726bd6204e136735386342c77f7ab2a5391eea9605f278f02c1f8815fa2bb6951b3835201f9b24cce3175741d198b533249a99df89e6360ce6ff0a0787e0c20030e10b79574f7d2d7d8361e93451c1ff61353a1cbf289617f210d6c499597dbd7f3b5afa66ae56bfac557593169efc9e862b75824423163e724190a7b8e5a64ca682363690cf7078befd41ce9b9d72e10fe43bc512dd20e340956277d38fa78b06f53698167659f2d902e9b940dcd395ec0742bc67da3be5127d1184af7dd76521e37c130bcb18260c09077bc0501bf75c1d04d36ba76a86109ab8f88e1b6889bd7e651e3d461db0f03a9e65f727dddc73eb316b2fe248b2b79fa6b3a3fe7883064a7dc432ccc55938bcfbb619772fa780bfd1cb0b22158a55a67ea3cbe580c6159ca9fe45cfe09b6f7bd9e7757d0ecca2ffa6234725d1b4e6851bb42514b19b0ff8079ea6ca10ddc63d414262cbbfb886626b692b164e014026942fa44113faafc4e071e01b6d8a55ff6c7a1e39f52bb7a744b08c4dcd0bae08efcb5722d2df5f2597c63db42220a02a6fed55acbe42b6d9f5063f233b9fb7bc424b6b92b254c53d7fb50b0fc1e14b5d86f30726ab4ed044f3647d3fa88b7bbbd57a310cb0c8b761f5fafa150958ba47bb5fa24ca377b12e09ca70bffe620867457579711774b196c2ed8bd38082d9a1f1bff974d1f3442e1d9e2547f28e30c1630f5afae2cec1a319f68b7ba1fc1dd0e79d12c38a3a2c55b8dac0fe902da0b77f63975028355d6d532a348d2bb4ca8aaade2c2d89e01d8e4995a850a9221d9ca5b01d5b52fd704e42c4b6509364b19a5055332d2ec5d16f0dfcb8dd8d64f27bea27c2becd9b71db4c4aa8f73326c0644418a040c1cfa2d3dd05046d785358cbf236393024fe45937cc56ef88aa852a7b2eef60bdec03c7efcb6dd5ed98657540a0512833119cbf051464ecc6fbcfcef837b8059878a67989e9eea4991e7b74b64a030bb8c9cf144dc7a348820049be80117c4346cda81fa6da86110e509ab9ef4c8a752bac408d6dba4c13dee116720924c9c835f1a68f3a391db41eb9162588c9cf9065d18f993f3497ef103326ab39cf636186ead6343b1980c085eed224ac1bc2dd8e05a89451c68442f629ebc26e51758244f51ca5002b4f3dfe704c63b004ecc001e10273202850df7561b15ab5772000dcc9b87d575e438726e8ef30d6d50840a620627e257e149bc775e8cdf46ec340bd14d195c32c519c17d9ffbdd53293f5b323d293926f7be6f2adc796b28640639f7a3c5dcf0484cb97882729d2a33e829aeddd502d7bf92021134a51750c1817940dd25dc49cf63d3a66b0ed117d9a56509ff11319b8f30323a73f4d83d2098d52699089c9263d285a27cd63f1f2638c3e1394d297a6639d0341c8634a158bd75f8e5615a248770a198e82c484e3a3ecaec0c4f68ee4673c9f616e80cd8c54fa6a9116c7c9366e8d361dd2eb65566587839d7b64d2ce3f29d29fcee8e3e0bef8bded26bd204074e4cb7e2ad6dfba2ef9176bc8b7902a0d9f6b3ba4593fc92c6a35210add58e069f0143690dd8f3d8425c78c903e8c249b9eec685aa118ff03a83e31862031a5f5840b6149a9bb075e136045b3802bb881dce4c184d1ccabbc0dbc341409621502e7c9f657df90911fa118b4ca9562d938917f8315e9d0c3e8259530693fd5334ce0de72f568c005eae08e807306e705a95074aa68f29ce4f8df01f1c2ffc13944ecd641d34d0111f0ed68ceef995d2e1a715f692de7ad1f4e56f8659dee154a4c96bf1a66972ba51351a71e30ff0c48252e6f688946c0612c5d5f4404219839357e5719cfbe22a8c09d66d1d2b67f1ffc83f4e513b950eb2b85f7740a279eaf652850cbac52d0380adbcf2768b3163e2ad5626f096c064c49669aef48ade72ed3fac561ee9843848bb1de195e6c84ca78ab54bb37c52f8d0dd3998938028cade4c0e713a887b9ef2f010475d9b49214a03b1cfa90f0f7194bd9d9c1027d3d68375b11a523469bc2411a84609ff3fa13f9ad18213d0083d0c7014ca8071852bf096c0a1bca3a5d53cf2197dadf8d4ce363d75cf0fc56c944019a1351ddd69b7c1ce2988de67e5528780ce75f0ba0bc15babd817fcc1b130af7b592134d40bc02968484c589ed234f911dfd7c8e0432f60aee82796f62f01f777d2d886e993681dd142cb97b1548506682fac0d9deeb5f11751dc6a1894d51a2a304483d6350d56cc4e8c4e4aa717d6a10b3d651d437d4e8ca86b4085bdd8df053ce6750c77032a40e85356a0f12d815c097d30ffbe55c7aaa7a8f84c1d5f36533b4288e31fb389caab30a381f0b050146a429812080202cf904a1634064958e8efd4c82d1a9ff48ccaf484824082d847df30196d0e7cc1248ae535d193e4ca2274d10ea6d49c5fcb8207d09529332e0dd6290e9439fc4dc550e4cba7a814ea85983a8be5eee1a4296bd65f9bc865a448cabf74049ff46e932b2b475bbad8223da6cf3b901aa6fcd0d3f113978bec634adc5aa7c93e7359f911fbc68e29b960e371f4d14f5e261ff6463bcb43db008576d037d1b9a6e95918ef8b692e9741c8742e3db082e0c68f3b4edbaad60a9c08bf85d239871104ffa1aa1661ee240c3c6e45200764349f4b93042cc21524f11d3fba9d448b2800fee04f1a3fc4082886b49c94b434ba216db6bb20ccaab40c896d82b2d053c687cde797fbbb25139196cdf3422f5a7e713a6358854de1645ad9c179a9752bcdbd969ec304470656c7da9299945770d454b24692469c297a6dd241d7df294ea80c58388b434a3ec2122f9637c4eda40638c71f1a90aa99e708c2623f9d5c8a641e580c4184952be14e15544a4b9b77fd9f5b2934c45cbf32ff9346526839bb7e5216cc74c2273b4a1c104d5a0228581bea3d52e2f4cfa5d260ce9dd65e3b778266e9fa7a701928b6aeac54ec697c1ff5105585623c13c4fa852c6b38669b98d699b8e97b7040f71d2d06b65591ab0353031b8fd0fea354683abc5f09c2bc23e9ea4f413813974315d423549b33ba1a697a334aa2b5006e7205860e38d6af2bfdbfb89fe3c0fa02f8fa7e6f51dc1f520df06be694569527c89fe9225360892a68f917a3c385c719db4e1909618c2389410aff156593ed0c0f406b93ee37f7a654b7f53887c7384b7884e36c9e819b9e0e0ed970cd830427cb8885c38d7d4fb71b2b924e716e39cbd35968591c7802af1e9a685f79aa7a612df0ce3bc6e055ce03533adf0377d1fe6474d09c810714a66c9c74b3dad8f04151f23d2a04800f105eb42bf3aaf1be80e9a9a76490be17c4c5678e7ba7ba725739bc1fd730289aa82c847efbbe72df4e6dfb7da92d8ed615928e1805b3c9f0cddcc521ccd79096af2ad2bc80c16a5534744d90f099840e5f86c0b2e8763a04dc371e14d541f9cff95622bfb107111ae505c0ff08e1234f34e37af88874509640423048e2b04a760516e2cd1fc63b3e29a6f3031ef6b93a8cd0078a0b196376927cb6ae0bf63d91c60e993e453202c333c29478fe8990180122f8050aae516144fac5d4c7bfcea65b271134690dea030d0af8e41e616e389fbd23b2f6a6d46fa04eacf5de6ba3f6c24273128848700b6d52b5a58ca8d8d9fcd803139e782163b857730fe2342a7cc6cc72904b13dea608f7530c4b4f5f023c81e1d32470daece44bf9817c1b7a08e87326576fb553f4709431e7b776ecb0a2e461c21416370e0b6b6d1b9e29c1550ee9b2846d6a1ba126d0a0d7595bb2cd6c9105eebc265e2f3aaae44d0c0647eb5aff10c5a2912e2ff0cf6a4f77c071fd5be4179270f62b91e36f7a7c7d80af81ff107f832b3c99071124608b5c0f35c804d530cf75600c0e29c88043261cb4e8dc4cbb881d71e568459726645dce0614c7d593eb884d64e169328fb32145c87074dc0b3c1d60d45ac937411129c8b134269d78d9cbe228dee374f73deb26e0064fbee2ced15cf6a61f8525c77aff4f1722f142c76c8e08e502894965817e48cd0a7570a134ca6c25ad45aff867ed5345b064182cdcf83686c92d3d2e2524bc68d02e6c6ca75c5d3861c9731309f0f0194550bea453bb5d3bd9c22b9957f6446a147958d965e40e2af70c2d8b325d27a2b60cea678fb48552c6dd237b93b156ef759cd0a48df59581d58968abe0828f9b518d9bf155357cc426a0740a81ad16ee60fe0d2a331e413fcdae5c3f02905ae4448f3fea3c62cb0f8af14f1dd58309f1bdcf5c96d09f1a03f32f07ae042feadd0479e418e2468db9bb2016ef7501dbbf0e742576aee65461ec4eecc2c5883ac4d377f0860e3cd25b1d01dc9c87e089bc75ceb1ea3bc79803b28b22864c3972400f77e7373001127075b0bbfe2805920b2309104fd11aa421b61f63cc530c07a2294a8334c4b631d62cd570209aaab5c817e26e7c2b442cd6791d7852b9693d63e8aad2276671df59ac18584da8179aa7ab6d3129e88afcb3d7d56cd9f3a0c0dccffb9ed3e53226f0458549e37a9bebf769fee6ee0554177e594c5cfb8a1b4aa31f62c28a09498f527e59131e83c3ffd743d7afda81c445cc0792ab8d56d87e759b1565060fe331d11240625fccc070b718da4e98c740c741972069497775aa911e3749fe6f7b0001fa2d494f8a7a92e52912f23d2d3bed9e49eeea3f483d99d69abca9d7f2006e1f7ab9dd852a864053a3a36fac89abfe2df19d60ea3f7e61ffdb89b32bd3f42c3547093ed06f8bec7f1c8b028f0753feb176875424461198f7549525de0d1eb900fbd5360f7b7de202546f3ddcad101a98d362945b181f157c0b01ee5de185deee65c53042114d9a12b3b48f965fde14b189c4d731eae465411669dc49409768765fdaac2ee4f6ba8b83e04658eea9de9c834945a5332cb51602572d680c256dbdab7b1bcb1b05b31fbf2da2c2c5e6b4958ef8118f2767aba5cb1f79bd531678244d8ba084e680bc4f63c83f48543cb48b67dd79af3398ea49ad06942b695f27f464b11aa899fe96aefbdd7a60132765b7e8b3c916456180684869aa906dc9cac18a29c3b8498d29816bd2c113ad14fde8c004cec8eda298e947758320e2d3b9abec9d912bb14f12f3e2d4c4003a8ff88e43a5becf821588a066135aa821136090ed80ce717d0015b91ca1a8978c9f064e5eec0feeacc60f408c28fffd2e93eca48e5d258733c0fd16e813438cbbf8770225dbe55b2598219481a719f15e08d6120863894d2dc8265bc4b62c30eafd0fb0477b3bea874d0e624cdb613e00c63a1b77a38a167c9ff658cf73d9744b5d94880e54a4230cc6b40d13b80fb0a47960926ea496196f44b13586593f8520de0a8cd7b566aa258a87c098e6bb9125c44ca21490105d4c731a8011a300f60f2324cd0cd5c4e46d18dae80b4be2cfaa99cd04819362f03c283283101613bc5601aef96fcf7119fa4275da5ae3d30288451ce5588c6fa8d60322e39cd2a8a13661570ef289c61bb321df7278fb6ab655750934232d9ba677de7960016f84dca9bc18b596d8c4a6110097529f80a78733712b3974ffdb8e93dfaaf6572863c8ea3388f60949f75cca9f719fef64d59261b71452dce8668ad1f04ccedafb01183fe6ef2787b6ba98eddf00fe6d96bbc9e1ddf33313c7325dc3bf1a3c720d9a13fcafd24693996f3cccd4470e04f04e13c2cf966017cca01c71d04480cbcd37306778319d51d75b650cbd84813f109727d1ff357b67cad455af07b544e845633e41ccf209458c113038c77af22c675d3a7f17f893d54ab17afe3f1ced056758a141295735dcf39b3b5520686c824784c060397665aef9c07d34d8459ecebf0f2e7ab852065c548eee18deef02ee4ca720fba8d8ac2b00a2df4d34fa02d496ed2b4108bad24661c93f9cd6afbdcb86e23e9f698e738c3a8e2b9fc54931c3c572a934fbe580f0f9ff79ba57de98965863229fbeca97ecc11bf0bd8ac424f4c244243c96e6b617cc9bd8a361369c97aec9c01b4abaa8bc69dfe324575cde1988c2084b657c15904cf0d68fd2c164e427947ab881b62c3a5907869d09e6b56cfad8d1c452ad68fe4d1462917a59c1aa9455d6ccbd569f87f66bb1bc3cf158da96e5695be0297e37ec59c42a5102228a60a68a470ad812ed038cbf97e86ebb118261336e79d00e5218937e11f5b9de3e15851b592ba52c1213e83b32b2a59e9ebb74196968673a2c2937f98a930eca32a8fad385f3faeb943309b948fe223dc396a61694e6209c240743138d7ac90b4c9cda526df253b30969b61e2b37449d8df63e5ec6d3aa9ceca4a2097e43e8f5e50b363345c6a22e2c08c5ed2a5c334757fa56149e4cd1a35d0d13bed8971f05f256dd29aeffb82b32d0852561bd7a9b3f967ebac7f4d38ac7cbe96c0a5c0a74bdb872ad8fc4dca5ac73fa9d922b08ee795f410c4a579e90433a90592e8d4ccc01b971cb37eb3621d24d008378a11dfffb67276059f85f0cba710b11e209eb4a4ef557eaa2faba2afed6f8917a1501bf2196884fe6eecb5ba22fbf51d7c6cda2aefea2b73983e703b07d8704aa0daa7520d086ca2578c420e5521441ead7e3b605ac179ccde9bd06266fe34c20140bf3ba5afdb8eca4091949009f2d99b06a7e6a019a097be0b8c912ca4e40af0cf11d847413923e746a09993d1cea389f81dc009cc4df7a28cae6988136785c560419ce76195e1c4b84a197ee6118581cece61bb5eb8afef498944542f69ff0b622e3591045c288aee2df33ba00ac4fed2f6ffefe12591dcd9df256fdc3bf81ab5772afa1aa3199467b278e555195302d87a0550787e135240b3eb71041b909f4a5cdee5ce1b69741e58dcdc114e4053dad5cbd5cf9d4579137988d1c8336dc9706c08d9711fca48b5ef4ec12259e8beb20a9707cea5dd3934e3ed8093d854dfb39f410d08c1cbc15d914dca54822f793a232bd367e9999553fdf5a801e3046a95455d1670084e1dbd78725133a28eb31dc930212c3256607728f29ccfef56c0f21c91dee45d2fb2e7b22074426d979cfe42b73c3eb84bde2a80304b5e4dc2210adba53e7c86594f5d68acf24ee0ec0176be5992dda2be891036e91f0a5895e1ae05b9ae84c60b99f56bb30365b38176908cca5922dd244891882392ff648b77af9db809ad02cb64712a429e8fd24c73938afea88d5d2d5ff10442c1c43c920f50a732f9e12abf6c72567b69227b129633fe04e8fa6e2d9d5fa979128b4018cb43232557a1447d8e261ed88169a801133c9d3e4f859e3503fcb527c106208be3383460681ab03f89ec4c8a58821998c6ecc2cd713908434506b0e61118001038145af0c47eee880bd4737e3b36e7b93b12081c91c559fe0b3ddd78ff708a5454bf1c7d35f8b890fc08a6999c332ac90a6e6258a00d703e6a51a34e6f97a44780a64234a8a6696c9cb38fab574c2d10f6f4dd93386c00edf6d42882ce11a5c6ed3a41f31609e3379644f2a2045825365371feb6891784baefa46eb8ae4083817c6d4a16e98f83ea8011811f823f16b9e08803853d72a4a8616bdac3bec5a0d9dfc1b5a3883dc6bd0d9054fd1f90f60ae2978a19bdb400ab14af6c550d75dc741f823d3a286df2fd225051220b4a2ee523b67aad2446d25c6fd58bc21ac92a6cdb2e6d84d8afb4a79b51d09152ce1965b0653d255604dee0c5d7882fc1db6397ab50db18ceb4d08e3ed72e3d35e96a4dd6250eb38fcaa5d944d3a230e5c072380ce93e2ba2c10a59c68a214fc96a08b0f797a1f3640bfc1cbdb0fff96ec053b1fd9e2b2fe194b297e3b03d9e9916b91088ef8ae853ad856343851935e5464ee2ce54562984c43f50a9c6840e7d79cb63ef38e8561765cbb8f205a15609af59e02852c85981064f9cf1172db3ab558789373557a18688732a1a5fc1932fd6c11a0d02f6d69444f6c176af91f549cbf381942be97bc8e141daced4891893bc66ba0a9d8a6e4337f3566026834e578c93fb2715c741ca4e8d4fdfd9888227e1b29e27485564030c049aa8ea60abef98f77f88cce2c7cfa1445cd26cb4be0a2511c6e22846da4b8a56acd86c8298a11b60e5c0296a7a58bbaaf358486546631595469a5ef28a49a02fc046bfadd60bd4a3136f3163dd97f4c4522de3d4b033d9f1129424bd657e73885ea72b3170e08ed2cfa86bf72a22127185a3bab7883f071f65b877030f1e48a1659d6240dfb2a135bf9a4c13193ba3ad486d2d670ffc97874b5c46c3d3c7feb6c88e36c514842cce17ba8dc5b98cf1a92312a5127a854987d87e65744f396a27b6ff4349a6a6d93b261986ade7fe882f7921aa524ca377b6cdce86d4ffd48b901f9e68dc0e87a4808a5e9a23634c6107f98b46261b76004ec4f5ee63490bd0ef33c8c5ee8c36fad1ef5690a4ed0229eb13e26091827a03a86cb26468c2978a0fa22a190cfbc404a77bc6c25b4c864031dc1a33bc2a2b38b6376d3ec268cf63668cc668868ac2cf086c44578aad8e8bb6cc555ddf0251246d1d70588ab6fa52542163aebcef763a597a059490d0eaf05d9c4104271a0f985285c4cd0cbe11171deb7ec7319d238c000b7525102706c19d687a42f0b3c690a0ee54be4bec5eb1b4250a50f50699fce91d7c47b3788388f00a9c9a18370b0639c260c8e78a52b5aa73b106b3046f79e81a02e85e5423164cdf9d487ee3e69a6c617fdfc2f8b5a1be1640311a0f8080b6a861be864e1fe3cc2ab93cb343b4bfb3648fd921b85c844b6360420a7427de3ee50cb08b36acdf875a0d4e01d97e81c9790f4e60cb1ffd7cc436881cb89c9773ba2f5efb9383bc2e94c3708425a16caa0a29e3aacd6199dce0e3e430a45a811865c9dcdfde20e14cee647e30d5a78418613b6e97e1a6d1a76fe5d54b370a4c24e78c440edb884d1c622577ca3c57c9cdb4bf8fd30d54c7415711e3cea90bdc54662a154c2b67c1b48c35272ffc415519542ad9d9dceca29873d56f0eb8424fa5e87dc3947344645ce6bc1629c84da96140a223866f64bde0d578031bb18f8da7960159abea04ab24c25c2c0a14a3b47e9bf427180b2d013bbf5cf55ac029c72c0040eade2548687eb42d3ad9619912246672fa3d42b5b0c05d6e9a5bf6691d96b56ea1a97cfb2e08eb595c476e009d92ae553f46d660b827833ff8d2b71d45634ad87096a9044f2cbab2d4f01e054e208c6b85c4117c37d8e5940eb8ee81488bd47f9970663e4acffba85730043b41903131b640c0c4f3c9c43cfa5059ec9d9340355119dfcabea2e6a9042ba3fcac3022886baf8f3eb9d681032ca39a8ab4b5b26cc933126582485a3bb3528bac52f68025b40943db16498a7290f24f53438a2246df732604c81e2667b7a6bca49ef782eae8c6772a20cc58990efc8c6662618fe4e1fa8623876e5f72a7fe1a905a0109be05d735f00de3479a98c83b0e5407eb2bac925bf65fa03632164a8b382afa49109e672141b6b61206606973dd14f2983bb0fbab7bf05dd24a475e7416bbbaf63397f0b2253e853b5158dbd8143fdbfe8c828266542a183befde9d9d59e007aab73289120bf3db8c136714b9caf50f2fbe1422e2d006862500aa7d2602064fcc5c3e2d066288cd82613b09cd7e5034348bf2fbf3386c2306821267c629573e8ee31718664b43a4d9706060d19a9c13ee473718bb32066f19876250db7c5af070e3099444f60271d87a621002404ddef709fd6409f880b4f4af120440ba6a29188328ef0fa0d9f539ffba1cba61e3b8bb43b3adaa2ef2dd8bc5b1d160c4fb063d7fe411bce094558f9ed83998be6760e97715bbca0bc26d74ad7a7798eb1de586ff5b1ae40da31edafbfc42766657a41f9e2f219ad52e217f4c9f3a7a8d81ef2abb23258eb5435262cecfde741ad56d09bf4f22817faf592b5a613b06e0961508f13bf02cd024a21b9114a80a5448acb13ed6589e9cdde11a08cf001c5f321b6e1c00a92e42d51fc3366b4daf6469279d89c0f2c1f2f12aa04f41fd317ca1a8e9c08d65b0a7025f67cf5c9ab6d2ba3c33518f2f0e095973dbc4d842a54674c5083f08657eb3dfa9ecb2cd1973956f2099dada99bf44dcd7d992d3c0a3257b3853c14111d7212ae12e5e0db791b5157c9fd0ea6be13552387ab1225f8e42b531065f1ef0648425013dd48fac14fc7324542bf57e8cebd5fd60850ed8b9391d1c2233b898bd3814f46de9cafc882710dd4f21f0504ca5df8fc5e43049f8fa0cd8f023d1f6152aff43144b97fa0829003f3fe980f74f05dacca6535e77ab2f084e87320819853250b4ef3b934b3e509440d67732e33aae0ed3930069866106f3a4728b08d3a7abb03b59de065196d23b5d1c213bcf69d3ec52a7839296064c86e9c9205ac8a5116f0532c9f0d9e35be94e480000e85f2b6c5e205c0b16c31a10548e41ce6672bd5e6f9644e84749234de55c1d3746d00cfa1afdbc5876d02369d2862c9e8204421f1152de303a2e8ac853c1e6105bee3db3813bb824f08c5ac9ac6febc74ac6dce8bd79bb2c106746dd116cfd66535c0580ce5180038c89e2a7cddf1629a1b1706ff2bc9b5a7e23697739cbce10a62495db01f1ddc902ab1c743f6ee47a925df87e47f97062bef36473bc32c222713396fb5c6570be9dd591545e4a275cfe74afef8bbca52f94cb80e68adba57c1e557e29064de7fd09edc945bfd3e3e9abe93f1909ee95fcf06e09073c406faeb33469526e3da615136a5a41e0dc85e48ef94ca59991740f0f3745048004880d10fd9fc8a4207a5a737c99946aca6557da9b09087a84be534fda80073e9fa1d72b61878655a25e91964f435566adedb5497fe0363772a350e08735956d465aa003dc846609af819df24258c920b6c05a3dfc6f3d687c56324cffabd03a405b2848b36335bad65b42c373c8be2311c313563843eb812e7653cfbc3b755aa7a588e02bcecbc8ecf74cff59d65f80d1df4476e9ab28d1c764b6a1ecdc0b006aad1520a6976fccd6eb05980bf715f2429ebf6a00a42d5fa3604a79825e2127c7e3e590292689117ae3c97ded8be3e8ef5bfa8807407d2150c888d2e1657abf7b164b834ff1d22fab0b1283e76a183015480dd838283c8bd23596002ae6e1f131e05e67719399594dc129d5753569044198148704e35a43723e237a6564e0a6a34f76106521ad08a3c4bf91c68bc9b9546e441478dd156f93f4e98be90bdba119c7b2b344fd90cdba7531c4bfc8031e80d2b78975d75ebeb513c9d9bb0e70e6974172fe72ead0da0510d68213c319f26b6a56bc7e9baaf6dbcb9016d78da99da096e1f579889a09ac29d3d72c631677e98695d5f4fbda6cc0dd12396756277dc82ce58f194fc420a50aeed31b2d9d057d63df22e90414b395499dabe89d979545d998e4f0f0964eb798d942b388813e7aab078828fc881aeae010f42062ba2d4af56ce27328298f83aabbcda86499d95aba23b000afa7dd5ac28f63a12cb0fc66573a780367377851daec9144841a97f01f6f2810aee5e21ebe2546878134bbaa68b246e3c11a2820d79a17510a0ee7a15d01cbb641070a1c766d65fe2c70135fb2e64c60122a3312aaaa7496761d992e67ed209299e2cbfb3023c305b4547db4556aa9bc3a757e9b7a3f24130182dedc7b7ac696c20a4190b193798ce99e41cebc1f9e25b9fc5664810459b18cad300f42fdc4e63cace9d36a181a8f493a4db93a8db8ca5173a60f341db9bf9349d9c6447862d16a3eb8fe379d4900b0f1efd7e4abca3274d00a91049e67b56fc72ff873bd5780c019a7fa1b73970290df6caaf42f26ddd31b6f49ef3d89b5310e24211426413f3d5d58ae76431cfb4a256150f648dad6ae6b48045c06281667414bc3513fa467afc8864f9c5bf442326ea699163e01373f1d1f95b87e275c2896857e9412883255d42febc6c4cabebf56fe0d14542f78c7a175169898be765492d3fcc7e5a212890d003309c06a6bf7b9c6b78e2dac68d03756d962a19465377d7d6b918519bd12ad2d58985210b7278a32139fa204757d1c2975ee483e4d83b884295719761a8eccd52ddb3ab74b337b1bd7b42144c73e44f1a833078df0c019f4005e2b7102099bc271f338be61c9e44ecda548a44052c1eff606106506869c9e00a4f6ab399ef2d777ee653761d2a4ee3ad725261796b1ae35468f0d6dae5628980b9bd251acc247372f9cc9b1c6a4e2073b639628314c021259bd979b34f28d93c07b8406c034d76e742d095b2d099e145065811043f08beda88eeed6cb4e87cd2d11b3ed255129ff1c5438036a53f612f2e7dfe9a4e78c81177d21c247a46254a9ddeb2aca8e534fbd565a0defaa36eb3c8b6556f149e1cd6c8f9ac13c8d68f01826411fafa67cf0bf64c20f6193876a2cec2bf53766b6bf663dbe76057285982f639a77caf1ec8d90f6e76208dd93328edd93fa643ed73a129c2956b6feea3d5b694f13795b3b607eadbf960cfa2b8ec6d48bcb79fd0a29161d27a6cc36616e4e1896e770fcd3a58e47592608816681588d0631acd2e0496905b4e3d7c32dde32369982e29cb06010d18310da3ce297e5bb8e5be3ae9e65cc8ae2a95e3d52703d86123067234226d241470951093e8fe0726d6089854a99b631d762e5d1b9684d43ca8370ca86765e0d5b2892273691b0510e6bbb41b469d30da21530c75b446d955ad1e5a15840318ca753cc6750771a5bb7d4c223d59b22ef3f29d5bf36fd32f13e45c798af920dd64bc4fafd2a1c63f3909abbb93650e6b73cd184d7fecda3ba5d37624e361738955c054cb85c3e0933e30d67f104e5452fa45eec13985568525456636984f764ad3df00d973353d0617ec630b7c7006735102424a295cb5ca1a3a1dbf8c23df5e7d324a89391c8bd663640f6e4faaf5500449dff195f68414da897d94d1f8975ebf8c714dbba10b866559d6280bbbb444db0ed06137622158cdf34e5a884412f7fdc93c51d5ed806d84422518fbcf2ca2d6226a78555d84912344a4e789624f15b64fe09344ef88c12ebc5a21638fbd7d2abcf47662db7d9b9f9f92d4c40c47338d1f127f45608688bbdb09e269395b9f11f0d3d50c8859c6d294cfc2f36980f45a4f3df10226a8c100d2a2345783f822b5541c49734cd6602884ae3853e99a57104e5cc18924e637b67ab85bd79a3c35ec1187b1b227e3188f2598f98486515d80902142cd20dd157f167609670b78afc45478e617943446296c53c1b6bd29d32efd1c5fb8b3bd8ac0fea5bf3d3d4ff7eb721f381bad564e6f0c367014c7ab59ae57a157a5044d51922424f1819379e0ec31b9f9e20d5d8e659b8fcce202c2c92d4b9f2f62e998bbd54fa4fbb939c2eed08f7af71c7b799f5d5262d4945c407e2b669b051add13a69b67771f4095d252f892a45e9dfd101435cf1f62004d6aa42ccc3b6d3e53ccbe504936f141e2a99e873de3d2349f46e0973eb2d9cf02754be4771dae7e2c507cc5124c6820a688126c4d12e09c71ce0e3edfcec72b0fb8deeb467c117984ecfa2e61fdc5657d1c0dec27d24a6bf0fb5572c1b12557c4caa4f91f9ed01df62649fbfde2f95f020b0186227023ed42facdecf3599bb9af2ccbcc5a23619301f8ff78dcca29cd5a548883ebcd4fcb8518ab2342cd4dfc53d128153574e348ad803ad61a8364f2f55d71f7ccefafdcce7c58aad6ed540e88e1d31b44b9ffa5d290d924bc692c973cbc041dc10dce276bd5aba375e768c60e948fe94557203826bcd42735b0fef9c26f5b947374f454a2abffa90079ab0ec287ab24f7b2f580842098d33de6b5125de6644a134011e2a60aba29376903cea98c4196c31d6ac3ae33f9f7d8d97667331f05c98556e6febebf311c8f55edffc610d7c5ddcd17bbca537e2f9a406897e203e2ac1c40642ffb49e2e86a0ae09ab2345a59d4a4e67cbc1e07e403aa2d5beba25189208f069d12b03bf9b2835de1d8177a457564255fa8f58e46680e20f076251a8fc5537f49fcd6a5856737bdb3cac5cab9da173c5cb34de0ce94ef70349186cad3851e033102987dfbb727287c39fe422522331450d17190f31983e2db5a979c908ce64cd35673c7ed11a68620e9a47505db0c224a646a667bd8c29a9ba48a9ae48691cb2614a1ceb1b199282c0cb50503663a6172ec2816756dae8099b9109e3daddc8e8d93450a74439b96957c18f077e7658fbde8653319f5b25bece9e6d01e8a8e589df91c57b4c6704ebb164e0a8ed249b8ed0e470f78f9374e8c6d63c3a8d0c845ddd8501a153698fcf56f6c20ff5c066241c1885571db79e92fdf6b0e108b38e06cf789b442cd515ea4058075dc1a52652be1f14f0111ac4225c6c7caaf9ca5f72041a91ac684c0bba69f4724d8a3f30c2f421760bee14fdf44f10e58a341fb716787b47d7e2d6850ea3095ef8b67d92b9acb99bd03e436a46dcdb96ff366fc005f8967dcb4d12e1ef061c751cee37c862643fab110f1128e1a2ba4031264ecdeabe6d363c3d281ec50e9409e6d1fe8ccdd3b2bf31a8c7b8272a652ab9ed98880002eb9ea84178c4063080c4c7db620b5bd903ad2f6ad544ebc31ee4fabd3ceb5a4a4ca26da7f0641dd8d32c6251cf41facad7e9b90c96585119c407e17b204d7d7f3c478c62f358751f915e917a1ddecb390008dd3e9483a2a9fed94cdaa4d3580805b884d6619004031fb425e9235e802852f710e01b78c18c0cde5e82561b0ddfa361629ba9b4a0080a61eb53233297e0767e57202d9001f666afd4a345b7c86c8b32514f3954a6d3964fc85ba85b369a401a5fc96ddf277563a5f768b1cbfd4487af5505a3127cdd3399b56121b0ecab3c065f7c5ce10c65fdee925fb0706c4657c2354a4e62c9018c339f390fd33adcae4bf8fd011fa3f10996bcfd7de1dd930b239386782f33651c82ff0836dec0cfd61fd8f9ab97f5c0ae1be2175c007c8df0bb9b3190a69663d93ca44305a6589f89a1d9b34acf088f851892e9d0b840047cd629de6f6e3e9d763742908dffcd78409baec9c94dcde070851b352f91410edcc21cb71fe8c400c5b7645018ae69c872f056d8680dd26aab39d95cc3e2cccc551d26e7619768f09d9b454c4233802c9c7b605395481d3b46a5c4b37861b3a56406e964789870c24685b48b1fe0e05fb8da8111a5a20e98d001935b92d0c87ad71da488b579ed3b7dca3c3a26fa03b1413c7ab31bd158b445eb9ddd418a0bcc2b15d5e4571532ab775d6d6ae38f843fd7fbcfe218c7c7acd242eec764d51d66f3616919bf1ac1a262ebfd6ffe780dc84efb1b89da6a408d669c4b313c76a5aed8664a6213cbdc8346d4438dc3a6bdc35eded375a807a35638ddce671fdb1690206abb8897946efae1ac9c3ac7e8603e1f98cea53d64dab75df9b2641e32acd39b0667d4a239f3b10e1f7fe294c4eeee40137672b85f1074e7bab2980ecd652a3e134c9997329733d22d9e104af124aef7f1923bc8582995adb1d0d9e7f7fab35a9b135ee0cc9f08b3bfa4793b586694c2715b621dfa4fe60723b3b27463cb9aa83f272ad69f70e678e138bf37dfcf5cdaf6ad4f1d6a9677f2578af812bff176043b2043131f533f2000fac6c76073acb047e9e515680f67759cbf8d2af97419262ebdb9dd5a93b7ae3d738dc29664289069bd44b07dbfe7f074b58be51455119861feebced87145b015415017a94e0215340d4651dfa247588f38186e852ef3e1071d67afdff6346ef074cea1e8a3ea9663937288ef91cd507da05f1e82e1873581db5ee46e644968331d26dbb6b73cec1301af95fc18a0286172d9152ca24654a29a51439020502fa012c92418658c520d12b3a04b5c8915334e20a7321a8048b931eb4252d2e1e67b349cf14e591157ce5ac4a524aca14274455747c8c1d9b592e785c21e19002fa815e79ae80b19646e6ab623624654d880ece98cf1291a711432a1cc8178b24256b4774622822cb511317590f2c8a92c9879484c30b190d823496c34bc74a5499aa46645264f4a26788490d18988a544542ae20d1dc21a133824235a8341276789888c72650445586283a49ce32ac1d5a363e539c473f4bc2aa30b5aa5ef886583688400b262095e334a4c89712ececc7081b5e5872b0a0989898509e436a3d5b5d4064b8e0227e19e998fdf075240b51c70af02985290952188e90a7aaa2a527b22359941d4b4b680d123130213850684d2b7c7c928e4dc6889065c156d1b0259cded5124914259c9008c6529218700dca89661251379c9ab67624a0e5d4c309e4861325354019831a02860d235d4f82e0e58ba4660ca85ab622c76a89d8928c8614d30e673d8c8a104d61a519b128428589190f0db23c2587b2a08d628eaca9a18e14c5895ae371c4644c850fa7a12fc8c70c223589164458d4788a43429e3d506922032958f584497505b674e69303497db23d8aecdacfb33aa09afdf99fcab9daf5ce61b877839c53955de2ff1a2597e5b3506a6c95282ba43302e964ff9ce478645dd1bc37b41bdae59ed0efb34e6cd57f7b7f3dd3cbdc09301622e09cb9d61d4debad86f59e2eb1fec7740f4181db4ed0e9c6696ef52fca5a2bb8375f73ce29f7ddf6cb3b78d695a74d95556d6369ce5ebdea7defbd61024e0c705b5858543cdd5bb6b9cef5d1c479f5f62a2d82528b51efea6881ac29d036c4f6dfedd7a63dae6fd1b17a369b2be7d40f28cfec761403d7927c9b4a7c9c12172497cb893aa2a009a4b12d1a5b84391a39a41100c5a7bb16401b4580554c6782eb0452c6fb1a07304239918014b933c4854d2aa01d32e088f3196af1ddb2231567ba545e666c44ca60de668c10018cc81c81d4a41cf028c410819fc031c7456b65cc5c391768d3184862c2d9c0aad5a274c0bb52438a69f0c4f0812b209e146db9da6996f920045641643c4e9503a2998ad13addb8e911337638dee2530d0ab144ab1d2be0f75343eed70802284301c0520237bfe49f37e7a8e271ae63c49446b0a2926ac8132a8d8c6577db72c62a4cd6012624f27ee67ce7307ef1611d3337666ecc5ddc8c54fdaf6b7f69a1d153c5a2a7e15370edebbaf9da756fb3eed57c5dd7dfd7de375ea06bb7ffb65d7ff7eee7eecb9bf2f6daab5bed5f9cf0e433a08630fa41cb9b4066671314d560c5066deb1263dbfd7cc10de64775d017639c22afed5f57b765db17e7b66b7731f7ed5be2af5bc6e776b5ad5aa725e4173ac041450a970619582ce3d9bcf6b49c73ce7fe8ff39cffaf35879d40fed2e12f7ce59c5cfa123f7ded8992bc0a9bdf7defb0cddc415f77bef8df5d0879cb10af92b32fbb1cc82c99898f500cf84d02ad86c49b2e9834ca74751014124537680665f49b0d0046f9681daf8678c35fe33266007f6f7352f06c6e071c845cc540898659f087d676f9ca96c213058f7af06db3e5b089e6eab5e1727bbffbd6f249060b9e52d2df8d368ae752e89a773daac3777a373845eedf33a987befbdf3ffdfdc765fceb3e7f9e5079e18ee1d6317778c3186e9be54555335e51863bcb160f16013ec2988ecdc3e4d8466219c14a2a0ab2f7def6de3c8564ff07708bd1b3a95c60a9b02c6788303ac627a9f050249647cb8206a2829104408132c522e25816039a179b48daf2f97a7eee6478e7b0ac304a2fae572634daaa37dc4451ae9f5dc4e2ee7d292d3b5ecd0f32bd6cac0b011f30486322ae7e9294c09c55441e645cc73381ce6610e220af9269718cc7a5f9e6f665cf84d4e81fd87d5c3f9eb7a979773cffdcde76fe6402ef372d7bb9eebde1b17ceb9ee66e69da91276ac28abd468ec4a4729116b043aa07bb8a246ed136594f3189636cdd64e54f525dfdaab15071214aafa7e6b1de1ca3212bf820f3453a826c650683de789a348487da652aaf8cb2f6e5194e782178ba1a29c8282c3ba1163d492c31e9ead2c40fb6f65bd83828ad869272525a5aff47f705e5eb9ff0011c17ea6861b69e4884775860449eee27bfbddd5e33d55fdeab229d7e645b47abd67d3f249e1e2ca3e0f3104b6c0c62f59a2accab9a2264569c48a92ea19f38c6192659425cc373eab5722cba7772c5a17681c1bbd168f68bacf49a0d7fde6e305e49c73dec5745fde95cc60051672aed541710471abddffd2f47ade9659aaa979dbadb3cd5642f69f869fa60c68c041c6d162041352a888da5e50029f32dc907dfafb76d9554dbd8799c15f26f356ccb3b1e91f84fe4de8495df5de7b5e5f8fc8aeab2633dee596dbbce765bdc30084145aa081871c1fd09190786466274fdbd014e538c7ba22ac30f97db7db760d445fbb6f7357b14bd6aabe5d71bd55af9dad6c53beb5da4b55d567d587f38e866997591738adf556037ae9e4c4a3979be747378fd101587810ece9693bbd1c975f87116ffb34119ab3d63a67bd0cfac171a3c68fc60c65150cde3be6bebbba7be0baaaefb95c2ec176367de12dbcfab34dfd6cebbab6db8d75551b9b765d5d9b4e677bdf1beb3f8ef5309ddded5c5bceb6136eae7ab3a1d0f7eeb7975d6d1ef0ee55d6b33098af4223718a3835544e0131fd2042c78f47298533450a93d95c266d50a7730d5b1e8d4d433a507f1e3cd2a3d67aef9cf2a3654c5a92bd1e614c3299cc678e9163ec78e6c931dcaeffdf77974ca37bf3149aa6a551ad74f10b1dd2f4b33037e5a026a29ba676afa6e6a3408151d4607ee55fff81d9e95481718a1c969dd8cd21b5d65ce7ea5c24da8739e73aad5dddd68c6e66eb5c88696b4f9378fdf7cdf7eedffb8b8aacd44ebb4d25e00663960010100ac5c26110a328104321ead807be3cb872b6977c9d729c10318b2d3b54fe742d6d7b9670c6ab9894bae49bd2a0d426f3fcfafc5f5ddadb5ff6ab23cfe5087ada68e4d2a5a72254a10e0b9affa4a198e97f5f402dfc00682020be09cf41115e4d04a67f64e33d4db6deda488291b7d5b7a5c7ccb2cd1e6e5cac5899bca0739660e99ce531ebbd3a11080bc90d0b7c729392794ef6e17f19c2241aafd59e0194b6b5e35fd2cf839696feb95c9442e9d8217e7f97e93f6307370baa4fce7b943addbb2dd6aa594b441394badfd4b65e4bee31cbc7e793fcacf1b5ba17e2bd421f56d2ad065845adacc9815f5b4767dc3095d3531be10dd74a4ec632b8a00f31ea766759a61d09f7b1eaba1dfbdd73b2f6266c41d9b6882caf0380a07259497b7977da327ed8506f5e7522703f672e5140b30114581cd6b3ef59f040b3a895809da73289784108b942534c7fd81272fe4fff43d374ffc8e502403983204f269a9bb4916d7d6db9ba344b0c3282fcb196e016962ec495d5a4c5e4fb12679b6518c4d5a6e6750936b936025158ece0d8633eb79e8b50a35ab61c6521c53d3bb2b2cc660b0fc0c6878f341fb1e81a8957d907e08732bdee3b443a45d9111351d3b3c8af55011b2320871cac076f30793631be3de5aa2996b99bd6d8a4544c322958792c62f93300e2ff721a7189379b34aaa12b8b37324e954fc800b17ed890abf617f97643adb4c7221675d9ab8d80b695c2ca249e82563b6e21f88d0cfb0bfbff7953087e47ba7ba6001a61f9a9278671e297551522b71fac201c3938045eb056d76409c31629b3ada7b38c46a0dfe2914c0411ee020966e149a06a200d7e85bd22d622a48276450486db4cfbfa024c2687e43ad88375e4fa34c422327a13b094e7163e49b233576d9c077e417a5ea1c29b7d52dcf360054a6a2070b63d194b18231d7ba4a608fb82d2c44af9b47c6d6ecb788dcd2fb611d6e5c3226618c59b9682741691820730c5f4a847c7b80de6c5304a90667a233cd15933362bebab6c22f34309aa8d453445ec06c7f0e8b28a3e6ab34f112f42be643d94be8baf8eb8c5f2346567213d2a220d10767c0c980eff5428c4a0018291e0c281111511adb4f17b54a55bcff8016d67d126a138b3062172f58b8a6e8f578033d61bb13a6f4ca8ce5b5ce32345bd8d2492d968fdd535c25459dc15ac6519cee3b36a671e2645d9bc7053a3ba89388cd50c25ed2509c9c33e21e1e37bcbead3e10c07fb36cab3d20985d28f53d4ac6b45dc48e912dc9c477a06eedbcab97af7d1df70dab847d17bb558b40c4f4eb91eba9fb5f3d87b0e9ce5cdde1cfd3fe5dc3092b7e08e36b0f7428597e54106ecb95359ec15ec65b2a2f7989106164c383b5874099f84d13a9e607997c7cc3bfe274e7af3c3281280053d29d4f19f97d0d71209a3e0806017552d8d841b65eb517f19a999980929488b0360f57c711dc7779aaa84df463430bd83c8caee3b8d4bf5ecc88e97a94dccdd0458329421e8580da9baa81e63c36cd5a58a8d618e14f6604796d4406ccc35ba57398c71750eced261ab00efbffd62b12c8ba3870f66cded370d9a8c72f7b2156fd9aeeed55991f05ab09366532a0d4ef93419a974bee5d37f4ca7c9ed447e6d56216e8c623fa57826e5548946319cc6e2649b8562a19253ae94d98fc08b7fd43ebd7048df2afad3e336422d5d98df2c96729523d838df9788e634c95f435b559f4ce06da30b2b1b3a534148bca3a7c790a492518a5032c9d3105af20bfa54229ca405e7b7d86fd9a6128cb89cbf9d1954ac764ab6f28962c9bc8fc2939826096a06ff4262de2792fffb5bcf4236e54ced72d77950b2460ea275b28275f49bd19504316ee07153f7551869ee113d519445e800ab8d25655ca4fcb8ace769f5d21f7ac02e241f8bbc73406b288f4aec0750441c81f2796ea37329d658147ecf4b3a9747dc3f9731f3e2c75c5bc71c27946a37486d4fc3851f7bd9acf748d03929d75935ddce888f3f670a29bc1da76ee957cb964aff064fb25b22e612acf8739d6da8123dadb97a73073ef5b49d35f3545fcc1016a4554e3bdc694d19f95b1fbc22a851cb429a40a8194934e7b4e6c74fcf24bc2e2a610cb7855f89809e290736dd2c9f845549a92c60c5901d88bde0eba00377ffcdeb8c0eaa2376f4936f581e6af7d12b11d0c76bc0fc75eb8e7f83b5e2af991f6c4ce25264c1e5084f99d037bbd9403cf215502189599277cd9b3fdd96bc9e4a412bf863756bb52d3da220e19b16b2018d77a42857a308152d8a64f162ab78723d32f680172f26b4be1b27f0a3fe1987fa00dbdb8036dbce2d4c3bdc147132007267a75797290a87ab6ca5e9a4ade31ed17f29c7aa85d32d57606c5dd60179ba0bae643696b204a5b211dab9494f924f19cdc3e4fb08388784bbb98ecba5db10db1436afd489818b13831fa90a39bc005b5a16ba2b4a58105bbb0ab0a1065039840119f5d42aa44b497f0d90da963f4529fc69d4dd07deed324a4b2b9a2b325f27fd309d913324edc42d997c2eba62419473b7d0bfce2ade34b069559c08cd92248bd8f837d78fd5268484262e8d4cfe19dc3e352b06c7fa07a1d12749982f41b1297c953ff17e33c2251d3247619616ab53de29d1732e260dd1e8ddaf64225aa92fa1119f4f4ad689d5b1f288dfe3957cd282ee97415a94963f3fe1d4a018423d0ea25e03a151e93b45090b52dccdf38d7abf63d7c9c3d6ee2412f5251c586adbada3e66b35e68c83205e34724eda36d1e15a1ce84be5902eaff5c6b7149a03617baec92857d4f71238972a7e9bc074493377b153b17b31e44b614f74a404ed09c8aa4091cc397826d960752915ad6bb9260fb1b488d3f6ee4295acd361d1408a832b4c803bd0db1ee02c5de73d3802090c00b89881764ec78fa0425fa5318d02ec14a4a170eb1d542dab0837e1a21529d1511bbac589eee0c467dbec6371bde25d2cff599ff10b309663f4c950042a5a919f5e725a3d8708a50ad5c8f4ed671bee9d77b5b7fcb6a076413278166e99e657946e33d8b1bb9c9053912f9b85249efdb4b9f9ce3cc92ef47ac7229f61b40dc8fef90e604de91b68b2e7c54ea26e2d891f03f5614749a7f89004a0b17631fdc9d6f9b039d24dba4a158dc3086af806b64a3c01f3985eef9beee08d5fb8f0bb15db323cf25bf98216bcbb5e5a6e27ec1a63c31d35ec1afeaeb0264cc5011ca48e2a9e1da59dd97683df2c4787aab31cefe851d71ca13a849ef416050ccf1cfa57dc4597e61e415a55347e4fa4efb6e8721a994d563ba44680b55b8d4af704cc2398b24ee0f208d22fbb78df49c5ef2dd69bb366a47681fc34d2696a9cf290359f9be6749b0444e8fe17752019e21443de8099fb204a64b970d7bb58da7fe0c2d7113c8123e820fdc3d5ab386db85e4e09173274c86949e3fa2c2d2215a55641c34ebbd605d7996c655d5607ac8deb0521e4be5784b9208b0b41a74a6b60cda9aa86a966f412a9bbb41c18aeef06226106f301d5d420f8e071c342aec201f7975c452fc0ada625e9ad13577d2e3a10b4345816c10b26820c23f8b85619c1ca87d7e8336fc8d98e01b925422ca30718d815411ddba2310b0897c7599dc845ab5b3e883cb956041f5b3ab70806914d27fcfef47d6515a4dbe7c32a204b222249cdf17a4069060bd4c66f297dfd2971cf058853395954d99ba4c6eb2834d9f245df3f44413677541e9edebc9e6fbaa9b929cf09e4b39e33b8a31465357df19a142cdbe90300411c572414da7296ec260b124058160010b090cd48c580c74ec46e972d6f62991afbb6e58993087fc773ce3cd5f7ccea2d6bed93c8efd72320ef81b93b5f31b7375fec0af638dff8df33345c40962d9d655a110edcd12e7fbc64faf5264b2d28b34fbf2d7d6cc2cb0bc3cd0f4374640f57ea74afc4feb0b02218396148e8afa5c1b0d7eb8743f7835ff32da8ab4ff72e9f928e16ea48f98df1379f0524fd067713fa395aede8d1d1ea6157328a15778e8530b0c3419ebca7ed36a470b9e90f2217645d8295f9345d3bd61e42b9b433ae15e5c520319da6753be660273501a8a819b910dbaa93ff8fc8a390c6f6c15675583a6d9e8c4f81069f22dcdf79ae8bb29189a6ed9a8bc5f885f26d2b78b51dc09a506bf041b576cb9b42b1f56ead6aa426e11fbb2941552e32b7e147e74b4e21731d524b5311db97b3b4f1aed5ff87a52881a36a872debbfcca0d9dc6a18b3ba21432f84bc64fc8dff4da346dc413d5e2fdac4812cbd5b6e30bdb52fdaa3ca241accf3e41e122b7418f67325abc098dd70c37a919489bf78e9a55f3f2a1e7dd3f0d0d06bc91e31949aa75925fc8d39854cbde32eba505f6b0a06b5a78bb35ee409760f560847ea5455b12ac9fe9c5798801f633a79f8429d6228514c7e46b1527a149e1b6d84e21be4e85992a13868498dbdaaa04f49f749547eddeb03afdb872259d6e7e5a4447c334cd02e3c8730d803dbe155d57854e518a114ccab0d56ac688e6760f7984d9053298f6a4ea61af429899ca38fc73e1fa59d0fdfbf290573c9a74911dce0eb16f88421aeb5def9a7009c2b13039408cbfe0635e4844fa80400115c2613f11a9253eccb8dface021fe38ec192b8f52837b9da715a6c3f4304643326a4bdabb2af8958815f757a370193d4c8aeaafb6dccea30b07acf09084551a917f134215d11a64457f5baa30433650be410aa83cc2b1ee9801298ad92ef24926411be0e6a1296bc8f7997440ae1600294441f951c6424d109ef48e0c283fb3e2371c26c617e5f91e81160535719930e9160882512d9860c07d00d89f7531704c3430a12f98465d3ff886e37b3322157f211403635c000e1917e1e012e40c4bbab1df1c268d89a2346e972a3c0113d44be8d48e0b004a911a0f8c16ace88b71e67669064442ff2b666189128c5cb4135bc08006770648bf83ac52784458c629a457c1c36b315d19d8f81fc14f1becf337e8422c652856840e3cddc44a4ba610aa34d5f8900e2ce607d157f44bc946accf449449855b7558288873c63686e82c58760b0e63b04c97f60d5a5e110e3bcd2720d01a6b3bf4f481922618937070df15ab1c7cf94241f430c01477a57cc3c2ae442c45c487585a0a050a1101c8eac1202a068a44d8418f98fe18e632104de356d3bb6f7f9f4baad8c76b9aa03f566898bc788ae2020fbcb4ba051e75ebcc148bdc866ad5a6390aed7f1c6cf78eab3e8caeecc219060f2a87cc4841066428d7cb6cf0ef2833ff16a572d2407d42c5929222faae602cdb30a29e64d2dc2b1aec9d8b2a72ce85ec67a955eb8979bb33934ea305b6f92171023da1c924a731ffbf99514bcfeb8361a5b31deade4253378ed4240d13b4f8022fa20b0d550002e64969a28ceb3dd33a97226fc253064392a1035dc75b4661d2e632f29e1a6a32e5716f7ce25f95de76a49790e0d452bcfa5dddc4693ee979b66ce9e66fef55b3a1bb3060e2cbcbdd8c6605a042da920a47bcf0e29828276dcb6ead4809af6cb66495998e588c2c7cc2af2651aa41367ee18f778c20b0a57935d6edc210ab2fb56f4cc2479c935e3b4a87ee620e19fa5ac53f43675a5099cdb9e11846683aa71a4cd00bed86dd0b45335fad6218c70e0f40eec4cef0d76a6cddda16eeea6270e80b71f55e5f8bb414abedbafcb5ffc6a3bb6dbef94a5c273b79f1685c27c1f1bc2549759261d65b169896ecf5195aac7abff9c0552ac5a46e540cc5032b58ea0f5f2a9e4c0df3dbbaf7b0219eff619ff6673ca0f2a555101c054ef8a14074c8f721fdc412d224cde361ab1435978daa4db3faa1efdd48109af68e6798a32a4ca421b5f58d9afe92599310361bc8673f416dd431f7b713c5b26a6e9259a100aad24ede77d763a9f0abd47f0d2c2ba5022c20e7171e45f37100ea9d1582c9ed78538444d81bf19e92eac2b5eb00ed5e3ec5437085b186963ab964a73772e80ba27d8692c75f62d01481b5499b0be74123a78626d67a5696564c7977928ae8a374ccd877c8bf13ff89b6d1630f607ff43d71724f799107429745f40f17747ec1e69d42840481b2619b1977abf08e1bddf6e1e697b8e72f43d73875b5425c1ef2febf118773050d99979bbeef092c504ce4de6f9b91c52bc61e2931154a30b76cb1372a5b9b6a0c4d27c4ac5ea2b67cdb6475bf1eeebd5fc0c6592faea8ca093d0a6ebad85e89fc51bedb6bb1591be155ddae5b05aee01ba7114b0f89d36e700ade470da7a09cd762558e3138c7dbb65e0332c32c08c1f2d076812433fa57cd3a6459828dae2b269b9861b648315b07535df1ebf52b913175e91b68913f88a70ad9bb1b9d8460204252c85311a61ddcad88762536f9b3e50c3be7738cbfc3e0c0dd550abe17c87098843611befb1de733189993ad89f713fed69aa4c61c761efdd833da0b50d32b2095b3205ce6f0e33308404abf43c0f8951131c03a1f921894c032653f16866fcd2337cf69aba91a6847df2ad3b2d1267a153bf345dce8ff0bb0948895542db22a8a9081056d55a10da41a676390a465b958116d53d4ce0f5ab44574a1779dd15fab136c49cd3b1ace5fa8027cccd2fa11427fdd0b7097a7df8f6267a8034d1b43eab277f5a2bb148b8d0cae6c51fdafc9ad8c4512d2093d0a65ad4b06594c51ddc0224ebfcb2beb28eb0b677e43ffcddd9382849ab0156d5315c072dcbf5c5136d3514bf9b435a5d2c06500cf46efdc8dd17afcbe09b0ab347bf9ab84f6c6f73a5672cef67b1c456c04f2b5e6f9f63cb056cfeb7cf908d2c4e86cbfa1b564573fbebf5916f13831d961beff3e153c95dbf093ba05fcbfb4218720fb09854cff11fcde88f3b16925cf4ecb6778f2a6e1a35f54986a6521c3104cd851d603ea8bba16173a316aca667f3454d71b0cf22a5517b4a5b69dc5c8dbb87d128fd272e426d3dc7666d68a3434dab773a2e1ecf3f71f6007b5dda2a7e2a06216b4c254f2ce8e24eafe3d8e7dd541abab8fb6906683a92e4c2e5b94c0dfceb686a4cdc897363dcfa279b0a554abbc6140c6ea7ad441db8c575c9a6c3d2952f221f8b52e35b2262ff4d1e3f4f165a174611ddba7980978b3d99bd3a408a1e2ab633b79443ea61918195deda632aee7d14c8c0e4481ef49c73284d1c066b28c38161ead7aa0212771705259cf5b0955d28c82b7ff7e1f5b278845b1c180f92eb50f4aea2d9064d02bc92d5b06765980063f9c619f6104e531fbaa386bab8d5d2bc94353351d72443826aa634df3746f330e81d6c525af3311d61346a77d4f66fc97becf9c5fd8b4e1cfb5a4b2369e97585de16b08eb9b6fd8f9baa46abb271055aebab3cd8097978dced8d0acc690de6f812f2400e620866c205fd7febfd46de9c4183a66e94dbbb2823df583b7a77a390c03959f37dbc4555e5608a452f8e3ba01bfb24551417e49c6422021caef952ed9d7a43e30474c6fc59baca3b6061f3a84862acfb9961498d145d5510b5108c995d6e50ea5ebba674c55079f95a6a8943fbd9c0260d9089c55410b948791e97f3bb3c8f6887d7681fc1511f3689ff54fc944c7048f7dec8e0c96ac9ece5e94670619b63ceede04d0261f3381b120ce4a8a903b68281c74f9e76554cc594c23795396ba9df276089a150ca8c4dba655f23c8202e4bbeec7510976d530261dd3adda33d0d3796c90958ed860e0e8eb095aa242cf8998aa29f55ca4e4e6ebe4dc6338f52852aa3445418c249d4f5efd23ffd42cd146ef44ff998b23838bebcd91639660d34c00131e59fa0d49dd86ca246a0ac54cb9f26b80ab8829637e9aba0d8b8cc38eda49faadd2c98608f6d48ad9799298d0709b7093fd9e8ee5dd53f9b29f1ef0967cc7f0ee328929e38ee01290a457c102ae6e37d9364be607a659e071fd2551cba25d02d2be4ed8432e97e75896d0dc66a9d24dbd5dbda49f24de89d2430529e27b8efae0266722868f2014724010f29557a28696c8070e426ed373c20a3909ded3dbd60c21cd55bd858465d4c6de271bf3d43efcd14407e729b874e851014e6fd324a322017bf2ef5b82072df10c75cfce23c5234c2d4824ecfc5a815559971e8da24d3eaadfc09d0654c48072415e8582bf13f01bee07174218b31b0ec96a25c14cbe2388dd16ad2c4d8d85366f02d73b9f0aa7c93993236b11937009e6bb21e1b021909a897b71f968306789e4b994347d11ab46ac63c4c25f154734b318ed97b8d8c802f04253e123108789f4abf4f046bef6d4499ea38d63b553101447009a5e6258fe435072391aef151a2e70eda862d5d93de8909d8314120e4c10ed83df7bbebdc94d915db7de24202e022469c6e5bb00db98a42cdaa2cb6c3106ef551b5c78464e857cc66d0414eccd77d4d96076c82dc6053c033de909f1cd785bcbf191d32a91c5478e07f8dca9b929f12816df9606050bd74b54cdfb4c548d27ceca56edd48437d3d1792d0b2ffb8cda91bbcc18efff6ad42568e05b652e93b818ae9fae842d3cb4dcef5bf5d5d1d5782c473710b34490eeca3cfad81727575f2951c46f1264240ff0feead29bdbcd19f74bd4e52adbbf3e1e680a0ecc8b1cfe23938e42337b0ffe03c4aafae4c2fda5bc55e3912d0aa98be530b2aa61bb7754be1576802413f909b0c7a0994a6d739bdc50940d296d1409b56a7c58e8a362d8fa1a3d0d71a91ae61cb4a25d018798c8a36002ef37322738ed61b9b0dbdf9faa4ddeb31626f218ad383a10edb8f587a19bcad37db94ec051cbb16fdac237ab0cb08ba1c57e7813bf27e9ff2bd1c717c3db941fd27ec2781afcb2322f92cd3666333e5fc62290d40f4867e989df3e68fc347a551b6e92d6c735e5fa31ca7c50d4699e69cc4e39c775f902b8f19c3e506fa4718c5f4f66b5b942f383508b8d562f0b318f1137a03f02d73a8a76d9f4761a81776dd4bd4e7e25e3f5ea9b15edc6fa7d7377cee9a0bbfe7bd5fde84a64532057a7f30b95e8d232019bdbc644bcae97d203211da89a09e15853330ce01b9d12790f54e3001379651710077f06b0f13ab1502112e3d1bcc5e5ee249742e185646e716602c790c778c193e5472dc87105b415e7db6721dded9d0f6a215e122beafc0cda9d7709600e146da420c4066735c3635d653d5c0554634a14ad86d1d394ce009ee07a3edaea6fbd16f57b808594927a3b045ef11d5d8380a152bdd01762eb4d67f8f647ef4fce9abde58db8c10c9e4605734b791ad149620242c3ab44f6a2c0b50888f8f67a007f725c6c555e81e0c99b9400af2d1f14c0bd42c503b18f83dca0c0d718cf3a9934ed6f768307e6db9f1f93a2807370bf35c6c094c225a9f18053c45ee21b94ef81ebf97852447362934e189c5c8c3bd70ecc33e020732c67b849043386783d2608b987ecf2ec2a7c5f50cee4ba8df63459583c17def97091c09b0719004548a00ea43e40e47a05e4d0782db9943be8fe1154fe2cf2b906e9c7c1bc6d15e14768a8cf7eb5e9e0e2b71b882b580cbf8ba0227553c29ac27d4ec0be6c4af9cd17719916c6b7bef2da54c3bc92403c800c400f400e45f2a3a7670028b80d71c6b7db8c55136669c8574b531e711675142ad6b08a1272ac481f6c8264f20596b5bf4df80bb76779b1930b618e7fcf3f3b5c4199719d7ffcc96fdb5d7da32dbfbffa119de7b416b419bbbacb6b466b6f69ad686166c10bc17c4f8af0d9394705c79f29f8ba6d8cea1ef0000a45317ccf5a0199897ba641978784c1b0f8fe972bdebffb64b961f3459bef20e8926c30cd4c8ae97f9ff699a150453f0c2f0c2b827bf46b0f3576d5d7377ac8565e367d6afff103488d69a61382b128ab60e4e6b77196d737777cf42ddb3143535358550ace47a1fade9fa6b10cf6dffeb7e592e5022e0056080e32b11f770ee5eda1c05ac8ad262bd95d37bfb7bbbd3bf3b83175e3f47d2ae75f404040cf865f07d4f59b658f695336bbc2dd38de2eba0be47510a8fce66b456bf5a814afff84dbd63de3ac747e8f7b5d2a6ff39a5b482ad5a9fc56ef739fd3eb3abac2e61d3f1d3f7b2d5fcef88d278f138d69a5deea38eff7809822038bafbbfffbd7fcbd1cca40bacfdf49b6559963ab2c7416639fae77b853e071fc6b838d9c0d83955c28663162bb1d919df20499e5c86cccfbefdf7eadf95ca99a6488e1a2a5e149427214cb915714eab379ff7d702546aadb576ce5f6df3db714064e44aa8192305b5c4480f26a4b3cdd115d5d494244d3d68a838d98c70b3941bd186ccd923aad26407eec4a9e6765ab5be30a41598111ea8b00a8703d784b16e6e1617a79408386caac66899d224098f1b494627961342624e08684101764acafababbbb6df40e881518de990f649c2df4801422231f0d72ccb93560c2a4444b01f4e19200f25023b8db4742a23e1f9154ef3c75eec2c7c7c7fad82d5b8a3c48909907997df9d2827a09a992302aea4874f75018458c8bbb46f5461266b249645c13d9893c603aa7a67095869dd291641ef898c8d14235e566c3e86804881a60ba1ced58e2ed7ee0dd9c3557447a2d8610a122ead0f4b4a2448e77bbc24bea508511d5669c987ea391107b765628147cd6a6c25caf1d9d4cb660af9c5db252c7cc3a52d69299043eda8ca7a9b034a56b0457a051166ab599d48519d73c3083e01e9a338c712b0069284231a28adb0864e8ab402d0b4b433e8ae42765d98ae51612b2aa8b3e963ff70ac4aa3b07344a7b46952f40c0ba324f9ceab0582d5605485e84f152b6c85df0c033f5cd10171d477e71ec7b49ecf1dcb1cfdfb43885efa83347f76a92a431b3c510141287c3c2f13407210c0562a0847de3e07290351412e5480ca22006611006818c218a10420851026308911919db39a3dc107a5e47510dea3b2f3ae20dfbe046899f9e36df7f44d360fa227013d562acf43bdd28f70d59ac392ec662067a678519a0fb009c626ba4d0c322e4d0ed886aab6b80c22761b0ac265af6667c02b683c6e7b0de08a29d8b85cb85aa3d9dc245178622044c788f8d206aed9ac6623ec93a4b637581608db122813600059fe68102ae593cac7a7aa9bed941b23c94cd6bac11ce0325c75513c5859a1a7ad5fae4e8e98bae1c578faa381e53b8715c3d9be4f96a17a3cbb2c2da90f9aef3b9e5aee818b3bf925c30de6a8f28072faa561997dd5e8556feebbc97e369b492ab2d825518850022861a5be5652c707f3445e0186de5df1c634eaf6e0bec713205bbac8fe77abf300325aa0bbc41802e30ccebb009b35b6f17a810a35dba3f43ec799ba19a0806f140125be6467598adb07caab89dcd2bab3d82e79b193f64fde740a0d55eca2f64de05319592b8a94eb4b5495abe0c51ea220f2b3b7f85d9b0d9fc9632b24e913367461d4464eef2ac6b5e3ec12e747618184e55fe963f28b4119cf60017e3151c8ea7fb0661422e47802e6d7d495336f745cf5dfc2c48ae9a79934f83be92fb0c81cc1f1681b3b4ababa041c3bb4ef77052183d08105fd74912d05a4cec7dc00e56139c166df2277ed9c3422f64e63975a2236e5d3954cdcd0bb6df4b355c59f77e655291f569f7b8bb1c78f5f7ebce9577da31538f0d54375abc0cc2e7b41961a38617c172816db96183117840a84ad04430ee6e1911d4d63b679acbbf84aec43fb49d637abde0f41010fd1f3e0dfc846668947e9298c045e377bdba95b4dc1b3b452d5c469b162cbbdab43083ed4df6857af5b2d3949efac2a338a3afa4fc7cab80158dd0f1ec12cea916549a47bbac388f23915a21c21385155421d137b5c0656e85c2ef255e84651187e856a1ade707861f8054c1ca941815d8e60d54885eb877f8afba4eb8e83b951a75aebbafb89a42c4ac178ac9ebd498626ddb9ea0e39acd23d3c2210cc738dcfecf93e1aa578dfd2c9290c8ce67c1351478949f9ba2d0c991d02daaeb197ae52acb14097b646346074578f000c25d66baa255582540bf8ae83b56d38b6d294d20a46ac835c10070b1b008c9037d5e21ae66e7ba37520a2e9c6472509cbe490a4126e488b274496501766806a25a3e28af3e0b2f4f0f2a0cd56c54eef41db7cc73cb3a531539b0cb9413a232ddb0571036ac172f1173da73f7e3fe2a0775651f6c49af49c13cb5062258328d1422bc0eb810529ba0b288fad4cb8352a9f2d7d4acdd622d637aa0428d3b68f419f6106a5c63cb34d44b5db179aeb08483c0f19299f023237431dc2ce2bd9e33af72a076c6931973e884c1bce31771fba4d63a6a4cb930111990483b79a7009872ddbc3db3d6912b0ca6e22a61f00962250cc5cd4e14a079139521bb570a2469f23bd4b33a8243c6ca0614838b8d733f078a8100a32f57c971f60bf8982ec910e13f6438cb60585200a0fc87426c0134a8d1d9635ebf363dc8fbc0e2fecc87ba555fbfca5ba1f6f79834cfcbcb87a3741b49f4a6030f2cdc3fed1a3224b46ffd1df88808d7146e812ff124f0f389a1f3e9d41be472b84996e6726811025d0e2b7563027074619e6c02793428f10bbd1cb2a098d58e13fa351a25545b482636faae766ce2c312f94c664c9565c3a0fe237ce3a35864f19a2d3976c0a0fb3c77d341af04ddd7645765cdcd56dfaea0ed4616aaadc46c35b2545dd918115eadb82075f1c3dd4a8fbc921f53d251a3678b797dd74611f18d92a0752332e9c38eacd9942c65067df1339dc2d5e8c01a96cb4bf73e70b388b86d230b5556c56cff580510a68d1203ca524454a867b0d2627aa58c832381b073028d7b22807b3841c30aa6d00ea5980c4acf3a4ecf19cc6aa35748ce63c182e05f898e4e1160f0e7ba45b18fdc9894dda934dca9e4ee7c02ee642eee4ca2ee0c7f772a39771e017792ab3b651eeac66dffa9b6883c6a88e89fac21ba082c107da35e75572b331c0a3d18468ceb3b3b3d2df68b88881e4522e218b1c28b459c4c1dc51d7b31e28808adf486f18a1137cdf44abff7647d4207aeb445d11671fe465fcecbe370c6913f478d7674e0494f55cb390208be3049a42b5ab503ab561c36a645d5e8522bc265f4af19d461ca636f60ddbe18364dea278dedb63d68ff269ba2df7c943db5b23337d7148a193aa664dc96c3bb2c210fad2d2aa83baf290d7197b24d34481b53fe98a0ab2785508052859e92a0ac7b55b2c5edb045050ae7cff46502b47fca401e1d9ba39d6aa933982319c31a3b0ab1953e225aa924728922a5bf6d92bfe4d42f76259943775b21a1a446722e780b457ea1dffcd59e14b785fe11f3270c4fb5cad93f78d438c89511aa8c50d9ca1ea60a3f52843a770bf4268cd0a274c9d77a905ee6ba98e9380afe031ac3e98086058fa7cc5c1be9107076f700a8092b0a8e5e4561c70a1ae750ac0b5c709f67347ee66e4895c16c6599e06f480f6babcc0e14e1b18b17292e57f46e345c2647c02673718f1ac0847ff7c9ee49fe7ce493befa6b1d450f1cb1de8f2af8c2358233f10d084c1342723f1c9ab8212b3bd95484f3f56c84ae6d837825da080630da080adb9f4d414317ec19fcea7a82248e30ac607695260b0c07d88136c44c6ac13cc57eb1479ec70f5093dbe7f90ff6f03bab68a54fb0689d43ad01fc4c7c55e1f2bde3b59627c4500be761704187acbb510c16fda99979d7227a8330ed9a56be0914a659d3c9c709821222062160e6e5485a90d17ae53cd11ca98f6b789133a5712c2ec7a358edd83eda64d635b7aa91c258d5238a76c2268ae662d36bfa31ddf1a439d17f7cda6ffc0c02dec9a16592e06cae00515231a060a08d1e61f8a31829e34380392dcac1f54e3e602a0e1275a163a74ea53cc727a534a5c8ed141b264f295b333afa6878073d470d3ec5f3a9ba371093fd6383b72611612688854445c03cade545c0aa601a158a7aa6b18f6cc9590c72056490c8f832362d1a422ea3f7c9cc03f33679359eab4daece9088db3f29307c64e43e216f66cec0c968676bfb1e3a427c89ae8185984290fa7a0965f8e96afa7b06ffb8b202ef5eed390a6d2e4a4e04a8c4b21fbea554268f520ea4bcd3f03a4b8344d3527ff1c84e8857b588177291e4cc15db3262ba2751f51d90bf710dac9156fc2c1fdf283cec9f0576611a0b99573227fba5ae7ee2a0cdfed03f53c07ed3c3c78384a86eb2c959c43db3274b436057c019d1013279d8ac3fb43a5a8bbb6221c26472df89a6f3192a0d259df793085e0bed732057e195a18a911da17e3e65a34dced0583298a26382463e3ec72e509396c95d24980f4c0e54838e4791bfd5a3796f3e3e14584bb0bfa34ac1d6c8639254a4bb817ddb84aeed41566ae709ae9e00675ffa46521609262afbb88565e53b1474f039a5894dba8d1e2a7a1d86e4f0be9811ac9cfe6486f9f3d779c6ac887ed87fe33c538ca0b3bad27d9225a009f32f2fbbeadfb7e5f00dbf9f6f03913addd858bd53f802098f5940178c86a951989021b46dcfdcb014b422951c25d467e55f30d9f2d76ef8f2ee56b3794309b29b65c5db569b68b6b2a637e9f962ec7e119e2deab8c3e5d009c472511e1d6a2d925a95110b3d07b5b090df6b9c59a7e24a0c9f0ac0e0da9715cb2cf3f62a98c0b45ced1092cdb3ecb5e51ab9045f08edad2cbe4578b2c44028dbdaa91815b201e3af69239eac52ac2baa33fdd10dfd90936d0535ffb9c55139842ab051266c48e392a802a3fa496e888744222cb73fb42b4d6754b3859e44c7859b544bbb4ed104f48bb23b9e95dfe83dc93aa55b8987a2828d9ec621a56beda60126030a18e12db569ac94737da50e6dd9211656f3e59f7e0480fe7785dbb1674bdaeb5603b4339ab0e7c36fe69597e8b36ca00570fb4d90e6afb2dbb21131cf441d433517e3f795f8d7c553ee47ce5c89a58f959461adc5bd50888f3b7d793e7549c2b1df7eacb83de3226830f35bf074fd9ec5d98d298b998ce8da1cc8f297b29dc531c162f9ef289e09ee9e57d58a6b071399e2de7865e6d23e155bcbe1a28d98ad0281efbddf9c554430a2a75ef177b3190a2aeea53007e4e6c4ec928d265b0ed2100c66ac3dade8ed9988751b7231e9c1bf1ce451e7c513ce89febe7e06255e42e9712f11f624ab9c05128e872851344beaeac333393278e0209c752960b0b2ed45ac4f7d4331aebb105c9ab19cc27000f7a0e3ba28be46f9e585008147ad0b7afbf9ff1c67a83446938d7c33af2cf7c3b1923658f16f9a89082405a6b110dbea0d77be99e2fab83f431677e42e8e3f4d6c4264cf0a97255c14f2a4237f5f7f407d640180844243b8384c7adb9d04cc6ef8c036848b9c590f199caeb82b6742076fa494dd1ab0a9d39867243ece52aa30f6bf56b892e59ce692f2d31e489f5a1339697b24dd2b7eeeb5b664d2aaf30585491bacd82688fc7adf0e31affa8d9e4a27e3b380e1c9afbd1eebde3ce14eedbc05b6c4d1c89cd6d755b2a0716421d238cc2c49e389f1b8f121ed0d7fca8c5774a4011ae4d1b9fb595b70794503ad2ec4038c1fcabf64c4af80f7d2420787c650e795942ff1c1484d7289fca733dbf4c63d7ccd2870dec499bfd2235c7be5f240d320fad80c0ff64af28fa197f60a9e3d31c83e1746c0cbc57e0bc14a0e08112f91713eb91e8dae0f23c8d692172320e32852c4e37af372bba21323cc1933a751b24f4abd2720c1015f60961c9b4c8148758e4daa190e9a320e5660f2ae160302541c8a8471a32203140b00f403b406ebc202d59c8fb6830303e506d609b202b902c007afde9d0887f3ec8b09f4b206e40198afa3f5079107e82306280e0b0d0e04010305f00598061097310171bc50cf0300104c92638fafc15cf476d20cd4c236b468c379cc2f6fa6692b186ff6e2960d9b52205e941f0f43ac5b65635a9c53b916cc0be87c979ab35f4574d8c4907650c14f8dc38a9e87a0d71717bc1098f345b73bd7c9ebe8630604a8f95856dd2090e3102e44064e14d826ae261c157035538f3fb6fbfae99f1ca49cbf3fedeb4dfac1db7d06b8edb1c4475c8fbec04d9ca87b49dff9bdabdb53ad03dbd25315c178398fba3080cbf2247075420dff065cc6aee29f57fc9c859fce04b851513671b0729c80838d574d52745887a8f1e139cc3e5edc1721881bb5b043fca0c580a8eb83f2276470c59f543ba243407571ff3c945a41f1293bc79fc58543fcbb3851f4ddefd7bcb44cef57c7c649c5bf9509dc4a59685c8005cfc7d80cc8044c83015adbe02d53605cd5e6297cfa4321a41ca0a5f0d199a542688ba08e021f3560ce94004a01078013431580f85fe09efe44831b3b5f10b4899f1b3f3a72cb36e9928fab59c2e1bfffe55a77cf7e5f5fde6c77afec2d5392b403ce02c602a6029eadd6f00aba4432a124af97df239e9b74a75ca48bdeefecd999a6699aa669a6d1b23f5feb13fa927c41dfd7ea505a847f6d66604e0d02892798191b1f0f0883537c7a787ec050884c12060181f7d347e3cd78dbdb7a6c372f130d43a4f028340a433c86499987ec117dc2cf86b3308ab02834433309be09c1940b2e9718134b9868bac49928d642212cda582b312d2529b54ab41251495612126d1ffa51f149f19ddf79042ea1afd4752bd94ca4696532a94c49aa294855424bb665b2ac11b0e934dd4ca7ca4a85a5f22c955fa558f895e9faf92bf4368ee3ded63968cd7653f119f61305839fe9cddddd2dc62bde92c15ba04f680bcd301557228b5ca935968a865151960a6ba9af540cf5f5b793cd66b3d96c361bac6d6f33c3ee6d8efd147329cbb22ccbb28cd265e8b2b291a6699aa6458ab08081ea4be6126a255109ba5171ddb8c2f1f778bcf7a648c03395ec1a5b5854999d582dd7d8d2b16c924d51c0bd6ad677b650d7cba6b647ae5f8f03c4d9b65aabd56ab55aad9676cdd6140c5d5a6b2bace6506fa8aeeada014916628b04f1542a954aa552a98450a12e8c1a6bfbf06030180c06837dc3522034ecbbdd6eb7db6dc777502558b94aabb4009aa82914b06b2c491355cfdaf573976b1f5e5d6a386d9aa649a28204c9c16c1412a8d12d8229484847474644371525f394080fc343d4218aa814c49cb30346474836e5ba429d29de46a0513f80c84aa298abe5e3121b811801da87e779ac109014299244dbc25bc58732e21ff43c0f45404ee5ec836369919c6d4c00df2f94caec1a73c4770aa8de7b1fe86d781adee77d80781f2e750dc04c46176b2fbacb8ab34eac9e68de582c168bc5623128ab58cf2a08e8c7a7595f777777afcec0b26af3d168846996e8269603721cc771384a70554888757021f89d8f5b940bef320f13511445511445894e2a1cf5f32c79cb7956a917bcf5f3305ff9ca749ee7799ee75963dddd28db59632ae2eaf6b8123d3a192fe6e68f07b823d421c2945e4c395470e07185c5468bb52e2797161b2c3756468c432587e9a50423ea0877803cbe7c633c99ae879d791aafa90034896508a0c90a80d7d0784b11335d0f4fe6c67c19e411ee107594604c2f2a39308e9591e546cbc9c5e5ba9c6cb4dc60195770e01c2a2f23c09474883b421e192389b9325e8f6ec6d27c8d0350c90ec074efed6a8d9adcc276b5b042b39a85d2a159403943724dc1c5fc8145bdd0a558de13db6d480eadcb9ed22c1d4eca8c829c9c201977b3ac86f5ab3bdb65b3daecb36717e371cc991c2d6a0bfcead4d6e98dc5a5b5e5abeaeaef7a9fd71c560c85610f78862c10056be0118804dec0144c0a57214fd8024f70069a0ea2200aa2200aa2210ce1eb12c15d1c621726c22c7c62177e61201c844b1cc342d8c4323cc32cdcc2ab1b951b76611776611776e128b836d43a9362e939a319d56c48b729dd2a6696e7799ee7d991d0ea5636669160316bca2c919d59d41ad99a3db237982dedcbc66cccc66cccc6ec1add8a884b92e4109d3193a81f4082e0389013c1101d8eb421391b940dc98541de6c68bb88ec64a041ed9e6eb5cf6b88cef883bbe269cc33a40d4a45847b221c11cef6f77900cbbb40c879df0da1acf5589b3349d6bc7a2f0e12319772945aaf6a6968089fcec331551b4ca6cecb5d4e490c9b0410e7f43eaf5de46ebd0aebe396158e8b623ca9301e73b6278ee35cb462af3ad86067e704dcb2aa3a6a23af694de47d385c131c032a7f72c6f3ecdef5489b8a72825d3b246e56cea71c05a888063b19f47b6dd1c3eeeeeeeeee1a6a9a3f80c888bcdd63babbbb7f6813a9ecb2ca2e91974a501d87f409529bb6cd3e9fe4d4d6bd1877dc5139a4663f66c73fb5e2bab4b559dadaaaae2e2f693a9008dac75b32ee9187f138e64cd6769e9a5ec73efa8f57a25a64c5aa7e05d5d6d15b759aa6699aa66910652a547a461ecd239275b5ebbaaeebbaae333defdecbf20243ac211e5992ec264b6553fa74465b5bd301ee59cf6645455e78d145174e9cd86cfdd209bb7ad50b1b955339e7201587bceeee9ef200b7501fd01b52711d6baee4f7d9ef63c6978be3de2ab00d5fb65707e371e4b82fa672361daed61808af367fe35d3e25c3d75a6bfdcf87254b8af817dc173bffd79d082eb83032f2cfc1da7fff7fcebaffdbb7b6fb7f9bbb083a518d7bed7be2bbbba3721e478c1db05e3ed16066c6ff1cc89c4d50d08e8457f474f6ad2dd15031b25c91e4590f737d0019363686e52e0856b1de307fd77adf756f93baa651f2fa036dcc67b06b2f6d422f83d57698ef947b737e7b3f32ccf9ab6398f661e213fe8ef16a47efdeb9771fc3abbb5b8b81c5d83b22ed5aaa6d416db285ce235190b106701d81dde4232c0748ffb8eede9bed03dc5bcb8368abb53462e0172f77d673ef5ebaff263c34bb01cd0d672336678b41c7359049d299b0fd4dfe5a45cecb9ee791365d4c77faae83c97fad9d39bd80c59c6fde73f055a7699aa6699aa678d29c49779fd267354dd3344dd3fca9e6bfbbbbbb182b2f57ff7ad7b71eb6fad89b5e5b5f5949f8cfbf7d2b8fdad96c369bcd66b31366b65f5dbbda7544e4621d1d94195ccdbe27a248922449922439c024ea19a3e37fee8163302ecf3b33513fb96a5b383efcaf43ed2813eaa75a386e5168bc38bee0b8f7077badb78c14544082954a2471040914a09150c8c1074a5ab3128470b20458140288aae144e6840f507cf6ffdfb6b705e6caf8fff7b8ffffffffcb7948414558648c31c86280cb22f705d608ea9fbb23dbe80dcdc8c9c06e8f3c90e92ca9a13705741749395a42a4b3a4ea2c99f9d86ea0d1761c47854989a36ec1845c9bddb5da63aa1205237768b3d9cdfdfbb601dee16eb5ec2dd210919d39cebdbdbd68800c2356f1d234615dc461bf0252b80d08240035feb9d2fc8c0d34af2134daeabf3b3064e27f17a341afc417ff57635c71c5d1d1db7e999050194514d6f3ecffffffffffff7ff71c1776b6941510c16c6d2ef9986fca89cd5c0a8a67b3b5ed759db5d666dbfddbb70ff625a305fc2f9345ad5e6badb5d65a6badef3e850c16adbbdb7f77ff5abd7ad561057c22c2019c31cfd8a054408224908339d3661773d4f0d44adb4daaebb852f95d696d59264d29bf2ccb52a7bc951e4b856b71289acd6a3529526a69e0dbe5225bd116ffd744fa8b3fd484b3698525af841546d4a057cd334487c84e29ac3504c19cfe400d4050c7c5be81c95c04e9be432defe6ead297bdff852db2d97e90289007044190090f131e263d37fb95f1da6d644a7b37872ddece667aefcd97c9ca4c3259e6cd44c2a1c6046c851551a23c79e2eeeeee2824b87bffffbf5c57206c83534081d2a409134c744b480a29bef0097272231402d2cf4d1749a7d18d74d75cc37bef1ad8c339459a112059121814353cb10414233ac890e8a0040837a010847c39ec2833f008d59048a222812490e061088b23299c20a496c215f1b3973297c14a27da7cc22e966464ee4aee62bc74c4c60c360c71031294d51352aa6081d1048945932246718ba4218459441427b878324113352c497f9ed46e30c1dd818a09a607bfb0bee6d206cd43040ad00c3f424d806810a4360f88cc10a3a725c45a6bfde4a28b346c440810d440a3879b0f4380500ba208275e1c6132c41221d5b608f8f14ac68ff1386692fc9207b856308cc8c28630788668dc166038e1931621a36166c4d5942ce02c5f00f98c2bddd0da48093a3b112991d9928e1222f134c2e419d2e687e74a4ece9fc34288e33af7ee642b10dc0c07070b285a45155a68b10077f3f6adb53894396a5ec02798d94d13eb5cdbc608fbff683bef7e2010952a1445b164439aae494505e39515969696d3c985bc71631cc71126c74cce2f3530a18e1d62cd143c3af3e8ce199f686231526019991e3d666668449aeeef9a9a9a961a96959a1acfb30e723736872dda4f1a5a0591a9a8044d9d0e0702002357000c100744123d4a7214438831e73d6441c88399908a1349247330600c8683651888a1180603180460180c30081020a5628aedc20c27a6322d1335e04b332c04baf4e8490a9b97d62921a83372394f3c080a2631b16bc815a9244108c765e92f01aa0128fe4199089e92ac61653f3834ea04048db00afa8e00a1d0c62a98c1700e66caf7072c910c1cbfd00d4ce8133f1cd77aabae04578622f3826d2bf97e250f31895310da6d7195a192966698423fe13a3d88a215bae379b0d560992b6fffe8812e6108a41252902347348cad6f20e2c6c807839efb9210de93922f7419609f4feb8ac5dfdd0a9a622f05f8319142345758333053424ee5b6b821594761bdc5aa1b0b3fa2430bb298e109901d10a2d9d17b24abf1898c325d6389936307340d5e2979825e429d41eddc4c2350a224dd9379e5e49acb3f6f7e63ffc174423403f0c2d7c5b0d102dc4d9b93f1718d4e8def3f456d8992a9cd1e71825e0c383c62dac901161ee5d4442cfd5eda3414a7471e50ac25f6fe76175b0f0dd50afbdaac01b03ad4aabd12d98f4a280d78f70a417f9009bd719b29dffc041a3da185ad5a58c0ca8305668a8c06cc03592ab00e68367c554a3ce30d192b149752270b9da337f3eb2ddfb6ec8903081c765043f3918598b57f162f1277744fd92c93c95bb06a9e92c5e077e17343599d65df27cad8bbe06c7c257a8ae1f17e264afe2ac88abe4a048c3a500eccbf3a1ac25c7ce6c7b9064cf3f0a6bc7a4a728853109994d797280679350dfbc581550cab57d3df1efea3a617004af50c4907d7f09a702eebb681ff8dd5fa8330928708a1ff479407e880e5f3e7d82a02fa2d48971d0ef9084223fb302f030019bf0293a78b9769a59110a0595eeb3e244d8679c9344c3de48f3c68c5a7d4beecc9190f4f2816ca568807031340b010b653b030a8da39186ef861e466179bfd9f4db649351e7562f78a9837af6819618b66079de3b88cec24644f3a0266245e09c55f738d88978c31e1d40d18298959946dd8378da9641f848c17bd3a0328e60518b8066df28169ddb544d35b2fe939d73f870ee27f4e0034fc5bd81db87f03edb7dcf21b105504e66f61aba8f30db82ffca5ed0139208f83ba4493e9401af2f0294c60137792ce25f099d9e87e36c34fa1bc857aea320cfb5269a3b0b5947e535d532615aa321c0d1af7930ca0a82f9e91315159f81e62cb0d2aa43e87a8d08521810f611511bc44fe2a9288c4092881055412ae052bfb8a08339e650673139ae45184a581e00a5d6a0c8c370ae6f61afd670452aeedb100fea7948ae793dd7164c3378ea26bdef0bf080a5de6a2dca3145a8b6f36906ba1608473cd2d629c2a5ee10321b253f07c33121acfd97d7b874b11dd2bccca7f2622b70f22d3f1a71e79a687bf4052450eb34e1b47cfd62ae392fb9a3b3a67a835f4f931bb9397722005c984d876aa4d8d801483465352f730a8d0a54d05075f629b07b7ba4ca4d32806a6c40a2268eb6444c64d3d5be3fa838fc076836a0015bf2861d98d1d4151af47fafa93a4a60d1a23451db8bf8b890f87d8077015b6cba0fcc92503ac1a1b8c29f3d3d7143b730a446009552ce8bd6a30de7284baaafea1e4dab1b94d125465610f4c9476e618c1a0aa50221377a42b738fe300ffa1699be7676e374f571eecd501cc41d950c42d8025604f6558b5ead5659539df60b92f7a8d0d66e3c5b4ea069265882548da5cd550df3b1a9881b9b57bfc081b181417289c9e34d579e2178c73110efc5f6ea37b4373fc046fd78a14f1082bae408e790ce51242144973716947c64e4f701391728d152f542e31973334b85930e05ff07cf41657a2ad070dd70783fb62f1c607b44961af7ad6812652468a38acc8451156ef83908921ebc351493d2945022808f3f3ae7a92ef94e38c2b8660985583ced486e7b266d4636e7df7de238fa515a005e31e127723cac900ee9c02e756b68487ebbc637aaad8143e6a14796365918bedb54b81c584942006efcb7143b7dc396939737a0604004bf611c0a2b823616270f4980b1561a05084171ea0fb428311d81415bffdb430edc01383394086f0b3b56f19d291769c98f217cf8fd019b3baa7806baae7596057e7eaad95a4f815d0e1d0e4e046578e0a9c1f2b86a063dac493e44ffd765f14aec2f9b674bc894a946620d5bf89d91b940115f45c89f681fad9969f31c355415c2fc948cc1aa18e3fae80b12b842dd43190ed9ca5d0f2df4028691b61e3d76ec9df6349651c8890eda9fc8376f66123e5a35d09a6ad5acc91aa2581907b07e19c7ed6aa5f1652174f0e5ee7515b376d71e0b047a33ec4a5b17d281fa7944ecabf4eec452ddc9a439aa9883ce6cb48b9257fa417d925199322e9b0fef435d2b34f7258c17d2da7e2d7b7de9421e5c08ee2aef1dbcae641c8ed8f74ff4256eba85935847b54ad75bffc3a99df9695c79ccbdc314f6ff730be291c2b47a708321f20095796f8d24b22132a87e05fee37840a3e3b33f9218011b10a49ab97c27f4e5b90f078bdebf98cd59bc187605f156898fe6801336e9e2230df697f689c88c11416cb577494c0a7c49b024591cda336a730dc1ad5324d34202d92a7c4db50e382a5584cf97628bbd1c133aab218d29a6340e7f1d9e22d6d09b071ea24b2c246153050e8a4a610626b4b99ea3efb394c7bfbfb22a45e6fb5279df3990cc712d700ddd95267f8f8e0ff90f36b16ba475dc245be659a0618d1bec3fa39c3acad634808a72349514799f717a92272f9f4751c1d737b76640edfca1a40d1807491449f58f90eb74dbea47e41ef67812f54654dc011f43f3f7a16f365a2da6d91e7774b4efbfaa970384494b3594477a7a6282727019b5c4c244765b7b7a68674514d639fb58ece4c1d430244fdc70edeea45af6883707c714fbb01051da147c4c91a3a91125acc678a9e6eeb13664667d1f36948df4f547a2f3be35e4d29fa7ba9c4ef8ec7dae4897574d2b4ac45cfa50bf00d76064b82cf6e0bae2de229188dafa41729f74482cf9f061eadca1f55cc9b1ee61c936e42c9ffa3df6381f5401c53f9a3a35ee0dfaa3b9d599544335154ed4dd8f75be73e5a248c0eb339bf107378b06dc4d8ecd2cc171b749bedef29579d94676706be5d2aad8a12172523bc82c553540ffd6850d743668378b182b02ed6e52523df43ac655a3e1bb9a42efb20c52d110626af7883274d14249a5d1d8076893c7732c51ad813b8b353806e45b4819a0502b2b87e8860e3d03d0c82bb7a7ea9553cfe127864a5d1692100b796dfd3e40f4b58147c75326d10d00364aca54e96c2b3455b3814d0546930422bca154262dd3c5dfd57c5d816c7a24ab352acc2b4741243baab1477c67eb1383403109d515e58e50329f9835388d07542a2ea310e79a79652d215fc64c770fdd79e4eb361814c3d919ad3fbe8408356b5e8443934bf898459e4cd9d34ff10a18a28d257a21d22bd0b24e9f5425f79425e6f32fa373c6515453c507dfb143c4a285056e43117f03b4b83a774162a669c51ad9f8f5c525cae86448fcaee25f3a9508c9d932555512168525e8db000a39c4a1aa35ce227b3a1757c91d5ec32e6105dcede4b27cb533b6d0d0bedd3caa9358157839c1763039b2fe8066e79d10b7d200e5e701fdd40404d10a92ea94b1db4614623fd1c3c8bc7d6c727a92c5d983856d56f03b511ea991f549d91d9236b0b75a5259ba612164f91889109d12b74c104139bf0dff0e73024180e78564fb1d73efcf7b31726b750f39567c8b9ceeefdf3ae28419ccd303eca8123c37bff9980fcbd4ce75e80dc3c9844d4f47388232e55b5bd92348b476a44aab1124d3e9530cd7cba3c4bcc40ef041c468d66bf0c8646b45cabd6513e12e482cd4b54cf77b97091beabca4527b1db5086d760b47344a4e8f2371109d6c805a71815975f00e91681380ebde5cb5960509a94f026e587eaebc11ff39ede94b8bdaf75d1133e1a536ad5a1c0ea9735e413bd358a617804efc0081c8d581be20074f910f74c94e5f055a46773401f17a6b705529abcbb76138f48a223cfc92021615048e141661fc8663426b4f24b5236aec90fbfba607205ac3349caa02a3efd297217030a61924757bc4031ed973e06d0dca0573ddbe0643e7010ad8014b1bad7280b21e8c848a26b1468dba683221976f82b6d11f769cd3d8be668fa02d9c6b54d0486eca76dd551bdb5423b8ca8b5f619c7ffae3e2ab5c36f53e0b25a059539f56d5ea8a16252a1cb06a03693b670518e04fb4cfa25d54008a60e0f6240f47552b71528705d96398e3ff1fccb0292ada6965d4d683b8e8f1106c3c85a1ea85bbe8bd2be11cec487691ad6af5faadc422463e124a54857781afcb84c5d7bf4f212a91fbad0d29658bbee5b3e6e77bea9832f94dfd226f797921e779671729026730fa2f05f43d9f345ccc52c91c8868969cca0e02c4175def3aa9e3474bce916b00cec51ccdda22e3ba59e31865d1882ddbc72acfa0048ec6f8f631defdc3d3563a427a02e5b53f01856d52e2ac2ab011fabfd4b112df119e13a8802388bc89c7fba1baa08293fc64dd4d26e00c1f5490908c6b689a757033ca2ade149455601b7dee642c57f33c4973870294eccc1cae503e38f2e9816d4f0e6ee64627c6c44b29443d92202758304aa49b3f979d45702008cf977c3eff1a2eb1e0d529fd685ce7faf2af0ab9c106b2d7fbbd6d095152323bb15a5211aa5bef0301f9e51d5d9158bc262cbf5171cb8ea2404a8be2bdba393ae2b001b67848ba2274303ca202d82d8c03fa289d9a4403da5fbce01ab8da98a081a0354d31f8f0a923425a5d183f1a155aa41dd365e0045caf7c2abf850070b6c7b75cd8294e58290a5f9e9819ef35d9de95cb6776d882edd111ba842797ac3f8b168b1d318e8864c11531eb00ab6d29cd92739e526db2da122dc12b63b8744922a0edb5235e890ba2a816af2b944ab740d3faa0da2698521bcc8794a67b9dcd4c135a9896eceb699245d64d4de7926ea00d30745f7a8b02d81dca188ce0eaee935c1a032a2e7180d5d55a51b0144863f214b5ca9a274ad8d69c7ef964c4a0aefbb798fe6a83c813a5902e0096b73664e02f99ca3c44095c1cc3ec63caf753359969c658f480ab9fc732921003dbc18656fc0be757439ca734cfec628d9288e6f2c178f9f402401908133635aa0d881935f12697026514f7dc2ad8af8bd31926cf41b2d493ccec46407dd06c82c41757c264b2946410ed949573f102af0ee45a138ba56652cb11b1e599997bd4818aea687e7f1ae7bef9f8ad66805499897382ead204b51b2a41daac8c03a4f34c27c2c59ffef135e9ba74aa35f419d20ad98b76a25daf2c2d48ccdac36a39407a20de0425f9f022546c79eb4168285ba668986b74043a7ed4e477329960607ae4c2e46e50a605cd60d9cff654467a29ffa10ef1981c7afff1a2ac6252db8596559f35ebcd2cc884b533ba80d38547f97db63daf48a99560c42d2da9ed7b1312a24d41542461a0999897c4f422b8262d08448b5d97e769fdf38feed5eab8d3d575836b27e1114088c918488709ba8a922bfa51be62234dd625b07b99babbb12e8a2d15abdebec8daaeb89cf7d3a55e1edc95a7261db93bf6fe56db4e9e4273cd853324af01360d940a2e01b6d34f3513b1156afd1536c12dedbafc0a85b775a0922fe9826671435d215f052878e7b1e16e2232b96e33e04a91908265a2642bbfbe0802c0ab1f84591bcfb7b1d1db4d8c3bd6d31ebd6fff7696c8ef04e8d3ed883e0e506cdc63f905ca93977738acd0cd4b64b1498260e3781f2d0b6240a202469ade3371432bc2e32769f10ca014220b6461700fdcb76cb09a47d8929d007d7d95d02b8e45939e3b9fb4c1a074416ce98223ec624d2a9d0c3511fe9a0d8d39b69cf71c2fea8f727251c1370cdd351ded73b1a79f2db8245e7c24897b064d63abeec476c4cf4bc579928ca5120b4a0ee7ba6bd80257c2d57683a32262e9923c607cf20a89d6ec982fd52cd823fe22a35ed8193efacd076d89e8aeb1829dfa3b4512fa603bf6885f445a5ab39e3391ec4f577f766c12e3c102f33582e03f964b318ccf31f19363923f06718281a89d2b816f33032ab693ad2850b1385177cd146bfdf87b0ac3cd2c375dbe00f500ca8b2df3c0a40000463b7ac82947a625979b6151441b6e385e8998ed2ae78c71a3419c821d9a2a543b1b3361ae39902ea27f68baae02f9c4590e0a028feabe2de850d95da2fc7fb5ee2994a042a33858f26e558329093bc461bf4afa653e76dcedd4181e81492f8898f476eedb916a7b57dcf66e886cbf1969e9e8921e1d4c6a3d530c5eb2b61462e1751ee2e503b9d3360e60704a882647a4cd24099c6a52451a25cc1fef64c219daa5bf87040e961a02cafebe8c0adbb870a2186d8c1faf3b4c29e331ab94efa4507e897231067916daca23b0fbfbd4359648448aa473170c80a0b6e9ceb22d3262c89244775d8a5e6ea30fbdd9ccc80212279e6dd9c01dc2b9edf1bbb082aff9b5cb03018e03d4f6a57c921a11b8de32efaedf80349c8804124bcca86092b5bb95cd9e4db4f8b418fd2d4665bf7c80f76f8682ba22e4122d2f64548d0b084ba2b92bdbd9dc4f41f121ebc97674ff4cb47564f0ffd5f7697788f61d57b12e3be07aa9ecded24be38f688a24b6284c2e825960f1cf3b05ed7a55ebc2aadfdc15c6cb479e49aec6c2fff68a0c6a20c2c5fdcac0b2a1dd1c5d32e1db788a0bab93e50d733a34a6e02057ac16b541c734be8c379bdaadb07a16626fef8166c61af51b534cc92963c0ebbd99890f8201aac34d128497f03a3f547acf5f70df254a88c7b63888f7f967e818fe395a0ac02da0f9c26c40bfd90f6f7572500c37eca31107d201096b55bff649cbdf49ec458ebfb286d8551e17c92b2dd4ce8e0cf9a6f9dc8984e8fdff420c57fb636d4a8edbe3c742eb7b022113ebea7541d4171240e28ae79755f169bc6bdbcacb6002b15588e795e162a5980792baf5fa70e366952578ef553f3e140634aa3298ca49c4dca0d6664f99036ecbc8c52bf51b20a7eb65c6f54b0690a83cf3cae209df4ba1e2b91233fa90930af2badfe7519576b50722701a0af4965a74c5b028a87607f212715d39f642b5401344b03c91235e72509351f61b8609615684d097b6cac4109e94767c7cc24b438b195bcbc3aff4a32c088b316509bb89eaf17cca5d9aba1c2b64fc5c1852c85d66098d2a8d67df5dc90069e53b045a94e6f0185c35a8c617906039fa50ebccdc84340349e4e6546142043a7ac8e702c736f9d43ea5095cc263e0a41644102f7301e47ab525bdaf0acfc3dec742cc5dade97cc9aa34470facde84375d261f548f47fd9719a1b1e61f00a6d8b484e97d7b44e0ef0f16ca93803658c8465e41f163c835975a3d05d43a9c908ddcc7f8a56b2462fa452dff59f104a541e3cf79ebf5a32c29eea5cf0337abdf7865b6bb325cfb29f16a610efec4ef57aef3223d7907a680385a4992548b4733d12ce30cd8f6bc0103b91d3a1a4a0f91b2b1e82a2357cde49090f1e31107841d710953acf1c28a0c193f8eadcae3b6425ee9069418602bb91d81746ea621ee36604d7ea5946293d10af931204680a7520e99da5c10994fb584204a5b2be9faa2af3ee568e077bac009c52dc60a9199b669849ae6d5d32915eb3b35befcec6210296a7425e91a4a392916f171466ae361c5fbdcc575f8b122ea7e350b7b031ced8576fa3a2807d06d45133d6d8c937518a6b98bae134dd34ba2d74d375d37453d74dd34dd54fd7ef46bf453f05e9f64701cda4dc5b623b5c0c89cf5ee3e48e8686d2dd18ed31daf19ae1b46bb4c668b6d18ed1aed15c5b3b56334e3b5e6b38cd3acd18cd761ae3346b8c767f6cd90878d14b03f88050710436e307955b2f61ed55c87b02faee231df001a73b8eb7a1dfa485ab218d3a087b9dadf5a60bd05530563829282a238a15e82366be732dbd2287bb0afb1dc1a7f149618a5044cbcfe3bbe7be7b2b30180a7055c154f565aacc0c8c66f411388732f4cd32e6d8b6b39671d6e0791f1148368b902d7fcd5d05d2db7d3ce5111306c5a45d73019e49e06e83d000398816ec111e64f09673b00e84122b08ebee683757bd104f99c647d10dd1d9b0684f8db8abd55def699d82847890df98b23f2b3ae989be38001a08e98828015848aeec2099c01b77db41cac75d79ba07fcf4c1b7dea1888c891d1888140c87f565e107413ef509801ba4149e07b2d13c7312e114acd58c61f65b94211a7c7a191786e154f340df73bd65d1abf136f87b33c8ff1bb3534ad7f622349f2746b2e51374d6ac1949385dcef0840aebcd028fa575ef990f3b7d85fa204b96bb78b0c1334b0ae4386a269f708c951fdb2111f61abdbce13dadd849a88bc33b91a7cd768dee6d6b66ba3782bc7084945a0f43222a5dd3bb125f196917089bfdf71b24fb10166aa121756f03063f9613b56ff7d6ac8eda40927a79e1304951c2400fbfe9c2645d4a5872a626617b45cde73d92eeb84f3ab74232193246302093c29d8501ba2ac1ec792793d5cdb90f11383215fe26b8714a04f4d6c8ab6482980de0013d875e7cff92aa205f6f155802bf05df3a017d86b10faedcd8569b69120060c2d98519a02dbd185403a86c5311e8d4aa09a4319b7f5fb17412ea9514edc61a7e2d0d1f98d1a386e0bc32e6cf924c3ad1a46c0a3f9f216e16b2940dc511e6572509d30362b93997adc3e626c29411e95a17522216b1e26e190891fbd9f2e40390cb4d3e993cb8e44fc9113a0815394c423f51123c5509e8131d6a251801159da04d134ec8b85aea71dfac819712e0312bc038c1d84c13e0ab4d5c0f16afe504827668f17f736d91d8a0dd04e380c3add789c899d171ff5150f8b941533454bd1188716a0ff14ddb98582dbe8823b8774f4c0e987ae6e317f97cc4ea39fedb19097d6cc71b63eb70e56ab9d3248a18b43a4223ec11c9d94ae2140505d47c1b35567dc4d24e3d96168ae8b410113550151891043b66b6f6afa38484ea8654caea07b12c8423b6ece4235bfad25f7176eebc277899644b39591f28b31a46cd118e2cce0574d72783683c97809191cd80fb9fa058353d8d1bef28063d47fa96a2ccbea650a47b20aaa54c544131f4149d4c5cbfa58c8af2168ba278abdcac78d207976af8009af311376b5fe38e3c5f3482715871902211f43b11ec5e771b22edb5afdc9e486914e88a0dafc313d07dcd47423dae7dde6464c33d8553c5bd48b3fdc42a2281c7c33f229f7a1ed7d0ef31080e7e9ef0b8063e8470d013d86f49038fd5ca2566c1e758e61d2136e98b0b720207dff2f64209778cc2cb49c581ecc12a051766b139a3d5f9522792fd0299ca3082aaa0f139d79beae74576592866743c8195646b38498649810f898fd58af81c488ec9a6ec051b41ba13769cae76472002972acc5cb91d5d45302b6cc2a94b9dd665b9c24682e8ca0d0e5d34acbca635fd0b858d243ce589eed9eeb268b3cc4a0c97daa6248d97097471bfc4d4ea805d9242c660afdf54fbf1397d89a0ce08ba9a4920e2aa84d2c64dd975cad52a1d0beb16b452626e678c38b6d890d885dcff3e81396f6c03f7ff069bf6d0b292e389a6b7aeb6f9703246b34b4c56a7dfa417c3abd6676daa8a7cb7dccb2e9774c8f9b9ecb989eda6886375d5334eb3c2da2e44064e320cd105c80ebb234605ca332c948b935bcf418ef84aa8b5f19c533a9055a76b0f8a2a61fcdb271d28e460124a29a15625b495b0cff183e8bde008f74e6fb7c7dece1be93d5c1d80238ecd3c56d986ee02b51b964ee646e0e2906b0e913bdc3fe98c226fd18b864f4c20f10900a7165e0c5f148ef4b52132b8159c3805461ea854518ac8052fa698b40f5db35a51d5229af2f809e2ec7cac9aa7ebfaf8fa83a1138cb52c709387505ac9fc77d18a896579b332f2b1ad3d60ee9c566c758d5425788a025203bec879009d989e5a50a138fb8b7acbfe218b0c30770efd1269bfd6a6ccbd005143539cc8f9dcb854f2d6e148d203913699943cf50437cb44342f44c4a5b68adcde48296303e8e8e2d81cf9950d43d1a2d9102e060961c704c2dcc0690b33739251fb82f7525c6a5141b9a0f7be794d62c730cf0d7c87803166b2a581b703b2854efc5d3d80f0214f2c1c1833cc48cce1343ddd1c04f2897cd01e04dab6ac983e6e92244c1c69e964b59e2dae20f1d95b87866947c72db19c810930280a88330974ba131b3fa05eddc42c82d1f61760a9b3f6bc47084fe31dc9322338110991f2f21119afb9c3073d6b9bf8789a3ce4c6f878c03322c69160bbd106f5fe9d9f4e51c2e258ab20a0b6883804f4c9ffbac16bfe302757d38d2b003fec85e38ec62e6e4d11625acc54f5e544abe971c1dba054d35365a8eb96b215868c8cc920aba8dc2e8f0a8d76d05caedaa554e344d284ca83832491a1a1348d237a3b1b0975c3f26b8c8f680a85e75987aca31fed92ca273a25b70e65b3e5a77efc87bfe60608d0865d52386c8b59c108478c88ec59b58b7a30213b5f75d9555d85f5259de18a4f9bb9660ff1c026983da88278738780a6272382688ad93f05cf2d6a82c1569e65622d688d12ec52497632c32899bee900ac5c42a545c68708115ae6faf62dd4c5348e9de8831dd2efcadb091b388a1f0275a522b7a2c54dc340b5e99f94e41ca301fb0492a69e60680dcab227a043b396cc9e44e6006adcb3ea8cb6fb63cc69acc63593842ed39eb5eb58f0ae988f78a91ed24170414877c12f0b12b7e0ccf0c3ebadcec6275c892a315ffec0a528f762797ffcde4636a3716a47ceb2b4543e81fb028283623827508f0ef3d906c3a3e33af06ca307a1c5035a95eabaad1eefaaa615ac1583c59eb2528c14aa1e654ecc2885e72266a34d16ef4f3765117000823987845189b56689119730c339dd496e92902fc675187554bd67a7b9747cf0ccc30c435e4c4903b778661507a01e4e57345a082099e07f96e9c2a7e8e4e2ea45d70e50548697bdf1ae4c3ffd76655dd29664b3135e55f89d8dde62d50b8425b45f506dc360579915b0817438a49c6f8c0ff54184eabca6ca9cd3c3c119e8bc1eb18c737c1ffff575b97ca5bcda06084d46e7fb563b83d330dcebc23e9d0a00b85c00f2dfb1ee5fcd672492ce0bc26613c56984d68962800ef83bfef4d144c47928bdfd71b27895227655241157b2c1d4552bb983408c664df59043a6c1f20c17f60abf85853287fa6bb349498509b2c9ef29287da7f139e1cdad95631f3cc2173d846d40fcb2a67590af065692f1c1eff8675d946615e7b6ba9b9979a000c82abfb7ce5db0e6ece51aed93b176dff663e1a1872d88e26285f5d94c1be9b9ac14ae17171bf47efc02bbc2ee273eccee438007820493f1109f4d0951710c7a3f7e9055b1f78b9fe6f715e00341c0c034b637aed83e935a1acde500c9efa1766264ab1512eb0be6753396e5e98e8d1cc66b8acaca13c920878deb961906bbd7e2176da1889ba28a178d04a8de1db52f17a53c112d10fd00276ef5c7f16b11ea40b95cb61f37f60bb53c4505c5cc0c2fb5429a2d7317ac8779a69666cd8aa42a6edf42a51ee2231166cc8ba437a4a231abdec36e8b8a2933aa0d2146dc110f3896a7b082eac2aa32d6d38db5de9867dc6a68c82951a8066d47a17647f1741c10611988c09d86618b3317ff8b37f1c9902b02e5cfce37ed53e822961568f9f77d79a3d875c6a7bafb60a4825ba1540847059aaf43dedab1af41e51a9cd4d6beaac248f15b007f16c6ac655ce85ae4104fd272485ebcbd033a63d2d49afd1fea8135fba8d00bcb153a900d5676826f4091549c209885acdf43d02edd3e505953d9e73e811a55621d84d829affd6e6fad4c0ab3e69156584d603627ec256c81a0a780a0ae3fd09d0fa71f80b70f57930f97ede1e8528a70094e76df618067ccddcf26bac9fce85bd77d62bb09ee43d0ce806ae633dac48fcbca6066ed67a68266a7349b5703a70e6dcf9e72e079a85ea445ca079e7f018776b620d6f2eb07e761be6ace95d3c20a66eb956f3fb2891c447339f6c185e46c3e61b0b5d2a69617d42b9503d79bb221ad181940023f82152249c1d60d5f9ee54216f8f58ff25205a105bf22a328cf9eb71307c748a22ca64df28108da5f83a10eea95b2912945944e0cd02fca6e1cc3e300d36c3281379d563ad85df65044e1749331002ca8004379927f9e0a0587a0ca5ede13a6a3bf336d7b436faad9ff1995933446a83c5eb90f069398de14914f8a5b1f0824dafd402050c7761f468e5bf571a926658b9e1d531f4fddc9a76e135457145a024d940abbcffbc780f07513bd5f96d4a14caddab1fbdee2329dec4a10fb1f135faa6e02c7bb9dc82356eaaabb7aef4ccb13aea77e55c5c45f255e867a1fc001b768a84b469c8e12e83f8f30d0e0015458b810b29416b5b6b1e790a02aaa7586e1ac13ee1ab0a285995d91cfad495c095dbca3c9e0c214f80eedc58a1215b00effbe812bebbe3396edbffa6967e686aa2330004b62d25ec609c10143dd520ece427a1a7eda70ba1c4ad181dc43f23e7c02c4c902027b1a78e310bdea8f803e16e76266d888c40252a7fd7024baef74e83caf84b06be16824cb2147d7809e9d1d684db6065475d68032dd266f06ddc2ffe065048bdf178f87938eb3c593777a835905474889629507a1f035b1901d442f6e22311febbd2a4ca18993d66b58e3223201e12403b81b053c048fcac7e843a30e270c0780f860b0f73e3b124b5e2470b3b51fa9b59cda0872203ac4dab53190e4030b920c7156a3e17a223e87e3090ccd87350b23d161a16825cb3bb62f9b711133b6eee306ce15d34358e6db9b27cd07459b8e52123e76b11d9c75a898f40559635d881a83a5924eeb8998b8698ad9f09303a5d5b0736510fe6eed02de9e1189515c6c13303768e5754669c1930b4d475943cb3213f2d7a671c84e5801c04571d9fb18a7294ffdc42c539f33cd702a3efd21bd397ee5bc358c1057f6fd07f5d7d012fcd723a06780d2d411af07b42e668e093d74c88029954794caf4231ff6271b07ec46c362a81547132928fe1f66fa52e192eb075774b59c8fd2bde0a3e20d612744ac2c0480ffcc78ea385a2d2808c07b593cd4877350801f19dd88db66e486fe04639cd5429311b53a9d480b3284647289f064eaed3d4eddefb9b3d93ca12d34603ec5bacddda30f6b426c66d32a6ad53947d433b8030263eff00ddd8e7417a59b99432533e8e37eae0f24554cb000ca5e28144480aa4d07b35ed51387289ef6fcc56c36fd4384ca0e3f9e2ffdcfa24d71d319d68215213d475093738ad4d009dccc4dda51b81a30c4cb05e813b2d18d48b9a59452a69464360150011401e30415fffe4f7026285e9bdbffe7cff17f625dbdc49dce1aead7554cb28bec6a3917a89863b295ce0b7407f6a50909c17f9968fe635e31a4553e61d571c3e26e6351e0588b165be057ee125bc0192f5844d9e421d7487f4e5ce8139dcc8443beddcf88d6082f6dc7e7ca2814bae81e638e180f34677a78512aa2c458796d7dd192c2e123634ca5e82e2341696f5e5293b0977648b1a59451a14c22bb2dc6184f3cf3c453041b9c349c9338fbfedbb6e291c54929654e86b8d66484b75b187683b1f1fa011bb332e24eddeb14ffff6fc284b4e03a9d4ea7d3e9742d429efc552d791d618b89b75b1886bf5ef205edeb5ef71c284ebbbb2d5b9292ab02844ba79b31ddc423ef3145addb5523692a136762ed4426a27720c87e6715bc81ea448952a68c1b3765654b6ad464658d8d6161799832c5c254074397d62c0882b969ab572c2933ee5306a9fb4f4aa35ad55e10675acdf61302010812a27989460001b70104880a183850241ae1101c212525c8292950b2650b5ad963ee044948e307f9108cd9e2c67c8dc60c168d39d30c8cb95660cc362202630e078c19e82660cc410146a3a111b4f706e5a10000c67c1b108e9900916dcc050cd0c67ca0c88e19c1111d33525202a76525dbc4597ac15a255be5bb303dce06192247f00851a2078441869585aa0fd6939ba543911d715ce0b02ae364e5e4448e8d2a38b8e0b95d43606da466609fff8a0d4d2a8a68915083624f7677500572b5575f317be36db4d2fc08d3d3268a3c834492915f58720b1749064d589eeeface0a939046820c6a6d4d1bac00915bbe187ce5cc706a8a88e4e61070f10594a36888a4225402cc9c4cb626135b4038228495dd30ef8f6d4d28bad83595eee855a9fb543fe7ffcffeb2358d0f85c38f2f172ba4e25d257424afbc53055620f592e8809975c9e9d5d4e0316156adb32e61a83a094b6332fcf4cf4bd494e23cbf9c4036c74a70a5adccfed9b449bd461b9cb8db111151ff8d0651e49cb4dbe39c0db4c20fffee55dd954e79fb6d2a17381ef7f7f7f73f411d6bceee39270debfc3b8482efbc298c122405a166a00b993e278eb77052f0dd4bc989b7d0526b6deede2b5e4b29bdd55ac3064110b44e8348596b95e256ad52fa6cee32e9ba29adf5d7cc9edd73cea74ddbdc1b86d31bc28e900e999dcef3eb3a6fe4dd0c9a52a794d2af1e3404a0606ea2eacf39ff8542b1d62ab972ede776d316748af445b148741920b634538c31ce5430c618638c31c618630ce27a31a51583f5da4aebd72917a4776bce190e78cff5a39b5531b3d27dca4e502d99529a901e29524a29a5e238f39c395dab3bbfdad44e870ebf12aaa3342383c92143339ef5cec69c75e529950512ef917874d2f992ceef12b190ff7fb067ceb10e805b2da557b457b6f53c69b9faa5dd5b03733817d5744dc52e62a798eb5abbd4be689c48e91cf31bbe2183b304d3aad8e5f92e8fabeb5a0c629bc1abbfeacd5d5258e813f3baea9eb7561915fdc7c677bb1dcfa7a4ae941413d66bf9ec415d31e4f557390b1a7eebeaac73b6acdf60a3fffc7f4c73ffc97611a997ddc7c67d6253534ee555b75e5babf4f2e0351fd5e5f999eff9a78772aecbfbddf7f8a9afaa5353eefeff2de55e0e27c488eed1e50c7d3a2b9d73d2a7aca7aca8776a285ee85053ce205ee83fdacf7f3fdfe3bf8ffa275a1b611287cdac3397d6aa24c301c3a610180e86c4625992631884c23016361f2f53bdafa8f5e9b32a0c4e3136e9d6ee5562362e838fbda01c95b26ee573ef6d418c6a66b297308e786946751df49146b57a32c3d697e95cbb56f53e801f30786a30a95336352185d55608e787a13c37bc4be988d69cd4823b6f87bc8d019093d46fde500beca949380c43e87844e8436ba12946ee17b90a149787604046b4d94505b4b3e45e96dea47bb8371188a17c7cb559ba1f29e01b773ce865f7c64233c82691fb8ebaa5a2453e8addc0406572d44d4a0efa033a3f2739e1624973580e3a721fc8d0f017c8fb80fd10c3c84ac578750518566fa85cdd70fc9bd43e0083c9517118cd4dfb7d209bc1daa48b319cdc657ffd2c5e87280d30d9e53b4d6d4c90e410fe6ed2abeb6121e34933a61d35d63a7dee40579d44ea07330267ce571dbc65931d0217205f30fe05c4105573583bd16703f42fabc2f7c2da87b5fbc91fc456a7acd7515689d33b05cf0aac82f2f91e2a0c731c56379ed481e0e619c0d1027542a6f46353d8b19c6c9e0af61cfbf1c9bd36126de3169d77117b1523cf39e1dc858a18a577bb715123c22360f22d049b9b136b285c3417cbf0975938e44ad0abbc7a1ed6731156fba458b6110e8bb3b2df3aa5c216dd798e68c62e74cadd5fa887a9a300fbd6e1a88dfdd78ab70b23293c5e5d8b000c5515e2020c99d7f9dbd0fee3d4525582a6e053f481075158606728f0829de8412bf8076a7bc63f02761018b24ddbd126113ea6439734ee018011445ad347d9358d07961bb42594b338f6b6b91de46aecde0a1a38768b2d63450811097d8588eee76c933e94c8b7d33d56114ce1f003a7ab91ea9840b64624ce71a35ca306b246422a0e2ab0f08d70a27c452c2c114b69faeeb70077e776a258efca2d9b780e98c7d05906e1e34d59ac718c9c173194560934ef55b1ced7cd3b36528882471c6c300677d057a0b03b13f246d994ed999b24dd7eaf16ca6d74e3fb5253235f6e96094dcd6027420ace2af78e2c6110ac6338528b0922a30297e871d0b2dd160b8512010e5fafe2ed5fd81b73f55a535fc58c7feea9656da6052128e4a643762f8abecf08089a45c6176bedd886c50307c77e882d9a0e4e12a21a937aecfc20af3c371415158ccf64e82a7f73bbb73f3227dfe48faf2925d9a39aa93e563f41f90af2583757a172b0e20e1a7f790ff406a8844d9de22867a4526b4e5567865135fb47411b4616bf5556e651fca4c1db03aa602cea3fd9b7b4c65983f82a75e216da6f6e2361b75814a42995c454b5c9920314990fc23d7ec29ff51287267504c3160d111301dff03378bc517eabf45d773869d4c787663fc0336d7ae904cb4a8f35a53e5c95d16949b778e2cd9fb277d7c76d5bdc5c6e3581fde842160f720acc12b8e561e83abd2a35999b7a8ecc98752184008e7d562c7f5c747ac1b35410107edd9f95f3d9a37d5e2f93eb63145bc84dde7b47b015e48dd88df5114da17a7298184bca6813912520f88ab5df52a583d47087bbcf89a5d4b31bf17fbf748488ff2b43fc651943d4449f037df5b44fc26892e12b0dd8b5eb060dbeae5fc0eee787cc734f69cf768a6038e33a7b3f70e18d136c492fab21c9d3261b58f6e99ce3d1604af8cede16fe9382f65203f869331745126bcf8b6a55236aa3ec930b9583c30ece1cafd2f32bd4478bcd45469fd893fb169c676b900a3a160042b9336e88e098ee947f9184154191f828c41f0c2fc833d47c8d40a194f97d01aa17294e0b70350448b607511b307cd66ca95b237f320112b551c2570bbcbe753b19426b540d478c587f945323b5339852dcfddcc00a5fbb5cc0215ae270747421fdc7790124e78ad35353b3a878107083940c891df9bb4091c5520eeb52ff7c76f996d88503d30ab4b077207bcdde523f4d9274d2dee2e9e2fb920f628fcae7b1167b37d1b16cf8d1c1c44ee2810f48c0ee06726623e2bf6ec74121d7a08fe89059df8d37d6068f2dccb727f44b85676f18c7756cc777b8bdb0d65d7e827b7d3fc20e2884461f98ea18249f5bd8d755e3bdbf9256f4aaa1874f950e84b1af8c109559336480d7b9b2ff4526b6d014865de2aa29bc4f2e3af1f7638a14df39a2989e94e7ef928396e3385c7dfe278b686a547cf85bdfbc374e57707b0d1417b3a9028ed36735ae9f6b008e53098621e437855a3c35c946f6831a6d8eb401f4561d27d46860fd849a6fdc1ba250030dfe6186e2c6c09a22ee402e7ce600f4f06f85f3a20bfe6a35cc8dc17c8985b4772916f22bcc72690ed1dc824a485b5659784b58eeba9143958b531ffac44af5e8936b31224bf9e6235dc1c8d5080c3a3634493ab7c68afa64ac86f8cb6e17a7fb0806d98b6a00d17183cfed371e26b6fb66dc05081cdde00d80eab93e15bc1d38ff9c4a2b80197dd0badfa6181b041abb8928e585b9187962842bd5609b80b341eb426a0470c1bb8ead1a5bf9f2fdc6a7f7e67d135bbd3355d039e1fcec476cc5387c53537dfa96860d9957dfc2f6585df28de926302b6ad7e8bcf1a20d61102ce7e2b8bbd6ffa1fdfc9be07826167b5f3dcf4421358b21268a2a70dc18344c6241e8a3233d5a6e818712eb2b507f4d91b36bd552bf8ea1c7bebfeec3df63bbede03127b833559eb7e61be0097cddf66d3628c6ab4de02545362436714aca1d731c8d590d4adbf897a791ee985c74b9e996028e551c837f371ef2473d01a2f7eb87fe0c5a6d4c06ac09e79c41f1fb9450f13b0331c96deff58069315f6c4d4361ae6d6acb0b233d4d9ca1d953fc2eff83ba2b42fd9bc21619741e851811a8f8dd67ec14344c4ab7bb5a0e0de880d195e7b0162ceb9cb626fcd7e0a506146a67eccfc19eb460b7972def35e4e81cb0232fbd5d958cb2bc5d79a1acb0bd301a526c4e67ef434214eec96b8d3c397585a0692865adab228fa923626b7b42038118597480b53014500546316c75f4149c2711a1b51645c4f80b4de07ef2efa6f0b99898dc4784c7185e632ebbd8b86eb99679ef1aed6a2c81d47eecbdac79f35285a5c9c2fe3980a0ecb9bb03032d61590146d6744b9cdee1e72c66347e8da997aa4d2182cfaf9d1fe51dcd0353907c2d39ca6418a29b7618c5ef1a5b105bdd3b2c755bd7495818fd8919fbae5159ea158b514b366295a6fef323c68c4715471af6cb8f337021cfa7ab16d77653d66ba5ca198772b3dafac110c96e11aafc27a98ba979dce9bdb89a32746b574a382d8469a1b812c295a24c09659a12c64c5b18ee41c680ac82b33806d98ccad769280153383421fdd5c22716fc468856b851519195d29c7233cfb35460ba05ce09ed2ee32620744224d6617e7aa1d95989bdf1b1739be6e73931ae0c29aa21699f3f178fc24427232590481309a44402d3028158e78459697cf3d145f19eb67fd9e3351fd453745808e336c7c4a6daa1b9299919fc8f64e15476e144115362f9f03c81b67cb03e0c200e44807dfab8e69b039c87b747d9dfc90646d9f5c914678af60c75d29ea09e5747b503d261e5ac3b271da80f8983e5f34e791ba2fa8c8c1333c85f59290b0f9b7027e8daa1f253a7ed59fe2977be3faace934f8bc3d211e7b4705a1dd18eb567dcc1f2717398935e45c682cdca40a408a4f551208605dae2a790b700cbeddc0e529ccaa8adc3f6199272ec8b9440da87e421acd3fd985bab58885c5e37cc62a10213d7dac856a2db567555542c925d005ec46c3b0002b12fc796056ace3a1dc070e47d86df9938005c940298a20acd94f8a0eb1bd26a77233674416d2ad3f271bb65109b84d275a8576ea4f8a44901906b56b30314c478fca015e37d70952e038e7d7ce3c8a732f55104305a3a7ea77bf4e694ae90372c5db42e4d545e04c323e3db993090834787f006a00c504fbf10c1cb6b0efe10b2b44dee8629371a087bd7769915367cfcc3c80912d65a04d43ef1e0e249c1c0e3fe3287510739af8c8a6b0a900b05b1f0f9425d8a68374837216211f5eff15708b7cb02b966a26b9a1690ba5f1eb36ab595408bcf59db7dbc3fc6e3ee8ff9e8db185273dcdb2b84ae0f9c442e24b87ab3154f3b3d6ad9992825bc459dbb5c3f64316652db4201608da3c428f4112c1a1e9c02dee88ff606bceef3e55203e4880954a066183480723c8480fe884cd8aac1720c5ee4ccc889468995da5a83e1c4f4930fa84f076bd6e9960b8b6c7f5f9050956754412f06e4858912cf8f8f2bf6260ccaf9354da156bef4297b89c65ee2242e83590abb01704db17fcc0c9ccd6b820895c00f51036f87aee0f47b7a7454a1b94a04952052e89b0a59b3e2b64895f363727cc207225fac25f168310cef30687034467cb0da0bb1f5ec23e273f30637589466166609d92753ddcdd06a4a1b2691ce0831d99497fef4803b7734c56d4bc7e0157592132354de7d75918f1faca73e0caee9d0412494e17e3eaee91cd69d26edfaab28553cc7d48168d7acd26315ab2f9ce0bb4e7f2ce3cd7d97761c69712541e83e60cfe9d223dcf623fa0a69e20b7b588cc721abcb12fcd56b480079cb5d5335191575533ed5a065027606cb10d6d450d3b043dbd141fb704795dede31894f9e675ccbd815adf6c4a4713006954160a225a0772c8b02c6cf74bf2b8694c9117f7c3e6e894676d426fbf34cf0e8493675097a960fcf88da54975c4f0f436d93ec438a35ed774b9cd9b7ae9071a7ef05e444e6950bdc4e41d907bc104a71283ca89003cf94563b05731455eb364d6ddd77c449ebeb80dbc0f43ee95ae5900574d677b93e2613e4550ae8659919e9512238c89a54d26b6c699d0400b99109cb110c882a4f053bea49308e00c297014dd0efffba113b3ae6b1ae52f2a96618a1ea9c755bf1cd60fcc427c121218c8d3c314bd6ec6e213ac9457cf3dadf6caa25a68c0d1cc9ec4bfbbca4b962e2f3b6f60e3edcf97619c1f747a31ef80454dd5bc35bf1a409cd69dd4755633b12585c7d1b36f446e22af2ee03d07d4938cede07f51d5c3bce7c7e607f97670944891cf0fef51f545c9e1ee8ed9d3320b47d100835a26f9f84684efa37f1a74c07d2669941fbe976a3bbf711973e3c0ab342cc66ffef6b36b80cfc10d78f687a71ee6b4757400c67860eba7883336a3f38f249cd0e094bc150014e415323c01c3a1abd8ac040f0af99e038f4d616828ff08e6c2aaf89cbe0a61a5aff458396de2c5e3b8d42edb31061023a428032ad23e5c0feaab06debe84d02c0e154dd50c76f9a157cdba58edaef7ec114f37b9cf67869e2be756eaf2f04479ea85049dccfe72711f579ba9b391de5f0fa14a7a1cab51a026393f95beebfa467aeb043fe4b46550a8d14d8e056613e5b9c5e26d8134c3d509ccd92c6375cb09d1a2bacb24ec5b62001b3f2c6fd7b1ef4e10ac2375a060f126900e3d4dead5e5a7489adecb5c26f018de0445e59a997bc607042909b40aa1555d17a5bc8f6d58f530a7f72d13a553d948c13a81dd3470ad94478fc74eeecec63c9bf8766173515e3d10d7cf408ea6468700a292f293efe8a0633aa9167c049babaf2c7c74aa7f72feddd2bdae0ee3690c5637115524d120629f0c4488333838d24e61468a970d7828d13d23fddfa0d337186307f3d4fc485f150df694b4450bf5db3e5517dc408881b4fac3ecf44116df55dd667edda326c733a8732f06701d3e14575fa8e83cf4c140ad5585bbdee8f11dd2c7007274e92b9287afaf17e6497e8d8c7ffe502f7a4f94045c207175d05ca84098f3372439c01108cc8bbb5381fc8c4c8072023f70db6509a94f0e867cd0776eb333d597c638bef3d560419489b9f9eeb29a5e9cbae96ac48510f7e8c9ebe6e7984c7a5816e71179ea08bbfe3fda049313bc5f2159027bdaab6549d39ca224c67c29cabeee704014585854ddd9b034e7bfc593535efe2796236168b941806c374d34787969b98d6c7ba1a1df33443d5a175d1a80be50e79992b9db8b2acb44bba0e7319ba20ceb841356d26ba4530e8503f12cceee5131dec69b34dda17bd1eb11e2cb91fbe4b1c61203fbc58067403d05f7006c5195656b21afcef0bbd740706d487ce507767d0d1f4e2faaa1bb03259c94a60d0034546682aa3c3c04d6b01ec6201aaebb4305090dcac1b1262e42e889d592c7da82d7699b6b941f25f28d4d99a30ad63710364f12044141e152ac488af4832f3df2dbe2b0f2ff78b1eebd58c73b2c22736dbcbfbbeaffb7edbfef7e69629a5945226190503040305033825705b664bb7ec059543ada68309c7763b663b96113e89ed184e29c9a83b1315bfacd0e9ae10b9a03818340614040e3744a9652da896d94277865aedd6f0b9ae5d8ed88e07d1b1313c39759551779d2574ba26540f814d0ff4e6825a9ce6ef903997add06a96050b0b61d7675cbb1ccb22c7ac0ae7e43ae654f586aa2be2019d77434bd01923a80d07384ea4fc235fad70b7df5cb37c359a389ffcc567277ff1996a935277a7aaaa3b5373da28eeb451dc17515bb66ba72ddb355338daedd868b763254f5275235555752210a4511c48a3b8f20b6999ae81b4acf6e9e14ec776e36ea7631ede5175a13aaaaa6eb335284e83a2388eee396f4ecd99f9997356619cf1789763bbdd2ec748181146d5a9aaaadb188b2f174471288ae26ea8c59bdf2cbfe29a4dc047e111109a94e588655e0a5cf339adff4665735d57874d51462abaf81ede570ef7177e7dbbb99b7b4151ac40c6042560eed16c56fb1d7c4b4bdb647c125384d198a29a437b2fd962eebb167b9ff86255d0b4610019b355c6677a3edff902a0b198621165fdb2fb6c4ba4f09ee73c5bf35344555a5a445b1bd6c540e76dfadfd6de16e36d7bb6f6776b31be9663bb77dffd7e6ef7bed8623b3283839212120c8417c11399307aff809124a613718417abd5c07a30762d9e3f9087df7753d859a1166edd1ef2c3d841d372137f25053ef1aba1356f89518383f3eb6008fdeb165080422b0397f18707145ce0b56e5c0f01d608cbe330fedeab5261abc3172c1a15c62f7a740eae695e6c7fc7066c7b8e7bdbf067dbefcd5fb7b0b0357b6fcd66169a7dd9970763c195e00689873723aaefe18bedbdf81c5b79f72dc3f4f21d43ec6570010e0fb20d072890002f50724b254b05811e41bfa690618b1f382c76dc713d0c6fe112bdd8ac2bbc8095f2a585bdfbfde0c2a8a2c5463d4f8b9610dd0a0dd97920786f2ff6ae974946ac04fd761666656caab46a630bb2fd998496b5f88b90999030582b148c902f563cac5024529819fbb55e36e1875db7410c5bcb0b32a3c5a86d0e91196d4e631b718acb36c6e670eab11da318bbe014db341761e1e7b42a211881e698383eb03964ac6b9dc96501a4c3e974381c8ee9f91d0e87e3e1fc0d382b0e8fe7f4a05383346ddc78607dc9a936af081f22298a2429922427041ca48c0d8ec8391d10396b64e5dd5a4a68335644788c9b71dc6c4872041c58e4a81abf70b4de63751cd3bf2cefce4487666b347befcd66f3377bb3f7b8d99abdb5466bc4d0835fa71186d8834baadd0249c62bbb2b1ddc5915835a25535a731cd4fa5e29aebdf97e6befcd565fdf8488ca78597e6481bbf1620d06ef34465b99fe174fa2e6f126902d0396864fc12bc204010b4609155e0d6d2a6b5bb8e124474a4a4a4a4a4a4a4a4a4acac9c9c9c9c9090a0a0a0a0a0a0a0a0a0a0acac9c9c9890c87f16af53efe7f2fc62465395a7b73e51fcb13ee5ecb3e41c40d89136aa1496809c839a48b91771062cc6172cac2e07b47efe6bdf5c5bc842a43e32697febdb7e72ff21a4db2b65d6bfe05f50e4b97d16b483e871c3fadb471ef37da96bd1f9bf1ca4ce1431374e7abb8b61b4eb5e186367485f78ad840f2097885b0b06a0108b022d7755d4def5d2998344dd3338998189446a3d14c20880241103c81e08c5cd7751581a08be492a6693a0a22268646a3d1689fef762343dff7020599cd72ebbaaefd737dae4e8f344d5392d37b0c6965341a8d468e37b2f717d95f33b2cf48cd465cd795e42bd95ddde5ddd29274c6484a9231227f2c69e408c96348cc69a4bd912324641680831f00002c91907375aa36e6ea5de6ea5d29cd99c698699ac67cd104d26e269076438527f005ce4ce00b9c95bc68055da2157491c0511a234ad334a6fc3e1fedf6f968b750077daf6ff6f95edfccaed0fbfab93ab97eaecee6f4b4c774b2a73dc6da15fc48bbd168b49b665d37fdd567fdd56757e45cd4f0b5bbf8da5d3767bf79ca6378ca632ebe8138fbcf7a4c9ae18ba3fdba194dffc3cf78dd0a86d44567cd6d9b118b37b1878b5fb8d1c5d3441ffc8873f89c981351b1c76813d5f29e18e7c02a1fe4347ea3712138cea312b6a52e24dcf3174bedd5e38c61c6675986bcc34340954dd4978a9a65a92f76bb304c1834e607aa3b25810b311594ca577d550741100475a47a2ad57b37513fd57bff1dd53feab43b645d8642a54e40ced3799e4eff3c9d4efd345b39adf4b39f9f0ff333cdeffbbeef3b7dff745a16da473b992773f370a53a4b1f0f53c9642a954ae6f74da552e92bfd9652cbf799c0effbbe4f0709249140100441b0647ba0205a2a91b6a80319894623914864827f24128940d1bfd94436101cf9eea3f465e9bd3745bff45ee4bf4bea5351292a35a8771e2150280402fd100804f2a08f7b01bd781fd284bcf7debb8e4ff8f98461f83f611882c20fa3865605813eb9c33907e2e9783c9d8ea7d3093bb94e2ef4841e8dc839e7dc0747e4704451343b9f238a6247fcb18a6ba7c3d18c9c73ce799023498ea3387a2d516765462b239222b971486ebe37e71bbed970cec771fce3c83939f20de7e36624d9ec0de75392ccd4d6e415759663e821535b59725906209a73adf9ffbceb9e57b8bd3b54269ec926b82fb2ec25aba4f9650bc34756e5ac52a9cc9cf3cf2b9567548d33abbc3af1eea74cac6e194c2d095dcb0f5acc8a123c5029142a954a99aa8f4aa552aad4579da53255aa2ad58971a81aa7896b3b74c77278d92ae97ed9b6890e5b473f7b3fcfd34cfd7e9e674af5cf5f4bf5d4895bba689a5805c7f0098bcc6cc53b723805c8c93c9d4cd334cf7f324df334ff798eb04c165639cf13e738d53099f7072a83b302bf5eb049bab35de1e3337d9fc96432cdff994c26d3f4cd73068989e487f999e75d3f31fca893279937d532975a10312d3034dcca103c4aa45289442299a65f229148a6121a241aa9c974de5ba9c6c8bc33da9dc1a65550fd6ad126b706ad031c81e0683432491f1c8d46a4061618d966249074de15308ce02bcd6b725dba207787cc8dad37476e0c20a252242acbd21c7d515996231b0e94e935198d4e3b23aa11322d0c9ac32db17b9149575b133e7cc8fb5028140a854a096e845e604a5f9e56f53e02fe312d9a653d6a3be05a5c68b7151e78803e20d0e7f331431ff4f97c421650f051d150e8b435500d8f69639e9565584b56a1e5975dc9269685ac23f484a1c7137a3c9e4f0617787236f6094154ece55a08a8ccb0e6f3411ecef8bd158d32c98bd8cb39d368894c04f921e250fca1e8fdd7a792ff2693c9e44d255c2221659c45d90cef1d7bab634d16351aede95f22621aac16ce2d3f823739fb5ee244fe48592465d11c293b68f47438e439fe2f14f398bd68412896206a4e517b5f7bd8e33bdf9110630f976cf8f2d68afb8e5ccb3fe79cf3db451ade07311e47362a8df7847f343726f89958344b074460b031fbbf2cc77145faec65ddb0a4652b159316b597c1f208cf3d4bb646fe366ee4cf7ee0c7e2c52a93f27edd6dceb9a4c5f9f71bdbbbbd9d2dcf61cb33965438f77eb3373cd8777c09ade687951a5e90810617b40efdb7a245f1865a7bad3fadc1dbf5ff34d6d883d68216c4e0d7f1c55804e3ac3f9b5574d65a6bad33ce396b8db5d65ab7a0bfd65a6bad4d2c0edc8d0998cd9e1882328c9aff3f787edeece4076f06e09a241fb2ac1fd19ddb106b7d4bb4c83a5893efcde446985183d45a415868dcabbd56fe230e68afb51f798a72fe222c8c17ab66dc9b311430180c0683c16030180c0683c16030180c0683c16030180c0683c160b0d0462bf1a83d1c5ace379d50a8da01d5a231a2efbdf7de7fefbd557be7bdf74eed8dd25aeb73efaeb5d6a6d627adb53669fd69ad3549eb52ce398fb40673ceb9cc599473cea19c7dce397f7206618cb127678c31c638e47430c618638c3126c50dbef7e2151eefc69a152f89409d5235de17006e68a2b97d6bf4d71a6dfa4de7f6ef0449052f0d90a5065e10bcab0f82775fefaabeeffbee4d7ddff5eef7ddf3de8bc35d53264bbd034ab59a89b66b416fec8b91ae4bcd11bbded5e9ee08bd1787bba5ec5eefdebbe3f772f5ea2ed77d705ccfbde8e5b87b653638e3af89ecddc8435635d5dd99df909bbd69149a99ed8e0823e6aa333bbcdf20088220a8d168fe4aa35d26da44c335dfc7fe7bffffcd90bff7de7f877c9be3f55f213b64850279a8502a150a8532ff57a150a86f03924da874cb788b46820093f80086844010c6280a430a21c494f754238b8618c72563793c1814866180a50c31c60164000000020030000040630044c04d6caa04826739b8426c1115b332c55d6a28556e9558e5cb2c52117f8e40fb8089d9961c0b6df07662830583f787e9b1f000e90c44030dff899cb0ff9127618591603420589e041b87631082a0ab03eb16d3486e5079a7bf42f553eaa1c41321dac7d943d3a8d5c17f25188a1212711d756fc3b596d3dd539a9479cb7d23c2ab836b4dff6c3e17a5803cdce144ed7426556fa74d6ee54b7088f57c3d99d4a4e6ab4aa7112f1b656c7fb62bab9e29e6086a812bbdf220c19d164e25a258e7b14087548144eada36510d750a4e4012368f4c67c2a4c5bbb02a8db6496ecd2205df422b70b9be7bbf9320f54bdeb97c8c49cc90b9dba768eb024de94244661865e9ba4f05e355081540bedafd77a7940b850d6d609087972bad3216e4447298e8f09f167bc8c4bfd585e0908c33e81d3e6239287a2ca4417dfd854ce205fd95034179f6b78015854b3bae9495362868a97212dbfe06e2fc0e3ad61391a5b74c8149837502831fd01785e82c2a28ad375224928c4fa580c4fcbcb30c640de9eddc0951a16b01b49aa07e5a441e0c93ac545e3d3587288819d4ebc1545acf98e2b80632cca9483bd74775b5b09710ca72a48344bcda3137b11dc30e985375b90dd82650ca328a1fe22ac7276e6461c4ae2a7fff6c0a281950fe03a35cadeccb9e703f2d76fe67722839aa91724ad29378503921e3de68de967b00d1df840c8377500e8d765f05526a350a7fc3b936bf6aa16d92628cceac89df509dc4d418ec4c88bc4eb0e142480d97fe364a9334f6a2f99b0327acb2756357e9b2c5c8a1e297b99b7e637745654bfa25f0a142e8ce37bb0fa2cd4b5af43162607828ef89b5e6cd1a6c2bb43c43068903496fdd0a1b7327f7215427195013073b3c878dd271849dd17405d4dea37c1ee3d714d04b4650b6045bf35232701ea46836e52e5652aac62b948ebace0d8266eb47722af31526e0a1f0882ea1851fdb99c84c0515dfe2b6162c0a464879af4b8c7484d54419976cb05c68d66201cf71ef04ee397dc082facd5338b2bed983bf9a9e0c4d95c50bcdee5715845daf2d60cdf0a026a7fe14d321c0f648a6985cec2beef48f178dd98a8683d0d1ec7c37fac44ab49c495e7789343cd768f591118e7a23579311996e0c829d2e3de5918ad74c56928dfab06c246cc11a082c6772de997a4ddc668e89a6f012b491f7040f380df9f3dde831e2ecfc5866f628f17168e2d91d09bbe6a988e2783bfcfb184dbc9bf5fbadb95b8b47c7984d948d3e1391d2915462b5ec0e97afd12d85d84ea9d2d35b746fa42855237b69b8df54d74f8d39f4d8dabd5b0a94b9d5d965af0b57eaacdbf64a8501818e2afb2123c9f26f1b4ba7e7b24d47d250cb46e628886444ccaaa94be978e67f8c22992553b123f72d5f06b027d4df58d25b9af376358a8015eac60084e91f9d62005013f134732d5ff289407f50386176b609809937c572d732c172a23fd062df1e7a374965e49716ca022d2d89c7ed21466e8b01126b4abedc6cf55c623ac287f489b3c91c83e881ff60d6ef35ea6c8d03a5a63c2b9c6221aba64e89d9edd7c54846ee29d2760a60b0484fcdb96ce50e21f578dbf0f2e3aebc9974fee1106d9b11c7111b532a140d1a11092aca28af04c0b824ae80e2cdd902d23499f0a402cc97c6612df420f63a153b81813d2c6dc2e392ade1bc840d80c8f64a42d9642b84f096c64b1fa90c51f273c9354d12cc6fd9616f1837e8a7c106217567603fbf54246beee5d083da4da909867380f5f9da6418567480824136a060249f1cd439c3e3cc36e0f031d57eff6604004b5eadeddbfde57e8b97903c9f96f1aea35c1ab8c25cafaa596e24b8d28337654fea06fe9cd53b2b7fae08542f4c9e21f7e34d0761c34c075cefbe79baa6c0c645e67e5daa8e1eb819cd121378385e8ed10ef2f6ddcd2e821a7311de5481d4799e5c620af349b8496d8586fdc72c05fe690e80dbdb5e16c06ac01c7abcd186f6cf02b219c3414d6bf8b490f0b6ed8205887ac4dd617c6933c88be212ada600a92214269044c1851ef296083c87dfc8f7022fca1cc20fd054d2fe7a526b37814721f46bda9b2bfbac8ecf08616cdb221403e7d6e513a88e47a28ec096f19e9ec6a6948812cec9b1a1c5c0507e2849ea4d348149523e10990aa135aa8b6bb5aacb382bff65f1759d1c66617d72d544b9c244011978d49d448aba093cc0976b5b946ff37b9d781f2bba64c96e330ac99ff00a2704d3d21b76d8c7f18b0000894d982ed1bdb17ee49ecab74c7a8d7a22dd23e957f62add2ce951eaad74ffa5dfba27d0cd909ea21ec75b92bea5de45f747fa8f7a26df27e951ea95749bd4ffea1596f1de27d02afc593bf3289fbc9314237c64bc158362131adfeea7150cd59577a02a40fe9f61933771644b868b3169a29ba3388747a2ca95b2819e0ccf094638e4ce481a62805245b72e9943415e85ee86e20582dc4add3a8a170a7915ba77145e10e55474eba89c4090abd0a5d178e128af427743e142416e856e1dcd0945b94a5d3b1a270cf22a7475744e20c855e8d250bc709457a9aba340a8a98d1428d08a354ab028e805bba20d2a473666bfcae1fc161ea4882eb5c975fe6a24bc6d71b411c5c3538220432e14b1c916af15eaa2656db52c86afbbb0cdb4d2af985f85b54e78bb983dbb24a3e00441d80fac2e1e5376a5ccc17d008e5a9df2ab3031e2c08828aa1e181fa8f6282da06cfb4039c2ef42447e93c20f8f2999d109ddf1e844474e9516197bdf249e55e61a7fd8fa41a439012a34ff357d15480d4a04f7e49cf079c36e2a1ceef0f427f6ae95106095cc6e16b26420fadb18248451eb8da6fa8de37d97eeadddc9a2cfa7ce286d041ef3f087303c11fcf3be2e74c8138e921dcabcc7017dcf50cf09127d665af5290f005701acbdcca8015b540a4c0293e344fc3fc6e2c7920ca5b59f02f6a4bb273f976112dabe0cb7dfc5e5fe32019f8889f21e9321c7c984cc4ae65fa94e571c443dce4d6cfa820ce29764663fc42ac4fef90fafa0666bfd290ea9e9384806a2e2a47bdb4e16de83d3a4f2ed9d1bb5c708bccdf994d4e91a958eecc2f33ee7098f42aec7ee208c67eb9df71820b1a3ac0a3550de3055d31a6f238eb77f08fa8940fbab85450c7b56d28774d2b77cb0cf0a8ae020057291a6fea82f835b461eef56ec0b93f0b1c1505a692a43fe494fbeaa42133b77346e3cc7e0e1477ad57186c779b6c5d86a8e5a15ffc2ae73870c734c1302d76ee32d1eb5dc35df900c48417cc84d8322f9a2c464da9dd9755868aac1688f84a86012bc1335c9ab9c1aebdbcffcadeed9f67e53d98d6fc1d7c5fbb40e4780669f38ae32f3e06f17a092391ccda39d10aa701a3a6fd106092f9df3341871687e825f7a1872713110d084aa0ddfce61c38bd207f0597131a3e67369fc9a03ef984cdffddd1272b4f9e358deb4bc08a0696776a4f1c70ae6a354b8fe3e1778d714230f29fb59b0531563a2199a3c4f890c3735a0558147049a194e3c6983784650acb98d91f45aca6413b51a536686b00a519883a51473144d60f8465ac29719551b727be78d57a5617447fada28e89a20d9e52992463dd03b6633b767ce89ff2b3aa9b585bdb5719469ca6ca0f3941dd4e7412987c7cb42c8849b0fb2bad527afa9a08c894dfa546451623fda2fde58f6e244d84923b32385bf56301f658597f7799177a690e82934cab45ab398f1e46f9eb43f9712d6170813eb6ab0888063c6035f4d10af91ca9b5dcc7d0a89bbfca8aab727240618db2937c493bd7dadc575e0bb2d59ec451620c854c664ccfb0c812f988b5247dfdf66a16ad6b46f9de057ee8eaf3dfb843d3ccce8de523676a0d6294506ac98c0fc82db396c7955ea053e6bd3341e02c07eb6b4bfa4a907d0e37360bb215f2c1598ae0f8498f15ec1ed9db7038b826b9b422deb00e6c915d23d65a7ef510dc66589a5566d8cb334418d71646bebb08fc430c3c91b565078e1e3cf35b5215e427e55dcb3e964c4cee465af559b3db44b39fb4d1df74c25f3b39c30316e794198c11b4a71fd08fcae65ee156c774934e06c5945d085175db9b0c13c6d2ef0537e04594a211c5830c703d4cfb32391514854dee7f2e34a49d2ccf86d7a0c6f0ec65f79d3fe39a7bd119afb6957b30d320e308fe40ee6569bd4099f6ad9e23be6fce70d2dc22bfe7c316fecfe9a2e001acce00f538ef7d7c165e50da71cf6ad6813afe530a9949410f1237738576557257203497b0cc4f495c27cfdd27b23068d24fe5f63c7eaeb83476c656f1b2cd832aed5a47bc79705567a2632030673c2914549fcf92254f8af91a5f311f908b64e5214fb16b1736d2225d9645f3881c49f35bb261273a6b846fd2446287d00c7496103b72bc27765a5bc720d96b383e7bee7d0d8a496ad7da3ab76c5422382029a8801aaca73a5941bb6e2cd9d731b67c75645f2f0bde5cb51bebc59cf8280930f060ec7712211fa0c9529b19054a59ef90490d4364fdbc984d21dccb960ddd3843cece7dab0bea038495dd515571905092b68b0821f5446261bbcf99e1fa1827dd088830ba5639a6201745713f2a2ab8fc350f063701c8e2cd310a8a68ffeb3ae27c20b6c281244ca5014644469a5ef6fb3f0354befd5be593221b7628375a79f13ff1fc90edac61f362c20a095ee68486d71b41c2e2bbd6f4a8ba01b0de884e5d682355923a384890d0ba78b3cc9608e75b0257b947c07d88668ab2a0953a94d9eb6030a85b18d719177a810f5bcaab5a06509748239a2205fc9c4b27d5e3241247fd82692a159380f95225fc050c5fcdfffe643543cfdec155be3f3d4614242322223025866a33f0ddfaac6a2c574c944551ed2c60b644579db8febd9344d8eddac45785aafb1741e313e25ee4e90af685e109b01101d1395d7bc2037e87221595788bc9ce0c8939509193f4143f788b19bf83010348ed30405ff4ecf02dd613be6664e3732724349e5a910d9071a71baa4b474b3d64d8d59beb6b2e533f59f31b45734dbac34cc369ad4ea1220d6ae754fccd223ea7adc1b92052322c5c003d13c1e52a554bed64d80ab98d3f64a02663fad29f655cc0792990f6102a4cf40535407ba359d68eeab0b0aed6525265a715308c23feffc07c0a2248bc75aa1dd560690231c27d5b75b341613a5cd60465b53e0f4e978e85ddd06031edd609ed5116665d5d97a31430fe6c90e13bacd3a456fe0d3027af54e390dff731196f1400fab8870fc24dedfbb2796303611119027476c76af0ac5384132970b83a241193bbc340b89820f8550b41865310594f5df2b777e2bdd550c785c4d0982bf19386a84d966504f051a20abadeece393ade8049ab127f741e15ff734b7381f266318286521810c3e58f8301189341e5754e96bed2ffcf08a865b1e88576379ab5b134e2cafa7eecdee8c407c37eeb4ce24ab522cfa7bb2f75a58db1a7ecd00bf35c0f1f40515276c02e94330a8a3a492cb3f457072c7fb980592753460a1bfedb554354f5cde07bce9a346ee783b3c20d4c9b448ec7d1f68b4e77fe36d476e589e682ffa3dd8f916536a5a2268a2761d63a2f4aea4e0a5e878e54ef6516ca2cb9a1655b339aa023b8ae8ed7dbe62826f3ce57e643cf39b542316209443cc7013d30a5f47967650e0622113db856cf2655c8bb285f6828e1e0ba384475896d5f7ca1c3188183f2ca9e27226fa828ecdfad2b5680fee533ae2e126abdffb98464ba044226a74abf999b5d156791909a249a6ae2ac056f03af7c7b16d155c6569c58c0dcc97f7eed348dd4f5f5eb3da840f8caa1548bd20d565895351062f8df46b57b84766599ead0cb84ee456fbbbff4d2fd137bb1f22b7d71fbc45eacf84a5fb891701fc65ea0937043036f80f44a45fb8b955fa90bf74fece5ca57fac2ed137b59f995ba702be17a101b816ee2bb41a9c3dbbd623346af7196f813faa6a6d47000dfa445cadb87c0c83c32daed1124e13a94842973f37d74e7026067365dec80919759154acf28ff42087a6c74b61561600cdfac25c5d9d152f00ab81ad0ff88e9fb44ea03f7b15d728d23b76af527429e7e509669a8e8667f934456dfc4dfb1b07cc92d41ba6667617a6dd85df45478a077fd135723d3d671f475c15c28a6fc5d80f38bf8a9fe9adc983694a38837c5198f22c85b59e525024d7df621ed1a09f0e509363a715bb70ae4f41b7881285500d875c5f6b269a0daaa9793ba28a20498cb994524b45d5508a731bb1c9a5bd240a3fc3d6e71d17502cf1195738a32e61a2ea768cb0ecaa8d9b1abb1484065c0e34a4b1d52a78bdabdc11c3f8ca6f657a1f3a627635864fca6a5dd7a8dd230ea835e2d58ea5e69f7ee91a0207c04edf723106224ea9a76f8d0485aaa2601913d5abd875b918288f4e35674deb374a836b431b49b64b328a82f4816e5cb2c1aa8c49e354c6e1fbd308f0d926a2437bd5868004b159945f714154af214736244545055c6dce44bc3efdc6fb9daf84b43c9321d36007fd4a9b2d292d9542ba6af396e973b63fc35a4e5cefb5da7eebc72e77ddbc354b4192a3815a63ca33da326f4c025d1d7a63164fe8e6f9efc60807bd501630c224fe066205375a8610a76b8ca4760ae23a31039ab926a44a071c28ba9bdf13e593d1b54342c5c49cd43c6857facd2106133f19c569adad9050ea262b2e3958cfcd033d7f47fd509e4236316a97344af92b40a7d4bfdb2afc51cf92daa8510bbef78e58337e69c40e5340560b7be5985168d98c9d3373bd5589357894bc5d5d60873139a8ff1961232d0f0e8c93668220e2dc5fbab9c8a4dfad513e35ae80a57638889ee9577553fc1b3f9a7f4e82449f8a7dbef894adf04fe288f3c2348cf0ecce80b8305800a1bac69746263c6baf9aa3768da2a6d319f055e70318318787ef950f1133c9b7da449ce0781fec84b8174e18350c731def6b1a1c85963a146db8abf3263e018d625a015630eaea6efc19587a868203d37fdce3b02762907b0bcb7ca333bec69a49fe05a699fea209e1b116e66bd55fe2761a3f8e11d39bf79b0d54f76360e5f9080a36ca5b25539ec209f0585434d8b76665781f4936002559a5587572e391d19308b9b9bbd906b23d9a19f528b83e7a56f223ac767ba74015ab9f8d752015d6d110a4a62a3551116d8f51d9ac7cc4aea1ccb43d3d8a76559a63cd159a6d499b797b6c728305d4ca0fd595c821cbf8793d248f3811b2c89a606ccc8cfd08fdcb50f80fc8991218e92c65e02e5128cfc086a15cccb1183b8e9307c0b582f0794d27d919ee8bae6d128fdc551494326d3342863338f567f33a810e1ad808e05ece649d2811424a350c29c0e75d080bf65af1b0a095636fbdccbdada8405f19069843a18c9b79ebba9350741cf202eadf5ebb16824406277f032a8d64768d34a2392882d96aa7e34d2dd334087195e77f3f324c8a3940699d78e9dcd9b87405cb013fbc6bc4f25906799bc122b8c61bd1e545757eed1a092b0867b134eff22907eedc4d3ae0c872776b903f0912a53a0decd604a813b2bdf91c9d239e68bd093a10019cc3974298f9120f56d31e2986be2765accd630b08f8b4d399aec5e9b5edb91452ccaf89c3482b244f5b7f6fa36ac4ed082fe0bc115a9f324aa99812329d3bdf2cc938d8868f09e3b3ce4db1fe3ee1cb13b3ddfa471f644d448bc6ec1a69a811faf0d800b0fe86b9ae332bf5e3dbf065139dab578ae474c0e10b76a2c1252f3e8f32788caae6de7d1662674bd09345c9399b53be95ee7ee002d286395f3bc72e06bc2fcfda477426a030799656e7290e8b336bba44eaaed4f834cb6d4379dad1613cd69853ecbfeaae0a016fe67025fe023706536e458abd96fac433f3c2e773076c337c616024b3f2163c30fcde8e5c8df448d3652d43da671cd8d635c7ffd6e05260ae430efabebc1021c0a491e8d475a5ca58c6a4e9225890a60e598f5f635c54fa6df81df55511160c4b1bca1baee75a043936b1f0cc2deb421fc9fd408ac5ffcf32808e8c04de9d3ff86dba4766e68dc0c0a1ed9512431a1f037b1f8b3c648cc19d7e33674cd2633c2341c5063a42de5975cc31510920bba479416a415523ee1196c7b70e4b98b67452d6f6b29ed71b531dc6e80eef86b8f455f4aa721442144a537733beadc63a533e67dc4986d0264ec659bb54d20d7bcaf4a218572dd155f9d9e8996b9f30178e17a3a41fc15fa4a29f4ab7bc945b84ab398232d18f8a38f5d7bc282d60fdad9ba7413182f8bfdfc615e5f0038c1b8c362b66169c930c1d898c1a4ae5b353a8095ef2677a3868bffc91b4e5b3eb3fc8be5df2d3e3dd8b2c6f5ae8a201195162e794511fe41fbc26ccf70ecae3dd967a049d4e58eb8f9b67f35cbc0aaf75b2642c88132d7923ab0d129bcb2acc586fc552a9b2cf56452081bf5204580b7033abb989b238b9345cb2a4a881f373a14e043f206c1a37c3bb651903f0136c443dada4ba05c8a911f51a98238382300b31d488816b05e0e98d2ed223dadf7baa6e35a0d71146a5c671a6804140df815010c1cdb1cd20fdbdd0c4a720622862249d25c298a1b503b1e0bc35c7a07fe4e73d0ebb42196c2378b1fb1d3b23c9461c61fe3ef396da8b259d646acb063a0e96a110ba02b34245d83be6b6bd0a74da3121f5430de588f651eef0a29306fc7ccea8db262f8326b2ce00089e902f4b62a51a568e164525a8dd7ebb1b7456e401e32ccdc37536c816dc0998c67d26ebfbad2348cdc6b0310bc24cad414f1ad1a2f212464cb23225956e3bfb18d30169b436a4625ccf330860646b566d4e7601576336751ea5f2383b932f10df6abced940d2c2eeb56974e53c337f80316c1c2f003503d82c565eed339fcc7281ffd5b1be4e60e6ccd2afa869ebe110ac6fe79c306ce652875ab004a7f831a775f160bdbf541b2bd13c57f63ca46f20630b5dfeb4279da96f25d1554e523f09eaed47b2851e5397068e0a9234a3a1910572421e5dfa04294757dcbc372a4e733c5af3241f5737f9db32938a3166331d00d486f957bcaf11786a7597a2d511771d7d0bf38a3aee4fbe44034be8fa83076aea82e85fd07f8aa1ecbd0ed6a95f7299daefd96ab1e9ad3f1d0f40c2b6f99dc061fbcb9c93cb46cc436313b6de7c91a3a9906dda86a14ea6a826e3bba26f0f7cc54e2d04185056a2a68210a8cb42c7394be9caaa3496f53907d105d839cf14419f3edf9a0be9b2f2c6b06db6556e834b02221cb6f54a05f5c9829d641bce3c53aae0252c023baf9645dc3c7c5a9f4e4c0e491a5037192f0f0740a98f4908752789612d0cee9d7679f2d503546be2c43e949835192486d3980824cfa932b698210111d05244fbc2f797ada244b062486e82be533e413101041172919cd45e9f4946b1f136c01423c63bd093bc3a411b30541132514ca481c8e556e6705f4a1ee81eba5dbdefec05e08aac51e0aa8b77c756aa16e694c2dd130bdaf85011b44d7ee33906076ad4d456fac7136f2202c31be14a7a3b2c4559f7b4b2be9a569942c8b56e0db835c566feccd0648fcef59415f12d6216be04064c632e28182fd1c3ff43b793013742c462e0c7682236fcd1dfe3deefa1c9cb6575461a0234b019e17abaacc84b65a8c182fbc07079a6ea60542c0b7889e670ecd0ba557eb9185bed5c0e0834d6f7bd7e01a24a6562d44f3fd650ad110682534f337156fc08aa0cfa1f4c0783a2410bb5a2f8929ce56292f3ba649fa45361020af16dcc74148a3afb7dfcade97213f91f83a6976b574b0d6cc22100a7c5016cb816c7f37100f9d787ea56394ef2611ea2dd1a901b1ddccacebcd8b82eb0547e0f60c72416b4900f23b373852988b2ceb15262bfc4358653c11c628b5dfb411af00d5b148f859ae225d102d33002a6d328216f87cffe7aeeec4e458b928ac35f138ffa160cd688bd3027eafef41257bee34cc8b4d5a8ef3f5762b2980e136a988298fb73d05cf1462bf3f474ba46d3c8b4e4bb66e44a2607fcc9215b5f72d66caa4577074fdb331f470255e6e63cbf62e33ccf1ead87d7a41fd2a9e1941141e58bdd97849a4b55e5039268e8cc9a3d66553c70f5945cffd12b7102151126c3ae8074010eda2557ab20f26546260e2a4e4d2009df07077597b675e3be76ee6508f140d3dbcd2eb4a4a23352f2ce0c3a0cf8f43f41f9f2ec23b701504d8933f4080c95e1c34718235a55bdb2c68339f5b27ba9c849ae16ad5ab7f4f292451b4d8ab839e359dedb949c221d68089b4ee5173d6915bb852d072bc94f2f0f574e2eb2c2cb0e6d822fdf0f75b53960e223b71a6e0c68a1526a6e5789ebdfa66a95ec8549468cd0ce1b0226d1b8454d7c06534d5e78cc3f0c63832af3850e745aae19ec19834699418b63de63850a9f5d387d84ae9beca384a31cf8eb3c4aa52d646a675e41938aa4dbe0297064f15cd30ba02f729353309ed9a66fb13ffb40b0214efcf6af076255d0f35fbc054b30ba89e5f804de34636c3ba8a292eac5fc91d99dfd5a062c134b3373b9f212806195970c21d2cee361ac882490de9cd707645dd0b18dfc98baf97821069d7eeb5b5de848afa9436478940f168f122f6280779a114f600703bcf371d0463c694bbaa0139a973f5633da564c30b07e7c47d467637d26f053b6fb94a0c06696a2a385d73b028df5c3744330e76a807e167be7ea18ead8da50308e1d36d090927ab0e156619507cafa7f5802127f86b02fd8c3a85cb9fea5094b7ec69c95a0b96e1c006e89a3f2609b96af9c3c98ffc2460cf7f3ea022311449b11f39795f8705055fe250c61fc1c6b7c8829558b11e9e29dc93a8ad77b72c040c7143c26a0df7a56a1ba2607d8dec593a826a48020fb9fd2989e869f2f1ca5e344c930cd5e72dd1af72d9fab36f7f476c6cdd89bb4536e801c4e55feb7bd285817bec6357176187438d001121425d8aa596af04ac3534b7158b4e0821620a0c8330cb31e65f74478af12217298ca6f57b076b3b3b01405e866a7d094e152480c9b5d8b77f80c08fb5b10368b78c90b072b93cace6ad9393912d89352e671b1a02dea8319af56f1bf92e3aea984e7012c9b7c315fb650257c93d034596257ec2bc69bad7ea9b5a401c4d22bf2752b946735d2ced397253695b264de29df70e629af4a575a184b1e95b15c6ead39d4b46ad91e815b974a866cdef23c4a16fce5fbe4359415d3ea0026bc245367635cb2a5344eb1652a722f89846fd21b4d7e914b1ae66b9f9173325ece84b32da8b3bfa45afc3ef3c6b9a24e1c20203401db07664bf1fb6be12edaa5a76c3fb7a4434385dc9e85ea0d038c7d21a15b4b36cfca9e05769a6ba7400f590cce2b3664ac44093f772204b2e5b8f5cda0b2c98408de6410d4012f5a676bca374f1ee30392b5171b555345fd80498ed81e08efb8aaf79fe7a5011f428e10bc31f5145b46d2042389d7a6e51e613d5bdea2080ece885bc15bdfc8297be74697b359a88b803342cfba70789a4845716db6328a6ac814095d7078a30fe805d8046c51017ac8282750a0d8d4b40100b1ead8afafe818e83b515b2320baef6f71cb629605bd9f36c8b45f1fd9d2d96954e00d602ada51412fe769704d84d50bbff1696c38599068d6acf2831989a9865db2b4b23757766fda245c024f022802d33d1b3f1a854294520c7bc7b6cb61ea98eaa9443a263bafe7794cf96bda3f7fd04511195311b6d4b8cca4502fade7ef45f8de5bc162f29040192821bcd16cf20f8730c757994783b523cd0923b9e847dca20fb8c59a78b7986a892e1186f8c28565202039f650989dd7d170a22ac69c5866a6dfa8de69aa1c0efc25176bee6d4f979d99d2d170b2643d20258d461e7938600f871b2d6ddbfe2f617c35a964a22fc66772cd0f6a53fbf39cd56263f8bb11f5545d82892e3175caae120523b8fcd871413237cd6af1b17aad86f7f3748c2423d56e52648928941ee83f112c69cafc4c8f900744de4548a610528a4ab71eeaa57426a0399bbb9caf2b785d944db4d2df681555c6d174defa7cf79c352d849740ee5bc647824dbaae493d0822860518181c60a4e4c1f2c9d4234a0ef9b58cbbcde9f9147bcd27c3fb9a78f6c5584be28b2fdeeb6efbc5a1c72675eba1ba63ec95f37e4e54e88b218ccac74c8429c802210da1cf39944999e7cc5fcb5170a62513068e7b21d7e37eff5a418eba4dfc8f46a110f5f6699e5eb917c252e1cce8d4ec9482ae5bd1e2855472c5eb6272ee5f5a763b67af047139a5f7704e5ac82faee6096131fe8c74318e11c244120a0c7c812c25d0218c794038d745596bf8f325cd248b5edab57398fb7337d71ddc368a51585780f2571a994742564f53c8d09bfbee57f21c907651f5afe5486af78703614f6601b5461d642882dac989f0de6e378658997477b783016c61af9213b9764172fc685fbfeb1508608c5784efba60e45bb671e580144218e365dff3d30529bcec74afe73529dd2ef9be8782acc518e3cb5252a7eeeda69c4604249e6691e96f999c13699b5ae40ee80e55dbbcd47b614707c73d674d0be06f001b8f2bbbd697edae60ef1867004222a21192d746334a4c68c0de60dc73bea1b1358ec9d639255bebccd87a35da7a47db9a47c6d63d245bfb8c884442425bb73ae8b178c4b66f52dbb4ca03e70ec815246896e04eb75af19c52776a297cd877e5aca3c2ddddaddc8ee3717fd71efd902905c6376a126a815c8593a2572e4dfb34ca9b5dbdfd10424a75e87bf61f90e35abf2975e9d3f33b9a4e76b7f146b993c29d14eeee7eafbb67ef78dce72788ffb5f19937735c6b9ca99d922e407c9e475be59c4eb9c9f4af69397b8a7677777777777777d39612888d279a1919144b2ac7bcccaeef4fe5f63581139faa236c1b51166b28504fe01f6c7177d1ac067acdfa69d82ae02db2109a4ff56e1e8edb5e0feb29319dc8ddaedeb0adb1c05b67e170f44f03d5ad83bcd75cf416d061f234bd96fdb5ec30b0be8d72cb507cf01ffca7bfab81e7cf62af5298abd207dfd51858b5360bb32dfaac0dfdf8f0acbafda6bb61a494d2c6fcc67f6cad2fc6f707596a625e5a72fcbbb1bcef997a7e47d3c9ad52c51ea6df4611d5d8bfd07bef461660c835683a441e6210a769a594524a29a594524a29edc36a58cd2485855fe6ee2fdee22c413f3fd45a6ae98fbf504b2d7e8fa958f61fce04f822bf141c851f8d4221bf82a8bba5f4b3109c523a5d0468fdddfc3cd5e59eb3f69fa92ce9def8138dc688131868609da9f540ac9eecd550b99b774969d3f363a74667cebc4cbf11ad9498b4987df3c5a64289bd4761c932228a25156722cd7cfb246c7c5da4a70a24fa14c2929848fd4b60288b27d183b165c242cf4688c8d35a7b64702f9ad112b2ea596bac636f850e49cee3db6449ce74a2109b515775274610e188a3a299655f027c2f93ce492a7936d0fd72f9543c5133c9a2f8aa38a5b84a56693e9e4b266fe0be3bfef5ac5a39408fd5959442fbf19c92642b68e772040da9b63146548c2fba1ec7026aa1b8c0c78102251f4b9691cf4138dd6301c6cba17470416f14f42c03fbc518638cf18a1b3c0b43233408b4861e3d7ea0d73156dbc6885daf6de3478cc60823bd189a6cb5f4de8a6117df7bf1bd175b2cdafa12ab1806edbdb7c2fb18dfda59e6398f5cdf26c6debabbbbc5a2287e748cd5b6d4c1086f74b831c528a5b4624ab1c570954ff1c5985fa7f7617c2f76bdde8b61b7dafa17e3bff6e2daf4a9e38a558c318ceba394528a128258d2a64f5e493146af638ce1af155bfa58a4b9eed41d3b758a615aa9d7b61785628c31c62f9ae8d3f96ec4585e7c31bef7ce203570238d5f77f7ebeef4d6fbd5fde2a7d4ff3e1a23add143ae57dadedddefd6e8fd4db187ec71c5712ad6db193780f5cafb515638c31ae15630cc317bb16bb23d80417ebd734d7efc555c625a9976227f7b63b554aa5a41f58e1dc73af8540d5b8159a8855f35ca8862cbe7a107e0773c7058ec1dbe052692a39055eb0e15cc17e084bf675bbbb43abc9747777777777777777777777773784d003989f2041b6d2309931d26490bc1b7927120909e50ccbf7d7f14f217c00a0adf77f63a28b986f0723ac8e390e40200105722ca0438581055c4808e36b6925650fa6a35ca6460d97f9512afd00727202c44600016c542828aa1b93e906c7860d9c9c0106c8d12180009dd58d1bab9d020ad8e131c0009e1e1c387a7c52527c583972b04e3f07002110248196023368813fe00701a004822830179874a503aa30d0800eba52812d061a882d12031ba6631bd9686cf324041b21e40841010708406280256c34617202e50901a23891a244458d2be6b56df0370f60bb006c99c62632d9b492cd64c6f6da5612d94c21db8dd096823795bbadd80d826c93406e14d0ed02df34a8db0679e3006e3b7e94edf52a17b3ab41987ed34699569656a2468d921211119bd259a5e17c2b3563c95cf1c935662c2d1663af05f9e99e987de6ac69bfc2ccc914e48488354958227a4432a8ce6619135c0e909bb7d17eb81a1763c3c7a0b52086aa33d8aa8885124ad5db21979037720949d3409aea8168d2474e6993bfce15777a720375abe29b4cff9ae6292e1718ae427e41a3a15591c4c3a2d464e8330766a2b20b490edd21cc19c21c12121467600b627edd94b44ae1be70f1e2723433e476c125c6381f7df9a8906cb56050682626e6e5a525b6449690908da242b0d557869cd43e446a2419dae4fb39954e342798217c2a027ea7abf99a961fccf39cb3af3c59be94a6dfb4510e5157c92a0de7698accb22ccbb22ccbb22ccbb24c841244867964aea85494cf9f788056ac9ceeb9a1344227a3027ece7aa23c2a4a0598138e132baeb04e702c8f687fe2915a9aa1cf08a59c9d1c8cc9700b632becfab8f6b5d8caaaf4867acbf80c9a7247c61f113a1738c2a340caa96116e41fdd909c2784734293fb62f27c604bf62b6f100508276384e4a3e88658437c3c6f8788a7037bf04017199564649bd027f3e9d8822d3090c5252815258a87e7ac659f59117c2a0243028fc1a884cb38cb0a0153760014188703a2e1348c729c82c831ed0184228c87dd4a45d3694407b3186420314619048c0100001008800040661c006298684468fcc89061ac2b6a05ee6f1816b76f3e70f7d8fc074a3a7a8a21a4ef17474462cae80bb0dde2676aa9299dd766a14a1d73e2563538b72038d92a0a5d397b5372a00b9eacecd7ab5e1e1228dd3fb6ca726efbbdef6ee2e98b6da5c7bbb9ba2beb3e041054e20e90e8b32add8d7d54529e32bbeadcd84725e569bbaace8f7ddc5296365be9fcd8c62d6529cb2deaddb239a3819d95ae264374609269bd6806e04b98924a6df06644f27f883af9edd5d48ec447f36ee1db83a6c31a86cfb33144be56531a3048eca0f95f00414aaee6ffe7f20e93a59aeb704ad7d066b8939fe374eaa14d48999793524e8023daccb6ece52d4b599f68f3547acf63ba7a6b4270fc2674a0db6bb4a9e1e2f28f531f2b5bacec2ff87cfefcaa24704d28dfd7bc1399710b47cbf9c3a9d64574cfb020e1ff80249bd3c7842d44779bad3cea07cbe360831e07252bbcd7b727bb300fb18130a2e28b5faaad95cea11ce220e0ecf8e334a4cbcf485458e17ddda1c74cd8acab091c91c7f639c229e813be5d148837c1fd7857430928b3b5b1b6be6b5272825cd744cbe63b7b86cbb99306ad5a776a1ec7884411e8d2cbb5f287c667668a658974e880590e25a636e72346171fb482702fa324afb5702f27c04b02e12a5fef90495be2340f6b7637f73966c1eaa9702d333f64887ea942825f0f435f9caa6ffbb08e0e72c4d59a4bbdc8db8dc0d03fb7b33410d46511e6962f77e31215f12bd71a04310b75f08dd7ee4fb3b899db825f028694000d485596ae62c9e9d41aa1ee6e990203a600ae395db6fe6658aad4a58367172ed6c0412d1ee26e082db6e337184fd2080a6388efb8f8422e3614290b6b17de91b3bf83984a98dd12c8eec8ea1026a6135197822cdcb324687654bb70bdc2e547e8904c75f1c5f644883397196d06c1a8ef423e12a691c1f13c08829e10eea991f7743622080d2e5168444d0aca4fb54587378d619b65fc1c06367fe64906254c1f925b8e1a455e91f04cc6ff2f8798a765240c9b7286f5cf179213827968482844797ae6b2be0b22c00e380983293808dbd038d1fd835056a204fd506b0abad1e15902e1cedd4e4386e245e5f4165de3c174c20ce3fd924bc2e8bc1f0ca14df080f0be47442c53c9a5339ab5ad49953761e88e78b497a208e9a6dc34c41a2d4abfeaa62f70521b79c895cbce20dfb968cea7b05538f0d6f614187d77a26edae1e2190f48f67e0633bf2f833f486dcb6e155a31bba57d91c2c8823218d474b3388cb6365df3e175a5cf505eb07ebfefe095c3773d9c5aa73cb580f2eb7990932c384a790a2af3168becd4ec1a038e635baf2149829e8cd99750c1e615c855ec1091a1e54c08fce95f2e168e2536dae0ff3c77d6b3900fdc8d624ff22bf1ff14daf1121ee661147b312cc3397e825ca10334e53f3a68305d28167a6f7d1f9886f5d1db9cff5197d1eb9c70b927517d41495db4a0cb0b6a1316993393d33e19f393f29ad92dca3d3c00a29dbf6916662fa1caed56b6f5135de962feea2d27c8aa2457848de5ad68d71e6d142e77b4492d1f79f171387f1605ad8d12383afef82cbf3b9e709c03f0a3c671930e688c92b86589a6eb06fbd47573d1b33d42f7a4fd19e34c3f188a48101b452a896b94ee3498a38c65eb523c3196612494dddc3fed51638e5b08b895bdf73032201bc4d32aa88e1b985ac502535e927616f165625d58bee6d72fcdde3a3e7cf8eed3a78fbe7dfa609e42fcfdd104ac74302372c91151561dc6da7d85475aaddfcfc48cc53927f5b5b7d5f9e75f0f54b83942e06edcd08edba884af8d45801e24c3e4b1e25ff70084479642e33415dc98644dc582332cc851eb9ac80e1161a610d20e89af7d203d20aeed6da23ce6687199fef83a2a2596a935bcb6fc1b5b560fa435f0df97841d3a52e080de5407f3403b3e9e962cf5bc34912315762abe4bb3c00120633731f5a5b472408973941701916cb464f3407848fd092cdfc02278c4517c0be454a3781cc011e10c00a12a41a42ac083c3f50cf308491f9bcb193e154d47fb5f65eb5c14b14264a16d908460c5f9c6551d06f2fae12f90ad78cce07c5a3adb5728cd5b106a7d12e144ebe4301c69ba3aebbc09b261d4f2f4d51e0920294c1645efc4ffcd7e070cc95f8fb85a14ff7ebd13f039745a2ae27efa7e321760b274bec377be6283d7ad064fd4c5977495bd9b112aaa92f4a58741587e8d660f48bb7a940a0d7f274debdcea0f038802d24a2d8bd6a74cb37490efdd87e8d524008ca2af98e321c77eca93533a740edb0e136d5cdc02d7ae8d5b913eb376e2a8e34a4c979c3b2bb21057fd415d5a80b09cc150e7661f72c47e7fd94a14824a0aa6180e025075fd4752d631b0e01bdd12822070f5654ccb477f2c740e7575b7b80746f4cf6e4bbedc8f029f8ed9cecd4b95c411b25920333cdd0c9a69436823165350386a87e5a3b09f23414e367ad855b2e700db6839c80612db70126b9fc11a28b418a171039242d70a6dd07c2cadbfc8cb5f8880a21aedf4bb496960aed80253003ea76853d84207f36fcc8ae80a8832f7f25aab63b7802b717f9217217ca83246cedd5698d2459718351ee22cb49079fd6c0b1b84176af51f95de031e038156827330175f11f7076127c190eac3f2b0949ab8a05001338a22ca229e6f7610c94363a693cb24b867fa6287c672df71cd5916f710c8a09a724574c71d4dc8f523f3a0f68efb0d0eeddfd5bdc2c37d95e8643b17df8889ee2736f4a020ba00b2cbfe7e5af97826f4af896963c884688416efb8d839beac4f75c622a7e0d579ce60e04496ada47d92f66a71d616201a7187b65281c0755ef3a9aad3a198f40fd3ca06052e85eeb65faac3d67d0dfc65343f53b07896cfe52ccfed8f1472c4f956fc3b81b67b6fcf3200b49c0f9183271f298f4b0de9b0b0a9e5ba77f9baf4a2c21d7cf9374e07b3a99f47be0e843f1a219d6a8b525cdca925ac8a984d116a2bac68ca29d62f9de18d3536412c5b2bc8ed807c088f14311ac430a916400266c2fa59dcde5756b19509cf967535f2a79feb229724af6f27a249bb29f4cf948249726417aaa0e09e9aa99d75a371f4a41b812b9db9068d2831d7d9cb697a358049983d16362e28cbbfa92d8c689c52d117a6e8ccab223db774a1ee863dac3ecc27d73ef7a5528c97d8c0e1e25873055e12966dd118f01cffd196ab2aa1d43ff764ba56c76dfdb5d67b2bfc91c406ee2d1640747a420a45bdbe8d76f3cbd7ebb9e00ffba853348bb716fc0715b38d1788866c42879e1806fa743b46ed482bfde22637f7008d7d06ea0b227226eaf48f9348b7b8360d9c75321e4a9e857565638ef76c80b22c699be4c85d296315cd0c928707e362218e2516ebb81e4b88beabea093ad2189b16c9da0960a2f1fad4e199bac81e1b91dcfd3081bca093b82d99bc356cfb299bd7f945b75b5f6fbd0435e4715c5b39dcd4a1ffbdf7b611884ff4ba10ef24c12c95ad6e5f268df79a2a71ab0a26ac81e3d8effab441638ea887925fa69772bdcdf46db04f8456183ed0ea06c3a6d262ff110c2c19136e6ce54daff6f058600983810a2817600794a63a941614f5e52b225642a15464ef801c21854220d3bba828b6043af572d5401c96b1acd644425937454bd8bf3356e23f15b922ab2bd935f3f9f567c74db53a3df6c9b83b8c9eb8f321ffcb05089adc184cd71dee34055e1e6e2dcd8df15870716368fde70710ab0bfc51cd17ff11bdc7bb85d91ab58f6e7a4d4e85c4be18fcba68d8c2cd7f4c3add45317cdc89a2450dc2f8da9fc93924060d6431286201d0a8ac238b62135be4b749e2264cd2e9db085390c8ddfa1f616b013a1fcd8b9fab30d06e815713fd47de6c2eff2f0164a18fd8aec0cf366747a6b067e947c3e4e46b2d1971c25541ca8a9fe9c63ee4961b46fd7c1a470209fff6cd31cd8bba989097cf27ba220d338150af332754c2e45370245017a3871a13707e5aad8b59a1b04c63390c6cd5a82d47c0c451a49f12f907925cf20e5ed10945e461ae6259ff3738991f1541668ea0921190c49128f4636cf5198be080f386c8a236410a35b1c55e02bd19d1967d30b801d20c0d0c41db360ef97305016c20fd647ab15a7f8c662e41f71240ac70564e3b16046e2deecb9597f61eb4064ecdd614424810b4b7f33934b38d354ea086aa0a5b72162859ce569d6ff7768e49ebe448b898acc2d50f21898fb3d1079a2746de110293a7724110ba22c2861e40f5bda0017fd1f43cb171b61c82902c7a10b3679a2237f99773260f7cecdc1ee539efb44c821f975eeb806621d8e895ab5bfd26bfc6d9d7c5a91d391bd0a74607287ce939c11065eaa904ba4c6b0dcfab012a6526e0c868e020f392588c590d4151871c70425668e905151a8192f5e68dfd552d8004b7801440f290277d113237dc599a5f26735c2ca06181e5d9b27ef274233bc08c5dde6fd8017c04b0018b038a8c419d9a3cb04fca422fa240269c2bb8aeaf6ef3952bc9c2cce005ab68f49bc4e4022028d041ec568a06bd6f6a3d061ff373e0bdabcfe87f3fa23744eaf15e91bd51f23b7b3cad92a218a8a262d436adfd5a6ae3ad3cc1f2c8878bcc7fdc600228ec07fedabb0606b58e3162aa246c65e53af68b782340b9511001877ebae876c863d24299df3259d450a87a81bd6622da2a836c15a492c17809babc4a4cf50e9129e4fb3d869234338b29e03ca6dc64f03a556b968b88179ae1c2cedee92145291a009408534d4a4c750967b2d0a9cab14898086d900bb3e27eeff47e80a8064576e369241ab358d0c409798aad56ffd58ecb9c1cd8081e253cd71e7f5f497c34ddde665f0a0a26a01c751203e44b8a2275023a59f7bc5777121fe737bf437cffbab5c9d00640c4c554a108c2b582f1a61c5ccc6455de60c8b363d8b92571e4ff138b76e660e8125190c0322aad9cf50b1da01e3dcdc104518c5ba40294ac0adcd3f76cbf158f2ee05e1f2fed82576fc95186d588a67aababceeec3b2a9f4669e54ba34a1ffcd551e94dcc38468459922bece17e1084ce443fe203ed350540a0dda706eb17ebecd030c78d83050fe993393b23c4619acf417cbac1846316eaf6ebee34c70a94727e774b3ef9f58dcf8057d0fbd5c1989af933a8d697ef949174313578c9b58e62d8061c6adccdd558c6fd78efb830b518f91945a02cc393700a7a223bd0c6b7ef07a2222eff814012771c53b2ef315b9e0b9820f698fc51e6410bf6c23e8103404445193a53458d7626db52ab5d4f3fbd93b14fca4b5150c81bdeac56e0d269d308ba6c44ad108b6f6a3a2a1ff894ca8a6f74cd343a611166abecd169702ae2548335a254e7eb04c4ee1dcdefa9adcbf84cbafd600e67aac2798c9165f68e4b5bbe6ad3201dfc9ba5d7ba2c8bbe324def901f0208ab180969394820f0dd272a030047ee37bacce589900e8c1e6f789b36ea490f68b765c7bff94533d71c09007d7ad9a46c832ffd1460528f30069736accda54c0998c6167b8bd24b9ad2d8af3078961c8507468953ed75e9969afb05693013ff93d7c062d9607f7a8bcb5830fec2b718cd42d8206a06e7eaed11a6fb806fd4bdf4ab977c193679b8d8fb007be5297978ebcda88b7cc36e70dca153d2d7a813f12797feb27ce96a7094d9fc48a096a76da673af7a6e73df6aee73dd41b39585331289d5f12dcbdb153c33a1cbc960e1360adfb7ed8ea8761fe3e026ef89584d8b96d21bd61aff98444c5591472d5d91c7cec52664e686d8bc0f2edc0a7faff61e665b22452cad2a6fc94bdc7a8a5c61a42ce2286dcccfd0eef8607178f802c56121992bb1a3a571eeb353f41f8d096724b50fbdf08412db87b747dcb8ae1923ec424b4fc147009d624f47f04cf190bdd9dce00d398c5ecb1fd42ee91f0f4312defc4238e89cd0073cb300c2f6bcf43947f1934b4cc4a3606817e136dc546610a59b41b29ae5ad131706029d54c92918283b495e1bcbd5aec3134a6edbf3ba11c398e3d622c4f653a450d144ae5ca873944bda0648aa6c2eb8a639bac86b64f8fa8874a141bd003cd5663ae988df4702e9c3d279ce9f24d20794db9745d940093b8e82182abcfa9abc41e3ff1cc7ed59b8ef08611ecc633811247e6fc088bffe6926c6d9308dec831624b22de5e41a5f83162d186699040ea57bad20a4a3728971bd585ec7f59ea593ab1afd30965d65f16ab82c2745b8c5e8453f626ab9e21a846333104849cebbfc3a1e3608db239d5234ee9affadeaa8651733fd3642185d3890cd0a2749c62ff66c76f292fc1b30027d466f01d5316a7cf849f67e59378075880af25f414ec3aebdf4dbdd9f16f8e4a50dfc5c0bd8fcbb875b80e9a0700859ee01cccea350772f5b1beb5d464f0d067069bbf0b3aeb91102d9c4d4f2962d959571f0a7426bbbb7241550c13a2dddbdcf84e73aafc66c441dd66f47a1aafc9a3974e4625f8f172a479f9ee6638bf6b43eb3a5a84dc24456e5739d8f98ec100906178d8a889a08a9fcd89805d5201ee6490246f90181cfcb887dfdda96ac409946b56e66c728af2ae84f59f021aa936876c8a0459ad3fb00b8e8a4deb369c01d562290200a44751c0d29549f4ed2c00d0a24a6e924a95d5575663dab15b4ce859be1ac53fb7dab7ff4614a76a6d13efb3b0315c2543558f05a5c5260668659bcbb531cb4877a9a865386eaa25f7147e5a4ada15e0390213a2e34f096418913e24b4bd85308c2be4d723677e590f442647ddabf70d8e51698aa8f7d6d27c7d88d5010dbdefe92a3aa126c291f8f11d162b4a1cdb89c21848993c9084decdfae96d340c6c5a6df1e705fe5c734b2260078994012cf1a38ed157bc55071004e3b4eb2606b6f5a8d0cab172cb7ca2399e1446f5ce783b3ed4cbf62fa35ab5d4d00f7aafb11825b47fab1763196ae3425217efc53b0313d9455911bb6033e307a50d4a59e40789e76899403ae929cc4a1b6776a3a8aff1082fd75bb788932e669c31272bb94099097831cac42edff9ce5b064fd7a2f03c0c60f04996097fece1e213a2f1558124af41698f6879c952acbca9fe724bc46bca7ecf3ae16ad247c95683a35ec259f39d28a9bde1a08e92a99ebd85c757d077f6b62c78384ba085b1d4d817372d0f9f1fba026ce3039a4ea6e61fa834ecb56f064cd5d056e4330270da2c201b1908919b0b99006fe94689948ee916475b47d75b233c145f9968e660420af132138ec50b1a45868b5e11c7fc12ab5b910b509a77c646898aacf8aacde13827f0cdbad9141f8474af2bdd2f4104dcb48bd677751f38e6654dea903eb191e5103219c41a5a088dc3e3e0e305a52541e71aa4d0551f31513108ec8751bc10db09f8d0d3c1a8c49f0dcfad145f11bb822014df3d0a08cb89639efb5ab1e9a6b354b127a84394219b93785414081ed9495dae213ad271550214a23e0875ac2b4d2a9620c577d16fece1de768aeddbc4097db3f39db490737748846d74e248c04c0f5ca8ed7b9b35bacf5f09581283a9493958e4130d6abb2937f287a534b342023d93201c19391c7413cc6fa9038e24a660d6b44555fa8dead6b9a2fc726975b96787e608052b724dded80ffbcd5543b853598259100a0ce6444b45a18c9f2c05c77d449479d7fe1a14bf575b8e8fac916aa1fe4b9c6e37f2f49b536720de84a857dfe8357f95a3c4ba6f5eacdac5d3302a64a578a103e651d267c69858f19f6c927c09bf83cd04eb42e33690ca42f5aefb5d346c8a2f148d187a45206d53d3119c910878f82179a9eb662b54b9106496eea455d195392924d5e6fe1e2087539ce2f43934020055b0e794f3dc18829586d983a1380112881e63df8365f6218365273e2e2de2c0a4ebe50a9c17557d2413693dd43beacd0e023015a12a7ce59177e1ac406ba11e2641d27e7cb7783e90cda7d05419c8a7baa24f33baa85cf9dc62274af039d322b573b1e7b5733d21a54943f9f8b1542180a010518b9c89d2e9bd3b2040af91072a25c075555bf3b84ee9150146398eb7b223610ee451e7929a9772c0ec958ceaabf59f8586c9e9125d6c854aa5c6a153c0b7602a20a9fe35e09e7eb215712e0cc5f372e1ccd05572b62308bcdc663aeebf3fd0f0779c183fd10c31ddf7833116426eb1aaff0e39e6dd2b13af545a8e4605f7735263cc3e69c551d9452b3d02e45590980064828b8dbd150998808cf377beef7ece9c8f65c9735d2d1982354324ad60658f86e45d567e97d6d94f37511c4557c80a835f8f22f6893975eb7bcee925a0f3c650ba39ae8d5c3dee229e06f5177a55dda94e318a86f92e35f61c575f2a81d6ba6cd88d7cfc1590dd740fdd8964247d38be82351fde1bf9acd11c3af72d0e87d47ba70b2256f96b5df7cc87cf0f592cb0999a3f7d0abc2f77a46875f8f816a7dbb28da044b2d5faf0f131158467762211e0217ef687ed61046934d3d22bcfccbde5b2d777b8b6a26e03a16587bf70c323a15429e019e3f70765b5e3a755a18149776d9ae727926a6d414de794d7979b6ebdbcc4a947bfdf04045321dc74446d4c965c7df1aaf66bb2a80e4a05481b82f9bac78f545624ba0265a999ae10a48baaf813398df1e87c15efd1a68fe983ac067284b387cc56b326c74cc20ff686351d73b7b8cc5dd83bbe359a25ba49fcdbe25a291dbe4220d00efb0a3ae549d97d51c9596e391d1fed28a459c69aeb6af4c73cb3f7210d895248cdb0e43383c70453ed1456dc047672a0e49a6dccdccb5cd8e7615165e9fc69bfe087b66f92ebf271a6da2070cd957f6d4675ac10caff71f8435dc32d3955efcf2a879ebe83446f11bcee70ffad9585e4d71aef5fffeb7b12b931b4526956c08676b7a52f57a9ff02fababa720b915c8168f4621e288705a906d04484fb15a48fa81ed1a3adadffe1e351f2ac210c8539ae93246eb594c391271318254c62a68df9fc0e9e424f273e694b3d277609d18360237591f5385354a3c8b7010f9682810d31053b6383d683656088d915b3b2e390ce11f4bc6e23b100af318b2b28824a510978f73c03eaaf930570af8427e09cfc82a942704efa40d69ada87aa5e1cfd9ad62345ce443ded6337eeeea3068531ead0966fe67dd43229cf05a92eb812a1ca37b3eb8aa142ffd481ae73c2a0fdeffe7104bca2e4e0fd6bb2292be687e6bf59459a7a7bb0241e7f3b00e5be1f1a827259335c394e5873841f42f9b050cd6488995f299b7ddd44fbaeecea86f14a34839e85b579dae7313765114065f8383e9123f2006968dd65c319e0fa3d1c58bbf7c39d8bbfdb039b03cebded5da40949d885a225cf16a6d66777c65e9258f92b19ef48fc54698e57315819e74157b77f8b22b82882c11ee6e0a2d7c73fcdde01047481d5c545a4dbb1c140b59e995cf1a230c48bdf2292f4ec46b03109ffa1b8ea0035700f7f1a67422324e9d6959510a7784a494b4bae20e4e57050ae9236354cb252379e16db8f58fb362f132f2a18e95174e71aa2995644ac66597a492778cf806c04115b5e7912bca102464876d202b5c4da08d30d5217a7efe63bcadaadde390877f345c99f2d8e38198730e93e26bc670175c2cc153ca07244a097ccb145ceffefff96f89ca30aa4894056d84de6727eb96347cafc0e7a7db1e8e8354ae7df4dfe88e38183cd0a065c013fd9ca0e7f642b6eb25e28c77dd429c9ce6fd675bf2a719894e4eeb49cfc82071976a682b05fc009c24d77e2d77dc27697f3d4aebcb5ba0d175832f96145679731b841437927ba622a454db527d8f5c225b4286649b11050c603b9aef81ec12d150aa14488b8faa023494a5a4c321ca4ac6c176511eb9024bfff15f2999ef2ee0f666b5a3d9827b7c29c9331df9142df9a8ce35f3724b193aa2cc93a7b4308c8311630e7b01a06b90cf7357318d311211d0945d8bcc34826d0eaf10531e682b0517d38885cca9ba0ddb1b4c4967a4d3196983b7a87a03869c5bd8bda097975315ef234494151116431a5b8f9d4d15bd28a46a0703676426c02ed1a8f5f34c326f96cb13bd16e62fd27994db95fd4a4fc4410b8392e50333bcd5342401b90e3450eb0c0a24d92e86cbb32cd889f73f99390648ea9bd4d3a10f9e1d1721eb29826083c483e02c210043812e6b341cb5e81885f669da24d8525cf99910eec40d1d9493a3b12044ebb973cccc8c0628b4d8dee3d9cf052ccc63882c05deead0a8234d4603803b2a303ef4dc7a7323f89347d88988d4d4d961c047eb1e33baec33366189f34c1d302428af2d47ce3372a0048cccd9fb6a76457b63e0603d8c6dd0dc26af73448bcfd1ccd2618d727dff273dbc321da078fc8b69eb678d84b428514836ee278e49cf944328fa80832d4141b5d10b63f20e057d45d129dba8d0ef9d63d4823bc8d3b4500d3cdf88deef19ec18f00a06aa727dbfd537d12078e8f311b974ff0206d9c9167e3b5d2e4d0bf47892733093cde08910fdbb9b0c2a84483982f565eb33de93adb83b4fd63359f3d4f03ec97c64f22b9c3150acc217cbd6640d225a0c6d4eb7982ebcd84fb414da8627ec6aa09349664d01064d00b4eb46f299dae449e6e0a6539e0d0ab0242329c217904759a57afb36ed168c84a3ebc0d2c648cbb9e2645892a76eb4e99802a4ad70fe1949e156f8dd69eca013d3ec7a05947cfe0205a833569500ac7056d86bf486bb0aca5e3594e6f1fa05cd8894b12f341a887e7db678b378f969e001259714e508f5e7d61fd5ace043f35f33256d2ac3d896d3c029ba1c021c12dc9e1c321ccfa8b5e53e8eee04e64025baf765ce3d06ef6f6d20266878fed33d1b985b04d8c1d28f28edffe0f510effd69d5fc46aaf3fe15b27037a01f56cf1dc0a1aebe1f74fe62b0bac1bfe7218e27ac7018cc89dcb096335816df082d7614da1c51c0b59c99a4ea7f0bc997caf6002a38b017b2a3397529b2184683659da64da626bb07bb83bc061fbfd03a4978061407c9833fe239af9eaa4ccadd8257b8056d305b05a23ad65efb2db5e5326a7ab72ab6617bc636cfe632b5653efd3775b3d2af6c03792b421cd11bbde67512399ed494673c8d349393fe3bbcdc0cbd846562757495ef1d9241322d62b1f0b711c9e35373f1c982ce0cc8ef352ece0c892590584b242794349841914a1c0feaad1202b7c9486913f4caa008a0b9d1dbef61709222a0d6c3d5b5410adfaf8758a5f90baa9959794cce03e2ae8da16860ae63fc08df41e59bf057f8bcf5b99c18e360c66c28ed35d98160f19e8a33138f51e4a42d7ebd46bcfcf88eda54dcf6db773c2f00425e0f66d89a8f057d82a81f59d989ea4aad72faea68502901e6971d9fd92499c6af74f084cb03ce8c4e4a12f7c05ba43080b0ab123509fdc4812b6056107401644cdf25144662c7814dda64535e1fd7672bb02e00bfadc938419499e110b13840558751fa1f7bf79de0da0565ff539483a73575c596d4d9223c1921999df2815775996604a0a713dbe8d0d1c014c3660ef123ddc5f59821b240d526f70117a5e264016f5c57b1fd4c720ef3ff00dd83c35f69ca906a4d5b664f3e1960c37bdf7ecc71522ba529d2ca078a0fb2f437ac2818639bd356caa7cabab018c07011a9c202240506cd5010934575048471a92b772e05667153fb3165e3f6802395bd7b5ce03e280f1c0d93ce2af35054c94d748f3126d0c8607df522b5a2492c894524a2925194b02e501ee015cb9cbfd463299c65ce3cd1aceeb2ca467a4a5099211a351a33f305c3c7ac4a7c58a4891f2a840f17cda3941828d0d84253a1f7c45386400023760b0a0a595853561c9920a0fb8b822e4840eac8450182880e25585c08b8a011d951eefc027524911b3444165d932e0690b58801c5881d6a917714cc530350d1bd3f798acbe7add51fc9e7beebbdcfbe7659f7feebfeff2cf03107c040212fc044e55bfea89f779510abe82ac057f0106069f4186deef69b0fa561b1afc061c1c7c07beab7fd5e1c17fe0e103881013fe0411234894307182c21f51e193c0fa254c9cf82a7be31cd7d4d4ea5a022874067e99122446880801e283870e3e0e1b3464c09015f5e42460c08e27b9b36579923bb5cab952eb55a9542a715ca9f5aa54719a6badb736a65e1bfb9a2ed3659034fd21c009b7b1f5bd37947afc64ad91e5c52e3c3e4c39f069c0f7bfecbf702d6753a666eef69adf45fde4fddff65df49e65db76a7519c186322ac449104d8882d22b2842082a0f2c1cb03940e421f1787251bb434003314c160298b2deaf914c9e991804603763abcfb179416f460f5a90088c2a0098624248ac00882a30791ae28dd2a35286285a4a78401d7822e05517854aaae24d082002c8351c56004080cf4b1310d868c2cec00181b365fba68391eb95c4122b310a9249356a644292b9332ec522aa1702d974eb69430994c562467675a40b548b337d52395d0283923a539526bbb0158bba9a15d72b2a54d5283e463b496e869a86dd04ebb1540bb35d71a3d17212a7403846669aa3e7f3f6fcbdb1d34eb8716f487cf944e6a8aeaeba0747948f45d58b1bd539fb77210a7d1c02821aa356775879b3823772e639dda0207da3577cefdf7c68ccd609489aab857e17bf31f0a2a974b31e6bdfbce314e2a7ba971cceb3019f7ad070a38e1b37fa02de074fb389e8cf29fe723dfdb67de95c73a2695aa14121b7113a7c99fac67359371ad0b61eec44d38dcecf9c762ad43515665bd67d9b6fd3f1f6f3b79fb39fed99ffb007248bf3f7b8577ab5b6da75dfe3befbcf3ce9f69b7ee6edcee2ec4e7cd003bad7513e670293755ace39c73ee8d39e79c73ce39e79c73ce39e79c73ce3977cda50a4411806a070878720a0020c7e29a9856f5d6d374e5b78f5befbfffc6b5aa6a3e755b99784ec77afe8bd97baad44ff58c449881fb491e8e6de1c6c68d8b1977f992178985b8abc9323d96c252a9cf29d2f47b4f35f5c5947a9d54d465deb3dbbc68d779d39ceef3b6fd703888b7b010e3295f87895877755d6f1259dc1ba7be7bdcf6d7b057a06acc31e6bd73de99302e96e1fc728e8b62c6cd390fa6c2dc141c85a30e890123060c4ea36d8b339b75edbaae6ac62ad3e659f6f3b9d9502ede4a8682722628bfe2e9d5fdb9db70fc87c37ddc0f9e5e1c5e715518fb431bef9474e8b76e4056fdc215b95193dd239a7e0259d7ffdb4f956dbfde65b35b96eeb976542159ed6bfe8172f479f5c30a1e853c34c44bc36194a1d1878965137a5618e32adcf6bfdb5d2ea2a8cfe18c41cc6182c02a7a96db0e58c25d17b33003750e0ef594ad89daeb34e57f7bbe539f7fc01f1b13ad70cbcc3354f3adbd854cde4709fa3f14542eddb92c23339b8bde944523d93d5eb1e48fe3dbe55fcdefd038c67fcbfabebc676d4cf417e45c6ad76bd6bafc3baff222ea2ec35d44d1fcb358fecc2da658f1a27989a2285aa65cdebdd9b4f10e4ef516b518f6d9a81ab546af0e62b5a735dba2f9a32d8ae2bfd280b13e5535d46b1445b5465114fdb8e700d0c5c4fd45fdfa72fb5d6ee6edd41dcbb62dbe3c5e2edeef3dcbdedfc2aa8a33edaaddb5fbbc6d3f200ee61b597743c60f6d4cf1549f3063585898312ccc58a64c18ada6a13ceed6ddc228aa5ed47975dce03a04eb9864b63b3a9780dbebde1af7ab6f92a3dda9d67e9e8a537c76b5e4957d8cdc59d5e8c5c625f376cbaeb26955c75435812436c0eafb5300dd939d7b1fa5a56efee3264ed49bce8ec34d346713efbc7b8c753c26934a2533b7b253e8bfcf23c61863ce59cf71fdf69f5428fc95968f39e77cf4f9c9fedae017ea2950b8d9a3d66be79aa99e86f7e5ffdb96f5e85973c92c53a2480cf92a5dd3fdc45f949e3bd4afe2afe7f3f9cc37ce39ee63de94e624f2989169d2e7934a66c6cac0b60daf4d19f7deb81f77cf479d73b2779d06dd2cc5d3c4997699751c5e44428df4309113028e913b4822981c21abb5a6838f90756631eb614afea98befe55cc094cd0911ce18b37c7cd63907407abdb5c69dc179c94541e2ad2363001ca54e264b7c5331ea7a557ccba9f6bb73deb7d769be61756542ef57f1cdebc5d713795a7b9d55557baf0705a487501ac6b7e133549e316b63d6d5e790143448938c18ffc84985785768995453442c1091246b5face0291b634951ea244a1f0958ea20d994f959f2e262b2058f9791fe2852954379bcd99b6571c8174551c29154ea661e9d25e243478e1fa621d3cd865d06451906775b9b93466b047535492e654d0a56ec4588c8ae7e060f14202544cb353c8d195f268b9a27479e20e16b8d38163f1e8a999b4b2483a72bce21254225bfa817699aa6dffbd47b2d4135a395efc8424becaab1d0325e07c12fad319f8a8b7a21e42a325edfc78e1679a569b322454bed831225992f49890c2d4a718819084e71f826cb1a4b52beccd0d08103ecb0bb0fad7f3ca2041a04c5a325c6511ddfba8ef3979ca6b95c13d485ba3ac1e1c3a5c0dea62aad9b771caeee43afd7ebf5ae8aabf4057fcf79f67b63efb7ce7a976e4f82eff6dee5d87b7badd7a83fa3befc3381475c5274e7bd0f4745c5faa8ae94313c2cbccb19ac2e060c5a069606827ff8e881f2b85bbe65b1b2bab9e7e9dfb20b7c3a58449bbcffdb9665f965d9ababcb2fe660ac6fe26b4307e72df8675b7e25e1de8f96295124c67280eee969df7df77de59c1f098c53a8048c388ca400e3d600101487e3489a65490c824e29a63da424cbc4db8943835938922621942121620c5002030000001020080c08cd086d003f307d16e0c97d697c4b31fc250923b45f781d6237b8aa86044ed6ffa9bc116d10f0a6e39b8dc9acbf6e4a7ae05c88748bac71270ff57f6d3298e50ecd26f52436fdd8339f0a35912e44c4179d4821fbe97e0d2d8f0b3a21910c53fecced5ce3aa2f87a1da2846b7b26c64d469b58724dbfae0cb6469d74dd9c1887aecc0cbb469d54dd8a32d4e194bb87d4a10412b078ea78ba1da6bcd634b8665c7edb53bd065d05014ad5edb9e488f9cebcb49e36ecd1f7764c933b3129dc70d766e7d1617f6afa10f696044623080511233d008fc00fa09a599a421d450c6107e0660e2c146cadc4d64cb5d50eee5b7811ea6e84dd17c10ca928f6d4809ab7757a5a83a19a78398585fefb05d03b0cdf16286948c048f07eec44a2774b32ab6b14d89f2ee8702f3810452d8e0c68d1c61d921d2cafa4bcc15f23d242a081fc88f05aed23e68f55ea2383406516638d732ee3d68b2c0479620dd4c1c108e344caa7e07df24d0a4efaee467c8cef90771752a5deca60fe0a1377d2045a226b6dc5eedf2060000a9bd5feb337dae555a374cb9920760cb0d36efbf10df1b2f7ab3fcdaef3df48fd6ba80958c5f44e12c7469d14be28c72df4090b6059811f8354b2f56a98fa028c566516b5248543f1d866b377ad32496c983d211f00aea821a0610729d97bb901fcdd1976d2bae1bf36f58303b6b93c9e56e0b3acf4333de0065f09295842105fb81b6407551053337cb65e022508bd615040268152fa0a2975c9d158f4c82f83fa6a60e94103d1ff190869eab5294828e3c39fdca871cdc6791452c544e46208e1c61e248d7c926ac83515169e48101b12922f577a6c519c5cf4b52026f6bcb741578f9785e70ed45aef7966eac6d6123333c471708964c310aeb87caa454fbc4aaad378da61ec78a2e6ec0e355624980a1546ea77bae1713a47d605c8b9d7ff4dc849fcaaebcbf19206409a67744c8575aa29322f0608df6a395d614c3604cd830dbe3f2a9f5cc92657fb0fe5ba429eccf459a363425869a9baaad20ca0a02d1afeb0f0a67b12bafb91f2ef976a162ab74b54caa5b8a88597c216f03be703b6ee9bee392fcde3ad580736ec75a7dfc73d50e5c2513ef86f72ec1e93e48a0693df442108fab8060fa0e06781674726cfc87edad9b78496c2902c2e4f886e5aa3f02eb320a3d4f3dbb1d725ab8cbf5c3ea4f637cb6dba9fe2bd80460a9a9dacf7f832207309368e72e4633a0ae546250c773ef63af2e261325fa11b79dc80388981314079230699a926f5d0a63aa85f28b60f1941288912e49e51f79f6c04e0031bdcdfe3091d20ac96c5ba9ec0f13c313461775115a295996402d5873e079998dda11bbcd15fc94fff843400992b2a6e583dc027b0465d866139e15e6e07aeee0c4183a6e168710716b08d0f909b96de144b0802d9680f92188b7f0a2642f1f0d7bea1b99ed10b86de5c7000b2adcf56347f2c0e5c54ca94f88cb9e416c32289905a831db73202b34d76940745074a68bd20001011a725b3ad39a2b6bc41c6b7827eb439f325f2a72be6f865046351f99b976dc5b5c0f91f9f4ab831245d99d32a67ffd11fa5cf4899870a6917e4cc37d2eaa8b456889cc0252b6d4c2b9513a1f67b455c650cec92ce35e30e751d258681a5655a3a02137d89a5ebf45683825ac32d9e9bf38c20a71d142de662792abbf2bbc9703ce1e82508e972fe9390a61e599d12b86f4686190aafe908feddd31c181de238bbc394326f92cd973e7105d78eb221892856252b5dd4195b7fd6b8f2b2f969be35bae0da98360212c51f99f106ec536a20657a576fab97837777455152f2bc8665b64424304e60474b9702e7b56851323df10b351e026475fd3b71da9f925ed2b6671857d2bed9bb408ed464bdc1bfd5726c66e574aec1601fb4b5947b9e8d12a314460dd59bd74a77dd6d085ff9d585af5e1938cd12d39aec0848db68015c2c2f133178603fbb7e0753d832c68138896b4e50e11ac2bcf122a7d1d28c475c64ea9d9644ea8a032a0f0285ac478c987f81a2149dbe314e5ae2150560a623fcffea29873d6e09fcb19d3bebc02bbb0f1da451b4386d66e84f94e1ab5cfae09f167155454423fb8a528a182c3356b1676ab5bb716accdd15fa592ce85306b6dbbe2a8367c222ec6094d652cccb7cffa64c7c7a63573658de5cc153a8642b61ff410a9cae576d45bbd152ae63cbd40bc970d7bfdd66163c6943562c275793421813cbe4f64af0d82e9519ba8a653e2e25069eb2312cb80bf2814c71f1f0e1d7f9fc3706e21d6125e2329f4b7d5140bf3de6f131a86f99f5713b6f8c070506a5cd3d25d942ebb6c5767e4deb9aa663a9bf14e6def5c6c7090f685e7c6179666772bf6b9951c16c0bb564d4f8b6fc2893915e0e082640538d1de51a48f46a11df0b0a22ca0f9005798e015d68a66b23eb0096c9a2b2bd5713fe990440b6887eca39bcb5b81e886a60ca8c582962542c870f8033cc80246d7ad3aa913f6613ea825470585698c76fd721d27c340fc2de23eab5bd3f8d42a5e3207be8b57600f0660beab321fcba22c5ca639ceb6d7f078563c3f1b3314e72e5bbbcc433610f0fbebe1644a42e4a3dbe2bccb558a5609d4e3ef1dffd8804ecd1d9de98e6277502605f830c3c0ae635d022156990c31f44e4d58a9f79f089c7d68667e21c68d2c0a33cc6272d39ea0626cb13b277563b8000465451247d9acc398260bc7b70c97c80ca5d0f7a3f97231c03358cf572af5ea24af28d45d09d12e8517f971eb74c2cca3004f95a7401195550ebb2675e32629aef0d747340c2dadbb9316173d5c595f9e050dc273bc65b8d496d12370c9a5ec6178502c78aaa91bb22c960195d66a9b8172431048080bbf3796c4095979f01edfa02192541cc4bf31286aa0275be0059d5666ecc2e8c28983440e3ee43d9c787f748c13bce95bfa7d76d614e0d56b62cf8253cfb26fb5e03048445503b0115f60b112aeb8ea2b00f0a70807255a9cf6f89a7faaaf99b976ae0ffcbe344d1ac7c0c79aa4abe0be334e8954a4a4f9c37edd2048c82c1d57ceacda13ee95b2b4d345a874e3a8741b315691646fcde98535604cc0a3dd8b65d87367a5e0fb743fb5eb9afe842812dd8bf133a8f43085ce5b4fe591e86bd30a0290cbe41b8d95ce846f29207048297eaf37d66869733b439961673df254cf8d99986079a30cd8e90050797575244d921d489d53a5a98218047dec80815d2ce0ef709d3286a15d2bfa6c421983a00dcad249683c82779ccf996c7daa4d5d52f146118bdfae657b9d5fde474da1e25e74ccae8888692cbec388fcac80c20223b9c32f4670cf61b2f19e4648b16992e617ee85fd40d0fa13f2c9240f9fc2a0ddb278b39abaec5cc75d786178552e4c73882d58e06d062f4ac68aedc42ad541febe1b14e5acb68b2b5f9ed2d00d319d8aa9779ba3962710828bea8af5200e884c147643567d818616db62df4cade38723d880c2ee771b5c88141467cfa7b9d65113dec9fa16b27f1c172c286df938b8811687f63a8112e89347333c8d6cd748abc47b361184ed903647d075286a476af4be78d8f9c837a734872bb4d5596288377f510e38830f57985ed60a3a7869d2c5cd51a90959b40ac42c03b47ba9dc6bd20d5cf56aa3574bd6cb4c6f0b7a4ba51737cc3762ac457a0b6c2e2cac55ed8c9a696c87973d7c037d0b75d1e3b9ebfda7c2f45a78d35df4c9cc3b3427bd013fe233e05e782d96672b4592c66afee462fec69dd5655809d86647192a79912c4014ad08d55265d5781a93fbb914376594a615735729ff6d0e644981294821a418390ab17aa62d24191605cd766dfc10b0b49d284846fb409ac2e126675de3ceb0fbcfa524533691995e671ebc926ee8b6e1fb0588e0368fa42d8aa7d2f0a6d0b527a0b66d6d0c10b1fde0e7e54596bfd34cb5151372641706d068030d080fc07aa0a400e0ed40dfe6a635e2802f065a921c3d7c4902d7da7b3c84e2ee9b4deae2414e18151b21ec196e6b0a4e47d62f75f2a49400aee3b17f948b881ada6f535ef14a7a850e2604ff485495dc0364b00e42f2b51b9951dec88fb3c7a1ca52dd9348396c01aaaf355b98328a9236e1898a137c2b74caa47d98f3dd12ffa8083b2bef179b6cc559d7965fdb0aeba0693a43502d0642732db748db095f752cf1a46760db448ac9d5bf88601c58c869ccf51bd154bd0e96be19f69f528458fa1184bd72e6d435cda782bb3e71be2bdef32e8b2fcd71d101ee73b3b072557fbf73edaab8492c329685a27c0d855c7981cf472195e90689aee46d7ea9ac494938a1e44adab45c2cd9153e03216947020a7255f398488f447b536490fb477af4e90f68348a41e3e01678aec9a5f7c7075eb88755423c91f02651ec8cbf3c9d801c221703912838259304688169805a045e68b0a10795fa236825b02a506aff0a81ff08651667dc20b04c6463f8fface9c43f3c434cca2e4ddcc8fd296698ca32713610ed3c2fe8a45091ea2ea3d9c1934dcd686d59565676a58a070f30414de3fe82ef26a1bfd2f2acfaba4b828470194739f7a75a5e71b68d7f943937137c67a7a3fcf8568e73bd1d43922c245440e4eeaedf423bcc327f4f618ee435fe223698d38395d4dba12f7ab6d7f568ede1e6f6bf602c40b1d4d717cb9c18eea8ee13d13fdefc6b08f7ad8e8e48b68d62936b81024e4bd0472e14185aa9b71eb3bda70bdacef1d016e6c024caa33642b99f569bfd524d0e8c36aee24a28243a6a0576571c7a637400ff8e4fb142e381e19e95cd6068b49b28c9dddeb3f0d95250401e29665aeb6a02860630b079772259ae66276edddec94233ebfc84cd54b2a551c13c1b7208ef2985a81bf8466b7806360206912eccce09ec1e452dc277863f1b079dcb262cfcac5426a373b9ee60feb9a7b3c880cc8707c0c91ec1dd21f436b88c83e30ea716cd5adf98d065e3c13acaf1391f0934552a0e37504831a418fdd227c43d36e2da8fe30b9e2c2d3777b18152508075ba70c1c858ab608251e97493e5b5bb16496134018d420a84337942893388ae3de4464ebf12d78cb85e1697e37132e49d70a6041a99ae43cfead6b4a26b5dac6b908a9970c9c25313e6053c946e94cf69d491f28e81bb9bb5d9249778a2c86702d046ef5ac669093a1137f06eb42ddf322da6da41f149fd3fe7f472592628059a8f1409f02fac568374773f386cc7079f71e4e1a816844e6a5aeb8d0c4d9fd1213031a8099d8670d62e23256fb16fa6b43e8860176b15fa3c49c30f9efbe2a54c9facbddb86e37f56e150a73b0c264161c7914ca558d2bc8da140f511202b1a437105657d1a5937caf317d1aa6843026a25c85aa1557b79c6393b6994866c5a736362ecd7dadd60c98ffb2dabbace21beb9a92d457e7dda4dad55836810e63c9299e0a0f0ec105b657e52988b245e0c04e0491dca7603cb4608ad0f91e909c0412df22f12c88f9c6413e335c55b4114cbc4a403c8839e0d42ec8e6436e5f992578d032a60e7ae0ef25682e724d486c120fbb23d1de17e97d26eb3c179660b6e55a82c4dfe5736a45be48ac54bd823e5005f680b1cf0f7b6439608f00df0d7fcc06e9779182bd71cdc0b04747766b1be566e2579e51d1a8e2d3246e01283dc964dc769ce356c0c30f569c4a53529a71e66e9df182151e974f891bf27cd3060567cc9ed649f870a6a889569d2825d63660a43b5acb2db9c34829d6a588d94879b432141c9372656f113422dc3ce51da96667302055e968cea91f933a7227313a2ba6224fcb42f791dc39c95903434ed397de9dc3164c5104854d8f76738d8e87c7f6e29bd3053d380eddae629f72b50bc776d6b2b4fce0352b8225036054c3470d1633934b952099d3c8185201c81aad6399a71345d9702d9651b58c17af27ccd3c47a3cffe88a6467f58ecc04dd78c64f23646be3c4a27441ae27773ecf2bfae14c0f8ec11eea4433a09fe5c831d11f475128c3bd5ed267cadd7d052db4c6e62529cee887db3adf82ec369c7d674bfd8aabfebc9781d3521be57661917f12c644a41bb50297b349baa3a6191de3f110662e4d5c1d6ac5fce9d956c9286e1ea68096a94f8e645fcd0460317eaff5bbba5a20626cfb043a018b3902864dfa7c148e28bc8c8afbd1106a5596b017abb852ceef5407f598e91dbed084930e86dee419354480283648eed921f31f876fe3c44127422d1e98edbfb2841a96a046d890f0e197c1052178879b3b09cfa5465551c4b22041b10609393cb0d40ef3111da1570a29d975106cda726cd0190d867fe104a88e4c1c48906495581be07e9c987b05d8a061825e9a85cb19adb10802b17c82bed01305be903b7201751af80cc810f87095a7c82c41bd803ced062bd846aa14c8172d218a569a00c30432fe3c9d75def48a4d3dd1d795de78ca6404d0d2099687771d1415fa7d24d6cd18b10b46c6983438612fefbbf4afb76b3002c2106292c3c972e0111701fd0a503fc3b4ed8ca0cd2150e8d43b4a5c44f0821053d216b214b13861c13841a2de02546fe26384d0b0e21b3bf5135a84e61adf9650913e4ba096f9fbf13a28801fa813851cd0a76522a7dd1433bc4c05ec06c84eeadb809c8ee0db0bf54a9345fa65ba72795841dcff269d4735f480bb0ce8c4a1ffc0fa25b5f60a46a68b5de23b0fc9aae2f13a5bee72847147526f753cd14d1dd9ffa2ac7dbaac16cddb42043e2ba2cea9945f92302e6b6b753d9ba33673e9e41c01629de36dec81bca92cdfa48f7e471a8d413c1565f0d7faf4d0324037a498f88649e2677cde669d6ec875410ac0fb5e5028cc05ab76cc913cd252c5db2dec660f459d7d59cb84923d62a9d1b702f777417e143827d389310e16004e750ada9831db3d9d63f94f35e840830ea961f97078065d72b2304fb01649b50f4dd2a31ee84b04b2dca86ec32e755c4ef5523e7f6c64b5c2e1a723ddf76860c763fd157326e835518056042adfb9b1d626417e397cb0c8f848e86325c08ee7d00e66904a0cf0df87d804be5538a2efb230c8e2abed4940ea017e89e14e7bc234403c49782613309e1fd51d4504d01bf801249f6b07c0991e55643b8d403af91aec786306f1b0ac8007be8012ceca03b57ecb03bdafe6e852084a1091158b8fbe1a7d064c3935d01b97ac0a7478193edc1ef31b52d8e202b91eb1ef8ec1040d83e15c0a941ad13529bb08c2e00f8a1304610e10996bf80fda0ae834064c680b0ee25a0c80a0b552660228c561ac1d98a807bc06509eb58010c84572886f1d58132d02320410354c8252ed760d60869718e7b6c60a91ac1fa2ca11b02700d58ce1293336065d5e49eb0d5a3c38750e282754430a19be6707bc1b6f9aa5ae641ca2bfa7721b636a00949a19a3dbc250fd43f023eb2a8ad60f35f0084555550f6ebc0e02a7e66ec5b476e95a96b1b4978e8d29c7fd61b64c7f5d47c7c006fde8713f12c2d58f54ed4790170788c35cc5bdc59106d3740ff68d89a9711d4e9294d74e2d6a87333f6f03b7300d0dafec7c38227327e6758dac6ea1d714ac60444cd3c5702c015ad1860f80e05c15a4cf58f33f12fc1012301619ca3536e4b1114a5a4d5d36fde1de7d1367c76b7d4da39db0264c42b0f2c3f402e61faa53e6c72ae6ea39fb336fa3cc1ad6f2669f2678a43bfa990c1af4c2d7ed7e8f0cf1a1b7db2e0d6379335f1d3caa1df5348f02d5bb0a9b2da4e0ce3d35c050f5c06c04a4fc0bef4fd353a09c6d17df4d3c4b64d6d58650ee4e00ea46e0fa4fe0fa46e1068be341447d275a725d765fc912aab989b3da22e02d850cccb8f6b5c74d9a59ead835a8bc11ef4f45f01d98f4168ce6597549241150a5a6d17fd682624730e28710616720e10b90e90b8da7a06f95dfeda24eceb9f6dee152dfc545b0cdb2d51b407d7a9bfc66f07741ac341e99a94cc2822b385f168514802418dcc7443effc867dfa6f99b39421de9c1862776ea459d3b09c83ffac90f93e110ef71705e5c34290d786760b03ca18be8bfa2c64c209cd72ef065fd52a956d3aaaeec09c9ff23cd1ba29ca9cb6db4f3be2284d62cb7ab9bf5442e6014489087741f41b2150a33f4b9226fbd87801ea70a5184e48adabc67a87b0562ec83aada5ca2da73087469fa64c98c97697f292ac9c2214025a24fd89ed4a7ea64a1dcc3d899a50f71e91fb2c6e7b9a03a1007b166a880ef87494f0529a7d5c272bf229ee105ebca2514e92ff07525804511870e97248d70280aa0ea0160dc1b9408fc9415d0a04a61a9461912e4e36c246c2e01c8c570b6d16abf2000ee58243db441a15c4e8ea86b2103565d1a1cb215d1b002a1a81058570ae50121816de72e0838cf981ceaa2b9a9cfbe35fb36101e9440f26559f86425610c1c91aa65326bbcb2c811e944af9199300e2a026466d2929ed37e2f841872cce620aba894d5a19bdfd21be2a05e3ccbd5fc7b4e87c7c26c48515aaa36ead73f63c4d7e899bbf402b99ae6946804afd996190652006e63b542ec8d863848e1f4281fa190d2d6ae8b40fa6d0244db629bf7704627c9d232be274b3316e8a6b90bf25a5c6c83511814361ffa7b086d98b2c4fcf828305ae1b618c5b091a9d46979fae9aeb4538475e301fd982e304f4dd4da3c0728d3d305d8cbce9dcb56d4f8040def93b746c19ebef87dbddaa3236b9e13d5bc9d8ae59cf7df898988aaa7b7fcd1b4a30a46dde7088c928fe53ac592c0a016a94881f46806c4d071d344e30380739665a13042842281887481282107e3e03c972798ed51dc5cae6304cf739cca5fa43206dc80bbe94614a1fbb020db68dd8645bdb5b6e29659252640bfa01f501cc01ff9ffb1f6071a786ca58bc9c73ce58390ba8bbd3e2b4d61a4aeb002eaab3eef63ef7164710dc8100c6cd6b9b6a8720c7913fcafb8783658e57043a3e840fd930ab7dee75bfb4f43a3ef739fea29eb5f2de7befbd2f93d1accacfbdc58faffe6ff2546c58efbfbdb529e49b88d6c064a3bfef6c6f2e83da10ad347b07f7b6b9b1b5b1b1b15dd9d6588da368abeaa24d4d6c035d5b1aa0bdfbff826a36ce7368a8c98686d6bb8d8a14129a11b89d3dc43dcf36653b6333632b63236393b28d81b2db21f821087fc5e36a361fb6f56c626c616c606c5f1c84cf0b713fe3f5dd9dd90b343dbd08ef01a7a6c0baa3c09c284e50296abbccc8d9b1c4298d121b3b5b6cda54f90265060e85abe4e06e2b292fbe526def369cda4d54e0f640759677697be8d13bf2440913a61a6926fc3e00515ae324480dd9193bbc5ddae965112e5790a1e970ca1916eb08cd6d8a31a94166aa4719ad1219f8d498f3e3c4538fe8d9642231ccbd7279f7e78af0004e8c3d4b448cd083e352e141d2d26da5b8b25421158f17f17e47564d8743d5e18021ef37a68d22c58d8a6bea89166447b7e2e556a2145c538668b4eed2d273719a96d5bab7fcff247cf1bdfdf60eb749ebc25ee2d01e6261b769f7210d40724fb813e126bc74e62d974b0f2325d9daddd1c5c9595d33f7c683e5876118ee5de690afc081447a83fbf74124c024f1d93d4e7cb1fe17b755c271d7be7a6c8489650d4d259188f390a876c463fb96f6313fec9a6b5eff3a7387bd6b4c1d3970dcc885a269437cc160a2598346df7bef18086e20a124a020194132d9cc9461c6183040082764c2309bcc17a60b93c95c325b183860b230956ca2799a4646a2b9c25491c244619e60d0a0c16def1fd9cadce8746689a428098c4c224c5956562b7a4a68de67652524c3e7f365f5f0871ec7d28343f3f9d088a9f2f97c55621dab57350563aa72caaabae2f3f9b258981f845c104c5958bd18380bab2724c9e76be33349542dad304798224c24338409c2fc60c7c4fdf1d32549a7dbf2f5112182cf1e3d5a79f0dcb19355a747076b8e9c383a9deec89f0decd07d92c0c80c71365c39d42d7f37f51c4d57ba5cf7f226bc094739fab8dfd56ca9ab771aadbcdd6ed55ea76a2ffeac37c8c31917c9d7cb60640b2e72e1af2f392c6804eab11819eb40a36d0a836032b2b209655549685685339124076cf1f343918b213fcff3bfe9974e7e5e3f2ed7ad18cbaa6d43dbe0d664a0745068bf9c4037a7dbc5fea66f8cb929b11e0a051dddbd4110e46229eecd410eeeaa33a7c2afe49c7965461ecfe39671cba865d4c2b7e49107d4eb48ff12101dba1b7709db0f828a725530acfb82c6e16c0d87e3b85a8dea9e160aeb16e17befbd17772f819bcb3d0f0b638c31c642bcdccdfd07587370ffceb369a987976c2f188caf175c6b8f1a85a6b7de3f334e7ae7355be7df785fc4baae7a8375570d563dc14090c79e9c2eb55ea3ed85a177de3ffdcbbf206a30c618638c31c618a3288aa2288aa2288aa2288aa2288aa2288aa2288aa2288aa2288a725c2591eed69bc72e778eefdee08b2f06abbc9cf75e1c030ad2f8bac43e8e1526be64a5ad207b8db372267b89b097859718fe80fe86d6751610928bfeed829ab99d2ad6bdaf8223ddbbe67fcec8e980e06ffaf3b5a9ef8b3d2fe113639d63bdece7196e45510305e5899326a810264b72ce5949d65ae7016f6a5a3e7c24f921c198c79127234588ec8608090204632f3f7c38e97af8f08171ce18631fb71db6a4096eb7d5355eb5b578121899b6cb2f2f95ecfae79694b8bd386b2a71286d9f8448ceeeadf7924761966912b42e08178335680391608c93bc8764388ea2087bc148b1f6e7f512c51106ebe2388e6248ce6c701c5106f98e83bb263d52831823baab627c2445fbac5fe732d7563a1767fd563a7f3ae6ae621d0489f896cdafe4a21ca7c26b03db596f9cb6ca9273565737ebc73aa79fe26bad915a6badb5d65a6badd6de8bf17fce5a6f1b1bb40172dcec0abf3bffeff39190b80d6ec3951f4512d2f9488f740312a4689cff330637b676bb30e784a13927e40082b98a65a1ee79f16eebad1f4b679d7937973f3feff1e36b71f8e25b77d694b3f786d45e2b9a59186330ac0dcafa674f908db4b9b197dcdbfe34e5f46c7b1763ae5bf698eb16d582a4f4203204445c8b9543fd8a08f6e71526d2e5ecf7fe3933ce9f18e3a11db437e164fdbb5e4a808a8aaa92737d82dae9747c488f0b566fc7c55fd2feeddf6eb4db172072fb12c4833fe3185646e0f36a2ffedf679087da2586a1122806182e12adc5bdf786f289596118865b872fd84b1cc5abcf5a07f2a8616232d1549b85c0c7d40675ceb5cdebb658098c4c2c54b6562d15dc19ac07b6b0ec6c1f44ce58df8b6b650126e3c740e138e679e5c9771cc5909ca9c81adc15874b5a00e54354140d7fc6f9a9e0a4d1f9a5d2c4fa539aaa035bb9345259eaa584a4699aa6699aa6699aa6699aa6699aa6699aa6699aa6699aa6699af2d994ac0f6ce947f18403672cfdc5a7afd6883876d82be49563094110e4e0ee52a314ece54694e2f67398b92a43466acc2fcde2eb8921328473720a2305a6d6035b5f785eba70d9a2250b962bb582b152258aca1427275d6b757ade5b99d5e638ac857c57f04302233308081e6690ab59685e915746de1b04449231b29323699b7ee451685e8522493af98c91a8d44cb94c15005000c368004051144993188651541160bc7714210603178d05118a0586c3237138141a8342e1305000120082603030240683015006908238adb6035d9222eac7a4b1a18e48970f80196e01caf699e03386cc1ef4a77510b67ab18196e80606d7dd15cfbe5212adc49aa37509474fefb40b80b3aa366955658fe9bbf40f5e59e0722aabd8c6396b7a95081d048bca46b796e7117dc6682bd5f3c94e8b49dff4552301395a54df42fe1855dc2599219e0cd47b06797ca401c29aa89e8af2621e3010214f836859d0c8b50aaf5a0c2b1fcc2876231b9ccce465f7b01f454761e298c867ba4168b93c52b635e041816414a6cf017ba83acb7251224b3420b0d44e0fd14d11feae118f992c1504045c6bacdc95a0acce56a4d8c372147cf5347bca05a2427fbac1ca674fb72f75a36d696dcac083ef1aeed2b6182fbac66f17c51d7de245b6da29f2564b8f2ff4db994817a24006240c062a44b2ae50d27eba8a633dc55d6808915320e6cd8dc0a3e7ff7dfb413788673b5c58f7b1a92fc6861637a5f06c279cb073330ced8f3f7b68b8ff4f9d5b586ba559a7cc674c12b960f780c079f2d131a28ef9fcbb6b6782b76b47745d205326341bf1362419aa21dbb14efa8f449da3edb48fc54d8a378b1098b7851aa62261db0efba771758b1276b2156b9169afa338925be1509eaf76bc04cead722de70a457420eb1490260fc1ed2c4958ca0b32703b5b685a16ed4e2032b4eec8b20ffcdf76e6d5e6f978804ab7d32a268f9327cc0d8a76acb2d89dd13fd78e18d2edd093f9d1ed4ce84b877542b6c97a2042084ff19b3b210249def2cd0a7220a2153494d64865f4e40c057a2ff39ad1ed3c1b15145cc36a1b90b703895b9b3ae6a64d9d3852d65f98aad2be9d286b58e7064d89e4bfa37f3b0a64557442a796bf9da23b543db823a890744188b86341c57ea2074e98c69d4223e1875e8b1b8f4c62768522231720828fa308740c305cc67f60117c423d66eb2d6472357aa8c474818f7fbfe624dd2052064212efd77fc39528249a005e9c47d87f0bf690cc897793cc9c3cacbf3174631240134543e873067bd32af13193b0fd91075081931bb8db9da311313d8bc920b36965a00e2c419c6853ed1ea9ab0263ac8b982fbd24871ec05ec18b6b7bace471e3a59ac74ab6400f8c7fe1c1b6b23cdc4d594a2cea4d5baaf96f028b79c46162d6d8a399195d4ebbc1e07a34f390f1d9864db991e8ef0d2af78318474e0fe195aa324b13749d8b18632117f414f929deba7e6428a707fe58d0e3e3811b0b0f3100c624aee1e0113910b9f5eb1b2bd386b896a1025c031f66038b68710c0f395370d8818db67da24740cb2ff8aa789c3d7eea7898215bc759135f89889e192cdefcc97ef2895db6f33beef2f026cf0fddbdc35f2762c154e8ad4ec7317efca2771df50eeacafa559a64b09c82c050d4aa82f52bb46dcaa66c3775d4f5e14dfeb01645d74ef4c74763ed63694910e00a0ab77510bd3b56318cc01c5285cf9b6b1c496693df00a12955fdc835208ff068920527957f7c7d0d1ed9522d11f9ea43d1c6c8db4cb28f4575def8346149cd5991be0fb18326a7b0baa4ee67c12bb8784aa59d2d2fa9b0877400c19c7d019dae80efd1a9fc1d48fa522ad57a57fcf6caf72272f5c55465b8612aef918da1674466f792568324150b7f8a98d4d506b137651e9106fa67437042b543004e6ceab6e94d8f9dd68206fc6e24e273c926cde8486ac5ebec91a43eae00b8102abdc8e25133119455b5b94bce63dafb81d8359b4ea19dedb17c3a9cc8f7170d234e84bff0ca174ca102cbd94937b0564ee16d0eeb992c317d43c2cc6e90e54b7691069e8459f46b89479154476fba396cdccbb9a3e1944ed7608aacede247e537680b091b42df561193d611cb2d46722bc2774923d8bcb38344699ce840dfa938bb44722b957fa1f5e0336109b72be5725d16a15ec3d98dd119817f391344be1b3d5e8f2777aed8b162e7cad29179c3870f9f3edd13cf9c3972e44c296d66ce98310372d8b4313b3567e84b07b8f3696a11c1409068967e88b5da72bbed7e72acc653fb5ffb50c078c1085f7ebd1cfce621a20b59e15b3c8c0011aece1a834dae043a46fd374c91871787059b778c913bbf254e9c182daa7ef3a9ff91bf38fb3c53155507809f3082797be4d1c2cb0425bb760cd0bbc888dfd0e82332a8d543b080a762e98000a8304841e6fd1f43630d2917da44a706036618a8f862286a22c12f9ee88cc8cdf5712a341114ddb6f7dd30a858df563471cf9a6a5a5b5aba18aa7a3b148b64a409df3ce51120b3ebe623221a9e76f39427aa67dd464d9334078bed6432bc81507634095914febac353b18723b059d07c2c3b550e3dc25393576496c300acbb89062e00c40166bd1fb0a62690c80025357e1f6824d724345919d97318f92aee800f652febebcc47223c86a43ca1aaf122a70310d802e9e98a074168f77ce8d1808508559b1fad3eed9e932e4ba81a0c1306f7235d9f659b0f0a554d915d052989b0408839eb6da02b541dea501440522ee21d9cb0548ebaf67df206ae08a7af6724149628eb81fa4db91e27c4034f2899e176b29f5a5aec382c5519666590900ae5745fb0f194407034040e605de8520b48d8ff9be3f6f740a1d65315795042b18942d9a62a2a4c45637614f31128c6d7db6c0e1afebc4ec894b7ac5301322d4d0147fccf679115d7f03772b6837920f42801a31d94022333cd4b820f0e7d0638c145231cf4082243c25c45f8f3784b8f3f8a7803dd3727cd8538e0995b0c99161e78e60dca70da7edadc53361a33025a366669ec4a6e0c3668ca39043d5c58a140cc76915c998baedef65f26cb383511f8df0bcfc704b66d00166598ed3df39ebd675e33afb9ff8f9f3f7efcf8f9f3d7f1cc992347ce9ce9c9e68c1933664cca1c1b366d98013470e244ddcf9ed4c543dd9d530d99dce638a309c0daed2a0584613a2e7a54874e82cc39cb425fa6f9dd48403cd1abf17f8319463a8b72fa8f7a46671de3096f3a125cb7d1d184edfb86bc1e5dde9a4e2a10a1c88ee3736a3b7da19be145b0f88f153e2de01ba81a285eedbd1603040d644cd664c9540c295a028be4e5a903fb18021aa19818b8725a71eb1681cc12c1c002bc8cc37c0454485432dc4d06682db149d2ddc11993157bdd62ea8b273ff3cb08758e6caf5a3f0ab2f8e03909e66936822960813fd4b88dbe689305716e53f7f18b312adad56e932df82c1f984bd03a5d78c6b8e9a7534c79facefe3ad568eebe9d459a40d2b4dbbb59ff57677e586658aa2c9a3c98395dc9a09168e8929ea4b034fd4fa9db2f6bb644a3bad583f865bd1c39a44add814a8da4972a42798b0be99f9cc851c80b67ac84d001961d10420d99f1e8dca25bf3d796153abc54aad0ca52812229e48d288fe1172c4f1e467ba0b2c7c0ccf9ca634d437c82d6eb2163639e227cf5ad8be22d086f522300c3c35bc7d5b76cec29951aef84244c2695fafc31cd67ed887aad16248ac43428311e8dc4ed5f3c829e02d5543299de31b51da5a26d0eb2c2eb616d7918bcf84e72d5039d1ab66330330c54be0f8d9a48f08a577c4674c1fe980a45de42cd74ed7d53d91dffb2bc622b4a53fa9251c440e5f9502c90e2d77bdfc9900ab205da44522bd64e053e2b594a053e7b542a5bd162528e94eab93f26f0311e8e3dd827d510c8b32d3c2d5a8d514a244eb470e8bf3664a504be6472235d28cc4f9a2b4eb233b5c5aaaf52eada23429bac9ee24f8272999db653fd0ad6587154f449e9aefa4070031b6cb8afb4aba0caec0c4e575f557d253e73757173fafd465ff7385bd3d5713ed4768c7c3d4906649ffd82fae3e82a607b534aa31ca1ab9107e488a6c9357880f8c268ba4aa4b74a0f60c5ce68f4bd99c29c6c41dc96ae0602b64c61e600bd42f54ac054516770cc1731eec0949d57182119409a3fa8297481a169158e50d8894f9cf551879f03cd7757bdcdd5fd00a1f2b9125e44ebb357c301e6cfb4f9848e18259c485746f46f3dfb179c0c25baba997397342c3657594aaaf6e62a3eeb02ae16a37f45bfdb733b42edc860ea5a5514a9e1d4e0d6f60e9085a231a5a1a28ead04966ec7641f14737089ea33901ed7f608c1b42ca20310076b813332b7ecf9c10f9c80acd882efa13943943d7c840b2ec115c30239cb4980ae27bea0d78caa3b79ea117e4507a60c2adabee6efee59be2762810a03d8b706307db9fff0496ba694cf6930be5277f788488364617095694706ef4e6ccbdaa98f79300baa4743f1c47228612bc5a79bc0b83d0cbbe73436394c38279b54c209112bbec5359244a1e28719c3b714e66ca82275a690092a7d96facc4ecdc3f7ab30c8cc1b2a6dc684692bda430301b06916ba7bcbe66ea591ff4c7bf43c22ae13a1d46a3d9b2e36e1696738794c3d261e68ff3e79c4e083a571421ed64bba7bf45f01b34125e8e89015f1c50a94183dd8de8e0a82f784f542f8c1804a8c3fd8bc8965014ec721061164ba1de64e203fe4d7969850eed8635f2bbc464ec36e63885decef356c28dcfc37712d36e15783567365c8ef1f22db9e5c2f7739ccd9e3a3714c310e115f5669e14d35bacef729c05a34774b643a428597bd112ef7d26075d162e714b442435a853ccd0addca51e58d479f062ea0eb38841bfb96699dc9a0103250f57726c7d9878e403d9f1964038b015fa3223924c685c982c47191031137db6045cf1d3d5ad598fb64e459733bb7658d6441ea9526bf4b89e961d142e96098a3cec39e02ab6b721e19c3ddb61ef140a5366680506b0715ad04bcf5bd98415d2bed107c2bd02eb9dcb5a52e4398a97d823af841ef76123cd53b5cdb6fccd00a137ca78e987941c70aa180b3c0402f117731c8bcf30214ff12f5d5f3cd844c865a04971761864618bc9ea34af7a12d5357fc5d6aa9e0c602872104fb80dbbb7c1f6ae45a3e43cbcd2e36b105472399f03252f84e14da61a60b6ec0303e606938e82c4e6b1e4a0cc3ca608adc0c75cdc6bde2943bcc4844628447d08ed1207e95721a5dbc2193cd0c0d6a6ce75e21d1fdab5dfa9acfd41340b84fe6c208aa02ce64b69476bc01179e3a357b49494c6dc150040116b7415011afbb6dadf169bbcb15b6db61daa86ca86df9f6d9a61bd4751ccb23408f737c15ae0377c50e1664a846a76a5d915ebc88bde015139b2f4b5c69d82433ad94157a68edc9b0bb7cf0c1a111138b1b78f3ad04037214b79249631ce879762c62add015b69b561a04f666a1158838fab75534334583342bd1c01d55563e57d70739569a05562b62c53ee9754722e8695074c568f606b91081a03573672258810db6b86ffe52e60a30c076862bc53b4c7c956c40ce775749e682cf4159f91f2d08fe125ce5fc1634ae1b4670381b784c5e64f285d62a075835c47bca2a50d575de450d9ca27fc45d8b589500c1eb44c8f7e9495554f711c2cdfde1242ecb550e899e66aa1c179811b22867b57b07070db0e3a8a212813a8f499852c1a4161404bf03a22362f032d890e25810ad3d43320a44cecae069b0c4c2c12ecf931474393e87d48125188a36a48f86e4e970629884d128a284e1090c8e36128cab0b271907393ada2316e5b0094f4478e62817a862038021430fa30a0be2ae4e458164262cc80b3c347164094da571fce32af470a9502c14b11c7253d70faff4985aa3fc56d86922094eed0202aeff8c879361c4a394439d625bd1e4e31cf145fec22515aa88c48038ad33dce75230d75a14a12700003be86f83c1cda0549a0d568448c5f10e5aea670954f516972df0735f8fd527394b7004216d871f0b1a8b757564e6bfd506d9a33df83a153229f3960b4daa9f66223c5d27d91dc5b5a130dd2145d4d6bba6492aea4010fd2ce02f48e483da9332b78f779e48054ca8ea43588e0cddb541ed42e9b7a8cc42ecaea1872fa22e6a50062d0e1a0603024c740b58b84cb5601b1cb69f44e3319ba65edacae1b9af621f0cb44aa709186225f58de33bbddeb3b5250221a7694331cc183554f21419719782d394bf829ff2eb3849ae7813b0a4451c3211a3d4f5965cb904b93d22389462ff93270ae397f6d08e4f1e4f96880d69f2bdc5b661732b7016ce8cb35c883411d6da40bc84580565ad3b9126abf354a3340a8b347d07548c4a59221666a449e4bc4813bc1aad399713db224dbc5ab0e05ee4c7fea7ab9dd16f031d13ae131bb540d7c05bc0ac2c61704cbb75061771c436c1e08641ec0d8d43bade507cf02de295081afe8c0c93f2ec69c59efbc93812dd2a058bfd30f8a793e6faa9a62c056c7b065e8e9fa69da4f6c0572c5beb31b1b25612dcd172b12d97af5c8086034ffc8c327b4727e88443a4126c59b948b106a8bb6ee4ad0b110cc6d1a61c3e215f17b7f507d5a7b7be56e37729509d9106fb8239e052bfca384ad54c386a70d457d4430b78b32ba3f802048c5dad551484b52e7d6130fc0b1cb00d17b43595e5afeb3f61b04b6e81c2650c998237fc8a353f159f08bd6198914e55c104f9eba44330dc6976169b052dd66e4b2d9af332e585f16b533a7413ea237c9e180c08de586819508dbbc11964e977286af8ebd52125e80412eedcd6ded2169c332f620ba75774b157201da270920fd5f04c6bcff2ab8671a18463484d55c96f761a85e98e084fecd7100cf8dfe8cc3678669ff584d5248335461633c6001ce4cf2065d60a745d3a826d9d45b626772ac8b6e029df87adb7065a5ae28b7ce4db292272ffc29cf5de8c04a44f13308c80c424d90014d75a18d94015d61eba0cba99141310918832478ec0cba048063d2659ac676280923cbfc5fd1e4af663603aa4f9a88b705b205826614a9a538336470521411415d9bdecd10365b7b53d053f07111b71124512b68f0fb442f4bdd76acdd34921fad080be34595aed172a611b73953555bedea9c5e541b86700fb9dc91065453b275125ed253d64db644868ca791f902d9aabc8d51286fc1c3d295281b9782a4ec23453464748199642432aeac2e8fb8a549e22e8ff2b4b45429b213850020a3be41fe6bf0277346912e43578eb6d06198ace9025433a15aa207aebf526ba19d17669347b92862bfb77012b719f13454f88ba6db98b7ea1f0ce4f9b7ba3fb3b6eeee75d98f05374e12e06f1b4bc69d236a6d4ea963ed30a2e75903b02d21184e81c102e3658ee9c767733b50e72b02ae84d92b01133442b6e76d662548b4866ea7c1831750b1d94c048fa0a158dc161c2478d52b7e8314b50a37ca089e50ab1b106e40898f0b1a625c3d459065743cf7e47780e7f463a99081d88f595c1e353c13fac8f96cf050ae138a3f700736e25487794b7cc03a01ec6e29e772b754be051a532d39e34b215c2cbca32b1e71996b0dd9cdec59f5d182579608a1b8f3b40a48c027964cd8904175fcc4f6a06b5be850fdec8e2d68bc04f4947425fb9d92c2c275fc69e061f989716e863d4d11fb4006d7ee467ed352beda3f108abf6b9c74839a0620d85438e467781dcb8aa94a6068c048747eac7d9755875d5f720a58f5ce06df1ad43769208109b4f145bc1f91b6d1e7dbcddd31c34f28c50ffad7ba319cad303f483622f6b2bca03114033c63e2cdbfebc225e13178b80ce1dcec5f78816d35f199090905652099696531367ad8911a4de5ddd23cb4b073ef74d7b03a4d29dc02029c12e1fda7006643343036fbd33a214f1b5af6779798b72210270b3deec29f2eb0245f82de3d745ac782a7c947f03c0d1c1af2bd2f8120ebcafcb755bdcd6f5371d9cc46bb0cbb7582f05c4468e08326d91d76e562363a586fd22a553ca4c765ea7da0d724bdfd29a1df3187fd90a17affdbb911b0a6ba61e8d870a56886d9449723eb401c0d8dcf8043fbde5c070c5cc9abcfcc49db5a6d7f44d080951e1759fec0701e22912de66940061e4e5edf42d677f1ace0f204aab329c369412f3d8008056bf3026ea5bf846d049410bc38127ae01339e4a1a46a32e14b649cdee53571e1f1f1c6d9602231a61769a03889d96c281345abc4fc49b1956fae84aeda90a82f2225579fb18644e1e4f6e9441baadfd2f65f68d45c4c5b26ce4a5cfc67d10e12a604f2b22d1548ae9c93f2f3d34ee312cf7f2f6e679b9b699f9459607420fd0282b9d3dd05f65971886e095be48afec174560be83967bc849e9fd704712dd52fdda52a82cff6a45c46e2108192ee9773a31d8512d5c4e85b0a8582bd8e1889d2e2d79ae40cb53885ce933aa605aff44119dae1fadd4186665d99c14c03579c4081e15d261333fbf17eb3f86a8cb4ea603a4d6a1825950372f913e5432d2091dade551a7dc9f069173775003de30e1f397806cc40cf093db1817b925dd4a53f041e2d1c89855de5eb92a21e1b36d5459c0f3b7f904dc4693b56c9da84a50853bb13231fc81d241ce1b9929ce5f5ee3fd2e0d2eb85baea6e56c168872b5d04a003839f9f4c1708ef7f9603851c96699531ac6e50882c4692df170dce5109395fd4b673259dc46be96a0a9ad950be622544cfe3957240d4b0e188b4cb4933f1b04667ded8952523894a2bcc782374c9a40c44534baafd3dfec0562ad572eb957a398a52988bed5f93616ee5f503c9b06eca5b81ddac39c18ee36dd7de76c17a0c63a0dc18eb86bb2a6bf141017eb4cea32ee3c36aff72d028057fd88adbc0a62626c8bc9039b1fd36704c0ee6becb085de2db3148a72f05922db65361ff21b9a0eb14daa6f9fbef83e99bd22825b96fc71cabfe36266fbcf4fb74c9b99c94ae18d3a6c7cc764658a3629779a86390ad627581fde656bb06b014e24e5d1462b3cb0c1107499f7ede8515f0fd59383089308c0e8dbd4122837583b7502ea6c54b4a0b58336fcd8ea9c017484afe190072e4f332deb1bd3b392e4d43ef3514a2edecb7184535c26b4ed3d88ac8cf966dc2c1e95083ac43889c2f82631b8948448aa8ecea9af2050e52d4cdf20fe83e62da94a1a90a732a8963075e124a342df4b049d5e2fb9e98a160a6b56f2518bef3a87e76b567124df4e03511bd173dc3e4d1887d97b22dd7a3d66145d552fe9268e57d8a7ecf04a806121eaa9defd706addb80236f853a49b9626d95306f498003a5db0144880aa4d07c95bdffc080e74002984450eb532b10f7ac6fb6e978e3eaa67e75a9a2e3770e4f5ced1d5e345d0c3fade86dad349c7c4629b58171a63d74468a9912df7965b2629e5de012b011f014d0133bc51e154164afdbf0de739cdceef9f18b5e1741be72f5bac759bcb6f7fe7569bb82dcfbdcdbdcd4d95defcda3cf9c969e729fc739719c771cc5a67bde69cc7bc66fc39e7fff2f91d7567db7c71cee3388ee3efbdf1dee388311e47ac731e37f149da127dcb2225de3f76e652e653d138b5a9e7c4eb63ad1f778cf12eff0ecfbae71c66e74ca9bbd662efdb3333c329495bd8a6959b9b5fa2c83b538238895283871a30c325341a0d092e5296a59be1982651bae460b39da84a29ce390e2a1a4e54339c7ae8f93bedbdb529e5e8b1b2c8113261cc524717c33947f9cd3d2e26b1112e92dcc395cbe5e6888911c918df4b66fdbd175fb2ca2dc7a6a2933d5a4430375b762408120696478d1a31c45e18153b48d8e890e2c2d4d13486854959191d4870e06c878c8c24627d24263149924ffe7d4ce29cf3ffe32ff7dea669961c3ffa68d3d5b3d9bff6614eb3e934bda1369bd6b4276b36b2510325254c94ff5f255f6b3d79334b44043432ba18ef5455a8f77d7126ff9fe999982e8997d0d274e120e317e76eee527f9ea1985f8ee67cd1db51fc66ed428dd73289e9a4e7799a979f3ce367c14f53fb786492e4e3eba6f24577c6a8ee4d4675658feae2a4774a7eacf18ed72510537f3ba5c91dd572f2625961034c4bd466b5bc2c357f6e9a8f6694a33cef6f72fb0c2b999198660352bb59496d57b65d75c3250f1c4e2a4d82ff7779bb8571b14296da66ab924e71125eddbd874df4f885eeba8a3193eb24543222c063de393852c638d1f243861a8e811cec480cf840a01684bcf345fa2140fe775dc8e376b3d9360e79c624368b9dc22fa0bb9565b358adbec5721fcb202afda221e9f7da9da639b59001838620da75451b1ee802700ee8810e1e20b42dd383074c4c0e1a3470e080c1d2125adbed3a1e519441e6759adef17c0b7e2614f22405490b7e50a0deda79bbd568fc2965249d82f68310881022086c4015f422f0a4242420f068c40f8912484840130180c0a30409d60f127f27720950013f3f3dc8445be9a2a3bcaebf0e91bf200e22d4555088d5af8a67c4332aa362c40ec1d2e097ee4491622c55a041412bc9b206a0a0a00a142812eaa050f38a04060c0d05b182c34b74e0f6a5ae742c4eb15fc3566b8845cc22795fa40f4450d7a466585aa074c486a9b50070c91b503298dc8aa66e3f0160f17bc9f6db7cc96d02df16e3da25f3909686fbe47c70371f1f9b4fea53fbdc6331da6717bde0a88f8f97aeaeaeaeaeaeae2a1ad92b7b65afec4594bdd48c475f5cbb64bfa210d4205f5f87847acf3da95eea962aa6168784fa4c8284ff5a5a23629734570e46ee291715e45bcf1957bd5431754b2d2aa942a194c591a99d01baf6aec6e80905755f4daab603578c2314e49bedb6bc14c134ff083d626d474daae663ed2ad7196706d70657c48d356087b5271e1a015d69345d573b108d765e9d43938eba9a758056b3ec9471ba38879876cea733c609754a9dc293c609e3b43a6d9c5567d4039dcf24f3e2ed9ac6462f325dd7bd5dd7f5763a0d61a661690d059482d149802be5f11ec63f7dd4f36c7a995ba69859ac30ee2af0c0f0be26a064cfdf511e50afefb0aecac8808e5829bb2c55cc001bcbd657f1b7b057da31d60b8bc68acb8253ef970e8baad26ea15b082a6ada322ac8719ab4729e9cf36bdefa23f6d61fd0fab3fa0d09fa19f955a199adac14bdb250f2ca3e61af5696c562893fec568e536cc7c07286a0a813c657b3241d9377100c0a076469184429c62067902c1f13219260411292c5911c064110c3210c841045902184106388318491333563d301a5b562be746239c8165b75f57e1635c1486449d5cd473d49132c6435743d036d67699502f297c3ff6eedc6919d2415229b02c171401b0d7567f0e7b990435bbc702543a7823a91cd84c2a76383f57ef81d15747663ae54f269a7e08bc0046f0b1bdd8d5d5078230fa4dde6f3d0f0441e652775f27f74a76ed23a98c326073e1c2d4779bb25b5db5c27792a395087380f0502f852dfb16983e4cb6d9e4942d4918985d4fcc62a2982a02a5323845259e82b9727f75b05567771744e12301af723c5e128e7cfc5737ca1729d173f47e52acbe56d3e132ae7ad50e6f3896be936ca98ab9406ec9bc069ebf6e6361fce0a007dd61b852511803247ed01abc9c9ef2f5cb0a48a8744ff8067a5962e11e8b8e1490e4fb469ece11277068663794a8e4910c1572612cad67d6e36b2e43fa61fbdbd2fe0e416539439baee70458e9a46583656d318fbec9485cc3df19a6762d63906e02bf16b3fb2aaa872079c67d4c68563e365eed2ee6f66d5cf52e4b4a3406c00c57a3f7847b8f20551cd273ea244543b8b756d7d05e56136ece3f8a1fdc3c15c9a1b99cea90c8a98a1723fd6d65265fb8c525b7230d7e4d1c962ba0dba946fe304b3489f4aea6c601a3250c4fa47800ba053a4d5d8e9f73c1329b4012da4ab393bdeb172c8005f0a7e13aa0c1c1873069eb90249f6a967c2972e7f41e1503fbaa17e39c2a787adc9490712e21baaf2eaab8889a847053cf66f0a0cf2649b82e3db855bb00bc24191dbbb02cc7eb6387c9452851b2f9a47661f2cf2454225c9b8a404f4dec52cfa6e7a3be396d31174f046502619d643fe99b790131064310e556820fe50828f72bbc32e98991228b3ca428c2b74a6f1e041f651f1a49841d5af5fc1a9c04759a089bb1ead1488f3d1e1ddd53946e5c49d6a1a43d14c1641e88303990ec723cd01659fee1cc54d4ac1678af600d7f4d44138ed0c34912bbee15047bde11005eba1b1c0d9e25d8642fb9b74a7f91b0d41152d49110517175e14a0d774a3714b53649594591096e81eee0f2f1bf73ab3de54552aba5d473baa897052db4fe45a0a54b19db4c6f372b509a5c1a800aed5d46db2530678d6d52a51c03ed0793fa77fe5fec9e7fdb97d3bd74f3ee767b2eff7438356caeaa26136404e2678450e3e8a10340bdeb0f9c495a9bb73df6d2f8b0f993a22682415189718514c5d98ccc22f379678b5b6e9652554cf6ec31570cde143448e5fed7d839b8c7d0648dfe5ffc4eff24355fc1ad17d134e4247670b11b08e1ef09c04cff61de09a2fa9e2bb4062c5804e4d9bc1119b243d488c08ffffb21f56a2bf9b4361f7ea40ca5f2e636433e7718fd9fbd7ed2b4d8aa667398f4db01b175b0a675c60195c267981758b2a1910836fa55437d28cd6c451b43d3939bde310b5a3e3a0f625fb1d2e366b2f7fa31198e0048452b362009aa1daaf5511e2d1b2c61b10614b2b98b656e7597472491c388c1acd969cb245a39580b060a29d362e0b229ad78dde9c93b7e634d6861a36b8f9831b6881955f3d87577aabdb7004fe173882f18e6cbab541e05df57a39d7b2a69beddb63156974e7099ff77248c9f1de0c902e5fc29de193cb1b5bc0790f1d8ba74a6448ddf6376c034e0951232057c1600bd70ff88f56c63dea624c5133da63c05b632ce9f537fcb19dc1fb4560e8627fcbe1599b229fa4efc8631e9ca35a593610207e148e6d3cad0c944a945f430a236aa08a1c9d47a3248d62cc7f9cdbf7647023ece1f656276f6fd28ca0a037c24dc8ca207f0fce669012497532c0f4f384543725b1e287a13c227bd755853f16da091b8db113f35c0ac5b27d34665d55fe3b773a0cf1793a313bf7df647aee193406767adebc14413938dd4d0d5ce15cc0837c5cbe027efbfc5454691c7479ea2cdcd695869957f0bbf277110ddf55a32c53545760799de9f89a202c26801aa41a1c018e1e48043126c854a36b700470f4204118260c52c34897ca032dc1d10304c13221d00a2a6dd60f68991884bb898154d809b116674c102930a28692b59a943181881a43584b84715328154dcc66eee098818ee33db3c592fc52b82e1045ac77d6f482584c78d7c41d9f8f591671fb6620692ca40bd885112c88a66ed6ebbc963f4ea2616e9d77b1d9f9337b460fbf126d4bd4cf7fed4e5f23746da799fc77a46d2d5c5cb75bb3d2b4902d15796dd3f31e43ccb2f7b243574b482eec94a09529e723228427ec3b9fdbf69d971bd8cf0210fb4e72f5df4ed67289103b0b476e113c59fe3b8db36fdfa9ffee7d279ffb5aa7ecb266b8ef5456dfe6a9351cc88ccdb5a1eebe5392510897442792e8b4b95c9433920b3c23cefc468cd68db13d2ede5f6149e377fc7be132aa23a8982effc2b5b2c7f95cc0c7ec3a1d1fde04b0d313c441b85e073a91f098fd7a40dcb8b756faa026cf1ad200a2d6374237e353e97c98c8d9f2ee5b90a279050d93df0bc42b68e3b90c82b26314748a727393baf7dde7609cc54ccd743d2fb33f2992e33298ed0212ae1fee1b21ecf0f2f794bd3b39af1b67a434c2c38099d1dbdc0ccabf9c8a67da002b50915a2ab2366a410a5cddd08cb3858df752d2e0623cda8110ff6d22c2433ce0e7bbe5db0bcd06a5c2138b6a1e5fb01e9f718a36699b99b67adf33e1c726a68ba68007f81aeceb58201bd2dc3d8fcb7cdca04da66445d5c46ef5c073f8703ea1fda1f39aac02726a12492f201c72085b783c523d008346c9e6b7de9d400be0e2582e63ad2600971ba63b2ac6be3527d65466e7859b1fb4539c388565f2f6071c2b8acd2a5cd611d16935d1a2db8c295c40d51f358910d58e44c8d2d25f5ea801885c1eb0382bafffb87e8bdc0fa6e43568bc2bd34b04fdfb4996258e70154a454150e5ccadb52dd49e47a5220c7db64afdbc20a41e7b8b17953c7af4bdce494bf0c6f2c7434f75a4fe227fd6ff6658d301ac5d3a68aed47d7446196fef996d37d8bcc47854f4a81f52628489ed87b3701c1e63713e08ef395fc7b69fe5c76bfffdd5b52faf9c9ef1b5a718337f38ccf156d37ac193e63554647597d7bd4e1c10cf8053e7099e82de21373fa4857aea2c5b32491d0c9058bfa71b844a89b934a109fcac1a121a63492cc718538e6b884bb422ea50b7c7eb3a8ce6cb474dc5409fd096c8afe03bb7c9539b2946abe852220f5512f5b396995ec3327650084fa5842267019a792f91e80b8dc44c73118bc04ee0dfd39bf9b217393f5daa4ab28d5b421f834ab18a6a710ade92e4680d13a885c70c61884d6d4b4619793c15a1b7c4226053c44191251669cc5334c450345eb86c3d63f0718b147122b528de25c3601991d3d4b757bb37205bdb830b106b4974c87160177959d5e36241ac29f68f071b3e81ecf3656fb365ef33796b6e7560a54d58b0829fd830285aa47d61cf8c28dc118fdf16ed8405c2b01288ff93261817535d8f4efba649d160b1395aa614364c59ae0479b58bcaf6b8b89f6c890f3fa31428683ca5fac6ab9d3a13cb53675fb3ca146028ec4860ad0602754cf66f8151f13c3e772012e6472c647f7070b205c284492594670e74a50a8d78215a510f50ec8c92048a1d22f620acc807d88dce1095578d67d18773541e1838d64fc6d859a14799b133e76b48a870113b21ba83d0fa6ac9673d33c7cee4818e9d6c5f911e9de76431ad5cc0ca33d005c72697c0c0216d5b6d89dcc5e2d0c526e6fdd114dae0e7d97eabf0b110777c54d067cb8ebfe160979b9aa6fd6b2144b40729c12ae9a00bcc598b48fc4e067b20a10dac50729e06ff35b48831ce91fbe1d01bfe3399b1fc34d4670ab7bbb21129d96b064ee8b3dc2b9fec0fff08014f4d76eb845e6ba8b240892a6b75027aa62bc40e75ae112400cbb95e73cd8f8f320168d0e946b0a2ed817cf78a81f24f38b344d1bc668aa0f9a7ca75f419cb0cf88a5d12289a8cf4a989b1e9e0674f9dfadc5d61adb34597332542e4f1a8d4dc899624c6762697d7313c4a00e8b6d8176d093965baa95aa72098e603a5176c180ca45f3b0c135cb084859ed57a1a6c23402331ac2a2414fd0622215050588af0a76ed38a868a4f41a87b6a010e60e4a13d456397960750c06715806a3d6f239a5c60da110a395ccb4de18e11bd804ed4c6708d0f9186a48e163a1ae577259f355eaffacee2ddea0492a0ad730375f7472779b75c112801a2dd1fcfd7152c0459df56d8708630a9c14183cfe28bb2a4f56521610f158ce2d6506889abd2e66b1e4088f57dce7dffdb1794ddc65d361688a158c0d1e92294925ece96842327cbf5ddf9a1bb4c792cf12c4da81d10ea046e28851a21195343a8be19495b407e1a228ebc402efe7185682422b712555147dde99b7edebbea13284d7bd01ad41e669ad4f893dd91feac13663b13ccae7c281236555b3ac000f57a2dd304c62f1b417cbf9e0895fd2ca1241b27575312b40c48b4fa8bca89c368a8dc1bf1617c895af5a5b9cb9e74121792669d33aa57900d9a64555038330ffaf68a7f980bc9d5f4e3efab09124078f6ba657124e02c58c9c9c7fbb332cee76e17ccfd706a486c59aa1930cb2f7832d8b34c7c2a2e7c2853f8532f9dba0b4574958d5f8ae2534fcb4acbeb00ecbf286ffec5f235cfdb546dfc29096c19ae2a0ffc0448ba58e2fad31ae3ed6159ee19af29a93b7579e03ed2c1cb128fa896a2f7a3d591ebe5858ca253525035745771def67aa3df1c63d5cd8a6bdb90a0e6e6c8c8451812dd2f0727430998cdd1f7f177ec7da31da37def7cbb7779e7336278defe3bd3976615b7c151a1d33e2982e697903d8b1fccbd7c28f2d6b465ed10126c0ab5118d234af4e1ba2b82531feaccbe961a4467bb126d44a7c6c0351f378e4da3a4e973ba748028d5b0252a389d1aa51a4b24f1d5f89c1f1abc3e7300a4d4e4dd84de0537598ab821319028755ed43104146e016abb6c283d40accd010b496d56265858aadd71b11d5904c79474db6c2258d3811d78ac177dc0970060de868241c7b714b1fff055f629a48984a42432c994524a2905a20283025902bfdbd546ecfa465b7f0d94ccdfe6ff89f7ffb61bc6177d228e32b8b53d482475f21425035a9a43648e1685a9a3e37dbc050bf6637e070c182a78a0210b4db1885ae3df3b1f6fd7fb988ddeefad83fc7f13ef60c63c1d46e359470d233e99ac4cd2b39b84a644cd202173167131ac392420e385818391a7696a7742ce5374977aad352fd8836027ff271415cf4d3830162f66586b2d18d700c543fadd470598798cefb65fefcc939edf303f6091e6a0f83063c8cb9812163c8888a954474d5c9d9117978ae061cb3226c6cb96fa878ca0438dd6085243e742de09ea478b6d77d2354e8f7d53ff446317b672cb20f59083e29d50b453d5a34dadd96cf250c71b20007885ee90ff3fd0d252ccc3105e5a69bd9ffaacedd61c35ab6464c6dd0eedc9af2f5ed79ad2f78fe262c285e442e3aa02a7e479a9be14d35a9f88cef33ccf25fa43d3fb25c6db6594cab8b36b3a721ee4e80480e3c7ea07ac493a02007c09678201baf56dc90284c1ff85c1efdb585d6b609c05ee01f689c34040475d844b0dcd1223d0a316e481e27131e142e34272552910a6c05a847c15e47105c00aee7215f8f0a3ee4398242a253af4e9ee3d057e62d0a7c0fcd15ef585c02a1eda7300a2716b207ab5c55e557de02e0a48715505b4c18d27508810cbab85a068ec0c800d1870398000a147e52f32458040de2eb8c00c0d2e205b201666ac33a2288562b1ca715868381c0e9543b66172d836243304331ca2399629b2e115d92c4021185a19a20da50cd3866bc333e3f0ac6e7876042e893fadab78ea28089343b12199979797d08d30299c332c327432141b92797931a8e0ebfdbe54baec42ac5354c763efeb417a285da68ca8a6ba00cfa401d9be8ebe9e0860d64f0ae8fb8ab2d503029352df07e40354127750680032f0fe851fa1aced4b8898940f6ac703f2f972c2155a7530260a971e4ba969b56c3d1825704492d4adb7be376fbd65339e70651a138c59928b4eb4bcb0c1513b44a98bdb8b302e59acbcf9f207530f6390db8fbd5f356186b0b559618b73088311316686a829af286d1cff4463d7bf685aeffdf3cf42bd46862e92902396e4acfc08e3e909a4b34f39feb6f64fbdf80668bb18e7febb558ac77aab2f1e8b84be13ffbbca2a7e8be5d68aada45ac0adffae8c65397fad23e05aff3df0c52cac8a98479826cdcdb1794285899b2480b4b56ff6de7befb5d672ca356b8c89e90f67ede6fe7f84546d8d60f99f337542f614b942b686434a9b4a7dc23c4293a4e36b31fa9e55fc6856eebffa60055c263b8fd810c942e452668793216e8628b24ba11d046c6bb808192b04a9ae5e6a8b54b604ed501438436cbd8d7e54add9b9f2860e0a322a82f4d0f14284cbaf3f67fb73cd15e78c2b1622859065ca323562ab8ccac804e23326e512211c4502e978b2a88c8c15495bfac409e2e7119c2c5f267dfb3feeb8733ecb32697cf268995407cdb3c8d18e499826ad79a9b556ee13a1ffde7fb94f7fbdc15a6bad34b6de77efbbefb59a5fe565ca82a8c14cd39ab9e7dc71f662b1bcc12f13426e626b33aa43ae5ab8554462640851934483e4c0789465d21ba3b83566d8ff11233c36a2c4cf816bacbff4c9f5e59959a57d73f73fe69d31c6381febffb8c517f1e4a790138d5da692fdf7de5857739bc26deecd4dbdbd9a3df66a843551ffda193c5eafc7ebf5da20e3d84c4959a4455a327b66d37c3efff3796b4b5ca96fadb53c5ba7db8f67bcd87defb1b568cf27ece17f8df857e22bea630bd50bf67a3506faa1bc09299f89df339cf622c3bc4f7b5934d65a63bec40a4d6865dc66f65ec1742e04c8e5bff1c559ff0d6ce47b5c4d958febd6da669b55dc5af2cb7790b051ebcf7c87a268e6282a4346f2009203478258b5d62b14c66109777d845969bcdf29b3b2f8ce2d4915de8ef5d767f59037f7adfa2a5fdc35ce7d67dd4dbd3bdf6716207ee6bc4b35ca7935bb354dcbfbddfb62ad71ce396b8c75effbdecd3bb1f8c7aac20af22a1da0f3ee935afe9053492a3a0067511b8489d299a6699ac1fe39e77cd779caf33c07f4fe6ed7515eafefbe50ab8ff7c2df833aa1f6c7c2c2b2fac2fcb1b084c1e0d7a081c1aba0551019a02a0dc6c800cea8e8a6923fa4942f4ae9d77a61ca7e46b73383bb565def4ee9eb0dcb64bf3ed3697a4db3615d29ffeb8e57ab8523b8f59f68ec3aefbdf75efe652f5c7bfb9f5ae5c592944581d048b10248f94719c44da72b81ae37f3d696457fd5db7b01f88e3ba8e3de7b77656df5ef789555b48d92d86f93c8a86179d8b12ecc7926a6fc824ffd4f895d9cfbf4676bf1fe5dffbce7bf27de8d3861acd7e4b5fe4fb45f883146bf091e37bb8c95fb14f37aadd5779eb3bf226e25dd6a1f1d97b3a9c1ecd61eabf7e927d64bf89bf96be1085d0387b6bf2c334462d1da9ab7b573b6a6d2cdbb723aee0fb6b7db72abeb8f1786373463b6cdf7a6664d85ce3e8d5bfadf926f8e26bf358ee80ee65ab12f16b72660e083d06fb5cd9f7fa2b14b678e038b8e2572619acca9d16dead2d02962346708bef5635eadeede18efff89c6ae6aadb5b6d629752e9196219372a88da5552d7ab3090b953a652ed98f5a8ce1c610618cf1ed38f7acf5dea6b979f7a6c9f979128bc6dd0ec598d7eb1caae83b4545f97c39cae7a5a47ebf3c3535454565a9f46f2a076f50ea7a07207522a0d0693983b6f81f182cde54e361a424597252f1a810d3cd9f50746c259e67a98bd7473a114fe4de9e48a10a12c8edde7b31eef862de08545b2bcbad82d614e2c8a6dd19e7ac056fbd73e637e82cd24766916635e52879ef1ded268fc76bebe5645b32887b3d0d3597b531e9b3d65a1b09e1a3e67cd4ce78c46891be38c936dcda393bbf8b33d75a6b73db6de23d5e7b306a6a7ec533cf7add8c4487c05aff7668c7f7da7b6b1c2f7bc15a3ae7a1cca392398aa23bd4ec9d0f9ff3ccee509be43c2b92b5ce675163b2cc9bcf1d474f94a366cef9e39d7bdff8f3a0b598a74d9eeef5b8e9f737b3f62931b147efdd99e3287bc59e592eb45cd99b59095064dade9c14e1653a7013b6588da14d78e4b7323a0399abeac9c296a27addfdb35c96dbe8ed392eaf59b61eba5ab26b48ffb0b9ab09cbdd3ab4ebf4f68a5959b7577346d1de2baed5f79a6bced5fa3ef6f28268f0bcdc0413de14d75080ba7f973c1e328a8145061411131940a42545ab0e466a15b239e79c73fe1668867f787e1d5d475a69abffe3affe747946faa28b68fc295dd80038fb955699bd8c9648fc3f4d935d7f9286e6ae1506c0e4bff6ae59d90484f29f6cb325c058bce01ee5a8be7ac09ab567ecd2ec0c960155ccb0a5ad61dd06f6864555be384b7053b8e3b0455f9dc2718baca7d168eceafa9f48bcdda7fb0ca6a759f33f851cddda9cf37d66d8302b86f4e9277a9ffa9fda34a256b3d6da8cf7deba6637d45e0b87b3ce1a675d33c73f9ba6a94dadf7d6f9ca32d7ab54cbf8e606f3f27def9d24c67cdf344b7f7a5dd334f12cb388c6ad095e18388c306f0d8f39a8440e7c4d02020a436500100e06c442e2581625218682301cfb01340208451a49c489e62161502405622c025110c23110000410c00820c418e4585105ea58be302d3e0303310d065a75d1e0b538a12fc030b6204f1db0fbf6782799175ba8cb1756220d743e123a1acf7eea2c2c5909707da29e498ffde209467c1537d6f1724d0cf3e6b61a7a00c3ba213bcef6d8ccfc05981265b09ee69c6e9e2633d7d37814a4c9b995c1602c6e003cad4e6a12829a4ea70ee49e9e0ee789aad571cb03d25e6788e3fb39100e671153a9d665c7bc0c2436660137243bdc93b5763a9ddd5656ef2368bb1668e653521d0dfa8d1888a649902dc20dbadbbaac874dbecb7bf61daa7283798268fc4b2245b45c11979838e0491475991c20ed015ab72101a37697cc5c807f198260aff55fc1df841669976843c1ab4003fd26448f678c047061b8ecb925a71d061d8a748da18912598b1ff769dd74f21093f966e5b5c2d20d505838def2fde40aa10dbe9333cb63b53d76e21364f4ad37e912b9e1e68ac2a3bd99d2201685760ef1c9302e95362cad31fd047eb3a5c40c5b84307048f6e15b4b17e066307bdf369ddb68b678899c526ac327704db06036592bc5107aff0784eb1a6f201101c8aa63db6886f08abf6301bf14cd279d547c6f651cd3c06ca907e362db7255fc8402bba514cc790d4b8093f999d4bb095b34c6da41d6cfba56313dfd60cc212066c52cbeb1f6d700919bb50cac1f7f320dd61f2b3b7c680563f5393a55a7d5791e400824c471051ea0f88c2f1a4de9da8f0820058b03853061b8b3c2732e9041a0343bb2bdad100cd124d6ff175dad9793346569d3b37599f64bbbe01167ebe9388a2338d43c1a1f214690d466f9b3d6981eefa7609e0c56f49f485555a64f140e6db88051b6654778e63c290b1bd91a4425b03290474bd98051cb32b5b49af6f88179eb1dbbe77b400aab835f0d2a489c5c50cc1cb969fca85f1b54e0270a17aa3a41b054785dc2dca5a26522277471ca67d1f847782e6ddd68926ceb0c5d732c4c9334f1ab3b600ef27b64edbd584fcb6fb68b91679f822d57d889af2c137421dd7bb84b90bb9f70e6db31d8ac4845df74136ebc7564ce03c968a0109fc892171c44be420e517291d9e97c5c0135dc094829a68b3adc1be09fcd001afb160e50725ee44d7a637fadc683f9f71dfffc13c2c0b32d14213075a08bf66bdb388d4fbf5c3bad99b143a218c049729924e0af5784533778299fbfd457d75613ff8c54e0cabb6d1c980017ef097265c5c5100bdeb363d2419e26b9deac791dd1d64ac7cb4a41079cef91fffabc614d3840501286dd087f8fe6f02cf785415243e4804ca438c5f30b9342de3f344519f6f0a08efa68abc98641e5456efc451c73a277639924862393a7e79eba09df20192d45bdf734a5522dc53c47a48318d145d29a7ef8aca0033e9a5ed0d1331ae3f1dad38ef68efaa5eb46af975f24f29eb173410d2dc4442330cc4c8bcf3324936223bfe77aa92e1c01c0b97438906a0b8c421ed32a24ba88b72ce6b89e42b2b221771c81e978c03cfc1ecabe269974414e839e6a7c7d57faf161d50eef49d866b844a0811179d10e1f9ded0e8d72fde889ade44061fe9251aa1e3c91dd93b6d41775b8af831b140b23c2a5980cf1a5301242725faa18f83f26dde6391e51e7d512d24da2408992e8f02dc1b6ac17ceb9a3cb32f1c2acc2e0fbccd024b58526b124c123f3b2cc27cd2949acbb9a66a8e6525308853297ec2a974666fec8347840ff959b7dca2c0021db7d0d9c935d40e9781ae11c30e6519126f63eeba014613ed53914d0a364618008bdff6dc71bb116daa65a3425c5c6e32741ccfff71ed553795c79ab63492f3a6d664f3710750d88e3e18b28cd179a55ee542c5912e5a620263b22deb3c2c617e4917f3b1143fd1a2da3bda888148435cc478655a86c44b5c7e76ffcf14524950f5e217070e6c35751819a89635d660fd5081d18de9a7c7c49024ced4b94e9347eb3b36f4e00816dcbac314d5d823cf91641566a04fa011b649ee11a393f84ea6ac7125f3b0b4d378d5a819eacc3962ce3a2695b838a2ecf34070019e320d7a1ac24ddee892d6aefc6ac32b3a4e175d3eb388b49de5abdea241176b932cf5eb44f5a6f804a52d464b43f2d942f5476f54c594561feeab4d002adec8548ca2a89dd56cbf2d8fa383cb401a16db6d843c4595c6f5d23648c3fc779f93e64caad790410d653462b2d688eaf49f39eac35fca064d74a85d6f3c6b2c03a6add44a0fe82840e2ce85a97ff80332e5745dbc38b3c8400fa38a75a2abcef349c04776703efbd5ca2bd48bc591ee228ac309c1a796607b3409e6a4955ac1c42d97c0531b84ec35191f54e9109a636adaeda4508bf84afaa2f0e3c8a2cfcffb77073a820faa6d50a872e41b6f071e155290f21cd54916389c34924a5c8504acc0de02aacd9c0aa89e642aea013857c92f8ecba73e01e5f573f0806974c4c6721488008976d72a212f8253cd5672f7d581169365e68d2ec899a70b73a7539ddf1396fa72a1c2823868ea6ba1e4ddfb939120edaad6272cdb9325e82985623fb0a735f0000981dd2a370e534a16e1e3bdccd6a4b3491af36d5be947ee361e47515c38b20da531d0df38db18260d897d22778e3ddc0c5d47dd37ebdc772a51761e672615e87d645fb758bafec47c9587595507940db1c18bc60c0f9e03e8ccafe52968c52dfc08733708c5709131494afb888771b9973c21d204dff0f4e38dcc1a79a01d77b77a231aebce1ba693c9f7c8736616895dbbbe5a9a225dcf2d43fa1cf4ba1b8502beca4a0b45e9c06d80a0f8b7589cd634f73ba942ec8d40ea1814abdb5d435673e094602f07994bd84e75dede67451401881de3abaffc32a765ad88d992de3328313822fc84a614002812f862db6ca155c62194936a9a9e7c14b3ee1080c406cbc93f14c6b8d7b9eb23702c5428ac892b6c8e895560f0b9cf440ad7c065dbfda3207160b9ed53eb8fb3bc268e3f5a9e94d81337060378aa06d95fdb6a629e5852ea5860394e724dfb7fee436c719e0a00e11aab35931d85e1f1c6a0bb5acf1a92f7c5ff0fdbd390e3f8368ea81389a7a4e43549d2212928bebc4e2b0d0b2d58b2931f33f70b85bc098f8c45a60dabc8058e192e3eee5b0355a6bf9509928756cf93a9c9157c653d85540f77dca7240690c5906634862b8d011a311237a007799a319540f6a7aa3e8aab4d5d1089c29cdcfb80d4ef212c03526f525ddddf0443c2571c35d51826ca21b5e35018d107f3d898ad5080e4b32e915a8812b29a59102c1a63a3d24615a138e5f510de2a769a4bdc913a4d87db4d512e1c90767fc4234ba63d47dc4a261118a8179aafac42b5fbe4246360106886b359ee6ef87d72101e2506f8d8d654569f026d98a223c68822d6b4d33bb1a1594b9dcb98271323ccb6c168cbf67653117059703da777e9958598a7df4f883525de691a462bf58057f17effe0ae6a5a0c341357db53fd19034e12e88f504d7cbc5abdc8d0b4c961851dd8a2e8a28bdc2307f233bf031929b57d4f1a7bcfac1e447633b26e99b8aa9652ee8a274d806dc229c53e96a381477a886bbaaeeb5861e4643ea8450f4fda142350624a93f653088a126a84a203cd583d7cbc70ca3041125542a564a1aed09cfb53230582b792d158f85c9b19542bc7fe0a43c2e02ea4782aa809a3204ae6852182cee60f6b02f48c7c81104e44878f8c69484b1320ce54f9e8cc91d368c588f16dec060574e70fabb8d2ba7fadea6c84b725f2ba7efa05df6a60787a365e584052491cec41c255fe59435ab2caf6587935300b778e881845cf29585246aade0ef60d15f9920e3e7b0ab604d4f96e6946e57bee4000785f12810b2907725a978c06532aa188d770a12732d932278530ec7f738d4eb7757d13926568d9fe9bb269f9073b2406ee5ccc23747a1cf47941c0ce4f1c60d6ed676a1c01fbc6e62921b046c46548a260619b8ca69b6eb2c37100f943c0488b73fae6e1c3e609d21a8623a1f0dd6fb92986b13085c49a66df6ff55eefeea894d010bbb942f30c0bdcd15d2a3d72d3ffb29ac6185e8613f4d49f6b8bd4838404a3ae2c307af22217196ac90977330ba364819aac739d9fea31ed8eae072949fe07a4f02f37708e92c2d3952ce8dee6921a5e79afa19f4aafc7d19474039ea80caa25812d743865d67654465f28c8bec8e7d657158326418ce874946c186b6c60b2d4035919c4e4dd5742c18d7108bc61745fadd6a8cb2f391f0c1add456961fa207976022d895a63f9624fc0be1d01495413fca951cf74e0f3fedb366fb261f1f42093d978c610179852a79e132848f5d33e7840d5a3091860a49df97039c54493633cd1acc8d4ac8d306af12328dc9397d210769c0e031de3effbbbbc3f170d239825a3185027ab9089a2eb431895ec3f32103c2c2f979689a49c9b5bb9cd89bed83443155c5890b78e67dd862d45a4aa6995c346b505b4a644af274aac4918007499852f162decc00ad24415f4b69cc126590c8c568d5a18c92f851cc1f4c5e3d078161b7f3f15d6ca9e4717bde4e2a799dcdd351b25386fbd2ebcad29b3e7859f59a2ae719ab5d585ef3a78a4a0679b92500d6a90a5ca64a482c2ef201757026046d17203d16949b1252937b5c07325aa1e680afbb9acd9d644fe9b026a383e89f0b331c176668bb8a88e9f353c823f82a52e0f5c72832ff8795fe0f2a197f734fc94bb43b1f1084330438216656cbee80d7a1215fe1b14cb5795408da630ded59694f0700d021be127cc10826bc7fa811d9e44099a36940e8ccf23ea611c2ca47c2995aa52ce3dc4812652b04e81188945b582780142b14cce2c1e2e7876fab65c43ebce410b3fa467e075abbb4bd89acd2ecf72ac363eed173ca64152ced78d0d86538425e7d9991ab3cf578c950f7474bac12f82ce2710875a4c9a691160a1a87b5d9c25bbe1498f4583e625ca7893090156e4597dab9b4657fb390aace8ba34f88277cafda0163ed5ab832ea364d73b65105807731541dc84f454efceca149feea6fe8043469c3675e7a3531d186fc6b123efa28b16d16b369eceb4e498c08cc72d64e9fe50c9915964782f4f00138ba3a9ee09ac8d21b04e223e7337505913ebae8cc92b2be037f61d1dec0b5d82c89c861152211d9abf88b480c413dd81aed82eba14f6e4e01ed02466e0731752a1874522b64a639eb3afdcf7a50613a22f073b4bf2179bb759e0669736bc01258b25436423a20e49ff911d0b8c8bac2eb2153f5e077d87805161f322135ee5b44760121f12eff47df88fa38f50905e596751bf8199a07e5eed128601808bcfcf54f9727e11438ae81a3d45599c1095c86336639f01be0103739a27647f6711b44d52368d88ece5034de5b0944b754e1372ecc1cb9f7eb913d5019cc0fa4b97e595a3d68de49a4d317fa1ebd050dbe3302056fd0a32d41b558a2f214e69c39f0f6a291b423915da8d4aa8e8b3288007d657da9ac69c8e11abd8dc8cfce93ec3146b7fc5501513cc0734d921f59f3337840a95c9b454168500b6a52019c775a211cb166a13e3bed96ad3fa2f0f972f01006c3a1c1338a190c2f64b158b9e6ebf8663fa121462df82261c20c49a76e00646a41b1318fb2315756672f69f1e2821fa86d123604e35750ab8677a1fb417784416278f66bc642c7433fb8672d828ffb6f677798fe687cf56634af2af1d16132f25180ca9e193d9e20eff2ae2ebf9c663394145b2cbc55d2280e572237994b2ff3bf6f00fd3f6ca21b1cc63e255cc4b373c62b17f527ef0b67f34fd2a4193c793985b7cefd1b111119ab5f20d49522356ce63e9fed78c8b5c38c9432aa1c134539bc1b1fb34d8556319ec5a19374f5aae296b4a571f3f3322178bbe23c823fff2d91259b392d79430aaf9f65b3a83c676dca98a9bc4db7a48fcc65e9013a7ac978266cfead4fabbd78692a571dd1bf2340f68ca91e5fd03ddc465baac25c62dac0bad5376fe25a14a66440c5fcc847918ec997ca4d373a597a5ca456fb260e1dcce0909d3b3b458f3e6f404524cf67de5048c45fd4a1470bc8ce60ddbd4b3b625e1af71e0c72161f8e753ad4cc968029e8f493e789c3445432df163677c9d819aabdcd42cdcc52c31b8f9a19b15d76b2e6ac90281895a9db4794300adaf7915452c7529661ac2a5dee70edbecfa508eb93d1622e2eb1ce2988256475ad751ba29230d2860cfaecf5982586737456830e20340c895bbd8a0952cf447e197e924752cb2dcba26e64e97c84528a9dbc8a9e30a6282c086bc3c980051ebb8b4d65162286187f4615788d41cdc005ec84ad873c5f7461850a5a078d37aea6e85c7b23f4adbfaf40266779f90e4a3613b2f8ee515f680bcdddc40f04285dec8897081475adca8859faf7593049d6e029c923e8e99e73e2252de0dbee847a9c1eec97da095513f49b346e1ef1d23ad3aa2c726e392cfc82763783328aae6a8b0b513a4ff74918d77a08dbc0b8f0ca6dae640c102f31c64b9764211e3dbc9474b599007d3dcbaef9d425e88190fdaeef5f16e86d906042c6fab814b9148704a97b0138b738bc14cb473c1bbe3d15dc945d6206671eef63d3527053c3a32b23bf2e0a6ea2fbada748d7fd4227f274236af80802a98c9f03d333ddfb42896fca3f71dba57efccda58789fb4d29b4ed12f8b78d89d031dba6dba3f577be809f23977333191745260afe14f38f7f0fb87b2dafa6fdec6e15b069119b1e11edf1553f8819ab29a149b91a89f56dd2214c6176a7b540025f35a1b914aec413b200f6925d506d96865d0547e2f8be7e31ff0a0bb64aef018ebc772a035eb55b66527753b7d7da3fff43f4b0f1ab74bb95c818fb324f49306486749558f3b09bfe0e71badd82b8f575e6e6bbdc0bd2debc173aac9ce6ee2fd1961fc829e0eab1076f7653b494cafa249f80f645d3a2472913585efcdb27b9535fee5bcba1e3337f09086817b09ed43a724bcaf7c0d391d00d425dbd2f1554e83fe10fd3e61dc6731dc9580f3d29a5c26941e64e07a7474e896bda55388ce9a7674a381127d42ad970cdb5882ab28b9ddd6526c15810c5da0d1823fdc380217a7cb22120b2ebabe3039d1d8789f7c0dc641643f870dfde8facf8a2ea4a642afccdd24a8f00cada1f21aafa06029adbb7437da77cde8d6b09e12251bd0a51eda3076a1f967726961ad8ee319fa9a562e78db29e85b25138889aa8142174bd9c89ed71fb4ded8253f653f83b4bd82216e1d8bf2b6acb99f98cf9e572668242d088d2984ddfa8b1c831a27bd4116158ea61e2ffe29537941b305e4558c3c2fbbbb0ba32f09b3303c6cbd2bc5931911cce136fc2bedf630a2921aa424a3a4a71fa6bdc9a6406bb66caec83edb92cfc27d98c7074d787920b03e55c05c903dd807c7b650a0e04ed9cdc4ff9d7ea1ebbe6b5a5ae0c07a18de03f580d5d432995c7e40d0dbdc9a3a19706192ba1c6bee6fa053cef099b82254e1932d368f339003567ea8ab7a707eb12235a363a596fa41321de1e59cea2327d7933710df1a19568badd8ee75d29866e18b77829104a847025914178c1aec28fc2284c2c7aaeeea30f19270a020d8521d0b8a1eec4c764d216e8d9916500d96b09d55a3183ec4e6dad189d8baadff69f8668ef8046d573e93d0b0d81311a7eef7d2ca722552ffb3b069c4eaafe800325428f6ecde7ddc732ca0fa13703f412640361644ead1fdd0198dc0d8c205d59a39349e82d69ddf3afceaa82b56ee61775d2807032bd7662002e5f3f7aafe7ab42d494e6c8bbab2778b2106de74ce4ff52a3499ed14cc30f72485c6a9a904342ae8bea2157800785bece5f2c49867ebbebfc2d04f6656a39f112de00c42479273c4f247b2ee2e866f97a9eef7ae2065b14f215ce230b67112cb43b591e683cde0feab940b536db17dee1a4a723f1cf89c71fbb0dcec471edc86c9a160f68870c761ffbc9d6b7ec5785ca65bf82df597aae03b63ab17525fd7341c76e737c39c89cadb45aa897049764ae3f683322115ed3c44f28c941061a6b51cef7df89221e0ce5bf6a905ad9878421423a7f395d8912deb048927957e896e8460fc2f5eb39d1fe1e77cdc692e3181bef17054c2fe9d265b20e481cb20352503a52469557cd31bf1444fb4b03fe1737620581075841ebc874a327d640fe746b10e1ce726929b8d5aa1b59b92a4d09af41fa2143052591548d756c2770a99110ad97c84b02325e0126560e5f170e98e98175e46d34459842c5b896cfe1ebf8f1459a84a5675d0094ac1fca91a246529495f8ab31b6300d0879a52ebe77c0a2b780135d356b0d192cd759f76b0e0c5472aebc6a60deb339e7f64c031e57c03a01e36d7d1d4a0c738b343fa10bcbf7c3d497685d39a91499879d4494ed2644900795e2c733dbb87a66bb326f58d5da1f19a68a710e6e4f34e232281c14ba9ab32f29d8e7d7f5edbd5ea3333397c440988c24eb964a637a97ed4a06efe71ee5f7f3827d2c66d23a378b0dfdaa575350d285725896ef4c8ff24860890c0956ceca1e7ff886bc1f86f77baf4ad868fa7c866ce15ab0aa8c1d2b5115a430bad64b81d8dd828c92d77741a6a374b8a3cf06b232e3516ec8c1556aec6db91db22efedab6e258a45e7ea7eb6d01a69fc10db87c52473db2ee8817fa443376872019a9d70f756324108e53caa8cc9aeb2d834c7cf8827638f7af9b76433d77fe78dfb306afda80cca809b15a003d4c5aa44945ee92e719e7f6d50951277e197ea7b204e616e3aa9ebb79a67c15a00a8c4387677038be6635696e5c6297f902ca643e85edf60fc66b5e1b712ad5c53221796ede2889da0bf37e9d1e32dabbdc8db61d91dee08fa34ca813fb53fbdaee843165319bbc377fb570a474798d7da579f1a4aadfa18cd704c32eb08d6fb5d4f105b50d5c510109f340df29144411f052d0f03ed6edf50e037b7b4f8fa7ced3a0a7d297c67dc6e971e75197bf44469dd08aba9d4e196bbf04e768197685cd3823a1f5e0bc45d3da779721ff68994fd7743f3210c99d91f16f6a68521e93decea822e29f8d11521af9f606bc11789b1d0d51921e98ad75759442207c94089a5887f0a8872a9ab9c18cda2710eb259c5ab7bfd41aa36cae2edab1e595ce7386a41ba8f3d7c81b518cc8b9c6d6827a28c58592124747595b94a28a2d279b499333fd6b62293ea1eb889a84d75cdedf92d129540a2e12020aa24405f8e70754a52386742ac94245edcc0041829cca5a25c70ecd01447598ba608ae8cbde9ece8693078f3bd215db46539f0cf42f8baff3b6b63f1a85dd0adb8efa04e1ef586ae3cbc0b592c5e997bb466ede3105c48e23147ac9750120f35938f03534ad5a9ace517f90b7fe9c32f2ecd43299adbf4826c9bdf592a6feacfa7ff47e207ceedb0d56a97c83abcba3f7ca10d0ba27be7b46a3a97a48f10d10c716eb0ad0516a850983448386395a4bec270e2617b56472c0cc4e1fb59a6b2f229896b85f9e317864eceefc71c9c3e4cac788c52b9c5b8997500be144bcac457066940de627cca6d8f80293798b333491c83addccd80dcdca5b5c17dc3ca68c4d30b3f43a480daedf2590b7ca917fdef93f91f596ee5c4c7881023a3971ee7d267e00f647126318c65ef4d900734c9e4e1a9a0d78a80dd21cd9fd15b66155b6b9dcdc67b4f2fa2a566767f5524eb1b18d4dc2a5ad288bd6b9a7c6cc1e68e23ad32748d6b4ddbf6c78bd0d88e5a8cec64eea352a12fe22a64117a378bdb536829f0b5a839d1b6751bd010923e336c597cbc1ccba5715a6ff7e3086a0314a24317af9d49aaf70ca4f5e6a51ded965f78b1fd8e2ff60d8829a756ff1c92c0552c24e9919ee2493b1979cd80f09eda1a3a445d8d84f6d68a62dfd27bc46f3d7739693f6ca51ef4200f3deccaac2224c66af7b8a1dc5a05d085a8ad0705946a6b977e0591b7ddc71e1a56959ed70c26cd8c639b21471ecc0c84cf2c0534c7b667cb8c4a0fbba286e9d13aff239e6fb8978caa45df70f5aaee52a6bea4708567d34c237c33c2b7275f773a2fab68617d8835224e489342841e8503e344531a90ebb16dcab6feb51855dbda878f06ccf3835e502826a8aca0d5673adc456e8561da11d19f77afa2379624565412041dd226e4cc01fadd034e6b41f6bf8564247b05aaf768f2e806718da3962a808ccbad7eea24dd11f3eaa20bb336bf4e67456135ab1d4562e1519b9cd38b320bd35c39134656e079d88d00d4c3be9ed179263ed1d50559ccfd644e23ed8996abd67eb7823d1c2150be736378ad0443731329975b342dfe6e536f668dcb4ec495c5b6789f5ddd6e97c06ab8b4c4855bd6089d7a06ca0c9f3350f6b63073b207dd4c0f0d328b4892e2ff0dfd34ce706a0305a1609aea4f3b5e2026a3cbf0e7f24c6c7f036a8f7ee8161701b1024b5bfb1b5fd582f184a2da696e31b1b596ce4c17b79e9ac8bc9b3c5f43c3c1a5f98a9311b8f7597c298bae34a9d99ad4c4f38b885abcfb90984a0b7fe1c8ee07065d0713a40c7be5e8a01134d1d317cde25478af969240bbf0c173c4a761a5e210ff3d99c2fb7e9e8ba96cb65f57a68baf488da032ec8d46456173548fb971f5a201a1893b9b1e97568850eed0d72a7f00f0afbee1365555016fa28d283052b6186b5f2c1612dfb7ae0a44689b58ad56b8a392be235a62fbc8f28034c6ab3f3b03b569b64204b9a5984f8fed8a9e5a318e12c115d37a41bc02107fc909090abe08e0490748608436afac35c16ebb194c8742f8c347ce6216d3689d2a4b0b5a791f95929625db4d9e5c0829ab6229c0e5182cd35f599141bcbe1a38b8937269ac8988725dc261330616aec760f7a8e9c30f21d5ec77e92adc5beffb8d2bfdb630c9abd4cb1518f3d7710024efae2f9e0ccca3d5f741903c0118c067c8007a3676e7798b7650f5636e47211d6f02553fa2e0352cd3982aeae7c7aea683613db81ea95920fe40f6db0a61a20aaade2fbe57475c314efc3e5164c6453d214566b24ab91c4f13e43a8657bafea9dfb7b82eef18af30cce7111f92d621dfb1e7e8c4ca395674fa39565c725bbd1e392e586fbcf52d15fbf7003ed01dce9bf24d2b6b5266abfcfb95123a92f8fa94efff896c42df58f299f86797c5b4e91aa7f18a5ece38d96644286f49b0c3ba0b5678d60ac13440d5828b91350aaf4201f503e3b851eb4e50aae6c4541edf8a9da449204b60c6cb8e8bef439b0d330318aa170686e464e8b4322904a29fcd35ad3440869014cea92e4400c924ea905a794f23da02337cf24aa807350f2e75f6e3c3517dc90091a5a0a7b08fce40f6875331ad6e49f420af59d5746dfb3a7ce9ccdd1b695d565d995ecb8999b81863b4f307f6e9fd38a7152aac3e878e524a5ea337090b3d9c177125bd912a568f1e54231805b4f768e68d1cef27959d8de49424550b42ca263502c6cb55cbed38c256836ac3eb95f4139d40b72c69bc0c37a9398217f716006d92c72547502b37934bb0773569b2613c455aeb034c19e07f15075868cf32427aa83b2fb2538b41274947855339d927238a531340c9c02bbe85126d0f090dafe23ace7ebe80fedcba29a37a13b7d404c422b187bfdb37ec5afbe838ab85af6571b295e1fae7460bc0aef060d6f0c5971588145792b9ed37f0685f48a1c7fe3c9b6e3a397811e46788219586b0a0b5b9810288ca5ada0bbbed5947c334e273919b50c873b2c038281d34b6239f06d39523d8a227da7e06a4dd0a33fd8fd2ae30bc6e27197f725c358c197ff7eddacb0b08e317a41a66c5fbe567d0877849a07dd9ef37c1ba827614b16d277374d6acfc72d8e6a67bf66a44694894f672da555af6360b8f7f654d5dc9ca37bad39418ae00f229e81dea77063dba488075918e9438a6395377fcabaad48dec77ff48da94e8e2b35727f12e93b61421275e2dca12a6e710fb85869fc5f9dae3565d769377934424ed93c81f4ee538656c50b28151c77dd5cec56469170a770547253cd2cd2c83726fd046663f5cd86e206ca858605691c3b8866bb0a1657acb527300118fbac59bd8252b5f44aa46e116481a81630f834a117368ee26dd76ce002c1dc9badbafe7cd936d0b936e7a81d9f993369453205264271944c534a9b94f788eb5c405744b96d6b17d5a16d651c9172582a487f5ce8d99f8d5654e14815d6b81ac39159fe04a829820aedce3dae8246c5aeea9615e6e1ad7b87a93686b5aba20c5a1ae616df064361b7914067cd8824fd083412d1b8f6e746028089197159eb18312c0a7e814d3c117d2a47cf58b980281603d2ab0a2ed5e2d580d4469e8d673f13d3afd07aff1e936fe765c6843d744fd3843ae1eb6afaaa224f327c427b42416e3d43ecedc7e21323f8f486e8c35cad39c2cb178d2b8c8a37866d222959c5fca13e3e27503dcc14b84897609de748baa3d811cc7fdec53ee12b96f84ea2f5c8639d35560c3857923172ad8b89b5236dd39865fb02a9db1eeb809e4e161b833f1164e8072a426667d4649db6fb64e660e3d0f2f94b479dad61cf821393e3e995ed453e33948f633501d6c2bc657973446865013446b8b7bac194cdf73838a39c3016190aaabcaa89434980f54e81446a120855b963ee8dd88696014fbc200e908e3237c70c927979634d15c2d91b44862fa5a25c61292fca93a956c014da4d2e27de9872bc646366f6063f1adbda8d3b499fc3c7b26da3c96a1356da6c042beb388c5e7cc97f29dae6608f601c40436a17fce23b24c98103ba22c9d1f5e86332d2e34b224c77b60af3eb12e4a9bc1d44325f5be188ea549c9ee32e7a51ce61e4fe2310a456f702ed5b8bc602dc54024a4651465040561a1da9f3e6593c61f342a46d02d9dd1b8ea8e1900f9c85e963020808191390cbe5ebe6c75d5fba9dcf3981f9fae405ee44190ec4e9466caa506f25e91b2f329b8e5a02b4669aad94bb2222222265f903630488044e560327efe4860da53705edc9123a4abd59942b4f7c4e3227c122b127a59f930fdfe4e9cdf79992b57c6722898f5de535de536d1d7e4b2df1b51f4c3c6f884c2a58d8c0d6b9459f59a0627eeddb0ad7d2910a69555591dda06269512ba1396dbd54dc81fb7216e389b9704195d62a54ebbeb7cf396b57c73b395494233b1fbd8dbdabb5d6da1a84bb5b786ff0ffa73df36b8502a6c48c6fc6f7d6b817776de561bc10ea1bcb6b6d6d90f1cd1ffffb33be9ade1a18e719e3ffff678cadafad81afcdc11a411cac51b2e1fbe7561ca597009c40b59fda0ad02980e7b579dd0b3f9fd6daebceb07aa3f4e63b71b6799c737e61efd00b1844d5fa00b49e42d6e67bf3b5e59c6fb6b2a839d47b0267700a8b70debba848ebbdb1100e97add69b66d106fd2f8a5cefa224bfed0854965def1a348ab0d822277befbdf7a6b17516e6fce25eb465fab2e690d79da8ac31c618639d7fc634e3cef5bdf76adbdd7c737e7fbff792db5e2c8ebc1ba149dd39bed75edcb9115e7cf7cdb9dddbe27b31d6786a4db30582a9e0556fb5bfc56ebcacedb5d6decbc531fb98df30db9ef3e2e0ffde7b33c71a16cb94676f2745bf27e598b7bfe66dfe2927c591dcb8636c352ca6b3bde2c8379392e665e119617e755b6b257db3cdbcaaf7b75363caab4c7789c52f700fc82734abbd59ef2d661216f3bec76eb091acaa7f6f3adeb298452c84c369bb37cda30dfa7f1c7bef1f470443e7eadf9edf446d395059e2cfc92e04036feb23abf831a05189da3b8d62d6bbe31a9979aff4dabfffddf7deab69d5388756919fbc6bac45e2c19aab9039deb573605ed3ac991c11418e0e33a9732e72b3baf781abc6a5c498cd982c4b7e4c41dd122ea19cc6d7fea8935aeb0d5bad73ad9fd2ce29394e9a6f7831b2264ab78258c58b3d99ba1de69325a41137b3b2993fa68e99ad20c7bc7dd6eb6be7de1cfb7159b878b34b8f6f3f7371917d0fb8a824cf9759df3cdd617be7d69275a77fa6d52810a53743dd0a7a98450d887b65a430ad90ec70d0adc0cbd800fb22a301249f62012dae598bd2b63cd7cc5d25931b556598b47be36c588031334bbb79272d84682cf3019caf2b535d6d09b3f357c55215ea368d4924923eda65bc13948dcf66b130b3c15e57b09ba75950966fb8e7c3e31ee7e292220ec9b1a0b9de83d4c15760f539dd8a819ccc216417342476d714c82ffbf90b99417e9c0b379e5a9e45c2e962b77d6464e33ad236eea83b45deca5c96d9f6f630d2b61bd83f6a6fef6747fcedbbe681747b96a5f7fb13d0f347babeebd86db967c30965ab9f6df9aabad8396717fb8eb852fc67d4df017032778c524a6d7ca6c46cf153d294b38d7240f3beb725ae33bed6daea35833a74a7c6d362808b896631f1de02f60bfde285ae01010101710e04b43314cd284d3afcb18fb55f96e338820d5b7ed56823ffa30b2e709274dff24e85bdf73e7371e5b17c162f7125941d46e4a3db6a59d6da65652f3bfdf8c894235a664ab3ddaf0006a95056cec6f173cbc3e342adf79e1eda4d8504a4a8f0f3d866701a6dda9e19b7ed943cb31bcf8e8ed6d863ab485666cbabe33c49a40e2a0c62d9ca0322874b57a9ea54e5d55aa9cf0d36c4715cd1de3803e7bd2c7fe79c979d46a3e13efebe1cd13d2193f9ef6fadd6edcdf29b0af697b55febe965c9697ce4bf2ccbd2c663b9ddd9d134763a8d368e23ad77da6c667568331935b2c21bf46faf7b705a212184912464bea4d98143071529a688ecf03a23838f3e569e6edd481fbec388362a1c7675e1e5512d4cc91e3c9e12d313b53afbf394fa289006e70326448142028bd1154a9a845da0b8d0a83932dcf1507b2a054c72b9184534cacc0541d4108c0a88b0663f2f5743dd0cce0dc520f2647c0c3be7d38fc397d2209ca62c31316142c45413a534946226cb153e9e5411a37926470df73afbd8bd39919b749173e3b5d95dd25805aa4f870ed512c51db3b5f42032acbe606df14102dc96334239248278316f88ede08b968030ad74922863d54bb240efcbd1aef743c2e239259151e23267a94b16a54ff409e31e258d32b3739e11e26808d216182a2f127e5042c585040b25b8ec8c4451f111bbaa15cbd64b7f476c51fdb43095361b651102874c91ac2b26b82c95d9010c912559c0b0eaa75b96d20b642a88ccebaab7b6569f7f54e15c64af671dca3fe772fb0667c7a031d2e759ab2d57599b7bb92a03b32fe32a1eb68ac253d6465479cddc9239c81fa35a72df88ea6dfb5e53f8f68b21f439bb687f1ba311b7fd806079780a47e11eaeb249d768b7710dbbfbee9f477d4534f6fe3bff3cac75c43283f38e5d7f1c449cdbb62d876328e75cdae66dbced71d47fcc7cdb7491a55463311c2716bfb3232ce6554befed5889877ce9cc1646c3f049f358b549b1921f58d2036d35134c6da6957eaeb1d655d36bf5cc7c5a1dbcc6600ed0077277534a3bcf39c049027e4d47f6def3ed75e6c28461ca3075c83171c63637e1f58d1c43a1c6d53bbada0d851ab4c2f814493284a21bbb1f54a973580c32b81002af0848253de032c8052c97414702e8031794befe510192f2fa054a5488bd312fafb39313368ae4d6f90693d3fd65191f86cbbdf7de1bc09dd6016dbb15577f88423143278ec6586184cda88c122c6b746851a2c8952924d7dc9284d11372e20001aaa101cb922e467610a91225bff91b4fb132ee9d3fc677df7db7cef806c0ff4fe4f6c402ccd616570f22597441324516344f493e10d18607295b35057c7a415fcebdf7de7befa5c265cd149630527840b292050f4a9e98a2cd903062521b8cbbb77d5e3842bcfd614d5019e4c7fdfdc0bbd65abbcbbb32f150aaa88929a37401fa4b40a82e20eacbd1baad0db2cfcc4077bf208a10a9908beaaea55e567e4f80f841d90114e65749c2eeddf6e1700fdb89151a2fa3d286891bef8760e1f9d3eec9680922de6b2548b257440c1885a694041625848b504cfc57207b075bb22b3ff4aa4675e743941525d98c036970ad50a5e0f2048099df799e9faaa2c2f240afe5b7bcd073c95aa0112e0192c58c62bb182fa614ab3a22b562c1d8568c2b368c75f91f343ae07c3c8cc7c5c4155c5256b4517a0204144671b248f133625ad2e301b40513c2b8605d5e5fb19e28be3449f3834c192379a412c9443e913e20a0c022b9c821d9457ec18c6047301e2e2782886248043b25ac7f199147e48e44ea5db52b310dc1a68a47151f47bce63c5de570a4896f899d991ec504ecf2a4d01904b604af7e3a9fbc3ba4ceeb495ff6a9f2283ec50b5221c2b7facdbf629c6bad954d11589ca8954e540144fbe3d318a504091e3daa7829d284123584d9c22629ca975492a8441855858b1ff11d47e2495c892ff11957912e323e26292d8d4ce38834b523ca47929a5e95a929553b88c952ba4a42328cd3eb6138a56b04dafd7c94f9058500fda003fc58557bd5e765c56a7f8949a292b814149bc427114a8ca1b932e5f786899f1825c4c8c0623a0026ea5ed5beaaa9184d011e51dd9dbe0db5a53689e5e54ac7edd943240a94244d4845e43020c50d1721e438bdc96292dd15d285aada6ade2609334d507c21c9ba21ab092672638428c721ad9bb566de9924a81c957347992a5765abec8078cd3049c24c9bdbce1758ef1d065193a2c256b887b14e8a374379e3dbbbba58972a38ace212535418d8dda1068d14119d160efab0b4ac9570e865f424059459a0a326d2f4a003a8cc3fc36fad620133bdb2f5e84a9c9a8015fbc49b35bd1f6bc28061d2fa09bf6cae160c5a8b556157598ea448b123ea47932b402a363d78f12222a942e687e300c80158d30497d0d9ad21bca8e1115471ce341ef051504519b18288a532e2912b4753843f586939d155f593616900b95610dab865acb87b092f402643643061c58cd690586e980156bab3631ec565b558dbaf33be0a8841bab5fcb84d2f6fd2392fa557503aa45e4280d01b76e7a228fac81c753723651536c3b1613e564b1c13f77feccbfcec16fb3f231d8a20f3b79c6336fb33221b5946fa5b45de66f0ddb83183b6d65af3cdf7eeb1e39ef3bdf76611f3dcc1b516b8a90e5ffd2eaad64b764887d4ab569da398f786900708356a181c47f56bebefaef65a5f02fd7eb50108239c4079b70cbdb57a01b597de4b54a46975536fb596da4b2f9d29e0fb31a5f8523a5a5e959717acae36af7c51b5fc41ff5d9473dd15c408c3abfdc2ec8026c0c24f5055afa80105e52eacb5060561d2085b96def3a2fa75802d06b059bdda9abf76939ca520fbb74d53c164892a19b6f71a50fd41b12b5f3e1fc5026a714ad246ff6bdeda24f6ef8c9fe432cd006f70ea0ac24c111d0410219472840a2a40aa8cb75ea546728bafbcbd3d2d2992e57f3cdaf5d82669813c958fddd25c3bddc243998cec0da94e04967c49cbffe5d535e4126e05b58058bedeac8231f422f78570411da8dbc6b187ff1d6b7fdfb1e30596b61d9a8df48d7fdc707e702306382c3244f3c20fc9970f42a22449e2e34e6913a0522bad87524ae9b005303db4cbbdf0c7c7e7e707037f3e508beff37fca217b03c1c7fbf8162d6e3c823f7d0e015f843401e58629a678c9b13b62a555051ba44da044aa1d1e3e8cdcec2d01c726417cec6bfbc434b0ac2f74f31522f16a9292f918e9d8fb9df3ae6dadbbcebf265f690c0896deaaa2f375917aa64073ed98a5df9c2647627048b2decbbaec7befbdf7332feb4267e050e9e04861600d5c797e8ef2ffd4766aa5ad068f8d06f9f33ffee77e3caeb711c20a56131073be5c91638a8f225d4ec0389941936b3b360bfcce9fb2f182da78b526f7f63b368df33a9bdfc8b176bb7ff47f86be65366f83d56a3003a4909fbcd56ab78ba9e5a6aefbb1ec7b3f65fe7eef31bd711a5b468f6dbbf065e97f597a7f0bcae26dd0e824ed27d8e0369b24fb7d366356b72eec7b992d87aeea601dd38c3fc669801867a5b981080e6f822461b9311f10e281a58aa52b27607cd69bcae8c78c1714fd4d35df8e685b305e768a54147fcd8b9be6f4b8c739edbe605e5bde97a4310af9ef62bff1db788b415444c306997f9c7ada9be6cb90a10c1b2899275c84f5f318df3221654b11498e7455d98186286c8250800895e678f12cee9b68fe8cfb170e085f300eb0839a77f0b2a601538e681a23e20c753f2fa3dfed976bcb3af136b6afb7cf148874fdf64d7ffe5b696e969aa9647c0c01d800be05a57adae28dda00743aef41ab3d4fef21d288fb31de40a84b5ab0a9de36f46edbb03b1c0e87ab44c4e14d5d9c1d945405faa0e814ae2cbd9740c796b185f0a58d29b4f4c9949c10f489529e1253c5ededfdac995e1ae4c7acf8f67cadfd3a8a449fa2a6aa6c14147d7ae2c95ae2ae1f1c2e9e9010fe516144ebcd9ce6dcc1dcf78b1bef3f769febfc4767b3e84141414464c722eab6be4771eb2012b205913c82887c6e2806511e8201a800e07c50db10dff9fa87b015eac2edcb0eb420b1d3414b124c780c38393941194287383deebf70fcfd1f971bc24901605bde6a6dc5b9f4d9e3d719ebfc2fbeb3b41f971b12332dc3adbdf5dffcbfbdb4d7ca5c9e8df5b043ecc3c5fb3981d65a058e588b3fce5feb39e9d51feb8c814bdc1a14068794ee39e91555d69a524ba99e3aff9baf8d5661ed8259c1dd9db4668d5cb2c8988182daa846d36b67c4dbd5b25f6bbb5deb6ad26fa9b5da476b6d8c072ae1daa5778897c1d9a1a44d36e2cbdf959f194e466297373dbce9515e27738f62d555f8ede68a8e7b6eccb498c164e7468b8fd2af58b29db1c4bb79529be143941b22b4194d425204fa128b294f1b42912bc04812c0b1de5f6bad534049e0e28baf85f27eff3f941bdab8f2e684b1d993f4d3a3b4649b7a90caa872aaac2a7bc320cad2070845973255ac5c943ee51253d9543e95506512cf144f154f8fc7e765a5a7270a3863703d3c4d4f503c513c523c4b3b3b3d5fdde192b2038f4f09006f4c1832649e1228a0d401ea047776626c4d3b4f7f6767878a870032638052fa009ea7560306815089c3e375ace7e95c1daab363839e08b053a3aab2aad5ae6a52341a4d48ab452da9e968f9e0452b0a076e3abd2b1a168d6a169c0967432f1a531c5a8d8d9c2b5b6d369bcd6632a16ce8558d9478aa32670645ab72464d94200fc6a7c9b0805a325998fcac44addcbc080026820293950018140744e2d128c8411cc541ca921fbbe374b8e100d5b628847a16abfa1b2935cf0f158f06379dd6a3502f1878beb8bc273318f9ce7d5ca34a4e63fb90b60034032a2c6fa650ac964eaab77db9d4bd27e9d81eeee83ceb0641dcbe76de3602ad622224bc897c0b078b4f2d5015fc3f4b41c77ff5b09275566387a41764b6314bc8e2770035e59161e9c4a64487437dcf66b3002342dad58ce837de01dd8a46a3ef67e02530cfa692332725c91c8401bc035a445b4465b312eb178d8460743d2023c3f641dd4eb8dd7b4e50b4701382ce9c4e04baae8e4e1859131c219d579d6522f7763650f2fc4143dc513a9efbb27e85c2b6f4e08f929bbbcc4d9902613a905c4c0810f474a17d9249ff9c6885152c24ac7fbeec3442377c5bfa0c3c124a25fbe1873597c36ae9b80797e118368f90ddda24015f61c83cd9c8498051c820894e38f6eb7ee6e511ad59c52cc39ee0d8abfa9dff90b18d7a34e01823a3d8fd5f4362a7c8007ed3be0bedceeb80f8bed1b4e4e66510ad491e9e11fb283fff5a995d8e03e8af0f2325d86833eea6e310af9648d340f8a0aedf4a49c641726d9ade97063d1e77edd40c178728060bf2ff877e333efaa01cfe0fc4a6165a5da96bb09d19ae311a772a30aea74502cd8875df10bb5564ab8aa7b000440ae89ab8c97c7c4a24e556156c798d5da4fcbaebc22361087efd8d3b2b740ab94c9ba03f7f1c79137e51809455f926873813b7feb6a89ac67d72e0da8e4967e5c05027445804439aa8974f330e6dbecdf9e19a0927316b76f58df3c4c01eb1b1eced726d841a0d7daf9ef93688ad41740b58bf53880607b8e90cb95da51a7ec7613e6d6ecf392e97367c750938afa176a59ad6d7500e77a5275b158d1b2f87d9997c23aff1880d3516327a28c71542eef1b0a87ad94378d361dc33b76e93e5a17e1f843665b6da2233df7aed2d515ce7e11981013561fcf43091c82a65c2ce02d5be78bb586f542e27f1466740a24b559ed2291071f9224abae38e8b112f4ca6ba65c4b94dfa02b9c42719d8bd10d33d9ee4a1d92320fd89bbf39f33dc558c53a4f9146de2bc0a4ce19b0f758bed64255b397597bb23975285f9dcab29d5dfe10500e7b20e4cecfefbbde4a2111c1d056279afeef531136a51be843c9dc4b5fea133f10d0936cfb8a19a3d4782fd314e724d2a49fd6234278420af6b72de63483d417735227f1d5aba4ccdd0f6548e0776abd3247b3aaa979b8b2a02011c7dabf8ad9aa7fc84045aed892b24f992d10f31d780a07a54d328b981faf2f906c4379b96a24bc261c955a3a72fced2c984e27101ea2a94758a81439325f37a52771e14e03106fed140d3ace997acc2356a2cd719debc00b10fad1e73e8886dce3b4c98cd360bfb74f16b23ccf4463254ec60368ca9480e2c9f828baa91e593c7e0562de3c9ea594b1edcc00be205f920a2ee906f88351f9f59d923274d9cf043e1bc8767e7520acab35529c942f7d48ece97e72690f5f145356aa3cfe1d92712c57bda500f0c26f6aa3b62d3ab6eafe555b704b14fc8e1eac3f4af190bad78e6566b812a2e24eb42012d12e29db4b4e6e8a105820f9a0065874cdc16811dd255133a9aabba9e493e8f7a5a913c455bfa7eafcb6f51993b47080de6ec6e29e85e14746a67e89930df068481d94aea9060195c64e00fb66eed2a308a5323a05b282149d2120d18895f451fd137b5f66cd1b089b4d035ecd11cdb292f7cc46a7fa8ae64d033ac04b1f4899c77f211de066adeb8d9dbfa69f65635d2d58a33ccb035d22c68531d56a5ad01e193d6d877fa54da3c0d9b31beb89f03f63694ab40233a4416e679c0b25ad210329d06546c6db6e45fe79228b4780d4acc987249924a0147784650071fa0baa5a75f1978977bc12f5f883cb31029b4381715a69f00b3339bf48b36a7d58c5bccfa722ac6cefa54edc413624c9811f95b814e9c1cbe272b8fd49333743d8b574753cf15bc5760a5d99269b6c1ce5c0cdf8de7fbda3c491394d233db459b23f0bdf4e1630ed680da1e10bdeede2133e5c5478f9fcc0b10d04168cee4a21f080ec22c9d23fa4769ff650bd28237aaa3e3df4e5883c274b53ebe74846839a4f434cb20b83297fb87a354cbb25e8e2dfae505dbf2ce06069e6546e7a7fe38e0f3bc39e1a6d80146e6dfddab15cfe521c939a3208feb9689b65c71d4a1b2ab35f37f383dc0bec1cbe4823207aa1f92b6b78ac89fcd732029ddbad1bc9cd0624d5a815b6b621dae254e6d49ac3732e5b448919a2df0c6eca2a5b6b76706a72418ae08f666c1c87af929b0a777f5d75a3475ed13ceba3f854c8448f7aa91ce4d6768ae48ff9133e881eae61935dfaee52cd820040b0abdb23661b31955b7439d9220fcb34487b624b3fbc780abdb1d1fc4dac59e36ea039a9e4bcfb26dcba28dab883348c1b89b8c1a142f3d9707256cba5c7cd740d3b02bc28ee7ea8379577066ce49203e36ffa773cf151639ed29686ab9a52ec2ba40bff075e265f8fc01ec758b4054e969762badbc7a6954486364f4194eb0a96b889a93b6538f212d4a3aa948dbd9dbad583d0a96374749cce4482133c160fd34441501551088fc5e319f63a1601d50f827884a7fdba16161033f22f3961005fa03404ce118e42a97c6886e4a9c00647abf34e8e4e15744d3b9381ebadf7583b5fbad5901102658c713126cfe954e41f3005a73e9d632f240cddcf573c7f95df63da9572f325f7d9938ea4db5dba52619659a23b4254d6bdf3d531ce3bf77214cbabddcccb38e6fde8c2f252426023e2de19f11109229c27117b1859c2eb19a8ba6319f5ec1bebb90d577593b4240f56c1c2a6166940c756ee963b43844338b5999cf8fcb52749efc88ff5b466b289f63990f78e97e13f94a3a393cf342c7c31fdc3bfc94d03057034e0e00f3e848673340e8371e4ea0495c815202cdf8e93a81b010dff1d1eff01eb9a9991a6267675a3d4fd01950fc75968a39d71e0f0355d39b667b7a7f9dcf5c6973ef442a4db29a4ca45978b4d4eb7e457a5334b7cf675500b65a67ea90ecfa552f8fc2002d82717b65f41766bb7257225cbbef4dc071de5a3bb8b8ac2bec53861af460971aeb20550456ceca091f145a85f2e86d70125630d273c416d725885f4b7adf7ec3e0965f092fd6ebe3fb0594b3306696ef50cc4e585be97a41bd475abc1b9f4387f83096f9f561907db7ba420f7d760cb6d3d7f7f43d6c58751a4fcf53d4d38684b2c83e66b8db8df445df99389a57f169dc5ac4582e34367c4ae8cf5920dd1efc10336515f43da041551d68cfbfdad4120d31084f7f42a2925e2f8c86b4eeb1325c97c7f6208d40fd387229676c63728f53b4c0f128d3f3250da87e106822401cb0a8620a324ce9e5c409115a949c5b82e462d539e527a2fba6992462cf2468d47c22863b45711cea891f14d9d3f807dabb11740a8ef3cf7ff8ae417783f811fe755e7a6f971aaf2914be9ff9b0b6e93dfe2c6faae61155c02000631c52b0a24267bbcdd37ae15e118c095b5e3e2a4fd303a5fe4e90a7f1eb617bc2ce848a5fb2206ae152ff967925b0fb6ed27785bdaa61bb575c39fe543e0ec705f9683309ffa4a75327c3be9f8796b2e9d8de41e9e1a494048437af0877591b4fdb2b8d541451ecc9283d9d3c1cd910e9a1d22027bd6d170f41c4541a0243e79c0e5adf89c65a46f54310326cfd54d17557a0f4f6054a0366a01c8a6415549b7ac22c76c8fd957a488adb1998808e533df308be3a53c4acb2f8aea47295d68cf92cccadb28ce4897f2d80081e5e5e8bdc48af77be02e421d8127f549e92be68954e9c5f199a2ce5c74b95971bfe17b0ee1d5be314ac0c43351071c935ef5c867d02001d42d9c8ffd4a00be05ac9b33718207e3a38abfe337d54cf4ba255788aa09f90a1d69665203d29c91cd6a0caf358b2d3a0154b9065f144f46dadc9cdbba7cd360c44f61add1408aa107e0262cd21de864cb5b50c0941b69940158e7d88e03f6f3cc6af49164bb3d4ae8960300e1e8f2bd70586b3ba8177684ba7d38291b8fb07991222918dea929896e82f6b6d75c65f8267d030a7819dd9f93449ba8e126c85af6e285738570d918fa6b2c3c4e676b58de57692505813b7ffd1f9f47acf187d0ea0e9718fc3805b1262376d05502e99fa19c308b04fbd4bf8620a5080e02ac115ca866db1b7c3bffa2afebfadcda665237f2312fd0941c3b4e000144149ad4b23da4b8d6df66f50914359529f1ed01ec473a7ad9537f5f90174c3dd0d09ea41e5b01c679e24799b620b8941dd2f1620157d28e8caa53b8d44ed10ce2727cd4734c36d75a884ba27682ad277a8b56027da82d94b04e906ec6a7c1b1e04aa6eeff012d898c3ed119a17e618a7957b48f7cef147c981268612fd8b9b21b948af5600999eb9585392b755ff2a5323c6a9c35e412a83c6e8a2a10e14266f6ef717b223e830f6812bba91c2660639d81a3a7ee9163dc916bb6d5f18d16127e3918ad43b4ea17e9221ece0945eacc76f93b4f92e0ecda19ad11f78c675eb1f5cddbec1f1dfaf1fa97ff4169ba8d3fb569e0cd66003d79c9a6d3e972128d9d16cdc9e7489f682e13593ab4dd4d9b742683da34ec03d2441d93f8256d80c18d2c0b87b1d7d1102a9efd42d94cd38eeaabd00a6e6e10d98a9fa9b195c94a99304a85f219e68d8f9743ffc75bb36d0c6398c6af2a12e61c53cf0f2755bbdbef5dedbc2f4b73127c10517eb5c23021504e810285d050df3e86af7862f773b45bc84ae7bb391648d1b54a6716dc7f1a02820eacb4cc173b0623c23afc16976b8a28629dfcab25e14fbaca10c75bc14b5b049d80a9a64925c544b9b70b566a0f48c81f50d5a9e739517dfca2f1b6cf4742ed3d91187786426adcec59bb98fe10f944907e1f270b8bc415520f4104862388c5292cadb19a7553a6b0a24def01023c7d63675fd192f362f4e2e7c1990b30ad09d01dade0eb38053ef929a1a2e1eec09790dcbce6c4cc943cb0c274c93fe599b220b061285ab86a40f1b720ac6e32884b28b3db93255aa24197e615b1a886000e8d284e9a22f072f5cbdd4f3b6b5db560f6641817f84378b48a20d6bfd5d88a02f92d69de27765d49d0df28cbf3da85cfad9a00d3cd86bbec56fcb2ad8f8c233d98ed24499d5290b786f56578ee59d40f2b4cedc1ac963276878f86abc3038daedf58c4bee86672b8cbc598a54eb4c3517ab2c9f2e81b3990fcf4c1e5bd53a65b26d1f5bdbd551c0b3b3b6c4cac4a3328007ee491ef01f6b8744894d6123272adf0948734a0ce77ca0d233e63c70916ddb9bb1a91f7a45f3bb7607d5b8d9bb765b244bd66dfde056e28f04ef4f516db607d8be0a29b6b5ea20ca3b367bff14f20550edf22daf1c62e62cb83e853a83a4f30d411105e80f5b5d25a22f0c0f03fdb12980f11a334c07d482b07783236978e139532a547e1d7053beb0f6826dfbb74d77039e0716f8b6ce385672ff747d04a3603bae7f4049821944062274cee80d855f85813a048c9642ae6065da926c428a0305f783c5f2b851557c1975ddfa2c4be873299189655091c81fb6a96c0ea0870d46bb42f0da490429ac2d2b6dc1fb2c98e0af62cc694b1e4d4216df87bd99f8700acc9c59e2777d60373098e770e47fe6bcba016ae0bd065e968e36914a1b98c3ef482bd2bf342dd04e8817e84ca7438c22c167144651f81ce852490323dcea878006c909cc600b8ec03aca03dc62a14c7523007e9c9344935e8c255e4a35f6ac893b0fd72c5c53c00b0dd4d2a0c0c385d00e14d20dc3785ba48410405660f2ce2ed743d281a405fd4e77b43084729b2fc828264e94fed91482799bfc52747c7ea5cae53b2b86546c885ce0d5b5564975f9f3994215e117e7f54b93a0ae7b0865e8d93d8fd648b9e1b3fd5c47960f65affb1f816ab46f967fb8a3d9f15215aa3e51c042dd656fad54fed5606c52af29e10f9427b0bdc92d61046cef545d0e6dd98d75c18ec4418a3620465131aa9909dbf0d3802a9887f65f016db891602b2ef30fab51be24c156e3731de42a4e88b2bc5175b2bc59e4a0dde004429d1d3789f888af921f3b5e88db5349c370ffbc09d00ff25aea7ca4cd52f81cd6bc531a8d4d9182e9fc7d84ad7845f6cbe6c46e2093a056930117c040bdefcca9812dc49c6a0f002600f4d123a906ccc2ad4dab707fca940b1f475558bde93c9a2859f39c81b93ac54222b1535305e7eb0ea35cca643532150a2aae66ec466d7dc36a353d88a6f66cb5965230c1500bb53424862222caf7f67f517d491b0bfc03db19be558666961fc1f5e04c64690be4721dad91b1a9c9b86e1eaeea3ebc6341c9d40a965081b19fa92389355a3ef09bd9d18a03ba38748924a60b7a685b64f1f742ec36ba1dd2da70f9319bdac5d2895007b1e6f5546fab49743cd5bb9f39b84e33332d8a9afc4178237ce0d5db755ef58bc143522cbc733582131fff69656a8440fb69855ab6512d9386a5992c8ac7939295e541d445bc9374496cd653d99ca15e2ba3742d41c230d855269c02dc04e6181ad1eb89de0e50a65dad2c83bd4e3f1c72a7a6cacdb251abed2306c7014f7ebc054954407431530d32fa5ad9c7e84b0cd69b40247e73e1f8488251ba4ec66ea58b2003c27ee5a95661096d610075743f01192d8e8f716b25b59ada723307039ffbb1eea78f5a5591d1c46c6b6e6caa2ad3c2c6a9a2a400f5555a02531f04ca0332f73fab6fcfda6fa7f0ed10a3d42bbc89408b4206d6e2147469e3eab3fcbfa23ca4c3d1ae3f1ab6fe0af480755bbbebdb41fb70cc56ff21f0d4e1d8c94aec10e9db79e205a104160f71cf19a373038fe70b67a75ecc8231c94fa922f0057c9373b5fabecdf382ea9671a40472cc1f8b07ab4a618d675566d2c4b018da4186dddd1f067abbd09a38f8d380e19802e16f2b49cb9f843b1eb27b79931376e906540bc5e44a05f8bda26a64e0284fad1369361f3b002522af57f6b71be03a53dd6ba8dd71daa60caa80c9583a13e6db7f6c87e9aaa210e5e3186f5110b73f213fc9d3c4444c5ccf54aac18716742ac30c8aef57872fde12dd93d5db73a7039ce6041f4c35a34b22f131712257809c53335aa49d186546be986bbadc27c10bc62c456404a1a68c5e2c8c32de73520c369418d59325edeebc372822fcee8b382969343f7a891d73a48115980d46c6574eac36d0d242e55d2ce9ba8ecc519525429cdad3ec896fd4648099c5563b7973354c441e48271accf500368c7c90b7ae88afadf8d9a7622ee36d81c167b98a5bf82de9709a50f05936531ddf89a8ab12bfa5a2ef3d5da096b4a1cc069547c018d87d60df76510c979c5fc8faf0cf4d55190896d1383e3091e2a4318a266fe0291351bee726cc6e21b27099580a80b60ce6912bfa8144f4986a74619622272165972c5c1a209ab9747029245560c9e10b81915a562f01719fa2ee26459d1fb2ac7846eb6c6c1f18450ef609ac9224ee541fb243e649107e0fa988798c3e0c6627bd567032cc63132324a3e5f86c4c2183f20070a48cb533d9fb1cb1eba4a7f58ddb4cc24123053ed262f3d6a7f9517626db1ae32a03c7f542920988f0c804374d0f22fe6974f69da220a0e1a747dd53cc96f7a9b0a0ccfe1444c140eb713751ec90b40b0f069eb2738e0fc536842a232f1f7f38d5f1241753aca011e9d520dffc22abd4f2f13854e04faf028814f1a628b0e203cbac048f4dcf0117a1800fc03b0a11ac75f51caef5f36856c5d39d6eaf7b662eab13ef0999cbd63214ae4152f94ff496c50eb7b0306c82822cf8a994e8f4fd7b213bdf2f184bc235f84d35d9be3abb78101e9780cae5350f180f67c6f2b41e27ed4778106938e804dcbe62f66a5ba9edc94cf35ac669a6ec58d08d8f135fdf62565aee5698115760d84b240f47e851f78b5f7bc9eec5585aa9a71c372b3ed592c53096fd219beba866eb8b4ff0a3a65896f2cbcaacd5248b29ccbc453a6ca6baaa461e5f4d411ab96f7afdc16b886cc38f3db4f7a7dc751d87bf9bdc4582837b96777b6d1ba7417223f7654fa14f6e88f0470814e5a4e22a994900e5b84c0b04153ab3f257268fe31f506d11d7ec94bfc7be2bc8e66f7df73307f38a3be47c8136035045358922dcccaa2eb1f9c36d49d798c66eccb42ad0e7e93d199cb35f5ffd06ccb0a3eed1b0cb5a18dc64cc04e4a30d904a7395b42b18fe8dface9814814b0fa07b80fee33f5c4995978c6d1d1ac55713c7bc6ad07fa01e9b71ec3a60a09e3fa05c24dd5aab48d9b97c51f5c55695a82138fc6e58dcba3f7b4466f43ba363270adaf8ec4d33e534e1265f38ef28261938f2f375ef3d04e6ac4f73b584f5cd0a1d2466cdc68ff5b6d80402d58bd981e3384d6018adb5e18742489aa1c5db547466de82baf1ccb1b900fa607cd0001ec4ca67a0ca2b206396cef126150709f519c2a808a0f1bb25819395892d019c50416d382a7c6aea94af6a462cbf66a753109234582ff9982dca9911997c0ecaf0abf7562c7fbb8ce923897104d0847d377e3765035feb3d2ae39c62d4e6db0eac0fc88b4c150147c45344dcaafe2879e20a31a59b21b9307a9eaad0a47d2d127b2da6d433620df3818e7d53ceb654ead1547b662071cab3bbe20355232d82159f9708e0351d9fd82c3d382d1600fd747a1b19c4796c61e9185e8e83d489cad1d4fe9ab38f1155024efcb8d1b4f16bb5affb0d97a8131617a43f439f7c65b1c9fdffc6ec30c0317bdaa77f30a8dfca67705a7990d53e4441de075008a4a708c5a12e69f085bc602769f8eb3c097f8c56c5eeb0adef5055ab24375c657cb3460f257f424a341a0c6ff7972fb05436cb66bd98d4eac2a3d39c57dc8c05830216398f94b7794a1e951e5b9e12507178f18e59e934756c8dea0541eee51babc76237664bf19b18fb77b5b1d4190862694d11514d0b8178a82c2275b5b742c7a5a174bb278a4f6676eb9af8bcbd5b95f2ad04efc3acbe516ac35f01c869a4ca52d887c59086ca156d40cfe06d9d4aaa1fa51bd1eb8afec2a67a01ec1aee55413c389cdb10dbd7be4c281146a2125b790c35122bc1b52708faa93738a05fb494c044035099cb4551d2f02d699451b616a92a64391c000becfa43d570e4648488985933bd254808a9f033bc6725c997e6ac559200546a772cc2db5fbf526d378ec3f25aefce8d205a141c758053a06ace573d35c68b9e4f6eec53b6683e22402e1994fcba5580b40fa634176107eb090b6b681566e20e31e23fc2ae1d4bf47ef36f1785aec38eda2b0c13d5075b15543fe457b39280c50aa06258e80296dce060cceadc3ee9da9944a802d47d918f6553fc9b7d72e067593014ce2f30ba002ee442397789cbde2ddb4faa633aecce4c617523584e599b0f753285d936418c475d702ac73032bfc2e2082ca49924598623936bb7d04a48ea0cec4b92dbe1048f2813b52358c80b30e2ea4d2b14b024fa1b005075fa93791cb85cb416e09fab0ddc288325cb32a5471c4865617def4f8c373e75d67fa139a28ebf79083b8ee2b9c03a2512b8de2653dae0039d18b04fe0b588de5a708592ca8f82f5a754f18725552982165c12be63b6009f7a7b6fad202f8924b7475f5156657342860f1463f00e8c677698eb47557be845c86e72b71ba43ddbd094ad0eee05193ba216956e59ce69fa96c8ce1654c97ab0beeebe5f657a12d540b32e67b70ad44ac35824d4141907b6eefb9795e9b6d31aac9ceb1c1dd3c2992d40668af3e39ca6323b9034575ba1957321abd59d101071f7975ebb8152b75a29953f9f5aeef1dba871b2c70650c7618a12b6acb907fa550a29b84938b91cd1825ef2de3ed665eefafd910c4c846eb10dca6a56be68c3581b9f8bc91abf34949aa95f15d0a2584a4054aaaad81bd0930f23b5d27f06f8a1c0363e532378b24c6a1e288d66776784fbfd3f29f8d780e71be1d7051c735d7c210e82589b9980c9ccc418a604bd93a15d9195af799527e0d52096f2123ded4b71e34a3c5866c9bccb8e5a69943731623a89303898dae7ee044427874fe8693e34e5f56a8c9c184d10d2bcbf853a6cce5a457e04c60cfcda4f7fbafdf4e6519ed2ca52c14ad70d9a13ec3b60dd28e0016f0ba28e99dc27b1bf561ab278c52c0cfc89cb64326816b47d76a1fd3b72b0f13bb1405d4afb63f11eb20e13a23dc1639e829845df2fe71849ddcf8e7f8b5e7069c1d1152b5125554f91fafcab8ca3bf2a014b07fa69dcb47d9bdaebd2eea1dc3256119e26427b760cc6dee1c3c9910a17dd59a38d20b7abfa7c4417837ba346184724c89d084f7a92105bd47a40cbc87fc1ebf8b937534b970aa976b2d5850841a65d2a35b04b59cba455aa29b5505100a5e72289ad0c3014832d058bb7fe82a7961771641c2b4d5ecc51605fd661e78968419cf94a0f113da5b1b37634fac0c63015862025da0cbd0699e6a52c76404df4a7c76e7c3270e5a0fbdf4dd4d9508ce2ebbd9017279d4f3a10b92a26dfcc4692363e1aad994d5158313a816971d3bf960c691b4acf197f5b84064ba4614101d59ab2d5a7d1e90bbabc29e46a2a964b1930b954b645b589f2543a1314cab5fd498ea5665fd5d9f293af0d595da554c29c4301462b72058d677cbef4c47535242d411a468af4023abf3b3846dc5d77bcece52c33ca6a5b0d1b0c56dc032b67eb2a1216cade13158cb4bdc77ad818ead1bee9bb8e57f747b0e821c26b46a9727a91e8e56e0c6474432198d37285cc1480db036d502b8bb1d2fcd3c5f992f3c2a750d1ea425cd929e43244685ff9b5fb77febdfbf8bf66ef2785b044ce68f32e2d274ce5b1d64ae0e1ef0a6010e94ad6c701a8f8ef10f46e9bd7c9353a81382ff5f43515b857bc97ee9cb022952116c296b63a72edd9151183a233807dd2604416e6486f154783bd2126e0950e0b771ad2aa78ac9f2df629745c9cade491541da49d729d4bbdd06853f913a8853f993ecd465475e47fd9412b9879881c5e4b6548c8e1cdaa8cae4666a1425f8005b7776d3ba54cca588e169af4066d65a0f7b485785697be3bc8ed8b51ccc5c112d80c57081be7224b4579566bbacae8039886c03354d2fbb227abcb3afe21f05efd98d826a44b5cf1b7d27e2555579abba08c2510aca8c9d0848f60f96e28bfaac044a45a13c7dac5128ebd2f93ca9eee15cbe404d62f1f2cbcfad353c8866d22a1f505f224ca0f9330d98bd59aa6d4e8f876252113a59a1122a36a3aa5f3035d48cb2bb0f59fe0caab99ffd0f359009d0e74caea00a7c880628e772c061488ea68614ceb624c6e89892622806db05421f8b65c77d1767caebcf08aaaa747243d24e59a5837ff4d4204cee5ae9210c9d43d622639ad62f06d3d37ec874885c585655a7c7c6562a0531117c5d85a2c5cd4eb7818e41551031e300416f030368c7e3893d94efa222f1c17caae67b25f349480f259107ce6faf4c23a9bb542309d2be643e71ebc03a38f20d743bb22748a7e770d6e67ba25a87bf8f5842871cc2782ab2ee36e6909bacbed30596e8cc4339c3ee8da139cc2aeb380f48ea13001673f05c64ad40113d97358a66c95c5179d89a7c585380f79bd216a1ae7ee02b7264a0ae7dd3fc5d512dba5aafc5f1606858de1f4e3bcd22e007760fb32f822f68060dddc3a01486da8441551e4b380d6c9c46e0359bddea2c25b11710f56cc30ca0cc40192facb9382a409bd902284fcd3a33e142f52dfe222379bf524723491cb1e81b48ed3a5a4b55ae08f7df83a593fb76c96cdd556ca6e0157dfcd7e88ab98f04eeb3ae15d3c0ae1e2c69b080d70b424e67031300d084c004a86c1f1248375812f5f92011602f5af0abcaf6c55f880d69908a13129f477069ef5cc8aaa74473ea0a9a9aafd36695975ac4aa4e0076086373c82fa069b81bfb3845aed62490e2e3cd240ffd66e88e4f89350f59be0bc7389b530565358830225452f16cbf568c018741845861e7bb43dd99ecbc432fa62e31189a0ee589f9ed222f236fb5d700e0be0c808d00061249980dfc89bdf37d616f379d3afeb1398df52e7fe2a46bef14ad100e6e18be3dfb4f1ea3daa77a72c906345a0faef2cea8f6f5f4123f3f4fc8711621f120750695b831bf6207b66bd01084262e0ca9e4455c027ad54b13e302a7d033b493d47ff42f2ffc11786f1967827943d23253e6d06500d2ef87f45844b10024fbec4fbe7c7934279a5c5e54f5a4a5137e8cacd47095d0ce36ee3464bd01fb738b7919672211840d2c154c4807da277eb5d849b60e85acf1bb5e72355a387877e670acc8ef756c744eebeb0f21c30ea91f02dd7d967b3292ca12ec66b00c7b389eb3695ceede4df2606aff8e43f87a45a706023e7eb5412e05265178f5a292712d7c46cf65c624aaa180e03ef01fc0456a74e4cfce683a6a53812ff974f266face08a591de1b5183e9a32cdb190d3a5631a7f976ad5d2e8f00a842e55f704e7a7aeccf672d0c0b2442f9982a3fad5e4d0e39cf3af19758fc2d5b069b96d1dabd25bba233388ce90ffc47deb6a67e5099160037ffc5f45acc754f79b9229b520995f733a04d19ab47148eeb54e80be79eaff14d02c89fef4a1f9b14fd54868b1924b690f344d1810ceca4a1a582264aaa8134cc8e05d23140dedb087a1d91cab796b7019fd2a99aa16a79bb9724ad568b45e76e829da69326a808cd33ce05c52847337fb1100303a1a04f833de0bd67af1470cca40cf105bef599909fc1e2da537448b43990468daf24fde4bea47d6b69545a5078594983f1cf7b759b8b95fe0fe292be47234e224bedb3dda0067f23aa75bc1984fa50da1cf12be84420d8b0a13d508f37da7b7a4b2d2eb30c06e6ba39e74305661047a9243f862cc4fc627cd4fc0c58d505a451649821b22d37cce3bcce00641a3873ec5737a57d4b443e0307f2e8c52f1e4c5acd1ecd13f730ba20c517700159d24b43ed1fcf356d8e6e7225f25569d41dceb30f01ef45f55b0cd1b4f7336628299ca604cea8df719d756b360b64be9ce68744ba179bad91f3d84945d6ebdf7f2de82d060f78bd69b352fc80537656cfb22752cde54920288a08fddba2bc574e32737d451927b0d0af5932cf63052005b5889bb8396df054e7d9ebceee2acc6fa41efc4b69179b01a266dd4d3991ebb7b8ce79de9ecc89b5308b643434d1d0675f0d9d510431afad5fb6305fbd0ea5c0010e0cd7aa64a6eadee072eead6025285d652a072c1911e79a43a73a36b0b233f04257d857b3a9f1c9519e9578606529d72092985502e34c5bea0452cda2da7504782164dc199b945474db982111bde7e60c1cd1e1f4dc228acf2501a5aa576834cd562a1178929055c696a39b296bf149ce9477252095330b8f145967e4893e44f02db53a4243f6cb1e8a7943fb2f19033fa1f662ed733241980fad4a4f1064ea257e92165ae5c1db4fb640e8916c73cd2a99ffa890009e44735e0fe1bf4273753b33fe7f85788c1450fce17419f92be21226f012307849d1fc2737cc75422a797d4493ec782ccdde6f7a49fef0ee638b30cc70a12ef43e1bb309b192fcc05c63bdaf08ea42b0c97ea7252a1259e931a19db6d4dd18096a056bf3e917cda4f2ae409f0707eac885cd4e76165e63090bca310c9097a9ee1c5de431a35a8a52e3219cfaacada86d04d0d04a6710cb044d6e62c431dd917ed019ea36ed6ab4587367149d46ab6b561162d42612f3f9138a7bc7875fc95792dfea046ddfb3771529ce9e7ff59c3e50014054654e88e21ec351c0ed374e6b0a86bc60d1c71eed5d136e4410f4a9931634fe47a7be820699ddadfd4e1b76d9fce7f30dbbee4c41bd0bb57ea3fc0cd803fb21d2a280158eca40658d770302fbc4134e950b5ffa4dce79374b0fa9cfab73ea7bbea61e9919066760199eaf8ba630b4b751f389d942e7acb3626b6775f2ab8a5580fa514e3b9a9e9a5da2f738e42155725c19400165d1ab188313cf8f0068ee4006398fb6b89e5dff8e1157d9a6dc8a72cc0836c83a1c1748e2cdefaea4899425c9c21afbe8ea5ad65789ce5b7988e6dc9b7968e2c09ca856ab179e400001532f717d696669925355ab6e642f54163f963682ce5f876930153de387eb194e9021aa5a762efba14c6775a787dfad2eac0f4fe2b239aba5ce0ba5da240c411a85297b3659f482ea45ce1b50976d6b310846bd475f7ca61efd31a39811ba6571cb60a8124ffc05ee6ea66c43ec0e365c5d7e1cd42bcb197bce862b70f767e325662e195b89092d65ac78cadd7de3a10a5b0f93d09fb388b120dfa4e08d5a180b5ea06aa1f999922ce3ccf4725ed952ad1186800e72315acb1385e3ee90c46e92fd5d690e01e299b8024b956fa13422a3034555b92f84eddece0cc24a0253aa560ede0bf253bd08880499a8976f05b33cf9aa37215c9bb666a897f9ee51fd88e9ea94cc55046ee3e9884baf2ad4936cdafb671e4d0440bd040557bb1c60884dee7245aa15932e449f300fb825e2889a115504fa88a92916f67ccb822926471e30b17ba40b232c5361f4f8ec83156f272824842050b86e3c49d23e1101d8796a1e2ce4a9deeacd49a7882c6b918f3615488f1acdb209cb96c1df0e486dc2972b54c0ebb546960b32569467b9b7b30516e5012724ad047a115a8a9bfaeefb9237b16abaccc1d3585c952c631dd6f0447bcf0f6dac03475ecc516f6414744094ca67ae0eb7b3ef36cc2df8696e9e9739c155b528397d847ff84acc0df45e30dcd3a35f1c6ceb564112590eace90832ab752f0491392b99682d6c1fd3610dca8400a01f414226df214e08c58dfdff942318bf16ea216ef293e6a899c907b98ca3aac5c9239641669023287dd130a89a4b1fa837d833d30f5ea9476332c12eb573d0c1b364094f0c7ab466162e1178fb3ba2c4d6026298980989233e9da2808f58a34a790486b04432a5e8f509b4543042056e966e0aaaf1e80620fa08d53c833d4836a7b5dd53704f1778d64ac90524d36595b377ea130b95a9269a70d5abce07c05ce5b8b9821af123d7fcb6ab45298e2bd54004595038fd795ce29061e98768934d0ff4623aa2fb1d2500d8b0343f5bac7324f4a2fa2681972941ff174463cdf06a8180f17d748799885c6f3e441a831ab6816e34568910415d56d1827038d52c42c91a0c3f3a52a9f8db88a688ab71a3e07ca4c9e44ebcbe4292aa88996565b2e38ad700eb87ae0cdac4b0660a41bc197cb6e39a3d52cff50383e0963c1da3a46b8153e9162224eca69ea32ac348aa921af540deb78f27c2453017392a98ac2d7595589c11a6c5140de9b0033bae5b7c2ef613db949176f9e548b394fe3d3f4cff42257c8dde70869cb604980ac4dc693490ae5e357cf05613035607da1c836a7b737554077371caf27c45a70fac686748f83043771e831a05dbf18c418058a3065f0431e56ae461fbd32312a3876183209cbb44707c1fd11802dd7c8a21749a7838e212079b94b87ad6b03e4e583088b09573de76378b66803ab395a29d9758a1b29c16415fd4d4fbd139994979978ea3fdb8b968f4076d8ab59934eed2dd476e7ebde578b360d814cbf5acc09be5a9a52cba9ea8c93297396e12c84956411ab24afac228a303be0da5ba138f5259cd8e02393f7f83f8c9cb1a164dadefcd7a3ff403348806e682c1a642ccd82e06ce49b5abd6913ea6dee24f3df5cb951ee4da6a6d3e21dedabadaa831adb1757d153855f9512001c177c428b6882f5f1efadfb5a547f5567e4abee57f56af891dcc7866b4a53a235928eb593e8f1dd111d9bfe0fcabf32df418709df5d500b79ec3de905b55820f85b28925a5babc2c796215e78c800383f0ca584831bb19451869a0beafc195b9c296aa35933a706f5ef1824ada7ce6bd275e6500206054f0c026ee07ded3ec4ec214e3128ef1401cfe30c521dbf03f0c117aad7fd99a9a02956992e13b927c29a0d1c85aa4717ac32ed337c5294046298e5cbd2c9a908ebbc349189b8a1ddb27c9e08bdfa028a9eef1c4c03a592973878c876af61846f3b245cc872745392303a6fe4f60dd95581bc9129c1037405ee6c38a1eef8d976b8af5c57241911f554e2e101a4c348646b5ee35b68536a5803c4522ca91a72340a7042f4e598fa55288181ef1932f0704fe9115a59f14022945578cb5325b41042a5ef43363e2d66cf041d3cb02dfaba34974243ce9a40482f57038fcf488da3cd7ef2d4f67b91723bdbe3fba064d36bb8455f6697de501f10475a22fc9824a67d70f4eaf529cd460a69a2283c3a2438128d10e45f37dc63f2795f86a8cd4b71c4efaf1f09959ae95d34fbecd6a7c3bdb4260262ad554ca259de56c7d910c78e5136a869171f32dd7b05445e767846f9ed6a356b4ab65c8c4f21c282e89d153e6e1371448ae8a12553f2a9704b57944325a3537bd1cd74b986398bcff6a09d4fd963554512a033501c8bd47d6752abe452e3111cc2f322079fd72e057a5f311f1fb511bf88fac3b217ae587b1d90972a742bcd7586faa36caf32da82a528a7bc00bec09038308740586665f6df7b74534fef00a5cb4cf54a4b5e85989159439f0ae4f89eaec6747d72938b39ccd8de2e22d8a76fe3ecbdade1a08ac7b0385a87be17868902128c6ed87f72d59640a6ab2fa16c654fda82fe5ea51e79e818becde8b3cfadf81e4f2995a01b4fdd1a4b0f14468b86c56035f7d8390cc8d27e6579069b913ce7381acbdcc303b5137e7cf95a37e9a496ff3f0ea50af511bc266f2066c3f82cae56fb8e071281681a5412ee462e85ca214f3a3b9eea8a924481b287fbbeb3cecfb0115c413d2811114a835e29148d27627c13e3af5aaadd540719e144172de3416bb8e8122c1f0ada06bb8457b4bc91312a40f3d550851a0c9243a936761cb31fd5ef50b8cfce3bfec1b7157329c7eb7c27168b508630857ad29305830f23088f5a6a5df963e72a8b34dc20e11f546b5eab38a3896e07ed58265e418b944fa8dd79749e8155ec79fcee688f12cb02eddb780bd66955e33bae92f54785edf83424e20465ecfb50a58eb051caa924387eb6490e5a2281de21a7b7de0918a80345468b8b1ed0ace0dd17000537cf4dd50c34418827651064ff2984c405a2cbf2d1b9d61ca2ad8d114534388f4237021c95134864197aad802ca9407247a78dd305113edbc537b28f39dbd2ef897262b7f464db6f919bf0b6010e4d52f9bf00f86ec1d57662aaea112b871a97acac56ea2125534b059ee31c1c64a0264c80a38fcc316d143c63e6e738ee33d85097038528e7fd1f578245a1714a589ebda9f27ca881e40d313b3ce8490714084a0944c23721959882b3c5cd21c1e794971fdd08db3f9a15447e834c785aa51e2b93bcd0c8785c17e82a6b4cf74a506d05bf11bf3ee1ba63c2e2ecf250d25997bc2c3abba39b13bdbe5168ac0fcf3b382f75cdb15979f2090de6da9e57eb8c14de51dddc0c8fde27bf74aaa8acec9ef3761e6e0e0d315c7dda52b0b8f5a41435a1111043687853a577f0bb477e14bba23c747c30b5b3cdd475ff7d9250a73399440e63d9d77831f5a8633fec13d480db912e07c44c88efe5520cf004d6f0292afa071d190aeacf2377696fb2ed97a306733d3208986666a024f4402292b8ea7e5a8c72a429120e92061e2eb59a3198afac4c025a574bab4c9cf253c7eba4b8f58f125d9a95b45b1f1782fa74d6c2f8e6317144fe8c686130dc2cf49c4af909dcb7abe519fc9550144a7bade255925c967bc627906c8a7cc9f95be5753cfa13307e91acc55421b2cd1aaf6ea84d5ee43bd2b50f174cbbad9c64b6eabfaa9a0780945f5fe1997c7fea96100c6593696b90b6b1c5b65cb2d2ad3143975c8e6ed72c0a08171543bca060fcc8b270eb26f90abbf24b514c1be74c3194f037eec6c474880299a4825b8afce038dd5d868a4e645722a4dce24a7ade1ed6477ae79f5c750a21d3d70d14150b916dd2be05e5dceaf1dbd7972712703206f89f18e845ae0dcfedaf6866cec028de9947a9236c2597f63c9e000a5877cddd08bb516f96f482d27351bb6e1ad0f2067799bb2df0217841cad80837e7023e33b2749e9839902d840dd452b59fd2356bc455cb5e8c07895e688b220b40173248ae4df89e1ac08b7d22de4b1867e56a5d5f45cee58212aff38dcbf062c706a5fa5e4d7bfa166c986c4a752e0b31d557e9dede88e449a2c7c622a7c8a056f2abe6e1fc671014125f464d3ea941029f1b7309e545df25e959e26b4c2c84ac4e1de4edae99283d96ad1a6f702366ab367e54693948459b72b2bda8768c1305763edd370632e105074196249e3c6ab1241fb1d52df5db8a1784b44acbc399ad6e4ac659fb34f9db9d31fc9ca45383f03adbbf055009ddc11c324ece522cfcd76e631b2be65e16fed13de168c882a5fd6d8db33c99e43789ae9a35dcc72e42497209f805c9d00ec4ebf8ddebb274842edf5346efe27bd428a6b8a969f53ac34ff96964fac5bf46303a9803a24169f246222012b2271ca61c8067c9f74d614b33aad0bd5445640051dfa086eef7721908d6055cf098d5dba63d9c6c36e66b8c9a9cc95f78b64b7305d6f491a4ddfbb8d71bb0949a19bf5edf4768fc6d27d232bb581602c7f1882835f71602261976413863657a8328d25cc63bcc20e8188f9c528d5c4a27d97f3c5656740501b0d34271bb4b078004df250376852d9cea6c2c691efc90a483101f7e9f9bf8ccefb1fe3844da00455082a449c2559fa967993b6e9277f60070bf97b1940fa4821f389d592d4526a97d5c3d3320c27c66a86d4641de66524ef2221fa1800977b415936079c52fd3c21394f3aa7059e8eeacd241578511ba53488dbb113183c8903e200ae5bc402f0c5f21866a5fbbea8e2973e2afd0a1eb06dddab0a18f43241248dd508c00ba24198e37d12eb1852e2f5c3463de7a141beca0a6994f18caa31171b72a5ceebd7255fe8b5cd5fa91ea92f1605424b33744b74a2ceddb3b30a5c78ab36a628f6870200a7911a76249832749425140487d4c1ce4d25aa6b6e1a8e6f1b17eddfb1a9bf05d1a7606d6ad7baa7ff281a6dc9e644aa1fea6ad07323611d65fee48dd3c67fed5970956e0468ddca204b3d835207dfe9c2b4f04f80df2916f3b9b4ee7fa2ef4e65cba8f1fa6c1430a0a01edb3461787d02512ac6fe7ae659b1d680bb982ae9e60aa67665c42e77751887fc4001315797aca3ccf499089aa3bf8286d132bd902d01fa3966c98c83e644929a43ceefbc0d266d3876b1f36f382f6877b7ae1eee184de4d106b7ba550825de821056552e93b416a37da418469758c046521a76ef7f44061ae1d0fec281ddc6ebde769b660343f000887d3bbf7ffe701803565c0b44cbacd7a7dad6c12c4928a78d74cbd5d3fc6d3cc7b40b70652937cfc2111725077b0c293c154aa6ca7705c91760713252053df9e166201293d55c6222231b48c265d254685306b046afc1b28282dbce68ae63bf624d010b08059a0a13cfd8cd92aae784c65992da7a4c92584104ee8e33de1bc18f2141896115e3e6d644533b81218aeec0e20cac0f57639f9f706ab1ecd3c09eafe319a1a38f1c398f3aa2a3b63e41f8952bb8bd673e5cf18ba12c87df53945d61f20c836d5842889086738e0a0a70deef1675be48521e4f5128ed47bc2d49ae08d3e8ac57df23c2847297aa1ad231a40dfbd4b1965c56e67c2e803464700b00c01a8d8331bb3a589d0aa3f6468c487d00fe7961d6a403d7601a53ddaea74f0963e7ee9d3acc0aeffde8838a46e50ea45c3c7d5e8466d2b76dcc36ef57b898772f5b814953baefc61eb4de21888ea3f1a9070d18b04bff62a63270c9c693ab1887382b28cb2f575ea31297124f7ea0350cbd0fb3101cf7e2faf0b1b7901e4af1ace6f00ed946eb80ed18cdd535d1664058f191d7fb86a29883fd1db2026957c75c01ea36303c4af386d9db206081028591236a659119f7c69774e28e33078be49beca2c28629287a44ceba3107cf0e53fa87eb99f4e1a17fd12986f0d5df2c720e33c6956d732b9125964222f92867d7cc0b55d22f6bb0d84ecf977592c1521e5c3f6b3b5ef62fd47eb4dac696f7fb42974dbe8e02774edf540770d9877944b264a57e156665d439351da121baff1858405dff676d8087035ebb3af158ea59b20757a6437a1720c3772223cf93596ce2fc8ff34a0d3528b33ffc35418657fe5798018ae4d13804e351626ccbb9e96da464a4aed072481e04915635dcc5385e5238cc83ec3431ff7a45257ef33ed16efc2d5af32846da97b41cb852a2a2ae65f4d94da2716693665abcf933b78b7f9a71536542e81190e1425ccd44581c00192cb0740eec1f0474f0d6f2fd295b6d6c764ba26d1799c76be8b2f9299aa3a5d811d7811a7b40eddb72d0ced8602af1b1c6c8292bd730e720e4cf04e499d06c95f8f0a335a53a6a3033501daa6cd6b7210f1114d285ffb45dfb233129de7a5ee19cd4d1fd407463959c8e3ed429c6d31620286ad46e988fd4987b1ff311573a4e692ace95ffb33195c54f16ff919aa42958500493a8d60bb0043fedbd680e815d01c7c4600f421340c14c515080cecdc0103012cf5120c10b48ea4b4e4fc92e0f4f883888d874dbd2adaefa0fed2fd8484d3b00583d384ac92b3e4b9f49fc42097c8b3e8d8f3ec87bb9c85a21008b20c0cd4e8e7be080cf910be2a91bfa00585a804bbf8fc90860780c897df10ef9e0dd8c0fcbcacd0c08894d295c02aa4afb9dc86d3c3c12ae213d7e9f2fd10c2c32a94c4a8f8b38887d393bf10d3e6c52af5a380d390a487950b85b4a005b9088bc10696c705a4cc06b1d2bcc4ce10c62ad9defcde08010503038290830207090908034f44400408cf080004e0d380ae01b001a6af058002a8b004d0aab103a00340201c1814100c08041028ac0610b202f0342c2830ae0701b0043ce03090c0f001a0d038b008030b87900584fe08b404d0d0b0eb23acdce3fdffd29880d3aaacd4adccd8bcdbe98881d392f898c4a4cdb4d1f62aeca488b18005b80894aef003f9ff0c20038b820a9508089d0607a30706aa05b0b6bec6d1dc04c632a7129805c48acb8ad105d608de11ef808b068888860c9213a509ae15c30dfd14f4e08110101010100bb5220b940e01029c9b0bb8a80200bd13e0d09b04fc0f04088b9cac099c9cb5c641e806ee0dfb9cff08879d1ad0dcd22a8cfcd290ecec96a5acea23b7dc8d8ddec9ade4038c070102959c03ac02020302b11101010201c2122085d7d7d7d7d5d5c52ae6a080a32adfa221aa2bbf20f8bbd2e129cb29983104dcdcdcdcdcdcdce0b00482e401c0c0bd8e32e802b8fa853222ca8379a812a4770ee26302a294920a19a4644464ca0392b008512118852008c32008620831841062044440848610830831d21896a403ea05c3fa865b4e123ec4f4f5bc5794fba537600f9e16aeb5d786ead48762a7da1e13898376209ea6ec3d4351b69a7f99bce7b7d0ffd157656116900775af4b3a1b68cb16b068910c182cb4f648365b042bd936c13f5f8cfa5737841aecadd74f077e98641afe032b39a2f63a38ccd00a2f87f2ae330c5c44e02d32ce748bd36beab2878afb0c1b44bf6131ba41152738d9a51a339b4f5c708f2ba9f96a4753a63a90fdcbede625ed4d18877a152562c430945b456c4dc5b51c87d88932475b8bf9e0dad2c8489335cfb4e2b5c8678e2e95930d7fc92ea3d5c97b666eda7fafb120400ba738762df78d7f51227eb2f42d73f685f9df81e14bd619e08eb2e7256e08e45ac01e2e2f70c8c01353d5895b63e43045e04878033db5aa657d062592134659f5b1d8122af678872a9da818e0bbe1f364e9b3440557ca6d4c8d7ea22994a793c7c102d4a50b43f06c7d68419d6652faf0dc2beec0793d1f511007000ea1d8d8842cc0e7a3046ef2f44503385993ed233c5f25a8be3379c2cf3139a629faebc9d419a7caf3f38ee2581b4ce73988ebc86cc090de9e86e41d575da15ca423fcb1339fd9b7b1a464a52772917110c8fe9eaa6ed9bbeffd64f85e8aa88d15f79c73c616fc575b4e3dcd78a3e2a666a7074d8bd3da5b660ce144221f6ad247536e94f8dcb280df5e0869ca6efadaee8c21f9d309a8baf46b945b25df864584e619cc795b12be4ade67a0b08354be6c09635facf2f3a29bed9471cd3ba054f6618a31a800219a8edcd2f15898867c6a5f86502e37ae37452a8e0022758142b99c2bc3e826d38b53a0701a417f9121f1fc5cedc7132ac06173753add7ee2c58fee4798422ce851160d7a9c782a43b300509c4cffa6ce2c46df9a6b6968e19bcad9d5d2d0eb4e94c6318f0304be765f5a9285ff783060b80faea8203fea40dd64e8760d0d313d136d99d9584ea7e36a8ab29437dd0c2e319f81768d0c8f44cf0d36f626fa7dc49e61a294c1030dc927dd872d613f20d99f9e055552b08a12a61b752256435c759e21713e1f039e03557f80c948cb98e25a4aabd95d102e31195fa79256dbba9a063a1cc9779e2c93bdc77e79f0fa18deaa5c3693affbf1072a5fb0a20954966ad4e6da5572503fa02f228a77cfa3c78f248f8d24a23339208a3bd50f334e083d7b4349471cd10f56f6707a0e0b45c75a8563231bb66194eddcf45295ce233bf5d5f6f1b37901cb092458d224673081010e0ffe745e578d606205424c40ee10a3080f4196db75fe2d03771f2a0853a20478cad5e0a6290c0b22aa634cb8a95b09d3db4d42087fa87aaf23e56b3a4cc732ea84599b0cb6a7bd195a06eba11a81031056103194431b521bc8a717ed1c3b0039f7f1e61a90a4b785af7245ad17cb2ebd181790d5b1ac3fe66d4521072216011075b6873e668ba531e75111a1e2221b63b2f5874b9cb560cca651b1717210994a7755803c18ac05719719824bce438bc5567051991039f1c7c39f2b304ac64dfcc9e2e540048851137f08f71f7b7a3e8d99f8b3852c2c75ff391397bb9a754a73235aca0b137f9ccdfb90600f33ea680abaab31bdad29824f7c9cb726a64d3df3c3837167bffce737c966808a91ed9d05a4a9a64606a293ec183b774117488a7032443cda44c9991565a1cb4ac94564fb073352685c1fa44fb3f04dbfeefd8c6c9a6aa2bde44c7711a6af58f007a8a1fd0254791e7e5dbce034d4ef7c8f33de6b9c4f2326fe6ce172ac02837ff3582c343364c5989834f5cca59e741e83fad9cb18beee701cdf89ab343f5f1f7f92f9afeb0db05164348d2299779b0ed0d134f5442229d3bf11137f465b0ec040d1a4d51bc9f32ff1e7109b960dd7d1127f72ea9eb5cdb9fca39f8095f8b3e3c73e69eef98702b29b0cd1e334ae22481a03acc49f37fe644cc5841299671091127f762ec57f34d8cc2c92ac461df66da6992e5524a94baf8737cf54beab02e4cdcdc2e8bb0c8593f8433801cdbcfbd9c6bb5476f08676c0af2d15c50484de0b4ee20f916418e75b9d9e4946d5664725323a96545097f887a90f478a1f9ac0ae6db400e14be5221ec38fa113d59a9d4803b24349727a53d1d700d26a9703e7b449fc79c8eb823c458a08a0e325991225ba85b4ea249a9b7e1705485fc899509c3ac0e46da0caf3fcc44b4ef5f75b75e7f7998a36d54c23de576a2193c41f8ee066530620cdf53f739d7638e1706a7c577928541a24879f4bcde2a0b0b9572e16919b3d2b91616f09ae4e0d877c754be2df429d6037509a2f90e42fa47f1227aa7876a436005e2449df956d613e4eb425e87a9964e46c0a446d0056fad536a0741da021b16c95022b2362381af585637bd49fdee43bf02614e875c6538c8797f37dde8a5c2540bbd8077ec3dd0479da52ca94920cce00c200c9007354cfe9b5b43d2d9526594444ddddf52874cca40230135ab6c9767f848fde6fe4f37bf8c73174c63dbb7be4a1d2f433aaf73c0ea8fefe061c7d389dab08dc9e2291b18ce5a57d81fa18fa26e52dba6f5858b5eced5c7f4d3efe1adc490bcc8be7912da01af733cf12cc52b718d10d0c23910f315d93308d69e4a6ee1ce8e0ece9eb76abd3d717b713f4763d1c9c1e32ba2b5d54f5caa35e6c4b8fac7555ac56abd56ab55aafd7a424b26ad5e98440da1e865541250939321ac22d1dc0ada1f56e159188957baf9b9ac231152d0324095309516656094dae73439dcbf9b9879e9b28c6366dbed6fbffbff6d7d9b71618207016181c20bcf46b7292f4b37f56feba1db2af7cd69fbdac8626b3c95c36537abf9f2cc92414c6640b994cc8b8f85e67737e5db7a1b51c7f1062d6d924edbde7fd8563641203638dd0755dcea15f026eef1479c3aef7d3777397a9bbf8ba76fd8563a407486e3e6be12dbc75dfd74feb7bff3f43d0a77948e377ed1439922369375e617189e1ee94277098183a00afe5203a5269000abdb654a11f95c6e3051f9e4a9bbe14605ac345b54f86a21fe682cc623e8afdd9a8763309eb68b0a9efa0b12e4492e6e26ed4d8d4efa7bc930bf413cad0107548eee4662a995096a855f42a1aa58c66299f0adba0a16f09fed0dc69fef4664e13a819f467e952738679a74d1bdab9b900a71f6ce2a27e818bf59b1b12c50a6c79c7a14b7dfa59aaf47b8cec4d1be9f5ff8c79decf2884afab5189098a0a8b0b8c8cbd9501c90d8e0e8f0f901091de935b4ecab2529af499b4b2fbdac90d5136d550cca7c6b610516e0f9ad3587aaba42ba10171db450c23e9d51bf45d316000c303069cc20d30dbb7344e688e8051e8a80fc07bdf512fdf4d4b7b8ebba03156e6f0bbf9bb9499331fdefe7a7dfdd90daaf094f9e61492427d67d559c41feaecc2f685632440525ed24bba69b3e471437a73e7e3f9d47d3ce4de5ebe3dcf0df975728cf4497956f624402021f337030406089c7d3fbbf74c5b963eb9c80038a6bd3b75fd9cbe4c07d074fc84e381678df502d0ba5a37d5533a5fa0eab079070cff698c5267213c93ef33b39ce6d49ab05e84c00684b6a803a8c5b0a490d6f3c50850502c180a267a10438c511051eb0333a1a2e04590061990623088c138c418820c51841042049088c8088d347a42e0e222e6ab720f82cf1b8c4d50a1cfe099a7f1f448d63ebd4db711466f49f3f6454538303bb23631cf2e250bab2d711a06d39fa3b52e9f310a315bddc8f6419d10d6fb350be12ecddcc21fb9179e998ab87924ff15f5977ce6e82e9f2dbf25cc5e5e6a065ee193e108b4eea8dea927ab2a9347d7777a7a0f6339d1ddf38e10e7f249c621d112142a8e553f592900a104d59fd0bf7731805eabeaee7ca701d05b0041f6d3635beeed18e39140c42f0ea305d6a7e0ad99f80da0aa0a76c1e764a4621c4f262337dfaa5b5f76c24a859dfa8506a4d52c7c8ae9ab62527de80cc6fec79ebd9719173b910978d417bc832334db35b1af5b724331c42d29aa0a51c1437f39b5e8f7b6ba22bc51ab6b1055216aa127ed18a5a1d402196491aec2a030716d1cc3bf63447ac55176ae066eb4a5f235b6fa19c2337183c6ab420f6bca8693476f0d9768d4ff5cfc89728da00fbf9fb249f4491dbbb2349148a3cb9e51e6e513cf548a1b147a8fb1cba0d4c2755b30a9e20b75921801ac89b714620dd8323896a4f4d6f837eaab8d4e7760e6eac37348fab6dbd41f33e5978dffca6ae64c517dcb5994c5c6866fca58f4d23e143bd4b4b996ae9dd8e7589d2d882624b80d2e71becb969f278267961ebfb2d608d8bfd6c9ffdca78fe1dca95e51eb96c96d670095157e05335f0c651fb82e4f61c0c19c7b74cd2626783b2365fe43992b70ace93df4a2bfd2860e0b5f2c4995479baa32f6054ebfbd0afaa38dd71a37137f0508274baffcbed17da43a961b39c0c0415801da2dd0f446a4cdfdb6734085107184599ad13d7f269ea01248fad1a939d03e8258ca9cab2803faa08ef5a1277785fb75465f44fe7d44fb84b5e4dbb7d33932efb75b2e9902d262e1e40d4d89d1846e1d3c94eef27261cf919957fe7a0ef71ab03403e1d847e9e432606c8faea0e3a8f41e4a03a4cd5c62bfc1617899f1f8cea3da389b01b5c3c9ec4610a3c59b23f1b85a0fc4b42f4277e0682ac4f1d2301dd0d3cefe2c3e09b95254a9bb8a4b9c62aa3af7817a2244c694526bbc8606a4cbab0cd0e3de5dd4b75caaa9278c41668428b756721f774264bfae4c38efef150de83d5a3874a154736aa92c890c205e14d82d81b006b00cce12286b40834c2a896b4eaeaefd2c77d4021eb11cce682e350afc8071b1adfd338eb61d8eb7abc2a0ea39bccbbd8021ff6e505cca55fb6166bd04e87b310d160a4254c347269b29f4f1e23e0d921a0a7bbb21333f916f82b1d2bca2f1aec27b8de39404cd72e7da938b795854063335ca5bc5eb53e426d74bf1a1e5075d7258078654d0686e816946856405d02d1985c175a0d0f455bdc57e92b37558d436f0c49fce88799d6ba4b78e30771e416d7591aa58d1ef662512c404642bf01f416cee08400b29fc476d85f17658886048487514211624d6711f93a36732a95d68185135e017e8d05b76510c2c66a9225a1101626d0c001e7533008099438224aa11d5da208de4b78ab322ee98c9da330726d6caf9000c04acd3e61e3a3764f8ee7bb92c104fe9c079ef1f45108c40e888956e873b2734064d389ad464e0914bb2094d5f072173c8838c24c263b8e66c08050d4297a90e6e870b680917e34c6b1509c55b845655f76112966efcf44ccbb9faf18dc7342df1a7ab75940b47771848f45e115077db4eb426cc29dae58e17ebce0a7bcc02b81a0efb0846686e7c174c71e740e170bfac332cc0f15d9740d99d594d0ba23f91b1cf7f8bd9ab7e4fef818f799bd1a67b5fa1e52815b152172b75b1aa8b95ba58983be105c6992caa44b99bc0668434d3c8314460a61224acc0d73e63b48806887ce8fc26faed4cc8ad828edd1a14b255f66bf5e6ddbd752f5c428b7175e583acf3811e7f985156e22c942f7083be823dae4f7d611b5ffe9e43f80fa77b368644038a503c933a4cb0a2335966b3c5e23ce0cbecf9324b205a5e0e5c8556656fa2431bb3a8afc6c7953c2936dc85bf10f8a159964466428c72f46de9df709d9b4649f3919c51e7f82d212709023a78f4e83a5029204808838419248441420c52b963a0bab164422227654ef65067b13e04f299596401a456bafe21e53f9c311ebd5c12e84f586756f6dec2fb70d4d170dbeb7a987062e393f5601210e428af174584610ee8aa35e233d485fc75c68a1cf65257fa3a419fc2617c1bbb235f73b1a2bcdb57f847c0e69a314fec0db93a09f52f3d94a59c94fbc99dde909455545d32b00567c4b2f09d995ff221a98212cf679c065b64f52a79d842bd51374fce38897525e0876d3da4cd63107be0729bd2d4c3acb7670465d2668caa50692a2faab7f59a6325e823600904de00f8596b9f5561560e6a6e86d36beba83081d9d19f5cedda1fc352adaac213e05eda4f805f23ff3a60238adc29ea16f046ab93e965f6085ae8eb8156e8a36143877c8a768175bdb50e81711f61c7f0ff72438c85f4340c8bf26f54fe548089e410f5ed0624c18f20a1a678b6894145b8c12d546f955a964a983c7ea1670f877131e20f3ae3de58a2778aee08f2967ad5d71007f135a2345798c3c1d693da26f06ce58625c9a931e281bb2d08d09a2868bb4531fc57c35399d235a810e804ed4788a0091223f7334445888e6481096f5aaff86f2ccd50344edae39b431c1f83c6c18c48aeaa808332c2505a0255d25e89478d0f5f36abe6688516d288bbd4e097133be19301260ee2a4e02cc6b7b62515706d5bd1f1c58d941e9b2c818343c8688f045cf71c2907c15492a58b13e7ce23fa98bde19632c2d5d6b61e081be4e9741709630dcff0a76a58e63360325f7aba520820402c0254b81cc969432a205a6c7c931f25b7869632f1651995a9d8d55ab2621bdb47a99886e879e3a1c6c25ec31051e31ca5143a53eda7a71b43f5e9dc767b88d2ba221e5d559da22ee2d5f8a119cdaf594f1c6432ae1b509fa96c8a58e81b5c479f95e3a9dc473de2695f8d1d0e8cd29ecfaef4a0043ed2f1a855cd03b205e90d80f3c9181fa4706b407a3f2a3732d6d090cd1c4f4431d1c6a7b6ef9bb52d900d3758ac41f381006771cffe03142e038d1899f371f6e1a7c3c293a59336f42225cdb4a16095d8ae375292f7eeef1705d2d642a01b72e93e6af03891449d9f5532ab4be1f6147a70ff5ce816a4506dc829a2a4581e74460bedc370f3d6f52c4aada19040f9d39f8eeca42c395f58981fbd5d8a9d38dda0e9300f54ee459b3434feb872f5070cd5942232b19c9c993e218af38d44aab0ddb7bfc1ecf643b7fdfec5ffa6c55a5c8b6fe12db60d363f1da8a0738add5cb3d5f461d428b826c25f3184b9c59786899776b2aa909178ec986bac1858795cdef68b60e84907c340380550cb47558073eb5e2f4d54c0d56c0a01934b290ec2c718a6a66e543b667ab5cb98991809155dd65d309506afd2602a0dfe290322b5ab7d62bac63b667edc1de68949ed8c72313c98a83bf54768b4183e49bcda41c335d988000b7f378bd0a126c67df3ab23f28ea7526e8910a138dae78e8a0c478e9d8b884e216fb1e75019afbe3030696bd6f967713e91e0d8095168809cc810519bec491178b8a3d606e60ccf2987f724c6a1fc02416dd446cb11a4c91580b356728dc09cb4a7022a8dc14f59405c913a0761fc378f0d629a80c8e1348963c271a279c564778132cd6e349338e01a6f0b8ce123195f07680a5a7786cd101b513b53c27c187b931847d2fd320961d5a1f59051f1e9dd7f50eb1823b3bf724b29a59452662201e304f904e8044ec81ef4f0de9bad037177070244b5d970be78666087065c880ddc0b8455f3ad197732d870a2cbec1c335fd43d656eea9a1edf6bc25cd3c50f4415bb74ff4923e5ebba26422e3bedd87e2551ca7afcf8c68e7b62b31507b1dd7cb478abdb8248a3232e0f0d2693c9662b320df61fc7a3025fa0d037d17ac1c8fd0ab5cdda4bac5408441aadacaca870ec5b1745f8cffad0547bd67a764829bebd7ff12c6b351c0df47fdeab6b20da4ab34575ea1c91f2f7de4bfa92e9afa7dfe37afcf85e1d72932b96768e83259817fb65f156b7dd786b5cb506852e48099556e9bff73f57094c017521efbff3117936f6454dd12594a75e0f69c25faed8df696d792a4fb357a7c40f640d348d0bda6f7cb5f743ac9b3a733d7cbd7b2db6f6dabdb78f71820fe810e78e1bfe7d40ab4181ff39dda98e1cd5037df0ac945adcc3b7080a64c04ed2fce6373b5ffad1937ef4a68975b61e3a89442a9d48de49852cd14777f9ca5baf9f38f422263efb328bef3c9d4ea91d747a2806683e78920fb41a2be3883b2e1c43d50efa82518fabfb3ff641a4f93840f0331ffc158ad26f06f2ac7c67c6444a7ffa3f89b431616762af416311453729abb5599b0d1df5b4770f15aec4a98367347a97b1f6f0b6bdada6c8484209dbe3a4f119afd138a59a7f0d8dd04611159062c70d2270547a829d60a7581a4e68097df1ae7b7099a0888d7de12c225a87b1a5eb380ce6e279021029ca129d66a3d55822453ff3ee29d8aa8f3efee7cb978956e6f7a19f4dce9bf2965de6a597ff19ffe3b272e62d263a2bdff9dc353ae9b0711c5f9e42f141b765d06d2467f812978e82bb4962869310004e747b061d8c9497b9192813a04abf27394f7eff20f816e7cdf1b5d7e68d459ff5ffff7dd46226446af164b1365bce28d0fa043480cd4af1e4c6d693bef4a747b9cc3f2fff57cf7af1478e6e773de9e393f4babdd79ea8cf59452e3ae7a94c7d7ce5cbb0f4254a73c812df7f2bd79ec253785a9d5a79872d741800cc075fb8ef7f70be0ca66b2f6edac5be4c2835fc409b2e46a0e1367c3e8a031382b08c2398155129d5ca8a2fb2722417f9a85433deb4e39d77deb45dd58ae3c668644975546b0d290e6f08590576e4a04414b1da645c3fe1bc4acc9bf1acb556212b212b2122c6d32b594137ed57aaff120607e9a69e6fdb730e4507d55acfab0d1b291aaf9ae007cc00a42aa09e03be6e436230db98acb8096fbc74f2d1ccd059fbe84cb74de799f1cd08d8a0ece0a4c4d4a241fa87a374724285394422ace83fcdc1b773c80c503e280faa5dfb03ce0f383ff0cc4cb95e0a75a7efde6b9473cab95243c0d00dd531f67a8dc0ab7614d7ee921a741a5bb2b135f605344e7332a075411303cebf75d789647ad8b898584c30b6b8523cf1b5ece7f6cdc48042d7956cf3a70fdbe62c974e6444f38108bce3daecc16cacc8d7e0ef25981717e8e1e3c704340a068c15deb121cd3d8d52515c038f23602cd17978db6038fdde34ed3a0cc6f33e459b7cc56cb57aaddaabbd596f1bfbf03e816842e7d1cef15b91957bf54ddc7321b88d897ff5923951a6f82a42e09b77fad37b6dde004ae9d6beeb5ab0b15d6688fbd2a070c5e629d636c69fa9a13f8e79c98256b77061c366cea09a3ab634d565e79c5abc29b4fbba8e4345c702bc2adb865285ef36deea9097e873f0cdac1e0d01adb552209050a9b79574ddd3f9d67a5a1dd14c157d614669c60e4ebc94191a58c705942ea0840216b4e166ed8c33af6766ee3f9e5bc5d552f7cd3f0175c4236ed58ac57acb1be295fcd19a4910b4a0aec3603c2fe5ae64ce9dd77fcfb929ddb56e6bf7bd1b6f9b14b3cde590009b1df577cb2bb3ae3be3b8ad39bf5dd9c5d58ed635c5e9635f1aaf6cf076837c41be209d3b2b16b330562d58515f5cf00d63ecdfa623a95e0d59ecda62a3428b5d5d6c3a72dccc103872b979191318273178e841ebeca5542f00191318273178e841933181711283871e342828a5b51f4b891822043b070eed8644db078443c70dfdb5e096c1715b9bc03889c1430f1a19db9d62468dcd676753b56e6d0ed6e260ef0d5be7d3964d05d89aa34a54da6eb75e03871e01465b5ef082d5835d8031c618cb40953d4ae987d69a394dab814403b228e3200a0195d94c9dd5bacd0fdd7719bab3b93458c8e061e8c62e0a1b7b85cf970b91abd03c1c41c16853852d745fc0b2bb00295c81ebcc2b36a8914b40c065e40c0e90013c9dce06f40973382255ebeda0434b833efa1386a2508f5a5aa4413a944babb225c32be437ea78489f0cca9c0ce6d0cda46f845b78c422c8855f7984e55790569056101710ac583d17814075d6bb652d812031eeb1636eb972dbd3376e6834d8438e4358864bd0d3ae77a939dce84b06839d0ce6bced69cf25833d5bc682f663413624b223538585401f6c2f47bb9c26584c58f80a773ca00e0bb076666bc94409028e8d9a3e5483f4875293e984c239c4ab4ce28efef0e7b39aa2847174477b34983b3716234b599e61bcaaadfbcab02bc3335c4e416eb298f3b5f3444f9c0d3d4d5ce2120508dd8dd995fbe55468b4002a7ed8b41586ae6add5a126b47f6aeb5564d879bea5a3293d6566ca9d51f78cb6cc2a2c63308972881649b3c3116f1885d2f9c4d98e689ef0774a92889309ed69a586b83cc82ccbe2050d0e1f820be0e07ee3a1a0094cd9c99a33453ab099dba4e0b5adc75188ce769342929d67e74daafc62aac92160bf77b83711283871e34320290372948d49273ed2e25b9a50291844624cc71241c092a15ae30875ba3cb72391f2dda23fab3b5c88848366d8d455b5f3e5b5b3a5b7397232262b178dba275342e36381a38b71ce7716be12d8b328875a88559e3c8648e8efe88c045601ef7886cc2a2fee0528b2c58cb5247058c4025b11a3952900e821f900d5991b618639cbffb80ac6b0b8b78c4ae57a6b25bded95dc19fcb8ef6656196c4f9f3a7398f06318e59c83cc396cc6dad65dadbb62d6b19101990959cb5a9044ed8340500a114c8f687e2f7f4e64add364e73dff70714219d6a87363ede4e05678227e0b2da4b708d8bfb09170a9fb707dd0579e6869e4051315d502ee23cd401785c078bd06cd26599ef82f20457716c32caa943f1be13b860a3331a013036b8440ad5db5bce70991e4dc8baad448feadd1fda8a972ef359e8c48291b198259316d8c6da272e64b158386d657f1bf9032548b75fdb6e6cea9c4e2951c85aa158b0963892af0b8bc56ee9e545a94410ccc5213fb2d1a676366fe3b1d50d5dd0155d7a2340c9b2258e2e182c850a55ac71442a99ae6703ddcd759e1ae9e4c64b257a88c06bf80b5c23a19d58c1a66cb5ced81542e1c0e286112512fd8be28c525114411804cad8756355ffbba690e974430b62fb1e8c81b83210d726038161bc3b41bce05e0ff040e20810749270168c617c8139c17466c7f36668344e9c3816016ce7c2ee4535725724de883bc9c8a55ec6ebbaaf4ba244b1950ac7cdb3c8475524d6968bf786a27a558eba204f0d09ad3905ec558f7ef6bad9067fc9a2640a5470214644ba8b6749c9d98ab465a9686ffe93567bb14577da43d93cb8a76b7e13365fd3e528985898e36c5d5ab8c0608cc685d722634373b4da8bf3a637cba5131921296161b974222324252cfeb267b7a9c8ae23db92ec5bb2f1c808f6b0ce7a7eb383339383f18b3f6e0cfea705c76d7ce94446484a58b4b858384bc765f286648484e338232e2d5cd42ee1a5c302b4803a910829346d7e85a243340d0bf4e3d0ce830f6281e94c444c1e1411e13cce7f75f1cb65aa2e9375b9705cc9e5e40c1d1273e6208072f015adffe3e4ce45bff87aab94d65aad9e3cc43889517aa1a66aaaa7583551d3a4278a12532e72ce59e79c9fd5cc816ac22afef857399deaa9e0a52b3446495a52199dd91ca468485394455735168bc9487892ee24e90c8bfd8b84df4435bd0cdcc41ac1c18404fc2888645ecc41cb6e3475a9610d698a865465b56b2d436b8d2621d93d94705575a961bedc50513295354dd1d0a6720d6bf8957e47fc5a5474815e9f582dc94033589929a59492f22c4dd234cdd344654b5732681b55127d55cee503f3256f6df54bbff44b6b5267fd52f0c9a926d7909cc1a4a4c48123e7ebafe0596b2a822e200dca540482fccefc26677632e6061c727801001d76d0dfc91965e368d0f273fecb657035cc72de2e305a5372b94183f1ba8e26212931711397bd4bd65a7b5eb6d175188ce7693423d9fb5152c25df4ef8dc57cec51ab536cd84849d1683c0f93b7890bdc652ab61609d89a56cd076db177dadb2d5a684f83212961e142b7d0da85f67e7054b7e590c366a2f5f532f718c082ddb49216d3ad88e2c9f0ab30c28f4a9c3f8276006fc29b7003d7c19014c6c2e54e99bfecc9dfbdf7daebc938e62bf796a75ead5849caf4de704befcd054ee9bdb5d059ef2d7b2cf2ca57be5a95be1aab054938c4a3eb2b914c275414b10f280aad562b1c944c364aa8699e72ce9bae75ab0300582f527f4abde94d6559723a29ce9f1ea562c5febb2fc7c1e80407f47d38e62c177d8503d1475528b252a9940a83180c2276d6e455dab356f0a14509ddcd780d40f7853b1085078e1277f07e67e636a11b46dd2776c7b89b074ec787afd25c882ba371630609fc006f046ff9ec0657d2d8e48ced75e2d924cc7c14328c8c006c4a0e0797b2d9b56ead88b59dbd5cf0e962b270b8cee658b02c31589aaaa51e948f1f9cfce1317742f5f3d800041ac1def360bdef1a5f30b27e6fbae10ab3b0780352699350fbb46993c91404f5a6307cf1878f998fff46484a58b47081b9e108138bd7782485be9ab5de4577ddd7855df2c66ea9fdfbc1f1c16d6e5f2c59934a241f231c924ad27ddd1bbbe4954d179d65233ba1fcd16814a4745bef52b9056ab884ea43d34a8d0ccf0a8c15b48f8209aa8755d0c100c384a7a91ec687b528b8eb6c68bbd5253791119212162d5c60ac67b385d1828ea4bbc1ac85ce60587e4ad05a6baf35c9507142ceeaeeed62f18ddbfb62c9a45bb2a4300cc30c0aefbda40fbf55c22009f3e24463f266703aef79905eefde8b83d1468f98ac3aef6de60c0245e1b9a27b57b8eb307b7a9cb7f128fb55c908f63aec7d3773bd7cfc78138703fac7432e0241ffdce3201f652b52e64d771c9b377d798bc6eddded8a3d3ccef088f15871b5d8628bc3f03f15878511cbf1be5c20cc5718af5aafd04751da5ccf5b3ece8befd5375f9c3578abdbd5197b2ec6f87a8278827c2a0f32f8b6692e0a7dc0423c423c423ea290872e542648f1aa6910b572fe0fa98245596050515a8570c306a4bbbb97eeeeeeef9ec2b1712314720d0d1c15b4ce9935e34a2ba59452eaee9abbe69a86712aa4ea78beddeb42967f28b59e57a7eea2d1c6fd7a3e3df7ebdeb495aa902aa44ab9ad18dd60082972c2db210c96ecda5fd3b4faf6eb6b9aefcddaab59364a142894a676a0dc98f8f50aaedf16d880445dfc96c8915cace4b8fd23e6486ee330ad628b949fe099dfb8791f8bd8b16115978a4b05a62f7e55adb5567b792ecc5e8a8d2d578104cd83f04af823b8a3fe31989a69d76d9503282861a7771c613349cc1b3768d09831e3e4e4c507c5682bf9e5cb7e66532d17ab8fadaed64be54a8ee46625d4e9622deeecb14d749223cbb29489254772244772d5a997ac194ae4903ae2ffffe87ac128a985614ab562bdf8a527b57c146d00be3ce5285fb94a14554495d1e737415ff981899978ebb6b9df96b92f7477758bd83d7237c9b575082252131842a97ee9e4cb9cfcf26324d2c7542a9593df84c7c926382a2a75c74637d7342e68bf8b308287ae9e57b7ae5ead777b7daf850acb16a5f0dc3c7c80cba9f3a8cd144dd22c4dd344d9cc9b9ef4a92278b8123d4832541991840f7d9da477de38cde99df5864b95f4a4ebd94fa53e55439bb2d6da273d697edfb738338f8be097208e9c214739372bbd69763e2b1b928b712527fbd26a7f512b928ddf7a18c51a85da6c79d37932e00194e65009fd44f366783e048501d538d1611a74762c9d1f4a113a6a3b6061000b2e776f2292a6b948820b24cc69b28db692ef9b7161848e521df31149dd73aa69aaa326ef1e14935aa7de26fbb4c8dfc2154bdc46ed540281db070c55f1e5c2a692a9f4f97c3490e9b389365369136926591b4a28949882adac64272d647d640c26ca5ae2cb65abc924c42404e5e0fe2e3db874dd5c699596427fac44d55335d119d33237b9f8a083a2d375a11c1b09f3e244b3a136d2764ab17103878e6d1381b610681bd5e9d1ceb76d6e536bd4568453188e2a1d6371c4ed945ab5385b67f36ce0f6d1a596e9d88a76e951931a2664246424a454eb9ce113e0dc217da518e1400c40bba1d1643237dc5082f9a4d2c919fd6c767e36398e22bde8472f2a615c51a8d16844493e7247a550abd58be52d1fc3175def01857ce62b2e7b42f51cd8abac1eb3dff7046b7322b59a4ca3f7c050a915695219e0e4bc6772fe43afd5d9ed85faeb3d1e0f48e9ebdf838d260c5e2b4d362265f43e870e81e2638d73aaa8c85456847472102732de87d98c3408c073fc265df7ff3ffb4fc363fef3e7a0020b270e73cebbe7d4a6b7cd392bcd98d29a71a5baea9aa9a6f99c74ced19c73fa9c734e4da39e9dda9c30d7113a725440a474342ab9cff08acb93a8ba0ddec8d87849a39b928b5e274a2975d6e882d150273a9991c2b17123a4a181c3569d6db53ad7bad9cdea8c4b305fe2fd8bbc0d4d29f9aec44b25956944a54a5567f5a770446275dce3a07f68d9a35edf31e40a978e1c98089508442082536e0a94fa9c13fcb074917b122867e9ee7ea7688ae6ff5b51a4734efadf7f95d2ca803aef65864ae7809c29354102098cffde692dadb5526ae7bcfff822c30a9ac66ee24eecfdd4a326989e83640f14c413df666b5a6b7d6fa55eadd55fdbbc6ddbcef9cb5bda14dd7d09bf8227a0451ddd0ad95fae8549053cbd3037f5b79ea501a120a8b46d1b4f07800033a70018100804419a26414c29a40c833e44a2490524968667b35024c941148532108640c648638831a00c0c0c0c4d13002a60af460c7af594fe2effe7dca3f6438827aa727481e517cdf648ae7ccad532c31876db6ff43cc9a77587daa2ada24ade00b084c7902ac5854a3f43ce76995256cdab13da578a4e86d05e25ce958af288181871ae548750fc94c971b50168e9b41d9b86387e9c1657d7f77ae934c77fdf50059f1fb1e8157ef66f3a6dd902944c874d28483c1e2675466b44ab0d0f1406e38134cce958833c16de86f1be16220347b8764500e4f9f2783a506ba23839091240af331e78ceddcc87e8916549683ea60025362e6ac4322bfe961acc042998c90f418b8be325461b571e113925e897ab6c62dbed6e2eae6e9b3a0420517bebd87fa81a3d8ff2934dd5d689d48d1e3c1d6bfe6d5ea7233364107de47b5b9749e31e94a2dc5575cb4b2c8b3e5621ef22b48d30167a11e00fc98be33bc4945846e2cf9b0e21f772855e7fcf74d15596a15622ba236f2d73b061f3cc59e0e8a50ca4486e27d375768102ec2722d577ad35c4ee9d52c2e5c28752bd88b1db215773523ef07ae2b736eb6f31f15340d20196caee8c275fc1a83ca55d57cab3b22c2689594fe8aa49f2ab4b8f2b66f3b107440a24118e0bbd8e35707a8f8ee52881254f056e97c1ad3147421ac738256b0b15251d1d265a264a3cad34b1c000ddf869e2558b6362fd587b2f1032c783bd67f065e4d843b49f67a26a3a7d16485111d6f3313955b420783f0127ef1e37a2ae16e98386a83888cbc2f215f5d81d663e964d1d712571744cd4e08df8c1902ad56e62faea1bb5c72bde51b3dd22fdd2f5244a2adc88980c9c079e1b5d9f172ad0c20769d869b066b877de6c3aa19372ee96326489d9a6420bd145409fee665b12105ccf9fe2e0aedc3c781c3a45ea51229df351ee6bf9a3b47d9dd7f02dc524cd7e6095625959e2866bc8b704090ea91d17f65f2406fb77bd870f4f14f5c18245a349fbb9b75a666f23e607edfa2cf9782eb9afd4fe47172817e9130a73f19ee892680f05aa694ea6790760db0de419fb7360a2ebc49d63e5b44d6fa4feff245a120bbeeb8d0ca20a6d81401556c740c8bd8b5df84699c06046471666fae4d9b9c70d6d15c54c5c118198980fe5ac236813933026b7c9f91f4cf87700a7b46243ebc9bcd2d496c94f50dde04b6115f8fac3922a7b55052c9758e8195457fb4081d1b6cc4cca197c736cc93b7ef5e8446b964e1761bd7fef1383a36cd801241a097f52ee41799bb2fe0db6d0c496ccd2a7e31a2ea417b3e17549b118d93dca076552bc798a7d078c671902fa5da14215df3d9513baf4299352ac9121f975aa0fc1a7f42904a80d0186c4ece890c11250821ea0d57ae45a5bf716ef527498a25848457abf01807f7c2c07a6aff5d7abf498dc6b7dc50a8b10c0dcf5212dae21be13ff4b5dec74b981a6144703e316d2363ac0454117569a30a042323bc3e05d1b179d54e66c98c346df02cc300cb28e69e1eb25864276145fe770ff103d4ded5b405c7e801625b67655898bb9c8addfccf0d7e186ec2125f9195b4c101d64675c5b0290e16b22591219fc270f522a6f6327a1486a530b96f8fad250eade46a80e6e802d739c38c1673ce82b961ded0d0e1b123dadf0cb8513df1e5475d8e5c06d6f27931e49b2e3b2ef91012ad6be47d9df04af4d1a81dbc0d0d16dfe1db8e28042f001c4cb4c862300e20cef88a3bba557ad5bad0ba8d8664596bc178550363608599011d6849489d50a2ad4317078f89098ca2599116bd4384009147aac2d40be437e618f4d841059dfef0118bd16165cb6f791c1048616f46943cf75f3b317acaf4f66354a5523e4ee43db4f16bb027c6aa8c12dd17473846279bfb63b62bc1dc291072b27e0b1d73a8bb10228158f08ab49aa599dd19fed42c859a9d7721b8e9f6b0ab7b1bdcec37203709cebfd5e52060ef163d5cd1a5a7b7e43d0ed3fd1d56dbd90220a234bc703c49b4eaee621012d01cf16abc53578abed9c940cb3d284b09e935bbcfb5ac1ba34f831e70668460eba5da16e0298e4649ff5a38267c470a172159a68f87344523faaf67be18ff97f85b915d3802d61382f50d8d2f29836103304effa89c714b7848b10c190c866f4fb5e86085450c8d77e7f9d77d434b35df035e9e5d718931326df049e6cbdff35b3c348fd58112c5ac9b3fec279f1fc26f0756d452d53ac20a99f3210d7306ce529be3715a9b66edfa2d77aacdbb5e8641f9e17db5d92fe80d09b36804247b727c45dc96d7d124d6d9e5725d483bd37aa15720cf562f4e119af01aa40fa7b0146458a6c57972952275d7e40f25013ba72f132b1709a0ca9d961ed93b1e25987bfa494fe679c1b9f26d4eff3822e68f19c2bc6cb4a9db75ca01c76001e7ed40dbeb1293fcd0c6712b93f1e8a55109fe9ceaa0e8c33075c659ce7842d00b16e073b9d1c0e79a17a468c33bff5884d2b543e933b6902c639679843fe3af5d37bb1741eda4def262ba0b2cad28ee67f765eb48108e79cb3df5480f9a565ba682a27b4426a961839f0bfb5f019fa510d446d4594a7bd77675fef2e453adcabe558f17849cfa98fd88f58f27e313691c97d0d878dcc2fe476715954ca803565bffab6da8a40e9aad0d41a516ff82d0d3205424806cf9e3442217fd24915873e05481b15ec18500b818fd9c168cb482ad3f85400ca4e98038c942d74d7482d0344dc6db2dc21a48466eca19d43fcbcfce04d5d01edede69046f18fe028db7b74f38db6930b426cac4f1244eb152770a3424e2b0f569abd9872ba6c77ff1f1655e4c49fe2804405cf9bddbfe2cec295e82fadb6ed5f59d0d81a3d190902bd4c4224d0d2f8772a1982e7f01ea8ed4303e36b01c9ff340132f2e6fb1da84d97df8bb6944801394bdfd7a53658987ec65dc3a5a148411c75d020ef0c2eba5415481502da0eac7938f678661c043ad4367cec14191d3e92e4489c6ddb1817a15c4494de7f4150e4e6cda4f3e35b5cb591998f14e6c295df5c516d81d24286add39fc8c90f3d5f1a2558474296d8f23416f855b9db7ba483879c60b4b9b031d517f4a828c3cefda6b49adb502a520824603bff6c0e1a4c1e5e12dc6c0cd7a5d35dec65e9e9e0dc17d92d2164fdf263116a7ae979dd1fc5295ed72827bae4dc86e2703905d0e5c6ecc62c32b7f80c1735d1fd211205fca215d2bf56b4e5ccbdc93eb84a880407f4217af56b4cb8a2b1a821090c6e2c73848759506008515fcf49ac45163513eb788d2dd8cd744ee6d7626f86637b0dd191c26981c87c9bd8435c9db00e4269b3184c925716b64c2d3bf5a089fc315eac9505376d337601ff2f50bb418f7242b87e1b77ba5d1484b70dab73beac6712a257dd2cc71da53279dc3ee0f437fcf602cef2f3a5ddd45dc387a1b90571e25b9040b6d878f68048137fae5d7a10509bb8098766071098b305ce58a9fedeff36acf6754c3dfef92f34f5b2ac91b18d1d057d97bc2d618e4d5cb73e2fe7e68de3667fb6f882c4edae2a46a59dee2a951a7fd8accd75d38ad6f6d21316aad04e5e1e743a2b4fc5ce00315731eaf74acff82844c927f442c5f6e6261f454e5bb5b6f2648196f7ce4c2fe1ac33f9a700a1fadd32fdc35be41781f7e7145c035065f501dfbe343bedc062e1080e3171b74a421ed700e3f5daaabc8ff0908a539cd7c6abdd4aa857994e83307c693026fe21dde8719b6ed39d02c66eb2a3103f9318eddba40d0c7e67045cd128a54b522845b8e0a81e6d55d991b911645272ff810f6837c30a1411acd30dc6c8dfa4dfc3e284e72c1510c41318eb89662d58cc563c74950f0d91c37c4c57a1da35d2231a3971c99769d867691b089af17213a78ca97cf2901d7e199c410d3eaf23a043d62961a921ff15013c26c7dd1a85833338533b3d4f9e7fa9bd43aa0f16ebe056100f05e11914d35429cf52f0e7aba58168b2294a02ca6bb483b0582228ddb58ad744ee159bd93176ee9297b73048feaa01c3145517b501d4bd558560eb0ffd967e59a1b08ca1f3e8bf5ee59b93a9f88021c8280f2b219f5169d4a9fe4aa8b02a7a33cc11f711ad28afacaa35f632e1bfe1e15ae68ef6d7e80f2685419ffeaa33f7b65a86045d241f8fb15199b2cd80be794c4b5c332c242d490e257652ec6c9845e841cf99b3d929ad7173672d22376d15b6727a47708eb8847cb587b257b5d53d200e43c5cb16cffd7a50525b3d02cb45b2c07e1a2f4be28724794e3e8f2e7480697117d0b441025fb56d3e4f1fdcc39b23a0023d946dfd860876b763d520caed0ceb23eb21e5d02ff047cb183edab455ec0ca55986bc36b737053157152c9843e4ee82eca1af38d403a3e350a0b1f73fce6f97bca2108edb57d899daec83ac8e98b8bf31dab6fa1453b3e80171a307732278b9dff44a5247982f984d0a3baefe3aafd3a3dc5d901e61065903f1444c3076a4edec7c08cc573a1f7db9754c6a968f0b90877647958ab96f7e0807c429655d0846a84b4b07b30faa5bff172b2d62bb7a1414d4390bfc609b678c3c799def0b8f806b3add757306249587bd3e0c5bf0f17b9054835f0010d25f05a1e8df14249a6e2ecff1513af27577fddd5ec3db379b6a794706e6e105672b14147945decece8b38d412c003f798fe4c4e6895cd362a00e9c58527f92811662cc9411a4d636f232721754e8a0662d2313540ef084d71e128c73e2021ac22573018f3df7c38710519dec8a423ab8c191f53f37e4ba6a668a8ac15dfab9a124933b00411a492970948cf4f1e60be1b15f6fc5dd19d56141be2719dd50736146cd03ad3f953592737892c44e911197655c779ba2f1b1ff0191cdc28f2a23f8e74cccb9e317cd1c876788b05fe2a3d53417251d58b4179924c38a9a1cfe97e9d1cc286f3be93b80ee8d5edc9c814337d15ffcbb72e17117580931f11e62e088eec92e4451fd81e262d4aa85d857cd9a92ce486099690a9631fc336ef9b3afbf2e5dba73387b1b92f0ea5d8dd5e426b38e2f24deb08c0ecd46799b73db276867528f4c8fd8283d0349575cc8114ba460178122d69563a248fe807fff2b27e7da91748d131ef367dfe743f45defd59b0fd6471982cee5de30ebdcf624aa034542be9b6f449345edbffe43047ab69a3218b076d9fb1d83ebc3af0aa028d9d410da42e6a172d7cded9b907097be932605855f96a97b8d3ca11e5c69347209a3f44f44f41db6a8fd9105bf2c203c40f473d1f86f7d01b6e9c673c04e83738a4778735dc631ca07267005b4418068b1c6ce8eacba0a3b2d63a654fa39f2c19179eec3cd22592c5da91664e6a9428bcc297fd1090eca62590b318166a1b9285f34c1fc79aa12999ff94b3455bc8c6846133ad9e220608e59650311b58c0da643016464349e7aa3c181a9d0797618e159c7f440a05f8fee3e0300f4dab81d88ca9b6d68538b5492dee71a740311209e091d88b435ebe92c45ce54b86e9a2ff98a01865acfb05a689013714d6b9871b17b769f77bb81217e1882f1f067f6034271f376008a384df270f9cc49fb76dd9e1f58bc922f4ec5934d3a2afd385f227db0a06567bc465c5aea9cfba6a8044b4bfec784052805c418630262e71a4b8a6c7604124058ba29862e76bb9b36e43f7d02f80f219ad1ccd508e0f1ad0b652c92f0779ba8b312adc0b0c6d8f555532cbd5412a074027263798ed79b7dfc8fdb925effc73d0f4bbd2dc4723ee282721541133e130f09304c67680ea4e12cb51241a6dae9cbb4a5b5212afc599d97d2dbd51dae19bdf8c1c50edb8070ad8a6da898c48e179246b75d6c786f2cfe6ed676e5aaca06e714fb8dfdaf966e4fcca31c2fdd8c633977bbf563a317de8dbc4c995b724a1cbc623302085a480d2b5e6cddc9947697c1401b00c0e1e9846be697eab711250e92f822ba63ad8f4c0061045f00063fbc70ed201aeb8ef823c9005a4619add98fbab95cfbc9c0774ff990eaec111bd9c0c46f98c562573fea1d8947a402e84a233f01c6b344318c92c389f571e884bb5d5065732eee818fb84fcf33735ef5d238bd48ce52f2ced5153269fee534eebf58782422a742c83c339f00cfee00761fc405f5ba6f960d578a1641cad232652bc172062002b4aecf5d6174fa1c1b0f1ba82c9bdf990c10377058f06294d0ed052068720086d8079ceaa70d57a1835c92c20237193c8484e9df469a068f7085c7c250950aa711efaf6afd3135739c3bdd159d053278f3cd297bed15620c356f543108d969030b30be7e222bb15609bce693a373b534df536ce71fb5c7140307e0474abb63a807972e140f26d0bd5e9b7903885d396fdeb695d49852b6307c60ec1969a0c66621e5ac9d1355b1c86a135745476b31e3bbe088711ce8b85808deff7e4d519256c8e5cd5b3c82ee7ab0ecc298824aeffed142fa78f65018624b91e30927403ea592c88aa00e3052478d1236cdbb982a33ad5fb53ec2a8577909cb4ffed1afb4c91355b8c0cf83888226fc4de93c1dade1737073383454a7d5392992257f97f9630efa0788b8b55a34e50c8d6ce703830a91ca2518462567dc5ca944d4d4c9471e3bb6aaba50a16432a4cb05a77f1e6757bd51fe1c0af85b8b860e4f0842d49e4b5489daf3dada19c73284e1d7590457af19f18b09a2abd3d6b9f7e5fd8fb5ad190af4065d0e999a78a40f3b86ae3af648dafa9515ef6a5aec9757ce575a1d42fbf68e1f5fa8243e6137ebace18620dc89d661a2701500935e0830cf605f162d647f8e11d6e1dd4409119221d49fb50561ce94472a41289dc00c8d11302a56242c53aa8dde5ffc9d99e391acf5739a2d9a1239caac8838f14ddeaff6d488bda1afb65c10f6a7dddff910c03b29a778afe1a3b408860f7249d5f9c266701e92dad9ad0bbae681f3c6d6acfa01c434e8695a0fb49dc26fb90aec3c40f25c87ab0a8c89be22ec61299c0c71b96e3610590175fa1ce2f2ede7a3409ccccb0a9e49ff9fd835befee6fa69e0dafa88b608758aea9c2e42e42026e492fd6bc297104451ecc7f9af83b7e9bfa27caa19c9c3f0c60312ad0bb0e02702f52e1c1d8309609a74fd2937756b1f8e31f4ff1aaecf305535c7b7ca9f39ae6bd8f57a22ca5feb739318a05e470c178cf5d7ee79cfa8ce8ce1a1ef2cc0e7c2aa7c85612b48f79ec371ed8150385f9817a051a66fe78db62ef0746399d4a08199eb5c205f7e26ef15ce12bb250fe792653e407ef3094b70beeea8a033938f73139ed415b12e6dfb1edfcdf2d3ce724a720a029ece80f006805c89fc3fb0c7ced19f803a89ddb46c19d9130dafdfeba8b3daf733720d49edebd048df39e7743ec80a76fda5d99e909eda68ea5b6116273835c28c2d01c2b1b9d84d0c7fdbe8a5b4a54506a39d44139669b73798a4b1b64f57f813039c60fdfa39a57022719ff02b3e56017791f001ec2b0c334e8ffa7737156e51af85f8101e2009ac767e8f933b7d5d034318983e49eac7e660424acaf2c617822325ee51415926c2b4ab47deac29d2885e15871124beb31453d550e720634bfe2ea04a97d7dec9e33a06db9c036bef61d91a66672629ee1745ea429019b8253cb8c5d2483409cf8a03dcbe977c4360747f4117fa3c5689fe5215b238fe6d8003abf4355fc260e21a9047d4969c7f58fc16efe452851ddf850bef0097fccb7af3118d7436683e0cbc2f13961bf535f72196bed83461c3fbc72c365de31e05392231bed7fa4c6e976c9bd52dc05a4de68700151f73d960f820345a17d4551bb0bb81de8f0e4e09fba676069f55f8aee0a57506d7722d48d150103422d8588bd33d0c3342dd34cf0dec24fb3261e0e8d8c7e7685cf35bd804a27545baed6b8db7daf296bca72f0c86e4018335032080906986d17b59c73c84a8cfe2116bc91772441386f9827c2621adefa7827440b9d168575827f14f6187752b13430baa199e2d095b362d94932b3659373ab225f6e30e54ffd08f950a1837ad470bdc53f5c7445753db00fa188c73ed67edf9d1fa78a09993b017cf3ca5c5b53304840615449a1259c12b4529454a300a29f2cdb38287124fdf9ff3b6958253180b9281b3dad1b09ac803154d7cf3b0dac73b9b940db918f0026e821ef13e2a494f9dd849ff4d6794bababeb488ffbfe5e6e0c644dabdecab9628eb6e7d7f927f5dca30be1e8e1e6e4466ef8f588645659a10dd4f8d72b2888572a38324baf1e53ede017919f6011afa60384102437af95b3d22905b799eb41ac0575bb794055d0f6ea47391914df81fc9720975431f72638e31833f751b256369eb524264042978dba6433f2f44927cd13be98b5c901ffb2c58e862fe1f698b8b62b111a0da138eae016a216c55616a28775071c6ba8b629ea28f95f9af2149757228733ccc639c3801cea88bdc3fcd586cd72abd16c3742fca6fe51da50651eb1397771e0bd28ab197c4b345d362caca2903765fda21ad3a9c0f3a09509e729d1d27fc83cd30c652a4304d243b25516c53d9b05d1e6a7be62e70594bbbda78bb7d3df1bfd07f118992e232e70e8140247b7a5ea7a1fb2fe14b51052a39486a8f65d74e25be023bf6cf93efb3bcd1895b410048444316a33df00e168874e1b1ef32a0435bbeb8c79487c30820a07add1389806eeefbe01c5ae074479a362ae9c9b0470abeb524b710e7a245e89c2b489ea3e7f84d309e771e8a467ade7435b69839100c0b186066f3732ca02f406452475f23a135578eb9d61bfbf308857ce066ccdab0c345dfd86e371d0c3d0f4e2639e4b0f56e10721cd37138fcdddba7266e3cc5d1b7452eca579c80d8fcda950307fdde801723a2c7d813223d713c40b7a7b7d0a54da72a92e66a061698070008795a8eef3c71246773aff21b128d1507e751f63283bcac87a2ed80ceb530ce513d59df223d3f41d3f756bbc368894e56578d9750d511963003d230c6eec103a1626811763e475297cf00336b1bdbadb76be0de330e8126a3d3f69d8ffa24af420c2b0cbc143436ad338c0b9f1a9ff1b7a1dcf9d3c0f172dd17e28db028a881ce84430dca9e349ffffcc7dcbd8620150894eae32e95652b4d5a88b41ea690941faeb96ca959bd12550d28c6385dbbbd9bdabe89e12704f9f1eaecc13eb74fb7a3fe2d8d5d147a9d048db4d2547e66c0f8f9a419a8e588b0a33a3df2af4faa43adc817bc09cb6ffbe7d893adf72ca0a1da14a085337f41f993d6e9020c555da559ce49cc047084844b2db329325cf1280cee9e0c7979dd07319b091d209f146dbff852f0acbd1883b211c2eb8475fb1c58ce9d2bc1df8e8191c5dd9f2ed43eedd6b813bdd92e77ceecf16b25eb861ad823b29a234c1aeb34b76d2020df11d5d1d4fe1a08584c78c274f75e3fdfda62d645ce36674eb3e58ba6dbceeb2b6768e6341013a0549be53c19902123949233f120fea74035f86199693418c7ca96fe2b5ed5fdc852815b31cf235a9aea95cfe6eb83f601b689120900dac292dc63c35bd61210f04c5732daf2fee3763b674a5f97b0b4cc18a075040c4afeed86535f52cf4da2bcd4da42c376e21177ccbd94efbb4e80c9a8d11744963c9e0a2e1ccba7f1b6a0abdac21571a0953427a04b029b62520b2b2ba6b51ca8c894ad550953cb80567eb218aae215fb057c0f119363344eb2351f656c3439609dc044b4a1e5edbba1ce66e9ca88bd65fd9609cde35d2d16f851ec055334b5a96c51778fff27e6138b6507af1449ad380820f92b44ef998578507814fedf50ee466d88852514556b3d666ce9d6a624eefe78ba1f56dbebfc461c319b24e257f597e03e5f63e6bef94815bb7cd3a7b289ce42f137b0962f3238237b49a0c5c99af2a1a67f16c7fd2c4d893a40f2967815c0b623b9cd561ac84b11a1c5b5023f61ef4535f8bc3ea194cd90cbe8186e49406ef9323b28d80348fde99693bddf8f4542dd00a7e4b5fc7c37df0a7dd152dd210230727ab61db3f91a01b4fac48a3b2b04493c0d170905c829cbda1d029c73cb41182964c88414955b54b253f1cafad2e1e388acf6c3cabd01bcb419679b28b4f0d1d97168a808a0253f4a35b6e6642835be24d85f2ebbb93dc236076af9d40b5441f50e15e3fce6fb39d40475841787a824e8d746237835166b3f7a96a73415d85d3f34201acc3fb3350ecb9f1c42a22e6e3e9dbe0b59fbb9c0cdddafb58662872bf3a35bf6faa98393462586941ea40693546bc366768e1a7741b8f81e82bd84c0e027a1daa21c9afe04a1786ad1782dccf4043bc8beea890a33f3f14546f7450503175b5845197945e5a9eabe2d09206dbeb5d3d43483c783b5a5f0526a36f27631884b08418b953b4f620318c275673ef08c85ddbf6d9104dc9201dba436f4d6b415e1e2e198bfa704d685b87d518fa1ef6b4780e9f0e1e329c9e3418044a54cc9425570c32382d255b3293437cba431e026f0f862052de1888e4b1ffec2493bb37d1bd3bf92e9497dc7f2ba30626ce733ad0b6859e4e7421fb604cd0856fe551a8fe8a03ea36c076a2c351a94d33ae0b01cea3fe877713a7eceb716991cd938acb1dd09064b7983cf7c76cebfa45f7bb50f1a42bda4c1db4881f5118e9e89e309c9acfb830ba37b1b2d28f778deb162bef9a11a42909e6a37935e2ebc728038e41fc8818fc9a0f2ab7267e973c85623d28f28789381d671bfcc9238bff723a29ce88811b1b54727ea6d43fb8eec4fe0175fd07b5f8927bb6594ada966a1cbb2383d778371615400dc5acc29da6d14a21e4b40903c9a41675ff7f88f5a8621e1812fff4ba4c5c6916eca76902cb6428434d8fb55d6a80f9a481968fd44be7e04b2c4604cc270d6f89cb64f7cc67f2f1ad5e2d14e979d3dbed412efe80e5452506bbd5b367da0bb4c4375416931d08c4c25dbb7ebe2cfdb6aedbe67ead3ca4e1b5a41e205cee5bb91eda1f3263e2f697ccd31b43133299dc4556e2fe6cf9aae765ccd4f913bbde54c78519ed58609dde2354a085e8444c8a86e256afcd773391d7b36072d7d401b456e12e56f77fd83f4b2374bc7926942ca61ed58c0aac002f162a93c9b53a3140df9ddaa690a0886e171431aec6cc28106cd635e1aa3a96036fa792e209594c15eadfc4c9b5b7a442978d832143ae41ad46067c35f20174d7ea2f3b04038f04db384d4ca8eb96ad45b93dacef3f3c71a5088eddf15a6e10825e354a13cffcb9d9b2c278ca59b4c08f90a44cceb6f9b17dc88a8a28429967e864e59aab5e87203b124f2d0a6cb00dd1bbfb11ba9029e72bcf0de55c91906f3190089266a5b5c66a034ce36a1e7ce68ac73b9c986d36d6d144eec17c9ff3f5a3b0a7e81ce87ba54b5faa5d5b068b4beb52ca003391b711df039879ebf0c99dc93c92307009179490edfc9e59ce09462cf4b47bf64698a968f88b24391207874ecae0f7ed2a3996c804aa54c352e441e0f0dccad9eb4551a5734ca846ef82133927465a1e265c608796a3bef57e087d69194432af70bd55247fac68d51f3eaac156cb3593a8e4a21d9dde457aaf9a92137761d1a1ad8502f4aeb01d5767c0f9e5a842064e39ee3fa312d033a9289d2f3b53cded5b89bc697a86f337ea09ffb905ef5cdeef2966d84f6df9e6f2f04bca700260d176be718dc3424b035451f667011dc67152188e790dbf2d2829eb6e3e24f82e8bcb6446815219b8643090db460b299abe487fb6144fe7b2278b12c4b07cbfd1bba97fb3685ca69f285e2503486d50d0277e6407d590457b8356478c2df0f01bc54bd625a2a0178f93f8e28182d1d38a04300fe91100a5e56276b20560b483fdc2ce00de94348c990db9bf5af19dcb19346c5cfc334e92f45bb8b6c544f40dc788b450e380ef07fa5ba7845efb4a508861f4b12c39a089e2682122ca19fba9d02f1cc593dfe17dd9b06c5eec1a3b61d7b7e32adbd3b80232dace91a993e1a2dc6122fe17096a03440de794637ddf2163a1bfcd70f0b0b4dc1a120a01ac1cd2849d4ff039fc497aec0482257984cec2f41bd86345bdc46a202063515cafa5d302a557f2e30230ed9202f4706a6a6e97c94de90aa92bd046a353ba6a1acb2658fd2cd66aa4d690ba4cc6086791606b4e5f14ba0c6161502bacb1d65646ac55f61d043954504408fbc6d30b195b3738db2c42bb0e94d2ebf692d7a6f588204c8ae8d12146b1d88c006b15905f04c255896391b06a112ad68e436fa8c6a74496b9d6eb1f3fe00145a37e0d60186de610ce782479bee718f40e17fd439e000a29f8dec58ec2eb79d3b6e0cb590a47d018a089686e138399932ff5189732276967adf7d839403b281b6667d5907c7c39895fdd637fbf07da3781455ba176d1f528cd2a5a72a3f04268a0273b07a30b843aa4f9ca3a29029beebdd1f20a5271cb53af11de3f69b3314b2c90349b954dcaa385dfb7d71e421dca9a1d172dd23e302aadb4e3d11e04376f5bbd7378256e4b58d9d5c361eba9447b1ef4c1f20079769ef133dd8000f844aff7c2f172f20de0f28a925b1e1ff5bb828d0e2355a651e4f4177c013f565feb9aaa76c1dcfcdd780b00cc30546e9310c3996e94debfde64e0d542c56e967d52834fa34dd43b29213abde6907956fb6ea4543354e2c08d341cda5ffd91ad9c2311e414d2b8aa245f642b7c1221eea7b2f377884b51851d465a8a85fffdddaf3a66cfc7f1a50cf3034ff57bb8fdf35dc2687407ef435caf22e25de4076fb4196f882964e1cae143801be8f8ca3f0bf77c40b038a44574ee98792088a4b9de4a0fb92e9d477656d629530b876daccd5785fad841a018cdc91f7270638b9b84d9285183840e6feb3111b55ce01fb88259b4286b94aed963dff109a42b874e0ba42dfb8e6f8e0e2712e17385a00d69cda270820aab92aa6510c74db8cca756057df9aea715c9124eec4c9f197cdc8419e68e020953d2b361a6d7e4a04cf11aa42adcba01fda815af11275c8a3a7d094266ef80e4e45230b6e90fc6b05354e3a610d22786d5e151e8c57f41209ab8e2edaee5d47e9160d1691b9d8e25d224e88ca2a110d5334cea4ee285a2ef4b79f9c6afd2eb5ef1ecbac5b38f1554565d1a8714553fc2202d3fd9766f0a2f17d1f8dc1f7e809b7187fac92a6f8b4075197725f7bb87ca56d41bcada99793e606d52d7e4002076da26b392ba86045935641208f379a3f0996ef26ecb64b88d5fd78bebd704c9b91e0d48b1460fb6947053d63a76960e9d011ffc0fcf58e68babb61865ac60b484b36971158938c9effea14cac6ba13630ca150c32687b60aa31b0d2d2490012b2f9a707cf285ae8fd7ecb412b72152c4d3b3b41a6bba3bd5fc23cc8421036a2f6879e40a8830d8b6f1a8b2a78b82ae7f898993f61800adb25ba48ffd7b6bcadf721e3f5ba5f62cf615582efcb2ce9bb2da3efce25c4f3cf596ef3542179023a2d39a4186b9c637b2eb61d16a327cd9aa34de472c052a27ed2dfe09223f6da693ff9ed84d522f08a4f91555092fffcb0dab6846b27ef8f4591151c2c72e0ad09a9a7da5e5516ff581de9e83b52c2a226a3d0d025ea1e2aa5503290f45ffbc11908ba9d01e83e42d519589b88c7823f0a57c4d2bb361b28a897a930cde3ef3c10502d98bf2f517b80c950a1aa28e92d2452e78acdf4d1d34be007ebc710d3210d810a61cba2d5278adf4e07bfee40788b85d03cd8615a6b20bc53d7d2a545cd9a67390ed82a30a6049a8be607937936bd739c76ca8a998b7e7caa75489f378fc4684b63e094c4336bb35087ee53746eacc7d6e7ba155f13e21521ba654a9ce762d69b5f5d25421ee88d065481da035a601fe9ee37da3af9e5ebf0a77ffcee330efc446a389d3cfe07fa3a4e0ee4092de92608bc1ce395d6bc98b4de681161c0df899c531ff4bd24d84b93090c61c2d140d83da15970a1f5567627cdc2749299fd4fdb3296ed333b7a0942f8b5c342fb614a32b700964c60f49b1debb181fe476d2c91d0d412b15168dba3151fad78b4e2a155b613c761a6ea2078eab6e7585b7cb35c11845893f958df87499857839cebb9354bb8038e774a1b5ff5a8a88712eeb2edf907c3825ab4125a9e0138a84dde2b8d33411c446a4ed4b7078a58c462c01fc47fc08fff3cfe293a03b011da289b27160ac351eb18286eda0b038739fd102c850c7a00e5834f07fe4050b0d2dc920f897cb3f176a1b92f60121034166f67917269000d3fb7b68a704b4b45c86a11ea07cf54e0c584edae903755143a83d8b04dcce3e9148d130583683e308940d3d01bf88ceb0783d6f2ed9f79afe3c68b024e32f495f97ff5a5a577ceb27bf14a35b2c0b08457d09ca60e7e6492243c2cc8eb9b5ede9d5b576ee4072e0e1745b6a1f800ceeeb8e3c76f1491b6e2a5a249b3713e7e912183bf9b455514a4e4961c5762323022a14fe73a3967a9d83a96cabc878b6e776c7575a52508a6e25b3da6656f6d39f325a4d3c0f7d76d16640b9ce07675eb6bc7b13d7de7db81a078ee2b2702fb95aeab6f16bfa08abdfe9b51205823cc2770efea58ae8cedf2699451e2cde50bf14b4733f677b5163a6767d5e5c841980794e33b7a6d0942a3f5900917159f6e622ded085f33aad343368a6f9afc1f015841bb376c7a51f61d0b7573af368126625cdb8084e634d323cbba9a99d45170f8dfc986959237c82f775cb362e0abdee42ee4e5c8940f1b0930c63daf68e8bd0849dc376815c4d67051b9f3466c883a65657d969caa17de9506e6a5f81552f833a7dd9affb21d3f772dd2fd8998dba2bad22c36d716e76cc1e3748ec9df23fbd3caf534ec41e23f242fc1ca6e9d8ea6181a88d88dbdd8daba23194101de49c428fd8d03782975779b201dede9898039217dc22ad7884a5f2d48a197e0c15091a1d4644edfa376e24c7d880796056ca8b2e6626351b11befb04b7082918899fab6c93baed5ffe46a2acae658e0c02300598c984d67fde7b6251a01451355eff513c8569b11cfa1d4ece2858867cd62badcacd63fdf722d07fca0785fe653ef6c013f40d1106a9aac6ad769059084a13a04cad12fd59662f6bb2ad31c146ba86c2d1ad4d8fb43896520f5f85b580ed9fac0f01087030fb34144091dccc12002ab474b05a3c4ff7730dd7a75409add1fc5361db40bc64cd2ec8106bdd4db987f90285ea8540fbb7ff1b03c7f37fdfbb885632c021af0659b447f885409b0b2ad1d25987c798ec8488c4e69c270fa6b0234cf8ba51d26b9b19594e17582114ce805acc747c94d0e4680579cad4115885a5c4d383c85310df9e5d310305da345f572009cb3c9adc007bd155e4072183cfef656e5b0c26f4dd79a04e7dfe012485416382296d6a5f6b300afff2b3ddd6752a4d93961d6a294baa95b1dd4219dd20bcac4a8b82ec49693aa0721c7c97b9e3ce3e5649789f3cf6730fb5faca5a74cf879c923341c177e31a15047c073629a3eb9501e20b05890adbde2d6007abda1bd32a193e968fa716ac85cf7dabaa5e9715a2070f9ae133350efb280a86a7b2c0d6bad4c02099207e10c5c652217413e3ec8acdad8f62226dc4dd98e106a8cadac2ea52d369c3409d50b60d049333e6cfd064c1210282d1bca5d89d05022b0bd90425a3580088662dc4780bfb093ed4149c739fc312dd0f29e9a11791bb656ade0fbe380ddedf03f0766238de80800bc958401e73c3449b6473b93159654487bd487be75508adf14ccd5c03dbbb89da505a6f895de41c2825d44cb0ce286a663c40ad25fe81d7a13f3e36bd562f3feb1163b77bf9fd718c5a22bf3752aba83eff480bd7bcc0e7865f4e7ea6ff250d852c4f5b08e0a1dc1f22485927975003fa816aa62a7165a59465872f46b5b35862a6051a7a0b256235e82dc79c84daa2f032e572e91412052b47d3fde69cdf1689f1f8ac62aee4cf07aacd160e0bd2e3411ad3de3de4f6e57152d105e9d4158c80c615ab7ce648fe36071280c8a57c37948cf9eea2d36c90a726c191b21d64ac493ba57294d674e0990a04a46bc1f34202b9e95804548a65f165f18692a788467021aae3c7c71337e0d727f6582120c019c7db9d19abef1acc10b5dba07815c9b21d5c04a4596030910da36483252447ea35672a139f338e2eed8b83db4b48cac33a52ac1115dce23986ab1568ef57130aeff7e667742de820ccb07c130073b44b67059660740a5ae49ee20877dab023a5345f4d0280066a410f3d530ec823a3c88c883f4830f7b987729f6b6a444c4b5ec170781e355ee813347109d1bf0aed0061a3486195b72d3024d8958a0f2297120135eaf5d81bb6ddb5524f7aa0824ccc4a0620749e892b6d54f4c6c873b03f0c06ffb56c3c4ef61dc7c1ce244974a174e2a5ec46710bfa3eaa5e937515111641265f8d29cf91895f89e5f33de3e42c136936a367a965b3587838103642edc6d2cfd5ed53b278ffcb3ff2712b99ea6aac999e969717d5fa3cee2c3d5131a1a7706ffdd3481fa44966d750a3d9ac80cd2f53484a0e1b56f87edbd7b0994cf1dbeb4b2214b68442895da7aae1a2dd5ae5c87584f93a9f92270a4502f6728d2e0b73ec10e30a6e4253bc6dd69d10a57ffa12a123fac11417314c4209a1d1462da7be3fb2c39667fea8a923dff52503fc800568e69550407d99e10851fda8d0a8ad36a1a9d90b349448fae4bff1fb11209303b7bf244a23d621024f434e3c9814647430408c996704ea8d6f5a0501eec418d119511b7548d27c58c8805147e2b3651e68423a0cfddd538c7bbb89510a8c29e023e81ce6cb2aaf40aecebad2106dc199b56165d22d0fa0e2282185d9d762668855f062897e0367ecdbbac8280d3c84c09a1ee6a6bc90a3fc042af7d78bb02f7f7e89dd5006c6609218d62d737ccae51d46d1967411e62869829ec1697660a81cd9d80cb75c6890892802e867ee828af61c3b5a5ef40a7372f8def804032476a71e3631de8e42d031af1f15a70789a8e5e286e421ae1415ffe17bc6b87c648487e10c800c4b579f340c13c564fa7b4b93c0347ef0e587323bc7d2ee35e01a736677ec507e86f6622e7455db403a70be75c59d407e72c6d858e92df385628a32e42e61dbabd950ddae6be337e14ce41f34354b8cc0ad88222b82a7127d021de0f2a2a1b75b08080e1e9c358c40310085265fc7eff5f1a124440503d6db89c7703a6e74c12be20d163f85680415ab5f17fa9c9e360df427063f7ebfcedeedf2f80465edffb7691d028c4be89a88bbfd07f2419cdfd776407306f95b00da4628f2f5fc2dafa4d13f723dedf221a49a8aa1f9d4525c47341592e492348f8d5076654f91e55dad10766aa07e659e8a9b894416309cf14461df0daa7d7fbf94fd84623e2c7bbe5db2139381d4d5b3eb014b2415bd66d9bd090643f7281bc568aff21340e5a0b2890f7f8e0454e4f25e3ccea7787e1604fae93d5eb150ad32d5da2dfc740e450bcf17f987e8438487b78bc133266e62f4b0f55e293229315b306e484a87ca2339047ceaab41295d5d30b42933f53346f972fed24801bd3195f58413e6ca27365dc336045f45b20744029bf41431e63512df52c5e3bcae4fdaeca02f7fa0e634e75cc550da7207e47309495e0d0b2a62c4343858491b3b4beb0376a4899d5217db65f52eb76bd02d5a28a0291f37ad62d91ab9dd92f6ffd2b905487a2e5dd06812fb3a9c3095dc544c7afd6ffd5f11f50af98579e5017493de90a8ddc271ee36386048d3e535875198c9c666276b194425a61552d3db1e31831c22c14e51d2d39a57d6a3941d4a7706bc727be74867c4c2bd564a13d874e1de231b5e37f14161dd90f7a659b99b00d09588c2b9bea189790596bfb89f9222dfa9a446f4a7031c2892abc4de97cb1a7df27eac01d5bf0c11967fe1d6154c57ea890b993b7685f938db51bb798a71fbfb85a28cd8c0698f35e9d1d2b8d17da9227272c698aaf40d197de5d251f86d1f2fc44816cc7ceb540dc227479483bccd05cfbb00de3557c1e16c06c1d97b84fc4bfc949d1d4445b857bc7bb6977bc5292447194f88f7328927bf80332da5acc695771ee53bb7d483bdb5696be02fc6eca969556743066a0d4ba1a994076ad424e5528684bf14fc5b61ea6008ba12a109d8ecab9c85d95160882166c0909dbeda97aaf4bbf53027499ff71208955b2921b23a3de923fdd2d40b8bbe372e57459df1de24c250a40b7c4d396d1c86de9ec52a7db85ec530356a8040ef8ccdc00b1032b709ef2f93d9b7ee7307874781cc44c47ccd519748264ee7c3ea28eabdea7975a1a014cd6b2b0ca882badbf2ac21f7ad084a1e688ca0649fe0992c769180a4d3948d20f8dc923a204628b59de91f2bc4514edc07267984f940d995d5a960f1d82c336f19593f08c1025b35610498f53422f264ccf883c6389a914c20394730c8c20ad286737d63c3c85b26c7cd6555e1e186250ed3d342ad3287b0728d49b3b71fddeecc6ac11b8043f8060813ca6165f32c4a3b6b621ca1eeb83fbd50450068e3798d52c60963d43e0ec640ca38181050302e3d30d218771648b62465924358e1b34af16fc3bb290262a1e34daf0f2d743d8227e558f0d1b1cf365aacd43e715e174d60adde3e8e01503dcd6ab9471d3495e012bc634121e57f5a6bf8274157b2104444b33a1ea10bc9cb6f1f5ea08da7ceaf54a482933106bc85f210a804925bc1cf5acd53ff520ae9c07c034559b66d06a9e5afa7faf59848e867518e21ff5cac6ea88f6325113383281e9743bd67f8734090a47d5e04d3f927948e2a36813c0d102e2607d68872a887fae881fff50bc8a3e0fe5f033a47ae4b9e63e01a3fc025067afccad68ba7bfb940c3625b57d9eed463a1001ab97212d6bdb4d15e6a1b1c4ecf988b402a9c743225842cf3610e3965f37fde701ce5efaf01d4b96a38e082693a4faf78ecc9128d7b0c4e594f48d5a5f5106d4702d564fde36d7816dec482d7daf023a013971378313c7ae13116d3b39dd28442753a3b05f79803fb75cec2143e2b409992202917bdb1cfa3f437f944e699b1498836b851e95e1248de3e803b582aeb1f9c470aa5695c65d4ff526e1930e718e1d10e7f8a9aba149538ef0e39aacb68198e93050b7c6a3c7e5cd959bc9ab924901e9566bc8494dbe8b75064db344b4f41132acdfaec35ed9512f391d78a962f844d16f0d9499fee9fc99fb17f603ae6f2c6e889dc27ae4d6bfb44d33af68bb424c9c7a1e74ad560a76527d4cc679f7d66d1e9fc1993bd793b6b9f5a6999905d34608508baf54b977075ad0786e8cd62b7ff21870dd1683fa74cafb31eab3f8d708395255e2b15f6a3f7ecd7d81441cb018f707b1b47b13b459b1e36d0df78b4061e0926f53e481def22710c57b1e67b2a504de527bea5f63e472b725a56b8d82f56de4e1b214dc7d277908fd89b389d1d8dc2ca6ba5c9f8a181acec78e3ba4959de76a18f6c90f99961313a363746d841755e120f89cdfe7b1e8a97c19e71824c80bd7c7a604426f4b6d2e359257d47a33c9083de54e8cbb474d987275710f5c5c63dc4c844100633886e08a0753c42e99ade912b11335490ea902f61adb1553d27cef442538cf43941fe2472b60fdde0843afb3861f94d29481a894f54af99b1d1d0ecbbcb2ad7f09587c0fcbd8782475224a0546442588beeb1da483fdf084672410fc7442df6bbf2c485afb11c0e77ba446813fd0b4e0858a0d2c94ea6290b5c55807893849bff90654e740519d63aabf244da0510fcbb73f36cecdde9be0d70336d0f863f873969214b318c1e843b91e0f806a0597bbb964346be7750bf098e45962f9b42e061a24a660b7332a15e9bde52c2e9fed823183479677ba0dd4c7c6294942749eeb7e8f4281a03747c356f54e5c43498a3597026c3b0814d4740334e2167206ab7573a1fad8b8b6a3f5c5f42e8e3233b461034f2b201fe03d11be4db0c83f2ee2437c24adcdbabb17c3bd1faf1023a9c58f14d4f1e81c6414d3546e8f2010f33310e516febc7c5602e31ae8e9c3d353be84f4335e57e6c402f75cc8f50c3aa643f6924b66e76c4482c19c5f536725ca81e1596ec5a5381627a1bbb432ab6ebeecb547132df7745708af8737627013b7478667c83217644be3ca6067172783209d5e4e9deb45cb76940c6e1a6440e65a0887bb65075518b645e4c6625c9d3c49603f6117505711ed36a82ef4f11287e9be80361a8e1e6dfde07433cb590c5a81e0634fd9dee6c9225e2a8a42a890d6f57168c6264c2f7ef2ee3dde96b6d11fe5743929e7f1ec29b8c1c3c1d25d185b2b53b794e4808606b41f3b48ad061db415ad99a6a985a6d5254647cb86a014c9723b7f52307850c5f24f4a1ebfee902c0d8b710b3b1cfe98a1a7e22ab4cfc14275204efb131516d74f5252b314297730ae0969b93e604099e0b86778bf11b42a5cbd228c45a8782c45eeb101d930a243f397cd7486293c381d6b05c263d012c42093b8040f9b00ca4aef93ff3070f9c789c0edf2ad8b57bc00e0aca85b6c1b17b89cea9d2c10b3188b71e0978a760bc8b4bf9c9778a0f5d3c87a9489c478d61f18868c8bccd746996a8e6dcbc733d82fa63baa628a544f5967b6cd991572f6e7b52b252a411fb2e4c8a9b3e6afe17b2dc6af6822278542be3c81e6584e384e98cc7e0e43ed07a3c88f80a480a5a3a60d30d28a4d4bec62239d05d5f66f74771f9fa56d442363bcec1314afe3854dab7add6296928028cdc2aca223b55d0f3ace899cba6b95b3c5e38a58697ae156783d1ac2e2f5e81c793dd0c07c6e5d0d7bf3206d698921a34bf397301218d3b945125618c67b085e78693ce69e7d5081dd3af759b957ce7da62e9112991c876947297efacf32af9c76ca0256815a0dee9076f2707662240828a6d185ab18a80173eae411b8c6273d50b0bf7e31f27f4ae313eeff921a822f4430507a6138984501073f9bd29bea772b9a914200366343edafa16804071aee446fd502c0592bf2ed1dc09f6ae27b12b8371cc857eec977dfaa41677a06075ddc3f975655990912e205f5d6d03bce38b1f56b5c40e627b5b1daca7e94049255372c9c5e21378a51ea823d36d85e047fa539fcd71477c0df4c4c041f72fbdf0abe570ab340dc14e744e1b7eda6809bb60607cbc93ad11bcae7ffacbf4007f6380c690cf60469955a44053d410871c169d6a7cc80ea14c7a7e29b529bc57c80321cc1f41b1c57756a1bd95c426636769dcf6e59560d220d927e0635ae1ba1be72cb6171a9fadef9c3f701933262099f6cbfa61b68b828e4b3cfdbb1e74af88da859f4a9cc39888333d3b920fbebb5ed0802ae0a7b10efb4ec0d00246839998411fa4a6d5645462010de505aac9664c5e7c295b5df14349ac3f978a50b865bd98ec8f614f537bf78d7f51c524fd8d30882becf24e72627d0b25d2d737600f4ca0e39741f6e997535eac3304a4fe00579a4948501b2995188fa5ae65895bc07695c16cb6ee8bba6bf8cc071887f8fc85f4d42a6a1e97c3d62a3c1497d8c462655a8177c921ebf7f8b9126433505ac613377ffc48968c7424356264e0c74b05a72f7512b45a96cc2a1fa9b0cd7ea47b5ba466a04de00e06a310f25ea40ed9b830ad90425ec2ea8cc7e2ce0fa64f30a876fdf2f3a88d40087cc136ccfa8e19e9c5bf4e30d77fb84e42607ee5732b4d24e12eff3b1fd4e537e7d62da1f2bd52ea74007bb8bfd05578439a1e2b8a223126fc232cdb49421fb65771dc4b156b32075e5625ec9d53bff987601ee1d97b836e6fcd2c233f39ce1220ec24f98a3a270d1e0640f9d4a4829c8e837331dc69a7b40e9fa25b3d4665e44101f907b75755cb543dfd7dd1b496b95dce8e29ee1f7c28d5e333fe2ae7e53c0230c97a96d440775fe40a5c9e3516ccba2383cdaf8e6e9621b6e9e1d7384824cf6b33787aafe926dab60054b5fdb063325781b996ce6a0d20703f0d95c7d8265c01faed2d670a10fa0b55aac22f300d6be7fd08b8ca12fdc0956fcb8c0ea9aa115cbe88f0d13347df67a16e9ac4b409f10cc12817130debd8645e9f7530f63a8dd73f452e6d25fc1b746472842945eb411535a2c354e519ee4c19944a5decb57a4b056e7e6659ecccc15541ce32eef6a4031e48523f71ad876ca07bda4c75f373933a534727d500309badccf15240e3cfb2c93761c7324e1d34fad4253c629ba1a717a88463db8a89d5c6d5119a26b36372880ccc93a0b4ad5c0cf04491aacc9ebb11712176da8d752d3077b2bf1c18994c3ac7d52c25f9f0ce50e094a2337267c6051b77d8a3991b7b6487067330fa0e26c0b9de8eb11cbf96d85695c09a0c6c5d923aeb4a56c4d362299a1f9c48b74eb8e1c67eef4167208d48629777ac80bf5141539e1ff51cbe3c75452f25ed205ed1a4e25d6a1d47309c702154018c02be96ce9b1128eb582ee30cea220d72242a864e246fb4a6d38d5a04c048c9d1ed1df47b81d48399b199470f27daee24215a0f6db891eefda136d9c0c22ed522ac5aba8ca117126897c0dec77d14c9671845508bb5afa2ee5b7521b89c193554d661a8b5c9d08c08948993afab19840a7be04a827024c99bd6b86b2cf02a122b7e5d8590cbe62f25cb475f9791845a0e521ae81b87b974526293e4cf072d0c76c6c3d28f1a31b9f2495019eaad00e7b9b686321dbc15940d3f031951ea9b64e4ecaab974e4c59bb0fa8f69c75c9c46a005d33443cc9cf3507dcb64ac5b2a3c8ca594ea810c9aaecb69332f8b45be748edd6352b77aa359d135aa34847bc1c67ea8015c15bc758fa4c6c2b2d333c6a170e735813844277d1162b84149ce0c35246c2a198a527c94600e48d0b4a0183cde05939ff17464c01dc2ae911814c0e57046f73557d383be531b48a7e6bac2d70d6d9823779c8a843de64b393cec06d76bf1d51fd7dc97748b61c2a57372cf013bf55a2ad60dc0f2a8faa589048cca2ec5800ed07a0b452379887bd349a4586c09bb28e7202a9daabb2b3e17acc8074f00256f218cbe135341f8d4929152bfa1601b042cf15d8f9e71a0bd3b1a9750e705cc6afa6fd724c6e5e9805387b9847c1490f481c7a8e9a691d794c344772e14a62507f92af05a0cee20eeaafaa9b494ead5985f1fef3fa267ab7d740b7f16602c30c2a300751ccd986e6e9d3c0597e48cf6810275d96dcbb4a0cdeea27f636f4b329c099551cb4dce23d4620861d041fddbf1bc1f19605b8520402f65245f34305928c26f6a5808cc7a472f4120b318457c09c1dd40d82cb0d4f7ab8c407abc22d5b94458f11c69fb0f107c1be351666845baeb2fd427142c764b8e412c9c95cdc721ec2163e0ae1e3d23fce0da71e2e65d483b856aafe341687aed2b847b56c4e6c9fd750e356d19372113650d6e72d3544684e25864edfe8782be8a6a333889b257e8cb25e83501236c4e256a1f26fd5d6bd54c23a65a557e54b06dab47a5f553dd6e2f5588f9a7a6315a5ad87849657e90b31834fab397397aca34671c23fd4d6b7e53cdf0bf3f55349ff1c84e462020a62b94a51505e551deb1771ace34b4453165eea76f25ea61e3c79dffaedad80f24cb828c1655ec3c1a9010640001b42000388088e9216b706bc24e515bc4c5992da08641569fbd73ccfeec826939432a594524a4906ba0495047f044192c0618a0dc4d8218910245572301aad20f2452ae6758f7082c5901023869068018536b9d78893a29e1382a37f2226c2108f70f48a236ec8d9402291222f582194730f39df90998824a75f97876e2ea4324e0c3f849ba92d4adcf82e55c85e9d7606171fa545193f860935be1702f44f1f74ff27914186e118e5c360c1a1fc740936fecb0e5d8acfb24b8117f14b67ec163e9f92c25f0d31f9a7d098c347a24392cb548cb1bbf863e0b00bdf477cd78e1156b7305963ec5a4ecc9630822c2650162d822d4b804051293f9625359c2b3262a81a2f2a316cab2c5a525cf8544ff429b84b55e14dc0194a4796be381d71fa60f44c3ff8730c59898703498a7d1e0a2ad3683d85253fa547ea82541699504a520b9b1637ff9790a3945ca9333b184332099373311b8520ed2e6e7dd51a18e44a64680e23b7ab98f017ab16cbe810007559f4a20cf24248f4953b087e3d0baae80d51618669a7e6c7d29b411467b0264a0153a7e685a0d4b37388e9b2d79bd8da34e65a7fad68ed15cc212049ced3925c6572dfeb991e47d3ccac184daea9e62ed41151803682305554bea689d291a34e6f51107ac6d2ab92cbf15b2ff5501fed98cdb7230222821ee6e81c1ddbb32ddc421e9e990fcd08c703068d484113e879258e44224d1e2f2b733c4bfe16eebd717cac1ef080e4440096604290c7ca8c6624d898eda1fde821e79cf320516fef0ddcedddf7de3bcdfb8d971b881c89e488e488e8869a8abe620fd855b6500f6dc37edb407b036d5bf08f67ce2eb7ae44358cd7711dd6b45ed73516233b50ce4ed3c49f0f0f44f01e680422817648dc389a5be843830b36e821e460a3b185cd7754dfc22dfcbf85a244c8c62fb43eb30f4e202494b0a9ecd916da98edb1334b235d7befbd77e949b2c79724b95abdf71eb7cf167f226c1f24ecbd639bd3f8ca69fc87dbf6de3ce46c247b469f71f4f1f13141043c24d0c30af470e827e5d6033dd46dc0f42f630ec4470ef7c087f8c3e1b77e6d808a00651c0487772992a4abd4bbff74efbde3d93b59cf4932953ae9749e4e5389f47750df3a126807c928f99c87dfd6b526ea806e1c97ebb6dd33c993a4c91ca4822dfce6377bee4066d97bef2610102e963d3ead58eaf5ba037ce415f8d81181047aaf208103467fd7b66d03eddbc6ed5c8cec7d0379dc17e43e60f0d7db71de8e13717234bd1d4bd2a79c91a65ffb6f03d7df6f078fc7ebad3c51b7e3022070f73332e211d286b7a31ddc54782c08df0d4706e9f80f5f39cd76b3c93a8f4f9f91e3baaeb6bdd3b5f5888ddd8c474540ada9ecd0bc8413ca5fba1efb53d69b775b8e1c531222b8125c607ba852dbe33c9505224209a8ddd3d1235a8b7ebea0360202b98c6b0dd4c2be7d697dbbfbf2dc66e7419bc779380f97711eddd3bfbdd33d0ddc3bf8cd815502a3fdebc139e7f5b26db743fbe12bafed1fdfc26db4f7701fe59a6dbd71dc8deb78102e222b222b324b6097c3ab6040013b01057cc775040e48c0f50e1817ca3881b7b7c1b1b159c066000312f0212e99420ce6a0b9029b1b9c169a62d60e46e1ac37cfebb7d94d526bbe5967abb5d6dcf29e55c0ea5cfb36185010577041fcb754ecf340ba7e4de77a7cfaffc1a95eb3cbba7058a183d25c4e5b78b6380da46f3aaef877e3f0ffc5596fdeb31a2455aa90bbb51d8d46a3d168b59c2e691ff92e3d4c10efbbd9fba90a1493ee895af2ed4989df3bdfef03297f8f3aa152aad50a85e94157688b952ffa92150f8b8aa5a587430b8be5d25ab9b8a8acbcbc8c303069eab23ab8f4aaaa4ed498a09899eac7a85ea9283f6b2d7a38727c912313e9d94c9967ae89cb9c77e63ea3fa489625efbfd97d4c33efbd37ef69e90c0ec588443a4f1b48e7f93fc6266b4b2653f961a7d38842f594e7f6c2ac70775fad5458e991fc6847d13ecac29263aeb867b0915f9268adb5d6f9e50a4bd64757a23089d2925131a4582d17f405f5b23ae23030639afa53de596fcdb3e65a67adf5f6502039bd52384c596bad85b4aaf22247bef24b3aeba089d69a703dcebc8f69efdae4e5e8c994a7fa9bfe679347719c5299562514fd620d2c284b4e39e7bcf7ded32ffe98b2c6ce559515375a562d249c4a59b15ade057d51bd942b18ef1c06664c53df4557ca854a6dd5fbcdb198374e770ce69afb18979621ff7ded52ff95c281c251fef851caa0b6aa4aa2929223074f6bad01380d9d74e954a343902039746f6dbef8662038f0b79cdcf0da307c162b4cfe59860f4f9e7c334991df8f08f1512274f8aa2635eca137ba924f3aa3a7a887cf22c5f0a39018a1f46851fc544f852855c625df14435bf92b273b8a286adf74ebbc7fe24189ff611861f8dd8a1558f8e6b0c7f04d605cf92714219f5cc257f83909157f64c26488090c42ce96bdd65f9cf5e6395beb5996ecdde2ac37ef23797dcb47a17c5b9d714637d77ef55168b663e94dd2b9b76a244b6f92cecf5364e94dd2f94bdd97de249dbf64da996b5876754f9239e756ea4dd2f94ba613d7a4c9249dbf643aa14a2fa6fffc25d30995529967f7ff974c27544ab5eadfdbc070726025d3099552add09b1c1c9b98de149b9c83110c72cb5dda7442a5542b94657f34fda5129552ad50961696697f149a629e5c763eee7cf4844aa9ecd517fb8dbdb6cde82dc0ab06885eec7bffe8bde8c57897a867b55c5e605297caf233de2d971798d4a5c6689df77dc1666c6e705e6052971af3da2e2f30a94b8d79bd6660332fdc2f8e71ec6a0e7739b0032675a9312f1cb9e545173dde08aa94f8fa583d2bb316b538010964ee8ae44adaeeb5e9d675f53aa756bd57c4a78d093a6f62c6ba7b71500857624082c50cb516d67892860dc9bac3504e85b1890b230d372aec9e2e21718197711826367ccb927bef154597288aa2b518e36badb5d65a234a28b7dbd3088db3ff49598af95e8c2d46a1a8ef43b6f6e2ac4511cac73734fd38e36ba3ea60ad6d5921cffe5101764edc006cca8ebb750fb7871d7dea724ae35daf5bec3d6f9db7ca77dc53973576a518e59980c97717f1f5eef6cf257a95cf8904297fdeb8c1098e3d62e8891f06b0c22266a10b7af8f820eb14df1ec87d9db89767aca5494a77c8091b03290ff251d171942097e64dd832b73d45539daa76cc614a3905c645b0508288372223d9e0a4fd64a2b60c9c14e56f8ba621509c10497d224fa0aa68a52fd84cc926e79c87fc70e62c0af94ece3f3734c01251aaa849219bb149420a01274e911b52df5a1290183426154834c1f139a030525a2b7e20c3143226c16017524eb801a7802128a8cbe18b1e8e88fff2421100bcec8b8335a6bc11248f244932eb587bd7faa1c578743db31e5aef6756f3d97c6e385a90aed5012b47248c01e5d6231e42b31dabb5d088caf0e8fa14d1f8687e34401a8c67446a4ff5a945eaaf874565c83a8ad9d6aea5bb62d8ea91ac60e9cb4cdacc23792449f28858e9c5a77002d98fb1749a8ad6611c8be4f20b086d11facf91845dedcf3a5ef17b882de1cef89f65e902e24149f2a692f72453697bd2e95492b408fc00e7814f4bee4b5c5996a5e87b42f404e8cb9354b684a53f49e5139effe637537f924a5c892bcb1217d483835a4b87f7ac43aac023f6d13485c176cc9a1547923fda9b9df58e7371ce315c62ada3169596f0497a55aab3898e8e0ecfa9e33622b0c2c9543d68eac3a2621654c543c579f0e0b1e22a9f2845a6e3a329a2f9711d1d9d4e9a9e93690732b29b7e939d44e2ddf433367606d3d090343ecc39d7b13a3a3e2c354663c45313eb518333df0faba5aa3e99cfca63bd9142ad5d8ba7599707d551558735353550683533a39b734a5ad5c7901fcef9909f21b57b552912a9caa5c3bd1575522bfc1f2d9d8edad399415f9a1a1c487ed4c4743775999d6608a59c2e085194a2139cd6422dbc9c888808d543b14c444454f4c3d717a736505e41643f6a4f6e5f72efbb37474f224772a73b676da6187b7ce21db46f5e6fdbba6beb06da9df3b2973c6f9dcbe974efdaaee96ddbbbb6f7de3aa7772b272454b4d3c25e0fd1d69ae7b3f56c1fbe7fb0aead31fdcbda28eba012414a042921d4daff65b71265a071c691988a59cc624ed113e9eee011f4e69dff91dc396c664affa3f4260925cbd3effe03b8b1294b27be63f22714f97b28bf734a6da0122f10981537c9aae58a4c1378c266161c3baf991c9b566bb7c892070fd4b27e7fd6e628df2d98258f24396e74a3abbf553cd52d0eca667c69d8893495b892f7ff9bffeca49e43ba393d599223ee98e3fd4d5f2a4d3b4d334a9e46544fe99c3757ddbc55227cd7a8f739b3e8fdb7cbe3961c1c9b99fb62d9ed404ecbe36022a6e4cd414511956d2a954af9e83adac2fabba3288aa2e81d0255b2daae9b9b1b24542954e7bbf3ad33b7f865734fb0d66b02cb00030cdcd8e0306063037bcdb450d4066f612273c658cf9c5c1406bbbf7fd4475bad56d6f826e7779e8e9dbb38104192142da1447caf288479bbb234b264fa6a5d0b83c1607737769e3b77d9597ffc5dae259148593469487547bf4b176dcdccd78a813271ebeaddbafcb72c8765184c87926d711118cbcdb9b911615b679c9b9c19980dea7f6d612ebb333393a6289c1da82bfa765c78a5b02ceed891a5d8d5c5e5648607fb1915328bd67e2685ed6750e07e26d6bdcc1ba397b9427a192ba59739f25ec60dd3cbb441f2326cc80c65d6f0269397a972f2326aa0bc0c9594974943e565d05879993364843266c8c8c8b8d8de7befe3a9eec0596fceb7ce58e732e3e262f50ee71cc8985191f394bc2ecdc59d51e7dd37c6ea8caa31d6396798c5ea4ecef9669c515114adb5e4589624f33c4d78a7c44ff65e7cf1c55785bd5251ec7a84dde22f0b4f5bac8a5add4e69afcbde7b026189d6dacff95645fb62cfeb5f5a2061254dd05e0b35b3f7ba24f9d86760af389c14584a4049b3d9b6b819c938ebd3619d942221dcb33e0b24499c119c119c11ce8330bf8c0db039c0a63788632497368ba277d91bcc53baceee843e0fc3661208e36b51ca39a86954f06dc723f2fde01bcd5afb130e734aba423febc8c7cef9c6b1abc33aa17d75db6271677fbfa0ac071789f436f263e4c7482de751eb6d537b71d69b77acc3baac9b7ddd8fbc1af4f87c40a0d64778585031457f5d76786dad47647f3e9cb3efd6b6cdfa6a38e0f5e6561b0527bc7bfb7cbe5f94206f6f160b5921dbb344d68767f7a8e359effc1e6d3d76a015ba21db9bfdadfd860bd20965c1732fdee2ded50674bb518cb8b5f65a20106894858fc9396ce736a01b28c99f8f8fede1189ef160d9d8379e755d963d9358787d666ce83f1afec135db0de36218af4051a86c232195a11deefc0bbaba5c163b72933b63a15038c4e2a67dee332be35bc8449adb8c664250c28d9569ca535cc1df6baf967b443e4c625204ee0f781ee00c76998edcd27c7eef0689ae9170bd39f35fdf55b1819ebf5800efdd778f3ccbbbbc9d4b646d0f0cbe6876d1f43d2ae0399b15c726ea80c0a008a5fde1d86f5d6f0d6883b6bc75b7b7ae35dd7a7f3f0bd462867970f0065d21dd11dd11dd119ba6bd5e5a344bafb73f8b6343dbc33cb687637bbbaed00e6fee069110bbd961939331ce5ea3a08d4d2e778370b9e0706871d18f2d4682168f340e870beac1f482379885ebfc3b27f75c9b3fde6caddd88661ce77442b8c7b10c788fecef1ed9a0cd78ec169399b479ecdbe218c6dada1fc63876314f6f8bd8f0e664bc28767341395bceb318c6ecd190ef8cf111db11db91db0da672c03fdd404f8c1d3b8e5c6dcef79ee76da356145028ebd22eeeb263b73e3e39bfc4086f01a5bdda8a403fdf9c55f256defbe38c6207d5e4ba5eaf9bc8737af52cebd0654d6252c8f6d95b6badd63adf1d1dbb1f3031d521f492f5fe7f7ec9748d931f35e9ce8b30efbcb0fcf48f6b6a3567f58b058c48823c904baccd22885045a0a12946ec908f370445373ae19952bec4131a6061a8a772a952272d5d4d6bc783c729e49bbea5875ba5d215ca4a512a2c1f0b4dad562d342b174d4d4d4d4d4d4d4dafa9a919c7f2248de5cfff248d260dcfd3f46878c251ed8d2a510d4b5853d3d2ad47b2d197b0dbe8cb1c33b399d3d1974464446444662d0dbbc5ac7bb370636109451f4ecf762b51d156ed784b8c899d31b156afc56b09b57457c46ea58fca5a5245b2544b47559e0eddccfad81fbb5a9b05ea96666bf676d2fce94f12293d7bf7c22ed4d59d5585ecccceec4cd8edeab333abf6ee4ed745be1f30a81aa94235981baa3df5472209bb5038242af992245dd69c6b6ec253cd09593e2ac393899f4c1b853a997449cd7d35e854735da8f6acd053e9d66759ba208b657dff37f7eeff893b91aff4cf2143860c31ea811b470b6665c9e39603895faa21d43b7559add811c65a3cfe47d1b40573f1b8f1fc721c5af9f8d632903269ba7ad059acfbe9569daec87a856ee71852d23a3a381d1d1d1d965007b49c734e7574ac8e8e4e26d2d1414f07bd4593f5cc7c68e568fa94a39f9563d9538ea4ac1cc752a997bd8b9fc53b59bdcce2b172073d019c35a8640c1f9d05010003870014108644b238cd72904190414539144287032014068e0ba3a160180c068383200c221a08641084c1008410020c31a7cc6c00733c3f1c8d2ac12d20813ce6d3732808d739005c1d23b82f2b5e6d95a0654d4eafcdc8e1ee4df7d799b4b03d629e106507aefdf21d953cd80e8b8e8f8e9f91d83b5ca0583e8f41890790ea3c3c3d9f7d75eb184f9260d0a5658238295507f56c32c5aebd31346394b0e2190c08ebdfb93af1c8eca41e7266b803dfe886be0ac355a93ccec54ce80d040ac20719a627947d048e8663d2f2c5efe78ecbb4c1ea7a52de944d4cb9f0c49c4f79bdab633fb7b40458969cda0033081de8b3889339e0b76d90de43a7e0c7c3e6ecaf79f2d0a770467f40ca9323961ed003315619153d388c8131a7e6efda61dfce300fdbd8b3672f89480b51a36cbaacbc8583aace0a3e570769bacce2028867a56ced2ac7f5129d925fde18dbd0facfe23d94b716046b335242b23608da7c333b1a2653fc945da24698037f8ea31f1562709f0e7924d9ea51368ea4403693a68879c12108a5d424a496f53f84ae66147f9aa40724bcb0f76f8ee89a240c09067656431222cbda9e46096a9f35708aaa4f133fb9e0287c0a0bce66f3de265a53a4ac817322378c1d84758260c811e472012505f9372201786e881215d87ccc9e3ac86964993fea35f81b594e9417632811ab112319dc215b8723816a302c9f40b1077975a402824ee930c27a1b844cee0b9754bb06d5ab61a950a6dee9c6c938188fc362b0843780dc386c179b1db97b689fcb93289798a8a6a899819225861c032213652d9e219b4bf546b5bfc95616e33d49017dbf7797208e6876063d0c37307a306fc05c313499d61b2f041013c5c737650de2aa6d6af744da824d2211a0198c021b7653334eeede71c896ae474d2da9e40eb3a9a270db4b8b236bec69e441ecb1a3f63687a564d2a96f7b95c30e6576992952aea688867e9544b7d31ef445d4dd307c0b20f1e9a54cd83ee99d3c1c357d4efaa125b52bd5f8f8c589bde461c6a79d1fc4cccbe64e3a9930d83715ce4a0d24de3077227c2d1244af63ad79e8ed82785b86b8ea67ea0f4e137f74b44837a5a3833431d1491706cae4fb3a21dbbbe428db50e126b6ee408b6f395dc4ded0a930e652f20aee04a324c446798c06cc607537b731a00af8d80b7d792550644afc34992cc465f9e49f6470a748b0e3ef7812a951ab0d51e0e8416a6b171099ac9ce3bbd0de32f2a72171fcc84d5265738f4a43a4b264cd6ca56805db9c96da3efc4943eced0ebaecc353a3f14ed837e85908d2545a5236335d8f0f7e88e1b504173afada94f8a14dbd32a8809e01a537b92c84218e00cecba68e28673a6ff9f32fd0292693611783e8122d0e211139c4b3f8d0e268bd110e1c9dcffd32d3838cd410ad60b8a54af624b759b80164922370bb77c8b00a747024105e7e3fe86c32e160ebc470501a5d865f21c236f8f229860ba2684ea50c033cb2756bf1d97e613bed66ac4d0ca37ddb4ee6ffd0f857ac6f958e9180ab775f7d20bfe05f16ad2c4b80a274486f7d435bb452d108d85c6fed5e2fcbeaca62ff7539d38525bb54630cd31b932c556eccf8f9506775361d592977d93be2a35208eee4b7f01fc7c27256290a96a01c7f65b58286cc169ee711e6ebd1b37b88a82cb551989baf4357cd496f5ba2d0e222795e3ad733f795d45b65238c4d64e13ab9c1b9294d261bd67abd991ba5b7c945a4686c76be66d08374f3d66aa30bd8853fbfc2f5b96162f22423c2bc53b4fe8beea05bdf3d30764e1fd7ecb226c2de433d3504ee3323db13df30dc91ff5b995ea1e3c606baba008dccf05c1dd024ec39b4a68fc001c86dda1e24b6b71a90099d0ae7d9982bc1620f68842ed30370aef8c2da2d8fbd472b4739bc731d9588a5580001d10a46d447c08805b6af107559c39346065abe0c8e6840e793b356fdaecdb0ab44e21c1b677f0a56d4f79662ee8552700f6d0837532a097101da588d42f7e7dd22665eb6fa8f7c17d4f5443145e86121c7ec8262b6b64f1085fb39d234e2cc28a9d9e8da3be166a068f0ddb87ac4286d204d24b42ac05863d11514b9a17487ec2c4730ed76e2806238aa104f09c5175b6c8e2ec1b8f54fb415c10f24c4f3483f9d39c638efbc0b639162f13b3f1b864372bbc789ebf890159358e98b835889bcc659ff96e23e4f97438aa68711baac7a32fc15db99f45424611dfe476258016f93f47f19c1e9b06ac1d8272bc962992c4d8a004a59d69f79b9170dad2eb87a4079db176d1964e5540532cf6e2b3cdcc7d241f898e027f2d3534bebcf702c4b8c46a09fe3c63e40d4b83392f41f586c79b14a23d3f3a2abe4b65cab22672fab45f49bc124b63465e61d721289e13cdeb8581ed772a9bb2e05c271a1bd099dc9189bf23ed5e72f127345860bcbf1ef1d4e70f23ced920095e13b95752ad688c09e6c358af60d6969acca491697974990877f7edade22fa2f326ccd48a67d2ceabe8309a654fe59cba0346f3a44f85e2531a5ecbced6b82332fe3c0feac2541d615e12ac7bfa4c3ef209ba49aa5f271c932d8579a735dda829cc5ec623041a7a274149d19118e5979e3a65b205d099106811cbc81f72a4afa675ebbdd9e43b6bd6b946ec57a6e987653e28b341aa839e4ac275607e5821745358b5bb5f607bcb7ec37cb87bd9e36c2bfa2988a69bb17ad27f66d88630993ed6ec73895baa0171a4bc37d9582d9a24c7081e4424025699e4ef9f0a32c0324d8e66045d1ed3f32c8e3a8313f3392c9f6a652fabd14dcdd8524b475a181cd2961b3fd8c8d331f1b0e2806133d23e82e234fbce5d88842dfbe8a837b44e7ea96433239320966cc4bb788ed546893a94b79662bc0e29881af431c158eedbe35a7beab5c8a4bd98f25b449e7a50b8823795db2294ba408401c101fe723cd8f64887b980d5e4b07ec32e139733bbaad6b8df955d9fba85e4eb36ba8595c2ca86914fa9c14f8c9ea04058175f4a5f3f4693e2158ba51f393c62a402504f55aa998b24a8f32c96e1e350448999cd2ad64f01c7066c0d4d045bac6ddd09c875dec3ea0b2151e2f92b143162333399f71427f6954e8d99bde8737259ec24cf0e63e90a6254091331e2b06ac3fc9b9764a2088c701eacc6c92308d963e4a97aa45e57b42cd84a6787dd777c4c17f331a4304c76aafbb707daa75f1b2f1ff4e5f188bf1171d255c5cc43e1a27dc022ae3bb022cb052144282d41c8789a6ba8eec35ab4cd99143f4d2beefb6bff5330e5e9a70c4771360963373ce62603644824bb787aa743b6235eda8e6f167b030458e3038ecc46fd4c37322d05d18802277cee9932c9794953ea89f1f3f0da306b39c437c633dd5c5679bbf5156c2775a56a8082a701cef1e4d852035f2d8438913ac4118af69ab294ab4510f20496e69d9107a18005b0834dd9762a5e28d60ad640a9c03ac27d04807d4862d9438b3ec26a64918ac76e3d58809e8113b45a24d8b445d1004ef37b7a315f200be4e90c012f2ff7180b8b25b2ca7c2c1138b792b87c5a2907ed732ad00578c2de6cfe4e478283da7e43d1c3e5b776fc7aa8b0add48810956f25968de216be8d2a7a9700dfa6b532f5b23e351e1f030b3acf6c40d182425b60085d36a16c324d850ad97c120005cd48c7358b5d09e828c48c942593cf217231d9b6565e6ae8bb54cfe26b6ae5780756efb2ceab93fd39f26ea71f3a612027336949a13bff674bc1e835d3042b544448ddd8ede1daded0f514e27b93af5513e2026093c8e2a19713e45c025e28bc46a3519cf29bf1237a25e11ddc4ff9e60edecd0e6d9a3ffeee5f815914c96ae5bf7a848e83462c162601d87d4dfa92f9870821e0c286032125fd7f8634f9d020442bafce32fdad6e4550bab4eb616ce877fe4cbf3d190cbdac465f30adda97e8c92ba127472b5232418126cd5928e73f5811f835841db6aa3133f43a07011828fb88cda834ce87f2f27aa35c58b720387aa9f6d5360f6b19d0a7b02436271908c37d7f681c73a002707f16f2f26efa77e6d570a2017a9c7e96b53a8ff8d96d69a67f15bc1b35d7c7e6d97ba1525eb6df56eefbe2dc695dbd0db74b1eabb8a9e65260070674056b706703887d6d314b739a16072aa07cf5f5529fa6f0ac4986a5496ed548bb85d361321c57edff73ae73fcbdda57a9ac3a985129047f20401c29ab7adc5e51ff703e6298d1db1620c791084c81e5f1a932ac1b2520dc50f48902a2a6a8be5486d3b011e5fe28816440c51ef68961c61f17f9761df0074a986ad4b807a69bb09e67acbce468c36cd26248f2b9c6fda1e0061e241f578fc421994aea67fdacd0f7a679977e9997597503c0c1e4508d2e69b368f70b747cc8660e87a244222e25d2287442badf24dc519fa4ec286e5f0b65d384b0cc160d24ed66a898f3e6a0fde2234e40303bde6ee1102770a55d6759456e75c17f44034d083c0912af980d7935716a359d5a38cf4f9ed14f2093ecdd9d62ef9bd5dea402d89f2d5940c62ba3cd93e9f75a213897f33e69eb2ea65708b78ca63a8c7fb941185115dcff4a868a25c226a52147cfe85b2ad151239b5154e50c7fae084167376be316191e044689eff7b8b18ee1e1626df29ede0190d0d5f3d9bd739f7b6310f634b09f66e01a732bba708829fc85642aa80f30678d2160c3b692e63732e18f16fbc17347a264ff31cdf490b3ce4ab43a34c8b1a21c3bf6782c8dbcb2edbe44734f3b9bde92f28762b7a9b50d58bd0bd319ef7b4830daeec82bf68f42d794aee053c733f889863fad043fe68381393a5f7b4aa3f1616251870a70cc351a03b73049909afee423f7197290dde412a307391e8ba3b4a91a4bc40d653981ee500e19c9b0c1f0f9ad1d54b31571c6537589c9e61a2ac0acaadae576bb3ff0cb2453e6e9c88ce6bd7fc76914db6f55b1c075c8ea3aa6cc20d6474df6a348ed0bb06caba1772af9e6c0d1171f24cac7c89cfd17e8834cdf0fc02a23e0e94dcec0d9ed295c05c96781e7904463384329da468fdd7616acc5384414014a77683d131c729cd362acf53e6cd3513560c8410b11597e40f1416874c7044e47f3ff9c3bd02163231c0c501537caa763c2aa8bb2bdb47a2ae02045def426dc40aca9e04318a6678ba9bac0bdee9e29b5afca0488898e184f25843fb36041e6ee544b7b18fbd90c0179868f89973884113b4601153377651bf1e5c53d28961f7c69d86330be2b61500fc72a18be51c9b7bfe90ead89e2aa3d0a4f8abd219e61f327baa4f3551a4053f9359d1f8ed2341d2c85cc4e66f97d0ac5f2c3539d2e340bf554f8f638b215ea2df67162b2193a0afc18b1cdf81f703ee79666989d119d99a970bfa20c87f9ce69e7d68c30ce0ed6afa99fa68c2861f4db2f1d96107913c84d6b0925a1fd55f6eedfa2e406f6d185687a44caaf5078b208c27e2fa634c2aed1992b206aa916016c5e5d57359a3269366812b9ceab4a7f072a9a7c1ba2848f94062472a9d8d68b86393d843c27bb3380695cdbe5d3f3ca20254c5c302222694b36015ac3a2d517808d177e294257330b0de4a8908b64cc0a247f7179d00971fd1920ccd96fa4c3a69fb9f3bc492c68013cd074573b5f0e6bab2b2e1b5839d367dc5d11ae64100a1e61b8182d329ed7cbee994952ed2805daf7250fff5cf3fffcf724215fb1a5cf3031a27ab57fa8fcc294a5adfb731fba1c98c69278e8503e09e45eb79385057166d4615d924d385fb1ec654f646d5eec98f19e08f9aebf6293dd50c5356222dfcf006a05258b0efc54b5a4e42ba2dc60b9295ab632c11b371a4caf6a8420ee11ff2d88ad5dec01146e2ce77448ca1583e4326482d2e640fa47994833aa1c1a9d803853aa19cfbd1691f3f7df47af606bd02fd80406a670d0b415ab9d790eeffa588e5942d8a57e304d09cb5e7242d698b81a0f15a4fba9204c59750b8bc4c0b0891ea9931d65f03580cb44595f48550972ed6c913015205213c884f9642b1237a3e083be837faf31c3f0460b86ff1469bd7bbd723e8974746a39d86865931e9f3f1e24d610700eec830bd8b1d37e756da69220dbf99abaa9db63565b6c549efd09fcbcd4c77aa90b48f8ffa2fe2669521ec79315c9abc67fc620e50dee3bd991d1caece504da926887af343e895899762a50c07fe7260d18b3296751a7992f757a372efae72ae698af460ec18fdc352dfbbe1b488ed56b28e1606cbebce56d6c20c9f1401e4cc41dbe8e78f45a73a162753adec17f133f86fe497aa50c145e8540aeff2e91f63b2942f601259196a3801a4620ebea317e5279632f8d0dd0831d530d65cddbdb5a3feac0e5c41a3f3ff47d90d654971880c3268a821f18996686792ce2b969280488fa7a5f65d13244236cfb4a9d4a165500896901fbf104bf0c5e06309c95ceed792afe90109b6cbcb8eabc7ce63c2d671f0470887b3320787ec711dc9cd2d404f30545f3c8f4be09df799e4c9458b37000f1f007f1bf528756f27b2f3218ac2247c9760dad8390539c3a506b119f391be93d71453c9f2311e2868e53e7887b01869eb39a536376cc59d491cf709e66806fa388aae3c11157950d50ac260acc4fa958bb5a937d58f319a4054aa2a5d1fdc72893e6e2eab87dcc6a0273c21625f31e0b2b5968b40f1f16d95e5996861001f3b5055bb745f1c70f0107154cf093e6bcdfeeda164b58257715cee9fcc5745d8db42595f22705a22a91a84da7e740a1efa1602357eed4b421b5b15f118ec1761e7a254f1450c169126f225952a58e0718f2a99436628730b037c484b805a4b4033613cee6f2eb01bad34aff214092bf99a43738622de0f68d601ade0680bbe29f0639dace15c0b7b9fa0d8d1f1ef6d36f71a941860d02e4c13fa204fd4b81c855d8448d8d2ab2a6af25550b434de4eb0e9aa53642e9618507c939a774d0fb6968e8877c978f05c8ec00e6f5d712446cdbfe843a5855350e96fdfe64a74b5bd10401077fe403f984bd2fe15103ff887b737b6910665ad21ac3710299d3f0ac39108949b541651592f7b4377ce5df2a46a0508f807f436dfea5b4d1f377e452916ebceefd256a64797ffc8346f0d309a4064edecaa7c4e1e6938ae07e08f6cdfdb7ec4a716bbfb3e51e7123fcfb332cd0f70a792310ffcb21a70906d90912910183b7f719e258f9be31511bdac889bb73534d383bd573056e4aa1458a292f7b6f1b90fd20a6655105ad4da959e12195fb381b9d5aea4a334728fb6c4739855483c1278f41958d6037376af99fb786eca5e8ad12e77e9d008c8b6eb19cd09cad9c6af577e76c492b77a5f8fd575b1e90cb46ac52a6878357bf88225ab9cffde25853b27e0712258f20dfc6ec189f3d175105148b03fe513844990867cb41332a5bd93af3a5cee752bbb8823c45c02b4ee1b5584530ce5a78768d2acf274aa4dc1eee547e209789c6b54ace9ecaeb64c24480838e9050e6a31109d5768d9915e1b48407a11c610eda591892629ba7fa41724a8d876b79806505c3b1a9f83847fb52442ce3411e115928624af884c4c7f63adbeeb2b4e865d84383a8a91e1476f46ec443e632033d527a365111d92c7653a621725a64b75cb0e8bfca98090730a4ebc5469305d30090ad7e12c510eb0597eb55ffd6bd2c4fc55e725587b11d3de7926d0f4511a0828b6e3c6d7b8874b1c1ec7ba066e752a67f648f3aeb506ad8fb61af1510f1160e4e1b24bf488cb8fa97a2294b3ac3eb02e4bbd0065965cfce7ed94facb6a6cf2fe8ccac5d886ef471bcc1d17385154a43dde96d035269f62d4541339dc00a01266273dd0c81c01d502d32a66bee24bfc2e437999f8f8e36d100819169c6535a7d172761fff92a190f02564a17ddeea5a942751bed929bf78be0e422aa4b39c5c2bf8e20c8e227b55b9acc4e545f80233dde31d1b77ba935c4801afd11e4c1cced70f970b5400530e3314767c7d68e891d1859ce70763862a7ece999025c5f289dac421e92bf8f270bd5b69f91c2b78526184dc0340190c0f7a5163c5fcb730aa78a4ab8e08c3a14b26e1ca92302cba1ea80fe053a5acad183fcadba3b8f20301e22f868fcb24937a6860229e44d3c0636fb0eba80335ab73842c9a0d2ff4b71fc8ceb99d4a6b6e5d06ce1bb1a40c0a58e981d0733d4d6cc9016d9caff89f50299033656445ba9d4b4b8f38bf5f9df8032faf4352e69c4ae45fcdf3dfa33157d055dd4bfa9045c6acf442f04173ba874919412e4484d1548e6e40ee1e38412cc4178ed092c7728496f09a47000e22b47ecb00fefcf1ebf25d750f1664b9ad68a6aaaaefec9c4396a6e8dac56c1fdf3ded5afffead33357aee40d4dab9c58e6b5a10d0da8fb672056d92ae3a93db41fb68e975b9963c3d54064277536721f4609fbdb83440a363238770e0a8a0fdf025ebb608f8ad4494b6bd4ea7f0e330416319a2dcb2a0e3fece1c644b2cfc979b01873ff76a2943ed2b3f2bdf177c484b127d3707e682e48724f2bcbec19c0315b5e02b4b073914f0378b16cefce91d1e00eea2ff58cd50733d85604ee6ec03451931d094d3ec06d9da5237f51dd2a0acf00f5fff69757e1113f6c07dcef80ceb9a87aa251a0a4800224354605380936bb596256d60b193deeb81fd66ead7c30054caa81214fd0266e3afb669497b8c0a06c893b12d60777c39fef284f171f53839287c9a75bf01636b1de2cbf3ebe3cd5d9c350caa41b5b3c76041338cc2a4a40f96d1b14112a3a5a31c5be05a7893dec56da5fea1ae473a782f0edae83e3320296de6ba1204f28c16d725ad75f323c548153a43ff2a51fbf6be0873d5368066bc2ae71bc47779332e34aa9106b6720655445cee33c078f2e8bb5ae8716a6c6ff09d593ed419971d70b0f9d20afec7d97e0ee662b7b2b62e0e4c74a219d58ee148f4b34ba9a26bcf37e78ec04e4525e907865c1f897b74db492c0745b262176412245f23f640679aee59a51cf50381d4a9af568348c598fa39f8b89969aae0c6d974b4b8151838c174522ef9aa66a52c7565505884ab014f9d8b7dc0d0f2e93f142b0a9f74ca85302ce7d188bbde4d9cb1059ebde546e182576e34a4353d1144800877a8fada25d9f1c51d78f7f46ac6ee2327644c2f153aaf9dd4e8f59d1991ea5c5e143317a779b6e7a55b8ce2f3689260547170b9fba73c12a96bfb05bae5746b81083595e9c6a9163ed663f4872892464c0afb8d30f81755a5f35ab5cfd4b56a62a57180c07c3d5103ebed4466abcd76140c743b15c060e8b75243005c5d143bc752ee99f3d4ac3302ac7047b0fbaed38cffa2988e810e2f133cfdf70c14daeec0d07fb1bec2ba38ded54c69e82867168e984b33aa266645b46d0b7370eb8098f0af0d969d86e8ffd01ddfa57583b4d15d7b2d0bbb351a9cd270e69935483a7ca5fa2ab6ea3e9b079a4ceb1c29408b6d2fa302ceefc0e1221e5b4b209e746c21f9fe000fee5c0440b819f1fe9581df9362d28166c2d11b4d6a0a425ad9a249105f04cb44a166ece13401f36f20c7eb79c74881a7ea02cc6f5202ad62a82ad5a56cf7d9fe3ba28db06c82a7e00c704581a5a26ba50104f2d441ecae1f307c68e2199f552a1cc8f319545fe3c3226b2eea8e63c7802beed0c597e8be095b086cabe942b96ff65b479aa31d7a2b06bb78732d96105a13e8dbc12bda85861da47716c4cd2b4178d01adfe39023101189726c4241fc134dd4bedda9f634e9b3a6d8d4d2f1b6a2caa8b8d5fcef677bfb78ec30ac72a32df9af96941eec056200bbc41b31c546ebccc82ad3d4e8ecd796645f9fc382e63751b63b356305f4d2d2cca6780cd1b891109d4851ec3551ea77707c7ef6487530dcd4a1617ef5d892857b40b6c3b627c668f84d0bdd5b6f7ae9bde7de7bee750fdbdeb5ede5f58bc14e9f31a0949d43f3eb4177cfbdf6c4b63818f4c5cbbbbd0177eba52201bd7cf33cdf92aa4698375f269d71b590134ced4181001fa52485b21ec524a33393848a0696844ad86d51f166b9d81eb4bff0f36e260872276683a09aa37e90bbc24af1ff947392c24571986dbfd8e017cffcd047d9bc0e8568b9ae5b4d14f34a77112dfb08f2acffb788dad85b366328f602802b9ec692ecbcd0f3453be87412165ee8d58b6b28f16a26daac176be9057ee36a632776beff97b24e5e0b8749b82c81320085dbe060a00d9d3255513e87e71df9d96810e8263f12bc2ce389c7c9320762cf8866a07d321f6003c84e1c1b44b538498896e9915e976b570e1a302ed7604dabf7f8d970b61d425192e22e0e41844f9aceebd2058e9fed07ed81d6ebf6576188570df0d67400a44f4a204daba6c958576753284d42487ce9d1dfbdf4362ba17a3935014308cfce653e09e541d30eb7973c9a12ff188aaf9403fb48b79ef062706c343aa8110bf0e3ab59566260fed62e054a380b5659b9cc58a3487ec0a0c4f2aa0c0d85bb4428bd927f8cc40aef6249c447379a5e6786c07433800ff59fb97574771eeb8b8d8cdcdc248b657383ec3d2e51fdb680eb259606aef0abb46927facb8040d63c50fa7a884446cd6b26db83809130c0440abd587d3bba35e632ca663f06629da0c481dbf9ee2562518fc3dd0936450ed7d44b63b809d5c9e74b362c69dfc93cc8343fd00e027ecdeac32f00492812ff24d4e765a15c8979fe6b834da899183c70a5241d81e7ebfb4dea2d403ddb6721c02672b381495e0c2332ce69c427eef7d572ae28e93658b2ec53f494a57071c3365ec39abb5bdb28a656e915f20ca122f16013197482c6c091c4a7ba55688efa97ffd6c31ebf37a44071507f79d437c67bdf71f3c7f496001278da83618db2b0f309a4d1649b82fd343db0f324a5b82866d01505ec040dabb61b0d49b00eaf4b661513597d6c11b5529acc76c5752b5e5f26495ba0352edf2d61b035025c0d2f9584492d9b9610dd40e25e2ef76bacafec807c108f1c58da6761aa926de6237318e18839591cbb51fb2f4a401422301f6b0f2ee01cd7930a25f9d1c6f63402b91da9b0a60738b49b1a216f187ac84571beb10d3dd37bde92992e0841b7894d4b7010c5fcec95508d58d3bc7f63d8d05f41bcb3d18c1dea270b55ce9c1604db3262b0a594b88b4050c64d0121bc6ccc600a581a432300fc46002681d6d63a7f3cff436b99a01bf73bba517484c0118a0cfcec8c40c75f6218ba5f46e922a0c4db8966961110152ae899c5d7308dfc3b376429afe1532959e543486b692a872f76e31bbdb390cbf6b7a08f10dc9e986863ff66a08b125f81ebfaf6ea03c51b017caafe13ac963c78f8e03b1c7992436dfde878ae0690d15770dc6c4897c6a6e5ff2b012b685d076dfa3ffe483f7ba9c43d8917cbc3302730bceb9e9820c8e86cee4f34cb37522b072907e07924e762b63071843aecde0de1d3e2f09ef6f023ed38de105f87a3634205a5104261774c15d9d868fde5e3f73f8ccc1df2de520c7921396e0a2edef5883b634c8e4fe4a4a10c683aeb43bad91564ba04ef75a9828cce81a2219a5ca6e9cd22db5e0923d2c8d22118bb41c47291a564691401321c1ba105b1c0a7bb25a319bbb80b550c9b99b9057ab11d70d81e669c11cd655d8dce56a6fa5ca7dc950749cab8a01bd32dfb896a8b725d358de7c98db05cb7f3ed0cb815461a02f9a9be782228a8097d56129488034d7f6a0c2e1b9ec70b673a35c3b57be2fc640a8a2eab4b63c81bd455a4ffc36f8d03cb5c1196a2361b7d75bd889f5ca6859fc98493146eed2f756eb33e4ca8eadea10919a0d9962eeb8652a13b94286c4d9a3e6c58f33f34ae3471bfedddf96c74169ad988080c08000391779da4e92e5f2c38c2312d15d46d13fd5701ec611468fbb91473ec7fabe9733c04d8525168f1afd9078e3fa497f0d32fe255ece9978ea2e7ad6335ad52d712a95cf53482f75d4da4e3aeb653dd9defe21239128279cb9f4463739f821d930f908f74ab4f93bbaa5e45c8be27d55d170dd9a835ab51212e3a54946eec19c6ceb0522391a9f304f2721c98e179138382ce77759487c8820933baa3443b8a4a5cc483c6e995223bf6ce5b929912388d48b1cc380ec8b83c28bd511a9f0e67259cc23bd0b4c62301d0e78b8221e59c9565544626449753e3f77654a0aa6f2d4769944f6e10a026b1992edbf1ff507b2d184e26f39d5a38e70a58476d17db48eb5714b799f4467d8b4181f87baa69b756a6ccbba4674b55fdcd26593ea0fa8ce95d37a7d8d3449dc58e298650306527ba76b2142d7348f1166f7222c3387ad8c83cb2526c1041a4047487c840d9c1aad66c3ee659668061f3d18cf8d6a4479a50a9e1d12cfc0148a935f7b6bbb8778685089220e8f504a528b1bb06c4013cedc23ff0d1a4d5d160929d09418907291f24cc2220bc07a6ca38069439fc81a30aa98c29eb62fc4cb44a696af368fbaf839e8a0f7c55c9af8fe9d240ca44c72fc631aa87b3f177ca3983e3253fda83a8a9a8869d94ba5e94808ef2fa3fc71381d9cf07d07ba359473f5d5352e5bba8079963fa590d610fee97188c4072a3318b90e886ed72a49016f3bb31f7afc98dab48520f2ad62221d246b369d988f6b6bfd080749290fc050c211d94e96253e20f9517c23fb08f0a32008dd69b4d32ce90eb11395cda8e3179a4871b6d1c6619fe6f9c4cc535a59be49363c198902b11f0d7ae1371385e027302e09e735f60a6ce871f62a09504a728aecbac055c98d0c7b94375f8a744b35785692297bb1a647b4056266eb84eb84a52488390ae40a7c11aedefd605e5f2613edde6e26d91051c013c0e6575d59265d165fd715dcacd1554c8a8fd28452a1eb693cc80c2610e5fa6cbb12c5bf1d341bff84439f252a7d76b4f99d36f3f2052107a98c09eceaec30c44e7a24999320bf48ca9830f1620e61d800a6d1445c16dc6d8bd1d9680c5feb4b62a98dfdade6e0e8d02c0a26620b5355e9358051fc1e940dde83bb76d8b1d7ea025eaa62fd8d282800e0e416013f7235d51ad1d5473fd96f7700f3e6d4e0eb1252724f0cd137e76b2e8fddb3a0274d9fef558ec7d7dd5d22def4166157154c323ef57346ee03360d15167d3e309914116664e12538b14cb209b6f224691b5aa3e80a66a1dc4108e655d0ac75e1378f6bc5e197cc666405237c7da0e66399ca08d4e2e035fc5048f5fc0e28756630cd0da56137b06ddbab56a9a4700ab24946eaeca290aa6c17573cb61f9e3970917b02fb04b81021d7a6e0220a036f40f8f96d280563ec6b977076b03ae5b5546fa67bbceaf54aab89a555b16a0ec84e1bb5d0b493f89a1dd73f8b5bc7a0f130bc87ed0be1a6583dfe223f9afd7eab54a9d6a713f3cc0472ac579a987f6c99bef32a9c9de1e9303654f19cef4675de20e5f96168dd65a605063630d90a9e3a4c25dee6f5496aadec18ce8989cf0f45414a4fe1c2e8380f470a35d0f232805f9f7a75f9085c6d9b798182466a9b99b371fd77222118190c01cbe0a96a9195caa399dcc27b3a9ec503270a9667e3e9b4f768a142c8750532f6c1fde4f1162b290eb1b1e2a748130781c1e8ef856b38fec1e130fcf2b47bb73cd1a74305651706c49e7e1bb37336020471b9e89bff42f58158fd97ac20d6dcdf09630709cb82913d169cc11446e1f84a2bf90ea2af1847d94bdd6369bd566792d6e045a0db765c0d9b5b2d9ed36b4601a76e49b57471473d9fe291a638dd37c232514d30bb301d8f1b97765b796f802c261b1b198e3e57a8d80e0db08190319d682b0385c1c1e7ed611f28eb3157d1080d10a7809d4c42ddf35d435df87d54dfbe30ac0057c6b4f267b2103e0f0b8581cfe962574598131580fd4fb7d49920a49b3b91898b0be0ef5abed244f0b67ea06b1caa8de860e5910800bcd2820b9036a15f963cc77cab54c2a820365ff84496a9fb0a6180070383c361ef8b9b12beb40c61e8eadcacb5baeb2ab92ad56d75e00f3144faebf83e17071783cf0f314410038767cc8a99630f39aea7cdb4d0e6c9ba12611ae53956fd554bc664aec304d241fe03190bfee7f00327333a1d04f384dca409aac6b40500d98021e58c014fd8994fcf06d6c7d00c45868eb78ba7174b4192b6fec3fcc9f31be016caca75f52e4bffbd2f1c1467fb9adfa95ab8dc59bcda7a6d7bfd8141dedf1fc17481480240004074fb93d870b36473c949f11f60a986e163f9f34408a564d3e509a8af1200ab457c60dd958e583af2fd23de37184d23ebfc620b833fae3439d80306d2940ca8d58bffe6fad19b6fa7b3d7bbbcd6a598b142c09b43f48876e72f0e679a3bc90deb02f99ce0b0a7688aff0a585a133079b20e3e084d10f96dc4fb9c97391c90405997c6e2fbd46bbd7aa3ae1be8f575904abc32bf147e2f764255e47ff54ecbff1cecde5f3992cdb0d5f597c5acf6eb3dbac2cc79f45220e34aec586d50268643937fad62d5c47115be896cdd96c8c6a5254a1ea2fa6c5d5a94a3e90233ff0a092cf0e67da78ff63630ee3f49d68806003a18eb9b0d74ca6a7b3f9a6e5f43ecb80b925ab96ea4b503b6130a55ba649054613c67d0062256b1d7a1bed26dcbba8f63aa1cbd7ad379a1eec999095bac37889f66b34357450fda47f44a17a03343861544e1899e0e68512f5473d0c5d7bdcafe510df872c76ce89bf34431f8642adad0006f6134857d2e0a3828c73ac195406d0c949e927958ffc65b463adec2525467c0b547152408249d1178d5465d3ba64fc3f9318f983f935918114d2d2968e9aecb57c0c39f204e650501c3549965d97cc4e1c645103aba7a513ae0c307b694e4a0312248daa028c0e02c6bfaa5696e8ca3f8e4dffe3c19b8f1752252d929edf16c262d4ca4a6a5346f9a84dbf9239b2018638f28190bc4bf6a335b4169ac17af6002511aaf1672e211fbf3c30b10d11d2abd074764af957328c23df0df1a8ef73d811c8819683933edc2bba5e8baa54e8c375dc715439fef68af5210fade7c14ffcf3d2588a5edd5e4104eeb1673a3bd708a3d262653240da13d4b1b7cb4467c5527890a5608af36e948dac6c623f1f62da0b4fce1c410d5e2ede7477e56fc49517435db927a5f60681c9cff3930801b15d4f1a5363788409d79bd1505f2554c74137d5695730fa3f75508eb413f0981e0761db0bfe6a441cc5c2e1bb015680dd7cc7f381144dcdedf0d1bb85874dbeb84b1b0427ff8c980059ed8cfeb1e5bd71ecda7eec3ef7ca46b8c1dc3e2496a0a0cdd01053b54e7718905c03c481ca00c46bac1639a2c87bb79125a0e55c37e6f373a1d3e2f8c2055d76799cecbfacbfac0a20216ed6c3206c818b2ee17cea58e69e79369f8170b4420c315f530c37307a47d357a2102630f3caf3e1123c503c70e4ff54e09d91ebf6ed00668254a53c825171181e4b61ef087e99490daaf0da913c8cc8926ebc46ce09c794d4ca8dfa726c07374a0ef1d68f553040db6e65e21d353c23116899791359d6f54496fc0c7e08cdd84e1cb9b61fff7f75640cfc87f10aaa6cdb9ec861c5ff0371e7c2c67f891c21768054ba26a4cb648500da6ccff531418b4d9cece62bdd6c8142f0641ca44d7b221e790c1810ba17ccb0f52a71bac0e78c6588230a9b12da5f135af144df6bfe6ea84851aaa00222ceb7f268446bba87adb300b4b50df7616bd8446e80ddf1e8b2e1a7e08a98dc2cc761e6b0b80119802f2431b5b318180c31f511ea36d8414fab1a3912db05211e94a26b4d535a5fde23b4017888caa69576a15956546ec81c8f1d4d034920b46f93ee80c268d92567aa3f2ff7829d88e4fae0b1f2f05204a8655dc03d73d774162f5f8adc46abe87bb556d8b7555172091692434bfa36100e29fc510c6f75e302a86190f52fb31d250f2873b63116bb3bbc032ce8633f0a28c247a5524c0968ae0ab6e779609e32c2947d224bc725c9cdade7bdf17024481ad56133881e982aae19b6f60958e7da4233a94f708019e559c841b230383f303dfd716302260c8e0218b4c7ddfa4b1dddb74365306386d1fe4c57cd6254f92a83c92bd1999c40542b836907b0e66d19f7d06261f4f03a06762cccd9ed580c7899e094c46d061a4398825000ddd9330196d800caaa5aca3bb06d290f3f820147630d7d4dc1f83d66ae544a26a76780239b249033bd650959111e93ec663d204f7bd60dc8b3cc987e8a11a93a059ec8098872f8cd2ec173817b606a7d8897bfcad1ceacfb493498177ac39747096e0b5b79ff919ec6a35c7ae2dbfb9b27f473040be2a5dfc4659134328d9554514884b9ed51e2cdab2c52fde9a0f732d151ad703cd9026256388e91e9b6dc85b10fc8ba7d65a18ecf54a83e60c8577982154877590e0070a08117837733f25a2d6de0b2c0deae800c4700cac131935bf422ffbfd95b482ad60790dda55fe3dd0d0d4654c57b7390dff26849f89e54b6f9d87e057481c8779cf522e3dd76d7b7a25893b4e9631c2130d536d6f96e0935e8f933ec8c33ae2dae054dbdb6716bcae48450df74cebe7c0f41d546dcfd548fe7aa10859c30d33fdcc072d721a01c776bc712ac6fb69283d253d1ad96e1b2935c549f3a97bbcda8c132fefac95b0e7b340a850fd6528e1b60b9ce8eee73aa973214bdf3377605ca8579c73baed72aa7b1682c03f9281dd6885e985062b6284ad6a063205f833a2c40b649393fcd4bc410769c49f65ee1134f1395c0db7d11533cbe0035a65cd4f9e4617c9e3e3d68c8a7b2217ac08ca9f8c1921bef58defcdf077aa9439d52526896684177bd82df87260d21b660df4707fa38524d9ed20a5034304da0e5e1cced38bac31e53a41791009631f96fb94ee85a7c5fa0bad0e0e5de84ca8ef5fe7fb622a0a39044bf86a0f9588384de5a22e1ad9b6245deba4c6bd3105e5bdef75f3486fef709045fbe289bd7c10cd7bca11ccc1c42a1995e4bebfa9072bd0573c0bae25be26ba17a8e0577c03a6d59eeeba12abf6573c63e69a985f275ffa95f999c62f5f41575757b9fae6540f77a63ae9c0175ce4b0d5a814cef4351d524dce780eed27fae86d6f27fc6cfb8e30e70eb7603e60815757aa915193de5cae92f7a757ba94b191ac56a84ba2df5dded7dfa9dc12857d4a619e2483aecab7123c5c01d677c4fabfa172d9ac7d739198f13ac75382548d2eed11f9a12cb2c1b7856efbf4ece2b9f3329fa99c2650e152f8e7517b1029d74e41a9ac3da4203f910a064211371484a79cd8c699fac9fda20716603f1620f4c2c9542074c0a96aede48f43e580924da38c3380cbb632568de8c69ea53b607572805b7525b6536d0094f9812c1e023b0ee5390e328e816670db09390a73aa5612986d2e2d116be357c3b04c76a30079caaa63044900e01dafa91abc415a9e183a8fee4fc6715536d0872393ccdc9f149e413918ca4873243ccf7d723d519c27a890195b774b701421d603e88ea943de6f883efbcb6f5e42f8e405d1892e9fc30d0b6bce29671ac80bd5f5845bb30579c3910e4d4b460d96895a2fa1f940ad820b87927eb2f115fc7a3f31ae05b620056f182cc3e833b6c4a597143909ed3354f67aa33881642f07389e34352f5232f5cbc2a01033a17a3a958644f4d58d8a0e4775f4ce141c4c16e6c5135c8adcd12610c72356e4b74796c7c2e97dac00b97b25d0dd5db2a9482686275aa93466f2200850213ac7bda6b449cf740e4d610088661a79f190e2d53ce6acf4405580b73d8b961bf78757e3232f462beffba11d9c65cfd863b88e9d3935cb7b03da68c3ebda5df013bca26ff8c462d6843cd29b305614389cf42c9a4245f7ad0816d1250f6378e61d13b448480e233ef85d98794744e59e9e2885d8147dad13b8f5ba4e688bd1c071cbf15b0b4af475d902b7e3a5509d9195a2657717cbd308299c73f43fbf5d13aeeeb5cdd1b74fc19691f7e318abe7b0327e918a86247f9cd920eb7f944968663440d8d34d5e7e3ee101a19d35f89cbfdefbf0630cbc7724a109d0c50c286a6425b346035f16b8477476993cc96a92cfc3e0d700084ebfb0917ae2d4bd0be0f0f6b6c64f3ee8c3c3e55e894dccaa8b3a318a3ad492454a1b398af47744fed3aaa3048477ca3de2ebcf4933e08c56c7c121d21781a5285c1c1054b2c477926ae4758f69e43e09ce188d05e13c44221a17ab60b4c435ff10559d6c64b273de8bb12cdfcf98d124a085c872b16a1a691120a6d5d4086564b8058f680edb7be4c133b079146ef142d05874e71971dc1494a274e5699d76481d3a71503363af48ff30dd7d04d987585972626d9b7bcc780cf26c36b054344a724ba5cae4dc0f4645be7d3d2a774a66c5c41eea159e97208967d04731d1e30471f148aff49b7562642a18cea3e47de172768e49cd57505a63ac790e9ac3752a88d77a0f5c84f42976f2060803c85b26858280e004e59ef70a021193b1f6ec3d6ec2c547669a12e1c2a51e3feedc3a91c5b97ed31a5ef6f690b08786a641e3e46a035ab36c61274478ab5507731e1fc244ad91d265931a0afd2ec21423c019df1ae56cea279bf6b58df06b785c277d82d94182e547cbdcf30642c943a0d736ad07c877c32ed5c55f725fad919a66e2ed463cab260569ac098cd642a165da83a4b9da01681cae091bc68a5d96bb2fcbbdaec50b3174a04fed74a73394d4a58121e1215736fa01abb8befb2c98f89fdd960289b0512f2c7c050d32721d6112cb8c0c1501fa5b5f598ac156b28ae448961da39d4085f5772469f7049f0b530249bf37dac94a3682762dcec9c6d9cc13ba2298f73ec111d253470b27a1d08d1d1742e4233fafe90d5a177ec83c7d5077ae1001e69e6c582f683669031294c001c438049009636b2d3a6537b17758df30a5b8bb1c43f538e58b74408034d1c44ad85e9214449e697d76271784b8a1e921020c3461b1036f247440a9e882d4d89c79fc9397739ca2d2fba12c6d8a0d9bda34f0ebd9bf4b719401d3d046e2526f805746f023ec9fbcfd7dc47db18a72947a56949be7d8473639c4700e234aa1cc96dc31df499bbcbd5dade0e3eb144b8eb408a985333a071d3f38f64430bc5eae92620d72c46e017c1c12744bb9e175c333cc80f9197cd222523ff748c69bb039aa4998960a2813aa84486030a77ec124638bb80f4d1c9098fe505be2c60dfa93a71e711acab51e630e48a8191462ba92f7c4df65acdddf45ad63c051c2e55405eba41e03b00ad25165672468dd5dd7a3e643f426a2bc32ad327494c69a80ee4998a597a60c05fe1769571acc0974897e8548c5f52398b27b598ecc9f4215627f11761ecbbd48560b459fd3fbd93bfd8507fa6cea3ea90f939a3e673e42c631ebff849292be0e11e2fcbd8bf45de36ae701f07becf9141d472df0a63abd63f76e221458965dfc0d89ff317adce9d1a9cd6316821dccd79cf32ba5e806ab59d15835ba459d132145e34a4632a3a95ba8eada631734bb3e661c5a0d24c520818ec02855274c5a70b23c56a8336d44cba8be713f01ae276aae15699b220b2fdfe14f6313425b7a9d8e5bc97bae2cc9be843a1883422834290257b7dfb6c19c00c0e14b34c6c7c1f55da6ae5a220f02484033953d6a624294f714f3a590fcc198e7889bfe131693f4787a403298572722a1b64dfa34a60659f9a9ae92e80cd107819402804f4acdf4d8429db5539e83b4a9d571a15acd159b03c633671238b6318569f60ba8d3040d0afab6b762c8b71c35575e60e6581d960ab8a9e62958b1453572cb241f408059af1325cfd1e301c62172b1fee77112513220c0a910d2ab7ac9a6ebf7852fe841fea60bdf7c31b8bb6de60dbaf77bea1a6ffe44490286d6e80e62e81c1d1d74db43adb13bce90ac347166ce322026c0593d6bb949d4deff66945ea6a5bb34c561846290e20db06192a7182c416b94b30f1eea4e9c0c773c03b2fe516334cc3fa440cf02ed3e4d5b12865f9dd89312d5e395333cc6b6aa25dd759b1cee6e6350e47d064edf1429e67cf645be0fe22b013c9b05a8076d336ab21113c6a9fc9331dc9537442e4483200889b92f49760a09d0ac9ff11dbe2db605d92fb368a2fe471c8a076d61e89bdf016bb59b916c99c69ab7bafb34a711cadeced2a1773a8942460323ff6f7035dba03451ea0560865a983d00b41ace830b94728a500d841cf1e884cc3afeb18a21117539823191fcaad6098f528fab100a68586af5ef236311c5e4ce2182c5c458e9a00fc421f06e1accf27af4a94d0a3cab860330788d725ebc4d713dcf9d1cf6980cc86788ff70468be542ea38c43b9a348045bfcdf56aaf710532683291855c186fb80e2b90263d8d3448c05de760ebd1b31212a8dfc9cee048f48391e1d64fa0d3abab90b691ebaee0779719a6e1d6ce986719ff4ee32a31b7aa53cb9d242c22785bb1c342988f3fcc648d74299c6abe2b45a2ea12f96e7b39be7419c7bb22c32a907edc2f85bed68825152b93239a6d6f32fba874b45681e5da57bc6feacd8a6069a506f8184a95004aba92cbd215a9a9001bf478c12c0971e4e34ead177d1ee26d516cf6f3ee459e7cdcde220148dde49e2178ed0e5c991a35eababf1b2ef106f9debb693dd9600522085cca6c1b693e0867ec3a7b07181cd0e0ecb601ecd01cbaa21a5ad756e0ab18e3435de3add139886fa51b87e232ed160bb0f0545dc862e3c2726595205164276d0715e96240f0e89fe03269f72083da825ccc32e013e35a937d4159bdddd7e8f1d5e891de599ea2fa89fe02ccd68c26736114ac3e196d73a4b4cb6b04e951f1decfd1199e510ccd75b81d5f496ecbb11f4dd00517abb7ad1f0294724fcbc35c87212fade8b3ed0185c3d2fb64f4ffcb9008a6b9c1547d0d83807a48e540067af2707f726a113654b2e0d4669648b2f2a311f774e3eb8d3f696765dd02b16c36000be38655173710e101157413ea4ad42eda288b8fb49c896524a293391490142014f0156d3be6aaf38096f38496927284d63f18ef1d56aad4864384e4c88fb709750ee1172192faba9b30a14b4051634277057b8e003db486cdb844230eed63456b2aab0bffb76e75c67dfdc96fe8f757c531d2b59c7d4ab693df4b10a562febc53ad75a7332a1c414be191fb9b1d6da1c33c7cc39ff02b61fb9bf8d86e97280f338a62fd8f6e1366efb7c4ed98ee398bec8d4beab828f92f68a291aac7cf3dd3079224fa4f81ea83defe5e59ba981a0a0863edd3fcbd8da8a894180808686412854275cf8caaa264f5d2e57adb5be3883c4b03ea39afec9c73efd4fc74a6e5565fad8c73e86329deac5b9eb4674ff93dd3f0dd29b1fdb8afca95d982af8bbfb0000792c2d2e7befcfde9f6eef6e234347bbce7d234332244d22b6872832030642c4fe6a2fce9bbba6b9ade2a588e583af4a538372defad55e9c753e50038181cbd04470071fc54347666ab4dbe65e78dbdc864572d4f74ba12e5dcd8379663da7f722a9044969c95337d5341b85f5a4b9ce5387695d72ffe82521294529911c75623a311d593513884a46db0702c958ed01106fbf76ff7f7fffe7feb7df3b635d72beb9f61bbff9fffffff22d8e3d852827517fcd5a315c680bc4b318ec89ccfa75a5565592e44a448d38b52c77ca9d150206345f877a19dec68fd98e0e8b6445e00398f06c927d3fffff8f421ffcff1741d4ffff63401df6f29e47911a6bc56ad9e09b5117731bbe1bbbec8ea3a35014658da8a3400f36be541a6b459ee0eaffc514a92a4d0b8e485fb24a40e8ebb271dc1977543222d9b59cb5f60231300508bc0c10e0d2c2e281007cbacd6d3ae36bebbb68c3c4e02f06061fb8d59a78e79c0dd8a8ff18e3da61cd3ff64bc0e00f8b2a769b426b9fd6b44f46b3a95ad3da6e282e65b7cd8ab43bbe177b221b2655a95452954aa59b90044190044190a481dff7a5b52f1e57c5b2318b2d06e1ff8769ef65735babd51a47b2344fb4e562a5b0b0d56aa5413c4d842307901e3b74e78de3a8a4dc3aeda36a1c4798aa5c9d2c57fa8aa5e7798e23599a27aa5ab1d2f33c595506544d4d739779fdfa6520c7f33d229c359147008155c399fb8da645c5f9f57d99a677fd2c537341df73eb08907ef0d654c55a4bf79dedbcdbb1e0ae25772eba0bb07502b88d7b47f2ca585465bee5a597df7ad7a73e404080bd5dbc74337be9aed62dcd15cbcfd4799ef4a5174daf42b162b8c2533557277a4929116724efa33efcd2df984ed7797ac0d10b962621399a5d3757adc3a3c3a3d393528ddde96922929fa827b09354781ba4709842e049b0bc15ef30921bac55f05d5c8cf1cbeee7ebbc920862f9402d3c2efa6bd11f8bfe401ae469d0877f93531f029a1a08210913aecd850d6f6e63081ddc4d5ff9a9b9fde1f667c361164d373de6a6af42377f269b666a85b23e9fb9f5a3273dd8f3214e4a45861f7ef86f9aa1a98160f31e4b7e77001f482a85d574eb010c13ea5de20db121db436a038bf329448527ffcf47591cb9e6f6c7b94d6f7a7f3cbbbfff9f520d1b408438c13c88c8cea996ac9ee0d9c559733967943382e59468ced0ce2e5460d9747757a040a43def9e60b52794870ec31d380a173119dd2ce6319779cc2a777787799a53eecaa2bb324ede74b75f7f36475f66397da5a967318b3935b336757fa93c751c275563b9f2983f7199f3f8ecae4eb34866396a7d36d33103edf5d13fe947d925c8e7eb9e3d77399bdbfdbfd288cc073defe585c3d75e7b63aab7befd7bef4d8093c594a7591cf3a6bbeda59f4dc7e4ef636238a7ee7d53cfccc04406d9ace1099939e7ccb21aeee52ed6a123bf6c83260188feac848c5f7d00839700100e85811c0b9318c5400c645079142388c2c0fa7cbbe05276886ccf7bdaf76ccddd2f9dd500cac967f72eb201c1b46e9aa635362795b41dfb93e703da37320093624e9fe3bf1486d4234c2cd43ea167cc5658ccccb383392f42086099136f1ba8108289ac197a994f3b1e03c269be891a683aa935cead988433f8fd1875405f41d9a92faa82d57c1655ff04129e194ce7a56352eb2193b28f849b7a207cfd6c196836dcdedd05da4ecfedabb699ce7bffd66e430a6ee2769c497fc5e43678848ea2a37112549c254fb275b14cfae790b6e178b9f02721d75fca3cc10a267f6e91479872fd6e410dfe077cdd21067364866cb96d093c693c449eb84446d5f5ef48386478b61a440008a8fb4fe386dfb23001a9cdb3adc8bdb8fd52d32efa550309dd8a6da5f9a9aa5330b87554c811aba8a5ee4928860a8253343c5516e416b58dbeb4f3feed7f1076ee0a93418018eec80fb1014bcb46b3392accbc3fb11d32b68b53ccd9ae43a28e6b30b7f7ca87545f68366683af7fc5e1e4b90baefc29283aa90af037d205c0a866f0ac1589a99b309819d4935e2de5c6ae088dddfcf6358ab3539d9defb908bf9c8102a3e91cb29726ed9815436a013632c30fd4f9a2ddb9775739ce709b5b46f6e5b1ab60919c0567b045b6deea64b072a0ad9137c4060fd77f0b76a05a3b32d29115d892ad87eaa835b765495e2303de9c3012e31c08b21c9b9b37a337ba37c32b8e8e941c1e7be8cc9d484d5a50043863c1fa25fa8d858901b0e8506bad4a40c068b8cad5e58a67f1f9407a2bb7fa550f44f9e64c65073214c0636a325788650b0413cdaa6581c1c1ed6ce9dcffedea1c1dcd74f0eee121d4e9333ba11db2a75f1328c718e21a6fa7db8686be606d5bc1933b0e16e1d3585b05882bef72750c0731268ee481299b8d935106fc289cd8c60ebdc05d9e2edb5efe58e1fc370d5ab1ec6922ee0ebf1053d11f5efc5888ef8b9298543570464b943ec972c8894f07e7fb40837acace819b4492bb023bc0b72600902a683967754f012cae7a3823ab89f98f25c1c8dc8df7585af3295745c38c01b8c2036bc9e75007f45713b39f56c310121e64e1745406bd050971050f2bc5e30567737c2e7569a08eac6ab7c7e1bf793f4c41566c0a9361821972058103058ed0a1586e123c026ace796f594de6665352d41110221979d636ad8e29c906e29a40da71b27f35e4587138900d8441a942ba91033cfd4ca2a2521d29d8769b7be35a394ece404cc48549b4bbc7df8cf510018f8507b37daa6321f44b5ca35605c9b3483fca74aa2e0af589ff605e04256c2421d5082659031eec987d632c58880f8dd9e433a9d9fab045e8ffa47c0da0646dabe10903eb1279c8a62c0732c67dc5fdca4971deb70bf397ed44fdb8c4150449a691812fb987b640218d052236847947b02cc0caba19729f286d9670076f9919e28e300f1cd56c062b05eb3b36770acb133333af1aa581a84d30ac3e5fb7380a72c893fa798ebb48ac1a6d512c1d880f7904b6958523e1a280253620230023834e0ffd76b22877ba49dddb5811f4968147959868b148d16f268b72a7dbd43dd61a4167cdc124de35ca5024831d2efd8be87ba302872c9d206c8db3d7475b8874c8297431805d466cdf28c69844a6f441932191c9960806463662695d6f2fabf89f8f4ea9a17572bde11bea309292441c3dd900a16c096d3e39000497161d7c24aad64e845acb7b50c7026765f8a33d526c68eb7abff098d3718b5a2e5a930447cecb82b78c682ccc2be89f27273bc71c3578fc0e87c490099fa9d063e4094fef51f46ab262437a9ef3aab747000ac0fd6b6c50ac9e404bb960afa03080503d03b79ddd030002088dffbd72462b1069a1708e0463de56586d141a5e5eb8d4fda10f052d73c7de6c558e3d57649516d60c4f765abe4cd4b8b21545770103fbc548325f0c248bd4ecde23484452d38e02e58df56620b2e01978153dc5bc0fe946891221b4e45c4bafb64e1467ca42bc73a788ef48c862e2582c138c487ab912ccbc3313e961a7c60be893add5ff8eaff871c713d1555aa63fee9d7c79bd6d4868c53e345843818a32a17aeecfd3cd0dcd7ace07d7ea39e8523d075da8e7005e66d9a04ba5e3040257415c0aecd7c2d94ae1639fb38d523f9b5c6ac8c522c501f9d027dc36d2258b788f0642832506a9fb7e96d56eece5d8be35f4db3bd0fb804d533274ec48ebcee5d864b8a0b9766752647af0cf86926a850a90e140cbb81b95abd980e5360ffbac41f6c8ba59c559c72c7ff71db49205fdcbb6b92e7b0c698f495dc897202565ea9da27031be6e3d37492c2818e16cfd2dbaf53bd3b458aaeb42a3e0185363ef9c208d5fce95dc32c674a283cd6e1dcb67084a5a281290b80dd9b8ed9ce7d00638b44759b28e8028e455c13078ea61a1e0c7775b76814e5f3dd6375ddaee7a50fc4b950a03709c75325223b2d90faea68c1b6602b425229f7441569902c493e4b5ae328733ce4249a35718d026a3591a1a9e6b6b1f1f46e17bf6bf1cb4f02df6261627c94f9e70d9d587ae48b5ebb8f741748b23387e6b1a620e3ff9af8fadc7baa07fb6d24ec2897ffeb627a8894b2f07ac91c5241aaf194fd557e4311931f936cdc39a26044efeafbd23f104774b609c87501e31637e476b1396bd1f15f355ff2ff1e620016070e40d9d90d9ab61180fad5f827821619ef2009acc3c956e9c9d0f94acbfb4718ac2b5929876126fadf405a7eb136d46e4eb732e69e0240be09d86f264f699f49ae9bada199c775fa9b54cdc35d5c6477753a7229417de67eb636dda119ba68121b88169bb301dc2e172a112e62e7fb1ccd3ec924abb37efdc80b38f53d0dfa95799319e58edb76497ae70d60c02d4376c28cfc0b9b1332416f711f2c5335668989eddc82f307f1289c872d9b7994cc97d4ae0683ad6ab7723e0a4598f6e0b8ff488da4718ae5d7068707141b006e14855d418ff9f7e0255d7a89d4805a6913c3546b5323dff59d5e3679875112effb5413ce9cbd6a460e37c1fccbf0ae1faf2b10bbcb37af9f436bcb5d1afc3898a212994d2dc17a75b5aca860940cb6eee8b0b73218578f6d6b34da51d6a1f25bf1f4ee7052e41a2aba6e4b59efb2cb87e83195f737d7718ef9305f33937ace4a3fd384a74e2637a7adaa7996e33ab3c5eef0f054bd03ede6fcd6a791df1b223ffa9fb339dc048334cfa202974df4493913b40abcef9f79ef629a9e7be4cb2f23a61da628851c69b940d1ab7912ef7e9399dc8f9e2ea18085cdd473f10027cb515e1db179d446cdf3eeda360661bf4d9621a26b66a0a8cd0995e29ed1dde1c08082054eda4a18cf6e71c0ad1072dfdc009de9f8b501ca1050e4e64a6b69d9250e531d6eeff51fb5c91941eb732483976382546b4b177e9e1db4f61dc428321db280aee53e5b72565f629c90b1983bc6e24c8237820479fd220345de0e45b2b94b691256e1856059488cacd40091df9617203e181f15babffd65fa79147ed587f6b889c8dc059d406b6516016a88922ce9bf11e9524d8c42744dc61f36b04a9f45db9c622ff45993f1dbc8c4ea6f83bdf2649d595ca45a1e34ef9ed18f0a24500721190367cf4735c1a9049d552048885704e798f226234836fd243141aad1a0a434fec9c8422164450bd275f1475d245ec336eda2648b054ecb642c30836bf89c1176015911f3b2e7edeb7447e7ba096b942a3b59456498767f118104ac1e8f4832387381d5d425479f1a5a3a741a957c97a0a115da2d3a9e6dccf35a08e3db6faf4a1de1a47bf5e57881a99b4ff355eae66c6e42316a2fdbf540094fd9eb0c474ada1d196144145501729288efef53ba581ac9c584421e2e7493202bc77d5634321a2529f10a9c9c0de2b9c7bcd5f56bb670f62f0700e8c178c28af421d5b71b342e47cd64b0bcb8468a9f684ee9bee191e1942b97c7c498828b5dbc908b73bc840b0b5bcbcf7706dacebd32e33c80891cfe20459347f14333a88e0e87cf640c81fe7e71e49cc3df75fa1c9347ceecc1e3c3012b41b03562691141932889239c22f72e2d524ce21109ea8c7cea912d6849c39a4068b0c9ee2dae2a9dcaef5d8f7b77d7655ed00800a4900c0f1f5ba12b3d7c5bbbdaea9ddeb56fd5e9765f8bab2c7d7c55cbeaec9e7ebd64d5f97fdfabaf2dbd7c5fbbeaeb9f1ebd6370280bd2500d8e76097ad07bbf283b08b57845d732609bbd54edfa99881855388c7f13797e8fac840d7586a84655b3e893e75f58753d0969e0bfceea736a351f3a8c76e3aa20e5bd1a77eaa09e7ea5867083de9b84296366b6e4ecf2c507b5045330905dec34f422b996adb220423a388cc599a509aa02ed61a8e23d9d17eef9bfaff73bf8fb11c43d411a29e5d5b775639dd0179c1231627b2d57d4c5fcc78c3f07aee69302f1bb1a15a3c0983ad2a128aada96726b16df1dbdddcac8c6efd4bc0a3044365a25eca57414ab828f2cc8651e4e9674fe40260b23413ed31347f64e9ee21828ba5e27c45955879ef170982b6977a34f253404a0a28671c5282f82d587f445ed70e12cd34051ad900b466cf07dd951b933c0c4cefe4693edd91190d08f1fc72f75ab0760deb5056dc4209429efe7efa73565dfea2778ab5d51db12ce7a72989540178dc5f9d0e2a84e9b47ae171106e679f0eee2943db642296992de6ef870bd1eb9bf60e091f27afae48e3f02b569fffc833924854edbdc05c6daadc8a9f7cb52157d30afea9aad05f11cb9b911e069812a296126b452db3afa6b94872da208b227aaab4acf7177237f105ae20a0ee645e93fa67f00cada062ab095ead4053c3afca689c9e23565e703742ce963ceea9d6679e24f72dad32752f04daf44f77a1f3f8cb72405afeb3c64cfe202f19b6ba9f46b02be0d238b939b616c78fe500af88db4315cb9e6ac01dea94d57daaec448a199a0e66896fc35173e43b1169c51c845447a802cbde03aada2521afa445afc18e752f9b8b7edc58b8b70b9785a4c978bb482d7200499a810aa244709cb79da2466f46ce1807c21b217984fba4d4ce7e569e65996839ffea5a2d5f0ddfa91ba17505aad03b144568c6a469ae3fb2a0ba20ee9879614e2cb0c22cbdad75157fc69879a46a609f4383ad73b913ecb302423dd6d022b26778ee661da0c5979e94de0ecbb3115030580bd0ec5046453267d9760f1d2f4eaea07b1f946ab3de287dbc38f41de131b07dd3d0bf47cab674de5627495d646ca5ae50b46d4b33942a049ab4b989b2bbf9ed29a4dceed9dfb6da956eb3824f20d6e32a7eb3c88411feeb30a9d1a3683919b41890da71a20da7571a9c06af024129439a7c02578094ad55146948f13345c3865d8060eafb4f0b3c2f6f68b8ccae434af3f8e3a9f26abb790c2d9ab4b4b9b7bfa1dceda77c0e8898539837988af3a27a5c61948be9622174c6d788d8950309384ea3a4ed594fea79fcaf71f6ea5f471ea7bbb943ecf02d002451d3d8b3516d7a2a567f53c0a7a917c5348373865f7ec7a7653ffc2b3efcbb2b5d59cce705f2c31eda4de2c577ed2b01549e9e5e270c2a22cd86f3f76f76ee4415f6ed07083e1bfecd6bd3d92820f3c3026ed661df95ef3fa42e260d39ba9a22cbd4ef25e5387cf5a0ecbd5a417ff44884c00703dce66ff7e5c5985800c92f1b0b4f6315063d562cec81c8eab293442f25c4396724d8d5216e79ea963bc4c557eabf7e5ff72acf9b7d61086ec18ce2afcbe095a54594ab5c218ca3c2abcebd1422b78891a5b9f643a2f071b6223311a66038bce3feaf7893fc9ab845d764ce09f55ba5baf0376515d2a666eced7643cf48c5fac2893d4508d7144f9657f84dca5a12e0ff42dad88f84ec323b64321ca551f39295545ef579c21237fb601e7f0ccf7d54130e26ca5fc3298402de048e0c2e3c76fa7811b901d1e1bd4742d1c5ffa6f9af6142bf1e0f06b7f8d26e8564416253cd23c4a31ea6420ea4176c41cfc4e06c2ab83c44f08fd19e6e5dab25ddd7ca937c6e5c65fe6b77f19ddc331307e71c70be96c590500dc54a6b5c5581eecc2f5aec057f9eb01418471ef2e976c8e48d56aa3a7ea33e39bec6d89eb12c40ac2091a00fe6c972f0217e10af0d5a9ec995bdbc1c7acba2466f7fbea331efa35bd8e2b44e56705fdd01b4a173ebc8cfc9864e7660cb6f6aa859fb12289c68e5b9a979b1b2454629281b95c9bd7a7aed17a197106066294777f45fc498ba0f4533cb5c9959c6d4a9777284a54af62401dd8982a41fe7be1fa10791bd66f475e33d18c497876ea3c619febd4409e394207032beff4678b1f2608a2f45ae6f8ec994cd66b233003bf387cddbe179439fa35f7159868d653a7068ffb7dedba12879f7e45af1c63cf66aef6971120cc3e047c8d491287d71ea5f4e412e4a0fee075c2a012aa0f8225560141a1db2c5dff1cd49a1ba115a5d8a69ba476e99a2ce64d7478a5222fa86b8fdf5bae665c12b17013cb899f7f90aa08978dec347316f6801bb72fc6eca7ba7dfe1d211618904feace23d4268ef5d11111191720711021a02ee01992cfdb56388d542955a4de1d4c718ee4d8d781c6bfd118bcd708fe557d12b07d391e4cc7a7b3f07650ab40023d997f985eb658c298bf9d8dfe930e9352f9c0200e460887e14671060fb43c9f1be5e395b7a475a561006a5689118476c26647e4d1e45d8c7d51a7c91824888264e7f67c9ccfbcf357f16f3b7899d0e9bebe439cdfeff27d377fa4fbff7f5d5b66aaa75ccffff0bb978e20c0cf66dff0f7da14f34d67814e38f133f8fe3b5d6c626881f1f9b1a5fc34414c36ec6df849e96c54f5dbb9c9c51fc09e4d9cece98b3f735bda3d83b9c792bf35533eae368f36bfa06be4a9e6f41af9f1a49fed7ed253486a101463d3578a547d677adf8413173fedefb34531ff8b3d86c7fcb64176ef4fff71394ac646922c6f5bbe95fdf66621f578b85fe335bdfe5eab99e5ca7cdcce73f2b97968fe9b5d4e244e1f870a6602ce044f5d2d573ed5cb9ff7fa52497c979679f73e96acf39dbf88cc2e7133ee75e7e97ff3a2e9e0b27565cace72b0ea9588152f3698d29235d20e46161ff0fef67f6c489f131d67ede3ffa49277e2ce6d463c9588fbbca3f840dfd052569158897aa2d43b96ed36f365667ac01a9e4ab968f5e351d7eed5e3a9851c70ed8b82a59afadf4e78bf5641e005f4b0b62bea626f482e5535381cd8c04baeb9264e503c008f3d12d367fc53fb67b09b0d463bbc77a1e26e3c57e4df4819d98c4f2c2bd76383f133502a62a559eb09d99e99de68cf40c9e5e5b6fd86b7d71d65e575d69e46bb50db5d6379c73bd61aa43ad470e50eb242c76832f09247fd54656551b09dc39d0e0284d2e47afc618639cabc798de8a5bba4c4466eb7295e4bc68e3789070e3b80e4854edf2e4b3bae6940d2ea93f95e282b7a47ac7583b569bad56a7fdb6fad7dcfe35c8561bfe3963b5d5e8d4eef5e7c6744aa1b8f8628226a59f668d658daea0feda1f6539abd1190cdf24954ef97ec050e49896342515085d56100bcacd03bcb0d6d372a629a2c95d7befdd41e6b77996f5b5d65a9b69703a6bedccd75a12fe6d7a3f0523c9657486746c7dac44f725fe8e50b759a6a42d6ad2cc42f3010a5a5c3dd317e891404fd965ca1915f7ef6087e6ff9ba159a90f61fb52434183de74453f599029523af0faeea765674b941dc572830f5a32945175ca51a4531d4b3804a682f4f6ae4433ac4e5d0ca39d8fec4bad2554aa7fd090d0906e6c278a088062cbf1c065ad604503caca2643c6afd505ea0ad08794d4601c656af47a6bfd3d800a35e053f04841f43bafea5316260e8429f7083fd56d2260965b14962f4c58aecc4ac34e004e373642392641355b72bf124e764d675350ab89a8933abf2e234b303971cd80e3bb17d30c9b2c3df2677a19ac2580d1a6e5dcb43c8e0d30cedb0dd539d343b1e36a6968a9b6976e26ac3c893ea5a492c886d9dcb88a51faf1e52cb2b107732569c9603ba78fccf356cf50c509e386bc37acf5d7b05140a015298b23db3a4831df721ae62d7796b52edf9dec6317bb8b1045172a3f84c06ade10286867e6860a183a1df3260da0dfb634692dc9ffb523587bf76f7d30c1d6be6e3f8e3b939b6b5f0f2d80a1cf051008acfab5a80202938039db87de1381bd185fe0cdaa78a1531e3bb31afb968c5ad3269063de8bb1eea135e9543c4cf128ce996bafb7c7576bcc378fc7433a42e2f138d541244c468270ab9e5181aa7051cf40a662f614667aca39cf74c4341c74ce3b1791428bc2c393532dee596b71cf66cc245bcb844fcc245b8e4fdc2382eeea8935aef50c5aeb6ff6e36e7519ecc6d3449dd696f51b18cdac573c3428da3dba39e37ae67af25b79b7d280f5b5f5ac971bcd0c8924398a77e33d8ea2b8b9388ea2c8f70fa0a09232c458c4d1b1df78bc1c638e311e47118f9c6faa5b518ee2ae3a77977714474e82c0cb0fb8c8451cc2286e8ef7e6b3bdafd5ff5a3b45e4c19bd696b5be4491d75a71adbed65a6badd71fc9dc32bcda8f7ae45714af17c52bfa7cc5bcedc5f65e7cefbe975f516c597df36da0657dc7a23545a51014b364286a4751f057d3022389676a8a1ba1c3575f9e74660af3e8569a588670057ec25149cc9aafcf3967ddca1daaf71e8b9da236ee4105734f4f51784a4f6d1a1cf015c659186bd1bb8c62ca3b3e99e6fc8499b0d3fd329a004af98424fbeba61ed8740c995cbc6d9e71d538bdc3603e2747eb7bf5bd2064162cb0af260d0ac5516db57e3fcc86411248feaa8dac228152bbefdd431f7541c9163df6c674c1c3737ddebbc360de9bd9da7badbe2746a235058ba851797141a9876887d00e51aeac1411ef10f104cd250b2a4c8d2f5848538047a4641911b20184091062cdb72483529027429a10a05105c46aca08f7e361280fa1550826dc15a193b84d61cdd93042e5fce96a3aa4cc98c28387c3ca061809662c1172f47be245d991e5880a330021014afa02c3c7132e5040182132a40651528e20506c49d0180284010c91186e4a6cfc9c2ef864a012830617ee25a8a75cd12858422f429af886809e043122831c7e7c70f9b1a225c893d0577a8b5448a944a022e2caa9c38520800520e178c1cb9523be2ebc8b104438a8a410c9e862e38aecc5285aa2f245ca06cf320aaf4e0fa1c08944ca2fc7162a1b8e2c303c80a0dcc8312d61d91aee8b0fc2a0e0540bfe28029ab0c20d36282b84b1728505ce256cf20921c58065d4c309be1d50921a4860406188238141fdb94082254c80783e9cf808e34170ea05252e60829071858010387ad472e00086c9064e8e9894e4a024488f1fb1972a8579ea7b9d515ab563528b6fc6f6865572486169a28409eb886f399b7491f244a907a7a62d3ef6660eb64e08e544e42ed048efbd377baa6b893daef8bc35a4b867b330ae18e39a6dceb5e25c4f4fb4af386ece6761505010900d2848a458ea8ae2deda0281c0a4aa5f0b5a458147eacf0a59217bab3f7bc30acdb03d92aaf7ce59dc9899bcd6de8070d477ca7f99b79ddd1b6badd676a6c59cf9cf098c71ac440f98d66a0014c3950010128944a2b1244a6110457130c8f103be7d8fcb8d763e312a73ed500b18e765bf3159a138eca5b131430b086f8bb6856cccfc90e04dda389b32928c3453f856c88907659b5f9ecf4d628ff2094b29425e2667034ad7c1948c8b6a6bb80d11e2aba9e4fc2dc60a48839f051d15611bce2b5a915ff68f40f7cf42a3d33b1480e8b6f9dfc7a80a49f59d9e3510c410d084389ed229156521c41181b9682adb8d24b30ffc2f1c936344406381f3b7feddd2ee0f0b2efa8155a1c556305eaeec2eca5b26e03b31f5c56f1902979754bc3d67d65e854e5b957a1830425556459a99a217ec1db102b9bc80088f05ae740a86d039d8f2f0dd6b6dd431c086b28aecc17604887d9f8929dd5de3501cb7d7e50cd36e209a9165ddd7d58c6b81ac1fbb539de54725c7ca333043d08f7b145a7cedc896aaf30045d364472695ac887889a3471e418fcfc1284bceec91c6a9aa2236edfdf26fca8a57ebf6ef907f35be97ec1a08c28dc6ac341f8571382b0c9cb51c8cb3f8ebf660bd81ed8e8341b3c4d5872dea21f2d9c340c4ff2bf1b0d4b315f77fc774002bd529dcd32fe30d5321fca36d212120b07d901d971a1283335b628fa107316048b597473b2903e9150e392f14fbb4258771332d5da597336054a27ba83240691f5abf844908592774d6e50464c700f8f08b6b2dd7767c388f9d4347f853e240163d110e4f622c16fc9ce2077852f2581013939f8d437b737ea90b508827b5aa09c622cbea502242550e06c93ca9169b692675a8db55ce75d5efaf66cfae8deb8f3e4060a7cb999998f763d573ace82833798f3d844590895da1fb7f5a99760037e52de98c15c3c03280aa55ec265258b000e5e0c5d237cd5dd72a348ce9502fdb97066c0fe64a806687864c946d376422bd6a8af66abd4466ef0f125085dfc5d4831846d715d13ed01f77bddeee960c70e364e9c016a5527b3167ad2a402e59b244fca4e5d7974c878710664770c0c10d42cd1bb150bf020247598b1f10d4a554a862b4dacd645e2967a918afb2117cb3feda211e8222be57db8be8746f3129be2707d0161097c6ef8ee40c23403f819cc28bf5374b17c17dc5b9d4206c9a21f735c13eb82638fbfe2a0f06e4fa54c4de5224f45aa8f47fcbc3d1242777d22463822f91415f40e2fa9bd3d297949bbcf425faa298cd40211048b8097fa265336d26d296ac8683cb7d287bf9f45ea88acd3b24f3c666cadd9ec6cb38316a3534fa51075926eb8fab3db0c68141936ac05bb094e9bfc786d0ca7bb929ac71555733bf96b4efe06a1c6dd28fdaf6738964719a662cf3aef24403715f3e72f1084641ad21af93331f1c96d68b469f4e54267b1b55b93749c9f81a40b1b8bb202112e89de6545fcd7e8a766e78f1554a3af4bdf8dec92acc69933d0ac72fcfa50dcd0fb76c64bd254119dfc03c0e4a40db3c0a941acddca4c8fe63ba86a1f1c77e3aa75e3523172988af76147e03a80b1c6af013833a8cc77f5a820b59f3246546ef474a8f08ba90abd2e3086c578d5d98517f4de7ba02a1054055a11b61f627890987f1f6ef25303c14f82899c245a01b2e986eb968d37f6985b629589036841317758e4047dc072c3956aeed51c15013970b52c7563c3b106744c6e278550fb8db93bac1fa6f5e41b7031d209835a1c199fdcc807bb180b24cca07ccf60a09473970d4171014f15cabedef8d1eb0989031b4be210cf735f00736ae855f9b38934e5f29afc50ffe0b6a9eda9709e0ce6bff3ca8bc710debab9a907d27e6d6f15129977fda2e4f02a7f6fc9b56337dba1dd3cb0adf698a60163d292f7a961fa188c055ab4c94358c59b37746164c4ad24769573ce6b5bd5b83b005cde3a17014267759210cf0db8b1db94dd6c0340c34e0df16debd3f3599b4d9f579bb1f91dec044877860f30fb2505d97407155f77c54fea151f3e5bd5dfe01160005bef2598e5e13e5e32940451cea04adcd9508659f8d650508b71f5406d298c022392624c72dc5cb5e9ccd585515a14c7c83228c7371b730ee262cdcf902153037f4ae9d1993f09a08b3ed7c93942b8f398c798ef9550676c4017d126cde81400f66813b355dd3366cfb2368fda9b269d7e633b07badc4fd0370695f54d8dddb91f38f6ed8ab2d68b355e1d4e9685ff3fdb4e9abf433b9878d4b3a9a24ed29f01db88fba9711b9f251a4dbd3d0ebf99834dc6cc7a147a1ab4a9de6cd2f2c63beafb30f0884d18b28c263fffda277a080eac0f6a1cecb78bc2d18f1fb40c7e35f375f68e99c9e7ad4cea346e7101a12b2a4c63ee17aff5e4610ab77aa298d15fe04780f8206b1e8cffbff34004e78348d8303a71ad1116bd05b02c250babcfc5ab12e78b0a29d8cd263f06f9580edac82c5b28880ff8764c751c0c465012f474d23806ba6ab6d3bdd0a15d52e0da128e8585054ebf2d65e9c1766121abee42b5192935499de73f8f7e98af498949e3069e4bb0990178163d1e3135fe4294eadd1b068deba10d0244dbc27ee4ec09d082b6f81298a7dbe3704acc07563c289e7543e4da341b55f72e320d6bc93335f3ba32d8f2ffa5c548c70bdda8f9f1cc10c6d11878cba3133b782821242a0d157465aa017ceba56090c5ce0408c4597c7e1ddb6a99056bd66c17318c83fffa56a967db8125801ee0473f9f134074237f74bd0aaa1b07cc872a70eb433bf15c1091afbeb258258fdf77f47c89f00de4f687f8f94f3c1b3b934d4d97e33d75eb43d0398d5c74d2a3376aa8f28d8cc39c0e3df142c451d17d3dc8dac456f42686a42cfa74c06d3aa869c4bd94a92afda453bddd1bff52de0441311c1671763079566e0acc43c93c2779192658819774d66362114c2d80967d2081f418af11dcc09445745fbfe059460bc6f50b841db5d383ee16b6a9a1a8776f39f9a0ce60438b69ad6004c48e427c31739c8a22a4812af5b5ad8c47526c606b3f18cd4cc12eea729f5055f42ff2b34b210e557026639362b1772b0187ddd0af5ba9e66ce19892dad9fde09ab8b3a6d8eb29ef124fdb0501e2bd81736544a41272c934081e768d4ec3802827fdac78996a843ff6e1a25353f4cb1f1214dc27a30bcbd5a9e0384108751fa8ffa2ca8421451eff36239265328c46b6c3e437f6359f8ab016d144b9d3b25900aff79b19dacc2627f8c481493f0dfab0113ede7b8005060309f4182ab5b435370c7a9072401a813502ab8365c1dce61ba30651e2f3a12464dae650072c4b909adae6f10273cf3cb65f5718066baed81c448707eb52e3a7ee1705cdd83e7145cee225fc70019cc9418b098d927b414f643cc229c553b901931f0d4668162316e780880edf63abd972b7de91bb0398ce5d6eb7c7d136422bfead7fba4fb1641d6492802bbf8971cb35f9b49e0c8c8b8a6213419ac011b82e7be123809644ca5727489a861a3d98eb9d2fb7258af3440545772a55c2a6e9a5227af74ff28d98c09602925fd32b97bdef9e3655c39f7b3bf73c6551f250cbd6d5ee97cc14e78c51f5b0735e4bc048f5b633de3ffd8bfbabd9ee6bb2037ff40a347095fef01381dc7980e43c754df7d2afe279586291114f20ebfad9538fba072fb12d42359a4dfd0a71328b427cdee0adf2cc57a69f7a91777ad3a4bcff2ce9a34b1cff0eb51075c2a7ed377ef78f0ffd1e02e13b0b0bff1a53bf510dbbd1998bb55069fa20bdb4b21c8c0f10b395c11e3b78e6922396d78c2ea3a8c976ccfad47d09d66ec7e8f4aeee64e7ba8658749a46fcfe2a66e0b18de24db2d5a3228f527c5e73619924985c7e3f4592ae1e61b3a2f107c4492629130b304d8fca4f9736c88ff5e726bd56e446ef43081137662e9784a321c66f05a7a415eb10c4221e33a578a74bc1e791227083a320414ad4f657d00e10a5580947b43044f881c30e81bfcf73a91e01d7c25280e629e37bfdc164fc3f593bdbc75df98fe593d07bfecb42b5cd3ad5152e641402dcdb68d90b044a409f69121d311bfac832c7fa3658a163ab797b9fe002bd65c8223d6b4f68ff09b71731f61663890e54606d62e193e4c9774131a7622750af4ab159a3de65defb63d7758174828bf627deb8f9723148c9662e79a7c07c2f772c435e3156612f4920ca36c716dc6e94b924647879d88bc61e6dadd92b31bae5a3460ad24dafb7d1187a5eb8f3a1161844c3f6bd535df49332cb19058a362225f8eb185a16c85d444d1910b1f74f880a84612f8244f133cbf360d65ff82d419240f611eb9e2da720aa40f68fb230b9a5461e11aa3409c94404b52f87d2eb13c96c533e6e21cfa4cac88a446b73e50fb360abe7061b1d03f067a46f337651527288ecdb79d7fb37a30056479d4abd0f62e01165d2314d2fd025e35feb5826e1f649cb86bf2ff42885a11345543da533132b72692e2502e717a441011515c5c48797ce9660b53529d0bc26651212c63eb68c27637b49dfc9269afa300bbfc8ccf8874986cbec51940424bfbf79815d3ce5066d9f3b03b9e7806744aa4476e3ca665158589bac537ad2a0ad5506faed617f6934a374ee118c8ca841f9a29ae44bea8b16c4d9f6c496dee0bdfa317fda167850d008841d5e954a29324a7960af849fd02aa35fea67a94aae5f5b7cd2433cba5271c80dc55e30bb4c929805d309e37371c84b80384d278003c0bafb9c3b20c3fc4755b4c2e38b3cee9a4f3c903fda526154ca85577cf22da3f48697693e3138066c3cea0c58749fdde45651d8eb324e71dc810275c129b0e6978fe850516d981df0d80064b8510d3ef16a8b78110ca8eed97a497c4359fee3a4197453a02eb1cb4b74351eba15ef5728e53f45780bb43995e1ac3a4b3b10cf8518ca08860f5eb45d8d7666cf20cd264e163af31a3095f63de63659cacf58127849ca0f522b96a7849df771039e8c1138e962f664a4be1d574c6ef5a656771c1483e289a3841e237bece046428d295f7648443e58f16861aeaccd7cd95cfe9005a48d4addd2a13ee13f827736392907200e4a61179259cfcca063a3b6f7d7cfc05a215abcfa04960a43ce7208cf82b085becd468baa2c88dec118f127776d42f056d6282b3f553565be3fd53cb07a2b0249ac99e47fc9e36339fd3451f88ca0003b164afde2bd9f6c81e1a3c17a77001c243a4d1388dcbd238c81f88319a9e06362c91bbb7a9205f4d401262376a5d5c948aa24728e690ab6c3792b3dda3bd65252e6615fefb623859a777fe137b7c2594db118ab22b25a6dd42800e6cdce9c8210f4c51e8c33b3201b7b922068e37b21e84ee7a2912c462764540d9ae1060640d0b3417233c294b2994620d4c4125ab9bbe07bebd6725ccb8f3a9fd7fd93ab93782ba100c2ff93b11ae270ddefc37f07cf5c17513f004fceb5f34029f90835177cb47c5377633565469d4669e07d210f1fc7c57dbdcc70131d92b568408b6bf1430184017afab845b0f8d14d1dbff48b581f40b20a390252a76fcd4f541e7643eac339938e27a9f98283a1d5e6c7d78c47a6bc1bba3d2f0583ed5560fde3a0d26d8833011ddde68bf08798ed40262ee8792cc7c2ac8f0ab0b41517a4d52a1615c4bdfd305a1532b132e58f858c7d4d1d88153e4aa098f51aee6df9bb6b35cc1d15879c410d81f0d72d3e5575b4168a0e63e99b6f1998aa7adf6f6a13c810b3f8ee392af6acda129330a11177103b47e40b3f062262146d3b856351054b96a32bbfc1ed0ee6146f84230306991e0fe9890a591edd18e91b92ca77c87faebf9163ce08b891d708c09c4b3d64a3536a975555ca2f477065670ee3b902968968866f56018a6ba1e09f4f54f72be668c4cc1a2e4f6f21c043b4ef24073c391ad41d4b758a012c829822f676d01dbe75f4bb08bbc80c50c1c92b5f11db86f36007c68a9c654240630beab7a78cda1e5a71c83a62da9b6151f76a9c2260c2d35feb30d133833c18c99a95239cfdc440f217d7833effc9991338f2cc7c48f091387d3ea5aa9080e642425e567d01bcb583c169e00746a78f5f3382acb82eac8201a9ad21ee81c2ce8ce73a72fb76dac5dabfce1cecff90a47b95bc43ecece6900a88e162fd5a3dd9c5d684272d3c34576588c68c6b78ea29b65b7865e33ba3738ba3aff464ba3249ef89ee29c7d0d140c15ac3b44ed8ebf3707e4a3f51a0a56ca07a9a87cc07c153db3c76632baaa25292386a1f81531802ee13a05c80d284a984f1e29d4bc79d4a964e862be69bf55bf8331fdb7da3ee7d54a2d02a8674ee2d10398899a790330be1c816f96eae44f321f7b4cd191dabc6bab77ab27f522fe0445530e26487de6e7221674260234861cfda52de3fa0bb2e727d01ee14198a169d204ca011dc25cd86034e17c1bc87d017b74e0f3222c3b1d672a1c2ffa0e35d5c12580c61e2c0c18d54a1cec3b29f3bef13611e0e256c0ff7b8925620cd9273bc5746c6f1301fa38b4b727339f1e2cffcd06d10c88e7a4343d8da16cee361ad07e6ef713d64fdc76e95140c827a675ac6c991dd8fc261aae3ac91f40d8150a90ab38d54d74462adbf658eeac1e84724ebbcacf19ae0d0299bb4b0dde85c2b96c81b5f66c3b70a311790f11cb1358115610ac42b0fb3be212b5d504c209377596220545fead7ec2ddff674d57bb11e2e34d4b2bce8d6d94c7cfc2dbc761887676f1f6c278d262b84a5b3a5b415f39f1e6e0622e0c8ab8f1795f272c7abb0450ec0871b6cef907ae5ef74cd48d3e931afb921c330bfd10f40a7b6b9db2d68aa8d26447c0202332a9c2e615bfc4d7e1c28f3e65cd29488cf27b09569663cea3c2e8477eb926fc88e36e68db3940635ec9c89452c026fa6345c2339f88519aee1e586e11fe5c913bfee9bca78a748aebbdcfe4f36807166c300c6d0288c313165e7d22361ee05c74a9e36eecbe8ca7a4e38c0111939662e76a77cd1a78302b7c6738dd4daf96338ce9ba84f95b407f58ca87751031194a7d40bcd81438eea4305398730b61bb797f194b28a7496f1895c77084e728c321ba8000e5f4d721349fc881a32692e8008de708e7dde756f6543ecd0d43296c4cd99e7b9cc40da5519daad8fe3f919f501d98ef522ebd890922ae1610109d0512ea1fc0b7cba7bbdfae2fa77da1a5eab299c27fac3aaba51c0e4bbaa3a4d57e474844c7026a8379f117a5f0b9628240da14dd88c5f5965288a94d66f0ccb37687eea595efac8ed36bc30fa01b465544cac3f5ba24fef22bda2d4786eb38e6bce026c5174da30d29d5830913b5779abd7498e9e18e4334e09afed89209170d63f0f0bd4df9f12b9669e2e807573a1f956337a09250366c106b8c51480629c4aaf9a20a2c0e76af88b1a59672b047c9a256db3a2ecb4186137a26237b9c6a29e1b5a1f09a9ba9569f47e3409d83aa272aa98291ecd117c46834b73a3ecb861c60ca4e45da81051895117fc37fcc814cc3ac3f0cb1dd04bc953f35f6a90177289f88e94b02d51b29c95e414ff9f3d710106fbf3213137f04bdabd46686e15d51857bd447e59146482d08ea3bd2996ad17eaa257f4296d43cf79f10b3b766fed94fe54e30ee68f07e2040f0493f2afb97a61e718d561ce9506abe503f4b08fdc01b806232638cd9b316917d60e120836f9bc3aade794dcff4abded4cb446ef6628c8e8bfc9b5e052e2eff6aee65a6e64bd55d55fdb9a939e6fbddf7992d39f06fcc38865431928a9deac906a08087d59ddcb3bacbb8eefbe8de7ac1ea0945fc5275874aa178bd400f823d5577b3add8cf9cf888f1562444ba30f4ef67f6c27af06b291f7b4ddd653458914b879dba64426a275d8e2c4bcb422549e9bbf3d503d1ffc62638d41fa93c32d426537730ad2a74291abe8cc9e7ac89c0efa5c44db1ebc53f0bebc366f8ef78245530880c4c9607890ebf6b00ab6cae287fe55add7e57661121787866a405b306eae4e0c2a18fbf4739a86cad07820696a3c996c5d2306aa90e55dba6417c001cef69929ee64bcc445c7117365ee2b245a9b74877caaa2cfa2d932bd98312e21d23133a37b968b84bf24881240b4e9f2ee83f3fddebf2aea6e7d747b8dcf2fafeeca2d6e9f15e7348029a3a74285a8717325d5c62adce64fb2e8891c59bc7d6435a8b6dac82340ebacc32ca768fbfe6dac1ff926531c8387b379e0bcb5c9b632d034710128104369ca30cfb69de95b45dc4bad2f587621ee0baa35c1d05fc3e231ae3dc0a899292094095705e42a50ee27396bbc697c6f0c258780627e243e2269626e0ae7941ff6d8ba8cee7e0a4f96063b3987d15705290897443a2e2db39ad06474e10afb0c457d31d40c01b30610069dcf64e7b94aab82420c0152abf6b129278fcd0c59220cfbd8a5879307b600177124745a04a7cebdb666f7df3db2a858a596989ab1f75e668f607e1a380125eca462b40e10257d06a8f7656806a5def9056b008c8fc8a3a12cd7774f6c2b9a42371010abdab3d9b6c4e47b9301600ac4ec93c3dd7edbf9af5941bce281821968095cdabf128d73f3b325653bd5a9f0ca74341c682cc4d6e20e48e19f39c61c0a07c965a680c60d36842e43d358a24fcfede5f2ff7a85ece23047709cb34a959112ff1a8f4378085babd942db2527c7ceb15f91c7c274246439292b04bea9ba92bb6e3144585707b1e3bc8d1186de1bac406231b8fef30bbe91346348a4001fb206570fbe8437f35598f30c6d420f116d97ab4919189775c26445c171d7035cf6818c76ca52d2f9006315e2c728894a4f577a10ce39e40582d365654996745c5fbff5ab629284ba653e2af909a850cb23ee62c84b416b6e419e6d5a525d5e45ab0c2d37bdbcaab74c22310784272befdf92e0d44fba9752b9492b228f611739aaaf55e19589482b2a71d1f512958c1ad014e8c841b3da26e4ae12d6075347195c6c490cdac336516aeddaa0a22c40fac6aa6f8040e3ec51c96210aa7a7c082296c38881713aaff230817f5b2798bba50dc442372d6cd84d4fcd8e051fd9a443b4a55bb608ca5416f0369d5791c8bbed35d0f2ac6c39021cfed4d8323ef066e4fb1b4016e2e167edac0ae785d379298d3d804621f2fbf842af9b5163b7db4cd16c04f6917b6da50a022673b9f734feb1acc48ca516bb7cc4aa6bcbbeeef0380195ebdc4dd2c3d3ef719d5fb123ca8790ea4be57fe7aa0290800d626aa4ae218c4f50b107d6d7535df29e98134f216ebb1c967f70ab45a366020b85ca30e8f453be576790620b39b6f4cea19407c8e5168124126ab22dd90671435f078cf8744efccef250cf9751dc1b40015b2a0b887f1ea5632af9332242ec8c1b674b4e845df6ec407061759d841811719b58b51f0b91b92bb83851ef05cabe16f4ca6528862236c47d63fdfbe5ec8834faf99850135b0b37a3f2de2974818b6b4471ffc89da1b50a9ef8f61b7a86996fdea1c3320320cefde56f8b7f93084c6afea1c7f276c9bccdf36694d7ca52f0172037d65823cdd5e125b75e2c0832387d164b0a76a41464bfcec3b5d08b6d4cfee6fe20d6915d096d4c666ffa1e55d68597f0318e74ec09a4af836969523e91904ec60431528925280316ce8a068e9dbd3cba8f0ba6393862b1ab537d10bd1b0cbbc6b639d49f27f0296da3534e2bf5ccf001e673033b336de375826f961bcf7f7e668c666537e6d71eca7078567b8cb90b05bbd17c31df2ff99bdfc2b88cf54268eef9c260d5a53d21cc865130cab2af1c06cfd66bc582c1235619689973b86d155c3e8aaf70fe85d4d62895f7061cec748fcdbbc7042851569e82db3982b597e3f836d504bbc2b45763eb5f99c06d78de0561013dcacd8a9bd2fd8c5471dcace8e20d51bc8063ee5ce31b1115d9cdfa74c9b12198ee27d6fb7a2582593425c5ac2238cc4beb8049db86333f0af9d3bf2d5ef3f4bf4cc436f9eebfb01d585e8714b728bf5c9d0ac6c8e21dbf77f471e55a672572d57336ad0a8059502bb88aa910ea8dd26a8eedc5bf9b1e50756c2ad8f95229e4ad180f2bab27357601467bd397a6ebf6e23452cb584448bc708aa103955919a94e69ff4dcda3b39d97ddd8e9ac156240fc63df5313b792c48583918be2048709875e32ad23629930e16c2f43ce49020882d64a99cdefb3ce561785e0aed16b51ac7798110b0bf927b954f0f979a3e006e0a6070a9a85cbc8b7f8e389bf1ecd75e9e2e9bb1fa5f1e2b0735dc19d662eaed71f529533308c7b6ad52240b0a2b5cf3c987d986833653d7d2ce2dbdf4bee1ec28051850b229b78cf68e59dd7ba3fce20e5594f6349779e091c55c945f58881ae66ca15d928cf5e86e1f97fe39653272e1224b40870c16c9a86803dc0e01fa90041b4ce094281d38e5097f201ef1704b137429533677902ff64a4e875c4d0b40441fdd18e717b9390d53d6213dc739aa37c352c11168779631aa2b7bc96d3704be2dbf2572cb24d396494a9964923bb8018b0183014e63f4b80f5d62cd26c9bd0a24c5b54cfaa84c8856624581152e52c8f039ab35e364f24926d91aa43dc696364a534b2a49f7aa272260a0fb6e4b5b4d129c01d998568bbc6d5f64ce72f6d97677ec979d8ef7243dba774f3efdf4dcdd5dbabfecfe497aacb863f39b20bf97da40ac0061f60b17100d90640244102e24e8f1389fccee3ab263f71cddb6dbc9f58cf9c3113c405c319c20888b0621698356b3c27fc5f29385c07b68a5652e0716a4225028918cf0991154585144055d60411a000e2124d68d183a2d480d47073858c60948a57730b7500e09ad2960b86715cdb7167aa69941e7adf71ebef5de7e1a063952c81102f1dad1eaaebb7149381b57e39260c0d5b89bd604fc966cdb3307edf42a17c8dd53af9234a3e531321a3d066b1831768201a34116a1f76ed8d18c608b919936d4eca60525b270b76015b55a93c7c3d6837a4644335a2f3031329ab2c212623c6a6e62a0ec8c8866d45e6062645cca0a4be8f1a8b98181c233229a117c818991995a52565842cda3e6a60525ce8868461ee70b8c27c6011364a6944f3283d0649aa8e9d06c3499a64313ddf4c880001ff4794e8fe79789ae155a6fae96a5acc5ca8866de7c1c32b3f7c919e764d3c60eec75f97ea78a3371e0b74503bef8adb5b6fcd14c42a0b58f8fd6da2bb5dba8e64d364ab6d65ae3b7a25bed5b6b9f9d44887153d3fcada2078d0a88ca00d44f49154b9a24695a8dcbdd899c2f4dbb5356f3574a69e19270ade58193e96ffcb57a69842ca54cc0003771f953ca9e28384a78617901b136e96cb1cf787a93a9c997723f52c5d37c38a15c60926d1dce49493ee7a70279d28973420832e7db36170804edb9367b319d3c4eed6473f7e83e65f5e60033cc26d99fbefd1fa70a26629321a29c257138a28f69ceff68060222323fe5a99090909e6f22258c493d59a590d155490df3519102d969eef4bb927a3fe55475a6ce2ec8a7db3f382bc48dac5bd2fe9016d252b7bbff6ca9793b35a9961489b76ca6143529ea67bb9cfd54bbf4d8eef331342f4047b8d0a13ab4455d462a31103b2cba59ef9b96df3243c80c79d9a2c162a425d296d48b2b4af9b32d1963e4d7a87192caf213f54dcbdc27ae1c4747bd3a059d9452aa4e9454af3a7a6c175a0ba6b91b0b84a26487b9ede587a9042bf397a8015a39403b40138684843ca90787f3a6fb78ef3df61d58898cacc8dc4eb5203b9762b2a34f3a5f7fe9f03db80cbe665dc616011d99e5383b9ee5572dc93e8b0c90b0d8d1093df1428a44ed4eec39f7eca6699a2ac75c731042c79573ed3516c356d431f647f8cf77adb5aa259794b384a2288abdfb2b7be99494decd5b56cded8d67a31a55b5f6dc3c51ad35caa9564d91a77ed7dac731531dea39cee6ace9dbb353052549e26fd93d4dd2c4e1d6e083f03573776b8ab9b5eed6f85bf3f4203fd7be2d2523464d0c760bdebf271da0bc4652b7677e2a37621ecf9cbad64a71c25c225184effc216b8a67aa7bfc3817aa027b3ea79b33e3c7eed93fe79ced73b688e001a8ea822d9676b258428a9871dd7098ae21a32dc6c892bbfb0453d99451c0378cd9eaeeedead2df99e3545113f5814ce3c1c876af53fc9316354eead49579a5ea2ef3aaf15c5b512234a42eea32800c1ad290b6684bfbc62a364d854d5b5bdec6bf787f2df37acbccef2dbff5eb56abb612c066de60ff6df5e3964b02cb5119001f132b76ceb1194a02e38dc65b3596a6a8ac19f7cc734aee0296b25c505e5260566adc6bcc3218e6ea8a866086e8c12abce00bcc8c45c3e606e585bab41522b159f141c99744f6568e213c680009945591041228d55a3aa385033d7526a8ba54f89759023dc6d4295b150de13d7e6d6db57125c50942d8945d4ce00c5f20348c6aa8d172416f2c4753383693a2dca028b921c6c68c46b5d9196d0d225adea976ce981c0e051f9cf5c1d1d9a68cd1a31b82c74b6b70e1d86143a363b4d68b167fc1df2736eb116012e74abf305ab1a5afeb43230714bf6ffa314a9424c50ae4255225b09b247633c82074d031e8e482c80e739031c798739031730cfeb2c5205bf78eab327c5586cfd225641f21e467cc4b3977e6edaf3df6d8b7391963901532c81864f02133062163d3e4b83dd75647d8518a652952ab333629c161529d67373e9e734207c9eb4dcdc66dee1961df7017b4104a007a8fb1c7590e87f3596732cbdc5620ba222252a140f1d11144403ddc3003aac1038b8b0cc61dcaca4437980d6683eac8d491919fd37dc43d448ebc932123d339dc5d0f0949819f3932f239e1913c2b8c71a8c4ed9daa0bd39500180e088341e1701424410aa3a083f801f4228b079bcba5d3a1248a63184471c620a000500480140180010109100036bff8a3c85ffdf4914ad82bd82d9b4dd44b469f1af701d9969b26c2a38baab72f59c99e71fb175fe57d792295ad10ffac1d0be8bda15dd800d8af290ca5bfb79a6a339e949e5ab1a1e1628f6bbdd57fa682b0f1ead4ea942d9f2bce31304fb1bc8927d49f799278925a78535c750b832c49841d7ce34e207ee72016a356e8a60d958f9023c5abf23125648ff04a331bea61e8e301dc89ea48aea77db862a34191cc7a63c988e85b8980449d1fcadc58b63ae7ef9aa2b53be388516f9b691f28ede7b1e2fa1d49267d816b1900e5e40927a45fc93204bde5c642c3affc347b925594ba223716a24830ef71e88da35344e1e7714688c17615f92cfb915d68f41495533c73833e55ab711e14250e6471e408e709922eea111759ef5122c1fa644b8803de887f7d4f402f654f47f7972093605839072f5bbaf14d2a6d771369a21f9828d7415702b96d8e357a7b27f05c9b9184be0c8064d9f302a0ed5d44f2aa61c6f23f0b7f8186d44b23e30ef4063ee39de19d6005bac580b198dd46bdfcd5c72384dce0c3591d993eed49ad816948afb9ecde7484a680a5876bfbc45d48ad6e12f892440af915b13be86579136f2b1333440cfcbdaac81d73b7c6d90b955865fb26ae79243f5070a80b88c133612569b8961348a96317068f1983e24e9a3adb746ea04201089c384f3b5d7b58a4c8f40335b144091aafb9e4213ecde92a983cea8097dffbc34857b8ab0c06fc56ba31e293f697e8c0e583aa1d6416d2154d8dd5589ff13e4ebd7aa5dbc1e80dc2ff733d0729bab68f116410e4019e57022a20893cc391c002ce151dd835d66f6d52735b4689e5e3f3a62d973f20dbd6514b37da5797cb873f8964285cc9caa017377b55fb0b7a450d07c7918b21477b64433eaaf47d0204dbe520f6faa41abcbf30898b57110d9407a1d66b990b30becb29aea1d4b453e968a5b5d310172d52f2260a277dafc44519bec4e22d2d130d9949960adb3790582a73a7de6c92c6431d410cc1813d3dc654c0e57cabab0f4022ecb7ab6b31c50109a4eaddd49b4efc2547c0fd9ca14885b192b18cb6b0403e822f06e8032e18d3d35b175807208877d285a4b05382326c7be4d44df93b3de0ae6555fa72d8031ce326fb5d391acba60bf5e605b0dc1a601002047e1e829f7e7f1df2d31c0a2bd60b0d3dfe6410c718559f4664345f4fd8f04e0620477e9ab8c5e6b0f1d88359102af9e1a8197b36aad5da45053c10d253aaa0db26f3a14a5c8cf28a2e9303f0e99e4e558c0bc04d33b6bf0d8a4434cd684c75b10c47f6186abf1754f359d6476b5c7eb7a9acda9de58a5fa756b0a411f96614c697b1f5baada13fa82de3f21f11cb5067cfc468668d82cdbfffd5d06dfadd7a5b1ec4fe517ee7f26eca0550c75a2340e3c7939051b1897a4fd50e329a56a7fd6c41764f85bcffdae4b837c075a12ee463abf8d50685d7f30a9ed53b11853abbee524d919616ac9fa5c7540d79bffc61b84367b5d9d42290ffbb3902c845b176fe3206b0056784dceee00aa63b60a53090f79bf322a3d6aa17233681c7c2191e69ae8e84a437d043d38b4c22765d9b3eadf67bd075331cf981afff28beebd8584c205c30512987729290020377ee01d9b7356656bab3df1441c49b776c33e728757932a184947616b636b17434e115a58a98250ab46953bee7527d9583c37f516cad05ff122dec6e9d26d87d7df5db71a0425724471e63098d17df6658511b48e1c3a0c43ee4ad929bb29884df3de799bd022ea7def646e441254b9f102515eb49e946d16c4d76bdd7a7adbb4353f8c78f42277ce735c9354afcdcefac27e18d984002fb9506d06730b11ca4e80fae5031f2b90ab0173b441fe4734d5e04f0a7943ed2f070ceaed3db607386c7ac3743c36323bc4aab1bbb661c965036dc5d29c5b175497edf71d77d5b5f3f311e67bd5970c86d9d9615ce8bce146f2df72e2f72c5121eb9af355674d1924a775976d6636447fd80760909b0245d12218ca0bdc70f5b2a98863d2187cd1463877605fd23700b34388985e0e3eca7fb7adde7cc5a59b73f5053fdc11be26b66b82177a5af09b90c0389c3ea6c72e75f4b4af248ceea4d06ad81a6c4c7d0407f432f422c7a6297b8ae977aad532c026d35324786ce5f4a5db41f8d767d675ddb899dd1c74872de7422f71accb4e765309aa02454a2b06e0a24af11a45d08ad3e9844fd25ac14c8b4d348103831294a9d1e4473c1bdd09ba5fc5d61f1a2565cfa466a8baed5eba978f3285ed023d50127c4a1afe2c677d897d1afb0ee2c398191f43723b32b49ae3238332ac03c3212c96810413927ed0d74aae34bd5e81feb7b7e62935b1265ab8428d30d7b31dcb0b562422e058b7a5126e71794d27f69e58dfd7416ea091a87333407852c4e88cdc5a75445f482004dbeb4e3da870c6cb96a3ad76d0b579f4c44ffbf9b1fc292689c74f218b04ca8e8dda710cab412baaceafe4210bc2b39238956a917acc7113d9829830cdca9dd68ac82ba458a428c0a7b0394e2f671addb9fed454c14164c4f7c41160f4e7114bc422496683a057a1c18dc25c4e4ad1e9a5007b91cc6621074491b74dace4ae9daeaac4d2d54cf4a5aefbc31ee9bf5893ac70029227826e632d4b44003e422848797a08a31eca1d067186d3518d0b6f3e2f4f0caa636ca9a5224b2a59b0972ae3c22073c427d9b1739874d70fa629066db36a748211cdf27a05854f79e723e06c61d057f7024477283003942f59896d64e532cbe8bd7005d6e9cd03493f7640ced43c2910b3a40d3e95c8a5166454f3b4f2b369a8ef349f0b76719b087a55a82cbce9620744d1bcb595d7d80a4833a54d5b30e9dc6aabd3077a4d542b0f0411e933d754d90681f86024656dc0c126d57c58e12566535a86f15ca9c98305aa42a2a38687735080cecb9139e7c0279d89acdf574b51408d1cad2d6506e548d869be81bf6ce67f409d9352e91d701510aa801e726faefe22cc098c8eb1c1093bb10b0bd7fce99058edb5b5169bb28259203fe5f5098d22e8af1ff6ba9c67f7765707e21f81d51e157bea59139eaad0fd649d9f10e6f61930596b0c99d80fac2f4c746ca52f96b3268211acada2b939c48ffa5f4aa7c3c34495097247db0146c05a4dc63398c5614ac0271ceec8d85f95776d61b373158cbff01a9202ac52a00a48dcb34d7770dbb7400725342af7983bfeca8686afb48e5e90c8745e9349454509ee95090afa8ecf0fac9043e4b16312a4869e90d970ba7ca9f04c211252086506b7bb208a01a8aa2b87dc13454c226f1b2337bef40a482e20b2bab70eb2c95c6805cba431ea36b9987202caa19a28833a9a05b38fb06d794b061ded0435f27a373f6f39167d368bbc2e077294a7f82c0be91841c4eaffe25b7c265ff9fffac8264703804330b64268ec2915e9ed81a08707b8b3f150d012a3196562d16add9dff568512cbc313c70989122383d5d7c9f3d7c368471229669d161612180fbcc280ef54909c02a560b8c8dbf8aeabf5710f4f689601d63d0339b96eb80ccedc5c461e4450efb4ac1f8d243b966046d325e4bb81d2a509088609cee6717ae09451e7af7818c222398f74dd86fb9ca8ba53078503a4227d131f5901751097e47bfa5927f33fd92f0cf746e67aef0f1b1951ddd755ca590d84fdb8bb95c29b6832526e788132c7cb1a14ead29d629318749f52a6dc8efd8ffd23c03857c9559a153f26888ae6cef86b097b859e0ba9a7abaa6c307b4ece01c540e84162b62538cf71e27cd8e74c82a730874db8e0c736ede852a2f54372623810dc486db1462f0607b4e29851936e1a20bd8af0d7103e49827b4894a0a69c766341820c6cf8bec91e1a7eab1b2ecb728d9b3e956ae82ad66cea5784828c394b6ec4aa051476c4fd4b62f9860d2f3b0138c262812ea2a183af6fd19e37456bb16d000c9218beb6c879314d6de844d8203a7bd096b337566dfa2a1bf1074fa40d65ea4316f34813279854d6211614cc22413cc162d537d77d39c798bae59b2b0c9d0d1ae3255f0f8085a95c84bc7e1a1e1d249e67c137b5e4733c09f91ca04406f1152f64b55bff240996c71411c84bed0d141d4df6a79df8b05328d00db64ef40422c6bab7941b755bab293d8ad4e7043203c2711b1b7bb3e39039fcd03d3af07e9a3242de421dae7d1ccd58c266acce990fba49e96cea4d80e18b7ff5b366a94973210054b795909e1272cf7145a88bd8f41fb816a931caeb934705bc4969df9ca47c9d25011bc248c0a5a5cd724b4bfc64161d7b62003d4e9e7566298c1a3dd40f1154c088ed409845cea69895b3d593cff02987650d4fd7a7f722692d31b68cc8cb47a435e09cf226e9dad77a98639a5812568ad7411807de1f4d480c5e5d4727555fe2ca7c239c073e19fd16b6708d89ea5d303b7e13ad096a8c968d322d91a6d8344eb10d933dc7fb9bb7c5d5e3c705b318c161e9760aae1c28ea70cb79119e070687312bdd35e6a8af8659522d82ad931d882ab11f666abc433c31c6670a4a6c8b0df080368a926ca70399b797514162d01644ab9785306a24c738d5c90df21eaf9c13ba96d15643d53b4b066beaaf267ffa5ea36b2e35c7a36c478c4572129d961b8e2276b94d4822ea388096260eef3cbfd7bc390a1c59d3601ff604980f2ce8b41ba0050d083edf479b716383f0185082f7b86ed16b1192c333c3e5ed546097d1e125ac1eef476123eeea4e6d72710fd245c7f36eb5b2831f0fba0782bf70b0c5464e6c90b0206d45aa9d53059762590889801d22387a52265f0aba1b9d8d859ba689fe96ac863e338a1b0cf6d02ff146c3760e07fdbec486a768adcad1e25887fd652bba6f3eba6dca893efd0426402f13218448623786722aadfec0d6c2573b0b6a046eace9f12c9eb00c4c0c85a80c1dc5677d54e1d530a307c7139e3fc88faf2096625017f6aba02d9fe01ad549861fc54bf8604ef893c9052627b8a607bae43fd7b7ef38636e344ed263179ab029da828e2e965c88c30b4149ba61a4040eac38420621439769eb1a9826d784d1394b792a0f5747ae56db5c9de9833cede8b969d44d75905beee1919f761bd8dcb6f311a37754da3efa5d3039076e9a8186ed7223c8bf1219495ce39d16543814bda27b0d600157e0f8c74b5789f41fde2d181df0434c7a272fa408581962d2c4ac53fd058e5e6e8b6bbf5f053ae7749b84850d4b83583c0fe621143f5030f25f7bc786ff0b73702ff7d5088f36969ba55774f654b218efca2ac9a62f860fc3b2d9317d790274f9a5fd6992f1f80c6dcd8928fbd2073e51c50bc3a955f9a556821d49d51837b4305034093019bd8812ea4940ab20ed20b14b38b3ebac48a4400845160de35079facbeea839181dcf6a6c810c25ceeebc2a6a6089bbf717974b1ad96827261a1592185e5997660c8dcc70afe745a64278db6042051151a9af0c21a0ad1a0f51cadf030ae32fa7ed66b1f0ba735d774c6c97559ff161e8bda05d803e863806148b3770a2a735b7211e52bd5339d4348633985240c49ff8bdde332a7a29abe552557c0d3658f1a781794f0a30c55a5c099a9dd65c27dc376eee23110ccb467ed85606044ae161a538822bc84ceb7f40a5ba16424c7654b97c1fbc9ddb02cacb7c6e35be5ed480be81430408d00f31eee4b69a3e51a12726ff6259c8dbe307db8d1358541260e6e241b30d1a583ab64911cbe628af67f40f13e9e7f421abddee23ae8e8a84d9fc35db4b4e8ebe2a4e0471c9bc4b5f2311350f6b84e27f95d76ed14cc979dc10cfe13891d22796d64447c9e114dba0ccbffbb81f8f0c91b66f01c5ccda4389e4becd81c32dd7d5d01d79d05f8bd1723924a4830c634cbb7539642b8998d5a3eced7778be29d2f303a39c338b3aebc2ad866bdcc2efc40c34c1dbad169e2a90a76c06afbad31de15848bd7b0bf888136e641b5f6c6a39dfef138c9bf79a90fb996cee858e71b035ff227c3b0807258b6d2337f4023b91c83402c7bd4a6b5ca8f2d982cb53cee14385ab40cff1395c0681a8db9316727ac2b6e5dcbf29d1d81373436012b685910cca28a68f6211d92637352878d589c3e7671f9b63ae7758e405518ac12468b9edb65f1a12b27dcc94ceb12283752e3ff92a7a5eb99618117b13f043ed2eae375690460d094172d85c1484eb84c68a9a5c7b920dfd8310eb48442b3b7b736a43a3701c257f216c11980f78ba85b4fbb81b29a93da49abda0e40e80b660b2150ab2065ee9a8a8068de7a36c9c394c34adb9ab0b47dafbfd560bda951470f3888ea48b79e07e2ef9d34d0a65ed1f9a47ce8ae7f8b40e976f71491a7724972e4fa93d793991e716468d0634ee505516a6cfcffc769232016205ff978fa9f73b314f1af492aceec628c4b6fccfad8c5b0942c7934fbbc55c4141be0ba456ede73485562a421654b2d49203155392a1fef8d7fc9a3b20e634065b32ab8be9ea58b94ce3243b1ebb19c67afedb01812da332502cece3a258262ad35029857e789f68fab9562980acdc1150c2d9d27d2aa27fd5d9f6cd8a532a130fb7e3d6d559446d46c9f20eedeadb03da35d3dd2285afde106ed7031e879501ae8fb55d7d988f559a96d23fe0cce84db2f32c7dd1a78704d0ba1abe4e5bad18ff0925e8157b01fc87f208c88acbee77b9717dd9296c24ccaac1f93d9e54847acb2f8432ce04240735dfe94445edbf99af778156c4ff98960cdfe410cc23a7631c6639199889f1b19298fde94f6e927fb46f2eaf1ce6980af85ee10b81f694099bfaffa2d3866529aa64bf96ccc24123ed4248a7af014ed68c498896be6936bccc46dc058050e282729de19e08009e0f44ee6992d0c453270cfac1026f16326399b6fa866851e01258946840ba09095831a58f0271ca1d2452b767fe32e583de53ab352890b2e9be252c0021b86ce66ef370a13ac0242806a1b3c3432d2955dc74f3834b27be78f440289ce17c7ae62115d37baed6ac160f9023ec5a00043bc49fe3425daf52661c886d742b007da2d0a58b729657ccb540aa485d1ea459150e68d832123125ea276d658f99f60dbe094a11580f82c8f3df15bef56dd6a96018de2f60c1b3d07d978fc7e2989e75a1391bd4eec6df60ea11dd013d12f9ad04f8f866ecf8e06b3075f2602b395b3c6b2a1464beecc41fcf105e1095499926000ebe3c8a4e0bd8549b698766f3cb614d4f848d17b5127334393e20ab064447c78c85a64c682802c4ca1bfb645e07b099f53951259abd1c8a7b5d3f127b24ad9946667589190d3a5888b83f9f74e03ac1828838f1ea35a279cef13ccec9ffca9671a502975a9237d86d7fc998f2860d53b2596dd44b35d210409af377cc92b875c4220c921eaf8d60b19b731cce7014b8049a16cf6a8a9b08f40a071d62ddaf2dfe021d6498c94295850dc56f91fd4f96813bc11785b1ce38809aa5a32df76f44eb1530a3e2604963da5d71080f0a70bd9d73e0a85d78e0b0e88be99316fb61f023e01982c6ba0557009a3040b5a90454b971a2e6b366f9815445c69de2adaf73982421a3cb2cb65515cd8b1a113342ee9e9b00c6b6196c72c3faf494b258210313163b82cf6516a29525a0543267c52cbe414e99eef98d1b592edbd369e8378f387436c90d26d9d7efcab461e73465619e624c4b2581a2e04e70629262c0dafb7c1b7d5667c2476b496f53acb637f8c618ec5b072781e49fc1bd30f139abc84e82068c4ce809e9352087d1ba04a6c6e5e47d0594d6b6081cff77286db7fca640f0c50292dc5ca4790b7db60d1c2c9c9ab0e0d129c1d6fc855c4277e2cea77cb32951938a3a9c1ddc6a5325227e28f489d960bee80aac54cb9bd3a9d4234074266b7393845b05913b1efb283713da74c35852c75367ab1851e3206f3b55e0299f11ebcde14a07fce8323100afaf819c33cb216a59e4b866bb489eea45fa4879b6df9802d3f2627170622c3115790fb8d65778089b4625505b58ed80cab7b79213a0d622cb0c49c333763bc4f468c056a32c520d071d9e7d1f659d464d8edbf2363a13f302b4109537e1998fb812258a2344a0046489048ac45a300a470bba819022bf940e3b335a7e432537dad29a41aea3f5574b48844980eb4887aa07094a6f89ef5db582f864b9ee7f439678bb3bee03e439a536ac8d4f07d5334d19c1af56a4fb623506e97ec2f4fba4d72f69b4d49220d54be84c0c3ee62dcceee35f4e4befec9263ec427b584ef9f7469fa9cc3b413043400f112a0df6564213515a6aa9ce123a92cfb4be6fcd3655e31a57e4615f28a2978bd0fc1066892057cfcb1f305d1115bb8a0da42d9161a1f4ae0ea21b9b6d2950413d71fec323b30dff8303ff25f4290be5c3705210955399f13d642149d66afa10c2ccb83315b8e5c33e4dd06a6a2e12a44f1d34eaf15991dda6c44ca645a2b027508dfffe03f2ee86a073336f65104dd226bef340b99c4d5b8b6a543f28541dfff5a73f1bedb8abcff3f8f7e5cb80acd48df6ed40812824b0055211b2cdc4e3149f71cf18c491a88ea132340a3e0ed60953144b8f3a0060b1d243400725fac11f21c38ec67375f21fba4b94aa4881ac2500c94c93d92eed74a7695d8ec480b58c7d9c18fce86fbada8e1c4fe9db75c5fa9a72918bc7287a86d6318a08687cda772960c5118f370af635409cc0e9f0c16b2202e92254d59f1b44f32d15c57e99748973dd15b250b2390a4cede35b0f5767b79e52b2e1a1059892f376149207389d535127a665c93d34dccfa2dda38ce814bbdfa4ae9074d359a095f93cc3efcdfdf03e76309ad35da6127bbcd1c2544298e922b588513a74370287203dd5a3af6915478eaba7fc4cfc9a64ab249b5d823c230e0c7d93c9bcf436659f4d81e40597aa4e346020b5c730039b3a0ff2febdfadcfe349cb03d22a97dc64e3aca7bbb9de276c2c60c3aa6b23e5f967a700d614a6b7b62a21b06610df084f030fbba7b1a5732e81a02fbc1dbc75175085fbcb8a9e03b6787b79f5433806ace20085199469153ceb1abac3c823c233d4186a486032a22af4a1d838054880310d5f5d10aae0f68af50cc06c030b9f8d6f3880730744675d51b4b5f66029100b0c11fbb8f773b81a5c5372206601214844672d77549f3e00a55271eadcf2d715bf5562cb479a8b233967d10c1175a5405712e5bf5c31801d7230b580c567a84e25301446aec0e4f9d8a86a7bb8e6b1bb7091daebbc788670ac778ffc4339e53a21616c5e2619e27e4711852a9bf1b7aa303389a34a624d9224bc1ac4c2de97c7b9c235a9999f815d7beab1dc8107b996e245e7dad5806cb13655674419c2c37c40a52075922b0c33e67d2dfe37fd1f9145c51a42db331328bd6e19871b13592b89468d7942915ff8e025d82ce4a9bbdd4df8c61d692b0403cca777b8b9cbe6a04336517a89d566990858fd038a491aa54370d373bd872cce3a9857fd1390d13870f4dac4ceface436dcb74fc5c8de72a6f0b9d5c87a9270c4a3b0fd01303e7a82ce731691618ecd1772674473d5067189617f39df22d7faf0ede1f34583e3ca933ab426e917aa728731993141b07a34e6927a4f843fd796edc8e003be3b40110e10c668a140449e62b26a966c781a5dbd518c66f9af8b183d00de5c781cf61724313d69ab2598f69cb879880a2a257e48afd4f09e2210297faa7c71c4bab937c815e6df266747f0046fabc45f0b4a603280c311d2b2c856d48a2039e847c0dd3323ab6cd65d7a61ec66d42358bbb5e1b854d644b6ef13c3d9f4ded8f434f6f3724a3c75f1fff44ec96dda49429a524d30ea9009800a80073ce6ac2d9ac6fe78c8d7d9ccff331869b7df675feaf238971b33a92c38581cae561162e60e010591698d5d2185249503fcb46b696146a1726aee22aae3e4666adcb0a42a411462812c597d735042961c2cbe487f9cc88fda2476bfcf97f3c3e2c5af8a8c9ff67f5750fe10cacef9fcc771c4db2aebb1fc6b462a28a61d8a3089a42faea63f1ab0836d6db7d3f918861c052b38c48ed035ed0d2203e0d74f71f72e9754fc53f7a5e17db9da0411d3c59e53f74e7a59b8148f9f96e6d7f6d82e2982cda35632e81c9fae2caba1b95924d7299659899657679a3bf9e6511cccccbeb5916d965e7310899b190e728b1b12e9aee3dbbdc73ffffffffffff0f4da46d4bc1f51dde386de33808218411c22f91b60df2630f225b73d208dbf4668c475eb6a277c7086374b813f64ae82859c1a5f4c852ce4ef1ba17f340bceee7fb9c3d03f2bb4f45fef7a5bffcae8c723319aa1e4b3eeb944f663224a5c31a8a58c9e37bd7b9bf2167c98a3b51c105e1f8657a6fd750483673bd60842bcc1de57b65d891c575bdf7de6edd8d0b7f2ff8deaf51701980a8b07c5c38077c2e9c1e17ced56ab55ad78e161414a4edd0261010d0cc9927502725281da8ebe26ea6ccecce4cba76e542a156589604ed2dd211a98eba49fd28df9d72bfd184f8cd0dbf590530db6da35966bb931501940238390930b595d18eae112ab5925a8012206034da3652c78ef31a307712686fac004642990940a06029d300d56a020fb45432994e276ef6ff2844068c42843791e12b5cb53c0c835db4ab5c05c3637295cfb8ca3b09d9551505cdffb4c0582ea9f361c6854ecc0c4b4bc743d0f5438b5c3f272214c8c6c6c6663b21d94c701bae941717d592d07a6048751a4dd334a7e138a8d048a911ea51e111ead914d6d6d4d4d4ac4491a56e29a5949b6552b6fbc6ecee2ecc6e07f78df185390285e5a82368c676839610080c878642e22847610c040d63d43e23d181c079242289511c064108c2210cc260086108214411420821843082599dc69822eddbed07cb08356bcfe62676368cbc2452123e07eb7e3f553144e4fa97f279a044c276ecedd8eea454e4c12956240afa85f18cc85e98f0d2f10445f329bd955119239b2d8ce5ec400a0c947686f5c0d323f39c22460bdd9257194075dc037eef1e6847d8e2c5961431fe0656feda6310d71de59ec438e43635625cfd96bd4d8dfc1d140627aa056509d8df8d3c18507c5990253dee8596416190863410ec21c132e462a08b26d82bab289cf2cbf2b3e317004161f42aaf9f1006d87b41af9bf363ad379d13b52b5c185cf8213556591f82236bd42ebc3b109d79617005b44e594ebd0dd744b90710f3ebab596cfbc10121d1e9226248740bbce1c4ba1a4a9375581644a2e7d12290675603ec1cf642e2e6e43787dc0f144525ebe0792c5ee72c7c21a15b52636a73a9a5e8e23fb7bb8299a2ed8b9e063841ce2fe5d0bd4bd8f42f3570cdf979b00469c593850465a991d6293773e2344b86ced0503d590e47fefe4cea47c90365e8e15e39397439dd14ab436466893fb848b71fc51512941f0ba2a2f24d212f0e418b446068260dddb4cd2ada0a896b44bf1512576afea8b0e50e0bbe851fe8c0b0d6acbf8db8c59944e2b2211c05a5180d7cd61d3e71ba480924d435222b878fbbb44dcb9cbe54a72816004d87987dd2c2963171a7f209abb80aec39d08c93c29be114619524d6daa20a28b6458e211fb6a52eeae740676d2ad6082744f5928a10a204e0c2c1ce3229bc099c125321b0228a2ce960677daaa4b14fc2f48482bb2aed38991c4a1c9112373153884a52309f20e2a4722873234ddc62a6e15442715df30738d50c162163e8db8227b122419848ef8071697ad332274e559e89da896afa0e98b5a99bc63939d6eb4c0c28abc13bc4b892de749fd32b15e7a4978ad497dac1cf52fab6694c2fb55314585284f3980e76c64f499afb54b44a2870f7b153ffc8a255e478f211a1481755fd38f334d1978e7bedf14d6c7dd359946e37c8f301c873a14a22967cb0bcebbcb30ec4b90e96fb258e86392ecbfd507b726588fff86002a1506beee2affa98fe3f9dd016fd3eb168688d6ffc2d18528d34ca0dce6a07dfcc14100740f74348f23dcd26dc5cc3c383e56d600484e52fcaa0d983f24e1a86599182e659880554f144639b5ca3183904e68d54d4d6f173b3c9c055a4d085acbc0d0d6cdd66d4b1f8c673719ba19db6cba93acc6a0b6e12b959686d25f8fb5da3377a595bc91dc8d536af7884e49ad27670aaf97823cb04a4966e94b7576afbeb04abc82a1a3ffbb0a1db07ea2072a8755b94882d62deb31359420a2050f963a6654b61c30d8efc7feb3cb056cee54169bf6a6b1ba9f5c5117b84621a6f453b09530a37a61ac666927d94b542f550709cd2c0a5cd419d25e978139892d30885883a5fd368098ac4ff72b0b3d4afb041a6ac0e365a3c37d9ce6222b64f93a1529f07529b6e585370c2c33f517cc219d42048ff6c485fe2a526b1d77695287e8f3f82081f9512c62d30fba012d12e0d5a736ad31de0067f3229875a20686888acacfa6fbdb478a163e0a8954f3f07b6ac49a77c0df8a85d18d297e0470772d3a0a0ae55f6aef889f835fd376d5a67206805155d17023f2894627799eb06ebf4dfbd45c4986930a703e58a6c08bfd5ff4a5172527c8426246bcf4bcaca8d9f66601a47800ce652c622028747f8de5ed4d3383c535245043d7bff6b64a7e7b11d661ca0bb41fb6c29f7b841c22cc5cbb2841c9a67b37e46d649fadc94788e6c15bbcab58f624d7165b041cdaf07ecc973e82bca7925710475cd826e266ea574b308fbd555532578f43a14b997266d69d3119594bfe6014105e850e74a7aeb3ea6d7ea14cf96b6b19b02965823071237d3442d661a5a25abe8569828b87d07b97910ac6286fb14beb0604c55c43c95fd1bbcf1ad206609c508e591587ee364c736a2c8111522eafe2f25c27f23d11dca8c9d5235b7a978955460977258fe2ce42ba6d003d7714106ff7be954fdb6003f81a78a27aa2e7a014f280698edc316147daafdd8176429153c8508c5927deb68fa68f62b23364ca6bb07f689ee931936f3d599b7353cd001b7112ecac2ed5159f73be922f6e8ba0f932635737ca8c4206d719f9b5f7b4e4c7e0e2cd8dc750b360adceb479d4af667fff0e8db38f228439e21764d7d6dfb9f06c9c16d0d7e58a7fa415940ea11556f52da850da6aaf92c0e7469e74063d914de044cc928220aa2ca7b89f513d1819df32949df3e0953094575ba2e1ad487cb3b0bc1c6cbcb94bd60be6057ab3d3f2a4ca4bc0332a752eabe6d12a29c9022980eb357012bc8876ddebe5fd29a6d52f2a4746c37d78f849b98d1b3415b3a1b3747fc5b8ec5bd3958fc0239c0c3f00e0423104c813e89f13134d6ea9ed582f6773850affb8d20f386a5906fb2aadac82de102cfeefa7c26143ea72bf2bc129881f5ad31c6da2876ab488b41a147a69aee7be1507835644dc5dc717d591f5aa1e58213225fd2ac7bd2b88ac776db74f60900b894e2489aee2433a11b4c11bfe7d8a6f0c6faf9029624dd38c6fbf35f3f4e4c2412d3a410a4ec8bf6b9ee2c74a3f5d7326243b06add4c0701380eff81292e5026e7c5af80b7d87728f802de041ca725f5e6979817dcdd84b3e3ea7a9ea44b226dd4633cebfc000ec9cc68ce7c6ca8b0e5312b66319fb98c6cee298203fec14665eb39e0775277b1697044e174f3d708763b86365c3572e01896656a22cd0f42c98216417a752a3503f6998797dd85c2a09c6fc6efb9864c83090de7ae0665b3056ff741f01171edc7964ccf9c74e8e20fba75a4d5c25ba03d0e9782ed5d439ec4c5e30149b4ed914cb20cc25b57aae086e27447a56a517d2e7651c50e9ee7db0fca7c5883807f197998c4fe857682fb5fc9ce48ed43ae26091fb24d2451e06b0fafda54f752eff4a8420ef92d08e46c3f9e4fc0c118008243602662c97ba60e2282820ae39bdf38554fb75ca2f27a5dfdbf9e26f4cbcc31cc4902f90566d30707e0f1a731315ea4307b05f9512bf865b1a68ea7c74d1f0112a0c0196940c1c9bb79e2b2b749f7c99f1a49f23202e1895a4a280bfb55a03b1e873e8174b67026667b3ecfcd146559f6e94d05076d74cdeea77741f8bad34b7c7ab48ff4375a4c9afaaa051f2e7d2ccc5ea1564c2f673fc2e3910f9d86edf527893c11ca63815a3a4362fb902737d789e009d752b6c5a70c996c74d031a7ef953f89889b6105f45741a22a7255b90e3d943b9bebc0932851a5f28a13eb6d62c5a7b8e3130e45ad9e8024105581e583590996aff0e4146375fb30da6655f58c1703b7293fe41ce8a809a14cacd11636c165abc85c914c06198843fdb6659e224f11b183d11cae65ddd1219bec2203332ffe00b18cf187328df107d36e0dc6f8eab4260ee3465b9667ab3f2bee416eeabe2831e7d9221e4dfaee800d64bd67e4c3d173bb057c40851821f05859bd2aa011f53c11f819e3254713854900c059e1477368aec16fdff680177a04aa28c8bf3bb4f32f4210919cada6a5a544d6067a8e45e628d0714dd2568024d35ab2e1a8684061f452578386d144c8b6aefc663d74003e8c1606924500b80d4864f19ac6e104dcd9945c6038618cc981f89a34d955fe59e8009c83857aa5eb1c0f6023ae70424fb81ef6b39bdd257bd1c52e47f66c86ae18f97dcd9cb3af27a6824a3674d740557a2f000c922e7c05f6324a65173aee93b26bde21c1bf14980570cc0301a6283a67626b6b294072c8ed4876d0b85f9ef66ee3b2211784cd90b97cdc1d544cbf6848a8c742a71f0c7e06db09e376540913c511a299e3d7b2f4354040d10fefa841564c4150ab57519de6cd0104d6d3ea05f510f864b0d8cebace06efe62a052e0362f580ebb8107a8950b36e1050d9e86dd9905ef97dff531a631d10d5af2935d79e47c07f8dce054e5b5eb9b5b0427b7c9f1303dcbbac2830054a92dabd3f59aba1108b2c9b8a458d41ccb9a2e3eab3300014f5fe5818cce027d50eff67d083cf82ffb8ef726de4502cf3659cc330ca74a3b397a1006b7a48c7e673f8bea432c1a84c435c2516c0fa033a6fbeff0e3acf95d9244a2b83207e0f888910843af6eeeafa1865656ee69c85a588ec08f401b25b90eef16a7feca981c99c3fc09ef1ffb90b604cf32862721fdd438fc4893cc787331ad04b471191fd34ab8c410348cd098889d1aca9009a7099ce1d76e7c91039f9acde28f8d67f08442e0b1cafd475543cc0f814086222832d3b32f863b0d219ca227fcb230a5e911bc7dcd73ca47c8beb44e1d2c12c97e9527e872c9094a6fce0bfb35e48b0767b3e7cf04cf872f91c7266ba5c4c2cf0caf598aa01950cd79461823d4d93bbc44aa65c8b4906536781072409fc71809ce0608d7bb64db0e68ae44eb7b4e8867f8ff38798b0f7fa31c2394e022e9c4c2991de458e5fd4211c6dcdb598d8fc50980caf097e258fe4f426be6292bd9789ad731859d064df2ceafa9d28fd1375250771b78b9bc85166123db7371e953e92eba295092fe4490708bfe74dd3e996a3bb34ca141086f46dca843b9ae9776e5d5519f63332bd9217ecdc009a69001542a030a503189aae2adb9e57b0c8f003d4f17e5e55fd45ee9b8a2eaac531b360e72a9c07a9840a59ccdd19723c005a6914addfc8b7dd9f10b9c996726f29654a5226194c0134013b012e57ade672fdfc7c5f0d084847ad567b0d0de9a81515b930323a3aaa8191b5c02edb11af94fe93d66dcbb9e8c3b15bddc3b8e572fdfcc0aaa0a02021a1d70bc0fd30e653fdd68b3d1bdda2a3eb5e1d0ae108e3a38dd79660c85ed435b21817c044e93776decda442ec86cc86ac465ea2a1b427297f786620a6c44769067e7932272c9381fda5bf6fe0e01ee6070b293d5326067776c70edf08230003360bb845a6a2a33aaa84d338157faa498c31c618638c31c224ccf3810308af6791b190ad8853fff2ca527cf6a887c5a92915adc4a979a6a3f4dabf8edaa4b46ed7da7bbbcbba17b7aecb5573b97e7ebeaf56ab0101e9a8d56a413007d5845e9f5fef9788c8052e0a10c0c8a8563b8243390765a0efc7955b381fe549e2ab02fbbaffcf4969bddbe5386befbdaceb8effdfb3b75aae2b6bf1f3f37d4097b35a63bbafcb7644e93f69dd2e67efed2ecb0bf544a5d1ec70422c1b89869d4486d60abbd68e944639a7f47f7ff79f524e1a23dd3618e3eb8bee514aa7aa4875d550fd04a1c4b1a320bde94ababb7409f5ef6f55f5f367748a4d933a6daa86a2b6ca1a65316f90e3a417ddbff09d70c7e5ff7389fd5f894fbcefffb22b184621d68a9873422c317fee0ed16abc8670a91ed1ac1b7c8f5e12b654a1e70910baa9571f4aca82e596fd65c4ebec5ec5de809bfd6171eae69f79dbb6cd4689c6c35661a5d0a504512b863008219422dbca12eeee2e679ef3bf503a27a594d27f0aa1c73d737effff13be431556ca6739a7948faffca594b0cc182b56a850891265ca14264ca0a0881069d2a448912143aa8c15ea69d194c78891274f922479a9ee08b0c1b707c4c94c54d49225478e38ae9f970e858c878d32c69651a2f4ff9cb7cb71d6dedbb15801114bf43291e2162c52525252392a8744db7374864ebb3d69b5dca6e1ded8a44146142f39a0c58c59d4119ba4e4abc5c85a69c66dadaccdd7f3b59c95b570f3024e5b376d51e7dab43c7badf065a7c2dc11d0cc8099410df88133925fd10c350b5c714ff51be674cbdb366db523a0558c58a868df671d446b216bdaef0b27f7847b8234f3c64575b0cfd569b6568bf4f56da12c23eee7c92179551cd507a91fa46edb95442a85f059dd9e0b6c58f9cc226612e212591f590d428773270163c7d8b1c322d125b27f5d7abc43b1393791e3080d8ba079c4c59ecf9a1d76e57715c2216156d8e0a4cccfd989a27fcb9308deadbe2aab29941036b77f452268b64e53ec1c9d6916cb2f5c2fc51eabe368de68ae40495ce52a75246eabf4f3b47d2d8cf6dfb3bb33ce39f196f346655bc2d8bdd508bdded2547709d96b0d362a4d77f9ddaf25afcbf3e7b9e56198873dec49f758b6ebba2c65673b7bddadcb2dd75802177418930559ab3b921358d2802026b87edd0a40303b2060d68a209e64c071f3e1b96a33e7ea05e6cda503add6dc692a366a6276fea9861c8f43c342286b0d1bf3eebd7f1561daf23eb358ac67b13aa4efd2fcd6724fbbd5a3dea5eeeeee78df7fd21953c3b62a3b4fef09c3f2ab3e4b295b4a56ceae254c8a2a593160cfd5c2b65c638e489c2c64ba71f6762cef03ad94c99bc56239f7ab6b86e9e4485f5dd176e248d142fd59acfef6f81f434955aa2d55594ccc6a86db4902254e3eb8c3367de5d4a59f3e56777f8ce6736ae8eacdd666affb3b4b6106867c5729d89a836d3527cd5afba9699ef3733741f516dc1bcc600e1d3eabae371f1dabeec592ce9a63bdbd260d631c9b26ad36169bf5f68a4d727a9ee7651b89aaa8148f9b75250093a500101089c5a2b124894114c4622494f801240207c49b9288940b83d178181004426310880111860a100021014080428c51628a1800a604d7b2d80b5761fcc282d4e8a8e4b47994141c63a1c3a89a3e1bcd0f2dacd24e24437712d77092ebcf7e6a663fd1828a46f9b954c1599c67ff5b6e846bf8e84d8dcde571851aa94cc169b76c4b086f1ea8b97422b63990835f8452ed4079b9a69f7fa92992ddb86d6f7ac3588ac30a1f62d214d7dc9c78cbf50f7ca1664ac8837e6a5f61a7098b38f0a7e98688c57ba69350a2f11acf5a209471190d040479cc1db540aae54dd0c65f57d1b7c6a0633af05c0e064471b0ba7ba11fd7bb8b9c69886f2ef420ff0fa0e727d63cfc0fdd07e927d3047da1232b5cf3b8ceff192ab9cb82ec88083c42c8a8ec8401ecfd90a1b220625019a1326ac28c0b7790bf211730d6d5f766101b51e34d0646c6783a10f0ec30c33b017bb61ad236cab848912dc933208cf0886865fa6ca1fc02d5fd9bd88a7e7fa93dc3ecc2b50b004f82929a8012e7816a87df0b24b805701fbca115f60e13e855fb9a067322ec0e7f64d00d6b4c6750c2826d547e361d3e95d77b61a31b498fcb899f27113d23764cb31a4f3b42b27c6eec536c618945ce56a6205090148bdb924a46240e144aa2ecfc0664e40394e715e4eae4196e39f31dd7f6f18726238097714e7e9a3a8657fae394b66cc0bd10f44e18ba21a005c2f56968110aa20dbc40fd8175aff4dde03d8443e5309da4e09fef546fdd172d05dac3010717e7c7415992c222d8532c7494c1ce07120bed459e1234fcde05b3322681f462f5a91046887d2409844ef53728715ba99e920c96a3cf20441a88ecb52b2f4a31507ac9f82e23b2c757526e0bfe055a4a8fab9cd34186bd7eae971c9dc22d8307916037d73b5505baded9b89dae77de5a1e2bb083a8d14daedda35243e38bce35e5688707e550bed014fe84f8d13fcfdd1a767021d0e1bf6d010962e7d76a07421c7b88f66dd73904491f2975de333f956422434f8798a58b5974f5ad27f99a86a96a5c8916d9b9302db99874de505a2b2defa1b35cc8e7172c1bb73e9eed92dbacaa95f04b71a021eda211ea88de5d47f9b30038b0b7d8e7d6c2dbd28ba5c76d233dec9cc9cbab154f7e84ff0dd04829c867b22c6553253514d0689fe25ec89541731a3ae781b98620ab12735cc03d07b4bfd976b95a6f8979a74b280e58e50978d0d6b854797d2a02c9094a08aaeeb06b722fb0d986ac26187e7ee7a3678640181c026b235087f4ac7f0ef8a74dea655c3bad974a0e609b56e8d9d5abfcba2b60e2a50cd6ea071ef0645e8100abfb895302481cb6c1dc93588d805faee722f717f361881832028454ccd30bf3c59f9ac444be1823186bf28976919f4a3942636c84775e8624909d461240d4166bb767173185c428c623b1f238412d409b953df4cab0877aaa86be1f1f0c63f01981d92565bb2cb6d036398c5694d11a3adb565454e41bb926b75c44895e981eea4dc1f8950806c73b22f0d1cc107e0c3b4299d3a364e1c9d6a0cee7759f064e04a7a73d71d7cdf6db58538d28a05716d3d13c06ac4124a57e0ef8f5d9f5079f37123a04c1ced1589a50369eedeeb7ff151c3e0d44a1e7f451bf1e6bfc2de3246ae9c49dae7e8f297a6eee1567e2b30e0b44efc80a67df5be9d7ff81dba41c5331eeb14342a1ea68643c288845c6cfe57e2c0342c98c64f375cfff0d8c8e28566811e18c6c1f1603737f306d1305e32ddaf5e3e412bc6c7e30dbbea7334be418f2f9ed24aec0d5b847419f3daf42bbda626787797f19557e3c035ec7c2a1973e044e62cebf56d5a6274c03717b21d2ca0a683e562d33184478989da2d35f5a48cb3fe8cbd3d2dc582fa374d8aee6316dbae64cef117cdb130463076907276c6fa009db0d160737318005cc74726623a0b5889f065da27805832236ef9bc8faca1ec4c5d29e3399ab2669d24327547455d53386beefc14830dc62fae3abc9cabfcf1284a7150ee30797b69c67586bc87769253132deb013af0d5c92e1a8354bf9bb21de0bbcbddd65f62a669a2060d15e6c45e7104fa70c0408ebaaa70b44e9b3512f21991b542e886932c52004b522c60c8ee4c0306b4d1ec129719ebf851e62280c6fc103540f83e4a00c9e4129dcf39cfaac2ea4745dcae0ba196cd949890829e762fade8391da7430f2176cb6dc9987a6f744f96300747653cb96156ef1d9fe70f18188613004035c2b15ca2af7912c4ab07e38b7bbb085dcac71e6c4ae0574ade214087c8a20908d3598a917dc62e0a440991cf955f6f27ae155a87c723a3d6f7bc853e3970edb0a0af0a074c1e7e9a19e484033eb2ba376fa571e96a69d8e5ccfd19955e856a9447535451b9dded25569281086433b618cbb1cfee29302fa41061f810f65dfd03ea19b35ebc6b75966d930e886c811ccf84f9b6768514fa683514f499af5afd72ab99ef04f21628903077bd80cd1c0e934503051c88827f3eb3f02dfa59ea69f6b7714377317323cd153298d70700a2214c9584484c2cf06831479a2d9909eb2301e6416041483aeeadd2a4fafcb01587533bc3dc630080ca2d06be6f6a8767aa709da388d5e40d1ea8abe3ada0e46941883990236618405c0c4d910c9ee9c06fd2ac705079b1fadcd216775d1e292176a2ef6561902f5ede1dc69ebe129e2cb93884ef967f6816a7baa8e8a432a2ba999c409d337c441539f3cee6cbe5a90c1105d857ab5201832dd833ed5ed345c19212cc5c9dd34d3045ad1a557f979feab6135dd27aaadff48f108ef727f6f1e57f962d0c4538873ce492e12ea3bf69c1a41324e1316992f347411415e99e6d36d4283f27adaf50c190c00b99651b5ce10468e0bc08441f8d18087becce952fa0d49a2d3a96684f73db8c1cd31c5eea1733d1c31f4aaf3fed976be6f82a1ec46d1c18314ab8edb7f2e868633db00db24953243a8970157ed0812d1715acd133d01d9cb597dfd578f941ba02396654cd399695745aff5d30644e6d634d1711eea849b77f9681a456ef5c99b81644684d30a6b5dc8daaab6abb3cbc409fd66e8ec4c73a21e20b1092e56a20c96d477bcd371827c890775526503c883ec4536796dfa481059b94f8036c776137d8c83a7a593e064d129a66f6115f8a7b242e157aa6d6b144d49e892f6e968a12bc38661cb94fc73d708293506adfc884d23f521906e4d225771ca1adb7fa573d049dfe30033ecb6840bc6bb903b14732c5290672515a5ab6acc56f68c5c283930308e49a44e5f5b65a97b69a4824ea940ea650fd6140f34f494652f90a76ddabc458ba0b623131e256e90c6d4a111fc465de980a14a7dbdd24d04496766d6fbfe41d82c4fdd3d77eafd3f91f7cf90197d64b03e72d969d5f130180296b26edb4dc2420d5dfe1f032ff166efc45e8434508fe882cdcf0de5d269e003fc4fafa0fd391c807550b16310b9213f4a9baf12a7c1ecd2840d9360709de2194373247f7285ca28c444d4e81955f0009bb4f5c34c87c34c293514cc64553ba45db6388eb1bd4615815673f5450a391ba3f5085f7f6a0d26f3cf686e33c46ff36af2738535f7c3fe9c909ef6507c2bb54955e186056b8df55163a5b90569f885bb105bcfb474839e931cf3e82e51a4ad6917506a7161b117369e43aab402c44d0ab0afc3c0bac686bbdeb396cc70830fe62dd8eabad1999bdc609dbb24d0eb6c0f27dcd6350e0865612b3ad9a67f2fc9b022a523d0cd59ae7d4ee588a1baa4d3da2aba2dd5900356fb0970f6678779260bac96900e93d4f5e97a8ba67e8eb901de75a1404bb2ba458f7c3eda0d2f4ca4b4c7291c404f2ef85849b21fe864e4a87305db44b4d82ef85402d25ed752775efd0039cfee052b013641e47eac736c1b5e50efd798dde75acc35b388fe60f4da2f54f1d3cc0b671c2d4ea8fd8e3df77ab022c1d5c0e64f854b9ecdf63f7f2d92e9e7f6b4426d3d60b49d9e67ad8132348ef8fcb1d532a02f2ac6bce702eb5c46f6c0946405614fcfe5744a5855ef43e76c7f4c1ee80255c18ba9cf2504ede251a3c547346230fc875344f47f23caca8b0757d3f9095e8cef2cd8ef7e8b376b250dfc7652e4e3ba533bb4d32544df281421be2d085bb67e8e0ad57221054be48b73f4704e778f6ec2f5e5d9207aadb5f3f7eb09909e88c8c80464bef9deb51541af2ec81ff688f71d6f4e7711952297502a697c02d480e7ecc0f64671819c8a7ea127e64f5cbc28765448facf6fb7ae0879daa8cc11c0b0a1272a2e0536144d40056736e39d04e2aee42dafdd0b2dc8b1c8f0952b522182d3410ada3098c2c66e10e8171fadcd244fbf57d9c2515a886447ecddf0d8c9cd30a5b22af77945a6452de642fcd726372a5e7982265d99c78896444cb6778d3e2ec686761b91ce920d81b9d66fda81605830d0f429a6ce217421acc89a5720a4acc360fe920e0c5f2c18e85a8ab9c0be9b00a97797923f66d2a92d16ecddfd51cc2aa574ada3289adf9bc14a8c0aeec56a7929977849b630113484954595db012d0c258b6d94b3fd3aeb78a2d2ea007b11d6123f72995da4c39aeda8eef5d20dc5ecfb82843b816428140b76058c1c6b66446bfdb57d0c51ae5e62ed7256f7e389915cc0c58371635571b25ddeb7218bcd96c860fdf7b21f52443cd1eec2bc83423e696679f9c718e5026bf02dd88ab971c76cffd52aafa7b730f05de08543e42221015b1ffae609c64ed5741b97622f7124907cf7a11e18ec62f982280dd2f09efa551464aa6a46cec8b8576437a919db1b53831f9b516e1186c04ed5ced93a221b761ea99bb3a5e8dab87fc9b6a275b78a30afbb2df5014c663b6b5363711b6f692b749a170a42e4a32630e80656f2e0a21634a6cac74a7d6e32434e8d1ac2583666a863f074eca92a5d5a0757e316fca76895d186f26cd41bc557347c83288dde212ea89b4bf4be5ec461339085ee35f40b21336ddc164e1232672f06033003cd9ca584588ab856a14c6193e86223a2e007c862eef437f825e3ac442565298a9cf26aec582289b566a79f816f5dcf1f22179d5dd98e0058a537884dd506da85a7ac7ae3aa263ad4225e06b68d7c50fbb78fc445c729490f5bd4f299e9c413639ca23f7f377e98c9229dd93245f3d2eddcf78d95ade38d1bc8130e9b568acea8aee8744cc3f7c19eed93ff8cce5df8b91cb158f70887df818c47d91fa41be67d8058ce573598e955632a248cdbe026b92d1c34899294e4964bc0b10b37d82309960d47a2cc82fbb0f00dec96d3513d1d0c4e2e5fb8ad282c40b9d40afc26532e789e5858fed4686d839574b0a932f7a3102b8663c61de5c635b9a39c7c703e3106058ffd8a5576ed85431fb7c8086caee3afb81089075c984689181535dc7bfcd34e325e1c76320e2a8953b93fefd0f939667b812aef3e73bb5bf8849410cb494eaaced87acdb8752d0bfbe45b934c3fe0ce1d1f2b46beb6e258902889c2008cf276180b842e10fa504a7684a3806ca4a4ab54666d7f3642871d4c38ffa4b990705c8946310286c4a9deae290d77513c9a83110fd2cb21a99efea688cf956723603d756b7f79bb31e4b72d432cd58acf791209c24bcd7320700543547006f27396090eef82409fd9a81af24388245ecad4f7327bb1f7ad470235e20bb010051193cfd6ff9003c28724cb568126e501c2f78fee7afb49ee1dfb07b2216419d8c9184076402c55896c087f6c67a7523aa2c3dd7919dec37287d0b17b980edd613ab6a3a80e3dcb1deaa1079de17c74e0045db84a7082ffc2a3c62e6d13ec1cead3419ca134f42c27b73d418b1a848ada737ef1f617929b5f7debe37947de7b2e9eb241e936e90ea7cb72467af4a531974404093dd5fdb8beccdf5bd02005e618b5bc12184619558c2f2783a7e899deafa8b087f26cf463130a0a3d605a62d01cca1ca1c703cdb1e22a06a1bd053487aaac81001c1b3c8dc438fe340fd28c323aa070249c9632e05a969bf6dbff273ecf84a261f25b2e64ae470bba711ba182d8210e6be24e501b4531fa61e8d392c613568300892cf207980574660991703b99051f0c1b5b59225bab2e3cadbab5a462f667d2e46ce9249bfbe7bc7b26cb2cd490894abd8ac8cb1dc4628638cea95765c018df7fb8142fa8bd8f63de88b62b90effb278f35efc5f2d0037f25b703f9ffded117e250c25b7166b7cde280b273f86a0fe2a87a7b2bd0c6a288ed89eebf73459d6a51e363140d6ea4f6f0f5bede4eb602e6d4c98ae163e52fd3cc4b74438105fa4d8f032e0fc7971fceff4e9d93965bd8821b1eba2a9639f73e75637842b319c01e99b31d53cf22ae3c8beb59f83d101fd7c883c4a7e78ab0a5aa1e475c75cb9baf66fea325cd7cfe701b2f86e2ce113a51ab459d277fa1825984342092397eddcdb721aef1242bd26416d4f42a980181b6c15f03da06acbe68e34e62077e2248e76a030da6a005d5405b742e38adf6b925301eb045c13b5ab8f1f4596669b2fb6c03a650dcdf4aee5ae71a82c884df573c525aeccbd7a45b11e90dac53e79fef0beb564cfe2570066d37fdc8a76e4c3cdd14469d09b3f89db4492203f22de646d6b31d467de4df2d8fbe9ce4944dc755b678af7c5a5479aca4fd26cb8c731b197b9391801c3dad469c76a1eda36ca426d95d861ade0a20af9f8d2f47696cef831bcbdc2b60cdce9a403f1063e7a7a2692665aa75733df4860270348ae971a12a93229de280fb58ee894e985750cc4023db01c9bafa70d3c8293f1f7f3811e7a2daf548c9e707fa5180fe8f191800039c5558e1a37e60aa9f6d6f5f3b29e310761f2788f58fb2f8347669ddf4643f71cb9e5194385623082427a3224dbb0bf4e9bdea5a8ea5d3a6023d37452054183c3549a0e92b676972f25f323af81b726a8f39c6a39029bd61b995f5108ca84a3698a0490422e6b31c5605dfb8952950afe544228f0d1c3a3a3d56dcfd4953734f8b78cdf59690b339a9c53435835e62df217c98234a1c8d2ed592d46c72034c693f21f960551a42a58bb0f283054e0ad669c9e6e1191850f94b9ad68d49c8b4e81e2a8a641f9bed2e8033dfbbc0f27a0484eecb8743456e2a884359c75b9078df6bcc5cb021ffd20d371492cc61c3d6c1ad79770aebd9deca6b488d6c578070484d18b50b9f6f4314c55abf0020d62118555f74ba3da9b646fa146b8ef63fce1216db1d1146b47c4e11ca2fd750b2a3a9af9820e9a0cc17dc3a4ed4a08f4a0137e6886bc3dfbfa0eaeedbb249e0e64890866504d083a064c1087b2cdc638568765af3d6c2ca95832e3e06fd40cb22096fd5ba4463a08c5e82406c0c3468523baca3de98fe412001460751e669d142ce4b569ec7d84b5dcb8b0525782569042ea2170761de189342b87f98021180931f745930e92ef65322f2efbb3152a58fe414744400ff58267f2991592ba7a7188c69a6fa42352b1d81a2842583c170a5f85524fa26536c49e52a7b93ccac8d941be0ea1c960ccb6958325cb5f11f80764d58328aa12a3ba792b89c1e1ef14e4ad4aea758f53568280128964ae27f8c00347dd80cc1da4b875c538739aa6c0a4b606d390a80f6c15cda90c81ca97051cc0d4b068b13bbcad5879e81b3b0645802e550be853a3679b4646fdbbd722f71720863a52660ecfb01408f785d8ccd0535ae78febd0806e9c0cc3ac2b8b9fe9f7cbf5d40281e3c2c19269d3d0a64db2d5d40e1e26eb35a2f824988fde4c12a192c23054fb470d7044478ac4a86f5d3195da4d759da899c04065344958c15832a19dc0a0239b0b7b1c9b6358811849b4a8628b392975b0bea9303cd8f8cf9bb5432b04c91d5bd512a19a9b2a603fcbec4703292a12567714725958c313539edfea864f4cd27e324f27013950c42c0e9463823b9c52b9b57d5d2503a0a8f9a67d7876d18a74e4602ab5c66e68e3330ead78621076e14668821c2ad0d433dfbc39d46b8f7c942ccdb1af285299e360c8179e407e337a50da3c119441045c9694a9e6494eca40d83988c368c959f3ad186a15eb3c68a147f09a4c700fa799c184d104f5b1d004201fdc0f1548ca8c09cec413f445510b055b006142158d4ea0080820025af2ca8469ceaa1fa43874644447c7cfcf3fbfbff1418f6892499916afb64bb57489a1421944d8a2469036b017a0172019cf79c38852248be719b514e93b089ca7a57d6853995f5aeac8b4fd374556ba9d0b2aabd71bd2bebe258668d97ddcbaa935be69cf3ccafff5d5917c7328da2bc0fa7908e84b48e6cb35a17c7326de3b4aedaba7826a35bd3b84ee24d30ccc675126ff2811bd749bcc9076624d749bcc907865c27f1261f186abca2f2a5297b67fb3f929dc49b7c6048d1556ffb7cf29ca8a22df1261f18522a7cf4a89e7cef7c4e7712cb0786948af8dd1b2f4b5d74adb58e17ea9aec6ea9905211bf8f96aaa246f2ea67a9f5f77ada7c730b52c2905211dfb35c242628484ca68f9d859af645c25a6bc9e757ddba064262329a7263720838a0806daec03fc46d988ca6dc989cf3a2d82132a3293726e7ec5c971e9fbce8726372ce8e0793d1941b3d6d96da2d7c93bc212a57fc29d5f42fea2965ada6f5d2db46e98ea7e26301bac0b0b6fa2a8f61d5ff6dc86a4fc5c70274819151cf3de2e408d0b6edcd18eac625b06d9d3c3948d2d41f5dd775750e8fdf47cb4562e2b2b9ad6f8f8dcf3b500702817a07ea405d97330b0b0b0bc922b3c824092bfcf1a2fb68b9484c509095af8063a5e7cfe7f3f97c32cbe3395f575454545454d0ed393b9d4ea79f2f75cece299d929ea0c06c968682c46434e5c6d4a860eeae4f609e5279ce88a1782ebdb485eaf8e6a6d4643064df2826b211c4ca888090d1941b9373762c6f91b8587a569fd70ad66d1c58b934e5c6e49c1dcfd8ff538ae5c6e49c1d4f852471cf6d20d73bbbdc989cb3e3a9c8c8b09cf3eabc0719e039d1c357281f2388870fc111e4e3fbbe2e7dfea44f9a0ce0e1234b5cf330890a7cfbade3fa657bade26301bac0c8c8993fcf306e812e30f61d3dfd37a28646a9c9300d7e591ad5d6d0999a343086658f53d61943effdf8e8102d40511bb528a5749b76adb6d676d6344dd3a64db32ccbb22cc2300cc330abd77aedd7bfaf2be74e296a27cb713c8ba60cf0546badd55a2ce12c651c51d434e99f243c5159eb7ca3bfd134612c81d406260668545d78207280f41c2ff4b41e94562a51fa944e54ce23a4884694465b4796ef697fd55744a36aaf84a7c8f6c95e39aaf64a78a27254416497b0f9e517178b44c6dc941fdbc6962a9e691ee6fd26b9702209866585728e9cbf77d3886e605c16efbeff1d33dd91a8da2b614c4d3b4337ffbb46c606c75b1c1b59f656ce68ad3aa4aaeae8e8c8dde66c03d02100019e0bd0018089ca7a57d69575e90508a0030011ae6bf0086de0f05ab5c14303870d210f0d9995f5aeac8b639cbc2bebe258a6e9caba3896699b565d1ccbae84c107419263dd9671acdb38cfb8ed698e557b25dc7dd7859694d1b29adfa5df3e3e36ae937893eb43fa3047d0dd09fcda1dddfaca327b86d719408e0d8d8c4e511c2cf01aa23bc27bec36baa36aaf84bfad39babb684bbcc9078620c6148944229188a64c2660b557c2930f0c2915f12b1f18522ae2f70f0c2915f1bb0886948af87d04434a45fc3e7a9297438a7e0e895211bf8f964bf9e5a6ec1c5295b05cf4047ed30d043c94b069d6f9467f2344b5280666df1b288a8698a6265220a3abefbbd4e220e01cc82978d7085e79f62087580cc405b9e0c3bd990762c80d0111e1442e258a9a2882bc98de93a7fd6bd3364e4f9e23bc908814e2133f1037c05b143ba0f8bd79dfbb3dc821d5ce1ce410aecf570a18df9709570b5b767110700e689b7b808b80db20380940be0f14442c88443e0c50f0261f185232158c48fefd1069a042c80bf703187ee2d29fe0c30574b45c2c12d2bd18576c376fa25f7c1f5b7b3185bdf8e28b31be175f6c490a26cc68ca8d6772b6ddf69ceeb5129eeeb5184b16639ca74e792943b869b95c2ee6395a2c96d3d3c771f45c8b7f3ed7c220f1ff41d7ba181b4486031a1b1c19eca6dd4bad167e8718421461b6c035586bb21657dbab85a52b4992e5c1693657ea0311f4779145445d0ae7d1dc84f6fe7bb50a63095b7cd5fbdac51c73cea571b3d85ad6b2d5b517eb89cc5077ee97c29dcce08eedbdf7de7b33ae5d14a1410c2192700dd0600b451b28878a7188184214e179ff9368274dab1b1a19189acc878889aba8a4cb3a7d14040d5307010607a23816666190041142104207b46148849c8d05918903b1781c0e838a252910e105000104080122303030625a070253f60949575805887266b27db997b0a2e51044d444fb4ae82354c84ab8c468bdc0bc01372690d54859c8eae22677c0b549665def4d1d5598944724376c6fbc348fb3bb48959fe19fdd31ea70726bbd94ae24ce54a611a3d78bab6fd88862b7da14befbff45c11cf6875da5aefff0fcdac4edcb872165c2236691ff3b2ad97de1ea07051b3fefadcf6a9d1e0e7767459e70dd6554ad513a93a681319dda79d4b187bfd49593587696e41a1733cb9be441dc7593883c66311cb4c6c1cb447290925620ef8d11311e1df376cc5592cb4ca7a34cf34a24e1b6ab951cd2d0061a0d02803189ab3b43624e6d1f8e49be51a39b4efb0882f2a238b9bc0fcca691593e748528dae71a7a49a17bde1c284d173bf3fa9c325d278625c8c121bb1cfee68d1467b122fc82927bb279edfef553c57289e9cb699af1631c71a1edb1e2407a9f25ca2d9c1d7a98fc315aba9a0e136ec914177f742b1fb6245c9b323eaf5b1540853bb25be65f6d1000272f5cbd69894f2071642d83845c79683f84c5b0a547850d9687aa1d2985565d9844aae26e72394f98c0e7165af1af3024370be16a2d796d1e0669e4a3e56ac9f922b7869c5124e29fb34b9421a932006ea1d1897092414419690e0123372aa94f5e55636824490cab24b91f56ef5aee1d5a45b9b549f80e2ebde035926eedc8247b8797553e31d479e1a28362942cbbf331bc24d9792a5e7f9e3e37703a3cd5dfb17a984c881eba202c387ede552fd06d35c0efb573270e663c3e919d65393ad6c2e36277459527a1fb4254df6470eb862613f37e344ad6db4951c43d389bfab5f9a8706ccaee5327eca0b77a77ee83c99b0b6ccd03d4b4edd10578bcd643848fbe5f2e55266c72d98db3fb6587ec375e73f5ee69cf1a64827c53d1ff2bb9ffebc0da25547f1ca823ddad0c5bf18d47214fa0c09dcef709da1713a68d2e5916c35fb5409e293cf12286c62ce4d784b3897ae4d58d0348c3d46bd2e238a31ca2520cfc502cf05ed38ed21433cfac59a0172070273bd6e9bf6e088caabb63b3461fce651b75be6f0b5265b6f258c4f0a5956049f372c59233a61c1d358e0b9b38be317fd1e28be3e22455f7d1129904eddf1937cd76b4d412038d201f751aeff4c97e25928c2f225648cfae35f7ae835e0d4df2043243c7ee7a6801bbb121255646f24f658da0dae199ee427fdbeb993f2a0bfbfc236f98250c054c134ff9506fa556c84eb5550464ebf92116732244d032497b71ef8d082d0dfeda2912a182452480315a864141aee3d4f4cb6064e507d47717c877338ec13c88e513c9ef1d40285bc4cf4c07683fa748fa69e22719b182472170799231de9480fb959a16ab759663b0c427e5fc5305717966da5d38df8f2ffae6647cd52b553f43fadca0caf1b3d4dc85544ea2920ec5ffc864cf474765fac528e9ffef07e183ffe37614c71163ba05346dd74f4dc2f87a3cbb11c72732046e5f9a710f6c13ae039d30d34cb15e9e694b22958321bd7ff0ae9f5aa0f7ffcc60cbfd79df7201c9e6667cf98a8fa672f9cd4d157b89c4358a462675d15f13a79d46b907c8f6842683bb832e164d5ae49de06c4818140179e250f930afa44433b7adf316b28519ddbcc37d384a2e28a311c72dc8b9ddf0299e032a16f0cddd58739064ba8bc139cbda82515a0a4922662b8635b520c3e0134bc0afb4432844ded620b77c77bbd8bf85ffc413eec123dce879d4ca16c6442a688aafcfd9ac5490716007287a55a7a07c04ff47c83d522b06bcbd50a17545809469db6d4268cdae9001bd399fa656cf23a9b506eb6b378c21ebafd6837c0291ae6114255819c5545dd3d8728c7abb45146b44f6a6d241dc20f3bf9e8cce64fd99225a3a0ebef4dc5ea690a9c21e64170829dd8e39a2fa76ee1b882fffd9265131386545b816ca52e2348dc554e7be90d859cf1740595d0a1a6db6a415b69d4b6dbab3c7e6b16b501ec180db0e492007d8c67c11941a6050e2d9d6c6ed0423690b7fb4e06fd2acfea60934ea506e735f4d15597edb0c324a788a7b8ca9ed0cda56e89371453008a5a44341e9ad80852b49f23f92cdf49e512fa6d182181e09612ba9cc3ff7095932433309ec9b19d8941cd202b3de038ee65efc72ad3e7d93a13d50af509a2c9d266078243b2462045824c773fbbd2cc90b62035c4449b653019cdc33a0b43bd3d0adf1b986738091d76b5c04b0ffedd4c7c88168747a29e6e891b0b406ffaf62a7053a6f1f43baf8d469b73c81c045a0e116a7fad1418575b3ab9f3970ac5c7526f0c4ce9bfff4233099998f8e2068767765df30999d16563e2924fa30fa4407dac1fbecdd7c253aeb33664d686e74d74414ca0e7d1286cb27f6d3433fdddcf0f3f8deca41e5300eb03c0a0a4815fbc86b7c6551bd5fb712da25fcddc6e2c87e185254fccdced7c5a1e97196035bf1ad16823e153118c11881d403f1b1a9c8b6f79ba27be2c554c470dd44505fa4252640d6c49e0fdb48d4bc74aebe0f0f849757ba26e8d9811d58df04b8cd011a2937a6bc74eca74934cd8ad319b446c3d511a00f07a8e510224556ce4a729d7bea36b524e02881c3a13878e0358a65e27fc76fcc96e4d7156ca51ca0d6a34f76c304b7650a2d03fe7352e926dea8ac6849341dc30d9e22cdab73d7ea2e3fd8d86d27ec98bd2f17115581e48dd5b95941914d2adf0c9f569300860b2547c11508f9c00cf693bcd876620443318ad4861520698e0077c00347827a0d87d3ffc819fbd795e5e99e64f9307c47fc987ffd125697e46ccae6fab27966299f8d2d043b20eddbb4dae851ec2fd9340373d7ba27751b3dea30bb5ba5d539c6f9542d9c001d0a8cc17fc821076aff95daaf5e50652159bd64d2e27b82c416ebde68066fccaacb9eadb73eb6a7ae876675d6053502c8c6f367ecc5dd5e5bbbfa5e8fc989ba0f02bc9fdf73b42f7ee95c77fc25d4ffc2eefcc43c08ece57d92bbe4eff7dc5662d02a0b0f64d754aa17a29684df5d9cb6172727405d17e9ad4270d27c743336bcb128d0bc5833a3940a03af6361fd90003f879b8a116b907e9670480dc53b8733d531e6a3ede90f84c7e870a96a8c6d7765957d7d93e034c44dfa2ab0e5ef2a44ce1dfdd3bd9e4ecb501c2fc90ace343f74579a35c4359a456520b550963cf98961622d2cf1c9ff15f7506319a1f049e760ba54f32316de0693ccbb64f34175700eba3348a76893b35c8d7a0cc47fd4e4403fac5fd3b21a9de92300e328af37984e555b19ab2fba8d760f00fcd4ee20894c83396bbe953c0accb858119febc1e6c5bc4c792bf465acbf101c66f562903e2d5a57dc97133aca486cb18b98793885a3a182263d06a4e4b25a189504fe85442e5ad055e1beabc0805bcac88182d953d8dc73e7f17fea083801215c067d9200d902941100e6d5196639705a417c07fa7e008a2949967dab2905b6b5a40f79feaf151a71097b1211b9531daffcd491841d225b160dd1f88a5c3cd104ae5a721e290a9d11d73cfa64547600f43e330dc704db1ecd85ecfd3ad2446727ef6cd30fc2426e31aad437294d1ceebc6eef23a6d8b166a8b4e53a706bb8e7c22a995820722c07db0b9332f5add097b1c6acaa3e5f08ef66955578a2614af9b1a6e210e898005b359d29a8f8ffd0536781b6977abe3ac233831f3ddc041d35aece910826e166d5c630e05354bf06e6a55b6d5633535cbc34108bc268f7c998c0ce00ef13967e83db0128e6c761669d7db6a8280a5ccb127d209368e0d519007745bc960ec69f12244d34b6f704d298c9d61b9a63f166254dafa6c8cbcc19689d29eaa6796efe586da76ccebbf8943b3fdb1be5ad8f3f66e633644d74df975eec988bddd0b5923d92577d3b4413754eb8d2c37782e1e0ffcccb60d18965c7b20a12cf267ed987b52bb784ff8225026c3ecbf237709049fe75c594b7035cc8c777022066fc49202be6b41b290f8c9fb5eeacc279ada69a39d8744a913e48df247a30465419ce93ff0157c445f36709c830e051dc5d1203ca94708d2cf9d53800a3f5b702918bbaabde830ae12ff4be8eadf35620a7f76a2851df651e383e72d0e0d810c7440e07e2213be213238445ea4b000a37720c3bff34118960fa356acd46a3d03d55feaad67f03484b8d4e2976e520a277003db995968c570e1395afb1e45e19bac298309b9d74bdc4138947eaad841fa6212876a10366cab6e54baa0f81f369fc4d50a1e2fed98c445190c758dea1939c0ad5753e24aa8571cd89d8bb94480f4c924c9a22a0329d3d49e3328c93bd538e51bcba07ed695825ee65185763abd46caaa9eee674399575bc9d5ffa7cd1bf3bca48383814d01b4827a0ce2d0223af233da4b541961b1e2843d6efdef397e0017e04802621da69be6df1fda0a9f881ba03d2e74e6be171d376c4006993319eb35cecc041361469107c4770f7ead6b6037410a139659eec4a1a9e06e1bf8106d99a64a50352a2b108c2b3534612c586102f29502195d79c638a502e86523cdccb2dad1bd3d1670938c4382a60f80a54c812caba7a7075830064c40d87ac240030615d78fb718f199969fe67769230c2a352d1c6dcd892d4824261a675f4a294d0f681996fd70c4f1d5c405bbee1b04b093aaa475500f07ac7b594e90ae0491d5278850c1f575a118dd61c31239c7728e9eaa1e6dd53714f5b6baf1582a11c4551c2c5085b10ff0eddd916dfc9faef7a02e865053aa7a58d762a6feaa10044e55263fb43a019bc2c1d3541adf057a0e6831d551809f606b91fc3e0f7fb19d79a531d5f790aeee5ce8063d921337532c35c39d5fbb0d9dd6b0335b4ce5bdaff8c67e509ecbe378a7264e4d1823920e9c245131fc9db579bd37983c89ea484e61e1db3be66596fbad42ce374faa1aa36b9ec4b2fc796d57b069f29af8a25886b08283a04ac88055de3cbc2244590f45828adef28a602cd582445d64e8c8e85c20b5a4345aaf4b994f5af7e380741114ec6e231fe9393fa9ee82921f532e57b265a948b21a2b7b78a7ac3630059de1e756d4585e6b18ab867aa79466a12304e09d4e4857277d045cfac027c1edc38f052523afccad8fd754c236e958235a5900bbd75872489196884439598f5bfd32fc492f4a4e4108fc446268facc86e37d2cdad5984c95031ea9c954a6235a042ebd930313f60b2fa6e922e66077f9ebc091b6e13de0417dcc2ca4f78e6e3837c99aa176bd84d11f33c0e7ccb6f4555a0c0d197d421a0aada9af22c5ad145b178332088ad0086dafd202566638e0dbb463e87426ae6910b44fca3c80d16c82eb19d2ace825aa0b8029ab5892e505c984f26fcb247eb2b4789e7c14299e5864d484c86100b60bbd190f502f0a0f2067cad587f4409b8a62a510e14181e211a43ccf2df1d0f940a6a2fd665eaa632cda738528932ce4585f58d533b589b8d2cbea4793dd76305b10ba30260259d3c5143878adec6e69155c33f146c97a6d807e324b1a3a321a214439dec8ccda4d2863a4d1498bee6acbf8216bd93fea0a4234c34929db7c175943bee189299d1f71e80a4068d688d473b712bde24c0c7c9cfc96a53fb4bd4d323081e15260a39dfee618e4d992f4b7dbec36f89fd6bfe26a629cbb52617dc5651953b7acb8d733694fbe2d5abfbb950175a7468518bade434bc0dbd658f7ec732888acf250dd46f2c1a000063ee6ab9b7a12b4db9f5cfc6213387d6094a95c197c6447e72148b11532113aa2b6509713a7411f1ed22ddf1a0d73e5252b528143a566eab915199d3080f6c1667a3b3da1875f8ad85167d5f7fb82cca5272923dbc1c23c08dc0e81c3bad208528cbfe4bab47c2bb71f2e173f7ebc74b70757a2730ca1607919986b3cbaca363161d58a26acc808149d26cbc4ec30c3471e2a85948509a8328af73585b3fbc7949a0439925932cd6246165058cdc0634eec5e0ca843e260b5213260189bf355c8b526f134639ad3015446c348aaa1de02f1f3dd6235d26fa4059a890a8f8687a79aab76ccfa819a9253af65f0f6fce0e0ba3136e38b6cae161b426d6df7511f22b1935034d531e6aa665a1950e7a3624097e8230ba3015d0ceae184971f7721707f2eca26692430d8b914901d028e406e70650057c95e157bdbb29d9d53f8f97a1926869d6ec342b2203013bd9ff7ade03eb8c747dfc9fb8321c67060d8b5e49f2679b09475765baf76f02539ac9f6d1dd568e953050f5c83354db50002d32d7355e3480732006fca3780fb49a5fd372392e060a61fc05f310012042dbfdee84f2e880b45a5aba4ecbec58e2b6c62561acfbb85f65f8024b8c4112010e2f3c9904ef60d9586011a2368c8d4294dd1ed8a01aa6079df709eea20f6e4cd3cfc2d9689174dca02519c10f9380c1945899d38ab4624ccac7d886d48c810a6ec727e25e03a3716300e9255e9bea89dffd1e23f0fc7c33d527a4668fa18afce7e91b544fdc2a3621394d3d2977b65f81a415fa5a5c23b0d12ad1c20b655c684fa4b5c88d6983b41b784bf2d9df053935346510a0d0ac451a8f3806fdf9ac07121da93a4ebb62b0131584a5b193df15f422004f038068071cd4a30a63a8723df080916658c7463b2eb78601aa062b3c10ac4a8b35fc53b3e2fe06a493d747aeb7e187296425cfce29a5ff307d0edcd0cb50d7302273248d71ec4e672a4b557432f270cae99a72add480a501245c0096f9bf39508d1eb09482aed9f46211a2aa0892876c3d00b788201e4441b582f0c888d1ac7c2b79f8ab6dfb9ba4e49758c135d2a45c49923e5c21a52412b900a900b000e8b9cf9db5dfa4a87abe9a6376342fa63d01a1812f6247a4d20af0ea4f09225304326f0718593eb2e1ea9a56eaff0000cc4b2320ac4ffd11a9d49a4e283767929365a6bb649b6268707858d315f349a5d67442b904dfd379ef8e71b5d49a4e2897a0e0dba26eb7a613ca25283010c5cdea91e5ad48f92d8517f815b9974bbe5c40d2a863bc813972bb7d1ca5242830384048504899b4b7fb9d5b60708090a0905ac0270c75b9fb77eb655d5dadaea753228d2c99e0c3b2221f6066e0653519324df4dad8e699b69927bae1dda7a5c0896e78f7a97aa21bde7daa0280d00def3e5539e886779faa9c804fe61bde7daa723adbccbcfb54e574342bfb41eee56ea3b8bcfb54e5743ce3e8813fc2f4bca6e6b321c76c8fedeb6f4bf0ecbc1ae5a42aa7e3593fa04eab6fa7d334ed9a77690a6a2f763b7befbdf79bef32ec3bd55a733a9ef5031208759dde63efbde73ef69187c6ac7ff7e78673ce39c77b73a228bad1332b96bb2c343a9dd8018bde9df781978fed3c9b223e103a897c0512e826d3e7eb2f60027d3e7ae3a8fff7eebc0fbc6c9befcc6d8c13319e0e4b3264c1781f780931e2a8c30fbc841871cceccbcbbdef277c5163597755eec051b550f825c48863862cbd8f7b9dd7fdde00e2fd6dfd6d4c06a1d914cb8e6426950f329f44049ad67db0fd0f7d27d569fb03a71a47ebc2326de36648ca90254080c63c31ec2b927897d6be7600b63599b6a9aa288a5e3dfe185abb32b46ddbb6cc6d9ab669969a614dc3acabc22696c55debb56297c6af4ccd42ada66199df7c49b1375e8adcc6b5aad256387c7968647cdbb89c33c75d39733c73d946866158d661c1568968516418966118a6612ca2adaa5b18638e4dd6aa5754d53aa131b62c0b4b642a261627baf2c011a98323bb50258db98ea117e266ae5d92fcc21ff9f7f6d55d0a8765dac6658bde76de63a7eb52cbc9f62a470f87ccb05d97cab90bd7d0f3d6358472bc43a5ae76c64ea15fe183788c0b629c5545dfd6126e84899b659ac14e64089d82bdba2ac38d4033095c3e64ae485e69074d12f74a1a7182f0344c086118e21ed75c7949d033b5100ea32b08bccd7520f6020ff78a3b3edbbb82b8bde7f93bf860e52ff4ff502ffe18b060e25a1e9ee5f187dc25ba72c2bb2b4c9f1ca48be3d9b2c9bf2e2d6f59d148daee85c6852e15054412fe57c663c699a7f4a764ca31062d51f9dddfbf954a2be03b421fa6a58bb43bb10bc7aa171b092ea6e140481bc71390b88e49e63c1942d0291757cb13fbfc33e9cdbcd7acb2c25e7c5b9321ef1693648a4c3865081f45bae5915e10266611064478605deda5f7c62e0f7da7203ec7c12e63886ac1d892c1c32410f0851ef8284b683973daeded330e3de073fb6c2808d763942a2e799bb5f5762bbc22c365ec81bfeab554afa382ef280d4f1ad4ed207d7d7581031c5f09a9cd481314a825a934690b56a21a50c009efa01b0cef2415b32fe2ba502288cc3cf0dcf6bacae8a11a577385c48615f024fb9f9f7a07dd7d02d711de0a2c837362e9b0b220240d7a039ed6860eace9174b3081b08dc7454ded0611a9625688376f2644b2ff294814d60e9a6a474a1fbb1b8f31e4e5cf8a85dcf3e678524fd3439019d4bfd55ccd3bd43cd9d9c6b8b9063ba53bc330105508c45e5993b972a92650dcdd83ba9acc95a2bb68b8e04f524985205340d8e5a317f47c3f81887b1f8b8c29c89db1222cc80a32a67b0bfb48f8cc258f4070c7bbaf1777a5023d9bc533cc5584ba143d7015386531f5797b03ad47d191660377d6ea8eccc9495eac5eae9f37ab3633d0a15637c9e72f74dcf19580264dbd6c9d3f3371b1726919f15755c7b36b3ca6f3575e99c3ef0cec3e5fc44af963bc9e6b1d8bc6f54af17e68b3811fc31310b2ddd00349c8f091ea2b7b08eff653d5c6759665a463ee2272720c7ff19c60d7c0618862e86d5f67da7356bc804e5d97790cfad67f8555ce484c619341ea8155045ed9f7a77c473313ce958fadddc7abfe0c75f0a2f2b1a4c1a32046e44c74eb8aaa225cd72fb9947d63f3783f7b8a9a48250fe1c97f7bfa90edb61f8e34cc7a955e3ee3ffa1f9f8be6b2ac66e1d2d73e3e4ac4fbac8d69dabc489bcabe764e4c998af57ad8af0858e1c7215121c651dea33a0b0e30f894b20fb64592ebfb494762db21991b454974333f7abe68063f7d32e5df1d517b7a2326c30f2c4a0168246099c1a7002c15c106f62e9e6aea2bd9d44fb100992730f692d2ef60abd701ef2313c3f854e424cdfa046b6061ce8516c83fc83ae4c3264897aedb5a72736dd24234ba82dee43ecddf6c6420d580102d2f76ddf28f785c4d7158ee3bbac42186ad84e5e9eb5d39c8291d7984d0b46d486ed26d63c1b97c2c7ce88f8eae77770583e505718378bfc3f590c97c5115909901aae006f4e6e1a88d1274944b136fa29a28d07e6c1c6008c9b58c89f7019b5c867bdb2b408fc7ba1f00c43c6d5823e605c6cab1db359ca324c026a1c538059c218443fee21ba862c944f2e228b11bb55da69c5c87f179cc73df51fe7b91de25c874b11a45bbcce8b41e0e1064c9d3e1760b6b5fb7310e29520dc4e35dca1886c532f5023a203ea89c6016fdb6c122ab381864cf622d57199a6dee71692c8c23471ca3db607fca0ca9397fb526f8e006941c3f472c8c3cf3f00b74525037654948cde432af402a3f61f7b3c8cda86386982532d3a051ae2445bd660bf3917d1db84949c9e28c13e44a12656702cb1f50b358b267f0bca0199b1245a29c03710d004dd4b5099f25e14986bd4daeb4f2d0bf434cda9b1704e537a487339d345e73e6d428d862d1236a1a592bad9b59ef92c816422fe9ed86ce7237feaaeafc3f230d38a37fe169568b74ac7fa0744c1bee169cd997f0b5ab45ba463fe0ba030ff3cc1641b9d287613f788499bba2d49ef1f01e9eddf822651abd39601acdb38a99f9cf549874f7833b0c39c94b7649c079e51ae910c78b13bea536df5d85281870bbad9ab16f5b74c8278dff7415e215fa5cbc3f58965f20908478c93a34dcfc0a23ed6f0bc04cbe2f1ac36b3258ffad4f8d7c122c9257e106e307b8844d06a899ca71007c21f469b5677b7b66c1546a264e9824145820b77c0499b0fa2925b85a02d045258ce43abcd71bc58853bff091e8582a66cde2b0f4517a1a083530056a1ae62cec5bd78b67816508cf16d43efed44a9634d86f150fdd572300f0508b6add6dc8c483331759f1468e42a4be5dfe7de3849f743b0439439522644a3d009dc2df21aba26f616b660a6f7c1662b1f3a39c53266648adc8cde1eeb0d34aeb784794d6555d471f44a0179dcf5878ee4cb1d15eee8b730f464c93edcf1a74e65ae107a8f938d0cc31e643159f8ed97363b8246ed45def0601a9c9b60b23d80a8cae3ab0bc22809788943b26976929e461f79c93d9f74556300ae56d2f7c44b6f45fc74b9a34db1878b0154b0f2ded48c5de7d3b2a890033d6f99b69494a920ab34b8fb386542a6651ad5a4ba8b4b0cde5678d7aa82cf5bd29c97c295c94757911e851ab8df53a49a7aa762aa086195ab8db3a20b3a1fee2b3af62bd08db609cec23eb08fc639b96d603f52617cb0f8f835fdb095e56ce89d85b1e2e75ce4fe34f331e1054dec9337d5a77a2043ef2052776fa99fcef54897a96607f7cec666d56a1d702bbc33ac27c4fcdc91a1d88f64655aa98dacd3cb26cfc4c6ef0b8cfc812665958a98ac7dd215a86af2aec25f3e449f80fb9545458eb401a976f83bc891f4f4515c98f023eec71ded3225ab28071f31d4ab1cf075b130589a95eb16c465f8c9103da3c3c2e68c24c48941c10d8a738d950bab83b4e0db4f61df76660a4b076a4f2c32da629f6e85dd5ad2f28db9c2019c1ebfa65a69434e2b82dad1ba56be067d36361657badf9ac741e851828b5298f274320df73bac5ac37a9b9eb4b0b58a1075dcfa97341a41b0f690790bca0b514656f88c2bf7709926194b55b768542fddc4560fe5deeff0b78916661d0445212bf7ba6894cd654c3c492c763251d4341cba020a6929475b50d851a503d992d9975c15a72d65ca7a836614c4604fc8dc269198827d3a1afd0f5149191faad21deb82ac760b19bedb3ae29e1501dcb3f4d3cd35d1c0c7f173f7e7eb18998d64a1f4f9b11b219bec2d37d9526e99a49449cab403460453040804f6e13033e6f255aba5da44302fa18b46fb3a61b3a6b1a669da5fd6a665ed62d776a8af8cf5c05af7522d6a1bd5a81526612de3a119b2ee46ed6ab0ba1bb87240632497ecf22fc1034450ac78687e54cdb6fbf0ba9bb56fa8892a0cc3b0d73491663a316726b091000572502df18615372ca26e5ce7722a23edef72ee18a080208410a2e0b4a9f16e3cc80998a90905b98f3b7084a706484a1c94bc49b9289500a457925f1ef123370927d3a34810c642eafde4194821454ff7d3700d2194b1a671e27b8e91edcc5067363f2aa55b968cef3146a7b32365fb5ad2ee7a7e5bb5d2b7faa9259d9f4a8610c6fb613b7df83320edf629fbbdf752957b7ae418ea6ee86dabef2ace19bb9a31de2d9ab8d833f0ebe8534a1965a781954a762518218a7dde8ca1c9528b1f92745bcdb12da7ee778cb6b8aa145a11a56ff783fffaad1738027afa5a63b5ec83555ab7ecf30fc2b6f439c9342243260eba1eb4dda4165605b56005d9ee3df9f7d6b73ed67f31945ad1a7ec6043ae20b4b918dacbbdb46c4b4a4a4a58b48dbedeae84e3eecd329c9b7516b8401503a9ba32b894e79831bea95f2befab3d7fb7dffba33dea7beffd65491dbde1b87bf9e6b2247a436f6811d4861e317b268fbfb7fbb74ff7f925afb59dd2d09a52edbe54ddddbfde99f3e8cd7befb2ef59fae3bdf7bad2b3dea33e1e34028bc022d007b3f7f6b524a6911e11c3698f22a84dbff75efdd7f5bd2a5fb77fd71666763afd63a44b7aa4f7efff7217f3573f86b2108c47c9fe6bf5613deb331f4fb43de6ed419f059c4824128944929abd1989446506475fc487ca11a4dabbdbbbdfbbd19874df428ceeba29e12c1828a112d6893a1397cea48b32f0e889eb7ed95a6befb5b5ea2435da787aedc2fb46f7c5decbbd7ffb624daf3ec13c1089ba46115da2b710f1018532b9dcfb7e9fbb264aea68111f2e29e171a63b59116e468bd89214cf0c2f866c1b912a9779e6f5d21eeeb9d3b79c5a6cc5b13dba878fe68aa787eb4e6fd6b549065319eea67b33fae61eee216d46aa0e341ee0b165a47b7989fb3384b1a0014add1fee48bbd1e198206ad51a39939bd12a05a1153b75c70ed2934495a471da48233da7914495a66924d1974823d148c491608ef63264f3b351378311b439c2413369355a47fa3b229d520f72b6992e0fdd364a847bb7db952ebdf7efbd2c33b856869ad11df76b2f6f31b44dedece3f6d9662a695b57da7e5e39721cd9b22d421ecc02ac513193bac94c2c32b81548b5b5e2b0f8b81bca8643b39a66794470e722950c813ad00aae9eb6fb77dbb2d34e1564a3c340d968de8ccbbad16fdb68e32e57c54e7123de895d84e8f4dad346a30c2762a7b795f434fa6f6ef1fca061d8c8546bcd4c3057945dad7b1ce16a551ca73b0d9be6e682f11a1083041239b07200052fbc1862882db68889a141124eb4000627b041117878e812a8e0820b1e78489284078f2aaa3062a4a6c6fa820a262c2548410a5a5c71c30bb6f84199409120bb09b2630402c472010c251abd5e32dd127b4d30a27ff950c43ec414a91169e4d6ddc4f10c6cf4e3eeae6945a636e79c3eeab66eadcbe4a3b93d1831c4ed1270c85a2bdf0fc9916fc4ef8be5ee94babbaca104f77b39ee5f4aebb29295650dbe9285fbc2908b037c28303fdf83eefeee919aac0dafbaf2416ae227d9adfc7b39eeff24a57c395d4e9982caf5c9292796315bfc60cb50cd2611218244187c295b76fcee199912cea4e79c1886223399d52c6b69abd91f6559a6f5b4a9ecbddf048722dc7392c99e52fbce34ec2493dd5f9addd9246527a5e7ac92b7315ae8ec77a6ef649490b8ad6ae7ea258a461db71849a392df36d2f61f3953498cdb3369e442371bb1cda2b8948b92da6c96653f73667c4446778a9dc1352ccf60a671e227f9751e11f8d9f5f169a9d12ce7651c4404489ea5cdb27ab2e182cacad544d98bb02ccb4459117949a9626b86ba1080ad58ae5eb02ff5604bdf7f29659a5bed3283d6f4db8f60b68f2d30948c7e23c5aebfa453fd35cb766c71829e944320029719d619d5a23366c4e7f485b62d761c26637b85584894bd9699dea75a97d9243e2151992bbfdcd584d0c395affb7df0c10765179d2b4f51d7c185e2a94f9fc17a5555315e9625fcfe69c89058c30ddd3498392854c7b44cc7f4cc8fe9c7fd72554a18d5c41323460c1b6448a6a89295929292a77205c5b4d65abf6bad5d4335140a85260c18b35e21952780ca05435d6bad1d5a793e9140484aa515d48ad5d13377870e1e2ea078344d8dcdfb70a17ea86bc8c64f8d900a7799988442a1cb5f5e5e433131984ccc0a92aecf3192c81829233bf9922614fa13e6c31177151750283acd96f51710d5513bf6583bfaad7629374e354c35984c6d8a3d241aa49e943a230549a9542a7d9d913223c3f41d17403162b4700428060e22d3b71003868502543a31e14a48a3cd4e2b433cadac55ad1dd347b40fa01d51c78eee1f3a884ec1d3b92f142d3db9dfe6d135b56b3aa6657aa679344d17d147f48f5a6328c42f74754ccbb0d8a0636411a8f8137f664e8d6783042b5dac5481876648116acf9f3273ce5945396517f356af8b3f1ff0f87344cbaeb59ca3dfcc95a34ea4a22212842a867a451583458468842a068b84a600d6eeb0d6c9d09fde8c7bcbb66329ee97ebeab6d6ca12f38e3ab1ebe1eebb9b3a0cccd0781a33701820fa950183d10fe3a9c43aacea7ee677f78f5df7f4695dbfc5e343fc2a2a2a2a2a924321291deb6ed83028f6973b3cd785f215540df990c129480056a181a8825a041510fca2fa815280401048fa95d3824010090c52519136e5cc2e9c9e6dcc18d837b70053bbaede482bd40a77f7822902418625ccac1c0135041fe8b44ce41e30f7b7f1302a47345bd3942609f037f44967bb60e39492826535b2a7fc344a2734784c1ef74ade45a3834860d00c13048aa3af31080c65fc95c3f4cc28af692928fda6ce6e17c5723032d1050242299dbc67f2b857421add40ad682f68bf925114fc799975964531b30df772ff70ac43abb12871a34efb3c1963c489bec34347560dc33836dd59466e6ebabb9105f4440b737cb04f7f539c22e7bfd7b235aa8acbc4037a3dafe7f53c9d07d4d7cba52f977ee5b87b2bfce91695a6dbff10a85e56c4e278847718877118c707ef3cb5f20a61574a29a514b97633eeb6609dd7f066e4e3f95ed28dad9833cc97ea5e8efb8f3376c728dd5431dbf88bd1142b60011d10c2c8b9dfcb712fed43c86f775a4ecfdd79c57cd627f6d875452c62b1bbacbfaef818e658e4c72247c6a2945fe217df46c9fe91b965cb1825f5f82e63f48e525a43f3596fad67ebdd0a59b1219d9452f935d697f42d7539e3d5296bfd57ea9d7292135aeba3d59694734eabb6b462a4fdded68c1f6794f2a38c32c6286394734a1b62bc38a3417ff3ac765e5c50270b48c945708df75c23dccf0355413c98014f36f34b7cf77b39ee3f9ae28d2821d3ae77ceea73cef900ff29ff9af1cdf8ef8ad3639492e78451b68c969c167ddaddd47a6bb29c5d5bf6b6d59bcaeff7b3d6e80fa8ea7c28dfa5d7892a593e443f7cfeb4e8746bba53a7ef346edb13b57777f7ff7dc1101e2430089f54ac58ad524208e19cb4214540c7d855dab0c33930bf24e343f7794fd08bea2da5d35a3964b652da988527f8463ff9fdeebd8fbdd67dd1d0a4169d34f2a0ad79d62fa56c7963c8afb6ac655956b439b7d6ead137ad776bc2eab557266b557fd9bbe38e8c717f11adf543180d34d040030d34689dd5182ba535d21c76e8d0df5ad6173bc21392978c43a69ce927ae8d3bfd7282e16d709d89430a3fd6689297f3bf5c8c95f6eb38003505634eec41ecc9f8aa024f0a96b8d7b36c6b8cf472f452f4967d4b7b8b7e943544df935b87d24ead6aaf10f69e286af16dcc6e6cec798d2f2815a22c4edcebe554be2352b5f663ac56b55708bb59ad6f89f874b45791d881824647eb9bead888db5d75ddcccddccdfcb099ab8ab9621821cbac1a80bd53d47723d5af810fc04402c0181f2346013a7443a1162a7ff19e0d10a69443034f802f7c052c3fe6ffcc2783967b3f459ebce730d230c3ec5a5cae756fb9d162dd2bdbed03ff434961bd5358709a25071d82ca2fef194bd1618b8b4c77cb7db6f9c53c1aa09a1e30f15fcd10affba102981f9ce1a75d9efbbd1cf7f3f17377aaf8d948cca6dd1ee04e1f61242e999878adcfa295535bb571dcf5a5397f96e675a14c941287620203068a090c13ae542a75a5929b6836cb361413933f4131e17062628239e12226272635d32696a36e5c904f8ef94525dd4c095d980db3646a1abbffd47c4ee997cf8b9e3cc7656f52b3129771cf954e32c03d786d39a2e7b87b453378747cd4f6771f9feee922969794bcc9ed9daece73fef5797f5ef7e1c307f40b6576c15c2828f32ac989c2fd2c5d17a52fe23e01f5af1c300733d54cd789887bbefc4b7f4b26ee4d4e4c389898604caee64cb8e77144b4c12020c7885a91c8141512267c7ea062a6471031b041829c2308c143065664016699a6653259408de0c61ed7c5a92b34dab9d79583440ac32aa01f66e8b241c7fca13a91c54c4c8f16481b520aeb0e6cc28669c3537bc15ddba1fcc0d054bbfb5931589010949c007a5cc33c93838eeb06bf97e3ae7f6b7addfccc22826bb04ec6ba69e22615ea64628c132c786ee3892b636d797917f7183d0104256a6ab003236ab45002134cb8a2892580808a1ba7aadd4028721ad63a4465dbc38a1c1c1844c813361b9b1f37428e3019929324f68d1b70f03c40646a685827807f1d00d2e8e12f877bb80c24d586112d20582288123c4ce8428a2a58bea0d6e2da038d333c53cf52e1c11be775278d0475090838c62a744b9211989a3a2fe519cf8e32465bfd74152d9f262c24870421892b904c5104082c496e8e00859f1f53482184c50a34b0811378544aa022e34212151a96a01ff800094d78a2891b54c1d24512252062084650410d1037984123040b59240109179610467a324308859010c29762c68a5fd0e6baa0d05fba941f8f585202dda905cf902c20290a1ea4e8902b3c88a6890c05198f38b939a2c0cb4dc0082ca2b8020e5ef0831fc030c4175ab800055e2c61c70aa205d3c774974d3c2a46a04408be19dfeb2641e184548d02043e7366a10504a2081a45507725c1c209aa296e18a065bf40287fcc082384d20617ef4d41c60f7876d083f8240ffe677e5d20a1478fa0a023478000e98ef154e70e1da0e5de7b0f9e44c161565c0ab977edb0830e2708a4c30ad96107597a949aa84907f74012960c5bdc0f481893430674c0199500e4f0f1044d3b362083ed60732e470103fd421397e33e093b3b70099d191e35adf3e306c7beef9ac30e1d3ab48cd43b5ad2ea7ecc3acd712d45fc69fa393e7333f3f07c9e4f474767872b0c786c88b068c196c5e7dd783c31d0e16981112041800401326408906e1c1b17c020688baa0809d8083e4a60f12a20cc004708cca20622a88cf0108410192401062092c00211441421067286107702c0060a363ab850610540383c701d61011338200d010e0f88ae8003b60ad8080378e033458f0e2ef2bc2307d83133333f03eead56e7be547c191f6618c7947fc5c8038e0a070364b450dc073800a8055e1d3a3004621eef55ef7e2f4b1c48209641128904925dc8a0c9d226c688c54a8ff7f37cde16efc7c5c505002d007069ebcf959497746a315d71d94630665c125fa43b9a21ea2a785f76d9af8175a1da565e56befcaa630a88d0244426c5a17a90b37e594e5d4c42fadc297577db031122445e2841df183bba6fa77b39eeff747a6eefb66dddef4913aa534220fcc9820ff79bb2e8e4382c4efcd8679c1d681bdf3b020a8aa784ead7af17c684ae8cfea833e68c96d027894423fa99f677d344224de472d2b41b0a695af6a1ecb1f719bf3919c7c5edd6a258a4b72c13a97ba9d4e4e272678cf1a515bd59c2996ad08f1795f1ce8eca15da85eb826803c690938d2455fa06b154d7ac1dbeff92f938142396aa4e83358b056071a5d5daaed7351a4587a6ab83e18bd05f38f5c5d472728b5adae9c4441dbeeeeeeeced8ca60e35921362ad8b6a3d16e28729a46375e63118e46f89939f28df77f3ac9efee96302bf1081b225882704d52e7fa4f8fddeeb17e8cb1c67812a38d2f63b4b1e77b96f52eadfe167af7feb09b734cbf5d8cac9c2031debc9eeca824ae9cf90a084000a395001412078482e15012c4300843414aed0394024b459d4905c4513c94c738860319080216300800000c200086182021ec040e7d2d00e0f7c3d46bc4d4235a61a315f052cc68b44480387cf75da9afd18b155bf461455f1847435fb55a4ed9aedde3faa7823b32d49414e6d25a5695f8dddda339e40ed58bcf5982a12829f05e510ce5fa6c4d99814e31aba3add24e875df3fb90108db57c921a573241fb72868da4496c7e8da34ac9a3b5d74102dea04c03098fee069c841af00d42725d7748b21074d9cf1d72974f36abe3743bd205ac979929d87114d4d25231572f03c5f48a25f887224c62b2bbcd3a5cfbbae8c294a8c1276feba866e4d0b67ac897afd136c4b32267dfe9d87037867bcb5f41333be6dea8634db2a94104dad44c66df0fac7755d520ad28ac87a7c65fde55f15865d8aee181415638a0ee63552894268e598582322a77551ed22042b4996fe2f207052e8d63d7fc186df73dfc2066fb68625a5171bfa8157099650563bba6592e8ad9103bf2cd2a7e192ab0103706d1271dd78cde0477b5827dcc9d600925dd65cca39c19e06331c65e9b5ce6742d5384a3bcad41bb8a769370c3916d17ff0753b71fe68b83b1064c86f02574fafbfe7234b86d7beb5f1a573ad9e368b93b033dc10ad0357fed1c87ff257d3d153b6b836b8130fd472d70b27bfe23e896b8778ae37a6564d851922416496309a428dbcaf040c88d56cb05e34d598faccd33a5b2d1e71869fc5889a2851d25b8a810e23fad19790967257738a9a2de63b39262aac189fc13364097adc38293caa4541205a62c1a49e87a43b6068230af4292633c931fe068feacf1fe291bf9f81d2481d05561c059a6fc668e5c08d52b777ab3bfb94e5e52a145a35d8a8c82802c1adbc6ae8caaa4f1720c4930f1339a2daca6d6c7c409664dfe3e485ee63046bb35b22373ab32e95338aba044ef43cdf910e840cd32b024144c4befa1a86958944fac8a323664504e798d4f920b9a5be0e67aa18ccdbac9247575d0a33fa1a5e16119afe6f5b93fe1513b0f2e7f40409d1b98c8e73a22f6e0c98d25d040f4e386c03b5b18b4d200ec0837a696c82d62a1b558f62165ba8a4a1a7fe96fe9bfd4f73293bd72d33b48eb1444c3829bac6597dedebedd4143b45d69a2419b81090d0203427f2876882c4c88f3144a0c8eef0f3ce14e43614825cc018d05a6b4814bed0656ce1afa59ff173449279f65bfbdb39768983b14fae01bd6990983331b1773b3ba8290d60f4806fecda127956a39ed94892b8124f5071590f9fa39f7260e600a3823a0774224eeda6c333260610a2011335c6f269b8d59d7bbbb534d38988355f051827269a95d8a23b5409136deb7f45ffab7fcae41bacacd0d6e13266df4f4260b913e859b021a63565089460b49b9d7d7c73a6ee7705cd2a421d215c6dad015a1ab15be49e8348a82e016cb96d670feb870f941e4aab0aaf83e41fa989751313b6eee909c8853bf1744337024a8d009397f86ba764489d9500a5da87acf6ed1657bd1c4e5463e460e732fca0c52d18d263a3928ffcb3ad7d463cf5dc7857990683de935aac87e737d8f280be954829693bb418fec84e17bbfac3897b09510c6406ed6837318792137fb25ca82585a0f940e258030bd9c1b6e82467ddef3a1eb929810bda92c193f3b71e35e0c07620d799b4807a7c4b5a7588c6f6a1d5723389eae39112e3825ce1ad7ea6e069828cb389a0867019f2d2877a99842b75dc793c516c7da5d0f20e374757a9136645b024654330f4d0e51d90a5ad250d30a817e0eae2bfb5d6fbb159e59699e5a70c50bc96f941c27993f04c4812d69e5b5a396d2a104ad4c74709309f00c5d49b64b91792f9f53347bc45966c8e418bc8928ad364b2a1469c3a605de547d114fab83b89255b6873a70d447e96d9a2afc5e2741c660040ec3f3445c6a81325cdf914f8d70f95784b53711a5059479263efaeb45425ac9aac312e396723c22f25f304773c27065f7737234c351e29a7a2ff998d72592e611cc9bfb9d6df49c75440b5cd0222600a8b41c4fa25e6733980f1536932cc6590b5b589141d17d6bcd2ae6378faa8bd0a2ba771d614d005a94cbcc533d7729371185221ac7fddf2ed3483302a1b9cd589e9e3af0081322c5f59374c82c70d8c1b5745322d20844ff4e655ac471e7c2180d379d78877896551e33406adba5934bba5112592cfba978c75232e861e805c63e865e30b58f99a6f74b3d4cf5ca269990800abb0d576a023c07f3c5e460d9780938e3382ae0b51ff8a2d9c491ad3d41debe87c31cb745c3e0b59b41586649896f742f8256c85f725e49c8ebc09f6e6940c96be172d3b6c9611325d82faf1204bc463c87734385cec79dc08710612f6893d0b15e8ee24a284a332a9d386e68c88d84ec52661d5361efe3bfd53ce5337b6263fc5c1c1cb2dde6a45eca68a74bc7dce3b6ca9c4c963a998cc90051390be8ebada166482f0a345ecad601b7ad852c27247ef7cf591e6af441c0c09b2446f07924b2846050fab2b40d91b0e7ffc390074928aa0401a72b92a8b35e3c4c2a33359f62bd735b5e50ebe1f5ecc65b865cb49d0a171bc1b3dc989e1fbab14550e002384677e2d3b3d11dff510b7ed2de057f796b8a889663ccdac79d6440192b5a83f563ed91837d94a9c79803d936525ced78d2a7d31952b7f9012148100e8ecde2a52985e5583257cdd93421c1fad7c1d028db05b4e3b67a281596927baf2b9af474d68a4740a0cbe30ccd5956c38a17e83ee9d5108213b80f5e02e0230e60fa8f233c00d9d6065405b8aab17e1a83928b08e906b80fd93311272637c0be552424e2d22a2d429f11283cdce78a5cfc93450e6b14cdac23c5d5ecf9ee5faace898a3a2ba6145bfd04ddd74041cfb25a399a1d2809c926d9d3e4540e04d6de29ad074e299dc78e5ce2fb27ee59e557b72293322f0ba2b3aeaa1c4278fe14572d62c619065aaab45767013cc08570dcd32f9152a11f50d3f7bdcfb21a2fbc4fca20572f3c2414658fbed45024cca4ba329d20bc5a6c7770975e1b1993ffb0c37d8ba833c0f021ac9144317e43e5c7e88d18fcb5ff12656329a7957c74ac69a1c760410127d3bcf125e4d8c4fe086c9386e76cc596d76c978969df41dd9ed07ef4fa1d689bb0f2c95b057682535710b14c4c71bd035a8fa9418a5961fcc87ca3dc5a26fd08af6fe4ac73cc2fbb3efdf6a4f1f8b71d0ea202c91642f122e5dfff3a0c304c00f16a00ea8adac49d669dc79c8bf82d05c651787ce061958fb0017f3eefbf8daa86e1b8361786c8387886211f04673da8632e1380f20d386bb342ef52e4e7ddcd59afd11e7edd7bde4650c07bb0a37b161ef208ef81538b33e20872ba0cf90538c311a8226cd7c4e73e500f74a66672330c683c0bff1207d0e4897e0ee5f15cd7f7ff10d81572033ee937f2f5b3bc64df29657bf70423bac2f8ef0adf5c4589b347d908c2e90023dd909e2b645482a8f6f85012e7d0a81ceb848e2d5cc07ba8b1728672cf80a9dd19a48aaf135ba0d46a4525ee8f442d443fa961c8e83aa5d6d160e28e59579bbe15090ef109eb4ca32c21d0a86710954ba686518bce1d60646a5e2c800abd5e405d26f4278135a19f56ff98b4a5f80e24844836c097ebbb9993902c46384d12f26a822e74a14bb8972573e8b9bcb824850ee416912b20b3b61acd9681e73d262a00b771fe56dffbf79b1a2822e6b6b0a5727e83438b2601e436dc45c963019bcff54422531f0b5bd73e167ca0e1c7627ed88f85da73c391037f8772c74def4961240bfeb89d2e3e218b56134c1404178b1f64b350046c0a4768ffc94941d8c09f2c4d3e311ec62f4ad10a40857c3d3f563c9d8c8289922c4bbb800235fd2491ac4934b82af4caa90fa4b2aa0593b3e2ee915ab261829eba068a9dbe3476051e6f49028db566cd81dc269543c0155839ab8c3bd8bd6b18fa3ad0bda278cc93817a3ed5b183b4982028084a29a54ef0db9d54c069275d59839e44f5ef1c272d21d4c14279eb4be119aa5512711dd206cedc359a72cfa2172424918f092768a5f2c826f3f08dd686e044c92a2b3b902f03ebe66d0e9921b9672167b9fb04268b896e002fa3855e0592468f6340e883718d69dc7e75d1fdb7903c2c8ba702c5dd3a883f6bdd27eaf7be3a13209339bab28e51a398a7a9c41ae2250e524eff4f23c8cf29d6027c97980bb22527cdbabd53a9202f76b2393abb2486090350c6b6e4853f6efe03ad9e5e24bcc9369b0fccb6776645b44a1b3fd22a162d90675067c59c594186c73f94534fe85eb915fa3c3f0c09826d7982bd42ab28e2575609c4c5bd322d3bd1ff3047cb6d292f661e9959ce2c082a52601e7a88584d378e2f4e0818b08c51ae132bf397579975c21bc421d6b01a781e94d36ddd7d4e965f2560da272d8883667495a0ddd1dcbb59d78662981d487532f8c13bbf28335dd1787988bf7a4884190be1e6d803ca464bc8957e1b0de4f85d7f555442ce9e45518979f82018fa913c7420abc87485bd3c4069442d71d846b278b8a7d776ce5dfe8dc55bbe8c3e9a86307e5d238da9d59e50e64fce36ca44ef30f411d86959f003f501deb50b4e7b1b6bfa2ebeab886c9b2365457649fed9f74e808f8be720467249bdc716b8b0d6dedb2bc2570dcc931eddc62d1d2db459a2303a5a30da26b8aaae1a23cf7b3bdd56b7f0e505785e036cf0aabe3775ab1ba6622c3f867f43b058b7613112770dc7858f09e68954ac8c413bf8a9676169b2619de5edc0f1bc0836bb02a365f8e0cabbc15632ac492c68b62b028147f60047bc3619688f4de4a7bb2f365dfcf9c410a08d9339d674e01d502bb8bc7919163f2fbeaa40dcf64607ff5c97308c8db01100731c1fc3713ffbd6346bb6d8cfa6a76bbe1949b37cac6738bff76aeadd357c5d71a3d821f866f0383e482486b1031ed461250a6908764f20c2528dc61ac7fbac4d3c0a9c98fc383e5d23588e5ff91ac0ed77849d039f6bc0ca87a2134f68db6045ecd3440a581e422d1ad287a7bf0431d74541db483936858f73a2c26f275ff7af29bc0236f7fb52d4a31efc8ae6b1762ccd41e1618e402781386859c94b0e47ad9d0cc96aceb0ab730acd8a89ed75499160e8546c62bc8c5d09285188cc24b3bdb00757b6d532971673582ac664431fb126bc40b175691a8c7acb1d1594ca37e75fb1e742a7a2feb48dd0c78c9bce74d1fa27df72a10195bf22982815670b544c31a336ed641ef94eae6a120a96e190b9ceadb222ed2beae021589a2652082e6b969f3101f1c8ecc0d356e612b55bb9b29491ca636efc58df1db86c4045c918677d17ac78e5461ea1e6d33e08d6f2e259322c96890aa7a91eb9da396f1520789b7429ff70dba4af10e5b61f4230e63e3a92192f490835341cffb8e926db3e35fb435e61b2ed7e75a60ad207ca486c0d4bcdc851833d4587755b3459b17b3aac271e7fded49cd12530cfd9c084354be05aa5b2a9df05007f9583d33018a8c4dbf37b0f83351ad509b2762f934ab83bcef7af68b77a90d1b040593c4395b31159d2576b974861d06772af742125b190ea5bcda5a8bac2e0a0969c63a3521ad185e94dab4e7f11819b5f05e4b304bcdede5fe9712f71aed37150c26d0649cd9ecb4ae75fa78374be79221cb5c7d259ddb4618e796541b481673ed179b24024202ce53007d7284bad9bf2b8a55a0094f91c646d59021106b12cfa72d696f8575c4413dfee39c32d113269682a18868f5c34ed323f0bb9780138c17d666caf6fe0e0049346fe341d7021a07e3994e9a1e185d279d16833ca718b6044a4cda601cfc2606f46eb7db0198d9add9d6cd13d1c932b63c20b6134f3691a73c34302bc8bc54954b402bfe214ca0c68a216442192ca6a9ca50cd9ebdc31a9d9b616530278d00bc1a497b9de4db6725ad652e9672dc775ab5e41870a07ea56b97faee50f255f1ebe34dcdd197f1b6356ac6aac62b4680ccb17e4d18251776c0065b4f8ef4f11312c14eb0e0d06a0eb9d8d519f08796beca5c8c5a7d29f49b4bc9f7946b3ba5945618dc8cff75222cea6da5fc468491739ef16c21b1eda085a41ba30e19c351cafbc0e402c140ad5227419222bd6485421d67aee6b5936498d11b2669314087adb55dc7c39a133da9d2c11c899782b984146cc530b05c261f440dd5bfb94560b4155a8781b2352b16d3c399b9f38ad5384d4b6ab2ce76e69a981b1d4bad1b709deb9438922d9a64110609ea93d43dccce119d3a5325c0a2aa158d3b2910d111a931330e92de6f12755540a205200d0d14684ef409b9f9232a12098efdfbb002b3353aa64c872c57d95a73d89af215eb97f34ff7b4282615d3102e6770c9598161d46688b5179fc18871c403e0bbb69748b7455b306bb9607e3e570425b4a54d31245f45ce4cb77d0dafa1d7ddbd4d896b09a2fa3d1f89dc66c6ad053c90ba9417126e6a1968d54cd0a50ca17e34000cb818b6c0121fba81d254aeb7aedc03eb0ec4d8c7a004e09d23f889b33b2e7737cbe002e209523286583641f9f9e516ae50a241a2c71a42f469e5b177ad2f35b8feebc93499ddaf9854e44d082ee227cf8a04a257181fd244d12698213f5817aa1261e34888a52f146fb2d0db2940ff2ccfad3fcc4daa211a526616a9050540a4a296bbcecf7fc51de63447affe5e50876eaa251518a300e862a5f01332f7b0f8d962d3c549d826d72f86bcbf5892bc6013fa1c20a000f6b788aecacd17b8ccd7ef62fcd1f0c242d63357cdf4a85c29adcdfa775425dc1d942e47524aca022f390fa506a79a886f981791c6790d09bd2c0259321d59ca3dd969d6cc7f90ca281df6bf164b4d86e2dc20e104634e1f2046cbeb643437982442541101d2ea060402db602257d3c2ddf72a4c50da35ec6d16a29f0dcb7276387ca412e6b68c205bdbc7ddff63b64cf135e2be997ae9991ef2f3af864fff0e200ce1e045d6dbd1dacc0699020288be91b8a2edfa6d9608b3dbeb766ca6a59d0db55caee689b56507c48eca1339ae51e9d024f5cafa359c63020b53da8f76212aa7d2498db3e443c41d287e7924b7ebb447de68ac8e4b077878ae03aa12c06230b6c127cc0e000185f013a6faaf95b71a2b166e94fd0adc325a17aa7f9915c9fbdaf070402642da9dd68a5315225c5f3bdf375c212ee6305fe26c13eb7e3542b1719c490c8be178819038aca4dbec7ef20ac71fc725b8c1d6e754fbc137ff534a355a5e2a5f1ad9fc52f84c2a8ccbbfb19d9a69fdcd804e9cb36065e90502a9ac79c235edc2f2822ceb20df263631f3a00d4e23b1534a6314ccf03b364667f29c5fcf073c95f41e86923580dc075406b49918e44518343d57d6c00b40e727f323d875a9fa7dceb81a9f5a5c959f14adb983b73a9a5b3a14cde9ac54b8fe229265510c4c059dc2f9d6b98610517669b994e066ce59d5abaafa676be9b88d6404277837c8f02b1911b3c5d3de5f85c55fa7a4b11d1a9a28c9f2e7b81db5506619d104eb185a0ef249e92c7e3f8e40fdfdd18248062800664a320009ea21afe29683fcb0af0b4c3da34e54c7d27f88c974fe6c1d62bc9e2c8df55bd522bf89a678fcc168825505196b137c4a869f92bdd9edd5490bb593223d295343e8b5a3604d83e2ced657db9a8ef6b8450d20517fc502d64b344ae2d823fceb8c29cf6ce01770b7e8522bc3d808745cac3989a21c984a8e4c52f49ef5476ee36a5cad13841bd9f5c4963c5ccb9eb613e66e3e4c5b7128669e810dbc41e7deb40e7dd518d71d2f4cddcc9e9b8f61ee919f04ea4bf5e172b3bbdeb2e1619a6e80fda2e59118b022a74c5ad2ae4169a64ead660ab0a0969186b2e61a40a86f861edbbf90c99c01171d63ca93044a95bd13478540ad1fd5138c3ffd334fec31193f7849848a0c507db577baa19eb50d0ca55c503f5c907b98dfb9894859018687e9c8cb48de2b089fd06e54bf2582524ef71e1361734710d13e0d210788fe1adb78f2ac566357147bb0c37e26836da1d654c60b6aa948124af2795944a26dd97cac9b0f62ddf3a95d577f9a207e2d33b83cb68358977f853e915d1cfb3a47ebef38f62f738087ec01264c5e94374ed9c2eb279fc8b7ccad32e1bb76378018ade6fb989512d9e41a1257fa83cfd7113ceb251aa37da66dc20c171402738fdd0b0e826c510b2b1ee00dfc020b3aaa1a11a6bf8c0db0528b7df1b9a5aa79c948ea1ebe1594bb2137088cf60f4b2f1f8392e4c11310cb450f9c73d95bae8f18a62656fc6845cf170deb0a90511e74860a36f98ec583a85aae4f4409c077abe12640003a1a77b70ee3f94c694438dca478f4807a8d8a75ef9901a3b311e79dbea705ea8a8471f6f42f3bf03352a05bd17c59650a8a442c2522046023629055bb1183faca677956d14791908ebe89d46d1496059110e1e428407407c88a11df89342a6f2ee23ce34d2704c78658c7ac2234054eeacf292519f19654b813dee78b70e62aa80a673eb9681f72fb03e505854d8353b86d100c1355460f32d62c6781d7a02a5844cd33de3b1f28cf0e79f333ca89cc06690c514924a759588c995f0693ed09a0d211832748f5926941210b95b585887b83d3643c449cc010267e10529253a9cd98a8ebf70d31734e279f7a57280225937a31fb32877d678a756cd0b8104a1274b856937a090baf67e8e5f1c9946293a3486526246ced40dcd92917b9ce193de62bde8e4402675eb2583e101c61194094969b11f183a0dc074eaf9416e684da470f69ee813d3ff0ccc7bb5f40e67d66a2dd0a14529bf6d196166f9d386a913ecda1eaeac3e40b971a99f0dec7e2364ab9748fcef288a8d13717ea3ac77cedf9954602fa1ee64529aa3637723dd2caeda60a3f65ff70c6bc3480e3af3b1a5d420d74d9aa7ec9354811ab22190a0070ed0aada21122d2ad613d9a288b528888efe265c31d8198191f75ee2325fa544a27dce326f1ef804705f0376a31774b8eda1560b9dcf886123314e0eb2e17bcd28573c3ec628bc754033015c255e17b6683a1a5720a9770b4268e62973334be0a2b8086a9e67d2c3565d25c53deada336017adee9d41488180da2ca2e67bf6971b548db4a865501189ec825054435fc089dbd05fc1e7d89378eb14d1400496625b0cca12842620986dbb3b01101bad5beba8506f56ca4a30b9e36984204367e6ad5c8cfc515bbdc363faddee6e9c8ba88d4c6d1a70e1bdab7820aa807aa0d2bbd20043426d28dc81ed505431cba6106443474e645abb2b7b1d016921cba0f1a30800af23471991ae28c2b41d18051212a1313843f2a044afa03f36d29f07587eeec446d73b67d2d315849a1e114e1b8a506666d0b8143d56728f85a04ec4371befa36bf763b68c0d662ec5fb2591d02808e17dcb6de0ab55bb40d44c7b36083bb42ac6d92998ef27b38edd10ab8948a3adcb32a1c6928515c84747311ff72653541102fff4e1677d03be7177594707488579c56037fd6b250460ed15d877718d09a35f808af0215cd2187a175e8e791c00e0e71f2b4e4437dd3b68eee37600fea466dfc085c95ffed8ee4bb932ffe894e1a7c45cfef8081f76184a9cc8ab8f32225b387aa33371343b34a05a905f8d98e3f3566a6870593003d09dcdc10e0d9a018f298d737f334fc5d4d14bbf3e02c7f9f3f077dd90c7f9ff1fee74f688786fe5ecfb0d848cfb95d519e42bdbbe1217c5162f2d2a97cd998750364d8b2463a1c6cc90385577a4d3727155a936824da9855d68ac8d41313834e8277d2380aea9f9205b68bdef3e60989d006281096ca0ba86ee539d7d4dbed6b95a32fbb9e895657f7fc849d4c5218f073c165421c8e276402a89adb0393c88bf09998c489f791bba09d544eac714a05e604a95ec465771168a4967ff37c127282e4ab9964f9ae1b453ad86a5e314b83ecaeffb5ab72227a410ff2de4b726ee24687012a88950696c23142f671894767182e838760975d21442e706a65cc84080785fc58e6d29ea6d293b26a2ec5bde8aa4b406c70035700dec08df5bbc47075d810f5ba75a8ca13053bec87e32973c1b61a1f5758482430b1c1e881f1c0006aac6ab39b88c67c5a2255161127c5a509a50705762151326609a03b7a790ceda7c00871c16579ddfa06659f30e8bf3e13075491ae098defdaa0d74916587227e64f219b767e7dec4dc2d7f46c0679ff9c40b86dfb198849e526ad372c967e87f30d0194856ea09a52d91c6e691cf686a7175dad8f2aac4e1980b20be0f5e28611da1327dbb26eafdf4e48e8f7d5156814e1c0cf0a4b2f3e333a88acd9d18c4b821ad1e5d81cb49455f67c900a89c29d39250dc874b0efd739b0f79fed58091fa2cd630c6e35adc33429bad598b25fc6d1396d06dde5e2b7135339f2d03cef86728b8cfa87de8c998c6dba0bcbde3f4894178cfe73b9d726e40e09ea14199f3474403ca69d00e7f6c5c233691d1dd06524171919766e39d208fba780ec6cb825d98d7603f07a8d9a0f0d18930b967eeeebf9fe3dcfdf7739cdb7f7f8e7333f339156754a0f1913cf1af8c04483c9690f5e42e762b7f6c900ea8f02eaae760ef38cbca2deaee2d9fce302e0f4238d333345e1b8c083ae479590d1d23cfe1a46575eedeae2741979199ab262a85324db368fd4c0642a12a57ee9f3d27ede0ae689b68681ab62428b348721d09caf37dce283cd8dd3d8673ef5e6edfe79b8d787e351facebf0690de7812b8273e1fd012150f5745151e84e2c6b18400029c9ebc40446c5ee0d3d10979a5334da314361b8a64300c4c131750d647eaa74e6962fbd1064362df4fc328639740df4ae6db17b1c381306ca0e7853c963c5df1f686bdd1992526146302938a9a5026571a47bb4110012d7f5f679701051a38e5fdbded3e911bf646670e9c5b7f0790a51fe0249a1852fb7706946a1aaea07db85014806f631ccbe176071132461838308d9ff83ed8c42ee6fdc4a26b9faea02773fe2cb3cb57c9082ac6c4c97c3681a41523784ff936d56fd170500c1a5ae24bffee8fabaddae3fcc91577933c6bf3dca63594c41da78824f86fe1f44f7a80ed1de6771628b45a6b0511a062c85c81fdaa283796853572b49f3c552a088f57dc14fc5423ee597dcf7d6b26784012e2eac69df38d2c19a8268733fbca9cb7df9be5bacef807c913108d2fe5fbdaa8eac8123821627d84a84e1207995946f1199002a74864485d9838dede1232172b07e5945050107fd25a761859b251ca62d7387ea947e5a43b229c0501bc7ab753ee4b54b64f590746c94e87b576d81e8a608d40b603869892d43c2bc268b9d03641ad823cccba685baf988d260f82e3900ef05b14ca6b948d85d525f4e3ee8c8a1b7874714dce33bf466b8cda3e340146e62bb5c4374320fc7a68ca64482ae470b66754644906e6c4b0f200b472a0c6085badc7cb17ff6dc4232848bb2bd535d140b431a936dd90b0f4cfa0f10474c895faae2c682c06408d012e3ab814ea95a8eba6b4237e4a8969b4f87d9c21d37db3a52d2a9049cf195de152f7da4505f7ca794665eb8756d2d0eaf52cbf4da18b258a12a3da1dc78703be2890e752ba310b8feaa89aa6ac0a5866b0c2e9f5e67d885a2044ddd39e354087ac32af849e866980b69feec730fab48eea050afcccb27220d7377f47ca4cd52a599c6419f9404865ef34bab806510a9e06c2604a822f310b067c6ac8548f0b2e00a4cecbb973113948029ba1b2e4cd487886244639f233e940b3d3dff38a155231a0961a9fa7a3fadbd28d4ad5b5e92e16083b307f3d144da34e84f0d341b6b9d8e49073f62a61278e5cb02409a025add7ba6e0e923e191b96258377777c30ba5b48d0f857129048243493894efd18d287234768e61e59111ea15b83976af224a89c6d7bef236925c4fff8a69f26662697005cbf68b9bc6b7e4807c1d14ac89d983aa87cd25d69b3f50bc4a7f63430ab2fcb587e4157dc3630ffe76e4c33efc976a7977396bc6f7830b296fed9ebec9ac39c0105ca075b50c9273f32384cf88f72db98d57b48a7fd2b9adef6622ea117126002cc63696a511a56dbeb3d5513077e96b9c51ed4ece0745d4a1c514337818643ec2fc1173dd4afffec022a57b225b2fe02146c058b145c0c459501a2ad120fe2f3df4660f6913fb28c7671da5512fc9fa2d861012f542ecde5bc540b7050c3d812f5423993378ffb73bd55a9898b0df1caf91f384d5ad2fde263ed742e555ac83cffed5d26c0bfd7d502ab4187d9df5f84d552805c0935dd4e5d7ae296922895e5a8673151e7787af08bd6a3317b1726ef5d88d4dfe5a5adecf96d1dcb412af4b2017084ceb5b782b8a97f9b870bdc1542b5c95c67bd7fa174ed1207dd4d9c083c2241da40943073f3aed3f0afe1abc99d3cbf9186a47ac40b3f666a6a4b8bd2a7b828aba9a8fdd6181c837fd4d7e5dea0dbc1a8ce741f6cf127dee02bc5aca36c0af229a10d1f42ae670836013c1538bc494e8a9928f17c024ea92eaa0c3bda2da0c0030afa228dc314979c2206fd4da47b9d013d2c9430e064baf4544b162f3fe0cf07ca0c1ab14ba539ae278a6a705a10a896d9fbee9e9677ddc3c5a1b05a26ebd095637994ba5c7a706c348588f9ce9875e0bef302d3ed0ebc740e98ff0a43669a193d140282cb312eae2f7584e4060435dc4fa3eac71d67de5d0c10131e4e6631bb08adcd0310a2f2ed1ea4330205530eff14740656faa56ec5d791bfbeaa3813feb8028981a24dcfc9b2229095c45873b13e540b1d31cbcf22ef8c103c3f02c1420cf2cd9a45d89fd7b28b121bda36d7741809d01533e8f9bf3c58d0e783337c5b27898d45fb8a50a7745c13b284d712f9eea90ae68ed23ff135b94670bcdd56e4348a79b6ffc1e9083e46f3e923a4f0c8967faf58b5954619fcd900775f93ebf02db1b1e8a180e7cd76ab4cb8c80b0e0d87568b07b85e24f2fae84a0167d65c26861738d97e11591615aa0bd7f8fe1638d9e6e3f3c0cc7a191fa8e8442ef07e344dc38da0fae9c0270756203963492deaa4abb228489a24f7138bd0c3b7039211656c460587d5ca30274caf30ee2d506f9112b3c4219da238a3692a4dd6dd2f138a2160335d922cd174ef71d7401f2dacf0c52da95537894ca7758f35c26b8ef79a5ae1a2dc318a9fd9e0ef6f97222d161f9ea6bce3fac23d619bda3662b85c24a5267146136f4282c50106c6b884b74f9218adaa62274e9897894ed415def0ef1e5e72c605813081c925d4b94e5525bbfe3f0ab9457a41140b6dd0408e577301e5c2c706816f5ee4d7626d09d50ad5e63b7c5ea9767e1d222fb316e518b1935d93a2c64133927334eac3a42a2108c8cd05fb40cd6019b47422656116a428d22232a44bcf8c58e62c488b1ed5425b4f018635c135d60ad58be81207a977bb5357df27ec86c6dab6c5b24711e67536fa0ad5b6ee60f4ffc14a774acbf0360505a3b240e18f6c26105048b9a26a614cfb530dc612cfa80777aa448f24824bba486820679e1e8d40a54c85cc2aac0a6b60bcba0fa5e14ec2777328ee7a802be2e7ee60abf0dc0b3e341dcf439e728cee8aeb4871132d8f0a631b28df29e59f8e4cfd81208658fea3b063c02ffe9c69302d9146d2db5feeec800b626add84f7278aac93512c4b69a160802714c385e26800f82ea5b860c5bc63edd68e32414c0277730e888ba296ad5ddc67701334e5f6490a89fde6b8a052a697c4d9848a861a7d1c4a3986f273919e5c487ebc72ca26844f990712fe0df6e732db77cccc52704f0795710dc94adb240b362b824830fd235d9d67c2c21fd89a01e2a0feca3fa1281cc5802223697631cf6bf16c4af2fc79555ccc616b1867ad000e24f46fedb3adc4a869cbf70be6dce39f8be911617d993a64bfe12e9e33d977cbbd382b222d2b48206263da104e56b50c09048246790bd2c405acb3f28b218919e42c1f89e652be70c9ea0b2c024985faaf8aa23b41f6440f14d22f40698ae7e61d70fd0d007e0703c9a7b37725c9065843c083b34bfad0c18eae0053bee39811003019162d73a42559b23c11cf41ee5c40d1190d0c3c33444ff002e64cb3828a21918b73112b1b69e53bc947e6ce1aecb32f64dfbb5911a72cfcc7f77a8ae2c1a9746465cbb9db58e76ce1c868466196c039d66ea157744a1cb288d6d5b9cc73afe1532d310c371db79992ed963f67ad083d9b6c8b649ec5cf4df8f8353351ef13a1754c2644f9515115b1199481e454b8e961c719311c49665a6f066f8fb9a65848434bdf5f2200f5891ddbcdd5d512d89e9a2be04ae5292b7035aa27535f2fb2b53eb0c0da9e8c3c26e9a2a1d78d709c7e931a4939e15d648df3440ea8cd874abd7ccfd1714d72d8482864279958a328022f46a3e8e8a3268309ae2cb8f8532e89677db0d993adcf6274c1b9bf3a46cacc5b3c474d03aeee6f731da36532143c56fc2b7a2cb327881a178e9cfa0cd7766d1aebe6e7c61241d8db202541370637ec92e401b1a1732d12845983ff0a0bb9530a934f33797241b0cc4d37bada4068f0606cfb8817428affccc33724b5e1d357fa5deb549d58d469dc90cdb02edb968a891bf839b0766ac380a32c2fef69462a8d4aa28be59cee7fa65560b4186e04c0980c79f00e11afe465f529f2ef2e2e3aaac5c4ba541066957861fa9000895d15e858e7d7fd4b5f8943a20c51a77bc589d57d8defce9ad87f0aca8bd90f39dcb3f6084c239815c424c9ce7798599849757da9d00dfc8d896d31daa18c78ead3ff70dda53d161c47c16e4d14b5dc3a1c2d23ef1e1f761e44f41539c9eaf244ad2ca14eb26a357300d818c434e50002e5b2660e64a1fa8e2348424ef4624e2acd9690296b93ea3137c62c0547adb835e5dcd63a2186b5d0c7f30287ea7a0aa0285108432c0d8dc2d1c8f9afbd61beb68808f372f5ac734f0047d968b62d647b2e46e5240c4119555ec92f95d95a8bbca7d3caa48cd3f33ab8c1085400de1c12497455b973b88346c3cddad07dbc38b6d86b41ecfb728acb04eb1d435cd2eabd0b67082c98ba2a30e4e45472d8d454791632badad0422fbd2082a573489291c74478aef81b94efbc0ce0631c0e2de77dbd76dd11117ca1d48f82c7de1c0867b6e9fb44d9b135cffb4e5dd1e5355d026145a13aba8d476c8ee0e6ab1d4de80be567b838c5f158b1345554fb9c3a6363b6f3fcd0c5af6c9e2d13f3fa73c1b0e45e31aa9ccbfb74471e3a4a1cc2a9d768f48816a70beadace648609b65bff2a0874cfb6939063c6f9ee78595ce9c173aa38d40559443cbaeeacd2025261c11ace4d660e420a83a521a64d57c20347f4fd8812c8a617d4906ef5c5953c292786ebbb58a9bff8a5ff22bee35ddc8f073326baa98ee924d1da78069b3b84048cd7dfc9837f423915e3f0070e875e9ae4fd774f1f6c52559b834521b36dbde9edcfde0adf614b90573d6eb97ebfa4994b9686ce6df505158be3d6e5889e9696cdc50aacd5e0b98bdeaa4cd5a93551f8347f7d6f690732831decac15dad3cbfea77b5963b11d24e7981f94065feb1aee64ba0ceab34d0b78523ec387e6112a079a2555a55f295a00d825d409ba9938525ffa20e6c0a38e4bfe566473963925ea02124028ff933b9d7eb36bd3b720684cd532df988aa42ab1ba6816cd619ddcd43d8d7260da7ff0813a7c4dd66ca4a53686eb7512cd9e31e8abefcd6802d334c3450272c90eefb1766666ab4c67fac820720c807aa64957918078b2dbf682b33899a2e113eca0a0e54082a1ed13091a287990fa3bee54c4337d4306b654852bfc07f73728d0b3ffc0e1b9f9d2747253213ebf855fdb1ee6a2a9104cd17f47c8abc8116e1a7b6e368cf895916615eb9d7e3c68148b8c65de9e1fc1554f2063e4209a1b3a34f6106aa74e881a629477d54b7524e0f7dcf9d69944325967ffbe7ba46b7b5af5b48986e10168035d2513908fc0ee23ff02a1d18109be9f10994d11f0e7510dd468569f222ddc1b9210ec23f12f40fe03654f808ec5b173ee5d94a5f8da09d146d7e459fa379f0274a9c645b67df33d16b51b8a20a96ac5d8feea1be1d3fa9d0e641e9cba5a5d3a2872583e63a6852434a0d60751b275c3536a4355b089596508c6da835e9057184b906ad24fd8b4842c418673ce8a410bb439e86ed1ee5e9dbe5da83e4444b9ffc5aa635ba0d7fe8fbe9eeca831c81d583a9161bf3acc5071b50e6b2cee95587b946af7323013b352bcb5bf8420cd0e4b42a05c7d3dbd10222d1ea5b13c25ca3cbf974400ce9f1124a7960aed1316ffb0dacad0c1eebffa503c41abaf43b4a5aa822b4202e6011c2ee73e84aa8234f211ef0f2836418868b9102e716fda6c8f2a2212fcb774bff17a5f761787511f9b0069dd7e0cb9dd47c7b55676c205540d036643227d2cdf415e77aa8bf35522dfbea3712d53f4732f393e97e435ee788d250ffa812a296ac7944f5fd8ac1999e20e7ac2bb3bb35c13fb7f2547732bac0813754790d566f7f2e79d9aa8a63b8861eb75b0d9ae5506e979ca63b721286950e298832d36b9db1c004acac1c871268a9351108a62a7d64c19be9a96f5ffe7560b374ac0efaff1dbb692ca831cadae1bcd020b1670d9e2a1c6fd2a4501b09d7a04b26001d7c98da94780f8174384d8a0da6020b09340e05d758b21452ff53eea954c135f41762e75df4c44dbe1678e62b147c2de23f907fc082bf09a26a4700d168609b5d1401794ac1352ecbf76f658a331156ffc901c3ac589bfa9938c75c7803a6b8a65a56727e89944f8d780ca90a8be8ae66f175d31845d27c9cf467b092c3fd07870f2ac4bb020c1292fc3a5a1a69f28cb5dc8c139ad4be81c20576629e445b08f97d5f941c9fe449700db0e88651613be14dc96775df4cba472b38590df124f5bbe2e2f7e2581305404334c107564c8a5efeef328b1fd8826b6cdd1996855a910ad3eb180baed17b89804223d06753358553615c318716732ca83b367bf71c922e9a8ba26dfa0f5fb518838cdc81f054dfe714f20c4d40a64c8b534f07ccc75c1c4e54db8aa6c8077daaaf8bb16da829a89d6e3d3ce332ec9e3bf55352ac3dedbe84525a6f935f74553f06f3ecf1b9ecac00121c338295ed8c424b2956310b3dd6936a66729a73d8ea5a183d9e0dd0b964172435eb7897051980a69d1544786bc3cfcc72d4ccea520c982d5c52c0f7c046c3a0189ca0d608788f7c7f2b080468626603354e204c7aacdb04b90a2bf42b504c8ab686ddee75fb78467a232a3ba2604e7715ed469245b63a1be2190b2cdc3d927fcf839e0135eee74eab23893cbee26284354d948f7b64e2619854a0a8e456fcf59e23ce735c2d6d738001f0785f8a6cad6db8bccd1586948e97a765d3d069293f902c9b06850b4a2f9bbb348f7acf338a600a2f6f1c56686f9977551f8cda27812c64c181a0f5ab266ae1ca2c09bfb9f14238f178a07e9aebdafbf531da098f4e206d351fbf4d5b50c8048224d7427e9dcfffec047a1c7600a7751134645567f3c3469ea16dc64ca36b9610b7a80d73eb914f1edfb5fc43c80fd9ab7e44348c1f00df38f3533c8a0920771e08cab880f4aae1d5cade7c60ec7726d0cbf85ead7272d185fa2d7d66a9fa2d21185d3852bfca7c5a24c62b8d248f5f2bf02ba182e9256b8c02bda74083f3f300ffb81439ea3ca3306115840ddc41f83684f3dfc90f078148a8bf4da61fa3adbf8284778627f1011b40f922d49978ea46e2d8c3f222fd1c8779bad30e266c6670b03928446d64ff337960309dbba8a148feb5a09c0c78009b8c003bcb59b62ce498b5208d2b40ee20cb9e33f8d960ff662ebee487e2cdaeb58233e1a80ce966711c70b08e51313b95471c9105e972c3369370448af634e7089880029c68c36a317ecae27a58b06cf0c4e255520822b8673e1623ba5dce3c643f8325e32c37740004b3b14de11267e70b72b4a202451eceda37ad6f6686467f6e11ab774deed0a3b8911442aae991e31235ae8b922940f34b6c0bb7f8b54edc90af6e2eb3f705fc9c9191ccc6be54525386a4cea26800b948e6ea3c46949160654eb9c4e38fe82bddc7fc2e2d80a55c2701dcedd44152e35ed6a3a68466c4d1cd701c4fdd55e9971b3a313abed69a3cb2273a14bd645e18e7eb387dcc9df2bf98383aef39c74e9541ba7f5e3b915f42aeb86d6f2d3ae4bb3b4eea626951e60c5c7dfeb2eb2c2d311e9d2315946681919f60ccf8e4c2d6e3a68b08ec82d1d802896790e24ec820ed99053d2ad78c8055d8e489969284606925e61a8ddbfcf0070cf385df18c5cd8e68009dfdf12234e57f16ab4516f986508fb67be1c82c95fd61cec4e7728eb4a582e1e6721f6962612a2b22920aa25fabf252eb769a5ae00977745441de104f1dee280e2ee3251a3b25eb532354425e7f026898a4b9715bff11737caf937e38a27021ea4bd1ca69b7313d6f14a9c1318821839bdcec9b74594b0aa9ec306a28170c8f43219316985e4212690d2b10692b9dacb434167e309eedf1fce1eac8e2030445fda7e6dbed094648ac852fdd1a2be0e41916fe02c2eca880727a4012b72c37151ca09af14bc9299bd4be819e90cd23d6075a1d3c9c0b853b7c69e13bd8b8b0aee1c8c4b72ebc0f7856055c0da09f36d89383ec279f4ac292869e714a229894c261b0a9acabc3691d942c664b035a13f41399ea6d3815bd36170b2603b71b8bef42fcf64ee0ea287c5dfbce2b00f9df584d3468e561b0719f57c8b36369e409f69b313d23b9c125084ac82dd663b6e98efb7b4c6615df3a17e5c3aee0ac20adcef690a5d36395d4cd2eeefbaca56939cd3d7085f8a41a80222287614d0f23ab82d5b6a06224c43fe7e6ad49aeb0a26b89520a89b7f53ccf30ae960c9d67bf9d14fb3ba4d60af7db5c582aee7c17b40ca0259b67def1416de1a508b993657cae349aa7f3d34d334cc8441b9e57d8f90e372f4036b25d7b7a73d7fda9c217e2f19ff424ab0c8278e5980daa4329b61193264b67f95da49ff091e508e9672b8fdc7af0b9d3db5fc5cc90d5bbd5eb6a38a9d2e8cee2aeeb18c2cbad8b28aa34ce103c5ed1ee3ec164df62323677561a9a434cbe2cdb394045388124ee7192a936c298f24c1f8c8a1c236d17c37f05beed35423a2641ae0c59a63a1a114abbd70d580eb278ccbf19272d0a3dd5f4c8b430dfa404c69ec231dca34087bd69ccbea34705b6e42caf2536c12ae60476bff3039ebd8e28d05c5d0b59a5a14ba9e3c9c39921c3956b4e2e090a29f1b49784170696750d7d4df3b0195f5a8052520fd5a1e34a1f364d9d1ae907b138f78afb606095c60b2d01cf17c157e325b74a43d7cc054b60e603fc13ac343d601e7197ca3d8bc3d65cbb74b3800366d070b9db60eaea5ce29ce78e6502aaea042d3c707cc6f770b5a2bb27aa103a6242b34137624ea3b09065820560fc3faadae37372b5e51b85e40802b4e314fe1c3bfe20cc0daac6ebbbb941d5157895065d4712fc3ef42045da5cb8e8de6525a64a570356499d0ff39bbd969576a43b2d51ce3c29cee69384d3fd52c20d238646b7e692106a8aa17153422fd0751f71872d69c2301a208a63685c0e84c8d098dc6e15a0519eeca08c156ef54ab9fe905f2e3bbcee19320cfbc12bf29c213030c111fa31a8c31cc2bf1caa2a5918ab459f6b5d2d100235b834ba98146112beb4a183ce46c70b59804d893d8a74bc5581e293de10327fb0ada9f514b00c518716019580fb64a6a5cc08f66cab0fc275bb4b25205bea1003af6a948cdd2a846a4b74cbc2a3d731e373f1cbc6874578bc9ee8da4fcd5e6322ed17ad58a383d08c115505d9dc5b043fc214ddc7794cd74726a0d4a0383624975916513334409360d854de477076f0c5542eb8875a137db74339af2f0043c377b7bd7e25f7f2193ff04d2fe9c18d1e03eebadb11df035bf54c3401c763214c40057e5bea9b3bcde0276c120e501baf35c53cd5b79007f3017509a17d233e3279ad69b48c49a92f78bf3db47ae3ef993149d4a2420cdc233f35f08406e56275321166a953fcb9fb124e5fe870c774cdf433782891f5069d108c0795b3d54bc2b18a542ccd39c4ec57c45bbfe6cf48cdb6b93b899512b84d8b9b31e5f0d69700953c615cf4d0b7a1916d7eed6dcb7cea8f40bf88bb651faa87027bd942a2c9617f96121d4c2a2dbe645b67740f4b2a1c70bdd9146ebb0f79f6dfa1bb5f3566c0d54f44c1ab8beb7fc7e1764e1b773288a0258d0a8b33d304281cfdf2bf26bfda69bb2a1c5e306d2c08f28f315ebd111bdd28fd5f341fc686688c1cd170b201636e6691e03c40220bb86442b5a2d02aa4322631aa75293e499f2706a8bfadbd709c776935dfb64157ff363978af22855e122deb24a32aecceb93b45b6a9720acf9f03a8807bdae6d2c1ff1c9c13072b75bc271a099d341cfde58f70afd1ed32eebccc0503508e62272b769fe75a708438a7618b4063bf2d6004b1573b9d016307018ffd5ff03720c7d1ba7e22b99fe060f07e7751d86cb56dffde90c79300c8a843b2dc1ce8817e91abbfd1d89c8793731d5f6050d3685d84218c1b7aedbf0973700335dd337058497702192d026ab44ac7f9ae114cb5e5f661ee82c839aa08a391660c9b400c6e2efe3d13b27eb1b1c5397e7e468487ed72dd37184499763ae1e0a622435d8b604da9b204e3c5d7af4e49bee833292ba869df6746e9f42cde9452f7abec244c1ff61ef2abd4a6697eaadd98916e42169a7a3b4c1d463d71a03ad28d23d332c56e0e5ae5659b16aea28bd5ae59353cd7721ed4bc5db7369ef22c542cdd96611e7665bd1e1f4b44995c93abc45a5c33c7e907dbb2d8315bfe4995cc19f922d65abeabc201fd5904c3218d2613dc73a8570c20169cc36e4322340180dbabb92369c0c340ee19c43e422139dd6073d81bdaa62ac8579f90847c12771ee31f210e9311fad12ff5efc417c0c48cd3faec71beb2e91903fee09af47a7e38f7473f0615e9aa3c8b7b48d20803caf732f4bac286bb8bd46d92b5c397c900d444238078fa9aa31190e1a210eb830be3a99aa09fab00557e67664230d304f98f1827bfdb0d9211d121d1432a72faa96d64484fdbb08e43fedcaef87c76ef372603110d426b0bd25828ee1bd8fad71d449b1603b3aca3d4efb32b10d4e44ba84f34430c4f6990eca17d7d4446ec32ea8e7fdf47004fd4da266b5b4a1d98d37f9c6bed3c47f4ab4ecc135ed574b9a65419d0528b3621db78438a61ffa9670851085188b425855605178c132d391ce977935af6ca7ea75c2bcdab3129dbe2ad4a098089bd3c68f9d4bc0d06282aba026aec176dba52134530d5ca6a46f31774b712fabb6851fb9a6a7924cf1b6d784be126d29e7df77df18489cccd7085ddc86080118a0ee3e131228141a35a59ccf2b5f573a341044449b037d3b79a22895bed25534272359ea9def614507e2b3cc2df2242ffd8dad1a93dadc3e5c8748470796691c2436f7c535627817f72127b0cb0548cf13bdee4b7ea48eaf802c66936b5aa685defd2b311fbb37db0c3bd97840450cdd40b798a3ba48338c83c903bef095278bcc423667528c89bd7d5817e8c4e583731a41b6ec47c69d5da2f4bb8cb056580251f99a14c6d096b461953fc3f8fab646bf15ca9419e99c19e8923583dbc2390b005b42690d4863cf9ab8b6b17b059fb451324aedd070df5490c8e580a9d9c9ac7a89170735ff2c41d89a7aa15d75fe782fa1626432a012a459e0e2d3681d32c6ca31d366fbc03896530291c3636ba77267731be664cc1842358aabcc3d8fca8f74d03ada1ae4bf215344708f2d98dcb7a656226c3df7034fca6573d896147fe5a0f70e51eb26a10b54ea0df9df3b03fcb0cbe836f0de2f1900cb6ede432ea08c25d1bb68eb042699bebefa15067e1ce3220d473f76ff3cbff7670948ce3570f90c22a5434224a92ae09a244a29898c7a14b2d4a2d384fba692ee46dcd8b036bf4e099215369bb85b63bd1d98d51182bf125c5fe1f8f7f1c0ae478f2ce9c1286c0da437d2bc4ad211521aa9f767ed7b4da2c94785b61d302868a52b6ac255071032c5c32cc798722fa08a94ddf3c258b6e4cc360730bf48e9d8efcb56d6844fc21ab785ec35a7a18c10f82439b23531f14d248b54606c5df7bae192e1116c308775b2c65390bb653aefe50a03b514e1e7b4825a4bf9d0f5004658d094474a560295f973cfa3999b07eeb85f6ef10e3e13e3e2b132f90bd819d86c09b976558a894592ed591ccbd13b371370468e9219213de6f3c997ff7b1e3849b92dab44a6c1c52845192e0ceed9c3a0c39325709ef1166147d3f4bb6fa0b56e378214fd61d250009ba9a67684e1025833c6499c59dab8ea6b9bbbb8800b905263ace428daf7eb7163e82be4fc39c54b7741f0ff9aab21029ef9bdd63ee2fbac7b553cd5d2c067389d0f2a1b639cdd4b5f676ae7b700b9be63381a3863f3d8a2e4fda1aee0a1fa287a0db934bff5406ee55b655d5d2217cc49a2a668b911e499c85cf7282aba9269aee9af04a2c56879cc3d598eed744f58971aa000a49eb780fd0de25371f38afb1bccd3c971757fb2eee6ebd7f5af1086a24ba54d1e00311bf3aaf3f4f5115d42165ac4a9d6d12b0f606a2e0d235b15bf096d3f1c2c269e1314989f693770cc35ff2ccd6587b36bf73bfa6a5b6ae2bb4654996d6cf769cc9b0f9415835e8e873d63ce05552b02bbfec42f61fb292dd7bd9c08bcf5a393be98c92c69a2e3b788dd55c64438818617e5b216dd9cda23e921bbb357f1320f75480a12bc83f53bf9d9567435640edd995863618133519e09c059a4b7528a80a3b456b50788737d545313c2ec6b232543eaf01b852f51b70188e2ed87a4717747f57524b81a674c12cc994cb880cfca5073d538fc01871133ed81ffe91bf49912aad501ab7db06accb61f775ba638f57e8569b02901f9252b2094f4afc542350393debc0575322a5a0215818e71d7bbbbc027750d1787796d9018fc9c61e69e8151e49c3d0b6b8ffa2cb8faa3832340a0a99b7d921773816eb26e949da0371bd53b9c427ee1c94531ea500d142ca7af681b92881521b72dc2db075fe05d5c86fbdc76b73eff1442c3ed266432e22d869579b62e0e925b277017a17869317bb8663c9c6d274b28fea2470bcef9d22be3f91bbd889c26164128728d32e944e65cde541234db8c82388706ec9de3ddbf5dcf138018c8ad3bf8fa0cf355a1c760124e5abcfcea558d6e46ac6717b9e0452f828bc121aa763e15290607e424755b190dfdc7594a32a86bd27566cbda5474fa48d2c4240caef30679dc1f09c1929cfc609bc0c9f7abdba3a146e5f9e15dab82308088395eb023913b066d6c299925a24a9da78ccc30f359974097fc6abcdd4e1f4181043567d0447ce3beffe9fc5e31df783fcc3dfe683fcde6658d011cd66ecc94470f913cbffeb79800b826ebc6a4a5c3d9f17f08eb748026f0d529b5520a88d6af13b2c9a731b3d6d9afadd77039454f61afc31acac89ec1ce0700202c85e016221dada7b42d531d630759a49e80188f5e3c4a1264a4715d1c3c47e8d7c015ca159555c270971bf58f925a4f125aeff69b6c0ece33ac10055ce94bc8ab43aa177d545c7c87caf72c88f3729d82e8102c2865f47e5212638d70fde4c999c39363dda4627d035a409c10af2a67510ac978416c064437abffcd93c7a616832478174466887803ea3c0468d91fbc8ffc3d0b6bbbf619a0226b7d558d603eb70c92f744b67bad4e4130e7c9abc960288662ed4e65c33ad594c7ad74c07fd5bcbc6b8d8981546ab2e836252c4b94a52a243e5a165ffb90a4ff2da28858763897d148dbedb062e0c3bbbf72fded96ee855ac43786260b583c25533f7bbb9209e2f68a0c42d07792b3bb2f64f1754f3598e2367d116408e0c89526959201c8ca3231882435b1804da63ebe141144594e4e2705b3310e775b33cf3605d729cccde6e78259e62b0a13133a70ae62f27890ab5d30d99be176357bb0b83d946c12d735ee41a9a40766f0c7e49865138d6642d78eb3e1eb92db5f3a5b4b36f245f1194a8ef8a90d862fc373cd0bee3063bea65a97a172ee8f37614e7ce0c59bfedd8844947ad6c8c160189ca44de5b94c81d89f6751d579c597f70fb56687c784c0c46e8b32f8665c06a2a09ef50084c4ecd94423927c260b9e5d91feb5902640b8c096dbaa29f3df2d5b2a53bdae01a40d08574334dd26d11c603a3764d5309ee0211a265e813632ea7345246df086b2b34d2142fdafed72019da69c418e9104b75a6f012cd7ec164478e101ec815a43a901b4f21c528b723a9977dfaf0a610d1769394f13a0bbd0e9fabdf6226361b6181d2cda648c678149a74847c73643024f06acced4239ed5c7d8c0c9df76a83f051361d17c852b05a68927cb21925f40e6b279aa8eab3d9de489e75942f4b717fe99490ba6e83da0a980ca473937efe876febe19664b7d9f9b649e5aa59803ce5f9b76eceb60a459704ae0ebba0de65277416deabe1f55cceef62d500264336b9907ffcad681de28beb189412c3de3a9e2b609039153767758fcd8e1713bdd26b0c57c9a54b634921c8481e83779bbe06bc2a75dbc969c1452c53d6a2a88fdcffda28b5574a0eb0ee7ac371d3ca4451b90904952c9f6a8d314047eb504f5ae9294d0b507de49285e6e2f21df2eda66961a9877c325dd316a165e790eba66f6ae152c48ff2a9f4e62d58aa75472e99aeb905e8097ec8b5d39bb2007de71ee43637179eae9a4b93c5a57e5d4e907ebf5c2a4bb063c7ea9d4110a3bc788ea978b4f3bca2bd61f17945b361f1f38aae686ef129c28a3c6948e1e9da1543da8615091f59bf6bfbb6cdd78bcd14a1f4553977b955164ffec61ab03d5ac798db3eb3c595f959f059ff5988da8b6359fbc480bf169efb909261cced35553ba7ca77feed3a8dcc2337d7bc5c4dab79eacadd904b75aa7506b9d29d11a9d2a7f729a40bf0d709dc0cc8510fa544f9f793f759b9ce80546312775a8161e7f3a274f0846f7c976f345184e7b73e15685729af84ec1c7627570a940c3c5b01baa64c2351505a723a3d8d9c77523aa9ca25a87a31ba389b7334ac9250174be145fb4398d040754c92c1fcf1ca56c3e75f49cb7e816aa59042058be9389dfadb5a5fcea1d9bc486055f41324dbdacab6e5963249996428021b0226021d0862cd857b89c7c020e28d0f9313195d7cb45017ab701c6bc9168451141f34f71c74b6f95656071bcc1d8efa70835b3fc8db416f291d5d241a32a56685b6901cc967d91d4a1da35ce126376f2e73d9b5d4dbc23b8ac5cf55a4b9ed62fd6de455c517451e75e4218a1cbea10d3faca23845111579692efd5404ba2e2767dbb81c8dae30dd151bf6e8e1eeded53fc16949a3103bc65a5b6b0f277b79e8a1e7150449c80f900f3e26f0c3745a015c521873e23c17f9d24d593cda8a30612a887911d3248412992fc42891c3174e9021dd5d4aeafb7e15319259d5e775da7992a2ddf665eff624bffbc51efefb7125728bd8f67f92ae5e9b223f407e26af76dd75bcdfdd4bc372f4dd7d55cf3baf76eaf43cd6cc35cfcce50be69a996f33e7e925d4729d4149c8505441e73d83d474585aead651b154f966d4d674df80e1e7b4bd178afad63782d02e27d4a9d04bb1e8ab46b9da3bfb4667c528160da219aca1313baca14c53a2cc7895281367cc4db9c995d0dacd6543a86a4b7477692931c1c4c5832d0161d0af4ce9b558fb901d3f5412a462e170a0410ce56c61dad2660b6d4981f136ee9e968f49adddb3e3091c2fdc533e59dfafd8b5f97a3b186bdd511b29e81a1c7c47efec07a29165f3a10b1420863cc936c6a0f48377a96db286579c6879414900255d3bda7de6ac37cbd5a6f496dafb6edd58e56b36911efb483dbd56e4fb680850800eae8484864b1a52f266c460e4483967a0c06c391ab5b3eadb29d58d1c56ddf43f653c4dadb5d6f9d86b6ddd52539e1b8e74c01cb8612d1da21b41e110a09efff559bdc88b3ce63021180c66dd53f403638c0a7e9696340c76d57c1c8da372ea4ab0034bb074d0522fc1b8a8107592e43b167399cf9c669f161d815d3452160c451351d7a319cf8ec304edb218531358966059eea0260bcde7a76d8d17d42ad65e2b9b6c08a17d1ffd04bd89533aa1288094881235b9f12ca56771539665d995655976d77e2c268aa2288a65c9d1be17b00cb3406d4e8302309dd22072ac28ed0286e436a6b40d13098629cc171e521eb411b038f8c6954f8abde926b114186844dd46736a8d41a9335a5ba224162caa48598a52dbb6fd38f4262ef412f544bf975678c66da3375ad2266babd786f446d7d03a5487e8ad87a6d96163c3cd0014ce01d4e6ad6af4e8f0215a83e0ded4466d2f8a2b0fcb768474543aaafcb96a1437dae8ab9292023ed154080eea09cf35f62c5f0fbad51aed184ea9a2f135b70daeae1cd77896427939ac61add5ee4f4b9204ae07209840a230c0bd450412a2991714adcb6d8d31567558a53a759863b9a6a1ec2285f2728751187b18638c45123b7de2648e32696ace86eed3a681f12a61d09cd9c1c9d40c80eb54d4475d0a91cb4073a531d6faf52be793aba900c6a4da120b8844a5a03fbca9ef35495ebfd4704df58ae40b4992244992244992650a86cc339bf8f081f7fd31ffda7b431fb335edffb5367ce9f10504dc2dd156b9e4f582e270f64431b75aa7bd03372a0342a4952419e10224b0d8dead9628ca88727d7b39dc9d841019a200cd4b3f03c2b56e4d62fd08f676654577218cd218debb652f87bb53f680f2cef672b83b65ef82d5de7182a1b4af4b0c5f78e8828d4fc615b38004f1f1a386af29908810d401080e13a39bd4bb50acb8eb30aeb8dbf1d6ebcd177bae0366ee396fb0ead5caa9e86b9fe5caf13538ac0ce7f1fdd7f6e0eb61bbd25f03ec5195a045118f304ff41950a188137c98bc1437f8e0151113cf585547b2f21f47349811ba947487df885e6b77edd7ebce827f4978907c38c96be0f583815712d4f3d1334253300b706868de8e4c34404772ceb97be1d70b57a14fd943a5be2f85dadbcba7c9510fdc74bb0e14a05b99430baebfa70de849d006732e319b511ab06ee03813186f1ada985281e85672e46630e35cda1bcfa232bddad828d23e8130edb0e0ee943d146c8a62defb04821d6ce2d944192c98f1618297ccf8ec5a5997c47ba815634d198e10f4e98d1d0e7f9c26718202d9022db242f67f090cc65d0b7b58fde1c21bda90cb2bb8468adf490569ccd059eda8c050d3d033b48e5ee91dadd26086761c4184f16f55b8642a493145183e4cc41cba90d14415ba004837a5d29bf0520dc70a9f54db9961e9a3a23eeb839c4aa1501c25fa200f139004086acd7a170f1fff6da761947f9842a19c4471fb8b981a49c26a073572be4920a1524081a3786a1881874676b60e0a5551a95beadab6f02abafe0e5ab13cc9573a3264ea9c17998142740f5d8c07b35a6bad783bc69d50c558d441d7235bb6364b4527d249699c7e808276c6e22bc8103a6dc8741e9d82262e8c41b321e6458629334c70820d65a8e9a2888b15cff3962cc92c2fe77ddaf9b44f41789c524ae97cdb7dc75dfbdfd3d37516ce1c17181d73715a67e9df1047ea6483bfcf8b7e7194d22b283df272f49742e51cad53d9556a5c89accb74917d390c08dbba7d3abd4ea72852aa18ed90b34c2693bd5eaf6be911529e73ce39e79c734e0f8a1019a2a3d5234447765e56a94fe7a874563aaa1cfda51c54e3450d56a8f149b1b4b45ef6b43ffa2dff31a16d29d1c8ed76bd141e4fa332526b10dcbb75ab7773f962efb1e038a3af033b7b37cce278ab8dfba6bbbaac0f9afd1d9f566d6c74bdd569e40b5fd88888edd805fdf85868d9cf9ef658fea7bc95f171b0ac477aa49f7d94a11ffaffffd4fed4ff7f4a47caf6df7934877c6b3f93714dfd2c1d5674889d50cf8534cc6749e933e159f38dea7d19aa9305048f7c7f40801eba8e74130fc163423a4853664834cc6854de6ffdab6404122cb264bbbdfe1ae0974e74afbbbbdfb22c4b10049f7ede0ff95ab91f46a8b84386b6bf41aabd9b34e480d99cb567ce707ffd01a70df55b230e568697b34ef5ea57abd9fcc7311bed86bad26e03aec958c060afe1311afcf80f042cc0609249d24201283c02225c117b3d26265f3aed324fa4e954740b619dc2dd12753cab5603f2eac1c132a55446bcb3ad2cdc6d34018ea6a894ae5b550520000133550840501410888543d1308d5214c661ce0f94e106851d130c168e6382f0204aa12cc4408433800163c0c00c0c080c081b005b4eac1d6921c64ac52f032234145c2a635280012f3ed1470df5d32096df23cbe4122d9dfb5712f7e8dc34e35a84d59622322dbb5fef2713722a2cb2364e191f311fa8aae4dd114d7445ea6ad528e8486a93ed934407605e74c52d3fcc5e993b18300e33e8f76503f31cd084e847785e5062863caac02271e5173b5be7a21703bf8bacabce33ee5785416a33ff02c9ba7cbe151ba9f6c6c031dca422be0231e41fa3153321f05a84c3f7c16556e5778ce9fe1a0debc0538ae2d048e1b9af9de8d5299e1c8435f3ce2fdc2fcfc91c110241977a1ca94d860b588acbc59abb493a1b177ebf07c976d64ad76b783d232f3850f116db2e4b2fb16878ebdd6ce3e7304a5298fe8a388ea781888061921818e5868172021cbaf32d430669514464e392ccbc7e053d30767b810e0d35269e485bf841117784c5ebcf449bcd28d2251979f3a054dc4532da748ad3c6ad579b4bbd36a8ebc2252345430c391a011d253f74bbb4c5878f3f6f1ee65f29f8983ef5cb50979b97323b82f973f0cd98b0b4e86b6063fd8348f714989a72dc94a47c859f3b50643977a60cbfdffcfb9eb082357cfdb9a4db0aea4dd022e0ff652acdd5270d6ac7637e981b8f2c6fcf1ac06f0c146996acd43b01dc6e482daf119bf2b4035eaf64abb92828df30356663e30b632a1f0ae627ee5b9b95e593f355ccc9b7e89e27d3ed783d693afd3c386ba63144f5b08e30ea3203d0a958f9814608c84b889fd6d32e2255d97a34066babe72fea84bd1b7b812556767bca47c6bcf32cb4c71eb041fcfd81b7c8d26887f7ae94dff363db289ed803e23281a5c2356df01428aeb7e0918fa28cf068ec125383f3075044834784f770a493712b6e42e05b227c7a64737b24d77ce4541f258f56a6f84f46ba286e63ed80fc6dcc3880bf1f1e991cd19dd964c74283d72e94a37d52c18657c5ede5485005758cd40be5435ac7be6b19c59db836bd3e8bf08e97b610ef6e5bd71a9d330ae893744013cde9d10a547ece09a418bdfb07e2fbf9c028ef970e6614777fb62e1359fc34a8c66f277d39d4cca5d281642f9f1b1c3ef2b428bd5f37bb9a28fc062583858c43a4f6db6e20a691bdb5549867025327449cf9ee0aec0fd55eaa8cbf4d970f855d5fe09196f9dab3c51a217a80ca1fdddc3284ce9036584113a64687e5ae42604c04fd4987d8fe8a7d5bf4722d4253f8218beed2427243511f76d520a3a7b9aaf875673c313ef7a00fe78ca6deba4077322f2f66a8b618ceeeaa26f7031336bcd93bb2eaaf04dd712921a89f360814968df1d5ccbb53065bc6951c347bf3c2c4a7ed846c1b467dc9112600c99ab745b484df8680a4cad83f2be635dee4f6388b0f3493ac9db0eb43888d730426e4cf6883d8e4a1d683c2adff3ad44dbc549ab15684e678f88aff68c122b7fc0a74a16378cd0c68eb1c3ef78378e1321ac831f1e12a76a5f6806fab5f9d1add34a92ee021bf5b75d54a5fe9e86847fd0d4e44c388991a0d38ffa6a6b36514b3a12dbb02cf8ec9bb4b9a9fb776343f6531343f8b7ce66780d7bb302fee335056e8f6b5523b979545539592ee9df1a0cde3bf2033b085322b3bcee2e2e92b9cb7b2534a60b1ced636203c9220b460982dd68f236b94bb8b6a41b95e1a6def3a39ca63fcc5f9e20d5e71108cb480511ed931f38bbca68a4a4a4a2cb2c4696e6df4bbe27313efaee98ff7336dd86bdf12ae730470617ea782ad6ee02916d7d48654763c9b61d2781733a256e6f2c7038473c2ba3f2d54ca855ca49acc05caa98c0cb5d3aa9de3599928c13203ccecb74fcb13b901f5bc00af202cdad73611adf003d751b7114f8bac67dc9fc11e3ffe81b4184f157596162a4d4fe063d140b79b8a2127909538ad2fa1973800a6870c661f2f2ec94ca8cffb16b836f9b66866ab28ed3f410da539c5a64ba2e0f46a50904a2d304cf33ba52354b50ba0fcd751266171b8e9adc6ee6500359dd5b5c23c5e198c1f77829bfb142fef0518568ca8eae4fe03167951298d3c7f5891e4b95223cba61951f3cbfb69c6cf3634bfafed95a1d0a9cfe42d879ad78ff3dd0391569f04d4419ff4cad212e57c740c8fe872d35dd5e5b5970d49f482f18c4791c32941bbb53c0de3c4efb030d238423626e9983ececf0c9c8c45d255bce8bfaf34a9957236bdac6546d162bf769020bd8878a3aef49c18d87d3404a3ac246cc30ae7b5f7f3ec51258d75ca6d7c609a6db3b93e1a908e40f12ce285581b3b5a7494cdc184804a3edeea298effa2cdb060ba0e6156fcdc5097039a08861be29939eab7cb8920225c306168959992b8f02231b70e2cb3ec3ac40b4e8c6b72db23f229a84fa59c53a2ff488924caa75cb7e00b3f675e81ece07a2127272f59cc4993329f7e6d4e95fba2fa7adc791edb1caf73d8c31ef1d7debc11a1814345a719b99863b74596dc17549b2cd4d381542ed4fb4a4c57b887481f00e419695ea5539f691646508dd39f5504cf209fdd3a3d1792fc3a0ff6f97d2ee4203c944920fa2a51908a7a2682dfde0d04e02f2b9c4e67e1f5304095a6be506f2774026b628dbcd7951d72c61c561ca1d1ad87b917521e625c8f8470614651a098a6434f9b707f6c1ae5fa4daf0341bbeaf6eee75b7fded039e89912e258b1c8cd113980445a9b73cd0f15d5a7b8229e2d3a49d79c3938754b649cda8adc6a5b3caa627ecd1911712270b372fb681e315e27d6e336fde8645e404598ac217e5c866c0ba1ea38e1c14d2e3794ac3bc54da800fbc363cf28146ec565b6d413201af5a27e9440d1fa7f10e88c52127f91a1c04e030ea206b0ced7241b368a629c2fa3565cca740abdaa1542d5e336ab6260b29e40f40fa0e0e921a0a9d53c84da2379e0776c89c2e163cae164d3e129380ad19644ec0926893e7c03ccd025e00e2a19dcb9f60506c79a6dbfc8b83d19aaafc605ee3d342af5cfd151d07dc7d5e5407a24558bf74163110b9e54944988508b213b8c99fcfcbe771a7913049fe4cb646358c70ca1bbcfcbc073960baf319c73acd048d12d4fdc6141d9ef188f224d6302faa97107e5dcc3fbfde8d538ebbb15f44dd4c5c3714ed9640010433c19e5b40e6853aa18e8dfb5d2da29ebd2d27cb9de2da695d8b5aaa0d9cc1d2fc3e5d36f8bbed12b688f60f2727589bf46f8449c12731604b8e237efa8123dc484d73f02fca7d80ec91f4fe5b2f1d0b52a9195f76c7166ab4e4f82fccead20e22b49b65d6367f74b6988159f1d94c7c9e11c2e4d95d28fe40836bf8c759754bb06d262679077bb6873f9ee2b03faa15f1ee8e98edd738eab85f528aed08d40f5c37e7906736baaebc4e21d22315115475071030699f2ee04cc7c18562bcea2c67aa25bf82131957fbd9bd3fd9fe7c2d40c111c58368542c19ee325497626b8a63fb13c8039e058422c484974e6061f9154cf34b5f8d9281848cfeb96b348f62073175ac4ce914311290e83566435a8e7abf0ce6dc89b094113488aae57454aa2904cf931e1b807893c226a0efcf936e6d0143050354ec18d704da4f6b13d81143baa1ce68b530c295540fc0713ee68bef2f58d42538b0b0cb1049da6d7a712fad490efd485bdf30ebf638c1b33a08aa0ca5c5165f87e386a5a1b0febda8dae8c9bbafe92bc66e544e839a782629900e0af43545be25994c2fbcb9d8b1f5dbcc867b15982df67ed73cdb2bb50b0c1e3e675419a9581b540c2ae2a8b620ebf4248963e3e55a03fa1a8ab56e3904cf856db24c3aedad73be3547f062041254fcdb5b74093f72cdfa16e5aa8991c572a755c29d7f44a402e14060fb487d3e6f64ddbc81323bc9e145554ae3f8e138be1fb3871e410c3022e834df838ee8708866bb09d3040311de0f9ca99e72fda44a5c24b87b714bbc50dc2b81770f1e247c0eb82b93f209d29a862678205e1f0c6732c0aa07902326c4637f79bdc0731670d2210699ca23309f98da18b87a7b9744c5f31d1160261908dfecca6cef67d3eeef7b6e9d42cba825ea72f6bf9a107daf573bc823d7598bb5f80087a52ed5464db897a1862bff41d0907e51606f7a690ff7e9372d63577a762238c04b5c45a8543b011f9630ab59f338e38a584de930f576f3f24bac4e5e228e4cd806c4e846945bdeadb1f7e43d398288ec386f0ae04f5aab88194d83fb392c1aa4eaf0ad5bde8d95b582c93bf7c2e1d94118b5f8824f69c24d730b9fc40fba9381b057a6141713afaa87648fe5fb768469a41cdde6533056ed58e64ba0d7f555ff4d29eeacfc88c6603d88d29f0af8af35f3ff79ed3eeb10d46d4356cd35dc4d47fcefd2c9eda03c7909058ca726c2c192257042cd731f93971aec3a1c8dcc07e7138ed30e3c076077a849d391955d0168eb73206a81dae8a60092cb49ab93f652d404e48edfe5e8fc8d85bf3f0e3f4c51af20fb503fae41cae85ebb20c718b9d6649eecb67f45fa94382ac70f6a95a508f21f75ebc1772ab81d07ea7bfc7d8fde82b0b288faeeedca5f73464fb69fe425433fc52821ba84227609bc83d196453ec66bdf80bfa5b03ed6607216451df6cec6016dec92416c2477ddd4de29be4add7428bcaba8623fc645f7359e3131a8a5775c304749abbf36dc168acf98e2ba2c2ee7f05723cdef11a86d775e2a2396207d31528ead844ab8cfce39da3119b19f1964d51e0eb36d770332f0286fae5a30d267d0e4221cbdb932d6342fde9ab0d05c9bd86f0e43b9911d9e964aafc3b6b8e8c77b25530a85d31565228d5236becdeb2402dc895b68bc25d5c206ccd92e2f5e73969476e11b5880b83a09dffa2ed5db6c7d693f4a7462ee3c7bd4e4f2d52b417d306cfb2cc5673ecef5bde1148578dfe3900cb883bb12195a7ef37cf88a05701a4a9bc83d507f2489de1e7ee20c110772461d537930cb386a521e1789f7a75b73a32e514065fefb4d3ff3e7e033a6f49a1bac8c824938a42aed5b6926b70e6ca4fc2e63fa1fb4ee74c014d6a3a7b8b50c5cda38d63bdc36dcf8b1a1ea2b5b416e37830283d4297ca518f7b6c240633a042fa03dbd2a298cd44add6b49e14fb73282b9753144079e5af18922c88e1ea0c234ddc5046fa06e1037a2309de02b5bdf016ccc6b911397f21a66eae845a41ff96b68ffc412ef8c0d56e54d5fe96cf6f207e91dc196bd5a4f52865e06b75e8c2c5a46fb48935c65538c0026dc96715a360c490bf34fa9b608edb7d03335da1dfbd42bdd2e9e958314bfc6f4cf063c57b614ebd52402e3e4cd1214af1c92664e3ea187d8bbf825766e5ce1c0f9e3667423322f063db4c9dae8ea1d4b2b125f3fc8460640398ab471372e65c3f1ea248d6b30f26dc6668b7c5c10728c8cad1d34407f4ee1922c0f2e8c898ae0bd697eaa5f11ecbfeed22147df261e68250c8e37336f0a0dcd2b5bc9c7bad2a3e48b1c275df0eef7ee98c4f41588a7a10a57404d132d3807b33bb8b505be77495e334a66535e9b5fdba48961eced8fea909458ccbd95faafcd1785674f26108e0b21eced6bc119f699ced71b4247614d7525d28e0e8438bf323c346a687575c5819316e079ae89879213a03c466deb2ddff09de46988dc36fef1a9d335a7d730b9d3deabb39285bc2ec16fb28a3401a7d66ff6d8c9f6284389249c12ed4bc8c9b238f83f92a58d263781e353cd9ca2a2a9a8f14719f4423bfac82dc1a928921f8c221476375a51f2a6e3d15eb61969e57ae346c6917ff7b61f62bcf280293d95a8077e6e03e26547c23eb21937281558657518b244d930cf5c0a250852d21b4c2f82575fb724f2c1a6b7ffcf8db1dfc4a27b498c40efc2a85080c837c7221e9601f5637ce07dbbcda12cd7437f7b974dcaba61fccce3363abf0ede7d51e30f7e1c0efca765909d6be35106cd40077d94554b57a4bb05cd8d542e57a668cfa1792ea06e4f43668f300394353492c80c619faa98527b6e51271abf72b702e80b9434737ed335b6d3c4124f054e820464079f0ebec60fb0d1db6f155b471b886f738f024f1b816cb053387bb7a74f560f6bd0c00ee96dbeba6ae7e2d3e8f063ba6c045c0f86a266c1655dc2c81c49428485248797d6926843992781ca4ec638c603d3ceb066b22ca4db6d5c0ceb6da7e5cda562bdd2faf2b588820f2cd84bcf414d6df83fc88bc4f9abd671789e5035795e91fec4c053c244d9c1c40bb088a5074512c45d9fd13cba4fdd01de6c93f5cd2fd6ebe85ec4a77754e9d2afb383781c328c718859f6e7a1debd6cfce68f5014dd3369cb70d63c05898e39fac10b3c819a6e01f8d91741037b0f321b6d421d9d2948a0215b6bdcf3e60caa27b07a3596c166180335d091ebe697b33cdd8131b7d6e5dd1fa8f2afc69fabc52f46eda36f94834b2c0f5fd37743829699c14b249f52e5ece541860dc4961477e43098388b8bc7c4c69bc2e0fa81406ef23b077bd2e401ff629dbcd85d29cd1fe8546fac1e5919b604a5250ed51d8fd4f0f513a258271d100c947a0300f38f20e0d1bc5c75c4932945811fea4e35f5e981ecfd3d31f1a6a1dd1e0123b65a1dd3eea870c07da55d6bbf5f6b142b38c711f1b6e846b54b066b74a55ee9ef8aea4470c16b9c1e6c851b6855327360a785ee0289468637ba901d3b652c81cb4d6a52fa7edd95b09b460168c630567177f6d224ae6f098bbf719182aa0682c2c2282064ff7441db11a8d45f3b2784772fbb821d48fdfa12a00f171357cee33a67024780dab84987d7189b775b95b7527e3c77f2e2a058d1bb465953f11166585194244d9fdec210f2327e1fbe9685b660a9d2ab92d39541af8b1d46359da50e0d5ab8c90e18a22ce4bd2dad4209f481eb6b348a4c88c9b3c9e7d05a1d3f98ed439d4abd34e0d14499a52d15412ee77f6004ff6de1b5be064a8d581c1fed390f3fc72b3a135bdec7324a2717782f11b61b6aa29482a53722b56c5f3ac84da3dec2b1df1c8b2cc374db8e2c29431b69798bf461a5614b05d6a179c031a0448ba67d7f92ad1bf5fc54c6b0aa24d895c4b399b823817dc49aa453cec880f9b750ab45652c8ac91dd929bb06e1550d28f9a718ffbd558eacc953bbbd8f9267b004a98665ffe90a5a2366bc3a06c6f256e94f70770857d38076031089b81e729d6466bd06b9a02ecaea3932881677c8c84f5a339bc47a55656da00f936738163565be27df7a5f9eaa20102f57dfbdae180f09338aa899b2e272917074e430803616941cd89e16f43902f85ca34cfeae1db00f4d6c8ba809e20f7713b9a732e3f82968d037c377c98fe472fdd2c23f7733cae316f6b54fc1d8e1dd012c7f54efd06517a1406e667bfa2cc18bdf43719419da43aa87d063c6a8b12926def17eb731eb7a99bd7e81a4fa79f8fcbff97df2eef7103b8b70daced0de1ad06aac0aa31b4af8e19d37a94face8a61cd39fe9e3192eecbd3b8dcec6a826494c404c1ad608030a3f3ed03293ddacbe58e8536da828d433d67b5a67b4747d842907a13738047b7c0580e19468f4920261deeb889c7643c6347b61d40f438ecd54b341f9be39b44e56eb5a51fc13497527bc19312b10b9b77608575a619fe61c71f94bad24342207fb0499dd44327a5eaba82bb53f03aba33994c291802dd13383147ecb91b3b2986b90996f3e2a0c1809ecf738b6bbd57041bd26342472568a24048925270d6bdeae90a449b91ff9ce1ca1d345bf6767640467ecba72a582050ff1606266c989d1040cd88cfd9d2438b4f074d4d64d16c08eb8ee58b411689b45ac9e41f0fe1b8793c74f5043cabae2e36a720941918f1378f8c1a1694f2b2cc961943fe66d3d989854c114eda6ab89414020467d4038f8051200c1c180e0a4963417871622cdc4d73678066c9067b169df1fd1b4fb6a89a5240cfa575d370a5fd54c8900d8b6079a3789ce8b387d1c6e9f0d505bdb323d660807e097b4e599e192b076ae8df05248a7b0f61c9b0daebe9072b19fe80f2e9a203c0c21f485ae50f38048329ed9307297f4033abc2a8449331f74e85858577910eee71f983c3b3843342a9963f88255a79a81961dface4a41ef9b974a909d67811d0d55901d7f3461334096cf1e1fa708062e779f77da48bbf7720dba88f2c7dbb564f763a8e3dce03d30744d2691a9425fc4621ab602621d29a41cc431db8d267c1059973d51f6e99a57ebbc7c43f8c55c3834d1b0151b3c30a0dc7c16d6a6076ed59eb0666c86f191ef33c226d7b2213bb957f95792d224443e128a0617634fd8a429654ded44dfb4439c6375e51dd9df2a5e4473bb27c5982749a58583fa658d841562c2c302d1636fd1ec837f1e879fec25315849d51aebfc15b4c3c32ba53eb3e05e3fd84852d08d0066a8f980d9bcc75f1aa01995d57ce185a3fb5f98b42cfe2364d707dcda655fd254a762d7d2dc0590720395e58ebc5a6cdf6e30aa7155dba4a15fe24f81f54e108c3b26ef659bb9aa175ce79d0d31e80c46526a4270e96f96dce1a44134a0b4560efe27b8683bb0c7de76ae16da04f0836a6238ac5f638107bef1c2292696414859647d29139838ed4aa450db8b5623b43c34f6050c6c140915af2b623a5e5625fcb8622b09741a297916a9dc98f0325b4fb90a65d4ba9b943932307ee47e67c6dc04551517badbe39859d0ae90f4486d015f87cfe6fbd2e58cd05486cda3db2bbf6075e63525b19e382ebd9b48a540734a3e8871e7ff9cbb0058f3732dc94d4526673241acf05e9ed6f37b2cfc810582c38c2d004eaac3bedb7a938ef9c3d568e6390af22f18481e55b6986b1c6898653113da5a46110283e1ae4ff9310f7b6e8c1ff2c2fa02add580fc3cf506fa204ad1e2757d4e52ef6f6026452581e9cdfcef432e7f0f51d13099b2100a7673b37741aded859efb43e153b923071274bdadf46ff3ed635ddbc7b97fa2759644527645b27f48d644059a2185a1948d8b2dcd12cf2cbcc70d6bd3b100b7d397d8af06b7522837dfb863511341edf30dd2b6a57d7cce8dbc215fb844b621a49b954c7713746c5847171c29980f01531ac8ab7737c11a2b03b92d1ab53f8954c36a7b00e24afd625572084993a32aef32f17e82312635e984dde1fc65e587fcb22157fc3bda5d128ae5c5e88254f2543d27e6a97811ba2c338d67150114bad419b49c8d37ca1d813b4d054500a7f5e00558c174b446e36e4ca02470dde609fafdb15d9d7915fe5ea0d9b3717d778c9f9730abbd7d54cf2c9b3856b48a02ca0e40a37028c5d7d0657af7151471f58061e2f86219464684a7dad2da99c82279e06c9d761143d306f2b14eba40020c2be102285a1fea9a033fe82c49a3116b5774407f744a0202591a9864746f193ee5a90c81566c3a4cfec1d988aad81c5a35b390e5f3db7577905e1d1f14817baaf76ca1c57176e74ce49a1705b5cab470e2a2f848d32032acb4cd3ea743ab129a0c114fc7a2ced90581ec6bcbe68e5dd6c24db20e86c8051536b3a4554bb0e54914050fe80e43d55a1ec89a2f5741214a597837a9ef99637573e5ec226679052c1f3744ed73dae4a9deeaadc8ebacc5ac457e45d0c0b710359510fe08a94f85699ae97b56b659c81b53035158e3df849fd2702e23c946757fccb26ec25c5489660f45fd03214f2823e54581569db8af9c71ca9603e3e16965591baf1fbaba3dcf24dc62058f9285952f4c8b970effac2b7d91670d8f996894a5dc4e30528b94030e1299b59f883f38c502378a0551b80212df6beba2cc07b15d836ab1d2917f44123cbc07e2196d642a5560c2f952d9b35d517cdb583a530cae61d77b1c375da56f3e3a3fc783d73a4ad5ac073c04441a752bd9c545272050d177fa338c5a0395a74bf73481f845df2b86e60e9e6de12688121d7a17427919cd31c35be3fa4ba9be6a8bccf5dc2b0011def0528139445202210795acd46c12b4f435ed3c52e81d005b73468c6b4d0d9b4c9c54d2c8211abcf2e1919f56c778c66e16277ef7910a8cd3e096a6d65adb039457c5bcee326788a233ac4a43029ccd2d5f50684ed5d95a9ae4ca5e3c67af617727f206cbdbbbc73055db626868ecabdddce9549155a3a163b77db37fe2e2d9d06a6fe5aedace530a2c4d8d3bc25de62a275e3993995b3ba77c86c6108dad2e2c98cfc6f006884fc681492e63f43d7155709fa6f7701c56201923f80ed86037c06948c3c7d170c6f89c5f4ab07ee647e72e1b8b4fffb3517536e4b774992382d87d2a31a27bedc1b780b56b37193e3cb4818488c2535d3ad2a428b9cf533e3cb96990e8554a87f8caa2921fb62b7c504d12ad8edd871301e5cbbf27d34eea5176dfbe6e727c022ea2976a99430934e6be10a00ee04334bc44100759e6bd18fa0c4c689179854996c72e8293e26f453df7ba353a7baa2109b65eb81f460c39d7098cbb6eda02ce905c2aac3c6ac0b42aa6459d4e15f9fea5cf65b6b75f634d96f9141f3e734c995a4deb8ac23d68b6ab37c8b994e0ebf1ddf6e2a678eea0276ace6f1e96ceb51a03936de0d6eccaf2ca8b8b0d495d3b00018e2a317cd334b89e4e62f76f1d5ddef24457dbd661e4896e37e1dbfe740c6d4b59927d799bc1d230dcec55e2ed07b79faae3107ac3c9e91c2b716667220391962f8ccff499ce3ace18c073f0a18c4273a10cd3cb5b59657b3073f435725da38cf92bbd614f1c08dc4c175b3167ccedc1415ec45d2cdac797cb030c07d74ddbe8b8f958ac431e28a620484075ebe0710b43030b33ffc250b6a20e0b8da04e59637594d29122a164497d738edeeff47bcf67725e9c6cb9948e7d57cbf0741168692fab397236f4a9914ee585bbba45b6ea4df3a945226ae937f7222d8646da42768806861499345caee8c24ea90b7862186a2a039bbd39274c1f55d9be9f1208ac9869493bdc15b3a6300077366664e08f8040292a43ca175c3132c9a25ea9139bf121696312164520d22a5fa4a9107cb297a32903dfc67941100ff409c5575fdc7f21b6b99e253a12da9004c454c047b65abf05315d81717bd23f7ece5d88a4ddba76b2a5a9247f94fba963448ed1319dfb2d1fc9189a2a77a277f3138d4c990276df18476a4797aa0b07ac38eab6705290e5684767a7d635b9de6bbd67dd140e2d14ceba5bf356250499fc93484651203b75a77af8739d7956459796d27721617d6071c10518a13c5ccd32ac4ff38d9c99f08169ec62a42d4180f0978e177a0638ab50e09488f44efee9e5e6ee9697a7797f934ecb7ec27db049f2cf8817094cbb8df6479dfdeef7ddf4b2d22e71145283f5e1e200056fbde2b199b3fefeeb7b6165a8cc544073e381c59d40f4ed096dbc3d174aad0f8cc0121207ad4d19ccefc74bfe5eeb022d67693c1c32bbc4fad2ab7a2ad9d4ca115af26c3b4da34570b5ac66de2d372446198277d7bd40671820da62874255571a1e657225cd19a7632ab4600019ecfa6a72e8bbfd29d892c9484ebcce68a7025eab09d4947aebed24c33e260107df54bafddb0bd1dfc3d67871fba703191b7bba7b8c0e96db58a96835870b99f01a4fef8a0dd4a3fe731f997653fe87f2fd4332f08c5b810110938ac6d57dc8ce3525857b931b72128bb459dbba6fd5c79f258b0b2453c21f0554f2f175a9e349d40c463d2bc498db688b7d4f8f6337d4026172f2698307f6c5bc4fcfe4a4cda80bb157f19d9e61b7fe83c4ae4b7749395d0ce635783fe7346b9b2891d9fe28ee595e32b69c8e85a12c5f74f69f10ed8bfbd95e4424fd8dced52af700fb8cc420383a59a1165ffb33cf62ce919c85cd0047772e9e91913450729aa265d52a037a5e9a3da8c7a9c5e5bea637ee0bb256aab0bdde36c86d78752b4a80696e581713aa4055b1d0ef8523bdfb4d0c54f09edbe84435f1d67485ccd765ceea9188d462495810e6b1ef85fd7a51ca7a156b0713092db9c14d993366373824bb6333514bdf6846203dfb79d72a2a45ed925e9078cce7cb2f01920ad0af42d8f60161d248d9ed94319d3a660351f06a8e3a52765795b0d5163a3a2ff9bf771dd96b9242468b46df57fefda0de90b9f08a81d9b4ef854fb6f0d806cf0c534e5858affcd034012ca5d78df79ba5b10eee3328e8cb70b46a070adc19817d26722226895e15a25bc38cfe92059a45c1e991d859e5dab2e09359fedcee47e8b50cc64553e50b63a2262d84d3183f2c7291a912422c203e256e7c1fc8b10b17dc04acc9e178fb7f4ca09e676f0ec7926942a0baea2295426b56191f143cc46dc2fa255d3541a84fd0f4b24b5f666e92699b061a73f87265110ca4ee019a043ff2e41cffb0c729819c7dd1c6f52284d5daa7053d20285d2cf3c2ea5b487b68fd02a1ee50fbf6a3c6729fd22a900e9d2ebec90705c8b1b4806d03391c0b66eed0919c60427398a46dc03e4afea47dba277a4c53d70e3d2ad60b44b41d4ace8176016aba3804b0f3e20952bc4e3016aee60304f6028713a38fc55cbed4096a252d448f24ba4b10091cf17507552d9bf04870571ea6c8fe41c4e6d3af03017c7f49a4e85634cfb07d43cd69e69818a8568b5506385c1592bbb6d29b7945b4a9964da01eb020603e60252f414343c31b4b75cd20aa13dfc7c8892a6f54bece1d7cfb742cd4e6fd56fbd4ea904233bcc755dc6dc05652cca02df3231be5a920afa628666efbdb7a780ceffd3a7b28655827bbd766e69daf331c8be19a1899a180944a1fddba8d4920cf6b640d3b42449f6b7f31f3e094bd1e297f2dfee9a229a5827b75d99c448d687b18c87657394d7c1ddc6a4e7791d0cc284be7274ab95b3453fce59f452befcff2f92ad229651ce91ecc1e2b1a137802490d4913b32674846e444da58966c598973613029da756c8680a5ffefbe3646caa7384758b28f0f6fccedae03bd0966c09770265ef2deeb3adcf87f417a9efce4e2c30f1d51b468e86fcfd87d846a6ee4b179648c2099647f94ca232ae9d16db952b45a7f527c1616db96eb662f873d63e7fcbaf5cdabcbd48fbb4f71204e34a48945f8803474d783d61f2a8a9428425fc0f04b1be99b0d38e8c8639c2969e76aabf2c67dfc93cfe850a98c18193204045ffff6ede4b27af2f14796d713cb7df3c060d13e06a81f14c0c31a6bbc3107c5e306f000fdf953ea4f5a2b7d5b59310f1d0abbd1e49ce3d0248f8aa65121a5bd9fe0200dcc74af090a36e0e0cc4e88d19c2093c9643432994cb669321abf3d60d9831aed8f0472a3cf89de9132c71e69cfb284a63433bf71be5bdfd5d4f0d5b9a0c439010da128a92143403080006c11da436bb516a594bbc8a57f455a76648873d069b4c7a052e5ca9451a443145f7cf1453c8ee3e8094129d1ef1234ba82117dfbe88aeed4a420117ab24e7fc0bbe5f7dd74b3dce6fc27ad9bfd3ea739d32e6fa47cbd8c75eebccdc5c5858235773693b8ece5ac49b945bbe4fae387a5f3e412dcb4b0a185e259d67e5fc6aee9d4060ed126b8b14aec97a4dbe64988045255e4bfbcf1dcde17d32dec345fd0ed6ee74fff6f53bb9d332b637022a13ba2500ba17fdf20b077b6ab57f4fbdbfdf6595a7f5b81d8afee6df9f7f967699afde1468a097d048a234f6cd4919e2a52578a5829122b0308d60231bbb1dd01011bf75e8627cdab343c26e8fdd8d10199956f5e72eb256b51c76a648b525f68f0764c9c1812baa044f73caff7cc4ab9d05f4bf1ecdaea421c77edb679912a9925e6e0d94e758d3ca6d771e25a854abce84b8dd5b1caea0ccf6818be343a7490b43098687a67c00b5adf89277a7cb4085e46145c8a9512b02338b37c28db5027da365ac73abae8432e66964e6b099b1c249f0160bdd497f9c4c913274f7a3421d45f46f95265833f73503ba6d6ce1110dad472771316131615522693c904408ec9f442070039b7c5049a5a2f33fd327b3199dcc12023550cb1308e1d4bd51030decac2e6e8788b829a6c9e5aad56ab0544abb5c92bc5dafda9c9c156532a796d6c792b200ea8e82a9a0b441b08c52cd940144531068542a150620c9426dc8df0acff01289e074585186a5a7861e637d4c1821e6e434e0e96156aecaf309bcd66b666369bcd6a5c60bceb8dd09ef6346c85f6d15aadfd65b5f69931a8b7979773f38362ddb474b0c4e0638c4313814cc2d32d0820d0a2256b8097962c0d771f113e49993503a85b4473c0fe40698edb5a4a89b3cc272fca5be2ec45524a2931283b992596def6485de6aedd2a7db0a6462666c9bb5c785c743170f744e5e406076c6e6a987a2747bf64d8444fd68d0d094c401081280e2ab3862c1c270313a20fc9f739e0488c6b5c77d9414b30f467af010834f9a1514a1b954339779d2492b02ebfcb190c6ee32d7b89aead175b6cabdd288d97f0ef2e6172687a13d711acfbd45218ec2fb54d88369eed527b2f3833c51453646025abdbf67fcb90adeeb6beac973cf646bae4ebda78244d532035bbcc62b9fc11933f90384ce9bdb4d620c7beb2452d3c88337d5a0a727be79cb32531d5cb1970d2f7ffce9e0167810d411286844f9ccf92127a0bb1a8a9addc08df4fef410ebbf9bebd51a8226a68cee7db8d5582cdef561d6a4641ed2b95fc419f59bae0d0e599e7d420f6a6d03ea3b5a433249830da5165da2088b835dc7b33e66ece98bb96482ae4e49d734e21ff2692149126c635becfed0054b43bce411389a20acfc2bdd0867ce8e5337fce1e9f300cc3add2198637747edf932fad681ccaf744fbb88c89b3988cc68ee48e0ca59014daaa2c9af247be64f82383a46bfa943cbed587fd9e813dec61ffffffffffffffff41e1b3acb5324e6f2fe1c1544bbf14152d84c8ec24055164dddff7a5beef9bcdc149a26f25458449e2b7cd6e1b0c46d3b4d5f625594d41838d7bbfeffb66d23e41baa47bbf02be0f42c0f7fd773580a900032de8f7b5ff247b37ce39efcc9d6632e646e09224f93a7ce24ed76e5f232f1f94fa5ed9ef9b9a6fce4ae0c1ed3749e74f4ae76f6a6758bfcd5b93bae79c33d36d1b1275b6397ddbd35f0e3b24a5a4db6e3bf76655301950bad9ff13a775cabe910734289a942538ce5a3ba79576885b042513420776ce396fa5f36e95ce4dd629ddd8ada152c1e0ea516dd9858bbca1f3f8dfdeaf52161c9d73b291ca662c398bb33a9651a9076721abb5eb33ce12e657ced926a39085562efba3e7b67f66ed6ef2985d3996651bb574dbc61a65c27e8c22d3de33ca95ac1efda65df8c27896591567d9e8388eb2a0efdb5a75dc743617960cc8dcd1d0e5e4c7a7278a30bba8e0e10955631876383159d70a7f423ceb6e3a9ca1eea60bc39c4731c7aaac8e355667dd4ff792f9908f2e7ad1d0d05091904d64e3ecca47a0507844924a5523958b7574f72af54a1d550f671db94014a3da6c369b2af3a33a5636fce8627c7251d7d1451763445114c53ad6b103b12812fba95a4d9444fd6f39abfc39e7743664ad99ce39c3dc2e6b9dd5eb9c81ceed9b755b6a800b081c4625158f23af235480412016a620a754108b798ce02cb0b623a64ca6f0f582c74cf39f6d0a02bed8a1692f7b7842266c42f1bcbcccb41b13cbcbc8414bd04b500bac45ebc47025339bc020a089278929c7644a85a1fd45261b18e06e6c352845dad02fb3335cf9e60bc6d639cdd25aba6db5d68d523be7fde7a4c459002bc06fb0ca2cf895a491a9140464f6b20110bf007ebcdd7237e79c73da4cda94526abdb1d64ab9acb76de330ce2ddb7ecef90a699789bbdb711b6b0ad8935b2b02e002818025f007a85922c9f533bcedff56e065073ea1cf132852a6d0300c434ac3b08e2ff31d3f504aa99128e89c734e5a0af24d4823690d6d8b9e1f7a5042c3664514251de8c40def85a2a9a404dd3b3424120d7925aa5a07d2c80674b711d8f87dee931b14ce3083f42d23e3b9f6c0dbdd9fe44c0c496e307a3787e9c69e472bd3b34d6714a7ac4a077db018ac7d0653d8a73da73ddd281726def0de2a6e16d78bed0edda1fbba3e7f74c3ebe337ac748a7fc31b32a149a3cb156e61ec0df2ed509ff37a0417b761e9d3cdb9b004385d108689bef76e1d7b1de8b60c000eb118ebe8e858242a9c46eb07205e0948c91b6fbddb73f0e9210d6e871b6848f55c21428913168916ff3f9bb2e4bd0e4f13ed25ed954aa52d438bcbfbbbfb77a492974a74cb50da416aad4edd37cc93f07bd9cb3f5c6ac6976dfb1c1c3a3bb15874cb75efafc0ea783de6fff86cfce83f563adffbf1c74dc3542a6c158c054b62988450c5c5374a733a7628b6c36c0b2909e9f9755badbfeffff495b456a9acce7ccc78417a66abffee7f3327ad19b8e5f7a69a6a970c3d8f47f67819a4b4868803dd6dab5eb285a064ac886e05e765f79c4f222e4c244fcf0cc8efd2ef1fbf5bbe65bafc9e2d44a9a1d7cc98d45dec652f933aee4b70ff4935a297332638a38b35632528630f7f0e5979b57038cf18e604e604d6e33b9605255dd22579647b4c9292794b4c66343b1a1faf522e9399884bba5c9774e9cbf54765291528553429f40aa547948a5328a5d4524a290f9ef37abf55fad7b7abdc5d93579c7f8343bdbf29d212c942bd4cdd344646686e55a6c88a52d76319ad0ee17b5adfd94f2d9ccde671bc924c66347bbaa9c6b3a39b82292f4af41ff6a7ec06ebdd3d05277d333d5f3672d86651bc5cbc5eaf172743f9235f12283f6b0b5d52ba72b73338b76e93be0e571995b6c91046fbf71d6365b65a8224890cb999f1695e5a0b58795d68bff11b6fe9c0f15382c160575830184cc4808b590d0cce928d40808080e0e80102028ab23191339246ba317b792c6353c6a44c1a6d95bb5eb7ad4ec7328bc56495a0a8d4ae1a560224f355000c12060442a1480e647122544e4a1e94414604a2910b154dc3a1c8180e813804418c650c33c6100280c800c1086d04d579f1e68cfeeccf5316d341929ffb598b1ec0f4fe16a523d0ea265c0af61313a869d51024d6fc958fe3fb29ec7f86434bac682db5759c88d7f469232b0f887cd2810d14827a53a22b38662c9f3ba8658778567f067017ad54f97e18575f1e5ce2c8fab3a0b78cf75529c7fe1178fd404e530bfe9b2331d91fcf3fcba5c3aac76b76bbc3ac66a7364278142c1ad7070d7f4f5c5450d453e36f15c7dd586ebe9196dba7722ae3954d926b6bc37e2811d2ad28ff15a321bfe61e10d27f772b72c308fdffc453272b25aec90268b628b2e63249ff0fb82468e06737d4c1b1701d0cfe7d88a56d4c2e8aead24b21b053901c19c878e1a5adaaa502885f282cb7c3ea71a57a22bf523db7be071f1854599de55fe870451fa063d321a6865c54eb14d99d992ffecbd9abd401658bd20a88ab740c8b5207cff5fd1b20f9cc0518636feba2915b90a185ac29452da3dffff9734d85b6f95c355fe8c2700793fb9e443bd988457b621af29bde6fcdc6b97006f11ef3ca9fd60be2e92d3b5130656da37b2bd897e2166cfd05a569dea8aaeda30edd31d272d8e32147d2af7229d1c6bf619bfd5e576889a01429bb3b68add72e82f6e6ce3ceb1df2a64ab503a9a8559c17e58b08d3f678fab35d3c182b8223756d0102c63a74ca6c45c99b885cf9907b98e5ea75b404aa43ea33e34d748bb0ab50d22c14f1b5f8c1b313c1fc83309b52ddbd627ac5c540947df180f03f7f9a755dbcec4e26e35149ee4989fae2aa30e4c0ea9abe9aa52702d62c5c83f61eb8fc2842ccfd640a461abb5cba8fd6f5c30e0daebc0ae346e260cb09089cec42d753322b5343cec63325a4ef23e24f3db6a9a88cee3d7a4bb7569950ad34dcd6cc4c4ff04dfe7dc37ae26e276b06aa1d2d2d66d52ee33f365665e3b5e4f65595bc46c7487f284ec393e4b7016420bff56cc3f15bf3ac19bfe5e4e7208331ea0f390c84ba128c9a4746de53cffafa558b6a635f8defc8a44b0caead5ae758fd756c73a4befe0f05bae7e69070d5fb620cb5bdd259c2361bb0a80369211eda8055f71f4eeefb5a4381ee9ef5751b131aaceae3fa542ec082f6f5d845d89af0ea33d7dbe50f718367d2d8eb51a6359030e6a7e879e073b957c930ea5459c9cdfca2fb5f6aded4701ab0693776cfa7116e33281276a6fae5db5582c0dc1af57e9db6757f4b4cb14231d945a2a3add85de9bddd05f792c0d59814fbfc9193b208e890fef448bc2c1437d92308f31e71b2b7f9159f4ede0f8c4b5cee874014fa4e9a7270e4569b009766438fc4e1158692ddee0f790dafe6e6e3826514ecc314c54fe80a7bd63e13d1dfa9fe4dc8e4ff376d4c6808655a2d509b88f240d924155102a9c62591294aab882370ac7b091184bfcce301b18d009b0fd520024b736d9ba6eb4e9772b9c1ef6c1ae5e269c49bf8c955c3a9055241d4c8d98faab1809623c506ed15957f6afd96c92064a95abfed47da2d5c89a566c631389484ab6fc381490321cad6e51ce9945f626befec0c8177768cfe8f9d3eb3509aa6fb69e7ce92fa83b56833cb2a18a1d2e8030b22f73f1a9ad4d9b2db1c214f2da6fc9608407938a1a817484d3a586dbf88f0c1c45e64e3e32c8e746688072bca33fca2f00bd77012d1e44a9a816961bb14482024895ed8c33ca29ce93ce61ae8975b5f076864848e9d2d620935e69348a12690a70d423679ed68dabe62e0e440bf06ab718af390d5c6c5922008dc6a27bf181bd06fd814ddc0244727a462a40ac2242c22cb4e319aa2e4ac7fbe595efca8277a5da28dd734774d9aec1e6b4247d0b846fecf96083e22e141d5095714958d7c6e0df80d4d8018a12e0a7482c7d4a8cfeb23264a4ff4d64c00b5cb6c48e0448de16820cb61ffc567a5e27a34c25a9b78995dc0c2c5cf35293c5e935737268db067bec24664efb98b53b980e5ec8cf9e59d58eaec74dc94ea91ad651210e3c25c24084edd92898b0976920ae3d0f421f4a5332da48723bf2ec30c882b620f7b50a980fdc898b1bbc86f54c08b6c260347ddce085fd86dd84fb281a3d794cb88cf91cc3ba17b1ad4c3d332dd9a9fab75a89ef9e4904d8f780f37033173f2b705440d71c3163e1ea20d27f028da0859e778db07fd91e6c3bcd8c535fcadf1f63d64158acb91dde5cd88bcad4fa88b6088f3c4a545276f68a4db389004ffe5182bc5f8519637a64798a48936fa00d5eddb9b4d35615879176f15d93675ee0430359092c6ec19b3734e1b6f81d6de5d7c5164408fed3082c5e5a0c9d4ecb700b4b86d6d223ef8525a80763c1acb2fd5e1262fae6fb653be94f45769dd2dd43cae86fa4f091b45ae2b7319953a51320286895555139d60d08619ad3a1ccd212fb7ab736f57a6b7e52673102c3c399792edfcb8c2b373aa7a28a520477f6aa0e2d0c18736686bdad05e27e30044dda39e72a934ffb6f668e7da146700c2e1bb5847cefeaff05f8c351c91da1e469150e064a38dd19274c6410251d0359a06dbbe7d8c73313aa21b6b7c3ba7241b1b72c6c3e386ff8a39eda50c6ba76552995d951c29fdd2ec7bd89c55d528536c296a27b98261256098a35b73a964238dabf633b56603b2df91e145f54a2ec250ebc5160334875003d3da73663c7e0d2e37f1b34947a02eaeb729daa75b034d825bec8fa9dded5eaaec859d5da7e5dbded3e9729892bbbec85d683b53af074b2add1083a637fe93a479bca1f96b115c9b174d35679987228020c0a78be961be275c0baeebede7151da0cf084b053e7b39867c1837ccadbb698cd98617e17fff9003d1bd5fe800f834f861dbb490931c0877d52b2d7a095c0f1be37d4ada2a84b2b2b1531fd3e00867948280e9e5027e0c670ee7fb0029414a1dddd8b37e774133d9a59b5d086580fd0106eb1fdd1b017ebe2889994a13ec2b4a90ff319ceac439184ce2b4391365a80d18818a0859e59a601c2a507a18948688a114ec1d8d7fd2cd059da8865c1c4751564c2ad7936f03b6eed6748c03b6bf569aa9b1b62f44e9af955682a5533c420fb3d6af9ef8ae4acbdaff94f5173341aa4df55a6fb8d62156b3d3ba7246a575a589551dad8b2c4fb8c9a3697d68cbecd124301ab4b496e2967f41cd00ea7213ad0f6f74d30a6ef99f23de68051d009963ea61866e19a37e777a1c24938b2491bec96308cb4bce2c7334d4e51e788511f6a5fe02092cbbd91bcd5ee9925ba06a3700a1006caae1f9697e5a850cd3c9aeec5daa446d5c9840961323fdcee90621a9ffe9d25b4ddaac89710212569a7a92c1a3b20b693cb74925be3edff436183f91c9988bca2fe7badca088ff6c1ee2bd3bf05b0e1fa1de62fa8ae8332706a8e90be2cb67fcc4f48c55adfea6a897983d73282fe8d077d52430abfea0baa399679b2b8d1dea545504b0b10dab3c585f49fac8c6a6c1c23100065087a26939eba61ea9180d012287e023703dbccdfc540d5c96814bc0c9a2180fcb691c601ae8d18c560fba5d7d682c64bca10ca39d7009546511fb5855e61c8a08a28824152e18704f0bc2aeb4b3947f015df266000a99e72349433964159e23cf5654237ae334995ecc0a0ae515cd0ca68e639e94078a31bb7267f0b3f0ec3d82329748401a1e9e5c3f9b533759876375af4d46bfe0bf0b564f9b4a410f673c329de298138fec8b61a9dcb1a547c5ebe310c431788536cb86d52b793ee84182de34dbffb3ebd977e18d676320662ed20ed295c05373c1fa6e61f7a81f3761dc5ae7c212d91dd8a854aa5cdf234ffafb6ddc363a831829a7c5423b9a4c058cca8efeaf0c1fb4fe7b658d46b10c7afaa871292d26a7999e7adf9939a6db33fd890dbbfa8e16953bc7c2a2176196d8db34bbb066774a1565de03cc152aca824618816f5eb678fc368e325f6afcaf6a15ae550ed65532b474ca52c84cd91b41fdb75bdde601086cce5a36cc1a2bb3a3c60db0ad6b94196bdf95416b570709ff4e8230b4966b0cfc1c6beeda092714a6db4c1c525f4896fce2d6848335adca8f67113b61af5bc6f8d977e9d31c9a6177d3d1d5925a6aa2c4cd4de240f51e237a536b0ff728e63357e898f2bdd10ba5621b9d8631638faed059d6bf61f46d5cfdf9adc6b4440dc2e506bdc3717cc1bab9c588dc12d68bee7b9c69161b9750e393e24384bbad56e1c1019d0038eeea384c6a571c25227a1fee86f23c9cf9b2dc5971ad40831bc2021bd4dd36e79986b7b146c8ad412548389340aeee973901f16045d8ce088bf88a09114226050cc2e1a2c773f04a60de64e0ebc3f3860617aa45fc3dc209609c5959e1d3ef46969454712c51fa59030548d1e92e10819084897e3b812e37d484435e07ffad82a6c5d04d001d298c57924bb93786b1e7dd1c1ccf20b5dc8553896d88a331649fad54b727a3801882d2b5a9821dec1e3d7b56082cc8797f94f6367e504ab6af5926fa3a3b3f8f56a96778e307b208cee873b460200fb6de5bb0f4bcb63df01321ab989b0cb3f33f1d2f6b4aadc2ae8c004bc2380f906374a722cc498b3ad714831df4984e124a687811320e8aa728a052844bfebe097a6b0a956807af7a1d064ba8bca1ca9a5e00b9b0708492cd93e3caf165409eb5064b23e1b7c0cd4fd38254fd4bd7d55998a2c8ddcef3339a63e746116ea54a163e44e4281e9e1e52d16e11c5912184bcb74c272a683e0a442aad34dfaf36eba08684587e6179b25ff96b5b9d86af25449cfdebd95cd32a5052eabe935586d92c977cdd21894681762b164666e3123455d3644a3cf1daaebffbbf7aa0ed1fb1b5dc05243c194d26294e5c369df570cd6abd6a60da7d4a06a28c0d6b36fccdd0317576b65225cd952fbb771914e03d79706d9b1b5c68190c8290546fb00f0b0ea2c3bcaf6a7e9ddcef1ca03e0bc956f9e626bc1fc781cb9d68f7768142a1bfadf769261672d802c7456227d769fc9652e9dccd390f7cd8a2f6a8028738b62c14dead367b371bfb7d378e31d6c24e26791e64060a6fdee39c6ad59216d0dde88ed1c9ddc0af9133d941464c3edcbe948d23b0c1417fa1322272e4116c4992d79ce6a0791ecfa14cf19e51738d7504cd2a476f57a0d6fb3db7c9a06ecba0dd061e60e2d0bcbd9d02a84c0025d25e8aadb1bdab0100e733faef427c7616fb9e584a52ef7928bde35b9f846ea711c6741df5031bf0a1d00959b6a74fb3154060f19c9d53cab7bb7a18e3af5ddf1ed4e00b6d1496f4c9250fd45eacf1ee5aef4024c67d67bff72e2692f6ad643f3a753bee5d50ef367e8beb72307ab516000c860c35c316cdac3ca1063782d216096ab0d1ad927934f5f962158d0e79ecc924f15856e212bb85d90f857c5543f91076e16cc8284647893450e1460d8e916d8e0a138227ff0c4175fcfd9c183052527c91b07522262f44ec0f2ddaf2367b083583217ba3b99c0b52ccb166c277027cb2fccf894b20ab8fbbf2e4579d85d57f16354c55d75377df5686faa0b9efe0aae45280e9743eb66d4e8a2e091f9aec9ccb79475cbbc566f09875921b65a2c4d6324b54cc4032727fe41d5602c3216442f901dcb00c4f3b3494102f987aea788ae04b6a4eda458bbcf5589bf36eaf4356a4035104d12458b805e4b6c3b000e2ddb694e35c51cc75dbf2541838a9403b836a68d696af72d013eb95f06eaa0d83405e92f361fe4ce185ee3ed9c6f76c4361d0365093018270560976882c806b2a80c97ab4c369f364d76616b5d5dffa0ddc7c19cfae044b9a0c85198dbeed6a0379f773195b162ce56b1aa515a3724edcc8acca161b1e109fae41bea08da98436fd19da78739d9527672096e40391d02d47b86028b121d0494caecfaa3d1248e31917543fcad3f0fab6beda34abf77a71bfdc2d9d8f72fbd02832697268599c05c631a8fbb8c7f6fb6b5dad601f56d1768db2d1aa65307d93e277d892edf2dc77578a1790fe48320d35a47def129241fa9b6c49c78819adb37b05b30c4c05a4297335f65b0c283aa23a7a4742ae347967dc6fe0d866e26f4d6e5a2bad3a53d543d813d1a38d1d81cb13d86bc316e8057e50cef6011155217935dc64eb2a4808c406f0b8c3669911819015b67faecfdaaadaac42d0b6ca2c452ec6940ca65aa36de67b8d329df7a217e2d9d62ab440108c3efbb426bbef4af5a613277fbc98801714821a22e1faaaee1fe7f1f3953779ca4bee42aa3cb0d19568575017e21f6c49e905e05e11bd58d209de20f289de636f1e68520a382c94e81712cce6285c2642a8f6109b55709c4f782b767fa23920bd60aa6a491ead280e82c6fb002b4f490f8e87ddedb4bfdef0b57f552a0ed544a35b63643bd549d499af0462a0e3eb7c901be6cab7628cdecf642ab72f5890ad0386847af0487874f87f7b59d8cd05c8480c41a6a60cbcb6f5049e26c2ee33b5c11d518438d96c2c08f0f2716deda2d05791b7997822725dc94f2cb0d72783fb1789b00b4afe571ec704f3f1ec3a11357b08130c8542b8505def9440c344d59907e61a0f49497f4909e5d69ae5164d2e31eb270a7f2c56e40ed5644d1ab891c12402832969adb1db8ca3becd1514686ace5508f7f4f34aa28d67ed690c714f45028ec4b929425308c468e919be06669d04cdba57be1fb946a2f1b2e20dc9da8cb300d55aa1dbfa818ace73a34af36b7698f26ab9d56f3ef10087dae743020c042cbf500b0da4136d0bcedbcdd4c7bd1abb4c1891e60a09a5d2f73d91108c8199ed330594340d81e6381b4222811b3a8853f2f490c1cf8c00ce4a0067048a0d446b3d5195005c85dac8fb61648b203bb35f1b1d0699b0611d70df01928c19022f2f6676891d8ca41d5b0df88b8493d0735113dcc697054a122eb6964967398b02e6045b6247457c296443227c36ec663cd45f15ff1a59f74101f7b99b4f8871e0bb773e04550b86c25ee967903017838d49453332338ed893c91094f4d524379848ffc49abc5a7aa9755d55c82cb1c6e9eaf8c05ef038c1cc7225958a3e51b12cc97268b5144837efb745f386e228523b565c33d8da23ec049c349392ae3c6c98199cdfc234d74f8c24153b224ac1cdbee9d9abd4550a5619ae6cc15dc1f9522dcca8881b9dfa2300d3f8f562c8a7f5c36485832d8f60c179ac765f1b274d61073b5ff51cfa612186413afec4fda16d9c95dbb8e25f8e451cd0122bdb3c35c5c76ece551ff1067e6ead87f53386064d66e63132e97bcb8b5273c48d3968c558c716f2e16abc6f2f80f3dfa884c990b13d3044ddda2169d6519d9837f8ae4192a4dc878b41bc20642d5277d160869f129771d9a92a337d08c32d6f2745c7d240f78e4d1d96ac65501777479a8ed6ed8e97de14ba55afa430f87e4a6a864b31d364d7ea3a7823850229860a9f965006566816931ea2b3a6341a84ccd522c4bcf584ee180d80b59efe5146c3226285c9ea53fb2b469708f4a7a4c6f5b5a124ad6ce8f7468ca25b4bf9068badc5390ba1b59a2e52e229250068d41450cc056d79a433c61394f47b95bf1c94745ca96ce5027dfe190e6e1bdf1985c3fb64cc54c138ded41d1ed8e7b2819c9ba3380148e8bae49ea2885b71d9723bb90ab6bff28e2a9b837d53d3d7d35e2f264dfb6dfa18eb5d2a5e575a7751bf332721fb9109434d7147fe53f30a06e1f42c7dc323d79dfe164e7f6dbbf9f8b3a9fd5d6cd5441c71afa9c7529805fff5b9f00789620eb4e5eceb02ce88c32903ee12ea40539b227457cc8e3d32e6528e4e5bc81bc473ea42cf2d8773a4ce2a4b4ea57744bd1a9a8d19e93449d1ac91902c8324438aa075bd997360eb03a5144fb93f104744f78b512261fc2849b81f4e1338e2b70f02f632c82422dd3bdc13c06f547195709af67b025ea803fbee5861134d9484a0c61638b2a35a7b29946065ffc0eeb730ade9e60516c2588106146d74707ac6d85abe0f9889c0560e6b5e80d18cea50fad04860227b78ac161d7007688fe118e6410804066e63f1e4f6815665b9b399b540626c8e852f1a1f23c95143b0c06542d900115c61f3d1c4cb9bf2eaacc795d2af0abae103a6a73e0cf407400b4aa72669e2f20fed546b2f274e39d7507a3aee8d2524de9d42ddcd72483b0f90ce864eb9a68741a9e92eedb7737835986c747436a53e4002e9a01d374f6e56077a93c4d45cf95f5b89f799c75e549aaa408b58fad4eed4c9fc88f5f81633e54652222cd7c5f9b4dc95eaae88fe235408e70df659846bf97c05f18df792c5db220c0a9ba997db7edb9746a33efa5d4a40bd14f974b780430057768db1c82affdb76049df1617c5190dbd7893810620f56d39278947f0d3986d59e6abd7e1f1e231367dd5fe8c7766824d6ce8e96a1788af139b7590b31e8dbf1bac7dfd743c2aa9762b8a29d3f5a61e10ae57cd347a643b9d8f5f32fd21e797abbb01dc928456f8fd00fc2d331fbba7bf84caa80992af0ba37cbcb7dff0d1b1c0446b3ac19a4493779119e099dd50a9da10705bd3ee82394982d0148792d753706dee4e0133e8adb9b4e32c5ee0271690dde910ad9181ce08f97cff134ea129baf5c50389853288a7c001cb2a3e4d73750f32185b6d5dc1563d261a6a68ec460a8f89f7d166099b56a8e08d38c5426f4236382217cc2673e43f31a82a30051537c3b23cf51aaf15add3d06ec4c2e88e57326a9ab19780b3981fee587ffd62c4ff8a228db2b7249db5bd2bf9c689a987a4dcd9fa197ebaf85522c925a8b97173b2b9bbf0a50a8120dd5f9049674aba58706976c0ce14c96a04ecf303164b9515febe1791c918f93ba740ec4846627c2d9a8ad46dd4e5f5f54ba1b64c557d7ee4b5eb4fa19bb4440be55d55d7bdbf78989b933daf1ddd270565fc4c7f1f7cd20a6473cb07096f3f0f13c679663f2e542f3465b67a1a66712f96003711f5d13ca4495befc9db6314a84a44c266a696fb074a244d5d391bfdb0a8000e82eaeafdb4e651b27528a25260f1310e873960ab39370ede9bc12054976b1c76afff9f7ac916865b634af7a24381740410e4c3b2222194ca67d7fb4714af68b749006aa508a4983740f92acacb7119a50bc360e52bdd95f79f0bc9f18ff721d40f281461149168880410f489acf31f9e2f3881c96ec6aa911cafeede20db8429d8c884f37ee227deedecf8481e6fe15d011bc986076512404f5319bdb89f17f5117563c8b95972a14a948fa861dc4aecc751409d669c26b0f5e303fc9782909cc9fdbc1422efc421ca101f54c0e941ab78cb471181c5b518be80a26ab7db31284c164cdb47f7751ac7711a15135e9f869d9ed1924a89e8052a343905ada769e7c7d2a9e962d338d6875315f20d0bedc58afa7d68b83ade1e9553fe28dede7ccf144c3e6b2427bd7d791a2849dac70e842a7febd626504e7bc3d7a4278194e0ddce344c1c32707fb4aace7dc20a39159610c75d10ec781fcc6b939d31cdf379a7e0bde16525b606da46f9622f08e0b6f50b282002b425cdb85a51c831d2e124cfb92bd03dabf0aec268311223c47faf8ea52ad8cfd1dc6bdc0b7fca71ab609eaefb9fded2069d2b63e100a0c454719529754a0e4018117f53d0ee13e2379e8dbc6fb00d9aaea7350acfeab9634b4a882aa077858a51b27b60423ed54fbb3bb0ff9ffaa5b3682e0734fa9b9e5138b1e1e6a2ec280a7be8abaf32497b21471d450ea08c54949e8a6a48547e496392b768d9d1f773858a13730d41baffc951c2d29b23a290160aa2eeb814a35cb26a591adb6d47fa246ae8e71e5241ae44baf032ea9bc97a35da867bc79ba08384ddd4fafb506b7e51d7a497fc2e95f4f2f96d89843656a727b9f622fadfe33cbe236b53514f34db7d15784de2fc47b3666475075fce077ae2ae7c14fe3c00012a8226ea9b45f8ad0b679a7623eb90586c35aa0e6389b3862e1aef8d602f3ad078088525eef1013683a078d1358edb14f5e8e2bcb48670bd44c6eea65aa49bdb50fa8555c6ed04e7e4c7995cf16343885dd0759ab75122db050283a342e7c264f4389191a0ef2e200d641c95f80f26724bd3c694f3509f10f578bf06eeb947c891beae2317e9d631228a3ea7884b254495fd6029d55e7beeaf9aa78268e62ac95b41f4a15e16ab74428149aa487fc114b2e751f133b1ff10870bbab68b23bd46102c0c7bac8ec1cc288f6ceaeab484f7991bb1fee81411290d1d3605cc5d03ea45355e85b34a6b55f2a722788b33b5c073a5f022c2c9a3ab87f2163bffd3d800beef6e7c9b0bd3db6b91d68ebde4771eb5939afea5c5ce612740bf05752499e63e5858ed3900ae0d96516b9b0ec999b9682135133554bfa869eb3b709c20f0aea50992e6aad63dfe00734f0bffa4926ce0e31c04f346cb97cc94c6cbce760b08bd621c42016a09fccb599ec569562c1ecac0a00352593e815a01916ede394e8f104bd82c35f17161ebae4c25fa72d6ae691ea4a0614cb8bd93da086ee8858df561a60a99bb18c35d65dc3bc7b441a0c6514f5d51a4ef6771d033e035aab2fbab4df0895a73011cf8bcf94c217a3aebaeb39afedffc51f8d05bb1717d00a43aa0441046d777e72c1b9b3df6dfd5075de6bb87e12fcce3dd55ba2c9224a240b2fc4ec4f9c8786cc70f4d5bd49b66718f80a11e4f5b20cf7acf7ba876573803850dccc2f4050e223287754b4e0468eba019c1cba569e77db53dbdbedc4aa71c5b96099d877eeb24cd90183ba8e81aed9385dfacc4143b165bb6bad7b368a167b80e7ad71415274fa2bff2fc88c12778d2e0743379d4350a9d955575c8dea74dab0b5fb1e053181d23baa7d918614d79415f5b8deb6a29dace706f78a6c18b58d89415fcb1042b1f3f61b7863d27e20d9e1c6340c99a24ed7031db63cdbcca3afb452d447c8a3607d6647b640cd43d66bda82fa551a1060d05928213511c91d73938223d1c98d89fe4c1b3c426c22067f0b1851c51eb2abc580a691aa04e6ef28dd98dc396366ffc604043cfd89f7dd989ed5e02b28d517d3910a697580a862c508f7eb05827a08dd70ba4620988e03d3f06939fee1b52bedcc82dcef5115839fd9d5adbba40a6c7cd66b6f83c35775e89107f9aa5b40205ba85e849628e62f47545c44eb59189fbbc9d647e676ad2572af15bf3417d6b5328954f17d023b9a08b8f5b4514a757836b653603c090e479516ace6e86efb63f137cadb5ef73ba6f6dbb8a5560158f704ce2d9d30e0d36cc35d3620f8fc4d9d4ad4d0575f08ae22a12ba4a202f920a1ed1782a61b9e75ba55d509a34eabdd2cb45c3c191c0ccca6798948b636d847d8b18120bade3c3568bba69c9652670875f4ce01a17d0199462b526e032a8ec9d776a90c1452e9be25b6a7f0b4c1f19289323d849f035fd325013c8eceb662e495586f365b00b5a081fb778b7b0f63ef7d0263b91bfc3aca8c8e29f7a598c9d88c3c39dcc797c1d5e74fc5d71f377a549abac3d5b96e7c3ffd1dba7b3e6518f29c0b875a12dc810c8bb073da490c7a27d44fd327e41cefcb29c9c111c590dba14abbe09eeef2f31242840857f2a63fec09f0a63c2f63ce96dafad7d9b1fd498a6b94fdf656a267f9f95e520614a512842c9a24971f87a8bc973c280093559c08daff017e44c4dadcf1370890ae022074a722954f05ada8f546c3c8b954c0547564a1e6f2ab323542bc1839775bd29a44f256c918e9a2fe3db50abf7d8dbeed4baeeb7544924f624d3ad1a7cf3eb807eb8b8a2e73dd1950d59d5f7cdca38802550030267ff9cb015464a41c8a89f1ffea8064035444b4a4838d50eec940d626eb51446f32067aaa951e7aa28ebaccbfa39fc8fc3925340c1d134b00b4e12343afbd22352e137e6e4fb13534f67fe6cef4966ac67b5a3dac956937e3c650cb4cd8b784a64639b46c5873bb213795dbc043200dc5a37143df3bef4156fad1aa681f9fec865227394d9ee4e5929262926aefd0b3a3e0263b9cc3ee0fdb4a1d4117d200f257389b3e2de39c8ee1fae8da6e066d99738fc120ad81adfe7519988d9524c60a1106bb4270dc560d0ea62bd6834cfbdab312d3f500bd96bcd7e2f5b58d31417c5f76b14fabc4e124e7259d4dac99a54621ead0501f945958212e57553f587e8c0a21838d24e6567fe06c3147b7a66aaefa9a702b01054a5a2b3f975653797852cac9b9d781803d1bc2a5002b1b341809115c78d9e5c3095f85f1f4a985669c1bc8aa010a460cc6d8716a199a28d4d911786a41909ac59bb3006344f3588d60735c1b727d6f5e9975cd6a7c910ebeae944db22d1dfecf78a5fee0dcd79de3da1d7701c4630ceeb8392ec3b054087d6fef8d1f1ddd6e3bb982034c150b22c7ce182ebe7b1c3f639546cb56ccec68247080f227dd842e4ed8f25c19f6a3c144710c2998eb461fb6d98185938fa19179f7c6528447a1a711fe576efbdb185128af828b4f7e525a06320ae8d747c3468afe7542a56ed1dc2ac32b2f8ffea6065b5aea7e163261ce40ed0f58a775b5b6bb7925a2e9307a966e46960971bc699dbdd43a91709e97b4dd7ce87f7647dd2e1b4037cf38ff890d41c7cd6fd2fe13ab485403decccef883e4b605f6972123a4b6719f780f5bdb8633d1872d00c53f59dda66b63b88826a06be50dd2b27928eec6b063eae8be455fcf1919e486f267668f659b49bc1283e2c62884407791d9cc68afb7da91f090c5ebe3ea09c62d34a04611c8fdb2a5aebf8570d21fa7493d25664ab6b6f293687bda6bf4015dfa31b2f40dade9883109ddfc0a99f28494664f6237bbbfded3c72d0b334c6934f57b85f8ed777ed6e2bf6bd0b43485b627b67ab0a8ed5d8574d32616d5a238d4a8f250baedece3e48569a590730c7101f10ea247f13b4eced62329ce2c5911485f572c4bf24c71ceae2f31013b137ad8b953f809064073c8468281b195fcdbf9e9312d4d44d96a3dc8b002789479631a696b02d56d1f497c58283f056621abbbe092d87cac9630ad4faf08401f94c87045b0396afb0565f0ce31595672a398ae6abca7690bbc53e30f30550e23e55e55a04abc2c0c1cce218c05d736e085d659b4299303a8520f31eeb87ee92087d23f10017460679cc0c75d5751e973d7992f0ca81e42ba6a67e7c3a3df236bb845c0d46be956eecc52a0c58f12489b05f73666f3f9ced879160558ea880c4fd5c913a58976fd143d44719a2b356aa512a931874943e718145e8d8e3fda27f6705cfde9a82c8b91db59235a2cf31f71e6eb1ad074ca28c953c67223f3406966ce94c721e7e5dcaf99994dea72ab678dfa1197b0ea91e3574510ff94d6bcf744a99e3190c8ddf75d60318bf73697603f6f2e429b902f9882d2ff375fffaac6b3815ae9ec389041eb91e04675a7589166c7b012a14707f37c3b90139cec8335cc829fb40213976c2bdb533280882c819eb2acc9ae4de144a14ea585a975c0483adf708d5a51b0dea59bf61229cdc4fc3d888020a89413bfbf8adc2cfce8119632a23a1e42770286b895b55bc0afc6722f6ec4e4017f48deff3365294967e8fdac8cdc262751e091b83915c3f7ad4043e3d4edb4fba14c9fe38f3d1aa2ee295393c41cab9e8d9506eff4f02edaa68de421b2fb057fd238455eb6f87712074f1b4cb02043908b54d38804726acc866dcfb03d2c001860f52a6c68ca4240afb419207e749f02043e04d43d33a18da0a42084f4cc9d48ece77e05d44563d477309a67a1dd9ab2a2120a6a31ea135f6ed98b70363fe7417588f9f9155a607f0909f5c9efb6d38b54d702bc1181ce1a4b244f3d3172daf190be9c00a1e03970ce74a72ec1820e70c183fa0a90d621c1413b2fca2d7825bbc42ab0b03cf0c4ff28625f2e9372a92b07f5b95ad557349ae1b1ceb4f65ea2e7e7db421ef7ea2686f16fa9545d677a6c5a782d4d69640e57ff8955b477d5e0e8ec1ce85cdbfd49f48ff96f3688304525bdd83eddbf694c992dfa081b32f90a675963538af5d4e55751fde42aaa9955ec5a285c8d548971ddc76d9077b37554ebc618e3bc5a7b6ee121eaef724cc2a597f576783efebced0cb1a4df23fbb69ca3b6bfb66d79b6b09d4f30a603f346978c489e179d71375250bb72833079c3ab5252e873954f5139d0a556a0d97e75bdcf83adfb2595085741255b87a22bd869142bf51feac3856e9caca8a2ad196d71631fd11b88b3a396a2b3a3d2a253189346f87d1843245cb129234088f244a0267c6f5cd8e59fa858d50fa99ce7d93d04b6d6a4ebc5e2f34ab546742d628b5c06b24e53866e5c1ebcc85d8c234191cb6370688ffffb3aacdac49f15a44ff09d65c0fe87b3457460e2b410c2280e28282f8b939a1ff5edccda9b8af4ccca50a785df328cca733cd7e9115d87148b6767ddaf68d108849b440989145d46fca1b748873953c3ad42ced7e7ce09af0e33d450789e299a08aad1488db48b6523bc12c2745bbf734f1a46de87ad75d243d67543b05fd654e20c0eb8ce3236c33b2f60991c8378e4d587dcd1baf06ba9a5bee8a858ee5949e73af62cdde978e6181578dd0c7483277bdc087fb120f570adc43ee77d466bc12d2d926882a295516bcd5b273db8990a669d6c8f3ff4274c5c14ee0983477d8b93327ce0942b97225ec89a81adeb37d6e5e44e73acd4869b1652895b636eabf862a0567809315c51ea062ea4749d05d8112504559e241aea3a6aea052faf83a61d6d1e6560a475b1298f375f9a1df07d150ff88bed0a7ebb5fbe199fb28ea3fa5860683df817acf2eb03ecf40ab9caa3c22061f34b7f7274897ce4ce9b34b8106afc25bee7c064d54e9e42c65cf889e48c5ad489e602aaa4844073a873fb48e7f23e5ae2b4876fafc38f13ef81f3b1a8db1ea2210fde332b0f4be8b5b99d1e208788e110465a4ab73ac1f79da0ce6fc62fc66812ad8b9f582c7daee485e0707cc8c6f6a38d48046444f9603514039cdeb4356b809a8c5c22858b0b8e8eb9b86fb992ca9cd3aa69882d2e10223ccc26fe139057edc61b3a89cd614227b6c3c5601da34c510ae2667a375360a2a3d0de1eb70233cb1c6b5e1020ffea99a480fef806df5601a9ba8d35701c5bf3ef15de562d9e5107b88b3e99d66180dee36e9fdaf0ec6d60db9ff212088731be6632f2a94cd43283378d4ab73fd9edaa432ea90e601f94033564f052b0f73bede995dced65ea640a5df420e8794e600c61d0986509d4ed8f1704b509bd0b8e0e5863b6f8fadbc5d7de1ec3e0a3ec310ec885556c986a27a2ce89d1a60499bce236f5bd839e0947dfda741b1bc586215403e2c2a60192725368afda268b5ca579f73b940a87b2c2d1b84050b9977eaa99669ae225315e78ae6a867d73dd4e7aa67de4ed62e5b26eb40920dc9969a66475724a621655342a259b1d256c73f1796c09e7823a68a444e98147040a037dad7fce86b0d2e85832490fdd6d4ae42613507f2a82747bd8e1c647dc8581a9bb1780babec32640e1d0a96b6ee479051bb9086c186cb2c4bca1412c4136e12d449965072d9312cf6e79f8df096e3211ec9944224545410c14c85f34a009dcfb82bc05424dab5805c5f69813ab9a26901fc5430dda3f64aaac3a3f1dd23a11f7fb40cb0700174211a813308d28f45f2a5417dd16eb6c90628f15424057b2647be7969404ffe544301b87afd73ad9a8351015cccc803a64d6bec6a48dcc78bb113c13eb375706a004ad4e4c55be9093a1eb9343910c28a321e60e284537fe09d11482b682df49fb1039f80c13afc1448a54c2f098f027dd6e7410d0d251e4c0ec6b1739ef82f25df6d17ac4a24c669180bc384b55cb200d38c40082dc7366cc2624ca5406913b0823cd66913e64eddc3487d8564939ab8c511763b1280ee087b2575ceba061b13eb7b15aa79a6d1117458798b5cc6158324d1aebd7e2437e2351abd6c556dd77d4d72ec8253737cde43495b6ea3bca3c75e664f5e5b06a3f72411c1fb2b9abbe11db6d0be0aba9a46c6eb22d6d0099a7e8c67f9877e15c8dfa5eb8a08b2b047fddc99c052f59b098e1adcc284bd78bbb6705581d2ae697c089c4482fe70ef36a75fd95e3a1c05dd71bef1ed8a95babe372f1204603eaa38448f75a9d7a2d847ede2452ecc5c63457279c5b7c43693b5972fa5bdec9be4292976c59251adcb263b9d066956ad41721a177e43e727a117978083c9b647a09f5f316105d4c4a674512bef1122db48b4714651689da29322bc3635125bbfcca67ce0fa1860fbd9fdb1f287952d87d5d1765b997171fcf08c8fd20d8db41564f31afefa050c488f4a650e988d7ead370c84c0908ee35018fed023d881f4c287a6c37940de2e28dbf01b40ab712c5892a45b97f54438ce35d382090f9dc2e7f15d38056578812f58007382449cb87324eb94ac919caa06598ad426712c009a122c33fa26b8dc4852a2d4a76677829b85d127010077282a02d5d38c012010255ee232b93ee0599a0c6751c992accd7f5521e471afb32b0b564d73390baebd8cd46a5e176e75ffddc629bc091b34474481427060734614e24fc9bc6dd1ec83c03c7852ee503c6cfd53b74370b625e2db3f48b13757d78484b1bcf27e55af656842092abc027dd807294fef0729f693dd75d2ad75188cc0ebe2f263b6734e3e08516dff4715c35e68eabf4ba636dd5523790c6c8cb7e02853dbf7bbe07f40ddee578d52d1c4b4be9cc6c32339e87ec38fbbcabddc4e4e7bfb1582428e6f68f0bc0f4cfd5c71cf1aef1c715acce876c8fcde5add5fd5d4c8115ccdbc3e3b8134b01b92c7b881ecd0fb60317789e34f4416262eb2aa3bd7a77279782332255ce2c2c02257a1662db76ff36ef3d87d09317cfe0ecc67e97317b80083eaad0364c6f9637aa7551a2b3836e56b017fd7df2e982c08e356da20358ea74d434232354cfe558ebb4be111dc5959ece2945550433164a7a2f91ba77707e54141b33eaa58602c51f90234bf9e05c03b31313d7d791a661a9ba3de4c77eb1e5fe78cdd8e9a71cc6376193e3984c40c18650e2b252a9f3506238e3561426810bca17ee6b1ce69ffd5fafe2c3869afaf0a90d06b265159ee906907631b3cc16fa27d3db6b840d300248546fcd59cc3ea6b97f90c44778f3feafd702ac4bd5b496fdb102563bccc1f1a6eaee4f1a71eda236e28bedd04df588a4b12df1966bc1fee703f93cfdb6dc4276a89315d080fad70d6db286ed8caa60d62dde5f178c5b5709ee51275f98c6176d2a060088a4dc0a05e948e41172559a1807fffefae8b815435074fb3e62563490b770cc1e8b2da9bd2a2700a3572a1444d964000b4bab7810da1481c495b1052db7477dfab6ce3d455810b40d6a2546f3a539aa7871ea3193ff2896a99adf4528c834fae60c33d1573cb2be1534112aceb2189328cadea06e9297de54487ae1ba0ad66dd5729638af75388118aa5dc3a1c60a85b2758ef9e56ece81f14d26ff8f45a8fbd8014cd4024a7de54d5f401032e21ca97238947486dc173b5965e161466091f156b6dbdae25b5b7c2659b25f8e175557b616e1a0229466b89d13cfed018bbf203d6231c4e685e4c014fec35df2b16d5ccd6324a37c14deb9c5f3a02e3105ab7c2f2dd9524a29532612dd049804c60433279efa1a90a65de8b0f294ca5f70ac6ab8b38001a6949da0dbe0397891d04d9abbbb0d477b3b67054388205912cad6a66ccaa66c2a348ee3f8a99475bdd041cc12aa04987628ad097562b7c377b7ebd9348ee32b1777ca588ebbcc9ca9dfb6d13d61341a8d46dbe7d1e77b47a3275f2774030e363a6144ca140512909064c28e9044b2c12c59e5479f1a15861c390019ccf2bae060ec047b2e4fee05734b939ad126a6330a331689300633cbb68d5cc227a184c7d49a90411229bcf7048c35d0742f07036d09e1bc1c6d1899255f1258ee0561cc87018613c68f09c608467864c452fe09414e1093b3030e469070220318aa788263031c5248d0ec709ce8051c8c257c11529d988a089794cca632e4acba643269cf4e301450ca12a6961c98829429b0ea03beae6e05a03d344562660359105c497fe0280cb8cf9f98e3966bb885ff372e2e35c033a420331f5ec87901a7bd178d697ede70682b3571c89963840e8cf3e148540e9e23e5e7849e2930a0de3525a62583f2444943c7ed139bb20020c24cdd6c3d00f47939db94d38ca64c1dddf2c471af24e55a80244b341ad48623c425469620f8375246610023fecf022770b013a5010a82a8a10929963041bbe106987939a02c3ad2968b0cf0e88899494ce56062ade8909f47c44c5b6a0ba7cb02737c628eb445c7130a94487fdd88445922a034f4888b5987da23d884ee7a5fdd70a6224801107a61bf745d739b04c19c4991b2e8485bd74d7d02e2a3856e1666523bba29a52c2a62acfd10f19a12084132c30db45d409f8c504062ae0c9e011d3566ca420734c0e3ffb7ba6d3d6074d8c82bf8d66c6f0e177cccdff26fff9756dab39ba6c5163b06482796e038b4a093ce7b5333f4db27173f3227e972261766f029bb5324aebdb634c35694acb5967a75ede0c40d13d0182137b64da786bd79dbb64d73c0d3eb75f47addf7dd2010c6a1902887402106514abf6f05fc4898e6185ee9cf8a29114caacdf55e6d56a754f4739b6d4abdc96dd75a9716bf163f1f1f191b0e6e669f1bad81a33f8b07714fbbdf07385c97ad7fff6ffff76bed6cd75c168b52166bbe0d10d8490755caf4ccf8b48a664794cd9f6da794f1cc70361d303952adfbba73e3ba885711af227066cc08c00cb6de17def8ffdeda9ba62e47b76e72325e70ed34c1d43f43ad3dec3348e849a1f754a5dc5ecb68c9a3151c8227cd39675b1c3ec4c02b61811247b8715232b3923cbdce8d80ff5cba476efe396fc84714457f2f940576592793b92c4404ec3fb377a0517101ad0a1f8d092976f0d040c84988063dab0e5e5b2e5893f2ca875a28af71690f6951c49338937627f7e52f673991f2fb63882059d2c49fb4288aa258768bd44354c488112306121e1344530a3df7e6a6c7e7c7566eebdad9ce72dbbd71c56e90a8ae0e0c5675502899b2a6eebd301c180e0ca6a3534b243b648d17ed45717070688f3dd5eab5cec49b5ae2d0a9aefa6a1b3a74a895f174342749abe25c58ccefb4b15859c5bfd7ab28fa535fa03f414ef554633e90a3cdb03b604f3608a6fd1da09d8af72246f7f06fef769d15bc3c2d4843e77da010c6a55208843b20dd030c2410707072a38546487a5df6f15a5d8c78642773b1e0e3479fb67679537a9000088ab64a9bfbdeda54bffbbbbfff5dd7052363b66bd775dde6a2985a56282aadb48974bbfa094b46d3b29adb6368c4939260fadc5f87304c3f6265cba677c709454a2edc9dc1912e0673cbcb8b0c19f8ba68f0bcae76fe90b4f5e7c7a266ac4a2665579ae6d3d59eea8f7b07f801b633321e6b4524a9d1aaecaad6d757b2babee274139f263e4e4e2cd773950c5956b582c8a852a169350821293a8dc4b5ceb00a55a6bdf0485666c4da84645649b5e296396b67aaabc22aab6b87a9ce77e33aef03857e74a73a25ab2e190dabc2783a66a262a6c055acae9e795558dbb676b69d938787a787ec1c2363f7c80360b61666acd8dd36c96582ad13ad3dfbb22fcb9a96c8146dd98a176310cc296b45cf7a093538e975976b1fd21304294e089155d09cf4ef7f9162d56dfd3cc2654c553c3f877680c96bf33bf9a53a965b2ce9ff24c31f556bf6768e54f392c1cd7f6efebb0cfe2a98cfcdf99ccbb8cc6f46a59680a0e85e109731d071249761804491a894cac5eed4e6329e223de6a5cb5ce5a2b3eecdd7dddddd39ce397777ed754fd75f58e196cbdde2b55a4b8b9d345a466bf11612120204a6ad745a5be9243dceffbfbbbbdbc0b144062bb478d8a3f1a063e8c22da728ddeab66d5bdeb66ddbb6edda4abf468e77b7a9beb5f5a374db64803cccb71504352d6b2310045b5e5662ccc0a32ca3e40501804e5983e868b577e3b8edda4add7b01d4a8d79d220bdc3872b8df560d69fac9809b1cf2a34f8dea54fff74d77536a4fefdf8c9bb4dabb715ba9745b5a6cce150429c6ed6a1c30f163e4d2ec706520020c88095208c08d999da4edd1aa03f7686da2c6728d755dbf682af9fe192a9978c42d17acbb270d8ee31d61809b045d7ac04dda30b83262171fac151090ea1426f1386a300b7ad149e7915cba2cc0d7fd99684aabc5a60e6de4a8a14bcf7b5f74a54d614c4a7aa1adf8d45656dcdd05095c2ba91ae19eec1136ee7a3128422de6def04221938ef6bab6d956cf31734bc771345ce9c29bb9d77143cbfed5ec75ee4e4c213de7c65f383ead85bfc05df2765c2c95f25477ecde4b7292f4515939a9d1fc80aa7d53da4f49dfeddee33d31c7180473bb123f9b28965f24d1ddd537fbacc0d12c4a694f9a6777f4b9ad08ed71d3ef9cfdd5af73f70e5d400d8b465c110008dc3c6e0cd7c878769c6c7558cac287cd2b55ff4a3ff58fc7fc6a6503e3552c332ffc67c57754705cd888565d87b9d9d67355332af057deef7e3636a26c706e44d70eacf59343963b2a9ed3ec57f9ce623654ffbc2ea9232b727b4ea79a948c91b7b6673b1fce07fbc82fe7abab9a3f3dea655e15e391cd7a7ceacfb072c8f207e7a6e57ac15a1c715ce65efb36579ba96dab52a944d90f947c93ee2ed7ec133d9d4e2877772524a5dd44c69bc898bcc94c776d144a1a279ed089a2dc01edef189ef393462048459c5ea2697810ddc271a69a9156da53733b99934e9e4e1fc333b34e7a8e93b3a7acdbc80ea5df92b564dfe94f1fccff4feea48bce73afcdcda1e14ff32ffeb77a5a3dad1f1aee4844bbda06b9d546b4665a0b0ef7567fe36d5d9b9bfb7fc7d6bd771cffbf493b6074fcff170122accb0af16245c58508bf58b9570563172028ca19b7b480ffbe822c94b1c805c8551aaca573d1b8bf6987a09f017409c71b7e45ce1016e54e8469c089a2840bb5b7849c480ced9e6e67cbb9487088f4859ac9fb704a25b24626ed27295a65f721d7e721df82e1b143e503c30f129ca0532dc316ee8d465665c5520e459230b9e99b166d0fb1d6ba3044a552a95aa5ba2aab526de4252d49aa541f0a89049ef4242a64db543e50088b5ca8e010deb81d1bf42c31e4e775c304f51b5f74a43dba6564cf62ed538edfeceeeeee0dccf8adb536d309734d046cf6442f9eac894d6013bc4aad34aa35a72b4404def2f678ecd3d872c1be6b736f4c9c40995266cecc992d6e2ee168388e662ef9f21c3bee3b7527ee74d201b3638e73dccace55626cc820e24d7a65b8c810579ab6ffa0cbb2ac65cffa0a77c1062c1a4c828bb4e7d0ef31dc6ccbde09afa5a513fc5db6e0c3d546f410456834bebba1cc97e207586c81e37a4c1437e54d14655996a56a64bd18d8e12a6c04be4f3e1ad5a95689421df975d946c086076a1089050c78df4cc97be9482a95f66cd756e0decb3111e110e8f33a6dce9f53b48a701a68cef2218ca0ddb3bbbd7499edeeefba6bab2273efe77da4ebddd99db510d73a3433833f213d8a36c31854c101f7ac2feefedef0f69dcdeeecfe4c045cda0da0642cbce54b9f7fe6677caed8eee657b8bb7bd967dc763dafe3b6fb3ef3d9153f1c97176e6de505000250801456463164cc787919ad74488649d4a851a3463843d6bdd6e562fff4cdcd38d284aaa9cadef9697eec5c741a677508b001b75783e9bb732ee84caf60c102093c3b3b0d0c4693632d0ca75443d54a74b17d522b175dac44aec233a114a87d38eedb6ecce6448143571886b3b267e6a77f4e2a94cc2a47b42e1ab106c618aa563b2c9a1e18361ee9e578314fc72b5fd6656116c7929d03b3195b37aed54dc80a6dc296aa4f3f6d67b6d296d8125b2cd80e124da37bd025cc08cfcc8c91996ea1289da1d4da3943674c7435e7edb24bd5931b282e225e45b83b0f640bd542b5524d4123342a1fb2fa67749bb0261cbdd53fa79f9fd147ebf2d16d7cec9ffe09592c8f0c6b587c58662c3d304ea79870f472bcd2233d1d207e80f89999c1f8834d93b245493468c5ccef727adfd262c2accea025161f969e12cb0fcbcc73d73e55c32359662c3e2d27182ccec232c311922ad8e003a52e28395314b11940add3aab05d3b7bf67561d1e9f79f369d0fda6cd5c1ec5af142c58508af9454ee7581b1080471ce2b2d2da5d89725244f8e0efb720678cb9fcb45f6972fc3ef03ce6f86ebb2d6057bb96eb6dbe681aaa593523aadb5f5f33ed0f795bc10c74b577a81fd8fddb7de86e64b393117ccda57b9ddcc26705fd22f5d1fb336d7cf32dc86aa8cd2bfebce4428282088a3c1c0e01c9e69039a16dcf681f27fbf36f35b2de4b6970470dc1c76025bad94cef9efde24745d4b600426cd7eef4ae1ff612aa0691af75d5783842eb7943870bb9a564fa02b7c50cd98cd92b87676767c48edececcc7c90cd66339f283ccff26245c58508b3bc10894438f471dc770abad627611591c8bd2f2c7734cff786bc1b0a7760518e6da4969fbae5656c7391f75bee6ef89cbd9e48b39bdd6c4c0cc65edad0a3f0283a65cb2e54ce403c20922c673b321e18f2e4439b6df9565019e27a92a51d6493dd31554e35e9756846b5126958a926535e2aa54a35d9a4e322ee417c35284085211260adb5a4bb5d7bed76ed974a5abda25d2d040e813eafd35e3006bd9c5f5eba0cfe09ddff260015f6abf25678a55b4000c1f9b5f55f6062c4b8dbf7260a034fb68881ac0545dcf024894c08140e4c6ca8e1748488cec60390138b50020d7188187e70c1932335987e30e20a8292149321887e785184160ca10730c0a08576c40b8444d18921861c4cb1c30e4a0ee0011c4c89a105496c3822040760313821a409113142b817fc9002d00d9c33216506332ce587934b5932471254262ca542d19574e056e5dcf19ab09c0b66dc160e702866d8a2270b1e2651c06282c8c1891a48698113ef35f311f1b89587b229ed7fcd49e0d4252aa9661ae56bad3058c2563aad4fe9c5c6eb051c39607824517e544ce906637849544a7a2c44ce6b065c4b0c305f25b4873bc4785b226a95b0b1ba82eea70ebf45672b9defa1b65a0d2fc63ef03c759a86411ebe3e5df5c0512a0317e5871b2cad3f84122a43b0684ed7a597399dd08a58800e58f0f0eab1992102021f5820c4141f80200304a7c3890ae1eeada1fedf702794d2ce9ae66fdbffffefd62d7859a03457fa3dbc22e498ddf9bfbb274cb777e7a964c2c46cd9ab6bdfb4a18d1c356325b5e66bad888286d8a9c5c2d450bb5184193ee7b4d1ee7a0ace13642f7b98036651cf851b76df0ad7cd0964ae761fa0defe9dd528b8037653c53135c083baa9dc60949840658520aeb869f50047cfd9ddb367ee9e19844d9d67b214d45366a0a9a02fdb708fd4915a4a3db61e329c9834530e1d30f3b637f1fed3c55de6872d2bb865e680e1d1a365470b9a0fe9610e2c2646d7c801c3a3c7e71e28a7723b90d781401dc8ebba29c7654ea56fab5cae394e65a5d2699f6b8ee3fabf398edeedae844a5a25aba8dc8ddec9715cdf7c43f9de10e5b62bca2e4219f7dd5c8870e836177edd71bddda6b766aab252e9b495aea8ccff7691aff4f09f6d3e99aef6acf16a33878643b43f84bb7a765a8fe035c46aecf776b7b5596a4d6badf4f9e52989059a43cbdde14ba9b3d70cfeff975ee6cfcf3fe6f7211c8abac1ce86cf50657e9c0b50d4fdfffffffffff7cf8d02367b08bf7faefff93a0e554a1f46c7bfb70a2a66854fd044090f7e82a0440c8a545143c68a530ecb08282834edcea88143532113218b1ba48007285246e858a28814516c68a215e384cfac0ba13005778e32be94a2b032d017e720c72cdd292ebc1016b91061d0e7456122a60a23583df37d4ea8d49741fe83ebfc39040af3f795ab6eba9ee7799c7b3b188d7c34720db8f7b9fc130f318f07cdd3566ebbf55eba1257b3a78ed57ce6db8a6a14a5b6a5d3d269edf4ed9ab6e99bd97743f8e1a332d65995797edb2aac6691421e8db855d78d8c595dad663d3ed7765cdbed6eb7e36c5d892b1e3eefdb46ae63b8ed057bdd999dddd3ac87b433bbe2b12b6bd3b2228dbd49e9ecc868706216f6cab124bd9624c9588be28bf5a6f6abd2e83abbafdfe8daeabbd9ae032969e96acb5b3657b7f5e54ed66bafadafd70b676a9a97e9bca71a847af35671a57224dcaca6e99a16eb451521c1988db158353a76ec18ed057b555685515bd336e6c36a910754d3f4d8251054c7b4286db58aa45aae5ab949baa7eeeeb3af9c6679bb4877a1851f40786250a999d5cac22cce9f6454746e173427ddee37b3e5e128f7d4d32c8f8f6e615a6b6dabc69eee2946536f6a58e36ae6b759a2cde832e154d2d6b0461bdbb2366665d6eed49a9a564dcba6bb87bfd73c46e00a4451145b6cb1013ef83b7fdb08b5cf5f97c9d56493ed629276cfbd37ebd588116834c2a12770eb07d8ae7b71079fb6acd40ddc9c040008004376000c10050422a11cc6812cccb44c421f5f82ff7eb17b159ed9301cef5d429f1cf486e886637f61ac26ab7457aec3040251d4a7df053c5c8389fc215f37a31f69f3da9e700dd94fbdf2fab1299f97f71372afacab73775e1455b4e8db45cf9d624824559aca2fa7103e13e78749f4748243883582cc45cb85e5e673a8572868e4c1a1ce3e76a0d75fb048df649d7b1565f2308de7141762329b091a1ce5984fcb3cbae3fda377ec3efef54e26ee34b146e73343d9793683c7f17cbdb7e3b835959b1469543be442ec158a7277167441af30af9b85522e6d92e0d8a02b26e46a7e865933eb651ff4f3b64dd0ac16d2272947a20683de57fc1074598eafd92b5f75a963e1127392c13f5966ce7515ccf8a31390858487c067dfca48aa0d96140b61b6682fc45a2923015ff768fbbbf0af719e5f3ef8d7e4ca8ec2ddfe44440e02d3e742a7bd13a030c541d056443ea30e38c8898074a5d5698f755be3d6a2528718a7a75b8cf58e5fc04887959d0ec2a7611a82c4fd3c7630b65f37963b5a16db2660a52403fa5c79c954a782de33da19a28a15bb10b29a66facc0d0599c4fee98ae200bb2aff7b7f9980be578111ebef64248d422723d5a965d7ee39c3a7c7f279c9407a3446477a6d8a6ecf598285b94ac16f52d9a1168eb32bd0e63059655624d78a59c565f2d815f429941717aec08f979d5cc0ae369e33c0598d37dd35b458a5f53256599c57ed6c35f091cc967f1c3e8d4c6db936bf9a80ec0da556d6883be95e6fd8a5a602b1bf22c96753d5cf7c4f928a7f4aea009e00d67a26f9badf7376c259539e99e020e45fee649868924253312f42ede88d7fde00d86f858881beb520a7d6fdb99b2b4e4397005078874291535bdcbecb75f8c7327c15fc0b64326a5a086c38e3cc74d47f485ea0733e726af977dddf9c7f812e1a7c07d766d45ac120fe029fc16ad4919f40a98fbc880c262c2877a72dfeec29ba6155755652f26c37737da6653432dcabb0df14b56f19dde2b468679fb5f03dee432a2c7d44045058cfb3c2629529955b9ad8bfc862ffc36e1f56b953335c17df2cece29befa4b810efdad797cb66156fa373b03dd9762e83d77ca80117b511c7a9503717f6fbb087bb457df37209eef328e025ade751a3e6bd881226e898622a5c57e39a77196346e664748479b615f311a3f671a8a8bd8b01e4bd194398868631011c1d792ae8984ec3229a6b1308fb32e29fc7b233687e5e12b0b56f83db460d79a2ad70031a469fa2e6bd773d5e88fa0efd7cb11074a971653356a5358de516f4ea2ebaba197694c3156cec16aa29e8bfc206c16f69481a82b27b2df8beea53985f640081115d3253e2d90580ab3b065ac95ef7d0259e2542a6275726ab71c4ce185b05fb20ccfb684df2f82d4efaa63174b132d8a50321cea3ba0413b3005d113efd5b12a2d62920f9d5831cd59cebece646d3b102f7f9ee8bfb3429f66464adeac790f5a25f8514d051f30bf7251ec64ef0d41b05d5ffb9e8b2e1f29f8b6a1c79d0bc72337d6c3b623af20bce9b1115c1b8de2b4b79340313b885c668064cbeca106ef960a8f9958516c1888e3362270574bd97c724deddd3d6e72d928d754e326780b45cf834bef9364dc286ff01cec3d82873172a442a8aac1ee5643dc5e5e6733f95995de21485f6ca8d73233336dfac8157f3716e5c38a646374d63663dae79da13b005650aff5e23eb11ea3250736fb422fd2222f82393a4f66b6800bf06ce029a76120d55a7ae8788906ea7fd5c634ba47467401d2da9629d8ebf077296465a5d707f6a3d4cf91ee62fad1723844ae769410fdd79db298cf9cc5f95cbe0cb566534a3c5a4dfd32a1443ab7498c6b538b7a03a9cdedd9c14aea4cdde4f11805d492ed90a3e47f4994cdc46a7367cc76ca855474d265e758ec82d1a9bd95077ed615d6880f197fbcfd9f8144ac6a52792588649fc8768da6658dab52b22d2ad0114c089eade357c0ee0678dc57edbfcd602cc0781289e1adc15904ae2744cd72ffda7e209af8f3baf4f61c3348b517567014a1707588299f4cb2151f5ee6ef96f7425e71aff8f3de661af319cf8b860748d580c0028d074f65113ddc851a4739e7320019f0c7688d245bb713273b3bfee0dc9c3df18f83c0fe91f9706452260ed97dcde604113f4c3118a764fbcbe9488c3bc70f098edb0210fa318860d4ce4e7595a3074a6eb19d59583d7113a78a7ddc10785079f9cc401f220b69bbb08c8b5822c1c79777a3b1d907bebe5db23d078108740c52cca9515106d5d740a1d69b44fb065d2b6541c131607ff025da51de832e894f549a1b452bcfcdd730755db54ac3ee0ab02e5a915290a8e42625461ae1acb99b9e67825c42e9d611e66dbb50e201f08c4425ea225926c003c60ce52bb94b1583acfb18032de49f5e5f5228a86e0fc3049ca983cbd729af18133302bc0c41447886986dad613d90f500a20a6c3ff7dabfd325489322dbf0b28c59ee054f68e67e6565edf533ff4ec24af3f03037f4d7284d3fa914600bba4c7aa8e2dcca3bf22c72cdef8489a19150563fdf07e3842eb9a45e0a053137b42af84714911afc3d983b48942fba203fb12c7697b5eb07fafddb0fb83d2c13dcf229259e092e89b2e83ec8872174f94bea440951f288249f32308fabd9c78d6756b505a4deabccb96cedb5df2d24d50e94ac10a748b2bdc249534dd634f6b6ca1a2d6057dbf875d258851b7ad85580a0c3a2f11b06e509a4181279ce719fe26082aee91e68cd69926cae6f1e1d2e0d623176f3f543e48a372cb8674b71f164501dc738757af7cc972988292255af652f2bb0927572c86682e8555786cac74ee11fd20845f1fa1a174c4303862b90777131bb4584308a7827c47582130d81e0edc01d99882c56965364af1fd797880921cedca2006c2068f83850081f94cc11d73fbf4652874ab0b9cb5201a25f0de2d36347c6d710ebd9249750f7e479787dd9db3312f6117e32b377562f1183432d5b0fd55f13e96694ee24e7ec26848a758a4b488ac54fe0b0e992904a1cd3fe3212b912f24e7a8b74a480d13559b874af03501094a6c7714229cc48366245e740a8692127419b3ad1d67894e3347a11304a17494bfbeb7d4b0419dd35d342e7eb5d7a491233daf762985cb3412a3c49f25ab8113dc1c102e0e4ee80506db50872cf0ab203acb55def94db5ffdc6dd9a803d40689001bff2a1175ab69b0f1710d92d242585f5a99971e0c20055d9ac4ccf49a810dc512512a54f565e38c25a79aae9ab2aea3ec2a4784e6f19a0440604e440b651089b92e9ca1a3d062a61b415dd0425643c9d2ca88926664e2e10aea6a3a8ef1efd19399cfb9f5313923ad02b30cd030e54e0c1351cad1bcd530aec99f684ebc185244c442c3870d92e282dacc8683eabfa3cc93f1284f73c48e5a9918b82fd22fb991d8dde5fd06bc5f4343101d921cde4487d4a8245690df8d858119250a31e2bb30b99e4b2568e28ebc39680c1414075d91dcbbf04d9c31179958da227178f94adfbe78ae8995142330c3bb079f7e569948ae9953ab3c80af774b8093a5b056167702a63d16336b307c29a89c7ed6533da415619b67f08af7b98f266cbbeb2a708fc5187cea46012e78fa84db97da48028db692301a2c14de68df9bd98ae097dcfd117c64e004ff9fb9ae67c5a1f0e5d119182c716717acf500ab7704c8f96c300bae1948e264c1105d0f071e70e63f81524b48287e8ec677bda498d2788fbe2e7d8e042c250ad140bdf2664ff49b73293ad4b67090df25c9b802e06b5aa0a397064964b0249abaf00c1d3fe496dca44aeddfe4cd0dbaa455785b23053b62fb19a93bdd5c33b9ee1e7e24ac3f282c4120dffd5906bc55262c996407c3dc80f69c2b1686b33bad6b3d60b72718d6fe191170042933557746c903168e6fc732215e151675cb0cd22f8a65ba6ec4f340601655656e1b40f9e48bb6841e5bc5e3085a39c61eae307b612dac210c13d0074bdf5d3029c62edc1be818562c5686dad62385c86821a75cb89e100836ac1a01b837ffa785963fe7783ff3ab7f5dd175fa791a649139923d915af22a903f1015c573084a6654d657142b4a065f5429e2fecea2d42684994992eb9384564a569d1c787fc1b3d2d20df0b5a91437385d85d4552ce8b6fe823704badebb0bc2d8acb7828029e46dcf0358fafbe2aa2c6d6bfe327517ed6904b4eb95c8ed5a74859322b026b10dc93c8e54445867b2fa30e7193fd68b9c3460860e86476d1ebe06a0bb4eecfe919e3c8a0c6a9596bab4286cd91580c4041ce0c40e30f14056751c26b090ab43341c999a80987897713ce9e35cb9c6b343d8b2ca308d4cfdcb75c0d708f71b424cdea0045391dc2a3d9600aad4aabf503e93fdfd4e50d607b79129ced7b1b7e874faffe1045c93140148a038d3c896315f1104979287ccd43b03a88fea5d5691c043a86d4001cf94c96c783af1afdd9b18b375eb8a6987305d0b28b234eb132ec90e09b48d8d1e25310e9b7670c7024dda668bb76220a433946130dcfe7861056b9ab9b581a1b2f8fe78a3349841d7c5e5e5c9714274172a28dbcb8d3d5aac2f4b2456a84ff324f2565d8e4731774cce5d36ce63eb011bec35eb66582ee171dd26e42a39a9fb1472311d536426e7c554609d8781c6308bd8341d4a48695674c434f0cdb35e0b8ed986f43914b45e12a871d461253b177faca082e34004a575cbc46ba5b59bf39ebb2841608986c2ffcf35a9f8118803e0ee935589338a05d7dccf0c32f28f7df2e4a17318eae5a686924b840e7458670e9193c5f1c5061ab6c853a6109892b7ba7628792e562bf55cbb663eb64ab2ea605197c9421de238d7c8ff747f7e39ddb1a50832e3e01582de5f1267cd93a2b9d51f03d4d5b06083dff430bb7a41fe35abd3377b17529c7d817e70a734012c0996cae83642db83df9f1fd8a7db81d5fc563de28d0b127bbe80f1a0ef39b44eae5b9f48fa401b7b4e43f9ba596dd3da96b8f029757c384c7abb0ce60cf677e122b073f885e4955f45c21bd42f81a1ed54143374a7541c6dbc8bf95801a01b86c6619bfb6adc1adba2c36c00a1a7eb6d6f6dfeb9f3ddfee5038ba3dcdeb9afee2e911b46ef98c5b56c4d9c6d4d055b4389b8de478199d25393589ac8a6d63f2ba27a76ff9637057b23cda3ddd881969298d30241b108523179f56391909d54a48a293cdad34deed8442daca91615bd1ac8535aea203b77b09152aa68267772c4f1b675199674993581066140bbf74b157e704e7e4c09912958e4caf7c189e8316828a812e1cee5276ce03c97f894fefcfd9c46c76e00abe7ed214776045a470abdbeddf42760e40dc73f4f8e4594771a33dd118530e7990a0f9236046efd236cb0c67956abd713e3482f2a6d352948bc001cf220e006639312a2f1f4359462a1d9525c606a17a1a538325e866090ccb488ca7eaf9a902608e2676d58b14930a5094c7f499a05099fb9a5be06130c7ede4ccfc2e73f190808c47fdfa00ee103aa8028a6daa18a30be13a388d22bb38618dfdd720f8b6535494cce4c1eaf2fb300725c4ebfa6c89e9863e206f2e2728c46a722e6189ffcd04c254d04f7abc2f14217cbd0d383d0a84fe06b09f84a9f6e798c3e955bb15b6604097ab50cc7a705731428819e09282de36d6e8ffb2ca94e5f6030a1501e82577708aa43d05204ceda4ce561f698252b4f1ab27da7ac7861d7905fc2928fddc8d2c78ef988511b25388de9653b52764087ca8e36b3f56ff193a3e5764316b648e0661da25c0ee06ed96caf28f2bdff6b276a3219c3796375d4b63b8a9712f4d0cc3ab7f10402e7758d2a0b68dc92a4b8fa20a9714977140547932c0c0b99ed8b7cd7faccbcea2ae380668973ae87c2f54e77b810b8e8ea979805b9e206bbd0344c64b683bcaeaf8027c6c90d1a0478a54aee8de4ae27aa826ef7975d9149de92774565821f3f6a0965e38d5fad37e7b1195fecd526c419bef73067e7f4b1d1b70524532065b4cbfa4a1468c51de7cf78ac3855992bf686020feb757ed175aac16303bad100876dbf78aefc388fa2a4782f05692a6b68ead75659c2a43c8dd3811f31684300f10cdb757d37e949ebdb0d558c2f82b1da1972e010543a076dc556adad44d75dd6c54e4866bf799dd405b9f75a73c63c8d61eacd54af44fba9565ae30cec89fca5a399fc136860e7dd5f440d890dec09c1813d15cb0dec1fc09e4fc1054403ab1bfcb2bd2c9f20b0f5a6b3616530a18a5bd0121a979d405e8389ebc741993367593974215621b88e1cc70efa776d52e55b80f49564189e4d0d2873cb253565f12d8f4ac1372f430da9229634084bc79966cb546c04cfffd9fdc807e67b905a0b3a619242e91212536bcc6834c805469ee5158c6cde96da7f28bb8b44f404d4c561de7bf75c7e47fa3a060a207ed40511c733da776cab665d9ed8245a26b38d96814293d6131792b15079115a48a0822354ab6b0eab8a061a45eceb60beb1d7d273ead8c86584aee65e1d6a2f2f0b01288576c9ead35f74522f44d71775f8dc4b6fdbfa770d4b78a61ebb7a7cdd7e06497c34e3ba12412bcd3e9e6dac0e19467986f7f8871453e99133d0e9765738cfd1fb8bdb218c84993f26e40746d01881f61775d0ee00d6da574f84789fb5127864fc691211d9bd4d63d27f3172e040b78376c1ee75e0947262f520d4964a924aee4b33c3493e3b3d89d08e9310303489d34b170f54376096c547403b187258f03354edb7961fee3e144ff2339932c56ea4d1b4a363bd11b2d91205a6831a0fce3b0794ec6143cb2f1569caa4aa4db1add4690839b45bc5bb2c85cdc3406d54fa5ae83e7f61597dc644f830f78035bb034574728c1fe475428596b313f644c0ffd22c738b60a0cb04d46b547140d606f05751f8f12a882af79e2d3b9236668b1538d3e5380919ad815eaaba2a6953e96f0d637d649e21b0ce6a32699c4ede2546409b5e28e0bc4782df3c8880ff9115d6ac40952cdbf416c576d7fdcbe6e935379d9758811625692a139554eae04c18d4541c9cce3682603f44855a045c75bce2e2171dbc430bbdb9c1f7b0013bc076bd5c2a47ae2b2fc94a9c0018ec2f07c4791e21b634d04fb4e1b84abaab9481703b3bba04269aa69f69304811fabbee4fd1da320fcf14a7b21ce4673412dd29083182f22204039d8ac88a40ccd65f2bb3e16f5cd0920c89d697803bcdd208af5cfc5ec91893ee5bfcf6425cd88f6cdcc1ac89915e5ee400f49f496b6a04e823e833e9b22521ae6868925d4f4eb291eec2de91f748dad76041042f825ddaf368d4acc1ec305a1253f9c9a7afd9688b5c75235eb6baa38aee7d2481a340418700f161b4e103f21b2364a85c616b8dc7b5aecba3db5a4b42ffd8b77effae0a61dc384a1fa6d077c35c2cce14db9e47018436d743a6079025400132748834bb38fcf1e2495bb953b50e87d3e9202f6fa8f010571f69a17ba8f700c97dcdad1c6b36a425b90f1f96a5acfdc3a6463c6f188b50e2aa9601f9fe66f47f8cdda7ed1be377968f13a9345bc89066b36e7e2afc2c9651d3dc9f89f93cbbc7aebd9659ce39870a295a8f5a25aa3193f99565046d1a737956230b07819d788b1e254dc2a9fe507f5618e8a7844ed7f49e09245d3da4705e32bf224b8adbfa9577c5b7130b3f0e6b1a14ec098fcc767c06668eeb2bbfcfff8abfb7fe0b21224549f96f43a7409bb5045306ff6616719442b1fe6d3a45bdc8c88d6663afe27b139351857957ae7896e52f6fb04fbefba10292b77b3d67f781e6ebc927e0d78048885ff6562c64ff668462806ec9500270a211d395abe649e04d7dec4e7a6c52b8143c469cf0d3c0cb2648686928ed38207318e2c2d2e630b7e0389396589428f7f10008feb3c99a6bf4624a61a9d29a4c954e1888a08b04e76eb4e352c92c3ced91331ac61d819a4909e6c8fc199f488922a5608bdcb30db33f6c5166d9cc720aecc919f021b773962236ecd1ef5fe243c6a094b957895542b7a87f964eb1bce0a6bc3724e242eefc363ccc43100f6c22d83ed220bfd25d6aa478cd5e13828b5faa63fb9ca584c8f034b5c06111d3713ea516902fb0b6ce47e9602caf6b0d2e6c5aa7b4e3fab1192603b2f8b00db0e6b0eaf747d336c1b9e17db731e9eb9aebe02a97c63d4cdba990d6150fb3f3ee460e53dced9c76e94cf5eb5f01e1f5647db0536b6bc9ae6896878b3e703b5a2b3d651539c9686f6058f82e0af6cff2524eb612285efd3bd515e887d283cac5a51f053cbf79c368d2daf3500cf04952465d332002111202773816bc7050ac2028fce4bf8427007451933d890b8639aeb58e2f501c72d358b284e7b0a8d84d482d95db49e2bf555c22d7845202b4de1a0f100dafd59a89b3f6f6d82ab2bf9115ca4c78c6e686f3bbf2b66617d43ecb5c9b320c2b2095366723a8b6123214ffda02afdf7a16bbca277fe76cba488ab90b0592b658eb8cf548609d969952b636872d225ff22a45fba93922779b2602c39fe4ed3e8147fc69195dce9554629eed31ec5474d8d39c2de4722fff8190cd27e5718c8b768c014e4791fc4df0a43e5a9524cf9372134daa555ccdbf524d1e323ed3a4bb997ebd50c8a4ec1fed06b168bb4ef5affc87f71dc2d8fd1b90191862f8d07b1fe19baf18a6c4e6f8298afb37af4f841d16b78cf19d157a0821c2fa77aa0ec879c3f4c470d62daaf3b80edd98143780c8e938671979301300b2b04f5bbd77dfc938b630cf3e1277c0279f5bd13a3c050ea54747016ed3984064e4170e61cd9034dcca3d4a20da0949e552f83e4f725b90bdfc7a721a321dd4b7537fa68cf58396734e7a7dd9fa709f9431e444b669b3f87fc709656d88cb42be2026abe0169ddbd9775eb4eeba7dfeb81c3bd91dd3d01d6eb36eb2ab766ef9d6464531cf95a03cd977b188952c7fb22c523267223f9eb5cbb1762c320834c1fce8d93f00711ea98395ead1a9b9e60798ab4c06993958929aa6c865c40d937057547a7744b359652f7c320236a6b68ef9e9304f02455a9e71f12929a06ed6e25fac0756c70c361d91b832afa5190b67e71d107876d3c64c32e81b08a53417f224020f4ae3bd1514c1cdac045b8c55336646d2d0d58deb9e34042db090955d99f70ca7c13a0301e277d5a225072c7dce685fd3a408e817a75114ac4d1b6f47aa4a1dd6cf9fb0c1f460a2aed96fab23abcdc674e7d06dc49eb8ed86d05a1faf844033e8c1d19c48e8dad8c7739750d8b1ef08bccd11e929ca2ea807816ac9fd0aca88fc1e3a0517b22dbe578359809123ad8e4a84b3b21cf6a8862b02bd26f8eb15848eebd3dacd124110d1bd3e533ab35295f1ab4c26d91d5ef81da4925fb57595c7f92952ab9d904d0c5c3fb6cac78228193bc2cfecd2dadf5e4faed7ae7514b10864a1dee519fb5147941ae80237e5384baa5859b4bed1ae8950e711e2ed81ad1956ed1eff74e5fb5430999157d366c9d30cbf2555e3fd4a0f46790dbaf27119ac6a070d2748f4dce29570b50200db05a8b7fb58718ebea995b3ac1eb5bec87e67459dceaaf5167f6baa1a269c56066d99d408f142a78893a996314091d0a026b945f2441bcd6f4593a2b6d1bfc230b1de35d5b492406b649128671b4a027c85565d0db137ba246513937088f377de94aa21b94d23318b2a1e2a9c398ac908827d95c3666dfe92b46aaac251dfc395d4b0375e41dea656cc8aff0d333c16d6c9528dbfb9d0f86cac23a964e3600ecdf8f78075af954cc2f6b9e62b3dffb4170e03ee20d55011809082dca94ae346078e3bb96fe4a19ccd957fe6bf949a53f3e6de4ee1e37b822ab989070f964b9b3e9b11729c43164e229606e119239e9a2f1919ff237ff33fc75304482329826017d15bfc124de8b5c1ee3f0e64de9edb02df6d319480bbc05903f5db6ab3c9e6e038a234b5b619b22396f900779673b5ad0c989d5a85a55db3b5074f00d73749faf02f747c2c20df4a4217a53b2a53ca680a7a54a32f82de56ccdf062efcafd239a13a6cb9e2a3b8ebe489dd85c1838918fab5d2a7fa485ed8d6ab3993226b82c227d6196c8cef64e0794eae65c93faae7e943b74bf1c500da6259a12bbe3511aded8712e72c819d6fecda3d6b425dbcbe6de05193241b676ab52ff0abaff2566ce4bd3c3f0bc4eeeba38d906e3c1a786049fd140da5b19d51328a13088d5c0a7010e24132bf9da7c8018ff51a887134e879b90852bdec35e9fbe85a340fdfeee0dd47c33ba3f7fc3e453b604a5a7f97f466213e29ce47906a085ce0f67672ce1a58b0acb53451ff38b18125af54c78a89c81415094339fd5a5a457e735ad04143d2b12166e9710e29e87025df7b63199f434a013b66db7774263f517f7d563b0d391f1ca386087b36eb178b3d9b0e94296719bf4a1d44c74fb87853fb91318d9f0c842dd61b64b745e6e5a8f67fc86b072f654c0a8726d0de449ff93a013fb7b12dca7a99ea9fd201d73e21cd177933e4d3baf10936e6b4bdae89a97a46d5c6d4657ec81386ee5cb6833ceeeb85822e59868552b3451ead2434d9620b30a29df8bca51f91656ceca4f081e20ff22526658377cc8c969047f3d5d5e08c20b32b46c23687ea11bb602a2b716060029a0d85c349cae5b1d940453caa5eec46ef15d4fe4decd56bd85387ad8aded04c7f448dec0f9af85ff5e4530be16a0ea101cd7cc73975e02e96d8dbf7007814ee51e8a7425e85cd79169a8df76d7671d898f69a89e3ba2e30ca9081a43640f2a0b56394cf48a7687958f1e9fe1cb3dab18f75c45c1c25e97287db67fe116006e1c937fd1814a545ff480ce29e51e7eb00c4eb4fc739612463f89f3cf888c5834b20389c5473c1f9057a0a07d8685013eafbde472fc59eba96b343f0007e1965504d81164ad7766e30289dd681d2f1f11e23e4fbf8cafc56ce567e8f03aacfc682be47266914c2d05cdc1db10685c80df5c3e39b3374079de89b526e61fa483a58006f72b557f23dc8283b48ff8d1b710ff84007764b3a8e913db012e0bef2742db287f60a3282a39297aded96e526440b4b5a891505e546bdc015d61db8759b88bc92240e216a562fa26621dd261cb46cb92ac9cf487d8669243e85b41fad896dfc2572f355d6ef0f1b40a34401d824c516b6e6c7cf7c6112002c220f8e1971e2ffe67e624e7b5888b1e76ec6feb404bd2879391a8faafb5ace7ad28cecf8667a476c63605a65800d02cce1c5cfdaf7b390d469a583be916464907cff0b6029031d6a0e0f036f937fac179f7039631acdc49ec5f94d52d2f5c59fd01a02c651c9098a8ae727f4e30d0181001309ca4c3c4d2d17f377c8d6d024e51e5d582de1b47c63c5ab54050c755b4234028aff2d513e15c57138627ddd0f924bf07b8dc13e42dce633e6af9b0d5294177f6977894e1a92518ea3e7d007216ea6cd3decb05de299994e4c5d7a2f6c040c51b79eb320053996eb599010dfcf7073958f550bcab8f5b7a8a89f2e21ff9c33dfa7985c9c984e5ab38cbeb13644c9f77347c953bb4840fc8196670172c487e86b75405a0e3faf31f152bcbad253234ea90bb35c55f6c239b5bc0cd6d52f2418eca0fc85346b679e442ea70d88e8cacc5ecd264f95c0a44a1832b767cf21c9ff5f100af3f43eca78ffc7a65c8b578e85e33f8c2deb390cc238c4d68472371d61e34498a830d3683abd6a23ac078af94adb5b4587546e0497404bb6060f078a93b467d6a0c3c9a576cbcea99966352f8eaf187baeaacc780cc00d029c469c301fdca5d9672222cdb35f9cc48b2b2f16c7a137979c0fc70fb9d99a6f3e84fe8c8dd168f0aa0fe574ec9714bd895685a73a220045182fd4a10698fb9534213c5da64f9d1372a576d2c012951be2adf159e1d548561daf7551045deb69d173dbe65ae6b751b58fc47d86e8ce998488aa7063c7ba4414078e0fd78850b8704b265290cbf21340db08c3eeff43cdea4bfc8bb00427d6df890e9ea736402ac986ed974042a86a59c639863bfa235b5315c32909bf2f2dbf71cd42de97babce8af30e75b26c533c86478f232ae8c7b8469d3c0981313ace5dace822314a1f65d941e9e15483f2b54f2d02b2cc337b468b7479e4ac740f41f897d0c7d04ba2de80321fd0015ff9cd13fd01508e0fc4249fe21b1a877f3452de65b157ece05109d61df8c2d2e0d12c8182c902b6180b5d60a688448efe85d6f37b2c6fbbb289101070447ab38a960357c3092378034291af6ea600b6d7f614494e33f2463f5f4a507c3c444cdac19d46c28c96a80ae4761fc8271696528b268b6cdb2e96eae53e0e54f85f3916d3d68e78e24a7a84605603ce2fb7b1a473f7254b5eeaba6dc045b31365b2f653ac8ceddccc03a294c50b3c082a867e6d9ba17964e6956699ce2e39cf535b645cd36f6699174157ebb1f52df0f0cc6fc4d164c9164c0602841cd39866e237221c7965928851293f08719100e08738b9bfcd6a22d2104f2c2973c9168533d564a8997eb664c74dcb09d51b16fb5b3426b506e94464ee849574b0262dec0a893c3eec017d6a0d59cb442992d4080188e6fff7e49ce0be164f0503dac3af124fea09964df261001097a14bb1d3f787d0316e35dcacb6fe496be5b97867cddf3bfec40e95aa478498cf235561af3d3699e4b234f279b4f30f433c83657ddd8e45ff14e26e9eea2e27dadc47677f62737470bf6f2be4007dc9418235928da0885f0c5fe7569491f800912199dd8c849f7f712697f2def9dba09ef3be71596730ec8e88764f49184135e561a56843cc13579761ee9fa0fe010c498921f272a30017a0f929196b83ba565224dd1975b558a72c9f4b7d3c7208ab97a9c29ffca2eb69c079920dbcf2ac7795750cffa7fe62a906448bbb087a5c0e66ace6a9177fa40e1d413248a1603c67146c7e3f66b361db5da4cbf8a9e7ca4c5acfe9a90ee911ed86efe40793077dc4ecbf1998c9f45000710c8f46b83f524e2b68554810cf40687388d5a4dc1221eeda07ec778364c6f0db2b4f7b5b7032b6614daffb49700ba3262ae622a10cea2a1cade4b9fa71bd879fde958b484b4ff68f5ebba9868df0ad9b2a9e4cedc5e4dea95c6952ff8afaab538822eb5331eb9a603768f163e6db5d54f97148dd203aa51340a0a467dfb481b8d93afc3a4d2449e9f25562bd4959772d5f008df03e34c5b689c8db7f574f2df594db7611c950fb893392c23b951581e269979c4300d77d3cfad85a339baf214ed1e18a17d5f9be055db1fab4a7199c94485484e6ab6cc0a089211f273c805456d787c09565944294c54c1dddec2ca1640af957654009ca631f9c56b75ab38c6c2c71f34356f5430c8cf02fd6ce29f48f028f4c669efcecc253a31b70e643c57cc1421116fb0927ebd8c86cf9360bddaf54b34518a4e0af835aab8809c35b2f71c41c5733ddf23d11f562dac4fd7afaf9a930718509a89619904fd045290f3a0a33e2fbf32bb587b280655f940b9799af920bc7704057ec8b657b90439ddb565edf49a38346462d4bdba4863b868e4c102553c270d5bf8b80a424635193f992eb10fc9f59b43ddb4f0aab4105849d36dee6baa4f7a9262c277ca6e3156f8debf6f724e91e01d3709e034b26d52d60ea452d3fb82ce63ad1a974220d133b40df82cafc3dab44d6e36870919ee264b76656e55a164f80d068b0f4cfb790cc84daae18fc33334a05b27f0a2c3c454fcd44be31b3b08328166444b866698de8542179a075ef65ccf84262ddbab968280ac1925c9610db23d243a5122ce315319b16ce96860924d1549ae502de5d4c50bd55621029632aaa1b98a00912c1824084eec7fc059142db11243bddd61bb1cdb84150b506513f24c9634de59ba90909b67d85956ef67de78a3e9b2b153789a202fa3cc187c98d2038ee7d53029093b9b0a07d2fadf521cf3fadbb81c8e182a4a7d5905b7026038313a24e04f93dae11df08651e75441428def19fdaa8bf486a171d730dfe49f06ca426d388e1c23f5cde3c240e51b3ba3276c124160533b54ff34a7b6a183d22171e3c52d19fa8777819df5f12511f23f0861332e48b03ed31a6c1da76b84d63437e266ad4b30a7a5a8239ec823e4460d2fa741e53184598285aa8e16771aa8d6c217554c194cca7a9a2bcc4789683dcd2bac1b4858d47481b018d43567fe070bcaf3a8810cd9265d314abbbce6f2706e346f346236ba2e3fb18084d5685b95959dd052746bb23fdc9bc40f2a5f9c10ec858930422f697a0db46f1552a7b5ad01c95d1ea0f0fd94cb34d8c8131bcea9df33b66b349808fa28d1d9ce15d7d80f74d9c112a69335f6f61a38c4b8d8c4ee526b2887cbc1751d5e3f81e5b322e837429e3b37b5b3996a10150e49e33d23a1650aeca0cef4815d44b6c36bf55f1ad258340a51dba490b756a3aae6f54c92cfe526ac021efae6d5aee810590c715d40643cc4fb93f0445909e0bfe5ca67740a5d2b56bca42f640534c0ad0a4c5f1466d406a7a32f3f202068b41e76458e25ae8b320968114207ecf11357c5fa5c171fcd0419c292d581596f40d7053dc9382681e81f34ba118efc4d002ec51c070b6f03a0f3e6bc67cd3039b8fa41cb41581dcdc61f982f67923a95fe763897d5e225fcc939cb0e4647b16c47da3534577200f1e2456cbd80c43f40254cf3311361a8658e06b28adbbedf9e676bb65e71fd716cc01b4bf19dc5ef38f1c6d48ddb4ea9ea15ab3824d417cd341085fb624b6fbd10b3930238e7147165fea148b4202557e74e190095a2d774292e8b184696c7b1b759094160b561bfb9f2e31c56d2e1a85c684659259096a7b5f465f32ebdc72323c139d7f23e3ffa37379e9d5dafdea395f26f7e8c2da506d371b6b339ceb987e3acc181802aea3c0588ad08fc4a3e8d1420e6362d796ea65cd440539c5f3ebde295c02d7667e0065d9b72a6750bb66e0474f31b0dea0089359b956426bb1404e004e8929eb49d28120c94b2280ac7b6dd884103b5c6874577cf41a98583050aa04f0d0326c37d783f1f42b50167bfb5caedd317eda2a653b22d5d5cfbda2e9b991f9c607ddc036c1ff69578c6cd7e7879700ceac688b5f3eee83c229d9e38100516763cd8551ef4acd14603f3b933093225a8471ccfe5dfc1fa2cc4c00abdc8a3aa6f3046e787036049c960f5a172ca6a9e7acf75a79a259d669ceab3fb55164df1c3dcca02041441d45b3458e250724329fe4204ddd4041ed3512fb0555cd014267e47bcfa47e52bd607605c26912996af6362895173d743e71fc6c20c354d25a12dd15d2aa57b6a4fd3101667929b445068a741f569d259655abb839e95cfd3e1f5ef259883a0d22af5462e02510dbcaa5055001e16b55631d2bf58e042232b83c1f4b7a2f03ac2045a8d7dca95009bd79a410a6771a204dd92f5209fa3031ccd32b6bf80c90a689793f5c68f798ccae8dc0120ab22a4871a2e26bed5f85bc72529c4f9a960232987f521594f52a4f84d43c9f99d062c1d6b40567a23653f4ebe05a38eddbad67f9b8614da133cc91617030d0aa80a55ff4f01ca255a524e28943d2120f919eb81e76306bccaf97d5a6425507859a36e99c5d84154776d4dd9ec57479aac437bc58247c3bf2ec06bfe1ba547abcbc75d048fbe8852f24fe052132def9f1017f4c911ea23673f620dab7e440801cbcfde85751b13f9087c25a970ff1828d6a65afbda7278510101f2bf203473aa6c79dd14b6c6b0d24493482e4094f9a3b3b0118a07e848dde304227c6bbd6ae051fc0b8f1486f617793acd9dcc83607ff2c1f3c7ea850cb93a48c428a14f691494fedde6429fee279d796b834f2c13e8f02b346681e426d26cc04fa75c0f8098d76423e6781892b3fb35d597d6f077e418cc6f67232f5db293ae291d6c0c96c27b6b44fd63d16b0e7f1195382513c65c9d933c0d9122236ac512708283f46d18ea0e533d55994faed1db78bf6191f3ad1cfa82dbadab23a8bf7ac7f8e2c63ecf06a28ebdebe001b58e4dc656dd6c30e454a549c9281d9997ff9d996e3921fbfd5bb4dbc203e94c2f064e759a8e171178942dbdd6bd5f78361aa7649bda264c0f2d88a04af1ea9de878c25730aa5b16fe58fee966112356897ad0e194f50546d28047290e67b53e089fa8fe95ef72cb5602bc06372cc903fbf751514c71e9b5eb8125d4c3bbb36eec54154ee29ec74a58b952d3755de825051670039b01d0411c3635477d5c8f050a52398518e2fb9a39de07ae08cfc63d25a3ffe435d3092c4ad490adac6631b59935c70d93d55e647cdea294f9b5a8987632571b893b2ad0c45104dcddee68f0ebc0104e6cc981378497139e2b129cf132ab987f045be8e118900daf128290f46e1d4e7586515d13a47360957327cdf12b62a13b4c318201c436706b1dfb60596265c2bb836c0409a5b17ee8412f40d0d459efbdfb332fecd60554f334d50775e74ac00791c5b7929db1a27ab145ea8e7b3509a3020ea47388d001af0957ab44c1fd025166699ed1a641da503540d37e8da4a7694e8d6665705ea3daa8a7b23b6bb6c2994f86ee4f5ea3e49ad9a82884d4cdc0852573f25741540c6bdee50374e9f73ab283715f27f821a900d12862bf48f386940873138878374ba97099c8cd295b0ec35c585839f768908ab90c6029cc1e5d6884a74f56ac3298d155137400787cd00700c2ced9da45048b206d31704cc41151e05685c0e9f5ac1445c31dabd8d583c6320242d9b2696980bd3e26930f3034a36c051464ef14d6031ab963a93fae240321d477ef23b6964bf70f8f699e8a9646a28a4e4e5ea4465e0a843556a6a24ed3c4c453507db7b7a03755b8bc88dc1e6c7ed9547a2b08dedb8df2dae67d6146af5c9ffab29e8ea8526031ef425a2348a21978c5d6168dd817c01b0d403706756466b76faf7d89aeabb76cd593cf9a44764e9d1b9a524a28a9e44a9d0ecb3d0497a824d4dba5a0c3b1dc6cb35590b9c9b07795e4e8937b38e0a460d28c28b1538b03a4b061408322c692cdbde168e789f7db20f114ae3c26621492d52cfd9d5132a385f9f1a11a92493b8b9f66c40f92f81461c4cd0f23b9b797b044b22a6440254ccd6f51fa243a9082e1b3ae56826d55e9e06abf426f32829a35fd24e59301a8cba389791f1fea30ca6b3295e70a77ebabbec2580cd8859fd6cc78d62d81dca1901b8bf5f1ac598e55829a607fb0dfcfac10dd5324fdf00e6cd2bb6f6cb9a2f227507553a77b1ed8b561f4e809637adae2e62b33321f7c3a33425362ea37cde5bfcae74513b38f53d7d5f13c6d6fefe44e879c269554b8fde81a60f6a90dab4de9dee3ab584373b68b287be36a535e1ac7f06a8d4f4ad2c7f444b9784f2504b60298356a55c0ee2878a62652acf1e6289f6fb2842d008f41e4d38ed2b2fc895a52dc462d9d7fa0f208867b10a8be438c4907f17b300d60c1acd59281bbd17c89b70673c06e2aa0b5e40c08c724ae88cc8528e117298fec74d2c1105960114b75d128ddb847d781315ba88bf9e9ab95d96e955c8f3112affb04d2ead76a7fcb52fe7cdb8beb981ec6779b931235b1b7678182ca33eb2ef5fcf281c5ba38f8900840a55202b1d0e7e32ab1417cd42d606d9774beb695c1d90d0108fc99c3c47b691147492c5b16a67211d2655c7c0aec438deaee7a4c062d6c81353b10fd2ad0b9cd4539ee7ed55e828709b27eb4e6dcaadca2ac55a305a331c049c09352435aacff53cb6570a3cfe44d2cb640d549d392f24034ad4e47611efdaca3bc4e67a8c811ee37bd457625edb45d34b7046861bef4a1fc133343e993fbf964a4e2fcf45708d21d55f24f3e64e9119175e3091f21bcca518490327807f975cc812b20aeb5b7bdebb51e713a549c9693bb44c33c6f19a5f0d89caf0667b7eaa5003e87cf5f4c360a6ebae07b104b1796d70621b7b883eda5d3109939e996bf63556e1ad9b23e9dd53b2d8753ab6f2a8a35a8fa50ede587c074ac1f0df5e139dc072c149c05f6a1c8dae0b03ea2da4455a7f9d62038e5a4597878dce67f271a61b352905e662d9e75e954ee4488c8f0c8bc40302345d989ef051d173282759f2d4e146086f0c340655cb33eb478b8f57da7406bfcc53ecfd0ab1420a2e14de21a88bb61f84aec69d83e923d9449183cfb4ee4c99856c18006b62c82bc231a5fe5406f8b598a5e49d633d3276e8d79ed6a35462c239b4c883a4772463ab6b7e0ad2107ea0283254947f5315e6e2daa4e0fec326f8bf2cf421f4922d6f2eb6b7512488db4b0cb7ceef936176869cf069fc9a668592a0d12755f82b0dc8ee6de972c72af7b1f7bb5c2ed363361d278f9c0a983795a896a506300cf650c06cf95a5abd3565505b691cb5bf6a619925591df107c3be7603bd12757a7a861b835888dcdc48905c4fd8b0337bc4ceff6b9ac859054d77b9f5c7c1cad9180b242afab25b38a07c325ef66a87820276e1a84a98afe0120ba5a81a6a3370db4fd3abfe5d2ab865f900129f7affcdd8282b8429dd79aacb88476c55c653e182a2db0c107702febc47d5a50d2352d1d045156814aacfb694c22582c0e091b6f609df2c4517b30a8cd2ad5f5aeb68decbbc37567cfcdb16f147a13edbe01b94222bea8dc555e0c0bf7aa9404a2f0db527e37930af73c1797ac62b7257abf42e68e1b3c10ea00e01c016da2400fa1fc49050b6c77892d532e17eca062f74e6ccfe15323c6156e3d7c66df1ee8d92520f5137eed7e8afd5865587872e5ab41314490c8ada79f72236c5218f66ad050b6dd5e6f3232045bae91406ddff2cea31d87cd7d5378a59e3a69652206696fdbaccf16442f7514f15f50318c5fd713f2c23fa9b7229a15cb695e2a345bddf4e9d52ecbebecece8f084bdd5d9936335750e010094dbd50ef653ee70dbb7bbc4fdfb69884da1a5c58f6bc4484a0837634a979fc817012ac17f8487125efab3473da9e29227a5716e83a4738a3a681a10ccd8f1260f658e00ffd0272d259e147d30a5dbf6ff9f5cb33783f76c5dd4935d483b3f2ef78d13da360698f654e33d0c40fbcc7510147a74884ec36f88ca88f0cf0629f65c1bced9508539f86fc13bafaba8a837b16a5db0f4496987f4e1dee88d9a1f5a9e7652f7f8ffc81e6fd0e30440e458a5edaa4bd0ae92c98eb302ce0cb04b6950fd3f9a224e13c8d505cfb969045ad3faec492862c863fca45055c88b948df76f6f3e460997ade932bb4fdd149437ff70e1e7047aaa5e457a9cc61193517bc7f7f3ca5879c05d748ee1897d71e0cccf0d12b17d3da0a87bec07f86f55762a03d0cbc9c39874a3f5fe6a8800a5e014d2c5391707814a8a9236b828485ac65ff98c87de2fdfe1edc20256e0b9874759b649282908e4fae8569c41170dc6a90d632137b4416834aab72598e8644b036c36368366e05d86a64b11d667b88799ec3da9cfdaf56b6f1450d774ea82c9452af632708c59018a579983e26d8582fffca64bb346210bab8ea5dedd65554580e9cccf70f8c110e31c60f1fe178b8bf9222f7ba11f14b309b72a7a847ab6f45d7baea64f74c5c6f436bf76eebaa6c683ba32fae10110957adc68ac2b930fa801060fc37950321153e877780ecffe8562b00a117355bcb5c76dc87c277edf3ec54e018a63f83aa491c2317a76a32040cbe38e85bdcd688e211675b0e736adf7c0f683ea5fe05c4ee40db610b976c8ff7fd1d5bcb6ad2d36d61299a4993d2753e557ca4b7605b33feb5815ce97b575349497fb8a66eafbc4e9b77553ab2ae860407d90654dac7130b3745953fb0cd6058863ed0d75af3858b114826d550b16358daa1df22b79883cb1e00d1022aadf89782a26c5f2bc0f7241e97e69b6742a479bb3967a17d72a9dc57252211fe4b1615571fa272a0fd90c2d269d7cbf9af69ca15c13b8b38611d40cc9dff7a03c1981738e593e1b71c77d861818f931fd3e344dd2c347accaaa8b2a9977e4691794476fe84834a9f4df7071fdf6ad122a3a49b3994aef1f2b228e3706bead7e6d7ea22a459a2bf53aa275b3b5aaa0e5570f9907ed3a57b8cb7c04ce657c899e7d82b724a6fe09d933f113eb18c0ad468e9011e86dd9812abc7ffdb403cccb2ffa196e4d559b15d26728203e8a6741b8b16961734447eb88d60e2418d2cfe58406920e5121b4930772e092ddcc719489cc4d3a015612736fdbb7644d17efa5b4dadfbba876ce2174b612df932e88508a8bcc82a008465d1ac4bd23a12940784e1f208688abf4dc1682ae86231238b16110f83850bec9de61f2de7cb3021ac70d4c957e2c0d50cc2cfcdb6950d74998e6fa9b54ff248f00aa955923294a5e44eb6b4358475d415b6e796b2735ecf3e7c04a10be526236da95923a2935af3efff3417c873a2be3a70aad69e3b29bc404eb61876f43b5526370479aad6dfaf0047609bd389f9586f3803aeb3a1406091cbd396fc2b4624322a08b4cda46bf4b4f0a2f07fde6eb0d828f3c0738ed304a7071408aaab3f82f724369775a6b33a9295565b17052e98294d08eb13d869c30ef9cbc5f77069ba7972eacad78b3c72d8e8bb94eaa33318aa9a59d509bf4f17440a74dca1ee8305deff34f3d8b3eb9e9e69780c903be53b6cc09a5c7445c7116fad1938b3cb0ed4293657d830bb75a684c651c7550384877b2446f45778244605a0de9320a104f20a91b5fac7c1ba41fc17e6c6e1b63c258252757b87f603f54afbf388dbc4e10338c2ddd66d572f3074dd198c18514e67a504d7ad2a5917b5fbb35e1afe496d1e00953e8e9d21a97e1d48d5443c9ead258021e71241ea4aaf66c4baaf69ca0d7f60c0c776dcf93dae9b8787d8b5b01e8c342dacd514bc48ef0419b4346bb0429b0c5b6473d56b7de89ea31d55908c81b4764a570b159e5ef377b668800dadfdeba32ac81eea61b72903c8347fac0967edddf8dbd71afb06b8f70cd2ddead93586aaa9308e2ca4f5bbf3783addf5bd4a0dff85ef709b6063559b5ebf503d425003a55669f3ca1bce8ac1fd7402450c7e7528e186f89964f5b2c00322c38c6939e1152dd0abda94722b2b4052d02946e5989fcc8374fba428678d2b1e048510fda2e6dbf805aaf3317a0b059e37db36bea395a07465322b451a4b2f0eb02477c72b7fe454cae9a90914c91ccd0575ca768e1130b0dae517df7b74695835db2352ace97525f3aa78ab1aeb2f00d594a2402a60e2b7214928c04604aa2789cb2ec2ed8d514b7fe9c767e7edcac1114868d8664aab5fc5cea790a69bb7ca87e6737324a70937fe16d8271017878b77254ed5f38d8d3d62c2976f465133bfa5e6f227d5337913ecc11ddb0377488a5ad0fb6d12429affc0a79b9795ed0d63aba0503d30c2cadb7babef21579f4f911fa4277d0dd51ae2f8e09de42d1736ed3755afac121c0d69d6ca5f236d82f1a489a0130419f2251199c972737ad5468c465039227b9a931aa4701c6120ba44f834485c019788485caaca1c2a04a183f2eb2e37050efef536605a886b860f87a4d80ebcb6271b8f70afbc0bf04b70ba43c7d565a0d9561aac154d5315cfed6c284aa04c460566294d065d6a4545b4426ed33c0a6dd3a974a98cb1a9d6f769a3c678e215ca1b29187be51bfcc01a934497d3e585a3bee081ca912d6a5a497f7b13043944d3486d2dacbdfd1818d25347909f92a9fb8b6ff2ff349a0948fea85d857e5070184c32b37c943ec938edcb98d26b56df02e7e1af6bca46cf06e2e1d513ec35367c6271c48031694f3921e5dd55b964da37e8d237a07f9ef79b5a5294cd5ad05dda247dabb47e7e1913fd34b80787c7ad9f2b16e0ce4ea7879d83004343bb003e8ddbaa91478e84ed2760a2820b6c6de3a41bfd6abe0d64dae9d1663ecab7adb141a58a5909c9ec22829022201a031f74e83c6aaa882108de87dcd95e8405ba1b67bc6b27cf8975dbdc2128d0bea363c85b546e9930897d06d3421d4864c9a816d4163c2c2eed8cfa6f6c756d261df6f4f30149342e2a0c94df4f49a95c0dd9d884e0b0239154dc2c17d1a0b5e950f05178e2e6b9d16ac638f5c6c1f9c7fe16ef4bef1a634ece1899338fd899b2d59fec715c811e0c88e88e7d403d6e71b6b63333e57aac60ef8fc1e2d59719efa6ade170fb06a1abd49a9c51d58139b02c2beb7945a0eb0792f1a20abf00e7dd16af3baf081b5a41e1031fa92b5ac2180c55f26c6c2e54da1098f4bb2bb4aaad93219cbbb7fbdbcf341bd2a6faac29d4d5079adb5c4ccd74479f988b1a80979d5acc383457978486fcbf3753bf884d89e04d63eb51073abf278d1e15d6ddda05a59b362c5dec700e49a303cc799631afd4e50c85821d4be841aaf7e04576823d6e6c97640964b2b030e03132e4296897a5e122aa592432684f409431f0465d479256453cbdcd83a97b2e5ec0659176989b541a704bcb6dc457f89800a09e772f6ab7c960202e6813002c76e4f93fd68776ce977801a7958b215550d7cc76ba6922621fc0884be51bfd3b7934787ab0d93cefeade911f46b85d6cf908c1e9a96532d8c2e0bfdb6a2b89996aa0ccef8fb5be103570bcfb8aa5d7a10fd47597299220233ba0a4adfcbb804716fe31997570d4e54bcbd5c119713b312fac74625816285cb66b0a68e47bf6940f423b02bb1e0331915d3e4cc94ce906de9a1d43047d4684ac060b8ac7b96b1263d0e78964f34c8ade4be1c53dc93fba4efdabb03adb007fe3b1b5a396511529cf17e7314ce92459cd4692a3f0aa0803e0e0eba3cee0cc2deeac5c3ffcb59ff27b376f045df1bc8a096f1bbe12b320db0c96739a10aa26680835fe97596bd6fafd342bf3632815063c34db1a8f0b874b9c6d0804ab090b8d64a44d1035067b83f25989f1ad19306ea7b090b277242814a9863a04bdefce3c877eeaa37acb697de62406d420d260fd4169afd8e9f1d2aea390733196e25064763a21fff7f373404bac1f8984fc55955384659a657a03022e73ebdef91aca6e5d8b13173e8c1c4ec2853db48a322ae70302fd18540b2dd33cdd20ac699ca81e1c949fcca5d40238cd900a0d83098dfc11ba644944cd3dd8e084c3412e1b3e1e4f8c19455eec7d37f1ded6aec2f57127c2a5def4947e0751ebf6ee72ead162a41561273f378c2a6dd28457ce33afb1462f5c036336c6f385a85ccfe20f93e46e117d26c7a1a98113911e5e436e07548967eba1ab1d70dc45d3791d482769a0b96d55b453ffe6e5a595a0d44ac8d95bc7e1d76ce52a9db9baf4a34f1b0e216eea72b698c8b936753351628e04fd65575c624cbf1fc9438a13717351dcf4c6f2a31cd329f784f49855adb04056e76f107e0fc59e788ac4130b20638a197576e1f2b94073163a9f0811abf945c1bb4cbb1b0b11aca01721b46a5ce6a587144f87200eb5558cfbd8415feba945b6fdbebdf6b4b6b167e6fed5d005dd8cae7db833e54e965b5960aa69d26af94e68c2b0c9949d7b5aef10205c3e93fc085f59e6099f5dcf8d3de3da7d06f5650744aa130499ef91879e07b66c917a106c83fb0d6c6111fa3960856e9b26843fd304805fde8d831dcd78c5a7ace95ec8b67f22d7db02ee80d181fef3ed750a7b15c3c1b0d0604c84573ca1410feb80954dcc2a297219bc23c4969b081ba0b044002250a4fad9457529d7ed59db470cc34cae53d716b4758e1d041d559c8294c0952550953a90ea2795fc1e8a9895ef7b97715813b0c6eea20aa6e4cc37e8423e5ba08da7a697f917f70660459e596191fb898ba59df6239cee752a33009e41bea883301cf743ffb611245090e58b0117b38e2eccb34cbdf2d19376411625ada40be5227b39114a62d150b2689799e04b2cfc5927b19b09d31960800c34cb19a62633a431a28f24ed17874423d60ffc5b9040a68d000d7928f60c979db42b84f5a0677f9f55910c518f774239248b87ff8ed66eb22c0d43f545816d31f0f958318a11590218435596033ddc0012ec7d2a9a818a652e84c0062312f0ad861fbb9b047d14481901b5e2ee80bc1c836358835305a905ec2b920c697cd150c26f6d2a8afa5a34f6a50ad19aa1a7acd0c5a1f05cbffde8d1c6efcdf9836b7a2f7c78cd026dfe9113a45d63306e32b1ce7c1150a6a8b020e05c5cce4ac8a94a601dbdff2762cf6120334b5f1f5522f7934af047c384cb8ce12dc4525179c35c0965cf0e548d3e8506b279ad1af8f8a52bcf8421c82a0b3bc7d6d430345ecea5ad413a817649c8e213f2f80901903b4add22ed55f8de8164e922142d804de3b80b5cd490991bb5a9c6b96e4eae1a1d8738b8bf593e1bb43c7d4132f495de6642f3b268ca4052263aac406860ed1740992abd930f4a4a84739024c4649ea0afaed2c0b7f16bade7b73c74fcb5d0de35cc2d6316b7eafb85297c012eddf9442fb60454e4a8f6897110576e6eda1a1b7c1d2e77ecffc256451b38a369c14bb8e836309f0f2bd8fa3999df2e3be7540e7a2017acc4fd9be73a3cec2c12cf0dcb4b2fe9d8833c8ce129e3db172017eb8355cdb0c609a5ed079b8060bdf55feb2805fc627c2b9a37fbb8816b59a63311cbbde379090af5913ee18e76e8ed471f436e8564b2ee7baec9f84cea55b14646792839946108dc7d5f9e85f9d5d5ed1c2691b0e4f43e6519001b2508005dacc3cc134e312e985f0b5c03ea5efad55b546695ffa600cd0a557806ec7cb52ec79052adf7c941f6c2b9669f26fa090f654e8a8980a194d6fd474bc02ee214082e4f072ebea82fa97348826a880db8ac542a7f73ecd998c89e2b9b95e755e6feefc46db1c1ea4f4e87ee203e425bbff280ac851a4ef2142cee6cd31b484e95587cf057888e9826bb782464178167a876a0b752ca670274884cbe40dfd7e2504f8bf5ee83b6569e515e0df5c8c7be4bcb82aa3f42bf3bd801d4f1c23596a85b8a2d672154f41a69b8151e7a345abbc4f5123fab3cd6cbc239a7f478d2038f2e77f22cc0b3dbee6f511ac42ce74618b6cea211d34c568f6517a1514d748627e57f7ffa83ac29cbe412c39b1130152a5805f89a0176c93946656db2090d79aae00af5073168a2023b7fcc90ee5f8d40dcbcbddb2015f18a78de82d672a5b4e699c9251a77c5c004a9e7b40a5744bf1ab5d0776ac28f5d6553d1c25357475aa78ab102dc2b675651c982ea96ede92ee0a6d6be8537058efc7d31eb73e194f57dd115646b561b33a475e9459c81b08c4578bb039398296389abbda54a0d4e84b458c475b327d4b3c1a6243665b7bf4bff7dcffbb1f90a7ac9e20d1b0ddfba42a741536d5fa027a806b97ab5a52bae2f75cd9d30507c740b41b79bb6a6cc496b787aea09962d6af3ab884eb0443be9a81d5f0cc9b4ef1434ba1ef2b2fe6458ecc687581dfc6b01729421089cc57b3b58a56a7ab7d4ddabf4c00c97cbf6a66455728f01de257568023a1206142cfbc3953cfe4df7f39960693192dfc7debd391c6c2309d6b11633dcf0e7908d30fd4d03ae57ce51f99026567664440031db315da3333ab5bed8eb28809f60ed4c27147571759c778986edf52a54588889281eb424a86f55631539617622b5373cc4cea6350e465b0b43e95945773b88e493b3a23f668a638c358a77dfe021b244b25effec17cec462a2c8c1f0806c75ff89ec8b5f582bc02d767cfcb9adefc943fc03e43c3fcdf4905b48b022a5305464c305e723a77ef8f8b5c4d303daf19721927cc3a61966f95f6489182b0f5aec84a7fa7c9263bdacebd3f6ece6dbbb4096a402286c4c39a21009750a3cab3ffd8444848db5b6e2993942949b90346045d045904df6309877f037500922683e1ff7b48c10b20ed050f8a5810cabf39f43cdc2aa87093a14bf0ceec04ff7902240a5e26f3f109e5e87ce3ffe3cfd9f638ff510af2e3e742d30712636c416a025cf7d946ddd34c2e042329b8bbe7a6d3082a8b1be1e0a40b3d51486af0c2e9ca5c738c25fc979c0c437038c0f0d034e45f18a1c8674aabee2f8f327bedee8e9ebbf37f277c5fb61531c1489c2d679ee0db8f5fb3d7197e1c1bc1afc7c293f5fa809099a71cf3083c733877cc56712cd76c336a4219b550b38db11b204c2cf6ace65cd8606d6424e4022292e62874c5908f5ca8380da1276811bb98d99d51e27e59b6e809d6d6c50317586b27b550b1a5ec135290dface9cd33c188cd020c6f8c2f9461681fcc9fc2f5ac6dc0c6066cae5a6032d1238352a7d92fdd9dae729490d50f9bed9edb77a5ac38a9d43a9f3c73f466817e8080c6c408f463a9cbd53221d1a75d597eeea6b75fc62529b88f4b113746538c4b4c382a58d38d9221c79899e2ba059d8b6245e10f81089632d085416c46946333230d629db5a47793b8ebd39ab572b4e5a0c565abc976a845c11e5d7a5796d21559e1a41fdff5ff442ee6fa59f4e82d7d7c726681f9fe0ea0fc1314c33187f91112fa09a2f6695c3c850192e648ac86588ec580f247fd0c09906bf6e303a5d637bc68e26588ece685457400e24b1c5f34ec45855c7fc7e552202a91eb21354425a7aace11cdaea7e54c5b2714a119af425a4ee63191a201132370c34e2e8623d890a50b4b9bcdd02c21e56e3c86663d661e232a727bc2248aa7211b8a976ecc88525a2bc6b158ce710c8e52af768cc79a213cb08c8624da1163aa6a886c8729ac0ce1c1440a294160d88f9c498939dea277c59568e9dcb96663cc37cef2d38a23f678069ddd5ccacf82b359a633534ae9ec06a47eefc15e1101a20f1940c7880098343afb5c876c8f8fc795814261d06a072b86815a3fd3e70583bd7c5c3f2d201c63ed58058542a0ecf2f87ad8a19a7f4669130027ea00a40f50805abf76619e5c3942eaa3597d264b7aea84d232f7f3e8bc98b26ca6117b758877ab9f6dcd8e5f034a63a6d9a9e75edc6f5a7baff85c7380fcd9a9054044bfdaef82e18a855bae970bf6af777debf1b37ef5e1837fff7bfbf5ffe9cfffff5a9759bf5973aa0540f4d57e170c572cdc72bd602e9f1fa0d88e2021198f1e437946038028001f020850abd59eb8ddde74f7a6cc4abd7acf98eb7b159fee73b667263d38c1b3c6cfb64e00b09879d2975889122577da496b96fe7288c97f959ee77943de9b6abf0f0124fe65b53453af34cfee5652650701c4928f8d4e4ac6d5083c6fdddd3298cdd3fd7dadcbaf343a18e30d8124deb797dd442888d1192c33be1e4cabb0ce4479daf324a51adf9563cc8064aa885ab59144d3fe334814ea4c930bde39420836418d43d3088aaadb11aeb21fb69a65aeb5d4dc807e24b9b285e66c9d92c40d76ecd8313aeeae1da3ec382614712323221b08f0a599f0f2ab4c0c3e97bacc097638971b9c105702f56ae942470767e4d93c9b63e81e8f3c1e3d18c6986fa4b3d669df8891dd6ef75121429e9e9e2e1882b63fcc8a18b78057d2a565d92c6dfee8a06ae69cd37d76bf7b7bc7188bf09c26460bc4839f519aacddef74e28a2b888375db64e63647e0a03741e01619948b1652f440f174e015ae0aa147a94e61981ebb05bfd6b066e056943f12c679c6cc21ea2b8f178ce5f0e26a62e5896ae581025bc5a184f320e170c7626307982769e526bc7692c22c787c725481735811b2713cdd39947eea9ddc8707e8efe06c1c169de348cd0b4f149e2d60789af05401ced184e70abe73078f12909e3a5a19cc11d543891946955d1d466031e28a1d107e600304146cb8d1b2c6c7444db2f343389b0c98b575fb80fd43028d086f2b99b9bd846bf2d261afc23b556aab0c7aad612c16e69b2b5863acb5e60fbcd7d59855d8929d365a8e2c6eddba35b57ef36a654b1c51097868d4410382550c91dc231259deedab94dafad9998c5ffc684461724d63a64bd48828a0c71c3dfe776b0bdf759c740b1fedc699bd75fd16a8125da25058567244da933ed73d82f041fcc03d3b9118731e540df1282651224ddb6ba16beeeeee6a7407d7254a2d9f824c686b8ae98081820e556e825b965aad807b9597296574cc8cc799b90f733a941b5cd80001c52be38d3db5588b5101384b4f7455e4eca1e3495b807091a349125a726b5401c011180a0e2b5c7c4de2744af3a4ed93e669b9f256ebfe6cae79536f9aa994533a132da2bfd32aed69d963cc32cb084a9a2f783f1b6db6deedcb5f91050dbc9a62976070888a0687749614818112730d69cf7b68c0d882c5698d26376b86d8aa58320513a6246290f996f8216c1967a7c5126bd8c8b340ce736e81922305d506173550739a6c5113fa200427600b7653b319b58c4d7c1df8b3a286c32e272812b638b74b18bf517a9344460a472296e9ac77beee55bf8dd2576d4de6be14935415a92c36e63df996188d8aaa19e79a6cbc3c12d4d7e06813dc6ba8e654122b5f6ae79f87fed7aacb45066598f9a7a24deb8c68ceb2bbfbdcc2f50394eb3f9f252bfe91c32e2970d89ed114248439655232df5129e49b0dd2db9572d61f03dc0c90b548e7133517af1ed1273f69a37f6d0dba2efb55f9b416a7fbf49e5a7eacb659bff3e75f04dff0a8908e31fa6ddb228a7106cee91efbb22be80139e71a3a27a5df43a80529751bcd36b739385b36636ca8b469b3660d8dee95deefdfb67d4a69a5deeed163eccafc4bec7fd7fb7e6aba56af3eadfdea96d639679c4ea797f9ecac35744bd073905297b1dbbd984284547b4bf251042e62820f4753c89c336976d24cfa3c83dce67c237f80bac4d8ab5385129fa8195d6077e4914c62a2b2ca984a27986a436a2938a1d31479a7549d594619102701731387cc954fb3064e28365ae486c01246d66df210d5a4c8f0b181352aa7a65ea96bf24810ab3d93ce40a5491353a38546f98d560d2830460612adb68ce2896b058132503a5d024ee74121315796114c692984aedd7d324f51c0e13484f6d1bc26a3d812b87e9e53cbaded1059e691b90bba8bd41845aff5d26ee3d11ea03217ad89797427738a779aab259ceafeff3f89a7d35bd25c53987892af624b95020694d2f449b15282c05292ac98e2005f762c1e269eaa2815a5810387091b265259d8bca139aa3d58d28802a6eaa3e20cec8dab8a189310424c592e1d5a19a22e40547c9260f253ab1cae38688aa0907002f2e226a50c2a744b55ba238e8ab6d01951e787966610b11a43f6842a0aa3883a2e73ffa6d02d21dddcdd7551e6004db78a73d95186f8be20302f1263653180b1ab3bc54eb33badc12af830196384798c51e65a67bd59bf09d123b06ce5637125f875512a2aa3838224848e883a4559143db1b65ca95462141549a794e3f41f397402e99e02b0a5fed744977029ad8250d27263c5ba6258a1a55a811d44e5f3fcdcfff947b3ed4e67a56f05edb6f5edadfe35ae3fde6c58b7ed7cbfaf4eea5f50cfa64dfa755aff9c5277777777f7dcde17df2c50fccfa3b43b67ffcdda637503e5a7fd7023b7ceb7beb5823ee8cdd7ca561299d2cfd69f95d65aa90679ceaaadd5d6fa3ee7f4a7f6415bf1f4eae3631ea63fececa4d47a33cfe97316e79d73cee9745680d77a48300f2d4093e53c54eba43eaa07f91b43b7048d3094524aa947e9a4944e1f648d0a262626260c872d0a04d088518158190002eef8ec4a3a85de044edcadd57aff34043b5bbe434a8fb6a5a95cdc2dd52f3d3c256131554db6ee72a786a3a4a8a443833196f1a1e21cc0d4441367bea72a60d0179c5d8a15866c9f9462987bf4c39fe1531b347538a90a6297548fc2db0e5d932b40aa2815274facdc04a8a04079f2a4da21ba48aac3da91c3c4940676437393776140337876b981ee54634b15f63db955ad8ea0cc38c32de82ca343918b52ae91b23bda5cb7bba4647ac6c0e9b3fd8a89bd0078a3c3b87b99d1eab9074889514a6f4a945276c7a02548b2bbdde5cf9c2cfbf14306c28488b2d04fa82f75b284f9f9486968b4677e8ad035e1414fbbe2f84bcd04838a792e158bc57d485c27a08e4992b08d151b9618f8a9e5e47abde8cb61307739f52c2f10075b0de1839394fcacea008154b1cfcd8ea0a02021a11d5617f42346c8078bccb5e40393a1a13076f1090ee5dca3ce5008871565cff88001a1d8d14394181d61555d4285860b8ed79c303ac736808c2356141d104f94ba65bf7100933b8ce5e31e9f466d3d74194e5c69820925a84849c208ca74fb3aa2e8b96eb47678c717bb9e53f523858b8a10121d55bee728960683414223aba24a7781a2a389637900151abd76ae93d2d91c6ee69aeef6d0e577a62f17fe577439604ad5e97e10e01e800371c360309894b20a9035320b85803da3709f6051eb822f9731f00b670763a5cf02834e48360af6a1f369b0ab0c2a07ff7c0107b7a2a06226b9df57ab9d76da693f4fea75d6fdfd3d81c783830e2faa45051dec841d1bc1599ffaccd3e9cb1a3f3b658b878a85e0dab4fb7dd26954b3559bf7ffe3fb445cda48a3bc3f4f0d11106cd86b13719c7db8070cc6c79a79ce195fd2f63ccf6bf7a6e053f9b6bb7bcec9c10c372fc400d7fffa9f6dfda674f0944f833041441493655a5bb415056761ab854110a420a62b1a7eb5d2e872b1a42bdd0faf424b67eb73b95a73b6305e85f7fbecd7c7b1d97c33b4b4e36df74bafac6f6cc94a5794c5ea5e79d3da3618cc8bda78b0488e471a11a518637cdbdee9eb7e6370b0ce4ee30395b41e13480287e6986fb4ddb4ce6f5a6af367b3d56a39c762735a9bd1c4557d71e240cfabbabbbbdfdffebfbd1327ad571919852b16aeb31825d59a757f7f7f7febffbb816acb7eec0728cb1f443229a50c92424176871494192925ad63f67f663f9d42ad96732c863fe6ea55d1b6ba63472852c9899cb5b6a29d4933693ac13b56d42a1766e9c5d5ca47d67e77cc15519b29fd9f192ccbee96b5ba9e2bbb1df03af556c5d0b5aafa41248381ee65dcf1f64e2a0a2a6766cc0346b62051cadcb77f663e56ba1cd66c350b673eb9282c5fb586f8c672ee39af18ae562f790bdde7c4fb0259abf09b6dabd572a6fd17ae58924a16eb32bdc81d4b46ad642e1cf33dd166ca32aa97d350da4923e9a9436bd9e69ac1963e67a955c94c50f09caf46f82936c6b6b3fdfd8e480b5af77c4e05bdcae7ec06607ac2ddf9dfd55ae57c7d9b9f36c17fffecd454749a3223ea66bb352dd5ec55f729aa344754ba3d77a6ae9da25ac9a59b4649522e4d12a79b2c13c17c8c62d5565b6db5d6b2aaadb6da9aefdd51b16c5b27320969278f58f2684a1eb1603e9edb4dc58aa83088612d91eceab0a2d34e0e0bbba85818bb2eebded59ddad95ceb0563066b76aff5bebe57a6c51be32bbf706e655786dd9d993151fdc91e332559b5d61b2458953343b59b9acadd2217ab31f7abb23d3a4d514d85f267ce9d394a4f769431da0362f46a33b87dab524eb77a1fa4b4cfdb41713b289af9a3b9ebd7a25468043ba4bd37fe70a6274610940241e5214012537d2a8bfd6e00b828be00659d2dda9c09a9ac241348709011c3a2c247b47840f2bd20442b98b799853e1760a8d7b23e56b8b2b3d50defbd5f386721ad60852bac19f0eafb3ec0d9671881b6fa6621adc80a7f1a5c09996e6356beabfa53043aa644a063e77d33245fd6b2baf712013faf303f5a5ff97a85db111c6e578ee690efc78867bb008990952df472315cc3acec91b1f218b37661d3c582bbd1158e38d51191590ea0f7a0e5936015b5cadda7dc2e36455cf4a2844392c509063db7156678dd8e0c4db1460a24322956ad928e6848d25be12dc833c06e47405862894ed734982973ebfccd7a9043ee6d12bca4207f4595b05cccac1dacf499e53cb283145548ae0e37784728da42d3ae20f1b20eac5c13163217919ac234357d6932539b96e2116b8ddb952cb20c314b1d7ce625d04b6709a7656c53e4068c2231de98e126caca981ccbdd99a856d94498b0768c5de8aa7051c4a6768cf3ca9ed3832b65ee30c684a4e329a56a1ad8d30be663ca124e66ae73de39fbefdfbf7f635fa7c5ea84b5b4d26b378e5f9d7eb794d77eee019c54a8648d5eca0a0000438600101207c4424990a3208cc33012c6f00304c248c59e0d8a0e4f8381982018635088a1101061300018c010640022c62ac6ca6c000f93572ee8421f0ffad25ecdf094ed6dd37c315c30fa57aa5f6fabc02b09b612627b2256e04b3f5289b0b3ce517bf8ac73e0d62926362414c705ce2e66d1253870270e45afac2c1768d5a2f778b09ec7ba3cedc0582e30189bd399058b16c53fb7825a4e70d07e3208e513fc992f0e78f1198ded5ef1bfb1727952b11c720a750fee83090f80198ffb44f3fa4e812ab8bc67493fdcc2a7599031f5c4ed56b167649832f92a3453a990bf3d38490f64d206dea0df883b511c651c66eab6c5cd06449603716cfb3bc9174b45331202ec3e2c325292270618dc77311a987a230c768a168104809c5376988c9f2014abe3e4835716b535380976665e52fd16a518a639e793a2a3de5c4fbbc03d5ea9c855c3df7a7f35d862bebe05d88328e9bf90292fed3116685990a1033a1272b32e64629f53b1ad504452a104633855299a7d293ca6543d8595c97fdd63b0b1d944b6e91d33b03702f3da75037011a70ae3743c2ebe10de3f9d870f73aa68d6053107b9ff4a94075634d080c5bfbb560b37b4b52489777b1acc8265dfc6f0533451b5e7801a18dfa85f438e2ab79ba5b89fa33b4f029aaa7a4f5ba3b6bbcacc9bda0d3262a371fdf61238c763670711fd9d78e143f3e2f195723e9768c088a61809c172cf21512962a82e66ac92c3ca5475ed84dcf0e317ed01828b8d3c810e8763744161171733293687258c4cd10906d37a5e66038af21c1b7cd26652c3a17246c5b979732ff84e537cac7da57959ce502fd4c3672a9d2afbf3c5b21d2c111fc74986b37863c9e7ca6bbb0598c32897994173728d08ef69f4b1ce10482aab5ab6fb8ea159ae51576e4f1d8f39ecf86c5b8d2e9b4681dc93c6fc5c819c85ed2d638e73737dcecdf8702bb8278e5750eec485c5f40199f1f28036a786ee52ef8230fc07b8eb2acb8b6e3b4143b7d1af40b784033eb7406e9925c3a3e0e0cb92981f59df212020394b3c1c661486ae9283c6586f0b9348f189aa46b4153a1e8965aecb3b09e10269e17f7a06cfa70bf4027d10bad123d9d9b591cad4ed14be8ade061ea3e5145bc1ed4e4bcd6a4069d6c03063b1598919d41d376624d3830a10a79a8dae61159e30dcdd665a23ac74864ea2f7feb3194dd9b1cf8b4374d13dba7d774269083bf9ec567ec63148cd895c62214fee2b049683eb4bf2d445f1f468f1b2668679501c5ee81657539ca87ac12992d3317ad41c316490f03942012307066c8f88c5c2858b8096d27d037a7960cab7a9d54a5c12faf021651e5c48d089f66cc39911e03f1c54dba132caa2464d48d6e09709a6984913d90717161c2f48c2761492e30e75318c9945e3e736e1e4c8d10146c3cc6ad53ad1d5214ba3d65f72c0d0b6d93c1f0a09b2680535c61f168601066f64670982127e1fd7b61e902e4dbfff733fcc5d3e93f12f474fe4f40291bd9e414728f8f52646984db4bded47186801d9a7d79cd5d783b53cab8e0ff6c3a6833f961c633abaf9a679f04479c354f8ef9a256ba85bec1670c10d05d664956a098a7be6d6f6af9a4ff982e39372783671fd5524fdfd1d14230c8b11499260d7d07651a6306b19eb633811061df001874d327719a050f9b497254a23ea482304aa33e00a28ba21bc8cd07e74e0b29181ecb246e9265f06920416a8c1ff7093a060ccd2c0d5e49f6c47dbb2162069596189e45ff901711baf5ede2645bb91910a48bbf1ed04c8b34b18c4d956ae9b57212e103b9f3cb1be23c67e0b7a54ffc4e9347c0a2a2c0e09302914f40b628bb41b663907b7d11d35b1e75cf5e6ab24b0d6d1aa133e8a750af847b35ee11775a8a52aa52e08208782b55c85b5edbd041db5b2222edb7a44da9dd352b4103c2efc9a16c32de1daca7dbf2daabeb8c1dc55d611c21015e3f33d0e4f496370718439d51a8533dffe6077a9fbf0d737e9cd8745ac3443b24bf00878209ac09a2892e24a2cc8bbbdc15e6c176843302aed32d62f020b83597f82d53fe1de447f4e88675e14915901810cafb8b2f81072eea51db230c3a2581c69562c75d819bad5fa09cd560dd33f100e5b9f1bd6b89823a470158c1835b56a0e0249d0c644e302c74c4b50799a37e5904c29b7ce01c546dd83d58ea310aba2e1f9f017e784c034cb1c0afdc15004ad934ce1bd8b360491f88e9e7ecec889738364e8d21c6c64bb6cd888056084a96af38fc2e4ccef6c0f975d75e00f436dfb4fec4e68a6166cb1ff3785092c2803c08464163ab48583a135e16b68cba9a61e74d1da549f9613f76218ca2ee1efc7eca22ca31e7444e062dc671f0cfc31167e1dea4e298ff1ac34720c429e75d027a3405ea7d06379ebadd704150435169d8b32123b1afdcac8f8114d072b248b6656aa4716e8683bbb06863b85b3cb67b042b30a51d6173698b6d9a90c92f0e6dba6c6a732af4a73e19dea4afbc425c6be7ab7098b1727dd2b75c66571dbbe5c70aeaced0624213dafa7c0e658d465a90d2f1e19622cefa95d237abe9281fca3b61061449aec0a5e397dfec58281d6affe9b6bd041a3539fc62691da82e3240b861e87c08b9d0096108cc230016ee3a0fad3157782adaeaea963aa8e684ace3abfd7bc3d09d105f1e80e3e5372963064ce80950fe8820ef58bda613a81c4bad1d7d938f96c7fd01266dc81dfc1694ace4a307e2e48d9a03bd691fd8da6e45cf6c15cb04c25cd313606e38814df38a0b6a52ee03225e70a5d65b20a22a544e873d4236deff5eddc49e1556ce8679cee8c3aa6e444e47d43cb16ececda7ee8a5088864b44f3ea48392b22f4cc969819ebc7801836dbdfc147a9184ac3233182a17961359b88abf2a987d7d025372ae364c5441a65582cc72805c4a0e5a0d9446f06fabb1949cd9062bd6913ae5cb03dd452939fd32d0870478119ece859c2e4b4ffb7fbf5a9692e3b8b9a682965c584a8e43bf7cd9ed7fdbe319307caa2712c33f493a2a2567115d48aa37ffd744f7cbf0534acea2b63bb704c79033dbcb83283095636cb1089eeb033dd490e9b435f031e3be9737e6504a0e2fa7b7f6ce4d57f42625c789650b0dad5b6252724c306975084b4ace320e2e64bd4eb61656e6a617f4362e498c03f1587073d830fa886aea0514566a71b635250c9fc24fe1b3ef99258f90c0a025007c6a0caadf1329391a5353874e52d35172621ace3fb7645272902c6681360bf84e6bd19a3ce8c273a4e474ee988adf356d81e6385f423aa1329145c0d0d573db542b445c7b18f1bb2801c31a5a65fa5aba60d1a757db33fbfb076fa09542d53bfaa2f3944ea68c95327b4ad2a7d0175143f69092e360216b4ce348c694ddd723504b13233c4d4ac85fdb764305fe28390b9465b1f3021946bc3618f48a1b113d1c312ca5897a0f56c06d0ff9d52bfa1f25c761ee74515d0279d5a3e474f0fd3561e1517212eff6cf37309613664c5be86249016724c5df78556146c9d1e6cb420c18c9517260b06159513bcd6b7dc45172ee8b9c3a9cecf29230da8eb2725af15ddbca97d60e9c2595606e18b1d5ae119360549cc73203216ff324d9d73b2397ed9c896e5cebc358a6c626fef06f1d170ef3b98b60eff9aa58c57866718a361588aede860d8e21e15b32cad359f62812bf0859cd118228b0575fa3200d6461398b8fe1192e1c80acabd7b7fd213ac49aadfe26c0fe7640513bebb8f2336a03789f48b5722a0681d5b4e4956a9c003d6c935513180c21b6b473d18c7a5afea08624777259b6a02bc8c09c3cd3d00e4a47c368fdb6c73eeb446ad99f4c08b8cdd41fb7642cdbc03fa0c9f95b98742118945cfee64a6fcaf89ddbc74524856e935880aaab83944fc1cc00744143ae800486cc98eac8bf662ea872ec25c2730eb8d78da1d28a4087aec5cc52c9dccb814ea4b894af1d00d2066ee345188e43a055031d6a1199642af89642ffa331a4cd30ad6b6457307f7b38dea2f139bdc598314f0996f7df7f32e79e794a0865f5e30859f3a198decbba5c07e584600034cdf483c9a4a99a3e11f5355f080e363bdff65fb2bbe9aa9c81c3b31a69e0a5cf3146f7e7042b07a66a3f07f3f3d7c2971bef524da47055c9e1cebb4a516e01d1a29d568b9d1a6a2c147d0418614ac83d60d602ea01bee4a7130a795ddc65a8e605b1e4821a14972c5dc315128203bc86b7439d9eb5a9f049889e0571f3cfe96c89664cbc4fa633e6d9469bec7b93427a2c3a0ce2959b1d6fd8bc7c9c7500af8451cb3998d5c7baf5d0beb45d729b4885adfa2fa9ea9362dbf714a49c90d038e52be6cbe4b127b0a3e9cd1b70d6e3d7cb8e02fbebcdee118caf69bd1b0da2e5f43fd401db2db556ded40ea8d580553b17ef819fa343cfd310094632ba811fd7e0c40c1f2068bd7623e810545c1c8d4d9f2516e701fce1fe31b44413788e21c0436c9f1d7782411ecc282aab8b5ee1a8eb0968d2586e8db247c13be78c8839026c1147f7e6ac8c4df5262e87b2a54fdd47a626dc65d4c3743613bd1c7ab4fcbc2b868838509c99674a764e87bbcbe6d7fea5f581898b75ea8cca477f2a0ad4f0a700866cdf67fc8e2378e4afdaae222f1889703d1f5dd2aa0691db3c2bfa730ef23a01844bd20bec1d74b87c958af73affd29bfde5fba04c7787269fe36365af0163e8bd22fcbe8a96758ef995f081cea5aa5e660a893fe79a61885f04b2733940f3909924e95288c45e22d8cf893050033013fd4694c01b8d8d610682f9a5a1f8b1d22dba38b6d31900272417161d4414d92fadcadbd8ff9fa17fa3c864332414751419f3d852f7408a1c68a22140a01e68a355225bc926e88f45f4448a5c4578fdecbf2729f203800cb67f030da9fc1b2b5c5b689dc3ca8bdf0e3a6cc2293cb017df8379223736eedc0e77c365929de1393a73f680c849dfdabe90cfecb89a39f96e7288c7c0adc602ac7f2e2e0fca681884285afcec7d2955c6d4a4b053a4cd22c685923002fcd5f2bb260456af0726babc9a1dac869d892ef4942573a2df63a70b7285c855069016b2f4ccb9c6e8fbb2d297551a4a948c6e3d210ae972c18754b44a9210a0892d8ec92cfc0b6c4fc709cb4252c082eaed21a1d47eb90793182d4deb7b7f975dcb6b0e70fbb8c1b2f5f45e1c861d46b2006d6ab74d3aa4cc2c57558d8b19765cd12873c9c28b923e08cc6357b7db3321a92d26898ac361131a66686aa82fe551625c2dc39ac2099f5b4a639633e0948ae79bdbad4d6c46c6897028c668a5a223d4e86c9d943c51322def96559b9254814fe886a5dd811e05fd1f21608bdcbcb8c651a75f203065870bd5eeb5ddf2a84f000fc9f635bcf5ceef858d4579f7f167cf13a67e5748e6dd062697734e0573633191d345cf00da4e9825d2b4b15cff4dfbbf6eaa3c390ffb44ad0845c923849f28d54440e7ddd0fa5e161bf1eed8a62b844fc7af3e8afa7a458bfb538d327f00c1be85eb1edac2e507f53bc1638ea2270867a0ffd9d7be33e31afcbdd25fb48a7eec7d3c5e1fa7c823d427bed73465ae2e6569ac4889fd54fdc8cb379c9c35b1a46dc2e6350e36a228ade030801f572803da27654e54a8c80595646e059c35448139e796554b6385bebd6168daf1beb00a5f3a2c2beaa49428c00c90cc50ec9f9e9b8e4d9a243bccc1de71237b4e0ac2c3330425431da5100d5b0cae0f9f082ef964a946b71cc0b09fc08306c79418ae9705e5a2308d6fbd7bf4065c02f7f4be838f2428906f68e82a92d803618aff821ba1a11c994c2e1c6e1b2a4d168d29af5143d7896641daaefbabb3ac503c926a252817f32e3f6cf863289a6d8f011ed7f3f4fb474c96ad842f1051cbed2b3ea554aa0f3cb4e2ba46251144b7a962e5b1e3cd5c40773a94d9873697b9109b70395bb42c2bfb7042fae2b94bc4352867731fbffe54cc2af7c0c529567dcb4d6be07948a366c39ed9b2534c132b8be7e90119117f66501e71948800f76095c34a7bdb934508be1c53b0a050ae5339f1159b65a020dd95584c5449f4f62bb581de0dc4375a6a0ccf39f297e2c79772c9c032751f429db87f9f81e25ed80656926ce1b2937eacba4728b6e290e4d8e4ae20072706ea76e236955bfbe943b0ceaaa4af2017e87a70d2d28f0ab03cfa826ba82d5d430914c99f845efa06e2062848ae75a9fff9d21ca0cbe577d616acf090d1d096f77dc58b1fa8d5082521f8b588dc1f5cf80fc66462608970127ab842a3403a923b4154b1c659f530c1891ad6708d11852b9600290bcd3be60aebb7a201a0ce856246060453e06a5c143de48736aaa3d828cc1e901c669968b4592e69676f83b0dc721472103ab3e887ab38928a78725d2b882bf9cd57b4ff9e63a9108cf387e626f7a7b43512f1d01f86252b8ca847e81cfddfb10a5ca615b3d130911818947426ece3acf9f38c55d49d16829ac523eb14f96f5a757d689944851641b17ce0ee16158f218ec3a62949487326213399597ba3353571c825849e1c76b2affe1388f05952763f71664e4138a7f62d93053b05a76bb87871a597a0697a6fc65f3db02af3dc57c6c80383f62ce91a232d33fd5d49dca01ed9801a73c41478bc9482fa7e3f94401e9b4117b860b3b30dbc4b585b9aa593aee517a3f61ac7621dfac2b6bc19cfeaa12fbd916eaa9c33ef4966d0d27652c624fc24577e62d14b0d83b1a938e31c5f617dba817406da494e54538021efb374cd6da1e890f30c1e944b6fb1683ad542c860c598397c66abd80c37fb1aa227930c2802859c21cca6c919740499fb2a72d0ac14910436d8602db69aa7515ea404a11494d4b8a9c8a8df5fb3c32664f0f223ccd8f7bc1ce09dabd2a6c18f5908e72c347711e803c93a7e5570f78190c65b1624d683987b369675bd670b6cb3d714dee7bf857b52acf0135722f7ebac1f68c74226b5296dc5c7bd895587f75e2f4bf8a5afee2ff464e6f47c236352a93944871c6b11ca5fb52d0b973f5b7e1a6077b6d8d3038565320d3628c626faf00525b51984a4f41761eb97938ebb00d0c2fb9899b7d6579028da48f3c522da2ceb05274a5cededfcae69abb9069e7a1282c951a6ad68345ad57cb1126996f3fc53f14b0e369dc1a94da7c955e33a32a0f945b4599ee34f8d5f78f870ffe068936af234a2888b6a0bd73814b48866bdc6b104bfe061d3cce61367c98d971a2718a218b1736e5af8dfc7c6afb87d964193898b132f3a8484d6351b09f4141e0a156ad278ff870ef8b85fef0645969d58e1b3c176683f852b8825d7374a9785c892802413228396d581f2d90bea042bd479999ad84a1945ef0bcba345c158389af1d9a61b6aa24216bc23c207d76218d4da731e4224f9fc40fb3cde2f02dfcd357f6d23b1f5b2a3c4eb6d7709d6bb9d26f09e6127ea6d50c8bc4f5b253d606d817666f3c5bf547c2cd29cacd702f7c911a28d7338bcfc89e97ca7d0e10ca3d90f1b13768c873ea0ba81b022007ecdb9db6a6a5d5846c3e900988ed0473ed5a99a24812d2d46987d951614d81365ee796bd386bcde3e18745b734ef7377b04c1942267bf3a1101d6a3ec22f9512ccd1e1f8fce79138350ff140cefc7413d5e51e4a95e762423b4918672751dde15697d2367711bfe352cb6a07072133098b069a229194f066b7d296c6dff88cc9bb9961ac1711140d4a8a0302e424fd8980881997657c97a3d742d56378f9f73ce9b1849d5ac581b256bdee4ad84e03e04bc77bc5ac4f01564f1b38f272bafed424f99ccf79ab68bd2da989e5e6224b728d24b3aef0ee7ce8c4856a24a91df7ba1c4e149eefdf5f16ebb47f361a351a508d6c8f0da4fafdcb369a309331aa91ca2207a2634cc574272dbf7974c0871d8b1f63df63c801467ad302775729085bf2b482637f4a856d903cd690221e3d74b59a489e330f65acb98467d760314c62910a204963701608cec204de3bd11dc3a1c66103d6354c4304ed2e272964d24447464f268631135219f565b8e258298802635e246e282450a1ca0f99cd22d576566c23e30f524ed5f807860aca5e4a8eacae2f0296a837f01ba7f6387d4a2d7d8fc70916e0128f44c241a852ef337f730383f3c87b2be4485e3ec04f31e4b72109f49c4448295bdceacbcbd82bc4583f2c2d6f13bfc9de36ff76572523ddd11b0ef8c027eeb630cf76cd4b429026102b6781f5602dd84e947525e6dda64b7661c1f5517068937396c0693829551735d5ae61e098879e83eac0460c69ce69089600a775c88c55f80ea688498f81d698f05bede4335b797b5d73a1808b5cf826a3ed59830aeb189d8c778cf8d04b9ec74080129c3481683733f7a50846036621f7203c1db68fda6eeb173ff45c75c7bcd7e9ef1acb0ef8a0bebb84f1bf55aac234963b495a325f571bdc6516a7788b4922b58875c8cba03d62aec3309ddac382474e32ba81de82c94c4cdd20738f8f973b8306b8e5fe016202b23077b8abc53a063ac68931be551df642db95a6eb57a8c94930b15a7b512e914ca88c39ad1c695dd0801c0110a93a3008a44872d41edefde6048e344ece5111fc3316a3e2fb5cceddbd23d274daecf9b0069ca3b0cfa390399d077ed4a7189676af1863817659feffd81f067a4cabb45034427173e82cabeb57ff8862f3762b37cd4c8433c3327ab10504d38950cb94857630a05801381d7cc4921df419c8b918d8abd9cafc0ffa9917ec621f900488de2b320b67861791fc44110c81512501b2e476606a59ea325405ba8e7909e0b8c9a1051f7e789d955d86244e5feb492eb1824e0ffcb2f7bb78b989318fbc28999b22c2137830b974ed48400aa714ace49104e3e367bc9a8a2d0ee04f7d18dae7664c1d9e31ada74832bdff67628168bb03836cd803cd274c20afd7c8d8275755355d1aadea832e829ac451df0b4aa230ec78cff9418751043de879eccf0ce98cd2979f8b318996dc2747bce21e395c3c7c00dd2a869314e8111238fa3b827118bb4f9a6b87c5e52863a853973d62a877ec606d0dab7a14aba09b7730c1b49de1e1ba3508b30df6a420332d026071ab2562d0c877a7e571f8b2125923c2f0185f275d8e72053a4062e49dc8390986e5a73fd0c53ac71b5d34c18c5aac711bb3eedd3c1c5e910f0729b0eb3747e32ab148df49e5d66f3516c4491acbe2098aff82633008ede97c4f019261d2ac1a917ebe458896c55f158fb76a64efb563567ff6ed209c995a8a778743d316bae4a3a09f95c8d191422851c24b183e84c3b3a68fdd0d1f5df0ee673f46cc1190cf6c14512f6f54863e90da389194e209840ba31917283fa90d20c4bfd4aa3ec3b709405591a101d0b7fac600d60b505e5c3577af8af8433a0dc5e22245b8fb4831e2c5f209030dcae1dabc103a3f6a4784f5ad00021d390dca94888be7c0e5f388444ea272c399186768c29f3bdb22ea5e477ba75139fff2c52bdc90f2b56298ac85054ed8a48940f68a9c8bc28aa76b63be58c4fc5cdc85811e462b0033e9329efa0168c8966434247b0b930fde58a24897ac2a0e801857b0c7997575e12ecc2bbb00b4fda73fa764f040cd420901029a376b86f898782428b968e20430bf0f8fc0901cfa74fd63830edbf70b6e3c121491eda20d0c2c45e558bb174178a5e3d31f7c3dc3301820600c435132078804509952654cdc9db693d5227a5faa6948ec7f4963cd08e4fce567b0cced054f416d76bd02aa1dd669d5618957e202c0d88a160464533bad5d6a2a513de3aa9a22c38ed7f14aae234c6f3cdc6f1189a835097d08132224522a7436d622c2ed8243c42e2cb7c0de67966a9c9cb35e17f797ed0682edc35efa0ca270714eb9738dbcc0ac0614e403c2660da0718d10d40684fc0bc13f06bebc2d9a687ece290125365f2a5dd0c341930b9cb1477fcccfe50bcca9a1c04fd1801be286586f094f01e10057637a8e3aa7bd7cb543541e0c127ed3850a95bd4a1f376bb842ad77632139a6a407a22a4a94ed98852c4e8c57efb2d1c5550b038741229a564ed29ca88baa2481c8e11dab384c85455846ecdf42874edcb039a5f1824ce45143a4f4cac6db215220e3438822474a45ecc20c7ae8fb815d679dc59eee51a91e60be71b1127b98548629bc79586994fa06eca02171891b7035501e2a47a761546d6a1856653d6db1d67346d2bb734222bd3d632a4d11991b6953b8d60cfcab5a0e060c6ea7c5d05169e9e06bc05fc55ac7f2e3bf3043d95478cc2375409b26514b57e5dbe673453ccf1898db5f4fce82cdf4c8e84a5c860e9f1004a6541a384d667572a13f0e7b95181acb5c27c20ae3eb9ccf930bd2ce9d91a9a4c76c89f5a241a4846283e88a7d1691f361f633b1b9906a7be6b8991972ab6f91a46c57a0c23baff57a16e7bfa0060687145166605ef4122f776e722ca58307c770e6ea6675f91f66d290ffbcca50cea744f7963a7a268cc9e51e7d22776c445f56120e9d082c5af4650e175ab72baa1e597e29683d00173fd74c6ff4e5e3e0746eed02e61eeba327f311b1b8200be0ab99b457c3db85379730dfd5dc7c983ec1abc4d0b335d46d050138f206ee9b06f691825db075bce073fce3e5812c09f18c7fef5c1b240ed003dd9e80f2e877c3209c9fa60a74cb55b9fd7a269b8cd66ff504aa42447b28f69f61f4d31464492003f76ae5bbbec53cba7516168a17a36b7c2fbc24194b955d19ff5494c41040ffbb9aa89a91b0d80a37388649612184e8f03ab7f2a7e97b70034f87edb8ab507fa4f2584ebfb9b682925f194ef77dfb031f22b7849b4bd1d4f2c4473cb2b79b942b68d8e03f6650bf76128161c914383a4198a0b0cfa296e4b5f7eb5a2a87748d6086eb2c0a1a7a1683e36006dd786bab895748f5d1f6ecaae45d4480c3c4ad34279bdfb079fd816079b8c2e2f7b3e9ebac773b5b8f9ca7462e93ac52b1ea48266fdd5411ab870192bb0be37895b91d2e2419e2c2263f180f1c73b7bada83d9596ee598bdfe0cc4eb0b6fca62b010c5f4b3ea679c266f2025f513ed1605fb39f16b0e8f2a165cb0d5ad6cc7e206cce5739ee9f53663bcb289887655eeaa6e1a7e884bbc5a78d319feb8651b422d538da2a58b80c8ea3027d200c1b0ae383f1008f27ce17b98bf2fab2017e1a8ede7921394056d8389a18424e6b1bb883709e22fea711d939bae6471f7ddddd41ad007186025b209d688914b5a1809f8e2e5e32e154d0222692b59f898bcec5edfe2a9d71482ed3cb4d2f3940310c921bd34d373d96dc4157e659c89eaf9ed0c1fff5155c9afaeebddebaf5c1bafdda459fbdb70ea0cd04d1c7a76121699e74301ff0bd9417c32aa5a49320867f8681ef05b59f09d8545c1bb564f48c60aac2f0b24d2d6c1984a487a7dc522604eada91f8220ac2db4a3b48c56d1b57409ee4f0b4f7fde301d5b372d296665a1a82b99582865942030abdb621492fb1ac96dfb69c1c00697d215d054863d04676b722040d0efc3ff2bcfa55f00af7beda980e2f6361996db39e86a17cf96af64a6543a43d4c6f5679bbfc41cb24e054d10dca6592c1c77c62d2251d644469db12073c1c16c572c3b7e9e0eeb386ea29229a121ab6a452d45806c950aa481103ee5b3d2726c32e7da17a803ae582051fa764f39f187dbee5ea5cc5a10a30d4bd572f29827335ef6f02450e9fb679913c2aa49852a21ed82eede1f97e010dcfb7044bebc489aae706e9fab062274cbc48dcecc4c88769258be79bb18bae5a30769d84b9e6230a0ba119dbd7d5b70f14044984ca4265a7f8d91b87e293b5b959a736ebfbe02aad352adfeb5898b56b8fcc15033b506961252a7f74fa4c3476cf1719bc579019947459b715270ed766c30c2556a3309df1ecadc0637998e52fd8c1d8676714e950202743dd96bbf48ee2292afc530fa59c316dd2e40071af7a5fd9b5e154e028cc9c823ecbd92adc11821a374b2b07e42a11e03a0001b69f3e5018b4f97c6b37352e5b9f6c2557d6f52c16605db2c82c28c3fada62bb6ae36bff0585f8650652693cb3a736e9f2c13281b3ea68dd6703446933229a9a579826c432802ca4f48ec39c744d6d41c034b33b4b4d6101c14429f221c116b4d281af3cb781dbcea2194f8dcdbcc47f0590479d4342a109702e666ad249105a36e0e65b515304890ac74268b1ae7904cd7a18a358e76e0bdc9646a6b48391fe3fbad85793ad3de58738a656b3a4aef527d5f9769c80eb165c668f8f031d89331bbf55acfaa933bc01c69a35a13a537e8dc20b19107d1695f73368daa3e84541a947517aa948f568145e1a346d8eaad713963a15a51753a43a350a2f8d8a4647d15b41a95151c2b4e9204fef3259170aae77e9b44fc572dde4b6ccebc45028f66b5f4ccaa3f5454cdcb1ad40d293d03ab30ed1f9bba2776d3f64c3eb07707916d0f64b2e5b18b956affb63e54ef559ea26d141f992f8a82a02ce6ad2e3b642f3fc551b4a9a0d12dd918875cda15c489b3e97d25b52eba9994e044736eeb054cbe07c96b255a4d388da6d28463144aa857e5c86e954a10dc1bf95d8b4e74318ba96cda255eed3b5530d0d4bbd3b9b378b0b6cb488d8736bc494565ac3a694884c63d25fa49335256883a4f5d7f97e09b384448f941d4f1f91b04fb53368e30ad856aceda395ab3e6aff542fc7c532bdd8d1ad3546772aa687b2afcfcc274f36976b11492beb4f296aab2ef824f70b548162211d2fb4ac4483cdb0b4f84863f7e777b66985c82babf47a7434983891803e1cebf97cc49ad5c9527303a523acd9cf8f19716b71f8e4527bfce3f7a868dc999df7a00d634a2104ca12c7ee7d274c8c259e8f963fa76f9d1b9d1182e508976129f736baae8f41dd0d7a1504de3262a58d6dc211a936871feb3447a29b035048fc189d2bad0d4b18b1f63159735f34a173d39526ed633f005d62381516ec681ac2a930fd84e805806459c8efd800d955ffea05c86238fd270115e2148226ae94faf998ecd13a8726e995a37dc10d1beb86d5556a14d431998c6d10118405275b7e734acc88e71e146c1ba9869eafdc03ee28a3661aace737cda3c13a8b1e75850cf65329b99279b285257735db8e842ef9096885520ec2c00f56d052da9882199febcc66f693660fa8ee29b2552d00d56e41b179d420f09b6b034e06adfec32e14d79c9671a17db954dc41708e9da0f646094ee085aa450663112653a06ffae000ceac8de15506a81a7bb9d7cb4fd746082ccec8f700ddfc77365358ce298c75614fc2e3a7c836af9f116c8bafb547c95f1ab586940be674a7fb7b44cd2bda6c029ad5d03496ec768c041204e0669c535d79d5031b39c42d2e158535be57584a1f8a7fbb51e555ef1fc1920cfdd0ac92a9f75e1088c3a860f015099682af58dbacafb829db166e286c385c424bf9e509c0dc154056d27555de484808badc9511383a28faae6f79ebbb03ac88a9cf50ac67e5be97751f4b0a5addbbfce6a1604065030f28458e0b2259f89d4ea580f6525591e5c5665119dfbd33d03e2f76b456583351c1d2eb4f7f5c3f7e71c012528a158b0ab2b58063e9b796d6ae6a061a3ab830ff53401060971df29050600d2e0a623d40221ba9668515e2a8d5cf8c036c6117a6cd0df6948bdcbd7711154d137b50dbcad9575b727efb02359371ccd9d50282103680b028611836a22f2e92ad0f2257c1353ba2733f8905d50c61718d387383109790d2e72044242c6c44bd2edc46949791270200907545305e1f7da9685c992a80e0428aa04b74451085d6de608f888ae0cace70e2319068f43c8714b33c5ef952bc299940d8e04540fd198ab576e1d5ae146b13041e7bf5abe274f0e57b2502e94a437b533fa786fd6ac8c59bdf245d5a199a28aa29de3415b28378eaa4ef63afb75915b6ef7dcdbefc2cadddbbcdddd3f0a5a964ef3b828b8d00fff6e05ebfa7c631431d8b7a9be413b1484faa88042b93115f3853ca22e4e9bb70ea426709c59ec859b01f2407327429c4188a22420c2da694309e386e975e4944c820987b01dc436c1373f6006d83255acf1d38b1153edfd28b123211359bd315e9148101dd63884e5f1d16b95b921d25bc1560e98f6e8b0f5ed4e5040ce220c41341b2805cb88ded620c02d2801f3022efba6fd9511ba69b4bab1202222a197802a8dd37802232931e7721cc1fdc2fe68935ac0258664f3ecddc1d77614e2def2f8c5d148f14cd916e11f8a3c585bbb0bcafa50c87bb20fc5b475dc8d60d1a9a0a34476a5a3be95637a6a5d92e2c7048563b5fe84ef3082f49a7f378b7231daca4bbe3ce41c3df980f5e8eeeb67a7919c77a110ce993223a14d6e88ff4da2ce3a83180baec4bf045fbdc1e55d71e322fcc6404dbac10f9897fb9e8860245869eab3e025d35f039786719352aa2711d0910304173167397451e0d7eaeb3c7d45dfb0c6c0805c523c263b41e6be908d887c2eab117cac29372c7cd0d4a1217f545b77a1aaf2e43d4e06e5563de54106666db41882a77e2cefaad51684ace723214b273f9f6bd7c0a0ed44c443dc33f260644754229d6e60665c0eb627ff1a50fb2e449c408fbafb079901aafb4ad168ffce48451096a81f61e8005d6f739264601f3ef00a191dde035c4cc27643ac02df3e3ea15a669603e3820da3ba0d4588e42381429fbb9508df5b33e0517ed75f594b91c3e40693b19e0259952de5914f1c8e34826c09f7fb4c5b0f25623f77f4439586ed80ac3f9e0d253d3af177636bfd390f3edad6785290606c4bd3b06b02bcc6d4428890f8521f66aac519607056ec3c0dc391c9c62be53e71f6a0c3193141c947c9b43f319dbc3628db9ecfd69b46ace6097b4238172231a572b4c4c915ccc82ca8bcce5f8e4b9fbd82c10325f2a214e4a8711bcdb66479049b3f3f60f9384b8ff184a9ae912965940d3b870effa2a6896b15348d49475014ecb14e6c2dd79a273d92cca9a7d9d89ec7e963564a5877a3e32f3296b173460cd1ca43f8f727a30eee6fbd9f77658f352e3ad23a0fbbf711e8abd1da04c15eb10ca000e0b61e96b2c87b5f87d3145c9d66d655964330c643d105486b356c8df7c4eb4ec3911742c54f6154b2d95c8a51c2bf0f0e7064bf63f4613e0e6879818f75561e058baac9e28cb1df52d3f1559d09f927ae07ffb7d5741d3b0d732e75f9930cc89b2be9a08426b1b2b51f9244d3e01ce85a32fe2b544ac90e274ad36d94231ebcf5030404a0586b708050dee233adc76289c3b338e0c6aa342625b1ce0af1a72cf8df3dfa76fe921113a276575725a4b3a09f779a2d1291c436e3e68d35271843f6a1d6375d9b8894d57676d0cb38d3eb19fae5b2957be928f97bda3e8cda56a2fe1c17994d16ca5b7aee3866a0caf01820302fb9f9f379a348e620ef08b555b8384d1dfa185cdd757dc93dd33b3607da6e68a18937bf68755eb8e9a355e38c68633f1a3666aede872059630cc2f60148e52f0688ee3dc38b4660841d2b59598b92b92f51c8a7286a370afe9bf309ce424b0eef1a4b6de399908612bfd76dcf09ce42c7c18bf647559958f62b3c2afbb63025bd1f37584c55ad88cc3d14d14479edc5188b21b02b904956cc8d90a1573a895667743d310a55af0a63106a8496d78fcc7380a9d290909b146310e4d3160f8d371b36ee25705a7cb978de9b2405a070ac5e943e1f9ee3a39d293dbe7e832348090e676813b235c7fbaf292c6969b3807b47df6c499c540e742336d66d4a9935f9d580493da19f3df05231f06514ab71e9a35795b2c0b131a3dac6c06cbf20a23cf1933799719a9da649218100ace64f92d0f3ae3502b498298137d122faa8709a1ac517ddb97d0b39cd9361aa174445a3cb2375e8f274e1453a82eddee3b7f8491b026b566b0914d218c420e612278506ab780bd8249b5305aa2795bb5cb4803953e6cd1abe23d436a511f4ab96ea5a4292ec8aebd08529f107f2c6e129cf1857fa0f2a5151566cc375d464ef409024b66d576377e9844951d8929c12937cae0cb1c9009d1e27c505d23b69ade0a50d74de0d08ec01dc588950120807b9ca21e45e6b43b7241866deb05296a2e10b15b4528859e1d1221418ced6ba60e70724f34027f0a5a75c82dabb487c53fbc8ea4519a9d2f619f0699c85f969a8d3e6385a30a89162af9c57b1fa0ed36c912e76a76db58c62633db5a721967cd8810a1999c47e6d71b81215c40c0e16ffba44a31a93ae8b2b2bd19015b47ea235d7493e40108384f3ebe7c1fe4dea5310553072bcfd23155fdf372c7b77e75ce2c4ff19f6ed5ab77bc22dc4d701f38099b95ac09efdc52e9da2619d4439d1acdc70a5d796486ba4e847e1db7f317f54537f1208f8227ea6674df191ca66d30ee97fe360add3b68c37de92223d32d103cbebe1363563a22d586b047633012106964910d632c248cea4b97553cf403da937d2296e6b4af3f826e7bdb1692fdee2c75d80ee9daaaf97486c74714211f64651523ba11145c152368016ee3e8f2fddeaa9db6541e52073c69c3046dd6fe729964da905f895295032fdbf22c49d670f57ccb6d511a6d25ec0d84b146a79dd89be24cfdb581641d982c227944c70a19bf08e0e9313ff77b03e2120547be0e949d103b76a4b8d95bdb0ce400847e02b09711bb4acc5fee70885634c3951fba03e855dee7dda2d2bd36bc677a9269a9469a3a1136d7184575ff71112a975991f5fc07e62b088d0460da653874ff7428dd06d6ced338237d65cb5369c7a25656a4921edb4f29b265fb596fa81be6ad513790b84dfbdc812c38edd1f3f81a346aff70de1177bfa080bb532a34722c220048bf28db913c722cccff26d56eaf129ecc166623fd0f20c39fc253204aeca0f1d3c7c608ed2eb2d558fbb5ae66f75ae23e6f427b6754d9ac03fcd6b009dd08004e1ed5a47ff5f83cf9e73f157916f561c03891d986a56cc4d52e35aaa7424168f9bd8e22e0c4c58d89a4c2ba74a336956a3260f99a73800107f5ca75e64a9109b266baedecb00c373a4b45c467f93202d194b75752a254cb6ccffcb40ae916dba01c912ddfb38ce46ab7fe9208deb0126f63cfcad222a6a7a44be1bc89f244fde01ea88018e43175b8b23c0691f552f6aaf211061b0a7cf2dda18d69261725c096e9c8db54ab0adf187b84541653027ac66dc1e2cd96c830f41b9b86e5828b7738fed353dc74cab21a9d8c130b6d3bf3ab8a613cb66061e5f73b3cda9c79806ea92258aa7602a98d21f8baa8cb2878183fd306ee7699086b0686147cccb8af66540a156154fc7e64bd5605881ec5be3bacd39965d314225715580810720f8d975ba8d55f49658eb25d8bd044fa426907247035237ad8cc70df2afc435eaa431a3244b1724ddc3fb227ce09ebe3f24a2a8a1374b42c88c8c49357c1276f9984b86ee5d98656721cbf672590abefb159d322854a756ff95595f6674e900f30ee012acc18b3d0976ba4588466c6f037ad5f4a4565fd5c817a8288be8f9359c8772d10b729ae7f4e6b268f16e3f3b9ea4685b3bfb9837824f528cd4885bca656b5ead08bc181ef37f46118f0b2452a9d7b874bd27786e0c7568debc0431b6348d9b761a1a58df0fa7f9a3a104b62c7ee40a233247d39dff3babdf2d632857b7f9b4d984b53d14b92c87111e1d8636b420f0a459155452c9f1792c4aac202747578c3bab6ed49bd25c85ec28144dd4ae24020bb5cd7c246fed589474483e6e8a7188446404b2d16208004add50f2f0e5c995584e8915f4664b867ad25de8e3fb82eabf8d31726fd8fb25460a8c660259cb300241a34f726e3c652d19eefcdd858dfad0730b0a61caa5f1cd9eaf6a57a40a148a40bcf108511b5e1ede583ded4313ddf18e2392fcc309ae2319aa865344e5651255382259883cd11c12e2366f19402b1fc1139200b9431acb2805f688e2a3e1833fe9a08af99dbd8a90eaecdc5ec1c44cf4040083f0271abd38490cb08b65517c5b3bcb5acade93c43a92122de2e61fecd0f1eaca66979e2df804bb373098a469cb20fc8b9604914434e13c0aab37bd72867025ba3cf50a961e47f6998977b8c795b5e37a1257db9a611230b17a2a4b5d2e21becca11a272813904247670e6fad5327a34827790da9dfff6b1b5c51a3cc16bdc2ce630e0f324fe542964678e4660cac27200505c3ae309e3a429340819f1207cf0a83b1dc62da3f957bee2acf4f4e8ae41bb54526dea039ddd34f6c333b1d5f19317216912e06dd6a6af6841c7e2bc4c689a457d5464a95f1b36afa94ea295272afdde0e6a93fa7a8a02402193cdbf138517d5491e72142f9a27929dffc6079334f358a665c0d12e8ce12641df51686b14647d897a08f3278e8fa77c5d696211468a2164c26107168b532189e59a9715421b7938ff4bcdc9dc1ca0bf50f911a1ac0ce5fc07e3508689725db3bde639e180d5be9008521d271126a2f8c4fcbb56c692038e0cc4cd0ffc1232cb6a9a94bc42194b3f6a03d72c79bb0f907a6efdc797501c2ff3fc2fe19d888bb90f0e4784654e7187e449ff4bebd3bc326b715725b4a3c932a1eece710f379dc495ed4dd337600fcf72608072fb680106d00671a21437a009c0e0df6cfb110492976e4de246e3ac6b19825956c2edc9ba0d1af9d5656fb9fa66a583c74569d023415de458ba662ce48f90601fc6664bbe5c7e5bf0bc1cb727e2ef035d1d1fa42a682680efdd59be9a13811155bf6d48e96c945353328b6b04adc7295b65b49c23204799d5e71e28e2b8f408964e47909f9d23c84a8c3e65f9ea5cc8aeba3bbcf9f4f39155803ba0c78a03f36d902fe4f4b4efebd6f6541a9d7ad48bd5b2f57b368f244f31c642e41005d73df87948fa992da1a7103e09fd0e41141940c8a8bc41aec5e23fa7bd6c386d92991d6cb3c7ccf4a1d0618db21423a1dccb7cbc0e1f298f19f13d61b583f6d1fc7f943884ee3d815ece7986ca7e6dda36e9a1e0f53419b516301216ceec72aef23e3d8ba386454294abcbec5c18b6b30c10a43de710f91450cd95f3830e358bd1ed7af1fceff6ca0593574bb0318d1576551fc4bcb843b6c61cc0a2bff12dfc1de30a347ccfd4d857243177dd5b82555f4ba399ef199b10a30cd457a6c16ed8db601883de15108c4c3881eb233fca413b6b4363d22d0839867036b4f7f9995bbba34f5ce1bc66cba4f5aec5d3c41b8e7b6613371943e03154d07867ab30286439b12b6651eff676a0750094b57fd9ed5c531a9f8415874258f42b2d1b8617c82b0dbb2e161c5ea886141b5ed84bd3c0f0c216b4bff2c20be4ec80bcc26d75191486a3ef18e7396a7bad3312cc2ec6469f09aa4e425abc515d569751ff87286823daa8009f486878e63800961569a8f3431ec9124b0de5b775c205d969300a9309eb7f31cff025320c642a9c683e547214f6417e4f6fe869a9d38c8cca72bd83bdad1bbfabd4b9755f5842ac4a38063cf83451b0a4cf143b57919f3f9caea636cbc4cf29026dce565cb7289d69ea44dfac393f9ab938f713666cca7c9a236d4b803e686876872bd82eaf44c83d3bb1d212c3aff0e6dd0d10ff4c3e076b18088a035334008ea1036d6fbac66cb1110898cf37c1aaa083ef3fd062c597c059371bd2c8ba57bc7a34e0c101a1de32b205b8cd1be94604dc1851ab0076948ed882e6ffdcf594030d48706d92647616031df3be01953a03d2445beb0a14a468396305ccf69b1798d85a538d31c806f7da7a5738d4057cd9639e3fb605739b38a675a25e96f4a1a67f233a9f423fa2970d968952efb9f33426a191e8479c571b517621b16b33e69a277b15d0dbee81800fc207fde78d01657a31109057f19e26768a938468b42099b05af7cced3ac86ec1c9ead18564dafba719f5e21cabc37b7007018c72e4be82dc9805170b65d5c7ffa19d52fafc01634382d228c4e661c59f48597302259b6924845d53580752a108c03f1e22551a34fbcfcca652ce61245af6bf2ffccea93d39da9576a6cce996ae31eeef9503bf470f7bd6622d471e2e46ffc3953cf94d95fdc439d6d46d6fd885c13561e1a13d7fe81c1569e5988178862bf7aa5a06f4f05e5394e26395eec68021602812a8cd0855e5e79184ec252cb257470f20e370a4e88183bbfaf72bb48711d15bc456083bffad5588abfe8bdc21c8b27661006a70e2002b607abecac274e11de26ed6a38126b89341cd28fe1c7bcecf39b51d592ee241112632e749e14609975b2e51feb1fe424a2e65c89ce98c2249117defb5832a510e1cbef460bfd668929ccf76a51b9ad699cedd69e11714e0e512bcd0cc0f21083a7dbe1ee8e30cd6faabf24534380946708bfcdb7e5ca7ef4b0099678b0f5910558c8a28e72d3411e30f49665891c1fcf541415821486bbe7786984f1dd39fef109c6839b2cad668a9bf018dfe4e9af06ac1e8cd0619dbe80febe951f39861b75bc7192f2e1a15afdb1ecba89e9f8aedcbd69e6199933e590dc7acc8593ef7c044e13eebebdb87ce9a48c8878e21360b6bde3d4a1d18c947d37538836d0a7c2d4589a66f96884310aa91c5bf46078f0fd18a6456e9108443750822a4cb30be8d0601c04e93f6528fa070341aceba89134b34f815a46777c4894d7b2afaab050efb16510ec4c86c3490a0edadb0eb43c3a16fe97deb824f37deef4e45945f6e061a8b2e64061ec44a856d19a6258602630bfc3611fc2ebd59d567c970aa122ff3265e00b5c7cc95bbe51776a45d7030d4b932453f0728efc30e2501ead47ddccb83443bbcee22a131eed307fdd190180da271591c0f6f5b57fae9b5f8cd67fa8c1314e80eef866f432669904d00b912ec5f6a25ffa42ebe0bc20f61d3371193019d830d94c0438d2d68e7155411ef40162041ac488c1440ae20f9d1c618fd8b027a883da2e405151fb7ace04f99036a2f898a85b75af9121ce31f7e39b536339af220d10abacb18fd103ca2a485aabe2e59c1bf12d02f411ba5566cf1a3ce28fa9905f4093a50960592f591da6ea129e58fa4699853a5d737c3aab8b93df2ef927afee313988a74e5b458e50a9b1eed5efcce1d942b5ce5da48e0fd44517bfc7a0e92ab17175d0a46ebd69d4951f58aa1067d56c964ae89187406e6f0dc8c5dc21db2c12d57ee8d5dae0ca08018762bba36cd15af8ea0547eb12a2b808568e0fd2a2b6fcd77f47c9077fb403d8fd20530bc957f3235cd8ef510fd7edf224e6fdae12f0ae3cab8e6d66bd93c8d83313e5daeb79e1c91c2cc66fd713d7e675490ba4b639b1152b7f2a59da6bf2db00d435480419c05652f9b2bed75918357133cabcbe632d1ee73647a042e6c3b4f54adc7ec89df5199d9fe359d6d8de5cd73f2f1e5893e50f7e3914bad921fb4a56ec5bafbaf2c57d006e731493f7a50b768e5e8fe490b080f74a42c4568fe235ed2fe86729f815113ec886aecf9f5e95796eddaf566d137745d3d6aeb8d64d4af8fdc0a67f12b61f5ab6f9f4b11e5708fdda4c62ceefdda0e77e1faed339d5090568a9f64058126d0904554caa22bcb7cb00374091a49cd80897b843e4736d6a00b4e646ef4c3df3e8bb281a40cafd160339b7c15354f53c1df5ab16c055fc21fe34f85327df9265f6310328f9e69c5b69150f088f5b41e163f05af9157da42e3acf0a8b9c8dfe4a380e9861cd153d78a62f9e0e40367989fd925c624e67f5a2db9fc0cbb0d3d4cb0cfcfec127312e37f5ad322ef21a0e6e4bb9e81b77a4ebea8f8c131028b43d6258b2851e8ea83596bc20c8322936182778e210c1ee3b352cf1dc83d3efd4130e283cd0ef4d77fe7b2f1007f05cc1c37e59b8183de7d919cbda191a96cf99d51b08ad9d82610814d2a17824d8a417f1ba0eb1e9a19560a1392002e8bbf0a230c7a644504046d60753b000a13267f9813b9fbf9150ff9e3b9e3d25aae45d3e8dd59eeee00ba332fb00cf15b96fbf90192241f34aca6f6e30af59eb2aad2fe235d1977452b3fd2bfa8199cdbe89e029abf9a4b5d248bc0917b08d2e72fd363dc9e5fe397f98bd3a4597fb551893bc6fe9b4bd80eaf51e0c9ab574b92d909925f1f22ea56bf3e548d9e484cf12d68be0077de5324253240e87f7c5e236593e935f67b0bd59e379387acb09108010be7d16d101a73f2c5588f7bbdc40db249e57683ebf2f6276030a7476808492de2f2e185166d12f5c7aa74d540b7b090ef1d20af1cd555eae13bd5ccd9d60d5f4bb3120b8d7b21ae4911dac3026aaa1fe87c2c9cd0bf3f6cb445383e6316aab71f92ef121b42e011bbc9143f8cbb602d4495419d85df3f6d34d07c98e38979843b7f8edceb2699a332bca6acd7e6eb6128ad8094791fbb98541e633f209eb7a4d79e5be878309c73aaae63972c3e83a9ac92307fe2acece14a63a5946bf79ca9f098d0c50d89ea9976f339b9cf0e306617f0b31e2c862bbf20b939da3aee22c54e9a6d9a98eb9ee498e2fc6b514e5644d9d0a6b19bbe7dc922ae767cc4322f5f8143477608d11228b85c2ae4c6737e9a726ec17ca8cfdedf485f0e92429240ba04f71faf6978d078762eb42965d9df086a6bc5074e35c319d2aeaff93e961ff021a6b4b317195c09c51cc512305b410716236956f1cd01b32d23b3176588441fe3f3b670a51045dfbbe8ffcb84b167c5ca6a2b032816b2f49c7aa254f5af1ffcaa3f842fcd06c0f734fced529a6aa46a5d57d740a02b1ad055c0cf6a61e05ed1231d3769c602f33a7dfaca6e411c947faad522f0051215ddbdf5096a46caf7d74ec20ec18b19640155599a8ba6f705eb5f675d19596a0bad7d1fda95d5aabfc51eb92bd5821a9c70958bfc7a20b952f668299e67c20581fd3ab5153324976664281c16f14dc1cfe694096e107a39af72a33dff159298847b167471ff303650b790f0cd27fcb8aa85bdf63aec2c5a2af6bdb8b8c42b29c9c22019d57cf28f7afbe7c7533ba4ba4f14b10ee5ab4b6538faa8ada1146a9e8804281f1b1b9e36811290495d29578c15a10426362b44160b024a73b9c19b74c162f4ccc6c02593ee8566c7fa81664f1e6bd699684b70ca457544c628698d2558daf0477107fa3f486e7ceeffbae9b8c883f030dfa86102bc11f5597479c9095c34016a9ae81e4d50e4513a48162659a9c423b7236661ccb9610d398345061bb848990f7dd083c1548263631d888bc0ad0200120800b4566aefdad49ea19f4fc1db4750b6393e50b1f64b42f6de5b4a29534a29c9cc01e401e901fcdb547dcbf83fd3166d19fffd1543d1d6bdbafb73f7e739dd9c1bb771dbcecf5ea766f51f74159973ceb96f9da574091972ecc9d07b15c2fd181d4d7c76e73693e3254477a6e8866ab578320a21b48082ce389aad34949472ceeee4843b6e701c0f07a1e4bcdad4c0cee067e1503ec32c311ca640c80c19ae98ff1d0d8410fe0f29324df186195e26c1b22860bb65775cae0d3f30ca18238d118eee6b8c31c618638c6b003929ed30d5f5eada46b594b3dc49431dd29d37885426b4506b6827a9f77a9b7272cea054285579e85197545d4c2e23cfd77034beeda0b1cc95aff4a8318886d8eeedfe22945249c395f563d7ddbb06356d6f549aecc8e2f826c5711de59847759bee3a546a7df46001e1c1558a33932451ddd4d4b8e1d4501645fd77134a5ffdbbbafcab380aa1025481849577fbcab9fc782be14e6c0620262fb8af73eb3dd87b0e6322f6f314c74e1c5774749e25372e22a5b7a2fb4a2ed010cffee8b854946993abc8c718478822b88451c6ee8ca0fa556a72159774ce6fcb0e21c39c56105caf52696acb5034c57527655d16b76d311f22d8a63149eab6c3c905d989f2a4c003db40e92b7711c6efd4d8a7a3482906e56883ee6916ab95b4049abb1351e02f43e8de2d650c314a39679669dab6711c0a954a515a5363637373a352f1e0d1a3870f1f5d8783f3e3071020393941820811d243d244800482071c6880019e230b2860e4b593800b81030c2852000103b4880810800e00ac551d2224480e901f389d8f1e3c543736353485e2362d9b32c2f7e6f5b249ebcdd5e531caaca5426bf740b90b49bbda72391925ff82c6a41c0df151638c31c6168410429794524a29e59b73ce39e71ca2414ebbc43b2ae28332569665599665d9ffffff7fd5344dd3344d935babfb91dbb66daccf64d460337d45c3af3296850a6301f6ff1f63a5c3879d4cf03e3e3f427e50517c524e51baa7273e1999283c4a4e2af36a9998c985a62026a126a54543a538754e6ad0cf96a01074704152f769e6541abb51cedd99c1ba71caa8a3936d57c9a15acba6d672f17cc60d83b7a41dc72a2584538b5bdd5aeb96cc457325a82d937081f8bb0199dab52acf3b6a2a1d6447d2c5b004fbfa5f37e8e33665a557b9c2f57fa38c733716458e695c84970d7207e910c639d731b0c061f188cc58be33470e59b29d27fa8e64938ca4a196b36dbf4d5a8c11080728ae3dddbeb5e045f41dca4e1b528a4ee8ba53c7eb077b41a19bb5609d9da4be6fa3aa0e3aab47c983d9ccfe0544df8b86f9de8bdddd339bd53d9bdd1c1fac701fbf97ed33b9afbb3ff30b7365edc8adfeb9973fffff637dc28a96981929c25c9920f640a2e85cdc8e5176fbdc75f7eafb15fc12189317e2af9ac4a86db3a636265a366313a740822042fcb584ef76a113f6c3310a8c26b018fd1c0942a88a964b25957844f8e00a1a274caca5ab5bdd8e2131f404dd78d03a34395ddc744131a173040e45cc1859426584152461fcf87253840535652be2870ed419306ec26c51e004f1830819809c4975437401fbf10a83a61ecefb7a4437d7db7d1da45685c2cbcc6749a5fa281382e368dd1a97998c33b5a5600fbda93535372b1bee9446534ab63aa554a968366b771c3b10103e65180dc57c384344141b328afd0087981810535e4afc2abe46e4897c25422404237f8710bafbbbbbbbfbacf25efffbfbdfab77bf6fed86f51d7ef76e3fa1edf2f66c93edf6d8cc4c6085026595eefe5be623ac90dd572aef9815a11d330a9047d001fcebea2b84ffeeddccbbcdcae07d05587b58e036b62c69d9e64e527b7b765f10f5813d6d6b57b075afe8c70a3c24efe4cb58484cd4ef4504f54ef545873d2269af739623f3bc08293d71a22d4a07e6aa44e9d41cbea9f17e06ec32a294a82ce6e625a3b26589ba142d7744454843c91697a76c0aea69966a32298e6c9644a2d80eee057d8ae97085ebacc1d9948b5257d7dd6d2b3de4155916d2dedb65ee76ff87302f327c587a1171613446f216b19452c61aa57ceffd43f812436effb0e387fccf0cdf21f4d81526e81e1bf30363a3cdd8788d111ba3c430078c1c69baf088ee57172318784c8b2477801a713de0ecdbc5e5fa6eed1df3627a2d79a4b2100cd16edbccec3008bf979999bff256dfbabbcc90e33e33f3f33ba884c2e841af0fbb04870c83fe1a3ac9948e50b1bbbb7b37a9c4e3809c0f962b97e4e334e9102a79495b9c50da86dafa006e41ae60c5c6c22c497f29bdf62907ddbdc01fd2d333039d890e5b7e6591e2d51ed17fe81efbd968484ea3c91165d990b68501dae41387c019d452ca05468ccd56f3c282de88d9f964fcd7cf1f7f30fb0aff39a5bf6bdbcb8a95ffa282665f76b76ae001d2469fb7a4a54a0d60ca2c21810b1314560e3f485826887165ea95441fe43218f29658b01dc9083627717e86755f8b113e9c2a744db202e4ac496f53f102f3427a99017a7d695633e92a1beeee56979f7b79a18f0df021aed10285f9c8cbf6fadef6321175550c4ca9bdf6164f40b8e3e9417877cc0159523c0b4b8b997433151d0575f515b0b62296443f5f294320c1246fdaca5f235dceb52ccbb2254bf7f6fc96b55f2aa1c99f124a295fbee4386d356edbe4ac4089e9245dce38e38c8c92018d6cb8846d9fb7050a54e209869e49e6a3d1204c6428c49080318401c20821848031323034838d029e88566e1b8b0639a7b78978abde7d1eee5573abab97029960c4f8a06075a28f3f6abb5bb380a0fb1661f535af1f978e65831f4b13446f25159ce279eb3a17b327d35b6a3c7e471ca07f3fb5609e4356651f28df84f6923a07543db5b8ec920b7c42c4e1ecd5c4fbb4fe7c421ed525afab4b08bc909673ce47d743a9b573ea36c2f8b8004062b5a33fe5b2a8f9fb145418c59fc04ee922ea53aacf4782b078d4556509be0f0f40545daee245da34c0891588dfcf90a8c45831a85b2d0de278124a99c271bdc3f66d50dca9ba740dadff853682749b762889a357fbc11a15586855d5a5a1b00f4904e87fb0e0ac2d07a1ed2cfb15efd123890b603d58cf38a76569a30f26f3e975df9985bde8f71ce42a60f0ab7d36fa149e2307f74a24d219b0c2bee79fe893749fe4c13218adfec67e2b6956a365dc5c07ca2fdae5e620ec4863303a1dfba43ccb3217c95c4c7b2f69541f0cb41d277a145cfcd4a41011683da7028055bd973adca4d41d641dff98422dad31496b94b6d3440fc19c2eb4d78fd9d13e3d1f229a52dfd4c888d4842fda287cd1b579de6ad219f74b6313047baba78b78538b952f4a3414563052889c20221a940002f857565670c5313af6216ca2ffb1116d25af51cde195aced786aef1a99a5dc566a9d33d7167dec2c694594b942001ac1e89bbf85363a1ebf85965d70dfdd00f4d92ae92d9a6f8974a2592a5710162ffdccf47285bc0fc433b02d2ea6414dc912d59c60789174962ec3f0a1a68a34d1645fee01775d5364ea4d968c4d58830edb3ac2474ee89a22beacb1bd4ab0d0c04e5fb8a0d085bd9ca5f4b09e0e69c6990c3f0b04347b0b7c759acded8eb6459c8faadad318aaca7b7a1ae7d4522ff8f57e508112ca40a6b6c71b0fcd37ad1893f22ccc3c63301d2867d8eef8e15b86819e25d3b73580536c69124500d5fc98fc2f6b29927c3dc6ce90ac3dafcecffb61a5cbc8d36129939e7233f8f09e0b72d23e2bd56ddc5fd6bf7abca5201a2ecb4dc4c4ca6438308fcce01ab8dde79d455c631163a20b3ab4826a2e9f116b093c2763c7486dd73045e5bf62bdb83b7df5dca132e2915802a7b0775b26dc09f09334675927db7cb03883797fae5596565dbbe1a3f8b5257fe17a97ac30e7633e68a3d1fbd2a31dee9c9e2b366be7c7b801ec273d14c796e15bc4d4d4a824d17491436f7e84ba8d448bee2e4b08104233135e5eddbea310111b4367f6ae560ec587db525c541846d10ec66cd7505f67b2b0a8e3fe7ed6ee70deabf6358789e2c1eef9f7d2a2cb701c531922d2860190528994e31080873d864be2b4b50bc0371de0225f40832d8570c9c01d4db2db33096cfd973b58a890a43d463de7dcda8f1746935c8d85077648b8f2fb685a40b1462851e598842bafcc3d00217f1ee7d56536c27a8a1b3434dfe06063810684fa5f815012130de548fba95975dd812ab528442c6da32fdd24fc6feaee02f8ca1042ebec823d580c05a4b0e14a1e276a2026f2eef16614f3e1c1d92f20e3df340528308920f5604d7222a4e48eb07e7504abbe7314ad38e26f90226f542537040a769fd02a02652fe48aa2f672dec2a753b2ce134ad40d7c6ccc98a255743c915ffdc4d63845ab4453c7c894c93205b088664dc64b9197f03d1f656bd56973e3a48d144a08aca6e7cd7b504ab9e8fca51de583248816c81ae16bcbe5852866eebcde62fda927a251679978002361c91bb89158f01a5604ec1178664baef194e82922ad378c4be58cceb5b0a03ba62b7167f373d3b4fed405329e61a6c13c1983a7441f77a31e402e47a28516335bbb3d4d9c228e595da97290833ec685e19c131952006d549b3091180aa6ff99129c22469705d784964d3906d7ced022ab13b6d1061972091a9afe178b811b4f93d9d7b7b8a985fb5005a612986e90ff83138fe87b5fd985b132b8cfa2dfff94130a857bdcb328ac6f473808b3f8ff49e7821b4c66d83985725f51be693103c52450c458e7da5ebb1fbb69ee553a639f989f722740c35701ecec2e388c709160897224fdfb7d6ed69c3b57113aec406a585e30471ec26d6e10a4b0dde8244ce0cd06f2a4cda757baff100c213d6a4390f1938a3c146327b545c9737de0d58257a21727f665c3904798d86cb493fa6d8cf1230256b2236da7bccfe103589051a87848595b2e56c182b1ac4e792339326539f921594c27454b45aa8bd19d73e139593aad824c57fe870fb58eb1c76defaf6436392c1f06c2a858ce68987c76c59834752f91f0f9f9f76f51fd658cff13795c98d9d7303e310bd13722463b8d17b9478845dcb4ac0cb92d607d070b3d8bd5bf38d2095269e7e1865357b4a04b21b25074f8f21b4d8be671336c748c0613f946898ef6fd9717792ac62ea8bbea4914d4538b750ef2d27d7929a1946b3505f8281b92ccf46c2d030457800bb8170f007da5f8c0f14f79814e9a065c4fce4e7062f41fdb5026415564e53b2d2e3b905cf108c558cee541bb249d7d6c6423e52340c32b8917e5e05684134024af272ba7caca50ca595ec510b9b8d9c3b113195a48f85dd17ca198d592eea2f4baf278139b6ef16ac78a3503bb3393260458e8910e86663905639a4fccac8d05e37afe1797ad0b594b08305ee9f6465e92c08e751e0dce3c15d1f1d85dae9b5a197062a64dee1c809f7e3ce53c413138e9150e7ea93e9485107f96c3b391a3e5138d1d908d13c2e7bbd80a4713462aa846d80e51b4e8d541503b62673f40f8ea0691de205598e5c05ffd01d85b2a79528535a5ddc6488c95cad3756a93d71948681e2e1e97565a93a60d439fd1633164da70d6c57f2b83623c7707b57379e4f1d0c0e44395e670c886cb25643c9554c0e4d8fb2142f43d55bef930b0da55ce94c2cb5c39ef3e76a6ede37aa6c41dd23713564194ea7bf5071e9b27631596770d8ef8fe17d7999f63e530e8a83d1faf0b226672e61591795c2c9b0788ad4a95748d25725b990ad584c5c6da4231a793941cdcf9ae088e3efa3207f423c181bbfca04097c920e8d9cb49e90c0044762912c6c0aaf3ec1d92fee40f5ba2e1b782458247cdfe7ba9a2db9fa25d4925e1bd3d3844c2d7510c0827888e7ff17cb62f508409f476f9e2b89b88646caf65b800d784ca5115e2411f4c9a8ff6acabb7e79eda731da0cd77c65fcf4a06f1fa9012c95aece974c5a9fcdc7f049af9076dab9d07be18f0d219d2ad42ec8bd748e5999b60dafb3b9de748b94b4869105a15d10416b3ac7b5826bb6d9708bc41e85a67b0241823401c4dbdc92828ffe92eae14367df20a110abc73bede6d280402ced8c19e8ee54811c9564eab889d3ca40a984167e13a8afd2fa370e8982c9d8416af0094bc1925f64d32d2718962557b9530ad06f1af8c979a1d470644740311df9bc0f9dd439a475ac2e6572792280c4696979897a8f046b962676b2cfd78a0b817b0ef315177f403eb0cd0e4a4b9713ef4e543c8eb6bd0883baf2fbc4f61654f1e1627fe986c58f45510492c70152a10e3a38a0fc5cc4a1dc99cb42ee29bc3aa206ef38ac7a5b788a76308dcb3af2cbd5e79321532cbb46f560d842164f113bf124de9655e7d4e542ac8adc56f7d87375280f69c64a70804642a5122dc05ef46419124d6188b485ef24582555c542a32cd3ab0c24e5326bbc2059a7eef23af483a477468f7fc432ce4e0c145b5f38ca755d1c10b9fda524f86ee24a833f611ce67af36d6e5d82c886c35d374f23f31d66ce5ea14a3e6ff948fc0746e3a5910fea0f5c44a25cd848ce022508e00f53d6967100574a8cb979bf540bccaa6d4c19bd44d2809ea4baf6bcb879d860c1727530c47748922670387c5528b230de1ecf88a6ae43186e3eba7d3d8a11f1dae9f4eedf40e6f8a4b37228a165578ad8df960223790b98fae320c0d18810ed9a94517ef9f6b7dbb3d4733e9bf9c0d5ed192d4d4273165102b8f3523c5871fac04c0c87c67fdbae963e17b4b00ea102b3e7d3eec00c91511fb7fcf4a3b088bd73774ff27bd590a80ea77d71b0a10e8b7b5fd0808548122460d89b0ba66642dc1bc01b09e8da0b10f6bc88df57fa043ee9450f44d0590e44f51cdb9fe385891f856a3d7e7c1314b9f5031ab76540d2cbbba14822aa88cfc82104270c9362cba60205b5b1a65a92acdb16fb78201873a5a0d798a4848607d995ee65f1f298ce14b3ab81cc264d3b3546cf397ca9ec7b475e8aac69bab60c941c9d0166959c3b94772ae8dff5fa2af7c9ace02e5fd30d290b1f7ad3affeacfb6600f9c8aa29ae53c565f203ffba9cef229d3649258536d89e9a60c8d4be54f28a773f70a79bb4a342585cc75ff6c547333139c5ca5077e508d52b8a027e44b1d664aaa006f1ff5a77a3f35ea26e1a107be9a14a7a8abbe8a01ab1134b40eaf1ff0839d83cb731b055dfb0c04502cf5b924c6952867b42401a914e75a93abb5d23fa873f9964a7935a71c8930593af1162c93cead7899d263a92b2e418786e85043e522d3884c04f78df58a6cfd311c7a823f9d45bb9d0972ea59e9e00b29dbc1c1646f29a269f06237082dd381fb74a61ed54fe7dabcb64313cae75a29ae58c86d9bc98bd3edb840c9911764ad219213f017c3d20e56cade806d5b66f49749addb1744b70761c235ab666de479b1115cbced83f13e740e4676fa4a6c80cc67fd937b6283d3f1947faa539a6aef69d6343eb6b2a6a034ffc4136ac48770868de76d78b72c23a2a291beb9b04bf718c4945f600efe7a2d460c25889028eaf1df45b374c95385c1fe2f934bd80651332bf827be7634fc5c2d60cf8285f30ea32b1d0b8095eb28d7160b6e6cf3063e8d5b0cdb25f611cdf96bfbec39b00945fa9ecd52ad8662b07e450519f1e082f6f10731604109c1ab309e42e2d88cf1e9a1d44fc0eb09560431fc1b0d2446cbea84ab1781c5026ce6af7b6efa0d03a97a3313ac976206175d4e1f2c6384e7130f587e73cd8bf2979548d45649ecc430f707b3928d07a6141eb1e033501e04c9135bf3cf90eb7aad0f49941e00c5bfbc23c00592c7b79b986c417976ae58cf6215a8c4439310ebf530f6495b264fb005e6307f9ca1bb8a395078e9c61dc805605819fdb3637dd07f2264da3be3b3eec305a4814536d2e5c4e1dc7af94955d805e68e92beb9ba9c8bb06a55e18d71116435a0701ecadd0f6b5188ab3e678956b74dbbba1d173cf9f35293b08000f5d4d387bdf5467e146eaab167afcbcbc6422df4b9b8726c358f520eb94417045e6f4f63afb4341d8a7ffc92e8960f2b7bbb9c7677e0987ba8e6c7797ba9da44238a66cd70b79cb775fd7b583663d2b7ed76ae0250ad0fe014f9aaefc611c833a5b7ad834284b0d7348d86a3cda95d4197421c9e3bc333fe7a9a94370ab4d0931cf637f7156265e7871821899a08f25ab233535e947addc0eb0b220968457e3f1fff0778760073cf22c6d674ab06167036ad0e36408ea03390d89658123a378183dcf23bcbee448d0a7a92df11ee710798f11fb176032b97f92a860d418dca91d97a1ad35e71f48236effc63617f11f9d56fe31dea2bf4464fe9426592ef66012bf91af867a9d1b232ee401f4189ad1274a65c6cd0f42635a57711d575cb4a4cc5f94f19aa8001e63105cc5c1f0ed00efbabdc340672e05194e124dd85faa3806d39e2a9fc8e1f25d76f471915abe97b3873a3204aef7cb86ca05f45ac45685b1743d0f1e33a033b9078b32ab4ca9bd2d1536c1a0affacd9c919b8b3505f0ad0831f3b7970a3de14d893a1b4f0cb4a5f79b17306f74a306df432263767e04f025d21408fe66f83bc76a60ed0e523bfcecc9c99ce5553aefe7dec3899fea2f0b164e1f630ab651c87abf81c28ebab3c481d094ee37a58c52fd0780ee369b9bc8d5adf18967f458d44246ff34015d72520c0617af22b47897c41619a4d597a4603cb8702a6f643811190f8cf4c6497e0838e49186c39a863e1cb5694573a5ddf5e6fa0606282eadb372d718038334308a1c34818041e9907489121ef94602d065cfed9ebe18eaade91ca339fb676a02919515d786d23f4bd26fb40f01d14b500c88ac3f9a735577861e72957cb1528986848a3e77173d708363f6821b5aacf65ef2b11e5ce666f76a3a1933585159093565a5810af91f4efcd758433660ab6368bfb42ee8a28189afc939ec1edf449ced41c47372d9e83f1c80ab130c98659f97d8c326e8504cf542834de4663fe0c72cf8c092eb05944240fcc1618e642672212a1f45063e43e3f648f0fa10f19f36b3887d9b84f159a74fbfaebe68513e9ee0842f3332ab02786b225e322267170ff1a870ee18dac93cbe8909f0c2ffbdf837788032be2cc0d5d7075feeb7c1347fa6395005d909b0a4f37daf673b21b7c6c81eeed123ff2102eaef5ade5dc7b3a604be39a78719e1c2c8a89bd812d832f3190aa497d662aa10e68356b714513c56a159b56080d7f4e9e8dad2f6d878d4d4c3d06e2d88bea36f55a538c20d971a203f0ca885b38fc687f762c8c7f034a324b391d34eb246a023cbaaf1e58c869fd53b2574593bc347cfcdafa038f2b90dba91b26cbedc1b3fec64814d01b4dc80ee0088c41468ccbd12059708b81568025e7c3b3768c471c198d246f7531510cfe68260ad6c8de8c5e9a69251b3c2469e65588b0a79bdb81a4d5ccfa031feb906d62d0186d2a83c6ea9f67d0585e98a4bd4b2fe4625291676cf126c1040b4a5c0afa2ec217df76b88365c959a17621b5498e3b2d0718b3948d80a24531f8a1d4ee31560b3839a13fef8d49c098c82dc5c3be317935ab14a722ad134abe7a126e60b77944f30228009e0d07ff6a8a31e577f180eef2f08786932d808f147b6eebc56f477abb575e2bd03ae24f9c1dfb0015d5e19dcf2a3e060fee0debea60c607ec18131d1663dcac18d379baaeeabc6096052943989846b9d307a20fdcee832abb5f65713b7905b6abf5edafc0a84a7946a2f454b5d984f5089553e5c5c82a10182db9a665231d8c67a91b735114930a01bb2454e782304ac873a5c4e02ab363ad02344899f1be13232acc9db9d7dd0b84f2d2ce2346d16db1cee398427107fde5a1845c191dae3c238c72d14364cf37ef7bd40f1035ac981ebb19b5c1bcc234dc04e9727eb1960d63844d32dc68d51ae4be51bd59753add55e4457f465594927d9b90ba36fdbd4df28530c4f102c325de136b3f4d13d4caa75ea30e0685321a31dd574214673ec11ec98a415e56dd61468cd717817f53159228c4edeb6db13e792951a2405940087959ca500a57808cddf5aeb5d0fb908d86938dd44601cf2efff399bfb30e42d0cd8f81cede4bf1ace20279696d41ef7978ab17f54f5f4dc7ffa8555a278a0f73e1acda7ea7c041c5aab0826809ffbec32ca909c4c8c55e125bd902261dff5dc0bb4e5753277717135ca34e63e02d3fd16161a66757ad5bc91d0a25d89b261233513677f54aa4affb2786c185980ed62b977cad43273d4405bd6af3ab7d583934f3b9ec9469fa318431e1f062a33edebd4d9bacd4407088ecd50def1e742e5a5380b3bb569544080e967d013f47eb224ba0ff48a0b87de2c288233fa1da6f6206b4ccbd9d9176a8773768c2c95d6158888d5e4b12b6f222759da6e8a8d0610651140bb133981654a02d41661fdcb2af195580e2a4362750398829ab44c32c73cb38a456858508b22b8db78c7e8d3b7092aee2c80a0090ac2c70723c9eaedbc1ca62aeabf3700889dd0f358f8f20e6bb001f124f2f1be51a6060d6db2dc6c9e0903de12092f0ca62a6fd085c6673b467f143ce39b41d5d84d4ce1acc766ab7cda38461489442dab74eaaf105627491270f928f643b617611bc42f646826620a23064e9f0305faa745a779694fcb68c2ce55fa6d5484a17d457b97827406047c2fb45e5e9f23e1eaf710ede0fe56142a1f6c40cc47f8cc9a49533bccb7cd06a2d65484081bdcb14c30a892e8d51af299d8951a5d26e8e15367742578bb97f8e7aadd4ca22edc0e10b335a050ef61aa4e1598e890633c51d5c349e5e56b49729e1f01e09de6ab82179db519fe8f4129833f2e14a0c5017a02e2c2c600e4690f982a86ca5f7e2b2cfeb1053dd80ffd54d657ff4b8e01f32979ec98bd94888d1b9289d559167ec6f8bfe05635ca2edc194efd4089ed3200a562346a2ac5b371262e2020673597cc844bc1fc522524f3e70a0d18a611f36f7f559c178f9b8c22a94fee435941f06c6b939aa0c6100481730b7a8170984e28dcaada577a9549c1e8da9633d6e0161b8673dba8c3855cd5acc825c74fa90d68833e25c13099f534e97c331c9434ad28d8163b9cf3a2f9404c25c4184f61103b640428c435806623061fa92a09137154be569256588038f3bbde9e40cc10c20468b603ef2393bcd337deb1404c53253ddd6faf00ce5d1967ea5cfa47fae39169d0f3f0ef98e7a2a8ee45b784f0b8d14d913e2bc916f87522b91c7c0dc6662a7d56ed47d2af3df55c21af749e6a11647ddf9093c02c6863d67bbfc8ad1be5649c6d53c3a312f300a87353062e10af7932aba049a2c44e31d43caf7462888f129f8ef6fb2f6cc219ae55a87c8138415655abbf1b9d7a861f4514d5c625b4ca0ecc5b114e0b33120cc6ac6b089a86820ec49a916776eed26834f12a4d3107e4911fcca36bc81e996772235370136efe1bdf1d601f2bb1a366f606bda9447db4287dbbf3f45ba22be1177931c342bd1b88b2517af50e4246b04909af268e2e295656baf3b2cc4ca111c46f832fe6a5cec8a4c1c7388e993aef8a84faf78a11117918b2e064dda049aca0ada64ca8248b93b59b38d291adb1f2e5b84952fe6d07227cf875d52b75e4f8432627fb061f7afb1711125eb3f2a0f3d5f91abefc1bd7f3e25138e234afdba7291ee93a0a29534059937707065ffc05ce27bfceece31a88b6024802d230d0dd2b44d974dc645409837fd5f599ad834dba379df2f79315c854ef62020209497c2cc10696c0e80308e06bb156698ff1edd178323997e4f4682941f18e4a7ffda0dce5f298ffaa05b154d2c0ff594465b7484f905669f46f118d62bbf6ae4747a71d21c42f16752f802143a93dd114362cacb43442c615d235edd8c6ae2f0419330d3d98e4d0b920e9c3daa54e0013f56f806536c44951544f4cbcd5c617c06f44629719b4b90911b46a74bf95b781b770ac328b0d97b1891b773b5a7f0ea0216d396a1e6102771eab10e529669047baff6c8de737414ed34d3f36dd7f8199232e4832ea9c114e16379da5cb257d1b8b0864808b9c4ed88433c1509b045c776c9221b816e54146df7895b453f149769e1151ea8b0451a6e77d7d8157b3a020f929eec83886a9bf3ba53057e96b490bbe78caaa3be086db3ee23045f72f456a7d982ad09ee88a274ca38a4f17ec1586a4b62185838b584daed6658d816f535ccfaad3202413c16e80e2fe9c895de81882fb43cacbf77f13ce63fd3ee5c656a2b432deb86bc9ffc1119ba8f8ea1cb32b4a02bb4bfa4f40923d9564854c0d3ec84bc57ed915e8676f8c457d19019a21904219250c0cb7dfba74a813722249f7196f512f3ab4154a2e42eb840efbfed0402cdfbe811acfd905c4e9a2bab052ec2f45c8f54d4aaadedd413e5e74135279cc3212715e6b04ec70b39a7c50f76b93c7020eb82b16065ce91ec694fa1c9c97f6a5298e878ef21590f73156187b5e80460f8b8e863b4cff3733d7f397cf6fa06aa0ffc8435564754344810ce0422772b8ed6774b0191e0550247770b838c9d7fa36442af4fd814a3cce57bf49410641fb840c3af562fa299e403d9f4c0ab9e861838eb512bf71d21a2f856033473230ae0b1a5c398950509fdc615c2dc5ec8234c80ec08360a1a42e2bab1e2496b59144a3eae24e457e57e2c59166a99dc531eaf46447249f2e379c594b15a7e0f2528f8af8fd257ce2d9550e7be4894252ec3674243cac03a8cfe58096bbdd069df07cfc71600cb4b2977a4dedfa24f379de72b9baec4bf62e0f9451d4767549af49e1b1b2fa7c59d94d1fa71d9db357161008a7c2eca087d59d86f25cd4f38a477896045fe3148ba860f762ecbdd9e473cba8826aa1dbcb8ccbc18f7fbdc1c3b8c9139d6a4ce4aa74f04c953fe89a6a2df24c713ca7b78333928bc28627c14e6134bb1d01a17a8241ce81ac53efadbc55f525df830a2ccf891bd1f8030c22cb018471453b70fedeb277061fc3f7a51f259cebbd81626b897142e20e5df37ecf1907c5cf237dad46185b690302191a37a0169bb37ac80f63ddb475a1d9af58648f1b613c251b4994f0dbe428445709df44e3d748f8c9deb1f06fef41a137862f83eb7be66ee314b2693b96023df052e68f767277c6e5d69838c72d8e7667a6df8c7045ab4e5199b0394f530e563eeb33505a840d51d9626c1e5dccc8afe76c7f55d5c3ec68b06181a882165e083995462a717e302c2156a9b6cea329303d49fb7c98f4b7a01a1d41fc6a564eee430f1108dc2762a73dd0e7ba9c51e20fba40a2efc836f855bbe4f3787da3013155aa544075c6730cb01768bf890a37a7cc8cd8b8d339828820e20754150f00779fc397e399022fde0bf08f75b3b3fb273ab64d006791c8df1826c77c9be83ce607a42ce198c8c06b9ba8d7530798bad603fc179a527d7d38289673034e03bd82a906e63b82f23985ec736ecbf8bcfe945d4bab4ee8cd87dd46f965964dac5388cd493bc10f8d92918671b4f81d1765b83349dcdbe3e14c9aa76c28de637c45df5dc52391432a1d35e738b46339e85841b9ae6e4a024029e42c40f63c3c076cf8b440d95aaf067cd89418b7ffcb99ea9aa320a43017f0c076659210aa89f10dabc1cec731515c1f4e20d6fbde563e5a9d94fc02dda979545d4238df6bb57f86b40fb905dca1b92a13822018260976b1711c4ed59d52714a65cbe24f830a9b9d506eb71fb15759f01a5c251fc2ac9cd0a9da68958aaed0415c3f11ed55e34b733f5966cbf01ef51324bbeb704c172c179253abf3f14d8156d9e969550e886c9c54f36a9726b741b348dadf696ef461f68dfae11dfb1c62301c4bc01cafed0385440d2ba3aae7198c40aa255c0058fe8b106788dd87382377b82eb7a8d0a5ef50a3c4f000f40a10167471c51cd56ebc65edf9cd10c73ffab6f8a921d8fbf2318a6d191ba400a6eb98d4822524a29659229a594920ce1037b035403605a88a4190fc42c64628e909d91c51a516c8c0c69324606124b0f4298a029f2c20e65c81eca7830f961a3c59393046220d1d0fa3103d696f60b080d2d4b60645885a8c2d105ca59112f289e282c2a9260b4184eb9917245f56507273174f9215631909ec4c89095820ba6ab2a45b8b67860f02409d7921e34a434e954c0848891aa60043738615d09917276c5436206b1304c2ec480c8d8b162826252444c89a8a2872a4c8d931317ae16633c2966e4e04253942a252f457652a8f841c80c63486ec80244cf99212bbc6cd8a285cc8a07284d53922ce98697ae2c4678d0b2a3030404444eb981449543d9904b584fcecfcf0f098546149225c3a62a6078707c7c7c0660eada91f443d40c1deceee6e626041625422a3774859da9b85c2e77736ae2c328cc01ccf86f39a8a6d3e93859d04b0e600c1662be2d07d16eb7db0553c6acd20479f430c3d7c941a9cd66fbbd23088c2bd8d800864a4a494f8f4e4e0ee2f57a3d1d243ec28e6bd068e118e3f93b393839e8f378bc9c2b154cd2bce0a14c09929e9e9e9ddf83b3cb413eff7f1cabe0182852c008c79a787878743ecf0e97836e7a7a7a764129271e3fca4421e9b1b3b393f37770b51cb4c3c3c3439e39138bb20a2ed9a1a3a383f3756ab41ca4b3b3b35303fbe251c489171768a8e4e4e4ec7e0e2dcd41393a3a3a641322313ce93013c50409070707f77152a01c849393931364e684c90c131f2cccec76bbdadf01fde4a01e0e0ece4f0bab1c783022248b0c87c3d1703f3e3988b7dbed68442e5945301b7a0ca9d56a690af46f72d0c7e1702784c9306e51a2e5640b8d4603fab49f9fcb413db55aed032857b2a0d02c799292a6e9cf4f7d9294780ee2f947e94f522a49d0885e3440825604e5ecc7933555509c8080807c3e90ee76bbdd6eb7dbed76d44585514185cc8f1b55437e7e7e6efe4feedb8c40313e906cf9ba5243101f1f9f5ccee7d62bdec884d5f8e1030c616688b9b9b9c97d9567b3d96c369bcd4624abb490ca3202844d17b15c2ef7d7fff513fc0187313433c896d01e612dc990e8d42349d811cfd3a50192972930824b2c94b03be4568f1835ae649972c38aa0aafb3a44dea7982145a4d2e4482615a5d3adb79ff323ad1cb98e445dd59882baa1ff062797cbe572b95cce7bef13e871e504890d2a2f593a9dce76ee743a9d4ea7d3e9be675936d73b12e1ca19b3afa51d3868dd6e37ff4d1ccbb22ccbb2ec8eabaa7aeb1da518423c92868d18d61920369b8df79aaaaaaaaaaaaadf28fad77565c74445993143ca88132824bcf79bff5dd2d6755dd7755d7b484849288af68e96b8508629072a302a124769efea8fa423c1077861c051d28b9b173c2f7e4820219526df3ab7e07333d081ca565160cc76d9febefd457cdad6b8fce5de615ef6640b858b6e18bfe4df9bccbc1ec97b9977a4421fed9fcf8a80fa9bc0619912f9f935b148d0917e66edd271edfa2a0ebd1cf5b702569a3cc83415b38a552d8df2ab0b955e746a6b74e1a24515a15c9a689808a8bc548dc768ca254dd18b796aefbd776cfea1d351eb9f8ebf509a5f1759139792005f845ebf211e92e54e8ac89df4e5dc2a3db90ef0119c139140b445eb97b33e12e59c73d6bdbc43cf626337133b11ff69dffee5ce9c220a897e3fe135fe9df737e760be411efe2510788f302f0758926db00b231269d494c02dba302073f284664657cf5997ddbb3559965df352ff6ecc119fb74e5e6fc037c7fcb235cef32dbbee1aad6d1b2ff5bde5e6e5f2d6fecae65ca61d2d6e8fbfce33826bee9c7a6c6255cda6b90a9de9a29926e624e4536555f67b76a367e79cd757024c966559d634d9b505e21737b189060139d51f68e9798bd8ebf7feec565555dd3cdfe39c05f50f7fe052696baa9ee8c7a5148e113751bdf3e626ef9c737fd92dc33030213369165267ad054bcb14bea2a5a9d655a4856bc6d6c42755865970d0b4429c19821989dcae59304f5ec7e9d7e85577feaf28f6391acef7cff35f9dae67e47fde971a107d5cd62774d7b9299b284ce00a58e95e7ca4b2bfb6c5fe6a424cbc954d3a1bd15838cdf3ecb1705483499258d121961de7a661b94204230446484cf1264d51e9353c4f72ac2c96c5dc0605679a22a184bfbf882ce27b5d3ef49af1c02dafd1047c26f4456cbdd2a39842619c54ae22da902e2ca1b2724c0fbfaa84bc58a18253a54dd1d089bc254668d0f5ef5f6bdc23cab7eced30f61af772eb23b6fceb3ee23c6ebb9551b508c22505c7550dd5e7d76e3c3fe7b78591613163c3108b99329665d5d496cbe572a415244d6cf061cbd3190f5555714fc4ccd428b39226e9061c900e31ac1c9910b76c3cd9f959c007204962f8a123082dbf6300190f31582d6e308181edf181c9c2464a50c61a166a4e961220a204c7c4885a592920804ed08c45fd407dce20615957685005d1e16f767676f811cacc8ea62c6144723c3d3d3d2a1c9922864d99225447deceff7f04305244cac4200d73f07a2ad0e147904c0c24162e72bccfeb1d4d00830f56c24481d2e10604595a72fc8862a2a3478a236745366b68409179aab28ac261c40cc69a2e4d6148da50452d69592d6dd94aa2624a53993216633956347941c990cc51ca1718b36039f72ed655d18329e1cfaa8ae83a19ef8d18beac48123bbec0f2a957b63e3425b2d5b658df45ecbecfb42d50db624b5a6fd7befbeaced73b5a72de7a03f071949718f3f286f0291ed243fc0600e827c887811e8f0314f73e033d3c3b3a397aff1ed658ff1dba8753d479e7fdc6979bf7bed3ede472ce7297bbf4270fd73bcacfbd772fa7a037a2047e05f8022035adebde76869649cef88bce24bef70a7a99da265e40ab9b86247d5be4ad1fb5f4881d88b816e0364fde2db4e679d89606ef3d164a693b9dd649ef1a5fcc026d79f855553d0e4d519f7728896f0fff1db877fe164caef96fad7cf73b6bce4da0ad0e5fb63d3cf710b0a8f67d77b2dde1cdec311792bdf7321314fb15bdbe81b6c9b0cd152effd53797ff17957aeb8cb9d657d1560bc49ff7a390699fd7cb37a8e41df478146019edd5bdf71e7079c0f937e217040ced039b774ff4f3937feeeeeb7f4fe4a71d277d23a894083b71068640eb13c17d3f11ad10112431b348626416420a4d669c2861a234324145581a9dd0e002b782dcf4b0d59635d0ae81dadd7a8a8b74f72d16beedb636918bc80163006a842abe4ecb37d88e611ae2104d567bd535112dae240d8282d15083be0dcf4e28834285e6851c52387cd9e9e119a0314bbea86481ca11a3d8a428353bf2a473d9b2333343c6c71225335f2516311b42c8a4aa409d5e8c606a1596a82f19309ebace2e297610993266ea8818d998a199275af72c9a19c12797a119d60b760ac65226f6a237dee307fa947ef84691826f905a4c8de809347b2e79165c20cdfb55088c2265ca1659fbaa92eda74d68f0f6cf29dc37ad72ba9ba5e3e57838de8d67e3d5789cb7792ccff3683cff7d445bc8cf49d78ac505d2bb3fbabf5757e85fa0ef2afd6e5392feb706b2007d1e8764ceda15c32f63fc5e1f848ea4d94b1ea2f75e7a4c82500ce18495300d1bb8093ffd8f020612054992537aa397f3f4de7be7de015a679c15c0f7e77c7f7436eabe326d6c1a590875c9856a76468dfa08d44048d1625b4a2745ab182335d0ae73de39e7cd3b1e6e9eb9d6fbeabd3bc6b8ab090b88d220664affdb537f4fb3df00caaf80462004f6f99fbcbf6a5be518bec632f42e716ae79c73ce39e79c73ce3ae79c73ce39e78c75fec5d478d321fe288968bae4d85491aecc3d3d341adeeab7e3c01a56ed282a571174a2b2f3dbdbbac0df0a4339bdfa5f8d7b4eb5df37be1ba1ecbd475fcdf5df48640c35b5474cea2f68ce6d19def7671ebcc133cc94b54e0319495f4cd6a6296bbfb46b865c185ab174838817d3955792d6d13d6649b9d004e3463616ef4e48446ef988feef68acb0b20f27bdc4bb84c22f0dac46dc9f754534e50b7ee055ca669a9eea47735673fd34943551d4f4b455357f8af67f9a26af6f232ec550d20836d67bd94328b13de8187f7c8b5260ba59fbeecc392ff9bdd7c9780385032579b74e64a3ab9f8f0f6ed0e867a65586457edd20ef79d096e17c4a557b0ba030978c2631ed65341d73cbbb57c8f7f482b114f4aa9a7f5673ce39e7ac9e2a110d68a284cf9755f5aaa84e53dae97fea7f3e53d6d34658738a9e7c13c3bc488d2cd7273ed19ca6a8978b8e3bee389bbde471ad378e2003875e187a1a7aa195757dfcff33894626b64952d9f7aae841d5d4adb222b788b43178436b9224c9aeb7be44f396568680434d6d9a12da20d0216d1ba349f46a3124a33db66cd672ddf9444fb4d7aa413b2d4dfd27834cd544bb9973aaf67c2f7befa659a2e8fcde32289979899a27799efaefcc790fef4d92fa4bf7d0df65aa67cefedcd4e4e77d73d20314dce8977b1ebd7dcc10d0b76d3cce93415f9befa2f2d4a679aa5a456197bde3b555539ddd2da3bd5cfefc75c82d330c3ca2c7a38dab74c4c09ca2aa6773f7296f557928efa78d5c09853fa1108a240aafc250344d51047a1f9151a1f03cfbcafa3cadafddf7545fce3df7dc89842e5a2f44bcede2cddebbf7bbddffbe7328d8bbf7bbddff3e9f3e7fdebd2c554cd3944b5aecbda757a97fb4d83bafaed14badcb5e969b1389434ac40b2472a311454b6369f2cc3f14e5cd4c1acf8b8ff77612cdf1dedb16cd7bfea1242079bc18b741af90fffa36a173f1692f79a979e5f6a1ad72159eba3aa87550dffc4f7139ed97d81baa518f6bebf5eb4feff72b2ff9f77e89adfd5bbb97f3ab55bd696589e2ee68fb77edc95ab046ab2d05bb6c371a8ca55a8daf65195cbb6abe560b7a5f969ed782b52e5fdeb20d87f5de34f496e8c6957bf535be719e76d5143d7730c85631765979b1002a79a93066792105f9e717c780faf83f7c89462602929aa8842ddec70610b00b00f3d5001c120704636192a4200a03392621fb44e30c4858c703838128108fe2188643280a00010001c6200424200a285353459c00f14ad2db382fa9134538f6a4cfada873763df8048719dad9e89792a0818776c229b26e1bc8d173ac825da81b9a820e7d3e94185a09265e896782d727bacc85dd9857f2d127b40c0c988ca8a0c1600eb97e98b0f6101b86e145f69c04179443675fac3f93e0c4fb4648a24c465c972d373ff6624eb3cf32728080df580a2433a328e74a9d1f80280076a93526d2f87a89c9c1033edc50f3e1cd3da459c9626c6339a7dda430968148e40a623244bc856d9301ac21c9dd2d803172a8cca68c83578a89c61098a1a9c79cc069ba4d5a175abe2b61ec69e8cd23c9a864bab367241979a92ab01038532f928c1c7eb05e5c878d577de6ac90631300c8e9d648f8d75cf7acaffe34c99f7b0354378502591436d4c415da9221b1005386d0449f72cdb5f6493f0909939be668e193c3f6bd4627510bba2ca824ee2600472311a7a0d9915108d9388cc066d4805a3e567d973d7d64318c51af6cbaad86508846a7d9bd24dfc54c78e4ac008c22326e91d56dec27e8779adb2f0545ccf615d45006a1bd0534bda66a04534d7daa7167d5221c4b1ce7182b0464c16441b59588846aeecceddb9e9001e49b672e957dea6c7311bf8a5095961fc33868e2ca3bc22bc0085789ca4a96edd76c11e853d5d67f99a326fb11a91f4b308121afd5da90820dfa95b177f027cbd4a558e5975c2b4b359007a082193c38b3e1608e7ce4363aec4c2b1cbfff95059556ca4478896f178559cbc0bcbb7968452e2c768f84f599b1c7f4be5a0bb5696d95c20fb31c78d84ef56254e6c5de0484c9adc21bc3412a373a0c4bbe1bb4001511b15c27eaf9b32a6b43aa914f4669359fc280be9f38e9a77d76b0f4d20574377cb8c16deb7f875b05c8a5d573bc43cdc15ac541296e612cc426ef5a73ecde7d7e2a90fd2e551ed58daf59d0bf6d35e61c68fadbd6c155c895b489c0ac05a131e5bb86f0cf0f1c1dd225291fc050290929486b8a429f5101c13565dc13e75191fe82d1b3dc398162c7acb3674a3909d5b773857c827993bc144762b96697ce36847ffe46225730680de5108791159fe354e643cc51fd894e0afbd6ae8e7781ffe58d1e0f54e400b9ec26b06843589ae8d6b897965d86288bce74ccd736f1734b7ea37b8d32c63f6983e1d2b4e4cac7becfcdcd9354dd02b5a0438c1fd736fd9af3ed7b12f7288201f968de9afcd6296ab7fa8c7f45969984111ff0711a1547f0be039abe8e7b3aacd92a43ad709bb9ac4d9c20bc798c2761250c4414d76c7294e55aa1b20ab79c7c2fbeed62d732132a124ad1280961071cb86f302b2fbf0fe5ecd82a04956e3e51fb953d3840fca57df032f659ab550e1f6c9347e53315641fe4be4785578fc974b3d5e00cdeb0dd96c123a0198bb91d89d339bea3079aea8bd3824287525540ee10b2dd37160e1568d531dd18208ad9dd3f2a1089fd078ee8013de0666aaa6ba02bf22176be87310b103c690fbb62fbada7681090fa76a3520b552d5d1aef43a70e682c3188e18ff6067460563f6596ea4053b9bdcd520b3c6eae443111c712a79d5bda5c1229fa58bdd006bd5c01f68cb6a27e93e0d2672586b01c74c390c671795a09e4f2b4e06e69e25a87b4019c21d897b74971e4c7d82d7a291cc10e09674c446532f1e7184391ccf832e58a6818e93080defd907f9cd73fd52f2aaf555645f09fe672ced2471929f927fdcfb6df44e48756776c1a381c880735024861c5c7533268b97571ad813caf8d2344b519301d517edf2b23374c87d37c520ecfbaf4dcb4d204427734f064d26773bacac1d3f3d4173c4bb5ff8b2972e8f75d01803fdf2b36ac5811005165297c0257aae4bf0608952e740f64e1604db2a0d9a3c8c65dbb44fd0883ac4de5c25d56a81a977b2bfd7b0a49b151c4f73f4c8b8dc716df3b5378686d94d0f90255e22e160b857b40c30f75418d4de17e4733f1ec6481185f54dc589036f4eb4d4c8a6cfdd93ede52dcc5f1f22e8c8647636c031ee667a8b13a91a92d79320039a8e42777261c5bb10b20039119b01bccc41be717ebcc4731b42ac4c3b68b89079a440f1eaf4e862e9da16a92ba0eb13f71e15c2958a5078e8c62e2927aa7fe0066af3dabac4cf9a701bd4f20a8dbf75299007ae0364ee9fc9bf46a57cf7e15befa6864b8185b43b4dbcdf2cc476f2363b5256b9ef95caef45377ab86dfccb81057cddaed8643461158d90c5b12627e0014efad93568a155b8cfea59fd043c9cd34d17b446f7f0881e7abc73ce0883b7c1d97ebe00d77529c22722458ab08271fe4671343e6b8973abc10181a5e4a5dee98338affe04571ace188827fb700ace6da8359e0361e5c18a5dd61ad2c3f112c4da6f7ba45b80f3800ea9fbeb401335952ad85174f01ca4436892dcd3ce8d9b545441601093944080a844accddb57083bdc7770a249c2373f7499ba14b6cb85bd5d37e5d86f5076b61158fa7a4ea385bf921547b0565a1d97248ee5ed118df739e98bb892d06637b2a41a03d3be293d2c32e2c6707ae0871ab7c286208ac6942bc04d82949497cc596ba069fd80793c910dc89b9db2682fc68a54178cb1f9e23c68653d01812f561feeeaba57e378f810717de208c89cc22fbf143d6ef96c45ba4549af7c366a77b2a88c970df7cc53b5bf52c9aa643336f04abf2b7a76a8f2c7390162a0913ba79d39534435d6489d1753b5fc6e8ba3f1146cd6bf4b96b14d54b0107ee10bee2bddbd4fe6bda97a20278ae2f756a0d146fd3160604da648a318974c3ffcd78f68f40c0bc1f7700c3bd72c185b0957e811213250d124f5094bfd5c2b1af5c8a102e0f687c75ce57bcf38794069e914da6d9cfbfbece1d020aeb8399c18d54e92fcd25678db839b4d6481841a4e14415098a6e3ae7d8aec894d81575ebb18a2216e5bd8f2a8d80d84adbd663a05b966a9bd3b6cbdd236bb5dc6139450abbc05c6dbed4b8659cc66c19c2f4b2c83693e5ece6e8363a8c938125b60f278773850f37f79c5d16b1f4250f796d96f91c2cb7996fe88b10e3931b6ad830811552318ccc886141391199fe44778272c10595e214457cc9610f1b89317fd973dab56508dae6055f15687cc31737debf80b80cc7006339f9fc33604515eb29fd4149223c29589010d2dba53d97f909dc40e26d50ad1870fe56c1e884071f63b58a34e5261d3a94e73ec6c4e619c7dd1ef9fe0b3354bdbd270f9947a574a035dd74a671000a4fe81bd3ececd93bb577190803ef02a0811c219e10c922058f84ef2e343e035047606d71881109862873816b00b22ebcf1c203b55813eb61082ba28c4083d1b7962ff333633124ea0e445a806b092f8b242a8d51dc73ba3095c5d2658c80d51013bc0e8c4b5bb145cd8aad1481ea09fb33002f380ed9226e38369c88adc88552596f648c0e0c208b811631f10599b1306a5a4a6b014f01bfddba7036a2fb85453cf6775055ae4bb4c939b01727e9226de26ddcda11b3f85986f9fa8e32f666347855bc85f3e18a79962cb0962c07ad53d5480290d5d604fc3f45cd900947fe102d279ad483bc32baad332c410b9547a0e011e9d26a30bc9694f22c90dcc83809f6e16567cc1198a756eb0dc3d19c4e1beca240c3f1681cb907570ab4963301c315fb4b823d9c66d30ed6906994de1a83031c352a972c58688e299734736109ee5208ef8be1292e2cd25bf89a67e1e8476a33825f9ab7ded51fc55469d3503bc8361be1211bc2ee2227824d2bdb9e3eb7c198a6a1061c53c9fd503be2c2e040debbfda9ddb8d4ca8381521843a0c91beeb5b49cc2f8674a24b1a42473f465856e590ea7aaaed32e4562bf9b1dec89e8cb5b84bc24018f34bf26f2f082cdd56b1ad09d4982d7efe69d8a2a3f920cdd97ae67ebb421b83896e8116c2d6a6d6078d4534b5f72aef80c5dc5b61679bbd2aace1e3ddf7eccc555506da28a451f339f9898eb019ccc892f3e1ce0ff47ec90747bdabc6bf1c1e39486ffcb0c634f23aa9709929892da25a10ca0e2bf6d9afb6937125cb2ffd326803cf82e6b87ad534251a87634914f9c604248b472ecc0898a56864a272de37bd48c7f5b4f7b398ceddb1e11e2c8f4e51530b37e4bdbc20de7d8c432141b65ec11bded2b48058a2b6d6e66575dac61fa86160b19f45d6550e98ed0d7961e1a85e7b42944b483344914f8fe08ced5b2e01849842f8c2c84272ee6b14e8a3dfcc222935a227ff117718d79337d54635f5af3c0888b56cff110c5d6cba83e6f127ddfaa4009530712b389765f4f0aa4ff9a3530502a205ca86195300ed0a7338bbfe0a5039f45204162b363a6cbf2b7cfd4204b2ed58abf1803268bd3baf7c44c14a442788696df23441835065742405ef005eccc10cb8f089b2068a9ad23a671815e7e5101c8b90c610a5488bc42b9f518937d66fcf85e6b4a081d1f419e277bfabe744f21857d7035bf83e17f873282f9c9b4fc2dfe585e73ebba782dbcd9e23e181f519822d27e3032cf0460e31037b730f6510a22648f208897f92156183db4cf1e4ef305b3e1d231e288cbda9f1db0a91461d63da0f8af95029787058903f60fe32257dfb7337273e60f88d1b48401c0dacc0f95e5310f2d8842d4656b180a98c39bffa251335a8f5a781f4ac37b530fe25a389c4137ef7f58648957a8eb2db91e5a340596abf01fce24055c8e00ab3f00d9080ee5f3e100d8d8a0ab21e853687f9113602ad9ead1d1549ecb13d2e70eff6a94f1a4f68321b4e5decee741021239e2bca2f2d259c9d3102807a9852f7f8072135b7e2b0ea141461c8272e9565c26dff6d548a50a718b4649a44a837842883875bd97f944c48264fcd4706299e545b50b3729ad8bc9430d9acb361a5f8a8e674335581f4f9dad834dc38ab2e414e8b9623688ca3ad8bc69ef339d4df49e74b72be64d812ec6ed6aed5f45c8f8e34f3217d6d56c702088299e5d5d0d3c224c2173032f7607fadb388a1b9662630f1195c51706c52397c4455e26aca58711adfa82030a4f6576142227d71687061def1a9bf277880c97c9a828fba5173f88ad7c754a4afdbf39d570c460c8529da446691d5f4f394f8a0974e1b73011b9749139f8b48a4e1a0570b4b13d87aaaa04c43897b19cea82a2ce9c1ee41825f9e93803628c3859c3c74bdb5958edea833899449e8d9485905225338d9353d84fbdab3db3b9ac6c96ca609e4489806c1f8fdca8210655a1fa31e43355d4c66fe45e4182e71a0359e05849b87834706481bc4ede4e9bc426114595b97cf3df02575844cf3092e3f72661c3a3478f3403c08d781ab3710ba70357e41a5ea59a8352a62aa54e95ec51128c6e70b8ac53dc76ce19d03f755f56390bf975e7779ad93aa966ec4e856c1083944ae916c6cace5763ba94b1dbcf89dfa288fce23d12930dcd54109f55004a70df511f184b3eee3a58dc7673b17a52e1d8c7f4b9b903b3284c5331072f868bcf46b256f191e31a033be64148feea779abfcea49c195ce80899812a2b673d662cbf9581fea35040c9a58eb254cbb827573a85e557840219b2251d6ac5f19f916a1c92934a39708fc9c5bc8f42486a03518a3a5bb4445ec06192fd8c00ae090583720755b13fef418a0dab542da167e2fd6c1897aa769a0effa14e01f19eab3b8b449ff74a0fcef0e241e362c02194793e192d89abdd8f45a74d61fe74a4f2b5a00a6c385774fd97bd9c507e3d906b0060780e738c8b32de0361f64a3a5ff76c0818f0068adaa6d16e5230dbd66d7472e1a7eb8d399c58f525b77cd6b33e2bf5f5e0f1e5ee0314eab3192bf75fe966b3230f7f744b294199f8ca4a29f448c79be117ee9e3bb64be702e5f1fe4accffac5b69a9bfd18dbfd33b2396c90d3bbf124b2a76342664d2be8d3b9a289e01e01fbc8164a61a4e50a84d44732775a12ab909ef8aa712de8d31538c28b4edfd7357307929b99e028615148f12e1d6eba9bb791360e5469dd48d7bd382c14b66e2520b1f104b225af4e05c33a35dfa13ea1910370fcc26c8285718352b23fb0f64dafb4bf30a4bd6dfa873de4d92b091c63e16b8bf20654671a5d22e35cf5bcf5b0383304bee2b195523c3411fcfda83c1358beacf220fef056382a7ce700d859ed76a082a0242c407aec0ffc1fd9d4c6c3112839df88ba39911b292f351cedabf303c575f6cbc5cbc5f8783b2164966defae78cba5af3b06def346af9bad515be8fb405168b4305c7dae578c28a798df0987102f56c1ca797e239e55f91c1885dd9923f3f66200aceef6319fbe24a443a276561f606f037ba8f571f4e5993bcbdacc03dc53ec8d50de8305277a7ae3cbd0ea21afcd2252104326faf96cb8622f27324fcd5b7a72b0e2c7a850f3ab0c3aa2b0aca43993e4c40d90599c33e80efdd58879f629d63b75cfce8f75515c80015231221653d9e9ac45708e02cf0767356364a7784d13b1b194c7ee1e745c359819fb3600a2be51e426fcced7091fd2e76630372735a266acc8ddc82b931556e47d356bdc060c93d34284bdb77e55e2d84e05d04fb41ca3d5769ddb4fbd4fd3ba54fe86b4dba749bd661581bd933c1cabdb098f7330df4e33e4e6994cafd9259957bbe5e4e2851edc3af979acf0fffdc92da9f0b9cfa2dbe444fc849e00740f0f932b2f595c6e29c40b75a6fce6741a12f405d09a346cbb28424450b372248c055125aa1e86e04edf0e740725faf80e2fb4d557ea84dbb5ccf73d745eae124c1cc061b38f7c793f43bc44e79c90fef98905bb874f10f31cbc14e6a0b579aae4997b3fdd0918ba296e0c51fa882e3cf1d706131662fefd464c36822da579519f36a2d6661fe518235d0884837d4b03122ec84f7caab75bc9ab2599c701463d4ecf846b7e63289d163e1a2bd21376a295484cdd522f81abd6825866c43f302159fe9725ce1f485a79e8bef2efced03f4fb1671e43847176542c8d574f76d2ee14226b5ac633e0565b5efa5f9f1470468ad607f4462959342cd2b40700c63ab281317fac0e4f5eafe833d4db2fe4613a3151be788ca5255ae8ce1e957ddecc2ab24c2ca5adbf0c7aed6e6e5a7a081b610ab7246f80595b85f5d4846221f1f114ccd0a736c50865bdfa3094db0bf5722d67d7f8279647e7d615facfdcdc3b5083f0cc6bf21a0fab17428fea0ee46f308f2a3a84376f217dd51311ba6bc9d35c7fd834ad48561e150c5a241508290ceba83a88755ec6a180a40d0f80755ce3490e7d170103bb76461df23ed2d93dbc5d69c448a217d7c343d5ae483a2238a6523c9030952d411906349300d3ad9ccd73569cca7c8b9c15890f47695644930fa1e3de108985bd90ed851980ea9aaa5df8315bfac0127e75851d38df5339838a49749007dc0cedb30617eefbb9328eba24e60b11661379c4e13440cc42034644c09a9b210d5b932e3fc8e323317a642ad3ef1e05e5a5b975572db83b86826ebaab9a8a164813d69648e9d87799305dee2298eafda85d3abc6761f3c116101bc55885cb4365960a1b535a58bb61a5d57f4ce66c9eec122deba62e4694283001b722ea54228781eb5ae30db934a83d63e42698346c05ffbcb844f00ecd42f712cfd031e7aebd2ef441ba5cea13c6ed51244e27d30caf084f5473fe9b2f78539157c7abfd4b93f2a32944e81010b19d22799c04438dfd516342290367034c885f59e2c77c8db646c5c54b6baf6899368923e3225d5006ae968ca2a8f7360bb6579a7e572936829ad84c8d23985c2235c3af8a988ac703b7f5245f6c1987261b38ac5c20e7363fc1dac7e216fcdac0d29d72953562831fb3989a5f20ed193c0533943d52cd56cfc931e451d4c77df6b6a9dee97e7602914e0d52e95fc54892228ff6fcd128cf3188474ece52c7ee10a772ef4912a5913ea2313dc671b5c4f9ed653add58fc2460eb8d9636f138a4ca9480455ac1c9ecb6f48c02cc50d70f0304da643bc57a2e64c129ede38e7ee022f8e8a64c537ef3b2f10835dbe80a95b46496a33736ffa6ccf94799c3c2187d36c3c1f333f1d0626c4039df343ee989efba12a9207b3b73bc2355aa3b4e9b937f638d540d708aee059a6cc2670ff4da5805ba22e912ac4cab8e5003459d14c756eb9f95940f16fdf191140a4c2b96f5dbfe66e3067ae386cc66bc29320d874d7da7b037f367bd0a1747048881263e1ae017a469b1b3e0dc888960207ab82b5595dd1dbb1e6f5ead8e7fe97b7de54acb61321a92b25a1e4ce1e05ce4a0874fb5faab82e241032020892c9ec2e1586c0490b8a97f0a87be39292e16211738161c3f29ee0bd0dc83043b567124eaa635d1af3569c702fbd897880e98b6317db339b195e7297c659cc7b4af7f8f864e25dec56955864934dc4c50a5d36aeaff5a4cdd63f03efb6d4fc7aeb46f88a2655ba89ef1b6125cc1c4628ce5d1caa04a83e80487a11b097cc79aa3345ba027c30920e83fcf307c92c1903e72d4709327e269b9192e23fa1f1ef7ddabd0f41a1d1962a9de9fe37dd99d146009236b3eb2a505d191fbcbc9f616c30944000bb6454c2c5691d0ee811dea27aa9ac035d150465c9d4888519a8159a7faeb23f480c7ae76aaee16144c870d3739ed798a35f5939d0fa52e972561538f19485689651929266540f3c20c251e8f7678c2ad6f49697672934642c231b8736048ed5d1b97c5e3e80e79a3ccb5aaecdfa50bdcdfc49079abc35d705b641a7bb829baef7dcb862661ed819c1acf266103917e8fbd6c9396e51b9a78e1192f154c838527eb991208ede677ab503a38e555e3b174fec62859fb2d6baa02bcb9697592f27e683390749592cd697ac6565a92eae126ed2070ce91437e02a9fed118f6f7472f352c171a95299d4ae446d71acfc0239c8a8705520cc4008aa652ba4791234f3c25f46d8fbbae460fb7dec442035c6c6d7d94c5e47c22938b9003acb9e506c3afacb00d8b12d93b15c1a62697ea8363c9cb1e7ca1125cce989fec0ad790d5fdb2e9df23dff6280f722f823eb6fd0a9ff7c64c0360f02e4a5b6d78730022efe57fd26d73998c5eb31afa8c6d7c22efd4044efc2ee8e2698c0917ff23d553f35e382b4f48bc8518a04b98a6a6e1338957a2af95b029ac4dc2c68746d24344afbf044bfb6a75247395ede80f83d0ca4ca1968c402e6b60c7bc101c99a7e4061ad70c53c3d5ab2fab9142d45e9a9c838d272bd3dc7ec6d40c52f058abed23a01e1a302ff0010c6de3099eaa8bbf4d51d20006ec3b2cf43ad274301382242a4626926ee65fc26d660daf91a7cc01f004aa9cd5c651c719a47744363092da2c0f1a058fd05fb848ba119d3e5b2ef6e34aa080128505ac70481e01ebffc7eaa01dd9a2739d0ef165a92d2c622d6d7e1a630f26ba720bdb4c67aebc87ee505521d03460bb1fdbb6c15d7d29ddd464abb38091522ac1035ad3cf7038af749ebc519f59532d157fab47fad962e6640d5d7c7482a502824a6bea33c2b9ca5387fa49406d1419235ac9a0a4924b4c6e9539e6c49ac1d9538e9814094f0339850db7131dc87d799a19b283ae8e585494a800b2ed286d6e0c5002872195a901a81aaaca5871128f444e40000f5f6fbbf815b881582a941b903c144eb93038e158f0edaa912bb5c943f6c0e1d61895d4ef8b6419382093bef79c54ad6c672b543a3da554fe8816ec828d6ec2d78c1f592fc99404d4ab83adba5608b245c04086bcb980ca723fa59735b1167503885090c23974ab264d2612c10cb0bb6a527b4438154c8bab6291bd278eb04a8e9dda4db306137a64335c9bf41a5d8e50135cc69b69a7994712d4da78a1353f3ffb5312935ff71bb55456cd7eeab5a7b8ee788efe60209eb9f47c61f0c72179873d175f237ac7cdb6ffca04af1e5face5abe52f056dbc077e077085a7ceb4d4f2304aa66991015254d646520012786de68a7a2737fa7964454bb88c74f1165a17e36f55ca402af5e74ce72c33d4a267138abc2f08302c8ef395ccd061a5f6e73f3b9bf599a5b26b20ceb8360a0baa140a605acdf888019518679eb535863f32614d9f009cf3a7b340aca2348409d46a62c9d4b5261fcc6bd307027cd9ba2c9c3a5496d456acfbe3392e7dd921a3e3b7bbfe8db145529f8ea6fd6fabd9cb93f00ee05fda0a2abf7f6b81bb581354f60a370a78611a24ae705a5e44dc9cd776048da264000cd075e177bf8a3e8c3595b2dcfe969d58f70a736466e883febd22b2555ca849ba22833e3fcc0924648dd7abb0e5249079312a4309996a8a473209cb52dc556c645c0ede804c03415194e108da16842ef48338635f8bd3f058d4f4313e848617a43b42be8282dba0e5ad664dad412d1fd63247b48a2870f53946a9d678cd70306bd0e334bec5d66cbb71377cb2edbfe66e9e417d2c40d9ceb3a050e973b8d2eec91f6516371d4a25aa213333c1dbfdc1099065d2355e86d6f283bd8a95ca64183d2509dd432159052fa4ce0675f092066f2b5eb62c9e27193e6c9b099ca6bb07eb300e365656689140309c611f4899bf00fa47f47feff9b59b4592df412a26ee903c2a2940135832093dfa0cfcf9618b1d855d691b0b271f7a789900660b6004f229c357e3ae7de6da4cac7c91e85012e85025d5c6de70368994435ec270d21b6c5083dac62263a720ad77a128926e58197975ddcae090290344d03e9a03625d7a0aafa22fab76a909b38430bc11a74f9d71014d32074cf619e6c0deac6c2238126aa4137783bd8a956839650596104ae41c3e26d0e3bc496caaa72753b3350b9ca26a75651c08c7fffd3723b2659019a1c09101e0b24d90d0e494843513e89ada37e0bb206248890b4be9667063103336ca8b97a922c06ce98584ee0ce902e2eb1d07aa916852a4105fb765b6e93084c91ced5b186850bf64ddbe80230d89384dd501844870d90efc141c96b8929b2540f1f0df618542c03dba951f3798cada4cea01801ce5e153bd9ae02f3c11794f37e284c4f1ad89f4ed8323c614813bd4277b0955140d948aabe2b592c6048be063eaafe0563dcf2dbfb78888726bdd9f732fce9bd1ca351a2e1d2d921b40d4afafc99808c03500312f3011582a2a838995f0ccc3d5b7a48f77db733acc8941ab2fce941bfc2ffe1c770c2a73aeca1ac6ce5c72865b9e85ef82825b47d0e88ca0c6e9be3bbd46a13523c5f5af3f51bd47490ad5b74f4449240a8e9accf156e62b781a6f251575a1b6923a49192274bfde09b849e7c3498bd95527040e2efc3e612212a4761e42a167c87c58bec562bb9b51574b90959f31f9f8d05390e52c9afd3db5c8ce1e2daf6e5cae4f5d21a5bfb9b1b29c7e176d775b4f22335052c0bc43a70e9af882382fb829dca74c1954cd9c5c013739060f87617bf0c71e6fbcddc872d267bec50cd550cb6dab274a55c0673accbeb0c80e0aee6fb7e7315e4fb23fb6a6eaa251de0011cc214d28edb58581620d3584185111495d71893e905e9fe0940f34456787a35931f29b6c490f000a0a1d7f9cb0ca0a6f6963db4c278d8e11051de401cdcd405628fe42722b20580e7813a356dd1f0245ae09e0ac565de1986c1eeb930973675fd4d3cdf23707e47a959c9631fedacba3321a24ba216f93f38f9396cc2befd969a6a2b173a23c194c9fdb4920f0d056c0a5ddc7f468553914d7b379a2930e5def7be67f2d930482088c4e7ea95df37b70f0f3ae0652e9b5930f40c9478422b3e7cc1838108123626bee8a239180ad3ae744cfc5a35b688d9d55ae63dc3a3dac8853323e22069510218d27dac0667e617ff3ce7c0cf2455ecc033ec0eb78f4fa01e791139769bf28c0d0ad9f6be8924795104f3dda3aeb5d8628d0d008543b7441c064174fc771fa93a87087074720ac448692da1f066d52f69b7d6628d86011509a8244531c14500b0872e34753d8a3f594981e5a76c5b9e8076d705d547324043baac41bf3eb434584b4a1d3045c2a5bd380f1ec518dc930b9ce40909ce80d6abb731a2389613121b04558eeb375e45b9c3c1a4d5d61978e87c1f292687314be0d2cccdca0f84dcf21e381edb84af37bedd8c06bb50fd325693b300b9622c2465f0718d947b1751f1f5f33f908df03e3df3fa02976606951063d016271ba9915c19ca47eec6b12fd0172d1a521c16b593b425c632607a01854e9166ece8fac7e9ac2817537e680c0582f6cc7488c430d5dadf12fa3c267d002e37cd5bcf20f892ab6a559dcb2098666b65cc5f62be7766e6533e5383ada9c7dd7ceb6465b11318da899eaab29dfce437d528bfc34e75907f93013cf0240d0a0932a4f3f3c5bba2b62076644744d0e00030e21724ce0b31c9bfcef424555f287ce585a666d1afff3d48427f6af812fcaf8aa18a1e8412d51ce789a8feb04b0292500b854fca14b3036f014bcb92a12bef2ff728f55166dc0f7f8c05f1720dd5cd9e7828f9226f84bf178dc124ec66a31a4ffa400a69e5cf95382ec4503c95433e9da11e4e03e49dbe24b16c547297c8ffa25b9aa7b4481aafbf097add5f300e255456d2fc5845ef326103845fc13efbbc8780b45d2d8f0d7591acf80fd1620109f528e14139d4e46a8ee14014bf5987913ce759ee3cdb63fa2c06ba875ecd110cd04751fa980f9a8c069f4f87a4bade8a5aeadc0e1542025e1444c0cc343b2d36c8f1123937d4d21cd17121aec1c23299a5e8f030609c3fce70481cb254ec44573f096afcfccd90597e3894eb5b22e182fc4a9644d70a2fd24c9b498b59f28f5f6f41437d794dd10cd1a51ebfd0c789ff7929cdf32fcdca12ffe96acc4f7722b149716763730fe50c9a4a1e3e82f0f0f6d264005ae2a498205ab56551f67024e83ad1c5767d469fc97c70bc839eab6c25f6d75512948bc60b7dbb1914bd824e48ab0837e210106624afdb284a9eafe598a7cec73589f5defe250c15c7af568c6da3ee78dc4b6a54acf1f2ce939fffe803ca032e8e03c1e64b3e7a4049afe3cdeecd567501833a1df9a3c45a2aaf270b9dabb2297be6285a0c7006ccc9a233f8589316c4119326f2c1c49dcfa426dbd7ae07014610e39a82bca6a2788857b8a1a58ad29e0cdbf64c2e46c4117820ee98809e61fd65e053fdf3462e7873c1255f3662ab883f4a16624fcd7216881cfe5295a026e55f64a0e597de7037633cffc1dad6b6fcf1b131fd1a8efb9d0650321a9814121968df763fcefdc31e31cf6a510300ffdbdc1ff27ed8fdaf815398d4d2087fffb75c630a39c49bffff613f5f17024224fd65aeb916a6466a7803266d7f67e52767b20f68e33384ff62f373e95df333732d041cee9865fadeff63f13348040402f0631a2bf4b96615afef65ffb599ee992abc72da32e4379cdffb9758019a6010980ec17d84c058fa7756cc9660dfd9ae6f96d397f23fae00d4af23aff9bd41d9ff7e7506996b7d7bd0f9f7379b5de35b82bcbf7cb9e09abd3dc8fafb7b6557f49620ce5fbe5470256f07197b57fc7c45107d815d03ea6ff6ab04d14be7daa07eb3c755784b10f1972f1d5ccbdb839abfbfb7ec9ade1244fde5cb05d7eced2062efe5e79541e8a5ba0244effa1541f4055c03ca5ffd9541b2aab389c8da5c9c297cf8f6a6fd3dd3be8e0e024547820bb782ff20cdafac1782188541b62cd3bf4ce0d71c8df4c4205b9629e0775f2752f9cc1a837041a3fe7d85be6ef0542907c7eb8cfe4362be32003788451de4670dfa97557ccd8ca097a7efe09edd78fff9e0fc5c9902698d82f3ba81ff70f480b879c0a300458d81fbbb61ff70f480b879c0a3fe448d80fbbb41ff70f480b879c0233f6968022224fd43ec41f3eeef7eda760e0d408eacbf2f1f0a7ff9f68ff5e664c107b414f70ff6c83eacdec30dd0185e606e93bc40088089641ff4e3e2fede03d152823a57304b1e2704c044b40ffa71717fef8b822c712083b63c74d6240148bb7f4027962d188145c860b7b0058ded9dc22abace4e09e831061f536b0d48666eab840aa7f09db6c8ff8c3d8e0f9d9ad01a340a1f70766ebbc40b2782e877568b0fe8badb1e85e63cd00a1560caccb9af20530895ef840d5990f5b1fc70d27c52a07bc80a9069e0533a0a342a3907e94056bd439f82872f08684836a0e9fec5ba178ea0dfb416ff0b022e7c9200f8727f06055368e327b7ca110e216a5aebefdd0ece7b9a14bb044ca2605fc279ad2060f8b16a7e89838637de38c8e97304521aeb468442f80b0892b32b5a64b534ed9df53e8ab7409afbea0daf9cf3e7728926d79e439bd517180715888c635dd6483aa7dfaf25e8c08c432124a2ee4fa81fe198ad91807352094963aaebaa2168d393a62beee673c8082ba7497b9200fbafea57e5497a175f472b57818fd0c907eb1b8725ad0c2956463071e89f01f93be4c0a44ea122bc0fd5b8a095779aad8a00b340aa9316ac95b1eaed66dbd0df8671f36f6b12aa2af86288d1a3e14b811947ff0f18be2d0c1ff865ef3e477f5aa133b060bb3f9c4c4a06525b3fb2be4c5d4e6aff26e34bac0d60d490905836220001f9602018bebcaaf44a41b577c823dab8e202b20f055a3b403adf5bb3f78e1c6b22720b6ca17bc19cdbfdd5e202e263e1524e864a35352f64c94f6453fff80617bc18d0613f6975d1acee916d6f9571ce0f526c4d2d7f99cec4daf7a70d484c62531728342f67690ee651ab896675cfbc3d5cec3a78de69e02dd29e5b46f3fb0311c2b70a495b4550f3712157c332c3de032397064383b7946662dffd2f8c9644e349587e70570df820e02849ebe5b76e007ec4d9b417df9ddf0d38f72f24bb600a5f33359bf83997f28b36f38985ceca3d1414cfb5d38c58e214ed042242c11f478ccdc1a2dcd15b41c101125e28edf49693a16ea5bd9bbbc5502063155eb32e5a0cb1d66d5c019cfe10fc5682af3e2a8cd555a9609b015427002611432e50790328a2180a4bf4edb141b059cd68dd22bf9bc27a250e4716470e9cf459140df7a0bcdb2bbbbb37ed9452890435003800370033557bb343fee9c6aeb6a3ef3f20fbdc733d152e66f196067e4849d363725ee2fcffff0180df8340e31ccf9d527723aab719735f02201d8a39b423f260a44405820153c0af05abd5b1a9a5a1be1258700966aa6583a39671badd40bd71de8e6cc5c2858b29395122e255ab633b06ef095bb4b2811dade6036cbef0226b18b604df067de221018e7db58c96bfc6ba5f717e7645d1af4bb2ac5fba94e16830eae1321c7d02beffccaabe16d4a438228f3533cf16e0899adf53a14c24ddfb94fbedfb0f8613a7ef3b823a18a57743aebb7f83bf5b85ddd4188195acb1e5d401218d8010430842c630242352250fc06197c1165c4d85cc6c33e3be0986ab612d91c96f8ad03bf53838a3da6866a5b1e9c3179b6705ca1a30356fe727cde658acc1f23981354c6934c74c58b4c52c22a8ce0aa82dba8a4f3bf7665846ad9ae64a1b4de8d8c59165d34bca42fa899ec38f7abaca99fe1c7c1ff59b33f3a53d0dbbc8cafb22e60965b7d4a17d1bc2eff50441cf7e75cfd1aff8754953791a190c4b705e787b733304244bc9d6f60c2e8a06b4e1786e4ab307ce7d1009d224b1342e190ab69632827cf39bf30c2957d67f4ab45e2f70b2207700df184f0f76b61927edfca5f8383c68e4db2093086bf0e25597ee52a43382a366dfaa0d95953f1b3d11cf84960edb654fb21aa633a516573863cab0272a106dfe508c954421c49379cbcdbef28a21ab86db7556b5a22c3610b17e6ca44088e1ec10a22b39af84d8421959acaeda806b0b20aeda54d980abc5608b50179684920b95cc132212dfe98330484f84b1277d81b43084a5170b8d756b1e16ac96cd32fc3610fa97b7835e915523cf9e61bb71f9b9701bae7e1889459feef48fb60026a721ca5fcb0e23e7f40727d435948e623cc7200685f0e5c6044d6e7be8249796748e1f59615815e079ca567fbbb96eef739ae378052d09ee3a4d8758c0a70a971183eafca690dff397e98657a8f3cb9519db3ed5735a24dc010dfc0f818a687071377828b59b77d91b08bb5b3cf28d66f8e227be0d3f9ac213657b260454da2a99cc2c6565b04c75c2592d30798e0c0d9138cfdcfe1e23228458f2c794ae040e55143390ded476cc22cb9d853ff2da2fdbd37177dd6208d99e2bdf433770a91beb32cb954f200042e63d44f1893daccd038a35b3165288d195c4537526bfa57d09180e5bedff6e29862a1945429f1ba75ea72ba0f4475a3ed02917904a5ac60c930ed478e59f49395100479e4429950c26baa430eb743583daae5888c8b20a6527a2201b5ce76d1966064bf79845e4ae3067683d144179cd7efd2113d46bbee7d8df0d23ea9dcda81f44614553e1b017c249e0d42e0c8f37ac62425bf8160bce51a5b4a03be0e6c9c078e762722e14f6001bd07fa21e1c0d1f246a70300f5561e6568b8b922cfe87b7b7d5b79cc9400ea93bb1982cea6b754e2eeb37b5df6e35d8c05eee7d708f5d1d3e621b44eb01ed4af9b779e7ca56735e2981b5afd29f4df3e198c253439d498eadae0127a192e31108193380f46c325441e1eebea4e06b37887b7f048a7e536520a18bbe604b6532723317c444ac8df1f027795017aa272c12c73aed1afcb8b1ee33a3da4556ab7e1494bea1f4fae7f06967f6218d3d6e8c7afc021ec7e358e589dc4ea943e3529be50e5d9e6a185e268e446f03c42f0044234868645cd091d72fc0cfccde00e2a201fa00cb018b872cc093d707892fcd0019d11a1fa096c200dfad01f4008401f100f401bedddb00e6ca018a3129f6f918b11288a19cde95be92a6d3ad1294d79a0be8d1bef3e58cfef723c32b02b610e3d62cf3fcd89001ebe1c99c3ba19beceb3a27ee00b0cc80f9b9c1d6b1020ad29cfdb9b0dec1bdc38bb47f07f6da8bc4f9f29382a9ec5212fd9d9d90e18befc9a994b50104e58900860d9ad32aeab8efc2b201c6c0f024a893d3d4d736a58885b1f6eff695f3d1e300e4959eba99d8c787d98fdf5c09fefec3fda997bed4abf69fb5afb495f1c6bce2d00e9fabf4eea5aba3ed809516aba0f9d8f1fbeb9388f9d903cec800911cedd4f526d501d6f0fd00c5ab018dbb38ca0085e0a3e4bd3ec0d0d597920eae08f3a7899511d816e394bfda88fafe2ed200f7339d01f2a101fbcf00cd00e22d810590a106ba3000c42028158001a6c721df0187fc37e40f8cd901e8b3c401ff00c5ed01f800b9ef1ec700ee0195d7de23c13998bc01e7019b01cedc00fe8f353f109b02b001ac0207051b813c0b82b72288cbb7afa3d683ec957a0fdc93a2c5f3b4d4c0b8c590b97fdd1d000c03a40906aa019e88b3acd7b9e2d5c7ace4eb93a3bcddae94bba38bb406c605ff14e92500dca9e8f7018e32afb4e2b184f78c94e38bf50bc7a4c9acdfcdecacebd719c1fb17f8010483e00af29901d000d2133400e9ec3db501e6ac378098d764c0c15ea50ba8c1d89cd1d9fdd8c1b48ea2befc9bbe93ce9b0bae3710b53713107e98d78196a8a1c8aace03e191800809514cd1689342e1221004501401822008c2200c42802008c1270408014380200408c340088550f807860b5071c083eea39418e01ea90a17007eb7472a394fe9e51eb5fdd3a5b190ae90dad92d3938a10b3d21498e700d36ce3e56ef73132ebe9489ed8dd7fad9316c8afdc17a74b18b5b3615dba17359452374c7608441fb461af3f476fbeff5c764da863c20271495e2404347e8e9081c6810e8a3f3c061841f4009645c70f01064d841082108416b09f7692d1ec363131c4884cd9a08788277a820c76f901ffbc3a88d8060720709a12d7640042300010743846e76206c1e0721c0826f9d9392d81802c88d44b645d1354995c23ee03330204af8a06477e0c011ba8003f700070804c15f42080f247c08477452acf0278bfa94961a82083504d79b101a741e04411ceca483f8e0070e024fe0e0c1502bca44137573e07047d01340d8d00741b8071c181250403e401192e4a041d0c003435052082384837c800308c1b32090033d200470100e84d0081b78104ac89c8800ee0123ac0380601247c8012068a8835001c74778a8830ea01090d4238038f0818380b00a7420206c7b8e8013b30e244088c27d7f9908ba1115cc23c7910d6c1992712a0a7cbdd9c148bc9a9082534fd7ebcb65242ad8c2a36f45ec28bfd2a760c542ba91596508f094832b419b930f442807dc02627df0014330091f7c3040f8dc4120020804e1e10810422379e010347860810003116c24a4193096107aeac02068c8414650f241308243d8081e8c08563f040f611d8146d80f70e011dc72847050043ff802d508f5a0838220c38ff040114cf62020a8451cb808d58207b8c7fa16eb470df83076d2417c9231271b429da46f214a2d487a1a3858de7c4452100faa341c7008d832c281b00800c20f1c825b1e61847e008446d8801164d01092540f340c08bb00040f0804257b604d8896e884907820849a07d7c1d8c5f286fab829a324207c302786ab1b72df1a49498b2373f0831841035e080f6688b98ced23504dd91be4226c88020ed2c223b845082180e00e8ad0101e420869f160040dc16feb404310f8c1486741a0b811483a2004ce6ca0c18acfcfbc419b08e221b282400e344c849e8a101e4407f60b260725f181c34d0161a0dc0110f6208421e4837f1007f3601f04211c1484078e8016fba0a47be00042078f030de860e4a02e0c6e150377e41a582fee395441191ac3ad1ca0837710c21d0ca104600f0c574879127937f1657a4779d28c2622f09ace284f3260400463df20e3581035fc5a37764a83a3fb17cbdd6ff3e3b4c7a3f66018738274496dac9626ac3f75059ccb006a76f81a4c909ad60102046201069dba89daa472c82f582869503f0693b9771b09717f180d2165de4b0e6e6dddbd94469e4506310301800938359e96820fd308e314db3bb66e21442629659249a694b403a001b801a601dc25c20b2fda2f10b808f8addb6a4f2c999653c1376deab42b6a8f5e2018c809dac62cd6f8c40a3006c5e48c3e686a94c17a638a164d5b8b537a91c92f1af945ae5fe4f18b47ad2af483d2292d2ffee0d8d85d74b1fee28cbaa6a5aaeeac65cb7667ad0aa60bd29e5f3eda9628b5b6de0840fb230eb52d31d544e127da9cac0f0e3bf4c5c498bfc452d67b130ca6040d90ce25bd2651aad2eee68325ed596497d3a56bf2c97202ae9fa7b7cb94020d416b0adf55631fe3314b1d7bbae5729992b81e9e9d81249e30649237c63f690ecc8fc2d274b1b81ab56fb59b6e39dabd214b9ef0aa1f2e148aae3e46a2ab1a1fff6c70586d918cc7e3084f1c18a8c7892162058e8992f3da4e56af83124ee15aa1d2775b215082dc01e10efb5fa18a004298343886f3c1afaf2312a40210440210b4e183416790d8833c681087bf56c26c3d684fb200e1ad3cabd56c091739b13c979cd1ffc4db1a6455193201d2b1017e7943b56c3dea445a857ed08d6f50b04c69d317bd9c115ecaebba5d590fb43e73386bdaa5eff775414f97032e3de77edece6f9af988022f0bd61a390666fdc40b623528906448588157983909c3612e0191827565874fc7ce0da1e3cf0c2a324ab400c231a395f615e5081358a75944888dd6910790a519466541401a5784562f92a4807d4724529cf5189b81e488886eb955630aaae9eb88057248460e14184e68949425b0a8109d9c00a32a12e3074f151c7cf281f44324a4ca0ed2668a4590910922b4b1274b960031d2ebe2bafa1105960345b2ea47458fd10d0d5f8b362dead161c2c2a09c29478a864c55058941e2860e8991086308ad868da3dd0a98c74a0c9b98c19134038261fc94bc8089653e622f9add0e5d14307868e308b7d0e150d228dee8f194046997a4eb2a01a7d0110d91d284a433fea09246a65434f211d229f9d8e8f0d8e8a899193a01cf486392a233a6db918447919b58d7bc42dbf14409c669bd511a32586cd203f782633f9dd70a2b48192669bba7163d7bdf5888ccbbbcefcb0068c355d2959b2f1da42021de0b7ebc314171554642ecc64c561782c9e1b5b36bcdf9e9f25ddb7e454fd46f34eb8de6379f7bedd9ff7eba4d6ab573f7b3e79c33cf3c67ff3333af3ee7ef73f7ed9973f6fdd4e7e6fcc35b6d473f7f3def1ddd27da22b4530dae0fd82806da71f30ff8c5810ee8cbb1f816eff228aab7aa3d8afad7d52abb3d8bb23ebfaee86fae5ef5dbcfe818afaa1f4debf5a37de6677bb8eebe21d45ced2cfb3815b35dd24facaa3fd95eae1f4c6ff537d9df6461e1dde3d0bc896edf2fcbfea5cb3915dfd2331e68f3d96e3bcde558dbcba6a7ed4553d66743e02104081a3626ed9e2c1351b3eccbbf0f7998855db75bc9e31d7dd1d03a86ffaeb6cf4443559dcbe5bfe6f4cc67fee667be4378092f8568b1d416318e3a53ee80926a1e631e34b0179a13180f0d22125a62504052869e8244d4a40101c92144342576eac2059f68ce5a1ffa38d979be3d9f7c451ee14a76532ff70658c54dc9659eb0200bc1b2504102840b0772cec28297073919de662a71c245c28c42ee7c743a80704d128c8d9d10ce59328226f3846b499796cf154c8d248b1f233f37457c4a27a4ae24a16089d57c3905119275438a462947110d20d838dc05a1b8e081224647cf4cca93263d47720c81777c087b3499889438423d359438593f2a154c3960984cc922bb72f20ae32242d5c469882339e482b8d45111c368c556528c922a51caa29414972facacc4a09692c26cb830cae0110206524ccebdb4bab08458bfdbdfebaff1fe67bffaeeb3a368dfae0a8765355db0660a39feeeb7923ac01ad8fedd9e67cd4fb4ab7aeff33c7df768cea035f79ccdf97748b3dffee4d9e937d5cdb6f0b77d0db0ac7fd5756f24de13233313738ffe7c71c3bfbff6799f7b84c1f8f9c477c4c8ccb258efbb2b7512e9aa6a56d5de7b5773cfbdabbdabaaaa7615d75f9c8bec2c7ab3a92c6a4757552bbd9ab550f7344d4fcff418607fbd70c8267bee39ed71d55392c34838328593b4f011a52aa5a962299f503f69652c35a3935c629aba46df3def6de7bc5561d58babb69659997491eef1a66fb79bab6c6fb79b8bec279bb3cec36f44897e62438854c3b396a269cdb7be758f5e453f8a6cd15cbfff6d5b0d806ddbf7eb96d5a977ff0d5d2a8966f11430ee41c6713b2e91bb4af7886a1bea8fba6dc10d6fb655a32d1bddae7163d974b7819b1a29dcf9fd80ff7ba07e77a759d70dfc4c20fbfb4c8d24c2d99fd64defbdcfe9cf443ff337d9df6f068a34a894ed1dbd230143a7018ae4509464418e29008c548af201e4814704288ac7a49248b038c4210c85401480020019000002cc204310323576540886408b5e75e3e94732f16d58bbe313b3d17bb87f9d2f5a13fe829c2eccfc32137583a87d410a9d71ea24e9e22a48910cb7c0bfba513ca7b1d43d54994d1c50aa74a2a6639c1728b329c18cfbec4804baabf54c1159eb809bc422de97a003cc05509313960965d99264b81cf4e6ffc1a3904f16c9329fcd3c382c4a261c910e21204f740fbd7fe24bad5b0448480161de500c229d84370368959382b3eb989d5b4bfda1fa5007e9d138a33f460b631ff234e05acbbbb8db13adbfdb702f7cd115915266d60c1299980922863b06d026f6c837481b334b25b43702e22c9a8ae040b46ce780aa75690f992caf9e0d944d1d23af254c8a92c3e155a015fb7c16ba5fc3d6ddc6bac130fc4e42ff67930592dc943e664af1ec77b6a0edfe26e92a4a35921995fcd761e1f9da6f6795382f6648533844df81be856e29f99e9112622145b66358d4c2974152d5a489e8e949e266840b5b81304aa09514fda3f138c2ac4d0c91a276775d8f032eca789048fb48f271a07097f8d9ff6b500a7194b955debdb9cb250b1401020229c69d6e1265098351dc91a40a130e8ff4538a5ed3617f650956a32535581b64b8e498898cfd18e30eb28f32e15dac7c483d1adf5f31e9044d6138d4569c43ddaa1c690e97c49ea0cd10d2db01cf13d4ea3bef1913152f62c54ccb8c33aca06175b5214b9e71d14b395cba0a09e354fb30190526308fb22f5aa0f97235fdd7362a0695b3a62272f10ac82c652223221f617b264eedc2c05a43a9f4b4634acd8166a00c6126ff369bf66ba9c313607850616f249cd22127326e3cb8308b3e37b3ea9f5364eb8b4c38ee444a3e42c8210592465866af25dfa00d0aea0349ecdf313427b748a9a36e7ff1b30e20ff4406ea67eee357214b8e0dbf1f33e55e5dda03f009c8306bf32623be8d08922e0f052a48f58cd40ae41747f905f36ca58514e8faca94503a7f3bbde13c5ee071ed988f172d78df12eea3fb24b1544cdb5946c458e26e2feae4a2f0fe9ffbd040a965d20839ee18cdc4daad088aeeabed066d13346f326e4b707c3a62692d9a45f6d046124ef6541ea8a87f78c77b0ceaf943c455e22de83b077aa6a9d0720f42d53dd60c8d8c3eb4f1b6cf86bb14d5c8a52f46ab5e202577a0dc032d2bbec1e24bae084821ed7fa532babf5ea8c7b59f8f44084e069aa5e53da6aee655d95c0ff07de1554ca97639e681031523c2d39fee22547b8b47191ff2defe76c2307af6dbe18567121ff8a8db1580412507dbff4ced4962e45aa724b7e2180a137610365c2653000c8430d94569826c06177ebe6798a469ee0f9691bf26c15b0fd856aca436b5227d21b3c9303b392ed2648f235b964b07dcb030b1a3aad160084ec6a577eaad54828b2e6950aa2d3af1242b172d34f4b18e03ae444260fdec9f6d67f4a06acbef8ebe8fb10c2aa32fa2ed299885050886a4b2b8cce797f4a32b7dc773f94b5dea42bc09ff179a91b47a00bbf702bea81d7e0a393f5ee425303ad1064eab9d6f40abeb11ffc6cde221d5cbe512ba9bc6aacb9505c3e5f7538ea4144cd4d7689cbd2663f7a65721cee001b773a0c5837c609747028988416a739d116ae4a432203719786343ac4b46d788a8b723f6a6a12f879532ec23f8e0f156aa113a4e202687d001b3b16f03cf38a5150b8fcdaefec3c468e08218733b5b6d814256aa90c63ab3640d594e34ce020f85b8a80dd2d3407006e9593c970bbd08cbb3784ea130e8584eb816c07164de44f537b9d858e22e1b0c7c146d404bcff44534f7dac718c1a9f231f0e1494d65ea154b570aac9ceb4a8504b286b026007500f67888b21a6096ea836ead0e3091004124a81a063f5dd518dc1c97dd0be745dfe0660f605e4f7f23facdaafdf5fc14293db45541897338298eaeaab9efeb95a462704cceab2771871d2e7b1a74e40d914971eb160d800c75dd582d1eb47c2c592333fba02407974568df73b5b48556c9c4024f4f0a5f86c74cff6c2c83a471097f5382a2b1c57359d6814050a956bf03ad8b50a91cf4f148565b3c97ad8f506e02a29fb6783a8f0bbe7d84e505828c3384b83bf83476aab0876dc1434ac6ca251f982aa226a94b8ab93c09bcb5b13365117e7ae9a726d4809f8b57f637000b6709d6411418e91a9172d3c7fe19e10db4818aa9e46c1e00f9c21582ab86b6f2afdbc92490c3d4c01df1a84b6d75a005f7a0b25b9504c1ae2d5d3f2ba5299418b2e344aac69089c2cf1e0408c2bc1e9899bf938289d894a68934db8a49049eb6f7b416dc75e40783d1c3ca4888c2b803df1581e05044819d78726996632fde317230701648476137577db5c4b61b81273a397c4ef323db72d3c7113b54584d0e1613aa8358c8085ac4f1e3576c68bb4af5d78010a3b84287ba21ee1a2dd598c14d8d32da070367a7804e7ba486c45a75361e6a7b0ba56a875c578402be3e9aae412424b9e11bf480b26c71ce2af3f76147f295812af6755305a557a129cbde6607109a4c6becd6fcb56df0d4f3c0a8c0bea0351e67d766a12c600cbc2b70d1df3b8064a41987fc0308241becd754f01d16a57f06d74b812bd01b0f4852573048164024f4262c4a24f7f350e7ad958934e3e9ec87a8f8bed1d0df09175a7e9d59b06610dfcb5da608db7ca14c6a394bdaff96d541167becd20d8d627283f820dcff00ae84d37d006e49916e4cff5b21ec37d6a4e242957966586944652183635b23f277eb6cb1062d1e63a3679fbf10fef955daffc07f5547a3d5c3306c325ad30ab8f0ba5fa34b7be799d77e8d40bbadae2499d8fb35e8876c576c8594a617dbebc19d5ff69d8df54f4a78e0782dfb3574f13069277ca4635d9dd4d23e616720945ef13df41b009b243e34aabee1fae608a1b4ace7292f318a09f82ac6baa9be710a8d3b13383ca2c025bc764f38eca56f2cc1189fe500e6b53f8d6efa1560c38799ce0deea1941671268b287fb9c9e664b55ca44b5552f30d5a1c8d7e6f3e2e3eba959dc7508698a4cd3bf59c6f2cf766f6bdbda059457d1ec49c3f4d1b3b81644813292fee7a365330d86e28d0123ad384e97c1ad4181e1cf4ef72df91e2851b127ea9485d3c7be73d6e33f16328c057360a4c39a5ff0dea43e2402d11cee291702c66752d8276d06e19a5233c2fce5968cc9c4b1dc4e80ad4fcd0776ea5f61a9190a7254879d492421b4fc0a8ceed40df964909dd3e274f2ac7ef26743d0ee0e09be2097a65996b95ee95e72395ec7517afd78a1f5c0d141ff0c7b7c8c82f3953c8026a89f5c017a6259d3b751f04c4c51be03be46600bfd1f43b36abb0e124a197a63dfe0c8a77c436c543a8cc99b046b5b89e8e4bc58c02860696808ce087e9d314495dfb8509b14dcc72f3d34b65500fa29ac01eafc52fa19eb43ee61127fc7d1e461f775101bffb9aef04eea75a8a24f85aba2c0ce8636724f91e387d84a56cece08e19fba3764188f51cd8173d9fac5d56ad86642cea154c19744167ccd2cc68d411a7550731601100e7ef20ee72b460ee4d9e72b84b0c295870da3414c0edd690ca31d7ca061bc65ed99ce821308d5136a0d7e69d43ac52e1a0f50d010b61247b1a49e56bb4cc09397002dcdab424f06d4502eb4a5d3ce540fd4bceafa41f933acb9f407801ab0f0adf8e95c1634c125ece8213bf781fedf58d9fb1ee9212f1f1aeba9a6f07bded894e6f41db03f9e5b5eadd88f562aedf987d873549e94eea2eba6591fe613010a3627db47c48f881eb2b04f70d5eac9b4e6e0877a8d173501ec7249e65c5816b4f287d650615c8b3aa0674c4c6b0fd902e775cc34d7d1cc8dd5ab5781e5f7879bbb169be88e4670c67eb5c81a52dda2b8c607fecaa1f2909ffce0553fcb868f007f8947f85e455265d6954ddfe123e498693ea6617eeb72bd47ebd8f7f6d0bb2ad07d46881b0a8c4cfbe3634ad77dfe0ae6b85f104d3053ba90eb83931fc6a680e0784d8e6c54cc88166fa17e39be3802457b3f729d4abd6f2e359ff105e95fd3fdb80ffa5b1ec090d1f646089fb06708cea16882f81519935e3c51e688d46e10602ef8f2ba6b66320e31454829cd47cbfed2814705f954dbf330ed508137dc78640cfc69b080426129f63186b273d470343de63c4650c352394ddf30110c465010a5f5590fc2b1881515ae8db8023c34168b80a7c8b8ba3081c0280e11712c03e8063169f303cee308b0db0f22526b3ba3ef9a43be94e513bd682144d0d746b8c90fcf80755541172b86ef637851a553bb5957516fc7cdb20cfbf248f90483836bb8a10b223940e91690bd0d248cc3311a105b28236b89c5f22c60929902b286b7ff44de1d7971e80ed1117079bc33a17d506c65cf54c9b7301c4a1c47c8e9440b3a8a848da832781905062528ba568a9648a7f07540f5e5126ccbca488801bcaf019292f0399f39c2c200390144b627a13d72a08f11a2d04867c1e78f9ca30bf8a937d683f7be024b909c869a0fe1ace2ea49f861215cac84a29c31339f7ad7160c21db8629788b56c3be9af59e96d2fd7532c185a9b35e446b00b52953686c3caa59c1dfb36c5878ae14cc997e5208557a63959ae87e9aad8a822d298c7aea8b64f852060a0523bdff71db599f1d22147df0a11b15f1b01ce6c03fd002a0d49ed78361dc2ae152ef0d8a10e8b9d15c75b25ddb9a213a54a1bfb4c8576bce7fc547c999b09fc6b00c6c6b6bc58c4f5071a146d6324ed82ff470a4d3847f7dbf037981aafb3e6ba58baa55362ce918ba901c766f3320627bd9880f3ceb3db187e2b9c4ca24f407c7e57de2b50875a83dad2fdccf1c0cef823a0e1f386eea02e78d314b00d979e8057f3e38907b08d13819d59e9f11fd1077b034a3764920b6a17f6436940f9c061a67b33e20f3d6edd9801c2156f40fca1691831ffd5b262107a84130d3a1c0522c8e0e7f0645817a9a9039a4c6e2a1ad09f810a7e1b3e469d473cc404d0edfe691596c6c918129962f0dda7894d9cacdff83f03f86997114c64730d856bacf527f406722eb34398cefbb5a87dd1e21006d12668781891cc187974aab922c6a91988b21a7b51bf3be7623f06472443291e1c6fa52f04a247ccc10925043c2c7fac111c4fc79f0afca7c72155bca1e0ba5bbda6d64935d9937fc07a848eb14228d4964f546f2ab68dc11aaedb7a12146a668416227273dcc6a966d6ccf8461ba7155f1bd8340d67df4596d1b37f93fbadfa096d1d4e5797b73d3a683486a5001fc97d9871a836cf19fd55f560b042da8ba7f96e40393c58a3fce7672427789cf0efa1f76f5b4de1fc820dbbb99c0da8cefbbc9063be7918680f3b62c0f68a23fede1e3f4e4207f84f90609313f3a920fe4f7d0866592a999b05010b4c4676fb911d16b00876e4bffd9ed096f7661ddd963b683ac9f1cd020e72047eb9a2580a0208f4b68422dc1e60c4ea5449c5d81f18d562c3ac1360c2b05725a08f9a1cd3724397e92d917c4c61a9f92a5be9babd1a7416c5eb72bc27e07bca4e9a3210c8631d6485d3e786358b16776a28c1e758673160cd2abaee7c0ad3a4fffb546eba2b928e0a10c8b1bfbc25d595ca297cca116c02c7e815f39a667cc70a3aedf789a29117f93ae181f37d904c0813084a380a850eaec0764b1090d7eafff1c52ff6515c8a286032b5558cd2b0fe0c659dc40f35e40b0a969f70d4cc83044ceafc8542f89c1789e29bca27bd4c8dcbeb15713294e31d2f72da6d7ac2edf37c2d5136190f3e27179ca65b8db404049ae98cf339e8416d8955a095a0a245dfa5d009e4439f83ae19ebf373c17758c06e68426c9183b8b132dd9eeed8a705e2d6086e9a80b25689d2491a84448efe4c3cc12e49d1ddf894f9e1bebc232b9fa4002b7ea3a8ad0fb716c050fddd4014dc691a0c3cb3feaab31a803ca903abb41ec5d6bbf775a50fe79d27b481fbd1c41fd79fd2ce6fa0791bbaf6392824ed191d1edefe290d37c446a13b141105532f43cb9b485b75965f7bd63275c56551414adbad9b94338c147bba7135b2bc4f00b765b9f37b78712419bbbe67ca69e0552873b25cf238042b61c4888ee0921031e8790c677d18ad54c8a8d30534194c1cdeb8f3e44bf4c6b21f0fe577aa99430a868df6d4ed72da2f8cf2811f2523d3593292447e3032343ce7696748d271a6788c4a5f736702d7e70432ba32ed60c84fede2c496e20f0400da789d606a8e08f24d5369bb615af4da1a0a4641291e6a75d15db460b4b1b89c5fd1eb92dbd4171013bebe898059500712f56d18e6edf20429c1e5c690862608f2462559a8707bac7330c326363526d91a47d42236d10a7e4496e8c26bd1d04638529f6386415fd410f1e01f2b7f9e4fc19c128b5d541a8c477ef1919f7415a0cd1cc02223fefd669bf4d5b6b00c738ece3b73dc3313d6bb01142357ccf9925d2088020e110acbefd0e92ca9c414d3f87526430dcfdaee49d58a8bbc32346fc403fcc6c0c36c874a821595a2002e69c68beb4620622a6765a7db4f88d2f00932e1f34b0ba59fe937055d186b659c482650545297e96a3a5e90a9e07dd16bae1a7b62f413dcfb2632a07271b9db341d011d70a30a532bf00c970f82d77d243c7eee16c4d5791434a4c645a9ebaa7978e5b2ebbea8471cad2c2d62fea6a1cb2429b4a53d155c871a01fcccb991ea36947a0076b09a401057d3012bc08fffc6c86a705ee40dfbcf0cbed911bd82403586c7db8e0a410410ae08fc45084ad93bddc36955d8baa2310a13215b6e29a5dc5bca24534a490684008b0086002c845c3c561c7b7efeffffe8af3e77777f1d7b7ec5765736e66179b3ced65a83ddcc4cc2ddea43a2a1c34583b5b1b83a5fac133e1686cdddbb99b99dfb05dbcdcc5cb7f95d501ef33cb8bb1e4932d80d78f3ae6fb733787e7e3e81a2c613170a843723915e9e14b191c3868b56a16b183afdddfefc31bbd62efc63401164898834a38505d3f43c1c61feab72027b8edbffe4d7bb89996c4fc543dcc12d2c7266e60e2ce27103268167d46c8a546f97a66b0865a7228430b285384d8f97b94340b92299d0d86894515216cd8ecfd973ce6a4e29bbf3f6adccf7ae264eb16ee7646bf5bdf75c8deb428a3122418ee6efafd6658684e3c3e5e492b974c49277b825fa88a55a455c3194056c08e7cf9208d2e76c71e31e233b8ffcfdfffd1d803b040de7b3f18d66b3d970389b282bdd116b3cc6aef4e9af5b77cd500781ac4f8556d091be65bde5ceadbfaa6957b1ba73b92b20f629caf737000eb062c23f7bc658bd90d07f2a4e83db672c5e30e494124080075057a3a802a103ed9fe2b809c648a962df65cf50bec973c6a8e891843fc3f7d77d950d44dc5504cd3901d6379418356ef084e88543134160ba05576f6fcd255e8aebc10f11719d034d710a0be4c5630a0c5269146a093977cdc8e69c544227172938d9529329ca3947559721c9bc9062601a32d075848618f76e4bf0cc6a2dcdb4a635adb51c569655450b82744027fa523eee1df7d6bddd3c8f81aa5de9b2dd5231ce3a63e4bc37e068a0066ae0011a2d8546a833f8de3a63641018100884c2a15824084214c294748c3d6391b2b8491e128314c911460c32c61044444444241811114992a603ab00cf44d1e2fc327466c718f9db2f0e90438ed0f04221ced1099e0141da197e103d22a13746d602f24f7a70131d3c1554b8a5c150c7c02b9be204f0cedcb935c621fef0528b92a849f5e10391376b21be657116f532cbba5e1a7c6bf2a059721a4656ea2078d8aa1a2ae5f4b534c2a6defa1fff1e8a529f4cdd61890a82e08658bbd2ec9a3cba6579f159c6a5b7ac3517dd0fd21b1f23d1702be5c06c943b6d4136490f3ae640209125b25caee8281635bb4dfbc4992de7bb249b21a1a218d99bcc46288e1a090a7f3727d9df0a16eb693863277918c24bf95386782375dd7af7f34c76084d05516f14c90d2df4485a44ec9cbeb4590ea8203cfeab0372ca833b9a570f8d4d86ac61dcb56e6689859709d186e3d0a20283b8c740c0cbfd09a1f0d8bd9940c5f2698da9b198a3652b22ce7a5c77dec010d25b2483fc556e2ecc0d9dd92a3e2aa58873b22de21c5166e26a1a4ff294504c42241df833da70d033ed60056e015c942966939b416515c83ceca5d03a32b7596a41326da511b53629ed35b8c0a22eda8ba2e15068c648733eb6ec7745ec07e87f31333faf7da899dff4d0d56f3a0fd694bd33cbc4327b4ba6c01a67a120b9a48bb02d1f44ef67b5312b8773a4a28be4d1935ed3a8b82152cdf4b3a74e790aeca78682c6d8728803bd0facaeaf60ab11963b1ba2bb65f04d6e45a5be87372ca36e9bbc13710aa6f1637c5a1ee790e2421881ef00e93120e12dcdb3b62127c2f10e2ac7283f3c65211153f571be593e0a6de145533382f34d2b0a88e66e374620cb0c9827f9715a726d5f8e0197077c43fef5cd5d2d8278d91cfba7b0c81c70b184429ad9f506f41ba3f14318c13110d4194ca48aa205892d596fbc1479bb9597628276c3363db689f6c1d43cae4c6d18408971e1af5dc78d3f223c31efb9e9c219d7ec66ff8402a4c9c35e19e1d2aaf34948257821ec966a96cce0617a2148e11fb7c1ced022153f9ce80033f5c5bce195a61244fedc7a3b531a12cdc922c6c16f213550ccd287b5d3a4fd70e95b3830ff5c5184f8b3fadec24c6458ab02e3ec544374b4c7cffd37b1b7de98b942fec4e461f150e3c2c2a25d6e63ee861acfc1ce07cadc721030276b70cb3f1e799428c9cf4215c91d2781324540470c02a21ecb89f8c7a55961d3a42958a4a2643f23a036833549f1b7aca556965e3eafdbf2e59a651c9755b5a1ebd7e483e2a06e9a6072e3dc41ac73a3293ea951d9513642c59a1d844bb734a7e2f8eb6ced11714208f4510e07318db2041b3db6635386db4821f8dc13beab552f823bffb00d18b21d740fd6b644ad1198d256cc940c1fdd1220c13851003c7ccd970e1867a03f0fa83282caf290556a53090c3669945fc570689b58736823f6426803bdf6bf32a20058f6118218b2968714a74759868f98da3adc2497a9d3631b394c7ab5c4466787ee56534d9cc9ac6f25223672bc636303ae4e6f0686400ca798a7e1edbc00d528f7cf6d61d39743096534582549dbf3c0dfb8d03dd5a5bc4eae0eb3bba9f125e40c57f05ea56a94c09603f648bae80d45153387c684a77ba353a1a665cbb5dce6c1a665c9bb8c9b9629222f685a1ed62ffad74f1eea8414709fafa9153e652f7898172e075416b2c910fb475a913af50b2249fd15c9780df79105d879291145836cc36482d793d4b63c1ae90bacac9d1c6edbe781c92652db47ac5492db54e6050633601f7898fc67b68a52770d97070f12178bed75bc7370331562b4ae126b5b1ae65e91cc072e5581f9c391cefdf105bc0d989c310d9c86334fad1ad1115ca14395f72c7ff94ef47c1a54a7dd0e15ecfb87c4115ef2ea441fc47c18a7ad4564f5d8ae485468d92d2849fa79d8f3329d8cdc9280b2ada159e742c60c58534038d61313a6f93ddc35443fd5250199cc54563e81da689d537ea398743ab3ef6bef06f11210983793f2bf8e168f7d1dad9d51c3b7512e34e0ee19fee4a2993a8df5667548a09fb03a840d683ab5290963b21f04d134dadf8ca67405d7db452b7f1c30e6187785c9cba9d6ef18a57df9a6089935bd79964d7b201313da30640c01f61f9a6ed53850d18fcc7fb6b6a74bac9555ae7dc1f169ecfb8cdad21b50b33c60ad66ca8fc22ca4622b363f8da3f2e424293fb7009c18ef89ec13bcbf7a4ae43389d4f7efa87a30aeea63b82989588b3caa8d791fd3c8804294bdd79952f87845b5bf62abee558ae4fa4c2ab4b72250e7b110dd8df18d2716dc38ae2cc26d95d462757b99aa3e875d54b7bd3e08f1a321a0690678e6184b49538c114e49111241e3e1c9868d9daae4eb3216fd8dbe452634312177475a2a346e1d7233157542d95e593e1f1d88b197d19c927c6f3c749e713e4c6b2f3aaa3787a12b63b5bbebdfe3d7307848a012043b985ebe938fd50675b926c5c89bc1a01d00cd6e835b7853791ba0fdaa67d5d86898b4cf8dc1fe8f572be8c77aa5c6f35b3b0be2a350fa133a21e31f29523d23e721e3e8e8673d472e1cddc8a4313dd937779d3649b5052755f1c3a3c5f317d4567c00853c4b87e78f4bf56a790c153cbfcb1252c0845f040808166c8f8ce997ab35f17fb62e625571ea3d9294e09ef107a9a2798d40fc3f431570e494651618694a26508bfec4b8f453ead000220f1ff71c701c77e54660531242d7db44cf7ef17d14e8fabdedec15fe85e4b12a7c97980a57e05d8361a5effc6ea64c2317522389174335dbe10480efd0ca5fe1032acc0433c92b57c24309cf4f7bf65ce83f7808fda0bb1d59b0b22d9047f3e143a541c319e83b68d7494f980cb88e5f437870733fc82fc190f796dafc3f55fdc424949e04cdffea01af1a400c100a75132589868e3903748b43f809acb16e0f0fd56e43679945f633c448bc95179ff0faadac9033d282eda58fc000f13d33377d08349c141db8e1cd107e9b84557c74c257d13d0517e84b8770831d0b836f71322add56a0f3e7dd0e7d61a96539c414dffba1b74ca120d1169b643fab310fb63e092b81c1dd151f4f49c5698bf6b070a6abf15ebf7a4d0f02c941c449874e9afffd5ec4bde949c29ca0ff297a45d1849905366d8f63e0528e6355736ed165cf032fe78d8988043254fdea9fa31e1841a9b51ea21fd52b56c6f84cdc72125ef06fcd8b12f75375285a639b7f01c55a9aee2558c9b7b7bc1e1159f47fcef2abab458f434ce04fcb19aa85835fbdde549ab8b60617b79b26567f8aafb1545eb2a3ae5a93c99fcbff137f6d478cebc35f845f3dda08dd03437d9b417aebd2fdbc609ca36f498b885d1558ef881779f2211c7acf37b1ce45c63045f0aa60dbc88d10849b35a795716de4702b7c9db6490ab503371bd77661be6de33092e99f8d4aa8d3d1405cbd1060bc549a3ea048a167aa5759c5369e5fc029d6749869ba24973e5c57e560af263fea4056c0325744a40fc0cca0ff7ee112894d134b2336e5e7a3a53f9081d7cb32ad210c5f54b5341adf0bf0ee8b20de9b005b85d56a9c8f86157704e7a2f9502d687b170360069e48e49da2f1cd31e52b0b8ebc1ee4c31b412f884bfbf283a064e84dcd615f46614ae1eefe5253acac706275b26d2a0752f624816dc8c40f3431726d100cfc3ae980d4b3983b384b2fe2b6a81e9871eddcd4546a02f20140c559728d5e1e2f286c613817f306d0ae0c8e17c823c36b96c40dcbb352fa9f5590c01c74b5c9ab031d917e3031c415307a38971a53e7422e810ee401beefe842f36e1a7d350cbb1c9df3da9268247f0b32fb08484e916fe716e513cf65d00acac3adf9ceaa62d34405b1bf275c2950ab679b3e5a2d69a8dd9da337c62772b276442167bd1cd310e5abc6d93a3730864a6edb9300f00a84a777cf0df6072ca65054f0b086918185c187aecc2b2e2fe4bfcf7d84fa2bb8231a0e57cb83a56d1fc5a1a3074ed3d8c2b97ea1aa0b46dc3d233a5c6237ba455cc395f4e33b683c7cb9c58ae00d894a2c10eef05c9266f8637e915a36014fdede50a3d2d2482ab0288011a1871ca16f878fad46e67b5e4fb2b17d36e4a8ab5ab27dc5472372253e02ffd347535b3435558c8669ee87b6ed2de3886c619451bbe818acf10f8e5c6c2aa1c9003869f93ed23acdaefa1bf6f6755d1ec2b4cce18e2f587b8dc9302c013e2b3aef4a192dd7000247e902c77cfe1c5038dea01dac871280dcda0b0e6a1c691d86e21a3b5044488d733013cb2c76ebf39e4509e91633f10684de59b5ed7f3afb35d59b522637cec1fc1e540377528a7820fd8472c1d2e0b64b1aee023febcc8b8fcae251d0bbdca2b85cc3705b14949a23c5b6f2342043d3aee5941ee0cd62848c329d78dba7ebbe0986d42f9af0159b999f563b9af4fff4bf46efee473504d72f2a4f944341db14f992c57ee88b21bbe2100d23e854af273466c718460360f04ce6c35ac58a5fd43fefb568d55dffdc0c0db1d98d5f2e57d279bb72140e5937208d0125c6af8f544739894ad5a452d1db550c80c742156a748487509feebc7e511abb234e0c05b1d81248688c4e5f0975512cea754cdb45f93d3be7f42fb28b2be1e87f4b72ba5ce902101a5c8c007a6698183380b40741eb6453e6edc964ae25912589ccd70e83220139431a5c672897d36bf9ccb6fce925d6f32c3704035d76534b29a5a4167901810185019a6e53392ec23e60d8ee79fe3971a39c15a7b85762deb3253f49bf2c33e34e5cd68e36e0d59d9e7ffbafb7dcea60c9b8bdb46d586c066707732e0ba4446355f37ade7088f2feb89ebea2ea35ebb4589559d6feb9efc6de81e23ff858bc5766e64aed2e7fc71cff97dabccd2d8feb7db62aa81601c7666416096ab3fb7de0d9030bf342e631195d61dda5d579bfe6d6328fcc5b6c525ab49a2f08bbfb62cbb27ed57f4db3a9aff65f6afe9457fb24952e9d049adb258b24a9bbc6a48eb4c30fb3fbce3ccfd708ea125e1210cec71dfa1cc7f33cc7f1a7435f1283a32d476ad3c0d63e2f4f491edb5db97d7f7e9a1d10d607839c310fc50ec14b584e9c535766ddbfc0a94e34c8424872066640e4157fc61d1ae4a0bb9cd52f482fb1f96b05dfbd2d79a9cffe7434146fda36ed7b2e0271def755be1950d488401743d73a9094bed6c7f6774cd7fd8fe0b1bff1235bd154c6b6865d23bbfcb2b21490a0405d2d63e45943db2574fd8c6fe37dc7f54e1e0ae51f7807fc63fb5114589380996867b08f9a4b3643527f4cadf54ff7fdd83e7d8eb4c71885afce9e00e32a71cc10b3def69cd3e4595f4e16f0cff89f8f955e92e4145949d9efe91168b0afba7beffcd9897564a7b5d2267f7ecc260ac9ff30bc06d7c4b5622b37a5958fd3be465cf7e355b8457be36b1b05766a7d3b2dab43541c266f5bccb95dec4eee094525eca838bfbc8a925a2943eaaa32ba69d0aaf7bc2bd369cbf91515b1a0f6a6bc49e7a937ff64435a67cdddc7a545736434eb77b4c53e23ba8be03253e4f9b9ca877e99bd0845a5b815e7774996f3bc7ba97643fb87b3508e6b8a796808c444a62b3930f97c7dd255311a76eb88bee59ffd97f887b9b48644c6c3d1e9d9248c43131f0a3dc76147be28c7af590deaee066b8679660f85d970b085ff9f5c98591e5edb545453f87a56aafa76ec21800ebabc71a49aaf6893d7fb3fb307cf6f3bcdbc8099a04ac0372a4670a10aa597ac0a8c75d455c706cbc90274619cfd85ae6c87b096785eb1ea538e0efd63e6a69856b704bd3e79409d8f27e3fedce11e3c19efead68c14c0b5f2b2e6c7ed50239323972ef1ae4a88576eeb6d4c13c0b4b551941965da6fccbc2ab05944d481f3aab9c6a29692d8274e4543a3d99ea6db7cf79df7261ca320312d554f88928d91c95a7eeb6b5797b618b2533f5ceb18726e91c4aefa96c989f897be3ae14e9ad5e9cdd7d1f155ba2559d38a20d73b8724a0117d6d47bb2147b042c5f64e0109923990e888f0d1f049b42746af4f27ec26559a689985eab88ea6760a8eaa3be401a43c1a23c2257eef3a01af7e29fe056b315307284808f0b0c5312ec9884df5a2d1b51ffd1eaaab48a8d00a0da446faefa476d2393f58c3437db1308ca7791a22243f49bb2a9052ee06c69aa34aec6b747aaae1bcd8ec22aff11021d7265a48d32cae4ea2fba71f5dded9d85c5317518d63e5e94a6de985afeefe4d1fe9c8d65b7b9352108d6d10678b8c355ba52ded599aa91dbf687e78dfa3f4095953992d8ce83cb8ee4984cce2e50912a22ffb22bc3c7b688de7ce1e1e5fd027066f2db706836ac40a9409a36d87ea3ac7d9ab0b1edc1a66b73120dc271e8fdc71ea0e918b793c128f8af6799ee3f98ddf5de6bb2ac5213cee6889d4c71f3c9eb70fa28543a3793ecdfb1b824c21e73b9234d2bdc05480551ad5a5047d7a804d3b2916985aef3d0558c90064cf1c7a816491a08dfa73d26fc2f65e2746a748b73f774bdbb7f47b47036f9d97e83a208877e8ba4758cb9ffaa8d0deabe150289c2fe3fbde70b4b086eadcc89c0cddc372dd30d7b939af1f70070e9e72fc723f80c2a97b0e97e3973a7ea543a7204603bd5f8e01b5c020ef862048df5d0ef9fdb3f3375e2292df653cff4cf310b974ba17a4758882ae82ae1c4241616dd7f67bcfdedda9bb561743f5323d4eefd2c5eb359f78995ee74f7bdecdad726dfe4426eb78dc1917932f6f9cba3d739728c7945d7c881ca05c4723dc9bdb5adb776d4f0de4fa213580a30d4037c9a0d110b84a32d36691db738d31f8e56ca3624a4b82bc142a94bb8c7abc53ff682e4d772ad5af88a8684df31b7a64b95ecfc67ada31c65b30c76b13fa018547a843b75d4942e903c3a708100c08450329c7b2a43308a19a79f3e0509861181c06c2c071408e411884410858046118044110844520083108696395f609074b822cff66827e6d486c60a6f0e624b1ff881572cb9b8182e3fc9ed08cd02d84729dc139b81b909ed563a597b053a404bcaf1f8db1bf1d2c2f6528c0c2fa4b33377b7185e05691aad5d876cd1f36d6c1fda91014c13af3e53b9b0e1056f92787ecd5160628224d83846422ea9d9d177c18422a0bf8ce32f96a1e07d6948e85821ab95d185816f0da5475265309cec0d442bf5509677ff45d8caf41b4851e8cf196f44393f77aba1a1c833cd32df9cc13d781326c82aaa0da87ae92502c7387f985e1059933fa5efbba9bcefc5f791c7137e3018873c91a3368e91ab973c034a45fcffc033c1f02e6bb221a4257d1ce3536150cb04c6c7cac7d8aa5a2de552867ba1ed12eeef090c5f9378d0a11d011712c22d8a220510a20668311919c82211d80b7d2f1fa632e84cad12f5a94b269b073114045174a5b67f1bf1d9dc706bcc1d148743d7ae56bf8160ca759ec7b0063d89cf143eb3012c811f54e9687882ec166ec21c53f0e88d6d388de327c2694f556f8c84a5c8894dbbf16e7ebac20cec5f49a8713c2f76acad8e1759f56cf582d7261d7a4a99a8928fa31b39a374f0dc713a2831df7fa18782b5f5efca7578c7b0461d89cf143ebb9ec1e513a0470921b0c7466889aeb28b6a16a8aae582649df12e5f4a6a2dc85f1fa38d40f474edd8ef1ab600cbb180783b8d2f8d3b1bf0a7fd31bb0cda0613ba1a7ae3ec759447676ca2090ff5bda4b3ef9388c656a5013f526cb5d736cfc05bbdecc635fea53ca7aca6947ab0245dae0ebab46e1369d2bba5ab562822366f8da2c9f18de9e2f4081da853b2b9a2781b07fd565f4dfddfbfe2be8521702925cd005191542bdb4222aa86cc8eaa34d562560cd004ea562f5868c310c96728f701fcfb3bb6e990d31fdf496bfc25a5236ce25bff0ca899fec479e5bf835724e59e084152139d244d24b24aacaa04ed796551a210b31e6515dc1457b372555a921b32d91da9e087069036c3197574346e0e29fbf4d55485c028732894b55a0f993b8d8061fed3eb480a01bf17e34b781a3593925b056852993ecb56d33383232949241aaf21bf7820865dec1ca5edf1da91e81aa5a72a5c0a215baeaa9b151d9009788f9fa579c88596aa940ede40f52a8eba15c8488ceb55fc8d1da66c54c6ea26c32068449f8659ea449921d1244c327f3e7504b1f7b3239bea6719491b40b5f467ce5aae50b15d80b267054a6a5a69143c9b0a2218134102a1ae2b5b170f54893e3329fe66672ca5e08480b45d8564342ce4494846cf82d10278cf609317e38da02048c29442805640b1da5e540b8343d781e620b5b11a77216ea7dae34026542fe2f12b18600012186fc95046c26bcbebc6585873e082eda16967022ce9223d49a1bb95c495874d5613ab78110e98f14d3e606729f887eeb3bd73f338e50f86a1b837181047e1e1c4c965e5c0a5dd3bfb3f9eb9b7281c8fe2976464b7340a2449e7ac5818e7b13dd901a64681d05a73f3f5eb4ecacaa4c0882794c9511910c324dcd4e70ede706fca8265729d2e9548e9f6e60606505f86fe4386493350efa35c423a2506596894ed34a0f12a36b5211c932670439b4065b0d970156fac360ad86ee8b5fd6376ba76341144e6f1a159758c1bd039a853caf503a8c71389dcb932b6ae147d36bc1a7995d6db54bd40d24f48fccee2909e069638940f9f4201548accc47924ed1a99d9872d4b41e27459fd5cc1e438c4382189b454062cb8a6913e6f4176595160643160b9beea96680a92c6c74c66b0e05e154e96efd30d057910c40ec68a0cb5e7221cf7ca45505498a043f72cd385eff574bb7dcfdd3f4c2a2a0a27b553361662f422ab8d63b6fa3626e822153791bce8b262854d41384367f2dc01323ef49f1614fb7175108dcc54afc0f918b575332c0f176627717f4eebf35c08b7f648dcac0db2a0978e91b0e78cda84cd81ea222ec22530171227010fdbbb48e35086473cda5b111952e7c19427e848759e2176b241321f22ca0937d718645b52aa9b3285d433632a5b2024b7c46a4d04b6754db119ecff9f823035a649c9e8481e18c6c7fba88e4701a08aa8c34243275a39194f5a1082b65ac61682e261c572eb58219420dc8a95f1e574f0319edc2ff1783b53c172d1d8058cbb35fe61f47fa33e06ac51b9176f2515a97d27654b2b06dc40b61791adc9a07cb44eb72ffa37d1a5982e3bb682265173c4b42beaed2a0c26c1499aa5c72d5600ed268bcfd75af735c09b3a8a423ed0a3755b210edfe7f27076af5bb460c271be3c80044d031295c80768f4c513193019cd89dce1157b7e18455183e5da1e42783abea5252f657a95a0386e792f36b9088a4a928afdbc4ddc44a0c8ee4bd7f525898744a3d15701b1e772067721e7dd2dfd086e10f6c5ef406c8add016a4a345a6293801c1876afddde978464e00d874aa357d9a1f50feffb449f4468589358f5ccf29d20aea3378474985ee788978499148803c20a39055069b235e292344db43a475ac6eb4e437950c02957e2f715c24d2e4293502352469a10664a4f72a05b2608d76fe85b0f50894d07e026fe9248a905a0c1b1a8ec82050691e773cbf84a0236760c0f985cbd60e5026b45f64b4ae4318086835ceb7c875c8d684ec78c022c4724d3caa70c93e1888d3681a84dc0508781d4b591c601c8f2f2968db245f8fdcd25f027ca739d728652fdf8425924b5344391937883625f358a4eafb8a82fc083633fd52bd81a1e6e02dda819321ba1802010de52b414fdac1cf161f706b4c6b3092c65a8292144319be222609336dc2bdd3c192b7be5655e794d5f364af33aa05bf402c8d55637461013079d5989d8c57821c39dc2cfa4dabd8b6118bdf2bc3720a8fa94064fe3145c17abd4d0b34bdcd3362a1d6c76191f4f22b05f3e22f2c6a0b6e82a031b8013b1091fe81c2810a30006da0dcf3f594f0989a53eec6762064e67efe8340658585f84295505d927c8662b8600dc25229e2082a18a0744f5587edc474a00312317257dc91bb589226d791002b3dab15b76fa250585e603548eddbaf19919daf1a2da48a840da09c13da2907c598044ab53b7c34463e49a14242c0c020485806d7ca01ba485cb8b4b09a459e9c2e3f7a6b02bd03fe3137cc01157d1cfa963c48dc8e09f9e3ab34a870e95b9ed9d12a4d4b7a56a18d715699ac62832055cb8fead06b40ed580c0414a6a5100e49c567bedb84e4fb9b26a520d83e39ca08b6988d2c64207ea233f0d44695dbfb389f18a4e53a68181830b8abf2904e95223e87c66b36983a5c2a9e7c77709b3b11f305bf791b0f03748a4fd1d63769df14bc89790a38c5100683003e1306dd649e9d74f1803c7158780c43718f0c764793efa971567c68603ef3dcc0e0d45f20087e8a921e2285cc538e7e024255a753342f21f394f3a63684f9aea4e2e3c888a897cfe63b8bc291e706a7f85a147215d79a6e0be958b1e15ba2d582b4387387b15028e63da1d36d5ecd8324823c9d20b20f2fd2773cb1836715bfb66de774103ecefc8b06035b67e744221d1141535677b2e0b62205376d82c0a93de35d8266006ec13c7d40dad6215571de792c1368582837a3565850f00e0d2de1e3b2e19cd247367fc8c45d218950590459b61c0e788ccbdecc5a1e0e44fdafa82561ab377c6fb3b8e272ef25273519a4412278fe2e3767b3117f2c0997f03e3949130abeb00888f2c557c0ca338911d331841bba97222a48aeec3ef5ce41a68f09d157ef4340a3c77aa0d75609f8622bf1079aaa7e924d8d2d41d713a104075c4ac0eaccea933c3038fd3c22fc801210d9f7208783770f19eaf4caceada57892f267c0ab7f9626fd8f5606aab3c12d068be8c6a8b601d4751cf8d367279c1a65413a8baafda1c89a52f6f44910e26bd94a9dea013e59c905a6109fdca85c7e9eb39f20032795308d43215b3656193ce796607ab8e76276671404901d7d3b42764e9f610b29f663e761728a47db5e23e47950033aa3b717ec400f0504ff004a8ad01c40706c491b489a960ffa3099c247a161ec81030e6a40d4a9c4a09dd5959ae6f39cb43690bf92919c4385b4ee4cdd76c4368f49605d1b6d1322914b2bbb7bd32601d301b901b1015f63539ed44832f642c85556a4ab1786dc9c6db22769be64e89ae8d0908c61fde067fc8e192d549810e151e34a069e4b31aeae28a55149f19cb97a45cdd7b8cf83d5ebfa176370df9c3f67f9813857d8b70df55457d156fb9e8716a618ecaaacb082ac89e3ce7c6bbee5dea2a8c1007cefd0435855eba214457004fb784329c5d003d3649a9a4bcebfaf9c675cc1862f0773d48a0b4a102b77b68481252d72e7c22b833d6319867385a47c6be54ce037dc5b5be7eee608c9dd84f9737398b6e2709a56327dc9aeb078782ab9f9efbf97dfc5fb3f863a2dbf1704a456752f8d184d079ed235608533cd2884a7898a4d58208c88c392a79aec6e04949ae123139891c30eb824ded07414cf26e04d5380325059006025fcc90a898f6dcbca6a72c4990689b53d9bcbc963182862790a651871da32b49834a5310f7202f5b419cd80549c6274c5a811a0076516eec1685b52cb180c305dbd64662052ee8f847ae9fd5967102c5f9209b1f4860c32259d15272052c5c3dcccb8449c91cbe82ee36a989b191b8d4b443be28cb04ba5f6520de94f5ba03e93993cf1e8ed3270f7d067325a6602deb1f5da9b1028a75dc55f97089e5c1807d2a8f8eb12ba446c9b6b71b505e1bd4bfb2c12ab946ea542fbd01df88274075dc577fca324175d59ac307a01e3ca152f0c3dbec8f49694f94042898b7ebac14457b582ec1194ab315692f225041d32d787d216f65e0cc149fdfeefa4710a5dfa222ab2d2d265b5a8d6a7434d39e7f4c1b7c650be97fc5ebed7bf54ddd51dbd1f01dd14dcc19efbb57567c6620cee8bffab392d5302d1721e2b585806b4a68da0baab3bae35cd3d8e957b1c8bcb3803349601e5b23c9679d96c6f8c7758b580612a990d22183be75b727600b272547b93bb227f5204d5da10324aea26ad5685bd1742975a552d54edb01527eef19ca2a1e627e557ce31950bfa85047df7d98df13f04379fb3d65283a0d67a6fb945e41c476b08b7fd7d18cab07e1fbf0bae805562e5127f785bd6b8ddec05331e6ebaef950ddeb9950f8675ea4239196d786b725afcd5e8255db2743731bf4e27ddb92c56f64aa68ab19bd72f5ec3d08bf15f39a59497e21c56c132d8cc633f25a5bbd96ea12c03f9af3195b94a0caf5e2056adf2338b65b13cb5dedb7e145b39af25311ff79824a502a98f7675521bce693819338857e1398f95218e2fb1f9d7cd3ef14f5a458d7c97b3d2fa3cd7f918fc6418a44b388d060829ed3e1243e30a404987d1aeb002bd082b0b207a01ddb429b5b65a2b062090e3f1abfb25e00480aa3f4d39a1eab629dc7c50a04b3d8d0006705ebb5d9badca4eb540802d4001285c8729e289da7011986a536397dc8592b7a7ba54cfe1ac8ba8d7625473775bd7d96aa5b66abfde7a021b5555041e614c40a99b3c9c928169d5d15ad3886f316078cee245ab8a9694096a25a17cbe322a3d1e90d094ed19a22b59ca2ca04449d305111120866c917bef96d6186d6b7c3186eb475e1c27d26633d116b20673f8b513254e206ed7a8e1150c0c180ab98125be954e4c67b5734acd091f58b7a2d0e0c286050d1648552590a296df3ae7de18d7497f84209ed294ee5dade51a4a53596d7f5b3c69d6616aebfc288844eb1163acedc57de6c438d6fa3ec65ade7bdfda592ba5b4ce69ff7370c0acf5827cd16a9abd2aa40e083f8e845161b350685dad3510ed12577d59cb4ba9ad526efb3f47d30f473bc7df17f565f0eaf1c4850c95e23096f7beb5b3564a699dd3fedf5c1c4a29b69f05aaa1cab7ba7f241557acb556a122c89cf2a79e949291fd9c5a9c9bd66a250604889695bd8e37ed227b166214ebc518bc3763acb5ce38631df272c67232542c6aada5c6176f9dbf631fcf4d599a9f323e6cf6e8c9f3074f0c3b7de8c4d93286630ae6ea5db1b975b1de7af52a4f727d621f8fe714e51281bc398ee0be1c5b6dfb6c9896a13bfa5585502f51de45bd331ac60bdfceaec93585a4cdad3dab1cb10f9b4f7ea729fd178f9536d6cb75ca2bf20917286f5cb6666b584ebfc93892833628ee629ce3544d27f2c2fe3bdde302bbd44fa9ec206fcfd68729de14d30efeffffcffa94feff53aa9b94e3dce358a1fe6eaf87b9a4b473eb2c8d77c5feebbc5873d2de878dfdce7a513a2557dad7e871555e9d879e52e945e7216bc72ac5ed380e79ae39c5add0a44d6059e6b936fe2e5925ed94f6d6d49e9d4d539ce30ccd26ef9369d6a6d3b49d553343b6a9ce6d7372ea75eb5ef9e44c359be4bb8255ec937722e060ad33f498730300d9b6bbd873b602f039b86aaae53dee5b55feacc490a9b6731ff3ce3a833d776ed5c4c3be3b0842353181127fd4fcae48d338385a89a1dcf3db18cc7f4583f6fa77df7fa8011c2bb881ffcf34e554004735e1021531afbe9cfba6acba8d49721beea9d3b127b9a11474ca79f22c0cb3b2beffa6e1070408ba467c4c5356972be3bd53494d79002165a362c3058b4da8840d5dac0400539600181089c583510ee3288681208c5aef01b4c249851f8725133918248bc33110ca3010800300c4000c80001c0010500861c5281ed6514ed5e1161c9eac51c8f6b733b71500ebca7ed1ac0d00598f62436cd7ae0db26b83766dc0ae0dda0201325097a13fec0e619445d96968823351ecc4d5f69d5901f5dfd6ab37028fb9fb83f7610a82f8b3d1da82ee0af4743b00d8fcc8d21d4e104238b6c70f37d1bb8fb0e6e002dcd3c169705e940b138e2f80105c5607d1c0cba7d719ff6ca5bf4b666b5e1f600368fa6eaa5b304341fef3c102b4adf2149e6ee447a2333b66d755214ff28ffb68c08105763b919f1ea11ce01f2e91a2f60af0d9844a446205459b28cd7e75a11e2e8c05a0eab120119970bf36119440880db06af2f4ef633525658e19f2411d84b18a6c2b45f8b86911b33ac84a30e6b082b5fd1c34c18e4ed52c0c22786b89afa0cae5bb27458444f43363950cfd349395cc3a2eea2b9757b838d085fa1c7d3c5785ac182632e8643f24ca4590af068094e823e9dfa61f4b5065e72b4cc9003290931fccd6cca5eb202b6bd0e59e6b85321e4a91df47346661df2d88c6001cf7c0926e10cc4259076f99e8a5618e3a1007e9ec0c6e6255c653b5a5b3ca0bbbb912425d011249524a7c297d8b9b1377b019b0cd03d80ca76be97cef8ac1bf0220180eb60f902cbd1a7d3d06c4d22598f79c84b55d5576742efd7fa77ecd2b3b580d0818d4315abfb3c38f5a7ac6a1fd25d3efa1ab230d25e71efec8886fead0df0123ff580a8b0881f362ba371e1fcbee71b22b1184a3315aae8c90dfd1a5b15399ca654722d1acec3887186b16077743366adeffbce1e128ca52d3662e5dfe54c2c9d4dabbfa47b49ae221b50160ff6d32fefa66d36ecc6fcd6b4111296229585552079f6b178c6152c1487031bb0eb705c84c485e41019c3b4274daebc0b1fd133dc9b84e1fbf6499f562d30c4c78da63af0d14ccb2e6354ecd1268c5895ea7791dde4989f9640ec5f7320ad19a1ee1b4d115c4c221e23aed89910ac3e00b6be28a36f00303e52a8a6d762a5c2880e76ee61a4e2e282efec31c2f766828771d6bda1b6b851fd97f471b2b39f8af82b01a5cca43f62393a9c07ba4a82fc51bc8eb538012e19e1d4fed221309911c9bafc4022f39eb317395c8175fc883eef15cf2aecb3c0980f1d612115da5ac4f9f1016a2995dcaa79a89b0c251c3b80a1e46bb7617592653c023f18ef2d88461324617e8d604a151c35fc829ba332c03958a4e52276d9b3f1ab3d7bdfa85d8f409e1005fdf90f5ebdbff001d4a6d83b25c0f9a92dea14325d1af019ce7b2d0fc9b0b6062984731701245bd88c88a687a0524c89f63e64b8c96fc0e11f7aa8a05f178e3fa820c1ddcb126e8fff0a6caad5405fc4df77ebce2ab82dbfce6171346f1c49a468054dcb47a2d28607c454e1f41d99095c394059d72e6978a8b067bf26638a0210a19c80af775912ffd147f92c62cd883812ea19a402616a99b177c4072d1672112210a3a05941b992e63e61151ac68dbc5f3622c1078231bf18235c018526b3f475cd65747aca2908ae4836635ab6d563d3bd7ae98595ecb1e68d1feea85b2276b47ae007d76c20b26e5466cdd8e0d43ade72e3d3a8a6d59d9876768d2e6c078db813ae123b5f879ff0624a143288786b635300f2097e120205988dcef0235d659783cdfc7368d197c14c8bd6d89c27285b3d810ffa3e870cdfa137169fa481bc8ab25cdba3df5c31f72ff90add3b739deb2fc3d24fe2d4047b2e47c5651cb1f3a522d8ea4d608c872442a78b09e7bbd0ef9162835f79ba2b400a8ad76323e22a687bf7783d43394a2378de063817e8876d26de911b82fe17dc6fd46622e07ac581be1dc6f1fb98ca3c8f8def9d2592ed31e595afbde54ee5bcfd657a573992488beb0bcc2feb9cec68ce322a7342c1143935c7948cf6338360f9e032ad73371c2b1f65f4057cb6fdb7dd8ede5b5233135cf7c2eb96df2208d4184692119cc36025e11d1fefd415656b35bcaed0d6f3c2848d36eb85112102d7e4f447ec4342b100c0d1e4d62aa89fc69a3033f111cd3525a879783ab81913d706ff924152982211dc1bbce224f2abbb8b33b53aa44e405c30771cfbf63e7b95401dd4215905482784c3ceeeec3dbec58b50b5bf2fac4195b35027d1fedd4b8069a3a62631ae59ec3ce7b4c0a30042d2b33e823beb4cbf80096863668e472c408b74b173283193867ea69c016c64b4ca554acc64d789de32da9179bad3e40bb2085845d41bf735159f592c2a717e49046617850c51051ec9d2c28c073f08252c863102744d18d15acadce23610022c78ceb91f3c1cfc863366559073b8b1dee1f4e832366a1d58e35a9916e08effedb5dd252892f7fc942617f063eed31102ae4d013b10ab15baa88adf987325d114d6ace638137f01b6033e9e88e74985957ca963d95167af25e20680e026821114afef43839ae6273fe1bb47b326e721df8ceb6111930360391183dca7522992e74e1c3291703408fb40c12a3900146e6c49b50a5ed45844824349fc571fd362167d0213eeb3ff0287b86fd46a554badf019abd324dabef0bf9e85d4894c58e496f37e89a2e387fdc227ae09f9e61d86857e9aabf99b7861e622806bd886f72f65759e24e0064203269b8db50fd340fec13aecbb5f9852c91ffac774475ca7427b1041a5d209e011bd7c9db86ee418040150efb291d12b1397e22862bd1989faa8ef9a32e8cf92440526cfe987d9cb3eb28c64199cdfb1ecfb6b08e7e698e19325b8aa8beda85dccbf5d9ac961cb7ef72b2acbb97d049fccbc4bec8418586549222e8641f9fc53db6d344477bb4bde58aefef3b9f0b2c5a3c37f323792f3ff55c0255bd248fa08af1d18395b0d09971358e68c7d55840edb8eea3072a116dd20bb10522d0df3646d5d898ddf082c4396bcc6754334c44045d2a19513197adc485cc0ac055380260321a57587eb2ee6e3066b64149c207c9dad5837a49f03340d59b719fca9d276b3d74ba586e607d93c4412ae7c90484c9e541360e534e8b164a4a00b6b46c0a505def8e2410c79f6a5223d34d3b7c8031c2a35c1eb01871edd807160b077f98d537011a9dd9bbc036160a1003549e4ebae5c16f5db4cdc755823def1e3c06f5167b9b992a0d558feb3cf282502c1cffc660e08cc94aecf6702c00700e07f8307851b406f7820c98d8f660b3aab8e8637ddefd59b49424c2db596d28a833e62cd8e3ed2d8234621f91bddd31bb68b7a18fdc8c458a1f4891b7668c6f090c14b640bcc8642307a34d2235e246747139196c3bba755382908f41a9caa5b0c1b04c7adbcb00f641ac568394a334111daf435c2186ea06f7aecb7268c0aa9b30d9b2206db53a3256d56ef7ce676eabaed598df5d10ef5d211b8bbe141413e01c4974360e66c934a68505daa8b2c7f00f3da29cf218b9bf5cfaf39fa36921899cad2dc6adfb68740df2d046c35d3e9beb2993716e8c08f883eabfb557eb4089810dc78f9f304ca920579e3b562c0a8933e2330bad4db102156751be16f4a42b1d9db2a757741886e75c19d8f9ed7925c50ccfa9f112c2c4558f535604a8980563e27a3525c44381ff9aecec12f055174fe38e0a554efaa6f0842d6c6a7d9ee5807cefe9a9bb7b65df4ccfff2d854b6ed0022774108947e5d52bf1abf06442cdce4ca30019971688976418ca46f4418b6e123df8a949879566e3e7588f223f93e15f260634e47391468267146ff849576c1fd5c6046e57e6af0462b6b3789aded553462412708e81bae5b8ea48830d781944445de74526858beac2efffb5b2a2ba09d3b162e48f2df7c189457513f7b030d2a42b34bc17c11627fd1daf81658bfda8ffabb2d6ae81946b5e029f6e88f04a88f5ffdf73fa47752a07b9eb16f1ef32bddf887022b4580cbfbb844aabab6bf64a90ba2cadfcf8a39170e10b22e407e3f98c4012329c6498a0892b7161137f319f4ee9b349ecce69ec8f5b97f9a5282514aee8ef8361d157203a02078fb46b1c6219440d22015fe490fcb647d961e67cdbf101e043fe2d5fcb3b62623559054564825c31d34408daec3f99830bd8e70d18e7193c15dd439aaf7f08f0c538ae57492bb213ea2994cbcede534d0b8e8be4f795d5fb36f88e72d21a64741bc5eaed0450d01424882fc6c0302a469cef2508b9af8b00265b6fe8a4e56ddb49c884fd83fc65b61daf5fbdb9848aaa1cdf36423f4b250b77ede9a3469220d7286337f7718d40c90ac683acdb333e5219dcf86294d4e0805ac611d78a70f8a15cbd480f3107856b4e0e23c73949279b43b0cacc62ce2383ddea085db2b0565b1d71fb3de2d27aad8ee8b4b4163ab1d4eac8f92c702d406ef3d944ab236785df88c6114de9b0512a433f567211d5123aa05722c395920fe864f40a2f3f70c55c146430e73407c7d8b206922a48ffc2422c6e56308aa65459c454e5d608263fc94505cb26a26c6fc07946063b8889412a736e38d2d6378554116dc391e576836018c279b4ec9339e0755f443140e86a6d50352bb9c350b141ed7a5c78a49ba6cd1e581288c8f9292723601c89b49fdc236cc2599089fdfae2c83564ad4a6b7dbe3303602920aa83e502ca316ce5242e9e342f8ea055f6ac5624b1815d1cd19a1942d14bfafc93cf53606e5b45f4cc808a3c5aea6cb785c1a61383a91c8e688664cf74f474b0e37084223a58e2a698648cd27f089aed21e9423b1aa732ab516753616bbb5b23bb25531c8922b5d3b8d50291f77e360b05715018a71ba18a6664bd4db152a6e0c8b13efcf740405bcba437677104a535de08b2dddf20beed1f4b08b36c6039e4705783594f35e2827b538ad72e5df3d91547743ea05a1c31ad970056bfea7207089475b3760ad711d86af5ae41ab95ba127ee8372b493806d4278b118e87cf6236d4cb0ad5faf10d234c1c6d14be95cd700296d514028ab423487699cb8fd8437b3b06ed73c331d2772c611f0cdf060c30c9225c38da4e903fd8704dedb0fdd323f8d63c2e7229289bf049f8b6b803652b37f0f4d70784d25184ef5404ee91738773f955c01402e893cf18e7fbe7095934235d6252f23ed6883eea29edb44628666b18d46005d025bc87fe100ce7146b11aa1745e7043b962de8dcbfa62716f935eb97d0bb81e20f6ef7521d1ce3643f8768d583cf06941d885a35a02506a4252167394e051498e5eb5d3c2d1a2df37b4a5b3207be04d239486b64ce8cf1344ffd31a83155c5afcd218a2362ee61b9708066934438b1959ef7e3dd2336569b15095ba92c5b1adc032036ad131cd3be5d98b2e301914d48c32f740211f7f5d088248b12fe338c23b9224cc2cc3ab5ab7a26c9092c93f38a0f155d0307bc454f845924bc32e73c72a4db4e36611d21842adcc9757b881832646acfe57f6591ac43658aba81ee5569d4e65f8d6a6c2c69108834af79934ed712a9ad76b922c022d80d757f12619476319e8042e1911768ea3646e0f367309f43e9de16e03b56c8ce40fb260ad207e05f3d3777c63d940caab54571aa57bbd862e7964a5be09e3855ffadc662d18325fee0f0bf08264e1d4bf2f2340d3381fdb21ee17ef825cd4f2f82befe87e3efa49cdabade1e8b401e7a214654c96f70b013dd9060eb19a808febd109fbde2621c13fd80238c45fa0b1621b9ffd01de94a944670fc036951895a8d1e2414e9e2aa71ff829d28e857f8164b159863ca04135039f0011f433b9565c70821216b77ef175920114408fba245b790e883170ef03d6c39a8e56f5f8802624b6ac308f058fb89bc2769d204f1219ff88b932d49a8583e2aaefa624e25fba5a58d2457ed4eb9b6580679a9c99f799b726024f47b96bfbd1a83db620dc14ae786cc2c4eba807ba92e31e9e3b2de81a69a483dafbd6b618167b86cfc179a6182d117b13a67c583b9c3e9f97cc1b08c24ae7fcb3c2ffcc4d48e6bc49f4b2372e5572594558591b5a952937d5bb3db046fa09a895b9729fcaf57c77299e1d15d696f07810982daf527a44d6879e95b2b84ae0008db8c3354f35154bce61f035523306a51b4a7ef36de06b43374372b11b16fd696b1462a333d658e8e937f4d4938e7b9505ae0097b42b5d261d271a50844f57179db5048e2207bea74e48d1f49ec18e95a38ee36045dcfec6dca6cfb2267584121464654119e7a7fd653d978f8a11dc56470bdb1232ac02007f1225340c109aab23beb5d7983340b43c7123aae1851a5ff330a9926a63013c2aaa06d9a9f71e4ba92eed7ff670e23b800d6cefe10556ab26390147b791b5dfc836b136b91021aea671fa34a53c63afaf1fe7857fad6d651922a6496295cdaf1fd53ff527df97152e110e2d350f66ccc9cf170b48a0d705bb48ea46ac9445b3185cb873fbab05daac834955c21c2b51439cef1f69fdc1c4ca0a8309f0de63e6f1e0abc7a18c8bb1f0f043680f81f6207a86e44c6356af55c7a621c9cc54152c82e49981427302f41480a8723a4cfb554c8e01e0bebd5e7464ffb84cb6d6024028fc0797fe79cd25497016dd972d501ed8f9eb3082342125c50318ff84bd5db433d80d30074ce295c1c02ff3da29ac8da195091380a045af960321f22c0fbf2ba99c7d22ee1b431bd6b5c219bdeaac5fcc790e116067c6f39405bc21dc8445ef09ca1e414478840e6176021e3f14c1019d738eebc6c2cbee2f0944a6b1125d67176279abc923c12f0d7176106a87f3922a8a0a1c5e03d7ebb7ab95e883201e1019248b6a64d8ddcee2c075e538916690e6e3c025e8561061caceac4c391aa3b51f4bcc999d5bd59760cd156e7117777206b6602f0f8a64f37b6d25181e3cd0420f7334ee0ba201d4d0a590c0ca33747bde92ff9a9d99f431944f50575744a98373b89af986a8a3000f0c1483e03bac0cf00f50174a402fb3637f716b472b1598c937aba8a77a8d544e07323703d7affe092f809fc51254119431a8ecf2fe55f89a4825e800f5ebc398a422472ef681cb25e2a5e7274a989ddfe633e4a3f0de5d3258e474873cbc08d1178035ab076d6881b55725f206b72fe4946192b6771927f95dbead4cd1387f9676a7ad17202913c52c401ad00db5828408d4bde4549360bf740a4a934dfba07634a35d0f9ad958b2ec43f378554b9a0cf9a45d5032b54877be4d67860efe0a98388c43bfb08311a147aa096e55d5c8a3aa7ccc2e5d6b48c81f2546290c29da10b6e5eee46d70a50a05370dad0e26efd3c7ec61e7e25b0e550fede4b4f1857b6d6477f0e85287203247d238856e10e3f059aa14208eedbd93db5634ddd4cd18f6bf41bf02157b1396c0e32a903f5203134887337e9c9ef15c03fc0c07c6db2e28001ae85217dc12a090def3f3ce2a4060180c4c3fdc2f5e99b4ec0cdb0a5449d7c43fc9b10a4a0ee44cd1677b6146e7c4aeec25096bcf5798263098d18034544769c4bcc2899fdf81237065d294c8015eea89d1f5512384806f89cce42ce67ed43791dfe9aa328aaf8fe86ecbd6c449851cdd74321f2f703ceb5736da1aacb7e1f262b98a9969ad3c669cf70d2518a3cf01329a5faa05bc99724bc60538c2079ff44aafb07413ddbc868fa6db7c4edc4cf8181388acc5a5b02e7e7baf93a859cc037cc8e961fc4ac0469a15c684261d1d06db144138962d1b6a37e2b536c23d0dde04f64332803c24184408ba63d18ef82b678588c5d927e9139876cae0252699c704a7493fb7feb477cedf70e9c22c3216a8647186bfdff934a145ab7772ee48009ca60ede918762f3fffcf3b5f6fccf6a00274d05f752d040d6e403ac3a56a0b07f039189f855096682d6cda8b7ccb82bf62501191bbc884aa94f7cc4579fbfb188c8fee13eea2b36ccd4150f38e902da186027b3104083261124b8f1925829e547adb2290c8d0adf1160ffd4b1ae69d6f8f0911332baae686d5e9c010e0d0dcd70feaa70c4e01572d626dd43d3e897593fceef5f522b498c2a008ad0f1ab89f6d5902f77886ab6956674f8b52d0150b3e40b503090be529346a63d6950b43a67ca723a02c2c55090506dcad8cde7d764ea6fd2f1e3eb13b1144592f505a4b55e5072834d7c57ed20f01a106931dccaa291727666dd0aa43f48c8ee56ba8ec652a298d0670be68bb08b945673d60726cf0f1b776078f07751b31a30eb6c41d588807364501ddc2b71e1678f67d5fa77df0385414bc0807dcdeedec9bd7e843c11518aa09c38ca771a715721a1bd592434a7b882e5b07ff8623c3d8d0e5e4b196b917542aadbe922168216f7c7e7b7a4a446bc8d1448f7c4b809b15c6d62a27e862df1b04f8110f5ec80107bdc15b3bd8171a30c5022de40b987a00beb5873f61c091c487cac2395244f63448c18fa5287a6c2630edb5c857850249f100af068d8681a1accc9208291eba6562594521bb889fb9abb274712d040141fd65fa8467cfc5fdd924a19020d5463fa370e866b6f5db5f06bd5cbd60e9b250574520bb553899bba216b82dd0ba2ce2aa10ccc570ff8225b785fb953b1ee8507720c719e828d4c5cf5650c9d5e7f0a45dfbfbb4211c8af8212584439511c8f0de9f1d42c7ceba76cdf65b9e88966f806291dc2d4b18683bce6725136265f1c65a65b8014025c384c7967de14f556190d9caf772cf062e1ea24f56e1d7030b285a568db40579694a5187f4e7962442ad5841f40bf626197c0bc56df41d71853e354eb0ece7baefc36a586fab642086c2937d226a595e9852d439edb93d0950eb16119d8259491ede82222e96ec375f4c876241f2d5c71e57223f5949ec194fb028513dd315e461c668f89fdd20079d906a4e5012f9752df3cb135dfd34601a7dc3f283c044a012c313fd62b4429e661881e21f712f6be5c1ad017c1e013aa1b8224160aacd01453bfc60e0289170b5cf43e16e03cec35654712a8a802a19282cdf26399f99f874663a68b27960203334a90f9ce2740ae8b1e06713da9494949494d402150203023702396b4d8d5aef6d66b6390702f1bd7bb0ff669b33b6f91a5b64eca4c3b42f996163501b9a294cb0ae0ea940aa19e37ad4a8919a52b8666a050710ab04f9d5163067677a2c4c19ffd41a8acfd779fcad659dfeebbfe35f592655d839f19fa43592f7bf9de2aca94fe1edf5fe2fabe6643860d51a1011c6bbdd6eb7dbed76e547c251b76314c62338905999814881b170cd29ed87f6cd7a643ee991fe40e79d77de3beffc0947dd8ebbbfb5e69d77de79e79df75d14c6b8fcdef77affffcaa7fd5b000de97a04428902224abad55bda8aebb8564ad4f34ea67b075cbd7b19d3b222b8d8fe4acb8f005fdc71492040ceb7dcd63eef2b87ffbb0d7eb7564caf9375c26948bc4e0c9bcf5dc182b2e37a74a64a2b4f955595149be1a221a145c33fc33ec33b10e6903da2b295866bead1add155a12f47868cf9a91a92e5219aace1922117384329c325c3aea1d69038e431941a0aa9d4a8cea8dc1cede61c6bdc8355ebf2dba603b5ee5a71b9a9b5becc374bb3a6f54c29a4da96562d42847bc3f3f3feff150adb7b6bc4399bde6c7ab3e9cda6379bde6c7ab3e9cda637a79b6a4a6d14b5754ffbf4e4e4f4fbfddfeba518a1a1ced4a0b8be7caff7ffefe77471071e023eb9d7dec8a8a8f88c55c479c7776e6fd558e7cefbd67b639d3bc79722dbdadadadadadadaeed55ac3803188010db0235f8f9e5c096f6c4bc2080d8a4304b9c71119d5d9704c4d512244870ced7aec7aec7aec7ad053532ae18bb7a4534ad2dafb5eefff8c9491325292aefc258fa714a59b49b54ccabc52494929fb92783c1e2e9378a50b0cacba1da32e3c3d4d98e0e4e4c0c1efd7d4f43f0102bd1e8fe7955c60ff5de063946eecfe5b3fc6771ec9bac268da017cf39293c8bdf7199b6c6f7b73dc27938a0bddfbff6f776477c6d78a4ffb6768e5668d19b1eec2ac2ac95759212e416accb6489972a588484ed99a10bbd6f57b1945c7ab28ab66dd131f5fc2392dd089b774ce7b9bb64b8cb73fa0845854feaa11d48eab42577d8e5778aeca6aee8a8d190b2a3e63448a8dc2002a69a879d1cdc0f25267ca152e87b098f4313648920a5a932bb0abac1d6a573cae6c10d70a110b11ff10f510ef10e51093c42454bd521da594d26bbdbff3534a2dad540a07d60a4c9c8a9143e1c6a2d5e5e2506ee5f85a23e63cacd2dbbc378e811eeabff5d25aebd5b7565c6bb57aebcdebbdbbd6ca81443aa5b6d68a2b2bceda79e706debd3b505e344b5aab2dac476d4ca3344f8a27d5bf9ad962adb5d66cb755d25a6bf1d5f7de8bd3a811639b73d12c6b4d371350b86f5905e799ef7d0b6deecbf7a639c538f22c708e147e7457cd52effdb9161eb6f5d6497812aad6efc7b81219d3a97579abd6185f4b6bbdd5fb5a9998e6c71367132772d6b50ef1db76fde1f25aa99d7eefe55bdf7be735b356f5989646e9b473da10d716efbdf7629c4c628c31ce5598037456589a0b72de37f9ced8d6fe753aab7d7aefbd75b80537071487d3ed262f97f0a41bca72f34d4b9d935c2e29a8b5470afa20c7f13a2f737ae3b4e6296d5de632e43eee3d17f47db794db7d2ce63627a5b55a7b2fc6b9bcd1db040a886c8831b8245c4af69bb4b6bc657993b7283abdf7de7bef7d3659ce63b74b537a6f283ef6dfa316231e3350cb5fb29bd4dffb5eefffdfcfc9491f2792d552924f5d05cc47912a443dc88adcb821880f99d719701115de729436e64c534ad16b6b59b5b5da6c6bbd017c70f5b0c71e01ae298bad15b2482724106ee7d1c02dfe567f7128a251248a58152453c5249b9c3d5276a019457831b4c6c7d00b511a27684e6cf0414ad1039643c115aee28f2a38c730386688dd28c208c723ae433d7810c7de081ae3c69194195953d0a68e86806c01910a7363633607f9c64a931a516e44f0dad108ac78a3289c01c66828688f97ad3072349a315254578e205154da00733b525ad630c370e27c2b594dbefcf6504cedfdf6db3648d767ad15db2908cb0906f9242147be10ac1d022152391f1b6722547e3efb401d6e000e2e80cc11e0d20728e1090892b50b106447af0d00ad81ee165aada3a68bf12bc816918d8f1b3146233eb47828fac3064b13dc979e596b410054409ada9cf8124bdb1f556f0205e2563887b1a3f7e4f964511b2447678ef85c1a95ef7bdcf87ce769ccaf81d2e171191f6234978c77af9ae36ef0b2f76e13280573dd961d73fc9b4c1aeb9aaf7ad9f356fc707ea01704ad6d80a4090ffbde3b45c120a885bd0cb89c6b758a4c0b4debd9ebfdfffbddaa3b75b52a3839fd7efff73615a3611429ec558accd3a8cbeee57eff8c86868676fb9dba5a7c6ff5acd7cf7adeab35d7b6eed105d9f232a76bd554d5eaffffa49b991543f2d9308bf43edd560fe7f5bb8ffbea8e52615264d5c24c4bc75a860c9279a9683488685b42af292556358ad652978eba9784492f5cd2451956ddca09deee17368ed6704913e50cb24c1ad4b091a760c0c4261817d21acdac8e69c5e44ca3b55893960aef340667f88070a66f4e3a318fb947f07f7dbddd77bff386806f5af65d49f0083afb9cadb46ed2d741fd2db00cbcde3eadb56eea11f85a9fc03ae308237acefc412ea1b78590f1cc194f4cad72cebc9c1d04b3fd31888073ae357f1dcef9d7ccf982acc56bdecf7a21a6a5cd0899a4182f6112f96952440a124d0acc0ed858a5540cd849fe39ea5b0f4acaebb0947d196bf55f48f69315cf8714211afab2f1e54bb5243ee7078cef77fc14236fbe905e4037be8182a78e5b1c080aa000c02f61c8d56b065f9a822502dfcd4c4f9ab77a276e2ea0b72b511e80debcf596fc4d03dee52424bff30074399c2f719be3ca1ce5d988c3aff165fc1321ef75769df2958a64d26aef2d8ad272d25bda4b73df37f7c56b4c7b89c97975c95e56b41793ee55645bafad5db5f8ebe30951db9ac55e74b0b23c2ff2e8bb28ec3accebae35431807ba7bb2ad5d65b876c5d1b4d6341eb379bae2bb90452ac534c530fb88f1ad018ca1a8940dddab04043c13b700101007845194a2308c24290429c407f4e187059d0b8a0c4d42015a140e050203381421120463000000101020843082a0819616407a5d4f95e06f99b462ef32db93fb3c0cf68aace60a644fe8208f728c15d2c98b013dbd1aace0f16fe01a409894036673534aa1f06bfbec3f4fb3217eb88fad624ce9ec02e0e915883a20f3dcaf89e6ae7b8da3359f7bf70d91f56bd6831bd09c1af05940c9e83134c27642b132acb005ea0cfd6bef95a8d40f64588057700e6cbac103ba69e69b70fe7e0afe47f91c31b29c017327b6ce281d4c96a6f44079c2761e3b618977f08616f7f182887b3620594f6e718f28c4175090f5cbf2880d14812a626986436a6d6c094be494ee67753f3e651049ab82b28bc52e0b00cfefd74f967bd5716ea64300f3a3edc09271d3f3c96206c6d3a06349af72aef5f89df77a28c1f75d760fb45fcb06e7e436308a045421562fe376e8d162f1cf95e35879b77e1ae400ea691ad2e0831e1d58d40f899aacf6f6baee31d80ea2408b7b32c5ec5a16ba6a0bf2bc421ffe53a1d59b593d6bda420e6c3b4cb7b5bf4b1783e2fe794aa939c1b0933d7094c458e9f6d3d6eb05f4d67cd600dbd3f857fd3d4cd805c1ff7a129bed03b25fba7e5de6a31956c10f06a4de2f647757465a0c88fbc422b672ced555a5084121fcc54279c4d96700779159e41d43ba5de440a03c7894e1ddadb807bc02519bb3787f658068ebeaed072faa3cb640fcc45766b45c29371e4d737e02125dc2b5ace9c9ade39a93962854351059c7992d3434c9a3e5e712e547e842008de0f55522fea22aca831e0f5148c99a5aa9e5d33f3c940830df195320ed3f7ae0ac26ad70d392acab8aa24107003e3fd0294cc4b6d499c570405564fd9df9ab84434ad4d52c5923975dc83e2f651d17a9a23b71b708ada0131cc2ae38f6df3a9654a92abf0b07afa29069ddbaf46a96abcdef756ed45a6aedbc67be464381bfd6b80d0759366f2a71d05f856fa711e44ae2245b707b5562367a866605f3162159bcd6c81981bed974d900b1fb99426f650af30541c72a487e4f8c33a5660888777c89b9920b93e7dca498607855f551f7aed1dfc70ad6f4de2e2ccfdaf26b23bc8e84a8815d9c894fe6d9136b0d289f86236080d9408b6929b9ea56707385cf442a2c1eddce60134dee0519eb359c286a6c702a98f26af3ca368e674a69955c69094522cc87bd1d02ea464e55b486be7fac3cbda572cb9297e3944d718965f0eb822dae2bff7e4d14e59a60a3afe2eaff64338d2d45b672281cd60d96a530ca80207b6c10f45a0fceedcc3e38f21d88bc4c90b22b016d475d1c95c4ac98250a68ba196a11817b3f4aa2146b0a707e134bdbd871efe0005c32cfb142cca94779c097f915a3992f05848e5c3b4fa9e22762078569deec96da31a902a1237d8070f6faaa380b89554c877082d091bbe52e20379b22081dc1d08328b9c0ab9daec1e0aa575e505072ba7197165240f11154a641b803f23cf5cdcc0766841a1e2921231cec8c2cafd6eb183c176512de00ce92b385ea6081f2063af26bbcc9110fd07b35db664fc2bdd66cc73c0795e8821941a34c9901f187e6871c72952b585d206406bae81b0a9a7c08990d60deefb70e08cbe797fa25adb0de4e0f591cd6f3b39df5a6898e71215b88fd7773de62a0738f651a1654b72ff4cffce8aae56ff654d99648477e4b53b9a62f9ebfc5629455f208c39eebaf83efff7f1ae3d814cd297228a1634dd7fc737994dca725c7244594f2f9c26e336b0fca137d8436a437d9eca28c01d0afd005dbd2f9cd2444331f67125c6cc6a4ff1fe20f791a0a1a9aa8fcbf17fcf69d3f755ffa71b2fd077fa23f647a4751a3ee1c97e29794f8ad8980cf9bd4e2e87ea8a7fab1213af796989924bd505c4767d530e21293256e40a05d6cbbdcef541bad2208f19dc65d2c9be3aabf6df5ce2d8d875af1492e1521c385c3af5212f19f7062f2ed8556ac1730e99adc40ab5349d086efb9acac19392b34e5ebb2add23d76c1bcda9989eaba809d681f0c533fa6a5279683fec1b56668a6fbb24b9eeede3906aa915e60272869980c471e883136ec936de46a002622ed84a43898f574b8fb110d7af99e32452024d53190662160d2cff28cfa4449e970aa55a4b25918f1a66cc4f8fbe24bb0e5ce6b64edaa7331b324d8eda10be5dc6ca1dc2c8279d650008a3c624046a7bf0499543f6da0784d0efa4373a6d9f5ec8d336a0ebacb038ee935269a4af46e76e0c21ae0056e8412093602d41da2370503e6b47555438f78cefd169354e831ef9bd3915cca20f53acd2b365905023b096382a2f90602c6b5b2498822abce0bd575072e70c67ca62ff54a44e10d10a690bb22252a6e801d87df609de25c7a6e61ee7eb908d438c74133c418aa2bdaa8c2ce5b21075bb58685597791d0630f1db2ba9ec70418fc1916f0ade1c19022b4285c5a888d5b35095b28490b5d04436f0ae6d87f80e081a05da68989b3e76027f955bdc6d898e38cf47e8ea9f290621e255cc3daadcf40534ba6eaa9256b90e37416b0b4742e9fe67759db1033efa25df145968d537da1558283e2fec0f7f4a67ac8d91567379bdaa3e5f5c470cb97c178acd79abc6ee7f6b74ec0c2ad0fa6a1450c8cecd5b010e277d2553328b41108073af9132030b05a23a936c048a55e047b7ac8eddb4d5277f53f9c21297012a65fa66fc4a84f0dfae09f77b7fd3ae642d902149efae210c2ec669bb16d3f3130c6d75c8233c3bc43a081edf40bb83f74f87a1efb03b130e4bd16c3943f5082fa5c25abf9acabcb385c0bda580f720250ecdb1af7346260180023540c4dd00fe0cea59528db9802187b28c48daccebca98b84aae3279f273dab8ba5a34d1580ae05e2530ffdd2f71b4e7e83e490e4c63f7ac540c4e1665c579b909e50e45bf9309335b750fd9a2f5a7e6c49e7ac198a5fff58e0277d0003dccb76050d487e91af98782606b60132d66dbe142b0cb3467aef41689a793389ed4412ef18130b96917e20e6a780e69df532708cbde87566916262f00d05bd5d05439600168a522d2de0ec7c11a634c00707d064c034e635d65ad4a3676d4cf48e1a95383efa6a99fe3eb583f63c6bf3b6e5fffaa9ea4b84c5f404cfe57449f4cbdb522cc1b6ed7d082da238ed4ee900697d2a7b8596bc550efa97ea3caf1ed1f1d658f08ab33e23c3d962b6b6f3e6bb93f39732ed9b823beba654c84dbb6c04f3f21dc7879308cea70d50b3ea6800f368a6fe8220a04b70ee662de9569022b679f9c5ab5a7f0ea01e9699c36d2f3218ca1e79fe9774492c26cba13b55fe470f1ce37fa24a4ff3a1c38cee06f20a5fd1c09ab8065e1b769e417b7cd0c7b8eb4c7f0e15db3ce61caf34724bae9a7edd77faf64c3bfd337c2a83301ce894e6f98c86c938b61d05cd0875e817f624077b515ff2d70bdcf61506ed7cc1f065c8bd74e26fbf2c9d24934b862f27b727b39828d04d65402d3aed5049c9739621a69382a4c7ec86068e95c59d281272dea424f48fec80cde6085aae9843c9b337237a93942b07ef672d1b7fac03f8794342f40815c9930647c24a6d1ce8135500b11f4aa9cb3f5b9140f6d0881d8a6c3891026d4dd411439b64a1711ff4caa7564575da071b314a8ba308045aa3feb6c96e467b59d17e76d2c2d8e0d3cef6ee3903251529106c079f67065e6eab7eb1f8d614515b38c4f14fe36d775d78c6848a780e4ecb8dcd87c43e1d00a6585431818c2e8668bf668df1bc23caf3c353ae11351706801aed0be120fdc89c1496c368acb9e705f039dec49507128e43e1db98b12f831cf1e3d8e1502a6703e2d83ea2cf9d3da0ae89478d5629f32207f950c962d2254cfb5b931186161f1242a7d8bb1cccc74d2ab23ad829925232d1e163172204ad7e7d609d289108ba8ece6e12e4f1b2671e84a6308c708d3874c342b62dced41516d7f95020e451d3d91632180e89f6ae9d7d4c1971c80de1ba6d3214eeeb0d9db9d51afa2730631fbe8b868d27475747032a71fc40ae9dbcb2ad61ca79fc35afe14fc3a0911434ff4ea2c3b2bcc06fed9b931674741a36064a87766d192f9b486d2fe1358bd83516bd1a7633e287bb1df93ac366c560c41c25aa20d3ae1c152f0d52bcad26cf2cb66bf1bf30e3cd06ecd1024960996dd695314dc4e48d04b615bc2f094ee4186c55f366be0ac6e88f786c06909b3667246bdd2cbccf37c2e4b7c0b99889dd78c42bc4e6abaed95b1587db82ba7914f4dc272d57382419cc72fc530ab38f0f4d53d1bb07957b4c0029c411d5ce57208bf90a4c9997f21be9ade69ab16ba0c0fb20f3fcc512219af8acfa3d1ab87ed0c1950db377988d593ecbad4702cff956a94b61d3f30d23cbc7830505bf19a1664a4473e2961e935b2cf6653519525ae84e5d29ca6266cf864be656559e6a994739df55b70d6a95c0f9194a07e186e89006a5a746e468ec3779c318331f8026c53e425ca24600edd30c9112b3df2c3c7eefa65e84cc6c2f5c2250cf2cee8ae4c67fae010ec6438a4ea734a5ace247dd02f65bdac066bd66b6301133aeef5b6497ac31f1a4ebdbaa87ef535a64e15366cb1e6f3dc4c569943421e47dda42d63a15ecca1ab709782c638d5bea122e0ac706481aa5e6e4c1c03e471195a85b323c1c03f7cf7a02823cbc463eadbdfee30ed5706ea043c2a21220c873d81a6816cf9f4e697e071ee569b35754a90eeb17d2556e2fc026e6793bd453681f9ad4b6ee7e0b75c62d82047c862b9882ca9e808adcfe312d9f7bf1488a5b7417156003679898515cc9efa64f43dd1f50369d3dad5731bfe97928870e92d466363ffdabdb117f9d2deaab5d115f751bf2addb19faf8f02d0aed40fcf7e5aad32e9039ae53aad3f2af3e0e6a546347a09a3a6d135628c940c55dfafb947d5b4dcf23bdb49055eb4321436a7c9016b6485998640c7073c002600e81373aefa6cd54703e62215858dba150e5f3b988a974d387297628c90d506e7bc765b34329861eefccfd234c10f330685fc8061b6af5f4f22083ac411737e6b2dff88ade3de69afd0aa262c7949e5c9641f18aeb133719234855abe72b008acb201a18a4b5ed342b289b39f2f6a1bb504972741267777559e4f3a8d134ada84eff443780b3ca0188a9fcff040670d1fd78d0d07a9c14adbabde3d219c3c36c2d5194f80be09a798d498998f79b2e9d6e36b01593f8353c3db20b8c91efc31aea5b44165d2b442f46acc483db657099438f78e19806fdd82fffcd510407ee10eb802877663b4439546614146f07fd0d935c9c4f56a81d0cdd6a2b7ec51a6412da84e5aeca1d9ec2f57a6236e32b3e67c7b3ac43960911a219e0b100c011d508807c4b2a385a6dcd1c126152eb6f84a25b53ffdab88f93a8127f1937cc5f73bbdd308a0ee6b8d87f8c9535be283d3eeb0a7fd38c2430b991c57e7a5cc3985b2ee7fee9f1ceb9521e8739931e2b65e022bc45b6a6774a6a0fda88ac545e6b416756501b3974c4189d7e60efe0e6de274124af7c9bb1536390fd217008f2d8ed0dac7bc6c3ee9d4ca1bc31cb03b1e2d74b7a87c088451692526f4c91ac9120093dd8dd1108162364f51308a962fbcfc3e405dcde9b3d48ca8d8eb6fe25e1c0864f808e66468465ff546fb83a8844a7f27551fb069149a59638c55bb105c45cdead04b06596aaf40928fe2fddc094f30c0c9afbc0beed7a8c3e8f89f3d24c35527f71c9232f6237ce6b5abd029f500309effb46c17efe4d2e5af4f10b31cdecbd3ecec48851cd1f29233ef870364f91aa8d32e58b593373734f156886fc0756e07f165f1d2788ff8dc2b4903617d4c84a1ef7c2336a97b03a9dd7998479375c9611fb64aefc7e2fec77cf7630c022cdd6d2e824f30924e4a9dba9698d49aeee78a28c0c1af418a0fe09afa119da62b64890acc38efa4e64bf09a4b95f5a03b7d8625e36dda4ca8633453c461033f27be28abe14f264fd5b06e29403060f007a66c39cc486df65299189ca4b57420c1a1c595b8ff520a9f00d0bb2bf7d3ac1c47c6bc1042232b1198e1072e0fb2ee5ac057cc845992017b4f744bde2ad6835047f85235a46097c3313345182c4a514e01f885fc1b020aa48cafd71ad3e015aae0b61412bf7b33e1284a204a1c877daa339fae560cbf2cd68ee1ccbe7c059089e6b9fb50aa0db1d2138d837412b112b4bce9ea53703f537579196797855072994231f480fcc26ccf43dde1672029cafe1d0772783ef3b3f88bd42ff2d1e4e8847ed6fd49e75685e29cb5673f66fafbeb9ce8bd7d8c15e24326141af1825ae9668ca942dab0990acf3694ce4dcb8262ce3ca8c050811fe4075af3d22071ca4659c3273c7819fb591488165611978c2801bd5193239a544934d1fef9ba812e8d165bc950fc52d7b8d93b8c1d87401c2d3758936327813041e650a0bf4c92271c6a4cc8bf465bd08ceab6ccc668ebfd4eef2de49d4f05cb72f7ebd4496f955e75e72235b34a14a5acd6ba1af47ecd0e9fbce767e97df4aa05304f839e4a90330d9ea038f71c13a974221180b17be8d1284601437839881b6673089ac4308a5581f6973a94edbe14cf68cde9fab744e4f2eb873c4a244401b6c8854b80dea060128bb1a5458c9920eaebe11b9b6e7672efc38621ab7fb041b6a7cbd656ccc13d5f284257d424fdb702489597d6a60932857422960765ec42e94f8a95052e724614803f56f6bb276e2bc71f7f2eda7548a2b9dcfcc0c5e79a1a785e8adfa9acc5d6fb5aedc371c2bb1f287c885aa46e8c062f96353ad9cfb58ecf3922b271c0f68c7d7403f444f2e70ec2b629760bf4e4a5cf968ecca6349e35a6ffd3b8b14be735ab9465839f1c44d59763588b15553894598d7a2d19468d878aaf878b962b91f4dbd627da52a0271b0c9c5417183a4ce1da110b82ec4ac8d8111b44b17542c5e933ebd1115031ca82e4d5be271bc453742bad45ab18b398277b0f9a14a08fcf512d6afd3fa00440c8ba376ab07cd8731ad759b092423b1d692d483c73f0e07968288a3735ac0383894f125602365a9d07fb8904123a129f1632813a5397fe22073f24788e2e5afcbd66a503e06066e5ced8dd19bad39f2de53deeef7acc3c040f7a2fe49180744fa7719f01e21712776e4cf0bce6043f13ba08acab29fb6611fb3850958ba23fc436a87ff9ec524249dfe23ba97d34f533dd9c56b9962dcd4bef1a849aa0541da9a11844a6bc554a11b4b545121d32e5456aa262980cd3e43577a9cc78638a1138466e985e400cb10957d4beff3922148b17cf477eaeedbe6925673b7aafd96f81703110c3932da8670a5d5a309656767f8ea1704efba7eae2ed7b7d9673323051a725a1e88fc5a630bd87aad74486888a891963163334435d4487c02d0921505a8817bd33010734c4c6f74defe99a0436e3d81fb849e7c08e3b8869a0843b909f3d0612ce6805475a89b1c9515a6a85831d8c41e11d78270e0f50ff1d10e3f027598a96f8991927774dcee26e4693512f3e01fcdef033521b094302ce1ff03b3c9cc8ff843d3988a4703a04f2a4c1320dc01e293eab0a0846a80b293740f585e56d82fc6e89f43e5d5f80c2516a7b58699ac3e7c7d509f1cb814b84dd7bda8b7a2a4d15650d23a84f89bcf56d88a7c15bf98389b615ae1a0a93cc3e133cd4bc9733afd5de30f1a310178429e88893e836c1cbce3942300225976e054d59fe2e5c1111a7d80525bbd163ed86da1335983ec8f43cc54c646428614d4b761a3883bfe500c135e385a651fa3f9500f8046334599a4dc0826ac4628eef5f044f4aa5442c75388193d880f4f5c9f87676ff3b8f044e071a9d855a4b056c606a4f97b0d2023a8177882827f74afeafe4ed0b3fd9d88150e7353eb3b717d5f108a8b1d9ba4be1337a0266fdebf0dbf557828a8ef84864da39f4e73a3bd138ef45723d032695d76338eddb1396c1ca0533ac0a6de5e4b69837318e49d88fc0f60503ac8a30cd4af1a57e1d2dc13a0c96f778256e4640e732ddd592ce2b6d8860bdce2ffca4132cc13ae9eb6fc3b53650b04f0526c8c388f2724a602b447c60dee06be2a77c27de85a9446b9130ef10f12fbd5a2683574c5260f976633b43c3b6c7c3d3b648b10c40775b0066b0205584404582e00c67bed599c37e5c264008bb8be5a0e32cea800d27a26c0118e7fc28bf577e921b44b06954f5dc48183f9b92a284eff75c26f1ba4bef47028565a0ec24d78798a338d702806d2a6e8610093ddbdb0986e42d56ddc89f0f784786875e2e4491eec44cba813a47547adee9c160c1c288e02f95cf49fbe0db47a669eb097182c6b25752f64379a4b46752824abafacb39a57ec7bc5a34cbcb87bd410076427167375b74818edd08efa72a92fa1a2be754c06caeb5dd5ad3ffbea1af28831509e921d344e8757257e0f82a4c84518223813d11e0a9dead2a68b10a25dee5600cc8adb37d01f39d48b95438dc5f20705184dc20013610b323e8cdd2f3a0d91a2ad21c57b488a9a51e3aa1e02b8612abedfc54d36c4bc3c80919ce6fa279dcf2ed074a179d20e650993f1805e8d3985e98c369c31c3cfd435263af3267662047fbe6d286637815e531846509d68ee146c26a3f2d4da8fac74383b10ab31f3cefd33eed7e01f85f3e8a39f183b9c090917fd139ac9910e20c908286284bcf48d86d35fe7d2142156c802d02b79d7a50447083de57103d5ee4a5bb89d79811111665e902157416495f07f47f9bc4d3cf58efcc22e7e0841eb61d8568f015ec972668fa0e47ea4c3f8a9b605274cd1d9f42bbdc0153c4b9ee7e07a251fd186262b5b6c1f173aa802db36bbbf11a8047df78437bcb625caa4feaae3b8fee1a8a32c4ff6ec265552c01702daab7e906955654e6bd943371de8fecee6c2db927fcf952e05a138581f5a5c913176a42c0ae95f6734c3c68722ad005c7477ca5b30877ec5954311294bf496b2e86942ffff08f63d6674ab37c46175d3d56483fd98f96afdf6590884dd86c698a24f009a2e638dc1c2b620d0af9cb41086b2c84a5ac8d43226ad15871650136f7e5e64407140d104e705050b82b91074c8389612e0771d33a19a918c32c16bbee8c5342108ee86846ed651d2b3ea6651e9e9d43a193e3d03bbd1d51f0e1648eddf5ae803618bf19b38a3403f2d9e96c73ea5f87815aba0adff7a2e4fe1c7af6b92e88f6a3ae05f9bad652cee7fd177837ca88d07a6531fbd04d52f8cf2f1e4a2c85e15ae3764d3dd60596742d4c9352d3e8f49262226006d669aec8bc0a2ec4ba1c0fbae456461903c6019dcb2e9a69a023084dd636e709ca807c6c6f3fb0cf5d9f1302e748acc417efafc95de7cc01b33d0862f6cffc73b2ef9e3c6b07b6bc96bbbfb1fbe10adee5d3d5afdd1f1e480205f213d9062f506223120e9959216f3cf53cbcc74f86e50dddec812b4923d4217f2daa4f2205c5918448cc812822fa4cf0a5ed235839708133bb35762282df5e80e913a44816e8f6310c45edcbe2dd1f82741199486e2ff9581babf8851425d06619d7ab24447756306ed1f925b028acfd79866404080fa89a1bffcfe7a99f841f298bc4b23ec0619d7e5d70772b58ac4be4e146c1f9f3393430ff8f53e21e8205ba8fa81feaccff8d99630fe4c00853d75dc0198c755974ebebf262bba12dd105cf239fc1f8606b207959090df9a795f20927e670aa02053dccd297efe8336112e174208fab4ec6c2721d32f0892905d7f06c6b5635fb02f0d9c87b9f17544f65b172b4c5d00963cce3c1075755543adab27b076731df88d4820ce7fc39b37007cf507875a7c592d8c0082020a824862800935a37d0e2a88577223dbb648caca667a8d88c91fb300b600c700bb25b0d7cd06a000a9d32cc7ce776813bae11bbe7a49c7a11aaafaa559ddea16ec015f1006e1afe0064c2f0c7a80ebe7f46b3f99cffdf4e1a77dfcfde36ffdfaecb33bb7f29ad9cc86330d7aa8e02aee5073e0fac9f0affd5c71879afb3ef7690f7ffcf1b77e7df6d90a8ff55854c8b22795e77a3627f7cd6fd945ae8bbb254ffdeea9ddab63bbb66b75a6c1393ecd916f9d63f094f1793629cff5ded32cc7cec51d6ace7bbba52ef6544fed5e1ddbb55dcb7ea42b772884146b9c7db0481113434a650067561f8cca8ba5af8292243973630dc771dca980e37a5f1a3fa79dedafdef6f6cdb49e1cc3df39cc55eec157be8aad2823baa2bb691bdef18ec7544e6af6ffffffdfb71aef4b668f47b51c3b1fd5fe323bdbdb72ecbcf796f7f097c31ce61e5ce52b5f4519b1155dd1ddb40def78c71cfba8df08fed7dddaec0638cbce856e6893e3f77bf8ea582f856aa86a56bf74ab5bb0077c411884f9844445009a32476e7ac5cdb503471aeca6ce4e3370a6e998e36384442596e3530b0eb52799b816dbd287e933284d7aa3d2f98980619944fd75f5a1e248b3067ad487d688208b95a47057a6199543ba802a74eeb5c1a8b14605fb323d530067ed34f2f96efa9cae33c564992c7366e694b2526666981b648d61b552a9d214457b275de38c2345389235ce464ed64f58cd882105a38aa5684e38615c347d4ed799629663e7a2e9b3439365cecc1cb31c3b174d96064b9999616e7071871a2c659f47d64a58f9c2c51d6ab0f624e9f2010255e99301dff76ddff6dff77d0d7adb7442ce39e72c3b65b567169a57972ab3b0785553c1a98fe9fd6ddb36fe8f603233411287daa106bf7f08f11f45d33427889d977aa9c779dc779d4b6fa7d3694b707820da640f726050403020108002a44ef359182539762eee5083df7b1d8adb4e17f945b9a8a848382c0d393c20bab6e2c04a315929e93c2b2c304a4b0d4aeb032504a5c375a2d41073129f149dec9c0801b8d69cc71a2ec68dffdb08c947706cff99e05b854a0c6686e6c6f4be9bb87dacad7dc3eafc040d058642a8e368e53506f3aa040c0e2114628e2a1119998907e3a051404a141c18a1988e02120206841022321688441288880249920e1eb2260b6550c0f8bfee1db71f6bc8539202ee1a9e7c81b83ebbd6d1308b3feb629bead3dd76ae15cbb0336581509182fe1bc9e719a6e5ee18502f0c6081f86b14722f8d861428fe51430a3496cd90021e102a0c29009a72f4420ae24494a495254502102740d41971fad0bf2e666f7ab526242a3e842244a8227f09a4e03a2a9c00f030d146f76dc03c4ab8e9668cd50b054881ce0d62ec30c4c39a2c6591212e7ebfbbedc7739644cf4514dd263961649c68c18bf028e8be76a3999937a60fb7692f0814d151d0498aeb8a0d8d8e02ca1aa3d051a0eb94fd407b0a49cf51a0df458256cc1a902088597a9da38016027cd51571fcae301d0f0301eba73de66d43f0e628e81028b16a155c1ddb66f823d0b7cd982100809229d3da3ce3c8f3ce3e7ce70bc2f7a6328ae7b20b3a9737cd68f38985367fe59fbe447696300d43b73f4a2c4b25001bbbbc3ec8fe8339a6bf07593c92912742fb7a103751138cf50eef7eddcc5c407a8012adb86a00c66862892181024d05dc06735c167fe12205c6d8aea963feefe78f42cd194276491957e8138cd4d6d7de8194db7f253bf0d13f7534df0ce784b2af252677f882194304db60c9764a224b722eae1e601ea3cb991574f9092b51acac5ca15459612520c5dcf3d9757dda5b9c7309d10db26f878e4e37ec88587fa114142a952a2b50505252ae504159c9511ce0abdbb51db0f9d98e4b7f17320834179deff10a3a056cdaa46b0316a28a7493e3d42cafe42687250d1dfd2f4c18ba10ade3319dd6eac67885d065218174731b5825a9ead079f249734ff4b7c40429742f472ff69962945bb78ade4ed917797edf8954093467bb92e944b8912bb9e90a81a8e30a79deb9f34ae8605161b7eb645fd065313a6fd0a2556f55926047278aa0660bea2300a7491be22af915a58d625f1628660e2feb955beb6e4dbacdf2e15188e1eccb64ab386e3d79bf65875f9ad0c0e95c6013156f6ccd8d58f3c8b0eb74d2c1056e2001911aa117885033cdf515113516691dccc2c74e02b61159256b35817d22b603017cde1302ffec8460e271d6afba5c1dc0d1751eea2cad067e88eb3b4c99abaf44d01cff234f65951d6ec326b7f478808596b2a45a7ea7198fa47096e749ee234e7dcdb8d6a95996079d94d1244a6583d304375776c63357c2a8f9429c96d937a4dd6504b2c3ded3e0bb3012946f9ebbe08ea6269ceb13413bcfd2dda499de4b5bd58eff2b35b2ba4510ee36ec5c0019a430cf7882df76962e64033f5a77d79ade7161b6c16157982324a9ca5f29b564bb376d8fac687ed302bc3e8ecc227e7a305d919400eb2aef7b3fd7f5fd2adbad4373688952346a3342b042c876793cfcd70cc6d83bb22c5fdab668d71ce011126cea809c22ec4a45ff7836f74d5f7d4e78c97b3b8a208fbb116abb0d94202d5014e74cf5780f90516a70560ac17574bea7cc8451c78f9452c95301246078d31f5906d5f330ce675db8c9b7cd827f901bf4bca9670b8cb2ba8aa3e912bdf2eb8d19a8f9b381f3b1074951a631f2899833cedd9d3af775f73ecf0c307ce65d6a4a3e5927edaf83a5e92b0f4a7f23dddfd15fc8dce9519e6e5aea0d4af84675476d1e62b357bcde74e2c98381ddf240579a5f920671313796b03382e38562122ff8a858ee945c3bd9bcddafafabc8ea18e4861f147e61aa6cc5d6c4cde9044e978c01deb82047ca7225c19dcba5ed7e61bd345acb8e65086f7c68191c0757dbdc7aab79d8df365bed7137635430f7c084a3fbe745acf63caec15ba2aa380af0915260047512c9540d378ce312c25069de8328608a93a8e8b8ad03f71a89211bcdc3e48ad7303733fe06743a0c047d46eb381c20ace8c67a3a367e4ef9ac7a9ab22de667fc7140fc1cafab1b1f36b0db290e2a46452b8d646112c549325cc396fad6f0201415bc467340f1590e4f5aa462557102a48c7a34b084b0c072bc23a1d72d82c8d28145582e4ba7fb08918242704591598c5771bc2bdbdf2cce59328e2f358eaf398e1f1fc7ff20c79f56cdf4d793fc95d636ac92b3458a0932abaf6452abc21be77fa69018c8c9e823bb972c1644811bcd57b244932e960596566f3c7e13e9aea6ea4745a7fe8a656ae045eaa938c25cf58584dc9af1f88154365aab1eaab6ba15aca9a523527fae0b8607ed62c9c8afdb4cda6e35358c35f0a828a8116f0aa22925700efb38826d8787e33efdcc2665e92c4c51d8349f644fdcc43538e965296469587ceac9a9acad58bbce0314221f45102919b208db65eb7017285254a408ce89eae93f508294906ce9431848b1a46453db7361b4bcb416adec162af9a61655edfa58f826e94716e24cf403d8689f3aef94792fccc155b7d06480db71ebb2a91a30128f9907bac8eee80af785baa457b0a6869c489d9a2bbc2b3e494aad330e1f88caa6b5c2a152565b81b2f5386275cff5617870605b88ecb16cb10ce679923242f53b900c545045d7c74a761c2aa5e44b7b225564c81077d3a11af3144cdad3bfbaac085fe28b914409abd3acd1ecf492bed14bac7b9ac9677cbbd2667a4388d3193bbcdc4e26e6ff7400298a93d2e92f5086acd06c6904563febbe2ff3e1f932c58e5371a88d3471f50aa10f643c7af59087ed9b344d45f1844cf3002180bd4adbf3fec7c5624047b2afcc56e4d07dd6a888fe2b15d8941344034bad231e1f88caa6b5c2a152565b81b2f5386275cff5a1f058b298b58cd5242641d4de0f234f37244187dfd35d7d3b0c7289652ca08e158cfd3f9b2fa3ce843226eab5e47f7edf5c9f06aee79a1659dcf0e4ad8b47020988b140e9ba92a5bbeb90fd59639b6a901cb3897b156ae24aea24e5eaac08ea0e052f70619bf42b0ee464fa036cb45f9bf79a3c4766e13df199967c197f650744429736d1983d668dae17ee705fb84b6a2557d6d881b4a7eba2c387176df5d4b0ce4ca8a13619b48500aa4cc40f46c01aa70d10595159515424d48961b0a9c8ccc2b2a11168304ddb94bc0c04661e0ac2c69fa028a2202000caffeb42eeaf5d1a8084e076336debd1da7a6577776fae5cb2132101f500f500de009f1fb0749e37b730fc7c6da518cf1b2b84e08132d11f398d73e9406b2ca216a9a43642c8c57b47ec30e92e5b15af478f7b2fe847176444a4c180efc371ada22ec884129a26edef941d50b711a93b6176c4887832c2a507129942679d2a51f3488a5270281923a48cb6b21f8d6b7cd1b5050f14b231b0977539a311c5e8c9d2a388430d154a4b492e9ca4d97a6232623e23ba1f1b10cea0ec948931db4a33bc373fce495f4b0076bda6699aa6b93ea7746401b0f9956aa7b4de316ed66f00362b554a7f4dd466b126d6fcf0bbcfbe9ab77a103aa575bf6aeed4d6795f580357f0a95c29577661578cafd73f8b8583f37a69bdf77c2f40dd4f3495c596f76454a6cc899615459a43468796b2203a321eb3ca72704352ccd4b8b2154f64245e4e62676263625892744c9ac27d0c8a4fa78f848815890591b11d4d26ddb67bef7d392fbdf6bd9b7a0fdbf730c618635a07e49c7396b672f1f2b666ed4b36fc186992da5c6dc65150173068406f7d0743273e686901c68ca654eb03fbada7740403ecd2162c016442e80accd69a03814aa80722203850df0414cd9352c015ec5490e08680fd87e221904259146abefd0b5a47a915df28efbdf7feffbcfff4b7df16c618632c2daec939e79c09407803e1b610563a6112473f477083a0c0cd7f827a17c805b501cbd50ac0c2336596dc85b4cfb453878684517726a675acb72cbc5ef9ffcf39a7f63fe7cf9f3fe7eb59779fb9b5732a59a9482e54a7cdd3bbce916a56def43687475b6bad1b59eb44d6ad46d5eadaa889aa73b56bd58edadc5d680392bb564d5128ba2bc5a8d4566dbdaaf8c9cad6c4847f7382450dbf37bcdd36cfa46103cc7b9e3ea838985eca3389e7d7b7765e5ae443aeb38068eff7de0e9d8f2258e4b6e7d0e1bf0dd659b777f9220721179fb43c2ffcbdef9f9683c508df7b719b5a0d123f6e4a670f24419a4a59a5cea3fa41443f31ea8034243761c437779c3106f97c8c404d01f8feffd7d897b13ebbf5bc5e39395b8cd27aebff7d93337ddc29dfa91d37b7ee2fdd1f2ec1d513aa497bc94a18e96e279a4577779e1bdaff3fbe6dfbd4c3192492f0c8b794dbedf756cdc90293ce12032b06ba012b58e56afc28512dddca2ddcbaad3a9370a6fdacda38b59e7fad597b57e9b56e95aaaa36d519df09a594524a295df3e2ac7b7ce644fea4bd29bb17ec4ad791a61fb91188f8de7befbdf7de07ceaa36f8cad93d321549f8d08f8caf75c924ffffff3f2795db063be90c8e0cc1cecc80e13835c5bd5f239abd53aa9d38a02218f86b56d9a6ebcc745d8642a8b37647730a1d9397100c0e86d230ca628c410e21aa551e3331b2d03d140da63816a330884062103184184408214222222423d2380744b8d03e4ab890874e1fbe42789da25f951896ddeb29e19ac902004a94ebe18fe2ca358b967a3b2489e8513abb35532ea16a0e38ea6fa116f7c1e04e69ffb7a5c699e2b352703ec8ad1f321adfb127c1f19203b1c0b00d1be8611d5fc19895eb4b10b2bbe2c2863873e428311c5209055bf39a68bc046bf6dbc8400841019593851a716c7709ac971ac18813a658f336e36dc1586d820994018d978aefb0c8eb2ed66e88d2eb5e96102e340246eed1b1373862dd4862a0014119a60cb6e8c295ab5ca7e3b4685165b9feeceb85a543d1892bc04daa3397ae76f60741b1280895c83c0dea7401fd94580f65f667e5a2f42392ba05194697407f2d4ba8feb129ff9424c48d20895e6d378da5687d05443dac4edc2c33672ad5bd9acc4d66fd843831275995dec460e9ddcd4e4bbc125762a8086e3ee4f0d444797fe7db5847bce401675279e537d16f0f37e4cd300557a243b86110e82538b9c938858b30abc27013750b6f70344bae9ea03f5acea296959c4b9b73aab1a07d35f4ee24ef09ba528e021449901352671abd394a3ac91115fb997d3832998a765c1c024f51b5ab64605cfa4b18cafd3886143fb48d928c120d18a192afae3f0fd2224498db6d70bc7bbce79e947bd98244f71310b2e2c5f66b6c397a0f5f14b995f4c9e9479e8c18fdf98263bd924cdf24640f555ef73b8edb7c87172e1cd57dc08e63bafaabeb354e089bcfc7da8de552ff9b2c59218fe1265f4c2e542a1f1172361bad5d7de0fd0ee22fae191f7f6fadf85adeee998e0bbe093bc2c7efd19f05cb0895233405dd79eecf2dbdee86cd4caec5099be16f78a4ad2a602e9361c33f644b3942af08cd1f3d6c0cce322bf772db19b3090a340f7cf7e7fbe23c6fbdf0322a2b39b0a218c01395a4f47d0a2c843a36d18fcf04fe8103ac50f36880c0f1573fc9939bc6872d55dee879c8825bdb5e0daf920e0ddc35ae7feb10ab10ed2cbc1714e58d105269e786ef5d639148d24c5c990f275cc2af7c5a8364acc992d6722dba92370ff6d2822b2fb426cf881da82c2a893ef2a31104d8d218f3f12ef62b17408ef29decc6afdd69248337afb56bad369c370db18080f7f81fe2078677f719efbeac9e03d111837837d702041e00c61bdc893970e08b3bbcafe1866ab5cd5948e2dd87c3166abc8a4670dfc621e6ad8decb7fa036a7dcf22fe03f6011106af010c583f475a6ea79bd4c2658c44e5c8ec8f154aa4e40c7a11483ee6ab486ae5d3ac259a4056a910f0af42f1d504fc01e62d635c30bb9b69f49ef803887e62d6b3506e0df37ecfaf5beef5e55e06c425712baf1f80553c52db7e18e26a3ee76c461c1c74bbb97210e0176075d31466a50f901cfeb5c34a3dd4c2c4adf8012cc62a10ba9c36204852262776de6668d167dc3e8090d270f28fecfeda67922af4df03e228ee2a257f0b900c60cae87303da68793494c043d5a99c6d1022fcfa009931d7981f605cf4033606466f4e5aaef8e296ded5e7a0b8bafa068bd25ba3de9d37335cb40ad7dcba2681d54bc9afaa2870a180c7aa56b6987ec4dc837025b13e998af2fed15be903709299660a682e1b67002afd8c4db800d4576682ac1889a4a8b2d74410ac6b3efdcbed2c5b265eafaf42cd3ab9e8742b05a1bd6399380c072ba9662a461fb00fb32a7d10ef1a585de640987c8084cd62af4419caecc442db6f2cea49f88010d98ccee98b3f202d827669b6c9f45c2c6e939e9bb861114081e5680752ad78f5a91ff00ea86c90d067117378a13e855ac6d820a84ec9f801b896469d3e3b88900bd851a7e80ccef926a6c5e26244dba69e757d7b30258d2c9e693165612657f401e61899d36778fa009e7718de693264dd0e30373ac3f832a20f487c7287a1a7e22e70b95330160fa50342043bb7b373f29d7383da00fcb7a74a518ab19306c8a0b3e2944c1af03892255d290a9ea3670083a08df300c09927c1c131ea00f8e461d7b66f9e557d031ee031232acbdc5e61fe2159bae301c7e49107bced24601c466589ba7430f2eac516f25444774ed20eca8c2f32835b2813394245ff39472f97fdac7bb428498df3f69dd8502a77c4cf33f58b999c3e35f8280b10c19cb7d8b9070b6fff8709595ebf78d90144148b46be3fda3198984dd7af38c839658994b79b2fbfcdff7ad885106e40b908d1cd0bf5dd4c28c2b97e9a03d20c0b820dc9d8c4402cc62fc39ca073463c5d8e6d2184bf193c5aa58a7c0096360fd72cde13332e2730dac0330c1dcae6fc5a03d681473b2e11f8742b773c5a55eddf2444fecf4c6b6e206723b8b1f3d0ef581296fecf9212f9293c80edf125f743b7aee99a9976ae6eb908ca82a6fac1f522bf7a2095581e5fa82d4ed07280bff22f15129d73a8da606bfdd8f48696f76a3943f76f09ffa0a58bd07c583adce810a8434498b1ee332edba9fe11f99845cf1657d4c950ba0047a757f27c5bfd316c25fea2290efad9542f2c42dc5b604274d7a14e20bcfff0520871c8cb193badc2b928191309deb178420fed61e575dbc574c6822fc4dfb36b63cdd007f7881ee5f628025c6c883d5c0f4853618815a0d9c69a262eca1fe859c5a960e39f6ce021267a6c189f67db5165a980d2455e729b15d415bb2bcba501e7540ee1f84dd7f76cca489076f03192467049f28ca0f578dc0dc9b1148beed084f294b73fe8495783ef0e9b8a18e435b99359c7220f771b0415999ff85715be82218737bda4d1d550e4e58f932e8c6019f672276b8df8244d8462f54fd2fb24e9f183d75f414b8188fd1d736eefeb22a98b06943ae83663fb3a04d3e0a5bd95a6fcf94fc5bf64032442cbabd556e9011b6bfc9e008a77d6a61963986d4fb8911ed30eb606076167021decc7648161ff38df27ab1993f8be9c11201b89622f1798eccc72b95a92cd69c67004f8788478ca165fd40929192ed7d7b967f9da0f46a06ae866271c3765a20612207515b9f2861fef5c6729f4e09869f118434e33b51bca38e6322beca48e31226aa7bdfdff3bc62c5de51cd26c83b98cad928e3194e58d282efd399b6ca4ef42f0ca419a90b7a276783d14d6877ee07477b768224511d937febe7aa213f13cbb166eb1b24a0c565995890887ea8df976a523a9750df003bc0ca41474d63de7ea495c7d8af114ab12439432d6a572a3e90989204cef0db7b086f3346ba24b77d89c6e5567d5dc9bfe1c6c2366f41bea8d2d7b3cd2ed089d5ba2c64e03749a6880bfb0694e3ca32783b8364d105beb3c05b1e04fcc274f66cf29627555128284ec6ad60522792f10ae95e116b4c80ce16ee34ccb4e7cff1c11514bc0118f758d14a22adf7a13822ca12876d3975c2db1edd2410480448bd38d10ec8a347eccc7949d05bee7d3979d13d798c8596276a21de517a27238673505b523bbb8a66183ea07029494facfafcf2ecc115f0c43221c780e085006902f66f1677777ebbfedc2da1858a2051d4ba977156926d92fb0957bd224030130fcb77f4c8b40f3930279a722e1d2deb917c120c4e00fcda566dd8e4d001f611e52e29d3b6049c3d5d54b350a200716915f82967a89e7a23f71784281114443adfe6ff57a148c6a9b51c62a1b19c1cc0bb4e0e411abbba3965bfad2ec0917c2051a5e65c75b44d42401a943a0779df6325eb6cdae2bf5f517a725618436080f42bf41696b088c458f12ede0efc5cbc2b3132831f2fdb99b2cdbc54b456276de44dd8a81d822bb00dde2371fdb178b28346886333d680704ee3fc800c7375ba50ef5806067116942729cbe3a0fc6a2a8045a6302fd0df28d07f160011a5774b6d8aee8dcfb6b6a67eb1a89c31215fa2051576683141e71d4406e220a2bc608a87db03da5202dc7cd744eba12e7fbb1d0923ec403d299ff699354630d51b31f6a41f6c067e835a84c887046065c100ad7e9386865c68c35df6a5142965b3c36c3e1443eda78916650659f39c2625c2018c9163fdf4d7181b5129bb8f1fbb14a319bab7c76b0fb0d09f88723592ce946258d9d55ec760335a2d80d44410e21305967d8357818d968c105835fae0040c993191832b8ec2153d089e3b48d59ce67fb11888816794aa64047d06439e719cb5044825e2495fbb23aa3e65e1f18d482e8101a4f706b9af17a7afaaff7f3da95610117081f6f7cba911ef997228f68f414ff52a0cf531e545e82edf3c6f3e6d45efc8a8a470acd0a5e0ae2810e35a302978257c961be23a30fd1bed8bc8a5f587bb075fabdb5139aa6f6570a6cf588e7eb570a74a1e572ea33b9412d344dc7520221a7166c81772405b420f903b70177495248bde29185d2099008b3d952a94d930a6b5475d1623edd2fa2bd2bfcb588a5baaadcf7cc800f046c2f60ac998c799ee2082f0cc1c8490990c67c2be965b4b1f178ca5dd5bc668b11a1ff4941f6a6f36b4a6e36e4f5214ee0f0c94a2e4ab0941438c04ad62adc6bdb91619865ab65b10a2de39e25f32f2970e81a4ae5762e265e501c9df9cd09503226982f6d920268508d17ac7e026a49c5405d60d4d1b60d0948f9a04ac20af036a49f554f75b70583b01e4506aee7124e43480907fe4c1b353de6c4916aaa0aefbdf882074283de4a1ab04e7052c5cc47d10eb1cc54200df399d2cdcc10791ea2597cbf751bb5508becf6caeededc24cd03ca030a04d6d64ae99c52c6e8de84b5de8149ffcdee9665add71a2995734e29698cd5dd7a4d3876eb052b67aad23050f48e61e5afa133ae4fd5f75cb029aba14402b6ab8c2f85b5fe77cda69b810796ebb7dbc80307acc74bc383ca65a1504aca130fc14ebfb55d5b93659c06bbb655e90cb1578f894d71567e45220704c4dfd1462901145e440775337ed2c95d10b910b344e9fc93a6f4c3ed566bad3527c37575d55bb552b4aabf6b0234b4d66b8d94ca39a79434c6ea6e3d12e887d40bfaa9c54fb5c5385af19a1d05a7178fa17ffebda5285c21c95d7c074a8c38c5e4f02fc784e9e00467a98b58bdb9da13c8ecbe36eb758743144671d0d0f9cd17ae460d7f6d4b63cad69f3d326e963c16d8a9f980f117ffdc0724b98bbff8f790f3d7578b03b21bd054a306e4f1624457e1ef422ea0b5196b203638a0460dee824352dfe12fde111b42fb575e6b6190012386bb4012a574bbdcf281b4149ea65951cde6af5af555f7eb5db5bdbf565dd25bdb68f447ce6f32cc7a6b5fd775edbd5d97b6afadc444fbcd69af553e1e92cea63de7b50957b2e10a54f190745d28a46d388fe9108efeec7a1a35200d1a8ea66616b6c335ba51b706ab9f69380bc32acb8a69821531472619ada728985ecc3a7bcc1f96672fa8a2df626157d5b52d8bb4d232c4ec6171f34557f3abf44f3deb3ea91f881911fd8bfe12638c31c678efbdf75e77f16f4ea8339d755e87b91792dce54292eff0cf8b40d25dc175768c4322106c383505a5cf9ad14a598b258677baa0fcf31d946b10a8f89c1e16bb560e06193464d0903195647c602a4d251522d33b019197982139e68f89d24dbd22b676141ff2d65a6be7cb2cedbd6dff9deb1864a6f4ad704bb5e92e9fcc7d9f027d9d31d6ce6fbe580969cafc2c8ba8032c906596660f20d4c507cccbf7f27d9665599665593e2c4beb17ebe583d09b70024b4c1386e019314785c7fca8aaaac2b89aa5d923f32ccbac2cd33acbac6c962a841a784108e56776c2b80b421bc49c73ce39e79c91da691f5f79e7add4444d7596e8863335d39a785253cf6bca99edcead30ed3d249d8db3e1a03667365f83cdbf7695efa4366ebf7d44c711218ec01c79f97cec6f7f1b6759f31bf2b8b08d653befadc12e4b2daf719a6ac5718ab1461c1fd648719c60ad11c7b8f9d04987391aeb493c7f69db7f364f47522b67395bd3c4abb374a41e294a5fc0d983e3b5658f6260629830844b8c1195cf877f1a8be17d596b2d8d69bda591493d0567894eeaa4a395a2be9e9c84425df73f69a529b3077501a51afc93bbbbbbbbf5a7d5ddda6c334d71ebb1ce92aeac7d656f21fca8b5d4524b2d756ba9b515a3da6663a968856d03d523cc1183f56ea0b90b0862a150d7fd6f9b5bd85331c3f275b70592549519974e44283062481ab2cbfbd62a1aedbd6dff5d1772718fea28a17419b3cbaa72b5d60892d56651c50e8004766f3ff3de1b76ec9e659493562c1defb7386b061c63ac6f63bc117f8c504e5aa9ab338c3266b7d82a595b67d853266df952074f899d5d6f38a3bbbb4b4f0a18689893c694bd1fdb9b02cb09c55294f56c6548ce4bbded2628a8a4614a8f7d218348e96121e7849cd5fd6fdbde96a2ec5f327cf53b5cb6e23089e1f462669931e89505b7e6adeeab59e560592257a14a5323aa74ddffb66d4db72a06c46aad720b9a108410ea00dcb7d1fa288a225c0813a70ff8e5704f813e7e8c5e8eb00c59b9024f2fbadf368e326032486a615921794aec0d738c18bb22dfeddfa4fc3e94effb3e28b7932ef4dd269d7ac2a7e83921a23feb4bfbfe47d4c75e14958619164403aa20c35b42c297212386421ca57372973dbccfc268ce98d668ad699aa6699aa6dfd257c6b406c3b00a04b10a7b47c9396b726746d6f9beaeb40bd3e47ce99661188661188669db6b3bd3b6cd7372de5859933559ce1a8621407bec3b5a8cad8b4133665c8cb58b277cabc7f6777e0612fd1d7d2fea5e89e7d5577fa5f56badb5d61a5fce13b2b39ec9f9e21bb317036a3eca0bb626826ccf65669946a3d16456ceb089f7de2e60bcd96c369bcd6643650a5b548ccca884317565f75237bb361aa6a84c4351380177a3dd8d7637dadd6877a3dd8d7637dadd6837cbb28d9651d9751730b4d66b8d94ca39a79434c6ea3e834bddfb949c53878b84ed1dc1e351c373d108d971e59c33ad6a55ab1a766463188661984783e9820cb68bf76158d65c7ee5d7326bf7ae59cd6a56b39a5978d7dfb16eedaabb23b9b4abd64bdb9a26b396f7755dd7755d39608d13354d86ac699f8ffd19d7f559d3385cd62ecdbab69c3f93796f29f7a65996d17d75bc8fc3f9aae218c08341e42173cd12549cd35a6bff5635b483628c56c55d8c31ce1c65a94d82b50f35e1c72c94505565bdd648a99c734a4963acd1848a269465591fadaaa335285e0b3229e1ec4fed73adf55a23a572ce29258db1badbcaba2f547fafaca88ab2217347a0500305ce6ecc594b717bef0bf433db8052c8269ef62fb75d7cb1b5f66e7befbdf76e2eb0d7de7b80108967d8edbdf65a7c430334bc78f391f316c9efcd811e0593926d77a6cfda7be1138cab0a7f56555785ab8a4221e9fcb62dced5fd7cb8eb41d57f7e14f09bd82fb91f4b3c32ccd082b300e0ba196ac4b8a59581a24ab053d4fd701eeee22a2e7398b3dcd6b12c6c6f1ccea3d96859c5f475ed0b6fcbea003d26a6897fb20812fbb6d7da088bb030b4f7b645a7754b8a82292b54ee4345d36bb0a9cf42aa038f91dfd411fd0688a36aeb54010e8348857e042875924bc417e220c1946cef0c0c59581c25ce0a9718f203daa7e45356b753982cdd5bad14552b556dad5f6ba5e7fbb4e2575b0a71ba003d2820850323468c183162c408cc01f6ac10c210bc205e108ce01d61c53d21deccc807225808618a2870f02232418e16962aaac0c1320349021255a8f0cf2d204364882778bca0081d3974844025034584fc408a287cbcec5849a24584820d789e0c0f1de4f0c152040884388110514b151f15a52276e4282282201e48111d21935245107b0199208ec86460643150c48bc29319a5783156843cec15275684a8803eded26a299c71c6d303200e3a42ddfbf09078008d18387370a78c777869e5a4f52b65a96a6b0c2e634f509cccc470d255f870a23078a83bf243b62bb61578c29d8964125ecbf6389c9ee9d44f949cf4bc17aec814b1e205e83b897552dfde967119f056705160c4f01d0ee3b540b4822a44403c0179401ddf1721298728042ed4a387843e2df94015a842bd3ef42827adfe4e71c53e391c0e879339d9a366d368341acd26a12531c58fe216086a3267cbb0767c01ca69f7db679ce73c9e5e787cec9aee7fdbf67e0d2c6df677b76deae2ac2b6b53cd69ad77733715b4d90c79f183151bedb58dcf4fa394524af946a322e66454961fec2139e2535bf8949478a51f15e287d24ab58bb3aeac7d6d369042170f09b5d968bed96cae06aa3d1c714a2b55efa519a5eed5b32c7a76238e9a83c756290b0be9f364f676cf39f3622286d8dec70e39ff517b12d79ec433c3f371dfbc6bbfc11cdfbce65085c58a204e62c939e7528ed30b16cd576029dab7db8e5494d8a00bf460dbda94c49dc57138a90514205c4161e39e1950050e01573c20b86d9c7565ed0beb74360e88b431f6f81a89e7536262624b3ecee1681adc685486fdf5dbaaacce2c17c3081dd64a29a595cefd99a95e7402cb1fe6dbf0a774720ef5127bbb83a20ded6dffd67d287a8cbdb7edbfeb42a1e80fe191387958f863e7a0896f1f8ee739262eeed9018e995435d64209a7fe8ced3991eb44ac3a5612abee7c22d1a8d5aaaaaa4a1335f5b1861247739e9cd4181ba4ce14878de3894f8386f5d8f83c890dcf7376c6563dea25a86b8f079b2d8e628a656955db1d4ecdb6355df3d2541bf7faee0e218cee84773ef8e25e371d3c74b83868fb9036f70de4ee9e830d6bc07d519b6d5996656116f618638c317639a9b935ad699aa6694a5d1c8e0a5ac32c7c6d6f0a8c6194b80607d460430d2939bfd58e0322b0718ee8c0fa3876e01112d959423ec97fe340516b0963d7e1c2235a9b3d5bce56cece3adb9452e0ec116e7c887fb8fbdfb6bd67f6dd727a61599665591f28de8811ce5c55d7fd6fdbde52d334cdcb5a6b0d5f806f31a7181a345cca56ea62ce393905e6a4944e3a27a59e89ceb7e1c3c6448245aa84ac19202d4cd1072122fc6007238c4d2872e25374f9d0bb13244219ca3821c563941e6510a21694a000dc85e47e72938d20091231b1218bbb3809e27095157787d03acc7adbc0f7dab8dab2bed22e244615b08162fd6b08d84d5b7f555cf71667b70dfd507134644c9f0ffaf3f3500018e1c8f36b1c3207532600011b72a8741ee569463b0b54695961d11405cac1720d811d2a8bab2ccb0279053d9396d602d8b25e83a14a574c070828880a333708808af109954e19dda54b1075610563b95a36c972a19f6b9946ca9514b44c237d26dafd5d972ffeaad2a04c7b005d90bfdbc0894a9fd6a046a9a2b2b2c2c2d2d24222b9b87c5f8481216d1fb37de788e4ee07b36ddb56ea743a9d181212121212121212201e8fc7e3f1783c413e9fcfe7f3f97c664a4a4a4a4a4a4a4c4c4c4c4c4c4c4c7af85a4c40040782a0dea4e4038a453c2411c8068a311cea122929a64cd34ae992c3e170b66ddb381b47b26d5ba773a3f3245b87433fbbf174030f32389c0a47366298658c2e9fd2a021e3731cceec7d12ea7edb3070e6064a81aeca55b92ba5981692cb17ba3e11617f2a14ccca4d6129b5c49080b804f9668cc050453c7afdaa030b2e4a62d62a81a0638a27b228c207a81052001112db2240e6c8b731676188f93d9e80d8207b66f3223fea52422a1cad95cacfdf29a5dc0d2022b595b2d6d67aa33e65b9d8522937f21be41c95526290989c042a1095202b332c4c28d2322231c08804f510a3e310c830e113293161804429a594d2670c0a4ab7f7b6fd775d2834bd4018501a614548eb4b49e9f44ae00f638c3166c183071c11600ac1a21b221f2c20fa41d48317031922a89850880ae8fc668f599a313a582e50a465dae249b4a2ec5bc088c1651a2e50a00f5e4c1baf0795880f2a0a88504107700861022064b2e8a1c80982202242c84b9c8288cc24f243076b27582b744a3dce19a59472c638a93b9593f56e01d7d4753ffc7ceb70d2686975fdc5c1ed35da86232f90e4acb071a1b5c83e9aec9a97bcdc5a95aed5ffdadb77212c51f2ceac4fd542bbc8f85230e6a4ec7e18aa3b0c1fd52b6cded9b7381149cf32469ca08fbd75a123a31896cec84d903b390985baee7fdbf69e19754543dc11052b9ce0c40fb7db79e50983501c6c8140f0fc12f42827ad56e4813aa594724efca58c46a3d16804bf0463fd08ca1fc2ea1709a8cc086ecc4ccf09a294ad8900b1c21e82050162bd276c15172d2ff28b1f46c80c59116d60b21ce2182f40b7b1d62a299d735229658d915a7787209106208c299e1298f0b220794492f09290c32bb2026f092dde9014784cc0c1124b3245e8b8644400c4fd93e2a3b5dd420821cc793ebe5fdd051e787fed9ca3147e255d5db4c03a6baab5d67ee3d3e25d50f6135517824ae1d9605bbbf7b6fd77dd094aa453723e2af968e49889fd950a9ef7a8a42eddb78404d3a60014168823499264310c0229062d940f84a20a051f87e5f361302c47c20cc502c60007802100000010002002535454013e179b3c908b050cc15e3a6b4871e5b2e5e7c1c20a87c982463d6ea8fb1e76d087423b44cabf92c2ce0459c9079c98a688104bfffacd30536aa22593d63f2f8975be6927865a3027192d3d1538ff7a0228014703287426860ed0aed7f1b57faeb34ddcafcd08e9724ea8ba7dc882c862f4335a8e925bbf582180fcfd07312e9539af670a76011d6bb6f4d655f924c899711b81416e86c3d244f998fb1003f1669a525326e5b9b618aa0ab5ef34add0b949bacfc267566f6b9e4bb70ca8e9f3c3d5e70add018e4702fa5b3e28c85b23cf3a3c2605f85b3bc539972abb43973f3fd943c6fb23518a3545bcaa65b1dca3a4f998939fedfa70f01434aa43c61c346b48356c6c06a54dc7ad56e1a33cd839c51351ae70ec6ca3ab188ed2711bd22c73e9c42e06aeb03df1cb339e128c98b0a578b782e270ce662589d3a937f73279e0322a92376ececbd231d7d070f07c08005748691393644fa9542449f3ce7ab94f93f0263503011985cbbee0b8b242439775184cdc3c368a248149b9ac1885ff2338ef381e3d95dba4e50777bf6b3039e996ac39bb5a82263719f59d101705453d5e9c58c99860e7a6384993e6d8191408c19284e6aa5c5059bbda2d19603f3b5eef394d5338a8fe7f3ae2e5ad7f0eeec66fc988a5474940b4858cc7c1d8415fc473390962f66c1e62b6bcd79404ccf99080177dd36fb3bd542cec6f1a93766980a8c5578ad33344448da4c40f43acdf0e582e90be51916e4b19ce1f874d22533db350d5696b71e3c4b906991985ad077d8900c9c90cf427a180d05633767f8cd4c15b21e0597afdff08fe499a291113b19c0846a8e28b49664de66aec59dc43b1cbce0f25ed4ac26195c31353610b7024804683392dffb1a355bb8b5ab0f776dd4cdb90e8c123c4ea42be0e912efe19baf2278e6229de80a1cb8f4a02d94a5ceeace6422e85a780e173aa140a5c09efdfd1e5358ccf6a9976a7659491f75d369c06cc7c33c8deae100fd87d77e97a4cae562cd91375500483d7cb1ef6701bd3438d485fc0476c0149b0406be73080c40db291a60052244763045ec6c592fd575c5377b6f34203d693201c9ced5522f6e87023ba74b7ec98618b3b477ad1621e763dbbacafcfd62c81406c91e52558dbb4a7cf89c112557a56da39280d10273d0948c1926de0a6753f1a92cb271e9a46675659222f531aa03901b6def48c8611d1b77a4e371f3afa2c0a22c99e71d9147e0a2fbe537c0503a923005d2113c60a3a3da14f706804fdba0e5f25214e93f24ff597be5b08a5978c7316737926cbbf63de5236e7eebb4894ffad5e2e0487ac138f5547b94296923a50666c6558cbc616dc592b547f62c7096294d29a4353d69665420b2dc3d5b3c6887d79f85fdf07526f5f56efc9226b5d706f014e5cc49adfb48eb7c08145621749a5dafdbbcab2b8897b7f09008e5295a9f030d841eb4a3211fa3cbccf175f8ac13736465c02e8781a77f86233fc2b69d1cd684456b72cd556c18944fc390baa4a60aa7b2eabb0cae026f8845adcdd0ed9adc48b14178a8da02aaae60c269386b0352dc49d8961317c93aa6859ea92b4a27c02e10011d6820513be949a9f5be1212a982fc259a44e5ef0c9810d3e828d18a9ef3f685a8a0597d848ff5d980984c41c4ddc0022a5e0ee588ff2e303579cb1c57359f86ecbcbb86dc146ea019a012505ee2573f5c5fd8f398419ec972e15ea402a635c90970b0c6f9578a7ac50c8c26290a39a5483815cc2b8a17ece63b2d483016d2785d335f1bec16ef81d397e2766fab5f2011494314669f7d5198f91239c2468393dc657792ed088b6c6d3928fef52eaf15df40904fde8bed89730c3411a783ac63d867744a3254afcc383fa11a74cb53a05f5f9205a2f032540da2614a9bf28ec4066627b1b6479c0da19aa22cc9d87251b172003d2214291ad2b495c16d93a0b8dd69a3a5c170f9f6b175648e08992629421322e7860af3972d6953d829fe5292e5f24cca46966f2b251292a931208bcc2cd69340d251f3548e21c706bb544d8e7460229cf063f49b5723ce73949b3fa690825186fa6fcdeced6393f375fc8d7ad5e57b2c9a259537d0f9cc761fdae3a4b33536a52ef6484a2fdf829c8df720d7ece16d3d3327cd8fed211a26ccd87eeb31897fae3021aa2502bf506920559a5d3c5ad5c728fda0e367d00a8facd38e245b9362dee5d67d05a1760b66480041da25ea715208bf9f246e198e1ff7f442d1e13770fe09ff967356e60be9f8ff9f9cbef448ec56d241f8aea69b422b9f6abc8b4628e83e485a41d07cc50fd22852cfc3b35921ff89847d8ea3df3e6122349a2971f2b9608129153f15f157b702b3a664f23bb83eac429c391980cd1611317ae9145169797e00cabc3a0c8fe72e282fec1eb4011f156f62d9db840b593ac7f436e23cb1730d3915239b594827a79b112668e30b73896832ad0545a0e8bf221040d6b67e0489d528c7d14ee6cdc21712d3ace9838a3026742af4cf942d1773d4cedb21fcb583d6fec08b571305b1c3e1bc554425b4f1e135c93a12ab8ce43ed823c79908d627436799b92336108edd443fe5605d0664c087218604d5d978468b3329f829f88de3998e4a00a72c7dffabe79510c6f2a16e65c43e35af41beea4c5aa71049a93193f7e3d3ae6c3aaa5072bb761da2c344ed2a006a7431b31e0be9cb6786f50c0152630fe16d3be5d91b920f4a7a6abf8d306f1c935586614b3c6121f368af8274c4b8545968ff58f6c79048001cbf55d66223d8bc0c456ec84ed7d8a8844bd521b56633f6e2e940791582a892594585a896597583e269a9de6f4b5f9b84d4f38de6c65c15e075370921394e46eb60b9cc7fd15c4741cae4174dd6c77fb0f467594d523c26f2fd1697fb0d1125e5913491266f3f8cee05bd3e943e061d1f970297274ccfbcd88e004e68884cae31c9c3d74fd6d9ba29f5679d3532836bb3a94cb77caaa54e791c09cf8bd197048cc2d37b0eed4f96a5b5a45dceb87cbf2b54cc6b6e26773b11896ba12239d3e03e83136e442ce3cd2f8c1591f3e0fdc7a8e8ee4bfa24eb811e33de3d89bca27c20004ba0187e0b21459af90a05421748d2f10906f6206652aef341f369634fc23f264304a815a15a58643a1af907f023ee3540182e04f84159f98ffd2414fecac7dbbc3c9de25e9d1f5c5f528b6fb39ae70c21e5a3fc7b1cdc58c6798013051d3d427a1aed14491d7eee5152d3de75104688ec123be5a0b4a53b2ae500f69f8fd5eb78177379434ce6b3dda6de6273b496b58b989fdc79146b0a2ab559c98d84eab1f5d8acaa5795ba9831620a88e5edb82ed0b54e0b2ad19b966c442d35db618c29bc549c58eb52d87f0a67a12de835e9f4e667b9a01e5e77fb825edf235953d3c104721d76fb6cb1c8824d948605579fe03ebec5cf85e5c51845c200588c41be8f07f80cf2c404c0c3165a65f358f1b3caf6504f43c1f1dfa152649638c3e9b320c6ccd08b02bb4d5792f274e03fd82c20fec016660e8ad17600d5d80ee16f67a7141c3d72d16be31041571da77a7dcbcc86d353471cd8f1e990d40b0e1cacaaa55cd78d081d45115a211af7406d04223109445982a7c8510d73da1736406130cf848c3c971f9a6e1f4c37f4ed3a41f0a1b7c7c647fd7fe20571e9fe3edc22a66e6fe743c0fb8a550a98d519ac3570c24f429b0f4d2c9c146be3f6165a2fad1a3a4734d05af11da2d16456024b5930027e6bcc6ccb18e0acf2a657e5b8e81e90fe7739981b89db060a80859f7421d4c6f06073bc213ba3534d0a7a97c0e102d0aed5e5d1e8f1dec84c7bd84687cea5458f99f809b47cfcecc8c6c7a0d3febe61ba87dbe5f0f688d70eec126de83a02d0398e309dfd93636b2a9bc5ceccc1e9011c2675beff4297657024c5a09400bf8738f5157ef7f50ab3e12da600a7c1c7eda0be32dc70b9d4505f72580229dcc690a5ccf2803fc9a380206f81ac383bd661c6ac20a674b98e6553e4597949e49af6fd24e27d5f8a4e6503a344a8b9cec53948cc203c217b943e960e704758e6787b6f4b8bd14fec8a1fe4f515b9aa15a263b12fd04676ce627381d9de2c8c5b4e6b84a2d251a985f09ab0857a2ff604976d61a03307fd7a32f43eb5be9350ac4bfb27eec7c36b0f1023bb19058df4284723c9a6bf367f9c2a6a35cd7886cf4f550706fa2ee5c1b34b72fb3524fff965bc20386173a48d37eaa327e4d6f148f88be7e6fca76a4ef08182ee2018855c206fa7fb1feefc02a4383fd37fc516ee8ed688e52a7442bc85c9bea290e895e2b169b2a495a0c93a3af34bf0543001b689bd9c9998a59dd3e1f336668277fcdc301e15c5a0607f952334dc2c17c15ce150ceb15d3098f53ac54cbd341bbb4f55611d61d28567388577b628544d194f897bc197e1b1b344d06e46b79bff9e95372b8e9b878d43fd4b7e1a4baaf30e74fa87da258807be839e62ed579c66b8c8f18a003a314ee527ed83d63ef1f1fd9b497f7de10a6c41df63958c96a60b4b28c7ecc4c3f40f45321a3e238617c99770a0f4983b5269242ca180674b10848d624617b79ea8e3a80ac9ca40cfd7ea75a87ed193a6085cb10742f79c942e1c1da7c325bfdaaf849831b8f53907acba21ceff78b5ba42ca692a305df1efaf9b1e477dda21e7518d66f640ee5543ef749f4da6c8d4d4f68eebf2715245b607e90b2af0dcd0014fe258124e5e62c4d9a08dfed21d0c50b66fb8fd3636cb3735e1c468570ab09ef6bb5cd97b0e933dfbd677250901a8418eda8b59880d39500781ff9d9a47bd28d08fe0db645aa68d737061c7c031478adc5b2df8d98fb40791a310fffe37dc27f0df4e13fb8cf585b03cde0fffe03746b629cf07fff89b834900efeed3e41364d6cd37ffa0fb4dbd5c43f4fffee3fe59e7958ad215d6382dfd4b732bdc812eecc6ebfbe2545fac9507a9101445726b37c1c89a9d76d5bae3eaee17577629a122856911e060839b308bf54c913b8ca32d4fe6a6fc64259dc0a20fb5e2e9e10fb12fdc24dd2145820134660d79e92da095dd7ad7b5543ef5333d0244855e3e4314723aade6983d7459cac732a076b11263f735bb6605d3ce55fe55819ba5466866281ba0c6104691f066fef4d35a06bad56bb378f7c93cb9de627fbf6f32037f62af2abc1852897d01266dbfc5ee3f960667c61a44ea36bc96c06aa2424b96b7cba8b9325db64845464a75886582aa0fe6b4e9c6164abbc08cb2e088860c544320c7b2f90d6b9730d940106d2092e72951f5567db42a02d73a0abb18e46d4ff6c9df942725fd2fc6052b0cd51f6a0a3b1d1f1b0fd561c3cf4f9c68c1770f87940298658dd6a834085e53f875f4855fc0b2113ad559f8100350b453d1aa2e533e2d7d633eeeb3471af1e5e2eaba69d97eedf07b5f60f942679eea09df6187438ea5051ce5386637b2015e4fec726f92af49b46366362474a7d628b1afcd6522fe81951061b26affd5021a6f1ba758e1503c7e18f5e8ed22f95f6050b7c12e35ea1b8e879c2223046ff6ff8e8224e95b3cc2bb96ace2f2ec9d91540dccfefd47cfd6e6aef777353d2821d55a978bf08f0dbabf29b36d52fb27f6b5fbde4bbc67b925807aa4c42a9d4eeab65ee68c6f0694c6c710dc956757a091e86dc716d78d527e299258190d51be20bd7c8d1f944ed09fd8c21c5e5b628a9d4776d1413b6e74534827dd4fbb964a37e5381f22ee0ad89ce36bd5563c66190396b37370476913fb6b35d30d01c6fb36df6c9550db30653cc1dbbdca0b069de8d0dcbedac7489c11301200accde034c9bf9b0e2800f7d7c3debe9198c2c062ea2e907972786d2a44dcaa8bb88729236c43e130329596a754784b0c84eee57d1f489625efbb916896e9015553907d152e42c9cb18e806924fae3f12ff34862939ba8c598ff2c6fe2a5cc948ee21868e3e4182894f76710698e81fcaadc34b56c34407644759c2cc818811b9d9bd7c3244a0c74899caa35af380a1d0c8f96c79c04fce33bacbb96d2909b121009bbdae0ea203698dac9bf15dbebea881aa77512c94108a4bb254c396b2a921c859f200df768c88d08a6a25c5bb7839347887b55d0bbbaf7add295fb80cd96634f218b64a564707f88a82096dc71a7ee3f5154f6643c5a8f2c8fdb43582f10300a6e18b614db2cb175b8b13068d61f4f3533c67690d21f272e106ec2f1f45a265573489f1cb1cb71ed024fb37603cb16c06b9579c59d696c51ccdd13613d2cd30440c223aa719d042d5a719b786e686375795d36ac3ba1e07887dcabbe6ff0ace8bc16a0171a002c80d80b35d317b66d14a6deeb28d1f75fca3fdaba2a518e679af48568d9f237857ed23b6f5ec3fb4599756371228ab75b0ea7f4ed8a831303245d5da9d3f080c1b74f6e92fd4d6f5123a85d77841d4a3af48fea70289df7abd50237d8e57bb091e763b92d4beccee8a89541aff1b58e832531a7cc12094e082808f2189416cae79a72d14c966e280b8276582bcd88d9a6ab3e28a3356fc2cff08bc502164f859696b6d7f1d81f57099a245a49a645126d92d11eef3fd23b476994524d57884ac963cd023b09c98bcbd547b0222fc01a8efbd062e12bcfc090dbd0ed08f254e37d3bef25416d41cc8740e96d2c58582bede71fc326bc851df4512676a5eba5a0a06753828409eba20c4de1c41a7ee8bb1b9721ffc575e443e75d05c80f5ddd56d3d0ce7b25c56aaa1341a483d51a2a498c457fa4c455ecaf97030406b14c2868f6c8751c043874161a1023b9b89d124bf12f191c6e8719d0a7d1711f3dd818b7c6cc1c2205e6e90ffe53ee37e10f7bfc606ac50f80d59b3ae1829ac239e68d83edbde626d9113621aaf2e0d26de90b828edcc080764404378426567bfab7f18851d17cc175f9dc1c7c89622fac796be28008e3fc4a36bdce4e4fa73a1806fab2454a61b7ebe811ff49c5d88c06e856bcf3da86d35fdca7901d4a452dd31577f28864edb1b5cc6eaff9374527e9f24935fbbd14e383b052f7fc0f58397829d3a4f77bcab6ce0b7ad3a89bdff556a684493759af12efde789ec90f10c579b5af251d3341119a7b20bfba526b4682488a0884634bcd86bca05adece1b063bd8a095b3f5d22363fd5d0e1fe85325509814c34503f0b0f0cafc24521356ddc0a7ec11b9b0630248e40b1b2ced521b5fbc1e20471e811b8b4026a24986c9191b6d33590e790578ad21ffe4db2706cb1c1b856915b5b1c5740f874c6a13590f8e33d3228167e19d213a675c37f2f57ce0d010bc61869928065adc9f25520c9f3f4bb4f39aa08ede305715cee8adf797d0f179c3c020549658ccf323fbad2b8b7203e2c6698cf1781c943933fdf110599f5e8e7ab838fbcc56b4b8302a36eba30c1c2ae5a3454b2cbb1098f7d06c25d06e774af93888f0a531feb26156b7d18cb76ac52bc5fe3c1ee9497d1bd8cb8ea4aea9a76941b98c0c7658ad667c3bf204d31bc8c20322d6176885fc185257c0fdfab14e38109ab7b611f86c556e9455eb9366d8d34141e5baede812f19f63983bd9876a2ba483d46ace1dc29593ca738712a9b03563ac83913e260ada7b32f398286260af15c1a46fb025937cf6496230c4136aa45c148ae7a946b50a6716f37ce95f3b0862ca086015f4cf92ad7323dff4766f662f56ba2537ca4e0c0324e2a74c8c1e9d32c86aa927db5b21fe0aecff4cbf272bc71537f395641a2f7618549c366d5de3ad2e5f22af3fd0212f8d51c81b4f17e4d571c581f775da546fd438696f739018a0b62c14eff2a0d489703b7bbf225917c2870de1197436cd38c7ad41e89ceecdd9884b924924ee6238670fd843dfda6d5682d2781fa973c6aae0233847b14386dc58be0d7fd6d977aba99ad25b25c3db6f44090bed496bb2f536d2c46418a47559ae87df007ce2e03988385f41b17fc4fea52036b4528f3430e5398e3f955d8e21497fe8fb265bfd4a2e270c1673127a40035cad07d6375d3600ea76fb7e96c3d44eec9eee82954c3679ba9be9fe25533babb57d820d81d44e64c9a58385f6af460b58952920e9104788538f64387bb42e8f50443c8cf70e7b4be6cb701174d5753ed1dbcf9df30f2fa76ac129fdeb27dca6e1d4a3101683a28ac8022464e3d17f309d0ff4845833b1f0de3e30b884748009fb7bce5e94791f79bc71f487f053729b7117f06a348e03e5183b4273b3a4131a338126c40cfd106903908e7df43a3d351b9dd0b9e286a12984741e1ec1a99c90a2cfaafdf5652a3e1a258e99ad91e8fe27a5d082d7983ce889f75151cc459ebd8a82f8a9646bdc56efa08d013c0074dc37c18bab3aff203c12e7134f255ecf949afc3a2e5db329a6c3a72466fca1a149baedb37210adfa05ef534ca44fb9c2b330128e39da33eb2c65a551fdc2e865aa1709fd22f439362a390e0f044d8421281c69e9191ae9d9d61948b0ac8b1f2d9ca91cc691d51e08e262ec3c9ba52f9edccf8cbd78f1e629b23b71ccc34ce8f1c14a68e8e3137c36d409ef5e787fb65a59368af852e05b940a1048c7107a2a0094b0c672300da9989b6cee1b1b3706ff5913a0f45988529110b30d37d55c931f84f9888d9e06149042865b08d3c86df5f0715f516e3de0e4fe3d2b8ca44ed9028704fbb9387c251307d9386dfc121a8c76dd3d2175d9520218d21322a90a008bba09b92e0a497efaf02e807d0562556af6426b97993248c164160162dbb24716f60385b00119b71b93fbde75d9fa957db1ac99868c50376eac07ad220d8f31ccf883da5bd045dfbaf5373ba00505fe63f913c5670ad85cb3f2226dc078c55807c89b97741c4324a4a417c5c09aaa257a4c13e9fc1490e1df1526783711f1e0c7738f71576a90dd353119a1eb01d1d6db44b41be03f4ad5092e23881a84019645f0c13bb6f1adc899417994157cf4e060bdf702b0f6e0f45b3f41e0bd8cab1ee1a2a7026ba579397f302122177cce5a0b29710fa909b535eabef1d89d69dbafaaa20ee487e7069f2327c0483fdc4bbd8186fee1707012ec522bfe06f1f36aab92350b6423a9fb7e2c7fc34cb44ae75d4e7bd3dc618cab3fcd3ca449aa79300e32671bbd05e1d1825efd2df8c85903cd6809dfd2eb6913806c3e355312b38fdf958395c2b8d80d5a4acdaa1b4ef31abb2ada7091c3ecd3e61cb76356ec8b8d3aa370c05b24530fc0d10a7ade59bdfe58aa3beda861e1bbcc353dfb13b87a9d9d567f5204d5855e1ca71e40780a0fa429bccd5abd74441ae92d4c490ede0c67ca33a50ecef343f228a1839582406ccfa756cffc4c77bb0ce18250413940f0bf627e8dbde265626405222c47da9f770042132ebebe650cfadcc87761fa5f008d56cf56253291df8332b07a56d0e43f49716ddd2fcbdf3dc0a1c84716eb864f078b1bd5c5cfc1634caa0dbf9acff8c662f6721429b37aa60e3100cf708372a85ef13b48b6f53d08355dd73c623fa4bebf1398aeb5a2b9e690ce4acfa2df778bf5807055a9400f6b5394b6c48762b5576997bc0588b68131522c043e8a2b540f2130453c2043969d9bc9531d2a5ed5aa80b6ecf846d52622c5ffac57e23092061fbd4693b947f4b62025cc93b4e8283580e56b57eb9c869d0e8a64b8a7fd482cb3a983a4453d0d8df4fb5a6b8321ef1d4f418a685a55b0c07f3de102bc1f817df36723669e65e5cf0a60a6ebb5c5dad5bc71fed8e747f7ecb3b95e8dedaaff3122911ba3029787df552fe527452008fec8c93530772ace91a86386ee751e7a820510924e9434045622361f6cf25486c17cda0d734597fe6257cda16881a46c661b139100171d8dc711c940d260c2df9b65cbf6c9402c77798beb9b21f04fc400ea932bdbfbc69c6e68fc07de765b2d850297861de429b7b823771d311266d310c9c6596529f2071baafb62e6f15b76166ed613b1eb2fdb38b045a50a187f89ca7a03bc4a73c09446af2b7aaf77bc40d65433f852a988bfb67e7df4ffde0c927eb52900ada58876a1c1b03953e41d792da750da182ce549dc0ba7737473bbb3c91d99855859723783c3dd3ef9074f102d1aacce48517855e01b6429c1a8fc8345cd39b4953aa48a73bcdde360528243128c6829acef449be3f0ff4c8046f859d8fa0341891c602f05922545dc79708971824e353f8c04f189ccc3720288a21899971047adfc4dc1bd479cafd00da76cb4955ebd8314a4f4f2dca119220ea984d21fbe3933d370e1f70aef332193adf3ab412032876c3aeb6936cb8a60b70c97f9b2556897df0d08eeddd0d88da59061dc6f6345aa0c86f706a956857e6b3867cd5530d395e406b31b3cc39ae71e9e04c4cff2b30d2e30d72900084ecff0df62fe4423d86fdd2c05a6653162f1806d89574e8b96748992a0b4d491b43868151738368a5e0160c022a528c4cd4283121afa9bf0ee1d0d9aa430991e1dc82544c4ffe925d5e7100835cb0990f00009cf7d4609c8d8de828a4cf9eabc939029219ba5138a410b178ece8be217738f5439e31376e657f3016080a6d3916ccf23994882ec630c358ee896133ae16c8e91efe49acaedb42af23d2c760512caf6d53c8284917c7a298a0f5115c5fbc3069212d7f9c7b22ade8142fe9a992668b79f8a5b56438df423d18d646ca10e48bf8e6cf8c9e587a741a3267a0c9648f02f7120a38078b1477b5216da9c924874e73143ce1b4467b7c4c214931b98620a449789229e074c53c001fe208ce05a3366c55d7d80f3810d461974693c928ef5e65b902081e33439e670daddec81146adab1fa82594f7f5087ae160e9d1ab8195a8f17087b82773ceb5f9f30423285e473c53cb65db6dd2ca1ee7cb83faa13a9415c1d16363f28096aba2db0a72c617163e54f123ea66895977521365eb20613fbd10397514e31ec761cb4ded6e683465e61e5833f1f2bdd6c51f75d2c386fc521f6b41894ea6d55fdf021fd1a7800a5d145e4d263862331964201c0fd9ddb41f1422c04936b527eeefb68e3b59a6f232b264703ec1ce8da504520d953d4080ba8c0ed32d0cfd005cce0640d06dbc338d144829426397a33eb27f48b54122ebf5325b6025e23c9972a442ac85173ea05bdee97848e83541faf9c2b4cb7fd1c412b04ed1488ff486f402121ae15184a6736a809c140dfcd3f4ed2819ad43f9424516baf17b3b0be2bd7dbfa495cd9e2db9591d5e788391eaacfca74a3fd360e4b7ba65f75efebaeb40279dd6313180c4d3fa88a6a3203e805ac0dfe990e9d8fea66da24b524f2e60c99986f663be5efd38ec6eed3ccea39869c43eb241a9afc271ec8ada20498972bbacb599388ee0ff21bf58c30a6c8a177a941c703d2747e79f48d952f18f439fede845109c529d434c588aa830c98cf34f72f9373d66453563ee99875cf6114a44cb18973a50496a0db99e798d8097dec41fe8afa50c8ee65e4589cac6bd3c6399ff3a7beb22fc4e10746a04c67a93f61deafab2b27ffd0873176c5fb7f2bea642160344211298e35018ba82d21aa2c578189de63a7d54423e220a554d1bd62ea872658c0a70155b96bd5bb7c1510af57a70dbfac49b9ee2b3f1c33b4b14722b3e5ba563a1bb47752122e18040090001044c0239250aa5a78c44abd5b264376f46cee30bf63ab39e7da225d97fd1aa632c40b0fed0dc08127efc72766e98a69f08848889e594685dbf505990b1ad5f3df1868a26550eda3893c54b6e1bcfb7d5c4b6a1102801761a25edb8b7c4b7ab1a245b2b720760d95838587ac6397cbe0dc6c56c57d874b64cd6e9bfa4f6be8ab3a35ea979c28b3e6871553f14b4d02ba3937c02f8d5c58a6beb5bb79f21a5ad35ad5146a67149708cd61bc72882c730c9ccf2700adaab71a29251665577a1f67b52291a40761c6e1d8015003825d3ce26355e21672977605ad6ff84c929fd7c8e27cbb3d215bbf15399ec2f173e11bf6cee39ab9d594561db8133329cebc694593e9c5a017e683cf71c026741b7b9e169dfc0d41e2d17622350bc6ae41db57edcd5db49addd546d319d6fbb0d15e3c54867701464a67fc9a659694f26dd71864ab00fe42fc3f5347ce8a7c35d3606926d5ba1c8a102e853b966cdc8e3cce635c2e8566fe3647b6990d79b07c191f1eeb6ea6b9891751edfbbd074371bbcf27d0a15354887ba8c28fdb90c4a35dda6c79236f48c58943938b192b36b117738000e701b7efefda9f439f7f05072d238f87ff657119badb304972f448db61cdc8d71b6338e4a4e73c7c1ef5e52ff792e68ca2b92ad4885ac21ed35727fee18a027065b1a980958ba0c015a3b628ca26f83646873c4b166c5d25bb7c06b4714d6472debe5752d3c51081bb263f7b2c53a4a5b132025cc2287320f65cfc8707f31770bd1289204130f6ffe8fff1045631443618910f3b59ecdeae0da053fb420b8dc86f917f5eb5b630692b391979d3244f7a7b9eac304fb949cb62be36a234a2e79f6416b6f6d00a84c36dbcb3246c0ef9292d7a269378d66bc12513e27591701cf0e4efc85a70b82521be1b007df20dfdd80d5a56b5a0dee669de8df0e033a048fb7471173ca447a22acc28ccfbf5cfbd14a95f28687fbf41c9565f8ba0bf2656d571621194ee7f490a0eb5843c857b9523757ff2a86df364bbf0d89ba0f0444cac8f6a32768817efbe314a26df88a286c7180756d03538b20ecc0ee9b5637ec4bd26887fd8a7089439de8c434f1904126c68107141de59710be6bdc6bbd6bf4f698f9c5730f66a328b864a221373665ef7dc7df301208dbc816372b42f5a2e4a0934076282e6eb4d3f292b8ed75bf099738f5b0b3aadfb3baa8e233043d31470c1ff72a4df10139e323dcd5c3e4122d2ef62f0a91b752e12aef94027f87e3dbf2c0890e75f22734eda8a533ea70af7c33853024fd4ebfad1c8c8e7de2e740c3f6424987ba329109a267ad4bf670498ed0fbaa62feb9565ae726ae2734328a021c01c4f9a6491a6b5f8c9356f2d71cdaa071838552213abd76d6526beee5caaf1b811678eeb073e3e617f21de56a53099b7584a5e3761073698f28f15e47f147e1d37b59d1a8c083572e02c9ecc5a27f90a399b5b0419636df735e11716d581026f447dd96271b1ef0f4dcba89ae943c43ecb8117791f82686eb97e729f6c9c2dc39089484f1bffc7b128b39a3692731981ffecadccb97be3b8742e2fbd5184c118778a3297b7cb8e4ea3b848394a7c14875aaf489bdf4eb92e8b261c78d4c1435f4acee824e1886ffb17ac4049b0bbb535976bfb5d368bddd9800b23f7cfaef60dac6042a17b2f65cf3f8ae2d78c3bcd0af099b91dd43e30e1cdde81b7f095922583a9702159c0f3bac5955184758bb7a55f6a13de25ce236b9ffa8b04263c5ef1745180dbc23099529d31e71ee9c4d49b6337a17b4b0cb7673a950da60a893520953eea1943bc2580b1ba10c462871f6f3b017d6a43f32ef2a62a2706d759c23a42897a428b501d9bbe88015ca5bb08db64480756821cf0aa220f9229b8bc5b7699993cd8078a32aa83cfca928374288dfa2fae22883a2c1da2a9c0c647a43e262da897c1d39eefc0b4ead3107c0ef3dcbedec3601fa2dee631b81849bfd9f75d150b7bd70cf739e7e04d1317a1ae396dba300b668b037e54ea6aa5d0805ca904172490255d04342cd1bd9976ac5d6ab6d251aa26525b4f73ed6c21fd64153ea69a15d2ed3305d41b5c2411f4ca51fdd1c8b36301691e8ac82ee6484988386c83dd545330f1c662c4e8ee6c0570c7b7e091fe5aafa3146d17806a706c7b7cddfe17dfe89fb137dea8815470a1f62793e27b7be0fa046c8137634bca9f2f9e6438aaa187015c542634e99917bfd171358f38a4258221efa16e55ee643a8689f178b06c2e8432eb02366fa71a513b24cbbe51a8added6348cf40d878459b67937686468f3e0d97c815e367c9f81ad805743137f843c73292be24cbc505c7ec32853f416c88a0edcdc47e8adb592b35030e6850e6b44a99b1401953ed94a279f23400804fc2e3bc61285e23377aa0dce1a58db92272b5d57e25fbf6c09bed915442083138ceba595be34446980b792b870f02b89b5d460a1a3cbe99c8010ffd94b28c5bd0518863fd48e0f45e77b26493dc22cd5fe0a58471b88ad4df2a438dac40c9e3df72bd5958c93abfc0bce1e2cb908ea634cb02908269ed96038c8f2a025836f861b9d1d7eeb58891b5d9cecb2bc75c821bdba4238e10e56e92362192ec13807bb7cd07583481bf861bda07223a08467492ebea3563cece9cee7dcb8072f5beb672861e213502e7cfa3020a143fe4baafc92d1c872a14f405c00b46319a1c57badd3734bb00bbad7e952aa94b9c272edffe465f1c0c27bcf282048eb4ab1c2f1afa19ba2485e68458e83fc80a61f2f749f9e18ae04dbc809bc203319195bb9e949c9955bed0e0618095da738c1b32151758c9af10b1077469e066ae659959d2abab87cd0272efc266223019000b29c52b09f19880ea312eaca910d59104da1968a645aef85421672f97a4280440f6962230dca9a6bcbc78ba6382044d5b25c383e33c61bf2c9e87778315463cc0118f45b00682c31aa186a0c758deb08138608b835d36163a95c465955f7d6968fab9b4d11868042eaa43178c68f30bf6ba821f03c03f827d251c5a788a3e0ef73978a5fffc5ae5d7769d395a215496a48e1e4570590363a82e6b0514d8df13aa60164bc32a1f15ea0f7771abf77d1865d22003437cc36d293a869498aa91255ead2923331b8e5ffacd8e921c247420c929f8e5fc7406340d30c82129a10688557a69270ccc7b5b379fae6b58804a7d1d4d0a54590d8892a52d1caa7b67c519e5e85df56d6085aea4336419a10303c6046329809394866f16d5fa45841ca58eb360e766f532cd7df86cb85e923f5dac17ff78beeb6a322b135a7ae89b543f3136fabb9a4021fad08b05638a5c92a36552d977e51ede9574b4da28e15417090bcc99d151ac2337573c9c23606fd66d7fc3be02345f541c438aa6e4e74f2fbaa9b31e4d049a097b21bda129b20bba6aba758d97170e0f11504620a3f2c399708e2ac690cd122455074ca5a701f9fe55933407a82de9780053fd07d557d4044226338711a65604c482c2029f8f747749aba6c4ef9a4cf7cae7c2bbe50e209a06539992dd8a0f0c888f1dd12820d0972a9bdc451c002b9957633cbbbb34bb8ec80d8943bff6235336ebcb99d3fe72a7e9b68db2c6a29d80cc36508fe493e96d5d524060ab690279450a2708bcfb6042b986cd8c2b5a29a1cb68d5c6881e376ed436d07b631d657bbe35b2d6ec23d83ca7a0320c639836a03a28451fc7443eecbe4b7fb2cbac903c8f0b384b382b475abba9f636023f3772e874b5d8616948d20ef73dceb7507bb718906c5e53cda24f699cd8073194e982fd6f7396e935177fc43e5b13850732779d253aec3917ccb496491984a1d3d3019548c93b0f0a80449807728aee246ff6b9dce1d3c0a4ce42ff71caebd9b36c29066a9143cc421eb42bfaf618865d1e7e39b914696f7b80d0066be17fa038ad7c7d86ca11559882d672e8c563bb5ce682aecef6062c395497fb27039c9475b5974ad5e87b937189991046858b8bcc20b68559ec39c34ce119cbe066affe29128be4c8f50d6d0800eef946c1e3d2513c9a503e259b0bc1db185ec3a494ca13223404a3c265b6cc48b592ee425d147891bf935a3463e89cddb530fa6ebac907f9622b7e5ef77a815a71dcc214eec2d3a0883dd561e25fe1fca5c707b797e78a8e7c9414a2530dd703e714a09cc51e2a246bac6872b1c2576153dbb7a03977455b727281605930f4dbe76f586fa1c337f9cd79d1a7c41a2f3da01c3d826bb8eab7a2854515e76379b06720bae1fd12065137339dc062eb13cef5674d4c9460506a862d89017f0ebb91a8fe4f3046f35bf45542f234c4709522174651d8e42e8703d762edf06075da1e17d8335e812b139b83a07e7e4923e84444194f5e3184ca359ad3ad0d2b6e5fb40241a0567992d164cc12d6467c04c543b6c7f5a61c162fd07818a3e198e48312a70b5e80eeec0ffb4401d58f067b9ff05df51b0059ea57f1039c448f249754c80b05eec8ab3b39f4f6ec242d8a7fea1ceaeadb884f4f077a4569f5560950d1d30c45fe031aaed2d469eb57359f9aa036de95cb24fada444db8883b828c31ff820a78b040d6d93936348072fe9881cd39094b401b6b99fc5b539871ebcc0f7396f286390dca3f3a99e05753e630f250d5fdd7d6a420f75e02025758cb847deae9411ef197f587de55cd3e5e7b078c31adf7342693a2ebb76b063ead6c85646cddaf5231e2b88a930784242d0559c7c60551e8642c1a6d9d11525f1269083916712e939fbd558775448a081b15fdc9badc7503289d8e25f1689934eb2d7f7702b7b1bcd24de59b2680dddb072a19a04a760821118027c64fea43f7e94daea5148a0913ab693b8ed45b4b585e2559d8167475a2f7283768bb1731ee257e4c098a3d806f0582779fab4fde8d044429330c5b71e24f1efe96090e00a29a37d281ac259eee6f4c2803fc7702c21deceb09ed765a4edb27fe9ac9ee46ffd6e8bce14869ee81ea0ebeef4d1d3d1c6386cbdf8f3314c909cfca444f14b068addac64d422bbae61f2e36db256a339d0244a0e54d2aa37aa44fe57184c1733a285c587bbc7dc827d280ff76424ce29b8db3223aa27047386c351b8f40d05722866873d1a8aa9bc4b5bacc2b2e0ace0386521c9c2a3f5697b63db1dcde5ea9dc2fd026ae68349025de91824acbbd6f4b070dcd52b3ca7a7b7b50cd9537ba3d5c3daa385459419a0736c395bcc5eadeb0b1216b490b6f8b4a6b31bd3cd43b741106c803bdf066e8ec5483451f12f4840ebf1dbb2e4f55c167e247f9cd333db8ed23fa404591ab3dc88861d42b89c9e8bfe8cc25ec50509972d08b5e61624e8543e2e41022e4bcf170d1a4062766f41c2fdbe2222196504ee9440bbe77dfcaef76dff0eeacac01c66bcb6122e6fce93005a6341322e4de87a9d41c81080d7fe88e65f3723bc4e5e1f93e407bbe6949f14f53afc37ad3a28736ebc4b4ed7f9552fd1ca3242770b74f91080eb4fe9affaa10841bcaedeb7b80b43373cc4c30d0a24e05a9d0e007ec177733ee0e768f14b54364442f956d0ee614bcbed831b22288b7826859af626c3db3bac70385fc8bc29a307d6ec5a828ae4fa519dad720b1a15bbba64e91082c52520fa7008885800782e7faf46fc4056ebca4f08a2024d4837bf39f5957fd1e2e8604d1aa7c034caa0af3536da66c5d0594d5f38eca6b26fa48075f92429b1faa405d2d707af9ee53c8d190879cde7ca9dea6a6c0fcc90b7a21f6b402d1c709d8c4ef7666d5d28c2c27a4c9c6bcd63542add47367fdf4be2cc0d37b6f2d2134dd4253838883a34f571b3f4c116fa00d6f960ca3c082fef863c20af31d1b2f501449088d761e3293e2491a8253bd2c1a149fbfe1f6942085a13104b1d370706aa240cbf23680f43764ccb71299284de1a45fed48449f5451fabef08dffd60924794adc71a70a4db0ab706ede6ada1b63cc375b0a84a8b71ed13b355bd8664a685b71751b94e8fc034c709ba3e5e7fa7ae2bdf8ab895daae4957bceb90b92d514a295e1fe2ca599d95667436d489bcafec1b42114a377f62bdec16656114a6eff5510e535539c443d7569d899105338d4cc219a9a25e5295ede4cd0cbb35278c834e1396d91175640d1367bb9e825c75be57b6134ba2aac3df2537622215414db6f2e8f2319932a20f3ca56c758bf87937b61ee183bce74e150c00d8bc81365f0c5103d69f9e482ac6867164677a12b9accffbdbd6b714114d4fc7709da20e22fad2e209bec212ebbd8a0c889800f7402786813e81db3102f2b81fd90ea9a48c26f4e926154966521d88ba72d184886d57fdaff0ef2aea41631cd9efea4bf77a88b1c15daa852657ad04bf13c03be3ecce85960867c865fc41112a35f9ef481ef550160186e518e2052f25c6226129c3cbe35560c8ba073a5241e4067e3425f4a3212b7046e1ad42c10821455863be74aa4bc24504e5d7061890f73d18cdeb57ee94e9138526f5e9736120ca16fab2eafaf183916ad2179a059d44825aa6936b5d65b193a7a7d1423a166dc0003d42c106ec764643192c11fe389bb1a585339b3796c3cae69f631ac86658e02a633386424b6d52562cc7b8cfb6eee44dcf3de79aeb69e5564464cd1e1816bdf3358befdc4c9415a0043ee55ef34c348a9456a6f94ab539c93caff681532b5245535ba51ce2e7f3a6bf414c7d650134b448277faf7d3cd5a6612cdf44f9bf875b4525eb46b35d64c1f0982409e682682a77a0f2f97763dd5e675ea6e7c2f86d5120d7a2654c43f6cc7aa77427984af87f3acaa0958a721a4848337c5dc7570cd04d0d0b3cec1804cb4d1f78b7b3a6a89a81bf7bcbdf41ab6164a96e39cba54edba50b1659fdd76e009e4a5639c8e4900c6b7fb0be2e64225ff0e8291c4e977ece6feef4cdb3ac041d03528658140508dc821d7cc9f960f698bd5dda4e0e39d9ab1d8495e8d28369e2500e1999c70495616b7c09b16f052e220a297f06562a8b037cb433f37f8997176d06179921aa74004d1f5a95eb5e2b75761ec586d27826f32b40667a42c0f307d8681f1cfded07d2ffce63ea00f7621a3a11977169759d88fbc7fc676eb6687fd2f85b2f93555811407256e6144cb11e31416c61b1430f96bb25ad00595f85b534e21bd3ee37d02f302f469d0b694245ca1ae985e180a15ff184a463b3a3a6babf63809beceaf06e8ef0f95936bad01a7ab52b7a4e7fc0dcde075ab4725d95c2a0a7cf01295dd88316ce6e7bbdab456660d4b544301fcdc7ef27a8197cd579858dd78b9e38eb8fab2228300d1ed476b7bad94b0067397b27c40538b22f94c3125603de0aea25a063d0e790ffda13718f8916c0c1ae5eb627e2108ae5c15a1bb7729665cb27aa4155b62475ee732672359a04b21321c3210ba5b173793738b239e3118b995be860a0fa53a1e551eef997b71989c8469b51a2c35289a9d65ac8c429c59b775f5e70bebd137ca513232c95a8f16da9b8dcff36518e4109e68a8dc5fb0401292e5f900a78cf7b9b3b826f6f88ced9e9c82576b36d47fa63a5baa0a8844ca43c8b323ff7d214035aa4c4fc5c2836588b12b9219c7a929ec59c131a1707b2d1a07a3bb1944989a35e4e059852784f93f8e85a4c0a1c6a82a71c7023e44edca9e8d40acb9da0ec0c678300c31dc12e50cf9e0941539a3bb1d2de8fd8d722b1b06a27e8e8dc89b54e456a3c842485da0d929252dd89c8ce968b9095cae4a30533ba3b81faa3d9523e19450fd44d025e5d6863201fb4c05098de17b10253c0e5ba199aa0aa9487c28287a1896b706c45c87722a687e02714a1e24867dcd411659dd3611cfcbc890e9ea0949e28eff0c47589b28e8fd2fa918b4b1ae187c0820a34075434154fd089d4cc9bf9435b4069fdbac878dedd62a5bf573a5711902107544c47b0673ce1ac037b6298cc83de62e2e3bbe5d4c71337a4b2837211e19b5f04b10751b3f4aa3b633f9eb8bfd98b5dfd122b5b1cfae0e572a9186ef40de85aa962e95cb22dd444e44b71919cc25514948c352e4329953b2236db7e4e432d36c09df1446321197e92e29345145578c1aff1fa48b78a244fc06d4ae8f7a02a147d5df02d825f7f4eab56d2e2c1c746233ff5790b04f168fd1a76b52626f6bb55eaa56ac942a47b6353dfc18a5b3cc74a7b4f8e0a8359365b7767e609cb6a3e9c736d54ba69d110bd482c7e90d2d01d812fc35ce1a951c4d0c9b878183f8c37c221f4cb506fe275a57d805e31ad9491fafcce962e10d1b500373873144a8ae7e40a930e7921bc1390976b9b85070975f0cc9dc69e338441dce10e322b23108616d750e43429b35f67d2938fc56930400a899ea4cd992421001d13dd32440a822f5aaae1e8ddfcc9f67c6be635459e547a44d62909b211430944f00c76bd3a6387011bcbd40d9db8c9c1bf3b56d1763909c431076e1be767e086a7ff0c5a55e607070a3a18e693af5ab524ac2f1f5260f619a5d20bde0eaf18a9e4723d1b65c46d54109d9b50e2fc45270e4e8ea9f859e5d6b470402c57f1161404b7aaba27076eaf655ccd35b900850271e69a5659877ff00014e6c8a7510fc3ca8eb5853f5a73cc352d4796c35fca5d62465c63ea3feb3e0d068cdcac149f0fab0f9944254e3423a37bcb270db718e69adc7d9abe400efd3067426c6462de4e5c986ff26f2043d1d254ce3c2584c597f27ff206379e7fa84d651bfd5e704d6da3df90214624b3fca843aec965fac78f3e2d44daa26292bc25266c5e43f4897ee53ed278406001d9a64788546794a33aeb41a10d9b9ceed3cbc059de150ae59b554b991ad4219a53246ea8f2b9af2361bab54136af4762df34a59d4b6e3059ade62b996fa392718a739fc28bc1a80b89ae66c5e3a7eb86f06022ce483ea480cfcefdb35942e304819ba7625f15955284843bdca96ed4d7ccb6e958f66f02c6bc971e129db0cf6a5a2049a74fc2dd55d0a613087219c9d663b6f11b7674c38e848c0c5150eeaebe8c0b08cb6f984c599f86c6aaa2e3f5899936020e17085b709ba146b8989e19a9a9322c9bc10723f9a20066f7c350da67504bf1b463e9c45ef4125e61c7e4721c03fbcde4fc987ed995d6192abe9759c7f0d87123c85d65c56cbc03a312c56d3dfc047163fda008eb6718d4f383048c703a48101ae59f2efbb4e77f63543cd9ed6a060983a55fd1c81cf76d9f315648ae0f3bd343e13c9a8723fd93621220e43f9fcb1d4c6751c0db701bbad17ad653c48dce314e7c6892ecb931e5e693e2e40ae404baa55f1b3182bec8fea4dd121f274d50063852f25613fbf3f0f2a437452162e0c59aa18d8aee21b20030d246e56a5341d553c425f84eca42608ca18d0ac289dba014fa8281f7961fe68f4537bffbb9a3552968a312c3e565cafb6b18e73aac2e0a626b6c375eb5d7e7566203dca705bf9256c80fb5b74ed69c105cdaba36d2a6744200a0a090da2b8f9f0b59e0b7acadaea350acad8435af83d459538aa2fc29677a70b9b55e74920c2aa9aa461c5219d84e01804ba509a9abe9de75b53590e2a1581b9284d2070bbe2c0580e3b859b709e3d6145655ebb49063c68e197fa8a07bdf382359efab5ee0f27e95001282cd15e2ddacabd173a1d20f3aa9c39a3053d3d7dea2cf9434af2ca6a46520324e78cee328d3270e50e047802f892919c7ab4b7a9e5fcc50f543e566fedabd4d1a77b2883bd6d941275688f72c938a584dcc0e6ee7da37c00541beed543d898fd2749b2694e0b39d3a529a7ad70fbe532872529a34d4144a69f2a2f14dbb639f5c6ad33e713f1d3050f7e28e325500b9107bc98cee5f0cf18a5d844a638c264aeaad971f74548a1022862a7c5b3fc7bca48df86477136f81d0c9d71d2d865955a684eb30f7304b095c927a2355db19ed432972b78a6834391d706ddc64969b2003edddcf58b618e1f84ca785100bc350b1c12bc8fda894e00486983f318c04458fd58a55219481ab146cad924f1a51f668b4129c7a3e6a54253f97b1a09a28da4d606bd40819bf10f70f042d4a3ad422f6f5f511a0351b2a8e6954ca6db833164eaa75aaa385e06ed3bb6a871afd1d6b14f2f2202bd7c6260bc52c3aa779826ab3405a775afd247e941ce42721422c27e9c9752a1156179f71c65400892afa3f600e5261a7672cac10827c1ec497c4cb785d6b70f2862c69ed72b83448f51410f6851265f8aa1af84379b47de873d4bede8ab495f641d75f39b62760721abd57c802e2cd675c1033013a049dc68bc165c3298e05699ee6310e5ede12dd80fe087b0284262773718518866fe25098053a493582e2d80b70f7d87d02a169599291ae2023c61508a68f97a5d9fc7d1a16b13c92e24a9e25fe5c216a5011a63e06527fb9f27696c892ee22a1091d50552ccd602550393f595793b092a0af10ffcf08c06942821a36a9cdfcf495ee198e97ab122ef3917672c62a83e0d650cb58626f26801d4fc74637cbc0dd0dd7195abe64b17e376880f3479f1ca84850ce0988c01534d77b1ce4e6ba30c5181c091c74f1adb6c4e3c30d72af41654e2bc8085aa1338e2ce7fc6cb28687c25a612a7950d3b6289da3d95d6213155b82a720942e0cc14cca1a23d7dab98904e41283b68d03ee6cfd2dab1fef7405a052431d74956125a60a85e45dd6d35a07d5b9f0f059c6a263677ae377db08a95c5501596dce91858381677c5563321b83bec11d0d33214f3f7fe0b2e933b961928a13befdfa1356d6d2d8c2b981a7cfe4eb8c58f74fa0e2ea4fb893db717bd82f082423e4a1752da957d0c0f4d8676aad2e185609148df699f640d0d41420a3bb4aa6fbf699d249ddf2a191d20e60ba1726fb41f50205664d6d8f870afb8ad3cf3b413f1e720a8e97e1946e290f82a59e611c62d6290581115b32925d32f660501bb1d54407ca85f745916b5335a187b8fe9d03830dd162cc3170d19df1e8fe38c3d087c647c0ecc75e8ef44847585b51abb3e877f9da1633b9a260047d6211f029d45367d45e85224e5a12f42162e39987a46b6d2c9797eaf0f979a81f82a549e7238e24d289bea12dbccce6c56573963a5cb495975bcce735bdecd0636a52572550012b0960816fd4b1fca3b8159709aefa1c2c38b4dd81b2ac8865a3d3d5b71f13202873d671bc87751dca074067af0937fc25cc32f1b4a0b7017bca6039b1304e43ec93b9623905a975322dd6cea09ac5cbaf1c0c28d5735c59849693bf250a7acb06257884757543082e3da5a04998c9a554fa46c49aa1a21c1f6d5ef028200f9e97efa46f11ee29a54d91f94dc1a64210c590cc100baec611fd60cb1874760056f4a5420095d301a3a0ad2cface6d07046619b7cae87c078ee90c62a71028ba922691c493594193dae56fbd91bedc840a8cecf6d28145d3d500a9aa95bde54e522699524a32a60091008d00e9aca6cb9f552adff5b5fe9dbcbc50540a90163c8830a1428c4c0a9ad82a95bb0e2bdd2cb32ee8973ffcdc74cb1b14156e365decc80ed592150e8e153750313a3a321894ac789082e0a038a820f5c06c241ba0199406990c0aa3eb8bda6f0a066a10f1aa7f0206a012b7d39508ac126c266ee154e3ce68032f0e2eb040a1305163eaf1c3c1011b18374d48dc30728480c6ec6f69ba81379f5b2077e189dd439838a93e792801ac99b05f3fd7a04570b664d2e05da79f8e1db3eaf244f5a7ee1dbb1c00a15f432b2dc159c8e4918a4a4be6d9b1e1223d2c20527c36c2a4aca8b5b4768d57b4dbafdf2e9b7b98fd948e56ba94dcdc118b32aff3d776efad1f37cd7e98297d8a637e0e401202920024ee244f96f1cb972ed535e8e44ad3ce0f15925ce221536193a3c3d3334457312fcbde893f7bd5fdb33d2e26637f616f977779b1fd6b3d3a74d80f45edf82ab1e213478d53e37beb02217cff383c0b7ef4f7d6f5509fb76057ecb62c05a32b35874cf689d0dffaebc5b33d77452be4fecf7fd4e2871bd6ef345763e4b09c66dc53d05f6da18fc8255d6843188318230d85d8b8a3c2f8dedf8a8a41918b76b3926b7804276181bafbfad2b017b501c9fb872e033810ca06d78e0d9d7a1122aa8c227005204745e58348cf89c464478e940b1a1ca99a53cc341b5c3a7614b8aaaafbd4578f09a2f5afaaba0fd33fa6bb3f5ed91a9fdcf74f9fbed76f5fdfbafdcec7d0ad7e870e79fdbddbdff773f1d9654e4008200d2fecb5f59e8d25c752bb77dfae5d7e9fe50eebd6d6eede5f113dcb63a9dfb5eb6cd79d57c213b19958a9e0068534ac4358762a85650c43740860581c100dc9a37116a3308ec238ef3d1912d1032945e3f7c619001f550d8b69a65851b6da38c0efaaa9be9aeec95efc1bdd303baf889bb5d73e21a61923e9bbeeec6be160d055130fd298fc2130317a4b9f29f2f34af928284bb8447523ec67f8a3e9ca4f9fe3e150e6fc1bea995111bf738a2e82430ec9ee039e251be74a4e439767cd0f46595d0f5eb153fe3210dc41623f4aa9522dcdc6446cc35a3c6b6880c97f0c7b54063795aeb20893fc7c4344d5453e4e7b28f26c33acd73aaf87edd97fe38180156e89d3002f0f7fc7d9fa29cf71bb1228e8904c281dc340b8e298ca5d642a45a36e7197a0ade29f0359d49ef52d4a0159bbdfd7a6332644334578b9ab1b3278c3bd34d557bd798270a5817dc5d6db42137c5b941492639e4765e5cbab7fa0b130f914aaf30a9a468128f61ff9e1cdfb90f12e0bcaa83ef243f42f6604e26be17342bd4e5d896716ffc105eb749a9a2003f0d9a15cd7fbd41e2365d5286e208ef44d531c4248b58fab2573c911c608a4a5db5a14a421767a048c4899fe0f289811fe8bd3de2ead7498165e207e46c6150aa8a1a5513079f7fe062d17ea80a53223115bddb712233cb15479f597c164c213012e171700ca0e5b6d23b8c53a505e91d316d65034e3f1cc9adb90d90eff4f245b7d69b3e5bbefd51d97f175a7164343431a3dd6104059551a13d8358f12d910b138a8e2a8185435c1c1ca1f0862a220b28ad318c915276062891d1888af198ca9f6080a98eb2dd438a976fdb7f43840e1f03037a35cfac2e64fe5d6e93972ab5624d7a7584bcd3a48985d7708b44280556856a0558349ef04a4a8fe8341607b839ea53152a94171bc11565374142e785efcffb0bf2b543588ba912178a830cc72f278b33858b87722868ed1689c46daa97661199671c1ae9fce7a35e550fd3f5730ca4508abf61b9e3599710513beba22effcdff088d5d37d32d72909c1be731b736b92e2d112783f0a50b7a54bfd408b41b09ba4be92157a8b9c52203b1667e06240683854211d6aa46fdc416f15fe2dc839b8ba01f02bf7a021b58708e4ea6d72bfa16f4bb2858a96659c2534124746534a20df86a7e8cc0b8606ea52f870eea8ce484459b0e53d10387de327623d77cec3c61e09f8a6e39cfaae6ebd161127c6b8e9d679dd634d24664d845106d0a4e5e9fd2b2ef6c075b6a56fc8fb0977442fe093d203ea256b459ca6f3093fe6bc6588311d0d48f719404a4a8a9a0621705fa3b96d31c9f2214c514626ba348c87073b00098cff47c937871d914f7eec4f92369e6d08801825f66124c46294cdf081ee20f3793140d2538727d630e5d74c07f823f27dabeb118b651238617b4439140beab0079b30f19fca3c4a0012714135069e8e6fd7c716edc6769648f5ca629cae124ebdab22a496abe80c1e29872e09a1b49473183ad4c36da0091f8fbe26f19fb29a0ed0744565d1143cee8251bf232317cd93b523cef9872d1b370f9e67d38b20a18c6f6f2e029c2be9c17f1cc234ae484b8ce9c76b4fe81b0831eb1fc7093471a5fef2811c2658b119b84d548f6f86494de8187ffd4c5ff8adf969cc8372157d32700a90f97882b9fcb2a013dd75f2d8405c9ec06a172599670a0b3a51ce5da280b6831003142e68175e4b7cb7d5403b1015c42dfa36d825aa04141e62c80aeb59b5b9eceaa3c003e01a1a068d850909cfd9bf59637d28d87822ae3001e1bff575f3c26fa577cbb6b22ae9249094804b1b48c9f17a32803dd2583e7b13b60515786290dc1cf6d7dbf9ee5691eb55a2f148aba0b5c5be4bc31dd73ebe84199b5914a49f743488063e94654fe25a33bce19cc61b9b758ef39547b7f7a6879c8cd6da17868b6d7863c267f2640f86867e78a27357c7b8c19bae9070f58940545070ccd5e22cacace97963769e351b9d310c1fc6baaf8282453493da705bd91b69f0519640f418936fe094c6892455ab93f387d8834e6f96bc77a204a1b794078b620b4e5ffa03160a76b2c6f8f9ba0668a076310cf7b9086760eef56dd50aa49711bdc285c878dfdc1309dbfe33a6e331fd4fb79700bd69b8ebe217781085e4d84f4e626e369a17e60bf09040956f3e60069a89eda25387ee8a760403ece5a072a9a92c9520955d1fc2bce05bc8bbf37a9232412b1fce66d73ab81acae67d83aede2bdab44d9cb512094222affd593970f60951632aeeaa2f0685991e4f8e1a3c1655dd8fc7e41f805f37781de78c7af0cc6fb763f2b07e387bddc2c0880c14a21ba5c8644397bbf6f4d4b0544b1f052ef024bc2b43cb0b43e09315a998db680a3b2ebc0f1ed45832fbda4002d065ba3a129b8dea614e3028c095755832510707d692cc70de50a03c50a2c8c77da793d9af12dd05edefd3c114f8e948c82e422e01d7d42dd8da492227478271f2c9219904e7104b808d063fd0d9559107883d1bf0421fa9bd84e7245e0194f2a5d978556bc112ceaca41ccf0a71b029d6f7ad0803b247bb631fb1982ad35f94d727cf1f2fdf8c9df46b1228a7dc3295c22ec2766c91f1a5f3dfdc9179f8eb16c8acf6a56bef7a5d83efb71dbe54a95b4b3b72c993a2a12f87523ec7a09b02e12ff9a30735e527703740c1695189ee68156a881abfaf139b0f9b11d910c2710fc756e765ea87bb6013cc3c5aaf50c00f0acd3f6340a3b13e72dd111f35687f9502ef6bcd43bb8e3a7180e56a47fffbc224fbf203cdcce07eba0a18b685c02a30a40325b4d02589f56ef97dea03b7d314f642e6ede7bcf37233a078c24ebc9c36c4e0d6b753b88df12a91f418f3b9b739312a40a6eea593999a98666bb562321e07710b25e3e6531de33e467b8f35adc252943059236c6d8ee2dcd8e606a2ee4540b188f25904151472c5641f6b81ade50b9245dcd16354027d5f7a0ae679306da987b2ba0767bbd48e3ed5b34cd65b24f71c3ecb1cb4ea6adb1f9875856791785a2056a857072f80fbf355fb4005799a480cd2a6917d2c31d0c4bcf0f57db1a4bb3bd6add75daed19aaaaaded4089c097f654855cb3dcc9e08b7c8386be2713c64cafd4f9438103390e1572ec248ebe41704931ba32e47f0d5b6d26593ac472c309b000ff8db74160693b3fe758f56668500cab0ced475dfb8c008ee3e83b5c46c2885183dcff945efc488db5e7023f8a74c031c6335f1adcd74dbfa04064d7d036878f526037d4e127f615867027db65bb902665450dd0e724fca7041979ffb1acbd949ce17c778996488b87898a90242880cbaacded7e4f2a1a8ac43765431bf82de4fcbf3c1f06f4aab208a86d11d2508b476777cab0582349e0c08e2191e5c10e294f12f4d14551d4816a338b2cf33369d6ccd8ebeb8c5e211442c85c306b33a9b19db53a1882602917258e917e39ae37805eeee3cb9d929703e4d8d8914234b1ae75b7ed516b1239b81e8605f7dd2275d70f4f9ab659a3a1a41403a5ffd95e115361b033b589e5b2e8488c77d2cc95212e0ee6cc2c7ba07fcd3b8593728fcb42316ae65090543cbe69089b087ae10cefc84b92f654b0de6e9d288792f530a5e342b410c56966b1fc3690c846db26542e64225f398b6b95ab9ab9a5057089486527542577dacc9718ba4de4022e694020504821b8269c922e19ddebb1ea7657ca7f4c3cd1dc54cc8934391adf244eb26de672e861f24d93cc9d4e988cd71fc004146fd450c7cce4bbf07f4a3892f251e8d962cf141c4cfef82a4271fb4e878fb79c787f427b6f18795ed636a5db08b39c16532af764463559dd95e0309ad9bfaba8cbb2a9e2ee88e177a8fd426bae313cda85863979883adfc2091e9538e5e635e898e32cdb2aa353c40a66bda982d4f6367ba48c2c21ba74d7383e3269bd254cd0258c539de2c42213a741dacbef433a135258bef5c8489936699d8bb77db473b42fde698506756e253d46fbded7ab3e1b565678f3096cd33bb59e917230568f1c673404e198bd88019de1a903a6d6fcb2aa78fc1912a44a78e0e033b82df72d3abbe2484b8d243aff7efdca13fbb99ff61cf496466dc0b0de8831f7550b9f4700c2e807535568d7237e17dd5e7567a917a14f8124223d1298f96e1b0dc094bbfba382e569e4f9ae8c446e78c833145c3f75d9e9d0dc79651c85f1a0b500db886abaf2d6130795e1b62d9c5924eab33a7ed194151b390e7f70b5c076c1a7fec94cfdba66208ed4c06b29c6da01b2910383b2c3ed40b46f703195b0a8a12fe115d5af915fd514557167f586df8966135f677172b4f1631236615b10c6f8ee515f24a2d5c70eb42a126839ece508b248a3a6ecb67aac5cd83def1982c28d9ad3a979896daa5f18f1939a831bd3ae6b5587dd0cb3825748cd882194dae22f3a5a896222f54c291996834a87cefd1eed6033c3800665b532f704f3a7c0fecae1d5a72c1f9ebf8cbc240ad64632c31343415c7b00c27444f9095ac1351f6253b2599644a32c9920e4f004200400077777777cc1863c4fe783c9af94891a948b5a6d1846e267cf41cd36365bbaa6b652a85988cb184b42725215389c600814b4b5b00292b516e5094480027fac020d988382f2c1c951628f12058231d2aebeb92d4cdcb19636565656565655decaccb5dfdb33f99dbc35ddc8f8e57e6d907d92fcc3cbfb41b49a3b98d348d9fb9d9df1b74151020e5d394df366217c067ee029920e78e5ac3e87c0a7973d0192cb5bb784f810ba497c2526aa10f62eeee2efb2eb35f5555552f95f3f4d773b26ede8ddbeefbae376f6ddbce589b5a5b62cc1e9b6bad557fa872e92a4d75b19e613c43a95bf376d7dd1ed411f382cf0c7efc53d7c9c077fc8c50225a2865b299d7900c97a01211630a6d67aaefeb38543ce833080681a3d302829abc92f3ad0780dd32bd40aecc98538616e4d1489d6c0210c622331fc00ecff43b80bea427d0ba6418fab153cfc2cad4b60a633c0ac5f9e31d15be8e2d56bad3adbb54c252cdf7a5b217e3028446bd0c525de5e600e57b2bccae3a17d093a7727cef44c82b40f21ef9bd7642d32d31e40d18abc2d2110f14386b50f11e5513c7234c7a4321a90b677c545f8e3e02692e530d4fa83b91391f20b47cb37b4feb6a186fa48cdf0895ca6943fd624f13c7304a2c71fa14a190a3658fc482bcfe0bdec199f3886567e21b96462fe85953af588a341ccdcec7e38371428a1fa95d64416522e5ae768afe19a6b2dbf3e577ca7663e381981c6f07736dd649a5cad8ba0700af0a6b828bbac083bb0e93ec157d83af7785b828ad1bef0ce22792169ae75ee9940c969f11f5b398affe5b4ad4bb52282619b4ad8feed515a8e0ce7d741710e64f589bfdbd251fae591aa46f12fb44f699d2564cd116ab068c68a61b2078270d238b34620e2cf5a0c821f4489125debb23e8348b58dd646a321142f1708f1236af072e4ba1a45c4db2c86648fac0139a91a5beaaeb42c9674cc0004efd442307a53577123ff54f12d0f6d2c6fb33f48c42bc50a919cbeb6eb29704331a4fd94041c4c7c31c5ac7ca549d8bce8a66d576c847d890eee6f0fb3b297eb7186285261dbe407deac57ba9e2f657ffa1a80a0e53ff8851cb2e7ca7b510133b9e769b32889925aa4afe5e5434160616cee4e1bdac884fde6b89f4ea8672e4fb3a8cc5ee1ead78539787db474e2f7d4bbe0d08d7f37a789119db88506971a3f20ecf91317aa254f3501862d74b42920c8c4225cd28d04445843891a22126090f917c942f65e47dbcc14f1bc86ab51130c477ca4a26408a4c5a16719e9b20eee6ec15bc0d9590e9b7e4976bb880e139718773d4616205ff2a92f5f71b8430fd9eb29618bd51f1038f71d50614b6003035a79367506e1127c6929e2799ed599f4fea03ebe8d394cf84f659b518f2ad79f7f07704e8e0ec19e94fa47d8787c1430ec0c2c889ae644e61e005e82a7e85a2dfd962ba08cf10dc9086c4e76e6e59195d56c7e21e77dcacc21fa12c115186eb97a84df50f770bbcb1f40ecbb3dce6756b89bd93b96c29566fb8b12fef59406c2b4401b9567492303b48d50239d4ac041a4dd762d4770aca01750e23c4b52484077866e1eeb36d16956d5e991b347c61b291183d33e28f828476526ed732118e77ac5575443ef316f331b0497f36ac46c738f00d9cd24cbd7088f272e8ab037637636e9cff58a6a9bd92bc9883c20290ac15cf686a583268bdacb4474ca426b97454581bdecb03d7e8e9e5634d8c13738b63b6851912c9af6b95a18424202f98d17713bb19304e4e4e30d73d8a8cb9610d2f5465044723da7d9b02226d308ae334be7efef8cbc7cfe4a73794aa0f109d53c2fc32bc6371d7a3a5b660bf8bd73135a448cd64ab7e24602bd66d153ff7c2989f32d1567747d2d2f2f3d510f257ef867a5f7b6a8f27d4acb415f52d3fe5e570181afe4c09f427b1ea0c18a2017eae8c008c43992baa87402fc262ec910e850ae75e0879c4b656df5084d07335109933b9e1590cdb03b76dc97b4df21494d23ee25af92caf01353a555d112a1d68c1012f99efe40a10027807611477f8885133996c0f15b64ebda27fe1e931508ff662a9ae7420b8329b1e67a0853756c288663a88b1a07ac8917b86075a7ff8116ac4c4d5af7e2c82637b96e5a030912dc9f08a66d4fe5d95ba4c41db120b4840b29a9be65c9bc830d8cf33885ada9ee24587bd3c9b3f821f122a5ee586ba19ebc7682bd7b21917a99c7dcebdcefa70546292f6bc5ea0a4716acf28e862aff8ef108659afa718f79b405a6e8793910971dad01da80d89f26b4cb7d74816703db8b67a2e47f7b2db9dda30b9ef80172ffeb876ebfa4e6a015f8ad818129b22cf41503cb6f82d28e5c41d1a02552f376ee78e2cbf7d545927a1ad2e1a3f0b0c208f13f916bbe8a5891b0034051cf5ae8e3f78ff2478ebb9368692fb0eae6fd48fdc8752434ce7b7372130ed0ffc3d003a446c0c3c3055d201c0c084a1082a34c99a4b1154b00062d287c8b68994a6b893dc6d94f6de494a19c0aa669ae408000043b0f94578f6ac55320880b1d608d901d400b900a4000b83871c1034386f4e206271b67177b0e0c0485bd9aa5999ccca60b840e9574f9a30115bc26d91118080c70307a5f24e9c9ee86f39766bd29dfdeb9e5c1bc5f536aad6aea7cbed7b19f7b7a9895764fdb862d4e9fd595a718044c2110782419cca9008f1c00f063ddc36ebb3e0c6c9d67a7c2dc772592ae05f9c4f98b69a19953ea63dc460e6eb33ee040e8a73a1f27ed68cdc94d206a0c4c440943e95c5fbff8a05c4c749c92a92e4e4018a65876587c98014160a3a2a3a72ec30b1d480717222898d1b372a027200b841600d2850c10681002f3ee9e6e5a4706ad5fa1b5b1d7eab46d473e8536b35df726f6b7be44db2d686ac136ba4bb0f2da48f15d27ffc1fe6bfbceda9a6254f50d2708d9dd348a9d35619dffd9f658da68d23d4e5c831840b2553f7b2b177a8613a99e97396c1850c07a54401878b878b870d253e50cc30cf881021580826a291785a0910253a6c70bee8b7cb64681fe3d06bbb6078df3dc5c01798140e0c8e38919b822b1335d3208602215f79161c0bdc7150fcc2c71816e40bbd4eac65cbb5f40806fbeed9749612a3fbbb042563cdcea673169d45f06543f76ed66f5ad7cca2f8cf4ce2361bfbdcad26e46797c565d142cb9e9d5cdbb219e563db2caed41842367bf7b9b34959cf5606295bc8297bbd6c424e512755daf2991c6ea5f357d2ca9d46df241d6227a59391dd5bc9a36edc8ea2ea1445a83bc95d0a2a7c36be86e3ebfce9a117357eea7529c8dba9199753640dd6f73656306a4f7ada4fe76fff42ef517b53dd146ebb4dd99e5f36aaa58453be85bcaddce437e71f29de56edb6b9e937c5a75ddbe8d321fc29e54bae69fff8109a9e9f261dd538b677dfe771d2d5a5ac9cec76363d4f6ba4afa86ecd1a6e1b8e3c31f42d3519b5c6eefb2686cfaed420053da226a9a396f06ddbe66d4d46873682a43f8e209c1f9772cf9ea22654cd7a9b6e1ba5dfa6069b69db6ca684fb1842e849f6eeb5c45a326f094de72463b27a7f6f25771841cf4a8d3701829ba802435d3212912429489a03b2308c4cb2304a83a9202549410712cd8e89489282925486dddf0ece08dd360361e2030b0763fbd155c8c0f75cdab23953cfd6c74ad7d09e1e8aca70a4f8c13c61ff530f80120e4f7d3f0299c0ec27a3500c882f613f5400f56c1d44f9de57e318ab54a11c026b19f4c23f888721dc0d329d34a921d08f0315be1bb76100ef5da6aa2e4006ee219d5a667b940fbd4ace78bb403ec824021af66e788d01ed440a48cd0102cb39901330ec1a2a2b22d12d8a30648f64308cf6471d0e35271e8c2a48b4668cb8f81b2108d2eab0ef725a4944288b6a93302d54b0c144d235996e903ba44bb1e2c81323fbddef0a630496a639c1233c1a1a372b4920e690199454ca659dd805432e86f00f7cda0c9ca21de0d075ddf43f3242000b67ee5c07bdcc921b4c8ac4c00c954385dc6178c2858622a3a1c12c8c474f4cd28b6cd540e321678a9fdd5803fa32e75f74e6726364ed1e46286e20fafb1d08fe8bd6b82a4d6fab5dc6fa04008f92540a128dce01a9a9a92a3728f0d40e4f9bca5a6024b13b0d860e01911b5306811dc072f5083e58313e65febfda4b0df5a1d907922d6dc0ea83944a090b61eeb34f498680f12d5a3f85eeeb83cc4d4f4875ea44a6ceddba7c29bb51d744f5030a0ae10586645b15c51136bcdb0e6f3946a043ad244600fe60b2db31943749b46e780696790bad60b2641ef74bcb2915c5b02a16c37b4149959227621b44f0cfad0f244a23b703e6436a0f65319bb75480abd1d5361d9a03086d0dd4539db87e7dc4d0c1008106404bca761ed1101d49afe0ae749ada8510f1c4cf45839723585d5f67c9e61bc6ef3ba13d4495cf6471a085ab9be157f3e804b2d27003235dd20f13c40248c97093ddd7b2f0f28813b65734e5097781f63d2daca8c3cb0e95c714b259c3f98a1d555836f0bdcebbbd15ba6894d5aadaa5ab302674af921ed1c00cd2a45f60e01f649d2012201d1aaae8ad697a47b93e7663ae2187b4bdafc0464a93bd10e925823c1bf41b0a1298c00b39794d4e243421a0906227b957f738ff411c4cdf2c51c3c47d36138cc5fabdcd09d503591362ee07d65942fbc537154d671ea68b5b131436f6c7a8910f3d4daa94a386b38e069b2e421c24909b42ebe118fa8c327646ebd500237e3bafccdf60d10eaa357490b78a763c4220199d9626b5a05b1cf3aa8ad6a588a2ee63265694b391f279882041df34e1c494cedf0965d3a68efd1ec7475c52bb831d9bcdf7d468a5538aa29c9bb723cf8b1f1ebfb947e385bb98b413d1e72b18940dcc9b060da119c07c3a754f5723073316d7ce8f012d81625720b30efe1a7bfd302027c78a31763c250aff552635fff44c9a1052c8b7785aa2e9dd7c15f4af8d2763dae1c87770cb212a9a3ebca3c948475fce740c303c99fd36d15ae516df49dadd6a96239a34d35888b5b3495afbd6e352840c27ed1ca631b961dc4f8d1e37bae1d38546aa119e1c28b275c45654c6ab94b1d76aecb6971371db0be1bb6ddacb326fbfae851d74b2219405e9d12b738cae3a5f554e764a629d1a11343b4572d7a7bd6b0b2869eddab24b3a18b89cd764713cd9eb0e1d5842023a3b1a5e1051692676162d38a60eac978a4b0d1e3600290439dae0e1f5771495c2cb698b700006a44d0096778414a0a51dc49a257bbfb99468d2a1254dffffffdf887e007f007f003a4cea3ceec32c338c2dce5218c100fd94cf82146643967675b2ac9fad79204099319af159aaa078bc446d39afb53d36c4c33a6d38ea8845b3335be96c69ae62caff9782d6af429ae985b80cbe972155e5b6fc961508f0baab3ebd5a4672d4c3e2896571c17203d708aa41210bd0ff38f62aa64c63a683327211a594a252563208f61ce3530a9e5596f69c359ce3392c300e2286b6e1f4e1b3d431e3a475eaffff7c04931d83e2e0f4d465dfdedde2b4c1b64a79dd9c7769776774e09d56fc74ee470b9c77a0d22acecf2cd5ffb7c0de325fd1af8fec7c8db935630bbeb23499e6469a028d1b73563c251a0cd01066cc408a199b37c38cc1e1c3246e124581dca8910ff93d454226371da98cd4eb8bcfa17ff7b996fd4a82685b330b223a599ee99b6df80765b302adc448e77575996be408461206152124dc1c114aab5a10a1a5740742bca829082f08c20ac10a26ac4c1502016108c24a968dd8c35b47bf4a2f28a2e3635acddfe488387005cdfc573683ff13fcf9d3adac56d39ebcab56d1555596ab81a6ec88a1c275946f13952a7368f29b1a142ab57c19b122983652924b75be90b85a54ab76a56a528836d1acf1ee921d82b5c36011bf1edf5c6b5c5d356f62f8264c550b5135f4f872b3fc93133ce9fbd34a856ef99f0c874e6931a5172bd0bb393f61222d3efa34934f4c4baec4260b7cc284a7a8a358c596cd18b3708098814018110b16d6de3b434be70d59f28c9881aa10b0aee9231b0d26f52716b17963ebaf078a9c5a1c573855307aebf0d534fa091503ee8148844c877375ee6f33b2e52e61f0bc901c460650ff080c276b0f6e82d666e7d854c9c0192609f22ca01812e223e1a6f12d33660d318c69cfc91d89b8253390757fcc037efcb2ef51334f59ddf87bf7b009791ffb93918f1974f045c0738165afe7d573313c8be88761de1e2b3073e8d78f2c0c50c4520d1cbeb80bcb5e0900fc757efab2276ad6e416515cdcded645215bf7ad81189fa97e5bb09ecdefb919a7bcb813a2144a4682646dc540f9b92bee40a908cb4e9b43b850c27cfb80bba728c2b7f66e42e0809c8cecab2ebef18aa3ec36b6307b0fc115fb115a8392ae97c4f8b20a3df4555638c2d83a2b1556ab4e09ba1aec1798fc7232b8bb32ec4b8454eaabb2a2a6d1983964ec761272209f19717aba4abfb116d051a86ee44a49886fa0568b4085a965ad0de9db5d658ec3aa3667fed43bff9235056f2ae2b640e71a05e98a1431219dd94637fc1aab81f43194596001592a4d4e4ecab150e7035402d839b2cb7db3f3e3d036473c1862f099318b0934ca489fb80bc72b5eaf704647097f43e61be00804e424b1b8685ead7b5d6834bc2e3d015714701c3749d2ce57b40064edd3e0c74b2536507ca94269831e4a2dd19b15d8651729906f2f4cd199f6bf7f9c14b4a08189ac3e088169be5a48c3f266f92df6f0260254bd007908e757d39823da570f7528ceaa9925dfc48535b10411812be079db1635832f55491aaabec68d3d20b9b20ae12d927096611016291d4aa8108d8153f4145d02d8ba37da406caaa82495ee9f67e0391197a8cf0f3126c1213478863442bc08d7fb80888135d03f2a152eee5795b7631187394a4ebe2555ec883031a666434bc108b3c406e65d866593904bf2157062011205e6d5d5977a61881a5c45bd46c54454085d8660adb4536de704b5c39848e13acb4c283425d03d5a1b5a32dc333991577952c621d579128b4a0108ecdc32b4c8cb65dd14c3fece55628a69f419509a4752200e6bbe61ffbbf71e42ff987d942a1b2133a7aa47317e7a00a30ad8be1789fcb1f9044943b2da82248e2cb014acabe1e9753c872131934178037d811b8db29358c8e3d5a57ff4b90d4e209d2e4078a86685695346746f0b07986fddc43480f338934da5c0a3de5625d2aab656f1537037fab9118b9b71e4d71745481eae0f85d6e025126cb2db0665b2c1a0aca06c590f911d82913f8c554735dada600eb3f49acf3e510ef927e329f01ddc0e00e19ea2db061fc39d71c12aad43e9753048b532c92528533238c8c5ab075440d2a90560959b94f4b4ed7d7398e1999ffec3c5bd40809b3b2071c47d043ccbe58d02d5440a18a544cd527a5e2836f47824e89a3dee20c4ec6969272b9b7fd5fba20136e8a7e31690c8bd817f09b6c632f2ea17234b3287873be63404695fa73765ead3c008a54cddf6f4146e85a79d61ccfc1b02a6d0a107570766a98d39f8614bed2f1a2cd7aa30365bab6c54e21f4dfec72626d4bd8a94bc20a78003e7a47123a118f33469350d580669a702ca5ea0ff6462fb3de9039af3935bb421433997f8937e87e9ea6acfeeb399c467b77a87553150cf3424af11c47dd79002623186b2f678b756faa1ba24d501542c132c61e6d867800f5c69e87816162abede537ce369187a900b4b4928b6a420d74c9cdebe24563290f159be1ca21dd1e9866a7f2814d442695cc50c54f824eb486eb3d70950275b9e4d8b4d701e625f82d0aaf71b7184b124ab702f36ee21ec5be29df0edf8cbfc65f8e1d2b9659b75fcfae0601bbe181cf3c12cb0b8c3cfd8fdd81506d214e08c361c083006d0cc972b89b9e53d3b0aeed7dd0d646034dc3d5e498de92b71cbb395b519612aa4dccea485c2bc3fb221f3a8f4ac59f9e86613c13f6be5d4607fc04b07073b89a676f466cd27afa15a6010feceabbabdbc971e0f7547322627171d84d55024b16af0dc50ed92a4135d14765ab93d4e0ec3ab66b122e25658e3f292cde4ee9ceebacc2ca6e64455aad8cb92eb6e81e5410c686dd5e340068a4bcbc53c874a41f68d7a0bd18e56c435a9c481d2bea9e4d8e01f03f94f930d580504f9a5ba58d0d71a14fc10be28dfe12936cc7971836221c40f6c8ca6e2fceff727b0495658adb5802f5689b20d15dd2f98552b8bf4331e730fb6d774f14ab263d813090127433cd522879aac2939a282523cf261d4d96a5d245914bbc15bb465a78df600409583f2cc7c4c92d284f319cb4808b8aefe4a053385895e2f7e29c90753a210ee1aa169b654c1e508cb624d4cfdb8fb4cc02dddff903c8068613d446b586498f0a8295a36dec6b0437c94de21f1226bc437fcedd6ed3d408c3c60b8bc3950cb86e704a2b1a9329581652fa2d703090eb5d1a765d8f3109aac4ca4c067a06befd732f0654ea25973a591d14e86a6fd88eb261533f2bd685a63b8f34ff20f6f8a351b5800c236204232191e309e50f84d74ae7281a453d31eaafe60dca288157bb14e60045e892b27895d8b9d443f78c0a37dfa912ad43f4ef6b0b5a5359fd6a02c8d3f02c14102c300da9e53ee29d007e2d33f291511ab64ba880c7e3ec72bb5f1ec24782d10622bf1401c0a764a74d56514a1583d08caeefcfff31442f0a9686ac313f1a44c0b2b45dfba94a4867dddb6af7c7d1e1ccd72bf018c230077932d2e002b002b00c2f52b34ce557889828a07f340461e1070449ab5e052deaf967aa552ab1cca7b2bb32930a482ecc61a0957c3b103df6d3d3a1b75e93623cc7d586d0da37719559e8966743f6bfe07bf3c214abfc122a7b9201dc6a13779d952783409c14a756fdac75216c9aeaa6aa34d6da9b7a8b2f448335177e13830117be5e9c1d75a9993e9e674ab68789ea756ad727521884e4c10ed36dc52b654531af77d9ec0f4ebfd06f73573773c63d263e9b45e4ab1230a8253a80285790e623814a1c43010a6b5e60362bd6d0396a6960607ca4a74d76dce13c866a1c69688b1ec51bd9014a4030f6863573585828008454b82bb010ead6fac0de5bf246110bd1058b002185456db4ed7aa15359cf49d5eed3bfeeed43925ac33d4ea1a26706b204cd42fe28c48ba176ba625cbe580b571d7d0c97317e14d77708c576a5bb619e224704c144ad0dfc775d934d90adc5641a7bcdec775bf290f88d8174272982070bb794a5e5bd2ac2139e094cfcc22dac1b7960d4993610d579df9eaf219705126e66fc927b9a39e09172506127aa663401499665e98e1d83fa2d3fec1639b044f3c26e0d87a437615ea79dac18483203c472dc0586e19749439e492cf72a770442f5066f24f2dfed30240d45aab86f9dd9c49ae64dacf0f605e069af1dbe43ccccc1b68c4cb4b3581a82ff366f6113392ef827e4864888105bcb175b6003be6e0086b625851c6092e555f453b0b7c5ba5d03c8a04c4b930425d42e895775f420d9858178001808fdc91eb66e173264e1527c177137a2687bbbeba6be51f5e8bfb186e6311da758bce129703dc8552ea827be7a2fffda1923a2c4d070e40286717c5e0f4f83c8ece6c040aa028af6ae996503179db137e767c0c4188677f5799095f4129be4eb6ddbcbff0f58091834fc9a7c8d2660401aa56f106c915f4d6e2c332921c955108ad94465a651d5f336a0c8304577ef5f40512e1de7162ba4038587f21d017954bbd0e03addfaa98281bcf7483de46ec301fb2f3af97142ea06f68abbbd8a841d259cbea3f3d78b1aeab552e5a807cf621ad14bdaba104328fe991694d5bfcb60bb5da822b38bd4a4306f8e48eabc9ec06d4d837c02f7b25cc9bc2032686bcbae8a9f44d911ed5e20b1a59872434fc5486562feefbf497dda2928f7583c072d009c639bde8d1eaecb363e2b97abea1b3a42462cc6afecf8e41a2478c8777cd95148ccf2c21087003159492ec52198bb1286e7b45c90408616aeba76a8c3f471585aa4ea1fbf2eb439db6a4d534d10edbee001e0140537efa40f668abc6a6817d3c14966fabbbfe4ce91d1a01ab7573e53535a2c8aa8c9e17d41ccc2d95c043fa95b763331d59c3b2d90e0743aa4f6c4a1f5b4881cddf93b77accd350ff4a9801f74a233febb1ab50e10c850a6574d0c1507f2128c06bc4ad2a4209cb0968590d162c80626d1bf8922194c771f8534a82ac0012245f7128b395b12ccc808c9ce83d1df22e79fba5a06810672e3c6fa5bbe29ad81cfac2a053739bb9ba7e5e41b85d61c8fceab561988bf2b54d9eea96e1119fd5d1bd945e848ea32638113f7a7d0de0701cb86cad2e3d641200b3cb1a049104322260620de6ae88a4af891c97589e7e73dd7134bb0e0407ec0ef879c06118c31874589605c790fec918f24dd111fc51368cef4745ae4f78e5fd124af81a945ffdbfd34afe4d17f83aad5acf0a5a4497a1cafdcfd5f136cb72f7b2349d5863d6e35e34ab7b1ade2a812afc91766e8c2c4a832d38f457d032dc94ad69390020737276d13a4f2249b97e9deb95597102e9a2b4935b044cb41a9cfc1832824ad22b8622794cdaf5c86978f321e664ef53b4690525554e06cdc7f3c4658db20397020b883ce1c0c53b1da8952b18b4a32154f1a10de707fa8ed4d8661d3571572e3cb8b4a322731a79dc0fed38b6f97437cf32bdff384aec1757326573373e111381f991e70a9961ce19f21277c2110c97b509f8c2e0f56fdd83434934fc6e670b0d50651932f06c48951102140ae4e0b6fea18428d66a5ee9d0f347beb8ca8ed1c4f8d490451e359ec14e0f287180efd3f2f32337c0be17856eb965173b4a851030618442e00f5298183613ac69b65a569b16bc0b7ae0ab4a7030314f938d2ac2845b6ba8fcb97acf801aed53fe2167f77a872fadc3ca2123311449809d27b39093f89ef76c81e73b5919839f3f82be14a5b9b03d84c952cfcbb2f7cac0a2fb66c8dc72c7034d54f954e248ff442260b446d0fbb899fe0172a2532ddfdf2279ba35e5a75eade09253f71cb62209c6f6201192618a89f37afc43fa6043b8a5cd6c69e3e113f07b2e57090a68ae1f19fe9accc0b21db3f2065db1117d4d5415049eaeafbcff392c534487f9edfde5850c90033fa6a804fdce6af07359384ade405802c46171bc62126c0f00741065656c6e7269707769666c646c65676b6e6e747273776f6c6677776c6b6c7279636b73747479797965796f757a6f6f7c031000078a048e059398069ea408acb205b7bd08c507ccd2d904dd08e5ec06f203f5fb050004070d051203151b22282d320739063f464c5258055d0360656a6f037275077c81868b0792979c039fa4a906afb4b907c004c4c906cf07d6dd05e206e8ee07f5fb0205070c1106171c08242a0731373e454c034f05545b0661666d720476067c8005858a038d9297049b06a107a8aeb403bc0806ca07d103d4dae105e6ecf2f8ff040306090f08071e2505063004343a3e44074b5205575c610465076c7178047c800888058d920395079ca304a706adb3b9812aa8d1e434ac01b19a1049923407d1a6e80190f1332ec3ecfddd09ffdbc45a0cb35f46bd57bba76dcad90fa3dd6a190f23245823c0773af37378f5942b604b5b7112bc5df69cb2d299d298f2f4fdf1f746ade3ded092a92efb0f4e713b7504f94de7d19904a3b4be6c14e86e97f75ab56fa82b78fb527f872d5ebe6fd735bc2a47058acffcf5632a2b7d624603cbfeedd23f0a046956a40b730a02a9264304c870a3eeedf3ee0c706643aa95fe12ae5077c9dad077d0a24805ae3a24b2805c1dc96552f267b2cb065210aa9654394e1221b84d248ea92a4ab90b0dc62c101316c01e04a45b00ea7dc01c2c10882f8c0178a156e09f053ee852b98a2abc09ed072a172af028a18b4979953f41e895d7ad592a9729a5cc17cb01c101bb0119dc0b142238e02c04534f4b474cf46d04a05636d6959555fb54f4cd9a4dc674271d7bf1110d1dcadf91770f8fed9eeead8dd7d0de113e1666e1233458e05652ed94c4455f14c0d60fec9d39a40cc733cd5b26cc643f6e41348c12a8640faf77d0c5b98c6fc12b4e886578bb1e64f9d5941bd5f41e3191dbf21f8f7561bb95ed38aa687faed914f34eba5e1859f10f5dc3260cf4f3bebdc7db415783dd6d2dcd8c437c08fba200c11554f181a624024f24146876cfd7f153d2ffec54d366c250722463e294c1774911bd1e756ea3dfdc980dcdcdbaecc5c0bebc8b21bc56022a7ffa02453cd40300d8cef2796d553d1dfd743499622c27bff190a7fca0ffbd468404e91e757132bc4ded6cac3960602f6704534e3ff4ef6d6dcbc2de99531ada8986352f2921195fc4a602c515647244489e0fbe731bfd068385bbe2cc039885095b597ed5522e94012402025a4000b79d8d7d3c73bc94e3bc9dee9a3e830946b2514b221f4a116482c487e4e17d8e9e83f317ef0ab412651ec02e4c78a095800a4a09c92d7a5fa141795855fb9414ce9b369b4d260c25e42f623994f2a4c927e9dbb36b1c723fe305b770519018dbe05f15b8183096d5432d19f5d073edf779e5d63aa7a2fdc99d9c5f267e5e7f3595149409d3d28bebe84caf61141e74035dc9f7f101e11c2ef7335cac751a9f70cdca3ef406cef0326929b0926aa725a37f996949f661f1b8acaaa8a51eeac66dc36934c778e5fbc8d8590ea7f8934066e2fa3d11bd1f6ed738e47e86bbb1b15a9f957047f818870c5e12b6b43ac14b3df5122311f5dbcec6e6695655461dfd74366fa6312f2b1f720b16294f9a7c92bebd1f6e37c7355e89cfc838fc977735976bfd543fb9d21191ab241468f6f578abbb4ae74b43dda8f14dc67c4b491792bbf81543c276c27fef5dddc7b90d8385a7e810df81c30a3c605075c089098909b8435d0080d7caee6957d63972e27cb6694ede2cf360dca4d6927858e882804ada085f10c6731d740f07c3755b4b7b4934998b81f197eb0521cbea7d5afa227f5d402cfbb0ddeaaea63a291c376cd0648ea1e448eff2595cc4a642d8c4ef89e4f5c821c73462b4a99978c93860f8ae072f56d53f2d19f51092bf8368635dbf0eaa8f82763e9a4c312e98c9c7dff25a99f2a49bf8f5e9e1e9683ab8176c686ed665628fc1b53061abb3aca2968cfe3d12f2404cdb7d5c554d3ff4658326f3b2295d496f5444ac42f84d9620e9733d1f7c572707f72ed8d4faccccc93c6c083c07c731ba4d85370937c4981883bd543b78055df54faef412b94b057801f9f9d7be43c7d4e17c671a33653c4c7f71231d193fb18a3b8509071bd093f4b94238ef79e4e8b97f73b1e2cf46f8188b8565f08af0ee82be72a6a41fc007a25e0f1e3b9d6a2acaa0dd19e58a61cb96f446c53f7c090501594991bdfe61e7376cf41bc378b6342fc1227aec05b3e0125e06585e75a089958cde28a1403efbc23eabea2969e8b7f1c77430ae4372f12a852e14405652640f4f47d33d1c43a9318a57c4070ffbfa095c0c14547554d3230df0860ae0b6b31dfbb6da392505f57ccecccbcaf791118b15c377f00fc9903c6f1d736ffde29fdc132e824188817d7105080ddcacb78a7226a4267af2bfad6dd95857d64f3515f5376c385bf3b252b27131f1d00b9f04f612247dbd07a4475d5c0cb75e7333101ddca9bbb67cc1954bc551bf74d403de294013af3e2a69a867abd97c2f2b251f7d11cba16b1845b0fffc8c385f903b1d379e860c6f73d9d4d09e44d3abe102052ed7525015e53a7d52d1d0370909a28d7dc553c74f4739b43d9fd30d50423a232bbe553c4ae0fbf5e939dee7987b67b48b35343703f11bbeba7e6b01953f25350103edb74fcb016ee9837a1b4ede6c3296efc5b9b422a21b7214c1fef363237b6e90bfab731b6f6fdb8a34133ca2413807d660a127f8d66359b194d32711f04f20d482fccf9e6f75d5b7b4e1b8e773f2a68f79ca48767c15ffb050900193381197af81dc390e1bfdd6f6a6f81265de01ecbd24f083d672b1f82aaa0d1cbd00047d6bebb21c9bc7577b8e1c1efd37bec6e56c4d1703e68b1bc98ebe25b14a610ffa9f9f11e7e3207f87c3e366b860166a7d3682ccc5c0f88b0284068d7535c5504b6e1291d7bed5afa692be49a3f986996cd4f256a40cfeb15f913d1f3b5eb93786e12c3ead4d84f80e1abc22344830f54d4944567dfbb47dfc955beba0baa671dc0d1b4ecd315ed991ecb888c58a21613bf9633f229ed778767572af8caaaa277331378c317485e772add7ea40538127eaaf72f996d6f9b8f62aea8bbe9ead46f372d21db558a1a26272e4ddfbb1e346c7c56891e24b78d98b515171695d7d943371d2109590edfbd99387ef389dd351505e63a6cce517e6a2f8807edec7f73ef84e86db4f4dbd1fc2be9a822bc10116d59352d1ff140b9ae5e3799af553d9b4e3bca7a7f94c1ed3963cd98fbec8590ebd70f0992021d27afcc3edea02894fa86425ff01837d056503360104940871f803fa441c330066a608a4d340c025829a0c580212a321ca345205a2647c1104a4d1c2c507c95c24f80f28949852c94bd1ea81aacf1bc40651bb4ef2bfb6257f33f3e5ded2c21ff18a2c132fee1d32fa829ef39cab5dde6983c0dd08b77da18711109b98ac8821a21877cba551e24b9a9aa19d1f3b67f226c3cba735dd54c5ac992f606f5359e3977fd3033705d2e34ed6d1105a6e2347b7177a5a09c4e7ec708e5f4ec599f057d7fb765b222bdac216b42553ed62ef9d618c15b340ef9e1f66a334f1227c4c309493d780ded03bd12759fa4d07b5ee294540cf2f36f09ae72645a32e739fff025a8130a61106c6659a4099630b76d0f5c49e291559589bdbea1699d76a8b912321310c549a635a69c48e71953723d2bf834612e09205104606a6467409e31de96ae9b16ca80b4e823bc2ca255a5397067baca07c7ca9cc60392450d7df1b9e12fbdf98721c30606253f4df4bd163203a27afc5404a3ea689ee320e2c199463060817cf6d5332f4ee7f1456929acfbc46d794e82e412a66b142e3939c97c52887b15875c02405d6520295ccfe5c6fc2e8c4b2acb9ba82cd635edb8c6a62354ef23f0705497508ed599aa0546b7dffaf2fb51aca23c977d2c0664979897f2234ccc84ac22e28aabed5e917a4990c27257dd979f18a9897c796c400964a65d2d554e9aa67d27595446cdbe6b831337abbf0e0f66d9bbedf67d40cf13acd3a1192757ce3ff89bb1c6c165ef07448541701e01db4b3933d637a1d3b10d4d802cef9c3dcf75f3018146e8e7c1dde7b51c99ce91d7f940a57451f2349e02ba492cee3dc8e2589d5d8a5233c4b0d3ef6f6db5669fdef028ada42bdc778b7cf29941776a70282b34efd312c8961248b31d7ac6c8f39a721cefbdf71a8e04c571bed5106a5bf1695b2d4aab9aa217ea5b3a6494af469a28298c1ac562024663494b82e155236afd639fac5b340ab4629bd7985706e338007db17c8768cd740690669ac729713ced788400c758a75705ee39df775e13a5b599fe6b66b4dd6c6a43141fac5d9377745c324c0ab30e51d6e7673265ba20033aab990e0a86c847f72f31ba5df95be436306139b0c496f27fe411815e18b3566dde61cb6514d7a89bdf9191b3e2ac0461786d46e275530a6da945d047b0e7886a70669f9a439e924b8dd27de540f633c45995ad5c32b3b60382c183b66f93fb073b9adb71ec351223d512bb1d7e5cd68b87a56da3410216ce991b60218eb498133be7458310a5a4c1bcf918a2e8ee960ada40bde1f048303d712b060b2b1a38d95e1f5a7f1d94114c8c2de785875c2d2361dca3fd5c884ddc70f4ad23c0f453566e1f57e047cb19309ab46cc23b512b6b0b845da7380f858cd52811e83652dfeb957cfb0f750bfa88ca022ef926f1c7639f87164791fc35979a24969130465984573f95248791fcae04c51eb3ac84a9e7b31609c4eecea64b8ce7ed64b9c59283356355ca5764a9debdfac361525943ed724d0a9097c1500d7df7275007100700095928f8c59f88a21a113267e6448e7f1a87b6b3c0c16ee0a144e828c3d847dfd84075a0898aaa17ce9c887dad68f1e3caf7a3a0aea6dd26c625e3665243bbe16c457ca93ffeb244584e4f5f01c747133f8050b353f3102849886b6d005810163795594813f1af00adc418058b6f7b8afceda74f834bd03871c0d96d1e62adcb41324c83c80f5050aced5600102297e720d2011795680af753fadc75beb706a291c37bd86d1746618c9efe28a555e281df87e6ce4f7dc47dbdde83817ce5f708b4fd127447c600e5f5dfee017f4d547b5813f7adf0542817cf6856dad834afa9f6d38357b8c072cc11dbc02b672a79ebe48003300f080bc8f1e76fd3aa8a4a19e6bce64fa252547be8c59fcf0a308feb94af8c8100ff2775dc773ef8c6f5be128cc5c113d26f618287084570b414fb9d38be416fd6b09bded6cacbbf6aaab8aeaa15968bccc83997cf4452c4fa570b089122f2224085ecd606ea1cb1ffc0204534f4b47eec0410792d5c3725ad44d9a7764fc44e7c21e6472c485fcb8e31c6fe3cd854ba2c91a3c8586f05a8e80ca3dd0c44a4643dd0d02d8fa81bd33c7d4e17ce7cbe072f21bb5f815a61225b0977c11df7b7becf839aee1bebde016ade26cc4188b65a8108253a842f10f42d72085610c6295321ffdd6aa16eef7402cb001e2207d62c694c4c4f6f175f1197cdcdcabc405e3e0f9aed16ae064c21c949f93343b3ec7048c1d51b650d03aad83eac4d7c64f7e4593247756c481dc7eb5dcac037a1999cb92ee088200b4f8fa84f3433eefde7c0aa724db2dfe76cf261203d3186573667e46b0225c0730d48e9b7b19c5f7c491d82a3e86b61979fba05f5137d55e08c8a34c665cde2b847e6f00910989408b3341669900c83c50c9d0849e612e2ee06200064ed69db513589793f96f7b198a3d324a01f5aba47a18763ad9a9b6452d5c4b3631a45a000a7bd01d39209e9b0354c38bca75201c1b2a2180120f835c8fb037bdbd3940d2137cdf18f1629186ed2dcf2febfa3f23becd849e01e0bd4da49429a59402b501af01f1019cdabf1fc10774bb284ead763ead793ff2023ebf72bae763fdef449de6bf8d53977875e63e08b85117ababd4ced7a6d6ba730b7ccaf9e7613d411750edb56fb26a71a4cee36b4e0ff5203e57b9ef48dcfbde7fff3c41efbca8f34c7f163fea3cb5e77ffa1168798027aa963f3073cfa9fc07e0546a5615cd088913f8bc77bad76c1c2b24550de35160bb2f55eecc4e18e9488051911886a930a200d92000403f586a1ae5d78697b4596bdab9b057aa9b77f5e9b156eba8b6b6ea044dfced6eadb0acea260c95c962fefce8b0b1745621413640f0d4566adb8dfa7ad78208b46dac88a32bab29aaee562aaa8e2dbc47fdd435381ad9b0092936768ebab160ef022e97cbe5aa7da3a2aaaed4a2a4b65858db2e1744980bb68bb3ab63201676fbca936b601696b39b63f0a59bcbf055fbaa1babb39bb3fbe0e5f535dd3f17c6e2b4726efdac478a906690162ca754171f39e43ff6d831e3f08774608d2fe3c58af9447d47f7e5dcbeb3172d0319055a6c06ebaa1358fdee01034ab45116c095a67a7adbc9ff8e1c38b59a6f664c182fb366e65cc55bfe5a723e52fbf08d355df803a33c9f0a13335ef8836bb7cf567338a3cb2a8cfdb0a454287a6465620fc4c0bc0fc4c8bc1abc2468152cd03a356df1e0c077bb6e1ec1dd5812885b2a2ca716b7fd6ab3ead4b8dca9305cdb4c46c7db198a392ad7a673afd3928e996493289b9dd0eca5599d130fe5329fad2fcdb323a1aba5c7ca36214c4444c86d09f472cd8420077e1353a1124888ebc20b67225d134d176884db123c4d12936fa44241247945c817cadf39d5cc94c3864018947b15c22af59e85d46de002be0350f069b8ec8c7ee131d8460eabcd773244d2771315e785d6421c9a824f74eec9566963f332bd796e5f39be7ddf6ff63aec3a8efcf757a0c8bff3cf95cf43dc874fa73e82ed013f52dda753dacf3bdbb785cfc577ad356fefadfb4a67fd3c576dde6b4f93a8fbd0055eefadef34dd3f0dfe3f0f9733b38530a2d764a766dde77bce19ccbef6119a7a7e83fedd7b79ffd4aa6ee50ba67c5ef20a78ddf53c4ed72baef7bb55079f42dfb31723ffbee9fb3d07f24f2c77c3a7fd69ee9c8a73ad9d66c097ba9487e2bc4a3465e23d40457d90cf9d88f3dd2b742d0fffbbbbd15bdb81cbf05b290adf5d95ddd7bc877bc2dea7583316ddbfb65ba94cfef348fd6e9214ef3cf4b4d7bd83f1744590527025c0ab03480ddafe116f8d14f19ab58c06cd2623f6973111bbc6e522598e64357c12b1418d960bfb242fa973155e5cb2299f902c33fdfefd14ad012d7b28751129ba6257f1e92c8bfd585a2a74abfbd3dc2c6f41d3b0944f07b4e8cb725021d76725163d14624ab29d2b420a98b175bb4624c99e30a66fea4c5e85de20c99449c0c036fc7a1c668ac93eeaf8f066be089b005c24fb357a3249445206891f2239ec69e76e09ec74820920f94c70428bbe1a4a98ccfac85c5424cb1daa9e4891b1201770b1e69de14a40885182cc1319f9d8e347790f49b83434ce671d1b62a2c061822bddb2c3b14d438ff7cb9c6fa9123062b825136b8c69a58a36de12319714a0225856da424a183003459a57948c95beb198b2e9a9a5924b0bacb40211ac0fa44f5644666c955a8556f110669fc465aa4a8d14f932af0c4e0e8e4295ee2ee116560aa8c8b25c1a9ba121a8660e2b8c50c0d80a142ce09504520c0882c643546c01e56d308299c13a1604722956a30b8f2caefcc77a6a1007dc117013c3ca78ac764384d8efb1914ae4e8d881a685b4a6ae99e10a3663281958921e69a0186f818e7f9a60a811eaf5c6c5da493aa77c3764dc44b293c22669a723989cb534acac42be247d62a628d32b286ae0e9335f078cf5b401b1b85ba2ebb1f26a1e09a7266f9ddbd6a9c9fb65db02f59e97a14c64e0fa55a7d232acb2673984827bfbfad5b5399f47f3e562c2f0ce2625f16317b5e787278853f74abbb5a5ed3669b70e0071fc31fbd84226b02aa6761fc6fe758de0a49c12cf3b4e302f070711983f4832463eb6fc974daaec0dc43e245e55dec98c0f885c0e60653f28cf38a904dae5c561a2f8928fb107168103091e99023c58dca4e55cd31a0df26667b087a43910ad37b8d56b1d6217cba4a9d175e2df6bb12485621b33b0801a7b3a86e38c50235d8845a37dcd921163633c16c1b06c3a16d2c3129c8b3cc0b640bb911e9c59c8d2c81411ecec879f8a919d834952599b3d05e1d0591c3d2532cfcbde76a9c53cd44cc363a4ec632fc671b2a203bc3e257bf748e72459599a2698907d684ea521dd0ec2c434311f331e42a90293a0afc0221f23c641229342452f19446e19f8049976675011908ba75891499922b841c1eee37f7c687c7f688752a06c16fc0eb20c34475e980077bb044f13a5e2e9419a786bb1c3fc4b47dc8e42c3d03b081b8e1bf8c2dd7c8bc032d4ec2feff993e006d56874468328e586233b5f228e0ccbb6971596d319458e6c60f6d86622440c1b56df94c71e1b6ceb68e34147779392d4c0deda2f12291860ca1a0e68b0ab76dc162d588b8e69f6406ca84de677620a534f4d1a18cbc920a61e955a288254a8a2e115428810428c46410a92a4d001b23386e130091d4246c4490a8d01029ba0c2c61047442890400291200a52525292943a13162a35c41f57b5043e77446d93cc6c16eb278fa12e020a4f783cfa6ca0227ab7e5ab853d12da416c86999b7cf1902f0693780f55bd8465ea2806a7570daf8c6ddc04f89f539f26ea81735cfb08de03826876423df23667b396ca2b3be8295512686c88dcf2519366aa953ba70daa41b9ccfb39f4cb35095e8978661c01a2e6c976e845be49e5110850f23885e995d71c4828ec9ce9fca681fef0856c5415637f53c03669e1cc6b02d4207489fe5ff57aa58b7e5b18f6f413d72beb0dfadc794d504da01c381d9dd70ff740037663042f29abbfa688215ee67394a9be938f61c9cebef370164e7caa5e11e79b9dd4b3f145cdc7ee28a98325dc4356645e4b848d51cb59dedb5bed4ae95630c988dccd0fde80d5330c5f6f8c84f2cc45efd1172ee05dd0f25a8bb324a0ba4bf7b4405d5ab77aa1a182fc3d2cf689291323c80fc02988208f98683cf412da8e773fd7b0004119b862b36203b1d66700caf3d8dce5ac6bd4d981088c380a53e3519b37aad9a0ec7859d1639dc66c860d7f41b30239379211ef40d76407978993d6ab126ecd500b78f1e2fdb64120ba3a60aa154413d32d02ffd76856d0cccd15b60ed1f695b39fa7fd9a0edd2a01e1abeb687a1f8acebf456ac0f10cd6dd3ba442c2a971ec93abaac726862ad3632c57e88e00054b548fcc31656dc515808263616b93f630357136df89131cf782592ea6f4a8fd6f63cb134572422f1c6c9b4d85c62eeabbb6463aa7d53cf13030237bb36bf0a7ea0440eb313c091c28280eff0ac1cc91fc4005a304bbcd6d7a5d86edca7c1bb2e6dc5e02be3ea35ed96c53655616a45c2c29e7692d189150bcad8ce108624e3c4c87295ab87176da102c2b4e8731049cca4b93a9774de6c3506d2e27bcffc6577904f06d0957ccbd21ce1bb5714207b989d760f7ee279140f07ecceeb6fd45fc5d3ad5c83c606c36280c9483b9ab35bca09f65f7a2bee116648c0686e1daafe8aed671629e8038b8ab2c8ff5a824ee5275e52e1a65b5dabe4fde1b91bca9d13a58b765a3aed46f8f444877d677236f8d0905977193e0c84e1cb8a37cfd2257c899afd173d932e607aa8355eddbc16580e8808b1fb25a9b509a9e593bd6723a5d1d010c95266068d1d1f8980f08c2718b0e22f745fac0dcafedc8ce0b0ec360e6760cc321979cc824803c0b719de262051bfa8239067f5ae749735437b589f9960f45ee02aa9c76e4d3c380b657b9008c0569ac59ba9e15142ff86123cda00aebf0a13c21d7d6df865815304b7198d0d47a75c9460937a8c288d95444e1897909cf011e20610667a4a300aaab28293b20e675037847854d5df8b50a65b8e9a6bca9d9c5ea763ca102b609121312b929c4142923e87ddff77bbe3f88b8285a3f141d9376bafceeeeeeee1d780279028c02570202a6a46e206bd41829d280cc80b52ac050688fd99285c911234384f801e9f100b9c55ceed0d1c61658c9519c844488bcf07545197d5c0bd7affc3e1203c63468a70e9223d6aa14ea4998e3f791ca4a15b83969fec6880153a5cf458b155bad5a9a82b332322bb4c9e5546422d23e5ea840e1d427cac549932424dedca6d2a827fa8d9b466e573069f0b6a19cc81225888d192c40fcf0e1a34f2dedfab5358c29d1936449b4a28f481e440b9201eb3ef11d998e3c27286718477e23b791b7c850662772061a439c155fe155f591282543c901e2a72380da49a79964619dcb411c97efbb9e61af5c3a4500d65d249979491f544f8c866c2e3815ad3e211f8cf522fffffa59ee8fe574365aad05022c960bf9292c973364d85a64bd4187e95986e33bbc1a8e690733b5fa8ae3f7a0e16b7f56abcc9b0aa29543c51801345e3babcdae6ab55aad56a954ea942aa546a950ea93eaa436a93bb53aa54ea753e9343a854e9f53e7b439dda75529553a954aa5512954fa943aa54de92ead46a9d169541a8d46a1d167d4196d46f768154a854ea15268140a853ea14e6813ba43ab4fea73fa943ea34fe8f3f9743e9bcffd5975529d53a7d41975429d4fa7d3d974eece6a93da9c36a5cd6813da7c369dcd66736f5677ea3edda57b7487eecfddb937f77dd7dbe3f6a21915164a0a0d592e4d60f9bd78b39d0fe46ecb2c5b9bd370e17f3b3cbc2c051048a488649efc20ba9028867ddcc0c12650377414f9b7fe9f63ffc76ec1b0c0c0b6b49ca81fef7bb95f3f217f6e6efd78d90c4bb6ddba34ecb7539b609d4a01e7d139d1c1719fc11d5958d6d9dc97cbd84414d7887dbbef16badcb46c9a9752b9dd0ab978b76ced5b7114f6095a74be283815e026bc9d7115896dd89ce9b12306df565be10b0e04a80d1b347f5ab24c79c14741c119d897754ac3818100ed4173e68f8c962c5090c888f1c2059f1f9e029c01e6b21225b4054d4c7a8e305ab080f0b60771c1c2831e9360e07c49b654539227e14ae8243212da48ec949bf41e2f85cad96bfec62bf91853dd53b3541c4543c5c6200027a759a79b864c3a716a28253ce6c5e08ddbb76cdb753dc7b0cd37a9bf83f6f1a6d6f95c356cfb5e653a8923a9f4b029a687364f7798897391ae5342476f33c977904e12aba84dfadc6da8a5934c5f194a553fa063bb40981e0c6dac5842a6731a8d2b52dfe71bd35e73fa2e37dfb8b616af0e7c657a6a56dac558d7da4b4e6fdb576b7c019ac24ccc09be287aa9e0dbf069f8f4a12c801deecd21f505f08209d0a67ced493db64fbf8333b1ce40ab68f1c56926bb2a6e7a7e0505c9b9e6f0e1926e1c28de557ac176c25f6f7df2055023f3b25ccb86a3bbeeeadedf092b161d09f6ea1d7db951dff98872682bc6f4c23c0b3b4a109d4df183aaf9eb96927ef3bbca344fcf12cc5579999d3309a8d2e7f719910d37a3222bcb836643366d012c3d149d3c3ed9b96d0540b4732199800a45fa1c37b38aab92f108c27ad6ebd86e60e7f597dd750d13e605b770333bbfa588636941a8a7a3d694b10b4f4e67dd819b5ec6ab662d3bc797f793f89c9eaddd43fa9eaaadb33438a4b7fe813b78e734b35e40530fc435d58c551bf7202e3757c9bea2f0dc189c7e87d0394d08c59174169d6527e9bb98e8b1daabb60a66d1c7a6e65cb5d72f99f16c6156d2730d424085197bf4d4759d3471f3e589932443569010a1e7cd60612b87ad00270182db03b63534056656ea13a94560c0a7ffc804263224c84091c0f2bcf83b7e9e94950f28532bc0d66560b07ee3ff3bedb6cb85c2a4f9951f0cec2fe51a11dacec410ac2110d3d372977e7b7998656460ddc6da5604acd7e832e36eb91f1182028958111c22f8c36507b9990008c890042c3f4d20f8f581dfb0eec06e7e6fb66ed936f083ec961e6d80756a6d590c8ad800b3560efca007d200ad1a29003cee55c0286635cba4640a48cc9a62e5b11430b624c506fa90fe4bb0b20f25ab649f2372125ba4ce0bc8dee5f59389aeb07f78f58160eb18f0a767d82b8c16f77321bf95a7e389238c1760af6e26c04883fe167ef58b564eca07fca175dd588915accfa82236cd5473979e766177fdf87ef4d58bf4753dbcb5ee7c69bf260d351ca2c45ed1d36841637e8c2ad10723d012662b219e3dc4cb70aa9dcf5f01f4f4f895fe09ee1b9cce3e180501fb5aff4ecde9877802baf4c1a8af9a59d348114068d4b147b7e89bb09ab066659189471503f76aafebdc3417c01df54de6927e16da537452d81cd2c9bcacf6ba23d85318825141e31d61b6b4674fcd4ff66a333d010c34dde70954d1d661935d54ce62f4da10ca96efb79bea4eab0330c5f670be677c0ee6477abe1fdc4e4d6b79f1b6ef78be6928cda4635c6a3e7ef1ab5a49cfb4e45bb4692a7c6c8fe6b32780ff70e0254176eabc7173c64cde1c5b0c18646106c0a675dd4488985b7a137e4f90a09616c8260e9c366caefa761c370ec03af8d06953c68b152746984b2d1b79787ddebb478b14e59113870c151223d4d212945d594119b76861e0a4c908117cd5b1ae7bc5c467cf06ba3ef05224487013a08c453a65fec078b152054adf0b157c85086f6a69676dd8fcade182c30ccf9d3665c878e95264080b13251629a223c74b972d51f8faadf68cac48541408109f335390c470b1d5f201102c3da31064fcca92d986752cb1f48936b719e21334f33e9d07acb4e1a92e40d60de12828684c57457a00eb5582c4746265b4e9b47eb60c6acfbb392e9d12cb57b82bc17673626c727a6a54d0a6dcc1ba94b33031ed5994294e2aa28cbda59955d9daac563e2e0c0a8330add3222c76ebdd62daf1648dcfa3fb3fabc1891e91c9822f0e60dd89d0fbfff75047f7af2635c9caf2938d5b4cbc3c7f816be7656b735b30261686c092119002ac2fc93a6000c771d531ffb9dde095da2d81385857f2f45c468f8acc9268ebbcdd33ed557bb6a64550e08ebfe275b716d6d8b8775e372d778d17b35ab5db2b6fc17bb7bd72691120bd77fc065e6bb5ca6da0e337d069efae0fc4cc7e527bb656c02ecba02dac6eeeee02cff3dbb1392f5dd67ba5e66d3958adce671ecf8f995ddb0ac86ddd7835abd58c4f1be36aef377a1118592f936b1545bbf5ae49654131891482a5cb6673e954b2b131b05a795ecc0177ec10110079e418084228d09923760a4c086093c0a9e4452a6d627c2d1fe46ea32a47137fae1068328196030b06d159a3c794294a465136a2d8c8413236024edb0ab03db6555c451c4067491a82577781e7eff23ecb1ccf322e0ecf2e6d1a86fbe5446c6dc1fb1eb07abbef404f08da5637bba64c6ee33095784b3d321c8148215a21901c16c07a9028decba58bcbf3323368bdca0c1aeafc78c86eba60dd4f4c0bd8c3ef72935faebbcc7af3e2bad2e893f14c0ed681d0dceeed41bbddf0bffeffdaedffbf9bc5ba59bb1dd4e6eeb27ffb067d3a95f1b0fe83b6cbcb50f78cf3a11753026188e7b71cfc9aba1760bd8736ba9c2e9f4aa5d2031e8f41fa002764116b0ed679acf1755c4a8c45b2d0e57687b083daad43d467926057a4d5c19d1adae7f939e2d496da5b92c0880184a7a89376769d2a1191240525955207d3622020200f48654289a8e9481da538a365b260260521490c52841822232212890422229244419a3c09a763f769050bac1fabf64503caece4fa9b909dc46fb868ba73d5d03a943ac85543736897a7dcad089fa6f401db0e4b7eb2fc829bb5c7c80788512bee1eb87906ae4eae802ed7e440b813ef929c7ead2231fa5c221ee6feb1184f314eee0d4a340a56ac5f607da88ad8ccc81948b74dba1271e0ec152eb269fdbe217d3799ab751c6b21e46f2474a4aef27cd98d5e4f90dec09efa9a647c8873fae7058cdfa169c3b471e36330187bc671b323ec1c9160ff5eb7fd6656611ce208eadcf6ccbb686a953df35e70c1616de9f63ac705f75fe1b0ccaab3261edd2025006c8948e02d9c84ad53611b399cdbdfba455f8c6d04212cb082119fae8cf5b8691bdf68b67b4066c4598f701ceb12a14509098c552f3e26c1bae484d9a56835901e87c947ce699671f33979b19cd807a71ff59f67c795fa5c4877394c2f76b97640f986d9b4249dcddcdae234b5d6176d39adad758d4c2ace4328f8876f787ad4714a7e34609db0adcd4572790066ad16ce1ce3f611116188de76623bb5ee6f0777e125cc0200a881ccc1aca1551100886aed49f06b9303e04f3ce021b591e1628434a2c2a94be6689f54d5f1fcfa8e1645f98ecb84e01c68da11227b1f31dd4177efabb3159710759df40eda326e50988f816f51cd7dc7c8cdaa03ff7b4debe42260588aca117840976a39e85c5bd0b636ee9882a3233e5e7dd1b015c68dd04227c379039b3a523bcc2d9210a097e7d92151af9d8d401523492ac19ce00c381adddd234bbc48d00c18b48c9508f579815c4486832967628befbc58abba05a378379b221cf97ac7f1bcabfaa99e869b48fb59eb8621a56f693124346a96e81124535994a425f590fdb987173c9103335cd53be2cc702112190696e660c0c1e70d6ab680874af0d17ebb64177231d4d1969277c420b04b20805686357ab4f6dc6bbdffae1a1eee921ee326bfc14d190c303520213fa741cbf545db0551d7a610f174bc80c478cefb484f671a8f90e28c11eec5755ad152b86e6d78349dc1141617b237224b650463bc8ea25735cc3461b490e836120fcbd982780f22ff1cccbf2d7e9e0db50b489ba5e21a25a903695baf7d69b08b0c4dbbcc9af6667053d40cb6e5acb6bf33bf72be21c0fcf60df875073249e1b48c9b5d817bcdc1fa34042732e25ab150739daccb38ad1a099283e5e3960a3268ad3b483d471d978efd1fafc090f8b0c6a99f7b42bb6ba44b961b4c00d4da77eb99f9e8c101b0c3b3f08ca7cf0c3b267cc3d0b80f524d916e57925ac0838720701dd2bb9d65954d7e8c2a58c7bccbb361114d94c55ecb95564c48e346a6e9396bda341b4e1281e1cbe7f7f16efdab37d7d7ad7a8112e5a7d349fa35503d2d0b51c8b3a1c7fde46cee0d007a2d93d89f7cae3b503a3da77e5bba20f0789268d64e9cc801d09448befacb7842b308c37d9f69cb203fc0aab830018ad9e55d930fa5810cf864bc0c5aed710e16bc5edd9a0b7cf6b3bfbaa5d95cfac4dc1a3dbc202b7f843c7c14fe10e1acfb585336de5bd037db7fac69984f9400abe8d2f6eb87821b7f4fe088d8c078b0240d09962488b515f1f5c798b6cf5086a11a46cae034599ec2ff9712d0b6b53006283c6519c0c79fef0be974b2be382776b292904d30b187734dd792efbaa657362038485abebde0719c7c2c9834586b73c157ed257ad8eaa044473020324b38b7a261920eca4929bd4625f17551299bd344e2cf36c8b1afc765f253c1b071522da8ccf19b9a40752fbcfa811d337f077a12dd76e859b48e665f30810ddc40d084f7705448f330c4dafd8a8dbbeeca4fed626fe91662393404be7cfe8b3bd7f7745e932b9bef3909872b9889754a3ced150a3172e54fb72ce17cb6eec57ea1cc16cd043dca9f8ef17ac3189b94005a1ec2b324c4aed8ee07468f5e0eae1e25141be1e2dfad59655dd1ce50523d87f9e0bec9f3b860618cc80e4fed44bf30c280537ca66f64b9b42f8710e4c31de4743a8cdf69044954771b51bd8dbf37fc0302793ede906216d038f536fc2c816b8e6bfc34579752e5754cd713decf8c754860c63f74049a8eccb7bdef1e17af58275c3226992d20792d043df1f99bc292100d26c0ca4bc6f9eb166958f851e1247487a889d3f0533f71d947856d3e9b11be75838658ed926bfb3a70e27651b694e2fca1877f07bdc269c42bd64204b69bea9c69b9f1230f97b179ce51d38f9b0174730650fc6171dea6b17bc0d420de74e73987a8fad2bf405c7e55d7e34cd9aae8519acd66e4b82dd6ff7ca6ad53bd4faec585ac5b62570b094c1b0196b59065e08064d611d88103252463b0ed10010210fe1ba14c04b0e6a9952be0089647cadf656ec409e36c941f599ac114675ac4b569d74c49dcd6a8c71ce26cd319ced2d653d2055c962b964c00035313376c19fe425442b49edbee4703579379f6f50c3ebea4a7afbf6efec81ff0d96e8e169eb4de200b65c750a2ae19838f92106fb316ac4762c86e0442370dec7d0032a64cf26fa0215ab85fdbe0cda87759413fc0010fe390c5f3bad9eb2ba6806ac05cb9d7a93c93e234e858114872243db2ffad00bff767252b019b76cb12a02eb696623b153a3fe5206609e5ff5f13caf161c2cda1307c38d8894b74e1aebbda761a751f367c4d2aa84e0b77b9b7316d84115f921e96d3e728012bc2fb7f15848bd848babb4d455d8b9a31da64d35c8f45a71a7c2441d580c9c05058d743a95d500cdd8047caaf17398a02ee7f8560d12dcd27ba440f70a1e5ca45a32bbbb8897374ee473da3aa099bf7726b13e64bf590ea693e493407b7fe69c064c00de90859aef653e4b0d6536a8291372f1b508556f7b0b795ba875bd0f2affdf994a1d50ddd14a5976c5cbad2010b54afc85ff9f4cd83db27c2e29758667acd1464b973344edc36d2ddb0eb6c70985167e950dd6df4d09a88a113edfdf048c49c93562b7256cc49e25b7e0ef7b88077ab9ebeb0c811bb72a00e69346d93921c6bc6fdfb9d90ec4a12a2dcf9806b046c9ec4d05d91d36a475053922cc473d28bf1d2054c4ce7f22eb25f3defcd8be05b2383bc3ba749c4b34005325b8b8ccaefd30e39a5f25c84c7c58a9aecf502a99c33b586b0d9d50c217922c10e9103b5c4ff7eeceae0ba975784e2edc63a3d28cf128e81f421435f6e91ab41864597e10e401202081ba864a0e5aecfb40a1a9db0bee5048c81b52fee0675e09b7322b1b691726a23b1b46b60e0cdb9fe3d19c04ddb901aed55b6bda9640528ce4c06c61f4878a131d46b383796c66c15db0f466ffb36235ea49b07e5d51fa6f0f1e215661eb2ba8e6bce6f67f84e03c6865c4ecda9b5dba33672f3daea7e27ad5cafef32677a53153a1df8ef495dd9670f86648f662f4cdb84c6411f1a80d81ab6848122d9344e04a4039689b6f386f37bfbd3449234665fa70bac235ac4873ecdac48e793efc3a678a3ed13f42d00b347ac687734ad6cad0ebe19e94ad52e7490be6f2268bcb29730a29de95a550336a503f80b8f3a778f92a9313c9ae27bade7ada4cafdb776a64bb6e405bc24a19162e6fe4958c03eee805b515d7be043f4119c9e038e6c875c1b2e10685b3a4010487527c9f7187db1caea36af0a0c966fa88aaab7b05a8045481026f64fe0b460ec5d5409d952a6145f1b411b4d1b0ea2ae5035ad8924ba89ae72f3381eb21f571bac7ea7014bb2a3a98ee661c03a6f199cd21b00e87b110bf3c3dfc22fbad1e53498ee7c364be243d108da739fa44b89326a32912c8e0307867e5a20fc486c747492931b7f2985c167e971d5ba0ccb03f799cab163e4c4f02109c35bca95225dea4b40a30919d05c4ab2900903c87e6b8c049a0a28f1166279a53c9ba3c62ec4b2c1513851f0e45cc02f758afcde0a02b66fdb13cf9d3dfa4aa02a0f754189470920f560808d38969334e79ccad44f12b076bf9658f36b71886d4e23c5bfe169492b595abada00061beef7469bdabad87e6c5e9fe3b36f168d2b3fe01009f2931a9e1a84a7e68cd435e18778bcf91516fe4968ec7c12480197423cec4a3c6c2ea501c41e5d95f0c1a0903ea0b1eb7dc8ac1ed243e94f4c318ef559e0b32086712fc754fc04e70c7f058575175d943490a74a42bd2ae3e53a0c5bc9737a1ef606d39c6d941af38efa86ace284b0e64263b4f362385f4979686bb12cf286af703f6111ceffe01ae8175ba03c06e0aa3e93ccfbc9b54f9722e0c13b7554f568e308afda12b77550bffc87b3269a268ced931a0c6bd14bac0fdd62d49054281e0dee668381a1e5938c31990d71a8e92ba05d34d00331ade128932c00410f1da5471039f16dd65ae278f8a55bceb718e0a9b778327a0ec1573db61be95b334c6c2b0630385d6aac2ec4bdf00a7c4577872231fe878107876bb2e318baccdc441504cfb5c5e88988bb38148a184f59e5d4b1bcbc7c0d451f0d4480cf4f2a643706cf3e7298d719bf764743e3b6b800acc57403f819071064bdcce1e7032474ac54055f3c67bc5553c8f8c23b292fc618f63e6105f68d0b29dc8e35ed873cd07c5d1440be7a24ed07c95cb8ade8e2e342616900754caf2599bcce51d51181b3bcacd1f3450bb0918b4419d65674a0953f733ffd40692e59958fe8257f6cc8bf4f6e9fc340e8acd7e4c2e528a86e086c606f3bc2c6cf8546be132c9bab4801fc38a210f17dc6c3452850d35f6684bd8e2223362a10174fb6ebb4715d9cf09f9d54ed7820d143c82df91a36b20e7963d17be428dd248068631a7b2743b546535159568be1fd042b68660ba33b5e104c6ece5aecfb2036c5873322f41fca72f89b24d007d837fb8a6a8bd77ac2e56a91693e282055132041e5837c5d3ea72ae32834f8ea30063c706d30586cfd4c00a607390d3d6adad00691e5e333af1a9499ac847c6f02e2fc4503e54f01052b337ef1f2209e80bea309c976e30241136658f525a44df40f2acc8f141afb0c7a8dcf04c8da5bf192c2ffec3a3d8bf0d95e24f4f23e0ecce91dcef2f79d3d7eeb9c8c2bf8a1a0ffa2d0bcec75bbcb33642f1b634703311aa03b24c09913b86eade50204398c03327db8a2558bca58e15c827e6718c1959ec302d74e5ad1e63281368f136af88b575cfbb7cbf63dc3085d4af6c87fc388be5f02071fe1776d9341573f764ae46f507ae15344e0ea411ca52f6729ea3344fc7ea9121e5a0010ac0ff2f6aa653e5871ad236c2f0c81ecd17406cc89546330ca1dea8e68c11a11b69629af6e3a3788f4294377df4a16d7372ac2f115a2075e48c74ec38082e74f48097d498b6217b265b37b05e13c2d8c9dfec122c35b8dc8db5089c68fa586ca67c6c2fe12e1efbf163f6fcc94e5f71234d1b7c75e338041e21fb681b267d1266c1a76a0e4cbabc1a700985a8654b3fd087c43b38c9eb15772fadc4d2c08fc1798fd382a22df4900571f8725bd0e173b0f920a7425529e3e97b9a2d1391e1c700fa2bd8f79ecfa5d421cef1e33deffb007c0a5508d3c8eddd4f7da44a01f95c52e9531b82f20c6e9324c596f129af8191c7b9d5896947c8b00cb65c4e4ec28ae244f1acaf8387208f8e79be4c7108a7e2edf022facf2fa262f65fbd1897e2c2fc4fe2149ef8553827311417d053b3b6e5b24ca0b99e2f54bb14597db8bef293bfaa0ac5a5e6a80923624e6b26bc9579f82c50c194770c4374611da795901bc8712e65cdc6abc099fb46e0c37bd9eb656b9e918b0789f0f5ff6ce159b07abadd4c209169dad74c1a701787527e3e2177d0ae24e81b8fb4e48a57bb10165cf91067036b1237b478bf68d9c1ad97b22ce3cc630e0165208b8c9965f5f1977424f783c7b0098b67e3be9656b6aa8b283f668c9876a15de613559d6eaca2721f9b263c2f857fd8afa4f18217fe785c04f90f1e439736eefa73aeb4e9aaa74278da8b78c1ce164ab4287d272e50f497bbc483181de9470c3c1a845f112729e2ecc99b46d6a6475054904fb2f8bd6636c21e9101b667ed889d2ec19c3ca97384c8d312a9af205dcf61c551bc361f03dfde9f10e6f4d4cd466328faf45abe157857d9c49588a67f6a13e90ab2adb4366d4dbe1896920809b3f8515e54ba82e7c0a19477b5803abff797df8b95e5ee74bb040d7fee4f86d1035320b29659e454788b9756b4c87383b9b0d88807d06311c67b15d19bd60f8f5276990f8a706d54d403183e77d1072b300310e6719f73c646e5f968d7a3c392a5fea50a4456b007f9626d3e32013b899e090b755a5f15f0e0f682f30c467a3f4700f31333ef7c860d3d8eee8244d6a6c272782683130b16406b455bb42a3e80c94b3a68f56c06dba282736e0578b7d8404d71f9f913f9f6bc095b6e2f9e063516a36221fa4f340f0fa54ee805fcb6a9d769214ea8c20c8b495de24ce56c46cbf1a4a7d940dac872f38f94724fd1b0dc21c7703ce267315f0624122e7afc324ce77a48bff46d1dd0ca27099a75e9cfd5365efce8b65d21710bf1c27e4e539766b605d6f95f08b8c281f8ce7eaf62251f39547a53b84902a27255ad42e18271f00d2050d8ba0e67deba0dc2ccadeaf91aad09c5fc3ee2252c7773c6bfc0c18069e68ded1b05b0e66ac1e9a8d958853e6722149d344e1d94f9cff4f5e6d90bd98ce5e41b9679ba1f67d70842abf60d6c5c2770071e9076a76f6052ab3078285b1b3482cf9e8bc086baff66af3bd7975ef2174f577686d7edb41d03d99904e549963df5219fb52c6171a4583ffa9b92bb29b9342cd988567dfe000d20792c2f64ff9855efd129c89e05dee1d39bd3d3aa3c60f1f07eb63a018c760d7f4a73d307f425acf1eb028e360b2565f86e3e369330d3c3681132ff2a2ce3b495cbd9e91ef5efb21ec32c484684a2941ef9cc9fd276eaa7ec5c7090dd455f74b56346c45123fb4029d2efa1648f00b5f71b06d879078ccb8db79aff3e69f8602e74bba0a3fe029c6ab948ddfc20a60ef11a1c34bfca02e3102ed490b01f1f148ae56e8c0d11a47fd84fd015e8c3f4a9d9497deeefae52d87f7418be2598452d0926668af9b669f440a3e0d5c4eb02359706e030720e8b128459da3406b19cad7c257f5d0e9d1c9dc17b0c153c776d1bc1ddfd57ba1e5f3c33f2b8d010bef73c8d4dc8e53d0bd00fbea1aa633dc6a2f725f72d9390cdd169ab4b8d3abe0e56d0141057c00660d7de3448e371db4a2bdd8b8dad2b0c71c749529683a2bd0540fe67ad19e13367d6d8208cdc482a3be82e0635403beb9ee273bc957c978ed1e74a0eec4b7e2b1b0c07e14af432f7cd0dfeb23ef872d92fc265985bef56484c3664073293f26756418d20b09c9d83226fd0914fdf9ad258d1b3ecad03bbc9c6e3229e24385287c10857e5b885892070d5e51cee530e1b5f428fa060d2ae8c92e25f41b981b0e63d7bdb227d53b5868e1ae3b16fdc0718b6fb2e0c489cc1cf98e9eaedfb260d24a88535c8c83d8c630f8e265062070c3520d1f228f5273e19af21ec46af55c8de1d72273d9bcb739f6224f8b728a2464da0194bbd9c586022ea9e5b84ca3c8967d13c6f7d08425cdfa238c9ec94b75de2688db95803f0929bb3e17daf0a9a9179a8748c063c9b66ea11bbf6e5782c6132102c6f9965071df02b4bf2242ebeec349f5b0dc314dd4c0c4ff8051751f946b3ee374818e7351ac112461a0ff3af4ec0a4903ca7c3f088021f355c0f163a549163a496c735bb1e0f42a3350f492658fcffee8f253b242ff1208c9e63ba9d23827169b8fb1b39c872d0c470a50e53d1b949e081a8797949c712c48393cd187decef183e3a128f4cf81741d3c98bc1dced3e642cac5b5d885d06fc0f183655994656cfc3e7800704c0e13d7b63085a9552875ba608a5b6dc6f6f79a2bc48ebd5ae195543a761599cb077a788591ff32b16a0c5c49de88bbc0498022f906794b2f3343f76f66ee3f727c7c22eb6f37513d3f51808b0b166f6a632435b610214e3e81afef9ca3c38d371b8242a649d3d4a2bba1f30a3ad49f0bf3714be1da0f1621b3bd548fbd8d76c90fe184f8dc9c383f10d7faa93eb868083751bc855b8ebf13d2e57d860ef6dd0e27bf2300aef35094f4d4007b5ed607fa6063649bf097e81d5f29b58d6599aeb237846c0080975715d49ae7426f9e29008e3f22aa4393c1b8da20b8ac6cb749da0db8e4d5edc8691a96a6f57966631d2e48c1af7eeee9c641136e80c8d17ff09b79561ade14a627dc4870117d61de07ef8ea791e1fa6e90545fe44eee730d687004277ae81a9a421d22704fcf82396a2c205cc88f55567c13d722f30e921f4d65bc43ae9135a60fb194e6c4012c7e8738c9e6eabae0363a7abc87c9ac63d8c260a320d6fe6a04c53f92059dc635ca9f69807a0398837b4617f87b0330d08a4cbd1e00c7a733285e7c186653db8501a6e7b2b3dd1d5e18ea2f421f7bc770860f6266217b91c2b51b51446a152c66f54ccb634b66b639eb1da936221a7a1733a06caa2c307c410544cd393ae4685c4c9eaaf1c953a1e3fda4e32b4fc5a9a139e0acb992105a346714955722b542d3d930712ad9033a6e368107df446923c78f8f6395c5deea23d52886023f4c1aa3abc6e9d0b5b583dfd72509190ee985be6061c27b2969a239a44e7e5d8a1c8eba86f60a6ec87d8728366f6b28c31f5b686e58216e2f2355f26d0d0478bbb31a3f0169d20b79b3744c89ddabed8b65c4119011ed41df4087d3e2b08f48793c4be88b870821e4a5b8b986f063406f28139e6bf5a8b60f30affa4620d7978165c86448fae38eb5cc02f0785d778baf070a99f95b67e4c784edf850a40f475b32f44034b5ee547e388f28a3be757878aa1d42f426ea140ffdf2f46126357d17c19bc74ee970160674f6000e05bc94c4ac53e1e1d17d7aa76409b920b48d0f9646b4504007209add32708668b2dd8eb96fc0bc714a1dbca2ea3f9edfaff64078c1b7f0c86e42a04f57e5b2e617a88c7c7159cbfb6cb11ecbb2c846526ac10f7514715f422bbe87c4fd50889fdf02abd83c9058f0341a529e7811c29b15c072257a2ff42707e39db5a4f23b7ff87815306e34825d1fdd4349e6c1983d640819f4345fe6a7f36691f06e7e729e21cbd2cf76325a492ca41f50ca7924536eff5217c01e52bef22e5873b5071ddbd7805542679040f62c9d24f6f19521cfa0c9f7c19fb3f7083ad6b45d20ff7415d4a31cabea482f71f3ae92c72ff55a9b75987a3418df23b202aa439dc3825c0e81c3676fe1dd2853f638bda487c73d2b8be2eb7697fcc7f3f059742176d1dff903efd0760024054f8a806c7b45ee7918dde2a624e1eb728d970e9828f65f2194ec0061acbc8d08665fc0b88a47f9b96ad5d40e1e2480ab06311ac4f3a2e8c859c3722f1bc343d3bae670bb0133f35c240987248064bebb20f54f2238d0af326edce7c2fc41a29cfc6b8638171044d033654cf5982804dfebd1a24dd1423dab4aadc74001f8206db13e2202834792e2e9c100f1f00f7a2e3d0929d887a86d702159a3ff46a5ed83ca7c4f4684dc3fae201e32166df72c113d012c6fdb4852912dc4c48acc8b57f47063043ca9c57e233b881f728fc69138a5ee1d1c41ae271af45a8c38f053adb3dd614997e30418f24f4c4dfc92a62dff5d3ae131b88d6e4a20cbab15b1d83a1a967e4a980eda08956fa31ea59103c485e9ce36bf27a241daa7c2223e4c104e47c186f8bc5b277be6d6f67d7f0df81fda0ae7714be761adb56f9854e3965c56bf09d795c7e89a673bf2e04d75097c276df3c3741cb59423929f7a18f61bcc6cb89ecd812db7eb1e103748ef11b958a047a8ba6a9f40c6b9c183144d4f99d7e0c14858d10e9e7cbe0404aab97741e58741c6e81c60069e412c961da978fab1bc98fb4370e1d3fc10da802f3a3ca4cc040cee82a683b67208ec5dfa3c5dcf4797c77bebe03db55b9ee5c0e0abe95ef970198fa78161e8936400f221388a7f811b85d9c476eda10d6896c161a67990af6c1a8b8bff5a8336b7687dd26d524ac4f01019fb34371e8f23ccefefd83cd8035a40f01f0f64388723bb4e74226fdbf8597207081ab80b363b17c2f3eb008a877d85901b1fa40f8c776d96d082bd499f6349cf067109c231635dbc505591262bc26a2ce0267a0684486d969840ef28129e031fa3682c130b7e374890f6f2dbdc336c3d7e1640e74855481dd8c402a7c49af13aa4ba74526097db3ed623167072c6185c479450c2c39cf6be95d7d95f01a386d312b0fa339eaff729a1f35d8600fd8706ae2f04bae39bb230d03b2a5c6a57df2a3a0213f10cb8a9b9cd7c149247d810d85232dc2007f8b2e14fa994d0b97522bc8b09d65b67dc50d04a3202dcd30f4cd311b3ba2b21e4f30a1afb902cb0b5de813ca61de0e9386706443fbd6ce2b682a6dac3ae1c57266cbfeee8f4443c067a0fb6c80f27f0d1108c077579408218a41b2d4f7e40b7170df4ead303b673945e167a8787daf9a78ec78d7320f12d6b635ee867e9b05a6afe7587d43bb9e47c565a5fcf2a9bb95b89aefdf9e2c54f9002e93a5f663f1458f0af6ab83eca6ccaeb1a81507e9a0f049ec00302bf802154171d5031c791527e12cf11e4b4409fdf50bc4b3e5c40f7bd5f46fa468024bab5409997a081e3cb5814ec2244ab5ec5e2d7c3f464785956c286a250e56d8306ec27bf0241eee325cb0b9529378f94079f32c3d2374656cef784d505b7747e8e210a0d8cfae2413838fce31fab9fa7e47e89e3ca57a06563de15b2664b19091fb983748b6608f5219371b350872baf10357b961fed45109c7c16d1c5c3a028b167c30c6fd845682306597150bf075af292fcac6eb35bd158c76d8a2d68094961bec192b34fdd9d61dc7b97533ea565487fc1d57ad0e20e33105e9b77c9119c3bd44ef8033046c94638b2dee76f0479415eaea632f3830cf773e81b62bde8e239c66fbe8ad8bd5f9e388d2d80ae6245027f8d34b269620c1deb544d53986df2e33e079b57c0dfebe82cf42456656f1b93aaa748e8f05a16c53bcb94c11bff8d6a1d5d35b48f7520f3d07bdd365e90cd39447d6ef9b76143de767d6110a91d0276c1f73041b091c8567d066b6e9b9074fa0d4e7c1f85142d7f64e4f21ecdf7a0b0081c5854f869a5ee9e6a04a1b3284ed44932653c5383b6f7e200c06789bad4a80742bc5e11493deb7671493e2e5f0522fb98b016c87333314f0391740650beb0713ecdf6271697f64d005ad2d2841e4aa16416529be152a6e8f03a520f5f1b48a7c9a85c3fd42fd1593fc470132764754feea243b0524363d24ef123260ebc6e9730517d14648703f6c2f8cc55a807ecaad343c2f43aadedd09e9238aa77b26099af9c60375cecafae34514223d8eadb3746d8bd2939487f4993fad153d6b2dc6f0fef0230a77d5458e25a805e9e7804853f13f0f369c42b9ca8830507c0cbf8ab808c0fd8c5d553c7e0bcc76f12f70c52d45c628e3c1febacde22618403b1a275c205a45f8501af8bca34692f2c8bbb096f82bed2fa970382da3e58c23e7386d583d910327ba14bb0b91ce5b40824d00f41c4563785bdf9558d02fb87cbaeebac0d3fe899eaab3d9e6a19a5b7ee6503938795987dd1460a1d0a0bf7a20a90385c6e90275dcdf01b7553bfe604c576cd3a742d33543eb48c56df1cbfe961ae3e9f82a5509f6845f03957a4bc8fe1076f60553b966d8d27f401b4c34ab7f8051fb1d7e94d7bbb02315eb5abe9b52a10ed2b5b227cae81625f311afc1c32932fe7967a9231223a0b05252f92e4a8030803f9aa5525da7151c7bd90357986b14a87f2aaf33f3c907d112de199d1b13c6fd1883d4ba45593580146ce5025ab3587609517f490fd08176c6ca41c089c914acb8ffe2a7956cb363d5323e89b454bfad670c92b2153f3e22f5e7ccf2ec53fd2f0715f0b875a0050ad43a9b9d88db0115c2ac858870d47f1189b1f3b81d4d7c7e6e9edc326592d04a643977b701922a73221b96c92056421a835fbc8800b9a0cc369c386f0f329537aefcbe2f7491b897d80af97069a02c1550009d6a8367b0ee560d811c9927c36853fa7e6a3d779d63dabae927f1100fa513d1026bc903e40bf3165d5e9ba68fd29d10fbda420f379e028f5610b267a2bd589ec804a80fe3ac222af2271fdd71c57661f2d34bdd80479c4ab70239f320bac4bb1e9690f432e3c4ad44a1327e9731f1b9b6d9644e46b6e20d1be1ce4fc5656c97d72771e67f1cc8fe666f89597911f8323740553349cd701933f901d7baf30f233245e89618390e47782d094679bda748849a7725b0e108e55be7a2d31541fd53965139053fa9b1fc45a51d3d35b41b4784d40c3079d34f21c50403e05884557585c742e5fccbee80fd03f3820de5399443c54cf84be8b21e6698d82fbcbbd9c3084847f02dee26641aa7806d84edd63672966c05b023d25ef913c1c08411ff9b5d24e540bf4cf842edf8899f3730f4fa03fa65bda5c9cbc7e090acfc7a237e80fac6a7ce79dae3f88b2eb471caafcb858ceedc2ccf88e2c305e6a25c211c3f65c6eb7853772cd7993e2a127d48cd91f968ebc5f95dfaff11cf9c60917e6a59f30cf25be2a63d801e6011caabd8e45030f09dc3b4f926fdcf58d84fe32c3e3d71a19b5960738dc4694234ff148ea5b66b31e8dabf0716c2f775655e247aa26f927505ef88f5c105ef701f4b3b8889cd810e739c0823ab0d6d6031fd9ecad1fa89ea1d8817f6155fbde10506fc4c7cdfeb1b180ece3b7fe4d28cd336c382f68b5f4721f72bfad4867c6b298f44850c06e01be5cffc6f6fb4915f929b029f92c19d37d7f611f5886cf7f40a8f2385694fd252c085d22c7a1fff814b0738840f9b7083fb4d4e5ec6873e4dfb1eae527c270f490571f9f96c4b38b05597fc9e9d7d65acaf2b0315aeff9d8b9e6133ebd29e4c2961046684bc9c5fee7d515fd220ba913a1b9f0a1ba58fe428842c761a2f17fd44038e22b9e5bf99ded153fd65e8070e83b90e1e759c29c3eead3e4320867b6f0ae9e1f119237ecdca3df50d56d0b34a6748229ba0d4981c36745d69223b3943485aad13d95b5a9234831fb24435cb690964f7261548ab71522e462c561be461594a7c0248c3f140b9aee33cc3b59693458ab04afc0d6e863167c678e4e07e7d2d46c38e45870ba10a60376a0c934ed8ca9c908459a51800460d4de0ae0299908a03753e87336b773b488af387976fbe1d1fa3980a594c28c6445af2745acdf800a11c00818f251f819606087a64c878ee368210806bd42c0eba4e8883cac07865baff865cda1cf5f10bcadda09dd97b5e38d63271db4c6cc9d4ef0b90c1e1d1fd88455df3406510bd0652d6eee02139f32155317a63ec4d569204d4bd38065c204d559db93525d591b5cd909b5147365734a982429819a2b9d240871f998b5947892f0782939d58c0e7678e21985eadd1b84f70c510bbbc2bb1213542f922073b093931433995f2460504f8edcfdee529392ded9b5698933346c8984a40896a132963d688ceb1a410f6c49a8f159a8a4f4d46364504b79ce1be733c29cd595e7d603b0656bc88e8408715b2ccbd770755ea5984b7a4a0b9ebb23cb1e08e039973709650a5e607d344c660c851945b4a41301b284240c6ec56e8116d383f542005ff6ae96974fac3bd36f31628e4366e520160f3ca593fb23178ecfa295b8b73805380f2e273494e29b8fe60e7a0e93dc577eac5e4069f926b22e5f071337cf236a8c110a4bf24a59083597b11b0dec244c7654a244abe6a831036d0876235b577366dd907f82c1867f79897413c3467aa995d4635cc9db537c147d8d19099b95f784333121d3777f35ee67ebe84a5a48396c60e5567108c2335801b06d0097f912c49a0fc511e19b3a3c683c253c9fc968e4ae1db2740a1da98d3031f1b6489a64441a3bade2ce67e7e4aed05fa93fc81274933f502ba9e9ba8cb92497476d62f7f25fc0aa6d053406bc1e51b523e334bc8a3146a7f57de2faf6cdc1d24efcbe9961d0272145b16b0b2c792c59681b8869831fa02be57fb7b03ca8b84fa71a627de517c9fda34e81f6e9ad7d189a3a0fa84340cc5302bd5ffc529ab94a04f9043707de33b3ce395b68ed5a23f73357655d8ac8dff33a8a6aaf0134bc805c79f3b52df9d4dbbc15fcfd3a1a95d6df06ee399917702b7211e0aa6a08340f1deedf6042e0889ec2ef4aa272c720177da693da1d5a56c1686f5ab0d15776d091ab9accdc2ef3b55c38c7e3af6f4a7425d18ed3264ef132d83f2f85057bd2164efc4964cc8799e17418b5681b839897772c1c741297175ff44d678e6ff2c56cca3129e71b8373aa57d9070251e0718858d3023c89ac858058bb05d1d8bc60d47c379456ff51f9873982b9cb96bfafa5a971b6a3728fda13da4c4698f99794e2073b03f314607adcf2f28247ce2d340da4155f0595fb398e493ec6dbd6de0a9878902ae3e79218e55b8e451b419000ffd82dce3bcf7d8f17da7300387ae343b357b3ccd4f35487bde4d8c4aba1ead85e46716c3500fa35bde43c6d90eabe637df14b983f9b364992eb727072b04030be0591f1a5c2e0789ecc283a69c28c1fd2964283a925f50c3b87da526cf56d0a35ec233a3da64da6f2e03347412f23382569b37699d3146a94ce2f6466c0bc6505879bcaadcd254c8177ee680e59cb2ce73f0d93dd7343f96becfe398d2f176e45e94fe711b6a970635d282f15a7c4fb7e949f1f4bfbf6801eb4760d3549d722b3f95ea6329d14ca801eb350f3097c20583174294652f5228e62790c0d4db3d61cd1093e3c791c34aeecc436084f43aa70e79010e1c92824ee1b4b027e8bf7c49b50a6fa8426893b0a07f35df8e86902280cdf8d37472bc0dafa1c3f1e1c8725d5ab06d33d0739242e15e5c2cf5662b8af94b0e3a06c62f95eaeb81facc8a985865cb828cd8432080289bf5b05c1376a79d128b624378d104b340b30b3196df780db181164d64103f7149024b894ddcf273cdafdc8113faf35b77c2ad4d80bcf364df19955ed9161601d83ab923b99a2f4333d47f45d559fd7e6e8781759bd871451bbe58e6b3ca92feeccb2c42f0a53322f98ba79d2bc20ba4a48957eb1638bde622b9c998fad16f56f245b4c84220eefa08a148d1781abb8679a1bdff478e83dbc56fc10b7a3dda352f5e3ae8a3c2891577f3ab1a58d45edbec227da3ea5397609bb0fbecc05099fc459dd4e648f3c93a2da8d56bc410b08e1b5971014d9026064c6409110de460828d050b4dc7c352ace9f34b2e9a4563f17c6f174053251fffa858a1f788cb28fdf68fc885fd5535f34dfafc0a9367165c0c9a65c4edbf6c3bb182dea1e49491f0294671312587a2243683b5617f483ec06712d412a6ec8e3d43709d4e919727b6404b53bda4900a498ba0249746413a71d8403cb5be9fd699fa0a1fff1a16a730a65f0c424bfafc7808627f99dd43f3ca5ef26a6f4b0421ffcd58a8327edd17fa39ae55682e03d1ca4d2c71d4eba830638f491823f67dd42eb426615fe96046fdf6d98f20a59225ccb1513da4f6ab21c2088dc0edd3c9e9fe84d036d01db919837b46f8909fa8953d12eb1285ce6d3c2e55447c3dacf8286df2281b5b3c630bf4d8be9223bc6de92b8f2d5448ffd33d4ee41d862f964040c5a8a0ca1b3fe3839d957d701a422d02462de3b1514f8aabcad107bed15518b06e9c06aa44ce452862ed034ba1b2d8d1fb8b3731b8922fbc279b17b0a92175f94eae071ba4e9f4a06c22d6449972c6ecb68f746256cbc94a7d35755a26e26af274ee523c08f8a50f4582a5e6e25b91d748f691d7d7d8fc4236aff4c2afddf26ef17b33af4a497db6c0aa0e6dd9c5a6c443a1cfa4ec76e3ba1f3f1517a92f401a94ebd5a3cefcd44a3e77b72b689181870e1074fbe8bd0c7778b6cf489b1e3ef6d3cdaa29bd66f3165f65652d9d71e317985c748afb12555cbf81c7820e5200c8948dd8514996d5a4bf3632fa8386d6d8fdebb804567702afd0d5d15c815723ce9aa21a45de624805e8b70e197e8e47a813048f412618ecb258de9190b1dbec5d48bcf35567d4820287b5705a71b28e240130f55f1174a5a349ee3aba32d22fa092d531cd006b02fe969710ec444bb8db6c3ef5830d5618e7b76d589f2bc14626b93996296631c137f8839277b0b560817756cdba5282c7f92906d23680574d2a5a7973081f103ac90facd27187f03aecf6fe948fd47b8873fba963f45b573091818b8041a69bfa0a78bab3949f547c7c85f5003436fd9abf4a01828f65fa6f02738d6d9d3bd5504cc5c26206923a17abf248beaf32eeafd30d3a496016633ebf1743d71dfcf9d4c045dc5071a9e61088c134155740467875f244ad18b63f6197e1e049bd7aa9dd5546c731e47edd24f2091e748702bb881253b2762647367d92afb548517fbb741065ff4a0a8356d8d7c5517055b4a8c113f172792e9a8a4b8ae97dacec3d4d9689cac2f1386e3a7a22c3e8c277dbea563a3f172843d07c49b8f7d00f44d761e1c4922d94f89b2d5b85d82cfe8bae33a9afc3ee389447d15f7c227e4c0f21dd7b2497d44a7e0d95c443a138c006e35f7fc2885307d6204162df98087265211e463c8416e015880b698efae06964afd40521b2a3f5c58e1c1a4566cb4572e47b3b2a7e37a14799eb50acfe09082e36998f12374c0b89292495d7eb0f57f5080f5112e42d73d62f6271677bdd352ec07935c5d6f21752010321c29c30bd7b1bae8a58dbf730104311a6a42ddec26c4aa51d076917db42ded2c214d641a2574fce52c301955c413e7f26bdcb35fb9cf2836b34b20007e065164be6511d84d0160f12e022c5ff558c9b6b196f64e2619f5a186091e213854f7600272ae04440b7cb7ca8546dd52e3969c4fef73f7e98a4d7a6c5022165bca30cc6cea69f7818dbbe40444ea74662e835d422f81f660f3342f31bdf2928124749a9654bf15b5b083a164f91616923eeeb7881339f6f22a17003f47838a0d6403e691b6c0beda81c8f7de80f05662b5d73595e212f2d65c66889f365bcb7a0d7926b4125d624da558a9b9a0a07a91b419f31969917690daf959f08ab768931064002e18bc01ca2fafc1cfe80d5050f2b928595c42efe2cb59107c2e4afeb6eae1d3956734b673b0b30d9a8767c50b067f6a35194b7ea90af44bb5949f2fefe6b508b97325113e34840387fec90941e81d2565e63127231db3f945fec220e3372593b6e171240ff20418ba3f18f8dbcb70e1ffaa60dd732f0278e0130f1e838982d7c822ac7bc8f879500d13cee20185d764d1e1696c9fb810d9257b8b0b0047a2bdda70c361229cca96d8b74e60dd7b3974df199c61db640eeac1af9af28632ea9a48536408874c3b76b7edba06c4eee9e5440611a2c7cf8c0699299ca0f21d38809c51b7d5ff7810f50a0d9bfe77e1c5ae54eaf1a42426dcb1400dff90c2d4570db778133f301f1662f77720c87a472ec929f832e9bf3caac742b3aa353f2bbd3410cd3df13c358056302de4a0c286d0e7410fbef9fe566289b217b1924f72b2b20c120ef4165a9439518087bf6922f84d2e873c8d92cfeb883ae96dbf9dcaffeb91f62d76e878048715b66b6a02a73b74d4502250390901a21b80839b17f12185a71280f4caba26db4779895fde817927262bfac68712728cadaefbca38248f32b1f28e5b23661ecacbf7cc39e0b10bce90c83aa278bc082e9f1a6ad6c22716d2ba8ed6e06fa2c4b64578d0e2b41e423587b2f2236050603f26367e8041ae6d2c3ae591e816feae12ec07a27ad852a56dcf6542da130171e30587237c278d1cff4257ba15cc14aff597ba39c0aa6a3fe2a4d9e7cb53ab553141169c0a74182168ccc4168cb89000aacda902ef4f61e53c88b6ee2de8987d8be2221f41e2f7bdb232b85d9603ee6455f1617bafecc56225eec649b4515c90f704e3427b3599f91650554e39a4c597bc517ddc630d0d236cc133a285fd0c574d7dc9fac2cd9ce06ebe0127b41c0f2fef2ab0d10282f066e055075e5ca1713f59cae244c3c27e7c79fb5444173455cdaf17d08373c1baf2432289e13bca987c0c5ab05d0a64c92b2163ec166d30de07b18cde6214f8c57a0c349e9ad1fbca99f02325b4fa27f0ebbb6a137f550492def1b3f42fb965e5450c793bf08366272b84681ede5d9e1284c6d39ecad8e4d62aef647ceb38d010f8081b15340b362dcf3283f7cba614fc9025954dc5f3c8b3ce3ef78f04076e6467470f4184e1240067b5041e605ec482b1adc8e6eb005853f7000d1e3407c90a73a020e5dafc25924c2775912c2b7518d47a33a4f49012917bf035dda191557f9573f75a525e9dccc69526c3f2f42888fcc9c0a9b33bc592e2bfc0d3fb0fa29a5f24c88e6eb2e4f166654c77d469f09cbe55dad8b0c68371903cd2acf13d25f478315c98d701a9c9733b9c1f421031464202e24f029ca18c628ae3bb41e929f3e219d99a5f48f3eb1310fe1327e6a02ea25c6eb3fd15a9b2e7e880d9c10168dd418bdc373cebe1433335bc44af8dd7a0d4d3bd3f501e4b4fd32630c3e4330556bc5a965e7fac84f2231d3ade8767ec3faeb0fd21339eb957eac37fd5ec9c88293834d3b9edf02e464a78e616f755d1a5594783520711606cb7103dfd2ca25d1bc081b1f7700bac4fb76cde4709de9742d9f952b52aafa2e4e09e20cc1741277891c2c82d6440c887fd24e90b94417ed3f4658f486402d2215a18be9d04b437c5d1df1a9949e68112fe1f909a642f16a05b9566775e821d7e40ddca79364bb0f308c2f03da6f903b800f2c9e04ecfaa75b091f681b71501ac538d86fe936bc817e8fa789c30815df7048b3bd9c2f3b38eea7fb88a4e2c78f333a2a2ce14e7e335aa60fa29e4066deb9ab437dd74de74f35013d9a2f9d21919338b5f18ba3751372680ec106de0490c1905120c1ee7faa79d7cd3de4ef4c73e2470e513881ed10d7a2c3f36809d7bc585f1635e249799a2e309c8e4766f68a52bd874d33c9b11bc8a536a334971e453fea0b6d9aae48b609265b72609d93f548ec943532a68c210a8336ad9a6a6f959f266c6551aef8aa7bb1683f95c2ca21b73d1826fddff9f5a0b279e6db78a6f18fcd588289a3896a3e417b9347551bbbe3ddb45f7d9e83a7d746e829fe0a1a963bdfe8169b55e62c18787f069f05284581f2b6868fbc96c693e23c6b31f975d3066860e3eade14facb6c8be944e7ac9b868a675301a8c21dd2eb21bf0a7344c3f29b8c01f21b3f25376355d96c3d3c7c11dbb6383167b88d1d8639974e25d8183efc149481f7e097406af914e7601e627ec08f1a9aeaff73bf6f416e5e2af714caa27951475e3f3e9b61616fecfb8862bd9247addcedcf2531515fd5480c68cc445085d0986c3bc8862cef93e11b70fcfe267684f3f96e485efeccc6c3a1b9eff1f265f3503d9836dbecf32a6f810a270b8822532dc06151c0e9ac6e55de451d893ae39dec5d86fcfddad3969111a5fa126c703667872b1009f37ad92387f46b9a17f277794db4a007f164ad7f2e116e17d33b638efaef9fa8028074fe421f74b132cf9d1df4a975b1c7ed22d680ee5c1920e03a0f46f218a35f184251fc02bc7eb38a9f08d5ee4c92a29bd0b13ad27014ce2034cad76914e1b0e24b440f320a9eabe06781bf74f786f130236024402ffa23cba6f3e336c0a0e74ec281a1f8f9953a52363b144eac8c623ef9b0ae2e118b35e2dcd810fd80c7c4e2eca5f34a2b80be4fdfa8d1295bd86b5e34b3a26f59d22e03ba5f5691cdd19df7365c306712085dfd4b0d34936c23aaff5f74364206bb7155734ac52efcb7cd1cd457f469fe448e62e22bbd379660df46b159cef07113c9c6b7f6b48092d7a84e405b5cc0f6925d0551c067b5130e90775baed40c446ef6107b88778942f6c4dd2639d4edc4706a2efd9f2ea3859b41e4b0225ba9005d97fc2316a36213ce41d111068e02a4a1fc5ad890379cd25ff92715d270294e670a9e9508a4bfc14d9bc87fce1a2e1a842b882b3248d4856fb361d565f37a6ea408cf47e8320725f96c187bbf85bf148832a9c388ef3655c45f96cd5a22fe12161139138f65dc7b3af8d737b4e523ddbd8ccf0427474c99e1fa268a3728d99d40480d744a21703c030ef3d311767179bc3ff6dcdf9a703ae479551e37ac914c1875590fb36f8dc366bde0df7426bf856562d9e06893dff6130e1619dd7ef7c0df8a856170f22228f885691d9c0615029b239e3befcaf8e0a6d5a7ea08f275b9f2c7623fb217c447d1ed9706662f4d59525363f581486a705163e8a4b5077557f8d04f081c0cabaa4998d9fa191f927ad26dfa5efeab98cd0f52f4741368d5601de0746a7b9006b703115607421d8d8e3e1da391607527e16b2eb36c437be0ad48a86b281589331dcf07a266c40b6302e9b0e5e3055d6b97d1a96296e561189e31b240074ddde44272e6cd437b27e9feb0dcb8660a9c12115a5bc8c6af9538ae5b6acdad9b3c9d87c5911412eb6bae5a3f8b13e05cdb74741d8eb636c18bc008da9a7428be10f9882f5db7193b9838d2e4f1925c4fe9014e48b342e20afc864e28cb96de44bab2dba28b46d2ef2018bbbd88572533e4bdb372515e1a055bf5bb566c06f017342471528fd0c5a5eefe08df45b5431d68a60eebe374cca795039bd9b57d9a7567addefd3d043430f38e3039e9f8c02f0a2593a5b469019ef7ac42243f0ac7526ab61f62ae5947e927437572df1784dcc4bb256ec831ff3d2a59b161baff481d9f851adb0be924d0fb7a4addd3ece5e788a332aba8751e4af6666ea5528424fa54aae13ebb6f8b9b4372f9572e0b30049b031fc81f9275049dc50c29f1ef2f5b20b99947eed9102bf563444dfc020364f1da1b279007fca794128e89ed74ab281de9bff3024852b15c57a04ca119a0b37ed516070a121c41a7b64218fd60b92f122b0b4ee15602a9e4797104f72a18adb7d912eac02f94e6ea26ca3130edc07e69bfb80dbfaa01b45fbd77eb78ea6cf4b544a745531dbac2319ba31cc882a5392807cc948a11803dfe0bba4406a057501fe8bd9107fd3bb7daf0e513b4ef5cb4bde30de6135360f7b25f61026283ed16aa0e69217eaae771afe13848d17dda3b03375173c850f21f6890d7b9e06c4b895b8bcf82bc60d1f45f58706351cde1a7edcb4cc16e7db7ca9a2b5f40191633d734715d96a4b380c9a00a0a1c6a1d5e9577f58ae4800cb698818380c14ae1f84d56b6341d2fa2e447e3c9bdb8c0fdb3d6e2d9b577f1343c037a91df19b0ca26ca4412ebe20cb80cb70c2f00474b51cae77f321791c3e92a21d4d33a06b0b79b4d35e9e28e71a173adfc6c9498c1993469db523783e4064e28dac5cf590262a2f4bb6a677fc19b99e52accbee7ef82b9caf969b52e07707f506ac427a2ea718f418638ee7d185db5280c83a295b95ff73d27419acb47bc9ca051721bbb4a7e4b4f8273faa272fc06a5d0daeffc617e35b1db09ce017c11e3b6142c71a98dd197cfc6294da406c06814dca5470a18ea3b3e88d989def85ce5123908ae19f6591bee10aa183f059f51d3e089eaca1692b62a0f05a4020fd01b8b4bf297ef07e12f65e08ab0ccd84f1eeb94899729a091a5e4ed8c04e3067d8277eb46d004a5a3fe3aef4abccb0bdd8921fb3d326d55fc992fb91639c0fd4e5f3a027963cc9879c7f4669f0469e2eecbb25932e42409a6ea4a2f9ab05567f6783d4c98499f85256ee9b81e6e83a234967c14beb4fc7503f8579e0713e7879241f670f2c6be38db45cd16f095668b11b9c8f8159e2adb8e8ddb1c5515aa7276d4e02e586462452d24752a83e810918e6ae1c9c0fc143cd467b82e7a28d2ebc80980767ec84a0293f1b3c042c299cf50cd431f786765690a81b9122fb19628a9d4b98b9152f8955debeb7545e458f2f8f2a0c31a309d800ce8d04c2e80d240490275499e2b7085094079dd2bcb3ef729e22c241f7717ae931e237df3c60fcbc986eef65a5fc488e81b89d0bbd1fa3ebf2437fb7ba890fd83d24ed789545618fcd2a7a1c5a213ce972674b3035f52c91483e6a8792e73551b6c73ec513fd08fd995769043558ca529a889f27256847d50cbe2f1ee9be33bcf22882f7369227609fe56195ac13a08b63f1a46e0d1954df5447060d9ac0cb4bca9dba00bf2f0f9d2c7e7d04e6b73c836ce0252bfc48aa0a0d8855e6541ee478513d32274ae263070dcdfa115ad13789d2ef24f78b2eb1444c2fa8d24313517afdbc32dc8cd5c2cb1b1198fb204f50ad82126d2b011e71585f233dda24f149e49d699dbb5f9f02e6d40022af781153b233714df197753136089a375f3c23fda51b83c1da8899aa77fa3c3aae20dcff87d94dd966c3a996a4769008beae2848b89b3001d50600dfca5fa2b33b66c2ddcfb6b8ba8ead5897be01bdd4e914bda2a6fc455e4bc9ad1dc07e95eec8a644a2ea5201f8766018ad2b3905d13da4b37f360865c7e130f0a31b197cc4830cafc3d286c33034f2b4313ae7d1c2855f71e13c208833aff2a2f80dbb8edf6a899a5361c5b165905235de90a0374c62b72fc44ef8a2da1de52b09903acc06f0dcc48591264b72617bd5f50dbe8cafabd73ac0f2bb5b9fbee3f28b2788a2e455464e681655413eb4306caf91187d471cd54474a0705e589d8fe399f223dcb668033c6c7c6503c86d0492e67bc028d699944cfe06eeb0a62113ec5e32dc6d63b4491da71464f7e95ed13b5dac3670929a0d8628603ed65174a4a52bbba828d02d9340f47a0d0f38bb09f3d30b63eed45ecbd0cf09ecfcfc83231576119feda69bcc29908d7f952c56cb5606c6ed3bcf41bff16bb63b08813d051d7ae4a4a01b6f7c34bc719580b6ce65f16b0d6bf80c1530777118280fbc8762c87080fe406cf185ec3875b00c175e7d2f928047d9a2e32d1c1a7e8fa5d637f2542fb6ebc8653f0ab171d317720a379cbf428b91ef50c6e65b0f303524db02c7cdc47d2e418e3f5101ae772ea27e05bba7ad83d6cd3fcbbadf4574a5a5f6bae61f0991fa06de94bd3a4cc0b578aa345b9128fe4b1efb18894cfef6bbe3101c6f1d3742d1133126f61c480c4fa4c7e94316f3b4101099ce6bd5c26369b78fc298e2990904fbb68753160eb641c23f2065d3048a0eb7120aa8f77c4c30df5906e9c79bfbd2295db48fd82dffe2eaf5b55221e69a097e8fbb56c1cf622af85e1cf01b9f90f291b40c3e9053f33db80eeac713017ed3abfc48bb8c8ee5256aa340d47ec640767349c1704dc5086fc8e3e38928a0e1303a8c782995a78f0301050f11953567fa99e95a2de5192879f8aae15df60ac4db6c5f04776c88222d9739360b6e0271119a642f07a8f4974c5cd780b63ea328a28fd6123e8026021cd329ca1f7d6469b41f2a5e81b3d8e56c07fd7362b5a3a3a7ab7eb2fa16562e1f4d8af2015cba09d5896bed8c3d5e0bd8ef3285b3532d90e91b17acf39517b49a0963b08ee555b26d0e1cd05f23083cd186b4590a2ef70b001dd1049a607f32d5cb7eb0e5c06d6abb5e18efc28f99f0da4ac2255e402586dddb05d6216db7788132a8af61eac58fa05871e21a45f40f9c0c5f437b52f1658a3374198d8066910681aca287e47b3639229f49d8d45554c8d8832c8eb8913a2b3115cae8dee96e08b90339ce479c3dea78d522593b357ab96813b8bda822f073a160df7f5d9fb2295777ad86f845b2afd72c2385711729689d98f68b066044f96184b3e8044ef436418c75175c2dfba7c855b7eaf8d164380c7581c02a7d35a4ab756a2469055958f6ecd117fdc5458a5cebf7e678bc1076188f0cb7f2636b6b9d98795a38267da4d2ca2b6cf6ea08b459ce21d6c016d0a6e760c87fbad0800b775512bb07b75e1fec4686862bc2e17b1b3869da0c3c1e0c5bf7099820d18fc0ab3387b329001f7cccf32d080d675f262ccf09f5631be730d2077a89cb81aa842f1bb6c3136f887f0b6bd9115871fc1455986724a1f39898c24abe585bb85d5fa0b9a80dce1e9233fb3d1d44f724e5872f84e27ac5179f7e6506e1be8512f85f6b5bb60f4e2c7fb6f662ef09b6d09e3e30c4b450fbd30bbe182f794e0d941b37a98b970c8bdbf4a804166ca7cbc1b7d2a5cb37ed4ef1cbb21f5f9371271543fccacf0f3ebc82ec210cb2f0226033ffe85f3e446b93bff54af8531c2db4a451841f31c3648f0d69f2a61dc40e25cf88868293d5a4403a1f86285d4c178939fd53d96096bafcd1c5314066114372bdc31f0abdb4cae9c60080fc8c06852e3c82f1b546df1e6d82d42760a271a230387e04f1c875641efe831a0a4f1655b7b748887ade0647a7a5bbe1650c43dac20b42271e3b753b3fb74fbc0af33c062e75002158fd8583d6092cf3ca3042e13622a210f21165e853c0d4b245c900f6979009f29328512f1638a459b172bfc2a03b0022047efb672e3a33e348b0c0d0038640bcec638dcde50a9b6bf2f1692763643ae18fdc92f9534e1dfcaca3d9cba8907a2215a09a888fcb374814dd8fdb88632892fab6fff9580aa3f3e4d39be6510a320f31e0439b7012dcc181163cccb0fc029e5a3f6f8dca4d54a07bc55d6397620874cf1cbc8d818be8373192e02b77e5be8413e02d86a4f6315e643c68c8ec5b8160a5795eb7f8085fdc0d62c6dec36d78e05c2e2f7c5095e6eea137455bd9e99037582e781a622b2d16b5f6bbcfecde3e4863d2bcdb49fabf394b9e58c7ebd356817c810d8ecfa08cf52e4bd7df0bd0a51d8840e2365615bc8cbc9e07a176e899be34fea988a03e0d22c3898fb4d03b75468e6856c487c0ee39d5fca44b1cf3f81abdcccd45ad8b2ef0a34d9722dad0b963b564d3bdf354768ecc3fb08c7dec6d6dc7d9f47ee10a5027eae475203d01f41aeb98771e5ae9db432f1fc19aa989a73c7d0f9c5c9fa2a1e423f613cd38e4f635b87cd02c4ee03d9917833fb09df17e378cf5ee8fbe3f94cbfcdc9f021e6c03623e9d21a9a5bef8f688b93acda5c7db7c000885991d42aec72f3525cd0b547b5dd5ca9716f244e83554f46e921d75de0734267c299652fdc44cbb9fab950d1a74e456749ebe40af937f4112fb253904780c2db9afdb313cc55b90efcc60fcbd06026cd2b69a97516281366ac0a5e7d1a6f9ed08aac62b016497c130d1b7a3891b4895e90b4611a1014c8ab9cf6ebe41e9c87f9a0db9eff8df0a4e3dd294c5b73590d53376aa3e12754b3ff193e24d2c9eb66a8c2bcfc2089ec3fd4e3e06a906da294714df72e475b90890fb5499d1c202e0349d2fd59ef22be2df2483f6ce9be3ff9e00d37cb3b7bfaa8293dc8a43b719a010db290418fe1724a0b7f1a0f55210c13683b109df6b632cf801bb20bc9b1a9883413cf4b8539bbfc1e9e0a11863f02a54510f038b0eafa285b585a1a87847dc99edc479f83d37995e0808b901358091a12e531f96320099ad428547aa7cb19524711d2380eebe3ae2fa478a0c9339c4edba8460c25d43a5ecae4d3d2f22478be3bee5be508f198f2cdcd25e351c7c2909d57e5137fc32b044b6d9ce852f6285d48f0b86dcf601eba6ab61e4939606681b551e3754f579b11336fac638ae7c7644ecc1a89ec861764bdfe86f56cbd880a2272918984d6d88fc618d135baf78f0af1827bd0e491b8f5253b8f5f49ab84634da6a4fe6c12c9a340d96134f824c899b8559baac9ab026eb81c4196ce6ee176e05be0b26a5cbf83ef8149f53ce8a80841fb151d96057a40e067344792cb28a1ed2dc1bc725f1e6aa62225b51d0f71a5c3f40207b38c0e81640533798da0bdec2c29777e99cdb722046327ef8b4eb8721c67e8786be1db683ec31b2b8f0099353c3fad644034f014cd66a6c0c3eb6c9827de2c990fbc009d3710b6c740ea19d84c7d395da696dc59ab7c7deece3e3b34925f4988b7c04d0a190465f3a9bf697423e2f04c08a9faa02c07d80773e0d8aae3fd9a17a5c39d1ed45a55f6283e48fc03a72d430087469e48df7f08144436299be87d6cc0db895c535f8f5d8809f383c166c72ef0d8baf014bee2c99aa26600fc811d48b9face50561fc1e54544cbf169b6ab1adcc4dd7624d74cb017874c5d7182d652285434278e1095e4c78dc4eb83d6c17e4583c92b4e188cd679a1dfcc00ca30f5a99f478ab32ff01d36ebb3dd1f3a4d01e9b9f4b05cc266630aa09a8b8f94d5ac7af6a3b3027d1b56a2792951eba62cba3ad02d98278ba3b50b3c37c008f81fb7050630f00cef11d526cd079a99c051ea48d8b0f9af0b059b788fc0052143a48c3a193a659f9c35da86f4203d051631dbcb12ce93ec3927a54adb7edf79bf5acc004b65fd29156a3e99c370cd0b08de0e4908554ef3eb2865a19a9c98adea55206a573026491bb6e58790ac5293e0439f8f3eef62b0a09f14f73936643b1c17ba0b1fdf017ff0399082ee32ee777616b5f520cf22d24ed7e9c17a81f50874393eddd3a061632fb36e8c79f86adfcea2bcf563b9d9c3d8400e0a37b88bad5c00b3db4e1523fc1b474550b1c66ce29ce5f8209a58f5a7c496eb4a81b7f1d81e5270c52702e6a279e4b78ea316c157f9116ebff6515efb32d427c6da77d665eb0d79df670013666cf25e8c7f7688ce201723c1dcc8f1adb0af2e85f1dd9b66e67d5b69c4157f6113aa1876670d8c17e3bdbab3048990855812ea331348f306ef10f6ca46d4128955ee42cc0472da57a0b21c1f75b303b179de2fd54c2d6cbc0531a6f568603d21eeb2729459c018922efdb83c6fb0875b15f94957a2e9d094d48a08103c044fd2d3ec71d17ac40c18eaac2364f8242d93737c0ca965a33b4a6260eebf65281a6f97057bfc06ae60b383bfd0e6059362202bf07230cda9371797f36b4a59914113af0708d1d258609bfb0d861db354984b269c5ce7cad3870138131ea86354adb13497b96354c8f6c404147c9edbd95aa365d4393c435d9a2f40a2ebcb380c02faf35e44bee522bf206ae18f15a2d698e6493c303791dba5be63b089eafe7a226f5165c3d9f57848dde4920c5af60d9f025b275fe1a65bb9fb010fe2b02d69c476d8fef6079aa693c50e18f8a1e3493e3245e860343dbc07bfc28b319313a0aecfd16cb0c7313797443614dce766aa91ac723dc669d6dd5905a8aca1e8cd0b9862c20fc480047119b45dffc588e0ffc6ade9da7f6c4786323dbdf5ab2f69b908ea7b2aae0385b5cbf5417e3474e0c7d4d86f93da4b8fd9920085e056e8b5f084ea065318ff5832d18dfe4e4ca0b7662ea0457baefc5970b99353786fee91cb09bfc44682a4ec0f60e931c3f8e89e19c5d6cfc8652bb3117174fe3c994236a317dc925654ea496f3816aa87b7306cd1f14aaeeb52e15ce9658eb4308337cd510154fe354ee57ecf6ed221e00fceb8828af91ade123b0f83c120aac9a01131c320f0f6bfea514c32e6534f28d0634e8287a099cebaa54df0d2d782075b31e1a89e24bf0a07219317eff878bac07aebdf0b83d27ae8182f02f7054f1ba368c3f0415a88f06ac78620d543e88f3c7971ce0b175f6785dc644973d2747e71636cda6225da2015c86986f7a5b3f6d10b25c4921e80373e8f2d39d909eb71272b0945c5d37a177cb5a553e28db89bd5464ea90a045eeba0ae3776cc4fa8536b377b04250c3351ebb53b1a8f73a28f320c04a7bc0dbe4b7def0d53c6fe6c076307cb611e946601ef85814b33f6513e2829d34af453278dbedd0e9ce39329d692343eb28739a9d14bf1c4aeb45b98104bfb7f91a745b2b253f7042d82d6d5b146d130a947ce458063dda1ae5cb94ae8ea107ac0ffb00b1f71cf4b803289b4de14eeb9ffe40e8461c2b7e0628d39e7b3001f306704a7c538cb54d4440ef1f4a22999568631637ea8fd0bf32627706da21a4e33420d98013af8ff9d2330f0b763e985d994d9cc4e67bc876f0058c21fc3d353c19aa14c7928284a3808a7a5225b68fc1957d63297d6f220cd587bc48710c5f543c105ee6169a6a7bc2b13fcd16644f3689e74cd53e1423aef752901bd3a6657cd01e85f975b6479b6e51b185c0e8a0012ccac44c75c1f1b2c7467fb89e042cda856b04bfc5b2ba53b514fd0403c11f3cc6f54b9c510d64fbfee986bb2b074cf8015292f46f25ddf7c9116ade4f183fa5eccf9b06495fb715d2c32ea53c9908004fa3c943eb8422282be242faeb94a1bd957bfb6d56963a5667ca631e9fce23903cb8a72b990376fe3d0d51ac9ea583fb1d1c961b8c175774535569bd865cb2277005e6c25c5a3e8741df4708a6bbfac6b808da76cc8aa319ed9588b185381ff5ac1590a74562e2896f71e7c32a435d7652316358dad14d22c8958fc938354f982759152fcb012006f9c31f1f8f3aebb2b58299b78af2d13161996f6c73f96e262cff48004e3d4382c42f52ba6e2dafc277a0aa780e8d5d771106c67b2152fb4d6a22340a0b33504f8c35a49f5479683f35fe4ab53abd6226cd5539b7e6c4e3d3bfc59ac93836965a6c55c4cc7804c6673915f95190bbf78262a06f188eba8a3812da724716bf219ef132c2e2dc57a6c4fbcc817a102aeed70062f1c444bf2fa3547b2fb219b60c305c27916573cf09f8f9b62db9edbb34f94c516e374d1ccfb765b92a7bf88cb1f3f222f790c1cc9d5721e767de40b50e649ae30bb9e1f85f1bd5bf0226f85574f43e9fd609dd99e1f0430fc36c5032ad2fa484b2b1f81c7d8c970c6fd0e8e655e2b67ce68be08598533a36a7f17ffc5ad03f17c0b81005be2f8b96bf2bcdb13c2714acb90a8c9897e094f4a117abcd414a082d97c949761524fede0f34808e0825b4c955a65e9842c83d1f235f8b4fd9f38866b9d113b5bfcf3765d51f569af7517ab5389ee6f69fd5990f40e4ca4d6c81f05cf85aec2c991faf810be06368913fe1517586a2c2406349b8d2a69898bf82c7ed1edd62b3dd9684de28b850070199d4a87fc4811b34e917623d9ce8e23e217f63e9f7c10e58f95a109f4f8c3df472dc036da4f1c88bb0b8b44672e36d6c20e8c20aa5af815185c3c1ed70158168af9983c6bd307c6a1d26cdcdf305343b1d08fba80734743022942ea67aa0ff3e30790e4c431b2f38710f95de98393350e8a25975057800273dfa9307c2432021418380fce09758013e94f6cbd3b8017b0a7d343efa7dbbebad8067957e794c005cae2513c3314099ba0d30231eecc1d7885d002ee8bf549924fb80f2b4d1ce62cc48178e10cd587c189998077b73b5152892e511dbcb0d08367d548faf93909aa2114bd3dec484da2711c2eced1c996c9e2136dfa54774580a2a6f1704bc1321677dcb86339fd1e27c5863cabde3d68a437812fa189acc9fb4c976fb265a0cb804590a2382d7c5911783e07b78d863b9fc964d9c714ad59a0799c8b1bf8880f907984afec542c72be1d0d22e34c8bd255a94ef1a6979ca10591f386cf3c41f7ab6aca9dfb782a13e9f528aa7cbd1a691be18ff4711b167dd6c9e09d79e2b164a7a3080a67d47a5cfe350a1681db4cc6de29170cb184ef01ab200eeb16310fa8e480b0f35d2e3ddec2ac95d4ac330df55cdf60dbfbafe55abcb850ccd6d108d5b6e8c007353e1d47a4f23b37d82c9c9596f1d7d7e4df519425af802501e9f5465fb230642efc5a452dfecf832de5d6a84fca50d1ce4be097ada98902ac60089ce0d7509371f5bfe7c2359de9e7af2a67374fe69056ab42e79c4a4098187fe58ce71df8001fea621551edfd290c9ff6661faa623dbcfd013e1552afbd8be8ce9ea4be0887a520013dfc6c7fa5974713aad7507086df730f40e3b01fac78dd8ad24d0c86e3156bb83bd183f6007326dbc445457d210b0bf24b1782809293f0478f89d0bcc3c72c98d3f3149f62a52503fa6e4ed736c52f12680730e80079177ad0e6acd1975deb6c8f3af0678386e168ff7f2f172545c107bc60d880f30e2c871d41d7f5bddd256d2d4fa619c6b9ffb60583789539d81c4282e12a3e093eb25e37aec17c03acf7465786bce9c0e5c87b68775bcbc714e130d9c33e3a1e6f646cce2ea147a7bfc4e05150750e925e06f868b3cbc6d10ba1d645af9a9b8ba6e1823d86da6186828b39f7b806697b987d903ed98c839c72d01a14b4328ce996829fc378e06d96eca90ce83cd9bab649434e8c9b06097ddebd5462c143da2150afe7803e44d8fb33c328ee989d45871a3196b1ec34d4c4f6a5182e0532438fdb22420e78df2f517701cde28c3e9cf0cd09ec08c87e723c5400641eca859bcc2913f0035785ae1e1b9c65eaaa60180984c4384f7a8350d661b2532dd6d0a6b0f7062748dd5c207140527fe9d962b27d3787519663caf63976e4708b1e55c7f82bfb876c1fd8c2bfc862e37ae0295543bb1a670db085f3bd1cb9d475dced856501535873425b383be1abd2590d093a0ffc64d6ec93f8c4f3e48e883266e92e6634f78cb6d3f4cffcb5c5b7616d26d92381d880f83172164e231ecabcf098ad54867897eeaf4410b02673e55918e6d62f1c91960fefe05231b0f1c54f85f2a9e7ed1abd0e37e687a8b25322fb2a1d5385e8bcbbd778d7b020ec4cd08a8fa874f28e74810768f2347d6f6d4fcd315a60acbb3a1fb31cf862fc124ce9f526cfb48aa7b5225987bd44ac5c7c9f0f0c0c930ce66fba795cc0d710d0478f82fa68d672d0bb36b3b48795fae971f920d7f830261bec957827780b0e08f20f1f98cabd1f9c165d476ac71f17992997a4a8a73cea272a43ba449cea651807bc1aa9e0397d87c85e77d06934c3e856e8507111ae00f4404ef4d2757deb83ae68aa4205c49cbf5cfaf7c10a1230c91fbd628155b05f1d4133b39d382526c6f761486c777349bb4960f307a8994b519d044927f7982f21d026f689ac51c33132ec74fd1c343e3ed38de0e687ef4abdf9f17400da2334f0bf896fdba07056077b016fba28b579e5234c6fe6be2c3812d09350e9aecf39168d53a745abfc9d7af065310ec57568d5eccb5d181bf78171b0939980a447af767f17bcc36cc7f76a25a0114931d8c37a4b1cc316d33246d5ac25ee91cfcf6457f6952600b8102e02d7f54692d92fa2978e2f92dd089c7c2e8f740640d5ffc7bb4e7a252dd898291ee4176fa4e65867ee1d3ce853618ef1c5538dd030a093a4a8c9e2bd1e4d107aea49cc98b894fbc3bf05d60f4f8334a2eda4814c527c24be085277fcc4fd0685e37e014a7a60208849c2a63e40f04cbed34c37c3944d306c2c18b772826eb1f0352bc986d99c6b925f28cb8858fa563cd797de9459f6cbca61d59bfc66a7822abb53bea48d0f3be18db488b5cee6979fa393488785c294532d450e1379911a8359950a1510e065ada25fc5acc514e451ecb169919c21597efb8e8a15da0c97d83cebc9d1be8e70d1065fc94d4cddb46f4689c99f963e480758d11095ed3d8bb7757c4fe0fda83471044ef87dc58b0158fa938e311011f6165e825232cbae00cd867d2a38bdef350a8ad4e11b75fa0003fd1616b86d2c3eba84246365f1d939f01c52b0f7a12b9ae92fab79712fc134a98bde568bbf1d0e323088af141334747a084f1ff6a207522f9c7f3ed0579d8ce81c79b40e57bbd8cbc1dce0d7d99c3cb8de0e1f02d9b399cca93013b461251eb1d66ce1f1cbdf4e60fd82c81ccc623e950b2c30ac8e8ae1530c8582035df0d8bde1ce560f3990052d052a462ee9a2bf6b38a3f2ee90bb670981a9eda3943db081d7b25e9ef0a536cfe678bfb607975ae8424ebcb74093d093001e78089eb0e16dcd8b9a595ee81556df334c8a1cb3864f81d595a379105479b482a940ee381480cd516cf47d176bb7f2f2535179ca2beca32c2ab6e5368b3aa176e979bb9b53e047d03310b5f4416e23d5c30ee1dac457ea489c1f6ddd3fb9c2e1dad2105b00fd325d94e8a38dc70b6f17b5c723e387ae4af0c2ebee50c35bfecf0a55731a8fd961a1dfe89d1af3bc941fc9b055e6c1b04a66cb0da1adb4f47c97ecae0b6a336875e2a7488e7a098e13e52189e478e71e26f5de03307856c46d4019f54826ec734f97a50962a4eaae2f577052937ab5fdd57d152e245f8187c8f44083ea340e2cf3615d839ce70e83d1fc4bf4534c3619510e9c9306f3a5690b14c0238e93f98709c07e4a570a8470f6415373dfc6a568bbea5b2eb9f3a2e7555ada5f70db6d8503255cedb66e4be789c9f96e7a8fd60513ff7f6cabe1dea72c30b27ded16fc67f29bb783abb3af739cd47d026e8bc1b10682e0c5cb3a2a2c6d414f9d564b4433b42859d7fea8065f7e061ac27adc8e52536c0fec58dbd3955c6ec9377206a144b101d6b47b0c9278d17dd730dc7eb5a3e78c1b9d2273ff9a23f0b07f8a09500ad191ce1f37c66b80d4aa5ff70e1c8ee2c5f3d191526ef48458513093ade604040b42c119ca7a1dafa3898d498efa818eab5d819310c6e2c9fd38bc6eea204fa92c3609f193aeb13de52ec4c2b604760b840d3105ffa02c40910de5387c0f3f909fe28d7eeee13e1e49c4b1bb6b1140bbf0741ea5b0428f6cf1e39b694b7e1745a8c3e00679d439892e0676d579e89033827cf7c7853a11f1d85c607ddc1ecb59cd3c06733f538de7a88904e61b3cc4345053c123dc51dc4f4d795b2e8bd819c1dced480c7e6d007c5194558fe51092b771a554fea63f0c7a04cfa93d2ce3810402afe21fe9ecb26d4893d83b52ba882d7f4c57ddea9b5afcc9d2d53010ef99b7229b9f7c1894d33c1885ec254e34795ccc80c5eb0e91b48b3e41b275c9e8429db3ec6dbf289390434e9010c1f222c80ceedf17cd029713bccee7aa5c708da7281e96b4ad0a2c30ce1f09629e8f42c8a05ce7703cd5571c8f9d90f9608ee04ac87f760d8b1ed6eccecdd250c9a4d448d99094dc8af50f1607661d5ba097d7a1f702685de54029d49c4787e0ee49d8e1d9de2ac79543b4b982f8f470ac0b3bc59fe171118b6239c002737316a29398e3d4bc0a49643dbf31f403cbfc5c6e3d3a5b8b1a9f8b0f5c8ba2bbe43c3eb3ac23a3785d00c1a8807a2729895a8afbb22b1212068a17196449925a704780b91658f0323c645917c6720312aa568a61b46be33d281cec0bbea3678707a9654dd7b9addfce31c8a87542dfdc7a3529fa2c3878e9495f5dd9c2b3a49a9ed0b1f58a079e16adda9010d27fbe1c1d39eb07e13ec85375660603f85a5fe8b2152ca12065d37911a52c81bf2cb8e4a5b312fb53179207b08f62d20ec87f529f153d0189f039885034920c0ef98625ce60a90576b1dde994d2bbc81d4954e9ce1c00fd326372a13bc4f9df1e3fd9aca7c7355d069f840df84a6d9ee9228e71fa4186927295b3eb0d76afb58600b676e27be8ea28eaed45450cd010101bd01a5a5a59d0052433ba1c201101c10d0918923b5064040401ad2be14f0e458dd391d5508b5fa1e045efe416ee33fe95dfac84523fb5207caf3bc986a1952ea3cb7094733a92ae11862f59ed00ad57dec093f060cc7cea483831dc6d3cc0d17236c111bec852a597f49d391ab396141e64321aa0748d9dab84576ffca0f2cad14a7fb9f44da66143b583496db199ab2ee8be718a4f13aa5b42f852389761023c96d973cf8241d6a9cdcd3f8b8919daf53b36327be5e70a3613b974c32e0697a1a68a12a855fb64b684e9ccfd7b1c0d2a57a475df4f7545f99627a01421475111de84b1df1ee3d4f573d0136c1e38e1abee01dd0fe3094a52b7d15cb38418c7c1224935ab5c6cf49e4e63e71113d3f0d32616361925f696ec3992f92e0d9608a4c7f94c58c7de5d4813b31d0f2b556a13fa346989e0a73bf1aaab06fb40d399c172aff4162d1859ceefcf0555ba8d62007ba9be682cb449fa7fa088850ffe6905d487198d70c66bcda588b1fc125c385f0d6789b97d9e79d0af251099c3f04bae67e82057ee9c2e78e1dc5714d11c1ba42e6acffd62dbd02a42c3f2103db1e1155fb905dc2f85987a8bff132e5bb9e8dffa8d9a965412de8a02c76ba15069e473182f7446b8b5a6e92576b24693f4c436a0755f8f906ba821a020d422f6af1fa8e50bfbe7425ab798bc8f002a2847b462be13cae91a2972d397c580cae57d95a6d13997adfc03bbd6e52eb9d8a28b78c1a58bc9616c2b6f2f5ea58c537ca4c5fa0eeb85a9e33c4c0d467b71366043a810e856742cc9e1bd4427860346b09300fa28ecabb7029f27a87b87a0821d8bb3073fda5d706be643edd223e45385c4fa41f4b784f1cbbf22a4a63672b4ada6d613e7e2241a5ff41c9b9a2109cdfe278e544c3a57ae662f797be33b317c5c5cd84b7f83bc0446f407728c6a641e996c002c5fc25c583a702664c6b5130e98b8061b41697a5332041e4a95178ce18a4d2397fc8be404985d74d165f6bc2962674c2f45c4e2bfea330f09974e0a137a736fd01d9eb98d9476f9da2a47b9dd87e48674a33199efa4cad3972852e757a8291f28cfb01f5a5d06ad18d74c61f87c1950c5c85f7134503e8bcafe12c7a03fd5218c0af95cdb82a93c2ff2a8ee17f0cca8fc73af48703dcc360be7de85f169f3204f4e04c538fb512a927894fbf2ff04e6f5932f614447b9ace27ecfd8c06750d0a61b613209333593d75031b2e9b47119a53d96cdabc447d7f79f33a6f3a01d200923cce886c143c6eaaef2149c8792095d83f3bb1e12714933f85111f5f1c4af6bf15d0ea74549904a70083d7991ef470c2410ffe4292f748176184fa462b2a1f8bdae59bc4fa70d70901be0946dcdecd2ad4370aceb48963207f0354c78c85d2f0573378d9ac5b5381ed7b703bfb55ad28aeb383c0d69c99f4c73b44e20fc6d5b08101377c8c679c13f092e47f7ce8d07e9af7bb43860f25a9cb8ba874e23eae3bae1776e5bd38b239de2892470392d387a874b31d0d268f04b57447e972d30742f77396b0d368660ef69097041c9dbaa0e6811ce4ed4f01b76f2407a2d69243ef755b9d38613000c7eb8ce04724cc78164f79ff4593cd4d69eb760e09475fcd44fa37309adf4425ace9062c7aebe70db75b525ee00986987e868c3259049845ad95c447d740a1a799d29c90910e83b5e18008652d9f5a7a49d3e3a342e0e00b40ddb68bdcce078d91dc2a806d9db72d8177d5ccf06223b2ffcabdbfe281d04c7438f03e0e65cf7268f43d4065e81848422f4a04f2938ac5bc0b8d38dfda91f7a7b237fa0e89105de6fdd968bb52f4995e09f2dcea097dcce5b40d3068d445365294e1aaa6b64f8830b2dc16246fc95afc9f4c961e7ab5b8113340ba296ae68b7dd8fc2d145a8e33c8e00301837fd78fd0bd00b7b46717eb93c2d0b17b66641f00ebdc77d882f04c70a43f434af012b7149e056c158de0efcabc9a08e483c820993b753fdf6fa0d0396c1974cf4c0e320eb5d3fd65e34e23fa6afe4c08423f102c7e1437606c4c1b0a5cac45dd1b10bef211338d5fc6fdf0d32fa1dda439e4c91e2cff0050129f2185ed39149a396cda9c560dfcfb7284a28d8a04f908c28e743139c93bc1ecf03388d89e147178a68494d5543343ca5b7e03f48152157bb0400b2da659f78aa0a05e42d0f0a500dcfe141e2a6d83078faf33c0a515bfca0f1be54bc7fc64f92004784f6073837fea1d3b0b2b907fd6c441ffa03670002f427513ae9b6be825d3888189ffa50fb76812905f5282853c27236e4f517ad88c02a0b65d9b112d241750bf153199f3747377551d5599730bb107314ef83068a93ec601c73d47ccd3e412791c48417cc18f1def28dbe695511c77092ca3785a54148077b67ef8170bda9e07d007ddc42ef82375b9bc09c229d7c9c1dd507475dfc5d2c26b281dd20a8ccb74d492b2771520806ca481f7c3907991af723cfd9748287a6eb770c655a6a7b145d0812f576cdb4d3706fa97afcbb3fc66d14042b77c605daf76eb2374542317df4464e48b70477a37d6cb2d1dc33c419c89a7337cb20db9fcbc02c42aaf4188e563a2f6bcc8fbea45e06cb7830f3ddad27085eeb455e2c7537531733c103492d0f19f56a5f02ca45e5ef38496dfc199f9669354be8997f1d6edb1c233c326782e22f98fd8cedf43d7c151911c6c435e0d5ab41f8ca13785d2e44b41772f44cabab93ca17e924fea6ff8d2a68b6c610de588cbbf12d6ee2d06c2689adb0531a819fe5eb085e1ccc5c86d17d9f0a11b635c3d052bac362143f01f5728317aa31f535d25f5e7441d3e683e183d9c5cb4ab6fbac09c6c96c75eabbcfb0a4b4dab5f2854602388db2f80c1a9dedce973c315328e5481c1d672c2f84d0ae0e818615133172e8f0ef0052f66c08d462d0404820c01d2f4872c219e81704ebca38d0f2f2196c36f5c02f8a220754fa8c9f87b3108bc27065afda619f94a4a883522830e6e4c09c3f730efde97c29676acba47013be6643892dfa7e6e0a54068fc614fb73fa11a41ef460229174fc6ba6ad68179afe976376931dca83b063eb64002f201012a5c316744f92befe90dbf1aeca6c7af0f55d47dd63de5957a8cec273984f886410ffb7150f9151df83e4460abff56fd1a5f545f01b15513c9367ee1ac08e743eaf233428c2e09dbf53cad66bac9b09e06f460fc3d728afcc9aaefec3545c6e330cc31034310f2b8367464591611fec7942d798a942d66341eac89adef4e71fa4e3162f3eadc7dd7d50fd7528380ffb871e18bc5521bfcf1e8ac8b6ad670c7dbcc6f7045e06d04e5fe122d2a3ca755c1d312f1b1a794dc7eed10e8ccdbfae0af2a99908f76565fcb86e2bc9af54093de3e39025ff16f785261bb9df8e1710656bc2e59949f3173ba63d44c780f6afc0a4693de81d3c916b6e0c0638330795d24a6be5542c58e2be0634093fd0ef9b498a93fa4516b5bf203faa2ec9dbf2fbbc56ad51e84d0fa83664b6506c44e3cb446e07c60d1ccf5ac34201f711d7a309b1d76144d00af632f821600b5e3883f76771854113e8361cbbf78f0e95708f6b66da0eb4b398ab1e74065de325873333ec67de1d50e7f01487e4d1bb67b3b7981f68936887cd70ccc53b9f1dc1ff276c907d284fc63eedf5cdeaecfb85638b72097b58d5d1bf289a2358d42aa957ce46bf5f65c80f5bc5307c9867c2b75d214685b52b8e60d6554690a9d22fecb8a53476163f2998d0c1c076abb833212fee1caa55f59f66c2a41011ed3c0e98536e4fcabe2a2972e6de9de55d09d424be28e9967636af454795610d32cd706f6484a8b6620227e3ff1538e9c7a29e9733660bc894ac80fb7226a314ba1cfc24ae9c648f6df45b9398c4d9d221b0dd2899447ce00fbe70119ed15c0ec9ff8c99179df042b0ff1c5f5c63ab14f83e4f9963e64e50a562ebc0536d91d6aaac26180ee92e1743ceeadcb19a34804c7cec25cb5759a0348bb6b33c6bf007cfd286553ef8a27abf32e0c3b0e61ef0ee0c582176aaee921ba5f8e7569b8e15c6c3de6da957f5b40e109a4d6fc508d2d1dfb0f30c8b3882dda2e82a4693a9b413f9641d5708ec7ba499be4b37a11d63ec8a89cb678670bfa02eeb26984f77a34fd2b42621e73a584779540e144aefead78dc36611010039a046f15ff5c65db6d8b079e87c7a4035b817d0e89610e002ec7817321dd0b12876f0306dca15b773f0252eef718877f15b470b711f9ef4dd87c3b14c5da46516b2e2b24a133ccd831f3952d7c95034db6202a153fdd42a973d756b89b5fcc87ad16bd06562bafc0ecd8f776343814351bde01c954339187bd69708a162422fc9e55661b5804e56f1940b88f6bb0be3074731be955f2a97432360dbc47f7451c9c7d8cdb3403f2d087d298d2c320741d69c6074d962a61f6b4adf0a8573bca1e844cfd839ae5be04c3f1a9055b35ce23a86bd3b171fe2ea4b0d679dd00e1f48fec247d904da497f271f56062d497b162c46b2926f0342facf4cd83dfcfc531b713bd48ed4928b4ad02d1c29340c52a03b290f29b576e6ce02a34cd05574cfe9095f743965c9f7ad9fb3e0c95ffe52b84b7a074e151141bfc8e23ae3b8991bfdf227b652b8073743e12223423b006f7231ad6ba7f5d4f85a4e84488ce7c8e2d70d72531701cb64b34a591100f7326ba73aa807e39a17744f9d5a916467f91106946c4a2a26d4dfbb6919ae2772500dc4f503cbae62da27e8180eccb9f4b9bb012d2154149f5a4d5ef17986cf1e54520977245f879c2869faa55ec7e1c48c1745977c46f1d77d9bdb8235c6bae6cd7bccd3d5a8ed9464a9ddd7b3c38fec2b0ca2719d3419eadf5d1b4693b623463386ac1f2adb651a1f67d4b57e428c136df8a7cf731b9e6a8813d5e928ac5136192f63404a01ec523ce7e44f0c3d38cb4f018abadf780f644dfeafa7c95add41dd946c555fc58d543deacbc58b3d7576489fb045c92bf23a04cff48bcdb4f70fc768105b1829be9838bf280beb607f3163ae3a6c6e8ba3008651aa3581cb4c496cd0445061ff0d7b60f75583af857d49e579c82e77a9b0a5e43054627db70e042619a68ddc00ccee880c8e35901728d8bc17dba30fca057985fb2f37c1a15a67e552976fc6629c4f4d001047395aa955701f56a63168efe62d3b17cca2ba88f2c5ec6209ec678beab0a3a3146a7836e30f21366f47a8e0e0b3c4286237eb63aa9875f993ec852e9b679d5ffd2f1a10fa12a3c110c56fcc10fef3309a17ee104020f48d3ba59d0897a95273a345d2d00bd815372e6e111e399aee49cb647d26d6b48cb169cdceadd06b9e5332c6f3ab404e06cf935e433907e99f240ba3dba4a10921f52a54e6389a1fda589a38d146af6944c601f8316d4ef30eaf653b4d078b415829bf48eeb69b69de672b7c1a18078790eb82f5c3804eabec50a7ec91472648790e497bae5180173467e879608f32feb8f7f1703de0e2aeea9f030957971b7f8eed39616cb3a7bdfbd7f960799c38ad0a271aad43d93919dce01e4ef9726a8f9e0d78747520ce7be5a58bfcab0905d8096f4bf8c98fd5d12553c6f2ea18d705931c083291cfe96af9b0e716478973d71a2cb9654f5a990be79c49559bf75c74d0280ae2e3a66dbcf5afa578a84bd1515455f1429a68528a1be67df8e26d651ea648f43ef26bae3492ccaf621228e8742e1aae55a0db80ecd8dbee244fc010664d8a431681f0968cebb0025760d88384fe3c06ba32856c89ac57b5a30c116b93142e0e34831a5a75c929db15378c7a0457ac31442ef3854c1f76680ece74cfb5e1a979b370dc49378b1a40fb74efc94d16fd946585f51c5b305e4d07c29af3136e9a4d8efce4dedbc4e064e460472bc9e11be7a845047f6cc70026a093e848da5570dd624c7a8c2434b61da928579ecedd75b3437a204d3b10c56208332f0d90f9c894ca546a5b310b4f050ce74fff1d1f769b0b0f15b9068f1235f1f5ce9c9b157f80cf0ad8f9d7a27b5d1d370083ea9851f4f504ca83b3d2c395dabac1716507d5c4f500f72d4e241d010d4288861bdf7029f1600e176cf980425273066f5ce9a0c7b2c8c943320dc22bb7aaebd63178a5da1c49bdfe862a13b1c5378c4089c7b0919acdfd862f49d0039753e5acef03b0cdedb9178e241ae577ec768f875050ebd360b00479d727b2213459c4b57959dca037ab675118db528da9099020f942bd9799c0fa396689c33c8fdebdaa3b328a4c564d835fba9243676192dc01bb953e2438a3bbecdf1c8595f8138b0129d8332d8e03b1fa49e32b8ca87ca947825382f3ea443491ba121f3716116e81b9e3a1fe3607097a502fd8c1140741906b7dfb2b2721f6f3bfac6a8586339c9d072c117e6217e565af510b81c8934f9c3b13be4c54aad63adc8ccc131807f840eda3fb440df8185a5464d21eb7f8f419ed16ef135ad2e350f0461df6430c14777f65c1838eed3a8483a0b5fcf6d4545f5c4653eb4ed92081e429573e9bd08f8f14513a67a2e0163ae327ed28a3a6673eea00b7d6866489edb7cf1504c4494c9be8a78291badabfe00f4d6e0299ee1cbef7ff598349f6a9f9731aa691a1dfe314f3cfd8e11389c08528d37e05bea101059dd050b5712fad4af883b3041e36632123898db49ed731ceb5196bc79cca9a4ae72824b4c03ccb4a7b3529a3114a8c45ba265da8ac90cc06a359fd50a728d8b1a5fb8b9f63d10b7b8a1928c6621a1d67d3bc8ed5e2d02bf85aabb656700790db5995f871b07b4e34438f104935cdaf591d029a588389d080acf212682860199c06f7580f82000883ac9aa80f29553d16f0395408ecbc4fd215c9462003720ea477b724c0899575145047917eed47763525f9770ebc9ae5e5f6c0994ef5e756e401efd253cedfe170b8e8b6091c4ab6e7c3dd5e2922fe4c1ea0daef8e9a5015bdec88abfad21c6cd5fc080c153ecd9f92b978f56221ad56f8d56b399a5e92edf00a2c7669cb655d94cb9cf14c693ee41791d654997a180d43ce6ce7e7717cbd6213bf6b37ea90ee30fc0dffca9ee47a9120f061bfc999a22fcf2cb58f775e57d6708be77b1e28a1f0399faddbbc0f0a5734032e277dade5e478b6fcf0e95f8b6184134953e139f5708b7a3b8e1d0a39433bb3327525f89e0a7c3246a6a53a429ff3247e505a90a7793cfc6776cf0ba99604074a9c23bada8c9e537f868d061f8523c792bb6187f2ba2e63720e1e06e665cbe71bdb89744027e1347f9626777fa4c73c4efe3394db684c3e7f1f8dd862d12e823523ec85a6a78be5182813290afef7f4299da5653743ab1f7c556f41ce05de000680107c85fd937c2dd078f4fac91baab2030fb1a8eee1d9ef3616805ea25a5286ec444ee332abafd4eea8c4f5b137b1459723f34f8fabd765874b114e8937dd978020f287ca0953039060489af721fecad4e72d440e6735ae10f5463e61a422cbca94de5de6c40f7308498ee1f2a28dd6fc0a63e8117c14579b4faec12436f0273e414f64a5d76f8cd1f74157dd790249dbb4be07f6421f189125eb8a093871d202d8c076b06705a18532feaa0719b8599758422bc641a212b5781a06fefaa85d03a3c641e4f2653dbf8a9232752cad0246428693b5d24b75160c1eb9450f006da787c4605c207bb14fbdf42a4a54d3c093fb07095ee6048fa27f230bdefc9e847b0b678034b447e8111e927c1f0fd0278776e6a94f47e66e657b10f3418d528dde3b56dcf1d625cd1b31f13b209b8199de84b654eb129fa345e306dd4cc28bf53d9c51368c5bd0d1ee25da0b6c813608cdc3aaed87cab163d3d0694c3c3ca78ae2be2d27198a078611d757f4b82c5afd988fc1d29e6bc89acf4334f27eca650c3f72404b3c764a1ec34b562ad616ccb9f4d9932ffe4e8a1e3367489295209444b106e252f0d31d16910ccb48da151e7f25aa88f21393ce2ac8717e390f5c6c169b9be432967f324ea3e0521bcfa4f408a3d990892df02dab8d8f0ab63b813e1605d6c1d8317beddc58bf0c776adeac52556ef440682860d63f3533bb66501b6fb1f1c4e9163e536bc6adc57cc528122fb89e24dd9ee26f8810410f603ab60bc8a37ca2322e1ba930c829e8250e78d2c3cf98eb90feea1f2b530e70367f1a48b2bc971f966b604dc86c913779000d56bcd4afff390776bd1fbfd2cb41a1da4f3ceb3fc835909e6a32ec1c1490c8f3cd75a946cfaee8b9097121deab825a52f4613ab29c8de38230907da4987cd5bff6874821e426f4c008c7f8e2687ab39b065e6fe5961bcee30b6a8be69e58573982ae2633956682f7be243044ddd17d2802b56fa6aa703f14d943c3d06a144edc04998321f091d0362bff7076b39c21028bac97546d7ace2d04268a4e433297e7f0276494ba829f3aeb80d5ab6f7ee816fdc6cd299dbe71dc2735510547ec45ea8de41e7e44b71b4f870a7946fd9d2647b15171f99f7ee3b03fc2688f0fc80ae231f594287036f01d19ebc04ca23205b6897f29b974e10d0093a94ce605e2c09ed9d222d1e14e9835ec1abf83dc27d7fc490f56b7497dc180ca8eb4639f2ae240dff09038a062562c581033db787c4499f608ab44df434f81c820434001f808e95c3e9b711f2fc0eb7f81b45c5dcd1439533f27eba8a233ebaf50198165ec2341fb172fa11960e3585d3caede1eb6c76cac2fde24f242ecc20c5d746c8a17f0d293c6b98a53de5c7e2776bec780558cade06e7557749adf92c83ef8b08617c3cae017b0d12cddf3a08eed600507c849ba113a93afa8c54ced772517daccd2d9d0adafba10ff2be0df26e0bd2063ecd15a82d610ceebbc868a1e778f0d04cb68e8f8e762873e869e0504f765db831cd67b00a77d428a673456578460532efea6a61131731752b2d1f3e0742d6535142e54af23a3c1822d51b9852ec3d3fba3abcb749723f60b3e2617ef5e514f0fd2813022f5684693f0df3d83b6063ec1da060fe2d84893ffa42acc15433752a158c2da339f5784c64bf34b4f619cc76bdcf08dbbf9285e682ba495c8a134a2d63008b9715997921b1c31f17d5457328fd72cbaf37fdb7e8f61b0295b682cbd74fe332db54841a1e8089b23f4174d35ea66b6428090a7459b871435980f05d7a286c1646ac68195d32945f5c06f9ba9918bacb0a070fe36bf08b1063702db8413e052e834734fbb19d4099e0beb01c7403af1dfef8f6b67b5cc0e2a32894745d23044735ce21e1b1dc6a3cf044cc37e18c7dd58738ad8d3523bd0e27ea9cf5e5f4766a39c8c032e8f4a104b71d8406cbee6122400e04c04003edb4d87597087c4228928d77d3e5484e7d1f5925e91ddf385f036e12c795d1a0bf0c99f5d12030ed058fe6cf3079b74f4fd9fb5e897ada1d18fcafc8873f53e2e3b9ca3474e40ea8071c2d740cbb657b80141473dcf77e09520de59e3599ff0b02faa559403acac59a36a3c0ab3758d928df10f2e47d08e2705730641f21b6f2dbf40c381154cee74052e7854e6676584c809721eaf992b64c2e2b29fb6f56ab1eb8a3f639f876f967248b5d6142ad53faa0f1eb48e6a4b823859c0f6068451b8d19d0b6886cef6705aa8d7e95cab1011ee898279eb90691f5099b7a5df282913fc142c1ee7da2fb1366783a09278c0b0901fa37640a77eb0abf27fdcab28944b17b9e2bb6ede82ac50b9c603c722a3e4ef58b43bd0704bbf2141000bb0cf9c641d4493e973fdcbd16bbbb89d07d211353d9f0b3b1a49acc6fee1b6595cc81ae4e7e8e81dc5ce383e473e83a6ede25b90fb253b1079c31f93152dbfd0518e0b174656a2fa343773ad4d1199690fc6305c52d030dce67313d75e1035427d391f184b3437c10348253a832f29621841021218410420821c410c32ce60122210481300824318e466ba62d6bf2630e848610441099404424181109929582a4281d6e835a5d097e59b567bf9ac8d9b8d754d848ca145856b295a0908366c932023c8e2c8d384d32de127a74ddad0bfe21c4fe07d969e2db114e5bcdea4728f625978135e2e63566a145090dc82be1ffe554d9a85d8b43abb507a54c49fb09c9714bf4d81ed68c972b5b31940f984648e3fca4a1bb33948c66e1cd91cf89aa053ab1385e0e70a37fb51180d95232a852ecfc86b8e15474ce19735e04a29bad63fded4471f5198dad0adc4d1f1af1b12007d45ddb1ae04672d0983c9f571ed68641416b38138168b8fcbe9535db036d7814b1faa9dba90015cc32f5cbef7d4d6404fc0b691e07e17eb5dd9e61e6fe3c091fb3586951f632225d6e06d841077f1ebb89696c326a6f5ca47c492fa12544f28b98be3cade0bd09fee62dd2d4af5863b74886e5368707edfeb52e52d913fcbe9422dd337adb24d5fe3380672381e1f56072fc1dbf72ed33bdd53f8ed8a1455e74ae5b61343d7d110d6888ed75cf15d5baaa7bf04daea737f9365ecdf0f7ed9bb728b1770a23fa851c7f234337d686afbd4651074870d8be124f3d47ab7c1ee420e0da7feb9805138704ce4f67f26572e81fe5b87ab843f1c572dc4bc0f0ff7ba9ae1a41ecbaff8c22b4777ea115072519036993d5c7cc4358d434b4e23e618493a718b5777f6368898a1f7ac33ef651b7ef13fcf7167d9cddab39e9c1de01f18d83fee63e08f0c31cd41b58a49685a717de9678f389fa38a5dcfd6936ccd1ce7891ca5ccf78e20064deea8debdcde54c6f695048baeb147d903cdc880ba3f6ccc4cc71969d1db6b8af631bb0dcf437a6f2e551b686abe2a44ffe815552c1e388cefb07045556398fc9baed39a206bb8d08920d062f93e07d4f07d34ad168e8fb7d2757c48493cac89b65dd1b91cd817eb99016b7f9a887fccf965d4531da26660aa0e36d8259da337b100fc7d945565a9217c9237b8c7513fea333857347c4fc37765a06727ab9429c07186212295f0a3ed9ea734c1d0e7f4a79ca1e53206dac98f9ef5f380f58990619664b36d6ccc4dcfefa2bc4e58962fcccf72a0f81137fe6d33de7cd230ffd2be1392f00699ef1632c626735df577bedb8bc4e369e6cb2fec5f1c0ebe9e4aed3c9c0d0e09fc4f39cd4f454e3d0b22e23e48bc754b7e2a62ff818889431b1f2000f61d337a5bc39ccf6838568a755b59c6267df4b303fb01a2447be5b11dbbaef1f7810b0b05fc9d564127449e77d011d7f1eccd7f3cba1e48d052aab6ba1ad8f69d43de9ff2f5ea7518af4001d38a7d8fc0c828142e66ed12011eda7646d7ad0b7e80e3f643bbfaa38a6e5b9d70eb1a81766c313d434ea8878fd628cc8d6cb4e71ab42971f874d6958f5694aa1b6438e01aafd54caf469d5969d00bc0791f5c0529c98c9147237fe2a028a11350c69e7478bb84ced1ec40c2c3678cea1a2f95fc1e5196486af4be353a48a19131d14ac32507f41c13185bfbaf7bbc2a3e73ba6653750f70669220361e08226ab577948d9e6b11b826cc65d8265816d191c4cd7c2d022c898b4daa427c34d9255681523be4db5ce015ec20f12ba5bcac250ed4d79d3bde69bcf95c8441965e91c075fbe572a508aa94c1521dd5b2d80c27d94f99a2b5dece0f47af8b53a9986b6709faf88ba6ad8351b31b9e731d4b19387e234f1069afb1f7d09b200a402f3df2e3bac85bf3aa6f247fe2ee7e8a27c986cf1c38911d026b67bbaef567c152d4423a36538d58a64f335750894782f50015b1bf0239e673cd6536a205abd130d93bc757800611f121221da17ca75fe4037046ecb1237324506583e7ddc16066e5d59b55dabe95edec686c808b2564f93c4cda7757c839173a63871f21c7da6605b4a9b6d410d9c6702188dbb24ca6fd6d026616d1d5568ab49f766b96e5dd47fa8a73206f11fe0f8ae5d895145b388ae4f355fb91b55a91ee035271c51ba49e8143614337993dae5b008fca373762a8f5a2bcb15505b433915f792f13b5486f8dcb6a226a32f032f7f90a66cd460eba4d0084896b9d2f6dd23405129a0522d6ab9083260660cff1867b69743dc9b1bd00abf0ac4f6386b2e18844f88bbff9387db63a822644ca9b76f95b53baf537d3eac991d2ae4dee6f66f41788782705f7f7889cbff113bca5b58dfb427e13b1b4a06362e925e5e0cbf70bb59657e42ced91fea9b32a7dd9338db54dbf5afb2c13f48b95d85c8e3483adaaf5b40fa8c68df43600a69b6d3d00b71ba93af0da078f425faffe7ad97507a9fd82b5205f22660ffe31d433cd6fd78b603ce2c26eff4294784e75a8522b7db26eb072f2c6249435aa770a5d005c005e0023366f61630a6feebf7f6d556fdd1ed640a4f79c381554e7c54a7d0764d59a48ff9e017b474da873b02662ab454302acc227f9e0e8785f5b52463c2d3206efea0a6a0147a3ae4e06de376a288bcfa973d26e3b277ad9e8fd514ee5db074d67d489fcaeb91e32200bf6da249bea2080316cb9ac592fbb51b466ef391853e0fdf773c43bc8d383475b2eba566a10ef99c5f5327b79d7ee3fa2ac9402fce52d3f822ded4b5714fd3dbec432297d70f7d93afca3c3bb87aebb4401144709d9ac170d5e2fdafb9b88bbf90723127641df8cdffec51b4d8279b152c371f037fffb054579433fc31f91bfd83c7d2f6f5571b3abdab30bab70b867cdcfa1834747863433a0e800288e57665dc40b771a622668688410a30081f50632b30e22b8d80425bf35ecb38ea7a8b9f6853fe2939f41275d132b1afdff6934598da44ef278f7718a492c23edd88c4c4c6baa1b83f80b4ebf8ef5b5ef5fff0e97a6eacee36a02cda60b20e086e7b86c384eebe5cc69e23461ce338254a8525c55690a1b6bd23106c248942339e6a480b8d70d526218e7318494416444442211894f242a6852f068a5e0de6fde20026876d1cc6cab4dcc805dd55c0b4676dd083d16e502ae90e1d2f4b76fa6e723b2425fc3b12fbf679a5a437b4524c2daa7ba31fe47cc9a26c5c59ca41474f0c38f372a00b268bf9874d34151cbf002f1dd86c8f7788dfc0bfabb7623d4d64caac0ad18e88d4fc2c11bddb8ee42946c07c244cc072ccd756b0698da16723118610e0c3b23833c51327b3608271d24fa24ac331ca8b1a7810c98c67fd9dd4a376dc7d7b9005b9af8d62bc6e6997bb2b4f46d6f300f9ebbaa459c6f6bddd8aed687ac2310893b1c2d5649b7979ba4ab7abfae1212e4ef670f42279ebd8adbd6e36f289431aabce89dc4c98812944e4d1c559b43292628e067565ea3b938cbc48b8e2332f1f7248bab59befe504363ea53aee8984d0b7ab1cd23279f2f3bc2b4924b460f31b351b032ff39f76c9eea42c541d4605cc942000618e2d079e4049995d07a9a332cf3d2b2f42b8018bfc75f4164054c23c9760578cfcb569bf5ba38743d32ab33b6b0fd0298914a092981b5450cf49ea980b4b14be9793dbeb5a775e4eb1a23f9a85d853725dcd45c0835936c1e4c4bb0b5a2ad7f10122232334101107332948450e5e8da1815b142dc9aa5daedb6da15a1f1b8fa58ddaa25876afe3faa26d131085bbcd8e5a66eddfd42456362e930e4f5282180d9f87e9deb528f436991aeaf24a316c551cba1cb7a0bb9b789b8f15b9711bccda01d5522b61d4103b3c7d683f6db9eb119ba675e4c7811f79f0960aa58b80c2fb3311bd9ed5d2a264dd246b60c04f429ff9c021a85f088d79ecebb0a270db75db9e38271d7e53c7d5074f8ef15ea5986990d8d1d801be033718ace227d38d3711de0a6575f482adddaf6070a8c0b94577b89ba2c6bb2a746f7cc7f8d33f2ad2d08065429a289fcee0a984f83095960d6b8b33a39cfcb44fe1194b9c2d5cbfc20a03a545301ccde205ac52c36e7faaf0ffc63d2acd2e3ee0e8556f793834e75133793e4d47d9213b881ef3c9135352a153849dbb84ae84ab7a6256bb8695a3ddde490089f8458f844e38a17fefb10dd86c278f4fabc5be0423346233ad0060ac2cabe2f35cb1e407b506c0f3e2b9c7f9f722a52dc5561570900a0ab9c21367d37aefdcd8648d14f1842cb116002759e9b6e52d8fe04772574a4616708ab0d0fc57ded002e50f3568bb1982ddf338e3843f30e679216a176f53759378ecd1b29fb936a14994b26668217cfbcd081c9cf54b3b13b52e5e870dbd0870184bc188949a1b9885473b642f31e5b2468a22a9063e4c0fcb1ce8c3aa0998c9804c59ac1a03b91285b432d07877bcbd53c1b850857cf5de75e2d68ca15313909fe2ac71e6bba8377be1429937f22a1079530936472b9ece20de39bd3a1e417ffb2d779a923cf0ba64f391615c77bf73815bf84e82fc0e06b405bdbf98fe2edb1bfbd9b64c398c8b01c31bb361a7ca1299d711323bddf63931f9548c338eb5a768aa9babc3f39b30c7a401b74380333ad4b1b1e1b85d137ebf80d5c875f8d4b0d333f61bca9bd8e2cc550cc3e9ec8e22d993147b3e3e101d13fc7fbb6446fae5b1c017f9c79688ac520ccae3a0a23643fbac6deff9e6adbc058838b689e841ed1f4bcd4db0451215a6f9b76631d0d6547e7be1d553909fc6074c0b758f97d664f529330f1f8c9aedef21329b145d8eb1753717f821e97c203696a7bf9f3f6fa1a361132f7b64f2c01a1ca42acd8cf8ece1d3ed76544cdd7f79900837a31d6918473a90cc70f4cb83d4904fa4e423d0ade6ee9872ed9b6f6762e1ba04835dc4333a4680016fcec2760f8068ca0cdbf437c0b2de08afac9d2edb736e2f80ccc13ef2cbbcd953ba5c49e665413bc530ae100e200e30079dbc9cd0bd17e742a9a01c895799276753d978c4c182320c38d7cb5891554be52f50833d323b364037789b10182b1c9c8c955525747473a326c290dc1250aaf7ccd4355d38ef9a551cca5ca2e265427e437badd00ec63989f649530d9944fe0eea5f7cb5488d418efb2fff04469d6440138ed50c540b53c71b26f7ade59ec177e37f7ea3f8d3efb3dbf9bd57f1a7df67b7edfd57f1a7df67b7e376721f1600c590839c59b724f9b425ce257eb377ba67d33e5e38eb1b17299418a8a7259bbdd33709e9fdfaf96644d12d47458b1bc2c8eb8a218cae16daa77c1dc4a4e5e2ab3033b90383e1fc3b126cb65e2e97dff03f4261874853581b203ad717ccc9d1b29b57d7489989ac15ffe2500d8cf2f3919acd700fda08b91bcad737258cb806e64f46efb662b2b29a5a0b60f7c2bfece71afa3907264806c7e72a8e05332ef371b9e1303139ff289e9d1425a2b69c9c46190da332ef119f694cf948f0e0541c8a999d7c6ff0b77a568a1d3bb5c8a446a7f766757b7e17af97bd6ad21979def4973e3240bad01aba602a25aa06a7567166cf9ff29d54af405839c9c05b6a715b1f4c666b41f56cb95ab985747639db47bbfa6c7e297bb2a9f53e362e3da8702714ebe1a0863d53ca1df51ac875733ce540b5eea96fed9ee2ee411edab9d7e2cda0d097ad98deb28cfce54004375ea5c33df0639a3fbf5a5204518758f333781f0b7586cca517de83e2c02c11f723116e70bffe80bf12c85289cd718553f33c099c01e94f2e6bee24dac64f36d4bedff8678bac51bf73e9debf6f079954ec39208b52118b49dd06855c7f2983f3340c836a865d46e23a543d70c4fcc67cd985d8f3595dd97536b29a37b43c8b143cfeb898f100a04d284ccbbdbd8d1a3aa63d820100d2fcfcfec5ed3f1818b105bbfceb1c4193937fb7c9340c9a910424e36c3304a0f95b5f4ec7d0f8e1da117048d769e7d5ab8719fc544a3fd5d467640c6ec1e6b17c0ba381eab4951ee14c7bfba519adf3b4fc5c69a89a4be4fd93b79ee159b1c7f3fbd0c919311093475b9c371daae368375fb0a60dd7fad94421d4a37fcf3b6538f266cd0138b12534dcce004eb39e5a481bbb0e82764a1447b6a1984c3e3f99178d764734dc570cbfb6c41f2e7428d3b903fa788433d0601d9a35366b3ee9f2012ef77fca9735b78f584df90398df0e1ab28a2465be47d13143d47e5ba2941f76b0118f628f95c4772f29e8d708e0b4f9bfbd3b19f1ecef8f5334fb3557d09d0ee38d70684a8a8a306679b0ec3d41838160ac6054a182852837177b3c45968488a41208431cc18840851c40824944044229150443e4311022f3c624ff1ad262e58941dff3f64c82260fad9e49b6242f17b21b2c67d32549303654f5431f54578c836bf453d5bd420d128f804a614322e40f4ed516c22c26251703facc0dd61750b8fbf3d426e2fc2177fd00e9290d85d53a8324b997a9528ac672244b5c4f7e9de2ee2cd1d9e60bed6197ebce4cbb2273292cf8bd80e2222ba3aa94f843efddb1f034ff48698dcbe82afccee26d05a35142884aeed296f58f791c5d408187b4a8534f5e02c96f37e4a46b07f106e0f531d4df46e563ffed6f273c4c50a59ac3b3eea4eaf146132b9ece644a537c73305eb7d5d00d87ea63b7e957518e0e4f5e0edfb83016cb68963f97dde450804bfaa370c56766b91133c50079746810bffa00dd4ef20664bd784f7bdca6f982277186ffc0042b7118b45eda13eb161f10c8e63d1c29c9b281e3de4e322a0eae2727fbc852f8a3a536a396153f05202a69b651c747bf7f26cf7de1517060f9d4f96c28ec65bc43203c01da2df92953de4f1a5e9f81e00c9d6aa9469bc7a78b645fd302cafaebf57ec0faa8702ed08f18355c6b8bd71ccf3862baf99659176c2e18546eb927f5d6e0c051e5be73ec1208765808379749d351c6211f89dc01b9e2777601232bc91d347b24194f424276f3686c2fcd811bdb1dd810f83f046070f9915cc8b4e72b71b4e1000e43c5f7f4d35daac7330ecaf3cf04608dfe7c550fcf3bbbf493c72ef9f6b084b2ff3827a128f33e941f30872b365f36ded82f08fca1dce1d44e99ed8619014522544d7c1c033a2c83fcacace806d81fdb209179a04d6ffdee198fe79b78fbcb2c6c85992297309f24401b1b3be77a3abb3041e58711c9c62f70d1beca13b94033fc14b9a85a6231726610613e76ac7cf1dd21663cfac4e6bea22b1ecee46f9a68339212c37029c3a4b3356b37f372393cd5fee878512b62c3bd78ba3fcef8a980ddd8d4e1f3f16727aa8308729b915bbf248663719f5c7f1e6b85b430e601c776590c76374264b2eef3e1345901df9d2ea9fb532fdc73b99a9b470ae19c43d411ba81fdb21c519ce46e55e41e731fcb0ddee6d0a48086cb77e2d065ab256d025b4e3a2bcb3c9ac48f9e0e45b5b807791e71faee732f6b7e1b83e956b6106c28f916e93af5cbdf14354bd592cf464fcff9ae1b49e3b48bff60b5be82c12fbb7e611a410d9b337c39c967191ebb5d6705de3ded1b2ebfd81078db120d52d303e0ca904cdb92cf8b4e3c5ead349c83184fda0da2d063e1c09f75acf495b5a6dd98299e95e9671101eb52635b8da030a7ad45fbe0067a969d0ba3dc16ab4d221be4ba9718cc78c8d735aef9c34b3f60c5df1fba4d30bf861f8e7764f9c6bd832af003e86c5719d93ae4c18cebef9ca8a13596f5fecb9f3d81a4626ebff3a27644b85e39e86a846eca1bab95fd42ced9709f8d4ec4c1a96bee273d4a10f2a37cf0ecfec7d6b31f819743d578413230100065edfdf3056e37f602f79957e722e98c18785f6cc7f39c85f02e3a906d1074eecc8a583c27a84cb4966b28047a32adeb77bc6e35da786cde471d8a642f2cf0f9f5baec718002a644ceed83e046a65a4f566ff3e34b5ee68739e97f4b2f16f3bede946596ada1dfe508d36019d49da17952b4bc69d33e60dac8a407babc8f2af78f472815955dc48e67879e243413312439bcfddc451b4378b36434842cc42b17cba7d64c975184acb1137dcfbf5a64ed0b0eebd33338be23f6ed377e9f994a0ae2517b815844b841612be8abbd888683e1363c31cea84230f57de883b57de525d492c0e6509e55584f66253400819addc9f0711d847b569c6ec46acebeeb67b081de86508e6085bc35e2d6edf764560481b430b2f055961c341613754acffeb82810786397e2576f8d4ee3389fa1acea8260eb8bea2c944cde08573666ec979231a4aa8a19b8f43180a8592991f504126642bb59294d28949fbf50f7f234c788732e356a09ade01744dc27d8b0f9ab9cacda5edba18e64ab34537bad9f8da74a14e0c8fb0e8d64853a28ed2c3eda1f20f9b9966fce7158de216227ed787df2ce905735f4b8f12891b40715f860e15798e0bc1782b9b242ad08fdfaa9dba0d9b6407df597bf559101c34c28b614317dc31fbd8e7b075f5d6aec69fd00b7d3b7f38f74f5f78aeae9b1ccd38d3cc8b70da666cd4b20d759aea73e9bba81d6d99e1f451e53478337f657d1378495c05782e79a3fa356572ea7bbc23ca115abfbbd2420cd4b3ee65a4d98dee37804597e7463e29d43c1f30e381e4b276a25dec5fb1c640f978e640a1896e09585e959ba44b5293d69b819329096b96f3577c56b326738ccd6b7b5140bd3b2b3de984687e9b23eeb0fb9ac10af1b60edf0afc44996c5e8a3a6bcdaebc039fbd85fd347392847ba5376a602f244d036ba09de801d309ff42317bd03ebb5610bcf2f14973d366225221b3bfa1805dd8695dc4086ad5ae4b8567765451a3d7181973bb155a051e080315870e7543fa5eb0029a562e90c57fc6d4662ba9cea29aa6d65caf5c3c4b0740619545f3ac89918bd5c42e045f534e491f127f9e1f96ec4d431735fad23bc077c7848710a5434d7c0213459dac180a7138a708b8532d2844577d39d102aa3c9ec8c47d26f51e4a99cd8d686b3cc810f822d1e351f33de77d81669f7f21c5b4da060122968d4e8d55cc61d11349b2b4ab0badb66f9ee50423b7a43035d83f13a1be736117d80828a3a73ca37a98c068aa13f2750e346ab4a0f2068ee405101370991acc174723a2beafd9dfe97b40456d8ec2da0d56525bd6399c908809a70d23a4b678f91b8672f9f3ba4a69423a0764fae42bc0214f6f88c38060580b82453b696fabf5f18e630b8014a5e6703ec0249d4a10a324c59cc080a55192a31a6b0b7f4eeb546ec7dbc28df7c8c9d913e10cf1f1e154b586b241eb4c7c40ec36cb850d92418db3c90df11f88f1aa6571608785de2108d80845d64ac76bab258c8753e8daeb165484edc4f9402b0926549734915f5dd6907f67f0b281f27620b319a0dedac98ae86bca7168a8914ac6b7021d02cd86251710ad964e0f8c545781f2f8a0a2e0e246ba61eabf7e9313aab78aeb69bf39809443adf5a97b4bd84621fec5b01495279d79845b387a99427ed1dbd302c2026a2c1f13a7b3bd442f8f77bae039b6614ed80cc6683156f91e1ee156d9c30960ab57e48d6008a9d4a11a7024be8bbaa0de68786a91900f870b1b5034d5d996c96b238bb9ece5e28292bc3555d51af4a3adffeebd5882454f9f705a5424661db6c1427f64a280093dcabf5012bf4f2128f61e35259c5b11f44202cacd502f4d201a5a37d39884cd0c802822315b34873d14c4b1c5ff2cb1c05c1763b44598c42928b6fbb6d53b5835fb7be3649eae1b57f6890cd77558019a723334712ac7c96c0ee144dc0529773742e60f19ed02dc02d2029c9ef2a5f73dd8bd8f4eef1de7ad5338e33d79037531f77e1dfa983725f4f251c498fe69165acfb3d2aed79a683ba1a949c40de40c435686f815b3d84144036568c225846e10829daebcd51179dbe4df88277952d69c39b772fe1e8d85f011dad0d342105eed36d68f72be8c0ea9ce00e172f4402491e9b32913eb771dff5464ec7461bcf203b0b7ad4c5adbdeb7495dc6a40f34808899e0b8eae106140f63a4dfaeebf60b799f456de5e7ec9a7b9a7aa786ba6367574e47f9fd8bcfefb9ce114427404da3eac303902c8a379cec307ba180b2227b22551f3139e21b9e12e8e13a8f39d771675dc5f6bef2f648f2d8abebf6fedd7b2ba9e7b4f73c3e3aea61700c71e03fa4806126f94ceff9b08717fce458d3c18858e60add72e6bfbd6f32e9da5ffda6e74beed4f596b7fcf62ea93e39c06c7018a27bde7aafe441cf653cc8435a3df9d5edceacfdf256a9db4c2a87d1fbe9b2b89bb7b87b6dd651b7d531c53cb6eb86760618245e704c187af2b9d2069c1b0e962f4eaa0d075faae096d69b345ea63c90e343002a12920d8f14a80401e0e4a55634a3daec94d1c9890903a60629deaf051d7288a940c41977d406327b75aff5af078075063234d0c085d8fc80315a4c8df1c0b1e981a981559f2e586ee41b6cf099218776de7ff6bf78c12197904ac824e40d8984b4216b48a0d3be77bc1dddbc7d7714fc9bee6a98da9f061e93f97433e119bae0ecf064b0b17972d26c31a8f64d0906dab621d16f17971d9a1a4ba5a4ba9a6e3e9dd1df961f344ea3b1f4eb7a4cfa869a9952cc594bb0f8873453483b753fe64deda99a5813836bd0e80095aab0d9ea765710932d090d0063a43a33bed868b8325c6674c9190317664bbb8452172d56c870ddf49ce8d261d252fb58362c454c5ea0e5a0b0b4b5c3e5429ba325c008302a3a13b830a56f4a12585982d36a81e7d792a4591260de6ecb9bea9325802e59969170ad38434294e0ad1b3d16766624dd702b64e5d82cb5379c471658c6b0d15901092989df5ef0c18607088d186c001d156c9402452e6d04c6240254586c1d12b1aea03ebfb7e525f734ffe7a897fddc7aa2b79934733e3ac2fa31cccc1153bfa4bd2b3fa03f70cee3a04171ece882d03885c12b7e53613780319ca6f8655cf743fff0dd902746efeb3f1ccbe714111566c3795be1ba3d54186cc6b485b183e32fc709f963b94bbf6b05da4c427d2481807dda75a8b01e2e5c61cad708faf7f0c88f8e72be58381593a18745632817c5b04aff37cf29f4eddbd9e4ca6118013f6ad4ce1431063f586673a9f7402a8c87d5222a73ba310cf5f5aceae13c95cbc550d79d8dbc05fea5ec7e394ab6655ed000d9659164f985a2dfa9fff3f5ec20135292925ceea664860a5d1ff095a15536a42a9a0da603cb592e953858003fc511706095a6c270624547181db8a1b1c397b7abbf69ef778411c30080efb96d99c2355c88ccd116134985d9208b3a4f604ac052ca608ad3d473907dda7c5e9dfdd7b67978142523e8f882da4a7d0f07ec318e8c65beb469eb9e583c0431a49e4e2fd742d6184118c23d8c205912c62758f55347c37e7f7d0443d5f9e8a198357fa13495862beda7931eeaa20b72b2c66634a37629b3ade7036acea970505e27e7fad479b10395e2623dd1afefdbc50a4546769b4243f624522e76ee0f732dff945db91a581d7e1179f12d69d9de0b21ed2d9c5025486ba80cca817daa45dc34464da2b33dc90297ec6cafbbbdf2a08cc7b4a5b635a45a7f11395e4d5b1f5a824b2c9cd40efceaff19c7ae70ea2c6dc757dcb82ebbbaae1b3331b93ad7756f4a77d6734745abf6b8282d50233a05fff6fd0412a34842149234b4d84c120951c0c72f7e9e304a412e41014408a256abfa3c1123c558ca01be9d586f6a5475ad21d9d586e49c73ce79bb72ce7ee5ca8d4d9aa075a99de4eb8a2c7133cc02b4d100359d1152a0c42ebea2c70f44a624e194c6e80b15f44ccc6803708999a21c15541b14dd48f030d12382e2304326302e19c1c32b8cdaffa7739eb32b6f6d6b8ff2d6b3554c5a965d792b9d43e0c8d0ea6fde795a31df8b3321b3e78bbb9c984a9454584c44fc41b6fc1bfb1cccae44e2ceede44509921610f8b764e88671793fb666ddfb214d855377543d301ab52f8d4459643b97866fc2defa7c05086dbd2b821f4c31a3fee7bfd10e416970c8c8c31a02edf728a560471990ca2802a0d89573766d89d2ba6d7fcbfe2fcbd1b875120489daa1d6570cb5c742e1f02e0297bc40764ebc1c0091782fcbb6777e23be03e6c05b8af38f261efc0927ca992b7fd26af40c208858f0f371a2ee67e9ccd4452e86c5d78998bdf35c91102149aa3c71388ce6707b305beb5f5122f0a4531b40109bec58a933ba27def3d6fbb9ffa8ad6c6aa2070e31d429460566b655e4c188f0746fab1dc1415f9365f6cb68673dbdeb2f800a73a18c6a0690c20611430784ac601c3e2aac2900e116d80a488ae9c63bc6e72469384487af4c6f953797f1fa6fbde732291997cdd2dff6d6ffe69ccb01fc410895df6cded61040c5102e6215aec6b1ab9520e9b884eb3c96b70a79162722fa7ee5fdc9f259c9bce6a4cfa9fdfc3d594b228ea2243b67f8bf32fd2a19e930d567fb9e12929219936c4334b72762d55c6cd66f6d99b79daec389615114e908a618b5a9301b5fd979edbdbc26f61a5ec407e0a41c2aac265414e3048556e44985d16646246776ad929fb23fc289dcea79ffdfbfd3caaa4e4a9f5f5713e35d2ef7a35fda4e22d7b32fb5b7b01f1e2cf519ff5983eb32b293e8644062bb8607191d25d03e64ddc6da76870e16e44a8f5d292b21ef7d8f6e765f7a4cd8dbf18caefbdd4f37cf1e96c15f8812cca8a74b4f0ac722101ba126885362a622224c4c5151dbd6f78c9cac4ffebad531adbc5702fbf1445443444bef0022dee9a73d0f7d51789a18d79bd6d0ca7b82f3b000e348a4c4e75fbbf7b0106f94febff746afe3023215264463b54d6791280ba72c3c278fa0ee9bbe4e479d7fe6b3273cb3d2240f1007bd5e48ad1d710eeeb2dc679af57efd519b5d799fdd2a40c0580d5508bb59074f583b5996ab3c1cf447e639831ea6d96c7b428474de5718ac6a15af2055e02abc079bbc6a2a4c2b1e3c840aef739034465dec7a81eef6a35f80134b2d80c016bb6e103c34abc0e718436dcaadf3a44ca6833240931f4eca10520c0512f0fe7ba27371c29a6095a08cca33d2ed28736eee5800282482a2a52b8a1a44e1fdc678dae2830a94658f6559468c78d688cfb7f66f7dcdfb686f65ff3ea91193e009c2a592243ba15129219c5235238640a74c92070f4419b9d871041ca598e4c02a34228a8206e062182a3f6a3fb1c96b3c279cbd2c912b8170a2b273dff6a8ace859e22ae42bf7af9495f5effdbf5b2f7b2ba5ed32c5aed5539e5a19509b6c4a16a0752def6b577670add3e248ca215b3f08aac06a94045842931970b59bf01e6b8a70d891c1915d99701f47513e015ccf0583c220b04504a621d083e38bcb87169167e95be2b49b96d0330507c7535a96ed6e39ff8dac1afef7e39415cbb146f5f19a12dbba08d68e9231b14b747f0230155d96b7774fe5e97064a529c57d3456dd39b34937b6aff2a8297af0848c16c728f21af6ce7676953e9ddefbdc873ea1b2a701bd96496b5bf60140543f5a824bf708dae32cc63ca92e7d06527c0239c74475cc28afe879e473e608a529826a859a368e5d8606307db45df4304f3ff71e917bd04fd2533b8f0606b005239bcb1d6985b6013dec5fb36bd5119e8f0b6c27ee7534d6d0ba1194e59599cedbe714cb49c78e5cd150f2aa2106c625022b06ac6a4624ea2df9d8df9747d4f166bf6dd9771cb267ea7a19d0bf1a4bb4004717945354a5fd65f73f3a5ae979a7bc0d99a0aa20c9a4f61a8b867a0fcdbaa26f34b1b03a996dbe17d51e58dcc2d5c2abc83d6415b095289e93097f5e1e42f4fe337fbb16d00309262a81a251154e6757ef9337d127612944cc1f24921b28157684dbed0b75ba1fea8d0edf1ffdba4cb04e26fe5b69a91a89017d15e1ea6cef1cee45f88f2f1c17bdf3b6473a61f9bebce76dd7ec69f96d1c632a8be6352e8db80e8c428355bcc293019b41a864d45abb0d001d53610018128d49a552b158ba6a22af0134a8e6a22729f271900a0851c820090002033000000000004188013b261745c66ab5c241193dd1a7fcdbd22aac06045c076cf8d6d95df2df56c7caccfa419dca167c1ba6ea0ce5db6ba88a641a478ede7aeef9740a3837bd8c694b900ea5430aa15d59771a39b07e70da78e66968dd8f250ba1602b8a41e5e3c1cfad4530201ae3ece364c501ce8ec59cd9b1161547c49f728251343d2923993b0188264cbaedf37022b06b11e2dd78c7619502337a9ca8ea793083b15f16e0e51b59156f511cf3ccd0a7e6d060d715d381cdc781018e22b10eae9164c2a867cce0deaefd82fe9c209c045843e756249af3e386a5b01b369d9412485965ecc6a5d004b5da666906dc16137fbeaa808d446c58d40ad0bbc4eabff925e8c600bd851540994203dfb64b8b3edb2297d369ad616221897b76fdb8fd51fd9048b0abbf1693d60da4884f266a203ee34e966d103b32fb1233999afbab0b6c39b4f9c022f5c9bf2f180c379e57146a7472f9ffcdd60de5413dc80323de812d68331c3df0ac72ebc1ac778ee120368625826466e0f27b8606ffa0e9dda5bd8c44856a6a913eeee0712f423f5c04f0cbe154b8c2901e9e065d8c34c569bffc1784547fc8f1e4a89f806f94e6642371be78ee3e6cca3a30fa9cfa7ad96a92f237805093ae465e3fd93d5e5e3487afd0f1326e55777c39d955fdc81619606750694e9f5373a9c047bf30790636578727b687678cf6b2d3ed166dcdaf6675290d8c473db35cbe6ce8cb374de231cd93ca33761a8819827a394ee6c3b11e24d1048a00f7b7676ac654e4d02fd69d0f4d6e2e8d39018a653ca63ea21a03781838f0f66eacf3facc9f8e52fc723a5c048c00d9de01d0dfb8f9a4daf3242939ee1e7da2069b58165bf5282f76253e26899139110f4cf2393f822db9131890a12d93602e060d4e4f50d9fdec68650758cedc2d2cb0e12151d19dbf518a3bfe5726a0ffdbc82f8697a71cbcf081c4f3773998c6a9c6629a6ce9027319193060d3db640f0999a3563815a9a108771321d91b2590a283594ff06b880364c8f02d610786fe7986304ffd2db925ed3b3b37f63c8f97b8c457bed29cab376460c15e967c38b79b9708dd54eb7cbcda49aa80a3f67784968d5b5006b20a798fc0658b25b5f97e2b8c9f6af7d46ccd910233f22285482314b0c7a97bb8307821fbc6bc59a6ac8833b8336c23352be7354464247bbdbb1f557eb7889baa965cbe50887914f074256482a3ae1ef5159848354d768289047c82cf0ecf75ba8e039e8901dc31d85212b29d041a1b5736ad2f50984c8e4407e3294a439c3e95d89d35b600b49e6675d3c8b0f4d8741b88a6924b255816368977f72affc3ef015815bdf79881fe67b6ce85538f615cafd5ae10c843174e32ccfeca9da51e30c7f447dd3d1828955cec014a62505a76d3e13fba769777c91887bd54c154629f94c6d7ee1d23c5c1ca91e94ba354e57eb2057856328375f0afc9d6697ea091bda7916b0ecf238f17d75f19353437a2082a1cf3a34f19701c8717d381d0c756005bcc79c0c107bbd942affdb7513d028034e67858b1bac330ccc447518c3ed1b4e00a7366459449596e305b5fc90d772d2f26ced7ab772c627d78e1c1fca26ceec309cc85f698e810cab0d56a2bb4cf1d0242cc07df51e8832d8bd45888664fd3a191befc501f03e749a1081847691a5fc0c44c2db0c6a370d7620172e661e6a72811839b05f7b0106e9fb23d7adca4713ef8bcb1e90328063a218b7d75606d97683295750aa4c4a0881967fe9c7949ea9c21fa74247f60c75b025402673de8d5ebacf8626c2e47ef2063f7fd222bc6aaf78a201f74da219b819169ec440920aa2e54344f41586b95d6193bd357704f055a2ed26e2dd45da88450be93dfef7d3b04c8985bcce2a28cf54684b7a622eb7b9d9e9abdbca9739915e6fbfd2acea207ed856298f3fd7dd8f224bbf5eb641c185595f914d665efde5fee645fa7fb02e58731dabf8218d55df012b8f2875ac4e754e36ada65d9510a01640d78bb718551c92d586c8305076ae231e337f80b2b3dc115795e71e75b96fbb427b782553a4e1a16d344192b7fe3b3dd80845c2ffc8f820cb6f4c024510d1f2cf44ff9c6f8c9cd1a3f1b5c5bf6393eae1e4043b9580b1bda1c9c94026ac12b27c85b28e0257ddabd254c98a94608429285e7f06bca9b4a4903d280897108e13112b5980110e3c4ced0c0359c2bb4c1643d5de5de5b0de6aa7cd3f393220099b464616273a1f9012576910079b7d141277b7b794c5bdb9cdd0ececbb1ab562e64d2b0a72839241c272843e3adbd26e39e09a7ba007bf8f634fe7b539b666a55ee3d51c0cdc184e6c54cec056019778eac2f909ab8daced788bc97765ffb5c47f5957cdd23d9c3a5c802c6bdbce3782a82791af14d43343779894d7e400d5e937ce5c2114d322baaf7e038add3b5dab6c67fffaa2a680c1a2ccf80c1e4d5a043010ee587608d450db0fc8eff8763f03c25e75e7ab207e88929a7c90817f63c715cc0bc74a434a463cc1cf2887f0f2650ebdb60a5623275b92da3c75f79b6069f7a1c812e0ab270616c2c431971b6135c7f5db64d1be1b4d7c4c56f3957cb2efbc0ad16718fd4c4bf135db27d9c4b38ab0117ae86c9f6b9c12360cf5292bd5dc92c20bb42fa554bfe57671844297553e400ac9a253f540a689ee7d47147e0a964e1783f14f0191cf2587f66406123f416e722e9773d233782cc206f1144e64dc9d9a554ec082a34a61f116f7130b0d90a5a3f643fca8e9e6779300ca73f3b29b3b1279f95f17aeb51430864c5c4d67192cd027d5aa632f6423b2e2669d4a8a4989e9bb3cda22d55ae29a1220b69a230240d22e1e705e330b8b88ba5de3e6a3fa31c9e03bc1f3fdc25d44f28150fce7402c89708bced3bc4a69bfa8710179bf0192df3a5de893b1855466b73efa2369a27e7d6b2b9139043cbcf821bdca1508361475ec939a2851b47d71c40a42ccf409729c6ae3d0a07886b083eadac6338faa6729aee3d1d803bc4473c4c82412db4d47bdfad8372a06a95cd94c73dbbf1e5566dde9a6b27e49b695312e388be88e2d1abc8ea65119457d796b9a1511fd99f279798dce81ee2de054c22c39ab6fd83619e8ec411ae7ee80c6b2ae48eee94d2be96cb46cc948305b94fce73684187588e4614b67cc5d7566306fd706825c716579ff4563558ba6a38443a12e75fc3d9f0c30c8c191ab18988ec409a178819644b2b6e816a50b146a6445dd4742066628de71bef223d52a15cc0c72d5f6f4df0047fe9ee96439b3d08386a428e3c6342f5d2e88e732c7e6bd8064d03a6925a65b5c9c9abe156361cbcf0733d3e4f8a17a0a556118ed371fa0ac85da782886673ba664601589fb99afc3597ea697a15bde23ded82d0e570fd64bd7570109bcb4fff8d19a0c1e4364e8fdebd20239a72935f32e51ab611438c83d88e808f572621080eb4cfc3118ce834b9b5f6df3038559c283066a687618b54d7461840b089e50bf0fe181787123cc57b85a646f0c39042f42cf1c64c1691a8e5429ce62569ce2471b59528658500e1ff5d79eca3f3049c4eafd207c5e45b7fea0ced9cb07c29301ad85de9bbf07de39be12804641a8bfee7d258a8741cdce6fe0f527f20805729e425dd844fe5d385f9bfe5bb0396ab62ab32f60cdcc8924a6d6e3c89ef0f8516c76376433db1b3c3199578d20d2cea5e6957f2572b6988f1d7fb9944cea7ce89de961e1e09921eb1b66a8ec142ef121b4c9c37e5ed689e3e4823f66bc032d671210690be2092e9a65840865085c6986f7399453b791a41689cb43856ddfed260a986aa2089125a6dca56eea1a1adf25c8946e0d043ab1e81af5107e28de9fd755c10b78e813dc1b3eb79b1409a1fbba68333be196fda8c4366d7188028b01e0e41e73fb2a7b06cb1995527322e1741ee51841247f50eaf373d9c73dd08bc870598a3b9340ac96a781513cc4eb8e60e10a7a3046f1feaa3d8dd2d4bb67b5a7137303768557afa24bad9a9aaa37a39613d50e7e0a27116ea8b1ef81c053c46dade52e9b19dc5311160e48a299d489e47d6741968a3dd07db316d1b6b6173250c038c17fc1bac843220cb156c2bc46b30ffdf9dc8758b89f580d6d8deb8542ca58ad9ce92f0ae3a05d787b66a0c2ded65b44a882eb143d7e6384b8ae49425b49a52fa681837dc477e7528d8d6d2f263f32bdbb4fc12183d3adb2c6473db3a92ff0d2306c4e9471d3e690d19f0eca3d15745fb552e32216d10549d06e4dc18d21777786989989c3605237db09aefb6f40bf2521f3860e2a9b30807fcd4256402f5bb46e6a2a6ba97d6105d312b088870b99dc868af89649b0e3c94133271a1d3407d0e5602fb2f9b048bd7f2748abf080163ad8c13384065fb9632ef77b6624d7322e1d5de0b040ddc3fb6ab7d288e97b28182e6d9ddf937e9e5d37dd04dc4b039ee2626edda4af800fd75074b762cf3a94d7e8c268f060dcfb7df2386633b226d3fb362faff82e22dfa0657bf3c2939fd966eba94182e41138d4d635512d95760dfb56e14114861544d98817f380a774d1bed816504df42520faff6ea4a33867c2c677d1f2b74939351b7cbe41e26dfe7dd798f465d487ae2a60ba2c8979415589fb75f6ff5909e66b8ff4f6db2ecc6dc6f5adbd4a0baed08febc5b35841cc28b2e10e78f60cda07e7c65cc2a7890e78d37625e311691528455b59ed0619f634c6f8f9d5a586cc23b114ec99cba00b263a1fce34230c70c7e170dbe95af382e872500ae406b91fea519dd62d4f89bec9d671b22e6df24278aef6c2658193f2e290e12a419f0a415f2d3a3af389e153d14e120155c999d779cc212d82e5370096bf675340aaa7d6950e4097410655cda09f951cf18c0f7b0fe2a06c2362c0e34799714f114158fbb6d401483457b3b44642b062e785333db3917b5186eaae8e6c9e1eaede6543e227da5c272a3569888b7ae5c445c7e76f28188748ba905ed96768a01880120acf9385b8e5e44ef57b682c045e17b293902dc1c7d736e02c8862ec76eef79ab9f93464f25ed5e4be13273a9af394b5fb78527bf015398929aeb20023890c79095c6eef9e9b60ab64d0519336de3880e781fc0a5dcc24a63a0adbca16e47297db3f772d88c9cd75cd361bde05cd6dd559435c7d93ee602c125be286de8c205c7fbb8c59ddd8a494b76624ed80f24b4965590fcab4bede82eeb8fc6d2e0e364e58bb5c09f000e11b7dc933b87e64c2039971450fc81ca846714f9f584695cfd5eb462b3d285e737dba46b114020f3ef1204747590c714e9d6a2746e13a9bb7ded251810ce24467ffd9dce5444146e69fdcc231562b8e9ba6264b82bc2a25a8e990f505e23144f3ae44f72a5a35a60f1f4d8cf582da3ad3640a86b58fba895777a32d46cf35f4f504136980f9316b0e5ae8d815314793d04a30049eab54dd3ba3d5aac6a1cd0267c2e1941a361a911cc83b831fc526f69e0b04fb2a0bdde01e213c610972efd4bfdb0a068d6f1f3aec9e3e66b4ce4818c35a2f51c55bf950dd2fd7a9e489c861c09ea8d68d26b70423d1dfac5676a5872956704f7c7248fcf8ae63c1e3b59a2d7321f212e1ebbd9d43442194666d4c92e3391758629761a7442c5a474bed393e80c58f0db77f516f822f2d33ab54bdfac83fbba257569e9ba1ad2c1e3e2c2a7594e5ab2676da45fd874b8d2343388f2c52ff954a85458518b0221d5861cab13c81cfaa0d3232c272b946245e494c786642391d7f118fdb3c0f6820395f41b525679c142afb249ba155ada30839e15ec3de65a4a460ddba026866dd43edc92ad05c10645b46c8190c1fe1207f7054f8074983ff1b0b7cf0eb3312c910d1928e1ea3bd8dfcc35f82c9731d805405b903d44fc6dbb26b330d35f74fcef5c6de8eb677403d5b2ccf8281244780e46f9e9de51cab36dc281d3c16606062ce0735af517c821b3e0b6fa54f4194783b717a6a4f08ed349fd8780b3d19b8ef13ba6909c598101f0796142de968cf7e5b3d094aa546ae086cd3525ea9d602976684c6683d52b30d707b4da1103b2136a6c194f1dd208e8e51ba451ecd5d2f93e6635930ef1343225dd3937ea717a77ea6f4c846eded3ad04d96b6c320babed070822c74d24197d4b50e245031b92cb15781a86ee1fa213fc6b8020071b939ba78bfaf7b1dd118f39f28a00db0a422aaee920daaa7a36c712ed1df85d33bbd4d0c8d5112c03de56741bc090dfe55f00695113d6cdccef7bbbf09a2c7a03e7004e02fc164202b090f23ef641be4b2bed5ecbac7f2d21ce0226aff93e9b12c8efb87722e7ed9cf841378e577f1944da3382b072899f9a0b366fa79c59d2f4bab0e3f57ba487cce83a8b52b737680483592201d34add464b94e851edef1de51ff0eca37cacae0d1788462666497db83d02bdddae2ceb4bf8961d961f02612eefcc038894092ad035259127009f44eb83a9e033c7e924ba41d1be85665da6964a74690ef003bdd93ddc919e6830099cad494930cc120fdb2b9c7d868a4283364db5f321b9f4ccaa4aa4e6d2ecc0588ecd541bb2c09c2ff306c84b7eb474d533e4b3b3c69f105868b32344c5f0be6ee694de4d6db58244741a6df4112f3022c47a7b8af1e84e280a09575737e2a89726800df53de79f742ddf87cf112475458287dbfa664ae9b33a30503dd3035fcfd7a3c737b2760dec98e13975c60354289c417c17ceb0d43dcca68b810df3f0b5a7d223e1ae0cc695e5095171771274f71ebabe1e5c99a16bca32d68b9558f469f1441b372698c7c0ff2034b515d97792a6224d946fb7f433e9829c22b3f61e1ed24e2219c4d156baed249f9ac18863ec3e6b46c839cb3d7f0c4c10e77a7f859376100ddf8eae7abe73a35cfbb0d47790569677ca73faa625f4c6c53b1c71222326f0e456bcbcfc87e96ad5412a35b03f3d9aa29e971a06f63da836f3ec49aa3eaf4994f6bcd9caa6d79fb1a182ab9a092354294cfdc57fc0509f2da499019519a39d1b1683f0f10a90710f0d3dfbcd73fef9d3988945d720120af761ea5afbf93fb7c611564ee403c252e1d28585370b06bb4514cd84a3af18e916d86304e772fcd54eb9d3ed61375c54aea177efcacb026802fd8bee7c9ac0bce7e9f4beb677f16a05729a1fbfd1129014e97a45f725fa14de4f728b20d7e6b8c1ec1bf13854192013f1ac937d4005da12161178210e29032053cf8dd02868afae0d56df0b5db64810aaaf20d8f1c5cfcdb11f030df7c351347efe43f00cc73d6d11da035833d511a9e27450552538c9792a1ade6b568171ab611119d6411aef6255392452cf088a4ec379e6913f093cb5ff9ef91db8936fed0ee89e3f39e8039fec14470ae925f05896e7783d72bc6d1539542a4edee27addea4d4030159277a28b0cce870bdc7e10e093245707044ac52d17d3e936a3ee27a44ba65af6969ac4c38275e1a5e3302e79633f39adad439b8389bb56e3b7e05d61b41b99253a68cc7ccb5434647f25ab3e0ac6e9ee7728454e5cb86fcfd08a69edc2189de2163cd964d4004bae0bbf76d173c7759470f3413679ac6812090b1ba9fe004f9e8a12fa25041110d729c482eddcccea0cd1d0a70ea2d057c51f7a38f3bca29ba42e8cff48190f23bd8e05f0113f20ab406b065e9a123acc871335c1df340d18edf3aba55f5a6e1e9083d5036c0b627d0e7bca19b7bef1c9cf5af7f8b5062e4ec99f91da20a722588b34d27a84fb1d64d4da2020ac098704a41c41edcd5766ec160eccd425872bac933777180f2b15f00a5e6ad512a53dd6dfb9a98537d769fe77e6bf60b5ea239aab5083069209fe8ad6776332c4a2cbe0073f6bfd9a9bd022199b4307bbfd311d4d777cb0e6b1bf7e193e2f3ef648a2cfa05f562f5870e3ff2c023689288cd7dba2978b009080e6c8c6192a6eccee889eadae8e99f82d464fabbaca057a01ebfbaa4f828af20c09d5b78e8bb326d3964571484e86928ed8219683152341f1259b1fd99fe1ec15e5e71b3cc2c6809ca5965b038c8d0ab1ebacd9380f38cfaac0100d249b9b5a8f2e04f83f36065919d7b19a634b371c5c6a7c6fa347849916605d4e6247af1cc5fc31ad1f3b5940a38729e76a8799837437a57af78abb8bf6d7a41848d510e75cc994a67123a3e1ad7eee90751a78a4fd8a2ae4ab8dc9f3151a2f0ff44373e1f2d4aea5529e0fabf230c5e7fd437c82841278f83f6bcd626c41e9a2b3feb612a8fc64d997a1e7d9195adfc9d9b70e368938492a5f0d2f32cc30b71679b614f61883435558f00b251d66e0dbd71141c1b8222459af15dc1cc655f9b7bfd463e1e703f0d651b3df2f02326016ce2759648f4d3d1d8080b9adfc0b2ac510197ae49290e4c37728cb834daff605369cb4094c7242da66a326d6b85a6303941d0ef379bb110ec791dba227ba74e0c30ed7bb409d434b37c18839581d64d91bcb66903e1b1b85936f251cd0e0011ecc6e8ae2cea23e10de81292c62a62f0b54b5ac01a06e171c84f900e9923e305edd7e9b20d303ef4757e2ac1b19a8cff8935b70de0bb074017a2f2b867fa48cd9661c2ddfa39a8771006a9c13d558f06a3b7dcd8787ee1ea69f0b0ee9abed4caf7ef9a8509f20e092c7eb0d0de9310ad58af587ed2c59ab6965a2059a5e488a7908cf380959f0557ba6d71c46a62f55b9c78a40d7d566ba4ea4ac5000b5712c86148b821454075949fd7ea3c98aafa3846f37eb5494bf9cbe84bf0873902cb7a3117adeb8eca056e79ab1cdf496b8985f192f45407527fb4f854363e4c1de4c4e8ba73f0e0b8f847024e019e241205e56b1090e7353142d7998542b4300f42e36f35341fb924f3c5757c823361d0c39c19b1e9eac1d1db83bbb6e54bd62dc50b62875510167402e8f9564a9e4d026a80106f9003f01dd4c7a490be3ddea37b128a6adfb634df1c7ba113a0b954d364b417ecae6a38c732d9a2743f772fa18d260aedadbe1bfa1073d6f2f92bb601dd92144a7d4aa856550cf78e3e0067dd26d8065e354468fc6502c598d2c510b4ce40329ff4592294ab13f34f025ae156fe3629dbd1f910b05cc4339342100a2545b19de87950effe67f8635007978bcc0c969b55196aacc93f8ac8a4491b15ede729772e02abfb499b615863535d2350a2c877b3845475d018c5e75e3af36aad8fd362eab4f5c7b18e73f0ec873cf16026b7732bba66e4bdca5f5d37c03888ba8b6a0742ad8151c934e6c4157911fc39409edbc396f784c29523ec8719f188be61d76f0143cab4ea08c703e4e46d36a5722993810cd700623ef54b741e37e60e6ccb141669f0f33c2ee31e1bdd1a6ca5c65528a8749891223ea559e065dd68711d701c4472273c41df51ee84373190da726147338900bd38a0b56c378db00d0a68b08d67c46282025cfdc85cb3403c3d430aad5a045e486f1dcee20f3529f221b340bc9f9e3bc1a7f01c1451b8357cfe32c3a4091cf3da8fdfab1950e57989f8d6b48b9f07dae4c1a5ab1c54369c193dd4fd4f40950dcb9f0f61d1c0037693e22867daad9a2934e5c022fc77e9c75bcb4f3894aa9b04dc1c89c9701eec08aa5941a80b662fe83b919192ddf187dc19c08fa53a1e1f4e10bd92b3fef58015d8904f4ad755b72a025880ee8120f2d68327a289a7acc5ad5633d7d763fea24362d8cfa04ee6db06024025d26c7c128cf107e7df8f2cb05a9c7e0ab71e2f831895ea3d720d292f5aff13c1ca79e140fe614a2ee6ea22026cad8419638957d0111d35f3f1344b1182183093cb11d8ddd754de1012e26a7464e1330a2ade7820694ab2ff9fb3462c6d4a306060c0cc113db362c102345b44074bdc6711c61da97196c7f3bd6f2e74633cf67ecdbc665fe887e7f2f49459ed5d4db0005b19c93302add0a1da6f4712acd453c4f3958707116b393e05c0921b9bb8e0f48c8f4eb8447fea1e72f9c82df60b8f09d997528c9b152bd07081ab532d59b60f428cc57490b3028868361da3909a5b42ac000f027277bf551ab8bfa7ae2a858d1624ff1bb28c1364d511e9d768502545e1c110c0b912caa4542a0ffb58c2095ca6599c40b6c59ef7e06dd52e3e14cb3409167b8cd949d75ec3c42eeb32dec9ca16ce0c61bf3cbaf3b683eacc45b8f9f187408ef4d064f73ba4c00216ca01dce5813c185ebfea8986346c58b749ad2fb6eac263f0da0f3c1bf9c56fa1db7146934327de19fcfe7aceffe4f27b883fb3bac78485306610c387bc66730353a0b360ebe8c4cd03bf9673a4155c04e9a399ba1878d1900f0ad9758513426ca97dd095da9e183072cd2a5cc2bb5de6527cb7896c44ea7fa0077015d63a0a86dc06654e11abf8bb4bddb76808efc31291dd91a395d8c66b7a5707f3c6d9f5adea135b3308f52dda5d196812e769de5a92cf22cf76884210faf6751094b06bee6e43f3844d44e4754fd4626d0ffc56d608e15932ead2ddf55ef923d1e31685e7cfc361ba4b06866917e8f760baf4251f97deaff87962413108cc1766256797506ea320b181f4d9f8e9793b3dc06f6451f4a857e0e4924aa9eeb832cc34182d160c32ddb500f1f3eebe50983cac213523200e0ea50915d432fe4f2fc39e7a4e0e1019d155db1f40cc21b3dde547c7a9fad3e7dbca5cca13b03d3978bc16c9eae104308063be53ca76310d02432acd8b49332c1b3e918abbda3e478e77fa2a9bfb7b91616c9f5d4fa41a26482c3e57f405a7838a3d9fbb3ab0a06ed653f6382bc4cd06d2b6957e06904a189c12a1b07705f38e480f169c65fdfdef347b300f5f7e5a82eb46d926fc2f80d5b78656e308d50776bde4115fe9ca21340274a5cb9ad626f9cff7698de815adf7c1cccd3770a98ff966052fa51d178cdaebfa5d3d50d48e6e337b33964f1c0a316262d5fb719b8cea7db5b1820e03fd1ce2f515d38f77366d0d9432f54494f26bcf9ecd364a6d962ef6d4659b0763dabb54c48b66bc853563e7b67bb12cf1f73e33d0846186ab6969b77c710afd65a45dd6abf617a5c0c476411d6d2b708ec094d6c6501b8fd1cbdd2b0555fadcec1f4ff0b318aca3b3e9b7ccc64130aaabba5e1c53344ec897e7c2e6b0fcef2058c4203b5fca645787d94a10930e058e2abb62f11b541029da981c5078468990e822c236e31ff07ab45c5e40c56a6fc9b2dd4e254d1774431fedf89c3edca24b619084c22586c09592a50d1d9c4c08733929c80d7fef80b8c5a161a7ee85dce326db7d9521f90083ddcdf3dc9fd349730b57570b9a46bb69e054923999ab599164a79dd78cf916fd41e18478333bf627cbdae8189b959d46fb8013fdbbb2aef70ca36551f7e42b50b6cbdc5dece99f4d93f861563920697a9cdb59e8f38e6f6664477e13497678e2bdd03a51e1fc657e6313d116d266f52138c822a73dbbaea2b73656549ab1cb98f94425b61ceab90b72b962c46b8037b28c9825cfda4ca9a7c0fe51c03408120953295c0450c7c783f4af733a768a0e7b5e4b9038c241d231c2fe84cf53e2cecbe14e49e92e36f57375d8a6a264200321110ceba7002913d157c256cf7778c44c4907ecdc10e6872434c405a64444b3eaed177c85ce17ba8c897dbbe4236689593e59846f0663bb784c638659a5c67b9d15c05a9550009ea597da02850185a9963d18bfe75438a0fabee9a3d42f8ed02bf60893539e367ebe745af30bdddbcb65d736ae81c8833520f95e94ec37e0a526b5ca1c1621e254ae5d3ed24ee1e21b5342a7056404fc43ca54edb17e38edf71b440367370e1604d0217329b017f5d1ca5d7444ea6eeea61865084052bdd697856232a71dfdcda3ae3227b41af6bc947cce36c2c8a4651ace9fde878328516b5e5f272e0997e2bea57661e4a036aa4cf0d7026ea0b10134eab256f754569e7c556ed32cdee6c6369bf09ccf766a4b7e5c9750513ac79cdef5d8a2771ada2e79e1cd10fd08b358fc5a69b30f728dc01e0696fa006f192ec1ccb4e2f8e43b706e5e84f7a4acf15acb952aaf0e2743fd44d0628a5977d4b8eb471f076a79a2b8ca86f5499b637859a5f7612578e15b059410a75fd4ef0a2dccbea81b1d4a7b817e62dde261c28dd48eca6dd47773886de3cf46d9b0976a63e1bf2692df981ce7916c2accee521762204f80740324cbb2a64625e22ca077d3df96670b0eab020974b40f8146af2ef74de886fefd4ca1b294fe49e1bc879c74d8d590f313a09417008b8e82a279f6c2358c7283b0ac2fe71d45d8fd0353c02862f128b67baaf1b094f632a5b1cb56c214a063b67a249a8be8e3f68b73970ae3798bc56ffb7573da3dbabf0a20dea6bd2e998be5409ad1732140296608c89a6a626ce2b4d8b677bb30ec04b6a0ace0517bb60dffc55481e260039358e9213cd7e00a5b301b08298592fbee7960003985efc0616af940c3d29f1a22fd20710960e3d3b81bf6cfb631e6f94287851a0036f6e4a68daa7d3953d56b149ec6931a06e4ab8891b74e7e228f8dcdb33595933123d156a16b854a532b69579a735dd3b941151a2ffa9c9f184c1638345622005c99770daaea047bf81cbf9f2710cc8ef5353cbfd6bba06f15b7c66f83016854f20b901f354ff6330cee9ac9581ee7b7705e8b4a2132d261c102bea7077406a47c54fcaac3d5b6b2f5c2c20f55b1ad2cd9a55fe9b089887ef75c6a4dc462b8ae8a1c07d49157cdfc38e0bbada3c86ea66381e826dbfc495b44ca982d006a92d20b9d2c1706b598de6ed8c1a79b68ada7b7063f6576572a24754e2151a503e9e9f372d4000b3183e63f8a86c8f54c23d9eea28d5af0584d0054259fc21ced5b92e8188c037748036c1f898e60f84b630ecb2dede09aa5863d5517ec4eec4e151efe11c2067602993d671bfb06459a3bea71b0a65040b619a7034fb640d815ecf3168c7cd3afec916346102eec57bb8c6d95b0b87440002754e5bccdc45af3cdcc25d023312606cca01345585732ba3abcb8e4da83903cce73a0a1b2ea1e81ee72c5d1cf366418684cd63f1d0e681fdec776c170f599074185d7bfbaaa6df7380d7d128335a12c8dca038d790fe710d9b8fcd2ebef08b87c19994875db01ef262cb5839c8e8ff3d31e79cf35ce7509e8b4f87f13e1b02d0d0532935e2e1cdc544923222d1c0869ddc486b7e7c96e6271a24bf33a40aa39d378900461795f60440d2b8b31d8cea4925447c6c3742081fc21d11fdec231d7ba89c60bba1b3d304079491549bc0799ee83888f07ff9d93a0c71cc75f4253278c54465432fb060a2596641e6455ff8b2a6e7df8ad58134ff8f6775deb446d4838ef8c0b74265093127db25dd5dc69d359772dcbeb60ebc6d1e3cb11f31bbae166b6f09859746853e8f0f4a8601e0d2b570ea03ee1ab838c76677f591b41e9728c89f1e36839720feabc9d0164484b88c280e0897cbda5cde47a7a7bcf9e9ef9ebfaf464820b1519f4e681fbb06346963e6adb76b39ceda6d9d14821cce019aa0f9c5686fd4587895a9c82253bd1695c21a1c660ee4a562793078cdaf731691a2f0aa3cfd91f2d35e29ca2c2f2de11fbef8265e4f6b21f998f72b0f624ea57e03c8463eff54f4eec414dd6b3fea9516a7bfff8b233cf2f3291c6a286d40ccded7b29ced91f64f3943db892e666999537e8d874238c7e4edb6d39c33f83c951787bb55824cbb13cbac46bbd067065315ea7158659b0ce65a20f7c6d4586fc13d1e6d36fa1bcd08ff7afd1e86235aeaf83937a49f4c3ea151c83e51fe2bbac2af1916b4e562ff7195003b193e1c2f7dd15dbeb2961dfc7f2e6cc1a5b1cbd68b2fa67a2eb80a9a7955cccd7a8ee40208a886ce9dd1ce0b23522043debea2bcd8c2010317bc896b43090862843b446f93cfe9af7d1c03ab629e71d0d42c82e3aa2ebde2a66efd0bab33260bce66d63703697ae89fad64e84c5fa16adb63cf916e045b359fd14c79213330e8d7a3790b33463618f5df2d9b395fbd1ae98349d692ca72835ee92cf56297ca50c31fdd0044cfa41d0392f4a22eee513a6d66cbb6bf710cf12bd1f51bad823e4c074b5f428a1d07409dd3c30ee580c98b9214ba60722f9b2a600862fa7bdfc0526b2feebb3a14bf7cd3732cf0ae539bf4876227bedb7f83e09ad98087527eceedfda89b8a9696131c5ee821844eb9f581f9e2e5ce6d3655d22f3042f2309124866a5d60762793ac893fec3ce7dab5dd5d515105d325c274f44553bc76603683d0111932ede59878b097f6221e31781643186f1b46988b2f073b230643f7e30f0006e035f475e05eb0422552b3d6edaf9816fcc90fba4f2c955699536cf10fdc6646c9a8b9c92781b4e803b92beb693bfca5586713bd550caf19e88e38343cd42e7df94f827f52c41ad01d72398073eacff8e8d4b3450994b09664466f15f85375bd505ef6747141d366c463e3a04f0fab3c7a42b935f170bbed5206d77e050dc829d6ef4cff30a1d2e980e01d3198cb5cfa9ce9112579aa200408e652064474f92e258a49f89ce52d82dbb5d2eb61f947e79fafb4cb746f2c346096ea52100040640d951a50b445377a7d93c8ba7aa21559233bd2b87d6722cfc1017d5f358cbc0c3d3fe9788f6f4a48dc94f74fc41c724da202407d71d3b318b14b83c8ae9e1eec9f983786facaa78b400f20232bf632aeb016b3ee04d6cc9c60b98766ddecc4509884ad44055433beb8b3625515ef486ef108665f595cda523cfdbaa587c453e6f60fd7fea5a1472eb816103f7dea2e485206c141ff5f838f623a9b03ea3c3b615747517f17464c146334f1941f7b59e52267e3aceed81fe26ba9cb677fe05fe3ff0f99f5673d860cb71be76cfd51377c3068fa00988fc3d6e0d3e03afd81d731eeb014142742b4aff1572dad89d581311eca8cf90743ecb899cfedb7f053f652537cf2412b162db202acfc9952d6f485ad20b419ea03c1fac1601e66539cdf233c913865bdd95d8b12911969e7ea00518d8164d92cbb94a9e2901baf02c4de5aed0340cabf59c1ee7cd09f28c9f9deb9f7f4ec11d97e07fa91e5ca9a0620b1546c5967be8fbafacfea787820c7e58e284847f81885024f71bfc4cd5d42460b9c4acea77bb86eafa7129b041ee45c1384b9c58876ad92305b9aaceb706b48cdb793167880456c8003982c92e4edf56e0cfaec536ce5ad98d5c078a917c058d8801dd11ffb6b7c291ecdd9f1ce960f06006c9e9376fc9261cbf45fbe59f77ff6bddabaed5d2183a4cea3bcdb58543571c68fc637d9a83eee595f1e47b7a654583d919093a09e7a76398a2041ce6b7ba8b4d0b62ae7e738fe5e3edb59c815e0921046db79f490d84babcc159ef54092ddf8ba50c87bc152c97cfe87b8d74e16a21aaa5a1500bba20937e0bf0355cf93481c7884cab8fe3b0efe868b235ba7aed02f4c5b2e29d376cedf01f21f1ed201ba8812ae2d26e9d4b17c8b2e32d96d6420b41ca1801a177cae46c242997c458b6ccd831eb6142a03b60e4111897a516bf447d62794f50c158bd2e171cb1918b99f7b0703f41fb66716d42a7f10ed22ab4ffd00812b199a7409904061322682722bc4737f3c5dcae8dde517f4cb8fb263cdb12586a68bb0fc8d86677b698740f54e1c5d98981e14e33142427574cf7a8243f000ee883234426f96b331b8c219d0399f74685a4dcd948d442139633c9478a557c79f771efaf3360267dfee741f4c87937a35a29a2a86183a628d88ecae874285a97af649539b4b03518406dc2ac56b0e2ec5248a5971cf297877fde17950030f53a58cc5f6af3206f49ad3e0a40b53529a394c355304ab702a1bc1dcfd728e815888f2f335e8a4640a4f6f9eef2eed7a0140d073d595e11dbc02fa026f249abd85d974fe0dc76735174d589239e1578af4e00c6ede8d79d28729be153f6e8f64e2958a5b9b261da435be1ef67afb4f23e803f6d62abd8d3d9968d31795b800491c1865028eaf69d2b7c6b656a1064ceec91cc0bd09b780b8141a3d361f47c771da625933cc5a36a245fe1782f3871a5af7a4be22a260763d3170b8ad08b1e902d48ffa1d06920b3c16bb65c7da544d19aea716d35721a83eb28e07833f66a64abdfc26af4a758520579ad967bce6538a1d044b9cc62cdd3219f100dd619f46481253dda8c6abda46841e0066abd5b6fdb1e4acd91cf49ce1029b60d049772105cf85a4919ee32e3ef3efa707e2d886a16d8d67cffc4021199db629b7e5485d9be35b624bd159b481c05c0da9b75bdad62fbf73da113ffb6068b845f8c580af9fe07b0502948369f8068f6de7dc6f34793875154b2d1cb7e4d49f64547b2c9c5de327c0ed88396665ec07e20d754bbf681526f5d85bc954416a122bbfca58c250a79fe50e6067314f3d94bf20a0e5cd330dd12a1976b8d8e0931d6ffbc6866e7b50e66a9a429b6de07332f081897aca5c52f30d84e9266254336f7267dc891324b4a4251d8a76d5452b737abc3c053b683960f581d0528c251cb1f59d4c828ac46942f1858e46b97405e795bc5b1965d68f72bbff4497def00d4122647d969c7d26a4c85ae79431f919b2385f5bf70d2c64ecc9f719705a5fa9cfd0469c6c40c28d5a96917e11b1094d98694ca343dcc22e6b224ae38aa488b3a655c0625a353455e6854b5baea152a94b86b30490e61e5b113efb59986dbbb3fa7f45221448a0b402c1ea8c6a12e1540a1d2962828c805cf3b576c32815cfcd1bde109a6c696d2629051a2eb76fc9059613133b4d1ce8fa4498b539e9cda49fe6274d6fce612bdabeb9c422addef45c194d7c610f7194d201bda74a51a6f58eac9dca45e7dfe41eae9f1b0f8ac72e1f7f377f4522c1578568bb69140e5dfb1242e8e0ef290fa3c7e0a73d2831ba1829f05d383d24aeeb6f17e34297fcbfbf0d85f6e2398b5c507dd34d2577405b6e867525e860ff4bba694b1b25d677853cd65df9a15951617b5d837dfecce4b676efcb8eef8f2e01ea136b2405b9864816ca444d96e8ce7d0d5ab6e1e04ea3f36e703c1d5d18ffadd9f5ea92e95674d21650ea72114e11bec3a62638816f8b2bb995ec5c2ccd3234b0ba3626cb32b4a75b50cf3d5619d81d3296820285d1bab9f3e1e8bac20274f4fe7fe73f0fb59b16ef47caea731d20fa349fe8a5b1f19eef07cf73e83e0a8e438a3a1d9a22f73637c28048535285932386513581db62065e55cba9abd4151599cc4ff84f9a12ef916aa27b14211092e24e11a567c54e1fd11de91c8792984fbd3865ff9fe1f324711b0e54f67b7b5f9f46af43d4d38e9097006fe7107bcaf847fc038a78ac50164e14f3fc15f14990c7e9a02475c1986e7c39a0120d6432efdf5ee6b68b21ddef71212e443e33b0f91720f0542ef04b5ed1e62ae218a2bfd1159c5906ae0d7b36f985ef75620d341df7c6919f466d99546baaaff6c47ef5e539521cd97197cfed547be38e5c6d3aeeaa1f8c30d2ff925baeb9bbdf24be7164c157e07d5aa4abe87ed6fcbf25740e3c82fa036122bff7c164fd1044e9521ead1c5de6dc777af31d121f7e476622a06e7476f82ae321d5b487c693738502f228d3b94c42a754655120b2900b88b96f29602553532e339fca349e6cb840831c97bf49b2bcde4036fb47e74401f4bf163ddb86a29c9f294f68ee1166557273e8853390a51a830e803b6e02c7ac1a0fb7e35255a3abf8439212118f9b8f59a850f670f006e76f4d97c3566b3cc50e18c7f6cddf7c16846b697eaf4f81a91d8de7f58524362ec3c69df654a768c010c0774228e234ba9f8f0395ea65d1507212bf69c496dcbb64be82631630c5b875d50ff3c71ef21d41f8f7b11671459942d7565d7e59875339a89d2614f4c65a6090eb61066b0b4ca571f9894e6d9f2c06119ae532658fc3d79d1018f53f2643b684bf87a5159c5c1ca6b40ba13598fb2195f0a11b6aa9a01c5ee663075a2f415e3b5cbf7deb2fbd78ca2ae010308533f5e95ea6eeae1da81526bc11a6846a2dca1077afb317611b9b1ce5fc9fdbc8d6638e4434ad627eae362f89fe4342dcdd5204e32db33a0572ce82607cac36c639cdc008abd93404ffda7cfbf7e0f652c78bf4dcade8951aa6d6c38813dd091facc9a76b8f91b69e820dffd46ee2aed6dd70baeb8afda6704f6c8fcfb569169a62155e32b05b4555c4f032c6f7224f2c9d142627c9255415b9047c26fb7ca96f67390862799d0fc559324747cd3f6f171a1a6a07a94f15185879e417b24212835a6ed5e40e330a6c5f4e159a02f5e1f6acc6acc20301ad35a9672e073259344c711aca6aa515d25fed5e5dcefafc92f4f97b58480f3eef44f76029e4128b30d47591b654c09f96316666ca9246d2809e40d692cced4c9364bb3a2c4976759098b69b72165e8160a4ef3e87546233374c25488b5d66ca21d4f0f0cf86d6accc06daceaa1a7a7726fbb2d0e651d43a33e23eaec87d64b8310bdb8c1bddfe8e2e1959923ac7447889e7b565a2b406346974fbf5059d77c3055a99a48c0bed584ebdd877939c8cfe4eba23ab6a3ff22de5fd5f277e32114ec2a2398a7a82951016e6b917b787ae2f28c214d3a4233f25117463fc5eceebd41a2baf8d61890c39a8ca405348e6568081ba2a657319708f206aa401b222a53e8828f482bfe4e5069fa312e0534fd7e470569b38d146dbba0f82901abea3bcae352ad02d312e861b42760c4b18898e21f89a9765cadb7a0914d458c8f7099927fe2581805fb04add443307b099ae7ddf37f3b67e8b7ce70981b5b2e352b284e387cb5aeffd820488f0a8ebf91d75256dd0ba3680546e42739305c266b849668036961bb45e478f436c4041f2a2becfe730e0b0be3fa14467ba566a583f94d9b5c25fa789decf13e72871dd865a5d37cb71569d7fa4d92f42effa2c02eed1e2880035131359911018f2ebe1817205de978e0b0e25fa03515e41f6b068b3a25e316a61638d4a8cda9198d2d9a0b21b8a0f3f1cd5af600ac87421f5bc80772a93841d60ca76e30c86988c4e80ec8d73a3997d093fb483e35fa53e6843256f9ee8ad42b92ef38ff0a15b727987e1a8a499c8f4314b84672c85ea582c69ff42e38d264e5e435a93ee43531728334af0066f045e36cfe82af07890a52c7a24cdb2360738d207e03eaee44a5ab38672fbe0ef3a9606bba4ea4b976ad76c4a740171f7e864911692babdc379ad440d925bce42df7d7f0d6c0622924672dc04d4025ec3190d65c576f3d63dfd98b2ad64e0d1f5e7dc879a1d851ee8898c233d78c791cd8f1f6ba4f07505f945c4b98dc35155015a86a72999c837aa63d79f7cff6a6511e5b06c64346be4a2f2d3ef43a70fbef5cda9299227d86b222d84eb88ebc5c7a6e68c36f24778af48cbd53465379ee287f21f60fb0210c6e8f32eb1d4e55e6e5a08abe7602744165add59a493d524c3c972a135c4637aa108d97abc6f74c369bcda2ccdb5fa0de0e93bb62fe2c7e7e9d422a7e8446848144ae9af5498a16766c34643338545aa623bca64e9ea582228f276c1a52b2855898185b13b0060f93be9eab787da3c46e3949d9bb985a30066ce3561b7f5673d73034dcf50f2975a9a9436ae1716374d2d2ee2dcd1fe4d08b789113f8586a983b00ca543f61d453d340a8591fd88b59d49c1878603284fcf37a340df02a868c176aec880bb044fdbd6b97f80a2055118884dc52177a60a6a76e068b3997365eb3aa90a2cf59d35c038993f24686c1c68fc137795b363a36b9c7320c0f2f24ce25d3d2d5ab6f9e2f879b263bdeb2f745097a916e0a6ae43b83f28aa7cbf92632b961c530792cc0d78756e84fe102eaea0038d606234ef8a355e5086ab24186990873553e290f959b346b94a7e8664d0634a66c3b4ba13f8578fc0847a41a98e61c8571d9cd598968afbd1de971a1e82be8bc17bd5736b9398295aa4ed2214b7c7674a86361263b7545c3448687e842d36c9522c331f0032b23f53c4d073919a06693b7abdb9d0c4eb6500be6b899da74f9a5b34e70be7bedbfd8b703d4c1fdf47fbb267f39967ab1ad75b38538a28103b654a0c9af80cf1e160a436f4e2aba40adb1ff8561a800657d9c6cb72dd1f9a6662b0f13d12370405f88cd80567261aaab3173ea6ded74a57452f8671f2301b93d2d4bd7cbd28a495d5986d4b20b6ac43843d03b4e2686ce3d53f4546277bda70ffce339e5e243f10b44ec96781331f261b77a020d07fb7a89388e7e6a9870e71cb2eb2f81edc480467c9bf6e7c35f0a5d32219533ee0cd37a9256c356cbbfa2c730eeef2693a4213f01371374e6456beb072ee423dccc45d0a49612db79ef4f3dc4fc31bb4388e8efefcaff81e9b7f3bdc999d71883ddb41ebe3f724a6d383bb99e35abd4852667c0920d73e84f91ec10d9e89eee8b32999796d587802b3846a2afc05fc374049d2c20f0df53379c22dedfc17506d008011dac60cf4ea4bd9d25180bd5e708ddad82525925dc839f9c899628180db5b57168c08bc71bbae69bc0750e5c81026be4a8a90e832267118ba14ab826df4c3cf3c807925b836c495541bd82a115ab00dc92dd6858f2cba47d04a332bca32f84cf9dd24cb0591045a4b30215ab25ba718ffd986e27f2734e7f0bdd1d5dfc43dbd9729f833b8cdcbe95fc400ccf7f14a61c6b61c3acb6a7a12b69c57edd19172c8fadd6964b7797ecc9d475e57607caf73bcff76344bba51dc55b00baebb7a2bb84d835d8a9fff3f738311dcade042a2bc3be9dab33f9891149e7da61faf3ef0bcdb895bfa3f50f86a38849ba2986a3bcdb1887fd289c82c4e72dc0a9d528c8b46abd0213216a8a038e5e27d538d0338b8ed1b87fb97240001b5b6f1eaa56b2d00bf325c4c1f6425b166f173ffa3dab11c435e0f87d9f10eaf889f24d9cf0d68b20687d2f65cd9f652f6b181a26c891ffee29fc8e547aaff7cf7ba7cf2352cc282f3287fdf82ef32213e8f223d68fc21a827100e1f0e22bbaca6a53354735e7cb1a9f72f8b1c80c0e46aa58b8d73f04781377cd2cfa99bc4edaf572c129ff74c7cfe0c3bed4a17a62c6f75ace40daedde2a6340fdcc57dd44b0ef8c905839d6d952c5b247c73266610b8a3a95a24d85ef42371790be46311d8ed5be5c8028733064e1e9cd05da52315be736ee389c5ff9b6f4d452650b7fdfe62b67c0e1f661163d69c160e98d5e9e588d1076c45e7288e05c55ed1c837c9ef9c80fd1ecf92b4441adce36a46fe0f5fb0271052592e388a868f3978222ebf0ef3ea386e08764cd3a37a4dea19e89001d3815c35deb6c84fccbaf9a2ef591af759ed0fa9e9d6d587fce9fda3fa34a3783d6bc7fb5a96925ca7fc470128a2903ad884903e9baaa436c361dbb82cf46c459a5b38daac0c9b5ccc6ce4db7b568e64f4af0cbda05143a77e80e38a7432192d44eba5618d227c1dd6c93283395a983e7c33fd4fb650c3c752d2558b74862b9de1b1a1b4e11b6674b1da7e80801edcf6472dafb95b9a2760e05022ba5488cb2472776eaf8fe4aa28e5925fec12e8f07a20314c14190b1d3aba1796ae9947504b1e246d87ffcd77f684bdcbd7c7874f9e063c6adcf8dd7ed7abb87173b31bdb7c77e0292fa03453fea7e866df9805599bf97f0f0e95f64755d10bf74023cb4d7f7733da9fc093c95268f3c72344ef4037fdb9187551d3637a651db81590ebd1b9ba6486b17a37a1c747e58c036af739d0517be5ece26eed61d08b5884617ec8cc9eebaa2c28328d30bd8577de39091e5e3f8ae3336c185a1546815ea5b64ce674a8ba12254cbc7934177a0c8906737580475feb60af9f569881be33f7497c5b22ccca4a81d9fd35caa97f05ae4251774acb73d24a9b2e137cd92c0033f855d03fb49f21514ec985f7fc090d88d348360c6202aaca50303710986807812705058d021d1818384c05b70a8982fef12a9e73dd427ed58b774c879fbdd741d0283c145d49344f799b09a3cafd54d5a4c9ee02f202d8027452865e0c182f5cb460b1226fe7368bc63d4fccb29e255f77346f07c8f73c27ef7b55c76e3599db2ef73c6746cbc97364b131f0029da3a571b9f39a6edc3cd9dc6d9202b9bcddb6f164366bcaf4f4291bf3d54e012c6beaca5c6f9e87b198b4d18d8da93156bda4e9f3363f5a5bcecdd19a3a5bbecdf5b9fc7ae00d1a11b6ff1f7cfe4d2e1a139aab076c8333e5705df8f660a60beb06ee4319aee89c0a25c8d880825124f4b7fdbf33ef3e6ce7613fde97b6d87b04845270741700108efcc738659d68c56c65d5840141db7fc7ae597a2362a68361f00550697fe74f92b7f73f90e24b9ad352f6cf29867e73f8f980eae5a9fabff32391dbe398b64b01b8295cb8b61fefe13c0f7b94fde1bdb23b0097a1ca6c4b94a0045cae70a89d55b55439d0e3d4dbfa5a5f59f43019638d188bcf0ce0b01cdfae34915c682a1df98a2ede9f678077dd699715ab1cb17d45a2a0963995d5ddba0c924582ca177e66819229dadcec3d73a420ce8debbf9fff7bf04e9552955adbb0d61c6012e63e7f94a3ae7563d9f4aa37141fa109856f7fecb73e796215ddff4b7586eca44d4ac95aa4890a9a82d4cb6b5ba109d45a87bebdc9afff56fd7dd5e96d4c925c8afe470048f597451eabbfbbe4a8253815e864c54a575532c6e626098ea4397cdeb149bc6324e5b4bf7bce8199be91b4bd7901ded9e6f3551c361fe1ab9e7d9172f2a635624535230d31152e42f5277823bd039c4eedc6defadf8eddefe32fd7ad8a86c69ceedc718e86e66d32334c2cab93af3efa2446a428b5074c4eebed38ed4d26069b8754e16a7e2e36f65b2084d05642de013a214d41b0d73dc80f0789a2c37550e8f0bcaf8d8bc608889cfbbbdddeea9b40f6a46ad20e5b2bf33c9e30a4f9fd5163b9d2e178db8f1bfb6b84381fc51e76eeb65e793dc09c88f80269dfbdb17e4bbe7fb72d6dcb17054785c21c8f7bfbfd5fee5f7fdcaef4de6e9ab765346759cfd190de3ea2e5b98e253ba0c329eb240ace015d84e503135b59710cc9d064eda6ba775efe7eff71dc1b46528f607b39528588e7dc8a2fcbaaecae8e4ab379e91a4bcf4067f6561dd00804c80c6ccefef1836d7aa1d82e5d539f4aaf6a50a02ce974cd408c0907cb009f7a81983eebe3ab003813c5664dade004014577e2a7df62e1b3478f308ff07cc148f9dad6244ef04c07b2e6e26879693c5a078f92ae91e3e3d350a4e31e5e65c62ddd4940d7565f3405e95758b483409aa7ae937fbdcdaa2dde93e6b1179b35c8e9deaddfcafd24f2ebeb0becb8dffbbefbbbddec3b80934b7f9389919195ed15cedfcdd6b027dfbe7af99bf772872c3dba08e88cae0934a27340902e573034806a4e195e0c9403651626a968b944923913e763efa2df00303b4428bbe9695f76c111904653df6497d7a8763915a3eb0051f4bd2c4a0874f325d34b8f132300f872b3b3c4cfd4073ce82597988cae9f6cbaccd0b401166eed74df7bdb75b9476345f8734dd2245d374593e3221bd7253015e335ea0456bd7bb327fba5df1207db40d17591ca93092aad42be79016ecc5068b1a431c6165d13ebf66bdea182d8dfd58b2f5d0fc3ccc2c2ce63ea1a762ddcf53ed59cd2ab35ebddf52894419e0bcfa7dbf30af5ba59a39ee9fe976ea71b96cd1a3569bc68049c0d92edf7d3edbea3765bac3a5cecd5c2fb557f7abcdc9677bfede58545b5422ff869b30debad506c136a65f350358fbd66a55e77829e119a69a20acb688d4d2a96c35a72fc8e2ff13e7cbc0f644531496176d8df7f3fffbf83f5b39abfbfc7f3beea6da6f4cc7ff0deabf9fdfc9560604aba5ba9c477f23f67a78eca2614babbbac0708d9ee16795c96ecc0803eecdde4fcf8722a8f4ee228f753adef3833fe27d502a95caab21b3457381fef4d993e74e9de19ce29b1d40d730a78d8a9874d85d963426d2921583fce6eb4d2242c1834fd8979c8d4706704c32997c4e78b6e9d6abd98332b231b130b0bb7d2eaca64ff32b5198341512c264899224488e1829f24764889f90207dca2f23a13c63a0342320dbf887cfcf882d5e1d04a9259868d7670b901f3e7af0f1d8a123078ea81b368435f6b034ac6f5d6660ad75f16111553c5227fc7e7c485371d88a49f0367c07f33659a214030308182c5405e48220b525cc1edfae8717aaf5c43de56eaa8e9c96b60c8cf6d88c3470c243cf488646d95685b51257082083641a7477155453c52530f0fa34f8053af1a6a30f9a280a38147609383e8a14b35819d85eb9b13435860659a0f9be30b4903335d02bed7992a671c5fd50775c4bac3407c81a4412ee4938a9ef88577fb085543094228737baf6d0f551e5a8a0fc4e7a7fb9ffefeb0f7f6f0e5f655f6767f9f82cf643259bd6668f3cdefbd7b1b76d9bedce777e8fffb429feae79b0b3c7c5eeadb7e6e15d77bbefebdffeeff130bf7bbf7656d6dc9d37dbdfdbb74f7eed3bdcddff1feb5faf7ff376e61cc7cbfed37d91655d70f9b8f548bd8c3c7e3a73396c6fc7556fefe01d2a6d5ad776ee947a95f0bd5c7eb69b67ef2d177767eb7b56962deecacaca3aeec9e7febd8de33f6ebfedafd7ddf4b7dffdede5cb5dbbcbfebf6bbec3defc7e57f8f7edb5dffb7ddfdfabe9566ddebbd3fbefbcf5f13ededa996baa9df28e2cf6b7f7625349572f6d73e06f68b4e9bcfa7ffe610e5fb6af9c595bd68eb5602d57abd56669f1c4be8c50695a120e6d35e0da1a6a0df5b26a372c026da0083585514229b0c14b6d41bc646f636f626f441053ba661b4c82a96b60ea0ea6eed372f909a65e87c235a388db679fd5aad7ead4aa42a1fa14ab4f9b4f6a337b45d74ddbd30c1628b84a604523a8babff7499b4d03d4f6f654eac3c4767bdcb543fdcdd520f51f4cdd5ab7e1e69d9d952546fe7f948b73f3f61ef6faffbb37b2bb87cd3546f0f113a849386a056faf792646ce11349a1a13821f92aec1707c38e871bbaf075868b1f8cbac56067ea963aa9a06b7a73447fb5c38c352829d1994fb9c1c449b357830f7178bacb5b495442178d5b9727382b0ca99aebd9e77d84a8d3432744aedb0e4fa58737da9bbf272709e17683a6a1938a420cb56856c8aaab79cec868685080d12b40536ae80a4800e53558eaeb53c3df40b5b351c6f9362b9e20d57a132c54a0a5d24f917a8e4f157459c629645d8f472712c2e50a0514cf8bb0231642ccf733cff5e99546c0986fdf628f9dd1b14bfb4e19a5725270d4f9cf83d3d4d9808a8d2d7004b86566c6c1d09e282b68b2fea204c22b05618c85b90a2a8e46a0d7408604835dd26e9b377bd117c885605d04053720e58c541c2404b37651d016280a987519f1230e2e5fc11a5cf4e268a381004fb934284e9c6101f23e8aa5f4dd73e9ef4139b9020578a987d05a8d04c0c8050115b10c81a32e9ba8795a00cdee9485c16c912ecd1c732dfd13aa4fae163c11ae2dd230a87d08f8f871693d633e31ddbc105e6888bfd26a23874f81d67804b1a918e283da9831c08e83a47544d38852b22e380e3860d2921979ed53b386829de8f842a28422d06f29adf2ba305747d8396b0c54412d9775a2350d1f51e1d0087f2106013d5a5a6617b7c3cbe13d7d89b21c329de6691d3bd4cddaf481ccf99fb77cddb7bf998854299d5e891f945436332f709310ce449610ca0eb18d8e65ba11cc7713c7fe1a2c5904594d70bc600ee700554a0fee00531ee4595a83638cc539102c5801326c64a7cd1b58b2d4fa22b50683742818b2f6828a205f3a9380ca1044363fd5fb380e281187ef05b315ee061587cca2026d711874e029a84c3ab18969495021806291457da524f0288823c1480703386beba433e21a8c0962b39206c70a1018cd8dfa0a843d47857a4b2188f3c3982ea512046d30af2b66bbed6289e749eb5da6b7ec889b1dd2d7fadcdb939f0d7dbe56eff151230e4e2306c39877b6e538204040959b03de01a100d271176b77438e127e54e9f104e22b638553a84a1c40d9fe98bfad02024d4a3414f9cc03e80463b744f2426b4006820e401c78cc8852a251f330a1dbb4d009bc818660903084ed0fd48275a205b8fbc3170a951f1afaf48b5be02288c30238eaab7820f4b8b420c906526e69161141ae14f8bae1691885331d620ba81034b9b261d35048581f860dad0cf2319202adde8f38069c777ca416726439ee117aa4cb94f4e9638826ddcfcc0620a54140672c3c2685f6cd0e6799e96ae45a8d97a354e8e408a37583f38e55bfe804a22406a3b029b41a8b4151bb319803a1a3a73410014128e89e401813c22d5f5d94e06a4e6e442e8684272b00e2991082169080208c0000000080080001a08000dd2ea0be6a922b4a281631a7bd11cb1d70701b758275f6da78dbf35686db10dc43a5ee5467a93beef45a5a16219b526199962a0d759150c090e7adfc7e587fa0a011055798fde7a8f77d3377fa7d2cd8662376f3d693a7fc4f059e5b73ae8238cf9f8fd67e4530f6021cba3e2f2dc3d0de16604ee079e963c1bd15e4d00552d49abf0d566caf97c3e21ff13ec2144bc6d595415961ee1c1a10d6f1aff8b42c81fc5899d521b4659bed03fe67898cb1966047a8171a3815be6c84cd5cd29440b7c656bdf2aac729b957722491c07c85570cd40c3f1c01b5161e734e4a580defa22db3577ffa069300303a2636e779d81991b9f963572162300c550592c38f4042e8fc90f390c787f87ede747f729f4f3368e49de66df3667cee666726c322333286d3634581fd158d735a8f73ae02d8a8b7f41cdf756a6bcb06c673377b03afb7f27274f857ee01f10bca2926d4edf18eb53b0c66b7639ee623fec586746defa6f743e987736ab38179ff775852fbf1b24a246cac367d5d01721bed5a84b348194da119bf4ce90870364f651dcbdab3f2a355236ec38df7d7d25c5b94aa13eef30c8c4b1672857e3577e89765d8abcdc16df7d7c3a535e881d2a33b9678daf2a6efe1e85869d8cb5c350df34bcdba439fe093c6b2acb38750333d3e651e9edb634b0bb49248c303b4e6846e6eb94847c2f4dd8cf531cc3477852137d5ff344f5e9942ca9ca820b0d0bda41d2e86b192abd179889463830cadebe2fac5e51088f83fd3bf6adf7f32e79945d69a2a4ff798facabfaea74bd78a07be3983b329fb3b2cb9ab658cb3e458e473b891511ad4f20e0723bead20b97bf8cb0a51d8cc1859e4f604f80b557f73fe896516697d2a62d43ea84fbf887a4ee1963ec91bcc4113c20ffa0a2e5b10e354508bfb93d5d50c0a0461dbdc17c5a5b868104e72489a3634b782cea877569ab6e984da5e1024130888e1c7d87ee1f5d5eb9f29185cce533f1b58d1f6d3b07f211368d86373395af2fb7a61df7419567c74bc4d7fcb7463a1023d577f1fd767a01475f00c07397e3fae6850747250ec1c023e2e9288d748878be4c86bf8cbde4b52c700fec333650022e246bcfd5b2085bec83f7a33cde341a6c96fe96fcffd12271518dc80ca47cd1f34ce05a24e895dc174dbe8bf8846baf25acb0a991d53af1fe60ba8561719894fdaa49d45be75b997d5b1bec6cd462a900f071a45cbaed846093487c82c86cabe976c3164c81f09037cd48e17d7af065db9cf7e129980f949b8909622e7b243a70c83d2d8a1ce346d535e910729cbc71f805f6a0f6b7691ecf2619c44978bf23d79663c31c1e1d5166cc3ea5d83077843930b83f062b331e553a72373a5f8f6a45b385c28399f258d2fe88f881df39ce5e047b1c3cf87cedd3da58424b324f32b45ead1d91fcb5cc82ef7bdf8612f7ddc3862c831a1c20308927f9ba0ffa7b410a43262c3252ca0b82183c091d731b6a42398ac505071da52c8eee067840348e46a5dcae54f003634740e0868720e7de10e2f7f8a3660dc70624a327d03dade330c648ce2fbb0a75086e227f7cf109a15b9ba00757ed156d06f4efa3e215fc45d412d817a00fccdc374a733295146d65a2650623f98855cc243ba5d6200fb242c4dec686b0548131187a2c5d42b74f2946c0dfb0fee44bf109731fdbde996313ea1cf1a18e4e81fda60f83ed43592bd516d19d87af66f5c7556a3ed24ef3ee7bc1d9688f632856bec5be8a2848b3a3ac8de4a6b7c749d145e8c0a22ceda4e7e5d885eb1293cc24523fc392916d0119c3cb115ab7776e3a4276cbd24080742089039ed6049565bbcf384410ec342033b1ba9073e67f96cb28cf67887e00dcb07d0ee51b7e6b0bbab7ab868f3d43d51877b0bc04513ac8efbd0272952556e1946232f52929d9aad284bfb8ea226cd93b6c9bde9ad86a54132448bbb6240f9765fe70376c926a008eee8a56f747d78ff94f59ecc5aab982ab7fdfa3053f8349fabf59c6e9cc5b69e4d702207a8c1ce15b28df40c5284f75a4be10efe07ddb3d85c0c7c2fdf4c47fe8041a41d37de15c7e5c159321a7ecb0cee00365ad1cfcd69d4c3b04c40f9f1d5b1ec1f2070c0ec310922feb40b024e91c8ae1685ec27ca5e1b2e0ef1c63f0413f9292863f81e6d72376d2b759fc0deae28e18b7a2848c8b3e9b71d76f1a670e32c81bde9c390716b891f0bf7ebd741f209a058c83bb9361c7fed6f7eb999d0064159f3bcec6057316f382519df830f2259b3869077e7bf515274b9d60bc7adf125b86a78b2f86451bee7a611c0b1cb64e2f8cf18095089671cb0ad6f14269fcaa5d3a60691e3f396bc6e28dc6b84e95a971d4804ac333c9fea6d947188e26735396ccc6679ff0eea074e55cfbad7934addf0b55b936ee79e13800722e9c1e61756f1796216fa6bb78b5f1fcdf2efe082c28f5add428f00849e515908812bed07faf45853c26bfe46f8fe44da57a9f31c89f7cc6637e18bc8f12af829fb8ad3341bff9de4c3f78e38b5f27e6e577ffff273f02a2516603c12cb96de008cabb30385ec25194073224f528237c8f6779d13d189bbb82e138211e3c00e8bbd0de84364e24f2d4e14306ddf6fa30351f0063d44d97ff0e50ee94c9456c83cd986ea81ba772dc2adda2d7dc07b7a1a722b1309fe24080cfce139819828bc99a0f463f9d633c0c871826532243c19385d903f2bfb7fc719506fb729ef11a4fff528f393dda49a36721602572ef87ba0c4f922de4695ada0873500b87b74864a32940554c86e494846967e214e3a5271b4138f26c5101c1b514e8faf9d91ac5c98c38fa95e868200f747c91e1d3fd5a1bbb6422adaf82444df6b9e45618671d26cd0f4c5322f6db9f8c96582fa2acf4dbae40e8b06b16b0244a3743646b4858b278335874d6916ff6656bfa39cb16b21677cd4e8a29fa5452d520caff6ab7481c0f30a57990ba6c44c12581b2354f2ba07662babb482efd10a8d4d1006d324a3cbb0f5711bcc7b3fa28fdf3f3fd99f8a2f5064531c4eead03b1a9a65aa5870edce76f7a794661cc6ad2accca5c138e0f3a60e84cf3a399b2a38040971203fbf683ab65fcbc4741d3b78e25bdc4fea5e5b3a1329a2d9cbf552ede5faebf472fd757ab9feba5ebe975eff25dbebee4ff7fabd88bd7e2fb2d79bbd9efa6f374b20983c9d8e67fd254b0100e6c82fef1b67fd73f8e34c1292046a5b51d52a20b3cd9eb6b1b75ac06b0e7afae0b6743641bb00e11ab4310b0d170abb6bcebcab923e37296bda060008baf1995d062ef56561c55e7175ae75e8b56bc347cec1f7204c89fa2a78b20ef9ef4ec068c81db25e876d1184b8dd6f2a1a1ef23e6db14f383d4080bddf30dfe49f179eb3af9559660a53b9d96d6a26daf06974ad7be2f5e415d1c1d5dcfe72f01ad43d9e95136c039778ddb01ae91a0622f8f7ecaff3564e8fe650ec9347b8abe618068b700e3a352b6ab459770bca32cd2a87e0f317a10cb16a5e279974ba1026a0057758d7db4386d277c006fdfec363ef3c23a0d9ffe636597953849752b133560229863ab42cede64593f460828fdcff094516bf78e95c4979fadaddf4c5ecac4ae601fa7abde300129ab65e40825b6d754c5365dfd3d8afb49a4d952da1eca62949ca8df62e99db4cb4ebc0cefd0ee98c5e29a986717e0d4bdb49fbd0ae351d11074cf0c203599bdabaea14c9e2f9b710c32af71f8bfe38c785b709ee309c20ff3d46e1bdfb990e605791b65564d7414412021872c69924b9a5b59958f980ca68ad313c69762d3428b6bec5628ee372104485f0df8236e29ed0e6d3a02c0742bbbe93ff605fec9bea3798ff19962c4cfa0c2513c15dbc225fc7c3b612eea406de37f83df83b58e4152b8a7bf1285fe1ea776164750466f2955fa65f936f0a7d01ed73fe20af392e2bd465098443b6fb080761d2c0b92b312881cd847d4f8acbeaf0bd639abf3fee0a080f177191053b76563e639d615e924804e8aa1ef8ea0732b8a30fd93f7dabbeb8e492aa3db36b52bbf13a1618f093ae1e99f4d07162c9ac84b566fa5a54172ef5bf0a65183f02ebfe34bdf7a9dcd8d3d2995db78fd3d9a969a6554107cdae97a255297ba3d23d37516658ec4cd3eece7918c2bbcea1ab9497ea666537f2dcec5ae948a3df70ac69c613e158577b157fe67872f9722d31c6dabe99d6fb16ada242fb9ee9931a61fd8336128909dc7b90539c8829de4177ff6c2cf3a0b1ea51b36b06e17323df8a414095b357241395de9adbb069a178955d47a169f441d40398cfc92a4dfb204d293e089ca741359d0ef95c5ea5bbc0e98b9dcd826e9b1a0a0e65590ff490e4d8aa347b586f83421e65d746881bff70cb335cb71afa68ae7440d1d96aba62cb6b80cee9f8eac8e4543de303b3e511fb5c177aec6cb2eb2bf58617088b08abae28f2dfa99770945c3c00f35580add3ab42f1e5a93b76c599a28e18c050a8bc925db78abd9041cdad2479e97eacc118c845452396095635ffc6b786dcf29edec68c97a131be96e2eea41304982776d98ca4ae9c41cbad5a4b2bb96311fc88810e5ba73ee601baf88b6176d2ea0dfc4df7615cb7d634a6527f4629e5a9fb4416eb6b01f5e880911af99d177eda050e820a23a2c916d7a64259395a4f83a11d72c40d873d64c8aebbe77845b5b27c4515beae6b044dc5e018e29327a957d20e40951c165bd9f503a8f49c1deec241164e8789cf65a23301025ca43a5177932346919eab349accb00874bf45d5d56e4b2939bf5fdb692ab80e09917910040b70a8ab0e31e1dd3a7ab639c01d16735757456a61de311afc0c33a8d11ad8b30d80c11eb484989de58f740c1eddccb32d496a29a05270160bd47e66a562f23f7cbe088cea4631822985ceb8f6005d159761d7d7215852b3992b901be3f0c05f65bbb4ab15be395c755a944db0f0bdebe903410c5245789eca3c415da5840e88e3895dfd6d555488858565a90224e574a44b76e52b13adb12fc0b75d7ccb705c23f674747929f3f2820496c868167f1665bcd38c3b0afc751c3f2496c550c1f663936a22253b65ce4ab5ee5fc8b53ed6ad5d3f7ae45f610bd5a4ea3f9e0305e6ca5b181689257124449a838899786f0ed040fd7276d3bd2f0483d6239f27e4553b73de9229991766e80b0af15b54f4c1c76f18c2aeb9e297275d3bf83b42f41adb7181e56ead18667e36ad08c72cbd1f9120412e8a54aa8004656a4e61e20dc9d44dc9e754fecc365dc59150e36189e4b063f5d8f5fe88aaff92c7ae9f21a12d4996ec554c7ce50dae132bfaa842a1fba31d226a412dec5ebf97c3ebc802756fefdeb7d982f4c27593ac7154ae65196891d10d0485d584883e0748824c385c643583651511a0199ef8794c082ee9a0608cdf23377748907007cf560670bcf0c6f47a8813ddc595ca4c269b5435e455182e08ebe03f084325944be9322c4a53778a8bcf113e149bd9d871c137ab6058f30ae69bfa7d76d3e6f939c188623a3834c9d35177dc6c136276ee882492a159c61c03445ed612260652186fb900533681548a28d1aa86063fe11f8d32a4c984e363760cb1eb4641074f9937787eb86e3fcb3e855accd1b2ee3a7ee89ec401e3583267c671e766db45b21f219a524c06f444030377d1b6ec562d3d0269dde3f0af96ce2e196bfec23bad053a8902f44da2ed1fa08e60a5abb7655ac2de134dcc85ab185c2809cd3abaa68bbebaa989cbd341b3bce7fc30cff66b9742ee925b9990486f3cb6f97b01284d853190bbbc76e6dcd67b68cd0555abd841a9eaca21e0e0ce405a8f253770923e13e11dc397183964703122ac293edda41661ff2c5ce820e5f0fc4f530d76ccc5ad99727faa3b8e13347bae003e855db3c7ce04928486768125e0ed3ec687be1ad76d53b11cbeff7804bb8662223902fb9dfd08332c3c89df0c7d8ec2c050375ab12f9920b0bbb1ca63fb48e71d409a498ce995fe0c29b134f593046acce87733541ec148ff03a11e7893c1e4e716904735fa6ccf25626460ff44910d1b42a2881c340ae8f444629b6a3cd35ba35447fa76840b937e205fd4b980e9409cacd82796e377380a9ed3699875a3c48cd4d44ad63326d7c9774120c6e85e68e808f354e6e57a00f37e44b47f69744661392358c082f07659a04842a1691553470d46e4de3f0cbf8c15bf8c5fda304ed2ce7fd64cd042fa2f51e5ea41d3f5852e167d059ed1ccdf2673cb59f544dcaeb58fbda27d6df5788d09d82b5bf0a82cfff42ed57ed3e5e44f6c1f5047547c505d515b0990a744f566164a0a86b4a3a77e47ef6bb070cef010dcd15f4d4da091911e533c1971e4a91d7f3cd5e2286822e891d76e4eb149761c30f39b1d62841ca7421c7d427d23a0d917a972d4fcc2d91033a98e26fcac82aa12697a7e484ae252a68da1912ad4b6eb0012feebd0f4aaa4946aca48bf83c9b5aa8c6f977c1ebac582d4eebf0fac2108a88c7478c327743fccacd4fa475617d97f7dffb56609d83583db1d4ac3cff875dd37913bb1572642f09289253e4eb1740f0f065585a2c78e90172ad4851ce928223fc457716ea1ff2f569dc2c037d149608e442a35130e82f096546b72169d878e4bb60d7762945194415078f9eb0c4448ca9e5c3e84813f5204006242c1a309c1fa8ac71b4327c44d5d374e41b922443286a557d7a8f183357f89f9a3bb40cb421bcd48eb1ea5244d99a276e841a79b9d1ac46e51394168158e3d31afa54d4edbc8b193e27d60501ef2ae2fcf19d9bc7368f027c46ae67431e996df8089868025ff724c017d0066337600c940566c4679b07c0fcf1f2f5724ee4b6793c175e22087389fc920c922f5bd5cd7d1c258d0286be42db1bb3c09a6921dc6336e131adf4df850af579563021c4e4b9cd9fec30bb36a67941a83e355da678e757c5d277f43b6a7a614952dae4edb67619c005384a2dc815604e850bdae9bc18ffae9344e6f80d2555b9199315bfbf8b06d7a3624190cffb7a5d478060d525ca286743c54b7624a7d06a8279ba65e29e8753d7158e0117710dc7b8c0a25f0446264890dbd9d86478b00d8de6dc4195ebb3beb5cb64b5c4bda51632267f5c0949c4d55d18d1b1fe5d8528a757f48662752a25a03dfab56b74d2a5dfcc62f5f08398b924ee7151e795dab56d32e72d5573fd4f07aa2897d6d00f7138ae0cb34d7efe9df047f8d079afeeb25757d0f64f073cd50441a10be65acaf8bb5b6bfcb88bafe0f5fb865eab7a28724523d71fa7a5dc7c9923b3df99158a643377212b804c8e8be50d66b93390216f5ba0ed2c78433e47a63986369bb96b116c334a479462f70a0e0abfc2841915ed7057ee1745002cf187679f4baf66d3c24d80fb03a9734e800e31e89703d4a4253a656cbaa8012da605a2d3738ae78aa1e538b3e2d897662140420c97df9a8de37f68977190634282cfc453bc2796d2f84ac88fdaefc0996a6c754b1dc215efef26381a12bba01995ee075ddac3ee1bb19d2145cdd775d1785764d1b454fd6807973499cbfb0e7fe93c1153a2defced2c73fa6d2f50544d6d55153c05677330067875a055b9d66c09dcbf9ac311abde7d3dfcfae7bc3d8c799c3b8ab3725afa3cec3f22802b1235eaa59538bc0927fdd88d0c59d9b9375816ce3815e755db77683f9e7e2d0b48b10fbe051e9269215474a2679adae9c926c3da3ca6b29573e99ead58e16e7b3194dc608e751e21c9f32da65b56df9ae29b6b035af6cb169255c3ac3486baf40422c479e4743d46c693819f66294427eaf40d78bb8cade5c277b620d6a738fd039009468a738a664f05dcdb90f86fc193e69590bb8a76197abd9c8d08794124f28419450461ca114956b9609d531f8eb2fea380e9643d414ef5d9d211e3833abc23d89bba0a1a350039edc7d658a28c41a89d889a4a5249fe0ffd81321bd2aa7a424b0359f24f67c67768d41d003676a8d0302256e989a47e69c58aa1cc57268edb4496224d3f95e49abff961a2b731f839e5140afbbaa86c86ee48d874647dafbe52358100f96d9ee888c04c3963d563a756e7713bcc7f19b059932b8f92cf4d385ec50c0921109673c3dc341fd7d223a260db08348bb62ef28db0f9220e474bb349b5b293b27bd0a03e0b10509282c7e54ba6fe3cc194b5a2f27dda9bea7a622f9481c9d3f85417a6ed3ce1c3b76f2a0c6539b489c1069f886da642de689226f1ce546f8a78b5d017bac5d0d63cb5785a91f9d4039b2d724d3398c38ce0c8daecbc9ea75e96840f66f7decfb7f8c5e273efff568a20ad081a793afd8ad3c50769282707bb68ea603e9cd08e3871417987a5668edd0a7514dbe0462581e4784b5d6dca9dabfddc00e39d4d3316f8b3968ba73cfd817b08760d2b431d5918f17b02aa1017f1ce924083f1cd348e2708895ea99d8a47bf803e528604c2940ddf69a81f9688293cff8487889bd4c0d5c01ed68c977c5459b2f33de4c4fd8cf87482d85cbe84d9dda0b0c319109487d6147fb66141095999d1f72a5ff4e952532330fce9a9e379f2c03824fba362e2f7220b9a4d1b7b721920287d623288e723a7d7ca42ce19f82d8e65140e619164790d0742075290739af27e17c101fe86645f3af94d673f4c8a8b99a938fc3c14196cc017b405989a9a0c6eeb47aa06a9636e06eb060c99d3737d014d41769a654687994293bda9af6ba8f52876e14286dd063e099ca31b42358698c8ca564f2478c26e3e60cb7987ccc13fc6aed9461c78f7c43638f6e66586241d5b188c21b2039ae7f357e33e37dc6608cd6397834f3efaa4400dc2113befd4244a8f674f4f861cd120d012e18037d2195413e4ca37007fe1296459784647f027889b167487cb75a3a4a04f29e2a17d0b49070207086efc762d882f792a2b23f28c1a58fd040c1dad0de2fbaf6683b1d2bcbf19577ae9bab8c5f319c42bf7e054bfe3e87d2e879d76c3b449e5cd0d35db43dc9d867a996f9c763eb2b46df7baa5145efea41ae3c11beb188953d714a41da66d1280cffdaf91a7406dc29dd9a367ee945828bc0ddac0c24dacf8914af0fbcc07cbcb1baebc6c74dde01e9e8aab8fa388d89ec27502643f80a1ac1e40a7bca730c7de01a25fac2fde017babc47bcd32768327cc6616b15ac52a0d45bef77d2b8a5663bf4c88854e9148dc5bdebdff3a1de192547191e0f8072d1b9a654e24f26bdc8129bf1e8220a335b427db95a57d7debe237a75eece91348b187890f28df3a5d1159e67993f234c850a4fa58e0538d5910009172fca85db68a03fe951ae3da0285c744226a3f51b3ba8b9383f49874314d6a659c4b3a0b9171c4f0b61b49a0b8d2fb4b438a7815300323540f9e5366761915131091d6331174007903083fa95059c2767bf8dc65912cb29413411792108b8de32863e14fcd6f0266aac3e07bc6ca6deadce64b9cea1475fd3ce4ca80d6881c9d4e8aec93a4b45c896f39a6e2cb348d48179bcb8b2ef066f38adaf4c55b3760d3c3253d5ee404b05808bad1c47cfc7217b6ce3b731571ddf377585727cb54d04e7e816a34bc4eb02f14f3b5c6f72ec5ba137a83cb936d3b0ed19a0cfc29c42886382eb205ed352815f68ad78c9c70c1a7697f07698ea39e43b5ebf92e5cceacd45843dcecda98e5a21fc7dbecd34e8bd8a02bbea9c81eafab707ccf65bc1fbf5bc03e51ad8f85e6ca382038f1d5e54046845ff9970a71b60302aa5f12b3c62a0bef4dc5e4a57c91a8131fc26484560e1781b80f721041a382a04018da04c03bebd50a534861bac8a6860ee5698849aca8d9d59e76fe0f50554c085de5d9b5d12ad1005bed30e4f14692528dcb789004290ab08be7e0259251c6b3dee52563c490121054a2ca312c4b053d6f3d97e0ed43c0348dfbf72066d6e752e153e67bfc38757376fd8487f38e8fafbbb8d4d51a1ac29517c68e3995a44c88ce8960086332d3404aa9db6273bd92aaf584f6a85634ef3f054f35f3c84a4e23c2c8c62de8237e4d1ca8853ea16c316fe4191f234305a27ab318e1cd10b63bb906ee5cbbef6bec18d6eda4046662dd0096ce6552a26d6fa3e68c2eb07214056f929a4442aaaf9671294e49f4963d7707ba6e54304dee03405ea909a2d329db67a6a55658256a9cfd4a3a6db30ca7c35196aeebaa3f6f0ba075eb7759f2a6412fe35ece80d1af6d17f018179bbf51351d38b165cf468c149ac0bd7d1b2d09cbda354ed1100f1e0666d386b702344a21f5241bb985027f647d31891bcb3b6c67f926cf3977b6f1e08664c6139b4b13cceeff214c15c8259e51e7ef91236c5e28ae4587566d640e3e4c330bbc8c44eea1722819094c4cb9ac1b7731e351e9089286ee81c38802eb3d9009e92861909d64c1b11f0edc6c60d17b4172a31e065fc212b6bc09b4e9639236c0c50dbd586c0112cef23776b9dd5fab3afb68082741bbe609e9f4fa569966b862f084319d42d0ce5c5eb5a7306b8333cae9448e10f716ce00c145bbc17f21e87ebda2920eeffa787b650373ed9b37cc1f5e1a93071c3d8545c78614d79e8c1d693f513d4c5273eb1752b696cc82fe67c0292ef700b64ec210d666e8b4598fd5d967a200975e4abc2cb7d6005410ddf1ef32cf390b6ccda0e4660bbb84e88e468da1925bd88aece292bdc6a2e8bfad147d0d849f2acd3aae9096eaaea80793a96998e7c1681292128ef5398cef6949f56e9ae4e4f19bbf7e95c59dc5c5cb263812ca0483e1abca2eb3b645f5ef888e1d8508d696f93067b82db993bbb114f171e80c7a5cf617f1c7fc467850fdd0acaa6aead66220faa08dac08867d4861a39186f9af5a0f2672e4910c5577627f34fc194d0a87dab3476f42b096762e33a0d6ff7edf62b35c33ffc9b048426fb0164bbd0bd7c823c582fd340192231a6c4876cd3853b404ea55d51b78bd2ab88ce1ca04a653d6693005a76dd15612d33603992d927870d2f3ac026bdf06e66fe4636ad1a83c0ad23a56660bdaeac361cf1bfb806eafa409fadaec13191482b987c5061dbc8ba968dc0414de658aac559b7014a6913ee93050d1955efc9ed248e2121df4a85027381b7ddac53eabf55b14afe4d57fd07671cd0a8bf658e8fbf4f1273fec8fa1f696d41554ff682d9c73b8fa0bda8515f4b50279a6b20d5fffedce47c1b6da7d6218e8fc46230b3b18cc5cc1eff830e7fc1e10a0e1076adeec246a82d131200db8ee761e96d8b18841f1d6cc3f9399ef31d437c036e309c6f6be2cd4a2ef2a84c12a91364ebbd5c6222619bc97c2ca8cdcbdb0d80ec3407a248c88be112d935cf7eaddabebd3d5532e17bae21c052acee9ddc6a459759f6afa33e457d3d6b9ac393bd22f00a46e395ad1f99d8896d1d22bb5b331ac7a94fa1454147c06e38accdbb8fcbb2be1bded7487119c28cf953e3811ebe6a9454647bbcf7d0df8ddfc1d56def80b53787c96f348c0efc0faa8f0a2af11d2790b7a8a6b6d8301ba5d4d48f0125b608509a33151b001ee099b2246d75b98757d96f49d7f9f428ad7ae9ca6bd18ece16baf6ce2d3c4bfc9c55d908f63e768911798c2043427b492753039db1f5b366e233d53e26efff9a20e581cb839df1b3d6dc235d3e67bf29dbaa0280563877a9e10086f9a9064744220df189e5b8db8a34b9c3d80a77c500af17d8d7c5e680601e56f9cfa231f05a4399de69c5c1e15ee092f7f76dcb7915f83d7c81102b1cf53240d657083f3b5989a0f550e12596d333ede4e189ad0c1f9f15ff05fbdb680afa037f3fa0827da99f853e267ba2fa83a4282ac2494de042a0adaaf9eabf9fee8b7f8cf3de13add1fbcf043e96847e1302dcb38f686488a78df036e6c38bcea59081c469943000b8557c0c6527934d22b80520ff9ac22b7258f3bf25827c2b7601685257addbcb98e9e007404b68f8800e9bb0eea3c5705d922c61e697a51796ff6c6a3c2a53a5946eda201faeeb6d4501e1a5ffae9a1bfe572ab8d514c5f504869d1486239cdda471939c9c2bc65e68a9a660537e8282068606f5da499f61cea6ae951ba5c27d55c766fa56cd0c25b1d51e78b52f7fecaaabc509085e94ddc3df1095ddd8a983579afa5cb3f1c89fe5350a7f4c38cbb513295a1e2f6946565c8611246ebc3dd6980fd9b531e372221bb3188aa85a5cef837eaca49741b2e704138e3988fff354c35cdb4dcfcfb1d97249ecfce27477c8a2ddebd75ab566ad8ee58c6421898f26dd1210098b98b5bc7efb728b2400a52034873716d983d61bfbdcfa80d4280427db02383e35fe864d568a84f3cdb06d67adc41490deeee8b12749b2ae88379c4171f13dae41b9cb5341bd3ce3d52280afb0be69a7ec257e3591874e4efcdb0b1939be8a9ea837c8212a04bbef85ddfd86539400ec6ea3a4573527322771923258dbc4ef12910739d13b60f778c7ca4e00e9e55d88a17c7d2e4b0a8443c29d1e4cd1a75a8c6a05ca1d15ce20332e15be9df152e81af705945c00dbb6214d2a780a91494453864240927fedf6ebaea58a294d7bd191a1816f9bc51156ff3a9566d07f39ec6e2fd841e5b47e95dd912a1bcb15bce8a462d8af0f6329de4e190459aabe064ff7ee0d68166f48b415835ec6d4862b318e5e2031c0e0d4213052252f446c21941de850b3bfb9b427b7796540e0d49145fb554b5ae7494f603de559a09f7aa7055643966d53f84bf4cbc130a7f235639f4f89093eb8fb44665c58b8f12c5fb07a572366544ba638791f47cbe45828c5cb3895e2d0f3bffea3bda4b30ba357bc337f88d725768982978aea6aea937da0ad9985f7aa9001293a214fa4f8d7fce10170e47d07ed0ca681096def0bbf57ba28e015884f63e3d9e880039764091a78337d8cfc6e49fdf99bcd5860cc3bf0ce542ea6c65e8f2433740d0c0f7aaf306f5e9ae1c6ae95d35cb72677eb4088e090cf04d6f3f8ccd08ca36bbd532dc7d8615544367ec1caa2bd2e88a72b60a53695bc231a88c365bec0dd68db17b854529907ac5dfd75b550d9cc73ec6d1ddb5f308181be4a97b2ab452173c5cf7d11e76f8c0cb22d092a80172764bc22993629d1cd14c01633a21bf6dbf91fc500e053c884bd013827b096a39f9e31b6cd6abe5e18c6ca5304ac81773c792173d20605cd26d3919fc96c7ae2adcbc1ca2f095a3e860fe2dcc7d844b55b9479069bf306d842e7312edd0cfd9b929950a1728971f9dcf308ce3287442bfd08b818d7a7e2a6165934d017381f4023c8e80c4d4255ef79c9dd57cf4eecde24ce8f579b7243754ce5bc0dffbadab648d52360b53c069cb71e9ed0f9ff318da7fc7fb1677cbd6afbbea2fe0f591e1283b22038a8631de283fb20bee0106750d2bc17287fc8b69af47b1f8694331f0e5822e464355ba29b5035dc3732fce3b4d11cf7b0f2f02f93dc35fec6a865a17225439a8d91c921c04ac3cc63dd675188317d4864b8b40ae5f3105fcff1d333281f82e6a61da67a58fc3b29f89e8b4aa5fe8c423d52b62c89935672ae63dbecf540b9cdde39b9188bd2ec8042de05831a4e2deae85e7a6c0c060b234ac1db7fad481309db117574a0cb069ceb5212073cab4e5f4ecda51c990d01da30740ce890549d08cb07684b482dff6617ec8bbcb9db1f29cacd520b6a8b8b6e8e4bf09076dccbfadeb52f98067a82f4010f8aa37bb16039983a31cf0fe501580b116008352bf930d9daaaa7e5300c2fe3731fc24fecb1fddbc3078a1ad49caffd0a3f9608ea157467e012461d05142f51404d5d7387b9e7b195325158b5d7f0ec67014ab4cc8e00ef8f4eac23944af6f7dbf0bcece71b4947acd5ff6cf85071ffed584c6e09b82057b7dcc1382d44146a4126da72aff4f64569125eee667940e84d7c619bdac71f0c4b4470a45a216f4c0f613c399fbf70abc83fc1cd46271b5bcf459117f1d596d7e43718ac394330d9bab7f5634c981fe38df5ab1fd7ab4644d222f0d1c8dcf0ea9ab649bd046dfbd3a0fdc5197a26491e6cc21e7bd758897a199deeb69489e276354bb21ab5fe6f23e31b99d89f962dfcda96c16cf5fb0d6da84b2fe4aab55c184f8090fe487c1459f94338fc505a20359b5a011eaa5dd5945148d4cff36157bffdf5c0211c0cb48ff3e00ce0445c8d616073cc434973d763fe066634cfa41ae5359f39c132555e7ff14ebd95c5d5e6ae4589d66c00cda2b82cb98d8e493ecaa051873bc7452bee85511133ae0c458b6135b4279016593a43b54fa421e4873014f3938d8b6340a2337de67568a79a38050f528627d833480704db941ea11ed468d394ae742f49113c4abfb9d4bd2616d2ce7207aba8c910815702326e99cd0bd169b30ab047f7580532f9a8c6dabd285043cf1f7e5a027a5820accb13c9f8cfae5a7ac1db214c5e1f19b2257a3d2474176430609a36f4b6bc823f161aff09c73cbcd9b0dc4b14e1612ae063f23d96a4f1c270431fe5be1c337034bd1327c5794adb2d6628b859804812cf282e324ec2281880a75e1a619cfabf62f0c8b5f56c7970aca5761363866f5c3620972ecbb518a78456dcadb200028631491954ab47c9a4f22f806774bd6a5efb2f9ffa08505cc44ad795454e48496b0f27a9d4924d3862a34457a696a4e1e270bbb326ec6b1e91e99dda07e80ba1224de7454326dc8c2e7670530b09cc23429a507864becbb585705deff308fd519963fd1ec4c6e8af5354c1b8ec3bc3c5005c43281582d2a732cc6312ec8b807e91d7a344b83ac3b6cc4787a45407b2fae3e693475aeffb1ccc60c0295c917ed3d5a329f0356a148e5c59f06b40c79d587cd32cb55b314c1646a463a10b3822956ee4b77889ce65d56d64934c9a3da11058f91419a6fdc85feb9cd2e4dec375e91079e8e484add37c4fd941cb4af1a3928a19f444e76bdd41ce27ee35623f51ad4e8f567c5297379fec78793bf80dcca6b2d60f0c1d83e2295e55717d60e02c7e028d4c708c327ca2e3684ac5818dfd2449a91afe59ac06071cc381055ee664e9d245c90d2b192cf01683170eddfc1b3b33791c37c46de0fb16a7cfa09353be12785297ede4dd128d69ddf37cb20b1953234a17e93a9cc2727622d23dd399fa2cd27c7419193e20fbce6a96d6b3845cdfaf376c53d2fe2f3d3213263c78c327d46211628da4a5d1beb327fde3a31aa2ce71c53baf3b6ffbd9bad6be0197ca667dd84e67dd5a7ce2b5e002dcef000f499dff10bc3345b1f88be52c54b4efe7ce32938a198d79c26f08c0e1fac3c47e267cbc0155fe8e36ab00e1ef0da61a984ba98f794ccb183d3e285c1fd32cec430a353ae7115b9f160e2245511e781b3103971797940b7808d1d1e9f0e3253d63a1b2ee4f44d46822dd34681270ec7dd7f8844d76b17466d650a5b5a721abb44449cf7b539418af2366e3f9ffc82e325d0191e603397573f71dc634bd2d0a047e7c8c25bbd1e0420a8be70e26a470ea133077ceb56eba905cc79b440b6aedbc3602821f0e5f3a800a434cc62db0e11f6ba1e28183b40188f791ec358b12a5f1f681c26d9aa7f539c595fd22aea3b86ed49190e4411d8ce6edb5040db727fc8bffe6fcc8de563bf0a036498168d5f5f0fb09715b3233911f6946ec982138cc42abbddb9ceaffb12aea441cf6d16f2feef0caa6db6a19f52aae4ef56ac70f7c99df061813d90b16f585f3298b6d860cfb1651df28cedbeca095b0d4806a6af132a9c985be953ad3c3cc8bcc580c4260fc6296d57625bbf20bc93cc39e7a346ac70c16789e85add0a46a5e3216cd9ec7b3019f96d55990ebe646116a89863e726df7dae8282035ed6cf24e9e96f0f79353971b394c8ffa2f306c4bbcfa6a9c3726f81f40dc008fa908d1cbf69d925829ed690f9c24a90a5ec06ec133d9a66e46f84d73ace0ffd1ce119cd7ad22490a5e631a9686c5c508e5e3899946efe0d3322d82a0b4ce6d3e7b19d250e4805ecd7e04e1a289b508cc14e357f49def90e0b736f3fe22500cf7ce0d412fbb6956feda0de249dcb6d08364702f60a4aa612760c27cc223f5b6e83e51f8267aa4f7caf21b2775178dc63fd89989d0e747d6e17434c4a1aaf22fe34719d3820573a1d5dee5c72abba8ca2a492f9d3416ba74ac887494bffeae387ec0bb001bada2d8cacf22d903dc253c26de6162296089639f36b47f48cb9ab10f7ec74955df2220e4838b3940187820bbc04fe4f5681542d94e2cdc220ef11d276b049de08e73e8a5e3241022e4cdc40fa253df2ae9abd51f35ce0d2825609b293f67a0e83b427c62213ca124ba4e546441d574d9454676f31ca59bc15cd2262835c0ffc458d90117252c50e21552e82cb3e2447c5dbf8454012fcd4fa122474b3c699c092b14720c12c5795cda3543e063514b4e2aab99c82675171b163ce19dba7d789f3f1e61275bba1e4c4d576d130c372ef3d3e5e1b52c2fd425d8064cf9ff206bbe7031333ba7fa7ce2a8fb0ec610a38ed1ec1f03efc1194d4363ba4cbbaa6c1f5390c363babcac5d0677f2a6156ae39244de35d66e536161d31a03211800559947b72bbb570ea69ee093fd5ccb26275ff740bb3e50790eb6664fd9ab6bd7ca7f125e71bafe619f4117fdda7e29dae007e2cd0a0e02c1c5bf70ecaa5841a2ce50ad48e1982fb8f1c319fd1b21ccc1d460f8f753e7a7a9797fa4f2fe1d90368dbf06bf80dcedf1d1813ba13ee144ae9055c296c5fa3fa729d5e2f32375d3dc69be6285014bc56a02e0df539ec27d89b4161b177270f9c77600e0588921bf3fd77d78fd9e931a7f3a64ef94ef8e702394657013839f9810a8547804f74bd8382fbb5f0c5c951f0f00d8fe9f0f86a31ea8ac1e218c106c52f52eb4334c20872d8275b5f4ce69635a1f9eea27429ad8245767daf9e3a28f59cde2287cc16eb24010d786e081b69c5e59dbde9250069917a19b30d33c9c2d5b0c2d9385d4d4b489e2ac44eb709444e010158e4bf53eb61d668c06ebbe135a83ce43606b2e9ce290964dbcd6e157a5555fb1953e100bd4911c587361d0b6855dd12be0b57c18fd014661a2f59333f54acf8a28b27d0ec350c6f0959bd1085a8bb83a20b061c71196372765a1443edacbe76e0f1c52a12ee03a9ea840d4edd1637babcc8da79f1dddd56e143ba05bf0ebb5a145b78ece6b940ec5abac9a58f9008821d320295bc534c82aea51e55fe815c4d37b429e356d0e1d68d6eab00a8cb611bda50fe52ad22428c959c01ca26a8d2f2abf51f28ad597873fbf281ceded7c452d5b1d5ac5c7255acde9aa2038d4322299304f9701b545d725e8941b7e77514b19d3817d639669974a18b457e482fb29182da40791ae701a75051372ba27e6ee7fa9b4c4f2d58639a1bfcd6e7a60e823fec506f636057fdd698d6d25e47f8e671ef059c24bdac262714c5ab75ed8df1c4951c7181945b7a08e34421dfe5d329bb6d075e5e6928738f4e3f56dfc5cc018cd11b673011d112ee4bb79881b5e5372951043f7049af7b670bb50b8ccde7446bd0e6ec4615eee36a88139ff4145890da0e1e13ea535ff3f688bb72ae21dd899af98fd30b0556209082f368a2136072ee896e08c9fbf57d38a1530ef74c178e6cb449443560ee25a8c8adb8acf392edffcb5e488d6c34c72b29d477987409ed232d8a9b6e52fce895414c51a39494d39942bbaecfe6976a9633a7ba3747ea63adff14c39b8bdf8fa651c2ae411a0cd0939bc323ff27bc1872bff1d1c5c9823ad57de9e47a141fd92e30eede5397393c736bdfbd6b850d624b89dc2072cbe2a99b91b8c5d3161cd533d2589b38a1d6da48b1394514e2dfda05636085da3504a1c999742460d1ccf990a7e16ed94958b890e94c3a083e25ab7b0d9b682255b8f066e19cf4a97682419376c6d3b1a18f92f0cdee665e73d7ee98fe29413dd0ef382acfa42fdd57cb3dcc5eb49889d111e0c5c4377ad72c77d0e8a3c670de1ad64802c1f25d9a19246e014ee3216d314ff3b8f0efa75adbcf971ead74285b95e256348465e5ef2eeb1ea63027932a100824e13a2c996c491ba2009a05723e142200a1fb678c20843b57477fe218f975990404012c6c67d1b3cd9e080d71151837a164cfdb1be3230ebc65daa18c40f54752f8f786c1de7a9314ee10363e6d9c34d498832924b336fcf3f30ea2e766b8dc6d8c118d87a6ded85c60b71df777c74e4d66c55a64129f731549733ad9cb8af6af795114af03cf3023fb56adf7d31293a0e7c4ab60f01728a903ae2d857411d36a3275daee2e50fb4422745e54cfa567bb6463c7e6d983920bb2c2ece18df33c682ee7b0bd4286d80cb713d5ebb2e8f7130e9121a359a346b8244ddc083bc7602255fc78944443281fd908c884a5057a33c8d98bbf3a087f7a25ea3724ce2dcc495c83f30c16c36f6a5c5193f6cda480d379a6b1ebf24007d663589f74b9494cfeeee15321782102e690f896177ac1c689638bbb00f1278a5dbf26f766b775fbe7200d9e573e09b0a3c5f1b0fbdf7d1ac94937e5c68a12daf6a487ef382b5cc2d187205c1947bcb83a9007051209ed768127c019458864f9bbef27bc04fe7680f20d3d88f9ae0961da09ec082aa4409932facc9f732ce452682c25959da4384399e112ef19133bda3620e581476ba22765bfc2bc05982a05bc7b858b06fda0b25da5a3bd6d345fe4b4d8cce264d0982487d7e533447cfeb2e1d7cf8d9d3d304bef879f6404d91e7b9c5cab048dc2a8fd582d0970d911c33cfcca2727dc350dcc772dcd97035fccc977478e8f34104af77ea83d1714a675fd76e8caf60ddc6b62cf66b0685e17f59a1b0872b293a4553f895dd9ca244a2f464a00f2291b7b701462575d0fa6d8065e1ed813863c51b33c81be364155c56152842c2ca1459b71a233c41595b09808c407fc4981dae88b2956a29a55636f8365fbbf5b52b427494c6460d9e89e77c098912c4f793313777b6a9e1edfb4c66a717308f3d38031f8ec81403daaa8db62ffbb7fc9499d4076bac818a5123ff4ee4590bd2eeff6c0fa981a6ab340463561a002a2fd5e3cd67d3437156d428dec8cc6267adb07c804a1b6d9883a923b1129d105974226f8a070622c00f581e153c7c0b2486a34a8826624bb287bc83964a5561dd681a6547489426e7b3feb23a8649142456646ceea658aedf2334a05623d192a4d5c6c07836d85a7ddb5524b2a4115d207971644515448942eddbd40e9c178ac9e9098ef94f664b95e0e363d8e17e2e2e10b868e0071310087122f089bcd9598707ed296d6b7bab9f5a46923e0ff86270b4f79d4b2e39c3f76e6e7343bf7960b4c908b46eea2e0aebb260db3a5c3fba11a4aec04e1752e1af18ad4317c43a637cffc171fbfc425b9f2ca24044d93c6c0180b749f8d26f21c502561cf538d3783d9e6cd7dc3144a5c7adef84a8f92152cf0043e836f0be6a81147e74d6709a9f31e09fca69926d323bd69f23f52c62081a4687cd9dda49b9d9fa98274dc86ced70dde32981d7c8ab5dcbe4cdd8aabda817d1f6d7b4c9997786837fd78a5986c119dcfaf1f25b0fb33508ed66ce943ec2abfac9b4f0963861c1813eb5ab4379c3a8d53f379097f08496e594b356ea6c84a041054ae0081727bb65e2b33f2a162f69abc09e48b555dfc7a2312f2083cd9eda47a5784f470fba4045d3c7073c8385c68e13dc0838b19af8e9e3bd3239947e3530690d359c933e4d55d910f34a3b50141a37e89182cfbd0f26e8b4642621c76ae67af5309672e8cf82ae3e98bf695fe668f9809788a23e3dbf56c28b8ac938944d8eea03ffa365f807801edb223542c50363f54743f503c2fca720f3e701eeac3a6571f2acb3403efb041df0686ea94976998858af04b433dbbe614b38cf6a58a8ac49a97d9b9a3a45c25f13fb63254ee3cee04e85b125db7b368aacb55c251ef17f4560b3ce8c0bd7e316cf08c41139afe4c00a72157826667021772d15e1e6df300f4cfcfcd3d4d2b1648e280727bf3f2c91f19b8609b0e4c579a74771ec2ce1f21f01739444f850f735e395e8080f7ec8f3f0ec009844e1c5ac5ecbbd680aa482860756211b62054d67b103b04ae08947215db6948d82092da49e0d0326fbb5a3f900ef170747ce1742c0d3b27b41a6c285713b78366197e38fe1610f01614f3fd19d3817e350d7790b66212eaa0856dd92baf2683824ca4f3be7761f4e936da7154ca3c0d9ecf6e64516378b5f0e956fe4df35e3019f79966eb4dd0e7ec89c31a36728a0eae0ab82c6643eab6235abd116ecfcd80fac556fb7d7e3c9ad193ad6e3ab653ecccc6a7bffaa2008de622fb31a29e41b2f8e6c2eb9b6193cf33444b4a9929810034f834f3756b959db992f0306d88a34aeda712f9b2904ef89349a15f38180e92b74b37f15f654fd5a84814daa6a9db52edd94600de64702cdd538e0e969a4881fc9699e0408fe7a10c2534fafdbcc76b9cdc606e010a94a5653486674fb121188fa4bf909414e7dbf06a6259e44e181ab343efdf072aa1893d32156b29a62a6025db3f0fd7504973f30f8fb9048ab79b0b6bf788683761f7668f013b2cb3a6f60e5baf302a3bc744572789f42cef6a863de063bfda87bebd315c6be95c68f03e556a96580d4e46b6ce8cfdac6bcfe9c4d21bde6d3acb358b79530337b8d26b5f00e36d783d68e8d2cbbecd95c15c71a0eba0895665c146af5b06c5caa1fe48a8d5e16f294ae206e930830b5f659f1bb8d0692db6cf3b9963a4bd0be1e2ecb2cf990095263f29d0c36cef5a0f8b52bdbbb7c85e632468a645abbc54de6486bd4705fa6a12dd6f64f13e532bb053a1b4ccf95c8075441a5f7965ae0539033439e9a620838e67af8e05c81a70b381fb4970b331b76ca01189d7a59132765d8c701994c48f0b884a7d0836263f17e132534c03fc393c24ffa379921d821d94c81c8f5879e0dcdbcb286906d78dd818b4c0c30e4b2ec641420978bf2f57345ebd6fe2cfd9d2a77e7ba6ccaef3fb2306932e0ab19b2010a084b747da84c3098335aae23f865e841b401ad512c04f5e5e0eec5275175b485170879ab4606d34a37bc9f6298d586c525f60e40f509c71ccfc9da15fe65539bfaee7812ff44da97ee71f239f484548bd994c9fa745873c5365c0c244978d861ec7c9c6d10011d05978103d614331903a30b4eb1fd7b506c75b32ea2a203508c8a838c6596ebccf90cdea0c28ff8c3374fcbee6092b619a6ef4d5f1d3ccc190717a06193b62dfe4560e69a9daf9679e38e8d9682589d692e5ed2edf3e97e7318d44dd9559ec4e74d92ecf5b506ce2625a40a2bb94b1fe3234ceb13a151458fada1466f941ba2feaf4c6266d513110e7ccf6553bd1c302cb58044458f28f928150408e8f4171f39884c055901f201ac7e4d520f0d5205f2c3530ca51deeceeda982ab214ede486b1307ed7144d241b070bd3102361fd0ad5d2a30ae1009969e4029c9adb1411e2eb01909d9cc00b4d12f6681132b142173879ce6fc45aeb4ab1a998523d6e087f0eb3c6d465586d84034148bf279a6604dbc2c94df2c7288a36e66ce1ed4ecda80d64434d2f187f6ff9ccf3253006edbe8b2b07d0c9da7d45fb3ed4c87ca5a1a9ec41c857400b8fd2c009c3203004a0001a00b52eda67e3d5373bdc3abca58532e345870978a83312ad08f38fb18d7e08318eeb2727beea77b8d8fd3cb644194051e546df0b26d2783d23aff945f655984bc8b2c54324d9053020dc40f08f5428fd09066a133ede2c64c2a3afa78c9ebcd0e81d8b7d698b8749cb07114e380fe2d94fd837afcbcb9500e2df5b426c627c55716e1defb3819d0cb69fd57c6e68fdf44f6b5d6b5c78752b4dd4af35082bff4349a3098670fd35c98c7d118c9e4611fe4b335816be91bc402e0063401853923271b6c91ebea383ee2904823be8391f7cc6dbff6f923326409adf1290f3c7f4f7a50d336d8b8bc31d874ace15b260b07031b0d5376cef6b327b39e9353439c4710611aadc4781132047546c430f74dbf80cd6578580c967b3575138b4a4950b004756b0217c051b2547d64683380dead0035413b01cf2f85ac4f919f9d2cf573856fcf1d9aea9b33b3998976575aae82bb2212aec249f146b0f8d1473eecd744fe508a3b8de642ccbfb551c795b48952e0f42132d3fe5ef9c40b59cf9c84430b40e058908f161c383669b4245ac2fb091256258d5da60cb405f7a2b63694b5f50b9cf8545e7295bb2ba45dc17db266a91d9dd7683dd9092c27c2a6c2d7e1bd68e65890ad7f964eb329690b8c7696f65d50e7e6c1907a815ae18cefb6ceb42cb93805cd599ac917c9af71c6756e995fabdd08bc23d44bd79ad570fb47fd973ef46bda72ee1b5d9ee5d8e04d8c1097fb9a08ec9ef4b49c8c6b3a4b5debed98e38fd7ab3d7532bf7fdc2a092861c0234d0e06fb4165867c1090906f41a5d510a232ae806e1c52f344abfd28e926139c2ce298977aec15b9952450294ee9e3c89fbbbd3597371f89f0d49bfa5665a49b41c6c4d30ed58a80322966998f757885a56bc670e0344a46e75b665f1f32d3b8b4c107bcb44c7ba7663e996d52f2cad03e9123daffaa29510191797c37ca0597d7ad047dd40dcfbc5b9d3ac0703e575c786027f8024db0d5de27bf0fc8561038bf18e8285c57b5db44580996412fcb243f23c8422ab054b01ae10d5357da41637de8813b4f67ae90aa97872c375c153a9adf3061490102d4318bcd01596e2b1b56f6e4a23c325f689a13ca1d1f0c2a8f9aec579dc5162b3cd7b47204b985b639c4594f0a1f5421efb7900d8e13ffa205f151d3c85797c359410ba15e80851488e42040eb79dcf5eab5980577e560d28e8f9fac9e9d133ae359b5e7c595524cc1f8665729b1582a41d6c45445888890c71af3555718d943b26f32c50ea52d4f20510876295d9d4288d04e63209304eedc0522f640c51bf7886cf281031c09ad9468dfaae44d284961cbbe6f02e7a1c62a30a2a638ecb3aeeb252ff8db20de6ab3f0f63172124e5c9c3f9f18a9b9a3125471fd3850d7f57f4719157fe2cbca3ff3e8b5cfe130f718e3d4f08775471e4b59937cb38a885c69ace8350379241a3206c31232b540b19203dd58e5d676166820593375e163e902d748e4a5cc8242df648e727e4cbe51b3ed895cbd2059538268dee51d21340c034a15c5423910885b0704020040050081504120401580005005421561a7ba5af7eb82f3c016b307fdc1cd2a8f4a4e82708c52f40c8a4652d05ff02c454b52180416041c047be9e92ec5ffce0523c8064006694319f0ddee55ca441ef5673f4d315f60a5d85ccfa56252f3027258d7e3725de7e6e5f1cf07aff62bb3005e047ad81c10dfb7d57d2bd7c1e6f358b04f2b0e038ecb655dff535cf7dbbfc468bb14879b92a5ba3efd7eb99e8593e2dfbcef5c61fcef5fee9a8d536cf689e35b8c224ab09f7bf893a61d49308c4a6c50123c2247ed90b6435922b49b6ba935f4a5f807fb52adea590b9f3203b9d94e353e5f230b8ead7c5e6f164bbe5ae9c8bccdfcee683d2ecf640c17f6f2a9bc0308c15632a872b5656d3a906d6e6f5162cd88574aa0025ba908e9d2aeae1f82f14ee20a35fb9fde1f78101e0bf151d6eaa382cc762d180c0683176fc44811c20322a4d611749d29590869c347ff7c2e387e7cfcea18d9cf944ae757c514c1fcfae0389e2f15c2870f5919da18de9e486a62aeebc1bbe8e411f3cb130667ba8847b171eaa3770a7f55c7a39dc35f9511f995e8eb8863f8281d460c73d273a2bcf0fcea0e1f95635663c9218ed48daad8af0a27cdc2cdcc2aa43041026104088382810f00d33bdac1d95cfe23376030f65bd0a794d5864fbca724a317d6c10af2f0ee12d8d5d12148cf7dbddd035c39721cdcf60d80016d965b1b5b167b556259b3aafd1548238076561d6026a02c0099e0985818152cff4a32f5ea92e24b492e2d34689859666fe0b9c83eb343879b8bf37ab370602c774e676295b57989f2988a67e68a6c8ad861806d99a3b12c67f1382cedd9c8a05525cf828cf91b137bc74674390677f1d6912bc64afc8d4a7aa58237005d610a25a055ab686be430db0ef8c5f261d17634eeae0d8f1178b5a8f93108484927fa4fd1aad5a5bc2e5658163513deac2a504eaeb0c4ed561e56557bc4ae90991fc7892bbb957940c2dda315365da91b6ea5e6eadd81ab603038db66edca7dbd6070f55b85ea9cb302665651a19a0aff3d334c911295c2dd42ac578015fdd31fde925154945f1e1fe1d19ba4304e9537a0a4d075a92800504f4e4dcc9b2a263666b503c35d665459642ffc75a5ca12b349301eca891a5888adb904385bbe9fcd749f8da8282ff74d2e0d2ce3f802058dbd3905496ee132baea6a13d68883483a4ba6a411dfb007b201311d28e192fcf3d4c73e9a84e9478a2b0f992d3c40684c50e09fe155aa14abeb5e3426bfdac60289d8fffdc1ffbb5e63b07ee88304a44a99e77cea39ca6ef448d3e73fafeed19327bcc423fe5cb8b93b4a3fa50823de90d1ad102498caae88bea7e4daa91345c75fe7dc88b8f96ff5b8a4b39cb3942363c8169c4662ccf07b0833ee6515fe0a5b4d1c84d85a8e1ae20439dc9916e0bc0852820d089026768d8bcdc6c969bddd2c02b9b236dafdf11534eb39a9488902c5f795b58e4f9cec4dc4c6cac2ccc8ac3b9325fa299de2ca333cb6f834ae942d4d8b860e6fab55fca77df52de9935b2a29dadaf1fc559ccfabecb388261d6e7b16d9463b090c779dfce6f8946d07784d26c0291d501bcee8883387006101e8ace048a7b8f4e3496df3b3cd485e2f1a402bdbe43fc03ff22459d09693a20857985cbef17ea88b4f5218fc0101c43841aacde0698fd50aa411f0cbf3445c517bc1e3597580998032b27a4c2caca682fdfcab9ed65e75572dadf19a6babd6caaab1ea2b6ff5aba8dcd45f2aca4bc508f57ca2ee4d771dad99ac8d4bd05ae99a8474645417f13dc9e1a1dad965eb58a90fce0ce029423c0733467a71de5660ff3530788d96f00b9a9707a2fbe8f00a789fd8a22cef538b5a83b39069d774eb9a75c3ec3b321b3c55d4d69dc3d5bca55717fa73299ea04e5c4a91978e76764e562b21c5cddfcaae83d633b820b13ab24ae41f07fea513cb9b88f599592fb37308b6bf9ab6b627ba24bb074daf3429cbe13715f7028b16135b6e24fdc0e12e32cdf45cd3648fd21085916ab4157d1aff4f435cf9b76cf0157b2ffd537c8d82d78af77b8d9b33005672c9503d3aa32d5ad93377327995124974287ac000ef082ea96ab4d59dda037ce744c63d7ab136cfd3815fc07dfc37051ce765e06cab331f313f4ab0357b5b64c6d8a16377ae74013c06dab45bb44eeedcb8a47da19df9118305d3c98284b7d13a2411d51e679007b78646cdaa1e4d0e419dd11383e00103aa1cb17142c2d96b766516f57422218d28da50534db6531607503469043512a1a18c87808d80006f974d974e25d312140405b202ef9b1996bf130929febaa9954daba085eeacc9e26431c4860abbde9c7680971493b7a74f427ebcd83c95a076d39473e948a928eac4743bfe9881e210d00fc1b5eb3b9d9430ea286138b422c40508e605e0baa528a52925365c18175d74f823c20ab29386ca0f191818f0d9c9a151b7a085f2b82993c589901e28324828b4c0ea49890a40f4a808a9c9947bfb3ab766af25da560ede4b172e5b1221b36051bbe21fadd855a8e053a430a3401d9f3869c264899224bf11c911ba3d73978e6984c95884c91cc227e48bde0e6281fc60fad8cef560eee2bd2cda9b8d5b5c5b63d3918329beba59b983dc9d7cf4e66db3bd5d5b366f6d016f5f76198d39ae39ae1bb8420d05d39403b71554de0e20a43ac9877983a9cd753fb1d99a93bd72a26fa853c5afffc394d589bf44582b9b9ae5f72cc97cac9179e455bb6eb3709f6b5f6083d56d4b713e774b46ce22dfd1743fef4e5cd6caf5c9b1f9345f107cd90bd1a3bdb72224ecc3f276d795fc0fab64bc3efadddf582bf375b1b6348adb4e781ebb7fbd6c3ea7ffeea5efe638f1b26b64c0899d96cfb6569d85656f32fc9f71040c3c3f2f0bcf933d3884f1f95cadaa37c8ae5c1b0b6a5fa949247775e9bffa8db37ebb725c38ad7e66fde6741d9e17285b8acece8a7ae849d07dd84e63a7c9a4214b9811a23700748931b4a19895e9536b5918ae87cb5c5d8ae7df4bcf7529de67d6c3e2c179fe86273c57271a9e4966e3c19ec18c6769bf78671a44d2370a50f476d2763e1f5aad2a8c171045e35cb3f95bbe3af57d05894997ce16276b0aa318f6a8a160cfa17a253b905e5a887969de9683ebce6e9aa69b611cac57dac5dfddfb86c9b75973fe46a2a9cf74a18468caf9aeef39e0205a2ac6f7f47817ffae7e270dfbb954d7ffdbbeeff9b6edeb53bd5ad5bf3955ac0ad7e2a59e32af1859112b76511c9a2c6232a1895da044c41cbf4748a0107500002c4ac2e5599761b2c5af8f2aeda0459269376a19369db99a96fa4f3d12894151c886dc7619e325e97d1729c6394768b2e061b5ac324b504d22b0b86db178c11cfd33bbf8b4f371659a010c56a42fc490f8881d627b32e07c62c1f164a3495c31afbf58d97eb6e6f58bcfd15695ba2ae435b1569997ba4b0f6f5379fafcffdf5430e5459ab302d7002b2b964a248541c23c9d4e649ca8d353f5221a62b5802220f0cc532cf720320a28cab8285d2a94e3e30fedc962971b1e614883b23bbeb712d4971e81b614ece29d92ac1e3760aa0c7911a2022003050696e048779211935694216f43b933e4f4e4c8c6ebed718e6a8f567e54a1e2a7488902c587e313274d982ca9ebba11893f6224accead483d444837ce8a0de26b20cffa879d840136eba3ae8934460fc06189c47a53e7bd6605245f4bd5a4a32632d7941938524bf131558ffee7d5568cfcb181c5803bb439565b800e4bdecbd6bc2c56ee5a05dfe5dd4dcdd607bb7eb7a7f73df1be8b7f9ea7bbe977bbbe87fbc4fb6e2e079ef9fe9779c174ff7f04b802e868ad4e256d2af62535b062b0c47bfb86d4e990f0effdbcc6877c3f8f75dd6f073cfb5ddfebe3e0331c4ce08381fd693e95e29faceb7bf8ebe3ab7ff575ab601afc753731fe130e430e28757b4606cd1bc825d66638183b8c6995a8cb8b036dfc559391ed4209cd935dccffb45a9e32a5522da4e0acbbd71a688edbd1fb9e0338077f58c1ef20f65ad67eb15eb4117e22cff73fddb3033c7775ed795aabb77fffd526917fe9946c8fba1162eb41c81883c17de31afc60cff769d9ccb4b614766875781f42199372cc78b23042dc4034a1393884f6501e3344617828384280d9788318f08e5208dddc9c5eadc4f0668b0b6d869300b60cf57ca1cebe70c4c522b148822cbbe6dfbc695da558014295f92e2bf1e921396840741df70d9de581de8f5e731ed1521ab229187e3874021c1a1bd51e3a7030fc31e01c46d39840d64482478262788bcd490cc2a060e003b483b3b9fcb720815d1d1d82b9afb77b801b07b77d33e0d6c696c55ed7ac850a152aa4bc23d4f31b34c065f09a0520ef6190e2172c5428a43041026104088382810f00d33bdac1d95cfe23376030f65bd0c727ded30beb600579787709eceae810cc7dbddd035cb9b8eddb1d00bfb57ee3e41268bb726e4c9e437440b55ac9d718ed54644bb44b7a1bc21a0d483f7929fe1904f736e97ec32019562add069c52bc50fbbcdd10b35ab15818f566d3c2cafafb8a45defcf2a2c36e65ad14afb16bb5177b5830d463889115857e49424d2b9fe6e990e09debcdcbf773b136e7ded5fd9fa54575ec65bdbdaf4b715d9f0befe13c046cfadd5299f40e20e5cf1cb5aa671fbdc9cc9a4b12cbf8c8b1426fa4746c548386080dd5eb33e3931443cca92205164af84ce7d3e5c2fcfe146a1e780af6d3733fd7c7795af2582cc5a76740e99ee7e977e1715a8aa7d9fcdd35cd27f7ae293fb1dca07b4bcdd04d377f2b3106f833ebb88fef9490cc4685e3e79bab87d72bb6f5b2b362c444adb01e175db7a4d5aed621383abeb5dafe944035bb679d542683e427d68ef377561a5a79dc1c24edf2b7ec8ba66086c0b22a87dbdeea0163feb672e2df65978aecfe695fdcbf6285d7ded8aaa02c2cf0f7a7d3bb2ab1ae07547862537f4f319ed9b05d36ebf5abea974903fc2d45bd0e217535a54ea8c76a4163e9dc4c644a8bcafa2aa225eea703de4a8d520ae00db506be9dc4615a4008f377d3dfc97c78a1a2af22e0efbbf9542d74a6584be6feb67537346711171ee94cd3c2437af93b5aa763cbc93839e548b309969b897ac3b14a24e2f2f792ee5436b5b29a83ea2eb6e39abfa1e622269d2e4c0849cf0668342b2b08a3908e5e4cc80b9fc29c90fb01014bdb05230aca3f5fa6a22b24b8b33fa6421c9018c8ba8186d204c63c6979b035128b9a53b6ea0023c322801408c044a654649a5c5490706dd92b9316e83b18bb43c339099c0206256209fad5434b4a044d8fbbbe2c1269b6cc15c092aa05f3e08c40a645e4a99e587a01a50399a94cf9c8999d30140e0684290457a16d4832411e2f987e4548e14aca8f3c3a1c2d0d506f24d93ccd99d136c6310425484a704a8827913087c3db23a1a1120286a808f1d4d0c3c618f87625301ca4e98ed748f2292dac8721648233b6c87bfd4a221587e61b89a30b6237510c8ac823308c24196571248dba91100933877a316ed8b9f98f57576814b85c016b6cd247c8c8b802405159bd04a1e82249fd9db2b25a40bd22c4a7426c6365919386816e86628b32636c1a0cdd44619043253dc6fb3a862056c5b891f0fbc8cccf9911c018387f1b41256071d9b09be2733a2c4243fed3ae61bf7ce8abd4ae73f1056e20aabb96a048caa6f1fdf4f710595329e9762e36918e66b4487337a56e3ebbae69aa2689d05d67119d8568cfda6ea65b547f9b53ad1a7189f6c2feb64652ddf95b0908e7f6784508ae069e4bbce690d695b732be0ae58945a94808518b73e88b771a54c64fe3746d50ee5b2713b17f8ab46ca552d4a420325151582e50e490ae533da1f2854cd309c77b721d4059e75f7bb81a7a497d2787bb8056b26821931d7ff22653b91c5b739de14d87f1d861d6a133a796d3270e9c3a3441313e5b630fde24ee01bbd9633b1b5495f11bbe4a4850f6718fa480e24327e9714d9e165ed28f485b1c01a197a864f499bb19000101098122280063421018128c0864b1502c1a118bdb361000b426c342a7472285f14244128e6114c910049001c000620018203003323603f69b1f19321aedd3d3a2dde9c3e66e9ad548fd6299a5bb2144113f626e50ec210deb43792f3e470140c8d3092901577e176fc71a3cca4ceb262f0b2b3f7ed3a94374e927b5288c747615c068b48d59dcc7a4a9d980ef82aec29a5286a1e17edb8812ac0fdc31a18793702950ef3082e743c1039f3c0463a524f5efc9e7235cd92437ce714bb05657304884a5736c0ef6d3ab0d786ff9ffb271670707c3122f302d3183db63566f95664f9632aa4c666e9988c29ae077be6e8a23ed5861e3d070ac4ba73acd80eb79885efc1fe1b503deafe2e8685497f9eb54de0f61447d3940dc6cc6a0abd84be29e19f57284d8e8b324d067cfc44cbdb0b1a2dbd8ada97d26d9aba7c085c9e70c877296553a019b8a5c42ffd9b688e2920370e8e071eaf82f56fc3ccd7fc7d456234aa438dce6849af1f9e43bef16cc4e360451f25f81b65761ef36f1c590c385bd28941b1617ce72b016743188ea5465a3e2d64e99eeb4df67acf2feb39425883e19b817e5d92a8a8de1058081b2238cbe3b9dcc9029783c1d1f893cad5939a0a8822569e944290cc81a56048fdf542812bba84d70de1b61a8fb21e9a3b3f8b34a7b36d89c61624c257f032a08218e1b65349ee07b1cc1d86bb2d5e9af23708c04822e8f916f4463ba84201e25a92715c3009c16b6ea12c4274cbb565bcae80e373bf7b8a7d67de0822321db1aa6d1d431aa4e3a5cff668a1c04f24fc36ca079821a2149eb5a3cc1d98776d1bfab4d107ae51378364eb10f318f9a4e2a21ac3756578765329e864801630dbffdd7f877df10e474c2d3182398a20bfcf7b6a25ee25d529b9410f838bc1068dc87e1a31b57e04d61a4f2889cc32499463768b6818dba314f3b585a6fc179be367547904bc8d20d940972a33abccbebbe088a696a0fdcad44e3292b4ac4f6861425695c385dc07aef9fef227416902683bf359e9fc2afc41dab636ea7a39173ac61b33b98b0f43efb1e1a4d6ff48cdd9bb6e8b0967937afe3b59e02d652c39c61f61d8f654c6a8f5cf0f19a34ca82ea924114a79c21a03e07c8332ab5ff9f314b22fe10a949245b544395b85a6937f3af19b49bfc3b122ca89bb94cde668ec72ff464cd1375dad253d625c87d3193a26d54b51c9a2dba8c6a18b6239264a99a028d614c52831b0ca06dbe8cd3a900f9a779da9a39670a2d1e0c3dfc6de5e2d2fd7f13a36f219837c2587738963e1292d76ddf4387010a21a56ba319c9bace1b0eb7a3ea1f48224b73b67fe54ea7fc23deae980821183d1cbeec848f2d51033e91243840d0244d62679e132bb8166e3445322b3a9fdfca3e5aa11178b9722cbc69ae6de82ff8008c5380f62f38e7f36482aec5d8f6da4a829e70390bbbb4f4ddcdef1126ce5411fcdb09f587bd5c212d7090b10e44b35009c224fe683074cd3f1faa9eb74410cf6650ef1a2c555c0297304466e7708e173659f5d3804462b5d3bde3a1c8e8d67ae86e13fffd11b6a42efc7dc4c8b872d04bba0b7cd642a0756efb06c1c79d4c62c966c4fe553397324c997d310dfa777232ec57e2fd530d4a1ad1df64f6829257daef4b580648bf49c6a1aa31101df351938ac2341eb779de5b55613b755e61e86374742fbc314ad6d7dff1bfe5541c05f1cd757f47ea69f9b9bf97708b962a5ed84304ed576fb9fe8d456fb678a6d70d9cc3add983e8645d2c709205e496eec605e3aca62744b4c0cb142b467c5e1174a6a5c4f90f89c9121d2ec0cdc15738590af6e2637dc0c2c5842e99684145fcee37df52e099fa37e783173a30ad5ed6d040a16c0f2f3f42c9bb24049159bfb12819414b1964caadca50c5d15588302a27f35579f0b950b9c091fdb923b5abb23b55075b7a99ed53601864f3efc42c0e399bc56be92450eefedbc5309a5c84d2c45807709fbfac8daac59e64272cc4af8101b4f7bfcf904c091ace04fb31900800619080dbb518550c0a8acedc964105d07c7c4239948d94de8be0a99d1a12a4604d6203d96a220e636576e0e9a026e8e307f023b5b54f9b10392d83d54e9be97996d31ce7d2b0de92952445e4c279878f026d08d1caff26ae3a92da2c3c1560851c077b895aa84651d4bd92feb97b93c7ef40b1ed2091d7622a7f9a6445d6b4a94535f906dd478e31767eb77528c168ae36d2e9d79e34d347d8880bcc8fd1cf54376dcf53bcfcd2f50f85e93b89657e451a39b158cc29f23b97b693b48c408d8a08caba9095b007a4c0674488463993b4f85ead1d70003c46130b9593325bd63e376406c47108a420029fcfe98ea5b341a098693474f7f0263deaedfcf1398eb28a881b299b6f9670538d0c655ae7a43e833b92d03f5cbc550cf98c9e3b85df5ef17634e60c5379fc2e74d26ec2cf4d9e5a445fa926d32132ba84377e1896efb380f22c165b982e9aa3fa878121283ee717b8577bbac32fe30a91829702d3ffc81d06bd43c09643c5968f1a6db272ba1077422c256979a27f712ed4250d38367c53aaf4015a2f23572e80ce36f30d8ad4f67cb805895d9f76dcab7a05e064f81e178dee22e8b2e0366b33b8c2b69f48e43088b55f85ab40c96838f67aff32400df1f74f1793162808013d0977f2c0b427d57f93a1bce36df7f2fa362fa234e6474194777111c715f711d9c84a04d00a1369b77e18aa4e56832692e9525095b68b174e3e07aaa783ca2fd0fbfdedbd8c72a65498a079d46f987f7aa5c13282618c8b2298bb8e5c5d3a5cd8394f9ec4efbec61defac1fc4b4ecc176251b71d136d655826b115043e5322e6c07549fc2e8070a372e6c19df3bdb926eb6b3e87887909af047d4d083566ceee6134474e3c9544ccd6994d585a1e27025309e5a19a31432ff648389084ca3695e5c25c7d5fe427e0a723c784bf15014a30eae6e7450e5072a79f75ffe5d67bfd35d6e4c8d98b85f467c83f31f42a2d11bae0d307706a61b3ba036d9d24f0627109e220654c7bcb912882818a9e3b7b59b217adb1e0d4e5705badd867e10d80accae555a31f4cdb19be60d883756a66c0f3ea0bc57b96d9934323d7751bfecd6ea842826b99bb717df4a8205e49026e50907caf4918ec76ec83b0d7308c8491c9d4a9cc7a2bf0f01c4ae2d7ae0f0d2743055df2f5029e974f2613336332b04aab2c6966ee2c887063d4cdac01712ea8ee98158dca696db63af2e8dc4e7080f1e9a7f621b840022c0f9eddcd4c6a5a15f96cb7c5f3c5e1fa7d5322636bc013ee273b5ac51aac16263aa748fa5b79e559a0b159d1292147e98cf92fd965f1e4426b5d327e0c84e7657ef3220b5dc9534ea336fed21ff1dbba7eafd23741e53a0f37ffabf018adbf4a709bf91100f31b1a7cfccfe53f0a0cbdf913422c1d28b3c35f8d2c5036cb8ea7039683662372a83da4400f1e666f1bf3dc8223675efd18b0f63e7cb5498a8dde6138aa28ebeb990720784c5172ba8e0d2219a0725f9fe5d72542a0fc510bb00f7c09f2a670a71d2aadc2e6a44321c73ca98bb52bdf1000786081b68780b3bb8f8efba83d3d2b93356bd696f174de90b50249c3b238ffeb10c2bfafaff0844f741a70907ef0560c1bb912b0c9e1f4fe69b87f21d0b9a0a8a3fae7ecb5df4f323e0bbfcede15478154c3fab5a71f7a97e8297d15a94c4f09cb5c33c88de68cc8f9ae709c23dbfecaa85dbbe4f260e142615415aedea6c33af2e84938a0927f5a69f8bced3f572afb9e45d6a5b279ce02d9776f29484b28885ee750efd34418299244d6c0d58fbf0d9dd6e1cf15173ca660076d17b4afe03f383db54d26df95ed9232099c0b8a9b09980805d1364e367747247a28af30b61d1d15b2bad9a3491138216af64a1bff67a2a3167719ad56e389b3d7b4f1f23d024f310e7bcbf1319fbe93946387a4e8bcfa86beb5e3a20e078944eddf9be9c9c21f372a69caf083751cb6ec43640c99af4c06276710d6e121bef592eb75479e2c7c6abb4da95b801f460793ac5eb6657cc85e9b45dfb6cb53f3f34863da82087847ed7b24f4814f5596a8dfe4cd2442dcccbb73794e16244c327b2912337ffafc2b722439088010b4a821c017380ab79283b98ad33f7056b3c5e5009c0b50c1eb3927473e4a34718ac3796ecd775af2be4f3e3df79a2ecd2121759572fc7028646cf3afdc0fa328c135f8ed87e6930f05781897796da5f2219ba69c3c3c36f04c18bbbb7352c18c4c3dfd5e81a9aab18ff44ef217b0f527d1b25f84b7096e2f4d75673da25ff29c8481898fcccf6e16b686ffc03a778521f58d5bf574a2b24a1bae71b726accce857d9164510fa0432335d607b4ff3156dbf708f9ce084d8a3e96b7ed83c8740b74c326ce7008f1c28bbfc883bbada722f19ac19c6c9b5fe980bd4fa69be7f07ce7542fb5caa5ff00ab54ca1ede44e2ee69186f8ada64f01ec2aaaadf5e16546ea26f7ce9c1a4517a37fa4e852c79703faf309f0855a96ddc5ce7f793f5d6a8cfa0142ea04eeedab0e56407a48930ee6dfc934a1b665504a375612c1e44e0f2c61bb12ecf01a9f3e56fb95659855138abb56b8fd5681955db1c1c8de05a5392a2b1b6c5f41a85386e66eb9635690766038d48b6916d353d4a55b06b55f79fbdbbb670fd421a7498f94fbc4d76f89158222212d057e63a39e356940aa4287defc7a167030063cbeaf64976e8d7aa197fb63adc762c34629276ffbcb7be37cdf89a2c196859c7e2d5820171c59843693cdebce29f1aa718dafe88a3059441b6cc1e20f6f0741e918f23c4a3939a81b9d33ee3af655195ce3cb46c563ce632062be1aa3f980c284ed53c96d860572c92e094521d1824468911617181e4f4f1e7f8a7e1b1a76827e9fb8d6deef0d496c038624d7ad161fe22e7501ef2e2ac20b323ff8ab4e543c1fefd9d9316a387cf89f1bf0166376b39c91dcfb1b2315d1f2035ade9c0f7cc992dcdff5f5b1fa43c30e9e58d5cd31cdabf3a18fdeecaa8bc71da8ec965c8661f76f3e3ce6c9fe2d78e9a36fa1226be69b98a846387c4652c453e13cb0f3ee0450432bc768e1a7daf051fdb642978c358bc6a2ab66197ca7c67b71b9208b2c1a6e68cccf277407a83a0cc570b464976102a40add05ccb8a861c43eabe98adc952f6725921871d08d03c9296105b6413bd4823c6d3ab478798f3a139d82e523beb57747b7aae9bade0d902f36acb444539337c4c7f0b0b060dbd6a8a9088cf353272425ea3027ce1e39fc95f38247126aab85275271bf99386d118e8ca7c3e175ba2fb2dc3a727e7e8fb8ffb9db5b9fe90f7c3cfa2cb676492191c98ff9c2f0c302b3920a71b1927c14ef53252bc805287eb26f21a1f38bb51734c7d2d276d727705513a244650b67a1bd7ef5a95b96b48639e4ec82c7197041b428e735143ab0028a57fca31e4725e4baa37ca179585ea79037bf0418a4cdb5710a7942d421e263ec993c1953b147861a1381c607fe36257b986866b3602a08b34dbf922f588a3e855a8d024caba72aab4a5d8b0ecfce3ecd08794f8703c07171d04c8ef2c5106f89b7fbaa04644e37e98b0605c4a215a6d0e51db100476f435d46372a9af6361efc618325d151bb3ca4266b1c6d9e2d589d140b5abb37817a2c18f81f592ae1e3d266e8a6006a40f3e5ecb6fec038947f563296d187b8bfe50b2a18fe190f3851aaae38bd9bf11e70663b8af86d91239cd6e42467583bea994dee40da2eedea7a6703929b153173804d378cbecfa88770f37cdf80cbc969ac8d5341526825b71926673b7674108b94ca7d9c8d92f3e702dfa612f0d1eb2e376a0ce8454863eebfa3fbc83149f01cfe5f1ca07a10af26deb77617299295041c6c9c711d65b55e63534851467256d4a7c09261f943d167a54f3d98aa9b9e5e1183a5ef8d74ea016ee6c21e74ed33ee6cf6436f6ee93bcc209d80bb423a6b3bef6509681c75eb3418c06608093295febc98a6b9decf923e892dfc025e9df76edb9d9c02f58acb1c26a7608ed10d5fa74c8834e7ec804baf7fef78d6b0af7546ef0d770d558f357a394e5b7304c4809ee3bdbcabe872da41263df73bfc8f819d67a3fc4734419817b68483e458ed611bdb1edf52e497d0146f00e7f7d7f720d268a65e363c625b38745256243022f2587be1ebd57288eba12c5c2c084287a200721d4ad84e87a059029a9ff43e8d81b3792fba56fdc4096dca86166641bd28d10ecfee899f6aedba1231f4a5cc3d5e8ed38ea1a7d5fa937409238cba71b5eea1f3f751ac75d7092e24b6f413c8e6868a3bb22b7510b1f6ea8b08d8143942e6916b983866152f839fb2bfccde4ac01469e7d6d522a0a83cadb98c8c5020795daea3a6c661f78cdebb01cc4bd5e13a833bea39164785d7effb9ec655baf93870af95291afd50f163b75f035ea73a62cf24c3413347659960fa28d34ee0f5f877692062da26898585e03b2094d05265da47fc1e2f9ac6d7f86fb08114d4a17cdb5bf2e88ebc59de10c0f2732bd30b3b9a41afb496603be76e328950ec4c325bd815bc7d5e80422a2557df40ffa669d38afc2494eee42e729b781ddc1f1a16b1a73e6d303aa88c8d9df961091778c7ce851a386bc7c27ce14c32580b760546b4563a065660a9fbbf908dcf2a37f4096beac62bc923ce8864a78f5077a197fc3ef3f7a4675c5e67749958162d0a93051fcaf22b8c53afbdf8a3a708415e1619c81a803f99acdc05d64f9d42a013bb8ed5aa56f80eeb32d053e09b54766050043eddfb8cde5768532a5ea259c9e97e07b7babeee1e75eafcbf1bf91792aa6e07add246c88a24953eb6b787cabd97b3a3eaba7796727c238e993f77ca80bb8d937615d519ce48871fa2a5cfae8b9a759fe88a9af0a4c3ce21ebd5c9672a1195f1b9d56ea5339e8ef24b1cdf44341506861d72f5d3539a7cdcb9459cd549c79c08fabe118d84931837ffa20d067f8ce79dfc94d4c9f4d863692a7634284981d6971bfa202350b72bf83a5e790ed8a10f0c64df44de7719a4ec5105582357a84d59f7df261dd8dd117235cba60950662e4ca784d5903b186989e83766d489ba5ba2e3175162be4701d831e74ce033553ce492abcab947d3858b558d551b1e5d4b830d83f0591b1d90e63f5f725f37585c4b06b99102624637da120733fb9c8cdcf714d669dfcc03f2de9d029a5a2e6d09b9dc709ffef354a890c23d7673e07007486e0dd4f2fc680221c149f3d04a222a695660237f4e7f89f801e944adc6e80a9d03836365f0bc8980e1e2dbb9d6f464acbe644e7c8824db6af5030c322b5720b1b920930412a554080aa8d4c866dfb07e4ae9e1c6285328870f748a5c27ae2abd14627004b51871bf63f915409552b8483edbe9dfb3665a89b4b6fa2b7d956b09067238743be55494d50415bb78f20ab64dcff8840d850593e708e65bdfdee2250ccc0dacebea3fd2faa5bae034bb4495261784b098a96bfb0d9aaa344f31eb218cdc4093c1aaf5054ac3e9c03ff40eb1bdf6541a4e25b315ee5c1491d0239c6526aa84403bc239b32bd8b64b58374de7ae6883f7b7c747e64891d58320a8119c928755c129da0c37fac862cf80d2b07fd28dc9b248cd1efaa450c504603b5242b9fc2c04eeda2ad1e7a4b1ca7794a61cb8e2d7af80811eaf7d08249fb56e0031b3c2d802306ccf9039030837d70b1b6893aadde84918074894991fb7b10028c99ab3cb34ed1309334760c6577ed48d20ac02c1eb50b3fd0a550549e4be66d80f1d352201ad640bd8d4e73c986508644dd0632b22f5840861d5cbb12dbcf9741459f070590254fd7cbf81b984448919e5da4d2ca74c744eb12442e03b8fac7c23574b4f7569c3197520e4a8572a0f7cb64bffc3683de45c8f3ac00741ab4b25976e60c1f4e57f21cc16805387784889db0e69c7852e59d2c4c69f538945e97cff449ae1e462ca539bfe7eafa37c58dfb8f5c10fb33a561ee04f893f3a07baec57338ac17da29de06253d61a9f503b3312ad3ef97361a86f1bede117cb6bfd0fa9df50cc5c8d989c7760d79363f71632686ad8aab0a8a77d9f225750da934acad0c44976de2afc7407ceb12e38cf1a39827f1574f3379b6e8b8f61080e62047e26b85b24eae1ff78bde8c823bf2f73f0643e6cfd641fde9c81c8effbf5ba6f7ea4aee6b86e33bd3121a509edb7ffe95f18df7d3c0930e76087e27d33046931b43174dfa7330c2321ed50f47d3d81d6f0474b3b7c2028ef38272ca876327eb33c32649d24e02db28520ceebb0a9b5de362e60abf096fdcac47fdfac4a7037bbb39822f787afeb2c7ef2d9a86a4cc3be04987bbab3b6299dd24ede43e924be062e6d88c20716fd855ecc3f4e58226b8c7e36356892327495ab48d5e4c54c53da2c8d0c2c6b7274c265f1b9b3b9e1f8633f8f325d526a41f06746390794c17d21e40bdaf386c95fa3d0b31b9bf552606ee0dcb0b5b1dc197037b8bf2273f8203a06b8b0c92c50de3d43a98d565b5eff130cbd90e443c29e447b3c07d0d2f938fe43964b9c34c4cf2cd093b80791d5e92f01900feee676c8faf512691d11d0bc95f605eddd9534fa48f1de6e7b07bde30d9fd31ad158df2691525961d3118cbd850b74ac08e75f0f076af29e716cbf00e59b092ed88a334f002fff5fa15da65dd670b73ee275ece24f3ce5fd1335e091dc9fb0806811455431939193fdb2b3eea64f16dbc087fecbf3b4f8c0a8ab19694dbeb0cfbb99cdc28e14329f5818121b83adfd63d70da9e82731cce44a1904c8278bf7907d6ce069a75365ed4f5d2f0f9b7a0b889b11b7d978bcff06716c475267251a6a9eb075596beaf251bf613c28ae6c8bed3122ee13ad5408d49a3efe2111e4f09f0f152045061944c7c54a8bc14e076996b588c08c014522c3315e2cea2526af36e9355bf6053cff1060abafd2ed58a55078e53a8d47cdcfde39477a65b0a6a21c52997cdf0001a13c4875c91593f98d793639f3e624f1c0b6b189fb52e6cb066a7ea1573b45eb16bbc37fe3307b17919bff61f30d79940acb75a601c7f6172f3fb02142f73ff68f4e1a845bfb5dcf145547c5138149c6fbed907e29eeefe7668d5f2fe55d96816fd6add5cdf60ff69c9caf81b6ebbff6ef97e8e7495980a85d3ce080c975cb3f04f040f530d279f63102ad1983949234fc266cce07650f8806a2c4b1c58ac4b2b89b1027cf2add99e9205217830f97db1b992802256f8f80cb719e0ccf096a3896bce2fa7c71ccb13a8cb707fcefd58ffbec4e6ed20ed158bc69a9873cacae179ce1ce7028841feb950e735f17c66ad1cf1bc2eb81c343cd89bee85cdb31f51837198658bee2d4216dbad58f6697254a63d4255461458166ce7fea760e48f6238513026ef167c515026175c6daa6f777937b24eea67bd4b972878036a584be296f88b27e6a0d471624c1b755e223edc54a394079252c607c784af8ad927821735673ec635ebcf0127d684edc5509e9519412a22562c323eb75c03d0be8734c986eeda56c2cec3833b2210a5fe2a64bd5183c5bd68b82940abc7dcf79174bcffa6fb5f49421be0f50f85691f88a2e356e1290917391c0c19c1c19c0092432145c2201483f174a11bcb0c46e7d740d0270d3f19ee09ee3e7dac938321ae63d8ffd0a2f684ef722fc59cd9f97dcd2398135dc6fc5ab0e38236d39d78d76203544e5dea79eeca9835ad5d3bf7a0bb981ebcd302bda9dd96f4031c65b055193acb986ce4b1c5abea2ecf57cf702cce319a8861fc360eb35df282c79834924613a96c480a158b3ec847c43586dcc7f21c3655b83f3b7d4f34d24db5a077c65f03fea033fc9e996369bcc936cda5acd6108a3641278a61a78ad988a3e3dbda1512aed925b9485e4279bdabaebdc4c65063be0688cc3e6a98ff2c818e00f616a140157994108216ba1d4c81f0901597803f791e486ce8667fd4f9db95788a613538fba77b81d82bec17fc869a06d16be9e9d45e14f1c9054c116f6914e0e710d54ac229f8b367512f4c4855541208ec4f672f69f5942939f54897c5f3e2eea38c993454d4383c48c0d63594d642d92ed17d9ba49b53299d71f3409e96d3d815fff92ae22a2213d93205e0549e8ac1d0753c5b3a1a1e4d4ed2bb0244b24d8f4b3be97b2c2d48e54f7dfe71636e65bc6db4b29d442a26510119ce6a0783b85e05065447f903b51a53ce7d42a90d4b062002f2184b2381d1adb0325a789f6710f4db076725bc8ac34706ec18a63fe4ad157cc2514ea2a2087e9404315770e60eeeb24e0864e6dc0cff0183ad77741a306875a706d45026ba3f7a3449d0a4e71c03e5071a3d1f0c797b0f6280627b22c76428158f19d5f44ff76f51059727d600afdf53e58814668698065e9d295ff9506aa6992af26da21dadb9b4d0d63ce69a86703f37dd3802eef93a6b3fc4400fec06a8790dd639d4650f4813f7d779deb49b30438f49eec38f7c8f44487671df24a991d55db77fbf31084e1702397b7ec78539b21099e63d1d92059b39afd42d2079b7042f3390da9a21b75233db077a46ca6b4f86fc994ad13d46977455315042b5317f047ed4adfdb915c1ababb022a13bac3ec53f76097170d1b6fb9f6fd5a838ba4f9c5bb610b553314e0a5b2fb31139bf84de53bb3e291385a7d3eddd8c7491ff6dcb649340f5bafbd281204827a2093d2a9297b82aa63ba2d3cee70df17f51cc2c5f82f5b6ee2a5a82cd4332478f4656911bcd7751d5530d5317db3371b401acd2627c8947ea6eeae7d8b33f31882ab91add9bb1becabb37762fa422ea13e32352c75e5a1f980077ce79c6433aa6621272803bc94cd44787125116c7e4b92a0fbc1c14adae76672ba2ec084223ba8e191524e8787ba40c55388c5fc8c5d4b6383f9944d8461f5a501797319957069d9f51ffe0c0910a8950640aa85ce85c2ce57739ec80d4fe52b62afa0c32de21cf901ddcbd01a90335495db08985c111f70958e261402ed022ea34cf38511b74a665cf5071f2cb1a26869bd10f68bf3cd5413b5da799238ea12e52762000d8ee2b64b8701c9b2c6da0c6f071982a326fd0245219badf07db3c94b3494c42e715575a183877f7229e611914e9570c12770bda1d59deb1b866a2414c2e9fc6ddf1c7e708dc6c601e4270262c05800f27c1c48ac2343e4f86885a790ec54383fbde5b149407062ae821f84116d8238a664950249e1dd7fe50d379fb885a0c63a05981ac9ab6a805852c152cbda6b401691714b7ca55d36e3aae259ff871fd337136799af287b4da3a34a6981300ef90c0d0f9714ea85c9c1f921bbad891d70e1780be9e1592cd0410bbe1bcd734b3d13982e90571d268b1bca6d11556421787ca0900fd5cc7703a959636062d46e249a3c5090787753576d9e1dad632c03fa39c161236f46e2b7f478723443faedea7fe209a92133299fbe903242d29aee1c823d02c8a6ccd3024f7f11803581072bc1d5af4e469273d4ef8577854d5b3f42373c0b48275106e444b531556161de4a35598486a6a2974d283159cf87a70f745fbe77824e7461f00f5526e77bfc1604f27171334b0a1870a9d91b39afa1eb82e309daf9f7ad4103b96e54b60d8f582f7233a71d27218f0019336b878de16b92c0ed17b5398cd38cbba6c017016b3671a29043f68254fa3230e834819c770630f7c041e142aabcd55d739340817b17a7e12ec73877f5d9003c15e01e18bc36dff31f0575b0c3c70f54ffa10cf78d71dc291a9bd0400bd0d77e2a44737b5b6192f47f3994da60e9d1c48248e3368e4c61c04c637c5de43f2211206537ceaa7ab38bab6dbb8df4bf80b0a02127c134140ff404b25bbd227e9493636cddc2331f0273d00199376de75f0745bd3fdd3bd6ed8c5aac736cebc30eb15d4cb858d96da991599a15580cf1e7fc201c7a0d67df10352ee243b80c3de4c66e23ccf9bbd2a2db4700902a8e8c4ab2bcafaf86dd34522d628d08c9ae6e9296d4d935a8a6ff3b51bdf9515def01a06c587ff02646869ec61731b44a791b821ca30c6682c5152cbd85f398fb8f55a6c9b474b840d924ab0c1ae69876a069ed3dc6dea78d44f90616fd2844868b3484948e95897e09b1c191af624305975732ef004e38dcea44a88925b6f1480ba56e7eb50f9a83f374280d4ee267b1f840651c4f07a7f1f287e41e13be6897f8db7051aac15990c1ed5610da91fcbe974db7459a60e3abc939a3bf8c783c04e544e08a949d3f6330f13e549bde93b856c45034dc67b87b85879fae7e4e9d877362cf53ee07f454e3d8b2c41ac6386dbfdef89743743e9b9cbbc7bef129f91b0e3b514ab4c20cffe1fa783c29aad658c9a199d3f31eb1fa3045aec84ed6822cc1d4d2f6b677e5809d8b0eac234dc99507fcc90e71f4c8ab0ef79b6aaff001e6ff90ed3004ec2de62ffb3720966b5bebe8d5d81fb4b7365ea3d84d2a7ce194fadd4aef9f60d1983702633c3e0831fb418e621481c9752f6515f5e10c2411052d51e4a13069ae399670a5e19affa5088497f8629f2898b19f92a1425d147fae995de4cd9e2467f56e1e04f88a871238b45f1df99de6b09859d83a5ea91c47a90999720aae18b934066b2a1ce5935db035cec9f73e35eb63c1a6cd5ddeb5be89fac10299cf9bd0263478c3964ff02a990b44f0122bd050ef1c16ba24f89297a0b59adb6cfa741fc27ae6979443fe6c8d6af9fe980598276845344f8e53a0903cd8e3f5f9e7b676902a5905ef3c2b4f6cad8644832e366bbae0a8eb966b9f15a3075bbc280212cf2d3e0603857ffef48fff11edc309afe936f44cb3d58c85aa4d126f5938d90a5228cb067e9f29692c18f92117ef1bc5fdb3cef1a3125cb63f1492c44f9405b51c8b6698ad652915f9fcbd143d1722daa0306e4faf53e512fbefe382b4477bf2cf3db1dde5c0e8817987f50c2310ede3130c8b5fd5e96c732524e3d48115cf52b16d5cb49577c142ddf4dab561357d48c7058547b54cf30414fca9b8d587df5fffc747ea57eba1ea29941d1d77a90376963ebf1d7a300ee1bf73eb134e796ce1ab90acfab4ecdae867482dcb1b89c20e3ebe6ed2cf6e6491d70437e7c62084822ec5320faa02bfec74b606128de9f79fb1290f02c71837330f08d16cf9a249256bbff9a01df6a95d70d2c70d106d07bbafc93d642329c083169b07f7666fe1701171233ad014bf27f4af4ffc3c84b5737b79a5188f488edec5741ed15586b363a67ba07180fa1c5e98f20e2d087a37bd5ce405c2d9e399909d471af374547c5d29b49305a98c94f9d7ea878697f47903f542f8e688d844cb7f3e7e50cbf41f4133f8a9491a0593bdf233304f931ebf911dac0a4e25ba874864538649dd27a50e0d7ad0907a3457d040ced07f6dda56324deae014f41bebc06006710bfed3653f40faf19002103936c49b0166570e728f704649e113b2b8329fc4d928bd6fc6bd38c5f9f86c035d3f328cb99dc0b616e8757d0b3e90ef20c69a869c1ac9a750c6e86420f3830d25f585586604b5369a61013a43bb5a235f88589213c08c2af6ac8dd200dcb183f4e1f0f784fd7aacbd1dbd7555e602f91d551884823408cdd527c9c378161fda6c24f59eedc62ebde2e818901446b2427c3edd38e66ba5f2e7da681cddcff7c7de41f0a0701e7fa5f606aea06fbcd3d1f813711a511c8ee9a413c4de26539536fbb1293581cf14fe855a7deabb0b98a1e3e59cee3154271742d2cb9672cacfd5810a48fc468457b774c71654e37613156dd3e6688e3bad6ccf2c89e0a773b8f4782043000f13aa5ba7bd25855438fc3677fbb57a8692c0adfb0cfc93d3484808cb693a0d1c4eec71bc1c47c33ada935d1ac7823cc4dcf2f4405208a85feaa81a786de303fe831aabde6ae5f8b281cbd6f0810c8f833f169fc6f10617f8b2f35465186ad9eb26b995bbd4f25feeab7ca00a453b31f39ab5c5c29a8e1c8ef7f48d89e250eaba07c68e1ae0db44406eaf86f2373c9a12723d1836556f29658d7c541c580075e8f259679cc592fe8b56ba3a9b5fd0c601db90557bd4e779a24749b3b61400a93cd7a08ac4e1f720fe62852730d2e81c9dc9c29cb2fb82908223f826a189965b07eab1b73f4431835279a2acd53c24b85d6ae31f4dfc8c31e47fe2305a36aa3f398be109cc8ff314d07dc25454a1599f3af81c308f4f4283e82ce4c11d0961dd7075bbe359a9481c18d8a8a3c3e02d0093c0cf6b7d9d5fe5bd3550950305d9466affd603ade508ea1e1d3270f33bae284be0f87eaeb63ebcb9f812b683d1dce4f37d0e317fd7f3a0f71007b9eaccde6797ae80dba9c6ead6381da4322c64a7d667d0e614ebcddee34e1149389cc72ef91873c7eb0d12a793534d948c93dd78547134ac6628c267e2853f0d33b727713c5c51ee27dcf2b13b05be878abaa528f8f972dd382ac39e7cfc505b238fccecf297adbe4aa1c05407c16d0ae991b0fd033f16a9b589227258c59b392d2e5d930fec8969f30a8e5ed61ec8e7ae4b66cf0dfbb371c6a750dbd5cfa28cd863b7ae6b3a0bbb2270559fd38458672ebcaf662dc5f6ed414d91ce953ad1a8aab3da8e1cb378374f1ef835addf3d2267704bd2800711c65a68a3465b67283298c255a71732fb04f328d1d1ef63a2af5f9f4e29f40b95da8c7491a0efcf6045f1182fdfd5cc3c7e3ffacb5f63d8698e9a2de9fa548f23fd74265bfd31e461cfdbb38f07c878a805e2b3ffaf8203cbbdca2899aa1d180fae3208fd6b9fe14b567445bb686d3c9198504c8e69a2920880695b5936874d9d2fc564f629ea50fd6b6ad633fc83bcd2dcc4282db8d3542259a98dd4ddaae174c7e9619c091c0db515952ba3b40253f5d854ca698339a000d8833f8eea00948a0733f82bb5a7aed16c2cf834705a8bfddff4efe611d2699a345ff7d10e3dbcee47f7e66c84e7a6664c787ee6c6d6f8863537f3a39365293952b259c3be9e5d69ad2cdccf86ad763ec6a47c1f1de62f57944bb5bc2f38b601dbff8ec6117effb927f9f977e1298b7b3902c5c9e5e0b33c3916332aab52bafd32e84f35d927ced7fb5acb81128166cfffde22b212d9de0e07182a4cdff52d81123a27b461d265de3ce6bebd68aee2067ecc89f91efb9c5fa05add507ce7a861982cfadb9bdf28eb8c8d6bc57528a7df2d05a28fe44331ad59651f21f82def6b8cc9f5715f3bf687e9b35e22c8ba316cd7acb4c0ad54238eeebea7ea7810f2f083e7eb81301b8672deb650923dd8d3bb9a0d66630876df4509d8d98807326057371d661f8ab9059fea4708f6506c0d44fcd1e96236d4a7a48bac03cf2276330799c05fa2b467006fb0bc284be62ab52448b501dd841d2500be2261d825a9a4f36866d39a8edb9c4ed25adc29b1646379cb58973624460dc02e813239ca1a9eee7d492d8053317e54582a02a568497f4fe8466c15cb6554de66b7d57d95b6a790601c704edd70194bc175b655fe9a0861a7107e168799e5b1f106e60f51af91c3b328b468496c7c400995ad363816ff64fb4980eccd27b035999e81c292d2f5dd8b3cdaa81311e6499eceb10f93831c0700d44e93e4bb9da37ebbb8c42039fb05b2f39a7d8f1055145e41106e53468d40ddebd20b2959feff427a106e8a3d8dfc77ec5d866bca6e3f9f8b7fb72198f8383ea8c3473ef7307f1a6b7170dd616032e361669b2532540af12dc78fb5cdfeb1ae519c6be488f88a6de16c75f20f8a8090a73a16b3d9c2f83a4b878a0f9248ca6b77f02a3def113c8be450a868b6e18f31fc3fcd81f93afba2ec8f918efbb67fa1759a0cb3a1ec27fb2a20b26e9e34b1d2cf8ac76105075dd6997dcfb9e9308066a8267bf88d94b3546a384c75b2dbc5ead37d2b85ea8a23b6102ba26fdf7b2b8fc97ed4ebfbe879afa96f9c6d6817964239c87957ea816c5339ec8d430d235bf65b2f9a140e669014aa869f0d9340fd043698ca9c174e29ec9e8fcc98f84c43b3b4e533f7fe6b493cf3fd071b3c39879cc047cce9cfd280d64c5377bad67966b523d23cb0ae13054974b5e180f054f4d80521b42f65ec581aee8a5eb80a4898bc18ce9cfc6902b4c625bc6c52026f43eb4ecf26274c39574151bb7c56d78f6765e9011aa9bacd6e9e51cd02dc28095b51f2c1199fbe54740930086be7f8c301898b9a32e62e71c6e9c1a56b4084281429333588e587af2daf53613530c6ce8951538f4f84ea3d961f00ec094c501b68d49e321a8ecc7d0a2a67453e588e0a88d938411b08cd333d6724617172750e1c20df37cd6f9783d9cbd9bb6134fd683da160356b0630251ac9b08cf85bf2c82d7d9e5a190f312f3c06f11d4a0ae92a38470cb885c1f0218fd896d9568be02468d9b3c9ba2c02d58c422338803fa9002bbfbb82309eaeb91d1f8850170c2c6eb6dec407963c027e41405c1f6bf099121bb3b6be746e75570ddfe8387f97584a7b93b62c5cafea816f6c69e3ffc3d4bddf706c6b06e224182f986ddff9c5b27179d8d2efcaf9f9d4836b032d5a8eac10d9a12c6858afd962301439edaeac645dec3f96b3a0bd804a29ca9144cdb3de22f34719c5df5389453fe5ec4f0d6bbdfc6b025f8b9131197e9557b869f94520774a7fb70c653b20bd2c3581011f3f60a8d5d7ed464d9a836fd7229eb839b6c6f2057d5dd24de86ec926f4c3bf0cd854fb61d4f2030dc873cdfe260a4c5554d3e7b66e385c90a20f786041e19fe0930b9e8fa3e7e154c9c8e893f34ccbe0cbd7d4db7f016a816fc5374e16a22063078310c067243ed2109645781c4bfe36cffa9aff4a5319d4c558af882fcdb818f797ce062ea6e5420c6a6bc64ebdb118cee4814679ce1b7ae03e1b8fd61390eedc4c1ced7a5cd0a9fade9e9352fb7b8b2f620f2893bc782c984cfa6c27f1b308e34bc04c86c9d3311d1b9f842b0b7a77dd68fc48e52d2ed0de9215082f749590e05aa6106eadfe893c85a787cfb7a636ab2485c62e808de7e1f8a9246d03512f25918d6185434d30a23c59be69d4eb27e41d7fde9f47a99b9c089c59f9ca0e5e38497a8f519d34248129721912743bb6a703795eba3d3d2846b573aad347663e906254f3a25e25ffb1d3c888776f85b70497b28b130eb1019f16bbbf74c8ebc799bc4dbb52d238831e1aedc48f907922a27e5922de75c725325d406d59f0847d8ae4e7d8facb1518fc67e12790d982960e829a6735a3cbb172ea5b6fab27c1363e46a3cbd7d4bc864f02eae2f842411540f88e43696d7940d5d1dff0ee7a9e33e80167c6f72ccf44ed88ecab07a6e3e3f651f91e8a0252f4c201ddba12f25fa7af3cf4feecb9cde40cf9713cf561d0d2552e00630d1efaaa1b3ff82063b56ae2f1f40b2f8553b8092ce79f8f64f39d90980339b85957cf08dc79dcd5dd7c93d236422a792e1b1e0d331132ddfb3facf7f3d8f5300f720a7b55ff31a128450d799cd59be9774512fc884eabb9223e1e84fdff0a14a3cbeb2dcf49d2e2a0280d570683a9c13989a0d18d9d6e53291e848dd9cd7cf2b5458f7cab8bdbc534cf44c001777e2a78921eb7254fb53b3f53012a45a3dc0112f615f651ef8f6399123d54165bd8c08c9dcb581ca72ccae59d6af082a1232374318a1456705fde6760b3f1febebd4c457a103de5ac473ee3dad9553ff0d3533ac0d5c88f58f443fca80880d7f2d773ab766065b88b98541195810dba8ce45cde48095386a4c105a76fcd4db2a12218ad9887ef2c061054b171341e5486f71a23cf0e379b985b0b9be282f36d936d176f4911ea7ce918c1b07b99215c4423c298f517f3954feecffaa0ce64544926ec48e85e8316ef2559dff68e760f32b0a8cb6fe0a92787c8ef0eab738c03143a538be7efac6f9286a9ee59c95ee8dfd6a3f6c8e7b46fc69fe4e793063a77fba769fb33de53f44a54f8fb11c7e78a1f610dc7dead3fac298a2a6f99b35fd45e9f93d401e3590f85807a05f9bac1bb00652efaefc319520b592e6721230e2f8de5cfe6dce9c03f5d63d1e0f47988957f0643471b4c4580f6b987a5bb5f41c9f916f88e9a57cc04ca1af4d03ab8307153385b8a4856a0424941f63352418799c8b65d00dec03d90ed7250de4c5e7b7efec938feca4008ecb4db817dd8fd33045ff35e3fcbcbdb1e6206ceca5ea2b6898ad25addb951197c9f64f3d439cbedc191b3b5f1e5ff9b14c12463d116d8c9160de190993f6a8d4fd7682ee9de870e81aa9761b2d5fce91e5b2fc6139836d9d9d261abc12581c144e871a638eb8e291cbcffa8eb21db4707a70c0c89b288dea347a5a6688489b7979f73033ff17afb08715394b017c69fc882e7659f5749ca62400960f1cb2aed7909aa5cdf1b19b23d6afbeb65ec918a763270c6f64283bb68fcf09fd9b83ba5e8daabcb0af34e745526f435806451fb5edb05339c8573f376ef9f62e7233d49b8dcab88d5606dad8bf7fd8555859eb887e227714a7cbaf9b19c65813ec46e7b5a50beabddd6c88c86010995cf782dcbf5b3e1a689e3bcf9baff1bcb591ccb28df1ecafb14cb006bfb6c78d5dad53d8d4401aa88648d340ae9fd0a6fde24948102485416f795b46f899b7c2e4aa57894b6e1ea61eca05101f337f3ad3504fd0e5e654398c26d3d97b26a8073af870ef5ac5e71fe30992405814a4f0cb20a00286cd6ea3822866052dca0a920e99172d1fa52ec8544ce4379a0fcb2e35d108b47dce3fe25f93ae20ee664113ffc3ae2560d2382f3925b21fcbed5e7d8b290359cd77ecb570f95bdee52c6429ca489fdb9d975c2a6392f9e724d147375674535e1fc88bca29d8d2486c1fb6d81886c28072393266d2ea71f787611ebf680d8aacd8e6f7835edbf43c663587fd89ce298ca8267abcdc64a533bcafed9389feff337510b9bd41f438902e0db32e36b281d00bd4d3347e168dbc113369f86f3e1c9c8b5525137f3419216d0871ffb0924abed70983abcd1884380b9bd4de9bcdc90df942e74051842011b07f19455fa74d281981d10c56b6c67edff41ed1177b2bc68d1e8ca0e79126a31978fb104210aab21431bbf6ca5297f8423b814599a2c1b11038fb9deaba0c9484811d8afdeb3b367ba76799fb86f136a282b089a95a792809fdcea7cbc78884d31d9497221ae48473c60c9e05eb73d3c323becb3411c8ed37c9962c51ecedcffe9cf46cd33a763ffd96ed45ccf907874e116fe49e3a013b1eb072d6494e26e6e94c0acd5e3c52fd9e5e91336b8fa6f146c999154a6a706f6bb5794a6a0230aa281db1742b8b1da6623dbcc4fce98bb80f83144d167c5aba7ba0c423c4605efa1e6a912ff814f09d5962066f2d866f23b70f7cda098ab485aeb1476a88276178bb6b61ab71cd4411a0c6adae62a3ca4c6129888c85af8d0de4353873ef9471b82c298e8bd3708658acc6a58f9edda304b464c1584bb68a3f99f1eb24ce38250cc31aef3f591bfad2777309933c216f62b22e00bf949d75f62a4f2476c83a4ce9694279320d1698009397e42e267c4ae3f5187f839169f643f409610d05064bdd74e1939b0bf2498d5ec1220fe8283915f740656729f796a85d58a52781ddf06fceb1ff6b2b28e604b17e16a187a84d25fe5be000ee5bda5000608df9fee854cf33c8a59e9391d1ab4c43e32aac7c62efd38b5633fb4c78c0384f5af668cfa630b66225dcf0d3cedddf9552aa7cf788a5747c45c1c9a4b380d3a7faa0c57e455f891148d38bf90099fa6ba454002961171ba67f7a19abcfd86fdeb122315877da731bb6331e27b835d780e28baa1944fcc847bdab073371f25bb29aaafb35a89fbf4de5c502d07b74906c88b1ec801311f659d941999fe92d17e1a6ee935d93a166247ba864dec97ed03591f0fcd4bc87105b289f452392cac57ef47cf598969a37fc593ec563da9e6c008fe985adb1eb7d1fbd10313e291fcbdde5db1f668286ee61600160cc6b9fdb3586577c1e8b6b322d06292d2929fa42db10395bb987a93fb75849b25becefea787c9667e9e27ffcd14660f34e2381216706eacd3b70885b78c64d4154ea9af2fc6138a60200bd21ac4a3c203be0623a34f7abe32c06331a491b8b8b909e06a2d24bf77304c2c72301566b056ac230dab0700efaa87ec9fe6885a9ee0c7ed8a6936f7ca4e571332532f7d146b5e97b573920b07e6730e90bcb2de097baf5999adce36afcd20b260c4cee2690706e0f3c0f2253b042269cb549ec209461c3a6fd9bb33ebcbaa62627986d9d09066e72e2c9ffe5591b4c9197ee333ff3a7c33edb85107c02239e7dca2652a002f7062e9486f994384afec70786cb9e16b3d765ed15d70161b4084699488cae055c20d037d1a82bd3f0401565e0d26f45bf167e23d8632c336b30156aa15a23c5aa7a5826dca2984d21f70c94dd44b597e84280b44fa2497f8750d68fdc4fdf2bab374d1f947a7a19ea5f808fbb2038bc138a6de247fb4b7dfd92c0429474707869e9a5683c2b8732ee5b566d7c7c63c17e828230196b1b805c9cafc2b5bcc272a9dec6adcf75e714f02a9cfb1f67686d641cb69105d1bbcffed088313aab29b055f173fb08081c7ee51843c69c7eda0723d14fc771c5c87e3e1637d7ec63cac9b20434f40ddd9e7c4377c28d5dd5a781074a158b0a2a1baf3068ecffa53f28cd11031a318f641d524a5e29b2ae6202efc04d70b6dce069efe747452fac01b8ea46f84632c7baaae5e7b6359d1529e7c1db106ec4281805b3a6c32063ebce6976bebd1bea770c62ccffc3e6d68fb8f2a938f61e7aee8c4f3b0b332b7165417be12a10e82e487bc904ba534207f296cd9beb116a00f6ec5eab6489fb894ffc83f53ce8da6beccbdee8361f8f34489c1d757884fdacd0696e765b79fdfdcb0e9e1230575b31e93670d54de716f84458d51e02544a7b14ef8110f8ed6907b1cce9849a2a3ecc256101bebad7f66e7b6d4e8ea6c5c99818f8d0c71378757497d6e04bffa3ca2af0dfec9c0cbbe9a00464784d6410a1391f73e383634632f43226e359e9039431e8155a57db1b596331b8f4f19d6a78ddca94eabcf8e1b3977e37bbc7a2c586ba1420a269f85a0d3f062aa57597b7f853f621fb32581839fbad2d19ff080fa7f36344a074e161c6c06c8be0b1ea7e281e7d12fe9944c5bfa2b22c5870a67a415934a02137ca21488e67b3c338c9ab8d197b3f90b1511e6a73ec70e68b53eea93b3c576a42f8565dc04dc479029a47cfe89e411f467c6a0b83dcaf47ab16d18df7a36b2c8532071b3ccbf7d7129e469346b0a93a8e10860abe250ac880f115fee58ad3ed66c8f8845b46949fed0e0614869cc09047fb016858dab741b3feb0a2c9e94cd3545983ba56329b9298b179c94e45ca08c19e141748c88b4a76de70d2216cf4c4c1266fe5cb89128cc073a51272095405d126972d874245ca77537b76e0ff29366773bbc39725dd8898a41f1a94e95c12ce1a8b896f012fdeb0cd5ff94499ff727b1d7d319d84f2768ef1b789ccde83621effe859a2054c6cf6f74c807ffa8af944673b556f1f75fc1fb490146cc45ed7c0ae44c6603417bfba5671fb72f6cad76ea22f56b661356a38cc2edff4971be0f458110707deb08d72c0e027c99399c7d4176b4c4707a4fad9e79c47c231d21d7a3d81a1bb18e41e22e121571978dd67028abfd681970db29863db8985ff0f522418038e5677a4c48663ced4eb0a6f8a654eb2a1d5f08f77d8e3ce08e183bfae2f2362eee2ccc43216b4aab78c852965e8b10ced68a5e5009f0255fbf4d9479208cda22038439a9ba8767ebd07912b7c3e553345682c05c924fdb4806b35f905a0998125bd6e5a1d1d1e1a980cfb6fe4c5c9eb3805478e1b9c971c49eb268a9682ebcba6ec64d686187e9edacc53658fc979daeee21e6f4f41d6453d0227c947006d5890240cbf7d8c19e69ce24740c1fe3c728f47491d5ef2649dac5618f5eb5d205a0dcbdb350cd90064ead1a3739be4afc1462b1bc8770e1b08af1ca27050973b2cf568b09757795382e546532817bd62aef497f71802a3eff3fefbdefee5c284246b9d5f45579e8c52c4d64c3c9805b3535432dc23d4b41d1d891777c051669bb95b81df907ee3a22fd3cc33518e7d1a310e2c70cc58db86c4da8e58606d839c17ea7b20cd44052013ba025c63f8e116d5ee0ae30abc6dfdb4030b8a072e72f2813304238a1dc9e51ec04ad1b5ef5b61e2520d99346001a84930799c956ac3618feb5a41ef44d6e2682830e40ba1562f7a9dfdf0c36185cdd686c543122d220c407939a4e646a3fce5c62144a5564b2e11554469495ca82165115c9972735cf436a46d8ddb41bbde31d3b4d4936aa3374cab4f1caee881eabb34e85259c7bf89b800bcb12a40c1f7cc28e90a8b9cce92e382130b1d93a546e41fc85f49d4ba1e1bd8eda599706a10f525564de10299662348c62daf77ab8ed2668c9c9228f06fd893cc64f6d3b98e904c9526c369632d3c2a18216ced106d8911ac2a786cac6619c5555f1e1335411688000330aade21195e73004136d75a14fa0c3095a30b90c8559bcf1f2bf15816bc873531b8bba175db1edcea14d32c59d63597def3df896a04666f9cff862740fa2ed11747e998aed6f36ca202e37a5297a11e2cac1848fee92342950aafb64da4ad5b3174275760e1e7f4b080b8dddb9958069f803af2174784fe828227a5f1243368d9f8cbd8c7bd44c4d1e700be498f55cdd2e82b1fe1d0cd5b53b0f04b29efe35c9a244b55266d859c3c0a69f29210757448b1a23e19c0544d8a3e16287eb08c8f7535d9d95b7f504f793f98ea9c3904c994350ebac43cb4931289441be9fe1f721dc9b36aa9dd35d108a0c9aa20d5f17fa428cebcc1e7a468a7b5271d3ebd9a224aaed00a3b58809b3f39dee9f8e1694d2cea61284cd862d40f1197658627b2311e835cef62a10475ffb8325b1f78a4b1366cd7b1eb18c7b0920309f7b995c8fb636931e9f92e9f1082f9c1e14aad0832e26261f493e48efc409fa05d2775919b606e925a4a65c888ea650fc987929d8af9b1d5fabf137c4e5ea57fbe8af4db9344d0185748cc4a0a1f89c4427a0a9d73a665fafe219206b855d4f3b66aa744357fa461b7ceb34a0c12ec07b6b0023b0a3377ac3746aa5641b78e51cd88a74ec441cad125a4ba5baca6e42b085b579565461702f20d9f2be8df2dd42aed5903269e0843ac7e9cb4fb138113cada7b870e2e3200546dc3d939287ea9dd884a0baed323c166061ad035e6803838a5fbed0415d56d1e649ae5f8c6429223d539c387e4eee6533ca63268f7ff4099f8d8aa39e72c62da8ff2e63232abec308a606d4970532cfb05bef2e6a20622b1c2924c833350dd6482b0efb526ac8442bfcd1b8f76f26418773bf1a54c9979917abee5fcfa2ec4544102bc57a292f269f86c8f77913061ddb6172aff8ddd3e455215d96f74c20b340daa3778f7d5951f106990eaeba194ab9ccb8e1f0d29265bbaab90d6459a7e826fb7534374e3017a025a75630bc958623434c5887fe21a6c862dc3c681912e06cdc8fa1ff3faab121e2d98a184dc5d1dbbd9f70626c8456853d72d09ce289523e26526b8f429077f6fe725132eb24e614706b0079926b34626205a1071d8f81b6d9f51961d5a5367b8f69d9f504406e59fc83ea4ec05a0b76f35952fe5e29bd99809f3a3c2fa4070ec53add1b3a61ad2fa86839019782389c517afecade16c69cb082dc7f7fb2532b72c685a2fc3f50984755e608b0510bbf6af81c16ea70fd3611b6aefbe13caada431beadf7e7a7e2484059669159fb88d3a3b73ca2d3c18b4c8da28f4f29545e57223bdd16254696a01bdc8cf5ed747bced12b8b4e696917e1ee8ad2ec0f2189dab4ab9d2ca2c42a8296bf03c016ab77a2415d65c5975c6a8650e37e32ee00534d7c585114891e9b9237e9bbaa558428c41fed85ea00f91cd5fddda9c1561b3f05a63960d7add4b7b04263fca7736e546ae78f2c9b640249181a811e2a50f17e46e1885382a17abab0daa4c1b8f36b1e6b0048c9f3d3c7668a7173a06d8c77c81da05bdf9fddac590aa2c9126e80c1142247b21deee7c53028255a623250309fa893724bc9a01922f9ae550cd4f95859fc56ac0d50b7932281f43595cc25674d8501077b353c74508c661df6e5c377e69bc2da99dd8faae8503e7015960d38a85a54ffedd63c0bef29390c4d646a629d92e053801b9df9a5662c1b8fda6e8ad80e7de430698c00699ad9b31feb97813708b74cde929f9a8fdad05698d77ce730e78afbf0d5e574f4d1d1472886366e59cfb0fcf84751eb81c849dd47d2d7e49011e2ccb2cb0f87099447037fda52f95f18428590cac0ed3404006ae8b11d8bea71c90239a92cac589ee9814584a5c48c44119379a62e1d2cae39a1f8ca8f7ba35cb59c66adba56f4299368a16ef99c225b2a015265a9b4a7c5ff352bee7c76d421e154d6f1f468a5a8217c54f3298295b4ed140cf28d59e250ec019e218df64a3631ac4161ab47936bdf4bc20620505121b3260d7d3f751f32a2fb05b53369273b29f9be314cc6647787a20459bf1a766e0c2f0d4e82c1c5fd14afc9a67fd82cc8459ec611755cfa0cd5328c9547bfb76a5b733a4c51478134582ab148a27d4860f106beb2ad3227924a0f5a59c14caf258f8e56a93130c9032894f1556d73b4f89036fb5ad9ef5be809f97ba8f9bb66d9a5fa87a9dd1e68cb3bca382737af479cdbe9f1ef97ec56cc9446feeb64a7906e5bd4116c58671efec6de647e0ed81c0241141776b0f153b333951a01784a46b599f13d8049adfa8d20e2ac76064296f546277b7f45479731dffdf9709ef09ad3694e14c5bacb879d6b06d4d1760c0c165ee30bac52bfa84641c931f223cccefb15404361b091b7d334754a0d1543ab554112880a0dbd2fa9f5c163a5f0409fe60600ddbfed1e0dd774ac5d7d4ca8dc13281ca7d425dc86011d77ba57c6c9cef7a9c01388b630bbbdcfd97e8ec90d1d75e7c97626ab58c6b06f3be1b3161c1464e5290eeb5218136554760e7e3850451c3a9f1f1fdc10ad22222a5ae54014336511d129b8a7b26321b8e80a4feade16cea7c4ff0a99ff15b1463177b9cbd1ab16722a9f74e9bfa5119d1e808cb61c3df09ab8b39c193ce90fcf65e7f9be8f0ed60449ca43e41e4d7bb94e0330f53c14e9344830fef798cc0103d2d8906bcf95fe8b71dbc15726396f4e041cfea36cff2f8f0014cad0de81d54a12f9b0f8a086d012caa4a5cc40574354b9889acde283b44f53985901070b295fb2830f6567fc4a58d01ae7d3bf9d69ec229cc3716ff7c0083fe725da1e3afa2df317e17c53758128f05b473813e3d35a58f6c270fb8d671975a5b94b400ed58426981d427fd15f449f3d725c0d5806da14c200f57f6766a4e6f8cbf5af6d7800ec73c3e36af5d7c429f8a32b2d1025f5bfa9e08efa573188de889b757693c76d82dec1a89192848f35f6fc766abfec4e65939bd85ce6c8956bff26109e924eadb4874e234546359b007f09fd30506a2524cb3bfec5fd75a1ca7c37f582bf42a437b9432f5b246727245b9d409eda665b8cbd948b1fe6711ed6cc48b4f56638ed6f3c5f623c6102f0f5d23a08e4bd84ca7637bfdc914453dbf9100cc5208d035bee0b8263df777ca907046b123e2f9c12f378db3532a118822b308f9e33196ae17441db146b362bcec4b3f91f98f321625e365ab3bb4b71b968e6415939a14863548f986c34f5c8444306ab2594aa4068f511cb814ead06a40bc0b03643232336732d6ab29154d1138573d06a4b4e231a43153a2d09ab3ada72d0ea23260e862435a52a00a51e42f21814d59380e061a3bad5233c3f0e58ea7997303e09075030bbfcdb04c497254a332abf0ee5699064124b391da0a0f53fa1fa3087b36da73e0c634f9f1c18589fbd6f63c28de304c5f8dd8021f9a7b0f534190b3da2f28a452f467105f809468af8484ab7cb5a1722cb87eef4e7817ad92e100519793ab342256b5654d95b866c6f814d3a6921d65abdfd5f477edd5210826e991bdbd33b5ded853723890761535bbc83ca22cd42bf4f59403bd7485ca32b99afa38fa57970f529a817e1248a102e0790dadf4f83ef7c07c27a81ba629dddf3f2e33f21470802a16b0e1d26fdf2e3f7b3fd0483a7bdeb322a3d0bbe3b3888f4e213d9470d1c080e8814b0be9bfee6753540642587b5d56e1dde65d1362904924f030803bf99c0fb7b3a65262e6081827de7bb820b7491bdcbbd796fd77cd187c113836548e830f6c71fddf1dcc857c1cd098ae9f583d87fb83682610c93d5724f8294d962edc0d2ce5a6f8926bea8ec1dba8c81b8a15e1a86bf66893ea9034eec221320972ab30a8f3c09d172201b9dbcbb2fda179fbcdff55ca4c950f883e6d10e9166e86892974835ca3799cfaa3f80e9ce25868176c24dce8cdd4bfc25d98ce3a09b5fade58f7237b7463487a057087af51080dbc258107e5f0a96d4f9791002d79dce61d44ad9a05ab3a82934a85e2bea7af5a4dc14a48cb4a5219f894dedb70ad59cf0da060c4dd9e0744cb15f70a3157aa1717fe63ba60bf830e2a626cb2498b0012821ca1b8fb7068a33ea452992ff3eabe2e673b24856559bbe48b7bb47b7e110aca743ec51bc02af1a5c27c33c400915a4456cad106f9979072a3c7df7e76b728ebca9748b8753f456582ded9b47e37d0ff0174ac2f06ff9a188e7970e827bbaf42045532ec934b7eb21fd6ce1d370f247cb56d233ba845fcef76d6ed0ca1f5d2bb0c098b525c706fb89480aaf2017eb32b43608eee1d7f2ec44e97e0a512c0518a563f9b29fe7eee1e6b7701b9514ed9588e51235ed5086bd362f0bb51cad41eff26744e173f2702af647f1aa796bcf8b698a8185e5f689f0c334946f8f611c46a541f813627325fadbcf363ef87cbe749594f359eacec96c69d9621cc773ee9fe2f3d0229c405e1a24ded3a2c7d3fc752e8214e2c8cd476f1e95c144ce191221d9bf1eec6d40de53b8fd1b3845657807ddb9fac09d659b2686f45b6cc7e8b2c65d9330e42121aab1032ad2fa26d3870738bfcba0e1387bfbc4b9ec407bfb9f178580670db299fe6fdffe28bb720b820440f6dd8b6c5bab69146b887b70eb421c4364c989ee5d99b607a3547d7adfbdccd3d2c9fde16ca1685fbc5c342e6328ad38c984e31582f3baf8cebfc1a8a983e989afbdc1bc9f5aafd3921e0dd8a69f7a5e511e1a7e3a7582f3f6814f6bb9b1527d96ec3d218d405d1f0f8b4c1fb9450fd7d36cf8b8ccbade71b77b360d3785e92b272424e49bb76bcc0c1e39ca02bc5f649f6c8d450bef175e7d63664cb9b9021f39757ef6cfc20b9f1e54df1985a73dc4690d2505efa33bf6270cc6fce5e96c59b88118aa3003c35bd7de01bd2bc48611f8873a6bed797e603a4f835b7c42a8f9a3aff08f480dbb37feae562197ab9b1068e51d602f073685a33c75204ee14edf9ee860d6c2fb724e98f65f26b80e1edf76c702e18fe18144c002f9d9c0250da4141990870b0cae403228a08694c0811e909c0c1013b8480219ed569a51fa2de49dceec7adfa3ac5fb4f0783ad42f5e26a1c7b6111d60d5e8dcdef4d3731bdbeadd9db0697e739a32c43fa850eb23c581db5ba01f316253031b72bd7f6673c16ddc62326f49001f615cb1365c180128dae98d4ff539db523aeff9236cbf501a2e8a08bc2e628799b178ef18137c1c6dc777ef65145112b2205bcad1f69bb7cab10dbd30615d4d1fe31d21564f88867bc7d1a38a4f2485bbb56ff35b2f2db8f9b20cc20048db1463622bf706ee5c393e36e86b62d1e80c13fd67a2b4fd950f4e0c5766dfa31a580f8b7798afef76a0e52eeff15f7de5fcfb341b165525599a71b918ca346d2f378f3c3b6bcbb6e96c7220defe472ce1b7cab4e111169b615814df1922182670daa5b111f6560bf60004d8c9769c6846006f9c86dd6cbc07eb26cef80815c6de64e0a50dff45c39b6382fb4d440b11a4b159f510b1058f21ded1403791063944a1ef8f5d477a1ee255f6e20059a7fb846c2f89fb808c53cf5f0b5848fd84171fa5a566df91ae24ec3b7e97f9bf7393d002a3239e7e07efcfede2aab1a084efb6c6f58e474d782fc24d9d9a8ef51f449d5678a30e049c4fc7c513cffd423187a9d9bf04729803e04ff4c708dc1fd5c4985b9210168b7c5375a2ca568e4564cd46d8add51cdeb0089ee2c22b0422ad10b3d454cd4960c27bd710272cb64d7c5b7535e8eefab87c5e45105e0e1eaf6541dd03700074291fb6acc75edd12789c9dcd63ff68c3658c8a99c2704bee67327468e56c367f51a8ec8957a060b84f949be78ad3a29de688ec8fb81de89f8cb113e26f40b52853536611cdca5a7207ffc5f0dcef181915a2dc56a4d0808d195ecee451f264048a081992025d2040b61e143b9b9af2d4ecf23783d09484bf6e6ca0f82ccbb7c946cb829ea587a751437ff6e2c9a95d358d3bf4a8f223be49c118eb5626f8050afe9df553eab2d25322b14a4c7cd89c47c01483d59015e6adb995daf183f64de78f91c63d9eaa401677615abf432d06a625f8a75660ad3d29f951697865787b269d3ca9417e198353f0fc92be7d709c46af5953b467d1efb670bbb053c0c24e52276c90b6493c48989ef0e6473581b122f1923cd53cc12b86228e6b22ece3790e9a5a377bf5fcd3f9dec394736fe9032416ee0d8501e7a11ca7d03e40338478de1cdbba14a6347549160a5f218b9e4b391cca5181dde26ed0835e81bad351abf9444c6a138d1e952f05d188f1b6837117cf8ab1d96aeb409adbcebd9f3499b162edfe261351c7c9d137d4cb719cd71210e78a9d49d07c9480f04e52334be64adedc3dda0138fb7e1b4e4983b80f464e0350a0bb6603e8708cfea9fb7638c99e6f656ae718d8e44cc60998a664f31bf19f65f1c7dd5520f869e6d2344e54dbcb13e3d20466fa6afa0331cfe4db5a55cd1b2e58792fde37efd951f96443feb7e28a02e674543ad117f2490ee82a34c90539d3ee864e6ff53cf821a938ee24c32c43b9a6b3985f920a2a31f2e9ae5cd56cd2b74d01ab8784a08a9b737a622a77314890625f8e38e7939a075ce387785e5b805f7e80ced01567d191fd8ea73a9b9c335abeac351305e7be4add24e80d73ee6fdd555447badc9b89b36a6a30b4f38adf881aabbf3cd9a418fa09421e2b26ff3c9f380ed9c5ae3f3117c999010c59018c8b02b44c5f616d73414250503c4fcd710b30bd2eab0352ddcc26417aa1941b3c252fcb29d88eff4f3de5de4476c3784ff5207f03cfdce586301014700e2c2593fad157e461d71fd4c1f936839a5f1f3e3a6a0da05ca59913bc38a8630590f2627cb6604cff828a6e3f579ca6c59ace013d1d3719f5b0b12c7105c073c507445948f12b746dcf32e843354583c9702cc02063f78c98723ddc9073523ef3beefda0c4d7fefc408aac59dbfe80a72ac8e3ce59e94c040f5e73d9b7addd6cb603d15d3f27bbb460270642b5bcaf032ea04d56a3a3a4451d0515452cc523078b453209a991915ae47e17a14de24068195438b6ce7fba9f1d24d621096d40968226c787aa52cab436e861bf0f96184f068e388b5f8142236583849f3c7b4368dedb5a0f7c6106a238dc00e52a6875748afbc9af2d71a884fd766a541b89fdf398c30e28e791507a6121f51012de6b294d626e80b2e11a40951cb8168aed6b7babdd7d9df7c1bea3aa7a234edf1de5f956479e17ffd15bbc885e8f6f0277f1911ea2d81999711f80dd640beb40c65c281764968c2251c9371de33989070ea019b2ba1869b841643c17e29e0a6f3219b1556e79eaf03123735310fcdd785692bbc89d897b2d21cf9905a3fd7df37218996d44646f50e17fa7348cc45e65fe7a0ab43d2d15d72125d860d7a3c3d66a534acd2b64fc9831db19ed79463971e515d2342920ca19c17c14b79dd82df7eda7d4f9b0e0ab4e31268ac5b62d198642a96e55e171020391e53f0e281a7e0b6ee4451b21240b32d18a9264fce524d92586aa78ea899c2571341a47eb0b77b5027aad87ddaf5d0f21e345065c05fc9a652bb13cbaec440c21890a6ea994cd4eb0ec90f3cf2369ace13800a11c3ad5379b141196050bef6b01f670874028bdc2dc16747b3a6fe5e5a1952a029356fb02434869fc2ebfe4b4814db19ee90f2591d909e7f688965d639105f29b0b41dc3fb4c9732a7a8d523f619b2ba595db135963dac5b1fba77e9c4142862e17d275eab9756494cfb92879d100d9d68c9d8c9abf2f00e7af8b7a5951a3e17ba3a7aa1bc5b5a722e2d93844415cb45fb2ec81acaafae8e8b8a429d0311450992b1a6f7dcb24ae478aa9dfb381b04a141c1eb927df56e832d55b12fc71503b46767897564c4589c577727266c11d2eca5d8db886d6df4c625f20b3de01bdb23eb461607be8ac3381e28a3fd4c1649b655d2116cfe6e9c604b534f31d7110e8aefb64f1397b16067458518828b1ca5a1bff8720fac271ab96a37ad01d6161e4e9960c27256b9e160552c24ce44129516c2cd031e57f535cebb136de33a1dabab010b0318ac2a2bd82f768a4f62175689346f02e0bcbb5513f3c46e0cb51289a8edb1d0ccc792ef1eb8d44a7aee1d07ba578e400ad3dbf24b93106ffbf11706c8df7100d5a87cf56f0fda58fc2713d60c66e933bba7fabb4cb2298e60a61e11d7848729fc5295c9a38e540b1a85180eacd0d2bac9a8aa0783d8766fae9d13e3ac1a1e5edcdadda5d1c057b2b0621f4f8a484b4bb0487e51419aac8ec01b19d9a1d3d5d5596dcbdacde156a53316147b81dc77117b573ce2d7e7abeac211102acf6059825ef2c63626a6acaa04b619bba580476818f56bc551eb56559d911496840006ed792a23d1a722dfdd7d7410560734a3e18fddd1810cd13196fc531a456cf6e81a73e4a7343da7f444fd0f159e56f853e2281d535d97525d6a97d91062578db903db61eb2ef2509510bff51ae845a4c7cf484ebc585bdadda6659115206b836cd9d37163ade2e1171f1e4111cd119fad28861c9f480403f364639b1b0bdb18be536bb0e5069d358f1de91516a21547cb0f89f3ea6b4a9172e420ab1137bc71784cdbb84446aa1b846d01451c5f63c1c6d615c70305554903be9a9d1619e9cd6b45de383637770769fec1411646a263c1565858720e97b1f21cce67abd1811c01df7913f571128e2817a5ec5541ce16347f61dc90c10ed886126e4756357d24206502c7e768e48ca41d253978f7301d80ea016cb9201dd7b61784fa2cf9f3b099bb3423614d17acf81239f74728534e5c5f54386815f2ac5a1e2e2cd3b9750b7d7f436053445b8a48185823dcc7f7d53099cf19a9367c3b6d1326d2f9728c89b48eb28f0ef1f92b151fb8412e8fa3072a7228a60bf4c7bcdd18fa9abea54f39bbc1861ed65c0697e413f6f7300919c25e9cd730f0fad624d41ff85f5a071468e549798d262fdf83761960e6e1051020516ec70a52bfe5cf5e141a8581d10c80daf1056f0e9984d94b10f5d468821400c44fd6e4e3f4a0f5121a2b77ed01aa9969d911b71cf7b3f7db14bcc58a018814eead7492b0c55cf9af102c09de68a6ed7c4954ea806f9428b31a24d4e453b857ca3a10559abf76205c1583761d4360793b6273aaaeff5e8016119ebdc8d166f52b9db810b132cb33571b7f646d4152c4bc7d600df48ea25cdf15ccb68a67db69fdcae63dc3d84e7d7f11df8a7772c50f2fabd72f058ee42eff1b80d5925b0473f288ac8c6a3e1dbf651666444249d028f5d3563d55984affea11a3a003424d4188b95795bbf31032ab1ce9e60268d7cd39617977fcc2405bef1654520220797161e72df9c968cd15591286509d998eb568a57c5b767415565b1dd2a64ae13e912051fd15c5f6dd447c170e1fa21aff404da7ca443792b1d0c9124acb69f764ceae0b116e58504fb40f1e3b3ceec550d88b3ca7f179733f900c18c9c9f137da7909ca85f4c7c232403d13db42e9bff6c2a8a96fba0c9eb766c81ee39bbacc2bcf53212695707e2c52a018824995708972a91ab8dd2665f074b3139d75881a0f8475f78c2f3e08e787851f175ea07b7236915f0a269806ec9f3719dfe419965bf84019d5844605f07f2c144cea47abafc600e1103705d18c99231047dda467cee724d5b4478fd21906b1cc9dd6e952d81fb7ddc39f72a81438270a4b45eedb79192c7e6919c2861059d8a911a2e35f298f46300f8f36711a7a13bba7811cb3baa56bf3d8d85e27152fa995ec9ae3286251898fade04bec101775efe0f7380e9de80e4caf9aac131b792a591a932dd8b05372d625e256a9152e5547480fbe798ddcc1deb7814554117cbb0bda7e968f15949c978ccf08ba1b972fd614ff11a67776b0dfd6726d2e16798cde43ffa751f991f3b278f5bdbe118eadfdd2fe3f1cc21cecb75a2263641cd88a64423233b00117f05f15b5b5b6839b8ec25901ac59e6dd90c42b12a303395f1704f6ceacc2a3fc1ad4121d839c2d4cac695e72bd9b1cca484342179ce38ad6895418f5fde2160807699b12c605abbd0f548dee2f6bf10cd874c51d056b22fe7276d7be8c22c170462ad11704bc4ecb28c512ffd64e678d6bbb0d13a0f97d78743b51cb247ed87b125f7c1e4d61fef929c90d09b731adfc417f63180a81cb9421d4d7a0c52724ca34cc821377ce7854cfb9bf676f0c6d4321ad371ff9712ddda594cc1f59708acf4d57f918c7f4bd7d51ddd67f7af3a13f3eacfa130bee2fc9e82ebeffc3b89c32fd79f71fd624f3a020bf316636fa16c2fdc79219781d5c1a1acc27b85efbab01cb6c751460e47c7bae09539318c9bc67a2f05d1099a094c5b042eb1ef474943f6ae72f1ae1e67604270289e55c2add32881ff314e7eb2b9d85cea0b7b0eeb028a07fc210d8dfdf616f4a0159b44a4e7433ccd01aad4ce6e725d5cde029a23e908fd67315f1d651865177714deeb4cbd972782911e857e9d6e8bee87bb054ac8f848d751b201321df5332bafc59dd890c6aa4f7158042e7184328c863ae4a6e70eee99211666ad827380d0d0617114a1a17431e1ceb21adec2ca43d6b12746e7b129c7e16564e57bdf01cfe88db5c58fc41e3fe11234a2562b49496415f618d603605cb1ce9d41de829aaab677fe73d4df8d0081787dd1720bb2156b932b964d7f9736d12a5958c662b6923c2eac13af2c2ec7b1d1dded61e89ba82cebb34625b025796171818df4b076235a5fcf6b4e201acde1259f36479d89c883b94f187373613311ee1f583c7464a6dfcdc5a06c6914227181a2b03069f6e573017af9ed1a79b521390ded13ccb7d251a2518311ca692ea1e40e5a7303cfe1d48b7795ae384a8bb18005186c0c9314bd3c5c7ae829d53c913cdb4a3cd42e9115209a617d1c885a81fa4901c3e0221db7407b8df403a9e5319500d4acb01b415f705601967fbe44214a70a08099b29def837b37a52fc833510d7dd0ca89142308e59b82ab79339ef19134b0a200e028d3ee1f9eef84261bf140f3c08803e9b3d65e7c758fa9b1a9910e42c0d0064f8c86ea50c8e90f9908e1aea23a499e9f9d38bb7a3714061da3e15bb1c50e1ba94a93cf982f4991a15ff102b61b39bc4ba75c78ed120c35dbb311b891a29166a95c4d20b0ee768b162c115a17bba118877d0db6f3e1f87278267119b925d1c40bf802ce663983e3fd0d81b4975e44933cc33bd51b64665ff0c4716d45d506e8fd68fcaa75e0551cc70d21153c9b3e34b571944d9fd6e4eade7831ca93af68209794703e19725a58aeccf16bafbc468d4606ccf807984ea6ef03f122af9070e87347ae59af5d3104b1a331d2294390b6c902e51e22a43da08155c17b5a9c7d5bca68bda8155cfe1d310b012870fd9222e71df909c55e5025381e61d6c0c144f8b5a4cda16de1dcfa89aeb178aa3a9a5a27ba3ae787eb1a520e22213a905a9a26a5fd27d2797b5a29a369e1e54d12082887fdb971facf74e15927e1877a780ce06667c794c23c6d8dd749813f10b01e40a702d8fad6ba32796545a1f5ad60050a259240cbeefb51f7810151915459ad981141d70fef2f7b2f9d91014776a7b149b4317c0fe5bc6282e7b0d10f24392edc405f2ccca2c0a0e7d2baf19c29c0ebed0375b0a6fbda171ca228c14cee33ecb73f948088c97b427d51b7010b09f6478ec5b0edaac25540c55f94c1ac07f5060f0af3e7bbdb7a9d610610a1533664080f3bfcb95972ceede731ad5105270cd665266acef5847b064b990ee1adb59a4b80e852326476cf3b6faa68b1549aeb693d8d0821e6c23295f95853c1175b08a1ff41a9efdac38a8feee08941bf759d5b229afb197bd938698250710162c7b77f5ba258eac97dc9e131e6ca61113c558222b097d7abf2dfeb8c9793d1c766aad4eefa0fd61cc57cb60a1949716c5eebd0b591afee7091309e74ddd12123ab1fc455b5d63a6dc840ed8affbea1cc88d306baf4a1c85b0d03e13f3622217d4d726bcf26ee3d026dacb75c2e88112868ca4c6ea179fb4d72946899da79c1d6b705005efdf182a46ee04a11786b01789f3d99d25b3e0546b8b9d4d799ef3127452f6626febcd8778452f7c2897521e5da85e82bf220bd3c66abfc986124218e4b94b68cc1b3c0f9f88ff3ad20e68136d2979407a2c601898da989183e40c1f24219433c856b34613e2130e361dd718b64d4329a0788f38dcb4dca4914adf138aaf6ba866277f5a602161a182aacb1fa2bfefb9eb8532154db44db49bbb6f194e998c6189d18eaa3d90a4f6e26259140ce1d61aa1a7d8eecad9b62b4f824710459b245e9b72277e11f68adfb1030c1a04491d1849f585fe0df83b195b69d614d0a04a13d45d9ecba4f92f147c87ab104d01115253c963df3a5ce6b9f90bac1a7167da740fa11c192fb01efbfa6f5615c152482ad980b0ad25c04b2f2ff3111134510daa8e34e71509cd12b27eeb4f1bc40d71ee3e5d1fab6d0a0f283289d9159da48d8b651719bc57080c2028d47a11943a7c123cf2f42c590de0ccd9b9f71b439596dbfcf4c3f0e03db370e1c75f1603111216975d365a1acbf5268139e61104e81cf024fc569090de220b358fa31cd0ece38c1d30dfd9a64b82a25d3fe916da23833db1597fe1eba2ce4eb13254125c39382fb5c2cb6879d17de44e84531de32d60bf5d35d65394a70376171c8be665b12a78a976ecb6a68ecfc412fa44d76fb5aa260ff1138bd77db2071e626adfbf2a22523f27436fac642806184e887f99884edb651f9cf289502038134a0dcc28744ac56f6593ea0fb433c01e3ba40987f6a16a59840f2273f6c2991896b6076cf8e7eead36d9b4f59135ae1356570ce0f33f7e4924f5ba2283227d1f45acd64cf6ff64d4e99095e868e83019d189783df8ff8343ee7344ed5320271474a19397c6cc9ccff18f03f10f4d1f105202b925a447617f1cb305e87faecb190f35c7b7e9d24dcc165cd1ecfff1a214d990d25f210f0b3d12b0da23335b8210c1e75099684bab6150b32a06852b6a1a67b94014baa2224e405c556b6abc2115539400dd94e84e0bcd4944bceec9e71051ed00c887da171248a9d3c64a760c1bdabd00a06c4846db6c87dc6bd591a315af64cd4cbd0605498a9fe3efdda74f11b13ae27ac80a08a843ff38e62fa6b21bf42ee8fb39a2395369ff931ef38428165df2ec2ffbb4c77587ff0fb2f503ba112eea47e69121d9223fff7fb622d35c1cf254068541817ab565ffff91e8a8b016f5433837010162c4b73233db86ed2612ee9ff3f10168363a5984eb91a4150b1d8b19f6279bb95efbe069bc7450113c17d67a5e86e2fa7e2fe787635d407496125691fdd6d0f797e571d93862cd86bd1dabdaca780d937984c17a2de83dd2ca1756156f2d714261d09ac88a8631a80813222218af4e6a684d91daaa3d4f40741ee8b479f23e8853a4daae88643f005d18875d6128ff6cdce9ae586d50cc997d13a495680d65ae60a9e48d481a7a5c2f1f8344ed3db7beb3ba8371a0ae61b0f218369d8a312c32f62e36c1e6bee759f513f0617782131dbde4899bd7973ff6ee1f5a4e2c35a97dca83a1afdfdf32f88b1915a556f720fea19ce7f2b24cc2f96f14aa1d12f9b3311b4ab9288f709b945910dd95b6c1ecb55e43f50de580c5ed281a4ade5e01575ee535c4a41d67048bed14d5b11801ac7eb7c4691d7e52d008be1022b65a9b799725a10f2f30b7b3a7c91a815e154961acb74dd958f3f8c21f6e159b4b44078123c6d7ade0f59335e624112bacd33e9b053d5949345686223d6e1bbc89dccb159efde06dc3110582caf11563a1e36f1118feb3246941379b3b8e11d19bd27fb559638607753525c5c5161c0ee30e339114e9d1d290f750379e78160b1c3f8fda76ba74750dc6402c18fa1178c631e59024f7edbb48a367e059c31c2d055bb7401d2c8bc9d3b51f4dae021724047c5fcd7d566fd40f2be6708b6812066dc69848c9f07eedb2113d4e12741d9fbd9ee006a1c09857c2a7fda40e9017e6ca4b4dd2800047799becca50a5d912a24479481dce00d88ec5ad448108291e82d02d6d17d833133fd1579d9ad32018cea624247946f6a865a7ac4a15764d137da43aa08e3dbd746fa57a778856e21e645095e63e31645d8cb7fbc50612b518b7a6aaebcb8db64a702c96d16b0ec41357a4aa12131624111a47f0e81217a01fdfe9ee0edc4483da146cf35342df4c198021bfd87c9d02e243232943687f3d143381327afd7d684e361c323110b8ce509095c9404abdc6b94b2951e819c60ba7a677d4330831d2c76f87dab9146b09ec1ec67629a08d0ed3bfd2ae9410dfdbac64a35742004917b8ff1d7e871a19e323eab5df01cda0126099b1313915aeb51c88914cce704d75e6ad278efa10e25594a6b5ade31aafbb70490c7d2a1be8774385c457e97bf2628d073d97bb1587f935046a7987c98eb50a0664df621171c2bc06108fa575e48877d66c65d11b2735ca6ba6a5b7f7e9d392abf01d41161fc4a1bc1e1ec65fee0f0f568db1cd1165d302a3ff16b3b189484f7c1c51dc9b4d501ce932df288ed406d9c9160e7d497173e3208fb220d87605143b127c2e0f8285059b7eeacd59f13b532b1dcabea5019e37afcbeed747f42fdc5517a19884344bf95809bfac6cc38c16ab1200101419401f88136a1880841ed01284d71765cd1d205fa0e87648a2941a40e59c30901ec4bc163426f56b1c11a0d8855734c84e676dc11b3d9160e458408cb5781daf1550efe2d6e41a92d54d06cff010f64ae1c7022d20b49dd97943781a949002282c2a8bb9340332b7f4ad14e70184fee471d919881f2fe727aa7c21d7e6fae03180d4dbe98ca039593ea0c95224b00888ef8d1f04beb3166e05b5b5b81385ad609cc94622e3a618e6d878037cd8ea9bd01e8f872b824dc7e27369b6e22079cff91280dad003641b695743b8178862821eb1a1162ad3ce12b42afb22661d4a9cf4878261f5b9abbfa45cc3f12963a05c3954cbf7e6191a37fa5dc8b34729beb560a0e0c478f5baa099b32de378c818f6d6b24074044090fc8d4b7dcf59c6ef50910550b47b719e5c43f0b76ba4f50664a1da0dc63354eca5061c0080865984dea4a8c85ba0b4b32784110020e86f2516ced2ba72c8a1a031e5e2cbae9b8187698f3aca087e5e1b00596d3f4d01b1f4a199647ec50e1b1140af488fa041dd710ac0fddd76d2611510db1ab30892540e0d307d951447ba1aeac8f06f45dbf428083e6edd6c6cb41024fbeccb161232338acdc9148887e114ed39e87e9c96febfec40fc196ae9191a342451cf211efff793a83d50e2315010416d2543aae5fef5b8124de45a3e641492c8eed3149f7e336757609df14d7d19b67aea08da465e00416db8046ea1dc1fb28c924548ec3aa04844f3c2e4e4e913de2ff7565aa749c85a15b0f31d5ee418d6fbb4ec30115c7ab11a9c70a5751d1f651df193be8a79ecae90616687697213efbd28c7c9e87d511172f88fe3c4621eb576791c7eb1eed24a47fb390ebbfd1262d497a3dd5daa871d197ac8d129bd177bc97d0c55f594e9649f983a4674ac1ded9dce275519fd119f639fe4abc88b126845c271aa5f7cd6863cc7ddd6ba2e17c2d6320e95771b8ca80b39958c69fa1c39c6df28bd2a915749a743ddf7811c12c8b717736c7575ad1b9194d475a2a316baa5dd8fc7d2d29862b5b949138b4c1c9487eab9bcc3839f5d11140eecd6af11792965e8abb46407b5159911a7cc1b16d7737ee2d6e13d49225bffd5d0bfa21b66088f4d26adc66df598bf85e2b7451180caf2e06f5838c9327f2f27db259715207d2fd98b6e867bff5efbf051effc1a34aebd67170534ad5f1b9d369315de10c119ad415d06819837624404f89a151532601892f447a17ec57a5505b6015b1a1f3c4fdbf8cc246fbb6c55c311e17810270b23123700ee4aeac72a3456199714f0cdabd64480a9dde47935c1abdfbc19b6602b062bf0890a2f6cc158cb0b1610e438b6c7356c2ccd3ac7f12ebe8e1b141dc7a339438777800939aeba6d722219e4b80c08146995e04bc75929090f6b1f8ef30785ac615d6c8f1cd8b965e9a21372f049a617ba7447b3234e28bfa38b188f6cdc8f9de85119a0ac61f2ae8cae1ed9c3e9796231d30fe40b7d57ed172d13cf346418bbfdc713dd4e5cade85df81703427dde29fdb9589462b3d86275f61d42490e2b3a3e74b79c1d70c75d09ba1292dbd1b5c84d51e503254c39b58b6817775246e33aa1a5de442e9f87a2ae421d8af30bcec484270beb7cc39425ad49126df08e01f665f1cd255cf4f96e18dc1688acf28173bf6d412f7371b88a1e931cd5ab3731a897e488fde746b316f3db11ca96853d92bd1debfca11860dcef52167dfce6ccf62ce5257cca1e78d3abe71bce5d10401a3caf978d3e132b64cb7011427514d0200b9bfd300ed8353dfecc1592921904e9cd013dbd114e83cc3d401b9bfb8fa2b120214616cb10d29f26081182fa330bde68a9d7dbfd94c647304a1523f9008e15c393cd523d3ab859bc9c1ab69bc078ed597cc053662413b8f5a110a3c2f0d668709bb0e87fed172673ca144cf3ac0c834cc2dce2dfe89def0ffd190f18ece7d16ff9c9ed8bb1c2f5293e10131ee761c6cb773ce9ee5d3373b44d1498e560fab7be958ba36a350090216119fe1ef9f8652e7b6e4cc54200f469b91f5fb39bbbfffc0cc54fbb298038e2d31337a082aa3f3c50b6232a34a0c6dac818444823954f4be4a3ac3441487811fb1e2b0d36bd11af6ee6ebc0282debea5c137590832cd65a0ae026f172f8a52534189374a4b78bf10c9870ad8f760f2f411edcc8c652f716085f66cc19aa69bde812137b7827b51ccaf67f3fa014c4eca217d7995671e2a37cf45f4fc819f5a78b1d2620d6866de6cdf89b311d30f948771230a88be8086001f7027e247c371b15173c92ae220bb8c1b4839d2d5b0562da1c651badf50613f9507282fc58437d08123f6218b3c85737e50ea33b2f949c8a16cf7adedfba2d859ed28b0a3bb9432d1cc10cebcb943c13a36397e6c4534a9c11f1cfe5feb90b3d20b6e85c0316ee439f7ea80eceae8b4ca8e32234841b758a234f29c9404dd72f49ce95a03211126deca273fb9020cd7bdb41bb487f155688a78b503ab568c05a5212ea1adf1a36b5485772447141b878734bd270cb1083e21aed8e95cd51e65650de064dfe14249b61a8f2fa40e69f6ce49548e03d1af7003da9d79ce8efe3c3ae5d2dac661034418c930dc4e2ebdc741ab53857801481516ff81075db26141261e2066da019f192459b2a2949984cab7c4d24440410adf7164275735bbe1fd6db602d55051498b59c925250f2ada7cb12b978aa0619ffe2433767e46e99917e57e71655481fdf6d8a82c04ee5ff1aaf96502e358d1357092da370a2debfe15abce479827018ad4bf8cb0c4bd62f9a71eb5d18a38c1e4c2f7bffe7eee55d0027b33aefe517131ffb59ffa16a5f75c0f05f096bdfdd17e779307f4a45b792f0ecb7cb4557d51d304c7e8f4e8bb25b16f4529f8b56a5123cdf5d33222e9ff21bb127872eac4e170b5735c0aaf946ef629df1283a57221d675621b80a5c8cd55d0297598476351201ac29660d73ef4af5c2fc6f25d4c2160117b4bfd04fab9db2f3fbcb2e89731c608ed077e2118ba24f787d3fbd35c811f9b1c4155bd62d8b63d65c8f2c433a1677de35dbf14bf96dfc0b34b3f7d3c81b0aab012977cfbbc47d8700d07a845d11cd1542f354c3ea355da9008499e5b415409b12302a746583b4d300e5ff1e221b08a10b5e9a681fd2508420ef5f53f5104a898ef5c042a70665a5e8ea37a832159d2bf23271135148becea2e545527f1a425bd7bf26ac32ed36c185af6b938f101232cd6f30577fa88431679b4678b314977ec08bfc2c9fd2e5fd40425856e0191e4f58d71d7ca3a3af9e6829f7352c10e6622e4d255b8c8c5bc6c2f3744337149ffb79a0ee71af6ff277b33052144519877a98486a4e9b0bef55e0bc6659961f944c5f6d02114167b5350c36e0f7bd13ba1fb708435511c122438f43d875ad18a8e7e4ca93aa5571eb1373544ed3d81ec910cf5e9c8ad52673ecc7f410844713fbd4827643ed8af08fe7f931156519183a8a235494a8adec7361787e5abe1f1e643696b45c89ec73e83c0b8ff8d6d312fdc3bbe1b3abe790220cceb2b6cc8817fdb42adaa09621352b8f815fe4ff6a1d1eb15a8824fe34017bf9b0bbeedf6212655d71aaad3d82c1d9379d6aea97fb16bfb40d1519cde231d0854405e57dba1cf79028ad2fc02d1fa2d34a23af8ef41135b572983b30f9a68a881dec5ab2711682628f7e4a7cb750adea24a7f11e0e1c919d198faead7252ac12770857d38811f604e0321a590f6757d794ca2c08eb15330698bf602fd3402d0d3afd37ca651be003bf779cfd83483c4844fe629e1f11d8c4ae9503fda45a4b5ad5bdfb8567150e761a7b443c4e31deb04aad7a67c11ac989f0ccaae5d0de8aae4eacace0b8103bac2c80151f85962d5a62d7d718e7144ad737e0da6626fcb8f03acd0ddf201a8ee622cc4800989d73d644a0688b541032a02bff5a00fe84100c56c842ae69143e88f6be71803da6148f6b7ad31984194e2ab42e8ee0cccfd97206594820e51f709a30dd580ce021c807a4372d34ef130dc17c146f0f582aba098d853801eb1850f19bd94a13eeb4284cf0a686c1251fd27601c80ecc1471992f5628f498771386d4017a12ff59cd7fbb6b32317f5518a8498218d77eb0c05faa067ffdde6a1e096e516f464f6ed87b2a646f5ecb02138bc9250b18e389ce1a353d0b367ec317ee3bef0dde5b2c8261820c8ec35db41d7585b5c86ab95bf17cd1c7389aba9012d2e6e27ac5a7b22ddcc5f9c640e9341786a09bd9b6511f395337b8f89023021d544401481293b3039422739b3a562112699501dad677a00439eb4f42c9aba916c3fa8190cc95c84507e6e392bb16541cba3c51da9f5d9d8bc46fce3b358eb411e88be5d007b584aeb50bc28ac2b12116e3ee1ec549e2251aa38e722d331eaa1b4d55331b6ead57f0259967fcdf524a11a12a00a2c9986d6c6f7f81fb97e79c154935800afcfe88474bdf61fa7d21041b4e2190865d9fb50c8f2b7dbcee94e210a12934e83407e3cf72769c6b2a3a1b150a34412202c9db830f948306b508621a86c06855a15d69b2893c122471457d10a7f0c2aa09b5031faccb166dcd969c14d1ac73154ca2c426977e5cc880bcc319034c688d6fe53a781ecf397dd0551a10035fc270cb9e4916e642889c44eb2014c4f6f24c7e06dc9b9f53aac31526291976b42fe01d08d38287e894349b6f731fc9d01dac12e5c3b15411dd00c125a813fc44255757de34dea9551441312f92183b96ee2ced15c255146b5991fdbab61ee51d153cb44d99b5ece2d77ade3432135e651a4b21a1ffe2a7db8d1916c2fe17b6fee09d6989bfdb9152f19f9b72fe1d319fac02e2b557299bd3f643a107bf12fec657835aa3adf38188f49489c96e17bdb82d24310c9970a2aa31faeb7b4a1d76939cb69ea75f86a50a5f7c738d4e1254b843648691f7e74ecd765bd030e21669a654fde775f5a1a280547204bd9a1c01e854feb06939a565d074c722b6e0110222ea3d1dc4870e7f045279abe3581682aa648d24b529d29e85a657961cef1b91ea5ed836115a438313c8f6dd71751136a5768e8495301464187a7455ced215834e14b2e5ba3c197d9e98d1ea81471b12b14c8fcff4c52f0e63ffc232b10c1156dd1f730372b7bbd13bbf737fdd4f15acd4e74f844ea52ac60aaf50dfd4a31aebe4f0b11251a7dabb666d920b65a610261e6d5e572551d16ac008774efecf14b0650836ad6ea58585f0ca14e2fd031a8e3fc5412c65877353d6fe4cad7e4210718f3652773e6950e88b3ea0581e53144e33c426158e8364e22e4ec8eee56719224075709a71a4fd9aba617a6adfc11f1548498600c786dea0147d8ca22bd9131a9adba7c0782816c9599c2f8b76cf18a180d2d1f096b25b3b7083fb2d54031f64902383569e4f19252632bd9c1462137e74ec23ec85a35faeaf7eecc3993a189d91e72c67678cf7995b9ee73440491e02bb107ca0c0b73a40f9c21021c8ed12c3e9149bc8b0654990b7f354293aa9173324dac1fa1cbf5b74a530aab388931da05628b91c7257b968675e4a70357c12486c72e7a34201f65ccc421b175a074fe14ca298a1938133747f13e21c9864d10c7065ff44fc30a0a82f4c0d12bebd0510cc3e3f563b3dc8923b9f90162e2d07147f0ecf2b8a4c7a770ac7341c3d7c846c0f69615bd66fac8a66fca0114c9ba54753c339f2cb8b572d803b09161f028f192834c8eebe6ead38608a8b1b5361f90f99203d5537656c237c363711a8b9f753bf688c2a857e472c1b04851512a8f528ef822f75265e59f72145e61a0b899979d5b13d09d8da973a35ebcf104eebffd74a1e8d0b8ed13d8902e6031522e6ff8ddd65708ef1458d2b83df441ad5efbf78aa3f06f9b64b38fbb10b6b10caebef1695cf47b7a45e067a9ece8514bde6ab5c7ac319e54df687184642a7193670eb792c1a30aff0f954cf6b890810434c6698b720fcda6c382ac3c6ab0a1454df7f7ee528bb1188c6f473b8560d192ad71fde1ef329162af8f19066ac501f7ae6d34af337da4d1a3b971ac06b921319e0881df0c550e1e0093d21b00677181f18eb246cf7a419594c8c295cc8941e13ef1297a31a07b0b7aff79939fd1c13d8aad77c4ce1089ca59b7500883ce4178e950d9c9f190b038f029300aa4bdd1d797d88c103f0e66199e15b404a4faa12d79ceab104ac60baffd972d01ce354170d4465de05d7f8a87f908f04e41b2a1d884affaa63869bc94fbad9826e513a122a1dbf95fc6702bce3289023cae5c81674e42ebbfb0103ab1c3374ac3c1f7b1cc94efd543de1e1eaf19f117ba23caa8c599a65eec7ba66673040161acbcbd4efef00ffe9796940813cd01bf05effe4f595603f32ec41c8d0256211ac363f5e73bb38cf3e6752fa44afba155704cf3550ea06830e01e738165b291bb662a1217252e411a96090e3edd8f91064bb09aa0e675d56d378745c294f38153d2a8c54d2c0f42b089791b3f362861a669ad77483f8781b65fe3a50d8fd931000810d52a4365762febd49644efdb81440e190664d04edfa7d2d5cfda13ce719c88c1a60b022d4bc6e9c593ee5853010fa2f21785c2b096c8a03f08d5ea73c14f87b299633760b076d046c3136d14b19f6dab37bc053ce488805c7bd83c59e1fda68504d58f4802d75639c56723bc3131083a4606e31e178527c43ec4e0ab41800e37e1515188115ac3c8215e0827c83088472238e8430853a3a3b056873205212865a0e720a981f90215380e9acd19d43222222222249514192241d0111210a1164104166c468570e79451c03c800fb1a32d85e6c467f4cbdb24f0c08c4340382b5f69359be7be3c38b9154b33099ae60118211b4137d2cc184a6fcc8df3ca2cc145f8a0550ff592543f59934e066c89cde2941e0ab722ca363ee480979cedeab6e797529d838f745ec43fcb2fb5000519f9b812c80727a4cfe7702920999fef7449493f03069c916d02501f832af98a6904e37fa58b736d0079df110876b27d3730860b3b97f26e9c5ee6242d00b887a848508c8d40394048137aff0f3a255b19519f48651aa9b8d9ebfb44005a3cb23be8cd2a81f353687c3e6837af566f4e9085584dc0f5fd57ddfc5def702c52bcf1c559717e64a6569d783a52d9f38461f4fbade279b2730d9c6e7c72b92472e2657f30507f39899fb7844e4691241030b29498514220c572b1ba6be915d0769174a6baa887b4d4fd5820e4b85e1c2a5bf0b7e9fa8540952bc8a90107f8dc592fcd135797fb96dc9f4bbe62000bb3903c253d393c5a6dd455729fae2cfd94f9abc3e96a94bc822c35762bff31ae1c5b41f217a4a1a42d32918ac1df233b85eb742dc12fe01567b3ad9d213eea8269a383126933e324f39dec06e908f05f67ee2d47566c37b81869bc84ad9281027be197cc014ca59b0fc06bc6b2a450ef42fab47cb9b07fd8f29df26f556533e5fb51fdf22ed13d87801fa62dd58d4638a74807360cc1856c11475512c3c9c502a350e2009eea6ddf83cc7d3d24a79b6a0334fbf3f095ed24edf62503e70a34ab66677e7fec93d2b9518bf91112a95ab6929e88dacd8697161f34cd3e27805a824fe622f55eeff871870af9d0c66aba4666563032c1800c40c10878740881500641a88536b6e6fc9bcf367e6096a3ba7ca8485ae67bb2bf894fe72f36e3cf1361d5f3af54fa5d182e6ad7f520e511f6c3e2b8c68059b6bbd41fbabd9831f79217e1319cde05b01756235a18915bf0c8a45464761206060b609bf01d060ec100c8b07a18b2412248c1500062c2e3075382a8da88d5c8edc8f4d4e4f5051cf90154c9139062d286e29b54892ba4f463a602c5d7d226020285c75302d3146296f202028674e614e2b2f29686578746173722008951108282c2c34063a420a4c01700e7e0b009c80eaac81be9bf6ff0cc108414c19658861024155376b001c367f9bb8f396ba7f04e8c8b3e79adc91957c3f9e83f8d022a46f152448260a7f73655a5d12839f814be3c40acbe2384c84741ba44f6082f8cf0914d8441315fcf1ca265cfa911f455debe454bf45da76ffe2b1a58153562820a62e5225f2ca7e83eed768a25e045fa27adf48cd7a70116c7f8d939b17b7bfaffff93f48771e1a907de99d4d50d2db0e616e5c2edc87600e0e83684bea6322afa3ff54f2f6bdd482bbb1608dc09e121c4d07cb321998a36d09e6c0f8b54e332579dfd4e66f1d2edacebd75553f32db0d01df184fa0ac04a44a4b54db63a1dcd75a8b633f68ed0623fabfb67d217d2aab383738fadb6283fd86ab8553c57f3ea974e1c06ced41bffa3ae7c479b13c470dcaa9d05efc9ac3b9ca5c61629d51f44f498f2c55c7f56210809e5be1c0fdb5c28f8a79b04386ccbe3af6d91f40b6686be438c2815b280d19bc760453740c7fb02f8fa0055b9b02069209a5ae715919ef69c200f8273b8d9ba7944b443b0e7b05f65bb70ead4c910b9bb2156e9fb90ec4b72611176591df628af685dbef36fccb79431a16388ed95ba07fc219b27030b22049e881bb513aa2c97f8262ba87fcd5ffbd62da5d6c75b700a717ffdc3d3f7a3891f408aefebe308faa011fc6e72ec90eb93469a4cb34230fde121e0f0f06790c8689f8409001d63d01a39cf6ad0a850c173710168f3051af60ae0f40c98ff20bfe787a85935b5a8c5d57191fd80b71806f1fd8ac2081fdc2b68ee7c9d49f20ffd7c211bc115c200004200f60bc10cc6e62f7fb0c02020b2a0f2c009896f03f244059408f88c36af82e4163419741cd41024237426d42a242d6420c437643ab43e143444b448044b544ea44912045355445028945c045f445ea29465f46179346c846fe463347e368479e47d2470748a53d48e7a64879dc484c4946497c495cb14973e5494a9a514a854aba4af04ace244b415a4ba9904b13c44bf94b2f4c634c984c1bcf4c91034df5384d6e4da24dd74d0d4e64424e3d774e0cac4ee24e4f4c4f814f16b64feb4f99215055505f8a50c050f5507b2a516d6051c894517ac9510052345269529f521dd352240853ad3e530c73534fa75363dd531e5447547d547db254e65455e85155a28655bb553ff1552556125b569156fec556fa563057806457e099578cd057ef04586b39586f58a358d858350e59c143597859ae59e2595a4d5a32825ab75a9eec5a225b565b8c8c5bc15bf65b4d2b5c30615c7c955c5bca5c79005d57345d6d6a5dc4a05d75d45d095e405e745ecca95e7fdf5e5f5b485f727e5fb35ff1e75fed6052608760bd60f260c32661f45c619161c6610cfb6131626562d49b62d0620563cf3a63706332a463fed9639f64446478796456af6436e36465144e658365e8b865ee653d226657668d66c26638f666862c67d46167899667ebcc6713016835686b68a168d568b10a69af40697469f1aa69e0696a496a737f6a08b36a0ae86a80eaa830c87c4108821042848410015dd2667210663a93c28214f6ffaf031a46113315c33226e8188c90a99249ca54cb8498a99a59ce8c9e41d044d148d2aca6a1a889aa2159535db3b089b289b4096d93b8b9ba89bc497df30a9c289c254ed638207242e550e6a4ce41e85ce940ea54eb40ec4ced54ee5cef5cf05cf140f254f3287a56f52c7b2edd93f079e5b3f469ed93f839553fca9fe91f0aa055404ba069208aa05741c9a0ab831242a7842e85ae851643a9862a87a2871244a1882489ae898a28faab2265d174d1c2e82ba3a5d1b511e268d451e4d1f4910aa4282449a46a2489a4a8a46452d5490aa52b25a4d2d44a8aa5ac5a522ebd5e5230cd8a29c9f49ae9a2295513b2a9e9a685d39513d269da69e2a9d4d3f2e9ea2704d41514126a682844d45554322aea2885d453520029552d353155356539153d55417545b5a43a4d055175aa6a59155d156155656569556d5571d5ea2a79557d45817585054bacd05889ac505953665d674d686594161150e510522bad55b155b575b935bd55c195e28ae402cd15d1b5ea9aeca2ee72e185f2c2d20bed65f1a5fa72e417acbf28c052607e09562c54ad798930a9306458751885189518528cb49862cc57d49849d602c8627d9724b00e1b4b9a6b0d7db48b25b561626b2bc81b8d1ef05a261f01acb989bc1acfd89b07a17684b997bb8128a5af554aa1333eafcf2fb09e00f069650786a37501441d0064166b30536b886bbe6bf36b276c5d6c926cc6c76cfd6c23326d666d9c6d70d16d0c066e8f3b6e716ea56edb6e2c6f456f7a6f3db06fcce46f7f70507043847054b970e9ef7023715658718e71e3c371dcf771532d72d46272899772abcd720b02733673816c73a173d673860b741441747574ab74e1743c750b4a75678075b475f1ea7520768c54762f8976bbbf7615f3765a28775f779377b0c8775cfe773278b867789d78d2780779823c79317279a6794ddc79707a8c467a6f7b7ab17a7fe57a7bdb507bd2857b46ba7b4cf07b5f247c597cfa907cc47cc7f97c2f7d637d0a987dce7db0037e9c377e036d7ee2a27edad77e0d7f427f29767fac7f75626672755c00d8a1a045a53dad1afa13ff333e093a561368196c036d1a6e6f70717273ce11ff0200030507090a000b0d0f204000507090a000b0d000e000f05ca7d8eb001e2d86a81552535458a912cca9615fa2aa15203a3a52d9085541732e0162b3ab58ac2f55736580eaa890507a0cb10811108208111a85ab6dd6522146601144a860e644f947799756078f200923ff004cb880c9b999410c619c7e42ec02d80905cc55dfecb4ffabc3faab377f0061871d7ff46530fa8dea51764b024889831d12f6dd497e37dddceb6bafbec5197df87a183760836bfb00528db0e4ea105d19749911d81a6eecd439c6cf9270b7dd49d3fc84838bd4c3079b3a3687a33ae1e647c63776e1046c8cebffa5b11bc1fdea2fe8efdf911754bc5711657fa526f65b1163011df074fa412ce75b3d54dfe379d7fba813043fd00700a8521ec90e0bd1498bbf634f17c50117d60c850d306c50557aea4a553e47b417fe78569595d9b40847b219601b4436cc32ff8165ed8661cef1de39e2d3c88252c7624cb48e3c0bb45931956b1fd7179075c62dc467e304516e872d7df2ca8fcfc05b880dece12f4677e2486b7187f9ee979d1f6b0c60b95a4a977ba898ff0b19a2c88d540ef9913e0a0caa3068894135861419b2cad83223eb8c5a687ca511a546af35a2d8b86a23971b576f74c1112a8e2e39b2e6a845c7571da1b2a3ea8e2d3caef2c8a547d41e5b7cc4ea63ca8fac3f72017215c89420a106f92224aa905e866c1d528548a944b214d95a2416235b8d7c3912ea912f48a222e92549d4245b9484aaa4ca92a94b6261d295c99526a936d9e2e4aa935c9e7c7db2054aaf50b244d91a25172951a57499d2ea94162a5fa9e4a5cad52a45ac246a25c995a1571ac1d22b9629595acd5245cb562d59b6fcba650a9756b974e972b54b2e5eae7aa9f2a5d42f51c05405134a98d9a203dcb500bb4a6c1220012b01260182ba1c5951c14016db8beb4359e53bdf4e0e7f59f3349f75e71b5bfff56bbd08c03c762ceac881c3ca6195427e9c974da0f582b171597057aedbcd82b3db39ac1c1cdff6411a372d4ba59e8227258c946d142651a65012a97b50d60204d852f1a6842c0c3dfefa230b43f01d8f9e143ede4fe06e276677132224402664f0f96662c66449db8d600c0d9d26f586bf5eb232b43570b56a4e333749e264e2632e23fd35350eea81b37c8ce22491894ed1b2b17185ff76fc7371f5dd48e276700333da1106dd7d8c15e705acc967e43396608cdac57b638ad4371114e1a60e569007e6ca719bcd046442dc8204b983fc712d0348628effb96cd7be7fa47d483a7df570fae1c1c0c23ef8f003f7a0d363bcf35804ef3bc2c8cdf97bc719bc2fcef1015e50a066532d16c06c0224d9fcd3ecd3e4d3dcc3741362d3d4938741803d4000b20702ca02908d89a5e5dda1eda1ad697bb59a46b7a7e5958589c76981be8078e8893d005795d7a40080b2a4921fbe66d63f72d6363f78fc9cfbd4d98db6fa6cedee037c226db702e99b0f74cf953d53000cdab6e8a1e6593443d324e12fbca74bc1f8835db7ad94bcee3b76c2dc76eaea38166655a08a4058878c8e0f3a52f6817bcee2892172e2ec1112040e9cc1b0487f53e096f9fb8de0bd668a1a386a02a4016c8b7c1146670304201b130b1b6026a02c00d998989980b20064636261d4016602ca02908d899909280b40362616461d6026a02c00d9985818dc9fd6ee0623e2e99d4d1f0de0e38b9983342e4a2e350af1b628cd19e2c1df5af8a663b9d655d6a209094f78fe860c0bf8234e0888e37e6662634c5284296146a673b9692063131415a9b884d472e4528f3c181526759bb6ac2db470a5026a8031c4ac43270330e0e1412640f0ce37617d4d90af180b8c951dd86ad2e13461b14a7759b121ab7e7f183a636e7f8d00b13255855ec6c2a8f863d55516d5f44899d9d3549729411c03ca8ecaa4100b50258521816f92c29d68f83089e2aa31d6429c3ca27088c9cab849b452c0812378dbd979b2e583a630e6c0ea12b4094a411fa7f763b7a01b4fd3edc564f968d7b075a57d241d36465665c364e69129e4be904d6b3a8f946844614453903d307f038c55c998343045f064236711340cbad5a4b465126d4afa2233da8dfc9c4d45309a88548c3d493c0d9b86ba343de702dc7b4e06025829686a4686130dfd139522f3ec04673d52064ddb73a312514c820f1a290e0bd37e785cacd9f4bbd968dbadc61b7723d91813fd93d5936918ddbb7be685b5f10940f55857f505a704b6076303aa4e2be7afa2724e39a59c514e004e28e79353d3b56e5ae346c1d0640537396fb0263541c726b56c53016ad3199c2e4dd52cdc8b2bc2492f452606036c2e3ccc46333ca558189bc9bc147c02fad08599544036e0b14cef9a31717413132024005999b7044e26c3b3b37802c6e07c05d8e2599db5181343b0238ab989101000831006666165784a72d8d35200978a011016cf1832016660784acac8c8a6539406a863633f27d3432666771389fce7970132016e15a6c48693533424222f46b122fc486adad44cf42a8c32957d9317d6e3990a01870560d3b52d6387d6d435050487911e4ad19465638f018905a8b4f4cf650d7a0083761020128984234110e5400ea7be0344888165caa452497c0a07c4c3288862108c61000001008401000a008018e09c54f0051b01dd75271de042619e43dfdd93a45f5c4c05b2132dd35f5c4c82c8992c917fe040115d2412ff3ff63786f54c005e42345e1b56fbe7eda797e4b8b98af42e1a7b2374a4fef572191273efb43f76a14b377ba10fba7a4a6b51d6572d65a0a9419b4f4fed5574ecb250550cf69e0b980837078651e47ea8ab67a1f3e7d9c9bb67207fac7a324f35753c8293f16a6a531bb6e7241d36131187bd99990640f7818463aef2671bf963ae0319eccb86c609efbbb1cb55b999a98ec46a37b37e6f2948db4dd59418cfd6f9505eadbfc803405e60aa5ff188a108c6a7eab28afb73f6b53660ade5a6556ef8f3977ca5d9e39c2aa59d68d9e7bb1d261fcad928a8267e28090af596ad8f4cbc1b48a987adc9cbf2c05267688f9d53b01b59fd37df01ca1e15b103f4b3c73542bca8543a56a98a34cb4f2e53dfd76e5b41fc2090e9d4f2487fcfd2dfbfeba1e865984fd4be8b04a58de427e9411b5ab75933c460edbb833f1187c4df10494cb83f531e571cd93b31a3315dce5e117ea234e837172fa1033425470aecd83d28ad247032eb4835be75fdd87a006efe3397c7c5d26a63f89bf5435e1baff32e96b48193220fd8e70ea028a0da1b2396d1346e24f416f6ead8415f16bddfca7ecba34a104eee6d01c10d59f17c2d42e3c1ef4d449f9ea1beec83a6400f538cefca5e665fc7264c2fe6b4bdf47a91529b76e1c06d7b8ffb64a8e21fde07ff981133f541c8fe53df8620a91e56a3827a91fb4cfcf83aeb2095c6f3202af764f020a619e17300cac8d8c4cbdc0667c16f3ed05720fd2ec7104cfc8fbb4ccb0e2e7a68a391fdf34a68cf1817a32e5efa5363debb6ccff7be0853fb76d47f9ea97ba7b8ab279b003e42100670b17d1079337bba9e6a039a1f251ae2deafd147e35ce6c14742aaee2a43b7b563e9a6736d3add08395dc3511f643db15caf1a6ee0fe2fa2ed4716011f4e0eb6feb31c0d310810e9191d37ea126f95c4fb662a27bc84a534e336b8d7a20ff7eaba43a843296d64e6f2b1f528dedab427b04dd9d9cd12c5fa6fbc5e4fa370741b92823b08e549f1c09050908167c7bf1a1d7de0f4db63694f1011e7f578a83cdc640fda6e463edf7d1fbf8d1f8d12051855d94c0e1ee861b2a65f1dda327d5a69c18f59cb7a1962c1a17ebbe5abf0b521673f21022531364c73167d803f3ef9547c9f3f2ff6caa6ca0974ed2307f6d9251046e8851d8945191a16919b6ee8e13896e033ff51b6e3233ab3f87146c68ba3adc5f8c8e118bfb670f9fe624a7c42990584b32ee17d3dcc1747bcefd90055504a1bed44b2bef3152138896e35758447999109a35f32ce9bfc3d7af0026737b1e303c50861eeccbc5b54e9acf9f7e7a5f8ced2b0bd36566a03943ce0abdb881046eb704ed27d40429aea837139f823f611939f80b28334276e8d387a7c815efc020ed3f438a103d4e113e23f8a6c1777e753f41008915eae3d00864bfeb304506f177653aa76030aafa6b4fca0477a9afde1ac1b899f36df6bbb07323b47f65b76eb6c57aab5dd24e9d5d66ad851c37c72b7cf54577f8bb247c3d3e93d1f0639ba38857db4b521e70f7d602c9e4366e3bc7826bce06362d61f010ff34e7547e15c00bac82b0544ef5ef1bbf2f604beaf056a1205ca1146ade68ef28e8687e6477207c46f7587dd7f5947c9b731199993828685378e82ec14236a8855c51b03ea2ab0b60308a21f6d45a5365bfda3a5130ad451f677cd21de9273d7d4bdcb26fc76420ea1281e076df65b811784ea6f51f008afd402de8d706c86f9db2f69e58e4d7c49bc0ca0d0858d5797eefb80ebe821d700e3e581914d3f52600a991843e8990cf4e8656c01a37db8d2effbe639ab2c633d428779dd401ff4dda4e6937e45c942631fb0e678c2aa5b92f1b4e202ad06ad4f889e0f16de552405f4179b57fdddf99eb16c69e384bbbfe51a7d1b15f2a20d0dc9bd06d4dfc086ddd0e59b3027dc66cd414c9c155dfd6a61646b5650d3ef3f1808fa3450696cc8a68721a69aca97f617320b6e5ae8752afe8a9d306c3bed1818ea9983e601affaee20891f24e006d86ee0bd51b8ee441271b564d9ddf18bb4d5b48a6d26667f6c4488c7b97937f5098bafb2a2ea1efd5dcc54e908e212b66f098fcdc3b45b4d12434dac5f79da3fba0d2fd2d18177654bc7f67b45b5825859691a3e02bbce1d7c1090dfc4f54488f9ce2ef20c9505c55a8985626fd0fb043c39fe584e3d37fcc6de8de8dab47a2ed0120c8c827fb9cc3a91cee3cde30facd622764c858f094207a5e2805db749de6689b29830fd972848fca601449b59f80bdd4c3218036b15de41232eda028979328b77be2d9efec4fb6b34efd69637c627ee40252325f0719066ef89b8e551a381dc006c7dc3fa51d7d0c2ef83f823873375a5526b8601860ecff1163d8fc8b355e8cf8d103e7f68aa3e9449521bcaef6db52bb125a4d7fc34e002634c7dc3f17a0f87cbd3b81285f5666e304aa7634dc6d58da4681f1db191c69acb28309b9f1471d3b4df37b573ffa98b56c27c572635932dfa37d0993724732e8c893956fd621d09f0aa169aca1b5a34f6f1753741023eb73010ad1843ca5bd3bb813155f9fbecd85085547da03c7e43b9a055202270398b6eec03afaa7e43670ef3743980fced0259b0cce7afc195d15eda3ef0c08e09278810028dbca8352fda62dcb1aa3e71b6e31847e4aa96974c0fa4dd6fc38d3c8e4ef97066ca56d4d5f07915f1ba3e3971b85ff655f9b60c902d1a3d523da7a8dcb3c6f7c588fe66f7821b4643b580e6b3b7d5b2214d43a8391b6109e972d3a2864df9e57b996f4226239bb506792fc9cbaf89a6b4df0d9c393bba33d4981707d5aa9085cac056b057fdc3a03975c8fd376364a326347deca387396452291d0be81cfd1bd49a8f1c92c10e37be1bee0d1599cdb48de1a3f01d4efdae259f036e15868ce27d8cff0dac93a4d72c1fa722087b124ae64031716d1bcfc5d84d08ce1b8a224ff7102518a1f3ca3167df26478eafb94f296771e0781212da07ca61df9e7125a0717993a26c77e010092050611f88ed3f4a67daf42b676cbd59a28d7b11b0328f4f650bc2e1e955c9b0a4fb6669a892c63df753d03116cf707065e03de2a185ca197882ce8fc05df5bc0ee11324a2031aada26fc0c62e23ede7bf464b08a6e89d92d9f21c4df61b685d0fb6f9f641e4a9790d6fc66d83cdda58397df6fba1ae32ea59bc06e636823e22922b150a36398801e7a7f3327c9e851ffcc8d10ce4157b278701e018c21a34b721198936e166f0aa7c4dfc741dda8dbb25d3ca5a8d8176fbf476c07b52bed774236fbf0f7d36df2341f2e83f5e1459db50d8f139757c42dcda2259894ebaf62ff4702a42701d66aa83ebf8e8f5eaf2311f7f346a238a8fe707cf3f09608e0e68969c1335df46db85b5854292817f6eb8be797a43b0999aa10f7ff83d43b7b399f0d3226fc0f92d6abcc5c9f29e27e1bdbd983478843b6f5fbe26f7f7a23c636e829073c8ceb95ef76874cbfc36ee2a63ff3b30786de0506a34bdf7e3a02dafd66d38f69849036db89b2e10079a77e3804733ae694e032941efcb0b0e064415c4a3077404effc950b78e99cddc5db290c7ef4c30b451b3bb3c0e45ab227c17832a2d8c3c0433587ae96f4b6b2f079b163c187a9829bafa789515513317ce9bef58ec6095b3cdb56e983d6846576c8a93f7cbf1d2ab8370d3d37b6e1ea223f8191c81ed4b981f0ea91da5d0e498553684dfe1339daa4e58f0ee5ec1cec2fdcc38313d661ebe7e1716fa7071cb9d67db9bf7c51229e65104f3ad33869a93b207f0fa6a6736341c3cfe5cf0cc6ca2f420762fc4b1ad6026d8a628c9c9d1282b17345b2fec1995d4c23125adf2aea2fbe3d854a8e54b23523cfe1fc5114719851d33afb0ed8bee51881987d15aae7c1f5b6c1c5815d78b46175b96648aa6f374440c64e89c8fb686795d58982e4f64838077fa724ce32444ccfce39b0f717210c63d68a68fc0133bbb04220b56e45c95f3c1b0aa99ca264db469dc3fba728c634a6a674f619723f8b1106b9f65a54cf0f306be8f241279e8e279eca238efa3dda785ae5cd2308b9da79608c7ead680721c86acbc0b9f589dadd09088a9f0b66d12b75ba65d805a50ef2f5c00d7b55bf6600a4f5c600bbfa93707d9ccd00aa13df1ae0a73e514e9f3240617be119f1597db726b65097436627bc219eaa3b7a329e69eea181cefcc9ac2ab876dbec1d564e738ea634553970beb3bf505ff8fc00cc3933b20d0ef304f36c10d411149fdc9b6e1a7af822eaac99ed7b72ae41137d3250afec198e0dfd49bb5ddd5267211825382289cfc363e6c8974f75abbfeafd67840f13ffe89d73dc18e4fcaa00b53efda434187d1e2ec8e8987987db3c635f92a5dbaf572cc00bd6d992201ccab582402525b026a9c185774584cbe85e97292b22b6191182274c734d64baca65d38fa48e2e876cfbd72a4cec452216800e0d701902823544beed1a3aa46162788775eb91fd98ba4c0ea87d820b693e64843028c619395063ef87670fba51cb3d0a79f6c59091d6cb38461e950a19aca951b22cccb310ffe7d1fda0abd7e27f3eeff961845b397a41e724ade7f7ce11d61d9b5806be3027bdcc5c680a71297c5901722c31c46638e4db0df46da97c7988694f4b987913311810cf1a3f893a0d712fd21906ce81eadfd298014ee150b1f2f6a6d90d4af29c2293e7828224376c34b1f43f28593584474cbde041e889c64da553fd57bc74ef9765225c77b30f657fa58223207ec2a82415fd627da286960cb4792df8f3ba70501a3a2d3337da4b3128f6f81b62df196e11142aa2533103d3db3c5b55649a54bf541d7eea67829241b948bb1d279982d2fa03cb590c745e98097f699e399e65d58dfe53c7ce6f5466b37e975744ac855bc3b90b6dd52a01293eb58c1b834860fa84a4b3e3823b4c82ad7f1cded095a1d9b35837c05f3c7b345508df5b5fb9b6b9974378a4677886004378b1ad914d167bbad0c316071b0428f13d44928add52aa065c498bd496a2e6f200e3065646d14649214387cf6e207df1fd5fb1f71dc855f23133a9547fee669eff9b4b25fb3b0e6376a0ddab32a5d406ff8e16c58e76d8996239f95c7e20e2432138386bb918b10c2adaeb1dab007fe03321957d1f0b215463154e9c142aee8322f81393e42622666c2e4ac9eda59e20dd333bebaeeaceb41b19a5d9e4b134d1b9a3205ed65688f9585872d925132c1a5fb1075741394f768c8da17e968a0e5a7e65bd2487badef4f4c13badc48782f8818fc4c2ab1d19bf6f0f24c31fdae1dbf793220c7b3dd2a31ed82a1d9062caffb44ce6c9ff3b97b61347a315e7f6c7367b6bd8e4fecaf74b50ef9ad0a14a6e0a454ec738b953219f5ce9fb8bb93ad257a3e3b6a4033ce2dbd0ea51a6ce01fa9a3102fb306fdb9c8eb25003211f2c8cbc1941f9ca481ffcea5ec9ec6b6e8528c5014c6e096de1d56fed5e31680f6673d796b9e16f96acba4c925dfe1a0020266984b2340f66c184444e58610fe2f2829465158ffe16a09910b6317e57aa080208f216f82cadf13ae0457a5ad2493eb14e43e5fd04819ea041fe0aef40728f64b5e44080c8a547602a4df8f48ec97bd2a43ea926098a90ffb15b2bc337f54e2c15af492ecb157c0e31a9a98f2aba03f144ac2782ee5f5ddfae18c012e094557963f26983cf1dd6f77ef74cbdddc69b49b27dc097c89ef76e2d1cd0b7a7bce54b342bee9e85b140399dd25cd21accad2f01680016a7154305654c302727b8701a71c817857e29c9712f69537d70bbc00c07e0028d48604311f5200b701fed51ce7ee16af9a6b6ce7355f9e8d4776d8ca480b620c07917e91842aba05f09fdcc278656fc9cc7ef4addafc0f6354ac9a6491891c126c7624a38e16f50584476ef5f6e70e6a990249512ec7e0447ad65fefd0eddec7e3222b539f761b974d7bc41f8413e59674950f0d4ddba81a64fd620fc93719a814c970f38aa2aa5f1632502edaf1e8709c8d45864703d782e662bf164852556bf424abdad54723676f36e1c7ee86c6d4e94c356a36bb95e086d7acf36e3afd2f8f1d1c23bddbedabd27f0daa5c5e177f853e46c981daba435e429ba08e27fcf41dcd8fc3eff03c01bdc8834e9f79af7e66a1bca03011c8e5b581058be8c2799dd017d87da542b4f08d63aab64ec1eb900253bbf5b0107a3f90ade7d8d73e158b06a33e9a635a510aa8629729b9c5c7976805d910ad9e4294d1d6f4fd4b4aca8615d0c20f66042659aa5f2602f8689f9448bf35590a68b73a0135f0934389e42931051f9f30606724634d8737f917649c8ead60b54653c51dfb7706d67c6dcea61d5df380930b750a7acfa2c020a50ba7f9605711219f6c38916f6071c9373f550d4156ab741c717707f64d59ac8466c4b02545b0086b5d23080f606541bb3f33f7569cb9fedcf5dceaa49a5739174808560a1a2cd0c05a421253785e44a171237dcee0f813625770ac500c300c600143f127fde6b7dba7cbc20387fe5ec41db7b2a773085dd934277f7d236ec982780bec30ea87892f46f671d18d1b4b3a50576ee76d0feffcf774c1a52878ae9ed2375b602748ea0a38e83ce810ec15199c9df1b736c4af57256f0fcd0864bf8c1b9ae8de170e138fdbae298ac3136f4fdbcb17d93e579b82acc4d870de6a941c8cdc79c621346abbd36dcbb26b227ca8129d1bb5aee956b977662468ab533833163a00d7dbe67b48d9dd8bc5f852acef2bc458566e5006401a335518670067fdc316d374c670558dfab51c754c5fbbc82696ed824c7cd7c0339cc698bc97cc112dc12cbd2ee57cc9c4a70217a2f5a9768dab8d2f7cb7326b52595d812496afb6e8914c8c0eb90482f33f641cfe8153a5ac0b4e18ed872bf90666ce833ea39e3bdbe5fd123cfdb15918b5c884c6b97a271aeb7d973065b44deba83e8ecc7fbb24908c321b2a3d38ef35943da8b4ba135c321db7fa24b3485725e270a9a0bba0adafa7e7380ecca30753809a888c74b027f98ff979bf5dffeb11b673de7deef56fbdba7915e11e01808779702d044d004d09703e6c5a525ccb2a29282726252423262159947b744b621201f7ecf8377fd9be35e8f8e5b0bf231abc7da6a5831ba79a0573d576e573373ae6b5abd5985d3bedfc9ccaa36002e1ff71fab5222181a0168aaf6f25fd67945daeafea9ae004e44f9b717ecee4de580f1603e292af5eb05cf4985a524ca9056ae975f2b5b95b79b77d92908c7f7b0ba3102cf46326a71f7adb89f5076d4a0279e4c8bef87a7c72a09149e83819eeea717d32a9d8d932096d346f5cdc9ed0fcf59f0f837a429b54d0db05e03aa761d401350e9863a816a525713a80656faa0203bd7043601c275c0da80b517b0dcd957081010d0dad5bd205badda57d584885a80c6d61b360096414bf131d7386dd7ce59256bb0326b0700a96f740583b5204b6926becd743a94393059d82b169672881249b288513801c9b716deadc844bedf647c22a40da2187f5b40fc254e632d430d640c163f902c65695bc60242c5b2e6140f3216f016970ba2acf03ae73f7798de6384742fb22ba5273758d89cf8fefa9a9189b16faf2ee2cde517840aac430667b70343151924148846665194e548083d3e252426bbf49a8ba4076c4d120388a7dd9dbc1510f93e46c42e4d2ecc7561fc8733d46f6de47db1198f38a64e9f69aa250a490b7f92d3d81dc6c0b7fc511c0d10988e2251ce559b5e71bb8575a63b666c90a2085a6a32a6538d3deb9fb9fb27a3e35a55e615edd4437579d44f6d5c7ed8b8d4ee099ded7c99a1f78a6f304193f8bf13d6be04c78bfcaf688cd786e1cdbd39081eef44a4edc813ea41db07f66b370dbe1c582adea9153f141a571f60705594f6a178bdf0097b88e2f977fa4ffdc46e1d2d0e8accf7e7589d64006b092bbd42cb37f7de8bc7fd88149dbda1a83f0adf64c6bdaf5e231f935999a5387942e7202e70b243e0c31d41dc2904c625ee554a8f1b711cd664ff5ee5dbdced36aaf2cadb3848738e0a6a6bd50427fd04f3ea86c2bf9ba8a0fdd2a25d4cfb7521ada69432cbef9659f1cf8beebaa73f9b823a64cbe57c566f2d2ebf9c687ddea19df571d3011b0deb14c83e24baa0f5236d321ab7bc002b187fe7a0281324d4572cea0839789ff230e547cc3fd82f55368a116556b667ba105ed8e85eb5889110bbf2e4a7a9bf6a7faf5fbdfd593702fb7463e77b5afdf0b35c7f0ef98797b4eadb2e992ca6fc0f0522e7352b940dda0419a110cda91e0f6b3a6d7d46bc3a6c7cbc6b9f3cf8317748d0d078492e2dbcfb406d6b2d9d9ed6cf76bd7581353f8aea84322f0638f63875db97fec3b7213b381d116aab7e40c6c9ef1dc3d7c33dd8e7f28c83b750324dc00c364b73c1fe0ea8206aa19f16c6fc1be28ca00b7cc5ea74d331aae7fa9d4fed49217bf3e1412ffbda33c0e36804bbb90a19daadaecf04f79eb30623cba30a34bdef8f9de2b494543bf51b958910f30fd5d7acb6fda75fcb9cb96cbe53491b34b6858ee4a4ffb88587da59183018b4b5c0a3ced83f8823902628d1907999fe696a151ce7acda91f6ef318f92a9bdc88c730e1af255e518e2a368c8aded559da1f47255f672ed8f8e0c36e6ee1f42ee59bf42b3ff303f79ae76fe3ce70600a8adf9d1c87b2fe5e9c5f624a3943a3027cfcf2ff6a183f907441f643f0b04fd88561f8071d7daf9b1f18d5c91d75d791c4ddef847ae7ca0648f357e7b6578add5c61c9a95c44e2a89338e8d50bf91692153a47bd5ff36dec23ec7ec07ec3ae9894a1d5bbdb8b0b08aba1044e6dda0f7f6eccf9a1ef84ca8d817c56ae1f1fd56d4a1bb237b5dc752d12a9f88d270541a093304d0b30915b8a3bbe6e7f4815c07c3689d9a5df28b2033b805cd14ce79b7d5bb83c9fc68f0cf3868dcabed61bae63d919a4cf3e904783eab02e9a68e4392c5fa050aeb2eecc1a04896e8a99d3726fd823bb47a9fb0cc493781aa0f4fa6fee87578dc04c944884088cec02f04a5d8cc62014722a1bfdf4ec62fa52f46c4fee1477879269f2edaa579d6170309add283a2d32c2dd7ad34b2370ab1f59e26d9833af314959495ff7efbdfae4fbeb7e1f7ea1bc8c5edd6f08bc22a29bee2f919e9c3e21ef5b8bc3fd693b0424ef1988d23d9b14f5a42ec8b07d049933225fe70fa3b186f38419fac658c2aae82f7ee292a09fa22cb130678c0666b78439f6a48ae885cc126fa5f157fcb5167e75bc1cfc5df867f3426b912b3faabbe45eb2a3c4261a7e78c6e3761ae7f3cce8ac8a37112404a6574c86cab499eb6d897b0035bbc4b6e8c67166475488f104cffe4a107cc26a16278b20ad395a4f8aae90a67c56239c86ef8e4fc616bf243a4ddf99463010a9c3ee90c291fd732eda839c16bca43772794bace969ba327ecfacd6def1468e75aed9d7e4827626f8934cc8f5e826757073488000db4b8a7767cdd8a78a3417485c82811c729f46514f6e9c764d70742a6c96849e23faa398f23fcd1c2cc587ac3683ffc7302476baeff502253a7249965387c7eda7b3bfd1d3bd0934686cff299a5adcb2442b49a10cc99acd0fed47696f49563373dab338c8264aff7b9505989eb78a7047994608cd1ae80e3e41bca6d3b362478a81ceadfd4b9f54e8b95f5b37bcb1a505bf5478016e80c751be4691b075456289e5f8f4c7851c7c117e9b1a46f8b35ce363e17a0bff662e74a6c253448fa1b971f44bc03f1660f5f86f5d92c43a9897d4b44b1de27b6d902562260ffa36b35e125ee6fae0afe06c2f70311a968b1a6ff452c73e4fa7965ea1da51c4647fa457f36bad8080e5714a36d6e1c4493e6471dd93654270ebcfe9c91b43a19c9e6ccbca04b4f04c5e36062590a21b3756ace5511618a6e7fc3eb87eb6f277179ff499b05afb03aad974eddbc48870c65fb80153713794020f6d1664a0f1f622c3e35ebf6ab30b4c0060bf915706e10902db364879ef3df0d0d89198eccf89a77ed28c94eb226e1a167e4d88057096ba4321fcfd9a039f20b6391ba52c5c6b2545a26f6b8a1de326daf417fdd238d9f7376b831601493e7d9d6392e8c7691919edef13f7c429c43fbb59f37963d77155f8ac2fe70eb6fbc2c3151767a6364fe10ab1eb5e49f9f14e647c2d90737dff19abfdf42cf6ca6b969fc1c0ecef2a00c134765c3e3060e83a59ec856cc4ea6798539a010533ca88fab18bde4c4bf5f5ba5af6cf3ab09799b19e756165b92e309b8773d106f6393eeeb4fe3741bc0c96d2b26ce7967fad75dd25249f58c3f2b76c053302c4e4c3f1e0f6366152de2c84ed196edd4ad97ee46a1352e5a37b6dd6fe282cf58cba40aec47a5c91cee21b82c12c9c917f4931789203b9b0be797178820ebe001ed57ffd90d0e0a5667f0ac8832fdec2794fb00c935e953d2ea68174ce1bf2d1ab49994e09106af748cc5605862d9f9252b7fb8bff87be1f2920581eb46cfc57e6e559c8a0820c6b98a69ad9eb15fe5d0881cb294189c6c23966d086707b7f20d343434212b9fac643a6307246c00ea70141a3820665207985d39dc9242a9cf0a2cd39ae8ce8a75d3dd0078eacabc212dbaa94519cbffa186029ffa77a8c6b5260fabb4628cbbed12364b2974019801a0010c0c5dbea0dd301dd30e5bc8f237ee632335249a8288ecd54d01ccf6d319c23fcd72d83e5d03742397fd8163fbb58578dbc7d4e5ed6fd219b45d19878902965b19d941cd10ca6edd42aa62eda79ec9cff743ff3246db3f4776ec66c510e9dffa697fe15acc10e2ef81ee3b558ffe296efccf1a6aef574309fbf95cfcf3c11074e39ba5cf8eb647cfc2e6fef2e29743fc9f1b9b2e6a2bdc5e45b4ff2983cdf6e2910e5b8f0b686fb2c91f48b61fc9c648bb98e17ea75efc580a64bf6ae12d1e1e67579c76bc35d8f74400fab352dbef043521bad97ee56e9733b00dee87c69123587d166cfbb28eecd41bfbb90dba4059da9fb55aaa3a2c623b75c77eaa3eb1c3532cbfdbdb9936883895c7f6a3a14576a8fc2e1070fb7cb83df1aa9f6f06d66305db936f99f63b4afb9913b48fb9b11deef299fecc40f644afedc62fdaab97f64765b51ba16cb722da8e8c937dfec4f5774dfbdce9cfaf9df67e5f2f1e8bb1f1f81a8bfebe46a5178b48235c342e8dc7a2fcc962557c0c78283ae995bf1af44f1764b96f2f48b5fad10adc82453381340f72dbe1ec6f803db344402a1263f2fee5199843a05ea52757edc93df9955f6b2c9c9a63fb538499246919adbf54d7d9f0edb3c2fa7bf6f558140549fb77ea91df5923f632615441676cb429ba040390879d5f234d6d00e13321da155705d6e747943a0588c976730d4b3bd3879dbf15f47ea5175cfcce331d0dfeac41d200417d5347ffec16bb31cb54a0a9973bbc0ed679fa9d714c969ec39392890344743d36702d746bd6d9f99344df2348856096609f3d6d2ddba5dae2df26b24395651610eb3ed82e568906d6efc4280098a2fd58094ca47f2802f99f2dacb68f0dc8fa98978ffc5c066db247fbe266bf1216c284a1f064bff323fffc26bbd1c99e99ca274d5a9fb7ce38cde75a1b2df0c2c6c8fa711a314707c7531be842703e10b7b69769cad0f11ae2fe68d8123a4fc7cbe327ead0a4c00e12aa6980a202c161be609a413383af82b3addd6a0e4e7ea6033d5f7ace34c2433b950f0dbb7fba00d36e4d4480baf56b62569ba41f3d69e57ad839322f7631ab1a663c5c2d055f3d46d25fa5276f4b950473a63ed0ac4a44d0feaa3cc603202c65d0dfe7a61d24444af5cf9d35ba6e65b8f1bb2b363de8d73e677949a8eeb34b4c898ab07562b737bf165bc51868b237d562a7f6d964e2cf0aacc318d6f244fd9a092aa7aaaa5f70f08b8a61a5e5feed22fdce28231a409fb35a34b01c6d68e5474661cabff731b03fbf2304d38f4420fb181d74ee84d0b0d7dd6241bbf7a2d10753690dae94100496cdc1e1574d625ba7eec953a2ebd4429964609f0b17c9eac79103be247f3ecc581260e1b3206195c10a9f24fd67935c24e16dd23ab50ddd082621430933201c491b8ba47401a0e732063d216e946ef5db84e34a5e9557ff80c89ed490c1614718e4cfce472bae2fed89615c59d9e8c58c879e2ba82ccca97ee99afc48a57eee83122c80847a0eb96aa4ff59c0abac8776e4838222ba03f579d09eec786fb4cb895db08c2d7f0b4458b35feed288ae57f926015ac1e5d4a86c528f1c992ec4c03a558e21bfcf2aafd8f663b91d3a09ae338f10d9d13dc342e83bb22bad617f7a40f63881a019261dd6afa1f6bf38b61e74695f4298fb2c1625332ca26e0147a37c8c9571f48563a3545451d9bc82a5b8b0905745a923f4657e3decef3b9355cba8a756f38567a8d44391f3d4f2b3622b195594967141f44dca565d47f8354af9b2f862ff2697525b5df380eaf35583f3033fe64c213d2a3f3cb57eead162161594ed5995f7d5450795ab3a6743cdb6326fe02c1c8e112fcbb9c822893ece9533ac0e47fd4b70388803f86df14332cd732164a893f740f988731660461aed0b160e4ada62a265a118e6c08448c8b48f5d019f69f786d746518534aef410718b152e0828b67bbaa2fa9593740ed6c19c8f09c87a55cd50caaf4b268bf4926b326124a8cedfb85d86909243b42827b8ffe6b814443fd54a2015c80737909c5cbe7c90b5806b57e9d5b9d50b4255b25bbd0d103bb44300d5768ff49d8f053192534bb875f86f39a8ce850515568e3eab298248cff1f60c09a3ffd591d594a325e5db3f35b08d6262832f68793266a0a69d70e546317bd2fd7d6ffba56cf1679b18ea41e07de67b0444feb70e6d82a26722a1a0f5cad1a76c718560d071da5e49a40542c032c2dc4f75073ff489a0a50787ef8ca310dc6716d101840aa8b393dc88714d20972405c93406f3a03828229a5609a5b5cb490e337c388dcdc986c23407dde5cbbd902f53f907bb68706d99a94f12f3fd6b3b29f69a49e6757ea901caa7ecf231b8264f0e634991c68382dde45fd2e7251a7ac472a70fac70d6bb5c5fb158a48bede0248acfbd47a32aededf5ecef54e9e7762dcb2789fbbc029866d8ec49c5986b186961df2ae433f2307d90fb2745c04c2042af471592b2a22d354552c05aa3e0171a54c2605db792c5098e4e163728cfa5b5258b24256b7ff9c7db51a10159fd6083c0a3087166b953a1397174e9c107025af3d6d884c5d9ec5f8ecf187a89c41bdb5767f48e8261d963576114434795a2c53f699ba9df41c379cf65eae072e0195da5474b4f476e667169a5d4f0b7353321ad9810f84df3a378e666b4df01c65da0909457d773783c635c1f1cf1681809b419235610d6e6e152966e1929c50232d210e0f62902ecb7aa79b6fbc00c65f7eaaaf8ccbd899523c848a5b4adfcc6599f833b58d2f5faa7d9652f944620cf2147cf7818b85b3fbcfbdafc5fa3a2eae358d7d9dc7b240d401433ebc9473bf4fc73fd87ee676489284167de86fe232afb9ef53d40c9d5cd12b543dd5adabbd7e835fc7b64d2e6462b47ad902b67f3c7ac7d26d3b040ead7c67a8f178166dac92b23770ff219d7b03da5ce5fa9ffa37879b737d1e32f34a3cc69e473f69e1e7d3327c49463c75c6ec6d59ee0308e5b87981dd2a3fb09cc94e235c7ef59ed3bbe7cdd3bc31ea1f96f7cf2cb98c31e5900d86da4cf54a9c79177f7ea41ff3037c87b9113bc08ff30ddc5fcb11f1fb99faa5e3107c6dde381a331c2ba787bf95e4019f2d2468f01ac4ee73ed2286ae246bedd19f731f6c7cb9770b1bdb334673497fe985c9f01ecd5a1c9357428cf873c7c2e62df7c66a7b28fcd0c073fcf2fc41ae5aa32bd8732464d99e3c3f09f35b3296f329d7f5ecf955fdebcb404cef8d92783bc03a7b30f7bf411279c0a7e79a22bdf2393cff5315d6c1e9cef690f7113e65dac7e200ff474ed73cdd2226fc57edeb5738fe5dd1be25d9592359fe60fb913366aff977f7d07b88be961a0dda2cf51e7d1dd805779253c0bfe95cd6415a167ce7cfe3e9d2e7fe3d67a7e470bc8abc790572e7c99771b768ee7fdffe743ba9cf3bedf3cdfdaeff521b306f9908bbf7f7b1d71dfb18c6e261e60b545dd7f5922be71ffe5bca71ebd999cfe9bae1bfab556f3202f031e39e0dffe70ee52aeb4a3e4475d30a71071747e34dd975dc0bd193fe7d8dfce4c9b51d65e6c1ebdfdfba7fcf1581786fdb1bbb56d5da347c3e5aa373e97f3696393304293706c5d3731ed395892c30d1c65ae6c7cf03b049ea7ca5c5de3b1fc2ffca94fb0107f318e593bd333dd8a11451fa0c7555af316f950fff18aa31bc2678f3d32f32774d6b1bdb46e35f2541fbdf14a6b06d8492e674179df0ec9e1dbb92fdbf10b437f60b17fb23f728ee97baa5b7d4bed9b383a5c796bd107729487dd76b22ff66dccf73bd9573f68a3ce5a073ebbcac9bd7cef3ed77b5b809300b0e686d08dd330dbfc0de78d3f589dfb334f573a9265e437d1461dc743a03c5a6daaffb7d05eb0c33479dadd6dc25bfe07aee3be105fea9fd1e4b1dd1b0e98e7d247e49a0f3b3e331be573c84bcdc36e784f2493987cbc2b1e34f91b2db125b3331b6c72c2d25d6e8effd29135ca94df18de0bdc76622f85036f1c757239c3173e355e7ddc764b65beabc35d6eb2433fedd13ce935e509edd458fd87d9e4a41edcf9779cbbdcd7c113fc4a6ba94dd8778e19dff88a1531f172150cddad8fc4bf3f774c8cff609f043f6637c0f8733aa769b03ed84d7dac183cf76fd86d6977b715d094b9ed73bb3c11edba9d8d741658b69f89d7f7f3dea7de41b78c8ccfe6f430e28fb1d1bd38fc72377e4e7c789033f89f4ef8231ebc930e62da67fd301bebd4ebfcc6f1bdc1c6b88c4f67c1c9fe083d007d36e6397fc4b4f9dcb86bd1effd459ab3e81b3ad5e1aade6f121fce917afc363dcd10cf5274fdb11cfbe667b1092f788acbe9213dc6b73e4db60ffac6580153feb9c1cc6b518d1a1553decdcabf54f1a6ef3a3ed6452f3ce7dccbf46aaf00bd127d9f17fe0bfef67af88f9a0dd154a783f8b296fa59171a38facb0567f0758a8cedb5615b312e6c44277b4abe06d389f90922b049ab6e642eb21468671bfc87c8139074bda321a425b36eadedff1c25e310697e374d7026f95d02d930dedc99d5e7145a9b626321270052c3a07be3e10fc886ff53523d04dd5fad1d3e52cbb24f1c377a9bd30d157132873ba41f61e9ef5070a2ce5cfb2f3dfe98d228d45876469161b8ee728dec7bbfd4221391081a263e220d23c1e1f314e9cf27c6511bcd4d3dd4670544b9c226b312f1c6a4025299fca51515be5c72aff9ddc470747287d73097035e174146348ce8a92e5c51938f21f2a1c19c897c6342c9d23bcddfc0cc65fa64f8c68522ceecb393b47505e2f5e7c3df247fce7c0e013c1000a2040e0ce0f80130cc19455023d24a28a39d751286bb7c1187db55fb3f71836c3760568c8f558254e979032e31569ee00442e115cfae4623c8d97d8102b8f17ed1044a63736425ad196397c724725eb1572504ffaed322a225de8e972582859f06d3252864aa480366f3d243d008453f56d3233ebcccdd76f366120f7630cfa2674d4c09bea5a1b69872fc9598e5a9cdd9262b4a930ba1697077688030ccf1b500f7b3545a2b9fd1c5cfbe733e7ec3807e3f5f6dd1521e9471aedbd25be9438726571a1840907367759a468b1e8624f8b4cdc2627572a5e6ec5e7917d743da1e5dcdfc3dcedfdd820e13e1ebf7f6a5d5b18fd8708e57e38d53ed07f0dfdcb6174cac61ca36e34bcaec765773dc5ee6a9d402dae62cb9cacaf097e069b15bf9c7d190703dddc7deba1800588e19876c91dbe1b5dd07b6affb23bd1abcba367f8a78e43c671eb4af29383f2b5e6545792b27e2ecd19c6d5126a343f7eb162b3faaabc0d284b64aee3e76b7fc671e1bf72addf4dfa46509e389348657836d91a156c4da4237ab9e23f5a946729fecb4a96afa2b709f3ee79f667478eebed979e3bf617634ac5e55996654e5a95513b4c5cb206c9620933d8e6f39c0f9e9b94f787db65ef5273cb1feffbfd7f2cd7323eee436e1c0e3a5698055597e2c71f51911f7a58b8df760cee5659eb31d34a251c49666a1f825ee42414307e1abdaad26fac5df74b9c725dca9a41400740d060301041004000706060607050505040d060905049a69990b0100b2a92e1f20a6f9000100e8c90901003ad26546bdf60402003a6a016c8667572c9104df84e27e0102f2af46663b39280602007a646c9da87bcefe28b24b20184888f90200b80c01007455a9bf515e3363fc2c8f243e135e331efaf70635c647e30a0200629286592f10dd0d730f157fd026caabe68ea24399c9c297c7f7bc8fb430b9e973545b3c52825f34083e041da2acea8a29b4200185d70604009398b2e22151d606653a715230046d1e1be6d40461149467034a6a1858c422528103a851e9522c07d10c41c841e6d810271d718a18139285c2b019734a0c87259a197e1f70b7bbe985e8bfcd66f0d1851a6d3c1db9478e6a828cdc0bc4845056dd310eb2445a8f294f2fdd9dbc7920002f7e665ceb0b5e9c89aad5b3c9dd0c2330cb85ec38439e6aa8a0d423c446dad58c4fbff2bee87e67804da36087f6cdb2c0340e16982eb469ab9be6c4f0e79a9bee80610665119bebe120a62f616bd4d2542eaccd5c9be45930a68d38c61b611a4bdd9430dc20224d316f0177f025cff6c100fe60b33c846d4b958bb035066883824127ff416ac046ff0e9e367bc6e51e596816e7341fb9ae3a63860a07ba9a8b0471b0f7446107a86e2cecbcfdd4e9ece1f9eb074d51ca0b724f491d0742213dcdd15ee47b51388cdf6772d29effd013f7e98833bea3f842b15420f91b434a5e7c16c8539c6ce788c3adb44d94c7eedf175fad11d9ff89d30fadb03fe3d793a3a230cc23b90106525a5d9ea8a1400c5f0facd439198d018f0e126e9cb8f82b723a8d60ae3e3a3be2cb2fb31f755e5e3a6f6c5f60a01e7839461aea86bafb2ee76b97689ef3742fcedf210f8ec8fe70fb1fdfcf07e37bf9989d73085311b66ac6f74fb62fdd00cef798111644210044203d1e39cf70a0aece351d2f045e0143e44272b1925d32d2b3d83e9ddc4afd2d0b3bc9180523969e04d0d0b1ed98c27961f1a0d0b4070200f58e25b02cb50a0319020100efd0f52570247039ccfc6d42806107e85787b9eed505f9daa2d24b2c7eae1f00eccdf4a6515aad53174761911dfe69f6a8484cebeae5649fcfe818dfc0afd12a0b784b6c41229eea705080c9f91cfd33dee7400b3b9164dd094878664736cb57388aba5c7d82b222015d3eccfc6a9a81c806210801a98abd901e4eebcc3767a6d642e22ffba85bc0da0ab5e5c1f1b4957126523308e9ac69fb030012f311c600b2b9e91c4c0df88882b88b431844da8b88e1117c5d6606a8b27ddb0be4dbc39677324878cb396c427276a68869e6df56f48efe2e46ea1e4e5d62cfb2cf2405eecbac4676cfa2007ce35f521c4c6db2932cba6999a5d57a99beee1b5d77abdbf121be9fb899b482532f0234c28abae8e4ab7e5b30d3742625033312f0e462d6be3112a1743666e9e6f4f86c9c11415fd2cd185e8e8f7008faddda7ac5a6d863ec8e5e3f4ef1c57dad0c42c6f679a9f222ce22050f80c57491894fd050acc8812cfa9e35d20205e68cbcfd0a0bb5ba8d8276c2f2301006df6136063ce8180e3e009803e400b4ce4c12424f7fc16a8154c79abb9c6f22148ec70c0e44d10139cc3666480bf9db794c587971a12858fca82423b386e717decd137a5a2fceb0581664948205a882c8d718926a028cc371e03a4a9603c29f0ed83ad437233a3f8015c25a01e72c735ff2ad8e4d658663be62605607b5e14399776cfb4bdd06062634cb31c1bcd0c86d7629366c6a9ed2732fc321a7b0cab9c0193aec258cfd7259ede23e9d1d870f6f52a6dbc1b0d1da58395737da303631891b16b4a6fbd289a61093176926268681e67cc78b911c8abc7ee6b10f6525ff81918bf996b577771bacceea90618c8d9fe8e97c0e5736e51b2ce38935646b67999cd11d33cf0fbee062ec18e6eb10ef2b53bb6e67dd21641d9737cc3d5d7dd0dab880329971c5368d25d88c20b5b08f5c97ad816bf43b3bf0fb2157528c7c360673956c5bcdce061879c7e67dab27c6c8d697b48d86077363819366254ce36dee995017cf1021f1a6339eb1056eba2b78bcbca77f86b33adf4430c68eb9290c6ca8e7befc94c6707377285ce1007d3ae9ec28b71d85abd5bb23aa3f56dece81cbaf28bb9a1e6c9fbb72a04474036fb471d1b26aceb5b86ce40dd3dc772ef722d7a0cdce5ccefc1bbd66b6ca4c297ef65a23c7db39191dc37836a1976cbdbf035063a2f6fd0586995d4f61d8369fd8e1d8ae626a611c1893bdda9345f9e0e54dfbe26442c6e4a78dc19e183c9a1d7e686d0c4af1b1d55e65cf91de32ed2e3bef78785b2f2cd898ccd3c3d13abed34bfee24ea9f219b0bfa250f9e39c02539631f380a13e91e3505dafc0d5e24c330d08f3efbab1389b39965cded9b98ec152e5d836ecd33bdfc1ed706137ce231aac3e000440be910f7238681da000754728aa296230bc14cef1d2a95e622c5d8d4e2322e838f8a6d63f20f323ad807aaa3060c8f8007e0bc677b7b48785b5f7d84f7f401568988c5fce1ac0936283005eb07994f4265684d3ef9c9d306d3328fa55857943b689351639563819ee4e7b3a0c6c6a4214d8571e25f80b01006ae6825181cefe84b4eb636b9a3bd0e919beee2353d3037cac491eb1d798c84e6f0dbb4a0939cf5a7bb091ff2faea577a7faa2209a17f8896a0eef34c789b9669665952fc00e3e612afdaa0333e3d84419a6530fcea44bcb064f2497c74bf4a2753969556932c0f0d1ea46d404694afa6033c26f4caa8b381926563c1de2865f26c26cdd80900323531954e9193b486090c0fe24ae3565cd171f4f9513592e4ae937ca19498c8a114192739b7c6f370838a1aac7bd5c20bc031afb49e792c2bb200e527e6ed3b68564102b5b3d33860324eecda017f3091e0bec80b02d028ebe2ebb310609b01545cafa552af92962810676bffb382620e465952959fb06c90047e0c3f313d69d3125f1afdf774a1f76285637ccaca03d3cd2b3dd5a1a35c9b5960aeba54f2e7cd55a5c00e33a8b5e799738cd55859e714ee87558461b0a3a11d2a9d91590d1c347ece0107e51d8c3929667971dad7d5eb98c46767d6cc89b0472f5a8104075566a4b2b0073af5787dd4dad2f54d4a77bab53833f148a5d4ced3b2dc4089a10410f0ddc7eeff1850333edeff2070100a4b01fea9265a4d4c8a9a08131be03e4084409390760b17bd1011176d2b85e0d41716243f082e056527348e2444630600b6a3e6e949f5b1c5429fcddde02e4147f60e1d3cb05772d5d6da04cf600523c6cc4f42d078c20bb090ced86b60ab283cfe35f3e6eed1d81b1546616826a3f362db80af93ed7b0e03213e6665e8ed70740deed674343e58ca578a347679793748dbded4c0636986b0131f7fd5ccc6035ca386237c3f80b1a5031732a9aca70a05a8a13438b6c1343b90f19fabaf090c05334b2da04e5dc6fab2b4e2fdf0f19d6bcb35e7f8780fadb2b5b1d4da3d304343a0fe48ad5050d3d6748d3a6f2f3867e2d0ef792895c74a45282cdae548425a4c101db4700ba0173b1e1b88a0b4c7c3005cbd458885b74c20650805cf04d22930b7447597206fa0d4318f488b8b7e79d7edbbc40218df5971b107497785686aada41e00c3c62926636f894497994c47f7029fc1cf8b0d474b1e96dbb90620cd220976a24543302af57ecec7f524a7a87b7174731c030c235c67693a232f8aa27f763444d2e400302fd0154d32f0370b07c3c2c0d127833c59366f55af8d910d0f3560434c0f01ae41c901ea28ffd4c215bca451ad5a82e5e5c31b79806bcc7a1cb3adcbd2bf72e0fe25c8fbf4c7c8457e313d6b75d0224a25c8ca6b6a8bcf7d77758c4973b100434ab8ceb9420fb0737c610840ba893806f6333951128201910475ddbd3ef01a34c814decbb65d4a495c9edb5f05a6c2083f96317b83512323be8936e7da34edceb00197a8035cc0f98fbd42d7dc3a3312cef4d737bbe95f1ed6c713503618a87b16faaed0dd1e4cfcd8e6492985b71f8d3d1322b48da0d531cf60d79ac63476a5b62db1bda7813e6ac269e51df65e34816bb198c2bf81b61b3ffca8fe3b75d6b8b3bbbd663fe25f0b1329b066f5fbecad0951687d4f741c462032d388aa9d39b93316a9eb1470963b974d16c0fee30b6cebd751d0c0ea28d6cf150839cee524fb884f3d0b76bd6ecc78abc1d45afcc3ed88c8beb7ea88dc00695cb864d5b12ccae4daaca8aa5efd96a8b5669b7d8157366bf67b3ce6b9a006317ccf8419cd36ddf65f78c6887cf5f39b031d68bdbadf80d47602d8ff5c670bc580d279ad33167ab675d1bbd4b1b28193cd347fb99de821ab039fb0c7415a62db1b664820d8d2d7ace5822a6ebfadb8f1c770fdee20157d0a01c3569e36c0cfbdeca756d270f20b6af90c89efc6cea4de2366beaf27a13cd9dd78cc89c855a4d074b200c60d4f85d870f1e63ccf05dc6e67496ea9ba5e5660d37cd638865da3e39c8da8d96d9bee0215bd4d7afd36cc734e5665e1f8320bedbdeaa5106d5b99976d0f552666b677436e613db75ff3519a04b838fe406121bf3da416fd9787abeb2b030e1caedd6bfdd5a5ddf8da0d2166e6506ffc239608740c3ddf8a65cd1946ff63af63551db61dcb093e659a10704ddf12e76b86e33388f84858b7536d86672bfb771e6d778bb41a6cedb35229af3ad1fc0896d6e86340a8bf55c3ae8315bfd221a8a45baf79eb768a3fdad8dedd18eb3242d7738b5ae3535d7cb8b3256868c1a87ad5806170e5337a56daeecd2291e8b995a27961631cf9046b6c8d21b3c847b8c75024fbe716fece2eb45370919e04302e6b63f6c9e6b02c6b1fae7db19d9f4bc23e32c4ff2258e67f0961af001b1d13a78de748338715d274de33bd5e4d8731b4d666fbcdcf8b196ee6a623672c3242bbf0d0b37a11f86e64b6acf3c6c909a2e75d36ca669c9c251f79907cff2f674b11a7ab4dee17775e09860d962a5edb38ccb1b6ce76783f556c95968def6876de61680d5259ac27ad8ae93d32a4bb6c14cb75d3b026746de6127aa8d511d78f20761ef10f3990c492bf3b9d1971ec890e574db45043bf3a7dfaa98305c3338f90e6129e5a838e798f71eb7d6b479ca8eb3363b34d6dfbf75c0c8245fb13db3f7782866bba741336e90dfa318d6a58d2e36512026fb982e6c429186f564f7046fe132c26a2c6f168932bbe353a75deb96d413c7f93dae3ccba06934e06ed523bc3d196ea2ee9dd8e4eb1847cb54b3970f2c12d7cc7a0044800535abf73fdc854b4310dabb07371545f3a413017bbfcf1b7abde53e7d9d144491c1e51583b39001857cd424e059ae31aedefbdc9c7d17deb7e9aada851516f2e212e17b003054f00087ef7f02e390c0520824b29dcd83b3d7c0ccad2607561206e75126f48c050a36c8bcff2fe212aac2addd07e87aaa66968072d2546384066d1effa0736393ddd35e641a4a055c1a9a617f1b4be0103dd432c3a5b3dd13189607befa043f6f86b6e0c170517eae725336c80a40738f16f7e25d2151602f668d0f3f012088e3a679ae71a4773a2ac1948f625dced1b2414e48293cd6d9ac00466d4e7c6ad34272281f989f726e352252752671a11242753f3f39d7cbd900abdb7a4d15f61d93eb8c08388ebe5328a6870c3cf5250232817430116081eae88a1e5c8cc9a66f9f0a3a023235654de66217230496c62dfdf2d3c2b9d4c77e5fe2d5ec4a494e8d6098c8b5e394c42bb80ecc6814566ca0d052273d6dda2cc40a959c6790c1f1debf3df8edcebf92575e0deeb184fa2a49f01bfc50024a2b90638449a0a8691600e1eb73e5c6ea1aacdcf828c80cf62668496c46d808b6e699c9c3b04813cb632e128a205004e5d90938cc940f40707dad4e7ea586dcd8fc64ec76a042b4e4ca0b34640b3bd8abc5bbf5d64b7b5e24c6f63b6b51010008390e0965997ae616baea76a623ac3cd596778d8c0c82ee1e09ea4a1fa9d90636d0c1bbeb75a5184889b987680a3a9879795a0dee22038cf1372348e567873262d22cd11e28aa7834acdc610ad0a301484127bd9ef02045e8d9baa97c350ad27234c42708c307de0ea2d243248f90d5b68263505c9207810f875a4e7eab653d12d96696c68a86582dc19561914411341aa889630e4bebccd67150e238f3d49eceb3e34d59f9962f5f2e031444d1a4c50ddfdca1d1391a28f0d202bd2486db68982af4e3135ae4c8a422fced919f80b8e8e717bb8ed65d31c146def288a140189b6e8053cc9f7a383bd474566b9ba0752e3edadb7c9b13847acfb044e61a8c658a290a472bf2a27cac2fb9037a8cbca1d1c81657f6bfef41dbf9ac95c52ebeb697bcf42103711692535c92c2641de111754802e308e917475f403b6b0f88d36989653343ddbab19b296c1cc70c6b9bf8d958f8631aa7884dcb9e01e28ef90939c8f80e70492ae8423c11ec1cdb0b18e065857c4f82cb9ba609c2d1b6fa2af4d51ad85c1e6b40de0ec6a7da690ebe7b5cc3a417944526fe2ed63825b4bcec492dd458f02031612a5adbc97b4e82b2ef1f4f30932e4575567759c6ac51f6fb013121024116fedfa376b4e40cc8c1a2000b05350d5079bb5b8b72521b4be1c2cbfb4d7da7d705a530bf01e20900c02d1949ca12ae152eb6dacf80b03262db6ce7905b8bf098f7683c0ced4deff424b0350ff09fcf9a25885bbf2a718d693e263a1af60358280974a44bec1de16512d2a5c99c97c70f3faedec8bcec6a9afb2bcdfd1faf4b7b11415ac8dcd1782a0939ae55d8b98e612aae087acfff7b67cbfbc2955fd10b056f50de5087b772add432b2e2421726b69d70b3e31949d3b471442f0dd9412fbddc0cb4e025fd6d9dea92cd20019ad0003a6a0c4e3a1bffe026a6ae039fd7aa84b445758e22d06ebeb5321408387d3e3dd82c015f8f9ccc6fa6371834092afe6922e03478a87fafef96431b55f2c60ac477951b8e85b50dcac4a5a7888e6f4d1a053559faf458403c00e1f6268115f12b0f0636d5262db40fc1713b71ab471c4b0b1c4cb98c26fef90234c491726011ac8d2858d9c5eb1b8bbbb1e1bc9d2aff7c9bf59c78b9724580451848e43c0232d606881ac5980d845839bef80aeb08a04cee576f065ed129f3f62bb0b8ec75a542236a97e0784d7d48fc10403620f323fd66614273a37e1402f2c6999dcd609082556f9f33175f7a6739d9cd9a7bec6500b8dc302555683d4070cd3e909275b3dc113f6f76576e9e50ec99a4d1521646295904a2a757df7544df1c9e3ace10c4c4f497a054350030fedfb6ad6995ad8e775c370c3415b083ea619ccc27ee2b0179a954841e96ae8fe515af334c5641223464a38429be9bcbb0e08378ec1c607d23b06e4a2e115df215dabded7630abc5e616649431122f5f2050dac72c5c45497cc1530b72a21a4a6041d760e86aca0442405d8dee94d3034df9d628961718f90890fb2b60281246fddeeb1b302bb3e0d115451b4bddcbb6e68984b99ab380e3010104cf1cf152bfefc9f9a8d85a8aa8d8a1449e7f46e1c7a87666cd4abfa0adcb0574a4d45bfec9aa1998462754750c3ccf4e7d5044251df9c2f2644519e2ddbe8bed6231b394a2835071e886d3c5c9bf5a3b8a6b76491646404c12d49194e4c5981f10f1d8081d4d9c2ddb2e320a9576e2c323ebde16ceafed790cb81c4cb0a790716893bc92b7e76b4c09eaffae1040f4247faf5918be056c4dac3613f40d3d27573767aca3eef0a182540e6ea3b78a3bd3f12136e089e6cc1e58881a4474f929f690a3d381b14c131a4add0d6439afdfed1deacb9cf54fea7a5b49795be636175ee89aca4b5384656d480e3e2a6a0d3db2855058029c320776b56d9da7d7a3aeba9b15d1af75600863932506f6d7c0b71ee89c6f3ad1ba8e7413dc2a1f4fc0fef38ac39abded1fa4a734f4d5ccfa47774a508fbf6e4fe6c7e3c444741343b588aa61c16b44e5dd07375f8f3b1cf89e693fe7e15714cc169bcbf004fd2d21a8f2549a6def1f78a8593a4bfdbe94562bbe27bbebe41419035d2c04e136b6e68d6e14f508facea15afc743d4c2dc49cba15b8e80131ea1a98a28bbbdc0c99228ae91cde380d5383f727413ec71316465989cfff4ce493c33ed62ab691c1caa807037346d90943d893c327576338ac2d07abbbf243738814a8b420ff01b365099080643e9d6c374cc4bf0436ff883659f83e4b964dcc8cc34083d1df3ed3efb6c9560b76f30c5dc298615b21afb53ad932358bcc2ebdc7a001265b53030c74e1c416197db04d1c789fe3fec69e6adec99f99facae3ba65e260dad876edfc2bdb38bf26bd92b6e55184fd715d589167c3a6e96a4c72cf5cb5fd332768fde05013ce1db0193667ca70a3db03de6667f739f253bd7fb7a18927e0b35c730f6376d8f6ed2fb5f18cb65ad719f772c90c655028f306bfd899da6a4c66a600665a4670a7a4e92c7d54ce5c7554bdab195b9a9d0d13640c1b57ae6c23ec10d669cafefd0c703a2777e24c8bf4ba058d246e39a739ebd66cc62f6139dc3bbd255ebb1db716337f08c36535f0c7c687743eb5799e1abf85fccd4ee5c377a634e45c61730175277ea1d49c58cba4eda5055b864fbdf00da523a6d7310076f0bdb15dd3b1e731ff8cae37b08465ab867923c2dac4a61fce56c6e3795b781b346a4b950173a7b4984db363c37773dac2cc6fb0192d3e7a52fbb2f7697a860bed1258dda103d69add23fb9fa9d8a44ed0536ec1d66f7e396de9fbba7900abcbc4027731f3cfb93ddd06749977eae88c6571f8c5441b617705fc1c1b6f848f0c99b44d65e8f671970d32b4ed346cc9aa08f7ad3f8ed1de8d16c2f931139bad1fb78fe07e546e1e3a6bb476d496ec5b30dc4a6d9cf500d3dd6f1b9b24b6367dc2b5a5dbec42f76296bad5aa69d66ce08c318faf7be70cd90679064bbe35f609bdcce2e0607285ad33cd7d326937801d3018faedad0b4c78728db5635acc8c5cc98a3cc0c2b9d96d65c7d743fbcf0e7c642bdb02973b2e79de5970c9d73ee698eb899255f34edadf6242b2bd436435076bda922639e7ad17568e0b7f9d762bb5d66c9fd964ff36ebd62846db7ed6d47e7596b2a459c4f4a3ce2fdb30f6869db366b06e1eba823ac86ee7eb1607f79db89fc8b233da06c98cf398b1ed79eb7a22cfba3c798b7188d5a90dc7b1bfd3471dc48c477788b5b34643d83b7b531a08ba9f4d4bc33382381b6dc61a6301f133f1eb16532eb3b916090c7424b101ed9d97a39925dcc78d4fef6281d63c3963cd8127bb033f6efa267f85110aa03686e7cb2c1f1c0046e93a892d87cceb5c6479097d0b76279e8e78c4ce85fd0f77779368fa527392bbbcf9ba014dfdcd91ede06e67fdec5dfbbe680b7a700dd95ceb9b5333dee66d2f48f2849de4d08d756cebb1d6762c68cb185ae021f7921e1a8b7ce1fb8bf38ebfb58b7bf0199efa89ef105b28ada9c3798870a28efd5e672d31be4d54d34eb78a81bd2fea56baf1cde54472d19decac3199cdf6fbd36b7f52663fa49ddfe9a116dbb0dffefe1b764435d95a3333c1cb959bf2b3aebd6006cbf44dfb4b1de0ddb203d0164c780dc1318e86cdb12826c54c06f86814cc400c2df6c0b668331cceaaf3fcecf2884b69a11c30cebc681853cfac19fad86fd84033c72107d333c09bda257519d0f3b647db63c486f15ce2e7363ed4f96c863b74c1a47559f344e9ea16ec32fd565ab0b97726e36ccbf2584f64742b9f61639661b3e5e50f6ce646ab0bbd4f9aa72669abbf9a5b7813cc76ec91ad0f1b4543e67eefce580917ecec0d3d98daa068434a6db7096b4f968ebaff0299881d9deca6d30bebc180b76ecb4563b5e1f6bcdacc535d488bf34ec838034f35c03d38d36d779b3984854e9be3f63e39ecb23bd851755fca968e15ebcd94ed62ae6c49eeeb7468fbbc2dd3e8aa8f5e6f1bb7f4fb9f7f21c306cbaf22c726d0f885f14e98bf47ed6641970ff2b9816547c35dae26d007da0fb5f28a96be010b6f8d7bd0799370b9bcf134dd189afa716d2d47b4e403d8e2c5afe4e2857646328a918de2edb46f8865cfd9db255b1c94dd0cb1be770dd77a3c60a0969cc874af18dc23db17feb0abbbc6fbec720e7239c4bdc87bdd81ce7af6d3e0b86bd19837ac9bbb6377d62dbbb3fe8cec1f66f2088bb9e270a57c609ed5d42fe5581ed89e92863a7fc1bd6ed57d4cab143fda61ea0be512dae1609ab6c195583a5cc8c540abe7da7b37da4eb2da69cce2d1b16995ae1ee6a6dd0ed83f647df3e658d0bb55e49d5283a7450c2eccd6214e3d36c5c6cf75d8749d6d8c2259a9cd4b2fb130e30860c678684c6bfb09dc3c74d65d1373dd21533b681602cee8adbb7304cd9ac2135f19bf984d6b1becc1a40b0bdda56612ea653460c28cde6c5a46bbb0313d4f69c38cb25bfd5fa186bc515bddcdec00cbc15baf019f93739016a7588c051c7ea8ece49987e4ba013b9a736fdb45e1cc80a1df90b3bfe0a103b81adbf910be6536dacca62358450ad8da33f0013675f20df7ed16a3312305566a8a09707950dba57ccd85cfdbb4adefa86d86da7d58f797334d036eb61acd45560f9dbbf059d1d1443bf067daecf635e8b0b0a15dcf2b011bb5bf1ece9ee90b0cc5b2dee479a2320636ed06b63c637a1ab23a79e9b926031a5d6b2dba1cffb194270bd665b72fad613435619bdadd8d0f6c66ee2e1d6d56dfce19b859141b76d2e68635ecbe595ebf8df53bc8d44ee6bb23df3bb79903ced4a4d7ceee080f26334287191ab36baa2df160f0b9966aeee37a7742b6adb5bc64835a6b33c81614b6c01a7c7800fa6c9c1a3b20a0560727f48c49ee381b106e6254fa19e14533e64c275b2b8866d89b11f14907600d052f8a7fed6765fe87c6177ee001a69e72477fbfe3f64f32a7018b01740166cca6f7cb967597ae329b54b7a7329928c450bcd889301360b6d359d7343d73a7dbaf66d3b69325925e4ca6d369db754d6b69695b94c9b4ede488e7723aeb9aa6c3e0ae1b573b02e99e93dfb38fbd93dfadf79cfc5e9da977f2fbf44e7e9736b990ee39f95b58d240d634da04f4d15df2083aa143508690a183ac27120e703581d092e30ec08f3d7f0a9755f9802864b0736ca4307ad3d3db996d230951295844a8b56862b85778a7c0a1f406091c209ab63a164c23cc6c6805b2289ebb2bf58d4d017aa6197c25be69629a596b03056c4322c4ab34460ab78e202f305eeba24ce3373b8d9da60d6a5559840c079f69506b735ba429ac24b1b438210a18fd1eb855591bf4c942f73c556833e8a95195adff417533d7456c1c245d46509dc16df7e6ec30901eec562cd12ac3cd0036e1fb210e33aa0c11ac31519c1cb5ec92c87073442604c593c8ef4be4aecc542624f631a4e0a66a2266dcd8e7e3c5131165ce4328b010f1e0bda94d88d0c16970c2a243f322aa578c0056226e4c546b52e54623449c02c9c17a69115df3a5074ba10c2953dd2db99543738083122286be416106c4356295082fc248df2d145f914c0b63ef390fb87d3f9a5c478bbbc65dc10f7e4e4d410043b03e9f5028debff619ce347b1bce0c0aa5691cf796d9f6db77f84edff7fff30985ba51717b2cc58f3d9f509a462106c5c34e7c1877ca9d92926a36ef1bc76d9ba649d85d75736a4afbfc976aa5cf26148fb6d951289eb3d979762be79085a54140d252695f38928ac0c389122342f454548141e5eb5501a8f5e14a2646cedf24223aa2752525753176693c642464761d82d9729846cf09ab092d6bb9f48a5a60a0801552052947068da4d90286429453d302030508504d613915b93082599b5f67751d16e5d55c2eb9687cec89e74e56032bfa00060355051cd510b8a7025415002b7db9ba9586eb53ddfd82558df70309ea5f22702b969fd0f001fffcc48163bf2262be3d72de33b90afc7ba98769dab6e76ab7dacc6e995fdf33b82733b0d55bd6ad72a74a5aa900014a4a875ecdffbb75ea9b48ea3dd97922ac04d3cb0e7d68db7476ab7726f39fa66fee34bba58069ff8a4fbbc358b9249a73b94442aa6b9a9ec1b3f57bc66c26e13e7c39fca8d50f1960b18cac7a57665189b51a31d86cd875411069f03c4183c57933e0de5298e051e39020073b6e216b1e96ac88599d0a677490c0f1c52810a03f7e943caa6154ec4b0c73f8850ba1962c8164c02a7f52a03819d2453707f6f675b724dab221407cc0a259cdc8aa63e230a836ca1bd04a152a7a792d583819333942e3ae4e06dd0ab93838afb62dab8f65fb862f291756047c793bcd8a68ccf8d0b3e2d1c31e3c485a917e1f7f2f22cdbf2ce23b9311bf252e868691dfe95a9c7fbf03f37740d8f73a93c0ef749d7fa7ebbf719efff75ecef3ffdef9f2fcbf77729efff79e97e7ffbd4bcbbdf7c0de7bff1b8fc7e3f1d2b85c2e97cb4be5fc3b935f9efff76e68f8df7b9122ffbd1312e6f97fef62719efff71e1898e7ffbdf3f1e5f97fef64f27fef7b7bffbd0302e6f97fef797979fedf3bd3d23c2b9578b863f159d9fb83954adc8acfcade5fc1acecfdbbca6e953be52aa7b3b2f7d7ce4aa9565ad7b3b2f7af93f3ac54f6fe49a5722bbbf5015e159a50bf2082623a8f848179f0dc81b443674e1c386ed83cae7154d3c8886651f1cc2016b299c1c12e5cf090031d39ea70a156a6a57545c518050b3200c8b2d1238b38b1d7ea46063e9137c4dc20bca351575796d5e203dddf182db0418f880e185cd52abc522e2c796b20e651307c5560e07b2d5bf0c582889baa060ad751318ded2c5a458ed89a088c14c616f029ef03be6a3467c7957b31c3ff08802623cce7c8bba5a42b8ca1a52307886b87af69d6d71bd5754a20679727a71a48c7d6875b1b13ad6d3d848c4e790c320a7988d8b9c80f23ab4303b46cb9eed0ae612142b9f9a6156a2de28d895d596960d7b8a8c4d65085e7415c48f720c61d317c42d090240262868120073963e22486e5d475985097b44a12eeb6d9281e541e0451735229d6029cc02a856c09a2b3215523078b457919ad984387357771b058a90239f0a567a1ab8f4b6581e015111d7056143a42e51a6f61b420310086f779ea0efaaa98e27d9dc7974dee300891be3d285091867be07242898add6d8c3237ca081975226b4c116c32fd352f4e736392c6848ac06f223e503344b2e1c10003dab2600c1b3c4517182828ad51f3f0c35017443616213cdc68ec51d7223c3724488815a824e6fd077398211286799c98684800e4718028b11b144003e101a7f2dc3ac7f965ca60d774b594d9b1c587320ac92f3e05119953133b71f49e1e559b05f5762d797d97fbd9f96aba0df9da1f51000353f73d288b3fd771abe8208401e147a7775f3628dd1437e45aad671f18be1833258e9c4a9ef6ef98ac16fb2f73c4f9eaed21ead4cb6702d4fd577bc5b61e684f2c8bb085a5f56894e37f142f1e490ef9ce54acff56de6af3f94932925ca493d9f6b4574e41bfd13e85defdddc84198c84e07d2b186d5c1f6e07d5df27e5a3ca16f17fa0de7acc1fe708b880e51e1da5d56d847da4ceb1a905cb165fe497fed90a361ba7a5b5d1fa7038127e493df01a673ab1e05ffed4f9cf171868600f2630c2c38ef6c0f0ff86c7c04fcc69578fde2f93b889dade1ec5bc72667cfe98a93485bdd4147c176cc7690452d0bb0f7bf109bfb88836fc86dd6808eeca50df71f7b7dc16fba3f3cfe740e9f967bba21ef153844dcd5df3cc3d5a7bf74fdf0cdf3dccefedfe130805b36bd7f8cafbd3d36861fdd3b5aac0166c3a3b66ec2fd7205ff665eab3fc7eb2e843161aecfb35a7fd53dfc48df6b077f8eabbde9f5741ec549ec203734fa982d8fb98fb64897dff30c3ab48780c5eabd7056dd4bf60c0d22ab65465a31c75e8463dbc0aff98c3f742f4e194bc06372af9705995bbbfbf53f34c1660043ddb9adabfe367f086ec28263eace7d85fa1030c7bdbcdead93bdfdd7b9f6af714191dfc0a56cc7c1fc72614e591fdc213d61e610f7781a63894374784fc692b6586985168d719f0e7070472efac4471eff7bf8f1f6b5c20adb628fca36676f1e1cf9fe1c532b1e7ae0c4b5def0b77f588d1f5f6c0b9e3d0fce373d8ab94c4ed60537c9b47ba4f867fe9fa9316f065d06f0c0223f3bdfe0f577d01facee04bb6e98f6cc0e490960d05dd6cf7b6f3073b7d888d9e03efb8bb8f0d17113dd06f68de8f1e404fe00c2f5d45d7557333cf41f8936343bc96dc0336280586c6765cb6bea1c5ef47011abcfc989bce09bff4364fb6377f801880b06d09ecdd81d0b7753f7feb8d1a9270a799c6f5fe03b17353e4c8db58d14db0035938dabab2bb7610f37cb0df0aa6dc7ebc542a3d9789cd27d452aa2584f0dde10dc3b14995ab83ca55bc0066252b26855a56ef41c92fb53ccc26c02c278fd19b8c6d3dba47ff0faae45ff54eae6d5a913afac8e38238022a902ce2073483374c67f03ae5cccf6b02174f3b1ff76ef66e871f9a856aeaf76162e876b73cc3f63dec16a68a1734415bc7da1001b3485d870c70f716372ee5be07e4e9b3bf0c79a94c6f38d78828dfb48b2f7c0437ad9dde317445f1b383779495b9a3bf6b628ab6cff0d2de9e5ee8e5f10cddae0bee1457a69eeb1d7a25d857d37b8a42dbb3bfe7a78c3dd5aac3b92f303a1f5ff083acc6b2c881b1b107add8f65ccba32b7c90c49bdeb65f7033118d8e1125b37b0411b69a2e93dd8469a209806374c4e0ce2c92a287e6f534c8f1d062aa30e44aafff42e26dcfa208d56bcb62ba405f46fcc329d2de67ce60494e9acc72db9900ec019ed05743b9d7becb52f881a223a2713adb6431dd2141c41bb4af60f788e788edccfe142bb60e6c8d688957ff5e96c4f102538140aefe54f5e74a96ea841fc94b12f0f9b6bb075838ea0bb12ce85ede19a99f17596c07b77e85bd79263c08e6661fabcae81cf5dd3feb5b8f91e6da55a66a09161739581f730a86860c686ed535ee5b30a399915861e122532ea586a1bc8d827da3f0168a673d6a524cffd1f9007f8cc7e53d370b483acc3b4c3f1ff39fd3ba03c32037ced25bf89ffdcfc3c3e03ede3583b6c58b9dee0f3d335e2511116c6b69afacf273c8a6c96ebef3267b7df5b90df1e567e56f348152237a9a72c17289c9ab29f5e467078c2992ef15476f60fb3c2e2ad9b3a9c1e0b970abf7227ba46a2b5ba8f9fdba1c95605a4807596d7f13ce61f4d2db8049f11dc34dafb43a2dfd6719cecc044dc80d65506374ce5743e686275e33e18d5a4f74058725bf628eb5ac96e2c66431674f3de5ba5d490d59db7a649925895c9bfd9ea9f946afb5dd887bc81a908ec327b9e0b5988af8e06059581c5c6892914ba27feb6940c3cc81042bcefc9d12f62b5dc6be9491d5a73ca477de1cb57138f49bcaf65b37858ab7d412c2d58efd9a347f756d1e5d60ad873bd0575e822f097ff2cac43b3969ca7bf284246881c9042de0561101be8260caaec107778c54caa9df98229a22cc21035b750b30e06ddf3692b35744c218e1e39e79ff361b8d3e967f56ad6b12e1bd760b1dde44cc82539eb25ec3d783e8b67261d86690d46721670a27cef31f6c63dd85c7737af904712f714da45f0a28cae544b35d1f7b14a0354301098e0900b5cd100c656476dd70d50c142532353eec6bbfe8dfb9c9e7de263749c7319c2522d20f984a0311b13d1011f1cdc85136d1e3b2083716876f24ce00fd73ed9aa623d201d559f41dddb3ffdd0aa78325d735bc1824528dc41618d0d82505097cf6ee047b045e6a89389296dfeb0d92803cf62dbe47b637a6bb91c2c3bd6742f2dc2518fc460dff1fa6dc88d0e7b7c893cba93f1b5180d1103a8ddc34ac5e275b21bc9350d3a1b580fce2277b007cef193da0e53608be2b5ddad86849b9f737b3cb25acaa0b1d8842dab43c8d57a2fb0c89fe54b6351aee2608817616b87dd1aa75cc0e763b569920d9465357ecd3d6553f05b0cfd7bd46b57b7cf5665192feea9b3d1c40ec2ee681ef03682fd64da3a73ddab4d6e51baec8b6ea576f820d76dbae5b07599d170a34b5693db086fbcb3cf9e9d5407b1d0ebf66d30b1b836f73f633cb56f169c09bf155a9df7df9c3bcee4aeb7bd0becc8b6bc19e550b5a83375124ecc2205e824367e66ce7b5c0c2c52a353decadb707c836f4793747fdbc391f51e547f67b29ae87c1da6a5c044a727b3e189cfb65bec6cc1acecd0b6c1529e2ee154de5369837665a738712e56690dd182d003ba163c4e7701f497004a6ca0193720e24e07eb7240c5a052bf7a01e082fc552d3044c2e74afd163d807b1070aa42cf20e80f6cb1fb42bf9023c6bd9b082d697bcb2da54c32bc018201320180db3e5924232583202a020ae1efb8e30faf8a5abca7b8c91b5ca2a14f8e27df8a137128b0658535d097cf17236ffa79cc6421004505069a101e851410dc167405ca11e6879e80b58959820e8a710d91cc2d40d49c53e7210509e4d42010b10e19d401372281b6cc21080b6c93489e8470c0b6c822eb35588e30cd89235f832b2885866e8cda283231093e08a2adb93c33e0a12b2cebb3a8c3121c1614a265ffce6c031f78c65997ddb01c42f8600c70db41acc31240461870c0060813dc10e1d0b3ed8b040c53692ca038e6451d7b6033a736469bd1c0b2c0c2202acab89884a132b4e7c586476752b9369117b456459d76208f4cc171e2019c83cb363cc832b46804e7cc8f4d403db0c9cb3c17afabbe3e7594b1222925c58b3d0e6759635d7af2a400f470016acf0d2e085ae459e8919a0e716a7e1983068b11f2d314a0150468c91e1580bea873cf932f30c4292234845e11734c76592f924e1a61f049b02a2ab2c1c1185d371488ef4e99c1ad158621f0e6da9824b89e07960a09d7cc22ec4477aa3cc13cd2e3edc61fe553611f9dee6142d270369ed09619a8168c9d555256525652128218fce0e14e839dd7014ac8c92c5228b194766c6801317f7992d352c6ee6935ef8e7dfbbbadd07c7dd88a43a55c8ed54dd74c1dd37238da1475da56aaeaa666e8c77d672c26695392f57b86dd3c7d2deddfa5580fcdd66cce4a5c630190fa2eaef8d56f927ecaaf36e0cda2ca5b5a5befed2c34c3d4abea5834c095542d57093c341ea095b0809faba6b29e6acd76e56b14fe177bba62e325aca7aa02194186ee9eb567492f8d6a77c6fa20f92b6f5e5595dadcd61cffd5678dddda9cf12c8e5f283d17567cda7575dfac9d90a76e2cfaa999d34a7cedeea65f9269442556f3de2d6ade10b0735e8d8ae198577ab53622a50e98321c5d769abe497cb047637ee3a9a3b80f738faca91f18b626e621335d85c866d9aafb1937c1b20811f731081c9ca3a3020dc40bcda797c637037aac68314e89e271d3a1d8e302e397c5b645441e4b8d5268ea18d3722525f2189489a38d9d4258cce8155d85da2e296cd4d578bc345122cc72ed801d127f7c191a7d1e383100b34ce8a1ce60c2e14f6e303352efc35688c3ec2143040403c5e8609691c099a50a0a1f54021c451961368544fdc4c2891f59db28b9e1b3a53bef9c75e7d20ec3f9bbdeb9f7ef6e765ff3d7bf3b9ff6773fe67ae7fd1ceeff9bbffbb90a3ff5e5496feefc5dddf96ff73febff1cbffed76e7fb59bf9f7bca551ae7975ba757e7f6f5dcd3cc3ee2fe57ff7bb86e39ef7bffd85eef773346be8c3f07679d48d660e7da7fcdddf3d473914ce1c0a85f3a6baeebe6e1d6fada1eed6d2ecf277faecbabbebe7d90eef7fab8e63ecefdf6e13f5a5fd5ff717eefdedd0a8cb35ef511d7f8e5af93be549559ee127a95443ffffaf39fa1ddedc0a8d76a876778eeee976fff97663a67f6a8fe6cf5459bbd3777ffe2b160ac5e3fc3909de5afa9d4399f62b55b5d4defb85bbb4aaed3118f5d5bceb9ca4618de5bb29a676f7bb95d49d4e650030d59ee2f91af377f96bad7eaf31e72f0cfd9fc2016484befa9868c0a32233266f4ef2cf13c0dd01114cb4502a5ea0416df94fd96d099410344358d745b09198a8e5de13ad999ccd28755010f5047246c5e1a0a583144540542b382d7c00e3d91887e4f00f8dcc288cf9b187aa151ab75cd15201c5dad9f502d34fe322300c78906589de58152a6096386582670c84983f2d7e534389090cad34fa8dd9d2b2e9c213c1366b287012f273d1c80f4ac44f32c92da31c8ce2e070753e2a456629993e6cbf16f0696249c6724054906cd0b762ae7a32278534503408b7e909c2735399ed94da4538b7181c9fb628b1be9579fdcb8d0ca534119c4212486d32667c4232dae3d1644986481d188f78ba0464b7fcea54dc82ed13f3e6f5c88643eaa4c95d9c5f963245293d7c0cba948b5391e537a14308429b7759faf620d8776a283855a9787165f824c28d08966bd44d4e0b063da0d230a11db6a15584c5e99b0b304f3f7884a9090ea3cb57c946e8e5c1f18a42918c3fda2e4924312d01569a7a688e5ca0820d0ce27562cd9b2cae40391c7795994bf86c1fff44bed461dd0e188ba27ed03dc1acebc2330491a32e354942f30d070bcfcc75211beb99a0af1d497857241610f205d222ed87d8d699a09a8814a82407bd2e008383413c1a114ba6821e34503200747470a9ec880eb060381050f4ff029bdd4e024d83604d731b91c6af715d12e7dfe9a462a09d78d13a3a4d1a714cc4b0776cb3d6235a01b8a577b15f1b23761b9a59f7940b279b5e1f8e4de2a82df77eb61d9668083100be616e4e971a9c3ca346cc43accdd9329ea21858390abb30ad560d89c958d268ae01db32080cb8f0c13b8367f7a6df03e133076749771cd80e35ce146fa709dc24cbe3ac8373079bf05bd364b365649bfdfc9eef3d33b9f3c0f282c6f1914e101336d36526eb46d0ce27cf65a979eb5f23d4129a00534ea8debae0469ea9183b2b64c489e9aea73a0c067f726444976cd69f4d83438f433c237e28877928dcdb474b7f95ff0859e15ec1c0f7a6f78cae6d7b9eb4582494bfce1ddad8c5cd13f80ad291c4aef3c5ddf5323a5b03b32373305ca65d8dcc3b084360077dbab9ade2f6b40cb3658f384ca28758f3e43ca950c5b27cd2f7df2a18a1c1bb3a6fbeab88706b0034868a8116887b89c4cc653c4b82afced107c9de649355b8c04dcf0308ddd0fb59b655e2bb7d9fcc613073071f3bacf6b172e7633ac358913fafdcf3a6d332c3d96acc56387688d25e4faea6e2005ea15b3b43eb5edb81f93ddb424429fc3ab3f232bc28b71caac430b101b10b60f73e58cca47bef7066ca0996b1d8db0142e4f931998559bceadcee93660e1dcc95c029d8463759ece66983b9c14dda68ac2f48b7a5acdfeddfde5b495b4e1b0d4f10c6168af0aa0c342ae957cc6e349bc04fde6a06c3d25ed038f8c6b5ccb6e2bd073ccba3a6b2c35ccc8686b61eb931aa85a8a4ef13667b7fc7a04b4cc4bf8b900f31fcf4390d8be0e79cfbec3762e55e6af1d712bdfe73ddce6e7171ed1cfc5e06f8909097bca5509ac19d526cda5caf9a0ba969b13a9c91ae3298ac69d3429a2eeb75d1f3958e9640cd833b27050f6330d43912d420bef9623039ebf5d2f21b3f6de81081687012a31c643b59a81876557f448b9c92c95f1e2072377d1b170909dfb78be55a523e979deba541b1ec8a40bf1b0dfa9fc306c8eccbfb6d3824f783b553a2ad4930aa11d24723e2078259473a324e2bbbffdc515b408cccbf56bad02304368e2a27910e41d67e954d8e0e032c1b9c8296a4dc453672fb2c6ef01f5de640a13ad9ceca021afbb56b714cb1731348c1d80d94b7ffeed94bf2e13ad3e1a587fa5c8b73d6ebf5b28235a1e9c3e2e361c6e7d26ae05a00880f8cfb11073bfe539bf519f190cfe7f173975fe973859efa3683c865f2d12a4047a11d6107a2a4acc1986140ab14ba2eb78decbc66b275e2c74562d72eb6735b95c8fa7b9313cb32eaaa67adff8775f735a65dafca7b441a270bf16d63c74df3037ce0e839aa43d56a71835764adef27fc89464ce3f8c4ee275bdde669a3aa61242f893ff9d96c6465ccd2b8f8b5a03d11d863ce3d2d68cab6c7302b82ed1e3157becf4a49c8b37ecf636fd42171ba826ee9579cf8a186da2bd0404b3fac725904cec7a539712ebf078166ab11f8196cf714650c86e4be4bbf141241eb39cd6703cea8577370694da5a1bbdc02c74dfb26ea80f11e633b234a45fdad9adb46079e1ed99c1629c23c4992ef5e5b9b71b9cc8717ffcb184109f408657f72d348f2436964f44341487711b329ad8b7fd0082430fd24c4c9cf4e2e82d491089bbf4fca2b2ce4c5973ab29c6df6d0e55b7682221cac99ce5d6b1f373b979aa8d5d1cccb40c0ecff926ef4b057e56154e774486c65e1cb69ed577f93f2f11c89d9670d75e7fe2aab4f73a71611b62c9de8a8c9a05c1f2eee5c9f1ee980750bad5341cbe909a2e1607b641c531b52ea0f623260dd6fb326e56e3f3cb98d80187984aee7b7aa9bd34db20412f6e7d97a7a0b36e7ad9a6d282d7ca92cf9a793f7d40643b754b7fc83447191189a401e3d1934c4ae9e16f9a2caee0e3f632c726f311485c968e3203057177d5f2ba5b526a8306f48e4d74ab0ed47d55e3b278945d362e7a4f17440a6f71fbc9fbd5a914e2fdf4829b61a877bde526d4edffdde83c5ea9f1e7f2b28262c29feba9824ec327f1182318173418624d681d0be0e9c139c09557e0c5a4a524fe16ddffa5cf85b144a11a2ad0b90634f05634ca7cd0a2c0ec924f33471092128ca5c756aa9638c0a4ec30e4a2c6b79cbf42e39ba889200a6bdc0abec78c63b3ab87513c9f798ef73ffe870e634ec3a45c38a2cf9812e9ec484176d27305bb0ee671886db6c0fa3096232f575eef2970cc9d529bc4eb09cd39c7c674e0d17cf9fdf0f82cff2053b7b5974d96f1fe1141fcd509116a60f75a580287bece5fd77583db53ad92a6301efe6714932053559fe4451647143567ffbd098f4646dd76aaa04c3cc49e7007132ccb4c389f134281650810694b74a82e69ee7f4639e7f3ee8bfccfaf48e223bd7da827f3d0998ed6657497d5156777de215e0b879d18ad7dc16c8d1e458662380dd47b8d0c8b187559d7b6a2e3637fbbc707a80f6fdc8fd6e885a70609c9b7be8c6f3a4b0d7f9886949c82c5f08f3efa35e69d0ec219f53cd5962e3e86d92d4719caafe93c8e8c7f61ba397b951e0a0fdd66f8e55b817b357fcb4370926882182346735b76b15a626a0736f6547fd2e17afa9e4c6df7a70c6f4e71053e4fcbb67823ac5a576ad2fb56a565e69802c4c89b5d1a39af80d8f6c73e4641e3207ab097d35452f723f4a5ce678827d84f39763df813b06df18ee0ae01cce6fe1241b7a1101ca85629bc791f24aafa6baae329c78581f0df7fe33849572f3dff36637586d257c0a655396bbc47af4f27ba92721249ae0665ad1f1183075e82f9f1ac0fd573b07253911acad198feabebed56da3df7e6ff42196822ed9a5499773f9e254f2799ca57024dcfea4e7a8aa4d4062da71272643baf54d8642c4a33af5b099de973329ed95dd0718bcf65032686d49ff6d519636c314543c3b97f98f4b3cadf27e45b0bdfb65cc3e7d53249188e80b7de2d1687651a3c21df1cbc174c8c79ff3678de1e4f92dd62ee18bd8b3635d61f7bcc6e1f101f9ee01202527d7e33a55e76fd541f19c09f323700c2ba203ae225a0345c6cfbd669b51477b09a241427fc6549676f656d42aad445b21311fb70898d9c8a70f4924f702be3cc319b312da2e47e3df7b2d5f5783f9d5c616a4ab777b2f503c736ecfcda66ab0380d56a40ee4cda23ed8345805cf8f3fdc88163879dec6e9060dd5a22fd7653c2e145ca1c7625fcb3ceb5d4d09fb7a81ba8a3183ea9c8362c6f3a6a6a111542829ffcdf63bce3829b7a3f3ed3f77856f11b19c8c0979d9ef75ee12a5a1bf5c843d88e6fcefaff9baf90da0d8db8741e4f294d747326e3a83ea25b705cf6f1ace513eb74f3ac1add6c3554cf75b80e6ed12d283a3e1525848ab0cf7f1129a3cfe616fe4c8a10ebd3ddc5386396e532b1a5c3461b8bf2afc968315459d9ae53392aeeda27f0f7f3556c452e4cbeee0a942cd045b7db13f2378c0eff5feaa5bdfb9fa873208dbd04b17c3d9e64e60f85d9f89e35e1b3ea7ab3facc89a6ad8fb0aecd5fb475c485f937654ae7b1f82394729d3f34cc30c89cdbb198249ffe1e78f04ad576eea7a839e895cae5de0b9ee8af54dc6b0525ad39c13f9cf06c3679cbe816042f73eaae7b7bb290a661f81f5b0f1d67f857add2af272aec3f61d510aae28f71bed49973e3561c9aab871a93af4fc9da57ac6f0c80827785bfe73dac340fe877f73c6ed8def57bedadf3375e6e20c7935c3430ff2af83cb523e753dce687b6f9aaeacab85d8ad33a6d5f70616ba34f75ded51583b1ec3c3f1f64fd1f00b68c66cb420e0eab247bbec7a39effb5160ee2560d36cced6df34fe7bb186f2069b3f0ed4b6a8b92086fd0b193378f70a397b6b82e7f798a1de166ebc52f49f4a183c18cc00a9f95656efc53898eec75a4c15fde71733d4f1971a9355399bd8d7a709a3cf74754fcac3ef34cc7d6eb11ecf0d31fc073c8fccea2f89f973860489d554e696ae8f26c53d3e31ce0f1ee54b0da6cd80bf3b5f80c77364deacf6c69bd76ebd0e36cd9fce809a3f4f9dd9b42f8b33ac8bd5de85fce0231e447af83b2a9bd7c4fc679efd386c79c1fdff50e9e062ab290f378bced2ebe16686ae76df735a8b41077c54a671e24a77d237d7708535fd9f5bc36312bbfc6dbddac569e0bde17fdef1e31b67173ee8fc33b415ff10c6bc3ca88ee49821607b3cd8ca1d4fffd621f753b4f71cfdd28d612e142267e731c7e1ffedb2b2a1ce03d866eebe9bb8d5fd4768fd5765b96dcbcc0e4a9d99e301ed0d7eb9e34a39fcd41fc31591add976973d4fc2172df41853ed0c069a3f08ebfb181eeb581ee1438eb5a8ff6fc71f53233bca9efc709245afa94cb2dc91bbf710e9f83786c3bfdfd51ff8ef01d7e080d1d0c84ec37006557a74e704ff777835590c9f67339bfaf29b6b977dfcfc9ba9ee9294ec63a2d6be7b0a969bfda1dbe2b4b6f528cfacd092f6db5f6706882b18eff89710a6dfc83b269dcb32dfdd057b03d48700448344b0daf3aacf2580e96e5e6811b6020071c9723ceba24d06194508630cfaa5417e4ad36db9c26b7d8f7020bb648f38e69d12ba059f1bff09b47904f65b802938fcde95828d48d05ee91c0019ee0606003f78035c6611f370812ceb9447be018ba8019bc20218191d4104e95bcd4d0db6610996b316d9906a56ff4ac16b585016721dce71126b953d99fb46eeb73756c652fa41430fd24003f16978476c173eed24be96346022c972304995ee1ec71ed0828c26c21ec845ae7b32bcff39e19cbf62eddf913c884a4f1ee48f3db45517bd0197f8e08b929ad2579ef71ac0e66baf65d633f4927234d37e0ca46b165a0257e26ad34c0f744bb32b0e030092fb9866a954b61326d169ab30db6cd56f18609735bb1dbddc4cf82498d20b365d128e379232019eff5a05f888855c71ca61273dc7535ecc1f03b13fc950fce9927520f46b3eef5c67ac0dcd2ae68366716d2fd330ee8a7720fdde89933e2b0a8648716bf99f6ab6d615459bd949e43149540dd035391687770656013d97f09934be9c4776feafd9c50139e2e437ed96d8818184cd6b26cf51c82ccef39c3bece757b1c4612189233feac97466b2008c4ca6e38a2bd6ae1c9c868c9a490ce27e2f023e0ab3b30c393ddc61ad5603948b986873f06a8b33c16c0fd645f418a0a0485a3332ddeb472091da3728d0aa48ad06a86bf35fe26718ea3513cd785faa65ff4fa8e744766edd7bca1b8b5a4e0116030089477d1c7019b872a5d101aa53928e2c5622692b94082f4838f97eb30ec720762f848ead568028985a41f0a59d832eba401085dc85bf77d67d262a0db825224755902e0db95afba700bbd80bb4dd51953e88244c0e9944e34fbb668ce5fea52cef78207a252cd56810310fb8c942dd7ef19cc27a24cc9a42711ccf720b64cc4bfaa316c115a709fe963ed261d984120fb11da3cd7fd8429b27c4a75e2d9b35905cd3b2eb7e7e9df6f97106b15b062fda9ff8bce63be3d80613e53982dba7455d08ac67b20703fa80d9df9673dcc76748a2b01b04ad81435bb434ab021de0ce23a8a5e48dc770b61c06faf98c079a6911969eec93de4374c611aeb93dcd21a2fb21fb01c40df18d6436f844fe731e7cd687301d76ca81328b4306c56337f216fb2e070600cc2962e6b65e9b04fa8e99fa7fdb60e58341cbdf8af668853092c85bb48a077a39c35b0e97630bdf7d5c2c43ba7b3d18b5c56eda269d4858cf6af89841371522ba717c664aa25a88f1b45de3688e5d232437422c228be41aa64f142bdda50f652750f82bd360386eba78e1804f37c143490195a102d982071a1a05040030d77ae3758036a255d7b51a3bc52ae0adf8713372c27b2468505d0838e766dd7c1b8631852e3de653118c5b262317ca6f31b0e719b625b23ce47f80802b47ef61f4e79231a8919a25c716d711aecb746a756a0616582bcc1ec6a6ff6c5c168a272621b8308bfea73ceef75e6e1936c000abc438ee65a846cf765dd4822d98b9dc7aec951e779d4855209754bf6a7f4eb46a38e6a7d105ae20c95bd5fcb33fb69a45fd86818b9cf5b35ea44da7b090f9095243f36ac3660214d733de5ff0a809cf05fca7a34eba628d96c46d44bbaa659540314cf79efba449a39e5f11d4077c014038af4fb79a573cffad0e682a848f626d69c2811305e9a543ba24f075d980c078a3411d0e050700c770cffdbfe018c1909901b810bbe06521cedb843dec30043308d6e188bd658c4908ecc3ea1acdbf2e9ecbc8f7101379152221822b8992059c0603003ac431dc99a1d4759c6a478a0592b9616c2e36e15f6a8bf4b519dcd573ca739e8a41ecaf5888e954c08d2b0bce07b226ce58014e1264fcf5acc61fdc875e3236dec5220332915f50f9b00122be396e54cb11c5355faa52404012bd53feaa5512620ade3be2896af46fc85923338e8f9836e80a6344876e3f020200858cf378f46143eea0fbb1db5719d77e727db2c6aab3166f31da25cef455f5659d88c40f1cae11b96d161cc733dcc77281292221ae681d217f415700bc21cce481c967844298da616c3fac011d00c4d68dc06b7bd40bef46efeb5f0c91f4737a065cd8fdb4a7123c046a2c63e96429923d48f38244762117c030b932367770681346afa893fcef9afd6eabb463da703256d9c57ce734ea4719cc54ff6dc618cb39e4520e9f48751e712348bfce75650da08f3e490ab5913c4dc4c5707ad205c171192ef17a2344ce32e1f6a17c256f1af59cd7358893a049e5328d35a1aa4e1128dac41d2421fc100022b4ef0cb56b76118bb8118551a9d33ae393f4cf86d65b06604a554dff9b00d6128117ab610a9765c0f2e335b35cb45f17ba2aca6a138a3539b0e9360780a4ad6dfe92603de5b3bb51aa592829db376015ee653102deb9c1d3713c329bf466bf757734df3378bae45a2694ad5d6809bf97404fc2fba2632f02aa61caec4af7a2aeb7899438e1e02a2e4ba4028f4d1d008e4d10e59c42f23662b60fa1fa1ac3a4cf18c3c20bacd6b8f77ce57f8ae087c66b505b76ca8deebc280601454f3eab66cf89e22eddf1a891a453fb069f7349021dac17b4caeac234ca2733e5f86e44ecf7ae8c95ca6d17b4e12e32da25d0401eab49d37ca8515dc6201ba5e0b36dadb69980368f746aa550c31c6ce3d95e44f4211e12c6ce6cf77a82ebb861949ce582e86daffef15efc6db3c62349f29ae0b56fde7ce79048a1e39aa65d97f0a8e9620d02731bc6768160b99843d9771fca6a2d099e610ce198f49b68c1b36962d9be17473623cb77005b04b973bad6827ab058646fd12edb38bc67967a903bda855417240634a0a54e56cdf77c72fa4cc3f08e0f6888e1cd844bf7ba63bff0eb87ee99721a181c1657ef9625e8ce7783414fc68345731b1cc4f25c7b180417a44f6fbc5724f27746f112d59abf27cd0bb25c2e469f0acdd8357e273a00648815a8b4403e070363f40870605846a54f2a811600749fd00153aac1d08827993995fbbdfd04dcf8916d050c982abcb191e1b5957d394beec0955918cb9ae6b585b9ed71a36c97af36fee2a48bdacbe114f82dd6e7837fb57cbec80077a4edeac42bdf22eb9ccbceccac371900376955566aa70bdf266d8f7523ee31d9ee2b6bb35cda64dd1d1e8ab3943de4e9b76e9c0de60a5e77f3549a7fd879367673da9c93b6d768cd26dbaf3f2b3d18ee06acb5f3ac69777cd7158766596d87d37f24978e1fc9f0dbac5abed7fdb1833cdaa4bcf59bbd11b3d0b4173c49708cc9d203d72b67838cc5cd9db5ff5a16bae3c476264b5e9fe5c5c6b5d1c8b662b5d8fadb3943d73541239c6187c8656fc79ec7a6458e8d8d9e3e68cb0d1f770c6886a303c670e9b1fab5601e5163cc6d788a25add0002fc911b3511bddff336f5a4d6cadbabf6cd94d7bb2389394fb358d3f7a100370a8237337dd071b00bb5698c51dbb0cc793c2f3eb589c33f0b01fa3367b3ad110687aee99dbe5326e30a2f11d6a4c8bda4c1fcf19f64a5e3c58037fda492769ee8636a231e6b4c0537ff18d678cb54af7e1a69af1a80c4933e2da8f9832ef87ed730766ee6e3aefda8def0bd7d9b792a3b79c018e4fed94cdc0aa905a7806e3b22a573cd6871f71f9a16309fb87d03947ee33e4e8cdc5d4e1b293cfbffdee3aa18b23884c56985e7d99b5a701b8b7951739a6ad30c6612ce208e960043ed76ec7e3729c6d845db337e7f0e646b36f1cc88c9778851394bb16b9be2d6b3ad4b51f3460aec8a2b9d8a1a33054161b4ceb0de83cdae45bad6399de2c38ea27ec6324635ec7ecba87b9a72bac68eadcdb2513b746cdffdc3323ea1cae3bc73781a1cbcce6e0c4a9e23fd6f6e3f6ec3f181be493f1d5bc27dad2e0addc45571cb7b6413212a10bef61254dbaad461f053a58ae3f3e5c0bd6b09d76ded2f678424655e003eda5368a6319b3ad598b63316bcb0f671a45e6f2ba7023cd9759b3117866ad0e34e7cadc7ea15913af9b8b36ec241ef6fd62369c70209e65374dfe6986969eb99dbb59eb719ee0a1bf4d4fedcca0134f33b4b4aa5e45ab11a2eeb5cda5dfd4d8666cc363411ec8c58562851e6a66ec6698a3dd6fc39ec5d7355b19b54d1e4f5babceaa493b99953768bbe66ebbe49827da65c4666c74b2adefdd381af82fc981a784857686b0b911d89ad4c268c774bfc8646b2c6fd7ce2c915977d8079eee6cd10da4b5ce58d5c801e0a3be1c6c2887e4e8894a57493a7559a3b760a7fe2f95d1be26edf06132596f8b1ecbdb9681ea889769da75cd0c445f6a383d2c7b9f705bc0ead5ca185b460cd6312b782467594fff3a8d9c0b7662e000aced709b615c9b6f710d698b987495c5db8fe8b0f19c4d1ff8d2ed93b6f678392366f5d45b99d4b66de0d24ab7894eef246a829875559be8de37b789dd76e78cfbbba6919d792156cee8c6cf78aeac974c6bf2402792ad65e359a998d85b270c676681a32ed29e761f6e224dfe15648ace272bdbf9d02b2fc62e937705ac7147135657933d57dcfd10136dd3243b8e6ce2d468f66277b3164a72ed99d69657d344c3cce0d7a0ee758a0f50aba671e6bd8930037261464b8e073c6ab783f1ad6735d37bf88603a2712763cf458f36443d8db6a3234c69a4dcdcec69efbd49daed80f32cdc1ffdc219787f314b1948030c65c9d6b647b1f4ce1f19cd5893c8bceac2ce32b626797d44ec3ed11060f89158617ef6d1a7cd4d612b6dd3fddfb9f0a429318ab5673ad6f5e7b2c4fecd3b6e6e2dad65589b8a2ebead7c866834717cebd8a6f696155ff5340fb4da188ffdc8cc7d960ce5618ef77c62fbc3d8dad6d0c1d1db5d24fa0efce7b130aeab76d8b0d8bdd3697ac9465ee591133f6697750ee4f9d8760eb1d2e9e5a4dda67c05cd2e18248fdcb14b6963fdb0d86bbc774d72404b4c6077c5ebd2d1ecd49ae1c41d037917cd629bbaed7df4681a1f149954bb5bd8b61957ccc2b937f93b5c64a98700428f973abf64d8d60459bd8e64fd9c5b3e224ede35cd6b32a81957bf763b3b0e0aff08ccb5e166878b1903f0b69bfe43c4c8e3e9b75c30616a0980acdadd6739416b98332847b8918371b0ee595803dba5d9bf7336e47a66460c7827e0a9a5145119e044ae45d816ec8a8fd740963963e4bbe47216dbf85b87b64e1ff737c108a6681816df30171933bf9b5623c6466eaeb557686f94a3e83e865ac5c4d76e5a3e7b0f4acb3b3e455bfdb0e849f7731a71ca05b76293218d6681a6bc4372abad866156586dd6aa336a9bd94ad70f55f6dbf8cfdce75fdad9fb01ae6f3d6fd57069dcba3e6b64dbb97fabee976db64647988bf04ab5360c7979ce3932decd7442af63e9b7e8d085504c94396d4b1bce3a9bbd0b97bb555c8d78cc1bb3954d6c3f460c09387a44e32fdcd7c6fd9e9708bbafbddb47b6db8b1ab69ff6f2f65ae3176c67a6b6156336fad2cc83ac21fb598233fe6774337359c9a8ebdab8ee863ebd762e2bda986fb41dcde4d4cdb0c064f2ea416760d3aa379ce4b9936f1023f3ecbc39747379c29be8525c78702a9b1e4b45b3d05c90bda13952d6aee91b0b5bec60dbbdf9f7eabec52c6271173512c6aa7d6366261f0696d50cd1388dca1d6618cae68d54e79d46fa1706fbd06bc9c6373f88458d0e48d1cc0627ffd0b9308b7dd27d07d20618a25971086e55de31fede2136fe807fe012f7de45fbbc323c146f1f9cc1369c93d5df719b7435afb057b2a5cfbe7bde76965a3306722ef758b4c1456a677ccf844fa71d8fd66a86359d65794764ff296b1b653203c368d43d663619921da69d43f885b3ba3adb7e52d7baa415cdf2bcc69d9c16dc53b6b33fe6cc3aa7a1a04b97c4cfab2b1acd029840d67734e5367ae72dd31af7178de14c2ee60869e11d00deb79d1f6fd13ccf75e62eadca4562d856b285822330cfd01b2c9fb8258f92e37097beb3ab976b5c030cd7d4d44e1c31f7ec91c427da61780bfff0c9f837c00a1b0a5efa504fc74c0373b43196afd814a635a61d6aab2fb2e5d43f5911e698900b6b8d6fd08a8f3c8c8daf357f6804a6cc5e377b838b6fe3325973465664d02c4e4cfe8e1f206b86d5db39de2cbf31c19e64d4efc3379ad91c862e43d332fe5cd8760702ac0a010c0501bd5e699da53b1726b3feb580726eff3bb2b65fbd12429ca1d4df2cb55d42b99ab9eb96bf055820643002c64689052a030400b42e96d407ca579a7a49d5666b11d055ae64d580ad631a73e07ea3fcb268f5580a030067de747fe02d511f3fe765703d722dd69b44b670541eb00928333a9513e6dcffb634dd8b349da696ef39e84cfddb7995b024c4dc8353ca9af3613b0290ab619fa886449be30fc38e9e13c74ffb73075ab38c356710ab13015a3ff4c6f0c06998015c09ed8ab64dff29d2b452a40db962d0798d980a86171f21bb1fe215d89ba3ddd67f4360acf6637be452fb50a9bf5d5803fa8f0e12006e1a51f916a25db6b8155dab1bde68d1037853ac52ccf9a494562cdee643af08c1320602005f47f68403ba17872f691435ddfba5faa150a9f29045888a3375de914ee9413921019c87e87d88aefb98409641b05969e02c3042eabb631dc503bae18ac71560085d251597c98067127e29ed4d68dfa604cafbf89fef5350088e9ed42f9836a708a95172045ab327cfadd7660fdf3cae4c35bfa34e50fb2ad5dd945b03642634debc651cc5289974dded639c86744cf89c3ae5b5f135f8692c362dbdeefba6b964571d8b96f57c7c0a9bbc14b41bce2a8a5e40e850b9c77e9ca517fb900cf09bb316d57c64ef8ef7078458c15c0568f545ee4e1dcc25812a3c47de03bd16d47f00b78082a39702b9d15697d7894bd677c30d93aac66f8d5c06a109a4a11d00c3e17f65479ea24091fa50c5c8717722838da3cd51aa61ad787263f93c952780a304f562b44286e71770cc7730340399ce2b3089603823c132e41e2253ce9bc5047a1b1f52de3b0261ba00717133f08b5d30701b33bd7d286bf53354217a15a05f0a64449a5c7b08620be089b5536b2db6e0414c9c3a84469dfe30e232f05f357b3b0c0f6f1aaa53dc25e3402e32b771d17ca64f4ea7ae57f26a80e13e98ef46027654df63af9b43842f51c85661f24f02977b864c57c6293fe84d1c53acd1098a3583a1781351fa777d793b5ddb87ad8a953f02cd2f000026f0a759b25f0a9372924f70a70ba20c598012f39a0da64af6994492304cd753fe4be0b8635a1c5b338932f289a35b7c24760ca64e57ff7939ae596f31da4b4da6c561844fc01d7c27b059cb76832ce89f8e390db544efc42152ab8e390dc16bd4cb2432daab536c7770418dfd74fc319e640c9b846ae1242805c849f137df7544be5ce886f88cbe679dc7b60779d21215df450c0300a14cc91911f59f8c83ec31e008b09e3c39c386536f658b36f39e5fb830d6fa745b24785747f0f87c6712963f111e44f33d0670be6cb8c8738c37fb0e0800b634956319fe99bc5220dc4f0e83ce79873202ab936115c00c6585902aed7b60ee8c858f9a6872dbe233756cd22f5bd22c9a7f6e5e20e38119721e15055e16a9424da5ae0114848a5c07c46da0f943f28fe8c926328fa0842c241cb7f541b8d936fd0c3292a68f2dc45e1c752b2fdb86419a1bc217f6505b21114099ca23a6af893436417d7c87f00e92067e65be56e19c05e48206ead27b5d1f600b161a00c313a36f60a7d513b04bd58d362ed66bc4e633f6ada8b18bec5cb56a37b9f9d622f76b089cc73e842fa1597880803e2529b66c0cf014ab09c52e454b0cc72460f237e0d00790a2b066a1f5752d00599a032a39a90a7234d48b21257b2346a0b15936f998f943fc31d879245b6612bb9937d16f9a82a663d5210a7f96ff8ee7a9525ec7939c56af7d4c272b94aad38a674d09b1a44f6de4399410da21ca91392dd8c069131630dfd58cb2dc98f16a15775402030026d8754eb8c042461605b35c7645f29bbc46a6e3d410d88f0ccc7b2615f9a4dd49b2f861045dca7557b022ca8b36b55ec87f8857408907bd5da6fea97c8747eeb0c2862f83884407f176525d13bb38feeca37e926f1dd05ff198515c161d14c8fb77f14c84a4f3608aebabf2e78e5cea852dbd75b531f2708317dd007b789aa275c820cc02c5670fdd842ed204acb16717e5670552fd7e419c1d9ea75fb8a64466bf904d23cc7e6a6bfa4cf58d3811de7f28862e187147a17266965829d30d820ed1e097711c0a1d3dee9967754f40cabd5b4b0ed3586611aa157ed7771f25cd933eb6549540d576915359e47f2ad778321167b330eced4094ce78ce973f863108822c85d129683402c8660e14bc4df6f57acd016935b4185b06139155c3aad4d674bd6845bcf3748cf5d47bb8466510d52eaf69f26d42f1959d6c170ea8b76d54fc7806ee4340f0bedead4b0ccf23b0e684a149741f36910679314e5923386ac36cb5bdb03e36e2343873353f4a7b89545f3110ae564ba54b1b721d3b46ae5735f600a819c138ea057c3a932dd503e8c51e19a827b4318a765103007e406f41136c33379f4a97b69f2edd6228dcbb64d279e1669b46acb5930b8d90a26ed72ddba10a8d4f282c714559c2c3619afbc9f9bde77436731ee17dc37b49f4d27005b737e9d939404b9f380007b0d8835eb79cfd8f4c1a1ec1f41bc429085db6469eccff7621c11a04afeda408be5d2fa75233aab8da7973c421c9cf2c324f13d69cc530d8682bb05bd723333e33f2129a4aac8f5117bf3f1cc84063eef7a0e63b8934fca367f1a2cca85f6974af04b6f3eb3a61ecf59e77cc1b0628c61ccf923a9578fda822cb99f2a49ad6452f9c0110c05e7d28a192a6d385de7a58cf52060ee4575e07a562d06e69b55e0939fcb5606444b04ed8244752e33013885fd668084ef6a9526dd62b304cb552bb26e95f915de8bf68b55ea611fe1f01206d5c20c8ab56f29d5ca442cc834d22afec973ee97a76cb829fef9fa721d37f1e386338fba44caaefba79745be602e7fb80d847da5f8c622be20698b0113eb5ab040c81d63364eb832bb40d94eded72325159b233db62ae0ebd8994b50eea88c8215ede05ad8ae31d01bb597f2a9331cf6dfb6ad67f52b9b7e14af9dc28943f58cc3de8017037a3c052a34c54ad97a068b4959eb9d402772f453daa83e4156e5316b0b9338c7f10eb92ca45dc7ced89ca7365b1895aafe56953a40575ce7c2cae072cd4f16d13be73689557eaa1f38ae58c851bf2a95e09c66f0374835233dc3d7eef67b856fd824bf47c639da652c910f47dd6a4fe3a695762c0e2f33c511815b204b4977ce299ce5006fbfca5a5069a38bee8905ed9257821d780bf68a80a916c5b2c6733f09786911069e38ee5535a03f98d802b9b5d51b63b3fade1b71ecf7a9039cd76cc6f07a2df860760d532a04b85ee20d2d188612d521570d99f4a943f71c057ce409a270734f49b69782356fe219348533d9624cd66ee1b74ea9505806a0ea3da200c824044980b80600b300fe542863a372f5ad10013e68d6d1530f49d18fc00e5b45ca85162f6c260267ffe80342acc36e131c007de29ba657d3f761ee24d7a1629c8e68f39e82fd7a24b002fb25ba907cb69096216b3006d690b2216a8d7e053c36c47b07a25ffa8d7820fb7599e459ff59394516c156f7a116a1fc712e2c030b8600b8c047d51fc1519252053fcbf183ee706ae67d04281c16a14b143ecca6843cdd178630e1f230d907cd5822a508bdf88c16afb82510b596422e5049c3a4538e3cbfda0a99254602c10c4742a32e029b601e623ce1d01e88431e32a09b912e946f069e79ed32f623ede851e02b228b40dc2672c3f8c29ef989f00969f38931e045c0776df1daf95ac2cda8833ee50a9ec09c302ae2ad33022210477825e33ed8bcd926f1ee1a8536b13f18f9bfc9d069a45c336b2148fa06cfd9956be4cb7106009c4ec8a96f9a03cedcb4829de28d0a0ca9f3d71026b164ef932f515d964cd84e557df35e092eb6f00abae34f7c179bd49bd663412cc7535e49fc55601c7f40093650e48f184534a0d62bb8c97493ae46952fd46f524cfb96fda91ca01407ba813dc7b252a994222cd28b53a335a923d7b4a2ad61fca171b7520f16b6e62dd3a05b02f0e27da2ee028eb3614eb70782314a510b80eb9ad18701b38914aa33ae241ea88310dcf4bf6b13fa69f741d2ce4097d0072037a61baf299ab16a74f640fdd41be76da2167c060b9a0d156bfbd1adf2cb75f7d2696f705623a3e6e796d177e2634e6a6077c3c2d0c5b291af4f479bb264394d42dd22b891fae07d3742d86561a0576ff70ea371dc64218fca9d81a0904cb346b592a2da75051bafd7d5722a02b8404c78150790f008a2fd452ab41e9ad58339fab54632571f8af1a36df5eb7e356a44235ac54d21a8d8b275f264ff878c43feec76c4b56a6510aa0765137ae63bc62cbf6807a86a24ac423f4ab8857a24d90e981e2b26c1ac5c8171ec9b3ed86aa966414bdd7758c3477d0b4bc895807bd04b6b76034e359e4d47d08b1f69d4ef7db82be030cdf358e81ea6914899471645b1d4bf3db274384b543640f707bdd290a0200ce275ad2750a7f9580474cf4cb74e280c56aae0f69f3355abc19bb14a34b16df2bd91198449dd31f3be60faa46f58eef9c36a6d0bd2aa20b27d9c5112d3a5ae50cb781764eda45edef742d8935404291179d2bd4419b5d050392cc6a2fe123bc22d4f87d434e5013db4d1db104ee952ddf923ba90206ba227b146d9b34a96074746ac35ed5d68112bb9ec353bd21e4a55c67c0d403828698551f78d37a13d15ea874cd6c14848266f18b94f69685a78b4d878e4ffa7d0c7c8cc109a2613e2001433c6f7a5d12b029ec13f78d9c2982a14c10882c88b861ec714550bf4f4df9818c674d34dce38c706808b311ba9d451fd1731c95d15f077409c46223d57c4baa039e4955ae822d01acaa535fe14af2773925d7a2f8943c8e363bfe09b26d18ea447738ac624dbaa550c2e6610c018ed27d081b8fc52730470a9dc84bf1fca70ac086fb19c20fc16a569dc13ef264dbd160af5733f6fe6fdc93f049dd27f576e65554ffdf060151af4d3d00c93060d729d1b6ce57c0b25003ace994e13e03078ff049c08c375dec39326d2f49a22226fe839c4579849742c82e38a4ac5520b67edf24d4df64531cb9576e1778339f4719fd19a380421db0ff3a63cc3ae93c7a87905c1ea9471addbb714efac46923e6dc3f8f3a56188cbcc26dbb437c27ab665702e4512f48bcda7e0e4f124af367729e076e16903800a931f4591b3b210000a6792246024bb241f879d094f5eba21fc82881e835a2d75902bafb2e1d00008c9aa5cfd30ef478a3ac8de6f7647e3d31d904943e756c3be990767a282802ad60eb58b18ec20bc9a4fdd837d32d460910c515ce037781b7608af32f887226795ac82585477638c1e47ad3f9a22bee753751ddbfe9808b27ea08613ab181495e065f08f20139ebf9b0439c1dc61fb47d663ee60f1f9fc916fa56987a2229d454215901cf78f69fb5ccb962d27358e22a83e1546850292ae14b32db54bde49b2d24b125943d8821c87143eb20e33df018bc871fd029f9643b6c853087565d0647a142fa3f988215c56e8846e96e4d10521a1c0aee0c480b49aae28d1418396605181eb2383c3b94af1fda83ec882cd7262d933b14d779488f37737e832ef966b4c258328d18db7f2733e2a0016341711aadb4b74511146b0816fbfaa26123ea6f5500abd5bc5ab15a7e89b15c95331f080cb5620d0eb717da10961aaa55fe343f08a841f18790ac4a292d46bdc32026244920e73d1c8f58b1ffaa9b392fea10b965be1eb29de97746cb28ba700eb67ee737678d9c99dd6547ac551cacff847a3a6be247cf0ed664b0582603ae783a0ab2a3fb449ed02d5e90fc84e07c0aee3d48987ed0276ec72f27aadb0bfd23d2f3585fea93ec86556d5f9fce24e7f86562244dd93bec49d10e54323dc26b9ce6c21bf4623ca9010100e8d7019029a884a03e0373140970604c3ca92fae9a10b47f0cfbd2ce1c86b558b1c42b8c8a9c6b0eb35e37b8da869778b48170d8353ed9a657b02d77d7b78b5e9f3d38ba2f3c4346ef18603b6ccd3584833067ff96cfce3f0c331534dbf8d2aeb4e0cab7207bebb67173cab238c3e1f146bb6553aff89eaee9c9775b87d670f7aa2573b9872d2cd9dc1699590bc68fd54823b0e742766128b0c316963168b62b06b15e82d0f35ad3e8dbbb0cff295b43fb70935197b8856e74a417e35bfd10566ab429cb45dc917b3ec886debbdebc2e72b032d34632a633da56edf140b3efc9ba97e582b020f7bc6456e75c1cc0c80efc219ec86ba690b478b27c2e8a49df65db35b798a7d54b263c18c8c2d81b18e7823770a6b39098b4d9594341de399ddeca16dcd8cfc8ddfc5bda0a36dc224fa461b6e3a1e553b822592c57533e09fb3a9e57ed65926747df1ef0f681ec8fbba3436b31d5d52c9a8ccccfca6ff9a2a70f9ee9c374e0ce27e76523b6a165b6ff921badf8d3185c7fb94707bdfc0ceb866cca1cacf682b5336e716b73171bbab0018d8cac6df06d1751dc02b3e55ec9e890dcc2eddd577142fb52e50d28d6b3f73517dbee60b682d5a7839876cee636e0dbdd863e5be8db621bd09407fcd3d861cfccb7d095063825a6766d7bbb8c630ec68081d924333e318ab15a64638ae811de940c28237b62c3ef3d0617b16c02582eab61f3e1c7ca1633b80b6ce3fe438f78e64d2cbe13a3a7dd9c01eeb6b3830b8cf9c19e8f6e67959737be862d5debf0059e242cb3c9a763e4bb383097358ac5077eff8e7e6fc74ebdf67e07ee0e4320ec3bb211538d3368563756003f862fb921f364b811c359fde06dbfcd197c1e619bf32d3d87c7a73b58c8da1ba04396b27fb653dc413378359b26b7fa711942c75359831ac13340c345dd92935aaa2b62ac7ca1a46fc1f38e74fa76975cf16add72649f81186bca2f6117fda9b83142fcd70f2daef3f00b3917ff19837b7ee8209d9ad69be779f8cadc9d0cfb1a75d33e4b9f63246e88ce7c7be09d1b3276b20c47aedbbde98e69ee69a017a777c9280b4846884ee60662fc5acfb31999f3b6fdf4eac5e172200db6612e8cb010763699716fed67596cf1681c7c5996e9c038b57122b3a5cdd6639b9a79c7e20dafdc6d5d9561a8b349e88eeda07d332f17dfa7e52cf8b6b6beb64b7a81ed6b56336cbb60c7257633679355ce595c788e1e6bd4d7423233948995779905a691d9488bb07b26ea431d6c9dc4dac7d332c8f3dc3c404379756cc8a788d1b1d76ca3583466342b6ec4cdf9e023700f93a3680b4777b7ee1131fdcdb0d7a933308a53ecc5c186db81b93b2d5c7de162c6ca1c181edb6dc457fe3cff4f3c8dde9596958d2c9b453bf1f9bc982136bec5a9b1346f62778f1977b5e3b0f7b09146b2b7038f20f638a5b266b762e669a4b3239e74e79965463af989533953dbbf8d53ae5a7a3f039fee717974e66ef035d3719caa7167be398dbc05db2ac3899cdf21c8d52f07c359076339e2fcccee7c86732e7ba6b198c323d9e56bc6f8e6798806ecb9b1b4e63eb6c0890e63f4745960a6ad667ecea7c0f1068cb56d7b719d9108cf83c3e6f11618a4fb921b77c9942d26746d4f9c52db9aafaed8e80c62153d849b1f01a336df129bb1b088790987764d0fb07943c28c3faf275d616ba42fd9d2608c8566b839e4164f7ea7cd25d73054f7e91f252b68abea6be4ce2afbb5fab68fbe58260f94d2adc9b44b89fd0ea64c7cb8ed48931fceb82d2c791ddaf5e4956baae9c21659d1b03497a73ebc5cdb87bfd2bcdc0af0c84e2370db11b3dee6e4fe172cb4743776639e9d9fd3d8e7a096dc9d7ac597a849c4184060b5ec736e13bd7a3e8925b76326ce924153acceb1d672b36af4943b9dbc5976ed745c471bb4014dfe8abd3297dc25ede8cd70ea47ef8b6161fe4cb1896d3b5f3406de971660d3a58c3e13dbbd0e06660c7987cdcb069fd9956bba8cc7f2d0ed82b680296e551bdbd4b9334deec03ca4b309994c33bddaf2c98bbc06af7f19033f6bb608a8379b6a8b4c64652033acdd760c437a20319ce5bfce2b77742ed8d67cee966a5126b1f1169bd26a7f668d055d9b6af20d5c7204862ce214b68f01edb8f6e96d9d730806d50ab77e7bc3df3106cc33e2535ef90667757816b871d30569c79e051d688cb3284371818dd5e139acb6edeae19ab459b801dc4d39be332b2dcc98b4722aeb1a78ddc42adc075f93b63ddc09372a5978c22cbdb266c7b885432e9db197d875661636eb6db8857bca2f5cfeab5d8f83edd4622413df555b7123aee1e5d76a67d8f15d7e66f01e76bec5e80053adf26ac39b75a64dbb66839d6f7a637600a679916c78fd0ed41d3ac93618c931e7cfb1376247debb602eb49966abc6bb1a9ea3e8ec969c6fe309de69ce5dbad4d04d3cb59195c72ebb8a582c5c8443b579c3910edf7cf60c60bc7c5870439e95e0218ec13bf0316367da6dea731268e697dc53c2a433f1fa5d8762824916e86d6d55719b3358b3d2f87b83195b199a30e3164b987240933d369518742546efb6f3b7ca6a46edbc4097303fd7e1cbe7c5e87d2b690a6ed9b619c4137effb01ad9860d04bb1837099f979b0e3c63fb7d339cce49ae3665f484fddb6f6714832dc74a701fd4261d59d39916a145998886d08e316baf98d1eb0f6665771af39c33f1001d77536c1bace584c34fb77e62a3a9ac8d7733d07c0fc158c5e021b23c7ca4359e80576a3973db1a769d8d4fc0c78369df134370a8c9b83ad336c910629c87d7821bb8a6f37d3a672dabcfc4db9186bd66271d331b32eb8051efd8fecc8d4fcb2f99c5e52e4c166fdf699bd93f2137bdae7b6593993fd4f44bb81ab10c7b2b30910ee192019dbdd8627b1a4cef4c2f54c496e67b39e0f61886dcd0d9d959a5ef7c55164f70cc6b7ee9d307ddbc9e0dccc98e9b8d218318c60c0f0693ce39dbc9c8192b6dac1e5d7d7bded5dd6dab2e1b6e02f6e3b898997859ff8c275dcadee7cec4c531f3044f4ca6969d1d98cbf0308eece535d77aaec339754306f3c3b2a3695edbb3efcdba13be02aeace1f16e3661a90d99c78f16bb627709eecd0f995a6e084cbf5c3b114797ad9eec649b9ef0f6d8d81fae6440573e63dabb631f0db03393dce2dfd202ec4e6f628fcf75d17267ddb0631abbffd2e403bf72afd28e3769dadb2a2e99a730c81b879d93ce97c6ae0dccd46a2873499cb778c941ec1d76b9810b976e5fa6f11abd374e39fcde186b95eee81d7ff4bbdd38a77f86be9ac3e18f5ced1a9872f3a6be8081c7e980ff0636a01b86b0d08995f6dfb6f741f7d01b90e7c5a6aee83e9d41e6afd6f663453fb63fa3c50d59309ffb412c32302b6e39c3e4de7cfa30a03d987177d0a8c6a85e9781316c0321d57ab79659d9e17397da5a6bdba6e99e98c40527a7472d1aa113ede999ad3c20373caa83f5482b7ee7e1667dba56f48ea9cdf77bb8a1339f4aafcacaee1f75601017c5b4f7e1563c0c74d4c2c8e532e7de1c639760c6e1f6cb43cf67d393165b2c36b975de834b60ccbcac6b2be9d58e3fc3e05e7bab4563d3fde233d20fc399cb115c96b954986733dda447bb1acc8cb955776c4b5abde4c14d9822ab8e145e1eda8caec9c83df56c77e6d1f1d5ef6b0d57b1825b7e35d8b3cf3371fefd8d31e3841703b7c1088df8921868abd57894892d6117666eaedb076271376abcfd654e31e94edda1e7b22c63c3c8df225bc18deebcae26226bdcf3bd58d06e72d55acdea976deb89a6763447cdf36bc40e82d989b4e958b70dcfefc46228566099766fd6ae46d6eabc636959c3b4cb0632b69d388e7d4cfb3dafbb16b5be6aeedfafd1f36d06ecbd9ae6c69a6f33e3f3c10c9901bc7127dcbaec59df809c22b76558a1bdee640323269bdf74dff2fdb3ac55bb9aafc4e697d0765cd50c6de281a53c1c403c1626dd71f8f2fe785332ec660c38d9756106b7c87e776446bafd9cdd2cf8c119058dfe8ddfdd69ecefbb3ba26facb9ef2c2661176df0b8de627d3e902c17b7fa602da3df9bad36173b84814f537793f96c3b6d0143d4d44890291b178fd99595a3f324b5c8ac4e74306c39f999dfb641769e70e10334dc666f4fd0b4dc5bd2943755379869c5b937659a0bc2aa7b3c24ad45dbb509039fd53f65ff27002b08382b5ed0e54d963dc8191cd08d5a4fbcafae609f437eef5b8d3b36cc2eb6013bad0de6a0861f5bb0a531e8f82d9b6c705bb37a6f6d513a75189be0a5ca6b02195ffef79765addb8b75c42eb702b5b7edad9ddb697e13b3adb539b65ba6c1cbc71abfe1c90dcdc9dd017691dd4c2d34e4c41f6435d75da3c67af19b7bf618c117b4f33c069fc990168b3868221bda3956775f68d683ce8fc17bb7450fb9d31d0b7eb0a22366edbcc03b33094fa1e0a8b97ce7fccee1cb62e6741c9ff79466b2ac0ed1603ba2771abde939612e0efcc2d97ac5f48107bcc8aa8a453083f5b869b8edbe6e524306b06c53c3d6e66dc80b829cd5b0538e65f3302aa821bf9f5569b0989531b813da42ee17c5b85c0fe85cd64b2e6efda8d8b5cd5bcd414b66f995cc22fb425edd71022b0d21379596dd6044ba4d8df6d5a6f77a8b3bb0cecf8da162dcd779261fd80d361bab31bb1ff5562782b7dcb431187be49362c4a6dc79bf1b901db2c1d6d8c03769e663589616f4b51ee83ed83c399fe06c3d274c7ab0ad34a65bce0eb0c0b0d5603e508dcf67b7a7a93af7891d7033770c62e2b5731cea04ec75b3b9d712d36fd23526a673dbccb9ec195b999d5dbd4d5fcae7b7844d0c1cd4013cdc5bea168eee2353cdbe2dc0386403aff99a317c5393dadcb9716b87d3c037c543c6bcecdd50cbcb1a585aacfd592ffb36788cc3d39f305ba616d4a2552d6a0bf765e3e4c41e885b32847d65ce624007763d183e6cf39656bef3e416625df670620666939a09f7503d116333b71d4afec353baf750ddce0526d9d9c7c216175ae684a01d8e403d693acc657a22eb6da7137ac309e61bdafcd89cce01e6c60ee46e359e83df00e36d98e8e0d75b70030dcbbe6e633b423b835a63580b77e431b4aa0bac781716b1d56538ab8599914338362b73cad1cf8c3958a29d3c67420b33c94dde625f03dd01e660e554f6dca3acdba9b566741df94a0b7b93750fbfe30b73b949de00bc2dcdbb0ffa526f78dd23617df8464c9cc9a7f57d0458f22d984a2c3b803d3dce56ed569bab498b6f8bcfa7777daec455a3fb5fbb8d9d6f339a98ab435dcd28dead34f695580ddb8087b5c514d3b5cbfb16c624cf1b9705bbc97ec37a9b874a416b5eec79fe1945863886250dc886059961b8dc3d4d749287e0866fcc6e9bef162b3a302b1ad11656c0d44358b1ba3354466e273e305b5e68dfdc4f3a6287cdb7ef57091aac6460174ee98f19988d5d7c000b63febebe218769647901779ce0b88398abef88e9d1d95dd8ca29b5c19a8fdffb42cfd8672b5cc676f3732edcc29a116f504b7ed8d90ddae9534257ab0ea25d2db28bcd2fcc367a2ceb066d928dd74f667ac125b3b4d47c8b4631c1e05178ff94e69e90053f4b6425eeb39165ccb2d1cbcfcfddbeeda7757bee7b779a75e74c26706136bc70e4bced8d3c811bcf08b31a8358b3e9fc3437d9daed639661510671e3edf6004faf585ace0edb7de57222ec15ac3972c770c18eb27dc2e8e506ae9eedc7888d99baee6df52b1c9619a18d756de83427998cb9d1224f5a8741f2c470aace901959c5c4e906c6fcf05d7b4118f8c35855f78b77c030d92d5b74b27ac85cf5d533f23e907466629d772e236f72211992954e0802caf293edb6afa98d76bd34c684bc410b678fd54573a90e1f873ba4fdd0b696e0ceae46b72b0f51ee799a66ff4653bf7094c3d8adc61c65e6c75c66bc8659c2cb518f892ddbb267f0d9607b175525d0314f7bda42edfdeef47f7d35682a35ddf0073ec65d076c98912ee16ec60ccde57556e8453b9adff237dad8cf77b1e7217ff4e0afbda543998a8b525b078d61a92f8c58d1c45b8710ac96c57852744d137d90ca18b3eb0d3c9511edba67ec01a3dc4ced4dbaf03d47ac66ce4d5dd434389c7fa7e1d7e3db66ce3e9836ce677f0c4c33243e00f43b008f88309d46c11ee03db86e70626c5aac050212f35278d155962e8724b1af104aa4257e6e302de66a12663279243135613bfda45f351afe48a6a9140a216d18e8595bc462284651acb149f895f633550f948a32877672cd70861de89140f60a8a8891c019b661a85089ea79830086551d002403a5636e021557b0db3d9f60883318c054ad8543d12ac5ee53bc979fcf2816c901ab829e16be50b309849d3b0f840ed240b70aaf0ef2450048f0470405bc69f7dc39d87f55be84192205721bf056b16b99412ee859cf8d3827d2eb89345926ca444f36adb9e3ea93ee97c6644cf7bbfd3328091c0131606b8c4eb30ad087cb6ead198b48b14fea5d762fbe2cb15af8a373711ac2a2cb1b8eb25d60c92e0d7142bb74fc7aef8dfbb228d1ff8af8a135e7348f65ec2c0bdd8840ad2d429653be66b56b11c989b3d75c06ea98a16b39c21f0ec2bc649eec158915beacdf98b3664a6f2d9c470174491a198cd73442ed049798a0d4726cc506c91dc8d51207ebce850174929bbe1bbc154f0412afc7652dd08a96ed09d57eb20b8b985863e37f84ed65ce935008c0fc8194324fa887e07536573c17c2e18cac160e671d901cfe83dcc36e73283bea868a6510e048d30303c640ebacf5399240ef6fd813b2c67d4858168e2ed948f789f2813f25fc23274ebed22b541401a940e9bc65b4de3e01a9d922d0237c4e598a2503ab92f3f6783f99b8e268f269c29ba41bfaa707db7a7c7aa501418ea7e616f23e979c4420ad169a5ba2e6919e4714f83f87d4592d3188b0d990aa10c6136e1939168a4cd077b920b80bd670c9fab15cb5ab0ca30c025b1fb56953d43191a46bb70886b25bff838df6f0fb5290e58eac5794fd63bca2ab06825a2a751dda787921622e098811869ea651142079a04b7722b65f15bd44ed1c20f25f3aea7b3bb83ac368db230cb42adc9b58e23f9e46de63741f76379e49444c37e6a03e2ad24f5a7c3e67294ff7a13fa9a999a212f692a79641abdd19bee8931f03912fc72c812cb714842d42eba29445f0703211bc7c3d420532bc318c384385861494d07b35e009ac08cb50dc8d4a93cb7b26db9236e52f33ed94f97eaa0bafbc080600e441031680984ec59b4685e68e377936b2bab755704320cbb46e54fd465260e32fd84fdb7a3ccdf77ddb8e66b3c810ac379087925c0435a13be47883868ea5fef19ab5df7de6480656af47f265f018a6f1598cedb92279e2eea58f68630eb7d05a05b1e95494de2b73cc97598931f5a004323301bc2027316f3144343233494a696a4cb76cb76e73445a7a644c4a6a6a4e4e6e68666a72797b8177790607200a28030b636c7383c1e8424204c248a209a251d218b257d0c218f643f5218e15ae7d8f7fffb63fff57737a9e6b8109da7341237c7afdf1b1e483b6271e669236b3cb32d68e9fbb013bdf626cf9d729c268bcd2271ec07152fb6c4377da33be0bbc5d9e628a0e4f36368de62eddc52aa66ed1bbd98b91ade006c2ce1b65e5a9f55d6671bbc9e80e57f2169d700c95e326b1e26c1103751a2be8b8d5f93811d9cdf6268c2bcc8f6d78769e660750aeccdff44e6cd47a4b3e1a835ff00026d978bb6cb447b2b71803b7e31ac60b1c01f74dd06cfb307719efda8c4d9e7d6db3b3a6767a6780180fbc937cd10d9cc40599e72dc79fd51dfd4e9b3ade715e72bd39616fdb978d76de620136c8bd8a69e3d67ccb350327c6f213ccb9d2adcebaa9271f44648dc90afbba5884c518900c830b5bd9cb899b3830f0ea56b5fbe8c54f5f24da2e6883cd9b8c3119074339b943669b27bfcb1e183d1f661ca6eac485a68249de601fd37ded9371d9a8384af6e7e2cb18d0c915da761b6b71e2534c07fb400788bd7581ddd9809f80ffc1bfea161c8e8177186c86e52980c3fba203ed31ec08ac0f62c953c66fbea0239ac8ccf7ac4ce9b5afd21b1b7792395c0633c0c587e2cab441ecd9ecf178d6d2743dbbbe1e70098b699384ad5ac9a61ca34650f6d824f3373a6527c934037d4f4eb4eba29bded98c4907f4ca9e5f636686637a0fc70e3dd79499d565eb29733edcfa77597c6963c0824ecabddb380c1332d6cbdae8e2323ddcb0190fb17fdc0f43bbf3b8ec296683c4361be6b3d38ae6bc7d855a60968899dbb6d897befece5836b4e4389ded26539e6190dd4df03dcdb7195e3da10f98d60a5e714ff49039e74423da844db7085758395bb2e35cc78e6f5b7618c7702c2d3a6ed8b78f61989ed42adcb9eb6c3ab35c1cc067ba109b9ee86d67305dc698225a06e1e3467a38ec3580c90bade7dac545b594ce3ddf404bceda9c53b5320de4e98067ee4853d8906b58ec33e6d11736831919d978c64ebe7120b3341b602b3b99bc33b7aaad2a4ebc80cd6f7ab7831f270b71ab9ec330d2f32946b0d69a8e4cdcc98ce7bf86abdbba2766f48cb2d8ca3d9ba798e894613caef556a3deb26ee42cdf46570b0799e9bbcf603256edba69e5c3cf6554133951e9e35b9f3688b9985d131866412e7edf1c36d59ced7eb6504e65667fbc7d90e3e6d1703101968a253d88cc119b0f9f88569f3823861aeb956c6b6cd80567c9c8add50b9a6f1eadc4183ce452f841b6c338f5afa8ce5e778b8cab1f9bc7e1adb57be15edeb9cda65d8dabd36ff313de11f4dc71550b3f60fb7f0d610b93d40c3dbc250d62bb91c1f5c33823a825f78ceeb8b72f8365f3d8bc8bcb714166b7fd1e9ea48bb1d18e7763f5c7b4b853c7620d0638ca74daecedd64ed375c21eb1a9c6c61dfc427f1c792133735ef0eabcdc04e43500343978950245010801b2b8a50108c6c0bac1c298b5a36582277448c74a4d0ecdb2ab99a10b7180b3dc10004244458e47484b4c4d4e4f225052545557615051026265595b5c676b6d4b6f5416177074751d6f76251db3b4c6c7697576c13d046355f05c665f616568696a7b9d6d859f717072737475788283ab898a1c8b8c7a909192b8be731342084200014214000100011020332e3235212120053f213f2030693435363738392b123d28296e31323361656f78686b6c6d6e70737452612f637343b0632f6f759001466748682749494c6c4e6f505152534d54454c4d5a42436545466fd0d2d3694158c093a01144696a3739313033323135323334313635313833353731495649584943444d6976697869696c63646d302b222e34353637383932302831293233343536373839313031323334353637383932312e3233343536373839313031323334353637383932286162636465666768696a6b6c6d6e6f707172737475767778797a414453565758595a6162656668696a6f7071727477797a303a3a3d6a5661cd9f9f28363f59858ca0ba3f656b8296abe0f59bf9151a38415c6982b6c8e3d71feb020a1527735080f80f223871dbe5f1fe725e7ff4fe0b13506173c308364b2f348797a4b9e0e5f00828206279b3cbd4db0f14346b2a363b3f47595bac8489dce6181f28308b92767daebfeedbe2f33ab8be74cbf9737c367f8abd018012337f89e381f3fc0c821f6e72784d864088637e89d2008a8c55789d6470b3ab8e9bb0b59149c6ccd177951c96b9e8515e6269cbedf301a8dbdf9699aca89adf259b323c5ae59c9ea5bbc3cdd1f9fd0e13203b4a528d9ca020003044452099209a888ab3c80011aa02acad030405b0b1b2b3b4b51a06070821090a0b0c0d0e0f1011126162636465666768696a6b6c6d6e6f707172737475601415c7c8ccced3d7d91cdddf1d1e20222327292b2c2d2e2f323640474cf1f25758598485889192949ea10009db0a2d0b325919012959572803050607090b0c0e0f10111200610203050607090b0c0e0f1011126e0b6965ab128c09946d51036b5d086770282a68093e790d5479a18cb452e37c665b76014fc7546d11f34f555e8f7b323132333234323532363237323832393330333133343335020305090b0c00610261036105610661076109610b610c610e610f611061116112b7006e0b746e946d036b6709d83775699070e8059899636be6f33b9766541c33333333343434343436373839353031323334353637383931303183c1a8c2c81f627583ccccd4511a03f20c8d25849022529214a5a44ea63180f79cb20b363726df5dae131f5809c957f88be2ebe3455c24f6cc8337acee84be8773662dec874afbb3d095153ee03ec445ac8d0073d1f47ef806f84af52f09676aaa3709ee94fd935c19e111c3a5643f55726a40dc4af757b13e96cab33a4fc43568f0471b47fb4a5264f5cdcdc4d323d260139e2ce0e4d916541e4b4447463e6c7f7eeae787f2dd1db2137b04466cbaf75cfc122c8c194f1215239fc50b81a71804e8b998dde00e2104d5737e2342fdaf5957d1f6e85537f968ef31b2e44fbe5ae1342fca0dd6616c262e23f0476883b85e764152af97fc30ec03057b4458dbb6566bd9d66e2f8f9d9fda08bbdf677f63fce626b710ef691b793f1ab7f4b0e38d939ba4c13c271c9b8a8747c7a6e2e1d1716978786c5c96c23ce4d4a6d6bd21c641f1cf481adc4e2c360117309beb76fc7f02c40fdd11949a3e4c39897ac4d466ecc78a7f205cb63949856872651a8273602a4d4fa66fe1bea2791a508c33c2f895680ce38baad6efb5d7e065786458afd6eef0abe2f9e7f81c708e02b081f00004c0a89a1d08e8ab492ec7cf810c33c344e8b4f7bc9937e033dc659ea4390bb84df5276ca3a6eb87b41c2838f113557b3a4036c6c71582e4609e63ce7900cfea9f398f5625a8ac989bee12f26f92eacf574c48b92b7d1ae26ff47fa2a7d79c11bdb96538e917a1f4f5067b0c7921a390f5f3424b113f5e0be00e404defe5fbe5e9895d16be4d8e203e86311ec7f8c65c4a6bcfdbbc993de17de2616ad158615e1f82cc75009adffd83a2dd717cfc355a9bef6ccfed3c17761928ced5cdbb8bf3d942a8470ef38c30e132878ea81bdc4ff3afde9a027758ba203d82d05fd22b486f907a4d991c01d1756562fcbb48a8ed6b0083214c377fcd08e296461e7e9c307886ef225c08ba9d50300bb4bc37b4b343cfb07ff54e2020ec25c86ee07fde9cc4c48fb2eecfe4701a656fb89e47903c8fa7597f7d94a7bb255e3304ae3cc8e0ef4a66f14b2a9ec2d06fbcdec67a23ed71aa1fec9b7324eac6afe87506d4d8c7fb93dea9a1ce3e34fb8e28e3027871c639ca25382c13ae8be65bcb9cbc4434babc085e056890014c0c0022ce332c70ad0ebc0b89101b2dce18a2eede4df04f45e5f30829d84823f4f8caf34c74abfa7a5c0701a3c04255559d177b9b9f39ef1abd3985f12f5f3a57dbffb23f49adf538564cf4bbb1a4bd087692df98351b370b176e7a65370cfec7b5fa791ef79782b72bdf725bd592c68afb0a472cfbac7e3de831a5e9f674ec3d6f76e71484d4a7e773cbcc5ca97263fda026b778723026d5adeeeaa654123555844fb72dd18466240a81cecf67d3c3d16430e5851cc510fc3c4ba5e3368a36c12417be5615b110ea31312a0d10060584e120000480f0ac303e504792a439ef44636f90ccfe26fb666807fdcee280bf7b487c71c26207dfd4e90e0cea0c1dc407038fb0746e794f1a5cdeacc67703976f7004817cc456387754625084e935398bf06964a1e403661be62e913959bfb0e8b0dad8293a1f5e34eddf538a676487fe676e7dcac3e49bbe2c5615f8adb86bc3833068c0ff3b760cdd7ba46c716bacb1a40d2a58f1b8184e763d5d0ba0c84cb15063709a34137edacc765f70c6cc2127ce8c59638d91ab26f2b6e03c0d0022ce342e60af0e14004310243e832d228020441e37b5c92625395fdaca5b46fec8e61584a772bb4b88a4df8884f12290b601a440e030719050c859ebffffffffbfd7719b96d5c71498d7719b96d5c716da92e3a792768a287250cc2847931a94d19d3d388c6c8e086e42e685364edc30cb0ee3baaea0348ee31e436caddd96f7def9dff40bf17703ae55e3ff526fadc166ce29cb176211786e07c7f9965fc888602d486d2ec910326a80416812857e79d4d766c92d9a5ef2b2b8e61537ffffef75dca665f53185d7719b96d5c74e80d6c8c452b1560180f0a840fcc192d0c848d36c06d185488b6497d633abe4a79419253b7cc5ff3a6dc52823a56b2de6ee72fe77dd7e364d68f0c9933fbb73340b597672a709082f4090c9eff09df70671528f61cb344f378bd472d98ca360d2d1a9824fc9000c0d888130179cc53b93a71e78e3f6be30f33b6325ea481feb71e1766fd259c07b64d74d8ba068c3344d7dcf031b792a5fc397773ba8c4219e661b7d1006dd2de50febff2b1de51b93701effa77313ccf9acd4ff66af0266737f3ef9fe2059597a7169ef35f15712dfa7f9e4f87bf583788b09cc1800e61853352075d201011d81d33ebc2b09d458536100517413365bd799aaaf0c0920e9e52325db24ba0a1ca146089146558ad8640403003f410e59003d004000ab49d01863c716532cb1bee60eb7706e580b3f57aab99563a3b362e1dcb05c523c3435a99f1919989817169414929312931111909015150d8f8d8f0e0e018cd6a888482808c8a7a73574d151211110b05a6558504c9800b404f03b097e27c1ef24a84245403c38a01a0618aa0cba63fcbe377f35bde67bab7929345f4fcd5fcd84a7e9d91d5c4b5f4deeba7d35b36beef5dafc1c353fdaf6d4b326b7e6f7790286ab1421073798c1d53439e636de7893535963ad396b3675c75d894b1110a807044d8b591647f15115e3c618bf0df9237df0fbf59d14dec2bb028845efe2f1b62fdb3a2ca1ff4d854ef5f4d47e7a9ca65bc6dadce75e5eecdce7276bdce75eb3bf99dcea9d4e7d13775dfab272df770681e1a8c1f803c1968cc86cdc720a12402102950839916024b2240a0a4a92a4b0ac01006b72e8ed96230bb9733c05bf38f49f1b497c7a91d7e3b99851fb28df3259ae3fe8e11f754dcc9895042bca8f3023cff858e31134dfbfe1c2c1af062e416e89b6c1a9e618823c362eadd7e0c25478f84d959ffaef4c9dff45ec4bfaf597ad4210124a089c48021e7d213a4bc09ee5e9ba626670c83cbf65ae87d9dcc53b003d0d1602879af7ee6c7b693331a4e77c9fc1fde5d007d2e56fb2e17954da74ec4f74e52bded8c02bdef19a63a9273160e398bf3295bffe3db34efe9d7340bbcee88d633f9204a65e75af200c5def79c0973e83567843853b3ef4fef88e473e9a97fc5d9ff2e92fcbdf6a851cfe997fc06b3e0fd1c33dc346fd43ff286c02f91f1f7b480f8e7f85bf117fd2405e922a1b43e51edf2fa2cc5ae4ae5ca81620b716b7481fed871d1e44385f36ecddbb8d6ef6345d3e968c363dd2b5b28efd9a797ea8e7d2fda1b8edd3b8cebdb72d6fffdfcbdee3b2dff58f770daf50787b6f15b8dff3cc7b2ef513b80f7fdb077fbb47631cd9f861db72594dbe6e3ebdf657218faa625e84589009b160dc7d2973a2d1604b31f09c27ba3fe843ac393cd3dccc656132e8effc82e29301641c00d41a4a473344454920002c2731cc2c01023a3b16172e14135f5f7b7d141510110a0b08090c0d0e0f5b5d2e3a2123262a2b2d3c3e3d5c242540204b4b4c4d4e4e4f4f505051515252212753544827554a54272728292a2b2c2d2e2f303132333435363738393a4142434445464748494a44212326272a2b2c2e2f3c3d3e3f405b5c5d5e5f607b7c7d7e85860201fbf2a1a3a5a7a9e3e5e7c3fcf3999a6011a2aca6a5a90290919293a0cbd0d1e69953a366aba45657911d5ea96462609b279c6784aaab6c04dfa7058e06f87677717a087d7e80a8a667a788718fa1a298c0c1c20a1e6847664231010292939495969798999a9b9c9d9e9fa0a198a3a4a5a6a7a8a907b1b5b6b7b8babbbcbdbebfc0c1c2c3c4c5c6c7c8c902b5b8bac6c1c0dcdd04040404040404043a3b3c41424344454647484b4d4e89d95658e9afcf414a4b91555fab51b1272f48322d374a333941354231342a2e3036383a6ebaa16f472d363a2c44baa130302c2c322c332c342c352c362c372c382c392c2841292842434445464748494a4b4c4d4e4f505152535455565758595a145315434344575a485344535050434d4452444a7b4bb3b581e0a881f803419a19112a49d2a403a20c892520024e8494884c281249949c1494a42d1c88475bc742caf2bfded2e093fa0b9a982bbe57753967deb5fa297d5feaafd47dd3cbff7d1911258942f0dee63e3cf5b282388241b376b4ce591a720eaaaafc6dfed887f791e83f0f258bac822b40bf3ad9ad3530733fd75b8f3a037c12e0c2b432c3cdbbe603d6d38109de962388790a2e4683a43bc0971041a6cf7a68722f0339755e874eae39b164c849e64996d8564826c11929419206f7992c5ff37fecc848291ed3bdf51f228ecf8de5d6deff1785fdf0c4c78d9f3cc4feddd156cb59675cb8f17ece6fa646cb7c06ad3f354e98c3d68587c5d3a0d30f210ce62f50a587961cf44e39c9dd3d23cc0a617fe97dc455d97c37e11b62413d18cad9b92374be13cbee11ba12580959e2ef01d5ab062b492d6fe02d6cb626ce3509a0b4fdd38de79a1273d0bc542998d1b67c233dd0253aef6906ce8f08d871869f9370f7fcf0fbc0cbe4082477faff3125c5b29786bf34ec67638a9a73281f0efa68080eb240973851df1c6364349adc9cf875ce8548037b9b8336e31236123a3b23e5175d8933e4716e773673a339f268a7e663f5514f7e25b18f8f68bcfa9f8d23a6e97ae088e6524e7ceeafd2c28b39e2048d47c03eb63f6360cfa06b03ac3000042c4b625b538c1ae389a420217165525fb01d427da9f039146f62634a902df307708d817a08806e6772b655912c008c895bb970d776dd52576597ef53424a386373794416186c000bf41b380014b7100000ffac6cb818b9b074babb4cbcdc6cbdbea838bfc870c000c148c2d868c3f888c467740154aa40749c755876eca07734781c79b0687afc907b407cb87f4880d8c081708200835c845485e4cc868788b06489f4cc8a848b8c8c8d3c8e8e8f30909091f8ac92749394e878950896a87c970c98bc7499289a9a9b9c609d149ed8849fa0a1a34ca4f07ca5a6b440a7c4a8a9aaa454abe474acad38aec858afafb0b1cc5cb2ecf0b3b4b5b5b6b7dcb7b8b9bdbe50c0c1c42a7172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f90919293949596979899d804162014dc0e06101be89c1c381dec881e401ffc9820342178221423b04c24e884250827982828ec9c29742a042bcc2c602df4882e1c2fb04430d874311408329ca833343536bc583738d4ec397048b0f030494949494a4a4a4a4b4b4b4b4c545094d4145151515152525252535326a054552c56d0b8575859e0c85ab45b5cf0885d5e0c5f5f60f0a461506263f0bc648c6566bc67680069a4586a6ba86c106dcc5c6eecbc6f707172e09073741875d08876770878c064799c7f16005005004190ca580098f23a041c1b2e01c4f13a8a3d000102030405060708090a0b730c0d0e0f101112131415161718191a1b731c1d1e1f202122232425262728292a385f524e76437336393172685462473045655f375f5f73746332365f2b305f5a4e34636f726533666d7435577269746539775f31376861373436376437306130643331613035452c4c34244c54242e2e2e532447542463376132333938663931323765366361452d5235335f632e2e2e2e24753230246173446562753338613038633437643534336239613761452e7b36394c81e1a881a05952d86b0ca1193104214423222212150f021188e11106cf13420c094402111191111111499224cb01679b075645a3b0a52a8805f33abeae4a9807a7e6fc62ac4078de19af375d422e73f5ebd4e8e6ad9e10ae42cbf4c292d061caa09aed39506b0658559b67dd1601bb3d349659b6ccb4969af8c8823af19315eac41ce1a14eac308a3a91de32ea44aaf0a813c97ea44ea464943a91de5bea447a97a913e9cd4d9d48953c7522d907d58934a2519d88b6402eab82aa13df51559d988e6ad58915feab4ea41dc8ea440a37ad4e24da6e752239ccd589c4c1ab13e96a5f9d4895827522093fac1309bd8c75221d8eac13a9a2659d6877818a3c03ad13bf4f699d9821d53ab1fa5feb444aa6ad13e93ab74ea451be75223918ae13a912b94e24e8e63a914644a4eb443aa4e6de7711ebc15f3937393eac429109e05d5f7e03d316ca07dca927f8c40c7d227f5134f2302c77715702911dfeb109e8c47fa89775206776fb655f494fa8036c1b5906d006ab8573f874f964532bb87f68e402e50a77b2ca88ad51440a2aebd535a1a24c0518a9b8a3769300fd400b362828c47dee29a8a013e226425875a32983800748a5dc906e755b16ffe2ed74208c77690819a2a97738a2d47719a6893b3ca6d47539a2c4bb3c26d4778407d22fa24063a40ef19de232819fc757eb9ef673b14e77e79b69ed06dbb5c06f91d5cb24865cdc074d486fa367a42b3f04a1de9c4fc6c925fcfb3702a47e438066c23b37e0305a14dd82d066ebc631e6daf782834fd02bc969eac50bccef287437d207461e878a392cb48c98c400abf6afe5558d160ed376d7802b5eb24eec3130e09b3e6255608e5e72128fcc1e748483b916199342174a9de17f812a7a46873b270d1567e259b683232044320f32bf87ad6469612397227f2c99e4f06f41c264d88cac0c280a3a25569ba20428cc6b82c9840541c7d37e60ca61e81458922ddd09c61f2c789d101868833182fe28cc824548f0fe6cfea444e89998bf1c6f9edff592682ae3cf79fdc72e37294b2fdd270203c3ae29cc0155bc978f9c28c6ed824f22b28b5925e1ef3b85bf353d02703059fc182bea76b618afe3fd1ebdd79fa3001fbe049c9fcef8de1d188c05d381318057584d08e366f19fd84f0edf26dc600a723bcf9a06f8c60bc6009aa3ed1dc9e6991f3e4d1f3426012a48ad374860684dd201ffffffffffffff7faeaa2200000000299d4e903663f695bff5691fb5945292f93444c28fa2f17b1f3dd5c6a6734a32c994d2247886cf0fdec13b7807efe01decd58eb8530378037b03cab239176b84f1b882120457069e357539db420018705c9bb6e94a5d0a8524c8c9c0055a3ddbf8e154c99c3dddd42362814fbda650d3a69583495460fba0310b2b4b05059e7d291ee9e2cda12ca2893bb8f856c54d2d34c86cf126296cc52a8e664791f7b3d23147a8120791678c592b9a010c79a6d851d98694181c29f93e2999eab55ab66bf1b7acac1df934c7cae16db31213f86b35a8a4d10b20e4555b8da6a5a4acd77eac4d13e4f5185a7d422ace7d94e4b92d5a26d57a420100d2c82bf5c7f13ac84def668127711eb76c0924b3ddde5051878f5eaef80e8be74baa6a974a6f99fa5cf18dd8ba6a4bd9d2d285deed9519ef144b20ec59ebe6c6abed7ab69c1a9bc6f62c5b2b887a5e5ebe3acfcfd32b5c8a9d25a266835e535b889dbb14814789931d2dc75458e9379ad8ba4c0202afda4987ad7835778c25924a102198057840b6c50e178e38608f3569c34a890f76a28a3f481bed31c48050f10b2f4db7229a0d50be505b8d991faa92a800063c53876d62c6d9716b1b5d4c9116707a9db535fb8caf73bf6664161e46a4a501428444b790e2515d5373900a6249eaf189185293d8248f5f37ce0eb57321954e3c4014ea52e2c3d0fab1847d430b3445b2b1c8078aecb3d031348f2de489c7447a6a4c5ba8c890891c140a250b275ad2bba41ab15ae34dfcc1e4666fb5c24295fc185241a562075287acf9f255e944c7a1e3931fb6342a354da980868d19231e793ded20a38671c85a3c408e6eb386f3daa6bad67636a7309592200e0952c48710530513af364fa3755e1b385e579d55d5b848f9d43ff263a6d3255fe29531b7e13ed8fcdcf8c392dad4bdd03a61e3f99834cbb44215ee1a9f38b139730c2ae7cb04bcd95ebccd6c551c9b10e223258180c7d34493aa58611acb244384868f343d0ea07ac9088b1f23ddacc5de30c027dfddd5c7d859c3c183462e134a3c6e4a793093d2665263be23894f8b6870b5e3279d615a8064c3781d5514998b8cf8bbf622e2e4bd8ecf1e56fa191a65982d36eda451692bceb761ad462d77a2320309b25c00e69be362db94518d677fcd25a6a698631e9291cb2af4d9b0b39025dae558c1cc47ed2032da630cc254fcb3e78e697b7d2a5d83c60d1a52d0d802f1f01bb7e98850f25ef3e6092b078f898200e746b50f1faa391420944f6c759698376a46242acd1bde4ffd9ca549b5a36e7885c889d1618d4c1b9e196ae485dc0eb2e1f1d85249d7902ddb6d174cc78e83aea8865f837d8a95e6364cd2f0aafd305665b64816951feb26bf3041c32fe665ab50352f1121aec5137d902788989ce1afa5a65ec6d4564cccf0eb0c63ee86dba40cdbbcfba8f603b12c7e1049ce266478a5db08b1e6c34ca163244d3019c3a746b88bae20a9e0fa86d88e297450285a34c6c30946a11c26c91ac405061331bc725b61786ebeeb50ede1831330a4e4b6ae2d1f5f4869a135ee5ef83cb4da3563bedc053ee78c635bc685cf6665dc025acb68e2447644132dbc3a8e9e4cdb78c0240b097147608285c75b3cd58b961b042657f8a3122ac3891556dae56876528537de9a2fafb89950e1d7c2b4b229dc2d18490fc4e39329bc4aded64dbb6a9d48e19baf26ab9bb4c9e49d2293283c628d6b9dd38e59570e1a3629e35599d68a514ca0f0976811eb2e9609983ce1935f3b085d23ee318a39213164cce9054c9af0ba143a8d8a97983021dd627ab092504c96a0994ea23b253c3acb4a29c49280145a66cc09129ed197eac59ad099cdbd23bcb6c2c6f87a25237c322a66aba408afd42d72ef24026e6aa74da9753b8437da5031ab103e253ae9ce414c36c4fc240868656ab76ac8f86629a133b66a962d2710be536a9436b5c1ac31f9c1a3e6d185b48d52263ef8a3e760f6e04d432d51ef1a1e1c83ce31534c76d0c97c3c32d1c1696aa5755d691c931c704abb1829bfd4895a99e080737b11a2ec55a7ba96892c3631b9c17b37f2c105e31d131b3c4b7652734c6af0c9a0648695d51c01131afc49de7c789a9fcce01b324d8f7bb5f244069f7c57086a22066bd5aa3c6886b0ee090c9eb175195262f2824fd4d49c61529c0b92ee221b60d282c7c3677a20360bfe54eaf36b857c4c56f0ea89d66bace62b262a786ebf14fc5d73769c15d31c370d98a0201d62521a81c909f228d42b8fa37b121313fcaa9578ba0b272578c4caf862cb13123c52890869dae32bb720998ce02f2533ea309be3c668a711c141c7fcbc47a0686d1282c690d2759b2620f8952ae5ee075e25d6fc509173e2817794ba29914974252663fc625eac4b2ac82a08130f14930efca1baa62c393d261cf8b614bb4c834e6b4cc4684c3799ab66dd248c5fb46cd4156aaa92b9930d3c42db877913fa800918af894aa1a8632a265f7cb774162faa2c242487784f34c0da9c86472da65a31f10265638a05aa115b94f069561b995892f06ab151743c0c2a2d32890509aab3cf6aad332976e3c6a3014019cb113ecdee267578dcc86183c5089fc89149a3cb14e170d370221e3c73148f272e6fc72c96f08b8508cf6814b5ec1c6319c29f31cd9162ea305a645268b16311c2a777e3bd22e7e0124b1054429487aaf30d0b19af92e9c50e8d3a8a94320a8542c1c50af26101c259671227612c3f38cb13aefe62f14126a5ee08b5079c79898d9e1330161e3ccb754e5def2eb15876f06d12d3c1f7e9692c55325f8597552cab9636eef151e11d356c3cb183096e0b0e1e319d5d662eb0dce06f15d3ad4186356df0cbafd5a075b5d2e0957be2459f686099c11b950e714aa9250516197caf83d05b1f97c480355e9a5882c11f562d4dda4d8a113af782674f7d52aacdc610bb585cf079bb3c0f9f64885a81a505bfb6152b2eee29170b0b3e31c8b282d67059abaae04f27c698596d53b2a843e9ce1014bca674902b9dc07282e745cbfac762823f7b6857bbb96974208b62a35e3c7a05095ea5a3891b9aa37a252c816504df2a9152a62448168b085e15af6d948b8ba85a2c2178bc64dcb4bda91b7ea8c40202c5d48dc2b63952f12c2e58d842b6e7a42e1e38d8e7ca075515f174252ee5d4630a1d393ad5db32c62fd487d8156a430a0aebc18342a1e0d091c3c6124da8c761e9c06b6ba78c8d786e2c1c78749e0d6411e3b95d5b3232cb62f13bc4984a6c03cf9632eb34965808215239596401e31d372d20942234d22172cb14c9132438b88ae58b5f5f67255b34f0cb08d362902876ec70e4d3c4e2c5afd31aeef9b12438b2711289eff486105e2b5b6b25048976900f275ca20fc9e411279733d70f936aab58f34acce934b24996d69e89181347bc1f4e1af1e6142d6d8c78366d2eef384feb45bc2ae5edcc4890a3644c14f16d0ebb5392c5b180111c14ca8f922dc12411cfd83254890c8e383182a30705e109268878d455bad09991ae43bc2f8358ad215e0f39df62d885784e798eb2d372f510e2b9a59e4dc43a8845cba420d8b0844358110ac51c73132f2681485e4a01f1895c0d3b257134954ae398fce119f16e6a7e38279dd687476993556fb7c9f6c48747c6347b626bede115eac3ce69b71023b6f4f0c99d987a7b1e1e97f3a1c2c36b42be585bab6d9a99eef0ccdbcac526d5593b668747aa31cfba6a9bea808c0ea2c3a336cc5bb87c0e2953d3ed2387570a213cd674888fa238fc3ae5e8301cbe315d018a07cf0c0ffcbad2a42eed3227f905c18c319eb9369fd18137dba897196770a0d742cd6c13e357d331b77213ab42dd33c27837a7462dcf750e5f4a1b7883d4d7089f0f6680f1899d6a68b3ed176f12db609e325a0df5cd30be4e9df65ec10c2f3e31e57628949ed06089c42b739459a3442e90ea3ca8688144e7c13e4c4cadb0b91ffff1a38614ca8f78d52b2f53321a83c511af129a3e890e21bec31c2c8df8d596137a05cd0b1646bc623a7ad88e0194d461de1d5e066f745772c9659a5228148ae90a7227e2b3a9ec4e8878476d4a216c07a5ae96cb21be91fbadb618e2116ac5da0af1ebb069d6d60d215e11efa474126abe0ca2bb53c72288eff374654fc112883c8d3b21201e3d79535c9e08ff802671d1681f3f54c6982a36779b474f9a8860f1c3772b5be7dd4eb35163892c7df83e4d2cb964e1c3334ec8ef5262a9372828c6b287374c9ddd2b51342c7af85bdbcca4d33c24ecb4cdf0f0ed8bb14d5388e50eefbed49c34c9276f5286c50edfc7a0a5882da35d875fa926efa83e47475d15ee220b1d1e9dc25e49bda1b72151dc5ee6f08cdc38c2c3547aec32c810834e1c6e8d450e8fe9ce0e63ba9439a22fdad4304b4cd3b6ee5c3216387cf66a3633cb090ac513bd487a109637bc5a84fc303f6eee41a13422fa1116377c22d6125b15b7a65dc6d286576ec6fc3062bb97c3c612c6306161c3b7e6c6cfb671d3b977500ccb1a5ef16979ca73174f324ca1a01ad442c45aebb5a4e17df9596d5aaba6182b765ad0f0eaf4f069a35653ad9ccef0ed284aeb9aaeb36731c3b7a796e15765234bc65d898d9dc91e0b199ed1cad6cb18b261db9362e0f5e673361b4bc933e9252e6178c47627a19e1a59c07014a9f385c744481726432ffc29bb2e7c43d4b6930b9f8caf648df1dac26b4bd7e6d612ee5a40b3477d3d1511a568d80de5131e2c59f84e0a55d5575fbbc3cf04a21058b0f06b3a255d75b94558aef0c7dbb23e7d502ff9818207143b763010162bbca3cc741a8e3682c982a50acf49b56bcc8bf1428557c3e73a8c650a8f10b729d55cac8baa1a3793b048a1b18f51c7b3bcbcaaa827159b31b674885128e7f81c1696282865da51ac2899b5eda10c9632d22a6b28973a83c263b341ba99dc30f584777673bedadb71ad358b135e3146caa456dc04954ee3b4d94c78b410320bd3b284f4a502893aa844099691e88a4e4265a868861d2371181c0a898b2452d1903c0a41a903d4ef0144e35928108fc2312006811003411002800c8400029041c8208630527971180bb9b47f53ca69ff16a74f7d07d7907f30479a5cad7bc1fdc19fe10b93597c65863f24784255b10b3b3109c802151e712e29c000a578f1c56103b58550aaf9216570f768b161ddabf9c80cd69b46aa0ac75d0c217efa740772378bf538bdbb66f3b17f1dbc83bc71ccc5f7f3478cc81eb5a4ad7afcd8835077bad0889f5e25399590930d00a3d87d6dfdc86ef6c7e7215e4ef4aa8b8056d51e712275c9e5098a27f9e177a4064e5f2170cd6c54ff044a72369588b09e2428666cf791db5cce125be04391db8868e3de157d5e725683bb50471be2756a3335b2b12d92b3b8cfa32fac56968050a77613b1b860c5fa171f71638bca7312cf933c53b8125e82c1bb461f9f130078d4bac035c2ec80fee468be4dd7201ccb28342a5244c78132c54b0db5f98dd4c517b398ee2e2a6aa00313fcff06e7fc1feaa0856111cd7407f290ea2843baa79002d32c74e36bf715ed4527e4a13f4ed50678ead927ebfe09cf4229ccaff9f0798fcd4e41d8419c35b0eb46a5c9f45c41a7feb2770290363026c51b0b6bf1409041c28e5d665fc1dae07cf501329367a4a2f64831f0491aeb919f84d915406d782f45a3dde177e192b1fcc8feec74f4fb38839a46ce81144d6a22342ebf621f1ac0b04b79e0b51c21ee4898f1810392066e8d109a790285fe2e9604fef20380d2dceb98e024591d40539eb297f55e30b81575998311ed9121f91cdd0acb95f45e7172ded61c54f4261d4910d8c81b55c6848f60acfc94faa37b046d05e8a2e5233a566a1070b5dfea273792cb1f93caa80706b80dbd0de2c0285ae6386c2d85afb13e1b6b3a70ccacdbb6688bf527841d1a4370883a84006e84686da50b1d789bdffcf743c4a68e79838b37a94038e90a12a1a2f53eb3514dd6a87bd464247e3df28997229be77f9e03c55c85b58e9868444a4e85dfc9607c7d0d7c687093777caa63d902921af0aa1f0ed3eeebc9f8a5673b8ac48bc98c8e150eff0a25e1fd4bb18410f7b4050fe5e1382aff57c8331b3b82a0bfb1f6e6700cf600c4e1358370bc9b9fbd5aab6b6e4a4822f1be4932a7851aae384ee96bd5194835e983658ef174f2e5c119a9adad5522e5a412da08eeab8a1b1e7959bdad7c807d28716083f29720f62de0c14c11139483bd238636e4480470dd390d1ab2ab0e4c616e63b215a2d42fb3feacff3115e4ddae51a3bd76ac6630d4420b636bba10ed769a22880e231495e7c25bdea5d55be6ee5c02bfbe1360069ff7de87efb75fb073f211ff487495ffe76d7bed2291d94774ffc142ae85fd90cf46402ee181991107510a1e282aff883a647d4108b67afb0d8005f2c1a683ffc6ecb341368fc916d2b66a975b49d25c137cd5164dcd89507d0ddd5df682d25d88b3f394a7556edcdac8ec774c6448649fd2baf81e8460435dc1180be5814082ca924a1c8b43d878f928444c254243146435719b48f03e9f2c66f60b64a3968ac2be5c5052e220ec8018a18a55184d69ed8100d118941548779a18fac1d82d93eb74494a09daec272912deae2b19d35a2b8b2265d9b84d4b61f6dd067c53924b01f975c1cead9d52641a8fc6270a9eb6991aea7c2a6a292cb169ea735ac2f1e08a05276219a88bcfe683a56f945395884a91669a506a6b38750096379298a0ba26244980d40e0ef140a41454c8c2bf6bb1567d6d9122ee51c6e46f5a2cdf667e30293b628014c6e9ba211e434b87b69aed83027f59f25994f0338f194fa6738b4ed39635a866cc9cf1e299093c9e1906e921a1d2230d78f3116951f49afb1a8c0d59989b6b1047f35e991466cb4a3123d91c1543cde269e2ed29fae395835b433c2e003bf05e4818ca554a9f6ff75e58d71268dc32e7c6c490bba4993a737c8b9f4e40ca982cbd003000a4b52fc79c9f1b5638a8efdf73439efcc4ac56c077c727314a2e5a4d78f8f0e20c08f7537e9ab69973ca91eba8252f327da739ec293f249b72280cff8a208517931e4b65f04dbde0c3e847ddcf75a85a0593b72cce8e47b6b9ed376cda3a893352fad80ac98dae18c5571ba681d5dcaa8cd6cafee4f689d1cab83f35bfc16b9db277d658b184d4c22d14c051056430ab64324d6d475efa918424d70527c1129d8ec2cda1695849a2e80d12b6b86b7bc7dbe6c249f585f137784bae4839b60171f7d6ba8ad1efe102582d42e06fd0579fce63af8b2cba67dce5b7a82c8d531173fd10b07440ec44d1c1b88426497127ec346528e2319e448b62e5e8543e4d4d168500d5a2799a0acf53459f97b1b79debba1b52de3aaf66b5111ec9754480f89ed5c8cdd4e24f4c49c50c6a7e424b481176580b04bdee8141b5f5674ed4798b0b21e019c7c3249a431203aff313c0a3b47f1f656cc8fe43da62c1db1c02e9a611327d0564f6eaa60556155e8019506b9b0eef73a463bf3b41c194454bc6b6a0c47199d3146fc1e550e88b3562fa9d9aa4872540e81a91f6a2879c32d7ab880739532fe3ed9dcab1f433045b4d7af88a7201d5d927500a5bf7a470b60e2f7d823997322fd63faeb3478e811790148da6ba3b975f6f01c74941fed9576f58e91afcd3cc567396508822ad4fdce824423070f870faea1818d6d38d81590f8c52d3b81c449615a68a8c5fb65baba6f54eaf968068daba27600a4daa0ad79ff4da427ce717860fe83fd627470c856dbbd8235ab19ba7fa2ffdf2abea564ebccfe30486caef25baea2b81de4682044130885a288df1965a69075e7cf61171c495d15a1635d1732f196b752ec5197c658e4df115d285499a697acfe9249a929d176981bc2b3aceb418ee918733187ea9faad9427ff8c72f09872c94185d3f6728e787aefb1c19a9d0364de7d024845ca6821f904491b8270547daea20eb86510c50894577c909c9b5d007a70123e52603b89f8bc7c0115d3f3201118eefd60c67ee1a797d8a60bff85b228d0381bb5168f580f0531f051a40f003d5be401efe926cdea51c53d774ef1066c39e70dbff366b4e10981260058a08e11ddd825d917341cfa6128f30f48ebbcb8be7165e961845311f96bcd34ba4503d89b8e0436b292479376d908e4888ce10a52c5c46b00548b842806b20101b7305ef36b286fabbe4e69d6efe08481893494440a371fb25e0585f992f8230209e9a68f261a3723aba8d0c43b40a6f4bee487484a59b497676a54636441dc1b4b923cb7b3c4c7afda7f2088fda7f1cefe8b16f425517dd18575b300ea03d8fe1d506909ffb4fb5d509cdfd29c22383f929a9015d84849a0b6653e91f3c2829bf52e9fdb4fae1d9ba3e49d7d0d08c6fbda8cf40c5e47b4131c579257b59c213ac59375a9c13aedadea7ada44c36c162d8c501741ef41beadee05c1d0420a3051aeb0100799546b879b9f420504e34776a5111b8e1a2fcc02ece326820dc0f9017978f3320432e4078f9e8e4b095f69cac77041564d269c0f2ca23d50604bbce2edcc58a49be309ca0a1ec0304e05c67da9e1b97d0f18d487abf31ac89bbc3473218f5c3caf8a4002cadfbac0b7b8710099ce0909c034877b3638021aecf3fa52e925805b370fd049506664e8514645ad72002237843266e673aff03fda37ef7da28eb9df1b4dc8c9dd13462a6c946d3e5784199b26173a20230ec3d6babe51865cbbf9e88408c46149665b711c9a7ac0c87c6ca434a627cd4fc5a912a6baabf95dfc355789fc95289f1b5efe1fc6a88fa36ffc204a6b2f0897fe2b5112923ce50ed1e12b0f5aa32db9f797ce296e02ac3035efba6d155d92cecd31e178d6099588fa3d9ba79ecb6459afb08ccd9a399ac4023ed00896602ac0fee8a5e44f7ae478c60ce959491cc5169f3ed277d8d3c62b90a58dbf0bafb51bf6c73832a69f83db0cdc578a2939fae3d93b448cabbe931aebe7a4937e07dbaf78fee4c7106d626f0020aede183e0ca153c1a0400b12517686aa165d0bb61d451b0362f2477f96fab061d81ecd22e302ebc788aa1bd718f17c269f4d853fa6b63e0184888cbb475db8220b2dda7e8f2734b9e3d4942a44e8a68ddb81d7491100db8270a64bfeed2b6f646f6748a8153494d71bca4b9cf12bf21dde40e18282c2658c602cccdde4bb72921edaee089feeab939dde08974d856738cf768e07ec4c600d7a44c2c18bc6bb6f7ac7a0e06a81f518a9851dec85da3901dfa23709ecf852473417eb55d72a9d60bbbcf81dc8cb7409c1a0c64eb654cd7f177f2adf07abc393ab15a61e003c6f057e870f8f12c0aa21ebb4ea3cf69959999b756029a8a0b238b8af7b7d7447aa1e253d8c49f9a9619c402557d4120e591a16a771ad96b112d75bfada4d1f38724414abea3b6d37252b6b748625f395cbe6fdd591e74001dae93890242bb1918e2000c6f571a3be47fcb0aca01fb46ceb626060d12ea1192f3f8ce455efd571d1c00184f112d18a87965de2e8fa9f0823525769f2fe31173fb578166a88f1061de433478000528e1bd702d049ee9a3fa8e313efd1118371fd95f1a85171249a258f095a63b06f4d3abb2e46098fde69dc91514a87a6edbe42dadfce8b0f2e6eefb139b99d6bd3c56065603bfa45296ab01c796faa66e286feed811c38307b314a509bf36782a8543d2d12f6f4d6ed1988d430f1162963929668a8a19299f4d1e716c9d8983bc60769a0f4e39fad57ebe34a2c34bc2b1496039f2af3823032518d0315add79c63c719fe3c64d091648762708e5c6bead1cb38a55f5a9b6f438f3172be241e43d4d057f092e62289027710d9fd3f3ffaf1daf0ec5e81ba17b9751cf51956a262f7ed9b49ff96d9bf3726c4cbec0acd40bc5f5d308825e206ef88658a11fe1ace3feb6dc9d1489c6771ff1331dcfa854dcc62a3794514b428ea21a2fcee61993c47db2004af27187f38f2a060bbf2299f2fbfc31c05e52a0885fac0c7225c40be187fcdfc72016ca766450a23c081c70a334a84d1a742c52e7792d6b28c22aed75d37ab27f892f15e7ddbf6dbf61d8ade953f28256e4af3b68849f0b556c0a99099658ba49ea94267a35fac919dc815a95176e68a6be07d0419f6d4a096774df3f6374a8d970851305b4df1aa0d6389e116904d1d76f5fdf1a12f3dfff95ed0a01147104236df6c8842869400d21c96ac0777c428580af2272d19e522131a396a37b0e592821e152c82c0584ec2caf936d117def91889ff3d466d41d0162155422ca55bc6cf7d1c2b034a944f5de5aa0ef42d1602a8f0a609e30a00f98c99d6ad823eff98a1d2fa61cbbb84b693484c1de82b1405bd827c6b268b1dfed30cfe9ec7b285c2198939a95e5eb76438b13904f6d7aab93f5f373cd08154c7494a45e5e8b4ff41ed127755658f7ac741ec4e1b01d137c0d28e43cf030cce8d92ecda19a5ff9205e773b0523282cd2a761bb50aecaf8b38c17ecd5bdcf094d8d2b9ca25c52150557ee47a44b1717cd4b18f63214468a82703427cbd76f6ee8f79fac40b7d20c95f09006d55ebcd44de719a6163c979d34dfc04bc26a0cc2a6808899d7069af9b6f2f57c8bba04c1086cd06c8e14d01d34bd452d459c769debd2c86ce50565c298721dbe27f098a37cf044745866b837c69051cbf88ccb3254f85a9caf3c85cad9f179e7486ab2e5cf34cecd73514defcd7592ef5ea5c18a0681c5c4e614ba583471802078d3c295bdec0f5a3a7757e71a2b1cae30111571bc214c299bcfa68a21c23848473644b0e5599ead87a57e8dca3a304299965693b285f6fabfec15a349562a0752e733309ad85468f8263a5caac843feb2746c1fbe2c080128b164d8bac347c20e6c97e56ac6f3ea290f005d4eca173d52fc59a1c84197fef2393cb08ddfd566caf6f501d48d2295970f6dfeb54e7242decb07f3dbc7c7f3d52a971b961edd71e444481a4bce813eec3e466834e9425e646773111e592594044f78f8ae2f171f68956d878753d6213229b0772f4bf9d4ce39d1cebd4b5582129e9416522385b62023ac2c331438488052eb8c235c243e97d7a9cbecf264bab27062fe53ee4dd8efaa14ebd809d0d340b53ab8a393c5a8cb883dcf70059e43673f4529629c638762120d71a9a011688cd6a905a0ae2136da8210d101e9659474383e0d8e06633801db41055f3217c0dcb340cfdfdcd56f8c3cc40e5d7eba938e4cd7c62774f3f76fb77155cf354a6fec84c7ecd14e858e97837c108d3986424a964bf77f259e245fc17bf09d092793c2543852d9048fd477604f25fa8e374b5d64fe676952dfdf96deefb05fb67a75ff08b5f86f183c3e2dc1450c9f41b10d47232ff9f7e6cd6e8e1341e907a025819edd1264e681dc7842317c5098fd70e01bb18154c794f69fdb16f479b8e8898412cb2f6fa8ac60e018160e17fc4a52de1a3ad092105c59060917777f471d8f6c72e567d6241d8a9ced9c2a099cd29a19022768cbba8a9c695dd48a6a505508144b9fb1c989317823362555547080f912ae8fc8e6cda2ea534ed960a4d90480fe6f449844d2be73644cdc454fe1d0480d6451d6a7162eca0a67794896305f4d8e9cdce4a00b10b0eba7ac9bfe63a343cd8c2fb6f767a84d2990909e592d1157a20551d9280c777aa8a7aca357f0e60010b2bae28c9dbf87541f13b356c915bb82eae03ca4f93df55c6abe45c20576005c128f4d5062252557970267cbe7e97aa83c3bdd73ab0de16ec4e020d312393cc0c3747fbea6e11c717581b81bb7d59066c3f6dda426656d6e747e7b45bc7bd2b1e7e049d1a10b8ccca53704626e613388e1bc9be6073fe56c648857504527b8fa78085dda80e7f4b1fde6fc245f703592494604dc947cfbeba229a9895ac75e1579436a1bbe8054cbd4af199f0fa9c422d4f0cf288c84395c20358111029921e211551dd0d1142f4239ce81ee6e019328931ed699a1ea74ca09ffb7932a882f057992a2d94e086eaaff353b9d4a42aa103993fe67f67e2e894227a64a05e50b5d94e9d1e9b3bfb6479fcd2a8994ee1f62e98ea78d09c7a847917fbf328ba1dc98bb2d888e8fc249b03b38de018cc2b7c59d1c3f9d9b58088481a89a398413382d3efa0deb47f7da9ec97cfc82d37c905a9805fa180c5509d9c7aa00fdcfaa771b24261f35c142f1d6e3c61af7e3633b6cde21e12b5136c1771aa6b8d11d6cfd9cf78b6d0265778cb9da4203dd50aff1a98a89dbb4d334681345fafd4924fc1fdfcc9f47f8500397eda1b81089afcda04284d4141fa01ab7382fcb0d04d04dd3f68133c629aa3c3c987af51f6f9237951588da66a048fa4440d87735c5ccf446f1085aa6352db74973c1e535db942b5c5a2d5fa745b615fb970d433babf0c8cd8612d58d976e4cf0d119bd3b391958d86767525f1c15402354d9e528c93f9d2173724d710c677e86d2cbc9e85871c75519aa7b7a49bf6ff829786ff25a4fae3318affb1c9c5afde5010668dbdb1e6d64464bad419f1fac138e2955f21ea809ff20bb9ed7df73a50be2c6e13dc84c90307c1ebc38fef0764e75ddf7c675e3a52901eb4674fa051996568729cea0101465abc4b635c2c23114be79eb7a706a4d36cb57a28bb9f255f89c2a1ec727de19c1f910555de85d85dc9b127134246451895c71299e1fbca9d2bf536fde1f220e5636c38f375909a5ee971e5e6b750d8fcf6bb1030d5d7399f580cd3590232af43c890627839c6d4d741e317ebc01a6fc8ff651c2a7c7049978d876d0cf7d1453435e0947df38b6f036769ffae07d2006304d88c7f74a424e22f6c7e2935fb4df7920a7ff42c04dc094e766a9966a13767dea3152ad0c6c44eb8a9548a935f98b360e95135ce22c3510963b124658da4a4004ee92a12659863388d5afaea764a41d13b0d9eff27122922154dbb4526c4c8b6907727c4186c625afc10c2cedcca6439c00f8f3d9c02fca8126421d59dec35d8c617367a8e71f68a0ee557e61a55674cb1c964a302637c17033c97e6ad39941b18fedb967dba62a251446ca84be0ae826037a19fa3228b9e5d939c64f825e98c2f0cbe28163e3a6f1430a64eb4d27f9cb87046fc94f484a178a46857af32dc980259c5e62c348fb1a6e3372dddab3a25f0526e12759d12673b8a774f2b484350fa1e69311d901827d76e5d18473de88b69ae674e849dc0eb9b5b416cd48551ddfe05ec2ada1d401011db4b09f33b849d6e07d7bcdff60f032184a800cad300233680b2241d02c3d09024499224499224494ed4a2152cb2524aa9dc8421f633242bca9149a694522ad93f09a5fa4f42a9fe93502ab7c4123402240215024c514323256a8fedcf48ee4e65779ef6dc6624f58e2c99513bb90b20164c19ca173e054115940143465a6875d18d9150e7d33ebead8ecac28891ce37868e6b88d9c084914e738a730fe6b205465ae4f97825afa6d839ea8bd40c13d17b919e738e109b7617e9b5955ca4c547ac70b7486a956aa5fcd6abd222b1ecd7548c5ca966b2488bbdea878b21d78d457aece95aca5c917c75b162ac48f9fb9c157356456aece1d24545627476aeb8113345ea74ebf5fbaf2b9dc9489156fd7a2d991957169400661469395a2b939ff75c50bd00068a847635dff5ca0ee354647f2b56d095c01f00f3447a57ed2d63ce416bc0389198cf71eab0dfe7e85e5ed8a795f304d34442af35c60739aa37c03081c729ecd60f01270988016689e4e8acc3992e9743675d5ef1c02891f81f6a4345efbf5b539b5aaa6071c03dd61a0147130052982452f3e6da6a2be1000609ed6545eee967999f73a78039a2adb61129dfb9f1d751ac80292235bfe35ed757625ff98013038688b447ad548fb8be0a33447ac65c04a47cbc054688b4dcdbe7f4c5ae3810ae380782f8f7d7d8fb32c10a1069ada2853a680b981f923e267bb9266ca0d00d8c0fefea48f115bd3662ddf4c6583a95f95035b309a902d343622d1f42ebbcf49c85e5324209dad2d2d2f200f0c0f090ba9d7e0e5fbb94a05e1302be7e2e9e19303b2486dae894ff3bfd8b79b9b87e2acfc0e8904e6722f5f65e9e3e7ec8607248ef39fb6a7d905b0b00180c0eca9dea355e98aa58981b10c26cf7ee75c408d5551fe501dda0a47ec6b8c8d827e9e5da7e64c6dded496a6e3db5db9da47d0d1b3acd35f3e624a1f6f8b199feeaefdee45db99b3e4d52b6f78e166b3bd36532617f781f6f3726492d2a1e968c2953adeb8db92425ae76fea205309634c73c1939752af9dcee440b5d2f602849d8baeca8ba11ea49d451ca3d76271849d23bbebb50156368159f45269273b2bbd105080692c48ca52277019847d2ea6deb1ce04842ac48ad5a668fce29ba379278f5bd76ce716bcc9e5ac130923c1bbd6464de4ab92f92d4bd9fa516bbb7b85f91c4fa315dcdbea543ee9ec826627564e5d3985a0edd601049bade71778eb2b3600e49bbbe0d93ffbf39cff7523086a4c5d69f83ded9d55f6c82292429a6f8b9fae386fedb6c6008499feff66d2626eafef34192fe3a88b10cccbee73aae9135e61e48422873f12e42e6b06dd2c00092b2a9f5c9369573823780f923a975d673c65e53e83573aa60307ea46ff858b95ecf05d3875bfc67d7d841773e12235ee998eb7a67de23adcec3a9477ba5af5f53e50c604fd682c9a32d67be5e3078b4a55891ab47974782b92321765c3cdc9942964ba690458f60ec48ec3f5d1db9b79c3bf81040c16199407760e8484721673c3c073a8514f169216c802507468eb4ceb3a7685b3c4f40179838921ee5c68f711938fe243ecac74698da2759f3d55c31771860de48dfccf2b01b0959e2ba9cfc57806923ad85eaf03a6f42730db4a87256c1b0f1bacfaa536ba4b6effd7aa446626f8ead5d1a495fb2d4d35e0da15bf594114d168afc5b76a2804572dc10f33557a48554f3bcaaf5455624b55ebaf3163755a45c471df556229ef6683554a444b65ee352ac515111cd142951af6dd76c15b54a46423452a483efa5a0f02f4d37c7903f6e09b4b0d04091d869760ea3ea3b79619f9e2f41f344cad67f6b5de2a2fac32868696969f14be344f27d6a9db77c1b43760c9a26d25956e7dbb7374c24ddd60c17ed364b246c4ad92991563f54ecd8f93f2f5f8ee07a80268984b0a1554e77ab5bbc4122f1b7d5eb207d785a7344725cdd99f907d735462ca5eb9636e5a6885ce4a71e3ac59cd5b172ef2c3444a465cdf5b03eb8341bd91089b71d851ebd10c97b214b6cf4b4b109021519dbfdecb2a3734565e64e96068884942333720a1db7e68794effc39ebd58d0f6919b2f5a8b5548c374fd3437a96bc721f59a96e271b1ed271cceab1f7cefd6687f45eb7d152bc6bd7a16f7448cc1c5aef7348aff9b86e70489f8d7fb9e5f5e786f4e73d1dafb736a4a3967374be8684d063738886d4fa569d4dc7777fd76686e454b76dfb5f8eb899922131f7c8a94d0c29dba5c2b718fe633024c4f05be6728da1f6ddcd0be9306ca99af7b89050f34a54c47b5a48cabd3d84a7612135d474a592fc3da60fb9e77615d3ec07a9a58c4a724d95a8cc29e9d377b937253d73fc5e9952d2abb6ae14fb777eef6286948498d1b2cc47cddb28a9ed363f4f5da37cea34234a6ab61e59b19729ea0e259d97e8139b766a487a4d172b741bb02e24b15b4584cd5f657222d01092d66b5d6589af6d478089194033881ecf7d55c74a5dfe35ad20f7071a41121e94a8216fdc04921843e6a61a1172abb10548423eedd0ff6ef34723f53c0cb131451ebc668d1f8d11ae723f8a2e57357da8373aa855eb756baf88e01a3eb0f9a046adbd7344d4db2eef7bb432bfe2a7aaae6327d933e00241959696468ff4bdde88e8d636974772beda31dfe7a5088ff49bb9b89d99ca75cdef48cad1dd3784f4135ff50ecd6b57dc673de3839068ea487bbc39774b0fd2f7a1a12331d36e8e3ed961646f139389668eed7e5cdf3dbbfe5eab3decd0621f3952eafad5d3dab7f05f7468e270cddda8cd7bf21925d0c091503142f6cbe1afd75ed30d68de486f95d5e979e59071f5d8d0b8911ab9c30fe55b4ea7eaaae049a16923a9de77c721f61cd7a22a1be9dd53fd72ad566ae1ea54ac46d25ef4e69a897413f389268da4cf92df599f3a76cc1a349273ce79df5aedb46d7f6724dcc7edd8a8e5aae6fa0178a13123b9b588109f4b969114bdc396ea343cc9bc1b16125a572d68c848ecdead19233dc6d4b7e35aa14607d6ee0a8d1849bdf7f39cb11f46c9ebc2f9619ce3c82177ad6f35d5b001a3179d3359918fa6afee17e93d720c3dd71381c68ba47c9c195bcada7471d251a347c8e9fa0e657b43687d7005cb5a40334968b848ab7bdb5a474b51b6345ba4a7eb74b97696d3b650267b168d169ba808f1b93bb9cfd10d849de83381086020182293480574d9326a05e603b366703c1849511c022110c3800cc220086210328410420822841804d19979f0d010429d4acead52d1fad1a1cb0b598f80d56a82e1685f56e1f722b98396d8cfd2ae5308405e33d734b4d5fa9d2ef61ecd1cf3b38bc012634131200d489387de75cdc41e70578b4192646cc49fdd15cb8ded5f07d92eceda11472eaa4019436f0c5fac49f6be45d250e4c9b7f9ff2b6bdd70c076528016a0174ef758aae0f893a6d9f7b193867571f265407bdd6a1b67977e7c7124f0c25fc1fe56d7c65b9bba3c78d10b421db357ed6e48c7e0826a7435e2d81697f11a02d488aa5d23f2c67cfa94fc0543958139a220fcbaf47877478339b72e56abf075bd8af7f77ee5c084bf7177f91f50d1a8bbf22d51d6bbfe4cc688e84787669c060ea800884332a8da56ac8003602ddbed7e4b5b6af8a0a2387e3c0a7ee192742225cc5dffbee1527a864560f18aff4d0e5fef22b7e5e43daf659b6767467d8ed4bb4e15173d539604d481ef9b26242c6e8ef643af8e522f4ee084343a28d8129fba3f58d890ddaf9104e71bb5633e94e50633d97c5b73dd833c94949fe404f280c2a30bc5713bc3759b9b554d8ca79dcffbd7286e0fb96442848f682c42a8081dd0859fd888d1a3f9d5a00cdd7710ad6cab88d0869c408d1caec1b92f449704465aedfb2f017b87e30491923ce78261d0cb15f93e2223a8c51602830436a3249050f69548d135d8aaf2f4f644219b86aab82d4338e90f40ccbc74349e45a20d77d45cf17e9a9d719090f5d89dacf340e406bb9cbb5d1e6789a4b682b82de4356feeaf4326f7c7ad880c090f2d30c89552c4ef374e2a52647bcc224c862ec8e82d9951a032ca9694e3f595559a100eb47923d5254323e9b1e10c0d7802d4b350dc33289c058f7676bf58e685b02b09b04769bdef8fc3a33f0348f8bfa1532bc2058a57006f2f67a4494e86fccdbede76d081ef14622d2d40f8524c58515ba939a8cc226e44a908958fda7b1c143044f9c2e6c9a885a92676a75a902f01403b23990b2d46ade64d9f34c1844f18f8067592b02856674a9c1e9139b0a31d12b5aaf395a5d57833c791f0b72a53eca3e780d97845674a6bf1597ac7e3eee14e1cf101c7f493e7a397aaeb454a4f388db237247dba9b16991ca0ef441608c95a2ec4edd135eb127556543ef33a6eee8271119561099e9f1e567633f4d225c101825e6a94558873790bb99f750a05154a345c4ca42854bc6e9de7c525678e25f35a7c6b8b34e5dcbc352ef0eaa0fb460175a309a9cdd7d836bc54f86c26e6ac32880e46b56c9e06b470b985b566e306f2854b9b9f8f8c08b180a01a8c089ae3a43d1fb404111188efc094187d85733f58a16d3bac291e793f1bc0e71a7dd0f111f2cd2b3dffcf8ef003bd30845c37f17fe59a777e61fa9e12b14b4a31bda685aae66551a3149485d616a7a79bf11d8cc39394b0f4cad54395b1caa62807c1127fe88dd7072b957ef949f23663c2f579f60407719addd9e66226c2e62f5b0738004d3a945654d9d2de77ced7cfe0ceed934b13876ae7d88ad560a38cd60553ebad7a30d2c725a852cb1d899ed3c46f8dd323ed0eed5a6d52816eae1da4a1715d6605012b730d89d105d3c5345666e232820357103ab05ea1d11548274117fd0eab267437c5f43d893f07725a4c3771ef4f5339611a5829ea5a8ed56657213d60b85f5b096c441cdea747b117aa3d846540b57015d6e0484c886876c1fe7fba3d403510a1c5ed2b00c7bd9b591364d8780df528b2a3a633ec6e46617102cd5dee8068f8f7fbc5836607f4aa8a153a2b7b8b4761c667857e338be86682adf7003a9dbc13f3a7591e18a80620a45f7c46c31359d4ff73f6db3b9aa1b92f8f2e9bb83be4a17cacc77a52b35c24b1e4db8c23a3da68df09202882d50909a5641099566c2cfb80d6bfb81bcda0e72886f7bf03c0a5c69293a233d4d88c03596e1fa3dd97d04d41cb99e9f0474df3d49af0725d6c74a0e6d49315255e8b260fdd3a6c9cb96cb771ab2ed8fdff4e3fece5406da4d1a99cf5cd301f033a272a25bc087b3f4fc2082e25d53604b688fbd604e295884b696618c642a2704a373c848b16e43f495c36f8a36cd292bd2eadc42aa1f1ab7aa3e9e9f147eac9bdbac10e6569f39b59b1448478fc11018fdc65ca143e3588e4c9b8a715d7d09b1534d097ea5b1172aadafb58ce4d0a03865ab5c318990a3cdb53b6abca542dd82e11abc35324255b08ade64c7b08d5fedf1044f0e243f14bf117ccbf8c7886629832b4883dbc98cd01a9a3572050e2f10f99b5b1b8d06b0992883f0d5d0641be18e7818c1b76f4a8c3a3d454d2cc1e42ff60b853b3d7a3395a500b280720c1dae3d3cc03e508ad05243662412cd06e2b79d650d9470989a659c43b403dd22e44a50b86fbc9ac39c4e3379b88e3c726da9d4486574917967e0573b5aa8d135c4af902c503c1d368f905e604b5fa37c7ed9ad22b424339587250f4614f0c59fb28c2bd03daa3b1053372680270e1c9b12477cfe5d795df2d9bc169166625509ecd4b9145529b7e4d809e6692be4775af543ccf4b065e6974b0f49cf5e329140786535271961f9abe08dc606375fc7a66534a237f830e9c0ec002b9b9d963e8c2f086622ec5189bbcc57e8083700515ea305e24bb076eae5901c844e36e0b1124646a38930f869009425c6587336bc746f2d54e58e6c8e35afad01e4484952daaef94435aac55ec80d1ab62f9fe2bcbd8c98a3e8fb298a3db0bd7293ef227ae6ff132b5c62014d622dca62aaa4ed526767af7944b1c983f7f8a6a1d7365db737d806ffbe88c2d2559b6af948579733dd305005c4ac88bf1dd446f6b7cc65411a5a5320642a665fd3c7760850639ea143fcc23ad6d01b96a58a6f54d008bd5d2309d94cef13af4fc937ec59cb6461511cd2d60bb99d7d5285750fcf372d29b5930777c774486f655ac7c548ba040f0824d610f2cf1d2201acd5b374036887b295bfaac04ef394c3d73a36e643363475644d762b38995bc203a263b54c304c8e6ed162d39ee54162d16b37d12e7962b201d0d396dcce5432c5c804022987c5b62b6b6906a59c319da18e4a60dfe0aff8d3890a95f94d1abecf3f2233f26185c32963d2705a1c1a9370c2be1617cf606b6f70c9837b3ab9582d45adc2e4846de40af5330b699d1d9adc8213a70d0e3bb0a9fc5a6b36cd4c607f4a1407ec6d67bf81b10942c3f84586c8dedee69cfc28a82f4a38fae2051cb2b0893be01015f1ccde20bdd8ae69c242685721f2df270b297f205fcf65c048fd58a88512ff2abbaa36b83cc2b48cfa20d80bc1a6fda1d9e08d706afb73d3998866c097447b5e12440d49e4a54a0acebae001ca7bd997c69f199ea29de10ffcf938105c5f6fdbb946b494655175181a75cfc3b8dc3976acafd733102a36d74beb83e32899938d3eaf3d925cd5d003ecd36026cecb646cd30495ff8d47a8d10f3cfbbd2b4f444f5f9c9f11f5d3a2e47492defd5958bb26d32672c1d97ef359a932516472c0bf91cab9e978a9ec3309aa3208da6110b912c3bdca14e8769b36f187f3f62920598aec87effa3584831561a85f0bbe8ffae68b3a2bdd893ac2016bc03953c4a87625d23e3916d57c94c782b457790669fae1d8dc6b12b6a42bdc7f273010dceec3c0abf7b0bde8b775fd0e889920d88a208a3133d262d3a25dbc39a41d47c93e8749cff55cf237d85de4252e19272bac6b753574273044cdad6008bb4b3ee25e90fd720addaec7c5f1f78efd0cb952e6a9f15a4a826f04418377b04e0e7bf69e545c9d1ef6b66643e4acc1c8c8a7383ee57417c9382b749ecfa6d0e9182601be7c9520c6313c4fe6c81667489beff0bc4dfae20d0b5341e49a3e483e90483637c865a29ec68f7932f22a3924cbb44b06668a4466fd58b498c39d9d95636c16007e25b0460aec79268ec89685e355316f24c9542ad450697ddd59a8e94fa4fea28db23fa6b5165107ee7a0577b7f1b52f353e5007708338b1128e18244f9deddc84806fb178db03390f642c661df39010c81f4f574af8b3c9224c324e271686d2ad70f432a37084544b3f7bb8c09a80c652f10483f156fca6d44b28ae48ed3e57de9c80d6a8e21a47c84a26d122126ea71ab5b4cb5b7a3ae17a9dc1d3b4ed080067ddbaf77c50158b686669ded474c209deba8730003046ad4c5b00eee619bd2f27a1770943b99848d3b715129eddbfc351f6f15d0ae5105d1c7e5689910000ffbb9d5b1b5ce6dbfc636fa4606469321e1bed586c40c87b10e641ff38a9c1657c2b549cc34395f4ceb5a1734f2af03f53bf5277653865d863372b9ff4e1aec00e7be3cc416380260f8d6af9fc4b913a006a522487a36cb9e2f8a09d3f5ef1e2f6d2f1c7e0579e9fe5d2cf38e704777999cd3173cc8000a71ed3840b05c49e5eca2a2a2a2a2a2a2a2a2a2a2a2a262929971a5ad6538b66ddbb66de5dcd829a479cbbdabfcca0f9f11fa9ff2949b9292a6d19fd29fd29fd2cf270f158103870379037fd6589a1b4f650ff3850e7a9570994783e65f4f2e72d0b8e585f891e21a4933407262718183fe2f47084fff9c612b2e6e50eeb9d469d1e2c61e05acaab8b0419f32639f5a0487972935e87733cc18cfe9201d1a74594b43543e66d057caed0a1fe22683367a030d49934e958730898b1874ad92fc3fefc31b8db88041ae51e47a4117e2185c2e79f8d6781774525afa197f599c866183549c10163413ad6377dd7c44d415b4da703d8b2a685c644e9245f5ede468d142ed22054d857f98e2050a3a0f19c7b468a15616b83841bf0dfc7f5556724c3c81076c9121e0c204adea46688cdf18735182de5174e674cd0509380df7d0cc70982ad9e7a739825ff2705d8ca0dd1072fe543e49a51741938fab32764fd9130222675d35a4188b7e4f74732b0f82663bfc2b7a6ddf9c19c4b67ca0f9cbe2aed913b999157d4af175621ee85f1a69a68a3ea99b9865c7a403edff4495034d46c88aed8763d9403f296485989d09d14013f23b868a1e9645cd31bb3232d03bd22c57958e39065ac7f0a435be38f0074fd147cd90d0bb19af146dbe5ce12b5194744472a0e8daac62e858cba8f184e2a913bd6af886e7482f9b68c351c830937a10979089b655fc326c8cb733668976a752ac35677cbc125df94ad46b1c1196bd24fa8e4895127e1c94c3906822c547f4525d693932347c8e114de38ce6e3c93d4abc88de27e48d2e886854736a92907374f5b036e06288c642d6a059a947e042882ec4506da17fadb7a317413419c1c55374bc00b1472ccd0fcd564efafe1351373a3eb4d97534ef45fea287612c93d8e78154293c7439c577dcdab4e73b74911f059dbca631476f872e553436089aaea943e3c03c45c53d4fc9a2af9824627e659566e8d04807919eb6ac571532871e57998557e5d0a766944174c896c7a14d093d1cfacc16195b7fc3d33837b42359346e43a316fa82c86c68a32583c6f95d431bcd42467d35f439926449162f15336968a55adb1f3b8c0ad34043630e1d584cced0789c087f1d59dcb36a864e2cc7cde072fe59863a5b85cd641d32b497b465530c25c131f419c5308fcb783931748d63f4bd10af739884a1776d60f181c614250a86b6dfdd27a5419430bfd00477cd9d39c9a50e99173a770be69375a111cfceae6b9171ca8a0b4dd89630316fa1b3cc39430b7da590db54d2290260ca303bca6b68298a4c4500b0d0baa6d2d90b9762c69a4e04e00a6dce78346afa445ab4c8b442b311ad2aba878005436fb0f9ee184c4cd055ca953b399ba45382a61bfe8320d593a091fccc085a958c298f7e9ccb2e82461b4f43cb0d43e784a0a968e1b0b442b068c65d631034e172bea211fff11c198e5acc07dad18b890c49caa4b5a2cf15dc1b64e678cff040f3214c3bef35d247156d8aa91724da81e6e2dfe3e59d03f9caa3509d0db4135308f13332a7812eee49cecda421155d4ae1e124abf065a093dc98c2409b743c378454613653f41fe3539ea7a4e8a14ac6788ddb2389a2cbcd12bf71d2010517e22d1768534ff6893e5f472bc488e644e77023ca334db451f733169d893ef384457889be1b474589be727886563d7a128d87a96c5015c348b43a313c39f2fc11ede7ef081d55521cd788aecff1eaf5569cbc887ee7dbf385ec11d185c62cff5ecb738d217a10c92244fb1b9231fcecdd06d1894fea105620da6f8d1342d4f147f3872e957f061e1fdaf694f34915400f5d54c60ea5e3240f8dc54591ad08b5f6f0d074aa955ad29c4fbf437fa631c67578981d9a4abf20979e953ab413735a96c414fc23caa2d19237a9fc78325b0d7341874efb3b354a3ef9a6219b43db20447587c9a19f0cd5af6773b2ea9809f080c0451cce922b558e19216b4ae0020eaa5c69a7b4566b8a8912b2af7b831b7a11cbd0c2ff540a1001077802b2b2b868439b5152f10fd0a2458b162db47e70c1065c831a2e0d7df4798922bbd541432bed2395428c8eadc0c519faaed6aa9ca354c639522eccd003094fd973e65e94a15a30e0820c0bb8581e87938b965101176268b2f6c46c185a8b62f91de3257a5f30349fa5f1bcfa85d6c7617e09d50b5d96f97bbbc6c61b52bad0a70a99496b70a1cb0c53ce703caab3854633b56677eb85f1b5d0ba65ebf9ae70c938b3d0ea89967ae33e0f0b4d8f8c84afd0ab570c39f230788eab15dacff8347546e5ad421faccf2ff49504a9d04ca4943385d6b35cbc52e8ca25e5af50b26e143a37cdd49973de75f843a14b0bfdf09fd0babbc5ab1473a9139a30f3a99123827bd1842e325d4326b43211f24a06b1d5052e96d0599aaa85eb90e23184b850421bca9287b9c5188a8b247429fc447bc2ec83fc14129a794f4d499dd997c2e3e20866846a61808b2234e9d28eb223864c26111abd0ccb9aa3bde262086d3ecdb8dd4f333a9b17c52dcf625d04a1f595b17c61da71f66bad1208ed4792d0733c1fa229a83f6827cb74d84895cf0b1f34d3282ba66c8c1c297fd1836a01801e2ee86459db81210fd454e224a441591475e7036d4fc586153d74cf3939f3ea8166b24b344731e5abe8338c4c6bb88ac374a06f90f39b488439d08486391549a5636a36d06cc830585e566f43035d5f468bbf194fb64245136349de88ab8d2419687ebcc35a64f4c9186833ce9cefff144df618e25188c191e852283e3be128f4f3c75f295034a124b447e4cf8bf6024dccd510233aca13cd47c4fa679c27e24ef41d734e96da3977b0893e5f7b0487591d26dad9906173a76451d7259aa8a155a28fc99ea19ca54934399924aadc44a20b22611ed159d61c2ccb67f81c23ba1c7f0d56f4419e14d1740e0e62fc8989e8c31c666cb7e8103d8e132f33be24335188a61c3e82e8e2e5749c3dd203a2cfa8b1e3460da9fc0fbdb5e6203d213e34ed2b59ea5699151b400fade60ed98fc43c18ad338e873e3a8790e5c5ad3bf4b317db7a196b87363ccc59c333ae0e5d86a0911f5665a81166d1e56fd693eef8a143ff151d0e3c2f87cca17d946439f4a6a7c12bbc1b871eb46e648daec2a1b3a47943bbbd1b9a984e4ba6b9369012613634d924c89bb8be8656fb33a7338e39c5a2863e1f5926d3d0aa576b88900c82863ece86067b3147ce404e127d3743d79dfe992f43e799621a698690a1098d57d98e3f663e86563f4bb00cd51443172ba95138d3c2d05acca071ca58180cfd77ca171a998dd48b175ac776a14ffad0233be7071786229fb285d64308d142d329ce7ccea08f63cd429bb16be5040bfd74f4e857ac94fc0a589456683d4385984336ab7a5568634c9d633ece0e43a8d04ccafc14d6b8e7dfa249a1570b6f14da55cb1614fa34710c32744f683264bae384d65267ab90424613faf8abd6bf7957471f668fd359421352b7f6f67877f295d0a3d00d43f9e724a1899c08f312ba41421322daf138421bc25ac6cd6b1aa1f34f15a16fe0b9a5fa4388d06996660cdddb21f4d97121f419958583d0c3d83eb38eec02810ce2a4f6077d5ef785599709df078d965588dcb41c323de84332c285acbc23290f9aca386407cd3bf8b9f2efb15607bd698c8e5993392873d04b0e59f7453d682a71d0eff8e7067d0a8b5e19d26929b441962acf6b77356863fc14a3413f9d3135cef14cfd0cdacc20b975354e065d863f578e3a388ac862d0e6d070aaa9bbdf814127f91c5a56c96aec0b9a8cb33f8abaa04d8e93e3c965b6a009d5f062c8823ee9abff557c67056d57344b61a382be3d3b749b821e5aa824dfa3a0cf18c54226cdf3524ed06b010498a2a99c71c77229ca17b284248ac6a772d286f1d3df3d33b894bb7da2c9a1572718ffd59a68bc53b9e74af1243598e83c235da213d7509e5425da8d389f0ce43c9b49f4219548349253fc68a9aa3da23de9186536a2cb26a92dd365595e115d8a3dd25eea1b11cd877c2231335fea354473397778de56885e2787e5889e2c7e4134b29239e58c74806852ae8c5ca33f68ff43e71722efee401f7ad5483e017a68fcc264f2d0635891739d131d786825c41c2a9455eed0058f29bae5e48edb6287fe227ce676ec61b1d7a1072929da35ea593496fe1f3fc2a498d1a18ddc889f23f1cea193ce7320198f5b470ebd6549939cf329c3c4a109fad94d1aa8693ae0d0c6edc8712de869e60d4db55ef0cd10379482e6bc0dad8ca6f6cc98523618792e640d7dcc8c5089e0aac1abf40ad3d03af20ca1a373911f1a9a992cb21be433b49a61c3ccd04f2847fa3ea229a30cbdc6f191ca18b4a48a0c6dfb6ff49cd48ca14b8f1d619532c4d068a368be29cd63320c5d64866a393074de0e5b22b32ff4fd20269178a1b34691ff442ec7b60b6dca8f75e821624a870bcd6718b3e52d346f314475b0415d2df4d81ba5ecab46c94239a79013739c96b1d064e0d92b675976fc0a5dfbc8e95ba4856fadc0844534aad067c731eb7eecf3980a6db29cb450a7d0554c5a4aa1cdfc73e838c50e6346a1c991bcd3518c9cc150687536e63cecec133a93ec0b11927b4e74421f1d1a6bdb84be4c52c621db1f13da4a779997d0858a194a68f2b7428e96aa25a1fd7cad9c111f24347a9d22a3abcbf73a42e320e48dd07ac38fb9b18714a1b54cde3a1b2d2969dd296508238965f923841e97cc5b8968c3e409c23084fe00a16f8b22c1a47737e507bdf7c5cb55f13f4c7cd087f55e90078d1e3439634316797036680dfd0e7a9dcf75d0cf7e6aca2cef249a1cf4292d73d450191cf4a1816ba3ca0dfacd154442aeb0bbdaa0899db245a4066c4f831e59acd87891909719b4e7a2b90c885be29f186c1d2a03835ee337f2ebe7769017341932f0d368c720cb2e68420ad3944aa46d413eb2a03d2bc75841b3d738b8a8a66c5c054de7e71032235f1953d05e0af9b3646b899ba2a0970be36de6093aff90ff3bbbe54413741ac9e74f635682e65d53a66687142724412fa143246b8c94f808dad8fcc6283226a513412baeff13267e9521e872f83ded1d8b3e96b9b69bc5202908fa88513c9b57f439a45e02849da883a2d4894c8861180429c890917be342120c04824a8351b97cdd32da0ef34638100a84c16020040882301082200882200842802004088220088220087219f90bd06a76454b76d5c86db62a6259c85ca6ad5ea515cc4c790f8ec711cdc44320a23445e0ade43c2c564b5424e75c5982270c9669a608b425e7b0320a59ac18f1c56bb4ec9b4af0cdbf00840c474c87f8daebee71ea985271f6676236f4f3cf1da999addd0a8599fa0a55ed2419af8f3615f67f6f939993aa7529c8b6a659190d85d19e2ec64c84249eeec10fea3b929e80449eb73f8a65a5c996a057ef556a5fd536607db95e1e9563507f5e2b3d3800627ca7b13f60547a1f3f8728318de75c3f83f1e4928a5df4b65a860ccc5a7d826164d90b6c5a6dc88943b00549561864c06478db229ba8211ce58b41e233b9adbc7b1d532466e5d1ba6391ccdf23339b4887290f6fd139d1a5ff6171995a9aa960f23bcd003e38630d64d6402061bde027dbb99efbbce85d5a5164aea1a5b7411b24a994493682f7bf651d0ae347d3a37f77667e4e8917fd18aa24b35cd1a581613f75542196a24119cd2ef64ebae5a642f1235985acb5c23356793cd324e9d6fbe23e524e8a898ceced5020614a36246c79f2420f624a0f327a68abce4497974dc721083e2f56766713e6954abafe7b2dff5aedc7a6a182bafc401a480d15c3e53d685cbdffdd3c4cd1975deb44050dfd40370f5d3fd02e69ceb9c33ee55d7cc6c3d1dd5d5c58523943b65e53495341f611b389e1eae84c2fb169e549417adbe5a591656c23861848a260160e220539282435c372b9ed3378d8416d7817c646fe39a0497df62643b1b8e587ca2d949015464c086be284f897fabc5415679d0200caacd4b404a14354d208ad6f597598d2844512663f09a0ab7cd8a6940a888ee6226f29d4480bffe46d356c2a0fb0a12d5c21e3326954d2b1caaa9c8f8d4cce7353f0f25356fe93072b124bb43533a5e1be5fdb5a4901b5d93b17958e70104464cffc49ab044cc69bd02821c70fd7c4a4a51eef46b0f6558e6682ae4151c100cd9c13030dd98f4065e9668d45c123acb6ca72100586445c6701e926a6840dfffa77a8371c5e0832f5138388d4e8258b965d47cfbd3caa622ab8d338378d9702d1f829d3c639e0f5e77ba7814d90ae6113485ac287bce529cc2306e22a973985393adb597e1ba437f70558e88c52797e07c5642bd028cb7c0e9c77df2fc4f1873a9cf540e51a294c321e8212cbc73b76dc5af8159c50a937461238cb33b50a4767601a53a9bcf3573fc2985b96b3f5ea39429912eaa29a8933dae45279c40b78410e54d96ac97998074b044887218dc62c2461461e955a220f07de4b3d1f9f85a6530719dd8c4a6f1b3e3b6c9f2e69451c4125c0e0e29f87e5013c09ca6c4bf69c54d0a5429e03da0da26833f1294f90010ab4437c8cd95c581b007bec2083f25f3b40c2a499528a90cc08694c2e84472e974c69e583ccc30de19ed4c51f67799ee8af5b81c835a6a20e0d2db2624d1f15b96445497e04f314bf46291d93a08b47d4848fd2e2e5291b03c136a89ca7fcf653f68c87a8841c68f75b8f8529964a6617fa541e26957dd7da48ce43a3101d758647e5a72aa0121f1d9c4e091bcb4d99031b22789f6a9734d118499ae40cab07fc5c692b77a97d9265871a184e7ec656f53d5b56a94cd97b95226d4b1d02185b3e8d03064b93ce9906c02653b64891dfc226e11095f9d16e29312c45e6a9ec48883ff692253fa7c876d64186e69ba6240e863b6aa9ec44dc61ee99f8df694923d9c9a0656e1a86e5e7d44048faa335cdcb53f0e2a90ff8f1e6f9d06a5dd1a4f416ef8a582c3a76a8db84f7e86b1ca91e227781362f834e4ac91a6cc80ced6a4adfcada0f443116628a20ea3a92261cb579e724ef7377831ce95c507d1fe8839c9ef6676ce550ebfa59ccf044a8206c748d123c1a0a896c52741abaab1224f57708086d3ebd0bf5ec023b198df52113a87ef18dcf30d180ecc1047b0ee4cd362ceb30affe6b4d5dcec525291fec910e8dd4edf45f07c20ea0b47e0b9ceb86c8a69a7b8f2fadb9784bdeef6e6202463eeb0d76b9892e988aa142a5f7dd573acd86a3b03b745571b1cc93d5253596d46434bfe498c19b70212db1a07efb4b06d0f8a69ad5c2fa4764c7705970a5256e80d67aaba780bd98458b4db3e65eb90c3beb6c57c79a5c03442b7c51ece4d2e867240df85f46a0e26ecaba9e30833f035e2c8bf55c344d6ab233828a2a5f268436cc1dfcafc685b121a5a46db2c02175991bb113398056733d1ab8d5ed5376d8ba5e69ee546a6eb37887f30097f2118bed65cbd02d5d7bbbbc8d69aba3f373381c8a6a74113742da6a6cb3641b4eab74ba71e78c44af90339c1f80e15fb16a29343a9abeebead67578d6d12f39aec1541ba2176cf06f9e0ccbe00b061eb563dafc3d44dbc1f20d44a2dc2940b83a245a91c7cfe44510d8aaf84f1287471702db781253278f7d60ff5e100a2a9bc54fdf6ab5dbe7a755e6a27bf484678eda3462e02d755c0b887a3283dc269b60ed7fab17ad0c4fff18e41750c38dfb558a282eac0c205a1c289121adf951d3309786397054641406f0ccae3a9b57b9ba323c1fbd0020aab2ef53ed66f43b25b964c90bed757e697f72122367268d184bc776741a7680daa4c05b05d042f7a0c1a9102261495fe67fb3abcd0eb707e66bca326648428d06e5a227c1889453b9bb7d2114978dbb7087ac6d608f81c932c8b8a908979fd3a5e91486e3ea3d6a1b6c46265cab140d13151fb7ce6ab44d3a7c4e598ebbc9dc8ba93272931fb93e1a933afb6be7e5510102997201e015197a7d5e410b7b6d1372d73e72a57c68a8f9b4ce525315a5b6b2e32f67ba9c1bca6b01069e77193b9eb9be96807dcc780759d766d61bed60d646aaaad961b851a88b73a6f418234adca45c12d386190027aa913d2be551501affba431154ed2d4f6a5bf40d2894877a858fdbbd962bde6f1fdeb452ce76aa9161dc1dd54b81ac0cd3ba332f48d74125195aab1d1843d35fe5dac37de04083930c3ab0210c875b2a42f5a881493102188cc42eeaa8759e2819cb35109dd79fe6dc90827e8ac0025e03095acda095a0dcfb55a673b2858849277b8af04537c206f193966525b9986225071b87f29b2c5c65c327169d0bee1b2cb78c6c1204b97db9f573302926839823b8aff437ac1656af29a36ded1faf4650a22f9c6edbca7bc9364b6b05f3333b71122c19414197f17ee146f24bd46cfa87914d07a7821776b730e4f8ed67d9bd30a3c0a73842b403c79e043380ca5b9662881960554638264369103ca87174f063f41bc1f23c4f77f50466def5ac8d5421de8f996e16ad064ddc6884253d23d0be2313652b8342563d9555b8b19246d09e7f849c7bfb65d01271466776d7e0f89de77195025fce432f9d3665181493eae281582fc1d2fb233a23c07d23f586e9d303af0cf76a60ca5817161341cb8a68fc8b94583243203c1b1b945798e554080b822402aacfa23e9b278e2be4116f09c4ecac24198e54a1305074d09813adbd2b055f9673a4c63bfd5debff13a1394c89f5d8d035692006028d53d08b89e55faa611e356ae75e81a1618965b10046acaa4eed9b8af610184415e94e8759406212950ae92bada9ac783df3290e3571dc2b26c571c0db6011757edbce94221aab865f8c742aa7a67c4317c3ba170b23dcb639d9211655f852b486751db134064cb2698645340f3041a3248aceb7b30dadd63367859df82fa56b31fe084eb63146f6dfaf106287aedf5b1d0a66eee5184aba7af9005dad0f7df2cf097c3fee3e2f10ba61b1d1aea0d4091ab010dfcb2f4c0da717de8a8a82e81d69eb01ac5600eac8d41e3ed05a530e0000000000000000000000000040865dd1b66ddbb6edaaefdb30000000e10557382f73930472850750bfc0facccccc94fe8b07f8e201becd43e1d801db01dc01650abaa1a2ac83cdc2ee4d5c55780eb6289e7431788c8811076b8555875b41655237d82336c67d418a11426a831d6fe8599e56cc8a1aac951f4d9475686e4983f52990fcd019ec204a3aedc98a393b19ac9d15a285b6919fb118ac65b2191d1572390c96d457127efc512f588263ad598abb60ff8b32dca35884895ab036ac4487f9499c059ba5a3a458c1629eab163da655b053b228f07228f952b0a33aff991422146ce28debcf4ba41c7f82354d62bcf7311a8509b6c0ff825fc48ea425d8bb4143947c1809b60b2dd00a7fbbe1e523d8cf67ba1e2e82f5c208ff465142b0436698b5ed1a04abc5ade818ddb0e407d68a697e2e224ad8d803eb9c438e5021164f2ce98d0e1c3f3fedc412244fb02bebca64138be34a974c2c5a816c58540c25f98a4b6cea0d2e0aeff15fafc4ce113b1e4e62c7d40f0f7df2ca312496be941c1dfd473c4164c32bba8cd8d7245dc462213ac67469d5d310b1451bdd109be68745c86709b19833c685130951104bba9e980f11205693d817c44897991fb6d02436cd20a6e486fab0533c75deb81be9dec316ceed668587e5d1bee9e277d882f551b93439d5617338fd4bf613e42287fdea9a510cf993aee0b0388ab80f7e9f29ea1b76b028cdd66cc3407aa4f1ae61c924b17b4f9bd904765394e3232cc80fd83c1e44bd70c016cf8da953d8caa768c09aa7fdbc4e25ff3360c78d71f6731aa36f014bde7b3ebf144415b043b5f4eb112b9980f5c1f3d6e2e8bb11013bf2073b35f1324ef0006bfcfa46a955902a0cb085f8982f9ced26b100eb7e85162347030196496bb807ea19b694ab7bc15fccb04a05214cfcb40ccb333895bd1ec9b0c4f935b4b193146763581f7ff3eac729a49418964a89561bb9751685610b95fab47061d760d8f164cc1fbed717b694bca2f88d4c511b2f6c0e211d7951f495902e6c5a51eec9424a044773618bd661bf85255fc8154be4a2e4b4b7b16ba1f459583eefec6232ce58d82267247b6ad17de385d9a4a6a4b0c292193fa25fbef1cef10b1543a9b0346aa095d63d8d32851d2c8a63aab0a892c29621cf2783a3320a5b4f860d9c44557e286c3b27fd143d9855e01396581d67df396127ff8f06df9ab0c95970f095c75361c22aa9a28cf15d4d874b58b6e2bfb27d58296109b91f85855494bb24ac5e399c5148582c23e9859c8c0c7284ad324d832f0b2a39c808fba95db0e15b5184adf14efa3844d851144e2def368587b0fe850bc91a2c84d3a1ca0fc22a17ffa43ce4eb0a10960c672c3f582b9d7225abad7db0c476dd3dd84108757c1456ffc63cd81b9b662b2b0a29dfc17ea3f0c1e1380ef9055bac3877c976c10e4fc7f2ae316ec15e95f34f4e519a5c59b0a5380a47f3d2156c514f54bcb23e55b085a23a51e5e22a4a0a163bd589b04f8182d5411cc4f339b9f4045ba84f7a8167821da34b1dd27497607d0aba23c11644ca913ee63282edee52321f51043b5a7886bc951ac342b04fc67e556f698440b0a3d01eec793a5e467d60e9e6d16ab08c07d6aa6046cf6ad265d013cb3e1c8b126771626da41316c4820cef2676281d8ed2299089fdd2fa2c73262d643ab09c4ec8124b37c87fbc127de49b93d82e598a640fe2e8331c89edbfe2afc8102d8a3e623f95498df41b55f5466cd15943dbb8ec4a1691dda3877c3911a4f2b9693cb92f43ec284ad99f166574b9107b7ed5c4e76f7a340852ae20a50ce7c306626b745e312799feb0fe64aa9022e530d987355283b287bda367fba624e4618769f19f21f23bde0efb84ae66e35ee6df745853d233da8814c581edd3a293c57d0e5bc3a82832f5a95c4dc1e1ebb9738a1b9acb862d35050f9ab3ae61ddf3dafd89084f6e607f6c7073b1410d6c8ed6d32291d19446c9c05a6362a1cc05033b88ebeceb1e8ffd028bd68aa4681f7d0b6c331567c3b0f8285e81452c521c0f9d02cb455f919813d862c76c7812d82aa6789abc2424023b0631ab2f20b004034902208001008006332cf17052893d795686cd762df32b9072189261bb5569903e618d6115eb2d5b739e468b61f9710a4dd15968c2b08ca43cf0bfa690e2c1b038c6e842d45ffb0b5b14b9bc33a382d8b017f6edff99fc47e124b50b5b8e49294a71a45cd8916686f5d7c55bd88286bdb867413a8a6961fbbe601eea9156ccc2162b886879a6c6228585b526a37bd420d20519e40a3b5c69e687bd14e756586f233fec2a6c1988830519312aac1632ed363d85459fa2aa06dabc214b61afd0f34e57821a85cd6c23ac0516488c50d8c28ac94ba4f3a2269fb0340c1f9335d93e9db0c5c8415a7343e76c9ab05d43743a589a30610b32c1bbd6ef25ecc852c3c694c263d0a0847d2c8a622aaa98d6e2246cd1cc8548391f831e095b92ba35fb086b5f05b75b6184bd2c477046d5b408abe8c56581c5e7f289b085726610263aa52a87b0f33598a50d8bd2a110960817a5b004612dab28722ecf45e880b04ea30a1655da09f90fd66b8afb9cb9f3c1d698eb291b2febc18ee2869b0b2baa20050fd670b0d60e96bf8cdc94d7c1aad660ec619ac3cbc1927164d4aa70f4218483ad2bb28c7810bfc1b6cdf13842bf526a6cc005411ba4acc19e9171eb3153280d9610ebd2c85c44b0c7cf601f934a319e820c797b17ce22063b9aa584bcdcc3606f0281a0a84138a790318418636444fc013d420851069559a50342130a21f8ffff84803f449cf44298171d6f9fcaf0896aa4b7377d1d36b73e5be4ff2c55d7f59ab0f4c7119ac09e96c9fa45afc1329c98dbeda2af69f53b68eaf4ba616dbf62cad30c73b432b7f8bdb2516e1811788ecbbca70eba833e9b8c115339b7dccece30d79efc569ec8b4b923f9b226a34165f7db581da5f876309c369ec17873fcb4afde84160d1f43f7c023490e03f6a81395f01a1c24fa3863e02d59c1226f337494836c27669ae78253396df3d5110bc6d2f4a91fe01ca5b90d7d6485d914293fa8b020beb77e2605bd6df625761439d8ad23c696e9f328553e09e779201561e83055726aca02f663eb9052ca4776b537e1da00a44256a145e9a758670f1d9d3c361c4d5b0b64bcd12a76fa1c5e72e38a8d315854460cdab71fdfdeb5b7b0d678ec3ce774ead184e9a463aa383dea99f425ac824a09f191342a2a65d644f1bd00225522f322175f994369fda68fcedaf8e908e194bd5cf32f7a5d66cb0bdf081ef0cac489f004cb7c05ecb00bb9bdb36ce38b4749641e3be90a2c5d32bcbd28f3098c217b76fe1424b4c84d0abbeaa6ab10f4c6d6080caa2f10530bdf5725d16f8a8d451ca375cc33e1d9255d5f5dde50939c280b25651a4edfa0935eb61859e027071b8e52dde698853a3038a8fb6149a830b6dcfe88dded3498cd24af4861559ea16cee41b10dc456365cbcf4eb37809d74cd6c0c2523db152cfbf066d12153f62ecbfe1ef2f0dda604eec9abf2b4f63da71201870c030a1b682052596de63e646e386c8c89169bdc604b54749752da39b53cf9002d24141862cb662ddbef1d320bb35ac26b9644f7264b93168baea0e15785a9f5f370882554a2881b1d33f9ea6b8b92d40236d121ade9249c9320f3fe8903d9068f8dd9902eda5c9a860bed3cad4754080a6f2f16d8618dd434b312f46b4d91680d0e6043dc7d0f63bfbf841e4c441c9783101bef2906543dc1ef1d524fe053d6eb48d850e6612fda915d1ef455fbf001363fba68941bd8414713482ab43836633f984ab40b76613f2e0dee107765047fc88edcf79ce044f700d91979bcb272770acb28ea69afec1920c4f600fafa994d3690b2a4720cc003f0003c000fc0a308be33a20ad836150be07f57caf77e7e30eb9db158435252e6a6994500000000000000d0a444ea1bae04c804e70447091d4f41f3384e6b32bdfeeea0a0bf4a29f35788bf87c5094a39c48db019eaa3e8df4f358bc4dd8e1851348d2b63637387a7f150b4f135b769fb7c8a29a06822a43cd9f95524dc4f341e2585cc5229ada827faa431a6d07fb0c1839de832c6b37959ba936a9c683dce955be58cda440f83a40c2d5995729a6893e5f487296564a239f7aecaadda1e4cf4396c961e6b77df984b34bf6bad3f9da3164b3431354a315e7cd568a94423b9d454f77399c8946843e23cac76126d4caf12ff51178f245a91b8d1d39147bb1809426ac50c39ee1b247af5c6a0231c48e6114d0e65f297f2620cbd237a8fdab0e5f5228de82be7c2473ba79492115d6a3c1782558c8417d1fe6c8cb2d09f229a6891838f58aad859223acbd9b2485bc554d523a2c9b21e3e728826e73c1ff3c34dda784334a2e91fd6276fb75e88becf51de30abf0f9a20549393388567b4dff27a32cbd209a14f9daa251dc9c2381e84a2e56f418af53c480e82a6b14cf12626ca87f68fb4b53c8ee28f9e3873e3fb372da5cf23e34667ab1b253c987ae91e6c813aee4b2873efe66f08d41c974460f7db498d29f723aa6781efa73d5bcb1f2a7e7050f3dc62878761e55cdf60e4dca7b218a48544ed40e7dcae720f387b69c5387b63563864d212cf974685e63644df9b9fb1cda2499125bda338e520e8d6607e91b3a4152300efdae669491e60e1cdaf8cfe8509e33ca1bba08c11c878cb2e77f881bfa0ec1a2660cef33bfb7a10b49755e44d2c286be336c87d0701c2d5e43d7f128e70e4d6d711035b4171f398c8ca8f0d3d0ab7c874a0e2ff669d0d08708918c3c68b28c33b4d7d3534163069a1133b41743a776b7c55c86269e46ec0c26b4c78890a1f7ce9d31836368a5fc73d6970c7e11439b35ac815f6605370ccd040fa94611cb830a86763dd63a49b614fe42d75239788e8c72f55e68d46462239866554d179a1099e7236542b8d0f6af83acdc16fa882d2164e03169440b5d8311c71eafcc42f31ab3e883d9140b4d4a14d5d09c8f2b34312c6cceff1a2bb4a655b11d585aec55e871c5178be548db322a74be9261326f98bb53e8438ac831ea2b85ce7443af79a41f853eaf22fdfafd352b5068b7da7df3bf83779ed0a644dff0e761e675421bbd627e88b778b96c4213f1634c36a4181599d0e8f76948eddc125a8b9647237bc33d4b95d05f7b6f4af5e83fafe8e15676c77c12da2dd7f8d8d83a12dadcdf8fb11a78981ca191afee0cf11d6aaa18a1adf0d219fc6a650e17a10f3959b7eebe4684261f663c56a9271e3604332ec5fe2685d03b980c4ec3314e10faee8b3a716dda300542bb9b9152128d0e2b3acdd5e02b66941f74d5192c5ea6c3077dca1f2bbb3b1a3de83b839049bc2f863ce8cc610c7156d1650d0bdf9c59fedb41db19837783f6f0dbeba0c9c8453a27073da8cc2749332682832665485c444afd06fd894a8acfbed8a087ab9771d95793576ad07c6e1cc772a2790c0d3a7598223368c4536c87ef9f32e822c62c92a747c5bd18b42b9e19aaa3060c7a8c65decfcbdc7b418f22f354e6b8a04deb88a59a1634d2f8729c055df598a88f54c987aca0872168e636dfac0afafd145269a4479e99822e784e778e0e14349631225fbff4023841fbba0e63a7be58e1328a263a84485fd60f5151741a5e42881d4bb664ef4f123dcac95c62e849119e1453949546a2bdd895aa392f7b7c0e249ab2b8217f78f290445365ec0a007960f18866fee5a35573e374dc11cdeaf445f78cffb6caa211edac690c49cb21d23f23ba86594cf253660c32c66211cd4859c568c773521a45f439f29f76643e4c13d1f686a00fe2653b888f88e6916a46e3e8bc909243b49e91af2557ec04cf1aa2a9c81b652d1a7785e873c634c81e56a13b21da8c21a753dd274ecc06d1c3cb9c410c8e2467a704d1f47feb86e8e62d516211881e3b489714752f4d1640742513534596998b3962f1872e858ca7aa3c65f8ca7ee82235e8b9dc182d77068b3ef429be6c8ed90b3174c287ae33e3424e8ed44125167b683f4e8aa441b72dfdd243a7d1fb2d29cffcc4f3d0c68eded95711e989c143ff1f3bd9733497cbce1dfac98a682cb925a384d8a19f2c39b235b276787e1d7af1ab76998c2134497468c733b894b4444d83640e5da5a4111b6357df74e5d075c7ed542251538e701cda32ef2bdf2d8921261cda914c96f12747216fc61bfacd156931e6a16787baa16f38bd5faa7be5176b432b19ea3f0cfe9625336c6842533fce285518cdafa119bf14a27867c97797851aba6ca1a583436ddd60b14843bb92113b4efea6cce940611b2f608186e61ac49c5cf5553268d44016674073cba334d98a87635a8285199ad9b3d6cf95565a5e199a104d3b85d1cfd51cd2a82b5890a14d92b3f84738b9287d0c5d3bb06c316c87886e2cc4d0c4c5ecb5bc9be17a1661e88377c6209a054d9e4930f4a873a7b1c3289eb4c1e20b668b48bbc8b46aa5e3a41a553a4849ea2cc0c20b4da5e4319dd0966140c001820134295874a1d5f38f97433e08db3083000b2ef462eab152e8b83125ba8576a66337e764daf142da00165ae8715cb0cc41b4ddc3950c60918536c644736c87df174b2ad56c16586853caf0d4d0ec978f7385a65365dc39664dff0c63856652c2730863ae41ab42d7d9334274c8313c7a2a349b52c83955e3bc9d2f536872e8688be5c5cf4ea4d08786c6215ae81c8e42eb3f9165be9f7a26149a987e1e21653a10c713fa0aab15fe1e799e5a27b4fb5ad69335a18f0dd11a07d15c39a94c68c251e565b095213496d07563c9a712ba98e2f7fac5c8767f5cd1699f58ce6efa49be92d06e341dd730b9488a040cfc020b24f422a1355a4a6707c71fa1d7241ad7c24325c7f1aec0c2085deeac21669c2da947b8089d758ccdd88f8a8a02b48e29b02042176325cae3554f259321f4a0e4db2a5944c721c542085d88af99a106d193b204a11f590b51b2e5f32df53707e063030b20b4d191e40b163dfbb6cc8184020b2bdacf11720e53c63ec8f9413bc9323237ccc0736932c0c207bdb68449fc3c9e98b9151358f4a0b36e98715697edf0a0cfee69a02ff33b175345eb385c452719ff944276d096a71c3178686c12a3834e62846e8fa792c839073dd831f3ccfd3fb72c0e5a53f308721a212ac56ed085caa93276f88f2f5ca91f60618326333a461c19f1c6730ddad82096c728b982382e69d07fe4d129b71431cd9c411346c6617c8690e461326863ee7635f5f2888d105880450c7ac91349d9e3a6ee7b7a011630682acfab84bacae7682b30058b1734b21d93779ec89435ee82764ec2456f9c90ece68f52008b16349d53337e51f597054d6ce8f0a12556a7b0ada00d195b74eb6822b1412a68e3e9ae8404ec66ef7fca21e7b23ef449346e4e511de724e343ffb8b15f069ed952640f6d340efaad27a173f4d08528b37a199539ce3cf4fe6d1234a7e70a0f8de798294cb42807397768537cc638430a1d3f62872e43978611a4fd51aa0e1ab8a043ab3f22bf1364bc537b318776a32a85992ea9525fe5d0b564cb133ecc6534c04a711187265ee24704c9207abe0138f4dbb18e7306bda11791fe94b8d91cc73cbba189d0b90f2b6a66070788db0d2edad03e1649d91d564f6bbb6ca85c2fa331a270b186be336af8b0320e21d9d22a2ed460dcf4ec174f823e78a4a16f59958ca5290e2ab86c8a5101e8c1051a8a9ddf6b6f3f6b02545a828b33f418a47ac8acd11d67cd0cad56d0146754b2c5011765e87fad637f67cf625a0a810b3274922bcf67c91944880ee0620cad66c3f698a54b2c88557914b810439fd95ac52abc7153641d60b7021761e8a3524e33b27caa8ce400c305183a49dae11d574e6529fb85ce42ccde2b2af3e0a35cb8f0c21a3623256872cf2f06175d683223a688e131456133a6ac70c185e6b334f495a87943f5b12670b1850b2df427f27a61fd58430e91e20053d8b8518a858b2c34d6260f1bcb8ae42d374020582c7431c2c6b764d0c515ba909b552f445738a95801175660e3f58a55e852ec43499527e3afa2c29847235c50a19fecdf1efa3064de33855653def45268e9903b29f422e5f87159fcff7750c142b88842af5395a2e35fc91d2a50683c9679e8668d12ea5e3ca1b9508e2ac6bf58e58d13da47f16433566e33cd9bd083282671fc35fc432634f2d83d430a9d7409fdc6983b73164f15e3a9842693fb07471925060147b8b8a29194b276cb717f4b4273ae65e1abb2e5f5182434f339a378914246ede5c5119aa96ad850b673a97a8cd04e76fed4191e319217a10de192634e31b9e38c8880334001356f547b418426546c0a9ba186d70c15bf8500aa5cc0c5109a4e89b38f61d0ca960ba193bd7029a408b78a9120f472dab0e733dc48ff02083decfc9254c7a5b207ade8f43c5c49ce0c9fb30f9bc2c50f1a07791692fbcc47491e00ab9670e183b5e7ace24466f87f91b8e8c15e6615ab62d92ddeaa99b1c6a4e91f82687bc183a66185fc8c8b986ee7a28ae6729eec4dd9919c325b71b183565245b9247361c2ecc7830b1d34a9f1f3865bfe8ad91b15459b831ee3cd9dcc1b3a130c6819051c60071738682fc67b6507edaa94bf41131bb56a0c779491a30040c1850dfa18d57c938fd6977e0dfa282fd94953beca7997624d7041835683ef637c0eb442d619f4eb9d219e3bf2484719f4b82c258d8e717cabdd80d1115cc4a0ad4649b3659070581d0c9a09236f2a21d722828b17f4183a926f6c11729e1017b491b2f1e51037c2bbd182226ac6a6197563d79d059d74e76e47f5eb919d04172b205358f06c39e5103de6e042059dc6dcf961d87c192a2e52309692979c79529c0d0abc18ad1845f2fc3c548a371200000d2e4ed065a58aba131b369ccc28da99ad945a2bab580631a26823c6fc9ba75207099f50347f3215ac33b430289aef0d3146cae5fd4c7ea2910a214e8ae787ff78a297e4ff1fe238650d77a2b310eeb02fa5d8d7404e3455f9e57177aa52749b20cd1dc9642095250b4db42215d5cdb344499d33d137c8ade4d99593438b891e5f5a7b38d4ec9c7297683fe63b1db74f9e7020b1b04473b164e3a8785be4ed01560b6051892655c7da4537a64f28d1a4903ac609f21f59e524ba0e9a63b0fc375a69861671e84c1b87fdabf4f3644e31c514cb8e6801874e72084bf11b45ce0fb252438b37741acbaf310a4d22d7bba1fdc90ccf1c44a839bc0d6dc31c919372f898c1cb865ed7a1a59c1c62cc946ab186e6f1c3c7eae3204f6aea942191bd7be354af408b34742e0dc3e528eb3d0db52102e338b440432f92e452552c716cee19facf97c8ccb6e80e8e42b43043a7a7adfde620ba166568377be4c5b95468f890a18b8fb1e4ff2c2911ff18ba7487e11f3f49de2386b673474af1b532120786a1b7cca5e181e7c3cc300f182ad60f2dc0d0a47c0a71ac43886bd217fa8b789e753d73f7efc74068e185ae63c276524b51e992152dbad04b5bb87c1938388b0aab68c1853e23f9c7d4792a358cd94273d9d19b132f58a6cab6d0429ff14165381bc63bc6816e428b2c74157e2b6fd64b1e8e81852e52de0e9f5dbab3a95768ce42d28cf3302f2689159a765c0e728aabd03a88bfec8ccce16351a10b3fdb72d5fbdad031852e5f9860feb04274c6a5d048c819c69cf26670b98f42ef12264fab5b6aca24147a4f0ff330333e377c9fd0493ba87ca29d354fe48426ce7145e3f82dcbae09cd3ca8a09d32889c1f87099d490639856bd909cb12fa4f8ee17fc7f2b8595442d7380507a12bcef5cd2bba1c9aa7b1a16f7f6692d07c6a8e31b926698b0b09ad58d8909450393c4217599153bae699899211da3c0e46a35b8ad0c56af1b8fd92a29621420f3bc647b698a9426443e8c2c45370cbe41f1a5a08a1d57315cb289c54b20c55428b20b49d2924c5e45c6a2a109a0ae2c95265f0b819079a092dace8347b4a71be1ae53fe82da65cb0f6ce07ad6ee7119749d318e9413f291d39c2e5c8631125d5152d78d06ac8f0b175cea46829364e8b2a5ac72b29e7abc2c48f7e8ab5d26207fda7385daa21e54d21c4a668a183bea3d563488ed621156891837ef36c85a88e3d45a492022d70d05587104ac3788e8d77f5418b1bf4783dea75ca9c45b6a2850dfa9c62c6cbed6555fde02b5ad4a07f182a29af45ceecb8bf089022b4a0416b993fe617df2b3367063df4902c6a8e002d64d0fcb9abbe94e5f87b0c5aed8a9dcb9dff571e18b4b9a2c2a60aebbfa0093f9efda1216c878c0bfaf8e14855e29ae5f52d6833c692f829a7b8f859d0e48971d325c49fc357d05eaef6cbd9b5d88b0a7acb9fe337f6fcc95a0aba7c58a9336773ca140afa473a1ff2558814276f71823ee5f3141d4c8a18338ae6a25c46328e3aa2e8c3c7140f6a15630945af969dc57fc3fbf1a0e82f5fdaf74c92f9fe89f6b43d7725e98b279a981a6b8e3176db894e3e49941063429f9ce8f33de4cc9142b7892efec4327a8a269a7c1029b75486ee0e92892e4b9c8ced13738c893eafa68c51be9ccb5fa29d6eb7b0d1e579c4b544974933727c4f31735f893e7c55f6313d29d19e3628b7e4d94f93936873dc38b2249a8de93d2dc97b92a591e822cc464787ed480389ae3f1be51c3ad22dfe88ce25594ce91847b419312af3a6ae117ddc149d8fb9c8db6144a7218495ef8e17d184f68f5d155263338a6892efe3869162d64a13d1c50b398fe7502522fa570793ad71b6bc213c44e3287c83a4292239c7105d4a1e21e4f7abcdbb42347f9dd2f1567809d1e3abfcb1fbcc628683e841254bcbd822257f82e872e4ac2bfe68e4c608440ff35146112b67f70388ce2774f008925c63fe0f6d0872165fc34669cf0f1d845aa823558a2c08622008612006822044d907b3541910048848e5c12847721cc4351f436360301a0843a140180c0c03c1402010080402813008c22008832008c410152831c5e80315b4dace6c6e4512112e92c0568969e4e9886270a1afbc47f0b56c677c0cf828e5a47f1bbed0b7056fd58ee357c50fc0219a475a399945354cdae4467d3d1046504f20094cc91d4074cbbabe64cc383c51200fa3c2152a8d96c8e62d0e95f7b1cfe8958048150e680f68b02947da8423335843ca33f84b01a024530426c804239321cbcad8460cf0147cfc041b2e775d20867c2aafc46e65b62c5b923f698a32f992614d44d556de2a267872b39ebb90757053552a12b25ec6d9ddd6a5272fa084653912994b1c8b20c117dff4c8efdbd7125b253af417848c27c4b843d5d8b49a5b4018812c6f2d55760c2c845f2837b3a269a0732f0978991856b4e5a728b1de7d3e7e96c17c052335682f3bae1b34c3310314ce7c35a6109e59d86cbd1974331b33093338665866e4cc30cf7268e4cde49be19829e13314e6be99c15ab3778d52e1b160334a665b61b66404494ff07ac363405ac652a098ce69e9b3091c051a8c9352a589d7ce8515b6761f72e88fa1eb43e1bdf73f3685962a2cc0b2924ac6466eb778910ad6eb3e9cbaa8d76a5844f7fc7d280a441d9144d53d1e8e47570e4930cfbc6b67c003f9aa96d7c342caf92c90d29b9b025ef206ec044c7b9543a3c985f08b49f9f6031e150407a9e86384f5214298d94b57c90873243dceb0c0b6ea84a0cdf66f4fa6ca2e4a78098b1ffd1f8896a7514fe1e05720b8c9143d00ddafea407e4f42bc4e233f2e720aa074041b8739ec9921b8b9ef84340c97e83765d56b70bd6cc6ba6ccbb6b66d4b7691bde61367c1fcffbfcdb7a28583e817a17fd45861fb14ad0ddb5ed03bf054b0b8fec43c132e5ffb8f5f2cbfdce88b3a869a61966a452af16acfe19161e730ec6887e0877efceeaf58797a57532d201ad007e0d77a939e480f60475462154969956bb5aaa54a8aa340856701e2646e79c26d6103275440cb3e9e48c831ca8c251161103faf07536bc63e8b5c0562e2af948b46cffa88caa983204b3efdd6c27a688c901cd9d8a93469387c11a71e8dd0c5372163ba3d7672284a74b9fbd62ea5415b050605aec707e063a6a505fd97b1e4023d93da101b76b470436c91eb4dbbf290e37fada9877e0c37c7c5d71256f5beed2a37902455a4f19c147167ea43e46e37e4e48d9c7b29cfba53d0dd5fcbfd17528313c0232378453d7d2298c3d2aa1d7f0916ce88adcca85f4420bf7fc32540f21d069ae03e9d90980a441437605aa4e53b931fbc508535d7e12a5ef4ee9f199dfa64ed72929ecb2c7d070e797b787305973483cc4a69ba9418801342bb375e077b4839e10bbafe622069e9d62d7c9eea0cbabd8786adfc65b87d1102467b6e0a0792bb7dbc411b7e0a6338ec2002f7778ee53ae818dac59c909b6310e2c7add0336206b1a6648942218fcf1278d49efa6777876b5460d74fe23cb33cf98052a54d480be968a6024948a66c57f7b8c43c344fc3c126cbcd40dfc890c44de05d1927bb8e957e1b350dd4c4a99e86f5e49f6bc553f89f6ab0f6a683fab68d32b873742cccf56ea0f759482d86356e6aa207b1b7a6e5c22e054e31141111f6874f0e4aa67fd762b34defa3b78ca465c8e21b6e59ad0d3e07a344c4a308f5708105d2497b5cdae9e78455c7e21c76d6b7111b5600a31c543661192c8eab9bb14b1ea5d9e14af099ba964247ce36ea51760deb2ad02b849fddc9dc5e24d08f49ca910ae8e4c0f22c766a8fda37ebc5804aff4f1119109a96351883d74a17924ecda542530c3d0c4248065d498feba9b5b43b46ef2c95d5c8486041e36253000a0b8c13989c2d111223605702aea45a048a88a422a62a08c9afec1923996aa81aadf27435e56097da4d940d1eb9a526c1e13c5d2ae2c1382690063ad2485f47f2c34e3bbc722747cf44acb0138ba897de04f8bd5852777201731fe204c060d0e558183302cc64ee483fb1c1d572b0753e07953c141bf726c1154588385c1ac9105c1337f2f5d03526b964deab2a63b108dd58e8a09ba83a26fa3062f16e09c3c957df0f7ce2afa92e3ec9d88bb7e435fb6989bf8e3e8db09837aa5487be3ff07742dcc465797fdc222e044d870a571a41df501a1980b31119a5ac09e028cbb4b59e4afb44297e51d086cb8d12a5be7ae7c0b5c14dd1cfc7cd1ac98eca531ae893f43a3a12061014761bc332142482a9f44e8388c4c2b3ac9e2ee1065b83c842e952a74d293ae5bde762fc1f0f4d7d7a6c6382d877b1c2ca92f22b6a2b3e98bb7834045e35c2011772c94118da28fd2e230104b019cf0e05259260463e0fdba11db2305310dd632db39f18aabe33288199f25d3cdb270ffda8e425e2c1c301b00f61574fcd8f604f7df4e2df357c8573fae74589074a1ea3f6ca5fc1c157b351e02ab38248692480145f85214d6a97f316b978de55684c494ccdbe099d64f60f063ad9ea043608091c6d78cc2d8aacce700cfed57652187d97cfbcbc36e707e307b5c0f5b48221763f8a8e189f344555367aa7e0dd18cc9610ca1b45eb874629c53e8bfa12b94940e40fc0819fb38f2f473c11093a2e37e4f97749804f2ec2ce414649ac1126c584291d3c54bbba03fe954e39c759a34c5259d859662d5fbf7c6536af0cbe72ff4e32a922e6b0a3572a6f5538426cfb9da9aae8316b7b9675aa7a0f8816062e04d067812e02bab2a03e013a2c702900dd16e820c09d85f408a09305ef06801e0c39ea08c04b0adede09dd6b34140d040a746ae1e902e58874817fa99e2f59d3dcb3acb851d2bb9e9108fdc7bce578bc7658e2d99aeea87103db6deffa5e9616d45d45145fcbcac7b6d72b0719d66ca177a8590900ce5cf768337ae35eb3b78bf00f781769a7c9491bc8431830b1d0b9ba5453d63254c22bdb3d6ce535153bf9fc369d9ddd6121822df9b126fa827aec13f44b2eb3dea88a72d5b7ba022dd9318f8b7f27e902d1af722de8e9e995d13e73ffb3a4cda92a34219ae9b22f4bdfcd99eb736daefe95621d570bc65209aba2b182a0aaa4b274aa1cdeb57b95ab2b9c95f2ac12c64ec6cb8a4d955167f56a8f291e02a0a8545385122ae1c93cec0f7d15b54cf7d3df104b7e5c00e4f574b2cb5732540d807640792bb70bcb4b54cc94cf9be903a177aebe1b7d6d904897aac59c3536734c8b3c89eb42e6a86cda0616225b159320b9c139d50d6eefb9c1bd5efea5d72e764b38e8b8da45520786d05762b5cdbf12bc4e52286fd06e02d33bc25856cd8aee8c69490ad332209f77a0da7ad3dcbdef2ca903c34692b0f423194483a27c682030cd052f29c97042356373777d84155e7a74d9e0924a4832206849fde90fd3814008a9dd62cb009b02250c9423c00c3001703200b7bc08f08826b7083bdb968643432faa2302cc73180bf71502ab72310336e51217c56be6bd020a2382fe2cf3eb0623af44dae127ac09cdba32f5d57a699291cf2529e306691127df4bceccbd555aa53f6673b7bbac6bbba4ab2eaf2d978e18ebf735c66e961d8bdb58f553a0f2265eb9b509cf399a18d4a959c54af6a9bfd4dae4db2ac431ca77a998d24291dbd1a5ab72634e7893dbf2b7b765359654a6cd0349dabcc915356c9cdff3a52fbb727fbbd6dac33162f75393cd3fb093e5d99095a884796ac087ae52a8e00e00198f6748f96846ed2451d336ed763447a6a652a256e20ae60c1ab204d1028ed53999b38d68ab0020ecf0dbcdac7cdf33734a6d4dbf780dd3bc796569ccd3b26eeb8bb6165baada313345d3a812f19060ae63a4818ff89dcd7a471ae192f65920ad004da3fcd585ead5390217686cfb6dc5ad3fb56eb6b53c6579728f575d43584fdcbc904148562fe12d8959e57e1c573a0c47d634dcbdc0dc30bbfedaf3543ef022b8611e59e07dc8171fba1f6927c26e2169b63bc2512c07af95f87e32b71daa86199eebbe254a367094fde5ca12f14adf757421d74de491e58f112dba5784ecebd992c4e397bfed3e6e0a9aee7b5fbb546f29a15ebcaa1b01c98a6a8f0fe97dec1d962a93b20bcb2fefc49d3da4ea00aac8ad463380b4940ef030c30c33cc30c30cc36bac13df5036015e294b92229f96fb51aa3253da1501f49f8452fd27a1548e1050fda77803610468044904c6cd61d7c5a327b150f87430ef0dbcb17d7e85d2bce4ed8b56285747ec8ab87448cc54a120b22797ed48636da8506ac9319a694e1f27ed2914254bfd1c582749074ba1e4e1b4d33d753c0ae5904f34c697d6904c2814429414b3faf133d93ea11cb1d12068dad40945b7ce18597e56b509651822def75e6d43442614bb3adc6fcafcd533965094941f8b7c749a19251482446ce86ed3dce9249426e3ec295e9afa66249455a5538fc4aba8c5114aaf2551b2daf6c708e5985a37e2a68cb1d617a19499cbf33a2343ec4e84b27d56d8f6dd579d6608a5edfe9e97de3efb5508c5ec2552ffe3ba7365104a9a634d5fe983e41d02a1987725587b7d5b3f28a7b9b3cd918cf441f11cccd866c7388f480568d183e2c90449359b76baa380313008d0820785ecd25fd651e3b8a5861d687145d99186475a6b7813a281163b386b72bafb1287dba905410b1db86f2e292d950d43fa5be4a034b2f66ef7f1c6536580b24fb4c041d61b6524c48d112f6c7183f2061f95f474119d3e560b1b94dcdf27a3d4c6b9ccaa62a6801635288a4c4613e56d3bccb4e25bd0a0b4db9fa55657c2d533284c5c63ff4d0e25c632285dc68cbffe3f6ab41e83926d84af8746613f0c8a92234363ccdbe2e20bca1b73f8fcda68fd23c605e59c9da74f57fdb3d52d28c44d2af595dfa871585086ff5a53d36ab3758b15942efb2626cec5d7e3541472d4f010327e465494c17a9ae83ed739d8a72865c78cb3d83a7a774d51baff4f4b4719f248ae1485cc253679776e9d254531c3d3f49afe274d6d14c5b412dba63c4614e5f31c0d827a148f9e0a45316e96ea2efb9cf5038a42c6483d274485744ac502d800169f2884a7f4f40cdb5f9df744b93e55d6ad23c9ea6d274ad912fd41182fed5b3951487a9353db2c736db98952e8c7d6c804f3bf5868a238521fba22668b879045264a6d224134b96a3e6f448205264a9e61ccf890381e913f0022585ca2783a639d12de61222609c1c212c554cfe69631aae5023403200616952847dcfc12f9345f6674e7c08212e51c52c66c8ca3a73537061693284d3c8a6e90f3dc6a2a0c2c2451cc49118d1eb9d1461f89628dbc6c8ba775073224ca3986eda09fce91eee41185a81d1e84bc561e62aa4043010b479455a443a80e9651ef528145238a611e633d8f52ee702b8a185830a2bcbd5b8fcc4f736af022cab29a637d92f49d2684acbec04211e5dc9a613ad643e49488f2ee5ec34eb9c85003c00a2c1051ce9a7f5be1d9d97f7d1687288eae862bb9f68cb34438c0c2106528d95dc33295b4c505168528fd4d8aeafaa358db037b0a0050b0204441ae27bd3bc6ce41ac4194b1dba78d713e1ca82b8842c648f7c0cd3b67490074c02210653c21dcf7676b4eb30a062c00510ecdc9deeec3e688559b60f18782c6d2da1a55c9e8d1b41fb0f043d9e3ff4d9664dc53d73834028b3e141ca69db1f1e8f6ec908d41b0e043e9e17f92dc702547ac0a022cf650aa33bd49158f36a63293030b3d946b32cad39e98313bbed7030738dbb20db0c84321dfda89dbacaf8c060f054d1e24a79efd3277054953321cf774a4eb940a5cecc00c26b4aa6a5c48459602173a38a88734e16056357f460ec8daf83d74e4de71042e7050f4ece1dec24184f1cd0d0a23f9e19e438826593324b8b041d983a60e49b18e602f596dc1450d8a556f937a24834a8bab051734b0818b191423dbdd71c89d3f5dcfc2820b19143647c8210371106fb2a28cc1450c4a395329d9633f47f430284c34ef9c31ef4f6ef38242c831a68cddd6b79b754161b55532bdad6594a30565a954937cf1ecaa8c056510cd367496f499543230b85841e1b46198cc33ea21d622154f9cc7c8fef241eaaa9095e10a5aa0a268b9793db9c984ae4f51cc091e7a369c3488dc14e5ec740e93f9869a3897a27493e6495e3fde669614858d3bf1c6f3d64e6e140511d17d1836ee6322a228a804f3cf20c79c24334251c8690dc5fd7154c99839cd410b509443e40f33c906f136ff8942a6798c57f7446deb8932789439d31f55c67c76a27813e7193c39ae8769c189b27d8ecec9d99c3fcda446b5a1c5260a49fdc3868c9d846d649501a28526ca1927fd578938d03e2b60a678689189b24731d3d0115736875a288716982827fbeab9ffbdd1bfae4e0d2d2e51f24917a29226f1499345e0d0c21265dd8d310d253ea8bbace80c2d2a51c6f661e725fb8488b12a2eb4a044b15c32ede73421364717a0800420a01cc00076458b4994d1c65a57f86bd86658a18524ca38ec3f1a6418128324042d225110bffdf6ae8f11d15a40a2245eaebdd6c07beb7f444123fa6b12cbe06593168e289e67f27170eec133d3a21156baa8c3761529ef76f09bcb673bf52e0778125a30a2f837afc1f2aee4246711854f13554334da8a287d55b44d5675dc8d4d44f9244a3ec3df881883883286ab0d634b3c8ed63844b13bf8d9750ef113aa95c9a08521ca55994b337fce716b538872ea8c736ffaf30951f4b49bbb0f62fecce5200a5ee1380307d31941947663c637a4f4acee02518c9baa0ee3df1c6e35101045cf315552219b39ff437962c48e9122cf33c6fd5088a8584989103263fb50f41b5f87f528d2e60c1fcae130a767fd6589d87b28d5c7e40719bf8afeab87f27eb6717bc7185923f350ce898f9a721c231e8a0e465e6c1b3dc81dcafd8e634e9ec6f443861d8a31c7cd13f6569f7d1d0a13331d3a8cc68f0e85886692395ca5886b2de650ca2ce1673a8a5d95a982167228e3b1480713cdb4a48d437162dc6b8c1b4adba424052de05094918d3719933a3cf30da5b9ccdeb6d9c8abdd50ea0deaa8d53b5fde12c0d036943a42ce1b11b00ea3400b3694b14faee40c9325a7d203b45843d1cd3588e63cce991e35946f537d364476370dc5998d9af77fa1d2b8166828394c1fc13ea8dee20c85bdabeb38b927ff773eac00599a176861868244ef7eef68eb65e6075a94a110a76a7d3e3fdead5ad89677532d29f96388095a8ca10c3426e9e5779a475f15862dc450ce18198f41e885a903685182166038418b2f9c9e9bbd1f9cc89902682456b478677424df85d244a527751c37b9cc85b2ee6be8c99e25c6e46ca1b819674d7b7dff39ae8562c675128fdef067a1b005cf6c064d721b262c810b5194b3c8a3c638aa47b6242470118a328c0ff7bf67d5732270018a42e82c69e51ae4d64a0971f18973dda3cea0be3b4f143d44fb90213a46179f4e6c13b6618c931fdcf99c28596690e45fe29b38d491f94d7658684713454d3e9363ed24a5cf991884130769a422fea1982869b07ef9948919b878897f63d658c795ccec59a290f1f8afdc7c92b857828819969f4487ea9c4389e2e41032e58ce3c924feb2f106f971d6022e245198d075cf501e7a9c07115c44a220563e9b2d42234b1a12458951df1cbdadaa03032e1e51c69bbfaa1e3f9e46ea135c38a2b4715c526ef99a79be11658f2eb94a633acd99116568967a1eb2e4eed68b287f5507df8619beb5a888428c987ffa4165b8ce12517ca0dd12420c3eff3e22ca613bade62957b3e610c5ecd4d030622f25ec8628b404cfa2dfe2eac92e44c173b63cecedf7454c8882e7f6b8edbdceaf0fa26c9d4306a6f51b2288c255789a88a229933e0251d88f9c6a3597791320caad333b228d33d7e7fce1b59c0f31213ad69c1740156406304c840b3f14426a67f82182fee34f1f8a1e911bc3cc30a897cf87b6d1e728a91d869702177b28ce78f736d29cf0683d946c4732449878d4a4e7a10ca427e407c7fe99643c14727b6fbbd5ab5ad23b14e33e370607e33176daa190d1d56bd09c1e9e86d4a134917733cfe3e6090e3a94df733cc958a2152bfbc0c51c0ad5c935af7eec9db011811c8a77129961520dad191f8742d6d4edd5287e915b3814424c75ee8788196df20de58c706159dfe14b463794b1fda43d9415f7e80a176d28ba9bb6a8cd653fcc6143f9e325348a8c1e3d7d0da57a1c9f4a6536dcb86a28e6ecf58c4d43eadd340d25f12b4bd74dad3f49349491ceeec4f3f68f26394371746f6bc2e7bcdc2c95e0c20ca5ce6cecba79f22f43216acef83f9e48fb5a115c90a1301a62f377348c13e53114e39786ecd83a8e762286c2874d948ec906754718cac1cdd6eca2b1687f6028db8a23cba03995fd170aa61fec41a4cfdca779a198197df41f4dccd9af04240086e0a20be59734bb49edf4b15cb863532746cec3d3b7603649e613631d7efa6881748edf3784cdc8c39f856c2d6cfe64346fc760816ef82065873e0ce12bd46e0eb33583a0158a2defdbf83ba4eb4657a19c3466d99038e9c7c15428c7c63932a7b64588a7f07835c876709d1e2985b23a625ee4511b056d1a5577c7b407894281d4c91d4cfc6d22a74ff03af28b079ff2cb38e19ad0fc12f5d17d9d4d28ef87e6dc8feb2acc64425d19cbf4a3a25c820d1fb77cb6b5500965ed9ce148ca9019cf49c82406ff98aa3a23224838fb4db2f190279f1f415b7be8bdf9f37d3c8cc06ad60df1387b705c11cad21ded93f7e1686b4470274c83fc6c08e5c8feae9db6f32a5c08e19e92c8c9147277100cb5ecbb0e326d1201e1d7adb43a07769b3e5594d12d0a5cfca0209f73b55aeea3fcd807858fb27ed8c9bafd2bd30ab8e84129b3e5fa53eceaaa63013009173c28cad944c497aba80f01a0c20b4214d46163b993f87f320ea29093c2719a5e8dd8bd35918c23c3028084178228abdb6834cc71af3769800c3ce045200a93c5de6bbdd2e432bc004419c4e7bc485fa674ec1fcad054fd937ac80e9798185ef8a198f38afb5a7eaee9f0451f8a3145e3663412c2f4fc820fa597c697a9434886d68a4285177b28466ebc6d90397bd250145ee8a138317b240df1e76573f250fc93e858d2dd630ec143a16bfd41d89011c6fb3b946622266f282aa612b743314454567b90cdb3993a9437494695d5c9d84e3a94ba7f6296b4977715cfa19452f72f1a799fcb95437936b47f0c9b339659e35034cf95c9fa92493894319c8a90355a6acf379451dee418398c9d04dd50f6103b1b1d562389601b8af719e2a5a7cbb79c0de59cf4f174b71a6d98aca1749ab5254987ad6fd4501e0d5d9bed886c8c9186a2cf6b66d8396a9a1f1a4a112551d63267284669de389b32baa6cb0ca5489af377deccf31e8e89176528e9762c0d3f22ed9d2143c1f51c6a7bee5bf43d8672e87732aba8f485180af9d2cdde27e49f476ae14518ca99e536b6db9a65845e80a13411ae6762658267880d2fbe50ce15d9e1e7e66dcad60b65f8407faf33f61819210a4c400211800091038818805d289a4bbd77f287edad15850be5cbf59f5989a061de2d9461d76debf67a9a84175a28fbc6b809568d63dee68ef0220bc5dce86adcf31d496e6c8df0020b658ff8da530b999fac28557871857269a7cea4217d46d62195145e58a17069558d266a699854bea842a13c6610bb61c6191e5a688617542894bf7d66d1bcd26c4fa1103e2437ff4c8d34c003eccaf0420a051bfff851c2aacace5128553c98cdc933f8acd9824241f771c6a844c7fff02794c781bf79a77fed4f6983f0c209e5ecf9b426de63706b81f0a209657096669bd354594854af78c184e2a7c99867390fb4a14f78b184e264f2d4b0f9734c78a184f299fb030f124cde4f422982776884f0fa30664571c20b2494d15cf47679d22cd93c42399e5744cd2812ce6384a2842dcfa8e88edbaf08259776b42ae26ed50d2294e591c7b56de96da887507cf133d136cdbe9a10ca50349dbbe69c836b2a08c58829246a4f560f1d20941a64cf6524cbd89cfda0b0a97b9191345487b70f8abd9a5c6c235e7efb1e14c3d5c1aed9638cb3cc83f2d5a884341539f29b57141e67145b12a6cdf3bc83a2b66b5c9734af89691d14a2937ea64f31d53ee7a0341f638669f93a950a07c5f3d48ffc20c31bc7b841c9a6576f66b7fd4f628352e5830f49c7e5275283829e74168f736d3e350dcaf2a033c8af3e8eaa9f41b17e5364c4de4563181994fe63ee9ecc1e5327fb2206c5e849d56642c3c8d6302876c447992773e7d8fb8242af868d971df76d321714b323d59a8c6bdd5e6a4139af87cfed91872f3116941c8790f7465bfb61eac50a4aaf136e33cc4d349f0617a92863102f3fe698e7df8caa8a25b840452143e99ad4d4734937e0e214a57b18534dc7cd6ae251c085290ab6bac9464379867e95a2183a5a6e589f73f5042e4851aa52fdc6a7b9a6095c8ca25c845bec03b5201408858766490a63519a47c53e1d52d22a82645fd27fbcfc37d4fe38e41c37210cd03953303aaadd2098d01143ff3e71a4895020aa6bbebf817d227d7d34ef39682373f457498b914549edb52b7acb4e75c4be5fb13bea1369ed80db1c5a5624b235b04bda5f530caca6eca0c8a2a880d7bc7f4b77bd1d8c310185a79f4117d5467c73c3a01f4653de100687cae0e1e09cbc408ff0b9cacaad3285ba085170049a6c85e6aa16bbe178e7eb72744beccae66dea9ad30d4c75dda9d3ef2e7acff3c6ddedf09adc8de3edebfabc7535a7a6e4e1fd0edd7a213bf5f1c63c3a98e32fd023b43171964040475d272fb6254f54af77cd56bdb834d1c236053c43416a76102e0781d3a81975e75cec6a4da709cfe8d82cecb23a8e0bf818a5567adba3ef23ca5355b44ba32146c5a589030a022de70c5dbdbbf3d3a2a85c9eb407b51f8c21552e23a3d93221839cf53fe1ce72e01a6cccbc20e286d4af48513f5ed138763f6e8d18ab73f2e2a3eda56cbc253318f7d5e76b33c2329a5a05d7617a79dfa932530c34cd449ed8ff486fc62cb36b8c0b2323637741799e6509a132c0aeefa4e0bcf465dc7e37f8d436b334ae94b68dc183805511f89adec99d8c62f55b542a5796bb9de0d3f563e8a95b5800a41df834c8edcb16e2ea50942a655988fcf40e0ad9e06ec8492f0ca8e34a41680836bfb7e492c8af468ff5c29b409138700b64082ae2da263f53f024a10fef70595b5320aab0bb56d80e6e7f0b3101eb906acf6b543ccf1a3db5934c672908aa44b5b72e10d5011305230d8f412f7176dc93c1ec2c0ef4831f8b6aedb594d0fb55a97997456413d6790bd4b9218c469a2a0b2b3c799e061d655c6fd703af3cae08d7cbae285eebae532231b87a5c67b86271f5b84eb86272b5414e70c5e3ea749df78acb3586cb4c72adf1ec8ffe185ce5b8e670b1b8ca7189d1321ae36ad68cf35168aec1f847d5d8a9240c38103399efc871590623a3518e3d6da3b65a438d267c4920a1671b87be7af58af30e308158b643f7dea4ed3b47110b40ce8753fe8357717fe702fa35b9754749cb200be4f262a7f41c16860649ed93c59ddd718ad7df330774b068f1452205effac7d44a8490182916801a358ebf8091e06cca0f01dc7bbe45f4e08480c405ed47c0c405ec4810c5450c87d0309dfc13f8878e5ba242d36a6afaef74f254f0741a3aff0834e6b3389d629089573dd10a1534387a20f022b2e1cc2a2ad0b79a91356d86a86769b5c373b40fc620c4188c6960720dd8f882e70e2210da194018280f58e609789c7433c0f260132c6a253ecd307031d5db4213c1be58f8fae3ce3519966647d9f3b8f02fce9cfa0e29453918e3a09f4d642f5a8b2c13a4c18b61b481c860537f830c11729815cf6e3c3e9fe7c739079ced8c8e0908455f78ef00c180c11b0396413903c118780beb2f82e14d99b8c0525ef7b4bd743f0066000c00230330baa28ca13577ee01d1c3da63c2439e471c8f93e5ac84191fde220931fb0e7a5e210a107fe70020549c875310a0205c40a444d84b240b0112736683f93b3ee19961c7f3e8475c656c55f4c78112b9f3bd19924d688a54c8bb170737dd497bece275bf7742e9c57f1f67fd3d66ac7b4aada7836697dfaf9ea6ead9f67d391160c265a7ff6ea7678bd3d86c392bbc3b7170a3c77977e5382bfb3b33f55a6dc377ac64ba59d6f855ca90fbcd99ebd18b436ef7dfd936a06eadc979837e319565761d1e1847419c622798bbbad9e81f3b8f597bf9db4706c34c424523087a43bfcd45b7f59a899a7a708c8e2c6c293b3447c5a5750e8b93f649840ce3a28e9536e1eff76aa198d170ff67622fd0fe2f99a57adcf3e79e7b7e9514cc24fdf88c03e5436c3369e6bf3f79179dcce5ffb15b94d63a74fa5c132a2d67c86af7b76a04a937dfc44d11fc9dbcba03f9a5bc07d667a4e8ec0b1bb400e0aa00949b82cfcfa519de036f74159e9f745fc808a6f0a377f8ff90b161d22881eaa9e63e285c2bb9449caa8136bdbd759f8032c2122547725442d675433fea98057ba13f010e808b1520c7a48f2d80918a22938e4f3f48041f7d9a30e6a18b46fe3d439845ebf8cf5f34746fc46687e941251c252825764a252ef56a2dad5fff537fe023bd18a146e7ccfabf8692a90de2a7345feabda0549af46d13805b4f3c3c3738a47c329d659c3d014d541e76bd199d047bb2798c3a9bd32b9a30c57145a2f6e58caacc49783ed6426ff6e9d865a486d6080811b24ee0a495900727e500eaeef10c1c5806ff9dc5e056cf402ffbe78a50eb6e3d63f8cfb718991660372c4a37cffa8d12d4548dc7403e7ddfd8094988baf296eaa393dcf06c8c9bf77f3537363cb8729499197dfa4435371f13cb700d4a6ae19d959597290d6afacc2337341303ac7d2e658f0505f59c23e73da2ffafbb2151f6d2ecbba280e3a9cbf83af8a0cefe958b306e49fa7286ee57a84ccc00a7cb51efb1b0eba391d0712e67e25f8d9912f034e3964054c7dff26af3ce89bfc10190928918842d79385cdbaff5a6586369f3476f0e6599b32725d443e63463b2300eadca0681c27a260486783d43371b90def4025d7cf78e9793f9c4b949e55ad32257b27bd2969c3becad83994581121c9df5a22b24c7ab6257b255689b49574fa29285571977b6ec75169b79757275396a627085168afc5c95f93b7dab9b5d29115bb0e554a2daa0a429cc9621ab6f5f9b1c00c01b342d23213295a1cb672a44f30abcadd854b47cfe118040b95e0330dde034a54c33c7c2d8983e98affbe14aedcfd097fb514495b14253d574a3ab734fd56c31f4a16e2bc20c1bb7d03d695872b6a32ff985eacfe4565841c782130a8935882d66f09138ea4c8a740e1be9bcd702a334d74cb0f067723184b4d86da995be440c0be180b555e8a1cbc2c6795be5b1d7fe1fa8f223eb828acd9c1e3a51e4149ee451f58678f2f07985c3643b03484883857d9256c879a0ca68a8e74cfdc21cf15543053d84de7032a6d854b2b9b07597f42abdec69fa5adbc557b6bf73e74d3401dab975994a8682152e6edee427d9751597f01a428857ddc097dfc2bc25c6d2d9956918890302e650186231bf921041c6cf098d2c961ad0c35588a73ab236880de4351dee232094c7f776c29cb067fc943fe77452c34b3887d10c4046000775da2b025322f0d24d4db9c77d70dede0035c56cf2894b2dc9eae3976cf148e2a6c5bb91c3e9e6a28149fb42494f9549b81c086f7362a9047b6bcc89ec2584d2b0531ede2f4dd329726829ef0bc36eb57a526a11e2077be561dbf9d2a90cc77062eea1c31304eaf60f772cc74a5cca1b3f05cbf483969854285de1063dc0f207cc57784883d015bf1b65ff216e79778df95ae1ae10a2c285f22e61a41c41c05476113aac4c0417ea776c0aadcba384ccb2c90b3b9a92eaad89f01022561e0582f063b239ad1e62474215d192e6b64d369b1023c8e63b9ac4117f92c6e467a3e8a1bf798c4d1430e52a00543f154dbb880f6ff6d12b18978dcf25e0442ae80522407cf1f865739bd75a972a1b4aac1d65ec2a10dc37d9456ca431b5a75a79ea695722da51dafbd00c76062157dbcddb7d9618503fe525a374190b1d2f449be2b3f38112cfaaa59c2cd3cec1295c45b88f3876d5da110a85fae14d7e09cd4b7b9111aec85047a727ce257afe2627041579c6dc313263155603914348ac5ec02fc17beeb5be310d01b852f87791e3d1abf269450d91785c49f509cd7bf43a3fd0204ee785bd3d20ee197afa0329a44c0f961d53c1b738167e2b986800117aa235f185e2fb69ac94c1dda12100c3b3a3e8a664ea97efdf289e3cb214c5f156795647445e03468c514b8321859e869721fb929f61fa2d986bd60d49b4815230db04ca509c2d20228527cfbb341e3f290cb25f06f0030250bab95d90f5e9a307f57801b8f6940eaef1bc545e40117e739dda3995e9d217a34482af2e96c9e02714c491f08080acff87c59aafd0140fc11004a64d31423459b29a2e5662a61c805db8adcc9679db47e12e6c52c59c04c21062003c4684554defdb3cc27adae916bc8b1685d68af6af01ab24dfbcbccd07d0f7fe85d742103af04634eb8acb88d9cf8960f6b299cbb0df2f05cde2da665ab5f37d3e1fa27ebb67888c3a5c114b3a8024ed1a2e0487be022c49024e74c4120b3160b0a4900330333333333333333333e3ce8c10b47303d555add6554a4a4aca4f3a33f1e9ccc4dd6f7fb3d667be22edcd12f60a100b140bffe9e67cf8268af5ef713d1a3acc6e6ba2fc71ca7ed946d58fcf4471d3dbfe7fc4246f3051f230b5544a08f11c798972cebbe119436daeb696287cc830113c628a51b51285f94ee3211966b64389d289d8d7cc6f327327512cf3c80de1dd3d5e5312e54082c8c71ad3eaec91286878d07c17ad1da71012e5caee383fa7f6c8f18f287c36ffdb11c57cfbcaec2c221d758d287eeaea9b89f5aece884256ffcf64ce4ffed9224a6e7b1bd1ce838a2878d0bfcfcc895422caadda3abf112435888872edc7f41f07bfd10e51fa8e5aa65c473444e15c3e902c8999a3890a510e4b26ec6457c43c84284908cf1d2b73f2182283b0f7c33b76d3f75cb90c41944d7360731f6a9ba84802198128c69a6abdf024e381072b0d6400a270ae295183959a7918fda1182d22649ca7f2efe8ba810c3f146214fba825e476a0cb03197d18810c3e143f0ed2bfa4c477f20d7340c61e8a59a2b7679fc79dc6ce800c3d2cde6b133ed49e781632f280ca74bc3990e029192cb100c842061ebef358df03e9204888dfa1490bcfdd579f1d0efa41e71cac54e6380afe3b50081975b8e398838f69bc630f890e85d5601a3d8690ce51af42818c3914f43ec85f3321af7610081c32e450f9868f3645b898dd620001dc808c38940c3894f635bfea32febe5c196f28c98ffe8418161e1e196e483dfc28d33651fb6146461b8aa35ae213e2e174cd86624a9af650d52015fa1a0ad92a1fa2e7d691673594c3ba6e6a3267300da5cdf19f687d10a15d34942acc56a2d8c7b996c9384331bd4644b8ecd3982219662894a77c59f5c60f66196528e4edae0fc226fdfcad03aec220830ca57ee9982fd5b13bae1021630c850e46628e4945fd1d840c3194cd24244d7cd38ee8118662f7ae9489e410de13206480a1dcf1326b7eaa900eed0be5307dd463f9ea1a5e195e2867bf11cb36cbd4f1d185626eb674c7d311b32b178a39c70f357b32ce5d27630bc5ff8db5f6d199440e2d142362aef8a6ed8d310be5fc3a3e37e13ff6e8928185720ee2ff3239f5e47c85e25db9448edf391af1b04221986592d5c92a923955285daded0731c664ef4d8562f628433493b296dc1e50644ca12cf7369fed1691b72385723e8f77630e3f0e91b42840a11c6385c7b1bf7b2b06194f38ce414887729dce718e0d6438a138d9d674c6d7d306f90b329a503e4fe3d5f77160e639cc03858d90c18472103f488c13265d31c840912da194bb9d745ba77ecb19146920061e60c18101af4186120a39444be6d0346cbd7f4646120a51323ebe8cded3c86520a1282539673d8de1c93ae502194728264f112d422d428eb6a1daaa16c83042e93b8ed41c7d77dcb89ffa800c3a407525a308e593901fc71c98db8c29830865b1cc21639779dcc3a8206308e59459e35ce3650e5bf50008a6204308851c3e6e0913b307b1531d110a4641f5af338789e4c94c8b00604218c028743cc98ecc62aac3bf288be6209f33c64c71faa224613db7959a77181ebd28bece67979b96659017e53082d85eb78b42088fc14b5d3e92ec7551ce12c3dc2c34e7a835b9287e983166d6d19689695c94b22b5b93fa04f5956f5148df5c2bf1936c725b14d455a3fdb3cc5a146bd4d4cd3f3772b2b428e460d62b34d4aeb328ec6707fdfc295994352ef3d3c7f8e8268c45317ef410438e9090dbc162dbcd88f2996f7d18c27845319aa4524d15191fae2895a64adfc7502b4affdaaf9933a27d877e0921200c5694256449dd1a3afb5a526410086315c5f6605bf63dfdd78383305481c7d1d5e64d2babdb85918a728e79e2fd4636af898ae2566908d9667d9322555608e31485099e37c79e2687cd1c5314dfeb623c722e6bb74b517ec9edac1d45eee84b8a62a4932cd1f64e24661425cda9e19ff11e578da23846343b346625fb2d2d3db25f5c4118a1286e471dbff34e849831bc4218a0284db6cf927e35fab2303e51ee8be8e82d5136080814c2f004fd671d06efbe0b6174a2e81a7e4b25e2bbcd1d85303851a6fe8f57f5eddf36475508631345eb5f0f5ec38907b9260a7999cddebd2f3e3413c589796da326cfea8889a27a7c65fff93cc4d471894287eb68b879695596282673d11ce847d681742a51c874d521642bd7ad2951d0ed97ec129a9a44c983141e7744f91c4f5e12e5921826e37ad49d399128885f6c769db2f8a443a2e091bd399e90b41de711e538de63fad846cea3db11e508b6d13347238adda3dd71beb60f358c28774e111d795cff21be88722c55d7dafa322ba27037a9233dfb14a66d220a1ff89aa7f389ad1f11257b6d934f1fedb67c8842da98237dc869fdd31065cbe8317b0c175f122d44293febb4d6d7075713a2741e7587e39b1fe73c886294f4b14d99fb079d200a7962e86eaff210221988e2aba7fca85bcaab0744398eefe3ee68d63afe508e423bba9ae54ee49c1fcaf9b7fa1d64fc10b27d2866911cf48608d137c887b2862cfde1597ef8617b2845c89f96ff24e6a187628a9824c3b5c41c5896878264c9c75dbdb5dae3a11cf2390a8f35b6ef7e8762ce1cfb72fb96a9961d0a496f2273e77e895f87a247cca1fde770af3b1dca610ee321989e475ecfa1907e273aa3ab68be248772c4acb16a3ccc118792776a071ffa9f4b854321dafffa860eabbade5018d5cee17eb86aec86d24885448771ee23d1c181a00861b4a194f5127a724d78df940261b0a198b348ca14a5d31122e72042ca30d650969cef9b8c71aba1186124dd869ce243ec8b0a8330d2504a89e9d73f4ea240330561a0a1907bbe9d2a763e48fd190af17c62c73812b4523743b1e3fe4de7342242ba0ce5b49e191d6cc8297dc9508c11f37e9b6bc679378662fe86106a256742d2c4504e9ec43d104d23e1af30c250981c76f081494f4e9e840186a284a5c4dc7ae801cc40185f285747b68d41ae3d9b87170af19db386c58ca5c7bb50fcf2fb1c5b6b3b5e990b85727d8bee7c9713d52d14effdce2d62d48c855a287cf4895145d3d648592807abaf13bc337658287eb0dbb6e57be39dba4239d498d9337ffac93956286da857f338d9436154a190579133adac2df243855266aecc6a9124373153288ef8698ee9f5ea24964221bfd54f79dca6756f14ca913215d7915abfa65028486fccd7dd7c93794239a9640f72e871473ba3130aa3398e98d363d7df9b50fcc862e31ff856048f09e5ce653539fcf6d0d95a427932c6a78ec7d70d86a1845247f7d03725ab27f9826681f305c24842212dc2d5e6d4fea62112ca296c3577cacd71c8ef08850f3bbf363b47cd08a5f51024f6ccdc2294473bd49f24379f8f2c110a2b1113d2c6d0182987504e2d8f7aaca337fb2e0c21142f3f92cec983f82044030846c15f6268debdce696a420f0c0018e5e889213e1a3c46fb24dd0206f08bed463a79b8bf7a2cd30792e630005fd00906d08bf26f8e6e3468f2c83d2f4a129e43fa8d84fcfa2e0ac9347efe65bb9777e8a2e49a1ac3d97d2093cd45f9d6ea264aecf4b82846f25aaffc910c1db728b7a48de91f7e08a7dba26c11b183f8ffa321d7a2d0f9e7fa3eec35465a94730ad5d6da241e78b328785eebd74f7b8b4b16659997d2d0fb103ab128e7306f90d8ad551f31b028dcbd8dc7581d861ceb57943b8e6cd31cadc77bb9a27c11e3c3241f7b0821dc8a527bdb8b5776501f8715e518b52f73dedca1cbb98ac2d64988abd69ff25545c13d5f47cb64de375351888f6357fa345e464445c1576af3239bb8c7ed14e59c502a1de6c57698a2f05e92913fcc91c44895a238fe2db93910b7bd4951b2f89bfe487b36a706308af2e76c9273258f679481d43f0c4014a5e820459c1c874251d0f8f86ddf5cd710501476e43632829dc7b15a18c0274af7a1a68ea47a698e681606e08972dcb1b9ee7bbc713e9e58184027ca3147abefb1f773925801657708a17c4431b35a83aa9f848ceb6e808623ca71ef86c8e149b7e3c6ac11e5f87a246d3f64f9d8a7c188b274a0b91f36e4c971902f738006f04a0b341651e870e244750935ab8086220a3fb99a3c4368a9cee6d34844f1f326d368958aae191185db741a6db3871e6c8728c43cd179a3ebc96914c902340c51f84e1e5ab3354854993c8146214a669de398d6c2c3643e21cab61e596f33e750d264108524f97a3e3ea679820844b13afc4eb99fe3b90d208a29527788f05f3efefea1a81df9a3912ddc437e2035745c19d93f4c1fcab1488cd4752b1fd6c787729624cdb0b5313bff15d0d84379334659bdaaeb0fd743693749c8970979375f7928d9d7d975e0d9d29344f4d0c04371c287121f6cb2a3ecd8e02e40e30e85f0fffba883f5c8363b9463bfaeb98ca422bdd5d3a84339247f194d93adfe99d4d0a04379cc3a8e75437ed4933387826c68bcc9104f3c3fe450aa9f0da9358758154f1cca5942b26cfc9d0e35d2804321472f22f77198c753a86f28474b6b999ffc9c767343d1839a7c5fe2716bee3540a30de5cdf1336d328d629af1010d361463b43bffed2097a92ea0b186624711dc26cee4d59c6613d05043f1fc3dccf54e997f4f1a6928657a4c7f94b93c0a6b4b40030da50f23efaf94ada724a07186b28f6b95e887ff5d0e6898a1d0e1c6107ff78314c13234ca50c8b1c7fbcd9bee1c04c950f2bfddac919cea0334c650360f3796f32329ff1443215c34dd6690cdd0930ed008433199868d7777d4791d6028547810ede9ccf91dfc8592069998ae5732465cbd50a8d57fbdda36ff389a46174a1effccfe7a1c987b880be5ea90ab7e475a1a5b28e548cd564f94beac8542fed592c931b95928bee5ac768a1f4f150b45c955391f9b3ea2795ca1b41aedee6943b4bd56286e4e1fb7576613a656a19c6b5b3ddb6f9354284ee88fa2913959ff5328769c3e7d91311e4b500a459b98a3edf871cdbb1785f276fcc16ab74a909f0614cabae273911fc460e1d17842614e24e6cbece8788bb50b349c50aefce82fcb63929afc088b54086834a134b61965249788b4580c041a4c28e71ce99f073974cce341b48472c7c922234cbef00e0b68280195d3fd099e6e224614349250360bd7281fa6c4451e054f4641030945afe98f89fb971f73d0384261ace348529d6cc824d130c2e9bd2309d271669c09b5824611ca6a25f1def3778c7711a1b093c2349b749c66ff2114373eaeb4db1cb8a7c8276808a1f01127ff74e3a87d87de8c6050017a06304a22d31b628b64f70bc0f68b427724e521f59d8f644d0d337c518e9b7a89f0bbe942ef4559e436cf574667b1986f062f4abed6f53d1eff697dc48c5d943b49a87fe760dc2e62a68b75628eecdb3facfb52073038dfe740a07415337251ea7c23e973d0906e73b82855c7fb1c5f423552c713336e518ed43aa88cd59ee7d5181430ccb045399e6fad98fe34f57f2d0aeb71c7f6183d9034195a9483b46c0c3b1dadda3d8b42d54bbc2bb19f4cae2c0ad71fbaf6dddc8519b128470e3a78b831e5193f60518ea6575c32e44e655e510e3e75dc1cf9f4c3ee8ae255a6d68e5f6ad3fcad28a89faa64399bd8a761850d66aca2b09aea226e648e35c4785798a18a72a77dd09ea573c2189438cc484521af87d1a3cf13ab230715259b933249d5ac9e9b53945a52c793da3f533f531463c44714d7283d1796a21835d5aa9e753ace6137cc20456962cd3d92e44126f5184549dee340ee23c4489b1745a183e8f70aef2f4d7b28ca618e36c4799c34a2038ab2468fc903d58cc1c3f013a5529d0f75195e9f27cafaf2718789d133a7081a6674a21c075dd56a1a442b2d0b64ee6006278a53961f73acbb993e1d401998b18962a47ad4a9b67c279c9a288766ff503b76f021489928c7ef1b225f3272ae1e13250fa976d693c7e14dfa1285d33299183d7f9cf7b54421aceb49458e5b250a5a7f9951d322f57fc20c4a14a34bb01bd530f93c51983189428e3e66ba87ecf1e19f8039618624caf1638eb69b93831cecc7861991284588ac6992460ee3df84d6300312853c2f8fe3ebaedbff3ca278be1aef3224840e83c54d98e1886294654bdd07dbda69443979cf996d9cbcaac2308311e538e32653b71e7e3f8b2043f7b52784d224be22568deb3726216988a93bcc4844d9d6438e3bc7eb8828557659a6b90dd96fe2851987f057d623cfd341fb6b8a0665d510859f0d61a3c6e7ae750b510c1a614d33573f2606450b330851ba134935718ffd20cafe1d129131d4c7600ba21c79c58e5f7f24f9c181287ce4612d2e5a42b28028b887947c7794bf66fea17ce1d9adf129aa19cff0432107a51d59b8c73b697930a30f05bd8e98ba4388b87ef0a1903eb4d8bc53b5d2efa1ec27595f9bf33cccd133f4506cd3b24e3eb6319e87ee63c93ef9343c983f680eb379189d74ceb84331660e5346f620ade6ac1466d8a1fc9d569a9255fa93593ac38c3a1442c2e771b3d3f133040cb8401766d0a1e4fff19f87f320c2d33964e612cccb4b72a5698933e450cca187910e246fd499196042712878a49f4652f7a6ead819702859a8c73149afb5e430cc7843a1533a9668d687b567b8a19c771ec63f93ee8fe18c36143e92b7262dfda84333d850f6ea30f29fe488ac2f79c58c3594ccb43d083b713a83a40c33d450304fed9b61c6f7e2dac28c3494e3d8df2c1e465e06099961061a8a99839ab348919abae30ce5fb310f39cf554f8a4e5b31c30ce5dc943af9ae5744424152a96ad231c738a0000ec80f98f3be790250c58c321473cc9bbed751a4ad920b33c850ced979af3a5df58f361a4361227fe8d490a13e1e2b0a33c4509aecfad21944ee6e9a1186b2b44eed4fb64c4e80180c243ff16036a6c7eb5940a42698f18562aa577379cd91e3c9aafec4c00334c30be5b0bb50a96b4fc91dc95d203dce1eda440fce8dc40c2e94831b0d398ede6727a7b750108f3de3277b1c9bc3195a388e42379a4ddc69d16764a1105e329594950791692c944efb3efe0e0dab2b3a61c6150aeff935462acfd1f103068e33ac50be0da323693787494e6146158a9d1d657fccf821c2a64231dc84ec11fd40ab83a750b290bca16394dea4520ae5b2eb38ac63350d1fa3508e737e8490e543914cb90b33a0508e19a127cd3d8dce75339e50288f3c66cf08af2680820870106638a1b8ba39eda4daab194d284f9eecd0f2b3ebf65299c184d227cf2a9b3ff02b09b1662ca19022a241e29c4c0ec20498a1849247b11d2377506a2ff76046120ab6163dd1fe99a13c48286ee8eced617a555ff708e5f9b0bd7635b9fa8d50c8eef17ed4bfa9e12a42f15aaadfa3d9981e512214a3a6cc2289489c101f61c6100a97f31d73f479e1d731430845c9da513ecc5112728251f068f34cf255cfa1e600a3fca1b64f6aabc4caff8b729966c8086da27932be2887f449269f3b8aa8792fcae5a61e965e8dd4d5bc286944351bd3341659dd45b9a3640f4b7356f75e17c534915d3e38b90d752e4a11724cf3dc9ec3b6898bc247bfcd75952ae1b94531ac86fd3087549e42b445b163a94cce557d355d2d8a3e6fb2394f76e2871625fb603c8e33e7206ad66651926c3b1f71efb9e3645172b34f89b9433f8f2a2e828c5814e4567e3bd49e0f2cca37a21ee4fc67f11eaf28a4c74df5f5ded9b9a2b8679a2707b72b19b7a2742391e956348579cd8a52cb8fcc7a0e3b083bafa2e091af3e7b46c43b54519ccd7150c9160bbb5351dc24572dbd79e79aa2a224aaeb91bb48ac84f214658f0ffd69b2c31c695314a2c3b22445d456cd4a510ea2d54bdc241139a64851cedc9194931a1460d5a056c6280a2512b43cde241f35720e101545d1b77f3bdcd68fe3745686a2183d3ecde95e1b127532c80045f9035f93501fe63899876401199f28c9c7cfa17ac7b20fbf27caa17fc871de58f3751b3ddca4e5f6c1861365f9f8e657c97a98e746cd5a1285f4783d4fefe03e2251f0d45135f9c7511942a2505d1e76a893ae69aa4714d3d27b226f07df8f23ca1dbfe1d3a1768ee246143c8acefd39cce321ca889264f20e7f9f7ba2498b286cf458bc7add03f95044613232c7dcba9b7e1251caf3f6f4684333ca8828ef76dc0fc29c4c660f51aa92da0cb7ff9e1b410c4394c3b41fa4c9dc56d3f14a5ac42844f9f543738c938f77e5cb15e31063102e8620e8c5084421875893ed5891e3b86200a224eaa1e68df0371b2462fca15c1163fe81c7f0a8bb1f4a97f1214e72e6f034eb4379264ddc181d516362f850ce71c8398ffbc9fcf6501657fba8eeedb356ad874268fe4ff1ef71634e1e0a251293e38507f1193c14d4ab3ac7fdfc21e70ee57b0fdf63a40e3f99762865e71c475329f1d43a14b2fd37448f345316d3a13cffeb19e341ce1c4aad6163bed41c7c6cad1c8a1e26895912e51e84641cca6166ff3093f1ca1c0ec5d3ef1cccb4e4e8927b437952e720df4a785f871bca5144aa9ddcd571f8b7a160972fd3ae9592426343d93786fcb93ba3831c6b286e328fa38ebbf8d14a0d45af7129bdd6da09a134943cbc9e8f9c9ad1a3a1505bba1bd3c76cd29fa1dc1fe66aaade71182562984113629481046290a120e623e935ba8dc9448c319457d5a462573edf3c8821863988118634880186728e74148b146fbd8c2020c617caf13aca8f36f1364513c30b54001388d1050a88c185720e1371131df86be6d84269f2be65ceb8b48f7a2d9435d47694501eebe959287bdc103bc41cc721498385f27aa63d9bb2ded4f8158a92413ee6e49943b4d80ae520c78e25d77d9864aa50e8f5f0ebafe3fc195e2a9434574e87d8b14fa59b42b932647d0faa032b0f2914e284188fead9443c6244a1f0f7f2aaa175eb5b7f811850a00288408c271422248d1a13971d39d803319c50d0e8af29e3dba78e115c84184d28e8f846ada992549b6642593a8ecc3dfa749d542ea19c2313edc0ffed37740ec88059410c25945263073165b43c4d911849280751a246c9d4440c2414437f78a61d5fd7438f184728d84b7d08aadb55ae400c2394552cf203e9601a2e2ab1408c22946b2555c6cd5123c62806118aa23b1aca9378985215630885d3ace2ba31d8fb5b6208a1a06b95b163448c92a099622318a5b98f29aed73d9d35af1bc028dc7f9c438f4329b0f18b42e8f838362f4fe3df71c0862f8a1d25e754ab9aa45d9cc0462fca71bc19f63136071f5597d8e0452187dc1b63ac98f5975ab1b18be295c7c9daf1f073a38bc25cf59c4878bc9a3920efb0918be279a6cc9dcd76391eac241bc1062e8af3691a2ac3f79cdab728f664b2b689de2e0d366c518c9f328608f191a616250f4643564d8de1665609618316a5edcd689a1af3329b5914d5c3b8539739c8d9b228a6915cd73799bac38c4541739ef425bbc2a21cb2a5bbd97f47af1faf286afa2087fc9ee60ebbfdc1862b0a39c8d37b16e521cba715a5ebae0d161b1da757d3c1062b4a71b1f62135668f5e45297722863e934817795514f4c63f98c66b646c95838d5494736fb8e998eea3911c5450015cb0718ad295cf67d427f7ce08b191bac186298ae925e79f8d321b62c217d828453183bae4795fbd66b4021ba4284b47b555394fa9bb2c021ba328c5eac4ffc03c43c5a86c88a2acbf9e6342456c84a2e0befed9a52473642ea94b6c80a220d591fc7ae891a4063f519675effcb3f76b25dd6d78a2f8e981bb478f10398c2db1d18962feb29c777df10d27274a2539aac799a4a292c5acc4c626caeb7166ccb9b483d4ed8626728d0869fb24834995a9d8c84431fc555caa3aa9861c982844f3783dded98c23f2c6250a5ffd39773ac823d75aa210225b6a6489dea1aa8d4a9cc6233d66c953a208aa13727dbdd9cac2486c4ca2d072f321bf2272c6e0c620034428071b9228786cd699651eba416c44a2381f8d5f75a689e2938cc306240a915b9975827ab8adadcc9265b0f1886252f9d83c439464a9032eb0e1885247e8bc0f6f9d4b22122007878d469454729c5d722acf703a230a39c4942dd1a31d2d091b361661b4cbd06b9ed7422b6c28a21c5fb59d56dcc7ded7b0910882c799e3eea0aa959760031185f4a1b9a48e3ded47331b60e3104d9819a92f3bcb8fd91a62f3ca35ebe842e0f17a90fc71eae30f556183108550fb99127fd24739d5b03188a29fc687f93ebac38582502b2ed363a8eab0ed8d407013612a5e367e499cb0143600716af5fc9cffe18e1b7f288784d788edd1de0369025f5fd8f043d9834c99e66f2745e8fb509c4e3b31e33cb48e743e14bb75cd3e7d564ed77b28fbdf6bcec14cb7357a2864e87873a4ac499bd23c14fd22623f0cfebe398887c26bba8d69a9dbeadca134f9a3c7288f21ad6d87f294bbe6b8885badea50ac0f4534f7a4ee20841061830e8c66aa7784f026dfd5e55712d991c5ab5dd898433179f487f2c9ff48229dd2802bc3861c0af971684fed9ca3471961230ee55862df236ba673eaa9081b7028644e96d2b15c662a6be30d054d13273da7d5e8f8bba190e483ec134fb7d1751b0ae6aa37d1c37564b86c2884c7319cabeab778b986e2764b0861acbe25643594e64df53fcc1d9d634d43d103dbdc21be373c7268287684e9cfab1eeae4384321a947d576c79890313394337b3b77c363f730b737d828437123bfadd85974a469830ce5b0532c3b68fca5a83c8672d4d8e9e30e49a2a3cb820d3114d37ca8f11f96867f9c8d30942edf3d5426abcde1088672b895395aa69b79ce6d7ca13019713afaaff29668c30b65b7f81dff0f43aed1b10ba57997b2c87156dd2c6e70a118e32c3a26bb9e48b8b18572268b10458398a585626be8b49a263b639a37b2500e7aff274278a4b1c36ac106160a5d9b6e3d8ea9be4d4e156c5ca13ce7113fada9fa35be61051c6c5421071b5428efc70d1b133cc8e1074f37a6e0830d2914b37a38f5b8ff5ecfc22894bb3babfaece49c157e60030aa5cc1d59a4491a4b07683262e309a5eab655adcd12356f89880d2794ae3ece96644889f55c1d369a400518c30613cabfbb199761633e150a1b4b289fb9fa875c275d09e55d8f325535a56c0ecedf4842c165d533df7e5fd4464239b6dd75e8c808e9438f5032f92047a991de399d46287ff053dba1dae672c24bd828426d10c136865018fdcedf312d3f6e1b4228596c7df039db3ee6084661ea567b3526cf470f304a1b7c3bb375ededff8b72eeee206b4c1ec718e38bd2ab6aaf4d4e3131bd28a84ae8402d82f8bebc28c84599e58648beef77514e5f31af7abfd96aa38bd27e7e1c45f28c59ee5c1432471e427fea73197151c83b1b0f3a8f78e82d0a1efd213d3c990899dba21872c67a4996ccc6b916a5f53b8d1cfd45479916e57c3b8f934c3f86c8cea21cf2a1f6e35cd941872cca718a9c0dc173c4a2b0f22913b6edb64d8545a9334b9bc7ea1dfee315a58da1d77ffb9f564c5794ce25febe5ce4d88a62860fc92e5d554e3356142376dfc7614cd77eaca2a01fda84742941725451cc91f57f7092b353b431a0918a525e7da88746677450510e1d424c22ade3b8ea14c5abced0e9d8b729ca1d6ce61ce430dfd4a5287ce797878c0c21a4418a72c67f071e6689d912338a62a7b1d89863ef49f35351a0218aa27e98ec9023897af487a2e03a6d5f2139ce71186a7247a0018a42a8d4746a1fc40e42fc4449f626e3877dcde1c313c5cde80f3a23d643b64e14237bdc7983d4bd7ae852418313e5207fe8d8ea91189452d0d844f9af3dfeb6b20e34ab8972b99b67efc418e3643251be7b9f36115593f061a2b89563a64974f2eb14058d4b143e4e53ece47037e46b89e2c587b491ac6376597ea0518962de3bf1a98f3be4ddc8064a47070d4a9443676eeeec6132f9593b8972eef03707ebfff19c2a8962d04ffa6131b3c1c7481424f8cdc504ff98e996010d48146e3e667402633ca298ec230fa2c4b0936e724439b33cb647fd12a5c5461453e49289a0bb1273461427837dddcf848eac165148dfc1b8a688e11e9a8a28f4c7b8cae94ff3619a8862efb556787c2ce92522ca8145fa9034c778479b4394d3747590b22ccadb3644b13acc115aa7b39fb94294cb3aec287c62da450240853108510c1ee40e837c1c33761c2ec61844316db43b68968c7afde15e8c218842eee8186bd355c25719285b8c118852a6f21c7298b76be6d2620c40944dda75b2a63a910f31c61fca419e0ef4e347cf114bd2508ce18752c60e3226e918a66db5568cd18752a55a4ebfae8becc701845531061fca1e43d44a842cfa8fb1877287fee1c6ccc9d227581018430f65db9cb483965c95d4e4a1906d7ff722780ea247e3a15075bae9113197e31d8a1b4c3ddfae3df3a576284d2a8ff34a0ed6e4e3ea50fedb1c53af6332c95163d0a1782a91612bf53ff8a800a89b18630e440ebc7e24bdba835a0ea5dda8adbe6b9e3f5971a864377f7c67d5b03a1cca5924b2369fa47afe6fe863f8549943cfd9c60de51ccf9db4e62106cfb44191887332122f33061bca375134553a6cab43c47818630da50f6b7bafcf75f31e35142e3eaa741c567910ec3494f23cd4ba8c28e5371acad5df3b71ff26e638ce50be0f3f6c8c31577b3d6628e7aa65677d781d9a3214c2cadd7ed2f2fb204c86728e7dafceba768e31358c3186b2c57feaa89798e0816818430c658b77cf0d213a0ec40c4379f53ee3e37b6875c0507c893dbd9b63625f28fe771cd8bbd6e720a688f80d6378210fbe7b9b338741acee82496c5bbd3fccfa980b46caf390ad036b59790b7f75faeb3115d7f1b490b5ad5f6466f0b72a0b96e6da6dd3f0416cc282933c7a89b67efb39e40a751cd573baa3931014c6b04231fc4aafa60ff5fab4c0185528c45cd947b5499a9a1d154af541cdc76a6f13d59942396a3c8a6f5be9b7c79042f1324bae7f7e25b48c82338c118592d4446749af1e876bc6804221c7217bf02061af5305c67842c953856a9a6b38099a319c50f80e773d575b6f848a026334a1983efee147ec20c918188309e58d2aa7195cfb23f34b2887ee9cce3d5e4244d80f6328a128162b9de38c6e1d1dc64842d95dd227f16b991cf984100e6320a1d093626d530763d1c7a020628c23943ca7ef9837f3c48bc708e5f06e5f3b8f35c5e7452868c79b225f6f6e5c4b84627447f565d6121c42693fdb658ef2cdc61042c9a367e6e828f1e1a142d4084629a29ac6f8fc30ba2aaa018ca2b47d7ff6dbbd66f78bc2075d8d1e877dc97168a9e18b42d48a709b0e9d73d84107d4e8c5aae3a14ac71ee14210d4e085e61ea4f299bc751705930e7b0d8d1d86759d19a8a18b82d7fc7aec09cfa1baf6811ab92846988d5c599613af415c943ce672798f2dd276c86ea0c62d8abb12836d5eef681db345f9b43de663095779a0462d0a317ca8a756bf21d5b428c68fc3fd0e62aec68e2e8f5914fb34871f6e6cc2f8298b7210cd3d49ce4186747855a0462ccaf9f243583789b559a0062ccad39d43cffc5b3d890151a0c62b0a5fed9e3cded4f0d0b8e09c19105794e73fc7c941e83063b0e800355a51ce32730f67454c7b6545299284c5c7617e936e5651b28f237d093a1df5e4aa284d0e53988a62ba93dafb9ce4e30d2a8a65b113f6c642728a9297c9e47b47fd47b229cae1268d3a123cdc28d4284521e5ba4695cd9ea4e8f36607bf8f1ed27d5090440d354651d8f4718758da92e39b8a0687030ba8218a72469fcec155d4d30a851aa128c721bcc5734c5d963e2868f338a788bfc9cbe36a7ca21c7733c71f439e589af6442186787f7efab023f13a519cfdf6e8d634559dcd89827ce439a8ebd8c39073fe1c0ee46ea2609659fba38ff6d75913e50c921d84d0b1320759268a5b2f1fab47475417a88189428cfa48ffe31205e9207c3cfcc991203dd25aa2a4f5bddd215ef344cb30802b519a90376adaf18d4a89f277fad42b7f1b31395001352651d41c868821ecb5cac7d6904441323cc7cfbc37d5e725a04624ca113671e727f2e6a887c4d23ba122c68f5d663ea2549bed83f38fdf131a21a08623f28969433e29df4a1b519af093f2cf23c5c689566b30a21841656492e678c8b1887257e86e8eb74d9d554431e33b42ab5fa3939b883fccd304d368df210209a9bb3b624223ba894739a87188c269c6ce223b531e046b18a205350a51886b4dbf2f9e6b1d56831065efefbcf3d7a21bed4114f6dbe33c5f766aad09a21c3349d4a81aae26ab1188c2a607fab9f13946eb0c11310cd40044e937748a88dc19faed3f94eebc6e420e31f91bfd50b62c0f35c6c8e155c6abfa50cc7156917bf6c33c5f830f47f5e1266d5cbc7cb4d7d8433907d2715946f9c0cc20d4d043a1834f11e2c79c274c6e3da8918742fadccf39f7d4df63f0504c353777bd0f397cfa831a7728f7a40e74663bb2f98d1d0a26dfe1c23cae8874faa0461d4a9d2a7517f9a3f907d3a16c1da68fb42e3d6a7767063ca8318772e4be1fb22bd4904339887889ba0ea99edaa5428d3894ab3ff09464fb81e59a52a80187e2cc8791cc883ef7e90de5d7e4e183eb78379444534fdfe688d5ecb7a1aca99d26e57558b16d146ab0a19c6c7bf25c7dc2f75e4361dda3ceb1860c39c8ad1a8ada21f78177fcd9b7494339c4eb3874f81e47db9f136aa0a1106f3f5efdec58bbbc63833394eb327cbc7733142c7e353cee9acd884931a14619cae9e5b93466481346e225d420436173e4ce7c496afc3d8662dcd0c821e4351443d926da87f5091ad1a36128de96e728328e4666040c453ff108f9d1273c6dbe509cdd4d8fceb1d587bd50d0903ffe7035b3b9a4bb50dc9a8d164fe51f72560935b8508873591b1e67dbcee5164a2a4147b2834d0b850abf7155adbbff64a11cb3d7d4c7749a22c420a10616ca1fd7679bf9decfbe572884bce6e8e061c80ac593dbd5d431986d67aa50dc760f7ecb630f67d6a3422168cc209e7d3dbd7c369842f927049138f6ff1e52289a9fdac4e97dbe8228149244d6d579c80f99864259dd7237e720eaa70829428d2714b73c48be2a1df137ea84824cbaa67f1cebdb6a4239466696e8146e1d6798508e3ad80f3759c895644b28c7a168d8e7d7138b8e12ca12a35a64f36799d016116a24a13469d7f663d90fd9e39050765ffd70925c07d1264508358e50d20fc5c3c8f6e107fd3042693a7f8a9596b8e12942f9cdcfc5f2b3ef4e2294db638e3204372f8bce104a126c73c8fc70d73c358450524d1a3bce4194441d8cd2fa448f29054661f4346fcebb868aff17856b93931cae3cdced8b92f7c7a4a6393aa4b217c50fe5b35dbe97e68c17855811cb71dbe4f95d1462c40fdc264e109b185d9432e8a43cc9d1ce96b9286fdae022a2593a2eca8194dcd5c9c41e8f5b94463684ee36f31c5e6d8b722acfb87e1f5b6a4e2dca71c79824479f3efa4f8ba2871d3b7507d669fb2c8ab52e979339ce8f6d591422747590bb08ef8845e183cf4ee6f0d39d6151f2d5ede471e039fcc9af2897471c8f3afc4c3eae2bca99a1a3f7d208fd9d5614d2b4bca3498dd10c2b4a5bf2b7ed418e1def55147272837af6f8df4315e5a83a90a86712bfdc541432d5ebbab5ed4c121585381233b7ad5aada7284bd88823a92b739499a25877193b3a12264a5a8a42d29ff1a039cb574b8aa2e42078f4d388d91d45516bb6ef53ec6fa85214e5a0d351048f6c3ff8a128e60fef209383a22c11db417bcee21bff44b93645bef1305856ed8972f8e851dd4cece7193b512ca9ccf8387b87c470a21c24ef38f4a893e3d24d94fc3b3575e8f34e13650d5fb1e9f5731ccf4c14d3dc8e7c9aff28414c1456b3e74c2fd7dadc250aaa295f4e3e435ccb12e5fdc8d9df398a7013ab443966c7b8861c3dc61c942887e81911bea3bcf749948a75a874ad07a44110000080016040281808b7ae0f5394100808860866a1489424591ca9ba032443c1e3e2832122c142e1c080a2c0c08060a08060003078400c060502a03028100c87c7c1663818f31e00e10e10606f06d41b02f54240bd09b07702ec85807b2580de05482f06645cefa81fa857979e44409f960774d502daaf98a01cd338296b760b30fa9c1457af5097ac9275b4bc8cdfe695a8e2e859e375a3377be7540732dab0f3b35c3d07e5cb3450c6e4d8a24ee459b138b4bfe27d7f678ac0466e887849ef2079b98f42b3b766c7e3e5157b4c14e6c4e3f255f521228b19bb5836ef472cdaa092c338bde578867566c601f2d0050e40d9654b02e1b826eabcabeb652a43d96ea66ac1baae299c11182a239dec0d8386e5ec9265255c72b79d8b83023b64cb744a8dc04e14b3342572faffa7c55b35a5dca7aa90075d8262a8152f6a2cdf686b1bb84d988064193f202fc0f00f2632dc4f29c493924ed1adf4aafa92f4af4431f6f38873afca615c8f30b881615a8b6e84fab90bbcb7732edff48203b936e8f63d18375e3ac1b4bacb6b4e798e13da2d2cddd6696f514a292c70bd3b54bfe080e6bf5d834c0e8d4bde5a22019fa8c612af3e3b32e08a0bbca533fa188294b384ee88e391058c30c91f5e436edc3928a352c721502fbebaf0cb91454b397abe3438155048518d094464082bc002a791380d4a881087d66fde1000a03b1e4a1c680ae9fd6c491ea368b90287dd028decb1637a4adb747806045d7073cbca7b3a1f0454b0c062d6a90b2a44dd7ba2ceaeae77858a5144d8b08eb459e795a0c925e0155bcd754ab60c9a89d19bf1b3cd3d958a1c9318a5e51a64af0c434619a6bcb1ea06de1004beffb7813ab17d1a0fba48a6ad866c43aab1105f525d5d794316639413e73ee4e76a3ed420648ad3cbed20c3497886cbe3fb8eaa9f46629310189d65d74e56e6b31961079734f94eb6872c298a4cb0252319594e44c19852ef53dfdc6878d2bd1b888430f1f1ec945978cc667f63509304918145bf2ecdbcdb01054f3e6b892cc447ef47bc3166c5f03be094ef290dd8ef28f5d179c59c9ae2a90f287bf9d2b06179c2316a1d31d829c0016d02f2f86c6dfaa018ac553f2c36bcaf2cdc1fbbeae94371a8cf8be2b54f634b3a185cc1ae90bbe21b064bb98111ef990f49509291041d86306a31966f3966048240b4004e18701589a7d62ea33126c8396754254dec6d87cb04b5b65a6ce18396ccaa6d5bb64692b4c92b5400f7d941afac4a3eeeb13e75410f0a05c1102296bca4397d40dd71902bac88e3a8a6f7ef0e822378c5639c0b20a8bd83321ef6806dfe71dff7a6216142aaf901075ceb2145608152fea2bb6786653372a1816f3b82a35da1819811819c4a2ff888440b88c6393a965979a57d62e0f5b67c7ddc96faab500b85e771949ee2a823b34a42b99eb9a70438918aa4242f99d590be1288552fa467d02ac95248881e925530dd80b9d34487025e518979835dcca90b8cc99291287e528cd7e7f75db023b44c97550afb1a6929652da1e21b150c56dc664a0ccb9ee54eaf5e318611fb151728003753b8f226c6c5e48ac8b33a9209558b43eac90e80418654c9508073ca1a535e39e128b0894d3209896c80e6c1e7e4399c0276f79796c3c5ef6c8138ab754707ecd2131c29ad52907c85aa8455662dac87604eed439e0222c359d84312529048a2ebe85116730bb96ee1b257387dc0358bdb9000157fc438afbda32398cf5bdae4c385dd5d5bb386577b5fe6d01ae2090554b792233b010228e3ed4a22d5d8d74688ebbb25ca08a51d671bc2e9b30a06846640bf4f9ba290a284c455989808a661ed556768f1008d23a4020f229f668b65b53681d3c9cb020136f86fde45a11fd213922bc16eaf500c6a13a780787d2b444b50756ae797190d1d9e4dd4e766d228ebecc0470f6899e85846e2a201723de31978c1b73659c95ff0059ab359e678127c3126a995656711360119bcb3d3636f673ca2076f41e36291bfc64d66f3941fd240b8684f44d75cf98b4f0cddbf16975d61dbf3fd93c9971d1167b0100f775a8f2f37ecf206f17d2884d83cda2ce9bf2416817c77688417ff9f4c6228f8c59218c9699cdd47156d2473b2734a756ddf9aab6b687c0d8e641b9a5a53f9587e2c3307ec84b4686ae69498301793290189980007bdcbb42eb60821a2b030e5ac6a7a03a1208f523e8c7cf6632f4398ecec41113ba4627a1331a0c6f362b45d569859c72351485b922e428198984216c104c29ff50e6d7d41d45d8c1581874da8380b707ea4fae8e08933059a297750eebd55bed3228d4f73d13a55e2345b522c15d7e7119a700a4e8d52f57414255c5de8b9d97566a761521d5460dd4dc1a28cf582f63b73d07ad5eb34e6a098ea6ea7a4d5e934ea76dea6985cca2323fa5c928aa406e9274a72bad34d69009ab186a2baa770ba9dd2a19e736f5a9176a4654517229c5514c7637d0ca6159c3116178abad1a3522690720d8e09833c093ac311d8c0e252403bd9141f7e9d3c012684d1e21e1b82920129f0083281955725fe88b8c92f0946a35d86912b30ec9a18a45843d0ea008a035cb14891a22a1cb66dbde500a148afd387d0be3f312269ce18b62bb0bc6798017fa4a5d88437d2ad007503fd4d60aaa41195e1d60d209980ceeb9738a9ee062283d7160e7167496fdb4868f722e86d91b18c82848da4c7a8506267e03e6c59b117ad9795793960c46e07ee560ee2557cb7d85e57a9d96e185e25f64edd4cd92603bb98c5c24d4c32a27f9d65a39e707afd431ad64b55f3e5f9c145da082ab057d96d2f1b4dde2a3891352145515a0e00b4b47d026ae5783cce72434edc2070645d24fa7fb6db68f9a9c10892a0dac2c132c9952207f92f1cebed1d8e49873ac6c9740ce3b2836bad4f31773a01d1e88d1d634a3facd39188c80e26c26aadea0415f7f7ce129644e7abe8ec4012108d056b73fe639c7566a965296e5f18d560a2cf9657539132861a922bcadbaffd9381137c845812f12c54e7b49b7cdedd139794bf0417c015aedeefc2dc8b54ca92ced4bb0f8362e669dc7b20d226339c991ceb33a35359a6a2501e1121187af75d6b16496a2b2c31b780359ab905314e1f6fb4cbb96b4f5d6807d496fdc381eedfbdb63fdb88c09c288d39230c8c93389a77c8ed559c39bdeaed532f2049444b15b28e6d2aa326756732d419f129c1aecbad4bb7279c297d9f69ec8e100dd1b29f1523442e7430aae97bc379f846f81a7015db3d890e708136bd29d646f14924e2eebbdea2fdc2ad9e4c150cc234894d58b47f5cdb6e39deaeaced606d5ca468100d8625450e241cceb31bbafb496b2dd46dae93d98f72d248bc7f72df4871fd91e5d8cb3b715aca3253e5bd18a9849b4a2c80b7ba1b2f4a043723e6f738fc5f204c017e785ad8e2930f3926e17c654015dc554a57c43dd1de620d37fc722120d199d739e421d4ac488086272ca206b7472fc73ec4d615f59f2027713c63a94886ad2506bcf1be399f108e4178219f08255585cfd93a9848b2326e89d2a734d32a8a9345f784664201b7c0e9d6097e523016246da064e5b183f2f71315f1828a096b85e805771947b700a55e4a1a5ee1e054d6a9845cf3ca4660dfda92ab366e505660766575e87644cbeaf669d2f4b87a1b59b90b0616cfbc3cb60408d786531528a3921d6af78d5d6673cfd18465f0c732fe515a7c36c28892fe495ec6c2b2e6b8c018a7e254354b399b489bbbe6c98629fe81efa184b66ba62929c11a40367a852b7210b61a80702647a8b3b9fc580fe31d44530f63ab2aa81471fc96aa4a64441bf899e3ad969248ef6462f198362c04619c8b742841b8aa113bbcdc996d04646da1cdf39de15a28da6a6ca40c9ea141193970a83c4a6f820daa89c912b42c7096e109f7cfa3f849abc8508840ccc1489e917b652c2ca64d86125b69c3285d78df1cb07ae02a9a223a268d8225b729a97085edb9959ac621a3632bb39d03e8acc619f73e8db9518089b938104e8de1a0eb6fea5aaa3a82180e1b61c02d3ed4022ac300153acf9dacc52dc919fca5a0f3eb00281a59207cf15f34183f4922d1376e94a1659b646280e589dcddefe364f68364d277437be29ae3e4007aecb5d1df58b24539ecc7f9309f69436d86026ef9d7565d00be84c5e8c16aa61e00bffbe3d6f821c09650b188a86578bd1f03be90e6ea638a82ea7edfcccd0d86ff177c0a30179498264b8abb7de94ade8c2cf777122d6239d818a66646d066cbdd33bbb3c7d813c53b8469d16d4858e8784773e6fce2a517bfa0f8bab3274738c044119974b8f49ad8d56cd4787f500ebc7d7b14cd275bfcec28ad2dc48cfd813717ca3529199d2cd67b899f518c9a5cb805aca2c89acf8313beb73dfd18cfe37b84d08c6cf8725211679cab33d5902b4cb3fb08819c5d89015d7bb6976049a1c4fe0f01fb2f92681b21beeca27956e1549fe61d846f46926b888c4af8d015352f828ab321cf52321106c828720a61649f5bcc3d471eec0d665d9ea0eb4da6443fb6a57a02461a876c8482b5a2f6dc021a540b8e5a55b4b9b535d4180d215004ef33518fd227af0661ff600cf013e24f53da22c5dec7ab61cd62c5a0def644e71f46b58f3ccb51c4f55992e004d444ea04fd12e6710461254b3862e33bff2964fb99a73ede750814ab457cdf91b952d652c60be4b18591e1e730a408076f729520d727d85293db16c475db2cf36dd26d33d3ecc3da0165a16d3d7ae57e2cdf2fbb2de1ffcfe4465ab61a2dcb279d4355fbcce9b6058d897903a51fad371b2f14d3540451aa052e374fbacf0f46fa7a577dc6ca912d584055eea7cd62c7bde9b373615cf1961c67701e1463a936b219498020ca303aa57e241f8d7c9475381ac8c85acfb99e8bd50dd56abe3e7f015e371876561a357571c04b7417d2802425d00ecf52ff3cab7b7ae20f35e0c579ef06547700e8ae86707dbae0af6417a81b83b49d2007854e2873f04d4d0ddd7e72b7513bec2f27c7c2d8f89232b99f7d6d59d247cf87c94cd32a21e4694c6b6a684aad9782698071e98bb22c16450c987c93c0322bed3d82c114590ed639c579f064c8a8c95b06eea1c81af475f567e297eefa6e9efe6ddc86e8c57b3150801e934d6cb1197da5023c40bbf735e82036a75daaf235bb29c3e3c4dde28174ef382581e34deed6a75d5484dfea36d637bb9b3c03a9c2fd46f5d8eda9d011994ce3d39b472409b2740febf70a267332ecba678f22a730254e95f50c72a23c8ea4761fd431c67e97ee3b2a002749e32f9e08273b4f49dde2049ec2bbe9d5330c1aba7c476474984add540e2a15a492c9550a2c056a3ec578ec0fe1fafb4e99000fbb85489745c03562898ac62a471bd70f7a3a9573c68898515807b6e8e5a7db9bc70ca0829ec88c921fcb3f371121158165bc48cf65ad64279e905f3009b6ad79f6ffbd011e2d3b919e456212fe8b620d54f89b4d63efd8fff019e203ba988c62152b40715dc496861d9f49bd83b8a98434ec5e43f23b4001e2d35815468b582d93dc5dab7cf1f7a94c3350d973f4bafad0d2420b81efdad83b598eae0d342808bfe0732d969c2e7a0e86b30fbdcbc59426f02d686e2f02ed1d3393f61e25ce464a7a514ac47959bb311939628b71abd5aa01de1df57f9089ee004e3ddb11bb61e865f3d62e077af775711c1e829069a5d94183a3cd8eb0eb3b3aab8a3424a009fad803365c4bf318d68cfda81b5f9baea0ab836b27527d1c91ef8f73ed16a645c75cc75004a9bd5e69c2eb2e081ac329b29e37f919ddc962fc4b038ba8f5cc2cf76072d3b523b36bb82a09984b78989e89498efdb3a4288806b41c2ff8dd56461f63659a18c1aa44c87be5e59c02b80a4d098ef709e72883c873de52583173b0865c493a40b8163cb45c15a57d494b997c103779d62e2ec0bc477bac73f1fef84b836b8e9e7282ec778aed95b12d11b879d33a73533ccb63e069a40cc67c304435074b0534cbba27b5e01eb05a5342ed365be8d84cd53bdd77b73b21863c88ce2b345b392fdad0e6faad0f71911cfb883d86ded70dee251b3e8482c3cf72c97c183c51267feb5f99161ceb04172730feb6bbe9370248b68d9b26408895d14b1bf3567f05c2ace24642f53292dae257c15f26f45174f0009af91cab282a4b718c62720afd608548e7fdf37eb0db0952cd2313bc2cbca1e0038153540812c9b9424c10f32affb85a00867b80726a376ce598a2416c716bc0fcb6afcc8260d3ffc6491cbb6e66459d4cbc8ca1290f72424d95a655f2afa4c862974a4b66641495ecff12ab3e0eb7a0c8788dc5a496fd94cdbf4fccd9256ab00fefd8cf0fd918282841a8c811a2cde3e312f81dde3c7996c7f8cc166e16e8e11920bae8381440dcf829ebea4c7e19ca14813fe1590bcea9a5fd24a7087a5d24389abcbaeb438a05775ccc32268e01a0e088fe28ad073f748a43d8e525ecd178ac6962bba3755a7d826d2032422032133ecc65a9838048a393a00b749a99121b8af20ab1a7d7a0049a4607f9a1f9304dfa46e6a709c700e5858b0ad98bda8237cfe2070c09526959161623fc1cfffe27f9ec44032825fa2a1962aa6e38acb2a640393162704ab44e6f45bed05ea41b87cf5c1b16d76ac8d91049e62f6704f211284ae8aca03d040ede65d95c6266b5be928dca15aa7084d5434a58dd18905fd4c8b543356304698b3ab242f699a24d74153f12ba46fcb7615fc0495678a331c22c519439dc4a6566991f0d7eca96371086f07051adb2d5040463a8e82eb09c27df3a0eab11d4affe2f5a3edb5b7d51c6d09e497e7281c495e188097ca12b83beb10d32ed6b368cb741af4c20016ab0287d7008c9491e122729ba486ab920e17424864359cbadc4cc5ae4002ff5887c87eda0812007022967b90555a192be7a416caaf7a02d15b60f23217ecfdafa563fbc8bf8f4ded62862edccc36d8e40c75f6c50115837b6063dc397629e52eda0bc369571ae4bde9a65f990f83546275c3489a4be1526fd40810b05a43462d733de29b3202586a8f078f74bae1c27ab0a869052915f5f6669d42de52ff19549e40c8dea7b468e3f016f6d57e1e23abd50c675ab77c071c3dbf8c5c49ea013be60a42f9e0b979e03e77f896e172c109bc1b60502a71d2eb2a4fafa9b552b9280fd830915b15017393cf9bf51045c6d257ee19c173813e22b24c794ff0998fddacd438251b6704dab756863907e852eca5c8b20806e1ee2df81a1cc832d2ced30bdf54d8c1cfc470fcb24c57ab733fe3ecfb88cddc406e31d378c613b61b994455d9a4aaf977f1fb7ae1eed74c253ec677cc5a5e9b8d62e347405ee9f80ecff1373b2514f8317b1815cc1bf49ecf6a7681abb914cc33a211beec50bc37fe430b5d4c2720b96b62c96d85dc21761d890a61f78a003aeee808171196b3371e9a93780355e157c7d6eedf3316abe60e051448698f2afcd2c22ed0445046143d9c89703f0f6964044ffa3979b1cd04b7aaef3e33a85d277bc850f48173f635d6bd6ebd6db810ea390083809681862532a60709c88ef5ff598719866572369258738ea04a6b4eba06c048399cea2f631186e6a774cd0cae2b3e6be914108bb43f2866c083191caf84cdba39594a4f8a05095e2be0a51e76e10ee4e68454b8594255a662a72837460086ef58eb0c8ead086ac4fbc01e1a902594976c8618b65ea31dbc370632403e2f532d67c0440ab825e85da78fe723114925d8126caf20578adfac2bb15773e57cd29df511143dd0fb7d18420969107e1b10afa61c3052e16e38482eb7f9db25b2cf5605fd4976aaca3eab82843b44bc7a3d4fdfb612646996ff28294235fa40a3953b29e2473a26c3493c8a2d2d9542c1f988a36ae42ef1d0e4d0a2c32b7a2aa0d0366e566f1bc2016430d58355b31764ba55bbdec4ecd76d686c84b4186296a2d2e9154fa8717dfb631afa6ec9f5311b9fc6f8843361c77fe3370c58f4245ba5d99266917a329511fb4dbcbd592cf79cd11be9fa6e88c2ba762ff65935866bc6c343135e041672ca4793463b4d8ec3faab0fe3e69661fa218799458d41cb0d66781cb4eeae6bc364b261d89d85c175302ce2f554d9b73151cb255517249da2053431be20c417252938b7618100c6532d7249a7b29194eca3b6917190b1a0717e928d3c24f81c31f73f65e82a1a847422237f6c840bc5f88d38a59fd02251741c33acff35a933f7d47cd3608a5030a22b96d5db4387ea1d3f6d5f5af8047baeb279bcc7ae264f0c8a847c882aa563657fa367e9a90ea2261ab7f4422782344c70c0201efc680d0cb52e6669512af055874d7198645c392f0dbfdeea3e020d1f28e4a945784fd34d47105d21c6891e16d3a18d442b1259e4f0392e9fc1eb652c61c3968dce69baf2c0269ad949c67cd439ab9c978ee41270c6ce1d2f27dce345d13ec4fa73f1b502de445e7bdecc5a70abdec56160f2bd9a52cc0994153ae11ee614c72c7d90952d38ade2f346e388d7432aaf75973e1534a174c3f300c21540cc844f5a43ed3fb6a2c0a799827355ab2a91bb9528d29c1a892ac90d0c88cdd4217c8f7c58239883f6a6c2fa643f1db76dc48e7198cbba2b548710812cced2562c0d49bf8e92868a6c38fb0f4bb689da7af800914556524bbbf95aeaf64679c500e5b457481eea59f57ba7fc2e9306e17a596d00a6d6bd95f2785451b30ae22179927fd2964c7e37b17f8f295b164a8316fe48471d0385ba4b6080c76643867bc7a23abdd1706291363d0f835be4ea1f9e90e2311c983d57d3c7ce066b8afa8e5429df0ca4b4f77d1e2d93c35ae45d7337a76559777b479994a76f5d02f982501f320521339030b051105629df447ac0c6dd0e5ca2c730aad4d5ee3a6d52f8b89c75e0468c56f20bb8f1a982babb60520323cd28d83657c412cefde0a574adecfe853eb24ca0e3e6d2517f27ff29f83b466f90cb5879271438cb72c50a70f708cde2d5245c3d5c4ccbc049ee9705bc583e5177887869090a2d3acef8a52e2bf27a015a2619ec46eafa2eebb2ad087f0dbe2da4293b0f45913d1cc77ba2fe0660b983f5ca0fab221bbc30bde802869b34424008388d468e0baede84231cae58b38b428fbeb8301269f3d0b4d7a7bcf09120131d191bf39511d06e875213ae961da9f23b90d58b5925306bdd2ad323259a0510165808ed479052413d2f86b7e9ff853aa3c949844b60e3811a260e1733627465723baa8037b97b5aea541b7663e93804150e5b80087502b7f4d8bb52a021a1ba7726875e853f0c5c9038d456673bec5a9df686888e2a20a0f7f11afb8d36b70cf860d3ca874c0538f768e83c5aa5264be99ef40624ba80088a69c7a06eac510b1ae90491a2f1a8531ffb4db1422a99d0830938e7d5fdf4026a0094a6116ccc7875d5e2718338bf2c1866e9c3633896aabf45a65cae0deb433af62ce6a292032336bce11e045e897a039050e7211e160149f550cf83de4f84dccfed839d842430778b02f71c67e0e7854643fb34bb40a20611067b2dcb3ba35c7e85ee52c152aeccc988c1286f996a88ad1d48435ec6116262757fc57e8a8970da32e37295e1bf956af578eb4944878fb6346607d35162daf93459a809953e5892e1baf8902423f0e0002c405782e73f2df7ea952f920e10f67988667f9d9682695c6a65bf9d49d6aeaa16e5695dc26c612c2ac26206df5fc32c073f164184e32b7c19c8c2b31cf3a27623e2cabcef8b3d5b42d0d4d139b8b389952823c094e6eb314f52c75cf2113a3843977ce90d9dc94648b93a8b3e14437c3a68aba9f9161824785fc63e7d04835c94672cfdd5bd80fc22ab42be08c418ae4ae4a19ac030b280f187468965560d991f14382f0e504d8f12efd99e299a9fd67b44044f3b2655d3d8d3110ee4944f9fe4cf3335f869df5fac56ec0c2838d9daa5e49f7993803f7d77c955053fd506cb4c9487c9da717186ef66772146ff3d1609deaad7b2a51fb458e6875f238c59d1f6e5e0f0b07f2fb6d61dcb90fef8bdf22b0954f8b98d6ad48499813dd8ba888328d77438ae49cc03b230bb5e837793987c07dfe3805c666a28a5639c2891a6c7a92f14647f95e5b8b71a263161c8633eda346682abc99410dfeeb4640bc6240facd0925c9855f809de18273104ac212b63ba58998a3aca408678d1495b39b5614ab1d7ad55a97dfae96a9eda132cb25d5fc5ddbc65eb5cb39dbe3d4dc0af86299317c3f75851b6b987abad5feb81b60345fccfb9422393c7c9f035bcf5126c62b953c38ab553c40da4e58e65bdc738b7c1585bf468eff619ae527c0b7d4a4b53c2ac05115c9774081ef54a33e3f854e4be0391058f5e691904e254a75ca058cb701eaa8278f3280b2a47203c3300cc3300cc3300cc330d4d2823bb222fa5b022d314cb9e56e57ca8a481f8761ba77da864d124af59fc401370509a208ed084b870ccc2347087d3382e610cd96b7d52034bb307e9f8176398804a1d665f029c4f9bd9581d073b0f81ff7b5cf8380d0d2841919cdaff9903fe8d59b7f51d7e1e107b22f9778ccfbf81bd407dddbdc249b55bb3cb0e0030e63e548d299427234e7241326671c167b50a62ce287540eea42c4420f5a9cca1b770b39f21848c0220f4a4897c4c38eeca397a42a6081073daf51c7c3c9aa6ce01dd4065fb915737a3cb11c606107f54be26916fbd422d741af9e94267fbe0ed18e0e6ac877f98367cda0f632072d36cfa4f1b90fdb8d1cf4b91829a77c52441f07756267576ec7b03c3b70d02b4fe6d0109a0db078839e1f9fc9cc778e19a5042cdca07b369b0cb6a2243439480758b4419b1f978ca4626c902110b060c31ad49006349cc10c6520c318c41006307cc10b5de0c216b490052c5cc10a55a0c214a41005283cc1094d60c212949004241cc1084520c21084804510740c623283906346b12651c002089a6db8834baf1117992360f103258754facef2be2f72010b1fa8915a7ae7bc5389ccf8052c7aa0370a918cf12e934ecf03edb3e3abb342f5ce6607fa3caeb80cb772483aea402f4b66bac941bcc6490ed4f06e66d67d561d8203257efc53ecfcecbdb0b8811a8d36866421c88689850d94dee01f42b8d439fe35d0f1ce4ce6a461c62c87064a5bc619f3c6b493c567a0c8c96e96dbcaaa8a0c349be8d679e05e8fda18281d3a6bfa0b1e9e718181a61169e7938798b7b417281b39cf2ec8fe855d58b840bffa30235631993b462bb43d871937ff4a3a7558a1e7b38a6311633ecf9855289aef4268a431643d5215ba4f8e3e08733e32dd0052a1a51c62842faf984785d6bb396b83f82d139653e8eff77631e58f69433685ee96aaf2ed96c54cf15268b13be32f72ece4129342fdfcd320c5de77bb76148a77aab649a9518ecc07200ae562643ccfe13983cc8442e99c1e6e37da24f601858e2b34fae41ee3d7f213fabca5871143f7b8c5137a083969fac8316c7e904e68f2a1faf7427e7fc6092564464c67749a5136a17f0ee9838e994908d10b06a0091dc3a4a71f2c2f3e8704a50503c884fa11e98185dfb00dc684125c62eaec6ff6a9720935db537bcce6d982f596d0f2a386ef592248fd95502ecba5903bdbbbde945024b32cc4b69827cf49e8edde313b8cfc97882494b0f14397ee68c62f12eaee8b95d4e370d23890d07a6267c9c96332ff1fa14706f6e93d4e6cca1da186eee9c5afccd14d237474296387f9298ccf08c5dae3a7730c7331b60825472e2f091d7964724528e9372ec72f99459f083d95447874bb113788d0b7333ea378afd799436829e60c39e7d9e02868081d6eaef37b4921f48dd72f0bf20f3a4508ad6d1efd874c610dea41e8e835f84eee2f085d3a3d4adb207c9b81d0f3d3c7fb90e91df780d03dc545369d4e0dfe83f6f37043b764ebadfda0c4bc31e413cbf441dfd4391ee6341f77e283a2e7c8348530571983f7a04efd7b3c8d7c90397ad073b61c373c23cdfbe641bbdbb1b09d318e23785023d2785dc8f80e3a88e93aa77dcd34d5da4109bb371f6f4d1d143fed8bd738df980e3aca1cca4f82cb9f3d072dc94c8eec8d42c4e5a0e6938a6a93ecf2c541bff0783633550edbc241d3bc3e93d019779b37e829e26f277f9aa4b9e2061d4b2a479be3a512b90d3a4659f10dc65a36a8198dc3c791c67adf1a944a63e7a0a75483d67ee64042a62ce4d3a0946e2ecfeaa0414bf39a6f3eff7c06edb22e525bb0efcca0d94f230f95fbd3d9322833e348672f6dcc48066dbb3f5cc4710bfb8d41cf58dbb26ccc1b8a41bf061f743ac6101f1f062d46e524d16d1efb0683dac8e15f67948345f60b3a6ebf7b2029650a1a2f28e176a4bc35759a4b1734b7ac8929c55caa930b9a47be35ccb86f9e2da8bb1171b6368cb747b4a0f5a6d711b70b27b9cb822e39638c273d8ff1c6820ee2f762e514226df60afa5b4baeb61b4fb962053d0407d719a38d4c21ab8272413fac42c8bb9a0a7a4617d3d8e79c1729350525d25cd6b35c55b54b41c7ba9353f71d053d6e85448cc1632f040a4ad08893bb9ff3851c3d4187bd2d152b85e6dd098aa50d12ce7e2b66bd094ae770f93853295b9609ba6520f1528e768c9b2528299b6c9c8bd394a0f944a6ee14f2f23fc60092a045e5f893ed1d096a8c0c22e664a16257630047c0774426a71c3482629a2dd3f6054f3f9e227841ffb2eb89a6142d11b4e9972aedaa0ca1f8e171efbc7363c40841a970fd30cdbe7f252b08f966b314a2eabf530404bd3eba2fe5fcf0f1877ec05ec924b10827bda30f343b39495b1a1ce65c4a7a506807e1528a3c92b51a000f7418e4e73e6e25cbadef4091b020916d6b37c5880e340f71e21df9201a9939d0d36cc6ec68bdff6e0038d02eaa4ff2cec52b18c00d947b6fd16ded142357468301d8407f983d3782668f786ba065781aca2eff3d6f4c07064003dd2f62be90726c0033d8c00064403e8018a837bae97c772e4c4e81817e77296498dd62ce0de301bc606caea769828201b8e06039375fd08ee009ae688576e1d95290da48ed322b9414ec61e67c2cfdc0b30add32caf69a73d00dcb401995f12b54a106b9889696e89338af48853651a50fe481a8502e9dcbdb3daad84972c529d4dc37ff235ed5e6c022832b4ca1eb04ebccfc3136d39b31b8a214a428b3d848878c514a7bde284e36deb1bd36c3c830bb4214c58c25c7f4c0663c662414973cf810c7732165cc81a2d05a3bb1b37f5c8509b2e08a4f9c264abbc3155ce1090b5cd189ba821375c5263e708526ea8a4c8ce197c69b189d937ae3812b307109255c4a736f652ff2d8b384e630a243d3d6c5ec8a4a40e08a075c3109125c210932400fae88840e5e2cc7e4143edb3f2494cb417359e4ea9c3d3f4273af0c2116ad23d4101c48654bfda0c3a4115a69cc7d1a2bcb9d7d8cd0510a0f2a37756aa0db158b50241ef46e6a181dfb158a5043d5b9557d85d8f81c2628354c507bb82211ba7fcaefa353a5bbf98072e10a44e82799a51b4c0af21772083d258fb126ba1cb4a70ca1a31cc25212f1c6d71959b8a2107a6c9029864bc4da7021846e197de5cc77fa581f849a7fccddef7bc3a705a1cde4f9ce3e8cc848064249f231e7de89f1c24300a179670a9a2a1b9b34aa884af1e08a3f685fd2b87192cbf61eaef083d6388289e87eede5bb0ffa8ce5bedc8dc6e32e3e2869fc32f0201bffc15c82efc75c2336eddf15d40889952ff56e06e9b4829a734a21c95964a09d57410d12da51234fd25141e971df2dc76dad6d4d418d9c14e64f331ee74e0a9ac5b11dc9ea19c79228e878b6e36488e1730f0525a5a9bc6ebf473d4107a2392eeec0ad7c72829e2b235d280d8913ec26a81bf3b822f2c79df299a0856e989819d9d9dd2d41cf49b3dd2cdb51c4871294e45f7a394f6f57d649506362249954a92c790612d4f06c8de49ae6d27647504fc2ecc5edc9a18d6204c52f277a2b9c85ff6c1134737997cb9826827219564ee589a9f1cf43d02c37b37ece398cd929043559758c8a06f621c683a08e378ce3a82f85dc050082ee1eb649e34f4ad917e0074a4b768e1d8d629bc63ed0af36a47864294758ae078ac3ecb0319d51ceeaf0404ba1a7d1298de7936b073a0a19a3ef8f771436a203257e63e5fd64b893650ef4882f9d31824e08edc1818e47bfc3e58bf6c976033dd64e59e30b9bc5331be8911bb5ce5b54679b0b5003fd66f66c521ecfb9200db48c88b03187c65ae698813aeee9ff733f6c8727031d45fedd4cfd92e2c51828d29233908b7bd53ac140f92e97c67e778f176819c784b9145e7fde2b800b146978febe1fd3e3f75ba1d54bb5ff8f67fc9db0620c62666f98a9526515da487e5dee88ae60b72ad4fdf26c9672cc30bf940a4d927ea8abb871f429a850cfe2ee23891566e43e85122ca5902fa6ed754e53e8d1c12bbb8730b71d520a2d23695de50c373ae79042cf679741c7a4703d7b146af0c93a8d82e3b33d45a17e9e33d3f04b992e120ac546436ccc70bec4c1a0d06267c6654ed9ab41e4133ac6db1b247249efcb9e50dc62b3ffe64f27748b51b539794e6856959d33cc96bb6c6d428d8f31b476848489594d282d59a19b2d84dd8a6442dbbc95b53de65c61427f1036744a319ae2a62fa1c4832cfff83137bc892594ded466152f32530935f466cf9562d5bb9b9450633df24ce218f66b38093dff7c90f0ee493ee89250b3cce3fbf6e46c5822a1444b5f7c6455d1f08584fe28653c6fd3acfbf2115ac6e51c636bb664d871848ee1c6fd0cef51081236424ba53121cbcae3c70c23146dcb1a41cc65be3b8bd0bbaad283f7b00fdf2b42cd220e53d23466d25a2294346339e425670ee920424b9a63889f377cdab20ea16377d0b6214ea50ecd108a5666dcedf4295b5f08cddcf22237e6f028d584d0828b56cb64ced52165104ad871547593f2c5941184ba591c6cf8daf90cc240e8d16127fc2beee41c0242f786f127db6d8af60f5ad8c86e5ec38cf783f2113b6dccb8a92ca3faa0866411823dac7c76121fb4c68d53c6a76f9613da8396531a494f3384a4500f7a307389bbcbbf61cc3c6819d6e58c528765b83f1ef44aff9183a5cd294abe836eb973dab6abdf928d1d34b39bc8de8ce3a5adeaa067acb7a71f423a2831269fcf2e19196698392839568dc5e9cc8d6a39e8a8817c88080d3164c4419149979193c414cf2b38e89233e9a772c590ae7d83d695f1a5b029db39f0dda06c86a1379195a72da50dcaa5549b1946e3ab98d8a0046990c51c5d5ea39035284983cf477cad062d6cec76995026d75e1af4cfb28c319503c99aa041ad288d998abbcfd838837662972f9bc126f9b8199448a3b17d93a66a5029839e619ba3bc2fdbfa0919f40699212274e68c1c36063d46e2db74ca15f9423168f9fe829e6b9c700b8541bb4e39527d67c9e61f30a8d9c64d73bea08710fa5f4ba41d66e905653cf5a7cf0cef636b5dd032c865ff6e7b9ea4c1053de855c56b789539db825a3b926aea71ac1c335ad03c226ce5c859333a3b0b6a349214e2a6cdeb96b1a057bb69ba7f8c7c3ce50a7abc67d2d83476f9772b68fede65c135c68fd55541b710637eed8fd393472a2821bf72740cd719f21494e8bc9071c1764cf2525023446d3892f1cfdfa2a0a7ecbb79171ce79842a0a06e0c291a4de5987c3e4f50dcba61c4ccb0d2db09ca3dce18fbb5fde7ce9ba05c6ee9f4e06ca7f665829a6a1a24f3cd6021624b5053a6f461e3999ea65a095afea73ddb8ead9f9204ad2fe50e2515228dc52041eba80bf248343d36f1086aa5880615a75ab365047d33d6647190b62e4b45502a77b7a7aabff1d42082fe19f3b74f7264de0f419d6e34923c47cedc1d21e89aec265d0663e79931020204419d1833a4e63285970d045daf1a7e774afeb9ba1f6831ee73cc72f0e38ef581f61fd9e3ce656ceff640afb47727217d6a1c363cd063f79584cfdf9766074ab6a394ad363ca31275a085ebb43e96ec39a64b0ef48db30d6722b471cce3409d3e9d7831d8bd3f6ea0a53acd717269f57fc4066a8dede7b39033a1628440801ae81972d020deb5757da181621f6397b7e9e7949f19e81b4ee2478acb787197819283e5efee880ec740a99822a40cba2d242c30503c3abebca7766f3c03015ea0c58df9d26321800bf4dcdf21b9a5b9446a030316add04af3a7c741343be83c61851e3cc7af14335492101aa155ec30fccd6736578ceac8a9429b5c215c7cc47b341582452af4f9729c2c629f65d658a042cf166a24fb668e4c29a253e8213daeebe9eed7a09f31859e3723a79a18d9a4aa83b4002c4aa175a5d67007d5174ecf0116a4d0bdcbcabcef53cc481ec606588c429df0a8fe6dc6e3666b808528f40cc79327f41ef64f0a0eb0088512194845a7542974642c40a1fff475c62b0444c0e2137a689434dacf7f4a7b4f68e61d4a43fe77d3ca3aa1ec84fd0659de93e61427944e316d23cfa02dc509042c36a1449cde9cb951678dd7846eb3ad91e122b1b199d02fc3c8c61074673b4c287913c6536c58ddd2b984d2306576d2d1186b2da1c994c4d8c7b9f26f5e09fdff62f95b87aa146a4ae8d9a257351abbf1f22414e97f8f976056912309e5d365b021e37bbc7323a1cc5846694adaee5848288e63ec6f65c891c64768fe5d197c4e773963c6115a869f95693aa7f94b6984de285e7687f1c86184da2947dcf88b86105f84fa8fab33c89e6446938a503a6efaefdd0b31950129609108cd3be4f08d7425a18308dd518490f7bc3587cc2174cdfd7931bf6fd1a121342dc9cab3473d16430aa1c5cc080649b85885e29ace3cfb37872435122e54a19d63344182c3a4428b3d653795213ee7ee0a17a850ff43f27dcca8610c122a5c9c42fbf060b1bdfe805ae1c2145a059b88e1e7d96cbe5228135a34ce727edb86149af8585d7ec5143656a3d093c31c7ede952be5690a17a2d0eeedb4e2ae7b721643a1231f333197b18f880185321947fa4edee68bc0c52774df8e49b4628e45cf37860b4f28e136e9771e3ba174c9c33c9b7149aa94a38127b8e0843229b44ebb5eee07c9acc2c526d4b0e9f1b97fca89b4d1842e39c3bb54467b1759d5172e32a1bd07f3cb709511f98309ed370433917ecd8e312ea1e5df5cd5e82c56ce4133840b4b2817fbea3a4b4cee4b847051091d45c6601bbb6337fb29a1db7faab2b35067ad49e16212ca7ea38f15921e66b447e14212ea564ce1ce622ec77c94132e22a1564d9ecb15ef72ee030a850b48a89b913ece7b95c127ef116a83dbce3d6256ed188e5043f353de944a6378632f1aa1e4df98734aef37a13323749ca22f52f96bcc487cc0c522146b90bd1f2644a68689e042117a783b76cf9df563a4a8ba7091084d441b671091347d06044e20b84084feb131b61c11c206d30cba380419c0051786d0c3e3ad1c2e9875ce6121b44a5d7e61b51731440e1784a88b41d4852034fdb2149ab572fe074920f47d142cf87e54d08c0342cbb6310dcc5a3ad778f107085cf8812c70d107358d648eb719c3d0b764808c0a177c5063868b874d0ebf8fed41092119a6789bc8e841d76017dbe173f2233d0f9a7cc63967fcd8624c8c07651e04d7acf00e5a9b84c59035e463caeca07568501342ae3aa8d92d030d194b74d2241dd43cb239f22c67f4a9f5c1c51c34f188e4b2df599e9192830b39e819f25bfc8721bcc41307254d08314a42a6ec8e8683a28f228d7908f563c10c5cbc41cbfd6833e4deb80dbbc0851bb4af1cbcf7d1e392ca698316596f5ac37ec898436cd0913bbec6a221153c1078d1c0c51ab4cb51217b68999801ac145ca8410b9ddffb6f37f4691eb848831e72e3fc8db1c62c1b2b3428f126c7a6d6ef541d3c83f6ee12c35408d1f9a00d5c9841f7d3dde8ef8fd8f9802ee1a20cca7e6690410a913fbd4c06356c0cdb20a2db916fc6a0566948e6b155e9dd13838e2327e396c9d871a5907011065dfe61856309eb8f3c18b4cb0d8246854b29fd9b3fb8f882529d31a68c330c162fe8212406c9107c2cb7ee82163692ed5fe7efe5ed03da840b2e286d9d63f64d23658ed9c28516941019cef9a64b6946045c6441914f1b34e40b8f617b327081053d23c96e607641de240a5c5c41694f327b8dcc410eb9b08276379df1cdccd24fd7808b2a282196e3b7ac556fd1c00515349f72c99491cb2786982c5c4c41cdbf387f0eef722ab890823ad262216d7d8d9f77828b28e81e636a9dcb15fa2249820b28dcc513d47e94735dacb096c7851394cbe69d796e0e2a135c3481779c3388f1f5329d0738ba60c25795517647c13196a07d4a2ff2121df3f2721fb8508292dd161fb46a93041d997de4ff209ddd9b0e5c2041dd8cdfc927c6f1cfdba00d5c1c419139b1b0780e747723689a3f875fb6e463dd174149f2d11f3c48c389a0b6f5e5f3d8cc60f31d823ef1b971d8d88cc36384a04bd61466a2d1fa7a0641edb398ed1f245945454a7001041de34dd1f036344c59f203ed73687adf2c3af16cac315cf840edce2e1a7244903d7ba0866c795933def68dc703258c3ec6f8336cc9e11da893f35cb81cbe71a7c601fcf8215700f0c2850e34f148d65ff133ed2939501a87dd9441c385e0b00b1ce8ba1d6248eef9c6be1be81e4fffebfae3d5a36da066fe4dbc946cdb83a506da66cb869658a92d341aa8ef92c52e677d386e071733504a5b46c3cb5be343323eb8908112c9ac32e80bb9a4590cb4d9f794ad7fb1326c700103cd62a88ba13a766ce45cbc404b19e9d5e36e491d737870e102bd1df7869ac8ecd83e2614a015da6bdc4bb8fe7b343f2bd4d88f4f25afc9e436ab50b2468448edf83452a80ab55a42d85cce9f164f0e0a900a3200040a800a0b14e014ea24b14622e935cfdda6a835a7890a690b5329948ce18bc4fe83ac4892427fb08d3ec5f68ddb9b51a8f91ce6a4132e1f4d2c0addae43b814343b9e70844287211124a3f3f141a124dd7c1b41a76224f309adc376b60967f134e63da19e893ccec9cc6163a4136a79b6fe1821e6c15938a1496cc3dce1a6b70fde84d6f9c143827b55c756134a4e8fa531b87f14829809adae51ce0749625f224ca831dfc79054162427be845e6f3dfbd911ea3765092598bc8fe630cd93eb4ae895cfeaadbbd14c091dbf76968b960c363809a52f2509e28d2c489892d066e3bc3168a44542f98c3d9383f71c43839050f2e685bd8a94e92ce7118abd56651c096e3f1347e899fbe124448677363742477617f5da29238cd03c7cfa201395e259b8081d74a5146387c821bd44115a23cb58278d3aeeec44a80ddc624c76139a378808bd43c72f9959a7cad843e8a01bf8a6947d1b42c9217c9cb16a4b197385d0e3d3bffde5dc5b488873de0df97239631f8496f37136d2e07e611b4128155f2ffa7275662c03a165ae788b3f2f1f690208ed316af79873997fd93fa81fd3edf9f92cb3577ed0e2e41c73e43669f3d907753487ec76cc0bc9201fd4cb992575c618f4357c0f5ae3e8bdebbf1029a4e84107e7a933a6329bf4940735fcede6ae901af84bf0a03d081162ca9971cc11b983debad9c3f4e43c2f6407c5dc3764103a1ac56c75d027f77b7f865c7eccd3418fc99917a4263f67770e5aa7f7f2398fff142739a87997c7edc526e3e8e3a0c7eb86c6fcc81dad81837a595f82d96c4baa8c37e855ae29ec824dd0ce0d7a8edc1db2c30ef26f698392e2e5d796a09dbb2e6cd0a74e4224b7646e7cac4199fded0c8d62d6bdd4a0d8dd97c61e7b188f4f839e510a53c16c3e693ed0a0f44d277ba49b1ec4740675724e88d9c3fc6cf0cca0a6cacf31368a15f3aa32e89dff218390917c3e9c0cca4b8a1ff219c5dbcb63d06a721eddf9ce9fc6118392c1fcebbc4186d34d18b4bf4629c7e0fdd2d3824113af90cc5116bf5bf9828e1ec3209d3cb564cc7841ab98526967168bb9b30b7abcf7580d66cbbe5b2ea8a9246844ca3e2158b905c53f66c86d49291bec5ad033f0ff9eb33839c5982ce812bbe56b23340e318c05cda44a8eb91dc3c4cbe8337e02592842913c31484a6172fa4c22d4ddb0c70d3b38320b44286124870ff1724f1fc9802c0e81b5ce84ace08e623b682425b23084de1fa11edbebe4b1b328841eec82e40c5e5791200b42a85b1232cc09b77146da44168360c2a4891909d1200b41282d3137fb4c3b635420b20084babb9de179d23c3985a50959fc41cb1d15bb91243f462147b2f0831f7a2983783afa591fc8cbf93e5278777586024816b2e043167bd0745e424e2ed94a26040b59e84109b7f4e923f6a7f663248b3c6481071d6deedfef09f555060a1a2a421677d0937583e47be61b3486d090851df40e1252a3334719df58073dc65ece7fa691ce733a2855d5161fc4648c52630ecae44e6af4e9663bc972d04b2b79c88e41b4228e83da4162fce7871332bc6401077dae527ddc8912bf46166fe02b4823bf5c3ff71537e87842c59ea51231fd0097451b2847e5402a05b390ca7268467ffa217ccec6a122240b36281a627b126b589b275a83ae5d312e6cfed993a418b2508366933ba50c7a3d216ac8220d4a7db0ce92cd610e9519b24083d2d5b5e1f533dda73980647106fd614ede5cbb71be9980dd200b33a8b9bac239b03cd3bf208b32a83159654e1d8376d84dc2200b32e8a07ccfb3d565cd5915b218830e4312cf21a3bc551655166238a4ca962c82a5c7f0cb220c5ab65597a5f19b10c933075980418b7731fb3fb1358efb82ae6d1fa924850ab778165ed052e7987c14c365e4be0beaa4ece64153e7cfe77041bdd8be6b3ca1adf1bd05dd3dd7a6ce38edb7580b5a6eeb0b3aa92b889c05bdd247c8c9a3c5821e9fa1edf9fac2bf828e5cc72e43343ec9b1821a326c53bacee13f66aaa0e7ab2ce1cd715f6d54502a461bebc478648c32051db87b556474ce94a71494e8f0a962ba73b9dc45410bb9e9909374d28b312868177c22e30e0736967a8216b3fc4f280b27e849bb326a5c3e21314dd0e72bc70c13b4ac1c8f3178e4e1a45f822e579193d3c4d93295a0bfe624912e5d6c8f9d24e89e77f63538be0aba2341cd3ec98eea265ec78fa0e4fc64927377f04e6923683e5d791b270fc9f822a8972e7b66cede476722e818677acde922e7eb4350627e737dce919f622b04f5c473d4c3b6ccb207414b1a1bb8fded650f0d10f408ff1aa3af5bfaf30335e4b1d8317e3d7dfb408b701aa6334f6e38961e7819678bf29b0a0f34d1bc0c33ded9983e77a099cfbc6f6b684d4c079a6ede49c92a69760ccc81122b854ec7581a077aaa24172a68ee06ea5d8594e953f08f10b181d211f9b133b7b6db35507bf353b28bc8f32e0d74f028a418461e3df26e063a4a69bcc176d963b80c94736f1d07fe203a1b0335864f2a9f246ebfc140994dd952d6e8acff05cac68bcde79b1996850b7409a57967322c0791566812679e61447d8a8d62851a1c669c3f7cbc8cfd2af476101be163c6616b55e8797f73c766f3ca2e15eaa5f49ddfc6c423225428d16d22123155a5f814eafcfedce61d49db9a4287317884b8186fb62c85da31a141fa749a7e420ac5fe2fe573fc555ab5188512eb6c43bab8707c62e1400b51a8696ab3c37d9463f85d8b5028f5603fb466824b682d40a174b7e564e2a8f36bffc469e18915b4e80419a05b7042a9b70c3757e68deeb7896aa1097dd3d57c5625bfcb9d4ca8c9b2def5327fce9cc6841639f86ccb6f7b085e421f9988065e592fb32d2ca1c5cb49f963bedc6725f4bfcb49939547093d62c8ec1d735d38af5b4c42d73ef74b19274d86630b49508b48580b48588b47540b47588b46e812e13ee52bf3d3ab5b30820cb00825cde528b9c9f61de22d1461929b383123f9700d12811689d8400b44548b43540b43e81669366b4ce6dc518b4228af9bb9bfc2e1855812420b31e49f7d8da614720290418b41a8799e133a9b7f9a4fc152b4b0bca2bf3ccc47a4112d02a1f6797a1022e5087b23196788168010418b3fe830e48c1d2e13f7fc4683440b3f282d9783d9e7fc923f7dd0dc67cbb51ea51473cf0725ca62f0ca777d97f7a084dc983b67e88b19440ffa040f1b1b1ae34fb99307753a57708b97da4ee241dd7a1bb19f2fcddfeea0b8c688878a241a536e07a553fe1023523feaa0f9766ee4b4f12a3374d01dfd89a7fec8b5953968614c52ec9875e983725074f2da4e6cf71cc671d0db2b35b27c0f0307bd1c7f6f32cf7e13ed1b14bf10f3a5cb92838b7183922278f60b2391b76f831ae53177ea90e3769c0d4a681af9b886192f5bd6a047dec70c0949776e548316be77f2972be373b64e8b34687329ffb76642e454b6051ad41edfec129307afcb197409213bc64b11cef21666b0166550f43d58664d16b31e06b90519d4f0f9e371cf55270fa5b71883d21236fde79dcfa5065a8841ef1c5383caf63c69608b306859c23dc685d2903518f407e30dc31c39f038bfa055f4bb64cbcd361ff18266b1626cae942fa6ba2e687a7ae516b1e25bcae1821292c9dbe3c99e8d635bd03784bb8d2105cbf1b5a066cd6bdaa4c13b260b7a5644c3981fde342b2c6856f92bd248daad90b7b882a67934c8e6f7cfd25b41ab934b21e65441cfedb8db614dfc981115c800176831053dbe86450add9a8c9782ee3dfb60ee3b5eb751502f9f754dc413a1a0a36db419a943634b5a3c410fbb5d21d87ccc19c53f504544444444c6540002d122012d9aa058cce1738a493fdbcbf287164cd0672cdd48a874e96b43005ca1c512f44dc92e5ed09090334a505f27eeb869f75e4897cda14512d44791c3c734b1d7294645a70512f48c7eabf81031d89d6968710435e2f72b04bbf031122cd5b630823e297b4c62291ebde518685104454e32495e44b66fb128d082088aa70ef93d66e990fa1e829a3dfa6283fdd3aa334b022d84a06494114e3325ebd8f0165a04018d37cbc11d83ad2c0a2d80a0e64c3d9a3972ccb2d801c3092d7ea0e7f0295557cc54f63e50e41dd768f0b09cccf740f70c7a2e46b67b3c393cd0b1d7d45c7cd6c70e94cbc9defa6233045b074ac46096c245e9fcc93950729d7dde0d3974ea141ca8f9b2b4c3534ac11b6863d6afd5ae216738b18196c3716b5be54d235bd440cb12ab14f67e66320d74198d33d62037032d67d494fc2603bd37e27ff4f6c36f11033d837767bfbcc8c70706a494e163f0ba022d5ea0ef65984bdf7307d95bb840efe81c43ce0d1a9f93562891171c75fa49e1c66385124ab437bca3028711a863f5711c06411004611088611838f40703a6100804830686318a23319003a2dea5033351601c128302213118081204c2402020080402c1c220100c0682826030200c100564500ab41f61cec13a65ec930efa93478c6444cde548b16ba68c9f2883697f5d5b1672df40c669598823ec241c2708acbf75d2d90de20f4f881fc7b1fba300c792c2aa6615fe908f293dc482681f38b4eab387f8a13848f5d0e5c3502486db25f52486866a7271a5e3c8d6c192a3cb367b68c11cd75882d9954468908ddcc072e29425d3cf810e2b6b44b66689450966495415fb0c3aee1a298b75449e48f698d0db71232e26ceb1a9c965822926f933a02f80c3f3c217876c745855e43b02ea1c3d2d733e9f77cdc115b6a110939f316df172134948095e1ddc61a607594d4fbbcd52db5708fe51eea6138bb36a72681116d85bbdef63f5280cf09cc7f9732a4a240058dc81861e4ab3110d53ce3b3a9df8fd8c96591bce546fde871cef75cff9b89b884c5b0dfd61ba2ae5f315382bbdaa5c5f001cc21b29e3648419db8c661815c943e925f2ed57859a7e3e86df0e4ed957783a2500629b718cb57f68419fedf9ea816d5b94b50b03f1e8d4a00e3b8d6ee9bb51359d6611b317728eb1cd6e3f640437fb10003266506b3a341ffce5f50701564296f17331ce47df008030c9520d8bdb9b498dc79b5468f5cb32e452885a2a6140d656a6fc88e329bf704f52c4faefa191a6fb4b43aa437d7e3e5b95ae021ae0b560a03083b4c8fa90c62f414a24e5165b55e4fddb904c4acd4d08a839d5e84281f7f4584506839637640652a1b9c8532156dcf64fc665a63e7b858b8fea1993ab3eae6bd00fc013211846b62ef082cf667cc5069478f016440246d385a2b1476ef1907d55bac742dc613a782b23adb27530c5b2b0f4492cceeffaf1e20206195c1731d6f9063490a6ff06de84db1ecdc770b8c3a90611052990e444ff2c1ec0e04442ee9b50b924b682226064236fc479487834d862c407bc5b43dfa0e114fa88ee45636668882dcc1d7c6268d0847d881251c349d806641124d6f0b6744330d4445a2700657ddf12cc68b127613da41421711b8cc5540147e8345ab5053811f26057c4172171196c055e115e642ef29e03a20a23244e1d706e9a546eecf6578e6a8768a1a9e498ecfb2f33dd83eca7c04ca3e378a70b693c749ab839f5bdb5ab6f62af8fc5a6861afe5e877945119f6cbc54ea7cccf94be5635cfe735a2689de51dbbd8d2e33f3f40a76e7a6004b7587d3ca47a2527a62a7532a62870a7ebaeb0660c7ac6081984d202605f7917293740f57341362046711854a44c96f5180207ffb72e57d263f0ca488888925253b63c3b79e6752d26463d58f2b5b9f170183b99894e04344b2446a70108fe1439bd8b0268a6b5c3755fa847da328af082b307812ddd682ad926c34b92a9a1a68e97866ff0f7b6ded1490190f5d1e307541994c4e62413a30489ba91f838e80bbc006371d64836694f1a1761f0a48b5f46bd89be6fb90470fe525e7ba9a67a3bbeaf60efff993064f9f129bd5d8bafa2ee6ff3cd140bee0085810803205e9f6f5b2326dd14507b8731c8063d5cec6df89f48741c886cbb28b4ca1db38cbe84f9023c0fbe2de3d696cb47677b97bb0da26cfdcaa7797b3d5e566f6f4079c9c442e8e92ac68924f9778438c3f619ae8425d48cea45e26709d19a0c8d9464bc3de8679439f46ea0efb25be242218812a9492f1d4611050bee7086f6d5f30886c0a39a298a33bca518ee2dc3edeae37f274b5c326feee3009dd8addc540c939c27eb841b54511a26a15b0dbb6d2de93b47137b2ade0106e6b52f47a975d3d09c34322cf2a8f6f82b576ace5cdb0a6caea8eabda2425d55175f8a4a6a65655da21d2331bf2b8e6a483f3566420df116a4d271ab8740bd060d43c80fe1f2b05f9cfa921b3acdf0bab78ac832e6e68249fb088b7303df434c3beb41a40ff85a4c214390f09076943bfee54d62046a4a0d60876246bb1b2719d1c6667e614658cf70ac64e03320cc5318307f186d3fddd91947c57d416ddc83205c56285c81d60a387e2fb8a219a076c0265e55c198afeef9cfd61003bfca3d05ab0db264898bd8b1637fac91c7a4eaa3083eb66e8a8a3f5103b2bfa104e23146b66853543d2ee28ccc9cf23a0392601f6d33842f0ae30d94c25f1012e09219791870cd3140fac2769be83081b96354e48f65d5d39a2ab574d8a9d225545f12aea07f5690ab011e89df9b0648eedc0aee40ecd59c10fe491bce22452517f120be51659acf6142144a57ea44e1be1c01be4f822f87b2baff02ea2a038e9d2fb3fec35d4ea79b3291b9f65ee5a6a0253fc2760ad0af1aa488f6e116433c0c5e795b814a1521885b58553b6fd5aa5f15089e36db5ce4e858ccda918118753d580b8375d4c5c768cbd5fe238888637ecd2d64aa62876ce272d0060542fb08a37bd5f40f102fb90f0e12a81dd0b6e43f9adcd642ee63e1e6bd6a975ae06a07ab92399f034b973a5e628ab9ada8c8b48f0f7313ba39ad259005c761d9ad25f301ac26321bc46b466e3920d38346efb9aee61d3b692c06e89de25b97c20b103e042dce030636e5124d4b80d0d25609bcd24be2189eb7eb20a1bda7128993fed6149485c3b2a95b44c88d76fc24f3d699b07394e66024d529c75a9e0f175b0ce1c26a2a1ab1d159736fb61d90b5a14fe5efd3ec0d7055ad07d40924b81d96ac0eec149fdfebf8a23790d6c7e246214a1dbe5204c40052939e0d5a7ed9133b07e8f76ce7e43c20ac5babe1e722bb0072ed7d2a9b14ce385bec6cf96a933edfc0180846125b3e78cf87f639a472b9c167d15dffddc94ddd3a555cc1dab80710b1a4904baa3493c27da548a54b65dd27693cb6071d6d17500f64e02d3c0fe2a16d5835fc22798d045f17c42271122cca144bbb07985016ed8fd5aec04667bcc631b2f33d4c84f6920fac5644901c15b8e8285138573e6bf300951781ed4a30247dee8eb88488f291811dbcc44efd51886700318d3383ba6e4a080f7b998c0f11ab54985607103cc227da733cf6e33403cfc7b803eb81e411d90fbcf059384f3371b71cccd05932655a0d9f521eb508664853a141810beaa791f1fabf4a18c1784e7228905f0afb47b53b7a0438cc8c193188215bd1fef04abf41f89b51e13ab7b5eb34a38120712a14670ddd99c0c9af605631ac115017333d89195c1683a2ffb689ea540f38a6fe07cfa11cf8848bbb73d61cabec9c0dbd815267f34723634c5d1bfe6ba92c0ee3e2239d5de192838238bf9d7f07107d71b495f7f20296184b41aea8278d28a9ffad32f0ab6873e24ac455c52df02f4049855e8f0bb670ea68c69fb6e56e89ec512ed5b392a58ff787993faec0cef004bc94065afa625faaf2141f29a9f1dd9ec838941819edfb7dd1b1efc493c638ff05c3bd4440bea1c056bdf7870f6b8edab38879a12f3b2d1367a371d3a1a6f08652b526c6b626d2bac91a4de05d5010f78d92d177682c4973f6f915a9203f87f8a2c8fa05c03acefa96ef446bc27613b712afbdab4e4bcb861b187aace60698469d527fd66672090aba37c487d863eeaf21175fbb8299d7dbc827eb6b89d6f5cad83e2588a84a0cbeede5fbac697c546c0f3015ff451c18df4e903c4019f6060e8820f1503a9cb3fb03b909befa36a7f09cb0d5374983b5e2624930b38cd535704d1d30bbf4a6244c4b7e409d4d1b9a4a7ce852d46dea240e2321d866338a239654528587a02790afcd3e5f6be16f88670880aca2b5998d57d8cf4c5e8f6c0891b699b6b19f93065dce45cb9a7e024ca83a6fcd40ab68e086d64252f7aa5a7684992dc0dda5f817540d5d1fdc2fa67660f2cb51c6da8be82a14228184a86fa8d5160d3378722502b54118a4201a128d40a5584a2504028d38632ac99e0a3a049d93d0acc58b2ac428da13ad48e2b8e400ab58592a13854182a3946417d99499151bb54d1e250582819aa4385a138141d4a86ea5061280e458792a13a54188a43d14e4186caa162289c28556a84caa16051d4a5e85005a806058262501b54098a4181a018d40655826250202806b541d54471311a5404a54155e328131ce45039a819aa877aa154c501725a863a43152805aa0055a00650044a812a4025c9280096823da1b050040a3b5172286f159b3484a2502b1411aa420da1ac50c050a1582b0af9d7600a6584aa502054d486c295b71128e0faa443cda272428442427183182a87d2a1c8501c2a86ca297428321487fa384401d2982053078577e97ef75008940eb5b30a7a437a510a75b24269336e86aaa07428180a87d2a166a81c0a86c20d74a8192a8782a170287dd46891404150d4a06a50a5a1aa8feaaa1b801d058a4309844870503d2804858392a0be151400a0d84a28fe287e4a2b8541a106205485aa42d10828c94cf6e1a04428814241e5a024280c0a826a5035289a0a6a5afba4800b81900438d43c8a4a05a01ad40d4a82625021a876d45d4a36205021a836ea22254151a80829362915b54b9da0e8a81b4b51be42ed463559ca64ab905b9c93ce7e1d8b85a0de5051d49da568cf515aa901aa418d8e425ccab8d1416135a67533af22c7025ad59f0f1c831a43a1b428e239110a9428a05a3e504ce1b30886b55bb5fb5e4c2132f68ca0a341e8e87c440c0e829cf13dbd07a80f18b722ddd3ee4076cc63fb50189d2f18e93ba38a2cf7e304e273a56778e301644a6ed49234c9e54ea3d81c5e947f0037097d48f55434d8a9152b59948de76087c2d8e68328d184f47c2858acaad3b01ae0be7e7f5eb4a314be91fe1b352d519354c5fb1863749da4b3ff077e6c4e0fc274e25e1a5d7769974f40453dc474da541176d8ea40c26e8532415a4752f80811db0a230652b007e49dd480209a8b09efc3b758dcd4e4048b9a8394f788a4a45ed8620d1d91dd267339cb3e9c6ef97d24d98bb84c94b9c3731649f458580afe34a61ed48132ba6ff58b281a89c785b79c521a4f24820014406420b384fb85e05978d533628fe89712d6a79a4a61b5460d142685d555dabca22a0895905edfa22a63119406a38ba2c952148e9d087daae7f31fd7a9673a7366fe151b7610b9ebafdae807855085b6a439ebf0ea7c9511ab829a0ae896bfcee84403b2d1d38ae75b0a335263254e4bae2039762b87bb696aca36bb12a44e0e7b3cb414649b371fe680e021135a54b947b148eaa7c78ac1769c10674e7e849d5345bf82a321574bccb2284012fff3046354b6305dd6c50f6b77162f5e6795e73cc062813b0a84674cfa4838a49472cf90948febf74bca85450c0184482eed77b8e81c8d70454e2f511beeda60894c0b9bad80b9af8011b9c70e89c01960ea513c6a221e851e30423d6874b0a11ed42d4ad483524b16f5a0919a510fea8877d483d23322f5a0d10b493da8ab8f520f4a9958ea41a3cb33f5a0ce654d3d28d5a9530f1ac5f7a907759482ea41a92ba37ad02837523da81bc7540f4ac999aa078d48a8ea415d3a563d287de1aa078dea87d5833a4067f5a0145dad1e34b2bad583ba6271f5a0d4455d3d68e4a6570feaeafbea4169eb80f5a0115ac27a50a7b8580f4aa132d68346e793f5a00eca653d28fda8590f1ac5f7ac0775c245eb412993d27ad068b46a3da81bb7d683d2b2b3f5a0b9478fe422e5a66c1c90ba23a9803bf2838f03965b354915c9b8f5ba44db5be31a553eb7af3536236bd01d75990dc9d7c7631ee5bd7a62bfc56d1ecd9325c1f3deb8f19dcf2b1db3fb79482775533fcd2b1ed49b9bf6699fda130f36add041b2b8099f3fb313a13c9e10cc55596c0beb24026808b81f50c3819cab62149a222a148b7b682246c98088b38c2bbfca34508f17ceb667286d1b51c0905c03dea8a0b4361b9c495dfc4d703335ef1a9c012db5e6a49966c08f621a961c66f8911bbdb6f1888a70ac6675069c9481ba8739fb27cd843e9fcc90cbccd34d8f592dd38dbbc1681b4fe4cb644c9f454fe6176be5c69366c2cef53169a60c6c11d5b4ea55b3a369f4683f326b91b41943f40201fc1910909f85d146e926a8f9ee86dc49eb9793cdde989ba826aeb933a6832941cbd6bc6b7006a4d4ce7dd994353ab4f18a6f3406a2d89ebb06df44580d16c93933bdd1423afe80a7c65935093d13c375f7e562e2ce30bb15501cf13b2dd2682ca0d546e0ad9702026605548a6871712006501d378e526d082f50b65303c432f6e48896220eec1aa632233b14e27dad2a3e523d3b1741569b918b05486513c7c4224bfcce719dd1cc065a6cb0f1516b1e1bbf12fecaeaa749ae073ab224915cd80d7414187a314b99ed16ec466efc7c803952246f0faa40612fe301d0794b171c8335fe11fb5c01e637f7f2841ce069f2d2297dc216b37c21985dd6bac64aae28c2dd404ddb3dfce52cd575d4865a50bfa0eda1ab52b2ccce417f180ddcfa4c9a58a11067272e341946d502a6e3437f953da4189bf4cba8599d0af28fd92d28de652cd646bcb18a313852ca71d3c76d72ef41d928fb97ecd4f0a30520c796bb66831a10a7a0685cf84c2361c302ae6e00c060d48fb73dd88c4459115175a7c5c0f99c7a3865a426bb968b99c0f6b1886d01a511ec6b07a25d68d2663e9227a165309c54bd2325ebf809109310eb91750e5238ef2379c2b85939450554ad71f894d359a5213c427b3c410d01b6c0c040ea4bb62c022ef440cdea8b3649b8d01e0928b2f1a30d0ad0a37d2363f5e68e56f0e86724c3ec4249e3402373b3f58405892ebad4112cd2042df77bfa55feb3becbfd8a0413c41a084f9b25cf256430ec0c32588ecf1ff2c2fdcfdb31e09d8bd398dc46a810b89a15e17a03785260293afd69f4f6298228fa3696085b04e820c35e0d3ce000da1b3a513bd0de520e400105145040010514500062898811c76901609b0f45cf0f0b7c31c00529299f08a583af631756d2de151111c1ea31331df8e201be9819fe04eb04fd0459d4e47615b40b22efe55f149953418b42838d1463a6e9d7a6a08460e297e13a21634f0a3a383e8b973729395351d03270eab828bc9bfd0d05ed25452904a7905c92e209fa6b853436955cb439419786afd0e6ad50514a13f44be14138be4c31963341b7db8cee9f1443bb65094a259350f732e65219256841499adc25a177eb24e87ed1650c27c6792a90a05e5314a52b47932e188fa0fd63ad18a36e89c7d008ba250787475262a1cb222873a23931d299649a89a034d65c2efbcdf1e787a0fdc51317885ba4f0128236e5d779291edf620441ffb8873b22a97e2f0704252f2b8ea4cafc404961e24511264c5338fb40adb610a6277445eab9079cc54d53f7dc387fe7811685bf943e9fe1a12d3bd0c28558f1c367fadc880eb4f37c3ca7dad3c729075a94e514f48fbcd97c3850323d760c131ffb486ea065e75f838cb2bd29b281960287f17ce1ebbea53ca1ff37db6433dc953c6aa0675f6593a035d22f0d149f3c67a0c519a92477418ac74806ba5f0cf287696587b263a085cb18d610e2f13f16064a63105b312f3285c85ea0849724129715646c415ca024b98d497369641b6e81a2936d2c0ab362463961817af664c951aa9479d10af4a8b01f6bdfc53695a940f3c8f4fff0cde29a4b819602bbc660225536493aa17b59ccf07c33da328d02c565fbb91df7136871aef1c86559c45426d0fbf99f3f341e53864aa078970411ed4681be45135a8c212cc6b664e42081b6ff9162ccc01e81da15d8877ee3455fae08d4be883339126f4f87404b713ec5204368341d08f08a082619d668db040826948c913e0aab9d229ff303ba4f5510db6e15bfe43da0c538f4cee3f0d78e3ba0452d21c6b388654a811c50b2afba1e53dcd3e66d40176b3f3bb94ac1825e036aa518f99f7461247933a03b94848ad9ec5dc480f62116f9c2826609352a76dd5be3d26c48091d03bdaab3ac94f92e80b8801641520517f66146f2814842cd9d19694ba94ab6b18016451b8eb6c6a2402eae8016cc656dc9183745ad21a1a3381c53747141a48ba68016b956fcbf54d1c3c604b49022bd0abeed299d47689145f392bb4245ca151046e8b395b6196e404840dbc8c82d6663099b8a09404440bdbc1e79dc16248fb808251faa72fe2e94d344e8be3b17b34968a34ce31240404049d16532cbe5df2e99076881469e5bc6d5912d589800c201caa328a85c35636185aa01ca489c9a74927791620668291ceda89c51e2d82d4079e8fa9214be7351030805e8d81452576ed37de8e932ec8ce8891ff8a0543bc344e89b887c7bd03a1f568a6f8c290a237ad043ef1c7ecbc5bdacf3a0598ca52a322c4837191e346948e167dbc38e77d02ccc88ddfd1a6d37eda06ba3288f0b1e438aac3ae8db4036c3ff7c2f88e9a04f99bfc5a8a6518c3c07c5a28cf41778e7c48b72d0c5b1d539e4d990491c146bd8193bf3dc78b3924afc0007cd5aec02198bc72f8b37686516ffb5c3bfdffadca0f867ef53fc16a264d206f52739860d87b141ab96ffca986cca82770dea76c4c91753d4e78d1bfca00645daba526ca9828c33f08734289ad7c81a76d68c5f883fa04169dc60952a9f73247d06b5a23827d39cf7dc6585fa8319b4baaea865e47d3ff33228cf121b85ed93020f9b0c3a3686370a232a84708e41afe671ac5131254b7162d07c42c4331e297da4fd10062df21f1cc57c9697525475801fc0a03f4ccbe5e49cf8e10b3aeef58b63cf37acd10b8a39f355f027179f2bfca10be5089b064f1917d40b24fc84abd8f8411a267ed8423a9e36a799f76c1493272895fa5e67527a7a6471827a1759488a30e578a926e8be0f7b5781bec4d298a0e3a30b1ee2b12ccc97804ea56e46192b4a72104ad02f64f73f473e3f9d2441ab90d9cb93426b2468766ec971856d3e7c1c416f6451dbde77851941a7287a9614bcb251042d7265f871b21b5f2182d271d5bed753516acc1074a92435366ea92b060941931c8b2c7107e1cbd231f78ef1ff40502e12098f68eb8bff40a770f3e173932ed713840f3469147f2cfde38a9da207ea84d81bb3491312e781de5411ff16d50567fb0ed4fcc720ee5b7278f9d5813a269724c9533d0ac91ce822f670a61c54b988037d72e4feb97cd97cf1206ea09e76a4e0e3ce7726c4064a234bd33111e245624f688e1eb4e24ea6f8f1ab81f678ba5d2a3091779e063ac8254b937dab32031d83743128c967076993817af1e846300973a9c618e8562fa11f4c8a4d320406ea95543ef85ca8ecff0b9454bd9763b51585db2e502b833c8b4bf1c2d9a4054aa46077f33b9a32c8022d36b8b8e0a3d917ef0a9409b902778aa2c6586a15a85929e40a6b87656197022d427c5d3b36776be8842e3a8fb782e4c8a06d1468f99d0fe28e955314e5043a4ad5702fc95df8104da0388a79e2365bf949b2043aa3cae82687f7701b4da8ff582ac8d217b7521c09f448b158941f2d5f158e403ba9f89245dc268944a0d45639560c4e65598540496185d6a5323da73010686299997361aa4f6642f1488145e1b32b2ef83ea038bfec5c14122737850734f349ceb022b958eeea80fa39db14ee56d828fa38a04522a9e5bbac258bb501bd26d274833a7f900b0de8a59719a5cf6f159b0c28137715f1ec19d24918d0194eab61458625122ea1dd49859d2dee75975242977caefc7b9a88f4053449d3dec8eff12493d0bdad2c863b7e53325a400b8ec22ec9cfa66d910aa8cff970b72279649050fba250218d9b17f552409b7ab878cee256b66f02cab38665c8acf0c15e8e506e37f6ed19bea3e430428b0912370e2a42962c01ad2bd06a76391d6b33027a5e5c8e33d51784c714a18f857cd9185f8bbc4b84f6b5d923b98d1a651408281673b31f4365f369827880f21ec94184838d888d201ca05dae8a268331bfe0f6201aa0bd3f66edc8d17f140334db483515568c44f30f62015a3e78ab90afb660fb2014a0f4c7c3be948271a6147dd01d2cb00db190622ccc07ad3292cfc9e882acf0da831e2103cbfd12db0ed6838e5351fdec85cd894f1e9406a3b13f618dc246f0a0cfbc5e96d2c691d2ef507eb41392e143653476d071b72f4c662a4911d7410bfa1e7293ba2c5548072db2ece5293e5f1a7b0e3a9a4cf154fcac8beb958366992cc566fdf815af38685f51680b2636329807072d8a2f6b9b4406b941ff06b59183d3369ec353b41b9410327c7e88fce8cc6983daf7903bce9a763a6283163248417365c66791b8066543cba21b8d8ce37f3528b9925410692b3d3597061d465de5d08a5210aa45837e236e2e11325ec68b3328964f82fe83b8f322318392ad1e3d3948aa4a721974cb7272b1e3911ee464d0fd82d69d63964ae18d41af3897e6f2889d238a411f3f9d8d7d8c2c4e1106ed6e27c89e492ca90f0cfad66490c741cb58cb5fd0f247f24ad97a4109fa2eee11278e575417748cadc275ff6534c5053db6252cd93bb6a0c52d17112a6c3c5b6a4109d395d2f3a346337e16b4f0b4323796051fa9c282dea7154c5ffc6e0dce15d44991652cd10afb695841d3d8c76a034ca6cb207acae55582b259166d932c9fc49904451f3c66b78c539e201214095931d788dbfc454750eee2128fb1c8bee28da065487d15bf6ff683200a5104bd268c8997f5d7a510a2104450ae27b89b05e1962a8a21a8272d6d3198d7f6420841b10aaa2d38bd6bdc0641ab4917dd39f6d61e89100208fa63ab105eceb2cff43fd0c624544492a8d67cb108217ca003d17e6c5cee710ff49290d0159bc558e2e7813a212768c74cca28b677a0c784cfc595c12db85b07f6a3bc95e243ee73509a9967fd273171140e74d6ed0b236e7a6cb21ba8f91422856c8153786ca0dc68d5378a51a6388f2794c711cbcaabb29ca6064aa4688be185f10da7a08126b25926f30cefbdcf40b9c83175b25d168827032d36db98a929068aa4cb589fd359168561a07ffc557014ec6414b342bc4077edccf313b9747121840b908abed82d66bef96d4131c8a96f9a60513d21040bd47e71096731b04bd92a99012156a0dea316b3dea6472faa40a748517eafa9078789408814a83772492bb2b027c405a2104ee81646c4d98b62890a7242a04071cbc8c563f7e2471a3221c409d4f36b4a6138c81805db04ba645c153f63354a1d9740713747ed20d9e8f1d4843e15f8a4a6f0fdf43612e85f9219ece43647f711e81532d91e523e859808d4b0f87022fcad1cf31068a3914165a98bb264068116bc2e0871e6c7328d4cdc406bf32cfebe35fe01bfb162ccbb8d6e7c3da04dba98f771893d6c4b0884e880ee382ec5c0e2597fc41ca8c4461b1b22d8c71bb82698bd83940dfc8268a084c880da91ecede1233927b1092130309a9b2cbfb08c7b1c4b901e0587bf974726ce1908a1840971019da73abb724a43cccd62841049680e8d19368e7ab9186b01f5e2b967beafd8c4b90a28729951259bedb8a84442c91f870916ea9d9fa180ce1539e808c78febbf09e80c33bbc2869846e139427ff012194970bb946523d4aa68ec19171e45b090803e8f2f4a3b8d8dff6222a0459cabac213979912d429f880fe17cf61f3b4f84f20cb246ca9851302910d02b8e4a5781859b7ce303b4cd7bb0d1dc9297a403b4cc717c7e5b16635069802edacf38e4b2e4061306282d17ff61f937b1ed02944b4127ea2b0a2c9c142114a0cf37c5d0bf9f5d17d2071d77be5f84074f931e7cd0a762c670e65168b7072dceb1ca148511df98e841abe03f9fc1a5bd79481eb4de8a7e070f5a486eae8da9e9ffefa077c37bb3d8665029de0e5a852cbf6b7c1d94b76c2e17577664b8d1417d09c7b18b6c8b1c3c07c52e634616374c2c47cb41bf709ebf97ac67bcc44187dc71a7b9cabb5bc341692c62a7e58c3247fe069d5e3206db984adf2a3768153fe3eb31380a2bd206451c4648f160e3c96e36a86173514881c964d7c045b1226f239998ddd4a046da0b223bed6490390d5a08dd964871c579148306cdcb194fb8d3646974066dbfa942ca8bef109a4187f4db15e4bedc2db13268e68fc3dff9afeb413268e3174bdebf67a7508e41fd0a6d7137ac282f2a31e84d2f29c83d6fc96d1206bdb752c620b235053106839231625b2cbdbd14fa822ed9e3158d768587ec052dce9bd2c68a0d0d6217b4e0f6f2b9ebe2b0b9a056a620369fa51809770b5a0ad2657881040797642d28b253814e652ffb2c0b3a9334a6d823f8486c60418de04c369365e1c47b05fdf246895d0c19a7bb157464975299fb7eefdc5550ae52a420ec65548f7154502ec496b692f87af54c4117698cd1cfc4dcf7580afa45966a7bab27333a0a7ac65c6638ed9a0ff920a01047d06bae9dc3c7e2e9ae8ca0c596e2d2cabbd2d787288216ed03a7d4d916324d04258d56d3fb5b18191e8252e3f1a67bf12f272f042dacc726c25f14b424085a9ccacbcd28288f11087af6450a3b521c4d96ff404b295c4dae18d97dfb40b320e4dec96e79efd1031d636f8a20669271e38162f571e1bca1828576a06485e5e32499f59e4207cadd536e7ec8af9be740b7ba70de3aca42338d03bdf2fee243f2bda8bf81922fbcc0a6d1640a591b68f1d0d116ee11abe227b49d7051a415cb82add440fddd0bd573f1a2244b032d5cf094a2d2898cf133d0d1d9646558488eb30cb420548cc6d9d8a22c31502b7c2ce9a2ef921c250c74d778ab18ccc4705879814ef1c5176366d8fd0971811ed7589c242e7c4bb6407b6eebb20bda90d560819e3fe12aec6ddad22bd042c30a7eb2a4ca225181d6173f86d0f35197812950de9c52cccba87b6e27349788787055934e4681f65071fbe05194716b27501a824fb488c7c5bf09d4b8fae72c0f7b585102252fc613b3ddfabf55137a45ced6a39c3c65211268598f39dfa765293e0235f28314fcbecf591422d0827421f20cf284149b2142503021ff62adb83239cc300408b43f07dd97d18a6976cc21985046aaa277bcc661f801dde286dc3acb8f2df51ed0e7290829496f4c941dd0717b957ea449e18dce01fdcbfb1b3e48880fee06148fd1b650e5575d811ad051e0fb3b8ef4c26887c880faa8298fdd3b04bf3c06347947b1ca2ba727e74be8282a977cd41e75d14ae89051c6154c010c7101a52d0ef18bf3a2a0e524b4709aaf2c92dec9a9b0801a19f3efcd571453505740338b3c8f41f9de668c84cee6a02b96b91fbd96024a06e6c841bc4c33c1310135627e429e964b63f108b5c2b7702b876cefc308ed511426795b901d059d047414867338fdc774190165e467520afc620bb12a42fd393b9df79dd109114abead1432ca082d1f0474cb6faf15c5a8fc62867880a6a5f13c11ac51d88c211ca05634fc548409c99d37402d6b883ca65362510c06e8e40facf6b52dec8a0568397f9f22f31f49391c4201ca37d44e05e1cd96be310421faa0656898d5b793456f0ac1074547dbc2c5c56489e34710620fea36651091aa2ea69c10420f5ae4c0a92cc5d85561971784c883e6e4180521194529041ef608ef87e4dae68f8208710713c20e5aa3402764f0bd37d6418d9778b1b1efdbd884107450f4f9fd295cec288f0442cc61a0edb0fd95c1a40742c841e986299fe424790911077d23ffbf9a2cd70928ca098480831e3bd3dfe5c82ca30442bc41bbd7670aa62e63d80884700371b7ade3f8b71a80de10e24088362831a15fe7214cf341049013820d4a4a8f1d8d8cd95369c642ac419dabcf0bd9529925aa8102900613020d25c4194a0833e85996c432251d91ec1c0a5106fdf13b7b32df580c0008410645a6e2853b372928b9e418f47108a6179cc7529210420c5ae404c75c412e2a9110220c3aa3e84b81356eca1d1e210418748cc1629af88723f98212342aee4bf8e765a342784177eb366794dec9aab2841042704109ef89b96989f493105bd04296c6853e58d89d01b2b4a0554861faa2a98ab442882ce8484a2aa58af1a3a7460186105850b2ddc533b5b8f839470321aea07ccc7786844ea6aca0784b643eae9cdd165808204415146d7ce9ac0c2eba0753418bcd7a418a457e2e68a7a053680a825c7c2b0b8252502adc8e8664419eaf03811051d027c3028be5294a61cc841050d0cb821437234bf1f13f26c413f42faff8a26c5191c2d601219ca0436645329938ceb8a2094a83439e348dcb61058b0342304127171b07b253a12f2196a05b02830af8721008a210046110046110044118864108100c4110840041108400411886442008f3034898a35dc62855e9d2c77c744fafeff9d45ead6fe9bbfb241fd9eb7cf1deb4cff9b0bdc257f6767d5c1ff3957aadb7db733ebf57d2977cdb1ed9a77ceddeaeeff3a99eb697f5a57cd583caeb6fd8028cff56b91879ac701f091b935226a7e11ac1c3e6e15ce8012e9f84ec9a7dbe27bbd2dd2be6fe7622ad5ab4db309d2cd9b4ba90c32caec58d4fd9a46a5a539aa669edae30cdd239edd6ebadef46ea92d5e4eaa0f44129a88ab785282471cb83d23e0190a8c8991dfd3029a40c69b0217402e8b53912ce1054bdd29e8f6331328ab801a68f3069f29adf2f0b974df23ea4d284a82b1f3f66814f0040d167aa021246b9e1190b156e337d08222a3b3c5e34dc1da7b3c0a6fa6997f8265a641f112db8aeeb6813cc5b25c38e7abf1c9cfef7f917bb02304969b3cc4c3c9c9cc8569af3b348deddfafabc2dcc1fa928d1287a58b8ce2c05d17aa16bced8347c24ed57ef7cf7772902ac5483e2e535febcd7da35dc98b0fd81b55a8e856f292b94747bc99e57f1e362f860d2ab6870db9bca5044c607b8a0cfecb7c2f09ec52bf4344bc66fab0eed53b2eaad45b25c5a75ed3e28458dd4ee89c6c9694441735b8cac55370dbe9a0120adcaad504ec905bb30c307e74d1bc5eb9f763336deac43668b6fb46e160abc8918cbf7df41aa567b1bd9e2b8e72baccd9159584a54f24ca2ef810942c60ae0ec3e51e583baa67069258992af2ca58c92d2bde9a5ff5cf96faa429d1146944f701ce0b07da0d51ba7fca8e8eb8f28631946bc9f2992356b3a1597a92146db6fa993dd86e722e5f45ac29380531194eecb7cd5cbc2ad4e24e72026f1bfd86b788cfdcf2e48b10265dac588f8d61a9a4d43c0a8e194afca614800e8abd0b382876ef6f1a7ba7ef23b3a71730dfeb8b02cf08c48800590a23aee46f21109c1ee08ea5b00dc8ad5eed183638a1047f4e1e503a1eaad2edeffdc7efd1cb8d390bce0995089a189c0a7e545d489e20cd957bad400e22182c3591a61f95a2e59145a19fcadd2fc36ad49505c629873d8360ce373e400f78ffe200d061ba82711fa5f3680714db93c4618613a8e8a344c30f5c1c78181714b0aad364a06cafc0ff22c969164a07c5925b64d8cb6a8f4232b02b4e39d886d8465af9a43b744c8e058295bf23eb7187e3da3871623d33a8e171fc52dcb8b78a72439e29be98657bdc8d455f6a957adcd67d14551d76144bbbe06ffe3142a43899f51c4df7d88b66c8af6ca4c50274d796491081216421f8489984ec364a78169888f266750aa7b0f991c6b30b026b155a35a13f5c2808d11b59093e30a235d53c3ed11217545213d76d5e001e603a20a1a3e21906e3690d21138068f3c92ab24ba15aed42cca2d84da36eda1f18386815e041618a7905e73749e24c37eaca3a80f3c336943a907bf7eb4e4dd681dae4fbc91db364cbdc7930d13f3407d5cb0c3b762374c1785fbb24efdfac8f122b065f419aee78180ae2e3e9d4eb3e2fc61bdd1d8ae13e571b0185433ce73986a197dc56ec10f2a43999d01af50b221b88ddaef186bc6964b62a8bf1f77413d944295500b75a124144255a8083545b91482aa5009b5429950c0f834a13254ef545650a1c43d6ad5fc7c4961158eda29a5fda052304db7869b5e8612508680a09ec682322804153751587cd7a018811a0baa42ad282d15a11a6a87722887aa47add48e816a28980af850c2a8906250064ab89ba4503d0a75a1682530979a23ae0c146aa124141c955e8afeb113a7322cba5585026615d84d45718775340385951a280a4e8af60da5eca38022bb1d05a8c592879a40059d47816dd44835a809a5a2aa4b99b62a0d167d525ca885ba7b50be5806148652500945a122948aa22d85a02a548482500a15a12a1442a1500895a36a4b8950dca87f8b0ab5a1325443ed500ee55035d4437d51dea4c8d3d50da5a098aa846aa81dcaa11caa866aa80de50ec53ffdc46e3cfd52ffc93e6828d78847a5d4814250169508af3142399443f5500ff5a134944375a80db5a1dc004365a8879aa11c8aa1623b21a078535c0c877228f70a2a76232f0dc0407151494d01834d61298b6aa91d0aa010941a15a5522a83a250122aa1e228ea5217caa16c28378afa299d4f8bd2bb50100a22a8a8cf3a804b4d7a94c18e192e288242a23250d270370245500a4a89fa2e75af4129d42c0ae6904a08ac4889134880a58381a250cca0a02828826a500dcaa0681146d1f4ea0a4a4542e42cd44728a8796bb81be1a1ba475f95670bc58f2a9f3aecd41bd85dc870b787ca501aca1b2a877aa81e2aa554395e46332405014a3f0116ac50126aa1a4a8b029a074a95d06d30f4cd42c0a5d13ee1678fff6c006e97e3208cc05863907983d1e752155f75af41ea44fcbe41d4a2c0d765ebd68577f2331228e8a1b2805d5800226e493e7ce147a4af6eda15f05feb30a104bc13d9413520bc1134f85caa114ea86f24d453b42315487e2506fd4de5209e5c346098d1d7f99b5a10e948e407971c574a1d851c080bdf1318169192c3c7ed92a4ea9e0c02b73686bf66ff953406a794cfcd12ca9791ee2793ca43d36b7808b34febaf8778ac60f349eba4016cf60adda9d205bb6bb167314a6fb40b1e82f059bdee8328d5196f80620c1956f81d51f8b050120295fa11c0965a0af893be25f305a76ead6db75fe2fc8a7f556a17e9f6ab7dffe29facedbc37d90011ee6d330e304c4007aa7dd4039b0b2a472fcffffffff4737b2fbcfccdcffffbbbdfb73f7ff37930c0d75b252caeaf4e6a2fb764a372b2252b64cba131322fa53fa533a1b5b420504f90303040401154930eace9ee6de9452551215485834c57d90f32eac40c511b6691423e4938f4cb21156359dd374195de5fd5c45112650418475f3b6447a258487e7550c41011542b08a2058051048c50facc2077ba8e7aa94f3a3a5d2ae2201153cd826c27ef09c99328b1ca08289b5ae66339e4b6617a2abd8c1deab129fd1a33fafae42077b0edf57791d5e96a67ba222079ba49b1455bba7139ec244050e36d99443fe309ff86902600a153758ad36d452d9e3c8478dc1820a1b908a1a8c06542c611534b88a19900a19ecfbd9fdd0c7186c39e38565f4d50fb383c1fa413e3ac4081d5f5fb03fbc09b29de1223c73c1ea30c624a40fdfe1b7608b7161e3c6b1bede9458d2a7f3d1931016ecb8ce7a62e3f63cbe821de694bbd16c8439a954b094568e3949ea5191821d576d38b3caa31b8382c54b253dce206fe7f1047bb838a192671c21b5374113bde721be7b0d9319a828c19e32fb30590609d6df99e01df28d546a5731827d662d86a71c250d15c1dae928cc4e34b23d3d044b85cc6bb83958c80f82d52edf94f957695cfd8175cf1e68864dc9e0f1c01e27ac74f249f51fd381354f76073f8df11bca813575659efbd17cb5990decd930a48cb1d3274f57686091cab0239395415a3912db430f8e3f7d43889c0289a51a6caa4f8fa80b3e628bbd53cb48263f70a8239610f3452ef94e35331bb185937869a42fd83e18b189dc67901d96f6276711fbc7cc899a63189f4c11cb6e8c21dc4d0e0f729988353acf57eca03bdf41c47a2132d8744ce3f4e121d69220a92e62c66c37c4620ec7ba32fc9c6a0ab1e307ea91ee9248bc1c21f6fa18e63088a71ce941ecb99138c84cf73182d862f332e427d35c21168825fcc6f3b81933a51b109b8923ebad1c728615f287452476de64a4cfc0f6c3f2411f4508890cbbf6610d362221365afc85c58775a3a61c345cec4fe6d8c39ab33d5124f3874ca91ef634f163e4468660d5c8c3fa1956fccff16af625051e364be799362df767437758aa63945463222a976387bd32ef7f4cff18c257874d1c559fe78e4f79d161d90b5f37a951726ea49843a590c372bf299a8618c6536a72428a38acfa9b5134cbaab9f0994801871d59b40bdf2379d251f586d564ab1f87becdfb7089440a37ec7f31263c7c9c905157231129dab0e4bbac9986f9e7c9c186fd347ee368d7db71d1a05ac30e2d1ead4fceb53fbe1ab69a0915d37d65a5e80252a461cde0ac41a8887f393d1a76bc3f29fd87be09172906a438c3121e2593a419546fbc9c486186fd2b72e750260e332e8abd1a5dbe3cd37d19d6cda94a2131a386fd21c35a91642f3ef6d55d660cfba54c0b21a36c90242c86353e4773889863fc981286cde16855c69a89e65130ec20baf3cc85e8876942b1a319e9e078ad4a1bf88575a662b5bf37d9c4e7854d44529a4fe946250ea6dc5927690b172c512bec5acc88e1f3568b16ec28560e791ba67d878c24284714164aac1dd737e96f8409eab082050bd6cff8e269a83f08f2af600992638fe605cbb555b0afa7b039c6fe9c7b3c295822dd7f87943c42ce44c176a9fba2f839d0af4fb04d68a65574c58aed02162658c27e66b0b81d3e38ba04cbe648f1f1311e340e09b6d00c8d1f2bce716c46b064ce9a6990c6724558043bae10e9b87f261982bd4312395daf94900010106c61196652474daedc7f609bc8bca1766205892918b0f0c0f63195ff3372f430ee1dd8af338568ccc8e4cac281ed2f75a7a4a229f61bd8ab1e6f88f1a3e7c3d242037ba8dfcdb45551d38d48ec1d6bd23c6a60174ca288a002126b8f97a6982e27c6c63d62076974aa3a8350b19575a0c211fbe4c5e355092a629946ac0ec426623fef45f23062eb9cecae1ea7680ea340c522b6ccf823963f2e6e158ad84348a193c58aa8d5301aa848c4f27b1f2489a4ecfab40110b14df487e239a66f49cc551c62efbc174f3b87b0a51b62fdd5ce3999393543bf108be785c910e3e7e11d426c5f61bbba9265e567107b9edcfb8ad1bfbc0b62b5141fee3ea28532105ba61b0779791945088875f25d2caf1499a9e17fd8f3a6b5b865994b6b3f6c193a3585bbd4a35df7614f8f226a4dc4c90c321ff6fcb5bbf12c7b581bc6d8c9ed859d49f5b07df04fdf6832caba300f9bafa498e2a7d8d7e3618f9e3b58da268dfdefb0753cc8d390ba51e5ecb03452fdd0c87a2c227558fbe3f378ae1c5e0da3c3bab6fab7f7206f3c87653d76d2fddac89dcb618fa6316c70d0294e5371d836fefd85b8f9e879c06187563752bfb2f1a254f18655ebc1d5778c72b1a7ab70c39e1998ce079dce8ea4032adab0958ca4eb34ea21c6b061db8c533a595ecd386bd881e785a88d23524892ab504355a4613ff19052a3ab52d90e0dab784e96e71d297615537186ae30435744b13912c9ddea9841acbca20c6458b2d24a886221afc9872bc4b04f871c72aaff14cf6818f6fded9a38d3ffc8100cfb4d544e1e7943828e5701c596634eb44f164e27837c61d34649bd3f222483468517ba3002c085255ace37d739ea53fe5b582ff554ada528bbdfd1c2eab13e37f9c47ec4260b9b56aeca958da1685cb1b0e7f4c9d797710afeb82bec2316f57b52aed0c0f1c49e1c64fed0171b45d37c007562910a1a53cd6a9ccd315361853583f09446b941e6ce5761c711f3963cb85cbd760515969c1e612772c8875613ebd9d8594e1573d8c829ecb0661f88468f711c2685ad1b6cd9549a7fde2a0acb94fd7588e9eb61aa80c23a5ff3b0b3430eb1e2094bf049196dc631d94ade097b081b2b07659dcbef26ac314cea04a971143f8509abe68792394f541e892d619f0c629171cfa22fbc075428e1b831b52ba6ae50674120e7d1f26c9c13524a22968cc137881a2fd6ae8858cef2368e9e3bc254168758ff4387c9c91f4dca6288f247e95c04d174e139804521f6c9d29cec3fa4bf4921c49e7169bdaf2cafa3066031885563beaa0d9e8f3494432d04b1698ec6309686d6a9759c580462ebd5db9c648ee2034f001130800ac10210eb4605a98d332617cf3fec95624acbe0b6235c0e0a0b3f6c1f0f5436ca38d8bf0f6bde8c73e247d0ecf1f9b05a6c54abebb011e27bd8ae1aaf3494f47f41d7c326a28ee3cc67dc39a5f3b0a4f5a076173c2c61f1a72a1a9b359a3b2c3156caa9b243e310b6c36abdb6f2d197344f5c8725acea6ddc8829694d87e57163a4612cf3c8660e4b7e6808e92234ee6491c312a62afe5315a65a1cf6340e2dc274082139e0b055aef8ac94b39351be618d16e13c4a0a131b75c39e3c7edc2061359f04dbb0ca6630cbb1713a931c1bf6cf30e6cd066aaf61075df795d9297a9b1ab6b334eb49b221d9c4d2b08a5fd78486351cc86f8ace196aec0ceba57a6e14c5fbe2c40c8b5df24916bb47f344a2d8f7624a3973a865e7cbb04e49cea8b4eb388f830c4bc39c1fe1cf92e4494de0d8620c4b65f2ce301763aa6921862dc288e7964af2f27d098b302cc9572775762c4fa20c2cc0b0a9954acde8d8c60c0476061650acf9f31bfba3994f0c2dbeb046faff9c3acb3e6ba2050b2f6caa551e6d2b63a70b3bb228ab375a9d2ae95cd852ece47ce131dacaf51636db7114529e4632bf1696e847bb9f72f259dc64618f8b7e57a92ba60a2b1696ca33b6e76867378957d8417cb0931ec5c8e4d8136b4c1c2fd30fa97e776299c999e2d2c414f12656586c34ea5ccc931e3b057081451596e07b0f3236a8471621162ca8b03ef4e0fd2b9b2e7dba89b5c35f46fdc6f12fe63c6131856d7bec2ed2c7fcb9419cb090c2b25f1593e68b21ee3da2b0af97e77012437eaf3246152ca060f1040b27ac516472569cb58fe126ac0eca34638acc141167c20e354ca3436ef4437a093bcabd7a1427338828614db9c66b160f2f49d86f322b3635d6dea448583d068dfcf31d935c47586284fc86709315521a614b71264c929e5ded6011b6d2ff98f293b28d624458738e639a162743d8c2c6957ca4f4e57021ec8d2f45861f7262464710f6d2b039e5af3d88d5006187511137fca3d47391c50f0e65e123c44ed24a57c2c2077bd2f3f4effd7822318b1e2c99e274aecde8e6c11aa5c246ee039b8c2e4cac918f64ed3f3390dcedc0b3184f1b171f078f2c74b085744ed5ccd45045b2c8c11a424ad70dbc63ea262c70501637d84433ea22452693ae98c0c206abe4ee5b8f3a97720c1db7a8c19215ed32834b1e7652c5c06289ed62a72e5c96e5eceb031634a080c50cb6f10e938e232336bc0c0b1958c022066e0103b3b2423d2b1cc7860b5a12991a9d2403162f58f7d27e137ca186c5f1899546add5e6220d5bcf8c569c0a99c2f468d87247c44607fd0c5b8594aa73ad83649b31c35e239f328cc12475c5516c269a2c7357ef3758cab087a875f050f3789e0c6b849892b7d2bc525ec7b078fcb8069ed12b3d430c3b88492673e66e36f461d8725aa5501517623e18d6ba1c2485ca317e6c7501c51a3d07391d895d91325f58ec3a6e1af94be2e0e2853d565f83140d1391c62e2c113d62c5c5f8e3cc2eb8b0048f0815e34fc82fb6b09574cf75d8f34819d1c23a55296258dcbf900d2eb2b0a612154f7be2f8b482851d4c74d0cd3c5f92e515b64726314aff533dc22796c80d1e23c9cd5144e2c47679743aaf3746dfd08515d6928ace4bb96c18297a5185a5e743c667f4c172f2e0043070418535363aba59cdbaed0b122e9a5843def278e657e2b09cc2ea21a5efff1cd5ce15e1420ae5cdfe68e5a0e310d8235c4461094fea3087e5731411112ea0b046494ed9da58f9534c5c3c61c918e6fa41776a48dd85138eb9e2d131d449fbc8266c29cd75469de49ffc2839b86002513979324fa5ca18b958c2ea21ca97a729472921802e71a184e285534bb13f2bc9d16ae22209abd786101f7ddacd5f7081847de3e7f4ac05174758d5d1580a768ff6638a00a4a6c4851176601fcdfcebe2d1778ab0c6709b1ae5b9cd3926c2123286d5f84ab487b0a70929af444e0e6c21ec19c1a6247eeab8294158734afe973358f04b0261cdd813bb106772dd0f96c9b992a9397767731fac96a72f6c6e547feb1e2ce1c43b5cfe4cc890e1c1569953553fa43e2799d857d5ce3106dd95d90e96cc7ea4b5f91fd3c43ad82bacd557c4768d9e83cd274d868c3a6a6c300e962e319f9c536f33798355e21ca3490919256683b5718c6fa64ae321a9c11af2fd49b8d4713c4b2c739ec17dc4a09a330a0dd614e247e5942f2f3358e337549e0eff1816cb603b49991452d29ea3c4606f10cda3c60e1ee5242e60b0353ebb8d69bc81ae2fd8e762f094519f7cacd4054bc424a9f94c242dd83a45f3f506ebd0a6546209c731ccced7a35f0238b4f48205fba79041fcb44e3b8e2b5865bc772dc7f4241d152c41fd265e8c3217924bc1721ec3c145916d180ab6917b981e66994efc044b8875a982c68b548b0956e9d03c19d322ea2bc11a6b633e90649b4623c17e729dd7199ecf221bc1922983cbaa941e11ece932e4ed4e4eb34a08560b8f261ff9049541b09403b5f8d98c30e507b6a81c1c5ada992017f1c0f6a86afea1c67437042e3ab0a78a38279f3ceae7c0a29f51e74716a761ce06f6bc0cf6a1c6a498c375a1813de7147333a3f0b1e6482c979eeed27607eb1212eb358a195f3db71e7cc4269739e3988c466473c4a221f3216216321ab14d77481755e467c41663d20895158b96452c69e9617adc483571452c07830ae8d22a044118908688310821449d770392200cc31806811004811004411006411004641004411084804110628cc720d43c0654f81ca94d6c426b2a7de13f5010ebb222d79675f3ba8a5a5196adfb831f80580caa5df5aa566d56e8eadfcd2655a324e77b8372bdf2d427704781a650a5109242944f8999ebdce306c2de337b8f953e74cb2809db6dedbd4c04670c0a6307a5b64837b88e8bdf2dc2ca49254ce416c282efe163e28c1fd7439ac345010d9f0c806560b547e290fe0dde5096aea9533b3d7e2df47b87e83ab475d04d481b83438cb65712473b2be65faeff83df345273c50b62a291c85fa9c7f54c501dd091fb450c071df12f2c241c5cc03980f4e887b472a8df117bf91b40ac8e1756983fb2d015f82400039fcda388ca417619fb84b324c6ca20268997adcd7ce2f7eb752fbdddda898b3a648df525eb49cada2904b828c1a4f31d7b04cc6885fc5a190ea81fee7faff2ce6b2df740df6aeb477ed917f25abbb30a2e824d41fc96656ef339ec9060664c7e79a9b03bb2cd889e94732724577fb4026b8b3922dac317aab8a08985a1ba711451aa14874f176e0e830ef40b7abfa73bae6aa770c13d691f1b43dd0914fffee11fb365e8846c93593c2ba3ec7845bc9c173f03df115f4058ec9608afaf19e7cf7e40bd23bc754942a362ca3fe3c4858eaea2959c398cec2616a914cfd0e041583db45f90c2b73acc423b320e02a724bf0cbbafcf609c1fc023a13b36673b7d9739dfb9f950e8887b7373e3e78a005692afd2c6f089f4713b54d5eee810dd1723fe85f098e11cfd586448ce662ef4d595720ce1113a8b84f567dbca059253f8cdf45ed5342714e80234e69d154d739e807f1f13b07b0c14ef2d78624b02c2fd19e0e6070b71f0ebc71e5841c9d706781e68cff76c4c3e6108ded73ec25cf0236ae0199441ab1f060bef4fb12225996630ec7764964522e1f33ea982d99d639ea2160e23fa198ca8e5022de5c07d0614649da3c3100ed76e142f3cee65486b4e5112febdcb23278507f71ead0a293762f2949b062a834d8afc81457da1adc907211aa12261b4c20b0117818b905bc2ae027c091c3970dd250460aef10deedbb82bc4c03816dcf4301eb2e4cb10aa24623310fa65a3100f9464b51a75513da1c5e2aa1e1beeca2838017afafabb8c5fb3f8abfa805e9bfca8e5eb5e4db3b2ecbd680247788c4a5e022361466b5dd8bd0a44983176cb55f81c06dc63576dcc22c724190643c290f3f6467ce0c08d9f880170d7a76b5a097a55396b4463ecd53c1cd6ab2421efd8bdefdc8291b751db9326e7388ff8731b5d266b7d73434064a95629c935b26212f149cb305bf403e49256e97caaab122b0856ef5510125a0a003568610ac0200b3621489fb434561ad0e086eb1967b6075e2ee44ea8ca32a031f7eb485e3ec2b270da80579a8ce5be6a01858aefd4b1059c3e71b7e0e08033ecc9665041956caee408061c03ed0f0077f153fbca8c0ae1050b6575386e5cf75d757bff013d75564788e7e81dede9e5cbb2d57e477c8f13ddc337179debaaf96e747995c90ae83078f8ddd0bdc6b10f069e469305ac827b30c6bdc00288108c23e2028b315da889143b55a402f92ddd4354cb41148e1bf7aac72e6b9d6751d7c1c71a00162a90e834944eb876da6e74e1a988d2f51a7caad95ce008bc8d821d64b7d57dc8ae162af73169cbbc2fe21cac50b9f214de27df57b4eef2d00ffd900515252fbdf9988710f29138f61d7a76b1d8ea7f60b086e8ea4b766d2193074238f987c95c995d488335b46ff0058a9b63eef65d02be604b76d084b76afda443f64f84f4f81ac3b259b66422ba0a6b149de4330ccd92ae506265f00d81d477a2821a7d823dc9b58e4ec8069805ce83b5205b4005aa8057c801091440958284c5016ec031705f4c0fb0c352f805441741e106600ae020bfeec789445ba81d4fab9dd09f6c492dba1e6821549f455c6ef100fe5bb85cb9d58aef4049a7c57fb57e7fdb4049f4fbddefabc9fad88f1b621665197f48b36f9e4f0d1f5b400f33bb0115db050888dc59e052d5d31a69d0316f9ed6edb6b20a70e3af60851c50275849c4d74960143c1827e618d68eae3aed9c14db92c8b74d5d16234e062ee39f29c1396ad64d998ec1fa0e7abd9e6a4c6daa6b6a97322ee68e4b5dd44ba3ed4f51c4cfe8c067639572820f0830ef98148d55ca04096fe826ba937719ec7b6711c5fe623438ae3880acbb2db27c163e770e7fc0006044d64aa0ac5f896a98523e4474814bfc5a44d65270a0cd484e3d5ca9319609889510715dffc555208ed6fff08980452ab750ebf0b9fe2da7f3969de0f6aa8596e87bf396583c1795ac5ace3101b02cb11c73b8f3d6308db4671ac62d28250a58c66d355f8f29447b4e74fb82e467a0717154bc21b5220ec4556256093e68f1b094ad9b183c47149d155dc7b890bfaf5837c8cfd3065bfbd486804acf1aa9c54b72468ccd01bbffd8f1f811c2212f82c96ec5f5496429cb463becdc171b8dc35fefd1b0feb1910ce40115f9355fd2b10e967c3263827e1ca91a0ea2d2be199a7674079ec883e4c2e2dc10be0fc88dde3a65d7327c245c92171e7d97dda28eddccab48cb2b100873acb672065f2bad6e24cb6c7857bddf924974f4ee5cb7059f59986977afd54c6a616d3b302d37fb974aafac561205a44d9aeaaea29b9811f8b406012db9b19e4a375bd7ec5bd696a32ee76a00aaec460c199b32a08afc3f90c7a449420eb058b4eb3c929afefff90577cb3a081565b6a8a2835a328adc4b51048bf0b6ff83bd378c75a81cfc6d391a15557062d31782cb4da6454573b9d882b91c34d7b77c6e93009aec4f13c211f39e0a46097bec0d7d5998171059e296a13222adcaca512986ef995413744a5913b9fb1b35bd47c7c26885f41ed972a6b4f06c89848434c2e246d14635a391464f235c23ae51aed1ae23076033fc9f00fa5c79353eb0b0248503c0c0050c5cc0c0050c5cc0c005c8856fe25dfc7df3170f3c1fea6ffca1242b3ad1bbd533b18d2db12949b66c975db056f4a7f4a7f4a7f4a60a61034203320355ac893199e564e88b1ce831e9abaf32b60307ea66d666e4b84ced20375032fef676ace90d890dd4f417ba6f1e32d28c4180450dd49d47711b21e672e8d040c71b1b36f6f0cf12c22680c50c76d3bfd0bec6e3284506ba644d5dbccbec69e4182815117d9142879cb9e102163020274716993597afd9c50bb41067f36c5c88664d0414b070819263669431327d374a69810e33f29ce798f62060c102e5aa3573e3cbe60781c50ad4898e95c6934c63fba84071b1f469fa71baf8221d609102c5f3e6bcf9d43ea1835c7f151fb73ff2c7031628d0fe3753c56491f4933c815aa9f16ce82e8d371db030818e1fa6ad739cfc97c070424b369b11bef3e3382a815e39f2b3848cc92f76137a77cfa6b2f870bf1009940ca6679e6f620e121c815a2fdbffd212bae38508b454798e81f8ece5f198d02c7689ec74444532028b10e8adf934498e61fe4185000b10286321f2fedeeb76f897503ef45995d8654d9901164aa8b9f451c54fa91c86fe01edb532aacfc923cf4349689f71e74f8e3e9bbfc603eae3f68e8e6abce16148a861b331e8749e1c75f008cd5c33894d6d08e5597440efd875d696dfc781a5000b23b4f89fac9e8ded174b409119c0a2087c6367640e8f596ac082035ae8b2f95ca3fbf9f66203da8790317469eefc8e171ad04c247fae4b4963e7c4f0018b0c94bf34be2b64e610e30b0c28ffa182c59db97cc61750347d969c5f2a74a5d3023aea0fa73795193b995e54805424a2379d788ca4452e4988a8537976a7d429681587b00a435845214a0521ac62101400095408427369091edfb27b49b26e501108c5e275cc94e6c9cf67d0121580d025cc73d6656866d18651a2e20fa4c20f6a89a69af9cd2837a3fba0653e9eb74c658d3ccb0752b107255de7dd12e9998800461951a107bd363e6b33a6abc88355e0a154dc418ddb4cad27a1ce73de0e7ac6e53a92c43c77ab83926f37c5921caaa5e174d072b3b72b321ce3d9cc416ff30d7161ff81a4510e5a7487face9181a54e1cd4d1dedc58dba663f8e0a0f95c05f7fcdd297fec0d9a079d969c97b3e3db0dbac6d87efe6fbfb441af14520c6ddc206f4cb1410911dc6d3464e567d6a064cd5d8f3c9d8774113528fab093f6a3cc972f0b701f0065a1220d4ae3cb727f0d3307a75081063d26a3a8e8af4fd5f1041890460050838a335485194a45194a05194ac5180a040267c6af595fd721947bb8d752b125f60e43e8f8dd722c4433c61129845e92c2398a972d6143081defbd7bd98ee49b73109a8b2509321986847b0842936f8f54229a61ac02a10589e5e0cbaff16704105aba87976b725e99e5ffa0e56e98eabce1623ccb0f4af67c141ac84faaccf7a146bf99d27d852ce1839e334bfeca716b32b23d689de3fba38e7b9f41470f5a87fbe91cebb06d330f8a67d8cc9d1ca5d019040fda87fc0c27c4caeefa1d140b23ad21577d6783eca0b55ed087f716c28e7550423c5b084d33153b1df4bbd2d0971a73502e56de10472c2ecb2407255486d8fc3f9a6d903868de9951c8686e0c2638a8212fd7e23331f9b6f5c4e20d6a44de4b7bbfd9ae63dca0e6103166898bf1ee6883b63de1f15548715cb625166c50ab2384d18ed130d8650d7acce8f6712447ed17aa4177fbac0d237769d0f264b02d370f3428973457ecb99e998b9d4189e39d82c77cd30ad30c4a650e5215225fcae852062d26f191e4c0aac62b32e82373f618873ff1ec1874185e63aab3e8703f995888419114df9162b6b22477b1601106351b6fdc7a94679a1118d48cdc529d65c7971bfb052d83cf3f17637e3c442fa85b1e3c690e7e17b488ce16de3743661cb9a045b63c1e2433263b84c5167477cf4c1273bcce9a51b5d0829eec5e6aba7298dcaf165950b2c5f8dde6a94374281758503ba4cb9f313e4695ffe20a8a7f45c7dbdeb7093daa606185451594cc9af15b8a79bc217b3758504189d870f7e1c76bd49b5a4c4193bdba1c6f244c421652503b262cbbf2a68b3521241651d052fb63cbd68c7b642284090b28e8156e4b3c36759ce00d4284c513b4c7b923bf79c3096a0e39e49248c4bbe734e13cbef12193bc51a498a05b8ab9f2cc1795dd5b2c41b1c81d934132460d430b2520d69d493225b12031850839d11f343432dba3b71649d0e324adf3bd0b79528e2db140827a1edf99f737f972041db8d648c56f867f715b18411b09151b769222e83177fa94673c3c53644104a5720872f13d833f88028b21e8f17343beb2f3cb580841b97897c386b0f9b26f101407251ff141da9c180304e593c409b1dc752e923fd03624e9f449c4cc9bb1f081dee12cf435987ba0ccdbdf67e30b679a8d94c082074a4c134eeb3cb3034526528e197fb08d0e34e6a96acb3419a5aca0bb7bd6dc3806e11954056d1be54e54597ad71c15b4b898dc9c9b1fbc3c0575f2e357888b7d0ea514b4b0dfe7e036ee5566a2a0ef699d6614312a3b84821acfabb2f9ce7c784f50e661a7a0a1cc777f7282d20ecb43c945e7a64f13d490d16ede30414db921bf5b42367c72096a4c785bb8f05f571625e80ed2a3aa9ecd5312940cf143fa3d44558448d035854464784e9342c611f44e35b1d5fbfadeb511d4ce2d8d31cae2f06c2e82de9ba781450cb9328a10418f4fd159e6deb18b3804ad5d32583e9ebc7b9d1074073957ce29e3b0b1f1415067774fae71ced93a03047d27424cc72676e7e00fb40d9671f1f7fd34321fe830b4660f9d7ba07fceb77b98c6739a0c0f340d5a3b1ed9ca34623b50e2b7847d9c24364c391d6829c9cec74f8ef5e29e03cd3e3cb6a015b95d3b0e3433cd8ddb7b7142ee6fa0e6d449b3830eb142d66ca0674c3c93b8398c64b6067a7cca28c51099fa2d69a0644811327d8611795366a0e7fc28367eb867d21b19a8632e0f32a72edced182839d2c6ec13af444316067a6a4d2943b0fbcd92bc40cb86ffda1e77c473ca05baed974d9c5d83919016e87ee31bec25f3c57b2cd0b3d6e38c789ff1e36a057a96f830e49f98db9a5581322fa91ef49e021da44a0f1ecf6de8b19e50321ec4f3eb1473b8a040cb19be1191c39959068a1368db8d7f1cc567cce936811eb3df87bcf78656ce091ddd9e3ef6bd364f6509f4bc8fd92948048d0c37a17cffc51c74323d88045aeadc49a6acc334c411287ed63b156b3cbd542250b3c7eba44c33196742ef28dd6cd93c9ec1044508f4903b9d9cfcbe238fa10081164633dcdc38c3ec28846209259d3d8c316741c26528a1f9e40ae1df41b325f301b553863929df67f8f625a1f95fdce71015fa470fe8215625a94ae9617e07124a87509653fe0ff7a51da1560aa5f5d7bbff72077494c11ea5471353b01085117a86397ef454c48e2187a2087533c68ad70b72f6110774cd0ce117e4be0d28611333c445ff87d734a004c7392fd31b32ca39037a464bc6a143735f9e30a058dfb987b2128b644171012da6f66cf9a236c2038505748f933b668adc165ea2a880fe932a245f8e185a8289d0223f5aa3e2c7e29d88d01e9d1e299cd036cc8488cf666fad049a98dbd935ccf394b2529a50a63b33b643187d0c4f410225c2b51d8510ae613847a0c607c92e26a99f64961422d0afbced43fe36897432a1c4183383c9926398c88740addfec1cbcb366e61a04ea3dfa12c99f916bc94b6897fccecb73d2c47e95503b6c8cdc1d6d5a9d7d408d973d570a8dcc47325224a1c79cf43d4f1f9bec9fc2039abd46fae468ba628a23a103c95472d60f2f3a47a8e9ff37e64db90ee89a1b841cbff7153742a9d0fa48f975f9b1275214a1c9885ebcca88e13107348f91f3f355081731c789141bd036e4ce66da75d209526840379197ac4a592bc7540674dcd8cbf3267d6e689a488101a5e64385b4e7dcb831525c40cfddd8e3387cc39f89141650c27306e5c16ccb4a5101ed3f2f2ce4e79990ef44e8dd3024c75ec1338b4ba04084529b7d93e3e7d6287d0835c4e5cf6133569b850da15888849966ca6369520825abc21e657eb91c49020521f4701f3a75848fd420f43acdf6609e990d7b4128b936a3b9a8c93d109ac5099eac4ae3eb998050b39bc38e991c4decf10f3a684d23996253c6baaa50f841cf1a11651323d834d02881a20f4a486f45384d17e6e1837a49ff3374fea460972a02c51e74cf589e715eca1be2d7831afae3059dbecba18f16a0c803ee9adaeab773fe061501051ed48eb3ae18dd92f3021477501af7457098f7bd1593040a3b68133ac71c19278f3eae8316dd91fa25857bc9221d94945c3c87542ecbdacc41f1086d1d3f8295e54b0ecac5c7371b368f8312bc1f3eea8611ebe275040a38e89eec66c4266750d5be41ed6c8df24e27a51c5aa900851b74ff182f77f26b2c746d50da93e7aee41dccce6783f29b1907fd2cb11bed1ab45495ac3be7f96a8fab41cbe1516ebbf20c3d711af4f0973d92774a23214683f60f62cfaa3ec41ce119949893911da6971c3262061da5bd98bb1b96fc7e65d043c82026d99a102b6590413bc9fbe2ef96a1e53306fd264cdf4c0e1659326250ee7df3c27424996fc3a044eaf8ec38986ef805063d4edc904c2668ef5f50af919fef8514be9df58296c62de5f4f0dded8216cadfb23dd89c2cc505756423e5dcf271b9615bd0c552dd84f4a7f350d1829e2385c618de6faf5516949c9a7ce1a2e64335b0a06f8c1ccde7685a1ce30ada6c028268b87272884210840041081084411816fc065220188e62188442188442108480611004413008214810066110044208861093fc0e73944c4643f2b9548a36e4413e82a0721f1426094111633e181a5d83aca11a95344a0ed0863d6522b50dd3909817123f03f130fdc0b01865f7d5faf43b14af602c37b73e50ad23449798a858abe31421628b23b064de32d98a8d199db2002258903b50d34dbb7e24c03f7c7a94e8835cc03799c741c552a79d80a2a3fd8a569fa650420b5615e103531992004c7eba4496b3f45b90fb7440dd107ae5418f802dab9c989a7970bf2609c737a15e06dbd8e5d924c70dbc669c629eb7b5b1e23d57d9481bbceda7e0c7ec89d632b77e0678348c464a94f209c3420cf0100505cd82aab95281b4cd212751d42c2cae0149b65487405648103a697a41c3f3938b0e1180c282779e5aa38fd192c9b376cc03ee6c1e36f4fdb0b5bb5d3f708fd34b0c549fb59d8f437114074a068aaf06d5502ca00aaa816aa01e140185689405a57baa2abf00a0fade699497c2507ba88742412d500795813a1eac241c8a87ea46f9524828a005e5fb1818db5bf45097134a5f7c44a8054a40195082068302501c8080f24031500009cab5ddc263a8014a03e550282862904d448218a8068a40255018286006652810500aca4061a00c2a0b8d4207da22a091d0517a940a7d3fff1daa8742a89e5030a4d2d1437da148a6f294f6640a320d712b06d54271a25a2928a166a2d45a7c619ffe275ebd51ee802194da5063284c289f53dbc04f79287800292802c58ae2a558a8729474292e5483620c16239d3a821aa8011480e28afa52325221414c537d2105a4d613931c540505200aa054565ee11afa13c4ade8a8f54819f4e29c73e556bbc89a78c4a140a8287a400fa48da310a1ecd80695a126d40745601470be53fe78b1edecb4a527af8148eff74673549b5e9450076aea44219ea9fd06c50c14b088fbcf84292722338098e43caca98b0d837756fb53199e6c1b93334d73a2b5d8baaae1a09b2a8a2b448a2f28b3fe17c7222e719d0c7b6d2d312fa8e4d4f01c578e5190b6f7c656e14604d696df532a04c3164b3de9f4c666f599c873ac85d5b0a801c5e1207fc2bdb97b218828e909462601239fe10b3221090219089e5f06be8426639e15709fbfd318dac3edca218b06e30e8ca9700eb8f43f69c5db1c3886c9a6b11ab18cbd63bc8a71ed8ef9f4054296735d32e8b9df5d8e0a9f45c962792055bfe1421567749c9ae5e972bb169e50dea359e0d9c794675a3176cd4b426933e54af62240fbf1300731997934432f27dfbee2e138f3a2f00ebb4408f6d86beae45e848e4094703a8fb8998fda69cede867139ad2127c274a51f33184646b3d6fcfb48dc4c4086770f0ae05594d6a4326d4840a3eac4e1c0d3f169a1881aefdb4bd5aacf7386f283a3539fb77363996c182d45d6a487fd1d896895133b2925b94558df24209f84f4fb9501bf12019d47e29fafd14db7eefa5cce5026751d681bd69672cbaa323022198ccce7128200773672d612097190e049041a459c3f20db760095b7010cd77355eb7cdf678baadd4f659529c1fed203a3c6f9d38b038c0c820faf7bc4aa12136cabafb9bb77ff93313ab90b1d7d03725fd9f8efa90a10eea188587360c1cfd3f3ca393001c6064551a8ceab85f5b4d6cf9b4a25ee3ee8ed51cf8c12b793bafe885507e2fbb1fded3b4af1293248273971d258e67b892a7d69a803fc8b308da5492dc734f0975ad4bb111313404ce20069cf72166af49a9931a4b955f3bf4f6f15729c37087c3901a9a26ff1ee9c3841a19cdb55142ef9df00c87958b0aff55529682ffb4aa5db2f557023a5d272120244185c9c2e84e6385849738fc3c332a3f9fbcae7ba3edce143d88c72157968a43b872cbf541dd1249b628e272dfc84fff644448af21e0599a013b904ff8125ea90a21c497db3f1ec755cf8705732e67f19eda74812344bb466a2302966e904084b9ff13d816166804457738986c20095539100cb7a9706bd180bffd0314291ff84e87261529e2ae934a6b40704c3a6e3b663226f612a212f45f47e974bf2585879a184a0f7277d4f237a0d6197b1e743140dd1867302a50a759cfbc54ed514b03570ad21770d69aa03404d79bbb9096174591a6e3f718898396f838e273ddcba99bdfcb1529bba18158b15e996caa9effcf3e824bafa8a83a21c2ad9005a5d7bc9613ae43c48473f82f2217f31d261b2250357850c5a6bdad6af31c901627d41a8c855123ac100566ccb640ee8ebe001258279173bbe0f5c276915db521e9cc38e29f3af36aa607f73296ba2cb4d8cbf88125c062f0f424d9423f1206ad848bc448f210281a55b1a7c3c012a7c32633b90b08224070000000000000000000000a1907ec78e089404bca34d4564ef4a62d428bbfe0d003ac98a8888d27d6b5b7a261100000000000040070122063e062b069465ff8fd0ebecaae96a8436e71cc710e3f1c4aab808fd9e68c46d8f32761cf9050611fa96b7987393fca74a4ed144ddf648db3f770e61b50263088d498e69e5b125843625338a9eab8e5b2cc090a2c9f1a3ecffe8c9cae2cf08423b21f2e4285ce25a64c9c181018446bc2d5ee9c8878c240ac60f7acbd5298f7a1ce5760d0c1ff4c9dc5582871dba57b534307ad04721258b493373921da998c183569367b7e6ff3077e412a781b183662c66ad143e84ea38cc9681a18326ddf25b652b07ea9f0503238a76425399775c08a9a43ac03172d0a68aa4982b5e660b71d054f9e54bf638f875995a60dca07fdd68d7cf18643ece02c306ed4f7aec1d56d8cd09131835e8cd8393f031be6f7cc8c1a041f3e162ca178f13627104183368b6cc5fc27f0a3171014306e58449163ff0e0d17f4ec18841bbb1d6f1c792fe312a3d010306fdc78f3a8459f9e079262860bca01ff32ccb9187c9f1afc770412b5d994a9284f928e706c16841e71fe40e92a35b0897c1825d3ec5fff13048c859028c1574b9a345b21c3b6e0e1243054d8b66b29cbdba3a96918226ce9ec7d1538e353507054d2a9196ea48d7a2879fa0cd41eaeb5946e5387a26e8724aa84869b12d985582266eccac99335f4ee8481d1824683b68aebfe84b87f0e4803182564dd33c6e8f3fd65442802182363eec77845019721ca9096084a035afee2084d490e3bf4e74eefa1f4757189d90ace0441f36aa27b669d68fc32a36d1bb4a44c5c4ed8ad06450a1893e8ed3193de796ec964d519189462c76fc8b5ee79cac93a20213ed59f2983147976c9ebc449783c73afb1f7186a2875061894ec353924c296ed99e4a74b973a46b6a0c7973184af41eeac7e4a79f83cb7e126d7f289ae7d95274a85548a293f80af1abe3e548f6075444a2091f13cc83f828ca940c4505247a4bad1bf3179932e4543ca28f5017cb96a1ba432e50e18846af72b8b2f0ec8849105434a28fe38947ad98dd2c515430a2178b9e216567eef89137a85844d37139e9b467864dab42117df0913987d13b42cc600d2a12d1e5d6ecb2e261d61c6210d1e58f39a2659276048a96a2e2104dfc8da17b3986777f18a2d90f2c4e7e1c261a620ad18608f1ff03cf2b39f009d15ccbe7f138f46056d920bacc78f9e2897c6ed72b04d15bca532154083b39850ea808441f65484ec6a65c91399e5001888a3f74317ce3f4bea88a9e03402654f8a12b77f98a2fcbd6731fbaea90e348e652f218e1437f713cca669814cf8e3df4a24127acff472eeaa14b91f361c7dd978cf3d0a5d841e8eb48ab3c793c749121e5c739ca3a21dc8a0a54d8a10d97d731731c2d34c6ebd08678e2f23948873e320b31e21de48f379e437ff9b44d4374645c2b87463a5272903dda938f431fe74b1d0d2dd51e84c0a149dd29277c9ca22529dfd065cf13c3731c85f038dcd0e78fe2e594c929757e6de8bab4639190515a5b36f45179abb65c8ed15d43db91a5250be97ecd392ad2d07ad0cd39598586662a27d94979465a2a67e825c5fcd5b9638ec3ff66e8e330f7c2e377cc16d11a5494a10f7c52373adc48d93964683c4a16cd9d24c95fc6d044978e73ee7949d93562e83d7847ad9c959230f4d326b9727e2499fa0143efe1a3886231668b5df9426fd123b71c54e8cff55ee8326286f9184cb3c35d683fce41f4f8c3bc7b8c0b4ddcecd03263981026df4297b3b5c7cd72209a622df4e5a1a7f0f8d43a599b85f6527ae4b831c349070b7d54215ae85eafd0c714fff0e4ca4343acd0877cb27b1183e6096515ca1d4d4276e49ea14217728a9fb8ef3231855368e24a8e7a73c5d31429b49e349b8977644c8a45a1091dfdb1612af13f28f4539231c7413e3fb67a42bbd9a4c4222c3ace914185137af1304f87d3612a079b26b4497307321bfd83143e13fac0ba83cbc1eab7b9be843e5cd89689a6ff619c95d0e7dc1b54562353943709bdc5f8e15fd6e061e791d0e607ab90e562ca1a1fa109495248b660e971103142177e2d84e5bae71caa45e8345512f71cbe1d744784ce3c8ea9a39347c7af4dd15c7e71f3c861f23209a91842dfb137b2d7b3997ce471a142085621c55504e12a80d0964e66f5eef83974fc55fca09d8fc3ca082fc1f364ed0a153ee86755e793a6c4d294eb41132d3ae589211e6cc683e662e8bcee8f9f18da1df43e1d5b8c67cf876f464f8829eceb471b9a20edee9392c75be7c00341830d6dcc396ed18d12739cc61ada0a973f46cad97fc7fd40430dcdc6903a6ec716234583461a9a549ef24b7b50333dd040435b1de4f0cd1f69afa5a0f0005a071a67682d6e0cd7bf1de6b5d40ccd8748cf618e2ce2064b95a1eb92280febf8fdb2d520433df18d31f449bb633534496f561a6268dcd24233b6a49803c0058d30b4e175bce5c3908ea260e8a274d090a2a22a5b697ca19ed041e36874a1cd6ed91de69063548a0b4dc7674e652969dcfed8421376ffc3196868a1ed1463900efc75aea32cf4bb3e231f7c5cce16e64a34b0d0c614ab42851ca479ce009a685ca1cfbf16378f860ea1d58615fa114921e4e6cbd5314715fa20e46ce171dc9d9c34d0a0421b39593fc745be8e038d29b49bea9b63f158b68614fa6072789ce358dfe71634a2d067a5d8b94287b39a2b140d283439fe4e712ab88a7a81c613fa96b0a921837f46818613fa8f103dc4f4f84d398c59139aa0d3631e9fabe2714c6843e5e749ca0d11c49a406309edf77f86f7c739771c274ed150429343cfe1efa6d029458546127cf938498e52298776976a48682494c4575aa43c99d0384293a99724e78729910dd02da161842e4e76ebac9f6121b962644a6814a10f6278dfd8d5f2a869438308bda618aa83c98d9796b34f684ce18d217431ece67a7cfe23514308d790a29e684023087d8c9be4a0e324312d6f00211b3f68f800038d1e601a1111d6653ee6dc250d1ed4051a3be8b473f0ff818575d0cb7aa8d31df55f486844d15a5cb08e5a76f5446be4a00d518f9d6603077decb092bf91d5b2264fd0b8419f7a92e3df1ce61cd3860ddaf18fe2c4f01dbc3d6ed4a09eb0408306d69841e7515765f3831ce51419f433b37eaa1a41f48f411f66ef90e4a1648c7860d0586c3e3509d39d9817f4618e838b93a4c364c8b8a0fd64395316aa24e74a0bda4df1fa3a5f96881c16749a22bc47c5c794e1afa069d1a09ee318d5392a68a4327a8e521653094941bf925d62b38a69d01c054d497a9883587b6afc04ed84f821f8f55a6ed0046dac7c84e429b44e684bd07ba4faa9f3196511214173f152222c33e72f73049d6f6fd8d0618478181134957ff64cb3766b898d10f4713c1fc87874a2cbb2b8413632451c8fc1893ee81c527789071e87b1892e3f75185e3bd48b9e410146268e8109c6259261897ac21995e837450d3990cdf8312106255a8f53ec4b1aa11fbccf98843124618c48681e564258a4640ecf0c3020d185b21cc387d639d009e3114d7a47292bd31512bd23dabc5c49268784ce68441f8b65938b6599fd6430a22f0faa3dae47d7ac94b18826a5d439e65c7bc62c4311fd5e859686f09673c748843110d1b549f0c915ba1554358c43b411a6917949e3a48a8f6108651442198448c6209421086304a2fd1873104d8ff23100918c3f28c30fc9e8437366b139e4cb61187c68fec3d8d1252ef7579cb187fe3bdcfe2f754b1544861e3a4b3985c9539943b763e4a1dd24612aedabd917030f7db5e6501621e79e64dca113ffd189dcd48f82c50e6dfccca6d115242dcc75e8839ea59872c6c8223f1dda3c313d274f98f0c81cda8d578b5795831ed5e5d04f8ed7639f2c21fec5a13fcf8bb7f0c9517ecd31e0d0a5601aa67f2aa450f11b9afcbda56f49334ace0d4d8ce25b95b34472b4a1dfd8e03eb1494284960d8d87cb1339be3cb917b2862efe4751d3c34b29891ada148f3ae5cbff326b1ada90377cd821cb99c4140d7d141a379587ed8ccf19ba74f318127fad3a9766e8346cb6a77407613a6568265efc53f4dd6c496690a1498f428e1cc7ba3c7b8731066388a19e704618ba28512ea807e22215061894f1852ef4d7f39fe50e79de6378a19911d95055ddfd397c8c2e3491794ac62c079e9d3c0617ba789d838f9a2c5d47c2d8429321e4ca94cc9c16412d345d39420ef3854c9d2cf4e17cef7e0e2a4a3c0f0badcea6501953c45fce155a4b99e358daa16892cd0aede498e4294615faf854275eee6f330d830ac798421f8c6e90ce15c9e411185268d7f37c4cf23186e9ae088c287421c70ce79d33728c1e0e85ae25cb66979062d6b0613ca1b11cc6c8afb1527a58080c27f4a18c845db18e13738c0481d184a63c34ee6e4811331e3098d08bc48ecb830e3aa8e494ed80b184ae428c29bc27b73e068612fab872e4dae551b4e61c06032309ed6597ca4c5e7640d1626020a10fcabdafa959d06fcb318b0521ba1846c6fce396c9498b417426ab1f653de58bd05a08a29ff839657b65ca918681e82f59e50fa6b37c788f65810520fa5072ecccd7147996fd432f979edfa3d0632988167ee873ce434691aa9211fbd04bc4477ffecb1e25f9d08bcee6363ff5d5dcb18766529ccab1a7bea587a6f3f2525e6b92f6390fed872c39a371913c2f786834be03bf5cd63175f20efd8690c345740fcdbfd9a1d56c3944b48ea7d6a197f68d498951e27ec4820efde496040b251d069358cca1c931c4efa82db090433b16435292cf23919638985c34e7c342a8ac592358c0a1b92c3231e88489589637f8c0c20dfd64fcdd982fcbcf6fdad06867f14dd63d1b331bfa28b5475599396caeca1a1acff59047a282c71e35f41243a4e955ee888da4a1cd81774c11224b97ae68e8643bca23ab96397c1c8b33f49edac7222c97073b9aa1dfb7304b5621c4545e19dabcff571e75f46c860c002081c518dab4d0314eb0100b31f4e1b1713c9e5884e11c876e4c59cac4acf3030b3074b17df36e08adee9b7ea1936b155f0f7625c7a41768550bd93a2606048b2eb431a5e48f973d8c1e83165ce86363f9165b6827c7bdd3922fe7209b16fa942d99b77f1e4d2159e85f3bae881f6877181d26b0c00232b13a24d5244bc7453db0b8422f7939cc4ad90a665185b3a082594ca14d794e2dc7eb51b0d02da4504fbc4514d4020a8de507e5c963d552873fa1cfc861c5f689749e64e1847e723e8f5379a03a1fd6002fc0a209ad45921065592747410214c308b06042eb51520b9f74377e94c512888512884512880512d4e2085d5774ce4d193a37b23042b331e5f1eab063cfa208bd4cc5dfee1ce4891c6e41845644e2e364e192648b29fa9452c71273e0512aa1c510fa384a4b9eb7775d63c84a050b21341f6b9c281d3e999e3d45030b29fa4bad28712ea5bfada58445109a78f14724c62ecf32610184e62bc54c1126e515d3e0262c7ed06f66988c1d27e9bc29b12b0d58f8a09724d91b921f0737dda207fdbeee88b7b7c7c658f0a04badf29c34f772dfdc411324e4f26cadd0e9380b1dd41313b088a2c9ea6d15c27c9385d40092b0c12207cd59a58aad1c34c67238e8828a448933cf4ba9dfa089975338f19c24e6cc36e8cb3342976690b0a841b3f117923ae1fb7325e560418326f37b28f996b363fa6531832e5f1cbda016c12cbb1885850c1abfa01a937feb656931e8ca3442cfa2a3856b6001833e8e43c694e3795754c70b9a3ecd6c7ad54105c0c0c205162de8e348af734db3aaec7b040b16b4b97f43bc5c295b2e044f60b1822e2484f4a78bca2eb05041339b3dbe8a1f7a3ec614f4d6b9992519efc002054df956c9e6872def9da0cdbc393a82c6f0a30e2c4cd07e896a7cd3ca6f0b4bd0467a9c598f9652e52541d333d92784f038658819419b2194677865e9ea5c047d949c732ee7ceebe6b108419b2f564b26f22f96d589be2a986f48c6f7704f4e74bdfa196344f4636e37d18e66771c526f26f734d187ca3f9d4bd641544726ba8ef4503dde98c389184cb4177ae32b78f54ff02ed18656861c77f28e72b3441ffc524e7720fa51522bd185874e7c95be8eb850a2d1781e4e0c9ef3c34726d14f6fbc947cc3a4ae1c92e825b379eaf0df9fb444a2d9e0999e397ef96907243ad1f7eeca18d9a3f98fe8e30ffff8cf77b5d5e388ce7773a3f9b98d6877e2324f450f34e4c788665e5325a4f09175982da20fe2c72e6b294792293414d148864b914f4a7c5e5c1c3412d1585a54ebec55860e21a26fd528a950fd41054547d138449beffb7ffac169a86e882678f8a62bd929f5ae85e8a2762ca91d98871e8711823406d14bcaf2ead82d654c960d1a82d046209a58893a39ea7aca87dca001882edc43ee38758ae573fea1d1ec36c915c5ac748441c30f6db41ce5871f5b840cab0f4dc88fa4574469f8d42d0a1a7c68af2d747aeacfae1eb5875637a87865c99c2b058a7643430f5dec334f1dc7b1673ed7d0c843139e951d5a5e4c35f9c2d0c04317ceb3f4c4d417b5fe0e6d88526e5962e8794968d8a1f1e062382d3d0bf1cc461dda0fb37a877794374e8e111a74682ce5d8ff4345b64489148d3934d73f9144a34777757dd09043133fb404fd285e498e40230ecd8485203bd1eb31c280061cfa8e2265fec848a6e73140e30d4dfcee489346578f66b1050d37b4e61f011798e883e9fe98ac5c5ca2efead18826ee3172bbb0449bc9b234758a9b434c5d5482d27efd6acd517350a20faf2b84cdd131bf9844eff9fe61cc92e85c2e4f7546594e34126d07ad612d2de58044ff41e490301f63acf2883ec630b196893aa209a7177c3676572cde887e2bcb5945c91d73d432a2f1fc9bf286f9d4713059449f834674fc28f3aa6ea777549626a2d10e2a4688ca39f40922fab0438e47319d96e3f2104de44b1e8b41a3f2c3106d26d5ac1dbd2f85e873d2e5ccff3524443ff9b1866eb1e8fedb20bae47a1a63244a8c0f13449fd923775c593b4ca5005c04a20a700108f5da32e6f073e6fca1af8aa9572bcbfdb2c70ffdc76a8bf02da61f367d682544cd55317af00f723eb499c3cb5eeda189b9be1f37225e2ed643ef15c6aabc43aff7ca439b7f62fa8719938d2d1efa2c9e3c3df6e4aae7efd07a4ecb1e8e8f4888d8a10f3aec7033936fce7bd6a1e92027763eb4e8af081dfa60122ebab397c1e398433f31dac3872f65eacba1eb386c480fbea41387dedac27db5233b88140efdaf5ab88c71375d326fe8ba93b4c48d98e2e5d20dfdec56d4b9d0716011b6a18fb92ccb57c46f0a3936343b9a5c249e07e271aca18f53f0ed30ab557968d5d0f7c5eb78124f733a6968d463491da1c7f2f34743a33db943c562cf6768d33ab223e51c46c21766e8af32efa6d439e4c85d94a1312fd7d01549ddc355001764e83757a807963c93e7e7620ced967c98638a1a9a032fc4d0f78ec6c7c19e4872c94518daf2f3582e633b236cc0d0e4d07d2f3e595289952f1863d0cce1923c74bdd068fe7a7831cb25e54517fa2044bb274b93a90717daafe8b1e1630f64835be883e5f779f1cad3d369a18dab292f632c7bf0b8c882b943c9e7794a72b36c232eb0d07f5c1ee7bfec13297588042eaed0884b4fb49861e7f463852627d195903bd41f8a8b2ab41ff24d263f0c6a7a52a18ebc732589b9237ecfc5c3c5147ab3e09bee9fb21239c830702185ce62669fcfb9bd1ae10b5c4481948a12f1cee4a9e1e0020aed45f88a1e45a68e3bfb843ee653a259889d3ac69cd0fcc58d512b875499e39bd0751c62751091b3c00513da9cee1b52fe1f72f42ca1cb0e47b363af8c31042b70a1843e678cc9121f879c184942332dc95c477c520ea9095c20a169cf082b1fb56847e8bd8395a6477647be392e8cd0c71b2b5d3eeeb2142b56c045115ad70bd7a5a671a3e45c10a19d30de15a6a1f29a471a29733145e3918cfa8408218b740ca1edd8c3cdb25ae132b310faf69394cde3f0fbb2762145af97a1b1613e88ac2941e8c2a4d2d25c962baf0442bbc1b7c7e390fa411732e4e4287e38123cc8077dc8644831064ff297b9e8411f26cbf350ce3c3ea92e78d0ec8575de1c83c4540da0ed9270b183dee2a4ca571ecb27bad0415f6995f331d3a3ca9c288a737e6d395f6c8e220a488003944b04173938362f0d936331330ee8883fb140e1e206ed455ff7f7ede920b21736e8e3f8e2e54a4594996bd05496f9febc7296531a34de1affd33d9e41ab96a92dc40e3ade2383a643cfd43e79521a13832ee6caeeaa7ad9bc3f30683cc58ad5f15e7694bfa0cd39494bbfbc071d362e682e79ff4c8899b39c16f4a95dd5b43cd47f9f055dcae1634e49965265059d986c4a5c8b1e845c057dce15b4f3e64e98600afa541d5c75c56f286853de5831f269fa479513f4c1a5ea5809714de26f8226984fa518443ace94a00f25538546f68fbe93a0f74d31922dbd436a3e82a3fc8da12b6c8e08fae8e9f9df5533e5f622046d0cbb6173fa4cee44dbd9e364c5f0181f87139d240951214e642fde449774ce5f8247d1ffad269ae9489f1873ccd59d4cf4b316174324548e620413ed4a5be5a6e5d6082fd1bf860acdd9e71e566a894ea26be5cfd1ba379a95e8575348c6c5f7ae1c94e8b3acfeb8654e7ac8243a7fdd10cf636fd9244aa28f2c2c32a5889e722c12fdf79494cbe6df081d247a8ba173e41a26d91a7b44977372947ed7e9f871441b66d5839c2a0791984634de1d866f04f9907c46f4493c06ebb3881d888be83d0e73903be5249b5544937a3487950721455589e82d8618da91f4655e10d186cf4839b44ec1773f445be65153a524c509c9107d1c2cc7ed17cfcb4204851eb8734669240a4108100441188681c86c7ec3506870280683014220182806838260401008020c200581402010180484c160a0203445b3887e9ef953db541d7839d3e4c9c8b722893567f702c1a02e776ac913a4c7d915e9f1308a8eaad47d971d82fd20d365445ef85558cb95c00213798510cba80203856c898461c69b546c4ed124ada837de0a10490a9e07208f871420335b0bb661fe1340b232793ca12b69834ade2d0e8c611bdd26aba2955a4918915dd543ffb60f9cf830adfa5335516df4aae2e05c784a0ca59a069104a00bcdfe15d57190ef80632566e7d2b394daa846b7ed876e1f7544df2d34684c0c2919d722a461b55c542d23084e51fc43454f94c88a09ff847555c6bd505becbf4274bac26a61b893eec5008731a9980be0edbfc447fe057a39a67d0c1333622a4fd87dbbf49728e620172285d3885e7100246ab225c28e32c62989ea298b891c339ee22f3f1146d12ec7f072572c69299e5ac47f2243f21d33551ec313c89e6df0e9eb3018d61913be6eed7932b8efafe0b83bc507e91f6bedd2411e2d3409150460bc632d21178e8794e8d96d339616001b830788ac4faa1392cda9a8816f71c2696282f0aac5c86a0a089ddcf760c389e7dec84201fd46a9528e58b71693fc1e104e534c94b03bab760403374a0244397dede88e496b0e5471b667ca41509043d3d0d06b3232900a103b3ac6a1874333eca693511640362150cb65c4f4c86610af3e19a9b4010d83f8f1df26a20a7245f4897af94cf220c26f345afe21fc715e593536c04b6bf6e9318892f6e3053c8748e0590cf13fb7f6b95bfb0a9bf47db69e03ac11c718a9bf1eb8a4215086281621a631982180c69efddee6a1781986074a19caa39fc2bda386b87c206c412f3d0466fa9ed88743f7d66cf8d2d326b48f3fc20129ef421130d9125328798208117adbfb48862248ee9b41c38f4c28074d8df290a50d51d40741b237e1e58c7070fa4be14ac3a6c273a125c6b71f4620c5cf07bbbf2fd0f5fc3f9790073a7c5cf0f53c7efca157e81f7a412ed1f5f10d7bc0c3fff5d01ddf6ffc65715f248aedd89ca42b838d5bd9411185f3432c99186746e7131a3b6d353ebce5877b9b9da6211987e2b91dcb3320abcdd49ec110dc06e17d94d746667dbfb706af4dcb939e14f65f05170b596fa26b05ceec17f020f3550d56f91d749aa9180ef36fc30b324cd096a8635c9097625a061a5c1570c06aeeb3ba0ce15331e4e0e68b45313dcdf883b2a61aa02ddfe367ddaf898f05746966126b9b7d0589b8d02df807e502c04527ff8eba509459949af71e1d6c6dfba607b2922d4cb90af447bc2895c9af939c22b8a3ba1ba47d4e73636e204b0c0efa8d79895ed9f89990188203cd60725aea6238f3782ce3906a3ef43cda26cb9112f04fc38fcca7bef80bd84f92b68927cf862e5e890375dce7ed43fe11fe3933d67169a98be1fc472717cec1bb665a812e9d2617a828cea419b4326f0e2d817dd57c986f001f74f40ec04f5c12a8f4e720e95008013ad0414b1c70434a203e91d48db7294ae4f23d255c84f6f6e9f54eff6011997ccb90b7b2e7765eb417d1dfccff8b4d2487d082cbfd60c3ecfe1d8d7d0fa66ca679157effc0c1e142c96f3779410425340ecbe569bf1c5e05600efbd093746165278625c0b97c410d5474056bb7a0deade9040f1ac8e3a3c7ae74b23b968a2b2b775feb3f61757c42399a00a869138ab1231152c23b816e7252e59c8a96d2d7f6583c628c7daf9f92631da089507c79198da674e11ee13714ce1f01bd872eac905e6f7b30e33dd651b2afd412aa2307d4216b69d84320fba5f9a529f6176e31da94dfc89030f394a0fe4e7c3614ade022cd0533f128ce314e5a745473640239610647bc62b0693f881b43e75b3c25258abb784b7b35e4c8794ba84230accf1d14d09e8d63c285902ba92014a532fdf4e76fa132cee1da0141b2688bf2f6ae02be188ea6153b692546e447be3f0f312d49ee90ab12b3cb68b2689dda3ed127987d6ac0310742e185426481afa74fe6757e7d4d2b86501c795de0d58e69872a590c817f996633b89116483e245aa4e448820488e4952457c22131903c26d19512241912209217498e84406223e1bf486ea9f9619062a4fd318937ec42a8390b780ee87d8670f01a8b87486f1f5406a9b826b0acf9163a0ad20a9ddc5fa14454c77a00284f52a7d81fb3ece70566407496bc7fe9e43d0f281f4cbca593ad20e7e89cc8c9075073083d86a25150bc34ea316f1a4c8b2625cad020c3ae8cc463d46838a11eaa6a3fb2bfca13e8bd08514edbe0c8552b6bf62ddd69bd6facb67bf91a36333b2ae69aaae51616b2961d4129f7a91563f783f5261af013c13a27f3632d2fc50ec89622cd67791c3a885baf42a599b01a574bc684ef791eb2cd892140ecef28179c68bb486512929051a592b41e2e20d9ee1b4aa929a3c783e2b6d37164b08da680e39e8dd5c5678151996917be7fd86828a7727212f31e059368914131cd696a3e5764363b14728d971ff27349eeaa76313e22a0fc7375b426c008cb9ee263ef4a4cef9c2f7be380d9d9a396814827a09f5e9faeb0a4f08f7bbea9a6e000fa080b88fbd3e9cda5a16b201a8bc590f5f686651a548602f74e9cbd1a35d9edeebde4b1f81b73dd48f6f483232399523e95a7b903c3e84d3c3dc35c2d3869c103f087f04a150f8fcd886838a36978d0d3ae5a40cccf34d7012cfb009f614015a6cee5f113b352012292df4bd1c0fad6ac11e66c61f73234258a57c6fe5651772bbeff991090d792180e045b72065910623ac20b805e0da3bf6e8aa49924f8db10da868932ab6a4186c52ffa29e56f4dec257bdbe72f5a8e742c9a664cae0854bdfe3b94a508fb401f556d08f00436a342901d48aabd2453af3314e4be7860dba78ab24e6b21b1ce5cbca4b75b5c85bfb9de115f18757477ede7be73e6a8471dac24f6cf17226fd86f2e24c45d4a770ff40ea672990915e064ddc5c96a166461780500dddbbd610d04ea369bfd61c341d240295ebc1a3b86c57340ebe61a7837ed4d12da3c01f85968db7861d21b36930a7f6f6c420e537bc52784fbb4040192b336b7b447ad551fbb82f9d7e04c68a3dc0e0bd6467f904670727dff55bdc654fec43796633fd7409c77163acbac3dbc0d8612d47ee012dbf44c3cfb4005d6a63e07ec4b620724506109255e7af3d14e5b2ba45e4c46f9d89f95a5f5874381aff28ec2b19ca45757202cb82af7daf33407246f4393462cc6be410f7bf27af6a25486cad2101640752fca71444bceedc368a729150ae3c47e83fc92da5674dc8509b931235110c2c7be30d14335955390d4c0cef2b0d06a46dacb608f79ac3a208a62129e6ebdc64072304f320e6dc229780b778035b085f6c07361129c029b812d18000b380a5c025cd0d7f1dd5cbc2ce087fd036114106f1d6ab7951b59f863a8d4428f6a8b21006aeef475c81c3d005bd0956e4664b36b6e616cb1dbed63b950f674671066b332220d9c383d91a4167ae37703b43af7b598e9e8be46992c5cbc9ab71485c3b90d2971885d9235cd7f63e8494134572e0c92f06478e930c608b9c57cf46d2f4a90f20f8aa86063d9f07831965b216c43aad624d6512569b41db7e2ad704368639a8669a932c60583a3af154369f7e615d33ac7fe181ed936bcec8aaa5cf76631c1a573c9dbbc27bec214398a06524c5f5354fa9b2fd2ccb851a882a24e63cdfa7ad76f37a545f18badb1d3722ca22694b363a93251946f16e9929889eff60b5b14e38096fbde25d90fb48da7976eff46a9cb2e4559cc663fc6640a7ee8647fd173c9569d25585643f78192fbc3d69bd3eb4ec53be8984367e784c2c106781c2996e032834da817b27718f430cd6fde9b6a56bf0e35ed621eeac3e6a3b85052aca5afa7020bddc23732d3d64bc0cc2a0b479ee85817d2cee1e7b92b0b87bbee3c9270a9b29d2547ba0192ba4270f065433a8db7d48eea9ec166e30be75ac03fafbe00d387352296c52c8121c744f321b12eeca69d612a2963ad197ea51abbff4c0162be7ce2fba53013d246ee9071693335e44a382937454d51508ea2bfac2c06c49e48ec138e50f83088da090720d73e6e7d96b2096ab8037fec23874cbbcca8a30df1b137b85a383a9274d2d8bcac5bbffd2e90a979662fb44f89f17928d1fa2a32efff28ec3a90d0b4a37dd17cc1df79376b4b0ee86f3fc8d7b3e4dd57f44fd21601700ae89dfc08a011b82cf14f5ab2aa2ea899fd789b396a08f664b5b08d0be173cfe1baba3a32687db6b086bda8093b9527da1aafaa35e8d1bc301bbf6b774a354e97973266cc3bba1766bf2d9c978687dd6144cbcab0983f3972501b77687bb293c2fa2477c5d5be1a25f93a51c732e0d4a834d8fbb8f394943be9a74f6e430d6587e764fd495a52b242fdaef76ef2e44740121a7e763f3e3a3d74d85be4db269f0d4c145b10840a425bafd873cc1da68a8f7bd599a2dda4163f530eaaf02c1b060719232c63c0288f8d5ef16fc638c6c10647fcd800e8af08ae7d640e5c6c300898474501343b856a83b1aedf0d0a0aa3acf88120dbbee28e4192c95b2b1ecaa519603a616d5ad06c0f81c1387c90d343f9c8d29d4cff98c38f9ae929535d7c566e353eb612044f06d59b5785d7ed08c04f38551005043910547a097e1ab3d786b84331eac6e31e2ffae168f43563501a1cf91a399960c14dfb40b57f67710f56fa261065464493cd48897e9eaccf9c1b71bb3690ff5c240cc5446c52d22e074a1c6a83f99c08c48ee22d8de1ca51bc51400c87ea6262992712e4cdc9d1a75d159c69bafb8a9ba24fa498edc6b13f0793c39bc3f41361312ee00640ad67e89e9f797eb3d1300203bac8b9baad16e45814224a1ea1078b0f6829c9989ccddbcbe311028405b849dcd05d7475d48d5dc90d6e207ae5c9b638376b9404ec35799049bb334261093402a0813f0be6081b490de67c61c961b14370563945f325b5b981661a9856843e831b072882d400f0801f017d002808d495057de90d400e24d6d5552df409e5750f2fa06403ca8041838dbe3e9e8b3bb6004f086832c72d3a34caa00f3007800a103be01180032000ac03ca5b0574d9ebab8e0514057e0028b454c013808e001500b800c58bdd436cc6e810c14c55f9401043f0101188d911e0095f12180404c28280ef08d0aaf474f4a77323a9a319365cdb4fca7832e6988c822215c424a1e2d35286362559fe8fa44586d9449d2cf0cfb38b26b6eb14c3695932f632211e1c0ea90de0a7e4d60608fc8b008a18912b39a0b282140e0000000000000000000000085044102ca8814fe9dc38b1a0ef96159e74c5fe328ad8cc9d9b92926443d2e478395e8e97e365e00cbf029a02a20267cd7c92327ed38881f58d677d9ea3612e09031f7f43f33b0806a651b2b3746972a338165f6074d23ea6447e04b0f0c22dbac055e4f7cb5d89166d2dc0820bace896bfc37cb3dcfce0c516b80d21a769fc1c2df0f911f17b344a767e648150c9dc18f97668646081052e2617b79070180eba2bb0197dc619c58f8a6a000b2bf0f531b877cc5313cd2a709d2d7d6c7bdb2d23cd010b2af037a64e810d39c7c92fff8e2da11418b1bc14a24279660f041651e0e25449beb46f7cbc8102bb21397fff5b469bf180c513f84a3a212d24118bf77002abd9728da5cdd93c5b8b26b019777956e3d44c9a6102a36d122f346c0bb15f021342f4d2ff0cdf5702ab195faabfd5b9c49424f0f51f792381d31c634ec8761dcb11d8d08aa1d52b6a99b446e0634c1f0f0fc9a95652044ec2f14a3976cb4d1944e0f63a4908558ed267e410789c5d2519fbce3f4708ecdb7ab67514d3512f085c8e39aed4a66c18150302bbadd12949cae8078ce696b6887d665afa804d53e51fdf51f48dd503d64246913679f60f730a4e25e8a4a76c9d92b6e0011b2945ae588db1f965b1033eecdc5c3b8b77f4bfd001ff394da7b76dae9c97450ed87bcdaae7bd163b4a1638e0e2c70d3935e2f424173700c0130b1b2c6ac04dd4a5ba2f1bb12a1733e027ae45dc9b0c95922d62500b0d2c6040162f200b17f03873de8708dfdab2ff007981450b74c102b25801633539af3f8310b1a7a14e2c54b0480163be1ec7b2a73d0e2f168b0758000216e8c09d141652d4a2010b148c4514b838c12d4c401ab7eff7fc96cb238b12686973ddbf955db2940d16505860f1049fd359b46e69d61fab0c120b12707a1d53ff2a660458c7e9c69f1a52252700131622e02e585d684d535e110d01637145abc24a72b41b045c06d5789dbffa53ea8b0fd442064d6482b7cd9ba5dbffa1b96b02134d5ca2094b7015776f45f42f75a268a2126c7a54c993eb553ab404c694d195022e68669e6e7cdb3a0d29b87c89b40ab9278e4701db19c3b294c634b6250a26bc7b75f24f45869f80890d4b2a467656ca4cc079c665faade2265596800939aa78a49f929c42c1e36d49bab71299173ec1e7c4734df6f9b0244702fe7210ffcd7f04dc78470dc9fb538c8608786d102157e9576ec842c0654e3a59733a4d81800739da5bb21af7fc51c507d8649e621e4b9df2b48e2313b7c0042e2ec1c77af8933e765942e58439b1b0043fb5f963e6212df995e063ce9aa1c5d490d9a404e3929269679e36b99d040f1ce6714fde919a1a92e02a3f6a5c5ee521c333128c6aedaae668aa6d21c1bd75ba8b16bd06417c04e393bbf2bfb33b6a1cc1fe44fcd021760cf5b846b08d36d5e30fa1f23c8ce0f34aea847e4939466b118c37d4cffbb06ef38414b148442d10c16977dc14f3a7bdf83887c072caf6f7b1b263689c21f8d578aa533185c8398560bc742f784a123bb524185810829ba0bd6e15fdc3d3abc062106c8829c54729f28260f3a94dd6dedcc87b078291cc99935b3206cb0104a7c923fc4e53e450933ff0528e265bccb66b5cf92177b1509ef137ab8b3ef0e365d59dece203ab5e27a59baef7ed1e58071624d7eda707f6d2a89f6ba5c61192073625f407eb5a17c7c0033f5ef5595c535b14fb0e8cdee688dc3076e0255a3fc7b58899671df81829e3beecc8fbd8d281cf74dbe8435cff109f03ef593f6da91c9828915146460f891a8903ebb731e4cc9fc9410f072e98fe59086269af37b0190791f6dfdcc049bb8febb55f480d6d032b0ec4d6fafc3c69d8c06b9ba4fbaa38b519ae81c93a1134a4b70916730b35b0faf9f93c7f0aeadea681079e52469219679ea78a865af4e20c9c653b94ce187d8c1bf30b33b0bb521142d4b499624e19386f4f8d186c22039719a2a4acefbcce9431308d6d481133b0f6c9f16d2c6ba42796817dc9e5e920d669d74706ce3dca7b479366b83606bec6575dcbd2ad9f626044f24355becdd3300c5ce683eab47d194fa8c0c0954483d0ab16436ea8e20b7c10f3d4d8abddb17e5ee025faf2eaee1e4a490a454517f86a17d178521ee2e75c60e36e98979de7d003155b28b4f18676c3f06881d83d317fd41e8b21dea503a9868e34a696546081cd2bcb196879b08852c51558cdef5b0facaa3e6605a6242c8569fa509f5c4515f8f870c2cbb15e349636011554e071887af9738ce3a92904011553d0cfd3d745f2d7901b93c6810a2930397d044f221933c41ca3c0f48865f231d5906ea38065215aed7932f4024fa0ddfd61598a8e7def612a9cc007b17c2356f61bb45a404513f8a87efa8fc7ae60022b413b6f1249dd4ebf62095cc41c53cad37f8512b88779925d655013099e65a022096c0ac93bcab2646b8e1da00209fca6b5102ad562f8f74eb419034639a0e2089c6d4889346f8bf67a851198688bd428a5fc3639b5815ec030035414810feb38951d3483aa1544e0f372369d942a2c6ff8808a2130e2d135af55dfe35fcb0e8b408510f8680c47438bf95ec450002a82c0df646dfb6a4697fd0304ce62a4e9cf3b2164c6fc80cd989f3564c99bdef880cd4da661a2577fd91e70515f530c1a62c6eefd14dc67f1a98749825d78c0e495364cc1a2328b65076cdba3bacefa0c66711df02949489edfe780ebda34bbfcfb40bcc601ffaa8f82a7c80d1813ff8c29c3fce8333660d3854af2ed1cf7aa064c7c899981577e376869c0459de3901f78799ecc80899a48593779d152193091737a8c6dfdee291203d67d8236ce90d49c8701f7e3a2db39c2ebf617f0a59fbe6d5344765dc0e7d8f1d71f4888e4b405ac5b3a4e1169517761016b39d6e3151e336657c05b63907ddd77cfa12ae02d6844957814e0c0b7c9c07980a4606ddb2aa42499dd3f0510a180e96bd89b21a128f84e218ed37553a31a734027603ca3c77a95239a3894402660da72238d4ac0a4e749fbf5c93ba7d2048282a9b41ac325a7478d266225017aa216132012b071a3c45091464022e0f562f2504945acaa35205008986e09c9f35fbf643f2010f09fb3c5a81855ade304f3803ec065dcc61984281e2f7e996033446818a1d4ac7b4cf0c06ce399b5e3c94973092e785e87a8b0fa9bd4128c59b014f4617d6ead128c8ffb8466a86f9c114a7092f2750c7517b5a132091ea5e3f61c0dcae27e24c176dce8d32ce9b01b1809aebc3e575cc9c973ae718a0a4830ed304330fd3c1e74aa7804934b322df574fc4863852318cd47da206672f1491bc1ab46750b2155e84be1eaa082118c03df49f9af92bbe716c144e774965b6e98fb312854288255b3ae0ffd52514d5191086e249927776c6652390343052278e4e9ee973d35ca0a1587e0ca27f374450c5d798521f88faa167a25ccbc1b541482cb20ea1aff818e659a105c36fbd537061583e03a5a95655ac876a220f8ea94f17e5a7a28896e051581e024f568a76dd6d7c603a2e20fa44714c9c0bcb3b33ba40a3f30e1913f0589761fb81b49efcd11aa7279645254f08173bdbe87d639a5272bf6c095e6e5e82c993f63980a3db00f3bdfc47821c52aacc803f71f49d28f07d62ce657c8b76d14f377e07382a68a19a4fc103bf0188d4d1e5f572dc7a8031bd32cdd6b1a04718d0e6c3cad3ce11e27e3a7620ebc6664153f5799a48a1c98caa3521aed1e75c781c77b92b62f559f57870317f2879ee98690b57d030ff254854c21752849bb81f5d4c87e8faf2194da062eb7798e948cecd1d9c05ebdc5948cb2cde159b106eed333c58f1f35f738d4c06dfc1acfbdd6ea69a6818db49169fb7432c5a081fb74d99dea37e6f033b02da2633154028248fc717969017fab2c78689c6bc669376f7fa3f3a4b9d5aedd2c9c9cddea3882968b5608ed8792a56f2797542bf143051d4f20de094df50225593f2b4d50e3001f89c7306fb712518e2c0c9c771877c6fa056509ae164c42e1a0c4a7dc010e03c4a5f596a479db1ddb452fda6d5fc40ea0e16c963fe487b1447b0bf4f8fc22c4e9a86b8bdf58d94d038f98f6860379edc72e2a8d244a5b49bc6976e744d435963d6b486b395655460beb8fec30e562f6a7bc2f4a346f12f4ff4dd562715a1d3863b915d3c5ef48fb368e9253c37fa48a632682688844d457630916fe6d96b3f92afe3be21c858aadeae96bfcaaa8956dad3a0319525610914b4ddf27cf8715793c1387401facb17b4e1fb76a17b918db1cdf7c7bf4a16ebe272c73e652d212db2c0498e8c4b91ff9a6da14bdaf60f5a0f7e5a9993934f3c802cca1c6e419672ef5f478e73027033c4a3eb825fabec51b0f64d80edbb0c6748f82253481edc17e3b98f90b89802e74aa2d83cc718fc1845c18f3502302a0d017e09c950118a0e498137a58172fb18915c625c49732f55d47c15d4fcad96c79cbcfcf87c695b300f72a063452ecfdc3b4a3b2426bfc686063c9cf844e98371074604186d7d94bcc6e7dcb08a8ac54cebeeb6a173c997fca70087136ed306f12ef6cb0018b2d8633b42091601a21827960a389b5ee55fd29abe2517a5206b86bbe18e964fc055e23f882462c797422255e4fadb35a4027f4502a5d89d42694f1c37928b327d621e3987051b8255fa9bfe1d5d2acf36a05654a2d6200c94503127a3e2abc2b154b7f1d13445e1fc913d4461e06272b2e96b6ca27c580dd0c3eb8327d7bf46fcdb12f752b85a63493c228bdabbae75459a830cbc12d1afa88522f78abe93fe11bf1d5a21babc65ce094ccc569e9c0f80eb3a0144400ac40a5406ca1917ba65fb687bc1895d5f160b70cc064f8598407a7b05506495b51e546f7934519c69045fddef2844765d50dda6a2847dbc2391d36e1084ca3a727469e5ba0315831a8fd034d012c0c69424e1d7e5f97c33e6866f1eb088b90e8c131c0c6240bfbf065255d8dd2157316563012f057d14760ccacb3c2ab094d5855988f1e48dfe1497d47268a60bdf792055639114d9de0e9e3a00adc8633cda82bae583028d288f47a691a1513dec0d1ce4c81ae377e364e705a2b73f043de134b39d8aec700f201fb4a63007fe5431c162e232362e00a3ad20f3b8721cf539ba1cd5d0b66d6ec66ed7526645bd51a71b799986d7d63ba5f694399b59bc1f6ce166b163333cd1597b8b2ae26090ddc74f4ea2ad3f33b094ca3de354dc40b9dd44e089e255600e1f0b44aacffabad548d0686ade97009a73d14462b3bf5cd0b392216154ce6856268582e8c8c5f89eac40b59788b091b0f6aef29782c58fdc68165453e66a82e8f3461b414ee17ace308920278b4419a435d718c04cf6817d061a4c0f28051e81da04e0c9c40592ccfaf4426572aa81f8cd6afd48fee12068c9f96b30cc0d46e4b93e772cc7d516338b06b9edc3db5219a321943557be3d1a35ff2653506887b2f59c74487962feb0131b9b19b4b8130f206d002d4fda995c747310125c35f63095007b6cedabb16845b9fb8e55fb252b3c669e02585f33a806df306f1b21ae3366a37300efbe706613cf9ade2ccf233cd0bbf428d741c4fce9d354793539f8bd0f302c67493fa1368416ed2ceb4905c44a7e54e26a67dcf084e8a545815a56e3ae610fdab89c20c672cc134e0dca2425005cf610ad75930d4954eea14e6e6b8e3d19bfbb9daf1c7c33122e5abb208da52c9550a7f08a375e2869317c1f85f0d61abcbb13ac10d17d32de0ebd2f1650b4ca186a983d0d922a3f0c714beed00aac5e14925682215e038364315c25169845771e893afe139221a4ca91ff18ee1b8d6bba915771d808e983dee7a37ccfcf41d40853462c0c71f0e51cf5d4fb91616fb5da5b04ae9aaf54c524058e6c32da42e8e6cf1e9da56cc5a148c9b108daa9617674bb1b526ecea6afd556066a65337701e2383088331fd8c6c85ba0d1a243f25ae130f27a80629eb7b9f49d4d99b55aa0613255377c3d57fc65b3a03dc236283bc9211c696275c9ee784a3dcc8a901a7e5b0fb10d9abd7f9d119f71acbdaee9b0901656e43258558b6e273920520510926d82a3d1af5ecbc85f073444de33fb9469c839026f45985d144d3efd454b52db4eb72daf21559cc837d1627db3e3290103d592ed811102c201be3d9f16175cab954c603da8dd54ceb21ba26aa3357e0b9ea5c4dfc22aef8e43cb496526b5f3a9687ae28524cc61efa535dd5fc71b478c944275196af6f453ecdb128c66fa782c5dac3bda0c1c8326b3f810c54f100dae74d4a3290b44ae1303f3f3f3f3f3f3fa37d5c5f5f1f5349059c937293db39360241ed782529292969325a01000000000000000080419304a4049204a39eaf346ca02d64d0f794b8e0c4a37ffe183413c4372ea930e8525c10fc2aa5640e7941e3522dec95d2053dc658e00fde8591d5b6a075c184490d525e7fa12ce8a1b9f26f6c99b8b815f4ce0f0f26fe39ec8b900a1aab24b959ac1f5ec6299afcef514bdaae169ba2fd08f962294bd1a68fe5afc67bf120291a6bc820a5f3678b858da2478eb25ac895aa85289a9f1656543f48c687a2ef16993569e8a068f3b232b4285a7c982c52309fe85c0cd9ea2eecd417ef899e45b93a34742db245279aec4721464ed5e1a2e184ce265a47791442c5329268a217c30dbf104ee2922313cd4f308b3a13d39a62a217534ae962fce67ce6257a7581b9a885ee38a9257a1421a5ae5b78681d57a2d59e141f8f64e1c529d19488b57f859c497d1200e8c148a2b32029f55f77e74a22d14b5476867a31cd1f906845639c454e1943ce8f68251c741f8b418a8d7344d3389b0da7e221de881e5a9a930b254b5fb68c68f72d498a2c6cc1496a1751af03877486cfe01a45f4e011e38c8d443431d2b2677b79478e88662b76c41cdde7168b437411cab5a1599e8618a297d0b8214224f21b8568a2658165a954b8282544cf38a5cf795c4cf1419011443bdbba924d0d275e20faf8d85ce78ab21140f4ebde9131ea64b099fea167080e82c5f04ed50fed6e98b4284be2abef4397059a252d66f1b3b6c3875e7aa31bf9b92899650f5dc44b9018eed0af851e9aca626185e88ffd28230f3578e8c2378b7fa65a0c420b35cc1d7a783a1983314da9208e1d6aea7043879a39d4c8a1d3993267c7327f721c9a28ed14eb2058c6221cfac6996dde17f8865e10aa9fe5aad91d4a3734de90d1fa244a7ebf0d4d4873ae9608ffc9b2a10dd54899c6ad90b186f6daf474f4c524c1443534d9f9a513cd5dada7a17378515576f468a7a0a1cf6913758ae2e20ccd994f9f83178be10b6286de61853b0b2a2353b60c5d7abf6b4c64a1b964e82cdd2c3ae3e630f1c60000188c18fa2e9576748a594b85a1f7d1cbba7ffa58d281a15179957281367ee417fae8987831c638b5792f34a716d1632a9eb3285d687c5d7d5ab0e22c23179a46594226ff8bdd6a0bed4b49d47574b1c01fd342935d59db5f1f7a363959e8514eb8c4dc2ad91f0b7385a63bcf212ae423efadd048f016f8b4582c0a2eaad0570b9f431b728470b9a28fbe10b2247325b5a0426bc1acad62a8e56d58b178c20b42f20bb1528a33855ed62c48350831bf149a6d14272659160b251c85d64c5ca8959ddaab84421396197268a9c5b59ed0834c73698cc54f9b7242ff6f913ba2c4bed037a10f4b2dcc87d06b726142d79581497ef7ef992ca19f8751592e192e6a95d033f227554799fa45127a1997c917c2757386842e03ad701925b390ad23f46217d917a8566851444668abc5fad0991bc58917a1cb781e954964a1ff85084d9869ec426bb05a2d86506e53ef4a595c0e2134bb7fe262f9a84a0d428ff719b4525eb99c40682e6588fba7f739f0076d3a3ec655b119181ff4e3700dcb5d68a5f5a07fe8522e88e9294ef1a0cbe1d0fc25bb4b6592ac01b3835e6021165958c15a7c080c0001b43d8c0e7aca22876616936e981587c9418f4f47bea14688cf241906078db7b022e83784b8c303ff47644166c18b9db98238d19cb505af102fbb5ae5b4894ea2acb28bc41fc50069a27924ddfd39e1bde5052813ed4b94d9fcca60cd81a0074198e8a9cba247ba8386ea8f01822ed18ebcb3d84acf7b4b74fae2eb7cb2707cf9fa0355a26d516894059251d27f9cda8128d1f864d4299abd31da50aa034da287f05c71e1a8bb41152049b4abfaeafd325f91d12af48e2c126d9e65647d89f47640a2398d6a142e16112d8e4ba047b4da183562632989f61cd19c658547893293b46d441b1947ecf4dcd27216572046f4823c9222bc58d0f8ea5e418be842652bdf9c13270708da0aa488269a459d90ab595d9027a2492e48590cf7c50faec18868ae3172668589741c1da249a97f1dd9410532441b93f1bc1d88c30da042f44c11926847853c161a204274d5181d440b2cb528a7000da2c716032dcfaf3433175a0312043941e31bff5b50c9828f408168d73f2345b22040b413342b55ea466164575a01fda1eb8a18d1bb734e1e5558012006e4879e23c5d252407de8e5d734fdf7290b63fe03285382f8d0a47e2cf2d0add897c1b4872eeebbb85452974f84f4d025297f07a3ddd170a63c7429e7b8287f38746ff17868e623f4c754a53ebbb843972384ca7845e6c72476e882849828d969b90ebd60a3a15f86177885970e7d83c8fe30f2a9c8787368f6a531f3c72d8524911c3aeb4f77e16e544afc0b1487f6c15667257de1d0850a5d998946a923fb86266ab479f78f3ed6d00dbde0321e5bec3ca92f2e501bdaabcc0da2c3e339107415880dad3308d533199f31c8afa1cbc2963895531b42e46ae84924e7c56ff134f40d2a2f862fc8e2df1c0dbdc8c7729c84a4fe62312be80c3d76ec601dd7db302243512033f4ab19794c624e839c2881cad09a36ff48b49c5723c9d09a5eca090e2dd4b21f061a43bb578e1a8f0b060389a10959647e9629c8ec65f60a0a433b6b1ddf20b55870f15450a154203034931c6ea330795918ef1be80b9dc3f216ef5c48eac24c0de485be613355d8df310d4b0cd48566cd4adf2ab9a05b945b2410177ab2b4dcdcbd175b3c7381b6d0eae3b518f3beaf5f05d2427f715de028863b48ccb3d0eb9c59dc6f51bee08562a1ab0e87172cb82047b357d015fa920b6529435690155af9ce49f1752cda15a80abdc8fc7a7cbf61836574452faca859299f59e4a752a10b2e2ff9252a3e0ed0684597719c382cf99eaf08a7d0b7ae476ee85f3e61429c782029f4e154a92cecbc18419a81a2d0bbb8241e3a23cbc2ef9c015906824297a2f17bce1e077a422f860adf3b93eb18ef849ef4af3c2caa49529ad06316e645c8c4b72c137a07320de57b5e42eb9ffea294923bd15342a393752b3f74de2c09fd0b92bfa3fa8f84462faa372699e4fe113a6bada4bd33319e374297ad720b1fb5f8293ca622b4d93bf952bac50e2742df1dc97a2bb8d045e110ba7c212f460bed2b8d0ba1d5d7dccbcf8c52e841682432db731c47fb09841e8c64d88caad2157fd07b830bb2b8c528498a0f9ae8e2252e967f317c3d202a46403ce8c2e38949d2e83ca9eca073e80217889459525d07cd8ec5899347ddade4a0cb40d625b33aa9cb38682e5a47e8c9dea0b5c851da3b3e1ea90d9a791e6bd4d7d28d1a74193919b2585d50a1412bdf50f729551c1767d0c41468c9ba48766b5e9c176c40a845f424f1454e619e0dd22aa814d14ece89e71c0eb45c602562f786356b7312ab6cec988890c552ca294de0085000dea210d1eec884d428f528bd0ed1e9f5839fcc2fbe16bf5586e87423fc336c315603ab10bd8b2479ca64cbf9628b105d4b667136de0b17f119841a718d5666f12c2a115de8e973ce2e0aa2abfcdd27d9547bb22825103d101744ae574b051526860244974e129f29a274af3fb4a55ece2c36d90f4d167b7f47b2f89be9f6a1d7887c0c219b33b9e4430f27a92747a61c92527be82b5e0c6223d52b58161384d243e342c7dd9fbdfe30af2b42e5a10b69411c3f697137458c50786823a383efd3e9178b9926d41dfa16e87ff9496c58961d7a887bd9fb19e457beead06591b750c2bcc40552d1a119cb4fc917c98f5673e834bdc1f55be448962463a1e4d0636d2bcbf0581475df32541c3ab90e67c79df1a8151c9ac7757917684766b1a85d40bda1b190a724e9bc182a37f4285aa0cf6fb1275fbeda4016283634312ea8f0a8efad7aada1072ed0ca7d112422c8a506aad21a9ac5591e2ac4c41b6b64d588c7a7d2d0c65ea4c5572909afd0d085066bb4bc0e43225767e83173053fcb483fba2b33342e9c722cf07754952a65e8f9ac1fca6c3a7e7290a1bffc623017933bc83fc7d0c5c6ae9ce6d3d28d1243e327258d9ac5228ead305c8101eb0bcd6493f4eb89a7ef7a79a10d89117243fe84d0aa0b555c685d14cd727e8b3146b026701881da421352fbeeaba8c48bd57a4069a117b518f87c7573b4372a0bbba07da6f4c551d95f2d2c705d81cb0a3d947146a7e0e6189669888963a82a5ca1ae68e3bf229f4aa62cb345052d2bfa2f79758a551591d5147a3173e307cec8a2742a29b4e358dcc041034b141a2d6d7531a52c163af8a1d0ffcb4956c8c93e7942d3a2366f2ad9b178e1842edebc4c1e845a16e74de8254fcea48cf9e2fb4ce8bc7c2e468b5168085942dfdb502c379428f1544217f23fd1c94363b224f4c20ab91b3927758784be31fbbb38c67cac8ed087a4d468e4bce9a06284d685575615a223bd17a1996c1826b34e0d1b44e852fe27ac396316c84368db85e7c85d2284265a72bd8a1a19a30c0942af13de5cd071d6e27500a12d7fc740f499c5a0ff4117c6e725de43651fb4e242f9091aa2ff720f3a756185a858897c250fba1c8fa3ff3aad45d6eea0d976c62326518ea7eaa04991cd717553b2d83207cd63414b7455c6ee2c70d0e73eb464708183f3ee063dbc183fb558a58513b141fba14fd6a28a8e6dd6a01767850b257453332b1af42c2feaecf8bd149966d0ca64c18e755a64864d064dca9641435bb4b4f818347975925843a6ce0b83a6517c2855550e7c7d412f7e081965310bfde2e882762aa3b418b9b6205b2d685ebeaa222ba59b3e66cf502c68b264cf9e8cb12c4a640bb5827e24e20521c49f07195b512a68fe852917f152722e879f40a7e822f79347fab3180b4e53f44062e5bda83cb32cc440a5e823985c34a87438491074188814bd5828991c646ebd7c99798146d1fbc5a9647591fc0982060389a28716b9203b72e1a168e7a2b83b9fe3b0c881a2899042fe1b8358e53fd165d4207e955d204f34936de178965d7c5227ba06a9f7869d2d5ad3a35b6234c2b191f3e3890d087015e68676565c702dc99f5116c4dad0887b748398c950bf3736b42b2e46a92a573a90d3d670cc56548bcab986843cea30d36d3907116ec0d4d0769e3b9c366543392d0dbd3e4749ca1833a2674343e3a2b0aa90ef183e2a05b033f4bded3026372f7e6a1c3033b42a5d2a338f4298ec27c0cad03f9365cc225990fb0529da8091a1b9d42b69f7f970086d0cc48c67896a75445b7a3ac3ef3fb18a2ccc77a0c0c4d0e9a3c49f17f50b27c42c0c7dfbc8745834e7c3d5c0d0bf538864f0c7c872f685def1ee833a5f384aa500cc0bed9957ba28c51e753650655d682d4e4f859dd518799020d3b84055d816689816ccb24012302cf4e28f5e0bf118f744e202d8153adf1d4929b5545d9259a1bf1079ed7e4157ce6555e81b7f397606117a5d905dd1987fb5304fb68235cea8d0c3c71888845c55dea959d1c74335e38b1c74ba189b42934b2c645812331b2d5430297412526441e8c915b32834193c2d63f1ca58ca4219040685763446f345b25bcce737c09ed059ce7488b21b161b372774c9324ed27d7250a91a80b458139acb6251ca204343de8a8c093d58cd7359d7eaaf902da139c918cef1fbcc252ba1b50c72b28de5f18996847642681279d90bad18129a7db1d863e2d12a45003b42e318d6c5526a61ceecf82ac846a00a3023f4f31455c5253a709eac085d488dc617c4c76231348c088dbbbfeac36ec53ced06604368225a7cd2e2168b856e99105a4be220d673b4fb20742173e390f31f4b12203429ce3097b1445efcf6832663bca053af2a8a0be310980f7a7078412e07fd7c2af6a0c765964a2e6267d771c9832e1a666431d617656ca66c075d435f75b785e3fc94a4833edf3f24fa5a1663686d098c039683ce6352d6cb287ac070d06390b81519496c44eadd006b37e8cac2fb51b614291d3b02b3417f79625fa80d1f8b9f3bec80d5a0c9c276528911f9992a8c94186034e8057171f1b293bfe42b0536835e64f99fdf1f9341effbacf13bd762e72c065d49e94fe5c74277589a010c063ac6a974555fb848321ea3394366602fe8fb2f8bf931d0055d6e939e6b9e4b1667d6821e56e45916e49308b13116b4a1e9a832724d3dd55650797b78b839ab965b94b59871b5c5ce26ce5041050a4c056d652c70f1ef355bba758ace816361868b528b32b5482a4099a2f708dd48c9373233c3017757a568755ccc92ffd9f2451652b4d5427f810b22e9b8a0a95174151daa334fb5184514bdb53023bf38a65c8cda2a0450a168e33cc3a3c5d1262581a235098dafbf1a89ab5b9f68a4b1f80b2d4fe8e8211d9fa11d2533df908e13d1cc3152d94ef4a023fbe3e3d7c8169ce8542cbac02f9f74788bda442f88cf822e691cb590d244d33d59980fbdd92c7e26fa165cf01231d13eca605bd493727c1c75891e45f4cbe8daa1167f59a237c9169c557495684542935763ca5c51e228f94c699086738c6e9f469e1b658e9626126a124d64f18bb2844ea9ab5692e8e234666d313cccae54247a6ce9a01dfb45f1a2a820d1c685ec2857c82d7ebd1ed10b3bbf2d56c3742f03508e68679f274f44482a41661a1fd82cc1094460d5884633cdb7a1a4e3e145028a11a3a4a89b0183fea8326310428880080821841042b23e023204411090a62884a2946294517e7220240c63208642108443180641100421403006411004410821c418a3c122f387b200a8d55695dead4f23c2c12d031192efefabb17b9dac64b9c5d61dfd8d30d9c7e1d6df77963f3be0c50101c0cfabfc7d8700a3e55b59c4f81e889842bf2dbedd6769f9462bf8f556fc8e80f4f5dffb321e5e5040a9ae0fe27c0c2488e917a39b70f87d567a6b2de538e4d97ba43f9015069cdb04b852ef80eb234eaf2b288e72448a782a93616fa98473f686e3832969bd1f7907eb736a23eddeed3b09c0349fbc5a9cb300498d449fa0e9ee0185d58b4f79a123e3c3936229ba5c0079969670e510817a0c3ab8f166d697111a60b552a1a57d974f837f31fa96ea15ab939e4f2b52a2272def9815337ab57bff6172bb25d2f1c752181318c91d29b3cca92e7b0480893d3c060f9b6d16f290ac8703fdc5719599c56b1e52b29ac85bb85a240021993a896c2de6d9cce63b48c59d6cc41f22be1aa37b3c4b13ee23390af0f36c0295977408613d226efc8085430c904a92c9a54a4ce2855ceedee59385191a7d4bf4fce7308f2d8a4a4dfb4db440fc5b52a78333d4465f9951027634ad7352f425a1f8eb9631fe7c46cedc938c26c8de3cf6f745f8323850b506578d86f3d2f64132e3b7f22e84f5a8040e28baa1e82ab009994d2d785a6ff8fc07d6ab3e609ddaef183e045444b5b62d4dec2a7e32e6f595986dd86efaf0b7167bad0e21671f38bbfa97ca26764cd1b50d197b0663167bef182de33c1ac5e0c7b1c3aa4cea183b393d4cc18d03a25e3b048c5634f88332a7f5a0172fc1f0bedd9f12402034faadd0a03903d8e1a850843c43e12438bd4049898631246a87e7517714f7d2bd0859090904024816ae84c43af7a89e7eb06eb2ebf3a90313a601d7de80b17a22781820f8bb9841b34232f4af1dee01d48ded65c5abde7e020c02861e8095b895748f89887c7c2b47ca51a321195817b089d26e80f016055e83f0220aa3dcf7116396a7b3c46eabbde7472281dcf4257e528a61e020b04bcca1cbc07f20aae2ff553cfde57afb3c408cba2470b96a7486d42ff40e4ed4e2a9bed7026719e2c5ca82c969df30dd139359f4c2cc40ddf2dae7291731b7f5416a7e0d88e51242bbb680dc31a00c12f5f88b443d2422b27c2a636173bb1be000da63734e5ddd117d532c4cf07b6a6ea9770aaaae9e5bc8e30be69780c6ed0dfbfc97e18c432c984e75bd01e0162edc12c05ab6a019286f1d99e2a32737961871592ae0813292e2d0250f9dc8fbb289b2aff38534e1ccebb6287b87b3a218a8efb41292bae37c841f6c21276ab890395831985a5f8ee2d4152b2238dcb0b5ec2d9c78a6288f7116c2193cc9dea794d399cb55bced8154409335f5f80e0fe9d931a53fb5d408d2dc34bc8a07059b5a36afea02e7327ddf329d77d20713af6d447c05da69369e963b2476b850beed923508f947eea744d56754391e782cdb41e08753070e0da59f3341fa0a9872aef174040cf7107868114611a046703f5dc5488ce423e9c8880b000bb61354a6055c5c243c6c59b0dd3e451e1a14beac8103dbbba2fa489152e1c990fcc59975e5ec8671b62c884ad885bb781d59f83a454307592c75aa70b7f8507e2cd5f1c049821ac5566aa408004a1a26a1f8775d6d6b77d9a3ef71f18688f2aefdbb4d4cdc083d401acd1e2bcac78689e18484169470e09afc6febb74170a6a2b2815daf2d8d064a687b73990fbc052c03f514e051f0dc6c9f4b24ce6508213daacec59820d4717f19a2f9977edcb53285f1546d8aa667320e229850429420cd81a81d039e89d8d52eb1d7947cfa0599ba61299df81948efe28eb8eb3bf107e84e949e5b74b86702a029854d60e0a8cf997cf9c5c34bcef928b4f3c331393132ad43b68e81194797bf976db764f3b56d9767eebff089f5ebda3e79b2f97d965732bd9ad87097b5b4617a3dbb1d83f4524d6c375fd654f7300b25d5efbded93fddd5370e3692f08e49383964f2580dc10930ea9bbbf545e7b0c189f376fb53d6e5761bb9fb160add29dc1cd71d145fd5e5411e4a9e01fde5c069b2b212c0e75fe52f4c83f6f237a286ef82cf5f062ebafde4afae7ffff93000c64faaf91a24ce2db9678d211164f49f9ff7860cabfb18e0d2821855369cf126a1d2ade6a4c8678ab40ee0a32badcb9716e7db4bac3297a38bbb2b67f90638cdda58bef467c87901bae400773b787d9316bf4c2b3468b3e1b4af18838f46a42112dc36109544708d08430dc55f03ec393be5bcfb60ef9898abeec8373ad4a271d1e965976cf8b2e2f8f9567cd66924642d64b1f74b4737c0a9316f957ddc7cb8d1c4461657d0f09b48a3de5ed8e5ea61854ce786e1ce24a2778d89067968b896571e4ac82f3a6b0cc218bfdd56aa4149f34036e8c8693e6b5572313bfa992296e6a4e921d9d4c9343878546d5fc8cd684049a6a86d9e4dc7277a865b336de2092e8336ac4547d24a804835207b06fd9aa4d83490aeeb4ea88db3201599b5da38a52d83441753a68fefd8ea8b33ecbffd0fe11ef9a037d3ff9f85c87a040872e5a4a43086afb08659f19b4e0356e8874c8a98722d0c78276b018026ef7cfde33418cbe0da87748462242ef15a555bad0ef04f766f28c89ab23afc0b2592af86a80c4168274c284e2abdd15f5a15d472a193949b47e737c403a03550c3545770ad41205f07a30a4e044710d85c87924dcbdd7228ef40f12e5a19200c1a58e6e94a6d1398c76a0399262ff9f90938b8516adc6b48029b17b137b640c8d65f83431b42833d7eb7f0320e773290d1dc47698562c1d0671bd8d63ffecfcfee3c053cdf4290f0c4ed27e70c0c0d2985ef8b59988b438cf0dc4cde458aea71565809211cfa78ceb71996b1cd403c6bbe9fe961c9c52a0900b98ed8ef311c972946468b52f088e6f145c146363e9d743be098e3a23b05c71adf336ddd4191d57913cf16b2843121c98e48be1df5c2bbaccc47691647a9440c850781b635441cff1c235927ee9bb444cbeae9a657ce951844ca002202f414ded3440603fe71b243b434ea50f7eb905e868e242a1a7e7f64141a90d99180eb4c76d663e760ce2b2b96167664f9d8f6f8ee3b05e238da5f9626ff453594d1e3579c23aece8965f3531101a4c0c349494df6e5ba4aea837479bfbea5dff9c65a299fdc3417588cd8f758eefde0228e94ade2193985fc370460834c470bccb8c185e4bbcd01a4b41b3e3de4295d3c3e0a62411a4138ce4a7f42137a8108d1d8f9795d062980036ecb3a1963474796abd9812803b6da10f3929209c6606b19340e4021e83e77a2fe4562123b75715734779ab3bae4bf805aee3068b5c88ee902a71d941b1aac712481f02fe035ce6d252041bcd42341e5daba5983001f4bb9bf9dcb10afd2448e02ff87fb55d319e21f7dec77bab1bf82870339f11faa6e077cbd5cfea51bd42f193f22ab381e357cd87e3975def538ff1443f4f7919c3dc0196f662f54dcfb796dd4f2552d93796f33b116a31ccea9dcc72a1ffc5edf2b08145e887bbbf716dc7fd88d5af086be61ba6f93547ef802d00dde25798c4027ca1d595bcbaf59e38f37768918c69c6bdda75b5e49e381909f434d19f78ab03b489fa322e6b32a6d928dd9a3af2f7ee8ca6b19c375744ff065301db5067cd29ca7d6bbf8ec5507a2557c76a88179209c02354a88faa50379dd754fcf97add5b5efe3a3bf3732ce039d809fad707a73fd0d32383885a87aebcccf32707dd318504b2717625661d9b0d4c53be42560b1f1c611d434a99a8a9c591b0f44a61634927943c69b8bd4ffd2c4520dd2ebd77f6d066f313b9cb2636310fdc78bd3a996ad6c824deaeadc829f6825551f7d195b6063efc44e53f7323f4a907e3cab90efd46dee83fa64553ad378a28182dcc0794b2cfe735b75d05d95534eb0c6adbd76b12b105a5f4c947ee831eb2e976f65edb763fd37e8a9ef1e39dedf75ef6599deacf1ebb2b17649be385919c58b3be08a2395fbd1de5385fd5feadfe6deb0aa5d043fc8e62954f0213d02501c5cd4081cf0aed2f8f7f6523ae06d5565823be71ea1420c9a862702c40dca588e2df2459032ac2368347d6f5ed8350dcb1c20e456f18317e060ec997c66bfb26f40201fa40ee563490b44ae1303f3f3faf3b5f7be9ab97be8ea7333ec74c3650e6ae94d41b7e931a7400a7a4a4a49487440000000000000000000040670562055805c5cb2a91d182c74c64e85fecf820b918bbca03297063e821bf4466c718cb8b0b7062e8a71ca590742a35166424e0c2d0fa347089f9621737d60786e6dcb2381ab53e8b9f5fe8293ff2457961530b2412382f7479dc23cb0b25835c9903ae0b3dc850295f6c7561461c0d705ce8b29b5990718b450d2d07b82d348f32478a1cbea71b9f165ad1f795ce1fb3a014c561a1176e46a508d70dcfd65da1b7941d0f3bbca238eeac508be26fff4bdcc92cecaa80893bb63947698b7c978a45ec7f918a008e8aa3c24de1328bac742d777697f6a4d05be3f869ccd272515168c7f2859523e3f71a02851e865b67b8d0a17c424f2a0e1969f76763e684267e52c57d31e78b5a4d682afce4e1a334372703a520a00005f80144314a138e094d5e71a88fde12ba8c1c88af47168fb82f382534e9cf2dbef852bddf54129a06fd76730779d1a84342638d45f94b75afa3d73b422f96053221a621f9ba3042fb63a1dbf8451e955b84465ae52344ca078fd011a1896091c20b367527c702dc103ab3e0ffd982cbfe9113c2d8de21a9b3cf7d8e0b0211e3e8d1b25926dee8de20ed2d8f115d2ae080d0fb33440b19e6a7e37f3fe8cb21af295b26bef341d7a077e22a4848a6fbf5a0676dd427212d1faae34193e1bbe3e5ee44646f8ab62d4bc672c7212ad9ed8097ce6e5175737266ac8e14521c8394e074d038646516e375376381010c3c1e082e074d3c5f7844ba58103ec540080e078d48e5b57859ec92edf9988005ee067536e844b52fdf8184eff9ae064d6997e335cb980b7234e8da24247dd8690a97bb19748d15b44b9d05f99e0cba7c9625836bfdc769e062208283419fcdd02dd07cbcd88f7b816de112d5152fe98d5151d9529214cd67fc27e1c0b9a01734566f3caf8e45fee25ad07c74e4774157b5342802f563412be578623e29ee94f5a8eab68a914bef56d0e8787597acae3a889f0a9a64196497822652b328f2513817a58782461e2cdd7d246a9a020b45cf5828b95152179ac6ba0203458f9db2509f2f64f6689fe8f20b22c313cd58163eba7f37b4f8c002c03ad1695316a35e5b8bbc47629c689f253f9ed8e02198010f48608802609be87b659e75dd21b52ca689268883a4ea0a2f9f0ccb44ff17ff3196feaac30613c54487385a587474b668e5ccc88c3016fec34bf4cc152ec429ae43164c00db1998259a6fa01e31e256f35830402b8555a2178a3a85b3ca38333229154689268be5b164ffa1d73b12d824baf217a52421e3388d00bcc5d7009344f3a24ce9588c72e42e3d123d85d8d32fbe1022c52091b678bca734ac645aab47fec93c9f16f68856e72d57e8df6be03ba25975f0a70f597a92a311fda34a17b7955b16d318d1b9a05194d4ac6e18670a5b442ba91752e1e245a1889ed1a4058e62678fc4024b442f79d6f21c2589181a9121a2c9e0053acd69b9cda81da2a7f8152db68bb1e65fa5031fb822cc23334453165f145a219ad482dc5241573f4e3542dc100eee8e1912cfd42c0ebff0176f3d11b441f4c2bcca3e9511da626182e873238e837e88735958208687a7f830579189ed868cb18c41664195636e80e8a2844ecebd862f54171dc8c01face886b90e89ce484fa98a9cd54d2da6249d991f7a0ae1cf5e2ed6fa507ca806981e5ae79e8bf8d805f290e6a189d4f0b21177faa382873674a34278b98fe3efd04770aefce2cc9f8d85519b1d5a0bd1725c168b1d7a6c2fb03a74f1bc2389c33977ac81c0e88035c44c84ca86b820caf93906f3ed90d91c7a617bb44b6c81affa72e857f2fa4203c9662c0e6dc0ae68273fae5938a3ab59c6a1dd6a744116f7bc58594c05c0e0d0a7a3282e7e41e8c9947b432b1171ff425b1297d68ae6ddb971e8a4af551385b9a17531ac2a9fac8c680d02514431da86f6c2e1fa42bc9255860d606ce8d529e5e577ab6b14a8384e160b661e256468dde27cc39f90e3184313dc63b2b01543a7fedd82f0d5df42c3d0c754109d8f87090f0c4da4a48e165a0b5f942f34214c16b3bc47c6c2bdd085368c9476b9286c5de89f233bb6a5e4829d0b9d837eb6c9f395575be8518a85fc0589d0420bcd3b5cd78dcac212a9b2d048e33809fa72b945c1024926b88464875ea1750db71049afb51b5668aa458e42ab45157acb712d78c699d92e15fd6f84881f7dec36a9d03b28ffd4abe4fee3149a8c39d9d0ea2f167652e885fda0f45bd025ba45a1ab46ba23791f36160a5d7669c68c1bbb58243da195b56ebc2e8a8b66c8093d4c76814f6c8bc9f226f41651b931498fa406137a51bb8747b294ae2fa1c90f4175b3ada15542e7cded02d516a5879b845e78faf0d1a2aaca14094d50ffd147c93c422f72516a9c1027c98a46e862b718f58b42aa45117a527df13b6345b80c89d05ce6d40a9545e1641c42936422bcf9e7818342e805ef707e267bed2cf20a0c42eb485b2ffdd9b4c4cf2a1008fd488af6f171870eb2422bf0079d94a5c6e9825131d1e7c8803ee81d2f8bcfdd1b4c0b92d98326663e7bb7c8f1dfcacce4412b311a3f155711719ca2c84c49093351d9542989e2cfced413accb823b681aeffa3c965e3885a883f62acf0b4f7d7ca3ca4401e680669ca1d6672ef8768183d23b1e421e4c3e3b33c31b5ee8c85c90155bc31b742d8ae162dccb39daa0f7d217839c84d34bc11a34279152fc459d16560a0d7aa4f39245165ffe2b3e83c691b9506432afbc509441d370f5aa59941f7bc418347e39f299659c8c13c2a0f3fd4992ee318de621bea0ef5d8709794474413bcf39da402afed4725705b6a07d16c93e48bd60fe65710159d065b790adb2193b94a23d9d8695197889852b687af345155fd2a10a7a16639e8c8c92cd829882d6255cf9f385d1ac3ca2a0c960cdc5cdada62edb85a2a98c5812a3dac2c8940345a35299375c5e3095ba4f34714f3bcebf65e24c3cd19f377ec166576c73ff3ad1788b9c51ce4e3fc6f271a2b32897d51f974498cb269a94b18f4bcaf2288bd34417b3f22d8690e3a2aa64a2ed97ec3c8d5298d91d13ad36b320be3348a690c5255a892e16e557be36362cd1acf95bc82e0612338e4a742e2f1e938e12fd7ce47da1574ad5c27612bd64980e7237a656ca24d1639d8cc5b2f8e2455691682e97833ca703ef1690681fee4f6e70690cd63da29d5417bcd01f4b4a6838a273e98de916778de881444e6b31ec46bdff31a2f7173f8acab0b94554a569a60e214d6a9e9631208080c9534453f15f50913b3256382f118d3e47c49638f167020e113deed291e8184c23840fd185a772715afc17f36b6788ae1aa31c21c2c2f2eb0cb842340ee2b005e9628e08d1675fb80ad720b44b45c00da27dcccd2cc642874cd126e004d1e3e3e61663bf18544effc224130b10bda0b9829bc349215f5619707fe8a59df14b9363b1e880f3430faa7d2657782801d7874e475d2ce8eb06d119e2438fe227e5b7e4b3a845d9430fb2f8b75163747d8f7c400fcd64310b62637cbafe6e1e9a6c216721afe3a748e0f0d06495a5ccd90ce2bcabc0dda1331d67ff1634c855a1089c1d3a17174cc6782b9f439f025787fe5fa42de71519e5635ce0e8d045f5888ede8cc2fb836a023787a63222332462772772683bdcc5821023f70519bd2bda53f1d797c612e1c5a12f2f9de8f50d673de1d0a6eaca9944ea7217f886ae45e1b22827e3d5ca9f15fd0b82557a0b240bdf41ce0d3de48a6389ab54a6946b4397dac4e164842b5901c78676c6b57253634c32216be85d7d27c85c52bfd0aaa197fce27f0a29378c6eab01978646365f0ccaadf197103834f462b38a7f144dadb3bf2a7af19b88489c8ecb3de0ced06351722c6e877d91a32a0267869ec5f0cb1d895e72ec3e50860e4e68ee94e5d05f9edf8749f9154df08a2d7e76a9fce2d0e98416b566541915383455cd022f59dfd043106f518b31648ec38a4ed31c475f982e90b8a1af106b6f78fd90721b5ad359918b92f3b16043eb93d772a5486da4aea1f7f57308f931529b6ae8bff3a21c8ba96b97861e64513ec782d01e2168682f1e39c49d30d158153d06e795e448a451ea0ccdba20828b9f3743ffb2d7cde26ab12037a30ced9c578e686de69f0c4da58ca731f4179a3c86fe1c226268b73c1eb518da5148189ab7482e5eb991db83a17158c9942bcbe217fe857e5c2cdeeb9c968dbdd00b72cb52d87041555d68df295bb0a5fd62310b2e74cd15e1e1fd82ec620b3da8e8a2721c8f2a5ae87b42fc0cf16ee19b85e6716e956b030b7d9bb67453377041aed037e7e4b9d861796f853655c2a96b86b9c855682e1d3c63cbc27e1654346929b43efe140b2d159af02213758cc13c48a7d0a5acb3e0235ddc782934e2d03158bb9c36320abda84e0b7ffa4128b41bd12da46f7c4bf784661dbe718e4a9089137a75e0e620f245cba29ad084ecb81b638c08116226741126111b99bc515f42ffd3aa1325340de73ffbbe7f7a12badef86bcb9c6ada02095d30adcec921a5d738422f8a17484af1518b6136425b9185aae51117528ad024f7b4143fdb2d5722f4a250b20d36ab420b1c428f752e659ddce28708a1118beefd2161f5ba2034eb26f318d93002a167e8987c623f68b3af32eccb102a291f3493bb61b3c56816a71ef4628165315f0bdc349ce5410ff9d84dfa62e2ff146d38e373f117d5c60eba881635f0b34c7db90e7a2f73c91688c38a72d054160b2aa38bb5e459e0a0c921a7e994bdd3b8413f27b2cda80f0ddba09599143ab32957aa4197050ee2f0284e6c060d9a46b15d1eda66fd0cba368d08ef2d148965d0b7b558279f85f1023906cd3f707fc1864b76c0a01763a5e97eb3285bfb82be2ac307a95d1c4e5cd053af3332ad05bdaba885d83be6ac290b9a384de1285d26222245efbff220c5dd245eaca0c7f3c2165565a8a057f173e697b83c730afab3088d71bc30e544417b59dcd9ab6e289a7228b9fc2db3a380a27394501291232bcd4f7422cedb0eb22764819e689fc57b3d3f2995749de81a38166c257d0c164e3429590c5d3db72c7872137de517646e78266fd1443b62aa9d8e05312599e877ccf10b2fcdb32f98e8923a65f002d9c825babe202fe5e019466f89b643b4719ef3444a257a2c8cb5fc0beab02d257a8c9f0e8d318976c2bcd8b2783e162a895e28d1eefd92329d46a28dcbfdb676142e4a42a297ed0c95e4d8e57f44d39859e8de577aa523fa7349fda8459afd60239a46599276b6b832f218d1436f167a455f687f11ed636159186b41e8d414d10bf757f5dd9c1a1c4c44ef2bf3c24ad523a2f3b5f8c2b7d0a2a61fa2551fd5379db87018a27794db501b9f29e34274e96247a1625f089224442f36ef38c7d8c522de20da88fb2e9c8e18f91544fba2d094c5e8bddf59207abc9bcf428b2b970744131de3ecbaf5a4f40f6dc48695233be31eebfcd0764b8b0b3d2744bef4a16fdcfa901b7ce84332480b2ef8688aeca1cd66cabc25d95c7a3df4e23eee42d332ff3d0fad83aeb8952578e8912409c9d363a5dfa14b2ea66a6f416cc90e3bb46e8e9cc57c9e8e731d5ad57f61ae978b59143ab497ef58d6f2b7d0dc39f4501b8317346551667268b3ffbb593c0fdcd22bba0cfb7e29251169320e4d7f96446cef31130eed9a63cb698f896eec0d9d43b2f078ea606ab1a2d9ec937214cd4c246e68da052d168645dad0c5673fcaf1870d3d981e550b51fdfd1adace99ccb9cce96aa8a1b3a86cd2d295b19f86aec1a50c1a9a6092b14ab046e170158d5cceef0b13a9059ea1c7973da4d7991a3243d32dcc089952c46ab20c1dca875eb067f10d5bb288650c0f10dd43e70fb20ee31b4ef5e281eaa18bd4d36951c6983c7429449ce42c8da2c3a27868cf3b1bb425937c87264f37cacf2f57b9c50ebd28754effb354b2ca6a1d5af5984ead78fce2950e9dc388144af3425864313a87465a4627f3938e3bb0052a875ee8c2af94911ed338b211e815ed9c4cb558941131a69640e3d044890a140eadf5bba75b5a8b1d7847027d43ffa08e414ac94fbd1213a8157d4bc840f5c3237645d40d5de57d08fd8e528e6329b40d3db4c506d91565a7522640535036f4f3d896423417c39c4c5141115197aac8288eac0555431b2d16537cb434743a19637416794e63960a4543fb98ce1de9c2e6d12a065a458fb195a50697a229f40c3db0f0f8c91bd1317645590135431a0f64d51de486e59d40cbd047c8785488dbb1e7c2950c9c6894c4696b87b8037181f4be182c4cf500191d83a9184cc3d0a839668718fa58e88c0528183ab578c17acbc55a95fa8526f96c868b62329852bdd04439f6b9ab5d68f51d46cd31cae2b928177a103322a5273f08b16fa18f941c2efc4721b4a085165ae972c98c7aae427b9a855eecd45a9172fa1015c5420f3f1d7a85e62b3f3a8538b4a36a85c6b1a852928b8ec5a0dd2ab4a193b5c142708bb8948ace5f2d84e0b3527951a542ebc81cb3206f6485884e614e930b4b8b96776a37c9ae0809d912954217262f3b3437895189422b9179276656f69640a18db71411f25a568b7f426f7d59902df2f22cdc093d54c6135f524d294d682e33fc8b91c55f30a149115ea412ffef8e25f428638cfdbd8d732aa1e76d24715af0180b1b49681ae5f64618936c2d121affab105b5c16b2c38ed0e78343937917c50b233411e234832479f028421b1ff931163988d0f479a6a7f86b3a86d085fe8408adfd2e531142e7ff62902c5f2b41e8b138231eaf6388f681d084a394c75fc21abbf8418fba5b90b1a1e283d65ad05266a6f7a08f75478e91a2468bc183de9fc55ae4ee0d2da6e8251d62540bbec51cefa08fb116447eac8a2d74d03c8b45d4e25c2cc86d0e9a581e2e7e5116598f38e82a0b9dd729bb564a6fd0374ab9f11d4cfc0a6dd0356fc525af0c7cba1af453c1b3526810d6c268d045e599cae713fac50c9a8cb218ee8c25cda964d05ed616a3901189412ff8714116a3be8cee61d0c446e671f291970ca7c1eccfc7ec8226aee5c3cba8c4f91674392ecc1c68479b2c68e264ca9f4c77eaa4e8316cd5eb8a887bed0a7a167fc9a8c52592511574e282eca616cffd22058d668c3f7017ba20988a825ece5110ef42d1e434eb847ca22d923e9108f944275b2dae94e7220ddf13bd6e7e4e9a47c84a27fa568739cf7950e982134d37434ac72217f9c726ba725fddb4202183b0269ae88218e760fbcbcf443397ea0e2afad1c54497628ef1259ae8b597e8c560f912cfc931a496e8428bc3946b4a092bd10b5ed83a9634a2a1a4447b5954e1052d73d19d4413c729bc649e90a292e82566578babf371c248f428ae24584a71990289e64f1e631447ae31ee116de748b27486e6dc11ad4a778b8143728635a2b38c65f4d9615bca18d14eaf8377e143ee70115de6ccf9ab92f6a714d18baf81794bbec0c3f144f462dce18217b750bc82885e1be8c7b78bb341ca211af38989cdf31aa28df48a4ff90f462c4497f9d924832be78e10a2176447a1a64f0eb218449724beca243f4c05d17b6be4c9b37c607e207afdf78e7ef082f301d15a37861746907116fe87d6adc23354f4435f21e5930b253a5bf4a117efba20690bfdca5b3ef45fa1674e2dae2c720f4d59f583870ce7a2d443b3cdbcd7302a84360f4d84e465b150da2dc443174e76f651c6170edea1c79d70cc228b8abed9a1734926b1cac9acaa43cfbbdda2104d29334587661ff656c60e252634872e4caa4883ffb852621042100441108461108438af0f6220240e8328844110044318044110044110084110044110044110829079b60ef866d15c2b200b58e8c940149f14a7e5aa73c2486e9d039e32b4146a4b67f655b77146a196156460e0f5c36c47472444ce4cc50507da071e18a35a44f8639574612f211e59fecc3674eadc01a1a488ef05b069c28af7e7fd2f6c16e0585c91723f45805088a1d39713f81b33a4710052d1e90f0f825303817cedc2c042926f93282502f98612e63f6193af6812ade9a7581cd9db5981fbc681a89a4bbf6cb07721080fee81db987a6a6033ba8dbb5a1201a45fbe475c42b70a29649f491a0bace86ea4eaaebca8a6d3252bf2b2d202ee09952caf61dbd2cdfc64d095d7a58d0199cbac271dbf463995aa48487cefd878a86f60db66c359fd26f51da2f1e29688727199874d9ae805c4e1741748ac954f157a7fda9f5a3815a68e33c40f7a61ed903f942b8cdb027710a81f58c3797b2e10eddef5a5c1924c5c2e5236e2cc608d603f2179e029691df1140d0fa8cc388bfce79b9043be67b581cdaed01bff06d5077fdf9e0a3ce240db9d49a200eb0dd0a4ca7b7238c02a281a53731ce34f6ef8727a04876d7068bdcd0da8015bd2cd1e3446a935da53f7fef053b7c08752000e23e08938e80a22c8b3c397b36999eecf45e03fcce3faa847dbb279f5c6278f7b37d98943a29c448760ad8b088e34bd78a79f7f8bd121a42a738276e7302fabbda92f39d2517673d84e86463fb6af7dce5a4d5c63c57e3430e4738635c9f132629631274b1797d96182e7b83740571acee78ceb6ca19af1318ce56427cefcedcec7062e39d891a70d74e5704d76b6025cd35bc1c9ee6d263be07424d0c935949fa9d9da4625a3638de67c878d34e5913efa88cf851d90b9041b571a3769fb39dc71c39e3c6ee627b143ecc86ef2b097b9c1b18a4a29e5ebd9ee7ceeb28763de362a5f9d56ca3760289a86c9c4ede4759f9d398d490a34d041db7360674df824a5d02f19aef457de3627b3e319ccdd6e9055bab908c19c7e09a3ebb32baf8d79dbc00f6fbeb671c9c9aebc366c94203a6010132b72109ce4bdf3045e978792a9451a876c66fa571c33091684f8e66c9e3e663ac86c56fa6c60ca89874c0eb7ccc332e7f99624af018264b1f57a476d4ee3c27d66656b342271a8a9990cd49145591c73af6e1a71c7591a95df9d7673b623d77d3be157fb46f86479db259b209398fa19cfc14469b6fcf864f9a13f5b0371a763162601999bb4377453b6805c5a1693b7275153e8adf042b9ac67b6e1e579d571675e3dd88e5ccda97aaf69ac92a6b372112062dc63375cc52fe30cb6d13e7adf1d2f0ba30af557be1ca54e96cbc449dc4cd175785c2505c24012a632435dd439aab6aad149ea2552d802258b35df24faa896a36f1a5995ff6f508285bd71aa8ca2004ce0890ccfc86c5d1d144243860658a989256500eb0961632173f281ed664e2ec6b892cc1a27f760b69c07eed343ec6430b2dcb577ab3cd14449ff3cf2999c86774cf4148cbaa1b776d0ff1d691b486e685d00bb4ecba4f452d8c395fee04445cb9f1e4e3f1c3e56a9eca97e9720d6d255a424ac7aaaf635d3402f0612709fbb86c8031c836762d91e58d89917dfe360fd926349c8fdbea7e9c4c51d914671312481b1c3aa94dd0680decddcd1929b08bb47e6f73441922c63d5c75d97575564af1ac4ebc23dc7bc8cecf92b15aa8142d5aa69593cad545f2b03915c5248dfb5e8068ff5f30019cb7dd45507d3b26e1b691b037bee418dd2e2776dbfb51dd465ca8fc8e3c5ae7501e088887675d183408b1e7babde8728d052f8b7794f94403c1a063519f4c589a9e27880e2a9cd169483953b3330f5297041c7cb923255bdd1c9afb19ccb0b0e54457aa7574d11cfc2887e14a4f2e57d2c98f2843564f74a09846209059d2e5b6139afa03e3b61b20948416e13e245a6f532924e50340d4850355c8a5ef740abbe22c0c6f013a4085a7e01222e635c964d886b49425032a48e9200ec077a68306d3eccffc81f9e9525d34ae74df1ccc451d04cb3b828c2cd9bf4ca87e1f279961e45b0e65be528503a3fb2468948fae1234521cea380483112a1d2113e3dfa448e23e0d38231b6187f943d723af68613b7574d1327887e7ac8c2b7ae7af2b43f7d622ee222e309708e6ffedc22a9c23fe6541cd118c5f8c7b8003d29e6f5238484a5c39fbeb6e76d8767b2f27b3fc164162efc201e16c1fdcc92593c3ed78b4abbd981c938c7eb433d4245af7a35019aca5fba63574b260a2ae91b3c212c4063b2ffbbe00258f31f28b9a0c8b0344a88a2813b2e075c61f16272bb6383d8e3347074757c8d001359c7a0d19ec77f15063cb343485a548796e2ec357a8132f6d3ad97d650a44bd243a2a401621ff9970fd7079bc91709a8ed5c98749b5d3c6d50b2b6f43b30769147adaa5c066d2cc1963d2533fcefbc84b2475ce51c15da2e395c4e719d2327085d644bb05863d300586ecb226d2d2e6c49563760285d958e66fc020c9425c641937f88af733773ee2d10f6a418b42c6d60d306adb64a39d8751ee888fafcb54d2580852f32364d6b158ade356c9435e6c306ccd7b351e3b08336d32f1a0c3fa2cecd8bd3303fec472e187530dd333b63dd2c1c7bafe4e10c2ed5b78a638fd6dba696d6f5252125a71908f669f6f90b2b000f49258d5bafc71d475872fe7b337b309d8d19fe44ef5be4a1c085b59bd67f7f6176efc6f1a98acd6c83f31d65cb07a7494ef2ed52ab319f57bd4be80ac2011bbd457ae7703eca6f0ef945341bfaf7cbdbf5a201b278167a57e40cf6c439a6347781d4b862ac6bcb6a6d46088cf051984f7aaaa6e3f2e3c1be6beacbc45fc898722f9ef2884c06d26ccfd297d7690dbb9f6a5ba2d9112ba210037836b4ad61ce58c97654d2919273465e883142442bcc700c2e173263a364b722a453ad94ce1f9d3cba5c3c27e69070db87fc23071711a5f2016f4ca3941ce56745e10f1c208e1c2f0cacb5926747a7bb3c0f2204f4e2b443014cf4fa8e7701af2db83183ee89438399db1bacde7c1de7148e1b9f926007ea9c0337521e19fdd994a20b2daaccb5c99a8c83ee154b3ad60b2578a4331daffa91b26626123285c67c285f8edef9adfa8293a33e78f647744bc0204bf40bffe0023d832880f3518f8ccc05535335efb2ad3025f94d306e5eb2a9d368f56545eaa8f8f1bcf0f177fe09664f14ea2273143d1696b0b2854ee67e36e3ce158b0c528bcc8643c4f6e973c904b54b856ac4a5323381621d485cd2a7464c68d91ef4a7d0f2c502671e3edf93a064587d5a6420be4eac557725077a3202d58b5eaa574c60a7af0d90241354ef32a5f39a3934a1114774507bea645e3025f74c9b6bc85c16f403fcc8f9e9d3f188604ffdb180a5b99e0df3b290e34dcd5b6efb988089408d947a530114622cad06c9ae5c6a39210ae37f68df8dec48a569f6e01085aec6ceb42e72fe50f003ed72275b78b8938437e471cc939ec968624c0317acd69e52ca0441d867311c45ca437c97ce1e1b63b9551830a11b0594be59a428480d16d660c36d0603aabd77f8991eefb5ef625663aea4c9cedff36f69673240647b4be59c69f3cf9a0382849f23a2653d9c69180accd34fe3a63b46afdef1ed540b1cf258b1ce8721e7af03d72e361519104f594d86288106851ceb3bac24e7428f6ca09d4ae2044e2c83742a949ab46fbca9682270c62c65b209a67db434800258e50456b0f3b606c460506558158267204845cd74e5da3c95940c79ecf5505c4b8fb82defff5890a7f61c3d78012aef22743270b08224073ccff33ccff33ccff33ccfc36f2f305f44993619e0f2b24348c8b2acb5a4a4a4a4d2f77a76bf20de06dcf24018f70615073307550e220702a1e7d39faf95a7f63f20965cfc0f334759b7fb80289df6e147e3478f2f88b972cd860c1da39dee01f9272dcfc7d2cb296617a4183df058e93fa8557541ce4165d4d0a8d0b59d5c10bd365f49fde50e0b2e88f6e215f7643fd97a0b52e63c969d5dc76eb405a952ccdb3106efd66b410edfb4c1735cf49616442db74c93dfcc591db3207a9cc37b98fc485e37b220c8e949e538ee351d0b72649d85c850bb316141b0cb8b5b7923be57790531a7e5fdd09febefe30a824f67a98b1d3e7b8e5610d3fe9c554cfb6936ac20a7aaa58e996ac32fab20666af0ddabfe0c73ab82d4d196a672aff8604f0531c796a37a8f473f6350418e5a69f13207f795e45310566d4b3f7554efbc298839e7e41feb860def280539998714a411dfd0349951903e65ace558939cb8a220c6bfde9c320d05715de5cae349450f0a52f9c7ccea96f3c2fc0431d7c318f653f4c89e204667ced4f9e5dbc24e90f28ce57aad3941b0fde816d7fbd8dd04396fccc14395db506d3541f8d33bfd58dd637f64821c2cc70eb7b0e88ec104a15fc534d33fd3475f82e0bd5a8294b27b94717f2cdcac0449e7fb52a79b4a51a404593ea7f2df8a1e7a6e1204d3fa28754cdbb5984a8294b27b7f6c44063f12a41cce87be1d79eef32141fc386bce37a721fa4710836898df5c96777547103a8e5b8afab1c74e6904412dc51ce8fa06a9242308954bdf24ff5b043973c7b97dec62aa15412cd714eb3bbe424dc4e93de8b84d668908a24b58e7c0dfbc731c827c97fbe356388d953704c1f3439990d5bbcb0b41b414c4742cf6c4680841d2d7f6d81c6b0641ce97c3b4967d2aa7204817d131c50e2e86ab0341fcd1f3142c84b5b58020475bfa497c73d23cff40f6d6bef83d19738f7e20bea5baf59c57ec3cec03395359cea6297df6f940e88e73d23b77b360d90339e73ae6ca9f51bff5403ecfa1751b653b28f340f8983549886aac7d782057ccc1dd496eacc8ee0ee478239be32c8d9e8f1d08a2659a3295bae3510792685b6b9d45fcd57420670e127b32a93985e7405cc975cf1d788a1739904e5e2ea68d735ec6817c259f731c338707151c08ea513d37456f0d91bd81701dbe59ba1437903fe8da1c7414cb6d6f0369f2d3fb986d748b6103795faf24a4adc5630d648df6cd14523a85ad0652cad9f6129bed514d03713dead10e3b98ce130de4b01ce71ca7cdb2b5ce404a59b356ea785d2f6620dc4b675ab28ebda32a03c9e3bae74fa39381f0fef371b0bcfce21808f3316e5df220ff3b6220a7bb797c7699d32b61208bb65ebcc7d18b060ca4f0f0aa3cdedf42fc05825a7f479b7773bc1a7b81dc9d3643abad6e90bb40f0d0f77c99dcad662e9024375b3ee46932c03ce02d10a378aa5fce66a7e21d81b540ce20962e3de66dcb9c0572fcb99d2fadabe216c60249c3ef624c7c246a397c0552857bf4b8ee5b8118d773dc213786fe78b90ae4cba39f63aa3f3a9ba940ccdedc64edff416c780a0459cb71e4e1c7b9714d299034db5e5783ce512078b2f7fdf07d32a59ea1400e543a850b9de3c7323f81a839e838e6980b5b9eb113c82ea6693eccd014ebc34d2044ed86fb1c3246259b99608655ccd97d67c99dbb87f954fe93ef015e0239aeec748ec7d49ff8045602c132dcfa827614459b012781a061dbc388baa794d38c0462be4efd130bd79af808a47c31457d6fde0a5963808d60beb027f5b9f993c7e12210275d56e522d7256e971f2e868f89ea603b9808c44f31b9129bbda3f5d4818780d9ad898767c5589776c66055ea6d3155275808a49079176dd4d26825030e0271d332f387bd99522dc65a602090ea3373d68df1db49c33f20fac71cac076e19f3ec0372ec61395a07b56b8f2fc83519e4cec56e3d3bb80704aff461e39b667d2cee2e743719f788372b91b6b29a4feff3cbc8ac941c1c2a1cac2e489aa453757c5861a65c10a673cab6b15f5ce38e0b5b36ea43632425d6be7d534ddb5b9063b2531e5b4befc05b5b906645c27f3eb61684d2b8f928a337d88eb4207d6bf856f24ceae9ce82b02191797c52337446e36365410ed6fe2c73b0a05516d67d606341def1ccb9547b2b750e2cc81ec54b9503933fbfec2b889963e5e71149afecba82b68b7651352fd1385bb715b7ac208729ef5cd6cf5fef397615a4dfba0e3d5c5510263dcacf1e777806c7e9d8149b0a728695d5748c5ec9282a48ba16d7636adfacea9b55a3614f41acd8102e7229de6d5b5310c37b7c1f4aebec7adc5210e7e2aa5b977d3cd69282d0693a0e7d215d45e31d05a1aabb62ec58a667e78a8214536f947bbd1c4d641b0a62aae89e26ee3df0c80205496222bbfef29f4be513e40bdf9529bfe50c5bf10439cde31ef3ea34596927081f770a7ad12f4e905662cbaf439b5d113741dca936fdb8f2c56dba9a20c65feb13cbf188b5b49920474aa64cb7f9a18a5e78b14c584c103a6eecc51c7c8a5e78511586bd04396c100fcd73541b9ed949d6e70ce4dc1d329e799e75be98819cd3311d711e6b85ad5106b26bbe8bb8e58731cc3f689081309657c56d73be745b1b1a63207b1012d73de371b868171a6220781c26ff603edc42230ce4503ad4db0f1f8fe70a0cc4e998298729222dc7ea32151a5f20a51c46955c6878819c6e1ed6e5a14ac74761a1d10552f2a0838b5b1d15df9c161a5c20e6f52a9dfba82d90d67b7fd2676c2b47dfa0a105a25699c9fa8f0773a9461608a1f6595e2d7a0e93d8c002e13cae90b1cbfb7350abb6710562f4a5b777d51c3e980a050d2b90b2d3a39ca360b3e9e42a907ad23f6753ba41057218997fc7cd732bea7434a6401c51fff0a9fe9125b9210562eacf1c3cf2fd0a8d2810be43c99803edf41c1d0ac4fedbbbca519d79cc693c8194779f72b49fb7626f3881f8b17fa1e36895d6dd6802f9e368557a1f3d85bac104c289de4f66f2f78f6f2c81ec6ec92e723ccc8d65369440b271f56c9633e9455b1586461248fb51fa90ae29a5b01eac420309a41cdac7f1e6c3cc9b1f4720c86deab096bbf362321b46207abc1e29eb8f3d0e5966a308a41c79b64f712bbb36b34104e2788c35d72ab33104629a077e1f7e6c0e27ce6c0881e49ea43fd4dceb8ec2998d2010738a521e7818b301049285796578cd9771328d1f902d4f3fc7261be42cdff00139e70f75b22aaea33bb2f105f1d2b947d9c3b03159a8d103a2e99f76745b1baf0ae62e087ee143c674c93bd61d5317c45c95d2a69c6da33a3217c4baeaaff8f33757615c904a5f3a3eaf83b1ec6e4165b9a8987c57ac69a75adc982af6276dcd5adb82105bf2b1677c74533db316e4b78fddbea931ce79202d885163f2819d75887d7816c4ece847473a2b749c2b0be2c7fa19af2b5ad8683516849fcbe954779739e28405592b8ee7eb64f015249ffcfc95e2a49277ae20c68ea398938d9dea8595d90a626a2e1d0b9552aece67b2a2bce85568ab82309e77bf37b976fc15073a15a820f7a74cc77e4f41cfa549b78ae92fbb823605b1e2e7a34b41cc56d239f88e11cd79a049c19767b47b6dc49da67838e8511c5aba98998276472da328081de4a9f864b09c922514241be970dff6281dd3a02046bdd0e6d14a3543f909b2ff4899740ce256567be2aa369b8bd4ae0b1a5ae2910cba13d79c20dfa774aaca75f9b1bd097238eb29f96ebeabc6d09a2058e8f84f071e857f3241bc10bb97d2afcdacc1253426486fde39f5275b31bb0b097d09b2574a29939758279f8c93d096207d103d799fe7aa2f461d85ae0429c6e8e043c754d1d1a84d684a90ad72c44c5a65760e7e424f821c7b4acdaeddfa75d089a12541d84a3b53cbfed82241f8ce9c177536cbc70f9b8ea02141aae4d3ef71b21453b27e04e13d4b6f3c55ebe3689923c8f1b8897afac0f693dd08c2666578c6495d9a11c4f461f8b82fb9b987f92288fee6deb221e3c7f1d98a20dee528ccd9f85abef4089d0892586cac9891e52e5d7fd18820d6f45d878e72a2e36b067d0862c7d4ebe9b84307226f0fda10644b59e35416d5afe4158210d3373dd7a5e92935353421481e7d3071ef9ebbd23308524a390cdf156ceddbfa410b82e8daaa695388d198d381204697ec388715537e17b30141aadc397ad0a0a973bcfba0ff40ccfd9d1c8f824b83f603392eeef5a57bd8f4596b2a741fc849b36d86b97d09cd0782b4bb67b4e98c41f5de0341f358943beff6525b0fa49bb0ac1bc767f3f750e83c78e301fb0e8436bfaf1c1b1f76a0ed40b08f62352f550e4387e10b741dc871901ecf817b9c72f637d074c89e03317233bbf6efacf62d079269e8eb9412a6f353c7a14dab35534f8d508b3b4dfdf87571f1a30b351cc8e19e798e2c2afffea3dfc0ed06a27e8bcfc717bb51b781e0d1079b3b956603397977ac7cbb2afde024f41a48b1a9f3d231e776bed540ea1cde88c8ed74f5d769207f1ce369b00e16d3e5d140928b31f24323cc73ce19c86a29efe57fb8b531871908261d2d2be57f4f39ca40ceb1dd5dce073a172603297df2f0ddb25f22346320768e3a4a77182dcd8b18485feea1eed241079fc3408afae8e3f30f367fbe6020544ef93b47e917c8e12daf630b31d5bb17c8fa3e1296e7ab1fcb2e10553487dd561f6846910b0471ed2d8b529539b52d10cecdb3254f0fe2632d902c574ef903d34f9f7ed15920ffbae5ab4ed50f3625b140bed4ecd165d771ea4de3425f81e8792ee48e27f7d03b6c0582679fd19ccf61c7c65b05928567bf857d773249a9408e6329b425578d0fe39c02e1a31c8c5dc61cb79d432990c2d2c7ac6935337217a2a1a3400ee7fc7763aa6bac770a0d056264b6c9b577ff0924d193fab072bbcdc309e4c0e475e3bcaae79b4098d48f8e1a7d9f6402293deef8d5cc7126b3049269bbcee6aea6cc29811ccac257dc9859472581bc1d87dab5ac90931e09e40f16a931dc5b85e508e4bffb7ed551974b1b81f4398ef7cc77911a17813c5bf12116b6cd934420254b61f3bf4297e68640dc3cd1f16d399597108829fb59d7c6ad3c834092f7ecea5309a4144dafda2a7996cc6358e24e636fff1f53b8d056a28da1e31e5757e70ec2a004297f1cb87850e7eb617e12a4ce2fbf63edfd61db189220ef6478540fc3880431c44396f88a8d010992868e62e2f3568f58334ae3ecaa6626ba2c47908386eb8a45f5d49bc16804c9728c8f83f9ffd7cf308254d1f13c4e6dd6f0513016b156aa3ff9eaded00f301441de8ee3437fcb39b01606d7018c44901a010622882127522c9674a4613e44d6d922d32faf3518601882ac495c3dd3a2967ed004188520cc7bd0f9d81ffe2104b96387cd696fd53d56b1b24a803108527b98c6921882408c4010fcf52c731c95371e0620c899dabd346ffa03951519695a661757ea0c30fc400cf6b11b83860e34458c3e1076358f7b3c971a34e70339f2cb59265a8c3d9c1eca8b82910752ea9f87171e3c9023b9acf4c9a30a96c1b883d98131ea40c8ee603f1cb352950e1d88f9dab5eaa3a2e2a2187320da77ea3fff8b51c58321077294d37ee8d53c8b99130762556e3491d613b528c662bca1d86ab55999980db57aadef55f724951e3b30dc408e2b65de5439b9a58fd306f285c7e14f65ba9442071b08fa3af141e650173d8bb106d2070f35cd6cf8bc4f510359d7573ade110ff3611869206ddeba0f272ad4721c0da41cf44d888b6db68fc63803f9634afab51654e52c186620e6857ffc9b6a34968c510672fa890cf9ebc1ec07061988e16d1ea5aee8a1ab3206624b7b95e50631c4404a16add25776549de230905335ca6b7dccfa390c30904f3fc7714e7229f3b55f2025cf3fe3e1d466de31bc404e1f899e99b9ff5c12a30be48e5bb7a3e6cb4a1363708120befb1d6fce9f1f47185b207a1c77c6bd180c2d90253cec7770bdf9ab62648118b2e39d7f947b75410c2c10df52c68e4865f4ff31807105f600461508a5679f534eb12e974a054277bebe8ed1c43faa604c6131a440ccfd39d2fda8993705230ac4f45cb7eed1fa45e7c0800229471d1a3267376cf0643e81e0e29e4f3aa89cbcfc8d02861308199a3adc9b3feb18c26802792d643ccd51a8b0361030984094fa1c195d8be1ab7387b104e2f5b644ebe4e68ca8fb058612c8e1c34bd951cd49351e024612c89a030f1d5bed7818a34402f9b2b378d413979acc2390c63bd8f7609bf6ac7218462047f3d7cce32986e90e0fa308e460a4e2e4c2538c8e2f0611486679d27f9ec118026308819424d7a3698e748ffc201032e694531fbf713b0e10c89fbf3c73ad5f12b7fc8014d1ffa2d6edd1d3f9801c7fbe53b0d44fde7f41bcf9cfcfae6fd1b1307a40deda4c9e72d0510e9e5d1037c7e1f2a672e8821c8a85b4643197bb7564e682f067aa1d4ec305693cda94dd5fd1e4e1dd2dc881590ee43b2d7fce38376c419c50b3ddbe510b72bcddd1347663ace4d282d4b6d135c79dde9c538d59f83eb326d2e93b7b4316a471bdb81c9edf3cc2462c4839f7e328256fc08228ee9269d6c177761aafc8edbe2b2ebb223a2ecb3633bbfb6774990f6db882fc9983c7180feb58635a41508f265610a6e3f03a7cb64cf5b2b10a62a8abf7ac9b69a882bcb751356eb5850d3752415679af38f991abd90d5490e3fe1c73e7fd74e81ba7207e283eef921ed387699882387e7b93e2d67ef92396825079bf3d2ffae58e1e222988e252b92aa4628fbfd71805793bece02fac949c45b8f2d0100531a78607b23b971a3e6e0a8d50903c108fc27a1ce3834e0314a420de1fef6610d73ce627c8e993c5b1f93064347ee809d2d77af01a5d9f6a19b7d1096d70a2bcf0406313c42463339add729acca109725eb18af0f84b3732412a4fd9b89921edf76c6082301d5f91c9ddf4526c5c82b0c92ce87ca0d95e6f5882701d8716a9982de5282156821835d7f7bcd47adb606850827449663d5ad3ec8fc34994c42f357ce568ad24c81d9a3fcc1a3a548a42a1110972ad8f6938b78fc76c40821cc7a13b8adf1d6dea0f9dd0780449536fa7b8fd118586230817f6b345f5d046902ac5f4a49a3489ce8e8c2057fccf67f933ff6dacb108f2859bf238639bc647431104171b378f88af90552311887c8597a98cb6baaa4587511ad6a1e3f2686920821b8720590a1ef9a6b49daf370c41fec91c8f6a78aa5b0b41909b760b1fa3fa53861064f3e0926545677d1cdb180439e8641e94479a6663419072fc51cca77f9473d003413cb51c5ee6342048b31f6636babcdf6bfe40d0cdaa10b9b6efb5fd404ea1d5366c471e5dde1a7d207ffa761cc5945a15d3e003b983f8722b8b58fb1d1b7b20a85ec890e59aab239bd0d003493a8e3ace6bd49618f340ddc66b68d8568d5a550d3c90ba7662da6d3b8cebef40a8f40eae53d60ef37fd8811c54c6b81e7db85107729c7f29b5b43ada36e840accf34f329afc5564a630ee4582f784e774797f7ae2107b2476afaf1ab61e6538d3890e398d3af4c5a356b3b68c081149f4e5ddc3e8a87c94668bc81143fa387fc7e9cfa6cfda2e10672fcf5cfe1a6abd106f26b5cab7c3a6d830d64b37e4bb9425d9cbdb1067294eda3a5cdb916b4861ac8610c95635cd90c554b1ac89b634bdfb1f454f4d74003a162434d4e01367841313278c10a16208100f82fe0010088c0d90494269046e600e63b0c91510838a0010508400ecc04140080111020000810400240a00001148117600100d8c006c60b0208a00001283728470635f0e200001800031250034f410a0e7064008322d48005367801118620844b0102281004205c0b6e808314a4200114f801413aaf7cf7f6a6b7c6aa4540011f1880025f1c80023d20995f480bfeb19ab10b720ef6f1a27330367e1d7a9b19ba2087513d8bf9352767e48218673fe8283ec23b2cfbb690810b92c796e6b2fdd8bb7ffcc9fd110919b720b586ce34796993e9d80919b6204db7cfcd8d5e4fe5a82b64d482a8f1b2d57458794347d865c8a005212577f6e673b787dd0d19b32087e9b23fbefc9fe3c89045371ed7ee7151177667c4823c926711953fd77994010b721844a7fc7352bc337e4690f10a52baf70e32e5382b3264b882301e4aa75df3b07c3dec325a41cc9a65da7e9fa7218b41062bc86955a953084bafc933564168cbc1ae58e6e0519517b8204315a4bb185169cb971d5100cc90910af2655a78b020ea41a60315e4be90ab480619a7207bb8ab94354857830c531075cb92569794a575b26e90510a72cc8e3c63aae4712c2f186490829029a37dc9f46fa58c5190d25ef2fd43f4764888d9017044862848531699ccf6bc66d34e019566648482645b3f53f5551f562acd0005a12c3a0e4d2fe3da734270199ff004667482501a9ea143e5f2cf3127089f738edc66624ec2dd045934585e738fb2675a13e4d0ba5ad25f4626749b8ef4d6902f35afc89c99720ce67edf6125c8c004c954ad73c847317af81997207dec81e707199620ca87de1267655482d8e1aa45e618c4ce2d9428bedbc5d47863df143226517fc76d39aa94b5e26b850c49541e2cc52a3775cc61831e43462452fb1caf4ac366ab54210312c4d6f15829b779365afe22e311ed6aeef0ca233afa3edb1154967eb855d1c2e7f0d1086cadddc2e56c076f5b790623de4f32661f34edb5bb087210513127153fea960c457cf966b331e767cb0ce8c848849d6c2de3e3cc9ca4e33e031144b9d4b9837ab1ad1e6b051987b0cd62bcdb2344442bca5f2dcdcbae25b3a49180aa065430c83004e1fa3e568bb57eb915827c2aff96e3fd50f7c3241b198420b8e445c5bc1e772c76c62048b19aa28b7655ca92c2902108bcddb252ab335d2a3e2eedf8547b6c50034158ab0fe3ba4865ec58053200419a74b368b577f9329d0293410d5290b57f282ffc40d8bc37dae221a73c4a0b32fa407c20a6940329cd41a4427f64ec819c633dcf71d238d765e88110ef729e926a8a0fe7813095369d24cfc00366dc81706f62d7314a3efc070776207b67e4c71d22d53dc5562da80339bae30bcb7e5943638a0ee48a7f755fef69c92b389803c134cdabffc72be2f916c881b4992ab7dd720c5badc049e085179b1107a278181e4754aaa440061c08e71fc5d99cde52aa76848c37d4f21d1ddff19d269f5d69eba63b64c717941cb806d85490e10652f82bebd02c2e3ed30a818c3610dc2cc33f07ae29ef560ab2d850cd8d74d46d749b8e3510b3d7234b51af3a0a0c5810810c3510e619d5a2595a6e5a13273da7fe559a43f78c3410a42ee3d459ea60d2460349f66e83878c36e7d18c3310f75a2ccf5968aece9b81786215173ebf0719fb3290fd63b1fa382b19c86df997c34b317494320682e5a044bef22b7876c4408ee1c2bad586d1dd8e30105a2bbae6f8e3cd170703f9547e5d3a8f5f2007dfe351df66d2d49817c8f19aa53ba5ffd4691748b145b32a7eb8b173647081d4a9c645dc73ca6167c61648d7f19dd9f36ae67701e8438616c8f963f32c769d4b1d6464811cf67a1e17df8e32cac082655ca14e906105d2a8a87d8e5a7bfba902e943ff782bae5dbd221588eaaa9dbede7ed2b4291c77dce179109d3b6eac35902105c2c648d7b25cb777499081cd88026be321ebf112276a59e220030a9af104f2c795cec1c20e4c21c309a4f8a14f9efdc779f5e5434613086e1632b996ec6ec632984085d564949d85b4aa65e62867cb94ed9c79ca58024144df623425792f8f0c25902e99da7f878f9fd292910492e8c485918104aa2f328e40eebcb31b9ba398ce304279e1818c22103fc533884052b9500f43ed875fef10c8db97d99f9e0c21103e66328ba6faf1bc20103afa6ac8f5eb4eeb0081e8a1e207e16debb71e3f2064464b75fe7bf61cfb80201d1f46d3982c658932bed8525334edf2c926bfcbf1cbd28c1e106fec4733577eb7f0ef82f49d6264d0f4a8880a4317644b9acf463e0a462ed2aa3ad7ae95ed4c4b1517790b82f787651dc43c8efa6d418e92a7e81fadaaf2f15a9092e7a43155488d7b396841880fd3e6984344657a16c4ec39c9d47ea7fb609505b92d3a76470f4d7396b120584729e66588eb9c3d5810534cef1cf3c798977c450e305c410ad1adabd49932e9ad3052eb64cf2c5f0a8315b80a555453955262d6f536a3658d0023158d0a425b5d4ad5319585d69c22314c41940d7e9bc30eaee662948234b9ef67259b03d50c29887155a43e4cf3e6bb8c8294c3185f3b8ab15b7b15055935f2b7ac0d056153f8f8833d57fb160314fd89c6f04463748298d297dff2426dc7cf097264105f8f4a3b65bd9b205c4c1fc7c2550c4313c4f8152a771e6bdb313241d49439fe595e4c10b5839ae598cc8edb2e11863ab8a33582200a411004411086822032d91da38070e150181083c3402048080a0301e1301808048dc260200882311044410c438b3855f99402e0d6f4c8e8b6225a77443ec62e1a6a05dd4eb3bff03fdbf235ea9b93d731c7d66ea7104f0869b4acf560f3d25cd0042697380f3d3de4a50510a930c29bd299fb0016c888861684fd3b0052e149d5e804fa070540f4acbcc9ff6d944dc9b559cd4a82ab104ec288953e4f24b1f8d9a5cd4c7aa6c09080062e06a555fb78d3762032f0319d639ab88141920f6e77e45b6dff4f0d6d8cdba0366f8af630c9d945c606a4deacca58a5e429d30cf5be8ab1e3029f4fca6e3bf6384e32d9bc4adb96307b31cfd8da22048e7c71664a84d94ba608e7801fb49ab455a868780711584c84961218426957b762536560ae957ae36704676d2877771b8fd4ccc17c65a926490de13a570b3b8eda567d158f5165afdc7c9b84ac85ad9d96612a406c5d7dcc5648ccbdccd3084cf2fefad42ab04a70a085c2d8984ae4265fb3e244e92ad54a8b409f39e3555305a1a2125c2bd1919608ecc02a903b9538198de09eb238e3c52d3fe990f97161a69ff0baf1842605c51406ba408e9cf43bc158a36d89faeda0989ae285b08c2a17ab1a3a289ab12f6128f861e3afa117e29f0c6a8687fd2aeb5abf7f274524a4fd299eb9e8f211aa9b7cc142583f4df0da73a150d7073de73300daf3501329ad7805909e7d311f7d3a07104d4dd3fdab23eeddd784334ac0fcbfc6339d18b201706232bd251eee3f270827b8bf25b5fc4099184bfc91d3b49c1c66e66220e3a046e146a108abcd6e9d747bc109615e8c78094552c421c1b438ccfc13d54ea5649d6b0616a337bb5514bd446be03e67f6c9ffdf5210ed5dc8126ca398ef2775482af76a4ed9d0f8d61fac8b526a8e424260fb479871a201ce7ca535cc02505f9ebe03a8f513d20043aa89e0e0be6863c1f84f956d9cb0966740fb1a2dfc0513f145088bc48c561465118aea1243e5099e99776bad39392b358285743eb2f5a49380d89c59da50cd2055c1a23a0c1a409d11d8d77807f2dbb314584bb7377898e3ceda2f89f8623f6cae72c8e42cab8e4d29b845eed34bacf55b00aef597e3131518870d924853c103cc8ffcf954a53ad068fbeb19936c076cc97193def4df34790cdd4acce5167675b03556268f975368aff02917b3969e545f338e6f25fffec59bc1aed543757bbdf3ff98bfd7a854138b72ce01b95d678b96fefb204b0a0d473e58e6eeb50768b2190a7cf853dd6b344010026711ff7f2da6032a958e398a2cbcd62b0ce8c8913a85ebead81914b1afde238ef501290216d096d6a79c47def1260779f31e91269614191866b79167a28af16bb5336ac61cd2cc49e9353d9509e8635ba19b48ad7323a5af96737ccb91716744b2c44294392fae0d72032860cae2c1a17d0a6837ba4f96d84c369327ebec9aac42d673419efc0b6824e2bb06dd040adab73c00d0d5f1e8e19c82460c1a1f99c96138539a9043b918fbdf021b5d045c6793fa400128828a32dbd5002fa6d9af8a65a8e1b1b9797ba2cc674810a4bbc15c40cc2e2de6ab40548b6e8c7027f42c860d8636f1fbe4e7025429ad06594449db0b486301a29792aeeee3674a506ca57e5d6960dcea5392a2b50c51fe5eb93edd071eed4d5731b4a44c1956be1f7fccb0b9dce1ad227176f32a62a1ea3f417fedcac433ed2d6174a98a59fe5e57c01b98596de042592e8a67aaba1dc80dfe1416f61ab74cb97fc8b322654f4054e0f04e573ecf73a027a8128c2134804e0450a146204457322cdbab48abcabaa8c671faa5a9a6f4090a4d7823d675fb7e96872c80afc9c13f8cbc48e950d6c555263d20e757e125a2f033a4da78a8d214b8f18b25fede3e3681dff66ee011467f4a8a64b24d3916de3c69ab391c08146d1c219253f45ba0784a459569543b25b0ad5e4860793a48bc1b58ba352a7a956cda2ee2287b557962b6e172401710fafefa8bef8c6f25cc70309bb184f7007e1182ba1ee053190d105d82fadf35377937da34684214e7ef58d4ffbfde23344fed062e10346fb73d97d1ca3790324cb527a819941a8e3696d5c6b4c06267c524b43bcf44649acd191b4cfdbd9259623a0e0d4a7903f69a5a52e60124ec567e4233a132bf6af1468b95d702e4c6a1964adb84bd7629fc97ee3c60b0233fc24bc44d19ecacdda6a1a984a68dffaeb77d8d9be1e1de2750cab3e54af524a632f7ecbfb6ba6c61da61899579f3914cf27c49dc13704c36ffbeabc7f62b7058a1314df508db2846c767b778a3ec639088ae23eb185e20a2261eeb55e1194b7f253fe64c9b9f6662bf88bb1506c4d62f740ea2a03ed1d8da6edd450a93d8948b937f264d53c1dbf4a5abc014256ce0ca05e79df29a71aa8b10680a95404f557375c21bb1c5732c0640569b44cf8d1e29c733623bac820d3be7226a651895b8e3c8b0e6596e83eda253cb2462be4af9042041ba8cf50453d0f0656e41f1df459ff16401e60014d8e9fb92df29a26dd5f8ec8f97e9bf4027219cb2ef379942cc377ee099b042fc3c8fa58a5ae73c11d8b6ca82d05e866e64154d8d7a16ceb324f7bdd7492b11588c07422d0e459549cc2de36d1507864056009f17a7d89f3a6bcd088f6405205ea68db1955f4d4b4e170aea03c4f48af9bbef5e5a0de99360243b5f3720768b8c88a06fe867f1e994241b49d459ffcb4055465c5a442e080f0f9b025d4a62f472120ab376c1431574deb9567249ae1819cbe5f2174eacdd71d17d06e5d4c4e3174cac3f12c851009cf529070ec4c80450e70ae66a01b86df12efb17e675f8ae637b40725462734a55aec6d7a353e237a51854cd1f6acc0362ca0a40ea7f162a781bdc1676aecc9a3b216be2e27b398e43429cdbc11fdcd727e0c063a368e42a4f7bcb02066b45996361cb9fb24d35cffab8845495a32bdf4ca04315342c002ff8ce27e7c129a869f48d18556d74e3ad4be8f509f5a8fea1568f0685a8895493e50c02415a9edd8dee3289ecf554a52ab50da6a05272a338774877e54caee1e39c2e6ce07129115579187c5c445d661d85906cd74cf58ff34bd5a0994674426346269d4623124092ac0bdaec06a9782f4ac9bc584e8deedaa2b7d9894b578799a98c8296d770840e6437c90aaa6b51cc2c69e71b9fd298e2a9468bd9ec13bd406da345a54a3f9853ed756a54db480b45265e45da1c5eb49a5f947c73b6584f8c85848dc691109170a4d93ec6230a655080ea91175647a9644af4f12426cb66d4136f81e5015d7675f8e0f9d4bf55130c8bd7128435dbbb5e49ad02d1a0b88c80ea01a9ebe265671529c37ae95c29e5d8882b5dd8311a5e821259a1851c9d53151fdb40adbc7e96e082831a12e89460cb6e36b03f6ef5a1fba10a047ef3f6279ad9891ebb07f80ee72d287f7ac5018b579d27e3f27bcb3e239d52ab99ac447a50116cb4f2182ef284596cbb285e5c7c089c209622608799d4d00b4253eff0de7e64cede07e0574754c2eab4138796b436a03544b040e2e93f224f49de0bef837730ca0dfc3636db3f1677a403201e7bbb0f7d0259b5d8f355d7f02ce51ac74afd554db49ccb9bea0968c6f37d336cda889d30da213aee8063222c1eb1404596313406a31ea8cb17bfa26c18de6ca9e1e07aa636247b4538ff43f51a52fc0bab105b8168bb85f255710632e095932bf9af71811012254951ce91a00036459aeb54310c701f90031bb645fb6c3d4becddb104f403b11771317b0009c14e089c4d3dd07d11e45a4099b7614225239365effdd919006263e5673816c51746070a9934b55eab9c56b1594f3966d55b909912180fe5ac601c6ff4a78672a69ac6906f179fab2951b76764a7a30a81182ba56e372a21a3945d0acb4559782a75ac8c5c0218ce225dd59b2d815f754ab82c1dba95640798e07cfc54eb3dfa8d612d0f03896b0f6633fef5f9e5f09ada1dfff826799057737f102d0fbd879b89697f2e06ba41f5a33a4023b8cbd2c3913f1f90ccc72d2935531f8e5ff617aa7e26c01b0b905c270da6d68293a04d3b86960847d57a4d8660ed599bde48152857b9abd2ef36fdf9112eb1efb01e94aa3b5ddc1c544a5242e4978bfd5244fe79da6b1a819fb84923f845d83821c0f48ab21ed6cca611fc818b34625fff26875ddef2f314129414318876f8d80ef9777f797aa27ff844a8809910c4aefc33647f4003900273bf6ff76b3fe1f5ea11e5f964537a818acd136d044cc899e3886d8f20429680567a3718a4d985cf70f8d1e3f997dd45e0bdbab8b9f8ee5a9410c748f29271c699c4c070d072895b573062780ad0b8ad903baa7f418b4f5a5a8958905d5795c2cc02895975b2dacce8c42e98931329562da32f829ca0375279688bd312235e7bd546b11f983076e4ff7115cbce76bf837735e9cc5644b273fb9e20465b1380d14693c0b4e2a55bd7cde268fd8900a94e28202c5ffec9b0a97ccb8b9e4b61a4549479006dcd89853abbeae3b9edfa2933e3d4bd43452b6759b45c073982ca89c1d5e81bc07c07063c965d804a5daa0b2e3e974b65d91de63ac40b1d9c9fa3140315dfeba3594572db71480eb8f9f99231a31cd072ed598bbd0995498e3d220b8a431152b6d76c7285c2731a53915221aeb26131417ad155844048cd93b0185ffb8efc0c33eb9689d4da459fd13223c8706cc05b63963b9784116a41cd91f21af8bb53c215a256c86e4e0468778904dacab633f084a3f9ebc57132327a12c5a152a2ce2dedc2e1cd8be43daf52b9b1123f896e2512da94ea5140664de4b825628ecdb19300fd02fad5a5a5a8387eee7ecd277bf0fcd59aaa82652af0382a93d0b332f6d18dd3c377c6903d4e275a8630b7ca721e73c78162280409a39aed666c904be3b3441131a7ccbd84c3565b5035f0d5bd47e55a266b1b296a1a50e2d5faea10c35ed180853fdfe2e365ce081402ff46cc193b59e1ee896b7f4fc1b88927a1f3b50087aa58c7feac44bbb0abf073091f4d9ea1fd5bf22459a02228472fb2352799a76fa931f50d25560779e8df9fe0e92625265a15f5106cf3a8b20b95906a474ec529b204e95dbf452556048561987e5c254543df83a80a68eebc823020aaf6e6cb5c599f8de92aad3682910a8b537342dea7494a8a975b9fb074f8ead1bbe01f0f0e09643bd65fbfa421db8423bee0c9e5e272466e7b84abfff74b8b940a9e053f0a2d1eedc4081036e80886a8850a1d5cd3ee427ae20438073e162e2c221e0e5bfd32650bc56d3f9cb114e4ba21a75ac5499c2c0e55b0562673a82c5dfc0a8b3fac2065db1476b1ae5074c62bcc10e5be8d75f6a15697077c86591e51ae8681201c74200c96cb3407cf4e32cc8e4c6ac5b3dec6cc6e8e2dd0714aaed0414c502d8f7e736f7c662ec286e8584547c280f2401337b187bab8e99bb5639cc3915ed22127365ee737f7c6f766a79a7c931dd4cc1bae36573d1e50f71054b7231f4160b8da39af6638e85d63d692904c906184d329821abad0a3228ffd74cb1a1979db2292f108708a6b74844dd0649a5bdc1c9f9baba133e9f4f4668141b27f3754484237711362ba752a5155461cd03d9c61d1699e662ffac81cc32e6be286eee026d9001fe5614338499004b5e4dc231be4a19bb8a17bb00387fe92415cdc367ebe39817518153003d4cb9bae0696607254b3538c0bc037f800f9538a2c9109204c728410492ef9d9dfffae17630aba24250a65bd9f2091fee749f51948d5ca978b334b920a75225e304d61a0942cfb68150f1f21182b9ea0c3803388a1da716603045956bcd96aa4ca22f2930401b51f8158591bb4d6c4be750256fe46d70469b1ac68453f4253c21f2364de31a1f76cd96e960d615fd4c308fd595d21252849417a3ab46942819110487dbf8588545d12b7fbe9b9a10333a5ec60fe329c75dff18c57fdc6787fbd04f9179f851b116651472fccf90538530c2db0aefcc9ae4466fa50c167bca161e0260119998b0b15d6ec21198cc2304329dc8c0c975846f8ff6f64c7b30cb62975eae1837eb2dd98a9a875fb266c0d7876c7e1140732c2ca96cecbbc0f55800e600ee805404b2a2981c972955fa6b6b509ef6ba68c05981df77ad84136e279696ab671db489049e759a0a5c3061882345cd761202143be13b752d8f1a316e09ea4f56397db4483bbb827ae2a18c08d80501dac72f0308cb5ffa976c00240937df9e222c8baef6385d01caffc45ff6b3eca5edf312099d16a1de144cbbe2383f4b61d3e2a425cefd2064a7133e71890c30c15799398afeeaa789c90d081031dc09bef407078dbf5c9ddeca1acd68e264997f3a873ad6dfd3f1bb647c9828c36e40850a7852e04b0ce5cd0944316234075b09063dd01f00a8501a3b80bd318b0989f0af37b4b6278e4168a8d52eebe7cbbbd2fbfe6acfe0230685e2299af6e07cf3b2b3b648dcacb33c1fc2a5f3984648e4508", + "0x3a65787472696e7369635f696e646578": "0x00000000", + "0x3c311d57d4daf52904616cf69648081e4e7b9012096b41c4eb3aaf947f6ea429": "0x0100", + "0x3c311d57d4daf52904616cf69648081e5e0621c4869aa60c02be9adcc98a0d1d": "0x088eaf04151687736326c9fea17e25fc5287613693c912909cb226aa4794f26a48d43593c715fdd31c61141abd04a99fd6822c8558854ccde39a5684e7a56da27d", + "0x3f1467a096bcd71a5b6a0c8155e20810308ce9615de0775a82f8a94dc3d285a1": "0x01", + "0x3f1467a096bcd71a5b6a0c8155e208103f2edf3bdf381debe331ab7446addfdc": "0x000064a7b3b6e00d0000000000000000", + "0x3f1467a096bcd71a5b6a0c8155e208104e7b9012096b41c4eb3aaf947f6ea429": "0x0000", + "0x45323df7cc47150b3930e2666b0aa3134e7b9012096b41c4eb3aaf947f6ea429": "0x0200", + "0x57f8dc2f5ab09467896f47300f0424384e7b9012096b41c4eb3aaf947f6ea429": "0x0000", + "0x57f8dc2f5ab09467896f47300f0424385e0621c4869aa60c02be9adcc98a0d1d": "0x088eaf04151687736326c9fea17e25fc5287613693c912909cb226aa4794f26a48d43593c715fdd31c61141abd04a99fd6822c8558854ccde39a5684e7a56da27d", + "0x6dd12b3ae7975bb95f841f4505bc193c4e7b9012096b41c4eb3aaf947f6ea429": "0x0000", + "0x7474449cca95dc5d0c00e71735a6d17d4e7b9012096b41c4eb3aaf947f6ea429": "0x0100", + "0x79e2fe5d327165001f8232643023ed8b4e7b9012096b41c4eb3aaf947f6ea429": "0x0000", + "0x7b3237373ffdfeb1cab4222e3b520d6b4e7b9012096b41c4eb3aaf947f6ea429": "0x0500", + "0xb8753e9383841da95f7b8871e5de32694e7b9012096b41c4eb3aaf947f6ea429": "0x0000", + "0xc2261276cc9d1f8598ea4b6a74b15c2f4e7b9012096b41c4eb3aaf947f6ea429": "0x0100", + "0xc2261276cc9d1f8598ea4b6a74b15c2f57c875e4cff74148e4628f264b974c80": "0x0000b0d86b9088a60000000000000000", + "0xcec5070d609dd3497f72bde07fc96ba04c014e6bf8b8c2c011e7290b85696bb3518366b5b1bc7c99d43593c715fdd31c61141abd04a99fd6822c8558854ccde39a5684e7a56da27d": "0xd43593c715fdd31c61141abd04a99fd6822c8558854ccde39a5684e7a56da27d", + "0xcec5070d609dd3497f72bde07fc96ba04c014e6bf8b8c2c011e7290b85696bb3a647e755c30521d38eaf04151687736326c9fea17e25fc5287613693c912909cb226aa4794f26a48": "0x8eaf04151687736326c9fea17e25fc5287613693c912909cb226aa4794f26a48", + "0xcec5070d609dd3497f72bde07fc96ba04e7b9012096b41c4eb3aaf947f6ea429": "0x0100", + "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950391c80dfcd87103c6175726180d43593c715fdd31c61141abd04a99fd6822c8558854ccde39a5684e7a56da27d": "0xd43593c715fdd31c61141abd04a99fd6822c8558854ccde39a5684e7a56da27d", + "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950b1f8315351e09c7d61757261808eaf04151687736326c9fea17e25fc5287613693c912909cb226aa4794f26a48": "0x8eaf04151687736326c9fea17e25fc5287613693c912909cb226aa4794f26a48", + "0xcec5070d609dd3497f72bde07fc96ba088dcde934c658227ee1dfafcd6e16903": "0x088eaf04151687736326c9fea17e25fc5287613693c912909cb226aa4794f26a48d43593c715fdd31c61141abd04a99fd6822c8558854ccde39a5684e7a56da27d", + "0xcec5070d609dd3497f72bde07fc96ba0e0cdd062e6eaf24295ad4ccfc41d4609": "0x088eaf04151687736326c9fea17e25fc5287613693c912909cb226aa4794f26a488eaf04151687736326c9fea17e25fc5287613693c912909cb226aa4794f26a48d43593c715fdd31c61141abd04a99fd6822c8558854ccde39a5684e7a56da27dd43593c715fdd31c61141abd04a99fd6822c8558854ccde39a5684e7a56da27d", + "0xd57bce545fb382c34570e5dfbf338f5e4e7b9012096b41c4eb3aaf947f6ea429": "0x0000", + "0xd5e1a2fa16732ce6906189438c0a82c64e7b9012096b41c4eb3aaf947f6ea429": "0x0000", + "0xe38f185207498abb5c213d0fb059b3d84e7b9012096b41c4eb3aaf947f6ea429": "0x0100", + "0xe38f185207498abb5c213d0fb059b3d86323ae84c43568be0d1394d5d0d522c4": "0x05000000", + "0xf0c365c3cf59d671eb72da0e7a4113c44e7b9012096b41c4eb3aaf947f6ea429": "0x0000", + "0xf52655874ffe10d91f60f35a7739938b4e7b9012096b41c4eb3aaf947f6ea429": "0x0000" + }, + "childrenDefault": {} + } + } +} diff --git a/cumulus/zombienet/zombienet-sdk/tests/zombie_ci/statement_store_bench.rs b/cumulus/zombienet/zombienet-sdk/tests/zombie_ci/statement_store_bench.rs index 1faa307666790..fc3d33d4ed382 100644 --- a/cumulus/zombienet/zombienet-sdk/tests/zombie_ci/statement_store_bench.rs +++ b/cumulus/zombienet/zombienet-sdk/tests/zombie_ci/statement_store_bench.rs @@ -7,9 +7,17 @@ use anyhow::anyhow; use codec::{Decode, Encode}; use log::{debug, info, trace}; use sc_statement_store::{DEFAULT_MAX_TOTAL_SIZE, DEFAULT_MAX_TOTAL_STATEMENTS}; -use sp_core::{blake2_256, sr25519, Bytes, Pair}; -use sp_statement_store::{Channel, Statement, SubmitResult, Topic}; -use std::{cell::Cell, collections::HashMap, sync::Arc, time::Duration}; +use sp_core::{blake2_256, hexdisplay::HexDisplay, sr25519, Bytes, Pair}; +use sp_statement_store::{ + statement_allowance_key, Channel, Statement, StatementAllowance, SubmitResult, Topic, +}; +use std::{ + cell::Cell, + collections::HashMap, + path::{Path, PathBuf}, + sync::Arc, + time::Duration, +}; use tokio::{sync::Barrier, time::timeout}; use zombienet_sdk::{ subxt::{backend::rpc::RpcClient, ext::subxt_rpcs::rpc_params}, @@ -44,7 +52,7 @@ async fn statement_store_one_node_bench() -> Result<(), anyhow::Error> { ); let collator_names = ["alice", "bob"]; - let network = spawn_network(&collator_names).await?; + let network = spawn_network(&collator_names, PARTICIPANT_SIZE).await?; info!("Starting statement store benchmark with {} participants", PARTICIPANT_SIZE); @@ -94,7 +102,7 @@ async fn statement_store_many_nodes_bench() -> Result<(), anyhow::Error> { ); let collator_names = ["alice", "bob", "charlie", "dave", "eve", "ferdie"]; - let network = spawn_network(&collator_names).await?; + let network = spawn_network(&collator_names, PARTICIPANT_SIZE).await?; info!("Starting statement store benchmark with {} participants", PARTICIPANT_SIZE); @@ -153,19 +161,20 @@ async fn statement_store_memory_stress_bench() -> Result<(), anyhow::Error> { env_logger::Env::default().filter_or(env_logger::DEFAULT_FILTER_ENV, "info"), ); + let total_tasks = 64 * 1024; + let payload_size = 1024; + let submit_capacity = + DEFAULT_MAX_TOTAL_STATEMENTS.min(DEFAULT_MAX_TOTAL_SIZE / payload_size) as u64; + let statements_per_task = submit_capacity / total_tasks as u64; + let collator_names = ["alice", "bob", "charlie", "dave", "eve", "ferdie"]; - let network = spawn_network(&collator_names).await?; + let network = spawn_network(&collator_names, total_tasks).await?; let target_node = collator_names[0]; let node = network.get_node(target_node)?; let rpc_client = node.rpc().await?; info!("Created single RPC client for target node: {}", target_node); - let total_tasks = 64 * 1024; - let payload_size = 1024; - let submit_capacity = - DEFAULT_MAX_TOTAL_STATEMENTS.min(DEFAULT_MAX_TOTAL_SIZE / payload_size) as u64; - let statements_per_task = submit_capacity / total_tasks as u64; let num_collators = collator_names.len() as u64; let propogation_capacity = submit_capacity * (num_collators - 1); // 5x per node let start_time = std::time::Instant::now(); @@ -173,10 +182,10 @@ async fn statement_store_memory_stress_bench() -> Result<(), anyhow::Error> { info!("Starting memory stress benchmark with {} tasks, each submitting {} statements of {}B payload, total submit capacity per node: {}, total propagation capacity: {}", total_tasks, statements_per_task, payload_size, submit_capacity, propogation_capacity); - for _ in 0..total_tasks { + for idx in 0..total_tasks { let rpc_client = rpc_client.clone(); tokio::spawn(async move { - let (keyring, _) = sr25519::Pair::generate(); + let keyring = get_keypair(idx); let public = keyring.public().0; for statement_count in 0..statements_per_task { @@ -307,11 +316,69 @@ async fn statement_store_memory_stress_bench() -> Result<(), anyhow::Error> { Ok(()) } -/// Spawns a network using a custom chain spec (people-westend-spec.json) which validates any signed -/// statement in the statement-store without additional verification. -async fn spawn_network(collators: &[&str]) -> Result, anyhow::Error> { +/// Creates a custom chain spec with injected statement allowances. +/// +/// Returns the path to the temporary chain spec file. +/// +/// The chain spec template generates by: +/// `polkadot-parachain build-spec --chain people-westend-local --raw` +fn create_chain_spec_with_allowances( + participant_count: u32, + base_dir: &Path, +) -> Result { + let chain_spec_template = include_str!("people-westend-local-spec.json"); + let mut chain_spec: serde_json::Value = serde_json::from_str(chain_spec_template) + .map_err(|e| anyhow!("Failed to parse chain spec JSON: {}", e))?; + let genesis = chain_spec + .get_mut("genesis") + .and_then(|g| g.get_mut("raw")) + .and_then(|r| r.get_mut("top")) + .and_then(|t| t.as_object_mut()) + .ok_or_else(|| anyhow!("Failed to access genesis.raw.top in chain spec"))?; + + // Use static maximum values for benchmarks + let allowance = StatementAllowance { max_count: 100_000, max_size: 1_000_000 }; + let allowance_hex = format!("0x{}", HexDisplay::from(&allowance.encode())); + + for idx in 0..participant_count { + let keypair = get_keypair(idx); + let account_id = keypair.public(); + + let storage_key = statement_allowance_key(&account_id.0); + let storage_key_hex = format!("0x{}", HexDisplay::from(&storage_key)); + + genesis.insert(storage_key_hex, serde_json::Value::String(allowance_hex.clone())); + } + + let chain_spec_path = base_dir.join("people-westend-custom.json"); + let chain_spec_json = serde_json::to_string_pretty(&chain_spec) + .map_err(|e| anyhow!("Failed to serialize chain spec: {}", e))?; + + std::fs::write(&chain_spec_path, chain_spec_json) + .map_err(|e| anyhow!("Failed to write chain spec to file: {}", e))?; + + info!("Created custom chain spec at: {}", chain_spec_path.display()); + + Ok(chain_spec_path) +} + +/// Spawns a network using a custom chain spec with injected statement allowances. +async fn spawn_network( + collators: &[&str], + participant_count: u32, +) -> Result, anyhow::Error> { assert!(collators.len() >= 2); let images = zombienet_sdk::environment::get_images_from_env(); + + let base_dir = std::env::var("ZOMBIENET_SDK_BASE_DIR") + .ok() + .map(PathBuf::from) + .unwrap_or_else(|| std::env::temp_dir().join(format!("zombienet-{}", std::process::id()))); + std::fs::create_dir_all(&base_dir) + .map_err(|e| anyhow!("Failed to create base directory: {}", e))?; + + let chain_spec_path = create_chain_spec_with_allowances(participant_count, &base_dir)?; + let config = NetworkConfigBuilder::new() .with_relaychain(|r| { r.with_chain("westend-local") @@ -324,7 +391,7 @@ async fn spawn_network(collators: &[&str]) -> Result, a .with_parachain(|p| { let p = p .with_id(2400) - .with_chain("people-westend-local") + .with_chain_spec_path(chain_spec_path.to_str().expect("Valid UTF-8 path")) .with_default_command("polkadot-parachain") .with_default_image(images.cumulus.as_str()) .with_default_args(vec![ @@ -340,9 +407,8 @@ async fn spawn_network(collators: &[&str]) -> Result, a .iter() .fold(p, |acc, &name| acc.with_collator(|n| n.with_name(name))) }) - .with_global_settings(|global_settings| match std::env::var("ZOMBIENET_SDK_BASE_DIR") { - Ok(val) => global_settings.with_base_dir(val), - _ => global_settings, + .with_global_settings(|global_settings| { + global_settings.with_base_dir(base_dir.to_str().expect("Valid UTF-8 path")) }) .build() .map_err(|e| { @@ -458,7 +524,7 @@ impl Participant { fn new(idx: u32, rpc_client: RpcClient) -> Self { debug!(target: &format!("participant_{idx}"), "Initializing participant {}", idx); - let (keyring, _) = sr25519::Pair::generate(); + let keyring = get_keypair(idx); let (session_key, _) = sr25519::Pair::generate(); let group_start = (idx / GROUP_SIZE) * GROUP_SIZE; @@ -763,6 +829,10 @@ fn channel_message(sender: &sr25519::Public, receiver: &sr25519::Public) -> Chan blake2_256(&data) } +fn get_keypair(idx: u32) -> sr25519::Pair { + sr25519::Pair::from_string(&format!("//StatementBench//{}", idx), None).expect("Valid seed") +} + struct LatencyBenchConfig { num_rounds: usize, num_nodes: usize, @@ -813,7 +883,7 @@ async fn statement_store_latency_bench() -> Result<(), anyhow::Error> { (0..config.num_nodes).map(|i| format!("collator{i}")).collect(); let collator_names: Vec<&str> = collator_names.iter().map(|s| s.as_str()).collect(); - let network = spawn_network(&collator_names).await?; + let network = spawn_network(&collator_names, config.num_clients).await?; info!("Starting Latency benchmark"); info!(""); @@ -848,7 +918,7 @@ async fn statement_store_latency_bench() -> Result<(), anyhow::Error> { .map(|client_id| { let config = Arc::clone(&config); let barrier = Arc::clone(&barrier); - let (keyring, _) = sr25519::Pair::generate(); + let keyring = get_keypair(client_id); let node_idx = (client_id as usize) % config.num_nodes; let rpc_client = rpc_clients[node_idx].clone(); let neighbour_id = (client_id + 1) % config.num_clients; From 2123a5ddfda12f8668d542cbdd070764c7bffac5 Mon Sep 17 00:00:00 2001 From: Andrei Eres Date: Wed, 21 Jan 2026 12:05:51 +0100 Subject: [PATCH 51/81] Revert runtime changes --- Cargo.lock | 1 - .../runtimes/people/people-westend/src/lib.rs | 16 ++ .../lib/src/fake_runtime_api/utils.rs | 9 + substrate/bin/node/runtime/src/lib.rs | 9 + substrate/frame/statement/Cargo.toml | 2 - substrate/frame/statement/src/lib.rs | 160 ++++++++++-------- substrate/frame/statement/src/mock.rs | 89 ++++++++++ substrate/frame/statement/src/tests.rs | 159 +++++++++++++++++ .../statement-store/src/runtime_api.rs | 13 +- substrate/test-utils/runtime/src/lib.rs | 17 ++ 10 files changed, 405 insertions(+), 70 deletions(-) create mode 100644 substrate/frame/statement/src/mock.rs create mode 100644 substrate/frame/statement/src/tests.rs diff --git a/Cargo.lock b/Cargo.lock index 6638e6ff6fb32..721c1649f4094 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -13912,7 +13912,6 @@ dependencies = [ "sp-io", "sp-runtime", "sp-statement-store", - "sp-storage 19.0.0", ] [[package]] diff --git a/cumulus/parachains/runtimes/people/people-westend/src/lib.rs b/cumulus/parachains/runtimes/people/people-westend/src/lib.rs index 0fd066efd654a..368bf83a3bd6b 100644 --- a/cumulus/parachains/runtimes/people/people-westend/src/lib.rs +++ b/cumulus/parachains/runtimes/people/people-westend/src/lib.rs @@ -65,6 +65,10 @@ use sp_runtime::{ ApplyExtrinsicResult, }; pub use sp_runtime::{MultiAddress, Perbill, Permill}; +use sp_statement_store::{ + runtime_api::{InvalidStatement, StatementSource, ValidStatement}, + SignatureVerificationResult, Statement, +}; #[cfg(feature = "std")] use sp_version::NativeVersion; use sp_version::RuntimeVersion; @@ -1142,6 +1146,18 @@ impl_runtime_apis! { 1 } } + + impl sp_statement_store::runtime_api::ValidateStatement for Runtime { + fn validate_statement( + _source: StatementSource, + statement: Statement, + ) -> Result { + match statement.verify_signature() { + SignatureVerificationResult::Invalid => Err(InvalidStatement::BadProof), + _ => Ok(ValidStatement { max_count: 100_000, max_size: 1_000_000 }), + } + } + } } cumulus_pallet_parachain_system::register_validate_block! { diff --git a/cumulus/polkadot-omni-node/lib/src/fake_runtime_api/utils.rs b/cumulus/polkadot-omni-node/lib/src/fake_runtime_api/utils.rs index e97af794c38e6..56eb3d2ae7602 100644 --- a/cumulus/polkadot-omni-node/lib/src/fake_runtime_api/utils.rs +++ b/cumulus/polkadot-omni-node/lib/src/fake_runtime_api/utils.rs @@ -234,6 +234,15 @@ macro_rules! impl_node_runtime_apis { } } + impl sp_statement_store::runtime_api::ValidateStatement<$block> for $runtime { + fn validate_statement( + _source: sp_statement_store::runtime_api::StatementSource, + _statement: sp_statement_store::Statement, + ) -> Result { + unimplemented!() + } + } + impl cumulus_primitives_core::TargetBlockRate<$block> for $runtime { fn target_block_rate() -> u32 { unimplemented!() diff --git a/substrate/bin/node/runtime/src/lib.rs b/substrate/bin/node/runtime/src/lib.rs index bb892dc157ec1..0f145a1df759f 100644 --- a/substrate/bin/node/runtime/src/lib.rs +++ b/substrate/bin/node/runtime/src/lib.rs @@ -3255,6 +3255,15 @@ pallet_revive::impl_runtime_apis_plus_revive_traits!( } } + impl sp_statement_store::runtime_api::ValidateStatement for Runtime { + fn validate_statement( + source: sp_statement_store::runtime_api::StatementSource, + statement: sp_statement_store::Statement, + ) -> Result { + Statement::validate_statement(source, statement) + } + } + impl sp_offchain::OffchainWorkerApi for Runtime { fn offchain_worker(header: &::Header) { Executive::offchain_worker(header) diff --git a/substrate/frame/statement/Cargo.toml b/substrate/frame/statement/Cargo.toml index 5ea24a0d6a0b8..b1449fa244162 100644 --- a/substrate/frame/statement/Cargo.toml +++ b/substrate/frame/statement/Cargo.toml @@ -25,7 +25,6 @@ sp-core = { workspace = true } sp-io = { workspace = true } sp-runtime = { workspace = true } sp-statement-store = { workspace = true } -sp-storage = { workspace = true } [dev-dependencies] pallet-balances = { workspace = true, default-features = true } @@ -44,7 +43,6 @@ std = [ "sp-io/std", "sp-runtime/std", "sp-statement-store/std", - "sp-storage/std", ] try-runtime = [ "frame-support/try-runtime", diff --git a/substrate/frame/statement/src/lib.rs b/substrate/frame/statement/src/lib.rs index d4c8701465f6d..24f00c4d750ba 100644 --- a/substrate/frame/statement/src/lib.rs +++ b/substrate/frame/statement/src/lib.rs @@ -21,18 +21,35 @@ //! //! ## Overview //! -//! The Statement pallet provides means to create statements for the statement store. -//! Statement validation is performed node-side using direct signature verification with -//! configurable allowance limits. +//! The Statement pallet provides means to create and validate statements for the statement store. +//! +//! For each statement validation function calculates the following three values based on the +//! statement author balance: +//! `max_count`: Maximum number of statements allowed for the author (signer) of this statement. +//! `max_size`: Maximum total size of statements allowed for the author (signer) of this statement. //! //! This pallet also contains an offchain worker that turns on-chain statement events into //! statements. These statements are placed in the store and propagated over the network. #![cfg_attr(not(feature = "std"), no_std)] -use frame_support::{pallet_prelude::*, traits::fungible::Inspect}; +use frame_support::{ + pallet_prelude::*, + sp_runtime::{traits::CheckedDiv, SaturatedConversion}, + traits::fungible::Inspect, +}; use frame_system::pallet_prelude::*; -use sp_statement_store::{Proof, Statement}; +use sp_statement_store::{ + runtime_api::{InvalidStatement, StatementSource, ValidStatement}, + Proof, SignatureVerificationResult, Statement, +}; + +#[cfg(test)] +// We do not declare all features used by `construct_runtime` +#[allow(unexpected_cfgs)] +mod mock; +#[cfg(test)] +mod tests; pub use pallet::*; @@ -48,7 +65,10 @@ pub mod pallet { pub type AccountIdOf = ::AccountId; #[pallet::config] - pub trait Config: frame_system::Config { + pub trait Config: frame_system::Config + where + ::AccountId: From, + { /// The overarching event type. #[allow(deprecated)] type RuntimeEvent: From> + IsType<::RuntimeEvent>; @@ -85,14 +105,6 @@ pub mod pallet { { /// A new statement is submitted NewStatement { account: T::AccountId, statement: Statement }, - /// Statement allowance set for an account - AllowanceSet { account: T::AccountId, max_count: u32, max_size: u32 }, - } - - #[pallet::error] - pub enum Error { - /// Failed to convert account ID to 32 bytes - InvalidAccountId, } #[pallet::hooks] @@ -109,58 +121,6 @@ pub mod pallet { Pallet::::collect_statements(); } } - - #[pallet::call] - impl Pallet - where - ::AccountId: From, - { - /// Set statement allowance for a specific account. - /// - /// This is a root-only call intended for test networks to manually configure - /// per-account statement allowances. - /// - /// ## Parameters - /// - `origin`: Must be root - /// - `who`: The account to set allowance for - /// - `max_count`: Maximum number of statements allowed - /// - `max_size`: Maximum total size of statements in bytes - /// - /// ## Weight - /// - 1 storage write to well-known key - #[pallet::call_index(0)] - #[pallet::weight(T::DbWeight::get().writes(1))] - pub fn set_statement_allowance( - origin: OriginFor, - who: T::AccountId, - max_count: u32, - max_size: u32, - ) -> DispatchResult { - use codec::Encode; - use sp_io; - use sp_statement_store::{statement_allowance_key, StatementAllowance}; - - ensure_root(origin)?; - - let account_bytes: [u8; 32] = - who.encode().as_slice().try_into().map_err(|_| Error::::InvalidAccountId)?; - - let key = statement_allowance_key(&account_bytes); - let allowance = StatementAllowance::new(max_count, max_size); - sp_io::storage::set(&key, &allowance.encode()); - - log::debug!( - target: LOG_TARGET, - "Set statement allowance for account: max_count={}, max_size={}", - max_count, - max_size - ); - - Self::deposit_event(Event::AllowanceSet { account: who, max_count, max_size }); - - Ok(()) - } - } } impl Pallet @@ -171,6 +131,74 @@ where ::RuntimeEvent: TryInto>, sp_statement_store::BlockHash: From<::Hash>, { + /// Validate a statement against current state. This is supposed to be called by the statement + /// store on the host side. + pub fn validate_statement( + _source: StatementSource, + mut statement: Statement, + ) -> Result { + sp_io::init_tracing(); + log::debug!(target: LOG_TARGET, "Validating statement {:?}", statement); + let account: T::AccountId = match statement.proof() { + Some(Proof::OnChain { who, block_hash, event_index }) => { + if frame_system::Pallet::::parent_hash().as_ref() != block_hash.as_slice() { + log::debug!(target: LOG_TARGET, "Bad block hash."); + return Err(InvalidStatement::BadProof) + } + let account: T::AccountId = (*who).into(); + match frame_system::Pallet::::event_no_consensus(*event_index as usize) { + Some(e) => { + statement.remove_proof(); + if let Ok(Event::NewStatement { account: a, statement: s }) = e.try_into() { + if a != account || s != statement { + log::debug!(target: LOG_TARGET, "Event data mismatch"); + return Err(InvalidStatement::BadProof) + } + } else { + log::debug!(target: LOG_TARGET, "Event type mismatch"); + return Err(InvalidStatement::BadProof) + } + }, + _ => { + log::debug!(target: LOG_TARGET, "Bad event index"); + return Err(InvalidStatement::BadProof) + }, + } + account + }, + _ => match statement.verify_signature() { + SignatureVerificationResult::Valid(account) => account.into(), + SignatureVerificationResult::Invalid => { + log::debug!(target: LOG_TARGET, "Bad statement signature."); + return Err(InvalidStatement::BadProof) + }, + SignatureVerificationResult::NoSignature => { + log::debug!(target: LOG_TARGET, "Missing statement signature."); + return Err(InvalidStatement::NoProof) + }, + }, + }; + let statement_cost = T::StatementCost::get(); + let byte_cost = T::ByteCost::get(); + let balance = >>::balance(&account); + let min_allowed_statements = T::MinAllowedStatements::get(); + let max_allowed_statements = T::MaxAllowedStatements::get(); + let min_allowed_bytes = T::MinAllowedBytes::get(); + let max_allowed_bytes = T::MaxAllowedBytes::get(); + let max_count = balance + .checked_div(&statement_cost) + .unwrap_or_default() + .saturated_into::() + .clamp(min_allowed_statements, max_allowed_statements); + let max_size = balance + .checked_div(&byte_cost) + .unwrap_or_default() + .saturated_into::() + .clamp(min_allowed_bytes, max_allowed_bytes); + + Ok(ValidStatement { max_count, max_size }) + } + /// Submit a statement event. The statement will be picked up by the offchain worker and /// broadcast to the network. pub fn submit_statement(account: T::AccountId, statement: Statement) { diff --git a/substrate/frame/statement/src/mock.rs b/substrate/frame/statement/src/mock.rs new file mode 100644 index 0000000000000..db9d19dbbab73 --- /dev/null +++ b/substrate/frame/statement/src/mock.rs @@ -0,0 +1,89 @@ +// This file is part of Substrate. + +// Copyright (C) Parity Technologies (UK) Ltd. +// SPDX-License-Identifier: Apache-2.0 + +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +//! # Statement pallet test environment. + +use super::*; + +use crate as pallet_statement; +use frame_support::{ + derive_impl, ord_parameter_types, + traits::{ConstU32, ConstU64}, +}; +use sp_core::Pair; +use sp_runtime::{traits::IdentityLookup, AccountId32, BuildStorage}; + +type Block = frame_system::mocking::MockBlock; + +pub const MIN_ALLOWED_STATEMENTS: u32 = 4; +pub const MAX_ALLOWED_STATEMENTS: u32 = 10; +pub const MIN_ALLOWED_BYTES: u32 = 1024; +pub const MAX_ALLOWED_BYTES: u32 = 4096; + +frame_support::construct_runtime!( + pub enum Test + { + System: frame_system, + Balances: pallet_balances, + Statement: pallet_statement, + } +); + +#[derive_impl(frame_system::config_preludes::TestDefaultConfig)] +impl frame_system::Config for Test { + type AccountId = AccountId32; + type Lookup = IdentityLookup; + type Block = Block; + type AccountData = pallet_balances::AccountData; +} + +#[derive_impl(pallet_balances::config_preludes::TestDefaultConfig)] +impl pallet_balances::Config for Test { + type ExistentialDeposit = ConstU64<5>; + type AccountStore = System; +} + +ord_parameter_types! { + pub const One: u64 = 1; +} + +impl Config for Test { + type RuntimeEvent = RuntimeEvent; + type Currency = Balances; + type StatementCost = ConstU64<1000>; + type ByteCost = ConstU64<2>; + type MinAllowedStatements = ConstU32; + type MaxAllowedStatements = ConstU32; + type MinAllowedBytes = ConstU32; + type MaxAllowedBytes = ConstU32; +} + +pub fn new_test_ext() -> sp_io::TestExternalities { + let mut t = frame_system::GenesisConfig::::default().build_storage().unwrap(); + let balances = pallet_balances::GenesisConfig:: { + balances: vec![ + (sp_core::sr25519::Pair::from_string("//Alice", None).unwrap().public().into(), 6000), + ( + sp_core::sr25519::Pair::from_string("//Charlie", None).unwrap().public().into(), + 500000, + ), + ], + ..Default::default() + }; + balances.assimilate_storage(&mut t).unwrap(); + t.into() +} diff --git a/substrate/frame/statement/src/tests.rs b/substrate/frame/statement/src/tests.rs new file mode 100644 index 0000000000000..51103caca60fa --- /dev/null +++ b/substrate/frame/statement/src/tests.rs @@ -0,0 +1,159 @@ +// This file is part of Substrate. + +// Copyright (C) Parity Technologies (UK) Ltd. +// SPDX-License-Identifier: Apache-2.0 + +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +//! # Statement runtime support tests. + +#![cfg(test)] + +use super::*; +use crate::mock::*; +use sp_core::Pair; +use sp_runtime::AccountId32; +use sp_statement_store::{ + runtime_api::{InvalidStatement, StatementSource, ValidStatement}, + Proof, Statement, +}; + +#[test] +fn sign_and_validate_no_balance() { + new_test_ext().execute_with(|| { + let pair = sp_core::sr25519::Pair::from_string("//Bob", None).unwrap(); + let mut statement = Statement::new(); + statement.sign_sr25519_private(&pair); + let result = Pallet::::validate_statement(StatementSource::Chain, statement); + assert_eq!( + Ok(ValidStatement { max_count: MIN_ALLOWED_STATEMENTS, max_size: MIN_ALLOWED_BYTES }), + result + ); + + let pair = sp_core::ed25519::Pair::from_string("//Bob", None).unwrap(); + let mut statement = Statement::new(); + statement.sign_ed25519_private(&pair); + let result = Pallet::::validate_statement(StatementSource::Chain, statement); + assert_eq!( + Ok(ValidStatement { max_count: MIN_ALLOWED_STATEMENTS, max_size: MIN_ALLOWED_BYTES }), + result + ); + + let pair = sp_core::ecdsa::Pair::from_string("//Bob", None).unwrap(); + let mut statement = Statement::new(); + statement.sign_ecdsa_private(&pair); + let result = Pallet::::validate_statement(StatementSource::Chain, statement); + assert_eq!( + Ok(ValidStatement { max_count: MIN_ALLOWED_STATEMENTS, max_size: MIN_ALLOWED_BYTES }), + result + ); + }); +} + +#[test] +fn validate_with_balance() { + new_test_ext().execute_with(|| { + let pair = sp_core::sr25519::Pair::from_string("//Alice", None).unwrap(); + let mut statement = Statement::new(); + statement.sign_sr25519_private(&pair); + let result = Pallet::::validate_statement(StatementSource::Chain, statement); + assert_eq!(Ok(ValidStatement { max_count: 6, max_size: 3000 }), result); + + let pair = sp_core::sr25519::Pair::from_string("//Charlie", None).unwrap(); + let mut statement = Statement::new(); + statement.sign_sr25519_private(&pair); + let result = Pallet::::validate_statement(StatementSource::Chain, statement); + assert_eq!( + Ok(ValidStatement { max_count: MAX_ALLOWED_STATEMENTS, max_size: MAX_ALLOWED_BYTES }), + result + ); + }); +} + +#[test] +fn validate_no_proof_fails() { + new_test_ext().execute_with(|| { + let statement = Statement::new(); + let result = Pallet::::validate_statement(StatementSource::Chain, statement); + assert_eq!(Err(InvalidStatement::NoProof), result); + }); +} + +#[test] +fn validate_bad_signature_fails() { + new_test_ext().execute_with(|| { + let statement = Statement::new_with_proof(Proof::Sr25519 { + signature: [0u8; 64], + signer: Default::default(), + }); + let result = Pallet::::validate_statement(StatementSource::Chain, statement); + assert_eq!(Err(InvalidStatement::BadProof), result); + }); +} + +#[test] +fn validate_event() { + new_test_ext().execute_with(|| { + let parent_hash = sp_core::H256::random(); + System::reset_events(); + System::initialize(&1, &parent_hash, &Default::default()); + let mut statement = Statement::new(); + let pair = sp_core::sr25519::Pair::from_string("//Alice", None).unwrap(); + let account: AccountId32 = pair.public().into(); + Pallet::::submit_statement(account.clone(), statement.clone()); + statement.set_proof(Proof::OnChain { + who: account.clone().into(), + event_index: 0, + block_hash: parent_hash.into(), + }); + let result = Pallet::::validate_statement(StatementSource::Chain, statement.clone()); + assert_eq!(Ok(ValidStatement { max_count: 6, max_size: 3000 }), result); + + // Use wrong event index + statement.set_proof(Proof::OnChain { + who: account.clone().into(), + event_index: 1, + block_hash: parent_hash.into(), + }); + let result = Pallet::::validate_statement(StatementSource::Chain, statement.clone()); + assert_eq!(Err(InvalidStatement::BadProof), result); + + // Use wrong block hash + statement.set_proof(Proof::OnChain { + who: account.clone().into(), + event_index: 0, + block_hash: sp_core::H256::random().into(), + }); + let result = Pallet::::validate_statement(StatementSource::Chain, statement.clone()); + assert_eq!(Err(InvalidStatement::BadProof), result); + }); +} + +#[test] +fn validate_no_event_fails() { + new_test_ext().execute_with(|| { + let parent_hash = sp_core::H256::random(); + System::reset_events(); + System::initialize(&1, &parent_hash, &Default::default()); + let mut statement = Statement::new(); + let pair = sp_core::sr25519::Pair::from_string("//Alice", None).unwrap(); + let account: AccountId32 = pair.public().into(); + statement.set_proof(Proof::OnChain { + who: account.into(), + event_index: 0, + block_hash: parent_hash.into(), + }); + let result = Pallet::::validate_statement(StatementSource::Chain, statement); + assert_eq!(Err(InvalidStatement::BadProof), result); + }); +} diff --git a/substrate/primitives/statement-store/src/runtime_api.rs b/substrate/primitives/statement-store/src/runtime_api.rs index 869fd4aa6dbbd..020df6452a540 100644 --- a/substrate/primitives/statement-store/src/runtime_api.rs +++ b/substrate/primitives/statement-store/src/runtime_api.rs @@ -17,7 +17,7 @@ //! Runtime support for the statement store. -use crate::{Hash, Statement, Topic}; +use crate::{Hash, Statement, StatementAllowance as ValidStatement, Topic}; use alloc::vec::Vec; use codec::{Decode, Encode}; use scale_info::TypeInfo; @@ -68,6 +68,17 @@ impl StatementSource { } } +sp_api::decl_runtime_apis! { + /// Runtime API trait for statement validation. + pub trait ValidateStatement { + /// Validate the statement. + fn validate_statement( + source: StatementSource, + statement: Statement, + ) -> Result; + } +} + #[cfg(feature = "std")] sp_externalities::decl_extension! { /// The offchain database extension that will be registered at the Substrate externalities. diff --git a/substrate/test-utils/runtime/src/lib.rs b/substrate/test-utils/runtime/src/lib.rs index 172c626efc301..308e4293c9139 100644 --- a/substrate/test-utils/runtime/src/lib.rs +++ b/substrate/test-utils/runtime/src/lib.rs @@ -822,6 +822,23 @@ impl_runtime_apis! { vec![PresetId::from("foobar"), PresetId::from("staging")] } } + + impl sp_statement_store::runtime_api::ValidateStatement for Runtime { + fn validate_statement( + _source: sp_statement_store::runtime_api::StatementSource, + statement: sp_statement_store::Statement, + ) -> Result< + sp_statement_store::runtime_api::ValidStatement, + sp_statement_store::runtime_api::InvalidStatement, + > { + use sp_statement_store::runtime_api::{InvalidStatement, ValidStatement}; + + match statement.verify_signature() { + sp_statement_store::SignatureVerificationResult::Invalid => Err(InvalidStatement::BadProof), + _ => Ok(ValidStatement { max_count: 100_000, max_size: 1_000_000 }), + } + } + } } fn test_ed25519_crypto( From f66355aed51f85c40308fc0c6f33ae09b764ce13 Mon Sep 17 00:00:00 2001 From: Andrei Eres Date: Wed, 21 Jan 2026 12:07:35 +0100 Subject: [PATCH 52/81] Fix import --- substrate/primitives/statement-store/src/runtime_api.rs | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/substrate/primitives/statement-store/src/runtime_api.rs b/substrate/primitives/statement-store/src/runtime_api.rs index 020df6452a540..7488a5a0e8b5a 100644 --- a/substrate/primitives/statement-store/src/runtime_api.rs +++ b/substrate/primitives/statement-store/src/runtime_api.rs @@ -17,7 +17,7 @@ //! Runtime support for the statement store. -use crate::{Hash, Statement, StatementAllowance as ValidStatement, Topic}; +use crate::{Hash, Statement, Topic}; use alloc::vec::Vec; use codec::{Decode, Encode}; use scale_info::TypeInfo; @@ -33,6 +33,8 @@ use Debug; #[cfg(feature = "std")] use sp_externalities::ExternalitiesExt; +pub use crate::StatementAllowance as ValidStatement; + /// An reason for an invalid statement. #[derive(Clone, PartialEq, Eq, Encode, Decode, Copy, Debug, TypeInfo)] pub enum InvalidStatement { From 9d9bad5a54fe445cfe8e6013686b6e120676e843 Mon Sep 17 00:00:00 2001 From: Alexandru Gheorghe Date: Wed, 21 Jan 2026 13:30:59 +0200 Subject: [PATCH 53/81] fix benchmark Signed-off-by: Alexandru Gheorghe --- .../tests/zombie_ci/statement_store_bench.rs | 143 ++++++++++-------- 1 file changed, 83 insertions(+), 60 deletions(-) diff --git a/cumulus/zombienet/zombienet-sdk/tests/zombie_ci/statement_store_bench.rs b/cumulus/zombienet/zombienet-sdk/tests/zombie_ci/statement_store_bench.rs index 42ed21c272ab2..fe2ca958988d5 100644 --- a/cumulus/zombienet/zombienet-sdk/tests/zombie_ci/statement_store_bench.rs +++ b/cumulus/zombienet/zombienet-sdk/tests/zombie_ci/statement_store_bench.rs @@ -328,12 +328,7 @@ async fn spawn_network(collators: &[&str]) -> Result, a "--max-runtime-instances=32".into(), "-linfo,statement-store=info,statement-gossip=info".into(), "--enable-statement-store".into(), - format!( - "--rpc-max-connections={}", - PARTICIPANT_SIZE / collators.len() as u32 + 1000 - ) - .as_str() - .into(), + format!("--rpc-max-connections={}", PARTICIPANT_SIZE + 1000).as_str().into(), ]) // Have to set outside of the loop below, so that `p` has the right type. .with_collator(|n| n.with_name(collators[0])); @@ -739,8 +734,6 @@ struct LatencyBenchConfig { num_nodes: usize, num_clients: u32, max_retries: u32, - retry_delay_ms: u64, - propagation_delay_ms: u64, interval_ms: u64, req_timeout_ms: u64, messages_pattern: &'static [(usize, usize)], @@ -775,9 +768,7 @@ async fn statement_store_latency_bench() -> Result<(), anyhow::Error> { num_rounds: 1, messages_pattern: &[(5, 1024 / 2)], max_retries: 500, - retry_delay_ms: 1000, req_timeout_ms: 3000, - propagation_delay_ms: 1000, }); let collator_names: Vec = @@ -802,8 +793,7 @@ async fn statement_store_latency_bench() -> Result<(), anyhow::Error> { let mut rpc_clients = Vec::new(); for &name in &collator_names { let node = network.get_node(name)?; - let rpc_client = node.rpc().await?; - rpc_clients.push(rpc_client); + rpc_clients.push(node); } let barrier = Arc::new(Barrier::new(config.num_clients as usize)); @@ -823,7 +813,7 @@ async fn statement_store_latency_bench() -> Result<(), anyhow::Error> { let test_run_id = Arc::clone(&test_run_id); let (keyring, _) = sr25519::Pair::generate(); let node_idx = (client_id as usize) % config.num_nodes; - let rpc_client = rpc_clients[node_idx].clone(); + let rpc_node = rpc_clients[node_idx].clone(); let neighbour_id = (client_id + 1) % config.num_clients; let neighbour_node_idx = (neighbour_id as usize) % config.num_nodes; if node_idx == neighbour_node_idx && config.num_nodes > 1 { @@ -834,6 +824,7 @@ async fn statement_store_latency_bench() -> Result<(), anyhow::Error> { tokio::spawn(async move { barrier.wait().await; + let rpc_client = rpc_node.rpc().await?; if client_id == 0 { let sync_time = sync_start.elapsed(); @@ -851,6 +842,42 @@ async fn statement_store_latency_bench() -> Result<(), anyhow::Error> { for round in 0..config.num_rounds { let round_start = std::time::Instant::now(); + // Step 1: Create subscriptions for messages we expect to receive + if client_id == 0 { + info!("Creating subscriptions for expected messages"); + } + + let mut subscriptions = Vec::new(); + for msg_idx in 0..config.messages_per_client() as u32 { + let topic_str = + format!("{}-{}-{}-{}", *test_run_id, neighbour_id, round, msg_idx); + if client_id == 0 { + info!("Subscribed {msg_idx} message(s) {topic_str:?}"); + } + + let topic = blake2_256(topic_str.as_bytes()); + + let subscription = rpc_client + .subscribe::( + "statement_subscribeStatement", + rpc_params![TopicFilter::MatchAll(vec![topic.to_vec().into()])], + "statement_unsubscribeStatement", + ) + .await + .map_err(|e| { + anyhow!( + "Client {}: Failed to subscribe for message {} from neighbour {}: {}", + client_id, msg_idx, neighbour_id, e + ) + })?; + subscriptions.push((msg_idx, topic_str, subscription)); + } + + if client_id == 0 { + info!("Created {} subscriptions", subscriptions.len()); + } + + // Step 2: Send messages let send_start = std::time::Instant::now(); let mut msg_idx: u32 = 0; @@ -894,60 +921,56 @@ async fn statement_store_latency_bench() -> Result<(), anyhow::Error> { let sent_count = msg_idx; let send_duration = send_start.elapsed(); - let propagation_jitter = (client_id % 1000) as u64; - tokio::time::sleep(Duration::from_millis( - config.propagation_delay_ms + propagation_jitter, - )) - .await; - + // Step 3: Wait for subscriptions to receive messages let receive_start = std::time::Instant::now(); let mut received_count = 0; - let mut receive_attempts = 0; + let receive_attempts = subscriptions.len() as u32; if client_id == 0 { - info!("Start receiving messages"); + info!("Start receiving messages via subscriptions"); } - for msg_idx in 0..config.messages_per_client() as u32 { - // Use same test run ID for topic lookup - let topic_str = - format!("{}-{}-{}-{}", *test_run_id, neighbour_id, round, msg_idx); - let topic = blake2_256(topic_str.as_bytes()); - - for retry in 0..config.max_retries { - receive_attempts += 1; - match timeout( - Duration::from_millis(config.req_timeout_ms), - rpc_client.request::>( - "statement_broadcastsStatement", - rpc_params![vec![topic]], - ), - ) - .await - { - Ok(Ok(statements)) if !statements.is_empty() => { - received_count += statements.len() as u32; - if client_id == 0 { - info!("Received {received_count} message(s) {topic_str:?}") - } - break; - }, - res if retry < config.max_retries - 1 => { - if client_id == 0 { - info!("Waiting to retry, {res:?} {topic_str:?}") - } - tokio::time::sleep(Duration::from_millis( - config.retry_delay_ms, - )) - .await; - }, - _ => { - return Err(anyhow!( - "Client {}: Failed to retrieve message {} from neighbour {} after {} retries", - client_id, msg_idx, neighbour_id, config.max_retries - )); - }, + let total_timeout = + Duration::from_millis(config.req_timeout_ms * config.max_retries as u64); + + let mut futures: FuturesUnordered<_> = subscriptions + .into_iter() + .map(|(msg_idx, topic_str, mut subscription)| async move { + match timeout(total_timeout, subscription.next()).await { + Ok(Some(Ok(_statement_bytes))) => Ok((msg_idx, topic_str)), + Ok(Some(Err(e))) => Err(anyhow!( + "Subscription error for message {}: {}", + msg_idx, + e + )), + Ok(None) => Err(anyhow!( + "Subscription ended unexpectedly for message {}", + msg_idx + )), + Err(_) => Err(anyhow!("Timeout waiting for message {}", msg_idx)), } + }) + .collect(); + + while let Some(result) = futures.next().await { + match result { + Ok((msg_idx, topic_str)) => { + received_count += 1; + if client_id == 0 { + info!( + "Received {received_count} message(s) {topic_str:?} (msg_idx: {})", + msg_idx + ); + } + }, + Err(e) => { + return Err(anyhow!( + "Client {}: Failed to receive message from neighbour {}: {}", + client_id, + neighbour_id, + e + )); + }, } } From a1abb39698196fcb430ae9f11459ff31dd0c51c4 Mon Sep 17 00:00:00 2001 From: Alexandru Gheorghe Date: Wed, 21 Jan 2026 13:34:53 +0200 Subject: [PATCH 54/81] fix CheckedTopicFilter Signed-off-by: Alexandru Gheorghe --- .../zombienet-sdk/tests/zombie_ci/statement_store_bench.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cumulus/zombienet/zombienet-sdk/tests/zombie_ci/statement_store_bench.rs b/cumulus/zombienet/zombienet-sdk/tests/zombie_ci/statement_store_bench.rs index fe2ca958988d5..8d00a7eb570f7 100644 --- a/cumulus/zombienet/zombienet-sdk/tests/zombie_ci/statement_store_bench.rs +++ b/cumulus/zombienet/zombienet-sdk/tests/zombie_ci/statement_store_bench.rs @@ -842,7 +842,7 @@ async fn statement_store_latency_bench() -> Result<(), anyhow::Error> { for round in 0..config.num_rounds { let round_start = std::time::Instant::now(); - // Step 1: Create subscriptions for messages we expect to receive + // Create subscriptions for messages we expect to receive if client_id == 0 { info!("Creating subscriptions for expected messages"); } From 7d4c7a9b0192a0e08d329278d59507c4da5478af Mon Sep 17 00:00:00 2001 From: Andrei Eres Date: Wed, 21 Jan 2026 12:51:41 +0100 Subject: [PATCH 55/81] Return runtime to omninode --- cumulus/polkadot-omni-node/lib/src/common/mod.rs | 3 +++ 1 file changed, 3 insertions(+) diff --git a/cumulus/polkadot-omni-node/lib/src/common/mod.rs b/cumulus/polkadot-omni-node/lib/src/common/mod.rs index c75aff94c4fe2..fc9717063880c 100644 --- a/cumulus/polkadot-omni-node/lib/src/common/mod.rs +++ b/cumulus/polkadot-omni-node/lib/src/common/mod.rs @@ -40,6 +40,7 @@ use sp_runtime::{ OpaqueExtrinsic, }; use sp_session::SessionKeys; +use sp_statement_store::runtime_api::ValidateStatement; use sp_transaction_pool::runtime_api::TaggedTransactionQueue; use sp_transaction_storage_proof::runtime_api::TransactionStorageApi; use std::{fmt::Debug, path::PathBuf, str::FromStr}; @@ -72,6 +73,7 @@ pub trait NodeRuntimeApi: + TaggedTransactionQueue + OffchainWorkerApi + CollectCollationInfo + + ValidateStatement + GetParachainInfo + TransactionStorageApi + RelayParentOffsetApi @@ -88,6 +90,7 @@ impl NodeRuntimeApi for T where + OffchainWorkerApi + RelayParentOffsetApi + CollectCollationInfo + + ValidateStatement + GetParachainInfo + TransactionStorageApi { From b65b5958fcb70874cdb7523ec0d1604cdc20d0c0 Mon Sep 17 00:00:00 2001 From: Andrei Eres Date: Wed, 21 Jan 2026 12:51:52 +0100 Subject: [PATCH 56/81] Fix PR doc --- prdoc/pr_10787.prdoc | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/prdoc/pr_10787.prdoc b/prdoc/pr_10787.prdoc index 8841fcb812891..b6698bbc71f9c 100644 --- a/prdoc/pr_10787.prdoc +++ b/prdoc/pr_10787.prdoc @@ -2,10 +2,9 @@ title: 'statement-store: validation without runtime' doc: - audience: Node Dev description: |- - Removes `validate_statement` runtime API call from the validation pipeline. + This removes slow runtime validation from statement-submission hot path. Validation now happens on the node side via direct signature verification - and storage reads for account quotas. This removes slow runtime validation - from statement-submission hot path. + and storage reads for account quotas. crates: - name: sc-statement-store From 3111fada5470293fc7d4bfff68b2e4404f846685 Mon Sep 17 00:00:00 2001 From: Andrei Eres Date: Wed, 21 Jan 2026 13:16:19 +0100 Subject: [PATCH 57/81] Use correct chain state for onchain statements --- substrate/client/statement-store/src/lib.rs | 24 ++++++++++++++++----- 1 file changed, 19 insertions(+), 5 deletions(-) diff --git a/substrate/client/statement-store/src/lib.rs b/substrate/client/statement-store/src/lib.rs index 994e371913b32..aecc410fa7369 100644 --- a/substrate/client/statement-store/src/lib.rs +++ b/substrate/client/statement-store/src/lib.rs @@ -182,10 +182,14 @@ where BE: Backend + 'static, Client: HeaderBackend + StorageProvider + Send + Sync + 'static, { - fn read_allowance(&self, account_id: &AccountId) -> Result> { + fn read_allowance( + &self, + account_id: &AccountId, + block_hash: Option, + ) -> Result> { use sp_statement_store::{statement_allowance_key, StatementAllowance}; - let block_hash = self.client.info().finalized_hash; + let block_hash = block_hash.unwrap_or(self.client.info().finalized_hash); let key = statement_allowance_key(account_id); let storage_key = StorageKey(key); self.client @@ -203,7 +207,9 @@ where pub struct Store { db: parity_db::Db, index: RwLock, - read_allowance_fn: Box Result> + Send + Sync>, + read_allowance_fn: Box< + dyn Fn(&AccountId, Option) -> Result> + Send + Sync, + >, keystore: Arc, // Used for testing time_override: Option, @@ -572,7 +578,9 @@ impl Store { let storage_reader = ClientWrapper { client, _block: Default::default(), _backend: Default::default() }; let read_allowance_fn = - Box::new(move |account_id: &AccountId| storage_reader.read_allowance(account_id)); + Box::new(move |account_id: &AccountId, block_hash: Option| { + storage_reader.read_allowance(account_id, block_hash.map(Into::into)) + }); let store = Store { db, @@ -963,7 +971,13 @@ impl StatementStore for Store { return SubmitResult::Invalid(InvalidReason::NoProof); }; - let validation = match (self.read_allowance_fn)(&account_id) { + let validation = match (self.read_allowance_fn)( + &account_id, + statement.proof().and_then(|p| match p { + Proof::OnChain { block_hash, .. } => Some(*block_hash), + _ => None, + }), + ) { Ok(Some(allowance)) => allowance, Ok(None) => { log::debug!( From e0c9bf5734c7f7ea87a01972ab8f7473b068183a Mon Sep 17 00:00:00 2001 From: Alexandru Gheorghe Date: Wed, 21 Jan 2026 14:53:43 +0200 Subject: [PATCH 58/81] review feedback Signed-off-by: Alexandru Gheorghe --- .../zombienet-sdk/tests/zombie_ci/statement_store.rs | 2 +- substrate/primitives/statement-store/src/store_api.rs | 5 ++++- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/cumulus/zombienet/zombienet-sdk/tests/zombie_ci/statement_store.rs b/cumulus/zombienet/zombienet-sdk/tests/zombie_ci/statement_store.rs index 1eec7393616c8..3b88c6819b05a 100644 --- a/cumulus/zombienet/zombienet-sdk/tests/zombie_ci/statement_store.rs +++ b/cumulus/zombienet/zombienet-sdk/tests/zombie_ci/statement_store.rs @@ -103,6 +103,6 @@ async fn statement_store() -> Result<(), anyhow::Error> { log::info!("Statement store test passed"); log::info!("Keeping network alive"); - tokio::time::sleep(Duration::from_hours(24)).await; + tokio::time::sleep(Duration::from_secs(24 * 60 * 60)).await; Ok(()) } diff --git a/substrate/primitives/statement-store/src/store_api.rs b/substrate/primitives/statement-store/src/store_api.rs index 6582f3872c4a5..b5e2c055a84e3 100644 --- a/substrate/primitives/statement-store/src/store_api.rs +++ b/substrate/primitives/statement-store/src/store_api.rs @@ -16,7 +16,7 @@ // limitations under the License. pub use crate::runtime_api::StatementSource; -use crate::{Hash, Statement, Topic, MAX_ANY_TOPICS}; +use crate::{Hash, Statement, Topic, MAX_ANY_TOPICS, MAX_TOPICS}; use sp_core::Bytes; use std::collections::HashSet; @@ -86,6 +86,9 @@ impl TryInto for TopicFilter { TopicFilter::Any => Ok(CheckedTopicFilter::Any), TopicFilter::MatchAll(topics) => { let mut parsed_topics = HashSet::with_capacity(topics.len()); + if topics.len() > MAX_TOPICS { + return Err(Error::Decode("Too many topics in MatchAll filter".into())); + } for topic in topics { if topic.0.len() != 32 { return Err(Error::Decode("Invalid topic format".into())); From 4cd16931d596993de9e2c0b5bcde08cd89a73b6a Mon Sep 17 00:00:00 2001 From: Andrei Eres Date: Wed, 21 Jan 2026 14:57:32 +0100 Subject: [PATCH 59/81] Address clippy --- .../zombienet-sdk/tests/zombie_ci/statement_store_bench.rs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/cumulus/zombienet/zombienet-sdk/tests/zombie_ci/statement_store_bench.rs b/cumulus/zombienet/zombienet-sdk/tests/zombie_ci/statement_store_bench.rs index fc3d33d4ed382..77a6159eb8137 100644 --- a/cumulus/zombienet/zombienet-sdk/tests/zombie_ci/statement_store_bench.rs +++ b/cumulus/zombienet/zombienet-sdk/tests/zombie_ci/statement_store_bench.rs @@ -830,7 +830,7 @@ fn channel_message(sender: &sr25519::Public, receiver: &sr25519::Public) -> Chan } fn get_keypair(idx: u32) -> sr25519::Pair { - sr25519::Pair::from_string(&format!("//StatementBench//{}", idx), None).expect("Valid seed") + sr25519::Pair::from_string(&format!("//StatementBench//{idx}"), None).expect("Valid seed") } struct LatencyBenchConfig { @@ -958,7 +958,7 @@ async fn statement_store_latency_bench() -> Result<(), anyhow::Error> { let mut statement = Statement::new(); let topic_str = - format!("{}-{}-{}-{}", test_run_id, client_id, round, msg_idx); + format!("{test_run_id}-{client_id}-{round}-{msg_idx}"); let topic = blake2_256(topic_str.as_bytes()); let channel = blake2_256(msg_idx.to_le_bytes().as_ref()); @@ -1006,7 +1006,7 @@ async fn statement_store_latency_bench() -> Result<(), anyhow::Error> { for msg_idx in 0..config.messages_per_client() as u32 { // Use same test run ID for topic lookup let topic_str = - format!("{}-{}-{}-{}", test_run_id, neighbour_id, round, msg_idx); + format!("{test_run_id}-{neighbour_id}-{round}-{msg_idx}"); let topic = blake2_256(topic_str.as_bytes()); for retry in 0..config.max_retries { From cf4184a6a3206888baed999eec93eead6854fd76 Mon Sep 17 00:00:00 2001 From: Alexandru Gheorghe Date: Wed, 21 Jan 2026 16:55:36 +0200 Subject: [PATCH 60/81] fix test Signed-off-by: Alexandru Gheorghe --- substrate/client/network/statement/src/lib.rs | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/substrate/client/network/statement/src/lib.rs b/substrate/client/network/statement/src/lib.rs index cb7b9a7b89120..32f7613c79a50 100644 --- a/substrate/client/network/statement/src/lib.rs +++ b/substrate/client/network/statement/src/lib.rs @@ -1664,13 +1664,15 @@ mod tests { // max_size = MAX_STATEMENT_NOTIFICATION_SIZE - Compact::::max_encoded_len() // // Statement encoding (encodes as Vec): - // - Compact for number of fields (1 byte for value 1) + // - Compact for number of fields (1 byte for value 2: expiry + data) + // - Field::Expiry discriminant (1 byte, value 2) + // - u64 expiry value (8 bytes) // - Field::Data discriminant (1 byte, value 8) // - Compact for the data length (2 bytes for small data) - // So per-statement overhead = 1 + 1 + 2 = 4 bytes + // So per-statement overhead = 1 + 1 + 8 + 1 + 2 = 13 bytes let max_size = MAX_STATEMENT_NOTIFICATION_SIZE as usize - Compact::::max_encoded_len(); let num_statements: usize = 100; - let per_statement_overhead = 1 + 1 + 2; // Vec length + discriminant + Compact data length + let per_statement_overhead = 1 + 1 + 8 + 1 + 2; // Vec length + expiry field + data discriminant + Compact data length let total_overhead = per_statement_overhead * num_statements; let total_data_size = max_size - total_overhead; let per_statement_data_size = total_data_size / num_statements; From 6149fa4cb12bcc313934a0ed242412ae1a6bab48 Mon Sep 17 00:00:00 2001 From: Andrei Eres Date: Wed, 21 Jan 2026 16:41:00 +0100 Subject: [PATCH 61/81] Update cumulus/polkadot-omni-node/lib/src/cli.rs Co-authored-by: Alexandru Gheorghe <49718502+alexggh@users.noreply.github.com> --- cumulus/polkadot-omni-node/lib/src/cli.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cumulus/polkadot-omni-node/lib/src/cli.rs b/cumulus/polkadot-omni-node/lib/src/cli.rs index 28a84fd8c93d8..0b4eaab6142a2 100644 --- a/cumulus/polkadot-omni-node/lib/src/cli.rs +++ b/cumulus/polkadot-omni-node/lib/src/cli.rs @@ -218,7 +218,7 @@ pub struct Cli { /// Enable the statement store. /// - /// User limits for statements should be provided by the runtime. + /// The statement store reads the storage of the chain to determine if users are allowed to store statements or not. #[arg(long)] pub enable_statement_store: bool, From ba753fe9b645ca6bc7a62f8b04114c398c6496fb Mon Sep 17 00:00:00 2001 From: Andrei Eres Date: Thu, 22 Jan 2026 09:35:07 +0100 Subject: [PATCH 62/81] Address review comments --- substrate/client/statement-store/src/lib.rs | 52 +++++++++---------- .../primitives/statement-store/src/lib.rs | 6 +-- 2 files changed, 29 insertions(+), 29 deletions(-) diff --git a/substrate/client/statement-store/src/lib.rs b/substrate/client/statement-store/src/lib.rs index aecc410fa7369..06a838df9c322 100644 --- a/substrate/client/statement-store/src/lib.rs +++ b/substrate/client/statement-store/src/lib.rs @@ -971,32 +971,6 @@ impl StatementStore for Store { return SubmitResult::Invalid(InvalidReason::NoProof); }; - let validation = match (self.read_allowance_fn)( - &account_id, - statement.proof().and_then(|p| match p { - Proof::OnChain { block_hash, .. } => Some(*block_hash), - _ => None, - }), - ) { - Ok(Some(allowance)) => allowance, - Ok(None) => { - log::debug!( - target: LOG_TARGET, - "Account {} has no statement allowance set", - HexDisplay::from(&account_id), - ); - return SubmitResult::Rejected(RejectionReason::NoAllowance); - }, - Err(e) => { - log::debug!( - target: LOG_TARGET, - "Reading statement allowance for account {} failed", - HexDisplay::from(&account_id), - ); - return SubmitResult::InternalError(e) - }, - }; - match statement.verify_signature() { SignatureVerificationResult::Valid(_) => {}, SignatureVerificationResult::Invalid => { @@ -1027,6 +1001,32 @@ impl StatementStore for Store { }, }; + let validation = match (self.read_allowance_fn)( + &account_id, + statement.proof().and_then(|p| match p { + Proof::OnChain { block_hash, .. } => Some(*block_hash), + _ => None, + }), + ) { + Ok(Some(allowance)) => allowance, + Ok(None) => { + log::debug!( + target: LOG_TARGET, + "Account {} has no statement allowance set", + HexDisplay::from(&account_id), + ); + return SubmitResult::Rejected(RejectionReason::NoAllowance); + }, + Err(e) => { + log::debug!( + target: LOG_TARGET, + "Reading statement allowance for account {} failed", + HexDisplay::from(&account_id), + ); + return SubmitResult::InternalError(e) + }, + }; + let current_time = self.timestamp(); let mut commit = Vec::new(); { diff --git a/substrate/primitives/statement-store/src/lib.rs b/substrate/primitives/statement-store/src/lib.rs index 6ef97132ed77a..3d43caa4b4c79 100644 --- a/substrate/primitives/statement-store/src/lib.rs +++ b/substrate/primitives/statement-store/src/lib.rs @@ -67,13 +67,13 @@ pub const STATEMENT_ALLOWANCE_PREFIX: &[u8] = b":statement-allowance:"; /// Constructs a per-account statement allowance storage key. /// /// # Arguments -/// * `account_id` - 32-byte account identifier +/// * `account_id` - Account identifier as byte slice /// /// # Returns /// Storage key: `":statement-allowance:" ++ account_id` -pub fn statement_allowance_key(account_id: &[u8; 32]) -> Vec { +pub fn statement_allowance_key(account_id: impl AsRef<[u8]>) -> Vec { let mut key = STATEMENT_ALLOWANCE_PREFIX.to_vec(); - key.extend_from_slice(account_id); + key.extend_from_slice(account_id.as_ref()); key } From d3fe6174ecaf23fc0158f4e1ad22d961abf4e44c Mon Sep 17 00:00:00 2001 From: Andrei Eres Date: Thu, 22 Jan 2026 10:01:14 +0100 Subject: [PATCH 63/81] Fix fmt --- cumulus/polkadot-omni-node/lib/src/cli.rs | 3 ++- .../zombienet-sdk/tests/zombie_ci/statement_store_bench.rs | 6 ++---- 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/cumulus/polkadot-omni-node/lib/src/cli.rs b/cumulus/polkadot-omni-node/lib/src/cli.rs index 0b4eaab6142a2..5d197ba9f63f7 100644 --- a/cumulus/polkadot-omni-node/lib/src/cli.rs +++ b/cumulus/polkadot-omni-node/lib/src/cli.rs @@ -218,7 +218,8 @@ pub struct Cli { /// Enable the statement store. /// - /// The statement store reads the storage of the chain to determine if users are allowed to store statements or not. + /// The statement store reads the storage of the chain to determine if users are allowed to + /// store statements or not. #[arg(long)] pub enable_statement_store: bool, diff --git a/cumulus/zombienet/zombienet-sdk/tests/zombie_ci/statement_store_bench.rs b/cumulus/zombienet/zombienet-sdk/tests/zombie_ci/statement_store_bench.rs index 77a6159eb8137..34d643678dd93 100644 --- a/cumulus/zombienet/zombienet-sdk/tests/zombie_ci/statement_store_bench.rs +++ b/cumulus/zombienet/zombienet-sdk/tests/zombie_ci/statement_store_bench.rs @@ -957,8 +957,7 @@ async fn statement_store_latency_bench() -> Result<(), anyhow::Error> { for _ in 0..count { let mut statement = Statement::new(); - let topic_str = - format!("{test_run_id}-{client_id}-{round}-{msg_idx}"); + let topic_str = format!("{test_run_id}-{client_id}-{round}-{msg_idx}"); let topic = blake2_256(topic_str.as_bytes()); let channel = blake2_256(msg_idx.to_le_bytes().as_ref()); @@ -1005,8 +1004,7 @@ async fn statement_store_latency_bench() -> Result<(), anyhow::Error> { for msg_idx in 0..config.messages_per_client() as u32 { // Use same test run ID for topic lookup - let topic_str = - format!("{test_run_id}-{neighbour_id}-{round}-{msg_idx}"); + let topic_str = format!("{test_run_id}-{neighbour_id}-{round}-{msg_idx}"); let topic = blake2_256(topic_str.as_bytes()); for retry in 0..config.max_retries { From 2f64f9e7f78b54b885949bf4eb9a60b552811ce3 Mon Sep 17 00:00:00 2001 From: Andrei Eres Date: Thu, 22 Jan 2026 10:46:49 +0100 Subject: [PATCH 64/81] Address clippy --- .../zombienet-sdk/tests/zombie_ci/statement_store_bench.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cumulus/zombienet/zombienet-sdk/tests/zombie_ci/statement_store_bench.rs b/cumulus/zombienet/zombienet-sdk/tests/zombie_ci/statement_store_bench.rs index 34d643678dd93..4692fb7631bf1 100644 --- a/cumulus/zombienet/zombienet-sdk/tests/zombie_ci/statement_store_bench.rs +++ b/cumulus/zombienet/zombienet-sdk/tests/zombie_ci/statement_store_bench.rs @@ -344,7 +344,7 @@ fn create_chain_spec_with_allowances( let keypair = get_keypair(idx); let account_id = keypair.public(); - let storage_key = statement_allowance_key(&account_id.0); + let storage_key = statement_allowance_key(account_id.0); let storage_key_hex = format!("0x{}", HexDisplay::from(&storage_key)); genesis.insert(storage_key_hex, serde_json::Value::String(allowance_hex.clone())); From 8b5fe0edf3ea37f567ced7b16ba68e37d178e5f8 Mon Sep 17 00:00:00 2001 From: Andrei Eres Date: Thu, 22 Jan 2026 13:39:56 +0100 Subject: [PATCH 65/81] Fix semver --- prdoc/pr_10787.prdoc | 12 +++--------- 1 file changed, 3 insertions(+), 9 deletions(-) diff --git a/prdoc/pr_10787.prdoc b/prdoc/pr_10787.prdoc index b6698bbc71f9c..c50d936064e14 100644 --- a/prdoc/pr_10787.prdoc +++ b/prdoc/pr_10787.prdoc @@ -8,14 +8,8 @@ doc: crates: - name: sc-statement-store - bump: minor -- name: pallet-statement - bump: minor -- name: sp-storage - bump: minor + bump: major - name: sp-statement-store - bump: minor -- name: people-westend-runtime - bump: minor + bump: major - name: polkadot-omni-node-lib - bump: minor + bump: patch From 24f974d926bebbf364dd163cec5187b0173d6f78 Mon Sep 17 00:00:00 2001 From: Alexandru Gheorghe Date: Tue, 27 Jan 2026 10:00:51 +0200 Subject: [PATCH 66/81] review feedback Signed-off-by: Alexandru Gheorghe --- substrate/client/statement-store/src/lib.rs | 21 ++-- .../statement-store/src/subscription.rs | 107 +++++++++++++----- .../primitives/statement-store/src/lib.rs | 8 +- 3 files changed, 88 insertions(+), 48 deletions(-) diff --git a/substrate/client/statement-store/src/lib.rs b/substrate/client/statement-store/src/lib.rs index 895653cdc5bf3..c924a4a9d8252 100644 --- a/substrate/client/statement-store/src/lib.rs +++ b/substrate/client/statement-store/src/lib.rs @@ -1298,17 +1298,16 @@ impl StatementStoreSubscriptionApi for Store { ) -> Result<(Vec>, async_channel::Sender, SubscriptionStatementsStream)> { // Keep the index read lock until after we have subscribed to avoid missing statements. let mut existing_statements = Vec::new(); - let (subscription_sender, subscription_stream) = { - let index = self.index.read(); - self.collect_statements_locked( - None, - &topic_filter, - &index, - &mut existing_statements, - |statement| Some(statement.encode()), - )?; - self.subscription_manager.subscribe(topic_filter) - }; + let index = self.index.read(); + self.collect_statements_locked( + None, + &topic_filter, + &index, + &mut existing_statements, + |statement| Some(statement.encode()), + )?; + let (subscription_sender, subscription_stream) = + self.subscription_manager.subscribe(topic_filter); Ok((existing_statements, subscription_sender, subscription_stream)) } } diff --git a/substrate/client/statement-store/src/subscription.rs b/substrate/client/statement-store/src/subscription.rs index f3ae546083f88..192fae7c9c4c5 100644 --- a/substrate/client/statement-store/src/subscription.rs +++ b/substrate/client/statement-store/src/subscription.rs @@ -45,7 +45,7 @@ use sp_core::{traits::SpawnNamed, Bytes, Encode}; pub use sp_statement_store::StatementStore; use sp_statement_store::{CheckedTopicFilter, Result, Statement, Topic, MAX_TOPICS}; use std::{ - collections::{HashMap, HashSet}, + collections::{hash_map::Entry, HashMap, HashSet}, sync::atomic::AtomicU64, }; @@ -98,7 +98,7 @@ impl SubscriptionsHandle { Some("statement-store"), Box::pin(async move { let mut subscriptions = SubscriptionsInfo::new(); - log::info!( + log::debug!( target: LOG_TARGET, "Started statement subscription matcher task" ); @@ -172,6 +172,13 @@ impl SubscriptionsHandle { // Each matcher task will have its own instance of this struct. struct SubscriptionsInfo { // Subscriptions organized by topic for MatchAll filters. + // + // Maps each topic to an array of HashMaps, where the array is indexed by + // `(number_of_topics_in_filter - 1)`. For example, a subscription requiring + // topics [A, B] (2 topics) will be stored at index 1 under both topic A and B. + // + // This structure allows efficient matching: when a statement arrives with N topics, + // we only need to check subscriptions that require exactly N or fewer topics. subscriptions_match_all_by_topic: HashMap; MAX_TOPICS]>, // Subscriptions organized by topic for MatchAny filters. @@ -211,20 +218,18 @@ impl SubscriptionsInfo { CheckedTopicFilter::Any => { self.subscriptions_any .insert(subscription_info.seq_id, subscription_info.clone()); - return; }, CheckedTopicFilter::MatchAll(topics) => for topic in topics { - self.subscriptions_match_all_by_topic - .entry(*topic) - .or_insert_with(Default::default)[topics.len() - 1] + self.subscriptions_match_all_by_topic.entry(*topic).or_default() + [topics.len() - 1] .insert(subscription_info.seq_id, subscription_info.clone()); }, CheckedTopicFilter::MatchAny(topics) => for topic in topics { self.subscriptions_match_any_by_topic .entry(*topic) - .or_insert_with(Default::default) + .or_default() .insert(subscription_info.seq_id, subscription_info.clone()); }, }; @@ -238,7 +243,7 @@ impl SubscriptionsInfo { needs_unsubscribing: &mut HashSet, ) { if let Err(err) = subscription.tx.try_send(bytes_to_send) { - log::warn!( + log::debug!( target: LOG_TARGET, "Failed to send statement to subscriber {:?}: {:?} unsubscribing it", subscription.seq_id, err ); @@ -292,18 +297,18 @@ impl SubscriptionsInfo { // Check all combinations of topics in the statement to find matching subscriptions. // This works well because the maximum allowed topics is small (MAX_TOPICS = 4). for num_topics_to_check in 1..=num_topics { - for combo in statement.topics().iter().combinations(num_topics_to_check) { + for topics_combination in statement.topics().iter().combinations(num_topics_to_check) { // Find the topic with the fewest subscriptions to minimize the number of checks. - let Some(Some(topic_with_fewest)) = combo + let Some(Some(topic_with_fewest)) = topics_combination .iter() .map(|topic| self.subscriptions_match_all_by_topic.get(*topic)) .min_by_key(|subscriptions| { - subscriptions.map_or(0, |subscryptions_by_length| { - subscryptions_by_length[num_topics_to_check - 1].len() + subscriptions.map_or(0, |subscriptions_by_length| { + subscriptions_by_length[num_topics_to_check - 1].len() }) }) else { - return; + continue; }; for subscription in topic_with_fewest[num_topics_to_check - 1] @@ -331,11 +336,7 @@ impl SubscriptionsInfo { let bytes_to_send: Bytes = statement.encode().into(); for subscription in self.subscriptions_any.values() { - let _ = self.notify_subscriber( - subscription, - bytes_to_send.clone(), - &mut needs_unsubscribing, - ); + self.notify_subscriber(subscription, bytes_to_send.clone(), &mut needs_unsubscribing); } // Unsubscribe any subscriptions that failed to receive messages, to give them a chance to @@ -347,9 +348,8 @@ impl SubscriptionsInfo { // Unsubscribe a subscription by its ID. fn unsubscribe(&mut self, id: SeqID) { - let entry = match self.by_sub_id.remove(&id) { - Some(e) => e, - None => return, + let Some(entry) = self.by_sub_id.remove(&id) else { + return; }; let topics = match &entry { @@ -363,22 +363,24 @@ impl SubscriptionsInfo { // Remove subscription from relevant maps. for topic in topics { - // Check both MatchAny and MatchAll maps. - if let Some(subscriptions) = self.subscriptions_match_any_by_topic.get_mut(topic) { - subscriptions.remove(&id); - if subscriptions.is_empty() { - self.subscriptions_match_any_by_topic.remove(topic); + // Check MatchAny map. + if let Entry::Occupied(mut entry) = self.subscriptions_match_any_by_topic.entry(*topic) + { + entry.get_mut().remove(&id); + if entry.get().is_empty() { + entry.remove(); } } - if let Some(subscriptions) = self.subscriptions_match_all_by_topic.get_mut(topic) { - for subscriptions in subscriptions.iter_mut() { + // Check MatchAll map. + if let Entry::Occupied(mut entry) = self.subscriptions_match_all_by_topic.entry(*topic) + { + for subscriptions in entry.get_mut().iter_mut() { if subscriptions.remove(&id).is_some() { break; } } - - if subscriptions.iter().all(|s| s.is_empty()) { - self.subscriptions_match_all_by_topic.remove(topic); + if entry.get().iter().all(|s| s.is_empty()) { + entry.remove(); } } } @@ -938,6 +940,49 @@ mod tests { assert!(rx1.try_recv().is_err()); } + #[test] + fn test_match_all_with_unsubscribed_topic_first_in_statement() { + // This test exposes a bug where `return` is used instead of `continue` in + // `notify_match_all_subscribers_best`. When a statement has a topic that has no + // subscriptions (not in the map), the function returns early instead of checking + // subsequent topic combinations. + let mut subscriptions = SubscriptionsInfo::new(); + + let (tx1, rx1) = async_channel::bounded::(10); + // topic1 will have NO subscriptions + let topic1 = [1u8; 32]; + // topic2 WILL have a subscription + let topic2 = [2u8; 32]; + + // Subscribe only to topic2 with MatchAll filter. + let sub_info1 = SubscriptionInfo { + topic_filter: CheckedTopicFilter::MatchAll(vec![topic2].iter().cloned().collect()), + seq_id: SeqID::from(1), + tx: tx1, + }; + subscriptions.subscribe(sub_info1); + + // Create a statement with BOTH topics. topic1 comes first (lower bytes). + // When iterating combinations(1), [topic1] is checked before [topic2]. + // Since topic1 has no subscriptions, the buggy `return` exits early, + // preventing the [topic2] combination from being checked. + let mut statement = signed_statement(1); + statement.set_topic(0, Topic::from(topic1)); + statement.set_topic(1, Topic::from(topic2)); + + subscriptions.notify_match_all_subscribers_best(&statement); + + // With the bug: rx1.try_recv() fails because the function returned early. + // With the fix: rx1.try_recv() succeeds because [topic2] combination is checked. + let received = rx1.try_recv().expect( + "Should receive statement - if this fails, the `return` bug in \ + notify_match_all_subscribers_best is present (should be `continue`)", + ); + let decoded_statement: Statement = + Statement::decode(&mut &received.0[..]).expect("Should decode statement"); + assert_eq!(decoded_statement, statement); + } + #[tokio::test] async fn test_handle_with_match_any_filter() { let subscriptions_handle = diff --git a/substrate/primitives/statement-store/src/lib.rs b/substrate/primitives/statement-store/src/lib.rs index 8104aa25b5d71..c976f64d7c18d 100644 --- a/substrate/primitives/statement-store/src/lib.rs +++ b/substrate/primitives/statement-store/src/lib.rs @@ -152,7 +152,7 @@ pub enum Field { AuthenticityProof(Proof) = 0, /// An identifier for the key that `Data` field may be decrypted with. DecryptionKey(DecryptionKey) = 1, - /// Expiry of the statement. + /// Expiry of the statement. See [`Statement::expiry`] for details on the format. Expiry(u64) = 2, /// Account channel to use. Only one message per `(account, channel)` pair is allowed. Channel(Channel) = 3, @@ -509,11 +509,7 @@ impl Statement { self.expiry = expiry; } - /// Set statement expiry from its parts. - /// The expiration timestamp in seconds is stored in the most significant 32 bits of the expiry - /// field. - /// The lower 32 bits represents an arbitrary sequence number used to order statements with the - /// same expiration time. + /// Set statement expiry from its parts. See [`Statement::expiry`] for details on the format. pub fn set_expiry_from_parts(&mut self, expiration_timestamp_secs: u32, sequence_number: u32) { self.expiry = (expiration_timestamp_secs as u64) << 32 | sequence_number as u64; } From 6da688bd0888e4526c7adffe5942a780ec48c922 Mon Sep 17 00:00:00 2001 From: Andrei Eres Date: Wed, 28 Jan 2026 11:31:34 +0100 Subject: [PATCH 67/81] Remove runtime validation --- .../runtimes/people/people-westend/src/lib.rs | 16 -- .../polkadot-omni-node/lib/src/common/mod.rs | 3 - .../lib/src/fake_runtime_api/utils.rs | 9 - substrate/bin/node/runtime/src/lib.rs | 9 - substrate/frame/statement/src/lib.rs | 90 +--------- substrate/frame/statement/src/tests.rs | 159 ------------------ .../statement-store/src/runtime_api.rs | 24 --- substrate/test-utils/runtime/src/lib.rs | 17 -- 8 files changed, 4 insertions(+), 323 deletions(-) delete mode 100644 substrate/frame/statement/src/tests.rs diff --git a/cumulus/parachains/runtimes/people/people-westend/src/lib.rs b/cumulus/parachains/runtimes/people/people-westend/src/lib.rs index 368bf83a3bd6b..0fd066efd654a 100644 --- a/cumulus/parachains/runtimes/people/people-westend/src/lib.rs +++ b/cumulus/parachains/runtimes/people/people-westend/src/lib.rs @@ -65,10 +65,6 @@ use sp_runtime::{ ApplyExtrinsicResult, }; pub use sp_runtime::{MultiAddress, Perbill, Permill}; -use sp_statement_store::{ - runtime_api::{InvalidStatement, StatementSource, ValidStatement}, - SignatureVerificationResult, Statement, -}; #[cfg(feature = "std")] use sp_version::NativeVersion; use sp_version::RuntimeVersion; @@ -1146,18 +1142,6 @@ impl_runtime_apis! { 1 } } - - impl sp_statement_store::runtime_api::ValidateStatement for Runtime { - fn validate_statement( - _source: StatementSource, - statement: Statement, - ) -> Result { - match statement.verify_signature() { - SignatureVerificationResult::Invalid => Err(InvalidStatement::BadProof), - _ => Ok(ValidStatement { max_count: 100_000, max_size: 1_000_000 }), - } - } - } } cumulus_pallet_parachain_system::register_validate_block! { diff --git a/cumulus/polkadot-omni-node/lib/src/common/mod.rs b/cumulus/polkadot-omni-node/lib/src/common/mod.rs index 68de6127df6c4..e62100a5de915 100644 --- a/cumulus/polkadot-omni-node/lib/src/common/mod.rs +++ b/cumulus/polkadot-omni-node/lib/src/common/mod.rs @@ -40,7 +40,6 @@ use sp_runtime::{ OpaqueExtrinsic, }; use sp_session::SessionKeys; -use sp_statement_store::runtime_api::ValidateStatement; use sp_transaction_pool::runtime_api::TaggedTransactionQueue; use sp_transaction_storage_proof::runtime_api::TransactionStorageApi; use std::{fmt::Debug, path::PathBuf, str::FromStr}; @@ -73,7 +72,6 @@ pub trait NodeRuntimeApi: + TaggedTransactionQueue + OffchainWorkerApi + CollectCollationInfo - + ValidateStatement + GetParachainInfo + TransactionStorageApi + RelayParentOffsetApi @@ -90,7 +88,6 @@ impl NodeRuntimeApi for T where + OffchainWorkerApi + RelayParentOffsetApi + CollectCollationInfo - + ValidateStatement + GetParachainInfo + TransactionStorageApi { diff --git a/cumulus/polkadot-omni-node/lib/src/fake_runtime_api/utils.rs b/cumulus/polkadot-omni-node/lib/src/fake_runtime_api/utils.rs index 56eb3d2ae7602..e97af794c38e6 100644 --- a/cumulus/polkadot-omni-node/lib/src/fake_runtime_api/utils.rs +++ b/cumulus/polkadot-omni-node/lib/src/fake_runtime_api/utils.rs @@ -234,15 +234,6 @@ macro_rules! impl_node_runtime_apis { } } - impl sp_statement_store::runtime_api::ValidateStatement<$block> for $runtime { - fn validate_statement( - _source: sp_statement_store::runtime_api::StatementSource, - _statement: sp_statement_store::Statement, - ) -> Result { - unimplemented!() - } - } - impl cumulus_primitives_core::TargetBlockRate<$block> for $runtime { fn target_block_rate() -> u32 { unimplemented!() diff --git a/substrate/bin/node/runtime/src/lib.rs b/substrate/bin/node/runtime/src/lib.rs index 0f145a1df759f..bb892dc157ec1 100644 --- a/substrate/bin/node/runtime/src/lib.rs +++ b/substrate/bin/node/runtime/src/lib.rs @@ -3255,15 +3255,6 @@ pallet_revive::impl_runtime_apis_plus_revive_traits!( } } - impl sp_statement_store::runtime_api::ValidateStatement for Runtime { - fn validate_statement( - source: sp_statement_store::runtime_api::StatementSource, - statement: sp_statement_store::Statement, - ) -> Result { - Statement::validate_statement(source, statement) - } - } - impl sp_offchain::OffchainWorkerApi for Runtime { fn offchain_worker(header: &::Header) { Executive::offchain_worker(header) diff --git a/substrate/frame/statement/src/lib.rs b/substrate/frame/statement/src/lib.rs index 24f00c4d750ba..15818a7c54dbe 100644 --- a/substrate/frame/statement/src/lib.rs +++ b/substrate/frame/statement/src/lib.rs @@ -21,35 +21,21 @@ //! //! ## Overview //! -//! The Statement pallet provides means to create and validate statements for the statement store. +//! The Statement pallet provides means to create statements for the statement store. //! -//! For each statement validation function calculates the following three values based on the -//! statement author balance: -//! `max_count`: Maximum number of statements allowed for the author (signer) of this statement. -//! `max_size`: Maximum total size of statements allowed for the author (signer) of this statement. -//! -//! This pallet also contains an offchain worker that turns on-chain statement events into +//! This pallet contains an offchain worker that turns on-chain statement events into //! statements. These statements are placed in the store and propagated over the network. #![cfg_attr(not(feature = "std"), no_std)] -use frame_support::{ - pallet_prelude::*, - sp_runtime::{traits::CheckedDiv, SaturatedConversion}, - traits::fungible::Inspect, -}; +use frame_support::{pallet_prelude::*, traits::fungible::Inspect}; use frame_system::pallet_prelude::*; -use sp_statement_store::{ - runtime_api::{InvalidStatement, StatementSource, ValidStatement}, - Proof, SignatureVerificationResult, Statement, -}; +use sp_statement_store::{Proof, Statement}; #[cfg(test)] // We do not declare all features used by `construct_runtime` #[allow(unexpected_cfgs)] mod mock; -#[cfg(test)] -mod tests; pub use pallet::*; @@ -131,74 +117,6 @@ where ::RuntimeEvent: TryInto>, sp_statement_store::BlockHash: From<::Hash>, { - /// Validate a statement against current state. This is supposed to be called by the statement - /// store on the host side. - pub fn validate_statement( - _source: StatementSource, - mut statement: Statement, - ) -> Result { - sp_io::init_tracing(); - log::debug!(target: LOG_TARGET, "Validating statement {:?}", statement); - let account: T::AccountId = match statement.proof() { - Some(Proof::OnChain { who, block_hash, event_index }) => { - if frame_system::Pallet::::parent_hash().as_ref() != block_hash.as_slice() { - log::debug!(target: LOG_TARGET, "Bad block hash."); - return Err(InvalidStatement::BadProof) - } - let account: T::AccountId = (*who).into(); - match frame_system::Pallet::::event_no_consensus(*event_index as usize) { - Some(e) => { - statement.remove_proof(); - if let Ok(Event::NewStatement { account: a, statement: s }) = e.try_into() { - if a != account || s != statement { - log::debug!(target: LOG_TARGET, "Event data mismatch"); - return Err(InvalidStatement::BadProof) - } - } else { - log::debug!(target: LOG_TARGET, "Event type mismatch"); - return Err(InvalidStatement::BadProof) - } - }, - _ => { - log::debug!(target: LOG_TARGET, "Bad event index"); - return Err(InvalidStatement::BadProof) - }, - } - account - }, - _ => match statement.verify_signature() { - SignatureVerificationResult::Valid(account) => account.into(), - SignatureVerificationResult::Invalid => { - log::debug!(target: LOG_TARGET, "Bad statement signature."); - return Err(InvalidStatement::BadProof) - }, - SignatureVerificationResult::NoSignature => { - log::debug!(target: LOG_TARGET, "Missing statement signature."); - return Err(InvalidStatement::NoProof) - }, - }, - }; - let statement_cost = T::StatementCost::get(); - let byte_cost = T::ByteCost::get(); - let balance = >>::balance(&account); - let min_allowed_statements = T::MinAllowedStatements::get(); - let max_allowed_statements = T::MaxAllowedStatements::get(); - let min_allowed_bytes = T::MinAllowedBytes::get(); - let max_allowed_bytes = T::MaxAllowedBytes::get(); - let max_count = balance - .checked_div(&statement_cost) - .unwrap_or_default() - .saturated_into::() - .clamp(min_allowed_statements, max_allowed_statements); - let max_size = balance - .checked_div(&byte_cost) - .unwrap_or_default() - .saturated_into::() - .clamp(min_allowed_bytes, max_allowed_bytes); - - Ok(ValidStatement { max_count, max_size }) - } - /// Submit a statement event. The statement will be picked up by the offchain worker and /// broadcast to the network. pub fn submit_statement(account: T::AccountId, statement: Statement) { diff --git a/substrate/frame/statement/src/tests.rs b/substrate/frame/statement/src/tests.rs deleted file mode 100644 index 51103caca60fa..0000000000000 --- a/substrate/frame/statement/src/tests.rs +++ /dev/null @@ -1,159 +0,0 @@ -// This file is part of Substrate. - -// Copyright (C) Parity Technologies (UK) Ltd. -// SPDX-License-Identifier: Apache-2.0 - -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -//! # Statement runtime support tests. - -#![cfg(test)] - -use super::*; -use crate::mock::*; -use sp_core::Pair; -use sp_runtime::AccountId32; -use sp_statement_store::{ - runtime_api::{InvalidStatement, StatementSource, ValidStatement}, - Proof, Statement, -}; - -#[test] -fn sign_and_validate_no_balance() { - new_test_ext().execute_with(|| { - let pair = sp_core::sr25519::Pair::from_string("//Bob", None).unwrap(); - let mut statement = Statement::new(); - statement.sign_sr25519_private(&pair); - let result = Pallet::::validate_statement(StatementSource::Chain, statement); - assert_eq!( - Ok(ValidStatement { max_count: MIN_ALLOWED_STATEMENTS, max_size: MIN_ALLOWED_BYTES }), - result - ); - - let pair = sp_core::ed25519::Pair::from_string("//Bob", None).unwrap(); - let mut statement = Statement::new(); - statement.sign_ed25519_private(&pair); - let result = Pallet::::validate_statement(StatementSource::Chain, statement); - assert_eq!( - Ok(ValidStatement { max_count: MIN_ALLOWED_STATEMENTS, max_size: MIN_ALLOWED_BYTES }), - result - ); - - let pair = sp_core::ecdsa::Pair::from_string("//Bob", None).unwrap(); - let mut statement = Statement::new(); - statement.sign_ecdsa_private(&pair); - let result = Pallet::::validate_statement(StatementSource::Chain, statement); - assert_eq!( - Ok(ValidStatement { max_count: MIN_ALLOWED_STATEMENTS, max_size: MIN_ALLOWED_BYTES }), - result - ); - }); -} - -#[test] -fn validate_with_balance() { - new_test_ext().execute_with(|| { - let pair = sp_core::sr25519::Pair::from_string("//Alice", None).unwrap(); - let mut statement = Statement::new(); - statement.sign_sr25519_private(&pair); - let result = Pallet::::validate_statement(StatementSource::Chain, statement); - assert_eq!(Ok(ValidStatement { max_count: 6, max_size: 3000 }), result); - - let pair = sp_core::sr25519::Pair::from_string("//Charlie", None).unwrap(); - let mut statement = Statement::new(); - statement.sign_sr25519_private(&pair); - let result = Pallet::::validate_statement(StatementSource::Chain, statement); - assert_eq!( - Ok(ValidStatement { max_count: MAX_ALLOWED_STATEMENTS, max_size: MAX_ALLOWED_BYTES }), - result - ); - }); -} - -#[test] -fn validate_no_proof_fails() { - new_test_ext().execute_with(|| { - let statement = Statement::new(); - let result = Pallet::::validate_statement(StatementSource::Chain, statement); - assert_eq!(Err(InvalidStatement::NoProof), result); - }); -} - -#[test] -fn validate_bad_signature_fails() { - new_test_ext().execute_with(|| { - let statement = Statement::new_with_proof(Proof::Sr25519 { - signature: [0u8; 64], - signer: Default::default(), - }); - let result = Pallet::::validate_statement(StatementSource::Chain, statement); - assert_eq!(Err(InvalidStatement::BadProof), result); - }); -} - -#[test] -fn validate_event() { - new_test_ext().execute_with(|| { - let parent_hash = sp_core::H256::random(); - System::reset_events(); - System::initialize(&1, &parent_hash, &Default::default()); - let mut statement = Statement::new(); - let pair = sp_core::sr25519::Pair::from_string("//Alice", None).unwrap(); - let account: AccountId32 = pair.public().into(); - Pallet::::submit_statement(account.clone(), statement.clone()); - statement.set_proof(Proof::OnChain { - who: account.clone().into(), - event_index: 0, - block_hash: parent_hash.into(), - }); - let result = Pallet::::validate_statement(StatementSource::Chain, statement.clone()); - assert_eq!(Ok(ValidStatement { max_count: 6, max_size: 3000 }), result); - - // Use wrong event index - statement.set_proof(Proof::OnChain { - who: account.clone().into(), - event_index: 1, - block_hash: parent_hash.into(), - }); - let result = Pallet::::validate_statement(StatementSource::Chain, statement.clone()); - assert_eq!(Err(InvalidStatement::BadProof), result); - - // Use wrong block hash - statement.set_proof(Proof::OnChain { - who: account.clone().into(), - event_index: 0, - block_hash: sp_core::H256::random().into(), - }); - let result = Pallet::::validate_statement(StatementSource::Chain, statement.clone()); - assert_eq!(Err(InvalidStatement::BadProof), result); - }); -} - -#[test] -fn validate_no_event_fails() { - new_test_ext().execute_with(|| { - let parent_hash = sp_core::H256::random(); - System::reset_events(); - System::initialize(&1, &parent_hash, &Default::default()); - let mut statement = Statement::new(); - let pair = sp_core::sr25519::Pair::from_string("//Alice", None).unwrap(); - let account: AccountId32 = pair.public().into(); - statement.set_proof(Proof::OnChain { - who: account.into(), - event_index: 0, - block_hash: parent_hash.into(), - }); - let result = Pallet::::validate_statement(StatementSource::Chain, statement); - assert_eq!(Err(InvalidStatement::BadProof), result); - }); -} diff --git a/substrate/primitives/statement-store/src/runtime_api.rs b/substrate/primitives/statement-store/src/runtime_api.rs index 7488a5a0e8b5a..73e561424f79e 100644 --- a/substrate/primitives/statement-store/src/runtime_api.rs +++ b/substrate/primitives/statement-store/src/runtime_api.rs @@ -33,19 +33,6 @@ use Debug; #[cfg(feature = "std")] use sp_externalities::ExternalitiesExt; -pub use crate::StatementAllowance as ValidStatement; - -/// An reason for an invalid statement. -#[derive(Clone, PartialEq, Eq, Encode, Decode, Copy, Debug, TypeInfo)] -pub enum InvalidStatement { - /// Failed proof validation. - BadProof, - /// Missing proof. - NoProof, - /// Validity could not be checked because of internal error. - InternalError, -} - /// The source of the statement. /// /// Depending on the source we might apply different validation schemes. @@ -70,17 +57,6 @@ impl StatementSource { } } -sp_api::decl_runtime_apis! { - /// Runtime API trait for statement validation. - pub trait ValidateStatement { - /// Validate the statement. - fn validate_statement( - source: StatementSource, - statement: Statement, - ) -> Result; - } -} - #[cfg(feature = "std")] sp_externalities::decl_extension! { /// The offchain database extension that will be registered at the Substrate externalities. diff --git a/substrate/test-utils/runtime/src/lib.rs b/substrate/test-utils/runtime/src/lib.rs index 308e4293c9139..172c626efc301 100644 --- a/substrate/test-utils/runtime/src/lib.rs +++ b/substrate/test-utils/runtime/src/lib.rs @@ -822,23 +822,6 @@ impl_runtime_apis! { vec![PresetId::from("foobar"), PresetId::from("staging")] } } - - impl sp_statement_store::runtime_api::ValidateStatement for Runtime { - fn validate_statement( - _source: sp_statement_store::runtime_api::StatementSource, - statement: sp_statement_store::Statement, - ) -> Result< - sp_statement_store::runtime_api::ValidStatement, - sp_statement_store::runtime_api::InvalidStatement, - > { - use sp_statement_store::runtime_api::{InvalidStatement, ValidStatement}; - - match statement.verify_signature() { - sp_statement_store::SignatureVerificationResult::Invalid => Err(InvalidStatement::BadProof), - _ => Ok(ValidStatement { max_count: 100_000, max_size: 1_000_000 }), - } - } - } } fn test_ed25519_crypto( From cfba83bc416e3c886562ae91f501a3fb9fcb852f Mon Sep 17 00:00:00 2001 From: Andrei Eres Date: Wed, 28 Jan 2026 12:13:02 +0100 Subject: [PATCH 68/81] Fix unused --- Cargo.lock | 1 - substrate/frame/statement/Cargo.toml | 5 -- substrate/frame/statement/src/lib.rs | 5 -- substrate/frame/statement/src/mock.rs | 89 --------------------------- 4 files changed, 100 deletions(-) delete mode 100644 substrate/frame/statement/src/mock.rs diff --git a/Cargo.lock b/Cargo.lock index d50e1b7b3b64d..ff8a5f46292a2 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -13924,7 +13924,6 @@ dependencies = [ "frame-support", "frame-system", "log", - "pallet-balances", "parity-scale-codec", "scale-info", "sp-api", diff --git a/substrate/frame/statement/Cargo.toml b/substrate/frame/statement/Cargo.toml index b1449fa244162..1ee5ce5536c2d 100644 --- a/substrate/frame/statement/Cargo.toml +++ b/substrate/frame/statement/Cargo.toml @@ -26,9 +26,6 @@ sp-io = { workspace = true } sp-runtime = { workspace = true } sp-statement-store = { workspace = true } -[dev-dependencies] -pallet-balances = { workspace = true, default-features = true } - [features] default = ["std"] std = [ @@ -36,7 +33,6 @@ std = [ "frame-support/std", "frame-system/std", "log/std", - "pallet-balances/std", "scale-info/std", "sp-api/std", "sp-core/std", @@ -47,6 +43,5 @@ std = [ try-runtime = [ "frame-support/try-runtime", "frame-system/try-runtime", - "pallet-balances/try-runtime", "sp-runtime/try-runtime", ] diff --git a/substrate/frame/statement/src/lib.rs b/substrate/frame/statement/src/lib.rs index 15818a7c54dbe..8209cacdefc2b 100644 --- a/substrate/frame/statement/src/lib.rs +++ b/substrate/frame/statement/src/lib.rs @@ -32,11 +32,6 @@ use frame_support::{pallet_prelude::*, traits::fungible::Inspect}; use frame_system::pallet_prelude::*; use sp_statement_store::{Proof, Statement}; -#[cfg(test)] -// We do not declare all features used by `construct_runtime` -#[allow(unexpected_cfgs)] -mod mock; - pub use pallet::*; const LOG_TARGET: &str = "runtime::statement"; diff --git a/substrate/frame/statement/src/mock.rs b/substrate/frame/statement/src/mock.rs deleted file mode 100644 index db9d19dbbab73..0000000000000 --- a/substrate/frame/statement/src/mock.rs +++ /dev/null @@ -1,89 +0,0 @@ -// This file is part of Substrate. - -// Copyright (C) Parity Technologies (UK) Ltd. -// SPDX-License-Identifier: Apache-2.0 - -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -//! # Statement pallet test environment. - -use super::*; - -use crate as pallet_statement; -use frame_support::{ - derive_impl, ord_parameter_types, - traits::{ConstU32, ConstU64}, -}; -use sp_core::Pair; -use sp_runtime::{traits::IdentityLookup, AccountId32, BuildStorage}; - -type Block = frame_system::mocking::MockBlock; - -pub const MIN_ALLOWED_STATEMENTS: u32 = 4; -pub const MAX_ALLOWED_STATEMENTS: u32 = 10; -pub const MIN_ALLOWED_BYTES: u32 = 1024; -pub const MAX_ALLOWED_BYTES: u32 = 4096; - -frame_support::construct_runtime!( - pub enum Test - { - System: frame_system, - Balances: pallet_balances, - Statement: pallet_statement, - } -); - -#[derive_impl(frame_system::config_preludes::TestDefaultConfig)] -impl frame_system::Config for Test { - type AccountId = AccountId32; - type Lookup = IdentityLookup; - type Block = Block; - type AccountData = pallet_balances::AccountData; -} - -#[derive_impl(pallet_balances::config_preludes::TestDefaultConfig)] -impl pallet_balances::Config for Test { - type ExistentialDeposit = ConstU64<5>; - type AccountStore = System; -} - -ord_parameter_types! { - pub const One: u64 = 1; -} - -impl Config for Test { - type RuntimeEvent = RuntimeEvent; - type Currency = Balances; - type StatementCost = ConstU64<1000>; - type ByteCost = ConstU64<2>; - type MinAllowedStatements = ConstU32; - type MaxAllowedStatements = ConstU32; - type MinAllowedBytes = ConstU32; - type MaxAllowedBytes = ConstU32; -} - -pub fn new_test_ext() -> sp_io::TestExternalities { - let mut t = frame_system::GenesisConfig::::default().build_storage().unwrap(); - let balances = pallet_balances::GenesisConfig:: { - balances: vec![ - (sp_core::sr25519::Pair::from_string("//Alice", None).unwrap().public().into(), 6000), - ( - sp_core::sr25519::Pair::from_string("//Charlie", None).unwrap().public().into(), - 500000, - ), - ], - ..Default::default() - }; - balances.assimilate_storage(&mut t).unwrap(); - t.into() -} From 302bda2904177329520e64bc6bbd9bd508bbd6cb Mon Sep 17 00:00:00 2001 From: Andrei Eres Date: Wed, 28 Jan 2026 12:57:36 +0100 Subject: [PATCH 69/81] Fix semver --- prdoc/pr_10787.prdoc | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/prdoc/pr_10787.prdoc b/prdoc/pr_10787.prdoc index c50d936064e14..b37fbc5a477d9 100644 --- a/prdoc/pr_10787.prdoc +++ b/prdoc/pr_10787.prdoc @@ -13,3 +13,7 @@ crates: bump: major - name: polkadot-omni-node-lib bump: patch +- name: pallet-statement + bump: major +- name: people-westend-runtime + bump: major From 030eed3fe0af952a6c3db48991eee0b043e12570 Mon Sep 17 00:00:00 2001 From: Andrei Eres Date: Wed, 28 Jan 2026 13:30:26 +0100 Subject: [PATCH 70/81] Fix tests --- substrate/client/rpc-spec-v2/src/chain_head/tests.rs | 2 +- substrate/client/rpc/src/state/tests.rs | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/substrate/client/rpc-spec-v2/src/chain_head/tests.rs b/substrate/client/rpc-spec-v2/src/chain_head/tests.rs index ab46240076284..c610e3b525539 100644 --- a/substrate/client/rpc-spec-v2/src/chain_head/tests.rs +++ b/substrate/client/rpc-spec-v2/src/chain_head/tests.rs @@ -352,7 +352,7 @@ async fn follow_with_runtime() { let runtime_str = "{\"specName\":\"test\",\"implName\":\"parity-test\",\"authoringVersion\":1,\ \"specVersion\":2,\"implVersion\":2,\"apis\":[[\"0xdf6acb689907609b\",5],\ [\"0x37e397fc7c91f5e4\",2],[\"0xd2bc9897eed08f15\",3],[\"0x40fe3ad401f8959a\",6],\ - [\"0xbc9d89904f5b923f\",1],[\"0xbe9fb0c91a8046cf\",1],[\"0xc6e9a76309f39b09\",2],[\"0xdd718d5cc53262d4\",1],\ + [\"0xbc9d89904f5b923f\",1],[\"0xc6e9a76309f39b09\",2],[\"0xdd718d5cc53262d4\",1],\ [\"0xcbca25e39f142387\",2],[\"0xf78b278be53f454c\",2],[\"0xab3c0572291feb8b\",2],\ [\"0xed99c5acb25eedf5\",3],[\"0xfbc577b9d747efd6\",1]],\"transactionVersion\":1,\"systemVersion\":1}"; diff --git a/substrate/client/rpc/src/state/tests.rs b/substrate/client/rpc/src/state/tests.rs index ef9bbfb4f1b34..ce262ad1d7563 100644 --- a/substrate/client/rpc/src/state/tests.rs +++ b/substrate/client/rpc/src/state/tests.rs @@ -476,7 +476,7 @@ async fn should_return_runtime_version() { [\"0x37e397fc7c91f5e4\",2],[\"0xd2bc9897eed08f15\",3],[\"0x40fe3ad401f8959a\",6],\ [\"0xbc9d89904f5b923f\",1],[\"0xc6e9a76309f39b09\",2],[\"0xdd718d5cc53262d4\",1],\ [\"0xcbca25e39f142387\",2],[\"0xf78b278be53f454c\",2],[\"0xab3c0572291feb8b\",2],\ - [\"0xed99c5acb25eedf5\",3],[\"0xfbc577b9d747efd6\",1],[\"0xbe9fb0c91a8046cf\",1]],\"transactionVersion\":1,\"systemVersion\":1,\ + [\"0xed99c5acb25eedf5\",3],[\"0xfbc577b9d747efd6\",1]],\"transactionVersion\":1,\"systemVersion\":1,\ \"stateVersion\":1}"; let runtime_version = api.runtime_version(None.into()).unwrap(); From 6460de8bea20799e07c03420f9fb8105863bec35 Mon Sep 17 00:00:00 2001 From: Andrei Eres Date: Wed, 28 Jan 2026 15:51:35 +0100 Subject: [PATCH 71/81] fix prdoc --- prdoc/pr_10787.prdoc | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/prdoc/pr_10787.prdoc b/prdoc/pr_10787.prdoc index b37fbc5a477d9..4524c34844b0a 100644 --- a/prdoc/pr_10787.prdoc +++ b/prdoc/pr_10787.prdoc @@ -16,4 +16,8 @@ crates: - name: pallet-statement bump: major - name: people-westend-runtime - bump: major + bump: patch +- name: sc-rpc + bump: patch +- name: sc-rpc-spec-v2 + bump: patch From 65680e9d60f83a10087abc762a51847257baf75a Mon Sep 17 00:00:00 2001 From: Alexandru Gheorghe Date: Thu, 29 Jan 2026 09:53:30 +0200 Subject: [PATCH 72/81] add prdoc Signed-off-by: Alexandru Gheorghe --- prdoc/pr_10690.prdoc | 46 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 46 insertions(+) create mode 100644 prdoc/pr_10690.prdoc diff --git a/prdoc/pr_10690.prdoc b/prdoc/pr_10690.prdoc new file mode 100644 index 0000000000000..3351e63f9d129 --- /dev/null +++ b/prdoc/pr_10690.prdoc @@ -0,0 +1,46 @@ +# Schema: Polkadot SDK PRDoc Schema (prdoc) v1.0.0 +# See doc at https://raw.githubusercontent.com/paritytech/polkadot-sdk/master/prdoc/schema_user.json + +title: "statement-store: implement new rpc api" + +doc: +- audience: Node Dev + description: | + Implements the new simplified RPC API for the statement store as proposed in PR #10452. + The API surface has been reduced to two main functions: `submit` and `subscribe_statement`. + + **Submit changes:** + - Added support for the new `expiry` field where statements with an expiration timestamp + lower than the current time are rejected. + + **Subscribe changes:** + - Implemented a configurable worker pool that manages all subscriptions. + - New subscriptions are assigned to workers via a round-robin protocol. + - When a new statement is accepted by the statement-store, all workers are notified and + evaluate their assigned subscription filters, notifying each subscriber accordingly. + - Existing statements matching the filter are sent on subscription. + + **Additional improvements:** + - Added periodical scanning and removal of expired statements. + - Removed the old API methods (broadcast, posts, networkState, etc.) in favor of the + simplified submit/subscribe interface. + +crates: +- name: sp-statement-store + bump: major +- name: sc-statement-store + bump: major +- name: sc-rpc-api + bump: major +- name: sc-rpc + bump: major +- name: sc-network-statement + bump: patch +- name: sc-utils + bump: patch +- name: polkadot-omni-node-lib + bump: patch +- name: node-rpc + bump: patch +- name: staging-node-cli + bump: patch From 846a5acbef1aa372b6cf8789e78ba874634188ef Mon Sep 17 00:00:00 2001 From: Alexandru Gheorghe <49718502+alexggh@users.noreply.github.com> Date: Thu, 29 Jan 2026 15:20:05 +0200 Subject: [PATCH 73/81] Change bump level for sc-statement-store and sc-utils --- prdoc/pr_10690.prdoc | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/prdoc/pr_10690.prdoc b/prdoc/pr_10690.prdoc index 3351e63f9d129..084d38b408a04 100644 --- a/prdoc/pr_10690.prdoc +++ b/prdoc/pr_10690.prdoc @@ -29,7 +29,7 @@ crates: - name: sp-statement-store bump: major - name: sc-statement-store - bump: major + bump: minor - name: sc-rpc-api bump: major - name: sc-rpc @@ -37,7 +37,7 @@ crates: - name: sc-network-statement bump: patch - name: sc-utils - bump: patch + bump: minor - name: polkadot-omni-node-lib bump: patch - name: node-rpc From e94e0056d3a0bc175ccc748f4ea34ab204e9c588 Mon Sep 17 00:00:00 2001 From: Alexandru Gheorghe Date: Thu, 29 Jan 2026 17:40:35 +0200 Subject: [PATCH 74/81] use bounded vec Signed-off-by: Alexandru Gheorghe --- .../tests/zombie_ci/statement_store.rs | 2 +- .../tests/zombie_ci/statement_store_bench.rs | 21 ++++++++++++------- substrate/client/rpc/src/statement/tests.rs | 21 ++++++++++++------- .../primitives/statement-store/src/lib.rs | 2 +- .../statement-store/src/store_api.rs | 16 +++++--------- 5 files changed, 35 insertions(+), 27 deletions(-) diff --git a/cumulus/zombienet/zombienet-sdk/tests/zombie_ci/statement_store.rs b/cumulus/zombienet/zombienet-sdk/tests/zombie_ci/statement_store.rs index 3b88c6819b05a..c56b006a12ea2 100644 --- a/cumulus/zombienet/zombienet-sdk/tests/zombie_ci/statement_store.rs +++ b/cumulus/zombienet/zombienet-sdk/tests/zombie_ci/statement_store.rs @@ -79,7 +79,7 @@ async fn statement_store() -> Result<(), anyhow::Error> { let mut subscription = dave_rpc .subscribe::( "statement_subscribeStatement", - rpc_params![TopicFilter::MatchAll(vec![topic.to_vec().into()])], + rpc_params![TopicFilter::MatchAll(vec![topic.to_vec().into()].try_into().expect("Single topic"))], "statement_unsubscribeStatement", ) .await?; diff --git a/cumulus/zombienet/zombienet-sdk/tests/zombie_ci/statement_store_bench.rs b/cumulus/zombienet/zombienet-sdk/tests/zombie_ci/statement_store_bench.rs index 8d00a7eb570f7..9f34463de340b 100644 --- a/cumulus/zombienet/zombienet-sdk/tests/zombie_ci/statement_store_bench.rs +++ b/cumulus/zombienet/zombienet-sdk/tests/zombie_ci/statement_store_bench.rs @@ -547,10 +547,11 @@ impl Participant { .rpc_client .subscribe::( "statement_subscribeStatement", - rpc_params![TopicFilter::MatchAll(vec![ - topic_public_key().to_vec().into(), - topic_idx(*idx).to_vec().into() - ])], + rpc_params![TopicFilter::MatchAll( + vec![topic_public_key().to_vec().into(), topic_idx(*idx).to_vec().into()] + .try_into() + .expect("Two topics") + )], "statement_unsubscribeStatement", ) .await?; @@ -620,10 +621,14 @@ impl Participant { .rpc_client .subscribe::( "statement_subscribeStatement", - rpc_params![TopicFilter::MatchAll(vec![ + rpc_params![TopicFilter::MatchAll( + vec![ topic_message().to_vec().into(), topic_pair(&sender_session_key, &own_session_key).to_vec().into() - ])], + ] + .try_into() + .expect("Two topics") + )], "statement_unsubscribeStatement", ) .await?; @@ -860,7 +865,9 @@ async fn statement_store_latency_bench() -> Result<(), anyhow::Error> { let subscription = rpc_client .subscribe::( "statement_subscribeStatement", - rpc_params![TopicFilter::MatchAll(vec![topic.to_vec().into()])], + rpc_params![TopicFilter::MatchAll( + vec![topic.to_vec().into()].try_into().expect("Single topic") + )], "statement_unsubscribeStatement", ) .await diff --git a/substrate/client/rpc/src/statement/tests.rs b/substrate/client/rpc/src/statement/tests.rs index da81b562410c8..c6674a2891cd4 100644 --- a/substrate/client/rpc/src/statement/tests.rs +++ b/substrate/client/rpc/src/statement/tests.rs @@ -71,12 +71,17 @@ async fn subscribe_works() { let submitted = generate_statements(); let first_topic: Bytes = submitted[0].topic(0).expect("Should have topic").to_vec().into(); - let match_all_filter = TopicFilter::MatchAll(vec![first_topic.clone()]); + let match_all_filter = + TopicFilter::MatchAll(vec![first_topic.clone()].try_into().expect("Single topic")); let submitted_clone = submitted.clone(); - let match_any_filter = TopicFilter::MatchAny(vec![ - submitted[0].topic(1).expect("Should have topic").to_vec().into(), - submitted[1].topic(1).expect("Should have topic").to_vec().into(), - ]); + let match_any_filter = TopicFilter::MatchAny( + vec![ + submitted[0].topic(1).expect("Should have topic").to_vec().into(), + submitted[1].topic(1).expect("Should have topic").to_vec().into(), + ] + .try_into() + .expect("Two topics"), + ); let subscriptions = subscribe_to_topics( &api_rpc, @@ -115,7 +120,7 @@ async fn subscribe_works() { let mut match_any_with_random = api_rpc .subscribe_unbounded( "statement_subscribeStatement", - (TopicFilter::MatchAny(vec![vec![7u8; 32].into()]),), + (TopicFilter::MatchAny(vec![vec![7u8; 32].into()].try_into().expect("Single topic")),), ) .await .expect("Failed to subscribe"); @@ -127,7 +132,9 @@ async fn subscribe_works() { .await; assert!(res.is_err(), "expected no message for random topic"); - let match_all_with_random = TopicFilter::MatchAll(vec![first_topic, vec![7u8; 32].into()]); + let match_all_with_random = TopicFilter::MatchAll( + vec![first_topic, vec![7u8; 32].into()].try_into().expect("Two topics"), + ); let mut match_all_with_random = api_rpc .subscribe("statement_subscribeStatement", (match_all_with_random,), 100000) .await diff --git a/substrate/primitives/statement-store/src/lib.rs b/substrate/primitives/statement-store/src/lib.rs index 87d9da848eac3..c82caf32ba2f8 100644 --- a/substrate/primitives/statement-store/src/lib.rs +++ b/substrate/primitives/statement-store/src/lib.rs @@ -42,7 +42,7 @@ pub type AccountId = [u8; 32]; /// Statement channel. pub type Channel = [u8; 32]; -/// Total number of topic fields allowed. +/// Total number of topic fields allowed in a statement and in `MatchAll` filters. pub const MAX_TOPICS: usize = 4; /// `MatchAny` allows to provide a list of topics match against. This is the maximum number of /// topics allowed. diff --git a/substrate/primitives/statement-store/src/store_api.rs b/substrate/primitives/statement-store/src/store_api.rs index b5e2c055a84e3..fb9497fdbf1f1 100644 --- a/substrate/primitives/statement-store/src/store_api.rs +++ b/substrate/primitives/statement-store/src/store_api.rs @@ -17,7 +17,7 @@ pub use crate::runtime_api::StatementSource; use crate::{Hash, Statement, Topic, MAX_ANY_TOPICS, MAX_TOPICS}; -use sp_core::Bytes; +use sp_core::{bounded_vec::BoundedVec, Bytes, ConstU32}; use std::collections::HashSet; /// Statement store error. @@ -43,11 +43,11 @@ pub enum TopicFilter { /// Matches all topics. Any, /// Matches only statements including all of the given topics. - /// Bytes are expected to be a 32-byte topic. Up to `4` topics can be provided. - MatchAll(Vec), + /// Bytes are expected to be a 32-byte topic. Up to [`MAX_TOPICS`] topics can be provided. + MatchAll(BoundedVec>), /// Matches statements including any of the given topics. - /// Bytes are expected to be a 32-byte topic. Up to `128` topics can be provided. - MatchAny(Vec), + /// Bytes are expected to be a 32-byte topic. Up to [`MAX_ANY_TOPICS`] topics can be provided. + MatchAny(BoundedVec>), } /// Topic filter for statement subscriptions. @@ -86,9 +86,6 @@ impl TryInto for TopicFilter { TopicFilter::Any => Ok(CheckedTopicFilter::Any), TopicFilter::MatchAll(topics) => { let mut parsed_topics = HashSet::with_capacity(topics.len()); - if topics.len() > MAX_TOPICS { - return Err(Error::Decode("Too many topics in MatchAll filter".into())); - } for topic in topics { if topic.0.len() != 32 { return Err(Error::Decode("Invalid topic format".into())); @@ -101,9 +98,6 @@ impl TryInto for TopicFilter { }, TopicFilter::MatchAny(topics) => { let mut parsed_topics = HashSet::with_capacity(topics.len()); - if topics.len() > MAX_ANY_TOPICS { - return Err(Error::Decode("Too many topics in MatchAny filter".into())); - } for topic in topics { if topic.0.len() != 32 { return Err(Error::Decode("Invalid topic format".into())); From 5ba38bc3ee8d870decdfc1c4c4215dfc55f24401 Mon Sep 17 00:00:00 2001 From: Alexandru Gheorghe Date: Thu, 29 Jan 2026 18:58:50 +0200 Subject: [PATCH 75/81] make cargo fmt happy Signed-off-by: Alexandru Gheorghe --- .../tests/zombie_ci/statement_store.rs | 4 ++- .../tests/zombie_ci/statement_store_bench.rs | 26 +++++++++---------- 2 files changed, 16 insertions(+), 14 deletions(-) diff --git a/cumulus/zombienet/zombienet-sdk/tests/zombie_ci/statement_store.rs b/cumulus/zombienet/zombienet-sdk/tests/zombie_ci/statement_store.rs index c56b006a12ea2..a0581596eb37c 100644 --- a/cumulus/zombienet/zombienet-sdk/tests/zombie_ci/statement_store.rs +++ b/cumulus/zombienet/zombienet-sdk/tests/zombie_ci/statement_store.rs @@ -79,7 +79,9 @@ async fn statement_store() -> Result<(), anyhow::Error> { let mut subscription = dave_rpc .subscribe::( "statement_subscribeStatement", - rpc_params![TopicFilter::MatchAll(vec![topic.to_vec().into()].try_into().expect("Single topic"))], + rpc_params![TopicFilter::MatchAll( + vec![topic.to_vec().into()].try_into().expect("Single topic") + )], "statement_unsubscribeStatement", ) .await?; diff --git a/cumulus/zombienet/zombienet-sdk/tests/zombie_ci/statement_store_bench.rs b/cumulus/zombienet/zombienet-sdk/tests/zombie_ci/statement_store_bench.rs index 9f34463de340b..d470c918d29ea 100644 --- a/cumulus/zombienet/zombienet-sdk/tests/zombie_ci/statement_store_bench.rs +++ b/cumulus/zombienet/zombienet-sdk/tests/zombie_ci/statement_store_bench.rs @@ -548,10 +548,10 @@ impl Participant { .subscribe::( "statement_subscribeStatement", rpc_params![TopicFilter::MatchAll( - vec![topic_public_key().to_vec().into(), topic_idx(*idx).to_vec().into()] - .try_into() - .expect("Two topics") - )], + vec![topic_public_key().to_vec().into(), topic_idx(*idx).to_vec().into()] + .try_into() + .expect("Two topics") + )], "statement_unsubscribeStatement", ) .await?; @@ -622,13 +622,13 @@ impl Participant { .subscribe::( "statement_subscribeStatement", rpc_params![TopicFilter::MatchAll( - vec![ - topic_message().to_vec().into(), - topic_pair(&sender_session_key, &own_session_key).to_vec().into() - ] - .try_into() - .expect("Two topics") - )], + vec![ + topic_message().to_vec().into(), + topic_pair(&sender_session_key, &own_session_key).to_vec().into() + ] + .try_into() + .expect("Two topics") + )], "statement_unsubscribeStatement", ) .await?; @@ -866,8 +866,8 @@ async fn statement_store_latency_bench() -> Result<(), anyhow::Error> { .subscribe::( "statement_subscribeStatement", rpc_params![TopicFilter::MatchAll( - vec![topic.to_vec().into()].try_into().expect("Single topic") - )], + vec![topic.to_vec().into()].try_into().expect("Single topic") + )], "statement_unsubscribeStatement", ) .await From b15ba0b1e61c9fe10bf82dd2a587ad7c44cd76d4 Mon Sep 17 00:00:00 2001 From: Alexandru Gheorghe Date: Thu, 29 Jan 2026 19:24:18 +0200 Subject: [PATCH 76/81] fix statement_store_memory_stress_bench test Signed-off-by: Alexandru Gheorghe --- .../zombienet-sdk/tests/zombie_ci/statement_store_bench.rs | 1 + 1 file changed, 1 insertion(+) diff --git a/cumulus/zombienet/zombienet-sdk/tests/zombie_ci/statement_store_bench.rs b/cumulus/zombienet/zombienet-sdk/tests/zombie_ci/statement_store_bench.rs index d470c918d29ea..3fe80dbcda3bc 100644 --- a/cumulus/zombienet/zombienet-sdk/tests/zombie_ci/statement_store_bench.rs +++ b/cumulus/zombienet/zombienet-sdk/tests/zombie_ci/statement_store_bench.rs @@ -183,6 +183,7 @@ async fn statement_store_memory_stress_bench() -> Result<(), anyhow::Error> { statement.set_topic(1, topic(1)); statement.set_topic(2, topic(2)); statement.set_topic(3, topic(3)); + statement.set_expiry_from_parts(u32::MAX, statement_count as u32); statement.set_plain_data(vec![0u8; payload_size]); statement.sign_sr25519_private(&keyring); From c40ce28e1f746993cc59d6a793ccc26848f54a0b Mon Sep 17 00:00:00 2001 From: Alexandru Gheorghe Date: Fri, 30 Jan 2026 13:07:13 +0200 Subject: [PATCH 77/81] fix expiration Signed-off-by: Alexandru Gheorghe --- substrate/client/statement-store/src/lib.rs | 65 ++++++++++++++++++++- 1 file changed, 62 insertions(+), 3 deletions(-) diff --git a/substrate/client/statement-store/src/lib.rs b/substrate/client/statement-store/src/lib.rs index c924a4a9d8252..bb433328ff962 100644 --- a/substrate/client/statement-store/src/lib.rs +++ b/substrate/client/statement-store/src/lib.rs @@ -849,10 +849,23 @@ impl Store { (needs_expiry, num_accounts_checked) }; - let mut index = self.index.write(); for hash in needs_expiry { - index.make_expired(&hash, current_time); + if let Err(e) = self.remove(&hash) { + log::debug!( + target: LOG_TARGET, + "Error marking statement {:?} as expired: {:?}", + HexDisplay::from(&hash), + e + ); + } else { + log::trace!( + target: LOG_TARGET, + "Marked statement {:?} as expired", + HexDisplay::from(&hash) + ); + } } + let mut index = self.index.write(); let new_len = index .accounts_to_check_for_expiry_stmts .len() @@ -1315,7 +1328,7 @@ impl StatementStoreSubscriptionApi for Store { #[cfg(test)] mod tests { - use crate::Store; + use crate::{col, Store}; use sc_keystore::Keystore; use sp_core::{Decode, Encode, Pair}; use sp_statement_store::{ @@ -2453,4 +2466,50 @@ mod tests { ); assert!(index.expired.contains_key(&hash), "Statement should be in expired list"); } + + #[test] + fn check_expiration_updates_database_columns() { + // This test verifies that check_expiration properly updates the database. + let (mut store, _temp) = test_store(); + store.set_time(100); + + // Create a statement with expiry at timestamp 200 + let mut stmt = statement(1, 1, None, 100); + stmt.set_expiry_from_parts(200, 1); + let hash = stmt.hash(); + store.submit(stmt.clone(), StatementSource::Network); + + // Verify statement is in the database + let db_entry = store.db.get(col::STATEMENTS, &hash).unwrap(); + assert!(db_entry.is_some(), "Statement should be in col::STATEMENTS after submit"); + + // Populate the accounts list + store.check_expiration(); + + // Advance time past expiry and run check_expiration + store.set_time(300); + store.check_expiration(); + + // Verify in-memory state is updated correctly + { + let index = store.index.read(); + assert!( + !index.entries.contains_key(&hash), + "Statement should be removed from in-memory entries" + ); + assert!( + index.expired.contains_key(&hash), + "Statement should be in in-memory expired map" + ); + } + + let db_entry = store.db.get(col::STATEMENTS, &hash).unwrap(); + assert!( + db_entry.is_none(), + "Statement should be removed from col::STATEMENTS after expiration" + ); + + let expired_entry = store.db.get(col::EXPIRED, &hash).unwrap(); + assert!(expired_entry.is_some(), "Expiration info should be written to col::EXPIRED"); + } } From 04f972e05be799a877c94af62f7d9f1eb20cb94c Mon Sep 17 00:00:00 2001 From: Andrei Eres Date: Fri, 30 Jan 2026 14:59:38 +0100 Subject: [PATCH 78/81] Fix types --- substrate/client/statement-store/src/lib.rs | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/substrate/client/statement-store/src/lib.rs b/substrate/client/statement-store/src/lib.rs index 612114ea002d0..32607e0fe1796 100644 --- a/substrate/client/statement-store/src/lib.rs +++ b/substrate/client/statement-store/src/lib.rs @@ -63,11 +63,10 @@ use sp_core::{ }; use sp_runtime::traits::Block as BlockT; use sp_statement_store::{ - runtime_api::{ - InvalidStatement, StatementSource, StatementStoreExt, ValidStatement, ValidateStatement, - }, + runtime_api::{StatementSource, StatementStoreExt}, AccountId, BlockHash, Channel, CheckedTopicFilter, DecryptionKey, FilterDecision, Hash, - InvalidReason, Proof, RejectionReason, Result, Statement, SubmitResult, Topic, + InvalidReason, Proof, RejectionReason, Result, SignatureVerificationResult, Statement, + StatementAllowance, SubmitResult, Topic, }; pub use sp_statement_store::{Error, StatementStore, MAX_TOPICS}; use std::{ @@ -1359,9 +1358,8 @@ mod tests { use sc_keystore::Keystore; use sp_core::{Decode, Encode, Pair}; use sp_statement_store::{ - runtime_api::{InvalidStatement, ValidStatement, ValidateStatement}, AccountId, Channel, DecryptionKey, InvalidReason, Proof, SignatureVerificationResult, - Statement, StatementSource, StatementStore, SubmitResult, Topic, + Statement, StatementAllowance, StatementSource, StatementStore, SubmitResult, Topic, }; type Extrinsic = sp_runtime::OpaqueExtrinsic; From 3cb7dad3a8466361a5b132300ad8382a6862b5fc Mon Sep 17 00:00:00 2001 From: Andrei Eres Date: Fri, 30 Jan 2026 15:06:27 +0100 Subject: [PATCH 79/81] Mock statement allowance reading --- substrate/client/statement-store/src/lib.rs | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/substrate/client/statement-store/src/lib.rs b/substrate/client/statement-store/src/lib.rs index 32607e0fe1796..7509c8190fbc3 100644 --- a/substrate/client/statement-store/src/lib.rs +++ b/substrate/client/statement-store/src/lib.rs @@ -314,7 +314,7 @@ impl Index { let key_set = self.by_dec_key.get(&key); if key_set.map_or(0, |s| s.len()) == 0 { // Key does not exist in the index. - return Ok(()) + return Ok(()); } for t in match_any_topics { @@ -342,7 +342,7 @@ impl Index { let key_set = self.by_dec_key.get(&key); if key_set.map_or(0, |s| s.len()) == 0 { // Key does not exist in the index. - return Ok(()) + return Ok(()); } for item in key_set.map(|hashes| hashes.iter()).into_iter().flatten() { @@ -361,7 +361,7 @@ impl Index { let mut sets: [&HashSet; MAX_TOPICS + 1] = [∅ MAX_TOPICS + 1]; let num_topics = match_all_topics.len(); if num_topics > MAX_TOPICS { - return Ok(()) + return Ok(()); } let key_set = self.by_dec_key.get(&key); if key_set.map_or(0, |s| s.len()) == 0 { @@ -668,7 +668,12 @@ impl Store { ClientWrapper { client, _block: Default::default(), _backend: Default::default() }; let read_allowance_fn = Box::new(move |account_id: &AccountId, block_hash: Option| { - storage_reader.read_allowance(account_id, block_hash.map(Into::into)) + // storage_reader.read_allowance(account_id, block_hash.map(Into::into)) + std::thread::sleep(std::time::Duration::from_millis(10)); + Ok(Some(StatementAllowance::new( + DEFAULT_MAX_TOTAL_STATEMENTS as u32, + DEFAULT_MAX_TOTAL_SIZE as u32, + ))) }); let store = Store { @@ -815,7 +820,7 @@ impl Store { drop(index); let mut index = self.index.write(); index.accounts_to_check_for_expiry_stmts = existing_accounts; - return + return; } let mut needs_expiry = Vec::new(); @@ -843,7 +848,7 @@ impl Store { num_accounts_checked >= MAX_EXPIRY_ACCOUNTS_PER_ITERATION || start.elapsed().as_millis() >= MAX_EXPIRY_TIME_MS_PER_ITERATION { - break + break; } } @@ -1242,7 +1247,7 @@ impl StatementStore for Store { "Reading statement allowance for account {} failed", HexDisplay::from(&account_id), ); - return SubmitResult::InternalError(e) + return SubmitResult::InternalError(e); }, }; From 1aac8bc0388291fbb0d2427af90e19715f40b320 Mon Sep 17 00:00:00 2001 From: Andrei Eres Date: Fri, 30 Jan 2026 15:17:01 +0100 Subject: [PATCH 80/81] quick fix checks --- .../tests/zombie_ci/statement_store_bench.rs | 172 ------------------ substrate/client/rpc/src/statement/tests.rs | 18 ++ 2 files changed, 18 insertions(+), 172 deletions(-) diff --git a/cumulus/zombienet/zombienet-sdk/tests/zombie_ci/statement_store_bench.rs b/cumulus/zombienet/zombienet-sdk/tests/zombie_ci/statement_store_bench.rs index 1e8438cbc7cbd..a930837003ab8 100644 --- a/cumulus/zombienet/zombienet-sdk/tests/zombie_ci/statement_store_bench.rs +++ b/cumulus/zombienet/zombienet-sdk/tests/zombie_ci/statement_store_bench.rs @@ -132,178 +132,6 @@ async fn statement_store_many_nodes_bench() -> Result<(), anyhow::Error> { Ok(()) } -/// Memory stress benchmark. -/// -/// Tests statement store memory usage under extreme load. Network spawned with 6 collator nodes. -/// Concurrent tasks send statements to a single target node until the store is full. The test ends -/// when all statements are propagated. -/// -/// # Output -/// Logs real-time metrics every 5 seconds with the following data per node: -/// - Submitted statements: total count, percentage of capacity, submission rate -/// - Propagated statements: total count, percentage of propagation capacity, propagation rate -/// - Elapsed time since test start -/// - Final completion status when submit capacity is reached across all nodes -#[tokio::test(flavor = "multi_thread")] -async fn statement_store_memory_stress_bench() -> Result<(), anyhow::Error> { - let _ = env_logger::try_init_from_env( - env_logger::Env::default().filter_or(env_logger::DEFAULT_FILTER_ENV, "info"), - ); - - let total_tasks = 64 * 1024; - let payload_size = 1024; - let submit_capacity = - DEFAULT_MAX_TOTAL_STATEMENTS.min(DEFAULT_MAX_TOTAL_SIZE / payload_size) as u64; - let statements_per_task = submit_capacity / total_tasks as u64; - - let collator_names = ["alice", "bob", "charlie", "dave", "eve", "ferdie"]; - let network = spawn_network(&collator_names, total_tasks).await?; - - let target_node = collator_names[0]; - let node = network.get_node(target_node)?; - info!("Created single RPC client for target node: {}", target_node); - - let num_collators = collator_names.len() as u64; - let propogation_capacity = submit_capacity * (num_collators - 1); // 5x per node - let start_time = std::time::Instant::now(); - - info!("Starting memory stress benchmark with {} tasks, each submitting {} statements of {}B payload, total submit capacity per node: {}, total propagation capacity: {}", - total_tasks, statements_per_task, payload_size, submit_capacity, propogation_capacity); - - - tokio::spawn(async move { - let keyring = get_keypair(idx); - let public = keyring.public().0; - - for statement_count in 0..statements_per_task { - let mut statement = Statement::new(); - let topic = - |idx: usize| blake2_256(format!("{idx}{statement_count}{public:?}").as_bytes()); - statement.set_topic(0, topic(0)); - statement.set_topic(1, topic(1)); - statement.set_topic(2, topic(2)); - statement.set_topic(3, topic(3)); - statement.set_expiry_from_parts(u32::MAX, statement_count as u32); - statement.set_plain_data(vec![0u8; payload_size]); - statement.sign_sr25519_private(&keyring); - - loop { - let statement_bytes: Bytes = statement.encode().into(); - let Err(err) = rpc_client - .request::("statement_submit", rpc_params![statement_bytes]) - .await - else { - break; // Successfully submitted - }; - - if err.to_string().contains("Statement store error: Store is full") { - info!("Statement store is full, {}/{} statements submitted, `statements_per_task` overestimated", statement_count, statements_per_task); - break; - } - - info!( - "Failed to submit statement, retrying in {}ms: {:?}", - RETRY_DELAY_MS, err - ); - tokio::time::sleep(Duration::from_millis(RETRY_DELAY_MS)).await; - } - } - }); - } - - info!("All {} tasks spawned in {:.2}s", total_tasks, start_time.elapsed().as_secs_f64()); - - let mut prev_submitted: HashMap<&str, u64> = HashMap::new(); - let mut prev_propagated: HashMap<&str, u64> = HashMap::new(); - for &name in &collator_names { - prev_submitted.insert(name, 0); - prev_propagated.insert(name, 0); - } - - loop { - let interval = 5; - tokio::time::sleep(Duration::from_secs(interval)).await; - let elapsed = start_time.elapsed().as_secs(); - - // Collect submitted metrics - let mut submitted_metrics = Vec::new(); - for &name in &collator_names { - let node = network.get_node(name)?; - let prev_count = prev_submitted.get(name).copied().unwrap_or(0); - - let current_count = Cell::new(0.0f64); - node.wait_metric_with_timeout( - "substrate_sub_statement_store_submitted_statements", - |count| { - current_count.set(count); - true - }, - 30u64, - ) - .await?; - - let count = current_count.get() as u64; - let delta = count - prev_count; - let rate = delta / interval; - submitted_metrics.push((name, count, rate)); - prev_submitted.insert(name, count); - } - - // Collect propagated metrics - let mut propagated_metrics = Vec::new(); - for &name in &collator_names { - let node = network.get_node(name)?; - let prev_count = prev_propagated.get(name).copied().unwrap_or(0); - - let current_count = Cell::new(0.0f64); - node.wait_metric_with_timeout( - "substrate_sync_propagated_statements", - |count| { - current_count.set(count); - true - }, - 30u64, - ) - .await?; - - let count = current_count.get() as u64; - let delta = count - prev_count; - let rate = delta / interval; - propagated_metrics.push((name, count, rate)); - prev_propagated.insert(name, count); - } - - info!("[{:>3}s] Statements submitted propagated", elapsed); - for i in 0..collator_names.len() { - let (sub_name, sub_count, sub_rate) = submitted_metrics[i]; - let (prop_name, prop_count, prop_rate) = propagated_metrics[i]; - assert_eq!(sub_name, prop_name); - - let sub_percentage = sub_count * 100 / submit_capacity; - let prop_percentage = prop_count * 100 / propogation_capacity; - - info!( - " {:<8} {:>8} {:>3}% {:>8}/s {:>8} {:>3}% {:>8}/s", - sub_name, - sub_count, - sub_percentage, - sub_rate, - prop_count, - prop_percentage, - prop_rate - ); - } - - let total_submitted: u64 = submitted_metrics.iter().map(|(_, count, _)| *count).sum(); - if total_submitted == submit_capacity * num_collators { - info!("Reached total submit capacity of {} statements per node in {}s, benchmark completed successfully", submit_capacity, elapsed); - break; - } - } - - Ok(()) -} - /// Creates a custom chain spec with injected statement allowances. /// /// Returns the path to the temporary chain spec file. diff --git a/substrate/client/rpc/src/statement/tests.rs b/substrate/client/rpc/src/statement/tests.rs index c6674a2891cd4..9f60174b9d513 100644 --- a/substrate/client/rpc/src/statement/tests.rs +++ b/substrate/client/rpc/src/statement/tests.rs @@ -1,3 +1,21 @@ +// This file is part of Substrate. + +// Copyright (C) Parity Technologies (UK) Ltd. +// SPDX-License-Identifier: GPL-3.0-or-later WITH Classpath-exception-2.0 + +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. + +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with this program. If not, see . + use super::*; use crate::testing::test_executor; use codec::Encode; From 1b69ae15808099657efb04b9e912205fe0238e1b Mon Sep 17 00:00:00 2001 From: "cmd[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Fri, 30 Jan 2026 14:25:45 +0000 Subject: [PATCH 81/81] Update from github-actions[bot] running command 'fmt' --- substrate/client/statement-store/src/subscription.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/substrate/client/statement-store/src/subscription.rs b/substrate/client/statement-store/src/subscription.rs index 192fae7c9c4c5..8dc08f7568ee8 100644 --- a/substrate/client/statement-store/src/subscription.rs +++ b/substrate/client/statement-store/src/subscription.rs @@ -120,7 +120,7 @@ impl SubscriptionsHandle { target: LOG_TARGET, "Statement subscription matcher channel closed" ); - break + break; }, }; }